Presentation is loading. Please wait.

Presentation is loading. Please wait.

NetTM FPGA-based processors Martin Labrecque Connections 2010.

Similar presentations


Presentation on theme: "NetTM FPGA-based processors Martin Labrecque Connections 2010."— Presentation transcript:

1 NetTM FPGA-based processors Martin Labrecque Connections 2010

2 NetFPGA NetFPGA is a network card –Virtex II Pro 50 FPGA –4 Gigabit Ethernet ports –1 PCI interface @ 33 MHz –64 MB DDR2 SDRAM @ 200 MHz FPGA can implement any digital circuit Where’s the secret weapon?

3 FPGA Soft processors: processors in the FPGA fabric User uploads program to soft processor Easier to program software than hardware for FPGAs Customizable with accelerators Processor(s) DDR controller Ethernet MAC Process packets in software! Fast enough? Soft Processors in FPGAs

4 The application defines the requirements Home networking (~100 Mbps/link) Edge routing (≥ 1 Gbps/link) Scientific instruments (< 100 Mbps/link) What is NetTM specifically? Performance In Packet Processing

5 Multiprocessor System Diagram Input Buffer Data Cache Output Buffer Synch. Unit packet input packet output Instr. Data Input mem. Output mem. I$ processor 4-threads Off-chip DDR I$ processor 4-threads Where does performance come from?

6 Multithreaded processors? Use concurrent threads to improve throughput Does that impact the software? –Yes, if you want to use multiple threads. Do I have to know how the processor works? –No. How is it programmed then?

7 Sample program void main(void) { while(1) { char* pkt = get_next_packet(); process_pkt(); send_pkt(pkt); } Threads already exist here! Compile by typing ‘make’ Upload to board from host computer Program starts automatically

8 Packet Processing Example packet = get_packet(); … connection = database->lookup(packet); if(connection == NULL) connection = database->add(packet); connection->count++; … global_packet_count++; SINGLE-THREADEDMULTI-THREADED Parallelism in the presence of locking? Atomic packet = get_packet(); … connection = database->lookup(packet); if(connection == NULL) connection = database->add(packet); connection->count++; … global_packet_count++;

9 Packet Processing Example Atomic packet = get_packet(); … connection = database->lookup(packet); if(connection == NULL) connection = database->add(packet); connection->count++; … global_packet_count++; No Parallelism Optimistic Parallelism across Connections Opportunity for Parallelism MULTI-THREADED Allow optimistic parallelism in some critical sections!

10 Hardware Transactional Approach Modify main memory directly: reduce copies, faster commit Data Cache Data processor1 Off-chip DDR processor2 x x Detect conflicts prior to corrupting main memory Undo changes on transaction abort Hardware extracts parallelism for you, for free!

11 System is easy to program in C Parallel threads deliver performance Time to results is within minutes Conclusions Thread1 Thread2 Thread3 Thread4 LOCKS Thread1 Thread2 Thread3 Thread4 TRANSACTIOAL x

12 Questions and Discussion NetThreads v1.0 available online Search for: netfpga+netthreads For NetTM, ask: Martin Labrecque martinL@eecg.utoronto.ca For NetFPGA cluster access, ask: Professor Yashar Ganjali We have lots of machines available for projects We hope to see many projects/build synergy


Download ppt "NetTM FPGA-based processors Martin Labrecque Connections 2010."

Similar presentations


Ads by Google