diff options
author | bd <bdunaisky@umass.edu> | 2025-03-23 17:47:19 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-03-23 17:47:19 +0000 |
commit | cef3753c74ec68ed0d99c1ae07af042dfc964344 (patch) | |
tree | 78c4981b2ad7db57bbe3d210655b577ad558018d /src/storage | |
parent | 4bad9ab29a5fa6c442a257974beb7daeaf91f046 (diff) | |
parent | 6ad8d012bc494f1119368c1466ac5d5d1bca2b96 (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.cc | 4 | ||||
-rw-r--r-- | src/storage/dram.cc | 10 | ||||
-rw-r--r-- | src/storage/storage.cc | 12 |
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; - } -} |