summaryrefslogtreecommitdiff
path: root/src/storage
diff options
context:
space:
mode:
authorbd <bdunaisky@umass.edu>2025-03-23 17:47:19 +0000
committerGitHub <noreply@github.com>2025-03-23 17:47:19 +0000
commit8a0a483c0e63fd2be6f514a20ae7309e2e768c94 (patch)
tree78c4981b2ad7db57bbe3d210655b577ad558018d /src/storage
parentb73f7fbe952494e245c44fdd4b6123bac1b4ec97 (diff)
parentf2973132685fe908a2dd651ea0b347456c911f37 (diff)
Merge pull request #31 from bdunahu/bdunahuer
Remove manual clock advancing / resolution from storage devices
Diffstat (limited to 'src/storage')
-rw-r--r--src/storage/cache.cc4
-rw-r--r--src/storage/dram.cc10
-rw-r--r--src/storage/storage.cc12
3 files changed, 12 insertions, 14 deletions
diff --git a/src/storage/cache.cc b/src/storage/cache.cc
index 8acdf08..d96efe2 100644
--- a/src/storage/cache.cc
+++ b/src/storage/cache.cc
@@ -88,7 +88,11 @@ Response Cache::is_access_cleared(Accessor accessor, int address)
if (this->is_waiting)
r = BLOCKED;
else if (this->wait_time == 0) {
+ this->requester = IDLE;
+ this->wait_time = delay;
r = OK;
+ } else {
+ --this->wait_time;
}
}
return r;
diff --git a/src/storage/dram.cc b/src/storage/dram.cc
index 2c24b4b..371503d 100644
--- a/src/storage/dram.cc
+++ b/src/storage/dram.cc
@@ -80,9 +80,15 @@ Response Dram::is_access_cleared(Accessor accessor)
else {
if (this->requester == IDLE)
this->requester = accessor;
- if (this->requester == accessor)
- if (this->wait_time == 0)
+ if (this->requester == accessor) {
+ if (this->wait_time == 0) {
+ this->requester = IDLE;
+ this->wait_time = delay;
r = OK;
+ } else {
+ --this->wait_time;
+ }
+ }
}
return r;
}
diff --git a/src/storage/storage.cc b/src/storage/storage.cc
index 8e2e461..fed607b 100644
--- a/src/storage/storage.cc
+++ b/src/storage/storage.cc
@@ -14,15 +14,3 @@ Storage::view(int base, int lines) const
}
Storage *Storage::get_lower() { return this->lower; }
-
-void Storage::resolve()
-{
- if (this->lower)
- this->lower->resolve();
- if (this->wait_time == 0) {
- this->requester = IDLE;
- this->wait_time = delay;
- } else if (this->requester != IDLE && !this->is_waiting) {
- --this->wait_time;
- }
-}