TW202137043A - 運算裝置 - Google Patents

運算裝置 Download PDF

Info

Publication number
TW202137043A
TW202137043A TW110102840A TW110102840A TW202137043A TW 202137043 A TW202137043 A TW 202137043A TW 110102840 A TW110102840 A TW 110102840A TW 110102840 A TW110102840 A TW 110102840A TW 202137043 A TW202137043 A TW 202137043A
Authority
TW
Taiwan
Prior art keywords
data
engine
memory
circuit
control circuit
Prior art date
Application number
TW110102840A
Other languages
English (en)
Other versions
TWI765542B (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 威盛電子股份有限公司
Priority to CN202110218927.2A priority Critical patent/CN112882966B/zh
Priority to US17/189,176 priority patent/US11500801B2/en
Publication of TW202137043A publication Critical patent/TW202137043A/zh
Application granted granted Critical
Publication of TWI765542B publication Critical patent/TWI765542B/zh

Links

Images

Landscapes

  • Logic Circuits (AREA)
  • Advance Control (AREA)

Abstract

一種運算裝置包含一第一處理電路以及一第二處理電路。該第一處理電路包含一可程式化邏輯電路。該第二處理電路包含一通用處理器,用以執行一應用程式,來將一位元流下載至該第一處理電路來對該可程式化邏輯電路進行程式化,以規劃該可程式化邏輯電路包含一直接記憶體存取引擎以及至少一物理引擎。該直接記憶體存取引擎用以透過直接記憶體存取方式來存取一第一記憶體。該至少一物理引擎用來透過該直接記憶體存取引擎,以自該第一記憶體讀取所要處理的資料。該第一處理電路與該第二處理電路設置於同一晶片。

Description

運算裝置
本發明係有關於資料處理,尤指一種利用可程式化邏輯電路(programmable logic)來實作直接記憶體存取(direct memory access, DMA)引擎與至少一物理引擎(physical engine, PE)並透過直接記憶體存取引擎來提供待處理之資料予該至少一物理引擎的運算裝置。
根據傳統的電腦架構,儲存裝置可透過匯流排來跟中央處理器進行資料傳送與資料接收,舉例來說,固態硬碟(solid-state drive, SSD)可連接至PCIe (Peripheral Component Interconnect Express)匯流排或SATA(Serial Advanced Technology Attachment)匯流排,如此一來,主機端的中央處理器可透過PCIe匯流排/SATA匯流排來將資料寫入主機端的固態硬碟,而主機端的固態硬碟亦可透過PCIe匯流排/SATA匯流排來將儲存資料傳送至主機端的中央處理器。此外,隨著網路技術的發展,儲存裝置亦可設置於遠端,並透過網路而連接至主機端,如此一來,主機端的中央處理器可透過網路來將資料寫入遠端的儲存裝置,而遠端的儲存裝置亦可透過網路來將儲存資料傳送至主機端的中央處理器。
無論是安裝於主機端的儲存裝置或是設置於遠端的儲存裝置,中央處理器上所執行的應用程式會基於傳統的電腦架構而需要自儲存裝置讀取資料來進行處理,由於透過中央處理器來進行資料搬移會耗費大量時間,為了加速資料處理的效率,亟需一種創新的運算裝置。
因此,本發明的目的之一在於提出一種利用可程式化邏輯電路來實作直接記憶體存取引擎與至少一物理引擎並透過直接記憶體存取引擎來提供待處理之資料予該至少一物理引擎的運算裝置,如此一來,可大幅減少資料搬移所需耗費的時間,進而提升資料處理效能。
在本發明的一個實施例中,揭露一種運算裝置。該運算裝置包含一第一處理電路以及一第二處理電路。該第一處理電路包含一可程式化邏輯電路。 該第二處理電路包含一通用處理器,用以執行一應用程式,來將一位元流下載至該第一處理電路來對該可程式化邏輯電路進行程式化,以規劃該可程式化邏輯電路包含一直接記憶體存取引擎以及至少一物理引擎。該直接記憶體存取引擎用以透過直接記憶體存取方式來存取一第一記憶體。該至少一物理引擎,用來透過該直接記憶體存取引擎,以自該第一記憶體讀取所要處理的資料。該第一處理電路與該第二處理電路設置於同一晶片。
第1圖為本發明運算裝置之一實施例的示意圖。運算裝置100包含有處理電路102、104,於本實施例中,處理電路102、104均設置於同一晶片10中,例如,晶片10可以是多重處理系統晶片(multiprocessor system on a chip, MPSoC),然而,本發明並不以此為限。基於多重處理系統晶片的架構,處理電路104作為處理系統(processing system, PS),並包含通用處理器(general-purpose processor)122、記憶體控制器(memory controller)124與其它電路(未顯示)。通用處理器122包含至少一個處理器核心,例如通用處理器122可具有多個處理器核心,包含採用ARM Cotex-A53來實現的應用處理器單元(application processor unit, APU)以及採用ARM Cotex-R5來實現的即時處理器單元(real-time processor unit, RPU)。另外,記憶體控制器124則是用來控制記憶體16的資料存取,例如記憶體16可以是動態隨機存取記憶體(dynamic random access memory, DRAM)。
處理電路104中的通用處理器122可執行一應用程式APP,來將一位元流(bitstream)BS下載至處理電路102來對可程式化邏輯電路110進行程式化,例如可程式化邏輯電路110為現場可程式化邏輯閘陣列(field programmable gate array, FPGA),以及位元流BS為包含現場可程式化邏輯閘陣列之程式化資訊的檔案。如第1圖所示,處理電路102與處理電路104可透過一傳輸介面103來彼此溝通,例如傳輸介面103可以是AXI (Advanced eXtensible Interface)。基於位元流BS的程式化,本實施例中的可程式化邏輯電路110可包含至少一物理引擎(physical engine, PE)112與一資料儲存控制電路114。資料儲存控制電路114用以控制一儲存裝置12的資料存取,例如儲存裝置12可以是傳統硬碟(hard disk drive, HDD)或是固態硬碟(solid-state drive, SSD)。此外,儲存裝置12可應用於物件儲存(object storage),不同於檔案儲存(file storage),物件儲存是一種無階層資料儲存方法,並不使用目錄樹,而離散的資料單元(物件)存在於儲存區中的相同層次,且每個物件都有唯一的識別碼,以供應用程式擷取物件,物件儲存廣泛應用於雲端儲存,因此,本發明所揭示的運算裝置100另可應用於物件儲存裝置的資料處理,舉例來說,儲存裝置12可用來儲存分散式儲存系統的鍵值資料庫(key-value store)。此外,資料儲存控制電路114亦可用以控制記憶體16的資料存取。
透過可程式化邏輯電路110所實作的物理引擎112可作為一加速電路(accelerator),主要是設計來提供硬體資料處理加速功能,因此,物理引擎112所要處理的資料可以是由資料儲存控制電路114來提供。請一併參閱第1圖與第2圖,第2圖為第1圖所示之物理引擎(例如加速電路)112與資料儲存控制電路114之間進行溝通的示意圖。於步驟a,通用處理器122執行應用程式APP而發出一指令(例如Get(key))至資料儲存控制電路114,於一實施例中,資料儲存控制電路114中可設置一指令佇列(圖中標示為CMDQ)202來暫存通用處理器122所發出的每個指令,以提升指令執行效能,然而,本發明並不以此為限,於其它實施例中,資料儲存控制電路114亦可省略指令佇列202。於步驟b,資料儲存控制電路114依據指令佇列202中的指令(例如Get(key))自儲存裝置12讀取一資料(例如鍵值資料庫中匹配該指令所指示之鍵(key)的相對應值(value)),並寫入至記憶體16中保留給處理電路102使用的儲存空間206,例如資料儲存控制電路114可採用直接記憶體存取查找表(direct memory access (DMA) description table)來存取記憶體16,其中直接記憶體存取查找表可以透過PRP(Physical Region Page)或是SGL(Scatter/Gatter List)來紀錄位址資訊。於步驟c,記憶體控制器124自記憶體16中的儲存空間206讀取該資料,並將該資料寫入記憶體16中供處理電路104使用的儲存空間204。於步驟d,記憶體控制器124再自記憶體16中的儲存空間204讀取該資料,並傳送至物理引擎112來執行硬體資料加速運算。於步驟e,物理引擎112透過記憶體控制器124來將該資料的運算結果寫入記憶體16中的儲存空間204。
如第2圖所示,物理引擎112所要處理的資料自儲存裝置12讀取之後,會先傳送至處理電路104那端所使用的記憶體16,之後再由處理電路104那端所使用的記憶體16傳送至物理引擎112,然而,這些資料搬移操作會嚴重影響資料處理效能,為了改善此一問題,本發明額外揭露一種儲存裝置(例如傳統硬碟或固態硬碟)與物理引擎(例如加速電路)之間的溝通機制。
第3圖為本發明運算裝置之另一實施例的示意圖。運算裝置300包含有處理電路104、302,於本實施例中,處理電路104、302均設置於同一晶片30中,例如,晶片30可以是多重處理系統晶片,然而,本發明並不以此為限。基於多重處理系統晶片的架構,處理電路104中的通用處理器122可執行一應用程式APP,來將一位元流BS’下載至處理電路302來對可程式化邏輯電路310進行程式化,例如可程式化邏輯電路310為現場可程式化邏輯閘陣列,以及位元流BS’為包含現場可程式化邏輯閘陣列之程式化資訊的檔案。如第3圖所示,處理電路302與處理電路104可透過傳輸介面(例如AXI)103來彼此溝通。基於位元流BS’的程式化,本實施例中的可程式化邏輯電路310包含至少一物理引擎312、一直接記憶體存取(direct memory access, DMA)引擎314以及一資料儲存控制電路316。直接記憶體存取引擎314用以透過直接記憶體存取方式來對處理電路302所使用的記憶體14進行存取,例如記憶體14可以是動態隨機存取記憶體。資料儲存控制電路316用以控制儲存裝置12的資料存取以及記憶體14的資料存取。此外,本發明所揭示的運算裝置300亦可應用於物件儲存裝置的資料處理,舉例來說,儲存裝置12可用來儲存分散式儲存系統的鍵值資料庫。
本實施例中,透過可程式化邏輯電路310所實作的物理引擎312可作為加速電路,主要是設計來提供硬體資料處理加速功能,資料儲存控制電路316可將要透過物理引擎312進行運算的資料自儲存裝置12讀取出來並寫入至記憶體14,記憶體14可用以作為物理引擎312的緩衝器(buffer),而物理引擎312可透過直接記憶體存取引擎314,以自記憶體14讀取所要處理的資料。請一併參閱第3圖與第4圖,第4圖為第3圖所示之物理引擎(例如加速電路)312與資料儲存控制電路316之間進行溝通之一實施例的示意圖。於步驟a,通用處理器122執行應用程式APP而發出一指令(例如Get(key))至資料儲存控制電路316,於一實施例中,資料儲存控制電路316可設置一指令佇列(圖中標示為CMDQ)402來暫存通用處理器122所發出的各個指令,以提升指令執行效能,然而,本發明並不以此為限,於其它實施例中,資料儲存控制電路316亦可省略指令佇列402。於步驟b,通用處理器122執行應用程式APP來將一物理引擎識別碼(physical engine identifier, PEID)寫入至物理引擎312,例如物理引擎312中規劃一暫存器,可用來儲存該物理引擎識別碼。於步驟c,物理引擎312將該物理引擎識別碼寫入至直接記憶體存取引擎314來設定一直接記憶體存取通道(DMA channel),接著便會觸發硬體資料加速運算。於步驟d,資料儲存控制電路316依據指令佇列402中的指令(例如Get(key))自儲存裝置12讀取一資料,並寫入至處理電路302那端的記憶體14。於步驟e,資料儲存控制電路316會針對直接記憶體存取引擎314進行資料儲存位置與資料長度資訊(例如直接記憶體存取查找表)的同步。於步驟f,當資料長度達到一個預定門檻值,直接記憶體存取引擎314便會開始透過直接記憶體存取方式來將該資料自記憶體14讀出並傳送至物理引擎312來執行硬體資料加速運算。於步驟g,物理引擎312透過記憶體控制器124來將該資料的運算結果寫入處理電路104那端的記憶體16。
如第4圖所示,物理引擎312所要處理的資料自儲存裝置12讀取之後,會先傳送至處理電路302那端所使用的記憶體14(亦即靠近處理電路302的記憶體),之後再由直接記憶體存取引擎314將資料從記憶體14讀取並傳送至物理引擎312來進行處理,由於無需將資料自儲存裝置12傳送至處理電路104那端所使用的記憶體16(亦即靠近處理電路104的記憶體),可大幅減少資料搬移所需耗費的時間,進而提升資料處理效能。
第4圖所示之儲存裝置(例如傳統硬碟或固態硬碟)與物理引擎(例如加速電路)之間的溝通機制可由以下虛擬碼(pseudo code)來表示:
BEGIN
fp = OPEN(‘dir’)                  # open file in “dir” location
pe = DOWNLOAD(bit_file) # download bitstream to PL and get pe class
ALLOCATE inBuf, outBuf  # dram for keys and output result
COPY(fp, inBuf)          # load file content to buffer
pe.SETID(PEID)        # set Physical Engine ID and join PE to VDMA
pe.START()            #after configure out PE and then start calculation
for keyx in inBuf:
GET(keyx, PEID)           # send command to KV storage
pe.WAIT()                     # wait for calculation end
outBuf = pe.TX()               # get result
END
於第4圖所示之實施例中,物理引擎312透過記憶體控制器124來將資料的最終運算結果寫入處理電路104那端的記憶體16。於另一實施例中,直接記憶體存取引擎314將資料自記憶體14讀出並傳送至物理引擎312來執行硬體資料加速運算,物理引擎312則是透過直接記憶體存取引擎314來將該資料的最終運算結果寫回至記憶體14,以及資料儲存控制電路316後續會自記憶體14讀取該資料的最終運算結果並寫入儲存裝置12,如前所述,儲存裝置12可儲存鍵值資料庫,因此,該資料的最終運算結果會作為值(value)而寫入至鍵值資料庫,而通用處理器122後續可執行應用程式APP來發出指令(例如Get(key)),以透過該資料的最終運算結果所搭配的鍵(key)來自儲存裝置12讀回該資料的最終運算結果。
此外,於上述儲存裝置(例如傳統硬碟或固態硬碟)與物理引擎(例如加速電路)之間的溝通機制的兩種實施例中,記憶體14亦可作為物理引擎312的暫時緩衝器(temporary buffer),因此,於物理引擎312處理該資料的過程中,物理引擎312另可透過直接記憶體存取引擎314來將該資料的暫時運算結果寫入至記憶體14。
運算裝置100/300可存取儲存裝置12並具備物理引擎112/312可提供硬體資料加速運算,因此,運算裝置100/300與儲存裝置12可作為運算型儲存裝置(computational storage),於一實施例中,本發明運算裝置可具備網路存取能力,因此,遠端主機(remote host)便可透過網路(例如區域網路)來將資料、程式等傳送至運算裝置,並透過運算裝置來執行並完成所要的資料分析(data analysis)。
第5圖為本發明運算裝置與遠端主機之間的溝通機制的第一實施例的示意圖。除了通用處理器122與記憶體控制器124,處理電路104另包含網路介面504。資料儲存控制電路114/316包含網路介面502,例如透過可程式化邏輯電路110/310所實作的網路介面502可包含媒體存取控制(media access control, MAC)電路以及傳輸控制協定/網際網路協定(transmission control protocol/internet protocol, TCP/IP)卸載引擎(offload engine)。此外,處理電路104會安裝適當的函式庫(library),例如Xilinx Python productivity for Zynq (PYNQ),如此一來,處理電路104上所執行的應用程式APP便可透過適當的函式庫來控制處理電路102/302中的可程式化邏輯電路110/310。本實施例中,遠端主機520透過網路(例如區域網路)530來將應用程式APP與位元流BS/BS’傳送至處理電路104,亦即,處理電路104的網路介面504透過網路530來下載應用程式APP與位元流BS/BS’;另外,遠端主機510透過網路530來將資料(例如資料庫資料)傳送至處理電路102/302,亦即處理電路102/302的網路介面502透過網路530來自遠端主機510接收欲寫入至儲存裝置12的資料(例如資料庫資料)。
假設本實施例的儲存裝置12是作為物件儲存裝置,例如儲存裝置12用以儲存鍵值資料庫,則遠端主機520另會透過網路530來將鍵檔(key file)傳送至處理電路104。鍵檔可被處理電路104參考使用,以便自儲存裝置12中的鍵值資料庫讀出所要處理的資料(亦即匹配某個鍵的值),例如處理電路104所執行的應用程式APP可對鍵檔進行解析來得到複數個鍵並寫入至記憶體16中所配置的鍵緩衝器(key buffer)。
處理電路104中通用處理器122所執行的應用程式APP透過適當的函式庫(例如Xilinx PYNQ)來將位元流BS/BS’下載至處理電路102/302。此外,通用處理器122所執行的應用程式APP另於記憶體16中配置輸出緩衝器(output buffer)來儲存處理電路102/302中物理引擎112/312的資料運算結果,並觸發物理引擎112/312的硬體資料加速運算操作。如前所述,通用處理器122所執行的應用程式APP會發出指令(例如get(key)),因此會將鍵緩衝器中的一個鍵作為指令的參數而傳送至資料儲存控制電路114/316,以透過資料儲存控制電路114/316來自儲存裝置12讀取一資料(亦即鍵所對應的值)並傳送至物理引擎112/312進行處理,之後,物理引擎112/312再將該資料(亦即鍵所對應的值)的運算結果寫入至記憶體16中的輸出緩衝器。實作上,通用處理器122所執行的應用程式APP可依序傳送複數個鍵至資料儲存控制電路114/316,因此,物理引擎112/312便會將複數筆資料(亦即複數個鍵所分別對應的複數個值)的運算結果寫入至記憶體16中的輸出緩衝器,而通用處理器122所執行的應用程式APP會基於記憶體16中輸出緩衝器所儲存的複數個運算結果來產生一個紀錄檔(log file),並透過網路530來將該紀錄檔回傳給遠端主機520。
第5圖所示之實施例中,資料(例如資料庫資料)以及程式(例如應用程式與位元流)分別由不同的遠端主機所提供,然而,本發明並不以此為限,於其它實施例中,資料(例如資料庫資料)以及程式(例如應用程式與位元流)亦可由單一遠端主機所提供。 第6圖為本發明運算裝置與遠端主機之間的溝通機制的第二實施例的示意圖。本實施例中,遠端主機610透過網路530來將應用程式APP與位元流BS/BS’傳送至處理電路104,亦即,處理電路104的網路介面504透過網路530來下載應用程式APP與位元流BS/BS’;另外,同一遠端主機610另透過網路530來將資料(例如資料庫資料)傳送至處理電路102/302,亦即處理電路102/302的網路介面502透過網路530來自遠端主機610接收欲寫入至儲存裝置12的資料(例如資料庫資料)。假設本實施例的儲存裝置12是作為物件儲存裝置,例如儲存裝置12用以儲存鍵值資料庫,則遠端主機610另透過網路530來將鍵檔傳送至處理電路104,以供後續讀取鍵值資料庫。
第5圖與第6圖所示之實施例中,處理電路102/302本身具有網路介面502以及處理電路104本身也具有網路介面504,然而,本發明並不以此為限,於其它實施例中,本發明運算裝置可以僅有一個處理電路具有網路介面。第7圖為本發明運算裝置與遠端主機之間的溝通機制的第三實施例的示意圖。資料儲存控制電路114/316包含前述的網路介面502,並另包含資料框分離電路(data frame splitter)702。處理電路104會安裝適當的函式庫(例如Xilinx PYNQ),如此一來,處理電路104上所執行的應用程式APP便可透過適當的函式庫來控制處理電路102/302中的可程式化邏輯電路110/310。本實施例中,遠端主機520透過網路530以及處理電路102/302來將應用程式APP與位元流BS/BS’傳送至處理電路104,亦即,處理電路102/302的網路介面502透過網路530來下載應用程式APP與位元流BS/BS’,而資料框分離電路702可根據資料框所夾帶的資訊(例如網路位址資訊以及連接埠資訊)來將應用程式APP與位元流BS/BS’分離出來,並透過適當網路驅動程式來將應用程式APP與位元流BS/BS’轉送至處理電路104。另外,遠端主機510則透過網路530來將資料(例如資料庫資料)傳送至處理電路102/302,亦即處理電路102/302的網路介面502透過網路530來自遠端主機510接收欲寫入至儲存裝置12的資料(例如資料庫資料),此時,根據資料框所夾帶的資訊(例如網路位址資訊以及連接埠資訊),資料框分離電路702會判斷無需將欲寫入至儲存裝置12的資料(例如資料庫資料) 轉送至處理電路104。
假設本實施例的儲存裝置12是作為物件儲存裝置,例如儲存裝置12用以儲存鍵值資料庫,則遠端主機520另透過網路530以及處理電路102/302來將鍵檔傳送至處理電路104,亦即,處理電路102/302的網路介面502透過網路530來下載鍵檔,而資料框分離電路702可根據資料框所夾帶的資訊(例如網路位址資訊以及連接埠資訊)來將鍵檔分離出來,並透過適當網路驅動程式來將鍵檔轉送至處理電路104。鍵檔可被處理電路104參考使用,以便自儲存裝置12中的鍵值資料庫讀出所要處理的資料,例如處理電路104所執行的應用程式APP可對鍵檔進行解析來得到複數個鍵並寫入至記憶體16中所配置的鍵緩衝器。
處理電路104中通用處理器122所執行的應用程式APP透過適當的函式庫(例如Xilinx PYNQ)來將位元流BS/BS’下載至處理電路102/302。此外,通用處理器122所執行的應用程式APP另於記憶體16中配置輸出緩衝器來儲存處理電路102/302中物理引擎112/312的資料運算結果,並觸發物理引擎112/312的硬體資料加速運算操作。如前所述,通用處理器122所執行的應用程式APP會發出指令(例如get(key)),因此會將鍵緩衝器中的一個鍵作為指令的參數而傳送至資料儲存控制電路114/316,以透過資料儲存控制電路114/316來自儲存裝置12讀取一資料(亦即鍵所對應的值)並傳送至物理引擎112/312進行處理,之後,物理引擎112/312再將該資料(亦即鍵所對應的值)的運算結果寫入至記憶體16中的輸出緩衝器。實作上,通用處理器122所執行的應用程式APP可依序傳送複數個鍵至資料儲存控制電路114/316,因此,物理引擎112/312會將複數筆資料(亦即複數個鍵所分別對應的複數個值)的運算結果寫入至記憶體16中的輸出緩衝器,而通用處理器122所執行的應用程式APP會基於記憶體16中輸出緩衝器所儲存的複數個運算結果來產生一個紀錄檔,並透過網路530來將該紀錄檔回傳給遠端主機520。
第7圖所示之實施例中,資料(例如資料庫資料)以及程式(例如應用程式與位元流)分別由不同的遠端主機所提供,然而,本發明並不以此為限,於其它實施例中,資料(例如資料庫資料)以及程式(例如應用程式與位元流)亦可由同一遠端主機所提供。 第8圖為本發明運算裝置與遠端主機之間的溝通機制的第四實施例的示意圖。本實施例中,遠端主機610透過網路530以及處理電路102/302來將應用程式APP與位元流BS/BS’傳送至處理電路104,亦即,處理電路102/302的網路介面502透過網路530來下載應用程式APP與位元流BS/BS’,後續再透過資料框分離電路702轉送至處理電路104;另外,同一遠端主機610另透過網路530來將資料(例如資料庫資料)傳送至處理電路102/302,亦即處理電路102/302的網路介面502透過網路530來自遠端主機610接收欲寫入至儲存裝置12的資料(例如資料庫資料)。假設本實施例的儲存裝置12是作為物件儲存裝置,例如儲存裝置12用以儲存鍵值資料庫,則遠端主機610另透過網路530以及處理電路102/302來將鍵檔傳送至處理電路104,以供後續讀取鍵值資料庫。
於第5圖至第8圖中,遠端主機與運算裝置之間是一對一的連接關係,然而,本發明並不以此為限,於其它實施例中,本發明運算裝置100/300可支援分散式運算(distributed computing)的應用,因此,處理電路104可另執行應用程式APP而作為一分散式運算架構(例如Apache Spark)的一個工作節點(worker node),換言之,遠端主機與運算裝置之間可以是一對多的連接關係。於一實施例中,遠端主機510、520可透過網路530而連接至複數個運算裝置100/300(亦即複數個工作節點),並透過複數個運算裝置100/300來實現分散式運算,其中複數個運算裝置100/300中的每一運算裝置採用第5圖(或第7圖)所示的網路介面配置。於另一實施例中,遠端主機610可透過網路530而連接至複數個運算裝置100/300(亦即複數個工作節點) ,並透過複數個運算裝置100/300來實現分散式運算,其中複數個運算裝置100/300中的每一運算裝置採用第6圖(或第8圖)所示的網路介面配置。
如前所述,可程式化邏輯電路310可透過程式化來規劃至少一物理引擎312,於實際應用時,可程式化邏輯電路310可根據需求來決定物理引擎312的個數,例如,可程式化邏輯電路310可透過程式化來規劃複數個物理引擎312,以及這些物理引擎312可透過處理電路302那端的記憶體14來得到儲存裝置12中所要處理的資料。第9圖為複數個物理引擎(例如加速電路)312a、312b、312c與資料儲存控制電路316之間進行溝通之一實施例的示意圖。本實施例中,可程式化邏輯電路310包含複數個物理引擎312a、312b、312c (分別標示為PEa、PEb與PEc),以及通用處理器122包含應用處理器單元902(標示為Cortex-A53)與即時處理器單元904(標示為Cortex-R5)。於步驟a,通用處理器122中的應用處理器單元902將不同的物理引擎識別碼PEIDa、PEIDb與PEIDc分別寫入至不同的物理引擎312a、312b、312c,例如物理引擎312a、312b、312c中皆規劃一暫存器,用來儲存相對應的物理引擎識別碼。於步驟b,通用處理器122中的即時處理器單元904發送複數個指令GetCMD至資料儲存控制電路316,而每個指令GetCMD會夾帶兩個參數Key與PEID,其中參數Key是用來自儲存裝置12所儲存的鍵值資料庫中讀取相配對的值,而參數PEID則用來指示參數Key所配對的值要交由那個物理引擎進行運算,例如該複數個指令GetCMD包含GetCMD(Key1, PEIDa)、GetCMD(Key2, PEIDb)、GetCMD(Key3, PEIDc)、GetCMD(Key4, PEIDc)等等。於步驟c,資料儲存控制電路316根據指令(例如GetCMD(Key1, PEIDa)、GetCMD(Key2, PEIDb)、GetCMD(Key3, PEIDc))來自儲存裝置12讀取資料(例如與鍵Key1配對的值D1、與鍵Key2配對的值D2、與鍵Key3配對的值D3)並寫入至記憶體14。指令GetCMD所夾帶的參數PEID可被寫入至直接記憶體存取引擎314,於步驟d,直接記憶體存取引擎314便可基於物理引擎識別碼(例如PEIDa、PEIDb、PEIDc)來自記憶體14讀取資料(例如D1、D2、D3) 並分發至相對應的物理引擎312a、312b、312c來進行運算。
考量資料處理的彈性,於另一實施例中,通用處理器122於步驟b所發送之每個指令GetCMD所夾帶的參數,除了原本的參數Key與PEID,另可包含其它參數(例如流程控制旗標bFlag),因此,通用處理器122所發出的複數個指令GetCMD可包含GetCMD(Key1, PEIDa, bFlag)、GetCMD(Key2, PEIDb, bFlag)、GetCMD(Key3, PEIDc, bFlag)、GetCMD(Key4, PEIDc, bFlag)等等。指令GetCMD所夾帶的流程控制旗標bFlag可被寫入至直接記憶體存取引擎314,於步驟d,直接記憶體存取引擎314可基於物理引擎識別碼(例如PEIDa、PEIDb、PEIDc)以及相關的流程控制旗標bFlag來自記憶體14讀取資料(例如D1、D2、D3) 並分發至相對應的物理引擎312a、312b、312c來進行運算,其中當某個指令GetCMD所夾帶的流程控制旗標bFlag設定為一預定值時,則相對應的資料(例如D1、D2、D3)會分割為複數個資料區段(例如長度固定4K Bytes大小的資料區段),並由相對應的物理引擎312a、312b、312c (例如PEa、PEb、PEc)來分別對該複數個資料區段進行處理。於一實施方式中,資料分割可於直接記憶體存取引擎314完成,並將分割後的複數個資料區段傳送至相對應的物理引擎312a、312b、312c。於另一實施例中,直接記憶體存取引擎314可將未分割資料與相關控制資訊傳送至相對應的物理引擎312a、312b、312c,再由相對應的物理引擎312a、312b、312c來執行資料分割。
如前所述,可程式化邏輯電路110/310中的物理引擎112/312可作為加速電路來執行硬體資料加速運算,根據不同應用的需求,物理引擎112/312可於儲存裝置12與遠端主機510、520、610之間傳遞上傳資料(up traffic data)的過程中提供額外處理,及/或於遠端主機510、520、610與儲存裝置12之間傳遞下載資料(down traffic data)的過程中提供額外處理,舉例來說,物理引擎112/312所提供的操作可包含加密、解密、壓縮、解壓縮、統計分析等等。
第10圖為第3圖所示之物理引擎312於儲存裝置12與遠端主機510、520、610之間傳遞下載資料的過程中提供額外處理之一實施例的示意圖。當運算裝置300自遠端主機接收到應用程式與位元流,並根據位元流來對可程式化邏輯電路310進行程式化之後,可程式化邏輯電路310(包含物理引擎312、直接記憶體存取引擎314與資料儲存控制電路316)便可開始處理來自遠端主機的資料寫入要求,例如Put(Key, Data)。於步驟a,遠端主機510、610透過網路530將指令(例如Put(Key, Data))與資料傳送至網路介面502。於步驟b,資料儲存控制電路316根據指令來將資料寫入至直接記憶體存取引擎314的內部緩衝器。於步驟c,直接記憶體存取引擎314將內部緩衝器中的資料傳送至物理引擎312以進行資料處理(例如加密、壓縮或統計分析)。資料處理的操作完成之後,於步驟d,物理引擎312透過直接記憶體存取引擎314來將資料處理(例如加密、壓縮或統計分析)的運算結果寫入至記憶體14。於步驟e,資料儲存控制電路316自記憶體14讀取資料處理(例如加密、壓縮或統計分析)的運算結果並寫入至儲存裝置12。
第11圖為第3圖所示之物理引擎312於儲存裝置12與遠端主機510、520、610之間傳遞上傳資料的過程中提供額外處理之一實施例的示意圖。當運算裝置300自遠端主機接收到應用程式與位元流,並根據位元流來對可程式化邏輯電路310進行程式化之後,可程式化邏輯電路310(包含物理引擎312、直接記憶體存取引擎314與資料儲存控制電路316)便可開始處理來自遠端主機的資料讀取要求,例如Get(Key)。於步驟a,資料儲存控制電路316根據指令(例如Get(Key))自儲存裝置12讀取資料,並將資料寫入至直接記憶體存取引擎314的內部緩衝器。於步驟b,直接記憶體存取引擎314將內部緩衝器中的資料傳送至物理引擎312以進行資料處理(例如解密、解壓縮或統計分析)。資料處理的操作完成之後,於步驟c,物理引擎312透過直接記憶體存取引擎314來將資料處理(例如解密、解壓縮或統計分析)的運算結果寫入至記憶體14。於步驟d,資料儲存控制電路316自記憶體14讀取資料處理(例如解密或統計分析)的運算結果,並將資料處理(例如解密、解壓縮或統計分析)的運算結果傳送至網路介面502。於步驟e,網路介面502透過網路530來將資料處理(例如解密、解壓縮或統計分析)的運算結果回傳給遠端主機520、610。
第12圖為第3圖所示之物理引擎312於儲存裝置12與遠端主機510、520、610之間傳遞上傳資料的過程中提供額外處理之另一實施例的示意圖。當運算裝置300自遠端主機接收到應用程式與位元流,並根據位元流來對可程式化邏輯電路310進行程式化之後,可程式化邏輯電路310(包含物理引擎312、直接記憶體存取引擎314與資料儲存控制電路316)便可開始處理來自遠端主機的資料讀取要求,例如Get(Key)。於步驟a,資料儲存控制電路316自儲存裝置12讀取資料並寫入至記憶體14。於步驟b,直接記憶體存取引擎314自記憶體14讀取資料並傳送至物理引擎312來進行資料處理(例如解密、解壓縮或統計分析)。資料處理的操作完成之後,於步驟c,物理引擎312透過直接記憶體存取引擎314來將資料處理(例如解密、解壓縮或統計分析)的運算結果寫入至記憶體14。於步驟d,資料儲存控制電路316自記憶體14讀取資料處理(例如解密、解壓縮或統計分析)的運算結果,並將資料處理(例如解密、解壓縮或統計分析)的運算結果傳送至網路介面502。於步驟e,網路介面502透過網路530來將資料處理(例如解密、解壓縮或統計分析)的運算結果回傳給遠端主機520、610。
於上述實施例中,資料儲存控制電路114/316可包含網路處理(network handler)功能區塊、儲存處理(storage handler) 功能區塊以及記憶體處理(memory handler)功能區塊,其中網路處理功能區塊主要負責提供網路存取能力(例如網路介面502),儲存處理功能區塊主要負責提供用以跟儲存裝置12溝通的介面以控制儲存裝置12的存取,以及記憶體處理功能區塊主要負責提供用以跟記憶體14溝通的介面以控制記憶體14的存取。然而,本發明並不以此為限,資料儲存控制電路114/316實際上可根據需求來規劃各種功能區塊來實現所要的資料儲存控制功能,亦即,除了網路處理功能區塊、儲存處理功能區塊以及記憶體處理功能區塊,資料儲存控制電路114/316另可包含其它功能區塊。
綜上所述,本發明運算裝置中的可程式化邏輯電路(例如現場可程式化邏輯閘陣列)可設置資料儲存控制電路來作為物件儲存(例如鍵值資料庫)的介面,相較於傳統的檔案儲存,物件儲存能更有效率地存取資料。此外,本發明運算裝置中的可程式化邏輯電路(例如現場可程式化邏輯閘陣列)可設置網路介面,其中網路介面可包含TCP/IP卸載引擎,故本發明運算裝置中的通用處理器便可無需介入TCP/IP堆疊的處理。再者,本發明運算裝置中的可程式化邏輯電路(例如現場可程式化邏輯閘陣列)可設置物理引擎來負責硬體資料加速運算以及直接記憶體存取引擎來負責提供物理引擎所要處理的資料,由於可程式化邏輯電路靠近儲存裝置(例如傳統硬碟或固態硬碟),因此能透過直接記憶體存取引擎來更有效率地將儲存裝置中的資料提供給物理引擎,此外,物理引擎另可根據應用需求而於儲存裝置與遠端主機之間傳遞上傳資料/下載資料的過程中提供額外資料處理(例如加密、解密、壓縮、解壓縮、統計分析等等)。 以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
10, 30:晶片 12:儲存裝置 16, 14:記憶體 100, 300:運算裝置 102, 104, 302:處理電路 103:傳輸介面 110, 310:可程式化邏輯電路 112, 312, 312a, 312b, 312c:物理引擎 114, 316:資料儲存控制電路 122:通用處理器 124:記憶體控制器 202, 402:指令佇列 204, 206:儲存空間 314:直接記憶體存取引擎 510, 520, 610:遠端主機 530:網路 502, 504:網路介面 702:資料框分離電路 902:應用處理器單元 904:即時處理器單元 APP:應用程式 BS, BS’:位元流 D1, D2, D3:資料
第1圖為本發明運算裝置之一實施例的示意圖。 第2圖為第1圖所示之物理引擎與資料儲存控制電路之間進行溝通的示意圖。 第3圖為本發明運算裝置之另一實施例的示意圖。 第4圖為第3圖所示之物理引擎與資料儲存控制電路之間進行溝通之一實施例的示意圖。 第5圖為本發明運算裝置與遠端主機之間的溝通機制的第一實施例的示意圖。 第6圖為本發明運算裝置與遠端主機之間的溝通機制的第二實施例的示意圖。 第7圖為本發明運算裝置與遠端主機之間的溝通機制的第三實施例的示意圖。 第8圖為本發明運算裝置與遠端主機之間的溝通機制的第四實施例的示意圖。 第9圖為複數個物理引擎與資料儲存控制電路之間進行溝通之一實施例的示意圖。 第10圖為第3圖所示之物理引擎於儲存裝置與遠端主機之間傳遞下載資料的過程中提供額外處理之一實施例的示意圖。 第11圖為第3圖所示之物理引擎於儲存裝置與遠端主機之間傳遞上傳資料的過程中提供額外處理之一實施例的示意圖。 第12圖為第3圖所示之物理引擎於儲存裝置與遠端主機之間傳遞上傳資料的過程中提供額外處理之另一實施例的示意圖。
12:儲存裝置
14,16:記憶體
122:通用處理器
124:記憶體控制器
312:物理引擎
314:直接記憶體存取引擎
316:資料儲存控制電路
402:指令佇列

Claims (20)

  1. 一種運算裝置,包含: 一第一處理電路,包含一可程式化邏輯電路;以及 一第二處理電路,包含一通用處理器,用以執行一應用程式,來將一位元流下載至該第一處理電路來對該可程式化邏輯電路進行程式化,以規劃該可程式化邏輯電路包含: 一直接記憶體存取引擎,用以透過直接記憶體存取方式來存取一第一記憶體;以及 至少一物理引擎,用來透過該直接記憶體存取引擎,以自該第一記憶體讀取所要處理的資料; 其中該第一處理電路與該第二處理電路設置於同一晶片。
  2. 如請求項1所述之運算裝置,其中該位元流對該可程式化邏輯電路進行程式化,以規劃該可程式化邏輯電路另包含: 一資料儲存控制電路,用以控制一儲存裝置與該第一記憶體的資料存取; 該第二處理電路發出一指令至該資料儲存控制電路;該資料儲存控制電路依據該指令自該儲存裝置讀出一資料,並寫入至該第一記憶體;以及該直接記憶體存取引擎自該第一記憶體讀取該資料並傳送至該至少一物理引擎來進行處理。
  3. 如請求項1所述之運算裝置,其中該第二處理電路另包含: 一記憶體控制器,用以控制一第二記憶體的存取; 該至少一物理引擎另透過該記憶體控制器來將該資料的最終運算結果寫入至該第二記憶體。
  4. 如請求項3所述之運算裝置,其中於該至少一物理引擎處理該資料的過程中,該至少一物理引擎另透過該直接記憶體存取引擎來將該資料的暫時運算結果寫入至該第一記憶體。
  5. 如請求項1所述之運算裝置,其中該位元流對該可程式化邏輯電路進行程式化,以規劃該可程式化邏輯電路另包含: 一資料儲存控制電路,用以控制一儲存裝置與該第一記憶體的資料存取; 該至少一物理引擎另透過該直接記憶體存取引擎來將該資料的最終運算結果寫入至該第一記憶體,以及該資料儲存控制電路自該第一記憶體讀取該資料的最終運算結果並寫入至該儲存裝置。
  6. 如請求項5所述之運算裝置,其中於該至少一物理引擎處理該資料的過程中,該至少一物理引擎另透過該直接記憶體存取引擎來將該資料的暫時運算結果寫入至該第一記憶體。
  7. 如請求項2所述之運算裝置,其中該可程式化邏輯電路包含複數個物理引擎;該第二處理電路將複數個物理引擎識別碼分別寫入至該複數個物理引擎;該指令的參數包含一特定物理引擎識別碼;以及該直接記憶體存取引擎自該第一記憶體讀取該資料並傳送至該複數個物理引擎中對應該特定物理引擎識別碼之一物理引擎。
  8. 如請求項2所述之運算裝置,其中該指令的參數包含一流程控制旗標;以及當該流程控制旗標設定為一預定值時,該資料會分割為複數個資料區段,並由該至少一物理引擎來分別對該複數個資料區段進行處理。
  9. 如請求項1所述之運算裝置,其中該位元流對該可程式化邏輯電路進行程式化,以規劃該可程式化邏輯電路另包含: 一資料儲存控制電路,用以控制一儲存裝置與該第一記憶體的資料存取,並自一網路接收一指令與一資料; 該資料儲存控制電路依據該指令將該資料傳送至該直接記憶體存取引擎,以及該直接記憶體存取引擎將該資料傳送至該至少一物理引擎來進行處理。
  10. 如請求項9所述之運算裝置,其中該至少一物理引擎透過該直接記憶體存取引擎來將該資料的運算結果寫入該第一記憶體,以及該資料儲存控制電路自該第一記憶體讀取該資料的運算結果並寫入該儲存裝置。
  11. 如請求項1所述之運算裝置,其中該位元流對該可程式化邏輯電路進行程式化,以規劃該可程式化邏輯電路另包含: 一資料儲存控制電路,用以控制一儲存裝置與該第一記憶體的資料存取,並自一網路接收一指令; 該資料儲存控制電路依據該指令來自該儲存裝置讀取一資料,以及該資料會透過該直接記憶體存取引擎傳送至該至少一物理引擎來進行處理。
  12. 如請求項11所述之運算裝置,其中該資料儲存控制電路將該資料直接傳送至該直接記憶體存取引擎,再由該直接記憶體存取引擎將該資料傳送至該至少一物理引擎。
  13. 如請求項11所述之運算裝置,其中該資料儲存控制電路將該資料先寫入至該第一記憶體,再由該直接記憶體存取引擎自該第一記憶體讀取該資料並傳送至該至少一物理引擎。
  14. 如請求項11所述之運算裝置,其中該至少一物理引擎透過該直接記憶體存取引擎來將該資料的運算結果寫入該第一記憶體,以及該資料儲存控制電路會自該第一記憶體讀取該資料的運算結果並透過該網路來回傳該資料的運算結果。
  15. 如請求項1所述之運算裝置,其中該位元流對該可程式化邏輯電路進行程式化,以規劃該可程式化邏輯電路另包含: 一資料儲存控制電路,用以控制一儲存裝置的資料存取; 該資料儲存控制電路透過一網路來接收欲寫入至該儲存裝置之資料,以及該第二處理電路透過該網路來下載該應用程式與該位元流。
  16. 如請求項15所述之運算裝置,其中該第二處理電路另執行該應用程式而作為一分散式運算架構的一工作節點。
  17. 如請求項15所述之運算裝置,其中該資料儲存控制電路包含一第一網路介面,用以透過該網路來自一第一主機接收欲寫入至該儲存裝置之資料;以及該第二處理電路包含一第二網路介面,用以透過該網路來自一第二主機下載該應用程式與該位元流。
  18. 如請求項15所述之運算裝置,其中該資料儲存控制電路包含一第一網路介面,用以透過該網路來自一主機接收欲寫入至該儲存裝置之資料;以及該第二處理電路包含一第二網路介面,用以透過該網路來自該主機下載該應用程式與該位元流。
  19. 如請求項15所述之運算裝置,其中該資料儲存控制電路包含: 一網路介面,用以透過該網路來自一第一主機接收欲寫入至該儲存裝置之資料並自一第二主機下載該應用程式與該位元流,其中該網路介面包含一資料框分離電路,用以將自該第二主機所下載之該應用程式與該位元流轉送至該第二處理電路。
  20. 如請求項15所述之運算裝置,其中該資料儲存控制電路包含: 一網路介面,用以透過該網路來自一主機接收欲寫入至該儲存裝置之資料並自該主機下載該應用程式與該位元流,其中該網路介面包含一資料框分離電路,用以將自該主機所下載之該應用程式與該位元流轉送至該第二處理電路。
TW110102840A 2020-03-24 2021-01-26 運算裝置 TWI765542B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202110218927.2A CN112882966B (zh) 2020-03-24 2021-02-26 运算装置
US17/189,176 US11500801B2 (en) 2020-03-24 2021-03-01 Computing apparatus utilizing programmable logic circuit to implement direct memory access engine and at least one physical engine and providing data to be processed to at least one physical engine through direct memory access engine

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US202062993727P 2020-03-24 2020-03-24
US62/993,727 2020-03-24

Publications (2)

Publication Number Publication Date
TW202137043A true TW202137043A (zh) 2021-10-01
TWI765542B TWI765542B (zh) 2022-05-21

Family

ID=79601040

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110102840A TWI765542B (zh) 2020-03-24 2021-01-26 運算裝置

Country Status (1)

Country Link
TW (1) TWI765542B (zh)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10067893B2 (en) * 2015-04-03 2018-09-04 Futurewei Technologies, Inc. Acceleration framework with direct data transfer mechanism

Also Published As

Publication number Publication date
TWI765542B (zh) 2022-05-21

Similar Documents

Publication Publication Date Title
US10963393B1 (en) Storage system and a method for application aware processing
US20190163364A1 (en) System and method for tcp offload for nvme over tcp-ip
CA3027756C (en) Systems and methods for efficient distribution of stored data objects
US8819335B1 (en) System and method for executing map-reduce tasks in a storage device
TWI664541B (zh) 用於自主記憶體搜尋之方法及系統
WO2018179243A1 (ja) 情報処理装置及び方法
WO2021068351A1 (zh) 基于云存储的数据传输方法、装置及计算机设备
US20150046430A1 (en) Scalable acceleration of database query operations
KR20170008152A (ko) 불휘발성 메모리 장치에서의 데이터 특성 기반 데이터 배치
US10996993B2 (en) Adaptive work distribution in distributed systems
US9350828B2 (en) Network interface device having general-purpose computing capability
JP2016539399A (ja) データ書込み要求処理方法及びストレージアレイ
CN110119304B (zh) 一种中断处理方法、装置及服务器
WO2016155474A1 (en) Acceleration framework with direct data transfer mechanism
US8332432B2 (en) Managing a binary object in a database system
US11720529B2 (en) Methods and systems for data storage
TWI637267B (zh) 具近資料端處理引擎的晶片組
TWI765542B (zh) 運算裝置
Lim et al. Lsm-tree compaction acceleration using in-storage processing
CN112882966B (zh) 运算装置
US20150106884A1 (en) Memcached multi-tenancy offload
JP2018010698A (ja) データ書込み要求処理方法及びストレージアレイ
WO2014077451A1 (ko) Iscsi 스토리지 시스템을 이용한 네트워크 분산 파일 시스템 및 방법
WO2024055679A1 (zh) 数据存储方法、装置、系统、芯片及加速设备
US11829798B2 (en) System and method to improve data compression ratios for fixed block sizes in a smart data accelerator interface device