1. 程式人生 > >COTEON data flow 翻譯,圖參考文件

COTEON data flow 翻譯,圖參考文件

1 介紹

OCTEON處理器包含了若干功能塊,他們一起工作管理包流通過處理器。在這個文件,處理器指的是完整的晶片,擁有所有的不同功能的硬體塊,晶片上的所有核。

這個章節分為不同的部分:

1)  章節2-包流縱覽,一個典型包流程被討論,展示不同的功能塊怎麼協同工作去創造一個快速包處理。

2)  章節3-硬體特性加速包處理,關鍵硬體加速特性被討論:

(1)      包分類和優先的硬體管理

(2)      硬體快取管理

(3)      包連線鎖

(4)      包序列管理

3)  排程/同步/序化單元介紹,SSO提供必要的能力

SSO單元提供下面的關鍵功能

(1)      排程:根據QOS優先權排程包處理

(2)      同步:通過提供包連線鎖支援同步,這些鎖可以被用來保護臨界區,或序列包轉發;

(3)      序化:

2 包流總覽

這個部分介紹關鍵功能塊在包處理中的使用,和一個包如何穿過處理器。在接下來的圖中,說明包流穿過一個OCTEON處理器。前三個圖書包流的總覽。而後的圖,包流被細分解為一系列分開的圖。總覽圖和細節圖概括了同樣的事實,但是匯流排被引入更容易說明細節的圖。

在這些圖中有兩個Psedo blocks。一個是“simplified packet interface pseudo block”,另一個是”packetinput pseudo block”。這兩個pseudo block被包括在幫助閱讀者理解OCTEON處理器的各種功能。

1)  simplified packet interface pseudo block 是一個一般的接受和轉發功能的表現,包介面可以說下面任何一個:XAUI,PCIE,SPI-4.2,PCI/PCI-X/SGM2,RGM2,GM2,M2等待。simplifiedpacket interface pseudo block已經被極大簡化和包含兩個子塊,被標註為TX埠和RX埠。

2)  packet input pseudo block包含兩個塊,一個是PIP一個是IPD。這個塊從simplifiedpacket interface接收和處理資料。

包流以三個不同的部分在下面的圖中展示:

1)  包入

2)  SSO和核心處理

3)  包出

注意:這些圖簡化了包流,在真實的系統中,許多活動是平行執行的。例如,IPD預取包的同時仍然在處理當前的包。有很多特殊的特性沒有被描述在這個章節。

注意:這些圖假定包沒有被丟棄直到可配置的RED,或包錯。在RED裡,包可以被丟棄如果緩衝被填滿。

注意:文件中的指標是實體地址,SDK函式如cvmx_pow_work_request_sync()轉換實體地址到虛擬地址,若需要的話。

IPBD=IPD匯流排

PKOB=PKO匯流排

POB=包出匯流排

I/O匯流排包含兩個匯流排:IOBI(輸入)IOBO(輸出)。接收資料直接從介面RX到IPD通過IOBI,不需要結果IOB(I/O BRIAGE)

1)  介面RX接收到包後,檢查錯誤,它通過IOBI傳遞這個包到IPD單元,IPD和PIP共享這個資料。這兩個單元一起工作處理這個輸入包

2)  在PIP對這個包進行解析,包括檢查軟體配置,它計算資料是否需要被IPD

3)  若IPD沒有丟棄這個包,它從FPA單元申請一個WQEBUFFER和包資料BUFFER。

4)  IPD寫WQE區域到WQE BUFFER,寫包資料到包資料BUFFER

5)  IPD執行add_work操作增加WQE指標到SSO段元的QOS佇列

注意:操作步驟3分配了兩個BUFFER,一個是WQE BUFFER,一個是PACKET DATA BUFFER,在釋放時是分開釋放的後面流程中需要特別注意。


SSO排程WQE是基於QOS優先權,進入次序等。

6a 6b.核心通過get_work操作從SSO單元中獲取新的WQE指標。WQE包含了包資料BUFFER指標。

7 核心處理包資料,讀寫,包資料在L2/DRAM中。

8 處理完畢包資料後,核心傳送包資料BUFFER指標和資料偏移到PKO單元的出包佇列。佇列配置指明出包的埠和包的優先權。若需要,包的輸出安裝包的進入順序。

9 核心釋放WQE BUFFER到FPA。

注意步驟8PKO傳遞了兩個引數,一個是PACKET DATABUFFER,一個是DATA OFFSET; 步驟9這裡釋放的是WQE而不是DATA BUFFER


10 PKO通過DMA將資料從L2/DRAM中的包資料BUFFER到自己的內部記憶體。(由於PKO擁有PACKET DATA BUFFERADDRESSDATA OFFSET,所有PKO可以直接在L2/DRAM中獲取資料

11 PKO選擇性的增加TCP/UDP的檢驗和,然後從它的內部記憶體傳送包資料到OUTPUT埠。TX介面將轉發這個包。然後PKO通告核心這個包已經發送。

12 PKO釋放包資料BUFFER到FPA(注意這裡釋放了PACKET DATA BUFFER

接下來的圖展示了和上面圖相同的事實,但是匯流排被引入。理解這個資訊對展示很有用:

通過想象處理器中的準確的資料流過程,可以經常能編碼效能上的問題。注意那個特殊的匯流排,和DMA裝置提供的資料轉發將保持IOB變得過載。

下面圖片中的英文和上面的基本雷同,不再做翻譯,請特別注意資料是通過不同的匯流排在各個單元間進行傳輸。

3 硬體特性加速包處理

在你學習包處理細節之前,有幾種非常重要的OCTEON特性,這些騰信對加速包流非常必要,他們是:

3.1 分類和優先權

這個是OCTEON處理器的關鍵特性。硬體分類和優先權包括:

1)  包進入處理器時,被PKI被分類和給一個QOS優先權,然後包資料被放入到SSO單元裡的指定的QOS輸入佇列。QOS的輸入佇列是高可配的。

2)  核心從SSO單元請求一個包。SSO返回一個最高優先權的排程包。當核心收到這個包時,它已經準備好處理它。核心不檢查包的優先順序。它永遠不會收到一個正在等待鎖的包。

3)  當包處理完畢後,核心把包放到PKO的輸出佇列中等待轉發。PKO的輸出佇列被對映到一個指定的輸出埠。PKO輸出佇列的優先權是高可配的。

通過允許核心以並行的方式處理包,這個硬體處理刪除了包流的瓶頸,不需要分類和排列包的優先順序。

這是包優先順序硬體管理的簡化檢視。SSO單元和其他硬體單元提供一個強有力的和靈活的排程能力。這些能力在相應的章節被仔細描述。

3.2 BUFFER申請單元

包流非常依賴記憶體的BUFFER。FPA(FREE POLL ALLOCATOR)單元在OCTEON處理上的其他硬體單元管理記憶體BUFFER。在系統初始化的時候,這些BUFFER被從L2/DRAM申請,同時被商定到高達8個BUFFER池中。通常每個BUFFER池有相同的大小,而且被用作相同的目的.例如,有分開的池為兩種不同型別的BUFFER,下面他們將被介紹:PACKET DATA BUFFER和WORK QUEUE ENTRY BUFFER.

每個池的大小依賴於池的數量。池的大小配置時應該格外小心,目的總要有可用的BUFFER。

FPA章包含配置BUFFER的細節。

3.2.1 分配BUFFER

一個硬體單元,像IPD或核心,可以從FPA中的指定的池請求BUFFER。FPA將BUFFER指標從池上取下,把地址扔給請求者。這個操作較分配一個BUFFER。

Buffer可以預先分配和儲存,以等待請求者需要。這個預分配被IPD和核心都在使用以增加包的處理速度。

3.2.2 釋放BUFFER

很多硬體單元可以把一個BUFFER指標返回給FPA池。FPA池得到這個BUFFER指標,將它插入到池中。這個操作較釋放BUFFER。

3.3 包連線鎖

鎖的硬體管理去保護臨界區。這些鎖和鎖不是同一類的:他們被直接連線到包的處理,所以被叫做包連線鎖。包處理過程中,如程式碼的臨界區,如讀編輯TCP/IP控制塊,必須用鎖保護。在每個流中只有一個TCP/IP控制塊。訪問這個鎖必須安裝包的進入順序,沒有隨機順序或先來先服務。硬體鎖裝置.

硬體包連線鎖特性包括:

1)  減負軟體:硬體鎖通過減負軟體改進系統效率:SSO負責批准鎖和計算出哪個包是下一個。

2)  原子訪問:僅僅一個包在同一時間才能獲取到該鎖。

3)  鎖被授予包進入次序: 通常在收到包的時候臨界區應該被鎖住,而不是請求鎖的順序。SSO提供硬體鎖執行規則。

4)  非同步鎖獲得:另外一個特性是非同步鎖的獲得。在核心需要所得時候,核心可以請求鎖,結束包處理,然後檢查鎖是否已經獲得。當鎖被獲得核心將被通知。

包連線鎖被用作非同步包處理。

注意:核心在同一時刻僅僅能夠有一個包分配,在同一時刻核心也僅僅能保持/請求一個包連線鎖。

3.4 包序

當並行處理被請求的時候,多核心可以一齊工作處理相同流的多個包。當包改變處理階段時,或需要訪問硬體鎖,SSO將強迫包安裝進入次序停留。這個特性被用作保持包次序。

 [z1]Q1:這個操作在哪個硬體單元進行?

Q2: [z2]在哪個部件進行?

 [z3]同上

 [z4]同上