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


Ignore:
Timestamp:
May 9, 2007, 1:29:58 PM (17 years ago)
Author:
Nicolas Pouillon
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Component/Vci Xcache

    v1 v1  
     1[wiki:Component SocLib Components General Index]
     2
     3= !VciXcache Functional Description =
     4
     5This VCI initiator is a generic cache controller, fully compliant with the
     6VCI advanced protocol. Thanks to a normalized interface
     7(source:trunk/soclib/systemc/include/caba/interface/xcache_signals.h),
     8this blocking cache controller can be used by several RISC processors
     9(including Mips R3000, Sparc V8, or !OpenRisc 1000). It contains two separated
     10instruction and data caches, sharing the same VCI interface.
     11(source:trunk/soclib/systemc/include/caba/interface/vci_signals.h)
     12
     13 * The VCI ADDRESS and DATA fields must have 32 bits, and the VCI ERROR field must have 1 bit.
     14 * The number of lines must be a power of 2, and cannot be larger than 1024.
     15 * The number of words must be a power of 2, and cannot be larger than 32.
     16
     17In order to garanty the memory consistency, this component does NOT start a new VCI transaction
     18until the previous transaction is completed. Therefore, it does not use the VCI PKTID and TRDID fields.
     19
     20Finally, this component has 4 Mealy output ports :
     21 * p_icache.inst
     22 * p_icache.miss
     23 * p_dcache.data
     24 * p_dcache.miss
     25
     26== Instruction Cache ==
     27 * The Instruction cache is direct mapping and read-only.
     28 * It uses the [wiki:Component/MappingTable Mapping Table] to support uncached segments.
     29 * In case of MISS, the processor is stalled until the missing cache line is available.
     30 * The only VCI transaction generated by the Instruction cache is a read burst corresponding to a missing cache line.
     31
     32== Data Cache ==
     33 * The Data cache is direct mapping, and the write policy is WRITE-THROUGH (the data is immediately written in memory, and the cache is updated only in case of HIT).
     34 * The data cache contains a 8 words write buffer. The cache controller builds a burst packet when there is several successive write addresses in the write buffer for the same 4 Kbytes page.
     35 * It uses the [wiki:Component/MappingTable Mapping Table] to support uncached segments.
     36 * The Data cache accepts a line invalidate command.
     37 * In case of MISS, the processor is stalled until the missing cache line is available.
     38 * Three types of VCI transactions can be generated by the data cache:
     39   * read burst of fixed length, corresponding to a cached read MISS,
     40   * read one word, corresponding to an uncached read,
     41   * write burst of variable length,
     42 * 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.
     43
     44= !VciXcache CABA  Implementation =
     45
     46The caba implementation is in
     47 * source:trunk/soclib/systemc/include/caba/initiator/vci_xcache.h
     48 * source:trunk/soclib/systemc/src/caba/initiator/vci_xcache.cc
     49
     50== Template parameters ==
     51
     52template<typename vci_param>   
     53
     54== Constructor parameters ==
     55{{{
     56VciXcache(
     57     sc_module_name name,   // Instance name
     58     const soclib::common::MappingTable &mt,   // Mapping Table
     59     const soclib::common::IntTab &index,   //  VCI Initiator index
     60     size_t WRITE_BUFFER_DEPTH,    // number of requests in the write buffer
     61     size_t ICACHE_LINES,     // number of lines for the Icache
     62     size_t ICACHE_WORDS,     // number of words per line for the Icache
     63     size_t DCACHE_LINES,     // number of lines for the Dcache
     64     size_t DCACHE_WORDS);   // number or words per line for the Dcache
     65}}}
     66
     67== Ports ==
     68
     69 * sc_in<bool> '''p_resetn''' : Global system reset
     70 * sc_in<bool> '''p_clk''' : Global system clock
     71 * soclib::caba::ICacheCachePort '''p_icache''' : Icache interface
     72 * soclib::caba::DCacheCachePort '''p_dcache''' : Dcache interface
     73 * soclib::caba::!VciInitiator<vci_param> '''p_vci''' : The VCI port