TW201633115A - 摩頓座標調整處理器,方法,系統,及指令 - Google Patents

摩頓座標調整處理器,方法,系統,及指令 Download PDF

Info

Publication number
TW201633115A
TW201633115A TW104133042A TW104133042A TW201633115A TW 201633115 A TW201633115 A TW 201633115A TW 104133042 A TW104133042 A TW 104133042A TW 104133042 A TW104133042 A TW 104133042A TW 201633115 A TW201633115 A TW 201633115A
Authority
TW
Taiwan
Prior art keywords
instruction
data
coordinates
processor
unit
Prior art date
Application number
TW104133042A
Other languages
English (en)
Other versions
TWI599950B (zh
Inventor
阿諾德 伊凡
艾蒙斯特阿法 歐德亞麥德維爾
Original Assignee
英特爾股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 英特爾股份有限公司 filed Critical 英特爾股份有限公司
Publication of TW201633115A publication Critical patent/TW201633115A/zh
Application granted granted Critical
Publication of TWI599950B publication Critical patent/TWI599950B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

一種處理器包括解碼單元,用以解碼一指令,其係用以指示一用以包括摩頓座標之來源緊縮資料運算元、一具有該些摩頓座標所將被映射至之點的多維空間之維度、該多維空間之既定維、及目的地。該執行單元係與該解碼單元耦合。該執行單元回應於該解碼單元解碼該指令,將結果緊縮資料運算元儲存於該目的地中。該結果運算元係包括摩頓座標,其各相應於該來源運算元之該些摩頓座標的不同一者。該結果運算元之該些摩頓座標係被映射至該多維空間中的點,該些點與該來源運算元之該些相應摩頓座標所將被映射至的點不同以該既定維中的固定改變。

Description

摩頓座標調整處理器,方法,系統,及指令
文中所述之實施例一般係有關於處理器。特別地,文中所述之實施例一般係有關於處理器中之摩頓座標的使用。
電腦系統及其他電子裝置常利用其以資料結構來組織之資料。資料結構可代表資料之特定配置或組織。常用於電腦系統中之資料結構的一種常見類型是陣列,諸如二維(2D)陣列。
圖1闡明一種二維(2D)陣列100之範例,其中資料項目(例如,值7、16、24、27等等)被配置成二維。代表性地,2D資料結構可表示表格、陣列,等等。於說明書中,二維係由第一維或x軸102、以及第二維或y軸104來界定。x軸與y軸係互相垂直並界定其中資料項目所被配置之2D柵格。2D陣列中之資料項目可由沿著兩軸之x及y指標或座標來識別。x座標代表從原點(其中兩 軸相交)所測量之沿著x軸的距離及/或相對位置,而y座標代表從原點所測量之沿著y軸的距離及/或相對位置。於所示之範例中,x座標和y座標具有0、1、2、及3之值。代表性地,座標或指標可代表列及行數。舉例而言,具有14之值的資料項目可由x,y座標(1,2)所識別,其可指示行2、列3中之資料項目。類似地,具有24之值的資料項目可藉由將y座標減去一單位以獲得x,y座標(1,1)來識別。已考量其他範例,其中2D資料結構代表笛卡爾座標系統,且該些座標可代表笛卡爾座標系統中之點的位置。
於電腦系統及其他電子裝置內,此類陣列及其他資料結構可被儲存在記憶體或其他線性儲存中。可能有不同的方式以儲存2D及其他多維陣列於記憶體中。例如,2D陣列可被儲存以列為主的順序。在列為主的順序中,陣列之列在記憶體中是相連的。例如,資料項目可依順序27,3,8,11,9,24,7,1,8,14,16,2,7,16,4,及20而被儲存於記憶體中。替代地,2D陣列可依行為主的順序而被儲存於記憶體中。在行為主的順序中,陣列之行在記憶體中是相連的。例如,資料項目可依順序27,9,8,7,3,24,14,16,8,7,16,4,11,1,2,及20而被儲存於記憶體中。
100‧‧‧二維(2D)陣列
102‧‧‧x軸
104‧‧‧y軸
203、205‧‧‧參考數字
206‧‧‧摩頓序曲線
207‧‧‧二元表示
208‧‧‧摩頓碼或座標
208-1‧‧‧6位元2D摩頓座標
208-2‧‧‧9位元3D摩頓座標
208-3‧‧‧12位元4D摩頓座標
310‧‧‧處理器
312‧‧‧摩頓座標調整指令
314‧‧‧解碼單元
316‧‧‧執行單元
318‧‧‧緊縮資料暫存器
320‧‧‧來源緊縮資料運算元
324‧‧‧結果緊縮資料運算元
508‧‧‧來源3D摩頓座標
508*‧‧‧已調整3D摩頓座標
540、542‧‧‧參考
616‧‧‧執行單元
620‧‧‧來源緊縮資料運算元
624‧‧‧結果緊縮資料運算元
646‧‧‧維度
648‧‧‧既定維
650‧‧‧2D摩頓座標調整操作
716‧‧‧執行單元
720‧‧‧來源緊縮資料運算元
724‧‧‧結果緊縮資料運算元
746‧‧‧維度
748‧‧‧既定維
752‧‧‧3D摩頓座標調整操作
846‧‧‧維度指明符
848‧‧‧維指明符
854‧‧‧即刻
914‧‧‧解碼單元
916‧‧‧執行單元
918‧‧‧暫存器檔單元
980‧‧‧核心
981‧‧‧分支預測單元
982‧‧‧指令預提取單元
984‧‧‧指令提取單元
985‧‧‧重新命名/配置器單元
986‧‧‧排程器單元
987‧‧‧記憶體存取單元
989‧‧‧記憶體單元
990‧‧‧第2階(L2)快取單元
991‧‧‧撤回單元
1012‧‧‧摩頓座標調整指令
1080‧‧‧運算碼
1082‧‧‧來源運算元指明符
1084‧‧‧目的地儲存位置指明符
1086‧‧‧座標指明符
1088‧‧‧維度指明符
1102‧‧‧VEX前綴
1105‧‧‧REX欄位
1115‧‧‧運算碼映圖欄位
1120‧‧‧VEX.vvvv欄位
1125‧‧‧前綴編碼欄位
1130‧‧‧真實運算碼欄位
1140‧‧‧Mod R/M位元組
1142‧‧‧MOD欄位
1144‧‧‧Reg欄位
1146‧‧‧R/M欄位
1150‧‧‧SIB位元組
1152‧‧‧SS
1154‧‧‧SIB.xxx
1156‧‧‧SIB.bbb
1162‧‧‧置換欄位
1164‧‧‧W欄位
1168‧‧‧VEX.L大小欄位
1172‧‧‧即刻欄位(IMM8)
1174‧‧‧全運算碼欄位
1200‧‧‧一般性向量友善指令格式
1205‧‧‧無記憶體存取
1210‧‧‧無記憶體存取、全捨入控制類型操作
1212‧‧‧無記憶體存取、寫入遮蔽控制、部分捨入控制類型操作
1215‧‧‧無記憶體存取、資料變換類型操作
1217‧‧‧無記憶體存取、寫入遮蔽控制、v大小類型操作
1220‧‧‧記憶體存取
1227‧‧‧記憶體存取、寫入遮蔽控制
1240‧‧‧格式欄位
1242‧‧‧基礎操作欄位
1244‧‧‧暫存器指標欄位
1246‧‧‧修飾符欄位
1250‧‧‧擴增操作欄位
1252‧‧‧α欄位
1252A‧‧‧RS欄位
1252A.1‧‧‧捨入
1252A.2‧‧‧資料變換
1252B‧‧‧逐出暗示欄位
1252B.1‧‧‧暫時
1252B.2‧‧‧非暫時
1254‧‧‧β欄位
1254A‧‧‧捨入控制欄位
1254B‧‧‧資料變換欄位
1254C‧‧‧資料調處欄位
1256‧‧‧SAE欄位
1257A‧‧‧RL欄位
1257A.1‧‧‧捨入
1257A.2‧‧‧向量長度(VSIZE)
1257B‧‧‧廣播欄位
1258‧‧‧捨入操作控制欄位
1259A‧‧‧捨入操作欄位
1259B‧‧‧向量長度欄位
1260‧‧‧比例欄位
1262A‧‧‧置換欄位
1262B‧‧‧置換因數欄位
1264‧‧‧資料元件寬度欄位
1268‧‧‧類別欄位
1268A‧‧‧類別A
1268B‧‧‧類別B
1270‧‧‧寫入遮蔽欄位
1272‧‧‧即刻欄位
1274‧‧‧全運算碼欄位
1300‧‧‧特定向量友善指令格式
1302‧‧‧EVEX前綴
1305‧‧‧REX欄位
1310‧‧‧REX’欄位
1315‧‧‧運算碼映圖欄位
1320‧‧‧VVVV欄位
1325‧‧‧前綴編碼欄位
1330‧‧‧真實運算碼欄位
1340‧‧‧Mod R/M位元組
1342‧‧‧MOD欄位
1344‧‧‧Reg欄位
1346‧‧‧R/M欄位
1354‧‧‧SIB.xxx
1356‧‧‧SIB.bbb
1400‧‧‧暫存器架構
1410‧‧‧向量暫存器
1415‧‧‧寫入遮蔽暫存器
1425‧‧‧通用暫存器
1445‧‧‧純量浮點堆疊暫存器檔
1450‧‧‧MMX緊縮整數平坦暫存器檔
1500‧‧‧處理器管線
1502‧‧‧提取級
1504‧‧‧長度解碼級
1506‧‧‧解碼級
1508‧‧‧配置級
1510‧‧‧重新命名級
1512‧‧‧排程級
1514‧‧‧暫存器讀取/記憶體讀取級
1516‧‧‧執行級
1518‧‧‧寫入回/記憶體寫入級
1522‧‧‧例外處置級
1524‧‧‧確定級
1530‧‧‧前端單元
1532‧‧‧分支預測單元
1534‧‧‧指令快取單元
1536‧‧‧指令翻譯旁看緩衝器(TLB)
1538‧‧‧指令提取單元
1540‧‧‧解碼單元
1550‧‧‧執行引擎單元
1552‧‧‧重新命名/配置器單元
1554‧‧‧退役單元
1556‧‧‧排程器單元
1558‧‧‧實體暫存器檔單元
1560‧‧‧執行叢集
1562‧‧‧執行單元
1564‧‧‧記憶體存取單元
1570‧‧‧記憶體單元
1572‧‧‧資料TLB單元
1574‧‧‧資料快取單元
1576‧‧‧第二階(L2)快取單元
1590‧‧‧處理器核心
1600‧‧‧指令解碼器
1602‧‧‧晶粒上互連網路
1604‧‧‧第二階(L2)快取
1606‧‧‧L1快取
1606A‧‧‧L1資料快取
1608‧‧‧純量單元
1610‧‧‧向量單元
1612‧‧‧純量暫存器
1614‧‧‧向量暫存器
1620‧‧‧拌和單元
1622A-B‧‧‧數字轉換單元
1624‧‧‧複製單元
1626‧‧‧寫入遮蔽暫存器
1628‧‧‧16寬的ALU
1700‧‧‧處理器
1702A-N‧‧‧核心
1706‧‧‧共享快取單元
1708‧‧‧特殊用途邏輯
1710‧‧‧系統代理
1712‧‧‧環狀為基的互連單元
1714‧‧‧集成記憶體控制器單元
1716‧‧‧匯流排控制器單元
1800‧‧‧系統
1810、1815‧‧‧處理器
1820‧‧‧控制器集線器
1840‧‧‧記憶體
1845‧‧‧共處理器
1850‧‧‧輸入/輸出集線器(IOH)
1860‧‧‧輸入/輸出(I/O)裝置
1890‧‧‧圖形記憶體控制器集線器(GMCH)
1895‧‧‧連接
1900‧‧‧多處理器系統
1914‧‧‧I/O裝置
1915‧‧‧額外處理器
1916‧‧‧第一匯流排
1918‧‧‧匯流排橋
1920‧‧‧第二匯流排
1922‧‧‧鍵盤及/或滑鼠
1924‧‧‧音頻I/O
1927‧‧‧通訊裝置
1928‧‧‧儲存單元
1930‧‧‧指令/碼及資料
1932‧‧‧記憶體
1934‧‧‧記憶體
1938‧‧‧共處理器
1939‧‧‧高性能介面
1950‧‧‧點對點互連
1952、1954‧‧‧P-P介面
1970‧‧‧第一處理器
1972、1982‧‧‧集成記憶體控制器(IMC)單元
1976、1978‧‧‧點對點(P-P)介面
1980‧‧‧第二處理器
1986、1988‧‧‧P-P介面
1990‧‧‧晶片組
1994、1998‧‧‧點對點介面電路
1996‧‧‧介面
2000‧‧‧系統
2014‧‧‧I/O裝置
2015‧‧‧舊有I/O裝置
2100‧‧‧SoC
2102‧‧‧互連單元
2110‧‧‧應用程式處理器
2120‧‧‧共處理器
2130‧‧‧靜態隨機存取記憶體(SRAM)單元
2132‧‧‧直接記憶體存取(DMA)單元
2140‧‧‧顯示單元
2202‧‧‧高階語言
2204‧‧‧x86編譯器
2206‧‧‧x86二元碼
2208‧‧‧指令集編譯器
2210‧‧‧指令集二元碼
2212‧‧‧指令轉換器
2214‧‧‧沒有至少一x86指令集核心之處理器
2216‧‧‧具有至少一x86指令集核心之處理器
本發明可藉由參考其被用以闡明實施例之以下描述及後附圖形而被最佳地瞭解。於圖形中:
圖1闡明二維(2D)陣列之範例。
圖2A闡明其映射至圖1之2D陣列的摩頓序曲線之範例。
圖2B為闡明範例2D、3D、及4D摩頓座標之方塊圖。
圖3為一種可操作以履行摩頓座標調整指令之實施例的處理器之實施例的方塊圖。
圖4為一種履行摩頓座標調整指令之實施例的方法的實施例之方塊流程圖。
圖5為調整來源3D摩頓座標至結果/已調整3D摩頓座標來反映既定的或指示的維減去一之範例實施例的方塊圖。
圖6為方塊圖,其闡明2D摩頓座標調整操作之範例實施例,用以將來源緊縮資料運算元中之2D摩頓座標調整為結果緊縮資料運算元中之相應的已調整2D摩頓座標來反映既定的指示維之減少。
圖7為方塊圖,其闡明3D摩頓座標調整操作之範例實施例,用以將來源緊縮資料運算元中之3D摩頓座標調整為結果緊縮資料運算元中之相應的已調整3D摩頓座標來反映既定的指示維度之減少。
圖8為適於摩頓座標調整指令之一或更多實施例的即刻(immediate)之特定範例實施例的方塊圖。
圖9為一種可操作以履行摩頓座標調整指令之實施例的適當處理器之更詳細範例實施例的方塊圖。
圖10為一種摩頓座標調整指令之實施例的方塊圖。
圖11A-11C為闡明一般性向量友善指令格式及其指令模板的方塊圖,依據本發明之實施例。
圖12A-B為闡明範例特定向量友善指令格式及運算碼欄位的方塊圖,依據本發明之實施例。
圖13A-D為闡明範例特定向量友善指令格式及其欄位的方塊圖,依據本發明之實施例。
圖14為一種暫存器架構之實施例的方塊圖。
圖15A為闡明依序管線之一實施例及暫存器重新命名失序問題/執行管線之一實施例的方塊圖。
圖15B為處理器核心之實施例的方塊圖,該處理器核心包括一耦合至執行引擎單位之前端單元且兩者均耦合至記憶體單元。
圖16A為單處理器核心之實施例的方塊圖,連同與晶粒上互連網路之其連接、以及第二階(L2)快取之其本地子集。
圖16B為圖16A之處理器核心的部分之展開視圖的實施例之方塊圖。
圖17為一種處理器之實施例的方塊圖,該處理器可具有多於一個核心、可具有集成記憶體控制器、且可具有集成圖形。
圖18為一種電腦架構之第一實施例的方塊圖。
圖19為一種電腦架構之第二實施例的方塊圖。
圖20為一種電腦架構之第三實施例的方塊圖。
圖21為一種電腦架構之第四實施例的方塊圖。
圖22為一種軟體指令轉換器之使用的方塊圖,該轉換器係用以將來源指令集中之二元指令轉換至目標指令集中之二元指令,依據本發明之實施例。
【發明內容及實施方式】
文中所揭露者為摩頓座標調整指令,用以執行該些指令之處理器,當處理或執行該些指令時由該些處理器所履行的方法,及結合一或更多用以處理或執行該些指令之處理器的系統。於以下描述中,提出了多樣特定的細節(例如,特定指令操作、資料格式、處理器組態、微架構細節、操作之序列,等等)。然而,實施例可被實行而無這些特定的細節。於其他例子中,眾所周知的電路、結構及技術未被詳細地顯示以免妨礙對本說明書之瞭解。
有一個挑戰是其資料項目被儲存在記憶體或線性儲存中的方式可能顯著地影響其使用該些資料項目之演算法的性能。其中,資料項目通常需要從記憶體被讀入處理器,但一次僅有有限數目的位元可從記憶體被讀入處理器。例如,通常處理器一次僅能夠從記憶體讀取512位元的相連資料(例如,於單一讀取操作)。不同的資料項目將被讀取以相連的順序,根據該些資料項目被儲存以列為主的順序、行為主的順序、或某種其他順序。例如,假如資料項目被儲存以列為主的順序,則資料項目可被讀取以順序27、3、8、11、9、24,依此類推,直到512位元之最大 值。反之,假如資料項目被儲存以列為主的順序,則資料項目可被讀取以順序27、9、8、7、3、24,依此類推,直到512位元之最大值。通常,從記憶體之各讀取操作可能僅得以從陣列獲得相關的某些資料項目。舉例而言,特別當陣列很大時(例如,具有至少大於512位元),假如資料項目被儲存以列為主的順序,則可能甚至無法在相同的讀取操作中從該陣列的第一行獲得不同列但相同行中之相鄰資料,即使這些資料項目於該陣列中彼此相鄰。類似的情況可能被遭遇在當資料係以行為主的順序時,且針對3D及4D陣列之資料的儲存。
資料項目所被配置於記憶體中之方式通常亦影響其有效地將該些資料項目貯藏在處理器之一或更多快取中的能力。對該些快取中之資料項目的存取相較於對記憶體中之資料項目的存取通常具有更低的潛時。然而,即使相關資料項目位於快取中,假如資料項目被分散於許多的不同快取線之間則可能傾向於發生不良的快取利用。通常,各快取線儲存其已被讀取自記憶體之相連資料的512位元。假如資料項目未以其針對使用該資料之相關演算法為有效率的方式被配置於記憶體中時,則快取線中之資料項目可為稀疏的。於嚴重的情境中,各快取線可能僅保持相關的單一資料項目。相反地,假如資料項目將以一種針對特定演算法為高度有效率的方式被配置於記憶體中,則相關的資料項目可被更緊密地封裝入快取線,以各快取線含有從數個至許多相關的資料項目。如此可協助增進快取之有效 性。類似地,假如資料項目將以一種針對特定演算法為高度有效率的方式被配置於記憶體中,則更多相關的資料項目可至少平均地於讀取操作中被讀入處理器。因此,其將容許資料以一種針對特定演算法為有效率的方式被配置的方式可協助增進性能。
有各種不同類型的演算法,其傾向於處理具有多維局部性或相對其他資料之近似性的資料。舉例而言,影像處理演算法(例如,紅眼減少、壓縮,等等)常傾向於一起地或同時地處理鄰接的、相鄰的、或者接近的像素之群組。演算法可相對地更有興趣於相鄰像素之區塊的資料,而非單一列或行中之所有像素的資料(例如,如可為列為主或行為主配置中的情況)。類似地,於許多視頻處理演算法(例如,壓縮、視頻監視分析、機器人視覺,等等)中,常見一起地或同時地處理依序視頻框之相應像素中的相鄰像素及/或資料的群組之資料。例如,壓縮常藉由儲存介於此類像素之間的差異而非絕對像素值來達成。其亦傾向於利用多維局部性之資料的演算法包括(但不限定於)斷層分析、地震分析、幾何模擬、矩陣操作(例如,矩陣相乘及/或轉置)、有限元件分析、射線追蹤、傅立葉變換、平行資料建構應用、及圖形應用,舉例而言。然而,如上所述,特別當涉及相當大的陣列時,資料之列為主順序、行為主順序、及各種其他配置常不提供針對其大量利用具有多維局部性之資料的應用之資料的有效率配置。結果,組織其保留多維局部性之資料的其他方式將傾 向於提供針對某些應用之某些優點。
一種Z序曲線(亦已知為摩頓序曲線)為一種連續的空間填充曲線或函數,其能夠將多維資料或空間(例如,笛卡爾座標系統資料或空間及/或n維歐幾里德資料或空間)映射至單維而同時保留資料之多維局部性或近似性。亦即,摩頓序曲線可將2D、3D、4D、或其他多維空間映射至資料之線性列表或配置上,以一種保留資料之多維局部性的方式(例如,具有多維空間中之局部性的資料亦具有由摩頓曲線所提供之線性列表或配置中的局部性)。沿著摩頓序曲線之資料的順序被稱為Z曲線序或摩頓序。摩頓序被反應於各點的摩頓碼或摩頓座標或摩頓指數中。Z序曲線具有Z形狀曲線(其線性地連接四個點)為基本單元。整體Z序空間填充曲線係藉由將多數或許多這些Z形狀曲線或單元連接在一起以填充2D、3D、4D、或其他多維空間而被形成。
圖2A闡明其映射至圖1之2D陣列100的Z序曲線或摩頓序曲線206之範例。如圖所示,數個Z形狀曲線或單元(於此範例中為四個)可在一種線性配置中被連接在一起以橫跨或填充2D陣列中之所有點。於此範例中,因為有十六個資料項目於2D陣列中,所以四個Z形狀單元(各具有四個點)完整地橫跨十六個資料項目2D陣列。於圖示中,座標被顯示以十進位標示(例如,0、1、2、3,等等)。座標之同等的二元表示207亦被顯示以括號(例如,000、001、010、011,等等)於十進位座標旁 邊。舉例而言,十進位座標值2係同等於二元座標值「010」。
將摩頓序曲線映射至陣列涉及判定陣列之點或資料項目的摩頓碼或座標208。沿著摩頓序曲線之個別點的摩頓座標可藉由以下方式被計算:以固定型態交錯多個多維座標之二元表示的位元。例如,假如x座標之第一、第二及第三位元被個別地表示為x1、x2、及x3,及假如y座標之第一、第二及第三位元被個別地表示為y1、y2、及y3,則一點之摩頓座標可藉由將位元交錯或「混洗」入順序x1y1x2y2x3y3而被計算。為了進一步闡明,點(x=1,y=0)之摩頓座標可藉由以下方式而被找出:交錯這些座標(亦即,001、000)之二元表示的位元以獲得值「000001」之摩頓座標208。從右至左,第一、第三、及第五位元係相應於x座標,而第二、第四、及第六位元係相應於y座標。於圖示中,最低有效或最低順序位元被顯示於右邊。類似地,於3D及4D中,3D或4D摩頓座標可藉由針對三或四個座標個別地交錯二元表示之位元而被找出。較高的維可被類似地執行。於相反方向上,計算多個多維座標之二元表示涉及將摩頓座標之位元反向固定去交錯或「去混洗」入分離的座標。例如,摩頓座標x1y1x2y2x3y3可藉由去交錯位元x1y1x2y2以產生x座標為x1x2x3及y座標為y1y2y3而被轉換為x和y座標之二元表示。為了進一步闡明,摩頓座標「000001」可被轉換為x座標「001」及y座標「000」之二元表示。類似地, 於3D及4D中,三或四個不同座標之二元表示可藉由去交錯或去混洗3D或4D摩頓座標之位元而被找出。
圖2B為方塊圖,其闡明範例6位元2D摩頓座標208-1、範例9位元3D摩頓座標208-2、及範例12位元4D摩頓座標208-3。於此範例中,x、y、及z座標之各者被表示以僅三個位元。於其他實施例中,3D摩頓座標中的x、y、及z座標之各者可具有其他數目的位元。例如,針對2D摩頓座標,x、y、及z座標之各者可具有從約七至十六個位元以容許具有兩倍位元之2D摩頓座標符合32位元的資料元件,或者可具有從約七至三十二個位元以容許具有兩倍位元之3D摩頓座標符合64位元的資料元件。同樣地,針對3D摩頓座標,x、y、及z座標之各者可具有從約七至十個位元以容許具有三倍位元之3D摩頓座標符合32位元的資料元件,或者可具有從七至二十一個位元以容許3D摩頓座標符合64位元的資料元件。類似地,針對4D摩頓座標,x、y、及z座標之各者可具有從約六至八個位元以容許具有四倍位元之4D摩頓座標符合32位元的資料元件,或者可具有從六至十六個位元以容許4D摩頓座標符合64位元的資料元件。
部分地由於其能夠代表資料中之多維局部性的能力,2D、3D、4D、及/或其他多維陣列可被重新配置至相應的2D、3D、4D、及/或其他多維摩頓序表示,以協助增進某些類型應用之性能。例如,在應用程式處理資料以前,其可被重新配置於記憶體中,從2D、3D、或4D陣列至相 應的2D、3D、或4D摩頓序表示。在該應用程式已利用摩頓序而處理資料之後,於某些情況下,其可能希望將2D、3D、或4D摩頓序表示轉換回至2D、3D、或4D陣列。於其他情境中,資料可初始地被組織以2D、3D、或4D摩頓序表示,並重新配置至2D、3D、或4D陣列以增進性能,或者為了其他原因。於任何情況下,有些時候其適於轉換於摩頓序配置與多維陣列及/或多維空間之間。然而,此等轉換通常傾向於是計算上密集的(例如,通常傾向於涉及許多不同座標之交錯或去交錯)。
於其他例子中,雖然資料係依據多維摩頓序配置而被排序,但其可隨著移動在多維空間座標附近而適於移動在多維摩頓座標附近。例如,其可適於移動在一對個別地相應於具有不同座標的多維空間中之點的多維摩頓序座標之間。例如,如圖2A中所示,在參考數字203,可能希望移動自2D摩頓座標「000110」及2D摩頓座標「000011」,其個別地相應於2D陣列中之點,其中x座標從x=2至x=1被減少一,而多維空間中之所有其他座標(於此例中僅有y座標)保持相同。當作另一範例,如圖2A中所示,在參考數字205,可能希望移動自2D摩頓座標「001101」及2D摩頓座標「000111」,其個別地相應於2D陣列中之點,其中y座標從y=2至y=1被減少一,而多維空間中之所有其他座標(於此例中僅有x座標)保持相同。注意:於這兩個範例中,初始及最終2D摩頓座標在摩頓序上不是依序的(例如,其個別地從「6」改變 至「3」及「13」至「7」),雖然於其他情況下初始及最終2D摩頓座標可在摩頓序上為依序的。
有各種不同的原因,其中可能希望或適於以此方式移動在多維摩頓座標附近。本發明之範圍不限於任何已知的此類原因。代表性地,當作一可能的範例,可能希望於特定演算法中減少2D矩陣或陣列之列指標及/或行指標;減少2D影像之既定列或行中的像素數而同時處理影響,等等。於某些情況下,可能更有用的(例如,值得計算上的負擔及時間)是從多維摩頓序配置整個轉換為多維空間配置,以致不需要以此方式移動在摩頓序附近。然而,於其他情況下,可能不值得計算上的負擔及/或時間來從多維摩頓序配置整個轉換,但仍可能有用的是能夠移動在相應於多維空間中的座標之一者的差異(例如,單位一減少)之摩頓座標之間(例如,4D空間中的x、y、z、或t座標之一的減少)。
因為多維摩頓座標係藉由交錯或混洗個別多維座標之位元來形成,所以有一可能的方式將是:使用一或更多指令以將位元去交錯或去混洗為分離的多維座標;使用一或更多指令以減少多維座標之一(例如,減少x座標);及接著使用一或更多指令以再交錯或再混洗該些分離的多維座標之位元(包括已減少的x座標之那些位元)以判定新的相應多維摩頓座標。然而,此去交錯和再交錯及/或此一使用多數指令的需求可能傾向於花費較多時間及/或消耗較多處理資源及/或消耗較多功率。文中所揭露者為單 指令,其可被用以加速新的多維摩頓座標之判定,當改變(例如,減少)多維空間之座標時(例如,減少x座標、減少y座標、減少z座標、或減少t座標,等等)。
圖3為一種可操作以履行摩頓座標調整指令312之實施例的處理器310之實施例的方塊圖。於某些實施例中,處理器可為通用處理器(例如,用於桌上型電腦、筆記型電腦、或其他電腦之類型的通用微處理器或中央處理單元(CPU))。另一方面,處理器可為特殊用途處理器。適當的特殊用途處理器之範例包括(但不限定於)網路處理器、通訊處理器、密碼處理器、圖形處理器、共處理器、嵌入處理器、數位信號處理器(DSP)、及控制器(例如,微控制器)。處理器可具有多種複雜指令集計算(CISC)架構、減少指令集計算(RISC)架構、極長指令字元(VLIW)架構、併合架構、其他類型的架構之任一者,或者具有不同架構之組合(例如,不同核心可具有不同架構)。
於操作期間,處理器310可接收位摩頓座標調整指令312。例如,指令可被提取或者接收自互連上之記憶體。指令可代表巨集指令、組合語言指令、機器碼指令、或者處理器之指令集的其他指令或控制信號。
再次參考圖3,處理器包括解碼單元或解碼器314。解碼單元可接收並解碼摩頓座標調整指令。摩頓座標調整指令可為處理器之指令集的部分。解碼單元可輸出一或更多相對較低階的指令或控制信號(例如,一或更多微指 令、微運算、微碼進入點、已解碼指令或控制信號,等等),其係反應、代表、及/或衍生自相對較高階的摩頓座標調整指令。解碼單元可使用各種不同的機制來實施,包括(但不限定於)微碼唯讀記憶體(ROM)、查找表、硬體實施方式、可編程邏輯陣列(PLA)、及適於實施解碼單元之其他機制。
於某些實施例中,取代其摩頓座標調整指令被直接地提供至解碼單元,可選擇性地使用指令仿真器、翻譯器、編輯器、解譯器、或其他指令轉換模組。各種類型的指令轉換模組可被實施以軟體、硬體、韌體、或其組合。於某些實施例中,指令轉換模組可位於處理器外部,諸如(例如)於分離的晶粒上及/或於記憶體中(例如,當作靜態、動態、或運行時間仿真模組)。舉例而言,指令轉換模組可接收摩頓座標調整指令,其可屬於第一指令集;並且可仿真、翻譯、編輯、解譯、或者轉換摩頓座標調整指令為一或更多相應的中間指令或控制信號,其可屬於第二不同指令集。第二指令集之一或更多中間指令或控制信號可被提供至解碼單元,其可將其解碼為可由處理器之本機硬體(例如,一或更多執行單元)所執行的一或更多較低階指令或控制信號。
再次參考圖3,處理器亦包括一組緊縮資料暫存器318。每一緊縮資料暫存器可代表晶粒上儲存位置,其係操作以儲存緊縮資料、向量資料、或單指令多資料(SIMD)資料。於SIMD架構中,緊縮資料指令、向量 指令、或SIMD指令可同時地或平行地操作於多資料元件或者多對資料元件上。處理器可具有平行執行硬體,其係回應於緊縮資料指令以同時地或平行地履行多重操作。多資料元件可被壓縮於一暫存器或記憶體位置內而成為緊縮資料或向量資料。於緊縮資料中,暫存器或其他儲存位置之位元可被邏輯地分割為資料元件之序列。例如,256位元寬的緊縮資料暫存器可具有四個64位元寬的資料元件、八個32位元的資料元件、十六個16位元的資料元件,等等。資料元件之各者可代表資料之一分離的個別件(例如,像素顏色、座標,等等),其可被分離地及/或彼此獨立地操作。緊縮資料暫存器可代表架構上可見或者架構暫存器,其為軟體及/或編程器可見的、及/或為由處理器之指令集的指令所指示以識別運算元的暫存器。這些架構暫存器在既定的微架構上是相反於其他非架構暫存器(例如,暫時暫存器、記錄器緩衝器、退役暫存器,等等)。緊縮資料暫存器可使用已知的技術而被實施以不同方式於不同的微架構中,且不限於任何特定類型的設計。適當類型暫存器之範例包括(但不限定於)專屬實體暫存器、使用暫存器重新命名之動態配置實體暫存器、及其組合。
於某些實施例中,指令可明確地指明(例如,透過一或更多欄位或一組位元)、或者指示(例如,隱含地指示),來源緊縮資料運算元320。來源緊縮資料運算元可包括複數摩頓座標。指令亦可明確地指明(例如,透過一 或更多欄位或一組位元)、或者指示目的地儲存位置,其中結果緊縮資料運算元324將被儲存。舉例而言,指令可具有運算元指明欄位,用以指明暫存器、記憶體位置、或者其他儲存位置,針對來源緊縮資料運算元及目的地儲存位置之一或更多者。替代地,來源緊縮資料運算元及目的地儲存位置之一或更多者可選擇性地隱含該指令(例如,隱含該指令之運算碼)。當作另一選擇,用於來源緊縮資料運算元之儲存位置亦可被再使用為結果緊縮資料運算元之目的地儲存位置(例如,其可暗示該指令使用相同的儲存位置最初於來源運算元及後來於結果運算元)。如圖所示,於某些實施例中,來源緊縮資料運算元320可選擇性地被儲存於第一緊縮資料暫存器中,而結果緊縮資料運算元可選擇性地被儲存於第二緊縮資料暫存器中,雖然此非必要。替代地,記憶體位置(或其他儲存位置)可選擇性地被使用。
於某些實施例中,指令亦可指明或者指示具有其來源緊縮資料運算元之摩頓座標所被映射至之點的多維空間之維度。於某些實施例中,指令可操作以指示多維空間之維度為至少兩個不同維之任一者(例如,二維與三維之任一者);或者於某些實施例中為至少三個不同維之任一者(例如,二維、三維、及四維之任一者)。於某些實施例中,指令可具有用以指示維度之一即刻(例如,1位元可指示至少兩個不同維度之任一者、或者2位元可指示至少三個或至少四個不同維度之任一者)。替代地,指令(例 如,運算碼)可專用於既定的維度而該指令(例如,該運算碼)可隱含地指示該維度。例如,一指令集可包括具有用於不同維度(例如,二維、三維、四維,等等)之不同運算碼的不同指令。
於某些實施例中,指令亦可指明或者指示多維空間之既定維。既定維可代表其中將有座標位置之固定改變的維,諸如(例如)於既定維中之座標單位減少。例如,2D、3D、或4D空間或座標系統之x座標(或y座標)可被減少一。於某些實施例中,指令可具有一或更多位元(例如,即刻)以指示該既定維。例如,於2D空間中,1位元可被用以指示該既定維為兩個維之任一者。當作另一範例,於3D或4D空間中,2位元可被用以指示該維為兩個或三個個別維之任一者。
再次參考圖3,執行單元316與解碼單元314及緊縮資料暫存器318耦合。執行單元可接收一或更多已解碼或者已轉換指令或控制信號,其係代表及/或衍生自摩頓座標調整指令312。執行單元亦可接收來源緊縮資料運算元320,其係包括摩頓座標。執行單元可操作以回應於該指令及/或當作該指令之結果(例如,回應於從該指令所解碼之一或更多指令或控制信號)來將結果緊縮資料運算元324儲存於該指令所指示之目的地儲存位置中。結果緊縮資料運算元可包括複數摩頓座標,其各相應於來源緊縮資料運算元之摩頓座標的不同一者。於某些實施例中,結果緊縮資料運算元之摩頓座標可被映射至多維空間中的點, 該些點與來源緊縮資料運算元之相應摩頓座標所被映射至的點不同以該指令所指示之既定維中的固定改變。於某些實施例中,該固定改變可為既定維中之座標中的單位減量(例如,該些點之x座標可被減少一(例如,從x=7至x=6))。於某些實施例中,結果緊縮資料運算元之摩頓座標可被產生而無須將其相應於不同維之來源緊縮資料運算元的相應摩頓座標之位元去交錯(例如,無須將其相應於x和y維;或x、y、和z維之不同的已交錯位元去交錯)。亦即,既定座標可在原處或在定位被減少,當於摩頓座標中時。於某些實施例中,結果緊縮資料運算元中之至少一摩頓座標可不在其具有來源緊縮資料運算元之相應摩頓座標的連續摩頓序中(例如,於圖2A中,變遷可從相對位置13上之摩頓座標至相對位置7上之摩頓座標,如參考205上所示者)。於某些實施例中,結果可為針對圖5-7所顯示及描述的那些之任一者,雖然本發明之範圍未如此限制。
執行單元及/或處理器可包括特定或特別邏輯(例如,電晶體、積體電路、或潛在地與韌體(例如,非揮發性記憶體中所儲存之指令)及/或軟體結合之其他硬體),其可操作以履行摩頓座標調整指令及/或回應於及/或由於摩頓座標調整指令來儲存結果(例如,回應於從摩頓座標調整指令所解碼之一或更多指令或控制信號)。舉例而言,執行單元可包括邏輯單元、算術邏輯單元,等等。於某些實施例中,執行單元可利用一或更多遮罩、一 或更多移位電路、及一或更多邏輯電路(例如,AND、NOT,等等)以履行該指令。替代地,本技術中已知的其他位元調處電路可選擇性地被使用。
為了避免妨礙說明,已顯示及描述一相對簡單的處理器310。然而,處理器可選擇性地包括其他組件。此等組件之可能範例包括(但不限定於)針對圖9之任一者及/或圖16-19之任一者所顯示及描述的組件。各個不同實施例可包括此等組件之各個不同的組合及組態。此等組件可被彼此耦合以容許該些組件依據其操作而操作。於某些實施例中,所有組件可被包括於處理器之至少一核心、某些核心、核心的子集、或所有核心中。於各個實施例中,處理器可具有至少一、二、四、八、十六、三十二、或更多核心。
圖4為一種履行摩頓座標調整指令之實施例的方法430的實施例之方塊流程圖。於各個實施例中,該方法可由處理器、指令處理設備、或其他數位邏輯裝置來履行。於某些實施例中,圖4之方法可由圖3之處理器所履行及/或被履行於圖3之處理器內。針對圖3之處理器之文中所述的組件、特徵、及特定選擇性細節亦選擇性地適用於圖4之方法。替代地,圖4之方法可由類似或不同的處理器或設備所履行及/或被履行於類似或不同的處理器或設備內。此外,圖3之處理器可履行相同於、類似於、或不同於圖4之那些的方法。
方法包括接收摩頓座標調整指令,於區塊432。於各 個形態中,指令可被接收於處理器或其一部分上(例如,指令提取單元、解碼單元、匯流排介面單元,等等)。於各個形態中,指令可被接收自處理器外及/或晶粒外來源(例如,自記憶體、互連,等等),或者自處理器上及/或晶粒上來源(例如,自指令快取、指令佇列,等等)。該指令可指明或者指示一包括複數摩頓座標之來源緊縮資料運算元;可指明或者指示一具有該些摩頓座標所被映射至之點的多維空間之維度;可指明或者指示該多維空間之既定維;以及可指明或者指示目的地儲存位置。
結果緊縮資料運算元可回應於及/或由於該指令的結果(例如,回應於履行該指令)而被儲存在目的地儲存位置中,於區塊434。於某些實施例中,結果緊縮資料運算元可包括複數摩頓座標,其各相應於來源緊縮資料運算元之摩頓座標的不同一者(例如,於來源及結果運算元內之相同位元位置或相對位置中)。於某些實施例中,結果緊縮資料運算元之摩頓座標可被映射至多維空間中的點,該些點可與來源緊縮資料運算元之相應摩頓座標所被映射至的點不同以該指令所指示之既定維中的固定改變。
於某些實施例中,該固定改變可為單位減量(例如,該些點之x座標可被減少一)。於某些實施例中,指令可操作以指示多維空間之維度為至少兩個不同維之任一者(例如,二維及三維);或者於某些實施例中為至少三個不同維之任一者(例如,二維、三維、及四維)。於某些實施例中,指令可具有用以指示維度之一即刻(例如,1 位元可指示至少兩個不同維度之任一者、或者2位元可指示至少三個不同維度之任一者)。於某些實施例中,指令可具有一或更多位元(例如,即刻)以指示既定維(例如,為各個實施例中之至少二、三、或四個不同可能維的任一者)。於某些實施例中,結果緊縮資料運算元之摩頓座標可被產生而無須將其相應於不同維之來源緊縮資料運算元的相應摩頓座標之位元去交錯(例如,無須將其相應於x和y維;或x、y、和z維之不同的已交錯位元去交錯)。於某些實施例中,來源緊縮資料運算元及一或更多結果緊縮資料運算元可為圖5-7之那些的任一者,雖然本發明之範圍未如此限制。
所闡明之方法涉及架構操作(例如,從軟體觀點之那些可見者)。於其他實施例中,該方法可選擇性地包括一或更多微架構操作。舉例而言,指令可被預提取、儲存於指令快取中、由指令提取單元所提取、解碼、排程;來源運算元可被存取、相對於其他指令而失序地執行;執行單元可履行微架構操作以實施指令,等等。
圖5為調整來源3D摩頓座標508至結果/已調整3D摩頓座標508*來反映既定的或指示的維減去一之範例實施例的方塊圖。來源3D摩頓座標具有9位元,其3位元係用於x、y、及z座標之各者。如文中所使用,x、y、及z被廣泛地用以代表任何想要的座標或維。其不限於任何已知的量,諸如熟悉的笛卡爾座標系統中之空間座標;而是可用於任何想要的量,包括潛在地空間、時間、壓 力、溫度、強度、電壓,等等。明確地,位元0中之x1、位元3中之x2、及位元6中之x3係相應於x座標或維。同樣地,位元1中之y1、位元4中之y2、及位元7中之y3係相應於y維。類似地,位元2中之z1、位元5中之z2、及位元8中之z3係相應於z維。其他的實施例可使用位元之其他數字以代表座標。例如,假如3D摩頓座標將被含入32位元的資料元件中,則可使用從7位元至10位元。當作另一範例,假如3D摩頓座標將被含入64位元的資料元件中,則可使用從7位元至21位元或從12位元至21位元。
於所示的實施例中,z維被減少。於其他實施例中,取而代之,x維、或y維之任一者可被減少。因為z維被減少,所以僅有相應於z維之來源摩頓座標的位元可能需要被調整以達成z維之減少。y維及z維之位元維持不變。
於某些實施例中,如參考540所示,為了調整摩頓座標以考量減少該既定或指示維(例如,於此情況下之z維),可設定相應於該既定或指示維之所有最低有效歸零位元(意即,其為二元零之那些),其係較相應於該既定或指示維之最低有效設定位元更不有效。換言之,那些後續的歸零位元可從最初為二元零被改變至為二元一。此外,如參考542所示,相應於該既定或指示維之該最低有效設定位元可被清除或歸零(意即,從最初為二元零改變至為二元一)。如此有效地調整摩頓座標以反映該既定或 指示維被減少一。
考量圖示中所示之特定範例位元值,於來源3D摩頓座標508中,位元8中之z3是z維中之最低有效設定位元,因為位元5中之z2及位元2中之z1均被清除或歸零。因此,如由參考542所示,以及藉由結果/已調整3D摩頓座標508*之位元8,z3可被清除或歸零。此外,如由參考540所示,以及藉由結果/已調整3D摩頓座標508*之位元5及位元2,z2及z1兩者可被設定為二元一。此僅為一說明性範例,但類似的改變可被用於其他位元串並代表其他維(例如,x或y維)中之減量。
注意:摩頓座標可被調整或改變而無須去交錯、改變、及再交錯各個不同維或座標之位元。反之,該些位元在原處或在定位被調處於摩頓座標內。有利地,此可協助減少計算之量及/或所需的指令及/或功率耗損。
圖6為方塊圖,其闡明2D摩頓座標調整操作650之範例實施例,用以將來源緊縮資料運算元620中之2D摩頓座標調整為結果緊縮資料運算元中之相應的2D摩頓座標來反映既定的指示維之減少。該操作可被履行以回應於摩頓座標調整指令之範例實施例。
該指令可指明或者指示來源緊縮資料運算元620。來源緊縮資料運算元具有複數2D摩頓座標(m)。於特定所示的實施例中,來源緊縮資料運算元具有數目N的2D摩頓座標,標示為m1至mN。通常,摩頓座標之各者可被儲存於來源緊縮資料運算元之不同資料元件中。於各個實 施例中,來源緊縮資料運算元之寬度可為64位元、128位元、256位元、512位元、或1024位元,雖然本發明之範圍未如此限制。於各個實施例中,來源緊縮資料運算元之資料元件可為32位元資料元件或64位元資料元件,雖然本發明之範圍未如此限制。來源緊縮資料運算元中之資料元件及/或摩頓座標的數目可為來源緊縮資料運算元之位元中的寬度除以每一資料元件之位元中的寬度。於各個實施例中,可能有至少兩個、至少四個、至少八個、至少十六個、至少三十二個、或多於三十二個資料元件及/或摩頓座標,於來源緊縮資料運算元中。
於闡述中,顯示6位元2D摩頓座標之範例值。明確地,m1具有值「000100」之6位元2D摩頓座標,m2具有值「000110」之6位元2D摩頓座標,m3具有值「001100」之6位元2D摩頓座標,及mN具有值「001110」之6位元2D摩頓座標。這些值之各者被寫入以格式「y3x3y2x2y1x1」,其中最低有效位元在右邊,且其中x維之最低有效位元是右邊的第一位元。
於某些實施例中,指令亦可指明或者指示具有其來源緊縮資料運算元之摩頓座標所被映射至之點的多維空間之維度646。於此範例中,指令係指示二維(2D)之維度。換言之,來源緊縮資料運算元之2D摩頓座標被映射至2D空間中的點。其他實施例可指示其他的維度(例如,3D、4D,等等)。於各個實施例中,維度可由指令的彈性欄位或位元所彈性地指示或指明,或者可隱含指令(例如,隱 含運算碼)。
於某些實施例中,指令亦可指明或者指示其將被減少或改變的既定維648。於此範例中,指令指示其x維將被減少一。於替代範例中,指令可替代地指示其y維將被減少一。
結果緊縮資料運算元624可回應於該指令而被產生(例如,藉由執行單元616)並儲存。結果緊縮資料運算元可被儲存在其由該指令所指明或者指示之目的地儲存位置中。於各個實施例中,目的地儲存位置可為緊縮資料暫存器、記憶體位置、或其他儲存位置。
來源緊縮資料運算元可包括複數已調整2D摩頓座標(m*)。於特別所示的實施例中,來源緊縮資料運算元具有數目N的已調整2D摩頓座標,標示為m1*至mN*。結果緊縮資料運算元之已調整2D摩頓座標(m*)的各者係相應於來源緊縮資料運算元之2D摩頓座標(m)的不同一者(例如,於該些運算元內之相應的位元位置及/或相對位置中)。於某些實施例中,結果緊縮資料運算元之已調整2D摩頓座標(m*)可被映射至多維空間中的點,該些點與來源緊縮資料運算元之相應2D摩頓座標(m)所將被映射至的點係不同以該指令所指示之既定維(例如,x維)中的固定改變(例如,減少一)。
如先前所述,於某些實施例中,為了調整摩頓座標以考量減少該既定或指示維(例如,於此情況下之x維),可設定相應於該既定或指示維之所有最低有效歸零位元 (意即,其為二元零之那些),其係較相應於該既定或指示維之最低有效設定位元更不有效。換言之,那些後續的歸零位元可從最初為二元零被改變至為二元一。此外,相應於該既定或指示維之該最低有效設定位元可被清除或歸零(意即,從最初為二元一改變至為二元零)。如此有效地調整2D摩頓座標以反映該既定或指示維被減少一。
於闡述中,顯示6位元2D摩頓座標(m*)之相應範例值。明確地,m1*具有值「000001」之6位元2D摩頓座標,m2*具有值「000011」之6位元2D摩頓座標,m3*具有值「001001」之6位元2D摩頓座標,及mN*具有值「001011」之6位元2D摩頓座標。這些值僅為範例,但闡明了相應於既定指示維(例如,於此範例中之x維)之位元可如何被選擇性地調整而同時將相應於其他未減少的維之位元保持為相同。
圖7為方塊圖,其闡明3D摩頓座標調整操作752之範例實施例,用以將來源緊縮資料運算元720中之3D摩頓座標(m)調整為結果緊縮資料運算元中之相應的3D摩頓座標來反映既定的指示維之減少。該操作可被履行以回應於摩頓座標調整指令之範例實施例。
圖7之操作具有與圖6之操作的某些類似性,而主要地不同在於其座標為3D以取代2D。為了避免混淆說明,將主要地描述針對圖7之操作的不同及/或額外特性,而不重複相對於圖6之操作的選擇性類似或共同特性。然而,應理解:圖6之操作的前述特性及細節(包括變化及 替代物)亦可選擇性地應用於圖7之操作,除非另有聲明或另為清楚明白者。
如同先前,該指令可指明或者指示來源緊縮資料運算元720。來源緊縮資料運算元具有複數3D摩頓座標(m)。除了具有3D以取代2D摩頓座標之外,來源緊縮資料運算元可類似於或相同於圖6之來源緊縮資料運算元。於闡述中,顯示9位元3D摩頓座標之範例值。明確地m1具有值「000101000」之9位元3D摩頓座標,而mN具有值「100111010」之9位元3D摩頓座標。如同先前,這些值之各者被寫入以「y3x3y2x2y1x1」之格式。
於某些實施例中,指令亦可指明或者指示具有其來源緊縮資料運算元之摩頓座標所被映射至之點的多維空間之維度746。於此範例中,指令係指示三維(3D)之維度。換言之,來源緊縮資料運算元之3D摩頓座標被映射至3D空間中的點(例如,3D笛卡爾座標系統及/或3D歐幾里德空間)。其他實施例可指示其他的維度(例如,2D、4D、5D,等等)。於各個實施例中,維度可由指令的彈性欄位或位元所彈性地指示或指明,或者可隱含指令(例如,隱含運算碼)。
於某些實施例中,指令亦可指明或者指示其將被減少或改變的既定維748。於此範例中,指令指示其x維將被減少一。於替代範例中,指令可替代地指示其y維將被減少一。
結果緊縮資料運算元724可回應於該指令而被產生 (例如,藉由執行單元716)並儲存。結果緊縮資料運算元可包括複數已調整3D摩頓座標m1*至mN*,其各相應於來源緊縮資料運算元之3D摩頓座標(m)的不同一者。於某些實施例中,結果緊縮資料運算元之已調整3D摩頓座標(m*)可被映射至多維空間中的點,該些點與來源緊縮資料運算元之相應3D摩頓座標(m)所將被映射至的點係不同以該既定的指示維(例如,x維)中的固定改變(例如,減少一)。
摩頓座標可被調整如先前所述。於闡述中,顯示9位元3D摩頓座標(m*)之相應範例值。明確地m1*具有值「000100001」之9位元2D摩頓座標,而mN*具有值「100110011」之9位元3D摩頓座標。這些值僅為範例,但闡明了相應於既定指示維(例如,於此範例中之x維)之位元可如何被選擇性地調整而同時將相應於其他未減少的維之位元保持為相同。
以下顯示用以實施稱為zorderprev之摩頓座標調整指令的實施例之虛擬碼的一可能範例。於某些實施例中,執行單元之硬體或邏輯可被設計成使用偏移邏輯、遮蔽邏輯、及用以實施類似於或相同於虛擬碼中所顯示的那些之邏輯操作(例如,AND、NOT,等等)的邏輯來實施該指令。替代地,那些熟悉此技藝人士將理解根據本發明以實施該指令之其他設計。
圖8為適於摩頓座標調整指令之一或更多實施例的即刻(854)之特定範例實施例的方塊圖。即刻之一或更多位元可代表維度指明符846。例如,於圖示中,即刻之兩位元(例如,位元[1:0])可代表維度指明符846。維度指明符可指明具有其與該指令相關之摩頓座標所被映射至的點之多維空間的維度。於一實施例中,這兩個位元具有第一二元值(例如,「10」)以指明或指示2D之維度、第二不同的二元值(例如,「11」)以指明或指示3D之維度。於某些實施例中,這兩個位元可選擇性地具有第三又不同的二元值(例如,「00」)以指明或指示4D。於某些實施例中,這兩個位元可選擇性地具有第四又不同的二元值(例如,「01」)以指明或指示又不同的維度(例如,5D)。於其他實施例中,指令可操作以容許僅一個維度、或者僅兩個不同的維度。多維空間之這些不同維度亦可被視為摩頓座標之維度(例如,無論摩頓座標為2D、3D、4D,等等)。
即刻之一或更多位元可代表維指明符848。例如,於圖示中,即刻之兩位元(例如,位元[3:2])可代表維指明 符848。維指明符可指明或指示一將被改變(例如,減少)之維。於一實施例中,這兩個位元可具有第一二元值(例如,「00」)以指明或指示第一維(例如,x維),可具有第二不同的二元值(例如,「01」)以指明或指示第二維(例如,y維),以及可具有第三又不同的二元值(例如,「10」)以指明或指示第三維(例如,z維)。另一方面,假如該指令僅支援兩不同的維,則單一位元可選擇性地被用以指示這兩個不同維之任一者。於某些實施例中(例如,於4D之情況下),這兩個位元可具有第四又不同的二元值(例如,「11」)以指明或指示第四維(例如,t維)。
例示的即刻為8位元即刻,雖然本發明之範圍未如此限制。替代實施例可使用2位元、4位元、6位元、16位元、或其他即刻。於其他實施例中,更少或更多的位元可被用於維度指明符及/或維指明符之各者。再者,那些所顯示者以外的不同位元可選擇性地被使用。
圖9為一種可操作以履行摩頓座標調整指令之實施例的適當處理器之更詳細範例實施例的方塊圖。處理器包括核心980。處理器可選擇性地具有多核心(例如,至少二、至少四、至少八、至少三十,等等)。於某些情況下,所有核心可相同於所示之核心;或者於其他情況下,某些核心可為不同的(例如,具有不同的組件或指令集)。於某些情況下,所有核心可得以執行如文中所討論之摩頓座標調整指令;或者於其他情況下,僅某些核心可 以。核心980包括分支預測單元981以預測分支程式流。分支預測單元與指令預提取單元982耦合。指令預提取單元可預提取或者接收指令,包括摩頓座標調整指令,從通過與其耦合之記憶體單元989的外部記憶體。第1階(L1)指令快取與指令預提取單元耦合。L1指令快取可快取或者儲存已預提取的或者已接收的指令,包括摩頓座標調整指令。指令提取單元984與L1指令快取及解碼單元914耦合。指令快取單元可提取或者接收指令(包括摩頓座標調整指令)自L1指令快取;並提供指令(包括摩頓座標調整指令)至解碼單元。解碼單元可相同於(或類似於)文中所述之其他解碼單元。
處理器包括一或更多暫存器檔單元918。通常,暫存器檔單元可包括各種不同類型的暫存器,諸如(例如)緊縮資料暫存器、通用暫存器、狀態或旗標暫存器、控制或組態暫存器,等等。於一使用失序(OOO)執行之實施例中,處理器亦可選擇性地包括暫存器重新命名及/或配置器單元,其係與暫存器檔單元耦合以配置資源並履行暫存器重新命名於暫存器上(例如,與摩頓座標調整指令相關的緊縮資料暫存器)。同時,於OOO執行之情況下,處理器可選擇性地包括一或更多與解碼單元耦合的排程器單元986、重新命名/配置單元、及一或更多執行單元916。排程器單元可排程執行單元上之操作。執行單元之至少一者可相同於(或類似於)文中所述之其他執行單元。通常,處理器可選擇性地具有多種不同類型的執行單元,諸 如(例如)整數執行單元、浮點執行單元、向量執行單元、一或更多記憶體存取單元987或匯流排介面單元,等等。於一使用失序(OOO)執行之實施例中,處理器亦可選擇性地包括撤回或確認單元991,其係與暫存器檔單元及重新命名/配置器單元985耦合以撤回或確認指令。處理器可包括L1資料快取單元974,用以快取或者儲存資料,其包括針對包括摩頓座標調整指令之指令的資料元件及/或運算元。第2階(L2)快取單元990可選擇性地被包括並可選擇性地被多核心所共享。L2快取單元可儲存資料及包括摩頓座標調整指令之指令。處理器亦可選擇性地包括一或更多變換後備緩衝(未顯示)以快取位址變換資料。於一使用失序(OOO)執行之實施例中,處理器亦可選擇性地包括用以記錄執行結果之記錄器緩衝器(未顯示)及/或一或更多保留站(未顯示)。處理器之各個實施例可包括一些或所有這些組件之各種不同的組合及組態。實施例不限於任何已知的此組合或組態。
圖10為一種摩頓座標調整指令1012之實施例的方塊圖。該指令包括操作碼或運算碼1080。運算碼可代表複數位元或者一或更多欄位,其可操作以識別待履行之指令及/或操作(例如,根據多維空間或多維座標系統中之既定座標的單元減量以調整摩頓座標)。
該指令亦包括來源運算元指明符1082,用以明確地指明暫存器、記憶體位置、或其他用以儲存來源緊縮資料運算元之儲存位置。該指令亦包括選擇性的目的地儲存位 置指明符1084,用以明確地指明目的地暫存器、或其他用以儲存來源緊縮資料運算元之目的地儲存位置。舉例而言,這些指明符之每一者可包括一組位元或者一或更多欄位,用以明確地指明暫存器、記憶體位置、或其他儲存位置之位址。另一方面,取代具有針對每一這些儲存位置之明確指明符的指令,該指令可選擇性地具有針對來源運算元及目的地儲存位置之一或更多者的一或更多隱含儲存位置(例如,隱含指令之運算碼)。例如,其可隱含針對來源運算元與目的地儲存位置之一使用一既定固定暫存器之指令的運算碼,以致該既定固定暫存器無須被明確地指明。舉另一範例,其可隱含針對來源運算元及當作用以儲存結果緊縮資料運算元之目的地儲存位置(例如,隱含來源/目的地暫存器)兩者再使用相同暫存器或其他儲存位置(例如,明確地由該指令指明一次)。
於某些實施例中,該指令可選擇性地包括座標指明符1086。座標指明符可指明將被減量或減少之2D、3D、4D、或其他多維空間的特定座標。例如,座標指明符可指明其x座標將被減少、或其y座標將被減少。於某些實施例中,該指令可選擇性地包括維度指明符1088。維度指明符可指明摩頓曲線或座標之維度(例如,無論來源緊縮資料運算元中之摩頓座標為2D、3D、4D、或其他多維摩頓座標)。於某些實施例中,座標指明符1086及維度指明符1088可選擇性地被包括於指令之即刻中(例如,4位元、6位元、或8位元即刻)。替代地,其一或更多者 可為指令之其他非即刻位元。於又另一替代實施例中,座標及/或維度之一或更多者可選擇性地針對該指令而被固定(例如,針對運算碼而固定)。例如,一指令(例如,一運算碼)可被提供給一維度(例如,2D)、另一指令(例如,另一運算碼)可被提供給另一維度(例如,3D),依此類推。當作另一範例,一指令(例如,一運算碼)可被提供給一座標(例如,x座標)、另一指令(例如,另一運算碼)可被提供給另一座標(例如,y座標),依此類推。
應理解:此僅為適當指令之一說明性範例。替代實施例可包括闡明的欄位/指明符之子集;可加入額外的欄位/指明符;可重疊某些欄位/指明符,等等。例如,指令可選擇性地具有其他欄位或位元,諸如(例如)用以指示32位元或64位元執行狀態或模式的位元。此外,欄位/指明符之闡明的順序及配置不是必要的。欄位/指明符可被多樣地重新配置。此外,欄位/指明符無須包括位元之相連續列,而可包括非相連或分離的位元。於某些實施例中,指令格式可具有如文中別處所揭露的VEX或EVEX編碼或指令格式及屬性,雖然本發明之範圍不限於此。對於VEX及EVEX編碼及格式之進一步細節被進一步討論於下。
指令集包括一或更多指令格式。既定指令格式係界定各種欄位(位元之數目、位元之位置)以指明(除了別的以外)待履行操作(運算碼)以及將於其上履行操作之運 算元。一些指令格式係透過指令模板(或子格式)之定義而被進一步分解。例如,既定指令格式之指令模板可被定義以具有指令格式之欄位的不同子集(所包括的欄位通常係以相同順序,但至少某些具有不同的位元位置,因為包括了較少的欄位)及/或被定義以具有不同地解讀之既定欄位。因此,ISA之各指令係使用既定指令格式(以及,假如被定義的話,以該指令格式之指令模板的既定一者)而被表達,並包括用以指明操作及運算元之欄位。例如,範例ADD指令具有特定運算碼及一指令格式,其包括用以指明該運算碼之運算碼欄位及用以選擇運算元(來源1/目的地及來源2)之運算元欄位;而於一指令串中之此ADD指令的發生將具有特定內容於其選擇特定運算元之運算元欄位中。被稱為先進向量延伸(AVX)(AVX1及AVX2)並使用向量延伸(VEX)編碼技術之一組SIMD延伸已被釋出及/或出版(例如,參見Intel® 64及IA-32架構軟體開發商手冊,2011年十月;及參見Intel®先見向量延伸編程參考,2011年六月)。
範例指令格式
文中所述之指令的實施例可被實施以不同的格式。此外,範例系統、架構、及管線被詳述於下。指令之實施例可被執行於此等系統、架構、及管線上,但不限定於那些細節。
VEX指令格式
VEX編碼容許指令具有大於兩個運算元,並容許SIMD向量暫存器長於128位元。VEX前綴之使用提供三運算元(或更多)的語法。例如,前兩個運算元指令係履行諸如A=A+B等操作,其係覆寫來源運算元。VEX前綴之使用係致能運算元履行非破壞性操作,諸如A=B+C。
圖11A闡明範例AVX指令格式,包括VEX前綴1102、真實運算碼欄位1130、Mod R/M位元組1140、SIB位元組1150、置換欄位1162、及IMM8 1172。圖11B闡明其來自圖11A之哪些欄位組成全運算碼欄位1174及基礎操作欄位1142。圖11C闡明其來自圖11A之哪些欄位組成暫存器指標欄位1144。
VEX前綴(位元組0-2)1102被編碼以三位元組形式。第一位元組為格式欄位1140(VEX位元組0,位元[7:0]),其含有明確的C4位元組值(用於分辨C4指令格式之獨特值)。第二-第三位元組(VEX位元組1-2)包括數個提供特定能力之位元欄位。明確地,REX欄位1105(VEX位元組1,位元[7-5])係包括:VEX.R位元欄位(VEX位元組1,位元[7]-R)、VEX.X位元欄位(VEX位元組1,位元[6]-X)、及VEX.B位元欄位(VEX位元組1,位元[5]-B)。指令之其他欄位編碼該些暫存器指標之較低三位元如本技術中所已知者(rrr、xxx、及bbb),以致Rrrr、Xxxx、及Bbbb可藉由加入 VEX.R、VEX.X、及VEX.B而被形成。運算碼映圖欄位1115(VEX位元組1,位元[4:0]-mmmmm)包括用以編碼一暗示的領先運算碼位元組之內容。W欄位1164(VEX位元組2,位元[7]-W)-由記號VEX.W所表示,並提供根據指令之不同功能。VEX.vvvv 1120(VEX位元組2,位元[6:3]-vvvv)之角色可包括以下:1)VEX.vvvv編碼其以反轉(1之補數)形式所指明的第一來源暫存器運算元且針對具有2或更多來源運算元為有效的;2)VEX.vvvv針對某些向量位移編碼其以1之補數形式所指明的目的地暫存器運算元;或3)VEX.vvvv未編碼任何運算元,該欄位被保留且應含有1111b。假如VEX.L 1168大小欄位(VEX位元組2,位元[2]-L)=0,則其指示128位元向量;假如VEX.L=1,則其指示256位元向量。前綴編碼欄位125(VEX位元組2,位元[1:0]-pp)提供額外位元給基礎操作欄位。
真實運算碼欄位1130(位元組3)亦已知為運算碼位元組。運算碼之部分被指明於此欄位。
MOD R/M欄位1140(位元組4)包括MOD欄位1142(位元[7-6])、Reg欄位1144(位元[5-3])、及R/M欄位1146(位元[2-0])。Reg欄位1144之角色可包括以下:編碼目的地暫存器運算元或來源暫存器運算元(Rrrr之rrr);或者被視為運算碼延伸而不被用以編碼任何指令運算元。R/M欄位1146之角色可包括以下:編碼其參考記憶體位址之指令運算元;或者編碼目的地暫存 器運算元或來源暫存器運算元。
比例、指標、基礎(SIB)-比例欄位1150(位元組5)之內容包括SS1152(位元[7-6]),其係用於記憶體位址產生。SIB.xxx 1154(位元[5-3])及SIB.bbb 1156(位元[2-0])之內容先前已針對暫存器指標Xxxx及Bbbb而被參考。
置換欄位1162和即刻欄位(IMM8)1172含有位址資料。
一般性向量友善指令格式
向量友善指令格式是一種適於向量指令之指令格式(例如,有向量操作特定的某些欄位)。雖然實施例係描述其中向量和純量操作兩者均透過向量友善指令格式而被支援,但替代實施例僅使用具有向量友善指令格式之向量操作。
圖12A-12B為闡明一般性向量友善指令格式及其指令模板的方塊圖,依據本發明之實施例。圖12A為闡明一般性向量友善指令格式及其類別A指令模板的方塊圖,依據本發明之實施例;而圖12B為闡明一般性向量友善指令格式及其類別B指令模板的方塊圖,依據本發明之實施例。明確地,針對一般性向量友善指令格式1200係定義類別A及類別B指令模板,其兩者均包括無記憶體存取1205指令模板及記憶體存取1220指令模板。於向量友善指令格式之背景下術語「一般性」指的是不與任何特定指令集 連結的指令格式。
雖然本發明之實施例將描述其中向量友善指令格式支援以下:具有32位元(4位元組)或64位元(8位元組)資料元件寬度(或大小)之64位元組向量運算元長度(或大小)(而因此,64位元組向量係由16雙字元大小的元件、或替代地8四字元大小的元件所組成);具有16位元(2位元組)或8位元(1位元組)資料元件寬度(或大小)之64位元組向量運算元長度(或大小);具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)、或8位元(1位元組)資料元件寬度(或大小)之32位元組向量運算元長度(或大小);及具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)、或8位元(1位元組)資料元件寬度(或大小)之16位元組向量運算元長度(或大小);但是替代實施例可支援具有更大、更小、或不同資料元件寬度(例如,128位元(16位元組)資料元件寬度)之更大、更小及/或不同的向量運算元大小(例如,256位元組向量運算元)。
圖12A中之類別A指令模板包括:1)於無記憶體存取1205指令模板內,顯示有無記憶體存取、全捨入控制類型操作1210指令模板及無記憶體存取、資料變換類型操作1215指令模板;以及2)於記憶體存取1220指令模板內,顯示有記憶體存取、暫時1225指令模板及記憶體存取、非暫時1230指令模板。圖12B中之類別B指令模 板包括:1)於無記憶體存取1205指令模板內,顯示有無記憶體存取、寫入遮蔽控制、部分捨入控制類型操作1212指令模板及無記憶體存取、寫入遮蔽控制、v大小類型操作1217指令模板;以及2)於記憶體存取1220指令模板內,顯示有記憶體存取、寫入遮蔽控制1227指令模板。
一般性向量友善指令格式1200包括以下欄位,依圖12A-12B中所示之順序列出如下。
格式欄位1240-此欄位中之一特定值(指令格式識別符值)係獨特地識別向量友善指令格式、以及因此在指令串中之向量友善指令格式的指令之發生。如此一來,此欄位是選擇性的,因為針對一僅具有一般性向量友善指令格式之指令集而言此欄位是不需要的。
基礎操作欄位1242-其內容係分辨不同的基礎操作。
暫存器指標欄位1244-其內容(直接地或透過位址產生)係指明來源及目的地運算元之位置,假設其係於暫存器中或記憶體中。這些包括足夠數目的位元以從PxQ(例如,32x512,16x128,32x1024,64x1024)暫存器檔選擇N暫存器。雖然於一實施例中N可高達三個來源及一個目的地暫存器,但是替代實施例可支援更多或更少的來源及目的地暫存器(例如,可支援高達兩個來源,其中這些來源之一亦作用為目的地;可支援高達三個來源,其中這些來源之一亦作用為目的地;可支援高達兩個來源及一 個目的地)。
修飾符欄位1246-其內容係從不指明記憶體存取之那些指令分辨出其指明記憶體存取之一般性向量指令格式的指令之發生,亦即,介於無記憶體存取1205指令模板與記憶體存取1220指令模板之間。記憶體存取操作係讀取及/或寫入至記憶體階層(於使用暫存器中之值以指明來源及/或目的地位址之某些情況下),而非記憶體存取操作則不會(例如,來源及目的地為暫存器)。雖然於一實施例中此欄位亦於三個不同方式之間選擇以履行記憶體位址計算,但是替代實施例可支援更多、更少、或不同方式以履行記憶體位址計算。
擴增操作欄位1250-其內容係分辨多種不同操作之哪一個將被履行,除了基礎操作之外。此欄位是背景特定的。於本發明之一實施例中,此欄位被劃分為類別欄位1268、α欄位1252、及β欄位1254。擴增操作欄位1250容許操作之共同群組將被履行以單指令而非2、3、或4指令。
比例欄位1260-其內容容許指標欄位之內容的定標,以供記憶體位址產生(例如,以供其使用2scale *指標+基礎之位址產生)。
置換欄位1262A-其內容被使用為記憶體位址產生之部分(例如,以供其使用2scale *指標+基礎+置換之位址產生)。
置換因數欄位1262B(注意:直接在置換因數欄位 1262B上方之置換欄位1262A的並列指示一者或另一者被使用)-其內容被使用為位址產生之部分;其指明將被記憶體存取之大小(N)所定標的置換因數-其中N為記憶體存取中之位元組數目(例如,以供其使用2scale *指標+基礎+定標置換之位址產生)。冗餘低階位元被忽略而因此,置換因數欄位之內容被乘以記憶體運算元總大小(N)來產生最終置換以供使用於計算有效位址。N之值係在運作時間由處理器硬體所判定,根據全運算碼欄位1274(稍後描述於文中)及資料調處欄位1254C。置換欄位1262A及置換因數欄位1262B是選擇性的,因為其未被使用於無記憶體存取1205指令模板及/或不同的實施例可實施該兩欄位之僅一者或者無任何。
資料元件寬度欄位1264-其內容係分辨數個資料元件之哪一個將被使用(於針對所有指令之某些實施例中;於針對僅某些指令之其他實施例中)。此欄位是選擇性的,在於其假如僅有一資料元件寬度被支援及/或資料元件寬度係使用運算碼之某形態而被支援則此欄位是不需要的。
寫入遮蔽欄位1270-其內容係根據每資料元件位置以控制其目的地向量運算元中之資料元件位置是否反映基礎操作及擴增操作之結果。類別A指令模板支援合併-寫入遮蔽,而類別B指令模板支援合併-及歸零-寫入遮蔽兩者。當合併時,向量遮蔽容許目的地中之任何組的元件被保護自任何操作之執行期間(由基礎操作及擴增操作所指 明)的更新;於另一實施例中,保留其中相應遮蔽位元具有0之目的地的各元件之舊值。反之,當歸零時,向量遮蔽容許目的地中之任何組的元件被歸零於任何操作之執行期間(由基礎操作及擴增操作所指明);於一實施例中,當相應遮蔽位元具有0值時則目的地之一元件被設為0。此功能之子集是其控制被履行之操作的向量長度(亦即,被修飾之元件的範圍,從第一者至最後者)的能力;然而,其被修飾之元件不需要是連續的。因此,寫入遮蔽欄位1270容許部分向量操作,包括載入、儲存、運算、邏輯,等等。雖然本發明之實施例係描述其中寫入遮蔽欄位1270之內容選擇其含有待使用之寫入遮蔽的數個寫入遮蔽暫存器之一(而因此寫入遮蔽欄位1270之內容間接地識別其遮蔽將被履行),但是替代實施例取代地或者額外地容許寫入遮蔽欄位1270之內容直接地指明其遮蔽將被履行。
即刻欄位1272-其內容容許即刻之指明。此欄位是選擇性的,由於此欄位不存在於其不支援即刻之一般性向量友善格式的實施方式中且此欄位不存在於其不使用即刻之指令中。
類別欄位1268-其內容分辨於不同類別的指令之間。參考圖12A-B,此欄位之內容選擇於類別A與類別B指令之間。於圖12A-B中,圓化角落的方形被用以指示一特定值存在於此欄位中(例如,針對類別欄位1268之類別A 1268A及類別B 1268B,個別地於圖12A-B中)。
類別A之指令模板
於類別A之非記憶體存取1205指令模板的情況下,α欄位1252被解讀為RS欄位1252A,其內容係分辨不同擴增操作類型之哪一個將被履行(例如,捨入1252A.1及資料變換1252A.2被個別地指明給無記憶體存取、捨入類型操作1210及無記憶體存取、資料變換類型操作1215指令模板),而β欄位1254係分辨該些指明類型的操作之哪個將被履行。於無記憶體存取1205指令模板中,比例欄位1260、置換欄位1262A、及置換比例欄位1262B不存在。
無記憶體存取指令模板-全捨入控制類型操作
於無記憶體存取全捨入類型操作1210指令模板中,β欄位1254被解讀為捨入控制欄位1254A,其內容係提供靜態捨入。雖然於本發明之所述實施例中,捨入控制欄位1254A包括抑制所有浮點例外(SAE)欄位1256及捨入操作控制欄位1258,但替代實施例可支援可將這兩個觀念均編碼入相同欄位或僅具有這些觀念/欄位之一者或另一者(例如,可僅具有捨入操作控制欄位1258)。
SAE欄位1256-其內容係分辨是否除能例外事件報告;當SAE欄位1256之內容指示抑制被致能時,則一既定指令不報告任何種類的浮點例外旗標且不引發任何浮點例外處置器。
捨入操作控制欄位1258-其內容係分辨一群捨入操作之哪一個將被履行(例如向上捨入、向下捨入、朝零捨入及捨入至最接近)。因此,捨入操作控制欄位1258容許以每指令為基之捨入模式的改變。於本發明之一實施例中,其中處理器包括一用以指明捨入模式之控制暫存器,捨入操作控制欄位1250之內容係撤銷該暫存器值。
無記憶體存取指令模板-資料變換類型操作
於無記憶體存取資料變換類型操作1215指令模板中,β欄位1254被解讀為資料變換欄位1254B,其內容係分辨數個資料變換之哪一個將被履行(例如,無資料變換、拌合、廣播)。
於類別A之記憶體存取1220指令模板中,α欄位1252被解讀為逐出暗示欄位1252B,其內容係分辨逐出暗示之哪一個將被使用(於圖12A中,暫時1252B.1及非暫時1252B.2被個別地指明給記憶體存取、暫時1225指令模板及記憶體存取非暫時1230指令模板),而β欄位1254被解讀為資料調處欄位1254C,其內容係分辨數個資料調處操作(亦已知為基元)之哪一個將被履行(例如,無調處;廣播;來源之向上轉換;及目的地之向下轉換)。記憶體存取1220指令模板包括比例欄位1260、及選擇性地置換欄位1262A或置換比例欄位1262B。
向量記憶體指令係履行向量載入自及向量儲存至記憶體,具有轉換支援。至於一般向量指令,向量記憶體指令 係以資料元件式方式轉移資料自/至記憶體,以其被實際地轉移之元件由其被選為寫入遮蔽的向量遮蔽之內容所主宰。
記憶體存取指令模板-暫時
暫時資料為可能會夠早地被再使用以受惠自快取的資料。然而,此為一暗示,且不同的處理器可以不同的方式來實施,包括完全地忽略該暗示。
記憶體存取指令模板-非暫時
非暫時資料為不太可能會夠早地被再使用以受惠自第一階快取中之快取且應被給予逐出之既定優先權的資料。然而,此為一暗示,且不同的處理器可以不同的方式來實施,包括完全地忽略該暗示。
類別B之指令模板
於類別B之指令模板的情況下,α欄位1252被解讀為寫入遮蔽控制(Z)欄位1252 C,其內容係分辨由寫入遮蔽欄位1270所控制的寫入遮蔽是否應為合併或歸零。
於類別B之非記憶體存取1205指令模板的情況下,β欄位1254之部分被解讀為RL欄位1257A,其內容係分辨不同擴增操作類型之哪一個將被履行(例如,捨入1257A.1及向量長度(VSIZE)1257A.2被個別地指明給無記憶體存取、寫入遮蔽控制、部分捨入控制類型操作 1212指令模板及無記憶體存取、寫入遮蔽控制、VSIZE類型操作1217指令模板),而剩餘的β欄位1254係分辨該些指明類型的操作之哪個將被履行。於無記憶體存取1205指令模板中,比例欄位1260、置換欄位1262A、及置換比例欄位1262B不存在。
於無記憶體存取中,寫入遮蔽控制、部分捨入控制類型操作1210指令模板、及剩餘的β欄位1254被解讀為捨入操作欄位1259A且例外事件報告被除能(既定指令則不報告任何種類的浮點例外旗標且不引發任何浮點例外處置器)。
捨入操作控制欄位1259A-正如捨入操作控制欄位1258,其內容係分辨一群捨入操作之哪一個將被履行(例如向上捨入、向下捨入、朝零捨入及捨入至最接近)。因此,捨入操作控制欄位1259A容許以每指令為基之捨入模式的改變。於本發明之一實施例中,其中處理器包括一用以指明捨入模式之控制暫存器,捨入操作控制欄位1250之內容係撤銷該暫存器值。
於無記憶體存取、寫入遮蔽控制、VSIZE類型操作1217指令模板中,剩餘的β欄位1254被解讀為向量長度欄位1259B,其內容係分辨數個資料向量長度之哪一個將被履行(例如,128、256、或512位元組)。
於類別B之記憶體存取1220指令模板的情況下,β欄位1254之部分被解讀為廣播欄位1257B,其內容係分辨廣播類型資料調處操作是否將被履行,而剩餘的β欄位 1254被解讀為向量長度欄位1259B。記憶體存取1220指令模板包括比例欄位1260、及選擇性地置換欄位1262A或置換比例欄位1262B。
關於一般性向量友善指令格式1200,全運算碼欄位1274被顯示為包括格式欄位1240、基礎操作欄位1242、及資料元件寬度欄位1264。雖然一實施例被顯示為其中全運算碼欄位1274包括所有這些欄位,全運算碼欄位1274包括少於所有這些欄位在不支援其所有的實施例中。全運算碼欄位1274提供操作碼(運算碼)。
擴增操作欄位1250、資料元件寬度欄位1264、及寫入遮蔽欄位1270容許這些特徵以每指令為基被指明以一般性向量友善指令格式。
寫入遮蔽欄位與資料元件寬度欄位之組合產生類型化的指令,在於其容許遮蔽根據不同資料元件寬度而被施加。
類別A及類別B中所發現之各種指令模板在不同情況下是有利的。於本發明之某些實施例中,不同處理器或一處理器中之不同核心可支援僅類別A、僅類別B、或兩類別。例如,用於通用計算之高性能通用失序核心可支援僅類別B;主要用於圖形及/或科學(通量)計算之核心可支援僅類別A;及用於兩者之核心可支援兩者(當然,一種具有來自兩類別之模板和指令的某混合但非來自兩類別之所有模板和指令的核心是落入本發明之範圍內)。同時,單一處理器可包括多核心,其所有均支援相同的類別 或者其中不同的核心支援不同的類別。例如,於一具有分離的圖形和通用核心之處理器中,主要用於圖形及/或科學計算的圖形核心之一可支援僅類別A;而通用核心之一或更多者可為高性能通用核心,其具有用於支援僅類別B之通用計算的失序執行和暫存器重新命名。不具有分離的圖形核心之另一處理器可包括支援類別A和類別B兩者之一或更多通用依序或失序核心。當然,來自一類別之特徵亦可被實施於另一類別中,在本發明之不同實施例中。以高階語言寫入之程式將被置入(例如,僅以時間編譯或靜態地編譯)多種不同的可執行形式,包括:1)僅具有由用於執行之目標處理器所支援的類別之指令的形式;或2)具有其使用所有類別之指令的不同組合所寫入之替代常式並具有控制流碼的形式,該控制流碼係根據由目前正執行該碼之處理器所支援的指令以選擇用來執行之常式。
範例特定向量友善指令格式
圖13為闡明範例特定向量友善指令格式的方塊圖,依據本發明之實施例。圖13顯示特定向量友善指令格式1300,其之特定在於其指明欄位之位置、大小、解讀及順序,以及那些欄位之部分的值。特定向量友善指令格式1300可被用以延伸x86指令集,而因此某些欄位係類似於或相同於現存x86指令集及其延伸(例如,AVX)中所使用的那些。此格式保持與下列各者一致:具有延伸之現存x86指令集的前綴編碼欄位、真實運算碼位元組欄位、 MOD R/M欄位、SIB欄位、置換欄位、及即刻欄位。闡明來自圖12之欄位投映入來自圖13之欄位。
應理解:雖然本發明之實施例係參考為說明性目的之一般性向量友善指令格式1200的背景下之特定向量友善指令格式1300而描述,但除非其中有聲明否則本發明不限於特定向量友善指令格式1300。例如,一般性向量友善指令格式1200係考量各個欄位之多種可能大小,而特定向量友善指令格式1300被顯示為具有特定大小之欄位。舉特定例而言,雖然資料元件寬度欄位1264被闡明為特定向量友善指令格式1300之一位元欄位,但本發明未如此限制(亦即,一般性向量友善指令格式1200係考量資料元件寬度欄位1264之其他大小)。
一般性向量友善指令格式1200包括以下欄位,依圖13A中所示之順序列出如下。
EVEX前綴(位元組0-3)1302被編碼以四位元組形式。
格式欄位1240(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)為格式欄位1240且其含有0x62(用於分辨本發明之一實施例中的向量友善指令格式之獨特值)。
第二-第四位元組(EVEX位元組1-3)包括數個提供特定能力之位元欄位
REX欄位1305(EVEX位元組1,位元[7-5])-係包 括:EVEX.R位元欄位(EVEX位元組1,位元[7]-R)、EVEX.X位元欄位(EVEX位元組1,位元[6]-X)、及1257BEX位元組1,位元[5]-B)。EVEX.R、EVEX.X、及EVEX.B位元欄位提供如相應VEX位元欄位之相同功能,且係使用1互補形式而被編碼,亦即,ZMM0被編碼為1111B,ZMM15被編碼為0000B。指令之其他欄位編碼該些暫存器指標之較低三位元如本技術中所已知者(rrr、xxx、及bbb),以致Rrrr、Xxxx、及Bbbb可藉由加入EVEX.R、EVEX.X、及EVEX.B而被形成。
REX’欄位1210-此為REX’欄位1210之第一部分且為EVER.R’位元欄位(EVEX位元組1,位元[4]-R’),其被用以編碼延伸的32暫存器集之上16個或下16個。於本發明之一實施例中,此位元(連同如以下所指示之其他者)被儲存以位元反轉格式來分辨(於眾所周知的x8632-位元模式)自BOUND指令,其真實運算碼位元組為62,但於MOD R/M欄位(描述於下)中不接受MOD欄位中之11的值;本發明之替代實施例不以反轉格式儲存此及如下其他指示的位元。1之值被用以編碼下16暫存器。換言之,R’Rrrr係藉由結合EVEX.R’、EVEX.R、及來自其他欄位之其他RRR而被形成。
運算碼映圖欄位1315(EVEX位元組1,位元[3:0]-mmmm)-其內容係編碼一暗示的領先運算碼位元組(0F、0F 38、或0F 3)。
資料元件寬度欄位1264(EVEX位元組2,位元[7]- W)係由記號EVEX.W所表示。EVEX.W被用以界定資料類型(32位元資料元件或64位元資料元件)之粒度(大小)。
EVEX.vvvv 1320(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvv之角色可包括以下:1)EVEX.vvvv編碼其以反轉(1之補數)形式所指明的第一來源暫存器運算元且針對具有2或更多來源運算元為有效的;2)EVEX.vvvv針對某些向量位移編碼其以1之補數形式所指明的目的地暫存器運算元;或3)EVEX.vvvv未編碼任何運算元,該欄位被保留且應含有1111b。因此,EVEX.vvvv欄位1320係編碼其以反轉(1之補數)形式所儲存的第一來源暫存器指明符之4個低階位元。根據該指令,一額外的不同EVEX位元欄位被用以延伸指明符大小至32暫存器。
EVEX.U 1268類別欄位(EVEX位元組2,位元[2]-U)-假如EVEX.U=0,則其指示類別A或EVEX.U0;假如EVEX.U=1,則其指示類別B或EVEX.U1。
前綴編碼欄位1325(EVEX位元組2,位元[1:0]-pp)-提供額外位元給基礎操作欄位。除了提供針對EVEX前綴格式之舊有SSE指令的支援,此亦具有壓縮SIMD前綴之優點(不需要一位元組來表達SIMD前綴,EVEX前綴僅需要2位元)。於一實施例中,為了支援其使用以舊有格式及以EVEX前綴格式兩者之SIMD前綴(66H、F2H、F3H)的舊有SSE指令,這些舊有SIMD前 綴被編碼為SIMD前綴編碼欄位;且在運作時間被延伸入舊有SIMD前綴,在其被提供至解碼器的PLA以前(以致PLA可執行這些舊有指令之舊有和EVEX格式兩者而無須修改)。雖然較少的指令可將EVEX前綴編碼欄位之內容直接地使用為運算碼延伸,但某些實施例係以類似方式延伸以符合一致性而容許不同的意義由這些舊有SIMD前綴來指明。替代實施例可重新設計PLA以支援2位元SIMD前綴編碼,而因此不需要延伸。
α欄位1252(EVEX位元組3,位元[7]-EH;亦已知為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮蔽控制、及EVEX.N;亦闡明以α)-如先前所描述,此欄位是背景特定的。
β欄位1254(EVEX位元組3,位元[6:4]-SSS,亦已知為EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;亦闡明以βββ)-如先前所描述,此欄位是背景特定的。
REX’欄位1210-此為REX’欄位之剩餘部分且為EVER.V’位元欄位(EVEX位元組3,位元[3]-V’),其被用以編碼延伸的32暫存器集之上16個或下16個。此位元被儲存以位元反轉格式。1之值被用以編碼下16暫存器。換言之,V’VVVV係藉由結合EVEX.V’、EVEX.vvvv所形成。
寫入遮蔽欄位1270(EVEX位元組3,位元[2:0]-kkk)-其內容係指明在如先前所述之寫入遮蔽暫存器中 的暫存器之指數。於本發明之一實施例中,特定值EVEX.kkk=000具有一特殊行為,其係暗示無寫入遮蔽被用於特別指令(此可被實施以多種方式,包括使用其固線至所有各者之寫入遮蔽或者其旁路遮蔽硬體之硬體)。
真實運算碼欄位1330(位元組4)亦已知為運算碼位元組。運算碼之部分被指明於此欄位。
MOD R/M欄位1340(位元組5)包括MOD欄位1342、Reg欄位1344、及R/M欄位1346。如先前所述MOD欄位1342之內容係分辨於記憶體存取與非記憶體存取操作之間。Reg欄位1344之角色可被概述為兩情況:編碼目的地暫存器運算元或來源暫存器運算元、或者被視為運算碼延伸而不被用以編碼任何指令運算元。R/M欄位1346之角色可包括以下:編碼其參考記憶體位址之指令運算元;或者編碼目的地暫存器運算元或來源暫存器運算元。
比例、指標、基礎(SIB)位元組(位元組6)-如先前所述,比例欄位1250之內容被用於記憶體位址產生。SIB.xxx 1354及SIB.bbb 1356-這些欄位之內容先前已被參考針對暫存器指標Xxxx及Bbbb。
置換欄位1262A(位元組7-10)-當MOD欄位1342含有10時,位元組7-10為置換欄位1262A,且其工作如舊有32位元置換(disp32)之相同方式且工作以位元組粒度。
置換因數欄位1262B(位元組7)-當MOD欄位 1342含有01時,位元組7為置換因數欄位1262B。此欄位之位置係相同於舊有x86指令集8位元置換(disp8)之位置,其工作以位元組粒度。因為disp8是符號延伸的,所以其可僅定址於-128與127位元組偏移之間;關於64位元組快取線,disp8係使用其可被設為僅四個真實可用值-128、-64、0及64之8位元;因為較大範圍經常是需要的,所以disp32被使用;然而,disp32需要4位元組。相對於disp8及disp32,置換因數欄位1262B為disp8之再解讀;當使用置換因數欄位1262B時,實際置換係由置換因數欄位之內容乘以記憶體運算元存取之大小(N)所判定。置換欄位之類型被稱為disp8*N。此係減少平均指令長度(用於置換欄位之單一位元組但具有更大的範圍)。此壓縮置換是基於假設其有效置換為記憶體存取之粒度的數倍,而因此,位址偏移之冗餘低階位元無須被編碼。換言之,置換因數欄位1262B取代舊有x86指令集8位元置換。因此,置換因數欄位1262B被編碼以如x86指令集8位元置換之相同方式(以致ModRM/SIB編碼規則並無改變),唯一例外是其disp8被超載至disp8*N。換言之,編碼規則或編碼長度沒有改變,但僅於藉由硬體之置換值的解讀(其需由記憶體運算元之大小來縮放置換以獲得位元組式的位址偏移)。
即刻欄位1272係操作如先前所述。
全運算碼欄位
圖13B為闡明其組成全運算碼欄位1274之特定向量友善指令格式1300的欄位之方塊圖,依據本發明之一實施例。明確地,全運算碼欄位1274包括格式欄位1240、基礎操作欄位1242、及資料元件寬度(W)欄位1264。基礎操作欄位1242包括前綴編碼欄位1325、運算碼映圖欄位1315、及真實運算碼欄位1330。
暫存器指標欄位
圖13C為闡明其組成暫存器指標欄位1244之特定向量友善指令格式1300的欄位之方塊圖,依據本發明之一實施例。明確地,暫存器指標欄位1244包括REX欄位1305、REX’欄位1310、MODR/M.reg欄位1344、MODR/M.r/m欄位1346、VVVV欄位1320、xxx欄位1354、及bbb欄位1356。
擴增操作欄位
圖13D為闡明其組成擴增操作欄位1250之特定向量友善指令格式1300的欄位之方塊圖,依據本發明之一實施例。當類別(U)欄位1268含有0時,則其表示EVEX.U0(類別A 1268A);當其含有1時,則其表示EVEX.U1(類別B 1268B)。當U=0且MOD欄位1342含有11(表示無記憶體存取操作)時,則α欄位1252(EVEX位元組3,位元[7]-EH)被解讀為rs欄位1252A。當rs欄位1252A含有1(捨入1252A.1)時,則 β欄位1254(EVEX位元組3,位元[6:4]-SSS)被解讀為捨入控制欄位1254A。捨入控制欄位1254A包括一位元SAE欄位1256及二位元捨入操作欄位1258。當rs欄位1252A含有0(資料變換1252A.2)時,則β欄位1254(EVEX位元組3,位元[6:4]-SSS)被解讀為三位元資料變換欄位1254B。當U=0且MOD欄位1342含有00、01、或10(表示記憶體存取操作)時,則α欄位1252(EVEX位元組3,位元[7]-EH)被解讀為逐出暗示(EH)欄位1252B且β欄位1254(EVEX位元組3,位元[6:4]-SSS)被解讀為三位元資料調處欄位1254C。
當U=1時,則α欄位1252(EVEX位元組3,位元[7]-EH)被解讀為寫入遮蔽控制(Z)欄位1252C。當U=1且MOD欄位1342含有11(表示無記憶體存取操作)時,則β欄位1254之部分(EVEX位元組3,位元[4]-S0)被解讀為RL欄位1257A;當其含有1(捨入1257.1)時,則β欄位1254之剩餘部分(EVEX位元組3,位元[6-5]-S2-1)被解讀為捨入操作欄位1259A;而當RL欄位1257A含有0(VSIZE1257.A2)時,則β欄位1254之剩餘部分(EVEX位元組3,位元[6-5]-S2-1)被解讀為向量長度欄位1259B(EVEX位元組3,位元[6-5]-L1-0)。當U=1且MOD欄位1342含有00、01、或10(表示記憶體存取操作)時,則β欄位1254(EVEX位元組3,位元[6:4]-SSS)被解讀為向量長度欄位1259B(EVEX位元組3,位元[6-5]-L1-0)及廣播欄位1257B (EVEX位元組3,位元[4]-B)。
範例暫存器架構
圖14為一暫存器架構1400之方塊圖,依據本發明之一實施例。於所示之實施例中,有32個向量暫存器1410,其為512位元寬;這些暫存器被稱為zmm0至zmm31。較低的16個zmm暫存器之較低階256位元被重疊於暫存器ymm0-16上。較低的16個zmm暫存器之較低階128位元(ymm暫存器之較低階128位元)被重疊於暫存器xmm0-15上。特定向量友善指令格式1300係操作於這些重疊的暫存器檔上,如以下表中所闡明。
換言之,向量長度欄位1259B於最大長度與一或更多其他較短長度之間選擇,其中每一此較短長度為前一長度之長度的一半;而無向量長度欄位1259B之指令模板係操作於最大長度上。此外,於一實施例中,特定向量友善指令格式1300之類別B指令模板係操作於緊縮或純量單/雙 精確度浮點資料及緊縮或純量整數資料上。純量操作為履行於zmm/ymm/xmm暫存器中之最低階資料元件上的操作;較高階資料元件位置係根據實施例而被保留如其在該指令前之相同者或者被歸零。
寫入遮蔽暫存器1415-於所示之實施例中,有8個寫入遮蔽暫存器(k0至k7),大小各為64位元。於替代實施例中,寫入遮蔽暫存器1415之大小為16位元。如先前所述,於本發明之一實施例中,向量遮蔽暫存器k0無法被使用為寫入遮蔽;當其通常將指示k0之編碼被用於寫入遮蔽時,其係選擇0xFFFF之固線寫入遮蔽,有效地除能該指令之寫入遮蔽。
通用暫存器1425-於所示之實施例中,有十六個64位元通用暫存器,其係連同現存的x86定址模式來用以定址記憶體運算元。這些暫存器被參照以RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15。
純量浮點堆疊暫存器檔(x87堆疊)1445,MMX緊縮整數平坦暫存器檔1450係別名於其上-於所示之實施例中,x87堆疊為用以使用x87指令集延伸而在32/64/80位元浮點資料上履行純量浮點操作之八元件堆疊;而MMX暫存器被用以履行操作在64位元緊縮整數資料上、及用以保持運算元以供介於MMX與XMM暫存器間所履行的某些操作。
本發明之替代實施例可使用較寬或較窄的暫存器。此外,本發明之替代實施例可使用更多、更少、或不同的暫 存器檔及暫存器。
範例核心架構,處理器,及電腦架構
處理器核心可被實施以不同方式、用於不同目的、以及於不同處理器中。例如,此類核心之實施方式可包括:1)用於通用計算之通用依序核心;2)用於通用計算之高性能通用失序核心;3)主要用於圖形及/或科學(通量)計算之特殊用途核心。不同處理器之實施方式可包括:1)CPU,其包括用於通用計算之一或更多通用依序核心及/或用於通用計算之一或更多通用失序核心;及2)核心處理器,其包括主要用於圖形及/或科學(通量)之一或更多特殊用途核心。此等不同處理器導致不同的電腦系統架構,其可包括:1)在來自該CPU之分離晶片上的共處理器;2)在與CPU相同的封裝中之分離晶粒上的共處理器;3)在與CPU相同的晶粒上的共處理器(於該情況下,此一處理器有時被稱為特殊用途邏輯,諸如集成圖形及/或科學(通量)邏輯、或稱為特殊用途核心);及4)在一可包括於相同晶粒上之所述CPU(有時稱為應用程式核心或應用程式處理器)、上述共處理器、及額外功能的晶片上之系統。範例核心架構被描述於下,接續著範例處理器及電腦架構之描述。
範例核心架構
依序或失序核心方塊圖
圖15A為闡明範例依序管線及範例暫存器重新命名、失序問題/執行管線兩者之方塊圖,依據本發明之實施例。圖15B為一方塊圖,其闡明將包括於依據本發明之實施例的處理器中之依序架構核心之範例實施例及範例暫存器重新命名、失序問題/執行架構核心兩者。圖15A-B中之實線方盒係闡明依序管線及依序核心,而虛線方盒之選擇性加入係闡明暫存器重新命名、失序問題/執行管線及核心。假設其依序形態為失序形態之子集,將描述失序形態。
於圖15A中,處理器管線1500包括提取級1502、長度解碼級1504、解碼級1506、配置級1508、重新命名級1510、排程(亦已知為分派或發送)級1512、暫存器讀取/記憶體讀取級1514、執行級1516、寫入回/記憶體/寫入級1518、例外處置級1522、及確定級1524。
圖15B顯示處理器核心1590,其包括一耦合至執行單元引擎單元1550之前端單元1530,且兩者均耦合至記憶體單元1570。核心1590可為減少指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字元(VLIW)核心、或者併合或替代核心類型。當作又另一種選擇,核心1590可為特殊用途核心,諸如(例如)網路或通訊核心、壓縮引擎、共處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心,等等。
前端單元1530包括一分支預測單元1532,其係耦合至指令快取單元1534,其係耦合至指令翻譯旁看緩衝器 (TLB)1536,其係耦合至指令提取單元1538,其係耦合至解碼單元1540。解碼單元1540(或解碼器)可解碼指令;並可將以下產生為輸出:一或更多微操作、微碼進入點、微指令、其他指令、或其他控制信號,其被解碼自(或者反應)、或被衍生自原始指令。解碼單元1540可使用各種不同的機制來實施。適當機制之範例包括(但不限定於)查找表、硬體實施方式、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM),等等。於一實施例中,核心1590包括微碼ROM或者儲存用於某些微指令之微碼的其他媒體(例如,於解碼單元1540中或者於前端單元1530內)。解碼單元1540被耦合至執行引擎單元1550中之重新命名/配置器單元1552。
執行引擎單元1550包括重新命名/配置器單元1552,其係耦合至退役單元1554及一組一或更多排程器單元1556。排程器單元1556代表任何數目的不同排程器,包括保留站、中央指令窗,等等。排程器單元1556被耦合至實體暫存器檔單元1558。實體暫存器檔單元1558代表一或更多實體暫存器檔,其不同者係儲存一或更多不同的資料類型,諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,其為下一待執行指令之位址的指令指標),等等。於一實施例中,實體暫存器檔單元1558包含向量暫存器單元、寫入遮蔽暫存器單元、及純量暫存器單元。這些暫存器單元可提供架構向量暫存器、向量遮蔽暫存器、及通用暫存器。實體暫存器 檔單元1558係由退役單元1554所重疊以闡明其中暫存器重新命名及失序執行可被實施之各種方式(例如,使用記錄器緩衝器和退役暫存器檔;使用未來檔、歷史緩衝器、和退役暫存器檔;使用暫存器映圖和暫存器池,等等)。退役單元1554及實體暫存器檔單元1558被耦合至執行叢集1560。執行叢集1560包括一組一或更多執行單元1562及一組一或更多記憶體存取單元1564。執行單元1562可履行各種操作(例如,偏移、相加、相減、相乘)以及於各種類型的資料上(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)。雖然某些實施例可包括數個專屬於特定功能或功能集之執行單元,但其他實施例可包括僅一個執行單元或者全部履行所有功能之多數執行單元。排程器單元1556、實體暫存器檔單元1558、及執行叢集1560被顯示為可能複數的,因為某些實施例係針對某些類型的資料/操作產生分離的管線(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、及/或記憶體存取管線,其各具有本身的排程器單元、實體暫存器檔單元、及/或執行叢集-且於分離記憶體存取管線之情況下,某些實施例被實施於其中僅有此管線之執行叢集具有記憶體存取單元1564)。亦應理解:當使用分離管線時,這些管線之一或更多者可為失序發送/執行而其他者為依序。
該組記憶體存取單元1564被耦合至記憶體單元1570,其包括資料TLB單元1572,其耦合至資料快取單 元1574,其耦合至第二階(L2)快取單元1576。於一範例實施例中,記憶體存取單元1564可包括載入單元、儲存位址單元、及儲存資料單元,其各者係耦合至記憶體單元1570中之資料TLB單元1572。指令快取單元1534被進一步耦合至記憶體單元1570中之第二階(L2)快取單元1576。L2快取單元1576被耦合至一或更多其他階的快取且最終至主記憶體。
舉例而言,範例暫存器重新命名、失序發送/執行核心架構可實施管線1500如下:1)指令提取1538履行提取和長度解碼級1502和1504;2)解碼單元1540履行解碼級1506;3)重新命名/配置器單元1552履行配置級1508和重新命名級1510;4)排程器單元1556履行排程級1512;5)實體暫存器檔單元1558和記憶體單元1570履行暫存器讀取/記憶體讀取級1514;執行叢集1560履行執行級1516;6)記憶體單元1570和實體暫存器檔單元1558履行寫入回/記憶體寫入級1518;7)各個單元可參與例外處置級1512;及8)撤回單元1554和實體暫存器檔單元1558履行確定級1524。
核心1590可支援一或更多指令集(例如,x86指令集,具有其已被加入以較新版本之某些延伸);MIPS Technologies of Sunnyvale,CA之MIPS指令集;ARM Holdings of Sunnyvale,CA之ARM指令集(具有諸如NEON之選擇性額外延伸),包括文中所述之指令。於一實施例中,核心1590包括支援緊縮資料指令集延伸(例 如,AVX1、AVX2)之邏輯,藉此容許由許多多媒體應用程式所使用的操作使用緊縮資料來履行。
應理解:核心可支援多線程(執行二或更多平行組的操作或線緒),並可以多種方式執行,包括時間切割多線程、同時多線程(其中單一實體核心提供邏輯核心給其實體核心正同時地多線程之每一線緒)、或者其組合(例如,時間切割提取和解碼以及之後的同時多線程,諸如Intel® Hyperthreading科技)。
雖然暫存器重新命名被描述於失序執行之背景,但應理解其暫存器重新命名可被使用於依序架構。雖然處理器之所述的實施例亦包括分離的指令和資料快取單元1534/1574以及共享L2快取單元1576,但替代實施例可具有針對指令和資料兩者之單一內部快取,諸如(例如)第一階(L1)內部快取、或多階內部快取。於某些實施例中,該系統可包括內部快取與外部快取之組合,該外部快取是位於核心及/或處理器之外部。替代地,所有快取可於核心及/或處理器之外部。
特定範例依序核心架構
圖16A-B闡明更特定的範例依序核心架構之方塊圖,該核心將為晶片中之數個邏輯區塊之一(包括相同類型及/或不同類型之其他核心)。邏輯區塊係透過高頻寬互連網路(例如,環狀網路)來通訊,利用某些固定功能邏輯、記憶體I/O介面、及其他必要I/O邏輯,根據其應用 而定。
圖16A為單處理器核心之方塊圖,連同與晶粒上互連網路1602之其連接、以及第二階(L2)快取1604之其本地子集,依據本發明之實施例。於一實施例中,指令解碼器1600支援具有緊縮資料指令集延伸之x86指令集。L1快取1606容許針對快取記憶體之低潛時存取入純量及向量單元。雖然於一實施例中(為了簡化設計),純量單元1608及向量單元1610使用分離的暫存器組(個別地,純量暫存器1612及向量暫存器1614),且於其間轉移的資料被寫入至記憶體並接著從第一階(L1)快取1606被讀取回;但本發明之替代實施例可使用不同的方式(例如,使用單一暫存器組或者包括一通訊路徑,其容許資料被轉移於兩暫存器檔之間而不被寫入及讀取回)。
L2快取1604之本地子集為其被劃分為分離本地子集(每一處理器核心有一個)之總體L2快取的部分。各處理器核心具有一直接存取路徑通至L2快取1604之其本身的本地子集。由處理器核心所讀取的資料被儲存於其L2快取子集1604中且可被快速地存取,平行於存取其本身本地L2快取子集之其他處理器核心。由處理器核心所寫入之資料被儲存於其本身的L2快取子集1604中且被清除自其他子集,假如需要的話。環狀網路確保共享資料之一致性。環狀網路為雙向的,以容許諸如處理器核心、L2快取及其他邏輯區塊等代理於晶片內部彼此通訊。各環狀資料路徑於每方向為1012位元寬。
圖16B為圖16A中之處理器核心的部分之延伸視圖,依據本發明之實施例。圖16B包括L1快取1604之L1資料快取1606A部分、以及有關向量單元1610和向量暫存器1614之更多細節。明確地,向量單元1610為16寬的向量處理單元(VPU)(參見16寬的ALU 1628),其係執行整數、單精確度浮點、及雙精確度浮點指令之一或更多者。VPU支援以拌合單元1620拌合暫存器輸入、以數字轉換單元1622A-B之數字轉換、及於記憶體輸入上以複製單元1624之複製。寫入遮蔽暫存器1626容許闡述結果向量寫入。
具有集成記憶體控制器及圖形之處理器
圖17為一種處理器1700之方塊圖,該處理器1700可具有多於一個核心、可具有集成記憶體控制器、且可具有集成圖形,依據本發明之實施例。圖17中之實線方塊闡明處理器1700,其具有單核心1702A、系統代理1710、一組一或更多匯流排控制器單元1716;而虛線方塊之選擇性加入闡明一替代處理器1700,其具有多核心1702A-N、系統代理單元1710中之一組一或更多集成記憶體控制器單元1714、及特殊用途邏輯1708。
因此,處理器1700之不同實施方式可包括:1)CPU,具有其為集成圖形及/或科學(通量)邏輯(其可包括一或更多核心)之特殊用途邏輯1708、及其為一或更多通用核心(例如,通用依序核心、通用失序核心、兩者 之組合)之核心1702A-N;2)共處理器,具有其為主要用於圖形及/或科學(通量)之大量特殊用途核心的核心1702A-N;及3)共處理器,具有其為大量通用依序核心的核心1702A-N。因此,處理器1700可為通用處理器、共處理器或特殊用途處理器,諸如(例如)網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高通量多數集成核心(MIC)共處理器(包括30或更多核心)、嵌入式處理器,等等。該處理器可被實施於一或更多晶片上。處理器1700可為一或更多基底之部分及/或可被實施於其上,使用數個製程技術之任一者,諸如(例如)BiCMOS、CMOS、或NMOS。
記憶體階層包括該些核心內之一或更多階快取、一組或者一或更多共享快取單元1706、及耦合至該組集成記憶體控制器單元1714之額外記憶體(未顯示)。該組共享快取單元1706可包括一或更多中階快取,諸如第二階(L2)、第三階(L3)、第四階(L4)、或其他階快取、最後階快取(LLC)、及/或其組合。雖然於一實施例中環狀為基的互連單元1712將以下裝置互連:集成圖形邏輯1708、該組共享快取單元1706、及系統代理單元1710/集成記憶體單元1714,但替代實施例可使用任何數目之眾所周知的技術以互連此等單元。於一實施例中,一致性被維持於一或更多快取單元1706與核心1702-A-N之間。
於某些實施例中,一或更多核心1702A-N能夠進行 多線程。系統代理1710包括協調並操作核心1702A-N之那些組件。系統代理單元1710可包括(例如)電力控制單元(PCU)及顯示單元。PCU可為或者包括用以調節核心1702A-N及集成圖形邏輯1708之電力狀態所需的邏輯和組件。顯示單元係用以驅動一或更多外部連接的顯示。
核心1702A-N可針對架構指令集為同質的或異質的;亦即,二或更多核心1702A-N可執行相同的指令集,而其他者可執行該指令集或不同指令集之僅一子集。
範例電腦架構
圖18-21為範例電腦架構之方塊圖。用於膝上型電腦、桌上型電腦、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、開關、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視頻遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持式裝置、及各種其他電子裝置之技術中已知的其他系統設計和組態亦為適當的。通常,能夠結合處理器及/或其他執行邏輯(如文中所揭露者)之多種系統或電子裝置為一般性適當的。
現在參考圖18,其顯示依據本發明之一實施例的系統1800之方塊圖。系統1800可包括一或更多處理器1810、1815,其被耦合至控制器集線器1820。於一實施例中,控制器集線器1820包括圖形記憶體控制器集線器(GMCH)1890及輸入/輸出集線器(IOH)1850(其可於 分離的晶片上);GMCH 1890包括記憶體及圖形控制器(耦合至記憶體1840及共處理器1845);IOH 1850為通至GMCH 1890之耦合輸入/輸出(I/O)裝置1860。另一方面,記憶體與圖形控制器之一或兩者被集成於處理器內(如文中所述者),記憶體1840及共處理器1845被直接地耦合至處理器1810、及具有IOH 1850之單一晶片中的控制器集線器1820。
額外處理器1815之選擇性本質於圖18中被標示以斷線。各處理器1810、1815可包括文中所述的處理核心之一或更多者並可為處理器1700之某版本。
記憶體1840可為(例如)動態隨機存取記憶體(DRAM)、相位改變記憶體(PCM)、或兩者之組合。針對至少一實施例,控制器集線器1820經由諸如前側匯流排(FSB)等多點分支匯流排、諸如QuickPath互連(QPI)等點對點介面、或類似連接1895而與處理器1810、1815通訊。
於一實施例中,共處理器1845為特殊用途處理器,諸如(例如)高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器,等等。於一實施例中,控制器集線器1820可包括集成圖形加速器。
於實體資源1810、1815間可有多樣差異,針對價值矩陣之譜,包括架構、微架構、熱、功率耗損、特性,等等。
於一實施例中,處理器1810執行其控制一般類型之資料處理操作的指令。指令內所嵌入者可為共處理器指令。處理器1810辨識這些共處理器指令為其應由裝附之共處理器1845所執行的類型。因此,處理器1810將共處理器匯流排或其他互連上之這些共處理器指令(或代表共處理器指令之控制信號)發送至共處理器1845。共處理器1845接受並執行該些接收的共處理器指令。
現在參考圖19,其顯示依據本發明之實施例的第一更特定範例系統1900之方塊圖。如圖19中所示,多處理器系統1900為點對點互連系統,並包括經由點對點互連1950而耦合之第一處理器1970及第二處理器1980。處理器1970及1980之每一者可為處理器1700之某版本。於本發明之一實施例中,處理器1970及1980個別為處理器1810及1815,而共處理器1938為共處理器1845。於另一實施例中,處理器1970及1980個別為處理器1810及共處理器1845。
處理器1970及1980被顯示為個別地包括集成記憶體控制器(IMC)單元1972及1982。處理器1970亦包括其匯流排控制器單元點對點(P-P)介面1976及1978之部分;類似地,第二處理器1980包括P-P介面1986及1988。處理器1970、1980可使用P-P介面電路1978、1988而經由點對點(P-P)介面1950來交換資訊。如圖19中所示,IMC 1972及1982將處理器耦合至個別記憶體,亦即記憶體1932及記憶體1934,其可為本地地裝附 至個別處理器之主記憶體的部分。
處理器1970、1980可各經由個別的P-P介面1952、1954而與晶片組1990交換資訊,使用點對點介面電路1976、1994、1986、1998。晶片組1990可經由高性能介面1939而選擇性地與共處理器1938交換資訊。於一實施例中,共處理器1938為特殊用途處理器,諸如(例如)高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器,等等。
共享快取(未顯示)可被包括於任一處理器中或者於兩處理器外部,而經由P-P互連與處理器連接,以致處理器之任一者或兩者的本地快取資訊可被儲存於共享快取中,假如處理器被置於低功率模式時。
晶片組1990可經由一介面1996而被耦合至第一匯流排1916。於一實施例中,第一匯流排1916可為周邊組件互連(PCI)匯流排、或者諸如PCI快速匯流排或其他第三代I/O互連匯流排等匯流排,雖然本發明之範圍未如此限制。
如圖19中所示,各種I/O裝置1914可被耦合至第一匯流排1916,連同匯流排橋1918,其係將第一匯流排1916耦合至第二匯流排1920。於一實施例中,一或更多額外處理器1915(諸如共處理器、高通量MIC處理器、GPGPU加速器(諸如,例如,圖形加速器或數位信號處理(DSP)單元)、場可編程閘極陣列、或任何其他處理器)被耦合至第一匯流排1916。於一實施例中,第二匯 流排1920可為低管腳數(LPC)匯流排。各個裝置可被耦合至第二匯流排1920,其包括(例如)鍵盤/滑鼠1922、通訊裝置1927、及資料儲存單元1928,諸如磁碟機或其他大量儲存裝置(其可包括指令/碼及資料1930),於一實施例中。此外,音頻I/O 1924可被耦合至第二匯流排1920。注意:其他架構是可能的。例如,取代圖19之點對點架構,系統可實施多點分支匯流排其他此類架構。
現在參考圖20,其顯示依據本發明之實施例的第二更特定範例系統2000之方塊圖。圖19與20中之類似元件具有類似的參考數字,且圖19之某些形態已從圖20省略以免混淆圖20之其他形態。
圖20闡明其處理器1970、1980可包括集成記憶體及I/O控制邏輯(「CL」)1972和1982,個別地。因此,CL 1972、1982包括集成記憶體控制器單元並包括I/O控制邏輯。圖20闡明其不僅記憶體1932、1934被耦合至CL 1972、1982,同時其I/O裝置2014亦被耦合至控制邏輯1972、1982。舊有I/O裝置2015被耦合至晶片組1990。
現在參考圖21,其顯示依據本發明之一實施例的SoC 2100之方塊圖。圖17中之類似元件具有類似的參考數字。同時,虛線方塊為更多先進SoC上之選擇性特徵。於圖21中,互連單元2102被耦合至:應用程式處理器2110,其包括一組一或更多核心202A-N及共享快取單元 1706;系統代理單元1710;匯流排控制器單元1716;集成記憶體控制器單元1714;一組一或更多共處理器2120,其可包括集成圖形邏輯、影像處理器、音頻處理器、及視頻處理器;靜態隨機存取記憶體(SRAM)單元2130;直接記憶體存取(DMA)單元2132;及顯示單元2140,用以耦合至一或更多外部顯示。於一實施例中,共處理器2120包括特殊用途處理器,諸如(例如)網路或通訊處理器、壓縮引擎、GPGPU、高通量MIC處理器、嵌入式處理器,等等。
文中所揭露之機制的實施例可被實施以硬體、軟體、韌體、或此等實施方式之組合。本發明之實施例可被實施為電腦程式或程式碼,其被執行於可編程系統上,該可編程系統包含至少一處理器、儲存系統(包括揮發性和非揮發性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置。
程式碼(諸如圖19中所示之碼1930)可被應用於輸入指令以履行文中所述之功能並產生輸出資訊。輸出資訊可被應用於一或更多輸出裝置,以已知的方式。為了本申請案之目的,處理系統包括任何系統,其具有處理器,諸如(例如)數位信號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或微處理器。
程式碼可被實施以高階程序或目標導向的編程語言來與處理系統通訊。程式碼亦可被實施以組合或機器語言,假如想要的話。事實上,文中所述之機制在範圍上不限於 任何特定編程語言。於任何情況下,該語言可為編譯或解讀語言。
至少一實施例之一或更多形態可由其儲存在機器可讀取媒體上之代表性指令所實施,該機器可讀取媒體代表處理器內之各個邏輯,當由機器讀取時造成該機器製造邏輯以履行文中所述之技術。此等表示(已知為「IP核心」)可被儲存在有形的、機器可讀取媒體上,且被供應至各個消費者或製造設施以載入其實際上製造該邏輯或處理器之製造機器。
此類機器可讀取儲存媒體可包括(無限制)由機器或裝置所製造或形成之物件的非暫態、有形配置,包括:儲存媒體,諸如硬碟、包括軟碟、光碟、微型碟唯讀記憶體(CD-ROM)、微型碟可再寫入(CD-RW)、及磁光碟等任何其他類型的碟片;半導體裝置,諸如唯讀記憶體(ROM)、諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可編程唯讀記憶體(EPROM)等隨機存取記憶體(RAM)、快閃記憶體、電可抹除可編程唯讀記憶體(EEPROM)、相位改變記憶體(PCM)、磁或光學卡、或者適於儲存電子指令之任何其他類型的媒體。
因此,本發明之實施例亦包括含有指令或含有諸如硬體描述語言(HDL)等設計資料之非暫態、有形的機器可讀取媒體,該硬體描述語言(HDL)係定義文中所述之結構、電路、設備、處理器及/或系統特徵。此類實施例亦 可被稱為程式產品。
仿真(包括二元翻譯、碼變形,等等)
於某些情況下,指令轉換器可被用以將來自來源指令集之指令轉換至目標指令集。例如,指令轉換器可將指令翻譯(例如,使用靜態二元翻譯、動態二元翻譯,包括動態編譯)、變形、仿真、或者轉換至一或更多其他指令以供由核心所處理。指令轉換器可被實施以軟體、硬體、韌體、或其組合。指令轉換器可位於處理器上、處理器外、或者部分於處理器上而部分於處理器外。
圖22為一種對照軟體指令轉換器之使用的方塊圖,該轉換器係用以將來源指令集中之二元指令轉換至目標指令集中之二元指令,依據本發明之實施例。於所述之實施例中,指令轉換器為一種軟體指令轉換器,雖然替代地該指令轉換器亦可被實施以軟體、韌體、硬體、或其各種組合。圖22顯示一種高階語言2202之程式可使用x86編譯器2204而被編譯以產生x86二元碼2206,其可由具有至少一x86指令集核心之處理器2216來本機地執行。具有至少一x86指令集核心之處理器2216代表任何處理器,其可藉由可相容地執行或者處理以下事項來履行實質上如一種具有至少一x86指令集核心之Intel處理器的相同功能:(1)Intel x86指令集核心之指令集的實質部分或者(2)針對運作於具有至少一x86指令集核心之Intel處理器上的應用程式或其他軟體之物件碼版本,以獲得如具有 至少一x86指令集核心之Intel處理器的相同結果。x86編譯器2204代表一種編譯器,其可操作以產生x86二元碼2206(例如,物件碼),其可(具有或沒有額外鏈結處理)被執行於具有至少一x86指令集核心之處理器2216上。類似地,圖22顯示高階語言2202之程式可使用替代的指令集編譯器2208而被編譯以產生替代的指令集二元碼2210,其可由沒有至少一x86指令集核心之處理器2214來本機地執行(例如,具有其執行MIPS Technologies of Sunnyvale,CA之MIPS指令集及/或其執行ARM Holdings of Sunnyvale,CA之ARM指令集的核心之處理器)。指令轉換器2212被用以將x86二元碼2206轉換為其可由沒有至少一x86指令集核心之處理器2214來本機地執行的碼。已轉換碼不太可能相同於替代的指令集二元碼2210,因為能夠執行此功能之指令很難製造;然而,已轉換碼將完成一般性操作並由來自替代指令集之指令所組成。因此,指令轉換器2212代表軟體、韌體、硬體、或其組合,其(透過仿真、模擬或任何其他程序)容許處理器或其他不具有x86指令集處理器或核心的電子裝置來執行x86二元碼2206。
針對圖5-10之任一者所述之組件、特徵、及細節亦可選擇性地應用於圖3-4之任一者。再者,針對設備之任一者所述之組件、特徵、及細節亦可選擇性地應用於其在實施例中可由及/或以此類設備所履行的方法之任一者。文中所述之任何處理器可被包括於文中所揭露之任何晶片 上系統(SoC)及/或電腦系統中及/或於其他電腦系統(例如,桌上型電腦或行動電話)中及/或其他SoC中。於某些實施例中,電腦系統可包括互連、與該互連耦合之處理器、及與該互連耦合之動態隨機存取記憶體(DRAM)。另一方面,取代DRAM,可使用不需被更新之其他類型的揮發性記憶體、或者可使用快閃記憶體。其他可選擇性地與SoC中之處理器被集成或包括在晶粒上或晶片上的組件之範例包括(但不限定於)記憶體控制器、記憶體(例如,唯讀記憶體(ROM)、隨機存取記憶體(RAM)、及/或快閃記憶體)、圖形裝置(例如,圖形處理單元(GPU)、圖形核心、或圖形處理器,等等)、數位信號處理器、影像信號處理器、液晶顯示(LCD)或其他顯示控制器、及一或更多輸入及/或輸出(I/O)控制器以提供針對一或更多外部介面之控制(例如,通用串列匯流排(USB)、通用異步接收器/傳輸器(UART)、火線、乙太網路、藍牙,等等)。用於行動電話之SoC亦可選擇性地包括長期演進(LTE)數據機、感應器引擎、衛星導航系統控制器(例如,全球定位衛星(GPS)、Galileo、及/或Beidou)。於某些實施例中,指令可具有文中所揭露之指令格式的特徵或細節,雖然此非必要。
於說明書及申請專利範圍中,術語「耦合」及/或「連接」(連同其衍生詞)可被使用。這些術語並非被用為彼此的同義詞。反之,於實施例中,「連接」可被用以指示其二或更多元件係彼此直接地實體及/或電氣接觸。 「耦合」可表示二或更多元件係彼此直接地物理及/或電氣接觸。然而,「耦合」亦可表示其二或更多元件不是彼此直接接觸,而仍彼此合作或互動。例如,執行單元可透過一或更多中間組件而與暫存器及/或解碼單元耦合。於圖形中,箭號被用以顯示連接或耦合。
術語「及/或」可已被使用。如文中所使用者,術語「及/或」表示一者或另一者或兩者(例如,A及/或B表示A或B或A與B兩者)。
於以上說明中,已提出數個特定細節以提供實施例之透徹瞭解。然而,其他實施例可被實行而無這些特定的細節。本發明之範圍並非由以上所提供的特定範例來決定,而僅由底下的申請專利範圍來決定。於其他例子中,眾所周知的電路、結構、裝置、及操作已被顯示於方塊圖形式及/或無細節地,以避免妨礙對描述之瞭解。在適當情況下,參考數字、或參考數字之末端部已被重複於圖形中以指示相應的或類似的元件,其可選擇性地具有類似的或相同的特性,除非另有指明或清楚明白的。
某些操作可由硬體組件來履行,或者可被實施以機器可執行或電路可執行指令,其可被用以致使及/或導致以指令編程之機器、電路、或硬體組件(例如,處理器、處理器之部分、電路,等等)履行該些操作。該些操作亦可選擇性地由硬體與軟體之組合來履行。處理器、機器、電路、或硬體可包括特定或特殊的電路或其他邏輯(例如,潛在地與韌體及/或軟體結合之硬體),其可操作以執行 及/或處理指令並回應於該指令而儲存結果。
某些實施例包括製造物件(例如,電腦程式產品),其包括機器可讀取媒體。媒體可包括一種機制,其係以可由機器讀取之形式提供(例如,儲存)資訊。機器可讀取媒體可提供(或於其上儲存)指令或指令序列,其(假如及/或當由機器執行時)可操作以致使機器履行及/或導致機器履行文中所揭露的操作、方法、或技術之一。
於某些實施例中,機器可讀取媒體可包括非暫態機器可讀取儲存媒體。例如,非暫態機器可讀取儲存媒體可包括軟碟、光學儲存媒體、光碟、光學資料儲存裝置、CD-ROM、磁碟、磁光碟、唯讀記憶體(ROM)、可編程ROM(PROM)、可抹除且可編程ROM(EPROM)、電可抹除且可編程ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體、相位改變記憶體、相位改變資料儲存材料、非揮發性記憶體、非揮發性資料儲存裝置、非暫態記憶體、非暫態資料儲存裝置,等等。非暫態機器可讀取儲存媒體不包括暫態傳播信號。於某些實施例中,儲存媒體可包括有形媒體,其包括固態物質。
適當機器之範例包括(但不限定於)通用處理器、特殊用途處理器、數位邏輯電路、積體電路、晶片上系統(SoC),等等。適當機器之又其他範例包括電腦系統或其他電子裝置,其包括處理器、數位邏輯電路、或積體電路。此類電腦系統或電子裝置之範例包括(但不限定於) 桌上型電腦、膝上型電腦、筆記型電腦、輸入板電腦、小筆電、行動電話(例如,智慧型手機)、伺服器、網路裝置(例如,路由器及開關)、行動網際網路裝置(MID)、媒體播放器、智慧電視、桌上型易網機、機上盒、及視頻遊戲控制器。
遍及本說明書針對「一實施例」、「實施例」、「一或更多實施例」、「某些實施例」(舉例而言)之參考係指示其特定特徵可被包括於本發明之實施中但並不一定必要。類似地,於說明書中,各個特徵有時被組合在一起於單一實施例、圖形、或其描述中,以供解釋本發明及協助瞭解實施例之各個發明性形態的目的。然而,本發明之方法不應被解讀為反應其本發明需要比各申請專利範圍中所明確記載之更多特徵的企圖。反之,如以下申請專利範圍所反應者,發明性形態在於比單一所揭露實施例之所有特徵更少的特徵。因此,接續著實施方式之申請專利範圍於此被清楚地併入此實施方式中,以各項申請專利範圍本身可獨立成為本發明之一分離的實施例。
範例實施例
下列範例係有關進一步的實施例。範例中之明確細節可被使用於一或更多實施例中的任何地方。
範例1為一種處理器,其包括複數緊縮資料暫存器、及一用以解碼指令之解碼單元。該指令係用以指示一包括複數摩頓座標之來源緊縮資料運算元、選擇性地一具有該 些摩頓座標所將被映射至之點的多維空間之維度、該多維空間之既定維、以及目的地儲存位置。該處理器亦包括一執行單元,其係與該緊縮資料暫存器及該解碼單元耦合。該執行單元回應於解碼該指令以將結果緊縮資料運算元儲存於該目的地儲存位置中。該結果緊縮資料運算元係包括複數摩頓座標,其各相應於該來源緊縮資料運算元之該些摩頓座標的不同一者。該結果緊縮資料運算元之該些摩頓座標係被映射至該多維空間中的點,該些點與該來源緊縮資料運算元之相應摩頓座標所被映射至的點不同以該指令所指示之該既定維中的固定改變。
範例2包括範例1之處理器,其中該執行單元係用以儲存該結果緊縮資料運算元,其中該既定維中之該固定改變為該既定維中之單位減量。
範例3包括範例1之處理器,其中該執行單元係用以產生該結果緊縮資料運算元之各摩頓座標,藉由設定所有最低順序(或最低有效)歸零位元相應於該來源緊縮資料運算元之各相應摩頓座標的該既定維,其為較相應於該來源緊縮資料運算元之各摩頓座標的該既定維之各最低順序設定位元更低的順序。同時,清除相應於該來源緊縮資料運算元之各摩頓座標的該既定維之最低順序(或最低有效)設定位元。
範例4包括範例1至3之任一者的處理器,其中該解碼單元係用以解碼其用以指示該多維空間之該維度為至少二維與三維之任一者的指令。
範例5包括範例4之處理器,其中該解碼單元係用以解碼其用以指示該多維空間之該維度為該二維、該三維、及選擇性地四維之任一者的指令。
範例6包括範例1至3之任一者的處理器,其中該解碼單元係用以解碼其用以具有一即刻來指示該多維空間之該維度的指令。
範例7包括範例1至3之任一者的處理器,其中該解碼單元係用以解碼其用以具有一運算碼來指示該多維空間之該維度的指令。
範例8包括範例1至3之任一者的處理器,其中該解碼單元係用以解碼其用以選擇性地具有一即刻或其他組位元來包括至少兩位元以指示該既定維為至少兩不同維之任一者的指令。
範例9包括範例1至3之任一者的處理器,其中該解碼單元係用以解碼其用以具有至少兩位元來指示該既定維為至少三或者於某些情況下為選擇性地四不同維之任一者的指令。
範例10包括範例1至9之任一者的處理器,其中該執行單元係用以產生該結果緊縮資料運算元之該些摩頓座標而無須去交錯其相應於不同維之該來源緊縮資料運算元的該些摩頓座標之位元。
範例11包括範例1至10之任一者的處理器,其中該執行單元係用以儲存具有至少一不在其具有該來源緊縮資料運算元之相應摩頓座標的連續摩頓序中之摩頓座標的該 結果緊縮資料運算元。
範例12包括範例1至11之任一者的處理器,進一步包括用以預測分支之選擇性分支預測單元。與該分支預測單元耦合之選擇性指令預提取單元。該指令預提取單元係用以預提取包括該指令之指令。與該指令預提取單元耦合之選擇性第1階(L1)指令快取。該L1指令快取係用以儲存包括該指令之指令。選擇性L1資料快取係用以儲存資料。與該L1指令快取及該L1資料快取耦合之選擇性第2階(L2)快取。該L2快取係用以儲存資料及指令。與該L1指令快取及該解碼單元耦合之選擇性指令提取單元係用以從該L1指令快取提取該指令並提供該指令至該解碼單元。與該緊縮資料暫存器耦合以重新命名該些緊縮資料暫存器的選擇性暫存器重新命名單元。
範例13為一種於處理器中之方法,該方法包括接收指令。該指令係指示一包括複數摩頓座標之來源緊縮資料運算元、一具有該些摩頓座標所被映射至之點的多維空間之維度、該多維空間之既定維、以及目的地儲存位置。該方法亦包括回應於履行該指令以將結果緊縮資料運算元儲存於目的地儲存位置中。該結果緊縮資料運算元包括複數摩頓座標,其各相應於該來源緊縮資料運算元之該些摩頓座標的不同一者。該結果緊縮資料運算元之該些摩頓座標被映射至該多維空間中的點,該些點與該來源緊縮資料運算元之該些相應摩頓座標所被映射至的點不同以該指令所指示之該既定維中的固定改變。
範例14包括範例13之方法,其中儲存該結果緊縮資料運算元包括儲存其中該固定改變為該既定維中之單位減量的該結果緊縮資料運算元。
範例15包括範例13之方法,進一步包括產生該結果緊縮資料運算元之各摩頓座標,藉由設定所有最低順序歸零位元相應於該來源緊縮資料運算元之各相應摩頓座標的該既定維,其為較相應於該來源緊縮資料運算元之各摩頓座標的該既定維之各最低順序設定位元更低的順序。同時,清除相應於該來源緊縮資料運算元之各摩頓座標的該既定維之最低順序設定位元。
範例16包括範例13之方法,其中接收包括接收其能夠指示該多維空間之該維度為至少二維與三維之任一者的指令。
範例17包括範例13之方法,其中接收包括接收具有一指示該多維空間的該維度之即刻的指令。
範例18包括範例13之方法,其中接收包括接收具有一指示該多維空間的該維度之運算碼的指令。
範例19包括範例13之方法,其中接收包括接收具有能夠指示該既定維為至少三個不同維之任一者的至少兩位元的指令。
範例20包括範例13至19之任一者的方法,進一步包括產生該結果緊縮資料運算元之該些摩頓座標而無須去交錯其相應於不同維之該來源緊縮資料運算元的該些摩頓座標之位元。
範例21為一種用以處理指令之系統,其包括互連、及一與該互連耦合之處理器。處理器係用以接收一指令,其係用以指示一包括複數摩頓座標之來源緊縮資料運算元、一具有該些摩頓座標所將被映射至之點的多維空間之既定維、以及一目的地緊縮資料暫存器。該處理器回應於該指令以將結果緊縮資料運算元儲存於該目的地緊縮資料暫存器中。該結果緊縮資料運算元係包括複數摩頓座標,其各相應於該來源緊縮資料運算元之該些摩頓座標的不同一者。該結果緊縮資料運算元之該些摩頓座標係被映射至該多維空間中的點,該些點與該來源緊縮資料運算元之該些相應摩頓座標所將被映射至的點不同以該既定維中的一之減量。該系統亦包括與該互連耦合之動態隨機存取記憶體(DRAM)。
範例22包括範例19之系統,其中該處理器係回應於其容許該多維空間之維度為複數不同維度之任一者的指令。
範例23為一種包括非暫態機器可讀取儲存媒體之製造物件。該非暫態機器可讀取儲存媒體係儲存指令。該指令係用以指示其用以包括複數摩頓座標之來源緊縮資料運算元。多維空間之既定維具有其該些摩頓座標所將被映射至的點、及目的地儲存位置。假如由機器所執行,則該指令係用以致使該機器履行包括將結果緊縮資料運算元儲存於該目的地儲存位置中之操作。該結果緊縮資料運算元係包括複數摩頓座標,其各相應於該來源緊縮資料運算元之 該些摩頓座標的不同一者。該結果緊縮資料運算元之該些摩頓座標係被映射至該多維空間中的點,該些點與該來源緊縮資料運算元之該些相應摩頓座標所將被映射至的點不同以該指令所指示之該既定維中的一之減量。
範例24包括範例21之製造物件,其中該指令之運算碼容許該多維空間之複數不同維度,且其中該指令具有用以指示該多維空間之維度的一或更多位元。
範例25為一種可操作以履行範例13至20的任一者之方法的處理器或其他設備。
範例26為一種包括用以履行範例13至20的任一者之方法的機構之處理器或其他設備。
範例27為一種包括用以履行範例13至20的任一者之方法的模組及/或單元及/或邏輯及/或電路及/或機構之任何組合的處理器或其他設備。
範例28為一種包括選擇性非暫態機器可讀取媒體之製造物件,該機器可讀取媒體係選擇性地儲存或者提供指令,假如及/或當由處理器、電腦系統、電子裝置、或其他機器所執行時,則該指令係操作以致使該機器履行範例13至20的任一者之方法。
範例29為一種電腦系統或其他電子裝置,包括互連、與該互連耦合之申請專利範圍第1至12的任一者之處理器、與該互連耦合之選擇性動態隨機存取記憶體(DRAM)、與該互連耦合之選擇性無線收發器、與該互連耦合之選擇性影像感應器、及與該互連耦合之選擇性觸 控螢幕控制器。
範例30為一種實質上如文中所述的處理器或其他設備。
範例31為一種可操作以履行實質上如文中所述的任何方法之處理器或其他設備。
310‧‧‧處理器
312‧‧‧摩頓座標調整指令
314‧‧‧解碼單元
316‧‧‧執行單元
318‧‧‧緊縮資料暫存器
320‧‧‧來源緊縮資料運算元
324‧‧‧結果緊縮資料運算元

Claims (24)

  1. 一種處理器,包含:複數緊縮資料暫存器;解碼單元,用以解碼一指令,其中該指令係用以指示一用以包括複數摩頓座標之來源緊縮資料運算元、一具有該些摩頓座標所將被映射至之點的多維空間之維度、該多維空間之既定維、及目的地儲存位置;以及一執行單元,其係與該些緊縮資料暫存器及該解碼單元耦合,該執行單元回應於該解碼單元解碼該指令以將結果緊縮資料運算元儲存於該目的地儲存位置中,其中該結果緊縮資料運算元係用以包括複數摩頓座標,其各相應於該來源緊縮資料運算元之該些摩頓座標的不同一者,其中該結果緊縮資料運算元之該些摩頓座標係用以被映射至該多維空間中的點,該些點與該來源緊縮資料運算元之相應摩頓座標所將被映射至的點不同以該指令所指示之該既定維中的固定改變。
  2. 如申請專利範圍第1項之處理器,其中該執行單元係用以儲存該結果緊縮資料運算元,其中該既定維中之該固定改變為該既定維中之單位減量。
  3. 如申請專利範圍第1項之處理器,其中該執行單元係藉由以下方式以產生該結果緊縮資料運算元之各摩頓座標:設定所有最低順序歸零位元相應於該來源緊縮資料運算元之各相應摩頓座標的該既定維,其為較相應於該來源 緊縮資料運算元之各摩頓座標的該既定維之各最低順序設定位元更低的順序;以及清除相應於該來源緊縮資料運算元之各摩頓座標的該既定維之最低順序設定位元。
  4. 如申請專利範圍第1項之處理器,其中該解碼單元係用以解碼其用以指示該多維空間之該維度為至少二維與三維之任一者的該指令。
  5. 如申請專利範圍第4項之處理器,其中該解碼單元係用以解碼其用以指示該多維空間之該維度為該二維、該三維、及四維之任一者的該指令。
  6. 如申請專利範圍第1項之處理器,其中該解碼單元係用以解碼其用以具有一即刻來指示該多維空間之該維度的該指令。
  7. 如申請專利範圍第1項之處理器,其中該解碼單元係用以解碼其用以具有一運算碼來指示該多維空間之該維度的該指令。
  8. 如申請專利範圍第1項之處理器,其中該解碼單元係用以解碼其用以具有一即刻來包括至少兩位元以指示該既定維為至少兩不同維之任一者的該指令。
  9. 如申請專利範圍第1項之處理器,其中該解碼單元係用以解碼其用以具有至少兩位元以指示該既定維為至少三不同維之任一者的該指令。
  10. 如申請專利範圍第1項之處理器,其中該執行單元係用以產生該結果緊縮資料運算元之該些摩頓座標而無 須去交錯其相應於不同維之該來源緊縮資料運算元的該些摩頓座標之位元。
  11. 如申請專利範圍第1項之處理器,其中該執行單元係用以儲存具有至少一不在其具有該來源緊縮資料運算元之相應摩頓座標的連續摩頓序中之摩頓座標的該結果緊縮資料運算元。
  12. 如申請專利範圍第1項之處理器,進一步包含:一用以預測分支之分支預測單元;與該分支預測單元耦合之指令預提取單元,該指令預提取單元係用以預提取包括該指令之指令;與該指令預提取單元耦合之第1階(L1)指令快取,該L1指令快取係用以儲存包括該指令之指令;用以儲存資料之L1資料快取;與該L1指令快取及該L1資料快取耦合之第2階(L2)快取,該L2快取係用以儲存資料及指令;與該L1指令快取及該解碼單元耦合之指令提取單元,用以從該L1指令快取提取該指令並提供該指令至該解碼單元;以及與該些緊縮資料暫存器耦合以重新命名該些緊縮資料暫存器的暫存器重新命名單元。
  13. 一種於處理器中之方法,包含:接收一指令,該指令係指示一包括複數摩頓座標之來源緊縮資料運算元、一具有該些摩頓座標所被映射至之點的多維空間之維度、該多維空間之既定維、及目的地儲存 位置;以及回應於執行該指令以將結果緊縮資料運算元儲存於該目的地儲存位置中,該結果緊縮資料運算元包括複數摩頓座標,其各相應於該來源緊縮資料運算元之該些摩頓座標的不同一者,其中該結果緊縮資料運算元之該些摩頓座標被映射至該多維空間中的點,該些點與該來源緊縮資料運算元之相應摩頓座標所被映射至的點不同以該指令所指示之該既定維中的固定改變。
  14. 如申請專利範圍第13項之方法,其中儲存該結果緊縮資料運算元包含儲存其中該固定改變為該既定維中之單位減量的該結果緊縮資料運算元。
  15. 如申請專利範圍第13項之方法,進一步包含以下方式以產生該結果緊縮資料運算元之各摩頓座標:設定所有最低順序歸零位元相應於該來源緊縮資料運算元之各相應摩頓座標的該既定維,其為較相應於該來源緊縮資料運算元之各摩頓座標的該既定維之各最低順序設定位元更低的順序;以及清除相應於該來源緊縮資料運算元之各摩頓座標的該既定維之該最低順序設定位元。
  16. 如申請專利範圍第13項之方法,其中接收包含接收其能夠指示該多維空間之該維度為至少二維與三維之任一者的該指令。
  17. 如申請專利範圍第13項之方法,其中接收包含接收具有一指示該多維空間的該維度之即刻的該指令。
  18. 如申請專利範圍第13項之方法,其中接收包含接收具有一指示該多維空間的該維度之運算碼的該指令。
  19. 如申請專利範圍第13項之方法,其中接收包含接收具有能夠指示該既定維為至少三個不同維之任一者的至少兩位元的該指令。
  20. 如申請專利範圍第13項之方法,進一步包含產生該結果緊縮資料運算元之該些摩頓座標而無須去交錯其相應於不同維之該來源緊縮資料運算元的該些摩頓座標之位元。
  21. 一種用以處理指令之系統,包含:互連;一與該互連耦合之處理器,該處理器係用以接收一指令,其係用以指示一包括複數摩頓座標之來源緊縮資料運算元、一具有該些摩頓座標所將被映射至之點的多維空間之既定維、及一目的地緊縮資料暫存器,該處理器回應於該指令以將結果緊縮資料運算元儲存於該目的地緊縮資料暫存器中,其中該結果緊縮資料運算元係用以包括複數摩頓座標,其各相應於該來源緊縮資料運算元之該些摩頓座標的不同一者,且其被映射至該多維空間中的點,該些點與該來源緊縮資料運算元之該些相應摩頓座標所將被映射至的點不同以該既定維中的一之減量。 與該互連耦合之動態隨機存取記憶體(DRAM)。
  22. 如申請專利範圍第19項之系統,其中該處理器係回應於其容許該多維空間之維度為複數不同維度之任一者 的該指令。
  23. 一種包含非暫態機器可讀取儲存媒體之製造物件,該非暫態機器可讀取儲存媒體係儲存一指令,該指令係用以指示一包括複數摩頓座標之來源緊縮資料運算元、一具有該些摩頓座標所將被映射至之點的多維空間之既定維、以及目的地儲存位置,假如由機器所執行則該指令係用以致使該機器履行包含以下之操作:將結果緊縮資料運算元儲存於該目的地儲存位置中,其中該結果緊縮資料運算元係包括複數摩頓座標,其各相應於該來源緊縮資料運算元之該些摩頓座標的不同一者,其中該結果緊縮資料運算元之該些摩頓座標係被映射至該多維空間中的點,該些點與該來源緊縮資料運算元之該些相應摩頓座標所將被映射至的點不同以該指令所指示之該既定維中的一之減量。
  24. 如申請專利範圍第21項之製造物件,其中該指令之運算碼容許該多維空間之複數不同維度,且其中該指令具有用以指示該多維空間之維度的一或更多位元。
TW104133042A 2014-11-14 2015-10-07 用於摩頓座標調整之處理器,方法,系統,及製造物件 TWI599950B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/542,004 US9772850B2 (en) 2014-11-14 2014-11-14 Morton coordinate adjustment processors, methods, systems, and instructions

Publications (2)

Publication Number Publication Date
TW201633115A true TW201633115A (zh) 2016-09-16
TWI599950B TWI599950B (zh) 2017-09-21

Family

ID=55954836

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104133042A TWI599950B (zh) 2014-11-14 2015-10-07 用於摩頓座標調整之處理器,方法,系統,及製造物件

Country Status (9)

Country Link
US (1) US9772850B2 (zh)
EP (1) EP3218816B1 (zh)
JP (1) JP6708334B2 (zh)
KR (1) KR102275561B1 (zh)
CN (1) CN107111489B (zh)
BR (1) BR112017010075A2 (zh)
SG (1) SG11201703089PA (zh)
TW (1) TWI599950B (zh)
WO (1) WO2016077020A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9772848B2 (en) * 2014-11-14 2017-09-26 Intel Corporation Three-dimensional morton coordinate conversion processors, methods, systems, and instructions
US9772849B2 (en) * 2014-11-14 2017-09-26 Intel Corporation Four-dimensional morton coordinate conversion processors, methods, systems, and instructions
US9772850B2 (en) 2014-11-14 2017-09-26 Intel Corporation Morton coordinate adjustment processors, methods, systems, and instructions
KR102537530B1 (ko) * 2015-10-26 2023-05-26 삼성전자 주식회사 가속 구조를 생성하는 방법 및 장치
WO2018183754A1 (en) * 2017-03-29 2018-10-04 Mou Zhijing George Method and system for real time 3d-space search and point-cloud registration using a dimension-shuffle transform
CN110941789B (zh) * 2018-09-21 2023-12-15 北京地平线机器人技术研发有限公司 张量运算方法和装置
US20230059625A1 (en) * 2020-01-16 2023-02-23 Lg Electronics Inc. Transform-based image coding method and apparatus therefor
CN113473153B (zh) * 2020-03-30 2023-04-25 鹏城实验室 一种点云属性预测方法、编码方法、解码方法及其设备
CN111813840B (zh) * 2020-05-29 2022-06-14 阿里巴巴集团控股有限公司 一种数据处理方法、设备及存储介质
GB2608107B (en) * 2021-06-18 2023-06-14 Imagination Tech Ltd Mapping multi-dimensional coordinates to a 1D space
US20230206509A1 (en) * 2021-12-27 2023-06-29 Advanced Micro Devices, Inc. Systems and method for generating morton code

Family Cites Families (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5321797A (en) 1990-06-11 1994-06-14 Eastman Kodak Company Apparatus and method for performing coordinate transformation employing stored values and interpolation
EP1265132A3 (en) 1994-12-02 2005-02-09 Intel Corporation Microprocessor with packing operation of composite operands
CN1181694C (zh) * 1995-02-03 2004-12-22 菲利浦电子有限公司 视频图象彩色编码方法和编码装置
GB9509987D0 (en) * 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Manipulation of data
US5614913A (en) 1995-06-07 1997-03-25 Trimble Navigation Optimization of survey coordinate transformations
US6058465A (en) * 1996-08-19 2000-05-02 Nguyen; Le Trong Single-instruction-multiple-data processing in a multimedia signal processor
US6182203B1 (en) 1997-01-24 2001-01-30 Texas Instruments Incorporated Microprocessor
US7197625B1 (en) 1997-10-09 2007-03-27 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
ATE557343T1 (de) 1998-08-24 2012-05-15 Microunity Systems Eng Prozessor und verfahren zur durchführung eines breitschaltungsbefehls mit breitem operand
KR100324253B1 (ko) 1999-12-10 2002-02-25 윤덕용 마이크로 프로세서를 위한 저전력 인스트럭션 디코딩 방법
US6745319B1 (en) 2000-02-18 2004-06-01 Texas Instruments Incorporated Microprocessor with instructions for shuffling and dealing data
US6788303B2 (en) 2001-02-27 2004-09-07 3Dlabs Inc., Ltd Vector instruction set
IL145245A0 (en) 2001-09-03 2002-06-30 Jtc 2000 Dev Delaware Inc System and method including vector-matrix multiplication
US6920446B1 (en) 2002-03-21 2005-07-19 Ncr Corporation Representing spatial objects in a defined space
US7937559B1 (en) 2002-05-13 2011-05-03 Tensilica, Inc. System and method for generating a configurable processor supporting a user-defined plurality of instruction sizes
GB2409059B (en) 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2409064B (en) 2003-12-09 2006-09-13 Advanced Risc Mach Ltd A data processing apparatus and method for performing in parallel a data processing operation on data elements
US7949856B2 (en) 2004-03-31 2011-05-24 Icera Inc. Method and apparatus for separate control processing and data path processing in a dual path processor with a shared load/store unit
US7353860B2 (en) 2004-06-16 2008-04-08 Intel Corporation Heat dissipating device with enhanced boiling/condensation structure
US9557994B2 (en) 2004-07-13 2017-01-31 Arm Limited Data processing apparatus and method for performing N-way interleaving and de-interleaving operations where N is an odd plural number
US8543579B2 (en) * 2005-06-17 2013-09-24 International Business Machines Corporation Range query methods and apparatus
GB0524804D0 (en) 2005-12-05 2006-01-11 Falanx Microsystems As Method of and apparatus for processing graphics
TWI322953B (en) 2005-12-02 2010-04-01 Gauda Inc Optical proximity correction on hardware or software platforms with graphical processing units
US7545382B1 (en) 2006-03-29 2009-06-09 Nvidia Corporation Apparatus, system, and method for using page table entries in a graphics system to provide storage format information for address translation
US7787691B2 (en) * 2006-04-11 2010-08-31 Telefonaktiebolaget Lm Ericsson (Publ) High quality image processing
US7493475B2 (en) 2006-11-15 2009-02-17 Stmicroelectronics, Inc. Instruction vector-mode processing in multi-lane processor by multiplex switch replicating instruction in one lane to select others along with updated operand address
US8284188B1 (en) * 2007-10-29 2012-10-09 Nvidia Corporation Ray tracing system, method, and computer program product for simultaneously traversing a hierarchy of rays and a hierarchy of objects
US8243083B1 (en) * 2007-12-04 2012-08-14 Nvidia Corporation System, method, and computer program product for converting a scan algorithm to a segmented scan algorithm in an operator-independent manner
US8773422B1 (en) * 2007-12-04 2014-07-08 Nvidia Corporation System, method, and computer program product for grouping linearly ordered primitives
US8688723B2 (en) 2007-12-21 2014-04-01 Hewlett-Packard Development Company, L.P. Methods and apparatus using range queries for multi-dimensional data in a database
US8219564B1 (en) 2008-04-29 2012-07-10 Netapp, Inc. Two-dimensional indexes for quick multiple attribute search in a catalog system
US9442960B2 (en) 2008-05-16 2016-09-13 Lawrence Livermore National Security, Llc High performance data layout and processing
US7750842B2 (en) * 2008-09-18 2010-07-06 Raytheon Company Parallel processing to generate radar signatures for multiple objects
US9069686B2 (en) 2008-11-28 2015-06-30 Intel Corporation Digital signal processor having instruction set with one or more non-linear functions using reduced look-up table with exponentially varying step-size
US20100146241A1 (en) * 2008-12-09 2010-06-10 Novafora, Inc. Modified-SIMD Data Processing Architecture
US8321492B1 (en) * 2008-12-11 2012-11-27 Nvidia Corporation System, method, and computer program product for converting a reduction algorithm to a segmented reduction algorithm
WO2010082886A1 (en) * 2009-01-19 2010-07-22 Telefonaktiebolaget Lm Ericsson (Publ) Image processing
US8055687B2 (en) 2009-01-20 2011-11-08 Hewlett-Packard Development Company, L.P. System and method for determining intervals of a space filling curve in a query box
US8385669B2 (en) 2009-03-04 2013-02-26 Microsoft Corporation Scalable mutable tiled multi-resolution texture atlases
US9086872B2 (en) * 2009-06-30 2015-07-21 Intel Corporation Unpacking packed data in multiple lanes
US20120233210A1 (en) 2011-03-12 2012-09-13 Matthew Thomas Bogosian Storage of Arbitrary Points in N-Space and Retrieval of Subset thereof Based on Criteria Including Maximum Distance to an Arbitrary Reference Point
WO2012011860A1 (en) * 2010-07-21 2012-01-26 Telefonaktiebolaget L M Ericsson (Publ) Picture coding and decoding
GB2484489A (en) 2010-10-12 2012-04-18 Advanced Risc Mach Ltd Instruction decoder using an instruction set identifier to determine the decode rules to use.
US8836714B2 (en) * 2010-10-29 2014-09-16 The University Of Utah Research Foundation Rapid, interactive editing of massive imagery data
EP2515168B1 (en) 2011-03-23 2021-01-20 ASML Netherlands B.V. Methods and apparatus for calculating electromagnetic scattering properties of a structure and for reconstruction of approximate structures
EP2508980B1 (en) 2011-04-07 2018-02-28 VIA Technologies, Inc. Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor
US8780112B2 (en) 2011-06-08 2014-07-15 Pacific Data Images Llc Coherent out-of-core point-based global illumination
US8990518B2 (en) 2011-08-04 2015-03-24 Arm Limited Methods of and apparatus for storing data in memory in data processing systems
US9116790B2 (en) 2011-08-04 2015-08-25 Arm Limited Methods of and apparatus for storing data in memory in data processing systems
TWI455018B (zh) 2011-10-03 2014-10-01 Via Tech Inc 編解碼裝置及其執行與驅動方法
US10157061B2 (en) 2011-12-22 2018-12-18 Intel Corporation Instructions for storing in general purpose registers one of two scalar constants based on the contents of vector write masks
US9100184B2 (en) 2011-12-22 2015-08-04 Intel Corporation Instructions processors, methods, and systems to process BLAKE secure hashing algorithm
US9396512B2 (en) 2012-03-09 2016-07-19 Nvidia Corporation Fully parallel construction of k-d trees, octrees, and quadtrees in a graphics processing unit
US8700661B2 (en) 2012-04-12 2014-04-15 Navteq B.V. Full text search using R-trees
US8694575B2 (en) 2012-06-11 2014-04-08 The Johns Hopkins University Data-intensive computer architecture
TWI472957B (zh) 2012-10-04 2015-02-11 Chip Goal Electronics Corp 具有旋轉校正功能的動作感測裝置與方法
US9298457B2 (en) 2013-01-22 2016-03-29 Altera Corporation SIMD instructions for data compression and decompression
US9411593B2 (en) * 2013-03-15 2016-08-09 Intel Corporation Processors, methods, systems, and instructions to consolidate unmasked elements of operation masks
US9183652B2 (en) * 2013-05-15 2015-11-10 Intel Corporation Variable rasterization order for motion blur and depth of field
US10394848B2 (en) * 2013-07-29 2019-08-27 Amazon Technologies, Inc. Generating a multi-column index for relational databases by interleaving data bits for selectivity
US10083195B2 (en) 2014-04-24 2018-09-25 Futurewei Technologies, Inc. System and method for composing a multidimensional index key in data blocks
US20160139919A1 (en) 2014-11-14 2016-05-19 Intel Corporation Machine Level Instructions to Compute a 3D Z-Curve Index from 3D Coordinates
US9772849B2 (en) 2014-11-14 2017-09-26 Intel Corporation Four-dimensional morton coordinate conversion processors, methods, systems, and instructions
US9772850B2 (en) * 2014-11-14 2017-09-26 Intel Corporation Morton coordinate adjustment processors, methods, systems, and instructions
US20160139924A1 (en) 2014-11-14 2016-05-19 Intel Corporation Machine Level Instructions to Compute a 4D Z-Curve Index from 4D Coordinates
US9772848B2 (en) 2014-11-14 2017-09-26 Intel Corporation Three-dimensional morton coordinate conversion processors, methods, systems, and instructions
US20160139921A1 (en) 2014-11-14 2016-05-19 Intel Corporation Vector instruction to compute coordiante of next point in a z-order curve

Also Published As

Publication number Publication date
US9772850B2 (en) 2017-09-26
TWI599950B (zh) 2017-09-21
CN107111489B (zh) 2021-02-09
EP3218816B1 (en) 2021-09-22
KR102275561B1 (ko) 2021-07-12
BR112017010075A2 (pt) 2018-02-14
JP6708334B2 (ja) 2020-06-10
KR20170065587A (ko) 2017-06-13
EP3218816A1 (en) 2017-09-20
WO2016077020A1 (en) 2016-05-19
US20160139931A1 (en) 2016-05-19
JP2017534116A (ja) 2017-11-16
CN107111489A (zh) 2017-08-29
EP3218816A4 (en) 2018-07-25
SG11201703089PA (en) 2017-05-30

Similar Documents

Publication Publication Date Title
TWI599950B (zh) 用於摩頓座標調整之處理器,方法,系統,及製造物件
TWI564795B (zh) 四維摩頓座標轉換處理器、方法、系統及指令
TWI499976B (zh) 用以產生整數序列的方法、設備、系統及製造物品
KR20170097018A (ko) 벡터 브로드캐스트 및 xorand 로직 명령어를 위한 장치 및 방법
TWI582692B (zh) 三維摩頓座標轉換處理器,方法,系統,及指令
TWI663545B (zh) 執行置換運算的處理器
TWI498815B (zh) 用以響應於單一指令而執行橫向部分和之系統、裝置及方法
WO2013095581A1 (en) Apparatus and method for sliding window data access
TWI622879B (zh) 考慮用於執行之載入資料元件中的空間區域性之裝置和方法
JP2017509064A (ja) マスクド結果要素に伝搬する対応アンマスクド結果要素にソース要素を記憶するプロセッサ、方法、システム、及び命令
TWI603289B (zh) 用以從三維座標計算三維z曲線指標的機器階層指令
TWI590155B (zh) 用以從4維座標計算4維z曲線指標的機器階層指令
KR101826707B1 (ko) 마스킹된 결과 요소들로의 전파를 이용하여 연속 소스 요소들을 마스킹되지 않은 결과 요소들에 저장하기 위한 프로세서, 방법, 시스템 및 명령어
TW201732573A (zh) 用於跨步載入(stride load)的系統、設備及方法
WO2013095605A1 (en) Apparatus and method for sliding window data gather
TWI517032B (zh) 用以執行兩向量暫存器之對應填充資料元件間絕對差計算之系統、裝置及方法
TW201643696A (zh) 用於熔合累加指令的設備和方法
TWI610231B (zh) 用於向量水平邏輯指令的裝置及方法