XBar.py (11604:b254396b7759) | XBar.py (12341:6eebba99d117) |
---|---|
1# Copyright (c) 2012, 2015 ARM Limited | 1# Copyright (c) 2012, 2015, 2017 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 9# terms below provided that you ensure that this notice is replicated --- 91 unchanged lines hidden (view full) --- 101 snoop_filter = Param.SnoopFilter(NULL, "Selected snoop filter") 102 103 # Determine how this crossbar handles packets where caches have 104 # already committed to responding, by establishing if the crossbar 105 # is the point of coherency or not. 106 point_of_coherency = Param.Bool(False, "Consider this crossbar the " \ 107 "point of coherency") 108 | 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 9# terms below provided that you ensure that this notice is replicated --- 91 unchanged lines hidden (view full) --- 101 snoop_filter = Param.SnoopFilter(NULL, "Selected snoop filter") 102 103 # Determine how this crossbar handles packets where caches have 104 # already committed to responding, by establishing if the crossbar 105 # is the point of coherency or not. 106 point_of_coherency = Param.Bool(False, "Consider this crossbar the " \ 107 "point of coherency") 108 |
109 # Specify whether this crossbar is the point of unification. 110 point_of_unification = Param.Bool(False, "Consider this crossbar the " \ 111 "point of unification") 112 |
|
109 system = Param.System(Parent.any, "System that the crossbar belongs to.") 110 111class SnoopFilter(SimObject): 112 type = 'SnoopFilter' 113 cxx_header = "mem/snoop_filter.hh" 114 115 # Lookup latency of the snoop filter, added to requests that pass 116 # through a coherent crossbar. --- 17 unchanged lines hidden (view full) --- 134 response_latency = 1 135 snoop_response_latency = 1 136 137 # Use a snoop-filter by default, and set the latency to zero as 138 # the lookup is assumed to overlap with the frontend latency of 139 # the crossbar 140 snoop_filter = SnoopFilter(lookup_latency = 0) 141 | 113 system = Param.System(Parent.any, "System that the crossbar belongs to.") 114 115class SnoopFilter(SimObject): 116 type = 'SnoopFilter' 117 cxx_header = "mem/snoop_filter.hh" 118 119 # Lookup latency of the snoop filter, added to requests that pass 120 # through a coherent crossbar. --- 17 unchanged lines hidden (view full) --- 138 response_latency = 1 139 snoop_response_latency = 1 140 141 # Use a snoop-filter by default, and set the latency to zero as 142 # the lookup is assumed to overlap with the frontend latency of 143 # the crossbar 144 snoop_filter = SnoopFilter(lookup_latency = 0) 145 |
146 # This specialisation of the coherent crossbar is to be considered 147 # the point of unification, it connects the dcache and the icache 148 # to the first level of unified cache. 149 point_of_unification = True 150 |
|
142# One of the key coherent crossbar instances is the system 143# interconnect, tying together the CPU clusters, GPUs, and any I/O 144# coherent masters, and DRAM controllers. 145class SystemXBar(CoherentXBar): 146 # 128-bit crossbar by default 147 width = 16 148 149 # A handful pipeline stages for each portion of the latency --- 6 unchanged lines hidden (view full) --- 156 # Use a snoop-filter by default 157 snoop_filter = SnoopFilter(lookup_latency = 1) 158 159 # This specialisation of the coherent crossbar is to be considered 160 # the point of coherency, as there are no (coherent) downstream 161 # caches. 162 point_of_coherency = True 163 | 151# One of the key coherent crossbar instances is the system 152# interconnect, tying together the CPU clusters, GPUs, and any I/O 153# coherent masters, and DRAM controllers. 154class SystemXBar(CoherentXBar): 155 # 128-bit crossbar by default 156 width = 16 157 158 # A handful pipeline stages for each portion of the latency --- 6 unchanged lines hidden (view full) --- 165 # Use a snoop-filter by default 166 snoop_filter = SnoopFilter(lookup_latency = 1) 167 168 # This specialisation of the coherent crossbar is to be considered 169 # the point of coherency, as there are no (coherent) downstream 170 # caches. 171 point_of_coherency = True 172 |
173 # This specialisation of the coherent crossbar is to be considered 174 # the point of unification, it connects the dcache and the icache 175 # to the first level of unified cache. This is needed for systems 176 # without caches where the SystemXBar is also the point of 177 # unification. 178 point_of_unification = True 179 |
|
164# In addition to the system interconnect, we typically also have one 165# or more on-chip I/O crossbars. Note that at some point we might want 166# to also define an off-chip I/O crossbar such as PCIe. 167class IOXBar(NoncoherentXBar): 168 # 128-bit crossbar by default 169 width = 16 170 171 # Assume a simpler datapath than a coherent crossbar, incuring 172 # less pipeline stages for decision making and forwarding of 173 # requests. 174 frontend_latency = 2 175 forward_latency = 1 176 response_latency = 2 | 180# In addition to the system interconnect, we typically also have one 181# or more on-chip I/O crossbars. Note that at some point we might want 182# to also define an off-chip I/O crossbar such as PCIe. 183class IOXBar(NoncoherentXBar): 184 # 128-bit crossbar by default 185 width = 16 186 187 # Assume a simpler datapath than a coherent crossbar, incuring 188 # less pipeline stages for decision making and forwarding of 189 # requests. 190 frontend_latency = 2 191 forward_latency = 1 192 response_latency = 2 |