source: trunk/modules/vci_cc_vcache_wrapper_v4/caba/metadata/vci_cc_vcache_wrapper_v4.sd @ 291

Last change on this file since 291 was 291, checked in by joannou, 11 years ago

Introducing new generic_llsc_local_table and generic_llsc_global_table components :
These two tables implement the new scalable LL/SC mechanism for TSAR.

  • generic_llsc_local_table, integrated in the vci_cc_vache_wrapper_v4 component. The table is accessed by the DCACHE_FSM. A two step registration (LL cmd/ LL rsp) sets a signature allocated by the global table for the pending LL/SC operation. An SC operation consumes the registration.
  • generic_llsc_global_table, integrated in the vci_mem_cache_v4 component. The table is accessed by the READ_FSM, WRITE_FSM, CAS_FSM, when accessing the directory. It generates a signature for LL registrations and performs SC operation by checking registration's valididty with that signature. SW operations simply invalidate a registrations.

N.B. :

  • The sizes of the tables are parameters, and are NOT a function of the architecture's size (scalable mechanism).
  • The LL are handled by the MEMCACHE in the READ_FSM.
  • The SC are handled by the MEMCACHE in the WRITE_FSM, and are no longer CAS emulated. CAS operation is now only performed by hardware mechanisms.
  • An extra field is added to the xram transaction table to save a pending LL's signature.
File size: 3.1 KB
Line 
1
2# -*- python -*-
3
4__id__ = "$Id: vci_cc_vcache_wrapper_v4.sd 20 2011-10-13  alain $"
5
6Module('caba:vci_cc_vcache_wrapper_v4',
7        classname = 'soclib::caba::VciCcVCacheWrapperV4',
8        tmpl_parameters = [ parameter.Module('vci_param', default = 'caba:vci_param'),
9                            parameter.Module('iss_t') ],
10        header_files =         [ '../source/include/vci_cc_vcache_wrapper_v4.h' ],
11        implementation_files = [ '../source/src/vci_cc_vcache_wrapper_v4.cpp' ],
12        uses = [ Uses('caba:base_module'),
13                 Uses('common:mapping_table'),
14                 Uses('common:iss2'),
15                 Uses('caba:multi_write_buffer'),
16                 Uses('caba:generic_fifo'),
17                 Uses('caba:generic_cam'),
18                 Uses('caba:generic_llsc_local_table'),
19                 Uses('caba:generic_cache', 
20                       addr_t = parameter.StringExt('sc_dt::sc_uint<%d> ', 
21                       parameter.Reference('addr_size'))),
22                 Uses('caba:generic_tlb', 
23                       addr_t = parameter.StringExt('sc_dt::sc_uint<%d> ', 
24                       parameter.Reference('addr_size'))),
25                 Uses('common:address_masking_table', 
26                       data_t = parameter.StringExt('sc_dt::sc_uint<%d> ', 
27                       parameter.Reference('addr_size'))) ],
28        ports = [ Port('caba:vci_initiator', 'p_vci_ini_d'),
29                  Port('caba:vci_initiator', 'p_vci_ini_c'),
30                  Port('caba:vci_target', 'p_vci_tgt_d'),
31                  Port('caba:bit_in','p_irq', parameter.Constant('n_irq')),
32                  Port('caba:bit_in', 'p_resetn', auto = 'resetn'),
33                  Port('caba:clock_in', 'p_clk', auto = 'clock'), ],
34        instance_parameters = [ parameter.Int('proc_id'),
35                                parameter.Module('mt', 'common:mapping_table'),
36                                parameter.Module('mc', 'common:mapping_table'),
37                                parameter.IntTab('initiator_rw_index'),
38                                parameter.IntTab('initiator_c_index'),
39                                parameter.IntTab('target_index'),
40                                parameter.Int('itlb_ways'),
41                                parameter.Int('itlb_sets'),
42                                parameter.Int('dtlb_ways'),
43                                parameter.Int('dtlb_sets'),
44                                parameter.Int('icache_ways'),
45                                parameter.Int('icache_sets'),
46                                parameter.Int('icache_words'),
47                                parameter.Int('dcache_ways'),
48                                parameter.Int('dcache_sets'),
49                                parameter.Int('dcache_words'),
50                                parameter.Int('wbuf_nlines'),
51                                parameter.Int('wbuf_nwords'),
52                                parameter.Int('max_frozen_cycles'), ],
53        extensions = [ 'dsx:get_ident='
54                       'initiator_d_index:p_vci_ini_d:mt,'
55                       'initiator_c_index:p_vci_ini_c:mc,'
56                       'target_index:p_vci_tgti_d:mc',
57                       'dsx:cpu=wrapper:iss_t',
58                       'dsx:addressable=target_index',
59                       'dsx:on_segment=mc:add_index:initiator_rw_index',
60                       'dsx:mapping_type=processor:proc_id', ],
61)
62
63
Note: See TracBrowser for help on using the repository browser.