TWI811620B - 運算裝置與資料處理方法 - Google Patents
運算裝置與資料處理方法 Download PDFInfo
- Publication number
- TWI811620B TWI811620B TW110102826A TW110102826A TWI811620B TW I811620 B TWI811620 B TW I811620B TW 110102826 A TW110102826 A TW 110102826A TW 110102826 A TW110102826 A TW 110102826A TW I811620 B TWI811620 B TW I811620B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- circuit
- general
- processor
- processing
- Prior art date
Links
- 238000003672 processing method Methods 0.000 title claims description 7
- 238000012545 processing Methods 0.000 claims abstract description 171
- 230000001133 acceleration Effects 0.000 claims description 82
- 238000000034 method Methods 0.000 claims description 34
- 230000008569 process Effects 0.000 claims description 32
- 238000006243 chemical reaction Methods 0.000 claims description 24
- 230000005540 biological transmission Effects 0.000 claims description 3
- 230000006870 function Effects 0.000 description 42
- 230000015654 memory Effects 0.000 description 33
- 238000010586 diagram Methods 0.000 description 12
- 238000013461 design Methods 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 239000007787 solid Substances 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000004217 heart function Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
Images
Landscapes
- Advance Control (AREA)
- Apparatus For Radiation Diagnosis (AREA)
Abstract
一種運算裝置包含至少一通用處理器、至少一輔助處理器以及至少一特殊應用處理器。該至少一通用處理器用以執行一應用程式,其中一資料處理工作之至少一部份的資料處理會自該至少一通用處理器被卸載出來。該至少一輔助處理器用以在無需該至少一通用處理器上所執行之該應用程式的介入之下,處理該資料處理之一控制流。該至少一特殊應用處理器用以在無需該至少一通用處理器上所執行之該應用程式的介入之下,處理該資料處理之一資料流。
Description
本發明係有關於資料處理,尤指一種透過至少一輔助處理器與至少一特殊應用處理器來將資料處理工作之至少一部分自至少一通用處理器卸載出來的資料處理方法與相關的運算裝置。
根據傳統的電腦架構,儲存裝置可透過匯流排來跟中央處理器進行資料傳送與資料接收,舉例來說,固態硬碟(solid-state drive,SSD)可連接至PCIe(Peripheral Component Interconnect Express)匯流排或SATA(Serial Advanced Technology Attachment)匯流排,如此一來,主機端的中央處理器可透過PCIe匯流排/SATA匯流排來將資料寫入主機端的固態硬碟,而主機端的固態硬碟亦可透過PCIe匯流排/SATA匯流排來將儲存資料傳送至主機端的中央處理器。此外,隨著網路技術的發展,儲存裝置亦可設置於遠端,並透過網路而連接至主機端,如此一來,主機端的中央處理器可透過網路來將資料寫入遠端的儲存裝置,而遠端的儲存裝置亦可透過網路來將儲存資料傳送至主機端的中央處理器。
無論是安裝於主機端的儲存裝置或是設置於遠端的儲存裝置,中央處理器上所執行的應用程式會基於傳統的電腦架構而需要自儲存裝置讀取資料來進行處理,由於透過中央處理器來進行資料搬移會耗費大量時間,為了加速資料處理的效率,亟需一種創新的資料處理方法與相關的運算裝置。
因此,本發明的目的之一在於提出一種透過至少一輔助處理器與至少一特殊應用處理器來將資料處理工作之至少一部分自至少一通用處理器卸載出來的資料處理方法與相關的運算裝置。
在本發明的一個實施例中,揭露一種運算裝置。該運算裝置包含至少一通用處理器、至少一輔助處理器以及至少一特殊應用處理器。該至少一通用處理器用以執行一應用程式,其中一資料處理工作之至少一部份的資料處理會自該至少一通用處理器被卸載出來。該至少一輔助處理器用以在無需該至少一通用處理器上所執行之該應用程式的介入之下,處理該資料處理之一控制流。該至少一特殊應用處理器用以在無需該至少一通用處理器上所執行之該應用程式的介入之下,處理該資料處理之一資料流。
在本發明的另一個實施例中,揭露一種資料處理方法。該資料處理方法包含:透過至少一通用處理器來執行一應用程式,其中一資料處理工作之至少一部份的資料處理會自該至少一通用處理器被卸載出來;以及在無需該至少一通用處理器上所執行之該應用程式的介入之下,透過至少一輔助處理器來處理該資料處理之一控制流並透過至少一特殊應用處理器來處理該資料處理之一資料流。
本發明運算裝置可具備網路子系統來連結至網路且可針對物件儲存來執行相關資料處理,故具有極高的可擴展性,於一應用中,本發明運算裝置可相容於現有的物件儲存服務(例如Amazon S3或其它雲端儲存服務),因而可
基於來自網路的物件儲存指令(例如Amazon S3 Select)來針對運算裝置所連接的物件儲存裝置進行資料擷取的相關資料處理,於另一應用中,本發明運算裝置可自網路接收NVMe/TCP指令,並基於NVMe/TCP指令來對運算裝置所連接的儲存裝置進行相關的資料處理操作,假若運算裝置所連接的儲存裝置是分散式儲存系統中的一部份(例如鍵值資料庫的一部份),則自網路所接收NVMe/TCP指令可包含鍵值指令,本發明運算裝置便可基於鍵值指令來對儲存裝置進行相關的鍵值資料庫資料處理操作。此外,資料可在移動過程中便經由硬體加速電路完成處理,過程中無需執行應用程式的通用處理器介入資料搬移以及軟體與硬體之間的通訊,故可實現網路內部運算及/或儲存內部運算,進而節省功耗、減少延遲並降低通用處理器的負荷;再者,本發明運算裝置可採用多重處理系統晶片來實作,例如多重處理系統晶片可包含現場可程式化邏輯閘陣列以及採用ARM架構的通用處理器核心,故具有很高的設計彈性,設計人員可根據需求來自行設計通用處理器核心所要執行的應用程式/程式碼以及現場可程式化邏輯閘陣列所要具備的硬體資料處理加速功能,例如可將本發明運算裝置應用於資料中心,可透過客製化來支援各種資料類型與儲存格式並得到最佳效能,由於單一多重處理系統晶片便可取代高階伺服器,故採用本發明運算裝置的資料中心可具有較低的建置成本。
10:網路掛載裝置
20,104,312,322:儲存裝置
30:網路
40,112:輸入/輸出介面
100,300:電腦系統
102:電腦主機
105,314:加速卡
106:中央處理器
108:系統記憶體
110,310:網路介面
114:記憶體
200:運算裝置
201:晶片
202:通用處理器
204:輔助處理器
206:特殊應用處理器
208,500,600:可程式化電路
212:通用處理器核心
214,330:網路子系統
216,332:儲存子系統
222:TCP/IP卸載引擎
224:網路處理電路
226:儲存處理電路
228,410:儲存控制器
232,334,406:加速電路
234,236:資料轉換電路
302:應用程式
304:作業系統核心
306:檔案系統
308:驅動程式
320:多重處理系統晶片
324,402:應用處理器單元
326,404:即時處理器單元
328:現場可程式化邏輯閘陣列
400:處理系統
401:可程式化邏輯區塊
408:晶片上記憶體
412:物件儲存裝置
414:物件
APP:應用程式
API_F:應用程式介面函式
SW:程式碼
第1圖為採用加速卡之電腦系統的示意圖。
第2圖為根據本發明一實施例之運算裝置的示意圖。
第3圖為本發明運算裝置與採用加速卡之電腦系統之間的功能對應關係的示意圖。
第4圖為依據本發明一實施例之採用虛擬儲存記憶體技術來進行物件資料處理之運算裝置的示意圖。
第5圖為依據本發明一實施例之可程式化電路的示意圖。
第6圖為依據本發明另一實施例之可程式化電路的示意圖。
第1圖為採用加速卡之電腦系統的示意圖。電腦系統100包含電腦主機102、儲存裝置104以及加速卡105。電腦主機102包含中央處理器106、系統記憶體108、網路介面110、輸入/輸出介面112與其它組件(未顯示)。儲存裝置104可透過網路介面110或者輸入/輸出介面112而連接至電腦主機102。加速卡105可透過輸入/輸出介面112而連接至電腦主機102。舉例來說,網路介面110可提供有線網路存取或無線網路存取,而輸入/輸出介面112可以是PCIe介面。本範例中,加速卡105為PCIe介面卡,可安裝於輸入/輸出介面112的插槽上,例如,加速卡105可以是基於現場可程式化邏輯閘陣列(field programmable gate array,FPGA)的介面卡,可用於資料處理的加速與其它應用,相較於透過中央處理器106來進行運算,加速卡105具有較大資料吞吐量、較低處理延遲與較低功耗等優點。當電腦系統100運行時,中央處理器106會先將儲存裝置104中待處理的儲存資料搬移至系統記憶體108,接著,再將系統記憶體108中待處理的儲存資料搬移至加速卡105中的記憶體114,後續,加速卡105便會讀取記憶體114中的資料來進行運算,並將運算結果回傳至中央處理器106。另外,中央處理器106有可能需要先對儲存裝置104中待處理的儲存資料進行格式轉換,再將符合加速卡105所需資料格式的資料搬移至加速卡105上的記憶體114。雖然加速卡105可提供較大資料吞吐量、較低處理延遲與較低功耗,然而加速卡105是連接於電腦主機102的輸入/輸出介面112(例如PCIe介面),因此,中央處理器106仍需要介入儲存裝置104
與加速卡105之間的資料搬移及/或資料格式轉換,例如,根據傳統的電腦架構,中央處理器106需要針對輸入/輸出堆疊(input/output stack)的複數層(layer)進行處理,且基於馮諾伊曼架構(von Neumann architecture),中央處理器106需要執行頻繁的載入/儲存(load/store)操作,如此一來,即便電腦系統100額外安裝有加速卡105,仍然會因為這些因素影響而使得電腦系統100的整體資料處理效能無法受惠於加速卡105而有所大幅提升。再者,加速卡105是直接連接於電腦主機102的輸入/輸出介面112(例如PCIe介面),故加速卡105本身會缺乏可擴展性(scalability)。
為了改善上述採用加速卡105之電腦系統100的各項缺點,本發明便提出新的硬體加速架構。第2圖為根據本發明一實施例之運算裝置的示意圖。運算裝置200包含至少一通用處理器(general purpose processor)202、至少一輔助處理器(coprocessor)204以及至少一特殊應用處理器(application specific processor)206。為了簡潔起見,第2圖僅繪示一個通用處理器202、一個輔助處理器204以及一個特殊應用處理器206,然而,實際應用時,通用處理器202、輔助處理器204以及特殊應用處理器206的個數可依據需求而定,本發明並不以此為限。於本實施例中,通用處理器202、輔助處理器204與特殊應用處理器206均設置於同一晶片201中,例如,晶片201可以是多重處理系統晶片(multiprocessor system on a chip,MPSoC),然而,本發明並不以此為限。此外,通用處理器202包含至少一通用處理器核心(未顯示),輔助處理器204包含至少一通用處理器核心212與一部份的可程式化電路208,以及特殊應用處理器206則包含另一部份的可程式化電路208,舉例來說,通用處理器核心可採用x86架構或ARM(Advanced RISC Machine)架構,以及可程式化電路208可以是現場可程式化邏輯閘陣列,本實施例中,通用處理器202(僅由通用處理器核心所構成)與輔助
處理器204(由通用處理器核心與現場可程式化邏輯閘陣列所構成)為異質處理器(heterogeneous processors),通用處理器202負責執行應用程式APP,而有關輸入/輸出堆疊的處理與資料搬移則完全交由輔助處理器204來負責。此外,由於特殊應用處理器206採用現場可程式化邏輯閘陣列來實作,故相較於透過通用處理器202來進行資料處理,特殊應用處理器206可提供較大資料吞吐量、較低處理延遲與較低功耗等優點,舉例來說,特殊應用處理器206可跳脫馮諾伊曼架構,故可採用管線(pipeline)、資料流(data flow)等其它架構來提供資料平行處理的功能,進而具備較佳的資料處理效能。
於採用多重處理系統晶片來實現運算裝置200的應用中,通用處理器202的處理器核心可以是採用ARM Cotex-A53來實現的應用處理器單元(application processor unit,APU),通用處理器核心212則可以是採用ARM Cotex-R5來實現的即時處理器單元(real-time processor unit,RPU),以及可程式化電路208為現場可程式化邏輯閘陣列。第3圖為本發明運算裝置與採用加速卡之電腦系統之間的功能對應關係的示意圖。電腦系統300可以是傳統的伺服器,可透過中央處理器(未顯示)來執行應用程式302、作業系統核心(operation system kernel)304、檔案系統(file system)306與驅動程式(driver)308,另外,電腦系統300設置網路介面310來提供網路存取功能,可利用儲存裝置312來提供大容量的資料存取,以及可透過加速卡314(例如PCIe介面卡)來提供資料處理加速功能。運算裝置200可採用多重處理系統晶片320來實現,基於第2圖所示之架構,多重處理系統晶片320可包含應用處理器單元324、即時處理器單元326與現場可程式化邏輯閘陣列328,其中網路子系統330、儲存子系統332與加速電路334均由現場可程式化邏輯閘陣列328所實現。如第3圖所示,應用處理器單元324的功能會對應至應用程式302,網路子系統330、即時處理器單元326、儲存子系統332與儲
存裝置322之組合的功能會對應至網路介面310、作業系統核心304、檔案系統306、驅動程式308與儲存裝置312的組合,以及加速電路334的功能會對應至加速卡314。不同於電腦系統300,多重處理系統晶片320可透過即時處理器單元326與現場可程式化邏輯閘陣列328(尤其是加速電路334)來將資料處理工作之至少一部分自應用處理器單元324卸載出來,如此一來,可避免應用處理器單元324耗費大量時間來處理資料搬移。本發明運算電路200的細節進一步說明如下。
請參照第2圖,通用處理器202用以執行應用程式APP,其中一資料處理工作之至少一部份(亦即部分或全部)的資料處理會自通用處理器202被卸載出來,換言之,通用處理器202無需介入該資料處理工作之至少一部份的該資料處理,如此一來,針對該資料處理的流程,通用處理器202便不用針對輸入/輸出堆疊的複數層進行任何處理。輔助處理器204用以在無需通用處理器202上所執行之應用程式APP的介入之下,處理該資料處理之一控制流(control flow),另外,特殊應用處理器206則是用以在無需通用處理器202上所執行之應用程式APP的介入之下,處理該資料處理之一資料流(data flow)。本實施例中,通用處理器202上所執行之應用程式APP可透過呼叫應用程式介面(application programming interface,API)函式API_F來將該資料處理工作之至少一部份的該資料處理卸載至輔助處理器204與特殊應用處理器206。
輔助處理器204的通用處理器核心212可載入並執行程式碼SW來執行與控制輸入/輸出堆疊之複數層的處理,進一步來說,通用處理器核心212會與可程式化電路208進行通訊來讓整個資料流的處理能在無需通用處理器202介入的前提之下順利完成。此外,輔助處理器204另包含利用可程式化電路208所實現的網路子系統(network subsystem)214、儲存子系統(storage subsystem)216與複
數個資料轉換電路(data converter)234、236。網路子系統214包含傳輸控制協定/網際網路協定(transmission control protocol/internet protocol,TCP/IP)卸載引擎(offload engine)222與網路處理電路(network handler)224。TCP/IP卸載引擎222用以處理網路處理電路224與網路掛載裝置(network-attached device)10之間的TCP/IP堆疊(TCP/IP stack),例如,網路掛載裝置10可以是分散式物件儲存系統中的用戶端或者物件儲存裝置,並透過網路30連接至運算裝置200,因此,分散式物件儲存系統的指令或資料可透過網路30而傳送至運算裝置200,由於TCP/IP卸載引擎222負責網路層的處理,故通用處理器核心212也無需介入TCP/IP堆疊的處理。網路處理電路224用以與通用處理器核心212進行通訊並控制網路流(network flow)。
本實施例中,特殊應用處理器206是由可程式化電路208所實現並包含至少一加速電路(accelerator)232,為了簡潔起見,第2圖僅繪示一個加速電路232,然而,實際應用時,加速電路232的個數可依據需求而定,例如每個加速電路232被設計來執行一個核心函式(kernel function),因此特殊應用處理器206可設置複數個加速電路232來分別執行不同的核心函式,請注意,核心函式本身並不針對輸入/輸出堆疊的複數層進行任何處理。
加速電路232是設計來提供硬體資料處理加速功能,可自網路處理電路224接收一資料輸入,以及根據該資料輸入來處理該資料處理工作之至少一部份的該資料處理的該資料流。假若得自該網路流之負載資料(payload)的資料格式不同於加速電路232所要求的預定資料格式,則資料轉換電路234會用以處理網路處理電路224與加速電路232之間的資料轉換,舉例來說,網路處理電路224自該網路流所得到並輸出的負載資料會包含一筆完整資料,而加速電路232所要執
行的核心函式僅需處理該筆完整資料中的特定欄位,因此資料轉換電路234會從該筆完整資料中擷取出特定欄位並傳送至加速電路232。此外,假若網路掛載裝置10為分散式物件儲存系統中的一部份,並透過網路30連接至運算裝置200,則網路處理電路224可用以控制加速電路232與網路掛載裝置10之間的該網路流。
儲存子系統216包含儲存處理電路(storage handler)226與儲存控制器(storage controller)228。儲存處理電路226用以與通用處理器核心212進行通訊並控制儲存裝置20的資料存取,例如,儲存處理電路226可因應有關資料存取的應用程式介面函式來進行訊息傳遞、同步處理與資料流控制。儲存控制器228則用以對儲存裝置20進行實際資料儲存,例如,儲存裝置20可以是透過輸入/輸出介面40(例如PCIe介面或SATA介面)而連接至運算裝置200的固態硬碟,而儲存控制器228會輸出寫入指令、寫入位址與寫入資料至儲存裝置20來進行資料寫入,以及會輸出讀取指令與讀取位址至儲存裝置20來進行資料讀取。
加速電路232係設計來提供硬體資料處理加速功能,加速電路232可自儲存處理電路226接收一資料輸入,以及根據該資料輸入來處理該資料處理工作之至少一部份的該資料處理的該資料流。假若得自儲存處理電路226之資料的資料格式不同於加速電路232所要求的預定資料格式,則資料轉換電路236會用以處理儲存處理電路226與加速電路232之間的資料轉換,舉例來說,儲存處理電路226所得到並輸出的資料會包含一筆完整資料,而加速電路232所要執行的核心函式僅需處理該筆完整資料中的特定欄位,因此資料轉換電路236會從該筆完整資料中擷取出特定欄位並傳送至加速電路232。
為了簡潔起見,於第2圖中,加速電路232與網路處理電路224之間僅
繪示一個資料處理電路234以及於加速電路232與資料處理電路226之間僅繪示一個資料處理電路236,然而,實際應用時,資料處理電路234、236的個數可依據需求而定,例如,於另一實施例中,特殊應用處理器206可以包含複數個加速電路232,分別執行不同的核心函式,由於不同的核心函式會有不同的資料格式需求,因此特殊應用處理器206與網路處理電路224之間可設置複數個資料處理電路234來分別進行不同的資料格式轉換,以及特殊應用處理器206與資料處理電路226之間可設置複數個資料處理電路236來分別進行不同的資料格式轉換。
如上所述,通用處理器202可將該資料處理工作之至少一部份的該資料處理卸載至輔助處理器204與特殊應用處理器206,其中輔助處理器204負責該資料處理的控制流(至少包含輸入/輸出堆疊之複數層的處理),而特殊應用處理器206則是負責該資料處理的資料流,本實施例中,運算裝置200另包含控制通道218,耦接於特殊應用處理器206(尤其是加速電路232)的接腳與輔助處理器204(尤其是通用處理器核心212)的接腳之間,控制通道218可用以於特殊應用處理器206(尤其是加速電路232)與輔助處理器204(尤其是通用處理器核心212)之間傳送控制訊息。
於一應用中,加速電路232可自網路處理電路224接收一資料輸入,並透過網路處理電路224來傳送加速電路232之一資料輸出,亦即來自網路掛載裝置10的資料經由加速電路232處理後再寫回網路掛載裝置10,由於資料在網路掛載裝置10與加速電路232的路徑中完成處理而無需經過通用處理器202,故可實現網路內部運算(in-network computation)。於另一應用中,加速電路232可自網路處理電路224接收一資料輸入,並透過儲存處理電路226來傳送加速電路232之一資料輸出,亦即來自網路掛載裝置10的資料經由加速電路232處理後會寫入儲
存裝置20,由於資料在網路掛載裝置10、加速電路232與儲存裝置20的路徑中完成處理而無需經過通用處理器202,故可實現網路內部運算。於另一應用中,加速電路232可自儲存處理電路226接收一資料輸入,並透過網路處理電路224來傳送加速電路232之一資料輸出,亦即來自儲存裝置20的資料經由加速電路232處理後會寫入網路掛載裝置10,由於資料在儲存裝置20、加速電路232與網路掛載裝置10的路徑中完成處理而無需經過通用處理器202,故可實現儲存內部運算(in-storage computation)。於另一應用中,加速電路232可自儲存處理電路226接收一資料輸入,並透過儲存處理電路226來傳送加速電路232之一資料輸出,亦即來自儲存裝置20的資料經由加速電路232處理後會再寫回儲存裝置20,由於資料在儲存裝置20與加速電路232的路徑中完成處理而無需經過通用處理器202,故可實現儲存內部運算。
不同於檔案儲存(file storage),物件儲存(object storage)是一種無階層資料儲存方法,並不使用目錄樹,而離散的資料單元(物件)存在於儲存區中的相同層次,且每個物件都有唯一的識別碼,以供應用程式擷取物件。物件儲存廣泛應用於雲端儲存,本發明所揭示的運算裝置200亦可應用於物件儲存裝置的資料處理。
於一物件儲存應用中,通用處理器202上所執行之應用程式APP可透過呼叫應用程式介面函式API_F來將該資料處理工作之至少一部份的該資料處理卸載至輔助處理器204與特殊應用處理器206,舉例來說,特殊應用處理器206是設計來處理具有一核心識別碼(kernel identifier)之一核心函式,該資料處理是用以處理位於一物件儲存裝置(object storage)中且具有一物件識別碼(object identifier)之一物件,而應用程式介面函式API_F的參數可包含該核心識別碼與該
物件識別碼,其中該物件儲存裝置可以是儲存裝置20或網路掛載裝置10。舉例來說,儲存裝置20為固態硬碟並透過PCIe介面連接至運算裝置200,因此,運算裝置200與儲存裝置20可整體視為運算型儲存裝置(computational storage device,CSD),此外,此運算型儲存裝置可作為分散式物件儲存系統的一部份,因此,儲存裝置20可用以儲存複數個物件,且每個物件有自己的物件識別碼,通用處理器202上所執行之應用程式APP可呼叫應用程式介面函式API_F,以便將物件資料處理的操作卸載至輔助處理器204與特殊應用處理器206,舉例來說,應用程式介面函式API_F可包含csd_sts csd_put(object_id,object_data,buf_len)、csd_sts csd_put_acc(object_id,object_data,acc_id,buf_len)、csd_sts csd_get(object_id,object_data,buf_len)與csd_sts csd_get_acc(object_id,object_data,acc_id,buf_len),其中csd_sts csd_put(object_id,object_data,buf_len)用以將具備物件識別碼object_id的物件資料object_data寫入至儲存裝置20,csd_sts csd_put_acc(object_id,object_data,acc_id,buf_len)用以利用具備核心識別碼acc_id的加速電路232來處理具備物件識別碼object_id的物件資料object_data並將相對應的運算結果寫入至儲存裝置20,csd_sts csd_get(object_id,object_data,buf_len)用以將具備物件識別碼object_id的物件資料object_data從儲存裝置20讀取出來,以及csd_sts csd_get_acc(object_id,object_data,acc_id,buf_len)用將從儲存裝置20所讀取之具備物件識別碼object_id的物件資料object_data送至具備核心識別碼acc_id的加速電路232進行處理,並將相對應的運算結果傳送出去。
舉例來說,csd_sts csd_put(object_id,object_data,buf_len)的操作可用以下的虛擬程式碼(pseudo code)來簡單表示:struct nvme_cmd io; io.opcode = nvme_sdcs;
io.object_id = object_id; io.object_data = &object_data; io.xfterlen = buf_len; return ioctl(fd, NVME_IOCTL_SUBMIT_IO, &io)
另外,csd_sts csd_get_acc(object_id,object_data,acc_id,buf_len)的操作可用以下的虛擬程式碼來簡單表示:struct nvme_cmd io; io.opcode = nvme_sdcs; io.object_id = object_id; io.object_data = &object_data; io.acc_id = acc_id; io.xfterlen = buf_len; return ioctl(fd, NVME_IOCTL_SUBMIT_IO, &io)
請注意,上述虛擬程式碼僅作為範例說明之用,本發明並不以此為限,此外,運算裝置200所實際採用的應用程式介面函式API_F亦可依實際設計需求而定。
於另一物件儲存應用中,網路掛載裝置10可以是分散式物件儲存系統中的用戶端,並透過網路30連接至運算裝置200,此外,儲存裝置20可以是分散式儲存系統中的一部份(例如鍵值資料庫(key-value store)的一部份)。加速電路232是設計來執行具有一核心識別碼之一核心函式,以及儲存裝置20中儲存具有一物件識別碼之一物件。網路掛載裝置10可透過網路30發送一特定應用程式
介面函式,其參數包含該核心識別碼以及該物件識別碼,因此,運算裝置200中的網路子系統214會自網路30接收該特定應用程式介面函式(其參數包含該核心識別碼以及該物件識別碼),接著,通用處理器核心212會自網路子系統214取得該核心識別碼以及該物件識別碼,並觸發具有該核心識別碼之該核心函式(亦即加速電路232)來處理位於一物件儲存裝置(亦即儲存裝置20)且具有該物件識別碼之該物件,其中特殊應用處理器206中的加速電路232對該物件進行處理時,無需通用處理器202上所執行之應用程式APP的介入。
如上所述,特殊應用處理器206採用現場可程式化邏輯閘陣列來實作,由於現場可程式化邏輯閘陣列中的內部記憶體容量很小,因此,特殊應用處理器206(尤其是加速電路232)所能使用的記憶體容量有限,然而,假若運算裝置200應用於物件儲存裝置的資料處理,則運算裝置200另可採用本發明的虛擬儲存記憶體(virtual storage memory)技術,使得特殊應用處理器206(尤其是加速電路232)所使用的晶片上記憶體(on-chip memory)/嵌入式記憶體(例如Block RAM(BRAM)或UltraRAM(URAM))可等效視為具有像儲存裝置一樣的大容量,進一步來說,通用處理器核心212根據核心識別碼以及物件識別碼,觸發具有該核心識別碼之核心函式(亦即加速電路232)來處理位於一物件儲存裝置(亦即儲存裝置20)且具有該物件識別碼之物件,基於物件儲存的特性,可以根據特殊應用處理器206(尤其是加速電路232)所使用之晶片上記憶體/嵌入式記憶體的容量,透過資料流方式來不斷讀取具有該物件識別碼之該物件的連續資料至特殊應用處理器206(尤其是加速電路232)所使用的晶片上記憶體/嵌入式記憶體,以供特殊應用處理器206(尤其是加速電路232)進行處理,直到完成具有該物件識別碼之該物件的資料處理為止,此外,於物件資料處理過程中,儲存裝置20與特殊應用處理器206(尤其是加速電路232)所使用的嵌入式記憶體之間的資料搬移以及核
心函式與應用程式APP之間的同步會由輔助處理器204的通用處理器核心212負責,因此通用處理器202所執行的應用程式APP完全無需介入儲存裝置20與特殊應用處理器206(尤其是加速電路232)所使用的晶片上記憶體/嵌入式記憶體之間的資料搬移以及核心函式與應用程式APP之間的同步。
第4圖為依據本發明一實施例之採用虛擬儲存記憶體技術來進行物件資料處理之運算裝置的示意圖。假設運算裝置200採用多重處理系統晶片來實現,且連接至運算裝置200的儲存裝置為物件儲存裝置412。多重處理系統晶片可劃分為處理系統(processing system,PS)400以及可程式化邏輯區塊(programmable logic,PL)401,其中處理系統400包含應用處理器單元402(用以實現第2圖所示之通用處理器202)以及即時處理器單元404(用以實現第2圖所示之通用處理器核心212),而可程式化邏輯區塊401則包含加速電路406(用以實現第2圖所示之加速電路232)、晶片上記憶體408(例如BRAM或URAM)以及儲存控制器410(用以實現第2圖所示的儲存控制器228)。請注意,為了簡潔起見,第4圖僅繪示一部分的元件,實際上,多重處理系統晶片可包含運算裝置200的其它元件。
一開始時,應用處理器單元402會發送指令(例如應用程式介面函式)至即時處理器單元404,其中指令(例如應用程式介面函式)可包含核心識別碼與物件識別碼,此外,指令(例如應用程式介面函式)另可包含可程式邏輯區塊401的一些參數。接著,即時處理器單元404決定具有該物件識別碼之物件414的儲存位置,並根據晶片上記憶體408的容量大小(buffer size)來發送指令至儲存控制器410,因此,儲存控制器410會自物件儲存裝置412讀取物件414中具有晶片上記憶體408之容量大小的一筆資料並寫入至晶片上記憶體408。接著,即時處理器單元404會發送指令至加速電路406來觸發具有該核心識別碼的核心函式,因
此,加速電路406會自晶片上記憶體408讀取物件資料並執行具有該核心識別碼的核心函式來對物件資料進行處理。於完成晶片上記憶體408所儲存之物件資料的處理之後,加速電路406會傳送訊息告知即時處理器單元404。接著,即時處理器單元404會判斷針對物件414的資料處理是否全部完成,若針對物件414的資料處理尚未全部完成,則即時處理器單元404會再根據晶片上記憶體408的容量大小來發送指令至儲存控制器410,因此,儲存控制器410會自物件儲存裝置412讀取物件414中具有晶片上記憶體408之容量大小的下一筆資料並寫入至晶片上記憶體408。接著,即時處理器單元404會發送指令至加速電路406來觸發具有該核心識別碼的核心函式,因此,加速電路406會自晶片上記憶體408讀取物件資料並執行具有該核心識別碼的核心函式來對物件資料進行處理。上述步驟會不斷重複執行,直到即時處理器單元404判斷針對物件414的資料處理已全部完成為止,此外,當針對物件414的資料處理已全部完成時,即時處理器單元404會傳送訊息來告知應用處理器單元402。
於第2圖所示的實施例中,可程式化電路208同時包含網路子系統214與儲存子系統216,然而,這僅作為範例說明,本發明並不以此為限,任何利用輔助處理器與特殊應用處理器來自通用處理器卸載資料處理的電路架構均落入本發明的範疇。
第5圖為依據本發明一實施例之可程式化電路的示意圖。第2圖所示之運算裝置200可修改而採用第5圖所示之可程式化電路500,亦即可程式化電路500可取代第2圖所示的可程式化電路208,相較於可程式化電路208,可程式化電路500並未包含網路子系統214與資料轉換電路234,因此,針對無需透過網路30來連接至網路掛載裝置10的應用,本發明運算裝置中的可程式化電路便可採
用第5圖所示的設計。
第6圖為依據本發明另一實施例之可程式化電路的示意圖。第2圖所示之運算裝置200可修改為採用第6圖所示之可程式化電路600,亦即可程式化電路600可取代第2圖所示的可程式化電路208,相較於可程式化電路208,可程式化電路600並未包含儲存子系統216與資料轉換電路236,因此,針對無需透過輸入/輸出介面40來連接至儲存裝置20的應用,本發明運算裝置中的可程式化電路便可採用第6圖所示的設計。
請注意,第2圖、第5圖與第6圖中的資料轉換電路234、236可以是選擇性(optional)元件,亦即,可根據不同的設計需求來決定可程式化電路208、500、600是否需要資料轉換電路234、236,舉例來說,假若加速電路232所要求的預定資料格式可涵蓋得自網路流之負載資料的資料格式,便可省略資料轉換電路234,同理,假若加速電路232所要求的預定資料格式可涵蓋得自儲存處理電路226之資料的資料格式,便可省略資料轉換電路236。這些設計上的變化均屬本發明之涵蓋範圍。
綜上所述,本發明運算裝置可具備網路子系統來連結至網路且可針對物件儲存來執行相關資料處理,故具有極高的可擴展性,於一應用中,本發明運算裝置可相容於現有的物件儲存服務(例如Amazon S3或其它雲端儲存服務),因而可基於來自網路的物件儲存指令(例如Amazon S3 Select)來針對運算裝置所連接的物件儲存裝置進行資料擷取的相關資料處理,於另一應用中,本發明運算裝置可自網路接收NVMe/TCP指令,並基於NVMe/TCP指令來對運算裝置所連接的儲存裝置進行相關的資料處理操作,假若運算裝置所連接的儲存裝置
是分散式儲存系統中的一部份(例如鍵值資料庫的一部份),則自網路所接收NVMe/TCP指令可包含鍵值指令,本發明運算裝置便可基於鍵值指令來對儲存裝置進行相關的鍵值資料庫資料處理操作。此外,資料可在移動過程中便經由硬體加速電路完成處理,過程中無需執行應用程式的通用處理器介入資料搬移以及軟體與硬體之間的通訊,故可實現網路內部運算及/或儲存內部運算,進而節省功耗、減少延遲並降低通用處理器的負荷;再者,本發明運算裝置可採用多重處理系統晶片來實作,例如多重處理系統晶片可包含現場可程式化邏輯閘陣列以及採用ARM架構的通用處理器核心,故具有很高的設計彈性,設計人員可根據需求來自行設計通用處理器核心所要執行的應用程式/程式碼以及現場可程式化邏輯閘陣列所要具備的硬體資料處理加速功能,例如可將本發明運算裝置應用於資料中心(data center),可透過客製化來支援各種資料類型與儲存格式並得到最佳效能,由於單一多重處理系統晶片便可取代高階伺服器,故採用本發明運算裝置的資料中心可具有較低的建置成本。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
10:網路掛載裝置
20:儲存裝置
30:網路
40:輸入/輸出介面
200:運算裝置
201:晶片
202:通用處理器
204:輔助處理器
206:特殊應用處理器
208:可程式化電路
212:通用處理器核心
214:網路子系統
216:儲存子系統
222:TCP/IP卸載引擎
224:網路處理電路
226:儲存處理電路
228:儲存控制器
232:加速電路
234,236:資料轉換電路
APP:應用程式
API_F:應用程式介面函式
SW:程式碼
Claims (20)
- 一種運算裝置,包含:至少一通用處理器,用以執行一應用程式,其中一資料處理工作之至少一部份的資料處理會自該至少一通用處理器被卸載出來;至少一輔助處理器,用以在無需該至少一通用處理器上所執行之該應用程式的介入之下,處理該資料處理之一控制流;以及至少一特殊應用處理器,用以在無需該至少一通用處理器上所執行之該應用程式的介入之下,處理該資料處理之一資料流;其中該至少一通用處理器上所執行之該應用程式透過呼叫一應用程式介面函式來卸載該資料處理,該至少一特殊應用處理器用以處理具有一核心識別碼之一核心函式,該資料處理用以處理位於一物件儲存裝置中且具有一物件識別碼之一物件,以及該應用程式介面函式的參數包含該核心識別碼以及該物件識別碼。
- 如請求項1所述之運算裝置,其中該至少一輔助處理器上所執行的該控制流包含輸入/輸出堆疊的複數層。
- 如請求項1所述之運算裝置,其中該至少一通用處理器與該至少一輔助處理器為異質處理器。
- 如請求項1所述之運算裝置,其中該至少一特殊應用處理器為一可程式化電路。
- 如請求項4所述之運算裝置,其中該可程式化電路為一現場可程式 化邏輯閘陣列。
- 如請求項5所述之運算裝置,其中該至少一通用處理器、該至少一輔助處理器以及該至少一特殊應用處理器均整合於同一晶片中。
- 如請求項1所述之運算裝置,其中該至少一輔助處理器包含:一可程式化電路,包含:一網路子系統,用以自一網路接收該核心識別碼與該物件識別碼;以及至少一通用處理器核心,用以自該可程式化電路取得該核心識別碼與該物件識別碼,以及觸發具有該核心識別碼之該核心函式來處理位於該物件儲存裝置且具有該物件識別碼之該物件,其中該至少一特殊應用處理器對該物件進行處理時,無需該至少一通用處理器上所執行之該應用程式的介入。
- 如請求項1所述之運算裝置,其中該至少一輔助處理器包含至少一通用處理器核心,以及該運算裝置另包含:一控制通道,耦接於該至少一特殊應用處理器的接腳與該至少一通用處理器核心的接腳之間,其中該控制通道用以於該至少一特殊應用處理器與該至少一通用處理器核心之間傳送控制訊息。
- 如請求項1所述之運算裝置,其中該至少一輔助處理器包含:至少一通用處理器核心;以及一可程式化電路,包含一網路子系統,其中該網路子系統包含:一網路處理電路,用以與該至少一通用處理器核心進行通訊並控制一網路流;以及 該至少一特殊應用處理器包含:至少一加速電路,用以自該網路處理電路接收一資料輸入,以及根據該資料輸入來處理該資料處理之該資料流。
- 如請求項9所述之運算裝置,其中該至少一加速電路另用以透過該網路處理電路來傳送該至少一加速電路之一資料輸出。
- 如請求項9所述之運算裝置,其中該網路子系統另包含:一傳輸控制協定/網際網路協定卸載引擎,用以處理該網路處理電路與一網路掛載裝置之間的傳輸控制協定/網際網路協定堆疊。
- 如請求項9所述之運算裝置,其中該可程式化電路另包含:至少一資料轉換電路,用以處理該網路處理電路與該至少一加速電路之間的資料轉換,其中得自該網路流之負載資料的資料格式不同於該至少一加速電路所要求的預定資料格式。
- 如請求項9所述之運算裝置,其中該網路處理電路用以控制該至少一加速電路與一分散式物件儲存系統之一部份之間的該網路流。
- 如請求項9所述之運算裝置,其中該可程式化電路另包含:一儲存子系統,包含:一儲存處理電路,用以與該至少一通用處理器核心進行通訊並控制一儲存裝置的資料存取;其中該至少一加速電路另用以透過該儲存處理電路來傳送該至少一加速電路 之一資料輸出。
- 如請求項1所述之運算裝置,其中該至少一輔助處理器包含:至少一通用處理器核心;以及一可程式化電路,包含一儲存子系統,其中該儲存子系統包含:一儲存處理電路,用以與該至少一通用處理器核心進行通訊並控制一儲存裝置的資料存取;以及該至少一特殊應用處理器包含:至少一加速電路,用以自該儲存處理電路接收一資料輸入,並根據該資料輸入來處理該資料處理之該資料流。
- 如請求項15所述之運算裝置,其中該至少一加速電路另用以透過該儲存處理電路來傳送該至少一加速電路之一資料輸出。
- 如請求項15所述之運算裝置,其中該儲存子系統另包含:一儲存控制器,用以對該儲存裝置進行實際資料存取。
- 如請求項15所述之運算裝置,其中該可程式化電路另包含:至少一資料轉換電路,用以處理該儲存處理電路與該至少一加速電路之間的資料轉換,其中得自該儲存處理電路之資料的資料格式不同於該至少一加速電路所要求的預定資料格式。
- 如請求項15所述之運算裝置,其中該可程式化電路另包含:一網路子系統,包含: 一網路處理電路,用以與該至少一通用處理器核心進行通訊並控制一網路流;其中該至少一加速電路另用以透過該網路處理電路來傳送該至少一加速電路之一資料輸出。
- 一種資料處理方法,包含:透過至少一通用處理器來執行一應用程式,其中一資料處理工作之至少一部份的資料處理會自該至少一通用處理器被卸載出來;以及在無需該至少一通用處理器上所執行之該應用程式的介入之下,透過至少一輔助處理器來處理該資料處理之一控制流並透過至少一特殊應用處理器來處理該資料處理之一資料流;其中該至少一通用處理器上所執行之該應用程式透過呼叫一應用程式介面函式來卸載該資料處理,該至少一特殊應用處理器用以處理具有一核心識別碼之一核心函式,該資料處理用以處理位於一物件儲存裝置中且具有一物件識別碼之一物件,以及該應用程式介面函式的參數包含該核心識別碼以及該物件識別碼。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/180,882 US11941433B2 (en) | 2020-03-24 | 2021-02-22 | Computing apparatus and data processing method for offloading data processing of data processing task from at least one general purpose processor |
CN202110219103.7A CN112882984A (zh) | 2020-03-24 | 2021-02-26 | 运算装置与数据处理方法 |
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202062993720P | 2020-03-24 | 2020-03-24 | |
US62/993,720 | 2020-03-24 | ||
US202063014697P | 2020-04-23 | 2020-04-23 | |
US63/014,697 | 2020-04-23 | ||
US202063019437P | 2020-05-04 | 2020-05-04 | |
US63/019,437 | 2020-05-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202136997A TW202136997A (zh) | 2021-10-01 |
TWI811620B true TWI811620B (zh) | 2023-08-11 |
Family
ID=79601296
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110102826A TWI811620B (zh) | 2020-03-24 | 2021-01-26 | 運算裝置與資料處理方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI811620B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108089920A (zh) * | 2016-11-23 | 2018-05-29 | 华为技术有限公司 | 一种数据处理的方法、装置和系统 |
CN109471732A (zh) * | 2018-11-22 | 2019-03-15 | 山东大学 | 一种面向cpu-fpga异构多核系统的数据分配方法 |
TW201915724A (zh) * | 2017-09-14 | 2019-04-16 | 南韓商三星電子股份有限公司 | 異構計算環境的設備及系統 |
TW201933080A (zh) * | 2017-10-11 | 2019-08-16 | 南韓商三星電子股份有限公司 | 資料儲存裝置及橋接裝置 |
CN110618871A (zh) * | 2019-09-21 | 2019-12-27 | 苏州浪潮智能科技有限公司 | 一种fpga云平台加速资源的分配方法与系统 |
US20200073849A1 (en) * | 2019-05-03 | 2020-03-05 | Paul H. Dormitzer | Technologies for remote networked accelerators |
US20200081850A1 (en) * | 2018-07-26 | 2020-03-12 | Xilinx, Inc. | Unified address space for multiple hardware accelerators using dedicated low latency links |
-
2021
- 2021-01-26 TW TW110102826A patent/TWI811620B/zh active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108089920A (zh) * | 2016-11-23 | 2018-05-29 | 华为技术有限公司 | 一种数据处理的方法、装置和系统 |
TW201915724A (zh) * | 2017-09-14 | 2019-04-16 | 南韓商三星電子股份有限公司 | 異構計算環境的設備及系統 |
TW201933080A (zh) * | 2017-10-11 | 2019-08-16 | 南韓商三星電子股份有限公司 | 資料儲存裝置及橋接裝置 |
US20200081850A1 (en) * | 2018-07-26 | 2020-03-12 | Xilinx, Inc. | Unified address space for multiple hardware accelerators using dedicated low latency links |
CN109471732A (zh) * | 2018-11-22 | 2019-03-15 | 山东大学 | 一种面向cpu-fpga异构多核系统的数据分配方法 |
US20200073849A1 (en) * | 2019-05-03 | 2020-03-05 | Paul H. Dormitzer | Technologies for remote networked accelerators |
CN110618871A (zh) * | 2019-09-21 | 2019-12-27 | 苏州浪潮智能科技有限公司 | 一种fpga云平台加速资源的分配方法与系统 |
Also Published As
Publication number | Publication date |
---|---|
TW202136997A (zh) | 2021-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7313381B2 (ja) | ハードウェアアクセラレーションのためのハードウェアリソースの埋込みスケジューリング | |
US11586577B2 (en) | Autonomous memory architecture | |
JP7506472B2 (ja) | アプリケーション関数を装置にオフロードするためのシステム及び方法 | |
KR20240096760A (ko) | 코히어런트 가속을 위한 도메인 지원 프로세서-피어 | |
WO2020103706A1 (zh) | 一种数据处理系统及数据处理方法 | |
US9612750B2 (en) | Autonomous memory subsystem architecture | |
US20090320023A1 (en) | Process Migration Based on Service Availability in a Multi-Node Environment | |
US11556391B2 (en) | CPU utilization for service level I/O scheduling | |
JP2022530873A (ja) | 機械学習アクセラレータに対する機械学習モデル更新 | |
CN115033188A (zh) | 一种基于zns固态硬盘的存储硬件加速模块系统 | |
Ouyang et al. | Active SSD design for energy-efficiency improvement of web-scale data analysis | |
EP4167069A1 (en) | System, method, and device for accessing device program on storage device | |
EP4372563A1 (en) | Systems, methods, and apparatus for operating computational devices | |
TWI811620B (zh) | 運算裝置與資料處理方法 | |
CN116257471A (zh) | 一种业务处理方法及装置 | |
US12001879B2 (en) | Instruction offload to processor cores in attached memory | |
US11941433B2 (en) | Computing apparatus and data processing method for offloading data processing of data processing task from at least one general purpose processor | |
WO2023115529A1 (zh) | 芯片内的数据处理方法及芯片 | |
CN113392052B (zh) | 一种基于四路服务器的bios系统、方法及计算机可读存储介质 | |
US20240020177A1 (en) | Method and system for end-to-end emulation of hardware offloading operation | |
KR102650569B1 (ko) | 범용 연산 가속기 및 그것의 동작 방법 | |
CN108762666B (zh) | 一种存储系统的访问方法、系统、介质及设备 | |
CN118550584A (zh) | 数据处理方法、装置、处理器、计算机设备和系统 | |
Wang et al. | Lightning Talk: Model, Framework and Integration for In-Storage Computing with Computational SSDs | |
CN117666944A (zh) | 用于执行数据处理功能的方法和存储装置 |