2 KiB
2 KiB
Broadcast facility in Ratatoskr
The broadcast communication technique offered by Optical NoC like SPACX is implemented with modification to the original simulator
Changed classes in Ratatoskr
- Flit.h & Flit.cpp
- Additional counter 'int flit_counter': added to the class to track the number of transactions of every flit
- Packet.h & Packet.cpp
- Counter 'int packet_counter': to track the number of transactions of the packets based on the packet id and this associated counter
- ProcessingElementVC.cpp
- Increments the packet_counter each time the PE receives a packet corresponding to its id and removes the packet only when the packet_counter value is equal to the NUMBER_OF_TRANSACTIONS
Changes to SPACX Modules
- NetworkInterfacePE.cpp
- Increments the flit_counter each time the NI receives a flit corresponding to its id and remove from the queue inTransmit only when the flit_counter value is equal to the NUMBER_OF_TRANSACTIONS
- Sends the packet to PE as soon as it receives a packet
Implementation
- The flit_counter and packet_counter are declared in Flit.h and Packet.h and initiated in the respective constructors
- The variable NUMBER_OF_TRANSACTIONS is used to track the number of flits and packets received to NI or PE
- The flit_counter tracks the number of flits received by NI and the packet_counter tracks the number of packets received by PE
- The flit and packet will be removed only after NUMBER_OF_TRANSACTIONS is reached
- This ensures broadcasting of same packet to every PE in same or across different chiplets
- A slight path delay between the PEs or chiplets ensures any race condition of updating the counter at the same time by the NI or PE is avoided so that packet or flit is updated only by the final receiver.
Logging
- Log statements are added to every files to see the updating of counters and their removal to identify who and when the packets and flits are handled