This project simulates the Optical plus Electrical Network on Chip (NoC) architecture SPACX using SystemC TLM 2.0
Find a file
2025-01-02 16:42:56 +01:00
obj The commit with initial architectural setup for SPACX 2025-01-02 16:42:56 +01:00
out The commit with initial architectural setup for SPACX 2025-01-02 16:42:56 +01:00
scripts The commit with initial architectural setup for SPACX 2025-01-02 16:42:56 +01:00
src The commit with initial architectural setup for SPACX 2025-01-02 16:42:56 +01:00
input_features.txt The commit with initial architectural setup for SPACX 2025-01-02 16:42:56 +01:00
main.cpp The commit with initial architectural setup for SPACX 2025-01-02 16:42:56 +01:00
Makefile The commit with initial architectural setup for SPACX 2025-01-02 16:42:56 +01:00
README.md The commit with initial architectural setup for SPACX 2025-01-02 16:42:56 +01:00
weight_kernels.txt The commit with initial architectural setup for SPACX 2025-01-02 16:42:56 +01:00

SPACX hybrid Network on Chip (NoC) Simulation

This project simulates the Optical plus Electrical Network on Chip (NoC) architecture SPACX using SystemC TLM 2.0

Prerequisites

  • SystemC (version 2.3.3 or later)
  • C++ compiler supporting C++17 or later (e.g., GCC 7+ or Clang 5+)
  • Make

Setup

  1. Install SystemC on your system.

  2. Set the SYSTEMC_HOME environment variable to point to your SystemC installation directory:

    export SYSTEMC_HOME=/path/to/your/systemc/installation
    
    

Compilation

make

Output

./out/simulation

or

make run

Project directory structure

SPACX

  • src
    • GB
      • Global_Buffer.h
      • Global_Buffer.cpp
    • Interposer
      • Interposer_Interface.h
      • Interposer_Interface.cpp
    • Chiplet
      • Chiplet_Interface.h
      • Chiplet_Interface.cpp
    • Optical_Electrical
      • O_E_converter.h
      • O_E_converter.cpp
    • PE
      • Processing_Element.h
      • Processing_Element.cpp
  • Utils
    • configuration.h
    • noc_logger.h
    • noc_logger.cpp
    • token_manager.h
  • scripts
    • input_feature.py
    • weight_kernal.py
  • out
  • obj
  • main.cpp
  • Makefile
  • README.md

Log files

The log files are in

  • out/report.log : general communication like token transfer
  • out/gb_comm.log : communication to and from global buffer
  • out/interposer_comm.log : communication to and from interposer interface
  • out/chiplet_comm.log : communication to and from chiplet interface
  • out/oec_comm.log : communication to and from OEC
  • out/pe_comm.log : communication to and from PE

SPACX initial implementation

  • The Global Buffer is initializing all the transactions
  • In the beggining GB generates weights and input features as matrices and convert them to payloads
  • The GB is connected to interposer interface to accept the payload through TLM blocking communication
  • The address is the wavelegth, which is encoded into the payload and transmitted
  • The interposer interface simply diverts the payload to chiplet interface again as TLM blocking communication
  • The chiplet interface is connected to all PEs in a chiplet through the optical to electrical converter
  • The chiplet interface copies the data to the curresponding OEC based on the address that is the wavelength
  • Once the data is in the OEC, they are simply forwarding them to the PEs using the TLM blocking communication
  • In PEs the data is stored into 2 fifos, the weight buffer and the buffer for input features
  • The PE then multiplies it and gets the Psum stored into the accumulation buffer
  • once the psum is ready, PE weights for the token, and then gives the data to the OEC
  • OEC then transfers the data to the chiplet interface, and then to interposer interface in backward
  • This way the Psums are back at global buffer through multiple TLM blocking transport

SPACX architecture and its operation

  1. SPACX Overview: SPACX leverages photonic interconnects for efficient data communication in chiplet-based architectures, focusing on the needs of DNN inference, such as broadcast communication. It uses a hierarchical design: • Global waveguide: Connects all chiplets. • Local waveguide: Exists within each chiplet for intra-chiplet communication.
  2. Key Components: Chiplets and Processing Elements (PEs): • Each chiplet has multiple PEs (e.g., 8 per chiplet in the example). • PEs perform computations like Multiply-and-Accumulate (MAC) for DNN workloads. • Each PE has: o Two receivers for incoming broadcast data (local and global). o One transmitter for sending computed results back to the global buffer (GB). Wavelengths and Waveguides: • Data transmission uses wavelength-division multiplexing (WDM). • Wavelength allocation: o Global (cross-chiplet) wavelengths: Used for broadcasting the same data to corresponding PEs across all chiplets. o Local (single-chiplet) wavelengths: Used for intra-chiplet broadcasts and communication between chiplet PEs and the GB. Optical Splitters and Filters: • Optical splitters: Split light (data) across multiple destinations by controlling the split ratio. Used for broadcasts. • Optical filters: Select or forward specific wavelengths for targeted communication.
  3. Communication Mechanisms: A. Cross-Chiplet Broadcast (Global Waveguide): • Example: Data for PE0 across all chiplets is sent using wavelength λ0. • Process: o The GB modulates data onto λ0. o Splitters in the global waveguide distribute power to each chiplet's local waveguide. o Local waveguides deliver the data to PE0 on each chiplet. B. Single-Chiplet Broadcast (Local Waveguide): • Example: Data for all PEs within a single chiplet (e.g., Chiplet0) is sent using wavelength λ8. • Process: o The GB modulates data onto λ8. o Optical filters direct all power of λ8 from the global waveguide to the local waveguide. o Splitters on the local waveguide evenly distribute data to all PEs within Chiplet0. C. PE-to-GB Communication: • Each chiplet's PEs share a single wavelength for sending computed results back to the GB (e.g. λ8 for Chiplet0). • Token-based arbitration ensures orderly transmission: o A token is passed sequentially among PEs, granting transmission access to one PE at a time.