Changes between Initial Version and Version 1 of Component/Vci Xcache Wrapper


Ignore:
Timestamp:
Jun 10, 2008, 12:35:41 AM (16 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Component/Vci Xcache Wrapper

    v1 v1  
     1[wiki:Component SocLib Components General Index]
     2
     3= !VciXcacheWrapper =
     4
     5== 1) Functional Description ==
     6
     7This VCI initiator is a generic cache controller, fully compliant with the
     8VCI advanced protocol. This hardware component can be used to interface any
     932 bits RISC processor (such as Mips R3000, Sparc V8, or PPC 405) to a VCI based multi-processor system.
     10It acts directly as a wrapper for any ISS (Instruction Set Simulator) respecting the standardized API
     11defined [wiki:WritingRules/RISC here].
     12
     13This cache controller implements two separated instruction and data caches, sharing the same VCI interface.
     14
     15It provides the same functionalities as the previous VciXcache component, with an higher simulation speed,
     16an full support for associativity (for both the instruction and data caches).
     17
     18 * The VCI ADDRESS and DATA fields must have 32 bits, and the VCI ERROR field has 1 bit.
     19 * The number of lines must be a power of 2, and cannot be larger than 1024.
     20 * The number of words must be a power of 2, and cannot be larger than 32.
     21 * The number of associativity levels must be a power of 2, and cannot be larger than 16.
     22
     23In order to garanty the memory consistency, this component does NOT start a new VCI transaction
     24until the previous transaction is completed. Therefore, it does not use the VCI PKTID and TRDID fields.
     25
     26=== Instruction Cache ===
     27
     28 * It is read-only.
     29 * It uses the [wiki:Component/MappingTable Mapping Table] to support uncached segments.
     30 * In case of read MISS, or read uncached, the processor is stalled until the missing instruction is available.
     31 * The only VCI transaction generated by the Instruction cache is a read burst corresponding to a missing cache line.
     32
     33=== Data Cache ===
     34
     35 * The write policy is WRITE-THROUGH (the data is immediately written in memory, and the cache is updated only in case of HIT).
     36 * The Data cache contains a write buffer (8 words), and builds a burst when there are successive write requests with incrementing addresses.
     37 * It uses the [wiki:Component/MappingTable Mapping Table] to support uncached segments.
     38 * The Data Cache supports the following requests : Read, Write, Linked load, and Store Conditional
     39 * The Data cache accepts a line invalidate command.
     40 * Three types of VCI transactions can be generated by the data cache:
     41   * read burst of fixed length, corresponding to a cached read MISS,
     42   * one word transaction, corresponding to an uncached read, a linked load, or a store conditional.
     43   * write burst of variable length,
     44 * 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.
     45
     46== 2) Component definition & usage ==
     47
     48source:trunk/soclib/soclib/module/internal_component/vci_xcache/caba/metadata/vci_xcache_wrapper.sd
     49
     50== 3) CABA  Implementation ==
     51
     52 * interface : source:trunk/soclib/soclib/module/internal_component/vci_xcache/caba/source/include/vci_xcache_wrapper.h
     53 * implementation : source:trunk/soclib/soclib/module/internal_component/vci_xcache/caba/source/src/vci_xcache_wrapper.cpp
     54
     55=== CABA template parameters ===
     56
     57This component has two template parameters, defining respectively the width of the various VCI signals,
     58and the instanciated ISS.
     59{{{
     60template<typename vci_param, typename iss_t>
     61}}}
     62
     63=== CABA constructor parameters ===
     64{{{
     65
     66    VciXcacheWrapper(
     67        sc_module_name insname,
     68        int proc_id,
     69        const soclib::common::MappingTable &mt,
     70        const soclib::common::IntTab &index,
     71        size_t icache_lines,
     72        size_t icache_words,
     73        size_t icache_sets,
     74        size_t dcache_lines,
     75        size_t dcache_words
     76        size_t dcache_sets );
     77}}}
     78
     79=== CABA ports ===
     80
     81 * sc_in<bool> '''p_resetn''' : Global system reset
     82 * sc_in<bool> '''p_clk''' : Global system clock
     83 * soclib::caba::!VciInitiator<vci_param> '''p_vci''' : The VCI port
     84
     85== 4) TLM-T Implementation ==
     86
     87 * interface : source:trunk/soclib/soclib/module/internal_component/vci_xcache/tlmt/source/include/vci_xcache_wrapper.h
     88 * implementation : source:trunk/soclib/soclib/module/internal_component/vci_xcache/tlmt/source/src/vci_xcache_wrapper.cpp
     89
     90=== TLM-T template parameters ===
     91
     92=== TLM-T constructor parameters ===
     93
     94=== TLM-T ports ===
     95
     96