新四季網

用於採取VLIW處理器中的相同執行數據包中的常數擴展槽指定或擴展常數位數的方法與流程

2023-07-22 07:50:56 2


本申請是2014年7月9日提交的標題為「用於擴展嵌入指令集中的常數位數量的方法(METHOD TO EXTEND THE NUMBER OF CONSTANT BITS EMBEDDED IN AN INSTRUCTION SET)」的美國專利申請號14/326,969的改進,該美國專利申請要求2013年7月9日提交的美國臨時申請號61/844,099在美國專利法第35章119(e)(1)款下的優先權。

技術領域

本發明的技術領域是數字數據處理,並且更具體為提供具有擴展常數的指令。



背景技術:

本申請是2014年7月9日提交的標題為「用於擴展嵌入指令集中的常數位數的方法(METHOD TO EXTEND THE NUMBER OF CONSTANT BITS EMBEDDED IN AN INSTRUCTION SET)」的美國專利申請號14/326,969的改進。

計算中經常使用常數。這種常數必須由程序提供給進行計算的指令。能夠通過以下方式提供這種常數:將其存儲在存儲器中,將其加載至中央處理單元寄存器集中的一個寄存器中以及使用寄存器存儲常數結合寄存器存儲變量執行所需的計算。

作為用於很少使用的常數的一種替代方案,能夠將其嵌入指令中。指定這種常數的典型方式是用常數位替代輸入操作數欄位。這種輸入操作數欄位一般包括存儲對應的輸入操作數的若干寄存器。直接指令將這個輸入操作數欄位視為常數。這個欄位被稱為直接欄位。由於有限數量的位可用,這嚴格地限制這種常數的大小。典型的中央處理單元將具有16或32個通用寄存器。這將通過直接欄位能夠指定的常數限制為4或5位。

在現有技術中用於指定常數使用的技術採用可變長度指令字。使用可變長度指令字,能夠擴展指令的長度以提供用於指定常數所需數量的位。這是亞最優的,因為固定字長指令集結構需要較少的硬體資源解碼。

2014年7月9日提交的標題為「用於擴展嵌入指令集中的常數位數的方法(METHOD TO EXTEND THE NUMBER OF CONSTANT BITS EMBEDDED IN AN INSTRUCTION SET)的美國專利申請號14/326,969保持固定長度指令集。這個專利提供了用於常數擴展位的專用指令。該指令包括預定的位位置中的常數擴展位。如果指令包括常數擴展的指示,則解碼器採取位於相鄰指令中的預定位位置處的位以擴展直接欄位的常數。該專利申請教導了串接來自這兩個源的位以產生更長的常數。



技術實現要素:

本發明是對要求常數擴展槽與需要常數擴展的指令相鄰的替代方案。在超長指令字(VLIW)中央處理單元中,多條指令被分組成並行執行的執行數據包。在本發明中,常數擴展指令不需要在相鄰的指令槽中。該常數擴展指令僅需要是在與需要常數擴展的指令相同的執行數據包中。與2014年7月9日提交的標題「用於擴展嵌入指令集中的常數位數的方法(METHOD TO EXTEND THE NUMBER OF CONSTANT BITS EMBEDDED IN AN INSTRUCTION SET)」的美國專利申請號14/326,969相比,這允許在布置指令方面的較大的靈活性。

在本發明中,通過在與所述指令相同的執行數據包內的一個或更多個常數擴展指令內的常數擴展位來指定或擴展常數的位。

在一個實施例中,針對限定的功能單元集中的一個僅單個指令能夠常數擴展。在VLIW中央處理器中,每個功能單元在每個執行數據包僅能夠執行一條指令。從而,無論在執行數據包中的相對位置,解碼器都能夠明白地確定哪條指令使用這些擴展位。

在一個替代性實施例中,在每個執行數據包中允許兩個或更多個常數擴展槽。每個這種常數擴展槽僅能夠針對來自不相交的功能單元指令子集的不同指令擴展常數。由於每個執行數據包中指向具體功能單元僅能夠存在一條指令,並且這些子集是不相交的,因此解碼器能夠確定哪條指令對應於每個這種常數擴展槽。因此,執行數據包內的兩條或更多條指令能夠採取來自不同常數擴展指令的擴展常數。

在一個進一步替代性實施例中,不只一個功能單元可以具有從相同常數擴展指令擴展的常數。在這種情況下,在每個這種功能單元的指令執行中採取相同的擴展位。

附圖說明

附圖中例示了本發明的這些和其它方面,其中:

圖1例示了根據本發明的一個實施例的雙標量/矢量數據路徑處理器;

圖2例示了圖1中所例示的雙標量/矢量數據路徑處理器中的寄存器和功能單元;

圖3例示了全局標量寄存器文件;

圖4例示了算術功能單元共享的局部標量寄存器文件;

圖5例示了乘法功能單元共享的局部標量寄存器文件;

圖6例示了加載/存儲單元共享的局部標量寄存器文件;

圖7例示了全局矢量寄存器文件;

圖8例示了判定寄存器(predicate register)文件;

圖9例示了算術功能單元共享的局部矢量寄存器文件;

圖10例示了乘法和相關功能單元共享的局部矢量寄存器文件;

圖11例示了根據本發明的一個優選實施例的中央處理單元的流水線(pipeline)階段;

圖12例示了單個取回數據包的十六條指令;

圖13例示了本發明使用的指令的指令編碼的一個示例;

圖14例示了條件代碼擴展槽0的位編碼;

圖15例示了條件代碼擴展槽1的位編碼;

圖16例示了常數擴展槽0的位編碼;

圖17是例示根據本發明的常數位的規範(specification)或擴展的部分框圖;

圖18是例示形成一個擴展的常數的常數擴展的第一實施例的部分框圖;以及

圖19是例示形成一個較大的擴展的常數的常數擴展的第二實施例的部分框圖;以及

圖20是例示具有指定一個常數的常數擴展槽的常數擴展的第三實施例的部分框圖;

圖21例示了採用兩個常數擴展槽形成兩個擴展常數;

圖22例示了形成來自單個常數擴展指令的常數擴展位的兩個常數;以及

圖23例示了根據本發明的用於SIMD操作的進位控制。

具體實施方式

圖1例示了根據本發明的一個優選實施例的雙標量/矢量數據路徑處理器。處理器100包括單獨的一級指令緩存(L1I)121和一級數據緩存(L1D)123。處理器100包括保存指令和數據兩者的二級組合指令/數據緩存(L2)130。圖1例示了一級指令緩存121與二級組合指令/數據緩存130之間的連接(總線142)。圖1例示了一級數據緩存123與二級組合指令/數據緩存130之間的連接(總線145)。在處理器100的優選實施例中,二級組合指令/數據緩存130將指令存儲至備份一級指令緩存121並且還將數據存儲至備份一級數據緩存123。在優選實施例中,將二級組合指令/數據緩存130以圖1中未例示的方式進一步連接至較高級別的緩存和/或主存儲器。在優選實施例中,中央處理單元內核110、一級指令緩存121、一級數據緩存123和二級組合指令/數據緩存130被形成在單個集成電路上。這個單個集成電路可選地包括其它電路。

中央處理單元內核110受指令取回單元111控制從一級指令緩存121取回指令。指令取回單元111確定將要被執行的接下來的指令,並且召回這些指令的取回數據包大小的集合。下面進一步詳述取回數據包的特性和大小。如本領域中已知的,在緩存命中時(如果這些指令被存儲在一級指令緩存121中),從一級指令緩存121直接取回指令。在緩存未命中時(指定的指令取回數據包未存儲在一級指令緩存121中),在二級組合緩存130中尋找這些指令。在優選實施例中,一級指令緩存121中的緩存線的大小等於取回數據包的大小。這些指令的存儲器位置在二級組合緩存130中或者命中或者未命中。提供二級組合緩存130的命中。提供較高級的緩存(未例示)或主存儲器(未例示)的未命中。如本領域中已知的,所請求的指令可以被同時地提供給一級指令緩存121和中央處理單元內核110兩者以加速使用。

在本發明的優選實施例中,中央處理單元內核110包括多個功能單元以執行指令的指定數據處理任務。指令分派單元112確定每條取回的指令的目標功能單元。在優選實施例中,中央處理單元110作為超長指令字(VLIW)處理器運行,該超長指令字處理器能夠同時運行於對應功能單元中的多條指令上。優選地,編譯器將指令組織在被一起執行的執行數據包中。指令分派單元112使每條指令指向其的目標功能單元。分配給指令的功能單元完全由編譯器所產生的指令來指定。中央處理單元內核110的硬體未參與該功能單元分配。在優選實施例中,指令分派單元112可以並行運行於多條指令。這種並行指令的數量由執行數據包的大小來設定。下面將進一步對此進行詳述。

指令分派單元112的分派任務的一部分是確定該指令是否將在標量數據路徑側A 115或矢量數據路徑側B 116的功能單元上執行。每條指令內的稱為s位的指令位確定該指令控制哪條數據路徑。下面將進一步對此進行詳述。

指令解碼單元113對當前執行數據包內的每條指令進行解碼。解碼包括標識執行該指令的功能單元,標識用於從可能的寄存器文件當中針對對應數據處理操作供應數據的寄存器,以及標識對應的數據處理操作的結果的寄存器目標地。如下面進一步解釋的,指令可以包括代替一個寄存器號操作數欄位的常數欄位。這個解碼的結果是用於控制目標功能單元以執行通過對應指令指定的對於指定數據的數據處理操作的信號。

中央處理單元內核110包括控制寄存器114。控制寄存器114以與本發明不相關的方式存儲用於控制在標量數據路徑側A 115和矢量數據路徑側B 116中的這些控制單元的信息。這條信息能夠是模式信息等。

來自指令解碼113的經解碼指令和存儲在控制寄存器114中的信息被供應給標量數據路徑側A 115和矢量數據路徑側B 116。結果是,標量數據路徑側A 115和矢量數據路徑側B 116內的功能單元對指令指定的數據執行指令指定的數據處理操作,並且將結果存儲在指令指定的一個或更多個數據寄存器中。標量數據路徑側A 115和矢量數據路徑側B 116中的每個包括多個功能單元,所述多個功能單元優選地並行運行。下面將結合圖2對這些進行進一步詳述。在標量數據路徑側A 115與矢量數據路徑側B 116之間存在允許數據交換的數據路徑117。

中央處理單元內核110進一步包括非基於指令的模塊。仿真單元118允許響應於指令確定中央處理單元內核110的機器狀態。一般將採取這種能力進行算法改進。中斷/異常單元119使中央處理單元內核110能夠響應於外部、異步事件(中斷)並且能夠對企圖執行非正常操作(異常)進行響應。

中央處理單元內核110包括流引擎125。流引擎125向矢量數據路徑B的寄存器文件提供一般緩存在二級組合緩存130中的預定地址的兩個數據流。這樣提供從存儲器(當在二級組合緩存130中緩存時)直接至寄存器文件的受控制的數據移動。下面對此進行進一步詳述。

圖1例示了總線的不同部分之間的示例性數據寬度。一級指令緩存121經由總線141向指令取回單元111提供指令。總線141優選地是512位的總線。總線141是單向的,從一級指令緩存121到中央處理單元110。二級組合緩存130經由總線142向一級指令緩存121提供指令。總線142優選地是512位的總線。總線142是單向的,從二級組合緩存130到一級指令緩存121。

一級數據緩存123經由總線143與標量數據路徑側A 115中的寄存器文件交換數據。總線143優選地是64位的總線。一級數據緩存123經由總線144與矢量數據路徑側B 116中的寄存器文件交換數據。總線144優選地是512位的總線。總線143和144被例示為雙向的,其支持中央處理單元110數據讀取和數據寫入兩者。一級數據緩存123經由總線145與二級組合緩存130交換數據。總線145優選地是512位的總線。總線145被例示為雙向的,支持對中央處理單元110數據讀取和數據寫入兩者的緩存服務。

二級組合緩存130經由總線146將第一數據流的數據提供給流引擎125。總線146優選地是512位的總線。流引擎125將這個第一數據流的數據經由總線147提供給矢量數據路徑側B 116的寄存器文件。總線147優選地是512位的總線。二級組合緩存130經由總線148將第二數據流的數據提供給流引擎125。總線148優選地是512位的總線。流引擎125將這個第二數據流的數據經由總線149提供給矢量數據路徑側B 116的寄存器文件。總線149優選地是512位的總線。根據本發明的優選實施例,總線146、147、148和149被例示為單向的,從二級組合緩存130到流引擎125以及到矢量數據路徑側B 116。

在本發明的優選實施例中,根據標題為「包括緩存和直接可尋址靜態隨機存取存儲器的統一存儲器系統架構(UNIFIED MEMORY SYSTEM ARCHITECTURE INCLUDING CACHE AND DIRECTLY ADDRESSABLE STATIC RANDOM ACCESS MEMORY)」的美國專利號6,606,686,一級數據緩存123和二級組合緩存130都可以被配置成選定量的緩存或直接可尋址存儲器。

圖2進一步例示了標量數據路徑側A 115和矢量數據路徑側B 116內的功能單元和寄存器文件的細節。標量數據路徑側A 115包括全局標量寄存器文件211、L1/S1局部寄存器文件212、M1/N1局部寄存器文件213和D1/D2局部寄存器文件214。標量數據路徑側A 115包括L1單元221、S1單元222、M1單元223、N1單元224、D1單元225和D2單元226。矢量數據路徑側B 116包括全局標量寄存器文件231、L2/S2局部寄存器文件232、M2/N2/C局部寄存器文件233和判定寄存器文件234。矢量數據路徑側B 116包括L2單元241、S2單元242、M2單元243、N2單元244、C單元245和P單元246。對哪些功能單元可以從哪些寄存器文件讀取或向哪些寄存器文件寫入存在限制。下面將對其進行詳述

標量數據路徑側A 115包括L1單元221。L1單元221一般接受兩個64位的操作數並且產生一個64位的結果。這兩個操作數各自從全局標量寄存器文件211中或者L1/S1局部寄存器文件212中的指令指定寄存器召回。L1單元221優選地執行以下指令選定操作:64位加/減操作;32位最小/最大操作;如絕對值之和、最小值和最大值確定的8位單指令多數據(SIMD)指令;循環最小/最大操作;以及寄存器文件之間的各種移動操作。結果可以被寫入全局標量寄存器文件211、L1/S1局部寄存器文件212、M1/N1局部寄存器文件213或D1/D2局部寄存器文件214中的指令指定寄存器。

標量數據路徑側A 115包括S1單元222。S1單元222一般接受兩個64位的操作數並且產生一個64位的結果。這兩個操作數各自從全局標量寄存器文件211中或者L1/S1局部寄存器文件212中的指令指定寄存器召回。S1單元222優選地執行與L1單元221相同類型的操作。通過L1單元221與S1單元222所支持的數據處理操作之間可選地可以存在輕微變化。結果可以被寫入全局標量寄存器文件211、L1/S1局部寄存器文件212、M1/N1局部寄存器文件213或D1/D2局部寄存器文件214中的指令指定寄存器。

標量數據路徑側A 115包括M1單元223。M1單元223一般接受兩個64位的操作數並且產生一個64位的結果。這兩個操作數各自從全局標量寄存器文件211中或者M1/N1局部寄存器文件213中的指令指定寄存器召回。M1單元223優選地執行以下指令選定運算:8位乘法運算;複數點積運算;32位計數運算;複數共軛相乘運算;以及按位邏輯運算、移動、加和減。結果可以被寫入全局標量寄存器文件211、L1/S1局部寄存器文件212、M1/N1局部寄存器文件213或D1/D2局部寄存器文件214中的指令指定寄存器。

標量數據路徑側A 115包括N1單元224。N1單元224一般接受兩個64位的操作數並且產生一個64位的結果。這兩個操作數各自從全局標量寄存器文件211中或者M1/N1局部寄存器文件213中的指令指定寄存器召回。N1單元224優選地執行與M1單元223相同類型的操作。可以存在某些同時採取M1單元223和N1單元224兩者的雙重操作(稱為雙發布(dual issued)指令)。結果可以被寫入全局標量寄存器文件211、L1/S1局部寄存器文件212、M1/N1局部寄存器文件213或D1/D2局部寄存器文件214中的指令指定寄存器。

標量數據路徑側A 115包括D1單元225和D2單元226。D1單元225和D2單元226一般各自接受兩個64位的操作數並且各自產生一個64位的結果。D1單元225和D2單元226一般執行地址計算以及對應的加載和存儲操作。D1單元225用於64位的標量加載和存儲。D2單元226用於512位的矢量加載和存儲。D1單元225和D2單元226優選地還執行:對加載和存儲數據的調換、封包和解包;64位的SIMD算術運算;以及64位逐位邏輯運算。D1/D2邏輯寄存器文件214將一般存儲針對對應的加載和存儲的地址計算中所使用的基礎地址和偏移地址。這兩個操作數各自從全局標量寄存器文件211中或者D1/D2局部寄存器文件214中的指令指定寄存器召回。計算結果能夠被寫入全局標量寄存器文件211、L1/S1局部寄存器文件212、M1/N1局部寄存器文件213或D1/D2局部寄存器文件214中的指令指定寄存器。

矢量數據路徑側B 116包括L2單元241。L2單元221一般接受兩個512位的操作數並且產生一個512位的結果。這兩個操作數各自從全局矢量寄存器文件231中、或者L2/S2局部寄存器文件232中或者判定寄存器文件234中的指令指定寄存器召回。除了關於較寬的512位數據,L2單元241優選地執行與L1單元221相似的指令。結果可以被寫入全局矢量寄存器文件231、L2/S2局部寄存器文件222、M2/N2/C局部寄存器文件233或判定寄存器文件234的指令指定寄存器。

矢量數據路徑側B 116包括S2單元242。S2單元242一般接受兩個512位的操作數並且產生一個512位的結果。這兩個操作數各自從全局矢量寄存器文件231中、或者L2/S2局部寄存器文件232中或者判定寄存器文件234中的指令指定寄存器召回。除了關於較寬泛的512位數據,S2單元242優選地執行與S1單元222相似的指令。結果可以被寫入全局矢量寄存器文件231、L2/S2局部寄存器文件222、M2/N2/C局部寄存器文件233或判定寄存器文件234中的指令指定寄存器。

矢量數據路徑側B 116包括M2單元243。M2單元243一般接受兩個512位的操作數並且產生一個512位的結果。這兩個操作數各自從全局矢量寄存器文件231中或者M2/N2/C局部寄存器文件233中的指令指定寄存器召回。除了關於較寬的512位數據,M2單元243優選地執行與M1單元222相似的指令。結果可以被寫入全局矢量寄存器文件231、L2/S2局部寄存器文件232、或M2/N2/C局部寄存器文件233中的指令指定寄存器。

矢量數據路徑側B 116包括N2單元244。N2單元244一般接受兩個512位的操作數並且產生一個512位的結果。這兩個操作數各自從全局矢量寄存器文件231中或者M2/N2/C局部寄存器文件233中的指令指定寄存器召回。N2單元244優選地執行與M2單元243相同類型的操作。可以存在某些同時採取M2單元243和N2單元244兩者的雙重操作(稱為雙發布指令)。結果可以被寫入全局矢量寄存器文件231、L2/S2局部寄存器文件232、或M2/N2/C局部寄存器文件233中的指令指定寄存器。

矢量數據路徑側B 116包括C單元245。C單元245一般接受兩個512位的操作數並且產生一個512位的結果。這兩個操作數各自從全局矢量寄存器文件231中或者M2/N2/C局部寄存器文件233中的指令指定寄存器召回。C單元245優選地執行「搜索(Rake)」和「搜尋(Search)」指令;高達512個2位的PN*8位乘以I/Q複數乘以每時鐘周期;8位與16位的絕對誤差和(SAD)計算,高達512個SAD每時鐘周期;水平加和水平取最小值/最大值指令;以及矢量置換指令。C單元245還包含用於控制C單元245指令的某些操作的4個矢量控制寄存器(CUCR0至CUCR3)。控制寄存器CUCR0至CUCR3被用作某些C單元245操作中的操作數。控制寄存器CUCR0至CUCR3優選地用於:控制廣義置換指令(VPERM);以及作為用於SIMD多點積運算(DOTPM)以及SIMD多絕對誤差和(SAD)運算的掩碼。控制寄存器CUCR0優選地用於存儲伽羅華域乘法運算(GFMPY)的多項式。控制寄存器CUCR1優選地用於存儲伽羅華域多項式生成器函數。

矢量數據路徑側B 116包括P單元246。P單元246對局部判定寄存器文件234的寄存器執行基礎邏輯運算。P單元246具有直接訪問以從判定寄存器文件234讀取和向判定寄存器文件234寫入。這些運算包括AND、ANDN、OR、XOR、NOR、BITR、NEG、SET、BITCNT、RMBD、位抽取和擴展。P單元246的通常預期的使用包括:操縱SIMD矢量比較結果以用於控制進一步的SIMD矢量運算。

圖3例示了全局標量寄存器文件211。存在指定為A0至A15的16個獨立的64位寬標量寄存器。全局標量寄存器文件211的每個寄存器能夠作為64位的標量數據被讀取或寫入。所有的標量數據路徑側A 115功能單元(L1單元221、S1單元222、M1單元223、N1單元224、D1單元225和D2單元226)能夠從全局標量寄存器文件211讀取或向全局標量寄存器文件211寫入。全局標量寄存器文件211可以被讀取為32位或被讀取為64位,並且僅可以作為64位被寫入。指令執行確定讀取的數據大小。在下面將詳述的限制下,矢量數據路徑側B 116功能單元(L2單元241、S2單元242、M2單元243、N2單元244、C單元245和P單元246)能夠經由交叉路徑117從全局標量寄存器文件211讀取。

圖4例示了D1/D2局部寄存器文件214。存在指定為D0至D16的16個獨立的64位寬標量寄存器。D1/D2局部標量寄存器文件214的每個寄存器能夠被作為64位的標量數據被讀取或寫入。所有的標量數據路徑側A 115功能單元(L1單元221、S1單元222、M1單元223、N1單元224、D1單元225和D2單元226)能夠向全局標量寄存器文件211寫入。只有D1單元225和D2單元226能夠從D1/D1局部標量寄存器文件214讀取。期望的是,存儲在D1/D2局部標量寄存器文件214中的數據將包括使用在地址計算中的基礎地址和偏移地址。

圖5例示了L1/S1局部寄存器文件212。圖5中所例示的實施例具有指定為AL0至AL7的8個獨立的64位寬標量寄存器。優選的指令編碼(見圖13)允許L1/S1局部寄存器文件212包括高達16個寄存器。圖5的實施例僅實施8個寄存器,以減小電路大小和複雜度。L1/S1局部標量寄存器文件212的每個寄存器能夠被作為64位的標量數據被讀取或寫入。所有的標量數據路徑側A 115功能單元(L1單元221、S1單元222、M1單元223、N1單元224、D1單元225和D2單元226)能夠向L1/S1局部標量寄存器文件212寫入。只有L1單元221和S1單元222能夠從L1/S1局部標量寄存器文件212讀取。

圖6例示了M1/N1局部寄存器文件213。圖6中所例示的實施例具有指定為AM0至AM7的8個獨立的64位寬標量寄存器。優選的指令編碼(見圖13)允許M1/N1局部寄存器文件213包括高達16個寄存器。圖6的實施例僅實施8個寄存器,以減小電路大小和複雜度。M1/N1局部標量寄存器文件213的每個寄存器能夠被作為64位的標量數據被讀取或寫入。所有的標量數據路徑側A 115功能單元(L1單元221、S1單元222、M1單元223、N1單元224、D1單元225和D2單元226)能夠向M1/N1局部標量寄存器文件213寫入。只有M1單元223和N1單元224能夠從M1/N1局部標量寄存器文件213讀取。

圖7例示了全局矢量寄存器文件231。存在16個獨立的512位寬標量寄存器。全局矢量寄存器文件231的每個寄存器能夠被作為指定為B0至B15的64位的標量數據被讀取或寫入。全局矢量寄存器文件231的每個寄存器能夠被作為指定為VB0至VB15的512位的矢量數據被讀取或寫入。指令類型確定數據大小。所有的矢量數據路徑側B 116功能單元(L2單元241、S2單元242、M3單元243、N2單元244、C單元245和P單元246)能夠從全局標量寄存器文件231讀取或向全局標量寄存器文件231寫入。在下面將詳述的限制下,標量數據路徑側A 115功能單元(L1單元221、S1單元222、M1單元223、N1單元224、D1單元225和D2單元226)能夠經由交叉路徑117從全局矢量寄存器文件231讀取。

圖8例示了P局部寄存器文件234。存在指定為P0至P15的8個獨立的64位寬寄存器。P局部寄存器文件234的每個寄存器能夠被作為64位的標量數據被讀取或寫入。矢量數據路徑側B 116功能單元(L2單元241、S2單元242、C單元244和P單元246)能夠向P局部寄存器文件234寫入。只有L2單元241、S2單元242和P單元246能夠從P局部標量寄存器文件234讀取。P局部寄存器文件234的通常預期的使用包括:從L2單元241、S2單元242或C單元244寫入一位SIMD矢量比較結果;由P單元246操縱SIMD矢量比較結果;以及在控制進一步的SIMD矢量運算中使用操作結果。

圖9例示了L2/S2局部寄存器文件232。圖9中所例示的實施例具有8個獨立的512位寬標量寄存器。優選的指令編碼(見圖13)允許L2/S2局部寄存器文件232包括高達16個寄存器。圖9的實施例僅實施8個寄存器,以減小電路大小和複雜度。L2/S2局部矢量寄存器文件232的每個寄存器能夠被作為指定為BL0至BL7的64位的標量數據被讀取或寫入。L2/S2局部矢量寄存器文件232的每個寄存器能夠被作為指定為VBL0至VBL7的512位的矢量數據被讀取或寫入。指令類型確定數據大小。所有的矢量數據路徑側B 116功能單元(L2單元241、S2單元242、M2單元233、N2單元24、C單元245和P單元246)能夠向L2/S2局部矢量寄存器文件232寫入。只有L2單元241和S2單元242能夠從L2/S2局部矢量寄存器文件232讀取。

圖10例示了M2/N2/C局部寄存器文件233。圖10中所例示的實施例具有8個獨立的512位寬標量寄存器。優選的指令編碼(見圖13)允許L1/S1局部寄存器文件212包括高達16個寄存器。圖10的實施例僅實施8個寄存器,以減小電路大小和複雜度。M2/N2/C局部矢量寄存器文件233的每個寄存器能夠被作為指定為BM0至BM7的64位的標量數據讀取或寫入。M2/N2/C局部矢量寄存器文件233的每個寄存器能夠被作為指定為VBM0至VBM7的512位的矢量數據被讀取或寫入。所有的矢量數據路徑側B 116功能單元(L2單元241、S2單元242、M2單元243、N2單元244、C單元245和P單元246)能夠向M2/N2/C局部矢量寄存器文件233寫入。只有M2單元233、N2單元244和C單元245能夠從M2/N2/C局部矢量寄存器文件233讀取。

交叉路徑117允許標量數據路徑側A 115與矢量數據路徑側B 116之間的受限的數據交換。在每個運算周期,能夠從全局標量寄存器文件A 211召回一個64位的數據字,以用作矢量數據路徑側B 116的一個或更多個功能單元的操作數,並且能夠從全局矢量寄存器文件231召回一個64位的數據字,以用作標量數據路徑側A 115的一個或更多個功能單元的操作數。任何標量數據路徑側A 115功能單元(L1單元221、S1單元222、M1單元223、N1單元224、D1單元225和D2單元226)可以從全局矢量寄存器文件231讀取64位的操作數。這個64位的操作數是全局矢量寄存器文件232的所訪問的寄存器內的512位數據的最低有效位。多個標量數據路徑側A 115功能單元可以在相同運算周期內採用作為操作數的相同的64位交叉路徑數據。然而,在任何單個運算周期中,將只有一個64位的操作數從矢量數據路徑側B 116傳遞至標量數據路徑側A 115。任何矢量數據路徑側B 116功能單元(L2單元241、S2單元242、M2單元243、N2單元244、C單元245和P單元246)可以從全局標量寄存器文件211讀取64位的操作數。如果對應指令是標量指令,則交叉路徑操作數數據被作為任何其它64操作數處理。如果對應指令是矢量指令,則操作數的高的448位填充零。多個矢量數據路徑側B 116功能單元可以在相同運算周期內採用作為操作數的相同的64位交叉路徑數據。在任何單個運算周期中,將只有一個64位的操作數從標量數據路徑側A 115傳遞至矢量數據路徑側B 116。

流引擎125在某些受限環境下傳遞數據。流引擎125控制兩個數據流。一個流由具體類型的元素的序列組成。對流進行運算的程序順序地讀取數據,按次序對每個元素進行運算。每個流具有以下基本特性。這時,流數據具有在時間上良好限定的開始和結束。流數據貫穿該流具有固定的元素大小和類型。流數據具有元素的固定序列。從而,程序不能夠在流內隨機地搜尋。流數據在活動時是只讀的。程序不能向流寫入而同時從流中讀取。一旦流被打開,流引擎125就:計算地址;從二級統一緩存取回限定的數據類型(這可以需要來自較高級的存儲器的緩存服務);執行數據類型操縱,如零擴展、符號擴展、如矩陣轉置的數據元素排序/調換;以及將數據直接遞送至CPU 110內的所編程的數據寄存器文件。因此,流引擎125對表現良好的數據的實時數字過濾操作是有用的。流引擎125從對應的CPU釋放這些存儲器取回任務,流引擎125啟動其它處理功能。

流引擎125提供以下益處。流引擎125允許多維存儲器訪問。流引擎125增加了對功能單元的可用帶寬。由於流緩存器繞開一級數據緩存123,所以流引擎125使緩存未命中停止的數量最小化。流引擎125減少了維持環路所需的標量運算的數量。流引擎125管理地址指針。流引擎125處理地址生成,針對其它計算自動地空出地址生成指令槽與D1單元224和D2單元226。

CPU 110在指令流水線上運行。在下面進一步詳述的固定長度的指令數據包中取回指令。所有的指令需要相同數量的流水線階段用於取回和解碼,但是需要不同數量的執行階段。

圖11例示了以下流水線階段:程序取回階段1110、分派和解碼階段1110和執行階段1130。程序取回階段1110針對所有的指令包括三個階段。分派和解碼階段針對所有指令包括三個階段。執行階段1130根據指令包括一個至四個階段。

取回階段1110包括程序地址生成階段1111(PG)、程序訪問階段1112(PA)和程序接收階段1113(PR)。在程序地址生成階段1111(PG)期間,在CPU中產生程序地址,並且將讀取請求發送至針對一級指令緩存L1I的存儲器控制器。在程序訪問階段1112(PA)期間,一級指令緩存L1I處理請求,訪問其存儲器中的數據並且將取回數據包發送至CPU界限(boundary)。在程序接收器件1113(PR)期間,CPU登記取回數據包。

指令總是一次取回十六個32位寬的槽,組成取回數據包。圖12例示了單個取回數據包的16條指令1201至1216。取回數據包在512位(16個字)界限上對齊。優選的實施例採取固定的32位指令長度。固定長度指令出於若干原因是有益的。固定長度指令使能夠容易進行解碼器對齊。正確對齊的指令取回能夠將多條指令加載至並行的指令解碼器中。當存儲在與固定指令數據包取回耦合的存儲器(取回數據包在512位界限上對齊)中時,這種正確對齊的指令取回能夠通過預定指令對齊來實現。對齊的指令取回允許對指令大小的取回位進行並行的解碼器運算。可變長度指令在它們能夠被解碼之前需要定位每個指令界限的初始步驟。固定長度指令集一般允許指令欄位的更常規的布局。這簡化了每個解碼器的構造,這對於廣泛發行VLIW中央處理器來說是優勢。

通過每條指令中的p位部分地控制執行各指令。這個p位優選地是32位寬槽的0位。p位確定一條指令是否與下一指令並行執行。從低到高地址掃描指令。如果指令的p位是1,則接下來的後一指令(較高的存儲器地址)與這條指令(在相同周期內)並行執行。如果指令的p位是0,則接下來的後一指令在該指令之後的周期中執行。

CPU 110和一級指令緩存L1I 121流水線彼此解耦合。根據如在一級指令緩存121是否存在命中或在二級組合緩存130中是否存在命中的外部環境,取回數據包從一級指令緩存L1I返回能夠採取不同數量的時鐘周期。因此,程序訪問階段1112(PA)能夠採取若干時鐘周期,而不是如在其它階段中的1個時鐘周期。

這些並行執行的指令組成執行數據包。在優選實施例中,執行數據包能夠包含高達十六條指令。執行數據包中沒有兩條指令可以使用相同的功能單元。槽是五種類型之一:1)在CPU 110的功能單元(L1單元221、S1單元222、M1單元223、N1單元224、D1單元225、D2單元226、L2單元241、S2單元242、M2單元243、N2單元244、C單元245和P單元246)中的一個上執行的獨立指令;2)無單位指令,如一個NOP(無運行)指令或多個NOP指令;3)分支指令;4)常數欄位擴展;和5)條件代碼擴展。下面將對這些槽類型中的一些加以解釋。

分派和解碼階段1110包括指令分派至合適的執行單元階段1121(DS)、指令預解碼階段1122(D1);以及指令解碼、操作數讀取階段1222(D2)。在指令分派至合適的執行單元階段1121(DS)期間,取回數據包被拆分成執行數據包並且分配給合適的功能單元。在指令預解碼階段1122(D1)期間,解碼源寄存器、目標寄存器和相關聯的路徑,以在功能單元中執行這些指令。在指令解碼、操作碼讀取階段1222(D2)期間,完成更詳細的單元解碼,以及從寄存器文件讀取操作數。

執行階段1130包括執行階段1131至1135(E1至E5)。不同類型的指令需要不同數量的這些階段完成其執行。流水線的這些階段在理解CPU周期界限處的設備狀態中扮演重要角色。

在執行1階段1131(E1)期間,針對指令的條件進行評估,並且對操作數進行運算。如圖11中所例示的,執行1階段1131可以從流緩存器1141以及示意性地示出為1142的寄存器文件的一個接收操作數。針對加載和存儲指令,執行地址生成,並且將地址修改寫入至寄存器文件。針對分支指令,PG階段中的分支取回數據包受影響。如圖11中所例示的,加載和存儲指令訪問在此示意性示出為存儲器1151的存儲器。針對單循環指令,將結果寫入至目標寄存器文件。這假設針對這些指令的任何條件都被評估為真。如果條件被評估為假,則在執行1階段1131之後,該指令不寫入任何結果或具有任何流水線操作。

在執行2階段1132(E2)期間,加載指令將地址發送至存儲器。存儲指令將地址和數據發送至存儲器。如果發生飽和,則使結果飽和的單循環指令設定狀態寄存器中的SAT位。針對2循環指令,將結果寫入至目標寄存器文件。

在執行3階段1133(E3)期間,執行數據存儲器訪問。如果發生飽和,則使結果飽和的任何乘法指令設定狀態寄存器中的SAT位。針對3循環指令,將結果寫至入至目標寄存器文件。

在執行4階段1134(E4)期間,加載指令將數據帶到CPU界限。針對4循環指令,將結果寫至目標寄存器文件。

在執行5階段1135(E5)期間,加載指令將數據寫入至寄存器。在圖11中對此進行了示意性例示,其中,來自存儲器1151的輸入至執行5階段1135。

圖13例示了本發明所使用的功能單元指令的指令編碼1300的一個示例。本領域技術人員將理解如何應用本發明的教導至替換指令編碼。每條指令由32位組成並且控制運行單獨可控制的功能單元(L1單元221、S1單元222、M1單元223、N1單元224、D1單元225、D2單元226、L2單元241、S2單元242、M2單元243、N2單元244、C單元245和P單元246)中的一個。如下限定位欄位。

creg欄位1301(位29至31)和z位1302(位28)是條件指令中所使用的可選欄位。這些位被用於條件指令以標識判定寄存器和條件。z位1302(位28)指示判定是否是基於判定寄存器中的零或非零。如果z=1,則測試是針對等於零。如果z=0,則測試是針對非零。creg=0且z=0的情況被作為總是真以允許無條件的指令執行處理。在指令中編碼creg欄位1301和z欄位1302,如表1中所示。

表1

執行條件指令取決於指定的數據寄存器中存儲的值。對於所有功能單元,這個數據寄存器是在全局標量寄存器文件211中。注意,z位欄中的「z」指上文所述的零/非零比較選擇,並且「x」是無關狀態。這個編碼能夠僅將16個全局寄存器的子集指定為判定寄存器。進行這個選擇以預留指令編碼中的位。注意,無條件的指令不具有這些可選位。對於無條件指令,欄位1301和1302(28至31)中的這些位優選地被用作為附加操作碼位。進一步注意,針對條件指令的creg欄位(欄位1301)和z欄位(欄位1302)可以位於其它位置,如操作碼位2至12。

dst欄位1303(欄位23至27)將對應寄存器文件中的寄存器指定為指令結果的目的地。

src2/cst欄位1304(位18至22)根據指令操作碼欄位(針對所有指令的位4到12,以及針對無條件指令的附加位28至31)具有若干種意義。第一種意義將對應寄存器文件的寄存器指定為第二操作數。第二種意義是直接常數。根據指令類型,這被作為擴展至指定的數據長度的無符號的整數和零處理,或者被當做擴展至指定的數據長度的有符號的整數和符號。

src1欄位1305(欄位13至17)將對應寄存器文件中的寄存器指定為第一源操作數。

針對所有指令的操作碼欄位1306(位4至12)(以及針對無條件指令的附加位28至31)指定指令的類型並且指定合適的指令選項。這包括對所使用的功能單元和執行的操作的清楚指定。除了下面詳述的指令選項之外,對操作碼的詳細解釋超出了本發明的範圍。

e位1307(位2)僅被用於其中常數可以被擴展的直接常數指令。如果e=1,則然後以下面詳述的方式擴展該直接常數。如果e=0,則不擴展該直接常數。在這種情況下,由src2/cst欄位1304(位18至22)指定直接常數。注意,這個e位1307僅被用於某些指令。因此,在具有正確編碼的情況下,可以從不需要它並且這個位被用作為附加操作碼位的指令省略這個e位1307。

s位1307(位1)指定標量數據路徑側A 115或矢量數據路徑側B 116。如果s=0,則選擇標量數據路徑側A 115。這將功能單元限制至L1單元221、S1單元222、M1單元223、N1單元224、D1單元225和D2單元226以及圖2中所例示的對應寄存器文件。類似地,s=1選擇矢量數據路徑側B 116,將功能單元限制至L2單元241、S2單元242、M2單元243、N2單元244、P單元246和圖2中所例示的對應寄存器文件。

p位1308(位0)標記執行數據包。p位確定指令是否與接下來的指令並行執行。從較低到較高地址掃描p位。如果針對當前指令p=1,則下一指令與當前指令並行執行。如果針對當前指令p=0,則下一指令在當前指令之後的周期內執行。所有並行執行指令組成執行數據包。執行數據包能夠包含高達十二條指令。執行數據包中的每條指令必須使用不同的功能單元。

存在兩個不同的條件代碼擴展槽。每個執行數據包能夠包含這些唯一的32位條件代碼擴展槽中的各一個,其包含針對相同執行數據包中的指令的4位creg/z欄位。圖14例示了用於條件代碼擴展槽0的編碼,並且圖15例示了條件代碼擴展槽1的編碼。

圖14例示了針對具有32位的擴展槽0的編碼。欄位1401(位28至31)指定了分配給相同執行數據包中的L1單元221指令的4個creg/z位。欄位1402(位27至24)指定了分配給相同執行數據包中的L2單元241指令的4個creg/z位。欄位1403(位19至23)指定了分配給相同執行數據包中的S1單元222指令的4個creg/z位。欄位1404(位16至19)指定了分配給相同執行數據包中的S2單元242指令的4個creg/z位。欄位1405(位12至15)指定了分配給相同執行數據包中的D1單元225指令的4個creg/z位。欄位1406(位8至11)指定了分配給相同執行數據包中的D2單元245指令的4個creg/z位。欄位1407(位6和7)是未使用/保留的。欄位1408(位0至5)是被編碼的一組唯一位(CCEX0)用於標識條件代碼擴展槽0。一旦檢測到條件代碼擴展槽0的這個唯一ID,就採用對應的creg/z位來控制相同執行數據包中的任何L1單元221、L2單元241、S1單元222、S2單元242、D1單元224和D2單元225指令的條件執行。如表1中所示解釋這些creg/z位。如果對應指令是有條件的(包括creg/z位),則條件代碼擴展槽0中的對應位覆寫指令中的條件代碼位。注意,沒有執行數據包能夠具有指向具體執行單元的一個以上指令。沒有指令的執行數據包能夠包含一個以上條件代碼擴展槽0。因此,creg/z位到功能單元指令的映射是清楚的。將creg/z位設置為等於「0000」使該指令是無條件的。因此,正確編碼的條件代碼擴展槽0能夠使一些對應指令是有條件的並且一些是無條件的。

圖15例示了針對具有32位的條件編碼擴展槽1的編碼。欄位1501(位28至31)指定了分配給相同執行數據包中的M1單元223指令的4個creg/z位。欄位1502(位27至24)指定了分配給相同執行數據包中的M2單元243指令的4個creg/z位。欄位1503(位19至23)指定了分配給相同執行數據包中的C單元245指令的4個creg/z位。欄位1504(位16至19)指定了分配給相同執行數據包中的N1單元224指令的4個creg/z位。欄位1505(位12至15)指定了分配給相同執行數據包中的N2單元244指令的4個creg/z位。欄位1506(位5至11)是未使用/保留的。欄位1507(位0至5)是被編碼的一組唯一位(CCEX1)以標識條件代碼擴展槽1。一旦檢測到條件代碼擴展槽1的這個唯一ID,就採用對應的creg/z位來控制相同執行數據包中的任何M1單元223、M2單元243、C單元245、N1單元224和N2單元244指令的條件執行。如表1中所示解釋這些creg/z位。如果對應指令是有條件的(包括creg/z位),則條件代碼擴展槽1中的對應位覆寫指令中的條件代碼位。注意,沒有執行數據包能夠具有指向具體執行單元的一個以上指令。沒有指令的執行數據包能夠包含一個以上條件代碼擴展槽1。因此,creg/z位到功能單元指令的映射是清楚的。將creg/z位設置為等於「0000」,使該指令是無條件的。從而,被正確編碼的條件代碼擴展槽1能夠使一些指令是有條件的並且一些是無條件的。

可行的是,條件代碼擴展槽0與條件代碼擴展槽1兩者包括p位以限定如上結合圖13描述的執行數據包。在優選的實施例中,如圖14和圖15中所例示的,代碼擴展槽0和條件代碼擴展槽1優選地具有總是被編碼成1的位0(p位)。因此,條件代碼擴展槽0和條件代碼擴展槽1都不能是在執行數據包的最後一個指令槽中。

優選實施例包括兩個不同的常數擴展槽。每個執行數據包能夠包含這些唯一的32位常數擴展槽中的各一個,其包含27位將要作為高階位與5位的常數欄位1304串接以形成32位常數。如上述指令編碼描述中提及的,只有一些指令將src2/cst欄位1304限定為常數而不是源寄存器標識符。那些指令中的至少一部分可以採取常數擴展槽以擴展這個常數至32位(下面加以描述)。

圖16例示了常數擴展槽0的欄位。每個執行數據包可以包括常數擴展槽0的一個實例和常數擴展槽1的一個實例。圖16例示了常數擴展槽0 1600包括兩個欄位。欄位1601(位5至31)組成擴展的32位常數的最高有效的27個位,該常數包括目標指令欄位1304作為五個最低有效位。欄位1602(位0至4)被編碼為一組唯一位(CSTX0)以標識常數擴展槽0。在優選實施例中,常數擴展槽0 1600僅能夠被用於擴展相同執行數據包中的以下各項中的一個的常數:L1單元221指令、D1單元225指令中的數據、S2單元242指令、D2單元226指令中的偏移、M2單元243指令、N2單元244指令、分支指令、或C單元245指令。除了位0至4被編碼為一組唯一位(CSTX1)以標識常數擴展槽1,常數擴展槽1是與常數擴展槽0類似。在優選實施例中,常數擴展槽1僅能夠被用於擴展相同執行數據包中的以下各項中的一個的常數:L2單元241指令、D2單元226指令中的數據、S1單元222指令、D1單元225指令中的偏移、M1單元223指令或N1單元224指令。

如下使用常數擴展槽0和常數擴展槽1。目標指令必須是具有允許常數規範的類型。如現有技術中已知的,這通過利用常數的最低有效位代替一個輸入操作數寄存器規範欄位來實現。指令解碼器113從指令操作碼位確定這種被稱為直接欄位的情況。目標指令還包括指示指定的常數是否未擴展的位編碼。這優選地是常數擴展位1307,其中,常數擴展位=0指示常數擴展啟用並且常數擴展位=1指示常數擴展禁用。如果指令解碼器113檢測到常數擴展槽0或常數擴展槽1,則其針對對應於所檢測到的常數擴展槽的指令進一步檢查在那個執行數據包內的其它指令。優選地,只有在一條對應指令具有等於1的常數擴展位1307的情況下,才進行常數擴展。

圖17是例示常數規範或擴展的這個實施例的部分框圖1700。圖17假設指令解碼器113檢測到相同執行數據包中的常數擴展槽以及對應指令。圖17例示了包括指令1300(如圖13中所例示的被編碼)和常數擴展指令1600(如圖16中所例示的被編碼)的執行數據包1701。執行數據包1701中的其它指令與本說明書不相關並且用虛線例示。最終指令解碼1710是圖1中例示的指令解碼器113的一部分,最終指令解碼1710專注於針對功能單元1730的最終指令解碼。功能單元1730能夠是標量數據路徑側A 115功能單元(包括L1單元221、S1單元222、M1單元223、N1單元224、D1單元225和D2單元226)或矢量數據路徑B 115功能單元(包括L2單元241、S2單元242、M2單元243、N2單元244、C單元245和P單元246)中的任意一個。最終指令解碼1710接收標識常數擴展槽1600的常數擴展位1601和唯一位1602。最終指令解碼1710接收來自指令1300的目標欄位(dst)1303、第二輸入操作數欄位(src2)1304、第一輸入操作數欄位(src1)1305和操作碼欄位1306。指令解碼器113的其它部分(圖17中未例示)標識這些欄位並且將這些欄位轉發至最終指令解碼1710。最終指令解碼1710解析這些欄位並且生成針對寄存器文件1720和功能單元1730的輸出。

寄存器文件1720代表功能單元1730可訪問的寄存器。如圖2中所例示的,每個功能單元1730可以訪問對應的全局寄存器文件和對應的局部寄存器文件。目標欄位1303、第二輸入操作數欄位1304和第一輸入操作數欄位1305的默認意義是相應的可訪問寄存器內的寄存器號。如現有技術中已知的,這些欄位的編碼指向存儲著數據的唯一寄存器。根據默認意義,第二輸入操作數欄位1304和第一輸入操作數欄位1305標識存儲針對功能單元1730的輸入操作數的寄存器。在合適的環境下(由這條指令的操作碼1306的具體意義來確定),最終指令解碼1710向寄存器文件1720提供對應的寄存器號。寄存器文件1720召回存儲在所標識的寄存器中的數據並且向功能單元1730提供輸入操作數。最終指令解碼1710還向寄存器文件1720提供對應於目標欄位1303的寄存器號。寄存器文件1720將通過功能單元1730所產生的結果存儲至通過目標欄位1303所標識的寄存器中。

最終指令解碼1710向功能單元1730提供命令1711。命令1711對應於通過指令1300的操作碼1306所限定的數據處理操作。最終指令解碼1710解析操作碼1306並且向功能單元1730提供控制功能單元1730以執行所標識的數據處理操作的對應的命令1711。功能單元1730執行所命令的數據處理操作,其將結果提供給寄存器文件1720。

最終指令解碼1710還向功能單元1730提供常數1712。功能單元1730可以從兩個源接收用於其操作的數據。這個數據可以被存儲在寄存器文件1720中,如通過第二輸入操作數欄位1304和第一輸入操作數欄位1305所標識出。這個數據可以通過指令指定為常數。本領域已知的是,可以解析兩個輸入操作數欄位1304和1305之一為常數操作數,而非寄存器號。這在本領域中被稱為直接操作。在直接操作中,功能單元1730直接採取操作數欄位作為輸入操作數,而不是採取操作數欄位作為從寄存器文件1720召回的數據。由於如1304和1305的典型的輸入操作數欄位具有比寄存器文件1720中能夠存儲的更少的位,這種直接操作限制了能夠被指定的常數的大小和範圍。本發明使相同執行數據包中的另一條指令能夠指定或擴展指令的常數。與本領域中可能的相比,這允許指定額外的常數位。根據本發明,常數擴展位1601可以基於一個或更多個輸入操作數欄位指定一個或更多個常數或者用於擴展常數的位。

圖18至圖22例示了本發明的常數運算的示例。圖18例示了根據常數擴展指令的src2/cst欄位1303和常數擴展位1601形成32位常數。圖19例示了根據常數擴展指令0的src1欄位1304、src2/cst欄位1303、常數擴展位1601,以及常數擴展指令1的常數擴展位1601形成64位常數。圖20例示了僅使用常數擴展指令的常數擴展位1601形成常數。圖21例示了形成兩個常數,根據常數擴展指令1的src2/cst欄位1304和常數擴展位1601形成第一常數,根據常數擴展指令1的src1欄位1304和常數擴展位1601的常數形成第二常數。圖22例示了根據常數擴展指令的常數擴展位1601形成兩個常數。

圖18例示了本發明的常數擴展的優選實施例。圖18假設指令解碼器113檢測到相同執行數據包中的常數擴展槽以及對應指令。在圖18中,指令解碼器113向串接器1801提供來自常數擴展槽(位欄位1601)的27個擴展位並且提供來自對應的指令的5個常數位(位欄位1304)。串接器1801根據這兩個部分形成單個32位的字。在優選的實施例中,常數擴展槽的欄位1601組成27個最高有效位,並且目標指令的欄位1304組成五個最低有效位。這個組合的32位的字被提供給復用器1802的一個輸入端。來自對應指令欄位1304的這5個常數位向復用器1802提供第二輸入。復用器1802的選擇通過是否使能擴展常數形成進行控制。在優選實施例中,這通過e位1307的狀態指示。如果e位是1(已擴展),則復用器1802從串接器1801選擇串接的32位輸入。如果e位是0(未擴展),則復用器1802從對應的指令欄位1304選擇5個常數位。復用器1802將這個輸出提供給符號擴展單元1803的輸入端。

符號擴展單元1803根據來自復用器1803的輸入形成最終操作數值。符號擴展單元1803接收控制輸入標量/矢量和數據大小。該標量/矢量輸入指示對應的指令是標量指令還是矢量指令。數據路徑側A 115的功能單元(L1單元221、S1單元222、M1單元223、N1單元224、D1單元225和D2單元226)僅能夠執行標量指令。指向這些功能單元中的一個的任何指令是標量指令。數據路徑側B功能單元L2單元241、S2單元242、M2單元243、N2單元244和C單元245可以執行標量指令或矢量指令。指令解碼器113根據操作碼1306確定指令是標量指令還是矢量指令。P單元246僅能夠執行標量指令。數據大小可以是8位(字節B)、16位(半個字H)、32位(字W)或64位(雙字D)。

表2列出了針對優選實施例中的各個選項的符號擴展單元1803的操作。

表2

在一個替代性實施例中,基於不只一個常數擴展槽中的數據擴展常數。圖19是例示了常數擴展的這個實施例的部分框圖1900。圖19假設指令解碼器113檢測到相同執行數據包中的常數擴展槽0、常數擴展槽1和對應指令。指令解碼器113向第一串接器1901提供來自常數擴展槽1(位欄位1601)的27個擴展位、來自常數擴展槽0(位欄位1601)的27個擴展位、來自對應指令的5個常數位(位欄位1304)和來自位欄位1305的5個位。第一串接器1901根據這四個部分形成單個64位的字。在優選實施例中,來自常數擴展槽1的欄位1601是最高有效位,來自常數擴展槽0的欄位1601是接下來的最低有效位,欄位1304作為接下來的最低有效位並且欄位1305作為最低有效位。這個組合的64位的字被提供給復用器1903的一個輸入端。指令解碼器113將來自對應指令的5個常數位(位欄位1304)和來自位欄位1305的5個位提供至第二串接器1902。第二串接器1902根據這兩個部分形成單個10位的字。在優選實施例中,欄位1304是最高有效位,並且欄位1305是最低有效位。將這個組合的10位的字提供給復用器1903的第二輸入端。復用器1802的選擇通過是否使能擴展常數形成控制。在優選實施例中,這通過常數擴展位(e位)的狀態指示。如果常數擴展位是1(已擴展),則復用器1903從第一串接器1901選擇串接的64位輸入。如果常數擴展位是0(未擴展),則復用器1903從串接器1902選擇串接的10位輸入。復用器1903將這個輸出提供給符號擴展單元1904的輸入端。符號擴展單元1904如上述的符號擴展單元1803一樣運行。

圖20例示了本發明的又一實施例。部分框圖2000選擇來自常數擴展槽的完全指定的常數或常數「0」。圖20假設指令解碼器113檢測到相同執行數據包中的常數擴展槽以及對應指令。指令解碼器113向復用器2001的一個輸入端提供來自常數擴展槽(位欄位1601)的27個擴展位。復用器2001的另一個輸入端接收常數「0」。復用器2002的選擇通過是否使能擴展常數形成控制。在優選實施例中,這通過常數擴展位(e位)的狀態指示。如果常數擴展位是1(已擴展),則復用器2002選擇來自常數擴展槽的位欄位1601的位。如果常數擴展位是0(未擴展),則復用器2001選擇常數「0」。復用器2001將這個輸出提供給符號擴展單元2002的輸入端。符號擴展單元2002如上述的符號擴展單元1803一樣運行。

圖21例示了根據本發明的針對常數形成的另一替代方案。部分框圖2100形成兩個常數。圖21假設指令解碼器113檢測到相同執行數據包中的常數擴展槽0、常數擴展槽1以及對應指令。指令解碼器113向第一串接器2101提供來自常數擴展槽1(位欄位1601)的27個擴展位和5個常數位(位欄位1304)。第一串接器2101根據這兩個部分形成單個32位的字。在優選實施例中,來自常數擴展槽1的欄位1601是最高有效位,並且src2/cst欄位1304是最低有效位。第一串接器2101的輸出提供第一符號擴展2111,該第一符號擴展2111如符號擴展單元1803一樣運行,產生第一常數操作數。

指令解碼器113向第二串接器2102提供來自常數擴展槽0(位欄位1601)的27個擴展位和來自對應的指令的位欄位1305的5個位。第二串接器2102根據這兩個部分形成單個32位的字。在優選實施例中,來自常數擴展槽0的欄位1601是最高有效位,並且欄位1305是最低有效位。第二串接器2102的輸出提供第二符號擴展2112,該第二符號擴展2112如符號擴展單元1803一樣運行,產生第一常數操作數。

圖22例示了根據常數擴展指令的常數擴展位1601形成兩個常數。部分框圖2200根據常數擴展位形成兩個常數。圖22假設指令解碼器113檢測到相同執行數據包中的常數擴展槽以及對應指令。指令解碼器113提供來自部分框圖2100的27個擴展位,形成兩個常數。圖21假設指令解碼器113檢測到相同執行數據包中的常數擴展槽0、常數擴展槽1以及對應指令。指令解碼器113向位解析器2201提供來自常數擴展槽1(位欄位1601)的27個擴展位。位解析器2201通過指令解碼器113控制以將這個位欄位解析成稱為第三操作數src3和第四操作數src4的兩個常數。在一個優選實施例中,這些中的每個是被用作附加寄存器號的5位欄位,以訪問寄存器文件1720從而支持四操作數指令。如通過操作碼1306所指示的指令的特性確定了位欄位1601位到兩個常數的映射。每個所得的常數能夠是位欄位1601的(可能重疊的)子集。在這些常數中的一個中不是位欄位1601的所有位需要出現。位解析器2201將位欄位1601的未使用位丟棄。

可行的是,常數擴展槽0與常數擴展槽1兩者包括p位以如上結合圖13所述限定執行數據包。在優選的實施例中,如在條件碼擴展槽的情況下,常數擴展槽0和常數擴展槽1優選地具有總是被編碼成1的位0(p位)。因此常數擴展槽0和常數擴展槽1都不能是在執行數據包的最後一個指令槽中。

對於執行數據包技術上可行的是,包括常數擴展槽0或1,以及不只一個對應指令標記的擴展常數(e位=1)。針對常數擴展槽0,這將指執行數據包中的以下項中的不只一項具有常數擴展位1:L1單元221指令、D1單元225指令中的數據、S2單元242指令、D2單元226指令中的偏移、M2單元243指令或N2單元244指令。針對常數擴展槽1,這將指執行數據包中的以下項中的不只一項具有常數擴展位1:L2單元241指令、D2單元226指令中的數據、S1單元222指令、D1單元225指令中的偏移、M1單元223指令或N1單元224指令。將相同常數擴展提供給不只一條指令不被期望是有用的功能。因此,在一個實施例中,指令解碼器113可以確定這種情況為無效操作並且不被支持。可替代地,在常數擴展槽的相同擴展位被應用到每個對應功能單元指令標識的擴展常數的情況下,支持這種組合。

專用矢量判定指令使用判定寄存器文件234中的寄存器以控制矢量運算。在當前實施例中,所有這些SIMD矢量判定指令對所選定的數據大小運算。該數據大小可以包括字節(8位)數據、半字(16位)數據、字(32位)數據、雙字(64位)數據、四倍字(128位)數據和半矢量(256位)數據。判定寄存器的每個位控制是否對數據的對應字節進行SIMD操作。P單元245的運行基於不只一個矢量比較允許各種複合矢量SIMD運算。例如,能夠使用兩次比較進行範圍確定。將候選矢量與第一矢量參考進行比較,該第一矢量參考具有包裝在第一數據寄存器中的範圍的最小值。將候選矢量與第二參考矢量進行第二次比較,該第二參考矢量具有包裝在第二數據寄存器中的範圍的最大值。這兩個結果判定寄存器的邏輯組合將允許矢量條件運算以確定候選矢量的每個數據部分在範圍內還是在範圍外。

L1單元221、S1單元222、L2單元241、S2單元242和C單元245通常運行在單指令多數據(SIMD)模式中。在這種SIMD模式下,相同指令被應用於來自兩個操作數的已包裝數據。每個操作數保存被設置在預定槽內的多個數據元素。通過在數據界限處的進位控制啟用SIMD運算。這種進位控制啟用對不同的數據寬度進行運算。

圖23例示了進位控制。與(AND)門2301接收操作數寬算術邏輯單元內的位N的進位輸出(64位用於標量數據路徑側A 115功能單元並且512位用於矢量數據路徑側B 116功能單元)。與門2301還接收進位控制信號,下面將進一步進行詳細解釋。與門2301的輸出被提供給操作數寬算術邏輯單元的位N+1的進位輸入。與門(如與門2301)被設置在可能的數據界限處的每對位之間。例如,對於8位數據(如與門),這種與門將在位7與8、位15與16、位23與24等之間。每個這種與門接收對應的進位控制信號。如果數據大小是具有最小值,則每個進位控制信號是0,這有效地阻止了相鄰位之間的進位傳輸。如果所選擇的數據大小需要兩個算術邏輯單元部分,則對應的進位控制信號是1。下表3針對如通過矢量數據路徑側B 116功能單元使用的512位寬操作數的情況示出了示例進位控制信號,該512位寬操作數能夠被分成8位、16位、32位、64位、128位或256位的部分。在表3中,較高的32位控制較高位(位128至511)進位,並且較低的32位控制較低位(位0至127)進位。不需要控制最高有效位的進位輸出,因此僅需要63個進位控制信號。

表3

在本領域中典型的是對2的整數冪(2N)的數據大小進行運算。然而,這種進位控制技術不限於2的整數冪。本領域技術人員將理解如何將這種技術應用於其它數據大小和其它操作數寬度。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀