Ignore:
Timestamp:
Jan 7, 2014, 4:26:39 PM (10 years ago)
Author:
haoliu
Message:

Modification in vci_cc_vcache_wrapper:
a) Non cacheable write request will not any more be sent by multi_write_buffer.

A write non cacheable access is retreated with a synchronous way, like the
read non cacheable access. When Cache L1 receives a write non cacheable request,
it will block the processor until the response of this request arrives.
The advantage of this method is that the cache L1 can supply the virtual address
to OS when it receives a bus error response.

b) In VCI_CMD_STATE, the unc_read request will not check the multi_write_buffer for

an matching address. But the CAS and SC request must be check this point
before sent to the target.

File:
1 edited

Legend:

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

    r549 r616  
    148148        CMD_INS_UNC,
    149149        CMD_DATA_MISS,
    150         CMD_DATA_UNC,
     150        CMD_DATA_UNC_READ,
     151        CMD_DATA_UNC_WRITE,
    151152        CMD_DATA_WRITE,
    152153        CMD_DATA_LL,
     
    202203        //  b1 accÚs table llsc type SW / other
    203204        //  b2 WRITE/CAS/LL/SC
    204         TYPE_READ_DATA_UNC          = 0x0,
     205        TYPE_DATA_UNC               = 0x0,
    205206        TYPE_READ_DATA_MISS         = 0x1,
    206207        TYPE_READ_INS_UNC           = 0x2,
     
    274275    };
    275276
    276     enum transaction_type_d_e
    277     {
    278         // b0 : 1 if cached
    279         // b1 : 1 if instruction
    280         TYPE_DATA_UNC     = 0x0,
    281         TYPE_DATA_MISS    = 0x1,
    282         TYPE_INS_UNC      = 0x2,
    283         TYPE_INS_MISS     = 0x3,
    284     };
     277//    enum transaction_type_d_e
     278//    {
     279//        // b0 : 1 if cached
     280//        // b1 : 1 if instruction
     281//        TYPE_DATA_UNC     = 0x0,
     282//        TYPE_DATA_MISS    = 0x1,
     283//        TYPE_INS_UNC      = 0x2,
     284//        TYPE_INS_MISS     = 0x3,
     285//    };
    285286
    286287public:
     
    412413    sc_signal<uint32_t>     r_dcache_save_be;           // byte enable (from proc)
    413414    sc_signal<paddr_t>      r_dcache_save_paddr;        // physical address
    414     sc_signal<bool>         r_dcache_save_cacheable;    // address cacheable
    415415    sc_signal<size_t>       r_dcache_save_cache_way;    // selected way (from dcache)
    416416    sc_signal<size_t>       r_dcache_save_cache_set;    // selected set (from dcache)
     
    423423    // communication between DCACHE FSM and VCI_CMD FSM
    424424    sc_signal<paddr_t>      r_dcache_vci_paddr;             // physical address for VCI command
     425    sc_signal<uint32_t>     r_dcache_vci_wdata;             // write unc data for VCI command
    425426    sc_signal<bool>         r_dcache_vci_miss_req;      // read miss request
    426     sc_signal<bool>         r_dcache_vci_unc_req;       // uncacheable read request
    427     sc_signal<uint32_t>     r_dcache_vci_unc_be;        // uncacheable read byte enable
     427    sc_signal<bool>         r_dcache_vci_unc_req;       // uncacheable request (read/write)
     428    sc_signal<uint32_t>     r_dcache_vci_unc_be;        // uncacheable byte enable
     429    sc_signal<uint32_t>     r_dcache_vci_unc_write;     // uncacheable data write request
    428430    sc_signal<bool>         r_dcache_vci_cas_req;       // atomic write request CAS
    429431    sc_signal<uint32_t>     r_dcache_vci_cas_old;       // previous data value for a CAS
     
    436438    sc_signal<size_t>       r_dcache_xtn_way;               // selected way (from dcache)
    437439    sc_signal<size_t>       r_dcache_xtn_set;               // selected set (from dcache)
    438 
    439     // write buffer state extension
    440     sc_signal<bool>         r_dcache_pending_unc_write; // pending uncacheable write in WBUF
    441440
    442441    // handling dcache miss
Note: See TracChangeset for help on using the changeset viewer.