TWI810262B - 用於計算機器的可變位元寬資料格式的單打包和拆包網路及方法 - Google Patents
用於計算機器的可變位元寬資料格式的單打包和拆包網路及方法 Download PDFInfo
- Publication number
- TWI810262B TWI810262B TW108109989A TW108109989A TWI810262B TW I810262 B TWI810262 B TW I810262B TW 108109989 A TW108109989 A TW 108109989A TW 108109989 A TW108109989 A TW 108109989A TW I810262 B TWI810262 B TW I810262B
- Authority
- TW
- Taiwan
- Prior art keywords
- bit
- bits
- positions
- bit positions
- predetermined number
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000012856 packing Methods 0.000 claims abstract description 100
- 238000012545 processing Methods 0.000 claims description 62
- 230000003247 decreasing effect Effects 0.000 abstract 1
- 230000006870 function Effects 0.000 description 19
- 238000004422 calculation algorithm Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000005055 memory storage Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 239000005022 packaging material Substances 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Image Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
所揭示的是用於在電腦系統中對具有各種位元寬的資料進行位元打包的方法和裝置。該等方法和裝置利用固定位元打包或拆包網路,該網路被配置為在電腦系統中將多個不同位元寬的資料位元從第一數量的位元位置打包或拆包到第二數量的位元位置。該網路被專門配置為經由以下方式,將儲存在第一數量的位元位置的相應位元位置中的相同位元槽位置裡的位元進行打包:將該等位元路由到第二數量的位元位置中的相同位元位置的位元槽中,以在第二數量的位元位置中的相應位元位置中形成位元束。對固定打包網路的使用提供了位元寬與應用的最佳化匹配,其將成本、面積和功率降到最低、以及減少或最小化時延。
Description
優先權聲明
本專利申請案請求享受2018年3月1日提出申請的、標題為「SINGLE PACK & UNPACK NETWORK AND METHOD FOR VARIABLE BIT WIDTH DATA FORMATS FOR COMPUTATIONAL MACHINES」的申請案第15/909,942號的優先權,該申請已經轉讓給本案的受讓人,故以引用方式將其明確地併入本文。
概括地說,本案內容係關於位元打包和拆包網路,具體地說,本案內容係關於用於提供採用單個或統一打包和拆包網路的網路的方法和裝置。
在計算設備中,高效且準確地適應用於計算和記憶體儲存資料路徑的可變資料寬度格式的能力,在諸如數位信號處理(DSP)/數據機處理之類的處理操作以及中央處理單元(CPU)和圖形處理單元(GPU)中變得越來越重要。處理的性質是使得位元寬能夠在處理的每個步驟處變化。能夠將位元寬與演算法處理步驟或應用進行準確匹配,對於提供足夠的資料位元寬以確保精度和動態範圍是重要的,同時亦經由不提供太大的位元寬來確保將成本降到最低。具體而言,在處理期間儲存設備中的記憶體儲存資料路徑的情況下,應當注意,將資料位元寬與所需訊雜比(SNR)匹配提供了提供最大儲存密度的能力。亦即,寬於所需的位元寬將導致額外的記憶體和成本,而低於所需的位元寬將劣化SNR效能。
在計算或記憶體儲存資料路徑中適應可變位元寬以壓縮位元並避免稀疏記憶體儲存的已知方式,包括經由專用的每資料寬度網路或者某組寬度倍數網路實現每個資料寬度資料的打包/拆包,這導致更高的成本、面積和功率、以及承受更高的時延。因此,存在利用將成本、面積和功率降到最低、以及減少或最小化時延的打包和拆包,來高效且精確地將位元寬與演算法或應用進行匹配的需求。
根據一個態樣,本案內容提供了一種被配置用於在電腦系統中對具有各種位元寬的資料進行位元打包的裝置。所揭示的裝置包括該電腦系統中的第一複數個位元位置,其中該第一複數個位元位置均具有預定數量的位元槽,並且在該預定數量的位元槽的相應位元槽中臨時儲存一或多個位元,以及位元的預定數量對應於多個不同資料位元寬之一。另外,該裝置包括固定位元打包網路,其被配置為在該電腦系統中將多個不同位元寬的資料位元從該第一複數個位元位置打包到第二複數個位元位置,其中該網路被配置為經由以下方式,將儲存在該第一複數個位元位置的相應位元位置中的相同位元槽位置裡的位元進行打包:將該位元路由到該第二複數個位元位置中的相同位元位置的位元槽中,以在該第二複數個位元位置的相應位元位置中形成位元束。
根據另一個態樣,本案內容提供了被揭露的一種操作計算電路的方法。該方法包括:在第一複數個位元位置中的至少一個裡儲存一或多個位元,該第一複數個位元位置均具有預定數量的位元槽,並且被配置為在該預定數量的位元槽的相應位元槽中臨時儲存該一或多個位元,其中位元的預定數量對應於多個不同資料位元寬之一。該方法亦包括:將位元打包到第二複數個位元位置,該打包利用固定位元打包網路,該固定位元打包網路被配置為將多個不同位元寬的資料位元從該第一複數個位元位置打包到該第二複數個位元位置,其中該網路被配置為將儲存在該第一複數個位元位置的相應位元位置中的位元槽位置裡的位元發送到該第二複數個位元位置中的相同位元位置的位元槽中,以在該第二複數個位元位置的相應位元位置中形成位元束。
根據另一個態樣,本案內容提供了被揭露的一種被配置用於在電腦系統中對具有各種位元寬的資料進行位元打包的裝置。該裝置包括:用於在第一複數個位元位置中的至少一個裡儲存一或多個位元的構件,該第一複數個位元位置均在該等位元位置中具有預定數量的位元槽,並且被配置為在該預定數量的位元槽的相應位元槽中臨時儲存該一或多個位元,位元的預定數量對應於多個不同資料位元寬之一。另外,該裝置包括:用於將位元打包到第二複數個位元位置的構件,該打包利用固定位元打包網路,該固定位元打包網路被配置為將多個不同位元寬的資料位元從該第一複數個位元位置打包到該第二複數個位元位置,其中該網路被配置為將儲存在該第一複數個位元位置的相應位元位置中的位元槽位置裡的位元路由到該第二複數個位元位置中的相同位元位置的位元槽中,以在該第二複數個位元位置的相應位元位置中形成位元束。
根據一個另外的態樣,本案內容提供了被揭露的一種用於在電腦系統中進行位元打包的裝置,該裝置包括處理電路,該處理電路被配置用於在第一複數個位元位置中的至少一個裡儲存一或多個位元,該第一複數個位元位置均在該等位元位置中具有預定數量的位元槽,並且被配置為在該預定數量的位元槽的相應位元槽中臨時儲存該一或多個位元,位元的預定數量對應於多個不同資料位元寬之一。此外,該處理電路被配置用於將位元打包到第二複數個位元位置,該打包利用固定位元打包網路,該固定位元打包網路被配置為將多個不同位元寬的資料位元從該第一複數個位元位置打包到該第二複數個位元位置,其中該網路被配置為將儲存在該第一複數個位元位置的相應位元位置中的位元槽位置裡的位元發送到該第二複數個位元位置中的相同位元位置的位元槽中,以在該第二複數個位元位置的相應位元位置中形成位元束。
本案內容提供了用於在計算路徑(例如,單指令多資料(SIMD)計算)中提供單個或統一打包和拆包網路的方法和裝置,以用於處理可變資料寬度。單個打包和拆包網路的使用提供了更快速的存取、降低的成本和面積以及功率最佳化。
這裡,首先應當注意到,本文所使用的「示例性」一詞意味著「用作例子、例證或說明」。本文中描述為「示例性」的任何示例或態樣不一定被解釋為比其他示例或態樣更優選或更具優勢。
舉一個用於本發明方法和裝置的上下文的實例,但不作為限制,圖1圖示由裝置100組成的示例性計算系統,其中在裝置100中可以採用本發明方法和裝置。裝置100可以包括具有多個電路或設備104、106及/或108的處理電路102,其中該等設備可以在一或多個處理電路中實現,諸如在特殊應用積體電路(ASIC)中或在片上系統(SoC)中實現,舉例而言。裝置100可以是通訊設備,處理電路102可以包括一或多個周邊設備106、以及使該裝置能夠與無線電存取網路、核心存取網路、網際網路及/或另一個通訊網路進行通訊的收發機108。在一個態樣中,裝置100可以構成蜂巢式電話或行動計算裝置(例如,膝上型電腦或物聯網路(IoT)設備)。
電路104可以包括一或多個處理器112、一或多個DSP /數據機110、板載記憶體114、匯流排介面電路116及/或其他邏輯電路或功能。處理電路102可以由作業系統進行控制,該作業系統可以提供應用程式化介面(API)層,該API層使得一或多個處理器112能夠執行常駐在板載記憶體114或者處理電路102上提供的其他處理器可讀儲存設備122中的軟體模組。軟體模組可以包括儲存在板載記憶體114或處理器可讀儲存設備122中的指令和資料。ASIC 104可以存取其板載記憶體114、處理器可讀儲存設備122及/或處理電路102外的儲存設備。板載記憶體114可以包括以下中的一或多個:唯讀記憶體(ROM)、隨機存取記憶體(RAM)、電子可抹除可程式化ROM(EEPROM)、快閃記憶體或非揮發性記憶體,或者可以在處理系統和計算平臺中使用的任何記憶體設備。處理電路102可以包括、實現本端資料庫或其他參數儲存設備,或具有對本端資料庫或其他參數儲存設備的存取,本端資料庫或其他參數儲存設備能夠維護用於配置和操作裝置100及/或處理電路102的指令引數和其他資訊。可以使用暫存器、資料庫模組、非揮發性記憶體或快閃記憶體、磁性媒體、EEPROM、軟碟或硬碟等等,實現本端資料庫。處理電路102亦可以可操作地耦合到外部設備,例如顯示器126、操作員控制裝置(如,開關或按鈕128、130),及/或整合的或外部的鍵盤132、以及其他元件。使用者介面模組可以被配置為經由專用通訊鏈路或經由一或多個串列資料互連與顯示器126、鍵盤132等等一起操作。
處理電路102亦可以包括使得某些電路或設備104、106及/或108能夠進行通訊的一或多個匯流排118a、118b、120。在一個例子中,電路104可以包括匯流排介面電路116,其中該匯流排介面電路116包括電路、計數器、計時器、控制邏輯和其他可配置電路或模組的組合。在一個例子中,匯流排介面電路116可以被配置為根據通訊規範或協定進行操作。處理電路102可以包括或者控制功率管理功能,該功率管理功能用於配置和管理裝置100的操作。
圖2圖示可以在圖1的例子中的各種處理電路104內實現的處理系統200的例子,但不一定受此限制。在系統200的例子中,圖示複數個第一位元位置202。可以在電腦系統中的數個計算資料路徑中的任何一個裡實現該等位元位置。在一個例子中,該複數個位元位置202可以在單指令多資料(SIMD)計算電路內。在其他例子中,可以在各種計算電路的任何一個中實現位元位置202,並且位元位置202可以包含關於資料位元或位元字的指令或操作。位元位置202可以包括具有設定數量的位元、暫存器分區或位元槽206的多個元件或暫存器204。為了簡單起見,儘管以4位元或者替代地4暫存器分區來示出圖2中的元件204,本領域一般技藝人士應當理解,位元或暫存器分區的數量可以多於或少於所示的數量。此外,應當注意的是,在一些例子中,每個暫存器204對應於特定的SIMD或向量處理通道。
如先前所論述的,處理可以根據在位元位置202處在執行的應用或軟體,來操作具有變化的資料寬度的不同資料。具體而言,處理的性質是使得在諸如系統200之類的計算系統之每一者處理步驟處,位元寬通常可以例如從1到最大32位元寬變化(但不一定限於此種範圍)。
系統200亦包括位元打包/拆包網路208,其被配置為例如對從位元位置202輸出的或保存在位元位置202中的位元進行打包,或者對從第二位元位置210(例如,諸如RAM記憶體的記憶體設備)讀出或從第二位元位置210載入到位元位置202的位元進行拆包。如將在本文中更詳細地描述的,網路208可以是實體網路或管道階段,其被配置為對來自SIMD單元202的位元進行路由以實現位元打包和位元拆包。位元打包網路(例如,網路208)可以採用諸如邏輯閘和多工器(未圖示)之類的各種元件,其經由針對不同的資料寬度實行不同的網路配置來實現位元打包/拆包。因此,一些已知的位元打包網路可以構成覆蓋在共享實體連接或管道階段上的多個網路,以處理多個變化的資料位元寬。
根據一個態樣,位元位置210被配置為接收寫入到其中的記憶體位置、單元或儲存組212的位元,在此種情況下,經由位元打包網路208來接收位元。另外,位元位置210可以被配置用於位元讀取,或者將讀出的資料位元載入到位元位置202,此處網路208用於對打包在記憶體位置中的位元進行拆包。應當注意,在一個態樣中,當使用諸如記憶體210之類的記憶體實現位元位置210時,可以根據具有2N
字大小的典型記憶體構造來構造位置210,其中N可以等於3、4、5或6(其得到相應的8、16、32或64位元字大小)。
在其他態樣中,應當注意,系統200可以包括一或多個SIMD或向量處理通道。另外,儘管使用SIMD處理單元中的位元位置202的例子圖示系統200,但是其僅作為舉例,應當注意,本案揭露的方法和裝置並不限於與此種處理單元一起使用,本領域一般技藝人士將理解針對其他類型的計算單元和系統(例如,CPU、GPU、算數邏輯單位(ALU)的其他類型的佈置等等)的應用。此外,應當注意,系統200亦可以被實現為處理器到處理器資料路徑配置,其中位元位置單元210可以被實現成另一個處理資料路徑,例如另一個SIMD或處理器電路,而不是作為記憶體資料路徑的一部分。
如稍後將更詳細論述的,系統200可以包括資料位元旋轉器,其中位元旋轉亦與打包網路(例如,打包網路208)一起用於後續存取。經由示出旋轉器輸入位元位置的方塊214來示出該位元旋轉,其中在將位元傳輸到第二位元位置210之前,對由打包網路208打包的位元進行旋轉。類似地,對於拆包而言,在使用網路208對位元進行拆包以將位元從第二位置210傳輸到第一位置202的情況下,亦反向使用位元旋轉。經由示出旋轉器輸出位元位置的方塊216來示出該位元旋轉。
圖3和圖4圖示針對變化的資料位元寬,實現資料位元的打包和拆包的習知位元打包網路方案。具體而言,圖3和圖4中所示出的位元打包網路圖示具有寬度為1、2、3或4個位元元素的位元元素的4打包網路情況。應當注意,此種類型的打包網路構成了覆蓋在相同管道階段中的4個網路(例如,圖2中的208),其中該網路因此利用可配置的選擇器(例如,4位元寬的多工器)用於最小或最低有效位,以實行4種不同的網路。該等網路被配置用於處理所示出例子中的四種不同情況,但是根據未圖示的其他實施例,可以存在更多或更少的情況。所示的四種情況是4位元、3位元、2位元和1位元打包情況。
如圖3中可以觀察到的,在302處圖示4位元格式的情況,其中4位元的資料包含在複數個元件或暫存器(亦即,304a-304d)的每個元件或暫存器302中。每個相應暫存器的四個不同陰影中的每一個表示向量中的四個不同元素,其可以包括所示出例子中的四個元件304或暫存器304。打包網路(其可以與圖2中的網路208相關)被配置為將元件304中的位元0到3裡的每一個傳遞到相應的暫存器或儲存組306a-306d。在記憶體資料路徑的一個例子中,元件306可以包含在記憶體設備(例如,圖2中的記憶體設備210)中。在另一個例子中,元件306構成計算資料路徑中的暫存器,無論其是實際的還是虛擬的。
在3位元格式的另一種情況308中(其中每次計算產生3位元的位元寬),位元打包可以用於對位元進行打包,使得僅利用3個元件或暫存器將位元儲存在記憶體中或者用於在電腦資料路徑的後續部分中使用。在此種情況下,可以看出每個元件304皆包含3個位元0到2,並且在該情況下的位元打包網路是下文的配置:其中來自第一暫存器304d的3個位元由打包網路路由到儲存組、暫存器或元件306d中,將最低有效位或最低位元(位元0)路由到來自下一個暫存器304c的儲存組、暫存器或元件306d中的剩餘位元槽。隨後,將剩餘的位元1和2路由到儲存組、暫存器或元件304c,以此類推,如情況308中所示。可以觀察到,位元打包的最終結果是將第一暫存器304中的位元打包到記憶體資料路徑或計算資料路徑中的4個暫存器或儲存組306裡的3個(例如,306b、306c和306d)。
轉到圖4,在310處圖示2位元格式的另一種情況。在此種情況下,每次計算產生2位元的位元寬,位元打包網路對位元進行打包,使得僅利用2個元件或暫存器將位元儲存在記憶體中或者用於在電腦資料路徑的後續部分中使用。在該情況下,可以看出,每個元件304包含2位元0和1,在該情況下,位元打包網路是下文的配置:其中來自第一暫存器304d的2個位元由打包網路路由到儲存組、暫存器或元件306d,來自下一個暫存器304c的兩個位元被路由到儲存組、暫存器或元件306d中的剩餘兩個位元槽。將來自再下一個暫存器304b的位元0和1路由到儲存組、暫存器或元件306b,以此類推,如情況310中所示。如圖所示,位元打包的最終結果是將第一暫存器304中的位元打包到記憶體資料路徑或計算資料路徑中的4個暫存器或儲存組306裡的2個(例如,306c和306d)。
在圖4中所示出的另一種情況中,在312處圖示1位元格式。在該情況下,每次計算將產生1位元的位元寬,位元打包網路對位元進行打包,使得僅可以利用1個元件或暫存器將位元儲存在記憶體中或者用於在電腦資料路徑的後續部分中使用。在該情況下,可以看出每個元件304包含單個位元0,在該情況下,位元打包網路是下文的配置:其中來自每個暫存器304的1個位元由打包網路路由到單個儲存組、暫存器或元件306d。
應當注意的是,對於從記憶體到SIMD單元的拆包操作,例如,可以經由反轉圖3和4中所示的打包網路裡示出的路徑來實現鏡像網路。進一步注意,對於拆包網路,本領域一般技藝人士將理解,針對後續存取可能需要單獨的字旋轉網路(例如,交叉開關、omega或旋轉器網路)。與此相關,應當注意,旋轉功能用於打包和拆包模式二者,以便例如與記憶體的當前位址對準。特別地,應當注意,對於打包模式,在打包網路操作之後可以使用左旋轉,以便將打包的元素移動到由最小打包元素的位址所指定的正確記憶體偏移,舉例而言。相應地,對於給定該示例的拆包模式,在拆包網路操作之前將需要右旋轉,使得從最小元素記憶體偏移讀取的元素隨後適當地與拆包網路對準。在另外的態樣中,應當注意,鏡像拆包網路可以被實現為與打包網路分離的網路,或者替換地,打包和拆包網路可以用可動態配置的三態雙向網路實現,以便可在拆包或打包模式下操作。
如先前所提及的,圖3和圖4中所示出的4打包網路通常覆蓋在同一管道階段中。此種重疊導致N位元寬的多工器用於位置N-1、N-1位元寬的多工器用於位置N-2、以此類推,直到在打包側的位置0的單個線或寬度為止,以及在鏡像拆包側具有類似的載入,這會導致網路具有更高的成本、面積和功率、以及增加時延。在圖3和圖4的例子中,應當注意,此種覆蓋將導致多達4位元寬的多工器。
為了最佳化位元打包和拆包,圖5和圖6圖示具有單個、固定或統一網路結構以適應可變資料寬度的替代位元打包/拆包網路。作為實例,該網路結構可以用於1、2、3或4位元元素,並且其不需要在流水線上覆蓋的單獨的網路,從而加速存取、降低成本和面積,並且最佳化功耗。圖5和圖6中所示出的網路有效地將多個元件的位元一起進行混合和處理,以形成該等元件的相同位元位置的位元束,並且將該位元束以記憶體字大小或記憶體字大小的整數倍儲存在記憶體中。在一個態樣中,束大小是SIMD元件或SIMD通道的數量的倍數。此外,本文所揭示的信號打包/拆包網路可以在記憶體資料路徑以及計算資料路徑中實現。在一個態樣中,圖5和圖6的網路是圖2中所示出的網路208的實現的實例。
轉到圖5,在502處圖示用於4位元寬資料的位元打包網路以及其操作的第一實例。如圖所示,將來自每個暫存器或元件304的相同位元位置路由到暫存器或儲存組306。例如,將暫存器304d中的位置或位元槽320處的位元0路由到暫存器或儲存組306d中的位元槽322,將暫存器304c中的位置或位元槽324處的位元0路由到暫存器或儲存組306d中的位元槽326,對於暫存器或元件304a和304b中的位元0資料,以此類推。對相同位元位置的編組或拘束產生位元束328,其儲存在用於記憶體資料路徑的記憶體中,或者臨時地儲存(在電腦資料路徑的情況下)。如前述,對於打包網路,在將資料儲存在記憶體中之前,將執行旋轉,如由被打包的最小數量元素的位址的低位元所指定的,並且針對拆包網路進行反向旋轉。在一個態樣中,使用圖2中所示的旋轉器輸入位元位置214或旋轉器輸出位元位置216來實現打包和拆包模式的旋轉。
如在示例502中看到的,對所有位置實現針對位元束的路由。例如,將暫存器或元件304d中的位元槽或位置330處的位元1資料路由到暫存器或儲存組306c的第一位置332處。將暫存器304c中的位置或位元槽334中的位元1位置路由到暫存器306c中的位元槽或位置336,以此類推。亦可以根據暫存器304中的位置的相應陰影,以及在位元打包操作之後該位元資料在暫存器306中的其新位置,容易地看出提供的打包/拆包網路的路由。因此,在該例子中,產生對應於暫存器306a-306d的4位元束。
圖5亦圖示504處的3位元格式的例子。在該例子中,獲得的位元打包產生對應於暫存器或儲存組306b-306d的3位元束。類似地,圖6圖示另外兩個示例506和508,其分別圖示用於2位元格式和1位元格式的位元打包/拆包網路的操作,其中在2位元格式的情況下產生2位元束350、352,而在1位元格式的情況下產生1位元束354。
概括地說,圖5和6中所示出的位元打包和拆包網路可以提供在電腦系統中對各種位元寬的位元進行打包或拆包,而不需要在管道階段上覆蓋不同的網路配置,其可以應用於各種數量的位元的位元字或儲存字(而不僅僅是如圖所示的4或16位元)。此外,所示出的元件或暫存器之每一者位元位置可以是多於一位元的位元字。具體而言,應當注意,在一個態樣中,每個位置的細微性可以是一個位元或任何數量的位元,只要保持以下關係:元件寬度=位置槽的數量x每槽的位元,以便實現最大儲存效率。相應地,網路系統可以被配置為第一複數個暫存器(例如,304),每個暫存器在暫存器中具有預定數量的位元槽,其在預定數量的位元槽的相應位元槽中臨時地儲存或保持一或多個位元,其中該預定數量的位元對應於多個不同資料位元寬之一(例如,1、2、3位元格式等等)。隨後,該網路自身可以被配置為單個、統一或固定的位元打包網路,該位元打包網路被配置為將多個不同位元寬的資料位元從第一複數個暫存器打包到第二複數個暫存器或儲存組(例如,306),其中該網路被配置為經由以下方式,將儲存在第一複數個暫存器的相應暫存器中的相同位元槽位置裡的位元進行打包:將該等位元路由到第二複數個暫存器中的相同暫存器的位元槽中,以在第二複數個暫存器或儲存組中的相應一個裡形成位元束。
應當注意,圖5和6中所示出的打包/拆包網路可以被實現為用於實施計算電路(例如,SIMD單元和記憶體設備)的晶片或積體電路中的實體網路,但是該結構並不一定僅限於該等應用,其可以應用於具有適應可變資料位元寬的需求的各種計算電路。在一個態樣中,該單個、統一或固定位元打包網路包括在第一複數個暫存器中的位元槽和第二複數個暫存器中的位元槽之間的固定點對點連接。但是,在其他態樣中,可以設想的是,該網路(儘管性質上是單個或統一的)亦可以經由邏輯裝置或可程式化閘陣列來實現。
根據另外的態樣,對該打包/拆包網路進行配置,使得位元束中的位元數對應於記憶體設備的記憶體資料字大小或者其倍數。在另一個態樣中,其中從具有數個通道的SIMD單元接收第一複數個暫存器中的位元,每個位元束的大小是SIMD單元的通道數量的倍數。
在另外的態樣中,圖5和圖6中所示出的網路可用於拆包操作,其中經由固定位元打包網路的反向操作,將複數個第二暫存器中的位元束拆包到複數個第一暫存器。應當注意,例如,對於從記憶體到SIMD單元的拆包操作,可以經由反轉圖5和圖6中所示出的打包網路裡示出的網路路徑來實現鏡像網路。進一步應當注意,對於拆包網路,本領域一般技藝人士將理解,後續存取將需要單獨的字旋轉網路(例如,交叉開關、omega或旋轉器網路)。
這裡應當進一步注意,圖5和圖6的網路是如先前所描述的圖2中的網路208的實現。在一些態樣中,位元位置202和210亦可以由複數個暫存器實現,其中暫存器可以被實現為包含所有SIMD通道的一個暫存器,或者每個通道可以是一個暫存器。此外,源和槽類型亦可以是資料路徑中的暫存器或記憶體或管道階段。此外,可以對圖5和圖6的結構進行配置,使得最大元件尺寸等於最大元件數量。
圖7根據本案內容的態樣,圖示用於提供和操作包括單個位元打包網路的計算電路的方法700的流程圖。方法700包括:如方塊702中所示,將一或多個位元儲存在第一複數個位元位置中的至少一個(例如,202中的204)或者用於在複數個位元位置中進行儲存的構件裡,每個位元位置具有預定數量的位元槽(例如,206),其中該預定數量的位元元槽被配置為將該一或多個位元臨時地儲存在該預定數量的位元槽的相應位元槽中。位元的該預定數量可以對應於多個不同資料位元寬中的一個。
方法700亦包括:對位元進行打包,將打包的位元儲存或發送到第二複數個位元位置(例如,210中的212),其中該打包操作利用固定位元打包網路,該固定位元打包網路被配置為將多個不同位元寬的資料位元從第一複數個位元位置打包到第二複數個位元位置,其中該網路被配置為將儲存在第一複數個位元位置的相應暫存器中的位元槽位置裡的位元打包或發送到第二複數個位元位置中的相同位元位置的位元槽中,以在第二複數個位元位置的相應位元位置中形成位元束(例如,328),如方塊704中所示。應當注意,可以使用圖5和圖6中所示出的以及先前描述的位元打包/拆包網路或系統來實現方法700。
在其他態樣中,方法700可以包括:將位元束儲存在記憶體設備中,其中位元束中的位元的數量對應於記憶體設備的記憶體資料字大小。在其他態樣中,固定位元打包網路包括第一複數個位元位置中的位元槽和第二複數個位元位置中的位元槽之間的固定點對點連接。另外,固定位元打包網路可以被實現為計算資料路徑網路或記憶體資料路徑的一部分。
根據方法700的另外態樣,可以從具有數個通道的SIMD單元接收第一複數個位元位置中的位元,或者可以在該SIMD單元中產生第一複數個位元位置中的位元。每個位元束的大小可以是SIMD單元的通道數的倍數。在另一個態樣中,方法700亦可操作用於執行拆包操作,其中經由固定位元打包網路的反向操作,將複數個第二位元位置中的位元束拆包到複數個第一位元位置。
圖8圖示採用可以根據本文所揭示的某些態樣進行調整的處理電路的裝置的例子。在一些例子中,裝置800可以執行本文所揭示的一或多個功能。根據本案內容的各個態樣,可以使用處理電路802,來實現如本文所揭示的要素或者要素的任何部分或者要素的任意組合。處理電路802可以包括經由硬體和軟體模組的某種組合進行控制的一或多個處理器804。處理器804的例子係包括微處理器、微控制器、數位訊號處理器(DSP)、SoC、ASIC、現場可程式化閘陣列(FPGA)、可程式化邏輯裝置(PLD)、狀態機、序列器、閘控邏輯、分離硬體電路、SIMD、ALU和被配置為執行或協調貫穿本案內容描述的各種功能的其他適當硬體。該一或多個處理器804可以包括用於執行特定功能的專用處理器,其可以由軟體模組816中的一個進行配置、擴增或者控制。可以經由在初始化期間載入的軟體模組816的組合來配置該一或多個處理器804,並經由在操作期間載入或卸載一或多個軟體模組816來進一步配置。
在所示出的例子中,處理電路802可以使用匯流排架構來實現,其中該匯流排架構大體用匯流排810來表示。根據處理電路802的具體應用和整體設計約束,匯流排810可以包括任意數量的相互連接匯流排和橋接。具體而言,在一個例子中,匯流排810可以被配置為包括圖4和圖5的打包網路。匯流排810將包括一或多個處理器804和儲存設備806的各種電路連結在一起,例如利用中間的打包/拆包網路實現針對另一個處理資料路徑的處理資料路徑,或者利用中間的打包/拆包網路實現針對記憶體設備的處理資料路徑。
儲存設備806可以包括記憶體設備和大容量儲存設備,並且本文可以稱之為電腦可讀取媒體及/或處理器可讀取媒體。此外,匯流排810亦可以連結諸如時序源、計時器、周邊設備、電壓調節器和功率管理電路之類的各種其他電路。匯流排介面808可以提供匯流排810和一或多個線路介面/收發機812之間的介面。可以針對處理電路所支援的每一種網路互連技術,提供一個收發機812。在一些情況中,多個網路互連技術可以共享在收發機812中發現的電路或處理模組中的一些或全部。每一個收發機812提供用於經由傳輸媒體,與各種其他裝置進行通訊的構件。在一個例子中,收發機812可以用於將裝置800耦合到多線匯流排。在另一個例子中,收發機812可以用於將裝置800連接到無線網路。根據該裝置800的性質,亦可以提供使用者介面818(例如,鍵盤、顯示器、揚聲器、麥克風、操縱桿),並且使用者介面818可以直接地或者經由匯流排介面808來通訊地耦合到匯流排810。
處理器804可以負責管理匯流排810和通用處理,其可以包括執行電腦可讀取媒體(其可以包括儲存設備806)中儲存的軟體。在該方面,包括處理器804的處理電路802可以用於實現本文所揭示的方法、功能和技術中的任何一種。儲存設備806可以用於儲存當處理器804執行軟體時所操作的資料,以及該軟體可以被配置為實現本文所揭示的方法中的任何一種。
處理電路802中的一或多個處理器804可以執行軟體。軟體應當被廣泛地解釋為意味著指令、指令集、代碼、程式碼片段、程式碼、程式、副程式、軟體模組、應用、軟體應用、套裝軟體、例行程式、子例行程式、物件、可執行檔、執行的執行緒、程序、函數、演算法等等,無論其被稱為軟體、韌體、仲介軟體、微代碼、硬體描述語言還是其他術語。軟體可以以電腦可讀形式常駐在儲存設備806中或者常駐在外部電腦可讀取媒體中。外部電腦可讀取媒體及/或儲存設備806可以包括非臨時性電腦可讀取媒體。舉例而言,非臨時性電腦可讀取媒體包括磁記憶裝置(例如,硬碟、軟碟、磁帶)、光碟(例如,壓縮光碟(CD)或數位多功能光碟(DVD))、智慧卡、快閃記憶體裝置(例如,「快閃記憶體驅動器」、卡、棒或鍵式磁碟)、RAM、ROM、可程式化唯讀記憶體(PROM)、可抹除PROM(EPROM)(其包括EEPROM)、暫存器、可移除磁碟以及用於儲存能夠由電腦進行存取和讀取的軟體及/或指令的任何其他適當媒體。舉例而言,電腦可讀取媒體及/或儲存設備806亦可以包括載波波形、傳輸線、以及用於傳輸能夠由電腦進行存取和讀取的軟體及/或指令的任何其他適當媒體。電腦可讀取媒體及/或儲存設備806可以常駐在處理電路802中、常駐在處理器804中、常駐在處理電路802之外,或者分佈在包括處理電路802的多個實體之中。電腦可讀取媒體、記憶體及/或儲存設備806可以用電腦程式產品來體現。舉例而言,電腦程式產品可以包括具有封裝材料的電腦可讀取媒體。本領域一般技藝人士應當認識到,如何根據特定的應用和對整個系統所施加的整體設計約束,來最佳地實現貫穿本案內容所提供的描述的功能。
儲存設備806可以維持利用可載入程式碼片段、模組、應用、程式等等來維持及/或組織的軟體,本文將其稱為軟體模組816。軟體模組816中的每一個可以包括指令和資料,其中當該等指令和資料被安裝或載入在處理電路802上並由一或多個處理器804執行時,貢獻了用於控制一或多個處理器804的操作的執行時圖像814。當某些指令被執行時,可以使得處理電路802根據本文所描述的某些方法、演算法和程序來執行功能。
軟體模組816中的一些可以在處理電路802的初始化期間進行載入,並且該等軟體模組816可以配置處理電路802來實現本文所揭示的各種功能的執行。例如,一些軟體模組816可以配置內部設備及/或處理器804的邏輯電路822,以及可以管理對於諸如收發機812、匯流排介面808、使用者介面818、計時器、數學輔助處理器等等之類的外部設備的存取。軟體模組816可以包括用於與中斷處理常式和設備驅動程式進行互動,並控制對於處理電路802所提供的各種資源的存取的控制程式及/或作業系統。該等資源可以包括記憶體、處理時間、針對收發機812的存取、使用者介面818等等。
處理電路802的一或多個處理器804可以是多功能的,據此對軟體模組816中的一些進行載入和配置以執行不同的功能或者同一功能的不同實例。另外,一或多個處理器804可以適於管理例如回應於來自使用者介面818、收發機812和設備驅動程式的輸入而發起的幕後工作。為了支援多個功能的執行,一或多個處理器804可以被配置為提供多工環境,據此,根據需要或者期望,將複數個功能中的每一個功能實現成經由一或多個處理器804來服務的任務集。在一個例子中,可以使用用於在不同的任務之間傳遞處理器804的控制的時間共享程式820,來實現該多工環境,據此,在完成任何未完成的操作時及/或回應於諸如中斷之類的輸入,每一個任務將對一或多個處理器804的控制權返回給該時間共享程式820。當任務具有對一或多個處理器804的控制權時,處理電路有效地專用於與該控制任務相關聯的功能所解決的目的。時間共享程式820可以包括作業系統、在循環的基礎上傳遞控制的主循環、根據功能的優先順序來分配對一或多個處理器804的控制權的功能,及/或經由將對一或多個處理器804的控制權提供給處理函數來回應外部事件的中斷驅動的主循環。
在另外的態樣中,處理器804可以採用SIMD單元或者其均等物。處理器804可以被配置為根據圖5和6中揭露的網路或者圖7的方法,來實現位元打包和拆包。另外,處理器804可以被配置為包括在其中的處理或計算電路與諸如RAM記憶體之類的記憶體設備(未圖示)(在一個例子中,其包含在處理器804內)之間的實體點對點網路或連接。另外,在一種實現中,記憶體806可以包括電腦可讀取媒體,其包含用於在處理器804中配置打包/拆包網路的代碼、模組(例如,816)或者指令,例如在打包/拆包網路可配置有邏輯電路或FPGA的情況下,舉例而言。
應當理解的是,本案所揭露程序中的步驟的特定順序或層次只是示例性方法的一個例子。應當理解的是,根據設計偏好,可以重新排列該等程序中的步驟的特定順序或層次,同時仍然落入本案內容的保護範圍內。所附的方法請求項以示例順序提供了各種步驟的要素,但並不意味著其必須受到提供的特定順序或層次的限制(若可以更改順序或層次的話)。
本領域一般技藝人士應當理解,可以使用多種不同的技術和方法中的任何一種,來表示資訊和信號。例如,可以由電壓、電流、電磁波、磁場或粒子、光場或粒子或者其任意組合,來表示在貫穿上面的描述中提及的資料、指令、命令、資訊、信號、位元、符號和碼片。
本領域一般技藝人士亦應當明白,結合本文所揭露實施例描述的各種示例性邏輯區塊、模組、電路和演算法步驟可以實現成電子硬體、電腦軟體或二者的組合。為了清楚地闡釋硬體和軟體的此種可交換性,上面對各種示例性元件、方塊、模組、電路和步驟均圍繞其功能進行了整體描述。至於此種功能是實現成硬體還是實現成軟體,取決於特定的應用和對整個系統所施加的設計約束。本領域一般技藝人士可以針對每個特定應用,以變通的方式實現所描述的功能,但是,此種實現決策不應被解釋為使得背離本發明的保護範圍。
可以經由被設計為執行本文所述功能的通用處理器、數位訊號處理器(DSP)、特殊應用積體電路(ASIC)、現場可程式化閘陣列(FPGA)或其他可程式化邏輯裝置、個別閘門或者電晶體邏輯裝置、個別硬體元件或者其任意組合,來實現或執行結合本文所揭露實施例描述的各種示例性邏輯區塊、模組和電路。通用處理器可以是微處理器,或者,該處理器亦可以是任何一般的處理器、控制器、微控制器或者狀態機。處理器亦可以被實現為計算裝置的組合,例如,DSP和微處理器的組合、複數個微處理器、一或多個微處理器與DSP核心的結合,或者任何其他此種結構。
結合本文所揭露實施例描述的方法或者演算法的步驟可直接以硬體、由處理器執行的軟體模組或二者的組合的方式來體現。軟體模組可以常駐在RAM記憶體、快閃記憶體、ROM記憶體、EPROM記憶體、EEPROM記憶體、暫存器、硬碟、可移除磁碟、CD-ROM或者本領域已知的任何其他形式的儲存媒體中。可以將示例性儲存媒體耦合至處理器,從而使該處理器能夠從該儲存媒體讀取資訊,並可向該儲存媒體寫入資訊。或者,儲存媒體亦可以是處理器的組成部分。處理器和儲存媒體可以常駐在ASIC中。該ASIC可以常駐在使用者終端中。替代地,處理器和儲存媒體可以作為個別元件常駐在使用者終端中。
為使本領域任何一般技藝人士能夠實現本文描述的各個態樣,提供了以上描述。對於本領域一般技藝人士來說,對該等態樣的各種修改皆將是顯而易見的,並且本文定義的整體原理可以適用於其他態樣。因此,申請專利範圍並不限於本文示出的態樣,而是符合與申請專利範圍的語言相一致的全部範圍,其中除非特別說明,否則用單數形式修飾要素並不意味著「一個和僅僅一個」,而是「一或多個」。除非另外特別說明,否則術語「一些」代表一或多個。代表項目列表「中的至少一個」的短語是指該等項目的任意組合,其包括單個成員。舉例而言,「a、b或c中的至少一個」意欲覆蓋:a;b;c;a和b;a和c;b和c;及a、b和c。將貫穿本案內容描述的各個態樣的要素的所有結構和功能均等物以引用方式明確地併入本文中,並且意欲由申請專利範圍所涵蓋,該等結構和功能均等物對於本領域一般技藝人士來說是公知的或將要是公知的。此外,本文中沒有任何揭露內容是想要奉獻給公眾的,不管此種揭露內容是否明確記載在申請專利範圍中。此外,不應依據專利法施行細則第18條第8項的規定來解釋任何請求項的要素,除非該要素明確採用了「用於…的構件」的措辭進行記載,或者在方法請求項的情況下,該要素是用「用於…的步驟」的措辭來記載的。
100:裝置
102:處理電路
104:電路
106:周邊設備
108:收發機
110:DSP/數據機
112:處理器
114:板載記憶體
116:匯流排介面電路
118a:匯流排
118b:匯流排
120:匯流排
122:其他處理器可讀儲存設備122
126:顯示器
128:開關或按鈕
130:開關或按鈕
132:鍵盤
200:處理系統
202:第一位元位置
204:暫存器
206:位元槽
208:位元打包/拆包網路
210:第二位元位置
212:記憶體位置、單元或儲存組
214:方塊
216:方塊
302:暫存器
304a:暫存器或元件
304b:暫存器或元件
304c:暫存器
304d:暫存器
306a:暫存器或儲存組
306b:暫存器或儲存組
306c:暫存器或儲存組
306d:暫存器或儲存組
308:另一種情況
310:情況
320:位置或位元槽
322:位元槽
324:位置或位元槽
326:位元槽
328:位元束
330:位元槽或位置
332:第一位置
334:位置或位元槽
336:位置或位元槽
350:位元束
352:位元束
354:位元束
502:示例
506:示例
508:示例
700:方法
702:方塊
704:方塊
800:裝置
802:處理電路
804:處理器
806:儲存設備
808:匯流排介面
810:匯流排
812:收發機
814:執行時圖像
816:軟體模組
818:使用者介面
820:時間共享程式
822:邏輯電路
圖1圖示一種示例性計算系統,其由可以在其中採用本發明方法和裝置的裝置組成。
圖2圖示可以在其中實現當前揭露的位元打包/拆包網路的示例性處理系統。
圖3和圖4圖示針對不同的資料位元寬,實現資料位元的打包和拆包的位元打包網路方案。
圖5和圖6圖示根據本發明的概念的位元打包網路方案,該方案使用單個或統一打包網路,針對變化的資料位元寬來實現資料位元的打包和拆包。
圖7根據本案內容的態樣,圖示用於提供和操作包括單個位元打包網路的計算電路的方法的流程圖。
圖8圖示採用可以根據本文所揭示的某些態樣進行調整的處理電路的裝置的例子。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記)
無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記)
無
304a:暫存器或元件
304b:暫存器或元件
304c:暫存器
304d:暫存器
306a:暫存器或儲存組
306b:暫存器或儲存組
306c:暫存器或儲存組
306d:暫存器或儲存組
308:另一種情況
320:位置或位元槽
322:位元槽
324:位置或位元槽
326:位元槽
328:位元束
330:位元槽或位置
332:第一位置
334:位置或位元槽
336:位置或位元槽
502:示例
504:示例
Claims (31)
- 一種被配置用於在一電腦系統中對具有各種位元寬的資料進行位元打包的裝置,該裝置包括:在該電腦系統中的一第一複數個位元位置,該第一複數個位元位置中的每一位元位置包含:一預定數量的位元槽,且該預定數量的位元槽中的每個位元槽經配置以臨時儲存該資料的一預定數量的位元的一相應的位元,位元的該預定數量對應於多個不同資料位元寬之一;及一固定位元打包網路,其被配置為在該電腦系統中將該預定數量的位元從該第一複數個位元位置打包到一第二複數個位元位置,其中該固定位元打包網路被配置為經由以下方式,將該預定數量的位元進行打包:將儲存在該第一複數個位元位置的每個相應位元位置中的該預定數量的位元槽中的一相同特定位元槽位置裡的該預定數量的位元的所有位元路由到該第二複數個位元位置中的一特定位元位置的位元槽中,以在該第二複數個位元位置的相應位元位置中形成位元束,其中該固定位元打包網路包含:在該第一複數個位元位置中的位元槽和該第二複數個位元位置中的位元槽之間的固定點對點連接,且經配置以適應輸入至該第一複數個位元位置的該多個不同資料位元寬中的每 一者,及將資料從該第一複數個位元位置打包到該第二複數個位元位置,其中相較於該第一複數個位元位置,較少的位元位置可被使用於該第二複數個位元位置。
- 根據請求項1之裝置,亦包括:被包含在一記憶體設備內的該第二複數個位元位置,其中該記憶體設備亦被配置為儲存該等位元束。
- 根據請求項2之裝置,其中該第二複數個位元位置包括該記憶體設備中的複數個記憶體單元。
- 根據請求項3之裝置,其中一位元束中的位元的數量對應於該記憶體設備的一記憶體資料字大小。
- 根據請求項1之裝置,其中該固定位元打包網路包括一計算資料路徑網路或一記憶體資料路徑之一的一部分。
- 根據請求項1之裝置,其中該第一複數個位元位置中的該資料的該預定數量的位元由具有多個通道的一單指令多資料(SIMD)單元產生。
- 根據請求項6之裝置,其中每個位元束的大小是該SIMD單元的通道數量的一倍數。
- 根據請求項1之裝置,其中該裝置亦可操作用於一拆包操作,其中經由該固定位元打包網路的反向操作將該複數個第二位元位置中的位元束拆包到該複數個 第一位元位置。
- 一種操作一計算電路的方法,包括:在一第一複數個位元位置中的至少一個裡儲存一或多個位元,該第一複數個位元位置中的每一位元位置包含:一預定數量的位元槽,並且該預定數量的位元槽中的每個位元槽經配置以臨時儲存該資料的一預定數量的位元的一相應的位元,位元的該預定數量對應於多個不同資料位元寬之一;及將位元打包到一第二複數個位元位置,該打包利用一固定位元打包網路,該固定位元打包網路被配置為將該預定數量的位元從該第一複數個位元位置打包到該第二複數個位元位置,其中該固定位元打包網路被配置為經由以下方式,將該預定數量的位元進行打包:將儲存在該第一複數個位元位置的每個相應位元位置中的該預定數量的位元槽中的一相同特定位元槽位置裡的該預定數量的位元的所有位元路由到該第二複數個位元位置中的一特定位元位置的位元槽中,以在該第二複數個位元位置的相應位元位置中形成位元束,其中該固定位元打包網路包括在該第一複數個位元位置中的位元槽和該第二複數個位元位置中的位元槽之間的固定點對點連接,且經配置以適應輸入至該第一複數個位元位置的該多個不同資料位元寬中的每一 者,及將資料從該第一複數個位元位置打包到該第二複數個位元位置,其中相較於該第一複數個位元位置,較少的位元位置可被使用於該第二複數個位元位置。
- 根據請求項9之方法,亦包括:將該等位元束儲存在一記憶體設備中,其中該第二複數個位元位置被包含在一記憶體設備內,以及其中該記憶體設備亦被配置為儲存該等位元束。
- 根據請求項10之方法,其中一位元束中的位元的數量對應於該記憶體設備的一記憶體資料字大小。
- 根據請求項9之方法,其中該固定位元打包網路包括一計算資料路徑網路或一記憶體資料路徑之一的一部分。
- 根據請求項9之方法,其中該第一複數個位元位置中的該資料的該預定數量的位元是從具有多個通道的一SIMD單元接收的。
- 根據請求項13之方法,其中每個位元束的大小是該SIMD單元的通道數量的一倍數。
- 根據請求項9之方法,亦包括:執行一拆包操作,其中經由該固定位元打包網路的反向操作將該複數個第二位元位置中的位元束拆包到該複數個第一位元位置。
- 一種被配置用於在一電腦系統中對具有各種位元寬的資料進行位元打包的裝置,該裝置包括:用於在一第一複數個位元位置中的至少一個裡儲存一或多個位元的構件,該第一複數個位元位置中的每一位元位置包含:一預定數量的位元槽,並且該預定數量的位元槽中的每個位元槽被配置以臨時儲存該資料的一預定數量的位元的一相應的位元,位元的該預定數量對應於多個不同資料位元寬之一;及用於將位元打包到一第二複數個位元位置的構件,該構件用以利用一固定位元打包網路來進行打包,該固定位元打包網路被配置為將該預定數量的位元從該第一複數個位元位置打包到該第二複數個位元位置,其中該固定位元打包網路被配置為經由以下方式,將該預定數量的位元進行打包:將儲存在該第一複數個位元位置的每個相應位元位置中的該預定數量的位元槽中的一相同特定位元槽位置裡的該預定數量的位元的所有位元路由到該第二複數個位元位置中的一特定位元位置的位元槽中,以在該第二複數個位元位置的相應位元位置中形成位元束,其中該固定位元打包網路包括在該第一複數個位元位置中的位元槽和該第二複數個位元位置中的位元槽之間的固定點對點連接,且經配置以適應輸入至該第 一複數個位元位置的該多個不同資料位元寬中的每一者,及將資料從該第一複數個位元位置打包到該第二複數個位元位置,其中相較於該第一複數個位元位置,較少的位元位置可被使用於該第二複數個位元位置。
- 根據請求項16之裝置,亦包括:一記憶體設備,其中該裝置亦被配置為將該等位元束儲存在該記憶體設備中,該記憶體設備包括保持一位元束的該第二複數個位元位置。
- 根據請求項17之裝置,其中該第二複數個位元位置包括該記憶體設備中的複數個記憶體單元。
- 根據請求項18之裝置,其中一位元束中的位元的數量對應於該記憶體設備的一記憶體資料字大小。
- 根據請求項16之裝置,其中該固定位元打包網路包括一計算資料路徑網路或一記憶體資料路徑之一的一部分。
- 根據請求項16之裝置,其中該第一複數個位元位置中的該資料的該預定數量的位元是從具有多個通道的一SIMD單元接收的。
- 根據請求項21之裝置,其中每個位元束的大小是該SIMD單元的通道數量的一倍數。
- 根據請求項16之裝置,其中該裝置亦可操 作用於一拆包操作,其中經由該固定位元打包網路的反向操作將該複數個第二位元位置中的位元束拆包到該複數個第一位元位置。
- 一種用於在一電腦系統中進行位元打包的裝置,該裝置包括:處理電路,其被配置用於:在一第一複數個位元位置中的至少一個裡儲存一或多個位元,該第一複數個位元位置中的每個位元位置包含:一預定數量的位元槽,並且該預定數量的位元槽中的每個位元槽經配置以臨時儲存該資料的一預定數量的位元的一相應的位元,位元的該預定數量對應於多個不同資料位元寬之一;及將位元打包到一第二複數個位元位置,該打包利用一固定位元打包網路,該固定位元打包網路被配置為將該預定數量的位元從該第一複數個位元位置打包到該第二複數個位元位置,其中該固定位元打包網路被配置為經由以下方式,將該預定數量的位元進行打包:將儲存在該第一複數個位元位置的每個相應位元位置中的該預定數量的位元槽中的一相同特定位元槽位置裡的該預定數量的位元的所有位元路由到該第二複數個位元位置中的一特定位元位置的位元槽中,以在該第二複數個位元位置的相應 位元位置中形成位元束,其中該固定位元打包網路包括在該第一複數個位元位置中的位元槽和該第二複數個位元位置中的位元槽之間的固定點對點連接,且經配置以適應輸入至該第一複數個位元位置的該多個不同資料位元寬中的每一者,及將資料從該第一複數個位元位置打包到該第二複數個位元位置,其中相較於該第一複數個位元位置,較少的位元位置可被使用於該第二複數個位元位置。
- 根據請求項24之裝置,亦包括:一記憶體設備,其中該裝置亦被配置為將該等位元束儲存在記憶體設備中,該記憶體設備包括保持一位元束的該第二複數個位元位置。
- 根據請求項25之裝置,其中該第二複數個位元位置包括該記憶體設備中的複數個記憶體單元。
- 根據請求項26之裝置,其中一位元束中的位元的數量對應於該記憶體設備的一記憶體資料字大小。
- 根據請求項24之裝置,其中該固定位元打包網路包括一計算資料路徑網路或一記憶體資料路徑之一的一部分。
- 根據請求項24之裝置,其中該第一複數個 位元位置中的該資料的該預定數量的位元是從具有多個通道的一SIMD單元接收的。
- 根據請求項29之裝置,其中每個位元束的大小是該SIMD單元的通道數量的一倍數。
- 根據請求項24之裝置,其中該裝置亦可操作用於一拆包操作,其中經由該固定位元打包網路的反向操作將該複數個第二位元位置中的位元束拆包到該複數個第一位元位置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW108109989A TWI810262B (zh) | 2019-03-22 | 2019-03-22 | 用於計算機器的可變位元寬資料格式的單打包和拆包網路及方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW108109989A TWI810262B (zh) | 2019-03-22 | 2019-03-22 | 用於計算機器的可變位元寬資料格式的單打包和拆包網路及方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW202036308A TW202036308A (zh) | 2020-10-01 |
| TWI810262B true TWI810262B (zh) | 2023-08-01 |
Family
ID=74091127
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW108109989A TWI810262B (zh) | 2019-03-22 | 2019-03-22 | 用於計算機器的可變位元寬資料格式的單打包和拆包網路及方法 |
Country Status (1)
| Country | Link |
|---|---|
| TW (1) | TWI810262B (zh) |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20070226469A1 (en) * | 2006-03-06 | 2007-09-27 | James Wilson | Permutable address processor and method |
| TW201415222A (zh) * | 2009-07-16 | 2014-04-16 | Netlist Inc | 記憶體模組以及其操作方法 |
| TW201610688A (zh) * | 2014-06-02 | 2016-03-16 | 美光科技公司 | 用於在可擴充記憶體系統協定中包裝資料之系統及方法 |
| US20170177359A1 (en) * | 2015-12-21 | 2017-06-22 | Intel Corporation | Instructions and Logic for Lane-Based Strided Scatter Operations |
| TW201741871A (zh) * | 2016-04-02 | 2017-12-01 | 英特爾股份有限公司 | 原子式儲存至寬於原生支援資料寬度之記憶體資料的處理器、方法、系統與指令 |
-
2019
- 2019-03-22 TW TW108109989A patent/TWI810262B/zh active
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20070226469A1 (en) * | 2006-03-06 | 2007-09-27 | James Wilson | Permutable address processor and method |
| TW201415222A (zh) * | 2009-07-16 | 2014-04-16 | Netlist Inc | 記憶體模組以及其操作方法 |
| TW201610688A (zh) * | 2014-06-02 | 2016-03-16 | 美光科技公司 | 用於在可擴充記憶體系統協定中包裝資料之系統及方法 |
| US20170177359A1 (en) * | 2015-12-21 | 2017-06-22 | Intel Corporation | Instructions and Logic for Lane-Based Strided Scatter Operations |
| TW201741871A (zh) * | 2016-04-02 | 2017-12-01 | 英特爾股份有限公司 | 原子式儲存至寬於原生支援資料寬度之記憶體資料的處理器、方法、系統與指令 |
Also Published As
| Publication number | Publication date |
|---|---|
| TW202036308A (zh) | 2020-10-01 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US20190317770A1 (en) | Systems and methods for stream-dataflow acceleration | |
| US7606943B2 (en) | Adaptable datapath for a digital processing system | |
| US7487302B2 (en) | Service layer architecture for memory access system and method | |
| US9632777B2 (en) | Gather/scatter of multiple data elements with packed loading/storing into/from a register file entry | |
| US20030028750A1 (en) | Method and system for digital signal processing in an adaptive computing engine | |
| JP2022535713A (ja) | ヘテロジニアス処理システムのためのデータフローグラフプログラミング環境 | |
| US8949576B2 (en) | Arithmetic node including general digital signal processing functions for an adaptive computing machine | |
| TWI784845B (zh) | 對可重配置處理器之資料流功能卸載 | |
| CN114691354A (zh) | 动态分解及线程分配 | |
| US11443014B1 (en) | Sparse matrix multiplier in hardware and a reconfigurable data processor including same | |
| EP4155960A1 (en) | Three-dimensional stacked programmable logic fabric and processor design architecture | |
| US7383419B2 (en) | Address generation unit for a processor | |
| CN118043796A (zh) | 存储器计算系统中的基于片块的结果缓冲 | |
| CN115686638B (zh) | 用于藉由无返回指示阻止包括无阻挡外部装置调用的线程完成的系统和设备 | |
| JP2023533795A (ja) | レジスタデータの消去 | |
| CN108304344B (zh) | 计算单元及其运行方法 | |
| TWI810262B (zh) | 用於計算機器的可變位元寬資料格式的單打包和拆包網路及方法 | |
| CN117795496A (zh) | 可重新配置计算组构中的并行矩阵运算 | |
| WO2014202825A1 (en) | Microprocessor apparatus | |
| CN111788553B (zh) | 用于针对可变位宽度数据格式的打包和解包网络以及方法 | |
| JP7250953B2 (ja) | データ処理装置、及び人工知能チップ | |
| US20110208951A1 (en) | Instruction processor and method therefor | |
| JP2015106325A (ja) | ベクトルレジスタリネーミング制御方式、ベクトルプロセッサ、及びベクトルレジスタリネーミング制御方法 | |
| Zhang et al. | Design of coarse-grained dynamically reconfigurable architecture for DSP applications | |
| CN104011674B (zh) | 数字信号处理器 |