參考資料:
1.CPU、網絡處理器(network processor,簡稱NP)、ASIC和FPGA簡介
感悟:結構決定功能。先分析系統應該具備的功能,在設計其結構。
ASIC(專用集成電路):是指依產品需求不同而定制化的特殊規格集成電路,由特定使用者要求和特定電子系統的需要而設計、制造。即:定制化芯片。ASIC很“專一”,只做一件事,所以就會比CPU、GPU(通用芯片)等能做很多件事的芯片在某件事上做的更好(萬能工具的效率永遠比不上專用工具),實現更高的處理速度和更低的能耗。但相應的,ASIC的生產成本也非常高。
FPGA:現場可編程門陣列。它是一種集成電路,可以“現場”編程,按預期設計工作。這意味着它可以作為一個微處理器,或者一個加密單元,或者顯卡,甚至可以同時使用這三個功能。顧名思義,FPGA是現場可編程的。因此,與半導體鑄造廠不同,作為微處理器的FPGA可以重新編程,在現場充當顯卡。在FPGA上運行的設計通常使用硬件描述語言(如VHDL和Verilog)創建。
ASIC和FPGA的區別:
FPGA可重構電路。FPGA可以用不同的設計進行重新配置。他們甚至有能力重新配置芯片的一部分,而芯片的其余部分仍在工作!這個特性被廣泛應用於數據中心的加速計算。
ASIC永久電路。一旦特定於應用的電路用膠帶固定在硅上,它就不能改變。電路在其整個工作壽命內也將同樣工作。
ASIC的邏輯功能不能改變成其它任何東西,因為它的數字電路是由永久連接的門和硅觸發器組成的。FPGA可以重新編程,在現場充當顯卡、微處理器等。可以考慮使用樂高積木建造城堡與使用混凝土建造城堡。前者類似於FPGA,而后者類似於ASIC。你可以重復使用樂高積木創造一個不同的設計,但混凝土城堡是永久性的。
2.交換機的硬件處理具有速度快、成本低和功耗小等優點。
硬件靈活性和速度的對比
名稱 | 速度 | 靈活性 |
---|---|---|
交換機芯片 | 比CPU處理速度快兩個數量級 | 遠低於CPU和NP等可編程器件 |
網絡處理器(network processor,簡稱NP) | 比CPU處理速度快一個數量級 | 可編程 |
CPU | 可編程 |
使用CPU處理:利用交換機CPU處理轉發規則,可以避免硬件靈活性差的問題。由於CPU處理數據包的能力變得越來越強,商用交換機很自然地也會采用這種更強的CPU。這樣,在軟件處理轉發速度與硬件差別變小的同時,靈活處理轉發規則的能力得到提升。
使用NP處理:由於NP專門用來處理網絡的各種任務,如數據包轉發、路由查找和協議分析等,因此在網絡處理方面,NP比CPU具有更高效的處理能力。
硬件處理模型:RMT、FlowAdapter
3.軟件處理:在處理器(CPU、NP)上運行轉發的程序
軟件處理的優點:軟件方式可以最大限度地提升規則處理的靈活性,同時又能避免由於硬件自身內存較小、流表大小受限、無法有效處理突發流等問題。
軟件處理的缺點:速度低。
4.軟硬件轉發
用cpu運行經過專門設計的程序,把數據包緩存於cpu的內存中,實現數據包的循徑,轉發的,就是軟件轉發。
硬件轉發往往指的是一些專門設計的asic硬件芯片。完成軟件轉發同樣的事情,但執行效率高得多。轉發率可以高出幾個量級。所以軟件轉發往往是相對於硬件ASIC轉發的泛稱。
總結:
有人想在通用的CPU上實現Match-Action,但是基於速度方面的考慮,我們采用專用的硬件實現並行轉發,專用交換機的芯片比CPU快兩個數量級,比NPU快一個數量級,並且這個趨勢看上去是無法改變的。因此,我們思考:在流表內存受限的情況下,如何在硬件上實現Match-Action,並充分利用流水技術和並行思想(以提升速度)?(RMT)