Changes between Version 4 and Version 5 of Component/Vci Xcache Wrapper


Ignore:
Timestamp:
Aug 25, 2008, 1:42:13 PM (16 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Component/Vci Xcache Wrapper

    v4 v5  
    11[wiki:Component SocLib Components General Index]
    22
    3 = !VciXcacheWrapper =
     3= !VciXcacheWrapper /  !VciVcacheWrapper / !VciCcXcacheWrapper / !VciCcVcacheWrapper =
    44
    55== 1) Functional Description ==
    66
    7 This VCI initiator is a generic cache controller, fully compliant with the
    8 VCI advanced protocol. This hardware component can be used to interface any
    9 32 bits RISC processor (such as Mips R3000, Sparc V8, or PPC 405) to a VCI based multi-processor system.
    10 It acts directly as a wrapper for any ISS (Instruction Set Simulator) respecting the standardized API
     7These 4 hardware components are generic cache controllers, fully compliant with the
     8VCI advanced protocol. They  can be used to interface any - single instruction issue -
     932 bits RISC processor (such as Mips R3000, Sparc V8, Xilinx microBlaze, Altera Nios, or PPC 405) to a VCI based multi-processor system.
     10They act directly as a wrapper for any ISS (Instruction Set Simulator) respecting the standardized API
    1111defined [wiki:WritingRules/RISC here].
    1212
    13 This cache controller implements two separated instruction and data caches, sharing the same VCI interface.
     13Each cache controller implements two separated instruction and data caches, sharing the same VCI interface.
    1414
    15 It provides the same functionalities as the previous !VciXcache component, with an higher simulation speed,
    16 an full support for associativity (for both the instruction and data caches).
    1715
    18  * The VCI ADDRESS and DATA fields must have 32 bits, and the VCI ERROR field has 1 bit.
     16 * The !VciXcacheWrapper provides the same functionalities as the previous !VciXcache component. It has an higher simulation speed, and supports  associativity (for both the instruction and data caches).
     17 * The !VciVcacheWrapper implement a generic paged MMU (see below).
     18 * The !VciCcacheWrapper implement a directory-based cache coherence protocol (see below).
     19 * The !VciCcVcachewrapper supports both the generic MMU and the cache coherence.
     20 
     21||                                        || No Virtual memory    || With Virtual Memory   ||
     22||No Cache Coherence   || !VciXcacheWrapper     || !VciVcacheWrapper     ||
     23||With Cache Coherence|| !VciCcXcacheWrapper || !VciCcVcacheWrapper ||
     24
     25=== General features ===
     26
     27The general characteristics are the following
     28 * The VCI  DATA field must have 32 bits,
     29 * The VCI  ADDRESS field must have 32 bits (when there is no MMU),
     30 * The VCI ERROR field has 1 bit.
    1931 * The number of lines must be a power of 2, and cannot be larger than 1024.
    2032 * The number of words must be a power of 2, and cannot be larger than 32.
    2133 * The number of associativity levels must be a power of 2, and cannot be larger than 16.
    2234
    23 In order to garanty the memory consistency, this component does NOT start a new VCI transaction
    24 until the previous transaction is completed. Therefore, it does not use the VCI PKTID and TRDID fields.
     35According to the VCI advanced specification, these components use one word VCI command packets
     36for Read MISS, and accept one word VCI response packets for Write bursts.
     37In order to garanty the memory consistency, these cache controllers do NOT start a new VCI transaction
     38until the previous transaction is completed. Therefore, they do NOT use the VCI PKTID and TRDID fields.
    2539
    2640=== Instruction Cache ===
     
    4458 * The processor is stalled in case of cached read MISS, in case of uncached read, or in case of write, if the write buffer is full.
    4559
    46 == 2) Component definition & usage ==
     60=== Generic MMU ===
    4761
    48 source:trunk/soclib/soclib/module/internal_component/vci_xcache_wrapper/caba/metadata/vci_xcache_wrapper.sd
     62=== Cache Coherence ===
    4963
    50 == 3) CABA  Implementation ==
     64The CC_Xcache & CC_Vcache components implement a directory-based cache coherence protocol.
     65The global memory directory itself should be implemented in a dedicated memory controller such as the !VciMemCache component.
     66The cache coherence protocol is strongly simplified by the WRITE-THROUGH policy and is implemented by three types of packets.
     67The CC_Xcache (or CC_Vcache) component has one VCI target port, and can receive UPDATE or INVALIDATE packets, from the memory controller. When the CC-Xcache (or CC_Vcache) component discard a cache line (due to a cache line replacement following a MISS), it signals this change by a CLEANUP packet sent to the cache controller. All those ''coherence'' packets are implemented as VCI write packets to dedicated memory mapped registers.
     68 * an UPDATE packet (memory controller to cache) has N+2 words : the first word contains the the line index of the modified cache line. The second word contains the index of the first modified word in the line. The N following words contain the N data values.
     69 * an INVALIDATE packet (memory controller to cache) has 1 word : it contains the line index of the modified cache line.
     70 * a CLEANUP packet (cache to memory controller) has 1 word : it contains the line index of the discarded cache line.
    5171
     72== 2) CABA  Implementation ==
     73
     74'''Xcache'''
     75 * Usage : source:trunk/soclib/soclib/module/internal_component/vci_xcache_wrapper/caba/metadata/vci_xcache_wrapper.sd
    5276 * interface : source:trunk/soclib/soclib/module/internal_component/vci_xcache_wrapper/caba/source/include/vci_xcache_wrapper.h
    5377 * implementation : source:trunk/soclib/soclib/module/internal_component/vci_xcache_wrapper/caba/source/src/vci_xcache_wrapper.cpp
     78'''Vcache''
     79 * Usage : source:trunk/soclib/soclib/module/internal_component/vci_vcache_wrapper/caba/metadata/vci_vcache_wrapper.sd
     80 * interface : source:trunk/soclib/soclib/module/internal_component/vci_vcache_wrapper/caba/source/include/vci_vcache_wrapper.h
     81 * implementation : source:trunk/soclib/soclib/module/internal_component/vci_vcache_wrapper/caba/source/src/vci_vcache_wrapper.cpp
     82'''CC_Vcache'''
     83 * Usage : source:trunk/soclib/soclib/module/internal_component/vci_cc_xcache_wrapper/caba/metadata/vci_cc_xcache_wrapper.sd
     84 * interface : source:trunk/soclib/soclib/module/internal_component/vci_xcache_wrapper/caba/source/include/vci_xcache_wrapper.h
     85 * implementation : source:trunk/soclib/soclib/module/internal_component/vci_cc_xcache_wrapper/caba/source/src/vci_cc_xcache_wrapper.cpp
     86'''Cc_Vcache'''
     87 * Usage : source:trunk/soclib/soclib/module/internal_component/vci_cc_vcache_wrapper/caba/metadata/vci_cc_vcache_wrapper.sd
     88 * interface : source:trunk/soclib/soclib/module/internal_component/vci_cc_vcache_wrapper/caba/source/include/vci_cc_vcache_wrapper.h
     89 * implementation : source:trunk/soclib/soclib/module/internal_component/vci_cc_vcache_wrapper/caba/source/src/vci_cc_vcache_wrapper.cpp
    5490
    5591=== CABA template parameters ===
    5692
    57 This component has two template parameters, defining respectively the width of the various VCI signals,
     93All these 4 component have two template parameters, defining respectively the width of the various VCI signals,
    5894and the instanciated ISS.
    5995{{{
     
    6298
    6399=== CABA constructor parameters ===
     100'''Xcache & Vcache'''
    64101{{{
    65 
    66102    VciXcacheWrapper(
    67103        sc_module_name insname,
     
    76112        size_t dcache_sets );
    77113}}}
    78 
     114'''CC_Xcache & CC_Vcache'''
     115{{{
     116    VciXcacheWrapper(
     117        sc_module_name insname,
     118        int proc_id,
     119        const soclib::common::MappingTable &mt,
     120        const soclib::common::IntTab &initiator_index,
     121        const soclib::common::IntTab &target_index,
     122        size_t icache_lines,
     123        size_t icache_words,
     124        size_t icache_sets,
     125        size_t dcache_lines,
     126        size_t dcache_words
     127        size_t dcache_sets );
     128}}}
    79129=== CABA ports ===
    80130