Last change
on this file since 545 was
291,
checked in by joannou, 12 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:
496 bytes
|
Line | |
---|
1 | # -*- python -*- |
---|
2 | |
---|
3 | Module( |
---|
4 | 'caba:generic_llsc_global_table', |
---|
5 | classname = 'soclib::GenericLLSCGlobalTable', |
---|
6 | header_files = ['../include/generic_llsc_global_table.h'], |
---|
7 | tmpl_parameters = |
---|
8 | [ |
---|
9 | parameter.Int('nb_slots', min = 2, max = 64, default = 32), |
---|
10 | parameter.Int('nb_procs', min = 2, max = 4096, default = 4095), # default should be 4096, but soclib-cc problem |
---|
11 | parameter.Type('addr_t', default = 'sc_dt::sc_uint<40>') |
---|
12 | ] |
---|
13 | ) |
---|
Note: See
TracBrowser
for help on using the repository browser.