Memory, Network and Transfer
Address-space mapping, data paths, transfer runtime, and NoC delay/energy semantics
Transfer-related instructions map to memory domains, runtime data paths, and NoC costs based on the address-space configuration.
Address Space
All transfer decode decisions are based on the AddressSpace configuration. For each source and destination address, the simulator resolves three things:
Incorrect Mappings
If the address-space mapping is incorrect, the simulator will resolve addresses to the wrong memory region or fail at startup. Verify mappings in Input Files before debugging transfer behavior.
Transfer Types
The simulator decodes each transfer instruction into one of five types based on the source and destination addresses.
MEM_CPY local to local via intra-core bus or dedicated data pathMEM_CPY global to local through NoCMEM_CPY local to global through NoCSEND to another core via inter-core busRECV from another core via inter-core busData Path Selection
For local transfers, the DataPathManager checks configured memory-pair mappings:
- If
(src_mem_id, dst_mem_id)matches a configured dedicated pair, the transfer uses alocal_dedicated_data_path - Otherwise the transfer falls back to
intra_core_bus
Global load/store and inter-core send/receive always use inter_core_bus. Dedicated data paths are defined in transfer_unit_config.local_dedicated_data_path_list.
Transfer Runtime Stages
Each transfer instruction passes through three stages inside the TransferUnit.
Synchronization Through Transfer Path
TAG and WAIT are executed in the TransferUnit runtime path. For the full ISA-level semantics, see Execution and Resource Model.
TAGstoressync_idand attaches it to the nextglobal_store- A tagged
global_storetriggersnotify_write_complete(sync_id)to global memory WAITsendswait_for_writes(sync_id, expected_writes)and blocks untilsync_complete- Consecutive
TAGwithout an intervening tagged store is treated as a fatal invalid sequence
Control Path Split
TAG and WAIT are control opcodes at decode level, but their runtime behavior is implemented by the transfer/network/global-memory path.
For decode and issue details, see Execution and Resource Model.
Last updated on