summaryrefslogtreecommitdiff
path: root/src/gpgpu-sim/scoreboard.h
diff options
context:
space:
mode:
authorDavit Grigoryan <[email protected]>2026-04-14 03:06:42 +0000
committerDavit Grigoryan <[email protected]>2026-04-14 03:06:42 +0000
commit305c5ea8fed5bca224377c1bdd8c726fac0f926f (patch)
tree549f408023103f33d6b074293e7f25f467590fc1 /src/gpgpu-sim/scoreboard.h
parent2c3524751b9b175514970c768637266bbed08767 (diff)
create separate scoreboard for I-Buf's second slot; fix other minor issues
Diffstat (limited to 'src/gpgpu-sim/scoreboard.h')
-rw-r--r--src/gpgpu-sim/scoreboard.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/gpgpu-sim/scoreboard.h b/src/gpgpu-sim/scoreboard.h
index 1fe0923..9bf51e6 100644
--- a/src/gpgpu-sim/scoreboard.h
+++ b/src/gpgpu-sim/scoreboard.h
@@ -50,6 +50,12 @@ class Scoreboard {
void printContents() const;
const bool islongop(unsigned warp_id, unsigned regnum);
+ // Secondary scoreboard for intra-warp co-issue (split-level tracking)
+ void reserveRegisterSecondary(unsigned wid, unsigned regnum);
+ void releaseRegisterSecondary(unsigned wid, unsigned regnum);
+ bool checkCollisionSecondary(unsigned wid, const inst_t *inst) const;
+ void clearSecondary(unsigned wid);
+
private:
void reserveRegister(unsigned wid, unsigned regnum);
int get_sid() const { return m_sid; }
@@ -62,6 +68,9 @@ class Scoreboard {
// Register that depend on a long operation (global, local or tex memory)
std::vector<std::set<unsigned> > longopregs;
+ // Secondary path register tracking (for I-Buffer half 1, intra-warp co-issue)
+ std::vector<std::set<unsigned> > sec_reg_table;
+
class gpgpu_t *m_gpu;
};