TW202418075A - 用於在多流資料移動中退出的系統和方法 - Google Patents
用於在多流資料移動中退出的系統和方法 Download PDFInfo
- Publication number
- TW202418075A TW202418075A TW112135074A TW112135074A TW202418075A TW 202418075 A TW202418075 A TW 202418075A TW 112135074 A TW112135074 A TW 112135074A TW 112135074 A TW112135074 A TW 112135074A TW 202418075 A TW202418075 A TW 202418075A
- Authority
- TW
- Taiwan
- Prior art keywords
- task
- exit
- input
- queue
- identifier
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 47
- 238000012545 processing Methods 0.000 claims abstract description 124
- 230000004044 response Effects 0.000 claims abstract description 32
- 230000015654 memory Effects 0.000 claims description 53
- 238000002360 preparation method Methods 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 description 50
- 238000003860 storage Methods 0.000 description 32
- 101000831616 Homo sapiens Protachykinin-1 Proteins 0.000 description 23
- 102100024304 Protachykinin-1 Human genes 0.000 description 23
- 238000010586 diagram Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 13
- 239000004065 semiconductor Substances 0.000 description 12
- 238000004891 communication Methods 0.000 description 10
- 230000007704 transition Effects 0.000 description 9
- 101000655188 Homo sapiens Tachykinin-3 Proteins 0.000 description 8
- 102100033009 Tachykinin-3 Human genes 0.000 description 8
- 238000010801 machine learning Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 230000000007 visual effect Effects 0.000 description 5
- 101100424669 Chlamydomonas reinhardtii TBC2 gene Proteins 0.000 description 4
- 101000891620 Homo sapiens TBC1 domain family member 1 Proteins 0.000 description 4
- 102100040238 TBC1 domain family member 1 Human genes 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000012549 training Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 101001121408 Homo sapiens L-amino-acid oxidase Proteins 0.000 description 1
- 101000827703 Homo sapiens Polyphosphoinositide phosphatase Proteins 0.000 description 1
- 102100026388 L-amino-acid oxidase Human genes 0.000 description 1
- 102100023591 Polyphosphoinositide phosphatase Human genes 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 244000144985 peep Species 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Abstract
一種硬體退出電路包括:一或更多個輸入佇列,每個佇列對應於任務的輸入串流,且被配置為儲存對應於輸入串流的任務的輸入任務識別符;及處理邏輯,被配置為:接收已完成任務事件;決定已完成任務事件的已完成任務佇列識別符及已完成任務識別符是否匹配輸入佇列頭部的輸入任務的輸入任務識別符,該輸入佇列頭部具有對應於已完成任務佇列識別符的輸入佇列識別符;及回應於決定匹配,在輸入佇列頭部處彈出任務,並輸出對應於輸入任務的任務退出事件。
Description
本揭示案係關於用於在多串流資料移動中退出的系統及方法。
現代計算系統可針對由任務序列組成的工作負荷執行作業。處理系統或資料移動硬體可無序處理該等任務序列,此可有助於提高整體傳輸量。例如,當不同的任務相互不依賴時,該等任務可並行執行,其中任務可在不同的時間完成。在諸多軟體程式設計模型中,該等任務一旦完成就需要被重新排序回到其輸入順序,即使該等任務是無序執行的,其中重新排序可被稱為退出任務或對任務應用有序退出。
正因慮及該等及其他因數,故舉例說明。此外,儘管已經論述了相對具體的問題,但是應當理解,實例不應當限於解決背景技術中決定的具體問題。
提供本概述是為了以簡化的形式介紹一些概念,該等概念將在下文的實施方式章節中進一步描述。該概述不意欲標識所主張的標的的關鍵特徵或必要特徵,亦不意欲協助決定所主張的標的的範疇。
本技術的各態樣係關於用於多串流退出的方法及系統。一些態樣係關於硬體退出電路,該硬體退出電路被配置為追蹤多個並行串流中的任務的輸入順序,並在該等任務無序完成時將結果重新排序成輸入順序。例如,串流A可包括任務A1、A2及A3,串流B可包括任務B1、B2及B3,而串流C可包括任務C1、C2及C3。根據本技術的一個實例的硬體退出電路可追蹤與該等任務的相應串流相關聯的該等任務的輸入順序,且該工作負荷可由另一個處理電路(例如,專用計算加速器及/或諸如直接記憶體存取控制器的資料移動引擎)來執行。另一個處理電路向硬體退出電路報告該等任務的完成,硬體退出電路追蹤該等完成並將該等完成與對應的被追蹤輸入任務相匹配,使得硬體退出電路以與串流順序一致的順序將計算結果呈現給軟體堆疊(例如,其中來自串流A的任務A1、A2及A3按順序出現,來自串流B的任務B1、B2及B3按順序出現,且來自串流C的任務C1、C2及C3按順序出現,其中任務A1、A2及A3、任務B1、B2、B3及任務C1、C2、及C3可被交錯)。
在本技術的一些實例中,硬體退出電路為每個輸入串流維護佇列或先進先出(first-in-first-out; FIFO),並維護準備退出(例如,被指示為完成)的任務佇列或FIFO。當一任務匹配輸入串流FIFO中某一者的頭部的任務時,電路退出準備退出FIFO頭部的任務。當在準備退出FIFO的頭部的任務與在輸入串流FIFO的頭部的任何任務都不匹配時,則從準備退出FIFO中移除該任務,且一旦其對應的任務出現在輸入串流FIFO的頭部,就追蹤該任務以便稍後退出。因此,硬體退出電路追蹤任務的完成,並以與該等任務的輸入順序一致的順序退出該等任務。本技術的一些態樣係關於多執行緒退出電路,其中每個輸入串流的任務的退出由硬體退出電路內的單獨執行緒或單獨處理電路來管理。
一或更多個態樣的細節在下文的附圖及描述中闡述。透過閱讀下文的詳細描述及查看相關附圖,其他特徵及優點將變得顯而易見。應當理解,下文的詳細描述僅僅是解釋性的,而不是對所主張的發明的限制。
以下詳細描述參考附圖。在附圖及下文的描述中,儘可能使用相同的元件符號來指示相同或相似的元件。儘管可描述本發明的態樣,但是修改、改編及其他實施方式是可能的。例如,可對附圖中示出的元件進行替換、添加或修改,且可透過對所揭示的方法進行替換、重新排序或添加步驟來修改本文描述的方法。因此,以下詳細描述並不限制本發明,相反,本發明的適當範疇由所附專利申請範圍來限定。實例可採取硬體實施、或完全軟體實施、或結合軟體與硬體態樣實施的形式。因此,以下詳細描述不應被視為限制性的。
本技術係關於用於多串流退出的方法及系統。一些態樣係關於硬體退出電路,該硬體退出電路被配置為追蹤多個並行串流中的任務的輸入順序,且當該等任務無序完成時,將結果重新排序成對應串流的輸入順序。
作為一個實例,諸如圖形處理單元(graphics processing unit; GPU)或人工智慧(artificial intelligence; AI)加速器之類的硬體加速器可接收計算任務並對彼等輸入工作負荷執行計算。在用於訓練諸如深度神經網路的人工智慧模型的工作負荷的情況下,該等工作負荷可包括例如大矩陣乘法及啟動函數的應用。在許多情況下,該等任務是可高度並行的,且可分佈在GPU或AI加速器內的多個並行計算單元上。取決於輸入資料的形狀(例如,輸入矩陣的維數),單個給定任務可能無法使用硬體加速器內的所有計算單元,在此種情況下,剩餘的計算單元可用於並行處理其他任務。此外,不同的任務可能需要不同的計算工作量總量(例如,不同數量的總時脈週期)來完成彼等任務。因此,向硬體加速器提交多個任務的序列可能導致彼等任務的結果被硬體加速器以與結果提交的順序不同的順序輸出。
類似地,諸如直接記憶體存取(direct memory access; DMA)引擎的資料移動引擎可接收命令,以在互連裝置上的不同裝置的源位置與目的地位置之間複製資料,而無需穿過處理器的核心。例如,可從主記憶體複製資料到硬體加速器的專用記憶體,或者從網路控制器複製到主記憶體,或者從儲存裝置(例如,固態驅動器)複製到圖形處理單元專用的視訊記憶體等。該等資料移動任務可能具有不同的總大小,可能發生在具有不同最大傳輸速率的裝置之間,及可能具有不同傳送速率瓶頸的連接上。因此,可同時處理多個傳輸,其中基於該等因數,不同的任務可在不同的時間完成。因此,向DMA引擎提交多個資料傳輸任務或命令可類似地導致該等任務的無序完成。
電腦程式設計語言及計算環境大體向其使用者(例如,電腦程式設計師)呈現軟體程式設計模型,該等模型假定任務按順序完成或者保持按順序完成的外觀,即使計算任務是無序執行的。例如,使用者可編寫一程式,指定執行任務1,隨後任務2,隨後任務3。然而,如上所述,將該等任務提交給硬體加速器或其他計算裝置來執行可能會導致該等任務無序執行。如此,退出機制按照任務被提交的順序退出任務(任務1,隨後任務2,隨後任務3),使得整個系統的行為與呈現給使用者的軟體程式設計模型一致。在一些情況下,多個不同的執行緒產生對應的任務串流,該等任務串流全部被提交給同一個硬體加速系統。
第1圖示出了根據一個實例的將多個任務串流輸入到硬體加速器1的輸入引擎電路及由硬體退出電路對硬體加速器產生的結果進行重新排序的高階圖。如第1圖所示,DMA輸入引擎電路或輸入引擎電路10從電腦處理器或中央處理器或CPU 15接收輸入任務或命令110。該等任務或命令可由透過互連裝置或匯流排(例如,快速週邊部件互連高速裝置或PCIe匯流排)連接到硬體加速器1的CPU 15所執行的一或更多個計算執行緒來產生。該等計算執行緒可對應於一或更多個正在運行的程式的部分,該等程式正在產生從處理器卸載到硬體加速器1上的命令。在第1圖所示的實例中,在CPU 15上運行的三個執行緒(執行緒A、執行緒B及執行緒C)向硬體加速器1提交各自的命令串流,其中彼等串流包括具有命令或任務TAC1、TAC2及TAC3的串流A 110A,具有命令或任務TBC1、TBC2及TBC3的串流B 110B,及具有命令或任務TCC1、TCC2及TCC3的串流C 110C。由CPU 15提供的每個串流中的命令可與對應的串流識別符(例如,串流A、串流B及串流C)及對應的命令識別符(例如,C1、C2及C3)相關聯。
輸入引擎電路10可包括仲裁邏輯,以序列化並行接收的多個任務串流,並將序列化的工作負荷110W提供至處理電路或子序列處理電路20(例如,邏輯電路及/或專用加速器)。當作為工作負荷110W提供至處理電路20時,從輸入執行緒接收的任務可被交錯。例如,第1圖示出了按照TAC1、TBC1、TAC2、TCC1、TCC2、TCC3、TBC2、TAC3及TBC3的順序提供的任務。
處理電路20可無序地完成命令或任務(例如,以與任務被提供至輸入引擎電路的順序不同的順序)。如此,硬體加速器1包括退出電路30,該退出電路30對由處理電路20產生的結果進行重新排序。更詳細地,退出電路30產生任務完成事件130,該等事件報告硬體加速器1完成了命令,如基於CPU 15提供的串流識別符及命令識別符所識別的。
更詳細地,退出電路30從輸入引擎電路10接收關於任務輸入串流的記帳資訊110M,並在任務完成時從處理電路20接收事件。例如,記帳資訊110M可包括每個輸入任務的任務識別符(其中任務識別符在硬體加速器當前可見的所有任務中是唯一的),且輸入引擎電路10可使用彼等任務識別符來標記工作負荷110W的任務。當處理電路20完成任務時,其產生事件120以指示彼等任務已完成,其中每個事件用對應於已完成任務的任務識別符來標記。退出電路30隨後產生重新排序的任務完成事件130,使得任務或命令110的完成以與事件被輸入到硬體加速器1的順序一致的順序被報告給在CPU 15上運行的執行緒。例如,可使用信號旗語來報告任務的結果及/或完成,如透過在連接到CPU 15及硬體加速器1的記憶體中設定一值,或者在CPU 15可存取的一些其他位置中設定一值。
在第1圖所示的實例中,結果以TAC1、TBC2、TAC2、TAC3、TBC2、TBC3及TCC3的順序返回,注意該順序不同於工作負荷的任務的順序,且一些任務(例如,任務TCC1及TCC2被省略以提高效能,如下文更詳細描述的)。更詳細而言,退出電路30確保同一序列中的所有任務以與輸入任務相同的順序輸出(例如,在輸出TAC2及TAC3的結果之前輸出TAC1的結果,且在輸出TAC3的結果之前輸出TAC2的結果),但是退出電路30可交錯來自不同串流(例如,串流A、串流B及串流C)的結果,如其中來自串流B的TBC1在TAC1與TAC2之間退出。
多個任務的一些子序列對於整個子序列只需要一個退出輸出。例如,對於資料移動任務的子序列,其中在該子序列的所有任務中源及目的地是相同的,且資料移動是按順序處理的,任務執行的軟體程式設計模型可透過在該子序列的所有任務完成後僅產生一個退出輸出來滿足。在第1圖所示的實例中,串流C的任務TCC1、TCC2及TCC3形成一個此種任務子序列。在本技術的一些實例中,退出電路30偵測到子序列滿足該等情況(例如,透過任務提供的中繼資料),且產生一個信號旗語(例如,T3C3)作為執行任務TCC1、TCC2及TCC3的重新排序的結果,而不產生用於TCC1及TCC2的完成的信號旗語(該等信號旗語不出現在重新排序的任務完成事件130中),從而由於報告回CPU 15的任務更少而實現效能改進。
下文將更詳細地介紹根據本技術的各種實例的退出電路的操作細節。
第2圖是繪示根據本技術的一個實例的退出電路的方塊圖。硬體加速器2在本文中可被稱為多跳子命令控制器(Multi-hop Subcommand Controller; MSC),其包括被配置為仲裁從CPU(例如,第1圖所示的CPU 15)接收的輸入命令串流的寫入器電路210、調度器電路220(例如,在不同的片上記憶體中排序緩衝資料移動及/或執行與任務相關聯的計算),及退出電路230,其被配置對結果重新排序並將結果(或指示任務完成的信號)提供至信號旗語電路240以返回向CPU報告任務完成。在本技術的各種實例中,包括寫入器電路210、調度器電路220、退出電路230及信號旗語電路240的硬體加速器2可使用例如定製製造的積體電路、特殊應用積體電路(application specific integrated circuit; ASIC)、現場可程式設計閘陣列(field programmable gate array; FPGA)等或其組合來實現,如其中硬體加速器2的不同功能由同一半導體晶粒上或不同半導體晶粒上的積體電路來實現,無論是在同一半導體封裝中還是在不同半導體封裝中。在FPGA、積體電路或ASIC中實現的本技術的實例中,非暫時性的電腦可讀媒體包括電腦指令,當由處理器執行時,該等指令使得處理器配置FPGA(例如,定義FPGA的內部結構中的連接的位元檔、FPGA的查找表中的值等)或配置積體電路或ASIC(例如,定義低階電晶體材料佈局或高階硬體描述語言)以實現本技術的實例的各種部件。
退出電路230包括退出處理邏輯232,該退出處理邏輯232可使用數位邏輯電路來實現,如嵌入式微控制器或被配置為實現根據本文描述的技術的功能的其他處理電路。寫入器電路210將輸入任務或命令寫入對應於不同串流(例如,由運行在CPU上的不同執行緒提交的任務串流)的各種輸入佇列234。該資訊(或記帳資訊或中繼資料)包括與每個任務相關聯的任務識別符或任務ID。
第2圖所示的實例包括五個輸入佇列234,標記為佇列0至佇列4。然而,本揭示案不限於此,且包括在退出電路230中的輸入佇列的數量可針對將由硬體加速器管理的工作負荷,且針對佇列數量、此種佇列的最大大小(例如,可儲存在佇列中的任務的最大數量),及退出電路230中的輸入佇列所消耗的實體面積之間的權衡來酌情配置。
當彼等對應的任務完成時,調度器電路220將任務完成事件寫入退出電路230的準備退出佇列236。該等任務完成事件可包括識別作為任務來源地的佇列(或串流)的佇列識別符或佇列ID。例如,如第1圖所示包括任務TAC1、TAC2及TAC3的串流A可與佇列1相關聯。任務TAC2亦可被分配一任務識別符(或任務ID),如任務ID 3。當任務TAC2完成時,調度器電路220為任務TAC2產生一任務完成事件,該事件包括其已完成任務ID(任務ID 3)及其對應的已完成任務佇列(例如佇列1)的標識。硬體加速器內部使用的任務識別符可不同於CPU提供的命令識別符(例如,可使用硬體加速器中的計數器來分配任務識別符)。同樣,硬體加速器內部使用的佇列識別符可不同於CPU提供的串流識別符(例如,佇列識別符可永久地分配給硬體加速器的特定輸入佇列,但是CPU提供的命令串流可在串流執行期間動態地分配給可用的輸入佇列)。
佇列或先進先出(first-in-first-out; FIFO)資料結構是以下資料結構:其中提供對按照資料項目排隊的順序排隊或推入佇列的資料項目的存取。佇列頭部是指最早推送的項目(例如,已經排隊達最長時間的項目),而佇列尾部是指最晚推送的項目(例如,最近排隊的項目)。項目可從佇列頭部出列或彈出,此舉將項目從佇列中移除,使得新的佇列頭部是下一個最早推送的項目。在一些情況下,如佇列中只有一個資料項目,頭部及尾部皆指向同一個資料項目。可透過查看頭部來檢查佇列頭部的項目的值,而不用將項目從佇列頭部出列或彈出。
退出電路230可進一步包括儲存在退出電路230的整合記憶體中的準備退出表238或準備退出記分板,其中準備退出表將任務映射到指示對應任務是否準備好退出的狀態。在一些實例中,若任務識別符僅在串流中是唯一的,則任務識別符及其佇列識別符的組合被用於映射到準備退出表中的位置(例如,位元)。在任務的任務識別符在任何給定時間在所有串流中皆是全域唯一的實例中,任務識別符則可在沒有佇列識別符的情況下被用來映射到準備退出表中的位置。
第3圖是根據本技術的一個實例的方法300的流程圖,該方法使用退出電路230來追蹤進行中的任務及退出任務。在操作310,退出處理邏輯232等待一項目出現在準備退出佇列236中,且當一完成的任務事件可用時,從準備退出佇列236中彈出該完成的任務事件。在操作320,退出處理邏輯232決定來自已完成任務事件的已完成任務識別符是否與對應於來自已完成任務事件的佇列識別符的輸入佇列頭部的任務識別符相匹配。當退出處理邏輯232在操作320偵測到匹配時,則在操作330,退出處理邏輯232從對應輸入佇列234的頭部彈出匹配的任務,從準備退出表238中移除該任務(如透過將表中對應於已完成任務的任務識別符的條目的值設定為「否」或「假」或零),並在操作340退出彈出的任務,如透過向信號旗語電路240發送任務退出事件(例如,包括對任務來源地的串流的標識),信號旗語電路240可向CPU報告任務的完成。
在操作350,退出處理邏輯232檢查在操作330彈出的輸入佇列現在是否為空。若是,則退出處理邏輯232返回以等待已完成的任務事件出現在準備退出佇列236中。若輸入佇列不為空,則在操作360,退出處理邏輯232檢查位於輸入佇列頭部的任務的任務識別符是否出現在準備退出表238中(例如,對應於任務識別符的條目是否被設定為是)。在輸入佇列頭部的任務識別符確實出現在準備退出表238中的情況下(例如,狀態被設定為「是」或「真」的情況),則退出處理邏輯232繼續從準備退出表238中移除任務識別符(例如,透過將與任務識別符相關聯的值設定為「否」或「假」),隨後繼續在330從輸入佇列頭部彈出任務,並在340退出彈出的任務。退出處理邏輯232沿著該循環進行,基於準備退出表238中的對應條目從輸入佇列中彈出準備退出的任務,直到輸入佇列為空(如在操作350中所決定的),或者直到佇列頭部的任務的任務識別符沒有準備好退出,此時處理邏輯232返回以等待準備退出佇列236中出現一項目。
當已完成任務事件的任務識別符與對應輸入佇列頭部的任務不匹配時,則該任務在其事件輸入序列中先於該任務出現的另一個事件之前完成。如此,在操作380,如透過將表中對應於已完成任務的任務的行(例如,基於輸入任務識別符及佇列識別符)設定為「是」或「真」,將彈出的已完成任務事件添加到準備退出表238。退出處理邏輯232隨後循環回到操作310,以繼續等待已完成的任務事件排隊到準備退出佇列236上。
以上參考第2圖及第3圖描述的本技術實例能夠使用單執行緒硬體退出電路來執行多串流任務的無序執行的退出。在一些實施方式中,退出處理邏輯232可能花費許多時脈週期來輪詢彼等輸入佇列234並檢查準備退出表238,同時亦將準備退出佇列236的頭部與輸入佇列234的頭部進行比較。此外,增加輸入佇列234的數量增加了第3圖所示方法的每個循環所需的時脈週期的數量,因為單執行緒退出處理邏輯232一次只檢查一個輸入佇列234。因此,取決於硬體加速器的工作負荷模式、硬體退出電路的硬體複雜性及硬體退出電路的時脈速率之間的權衡,單執行緒方法可能不能足夠快地退出任務來處理無序硬體加速器的總傳輸量。
因此,本技術的實例的一些態樣係關於多執行緒退出電路,其中退出電路的多個執行緒並行執行以偵測每個輸入佇列頭部的任務是否可退出,並在執行緒偵測到該任務準備好退出時處理該等任務的退出。
第4圖是繪示根據本技術的一個實例的多執行緒退出電路的方塊圖。類似於第2圖中所示的硬體加速器2,硬體加速器4可被稱為多跳子命令控制器(Multi-hop Subcommand Controller; MSC),其包括被配置為仲裁從CPU(例如,第1圖中所示的CPU 15)接收的輸入命令串流的寫入器電路410、調度器電路420(例如,對不同片上記憶體中的移動資料進行排序緩衝及/或執行與任務相關聯的計算),及多執行緒退出電路430,其被配置為對結果進行重新排序並將結果提供至信號旗語電路440,以返回向CPU報告任務完成。在本技術的各種實例中,包括寫入器電路410、調度器電路420、多執行緒退出電路430及信號旗語電路440的硬體加速器4可使用例如定製製造的積體電路、特殊應用積體電路(application specific integrated circuit; ASIC)、現場可程式設計閘陣列(field programmable gate array; FPGA)等或其組合來實施,如其中硬體加速器4的不同功能由同一半導體晶粒上或不同半導體晶粒上的積體電路來實施,無論是在同一半導體封裝中還是在不同半導體封裝中。在FPGA、積體電路或ASIC中實施的本技術的實例中,非暫時性電腦可讀媒體包括電腦指令,當由處理器執行時,該等電腦指令使得處理器配置FPGA(例如,定義FPGA的內部結構中的連接的位元檔、FPGA的查找表中的值等)或配置積體電路或ASIC(例如,定義低階電晶體材料佈局或高階硬體描述語言)以實施本技術的實例的各種部件。
在第4圖所示的實例中,多執行緒退出電路430的每個輸入佇列434由單獨的退出子電路431維護或管理,該退出子電路431具有執行處理多執行緒退出電路430的執行緒的處理邏輯電路432。複數個獨立的退出子電路431可由共享的時脈信號控制。每個退出子電路包括單獨的處理邏輯電路432(標記為FSM,表示可使用有限狀態機或FSM來控制處理邏輯電路的行為),該處理邏輯電路432執行單獨的執行緒,該執行緒管理其對應輸入佇列434上的任務的退出。此外,每個退出子電路不具有單個全域準備退出任務表,而是包括儲存在與處理邏輯電路432相關聯的區域記憶體中的單獨向量或區域準備退出表或輸入佇列特定的準備退出表438,其中區域準備退出表438被配置為追蹤對應輸入佇列434的準備退出任務,且其中在本技術的一些實例中,單獨的處理邏輯被用於基於調度器420廣播的事件來更新區域準備退出表438。因此,並行(例如,同時)執行單獨的執行緒,從而可同時分析與不同佇列相關聯的任務是否準備好退出,且可同時將已完成的任務添加到對應的準備退出表438中,從而允許多執行緒退出電路430比單執行緒方法具有更高的傳輸量(例如,每個時脈週期的任務退出的數量),但缺點是增大電路複雜性及/或增加積體電路中消耗的面積。
第4圖示出了具有標記為佇列0至佇列4的五個輸入佇列的本技術特定實例,儘管本揭示案不限於此,且多執行緒退出電路430中包括的輸入佇列434的數量可經配置以針對將由硬體加速器管理的工作負荷,且針對佇列數量、該等佇列的最大大小(例如,可儲存在佇列中的任務的最大數量)及由輸入佇列及退出子電路431用於處理多執行緒退出電路430中的每個執行緒消耗的實體面積之間的權衡來酌情配置。
與佇列0相關聯的多執行緒退出電路的複數個退出子電路431的退出子電路被標記為第一退出子電路431-1,且類似的標記被應用於對應的處理邏輯電路432-1、儲存與佇列0相關聯的任務串流的輸入任務的對應輸入佇列434-1,及追蹤來自與佇列0相關聯的任務串流的準備退出的任務或命令的對應向量438-1。類似的元件符號應用於第二退出子電路431-2、第三退出子電路431-3、第四退出子電路431-4及第五退出子電路431-5。
如第4圖所示,寫入器電路410以類似於第2圖所示實例的寫入器電路210的方式,寫入關於對應於不同命令串流的輸入任務的資訊。每個輸入的任務都與特定的串流相關聯。每個輸入佇列與對應的串流相關聯,且寫入器電路410將關於任務的輸入資訊(例如,中繼資料或記帳資訊110M)寫入任務所關聯的串流的輸入佇列434中。例如,串流A可與佇列1相關聯,串流B可與佇列2相關聯,且串流C可與佇列3相關聯,在此種情況下,寫入器電路410例如會將任務TAC1寫入輸入佇列1,將任務TBC1寫入輸入佇列2,且將任務TCC1寫入輸入佇列3。
當彼等對應的任務完成時,調度器電路420向多執行緒退出電路430的所有退出子電路431廣播任務完成事件。該等任務完成事件可包括佇列識別符或佇列ID(或已完成任務識別符),該佇列識別符或佇列ID標識與任務相關聯的佇列(或串流),且亦包括標識任務已完成的任務識別符或任務ID(或已完成任務識別符)。繼續上述實例,包括如第1圖所示的任務TAC1、TAC2及TAC3的串流A可與佇列1相關聯。任務TAC2亦可被分配一任務ID,如任務ID 3。(在一些實施例中,儘管任務ID可按照任務到達串流的順序被順序地分配給任務,但是特定的任務ID不一定鏈結到從CPU提供的任何識別符(例如,命令識別符),使得任務TAC1可具有任務ID 2,而任務TAC3可具有任務ID 4。)當任務TAC2完成時,調度器電路420廣播任務TAC2的任務完成事件,該事件包括其任務ID(任務ID 3)及對應的佇列識別符(例如佇列1)。在一些實例中,調度器電路420使用串流識別符或串流ID(例如,由CPU分配的)來替代或補充佇列識別符(例如,由硬體加速器分配的)。
第5A圖是根據本技術的一個實例的使用退出電路來處理輸入的已完成任務事件的方法的流程圖。與第3圖的方法相反,不是由從調度程式接收的輸入任務完成事件來驅動,而是將輸入任務完成事件自動寫入區域準備退出表438,且退出子電路431的處理邏輯電路432連續輪詢區域準備退出表438,以檢查與輸入佇列434頭部處的任務的匹配。更詳細地,參考方法501,當輸入的完成任務事件作為退出子電路431到達時,處理邏輯在操作511決定已完成任務事件的已完成任務佇列識別符(佇列ID)是否與由退出子電路執行的執行緒管理的輸入佇列434的輸入佇列ID(或與退出子電路管理的輸入佇列相關聯的串流的串流ID)匹配。在已完成任務事件的已完成任務佇列ID與由退出子電路431管理的輸入佇列的輸入佇列ID不匹配的情況下,退出子電路431則忽略已完成任務事件並結束處理,直到接收到下一已完成任務事件。在由處理邏輯電路432執行的執行緒偵測到已完成任務事件的已完成任務佇列ID與其正在管理的輸入佇列434的輸入佇列ID相匹配的情況下,則在操作521,已完成任務事件的任務識別符被記錄在區域準備退出表438中,隨後處理結束,直到接收到下一已完成任務事件。
在一些實例中,準備退出表438使用由任務ID索引的位元向量來實施,其中透過對由任務ID標識的位元向量位置處的位元進行設定(例如,設定為值1)來將任務ID添加到準備退出表438。在此種實例中,任務ID中的位元數量與位元向量的長度相匹配,此亦約束了輸入佇列的深度。例如,若任務ID是6位元值,則位元向量的長度為2
6=64。此亦將最大輸入佇列深度設定為64,以滿足該約束:任務ID在任何給定時間對於串流都是唯一的。此允許使用自由運行計數器來設定任務ID。
在一些實例中,退出向量的索引是任務ID。對於某些類型的任務序列,任務總是按順序完成的,因此退出邏輯只需要為序列中的所有任務發送一個信號旗語(如以上參考第1圖所述的執行緒C的實例)。作為一具體實例,相鄰資料串流可從硬體加速器移動到外部記憶體。該等相鄰資料具有相同的源及目的地,且只有序列中的最後任務或命令可設定旗語位元(例如,序列中所有先前的任務或命令皆不設定旗語位元)。在此種情況下,處理邏輯電路432偵測到可透過對輸入命令序列進行分組來最佳化該任務序列,如透過偵測到任務與遵循以下模式的命令ID相關聯:已知命令按順序完成,且只有最後命令具有有效旗語位元。
第5B圖是根據本技術的一個實例,使用退出電路從輸入佇列中退出準備退出任務的方法502的流程圖。在操作532,退出子電路的處理邏輯電路432輪詢準備退出表438,以決定在輸入佇列434的頭部的輸入任務識別符是否出現在區域準備退出表438中(例如,是否在區域準備退出表438的對應於任務識別符的條目中設定了準備退出位元)。若在區域準備好退出表438中找不到輸入的任務識別符(例如,若區域準備好退出表438中的條目被設定為諸如0的值,該值指示該任務還未完成,因此還沒有準備好退出),則處理邏輯電路432返回開始,並根據輪詢間隔再次輪詢。在準備退出表438中找到任務ID的情況下(例如,若區域準備退出表438中的條目被設定為諸如1的值,該值指示任務已經完成並因此準備退出),則在操作542,處理邏輯電路432從區域準備退出表438中移除任務識別符(例如,透過清除對應條目的準備退出位元),在操作552,從輸入佇列434的頭部彈出輸入任務,並在操作562使彈出的任務退出(例如,透過輸出任務退出事件或信號旗語)。在第4圖所示的實例中,每個退出子電路431產生輸出,該等輸出被提供至由仲裁器電路439控制的多工器437,該仲裁器電路439仲裁退出子電路431之間對信號旗語電路440的寫入存取,如下文將更詳細描述的。退出彈出的任務後,處理邏輯電路432返回開始,以例如根據輪詢間隔繼續輪詢(例如,基於輪詢間隔等待某個數量的時脈週期)。
如上所述,當退出子電路431退出任務時,其將其輸出(例如,關於任務退出的資訊)提供至多工器437,其中仲裁器電路439管理多執行緒退出電路430中同時運行的多個退出執行緒之間的潛在爭用。在對信號旗語電路440的存取沒有爭用的簡單情況下,例如,當只有一個退出子電路431嘗試輸出到信號旗語電路440時,則由仲裁器電路439控制的多工器437可自動將信號旗語轉發到信號旗語電路440,以返回向CPU報告。
然而,在一些情況下,可能存在對存取信號旗語電路440的爭用,如多個退出子電路431同時退出任務(例如,產生輸出信號)。在該等情況下,仲裁器電路439控制對信號旗語電路的存取,例如,序列化從多個退出子電路431並行接收的任務退出事件,使得信號旗語電路440從多執行緒退出電路430接收序列化的任務退出事件序列。在本技術的各種實例中,仲裁器電路439使用各種技術來決定接下來從多個等待的任務退出事件中選擇哪個任務退出事件,該等技術諸如:循環存取(例如,每個退出子電路輪流進行);基於公平的存取(例如,追蹤存取頻率並嘗試在不同執行緒之間平均分配存取,如選擇被選次數最少的子電路);及類似者。
因此,本技術的各態樣係關於多執行緒退出電路,其中退出電路的多個執行緒並行操作,以偵測每個輸入佇列頭部的任務是否可退出,並處理該等任務的退出,如當執行緒偵測到任務準備好退出時,產生信號旗語或任務退出事件。
第6圖是一方塊圖,繪示根據本技術的一個實例的被配置為退出與一個任務串流相關聯的任務的多執行緒退出電路的一個執行緒。類似於第4圖中所示的硬體加速器4,硬體加速器6可被稱為多跳子命令控制器(Multi-hop Subcommand Controller; MSC),其包括被配置為仲裁從CPU(例如,第1圖中所示的CPU 15)接收的輸入命令串流的寫入器電路610、調度器電路620(例如,在不同的片上記憶體中對資料移動進行排序緩衝及/或執行與任務相關聯的計算),及多執行緒退出電路,其被配置為對結果進行重新排序並將結果提供至信號旗語電路440,以返回向CPU報告任務完成。
在第6圖的實例中,僅明確示出了多執行緒退出電路的一個退出子電路631,其中所繪示的一個退出子電路631與輸入佇列(佇列0)相關聯。硬體加速器6的多執行緒退出電路進一步包括至少一個基本上類似於第6圖所示的退出子電路631的額外退出子電路,但是該等額外退出子電路中的每一個都與不同的輸入佇列相關聯(例如,與佇列1相關聯的退出子電路631-2、與佇列2相關聯的退出子電路631-3等)。
在本技術的各種實例中,可使用定製製造的積體電路、特殊應用積體電路(application specific integrated circuit; ASIC)、場可程式設計閘陣列(field programmable gate array; FPGA)等或其組合來實施硬體加速器6,硬體加速器6包括寫入器電路610、調度器電路620、包括退出子電路631的多執行緒退出電路、仲裁器電路639及信號旗語電路650,如其中硬體加速器6的不同功能由同一半導體晶粒上或不同半導體晶粒上的積體電路來實施,無論是在同一半導體封裝中還是在不同半導體封裝中。在FPGA、積體電路或ASIC中實施的本技術的實例中,非暫時性電腦可讀媒體包括電腦指令,當由處理器執行時,該等電腦指令使得處理器配置FPGA(例如,定義FPGA的內部結構中的連接的位元檔、FPGA的查找表中的值等)或配置積體電路或ASIC(例如,定義低階電晶體材料佈局或高階硬體描述語言)以實施本技術的實例的各種部件。
以類似於上文參考第4圖描述的硬體加速器4的方式,退出子電路631執行處理邏輯電路632中的執行緒。在一些實例中,使用有限狀態機(Finite State Machine; FSM)來控制執行緒。第7圖是根據本技術的一個實例的,用於控制多執行緒退出電路的一個執行緒以退出與一個任務串流相關聯的任務的有限狀態機的狀態轉換圖700。如第7圖所示,當由從輸入佇列634到處理邏輯電路632的「輸入佇列為空」信號(empty)決定輸入佇列為空時,FSM開始於空閒狀態710 (IDLE)。
寫入器電路610將關於任務的中繼資料或記帳資訊添加到與由退出子電路631管理的串流相關聯的輸入佇列634(例如,第6圖的實例中的佇列0)。新任務被添加到輸入佇列634的尾部,而最早插入的任務在輸入佇列634的頭部。如此,當新任務被添加到輸入佇列634時,輸入佇列為空信號變低,且FSM沿著向窺視輸入狀態720(PEEK_INPUT)的轉變進行。在本技術的一些實例中,並非窺視輸入佇列634頭部的任務值,而是在輸入佇列634頭部彈出任務(從儲存輸入佇列634的記憶體位置移除),並將其儲存在表示輸入佇列634的當前頭部的暫存器中。在本技術的各種實例中,硬體實施方式可採用上述方法中的任一種,且不限於該等特定方法。
調度器電路620向所有退出子電路631廣播任務完成事件,其中每個任務完成事件包括已完成任務佇列識別符(queue_id)及已完成任務識別符(task_id)。調度器電路620亦可提供輸出有效信號(rtr.valid),指示作為已完成任務佇列識別符及已完成任務識別符呈現的信號是否有效。當廣播的任務完成事件中的佇列識別符及與由退出子電路631執行的執行緒相關聯的佇列識別符匹配時,由退出子電路631執行的執行緒在區域準備退出表638中設定退出向量位元,如由已完成任務識別符(task_id)索引的。在第6圖所示的實例中,任務識別符(task_id)是6位元,因此,退出向量或準備退出表638是2
6=64個位元長。佇列識別符在第6圖中顯示為3個位元長,使得多執行緒退出電路可並行支援多達2
3=8個並行串流(如上所述,可透過添加額外的單獨退出子電路431來增加串流的數量,每個退出子電路431被配置為退出源自不同CPU執行緒或串流或命令序列的任務。)
在窺視輸入狀態720中,處理邏輯電路632提供讀取賦能信號(rden)以控制輸入佇列634將任務識別符(rddata.task_id)輸出到區域準備退出表638,區域準備退出表638查找與該任務識別符相關聯的值,其中該值被儲存在暫存器633中,且其中該值被輸出到處理邏輯電路632作為標識決定區域準備退出表638中有匹配的信號(retire_bit)。若retire_bit信號沒有被設定,則FSM在等待完成狀態730 (WAIT_COMPLETE)中循環,輪詢區域準備退出表638,直到其更新以指示對應於在輸入佇列634的頭部的當前任務識別符的任務已經完成。
當設定區域準備退出表638中的任務ID的退出位元時,則未完成的任務已經完成,且FSM轉換到旗語開始狀態740 (SEM_START)。設定就緒向仲裁邏輯發送旗語信號。在第6圖及第7圖所示的實例中,退出子電路可產生源就緒旗語信號(src_sem)以指示在源位置的資料準備好被存取或讀取,及/或產生目的地有效旗語信號(dst_sem)以指示位於目的地位址的資料準備好被存取。如第6圖所示,儲存在輸入佇列634中的與任務相關聯的中繼資料將目的地有效旗語賦能信號(dst_sem.enable)及源就緒旗語賦能信號(src_sem.enable)提供至在處理邏輯電路632中運行的FSM。如第7圖所示,當目的地有效旗語賦能信號為高,而源就緒旗語賦能信號為低時,FSM轉換到等待發送目的地有效旗語770的狀態(WAIT_SEM1)。在源就緒旗語信號為高的情況下,FSM則轉換到等待發送源就緒旗語750的狀態(WAIT_SEM0)。
當進入等待發送旗語(例如,WAIT_SEM0 750或WAIT_SEM1 770)的狀態時,退出子電路631向仲裁器電路639發送發送旗語(rts)的請求。如上所述,仲裁器電路639可使用在仲裁器邏輯處理電路640中實現的仲裁策略來決定當存在對存取的爭用時如何授權對旗語信號電路的存取(例如,基於循環仲裁策略、基於公平的仲裁策略等)。仲裁器電路639向退出子電路631提供仲裁授權信號(arb_granted)。當接收到仲裁授權信號時,FSM進入下一個發送狀態。
例如,FSM在處於等待發送源就緒旗語750 (WAIT_SEM0)的狀態並接收到仲裁授權信號時,轉換到發送源就緒旗語狀態760 (SEND_SEM0),此時FSM發送旗語。更詳細而言,因為任務可包括源就緒旗語(rddata.src_sem*)及目的地有效旗語(rddata.dst_sem*)中的一或兩者,因此該等信號被提供至旗語多工器635,且FSM基於當前狀態(例如,FSM是處於發送源就緒旗語狀態760 SEND_SEMO還是發送目的地有效旗語狀態780 SEND_SEM1)使用旗語選擇信號sem_sel來控制旗語多工器。該值儲存在區域旗語暫存器637中,以輸出到仲裁器電路639的仲裁器多工器641。在一些實施例中,仲裁器邏輯處理電路向仲裁器多工器641提供信號,以基於哪個退出子電路631已經被授權存取信號旗語電路來選擇仲裁器多工器641的適當輸入。在其他實例中,仲裁器多工器641可是共用輸出節點,其中基於時序來控制對共用輸出節點的存取(例如,使得只有一個退出子電路631將值輸出到節點中)。仲裁器多工器641輸出的值儲存在暫存器642中,隨後暫存器642向信號旗語電路650提供信號(msc_sem_signal_req_source),信號旗語電路650向CPU報告任務退出事件。
在發送源就緒信號旗語之後,FSM偵測目的地有效旗語賦能信號(dst_sem.enable)是否亦被設定(例如,由使用硬體加速器的軟體來程式設計)。若是如此,則進入等待發送目的地有效旗語770的狀態(WAIT_SEM1)。若不是,且輸入佇列634為空,則FSM返回到空閒狀態710。若輸入佇列634不為空,則FSM返回到窺視輸入狀態720。
類似地,在狀態780中發送目的地就緒信號旗語之後,若輸入佇列634為空,則FSM轉換到空閒狀態710,且若輸入佇列634不為空,則轉換到窺視輸入狀態720。
此外,在本技術的一些實例中,旗語未就緒信號(msc_sem_signal_req_source.wrAlmostFull)被提供至邏輯處理電路632,以指示信號旗語電路650未準備好接收任何退出事件,因此即使仲裁器邏輯處理電路640授權對信號旗語電路650的存取,邏輯處理電路632亦不會向信號旗語電路650發送退出事件,直到旗語未就緒信號被清除。
在轉換回空閒狀態710或窺視輸入狀態720之前,在贏得仲裁並成功地將信號旗語發送到外部邏輯(例如,信號旗語電路)之後,FSM清除區域準備退出表638中的任務ID位元,並彈出輸入佇列以移除佇列頭部的任務。在一些情況下,調度器電路620及運行在處理邏輯電路632中的FSM將同時更新區域準備退出表638,但是此不會導致競爭情況,因為由寫入器電路610控制的任務識別符的唯一性確保了調度器電路620及運行在處理邏輯電路632中的FSM將更新不同的任務識別符。例如,寫入器電路610被配置為在輸入佇列634已滿且運行的任務識別符已基於輸入佇列634的深度而回繞的情況下停止產生新的任務識別符。如此,不需要向調度器電路620施加背壓。
因此,本技術的各態樣提供了用於硬體加速器中任務的多執行緒退出的系統及方法。在一些實施方式中,與單執行緒版本相比,多執行緒退出架構引入了相對較小的硬體成本。例如,現場可程式設計閘陣列上的單執行緒退出電路的一個示例實施方式使用1536個自適應邏輯模組(adaptive logic module; ALM),而具有5個執行緒的多執行緒退出電路的實施方式使用1702個ALM。在多個任務串流的相同測試工作負荷下,硬體成本增加10.8%導致了70%的效能提升,此是透過時脈週期數量來量測。
本技術的某些態樣係關於利用軟體執行模型來將用於執行任務退出的狀態機拆分成多個執行緒,在該軟體執行模型中,來自同一串流(例如,單個CPU執行緒)的任務必須以與其被提供時相同的順序退出,但是來自不同串流(例如,不同CPU執行緒)的任務可以任何順序交錯。本技術的一些態樣係關於簡化狀態機邏輯,使得其僅彈出輸入佇列並清除其區域準備退出表或準備退出向量中的對應位元,並允許單獨實施用於設定準備退出位元的邏輯。多個退出子電路與使用仲裁器的信號旗語電路共用介面,從而節省了可能由於實施多個介面而使用的空間。一些態樣進一步係關於將輸入命令分組在一起,該等命令保證用單個任務識別符按順序完成,從而減少記憶體使用。此外,唯一任務識別符的數量被設定為與輸入佇列的深度一致,從而允許硬體同時設定及清除準備退出表位元,此亦減輕了無序完成的背壓。
第8、9A及9B圖的相關描述提供了對各種可實踐本技術實例的操作環境的論述。然而,針對第8、9A及9B圖示出及論述的裝置及系統係用於實例及說明,而非對可用於實踐本文所述的本發明各態樣的大量計算裝置配置的限制。
第8圖是示出可實施本揭示案的實例的計算裝置800的實體部件(即,硬體)的方塊圖。如上所述,以下描述的計算裝置部件可適用於運行機器學習模型的訓練流程,或者適用於使用經訓練的機器學習模型來執行推斷。在基本配置中,計算裝置800可包括至少一個處理單元802、硬體加速器803及系統記憶體804。在一些實例中,處理單元802包括FPGA(例如,處理單元802可包括透過設定互連而可重新配置的邏輯區塊陣列)。在一些實例中,處理單元802被整合或嵌入到FPGA中(例如,在一或更多個嵌入式「硬IP」CPU核心被直接連接到FPGA 803的互連或結構及/或使用FPGA 803的邏輯區塊實施的一或更多個嵌入式「軟IP」CPU核心的情況下)。在一些實例中,硬體加速器803包括FPGA。在一些實例中,硬體加速器803包括根據本技術的各態樣的硬體退出電路。取決於計算裝置的配置及類型,系統記憶體804可包括但不限於揮發性記憶體(例如,隨機存取記憶體)、非揮發性記憶體(例如,唯讀記憶體)、快閃記憶體或該等記憶體的任意組合。系統記憶體804可包括作業系統805及一或更多個程式模組806,該等程式模組806適於運行軟體應用850,如機器學習模型訓練應用程式852或客戶端應用程式854。例如,作業系統805可適用於控制計算裝置800的操作。此外,本發明的各態樣可結合圖形庫、其他作業系統或任何其他應用程式來實踐,且不限於任何特定的應用或系統。此基本配置在第8圖中由虛線808內的彼等部件示出。計算裝置800可具有額外的特徵或功能。例如,計算裝置800可進一步包括額外的資料儲存裝置(可移除及/或不可移除),例如磁碟、光碟或磁帶。此種額外儲存裝置在第8圖中由可移除的儲存裝置809及不可移除儲存裝置810示出。
如上所述,諸多程式模組及資料檔可儲存在系統記憶體804中。當在處理單元802上執行時,程式模組806可執行將計算任務卸載到硬體加速器803的流程。硬體加速器803可包括被配置為加速各種計算任務的資料路徑,如與機器學習任務、資料移動任務等相關的數學函數,且可控制或排序對任務退出向處理單元802或根據第1、2、3、4、5A、5B、6及7圖的另一個處理器的信號發送(例如,發送信號通知任務完成)。
此外,本發明的實例可在包括離散電子元件的電路、包含邏輯閘的封裝或積體電子晶片、利用微處理器的電路中實踐,或在包含電子元件或微處理器的單個晶片上實踐。例如,本發明的實例可透過片上系統(system-on-a-chip; SOC)來實施,其中第8圖所示的每個或諸多部件可整合到單個積體電路。此種SOC裝置可包括一或更多個處理單元、場可程式設計閘陣列、圖形單元、通信單元、系統虛擬化單元及各種應用功能,上述各者皆整合(或「燒錄」)到晶片基板上作為單個積體電路。當透過SOC操作時,本文描述的關於訓練機器學習模型(例如,深度神經網路)或執行涉及資料遮罩的計算的一些功能可在單個積體電路(晶片)上經由特殊應用邏輯整合計算裝置800的其他部件來操作。本揭示案的實例亦可使用能夠執行邏輯運算(例如,與、或、與非運算)的其他技術來實踐,包括但不限於到機械、光學、流體及量子技術。此外,本發明的態樣可在通用電腦或任何其他電路或系統中實踐。
計算裝置800亦可具有一或更多個輸入裝置812,如鍵盤、滑鼠、筆、聲音輸入裝置、觸控輸入裝置等。諸如顯示器、揚聲器、印表機等輸出裝置814亦可包括在內。上述設備是實例,亦可使用其他裝置。在計算裝置800是伺服器的情況下,此種使用者輸入裝置及使用者輸出裝置通常不存在,或者不直接連接到計算裝置800。計算裝置800可包括允許與其他計算裝置818通信的一或更多個通信連接816。合適的通信連接816包括的實例包括但不限於射頻發射器、接收器,及/或收發器電路系統;通用序列匯流排(universal serial bus; USB)、並行埠及/或序列埠。
本文使用的術語電腦可讀媒體可包括電腦儲存媒體。電腦儲存媒體可包括揮發性及非揮發性、可移動及不可移動媒體,該等媒體以任何方法或技術實施用於儲存資訊,如電腦可讀指令、資料結構、程式模組或配置檔(「位元檔」),該等配置檔指定FPGA的配置以實施特定的功能。系統記憶體804、可移除儲存裝置809及不可移除儲存裝置810皆為電腦儲存媒體實例(即,記憶體儲存裝置)。電腦儲存媒體可包括RAM、ROM、電可抹除可程式設計唯讀記憶體(electrically erasable programmable read-only memory; EEPROM)、快閃記憶體或其他儲存技術、CD-ROM、數位多功能碟(digital versatile disk; DVD)或其他光儲存裝置、磁帶盒、磁帶、磁碟儲存裝置或其他磁儲存裝置,或可用於儲存資訊且可由計算裝置800存取的任何其他製品。任何此種電腦儲存媒體皆可是計算裝置800的一部分。電腦儲存媒體不包括載波或其他傳播的資料信號。
通信媒體可由電腦可讀指令、資料結構、程式模組或調變資料信號中的其他資料來體現,如載波或其他傳輸機制,且包括任何資訊傳遞媒體。術語「調變資料信號」可描述具有以在信號中編碼資訊的方式設定或更改的一或更多個特徵的信號。作為示例而非限制,通信媒體可包括有線媒體,如有線網路或直線連接;及無線媒體,如聲學、射頻(radio frequency; RF)、紅外及其他無線媒體。
第9A及9B圖示出了行動計算裝置900,例如行動電話、智慧型電話、平板個人電腦、膝上型電腦等,利用該等裝置可實施本發明的各態樣。參考第9A圖,示出了用於實施該等態樣的行動計算裝置900的實例。在基本配置中,行動計算裝置900是具有輸入元件及輸出元件的手持電腦。行動計算裝置900通常包括顯示器905及允許使用者向行動計算裝置900輸入資訊的一或更多個輸入按鈕910。行動計算裝置900的顯示器905亦可用作輸入裝置(例如,觸控式螢幕顯示器)。若包括,可選的側面輸入元件915允許進一步的使用者輸入。側面輸入元件915可是旋轉開關、按鈕或任何其他類型的手動輸入元件。在替代實例中,行動計算裝置900可併入有更多或更少的輸入元件。例如,在一些實例中,顯示器905可不是觸控式螢幕。在替代實例中,行動計算裝置900是可攜式電話系統,如蜂巢電話。行動計算裝置900亦可包括可選的小鍵盤935。可選小鍵盤935可為實體小鍵盤或在觸控式螢幕顯示器上產生的「軟式」小鍵盤。在各個態樣中,輸出元件包括用於顯示圖形化使用者介面(graphical user interface; GUI)的顯示器905、視覺指示器920(例如,發光二極體)及/或音訊換能器925(例如,揚聲器)。在一些實例中,行動計算裝置900結合了用於向使用者提供觸覺回饋的振動換能器。在又一實例中,行動計算裝置900包括輸入及/或輸出埠,諸、如音訊輸入(例如,麥克風插孔)、音訊輸出(例如,耳機插孔)及視訊輸出(例如,HDMI埠),用於向外部裝置發送信號或從外部裝置接收信號。
第9B圖是示出行動計算裝置的一個實例的架構的方塊圖。換言之,行動計算裝置900可結合系統(即,架構)902來實施一些實例。在一個實例中,系統902被實施為能夠運行一或更多個應用程式(例如,瀏覽器、電子郵件、日曆、連絡人管理器、消息客戶端、遊戲及媒體客戶端/播放機)的「智慧型電話」。在一些實例中,系統902被整合為計算裝置,如整合的個人數位助理(personal digital assistant; PDA)及無線電話。如第9B圖所示,系統902進一步包括處理器960、儲存可由處理器960執行的作業系統964的記憶體962。系統902可進一步包括硬體加速器963,該硬體加速器963可被配置為加速各種計算任務,且包括如上文根據本揭示案的各種實例所述的硬體退出電路。
一或更多個應用程式950可被載入到記憶體962中,並在作業系統964上運行或與作業系統964相關聯。應用程式的實例包括電話撥號程式、電子郵件程式、個人資訊管理(personal information management; PFM)程式、字處理程式、試算表程式、網際網路瀏覽器程式、消息傳遞程式、機器學習軟體(例如,用於再訓練模型及/或聯合機器學習)等。系統902亦包括記憶體962內的非揮發性儲存區域968。非揮發性儲存區域968可用於儲存系統902斷電時不應丟失的永久資訊。應用程式950可使用非揮發性儲存區域968中的資訊及在其中儲存資訊,如電子郵件應用程式使用的電子郵件或其他消息等。同步應用程式(未示出)亦駐留在系統902上,且被程式設計為與駐留在主機電腦上的對應同步應用程式交互,以使儲存在非揮發性儲存區域968中的資訊與儲存在主機電腦上的對應資訊保持同步。應該理解的是,其他應用程式可被載入記憶體962中,並在行動計算裝置900上運行。
系統902具有電源970,其可被實施為一或更多個電池。電源970可進一步包括外部電源,如AC適配器或對電池進行補充或充電的電動對接支架。
系統902可進一步包括無線電972,其執行發送及接收射頻通信的功能。無線電972便於系統902透過通信載體或服務提供商與「外界」之間的無線連接。來往於無線電972的傳輸在作業系統964的控制下進行。換言之,由無線電972接收的通信可經由作業系統964散播到應用程式950,反之亦然。
視覺指示器920可用於提供視覺通知,且/或音訊介面974可用於透過音訊換能器925產生聽覺通知。在所示的實例中,視覺指示器920是發光二極體(light emitting diode; LED),而音訊換能器925是揚聲器。該等裝置可直接耦合到電源970,使得在啟動時,即使處理器960及其他部件可能關閉以節省電池電力,該等裝置亦在由通知機制指示的歷時內保持開啟。LED可被程式設計為無限期地保持開啟,直到使用者採取行動來指示裝置的通電狀態。音訊介面974用於向使用者提供聽覺信號並從使用者處接收聽覺信號。例如,除了耦合到音訊換能器925之外,音訊介面974亦可耦合到麥克風以接收聽覺輸入,如便於電話交談。系統902可進一步包括視訊介面976,其賦能機載相機930記錄靜止圖像、視訊串流等。
實施系統902的行動計算裝置900可具有額外特徵或功能。例如,行動計算裝置900亦可包括額外的資料儲存裝置(可移除及/或不可移除的),如磁碟、光碟或磁帶。此種額外儲存裝置在第9B圖中由非揮發性儲存區域968示出。
由行動計算裝置900產生或捕獲和透過系統902儲存的資料/資訊可區域地儲存在行動計算裝置900,如上文所述,或者資料可儲存在任何數量的儲存媒體上,該等儲存媒體可由裝置經由無線電972存取,或者經由行動計算裝置900及與行動計算裝置900關聯的單獨計算裝置之間的有線連接存取,例如分散式運算網路中的伺服器電腦,如網際網路。應當理解,此種資料/資訊可透過行動計算裝置900經由無線電972存取,或經由分散式運算網路存取。類似地,根據眾所熟知的資料/資訊傳輸和儲存手段,包括電子郵件和協作資料/資訊共用系統,此種資料/資訊可易於在計算裝置之間傳輸以供儲存及使用。
從前文的揭示內容可理解,該技術的一個態樣係關於硬體退出電路,包括:一或更多個輸入佇列,每個佇列對應於任務的輸入串流,且被配置為儲存對應於輸入串流的任務的輸入任務識別符;及處理邏輯,被配置為:接收完成的任務事件;決定已完成任務事件的已完成任務佇列識別符及已完成任務識別符是否匹配輸入佇列頭部的輸入任務的輸入任務識別符,該輸入佇列頭部具有對應於已完成任務佇列識別符的輸入佇列識別符;且回應於決定匹配,在輸入佇列頭部處彈出任務,並輸出對應於輸入任務的任務退出事件。
硬體退出電路可進一步包括儲存準備退出表的記憶體,該準備退出表儲存與硬體退出電路先前接收的已完成任務事件相對應的複數個條目,其中處理邏輯被進一步配置為在輸入佇列頭部處彈出任務之後:決定在輸入佇列的更新頭部的第二輸入任務的第二輸入任務識別符及輸入佇列識別符是否匹配準備退出表中的條目;且回應於決定匹配:在輸入佇列的更新頭部處彈出任務;從準備退出表中移除第二個輸入任務;且輸出對應於第二輸入任務的第二任務退出事件。
處理邏輯可包括對應於一或更多個輸入佇列之一者的複數個退出子電路,其中複數個退出子電路的一退出子電路包括:退出子電路的記憶體的區域準備退出表;及處理邏輯電路,被配置為管理與退出子電路相關聯的輸入佇列。區域準備退出表可被配置為:比較已完成任務佇列識別符及與退出子電路相關聯的輸入佇列的輸入佇列識別符;且更新區域準備退出表以指示與已完成任務事件相關聯的任務準備好退出,且處理邏輯電路可被配置為:透過決定與退出子電路相關聯的輸入佇列的輸入任務識別符是否與區域準備退出表中的已完成任務識別符相匹配,來決定已完成任務佇列識別符及已完成任務識別符是否與輸入任務識別符相匹配;且回應於決定匹配,在與退出子電路相關聯的輸入佇列頭部處彈出任務,且輸出對應於輸入任務的任務退出事件。
硬體退出電路可進一步包括:仲裁器電路,被配置為選擇性地授權複數個退出子電路存取,以將任務退出事件輸出到由複數個退出子電路共用的信號旗語電路。
硬體退出電路可進一步包括:已完成任務佇列,被配置為儲存包括已完成任務事件的複數個已完成任務事件,其中處理邏輯被配置為透過以下方式決定已完成任務佇列識別符及已完成任務識別符是否與輸入任務的輸入任務識別符匹配:將與已完成任務佇列識別符相關聯的輸入佇列頭部的輸入任務的輸入任務識別符與已完成任務識別符進行比較,且其中該處理邏輯被進一步配置成回應於決定匹配,從已完成任務佇列中彈出已完成任務事件。該處理邏輯可進一步被配置為回應於決定不匹配,從已完成任務佇列中彈出已完成任務事件;及更新儲存在硬體退出電路的記憶體中的全域準備退出表,以指示與已完成任務事件相關聯的任務準備好退出,全域準備退出表儲存對應於硬體退出電路先前接收的已完成任務事件的複數個條目。
該技術的另一態樣係關於用於退出由硬體加速器執行的任務的方法,該方法包括:由硬體退出電路的處理電路接收已完成的任務事件,該事件包括一或更多個輸入佇列,每個佇列對應於一輸入任務串流,且被配置為儲存對應於輸入串流任務的輸入任務識別符;由處理電路決定已完成任務事件的已完成任務佇列識別符及已完成任務識別符是否匹配輸入佇列頭部的輸入任務的輸入任務識別符,該輸入佇列頭部具有對應於已完成任務佇列識別符的輸入佇列識別符;且回應於決定匹配,在輸入佇列頭部處彈出任務,並輸出對應於該輸入任務的任務退出事件。
該方法可進一步包括:回應於決定不匹配,更新儲存在硬體退出電路的記憶體中的準備退出表,以指示與已完成任務事件相關聯的任務準備好退出;及在輸入佇列頭部處彈出任務之後:決定在輸入佇列的更新頭部的第二輸入任務的第二輸入任務識別符及輸入佇列識別符是否匹配準備退出表中的一條目;且回應於決定匹配:在輸入佇列的更新頭部處彈出任務;從準備退出表中移除第二輸入任務;及輸出對應於第二輸入任務的第二任務退出事件。
處理電路可包括對應於一或更多個輸入佇列中之一者的複數個退出子電路,其中複數個退出子電路的一退出子電路包括:退出子電路的記憶體的區域準備退出表;及處理邏輯電路,其被配置為管理與退出子電路相關聯的輸入佇列。該方法可進一步包括:由區域準備退出表將已完成任務佇列識別符及與退出子電路相關聯的輸入佇列的輸入佇列識別符進行比較;更新區域準備退出表以指示與已完成任務事件相關聯的任務準備好退出;由處理邏輯電路透過決定與退出子電路相關聯的輸入佇列的輸入任務識別符是否匹配區域準備退出表中的已完成任務識別符,來決定已完成任務佇列識別符及已完成任務識別符是否匹配輸入任務識別符;及回應於決定匹配,由處理邏輯電路彈出與退出子電路相關聯的輸入佇列頭部處的任務,並輸出對應於輸入任務的任務退出事件。
該方法可進一步包括:由仲裁器電路選擇性地授權複數個退出子電路存取,以將任務退出事件輸出到由複數個退出子電路共用的信號旗語電路。
該方法可進一步包括:透過比較與已完成任務佇列識別符相關聯的輸入佇列頭部的輸入任務的輸入任務識別符及已完成任務識別符,決定已完成任務佇列識別符及已完成任務識別符是否匹配輸入任務的輸入任務識別符;及回應於決定匹配,從儲存在硬體退出電路的記憶體中的已完成任務佇列中彈出已完成任務事件,該已完成任務佇列被配置為儲存包括已完成任務事件的複數個已完成任務事件。該方法可進一步包括回應於決定不匹配:從已完成任務佇列中彈出已完成任務事件;及更新儲存在硬體退出電路的記憶體中的全域準備退出表,以指示與已完成任務事件相關聯的任務準備好退出。
本技術的另一態樣係關於儲存指令的非暫時性電腦可讀媒體,當執行該等指令時,使處理器配置硬體退出電路,該硬體退出電路包括:一或更多個輸入佇列,每個佇列對應於任務的輸入串流,且被配置為儲存對應於輸入串流的任務的輸入任務識別符;及處理邏輯,被配置為:接收完成的任務事件;決定已完成任務事件的已完成任務佇列識別符及已完成任務識別符是否匹配輸入佇列頭部的輸入任務的輸入任務識別符,該輸入佇列頭部具有對應於已完成任務佇列識別符的輸入佇列識別符;且回應於決定匹配,在輸入佇列頭部處彈出任務,並輸出對應於輸入任務的任務退出事件。
在儲存在非暫時性電腦可讀媒體上的指令中指定的硬體退出電路可進一步包括儲存準備退出表的記憶體,該準備退出表儲存與硬體退出電路先前接收的已完成任務事件相對應的複數個條目,且其中處理邏輯可進一步被配置為在輸入佇列頭部處彈出任務之後:決定在輸入佇列的更新頭部的第二輸入任務的第二輸入任務識別符及輸入佇列識別符是否匹配準備退出表中的條目;且回應於決定匹配:在輸入佇列的更新頭部處彈出任務;從準備退出表中移除第二輸入任務;且輸出對應於第二輸入任務的第二任務退出事件。
儲存在非暫時性電腦可讀媒體上的指令中指定的處理邏輯可包括對應於的一或更多個輸入佇列中之一者的複數個退出子電路,其中複數個退出子電路中的一退出子電路可包括:退出子電路的記憶體的區域準備退出表;及處理邏輯電路,其被配置為管理與退出子電路相關聯的輸入佇列。
區域準備退出表可被配置為:比較已完成任務佇列識別符及與退出子電路相關聯的輸入佇列的輸入佇列識別符;且更新區域準備退出表以指示與已完成任務事件相關聯的任務準備好退出,且其中處理邏輯電路被配置為:透過決定與退出子電路相關聯的輸入佇列的輸入任務識別符是否與區域準備退出表中的已完成任務識別符相匹配,來決定已完成任務佇列識別符及已完成任務識別符是否與輸入任務識別符相匹配;且回應於決定匹配,在與退出子電路相關聯的輸入佇列的頭部彈出任務,且輸出對應於輸入任務的任務退出事件。
由儲存在非暫時性電腦可讀媒體上的指令指定的硬體退出電路可進一步包括:仲裁器電路,其被配置為選擇性地授權複數個退出子電路存取以將任務退出事件輸出到由複數個退出子電路共用的信號旗語電路。
由儲存在非暫時性電腦可讀媒體上的指令指定的硬體退出電路可進一步包括:已完成任務佇列,其被配置為儲存包括完成任務事件的複數個已完成任務事件,其中該處理邏輯可被配置為透過以下方式來決定已完成任務佇列識別符及已完成任務識別符是否匹配一輸入任務的輸入任務識別符:將位於與已完成任務佇列識別符相關聯的輸入佇列頭部的輸入任務的輸入任務識別符與已完成任務識別符進行比較,其中處理邏輯進一步被配置為回應於決定匹配,從已完成任務佇列中彈出已完成任務事件,且其中處理邏輯進一步被配置為回應於決定不匹配:從已完成任務佇列中彈出已完成任務事件;及更新儲存在硬體退出電路的記憶體中的全域準備退出表,以指示與已完成任務事件相關聯的任務已準備好退出。
例如,上文參考根據本發明的態樣的方法、系統及電腦程式產品的方塊圖及/或操作說明描述了本發明的態樣。方塊中標注的功能/動作可不按照任何流程圖中所示的順序發生。例如,連續示出的兩個方塊實際上可基本上同時執行,或者該等方塊有時可以相反的循序執行,此取決於所涉及的功能/動作。此外,如本文及專利申請範圍中所使用的,片語「元素A、元素B或元素C中的至少一個」意欲表達元素A、元素B、元素C、元素A及B、元素A及C、元素B及C及元素A、B及C中的任何一者。
本申請案中提供的一或更多個實例的描述及圖示並不意欲以任何方式限制或限定本文所主張發明的範疇。
本申請案中提供的態樣、實例及細節被認為足以傳達所有權,並使他人能夠製造及使用本文所主張發明的最佳模式。本文主張的發明不應被解釋為限於本申請案中提供的任何態樣、實例或細節。不管是組合還是單獨地示出及描述,各種特徵(結構特徵及方法特徵)都意欲被選擇性地包括或省略,以產生具有一組特定特徵的實例。已經提供了本申請案的描述及圖示,本領域技藝人士可設想落入本申請案中體現的一般發明概念的更廣泛態樣的精神內的變化、潤飾及替代實例,該等變化、潤飾及替代實例不脫離所主張的發明的更大範疇。
1:硬體加速器
2:硬體加速器
3:硬體加速器
4:硬體加速器
6:硬體加速器
10:輸入引擎電路
15:CPU
20:處理電路
30:退出電路
110A:串流A
110B:串流B
110C:串流C
110M:記帳資訊
110W:工作負荷
120:事件
130:任務完成事件
210:寫入器電路
220:調度器電路
230:退出電路
232:退出處理邏輯
234:輸入佇列
236:準備退出佇列
238:準備退出表
240:信號旗語電路
300:方法
310:操作
320:操作
330:操作
340:操作
350:操作
360:操作
370:操作
380:操作
410:寫入器電路
420:調度器電路
430:多執行緒退出電路
431:退出子電路
431-1:第一退出子電路
431-2:第二退出子電路
431-3:第三退出子電路
431-4:第四退出子電路
431-5:第五退出子電路
432-1:處理邏輯電路
432-2:處理邏輯電路
432-3:處理邏輯電路
432-4:處理邏輯電路
432-5:處理邏輯電路
434:輸入佇列
434-1:輸入佇列
434-2:輸入佇列
434-3:輸入佇列
434-4:輸入佇列
434-5:輸入佇列
437:多工器
438-1:向量
438-2:向量
438-3:向量
438-4:向量
438-5:向量
439:仲裁器電路
440:信號旗語電路
501:方法
502:方法
511:操作
521:操作
532:操作
542:操作
552:操作
562:操作
610:寫入器電路
620:調度器電路
631:退出子電路
631-2:退出子電路
631-3:退出子電路
632:處理邏輯電路
633:暫存器
634:輸入佇列
635:旗語多工器
637:區域旗語暫存器
638:區域準備退出表
639:仲裁器電路
640:仲裁器邏輯處理電路
641:仲裁器多工器
642:暫存器
650:信號旗語電路
700:狀態轉換圖
710:空閒狀態
720:窺視輸入狀態
730:完成狀態
740:旗語開始狀態
750:WAIT_SEM0
760:發送源就緒旗語狀態
770:WAIT_SEM1
780:發送目的地有效旗語狀態
800:計算裝置
802:處理單元
803:硬體加速器
804:系統記憶體
805:作業系統
806:程式模組
808:虛線
809:可移除的儲存裝置
810:不可移除儲存裝置
812:輸入裝置
814:輸出裝置
816:通信連接
818:計算裝置
850:軟體應用
852:機器學習模型訓練應用程式
854:客戶端應用程式
900:行動計算裝置
902:系統
905:顯示器
910:輸入按鈕
915:側面輸入元件
920:視覺指示器
925:音訊換能器
930:機載相機
935:小鍵盤
960:處理器
962:記憶體
963:硬體加速器
964:作業系統
964:作業系統
968:非揮發性儲存區域
970:電源
972:無線電
974:音訊介面
976:視訊介面
附圖併入本揭示案並構成其一部分,且示出了本發明的各個態樣。在附圖中:
第1圖繪示了根據一個實例的將多個任務串流輸入到硬體加速器的輸入引擎電路及由硬體退出電路對硬體加速器產生的結果進行重新排序的高階圖。
第2圖是繪示根據本技術的一個實例的退出電路的方塊圖。
第3圖是根據本技術的一個實例的使用退出電路來追蹤進行中的任務及退出任務的方法的流程圖。
第4圖是繪示根據本技術的一個實例的多執行緒退出電路的方塊圖。
第5A圖是根據本技術的一個實例的使用退出電路來處理即將進入的已完成任務事件的方法的流程圖。
第5B圖是根據本技術的一個實例的使用退出電路從輸入佇列中退出準備退出任務的方法的流程圖。
第6圖是繪示根據本技術的一個實例的多執行緒退出電路的一個執行緒的方塊圖,該電路被配置為退出與一個任務串流相關聯的任務。
第7圖是根據本技術的一個實例的有限狀態機的狀態轉換圖,有限狀態機用於控制多執行緒退出電路的一個執行緒以退出與一個任務串流相關聯的任務。
第8圖是示出可實施本發明的各態樣的計算裝置的示例實體部件的方塊圖。
第9A及9B圖是可實施本發明各態樣的行動計算裝置的簡化方塊圖。
國內寄存資訊(請依寄存機構、日期、號碼順序註記)
無
國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記)
無
1:硬體加速器
10:輸入引擎電路
15:CPU
20:處理電路
30:退出電路
110A:串流A
110B:串流B
110C:串流C
110M:記帳資訊
110W:工作負荷
120:事件
130:任務完成事件
Claims (20)
- 一種硬體退出電路,包括: 一或更多個輸入佇列,每個佇列對應於任務的一輸入串流,且被配置為儲存對應於該輸入串流的任務的輸入任務識別符;及 處理邏輯,被配置為: 接收一已完成任務事件; 決定該已完成任務事件的一已完成任務佇列識別符及一已完成任務識別符是否匹配一輸入佇列的一頭部的一輸入任務的一輸入任務識別符,該輸入佇列的該頭部具有對應於該已完成任務佇列識別符的一輸入佇列識別符;及 回應於決定一匹配,在該輸入佇列的該頭部處彈出該任務,並輸出對應於該輸入任務的一任務退出事件。
- 如請求項1所述的硬體退出電路,還包括儲存一準備退出表的一記憶體,該準備退出表儲存對應於該硬體退出電路先前接收的已完成任務事件的複數個條目, 其中,該處理邏輯進一步被配置為,在該輸入佇列的該頭部處彈出該任務之後: 決定在該輸入佇列的一更新頭部的一第二輸入任務的一第二輸入任務識別符及該輸入佇列識別符是否匹配該準備退出表中的一條目;及 回應於決定一匹配: 在該輸入佇列的該更新頭部處彈出該任務; 從該準備退出表中移除該第二個輸入任務;及 輸出對應於該第二輸入任務的一第二任務退出事件。
- 如請求項1所述的硬體退出電路,其中該處理邏輯包括對應於該一或更多個輸入佇列中之一者的複數個退出子電路,其中該複數個退出子電路的一退出子電路包括: 該退出子電路的一記憶體的一區域準備退出表;及 一處理邏輯電路,被配置為管理與該退出子電路相關聯的該輸入佇列。
- 如請求項3所述的硬體退出電路,其中該區域準備退出表被配置為: 將該已完成任務佇列識別符及與該退出子電路相關聯的該輸入佇列的該輸入佇列識別符進行比較;及 更新該區域準備退出表以指示與該已完成任務事件相關聯的該任務準備好退出,且 其中該處理邏輯電路被配置為: 透過決定與該退出子電路相關聯的該輸入佇列的該輸入任務識別符是否匹配該區域準備退出表中的該已完成任務識別符,來決定該已完成任務佇列識別符及該已完成任務識別符是否匹配該輸入任務識別符;及 回應於決定一匹配,在與該退出子電路相關聯的該輸入佇列的該頭部處彈出該任務,並輸出對應於該輸入任務的該任務退出事件。
- 如請求項3所述的硬體退出電路,進一步包括: 一仲裁器電路,被配置為選擇性地授權該複數個退出子電路存取,以將該任務退出事件輸出到由該複數個退出子電路共用的一信號旗語電路。
- 如請求項1所述的硬體退出電路,進一步包括: 一已完成任務佇列,被配置為儲存包括該已完成任務事件的複數個已完成任務事件, 其中該處理邏輯被配置為透過以下方式來決定該已完成任務佇列識別符及該已完成任務識別符是否匹配一輸入任務的該輸入任務識別符: 將與該已完成任務佇列識別符相關聯的該輸入佇列的該頭部的該輸入任務的該輸入任務識別符與該已完成任務識別符進行比較,及 其中該處理邏輯還被配置為回應於決定一匹配,從該已完成任務佇列中彈出該已完成任務事件。
- 如請求項6所述的硬體退出電路,其中該處理邏輯還被配置為回應於決定一不匹配: 從該已完成任務佇列中彈出該已完成任務事件;及 更新儲存在該硬體退出電路的一記憶體中的一全域準備退出表,以指示與該已完成任務事件相關聯的該任務準備好退出,該全域準備退出表儲存對應於該硬體退出電路先前接收的已完成任務事件的複數個條目。
- 一種用於退出由一硬體加速器執行的任務的方法,該方法包括以下步驟: 由包括一或更多個輸入佇列的一硬體退出電路的一處理電路接收一已完成任務事件,每個佇列對應於任務的一輸入串流,且被配置為儲存對應於該輸入串流的任務的輸入任務識別符; 由該處理電路決定該已完成任務事件的一已完成任務佇列識別符及一已完成任務識別符是否匹配位於一輸入佇列的一頭部的一輸入任務的一輸入任務識別符,該輸入佇列的該頭部具有對應於該已完成任務佇列識別符的一輸入佇列識別符;及 回應於決定一匹配,在該輸入佇列的該頭部彈出處該任務,並輸出對應於該輸入任務的一任務退出事件。
- 如請求項8所述的方法,進一步包括以下步驟: 回應於決定一不匹配,更新儲存在該硬體退出電路的一記憶體中的一準備退出表,以指示與該已完成任務事件相關聯的該任務準備好退出;及 在該輸入佇列的該頭部處彈出該任務之後: 決定在該輸入佇列的一更新頭部的一第二輸入任務的一第二輸入任務識別符及該輸入佇列識別符是否匹配該準備退出表中的一條目;及 回應於決定一匹配: 在該輸入佇列的該更新頭部處彈出該任務; 從該準備退出表中移除該第二輸入任務;及 輸出對應於該第二輸入任務的一第二任務退出事件。
- 如請求項8所述的方法,其中該處理電路包括對應於該一或更多個輸入佇列之一的複數個退出子電路,其中該複數個退出子電路的一退出子電路包括: 該退出子電路的一記憶體的一區域準備退出表;及 一處理邏輯電路,被配置為管理與該退出子電路相關聯的該輸入佇列。
- 如請求項10所述的方法,進一步包括以下步驟: 由該區域準備退出表將該已完成任務佇列識別符及與該退出子電路相關聯的該輸入佇列的該輸入佇列識別符進行比較; 更新該區域準備退出表以指示與該已完成任務事件相關聯的該任務準備好退出; 由該處理邏輯電路透過決定與該退出子電路相關聯的該輸入佇列的該輸入任務識別符是否匹配該區域準備退出表中的該已完成任務識別符,來決定該已完成任務佇列識別符及該已完成任務識別符是否匹配該輸入任務識別符;及 回應於決定一匹配,由該處理邏輯電路彈出與該退出子電路相關聯的該輸入佇列的該頭部的該任務,並輸出對應於該輸入任務的該任務退出事件。
- 如請求項10所述的方法,進一步包括以下步驟: 由一仲裁器電路選擇性地授權該複數個退出子電路存取,以將該任務退出事件輸出到由該複數個退出子電路共用的一信號旗語電路。
- 如請求項8所述的方法,進一步包括以下步驟: 透過比較與該已完成任務佇列識別符相關聯的該輸入佇列的該頭部的該輸入任務的該輸入任務識別符與該已完成任務識別符,來決定該已完成任務佇列識別符及該已完成任務識別符是否匹配一輸入任務的該輸入任務識別符;及 回應於決定一匹配,從儲存在該硬體退出電路的一記憶體中的一已完成任務佇列中彈出該已完成任務事件,該已完成任務佇列被配置為儲存包括該已完成任務事件的複數個已完成任務事件。
- 如請求項13所述的方法,進一步包括以下步驟,回應於決定一不匹配: 從該已完成任務佇列中彈出該已完成任務事件;及 更新儲存在該硬體退出電路的一記憶體中的一全域準備退出表,以指示與該已完成任務事件相關聯的該任務準備好退出。
- 一種儲存指令的非暫時性電腦可讀媒體,該等指令在被執行時使一處理器配置一硬體退出電路,該硬體退出電路包括: 一或更多個輸入佇列,每個佇列對應於任務的一輸入串流,且被配置為儲存對應於該輸入串流的任務的輸入任務識別符;及 一處理邏輯,被配置為: 接收一已完成任務事件; 決定該已完成任務事件的一已完成任務佇列識別符及一已完成任務識別符是否匹配一輸入佇列的一頭部的一輸入任務的一輸入任務識別符,該輸入佇列的該頭部具有對應於該已完成任務佇列識別符的一輸入佇列識別符;及 回應於決定一匹配,在該輸入佇列的該頭部處彈出該任務,並輸出對應於該輸入任務的一任務退出事件。
- 如請求項15所述的非暫時性電腦可讀媒體,其中該硬體退出電路進一步包括儲存一準備退出表的一記憶體,該準備退出表儲存對應於該硬體退出電路先前接收的已完成任務事件的複數個條目,且 其中,該處理邏輯還被配置為在該輸入佇列的該頭部處彈出該任務之後: 決定在該輸入佇列的一更新頭部的一第二輸入任務的一第二輸入任務識別符及該輸入佇列識別符是否匹配該準備退出表中的一條目;及 回應於決定一匹配: 在該輸入佇列的該更新頭部處彈出該任務; 從該準備退出表中移除該第二個輸入任務;及 輸出對應於該第二輸入任務的一第二任務退出事件。
- 如請求項15所述的非暫時性電腦可讀媒體,其中該處理邏輯包括對應於該一或更多個輸入佇列中之一者的複數個退出子電路,其中該複數個退出子電路的一退出子電路包括: 該退出子電路的一記憶體的一區域準備退出表;及 一處理邏輯電路,被配置為管理與該退出子電路相關聯的該輸入佇列。
- 如請求項17所述的非暫時性電腦可讀媒體,其中該區域準備退出表被配置為: 將該已完成任務佇列識別符及與退出子電路相關聯的該輸入佇列的該輸入佇列識別符進行比較;及 更新該區域準備退出表以指示與該已完成任務事件相關聯的該任務準備好退出,且 其中該處理邏輯電路被配置為: 透過決定與該退出子電路相關聯的該輸入佇列的該輸入任務識別符是否匹配該區域準備退出表中的該已完成任務識別符,來決定該已完成任務佇列識別符及該已完成任務識別符是否匹配該輸入任務識別符;及 回應於決定一匹配,在與該退出子電路相關聯的該輸入佇列的該頭部處彈出該任務,並輸出對應於該輸入任務的該任務退出事件。
- 如請求項17所述的非暫時性電腦可讀媒體,其中該硬體退出電路進一步包括: 一仲裁器電路,被配置為選擇性地授權該複數個退出子電路存取,以將該任務退出事件輸出到由該複數個退出子電路共用的一信號旗語電路。
- 如請求項15所述的非暫時性電腦可讀媒體,其中該硬體退出電路進一步包括: 一已完成任務佇列,被配置為儲存包括該已完成任務事件的複數個已完成任務事件, 其中該處理邏輯被配置為透過以下方式來決定該已完成任務佇列識別符及該已完成任務識別符是否匹配一輸入任務的該輸入任務識別符: 將與該已完成任務佇列識別符相關聯的該輸入佇列的該頭部的該輸入任務的該輸入任務識別符與該已完成任務識別符進行比較, 其中該處理邏輯進一步被配置為回應於決定一匹配,從該已完成的任務佇列中彈出該已完成的任務事件,且 其中該處理邏輯還被配置為回應於決定一不匹配: 從該已完成任務佇列中彈出該已完成任務事件;及 更新儲存在該硬體退出電路的一記憶體中的一全域準備退出表,以指示與該已完成任務事件相關聯的該任務準備好退出。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/971,523 | 2022-10-21 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202418075A true TW202418075A (zh) | 2024-05-01 |
Family
ID=
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI639118B (zh) | 有不同執行優先程度的計算任務的排程和管理 | |
KR101705926B1 (ko) | 메모리 디바이스의 내부 프로세서의 조건부 연산 | |
JP6961686B2 (ja) | トリガ動作を用いたgpuリモート通信 | |
TWI317482B (en) | Wide-port context cache apparatus, systems and methods, and machine-accessible medium having associated information | |
JP5948628B2 (ja) | 記憶システム及び方法 | |
US20150186068A1 (en) | Command queuing using linked list queues | |
US8858324B2 (en) | Speculative rendering using historical player data | |
US7822885B2 (en) | Channel-less multithreaded DMA controller | |
US7694310B2 (en) | Method for implementing MPI-2 one sided communication | |
US20150033001A1 (en) | Method, device and system for control signalling in a data path module of a data stream processing engine | |
US20180089117A1 (en) | Reconfigurable fabric accessing external memory | |
CN105786448B (zh) | 一种指令调度方法及装置 | |
US20180181503A1 (en) | Data flow computation using fifos | |
US9021482B2 (en) | Reordering data responses using ordered indicia in a linked list | |
TW201308211A (zh) | 虛擬繪圖處理單元 | |
CN110489213A (zh) | 一种任务处理方法及处理装置、计算机系统 | |
TW201229897A (en) | A fast and linearizable concurrent priority queue via dynamic aggregation of operations | |
US9684613B2 (en) | Methods and systems for reducing spurious interrupts in a data storage system | |
CN114827048B (zh) | 一种动态可配高性能队列调度方法、系统、处理器及协议 | |
US9971711B2 (en) | Tightly-coupled distributed uncore coherent fabric | |
US20130117751A1 (en) | Compute task state encapsulation | |
US7725686B2 (en) | Systems and methods for processing buffer data retirement conditions | |
EP3475808B1 (en) | Method and apparatus for performing simd gather and copy operations | |
WO2024103927A1 (zh) | 混合部署场景下的作业调度方法、装置及电子设备 | |
TW202418075A (zh) | 用於在多流資料移動中退出的系統和方法 |