TWI566095B - 向量索引化記憶體存取加上運算及/或邏輯操作之處理器、方法、系統與指令 - Google Patents

向量索引化記憶體存取加上運算及/或邏輯操作之處理器、方法、系統與指令 Download PDF

Info

Publication number
TWI566095B
TWI566095B TW103132771A TW103132771A TWI566095B TW I566095 B TWI566095 B TW I566095B TW 103132771 A TW103132771 A TW 103132771A TW 103132771 A TW103132771 A TW 103132771A TW I566095 B TWI566095 B TW I566095B
Authority
TW
Taiwan
Prior art keywords
memory
plus
package
instruction
operations
Prior art date
Application number
TW103132771A
Other languages
English (en)
Other versions
TW201530309A (zh
Inventor
伊格爾 伊摩雷弗
布瑞特L 托爾
羅伯特 華倫泰
傑瑟斯C 聖亞德連
高塔姆B 多希
瑞瑪K 馬拉迪
普拉森吉特 恰克拉伯提
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 TW201530309A publication Critical patent/TW201530309A/zh
Application granted granted Critical
Publication of TWI566095B publication Critical patent/TWI566095B/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/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
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09FDISPLAYING; ADVERTISING; SIGNS; LABELS OR NAME-PLATES; SEALS
    • G09F9/00Indicating arrangements for variable information in which the information is built-up on a support by selection or combination of individual elements
    • G09F9/30Indicating arrangements for variable information in which the information is built-up on a support by selection or combination of individual elements in which the desired character or characters are formed by combining individual elements
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/454Vector or matrix data
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Landscapes

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

Description

向量索引化記憶體存取加上運算及/或邏輯操作之處理器、方法、系統 與指令 發明領域
本文中所描述的實施例大體上係關於微處理器。特定言之,本文中所描述的實施例大體上係關於回應於指令藉由微處理器存取記憶體。
發明背景
處理器通常可操作以執行指令以存取系統記憶體。舉例來說,處理器可執行用以自系統記憶體載入或讀取資料的載入指令及/或用以將資料儲存或寫入至系統記憶體的儲存指令。
某些處理器可操作以執行向量索引化載入指令(例如,使用索引之向量載入元素之向量)。此等向量索引化載入指令在此項技術中亦被稱作向量收集指令或簡單地稱作收集指令。Intel®進階向量擴展規劃參考(文件參考數字319433-011,2011年6月公佈)描述若干向量收集(VGATHER)指令。實例包括VGATHERDPD、VGATHERQPD、 VGATHERDPS、VGATHERQPS、VPGATHERDD、VPGATHERQD、VPGATHERDQ及VPGATHERQQ。此等收集指令可用以使用多個對應記憶體索引自記憶體收集或載入多個資料元素。
某些處理器可操作以執行向量索引化儲存指令(例如,使用索引之向量儲存元素之向量)。此等向量索引化儲存指令在此項技術中亦被稱作向量散佈指令或簡單地稱作散佈指令。Intel®架構指令集擴展規劃參考(文件參考數字319433-015,2013年7月公佈)描述若干向量散佈(VSCATTER)指令。此等散佈指令可用以使用多個對應記憶體索引將來自源運算元之多個資料元素散佈或儲存至系統記憶體。
依據本發明之一實施例,係特定提出一種處理器,其包含:一解碼單元,其用以接收一向量索引化載入加上運算及/或邏輯(A/L)操作加上儲存指令,該向量索引化載入加上A/L操作加上儲存指令用以指示一源封裝記憶體索引運算元係要具有複數個封裝記憶體索引,且用以指示一源封裝資料運算元係要具有複數個封裝資料元素;以及與該解碼單元耦接之一執行單元,該執行單元回應於該向量索引化載入加上A/L操作加上儲存指令而自對應於該複數個封裝記憶體索引之記憶體位置載入複數個資料元素,對該源封裝資料運算元之該複數個封裝資料元素及經載入之該複數個資料元素執行A/L操作,及將複數個結果資料元 素儲存於對應於該複數個封裝記憶體索引之該等記憶體位置中。
100、300‧‧‧處理器
102‧‧‧指令集
104‧‧‧向量索引化記憶體存取加上運算及/或邏輯(A/L)操作指令
106、206、806‧‧‧向量索引化載入加上A/L操作加上儲存指令
108、908‧‧‧向量索引化載入加上A/L操作指令
110‧‧‧架構上可見或架構暫存器
112、212、1012‧‧‧封裝資料暫存器
114、214、514、614、714‧‧‧源封裝記憶體索引運算元
116、216、516、616、716‧‧‧源封裝資料運算元
118、1118‧‧‧封裝資料操作遮罩暫存器
120、220、1525‧‧‧通用暫存器
122、222‧‧‧記憶體子系統
124、224、324、351‧‧‧執行單元
126、226、326‧‧‧外部記憶體
200‧‧‧指令處理裝置
230、1640、330‧‧‧解碼單元
232‧‧‧第一記憶體位置
233‧‧‧第二記憶體位置
234‧‧‧第三記憶體位置
235‧‧‧第四記憶體位置
236‧‧‧控制信號
310‧‧‧架構暫存器
350-1‧‧‧第一核心
350-N‧‧‧第N核心
352‧‧‧第一層級(L1)快取記憶體
353‧‧‧第二層級(L2)快取記憶體
354‧‧‧最後層級快取記憶體(LLC)
355、1670‧‧‧記憶體單元
356、1664‧‧‧記憶體存取單元
357‧‧‧A/L單元
358‧‧‧暫時暫存器
460‧‧‧方法
461、462、463、464、465‧‧‧區塊
526、626、726‧‧‧記憶體
566‧‧‧向量索引化載入操作加上A/L操作加上儲存操作
618‧‧‧源封裝資料操作遮罩運算元
668‧‧‧已遮罩向量索引化載入操作加上A/L操作加上儲存操作
770‧‧‧向量索引化載入加上A/L操作
772‧‧‧結果封裝資料運算元
880、980‧‧‧操作碼或作業碼
881、981‧‧‧源封裝記憶體索引欄位
882、982‧‧‧源封裝資料欄位
883、983‧‧‧源封裝資料操作遮罩欄位
885、985‧‧‧記憶體定址資訊欄位之源
984‧‧‧可選目的地封裝資料欄位
1218‧‧‧特定合適64位元封裝資料操作遮罩暫存器
1300‧‧‧通用向量友好指令格式
1305‧‧‧無記憶體存取指令範本
1310‧‧‧無記憶體存取完全捨位控制類型操作指令範本/REX'欄位
1312‧‧‧無記憶體存取、寫入遮罩控制、部分捨位控制類型操作指令範本
1315‧‧‧無記憶體存取資料變換類型操作指令範本
1317‧‧‧無記憶體存取、寫入遮罩控制、VSIZE類型操作指令範本
1320‧‧‧記憶體存取指令範本
1325‧‧‧記憶體存取暫時性指令範本
1327‧‧‧記憶體存取、寫入遮罩控制指令範本
1330‧‧‧記憶體存取非暫時性指令範本
1340‧‧‧格式欄位
1342‧‧‧基本操作欄位
1344‧‧‧暫存器索引欄位
1346‧‧‧修飾符欄位
1350‧‧‧擴增操作欄位
1352‧‧‧α欄位
1352A‧‧‧RS欄位
1352A.1、1357A.1‧‧‧捨位
1352A.2‧‧‧資料變換
1352B‧‧‧收回提示欄位
1352B.1‧‧‧暫時性
1352B.2‧‧‧非暫時性
1352C‧‧‧寫入遮罩控制(Z)欄位
1354‧‧‧β欄位
1354A‧‧‧捨位控制欄位
1354B‧‧‧資料變換欄位
1354C‧‧‧資料操縱欄位
1356‧‧‧抑制所有浮點例外狀況(SAE)欄位
1357A‧‧‧RL欄位
1357A.2‧‧‧向量長度(VSIZE)
1357B‧‧‧廣播欄位
1358‧‧‧捨位操作控制欄位
1359A‧‧‧捨位操作欄位
1359B‧‧‧向量長度欄位
1360‧‧‧按比例縮放欄位
1362A‧‧‧位移欄位
1362B‧‧‧位移因子欄位
1364‧‧‧資料元素寬度欄位
1368‧‧‧類別欄位
1368A‧‧‧類別A
1368B‧‧‧類別B
1370‧‧‧寫入遮罩欄位
1372‧‧‧立即數欄位
1374‧‧‧完全作業碼欄位
1400‧‧‧特定向量友好指令格式
1402‧‧‧EVEX首碼
1405‧‧‧REX欄位
1410‧‧‧REX'欄位
1415‧‧‧作業碼映射欄位
1420‧‧‧EVEX.vvvv欄位
1425‧‧‧首碼編碼欄位
1430‧‧‧真實作業碼欄位
1440‧‧‧MOD R/M欄位
1442‧‧‧MOD欄位
1444‧‧‧Reg欄位
1446‧‧‧R/M欄位
1454‧‧‧SIB.xxx欄位
1456‧‧‧SIB.bbb欄位
1500‧‧‧暫存器架構
1510‧‧‧向量暫存器
1515、1726‧‧‧寫入遮罩暫存器
1545‧‧‧純量浮點堆疊暫存器檔案(x87堆疊)
1550‧‧‧MMX封裝整數平坦暫存器檔案
1600‧‧‧處理器管線
1602‧‧‧提取級
1604‧‧‧長度解碼級
1606‧‧‧解碼級
1608‧‧‧分配級
1610‧‧‧重新命名級
1612‧‧‧排程級
1614‧‧‧暫存器讀取/記憶體讀取級
1616‧‧‧執行級
1618‧‧‧寫回/記憶體寫入級
1622‧‧‧例外狀況處置級
1624‧‧‧認可級
1630‧‧‧前端單元
1632‧‧‧分支預測單元
1634‧‧‧指令快取記憶體單元
1636‧‧‧指令轉譯後備緩衝器(TLB)
1638‧‧‧指令提取單元
1650‧‧‧執行引擎單元
1652‧‧‧重新命名/分配器單元
1654‧‧‧引退單元
1656‧‧‧排程器單元
1658‧‧‧實體暫存器檔案單元
1660‧‧‧執行叢集
1672‧‧‧資料TLB單元
1674‧‧‧資料快取記憶體單元
1676‧‧‧層級2(L2)快取記憶體單元
1690‧‧‧處理器核心
1700‧‧‧指令解碼器
1702‧‧‧晶粒上互連網路
1704‧‧‧層級2(L2)快取記憶體
1706‧‧‧層級1(L1)快取記憶體
1706A‧‧‧L1資料快取記憶體
1708‧‧‧純量單元
1710‧‧‧向量單元
1712‧‧‧純量暫存器
1714‧‧‧向量暫存器
1720‧‧‧拌和單元
1722A至1722B‧‧‧數字轉換單元
1724‧‧‧複製單元
1728‧‧‧16寬ALU
1802A‧‧‧單一核心
1802A至1802N‧‧‧核心
1806‧‧‧共用快取記憶體單元
1808‧‧‧專用邏輯
1810‧‧‧系統代理程式
1812‧‧‧基於環狀之互連單元
1814、1872、1882‧‧‧整合記憶體控制器單元
1816‧‧‧匯流排控制器單元
1900‧‧‧系統
1920‧‧‧控制器集線器
1940、2032、2034‧‧‧記憶體
1945、2220、2038‧‧‧共處理器
1950‧‧‧輸入/輸出集線器(IOH)
1960‧‧‧輸入/輸出(I/O)器件
1990‧‧‧圖形記憶體控制器集線器(GMCH)
1995‧‧‧類似連接
2000‧‧‧多處理器系統
2014‧‧‧各種I/O器件
2015‧‧‧額外處理器
2016‧‧‧第一匯流排
2018‧‧‧匯流排橋接器
2020‧‧‧第二匯流排
2022‧‧‧鍵盤及/或滑鼠
2024‧‧‧音訊I/O
2027‧‧‧通訊器件
2028‧‧‧儲存單元
2030‧‧‧指令/程式碼及資料
2039‧‧‧高效能介面
2050‧‧‧點對點互連件
2052、2054、2076、2078、2086、2088、2094、2098‧‧‧點對點(P-P)介面/點對點介面電路
2070‧‧‧第一處理器
2080‧‧‧第二處理器
2090‧‧‧晶片組
2096‧‧‧介面
2115‧‧‧舊版I/O器件
2200‧‧‧SoC
2202‧‧‧互連單元
2210‧‧‧應用程式處理器
2230‧‧‧靜態隨機存取記憶體(SRAM)單元
2232‧‧‧直接記憶體存取(DMA)單元
2240‧‧‧顯示單元
2302‧‧‧高階語言
2304‧‧‧x86編譯器
2306‧‧‧x86二進位碼
2308‧‧‧替代指令集編譯器
2310‧‧‧替代指令集二進位碼
2312‧‧‧指令轉換器
2314‧‧‧不具有至少一x86指令集核心之處理器
2316‧‧‧具有至少一x86指令集核心之處理器
可藉由參考用以說明實施例之以下描述及隨附圖式來最佳地理解本發明。在圖式中:
圖1為可操作以執行一或多個向量索引化記憶體存取加上運算及/或邏輯操作指令之處理器的一實施例之方塊圖。
圖2為可操作以執行一或多個向量索引化記憶體存取加上運算及/或邏輯操作指令之指令處理裝置的一實施例之方塊圖。
圖3為說明處理器中之執行單元的位置之一個實施例之方塊圖。
圖4為處理向量索引化載入加上運算及/或邏輯操作加上儲存指令之一實施例的方法之一實施例之區塊流程圖。
圖5為說明向量索引化載入加上運算及/或邏輯操作加上儲存操作之一實施例的方塊圖。
圖6為說明已遮罩向量索引化載入加上運算及/或邏輯操作加上儲存操作之一實施例的方塊圖。
圖7為說明向量索引化載入加上運算及/或邏輯操作之一實施例的方塊圖。
圖8為用於向量索引化載入加上運算及/或邏輯操作加上儲存指令之格式之一實施例的方塊圖。
圖9為用於向量索引化載入加上運算及/或邏輯操作指令之格式之一實施例的方塊圖。
圖10為封裝資料暫存器之特定合適集合之實例實施例的方塊圖。
圖11為封裝資料操作遮罩暫存器之特定合適集合之實例實施例的方塊圖。
圖12為說明特定合適的64位元封裝資料操作遮罩暫存器之實例實施例的圖。
圖13A為說明根據本發明之實施例之通用向量友好指令格式及其類別A指令模板的方塊圖;而圖13B為說明根據本發明之實施例之通用向量友好指令格式及其類別B指令模板的方塊圖。
圖14A為說明根據本發明之實施例之例示性特定向量友好指令格式的方塊圖。
圖14B為說明根據本發明之一個實施例之構成完全作業碼欄位的特定向量友好指令格式之欄位之方塊圖。
圖14C為說明根據本發明之一個實施例的構成暫存器索引欄位之特定向量友好指令格式之欄位的方塊圖。
圖14D為說明根據本發明之一個實施例的構成擴增操作欄位之特定向量友好指令格式之欄位的方塊圖。
圖15為根據本發明之一個實施例之暫存器架構的方塊圖。
圖16A為說明根據本發明之實施例的例示性按次序管線及例示性暫存器重新命名、無次序發佈/執行管線兩者的方塊圖。
圖16B展示包括耦接至執行引擎單元之前端單元的處理器核心,且前端單元及執行引擎單元兩者皆耦接至記憶體單元。
圖17A為根據本發明之實施例的單一處理器核心以及其至晶粒上互連網路之連接以及其層級2(L2)快取記憶體之本端子集的方塊圖。
圖17B為根據本發明之實施例之圖17A中的處理器核心之部分之擴展視圖。
圖18為根據本發明之實施例之處理器的方塊圖,該處理器可具有一個以上核心,可具有整合記憶體控制器,且可具有整合圖形。
圖19所展示的為根據本發明之一個實施例之系統的方塊圖。
圖20所展示的為根據本發明之一實施例之第一更特定例示性系統的方塊圖。
圖21所展示的為根據本發明之一實施例之第二更特定例示性系統的方塊圖。
圖22所展示的為根據本發明之一實施例之SoC的方塊圖。
圖23為根據本發明之實施例的對比軟體指令轉換器之使用的方塊圖,該軟體指令轉換器用以將源指令集 中之二進位指令轉換成目標指令集中之二進位指令。
較佳實施例之詳細說明
本文中所揭示的為向量索引化記憶體存取加上運算及/或邏輯(A/L)操作指令、用以執行此等指令之處理器、在處理或執行此等指令時由處理器執行之方法及併有一或多個處理器以處理或執行此等指令之系統。在以下描述中,闡述眾多特定細節(例如,特定指令操作、資料格式、處理器組配、微架構細節、系統組配、指令格式、操作序列等)。然而,可在無此等特定細節之情況下實踐實施例。在其他情況下,未詳細展示眾所熟知之電路、結構及技術以避免混淆對描述之理解。
圖1為處理器100之一實施例的方塊圖,該處理器可操作以執行或實行一或多個向量索引化記憶體存取加上運算及/或邏輯(A/L)操作指令104。處理器與可選外部記憶體126(例如,動態隨機存取記憶體(DRAM)、快閃記憶體、其他系統記憶體等)耦接。記憶體126經展示為可選的,此係因為一些實施例係關於處理器100而不是記憶體126。
在一些實施例中,處理器可為通用處理器(例如,在桌上型電腦、膝上型電腦、平板電腦、手持型電腦、蜂巢式電話及類似計算器件中使用之類型)。或者,處理器可為專用處理器。合適專用處理器之實例包括(但不限於)圖形處理器、網路處理器、通訊處理器、密碼編譯處理器、共處理器及數位信號處理器(DSP),這裏僅舉幾個例子。處 理器可為以下各者中之任一者:各種複雜指令集計算(CISC)處理器、各種精簡指令集計算(RISC)處理器、各種超長指令字(VLIW)處理器、其各種混合物,或完全其他類型之處理器。
處理器包括架構上可見或架構暫存器110。術語架構暫存器在此項技術中常常用以指軟體(例如,程式設計師)可見之彼等暫存器及/或由指令集之指令指定以識別運算元的暫存器。將此等架構暫存器與給定微架構下的其他非架構或非架構上可見暫存器(例如,由指令使用之暫時暫存器等)進行對比。為簡單起見,此等架構暫存器在本文中將常常被簡單地稱作暫存器。暫存器通常表示晶粒上處理器儲存位置。暫存器可使用眾所周知的技術而以不同方式實施於不同微架構中且不限於任何特定類型之電路。合適類型之暫存器之實例包括(但不限於)專用實體暫存器、使用暫存器重新命名之動態分配之實體暫存器及其組合。所說明暫存器包括各自可操作以儲存向量或封裝資料之一組向量或封裝資料暫存器112。在一些實施例中,暫存器亦可視情況包括封裝資料操作遮罩暫存器118,但此並非所需要的。在一些實施例中,暫存器亦可包括通用暫存器120,但此並非所需要的。
處理器具有指令集102。指令集包括由處理器支援之指令的集合。指令集之指令表示組合語言指令、機器級指令、巨集指令或經提供至處理器以供執行之指令,這與微指令、微操作或由解碼巨集指令之解碼單元產生且經 提供至執行單元以供執行的指令相反。指令集包括一或多個向量索引化記憶體存取加上運算及/或邏輯(A/L)操作指令104。一或多個向量索引化記憶體存取加上A/L操作指令中的每一者可操作以致使處理器執行向量索引化記憶體存取操作以及向量A/L操作。
在一些實施例中,一或多個向量索引化記憶體存取加上A/L操作指令104可視情況包括一或多個向量索引化載入加上A/L操作加上儲存指令106(例如,一或多個收集加上A/L操作加上散佈指令)。作為實例,在一些實施例中,向量索引化載入加上A/L操作加上儲存指令106(例如,收集加上A/L操作加上散佈指令)可操作以致使處理器:自由源封裝記憶體索引運算元114指示之在外部記憶體126中的記憶體位置收集資料元素,對收集之資料元素及源封裝資料運算元116之資料元素執行A/L操作,及將所得資料元素散佈至由源封裝記憶體索引運算元114指示之在外部記憶體126中的記憶體位置。
在一些實施例中,一或多個向量索引化記憶體存取加上A/L操作指令104可視情況包括一或多個向量索引化載入加上A/L操作指令108(例如,一或多個收集加上A/L操作指令)。作為實例,在一些實施例中,向量索引化載入加上A/L操作指令108(例如,收集加上A/L操作指令)可操作以致使處理器:自由源封裝記憶體索引運算元114指示之在外部記憶體126中的記憶體位置收集資料元素,對收集之資料元素及源封裝資料運算元116之資料元素執行A/L操作,及 將所得資料元素作為結果封裝資料儲存於處理器上儲存位置中(例如,在一或多個封裝資料暫存器中)。
各種不同類型之向量A/L操作適合於指令104。合適A/L操作之幾個實例包括(但不限於)向量或封裝加法操作、減法操作、乘法操作、除法操作、乘加操作、移位操作、旋轉操作、邏輯及(AND)操作、邏輯或(OR)操作、邏輯反(NOT)操作、邏輯及反(AND NOT)操作、平均化操作、最大操作、最小操作及比較操作,這裏僅舉幾個可能的例子。在各種實施例中,可存在自單一向量索引化記憶體存取加上A/L操作指令104直至許多此等不同指令的任何一處。舉例來說,可存在用於不同類型之A/L操作的多個或許多收集加上操作加上散佈指令(例如,相加、相乘、移位等)及/或用於不同類型之A/L操作的多個或許多收集加上操作指令。
在一些實施例中,指令104可視情況指示遮罩暫存器118中之封裝資料操作遮罩運算元,但此並非所需要的。下文將進一步論述封裝資料操作遮罩運算元及封裝資料操作遮罩暫存器。在一些實施例中,指令104可視情況指示(例如,隱含地指示)通用暫存器120(例如,具有基底位址或其他記憶體位址資訊之暫存器),但此並非所需要的。或者,可以其他方式提供記憶體位址資訊。
處理器亦包括一或多個執行單元124。執行單元可操作以執行或實行向量索引化記憶體存取加上A/L操作指令104。合適執行單元之實例包括(但不限於)記憶體存取 單元、記憶體執行單元、收集單元、散佈單元、運算及/或邏輯單元(ALU)及其類似者及其組合。在一些實施例中,可修改記憶體執行單元(或能夠執行收集、散佈或其他向量索引化記憶體存取操作之其他單元)以包括運算及/或邏輯單元或電路。在其他實施例中,記憶體執行單元(或能夠執行收集、散佈或其他向量索引化記憶體存取操作之其他單元)可與A/L單元或電路耦接。在一些實施例中,一或多個執行單元124可包括於用以存取外部記憶體126之記憶體子系統122中。
圖2為指令處理裝置200之一實施例的方塊圖。在一些實施例中,指令處理裝置200可為或可包括於圖1之處理器100中。上文針對處理器100所描述的特徵及細節亦可視情況適用於指令處理裝置200。或者,指令處理裝置200可為或可包括於與處理器100類似或不同的處理器中。此外,處理器100可包含與指令處理裝置200類似或不同的指令處理裝置。
指令處理裝置200與可選外部記憶體226(例如,動態隨機存取記憶體(DRAM)、快閃記憶體、其他系統記憶體等)耦接。作為實例,指令處理裝置及外部記憶體可藉由印刷電路板上之匯流排或其他互連件、經由晶片組或藉由此項技術中已知的其他方法耦接。外部記憶體經展示為可選的,此係因為一些實施例係關於指令處理裝置而不是外部記憶體(例如,在將處理器組裝至系統中之前)。
指令處理裝置200可接收向量索引化載入加上 A/L操作加上儲存指令206。舉例來說,可自指令提取單元、指令佇列、記憶體等接收指令。在一些實施例中,指令206可表示收集加上A/L操作加上散佈指令。指令206可明確地指定(例如,經由一或多個位元或欄位)或以其他方式指示(例如,隱含地指示、經由仿真暫存器映射間接地指示等)具有複數個封裝記憶體索引之源封裝記憶體索引運算元214。源封裝記憶體索引運算元中之記憶體索引中的每一者可指示外部記憶體226中的對應記憶體位置。在一些實施例中,記憶體索引可為16位元、32位元或64位元記憶體索引,但本發明的範疇並不限於此。在一些實施例中,指令206亦可明確地指定(例如,經由一或多個位元或欄位)或以其他方式指示(例如,隱含地指示、經由仿真暫存器映射間接地指示等)具有複數個封裝資料元素之源封裝資料運算元216。
裝置包括一組封裝資料暫存器212。封裝資料暫存器可表示架構暫存器。暫存器可使用眾所周知的技術而以不同方式實施於不同微架構中且不限於任何特定類型之電路。合適類型之暫存器之實例包括(但不限於)專用實體暫存器、使用暫存器重新命名之動態分配之實體暫存器及其組合。如圖所示,在一些實施例中,可將源封裝記憶體索引運算元214及源封裝資料運算元216儲存於封裝資料暫存器之暫存器中。作為實例,指令206可具有一或多個欄位或一組位元以將此等封裝資料暫存器指定為源運算元。或者,其他儲存位置可視情況用於此等運算元中的一或多者。
指令處理裝置200包括指令解碼單元或解碼器 230。在一些實施例中,解碼單元可位於核心中。解碼單元可接收及解碼較高層級機器指令或巨集指令(例如,指令206),且輸出一或多個較低層級微操作、微碼入口點、微指令或反映原始較高層級指令及/或自原始較高層級指令導出之其他較低層級指令或控制信號236。一或多個較低層級指令或控制信號可經由一或多個較低層級(例如,電路層級或硬體層級)操作實施較高層級指令之操作。解碼單元可使用各種不同機構來實施,該等機構包括(但不限於)微碼唯讀記憶體(ROM)、查找表、硬體實施、可規劃邏輯陣列(PLA)及此項技術中已知的其他機構。在其他實施例中,代替具有解碼單元,可使用指令仿真器、轉譯器、變形器、解譯器或其他指令轉換邏輯(例如,以軟體、硬體、韌體或組合來實施)。在另其他實施例中,可使用指令轉換邏輯(例如,仿真模組)及解碼單元之組合。指令轉換邏輯中的一些或全部有可能位於指令處理裝置之剩餘部分的晶粒外,諸如在單獨的晶粒上及/或在記憶體中。
再次參看圖2,一或多個執行單元224與解碼單元230耦接,與封裝資料暫存器212耦接,且與外部記憶體226耦接。在一些實施例中,一或多個執行單元亦可視情況與通用暫存器220耦接,該等通用暫存器可視情況用以儲存基底位址及/或其他記憶體位址資訊以將記憶體索引轉換成記憶體位址。或者,可以其他方式提供記憶體位址資訊。
執行單元可操作以回應於向量索引化載入加上A/L操作加上儲存指令206及/或作為向量索引化載入加上 A/L操作加上儲存指令206的結果(例如,回應於自指令206解碼或以其他方式轉換之一或多個控制信號236,或回應於自用以仿真指令206之一或多個指令解碼的一或多個控制信號236)而執行向量索引化載入操作加上A/L操作加上儲存操作。載入操作、A/L操作及儲存操作皆可表示向量操作。在一些實施例中,操作可涉及處理器:自由源封裝記憶體索引運算元214之對應記憶體索引指示之在外部記憶體226中的可能非鄰接記憶體位置收集或以其他方式載入複數個資料元素,對收集或載入之資料元素及源封裝資料運算元216之相關聯資料元素執行A/L操作,及將所得資料元素散佈或以其他方式儲存至由源封裝記憶體索引運算元214之對應記憶體索引指示之在外部記憶體226中的對應記憶體位置。
在所說明之實例實施例中,第一記憶體位置232最初包括資料元素A1、第二記憶體位置233最初包括資料元素A2、第三記憶體位置234最初包括資料元素A3,且第四記憶體位置235最初包括資料元素A4。此等記憶體位置中的每一者可分別對應於源封裝記憶體索引運算元214之第一至第四記憶體索引。源封裝資料運算元216包括各別對應資料元素B1、B2、B3及B4。作為執行指令的結果,第一記憶體位置232中之資料元素A1可藉由A1操作(OP)B1來覆寫,第二記憶體位置233中之資料元素A2可藉由A2 OP B2來覆寫,第三記憶體位置234中之資料元素A3可藉由A3 OP B3來覆寫,且第四記憶體位置235中之資料元素A4可藉由A4 OP B4來覆寫。在此實例實施例中,操作(OP)可表示任何合適的「垂直」類型之封裝資料操作,諸如封裝加法、封裝減法、封裝乘法、封裝除法、封裝乘加、封裝移位(例如,使A1移位B1,使A2移位B2等)、封裝旋轉(例如,使A1旋轉B1,使A2旋轉B2等)、封裝邏輯及、封裝邏輯或、封裝邏輯反、封裝邏輯及反、封裝平均化、封裝最大、封裝最小、封裝比較,或其類似者。儘管在此實例中,使用「垂直」操作,其中對若干對對應資料元素(例如,運算元中之對應位元位置中的資料元素)執行操作,但此等「垂直」類型操作並非所需要的。在其他實施例中,可執行其他類型之操作,諸如「水平」類型操作、部分「水平」部分「垂直」操作、涉及剛好一個以上資料元素之操作等。
合適執行單元之實例包括(但不限於)記憶體存取單元、記憶體執行單元、收集單元、散佈單元、運算及/或邏輯單元(ALU)及其類似者及其組合。在一些實施例中,可修改記憶體執行單元(或能夠執行收集及/或散佈及/或其他向量索引化記憶體存取操作之其他單元)以包括運算及/或邏輯單元或電路。在其他實施例中,記憶體執行單元(或能夠執行收集及/或散佈及/或其他向量索引化記憶體存取操作之其他單元)可與運算及/或邏輯單元或電路耦接。一或多個執行單元及/或裝置可包括可操作以執行及/或處理指令206之特定或特別邏輯(例如,電路、電晶體或可能與軟體及/或韌體組合之其他硬體)。在一些實施例中,一或多個執行單元可包括至少一些電晶體、積體電路、積體電路之 部分或其他電路或硬體。
在一些實施例中,一或多個執行單元224可包括於用以存取外部記憶體226之記憶體子系統222中,但此並非所需要的。如下文將進一步論述,通常一或多個執行單元224靠外部記憶體226愈近,效率就愈高。舉例來說,此情形可部分歸因於不需要將資料儲存於快取記憶體之一或多個較高層級中及/或不需要在互連件上將資料傳輸直至快取記憶體之最高層級及/或至核心中。
為了避免混淆該描述,已描述了簡單指令處理裝置200,但指令處理裝置可視情況包括一或多個其他習知組件。此等習知組件之實例包括(但不限於)指令提取單元、指令排程單元、分支預測單元、指令及資料快取記憶體、指令及資料轉譯後備緩衝器(TLB)、預取緩衝器、微指令佇列、微指令序列器、匯流排介面單元、引退/認可單元、暫存器重新命名單元及按照慣例用於處理器中的其他組件。此外,實施例可具有多個核心、邏輯處理器或具有相同抑或不同指令集及/或ISA之執行引擎。不誇張地存在處理器中之此等組件的眾多不同組合及組配,且實施例並不限於任何特定此組合或組配。
在一些實施例中,可由位於核心外部的執行單元(例如,由與快取記憶體之最後層級、快取記憶體之次於最後層級或快取記憶體之最後層級中的一者同置及/或接近快取記憶體之最後層級、快取記憶體之次於最後層級或快取記憶體之最後層級中的一者的執行單元)執行操作。在一 些實施例中,可由執行單元對自快取記憶體之最後層級、快取記憶體之次於最後層級或快取記憶體之最後層級中的一者提供或擷取之資料執行操作。在一些實施例中,一或多個執行單元224可邏輯地部署在與最後層級快取記憶體(或快取記憶體之最低層級中的一者)相同的記憶體階層層級處,這與將一或多個執行單元224邏輯地部署在快取記憶體之最高層級(或快取記憶體之最高層級中的一者)處相反。一般而言,快取記憶體之最高層級與一或多個執行單元操作所在之記憶體階層層級之間的快取記憶體之層級愈多,效率就愈高。在一些實施例中,可對繞過快取記憶體之所有或至少一或多個較高層級的資料執行操作,該等較高層級高於提供資料之快取記憶體(例如,快取記憶體之最後層級)。在此等實施例中,並不需要將收集或以其他方式載入之資料在其在記憶體上操作及接著散佈或以其他方式儲存回至記憶體之前傳送至快取記憶體之任何此等較高層級中及/或至核心中。有利的是,避免將此資料儲存於快取記憶體之較高層級中的需要可幫助釋放快取記憶體之較高層級中的空間。此釋放的空間可用以儲存其他資料,此舉可以幫助改良效能。此外,在一些實施例中,可對保持於暫時暫存器中的資料執行操作,這與架構暫存器相反。此情形可幫助釋放架構暫存器以使得其可以由其他指令使用。此情形亦可幫助改良效能(例如,藉由幫助減少將資料調換於暫存器中及之外等)。此外,亦可減少將以其他方式需要將資料傳送至快取記憶體之最高或較高層級中及/或 至核心中的互連頻寬及/或其他資源。可出於其他目的而利用此互連頻寬及/或其他資源,此舉亦可幫助改良效能。
圖3為說明處理器300中之執行單元324的位置之一個實施例之方塊圖。處理器包括一或多個核心350。在說明中,處理器包括第一核心350-1(視情況)至第N核心350-N,其中N可表示核心之任何適當數目。第一核心包括解碼單元330,該解碼單元可類似於本文中其他地方描述之解碼單元,且可解碼向量索引化記憶體存取加上A/L操作指令之一實施例。第一核心亦包括執行單元351。核心亦包括架構暫存器310,該架構暫存器可由第一核心執行之指令來指示。第一核心進一步包括第一層級(L1)快取記憶體352,及視情況第二層級(L2)快取記憶體353。第N核心可視情況類似於第一核心,或與第一核心相同,但此並非所需要的。處理器亦包括與核心耦接之最後層級快取記憶體(LLC)354。處理器亦包括與LLC及核心耦接之記憶體單元355。記憶體單元與外部記憶體326耦接。
在一些實施例中,記憶體單元可包括用以執行或實行向量索引化記憶體存取加上A/L操作指令之一實施例的執行單元。執行單元包括可操作以執行向量索引化記憶體存取操作(例如,收集操作及/或散佈操作)之記憶體存取單元356。執行單元亦包括與記憶體存取單元耦接之A/L單元357。A/L單元可操作以對存取之資料執行A/L操作(例如,使用索引載入之向量資料)。記憶體存取單元356及A/L單元357可一起協作或工作以執行向量索引化記憶體存取 加上A/L操作指令之實施例。在一些實施例中,執行單元324可在將自外部記憶體326載入之資料載入至LLC中之前,在將該資料載入至LLC中時對該資料執行操作,或在已將該資料載入至LLC中之後對自LLC擷取之資料執行操作。在一些實施例中,執行單元324可對尚未使其至核心350、L1快取記憶體352或L2快取記憶體353之資料執行操作。在一些實施例中,執行單元可包括暫時暫存器358以輔助執行此等指令。舉例來說,暫時暫存器可用以儲存載入之資料及/或在執行指令時產生的中間或暫時資料。使用此等暫時暫存器有助於防止佔據架構暫存器310之需要。
圖4為處理向量索引化載入加上A/L操作加上儲存指令之實施例的方法460之一實施例之區塊流程圖。在各種實施例中,方法可由通用處理器、專用處理器或其他指令處理裝置或數位邏輯器件執行。在一些實施例中,圖4之操作及/或方法可由圖1至圖3中的任一者之裝置執行及/或在圖1至圖3中的任一者之裝置內執行。本文中針對圖1至圖3之裝置所描述的組件、特徵及特定可選細節亦視情況適用於圖4之操作及/或方法。或者,圖4之操作及/或方法可由類似或不同處理器或裝置執行及/或在類似或不同處理器或裝置內執行。此外,圖1至圖3中的任一者之裝置可執行與圖4之操作及/或方法相同、類似或不同的操作及/或方法。
方法包括在區塊461處接收向量索引化載入加上A/L操作加上儲存指令。在各種態樣中,可在處理器、指令處理裝置或其部分(例如,指令提取單元、解碼單元、指令 轉換模組等)處接收指令。在各種態樣中,指令可自晶粒外源(例如,自DRAM、碟片、互連件等)或自晶粒上源(例如,自指令快取記憶體、自提取單元等)接收。在一些實施例中,指令可指定或以其他方式指示將具有複數個封裝記憶體索引的源封裝記憶體索引運算元。在一些實施例中,指令可指定或以其他方式指示將具有複數個封裝資料元素的源封裝資料運算元。
方法包括在區塊462處執行向量索引化載入加上A/L操作加上儲存指令。在一些實施例中,此可包括在區塊463處自對應於複數個封裝記憶體索引的記憶體位置載入複數個資料元素,在區塊464處對源封裝資料運算元之複數個封裝資料元素及載入之複數個資料元素執行A/L操作,及在區塊465處將複數個結果資料元素儲存於對應於複數個封裝記憶體索引之記憶體位置中。用於載入操作之相同索引亦可用於儲存操作。
所說明之方法涉及架構上可見之操作(例如,軟體及/或程式設計師可見之操作)。在其他實施例中,方法可視情況包括一或多個微架構操作。作為實例,指令可不按次序進行提取、解碼、排程,源運算元可經存取,執行單元可經啟用以執行,且可執行微架構操作以實施指令之操作(例如,可將封裝資料自快取記憶體儲存至暫時暫存器,可對來自暫時暫存器之封裝資料進行操作,可將結果封裝資料自暫時暫存器儲存回至快取記憶體或至記憶體等)等。
圖5為說明可回應於向量索引化載入加上A/L操 作加上儲存指令之一實施例而執行的向量索引化載入操作加上A/L操作加上儲存操作566之一實施例的方塊圖。在一些實施例中,指令可表示收集加上A/L操作加上散佈指令。
指令可指定或以其他方式指示具有複數個封裝記憶體索引之源封裝記憶體索引運算元514。在所說明之實施例中,源封裝記憶體索引運算元為512位元寬,且包括十六個32位元記憶體索引,但本發明的範疇並不限於此。在所說明之實例中,記憶體索引之值係(自最低有效位置(左側)至最高有效位置(右側))位元134[31:0]、位元231[63:32]、位元20[95:64]及位元186[511:480]。應瞭解此等值僅為說明性實例。主要點在於存在指示或對應於不同記憶體位置的值。或者,可視情況使用其他大小的記憶體索引,諸如,16位元記憶體索引、64位元記憶體索引或此項技術中已知的其他大小的記憶體索引。此外,在其他實施例中,源封裝記憶體索引運算元可具有除512位元以外的另一合適的寬度,諸如64位元、128位元、256位元或1024位元。
指令亦可指定或以其他方式指示具有複數個封裝資料元素之源封裝資料運算元516。在所說明之實施例中,源封裝資料運算元亦為512位元寬,且包括十六個32位元資料元素,但本發明的範疇不限於此。在所說明之實例中,資料元素之值係(自最低有效位置(左側)至最高有效位置(右側))位元B1[31:0]、位元B2[63:32]、位元B3[95:64]直至位元B16[511:480]。或者,可視情況使用其他大小的資料元素,諸如8位元資料元素、16位元資料元素、64位元資料 元素或此項技術中已知的其他大小的資料元素。此外,在其他實施例中,源封裝資料運算元可具有除512位元以外的另一合適寬度,諸如64位元、128位元、256位元或1024位元。並不要求記憶體索引之位元寬度與資料元素之位元寬度相同。資料元素之數目將常常與記憶體索引之數目相同,但此取決於操作之特定類型而並非所需要的。
可回應於已遮罩指令之實施例及/或作為已遮罩指令之實施例的結果執行向量索引化載入操作、A/L操作及儲存操作。操作可自由源封裝記憶體索引運算元之對應記憶體索引指示的在記憶體中之記憶體位置收集或以其他方式載入資料元素。每一記憶體索引可指出或指示對應記憶體位置及/或儲存於其中的資料元素。舉例來說,在所說明之實施例中,記憶體索引134可指示儲存資料元素A1之記憶體位置,記憶體索引231可指示儲存資料元素A2之記憶體位置,記憶體索引20可指示儲存資料元素A3之記憶體位置等等,直至記憶體索引186指示儲存資料元素A16之記憶體位置。可對收集或以其他方式載入之資料元素及源封裝資料運算元516之資料元素執行A/L操作(OP)。接著可將所得資料元素(亦即,由操作之執行而產生的資料元素)散佈或以其他方式儲存回至由源封裝記憶體索引運算元之記憶體索引指示的對應記憶體位置。在一些實施例中,取決於指令之特定操作,結果資料元素可為與源封裝資料運算元之資料元素(例如,32位元資料元素)相同的大小。或者,結果資料元素可比源封裝資料運算元之資料元素更大或更小,諸如8 位元、16位元、64位元等。
在所說明之實施例中,為描述之簡單起見,執行垂直類型操作以產生等於A1 OP B1之第一結果資料元素、等於A2 OP B2之第二結果資料元素、等於A3 OP B3之第三結果資料元素及等於A16 OP B16之第四結果資料元素。雖然已使用術語「等於」,但應瞭解,可視情況執行飽和以使值飽和至最大或最小可表示值。本文中其他地方所描述之先前提到的垂直類型操作中的任一者為合適的(例如,封裝相加、封裝相減、封裝相乘、封裝移位、封裝旋轉、各種不同類型之邏輯操作(例如,及、或、反、及反等)。作為一實例,在操作為封裝加法的狀況下,結果資料元素可包括A1+B1、A2+B2、A3+B3直至A16+B16。作為另一實例,在操作為封裝移位的狀況下,結果資料元素可包括A1移位一移位計數B1,A2移位一移位計數B2等等。在其他實施例中,可視情況執行其他類型之操作(諸如,水平類型操作、部分垂直部分水平類型操作、涉及兩個以上資料元素的操作或其類似者)。如說明中所示,對應於記憶體索引134之記憶體位置中的值A1可藉由A1 OP B1之值來覆寫,對應於記憶體索引231之記憶體位置中的值A2可藉由A2 OP B2之值來覆寫,對應於記憶體索引20之記憶體位置中的值A3可藉由A3 OP B3之值來覆寫,且對應於記憶體索引186之記憶體位置中的值A16可藉由A16 OP B16之值來覆寫。
圖6為說明可回應於已遮罩向量索引化載入加上A/L操作加上儲存指令之一實施例而執行的已遮罩向量索 引化載入操作加上A/L操作加上儲存操作668之一實施例的方塊圖。在一些實施例中,指令可表示已遮罩收集加上A/L操作加上散佈指令。圖6之已遮罩操作及已遮罩指令與圖5之未遮罩操作及未遮罩指令具有某些相似性。為了避免混淆該描述,主要將描述圖6之已遮罩操作/指令的不同及/或額外特性,而不重複關於圖5之未遮罩操作/指令的所有類似或共同特性。然而,應瞭解圖5之未遮罩操作/指令之先前所描述的特性亦視情況適用於圖6,除非另外說明或另外顯而易見。
指令可指定或以其他方式指示具有複數個封裝記憶體索引之源封裝記憶體索引運算元614。指令亦可指定或以其他方式指示具有複數個封裝資料元素之源封裝資料運算元616。此等狀況中的每一者可與先前針對圖5所描述的彼等狀況類似或相同,且可具有相同變化及替代例。
在一些實施例中,已遮罩指令亦可指定或以其他方式指示源封裝資料操作遮罩運算元618。源封裝資料操作遮罩運算元可表示預測運算元或條件性控制運算元,其可操作以遮罩、預測或條件性地控制是否將執行與指令相關聯的對應操作集合及/或是否將儲存對應結果。封裝資料操作遮罩亦可在本文中被稱作操作遮罩、預測遮罩或簡單地稱作遮罩。在一些實施例中,遮罩或預測可處於每一資料元素細微度,以使得對不同資料元素之操作可單獨地及/或與其他操作獨立地預測或條件性地控制。遮罩可包括多個遮罩元素、預測元素或條件性控制元素。在一態樣中,遮 罩之元素可包括於與對應源資料元素及/或結果資料元素的一一對應中。在一些實施例中,每一遮罩元素可為單一遮罩位元。每一單一遮罩位元之值可控制是否將對對應資料元素執行與指令相關聯的對應操作集合及/或是否將會將對應結果儲存於目的地儲存位置中。根據一個可能規約,每一遮罩位元可具有第一值(例如,可設定成二進位1)以允許執行對應操作集合及允許將對應結果資料元素儲存於對應目的地儲存位置中,或可具有第二值(例如,可經清除為二進位0),從而不允許執行對應操作集合及/或不允許將對應結果資料元素儲存於對應目的地儲存位置中。
如圖所示,在源封裝記憶體索引運算元614為512位元寬且具有十六個32位元記憶體索引的狀況下,源封裝資料操作遮罩運算元618可為16位元寬,其中每一位元表示遮罩位元。每一遮罩位元可對應於對應位置中之記憶體索引及/或可對應於將儲存於由記憶體索引所指向的相關聯記憶體位置中的結果資料元素。在說明中,對應位置相對於彼此垂直對準。在其他實施例中,在存在或多或少的結果資料元素時,可存在或多或少的遮罩位元。舉例來說,遮罩可具有等於源封裝記憶體索引614中之記憶體索引之數目(例如,四個、八個、三十二個、六十四個等)的位元寬度。在所說明之實例中,遮罩位元自最低有效位元(左側)至最高有效位元(右側)為1、0、1、......、0。此僅為一個說明性實例。根據所說明規約,二進位0之遮罩位元值表示經遮罩出之結果元素及/或不必執行之操作集合,而二進位1 之遮罩位元值指示未遮罩結果元素及/或將執行之操作集合。對於每一未遮罩元素,將執行對應向量索引化載入操作、A/L操作及儲存操作。相對比地,對於每一已遮罩元素,不必執行對應向量索引化載入操作、A/L操作及儲存操作,或若其被執行,則不必將相關聯結果儲存於相關聯記憶體位置中。常常存在甚至不執行遮罩出操作之優勢,諸如能夠避免不必執行的操作上之故障(例如,頁面故障)。
可回應於已遮罩指令之實施例及/或作為已遮罩指令之實施例的結果而執行已遮罩向量索引化載入操作、A/L操作及儲存操作。在一些實施例中,可或可不對經受遮罩位元之條件性控制的對應資料元素執行操作集合(例如,載入、A/L及儲存操作)。在一些實施例中,僅在對應遮罩位元為未遮罩(例如,設定成二進位1)時,可自由對應記憶體索引指示之對應記憶體位置選擇性地收集或以其他方式載入資料元素。可不載入對應於已遮罩封裝資料操作遮罩位元(例如,經清除至二進位0之位元)之資料元素。接著,可僅對載入之資料元素及源封裝資料運算元616之適當資料元素選擇性地執行A/L操作(OP)。接著,僅在對應遮罩位元為未遮罩(例如,設定成二進位1)時,可將所得資料元素選擇性地散佈或以其他方式儲存回至由記憶體索引指示之對應記憶體位置。
在所說明之實例中,因為源封裝資料操作遮罩之位元位置[0]及[2]中的遮罩位元為未遮罩(例如,設定成二進位1),所以可藉由A1 OP B1之值來覆寫對應於記憶體索引 134之記憶體位置中的值A1,且可藉由A3 OP B3之值來覆寫對應於記憶體索引20之記憶體位置中的值A3。在所說明之實施例中,為描述之簡單起見,執行垂直類型操作。先前所描述的垂直類型操作中的任一者為合適的。在其他實施例中,可替代地執行水平類型操作、部分垂直部分水平類型操作、涉及兩個以上資料元素之操作或其類似者。
在所說明之實例中,因為遮罩之位元位置[1]及[15]中的遮罩位元經遮罩出(例如,經清除至二進位0),所以不將與指令相關聯的操作集合之結果儲存於由對應記憶體索引指示之記憶體位置中。而是,在一些狀況下,此等記憶體位置可保持或保留其在指令之前先存在的值(例如,可不由指令改變)。如圖所示,與記憶體索引231相關聯的記憶體位置可保持初始值A1,且與記憶體索引186相關聯的記憶體位置可保持初始值A16。或者,可將零或其他預定值儲存於經遮罩出記憶體位置中。
圖7為說明可回應於向量索引化載入加上A/L操作指令之一實施例而執行的向量索引化載入加上A/L操作770之一實施例之方塊圖。在一些實施例中,指令可表示收集加上A/L操作指令。圖7之操作及指令與圖5之操作及指令具有某些相似性。為了避免混淆該描述,將主要描述圖7之操作/指令的不同及/或額外特性,而不重複關於圖5之操作/指令的所有類似或共同特性。然而,應瞭解,圖5之操作/指令之先前所描述的特性亦視情況適用於圖7,除非另外說明或另外顯而易見。
指令可指定或以其他方式指示具有複數個封裝記憶體索引之源封裝記憶體索引運算元714。指令亦可指定或以其他方式指示具有複數個封裝資料元素之源封裝資料運算元716。此等狀況中的每一者可與先前針對圖5所描述的彼等狀況類似或相同,且可具有相同變化及替代例。
可回應於指令之實施例及/或作為指令之實施例的結果而執行向量索引化載入加上A/L操作。操作可自由源封裝記憶體索引運算元714之對應記憶體索引指示的記憶體位置收集或以其他方式載入資料元素。舉例來說,在所說明之實施例中,可自由記憶體索引134指示之記憶體位置收集資料元素A1,可自由記憶體索引231指示之記憶體位置收集資料元素A2,可自由記憶體索引20指示之記憶體位置收集資料元素A3等等,直至自由記憶體索引186指示之記憶體位置收集的資料元素A16。接著,可對收集或以其他方式載入之資料元素及源封裝資料運算元之適當資料元素執行A/L操作(OP)。此情形可產生複數個結果資料元素。
圖5之操作/指令相對比,在此實施例中,可不將結果資料元素散佈或以其他方式儲存回至記憶體726。而是,可將結果資料元素儲存於位於晶粒上或處理器上之儲存位置中的結果封裝資料運算元中。舉例來說,在一些實施例中,可將結果資料元素儲存於處理器之封裝資料暫存器中的結果封裝資料中。在一些實施例中,指令可具有明確地指定封裝資料暫存器之欄位或位元集合。或者,封裝資料暫存器可視情況由指令隱含地指示。在其他實施例 中,暫時暫存器可用以儲存結果封裝資料。
在所說明之實施例中,為描述之簡單起見,執行垂直類型操作以產生等於A1 OP B1之第一結果資料元素、等於A2 OP B2之第二結果資料元素、等於A3 OP B3之第三結果資料元素及等於A16 OP B16之第十六結果資料元素。本文中其他地方所描述之先前提到的垂直類型操作中的任一者為合適的。在其他實施例中,可視情況執行其他類型之操作(諸如,水平類型操作、部分垂直部分水平類型操作、涉及兩個以上資料元素之操作或其類似者)。將結果資料元素儲存於結果封裝資料運算元772中(例如,在封裝資料暫存器中)。如圖所示,將第一結果資料元素儲存於位元[31:0]中,將第二結果元素儲存於位元[63:32]中,將第三結果資料元素儲存於位元[95:64]中,直至儲存於位元[511:480]中之第十六結果資料元素。在其他實施例中,取決於指令之特定操作,結果資料元素可比源封裝資料運算元之資料元素更大抑或更小,諸如8位元、16位元、64位元等。
圖7展示未遮罩操作/指令之一實施例。其他實施例可包括對應已遮罩操作/指令。如上文所描述可實質上結合圖6執行遮罩,除了結果將儲存或不儲存於結果封裝資料772中而是在記憶體726中。先前結合圖6所描述的遮罩之特性亦可適用於此指令/操作。
在各種實施例中,圖5至圖7中的任一者之操作可由圖1至圖3中的任一者之裝置執行及/或在該裝置內執行。本文中針對圖1至圖3中的任一者之裝置所描述的組 件、特徵及特定可選細節亦可視情況適用於圖5至圖7中的任一者之操作。或者,圖5至圖7中的任一者之操作可由與圖1至圖3之裝置類似或不同的裝置執行及/或在與圖1至圖3之裝置類似或不同的裝置內執行。此外,圖1至圖3中的任一者之裝置可執行與圖5至圖7之操作相同、類似或不同的操作。圖5至圖7中的任一者之操作亦可作為圖4之方法的部分來執行。或者,圖4之方法可執行與圖5至圖7之操作類似或不同的操作。
本文中所揭示之指令為通用指令,且可用於各種不同目的。為了進一步說明某些概念,考慮以下詳細實例。考慮以下循環:FOR I = 1, N DATA[ INDEX[I] ] = DATA[ INDEX[I] ] + COUNT
在無本文中所揭示之指令的情況下,此循環可如下編碼於x86指令中:MOV ZMM2, [ INDEX+RSI ] GATHERDPS ZMM1, [ DATA + ZMM2 * SCALE ] ADDPS ZMM1, ZMM1, ZMM3 SCATTERDPS [ DATA + ZMM2 * SCALE ], ZMM1
然而,在收集加上封裝相加加上散佈指令之一實施例的情況下,此循環可如下更簡潔地編碼:MOV ZMM2, [ INDEX+RSI ] GATADDSCATDPS [ DATA + ZMM2 * SCALE ], ZMM3
有利的是,此實例說明收集加上封裝相加加上散 佈指令可幫助消除或減少一些指令,此舉可幫助增加碼密度,且增加效能。此外,效能增益亦可自減少位址產生及針對每一元素之載入/儲存處置中之額外負荷導出。如上文所提及,實際效能增益可取決於其中指令實施於管線中之單元或電路的位置。一般而言,指令經實施靠記憶體愈近,或相反地,離系統中快取記憶體的最高層級愈遠,效能增益將愈佳。如上文所提及,此情形可部分歸因於避免將與指令之執行相關聯的資料儲存於快取記憶體之最高或較高層級中的需要,避免在互連件上將資料傳輸至快取記憶體之最高或較高層級之需要等。
圖8為用於向量索引化載入加上A/L操作加上儲存指令806之格式的一實施例之方塊圖。指令包括操作碼或作業碼880。作業碼可表示可操作以識別將執行之指令及/或操作的類型之複數個位元或一或多個欄位。指令亦包括可操作來指定源封裝記憶體索引運算元之源封裝記憶體索引欄位881。指令亦包括可操作以指定源封裝資料運算元之源封裝資料欄位882。在一些實施例中,指令亦可視情況包括可操作以指定源封裝資料操作遮罩之源封裝資料操作遮罩欄位883。在一些實施例中,指令亦可視情況包括記憶體定址資訊欄位之源885以指定具有基底位址或其他記憶體位址資訊之源(例如,通用暫存器)。或者,指令可隱含地指示具有此記憶體定址資訊之暫存器或其他源。
圖9為用於向量索引化載入加上A/L操作指令908之格式的一實施例之方塊圖。指令包括操作碼或作業碼 980。作業碼可表示可操作以識別將執行之指令及/或操作之類型的複數個位元或一或多個欄位。指令亦包括可操作以指定源封裝記憶體索引運算元之源封裝記憶體索引欄位981。指令亦包括可操作以指定源封裝資料運算元之源封裝資料欄位982。在一些實施例中,指令亦可視情況包括可操作指定源封裝資料操作遮罩之源封裝資料操作遮罩欄位983。指令亦可包括可操作以指定目的地封裝資料儲存位置之可選目的地封裝資料欄位984。在一些實施例中,目的地封裝資料儲存位置可為封裝資料暫存器或其他晶粒上或處理器上儲存位置。在一些實施例中,指令亦可視情況包括記憶體定址資訊欄位之源985以指定具有基底位址或其他記憶體位址資訊之源(例如,通用暫存器)。或者,指令可隱含地指示具有此記憶體定址資訊之暫存器或其他源。
圖8至圖9中,各種欄位中的每一者可包括足以指定暫存器或具有運算元之其他儲存位置的位址之一組位元。欄位之位元可為鄰接的及/或非鄰接的。在其他實施例中,各種欄位中的任一者中的一或多者對於指令而言可為隱含的(例如,由指令之作業碼隱含地指示),而不是經由欄位明確地指定。替代實施例可添加額外欄位或省略一些欄位。此外,欄位之所說明次序/配置並非所需要的。而是,欄位可重新配置,某些欄位可重疊等。
在一些實施例中,指令格式可遵循EVEX編碼或指令格式,但此並非所需要的。下文將進一步論述EVEX編碼。在一個實施例中,兩個舊版首碼可用以覆寫逸出62之 行為。舉例來說,首碼F2可暗示使用載入操作格式化及VSIB。在一個實施例中,此首碼F2可用於向量索引化載入加上A/L操作指令,如本文中其他地方所揭示。首碼F3可暗示使用操作儲存格式化及VSIB。在一個實施例中,此首碼F3可用於向量索引化載入加上A/L操作加上儲存指令,如本文中其他地方所揭示。作為實例,對於VADDPS編碼而言:EVEX.U1.NDS.512.0F.W0 58 /r VADDPS zmm1, {k1}, zmm2, [rax]
收集加上封裝相加指令可表示為:F2.EVEX.U1.NDS.512.0F.W0 58 /r and VGATHERADDPS zmm1, {k1}, zmm2, [rax+zmm3*scale]
收集加上封裝相加加上散佈指令可表示為:F3.EVEX.U1.NDS.512.0F.W0 58 /r and VGATSCATADDPS [rax+zmm3*scale] {k1}, zmm1, zmm2
zmm1、zmm2及zmm3係指512位元封裝資料暫存器。{k1}表示64位元遮罩暫存器。rax表示用以保持記憶體定址資訊之整數通用暫存器。此等情形僅為合適編碼之說明性實例。本發明的範疇不限於此等編碼。
為了進一步說明某些概念,考慮合適封裝資料格式之幾個實例。128位元封裝字格式為128位元寬,且包括八個16位元寬字資料元素。128位元封裝雙字格式為128位元,且包括四個32位元雙字資料元素。128位元封裝四倍字格式846為128位元,且包括兩個64位元四倍字資料元素。256位元封裝字格式為256位元寬,且包括十六個16位元寬 字資料元素。256位元封裝雙字格式850為256位元,且包括八個32位元雙字資料元素。256位元封裝四倍字格式為256位元,且包括四個64位元四倍字資料元素。512位元封裝字格式為512位元寬,且包括三十二個16位元寬字資料元素。512位元封裝雙字格式為512位元,且包括十六個32位元雙字資料元素。512位元封裝四倍字格式為512位元,且包括八個64位元四倍字資料元素。其他封裝資料格式可包括封裝32位元單一精確度浮點格式或封裝64位元雙倍精確度浮點格式。適合於收集及/或散佈指令之任何其他資料元素大小(例如,較寬或較窄)亦為合適的。此外,較寬或較窄封裝資料寬度亦為合適的,諸如,64位元封裝資料、1024位元封裝資料等。一般而言,封裝資料元素之數目等於封裝資料之位元的大小除以封裝資料元素之位元的大小。
圖10為封裝資料暫存器1012之特定合適集合的實例實施例之方塊圖。所說明封裝資料暫存器包括三十二個512位元封裝資料或向量暫存器。此等三十二個512位元暫存器經標記為ZMM0至ZMM31。在所說明之實施例中,此等暫存器中之較低十六個(亦即ZMM0至ZMM15)之較低次序256位元混疊或覆疊於標記為YMM0至YMM15之各別256位元封裝資料或向量暫存器上,但此並非所需要的。同樣,在所說明之實施例中,YMM0至YMM15之較低次序128位元混疊或覆疊於標記為XMM0至XMM1之各別128位元封裝資料或向量暫存器上,但此並非所需要的。512位元暫存器ZMM0至ZMM31可操作以保持512位元封裝資料、256 位元封裝資料或128位元封裝資料。256位元暫存器YMM0至YMM15可操作保持256位元封裝資料或128位元封裝資料。128位元暫存器XMM0至XMM1可操作以保持128位元封裝資料。暫存器中的每一者可用以儲存封裝浮點資料抑或封裝整數資料。支援不同資料元素大小,包括至少8位元位元組資料、16位元字資料、32位元雙字、單一精確度浮點資料、64位元四倍字及雙倍精確度浮點資料。合適封裝資料暫存器之替代實施例可包括不同數目之暫存器、不同大小之暫存器,可或可不在較小暫存器上混疊較大暫存器,且亦可或可不用於浮點資料。
圖11為封裝資料操作遮罩暫存器1118之特定合適集合的實例實施例之方塊圖。封裝資料操作遮罩暫存器中的每一者可用以儲存封裝資料操作遮罩。在所說明之實施例中,集合包括標記為k0至k7之八個封裝資料操作遮罩暫存器。替代實施例可包括少於八個(例如,兩個、四個、六個等)抑或大於八個(例如,十六個、二十個、三十二個等)封裝資料操作遮罩暫存器。在所說明之實施例中,封裝資料操作遮罩暫存器中的每一者為64位元。在替代實施例中,封裝資料操作遮罩暫存器之寬度可寬於64位元(例如,80位元、128位元等)抑或窄於64位元(例如,8位元、16位元、32位元等)。作為實例,指令可使用三個位元(例如,3位元欄位)來編碼或指定八個封裝資料操作遮罩暫存器k0至k7中的任一者。在替代實施例中,在存在較少或較多的封裝資料操作遮罩暫存器時分別可使用較少抑或較多的位元。
圖12為說明特定合適64位元封裝資料操作遮罩暫存器1218之實例實施例的圖,且說明用作封裝資料操作遮罩及/或用於遮罩之位元的數目取決於封裝資料寬度及資料元素寬度。所說明遮罩暫存器為64位元寬,但如上文所提及此並非所需要的。一般而言,在使用單一每一元素遮罩控制位元時,用於遮罩之位元的數目等於位元之封裝資料寬度除以位元之封裝資料元素寬度。為了進一步進行說明,考慮幾個可能的實例實施例。僅8位元(例如,僅較低8位元)可用於具有32位元資料元素之256位元封裝資料。僅16位元(例如,僅較低16位元)亦可用於具有32位元資料元素之512位元封裝資料。僅32位元(例如,僅較低32位元)亦可用於具有32位元資料元素之1024位元封裝資料。所有64位元的位元可用於具有16位元資料元素之1024位元封裝資料。
在上文的論述中,已強調垂直類型向量操作以促進說明及描述,但本發明的範疇並不限於此。利用垂直類型之向量操作的本文中論述之任何實施例可經修改以具有另一非垂直類型之向量操作(例如,部分垂直及部分水平操作、對不止一對對應垂直對準資料元素的操作等)。
在其他實施例中,代替涉及單一運算及/或邏輯操作(例如,封裝乘法或封裝加法操作)之指令,指令之一實施例可涉及將按順序執行之多個不同運算及/或邏輯操作。舉例來說,在向量索引化載入之後,可如本文中其他地方所描述般執行第一運算及/或邏輯操作,接著可視情況 對第一運算及/或邏輯操作之結果及可能其他資料執行第二運算及/或邏輯操作,且接著可將第二運算及/或邏輯操作之結果儲存至記憶體。
針對圖3及圖5至圖12中的任一者描述之組件、特徵及細節亦可視情況用於圖1至圖2及圖4中的任一者中。此外,本文中針對裝置中的任一者所描述的組件、特徵及細節亦可視情況用於本文中所描述的方法中的任一者中,該等方法在實施例中可由此裝置及/或與此裝置一起執行。
指令集包括一或多個指令格式。給定指令格式定義各種欄位(位元之數目、位元之位置)以尤其指定將執行之操作(作業碼)及將執行操作之運算元。經由指令模板(或子格式)之定義進一步分解一些指令格式。舉例來說,給定指令格式之指令模板可經定義以具有指令格式之欄位的不同子集(包括之欄位通常按相同次序,但至少一些具有不同位元位置,因為包括較少的欄位)及/或經定義以具有不同解譯之給定欄位。因此,使用給定指令格式(且在經定義的情況下在彼指令格式之指令模板中的給定者中)表達ISA之每一指令,且每一指令包括用於指定操作及運算元之欄位。舉例來說,例示性加法指令具有特定作業碼及指令格式,該指令格式包括用以指定彼作業碼之作業碼欄位及用以選擇運算元之運算元欄位(源1/目的地及源2);且此加法指令在指令串流中的出現將具有選擇特定運算元之運算元欄位中的特定內容。已發佈及/或公佈被稱作進階向量擴展(AVX)(AVX1及AVX2)且使用向量擴展(VEX)譯碼方案之一組 SIMD擴展(例如,參見Intel®64及IA-32架構軟體開發人員手冊,2011年10月;及參見Intel®進階向量擴展規劃參考,2011年6月)。
例示性指令格式
本文中所描述之指令之實施例可以不同格式來體現。另外,下文詳細描述例示性系統、架構及管線。可在此等系統、架構及管線上執行指令之實施例,但實施例不限於詳細描述之彼等實施例。
通用向量友好指令格式
向量友好指令格式為適於用於向量指令之指令格式(例如,存在向量運算所特定之某些欄位)。雖然描述經由向量友好指令格式支援向量操作及純量操作之實施例,但替代實施例僅使用向量操作、向量友好指令格式。
圖13A至圖13B為說明根據本發明之實施例之通用向量友好指令格式及其指令模板的方塊圖。圖13A為說明根據本發明之實施例之通用向量友好指令格式及其類別A指令模板的方塊圖;而圖13B為說明根據本發明之實施例之通用向量友好指令格式及其類別B指令模板的方塊圖。具體言之,通用向量友好指令格式1300,針對其定義類別A及類別B指令模板,該等指令模板包括無記憶體存取1305指令模板及記憶體存取1320指令模板。在向量友好指令格式之內容脈絡中通用之術語係指未繫結至任何特定指令集之指令格式。
雖然在向量友好指令格式支援以下情形之情況 下描述本發明之實施例:64位元組向量運算元長度(或大小)與32位元(4位元組)或64位元(8位元組)資料元素寬度(或大小)(且因此,64位元組向量由16個雙字大小之元素或8個四倍字大小之元素組成);64位元組向量運算元長度(或大小)與16位元(2位元組)或8位元(1位元組)資料元素寬度(或大小);32位元組向量運算元長度(或大小)與32位元(4位元組)、64位元(8位元組)、16位元(2位元組)或8位元(1位元組)資料元素寬度(或大小);及16位元組向量運算元長度(或大小)與32位元(4位元組)、64位元(8位元組)、16位元(2位元組)或8位元(1位元組)資料元素寬度(大小);替代實施例可支援更多、更少及/或不同向量運算元大小(例如,256位元組向量運算元)與更多、更少或不同資料元素寬度(例如,128位元(16位元組)資料元素寬度)。
圖13A中之類別A指令模板包括:1)在無記憶體存取1305指令模板內展示無記憶體存取、完全捨位控制類型操作1310指令模板及無記憶體存取、資料變換類型操作1315指令模板;及2)在記憶體存取1320指令模板內展示記憶體存取、暫時性1325指令模板及記憶體存取、非暫時性1330指令模板。圖13B中之B類指令模板包括:1)在無記憶體存取1305指令模板內展示無記憶體存取、寫入遮罩控制、部分捨位控制類型操作1312指令模板及無記憶體存取、寫入遮罩控制、vsize類型操作1317指令模板;及2)在記憶體存取1320指令模板內展示記憶體存取、寫入遮罩控制1327指令模板。
通用向量友好指令格式1300包括下文按圖13A至圖13B中所說明之次序所列出的以下欄位。
格式欄位1340-此欄位中之特定值(指令格式識別符值)獨特地識別向量友好指令格式,且因此識別向量友好指令格式中之指令在指令串流中的出現。因而,在不需要指令集僅具有通用向量友好指令格式之意義上,此欄位為可選的。
基本操作欄位1342-其內容區分不同基本操作。
暫存器索引欄位1344-其內容直接地或經由位址產生指定源及目的地運算元之位置,該等位置係在暫存器中或在記憶體中。此等包括足夠數目個位元以自P×Q(例如,32×512、16×128、32×1024、64×1024)暫存器檔案中選擇N個暫存器。雖然在一個實施例中,N可高達三個源及一目的地暫存器,但替代實施例可支援更多或更少個源及目的地暫存器(例如,可支援高達兩個源,其中此等源中之一者亦充當目的地,可支援高達三個源,其中此等源中之一者亦充當目的地,可支援高達兩個源及一目的地)。
修飾符欄位1346-其內容區分指定記憶體存取之通用向量指令格式中的指令之出現與不指定記憶體存取之通用向量指令格式中的指令之出現;亦即,在無記憶體存取1305指令模板與記憶體存取1320指令模板之間。記憶體存取操作讀取記憶體階層及/或寫入至記憶體階層(在一些狀況下,使用暫存器中之值指定源及/或目的地位址),而非記憶體存取操作並不進行此操作(例如,源及目的地為暫存 器)。雖然在一個實施例中,此欄位亦在三種不同方式之間選擇以執行記憶體位址計算,但替代實施例可支援更多、更少或不同方式來執行記憶體位址計算。
擴增操作欄位1350-其內容區分除基本操作之外欲執行多種不同操作中之哪些者。此欄位為內容脈絡所特定的。在本發明之一個實施例中,將此欄位劃分成類別欄位1368、α欄位1352及β欄位1354。擴增操作欄位1350允許在單一指令而不是2個、3個或4個指令中執行共同群組之操作。
按比例縮放欄位1360-其內容允許對用於記憶體位址產生(例如,用於使用2scale×索引+基數之位址產生)的索引欄位之內容進行按比例縮放。
位移欄位1362A-其內容用作記憶體位址產生(例如,用於使用2scale×索引+基數+位移之位址產生)之部分。
位移因子欄位1362B(應注意,位移欄位1362A在位移因子欄位1362B之正上方之並置指示使用一者或另一者)-其內容用作位址產生之部分;其指定將根據記憶體存取之大小(N)進行按比例縮放之位移因子-其中N為記憶體存取中之位元組之數目(例如,用於使用2scale×索引+基數+經按比例縮放之位移之位址產生)。忽略冗餘低階位元且因此,將位移因子欄位之內容乘以記憶體運算元總大小(N)以便產生欲在計算有效位址中使用的最後的位移。N之值係由處理器硬體在執行時間基於全作業碼欄位1374(稍後在下文加以描述)及資料操縱欄位1354C判定。在不用於無記憶 體存取1305指令模板及/或不同實施例可實施兩者中之僅一者或不實施兩者中之任一者的意義上,位移欄位1362A及位移因子欄位1362B為可選的。
資料元素寬度欄位1364-其內容區分將使用數個資料元素寬度中之哪一者(在用於所有指令之一些實施例中;在僅用於指令中之一些指令之其他實施例中)。在僅支援一資料元素寬度及/或使用作業碼之某一態樣支援資料元素寬度之情況下不需要的意義上,此欄位為可選的。
寫入遮罩欄位1370-其內容基於每一資料元素位置控制目的地向量運算元中之彼資料元素位置是否反映基本操作及擴增操作之結果。類別A指令模板支援合併-寫入遮罩,而類別B指令模板支援合併-與歸零-寫入遮罩兩者。在合併時,向量遮罩允許在執行任何操作(藉由基本操作及擴增操作指定)期間保護目的地中之任何元素集合使其免於更新;在另一實施例中,保存目的地中之各元素之舊值,其中對應遮罩位元具有0。與此對比,當進行歸零時,向量遮罩允許在執行任何操作(藉由基本操作及擴增操作指定)期間將目的地中之任何元素集合歸零;在一個實施例中,當對應遮罩位元具有0值時,將目的地之元素設定為0。此功能性之一子集為控制經執行之操作之向量長度的能力(亦即,經修改之元素之跨度,自第一元素至最後的元素);然而,經修改之元素不必要為連續的。因此,寫入遮罩欄位1370允許進行部分向量操作,包括載入、儲存、算術、邏輯等。雖然在寫入遮罩欄位1370之內容選擇數個寫入遮 罩暫存器中之一者(該選定寫入遮罩暫存器含有待使用之寫入遮罩)(且因此寫入遮罩欄位1370之內容間接地識別待執行之彼遮罩)的情況下描述本發明之實施例,但替代實施例改為或另外允許遮罩寫入欄位1370之內容直接指定待執行之遮罩。
立即數欄位1372-其內容允許達成立即數之規範。在於不支援立即數之通用向量友好格式之實施中不存在且在不使用立即數之指令中不存在的意義上,此欄位為可選的。
類別欄位1368-其內容區分指令之不同類別。參看圖13A至圖13B,此欄位之內容在類別A指令與類別B指令之間選擇。在圖13A至圖13B中,使用圓角方形來指示特定值存在於欄位中(例如,用於類別欄位1368之類別A 1368A及類別B 1368B,分別在圖13A至圖13B中)。
類別A之指令模板
在類別A之非記憶體存取1305指令模板的狀況下,將α欄位1352解譯為RS欄位1352A,其內容區分將執行不同擴增操作類型中的哪一者(例如,捨位1352A.1及資料變換1352A.2分別經指定用於無記憶體存取、捨位類型操作1310及無記憶體存取、資料變換類型操作1315指令模板),而β欄位1354區分將執行指定類型的操作中的哪一者。在無記憶體存取1305指令模板中,並不呈現按比例縮放欄位1360、位移欄位1362A及位移按比例縮放欄位1362B。
無記憶體存取指令模板-完全捨位控制類型操作
在無記憶體存取完全捨位控制類型操作1310指令模板中,將β欄位1354解譯為捨位控制欄位1354A,其內容提供靜態捨位。雖然在本發明之所描述之實施例中,捨位控制欄位1354A包括抑制所有浮點例外狀況(SAE)欄位1356及捨位操作控制欄位1358,但替代實施例可支援、可將此等兩個概念編碼至相同欄位中或僅具有此等概念/欄位中之一者或另一者(例如,可僅具有捨位操作控制欄位1358)。
SAE欄位1356-其內容區分是否停用例外狀況事件報告;當SAE欄位1356之內容指示啟用抑制時,給定指令不報告任何種類之浮點例外狀況旗標且不升高任何浮點例外狀況處理常式。
捨位操作控制欄位1358-其內容區分欲執行捨位操作群組中之哪些者(例如,向上捨位、向下捨位、朝向零捨位及朝向最近值捨位)。因此,捨位操作控制欄位1358允許基於每一指令改變捨位模式。在本發明之一個實施例中,其中處理器包括用於指定捨位模式之控制暫存器,捨位操作控制欄位1350之內容覆寫彼暫存器值。
無記憶體存取指令模板-資料變換類型操作
在無記憶體存取資料變換類型操作1315指令模板中,將β欄位1354解譯為資料變換欄位1354B,其內容區分將執行數個資料變換中之哪一者(例如,無資料變換、拌和、廣播)。
在類別A之記憶體存取1320指令模板之狀況 下,將α欄位1352解譯為收回提示欄位1352B,其內容區分將使用收回提示中之哪一者(在圖13A中,暫時性1352B.1及非暫時性1352B.2分別經指定用於記憶體存取、暫時性1325指令模板及記憶體存取、非暫時性1330指令模板),而將β欄位1354解譯為資料操縱欄位1354C,其內容區分將執行數個資料操縱操作(亦被稱為原語)中之哪一者(例如,無操縱;廣播;對源進行向上轉換;及對目的地進行向下轉換)。記憶體存取1320指令模板包括按比例縮放欄位1360及視情況位移欄位1362A或位移按比例縮放欄位1362B。
向量記憶體指令執行來自記憶體之向量載入及至記憶體之向量儲存,其中具有轉換支援。如同常規向量指令,向量記憶體指令以按資料元素方式自記憶體傳送資料/將資料傳送至記憶體,其中實際上經傳送之元素係藉由經選擇作為寫入遮罩之向量遮罩之內容來指示。
記憶體存取指令模板-暫時性
暫時性資料為很可能在不久後重新使用之資料,其足以受益於快取。然而,此情形為提示,且不同處理器可以不同方式來實施該情形,包括完全忽略提示。
記憶體存取指令模板-非暫時性
非暫時性資料為不可能在足以受益於第一層級快取記憶體中之快取之不久後重新使用且應被給予收回優先權的資料。然而,此情形為提示,且不同處理器可以不同方式來實施該情形,包括完全忽略提示。
類別B之指令模板
在類別B之指令模板之狀況下,將α欄位1352解譯為寫入遮罩控制(Z)欄位1352C,其內容區分由寫入遮罩欄位1370控制之寫入遮罩應為合併抑或歸零。
在類別B之非記憶體存取1305指令模板的狀況下,將β欄位1354之部分解譯為RL欄位1357A,其內容區分將執行不同擴增操作類型中的哪一者(例如,捨位1357A.1及向量長度(VSIZE)1357A.2分別經指定用於無記憶體存取、寫入遮罩控制、部分捨位控制類型操作1312指令模板及無記憶體存取、寫入遮罩控制、VSIZE類型操作1317指令模板),而β欄位1354之剩餘部分區分將執行指定類型之操作中的哪一者。在無記憶體存取1305指令模板中,並不呈現按比例縮放欄位1360、位移欄位1362A及位移按比例縮放欄位1362B。
在無記憶體存取、寫入遮罩控制、部分捨位控制類型操作1310指令模板中,將β欄位1354之其餘部分解譯為捨位操作欄位1359A且停用例外狀況事件報告(給定指令不報告任何種類之浮點例外狀況旗標且不升高任何浮點例外狀況處理常式)。
捨位操作控制欄位1359A-僅作為捨位操作控制欄位1358,其內容區分將執行捨位操作群組中之哪些者(例如,向上捨位、向下捨位、朝向零捨位及朝向最近值捨位)。因此,捨位操作控制欄位1359A允許基於每一指令改變捨位模式。在本發明之一個實施例中,其中處理器包括用於指定捨位模式之控制暫存器,捨位操作控制欄位1350之內容 覆寫彼暫存器值。
在無記憶體存取、寫入遮罩控制、VSIZE類型操作1317指令模板中,將β欄位1354之其餘部分解譯為向量長度欄位1359B,其內容區分將對數個資料向量長度中之哪一者執行(例如,128、256或512位元組)。
在類別B之記憶體存取1320指令模板之狀況下,將β欄位1354之部分解譯為廣播欄位1357B,其內容區分是否應執行廣播型資料操縱操作,而將β欄位1354之其餘部分解譯為向量長度欄位1359B。記憶體存取1320指令模板包括按比例縮放欄位1360及視情況位移欄位1362A或位移按比例縮放欄位1362B。
關於通用向量友好指令格式1300,展示完全作業碼欄位1374包括格式欄位1340、基本操作欄位1342及資料元素寬度欄位1364。雖然展示完全作業碼欄位1374包括所有此等欄位之一個實施例,但在並不支援所有欄位之實施例中,完全作業碼欄位1374包括少於全部之此等欄位。完全作業碼欄位1374提供操作碼(作業碼)。
擴增操作欄位1350、資料元素寬度欄位1364及寫入遮罩欄位1370允許基於通用向量友好指令格式中之每一指令指定此等特徵。
寫入遮罩欄位與資料元素寬度欄位之組合創建具型式指令,此係因為其允許基於不同資料元素寬度應用遮罩。
可見於類別A及類別B中之各種指令模板在不同 情形中為有益的。在本發明之一些實施方案中,不同處理器或處理器內之不同核心可僅支援類別A、僅支援類別B,或支援類別A與類別B兩種類別。舉例來說,意欲用於通用計算之高效能通用無次序核心可僅支援類別B,意欲主要用於圖形及/或科學(輸送量)計算之核心可僅支援類別A,且意欲用於兩種情形之核心可支援兩者(當然,具有來自兩種類別之模板及指令但並非來自兩種類別之所有模板及指令的某種混合的核心在本發明之權限內)。又,單一處理器可包括多個核心,所有核心支援相同類別或其中不同核心支援不同類別。舉例來說,在具有單獨圖形及通用核心之處理器中,意欲主要用於圖形及/或科學計算之圖形核心中之一者可僅支援類別A,而通用核心中之一或多者可為高效能通用核心,其中無次序執行及暫存器重新命名意欲用於僅支援類別B之通用計算。不具有單獨圖形核心之另一處理器可包括支援類別A與類別B兩者之一個以上通用按次序或無次序核心。當然,在本發明之不同實施例中,來自一類別之特徵亦可在另一類別中加以實施。以高階語言撰寫之程式將置於多種不同的可執行形式中(例如,僅在時間上編譯或靜態地編譯),多種不同的可執行形式包括:1)僅具有用於執行之目標處理器所支援的類別之指令的形式;或2)具有使用所有類別之指令之不同組合撰寫的替代常式且具有基於當前正執行程式碼之處理器所支援之指令選擇欲執行之常式的控制流程程式碼的形式。
例示性特定向量友好指令格式
圖14A為說明根據本發明之實施例之例示性特定向量友好指令格式的方塊圖。圖14A展示在指定欄位之位置、大小、解譯及次序以及彼等欄位中之一些欄位的值之意義上特定的特定向量友好指令格式1400。特定向量友好指令格式1400可用以擴展x86指令集,且因此,該等欄位中之一些欄位與現有x86指令集及其擴展(例如,AVX)中所使用之彼等欄位類似或相同。此格式仍與現有x86指令集與擴展之首碼編碼欄位、真實作業碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位及立即數欄位一致。說明來自圖13之欄位至來自圖14之欄位的映射。
然而,應理解,儘管為了達成說明性目的而在通用向量友好指令格式1300之內容脈絡中參考特定向量友好指令格式1400描述本發明之實施例,但除了主張特定向量友好指令格式1400之情況以外,本發明不限於特定向量友好指令格式1400。舉例來說,通用向量友好指令格式1300預期用於各種欄位之多種可能的大小,但將特定向量友好指令格式1400展示為具有特定大小之欄位。以特定實例來說明,雖然在特定向量友好指令格式1400中將資料元素寬度欄位1364說明為一位元欄位,但本發明並不限於此(亦即,通用向量友好指令格式1300預期其他大小之資料元素寬度欄位1364)。
通用向量友好指令格式1300包括下文按圖14A中所說明之次序所列出的以下欄位。
EVEX首碼(位元組0至3)1402-係以四位元組形 式編碼。
格式欄位1340(EVEX位元組0、位元[7:0]))-第一位元組(EVEX位元組0)為格式欄位1340且其含有0x62(用於在本發明之一個實施例中區分向量友好指令格式之獨特值)。
第二至第四位元組(EVEX位元組1至3)包括提供特定能力之數個位元欄位。
REX欄位1405(EVEX位元組1、位元[7-5])-由EVEX.R位元欄位(EVEX位元組1、位元[7]-R)、EVEX.X位元欄位(EVEX位元組1、位元[6]-X)及1357BEX位元組1、位元[5]-B)組成。EVEX.R、EVEX.X及EVEX.B位元欄位提供與對應VEX位元欄位相同之功能性,且係使用1之補碼形式來編碼,亦即,將ZMM0編碼為1111B,將ZMM15編碼為0000B。指令之其他欄位編碼暫存器索引之較低三個位元,如此項技術中已知(rrr、xxx及bbb),以使得可藉由添加EVEX.R、EVEX.X及EVEX.B來形成Rrrr、Xxxx及Bbbb。
REX'欄位1310-此欄位為REX'欄位1310之第一部分且其為EVEX.R'位元欄位(EVEX位元組1、位元[4]-R'),其用以編碼擴展32暫存器集合之較高16或較低16。在本發明之一個實施例中,此位元以及如下文所指示之其他位元係以位元反轉格式儲存,以區分(在熟知之x86 32-位元模式中)BOUND指令,BOUND指令之真實作業碼位元組為62,但其在MOD R/M欄位(如下文所描述)中並不接受MOD欄位中之值11;本發明之替代實施例並不儲存此位元 及下文以反轉格式指示之其他位元。使用值1來編碼較低的16個暫存器。換言之,藉由組合EVEX.R'、EVEX.R及來自其他欄位之其他RRR來形成R'Rrrr。
作業碼映射欄位1415(EVEX位元組1、位元[3:0]-mmmm)-其內容編碼隱含之前置作業碼位元組(0F、0F 38或0F 3)。
資料元素寬度欄位1364(EVEX位元組2、位元[7]-W)-係藉由計數法EVEX.W來表示。EVEX.W用以定義資料類型之細微度(大小)(32-位元資料元素或64-位元資料元素)。
EVEX.vvvv 1420(EVEX位元組2、位元[6:3]-vvvv)-EVEX.vvvv之作用可包括以下各者:1)EVEX.vvvv編碼第一源暫存器運算元,以反轉(1之補碼)形式指定且對於具有2個或2個以上之源運算元之指令有效;2)EVEX.vvvv編碼目的地暫存器運算元,針對某些向量移位以1之補碼形式指定;或3)EVEX.vvvv並不編碼任何運算元,保留該欄位且該欄位應含有1111b。因此,EVEX.vvvv欄位1420編碼以反轉(1之補碼)形式儲存之第一源暫存器指定符之4個低階位元。取決於指令,使用額外不同之EVEX位元欄位來將說明符大小擴展至32暫存器。
EVEX.U 1368類別欄位(EVEX位元組2、位元[2]-U)-若EVEX.U=0,則指示類別A或EVEX.U0;若EVEX.U=1,則其指示類別B或EVEX.U1。
首碼編碼欄位1425(EVEX位元組2、位元 [1:0]-pp)-提供用於基本操作欄位之額外位元。除提供對EVEX首碼格式之舊版SSE指令的支援之外,此情形亦具有壓縮SIMD首碼(並非需要一位元組以表達SIMD首碼,EVEX首碼僅需要2個位元)之益處。在一個實施例中,為了支援使用舊版格式及EVEX首碼格式兩者之SIMD首碼(66H、F2H、F3H)之舊版SSE指令,將此等舊版SIMD首碼編碼至SIMD首碼編碼欄位中;且在將其提供至解碼器之PLA之前在執行時間將其擴充至舊版SIMD首碼中(因此,PLA可在不修改之情況下執行此等舊版指令之舊版及EVEX格式兩者)。儘管隨著作業碼擴展,較新指令可直接使用EVEX首碼編碼欄位之內容,但某些實施例以類似方式擴充以用於達成一致性,但允許藉由此等舊版SIMD首碼指定不同含義。替代實施例可重新設計PLA以支援2位元SIMD首碼編碼,且因此並不需要擴充。
α欄位1352(EVEX位元組3、位元[7]-EH;亦被稱為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制及EVEX.N;亦藉由α來說明)-如先前所描述,此欄位為內容脈絡特定的。
β欄位1354(EVEX位元組3、位元[6:4]-SSS,亦被稱為EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;亦藉由βββ來說明)-如先前所描述,此欄位為內容脈絡特定的。
REX'欄位1310-此欄位為REX'欄位之剩餘部分且為EVEX.V'位元欄位(EVEX位元組3、位元[3]-V'),其可 用以編碼擴展32暫存器集合之較高16或較低16。此位元係以位元反轉格式儲存。使用值1來編碼較低的16個暫存器。換言之,藉由組合EVEX.V'、EVEX.vvvv來形成V'VVVV。
寫入遮罩欄位1370(EVEX位元組3、位元[2:0]-kkk)-其內容指定如先前所描述之寫入遮罩暫存器中之暫存器的索引。在本發明之一個實施例中,特定值EVEX.kkk=000具有特殊狀態,此情形隱含無寫入遮罩用於特定指令(此情形可以多種方式來實施,包括使用經固線連接至全部一之寫入遮罩或繞過遮罩硬體之硬體)。
真實作業碼欄位1430(位元組4)亦被稱為作業碼位元組。作業碼之部分係在此欄位中指定。
MOD R/M欄位1440(位元組5)包括MOD欄位1442、Reg欄位1444及R/M欄位1446。如先前所描述,MOD欄位1442之內容區分記憶體存取與非記憶體存取操作。可將Reg欄位1444之作用概述為兩種情形:編碼目的地暫存器運算元或源暫存器運算元,或將其視為作業碼擴展且不用以編碼任何指令運算元。R/M欄位1446之作用可包括以下情形:編碼參考記憶體位址之指令運算元,或編碼目的地暫存器運算元或源暫存器運算元。
比例、索引、基數(SIB)位元組(位元組6)-如先前所描述,按比例縮放欄位1350之內容用於記憶體位址產生。SIB.xxx 1454及SIB.bbb 1456-此等欄位之內容先前已關於暫存器索引Xxxx及Bbbb進行提及。
位移欄位1362A(位元組7至10)-當MOD欄位 1442含有10時,位元組7至10為位移欄位1362A,且其以與舊版32位元位移(disp32)相同之方式運作且在位元組細微度下運作。
位移因子欄位1362B(位元組7)-在MOD欄位1442含有01時,位元組7為位移因子欄位1362B。此欄位之位置與舊版x86指令集8-位元位移(disp8)(其在位元組細微度下運作)之位置相同。由於disp8係記號擴展,因此其位址可能僅在-128位元組偏移與127位元組偏移之間;依據64位元組快取行,disp8使用可經設定至僅四個確實有用之值-128、-64、0及64之8個位元;由於常常需要較大範圍,因此使用disp32;然而,disp32需要4個位元組。與disp8及disp32形成對比,位移因子欄位1362B為disp8之重新解譯;當使用位移因子欄位1362B時,藉由位移因子欄位之內容乘以記憶體運算元存取之大小(N)的所得值來判定實際位移。此類型之位移被稱作disp8×N。此情形減小平均指令長度(用於位移但具有大得多之範圍的單一位元組)。此經壓縮位移係基於以下假定:有效位移為記憶體存取之細微度之倍數,且因此,不需要編碼位址偏移之冗餘低層級位元。換言之,位移因子欄位1362B取代舊版x86指令集8-位元位移。因此,以與x86指令集8-位元位移相同之方式來編碼位移因子欄位1362B(因此,ModRM/SIB編碼規則中無改變),僅有的例外為:將disp8過載至disp8×N。換言之,編碼規則或編碼長度中不存在改變,而僅在由硬體進行的位移值之解譯中存在改變(該情形需要將位移按記憶體運算 元之大小按比例縮放以獲得按位元組位址偏移)。
立即數欄位1372如先前所描述操作。
完全作業碼欄位
圖14B為說明根據本發明之一個實施例之構成完全作業碼欄位1374的特定向量友好指令格式1400之欄位之方塊圖。特定言之,完全作業碼欄位1374包括格式欄位1340、基本操作欄位1342及資料元素寬度(w)欄位1364。基本操作欄位1342包括首碼編碼欄位1425、作業碼映射欄位1415及真實作業碼欄位1430。
暫存器索引欄位
圖14C為說明根據本發明之一個實施例的構成暫存器索引欄位1344之特定向量友好指令格式1400之欄位的方塊圖。特定言之,暫存器索引欄位1344包括REX欄位1405、REX'欄位1410、MODR/M.reg欄位1444、MODR/M.r/m欄位1446、VVVV欄位1420、xxx欄位1454,及bbb欄位1456。
擴增操作欄位
圖14D為說明根據本發明之一個實施例的構成擴增操作欄位1350之特定向量友好指令格式1400之欄位的方塊圖。在類別(U)欄位1368含有0時,其表示EVEX.U0(類別A 1368A);在該欄位含有1時,其表示EVEX.U1(類別B 1368B)。當U=0且MOD欄位1442含有11(其表示無記憶體存取操作)時,將α欄位1352(EVEX位元組3、位元[7]-EH)解譯為rs欄位1352A。在rs欄位1352A含有1(捨位1352A.1)時,將β欄位1354(EVEX位元組3,位元[6:4]-SSS)解譯為捨 位控制欄位1354A。捨位控制欄位1354A包括一位元SAE欄位1356及二位元捨位操作欄位1358。在rs欄位1352A含有0(資料變換1352A.2)時,將β欄位1354(EVEX位元組3,位元[6:4]-SSS)解譯為三位元資料變換欄位1354B。當U=0且MOD欄位1442含有00、01或10(表示記憶體存取操作)時,將α欄位1352(EVEX位元組3、位元[7]-EH)解譯為收回提示(EH)欄位1352B且將β欄位1354(EVEX位元組3、位元[6:4]-SSS)解譯為三位元資料操縱欄位1354C。
在U=1時,將α欄位1352(EVEX位元組3,位元[7]-EH)解譯為寫入遮罩控制(Z)欄位1352C。在U=1且MOD欄位1442含有11(表示無記憶體存取操作)時,將β欄位1354之部分(EVEX位元組3,位元[4]-S0)解譯為RL欄位1357A;在該MOD欄位1442含有1(捨位1357A.1)時,將β欄位1354之剩餘部分(EVEX位元組3,位元[6-5]-S2-1)解譯為捨位操作欄位1359A,而在RL欄位1357A含有0(VSIZE 1357.A2)時,將β欄位1354之剩餘部分(EVEX位元組3,位元[6-5]-S2-1)解譯為向量長度欄位1359B(EVEX位元組3,位元[6-5]-L1-0)。當U=1且MOD欄位1442含有00、01或10(表示記憶體存取操作)時,將β欄位1354(EVEX位元組3、位元[6:4]-SSS)解譯為向量長度欄位1359B(EVEX位元組3、位元[6-5]-L1-0)及廣播欄位1357B(EVEX位元組3、位元[4]-B)。
例示性暫存器架構
圖15為根據本發明之一個實施例之暫存器架構1500的方塊圖。在所說明之實施例中,存在寬度為512位元 之32個向量暫存器1510;此等暫存器經參考為zmm0至zmm31。較低16 zmm暫存器之較低層級256位元覆疊於暫存器ymm0至16上。較低16 zmm暫存器之較低層級128位元(ymm暫存器之較低層級128位元)覆疊於暫存器xmm0至15上。特定向量友好指令格式1400對此等覆疊之暫存器檔案操作,如下文表格中所說明。
換言之,向量長度欄位1359B在最大長度與一或多個其他較短長度之間選擇,其中各此較短長度為先前長度之長度之一半;且無向量長度欄位1359B之指令模板對最大向量長度操作。另外,在一個實施例中,特定向量友好指令格式1400之類別B指令模板對封裝或純量單一/雙倍精確度浮點資料及封裝或純量整數資料操作。純量操作為對zmm/ymm/xmm暫存器中之最低次序資料元素位置執行的操作;較高次序資料元素位置保持與其在指令之前之情形相同或經歸零,此取決於實施例。
寫入遮罩暫存器1515-在所說明之實施例中,存在8個寫入遮罩暫存器(k0至k7),各寫入遮罩暫存器之大小為64位元。在替代實施例中,寫入遮罩暫存器1515之大小 為16位元。如先前所描述,在本發明之一個實施例中,向量遮罩暫存器k0無法用作寫入遮罩;當將通常指示k0之編碼用於寫入遮罩時,其選擇固線式寫入遮罩0xFFFF,從而實際上停用了用於彼指令之寫入遮罩。
通用暫存器1525-在所說明之實施例中,存在十六個64-位元通用暫存器,其連同現有x86定址模式一起使用以定址記憶體運算元。此等暫存器係藉由名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP及R8至R15來參考。
純量浮點堆疊暫存器檔案(x87堆疊)1545,其上混疊有MMX封裝整數平坦暫存器檔案1550-在所說明之實施例中,x87堆疊為用以使用x87指令集擴展對32/64/80-位元浮點資料執行純量浮點運算之八元素堆疊;而MMX暫存器用以對64-位元封裝整數資料執行運算,以及保持用於在MMX與XMM暫存器之間執行的一些操作之運算元。
本發明之替代實施例可使用較寬或較窄暫存器。另外,本發明之替代實施例可使用更多、更少或不同的暫存器檔案及暫存器。
例示性核心架構、處理器及電腦架構
處理器核心可針對不同目的而以不同方式實施且實施於不同處理器中。舉例來說,此等核心之實施可包括:1)預期用於通用計算之通用按次序核心;2)預期用於通用計算之高效能通用無次序核心;3)預期主要用於圖形及/或科學(輸送量)計算之專用核心。不同處理器之實施可包括:1)包括預期用於通用計算之一或多個通用按次序核心 及/或預期用於通用計算之一或多個通用無次序核心的CPU;及2)包括預期主要用於圖形及/或科學(輸送量)之一或多個專用核心的共處理器。此等不同處理器導致不同電腦系統架構,其可包括:1)來自CPU之單獨晶片上之共處理器;2)與CPU相同之封裝中之單獨晶粒上的共處理器;3)與CPU相同之晶粒上之共處理器(在此狀況下,此等共處理器有時被稱為專用邏輯,諸如整合圖形及/或科學(輸送量)邏輯,或稱為專用核心);及4)可包括在與所描述CPU相同之晶粒上之系統單晶片(有時被稱為應用核心或應用處理器),上述共處理器及額外功能性。接著描述例示性核心架構,其後接著描述例示性處理器及電腦架構。
例示性核心架構
按次序及無次序核心方塊圖
圖16A為說明根據本發明之實施例的例示性按次序管線及例示性暫存器重新命名、無次序發佈/執行管線兩者的方塊圖。圖16B為說明根據本發明之實施例的待包括於處理器中的按次序架構核心之例示性實施例及例示性暫存器重新命名、無次序發佈/執行架構核心兩者的方塊圖。圖16A至圖16B中之實線框說明按次序管線及按次序核心,而虛線框之可選添加說明暫存器重新命名、無次序發佈/執行管線及核心。假定按次序態樣為無次序態樣之子集,將描述無次序態樣。
圖16A中,處理器管線1600包括提取級1602、長度解碼級1604、解碼級1606、分配級1608、重新命名級 1610、排程(亦被稱為分派或發佈)級1612、暫存器讀取/記憶體讀取級1614、執行級1616、寫回/記憶體寫入級1618、例外狀況處置級1622及認可級1624。
圖16B展示包括耦接至執行引擎單元1650之前端單元1630的處理器核心1690,且該前端單元及該執行引擎單元兩者皆耦接至記憶體單元1670。核心1690可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、超長指令字(VLIW)核心或混合或替代核心類型。作為另一選項,核心1690可為專用核心,諸如網路或通訊核心、壓縮引擎、共處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心或其類似者。
前端單元1630包括耦接至指令快取記憶體單元1634之分支預測單元1632,指令快取記憶體單元1634耦接至指令轉譯後備緩衝器(TLB)1636,指令轉譯後備緩衝器(TLB)1636耦接至指令提取單元1638,指令提取單元1638耦接至解碼單元1640。解碼單元1640(或解碼器)可解碼指令,且產生為輸出一或多個微操作、微程式碼入口點、微指令、其他指令、或其他控制信號(其自原始指令解碼或以其他方式反映原始指令或自其導出)。解碼單元1640可使用各種不同機制來實施。合適機制之實例包括(但不限於)查找表、硬體實施、可規劃邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。在一個實施例中,核心1690包括儲存用於某些巨集指令(例如,在解碼單元1640中或以其他方式在前端單元1630內)之微碼的微碼ROM或其他媒體。解碼單元1640 耦接至執行引擎單元1650中之重新命名/分配器單元1652。
執行引擎單元1650包括耦接至引退單元1654及一組一或多個排程器單元1656之重新命名/分配器單元1652。排程器單元1656表示任何數目個不同排程器,包括保留站、中央指令窗等。排程器單元1656耦接至實體暫存器檔案單元1658。實體暫存器檔案單元1658中之每一者表示一或多個實體暫存器檔案,不同之實體暫存器檔案儲存一或多個不同資料類型,諸如純量整數、純量浮點、封裝整數、封裝浮點、向量整數、向量浮點、狀態(例如,為待執行之下一指令之位址的指令指標)等。在一個實施例中,實體暫存器檔案單元1658包含向量暫存器單元、寫入遮罩暫存器單元及純量暫存器單元。此等暫存器單元可提供架構向量暫存器、向量遮罩暫存器及通用暫存器。實體暫存器檔案單元1658由引退單元1654重疊以說明可實施暫存器重新命名及無次序執行之各種方式(例如,使用重新排序緩衝器及引退暫存器檔案;使用未來檔案、歷史緩衝器及引退暫存器檔案;使用暫存器映射及暫存器之集區;等等)。引退單元1654及實體暫存器檔案單元1658耦接至執行叢集1660。執行叢集1660包括一組一或多個執行單元1662及一組一或多個記憶體存取單元1664。執行單元1662可執行各種運算(例如,移位、加法、減法、乘法)且針對各種類型之資料(例如,純量浮點、封裝整數、封裝浮點、向量整數、向量浮點)。雖然一些實施例可包括專用於特定功能或功能集合之數個執行單元,其他實施例可包括僅一個執行單元 或全部執行所有功能之多個執行單元。排程器單元1656、實體暫存器檔案單元1658及執行叢集1660經展示為可能複數個,此係因為某些實施例產生用於某些類型之資料/操作之單獨管線(例如,各自具有其自身排程器單元、實體暫存器檔案單元及/或執行叢集之純量整數管線、純量浮點/封裝整數/封裝浮點/向量整數/向量浮點管線及/或記憶體存取管線,且在單獨記憶體存取管線的狀況下,實施其中僅此管線之執行叢集具有記憶體存取單元1664的某些實施例)。亦應理解,在使用單獨管線之情況下,此等管線中之一或多者可為無次序發佈/執行且其餘部分為按次序發佈/執行。
記憶體存取單元1664之集合耦接至記憶體單元1670,記憶體單元1670包括耦接至資料快取記憶體單元1674之資料TLB單元1672,資料快取記憶體單元1674耦接至層級2(L2)快取記憶體單元1676。在一個例示性實施例中,記憶體存取單元1664可包括載入單元、儲存位址單元及儲存資料單元,其中之每一者耦接至記憶體單元1670中之資料TLB單元1672。指令快取記憶體單元1634進一步耦接至記憶體單元1670中之層級2(L2)快取記憶體單元1676。L2快取記憶體單元1676耦接至快取記憶體之一或多個其他層級且最終耦接至主記憶體。
作為實例,例示性暫存器重新命名、無次序發佈/執行核心架構可實施管線1600如下:1)指令提取1638執行提取及長度解碼級1602及1604;2)解碼單元1640執行解碼級1606;3)重新命名/分配器單元1652執行分配級1608及重 新命名級1610;4)排程器單元1656執行排程級1612;5)實體暫存器檔案單元1658及記憶體單元1670執行暫存器讀取/記憶體讀取級1614;執行叢集1660執行執行級1616;6)記憶體單元1670及實體暫存器檔案單元1658執行寫回/記憶體寫入級1618;7)例外狀況處置級1622中可涉及各種單元;以及8)引退單元1654及實體暫存器檔案單元1658執行認可級1624。
核心1690可支援一或多個指令集(例如,x86指令集(具有已添加較新版本之一些擴展);CA、Sunnyvale之MIPS技術公司的MIPS指令集;CA、Sunnyvale之ARM Holdings的ARM指令集(具有諸如NEON之可選額外擴展)),包括本文所述之指令。在一個實施例中,核心1690包括用以支援封裝資料指令集擴展(例如,AVX1、AVX2)之邏輯,藉此允許許多多媒體應用使用之操作使用封裝資料來執行。
應理解,該核心可支援多執行緒處理(執行操作或執行緒之兩個或兩個以上平行集合),且可以多種方式進行此操作,包括時間分片多執行緒處理、同步多執行緒處理(其中單一實體核心提供用於實體核心正同時進行多執行緒處理的執行緒中之各者之邏輯核心),或其組合(例如,時間分片提取及解碼及此後之同時多執行緒處理,諸如在Intel®超執行緒處理技術中)。
雖然在無次序執行之內容脈絡中描述暫存器重新命名,但應理解,彼暫存器重新命名可用於按次序架構 中。雖然處理器之所說明實施例亦包括單獨指令快取記憶體單元1634及資料快取記憶體單元1674以及共用L2快取記憶體單元1676,但替代實施例可具有用於指令及資料兩者之單一內部快取記憶體,諸如層級1(L1)內部快取記憶體或內部快取記憶體之多個層級。在一些實施例中,系統可包括內部快取記憶體與在核心及/或處理器外部之外部快取記憶體的組合。或者,所有快取記憶體可在核心及/或處理器之外部。
特定例示性按次序核心架構
圖17A至17B說明更特定例示性按次序核心架構之方塊圖,該核心將為晶片中之若干邏輯區塊(包括相同類型及/或不同類型之其他核心)中之一者。邏輯區塊經由具有一些固定功能邏輯、記憶體I/O介面及其他必要I/O邏輯(取決於應用)之較高頻寬互連網路(例如,環狀網路)通訊。
圖17A為根據本發明之實施例的單一處理器核心以及其至晶粒上互連網路1702之連接以及其層級2(L2)快取記憶體1704之本端子集的方塊圖。在一個實施例中,指令解碼器1700支援具有封裝資料指令集擴展之x86指令集。L1快取記憶體1706允許用以快取記憶體至純量及向量單元中之低延時存取。雖然在一個實施例中(為了簡化設計),純量單元1708及向量單元1710使用單獨暫存器集合(分別,純量暫存器1712及向量暫存器1714)且在其間傳送之資料經寫入至記憶體且接著被自層級1(L1)快取記憶體1706讀取回,但本發明之替代實施例可使用不同途徑(例如,使 用單一暫存器集合或包括允許在兩個暫存器檔案之間傳送資料而無需寫入及讀取回的通訊路徑)。
L2快取記憶體1704之本端子集為劃分成單獨本端子集(每一處理器核心一個本端子集)之全域L2快取記憶體的部分。每一處理器核心具有至L2快取記憶體1704之其自身本端子集的直接存取路徑。由處理器核心讀取之資料儲存於其L2快取記憶體子集1704中,且可與其他處理器核心存取其自身本端L2快取記憶體子集並行地來迅速存取。由處理器核心寫入之資料儲存於其自身L2快取記憶體子集1704中且在必要時自其他子集清空。環狀網路確保共用資料之一致性。環狀網路為雙向的,以允許代理程式(諸如處理器核心、L2快取記憶體及其他邏輯區塊)在晶片內彼此通訊。每一環狀資料路徑為每一方向1012-位元寬。
圖17B為根據本發明之實施例之圖17A中的處理器核心之部分之擴展視圖。圖17B包括L1快取記憶體1704之L1資料快取記憶體1706A部分以及關於向量單元1710及向量暫存器1714之更多細節。特定言之,向量單元1710為16寬向量處理單元(VPU)(參見16寬ALU 1728),其執行整數、單一精確度浮點及雙倍精確度浮點指令中之一或多者。VPU支援藉由拌和單元1720拌和暫存器輸入,藉由數值轉換單元1722A至1722B進行數值轉換,及關於記憶體輸入藉由複製單元1724進行複製。寫入遮罩暫存器1726允許預測所得向量寫入。
具有整合記憶體控制器及圖形之處理器
圖18為根據本發明之實施例之處理器1800的方塊圖,該處理器可具有一個以上核心,可具有整合記憶體控制器,且可具有整合圖形。圖18中之實線框說明具有單一核心1802A、系統代理程式1810、一或多個匯流排控制器單元1816之集合的處理器1800,而虛線框之可選添加說明具有多個核心1802A至1802N、系統代理程式單元1810中之一或多個整合記憶體控制器單元1814之集合及專用邏輯1808的替代處理器1800。
因此,處理器1800之不同實施可包括:1)具有為整合圖形及/或科學(輸送量)邏輯(其可包括一或多個核心)之專用邏輯1808及為一或多個通用核心(例如,通用按次序核心、通用無次序核心、兩者之組合)之核心1802A至1802N的CPU;2)具有為意欲主要用於圖形及/或科學(輸送量)之大量專用核心之核心1802A至1802N的共處理器;及3)具有為大量通用按次序核心之核心1802A至1802N的共處理器。因此,處理器1800可為通用處理器、共處理器或專用處理器,諸如網路或通訊處理器、壓縮引擎、圖形處理器、通用圖形處理單元(GPGPU)、高輸送量多整合核心(MIC)共處理器(包括30個或30個以上核心)、嵌入式處理器或其類似者。處理器可實施於一或多個晶片上。處理器1800可為一或多個基體之一部分及/或可使用數個製程技術中之任一者(諸如,BiCMOS、CMOS或NMOS)而實施於一或多個基體上。
記憶體階層包括核心內之快取記憶體之一或多個層級、一集合或一或多個共用快取記憶體單元1806,及 耦接至整合記憶體控制器單元1814之集合之外部記憶體(未圖示)。共用快取記憶體單元1806之集合可包括一或多個中間層級快取記憶體,諸如層級2(L2)、層級3(L3)、層級4(L4)或快取記憶體之其他層級、最末層級快取記憶體(LLC)及/或其組合。雖然在一個實施例中,基於環狀之互連單元1812將整合圖形邏輯1808、共用快取記憶體單元1806之集合及系統代理程式單元1810/整合記憶體控制器單元1814互連,但替代實施例可使用任何數目個眾所熟知之技術用於將此等單元互連。在一個實施例中,在一或多個快取記憶體單元1806與核心1802A至1802N之間維持一致性。
在一些實施例中,核心1802A至1802N中之一或多者能夠進行多執行緒處理。系統代理程式1810包括協調及操作核心1802A至1802N之彼等組件。系統代理程式單元1810可包括(例如)功率控制單元(PCU)及顯示單元。PCU可為或包括用於調節核心1802A至1802N及整合圖形邏輯1808之功率狀態所需的邏輯及組件。顯示單元係用於驅動一或多個外部連接之顯示器。
核心1802A至1802N就架構指令集而言可為均質的或異質的;亦即,核心1802A至1802N中之兩者或兩者以上可能能夠執行相同指令集,而其他核心可能能夠僅執行彼指令集之子集或不同指令集。
例示性電腦架構
圖19至圖22為例示性電腦架構之方塊圖。此項技術中已知的用於以下各項之其他系統設計及組配亦為合適 的:膝上型電腦、桌上型電腦、手持型PC、個人數位助理、工程工作站、伺服器、網路器件、網路集線器、交換器、嵌入式處理器、數位信號處理器(DSP)、圖形器件、視訊遊戲器件、機上盒、微控制器、蜂巢式電話、攜帶型媒體播放器、手持型器件及各種其他電子器件。大體而言,能夠併有如本文所揭示之處理器及/或其他執行邏輯之大量系統或電子器件通常為合適的。
現參看圖19,所展示為根據本發明之一個實施例之系統1900的方塊圖。系統1900可包括耦接至控制器集線器1920之一或多個處理器1910、1915。在一個實施例中,控制器集線器1920包括圖形記憶體控制器集線器(GMCH)1990及輸入/輸出集線器(IOH)1950(其可能在單獨晶片上);GMCH 1990包括耦接記憶體1940及共處理器1945之記憶體及圖形控制器;IOH 1950將輸入/輸出(I/O)器件1960耦接至GMCH 1990。或者,記憶體及圖形控制器中之一者或兩者整合於處理器(如本文所描述)內,記憶體1940及共處理器1945直接耦接至處理器1910及具有IOH 1950之單一晶片中之控制器集線器1920。
圖19中藉由斷線表示額外處理器1915之可選性質。各處理器1910、1915可包括本文所描述之處理核心中之一或多者且可為處理器1800之某一版本。
記憶體1940可為(例如)動態隨機存取記憶體(DRAM)、相變記憶體(PCM)或兩者之組合。對於至少一個實施例,控制器集線器1920經由多點匯流排(諸如,前側匯 流排(FSB))、點對點介面(諸如,快速路徑互連(QPI))或類似連接1995與處理器1910、1915通訊。
在一個實施例中,共處理器1945為專用處理器,諸如高輸送量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或其類似者。在一個實施例中,控制器集線器1920可包括整合圖形加速器。
就包括架構、微架構、熱、功率消耗特性及其類似者之一系列優點量度而言,在實體資源1910、1915之間可能存在多種差異。
在一個實施例中,處理器1910執行控制一般類型之資料處理操作之指令。嵌入於指令內之指令可為共處理器指令。處理器1910將此等共處理器指令辨識為具有應由附接共處理器1945執行之類型。因此,處理器1910在共處理器匯流排或其他互連件上將此等共處理器指令(或表示共處理器指令之控制信號)發佈至共處理器1945。共處理器1945接受並執行所接收之共處理器指令。
現參看圖20,所展示為根據本發明之一實施例之第一更特定例示性系統2000的方塊圖。如圖20中所展示,多處理器系統2000為點對點互連系統,且包括經由點對點互連件2050耦接之第一處理器2070及第二處理器2080。處理器2070及2080中之各者可為處理器1800之某一版本。在本發明之一個實施例中,處理器2070及2080分別為處理器1910及1915,而共處理器2038為共處理器1945。在另一實施例中,處理器2070及2080分別為處理器1910、共處理器 1945。
處理器2070及2080經展示為分別包括整合記憶體控制器(IMC)單元2072及2082。處理器2070亦包括點對點(P-P)介面2076及2078作為其匯流排控制器單元之部分;類似地,第二處理器2080包括P-P介面2086及2088。處理器2070、2080可經由點對點(P-P)介面2050使用P-P介面電路2078、2088交換資訊。如圖20中所展示,IMC 2072及2082將處理器耦接至各別記憶體(亦即,記憶體2032及記憶體2034),其可為本端附接至各別處理器之主記憶體之部分。
處理器2070、2080可各自經由個別P-P介面2052、2054使用點對點介面電路2076、2094、2086、2098與晶片組2090交換資訊。晶片組2090可視情況經由高效能介面2039與共處理器2038交換資訊。在一個實施例中,共處理器2038為專用處理器,諸如高輸送量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或其類似者。
共用快取記憶體(未圖示)可包括於兩處理器中之任一者中或在兩處理器外部,又經由P-P互連件與處理器連接,使得可將兩處理器中之任一者或兩者之本端快取記憶體資訊儲存於共用快取記憶體中(若處理器置放於低功率模式)。
晶片組2090可經由介面2096耦接至第一匯流排2016。在一個實施例中,第一匯流排2016可為周邊組件互連(PCI)匯流排,或諸如PCI快速匯流排之匯流排,或另一 第三代I/O互連匯流排,但本發明之範疇並不限於此。
圖20中所展示,各種I/O器件2014可連同匯流排橋接器2018一起耦接至第一匯流排2016,匯流排橋接器2018將第一匯流排2016耦接至第二匯流排2020。在一個實施例中,一或多個額外處理器2015(諸如,共處理器、高輸送量MIC處理器、GPGPU、加速器(諸如,圖形加速器或數位信號處理(DSP)單元)、場可規劃閘陣列或任何其他處理器)耦接至第一匯流排2016。在一個實施例中,第二匯流排2020可為低接腳計數(LPC)匯流排。在一個實施例中,各種器件可耦接至第二匯流排2020,包括(例如)鍵盤及/或滑鼠2022、通訊器件2027及儲存單元2028(諸如,可包括指令/程式碼及資料2030之磁碟機或其他大容量儲存器件)。另外,音訊I/O 2024可耦接至第二匯流排2020。應注意,其他架構為可能的。舉例來說,代替圖20之點對點架構,系統可實施多點匯流排或其他此架構。
現參看圖21,所展示為根據本發明之一實施例之第二更特定例示性系統2100的方塊圖。圖20及圖21中之相似元件帶有相似參考數字,且已自圖21省略圖20之某些態樣以便避免混淆圖21之其他態樣。
圖21說明處理器2070、2080可分別包括整合記憶體及I/O控制邏輯(「CL」)2072及2082。因此,CL 2072、2082包括整合記憶體控制器單元且包括I/O控制邏輯。圖21說明不僅記憶體2032、2034耦接至CL 2072、2082,而且I/O器件2114亦耦接至控制邏輯2072、2082。舊版I/O器件2115 耦接至晶片組2090。
現參看圖22,所展示為根據本發明之一實施例之SoC 2200的方塊圖。圖18中之類似元件帶有相似參考數字。又,虛線框為更高階SoC上之可選特徵。在圖22中,互連單元2202耦接至以下各者:應用程式處理器2210,其包括一或多個核心202A至202N之集合及共用快取記憶體單元1806;系統代理程式單元1810;匯流排控制器單元1816;整合記憶體控制器單元1814;一集合或一或多個共處理器2220,其可包括整合圖形邏輯、影像處理器、音訊處理器及視訊處理器;靜態隨機存取記憶體(SRAM)單元2230;直接記憶體存取(DMA)單元2232;及顯示單元2240,其用於耦接至一或多個外部顯示器。在一個實施例中,共處理器2220包括專用處理器,諸如網路或通訊處理器、壓縮引擎、GPGPU、高輸送量MIC處理器、嵌入式處理器或其類似者。
本文中所揭示機制之實施例可以硬體、軟體、韌體或此等實施途徑之組合來實施。本發明之實施例可實施為執行於可規劃系統上之電腦程式或程式碼,可規劃系統包含至少一處理器、儲存系統(包括依電性及非依電性記憶體及/或儲存元件)、至少一輸入器件及至少一輸出器件。
可將諸如圖20中所說明之程式碼2030之程式碼應用於輸入指令以執行本文所描述之功能且產生輸出資訊。可以已知方式將輸出資訊應用於一或多個輸出器件。出於本申請案之目的,處理系統包括具有處理器之任何系統,諸如;數位信號處理器(DSP)、微控制器、特殊應用積 體電路(ASIC)或微處理器。
程式碼可用高階程序或物件導向式程式設計語言來實施以與處理系統通訊。必要時,亦可用組合語言或機器語言實施程式碼。實際上,本文所描述之機制之範疇並不限於任何特定程式設計語言。在任何狀況下,該語言可為編譯或解譯語言。
可藉由儲存於機器可讀媒體上的表示處理器內之各種邏輯的代表性指令實施至少一個實施例之一或多個態樣,該等代表性指令在由機器讀取時使得該機器製造邏輯以執行本文中所描述之技術。可將被稱為「IP核心」之此等表示儲存於有形機器可讀媒體上,並將其供應至各種消費者或製造設施,以將其載入至實際上製造邏輯或處理器之製造機器中。
此等機器可讀儲存媒體可包括(但不限於)由機器或器件製造或形成之物品的非暫時性有形配置,包括儲存媒體,諸如硬碟機、包括軟碟機之任何其他類型之磁碟、光碟、緊密光碟唯讀記憶體(CD-ROM)、可重寫緊密光碟(CD-RW),及磁光碟、諸如唯讀記憶體(ROM)之半導體器件、諸如動態隨機存取記憶體(DRAM)之隨機存取記憶體(RAM)、靜態隨機存取記憶體(SRAM)、可抹除可規劃唯讀記憶體(EPROM)、快閃記憶體、電可抹除可規劃唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁卡或光卡、或適於儲存電子指令之任何其他類型之媒體。
因此,本發明之實施例亦包括含有指令或含有設 計資料之非暫時性有形機器可讀媒體,諸如硬體描述語言(HDL),其界定本文所描述之結構、電路、裝置、處理器及/或系統特徵。此等實施例亦可被稱為程式產品。
仿真(包括二進位轉譯、程式碼變形等)
在一些狀況下,可使用指令轉換器將指令自來源指令集轉換為目標指令集。舉例來說,指令轉換器可將一指令轉譯(例如,使用靜態二進位轉譯、包括動態編譯之動態二進位轉譯)、變形、仿真或以其他方式轉換為待由核心處理之一或多個其他指令。指令轉換器可以軟體、硬體、韌體或其組合來實施。指令轉換器可處於處理器上、處理器外,或部分處於處理器上且部分在處理器外。
圖23為根據本發明之實施例的對比軟體指令轉換器之使用的方塊圖,該軟體指令轉換器用以將來源指令集中之二進位指令轉換成目標指令集中之二進位指令。在所說明之實施例中,指令轉換器為軟體指令轉換器,但或者該指令轉換器可以軟體、韌體、硬體或其各種組合來實施。圖23展示可使用x86編譯器2304來編譯高階語言2302中之程式以產生x86二進位碼2306,x86二進位碼2306可原生地由具有至少一x86指令集核心之處理器2316來執行。具有至少一x86指令集核心之處理器2316表示可藉由相容地執行或以其他方式處理以下各項以便達成與具有至少一x86指令集核心之Intel處理器實質上相同之結果而執行與具有至少一x86指令集核心之Intel處理器實質上相同之功能的任何處理器:(1)Intel x86指令集核心之指令集之實質部 分,或(2)目標為執行於具有至少一x86指令集核心之Intel處理器上的應用程式或其他軟體之目標程式碼版本。x86編譯器2304表示可操作以產生x86二進位碼2306(例如,目標程式碼)之編譯器,x86二進位碼2306可在具有或不具有額外連結處理之情況下執行於具有至少一x86指令集核心之處理器2316上。類似地,圖23展示可使用替代指令集編譯器2308來編譯高階語言2302中之程式以產生替代指令集二進位碼2310,替代指令集二進位碼2310可原生地由不具有至少一x86指令集核心之處理器2314(例如,具有執行CA、Sunnyvale之MIPS技術公司之MIPS指令集及/或執行CA、Sunnyvale之ARM Holdings之ARM指令集的核心的處理器)執行。指令轉換器2312用以將x86二進位碼2306轉換為可原生地由不具有x86指令集核心之處理器2314執行的程式碼。此經轉換之程式碼不可能與替代指令集二進位碼2310相同,此係因為能夠進行此轉換之指令轉換器難以製造;然而,經轉換之程式碼將完成一般操作且由來自替代指令集之指令構成。因此,指令轉換器2312表示軟體、韌體、硬體或其組合,其經由仿真、模擬或任何其他程序而允許不具有x86指令集處理器或核心之處理器或其他電子器件執行x86二進位碼2306。
在描述及申請專利範圍中,已使用術語「耦接」及/或「連接」以及其派生詞。應理解,此等術語並不意欲為彼此之同義語。實情為,在特定實施例中,可使用「連接」來指示兩個或兩個以上元件彼此直接實體或電接觸。 「耦接」可意謂兩個或兩個以上元件直接實體或電接觸。然而,「耦接」亦可意謂兩個或兩個以上元件未彼此直接接觸,但仍彼此合作或互動。舉例來說,解碼單元可經由一或多個介入組件與執行單元及/或暫存器耦接。在圖中,箭頭用以展示耦接及/或連接。
在描述及/或申請專利範圍中,可使用術語「邏輯」。邏輯可包括硬體、韌體、軟體或其各種組合。邏輯之實例包括積體電路、特殊應用積體電路、類比電路、數位電路、經規劃邏輯器件、包括指令之記憶體器件及其類似者,及其組合。在一些實施例中,邏輯可包括電晶體及/或閘極及/或其他電路組件。在各種實施例中,邏輯亦可指代及/或表示模組、單元、組件、電路、邏輯器件,或其類似者。
在以上描述中,闡述了特定細節以便提供對實施例之透徹理解。然而,可在不具有此等特定細節中之一些的情況下實踐其他實施例。本發明之範疇並不由上文提供之特定實例來判定,而是僅由以下申請專利範圍判定。圖式中所說明及本說明書中所描述之所有等效關係涵蓋於實施例內。在其他情況下,以方塊圖形式或不具有細節的方式來展示眾所周知的電路、結構、器件及操作以便避免混淆對該描述之理解。在一些狀況下,在已展示及描述多個組件的情況下,該等組件可替代地併入至單一組件中。在一些狀況下,在已展示及描述單一組件的情況下,該單一組件可分成兩個或兩個以上組件。
某些操作可由硬體組件執行,或可體現於機器可 執行或電路可執行指令中,該等指令可用以致使及/或導致藉由該等指令規劃之機器、電路或硬體組件(例如,處理器、處理器之部分、電路等)執行該等操作。該等操作亦可視情況由硬體與軟體之組合執行。處理器、機器、電路或硬體可包括特定或特別電路或可操作以執行及/或處理指令之其他邏輯(例如,可能與韌體及/或軟體組合之硬體)。
一些實施例包括一製品(例如,電腦程式產品),其包括機器可讀媒體。媒體可包括提供(例如)儲存以可由機器讀取之形式的資訊的機制。機器可讀媒體可提供或已在其上儲存一指令或指令序列,該指令或指令序列在及/或當由機器執行時可操作以致使機器執行及/或導致機器執行本文中所揭示之操作、方法或技術中之一者。機器可讀媒體可提供(例如儲存)本文中所揭示之指令之實施例中的一或多者。
在一些實施例中,機器可讀媒體可包括有形及/或非暫時性機器可讀儲存媒體。舉例來說,有形及/或非暫時性機器可讀儲存媒體可包括軟碟、光學儲存媒體、光碟、光學資料儲存器件、CD-ROM、磁碟、磁光碟、唯讀記憶體(ROM)、可規劃ROM(PROM)、可抹除且可規劃ROM(EPROM)、電可抹除且可規劃ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體、相變記憶體、相變資料儲存材料、非依電性記憶體、非依電性資料儲存器件、非暫時性記憶體、非暫時性資料儲存器件、或類似者。非暫時性機器可讀儲存媒 體不由暫時傳播信號(例如,載波)構成。
合適機器之實例包括(但不限於)通用處理器、專用處理器、指令處理裝置、數位邏輯電路、積體電路及其類似物。合適機器之其他實例包括併入此等處理器、指令處理裝置、數位邏輯電路或積體電路之計算器件及其他電子器件。此等計算器件及電子器件之實例包括(但不限於)桌上型電腦、膝上型電腦、筆記型電腦、平板電腦、上網本、智慧型手機、蜂巢式電話、伺服器、網路器件(例如,路由器及交換器)、行動網際網路器件(MID)、媒體播放器、智慧型電視、桌上型易網機、機上盒及視訊遊戲控制器。
舉例來說,貫穿本說明書對「一個實施例」、「一實施例」、「一或多個實施例」、「一些實施例」之參考指示可在本發明之實踐中包括特定特徵但該特定特徵未必為所需的。類似地,在該描述中,有時將各種特徵聚集在單一實施例、圖或其描述中以用於使本發明精簡且輔助理解各種發明態樣。然而,本發明之此方法不應解釋為反映本發明需要比每一請求項中明確所述之特徵更多的特徵之意圖。實情為,為以下申請專利範圍反映,本發明之態樣在於比單一所揭示實施例之全部特徵少。因此,在實施方式之後的申請專利範圍特此明確地併入此實施方式中,其中每一請求項使其自身獨立成為本發明之單獨實施例。
實例實施例
以下實例係關於其他實施例。可在一或多個實施例中之任何位置使用該等實例中之細節。
實例1為一種處理器,其包括用以接收向量索引化載入加上A/L操作加上儲存指令之解碼單元。向量索引化載入加上A/L操作加上儲存指令用以指示源封裝記憶體索引運算元係要具有複數個封裝記憶體索引,且用以指示源封裝資料運算元係要具有複數個封裝資料元素。執行單元與解碼單元耦接。執行單元回應於向量索引化載入加上A/L操作加上儲存指令而將自對應於該複數個封裝記憶體索引之記憶體位置載入複數個資料元素,將對該源封裝資料運算元之該複數個封裝資料元素及經載入之該複數個資料元素執行A/L操作,且將會將複數個結果資料元素儲存於對應於該複數個封裝記憶體索引之該等記憶體位置中。
實例2包括實例1之處理器,且其中視情況指令包含收集加上A/L操作加上散佈指令。
實例3包括任何先前實例之處理器,且其中視情況該等A/L操作包含以下各者中的至少一者:封裝加法操作、封裝減法操作、封裝乘法操作、封裝除法操作、封裝乘加操作、封裝移位操作、封裝旋轉操作、封裝邏輯及操作、封裝邏輯或操作、封裝邏輯反操作,以及封裝邏輯及反操作。
實例4包括任何先前實例之處理器,且其中視情況A/L操作包含封裝加法操作及封裝乘法操作中的至少一者。
實例5包括任何先前實例之處理器,且其中視情況處理器執行向量索引化載入加上A/L操作加上儲存指令 而不將經載入之資料元素傳送至核心中。
實例6包括任何先前實例之處理器,且其中視情況執行單元係在記憶體子系統內之處理器之非核心部分中。
實例7包括任何先前實例之處理器,且其中視情況解碼單元係在核心內,且其中執行單元比起與具有解碼單元之核心的靠近程度更靠近於最後層級快取記憶體。
實例8包括任何先前實例之處理器,且其中視情況執行單元係要執行A/L操作的一部分係用以自快取記憶體之最後層級及快取記憶體之次於最後層級中的一者接收經載入之資料元素。
實例9包括任何先前實例之處理器,且其中視情況解碼單元係用以解碼向量索引化載入加上A/L操作加上儲存指令,該向量索引化載入加上A/L操作加上儲存指令為指示源封裝資料操作遮罩運算元之經遮罩向量索引化載入加上A/L操作加上儲存指令。
實例10包括任何先前實例之處理器,且其中視情況解碼單元係用以解碼向量索引化載入加上A/L操作加上儲存指令,該向量索引化載入加上A/L操作加上儲存指令係用以指示寬度為至少512位元之源封裝資料運算元。
實例11為一種在一處理器中之方法,其包括接收向量索引化載入加上A/L操作加上儲存指令。向量索引化載入加上A/L操作加上儲存指令指示源封裝記憶體索引運算元係要具有複數個封裝記憶體索引,且指示源封裝資料運算元係要具有複數個封裝資料元素。執行該向量索引化載 入加上A/L操作加上儲存指令。此可包括自對應於複數個封裝記憶體索引之記憶體位置載入複數個資料元素。可對該源封裝資料運算元之該複數個封裝資料元素及經載入之該複數個資料元素執行A/L操作。可將複數個結果資料元素儲存於對應於該複數個封裝記憶體索引之該等記憶體位置中。
實例12包括實例11之方法,且其中視情況接收包含接收收集加上A/L操作加上散佈指令。
實例13包括任何先前實例之方法,且其中視情況執行該等A/L操作包含執行以下各者中的至少一者:封裝加法操作、封裝減法操作、封裝乘法操作、封裝除法操作、封裝乘加操作、封裝移位操作、封裝旋轉操作、封裝邏輯及操作、封裝邏輯或操作、封裝邏輯反操作,以及封裝邏輯及反操作。
實例14包括任何先前實例之方法,且其中視情況執行A/L操作包含執行封裝加法操作及封裝乘法操作中的至少一者。
實例15包括任何先前實例之方法,且其中視情況執行向量索引化載入加上A/L操作加上儲存指令完成而不將經載入之資料元素傳送至核心中。
實例16包括任何先前實例之方法,且其中視情況執行A/L操作係藉由記憶體子系統內之處理器的非核心部分中之單元所執行,且其中單元比起與接收指令之核心的靠近程度更靠近於最後層級快取記憶體。
實例17包括任何先前實例之方法,且其中視情況 接收包含接收經遮罩向量索引化載入加上A/L操作加上儲存指令,該經遮罩向量索引化載入加上A/L操作加上儲存指令指示源封裝資料操作遮罩運算元。
實例18包括任何先前實例之方法,且其中視情況接收包含接收該指令,該指令指示寬度為至少512位元之源封裝資料運算元。
實例19為用以處理指令之系統,其包括互連件、與互連件耦接之動態隨機存取記憶體(DRAM)及與互連件耦接之處理器。處理器用以接收向量索引化載入加上A/L操作加上儲存指令,該向量索引化載入加上A/L操作加上儲存指令用以指示源封裝記憶體索引運算元係要具有複數個封裝記憶體索引,且用以指示源封裝資料運算元係要具有複數個封裝資料元素。處理器可操作以回應於向量索引化載入加上A/L操作加上儲存指令而自對應於該複數個封裝記憶體索引之在DRAM中的記憶體位置載入複數個資料元素,對該源封裝資料運算元之該複數個封裝資料元素及經載入之該複數個資料元素執行A/L操作,及將複數個結果資料元素儲存於目的地儲存位置中。
實例20包括實例19之系統,且其中視情況目的地儲存位置包含DRAM中之對應於複數個封裝記憶體索引的記憶體位置。
實例21包括任何先前實例之系統,且其中視情況指令包含收集加上A/L操作加上散佈指令。
實例22為一種製品,其包括一非暫時性機器可讀 取儲存媒體。機器可讀取儲存媒體儲存向量索引化載入加上A/L操作加上儲存指令。向量索引化載入加上A/L操作加上儲存指令用以指示源封裝記憶體索引運算元係要具有複數個封裝記憶體索引,且用以指示源封裝資料運算元係要具有複數個封裝資料元素。向量索引化載入加上A/L操作加上儲存指令在由機器所執行的情況下可操作以致使機器用以執行包括以下各者的操作:自對應於複數個封裝記憶體索引之記憶體位置載入複數個資料元素,對源封裝資料運算元之複數個封裝資料元素及經載入之複數個資料元素執行A/L操作,及將複數個結果資料元素儲存於目的地儲存位置中。
實例23包括實例22之製品,且其中視情況將結果資料元素儲存於目的地儲存位置中包含將結果資料元素儲存於對應於封裝記憶體索引之記憶體位置中。
實例24包括任何先前實例之製品,且其中視情況指令包含收集加上A/L操作加上散佈指令。
實例25包括任何先前實例之製品,且其中視情況執行A/L操作包含執行封裝加法操作及封裝乘法操作中的至少一者。
實例26包括任何先前實例之製品,且視情況進一步包括完成向量索引化載入加上A/L操作加上儲存指令之執行而不將載入之資料元素傳送至處理器之核心中。
實例27包括經組配及/或可操作以執行實例11至實例18中的任一者之方法之處理器或其他裝置。
實例28包括處理器或其他裝置,其包括用於執行實例11至實例18中的任一者之方法的構件。
實例29包括電腦系統,其包括處理器且視情況包括以下各者中的至少一者:動態隨機存取記憶體(DRAM)、網路處理器、圖形處理器、無線通訊晶片,該處理器經組配及/或可操作以執行實例11至實例18中的任一者之方法。
實例30包括儲存指令之非暫時性機器可讀儲存媒體,該指令在由機器執行的情況下及/或在由機器執行時可操作以致使機器執行實例11至實例18中的任一者之方法。
實例31包括用以執行一或多個操作或實質上如本文中所描述之任何方法的處理器或其他裝置。
實例32包括處理器或其他裝置,其包括用於執行一或多個操作或實質上如本文中所描述之任何方法的構件。
實例33包括用以本文中所描述的指令中的任一者之處理器或其他裝置。
實例34包括處理器或其他裝置,其包括用於執行本文中所描述的指令中的任一者的構件。
實例35包括處理器,其包含用於接收向量索引化載入加上運算及/或邏輯(A/L)操作加上儲存指令的構件。向量索引化載入加上A/L操作加上儲存指令指示將具有複數個封裝記憶體索引之源封裝記憶體索引運算元,且指示將具有複數個封裝資料元素之源封裝資料運算元。處理器包括用於執行向量索引化載入加上A/L操作加上儲存指令的構件,該構件包括用於自對應於複數個封裝記憶體索引之 記憶體位置載入複數個資料元素的構件。用於對該源封裝資料運算元之該複數個封裝資料元素及該等載入之複數個資料元素執行A/L操作的構件。用於將複數個結果資料元素儲存於對應於該複數個封裝記憶體索引之該等記憶體位置中的構件。
實例36包括實例35之處理器,其中用於接收的構件包含用於接收收集加上A/L操作加上散佈指令的構件。
200‧‧‧指令處理裝置
206‧‧‧向量索引化載入加上A/L操作加上儲存指令
212‧‧‧封裝資料暫存器
214‧‧‧源封裝記憶體索引運算元
216‧‧‧源封裝資料運算元
220‧‧‧通用暫存器
222‧‧‧記憶體子系統
224‧‧‧執行單元
226‧‧‧外部記憶體
230‧‧‧解碼單元
232‧‧‧第一記憶體位置
233‧‧‧第二記憶體位置
234‧‧‧第三記憶體位置
235‧‧‧第四記憶體位置
236‧‧‧控制信號

Claims (25)

  1. 一種處理器,其包含:一解碼單元,其用以解碼一向量索引化載入加上運算及/或邏輯(A/L)操作加上儲存指令,其具有一作業碼(opcode),該向量索引化載入加上A/L操作加上儲存指令用以指示一源封裝記憶體索引運算元係要具有複數個封裝記憶體索引,且用以指示一源封裝資料運算元係要具有複數個封裝資料元素;以及與該解碼單元耦接之一執行單元,該執行單元用以回應於該向量索引化載入加上A/L操作加上儲存指令而自對應於該複數個封裝記憶體索引之記憶體位置載入複數個資料元素,用以對該源封裝資料運算元之該複數個封裝資料元素及經載入之該複數個資料元素執行A/L操作,及用以將複數個結果資料元素儲存於對應於該複數個封裝記憶體索引之該等記憶體位置中。
  2. 如請求項1之處理器,其中該指令包含一收集加上A/L操作加上散佈指令。
  3. 如請求項1之處理器,其中該等A/L操作包含以下各者中的至少一者:封裝加法操作、封裝減法操作、封裝乘法操作、封裝除法操作、封裝乘加操作、封裝移位操作、封裝旋轉操作、封裝邏輯及操作、封裝邏輯或操作、封裝邏輯反操作,以及封裝邏輯及反操作。
  4. 如請求項3之處理器,其中該等A/L操作包含該等封裝加 法操作及該等封裝乘法操作中的至少一者。
  5. 如請求項1之處理器,其中該處理器係用以執行該向量索引化載入加上A/L操作加上儲存指令而不將經載入之該等資料元素傳送至一核心中。
  6. 如請求項1之處理器,其中該執行單元係在一記憶體子系統內之該處理器的一非核心部分中。
  7. 如請求項6之處理器,其中該解碼單元係在一核心內,且其中該執行單元比起與具有該解碼單元之該核心的靠近程度更靠近於一最後層級快取記憶體。
  8. 如請求項1之處理器,其中該執行單元係要執行該等A/L操作的一部分係用以自快取記憶體之一最後層級及快取記憶體之一次於最後層級中的一者接收經載入之該等資料元素。
  9. 如請求項1至8中任一項之處理器,其中該解碼單元係用以解碼該向量索引化載入加上A/L操作加上儲存指令,該向量索引化載入加上A/L操作加上儲存指令係要為一經遮罩向量索引化載入加上A/L操作加上儲存指令,其係用以指示一源封裝資料操作遮罩運算元。
  10. 如請求項1至8中任一項之處理器,其中該解碼單元係用以解碼該向量索引化載入加上A/L操作加上儲存指令,該向量索引化載入加上A/L操作加上儲存指令係用以指示寬度為至少512位元之該源封裝資料運算元。
  11. 一種在一處理器中之方法,其包含:接收一個具有單一作業碼之向量索引化載入加上 運算及/或邏輯(A/L)操作加上儲存指令,該向量索引化載入加上A/L操作加上儲存指令指示一個具有複數個封裝記憶體索引之源封裝記憶體索引運算元,且指示一個具有複數個封裝資料元素之源封裝資料運算元;以及執行該向量索引化載入加上A/L操作加上儲存指令,其包括:自對應於該複數個封裝記憶體索引之記憶體位置載入複數個資料元素;對該源封裝資料運算元之該複數個封裝資料元素及經載入之該複數個資料元素執行A/L操作;及將複數個結果資料元素儲存於對應於該複數個封裝記憶體索引之該等記憶體位置中。
  12. 如請求項11之方法,其中接收包含接收一收集加上A/L操作加上散佈指令。
  13. 如請求項11之方法,其中執行該等A/L操作包含執行以下各者中的至少一者:封裝加法操作、封裝減法操作、封裝乘法操作、封裝除法操作、封裝乘加操作、封裝移位操作、封裝旋轉操作、封裝邏輯及操作、封裝邏輯或操作、封裝邏輯反操作,以及封裝邏輯及反操作。
  14. 如請求項13之方法,其中執行該等A/L操作包含執行該等封裝加法操作及該等封裝乘法操作中的至少一者。
  15. 如請求項11之方法,其中執行該向量索引化載入加上A/L操作加上儲存指令完成而不將經載入之該等資料元 素傳送至一核心中。
  16. 如請求項11之方法,其中執行該等A/L操作係藉由一記憶體子系統內之該處理器的一非核心部分中之一單元所執行,且其中該單元比起與接收該等指令之一核心的靠近程度更靠近於一最後層級快取記憶體。
  17. 如請求項11至16中任一項之方法,其中接收包含接收一經遮罩向量索引化載入加上A/L操作加上儲存指令,該經遮罩向量索引化載入加上A/L操作加上儲存指令指示一源封裝資料操作遮罩運算元。
  18. 如請求項11至16中任一項之方法,其中接收包含接收該指令,該指令指示寬度為至少512位元之該源封裝資料運算元。
  19. 一種用以處理指令之系統,其包含:一互連件;一動態隨機存取記憶體(DRAM),其與該互連件耦接;以及與該互連件耦接之一處理器,該處理器用以接收一向量索引化載入加上運算及/或邏輯(A/L)操作加上儲存指令,該向量索引化載入加上運算及/或邏輯(A/L)操作加上儲存指令具有單一作業碼且其係用以指示一源封裝記憶體索引運算元係要具有複數個封裝記憶體索引,且用以指示一源封裝資料運算元係要具有複數個封裝資料元素,該處理器可操作用以回應於該向量索引化載入加上A/L操作加上儲存指令而自對應於該複數個封 裝記憶體索引之在該DRAM中的記憶體位置載入複數個資料元素,用以對該源封裝資料運算元之該複數個封裝資料元素及經載入之該複數個資料元素執行A/L操作,及用以將複數個結果資料元素儲存於目的地儲存位置中。
  20. 如請求項19之系統,其中該等目的地儲存位置包含對應於該DRAM中之該複數個封裝記憶體索引的該等記憶體位置。
  21. 如請求項19或20之系統,其中該指令包含一收集加上A/L操作加上散佈指令。
  22. 一種包含一非暫時性機器可讀取儲存媒體之製品,該非暫時性機器可讀取儲存媒體儲存數個指令,包括一具有單一作業碼之向量索引化載入加上運算及/或邏輯(A/L)操作加上儲存指令,該向量索引化載入加上A/L操作加上儲存指令用以指示一源封裝記憶體索引運算元係要具有複數個封裝記憶體索引,且用以指示一源封裝資料運算元係要具有複數個封裝資料元素,該向量索引化載入加上A/L操作加上儲存指令在由一機器所執行的情況下係要可操作以致使該機器用以執行包含以下各者之操作:自對應於該複數個封裝記憶體索引之記憶體位置載入複數個資料元素;對該源封裝資料運算元之該複數個封裝資料元素及經載入之該複數個資料元素執行A/L操 作;及將複數個結果資料元素儲存於目的地儲存位置中。
  23. 如請求項22之製品,其中用以將該等結果資料元素儲存於該等目的地儲存位置中包含用以將該等結果資料元素儲存於對應於該等封裝記憶體索引之該等記憶體位置中。
  24. 如請求項22之製品,其中該指令包含一收集加上A/L操作加上散佈指令。
  25. 如請求項22至24中任一項之製品,其中用以執行該等A/L操作包含用以執行封裝加法操作及封裝乘法操作中的至少一者。
TW103132771A 2013-09-27 2014-09-23 向量索引化記憶體存取加上運算及/或邏輯操作之處理器、方法、系統與指令 TWI566095B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/040,409 US9552205B2 (en) 2013-09-27 2013-09-27 Vector indexed memory access plus arithmetic and/or logical operation processors, methods, systems, and instructions

Publications (2)

Publication Number Publication Date
TW201530309A TW201530309A (zh) 2015-08-01
TWI566095B true TWI566095B (zh) 2017-01-11

Family

ID=52741340

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103132771A TWI566095B (zh) 2013-09-27 2014-09-23 向量索引化記憶體存取加上運算及/或邏輯操作之處理器、方法、系統與指令

Country Status (8)

Country Link
US (1) US9552205B2 (zh)
EP (1) EP3050048B1 (zh)
JP (1) JP6238497B2 (zh)
KR (1) KR101748538B1 (zh)
CN (1) CN105706155B (zh)
RU (1) RU2620930C1 (zh)
TW (1) TWI566095B (zh)
WO (1) WO2015048825A1 (zh)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9471308B2 (en) 2013-01-23 2016-10-18 International Business Machines Corporation Vector floating point test data class immediate instruction
US9804840B2 (en) 2013-01-23 2017-10-31 International Business Machines Corporation Vector Galois Field Multiply Sum and Accumulate instruction
US9513906B2 (en) 2013-01-23 2016-12-06 International Business Machines Corporation Vector checksum instruction
US9823924B2 (en) 2013-01-23 2017-11-21 International Business Machines Corporation Vector element rotate and insert under mask instruction
US9715385B2 (en) 2013-01-23 2017-07-25 International Business Machines Corporation Vector exception code
US9778932B2 (en) 2013-01-23 2017-10-03 International Business Machines Corporation Vector generate mask instruction
US9552205B2 (en) 2013-09-27 2017-01-24 Intel Corporation Vector indexed memory access plus arithmetic and/or logical operation processors, methods, systems, and instructions
US10001995B2 (en) 2015-06-02 2018-06-19 Intel Corporation Packed data alignment plus compute instructions, processors, methods, and systems
GB2540943B (en) * 2015-07-31 2018-04-11 Advanced Risc Mach Ltd Vector arithmetic instruction
US10338920B2 (en) * 2015-12-18 2019-07-02 Intel Corporation Instructions and logic for get-multiple-vector-elements operations
GB2552153B (en) * 2016-07-08 2019-07-24 Advanced Risc Mach Ltd An apparatus and method for performing a rearrangement operation
GB2554096B (en) * 2016-09-20 2019-03-20 Advanced Risc Mach Ltd Handling of inter-element address hazards for vector instructions
US10379855B2 (en) * 2016-09-30 2019-08-13 Intel Corporation Processors, methods, systems, and instructions to load multiple data elements to destination storage locations other than packed data registers
US10846087B2 (en) * 2016-12-30 2020-11-24 Intel Corporation Systems, apparatuses, and methods for broadcast arithmetic operations
CN108388446A (zh) * 2018-02-05 2018-08-10 上海寒武纪信息科技有限公司 运算模块以及方法
US10824598B2 (en) * 2018-08-07 2020-11-03 Dell Products L.P. Handling file commit and commit-delete operations in an overlay optimizer
GB2576572B (en) * 2018-08-24 2020-12-30 Advanced Risc Mach Ltd Processing of temporary-register-using instruction
EP3853717A4 (en) * 2018-09-18 2022-06-15 Optimum Semiconductor Technologies, Inc. SYSTEM AND METHOD FOR IMPLEMENTING HIDDEN VECTOR INSTRUCTIONS
US20210349719A1 (en) * 2018-09-25 2021-11-11 Nec Corporation Information processing apparatus, information processing method, and program
US11403097B2 (en) * 2019-06-26 2022-08-02 Intel Corporation Systems and methods to skip inconsequential matrix operations
CN112486980A (zh) * 2019-09-12 2021-03-12 阿里巴巴集团控股有限公司 数据存储、检索方法和装置、电子设备以及计算机可读存储介质
US11175839B1 (en) * 2019-10-22 2021-11-16 Amazon Technologies, Inc. Independently configurable remapping for interconnect access requests
US11467983B1 (en) 2019-10-22 2022-10-11 Amazon Technologies, Inc. Independently configurable interleaving for interconnect access requests
US11392406B1 (en) 2019-10-22 2022-07-19 Amazon Technologies, Inc. Alternative interrupt reporting channels for microcontroller access devices
US11546336B1 (en) 2019-10-22 2023-01-03 Amazon Technologies, Inc. Independently configurable access device stages for processing interconnect access requests
KR20210112949A (ko) 2020-03-06 2021-09-15 삼성전자주식회사 데이터 버스, 그것의 데이터 처리 방법 및 데이터 처리 장치
US11552948B1 (en) 2020-03-26 2023-01-10 Amazon Technologies, Inc. Domain management intermediary service
US20230409238A1 (en) * 2022-06-21 2023-12-21 Advanced Micro Devices, Inc. Approach for processing near-memory processing commands using near-memory register definition data
US11960759B2 (en) 2022-06-28 2024-04-16 Macronix International Co., Ltd. Memory device and data searching method thereof
TWI813358B (zh) * 2022-06-28 2023-08-21 旺宏電子股份有限公司 記憶體裝置及其資料搜尋方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5752001A (en) * 1995-06-01 1998-05-12 Intel Corporation Method and apparatus employing Viterbi scoring using SIMD instructions for data recognition
TW200304076A (en) * 2001-12-31 2003-09-16 Intel Corp A method and apparatus for layout synthesis of regular structures using relative placement
US20090249026A1 (en) * 2008-03-28 2009-10-01 Mikhail Smelyanskiy Vector instructions to enable efficient synchronization and parallel reduction operations
TWI363532B (en) * 2008-01-21 2012-05-01 Univ Nat Taiwan Method and system for packet classificiation with reduced memory space and enhanced access speed

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5725069A (en) 1980-07-21 1982-02-09 Hitachi Ltd Vector data processing equipment
US7093102B1 (en) * 2000-03-29 2006-08-15 Intel Corporation Code sequence for vector gather and scatter
US7299338B2 (en) 2002-12-04 2007-11-20 Agere Systems Inc. Vector indexed memory unit and method
US7574451B2 (en) 2004-11-02 2009-08-11 Microsoft Corporation System and method for speeding up database lookups for multiple synchronized data streams
US20070083735A1 (en) * 2005-08-29 2007-04-12 Glew Andrew F Hierarchical processor
US8290095B2 (en) * 2006-03-23 2012-10-16 Qualcomm Incorporated Viterbi pack instruction
US8135897B2 (en) * 2006-05-16 2012-03-13 St-Ericsson Sa Memory architecture
US8700884B2 (en) 2007-10-12 2014-04-15 Freescale Semiconductor, Inc. Single-instruction multiple-data vector permutation instruction and method for performing table lookups for in-range index values and determining constant values for out-of-range index values
US20090172348A1 (en) * 2007-12-26 2009-07-02 Robert Cavin Methods, apparatus, and instructions for processing vector data
RU2461079C2 (ru) 2008-02-15 2012-09-10 Нокиа Корпорейшн Упрощенная индексация и деиндексация векторов
US8793472B2 (en) 2008-08-15 2014-07-29 Apple Inc. Vector index instruction for generating a result vector with incremental values based on a start value and an increment value
US8433883B2 (en) 2009-06-11 2013-04-30 Cray Inc. Inclusive “OR” bit matrix compare resolution of vector update conflict masks
US20110320766A1 (en) * 2010-06-29 2011-12-29 Youfeng Wu Apparatus, method, and system for improving power, performance efficiency by coupling a first core type with a second core type
US8788794B2 (en) * 2010-12-07 2014-07-22 Advanced Micro Devices, Inc. Programmable atomic memory using stored atomic procedures
US20120166511A1 (en) * 2010-12-22 2012-06-28 Hiremath Chetan D System, apparatus, and method for improved efficiency of execution in signal processing algorithms
US20120216011A1 (en) * 2011-02-18 2012-08-23 Darryl Gove Apparatus and method of single-instruction, multiple-data vector operation masking
GB2508533B (en) * 2011-09-26 2020-01-01 Intel Corp Instruction and logic to provide vector scatter-op and gather-op functionality
US8972697B2 (en) * 2012-06-02 2015-03-03 Intel Corporation Gather using index array and finite state machine
US9582287B2 (en) * 2012-09-27 2017-02-28 Intel Corporation Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
US9552205B2 (en) 2013-09-27 2017-01-24 Intel Corporation Vector indexed memory access plus arithmetic and/or logical operation processors, methods, systems, and instructions

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5752001A (en) * 1995-06-01 1998-05-12 Intel Corporation Method and apparatus employing Viterbi scoring using SIMD instructions for data recognition
TW200304076A (en) * 2001-12-31 2003-09-16 Intel Corp A method and apparatus for layout synthesis of regular structures using relative placement
TWI363532B (en) * 2008-01-21 2012-05-01 Univ Nat Taiwan Method and system for packet classificiation with reduced memory space and enhanced access speed
US20090249026A1 (en) * 2008-03-28 2009-10-01 Mikhail Smelyanskiy Vector instructions to enable efficient synchronization and parallel reduction operations

Also Published As

Publication number Publication date
CN105706155B (zh) 2019-01-15
CN105706155A (zh) 2016-06-22
US9552205B2 (en) 2017-01-24
RU2620930C1 (ru) 2017-05-30
EP3050048B1 (en) 2022-11-02
EP3050048A4 (en) 2018-01-17
TW201530309A (zh) 2015-08-01
KR20160040623A (ko) 2016-04-14
US20150095623A1 (en) 2015-04-02
WO2015048825A1 (en) 2015-04-02
JP6238497B2 (ja) 2017-11-29
EP3050048A1 (en) 2016-08-03
JP2016531377A (ja) 2016-10-06
KR101748538B1 (ko) 2017-06-16

Similar Documents

Publication Publication Date Title
TWI566095B (zh) 向量索引化記憶體存取加上運算及/或邏輯操作之處理器、方法、系統與指令
TWI512616B (zh) 用於緊縮資料運算遮罩之序連的方法、設備、系統及製品
TWI575448B (zh) 三個來源運算元浮點加法處理器、方法、系統及指令
TWI617978B (zh) 用於向量索引載入和儲存之方法和設備
TWI517042B (zh) 用以將萬國碼字元之可變長度編碼點轉碼之處理器、方法、系統及製品
TW201730746A (zh) 用以融合指令之硬體設備及方法
TWI514268B (zh) 合併遮罩圖案之指令
TWI544406B (zh) 浮點捨入處理器
TWI544411B (zh) 緊縮旋轉處理器、方法、系統與指令
TWI489381B (zh) 多暫存器散布指令
TWI489384B (zh) 執行置換運算的處理器與方法及具有該處理器的電腦系統
TWI455024B (zh) 唯一封裝資料元件識別處理器,方法,系統,及指令
TW201723805A (zh) 資料元件比較處理器、方法、系統及指令
TW201738733A (zh) 執行指令以排列遮罩的系統及方法
TW201732572A (zh) 用於跨步的載入(strided load)的系統、設備及方法
TWI526930B (zh) 用以複製及遮蔽資料結構之設備及方法
TW201636827A (zh) 四維摩頓座標轉換處理器、方法、系統及指令
TW201344573A (zh) 向量頻率擴展指令
TW201810029A (zh) 用於跨步載入的系統、設備及方法
TW201732568A (zh) 用於巷道為主的跨類收集的系統、設備與方法
TW201730748A (zh) 用於跨距存取的系統、裝置及方法
CN111831335A (zh) 经改进的插入指令的装置和方法
TWI567644B (zh) 用以執行向量飽和雙字/四字加法的指令及邏輯
TWI599951B (zh) 用於融合乘法乘法指令的處理器、方法及系統
TW201732553A (zh) 用於保留位元的強制執行的裝置及方法

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees