270 likes | 380 Views
18/08/2009. GeNoLator – Generic Network Simulator Final Presentation. Students: Gal Ben-Haim, Dan Blechner Supervisor: Isask'har Walter Winter 08/09. Agenda. Background Project Goals Project Overview Network Architecture SW Architecture Conclusion. Key Definitions.
E N D
18/08/2009 GeNoLator – Generic Network Simulator Final Presentation Students: Gal Ben-Haim, Dan Blechner Supervisor: Isask'har Walter Winter 08/09
Agenda • Background • Project Goals • Project Overview • Network Architecture • SW Architecture • Conclusion GeNolator - QNoC Simulator
Key Definitions • QoS – Quality of Service. • Network Object – any network component (router, node, link). • Packet – data/control message from one network object to another. • Flit – Packet’s building block, smaller group of bits. • S.L – Service Level. GeNolator - QNoC Simulator
Background • Today - SOC (System On Chip) use BUS for inner chip communication. • Future - QNoC (QoS Network on Chip) - revolutionary communication protocol for SOC. • QNoC - experimental design, depends heavily on simulation for development and methodologies testing. GeNolator - QNoC Simulator
Background - QNoC diagram GeNolator - QNoC Simulator
The Need • Current solution - general network simulator, licensed, expensive, slow, many patches. • Our Solution - open source, fast, dedicated QNoC simulator. GeNolator - QNoC Simulator
Project Goals • Creating an open source generic simulator for QNoC • High Modularity • Maximum flexibility (minimum fixed parameters) • Full Documentation • Verification & Evaluation • Simulator will be the base for future QNoC implementations simulations. GeNolator - QNoC Simulator
Architectural Design • Event-driven. • All events implemented using messages • Built from QNoC’s basic building blocks: generator, sink, link and router. • System definitions read from external file. • Packets randomly generated in generator with random sink destinations. • Message sending is based on credits. • Every generation, transmission and reception of packets is documented in output file. GeNolator - QNoC Simulator
GENERATOR GENERATOR IN IN IN IN IN IN IN IN OUT OUT OUT OUT OUT OUT OUT OUT ROUTER ROUTER Network Architecture SINK MSG LINK SINK LINK MSG MSG GeNolator - QNoC Simulator
Software Architecture User input (ini file) Init (building database) Network Simulation Output File GeNolator - QNoC Simulator
SW Arch. – Network Simulation EVT time:xx EVT time:xx EVT time:xx EVT time:xx EVT time:xx LOG (output file) Event Queue EVT time:xx EVT time:xx EVT time:xx Sink generator Router Link EVT time:xx GeNolator - QNoC Simulator
Node Virtual Init ( ); Virtual handle_msg ( ); Get_id ( ); Get_xy ( ); …… Router Init ( ); handle_msg ( ); Routing_func ( ); Check_route ( ); …… Sink Init ( ); handle_msg ( ); Receive_msg ( ); Link Init ( ); handle_msg ( ); Get_latency ( ); Get_bw ( ); …… Generator Init ( ); handle_msg ( ); Generate_pkt ( ); Inc_credits ( ); …… Class Diagram GeNolator - QNoC Simulator
Event list Insert_event ( ); Delete_event ( ); static list<pEvent> ev_list; …… Packet Get_type ( ); Get_sl ( ); List<pFlit> flits_; …… Flit Get_type ( ); Get_sl ( ); …… Event Get_type ( ); Ger_sndr ( ); …… Class Diagram GeNolator - QNoC Simulator
Event Get_type ( ); Ger_sndr ( ); …… Event list Insert_event ( ); Delete_event ( ); …… EVT time:xx EVT time:xx EVT time:xx EVT time:xx EVT time:xx Event Queue (Event Driven Simulation Engine) • control and advance trough simulation. • Store all Events: flit arrived, try to send flit, credits messages and more. • Events ordered by future execution time. GeNolator - QNoC Simulator
Generator • Generates packets - length, destination, sending time. • statistical function (uniformly distributed) calculates length and send time. • Control (generate packet, send flit) by events. Generator Init ( ); handle_msg ( ); Generate_pkt ( ); Inc_credits ( ); …… GeNolator - QNoC Simulator
Sink Init ( ); handle_msg ( ); Receive_msg ( ); Sink • Receives flits, assembles it to packets and writes to log. Packet Get_type ( ); Get_sl ( ); …… Flit Get_type ( ); Get_sl ( ); …… GeNolator - QNoC Simulator
Link • Connects between any 2 other network objects (generator, sink, router). • Link simulation based on user input of BW, latency, basic time unit (for link busy calculation). Link Init ( ); handle_msg ( ); Get_latency ( ); Get_bw ( ); …… GeNolator - QNoC Simulator
Router • 4 inputs, 4 outputs. Routes flits according to XY routing function, S.L priority, and round robin to prevent starvation. • Load balance of link partner is based on credits. • Enables QoS by giving routing priority to high S.L flits above low S.L flits. Router Init ( ); handle_msg ( ); Routing_func ( ); Check_route ( ); …… GeNolator - QNoC Simulator
Simulator Modularity • Adding functionality to simulated hardware is very easy. • Example1: changing routing algorithm • Replace ‘routing_func’ method in router.cpp with new implementation • Example2: add more S.L: • Change defined SL_num parameter in global.h • Example3: change link modulation: • Replace ‘get_delay’ method implementation in link.cpp GeNolator - QNoC Simulator
Coding Procedures • VIRTUAL functions in parent classes - enforce rules on future code additions • Using standard STL library • Event Driven, no polling • Emphasis on faster run time: • Not using managed code (simple C++) • Simple hierarchies • Using initializer list feature • Return Value Optimization (RVO) • Inlining (more memory, less run rime) GeNolator - QNoC Simulator
GENERATOR Output log example 2 1 4 • Simple Network setup: • Part of the log (all events shown) [time] [node_id] [action performed] • 488.943 - node_2: routing FLIT from node:4 to node:5 • 488.943 - node_5: passing FLIT from node:2 to node:3 • 488.944 - node_1: sent flt type=2 of pkt 31 to link node_id=4 • 488.944 - node_3: received flit type=1 • 488.944 - node_1: increasing credits by 5 • 488.944 - node_4: passing FLIT from node:1 to node:2 • 488.945 - node_2: routing FLIT from node:4 to node:5 • 488.945 - node_5: passing FLIT from node:2 to node:3 • 492.791 - node_1: generated pkt node_id=1 sl=1 length=4 dst=3 • 492.791 - node_1: sent flt type=0 of pkt 32 to link node_id=4 • 492.791 - node_4: passing FLIT from node:1 to node:2 • 498.943 - node_3: received flit type=1 3 5 ROUTER SINK GeNolator - QNoC Simulator
Work Left • Testing & verification • Separating log messages to layers by importance • Writing project book GeNolator - QNoC Simulator
Conclusions • The most complicated module is the router – should be built at the beginning. • Starting from a simple simulator helps to better understand the system. • Writing your own simulator allows for fast/easy feature addition and maintains structural hierarchy. GeNolator - QNoC Simulator
Points For Future Expansion • Generator - Add different statistic generation models • Router – Support more S.L, add different routing function, links load balancing. • Multithreading ? • Log – interactive display to support our logging layers GeNolator - QNoC Simulator
Gratitude's • Thanks to Zigi for helping and mentoring us through the different stages of the project. • Thanks to SW lab for the facilities. • Thanks to Ilana. • Project is based on the article: “QNoC: QoS architecture and design process for Network on Chip” by Evgeny Bolotin, Israel Cidon, Ran Ginosar and Avinoam Kolodny. • Diagrams are borrowed from QNoC2003 article • link to article: http://webee.technion.ac.il/matrics/papers/QNoC-Dec2003.pdf GeNolator - QNoC Simulator
Backup1 – Router Architecture GeNolator - QNoC Simulator
Backup2 – Router Data Flow GeNolator - QNoC Simulator