Difference between revisions of "MC System"

From NaplesPU Documentation
Jump to: navigation, search
(NUPLUS tile)
(NUPLUS tile)
Line 10: Line 10:
  
 
The tile implements a '''Cache controller''', called ''l1d_cache'', which interfaces the core to the memory system. The Cache controller exploits three Network interface virtual channels dedicated to the coherence system (ID 0 to 2), providing an abstracted view of the coherence to the core. For further details of the module and of the coherence system refer to [[Coherence|Coherence architecture]] section.
 
The tile implements a '''Cache controller''', called ''l1d_cache'', which interfaces the core to the memory system. The Cache controller exploits three Network interface virtual channels dedicated to the coherence system (ID 0 to 2), providing an abstracted view of the coherence to the core. For further details of the module and of the coherence system refer to [[Coherence|Coherence architecture]] section.
 +
 +
 +
always @( ni_n2c_mes_service_valid, ni_n2c_mes_service, n2c_sync_message, bm_c2n_mes_service_consumed, sc_account_consumed, n2c_mes_service_consumed, io_intf_message_consumed ) begin
 +
  ...
 +
  if (ni_n2c_mes_service_valid) begin
 +
    if( ni_n2c_mes_service.message_type == HOST ) begin
 +
      bm_n2c_mes_service.data  = ni_n2c_mes_service.data;
 +
      bm_n2c_mes_service_valid = ni_n2c_mes_service_valid;
 +
      c2n_mes_service_consumed = bm_c2n_mes_service_consumed;
 +
    end else if ( ni_n2c_mes_service.message_type == SYNC ) begin
 +
      if ( n2c_sync_message.sync_type == ACCOUNT ) begin
 +
        ni_account_mess          = n2c_sync_message.sync_mess.account_mess;
 +
        ni_account_mess_valid    = ni_n2c_mes_service_valid;
 +
        c2n_mes_service_consumed = sc_account_consumed;
 +
    end else if ( n2c_sync_message.sync_type == RELEASE ) begin
 +
        n2c_release_message      = n2c_sync_message.sync_mess.release_mess;
 +
        n2c_release_valid        = ni_n2c_mes_service_valid;
 +
        c2n_mes_service_consumed = n2c_mes_service_consumed;
 +
    end
 +
  ...
  
 
== MC tile ==
 
== MC tile ==

Revision as of 13:35, 17 May 2019

The many-core version of the project provides different type of tiles, although all share the same network- and coherence-related components. On the networking side, a generic tile of the system features a Network Interface module and a hardware Router, both described in Network architecture section.

The nu+ many-core features a shared-memory system, each nu+ core has a private L1 data cache, while the L2 cache is spread all over the instantiated tile along with a Directory Controller module which handles and stores coherence information for cached memory lines. This component is further described in Coherence architecture section.

NUPLUS tile

The NUPLUS tile mainly equips a nu+ GPGPU core, described in Nu+ GPGPU core section, and components used to interface the core with both networking and coherence systems. The following figure depicts a block view of the NUPLUS tile:

NU.jpg

The tile implements a Cache controller, called l1d_cache, which interfaces the core to the memory system. The Cache controller exploits three Network interface virtual channels dedicated to the coherence system (ID 0 to 2), providing an abstracted view of the coherence to the core. For further details of the module and of the coherence system refer to Coherence architecture section.


always @( ni_n2c_mes_service_valid, ni_n2c_mes_service, n2c_sync_message, bm_c2n_mes_service_consumed, sc_account_consumed, n2c_mes_service_consumed, io_intf_message_consumed ) begin
 ...
 if (ni_n2c_mes_service_valid) begin
   if( ni_n2c_mes_service.message_type == HOST ) begin
     bm_n2c_mes_service.data  = ni_n2c_mes_service.data;
     bm_n2c_mes_service_valid = ni_n2c_mes_service_valid;
     c2n_mes_service_consumed = bm_c2n_mes_service_consumed;
   end else if ( ni_n2c_mes_service.message_type == SYNC ) begin
      if ( n2c_sync_message.sync_type == ACCOUNT ) begin
        ni_account_mess          = n2c_sync_message.sync_mess.account_mess;
        ni_account_mess_valid    = ni_n2c_mes_service_valid;
        c2n_mes_service_consumed = sc_account_consumed;
   end else if ( n2c_sync_message.sync_type == RELEASE ) begin
        n2c_release_message      = n2c_sync_message.sync_mess.release_mess;
        n2c_release_valid        = ni_n2c_mes_service_valid;
        c2n_mes_service_consumed = n2c_mes_service_consumed;
   end
 ...

MC tile

MC.jpg

H2C tile

H2C.jpg

NONE tile

HT tile

Described in Heterogeneous Tile section.