Ignore:
Timestamp:
Jan 27, 2015, 5:58:08 PM (10 years ago)
Author:
cfuguet
Message:

reconf: vci_local_crossbar: locality of packets coming from the
global network is not checked.

  • This is to allow a physical address space segment to be migrated from a faulty cluster to one of its neighbors. However, when this guess segment is accessed by a core of the host cluster, the request must go to the global network which will immediately return it.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/reconfiguration/modules/vci_local_crossbar/caba/source/src/vci_local_crossbar.cpp

    r932 r933  
    241241                        pkt_t tmp;
    242242                        tmp.readFrom(*input_port[in]);
    243                         if ( (tmp.is_broadcast() and
    244                               r_bc_state[in].read() and
    245                               (r_bc_count[in].read() == out))   or   // broadcast request
    246                              (not tmp.is_broadcast() and
    247                               not is_local( tmp ) and
    248                               (out == m_out_size-1))            or   // to global network
    249                              (not tmp.is_broadcast() and
    250                               is_local( tmp ) and
    251                               (out == route( tmp )) ) )              // to local component
     243
     244                        // broadcast request
     245                        bool bc_req = tmp.is_broadcast() and
     246                                      r_bc_state[in].read() and (r_bc_count[in].read() == out);
     247
     248                        // to global request
     249                        bool gl_req = not tmp.is_broadcast() and (out == m_out_size-1) and
     250                                      not is_local( tmp ) and (in != m_in_size-1);
     251
     252                        // to local request
     253                        bool lc_req = not tmp.is_broadcast() and (out == route( tmp )) and
     254                                      is_local( tmp );
     255
     256                        // to migrated segment request (to local)
     257                        bool mg_req = not tmp.is_broadcast() and (out == route( tmp )) and
     258                                      not is_local( tmp ) and (in == m_in_size-1);
     259
     260                        if ( bc_req or gl_req or lc_req or mg_req )
    252261                        {
    253262                            r_allocated[out] = true;
Note: See TracChangeset for help on using the changeset viewer.