TW201636851A - 考慮用於執行之載入資料元件中的空間區域性之裝置和方法 - Google Patents

考慮用於執行之載入資料元件中的空間區域性之裝置和方法 Download PDF

Info

Publication number
TW201636851A
TW201636851A TW104136669A TW104136669A TW201636851A TW 201636851 A TW201636851 A TW 201636851A TW 104136669 A TW104136669 A TW 104136669A TW 104136669 A TW104136669 A TW 104136669A TW 201636851 A TW201636851 A TW 201636851A
Authority
TW
Taiwan
Prior art keywords
data elements
processor
instruction
cache
field
Prior art date
Application number
TW104136669A
Other languages
English (en)
Other versions
TWI622879B (zh
Inventor
路奇拉 沙珊卡
艾蒙斯特阿法 歐德亞麥德維爾
Original Assignee
英特爾股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 英特爾股份有限公司 filed Critical 英特爾股份有限公司
Publication of TW201636851A publication Critical patent/TW201636851A/zh
Application granted granted Critical
Publication of TWI622879B publication Critical patent/TWI622879B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0886Variable-length word access
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • 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/452Instruction code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

在本發明之一實施例中,處理器包含上級快取及至少一處理器核心。至少一處理器核心包括一或多個暫存器及複數個指令處理級:解碼單元,用以解碼需要複數個資料元件之輸入之指令,其中複數個資料元件之各者的尺寸係小於處理器的快取線尺寸;執行單元,用以將複數個資料元件載入至處理器的一或多個暫存器,而無須載入空間上鄰近於複數個資料元件或在上級快取中之複數個資料元件的資料元件。

Description

考慮用於執行之載入資料元件中的空間區域性之裝置和方法
本揭露關於微處理器,且尤其是關於在微處理器中用於執行之載入資料元件。
陣列之步幅(亦稱為增加量、間距、或步大小)係指陣列之連續陣列元件開始的兩個記憶體位置之間的距離。許多科學上應用具有擁有大步幅的陣列。當例如下列時這些自然發生:存取陣列(或2D/3D陣列)。若連續地存取同一行的元件,如A[0][3]、A[1][3]、A[2][3]、...
存取組織成結構陣列(A0S)之相同數量的結構,如A[0].權重、A[1].權重、A[2].權重、...
由於使用之演算法的本質而言,上述步幅存取樣式在高效能計算(HPC)及科學計算應用中常見。許多這些步幅存取具有大步幅值,通常大於快取線的長度 (例如,64位元組)。上述存取不具有空間區域性。亦即,若存取資料元件X,則靠近資料元件X的資料元件不比遠離資料元件X的資料元件更可能被存取。
100‧‧‧處理器
150‧‧‧處理器核心
130‧‧‧預取器
140‧‧‧主記憶體
124‧‧‧下級快取
122‧‧‧中級快取
120‧‧‧填充緩衝器
102‧‧‧提取單元
104‧‧‧解碼單元
106‧‧‧排程單元
108‧‧‧執行單元
107‧‧‧暫存器
110‧‧‧引退單元
112‧‧‧上級快取
202‧‧‧快取線
300‧‧‧方法
302‧‧‧參考
304‧‧‧參考
306‧‧‧參考
308‧‧‧參考
310‧‧‧參考
402‧‧‧參考
404‧‧‧參考
406‧‧‧參考
452‧‧‧參考
454‧‧‧參考
456‧‧‧參考
500‧‧‧處理器管線
502‧‧‧提取級
504‧‧‧長度解碼級
506‧‧‧解碼級
508‧‧‧分配級
510‧‧‧更名級
512‧‧‧排程級
514‧‧‧暫存器讀取/記憶體讀取級
516‧‧‧執行級
518‧‧‧寫回/記憶體寫入級
522‧‧‧例外處理級
524‧‧‧提交級
590‧‧‧處理器核心
530‧‧‧前端單元
550‧‧‧執行引擎單元
570‧‧‧記憶體單元
532‧‧‧分支預測單元
534‧‧‧指令快取單元
536‧‧‧指令轉譯旁視緩衝器
538‧‧‧指令提取單元
540‧‧‧解碼單元
552‧‧‧更名/分配器單元
554‧‧‧引退單元
556‧‧‧排程器單元
558‧‧‧實體暫存器檔案單元
560‧‧‧執行叢集
562‧‧‧執行單元
564‧‧‧記憶體存取單元
572‧‧‧資料TLB單元
574‧‧‧資料快取單元
576‧‧‧L2快取單元
600‧‧‧處理器
602A-N‧‧‧核心
610‧‧‧系統代理器
616‧‧‧匯流排控制器單元
614‧‧‧整合記憶體控制器單元
608‧‧‧專用邏輯
606‧‧‧共享快取單元
612‧‧‧互連單元
700‧‧‧系統
710‧‧‧處理器
715‧‧‧處理器
720‧‧‧圖形記憶體控制器中心
750‧‧‧輸入/輸出控制器中心
740‧‧‧記憶體
760‧‧‧圖形裝置
795‧‧‧前端匯流排
745‧‧‧顯示器
770‧‧‧周邊裝置
800‧‧‧多處理器系統
850‧‧‧點對點互連
870‧‧‧第一處理元件
880‧‧‧第二處理元件
872‧‧‧記憶體控制器中心
882‧‧‧記憶體控制器中心
876‧‧‧P-P介面
878‧‧‧P-P介面
886‧‧‧P-P介面
888‧‧‧P-P介面
842‧‧‧記憶體
844‧‧‧記憶體
852‧‧‧P-P介面
854‧‧‧P-P介面
890‧‧‧晶片組
839‧‧‧高效能圖形介面
838‧‧‧高效能圖形電路
894‧‧‧P-P介面
898‧‧‧P-P介面
892‧‧‧介面
848‧‧‧高效能圖形引擎
849‧‧‧匯流排
816‧‧‧第一匯流排
814‧‧‧I/O裝置
818‧‧‧匯流排橋接器
820‧‧‧第二匯流排
822‧‧‧鍵盤及/或滑鼠
826‧‧‧通訊裝置
830‧‧‧code
828‧‧‧資料儲存單元
824‧‧‧音頻I/O
914‧‧‧I/O裝置
1000‧‧‧SoC
1002‧‧‧互連單元
1010‧‧‧應用處理器
1020‧‧‧協處理器
1030‧‧‧靜態隨機存取記憶體單元
1032‧‧‧直接記憶體存取單元
1040‧‧‧顯示單元
1102‧‧‧高階語言
1104‧‧‧x86編譯器
1106‧‧‧x86二進制碼
1108‧‧‧其他指令集編譯器
1110‧‧‧其他指令集二進制碼
1112‧‧‧指令轉換器
1114‧‧‧不具有x86指令集核心的處理器
1116‧‧‧具有至少一x86指令集核心的處理器
1200‧‧‧通用向量合適指令格式
1205‧‧‧無記憶體存取
1220‧‧‧記憶體存取
1240‧‧‧格式欄位
1242‧‧‧基本操作欄位
1244‧‧‧暫存器索引欄位
1246‧‧‧修改欄位
1250‧‧‧擴充操作欄位
1268‧‧‧類別欄位
1252‧‧‧alpha欄位
1254‧‧‧beta欄位
1260‧‧‧縮放欄位
1262A‧‧‧位移欄位
1262B‧‧‧位移因數欄位
1274‧‧‧全運算碼欄位
1254C‧‧‧資料處理欄位
1264‧‧‧資料元件寬度欄位
1270‧‧‧寫入遮罩欄位
1272‧‧‧立即欄位
1268A‧‧‧類別A
1252A‧‧‧RS欄位
1252A.1‧‧‧捨入
1252A.2‧‧‧資料轉換
1254A‧‧‧捨入控制欄位
1256‧‧‧SAE欄位
1258‧‧‧捨入操作控制欄位
1254B‧‧‧資料轉換欄位
1252B‧‧‧逐出暗示欄位
1252B.1‧‧‧暫時
1252B.2‧‧‧非暫時
1257A‧‧‧RL欄位
1252C‧‧‧寫入遮罩控制欄位
1257A.1‧‧‧捨入
1257A.2‧‧‧向量長度
1259A‧‧‧捨入操作控制欄位
1259B‧‧‧向量長度欄位
1257B‧‧‧廣播欄位
1310‧‧‧REX’欄位
1300‧‧‧專用向量合適指令格式
1302‧‧‧EVEX前置
1305‧‧‧REX欄位
1315‧‧‧運算碼映射欄位
1320‧‧‧EVEX.vvvv欄位
1325‧‧‧前置編碼欄位
1330‧‧‧實數運算碼欄位
1340‧‧‧MOD R/M欄位
1342‧‧‧MOD欄位
1344‧‧‧Reg欄位
1346‧‧‧R/M欄位
1354‧‧‧xxx欄位
1356‧‧‧bbb欄位
1400‧‧‧暫存器架構
1410‧‧‧向量暫存器
1415‧‧‧寫入遮罩暫存器
1425‧‧‧通用暫存器
1450‧‧‧整數浮點數暫存器檔案
1445‧‧‧純量浮點堆疊暫存器檔案
1500‧‧‧指令解碼器
1502‧‧‧互連網路
1504‧‧‧L2快取之區域子集
1506‧‧‧L1快取
1508‧‧‧純量單元
1510‧‧‧向量單元
1512‧‧‧純量暫存器
1514‧‧‧向量暫存器
1506A‧‧‧L1資料快取
1528‧‧‧16寬ALU
1520‧‧‧攪和單元
1524‧‧‧複製單元
1526‧‧‧寫入遮罩暫存器
1522A‧‧‧數字轉換單元
1522B‧‧‧數字轉換單元
藉由附圖之圖中的實例且非限定地說明本發明,其中相同編號係指類似元件。
第1圖繪示根據本發明之一實施例的處理器之系統架構。
第2圖繪示根據本發明之實施例之在載入資料元件中有及沒有考慮區域性之操作的比較。
第3A-B圖係為根據本發明之一實施例之繪示用於在處理器中執行之載入資料元件中考慮區域性之方法的流程圖。
第4A圖係為根據本發明之一實施例之繪示用於載入複數個資料元件而在連續資料元件之間沒有固定距離且不考慮空間區域性之指令之類型之一個實作的虛擬碼。
第4B圖係為根據本發明之一實施例之繪示用於以在連續資料元件之間之固定距離載入複數個資料元件且不考慮空間區域性之指令之類型之一個實作的另一虛擬碼。
第5A圖係繪示根據本發明之實施例之示範有序管線與示範暫存器更名、亂序發出/執行管線兩者的方 塊圖。
第5B圖係繪示根據本發明之實施例之將包括在處理器中的有序架構核心之示範實施例與示範暫存器更名、亂序發出/執行架構核心兩者的方塊圖。
第6圖係根據本發明之實施例之單處理器核心及具有整合記憶體控制器及圖形之多核心處理器的方塊圖。
第7圖係根據本發明之一實施例之系統的方塊圖。
第8圖係根據本發明之實施例之第二系統的方塊圖。
第9圖係根據本發明之實施例之第三系統的方塊圖。
第10繪示依照本發明之實施例之系統晶片(SoC)的方塊圖。
第11圖係根據本發明之實施例之對照於使用軟體指令轉換器來將來源指令集中的二進制指令轉換成目標指令集中的二進制指令之方塊圖。
第12A-12B圖係繪示根據本發明之實施例之通用向量合適指令格式及其指令模板的方塊圖。
第13A-D圖係繪示根據本發明之實施例之示範專用向量合適指令格式的方塊圖。
第14圖係根據本發明之一實施例之暫存器架構的方塊圖。
第15A圖係根據本發明之實施例之單一處理器核心連同其連接單晶片互連網路的連線與其第2級(L2)快取的區域子集之方塊圖。
第15B圖係根據本發明之實施例之第14A圖中的處理器核心之一部分的分解圖。
【發明內容及實施方式】
在下列說明中,提出各種具體細節。然而,了解可能實作本發明之實施例而無須這些具體細節。在其他實例中,未顯示熟知的電路、結構及技術以免模糊本說明的理解。然而,本領域之技藝者將了解可能實作本發明而無須上述具體細節。本領域之通常技藝者藉由所包括的說明將能夠實作適當功能性而無須過度實驗。
說明書中提到「一個實施例」、「一實施例」、「一示範實施例」、等等指示所述之實施例可能包括特定特徵、結構、或特性,但每個實施例可能不一定包括特定特徵、結構、或特性。此外,上述措辭可能不一定係指相同實施例。又,當說明關於實施例的特定特徵、結構、或特性時,認為這在本領域之技藝者的知識內以實現關聯於其他實施例的上述特徵、結構、或特性,不管是否明確說明。
在下列說明及申請專利範圍中,可能使用「耦接」及「連接」及其衍生字。應了解這些詞不打算作為彼此的同義詞。使用「耦接」以指示彼此可能或可能不 直接實體或電連接的兩個或多個元件彼此協作或互動。使用「連接」以指示彼此耦接的兩個或多個元件之間之通訊的建立。
在本發明之一個實施例中,揭露一種用於在處理器中載入資料元件的處理器。處理器包含上級快取及耦接至上級快取的至少一處理器核心。處理器核心耦接至上級快取且包括一或多個暫存器及複數個指令處理級,包括解碼器單元及執行單元。解碼器單元係配置以解碼指令,其中指令需要複數個資料元件之輸入,且其中複數個資料元件之各者的尺寸係小於處理器的快取線尺寸。執行單元係配置以將複數個資料元件載入至一或多個暫存器,而無須載入空間上鄰近於複數個資料元件或在處理器之上級快取中之複數個資料元件的資料元件。
在本發明之一個實施例中,揭露一種用於在處理器中載入資料元件的方法。方法包括解碼指令,其中指令需要複數個資料元件之輸入,且其中複數個資料元件之各者的尺寸係小於處理器的快取線尺寸。方法也包括在解碼指令之後,將複數個資料元件載入至處理器的一或多個暫存器,而無須載入空間上鄰近於複數個資料元件或在處理器的上級快取中之複數個資料元件的資料元件。
在本發明之一個實施例中,揭露一種電腦系統。電腦系統包含記憶體,用於儲存指令、處理器,包括上級快取、及用於處理指令的至少一處理器核心。處理器核心耦接至上級快取且包括一或多個暫存器及複數個指令 處理級,包括解碼器單元及執行單元。解碼器單元係配置以解碼指令,其中指令需要複數個資料元件之輸入,且其中複數個資料元件之各者的尺寸係小於處理器的快取線尺寸。執行單元係配置以將複數個資料元件載入至一或多個暫存器,而無須載入空間上鄰近於複數個資料元件或在處理器之上級快取中之複數個資料元件的資料元件。
指令集
指令集(或指令集架構(ISA))係為關於編程之電腦架構的一部分,且可能包括原生資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷及例外處理、及外部輸入及輸出(I/O)。本文中指令之詞一般係指微指令,其為提供至處理器用於執行的指令(或轉譯(例如,使用靜態二進制轉譯、包括動態編譯的動態二進制轉譯)、模仿、模擬、或以其他方式將指令轉換成一或更多其他指令以被處理器處理)的指令轉換器),如相對於微指令或微運算(微op),其為解碼微指令之處理器之解碼器的結果。
ISA與微架構不同,其為實作指令集之處理器的內部設計。具有不同微架構的處理器能共享共用指令集。例如,Intel® Pentium 4處理器、Intel® CoreTM處理器、及來自美國加州Sunnyvale的超微半導體公司之處理器實作幾乎相同版本的x86指令集(具有已加入較新版本的一些擴充),但具有不同內部設計。例如,可能在使用 熟知技術的不同微架構中以不同方法實作ISA的相同暫存器架構,包括專用實體暫存器、使用暫存器更名機制(例如,使用暫存器別名表(RAT)、重排序緩衝器(ROB)、及引退暫存器檔案;使用多個映射及暫存器池)的一或多個動態配置實體暫存器、等等。除非另有指明,否則本文階段暫存器架構、暫存器檔案、和暫存器係用以指示其對軟體/編程器係可見的及指令指定暫存器之方式。其中特定性係所期望的,形容詞邏輯、架構、或可見的軟體將用以指示在暫存器架構中的暫存器/檔案,而不同的形容詞將用以指定在給定微架構中的暫存器(例如,實體暫存器、重排序緩衝器、引退暫存器、暫存器池)。
指令集包括一或更多指令格式。除此之外、,給定的指令格式還定義各種欄位(位元數、位元位址)以指定要被進行的運算和要被進行此運算的運算元。雖然定義指令模板(或子格式),但一些指令格式進一步失效。例如,給定指令格式的指令模板可能被定義具有指令格式之欄位的不同子集(包括的欄位通常以相同順序,但至少一些具有不同位元位置,因為包括少量欄位)及/或被定義具有不同解譯的給定欄位。因此,ISA的每個指令使用給定指令格式來表達(且若定義,則在此指令格式之給定其中一個指令模板)且包括用於明定運算及運算元的欄位。例如,示範ADD指令具有特定運算碼及包括運算碼欄位的指令格式以指定此運算碼及運算元欄位選擇運算元 (來源1/目的及來源2);及指令串中的此ADD指令之發生將在選擇特定運算元之運算元欄位中具有特定內容。
科學、金融、自動向量化通用、RMS(辨識、挖掘、及合成)、及視覺和多媒體應用(例如,2D/3D圖形、影像處理、視頻壓縮/解壓縮、語音辨識演算法及音頻處理)通常需要要在大量資料項上進行的相同操作(被稱為「資料平行性」)。單指令多資料(SIMD)係指一種使處理器在多個資料項上進行操作的指令類型。SIMD技術特別適用於能將在暫存器中的位元邏輯上分成一些固定尺寸之資料元件的處理器,其中之各者代表一單獨值。例如,在256位元暫存器中的位元可能被指定為要在四個單獨的64位元填充資料元件(四字(Q)尺寸資料元件)、八個單獨的32位元填充資料元件(雙字(D)尺寸資料元件)、十六個單獨的16位元填充資料元件(字(W)尺寸資料元件)、或三十二的單獨的8位元資料元件(位元組(B)尺寸資料元件)上進行的來源運算元。此資料類型被稱為填充資料類型或向量資料類型,且這種資料類型的運算元被稱為填充資料運算元或向量運算元。換言之,填充資料項或向量係指填充資料元件序列;且填充資料運算元或向量運算元係SIMD指令(也稱為填充資料指令或向量指令)的來源或目的運算元。
舉例而言,一種類型的SIMD指令以垂直方式來指定要在兩個來源向量運算元上進行的單一向量運算以產生具有相同數量之資料元件,且依相同資料元件順序 之相同尺寸的目的向量運算元(也被稱為結果向量運算元)。在來源向量運算元中的資料元件也被稱為來源資料元件,而在目的向量運算元中的資料元件也被稱為目的或結果資料元件。這些來源向量運算元具有相同尺寸且包含相同寬度的資料元件,且因此它們包含相同數量的資料元件。在兩個來源向量運算元中之相同位元位置中的來源資料元件形成資料元件對(也被稱為對應之資料元件;亦即,在每個來源運算元對應之資料元件位置0中的資料元件、每個來源運算元對應之資料元件位置1中的資料元件、等等)。分別在這些來源資料元件對之各者上進行由此SIMD指令所指定的運算以產生匹配數量的結果資料元件,且因此每個來源資料元件對具有對應之結果資料元件。由於運算係垂直的且由於結果向量運算元是相同尺寸,具有相同數量的資料元件,且以與來源向量運算元相同的資料元件順序來儲存結果資料元件,因此結果資料元件係在與其在來源向量運算元中的對應之來源資料元件對相同之結果向量運算元的位元位置中。除了此示範類型的SIMD指令之外,還有各種其他類型的SIMD指令(例如,其僅具有一個或具有超過兩個來源向量運算元、其以水平形式來運算、其產生具有不同尺寸的結果向量運算元、其具有不同尺寸的資料元件、及/或其具有不同的資料元件順序)。應了解目的向量運算元(或目的運算元)之詞被定義為進行由指令所指定之運算的直接結果,包括將此目的運算元儲存在位置中(使其成為暫存器或在由此 指令所指定的記憶體位址中),使得它可能被另一指令存取作為來源運算元(藉由另一指令來指定此相同位置)。
SIMD技術(如由具有包括x86、MMXTM、串流SIMD擴充(SSE)、SSE2、SSE3,SSE4.1、及SSE4.2指令之指令集之Intel® CoreTM處理器採用的技術)已在應用效能方面有顯著改善。已發行及/或出版稱為先進向量擴充(AVX)(AVX1和AVX2)並使用向量擴充(VEX)編碼架構的另一組SIMD擴充(例如,參見2011年10月之Intel®64和IA-32架構軟體開發入員手冊;及參見2011年6月之Intel®先進向量擴充編程參考)。
系統架構
第1圖繪示根據本發明之一實施例的處理器之系統架構。處理器100包含一或多個處理器核心(如處理器核心150)、預取器130、及主記憶體140。在一實施例中,可能非必要地包括下級快取(LLC)124、中級快取(MLC)122、及/或填充緩衝器120。在一實施例中,處理器係為計算系統的一部分。
處理器核心150可能實作在單積體電路晶片(或晶粒)上。此外,晶片可能包括一或多個共享及/或私用快取(LLC 124或MLC 122)、互連、記憶體控制器、或其他元件。
處理器核心150可能包括提取單元102,用以提取指令用於由處理器核心執行。可能從任何儲存裝置 (如主記憶體140及/或關於第7-9圖所述之記憶體裝置)提取指令。處理器核心150可能非必要地包括解碼單元104,用以解碼提取的指令。在實施例中,解碼單元104可能將提取的指令解碼成複數個微運算(微運算)。處理器核心150的一些實施例可能不包括解碼單元104。因此,核心150可能處理指令而不解碼它們。此外,核心150可能包括排程單元106。排程單元106可能進行關聯於儲存解碼之指令的各種操作(例如自解碼單元104接收),直到指令準備發送為止,例如,直到解碼之指令的所有來源值變成可用為止。在一實施例中,排程單元106可能排程及/或發出(或發送)解碼之指令至執行單元108用於執行。
執行單元108可能在被解碼(例如,被解碼單元104)及發送(例如,被排程單元106)之後執行發送之指令。執行單元108利用一或多個暫存器107用於執行。暫存器107可能儲存指令或資料元件以被執行用於指令。在實施例中,執行單元108可能包括多於一個執行單元,如一或多個記憶體執行單元、一或多個整數執行單元、一或多個浮點數執行單元、或其他執行單元。執行單元108可能也進行各種算術運算,如加法、減法、乘法、及/或除法,且可能包括一或多個算術邏輯單元(ALU)。在實施例中,協處理器(未顯示)可能進行連同執行單元108的各種算術運算。又,執行單元108可能亂序地執行指令。因此,在一實施例中,處理器核心150 可能是亂序處理器核心。又,每個核心150可能能夠同時執行多個執行緒(SMT或同時多執行緒)。
處理器核心150可能也包括引退單元110。引退單元110可能在執行的指令被提交之後引退它們(例如,依序)。在實施例中,執行的指令之引退可能導致處理器狀態從指令之執行被提交、被指令使用的實體暫存器被解配置、等等。
處理器核心150可能也包括上級快取(L1)112。L1 112接近於或在處理器核心150內,且係為快取階層中的最高級快取且通常儲存指令/資料元件用於在執行管線(如102-110)中執行指令。L1 112係專用於處理器核心150,即使在處理器100中有多個處理器核心。
MLC 122及LLC 124係為快取階層之下級中的快取,且它們儲存指令/資料元件以促進指令被處理器核心執行。在一實施例中,填充緩衝器120係為暫時緩衝器,用以儲存及集合資料元件用於執行。
處理器可能也包括預取器130。在指令/資料元件被處理器核心(如處理器核心150)請求之前,預取器130從MLC 122、LLC 124、及/或主記憶體140取得指令/資料元件。預取器130藉由縮短指令/資料的存取時間來加速處理器核心的執行。
快取時常增加效能而位於靠近執行單元。此外,靠近處理器之執行單元的快取一般比較大較高級快取更小且更快(例如,L1 112比MLC 122及LLC 124更小 且更快)。快取的基本原理在於快取之資料愈有可能被再使用,資料被快取就更好。通常基於區域性之原理來進行快取,這表示指令之執行在任何時間瞬間存取相對小部分的位址空間。有兩個類型的區域:時間區域性及空間區域性。時間區域性係為時間上的區域性,其表示若參考到項目,則將容易很快再次被參考。
空間區域性係為空間上的區域性。亦即,若參考到項目,則其位址靠近(即,空間上鄰近)的項目容易很快被參考。針對具有大步幅的陣列,步幅存取樣式時常呈現低空間區域性,因此如何載入這些資料元件值得進一步檢驗。
在載入資料元件中考慮空間區域性的操作
第2圖繪示根據本發明之實施例之在載入資料元件中有及沒有考慮區域性之操作的比較。在主記憶體140內,儲存矩陣A。假設針對指令,矩陣A之第一行的資料元件待被存取,即,A[0][0]、A[1][0]、A[2][0]、及A[3][0]待被執行單元執行。此外,假設每個資料元件係4位元組長且每個快取線係64位元組長。圖之左邊之參考202之後之方塊繪示本領域已知的載入,其中進行載入而不考慮所需資料元件的空間區域性。圖之右邊之參考212之後之方塊繪示根據本發明之實施例的載入,其中進行載入而考慮沒有所需資料元件的空間區域性。
當進行載入而不考慮所需資料元件的空間區 域性時,所需資料元件A[0][0]-A[3][0]依照執行需求而載入在處理器核心的暫存器107中。此外,雖然處理器核心之A[0][0]的請求造成將A[0][0]及空間上鄰近於A[0][0]的資料元件載入至L1 108的快取線202,但空間上鄰近資料元件包括A[0][1]-A[0][3]。同樣地,A[1][0]的請求造成將A[1][0]-A[1][3]載入至L1 108的快取線204,且A[2][0]及A[3][0]的請求分別造成將A[2][0]-A[2][3]及A[3][0]-A[3][3]載入至L1 108的快取線。此外,針對致能第二部分(下一線)預取之實作,多載入MLC或LLC的4個快取線(未顯示)用於矩陣A之第一行的請求載入。亦即,用於存取4*4=16位元組,使用64位元組(快取線長度)*8(在L1及MLC/LLC各有4個快取線)=512位元組快取空間及處理功率。亦即,實際上只使用快取資料中之快取的3.125%。
儘管繪示係為簡單實例,但時常發生沒有空間區域性之多個資料元件的載入,尤其是陣列具有大步幅(例如,大於64位元組)的陣列存取。任意在快取線中載入空間上鄰近之資料元件之儲存/計算資源之浪費是很明顯的。因此,本發明之實施例進行考慮所需資料元件之空間區域性的載入。
在參考212中,只在暫存器107中載入所需資料元件A[0][0]-A[3][0]。它們不被載入上級快取(L1)或MLC中,因此不佔用快取空間。非必要地,所需資料元件可能被集合在填充緩衝器(如填充緩衝器120)或下 級快取(如LLC 124)中。對參考202之方法的一個差異在於集合在填充緩衝器或LLC中僅適用於所需資料元件,且空間上鄰近的資料元件不被載入至填充緩衝器或LLC。目標載入避免在L1及/或MLC佔用快取空間/計算資源,且對接近執行單元之較小/較快快取產生更多資源增進執行的效能,因此增進處理器的效能。
在本發明之一實施例中,處理器能夠進行如參考202及212所指之兩類型之載入的操作。基於指令類型來進行不同載入操作。
第3A-B圖係為根據本發明之一實施例之繪示用於在處理器中執行之載入資料元件中考慮區域性之方法的流程圖。方法300可能由處理器(如處理器100)進行。
在參考302中,解碼指令,且指令需要複數個資料元件的輸入。複數個資料元件之各者的尺寸係小於處理器的快取線尺寸。複數個資料元件可能是陣列或向量。指令可能是專用於載入複數個資料元件而不考慮資料元件之空間區域性的指令,如指令VGATHERNS(「Vector Gather No-Spatial」之簡寫)及VMOVSTRIDENS(「Vector Move Stride No-Spatial」之簡寫)之變化,如本文以下更詳細討論。
在一實施例中,指令(例如,VMOVSTRIDENS)明定複數個資料元件之資料元件之間的步幅值。在一實施例中,步幅值係大於處理器的快取線 尺寸。在替代實施例中,指令(例如,VGATHERNSDPS)明定對應於複數個資料元件之各者之位置的索引。
在參考304中,在解碼指令之後,將複數個資料元件載入至處理器的一或多個暫存器,無須載入空間上鄰近於複數個資料元件或在處理器的上級快取(L1)中之複數個資料元件的資料元件。亦即,不為執行解碼之指令初始將任何資料元件載入至上級快取,其之執行需要複數個資料元件。在一實施例中,也不為執行解碼之指令初始將任何資料元件載入至中級快取(MLC)。
在一實施例中,如第3B圖所示,透過至少兩個步驟進行參考304中的操作。在參考308中,將複數個資料元件集合在暫時緩衝器或處理器之下級快取(LLC)中。接著在參考310中,將複數個資料元件從暫時緩衝器或LLC載入至處理器的一或多個暫存器。
載入的複數個資料元件接著被後續指令執行。請注意在實施例中,處理器能夠進行載入而不考慮空間區域性。例如,處理器可能將一個資料元件連同其空間上鄰近的資料元件載入至L1快取。在載入複數個資料元件中,解碼的指令可能使處理器將複數個資料元件連同空間上鄰近的資料元件載入至L1快取。在一實施例中,載入行為的差異取決於根據本發明之一實施例的甚麼指令被解碼,且若載入指令不明定載入不用於空間區域性資料元件,則載入將使處理器載入資料元件連同空間上鄰近的資料元件。
實作指令的虛擬碼
在一實施例中,使用兩種類型的指令以指示指令之執行需要資料元件的輸入,其中不考慮空間區域性。其中一類型的指令係用於載入複數個資料元件而在連續資料元件之間沒有固定距離(步幅),且表示為VGATHERNS。另一種類型的指令係用於以已知步幅值載入複數個資料元件,且表示為VMOVSTRIDENS。顯而易見地,指令的名稱及指令類型的版本可能以各種方式實作,且本領域之技藝者可能使用本發明之實施例內揭露的原理且產生不同指令集用於載入複數個資料元件,其中不考慮空間區域性。
第4A圖係為根據本發明之一實施例之繪示用於載入複數個資料元件而在連續資料元件之間沒有固定距離且不考慮空間區域性之指令之類型之一個實作的虛擬碼。所示之VGATHERNS指令係用於索引暫存器(vindex)為雙字組整數(表示為「D」)且從記憶體集合的資料元件之資料類型為填充單精度浮點數(表示為PS),因此是VGATHERNSDPS。索引暫存器也可能是四字組(表示為「Q」);且資料元件之資料類型可能也是PD(填充雙準確度)。
如參考402所示,VGATHERNSDPS需要數個輸入參數:目的暫存器位址(dest);索引暫存器(vindex);基本記憶體位址(mem_addr)、及遮罩暫存 器(k1)。使用基本位址(base_addr)、索引值(使用vindex的索引)、縮放值(scale)、及移位(disp)來提供基本記憶體位址。在一實施例中,明定參數mem_addr需要多個參數,如base_addr、index、scale、及disp。
在參考404中,(KL,VL)對說明在給定向量長度中有多少資料元件。例如,(4,128)表示4個單精度資料元件會適合在128位元向量長度,因此對(KL,VL)值是有效選項。
針對每個資料元件,基於遮罩暫存器的指示(例如,k1[j]==1),若欲進行載入,則NS_EM操作將所需資料載入記憶體位址中(如base_addr+SignExtend(vindex[i+31:i]*scale+disp所指)。SignExtend係用於保留vindex的正/負符號,儘管增加vindex的位元數量。請注意NS_EM只將資料元件從最後級快取載入至目的暫存器而不將資料載入在L1快取中(除非資料元件已經在L1快取中,在這情況中,從L1快取讀取資料)。若基於遮罩暫存器之指示而不進行載入,則目的暫存器仍然不改變。為每個資料元件進行參考406的操作,且基於遮罩暫存器指示將資料元件載入至目的暫存器。
透過集合操作,從記憶體集合多個資料元件。例如,若mem_addr=1000且vindex={10,220,32,8},則將把在1010、1220、1032、及1008的資料元件載入至目的暫存器(dist)中。
儘管VGATHERNS可能集合在記憶體不同位 置中的資料元件(base_addr、index、scale、disp之結合能查明記憶體中的資料元件)用於以已知步幅值存取資料元件,但可能使用不同指令。第4B圖係為根據本發明之一實施例之繪示用於以在連續資料元件之間之固定距離載入複數個資料元件且不考慮空間區域性之指令之類型之一個實作的另一虛擬碼。所示之VMOVSTRIDENSDPS指令係用於步幅值(stride)為雙字組整數(表示為「D」)且從記憶體集合的資料元件之資料類型為填充單精度浮點數(表示為PS),因此是VMOVSTRIDENSDPS。
如參考452所示,VMOVSTRIDENSDPS需要數個輸入參數:目的暫存器位址(dest);步幅(stride);基本記憶體位址(base_mem_addr)、及遮罩暫存器(k1)。參數dest及k1與VGATHERNSDPS定義相同。基本記憶體位址係為通常記憶體位址,類似於上述之mem_addr。參數stride係為儲存在來源暫存器中的純量整數值。
在參考454中,(KL,VL)對說明在給定向量長度中有多少資料元件,類似於參考404。
針對每個資料元件,基於遮罩暫存器的指示(例如,k1[j]==1),若欲進行載入,則NS_EM操作將所需資料載入記憶體位址中(如base_addr+SignExtend(stride)所指)。若基於遮罩暫存器之指示而不進行載入,則目的暫存器仍然不改變。為每個資料元件進行參考456的操作,且基於遮罩暫存器指示將資料元件載入至目 的暫存器。
示範處理器架構及資料類型
第5A圖係繪示根據本發明之實施例之示範有序管線與示範暫存器更名、亂序發出/執行管線兩者的方塊圖。第5B圖係繪示根據本發明之實施例之將包括在處理器中的有序架構核心之示範實施例與示範暫存器更名、亂序發出/執行架構核心兩者的方塊圖。第5A-B圖中的實線框繪示有序管線和有序核心,而非必要附加的虛線框繪示暫存器更名、亂序發出/執行管線和核心。假定有序態樣係亂序態樣之子集,將說明亂序態樣。
在第5A圖中,處理器管線500包括提取級502、長度解碼級504、解碼級506、分配級508、更名級510、排程(也稱為發送或發出)級512、暫存器讀取/記憶體讀取級514、執行級516、寫回/記憶體寫入級518、例外處理級522、及提交級524。
第5B圖顯示處理器核心590,包括前端單元530,耦接至執行引擎單元550,且這兩者都耦接至記憶體單元570。核心590可能是精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字(VLIW)核心、或混合或任一核心類型。作為另一種選擇,核心590可能是專用核心,例如,網路或通訊核心、壓縮引擎、協處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心、或之類。
前端單元530包括分支預測單元532,耦接至指令快取單元534,其係耦接至指令轉譯旁視緩衝器(TLB)536,其係耦接至指令提取單元538,其係耦接至解碼單元540。解碼單元540(或解碼器)可能解碼指令,並產生作為輸出的一或更多微運算、微碼進入點、微指令、其他指令、或其他控制信號,其係從原始指令解碼、或以其他方式反映原始指令、或從原始指令取得。解碼單元540可能使用各種不同機制來實作。適當機制之實例包括,但不限於查找表、硬體實作、可程式化邏輯陣列(PLA)、微碼唯讀記憶體(ROM)、等等。在一實施例中,核心590包括微碼ROM或儲存用於某些巨集指令之微碼的其他媒體(例如,在解碼單元540中或以其他方式在前端單元530內)。解碼單元540係耦接至執行引擎單元550中的更名/分配器單元552。
執行引擎單元550包括更名/分配器單元552,耦接至引退單元554及一組一或多個排程器單元556。排程器單元556代表任何數量的不同排程器,包括保留站、中央指令視窗、等等。排程器單元556係耦接至實體暫存器檔案單元558。每個實體暫存器檔案單元558代表一或多個實體暫存器檔案,其之不同者儲存一或多個不同的資料類型,如純量整數、純量浮點數、填充整數、填充浮點數、向量整數、向量浮點數、狀態(例如,指令指標,其係將被執行之下一個指令的位址)、等等。在一實施例中,實體暫存器檔案單元558包含向量暫存器單 元、寫入遮罩暫存器單元、及純量暫存器單元。這些暫存器單元可能提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。引退單元554重疊實體暫存器檔案單元558以繪示可能實作暫存器更名和亂序執行的各種方式(例如,使用重排序緩衝器和引退暫存器檔案;使用未來檔案、歷史緩衝器、和引退暫存器檔案;使用暫存器映射及暫存器池;等等)。引退單元554和實體暫存器檔案單元558係耦接至執行叢集560。執行叢集560包括一組一或多個執行單元562和一組一或多個記憶體存取單元564。執行單元562可能對各種類型的資料(例如,純量浮點數、填充整數、填充浮點數、向量整數、向量浮點數)進行各種運算(例如,移位、加法、減法、乘法)。儘管一些實施例可能包括一些專用於特定功能或功能組的執行單元,但其他實施例可能包括只有一個執行單元或全部進行所有功能的多個執行單元。排程器單元556、實體暫存器檔案單元558、和執行叢集560被顯示為可能是複數的,因為某些實施例對某些類型的資料/運算建立獨立管線(例如,純量整數管線、純量浮點數/填充整數/填充浮點數/向量整數/向量浮點數管線、及/或各具有其自己之排程器單元的記憶體存取管線、實體暫存器檔案單元、及/或執行叢集-且在獨立的記憶體存取管線之情況下,實作了某些實施例是只有此管線的執行叢集具有記憶體存取單元564)。也應了解這裡使用了獨立管線,這些管線之一或多個可能是亂序發出/執行且其餘的是有序的。
這組記憶體存取單元564係耦接至記憶體單元570,其包括耦接至資料快取單元574的資料TLB單元572,資料快取單元574耦接至第2級(L2)快取單元576。在一示範實施例中,記憶體存取單元564可能包括載入單元、儲存位址單元、及儲存資料單元,各耦接至記憶體單元570中的資料TLB單元572。指令快取單元534更耦接至記憶體單元570中的第2級(L2)快取單元576。L2快取單元576係耦接至一或多個其他級的快取且最終耦接至主記憶體。
舉例而言,示範暫存器更名、亂序發出/執行核心架構可能如下實作管線500:1)指令提取538進行提取和長度解碼級502和504;2)解碼單元540進行解碼級506;3)更名/分配器單元552進行分配級508和更名級510;4)排程器單元556進行排程級512;5)實體暫存器檔案單元558和記憶體單元570進行暫存器讀取/記憶體讀取級514;執行叢集560進行執行級516;6)記憶體單元570和實體暫存器檔案單元558進行寫回/記憶體寫入級518;7)各種單元可能包含在例外處理級522中;及8)引退單元554和實體暫存器檔案單元558進行提交級524。
核心590可能支援包括本文所述之指令的一或多個指令集(例如,x86指令集(具有已加入較新版本的一些擴充);美國加州Sunnyvale的MIPS技術之MIPS指令集;美國加州Sunnyvale的ARM股份公司之 ARM指令集(具有如NEON的可選額外的擴充))。在一實施例中,核心590包括支援填充資料指令集擴充(例如,AVX1、AVX2、及/或通用向量合適指令格式(U=0及/或U=1)的一些形式,以下敘述)的邏輯,藉此允許許多多媒體應用所使用之運算能使用填充資料來執行。
應了解核心可能支援多執行緒(執行兩個或多個平行組的操作或執行緒),且可能以各種方式來實行,包括時間切割多執行緒、同步多執行緒(其中單一實體核心提供邏輯核心給實體核心係同步多執行緒的每個執行緒)、或以上之組合(例如,時間切割提取和解碼及之後如Intel®超執行緒技術的同步多執行緒)。
儘管在亂序執行之內文中說明了暫存器更名,但應了解可能在有序架構中使用暫存器更名。儘管處理器之所示實施例也包括分開的指令和資料快取單元534/574及共享L2快取單元576,但其他實施例可能具有用於指令和資料兩者的單一內部快取,例如,第1級(L1)內部快取、或多級的內部快取。在一些實施例中,系統可能包括內部快取與在核心及/或處理器外部的外部快取之組合。另外,所有快取可能在核心及/或處理器外部。
第6圖係根據本發明之實施例之可能具有超過一個核心,可能具有整合記憶體控制器,且可能具有整合圖形之處理器600的方塊圖。第6圖中的實線框繪示具有單一核心602A、系統代理器610,一組一或多個匯流排 控制器單元616的處理器600,而非必要添加的虛線框繪示具有多個核心602A-N、在系統代理器單元610中的一組一或多個整合記憶體控制器單元614、及專用邏輯608的另一處理器600。
因此,處理器600之不同實作可能包括:1)具有為整合圖形及/或科學(產量)邏輯(其可能包括一或多個核心)之專用邏輯608、及為一或多個通用核心(例如,通用有序核心、通用亂序核心、這兩者之組合)之核心602A-N的CPU;2)具有為預期主要用於圖形及/或科學(產量)之大量專用核心之核心602A-N的協處理器;及3)具有為大量通用有序核心之核心602A-N的協處理器。於是,處理器600可能是通用處理器、協處理器或專用處理器,例如,網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高產量多重整合核心(MIC)協處理器(包括30個或更多核心)、嵌入式處理器或之類。處理器可能在一或多個晶片上實作。處理器600可能是一或多個基板的一部分及/或可能使用例如BiCMOS、CMOS、或NMOS的一些處理技術之任一者來實作在一或多個基板上。
記憶體階層包括核心內之一或多級的快取、一組或一或多個共享快取單元606、及耦接至這組整合記憶體控制器單元614的外部記憶體(未示出)。這組共享快取單元606可能包括如第2級(L2)、第3級(L3)、第4級(L4)、或其他級之快取的一或多個中級快取 (LLC)、最後一級的快取(LLC)、及/或以上之組合。儘管在一實施例中,環形為基的互連單元612互連專用邏輯608(例如,整合圖形邏輯)、這組共享快取單元606、及系統代理器單元610/整合記憶體控制器單元614,但其他實施例可能使用一些熟知的技術來互連上述單元。在一實施例中,在一或多個快取單元606與核心602A-N之間保持一致性。
在一些實施例中,一或更多核心602A-N能夠執行多執行緒。系統代理器610包括那些協調和操作核心602A-N的元件。例如,系統代理器單元610可能包括電力控制單元(PCU)及顯示單元。PCU可能是或包括調節核心602A-N及整合圖形邏輯608之電力狀態所需的邏輯和元件。顯示單元係用於驅動一或多個外部連接的顯示器。
就架構指令集而言,核心602A-N可能是同型或不同型的;亦即,核心602A-N之兩個或更多者也許能夠執行相同的指令集,而其他也許僅能夠執行指令集的子集或不同的指令集。
第7-9圖係適用於執行本文詳述之指令之示範電腦架構的方塊圖。用於膝上型電腦、桌上型電腦、手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視頻遊戲裝置、機上盒、微控制器、手機、可攜式媒體播放器、手持裝置、及各種其他電 子裝置之本領域中已知的其他系統設計和配置也可適用。一般而言,能夠合併處理器及/或如本文所揭露之其他執行邏輯之種類繁多的系統或電子裝置通常是可適用的。
現在參考第7圖,顯示的是依照本發明之一實施例的系統700之方塊圖。系統700可能包括一或多個處理器710、715,其係耦接至圖形記憶體控制器中心(GMCH)720。在第7圖中以虛線來表示額外處理器715的非必要性。
每個處理處理器可能是單一核心或可能替代地包括多個核心。處理處理器除了處理核心之外可能非必要地包括其他晶片上元件,如整合記憶體控制器及/或整合I/O控制邏輯。又,針對至少一實施例,處理元件的核心可能是多執行緒,因為它們每個核心可能包括超過一個硬體執行緒內文。
第7圖繪示GMCH 720可能耦接至記憶體740,其可能例如是動態隨機存取記憶體(DRAM)。針對至少一實施例,DRAM可能關聯於非揮發性快取。
GMCH 720可能是晶片組,或一部分的晶片組。GMCH 720可能與處理器710、715及處理器710、715與記憶體740之間的控制互動通訊。GMCH 720可能也當作在處理器710、715及系統700之其他元件之間的加速匯流排介面。針對至少一實施例,GMCH 720經由如前端匯流排(FSB)795之多點匯流排來與處理器710、715通訊。
再者,GMCH 720係耦接至顯示器745(如平板顯示器)。GMCH 720可能包括整合圖形加速器。GMCH 720更耦接至輸入/輸出(I/O)控制器中心(ICH)750,其可能用以將各種周邊裝置耦接至系統700。例如在第7圖之實施例中顯示的是外部圖形裝置760,其可能是與其他周邊裝置770一起耦接至ICH 750的分開圖形裝置。
替代地,額外或不同處理元件可能也出現在系統700中。例如,額外處理器715可能包括與處理器710相同的額外處理器、與處理器710異質或不對稱的額外處理器、加速器(例如,圖形加速器或數位信號處理(DSP)單元)、場效可編程閘陣列、或任何其他處理元件。就包括架構、微型架構、熱、功率消耗特性、等等的規制標準而言,在實體資源710、715之間會有多種差異。這些差異可能有效地在處理器710、715之間將它們顯示為不對稱和異質性的。針對至少一個實施例,各種處理器710、715可能存在於相同的晶粒封裝中。
現在參考第8圖,顯示的是依照本發明之實施例的第二系統800之方塊圖。如第8圖所示,多處理器系統800是點對點互連系統,且包括經由點對點互連850耦接的第一處理元件870和第二處理元件880。處理元件870和880之各者可能是多核心處理器,包括第一及第二處理器核心。
替代地,一或多個處理元件870、880可能是 有別於處理器的元件,如加速器或場效可編程閘陣列。
儘管顯示只有兩個處理元件870、880,但了解本發明之範疇不以此為限。在其他實施例中,一或多個額外處理元件可能出現在給定處理器中。
第一處理元件870可能更包括記憶體控制器中心(MCH)872及點對點(P-P)介面876和878。同樣地,第一處理元件880可能包括MCH 882及P-P介面886和888。處理器870、880可能使用PtP介面電路878、888經由點對點(PtP)介面850來交換資料。如第8圖所示,MCH 872和882將處理器耦接至各別記憶體(即記憶體842和記憶體844),其可能是區域附接於各別處理器之主記憶體的部分。
處理器870、880可能各使用點對點介面電路876、894、886、898經由個別PtP介面852、854來與晶片組890交換資料。晶片組890可能也經由高效能圖形介面839來與高效能圖形電路838交換資料。本發明之實施例可能設置在具有任何數量之處理核心的任何處理器內,或在第8圖之每個PtP匯流排代理器內。在一實施例中,任何處理器核心可能包括或以其他方式關聯於區域快取記憶體(未顯示)。再者,共享快取(未顯示)可能包括在兩處理器之外的任一處理器中,還經由p2p互連與處理器連接,使得若將處理器置於低功率模式中,則任一或兩處理器的區域快取資訊可能儲存於共享快取中。
第一處理元件870及第二處理元件880可能 分別經由P-P互連876、886和884耦接至晶片組890。如第8圖所示,晶片組890包括P-P介面894及898。再者,晶片組890包括介面892以將晶片組890耦接於高效能圖形引擎848。在一實施例中,匯流排849可能用以將圖形引擎848耦接至晶片組890。替代地,點對點互連849可能耦接這些元件。
接著,晶片組890可能經由介面896來耦接至第一匯流排816。在一實施例中,第一匯流排816可能是周邊元件互連(PCI)匯流排、或如PCI快捷匯流排或另一第三代I/O互連匯流排的匯流排,雖然本發明之範圍並不以此為限。
如第8圖所示,各種I/O裝置814可能與匯流排橋接器1418一起耦接至第一匯流排816,其中匯流排橋接器818將第一匯流排816耦接至第二匯流排820。在一實施例中,第二匯流排820可能是低接腳數(LPC)匯流排。在一實施例中,各種裝置可能耦接至第二匯流排820,包括例如鍵盤/滑鼠822、通訊裝置826及如磁碟機或可能包括碼830之其他大容量儲存裝置的資料儲存單元828。此外,音頻I/O 824可能耦接至第二匯流排820。請注意其他架構係可能的。例如,系統可能實作多點匯流排或其他這類架構,來取代第8圖之點對點架構。
現在參考第9圖,顯示的是依照本發明之實施例的第二更具體示範系統900之方塊圖。第8和9圖中的相同元件具有類似參考數字,且已從第9圖省略第8圖 之某些態樣以避免模糊第9圖之其他態樣。
第9圖繪示處理器870、880可能分別包括整合記憶體和I/O控制邏輯(「CL」)872和882。因此,CL 872、882包括整合記憶體控制器單元且包括I/O控制邏輯。第9圖不只繪示記憶體832、834耦接至CL 872、882,而且還繪示I/O裝置914也耦接至控制邏輯872、882。傳統I/O裝置915係耦接至晶片組890。
現在參考第10圖,所顯示的係依照本發明之實施例之SoC 1000的方塊圖。第2圖中的相似元件具有相同參考數字。而且,虛線框在更進階的SoC上是非必要的特徵。在第10圖中,互連單元1002係耦接至:包括一組一或多個核心602A-N及共享快取單元606的應用處理器1010;系統代理器單元610;匯流排控制器單元616;整合記憶體控制器單元614;可能包括整合圖形邏輯、影像處理器、音頻處理器、和視頻處理器的一組或一或更多協處理器1020;靜態隨機存取記憶體(SRAM)單元1030;直接記憶體存取(DMA)單元1032、及用於耦接至一或多個外部顯示器的顯示單元1040。在一實施例中,協處理器1020包括專用處理器,例如,網路或通訊處理器、壓縮引擎、GPGPU、高產量MIC處理器、嵌入式處理器或之類。
本文所揭露之機制的實施例可能在硬體、軟體、韌體、或上述實作方法之組合中實作。本發明之實施例可實作成執行在包含至少一處理器、儲存系統(包括揮 發性和非揮發性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置的可程式系統上的電腦程式或程式碼。
可能施用程式碼(如第8圖所示之碼830)來輸入指令以進行本文所述之功能並產生輸出資訊。可能以已知的方式來對一或更多輸出裝置施用輸出資訊。為了此應用之目的,處理系統包括任何具有處理器(例如,數位信號處理器(DSP)、微控制器、專用積體電路(ASIC)、或微處理器)之系統。
程式碼可能以高階程序或物件導向編程語言來實作以與處理系統通訊。若需要的話,程式碼也可能以組合或機器語言來實作。事實上,本文所述之機制在範圍上並不受限於任何特定編程語言。在任何情況下,語言可能是經編譯或轉譯語言。
至少一實施例之一或更多態樣可能藉由儲存在機器可讀媒體上的代表指令來實作,其表現在處理器內的各種邏輯,當指令被機器讀取時使機器製造邏輯來進行本文所述之技術。這樣的表現,稱為「IP核心」,可能儲存在有形的機器可讀媒體上並供應給各種顧客或製造廠來下載至實際產生邏輯的製造機器或處理器中。
這類機器可讀媒體可能包括,但不限於機器或裝置製造或形成之物件的非暫態有形佈置,包括如硬碟、任何型態之磁碟(包括軟碟、光碟、唯讀光碟機(CD-ROM)、可覆寫光碟(CD-RW)、及磁光碟機)、 如唯讀記憶體(ROM)的半導體裝置、如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)的隨機存取記憶體(RAM)、可抹除可程式化唯讀記憶體(EPROM)、快閃記憶體、電子可抹除可程式化唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁或光學卡、或適用於儲存電子指令之任何其他型態之媒體的儲存媒體。
因此,本發明之實施例也包括非暫態、有形的機器可讀媒體,包含指令或包含設計資料,如硬體描述語言(HDL),其定義本文所述之結構、電路、設備、處理器及/或系統特徵。上述實施例也可能係指程式產品。
在一些情況中,可能使用指令轉換器來將指令從來源指令集轉換成目標指令集。例如,指令轉換器可能轉譯(例如,使用靜態二進制轉譯、包括動態編譯的動態二進制轉譯)、模仿、模擬、或以其他方式將指令轉換成一或更多將由核心處理的其他指令。指令轉換器可能在軟體、硬體、韌體、或以上之組合中實作。指令轉換器可能在處理器上、在處理器之外、或部分在處理器上且部分在處理器外。
第11圖係根據本發明之實施例之對照於使用軟體指令轉換器來將來源指令集中的二進制指令轉換成目標指令集中的二進制指令之方塊圖。在所述之實施例中,指令轉換器係為軟體指令轉換器,儘管指令轉換器可替代地以軟體、韌體、硬體、或以上之各種組合來實作。第 11圖顯示為高階語言1102的程式可能使用x86編譯器1104來編譯以產生x86二進制碼1106,其本身可由具有至少一x86指令集核心的處理器1116執行(假設一些被編譯的指令為用於向量運算(如VGATHERNS及VMOVSTRIDENS)的指令格式)。具有至少一x86指令集核心的處理器1116表示能執行實質上與具有至少一x86指令集核心的Intel處理器有相同功能的處理器,其藉由協調地執行或以其他方式處理(1)Intel x86指令集核心之指令集的實質部分或(2)目標碼型式的應用程式或目標在具有至少一x86指令集核心的Intel處理器上執行的其他軟體,以達到大致上與具有至少一x86指令集核心的Intel處理器有相同的結果。x86編譯器1104表示可操作來產生x86二進制碼1106(例如,目標碼)的編譯器,其會連同或無須額外的連鎖處理地在具有至少一x86指令集核心的處理器1116上執行。
同樣地,第11圖顯示高階語言1102的程式可能使用其他指令集編譯器1108來編譯以產生原本就可被不具有至少一x86指令集核心的處理器1114(例如,具有執行美國加州Sunnyvale的MIPS科技之MIPS指令集及/或執行美國加州Sunnyvale的ARM科技之ARM指令集之核心的處理器)執行的其他指令集二進制碼1110。指令轉換器1112係用來將x86二進制碼1106轉成本身可能被不具有x86指令集核心的處理器1114執行的代碼。由於能轉換上述的指令轉換器難以製造,因此已轉 換的代碼不太可能與其他指令集二進位碼1110相同;然而,已轉換的代碼將完成一般操作且由其他指令集的指令組成。因此,指令轉換器1112代表軟體、韌體、硬體、或以上之組合,透過模仿、模擬或任何其他程序,允許處理器或其他不具有x86指令集處理器或核心的電子裝置能執行x86二進制碼1106。
第12A-12B圖係繪示根據本發明之實施例之通用向量合適指令格式及其指令模板的方塊圖。第12A圖係繪示根據本發明之實施例之通用向量合適指令格式及其類別A指令模板的方塊圖;而第12B圖係繪示根據本發明之實施例之通用向量合適指令格式及其類別B指令模板的方塊圖。具體來說,用於通用向量合適指令格式1200的模板係定義為類別A與類別B指令模板,這兩個都包括無記憶體存取1205指令模板及記憶體存取1220指令模板。向量合適指令格式之內容中的通用之詞係指不受制於任何具體指令集的指令格式。
儘管將敘述本發明之實施例的向量合適指令格式支援下列:具有32位元(4位元組)或64位元(8位元組)資料元件寬度(或大小)的64位元組向量運算元長度(或大小)(且因此,64位元組向量係由16個雙字組大小元件或替代地由8個四字組大小元件組成);具有16位元(2位元組)或8位元(1位元組)資料元件寬度(或大小)的64位元組向量運算元長度(或大小);具有32位元(4位元組)、64位元(8位元組)、16位 元(2位元組)、或8位元(1位元組)資料元件寬度(或大小)的32位元組向量運算元長度(或大小);及具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)、或8位元(1位元組)資料元件寬度(或大小)的16位元組向量運算元長度(或大小);但其他實施例可能支援具有更多、更少、或不同的資料元件寬度(例如,128位元(16位元組)的資料元件寬度)的更多、更少及/或不同的向量運算元大小(例如,256位元組的向量運算元)。
第12A圖中的類別A指令模板包括:1)在無記憶體存取1205指令模板內有顯示無記憶體存取、全捨入控制類型操作1210指令模板及無記憶體存取、資料轉換類型操作1215指令模板;及2)在記憶體存取1220指令模板內有顯示記憶體存取、暫時1225指令模板及記憶體存取、非暫時1230指令模板。第12B圖中的類別B指令模板包括:1)在無記憶體存取1205指令模板中有顯示無記憶體存取、寫入遮罩控制、部分捨入控制類型操作1212指令模板及無記憶體存取、寫入遮罩控制、vsize類型操作1217指令模板;及2)在記憶體存取1220指令模板中顯示記憶體存取、寫入遮罩控制1227指令模板。
通用向量合適指令格式1200包括如下依照在第12A-12B圖中所示之順序列於下方的欄位。
格式欄位1240-在此欄位中的特定值(指令格式識別符值)唯一識別向量合適指令格式,且因此在指令 流中出現為向量合適指令格式的指令。由此而論,此欄位就某種意義而言係可選的,其對於僅具有通用向量合適指令格式的指令集是非必要的。
基本操作欄位1242-其內容區別不同的基本操作。
暫存器索引欄位1244-其內容會直接地或透過位址產生來指定來源和目的運算元的位置係在暫存器中或在記憶體中。這些包括夠多位元數以從PxQ(例如,32x512、16x128、32x1024、64x1024)暫存器檔案中選擇N個暫存器。儘管在一實施例中,N可能高達三個來源與一個目的暫存器,但其他實施例可能支援更多或更少的來源與目的暫存器(例如,可能支援高達兩個來源,這些來源的其中一個也充當目的、可能支援高達三個來源,這些來源的其中一個也充當目的、可能支援高達兩個來源與一個目的)。
修改欄位1246-其內容區別出現指定記憶體存取之為通用向量指令格式的指令與出現未指定記憶體存取之指令;意即,在無記憶體存取1205指令模板與記憶體存取1220指令模板之間。記憶體存取操作讀取及/或寫入記憶體階層(在一些例子中係使用暫存器中的值來指定來源及/或目的位址),而無記憶體存取操作並非如此(例如,來源及目的都是暫存器)。儘管在一實施例中,此欄位也從三個不同的方式之間選擇來執行記憶體位址計算,但其他實施例可能支援更多、更少、或不同的方式來執行 記憶體位址計算。
擴充操作欄位1250-其內容區別除了基本操作之外,欲執行各種不同操作中的哪一個。此欄位是特定內容。在本發明之一實施例中,此欄位分成類別欄位1268、alpha欄位1252、及beta欄位1254。擴充操作欄位1250使一般操作群組能在單一指令中執行,而不是2、3或4個指令。
縮放欄位1260-其內容考慮到縮放索引欄位的內容用於記憶體位址產生(例如,使用2scale*索引+基底來產生位址)。
位移欄位1262A-其內容係用來產生部分的記憶體位址(例如,使用2scale*索引+基底+位移來產生位址)。
位移因數欄位1262B(請注意將位移欄位1262A直接並列於位移因數欄位1262B上就表示使用一或另一個)-其內容係用來產生部分的位址;指定待由記憶體存取(N)的大小所縮放的位移因數,這裡的N是記憶體存取中的位元組數量(例如,使用2scale*索引+基底+已縮放之位移來產生位址)。忽略多餘的低序位元,因此位移因數欄位的內容乘以記憶體運算元總大小(N)以產生用來計算有效位址的最終位移。處理器硬體在運轉期間會基於全運算碼欄位1274(本文所述)及資料處理欄位1254C來決定N值。位移欄位1262A與位移因數欄位1262B就某種意義而言係可選的,其不用於無記憶體存取 1205指令模板,及/或不同的實施例可能只實作其中一個或兩者皆無。
資料元件寬度欄位1264-其內容區別出使用哪一個資料元件寬度(在一些實施例中對所有指令;在其他實施例中只對一些指令)。此欄位就某種意義而言係可選的,若僅支援一種資料元件寬度及/或使用運算碼的一些態樣來支援資料元件寬度,則不需要此欄位。
寫入遮罩欄位1270-其內容在每資料元件位置基礎上控制在目的向量運算元中的資料元件位置是否反映出基本操作與擴充操作的結果。類別A指令模板支援合併寫入遮罩,而類別B指令模板則支援合併與歸零寫入遮罩。當合併時,向量遮罩使任何在目的中的元素組避免在任何操作(由基本操作與擴充操作所指定)執行期間被更新;在另一實施例中,保留目的之每個元素的舊值,其中對應的遮罩位元具有0值。反之,當歸零時,向量遮罩使任何在目的中的元素組在任何操作(由基本操作與擴充操作所指定)執行期間被歸零;在一實施例中,當對應的遮罩位元具有0值時,目的之元素就被設為0。此功能的子集係為控制所執行操作之向量長度(意即,被修改之第一個到最後一個元素的範圍)的能力;然而,所修改的元素不必是連續的。因此,寫入遮罩欄位1270允許部分的向量操作,包括載入、儲存、算術、邏輯、等等。儘管本發明之實施例係敘述寫入遮罩欄位1270的內容選擇了其中一個包含被使用之寫入遮罩的寫入遮罩暫存器(且因此寫 入遮罩欄位1270的內容間接地識別被執行的遮罩),但其他實施例反而或額外允許寫入遮罩欄位1270的內容能直接地指定被執行的遮罩。
立即欄位1272-其內容考量到指定立即值。此欄位就某種意義而言是可選的,在不支援立即值之通用向量合適格式的實作中不會出現,且在不使用立即值的指令中不會出現。
類別欄位1268-其內容區別不同類別的指令。關於第12A-B圖,此欄位的內容在類別A與類別B指令之間作選擇。在第12A-B圖中,使用圓角方形來表示出現在欄位中的特定值(例如,分別在第12A-B圖中的類別欄位1268之類別A 1268A與類別B 1268B)。
類別A的指令模板
在類別A的無記憶體存取1205指令模板例子中,alpha欄位1252被解釋為RS欄位1252A,其內容區別出哪一種不同的擴充操作類型會被執行(例如,對無記憶體存取、捨入類型操作1210與無記憶體存取、資料轉換類型操作1215指令模板分別指定捨入1252A.1與資料轉換1252A.2),而beta欄位1254區別指定類型的哪種操作會被執行。在無記憶體存取1205指令模板中,不會出現縮放欄位1260、位移欄位1262A、及位移縮放欄位1262B。
無記憶體存取指令模板-全捨入控制類型操作
在無記憶體存取全捨入控制類型操作1210指 令模板中,beta欄位1254係被解釋為捨入控制欄位1254A,其內容提供靜態捨入。儘管在本發明所述之實施例中,捨入控制欄位1254A包括抑制所有浮點數例外(SAE)欄位1256與捨入操作控制欄位1258,但其他實施例可能支援可能將這兩個概念編碼成相同的欄位或僅有其中一個或另一個這些概念/欄位(例如,可能僅有捨入操作控制欄位1258)。
SAE欄位1256-其內容區別是否去能例外事件報告;當SAE欄位1256的內容指示啟動抑制時,已知指令不會報告任何種類的浮點數例外旗標且不啟動任何浮點數例外的處理器。
捨入操作控制欄位1258-其內容區別捨入操作群組中的哪一個操作會被執行(例如,無條件進入、無條件捨去、化整為零和四捨五入)。因此,捨入操作控制欄位1258考量到改變每指令基礎上的捨入模式。在本發明之一實施例中,其中處理器包括用來規定捨入模式的控制暫存器,捨入操作控制欄位1250的內容會蓋過此暫存器值。
無記憶體存取指令模板-資料轉換類型操作
在無記憶體存取資料轉換類型操作1215指令模板中,beta欄位1254被解釋為資料轉換欄位1254B,其內容區別哪一種資料轉換會被執行(例如,無資料轉換、攪和、廣播)。
在類別A的記憶體存取1220指令模板例子 中,alpha欄位1252被解釋為逐出暗示欄位1252B,其內容區別哪一個逐出暗示會被使用(在第12A圖中,對記憶體存取、暫時1225指令模板與記憶體存取、非暫時1230指令模板分別規定暫時1252B.1與非暫時1252B.2),而beta欄位1254被解釋為資料處理欄位1254C,其內容區別哪一個資料處理操作(也稱作基元)會被執行(例如,無處理;廣播;來源之上轉換;及目的之下轉換)。記憶體存取1220指令模板包括縮放欄位1260,及選擇性地包括位移欄位1262A或位移縮放欄位1262B。
向量記憶體指令利用轉換支援來進行從記憶體載入向量及將向量存入記憶體。如同正常的向量指令,向量記憶體指令以逐資料元件的方式從/至記憶體傳輸資料,而且實際上傳輸的元素會被選為寫入遮罩的向量遮罩內容所指示。
記憶體存取指令模板-暫時
暫時資料很可能是快到能從快取中再被使用的資料。然而,這只是一個建議,且不同的處理器可能以不同方式來實作,包括完全地忽略這個建議。
記憶體存取指令模板-非暫時
非暫時資料不太可能是快到能從第1級快取中再被使用的資料且應該優先逐出。然而,這只是一個建議,且不同的處理器可能以不同方式來實作,包括完全地忽略這個建議。
類別B的指令模板
在類別B的指令模板例子中,alpha欄位1252被解釋為寫入遮罩控制(Z)欄位1252C,其內容區別是否應該合併或歸零被寫入遮罩欄位1270控制的寫入遮罩。
在類別B的無記憶體存取1205指令模板例子中,部分的beta欄位1254被解釋為RL欄位1257A,其內容區別哪一種擴充操作類型會被執行(例如,對無記憶體存取、寫入遮罩控制、部分捨入控制類型操作1212指令模板與無記憶體存取、寫入遮罩控制、VSIZE類型操作1217指令模板分別規定捨入1257A.1與向量長度(VSIZE)1257A.2),而其餘的beta欄位1254區別哪一種指定類型的操作會被執行。在無記憶體存取1205指令模板中,不會出現縮放欄位1260、位移欄位1262A、及位移縮放欄位1262B。
在無記憶體存取、寫入遮罩控制、部分捨入控制類型操作1210指令模板中,其餘的beta欄位1254被解釋為捨入操作欄位1259A且例外事件報告會失效(已知指令不會報告任何種類的浮點數例外旗標且不啟動任何浮點數例外的處理器)。
捨入操作控制欄位1259A-正如捨入操作控制欄位1258,其內容區別捨入操作群組中的哪一個操作會被執行(例如,無條件進入,無條件捨去,化整為零和四捨五入)。因此,捨入操作控制欄位1259A考量到改變每指令基礎上的捨入模式。在本發明之一實施例中,其中處 理器包括用來規定捨入模式的控制暫存器,捨入操作控制欄位1250的內容蓋過此暫存器值。
在無記憶體存取、寫入遮罩控制、VSIZE類型操作1217指令模板中,其餘的beta欄位1254被解釋為向量長度欄位1259B,其內容區別會進行哪一個資料向量長度(例如,128、256、或512個位元組)。
在類別B的記憶體存取1220指令模板例子中,部分的beta欄位1254被解釋為廣播欄位1257B,其內容區別是否會執行廣播類型資料處理操作,而其餘的beta欄位1254被解釋為向量長度欄位1259B。記憶體存取1220指令模板包括縮放欄位1260,及選擇性地包括位移欄位1262A或位移縮放欄位1262B。
關於通用向量合適指令格式1200,顯示全運算碼欄位1274包括格式欄位1240、基本操作欄位1242、及資料元件寬度欄位1264。儘管顯示一實施例中的全運算碼欄位1274包括所有這些欄位,但在不支援所有欄位的實施例中,全運算碼欄位1274包括比所有這些欄位還少的欄位。全運算碼欄位1274提供運算碼(opcode)。
擴充操作欄位1250、資料元件寬度欄位1264、及寫入遮罩欄位1270允許在通用向量合適指令格式的每個指令基礎上規定這些特徵。
結合寫入遮罩欄位與資料元件寬度欄位產生類型化指令,其使遮罩能基於不同的資料元件寬度來應用。
在類別A與類別B中發現的各種指令模板在不同情況下有幫助。在本發明之一些實施例中,不同處理器或處理器內的不同核心可能僅支援類別A、僅支援類別B、或支援這兩種類別。例如,適用於通用計算的高效能通用亂序核心可能僅支援類別B,主要適用於圖形及/或科學(生產量)計算的核心可能僅支援類別A,而適用於兩者的核心可能支援這兩種類別(當然,具有來自兩種類別之一些混合的模板和指令的核心,但並非來自兩種類別之所有模板和指令都在本發明之範圍內)。而且,單一處理器可能包括多個核心,所有核心支援相同類別或其中有不同核心支援不同類別。例如,在具有單獨圖形和通用核心的處理器中,主要用於圖形及/或科學計算的其中一個圖形核心可能僅支援類別A,而一或多個通用核心可能是具有亂序執行和用於通用計算的暫存器更名之高效能通用核心,其僅支援類別B。不具有單獨圖形核心的另一處理器可能包括一或多個通用有序或亂序核心,其支援類別A與類別B兩者。當然,在本發明之不同實施例中,來自一類別的特徵亦可能實作在其他類別中。用高階語言所編寫的程式將被編譯(例如,及時編譯或靜態地編譯)成各種不同的可執行形式,包括:1)僅具有用於執行的目標處理器所支援之類別之指令的形式;或2)具有使用所有類別之不同指令組合來編寫之替代常式並具有選擇常式以基於由目前正在執行代碼的處理器所支援的指令來執行的控制流程碼之形式。
第13A-D圖係繪示根據本發明之實施例之示範專用向量合適指令格式的方塊圖。第13圖顯示專用向量合適指令格式1300,就某種意義而言其係為特定的,其規定位置、大小、解釋、及欄位順序,以及一些欄位的值。可能使用專用向量合適指令格式1300來擴充x86指令集,因此有些欄位會類似或等同於在現存之x86指令集及其擴充(例如,AVX)中使用的欄位。這個格式依然符合具有擴充之現存的x86指令集之前置編碼欄位、實際運算碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位、及立即欄位。說明了第12圖之欄位映射到的第13圖之欄位。
應了解雖然本發明之實施例為了說明而在通用向量合適指令格式1200之上下文中說明關於專用向量合適指令格式1300,但除了所請求之範圍外,本發明並不受限於專用向量合適指令格式1300。例如,通用向量合適指令格式1200考量各種可能大小用於各種欄位,而專用向量合適指令格式1300係顯示為具有特定大小的欄位。藉由特定實例,儘管顯示資料元件寬度欄位1264在專用向量合適指令格式1300中是一個位元欄位,但本發明不以此為限(意即,通用向量合適指令格式1200考量其他大小的資料元件寬度欄位1264)。
通用向量合適指令格式1200包括如下依照在第13A圖中所示之順序列於下方的欄位。
EVEX前置(位元組0-3)1302-被編碼成四位 元組格式。
格式欄位1240(EVEX位元組0,位元[7:0]-第一位元組(EVEX位元組0)是格式欄位1240且內含0x62(用來區別本發明之一實施例中的向量合適指令格式之唯一值)。
第二-四個位元組(EVEX位元組1-3)包括一些提供特定能力的位元欄位。
REX欄位1305(EVEX位元組1,位元[7-5]-由EVEX.R位元欄位(EVEX位元組1,位元[7]-R)、EVEX.X位元欄位(EVEX位元組1,位元[6]-X),及1257BEX位元組1,位元[5]-B)所組成。EVEX.R、EVEX.X、及EVEX.B位元欄位提供與對應之VEX位元欄位相同的功能性,且使用1補數形式來編碼,意即,將ZMMO編碼成1211B、將ZMM15編碼成0000B。如本領域所知悉,指令的其他欄位會編碼暫存器索引的最低三位元(rrr、xxx、及bbb),如此可能藉由增加EVEX.R、EVEX.X、及EVEX.B來形成Rrrr、Xxxx、及Bbbb。
REX’欄位1210-這是REX’欄位1210之第一部分且是EVEX.R’位元欄位(EVEX位元組1,位元[4]-R’),其用來編碼最高16或最低16的擴充32暫存器組。在本發明之一實施例中,此位元與如下面指出的其他位元係儲存成位元反轉的格式,以區別出(在熟知的x8632位元模式中)BOUND指令,其實際運算碼位元組是62,但在MOD R/M欄位中(下面所述)不接受在MOD 欄位中的11值;本發明之其他實施例不會以反轉格式儲存此位元與下面指出的其他位元。1值係用來編碼最低的16個暫存器。換言之,R’Rrrr係藉由結合EVEX.R’、EVEX.R、及其他欄位的其他RRR來形成。
運算碼映射欄位1315(EVEX位元組1,位元[3:0]-mmmm)-其內容編碼隱含的引導運算碼位元組(OF、OF 38、或OF 3)。
資料元件寬度欄位1264(EVEX位元組2,位元[7]-W)-係以符號EVEX.W來表示。EVEX.W係用來定義資料型態的粒度(大小)(不是32位元的資料元件就是64位元的資料元件)。
EVEX.vvvv 1320(EVEX位元組2,位元[6:3]-vvv)-EVEX.vvvv的作用可能包括下列:1)EVEX.vvvv以反轉(1補數)形式來編碼所指定的第一來源暫存器運算元,且對具有2或多個來源運算元的指令皆有效;2)EVEX.vvvv對某個向量偏移以1補數形式來編碼所指定的目的暫存器運算元;或3)EVEX.vvvv不編碼任何運算元,此欄位被保留且應包含1111b。因此,EVEX.vvvv欄位1320將所儲存之第一來源暫存器指示符之4個低序位元編碼成反轉(1補碼)形式。基於指令,使用額外不同的EVEX位元欄位來將指示符大小擴充至32個暫存器。
EVEX.U 1268類別欄位(EVEX位元組2,位元[2]-U)-若EVEX.U=0,則表示類別A或EVEX.U0;若 EVEX.U=1,則表示類別B或EVEX.U1。
前置編碼欄位1325(EVEX位元組2,位元[1:0]-pp)-提供額外的位元用於基本操作欄位。除了對EVEX前置格式的傳統SSE指令提供支援,也具有緊密SIMD前置的優點(而不需要一位元組來表示SIMD前置,EVEX前置僅需要2位元)。在一實施例中,為了支援使用為傳統格式與EVEX前置格式的SIMD前置(66H、F2H、F3H)之傳統SSE指令,這些傳統SIMD前置會被編碼入SIMD前置編碼欄位中;且在提供到解碼器的PLA之前,在運轉時間時展開到傳統SIMD前置(因此PLA能執行這些傳統指令之傳統與EVEX格式而不需修改)。雖然較新的指令可直接使用EVEX前置編碼欄位的內容作為運算碼擴充,但某些實施例為了一致性會以類似方式來擴充,可是要考量到這些傳統SIMD前置所規定的不同意思。另一實施例可能重設計PLA來支援2位元SIMD前置編碼,因而不需要擴充。
Alpha欄位1252(EVEX位元組3,位元[7]-EH;也稱作EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制、及EVEX.N;也以α來說明)-如先前所述,此欄位是特定的內容。
Beta欄位1254(EVEX位元組3,位元[6:4]-SSS;也稱作EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;也以βββ來說明)-如先前所述,此欄位是特定的內容。
REX’欄位1210-這是REX’欄位之餘數且是EVEX.V’位元欄位(EVEX位元組3,位元[3]-V’),其可能用來編碼最高16或最低16的擴充32暫存器組。此位元係儲存成位元反轉的格式。使用1值來編碼最低的16個暫存器。換言之,V’VVVV係藉由結合EVEX.V’、EVEX.vvvv來形成。
寫入遮罩欄位1270(EVEX位元組3,位元[2:0]-kkk)-其內容指定在寫入遮罩暫存器中的暫存器之索引,如先前所述。在本發明之一實施例中,特定值EVEX.kkk=000具有意謂著沒有對特定指令使用寫入遮罩的特殊行為(此可能以各種方式來實作,包括使用固線式連至所有1的寫入遮罩或繞過遮罩硬體的硬體)。
實際運算碼欄位1330(位元組4)也稱作運算碼位元組。部分的運算碼係在這個欄位中規定。
MOD R/M欄位1340(位元組5)包括MOD欄位1342、Reg欄位1344、及R/M欄位1346。如先前所述,MOD欄位1342的內容區別記憶體存取與非記憶體存取操作。Reg欄位1344的作用能概括為兩種情況:編碼目的暫存器運算元或來源暫存器運算元、或視為運算碼擴充且不用來編碼任何指令運算元。R/M欄位1346的作用可能包括下列:編碼參考記憶體位址的指令運算元、或編碼目的暫存器運算元或來源暫存器運算元。
縮放、索引、基底(SIB)位元組(位元組6)-如先前所述,縮放欄位1250的內容係用來產生記憶 體位址。SIB.xxx 1354與SIB.bbb 1356-之前已經提到這些欄位的內容係關於暫存器索引Xxxx與Bbbb。
位移欄位1262A(位元組7-10)-當MOD欄位1342內含10時,位元組7-10是位移欄位1262A,且其作用如同傳統32位元位移(位移32)且以位元組大小來運作。
位移因數欄位1262B(位元組7)-當MOD欄位1342內含01時,位元組7是位移因數欄位1262B。此欄位的位置係與傳統x86指令集8位元位移(位移8)的位置相同,其以位元組大小來運作。由於位移8是有號擴充,因此會只在-128與127位元組偏移量之間定址;就64位元組快取線而言,位移8使用8位元,其只會設成四個實際有用的值-128、-64、0、及64;由於通常需要較大的範圍,故使用位移32;然而,位移32需要4位元組。相對於位移8與位移32,位移因數欄位1262B重新詮釋了位移8;當使用位移因數欄位1262B時,實際位移會由乘以記憶體運算元存取的大小(N)之位移因數欄位之內容所決定。這類型的位移係稱作位移8*N。這減少了平均指令長度(用來位移但具有大上許多範圍的單一位元組)。這樣的壓縮位移係基於假設有效的位移是記憶體存取大小的倍數,因此,不需要編碼位址偏移量之多餘的低序位元。換言之,位移因數欄位1262B取代了傳統x86指令集8位元位移。因此,會以與x86指令集8位元位移的相同方式來編碼(故不改變ModRM/SIB編碼規則)位移 因數欄位1262B,只有將位移8超載至位移8*N例外。換言之,沒有改變編碼規則或編碼長度,而只是改變硬體所詮釋的位移值(其需要以記憶體運算元的大小來縮放位移以獲得逐位元組位址偏移量)。
立即值欄位1272係如先前所述來運作。
全運算碼欄位
第13B圖係繪示根據本發明之一實施例之組成全運算碼欄位1274的專用向量合適指令格式1300之欄位的方塊圖。具體來說,全運算碼欄位1274包括格式欄位1240、基本操作欄位1242、及資料元件寬度(W)欄位1264。基本操作欄位1242包括前置編碼欄位1325、運算碼映射欄位1315、及實際運算碼欄位1330。
暫存器索引欄位
第13C圖係繪示根據本發明之一實施例之組成暫存器索引欄位1244的專用向量合適指令格式1300之欄位的方塊圖。具體來說,暫存器索引欄位1244包括REX欄位1305、REX’欄位1310、MODR/M.reg欄位1344、MODR/M.r/m欄位1346、VVVV欄位1320、xxx欄位1354、及bbb欄位1356。
擴充操作欄位
第13D圖係繪示根據本發明之一實施例之組成擴充操作欄位1250的專用向量合適指令格式1300之欄位的方塊圖。當類別(U)欄位1268包含0時,表示EVEX.U0(類別A 1268A);當包含1時,表示EVEX.U1 (類別B 1268B)。當U=0且MOD欄位1342包含11時(表示無記憶體存取操作),alpha欄位1252(EVEX位元組3,位元[7]-EH)被解釋為rs欄位1252A。當rs欄位1252A包含1(捨入1252A.1)時,beta欄位1254(EVEX位元組3,位元[6:4]-SSS)被解釋為捨入控制欄位1254A。捨入控制欄位1254A包括一個位元SAE欄位1256和兩個位元捨入操作欄位1258。當rs欄位1252A包含0(資料轉換1252A.2)時,beta欄位1254(EVEX位元組3,位元[6:4]-SSS)被解釋為三個位元資料轉換欄位1254B。當U=0且MOD欄位1342包含00、01、或10時(表示記憶體存取操作),alpha欄位1252(EVEX位元組3,位元[7]-EH)被解釋為逐出暗示(EH)欄位1252B且beta欄位1254(EVEX位元組3,位元[6:4]-SSS)被解釋為三個位元資料處理欄位1254C。
當U=1時,alpha欄位1252(EVEX位元組3,位元[7]-EH)被解釋為寫入遮罩控制(Z)欄位1252C。當U=1且MOD欄位1342包含11時(表示無記憶體存取操作),部分的beta欄位1254(EVEX位元組3,位元[4]-S0)被解釋為RL欄位1257A;當包含1(捨入1257A.1)時,其餘的beta欄位1254(EVEX位元組3,位元[6-5]-S2-1)被解釋為捨入操作欄位1259A,而當RL欄位1257A包含0(VSIZE 1257.A2)時,其餘的beta欄位1254(EVEX位元組3,位元[6-5]-S2-1)被解釋為向量長度欄位1259B(EVEX位元組3,位元[6-5]-L1-0)。 當U=1且MOD欄位1342包含00、01、或10時(表示記憶體存取操作),beta欄位1254(EVEX位元組3,位元[6:4]-SSS)被解釋為向量長度欄位1259B(EVEX位元組3,位元[6-5]-L1-0)和廣播欄位1257B(EVEX位元組3,位元[4]-B)。
第14圖係根據本發明之一實施例之暫存器架構1400的方塊圖。在所述之實施例中,有32個512位元寬的向量暫存器1410;這些暫存器被引用為zmm0至zmm31。最低16zmm暫存器的低序256位元係覆蓋在暫存器ymm0-16上。最低16zmm暫存器的低序128位元(ymm暫存器的低序128位元)係覆蓋在暫存器xmm0-15上。專用向量合適指令格式1300在如下表中所示的這些覆蓋暫存器檔案上操作。
換言之,向量長度欄位1259B在最大長度與一或多個其他較短長度之間作選擇,這裡的每個上述較短長度係為前面長度之長度的一半;且不包括向量長度欄位1259B的指令模板會在最大向量長度上操作。再者,在一實施例中,專用向量合適指令格式1300的類別B指令模板係在填充或純量單/雙精度浮點數資料和填充或純量整數資料上操作。純量操作係執行在zmm/ymm/xmm暫存器中的最低序資料元件位置上的操作;高序資料元件位置依據實施例而處於在指令或歸零之前的位置。
寫入遮罩暫存器1415-在所述之實施例中,有8個寫入遮罩暫存器(k0至k7),每個大小為64位元。在另一實施例中,寫入遮罩暫存器1415的大小為16位元。如之前所述,在本發明之一實施例中,向量遮罩暫存器k0不能作為寫入遮罩;當編碼通常指示出k0係用於寫入遮罩時,便選擇0xFFFF的固線式寫入遮罩,有效地禁能對此指令的寫入遮罩。
通用暫存器1425-在所述之實施例中,有16個64位元的通用暫存器,其與現存之x86定址模式一起使用以定址記憶體運算元。這些暫存器所引用的名稱為RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15。
純量浮點堆疊暫存器檔案(x87堆疊)1445,於其上堆疊MMX填充整數浮點數暫存器檔案1450-在所述之實施例中,x87堆疊係為8元素堆疊,用來使用x87 指令集擴充對32/64/80位元浮點數資料執行純量浮點數操作;而MMX暫存器係用來對64位元填充整數資料進行操作,以及對在MMX與XMM暫存器之間進行的一些操作保持運算元。
本發明之其他實施例可能使用較寬或較窄的暫存器。另外,本發明之另一實施例可能使用更多、更少、或不同的暫存器檔案和暫存器。
第15A-B圖係繪示更具體之示範有序核心架構的方塊圖,其核心會是晶片中的多個邏輯方塊之其一者(包括相同類型及/或不同類型的其他核心)。邏輯方塊依據應用程式透過高頻寬互連網路(例如,環形網路)來與一些固定功能邏輯、記憶體I/O介面、及其他必要I/O邏輯通訊。
第15A圖係根據本發明之實施例之單一處理器核心連同其連接單晶片互連網路1502的連線與其第2級(L2)快取1504的區域子集之方塊圖。在一實施例中,指令解碼器1500支援具有填充資料指令集擴充的x86指令集。L1快取1506允許將快取記憶體低潛時地存取至純量和向量單元。儘管在一(為了簡化設計的)實施例中,純量單元1508和向量單元1510使用單獨暫存器組(分別為純量暫存器1512和向量暫存器1514),且傳輸於其間的資料被寫入至記憶體而接著從第1級(L1)快取1506讀回,但本發明之其他實施例可能使用不同的方法(例如,使用單一暫存器組或包括一通訊路徑,其允許資 料將在沒被寫入和讀回的情況下傳輸於這兩個暫存器檔案之間)。
L2快取1504的區域子集係為部分的全域L2快取,其分成單獨的區域子集,每個處理器核心一個。每個處理器核心具有直接存取路徑至自己的L2外取之區域子集1504。處理器核心所讀取的資料係儲存在其L2快取子集1504中且能與存取其自己區域L2快取子集之其他處理器核心並行地快速存取。處理器核心所寫入的資料係儲存在其自己的L2快取子集1504中且若需要的話會從其他子集清除。環形網路確保共享資料的一致性。環形網路係為雙向的以允許如處理器核心、L2快取及其他邏輯方塊的代理器能在晶片內彼此通訊。每個環形資料路徑在每個方向上係為1012位元寬。
第15B圖係根據本發明之實施例之第15A圖中的處理器核心之一部分的分解圖。第15B圖包括L1快取1504之L1資料快取1506A部分、以及關於向量單元1510和向量暫存器1514的更多細節。具體來說,向量單元1510係16寬的向量處理單元(VPU)(參見16寬的ALU 1528),其執行整數、單精度浮點數、及雙精度浮點數指令之一或更多者。VPU以攪和單元1520來支援攪和暫存器輸入、以數字轉換單元1522A-B來支援數字轉換、且以複製單元1524來支援複製記憶體輸入。寫入遮罩暫存器1526允許預測所得之向量寫入。
以上已說明,本發明之實施例可能包括各種 步驟。步驟可能以可能用來使通用或專用處理器執行步驟的機器可執行指令來具體化。替代地,這些步驟可能由包含用於執行步驟的固線式邏輯的特定硬體元件、或由程式化電腦元件與定製硬體元件之任何組合執行。
本發明之元件可能也提供作為電腦程式產品,其可能包括具有儲存於其上之指令的機器可讀媒體,其可能用以編程電腦(或其他電子裝置)以進行處理。機器可讀媒體可能包括但不限於軟碟、磁盤、光碟、CD-ROM、及磁光碟、ROM、RAM、EPROM、EEPROM、磁性或光學卡、傳播媒體或適用於儲存電子指令之其他類型的媒體/機器可讀媒體。例如,本發明可能被下載作為電腦程式產品,其中程式可能藉由經由通訊連結(例如,數據機或網路連線)之在載波或其他傳播媒體中具體化的資料信號從遠端電腦(例如,伺服器)傳送至請求電腦(例如,客戶端)。
示範實施例包括載入資料元件的一種處理器,包含上級快取及至少一處理器核心,耦接至上級快取,包括一或多個暫存器及複數個指令處理級。級包括解碼器單元,用以解碼需要複數個資料元件之輸入的指令,其中複數個資料元件之各者的尺寸係小於處理器的快取線尺寸、及執行單元,用以將複數個資料元件載入至一或多個暫存器,而無須載入空間上鄰近於複數個資料元件或在上級快取中之複數個資料元件的資料元件。
在一些實施例中,載入複數個資料元件係用 以將複數個資料元件集合在暫時緩衝器中及將複數個資料元件從暫時緩衝器載入至一或多個暫存器。
在一些實施例中,載入複數個資料元件係用以將複數個資料元件集合在處理器的下級快取中及將複數個資料元件從下級快取載入至一或多個暫存器。
在一些實施例中,指令係特別用於執行資料元件而不考慮空間區域性。在那些實施例中,指令可能指定在複數個資料元件之資料元件之間的步幅值。步幅值可能大於處理器的快取線尺寸。在那些實施例中,指令可能指定對應於複數個資料元件之各者之位置的索引。
示範實施例包括用於在處理器中載入資料元件的方法。方法包括解碼指令,其中指令需要複數個資料元件之輸入,其中複數個資料元件之各者的尺寸係小於處理器的快取線尺寸。方法更包括在解碼該指令之後,將複數個資料元件載入至處理器的一或多個暫存器用於執行,而無須載入空間上鄰近於複數個資料元件或在處理器的上級快取中之複數個資料元件的資料元件。
在一些實施例中,將複數個資料元件載入至一或多個暫存器包括將複數個資料元件集合在暫時緩衝器中及將複數個資料元件從暫時緩衝器載入至一或多個暫存器。
在一些實施例中,將複數個資料元件載入至一或多個暫存器包括將複數個資料元件集合在處理器的下級快取中及將複數個資料元件從下級快取載入至一或多個 暫存器。
在一些實施例中,指令係特別用於執行資料元件而不考慮空間區域性。在那些實施例中,指令可能指定在複數個資料元件之資料元件之間的步幅值。步幅值可能大於處理器的快取線尺寸。在那些實施例中,指令可能指定對應於複數個資料元件之各者之位置的索引。
示範實施例包括一種電腦系統,其載入資料元件。電腦系統包含括用於儲存指令的記憶體及處理器。處理器包括上級快取及至少一處理器核心,耦接至上級快取,包括一或多個暫存器及複數個指令處理級。複數個指令處理級包括解碼器單元,用以解碼指令,其中指令需要複數個資料元件之輸入,其中複數個資料元件之各者的尺寸係小於處理器的快取線尺寸、及執行單元,配置以將複數個資料元件載入至一或多個暫存器,而無須載入空間上鄰近於複數個資料元件或在處理器核心之上級快取中之複數個資料元件的資料元件。
在一些實施例中,將複數個資料元件載入至一或多個暫存器包括將複數個資料元件集合在暫時緩衝器中及將複數個資料元件從下級快取載入至一或多個暫存器。
遍及此詳細說明,為了解說之目的,提出許多具體細節以提供本發明之全面了解。然而,本領域之技藝者將顯而易見無需這些具體細節之一些者可能實作本發明。在某些實例中,未詳盡說明熟知結構及功能以免模糊 本發明之主體。藉此,應就接下來的申請專利範圍方面來認定本發明之範疇及精神。
100‧‧‧處理器
150‧‧‧處理器核心
130‧‧‧預取器
140‧‧‧主記憶體
124‧‧‧下級快取
122‧‧‧中級快取
120‧‧‧填充緩衝器
102‧‧‧提取單元
104‧‧‧解碼單元
106‧‧‧排程單元
108‧‧‧執行單元
107‧‧‧暫存器
110‧‧‧引退單元
112‧‧‧上級快取

Claims (20)

  1. 一種處理器,其載入資料元件,該處理器包含:上級快取;及至少一處理器核心,耦接至該上級快取,包括一或多個暫存器及複數個指令處理級:解碼器單元,用以解碼需要複數個資料元件之輸入的指令,其中該複數個資料元件之各者的尺寸係小於該處理器的快取線尺寸;及執行單元,用以將該複數個資料元件載入至該一或多個暫存器,而無須載入空間上鄰近於該複數個資料元件或在該上級快取中之該複數個資料元件的資料元件。
  2. 如申請專利範圍第1項所述之處理器,其中該載入該複數個資料元件係用以:將該複數個資料元件集合在暫時緩衝器中;及將該複數個資料元件從該暫時緩衝器載入至該一或多個暫存器。
  3. 如申請專利範圍第1項所述之處理器,其中該載入該複數個資料元件係用以:將該複數個資料元件集合在該處理器的下級快取中;及將該複數個資料元件從該下級快取載入至該一或多個暫存器。
  4. 如申請專利範圍第1項所述之處理器,其中該指令係特別用於執行資料元件而不考慮空間區域性。
  5. 如申請專利範圍第4項所述之處理器,其中該指令指定在該複數個資料元件之資料元件之間的步幅值。
  6. 如申請專利範圍第5項所述之處理器,該步幅值係大於該處理器的快取線尺寸。
  7. 如申請專利範圍第4項所述之處理器,其中該指令指定對應於該複數個資料元件之各者之位置的索引。
  8. 一種用於在處理器中載入資料元件的方法,包含:解碼一指令,其中該指令需要複數個資料元件之輸入,其中該複數個資料元件之各者的尺寸係小於該處理器的快取線尺寸;在解碼該指令之後,將該複數個資料元件載入至該處理器的一或多個暫存器用於執行,而無須載入空間上鄰近於該複數個資料元件或在該處理器的上級快取中之該複數個資料元件的資料元件。
  9. 如申請專利範圍第8項所述之方法,其中將該複數個資料元件載入至該一或多個暫存器包含:將該複數個資料元件集合在暫時緩衝器中;及將該複數個資料元件從該暫時緩衝器載入至該一或多個暫存器。
  10. 如申請專利範圍第8項所述之方法,其中將該複數個資料元件載入至該一或多個暫存器包含:將該複數個資料元件集合在該處理器的下級快取中;及將該複數個資料元件從該下級快取載入至該一或多個 暫存器。
  11. 如申請專利範圍第8項所述之方法,其中該指令係特別用於執行資料元件而不考慮空間區域性。
  12. 如申請專利範圍第11項所述之方法,其中該指令指定在該複數個資料元件之資料元件之間的步幅值。
  13. 如申請專利範圍第12項所述之方法,其中該步幅值係大於該處理器的快取線尺寸。
  14. 如申請專利範圍第11項所述之方法,其中該指令指定對應於該複數個資料元件之各者之位置的索引。
  15. 一種電腦系統,其載入資料元件,該電腦系統包含:記憶體,用於儲存指令;處理器,包括:上級快取;至少一處理器核心,耦接至該上級快取,包括一或多個暫存器及複數個指令處理級:解碼器單元,用以解碼指令,其中該指令需要複數個資料元件之輸入,其中該複數個資料元件之各者的尺寸係小於該處理器的快取線尺寸;及執行單元,配置以將該複數個資料元件載入至該一或多個暫存器,而無須載入空間上鄰近於該複數個資料元件或在該處理器核心之該上級快取中之該複數個資料元件的資料元件。
  16. 如申請專利範圍第15項所述之電腦系統,其中該 載入該複數個資料元件係用以:將該複數個資料元件集合在暫時緩衝器中;及將該複數個資料元件從該暫時緩衝器載入至該一或多個暫存器。
  17. 如申請專利範圍第15項所述之電腦系統,其中該載入該複數個資料元件係用以:將該複數個資料元件集合在該電腦系統的下級快取中;及將該複數個資料元件從該下級快取載入至該一或多個暫存器。
  18. 如申請專利範圍第15項所述之電腦系統,其中該指令係特別用於執行資料元件而不考慮空間區域性。
  19. 如申請專利範圍第18項所述之電腦系統,其中該指令指定在該複數個資料元件之資料元件之間的步幅值。
  20. 如申請專利範圍第19項所述之電腦系統,該步幅值係大於該電腦系統的快取線尺寸。
TW104136669A 2014-12-11 2015-11-06 考慮用於執行之載入資料元件中的空間區域性之裝置和方法 TWI622879B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/567,602 US9811464B2 (en) 2014-12-11 2014-12-11 Apparatus and method for considering spatial locality in loading data elements for execution
US14/567,602 2014-12-11

Publications (2)

Publication Number Publication Date
TW201636851A true TW201636851A (zh) 2016-10-16
TWI622879B TWI622879B (zh) 2018-05-01

Family

ID=56107894

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104136669A TWI622879B (zh) 2014-12-11 2015-11-06 考慮用於執行之載入資料元件中的空間區域性之裝置和方法

Country Status (9)

Country Link
US (1) US9811464B2 (zh)
EP (1) EP3230852B1 (zh)
JP (1) JP2018502364A (zh)
KR (1) KR102585780B1 (zh)
CN (1) CN107111554B (zh)
BR (1) BR112017010005A2 (zh)
SG (1) SG11201703912VA (zh)
TW (1) TWI622879B (zh)
WO (1) WO2016093943A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170269935A1 (en) * 2011-09-26 2017-09-21 Elmoustapha Ould-Ahmed-Vall Instruction and logic to provide vector loads and stores with strides and masking functionality
US10685290B2 (en) * 2015-12-29 2020-06-16 International Business Machines Corporation Parameter management through RDMA atomic operations
US10262721B2 (en) 2016-03-10 2019-04-16 Micron Technology, Inc. Apparatuses and methods for cache invalidate
US10964869B2 (en) 2017-07-28 2021-03-30 Lg Chem, Ltd. Transparent light emitting element display
US20230089349A1 (en) * 2021-09-21 2023-03-23 Wisconsin Alumni Research Foundation Computer Architecture with Register Name Addressing and Dynamic Load Size Adjustment
CN114356414A (zh) * 2021-12-17 2022-04-15 龙芯中科技术股份有限公司 数据加载方法、装置、电子设备及存储介质

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0512114A (ja) * 1991-07-04 1993-01-22 Nec Corp キヤツシユメモリ
US7441110B1 (en) * 1999-12-10 2008-10-21 International Business Machines Corporation Prefetching using future branch path information derived from branch prediction
US7137111B2 (en) 2001-11-28 2006-11-14 Sun Microsystems, Inc. Aggressive prefetch of address chains
US6981099B2 (en) * 2002-12-16 2005-12-27 Sun Microsystems, Inc. Smart-prefetch
US7099999B2 (en) * 2003-09-30 2006-08-29 International Business Machines Corporation Apparatus and method for pre-fetching data to cached memory using persistent historical page table data
EP1622009A1 (en) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM architecture and systems
US7200717B2 (en) 2004-10-14 2007-04-03 International Business Machines Corporation Processor, data processing system and method for synchronizing access to data in shared memory
WO2007113757A2 (en) 2006-04-04 2007-10-11 Koninklijke Philips Electronics N.V. System and method for supporting a hot-word-first request policy for a multi-heirarchical memory system
US7529889B2 (en) * 2006-08-14 2009-05-05 Arm Limited Data processing apparatus and method for performing a cache lookup in an energy efficient manner
US8285941B2 (en) * 2008-02-25 2012-10-09 International Business Machines Corporation Enhancing timeliness of cache prefetching
US8171258B2 (en) * 2009-07-21 2012-05-01 Apple Inc. Address generation unit with pseudo sum to accelerate load/store operations
US8825982B2 (en) 2010-06-10 2014-09-02 Global Supercomputing Corporation Storage unsharing
US20120254592A1 (en) 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for expanding a memory source into a destination register and compressing a source register into a destination memory location
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
US20130232304A1 (en) * 2012-03-05 2013-09-05 Qualcomm Incorporated Accelerated interleaved memory data transfers in microprocessor-based systems, and related devices, methods, and computer-readable media
US9311247B1 (en) * 2012-03-20 2016-04-12 Marvell International Ltd. Method and apparatus for detecting patterns of memory accesses in a computing system with out-of-order program execution
US8972697B2 (en) * 2012-06-02 2015-03-03 Intel Corporation Gather using index array and finite state machine
US10049061B2 (en) * 2012-11-12 2018-08-14 International Business Machines Corporation Active memory device gather, scatter, and filter
US9367466B2 (en) 2013-02-13 2016-06-14 Advanced Micro Devices, Inc. Conditional prefetching
US9244684B2 (en) * 2013-03-15 2016-01-26 Intel Corporation Limited range vector memory access instructions, processors, methods, and systems

Also Published As

Publication number Publication date
SG11201703912VA (en) 2017-06-29
BR112017010005A2 (pt) 2018-01-02
CN107111554A (zh) 2017-08-29
EP3230852A4 (en) 2018-07-25
US20160170883A1 (en) 2016-06-16
EP3230852A1 (en) 2017-10-18
EP3230852B1 (en) 2022-12-21
CN107111554B (zh) 2021-01-22
JP2018502364A (ja) 2018-01-25
KR102585780B1 (ko) 2023-10-10
KR20170096101A (ko) 2017-08-23
US9811464B2 (en) 2017-11-07
TWI622879B (zh) 2018-05-01
WO2016093943A1 (en) 2016-06-16

Similar Documents

Publication Publication Date Title
CN103999037B (zh) 用于响应于单个指令来执行横向相加或相减的系统、装置和方法
CN107153524B (zh) 用于给出相应复数的复共轭的计算设备和计算机可读介质
JP6711480B2 (ja) ベクトルインデックスロードおよびストアのための方法および装置
TWI524266B (zh) 用以偵測向量暫存器內相等元素之裝置及方法
US9348592B2 (en) Apparatus and method for sliding window data access
TWI622879B (zh) 考慮用於執行之載入資料元件中的空間區域性之裝置和方法
KR101729829B1 (ko) 복수의 곱셈 연산들을 수행하는 방법 및 장치
TWI564795B (zh) 四維摩頓座標轉換處理器、方法、系統及指令
TWI489384B (zh) 執行置換運算的處理器與方法及具有該處理器的電腦系統
JP6635438B2 (ja) ベクトルビット反転およびクロスを実行するための方法および装置
KR102462174B1 (ko) 벡터 비트 셔플을 수행하기 위한 방법 및 장치
TWI760341B (zh) 用於跨步載入的系統、設備及方法
KR101729424B1 (ko) 128-비트 프로세서에서의 skein256 sha3 알고리즘에 대한 명령어 세트
JP2017509064A (ja) マスクド結果要素に伝搬する対応アンマスクド結果要素にソース要素を記憶するプロセッサ、方法、システム、及び命令
JP2018506094A (ja) 多倍長整数(big integer)の算術演算を実行するための方法および装置
TWI603261B (zh) 用以執行離心操作的指令及邏輯
KR20170097015A (ko) 마스크를 마스크 값들의 벡터로 확장하기 위한 방법 및 장치
TWI575450B (zh) 用以執行反離心操作之指令和邏輯
TWI517032B (zh) 用以執行兩向量暫存器之對應填充資料元件間絕對差計算之系統、裝置及方法
KR20170098806A (ko) 벡터 비트 수집을 수행하기 위한 방법 및 장치
WO2013095605A1 (en) Apparatus and method for sliding window data gather
KR20170099864A (ko) 마스크 값을 압축하기 위한 방법 및 장치