Changeset 351 for branches/v5/platforms/tsar_generic_mmu/tsar_cluster_mmu
- Timestamp:
- Apr 4, 2013, 2:36:54 PM (12 years ago)
- Location:
- branches/v5/platforms/tsar_generic_mmu
- Files:
-
- 3 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
branches/v5/platforms/tsar_generic_mmu/tsar_cluster_mmu/caba/metadata/tsar_cluster_mmu.sd
r342 r351 15 15 Uses('common:mapping_table'), 16 16 Uses('common:iss2'), 17 Uses('caba:vci_cc_vcache_wrapper _dspin_coherence',17 Uses('caba:vci_cc_vcache_wrapper', 18 18 iss_t = 'common:gdb_iss', 19 19 gdb_iss_t = 'common:mips32el'), 20 Uses('caba:vci_mem_cache _dspin_coherence'),20 Uses('caba:vci_mem_cache'), 21 21 Uses('caba:vci_simple_ram'), 22 22 Uses('caba:vci_xicu'), -
branches/v5/platforms/tsar_generic_mmu/tsar_cluster_mmu/caba/source/include/tsar_cluster_mmu.h
r342 r351 32 32 #include "vci_framebuffer.h" 33 33 #include "vci_multi_dma.h" 34 #include "vci_mem_cache _dspin_coherence.h"35 #include "vci_cc_vcache_wrapper _dspin_coherence.h"34 #include "vci_mem_cache.h" 35 #include "vci_cc_vcache_wrapper.h" 36 36 37 37 namespace soclib { … … 128 128 size_t cluster, // y + ymax*x 129 129 const soclib::common::MappingTable &mtd, // direct mapping table 130 const soclib::common::MappingTable &mtc, // coherence mapping table131 130 const soclib::common::MappingTable &mtx, // xram mapping table 132 131 size_t x_width, // x field number of bits 133 132 size_t y_width, // y field number of bits 133 size_t l_width, // l field number of bits 134 134 size_t tgtid_memc, 135 135 size_t tgtid_xicu, … … 150 150 size_t xfb, // frame buffer pixels 151 151 size_t yfb, // frame buffer lines 152 char* disk_name, // virtual disk namefor BDEV152 char* disk_name, // virtual disk for BDEV 153 153 size_t block_size, // block size for BDEV 154 154 size_t nic_channels, // number of channels -
branches/v5/platforms/tsar_generic_mmu/tsar_cluster_mmu/caba/source/src/tsar_cluster_mmu.cpp
r343 r351 42 42 size_t cluster_id, 43 43 const soclib::common::MappingTable &mtd, 44 const soclib::common::MappingTable &mtc,45 44 const soclib::common::MappingTable &mtx, 46 45 size_t x_width, 47 46 size_t y_width, 47 size_t l_width, 48 48 size_t tgtid_memc, 49 49 size_t tgtid_xicu, … … 106 106 cluster_id*nb_procs + p, 107 107 mtd, // Mapping Table Direct 108 mtc, // Mapping Table Coherence109 108 IntTab(cluster_id,p), // SRCID_D 110 IntTab(cluster_id,p), // SRCID_C 111 IntTab(cluster_id,p), // TGTID_C 109 (cluster_id << l_width) + p, // CC_GLOBAL_ID 112 110 8, // ITLB ways 113 111 8, // ITLB sets … … 120 118 x_width, 121 119 y_width, 122 nb_procs, // MEMC local index123 120 frozen_cycles, // max frozen cycles 124 121 debug_start_cycle, … … 132 129 memc = new VciMemCache<vci_param>( 133 130 smemc.str().c_str(), 134 mtd, mt c, mtx,131 mtd, mtx, 135 132 IntTab(cluster_id), // SRCID_X 136 IntTab(cluster_id, nb_procs), // SRCID_C137 133 IntTab(cluster_id, tgtid_memc), // TGTID_D 138 IntTab(cluster_id, nb_procs), // TGTID_C134 (cluster_id << l_width) + nb_procs, // CC_GLOBAL_ID 139 135 memc_ways, memc_sets, 16, // CACHE SIZE 140 //4096, // HEAP SIZE136 3, // MAX NUMBER OF COPIES 141 137 256, // HEAP SIZE 142 138 8, // TRANSACTION TABLE DEPTH … … 205 201 sc << "ringc_" << x_id << "_" << y_id; 206 202 //ringc = new soclib::caba::DspinLocalRingFastC<vci_param, 40, 33>(sc.str().c_str(),mtc, IntTab(cluster_id), 2, 2, 2, nb_procs + 1, x_width, y_width); 207 ringc = new soclib::caba::DspinLocalRingFastC<vci_param, 40, 33>(sc.str().c_str(),mtc, IntTab(cluster_id), 2, 2, 1, nb_procs, x_width, y_width); 203 // 204 // coherence network 205 // - tgtid_c_proc = srcid_c_proc = local procid 206 // - tgtid_c_memc = srcid_c_memc = NB_PROCS_MAX 207 #define address_width 32 208 #define srcid_width 14 209 #include "../../../../giet_vm/hard_config.h" 210 #define cluster(x,y) (y + CLUSTER_Y*x) 211 MappingTable maptabc(address_width, 212 IntTab(x_width + y_width, srcid_width - x_width - y_width), 213 IntTab(x_width + y_width, srcid_width - x_width - y_width), 214 0x00FF0000); 215 216 for (size_t x = 0; x < CLUSTER_X; x++) 217 { 218 for (size_t y = 0; y < CLUSTER_Y; y++) 219 { 220 sc_uint<address_width> offset = cluster(x,y) << (address_width-x_width-y_width); 221 222 // cleanup requests must be routed to the memory cache 223 std::ostringstream sh; 224 sh << "c_seg_memc_" << x << "_" << y; 225 maptabc.add(Segment(sh.str(), (NB_PROCS_MAX << (address_width - srcid_width)) + offset, 226 0x10, IntTab(cluster(x,y), NB_PROCS_MAX), false)); 227 228 // update & invalidate requests must be routed to the proper processor 229 for ( size_t p = 0 ; p < NB_PROCS_MAX ; p++) 230 { 231 std::ostringstream sp; 232 sp << "c_seg_proc_" << x << "_" << y << "_" << p; 233 maptabc.add( Segment( sp.str() , (p << (address_width - srcid_width)) + offset , 234 0x10 , IntTab(cluster(x,y), p) , false)); 235 } 236 } 237 } 238 std::cout << maptabc << std::endl; 239 // 240 // 241 // 242 ringc = new soclib::caba::DspinLocalRingFastC<vci_param, 40, 33>(sc.str().c_str(),maptabc, IntTab(cluster_id), 2, 2, 1, nb_procs, x_width, y_width); 208 243 209 244 std::cout << " - building wrappers in cluster_" << x_id << "_" << y_id << std::endl; … … 405 440 proc[p]->p_clk (this->p_clk); 406 441 proc[p]->p_resetn (this->p_resetn); 407 proc[p]->p_vci _ini_d(signal_vci_ini_d_proc[p]);442 proc[p]->p_vci (signal_vci_ini_d_proc[p]); 408 443 proc[p]->p_dspin_in (signal_dspin_c_to_proc[p]); 409 444 proc[p]->p_dspin_out (signal_dspin_c_from_proc[p]);
Note: See TracChangeset
for help on using the changeset viewer.