Ignore:
Timestamp:
Dec 11, 2012, 6:19:35 PM (12 years ago)
Author:
joannou
Message:

Updated of the vci trdid/rtrdid and pktid/rpktid fields for the direct network.
The pktid values are commented in the components'headers that use them.

  • In the vci_vdspin_*_wrapper components
    • added the transmission of the pktid/rpktid field
  • In the vci_cc_vcache_wrapper_v4
    • updated gen_moore() to transmit a valid pktid
    • updated transition(), RSP_FSM now checks the rpktid
  • In the vci_mem_cache_v4
    • transition(), tests originally performed on trdid now use pktid
    • gen_moore() transmit rpktid
    • !!! THE L1_MULTI_CACHE MECHANISM IS NO LONGER COMPATIBLE !!!
  • In vci_block_device_tsar_v4
    • updated gen_moore function to transmit a valid pktid

Also renamed the "SC" states in "CAS" states in the concerned FSMs on the vci_cc_vcache_wrapper_v4 and the vci_mem_cache_v4

Location:
trunk/modules/vci_mem_cache_v4/caba/source/include
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/modules/vci_mem_cache_v4/caba/source/include/mem_cache_directory_v4.h

    r283 r284  
    77#include "arithmetics.h"
    88
     9// !!!
     10// The L1_MULTI_CACHE mechanism does no longer work with the new pktid encoding
     11// of TSAR. Turning the define below to a non null value will cause the memcache
     12// to behave in an unpredicted way.
     13// TODO Either remove the mechanism from the mem cache or update its behaviour.
    914#define L1_MULTI_CACHE 0
     15
    1016//#define RANDOM_EVICTION
    1117
  • trunk/modules/vci_mem_cache_v4/caba/source/include/vci_mem_cache_v4.h

    r283 r284  
    2727 * Maintainers: alain eric.guthmuller@polytechnique.edu
    2828 *              cesar.fuguet-tortolero@lip6.fr
     29 *              alexandre.joannou@lip6.fr
    2930 *
    3031 * Modifications done by Christophe Choichillon on the 7/04/2009:
     
    8081        TGT_CMD_READ,
    8182        TGT_CMD_WRITE,
    82         TGT_CMD_ATOMIC
     83        TGT_CMD_CAS
    8384      };
    8485
     
    8788        TGT_RSP_READ_IDLE,
    8889        TGT_RSP_WRITE_IDLE,
    89         TGT_RSP_SC_IDLE,
     90        TGT_RSP_CAS_IDLE,
    9091        TGT_RSP_XRAM_IDLE,
    9192        TGT_RSP_INIT_IDLE,
     
    9394        TGT_RSP_READ,
    9495        TGT_RSP_WRITE,
    95         TGT_RSP_SC,
     96        TGT_RSP_CAS,
    9697        TGT_RSP_XRAM,
    9798        TGT_RSP_INIT,
     
    109110        INIT_CMD_UPDT_INDEX,
    110111        INIT_CMD_UPDT_DATA,
    111         INIT_CMD_SC_UPDT_IDLE,
    112         INIT_CMD_SC_BRDCAST,
    113         INIT_CMD_SC_UPDT_NLINE,
    114         INIT_CMD_SC_UPDT_INDEX,
    115         INIT_CMD_SC_UPDT_DATA,
    116         INIT_CMD_SC_UPDT_DATA_HIGH
     112        INIT_CMD_CAS_UPDT_IDLE,
     113        INIT_CMD_CAS_BRDCAST,
     114        INIT_CMD_CAS_UPDT_NLINE,
     115        INIT_CMD_CAS_UPDT_INDEX,
     116        INIT_CMD_CAS_UPDT_DATA,
     117        INIT_CMD_CAS_UPDT_DATA_HIGH
    117118      };
    118119
     
    199200        IXR_CMD_READ_IDLE,
    200201        IXR_CMD_WRITE_IDLE,
    201         IXR_CMD_SC_IDLE,
     202        IXR_CMD_CAS_IDLE,
    202203        IXR_CMD_XRAM_IDLE,
    203204        IXR_CMD_READ_NLINE,
    204205        IXR_CMD_WRITE_NLINE,
    205         IXR_CMD_SC_NLINE,
     206        IXR_CMD_CAS_NLINE,
    206207        IXR_CMD_XRAM_DATA
    207208      };
    208209
    209       /* States of the SC fsm */
    210       enum sc_fsm_state_e{
    211         SC_IDLE,
    212         SC_DIR_REQ,
    213         SC_DIR_LOCK,
    214         SC_DIR_HIT_READ,
    215         SC_DIR_HIT_WRITE,
    216         SC_UPT_LOCK,
    217         SC_UPT_HEAP_LOCK,
    218         SC_UPT_REQ,
    219         SC_UPT_NEXT,
    220         SC_BC_TRT_LOCK,
    221         SC_BC_UPT_LOCK,
    222         SC_BC_DIR_INVAL,
    223         SC_BC_CC_SEND,
    224         SC_BC_XRAM_REQ,
    225         SC_RSP_FAIL,
    226         SC_RSP_SUCCESS,
    227         SC_MISS_TRT_LOCK,
    228         SC_MISS_TRT_SET,
    229         SC_MISS_XRAM_REQ,
    230         SC_WAIT
     210      /* States of the CAS fsm */
     211      enum cas_fsm_state_e{
     212        CAS_IDLE,
     213        CAS_DIR_REQ,
     214        CAS_DIR_LOCK,
     215        CAS_DIR_HIT_READ,
     216        CAS_DIR_HIT_WRITE,
     217        CAS_UPT_LOCK,
     218        CAS_UPT_HEAP_LOCK,
     219        CAS_UPT_REQ,
     220        CAS_UPT_NEXT,
     221        CAS_BC_TRT_LOCK,
     222        CAS_BC_UPT_LOCK,
     223        CAS_BC_DIR_INVAL,
     224        CAS_BC_CC_SEND,
     225        CAS_BC_XRAM_REQ,
     226        CAS_RSP_FAIL,
     227        CAS_RSP_SUCCESS,
     228        CAS_MISS_TRT_LOCK,
     229        CAS_MISS_TRT_SET,
     230        CAS_MISS_XRAM_REQ,
     231        CAS_WAIT
    231232      };
    232233
     
    253254        ALLOC_DIR_READ,
    254255        ALLOC_DIR_WRITE,
    255         ALLOC_DIR_SC,
     256        ALLOC_DIR_CAS,
    256257        ALLOC_DIR_CLEANUP,
    257258        ALLOC_DIR_XRAM_RSP
     
    262263        ALLOC_TRT_READ,
    263264        ALLOC_TRT_WRITE,
    264         ALLOC_TRT_SC,
     265        ALLOC_TRT_CAS,
    265266        ALLOC_TRT_XRAM_RSP,
    266267        ALLOC_TRT_IXR_RSP
     
    273274        ALLOC_UPT_INIT_RSP,
    274275        ALLOC_UPT_CLEANUP,
    275         ALLOC_UPT_SC
     276        ALLOC_UPT_CAS
    276277      };
    277278
     
    281282        ALLOC_HEAP_READ,
    282283        ALLOC_HEAP_WRITE,
    283         ALLOC_HEAP_SC,
     284        ALLOC_HEAP_CAS,
    284285        ALLOC_HEAP_CLEANUP,
    285286        ALLOC_HEAP_XRAM_RSP
     287      };
     288
     289      /* transaction type, pktid field */
     290      enum transaction_type_e
     291      {
     292          // b3 unused
     293          // b2 READ / NOT READ
     294          // Si READ
     295          //  b1 DATA / INS
     296          //  b0 UNC / MISS
     297          // Si NOT READ
     298          //  b1 accÚs table llsc type SW / other
     299          //  b2 WRITE/CAS/LL/SC
     300          TYPE_READ_DATA_UNC          = 0x0,
     301          TYPE_READ_DATA_MISS         = 0x1,
     302          TYPE_READ_INS_UNC           = 0x2,
     303          TYPE_READ_INS_MISS          = 0x3,
     304          TYPE_WRITE                  = 0x4,
     305          TYPE_CAS                    = 0x5,
     306          TYPE_LL                     = 0x6,
     307          TYPE_SC                     = 0x7
     308      };
     309
     310      /* SC return values */
     311      enum sc_status_type_e
     312      {
     313          SC_SUCCESS  =   0x00000000,
     314          SC_FAIL     =   0x00000001
    286315      };
    287316
     
    296325      bool         m_debug_read_fsm;
    297326      bool         m_debug_write_fsm;
    298       bool         m_debug_sc_fsm;
     327      bool         m_debug_cas_fsm;
    299328      bool         m_debug_cleanup_fsm;
    300329      bool         m_debug_ixr_cmd_fsm;
     
    326355      uint32_t     m_cpt_ll;            // Number of LL transactions
    327356      uint32_t     m_cpt_sc;            // Number of SC transactions
     357      uint32_t     m_cpt_cas;           // Number of CAS transactions
    328358
    329359      size_t       m_prev_count;
     
    429459      GenericFifo<be_t>      m_cmd_write_be_fifo;
    430460
    431       // Fifo between TGT_CMD fsm and SC fsm
    432       GenericFifo<uint64_t>  m_cmd_sc_addr_fifo;
    433       GenericFifo<bool>      m_cmd_sc_eop_fifo;
    434       GenericFifo<size_t>    m_cmd_sc_srcid_fifo;
    435       GenericFifo<size_t>    m_cmd_sc_trdid_fifo;
    436       GenericFifo<size_t>    m_cmd_sc_pktid_fifo;
    437       GenericFifo<data_t>    m_cmd_sc_wdata_fifo;
     461      // Fifo between TGT_CMD fsm and CAS fsm
     462      GenericFifo<uint64_t>  m_cmd_cas_addr_fifo;
     463      GenericFifo<bool>      m_cmd_cas_eop_fifo;
     464      GenericFifo<size_t>    m_cmd_cas_srcid_fifo;
     465      GenericFifo<size_t>    m_cmd_cas_trdid_fifo;
     466      GenericFifo<size_t>    m_cmd_cas_pktid_fifo;
     467      GenericFifo<data_t>    m_cmd_cas_wdata_fifo;
    438468
    439469      sc_signal<int>         r_tgt_cmd_fsm;
     
    594624
    595625      ///////////////////////////////////////////////////////
    596       // Registers controlled by SC fsm
     626      // Registers controlled by CAS fsm
    597627      ///////////////////////////////////////////////////////
    598628
    599       sc_signal<int>      r_sc_fsm;        // FSM state
    600       sc_signal<data_t>   r_sc_wdata;      // write data word
    601       sc_signal<data_t> * r_sc_rdata;      // read data word
    602       sc_signal<uint32_t> r_sc_lfsr;       // lfsr for random introducing
    603       sc_signal<size_t>   r_sc_cpt;        // size of command
    604       sc_signal<copy_t>   r_sc_copy;       // Srcid of the first copy
    605       sc_signal<copy_t>   r_sc_copy_cache; // Srcid of the first copy
    606       sc_signal<bool>     r_sc_copy_inst;  // Type of the first copy
    607       sc_signal<size_t>   r_sc_count;      // number of copies
    608       sc_signal<size_t>   r_sc_ptr;        // pointer to the heap
    609       sc_signal<size_t>   r_sc_next_ptr;   // next pointer to the heap
    610       sc_signal<bool>     r_sc_is_cnt;     // is_cnt bit (in directory)
    611       sc_signal<bool>     r_sc_dirty;      // dirty bit (in directory)
    612       sc_signal<size_t>   r_sc_way;        // way in directory
    613       sc_signal<size_t>   r_sc_set;        // set in directory
    614       sc_signal<data_t>   r_sc_tag;        // cache line tag (in directory)
    615       sc_signal<size_t>   r_sc_trt_index;  // Transaction Table index
    616       sc_signal<size_t>   r_sc_upt_index;  // Update Table index
    617 
    618       // Buffer between SC fsm and INIT_CMD fsm (XRAM read)
    619       sc_signal<bool>     r_sc_to_ixr_cmd_req;   // valid request
    620       sc_signal<addr_t>   r_sc_to_ixr_cmd_nline; // cache line index
    621       sc_signal<size_t>   r_sc_to_ixr_cmd_trdid; // index in Transaction Table
    622       sc_signal<bool>     r_sc_to_ixr_cmd_write; // write request
    623       sc_signal<data_t> * r_sc_to_ixr_cmd_data;  // cache line data
    624 
    625 
    626       // Buffer between SC fsm and TGT_RSP fsm
    627       sc_signal<bool>     r_sc_to_tgt_rsp_req;   // valid request
    628       sc_signal<data_t>   r_sc_to_tgt_rsp_data;  // read data word
    629       sc_signal<size_t>   r_sc_to_tgt_rsp_srcid; // Transaction srcid
    630       sc_signal<size_t>   r_sc_to_tgt_rsp_trdid; // Transaction trdid
    631       sc_signal<size_t>   r_sc_to_tgt_rsp_pktid; // Transaction pktid
    632 
    633       // Buffer between SC fsm and INIT_CMD fsm (Update/Invalidate L1 caches)
    634       sc_signal<bool>     r_sc_to_init_cmd_multi_req;     // valid request
    635       sc_signal<bool>     r_sc_to_init_cmd_brdcast_req;   // brdcast request
    636       sc_signal<addr_t>   r_sc_to_init_cmd_nline;         // cache line index
    637       sc_signal<size_t>   r_sc_to_init_cmd_trdid;         // index in Update Table
    638       sc_signal<data_t>   r_sc_to_init_cmd_wdata;         // data (one word)
    639       sc_signal<bool>     r_sc_to_init_cmd_is_long;       // it is a 64 bits SC
    640       sc_signal<data_t>   r_sc_to_init_cmd_wdata_high;    // data high (one word)
    641       sc_signal<size_t>   r_sc_to_init_cmd_index;         // index of the word in line
    642       GenericFifo<bool>   m_sc_to_init_cmd_inst_fifo;     // fifo for the L1 type
    643       GenericFifo<size_t> m_sc_to_init_cmd_srcid_fifo;    // fifo for srcids
     629      sc_signal<int>      r_cas_fsm;        // FSM state
     630      sc_signal<data_t>   r_cas_wdata;      // write data word
     631      sc_signal<data_t> * r_cas_rdata;      // read data word
     632      sc_signal<uint32_t> r_cas_lfsr;       // lfsr for random introducing
     633      sc_signal<size_t>   r_cas_cpt;        // size of command
     634      sc_signal<copy_t>   r_cas_copy;       // Srcid of the first copy
     635      sc_signal<copy_t>   r_cas_copy_cache; // Srcid of the first copy
     636      sc_signal<bool>     r_cas_copy_inst;  // Type of the first copy
     637      sc_signal<size_t>   r_cas_count;      // number of copies
     638      sc_signal<size_t>   r_cas_ptr;        // pointer to the heap
     639      sc_signal<size_t>   r_cas_next_ptr;   // next pointer to the heap
     640      sc_signal<bool>     r_cas_is_cnt;     // is_cnt bit (in directory)
     641      sc_signal<bool>     r_cas_dirty;      // dirty bit (in directory)
     642      sc_signal<size_t>   r_cas_way;        // way in directory
     643      sc_signal<size_t>   r_cas_set;        // set in directory
     644      sc_signal<data_t>   r_cas_tag;        // cache line tag (in directory)
     645      sc_signal<size_t>   r_cas_trt_index;  // Transaction Table index
     646      sc_signal<size_t>   r_cas_upt_index;  // Update Table index
     647
     648      // Buffer between CAS fsm and INIT_CMD fsm (XRAM read)
     649      sc_signal<bool>     r_cas_to_ixr_cmd_req;   // valid request
     650      sc_signal<addr_t>   r_cas_to_ixr_cmd_nline; // cache line index
     651      sc_signal<size_t>   r_cas_to_ixr_cmd_trdid; // index in Transaction Table
     652      sc_signal<bool>     r_cas_to_ixr_cmd_write; // write request
     653      sc_signal<data_t> * r_cas_to_ixr_cmd_data;  // cache line data
     654
     655
     656      // Buffer between CAS fsm and TGT_RSP fsm
     657      sc_signal<bool>     r_cas_to_tgt_rsp_req;   // valid request
     658      sc_signal<data_t>   r_cas_to_tgt_rsp_data;  // read data word
     659      sc_signal<size_t>   r_cas_to_tgt_rsp_srcid; // Transaction srcid
     660      sc_signal<size_t>   r_cas_to_tgt_rsp_trdid; // Transaction trdid
     661      sc_signal<size_t>   r_cas_to_tgt_rsp_pktid; // Transaction pktid
     662
     663      // Buffer between CAS fsm and INIT_CMD fsm (Update/Invalidate L1 caches)
     664      sc_signal<bool>     r_cas_to_init_cmd_multi_req;     // valid request
     665      sc_signal<bool>     r_cas_to_init_cmd_brdcast_req;   // brdcast request
     666      sc_signal<addr_t>   r_cas_to_init_cmd_nline;         // cache line index
     667      sc_signal<size_t>   r_cas_to_init_cmd_trdid;         // index in Update Table
     668      sc_signal<data_t>   r_cas_to_init_cmd_wdata;         // data (one word)
     669      sc_signal<bool>     r_cas_to_init_cmd_is_long;       // it is a 64 bits CAS
     670      sc_signal<data_t>   r_cas_to_init_cmd_wdata_high;    // data high (one word)
     671      sc_signal<size_t>   r_cas_to_init_cmd_index;         // index of the word in line
     672      GenericFifo<bool>   m_cas_to_init_cmd_inst_fifo;     // fifo for the L1 type
     673      GenericFifo<size_t> m_cas_to_init_cmd_srcid_fifo;    // fifo for srcids
    644674#if L1_MULTI_CACHE
    645       GenericFifo<size_t> m_sc_to_init_cmd_cache_id_fifo; // fifo for srcids
     675      GenericFifo<size_t> m_cas_to_init_cmd_cache_id_fifo; // fifo for srcids
    646676#endif
    647677
    648       // Buffer between SC fsm and INIT_RSP fsm (Decrement UPT entry)
    649       sc_signal<bool>     r_sc_to_init_rsp_req;       // valid request
    650       sc_signal<size_t>   r_sc_to_init_rsp_upt_index; // index in update table
     678      // Buffer between CAS fsm and INIT_RSP fsm (Decrement UPT entry)
     679      sc_signal<bool>     r_cas_to_init_rsp_req;       // valid request
     680      sc_signal<size_t>   r_cas_to_init_rsp_upt_index; // index in update table
    651681
    652682      ////////////////////////////////////////////////////
Note: See TracChangeset for help on using the changeset viewer.