memory_system.doxygen (9264:1607119c36bb) | memory_system.doxygen (13892:0182a0601f66) |
---|---|
1# Copyright (c) 2012 ARM Limited 2# All rights reserved 3# 4# The license below extends only to copyright in the software and shall 5# not be construed as granting a license to any other intellectual 6# property including but not limited to intellectual property relating 7# to a hardware implementation of the functionality of the software 8# licensed hereunder. You may use the software subject to the license --- 37 unchanged lines hidden (view full) --- 46 \section gem5_MS_MH MODEL HIERARCHY 47 48 Model that is used in this document consists of two out-of-order (O3) 49 ARM v7 CPUs with corresponding L1 data caches and Simple Memory. It is 50 created by running gem5 with the following parameters: 51 52 configs/example/fs.py --caches --cpu-type=arm_detailed --num-cpus=2 53 | 1# Copyright (c) 2012 ARM Limited 2# All rights reserved 3# 4# The license below extends only to copyright in the software and shall 5# not be construed as granting a license to any other intellectual 6# property including but not limited to intellectual property relating 7# to a hardware implementation of the functionality of the software 8# licensed hereunder. You may use the software subject to the license --- 37 unchanged lines hidden (view full) --- 46 \section gem5_MS_MH MODEL HIERARCHY 47 48 Model that is used in this document consists of two out-of-order (O3) 49 ARM v7 CPUs with corresponding L1 data caches and Simple Memory. It is 50 created by running gem5 with the following parameters: 51 52 configs/example/fs.py --caches --cpu-type=arm_detailed --num-cpus=2 53 |
54 Gem5 uses Memory Objects (MemObject) derived objects as basic blocks for | 54 Gem5 uses Simulation Objects (SimObject) derived objects as basic blocks for |
55 building memory system. They are connected via ports with established 56 master/slave hierarchy. Data flow is initiated on master port while the 57 response messages and snoop queries appear on the slave port. The following | 55 building memory system. They are connected via ports with established 56 master/slave hierarchy. Data flow is initiated on master port while the 57 response messages and snoop queries appear on the slave port. The following |
58 figure shows the hierarchy of Memory Objects used in this document: | 58 figure shows the hierarchy of Simulation Objects used in this document: |
59 | 59 |
60 \image html "gem5_MS_Fig1.PNG" "Memory Object hierarchy of the model" width=3cm | 60 \image html "gem5_MS_Fig1.PNG" "Simulation Object hierarchy of the model" width=3cm |
61 62 \section gem5_CPU CPU 63 64 It is not in the scope of this document to describe O3 CPU model in details, so 65 here are only a few relevant notes about the model: 66 67 <b>Read access </b>is initiated by sending message to the port towards DCache 68 object. If DCache rejects the message (for being blocked or busy) CPU will 69 flush the pipeline and the access will be re-attempted later on. The access 70 is completed upon receiving reply message (ReadRep) from DCache. 71 72 <b>Write access</b> is initiated by storing the request into store buffer whose 73 context is emptied and sent to DCache on every tick. DCache may also reject 74 the request. Write access is completed when write reply (WriteRep) message is 75 received from DCache. 76 77 Load & store buffers (for read and write access) don’t impose any 78 restriction on the number of active memory accesses. Therefore, the maximum 79 number of outstanding CPU’s memory access requests is not limited by CPU | 61 62 \section gem5_CPU CPU 63 64 It is not in the scope of this document to describe O3 CPU model in details, so 65 here are only a few relevant notes about the model: 66 67 <b>Read access </b>is initiated by sending message to the port towards DCache 68 object. If DCache rejects the message (for being blocked or busy) CPU will 69 flush the pipeline and the access will be re-attempted later on. The access 70 is completed upon receiving reply message (ReadRep) from DCache. 71 72 <b>Write access</b> is initiated by storing the request into store buffer whose 73 context is emptied and sent to DCache on every tick. DCache may also reject 74 the request. Write access is completed when write reply (WriteRep) message is 75 received from DCache. 76 77 Load & store buffers (for read and write access) don’t impose any 78 restriction on the number of active memory accesses. Therefore, the maximum 79 number of outstanding CPU’s memory access requests is not limited by CPU |
80 Memory Object but by underlying memory system model. | 80 Simulation Object but by underlying memory system model. |
81 82 <b>Split memory access</b> is implemented. 83 84 The message that is sent by CPU contains memory type (Normal, Device, Strongly 85 Ordered and cachebility) of the accessed region. However, this is not being used 86 by the rest of the model that takes more simplified approach towards memory types. 87 88 \section gem5_DCache DATA CACHE OBJECT 89 90 Data Cache object implements a standard cache structure: 91 | 81 82 <b>Split memory access</b> is implemented. 83 84 The message that is sent by CPU contains memory type (Normal, Device, Strongly 85 Ordered and cachebility) of the accessed region. However, this is not being used 86 by the rest of the model that takes more simplified approach towards memory types. 87 88 \section gem5_DCache DATA CACHE OBJECT 89 90 Data Cache object implements a standard cache structure: 91 |
92 \image html "gem5_MS_Fig2.PNG" "DCache Memory Object" width=3cm | 92 \image html "gem5_MS_Fig2.PNG" "DCache Simulation Object" width=3cm |
93 94 <b>Cached memory reads</b> that match particular cache tag (with Valid & Read 95 flags) will be completed (by sending ReadResp to CPU) after a configurable time. 96 Otherwise, the request is forwarded to Miss Status and Handling Register 97 (MSHR) block. 98 99 <b>Cached memory writes</b> that match particular cache tag (with Valid, Read 100 & Write flags) will be completed (by sending WriteResp CPU) after the same --- 178 unchanged lines hidden --- | 93 94 <b>Cached memory reads</b> that match particular cache tag (with Valid & Read 95 flags) will be completed (by sending ReadResp to CPU) after a configurable time. 96 Otherwise, the request is forwarded to Miss Status and Handling Register 97 (MSHR) block. 98 99 <b>Cached memory writes</b> that match particular cache tag (with Valid, Read 100 & Write flags) will be completed (by sending WriteResp CPU) after the same --- 178 unchanged lines hidden --- |