TWI514273B - 於電腦處理器中執行聚集跨步指令及分散跨步指令之方法及設備 - Google Patents

於電腦處理器中執行聚集跨步指令及分散跨步指令之方法及設備 Download PDF

Info

Publication number
TWI514273B
TWI514273B TW103144497A TW103144497A TWI514273B TW I514273 B TWI514273 B TW I514273B TW 103144497 A TW103144497 A TW 103144497A TW 103144497 A TW103144497 A TW 103144497A TW I514273 B TWI514273 B TW I514273B
Authority
TW
Taiwan
Prior art keywords
instruction
memory
field
stride
bit
Prior art date
Application number
TW103144497A
Other languages
English (en)
Other versions
TW201525856A (zh
Inventor
Christopher Hughes
Adrian Jesus Corbal San
Roger Espasa Sans
Bret Toll
Robert Valentine
Milind B Girkar
Andrew Thomas Foryth
Edward T Grochowski
Jonathan C Hall
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of TW201525856A publication Critical patent/TW201525856A/zh
Application granted granted Critical
Publication of TWI514273B publication Critical patent/TWI514273B/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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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
    • 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/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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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
    • 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/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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • 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
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • 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/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • G06F9/3555Indexed addressing using scaling, e.g. multiplication of index
    • 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/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags

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)
  • Complex Calculations (AREA)
  • Advance Control (AREA)

Description

於電腦處理器中執行聚集跨步指令及分散跨步指令之方法及設備
本發明領域大體上關於電腦處理器架構,更具體地,關於執行時造成特定結果之指令。
有關單一指令,處理器之多個資料(SIMD)寬度增加,應用程式開發者(及編譯器)發現由於想同步操作之資料元件在記憶體中並非鄰近,增加了完全利用SIMD硬體的困難。處理此困難之一方法為使用聚集及分散指令。聚集指令從記憶體讀取一組(可能地)非鄰近元件並將其包裝在一起,典型地進入單一暫存器。分散指令則相反。不幸地,甚至聚集及分散指令並未總是提供所欲效率。
1400‧‧‧通用向量友好指令格式
1405‧‧‧非記憶體存取指令模板
1410‧‧‧非記憶體存取、完全修整控制類型作業指令模板
1412‧‧‧非記憶體存取、寫入遮罩控制、部份修整控制類型作業指令模板
1415‧‧‧非記憶體存取、資料轉換類型作業指令模板
1417‧‧‧非記憶體存取、寫入遮罩控制、VSIZE類型作業指令模板
1420‧‧‧記憶體存取指令模板
1425‧‧‧記憶體存取、暫時指令模板
1427‧‧‧記憶體存取、寫入遮罩控制指令模板
1430‧‧‧記憶體存取、非暫時指令模板
1440‧‧‧格式欄位
1442‧‧‧底數作業欄位
1444‧‧‧暫存器索引欄位
1446‧‧‧修飾符欄位
1446A‧‧‧非記憶體存取
1446B‧‧‧記憶體存取
1450‧‧‧增大作業欄位
1452‧‧‧主要欄位
1452A‧‧‧RS欄位
1452A.1‧‧‧修整
1452A.2‧‧‧資料轉換
1452B‧‧‧逐出暗示欄位
1452B.1‧‧‧暫時
1452B.2‧‧‧非暫時
1452C‧‧‧寫入遮罩控制欄位
1454‧‧‧次要欄位
1454A‧‧‧修整控制欄位
1454B‧‧‧資料轉換欄位
1454C‧‧‧資料操縱欄位
1456‧‧‧浮點例外欄位
1457A‧‧‧RL欄位
1457A.1‧‧‧修整
1457A.2‧‧‧向量長度
1457B‧‧‧廣播欄位
1458、1459、1459A‧‧‧修整作業控制欄位
1459B‧‧‧向量長度欄位
1460‧‧‧標度欄位
1462A‧‧‧位移欄位
1462B‧‧‧位移因子欄位
1464‧‧‧資料元件寬度欄位
1468‧‧‧類型欄位
1468A‧‧‧A類
1468B‧‧‧B類
1470‧‧‧寫入遮罩欄位
1472‧‧‧當前欄位
1474‧‧‧全運算碼欄位
1500‧‧‧特定向量友好指令格式
1502‧‧‧EVEX前置
1505‧‧‧REX欄位
1510‧‧‧REX'欄位
1515‧‧‧運算碼映射欄位
1520‧‧‧EVEX.vvvv欄位
1525‧‧‧前置編碼欄位
1530‧‧‧實際運算碼欄位
1540‧‧‧MOD R/M欄位
1542‧‧‧MOD欄位
1544‧‧‧MODR/M.reg欄位
1546‧‧‧MODR/M.r/m欄位
1554‧‧‧SIB.xxx
1556‧‧‧SIB.bbb
1600‧‧‧暫存器架構
1610‧‧‧向量暫存器檔案
1615‧‧‧寫入遮罩暫存器
1620‧‧‧多媒體延伸控制狀態暫存器
1625‧‧‧通用暫存器
1630‧‧‧延伸之旗標暫存器
1635‧‧‧浮點控制字暫存器
1640‧‧‧浮點狀態字暫存器
1645‧‧‧標量浮點堆疊暫存器檔案
1650‧‧‧MMX包裝整數平坦暫存器檔案
1655‧‧‧分段暫存器
1665‧‧‧RIP暫存器
1700‧‧‧指令解碼器
1702‧‧‧片上互連網路
1704‧‧‧L2快取
1706‧‧‧L1快取
1706A‧‧‧L1資料快取
1708‧‧‧標量單元
1710‧‧‧向量單元
1712‧‧‧標量暫存器
1714‧‧‧向量暫存器
1720‧‧‧重組單元
1722A、1722B‧‧‧數值轉換單元
1724‧‧‧複製單元
1726‧‧‧寫入遮罩暫存器
1728‧‧‧16-寬ALU
1805‧‧‧前端單元
1810‧‧‧執行引擎單元
1815‧‧‧記憶體單元
1820‧‧‧L1分支預測單元
1822‧‧‧L2分支預測單元
1824‧‧‧L1指令快取單元
1826‧‧‧指令翻譯後備緩衝器
1828‧‧‧指令取得及預解碼單元
1830‧‧‧指令佇列單元
1832‧‧‧解碼單元
1834‧‧‧複雜解碼器單元
1836、1838、1840‧‧‧簡單解碼器單元
1842‧‧‧微碼ROM單元
1844‧‧‧迴流檢測器單元
1846‧‧‧第二級TLB單元
1848‧‧‧L2快取單元
1850‧‧‧L3及更高快取單元
1852‧‧‧資料TLB單元
1854‧‧‧L1資料快取單元
1856‧‧‧重命名/分配器單元
1858‧‧‧統一排程單元
1860‧‧‧執行單元
1862、1864、1872‧‧‧混合標量及向量單元
1866‧‧‧載入單元
1868‧‧‧儲存位址單元
1870‧‧‧儲存資料單元
1874‧‧‧退休單元
1876‧‧‧實體暫存器檔案單元
1877A‧‧‧向量暫存器單元
1877B‧‧‧寫入遮罩暫存器單元
1877C‧‧‧標量暫存器單元
1878‧‧‧重新排序緩衝器單元
1900、2100‧‧‧系統
1910、1915、2070、2080、2300‧‧‧處理器
1920‧‧‧圖形記憶體控制器集線器
1940、2042、2044‧‧‧記憶體
1945‧‧‧顯示器
1950‧‧‧輸入/輸出控制器集線器
1960‧‧‧寫回/記憶體寫入階段
1970‧‧‧週邊裝置
1995‧‧‧前端匯流排
2000‧‧‧多處理器系統
2014、2114‧‧‧I/O裝置
2016‧‧‧第一匯流排
2018‧‧‧匯流排橋接器
2020‧‧‧第二匯流排
2022‧‧‧鍵盤/滑鼠
2024‧‧‧音頻I/O
2026‧‧‧通訊裝置
2028‧‧‧資料儲存單元
2030‧‧‧碼
2038‧‧‧高性能圖形電路
2039‧‧‧高性能圖形介面
2050、2052、2054、2078、2088‧‧‧點對點介面
2072、2082‧‧‧整合記憶體控制器集線器
2076、2094、2086、2098‧‧‧點對點介面電路
2090‧‧‧晶片組
2096‧‧‧介面
2115‧‧‧舊有I/O裝置
2200‧‧‧晶片上系統
2202‧‧‧互連單元
2210‧‧‧應用處理器
2220‧‧‧媒體處理器
2224‧‧‧影像處理器
2226‧‧‧音頻處理器
2228‧‧‧視訊處理器
2230‧‧‧靜態隨機存取記憶體單元
2232‧‧‧直接記憶體存取單元
2240‧‧‧顯示單元
2302A-N‧‧‧核心
2306‧‧‧共用快取單元
2308‧‧‧整合圖形邏輯
2310‧‧‧系統代理者
2312‧‧‧基於環形互連單元
2314‧‧‧整合記憶體控制器單元
2316‧‧‧匯流排控制器單元
2402‧‧‧高階語言
2404‧‧‧x86編譯器
2406‧‧‧x86二進制碼
2408‧‧‧指令集編譯器
2410‧‧‧指令集二進制碼
2412‧‧‧指令轉換器
2414‧‧‧不具至少一x86指令集核心之處理器
2416‧‧‧具至少一x86指令集核心之處理器
本發明係藉由範例而說明,且不侷限於圖式,其中相似元件符號表示類似元件,且其中: 圖1中描繪聚集跨步指令之執行範例。
圖2中描繪聚集跨步指令之執行另一範例。
圖3中描繪聚集跨步指令之執行又另一範例。
圖4描繪使用處理器中聚集跨步指令之實施例。
圖5描繪聚集跨步指令之處理方法實施例。
圖6中描繪分散跨步指令之執行範例。
圖7中描繪分散跨步指令之執行另一範例。
圖8中描繪分散跨步指令之執行又另一範例。
圖9描繪使用處理器中分散跨步指令之實施例。
圖10描繪分散跨步指令之處理方法實施例。
圖11中描繪聚集跨步預取指令之執行範例。
圖12描繪使用處理器中聚集跨步預取指令之實施例。
圖13描繪聚集跨步預取指令之處理方法實施例。
圖14A為方塊圖,描繪根據本發明之實施例之通用向量友好指令格式及其A類指令模板。
圖14B為方塊圖,描繪根據本發明之實施例之通用向量友好指令格式及其B類指令模板。
圖15A-C描繪根據本發明之實施例之示範特定向量友好指令格式。
圖16為根據本發明之一實施例之暫存器架構方塊圖。
圖17A為根據本發明之實施例之單一CPU核心之方塊圖,連同其至片上互連網路之連接,及其2級(L2)快取之本地子集。
圖17B為根據本發明之實施例之圖17A中部分CPU核心 之分解圖。
圖18為方塊圖,描繪根據本發明之實施例之示範失序架構。
圖19為根據本發明之一實施例之系統方塊圖。
圖20為根據本發明之實施例之第二系統方塊圖。
圖21為根據本發明之實施例之第三系統方塊圖。
圖22為根據本發明之實施例之SoC方塊圖。
圖23為根據本發明之實施例之單一核心處理器及具整合記憶體控制器及圖形之多核心處理器之方塊圖。
圖24為方塊圖,根據本發明之實施例對比使用軟體指令轉換器,將來源指令集中二進制指令轉換為目標指令集中二進制指令之方塊圖。
【發明內容及實施方式】
在下列說明中,提出許多特定細節。然而,理解的是可體現本發明之實施例而無該些特定細節。在其他情況下,未詳細顯示眾知的電路、結構及技術,以免模糊對此說明之理解。
說明書中參照「一實施例」、「實施例」、「示範實施例」等,指示所說明之實施例可包括特徵、結構、或特性,但每一實施例不一定包括特徵、結構、或特性。再者,該等用語不一定係指相同實施例。此外,當所說明之特徵、結構、或特性連接實施例時,所傳遞的是在熟悉本技術之人士之知識內影響連接其他實施例之該等特徵、結 構、或特性,不論是否明白說明。
在高性能計算/產量計算應用中,最常見非鄰近記憶體參考圖案為「跨步之記憶體圖案」。跨步之記憶體圖案為記憶體位置之稀疏集,且每一元件與前者相離相同固定量稱為跨步。當存取多維「C」或其他高階程式語言陣列之對角線或行時,常發現此記憶體圖案。
跨步之圖案的範例為:A、A+3、A+6、A+9、A+12、...,其中A為基址及跨步為3。處理跨步之記憶體圖案之聚集及分散的問題為其經設計以假設元件隨機分佈,且無法利用跨步提供之本質資訊(可預測性程度愈高,允許愈高性能實施)。再者,程式設計師及編譯器導致將已知跨步轉換為聚集/分散可用作輸入之記憶體索引之向量的負擔。以下為利用跨步之若干聚集及分散指令之實施例,及可用以執行該等指令之系統、架構、指令格式等之實施例。
聚集跨步
第一個該等指令為聚集跨步指令。此指令之執行藉由處理器有條件地從記憶體將資料元件載入目的地暫存器。例如,在一些實施例中最多16個32位元或8個64位元浮點資料元件有條件地裝入目的地,諸如XMM、YMM、或ZMM暫存器。
將載入之資料元件經由SIB(標度、索引、及底數)定址之類型指明。在一些實施例中,指令包括通用暫存器 中傳遞之基址、傳遞作為當前之標度、傳遞作為通用暫存器之跨步暫存器、及可選位移。當然可使用其他實施,諸如包括基址及/或跨步之當前值的指令等。
聚集跨步指令亦包括寫入遮罩。在一些實施例中,使用專用遮罩暫存器,諸如之後詳細說明之「k」寫入遮罩,當相應寫入遮罩位元指示其應如此時(例如,在一些實施例中若位元為「1」),將載入記憶體資料元件。在其他實施例中,資料元件之寫入遮罩位元為來自寫入遮罩暫存器(例如,XMM或YMM暫存器)之相應元件的符號位元。在該些實施例中,寫入遮罩元件被視為與資料元件相同尺寸。若未設定資料元件之相應寫入遮罩位元,目的地暫存器(例如,XMM、YMM、或ZMM暫存器)之相應資料元件便保持未改變。
典型地,除非有例外,聚集跨步指令之執行將導致整個寫入遮罩暫存器設定為零。然而,在一些實施例中,若至少一元件已聚集(即,若例外藉由非具其寫入遮罩位元集之最高有效者之元件觸發),指令將藉由例外暫停。當此發生時,目的地暫存器及寫入遮罩暫存器被部分地更新(已聚集之該些元件被置入目的地暫存器,並使其遮罩位元設定為零)。若已聚集之元件即將發生任何抑制或中斷,其可遞送代替例外,並設定EFLAGS繼續旗標或相當件,使得當指令繼續時不重新觸發指令暫停點。
在一些實施例中,具128位元尺寸向量,指令將聚集最多四個單一精確浮點值或二個雙重精確浮點值。在一些 實施例中,具256位元尺寸向量,指令將聚集最多8個單一精確浮點值或四個雙重精確浮點值。在一些實施例中,具512位元尺寸向量,指令將聚集最多16個單一精確浮點值或8個雙重精確浮點值。
在一些實施例中,若遮罩及目的地暫存器相同,此指令遞送GP故障。典型地,可以任何順序從記憶體讀取資料元件值。然而,故障係以從右至左方式遞送。即,若藉由元件觸發故障並予遞送,所有接近目的地XMM、YMM、或ZMM之元件將完成(及非故障)。接近MSB之個別元件可或不可完成。若特定元件觸發多個故障,將以習知順序遞送。此指令之特定實施可重複一假設輸入值及架構狀態相同,將聚集相同元件集至故障者左側。
此指令之示範格式為「VGATHERSTR zmm1{k1},[底數,標度* 跨步]+位移」,其中zmm1為目的地向量暫存器運算元(諸如128、256、512位元暫存器等),k1為寫入遮罩運算元(諸如之後詳細說明之16位元暫存器範例),及底數、標度、跨步、及位移用以產生記憶體中第一資料元件之記憶體來源位址,及將有條件地裝入目的地暫存器之後續記憶體資料元件的跨步值。在一些實施例中,寫入遮罩亦為不同尺寸(8位元、32位元等)。此外,在一些實施例中,以下將詳細說明並非寫入遮罩之所有位元為指令利用。VGATHERSTR為指令之運算碼。典型地,指令中明白定義每一運算元。資料元件之尺寸可於指令之「前置」中定義,諸如經由使用資料間隔尺寸位元 之指示,如同文中所說明之「W」。在大部分實施例中,資料間隔尺寸位元將指示資料元件為32或64位元。若資料元件尺寸為32位元,且來源之尺寸為512位元,那麼每一來源便存在十六(16)個資料元件。
定址之快速繞行可用於此指令。在常規Intel架構(x86)記憶體運算元中,可具有下列,例如:[rax+rsi*2]+36,其中RAX:為底數,RSI:為索引,2:為標度SS,36:為位移,及[ ]:括弧表示記憶體運算元之內容。因此,在此位址之資料為資料=MEM_CONTENTS(addr=RAX+RSI*2+36)。在常規聚集中,具有下列,例如:[rax+zmm2*2]+36,其中RAX:為底數,Zmm2:為索引之*向量*,2:為標度SS,36:為位移,及[ ]:括弧表示記憶體運算元之內容。因此,資料之向量為:資料[i]=MEM_CONTENTS(addr=RAX+ZMM2[i]*2+36)。在一些實施例中,在聚集跨步中,再次定址:[rax,rsi*2]+36,其中RAX:為底數,RSI:為跨步,2:為標度SS,36:為位移,及[ ]:括弧表示記憶體運算元之內容。此處,資料之向量為資料[i]=MEM_CONTENTS(addr=RAX+跨步*i*2+36)。其他「跨步」指令可具有類似定址模型。
圖1中描繪聚集跨步指令之執行範例。在此範例中,來源為初始定位於RAX暫存器中所發現之位址的記憶體(此係記憶體定址及位移等可用以產生位址之簡單看法)。當然,記憶體位址可儲存於其他暫存器中,或可發 現為如以上詳細說明之指令中的當前。
在此範例中寫入遮罩為16位元寫入遮罩,具相應於4DB4之十六進制值的位元值。對具「1」值之寫入遮罩的每一位元位置而言,來自記憶體來源之資料元件係儲存於相應位置之目的地暫存器中。寫入遮罩之第一位置(例如,k1[0])為「0」,其指示相應目的地資料元件位置(例如,目的地暫存器之第一資料元件)將不具有來自儲存於彼之來源記憶體的資料元件。在此狀況下,將不儲存與RAX位址相關之資料元件。寫入遮罩之下一位元亦為「0」,指示來自記憶體之後續「跨步之」資料元件亦將不儲存於目的地暫存器中。在此範例中,跨步值為「3」,因而此後續跨步資料元件為遠離第一資料元件之第三資料元件。
寫入遮罩中第一「1」值係在第三位元位置中(例如,k1[2])。此指示後續於記憶體之先前跨步資料元件的跨步資料元件將儲存於目的地暫存器中相應資料元件位置。此後續跨步資料元件遠離先前跨步資料元件3,及遠離第一資料元件6。
剩餘寫入遮罩位元位置用以決定記憶體來源之哪些額外資料元件將儲存於目的地暫存器中(在此狀況下,儲存8個總資料元件,但依據寫入遮罩位元可為更少或更多)。此外,來自記憶體來源之資料元件可上轉換以適應目的地之資料元件尺寸,諸如在儲存於目的地之前,從16位元浮點值至32位元浮點值。以上已詳細說明上轉換及編 碼為指令格式之範例。此外,在一些實施例中,在儲存於目的地之前,記憶體運算元之跨步資料元件儲存於暫存器中。
圖2中描繪執行聚集跨步指令之另一範例。此範例與先前類似,但資料元件之尺寸不同(例如,資料元件為64位元而非32位元)。因為此尺寸改變,用於遮罩之位元數量亦改變(其為八)。在一些實施例中,使用遮罩之下八位元(8個最低有效者)。在其他實施例中,使用遮罩之上八位元(8個最高有效者)。在其他實施例中,使用遮罩之彼此位元(即,偶數位元或奇數位元)。
圖3中描繪執行聚集跨步指令之又另一範例。此範例與先前類似,除了遮罩並非16位元暫存器以外。相反地,寫入遮罩暫存器為向量暫存器(諸如XMM或YMM暫存器)。在此範例中,將有條件地儲存之每一資料元件的寫入遮罩位元,為寫入遮罩中相應資料元件之符號位元。
圖4描繪處理器中使用聚集跨步指令之實施例。於401,取得具目的地運算元、來源位址運算元(底數、位移、索引、及/或標度)、及寫入遮罩之聚集跨步指令。先前已詳細說明運算元之示範尺寸。
於403,解碼聚集跨步指令。依據指令之格式,可於此階段解譯各種資料,諸如是否將上轉換(或其他資料轉換)、哪一暫存器將寫入及擷取、來源記憶體位址為何等。
於405,擷取/讀取來源運算元值。在大部分實施例 中,此時讀取與記憶體來源位置位址及後續跨步之位址相關之資料元件(例如,讀取整個快取線)。此外,可暫時儲存於非目的地之向量暫存器中。然而,可從來源一次擷取一項資料元件。
若將執行任何資料元件轉換(諸如上轉換),可於407執行。例如,來自記憶體之16位元資料元件可上轉換為32位元資料元件。
於409,藉由執行資源而執行聚集跨步指令(或包含該等指令之作業,諸如微作業)。此執行致使定址之記憶體之跨步之資料元件將依據寫入遮罩之相應位元而有條件地儲存於目的地暫存器中。先前已描繪此儲存之範例。
圖5描繪聚集跨步指令之處理方法實施例。在此實施例中,假設先前已執行若干(若非全部)的作業401-407,然而,並未顯示以免模糊以下呈現之細節。例如,未顯示取得及解碼,亦未顯示運算元(來源及寫入遮罩)檢索。
於501,決定遮罩及目的地是否為相同暫存器。若然,接著將產生故障並將停止指令執行。
若其並未相同,並於503,從來源運算元之位址資料產生記憶體中第一資料元件之位址。例如,底數及位移用以產生位址。再次,其可已於先前執行。此時若尚未執行則擷取資料元件。在一些實施例中,擷取若干(若非全部)的(跨步之)資料元件。
於504,決定第一資料元件是否存在故障。若存在故 障,接著停止指令之執行。
若未存在故障,於505決定相應於記憶體中第一資料元件之寫入遮罩位元值是否指示其將儲存於目的地暫存器中相應位置。回頭看先前範例,此決定注視寫入遮罩之最低有效位置,諸如圖1之寫入遮罩的最低有效值,看記憶體資料元件是否將儲存於目的地之第一資料元件位置。
當寫入遮罩位元未指示記憶體資料元件將儲存於目的地暫存器中時,接著,於507僅留下目的地之第一位置中資料元件。典型地,此係藉由寫入遮罩中「0」值指示,然而,可使用相反習慣。
當寫入遮罩位元指示記憶體資料元件將儲存於目的地暫存器中時,接著,於509,目的地之第一位置中資料元件儲存於該位置。典型地,此係藉由寫入遮罩中「1」值指示,然而,可使用相反習慣。若不需任何資料轉換,諸如上轉換,若尚未進行則亦於此時執行。
於511,清除第一寫入遮罩位元以指示成功寫入。
於513,產生將有條件地儲存於目的地暫存器中之後續跨步資料元件之位址。如先前範例中詳細說明,此資料元件為遠離記憶體之先前資料元件之「x」資料元件,其中「x」為包括指令之跨步值。再次,此可已於先前執行。若先前尚未執行,此時便擷取資料元件。
於515,決定後續跨步資料元件是否存在故障。若存在故障,接著停止指令之執行。
若未存在故障,接著於517決定相應於記憶體中後續 跨步資料元件之寫入遮罩位元值是否指示其將儲存於目的地暫存器中相應位置。注視先前範例,此決定注視寫入遮罩之下一位置,諸如圖1之寫入遮罩的第二最低有效值,看記憶體資料元件是否將儲存於目的地之第二資料元件位置中。
當寫入遮罩位元未指示記憶體資料元件將儲存於目的地暫存器中時,接著於523僅留下目的地之位置中資料元件。典型地,此係藉由寫入遮罩中「0」值指示,然而可使用相反習慣。
當寫入遮罩位元指示記憶體資料元件將儲存於目的地暫存器中時,接著於519,目的地之位置中資料元件儲存於該位置。典型地,此係藉由寫入遮罩中「1」值指示,然而可使用相反習慣。若需任何資料轉換,諸如上轉換,若尚未進行,此時亦可執行。
於521,清除寫入遮罩評估之位元,以指示成功寫入。
於525,決定評估之寫入遮罩位置是否為最後寫入遮罩,或是否目的地之所有資料元件位置已填滿。若然,接著作業結束。若否,接著評估另一寫入遮罩位元等。
雖然此圖及以上說明認為各第一位置為最低有效位置,在一些實施例中,第一位置為最高有效位置。在一些實施例中,未進行故障決定。
分散跨步
第二個該等指令為分散跨步指令。在一些實施例中,處理器執行此指令致使來自來源暫存器(例如,XMM、YMM、或ZMM)之資料元件依據寫入遮罩中之值而有條件地儲存至目的地記憶體位置。例如,在一些實施例中最多16個32位元或8個64位元浮點資料元件有條件地儲存於目的地記憶體中。
典型地,目的地記憶體位置係經由SIB資訊指明(如以上說明)。若其相應遮罩位元指示其應如此,便儲存資料元件。在一些實施例中,指令包括通用暫存器中傳遞之基址、傳遞作為當前之標度、傳遞作為通用暫存器之跨步暫存器、及可選位移。當然可使用其他實施,諸如包括基址及/或跨步之當前值的指令等。
分散跨步指令亦包括寫入遮罩。在一些實施例中,使用專用遮罩暫存器,諸如之後詳細說明之「k」寫入遮罩,若相應寫入遮罩位元指示其應如此(例如,在一些實施例中若位元為「1」),將儲存來源資料元件。在其他實施例中,資料元件之寫入遮罩位元為來自寫入遮罩暫存器(例如,XMM或YMM暫存器)之相應元件的符號位元。在該些實施例中,寫入遮罩元件被視為與資料元件相同尺寸。若未設定資料元件之相應寫入遮罩位元,記憶體之相應資料元件便保持未改變。
典型地,除非觸發例外,與分散跨步指令相關之整個寫入遮罩暫存器將藉由此指令設定為零。此外,若至少一資料元件已分散(恰如以上聚集跨步指令),便可藉由例 外而暫停此指令之執行。當此發生時,目的地記憶體及遮罩暫存器被部分地更新。
在一些實施例中,具128位元尺寸向量,指令將分散最多四個單一精確浮點值或二個雙重精確浮點值。在一些實施例中,具256位元尺寸向量,指令將分散最多8個單一精確浮點值或四個雙重精確浮點值。在一些實施例中,具512位元尺寸向量,指令將分散最多16個32位元浮點值或8個64位元浮點值。
在一些實施例中,僅寫入以與目的地位置重疊確保關於彼此之順序(從來源暫存器之最低有效者至最高有效者)。若來自兩不同元件之任何兩位置相同,元件便重疊。未重疊之寫入可以任何順序發生。在一些實施例中,若二或更多目的地位置完全重疊,可省略「較早」寫入。 此外,在一些實施例中,資料元件可以任何順序分散(若無重疊),但故障係以從右至左順序遞送,恰如以上聚集跨步指令。
此指令之示範格式為「VSCATTERSTR[底數,標度* 跨步]+位移{k1},ZMM1」,其中ZMM1為來源向量暫存器運算元(諸如128、256、512位元暫存器等),k1為寫入遮罩運算元(諸如之後詳細說明之16位元暫存器範例),及底數、標度、跨步、及位移提供記憶體目的地位址及相對於將有條件地包裝入目的地暫存器之記憶體的後續資料元件之跨步值。在一些實施例中,寫入遮罩亦為不同尺寸(8位元、32位元等)。此外,在一些實施例中, 以下將詳細說明並非寫入遮罩之所有位元為指令利用。VSCATTERSTR為指令之運算碼。典型地,指令中明白定義每一運算元。資料元件之尺寸可於指令之「前置」中定義,諸如經由使用資料間隔尺寸位元之指示,如同文中所說明之「W」。在大部分實施例中,資料間隔尺寸位元將指示資料元件為32或64位元。若資料元件尺寸為32位元,且來源之尺寸為512位元,那麼每一來源便存在十六(16)個資料元件。
此指令正常為寫入遮罩使得僅該些元件具寫入遮罩暫存器中相應位元集,以上範例中k1,於目的地記憶體位置修改。具寫入遮罩暫存器中相應位元清除之目的地記憶體位置中資料元件保持其先前值。
圖6中描繪分散跨步指令之執行範例。來源為暫存器,諸如XMM、YMM、或ZMM。在此範例中,目的地為初始定址於RAX暫存器中所發現之位址的記憶體(此係記憶體定址及位移等可用以產生位址之簡單看法)。當然,記憶體位址可儲存於其他暫存器中,或可發現為如以上詳細說明之指令中的當前。
在此範例中寫入遮罩為16位元寫入遮罩,具相應於4DB4之十六進制值的位元值。對具「1」值之寫入遮罩的每一位元位置而言,來自暫存器來源之相應資料元件係儲存於相應(跨步之)位置之目的地記憶體中。寫入遮罩之第一位置(例如,k1[0])為「0」,其指示相應相應源資料元件位置(例如,來源暫存器之第一資料元件)將不寫 入至RAX記憶體位置。寫入遮罩之下一位元亦為「0」,指示來自來源暫存器之下一資料元件將不儲存於從RAX記憶體位置跨步之記憶體位置中。在此範例中,跨步值為「3」,因而從RAX記憶體位置三個資料元件之資料元件將不被覆寫。
寫入遮罩中第一「1」值係在第三位元位置中(例如,k1[2])。此指示來源暫存器之第三資料元件將儲存於目的地記憶體中。此資料元件係儲存於遠離跨步資料元件3跨步之位置,及遠離第一資料元件6跨步之位置。
剩餘寫入遮罩位元位置用以決定哪一來源暫存器之額外資料元件將儲存於目的地記憶體中(在此狀況下,儲存8個總資料元件,但依據寫入遮罩可為更少或更多)。此外,來自暫存器來源之資料元件可下轉換以適應目的地之資料元件尺寸,諸如在儲存於目的地之前,從32位元浮點值至16位元浮點值。以上已詳細說明下轉換及編碼為指令格式之範例。
圖7中描繪執行分散跨步指令之另一範例。此範例與先前的一個範例類似,但資料元件之尺寸不同(例如,資料元件為64位元而非32位元)。因為此尺寸改變,用於遮罩之位元數量亦改變(其為八)。在一些實施例中,使用遮罩之下八位元(8個最低有效者)。在其他實施例中,使用遮罩之上八位元(8個最高有效者)。在其他實施例中,使用遮罩之每一其他位元(即,偶數位元或奇數位元)。
圖8中描繪執行分散跨步指令之又另一範例。此範例與先前的一個範例類似,除了遮罩並非16位元暫存器以外。相反地,寫入遮罩暫存器為向量暫存器(諸如XMM或YMM暫存器)。在此範例中,將有條件地儲存之每一資料元件的寫入遮罩位元,為寫入遮罩中相應資料元件之符號位元。
圖9描繪處理器中使用分散跨步指令之實施例。於901,取得具目的地位址運算元(底數、位移、索引、及/或標度)、寫入遮罩、及來源暫存器運算元之分散跨步指令。先前已詳細說明來源暫存器之示範尺寸。
於903,解碼分散跨步指令。依據指令之格式,可於此階段解譯各種資料,諸如是否將下轉換(或其他資料轉換)、哪一暫存器將寫入及擷取、記憶體位址為何等。
於905,擷取/讀取源運算元值。
若將執行任何資料元件轉換(諸如下轉換),可於907執行。例如,來自來源之32位元資料元件可下轉換為16位元資料元件。
於909,藉由執行資源而執行分散跨步指令(或包含該等指令之作業,諸如微作業)。此執行致使來自來源(例如,XMM、YMM、或ZMM暫存器)之資料元件將依據寫入遮罩中之值而有條件地從最低至最高有效者儲存於任何重疊(跨步之)目的地記憶體位置。
圖10描繪分散跨步指令之處理方法實施例。在此實施例中,假設先前已執行若干,若非全部,作業901-907, 然而,並未顯示以免模糊以下呈現之細節。例如,未顯示取得及解碼,亦未顯示運算元(來源及寫入遮罩)檢索。
於1001,從指令之位址資料產生可能被寫入至第一記憶體位置的位址。再次,其可已於先前執行。
於1002,決定該位址是否存在故障。若存在故障,接著執行停止。
若未存在故障,於1003決定第一寫入遮罩位元之值是否指示來源暫存器之第一資料元件將儲存於產生之位址。回頭看先前範例,此決定注視寫入遮罩之最低有效位置,諸如圖6之寫入遮罩的最低有效值,以便看第一暫存器資料元件是否將儲存於產生之位址。
當寫入遮罩位元未指示暫存器資料元件將儲存於產生之位址時,接著,於1005僅留下該位址之記憶體中資料元件。典型地,此係藉由寫入遮罩中「0」值指示,然而,可使用相反習慣。
當寫入遮罩位元指示暫存器資料元件將儲存於產生之位址時,接著,於1007,來源之第一位置中資料元件儲存於該位置。典型地,此係藉由寫入遮罩中「1」值指示,然而,可使用相反習慣。若不需任何資料轉換,諸如下轉換,若尚未進行則亦於此時執行。
於1009,清除寫入遮罩位元以指示成功寫入。
於1011,產生使其資料元件有條件地覆寫之後續跨步之記憶體位址。如先前範例中詳細說明,此位址為「x」資料元件,其遠離記憶體之先前資料元件,其中「x」為 包括指令之跨步值。
於1013,決定後續跨步資料元件位址是否存在故障。若存在故障,接著停止指令之執行。
若未存在故障,接著於1015決定後續寫入遮罩位元之值是否指示來源暫存器之後續資料元件將儲存於產生之跨步位址。注視先前範例,此決定注視寫入遮罩之下一位置,諸如圖6之寫入遮罩的第二最低有效值,看相應資料元件是否將儲存於產生之位址。
當寫入遮罩位元未指示來源資料元件將儲存於記憶體位置時,接著於1021僅留下該位址之資料元件。典型地,此係藉由寫入遮罩中「0」值指示,然而可使用相反習慣。
當寫入遮罩位元指示來源之資料元件將儲存於產生之跨步位址時,接著於1017,該位址之資料元件以來源資料元件覆寫。典型地,此係藉由寫入遮罩中「1」值指示,然而可使用相反習慣。若需任何資料轉換,諸如下轉換,若尚未進行,此時亦可執行。
於1019,清除寫入遮罩位元,以指示成功寫入。
於1023,決定評估之寫入遮罩位置是否為最後寫入遮罩,或是否目的地之所有資料元件位置已填滿。若然,接著作業結束。若否,接著評估另一資料元件用於儲存於跨步之位址等。
雖然此圖及以上說明認為各第一位置為最低有效位置,在一些實施例中,第一位置為最高有效位置。此外, 在一些實施例中,未進行故障決定。
聚集跨步預取
第三個該等指令為聚集跨步預取指令。處理器執行此指令有條件地從記憶體(系統或快取)預取跨步資料元件進入指令根據指令之寫入遮罩暗示之快取位準。預取之資料可藉由後續指令讀取。不同於以上討論之聚集跨步指令,並無目的地暫存器,且寫入遮罩未修改(此指令未修改處理器之任何架構狀態)。資料元件可預取作為整個記憶體塊之部分,諸如快取線。
如以上討論,將預取之資料元件經由SIB(標度、索引、及底數)之類型指明。在一些實施例中,指令包括通用暫存器中傳遞之基址、傳遞作為當前之標度、傳遞作為通用暫存器之跨步暫存器、及可選位移。當然可使用其他實施,諸如包括基址及/或跨步之當前值的指令等。
聚集跨步預取指令亦包括寫入遮罩。在一些實施例中,使用專用遮罩暫存器,諸如文中詳細說明之「k」寫入遮罩,若其相應寫入遮罩位元指示其應如此(例如,在一些實施例中若位元為「1」),將預取記憶體資料元件。在其他實施例中,資料元件之寫入遮罩位元為來自寫入遮罩暫存器(例如,XMM或YMM暫存器)之相應元件的符號位元。在該些實施例中,寫入遮罩元件被視為與資料元件相同尺寸。
此外,不同於以上討論之聚集跨步之實施例,聚集跨 步預取指令典型地未於例外暫停,且未遞送頁面故障。
此指令之示範格式為「VGATHERSTR_PRE[底數,標度* 跨步]+位移,{k1},暗示」,其中k1為寫入遮罩運算元(諸如之後詳細說明之16位元暫存器範例),及底數、標度、跨步、及位移提供記憶體來源位址及跨步值至將有條件地預取之記憶體的後續資料元件。暗示提供快取位準而有條件地預取。在一些實施例中,寫入遮罩亦為不同尺寸(8位元、32位元等)。此外,在一些實施例中,以下將詳細說明並非寫入遮罩之所有位元為指令利用。VGATHERSTR_PRE為指令之運算碼。典型地,指令中明白定義每一運算元。
此指令正常為寫入遮罩使得僅該些記憶體位置具寫入遮罩暫存器中相應位元集,以上範例中k1,被預取。
圖11中描繪聚集跨步預取指令之執行範例。在此範例中,記憶體被初始定址於RAX暫存器中所發現之位址(此係記憶體定址及位移等可用以產生位址之簡單看法)。當然,記憶體位址可儲存於其他暫存器中,或可發現為如以上詳細說明之指令中的當前。
在此範例中寫入遮罩為16位元寫入遮罩,具相應於4DB4之十六進制值的位元值。對具「1」值之寫入遮罩的每一位元位置而言,來自記憶體來源之資料元件被預取,其可包括預取快取或記憶體之整個線。寫入遮罩之第一位置(例如,k1[0])為「0」,其指示相應目的地資料元件位置(例如,目的地暫存器之第一資料元件)將不被預 取。在此狀況下,將不預取與RAX位址相關之資料元件。寫入遮罩之下一位元亦為「0」,指示來自記憶體之後續「跨步之」資料元件亦將不被預取。在此範例中,跨步值為「3」,因而此後續跨步資料元件為遠離第一資料元件之第三資料元件。
寫入遮罩中第一「1」值係在第三位元位置中(例如,k1[2])。此指示後續於記憶體之先前跨步資料元件的跨步資料元件將被預取。此後續跨步資料元件遠離先前跨步資料元件3,及遠離第一資料元件6。
剩餘寫入遮罩位元位置用以決定哪一記憶體來源之額外資料元件將被預取。
圖12描繪處理器中使用聚集跨步預取指令之實施例。於1201,取得具位址運算元(底數、位移、索引、及/或標度)、寫入遮罩、及暗示之聚集跨步預取指令。
於1203,解碼聚集跨步預取指令。依據指令之格式,可於此階段解譯各種資料,使得快取位準預取來自來源之記憶體位址。
於1205,擷取/讀取來源運算元值。在大部分實施例中,此時讀取與記憶體來源位置位址及後續跨步之位址(及其資料元件)相關之資料元件(例如,讀取整個快取線)。然而,如虛線顯示,可從來源一次擷取一項資料元件。
於1207,藉由執行資源而執行聚集跨步預取指令(或包含該等指令之作業,諸如微作業)。此執行致使處理器 有條件地從記憶體(系統或快取)預取跨步資料元件進入指令根據指令之寫入遮罩暗示之快取位準。
圖13描繪聚集跨步預取指令之處理方法實施例。在此實施例中,假設先前已執行若干(若非全部)的作業1201-1205,然而,並未顯示以免模糊以下呈現之細節。
於1301,從來源運算元之位址資料產生將有條件地預取之記憶體中第一資料元件之位址。再次,此可已於先前執行。
於1303,決定相應於記憶體中第一資料元件之寫入遮罩位元值是否指示其將被預取。回頭看先前範例,此決定注視寫入遮罩之最低有效位置,諸如圖11之寫入遮罩的最低有效值,看記憶體資料元件是否將被預取。
當寫入遮罩未指示記憶體資料元件將被預取時,接著於1305便未預取。典型地,此係藉由寫入遮罩中「0」值指示,然而,可使用相反習慣。
當寫入遮罩指示記憶體資料元件將被預取時,接著於1307便預取資料元件。典型地,此係藉由寫入遮罩中「1」值指示,然而,可使用相反習慣。如先前詳細說明,此可表示取得整個快取線或記憶體位置,包括其他資料元件。
於1309,產生將有條件地預取之後續跨步資料元件之位址。如先前範例中詳細說明,此資料元件為遠離記憶體之先前資料元件之「x」資料元件,其中「x」為包括指令之跨步值。
於1311,決定相應於記憶體中後續跨步資料元件之寫入遮罩位元值是否指示其將被預取。回頭看先前範例,此決定注視寫入遮罩之下一位置,諸如圖11之寫入遮罩的第二最低有效值,看記憶體資料元件是否將被預取。
當寫入遮罩未指示記憶體資料元件將被預取時,接著於1313便未預取。典型地,此係藉由寫入遮罩中「0」值指示,然而,可使用相反習慣。
當寫入遮罩指示記憶體資料元件將被預取時,接著於1315便預取於目的地之該位置之資料元件。典型地,此係藉由寫入遮罩中「1」值指示,然而,可使用相反習慣。
於1317,決定評估之寫入遮罩位置是否為最後寫入遮罩。若然,接著作業結束。若否,接著評估另一跨步之資料元件等。
雖然此圖及以上說明認為各第一位置為最低有效位置,在一些實施例中,第一位置為最高有效位置。
分散跨步預取
第四個該等指令為分散跨步預取指令。處理器執行此指令有條件地從記憶體(系統或快取)預取跨步資料元件進入指令根據指令之寫入遮罩暗示之快取位準。此指令與聚集跨步預取之間之差異在於預取之資料將被後續寫入且未讀取。
以上體現之詳細說明之指令實施例可以以下詳細說明之「通用向量友好指令格式」體現。在其他實施例中,未 利用該等格式而是使用另一指令格式,然而,寫入遮罩暫存器、各種資料轉換(重組、廣播等)、定址等以下說明通常可應用於以上指令之實施例的說明。此外,以下詳細說明示範系統、架構、及管線。以上指令之實施例可於該等系統、架構、及管線上執行,但不侷限於此。
向量友好指令格式為適於向量指令之指令格式(例如,某些向量作業特定欄位)。雖然說明實施例其中經由向量友好指令格式支援向量及標量作業二者,另一實施例僅使用向量友好指令格式之向量作業。
示範通用向量友好指令格式-圖14A-B。
圖14A-B為方塊圖,描繪根據本發明之實施例之通用向量友好指令格式及其指令模板。圖14A為方塊圖,描繪根據本發明之實施例之通用向量友好指令格式及其A類指令模板;同時圖14B為方塊圖,描繪根據本發明之實施例之通用向量友好指令格式及其B類指令模板。具體地,通用向量友好指令格式1400其中定義A類及B類指令模板,二者包括非記憶體存取指令模板1405及記憶體存取指令模板1420。向量友好指令格式之上下文中通用用詞係指指令格式而不侷限於任何特定指令集。雖然將說明實施例其中向量友好指令格式之指令於來自暫存器(非記憶體存取指令模板1405)或暫存器/記憶體(記憶體存取指令模板1420)之向量上操作,另一方面,本發明之實施例可僅支援其中之一。此外,雖然將說明本發明之實施例其中存在向量指令格式之載入及儲存指令,另一實施例取代或額外 具有不同指令格式之指令,其移動向量進、出暫存器(例如,從記憶體進入暫存器、從暫存器進入記憶體、暫存器之間)。此外,雖然將說明本發明之實施例其支援兩類指令模板,另一實施例可僅支援其中之一或兩種以上。
雖然將說明本發明之實施例,其中向量友好指令格式支援下列:具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位元組)資料元件寬度)之不同向量運算元尺寸(例如,1456位元組向量運算元)。
圖14A中A類指令模板包括:1)在非記憶體存取指令模板1405內,顯示非記憶體存取、完全循環控制類型作業指令模板1410、及非記憶體存取、資料轉換類型作業指令模板1415;及2)在記憶體存取指令模板1420內,顯示記 憶體存取、暫時指令模板1425、及記憶體存取、非暫時指令模板1430。圖14B中B類指令模板包括:1)在非記憶體存取指令模板1405內,顯示非記憶體存取、寫入遮罩控制、部份循環控制類型作業指令模板1412、及非記憶體存取、寫入遮罩控制、VSIZE類型作業指令模板1417;及2)在記憶體存取指令模板1420內,顯示記憶體存取、寫入遮罩控制指令模板1427。
格式
通用向量友好指令格式1400包括下列欄位,以下以圖14A-B中描繪之順序表列。
格式欄位1440-在本欄位中特定值(指令格式識別符值)獨特地識別向量友好指令格式,因而發生指令流中向量友好指令格式之指令。因而,格式欄位1440之內容區別第一指令格式之指令的發生與其他指令格式之指令的發生,藉此允許將向量友好指令格式導入具有其他指令格式之指令集。同樣地,此欄位在指令集不需僅具有通用向量友好指令格式方面是可選的。
底數作業欄位1442-其內容區別不同底數作業。如文中之後所說明,底數作業欄位1442可包括及/或為部分運算碼欄位。
暫存器索引欄位1444-其內容直接或經由位址產生而指明來源及目的地運算元之位置,係在暫存器或記憶體中。該些包括充分位元數而從PxQ(例如32x1612)暫存 器檔案選擇N暫存器。雖然在一實施例中N可為最多三個來源及一個目的地暫存器,另一實施例可支援更多或更少來源及目的地暫存器(例如,可支援最多二來源,其中該些來源之一亦充當目的地;可支援最多三來源,其中該些來源之一亦充當目的地;可支援最多二來源及一目的地)。雖然在一實施例中,P=32,另一實施例可支援更多或更少暫存器(例如16)。雖然在一實施例中,Q=1612位元,另一實施例可支援更多或更少位元(例如128、1024)。
修飾符欄位1446-其內容區別通用向量指令格式之指令的發生,其指明記憶體存取,與該些未發生者;即,非記憶體存取指令模板1405與記憶體存取指令模板1420之間。記憶體存取作業讀取及/或寫入至記憶體階層(有時指明使用暫存器中之值的來源及/或目的地位址),同時非記憶體存取作業並非如此(例如,來源及目的地為暫存器)。雖然在一實施例中,此欄位亦於三種不同方式之間選擇,以執行記憶體位址計算,另一實施例可支援更多、更少、或不同方式,以執行記憶體位址計算。
增大作業欄位1450-其內容區別除了底數作業以外將執行各種不同作業之哪一者。此欄位為特定上下文。在本發明之一實施例中,此欄位劃分為類型欄位1468、主要欄位1452、及次要欄位1454。增大作業欄位允許將以單一指令執行,而非2、3或4指令,之作業共群。以下為使用增大欄位1450之一些指令範例(其術語於文中之後更詳細 說明)以減少所需指令數量。
其中[rax]為將用於位址產生之底數指標,及其中{ }指示由資料操縱欄位指明之轉變作業(之後更詳細說明)。
標度欄位1460-其內容允許用於記憶體位址產生之索引欄位之內容的定標(例如,用於使用2標度 *索引+底數之位址產生)。
位移欄位1462A-其內容用作部分記憶體位址產生(例如,用於使用2標度 *索引+底數+位移之位址產生)。
位移因子欄位1462B(請注意,位移欄位1462A直接 並列於位移因子欄位1462B之上,指示使用其一或另一者)-其內容用作部分位址產生;其指明將由記憶體存取之尺寸(N)標度之位移因子-其中N為記憶體存取中位元組數(例如,用於使用2標度 *索引+底數+標度之位移之位址產生)。忽略冗餘低階位元,因此位移因子欄位之內容乘以記憶體運算元總尺寸(N),以便產生用於計算有效位址時之最後位移。如文中之後所說明,N值係由處理器硬體於運行時間依據全運算碼欄位1474(文中之後所說明)及資料操縱欄位1454C來決定。位移欄位1462A及位移因子欄位1462B在其未用於非記憶體存取指令模板1405及/或不同實施例可僅實施二者之一或均未實施方面為可選的。
資料元件寬度欄位1464-其內容區別將使用哪一資料元件寬度數量(在一些實施例中用於所有指令;在其他實施例中僅用於一些指令)。此欄位在若僅支援一資料元件寬度及/或使用運算碼之一些方面支援資料元件寬度便不需要方面為可選的。
寫入遮罩欄位1470-其內容在每一資料元件位置的基礎上控制目的地向量運算元中資料元件位置是否反映底數作業及增大作業之結果。A類指令模板支援合併寫入遮罩,同時B類指令模板支援合併及歸零寫入遮罩二者。當合併向量遮罩允許保護目的地中任何元件集於執行任何作業(由底數作業及增大作業指明)期間免於更新;在一其他實施例中,可保存目的地之每一元件之舊值,其中相應 遮罩位元具有0。相反地,當歸零向量遮罩允許於執行任何作業(由底數作業及增大作業指明)期間目的地中任何元件集成為零時;在一實施例中,當相應遮罩位元具有0值時,目的地之元件設定為0值。此功能性之子集為控制所執行作業之向量長度的能力(即,修改從第一至最後元件之跨距);然而,被修改之元件不一定為連續的。因而,寫入遮罩欄位1470允許部分向量作業,包括載入、儲存、算術、邏輯等。此外,此遮罩可用於故障抑制。(即,藉由遮罩目的地之資料元件位置以避免接收可/將致使故障之任何作業之結果-例如,假設記憶體中向量越過頁面邊界,及第一頁面而非第二頁面將致使頁面故障,若第一頁面上向量之所有資料元件藉由寫入遮罩而遮罩,便可忽略頁面故障。)此外,寫入遮罩允許「向量化迴路」,其包含某類型狀況聲明。雖然說明本發明之實施例,其中寫入遮罩欄位之內容1470選擇多個寫入遮罩暫存器之一,其包含將使用之寫入遮罩(因而寫入遮罩欄位之內容1470直接識別將執行之遮罩),另一實施例取代或額外允許遮罩寫入欄位之內容1470以直接指明將執行之遮罩。此外,歸零允許性能改進,當:1)暫存器重新命名用於指令上,其目的地運算元亦非來源(亦稱為非三元指令),因為在暫存器重新命名管線階段期間,目的地不再為內隱源(無來自目前目的地暫存器之資料元件需複製至重新命名之目的地暫存器,或以某種方式伴隨作業實施,因為並非作業結果之任何資料元件(任何遮罩之資料元 件)將調零);及2)在寫回階段,因為將寫入零。
當前欄位1472-其內容允許當前之規格。在未以未支援當前之通用向量友好格式之實施呈現,及未以未使用當前之指令呈現方面,此欄位是可選的。
指令模板類型選擇
類型欄位1468-其內容於不同類型指令之間區別。參照圖2A-B,此欄位之內容於A類與B類指令之間選擇。在圖14A-B中,圓角方形用以指示特定值於欄位中呈現(例如,圖14A-B中分別為類型欄位1468之A類1468A及B類1468B)。
A類非記憶體存取指令模板
若為A類非記憶體存取指令模板1405,主要欄位1452便解譯為RS欄位1452A,其內容區別將執行哪一不同增大作業類型(例如,修整1452A.1及資料轉換1452A.2針對非記憶體存取、修整類型作業指令模板1410及非記憶體存取、資料轉換類型作業指令模板1415分別指明),同時次要欄位1454區別將執行哪一特定類型作業。在圖14,圓角方塊用以指示呈現特定值(例如,修飾符欄位1446中非記憶體存取1446A;主要欄位1452/rs欄位1452A之修整1452A.1及資料轉換1452A.2)。在非記憶體存取指令模板1405中,未呈現標度欄位1460、位移欄位1462A、及位移因子欄位1462B。
非記憶體存取指令模板-完全修整控制類型作業
在非記憶體存取完全修整控制類型作業指令模板1410中,次要欄位1454解譯為修整控制欄位1454A,其內容提供靜態修整。雖然在所說明之本發明之實施例中,修整控制欄位1454A包括抑制所有浮點例外(SAE)欄位1456及修整作業控制欄位1458,另一實施例可支援編碼該些概念二者為相同欄位或僅具有該些概念/欄位之一或另一者(例如,可僅具有修整作業控制欄位1458)。
SAE欄位1456-其內容區別是否禁用例外事件報告;當啟用SAE欄位1456之內容指示抑制時,特定指令未報導任何種類浮點例外旗標,且未提高任何浮點例外處置器。
修整作業控制欄位1458-其內容區別將執行修整作業群組中哪一者(例如,捨進、捨去、朝零修整及修整至最接近)。因而,修整作業控制欄位1458允許以每一指令為主之修整模式改變,因而當需要時特別有用。在本發明之一實施例中,其中處理器包括控制暫存器用以指明修整模式,修整作業控制欄位1450之內容置換暫存器值(可挑選修整模式而不需於該等控制暫存器上執行儲存-修改-恢復是有利的)。
非記憶體存取指令模板-資料轉換類型作業
在非記憶體存取資料轉換類型作業指令模板1415中, 次要欄位1454解譯為資料轉換欄位1454B,其內容區別將執行多個資料轉換之哪一者(例如,無資料轉換、重組、廣播)。
A類記憶體存取指令模板
若為A類記憶體存取指令模板1420,主要欄位1452解譯為逐出暗示欄位1452B,其內容區別將使用哪一逐出暗示(在圖14A中,針對記憶體存取、暫時指令模板1425及記憶體存取、非暫時指令模板1430分別指明暫時1452B.1及非暫時1452B.2),同時次要欄位1454解譯為資料操縱欄位1454C,其內容區別將執行多個資料操縱作業(亦已知為基元)之哪一者(例如,無操縱;廣播;來源之上轉變;及目的地之下轉變)。記憶體存取指令模板1420包括標度欄位1460,及可選地包括位移欄位1462A或位移因子欄位1462B。
向量記憶體指令以轉變支援執行從記憶體載入向量,並將向量儲存至記憶體。如同常規向量指令,向量記憶體指令於資料元件中以聰明方式轉移資料自/至記憶體,且元件藉由選擇作為寫入遮罩之向量遮罩之內容支配而實際轉移。在圖14A中,圓角方形用以指示特定值呈現於欄位(例如,修飾符欄位1446之記憶體存取1446B;主要欄位1452/逐出暗示欄位1452B之暫時1452B.1及非暫時1452B.2)。
記憶體存取指令模板-暫時
暫時資料為可能很快被重用而從快取獲益之資料。然而,此為暗示,且不同處理器可以不同方式實施,包括完全忽略暗示。
記憶體存取指令模板-非暫時
非暫時資料為不同於很快被重用而從第一級快取之快取獲益之資料,並應賦予逐出優先性。然而,此為暗示,且不同處理器可以不同方式實施,包括完全忽略暗示。
B類指令模板
若為B類指令模板,主要欄位1452被解譯為寫入遮罩控制(Z)欄位1452C,其內容區別由寫入遮罩欄位1470控制之寫入遮罩應合併或歸零。
B類非記憶體存取指令模板
若為B類非記憶體存取指令模板1405,部分次要欄位1454被解譯為RL欄位1457A,其內容區別將執行哪一不同增大作業類型(例如,修整1457A.1及向量長度(VSIZE)1457A.2分別指定用於非記憶體存取、寫入遮罩控制、部份修整控制類型作業指令模板1412,及非記憶體存取、寫入遮罩控制、VSIZE類型作業指令模板1417),同時其餘次要欄位1454區別將執行哪一指定類型作業。在圖14中,圓角方塊用以指示呈現特定值(例如, 修飾符欄位1446中非記憶體存取1446A;RL欄位1457A之修整1457A.1及VSIZE 1457A.2)。在非記憶體存取指令模板1405中,不呈現標度欄位1460、位移欄位1462A、及位移因子欄位1462B。
非記憶體存取指令模板-寫入遮罩控制、部分修整控制類型作業
在非記憶體存取、寫入遮罩控制、部份修整控制類型作業指令模板1410中,其餘次要欄位1454被解譯為修整作業欄位1459A,並禁用例外事件報告(特定指令未報告任何種類浮點例外旗標,且未提高任何浮點例外處置器)。
修整作業控制欄位1459A-正如修整作業控制欄位1458,其內容區別執行哪一修整作業群組(例如,捨進、捨去、朝零修整及修整至最接近)。因而,修整作業控制欄位1459A允許改變基於每一指令之修整模式,因而當需要時尤其有用。在本發明之一實施例中,其中處理器包括控制暫存器用以指明修整模式,修整作業控制欄位1459之內容置換暫存器值(可挑選修整模式而不需在該等控制暫存器上執行儲存-修改-恢復是有利的)。
非記憶體存取指令模板-寫入遮罩控制、VSIZE類型作業
在非記憶體存取、寫入遮罩控制、VSIZE類型作業指令模板1417中,其餘次要欄位1454被解譯為向量長度欄位1459B,其內容區別將執行多個資料向量長度之哪一個 (例如,128、1456、或1612位元組)。
B類記憶體存取指令模板
若為A類記憶體存取指令模板1420,部分次要欄位1454被解譯為廣播欄位1457B,其內容區別是否將執行廣播類型資料操縱作業,同時其餘次要欄位1454被解譯為向量長度欄位1459B。記憶體存取指令模板1420包括標度欄位1460,及可選的位移欄位1462A或位移標度欄位1462B。
額外評論相關欄位
關於通用向量友好指令格式1400,顯示全運算碼欄位1474,包括格式欄位1440、底數作業欄位1442、及資料元件寬度欄位1464。雖然顯示一實施例,全運算碼欄位1474包括所有該些欄位,但在不支援所有欄位之實施例中,全運算碼欄位1474包括少於所有該些欄位。全運算碼欄位1474提供作業碼。
增大作業欄位1450、資料元件寬度欄位1464、及寫入遮罩欄位1470允許以通用向量友好指令格式基於每一指令而指定該些特徵。
寫入遮罩欄位及資料元件寬度欄位之組合製造類型指令,允許依據不同資料元件寬度而施加遮罩。
指令格式需要相對小位元數,因為其依據其他欄位內容針對不同目的而重用不同欄位。例如,一個觀點為修飾 符欄位之內容於圖14A-B之非記憶體存取指令模板1405與圖14A-B之記憶體存取指令模板1420之間挑選;同時類型欄位1468之內容於圖14A之指令模板1410/1415與圖14B之指令模板1412/1417之間之該些非記憶體存取指令模板1405內挑選;及同時類型欄位1468之內容於圖14A之指令模板1425/1430與圖14B之指令模板1427之間之該些記憶體存取指令模板1420內挑選。從另一個觀點,類型欄位1468之內容於圖14A及B分別之A類及B類指令模板之間挑選;同時修飾符欄位之內容於圖14A之指令模板1405與1420之間之該些A類指令模板內挑選;及同時修飾符欄位之內容於圖14B之指令模板1405與1420之間之該些B類指令模板內挑選。若為指示A類指令模板之類型欄位之內容,修飾符欄位1446之內容於rs欄位1452A與EH欄位1452B之間挑選主要欄位1452之解譯。以相關方式,修飾符欄位1446及類型欄位1468之內容挑選主要欄位係解譯為rs欄位1452A、EH欄位1452B、或寫入遮罩控制(Z)欄位1452C。若為指示A類非記憶體存取作業之類型及修飾符欄位,增大欄位之次要欄位的解譯依據rs欄位之內容而改變;同時若為指示B類非記憶體存取作業之類型及修飾符欄位,次要欄位之解譯取決於RL欄位之內容。若為指示A類記憶體存取作業之類型及修飾符欄位,增大欄位之次要欄位的解譯依據底數作業欄位之內容而改變;同時若為指示B類記憶體存取作業之類型及修飾符欄位,增大欄位之次要欄位之廣播欄位1457B的解譯依據底數作業欄位之內 容而改變。因而,底數作業欄位、修飾符欄位及增大作業欄位之組合允許指定更廣泛之增大作業。
於A類及B類內發現之各種指令模板於不同情況下有利。當為性能原因而需要歸零-寫入遮罩或更小向量長度時,A類有助益。例如,當使用重新命名時,由於不再需要與目的地人為合併,歸零允許避免偽相依;有關另一範例,當以向量遮罩仿真更短向量尺寸時,向量長度控制容易儲存-載入轉發問題。當需要:1)允許浮點例外(即,當SAE欄位指示內容無時)同時使用修整模式控制;2)可使用上轉換、重組、交換、及/或下轉換;3)於圖形資料類型操作;B類有助益。例如,當以不同格式來源作業時,上轉換、重組、交換、下轉換、及圖形資料類型減少所需指令數量;有關另一範例,允許例外之能力提供全IEEE相容定向修整模式。
示範特定向量友好指令格式
圖15為方塊圖,描繪根據本發明之實施例之示範特定向量友好指令格式。圖15顯示特定向量友好指令格式1500,在指明位置、尺寸、解譯、及欄位順序以及若干該些欄位之值方面,其為特定的。特定向量友好指令格式1500可用以延伸x86指令集,因而若干欄位與現有x86指令集及其延伸(例如,AVX)中使用者類似或相同。此格式保持與現有x86指令集及其延伸之前置編碼欄位、實際運算碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位、 及當前欄位相符。描繪欄位從圖14映射至圖15之欄位。
應理解的是儘管本發明之實施例為描繪目的而參照通用向量友好指令格式1400之上下文中特定向量友好指令格式1500進行說明,除非特別聲明,本發明不侷限於特定向量友好指令格式1500。例如,通用向量友好指令格式1400考量各種欄位之可能尺寸,同時特定向量友好指令格式1500顯示為具有特定尺寸欄位。藉由特定範例,雖然資料元件寬度欄位1464於特定向量友好指令格式1500中描繪為一位元欄位,本發明並非如此限制(即,通用向量友好指令格式1400考量資料元件寬度欄位1464之其他尺寸)。
格式-圖15
通用向量友好指令格式1400包括以下依圖15中所描繪之順序表列之下列欄位。
EVEX前置(位元組0-3)
EVEX前置1502-以四位元組形式編碼。
格式欄位1440(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)為格式欄位1440,其包含0x62(用於區別本發明之一實施例中向量友好指令格式之獨特值)。
第二-第四位元組(EVEX位元組1-3)包括配置特定能力之位元數欄位。
REX欄位1505(EVEX位元組1,位元[7-5])-包含 EVEX.R位元欄位(EVEX位元組1,位元[7]-R)、EVEX.X位元欄位(EVEX位元組1,位元[6]-X)、及EVEX.B位元欄位(EVEX位元組1,位元[5]-B)。EVEX.R、EVEX.X、及EVEX.B位元欄位提供與相應VEX位元欄位相同功能性,並使用1s補碼形式編碼,即ZMM0編碼為1111B,ZMM15編碼為0000B。指令之其他欄位編碼暫存器索引之下三位元為本技術中已知(rrr、xxx、及bbb),使得藉由附加EVEX.R、EVEX.X、及EVEX.B可形成Rrrr、Xxxx、及Bbbb。
REX'欄位1510-此為REX'欄位1510之第一部分,並為EVEX.R'位元欄位(EVEX位元組1,位元[4]-R'),用以編碼延伸之32暫存器集的上16或下16。在本發明之一實施例中,此位元連同以下指示之其他位元係以位元反向格式儲存,以與BOUND指令區別(眾知的x8632位元模式),其實際運算碼位元組為62,但在MOD R/M欄位(以下說明)中不接受MOD欄位中11之值;本發明之另一實施例不以反向格式儲存此位元及以下指示之其他位元。1之值用以編碼下16暫存器。換言之,藉由組合EVEX.R'、EVEX.R、及來自其他欄位之其他RRR而形成R'Rrrr。
運算碼映射欄位1515(EVEX位元組1,位元[3:0]-mmmm)-其內容編碼暗示領先運算碼位元組(0F、0F 38、或0F 3)。
資料元件寬度欄位1464(EVEX位元組2,位元[7]-W)-係藉由記號EVEX.W代表。EVEX.W用以定義資料類 型(32位元資料元件或64位元資料元件)之間隔尺寸(尺寸)。
EVEX.vvvv 1520(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvvv之角色可包括下列:1)EVEX.vvvv編碼第一來源暫存器運算元,反向(1s補數)形式指定,並有效用於具2或更多來源運算元之指令;2)EVEX.vvvv編碼目的地暫存器運算元,1s補碼形式指定用於某向量偏移;或3)EVEX.vvvv未編碼任何運算元,欄位保留且將包含1111b。因而,EVEX.vvvv欄位1520編碼以反向(1s補數)形式儲存之第一來源暫存器區分符之4低階位元。依據指令,額外不同EVEX位元欄位用以延伸區分符尺寸至32暫存器。
EVEX.U類型欄位1468(EVEX位元組2,位元[2]-U)-若EVEX.U=0,便指示A類或EVEX.U0;若EVEX.U=1,便指示B類或EVEX.U1。
前置編碼欄位1525(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前置編碼,因而不需擴充。
主要欄位1452(EVEX位元組3,位元[7]-EH;亦已知為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制、及EVEX.N;亦以α描繪)-如先前所說明,此欄位為上下文特定。文中之後提供額外說明。
次要欄位1454(EVEX位元組3,位元[6:4]-SSS,亦已知為EVEX.s2-0 、EVEX.r2-0 、EVEX.rr1、EVEX.LL0、EVEX.LLB;亦以βββ描繪)-如先前所說明,此欄位為上下文特定。文中之後提供額外說明。
REX'欄位1510-此為REX'欄位之餘數,並為EVEX.V'位元欄位(EVEX位元組3,位元[3]-V'),可用以編碼延伸之32暫存器集之上16或下16。此位元係以位元反向格式儲存。1之值用以編碼下16暫存器。換言之,V'VVVV係藉由組合EVEX.V'、EVEX.vvvv而形成。
寫入遮罩欄位1470(EVEX位元組3,位元[2:0]-kkk)-如先前所說明,其內容指明寫入遮罩暫存器中暫存器之索引。在本發明之一實施例中,特定值EVEX.kkk=000具有特殊行為,暗示無寫入遮罩用於特別指令(此可以各種方式實施,包括使用硬接線至所有元件之寫入遮罩或繞過遮罩硬體之硬體)。
實際運算碼欄位1530(位元組4)
此亦已知為運算碼位元組。部分運算碼係於此欄位中指定。
MOD R/M欄位1540(位元組5)
修飾符欄位1446(MODR/M.MOD,位元[7-6]-MOD欄位1542)-如先前所說明,MOD欄位1542之內容區別記憶體存取與非記憶體存取作業。此欄位文中之後將進一步說明。
MODR/M.reg欄位1544,位元[5-3]-ModR/M.reg欄位之角色可總結為二情況:ModR/M.reg編碼目的地暫存器運算元或來源暫存器運算元,或ModR/M.reg被視為運算碼延伸而未用以編碼任何指令運算元。
MODR/M.r/m欄位1546,位元[2-0]-ModR/M.r/m欄位之角色可包括下列:ModR/M.r/m參考記憶體位址而編碼指令運算元,或ModR/M.r/m編碼目的地暫存器運算元或來源暫存器運算元。
標度,索引,底數(SIB)位元組(位元組6)
標度欄位1460(SIB.SS,位元[7-6]-如先前所說明,標度欄位1460之內容用於記憶體位址產生。此欄位將進一步說明於下文。
SIB.xxx 1554(位元[5-3])及SIB.bbb 1556(位元[2- 0])-該些欄位之內容先前已參照關於暫存器索引Xxxx及Bbbb。
位移位元組(位元組7或位元組7-10)
位移欄位1462A(位元組7-10)-當MOD欄位1542包含10時,位元組7-10為位移欄位1462A,且其如同舊有32位元位移(disp32)作業,並以位元組間隔尺寸作業。
位移因子欄位1462B(位元組7)-當MOD欄位1542包含01,位元組7為位移因子欄位1462B。此欄位之位置與舊有x86指令集8位元位移(disp8)相同,其以位元組間隔尺寸作業。由於disp8為延伸符號,其僅可於128與127位元組偏移之間定址;在64位元組快取線方面,disp8使用僅設定為四個實際有用值-128、-64、0、及64之8位元;由於通常需要較大範圍,使用disp32;然而,disp32需要4位元組。與disp8及disp32相反,位移因子欄位1462B為disp8之重新解譯;當使用位移因子欄位1462B時,實際位移係由位移因子欄位之內容乘以記憶體運算元存取(N)之尺寸決定。此類型位移稱為disp8*N。此減少平均指令長度(單一位元組用於位移但具更大範圍)。該等壓縮之位移係依據有效位移為多個記憶體存取之間隔尺寸的假設,因此,位址偏移之冗餘低階位元不需編碼。換言之,位移因子欄位1462B取代舊有x86指令集8位元位移。因而,位移因子欄位1462B係以與x86指令集8位元位移相同方式編碼(所有ModRM/SIB編碼規則無改變),唯一例外 為disp8係過載至disp8*N。換言之,編碼規則或編碼長度無改變,但係由硬體解譯位移值(此需由記憶體運算元之尺寸標度位移以獲得按位元組位址偏移)。
當前
當前欄位1472如先前所說明操作。
示範暫存器架構-圖16
圖16為本發明之一實施例之暫存器架構1600之方塊圖。以下表列暫存器架構之暫存器檔案及暫存器:
向量暫存器檔案1610-在所描繪之實施例中,存在32向量暫存器,即1612位元寬;該些暫存器引用為zmm0至zmm31。下16zmm暫存器之低位1456位元覆蓋於暫存器ymm0-16上。下16zmm暫存器之低位128位元(ymm暫存器之低位128位元)覆蓋於暫存器xmm0-15上。如下表中所描繪,特定向量友好指令格式1500於該些覆蓋暫存器檔案上操作。
換言之,向量長度欄位1459B於最大長度與一或多個其他較短長度之間選擇,其中每一該等較短長度為之前長度的一半長度;且無向量長度欄位1459B之指令模板於最大向量長度上操作。此外,在一實施例中,特定向量友好指令格式1500之B類指令模板於包裝或標量單一/雙重精確浮點資料及包裝或標量整數資料上操作。標量作業係於zmm/ymm/xmm暫存器中最低位資料元件位置上執行之作業;較高位資料元件位置依據實施例為指令之前相同位置或歸零。
寫入遮罩暫存器1615-在所描繪之實施例中,存在8個寫入遮罩暫存器(k0至k7),每一尺寸64位元。如先前所說明,在本發明之一實施例中,向量遮罩暫存器k0無法用作寫入遮罩;當編碼正常指示k0用於寫入遮罩時,便選擇0xFFFF之硬接線寫入遮罩,有效地為該指令停用寫入遮罩。
多媒體延伸控制狀態暫存器(MXCSR)1620-在所描繪之實施例中,此32位元暫存器提供用於浮點作業之狀態及控制位元。
通用暫存器1625-在所描繪之實施例中,存在十六個64位元通用暫存器,其連同現有x86定址模式用於位址記憶體運算元。該些暫存器引用下列名稱:RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15。
延伸之旗標(EFLAGS)暫存器1630-在所描繪之實 施例中,此32位元暫存器用以記錄許多指令之結果。
浮點控制字(FCW)暫存器1635及浮點狀態字(FSW)暫存器1640-在所描繪之實施例中,該些暫存器藉由x87指令集延伸使用,以於FCW之狀況下設定修整模式、例外遮罩、及旗標,及於FSW之狀況下保持例外追蹤。
其上混疊MMX包裝整數平坦暫存器檔案1650之標量浮點堆疊暫存器檔案(x87堆疊)1645-在所描繪之實施例中,x87堆疊為8元件堆疊,用以在使用x87指令集延伸之32/64/80位元浮點資料上執行標量浮點作業;同時MMX暫存器用以在64位元包裝之整數資料上執行作業,以及保持用於MMX與XMM暫存器之間執行之一些作業之運算元。
分段暫存器1655-在所描繪之實施例中,存在六個16位元暫存器,用以儲存用於分段之位址產生之資料。
RIP暫存器1665-在所描繪之實施例中,此64位元暫存器儲存指令指標。
本發明之另一實施例可使用較寬或較窄暫存器。此外,本發明之另一實施例可使用更多、更少、或不同暫存器檔案及暫存器。
示範按順序處理器架構-圖17A-17B
圖17A-B描繪示範按順序處理器架構之方塊圖。該些示範實施例係圍繞以寬向量處理器(VPU)擴充之按順序 CPU核心的多個例示而予設計。依據應用,核心經由高帶寬互連網路而與一些固定功能邏輯、記憶體I/O介面、及其他必需I/O邏輯通訊。例如,本實施例實施之獨立GPU將典型地包括PCIe匯流排。
圖17A為根據本發明之實施例之單一CPU核心之方塊圖,連同其連接至片上互連網路1702以及2級(L2)快取1704之本地子集。指令解碼器1700以包括特定向量指令格式1500之延伸支援x86指令集。雖然在本發明之一實施例(簡化設計)中,標量單元1708及向量單元1710使用不同暫存器集(分別為標量暫存器1712及向量暫存器1714),且於其間轉移之資料被寫入至記憶體,接著從1級(L1)快取1706回讀,本發明之另一實施例可使用不同方法(例如,使用單一暫存器集或包括通訊路徑,其允許資料於二暫存器檔案之間轉移而未寫入及回讀)。
L1快取1706允許針對快取記憶體低延遲存取進入標量及向量單元。連同向量友好指令格式之運算負載指令,此表示L1快取1706可如同延伸之暫存器檔案般處理。此顯著改進許多演算法之性能,特別是以逐出暗示欄位1452B。
L2快取1704之本地子集為部分之整體L2快取,其針對每一CPU核心劃分不同本地子集。每一CPU具有針對其本身L2快取1704之本地子集的直接存取路徑。由CPU核心讀取之資料儲存於其L2快取子集1704中,並可快速存取,與存取其本身本地L2快取子集之其他CPU並列。由CPU核心寫入之資料儲存於其本身L2快取子集1704中,並視需要從 其他子集刷新。環形網路確保共用資料之相干性。
圖17B為根據本發明之實施例之圖17A中部分CPU核心之分解圖。圖17B包括部分L1快取1706之L1資料快取1706A,以及有關向量單元1710及向量暫存器1714更多細節。具體地,向量單元1710為16-寬向量處理單元(VPU)(詳16-寬ALU 1728),其執行整數、單一精確浮動、及雙重精確浮動指令。VPU支援以重組單元1720重組暫存器輸入,以數值轉換單元1722A-B數值轉變,及以複製單元1724複製記憶體輸入。寫入遮罩暫存器1726允許斷定結果向量寫入。
暫存器資料可以各種方式重組,例如支援矩陣乘法。來自記憶體之資料可跨越VPU道複製。此係並列資料處理之圖形及非圖形中共同作業,其顯著增加快取效率。
環形網路為雙向以允許代理者,諸如CPU核心、L2快取、及其他邏輯方塊,於晶片內相互通訊。每一環形資料路徑為每向1612位元。
示範失序架構-圖18
圖18為方塊圖,描繪根據本發明之實施例之示範失序架構。具體地,圖18描繪知名示範失序架構,其已修改而結合向量友好指令格式及其執行。在圖18中,箭頭標示二或更多單元之間之耦合,且箭頭之方向指示該些單元之間資料流之方向。圖18包括耦合至執行引擎單元1810之前端單元1805,及記憶體單元1815;執行引擎單元1810進一步 耦合至記憶體單元1815。
前端單元1805包括耦合至2級(L2)分支預測單元1822之1級(L1)分支預測單元1820。L1及L2分支預測單元1820及1822耦合至L1指令快取單元1824。L1指令快取單元1824耦合至指令翻譯後備緩衝器(TLB)1826,齊進一步耦合至指令取得及預解碼單元1828。指令取得及預解碼單元1828耦合至指令佇列單元1830,其進一步耦合解碼單元1832。解碼單元1832包含複雜解碼器單元1834及三個簡單解碼器單元1836、1838、及1840。解碼單元1832包括微碼ROM單元1842。解碼單元1832可如以上先前所說明於解碼階段段中操作。L1指令快取單元1824進一步耦合至記憶體單元1815中L2快取單元1848。指令TLB單元1826進一步耦合至記憶體單元1815中第二級TLB單元1846。解碼單元1832、微碼ROM單元1842、及迴流檢測器單元1844各耦合至執行引擎單元1810中重命名/分配器單元1856。
執行引擎單元1810包括重命名/分配器單元1856,其耦合至退休單元1874及統一調度單元1858。退休單元1874進一步耦合至執行單元1860,並包括重新排序緩衝器單元1878。統一調度單元1858進一步耦合至實體暫存器檔案單元1876,其耦合至執行單元1860。實體暫存器檔案單元1876包含向量暫存器單元1877A、寫入遮罩暫存器單元1877B、及標量暫存器單元1877C;該些暫存器單元可提供向量暫存器1610、向量遮罩暫存器1615、及通用暫存器1625;及實體暫存器檔案單元1876可包括未顯示之額外暫 存器檔案(例如,混疊於MMX包裝之整數平坦暫存器檔案1650上之標量浮點堆疊暫存器檔案1645)。執行單元1860包括三個混合標量及向量單元1862、1864、及1872;載入單元1866;儲存位址單元1868;儲存資料單元1870。載入單元1866、儲存位址單元1868、及儲存資料單元1870各進一步耦合至記憶體單元1815中資料TLB單元1852。
記憶體單元1815包括第二級TLB單元1846,其耦合至資料TLB單元1852。資料TLB單元1852耦合至L1資料快取單元1854。L1資料快取單元1854進一步耦合至L2快取單元1848。在一些實施例中,L2快取單元1848進一步耦合至記憶體單元1815內部及/或外部之L3及更高快取單元1850。
藉由範例,示範失序架構可實施程序管線如下:1)指令取得及預解碼單元1828執行取得及長度解碼階段;2)解碼單元1832執行解碼階段;3)重命名/分配器單元1856執行分配階段及重新命名階段;4)統一排程單元1858執行排程階段;5)實體暫存器檔案單元1876、重新排序緩衝器單元1878、及記憶體單元1815執行暫存器讀取/記憶體讀取階段;執行單元1860執行執行/資料轉換階段;6)記憶體單元1815及重新排序緩衝器單元1878執行寫回/記憶體寫入階段1960;7)退休單元1874執行ROB讀取階段;8)各種單元可包於例外處理階段;及9)退休單元1874及實體暫存器檔案單元1876執行委託階段。
示範單核心及多核心處理器
圖23為根據本發明之實施例之具整合記憶體控制器及圖形之單一核心處理器及多核心處理器2300之方塊圖。圖23中實線方塊描繪具單核心2302A、系統代理者2310、一組一或多個匯流排控制器單元2316之處理器2300,同時可選的附加虛線方塊描繪具多個核心2302A-N、系統代理者單元2310中一組一或多個整合記憶體控制器單元2314、及整合圖形邏輯2308之替代處理器2300。
記憶體階層包括核心內一或多級快取、一組或一或多個共用快取單元2306、及耦合至該組整合記憶體控制器單元2314之外部記憶體(未顯示)。該組共用快取單元2306可包括一或多個中級快取,諸如2級(L2)、3級(L3)、4級(L4)、或其他級快取、最後級快取(LLC)、及/或其組合。雖然在一實施例中,基於環形互連單元2312互連整合圖形邏輯2308、該組共用快取單元2306、及系統代理者單元2310,替代實施例可將任何數量眾知的技術用於互連該等單元。
在一些實施例中,一或多個核心2302A-N可為多線程。系統代理者2310包括該些組件協調及操作核心2302A-N。系統代理者單元2310可包括例如電力控制單元(PCU)及顯示單元。PCU可為或包括用於調節核心2302A-N及整合圖形邏輯2308之電力狀態所需之邏輯及組件。顯示單元用於驅動一或多個外部連接顯示器。
核心2302A-N在架構及/或指令集方面可為同質或異質。例如,一些核心2302A-N可為按順序(例如,如圖 17A及17B中所示),同時其他為失序(例如,如圖18中所示)。有關另一範例,二或更多核心2302A-N可執行相同指令集,同時其他可僅執行指令集之子集或不同指令集。該些核心之至少一項可執行文中所說明之向量友好指令格式。
處理器可為通用處理器,諸如CoreTM i3、i5、i7、2 Duo及Quad、XeonTM 、或ItaniumTM 處理器,其可從加州聖可拉拉Intel公司獲得。另一方面,處理器可來自另一公司。處理器可為特殊用途處理器,例如網路或通訊處理器、壓縮引擎、圖形處理器、共同處理器、嵌入處理器等。處理器可於一或多個晶片上實施。處理器2300可為部分及/或可於使用任何多個程序技術之一或多個基板上實施,例如BiCMOS、CMOS、或NMOS。
示範電腦系統及處理器-圖19-22
圖19-21為適於包括處理器2300之示範系統,同時圖22為可包括一或多個核心2302之示範的晶片上系統(SoC)。本技術中已知其他系統設計及組態亦適當用於膝上型、桌上型、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、開關、嵌入處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持式裝置、及各種其他電子裝置。通常,可結合處理器及/或如文中所揭露之其他執行邏輯之廣泛系統或電子裝 置一般均適合。
現在參照圖19,顯示根據本發明之一實施例之系統1900之方塊圖。系統1900可包括一或更多處理器1910、1915,其耦合至圖形記憶體控制器集線器(GMCH)1920。額外處理器1915之可選特性於圖19中以虛線標示。
每一處理器1910、1915可為處理器2300之一些版本。然而,應注意其不同的是,整合圖形邏輯及整合記憶體控制單元將存在於處理器1910、1915中。
圖19描繪GMCH 1920可耦合至記憶體1940,其可為例如動態隨機存取記憶體(DRAM)。對至少一實施例而言,DRAM可與非揮發性快取記憶體結合。
GMCH 1920可為晶片組或部分晶片組。GMCH 1920可與處理器1910、1915通訊,並控制處理器1910、1915與記憶體1940之間之互動。GMCH 1920可充當處理器1910、1915與系統1900之其他元件之間之加速匯流排介面。對至少一實施例而言,GMCH 1920經由多點匯流排,諸如前端匯流排(FSB)1995,可與處理器1910、1915通訊。
此外,GMCH 1920耦合至顯示器1945(諸如平板顯示器)。GMCH 1920可包括整合圖形加速器。GMCH 1920進一步耦合至輸入/輸出(I/O)控制器集線器(ICH)1950,其可用以耦合各種週邊裝置至系統1900。圖19之實施例中所示為外部圖形裝置1960,其可為耦合至ICH 1950之獨立圖形裝置,連同另一週邊裝置1970。
另一方面,系統1900中亦可呈現額外或不同處理器。 例如,額外處理器1915可包括與處理器1910相同之額外處理器、與處理器1910異質或不對稱之額外處理器、加速器(諸如圖形加速器或數位信號處理(DSP)單元)、場可程控閘陣列、或任何其他處理器。在優點之度量頻譜方面,實體資源1910、1915之間可存在各種差異,包括架構、微架構、熱、電力消耗特性等。該些差異可有效地顯示處理元件1910、1915之中為不對稱及異質性。對至少一實施例而言,各種處理元件1910、1915可駐於相同晶粒封裝中。
現在參照圖20,顯示根據本發明之實施例之第二系統2000之方塊圖。如圖20中所示,多處理器系統2000為點對點互連系統,包括經由點對點互連2050耦合之第一處理器2070及第二處理器2080。如圖20中所示,每一處理器2070及2080可為處理器2300之一些版本。
另一方面,一或多個處理器2070、2080可為非處理器之元件,諸如加速器或場可程控閘陣列。
雖然僅顯示二處理器2070、2080,將理解的是本發明之範圍不侷限於此。在其他實施例中,特定處理器中可呈現一或更多額外處理元件。
處理器2070可進一步包括整合記憶體控制器集線器(IMC)2072及點對點(P-P)介面2076及2078。類似地,第二處理器2080可包括IMC 2082及P-P介面2086及2088。處理器2070、2080可經由點對點(PtP)介面2050使用PtP介面電路2078、2088而交換資料。如圖20中所 示,IMC 2072及2082耦合處理器至各記憶體,即記憶體2042及記憶體2044,其可為本地連接至各處理器之主記憶體的部分。
處理器2070、2080可經由個別P-P介面2052、2054使用點對點介面電路2076、2094、2086、2098而各與晶片組2090交換資料。晶片組2090亦可經由高性能圖形介面2039而與高性能圖形電路2038交換資料。
共用快取(未顯示)可包括於二處理器外部之任一處理器中,並經由P-P互連而與處理器連接,使得若處理器置於低電力模式,任一或二處理器之本地快取資訊可儲存於共用快取中。
晶片組2090可經由介面2096而耦合至第一匯流排2016。在一實施例中,第一匯流排2016可為週邊組件互連(PCI)匯流排,或諸如PCI Express匯流排或另一第三代I/O互連匯流排之匯流排,儘管本發明之範圍不侷限於此。
如圖20中所示,各種I/O裝置2014可耦合至第一匯流排2016,連同匯流排橋接器2018,其將第一匯流排2016耦合至第二匯流排2020。在一實施例中,第二匯流排2020可為低接腳數(LPC)匯流排。在一實施例中,各種裝置可耦合至第二匯流排2020,包括例如鍵盤/滑鼠2022、通訊裝置2026、及諸如磁碟機或其他可包括碼2030之大量儲存裝置的資料儲存單元2028。此外,音頻I/O 2024可耦合至第二匯流排2020。請注意,其他架構亦可。例如,取代圖 20之點對點架構,系統可實施多點匯流排或其他該等架構。
現在參照圖21,顯示根據本發明之實施例之第三系統2100之方塊圖。圖20及21中相似元件賦予相似元件符號,且圖21中已省略圖20之某方面,以避免混淆圖21之其他方面。
圖21描繪處理元件2070、2080可分別包括整合記憶體及I/O控制邏輯(「CL」)2072及2082。對至少一實施例而言,CL 2072、2082可包括諸如以上所說明之記憶體控制器集線器邏輯(IMC)。此外,CL 2072、2082亦可包括I/O控制邏輯。圖21描繪不僅記憶體2042、2044耦合至CL 2072、2082,I/O裝置2114亦耦合至控制邏輯2072、2082。舊有I/O裝置2115耦合至晶片組2090。
現在參照圖22,顯示根據本發明之實施例之SoC 2200之方塊圖。圖中相同元件賦予相同代號。此外,虛線方塊為更先進SoC上可選特徵。在圖22中,互連單元2202耦合至:包括一組一或更多核心2302A-N及共用快取單元2306之應用處理器2210;系統代理者單元2310;匯流排控制器單元2316;整合記憶體控制器單元2314;一組或一或更多媒體處理器2220,其可包括整合圖形邏輯2308、影像處理器2224用於提供相機及/或攝影機功能、音頻處理器2226用於提供硬體音頻加速、及視訊處理器2228用於提供視訊編碼/解碼加速;靜態隨機存取記憶體(SRAM)單元2230;直接記憶體存取(DMA)單元2232;及顯示單元 2240用於耦合至一或多個外部顯示器。
文中所揭露之機構實施例可以硬體、軟體、韌體、或該等實施方法之組合而予實施。本發明之實施例可實施為電腦程式或於包含至少一處理器、儲存系統(包括揮發性及非揮發性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置之可程控系統上執行之程式碼。
程式碼可應用於輸入資料以執行文中所說明之功能,並產生輸出資訊。輸出資訊可以已知方式應用於一或多個輸出裝置。為此應用之目的,處理系統包括具有處理器之任何系統,例如數位信號處理器(DSP)、微控制器、特殊應用積體電路(ASIC)、或微處理器。
程式碼可以高階程式或物件導向程式語言實施以與處理系統通訊。程式碼亦可視需要而以組合語言或機器語言實施。事實上,文中所說明之機構不侷限於任何特別程式語言之範圍。在任何狀況下,語言可編譯或解譯語言。
至少一實施例之一或多個方面可藉由儲存於機器可讀取媒體之代表指令實施,其代表處理器內各種邏輯,當藉由機器讀取時致使機器製造邏輯以執行文中所說明之技術。該等代表,已知為「IP核心」,可儲存於實體機器可讀取媒體上,並供應予各種客戶或製造設施以載入實際製造邏輯之製造機器或處理器。
該等機器可讀取儲存媒體可包括但不侷限於非暫時性由機器或裝置製造或形成之物品的實體配置,包括儲存媒體,諸如:硬碟;任何其他類型碟片,包括軟碟、光碟 (光碟唯讀記憶體(CD-ROM)、可重寫光碟(CD-RW))、及磁性光碟;半導體裝置,諸如唯讀記憶體(ROM)、諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)之隨機存取記憶體(RAM)、可抹除可程控唯讀記憶體(EPROM)、快閃記憶體、電可抹除可程控唯讀記憶體(EEPROM);磁性或光學卡;或適於儲存電子指令之任何其他類型媒體。
因此,本發明之實施例亦包括非暫時性、包含向量友好指令格式或包含設計資料之指令的實體機器可讀取媒體,諸如硬體說明語言(HDL),其定義文中所說明之結構、電路、設備、處理器及/或系統特徵。該等實施例亦可稱為程式產品。
在一些狀況下,指令轉換器可用以將來自來源指令集之指令轉換至目標指令集。例如,指令轉換器可翻譯(例如,使用靜態二進制翻譯、包括動態編輯之動態二進制翻譯)、變形、仿真或否則將指令轉換為將由核心處理之一或多個其他指令。指令轉換器可以軟體、硬體、韌體、或其組合實施。指令轉換器可為開啟處理器、關閉處理器、或部分開啟及部分關閉處理器。
圖24為根據本發明之實施例之方塊圖,對比軟體指令轉換器之使用而將來源指令集中二進制指令轉換為目標指令集中二進制指令。在所描繪之實施例中,指令轉換器為軟體指令轉換器,儘管另一方面指令轉換器可以軟體、韌體、硬體、或其各種組合實施。圖24顯示高階語言2402之 程式可使用x86編譯器2404編譯以產生x86二進制碼2406,其固有由具至少一x86指令集核心2416之處理器執行(假設若干指令係以向量友好指令格式編譯)。具至少一x86指令集核心2416之處理器代表可實質上執行與具至少一x86指令集核心之Intel處理器之相同功能的任何處理器,藉由相容地執行或否則處理(1)Intel x86指令集核心之指令集的大部分或(2)應用程式之物件碼版本或目標係在具至少一x86指令集核心之Intel處理器上運行之其他軟體,以便實質上達成與具至少一x86指令集核心之Intel處理器相同結果。x86編譯器2404代表可具或不具額外連接處理而作業以產生x86二進制碼2406(例如,物件碼)的編譯器,而於具至少一x86指令集核心之處理器2416上執行。類似地,圖中顯示高階語言2402之程式可使用另一指令集編譯器2408編譯,以產生另一指令集二進制碼2410,其固有由不具至少一x86指令集核心之處理器2414執行(例如,具核心之處理器其執行加州森尼維耳市「MIPS Technologies」之MIPS指令集及/或執行加州森尼維耳市「ARM Holdings」之ARM指令集)。指令轉換器2412用以將x86二進制碼2406轉換為固有由不具x86指令集核心2414之處理器執行之碼。此轉換之碼與另一指令集二進制碼2410幾乎不相同,因為難以製造可如此之指令轉換器;然而,轉換之碼將完成一般作業並由來自另一指令集之指令組成。因而,指令轉換器2412經由仿真、模擬或任何其他處理而代表軟體、韌體、硬體、或其組合,允許處理器 或不具有x86指令集處理器或核心之其他電子裝置以執行x86二進制碼2406。
文中所揭露之向量友好指令格式之指令的某作業可藉由硬體組件執行,並可以機器可執行指令體現,其用以致使或至少導致電路或其他硬體組件以指令程控而執行作業。電路可包括通用或專用處理器,或邏輯電路,這只是一些舉例。作業亦可選地藉由硬體及軟體之組合執行。執行邏輯及/或處理器可包括特定或特別電路,或回應於機器指令或源自機器指令之一或多個控制信號的其他邏輯,以儲存指令指定結果運算元。例如,文中所揭露之指令實施例可以圖19-22之一或多個系統執行,且向量友好指令格式之指令實施例可儲存於將於系統中執行之程式碼中。此外,該些圖之處理元件可利用文中詳細之詳細管線及/或架構(例如,按順序及失序架構)之一。例如,按順序架構之解碼單元可解碼指令,將解碼之指令傳遞至向量或標量單元等。
以上說明希望描繪本發明之較佳實施例。從以上討論尤其該等技術領域亦將顯而易見,其中成長快速且進一步進展不易預見,在申請項及其等效論述之範圍內,熟悉本技術之人士可修改本發明之配置及細節而未偏離本發明之原理。例如,方法之一或更多作業可組合或進一步分解。
另一實施例
雖然已說明固有執行向量友好指令格式之實施例,本 發明之另一實施例可經由於執行不同指令集之處理器(例如,執行加州森尼維耳市「MIPS Technologies」之MIPS指令集之處理器、執行加州森尼維耳市「ARM Holdings」之ARM指令集之處理器)上運行之仿真層而執行向量友好指令格式。此外,雖然圖中流程圖顯示藉由本發明之某實施例執行之作業的特別順序,應理解該等順序為示範(例如,另一實施例可以不同順序、組合某作業、重疊某作業等而執行作業)。
在以上說明中,為說明之故,已提出許多特定細節以提供本發明之實施例的徹底理解。然而,對熟悉本技術之人士而言,顯然可體現一或多個其他實施例而無若干該些特定細節。所說明之特別實施例並非侷限本發明而係描繪本發明之實施例。本發明之範圍並非由以上提供之特定範例而係由以下申請項決定。

Claims (10)

  1. 一種收集資料元的設備,包含:解碼器,以解碼收集跨步指令,其中該收集跨步指令為具有:來源運算元,其提供跨步值;遮罩運算元,其具有多數遮罩位元;及目的暫存器運算元;及執行單元,反應於該收集跨步指令的解碼,使得在記憶體的跨步記憶體位置中的資料元依據該遮罩運算元的對應遮罩位元的值被條件式地儲存在該目的暫存器運算元的對應資料元位置中,其中各個後續跨步記憶體位置係與前一跨步記憶體位置分隔開根據該跨步值的一固定量。
  2. 如申請專利範圍第1項所述之設備,其中提供該跨步值的該來源運算元包含立即及通用暫存器之一。
  3. 如申請專利範圍第1項所述之設備,其中只有當該遮罩運算元的對應單一位元具有第一值時,該等資料元被儲存於該目的暫存器運算元的該等對應位置中;只有當該遮罩運算元的該等對應單一位元具有第二值時,該等資料元並不被儲存至該目的暫存器運算元的該等對應位置。
  4. 一種分散資料元的設備,包含:解碼器,解碼分散跨步指令,其中該分散跨步指令具有:來源暫存器運算元,其具有多數封裝資料元;遮罩運算元,其具有多數遮罩位元;及來源運算元,其提供跨步值;及執行單元,反應於該分散跨步指令的解碼,使得該來源暫存器運算元的該等資料元依據該遮罩運算元的對應遮 罩位元的值被條件式地儲存至記憶體之對應跨步記憶體位置中,其中各個後續跨步記憶體位置係與前一跨步記憶體位置分開根據該跨步值的一固定量。
  5. 如申請專利範圍第4項所述之設備,其中提供該跨步值的該來源運算元包含立即與通用暫存器之一。
  6. 如申請專利範圍第4項所述之設備,其中只有當該遮罩運算元的對應單一位元具有第一值時,該等資料元被儲存於該目的暫存器運算元的對應位置中,只有當該遮罩運算元的該等對應單一位元具有第二值時,該等資料元件並不被儲存至該目的暫存器運算元的該等對應位置。
  7. 一種預取資料元的設備,包含:解碼器,解碼收集跨步預取指令,其中該收集跨步預取指令具有:來源運算元,其提供跨步值;遮罩運算元,其具有多數遮罩位元,並提供預取資料元用的快取階層的提示;及執行單元,反應於該收集跨步預取指令的解碼,使得在記憶體之跨步記憶體位置中的資料元依據該遮罩運算元的對應遮罩位元的值被條件式地預取至對應於該所提供提示的該快取階層。
  8. 如申請專利範圍第7項所述之設備,其中在該收集跨步預取指令執行未輸送時,遭遇分頁錯誤。
  9. 如申請專利範圍第7項所述之設備,其中該預取資料元未被儲存於目的暫存器中。
  10. 如申請專利範圍第7項所述之設備,其中各個後 續跨步記憶體位置與前一跨步記憶體位置分開根據該跨步值的一固定量。
TW103144497A 2011-04-01 2011-12-08 於電腦處理器中執行聚集跨步指令及分散跨步指令之方法及設備 TWI514273B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/078,891 US20120254591A1 (en) 2011-04-01 2011-04-01 Systems, apparatuses, and methods for stride pattern gathering of data elements and stride pattern scattering of data elements

Publications (2)

Publication Number Publication Date
TW201525856A TW201525856A (zh) 2015-07-01
TWI514273B true TWI514273B (zh) 2015-12-21

Family

ID=46928901

Family Applications (2)

Application Number Title Priority Date Filing Date
TW100145352A TWI476684B (zh) 2011-04-01 2011-12-08 於電腦處理器中執行聚集跨步指令及分散跨步指令之方法及設備
TW103144497A TWI514273B (zh) 2011-04-01 2011-12-08 於電腦處理器中執行聚集跨步指令及分散跨步指令之方法及設備

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW100145352A TWI476684B (zh) 2011-04-01 2011-12-08 於電腦處理器中執行聚集跨步指令及分散跨步指令之方法及設備

Country Status (8)

Country Link
US (2) US20120254591A1 (zh)
JP (2) JP5844882B2 (zh)
KR (1) KR101607161B1 (zh)
CN (1) CN103562856B (zh)
DE (1) DE112011105121T5 (zh)
GB (1) GB2503169B (zh)
TW (2) TWI476684B (zh)
WO (1) WO2012134555A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI816814B (zh) * 2018-07-05 2023-10-01 美商高通公司 在以向量處理器為基礎之裝置中提供處理元件之可重組態融合的裝置、方法以及非暫時性電腦可讀媒體

Families Citing this family (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2480296A (en) * 2010-05-12 2011-11-16 Nds Ltd Processor with differential power analysis attack protection
US20120254591A1 (en) * 2011-04-01 2012-10-04 Hughes Christopher J Systems, apparatuses, and methods for stride pattern gathering of data elements and stride pattern scattering of data elements
EP3805921B1 (en) 2011-04-01 2023-09-06 INTEL Corporation Vector friendly instruction format and execution thereof
US10803009B2 (en) 2011-07-14 2020-10-13 Texas Instruments Incorporated Processor with table lookup processing unit
US9672036B2 (en) 2011-09-26 2017-06-06 Intel Corporation Instruction and logic to provide vector loads with strides and masking functionality
WO2013048369A1 (en) 2011-09-26 2013-04-04 Intel Corporation Instruction and logic to provide vector load-op/store-op with stride functionality
WO2013112118A2 (en) * 2011-12-22 2013-08-01 Intel Corporation Instructions to perform jh cryptographic hashing in a 256 bit data path
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
US9251374B2 (en) * 2011-12-22 2016-02-02 Intel Corporation Instructions to perform JH cryptographic hashing
US9870338B2 (en) * 2011-12-23 2018-01-16 Intel Corporation Systems, apparatuses, and methods for performing vector packed compression and repeat
CN104137059B (zh) * 2011-12-23 2018-10-09 英特尔公司 多寄存器分散指令
WO2013095661A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Systems, apparatuses, and methods for performing conversion of a list of index values into a mask value
US9766887B2 (en) * 2011-12-23 2017-09-19 Intel Corporation Multi-register gather instruction
US10225306B2 (en) 2011-12-29 2019-03-05 Koninklijke Kpn N.V. Controlled streaming of segmented content
WO2013101020A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Aggregated page fault signaling and handline
EP2798475A4 (en) * 2011-12-30 2016-07-13 Intel Corp TRANSPOSED INSTRUCTION
US9575755B2 (en) 2012-08-03 2017-02-21 International Business Machines Corporation Vector processing in an active memory device
US9569211B2 (en) 2012-08-03 2017-02-14 International Business Machines Corporation Predication in a vector processor
US9632777B2 (en) * 2012-08-03 2017-04-25 International Business Machines Corporation Gather/scatter of multiple data elements with packed loading/storing into/from a register file entry
US9594724B2 (en) 2012-08-09 2017-03-14 International Business Machines Corporation Vector register file
US9471317B2 (en) * 2012-09-27 2016-10-18 Texas Instruments Deutschland Gmbh Execution of additional instructions in conjunction atomically as specified in instruction field
US10049061B2 (en) * 2012-11-12 2018-08-14 International Business Machines Corporation Active memory device gather, scatter, and filter
US9244684B2 (en) 2013-03-15 2016-01-26 Intel Corporation Limited range vector memory access instructions, processors, methods, and systems
CN105379295A (zh) * 2013-07-03 2016-03-02 皇家Kpn公司 分段内容的流送
US11074169B2 (en) 2013-07-03 2021-07-27 Micron Technology, Inc. Programmed memory controlled data movement and timing within a main memory device
KR102213668B1 (ko) 2013-09-06 2021-02-08 삼성전자주식회사 제너럴 퍼포즈 프로그래머블 컴퓨팅 디바이스에서의 멀티미디어 데이터 프로세싱 방법 및 그에 따른 데이터 프로세싱 시스템
KR102152735B1 (ko) 2013-09-27 2020-09-21 삼성전자주식회사 그래픽 처리 장치 및 이의 동작 방법
KR102113048B1 (ko) 2013-11-13 2020-05-20 현대모비스 주식회사 마그네틱 엔코더 구조
US10114435B2 (en) 2013-12-23 2018-10-30 Intel Corporation Method and apparatus to control current transients in a processor
JP6698553B2 (ja) 2014-02-13 2020-05-27 コニンクリーケ・ケイピーエヌ・ナムローゼ・フェンノートシャップ 1つの要求メッセージに基づいたネットワーク・ノードへの多数のチャンクの要求
US9747104B2 (en) * 2014-05-12 2017-08-29 Qualcomm Incorporated Utilizing pipeline registers as intermediate storage
US10523723B2 (en) 2014-06-06 2019-12-31 Koninklijke Kpn N.V. Method, system and various components of such a system for selecting a chunk identifier
US9811464B2 (en) * 2014-12-11 2017-11-07 Intel Corporation Apparatus and method for considering spatial locality in loading data elements for execution
US9830151B2 (en) * 2014-12-23 2017-11-28 Intel Corporation Method and apparatus for vector index load and store
US9875214B2 (en) * 2015-07-31 2018-01-23 Arm Limited Apparatus and method for transferring a plurality of data structures between memory and a plurality of vector registers
GB2540942B (en) 2015-07-31 2019-01-23 Advanced Risc Mach Ltd Contingent load suppression
JP6493088B2 (ja) * 2015-08-24 2019-04-03 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US10503502B2 (en) * 2015-09-25 2019-12-10 Intel Corporation Data element rearrangement, processors, methods, systems, and instructions
GB2543303B (en) 2015-10-14 2017-12-27 Advanced Risc Mach Ltd Vector data transfer instruction
US10152321B2 (en) * 2015-12-18 2018-12-11 Intel Corporation Instructions and logic for blend and permute operation sequences
US10509726B2 (en) * 2015-12-20 2019-12-17 Intel Corporation Instructions and logic for load-indices-and-prefetch-scatters operations
US10467006B2 (en) * 2015-12-20 2019-11-05 Intel Corporation Permutating vector data scattered in a temporary destination into elements of a destination register based on a permutation factor
US20170177360A1 (en) * 2015-12-21 2017-06-22 Intel Corporation Instructions and Logic for Load-Indices-and-Scatter Operations
US20170177359A1 (en) * 2015-12-21 2017-06-22 Intel Corporation Instructions and Logic for Lane-Based Strided Scatter Operations
US20170177349A1 (en) * 2015-12-21 2017-06-22 Intel Corporation Instructions and Logic for Load-Indices-and-Prefetch-Gathers Operations
US20170177363A1 (en) * 2015-12-22 2017-06-22 Intel Corporation Instructions and Logic for Load-Indices-and-Gather Operations
US20170192782A1 (en) * 2015-12-30 2017-07-06 Robert Valentine Systems, Apparatuses, and Methods for Aggregate Gather and Stride
US20170192781A1 (en) * 2015-12-30 2017-07-06 Robert Valentine Systems, Apparatuses, and Methods for Strided Loads
US20170192783A1 (en) * 2015-12-30 2017-07-06 Elmoustapha Ould-Ahmed-Vall Systems, Apparatuses, and Methods for Stride Load
US10289416B2 (en) * 2015-12-30 2019-05-14 Intel Corporation Systems, apparatuses, and methods for lane-based strided gather
US10191744B2 (en) * 2016-07-01 2019-01-29 Intel Corporation Apparatuses, methods, and systems for element sorting of vectors
US10282204B2 (en) * 2016-07-02 2019-05-07 Intel Corporation Systems, apparatuses, and methods for strided load
US10191740B2 (en) 2017-02-28 2019-01-29 Intel Corporation Deinterleave strided data elements processors, methods, systems, and instructions
WO2018158603A1 (en) * 2017-02-28 2018-09-07 Intel Corporation Strideshift instruction for transposing bits inside vector register
WO2018174931A1 (en) 2017-03-20 2018-09-27 Intel Corporation Systems, methods, and appartus for tile configuration
TWI685757B (zh) * 2017-05-17 2020-02-21 美商谷歌有限責任公司 低延遲矩陣乘法單元
US10014056B1 (en) * 2017-05-18 2018-07-03 Sandisk Technologies Llc Changing storage parameters
US11360771B2 (en) 2017-06-30 2022-06-14 Intel Corporation Method and apparatus for data-ready memory operations
WO2019009870A1 (en) 2017-07-01 2019-01-10 Intel Corporation SAVE BACKGROUND TO VARIABLE BACKUP STATUS SIZE
US10346163B2 (en) 2017-11-01 2019-07-09 Apple Inc. Matrix computation engine
US10922258B2 (en) * 2017-12-22 2021-02-16 Alibaba Group Holding Limited Centralized-distributed mixed organization of shared memory for neural network processing
US10642620B2 (en) 2018-04-05 2020-05-05 Apple Inc. Computation engine with strided dot product
US10970078B2 (en) * 2018-04-05 2021-04-06 Apple Inc. Computation engine with upsize/interleave and downsize/deinterleave options
US10649777B2 (en) * 2018-05-14 2020-05-12 International Business Machines Corporation Hardware-based data prefetching based on loop-unrolled instructions
US10754649B2 (en) 2018-07-24 2020-08-25 Apple Inc. Computation engine that operates in matrix and vector modes
WO2020036917A1 (en) * 2018-08-14 2020-02-20 Optimum Semiconductor Technologies Inc. Vector instruction with precise interrupts and/or overwrites
US10831488B1 (en) 2018-08-20 2020-11-10 Apple Inc. Computation engine with extract instructions to minimize memory access
GB2584268B (en) 2018-12-31 2021-06-30 Graphcore Ltd Load-Store Instruction
US11620153B2 (en) * 2019-02-04 2023-04-04 International Business Machines Corporation Instruction interrupt suppression of overflow exception
CN113626079A (zh) * 2020-05-08 2021-11-09 安徽寒武纪信息科技有限公司 数据处理方法及装置以及相关产品
TW202215237A (zh) * 2020-09-02 2022-04-16 美商賽發馥股份有限公司 向量運算記憶體保護
US20220413850A1 (en) * 2021-06-28 2022-12-29 Silicon Laboratories Inc. Apparatus for Processor with Macro-Instruction and Associated Methods
US12086597B2 (en) * 2021-06-28 2024-09-10 Silicon Laboratories Inc. Array processor using programmable per-dimension size values and programmable per-dimension stride values for memory configuration
US12079630B2 (en) * 2021-06-28 2024-09-03 Silicon Laboratories Inc. Array processor having an instruction sequencer including a program state controller and loop controllers
CN114546488B (zh) * 2022-04-25 2022-07-29 超验信息科技(长沙)有限公司 一种向量跨步指令的实现方法、装置、设备及存储介质
US20230418614A1 (en) * 2022-06-22 2023-12-28 Andes Technology Corporation Processor, operation method, and load-store device for implementation of accessing vector strided memory

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050055543A1 (en) * 2003-09-05 2005-03-10 Moyer William C. Data processing system using independent memory and register operand size specifiers and method thereof
US20090017236A1 (en) * 2007-07-12 2009-01-15 Keeton Mark E Two-sided thermal media
US20090172364A1 (en) * 2007-12-31 2009-07-02 Eric Sprangle Device, system, and method for gathering elements from memory
CN101488083A (zh) * 2007-12-26 2009-07-22 英特尔公司 用于转换向量数据的方法、装置和指令

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4745547A (en) * 1985-06-17 1988-05-17 International Business Machines Corp. Vector processing
US6016395A (en) * 1996-10-18 2000-01-18 Samsung Electronics Co., Ltd. Programming a vector processor and parallel programming of an asymmetric dual multiprocessor comprised of a vector processor and a risc processor
US5940876A (en) * 1997-04-02 1999-08-17 Advanced Micro Devices, Inc. Stride instruction for fetching data separated by a stride amount
JP3138659B2 (ja) * 1997-05-07 2001-02-26 甲府日本電気株式会社 ベクトル処理装置
US6539470B1 (en) * 1999-11-16 2003-03-25 Advanced Micro Devices, Inc. Instruction decode unit producing instruction operand information in the order in which the operands are identified, and systems including same
US6532533B1 (en) * 1999-11-29 2003-03-11 Texas Instruments Incorporated Input/output system with mask register bit control of memory mapped access to individual input/output pins
JP3733842B2 (ja) * 2000-07-12 2006-01-11 日本電気株式会社 ベクトルスキャタ命令制御回路及びベクトル型情報処理装置
US6807622B1 (en) * 2000-08-09 2004-10-19 Advanced Micro Devices, Inc. Processor which overrides default operand size for implicit stack pointer references and near branches
JP3961461B2 (ja) * 2003-07-15 2007-08-22 エヌイーシーコンピュータテクノ株式会社 ベクトル処理装置、および、ベクトル処理方法
US7275148B2 (en) * 2003-09-08 2007-09-25 Freescale Semiconductor, Inc. Data processing system using multiple addressing modes for SIMD operations and method thereof
EP1731998A1 (en) * 2004-03-29 2006-12-13 Kyoto University Data processing device, data processing program, and recording medium containing the data processing program
US9529592B2 (en) * 2007-12-27 2016-12-27 Intel Corporation Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation
US8447962B2 (en) * 2009-12-22 2013-05-21 Intel Corporation Gathering and scattering multiple data elements
US9513905B2 (en) * 2008-03-28 2016-12-06 Intel Corporation Vector instructions to enable efficient synchronization and parallel reduction operations
US20120254591A1 (en) * 2011-04-01 2012-10-04 Hughes Christopher J Systems, apparatuses, and methods for stride pattern gathering of data elements and stride pattern scattering of data elements

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050055543A1 (en) * 2003-09-05 2005-03-10 Moyer William C. Data processing system using independent memory and register operand size specifiers and method thereof
US20090017236A1 (en) * 2007-07-12 2009-01-15 Keeton Mark E Two-sided thermal media
CN101488083A (zh) * 2007-12-26 2009-07-22 英特尔公司 用于转换向量数据的方法、装置和指令
US20090172364A1 (en) * 2007-12-31 2009-07-02 Eric Sprangle Device, system, and method for gathering elements from memory

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI816814B (zh) * 2018-07-05 2023-10-01 美商高通公司 在以向量處理器為基礎之裝置中提供處理元件之可重組態融合的裝置、方法以及非暫時性電腦可讀媒體

Also Published As

Publication number Publication date
TW201525856A (zh) 2015-07-01
CN103562856A (zh) 2014-02-05
KR101607161B1 (ko) 2016-03-29
GB201316951D0 (en) 2013-11-06
US20120254591A1 (en) 2012-10-04
TWI476684B (zh) 2015-03-11
CN103562856B (zh) 2016-11-16
JP2014513340A (ja) 2014-05-29
JP6274672B2 (ja) 2018-02-07
TW201246065A (en) 2012-11-16
WO2012134555A1 (en) 2012-10-04
JP2016040737A (ja) 2016-03-24
US20150052333A1 (en) 2015-02-19
JP5844882B2 (ja) 2016-01-20
GB2503169B (en) 2020-09-30
KR20130137702A (ko) 2013-12-17
GB2503169A (en) 2013-12-18
DE112011105121T5 (de) 2014-01-09

Similar Documents

Publication Publication Date Title
TWI514273B (zh) 於電腦處理器中執行聚集跨步指令及分散跨步指令之方法及設備
TWI552080B (zh) 處理器
TWI525536B (zh) 封裝資料重排控制指標前標產生處理器、方法、系統及指令
KR101926241B1 (ko) 레지스터 정렬을 위한 시스템, 장치 및 방법
TWI489381B (zh) 多暫存器散布指令
US9792115B2 (en) Super multiply add (super MADD) instructions with three scalar terms
TWI499976B (zh) 用以產生整數序列的方法、設備、系統及製造物品
TWI473015B (zh) 執行向量頻率擴展指令之方法、處理器核心以及製品
TWI501147B (zh) 用於從通用暫存器至向量暫存器的廣播之裝置及方法
KR20150091448A (ko) 제한 범위 벡터 메모리 액세스 인스트럭션들, 프로세서들, 방법들 및 시스템들
TWI663545B (zh) 執行置換運算的處理器
WO2012134558A1 (en) Systems, apparatuses, and methods for expanding a memory source into a destination register and compressing a source register into a destination memory location
KR20150101994A (ko) 적분 이미지 계산 명령어를 위한 방법 및 장치
CN114153498A (zh) 用于加载片寄存器对的系统和方法
TWI467478B (zh) 在電腦處理器中進行近跳躍的方法及其處理器
TWI599952B (zh) 用於執行衝突檢測的方法及裝置
TWI644256B (zh) 用以執行向量飽和雙字/四字加法的指令及邏輯
TW201730748A (zh) 用於跨距存取的系統、裝置及方法
TW201643702A (zh) 用於向量水平邏輯指令的裝置及方法
US20180217841A1 (en) Functional unit for instruction execution pipeline capable of shifting different chunks of a packed data operand by different amounts

Legal Events

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