-
Notifications
You must be signed in to change notification settings - Fork 0
Main PR #7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
mbabaie
wants to merge
67
commits into
develop
Choose a base branch
from
dcache_orb
base: develop
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Main PR #7
Changes from 46 commits
Commits
Show all changes
67 commits
Select commit
Hold shift + click to select a range
1f6ff60
mem: [wip] a rough sketch of integrated mem controller
aakahlow 63af958
init files
mbabaie e982073
added Qs
mbabaie 4c327c5
mem: not unified interface, dcache ctrl always hit dram cache
mbabaie d067acf
mem: not unified interface, dcache ctrl always hit dram cache
mbabaie ae70805
mem: everything before unifying ctrl and intrfc
mbabaie a0cad47
mem: more fix and updates
mbabaie 0a903ab
mem: more fix and updates
mbabaie 6b016e7
mem: minor fix
mbabaie d7db7b9
mem: minor fix
mbabaie 14253ff
mem: Comments on dram cache controller
powerjg 56e1ad6
mem: more updates
mbabaie e2d5658
mem: more update
mbabaie cfced46
mem: more update for hit only
mbabaie 1de8cf2
mem: more update
mbabaie 805664c
mem: pull from shasta
mbabaie b39a4ff
mem: adding responses for hits
mbabaie 0979c8d
mem: adding event handler for initial reads
mbabaie d5256bd
mem: more updates
mbabaie cc5f320
mem: fixed the assert failed in the memInterface
mbabaie 949d4d0
mem: read miss implemented
mbabaie 0325bcc
mem: debugging the read miss cases
mbabaie 66abddc
mem: miss Read Only fixed
mbabaie 9d5b514
mem: latest version hit and miss read clean
mbabaie 494f78e
mem: added rd/wr miss clean
mbabaie 29f1401
mem: all the cases implemented and debugged
mbabaie 0bc5f1b
mem: latest version all cases implemented tested for billion pkts
mbabaie fcf8e03
mem: fixed the insert/remove isInWriteQueue
mbabaie bccfd8a
mem: updated the FW/Merging checks for nvmWritebackQueue
mbabaie 80e07c1
mem: writeback dcc pkt pointer in ROB is removed
mbabaie 30d72a9
mem: updated arrival time of dccPkt whenever they are created
mbabaie 46031e1
mem: added getter() for private Qs of NVM interface
mbabaie da623ef
mem: fixed the NVM burstready true/false nextBusState
mbabaie ee711a0
mem: updating the tagMetadataStore
mbabaie f491ab7
mem: added a new state for nvmReads to wait before issue
mbabaie 6f170ce
mem: removed some of the redundancies before adding new stats
mbabaie 3e38385
mem: removed some of the redundancies before adding new stats
mbabaie 31fb563
mem: added and updated stats
mbabaie 5120137
mem: latest version + fixed wrbacks
mbabaie 6d0ab90
Delete .vscode directory
mbabaie 5260a2b
Update simple.py
mbabaie 1df0a67
mem: fixed merging wr, removed nwb Q
mbabaie 2ddf0f8
mem: fixed the NVM Write State, moved to DRAM Read Resp Ready
mbabaie 1148617
mem: updated stats for timing in each state
mbabaie 393ec8c
mem: fixing styling and final touch ups
mbabaie 9a7d700
mem: dramCacheSize is set via devicde size from memInterface
mbabaie d7cd2bd
mem: fixed a tiny bug about dramCacheSize in the previous commit
mbabaie 0b2ec10
mem: deleteing mem-pkts for writebacks to nvm (mem leakage)
mbabaie f81d190
mem: fixed the NvmWrBack addresses and added stats
mbabaie c1f3865
mem: fixed the inifinite NVM write queue
mbabaie 27cd815
mem: added more stats
mbabaie 3129273
mem: fixed stats
mbabaie 096f319
mem: fixed stats overflow
mbabaie b1df79b
mem: fixed and added more stats, fixed schedule times
mbabaie 5129e39
mem: fixed memory leakage and some stats naming
mbabaie 70221ae
mem: latest version
mbabaie c9555dd
mem: fixed stats delta calculations
mbabaie 30efcc6
mem: fixing max size of Qs stats becoming 0 in long runs
mbabaie bf2157d
mem: adding two simple stats for counting cold misses
mbabaie ff181b5
mem: fixed the adr/cache size and tag problem causing always hit
mbabaie 54a4adf
mem: traffic generator file
mbabaie ed7255c
mem: updated traffic generator script
mbabaie c01c40e
mem: important fix for WR Only cases clogged in NVRead processing
mbabaie 5972708
Add files via upload
mbabaie 9a34171
mem: latest/final version of fcfs
mbabaie 9d6ea85
mem: latest/final version of fcfs
mbabaie 30e692d
Update dcache_ctrl.cc
mbabaie File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,54 @@ | ||
| from m5.objects import * | ||
| import m5 | ||
|
|
||
| system = System() | ||
| system.clk_domain = SrcClockDomain() | ||
| system.clk_domain.clock = "4GHz" | ||
| system.clk_domain.voltage_domain = VoltageDomain() | ||
| system.mem_mode = 'timing' | ||
|
|
||
| system.generator = PyTrafficGen() | ||
|
|
||
| system.mem_ctrl = DcacheCtrl() | ||
| system.mem_ctrl.dram = DDR3_1600_8x8( | ||
| #system.mem_ctrl.dram = DDR4_2400_16x4( | ||
| #system.mem_ctrl.dram = HBM_1000_4H_1x128( | ||
| in_addr_map=False) | ||
| system.mem_ctrl.nvm = NVM_2400_1x64(range=AddrRange('8GB')) | ||
|
|
||
| system.mem_ctrl.dram.tREFI = "200" | ||
| system.mem_ctrl.orb_max_size = "512" | ||
| system.mem_ctrl.crb_max_size = "32" | ||
|
|
||
| system.mem_ranges = [AddrRange('4GB')] | ||
|
||
|
|
||
| system.generator.port = system.mem_ctrl.port | ||
|
|
||
| def createRandomTraffic(tgen): | ||
| yield tgen.createRandom(100000000000, # duration | ||
| 0, # min_addr | ||
| 0, # max_adr | ||
| 64, # block_size | ||
| 10000, # min_period | ||
| 10000, # max_period | ||
| 70, # rd_perc | ||
| 0) # data_limit | ||
| yield tgen.createExit(0) | ||
|
|
||
| def createLinearTraffic(tgen): | ||
| yield tgen.createLinear(100000000000, # duration | ||
| 0, # min_addr | ||
| 0, # max_adr | ||
| 64, # block_size | ||
| 10000, # min_period | ||
| 10000, # max_period | ||
| 70, # rd_perc | ||
| 0) # data_limit | ||
| yield tgen.createExit(0) | ||
|
|
||
|
|
||
| root = Root(full_system=False, system=system) | ||
|
|
||
| m5.instantiate() | ||
| system.generator.start(createLinearTraffic(system.generator)) | ||
| exit_event = m5.simulate() | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,108 @@ | ||
| ### The copyright needs be modified for UCD/DArchR/the names of the writers | ||
|
|
||
| # Copyright (c) 2012-2020 ARM Limited | ||
| # All rights reserved. | ||
| # | ||
| # The license below extends only to copyright in the software and shall | ||
| # not be construed as granting a license to any other intellectual | ||
| # property including but not limited to intellectual property relating | ||
| # to a hardware implementation of the functionality of the software | ||
| # licensed hereunder. You may use the software subject to the license | ||
| # terms below provided that you ensure that this notice is replicated | ||
| # unmodified and in its entirety in all distributions of the software, | ||
| # modified or unmodified, in source code or in binary form. | ||
| # | ||
| # Copyright (c) 2013 Amin Farmahini-Farahani | ||
| # Copyright (c) 2015 University of Kaiserslautern | ||
| # Copyright (c) 2015 The University of Bologna | ||
| # All rights reserved. | ||
| # | ||
| # Redistribution and use in source and binary forms, with or without | ||
| # modification, are permitted provided that the following conditions are | ||
| # met: redistributions of source code must retain the above copyright | ||
| # notice, this list of conditions and the following disclaimer; | ||
| # redistributions in binary form must reproduce the above copyright | ||
| # notice, this list of conditions and the following disclaimer in the | ||
| # documentation and/or other materials provided with the distribution; | ||
| # neither the name of the copyright holders nor the names of its | ||
| # contributors may be used to endorse or promote products derived from | ||
| # this software without specific prior written permission. | ||
| # | ||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||
| # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||
| # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||
| # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||
| # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
| # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||
| # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||
| # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
| # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||
| # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
|
|
||
| from m5.params import * | ||
| from m5.proxy import * | ||
|
|
||
| from m5.objects.AbstractMemory import AbstractMemory | ||
|
|
||
| # Enum for the address mapping. With Ch, Ra, Ba, Ro and Co denoting | ||
| # channel, rank, bank, row and column, respectively, and going from | ||
| # MSB to LSB. Available are RoRaBaChCo and RoRaBaCoCh, that are | ||
| # suitable for an open-page policy, optimising for sequential accesses | ||
| # hitting in the open row. For a closed-page policy, RoCoRaBaCh | ||
| # maximises parallelism. | ||
| class AddrMap(Enum): vals = ['RoRaBaChCo', 'RoRaBaCoCh', 'RoCoRaBaCh'] | ||
|
|
||
| class DCMemInterface(AbstractMemory): | ||
| type = 'DCMemInterface' | ||
| abstract = True | ||
| cxx_header = "mem/dcmem_interface.hh" | ||
|
|
||
| # Allow the interface to set required controller buffer sizes | ||
| # each entry corresponds to a burst for the specific memory channel | ||
| # configuration (e.g. x32 with burst length 8 is 32 bytes) and not | ||
| # the cacheline size or request/packet size | ||
| write_buffer_size = Param.Unsigned(64, "Number of write queue entries") | ||
| read_buffer_size = Param.Unsigned(32, "Number of read queue entries") | ||
|
|
||
| # scheduler, address map | ||
| addr_mapping = Param.AddrMap('RoRaBaCoCh', "Address mapping policy") | ||
|
|
||
| # size of memory device in Bytes | ||
| device_size = Param.MemorySize("Size of memory device") | ||
| # the physical organisation of the memory | ||
| device_bus_width = Param.Unsigned("data bus width in bits for each "\ | ||
| "memory device/chip") | ||
| burst_length = Param.Unsigned("Burst lenght (BL) in beats") | ||
| device_rowbuffer_size = Param.MemorySize("Page (row buffer) size per "\ | ||
| "device/chip") | ||
| devices_per_rank = Param.Unsigned("Number of devices/chips per rank") | ||
| ranks_per_channel = Param.Unsigned("Number of ranks per channel") | ||
| banks_per_rank = Param.Unsigned("Number of banks per rank") | ||
|
|
||
| # timing behaviour and constraints - all in nanoseconds | ||
|
|
||
| # the base clock period of the memory | ||
| tCK = Param.Latency("Clock period") | ||
|
|
||
| # time to complete a burst transfer, typically the burst length | ||
| # divided by two due to the DDR bus, but by making it a parameter | ||
| # it is easier to also evaluate SDR memories like WideIO and new | ||
| # interfaces, emerging technologies. | ||
| # This parameter has to account for burst length. | ||
| # Read/Write requests with data size larger than one full burst are broken | ||
| # down into multiple requests in the controller | ||
| tBURST = Param.Latency("Burst duration " | ||
| "(typically burst length / 2 cycles)") | ||
|
|
||
| # write-to-read, same rank turnaround penalty | ||
| tWTR = Param.Latency("Write to read, same rank switching time") | ||
|
|
||
| # read-to-write, same rank turnaround penalty | ||
| tRTW = Param.Latency("Read to write, same rank switching time") | ||
|
|
||
| # rank-to-rank bus delay penalty | ||
| # this does not correlate to a memory timing parameter and encompasses: | ||
| # 1) RD-to-RD, 2) WR-to-WR, 3) RD-to-WR, and 4) WR-to-RD | ||
| # different rank bus delay | ||
| tCS = Param.Latency("Rank to rank switching time") |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should put it on the to do list to figure out this parameter