Changeset 468 for trunk/communication


Ignore:
Timestamp:
Jul 24, 2013, 8:47:40 AM (11 years ago)
Author:
cfuguet
Message:


Merging vci_mem_cache from branches/v5 to trunk [441-467]

=-----------------------------------------------------------------------
r441 | cfuguet | 2013-07-17 10:54:07 +0200 (Wed, 17 Jul 2013) | 14 lines

Modifications in branches/v5/vci_mem_cache:

  • Changing name of CC DSPIN ports: + p_dspin_in => p_dspin_p2m + p_dspin_out => p_dspin_m2p
  • Splitting the Update Table in two tables: + UPT (Update Table): Stores the MULTI-UPDATE transactions + IVT (Invalidate Table): Stores the MULTI/BROADCAST INVALIDATE

transactions

Each table has its own allocator FSM: r_alloc_upt and r_alloc_ivt

=-----------------------------------------------------------------------
r442 | cfuguet | 2013-07-17 12:13:51 +0200 (Wed, 17 Jul 2013) | 13 lines

Modifications in branches/v5/modules/vci_mem_cache:

  • Introducing third port for the CLACK network.
  • CLEANUP FSM is no more a CC_SEND FSM client.
  • CLEANUP FSM controls directly the p_dspin_clack port

=-----------------------------------------------------------------------
r445 | cfuguet | 2013-07-18 10:49:36 +0200 (Thu, 18 Jul 2013) | 7 lines

Bugfix in vci_mem_cache:

  • Adding missing "strings" for print_trace() function
  • Adding alloc_ivt fsm (Invalidate Table) in the

print_trace() function

=-----------------------------------------------------------------------
r455 | cfuguet | 2013-07-19 10:16:17 +0200 (Fri, 19 Jul 2013) | 8 lines

Merged

/trunk/modules/vci_mem_cache:449 with
/branches/v5/modules/vci_mem_cache:446.

This merge introduces into the branch the last modifications concerning
the VCI memory cache configuration interface


Merging vci_cc_vcache_wrapper from branches/v5 to trunk [444-467]

=-----------------------------------------------------------------------
r444 | cfuguet | 2013-07-17 14:46:46 +0200 (Wed, 17 Jul 2013) | 7 lines

Modifications in branches/v5/modules/vci_cc_vcache_wrapper:

  • Renaming FROM_MC DSPIN flits fields in M2P
  • Renaming FROM_L1 DSPIN flits fields in P2M
  • Renaming CLEANUP_ACK DSPIN flits fields in CLACK

=-----------------------------------------------------------------------
r446 | cfuguet | 2013-07-18 11:37:47 +0200 (Thu, 18 Jul 2013) | 13 lines

Modifications in vci_cc_vcache_wrapper:

  • Merging the states DCACHE/ICACHE_CC_BROADCAST and DCACHE/ICACHE_CC_INVAL. This is because, the BROADCAST INVALIDATE and the MULTICAST INVALIDATE are both acknowledged by a CLEANUP.
  • Adding third port for the clack coherence network.
  • Renaming the port dspin_in to dspin_m2p and the port dspin_out to dspin_p2m

=-----------------------------------------------------------------------
r454 | haoliu | 2013-07-19 10:15:13 +0200 (Fri, 19 Jul 2013) | 2 lines

modified CC_RECEIVE FSM and CC_CHECK FSM (icache and dcache) for new
version V5

=-----------------------------------------------------------------------
r461 | cfuguet | 2013-07-19 15:49:43 +0200 (Fri, 19 Jul 2013) | 9 lines

Bugfix in vci_cc_vcache_wrapper:

  • In the states DCACHE/ICACHE CC_UPDT the FSM returns to the state CC_CHECK only when the cc_send_req is occupied.

We must not return to the CC_CHECK state if not ROK of the
DATA FIFO because the counter word counter will be reset.

=-----------------------------------------------------------------------
r462 | cfuguet | 2013-07-19 16:26:26 +0200 (Fri, 19 Jul 2013) | 8 lines

Modification in vci_cc_vcache_wrapper:

  • Optimization in DCACHE/ICACHE CC_CHECK state. We can handle a CLACK and a CC request if the latter does a MISS match. This is because the CC request doing MISS match does not need to access the directory

=-----------------------------------------------------------------------
r463 | cfuguet | 2013-07-19 16:52:06 +0200 (Fri, 19 Jul 2013) | 12 lines

Modification in vci_cc_vcache_wrapper:

  • Optimization in DCACHE/ICACHE CC_CHECK state. If pending request to CC_SEND, we wait in the CC_CHECK state. Doing this, during the wait, we can handle incoming CLACK avoiding any deadlock situation.

The states CC_UPDT and CC_INVAL do not need to test anymore if
there is a pending request to CC_SEND.


Merging tsar_generic_xbar from branches/v5 to trunk [447-467]

=-----------------------------------------------------------------------
r447 | cfuguet | 2013-07-18 16:12:05 +0200 (Thu, 18 Jul 2013) | 8 lines

Adding tsar_generic_xbar platform in branches/v5/platforms:

  • This platform contains a third local crossbar interconnect for the CLACK network.
  • It works only in a monocluster topology

=-----------------------------------------------------------------------
r448 | cfuguet | 2013-07-18 17:51:18 +0200 (Thu, 18 Jul 2013) | 9 lines

Modification in branches/v5/platforms/tsar_generic_xbar:

  • Adding a DSPIN router to the platform to allow the inter-cluster communication for the CLACK commands.

With this modification, the tsar_generic_xbar platform can be used
for multi-cluster simulations

=-----------------------------------------------------------------------
r466 | cfuguet | 2013-07-23 17:01:49 +0200 (Tue, 23 Jul 2013) | 9 lines

Modifications in branches/v5 vci_mem_cache:

  • Replacing the third router CLACK by a third virtual channel in the new virtual_dspin_router supporting several virtual channels.

The third channel has been added in the COMMAND router.

=-----------------------------------------------------------------------
r467 | cfuguet | 2013-07-23 17:23:13 +0200 (Tue, 23 Jul 2013) | 5 lines

Modifications in branches/v5 tsar_generic_xbar:

  • Adding preprocessor conditional statements for ALMOS support


Merging dspin_dhccp_param from branches/v5 to trunk [377-467]

=-----------------------------------------------------------------------
r442 | cfuguet | 2013-07-17 12:13:51 +0200 (Wed, 17 Jul 2013) | 13 lines

Modifications in branches/v5/communication/dspin_dhccp_param:

  • Renaming FROM_MC fields in M2P
  • Renaming FROM_L1 fields in P2M
  • Renaming CLEANUP_ACK fields in CLACK
Location:
trunk/communication/dspin_dhccp_param
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/communication/dspin_dhccp_param

  • trunk/communication/dspin_dhccp_param/caba/source/include/dspin_dhccp_param.h

    r356 r468  
    6161
    6262/*
    63  * Memory Cache to L1 cache command packets
    64  *
    65  * CLEANUP ACKNOWLEDGEMENT
    66  *
    67  * flit 1
    68  * ----------------------------------------------------------------------------------------------
    69  * EOP:1 | DEST(14 bits) | X(3 bits) | SET_INDEX(16 bits) | WAY_INDEX(2 bits) | TYPE:0b10X | BC:0
    70  * ----------------------------------------------------------------------------------------------
    71  *                                                                            | X: 0 DATA  |
    72  *                                                                            |    1 INST  |
     63 * M2P command packets
    7364 *
    7465 * MULTICAST UPDATE
     
    7667 * flit 1
    7768 * ----------------------------------------------------------------------------------------------
    78  * EOP:0 | DEST(14 bits) | X(3 bits) | MEMC_ID(14 bits) | UPDT_INDEX(4 bits) | TYPE:0b00X  | BC:0
     69 * EOP:0 | DEST(14 bits) | X(4 bits) | MEMC_ID(14 bits) | UPDT_INDEX(4 bits) | TYPE:0b0X   | BC:0
    7970 * ----------------------------------------------------------------------------------------------
    8071 *                                                                           | X: 0 DATA   |
     
    9990 * flit 1
    10091 * ----------------------------------------------------------------------------------------------
    101  * EOP:0 | DEST(14 bits) | X(3 bits) | MEMC_ID(14 bits) | UPDT_INDEX(4 bits) | TYPE:0b01X | BC:0
     92 * EOP:0 | DEST(14 bits) | X(4 bits) | MEMC_ID(14 bits) | UPDT_INDEX(4 bits) | TYPE:0b1X | BC:0
    10293 * ----------------------------------------------------------------------------------------------
    10394 *                                                                           | X: 0 DATA  |
     
    120111 * EOP:1 |        X(5 bits)       |                                              NLINE (34 bits)
    121112 * ----------------------------------------------------------------------------------------------
     113 *
     114 * M2P clack commands
     115 *
     116 * CLEANUP ACKNOWLEDGEMENT
     117 *
     118 * flit 1
     119 * ----------------------------------------------------------------------------------------------
     120 * EOP:1 | DEST(14 bits) | X(5 bits) | SET_INDEX(16 bits) | WAY_INDEX(2 bits) | TYPE:0bX   | BC:0
     121 * ----------------------------------------------------------------------------------------------
     122 *                                                                            | X: 0 CLACK |
     123 *                                                                            |      DATA  |
     124 *                                                                            |    1 CLACK |
     125 *                                                                            |      INST  |
     126 *
    122127 */
    123128
     
    135140  public:
    136141
    137     static const uint8_t  from_memc_flit_width         = 40;
    138     static const uint8_t  from_l1_flit_width           = 33;
     142    static const uint8_t  m2p_flit_width               = 40;
     143    static const uint8_t  p2m_flit_width               = 33;
     144    static const uint8_t  clack_flit_width             = 40;
    139145
    140146    static const uint8_t  UPDT_INDEX_WIDTH             = 4;
     
    148154    static const uint8_t  WAY_INDEX_WIDTH              = 2;
    149155    static const uint8_t  BROADCAST_BOX_WIDTH          = 20;
    150     static const uint8_t  MC_TYPE_WIDTH                = 3;
    151     static const uint8_t  L1_TYPE_WIDTH                = 2;
    152 
    153     static const uint8_t  FROM_L1_TYPE_SHIFT           = 1;
    154     static const uint64_t FROM_L1_TYPE_MASK            = ((1ULL<<L1_TYPE_WIDTH)-1);
    155     static const uint8_t  FROM_L1_EOP_SHIFT            = 32;
    156     static const uint64_t FROM_L1_EOP_MASK             = 1;
    157     static const uint8_t  FROM_L1_BC_SHIFT             = 0;
    158     static const uint64_t FROM_L1_BC_MASK              = 1;
     156    static const uint8_t  M2P_TYPE_WIDTH               = 2;
     157    static const uint8_t  P2M_TYPE_WIDTH               = 2;
     158    static const uint8_t  CLACK_TYPE_WIDTH             = 1;
     159
     160    static const uint8_t  P2M_TYPE_SHIFT               = 1;
     161    static const uint64_t P2M_TYPE_MASK                = ((1ULL<<P2M_TYPE_WIDTH)-1);
     162    static const uint8_t  P2M_EOP_SHIFT                = 32;
     163    static const uint64_t P2M_EOP_MASK                 = 1;
     164    static const uint8_t  P2M_BC_SHIFT                 = 0;
     165    static const uint64_t P2M_BC_MASK                  = 1;
    159166
    160167    static const uint8_t  CLEANUP_DEST_SHIFT           = 22;
     
    174181    static const uint64_t MULTI_ACK_UPDT_INDEX_MASK    = ((1ULL<<UPDT_INDEX_WIDTH)-1);
    175182
    176     static const uint8_t  FROM_MC_TYPE_SHIFT           = 1;
    177     static const uint64_t FROM_MC_TYPE_MASK            = ((1ULL<<MC_TYPE_WIDTH)-1);
    178     static const uint8_t  FROM_MC_EOP_SHIFT            = 39;
    179     static const uint64_t FROM_MC_EOP_MASK             = 1;
    180     static const uint8_t  FROM_MC_BC_SHIFT             = 0;
    181     static const uint64_t FROM_MC_BC_MASK              = 1;
     183    static const uint8_t  M2P_TYPE_SHIFT               = 1;
     184    static const uint64_t M2P_TYPE_MASK                = ((1ULL<<M2P_TYPE_WIDTH)-1);
     185    static const uint8_t  M2P_EOP_SHIFT                = 39;
     186    static const uint64_t M2P_EOP_MASK                 = 1;
     187    static const uint8_t  M2P_BC_SHIFT                 = 0;
     188    static const uint64_t M2P_BC_MASK                  = 1;
    182189
    183190    static const uint8_t  MULTI_INVAL_DEST_SHIFT       = 25;
     
    205212    static const uint64_t MULTI_UPDT_DATA_MASK         = ((1ULL<<DATA_WIDTH)-1);
    206213
    207     static const uint8_t  CLEANUP_ACK_DEST_SHIFT       = MULTI_INVAL_DEST_SHIFT;
    208     static const uint64_t CLEANUP_ACK_DEST_MASK        = MULTI_INVAL_DEST_MASK;
    209     static const uint8_t  CLEANUP_ACK_SET_SHIFT        = 6;
    210     static const uint64_t CLEANUP_ACK_SET_MASK         = ((1ULL<<SET_INDEX_WIDTH)-1);
    211     static const uint8_t  CLEANUP_ACK_WAY_SHIFT        = 4;
    212     static const uint64_t CLEANUP_ACK_WAY_MASK         = ((1ULL<<WAY_INDEX_WIDTH)-1);
    213 
    214214    static const uint8_t  BROADCAST_BOX_SHIFT          = 19;
    215215    static const uint64_t BROADCAST_BOX_MASK           = ((1ULL<<BROADCAST_BOX_WIDTH)-1);
     
    219219    static const uint64_t BROADCAST_NLINE_MASK         = MULTI_INVAL_NLINE_MASK;
    220220
     221    static const uint8_t  CLACK_TYPE_SHIFT             = 1;
     222    static const uint64_t CLACK_TYPE_MASK              = ((1ULL<<CLACK_TYPE_WIDTH)-1);
     223    static const uint8_t  CLACK_EOP_SHIFT              = 39;
     224    static const uint64_t CLACK_EOP_MASK               = 1;
     225    static const uint8_t  CLACK_BC_SHIFT               = 0;
     226    static const uint64_t CLACK_BC_MASK                = 1;
     227    static const uint8_t  CLACK_DEST_SHIFT             = 25;
     228    static const uint64_t CLACK_DEST_MASK              = ((1ULL<<SRCID_WIDTH)-1);
     229    static const uint8_t  CLACK_SET_SHIFT              = 6;
     230    static const uint64_t CLACK_SET_MASK               = ((1ULL<<SET_INDEX_WIDTH)-1);
     231    static const uint8_t  CLACK_WAY_SHIFT              = 4;
     232    static const uint64_t CLACK_WAY_MASK               = ((1ULL<<WAY_INDEX_WIDTH)-1);
     233
    221234    /*
    222      * L1 cache to Memory Cache command types
     235     * P2M command types
    223236     */
    224237    enum
     
    231244
    232245    /*
    233      * Memory Cache to L1 cache command types
     246     * M2P command types
    234247     */
    235248    enum
     
    240253      TYPE_MULTI_INVAL      = 2,
    241254      TYPE_MULTI_INVAL_DATA = TYPE_MULTI_INVAL,
    242       TYPE_MULTI_INVAL_INST = 3,
    243       TYPE_CLEANUP_ACK      = 4,
    244       TYPE_CLEANUP_ACK_DATA = TYPE_CLEANUP_ACK,
    245       TYPE_CLEANUP_ACK_INST = 5
     255      TYPE_MULTI_INVAL_INST = 3
    246256    };
    247257
     258    /*
     259     * CLACK command types
     260     */
     261    enum
     262    {
     263      TYPE_CLACK      = 0,
     264      TYPE_CLACK_DATA = TYPE_CLACK,
     265      TYPE_CLACK_INST = 1
     266    };
     267
    248268    enum flit_field_e
    249269    {
    250       FROM_L1_TYPE,
    251       FROM_L1_EOP,
    252       FROM_L1_BC,
     270      P2M_TYPE,
     271      P2M_EOP,
     272      P2M_BC,
    253273
    254274      CLEANUP_DEST,
     
    261281      MULTI_ACK_UPDT_INDEX,
    262282
    263       FROM_MC_TYPE,
    264       FROM_MC_EOP,
    265       FROM_MC_BC,
     283      M2P_TYPE,
     284      M2P_EOP,
     285      M2P_BC,
    266286
    267287      MULTI_INVAL_DEST,
     
    278298      MULTI_UPDT_DATA,
    279299
    280       CLEANUP_ACK_DEST,
    281       CLEANUP_ACK_SET,
    282       CLEANUP_ACK_WAY,
     300      CLACK_TYPE,
     301
     302      CLACK_DEST,
     303      CLACK_SET,
     304      CLACK_WAY,
    283305
    284306      BROADCAST_BOX,
     
    291313      switch(field)
    292314      {
    293         GET_FIELD(flit,FROM_L1_TYPE);
    294         GET_FIELD(flit,FROM_L1_EOP);
    295         GET_FIELD(flit,FROM_L1_BC);
     315        GET_FIELD(flit,P2M_TYPE);
     316        GET_FIELD(flit,P2M_EOP);
     317        GET_FIELD(flit,P2M_BC);
    296318        GET_FIELD(flit,CLEANUP_DEST);
    297319        GET_FIELD(flit,CLEANUP_SRCID);
     
    301323        GET_FIELD(flit,MULTI_ACK_DEST);
    302324        GET_FIELD(flit,MULTI_ACK_UPDT_INDEX);
    303         GET_FIELD(flit,FROM_MC_TYPE);
    304         GET_FIELD(flit,FROM_MC_EOP);
    305         GET_FIELD(flit,FROM_MC_BC);
     325        GET_FIELD(flit,M2P_TYPE);
     326        GET_FIELD(flit,M2P_EOP);
     327        GET_FIELD(flit,M2P_BC);
    306328        GET_FIELD(flit,MULTI_INVAL_DEST);
    307329        GET_FIELD(flit,MULTI_INVAL_SRCID);
     
    315337        GET_FIELD(flit,MULTI_UPDT_BE);
    316338        GET_FIELD(flit,MULTI_UPDT_DATA);
    317         GET_FIELD(flit,CLEANUP_ACK_DEST);
    318         GET_FIELD(flit,CLEANUP_ACK_SET);
    319         GET_FIELD(flit,CLEANUP_ACK_WAY);
     339        GET_FIELD(flit,CLACK_TYPE);
     340        GET_FIELD(flit,CLACK_DEST);
     341        GET_FIELD(flit,CLACK_SET);
     342        GET_FIELD(flit,CLACK_WAY);
    320343        GET_FIELD(flit,BROADCAST_BOX);
    321344        GET_FIELD(flit,BROADCAST_SRCID);
     
    330353      switch(field)
    331354      {
    332         SET_FIELD(flit,value,FROM_L1_TYPE);
    333         SET_FIELD(flit,value,FROM_L1_EOP);
    334         SET_FIELD(flit,value,FROM_L1_BC);
     355        SET_FIELD(flit,value,P2M_TYPE);
     356        SET_FIELD(flit,value,P2M_EOP);
     357        SET_FIELD(flit,value,P2M_BC);
    335358        SET_FIELD(flit,value,CLEANUP_DEST);
    336359        SET_FIELD(flit,value,CLEANUP_SRCID);
     
    340363        SET_FIELD(flit,value,MULTI_ACK_DEST);
    341364        SET_FIELD(flit,value,MULTI_ACK_UPDT_INDEX);
    342         SET_FIELD(flit,value,FROM_MC_TYPE);
    343         SET_FIELD(flit,value,FROM_MC_EOP);
    344         SET_FIELD(flit,value,FROM_MC_BC);
     365        SET_FIELD(flit,value,M2P_TYPE);
     366        SET_FIELD(flit,value,M2P_EOP);
     367        SET_FIELD(flit,value,M2P_BC);
    345368        SET_FIELD(flit,value,MULTI_INVAL_DEST);
    346369        SET_FIELD(flit,value,MULTI_INVAL_SRCID);
     
    354377        SET_FIELD(flit,value,MULTI_UPDT_BE);
    355378        SET_FIELD(flit,value,MULTI_UPDT_DATA);
    356         SET_FIELD(flit,value,CLEANUP_ACK_DEST);
    357         SET_FIELD(flit,value,CLEANUP_ACK_SET);
    358         SET_FIELD(flit,value,CLEANUP_ACK_WAY);
     379        SET_FIELD(flit,value,CLACK_TYPE);
     380        SET_FIELD(flit,value,CLACK_DEST);
     381        SET_FIELD(flit,value,CLACK_SET);
     382        SET_FIELD(flit,value,CLACK_WAY);
    359383        SET_FIELD(flit,value,BROADCAST_BOX);
    360384        SET_FIELD(flit,value,BROADCAST_SRCID);
Note: See TracChangeset for help on using the changeset viewer.