Link to Poster
Download
Report
Transcript Link to Poster
A Reconfigurable and Programmable
Gigabit Network Interface Card
Jeff Shafer, Hyong-Youb Kim, Paul Willmann, Dr. Scott Rixner
Rice Computer Architecture: http://www.cs.rice.edu/CS/Architecture
Abstract
Hardware Design
Software Design
In this project, we are designing and implementing a gigabit
NIC on a FPGA. This NIC will support research in network
server operating systems and network architecture design
Why are existing NICs insufficient for this research?
Current software programmable NICs (e.g. Alteon
Tigon) are too slow for modern complex offloading tasks
Current ASIC-based NICs have limited functionality and
leave most tasks to the host processor. This architecture
does not scale well to high data rates
Commercial products often use locked or proprietary IP,
limiting our design flexibility
Why do we need a FPGA-based NIC?
FPGA provides maximum flexibility for future research
For architecture research, we need a flexible NIC with
hardware acceleration. This NIC is both reconfigurable
(runs frequent / demanding tasks in hardware) and
programmable (runs infrequent / flexible tasks in
software)
Virtex-II Pro FPGA
2 400 MHz PowerPC processors
MAC controller - Complete
DDR memory controller – Complete
128MB - 1GB DDR Memory
Serial Port Debug – Complete
DMA engine – Pending
Checksum Offloading - Pending
Spartan-IIE FPGA
64-bit/66-MHz PCI interface –
Complete
2MB SRAM - Complete
Event notification - Complete
PowerPC processor runs custom
packet-handling firmware
Interfaces with MAC controller
to send/receive packets
Interfaces with DDR controller
to store bulk frame data
Interfaces with DMA controller
to transfer data to/from host
Interfaces with SRAM over
Spartan bridge to access PCI
control registers
Custom device drivers written for
Linux and FreeBSD
System Architecture
PCI / FPGA Development Board
Ethernet
DDR-SDRAM
(256 MB)
Development Platform
Memory / Control
DDR Controller
PCI
Debug
PLB – 64b / 100 MHz
PLB / OPB Bridge
BRAM Block
Serial Port
Serial Port
DDR
Virtex FPGA
Spartan FPGA
Custom FPGA
Design
RJ-45 Port
Full Duplex
Ethernet
2 GBits/sec
RS-232
(Debug)
Ethernet PHY
(10/100/1000)
UART (OPB Bus)
MAC
Control
Spartan
Bridge
On-Chip Mem
PowerPC
300MHz
32b / 125 MHz
BRAM Block
8b / 125 MHz
32b / 66 MHz
64b / 66 MHz
Ethernet PHY
PCI Interface
PCI Bridge
SRAM
(2MB)
32b /
66 MHz
PROM
(Spartan FPGA)
OS Research
Connection Handoff to NIC
Offload network stack processing to NIC
Reconfigurable NIC allows exploration of hardware /
software mechanisms to accelerate offloading process
Thread Parallelization of Network Stack
Parallel network stacks achieve high network throughput
but have synchronization challenges
Control-synchronous parallel stacks use the OS
scheduler to ensure connections are always managed
by the same thread, eliminating some (but not all) locks
Exploring ways to use NIC to eliminate device queue
lock to enable simultaneous communication among
multiple threads in parallel stacks
PCI Bus (64b / 66 MHz)
Hardware Research
Device Utilization
What NIC architectures scale to support
future high-performance offloading at
multi-gigabit data rates?
Can reconfiguring the FPGA hardware
provide a substantial performance
improvement for different applications? Is
this improvement greater than simply
upgrading the NIC firmware?
Substantial headroom for future
development
Component
Utilization
Slice Registers
4 input LUTs (Logic)
8,257/ 27,392
8,357/ 27,392
30%
30%
BRAMs
Occupied Slices
Global Clocks
Digital Clock Managers
Total Gate Count:
100 / 136
8,573 / 13,696
13 / 16
5/8
6,890,605
73%
62%
81%
62%