TWI818773B - 網路處理單元的演算法分析方法及電腦程式產品及裝置 - Google Patents

網路處理單元的演算法分析方法及電腦程式產品及裝置 Download PDF

Info

Publication number
TWI818773B
TWI818773B TW111139794A TW111139794A TWI818773B TW I818773 B TWI818773 B TW I818773B TW 111139794 A TW111139794 A TW 111139794A TW 111139794 A TW111139794 A TW 111139794A TW I818773 B TWI818773 B TW I818773B
Authority
TW
Taiwan
Prior art keywords
instruction
processing unit
cost
instructions
algorithm
Prior art date
Application number
TW111139794A
Other languages
English (en)
Other versions
TW202411837A (zh
Inventor
胡立東
顏飛
Original Assignee
大陸商達發科技(蘇州)有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 大陸商達發科技(蘇州)有限公司 filed Critical 大陸商達發科技(蘇州)有限公司
Application granted granted Critical
Publication of TWI818773B publication Critical patent/TWI818773B/zh
Publication of TW202411837A publication Critical patent/TW202411837A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

Abstract

本發明涉及一種網路處理單元的演算法分析方法及電腦程式產品及裝置。該方法由處理單元執行,包含:在虛擬機中載入並執行可執行程式檔,其包含能夠讓網路處理單元執行的演算法;在可執行程式檔的執行過程中,產生指令分類表;以及依據指令分類表和指令開銷表產生執行代價統計表,使得演算法能夠依據執行代價統計表的內容被優化。通過以上所述的方法,在缺少運行演算法的目標裝置的情況下,就能夠根據指令的模擬執行結果對演算法優化。

Description

網路處理單元的演算法分析方法及電腦程式產品及裝置
本發明涉及演算法優化技術,尤指一種網路處理單元的演算法分析方法及電腦程式產品及裝置。
網路處理單元(network processing unit,NPU)是一種專門使用在網路設備中,並且可被軟體編程的積體電路。網路處理單元中執行的演算法,主要包含各種處理資料封包的函數,用於持續地從一個埠接收訊息(Messages),經過解封包(decapsulation)、資料處理、封裝(encapsulation)後,傳送到另一個埠。然而,開發完成的演算法可能會有執行效率低落的問題。因此,本發明提出一種網路處理單元的演算法分析方法及電腦程式產品及裝置,用於找出執行過程中的瓶頸,做為進一步優化的依據。
有鑑於此,如何減輕或消除上述相關領域的缺失,實為有待解決的問題。
本說明書涉及一種網路處理單元的演算法分析方法的實施例,由處理單元執行,包含:在虛擬機中載入並執行可執行程式檔,其包含能夠讓網路處理單元執行的演算法;在可執行程式檔的執行過程中,產生指令分類表;以及依據指令分類表和指令開銷表產生執行代價統計表,使得演算法能夠依據執行代價統計表的內容被優化。
本說明書還涉及一種電腦程式產品的實施例,包含程式碼。當處理 單元載入及執行程式碼時,實現如上所示的網路處理單元的演算法分析方法。
本說明書還涉及一種網路處理單元的演算法分析裝置的實施例,包含:處理單元。處理單元用於在虛擬機中載入並執行可執行程式檔,其包含能夠讓網路處理單元執行的演算法;在可執行程式檔的執行過程中,產生指令分類表;以及依據指令分類表和指令開銷表產生執行代價統計表,使得演算法能夠依據執行代價統計表的內容被優化。
指令分類表儲存在虛擬機中執行過的多個第一指令,以及每個第一指令屬於多個指令類別中的一個的資訊。指令開銷表儲存屬於每個指令類別中的每個第二指令在執行時所需花費的代價。執行代價統計表儲存每個指令類別在執行時所花費的代價的總和。
上述實施例的優點之一,通過以上所述的方法,在缺少運行演算法的目標裝置的情況下,就能夠根據指令的模擬執行結果對演算法優化。
本發明的其他優點將搭配以下的說明和圖式進行更詳細的解說。
110:原始碼
122:程式碼切分階段
124:分段量測階段
126:分段優化階段
160#1~160#n:程式碼的分段
180#1~180#n:優化後程式碼的分段
20:光網路單元的路由器
210:網際網路
230:光線路終端
250:用戶裝置
310:網路處理單元
320:中央處理單元
330:動態隨機存取記憶體
340:無源光網路的媒體存取控制
350:乙太媒體存取控制
360:快速周邊元件互聯的媒體存取控制
370:實體層
422:輸入環形緩衝區
428:輸出環形緩衝區
462:輸入埠
468:輸出埠
50:分析裝置
510:處理單元
520:顯示單元
530:輸入裝置
540:儲存裝置
550:記憶體
560:通訊介面
610:可執行程式檔
610#1:可執行程式檔中的程式
610#2:可執行程式檔中的資料
632:虛擬機
634:指令分析統計模組
650:指令分類表
660:指令開銷表
670:執行代價統計表
S710~S750:方法步驟
80:虛擬環境
810:虛擬中央處理單元
830:虛擬動態隨機存取記憶體
850:虛擬網路處理單元
圖1為依據一些實施方式的演算法優化的三階段示意圖。
圖2為依據本發明實施例的無源光網路的示意圖。
圖3為依據本發明實施例的光網路單元路由器的系統架構圖。
圖4顯示依據本發明實施例的報文處理的示意圖。
圖5為依據本發明實施例的分析裝置的系統架構圖。
圖6為依據本發明實施例的指令模擬分析的軟體架構圖。
圖7為依據本發明實施例的基於指令模擬的演算法分析方法的流程圖。
圖8為依據本發明實施例的在虛擬環境下的模擬執行的示意圖。
以下說明為完成發明的較佳實現方式,其目的在於描述本發明的基本精神,但並不用以限定本發明。實際的發明內容必須參考之後的權利要求範圍。
必須了解的是,使用於本說明書中的”包含”、”包括”等詞,用以表示存在特定的技術特徵、數值、方法步驟、作業處理、元件以及/或組件,但並不排除可加上更多的技術特徵、數值、方法步驟、作業處理、元件、組件,或以上的任意組合。
於權利要求中使用如”第一”、”第二”、”第三”等詞是用來修飾權利要求中的元件,並非用來表示之間具有優先順序,前置關係,或者是一個元件先於另一個元件,或者是執行方法步驟時的時間先後順序,僅用來區別具有相同名字的元件。
必須了解的是,當元件描述為”連接”或”耦接”至另一元件時,可以是直接連結、或耦接至其他元件,可能出現中間元件。相反地,當元件描述為”直接連接”或”直接耦接”至另一元件時,其中不存在任何中間元件。使用來描述元件之間關係的其他語詞也可類似方式解讀,例如”介於”相對於”直接介於”,或者是”鄰接”相對於”直接鄰接”等等。
參考圖1,在一些實施方式中,演算法優化通常分為三個階段:程式碼切分階段122;分段量測階段124;分段優化階段126。在第一個階段122,組成演算法的軟體指令的原始碼110可依據不同的因素(例如功能等)切分為多個分段160#1至160#n,n為大於0的正整數。在第二個階段124,分段160#1至160#n中的每一個進行性能的量測。在第三個階段126,分段160#1至160#n中的每一個依據性能量測的結果進行優化,主要是刪除冗餘指令(redundant instructions)來縮減程式碼路徑。接著,產生優化後的分段180#1至180#n。然而,這樣的演算法優化的最小單位是程式碼行,較不能適用於特定應用裝置(例如光纖網路單元,Optical Network Unit,ONU等)中運行的 演算法。例如,縮減程式碼路徑只能減少處理器的執行時間,但不一定能提升特定應用裝置的整體系統效能。此外,由於分段量測階段124需要讓分段160#1至160#n中的每一個實際運行於目標裝置來產生性能量測的結果,因此,無法在沒有目標裝置情況下進行演算法優化。
為解決如上所述的問題,本發明實施例提出一種網路處理單元的演算法分析方法,基於指令的模擬執行,提前對演算法的效能進行預測。此方法可在缺少運行演算法的目標裝置的情況下,就能夠根據指令的模擬執行結果對演算法優化。
參考圖2所示的無源光網路(Passive Optical Network,PON)示意圖。無源光網路由服務提供商的中控機房中的光線路終端(Optical Line Terminal,OLT)230,以及多個光網路單元(Optical Network Units,ONUs)組成,例如ONU路由器20。OLT 230提供兩個主要的功能:一個用於在服務提供商的設備使用的電性信號和PON使用的光纖信號之間進行轉換;另一個是統合ONUs和PON另一端之間的多工複用(multiplexing)。OLT 230和ONU路由器20之間以光鏈路(optical link)連接。ONU路由器20是一種PON系統的用戶端設備,可設置在家庭中,用於使用乙太鏈路(Ether link)或無線鏈路(wireless link)和用戶裝置250互連。用戶裝置250可以是個人電腦、筆記型電腦(Laptop PC)、平板電腦、手機、數位相機、數位攝影機、智能電視、智能冷氣、智能電冰箱、智能排油煙機等電子產品。在OLT 230的搭配下,ONU路由器20可向連接上的用戶裝置250提供各種寬頻服務,例如網際網路訪問(Internet surfing)、網路電話(Voice over Internet Protocol,VoIP)、高畫質視頻等。
參考圖3所示的ONU路由器20的系統架構圖。ONU路由器20包含網路處理單元(Network Processing Unit,NPU)310、中央處理單元(Central Processing Unit,CPU)320、動態隨機存取記憶體 (Dynamic Random Access Memory,DRAM)330、PON媒體存取控制(Media Access Control,MAC)340、乙太(Ether)MAC 350、快速周邊元件互聯(peripheral component interconnect express,PCIE)MAC 360,使用共享匯流排架構(Shared Bus Architecture)彼此耦接。共享匯流排架構用於讓上述組件之間可傳遞資料、位址、控制訊號等。共享匯流排包含並行的物理線,是一種共享的傳輸媒體,在任意的時間上,只能有兩個裝置可以使用這些線來彼此溝通,用於傳遞資料。資料及控制訊號能夠在組件間分別沿資料線和控制線進行雙向傳播,但另一方面,位址訊號只能沿位址線進行單向傳播。例如,當NPU 310想要讀取DRAM 330的特定位址上的資料時,NPU 310在位址線上傳送此位址給DRAM 330。接著,此位址的資料會在資料線上回覆給NPU 310。為了完成資料讀取操作,控制訊號會使用控制線進行傳遞。
CPU 320可使用多種方式實施,如使用通用硬體(例如,微控制單元、數位訊號處理器、單一處理器、具平行處理能力的多處理器、圖形處理器或其他具運算能力的處理器),並且在執行軟體指令時,提供特定的功能。NPU 310是一種積體電路,具有專屬於網路應用領域的一組功能。NPU 310是一種軟體可編程的裝置,具有類似通用處理單元的一般特性,但為了提高ONU路由器20的整體效能,用在不同類型網路(例如,PON、乙太網路、無線區域網路、個人存取網路和其他網路)之間傳遞的報文(messages)的處理。DRAM 330可配置空間作為資料緩衝區,暫存從相應於不同類型網路的端口所接收到的報文,以及準備要傳送到相應於不同類型網路的端口的報文。DRAM 330另可儲存NPU 310在執行過程中需要的資料,例如,變數、旗標、資料表等。PON MAC 340耦接至實體層370中的相應電路,驅動其中的相應電路(可包含光接收器、光傳送器)以產生一系列和OLT 230的光信號交互,用於通過光鏈路(optical link)從OLT 230接收報文,以及發送報文給OLT 230。乙太MAC 350耦接至實體層370中的相應電路(可包含數位接收器、數位傳送器),驅動其中的相應電路以產生一系列和用戶裝置250的電性信號交互,用於通過乙太鏈路(Ether link)從特定用戶裝置250接收報文,以及發送報文給特定用戶裝置250。PCIE MAC 360耦接至實體層370中的相應電路(可包含射頻接收器、射頻傳送器),驅動其中的相應電路以產生一系列和用戶裝置250的射頻信號交互,用於通過無線鏈路從特定用戶裝置250接收報文,以及發送報文給特定用戶裝置250。無線鏈路可包含使用802.11x、藍牙等無線通訊協定所建立的鏈路。
參考圖4所示的報文處理的示意圖。DRAM 330可配置空間給一個或者多個輸入環形緩衝區(input ring buffers)422,用於儲存通過輸入埠462接收到的封包。DRAM 330另可配置空間給一個或者多個輸出環形緩衝區(output ring buffer)428,用於儲存即將通過輸出埠468傳送出去的封包。實體層370包含多個輸入埠462,多個輸出埠468,以及多個不同類型的接收器和傳送器。
舉例來說,一個輸入埠462耦接至光接收器,光接收器耦接至OLT 230的光傳送器,用於讓PON MAC 340持續地通過此輸入埠462從OLT 230接收封包,並且PON MAC 340將接收到的封包推入輸入環形緩衝器(input ring buffer)422。一個輸入埠462耦接至數位接收器,數位接收器耦接至集線器(Ethernet hub),用於讓乙太MAC 350持續地通過此輸入埠462從用戶裝置250接收封包,並且乙太MAC 350將接收到的封包推入輸入環形緩衝器422。一個輸入埠462耦接至WiFi射頻接收器,用於讓PCIE MAC 360持續地通過此輸入埠462從介質中接收用戶裝置250所傳送出來的封包,並且PCIE MAC 360將接收到的封包推入輸入環形緩衝器422。一個輸入埠462耦接至藍牙射頻接收器,用於讓PCIE MAC 360持續地通過此輸入埠 462從介質中接收用戶裝置250所傳送出來的封包,並且PCIE MAC 360將接收到的封包推入輸入環形緩衝器422。
舉例來說,一個輸出埠468耦接至光傳送器,光傳送器耦接至OLT 230的光接收器,用於讓PON MAC 340持續地從輸出環形緩衝器(output ring buffer)428推出指定封包,並且PON MAC 340驅動光傳送器以通過此輸出埠468將封包傳送給OLT 230。一個輸出埠468耦接至數位傳送器,數位傳送器耦接至集線器,用於讓乙太MAC 350持續地從輸出環形緩衝器428推出指定封包,並且乙太MAC 350驅動數位傳送器以通過此輸出埠468將封包傳送給特定用戶裝置250。一個輸出埠468耦接至WiFi射頻傳送器,用於讓PCIE MAC 360持續地從輸出環形緩衝器428推出指定封包,並且PCIE MAC 360驅動WiFi射頻傳送器以通過此輸出埠468將封包以WiFi通信協定傳送給特定用戶裝置250。一個輸出埠468耦接至藍牙射頻傳送器,用於讓PCIE MAC 360持續地從輸出環形緩衝器428推出指定封包,並且PCIE MAC 360驅動藍牙射頻傳送器以通過此輸出埠468將封包以藍牙通信協定傳送給特定用戶裝置250。
NPU 310可執行關鍵演算法,由軟體指令組成,用於持續地從輸入環形緩衝器422推出封包,依據適當的封包格式解封包以獲取來源位址、目的位址和報文,依據適當的封包格式將來源位址、目的位址和報文封裝成封包,並且將封包推入輸出環形緩衝器428。來源位址和目的位址為網際網路通訊協定(Internet Protocol,IP)位址。舉一個例子,關鍵演算法從輸入環形緩衝器422推出從OLT 230接收到的封包,遵循光鏈路的封包格式從封包中解析出(parse)來源位址、目的位址和報文等,依據映射表和獲取的目的位址知道獲取的報文需要通過乙太鏈路傳送給特定用戶裝置250,遵循乙太鏈路的封包格式對來源位址、目的位址和報文進行封裝,接著,將封包推入輸出環形緩衝器428,用於讓乙太MAC 350可通過數位傳送器將 封包傳送到區域網路(Local Area Network,LAN)。舉另一個例子,關鍵演算法從輸入環形緩衝器422推出從用戶裝置250接收到的封包,遵循藍牙鏈路的封包格式從封包中解析出來源位址、目的位址和報文等,依據映射表和獲取的目的位址知道獲取的報文需要通過光鏈路傳送給網際網路210上的裝置,遵循光鏈路的封包格式對來源位址、目的位址和報文進行封裝,接著,將封包推入輸出環形緩衝器428,用於讓PON MAC 340可通過光傳送器將封包傳送到網際網路210。當NPU 310執行關鍵演算法時,可能涉及對多個不同硬體裝置的操作,例如,NPU 310中的快取(cache)和靜態隨機存取記憶體(Static Random Access Memory,SRAM)、CPU 320、DRAM 330、PON MAC 340、乙太MAC 350、PCIE MAC 360的以上任意組合。
在關鍵演算法實際運行在ONU路由器20的NPU 310之前,可先使用分析裝置對關鍵演算法進行分析,並且依據分析結果來優化。參考圖5所示的分析裝置50的系統架構圖。此系統架構可實施於個人電腦、工作站或筆記本電腦,至少包含處理單元510。處理單元510可使用多種方式實施,例如以專用硬體電路或通用硬體(例如,單一處理器、具平行處理能力的多處理器、圖形處理器或其他具運算能力的處理器),並且在執行程式碼或軟體時,提供之後所描述的功能。系統架構另包含記憶體550及儲存裝置540,記憶體550儲存分析程式碼在執行過程中需要的資料,例如,包含關鍵演算法的可執行程式、變數、各種資料表(Data Tables)等,儲存裝置540可以是硬碟、固態硬碟、閃存記憶碟等,用於儲存各式各樣的電子檔案。系統架構另包含通訊介面560,讓處理單元510可藉以跟其他電子裝置進行溝通。通訊介面560可以是無線電信通訊模組(Wireless Telecommunications Module)、區域網路(Local Area Network,LAN)通訊模組或無線區域網路通訊模組(WLAN)。無線電信通訊模組(Wireless Telecommunications Module)可包含支援2G、3G、4G、 5G或以上技術世代的任意組合的調變解調器(Modem)。輸入裝置530可包含鍵盤、滑鼠、觸控面板等。使用者(例如,關鍵演算法的開發或者測試工程師)可按壓鍵盤上的硬鍵來輸入字元,藉由操作滑鼠來控制鼠標,或者是在觸控面板製造手勢來控制執行中的應用程式。手勢可包含單擊、雙擊、單指拖曳、多指拖曳等,但不限定於此。系統架構包含顯示單元520,而顯示單元520包含顯示面板(例如,薄膜液晶顯示面板、有機發光二極體面板或其他具顯示能力的面板),用以顯示輸入的字元、數字、符號、拖曳鼠標的移動軌跡或應用程式所提供的畫面,提供給使用者觀看。
本發明實施例提出一種網路處理單元的演算法分析方法,基於指令的模擬執行,提前對關鍵演算法的效能進行預測,而不是讓ONU路由器20的NPU 310實際運行關鍵演算法時才進行量測。此外,本發明實施例提出的分析方法,其分析的最小單位是關鍵演算法執行時的一個指令。所屬技術領域人員理解每個程式碼行在運行時通常會執行多個指令,圖1所示優化方式的粒度(granularity level)粗略於本發明實施例的分析粒度。參考圖6所示的指令模擬分析的軟體架構和圖7所述的基於指令模擬的演算法分析方法,詳細說明如下:
步驟S710:於虛擬機632中載入並執行可執行程式檔610(例如,npu.bin),可執行程式檔中包含將來ONU路由器20出廠時運行於NPU 310的關鍵演算法。虛擬機632使用分析裝置50的處理單元510運行,用於創造一種虛擬環境,模擬ONU路由器20中的硬體組件。參考圖8所示的在虛擬環境下的模擬執行。可執行程式檔610包含兩個部分:程式碼610#1和資料610#2。虛擬機632模擬出的虛擬環境80包含虛擬中央處理單元810(對應於中央處理單元320)、虛擬DRAM 830(對應於DRAM 330)和虛擬網路處理單元850(對應於網路處理單元310)。虛擬中央處理單元810執行載入器(loader),用於將可執行程式檔610中的程式碼610#1儲存到虛擬DRAM 830中 的第一區域(如斜線所示的區域),以及將可執行程式檔610中的資料610#2儲存到虛擬DRAM 830中的第二區域(如反斜線所示的區域)。虛擬網路處理單元850從第一區域的開始位址起讀取可執行程式檔610的指令並執行。在虛擬網路處理單元850執行可執行程式檔610的過程中,產生指令分類表650的多筆紀錄,每筆紀錄相應於一個指令的執行。接著,指令分類表650儲存至記憶體550和/或儲存裝置540,以供後續的分析。
指令可分為十種不同的類別:快取讀取指令;快取寫入指令;SRAM讀取指令;SRAM寫入指令;DRAM讀取指令;DRAM寫入指令;輸入/輸出(Input/Output,I/O)讀取指令;I/O寫入指令;計算指令;特殊計算指令。從NPU 310中的第一級快取(L1 cache)讀取資料的指令可歸類到快取讀取指令類別。寫入資料到NPU 310中的第一級快取的指令可歸類到快取寫入指令類別。從NPU 310中的SRAM讀取資料的指令可歸類到SRAM讀取指令類別。寫入資料到NPU 310中的SRAM的指令可歸類到SRAM寫入指令類別。從DRAM 330讀取資料的指令可歸類到DRAM讀取指令類別。寫入資料到DRAM 330的指令可歸類到DRAM寫入指令類別。驅動PON MAC 340、乙太MAC 350和PCIE MAC 360來獲取資料的指令可歸類到I/O讀取指令類別。驅動PON MAC 340、乙太MAC 350和PCIE MAC 360來傳送資料的指令可歸類到I/O寫入指令類別。一般的算術運算指令(例如,加、減、乘、除、邏輯或、邏輯與、邏輯反、邏輯互斥或等)可歸類到計算指令類別。特殊函數(如奇偶校驗、加密、解密等函數)的運算指令可歸類到特殊計算指令類別。所屬技術領域人員可依據系統需求的不同,使用更多或者更少的指令類別來代表指令的執行,本發明並不因此局限。指令分類表650包含實際執行過的指令、歸類後的類別和其他資訊。範例的指令分類表650如表1所示:
Figure 111139794-A0305-02-0013-1
在可執行程式檔610的執行過程中,偵測到至少三個指令,依序被歸類到快取讀取指令、快取寫入指令和計算指令的類別中。
步驟S730:處理單元510執行指令分析統計模組634的程式碼,用於依據指令分類表650和指令開銷表660產生執行代價統計表670。指令開銷表660包含10筆記錄,每筆記錄儲存屬於每個指令類別中的指令在執行時所需花費的代價。範例的指令開銷表660如表2所示:
Figure 111139794-A0305-02-0013-2
執行代價Cost#1至Cost#10可表示為時鐘週期(clock cycle)的數目,代表特定類別中的每個指令的執行一般需要多少個時鐘週期。所屬 技術領域人員可依據指令類別的實際類別數目,在指令開銷表660中儲存更多或者更少的記錄,本發明並不因此局限。指令開銷表660的內容可依據ONU路由器20過去運行的經驗來產生,當做特定指令類別的指令在執行時的理論代價。
執行代價統計表670儲存在關鍵演算法執行的過程中,每個指令類別在執行時所花費的代價的總和資訊。範例的指令執行代價統計表670如表3所示:
Figure 111139794-A0305-02-0014-3
指令數Cnt#1至Cnt#10表示可執行程式檔610中關聯於這十類指令的數目。指令執行代價統計表670中的總執行代價欄位儲存這十類指令的理論代價和已執行過的指令數目的乘積。每個指令類別的總執行代價,可使用以下的公式表示:totalCost#i=Cnt#i*Cost#i totalCost#i代表第i個指令類別的總執行代價,Cnt#i代表已執行過的屬於第i個指令類別的指令數目,Cost#i代表第i個指令類別的理論代 價,i為大於零但小於或等於N的整數,N代表指令類別的總數。
步驟S750:依據執行代價統計表670的結果,優化將來會被NPU 310執行的關鍵演算法。例如,可依據執行代價統計表670的結果,標示出高耗時的指令類別,然後再針對這個類別的指令進行優化。優化的方式可分為軟體優化和硬體優化兩種。
舉例來說,對高耗時的指令類別的軟體優化可包含以下方式:在原始碼中移除冗餘的資料結構和處理這些資料結構的流程。將多個任務共享的資源(例如,DRAM的空間)改為每個任務獨立專用的資源,避免增加鎖住和解鎖的控制操作。減少PON MAC 340、乙太MAC 350和PCIE MAC 360的驅動次數,例如,將即時的少量的報文傳遞改為批次固定長度報文傳遞。
舉例來說,對高耗時的指令類別的硬體優化可包含以下方式:由於SRAM的存取耗時低於DRAM的存取耗時,可以加大NPU 310中的SRAM空間,使得關鍵演算法執行過程中所需要的變數、報文、資料表等,盡可能儲存在SRAM。
本發明所述的方法中的全部或部份步驟可以電腦指令實現,例如硬體的驅動程式、應用程式的程式碼等。此外,也可實現於其他類型程式。所屬技術領域人員可將本發明實施例的方法撰寫成電腦指令,為求簡潔不再加以描述。依據本發明實施例方法實施的電腦指令可儲存於適當的電腦可讀取媒體,例如DVD、CD-ROM、USB碟、硬碟,亦可置於可通過網路(例如,網際網路,或其他適當載具)存取的網路伺服器。
雖然圖3、圖5中包含了以上描述的元件,但不排除在不違反發明的精神下,使用更多其他的附加元件,已達成更佳的技術效果。此外,雖然圖7的流程圖採用指定的順序來執行,但是在不違反發明精神的情況下,熟習此技藝人士可以在達到相同效果的前提下,修改這些步驟間的順序,所以,本發明並不侷限於僅使用如上所述的順序。 此外,熟習此技藝人士亦可以將若干步驟整合為一個步驟,或者是除了這些步驟外,循序或平行地執行更多步驟,本發明亦不因此而侷限。
雖然本發明使用以上實施例進行說明,但需要注意的是,這些描述並非用以限縮本發明。相反地,此發明涵蓋了熟習此技藝人士顯而易見的修改與相似設置。所以,申請權利要求範圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設置。
S710~S730:方法步驟

Claims (15)

  1. 一種網路處理單元的演算法分析方法,由處理單元執行,包含:在虛擬機中載入並執行可執行程式檔,其中,所述可執行程式檔包含能夠讓所述網路處理單元執行的演算法;在所述可執行程式檔的執行過程中,產生指令分類表,其中,所述指令分類表儲存在所述虛擬機中執行過的多個指令,以及每個所述指令屬於多個指令類別中的一個的資訊;以及依據所述指令分類表和指令開銷表產生執行代價統計表,使得所述演算法能夠依據所述執行代價統計表的內容被優化,其中,所述指令開銷表儲存屬於每個所述指令類別在執行時所需花費的代價,其中,所述執行代價統計表儲存每個所述指令類別在執行時所花費的所述代價的總和。
  2. 如請求項1所述的網路處理單元的演算法分析方法,其中,所述虛擬機創造虛擬環境,用於模擬光纖網路單元路由器中的硬體組件。
  3. 如請求項2所述的網路處理單元的演算法分析方法,其中,所述光纖網路單元路由器包含所述網路處理單元,並且所述處理單元配備於不同於所述光纖網路單元路由器的分析裝置。
  4. 如請求項3所述的網路處理單元的演算法分析方法,其中,所述演算法持續地獲取經由所述光纖網路單元路由器的輸入埠所傳入的報文,以及經由所述光纖網路單元路由器的輸出埠傳送所述報文到目的裝置。
  5. 如請求項1所述的網路處理單元的演算法分析方法,其中,所述代價以時鐘週期的數目表示。
  6. 如請求項5所述的網路處理單元的演算法分析方法,其中,所述執行代價統計表儲存每個所述指令類別的總執行代價,使用以下的公式表示:totalCost#i=Cnt#i*Cost#i totalCost#i代表第i個指令類別的所述總執行代價,Cnt#i代表已執行過的屬於第i個指令類別的指令數目,Cost#i代表第i個指令類別的所述代價,i為大於零但小於或等於N的整數,N代表所述指令類別的總數。
  7. 如請求項1所述的網路處理單元的演算法分析方法,其中,所述指令類別包含快取讀取指令、快取寫入指令、靜態隨機記憶體讀取指令、靜態隨機記憶體寫入指令、動態隨機記憶體讀取指令、動態隨機記憶體寫入指令、輸入/輸出讀取指令、輸入/輸出寫入指令、計算指令和特殊計算指令。
  8. 一種電腦程式產品,包含程式碼,其中,當處理單元執行所述程式碼時,實施如請求項1至7中任一項所述的網路處理單元的演算法分析方法。
  9. 一種網路處理單元的演算法分析裝置,包含:處理單元,用於在虛擬機中載入並執行可執行程式檔,其中,所述可執行程式檔包含能夠讓所述網路處理單元執行的演算法;在所述可執行程式檔的執行過程中,產生指令分類表,其中,所述指令分類表儲存在所述虛擬機中執行過的多個指令,以及每 個所述指令屬於多個指令類別中的一個的資訊;以及依據所述指令分類表和指令開銷表產生執行代價統計表,使得所述演算法能夠依據所述執行代價統計表的內容被優化,其中,所述指令開銷表儲存屬於每個所述指令類別在執行時所需花費的代價,其中,所述執行代價統計表儲存每個所述指令類別在執行時所花費的所述代價的總和。
  10. 如請求項9所述的網路處理單元的演算法分析裝置,其中,所述虛擬機創造虛擬環境,用於模擬光纖網路單元路由器中的硬體組件。
  11. 如請求項10所述的網路處理單元的演算法分析裝置,其中,所述光纖網路單元路由器包含所述網路處理單元,並且所述光纖網路單元路由器不包含所述處理單元。
  12. 如請求項11所述的網路處理單元的演算法分析裝置,其中,所述演算法持續地獲取經由所述光纖網路單元路由器的輸入埠所傳入的報文,以及經由所述光纖網路單元路由器的輸出埠傳送所述報文到目的裝置。
  13. 如請求項9所述的網路處理單元的演算法分析裝置,其中,所述代價以時鐘週期的數目表示。
  14. 如請求項13所述的網路處理單元的演算法分析裝置,其中,所述執行代價統計表儲存每個所述指令類別的總執行代價,使用以下的公式表示:totalCost#i=Cnt#i*Cost#i totalCost#i代表第i個指令類別的所述總執行代價,Cnt#i代表已執行過的屬於第i個指令類別的指令數目,Cost#i代表第i個指令類別的所述代價,i為大於零但小於或等於N的整數,N代表所述指令類別的總數。
  15. 如請求項9所述的網路處理單元的演算法分析裝置,其中,所述指令類別包含快取讀取指令、快取寫入指令、靜態隨機記憶體讀取指令、靜態隨機記憶體寫入指令、動態隨機記憶體讀取指令、動態隨機記憶體寫入指令、輸入/輸出讀取指令、輸入/輸出寫入指令、計算指令和特殊計算指令。
TW111139794A 2022-09-09 2022-10-20 網路處理單元的演算法分析方法及電腦程式產品及裝置 TWI818773B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202211106235.XA CN117724764A (zh) 2022-09-09 2022-09-09 网络处理单元的算法分析方法及装置和存储介质
CN202211106235.X 2022-09-09

Publications (2)

Publication Number Publication Date
TWI818773B true TWI818773B (zh) 2023-10-11
TW202411837A TW202411837A (zh) 2024-03-16

Family

ID=89857590

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111139794A TWI818773B (zh) 2022-09-09 2022-10-20 網路處理單元的演算法分析方法及電腦程式產品及裝置

Country Status (3)

Country Link
US (1) US20240086242A1 (zh)
CN (1) CN117724764A (zh)
TW (1) TWI818773B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW202042080A (zh) * 2017-11-03 2020-11-16 美商卡赫倫特羅吉克斯公司 處理器操作方法、相關電腦系統、及非暫時性電腦可存取儲存媒體
CN112286596A (zh) * 2019-07-09 2021-01-29 华为技术有限公司 消息显示方法及电子设备
US20210359959A1 (en) * 2020-05-12 2021-11-18 Qualcomm Incorporated Shared network processing unit
US20220121455A1 (en) * 2021-11-16 2022-04-21 Adrian Hoban Intent-based cluster administration

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW202042080A (zh) * 2017-11-03 2020-11-16 美商卡赫倫特羅吉克斯公司 處理器操作方法、相關電腦系統、及非暫時性電腦可存取儲存媒體
CN112286596A (zh) * 2019-07-09 2021-01-29 华为技术有限公司 消息显示方法及电子设备
US20210359959A1 (en) * 2020-05-12 2021-11-18 Qualcomm Incorporated Shared network processing unit
US20220121455A1 (en) * 2021-11-16 2022-04-21 Adrian Hoban Intent-based cluster administration

Also Published As

Publication number Publication date
CN117724764A (zh) 2024-03-19
US20240086242A1 (en) 2024-03-14

Similar Documents

Publication Publication Date Title
US8020168B2 (en) Dynamic virtual software pipelining on a network on chip
CN107003955B (zh) 用于在根复合体中集成设备的方法、装置和系统
WO2021259013A1 (zh) 数据处理方法、装置、电子设备及计算机可读介质
US8438578B2 (en) Network on chip with an I/O accelerator
US8661455B2 (en) Performance event triggering through direct interthread communication on a network on chip
US8494833B2 (en) Emulating a computer run time environment
US20110289485A1 (en) Software Trace Collection and Analysis Utilizing Direct Interthread Communication On A Network On Chip
US9529583B2 (en) Single microcontroller based management of multiple compute nodes
US20090271172A1 (en) Emulating A Computer Run Time Environment
CN107170474A (zh) 可扩展存储盒、计算机实施方法以及计算机可读存储装置
CN108696649A (zh) 图像处理方法、装置、设备及计算机可读存储介质
GB2507552A (en) Improving local context search results
US10642667B1 (en) Apparatus, system, and method for efficiently sharing data between processes
TWI818773B (zh) 網路處理單元的演算法分析方法及電腦程式產品及裝置
Dong et al. Venice: Exploring server architectures for effective resource sharing
Barbareschi et al. Network traffic analysis using android on a hybrid computing architecture
CN109933411B (zh) 一种在线修改虚拟机内部配置系统及方法
US11929926B2 (en) Traffic service threads for large pools of network addresses
TW202411837A (zh) 網路處理單元的演算法分析方法及電腦程式產品及裝置
Zhang et al. Research on development of embedded uninterruptable power supply system for IOT-based mobile service
Lancaster et al. TimeTrial: A low-impact performance profiler for streaming data applications
CN110427379A (zh) 用户搜索关联数据的上链方法及其装置
WO2018188416A1 (zh) 一种数据搜索的方法、装置和相关设备
Xie et al. Dual: Deploy stateful virtual network function chains by jointly allocating data-control traffic
CN111224929B (zh) 软件连接的管理系统及方法