TWI567751B - 多暫存器記憶體存取指令、處理器、方法及系統 - Google Patents

多暫存器記憶體存取指令、處理器、方法及系統 Download PDF

Info

Publication number
TWI567751B
TWI567751B TW103122085A TW103122085A TWI567751B TW I567751 B TWI567751 B TW I567751B TW 103122085 A TW103122085 A TW 103122085A TW 103122085 A TW103122085 A TW 103122085A TW I567751 B TWI567751 B TW I567751B
Authority
TW
Taiwan
Prior art keywords
bit
memory
register
processor
bits
Prior art date
Application number
TW103122085A
Other languages
English (en)
Other versions
TW201508767A (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 TW201508767A publication Critical patent/TW201508767A/zh
Application granted granted Critical
Publication of TWI567751B publication Critical patent/TWI567751B/zh

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1015Read-write modes for single port memories, i.e. having either a random port or a serial port
    • G11C7/1036Read-write modes for single port memories, i.e. having either a random port or a serial port using data shift 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/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/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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30163Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack

Landscapes

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

Description

多暫存器記憶體存取指令、處理器、方法及系統 發明領域
本文所述之實施例大體而言係關於處理器。特定言之,本文所述之實施例大體而言係關於藉由處理器存取記憶體中之資料。
發明背景
許多處理器具有單指令多資料(SIMD)架構。在SIMD架構中,緊縮資料指令、向量指令或SIMD指令可同時或平行地對多個資料元素(例如,多個資料元素對)進行操作。多個資料元素可作為緊縮資料而緊縮於暫存器或記憶體位置內。在緊縮資料中,暫存器或其他儲存器位置之位元可在邏輯上劃分為一連串資料元素。舉例而言,64位元寬之緊縮資料暫存器可具有兩個緊縮32位元資料元素、四個緊縮16位元資料元素或八個緊縮8位元資料元素。處理器可具有回應於緊縮資料指令之平行執行硬體以同時(例如,平行地)執行多個操作。
在一些處理器中,緊縮資料運算元之寬度在多年 來已有漸進增加。緊縮資料運算元之寬度之此增加大體上允許同時(例如,平行)處理較多資料元素,其大體上有助於改良效能。舉例而言,128位元寬緊縮資料運算元可具有四個32位元資料元素(代替在64位元寬緊縮資料運算元狀況中之僅兩個)、八個緊縮16位元資料元素(代替64位元寬緊縮資料運算元狀況中之僅四個),等等。
在某些處理器中,緊縮資料運算元之寬度之增加藉由暫存器之寬度的對應增加來完成。然而,增加暫存器之寬度的一個可能缺點為增加暫存器在晶粒上所佔據之面積或佔據面積。舉例而言,擴充一組64位元暫存器中之每一暫存器使得其為每一128位元暫存器將可能近似為該暫存器在晶粒上所佔據之面積或佔據面積的兩倍。該影響將可能在存在比架構暫存器多的所實施實體暫存器的實施中甚至較大,此係因為較大數目之暫存器之大小可近似加倍。對於暫存器之寬度之此增加之另一可能缺點為:儲存於暫存器中之需要在內容切換、功率模式狀態儲存及類似轉變時移動至或自暫存器(例如,儲存及恢復)的狀態、內容或其他資料之量的對應增加。舉例而言,對於替代僅64位元之每一暫存器128位元可需要在內容改變時換入及換出。
處理器通常執行指令以載入來自記憶體之資料(例如,緊縮資料運算元)及將資料(例如,緊縮資料運算元)儲存至記憶體中。舉例而言,處理器可執行自記憶體載入指令以將來自記憶體之緊縮資料運算元載入或讀取至目的地暫存器中。處理器可執行寫入至記憶體指令以將來自源 暫存器之緊縮資料運算元寫入或儲存至記憶體。
依據本發明之一實施例,係特地提出一種處理器,其包含:複數個N位元暫存器;一解碼單元,其用以接收一多暫存器記憶體存取指令,該多暫存器記憶體存取指令用以指示一記憶體位置及指示一暫存器;及一記憶體存取單元,其與該解碼單元及與該複數個該等N位元暫存器耦接,該記憶體存取單元用以回應於該多暫存器記憶體存取指令而執行一多暫存器記憶體存取操作,該多暫存器記憶體存取操作涉及將包含該所指示暫存器之該複數個該等N位元暫存器中之每一者中的N位元資料以及記憶體之一M×N位元線的將對應於該所指示記憶體位置的不同對應N位元部分,其中將在該多暫存器記憶體存取操作中涉及之該複數個該等N位元暫存器中之該等N位元資料之一位元總數共計記憶體之該線之該等M×N位元的至少一半。
100‧‧‧電腦系統
102、502、602、702、1200、1310、1315、1470、1480‧‧‧處理器
104‧‧‧多暫存器記憶體存取指令
106、1040‧‧‧解碼單元
108‧‧‧記憶體存取單元
109、509、609、709‧‧‧快取記憶體
110-1、110-2、110-M、112、510-1、510-2、510-3、510-4、612、 712‧‧‧暫存器
114-1、114-2、114-M‧‧‧N位元資料
116‧‧‧M×N位元線
120、520、616、620、716、720、1340、1432、1434‧‧‧記憶體
118、518、618、718‧‧‧記憶體位置
122‧‧‧M×N位元快取線
230、330、430‧‧‧方法
231、232、331、332、431、432‧‧‧區塊
514-1、514-2、514-3、514-4‧‧‧128位元資料部分
522、622、722‧‧‧512位元快取線
524、534、624、634、724、734‧‧‧互連件
530、630、730‧‧‧多暫存器記憶體存取操作
610、610-1、610-2‧‧‧256位元暫存器
614-1、614-2‧‧‧256位元資料部分
710、710-1、710-2、710-3、710-4‧‧‧64位元暫存器
714-1、714-2、714-3、714-4、714-5、714-6、714-7、714-8‧‧‧64位元資料部分
840、842、844‧‧‧視圖
950A、950B、950C‧‧‧操作碼或作業碼
952A、952B、952C‧‧‧記憶體位置說明符
954A、954B、958-1、958-2、958-3、958-4‧‧‧暫存器說明符
956‧‧‧暫存器數目說明符
1000‧‧‧處理器管線
1002‧‧‧提取階段
1004‧‧‧長度解碼階段
1006‧‧‧解碼階段
1010‧‧‧重命名階段
1012‧‧‧排程階段
1014‧‧‧暫存器讀取/記憶體讀取階段
1016‧‧‧執行階段
1022‧‧‧異常處置階段
1024‧‧‧認可階段
1030‧‧‧前端單元
1032‧‧‧分支預測單元
1034‧‧‧指令快取記憶體單元
1036‧‧‧指令轉譯後備緩衝器(TLB)
1050‧‧‧執行引擎單元
1052‧‧‧重命名/分配器單元
1054‧‧‧引退單元
1056‧‧‧排程器單元
1060‧‧‧執行叢集
1062‧‧‧執行單元
1064‧‧‧記憶體存取單元
1070‧‧‧記憶體單元
1072‧‧‧資料TLB單元
1074‧‧‧資料快取記憶體單元
1076、1104‧‧‧2級(L2)快取記憶體單元
1100‧‧‧指令解碼器
1102‧‧‧晶粒上互連網路
1106‧‧‧1級(L1)快取記憶體
1106A‧‧‧L1資料快取記憶體
1108‧‧‧純量單元
1114‧‧‧向量暫存器
1120‧‧‧攪拌單元
1122A、1122B‧‧‧數字轉換單元
1124‧‧‧複製單元
1126‧‧‧寫入遮罩暫存器
1128‧‧‧16寬ALU
1202A、1202N‧‧‧核心
1206‧‧‧快取記憶體單元
1208‧‧‧整合圖形邏輯
1210‧‧‧系統代理程式單元
1212‧‧‧基於環狀之互連單元
1214‧‧‧整合記憶體控制器單元
1216‧‧‧匯流排控制器單元
1300、1400、1500‧‧‧系統
1320‧‧‧控制器集線器
1345、1438、1620‧‧‧共處理器
1350‧‧‧輸入/輸出集線器(IOH)
1360、1414、1514‧‧‧輸入/輸出(I/O)器件
1390‧‧‧圖形記憶體控制器集線器(GMCH)
1395‧‧‧連接
1416、1420‧‧‧匯流排
1418‧‧‧匯流排橋接器
1422‧‧‧鍵盤及/或滑鼠
1424‧‧‧音訊I/O
1427‧‧‧通信器件
1428‧‧‧儲存單元
1430‧‧‧指令/程式碼及資料
1439‧‧‧高效能介面
1450‧‧‧點對點互連件
1452、1454、1476、1478、1486、1488‧‧‧P-P介面
1472、1482‧‧‧整合記憶體及I/O控制邏輯(「CL」)
1490‧‧‧晶片組
1494、1498‧‧‧點對點介面電路
1496‧‧‧介面
1515‧‧‧舊版I/O器件
1600‧‧‧SoC
1602‧‧‧互連單元
1610‧‧‧應用程式處理器
1630‧‧‧靜態隨機存取記憶體(SRAM)單元
1632‧‧‧直接記憶體存取(DMA)單元
1640‧‧‧顯示單元
1702‧‧‧高階語言
1704‧‧‧x86編譯器
1706‧‧‧x86二進位程式碼
1708‧‧‧替代指令集編譯器
1710‧‧‧替代指令集二進位程式碼
1712‧‧‧指令轉換器
1714‧‧‧不具有x86指令集核心之處理器
1716‧‧‧具有至少一x86指令集核心之處理器
本發明可藉由參考用以說明實施例之以下描述及附圖而得以最佳理解。在圖中:圖1為電腦系統之實施例之方塊圖。
圖2為處理一多暫存器記憶體存取指令之實施例之方法的實施例之方塊流程圖。
圖3為處理一自記憶體載入多暫存器指令之實施例之方法的實施例之方塊流程圖。
圖4為處理一多暫存器寫入至記憶體指令之實施 例之方法的實施例之方塊流程圖。
圖5為合適多暫存器記憶體存取操作之第一實例實施例之方塊圖。
圖6為合適多暫存器記憶體存取操作之第二實例實施例之方塊圖。
圖7為合適多暫存器記憶體存取操作之第三實例實施例之方塊圖。
圖8為說明一實施例之方塊圖,在該實施例中可在不同視圖中將一組暫存器檢視或存取為64位元暫存器、128位元暫存器及256位元暫存器。
圖9A至圖9C為用於多暫存器記憶體存取指令之合適指令格式之實施例的方塊圖。
圖10A為說明根據本發明之實施例之例示性有序管線及例示性暫存器重命名無序發佈/執行管線兩者的方塊圖。
圖10B為說明根據本發明之實施例之有序架構核心之例示性實施例及例示性暫存器重命名無序發佈/執行架構核心兩者的方塊圖。
圖11A為根據本發明之實施例之單處理器核心連同其至晶粒上互連網路之連接以及其2級(L2)快取記憶體之本端子集的方塊圖。
圖11B為根據本發明之實施例之圖11A中之處理器核心的部分的展開圖。
圖12為根據本發明之實施例之處理器的方塊圖, 其可具有一個以上核心,可具有整合記憶體控制器且可具有整合圖形。
圖13展示根據本發明之一個實施例之系統的方塊圖。
圖14展示根據本發明之實施例之第一較特定例示性系統的方塊圖。
圖15展示根據本發明之實施例之第二較特定例示性系統的方塊圖。
圖16展示根據本發明之實施例之SoC之方塊圖。
圖17為根據本發明之實施例之對比使用軟體指令轉換器來將源指令集中之二進位指令轉換為目標指令集中之二進位指令的方塊圖。
較佳實施例之詳細說明
在以下描述中,陳述眾多特定細節(例如,回應於指令而執行之特定操作、暫存器之特定數目、暫存器之特定大小、快取線之特定大小、特定處理器組配、特定微架構細節、特定操作序列等)。然而,可在沒有此等特定細節之情況下實踐實施例。在其他例子中,尚未詳細展示眾所周知的電路、結構及技術以避免模糊對描述之理解。
習知記憶體存取指令在記憶體存取中常常涉及僅單一暫存器。在記憶體與單一暫存器之間交換的資料量僅為單一暫存器之寬度(例如,在64位元暫存器狀況中為64 位元)。然而,一般將記憶體中之資料組織為較寬的「線」。記憶體之此等線表示記憶體與處理器之間傳輸或交換之資料量,例如處理器之一或多個快取記憶體。舉例而言,即使可實際上將僅64位元之資料傳輸至暫存器檔案或自暫存器檔案傳輸,一般可在記憶體與處理器之快取記憶體之間傳輸記憶體之具有該64位元資料的較寬的整個線。記憶體之線可儲存於快取記憶體內之快取線中。許多處理器通常使用記憶體之512位元寬線及對應的512位元寬快取線。載入64位元資料至單一目的地暫存器可載入或擷取記憶體之具有64位元資料之整個512位元線至處理器之快取記憶體之512位元快取線中且載入僅64位元資料至單一目的地暫存器中。僅64位元之資料將實際上自快取記憶體傳輸至暫存器檔案。
此類習知「單一暫存器」記憶體存取指令之一個潛在缺點在於快取記憶體與暫存器之間的所利用頻寬可傾向於相對較低,尤其在利用相對較窄暫存器來儲存緊縮資料之處理器中。在一些狀況下,亦可需要記憶體之同一線及/或快取線內之其他資料用於處理,但習知地並未藉由指令而帶入暫存器中。舉例而言,此可為記憶體中之寬緊縮資料運算元比處理器之暫存器寬的狀況。在一些狀況下,可能需要載入記憶體之線的至少一半(或在其他狀況中,記憶體之整個線)至處理器之暫存器中。將記憶體之整個512位元線載入至八個64位元暫存器中之一個可能方式將為根據記憶體指令而使用八個單獨單一64位元暫存器載入。舉 例而言,指示記憶體中之512位元線之第一64位元資料的自記憶體載入第一單一64位元暫存器指令可載入或儲存所指示第一64位元部分至第一指示暫存器中。可將記憶體之整個512位元線自記憶體擷取至處理器中且儲存於512位元快取線中。指示記憶體中之512位元線之第二64位元資料的自記憶體載入第二單一64位元暫存器指令可載入來自已載入512位元快取線之所指示第二64位元部分且將該第二64位元資料儲存於第二指示暫存器中。類似地,自記憶體載入第三至第八單一64位元暫存器指令亦可使用來自已載入於快取記憶體中之快取線的資料。然而,此類方法之一個可能缺點為需要執行多個指令,其容易增加程式碼大小及處理時間且可涉及多個快取記憶體存取。
本文所揭示的係多暫存器記憶體存取指令、用以執行該等指令之處理器、在處理或執行該等指令時由處理器執行之方法以及併入用以處理或執行該等指令之一或多個處理器的系統。
圖1為電腦系統100之實施例之方塊圖。在各種實施例中,電腦系統可表示桌上型電腦、膝上型電腦、筆記型電腦、平板電腦、上網本、智慧型電話、個人數位助理、蜂巢式電話、伺服器、網路器件(例如,路由器或交換器)、行動網際網路器件(MID)、媒體播放器、智慧型電視、機上盒、視訊遊戲控制器、或具有至少一處理器之其他類型之電子器件。
電腦系統包括處理器102及記憶體120。記憶體可 包括相同或不同類型之一或多個記憶體器件。適合於實施例之一個常用類型之記憶體為動態隨機存取記憶體(DRAM),但亦可使用其他類型之記憶體(例如,快閃記憶體)。處理器與記憶體彼此藉由互連機構124而耦接。此項技術中已知之用於使處理器與記憶體耦接的任何互連機構為合適的。此類機構之實例包括(但不限於)互連件、匯流排、集線器、記憶體控制器、晶片組、晶片組組件、及類似者、及其組合。
處理器102表示可操作以處理指令之指令處理裝置。在一些實施例中,處理器可為通用處理器(例如,在桌上型電腦、膝上型電腦及類似電腦中使用之類似通用微處理器)。或者,處理器可為專用處理器。僅舉例而言,合適的專用處理器之實例包括(但不限於):網路處理器、通信處理器、密碼編譯處理器、圖形處理器、共處理器、嵌入式處理器、數位信號處理器(DSP)及控制器(例如,微控制器)。處理器可為以下各者中之任一者:各種複雜指令集計算(CISC)處理器、各種精簡指令集計算(RISC)處理器、各種超長指令字(VLIW)處理器、其各種混合物,或完全其他類型之處理器。
處理器102可接收多暫存器記憶體存取指令104。在一些實施例中,多暫存器記憶體存取指令可表示自記憶體載入多暫存器指令。在其他實施例中,多暫存器記憶體存取指令可表示多暫存器儲存至記憶體指令。多暫存器記憶體存取指令可表示機器程式碼指令、組合語言指令、巨 集指令、或處理器之指令集之控制信號。在一些實施例中,多暫存器記憶體存取指令可明確指定(例如,經由位元集合或一或多個欄位)或以其他方式指示(例如,隱含地指示)記憶體120中之記憶體位置118,且可明確指定或以其他方式指示暫存器112(例如,由一組N位元暫存器110實施之暫存器)。
處理器包括指令解碼單元106。指令解碼單元亦可被稱作解碼單元、解碼器或解碼邏輯。解碼單元可接收及解碼相對高階指令(例如,機器程式碼指令、組合語言指令、巨集指令),及輸出自該等高階指令反映、表示及/或導出之一或多個相對低階指令或控制信號(例如,微指令、微操作、微程式碼入口點)。該一或多個低階指令或控制信號可經由一或多個低階(例如,電路級或硬體級)操作而實施該高階指令。解碼單元可使用各種不同機制來實施,包括(但不限於)微碼唯讀記憶體(ROM)、查找表、硬體實施、可程式化邏輯陣列(PLA)及用以實施此項技術中已知之解碼單元的其他機制。
在其他實施例中,可使用指令仿真器、轉譯器、變形器、解譯器或其他指令轉換邏輯。各種不同類型之指令轉換邏輯為此項技術中所已知的且可以軟體、硬體、韌體或其組合來實施。指令轉換邏輯可將該指令仿真、轉譯、變形、解譯或以其他方式轉換為一或多個對應導出之指令或控制信號。在一些實施例中,可使用指令轉換邏輯及解碼單元兩者。舉例而言,指令轉換邏輯可將指令轉換為一 或多個中間指令,及解碼單元可將該一或多個中間指令解碼為可由處理器之積體電路執行的一或多個低階指令或控制信號。指令轉換邏輯可位於處理器外部(例如,在單獨晶粒上或在記憶體中)、處於處理器上或組合。
再次參看圖1,記憶體存取單元108與解碼單元106耦接。記憶體存取單元可接收表示多暫存器記憶體存取指令104及/或自其導出之一或多個經解碼或以其他方式轉換之指令或控制信號。記憶體存取單元亦經由互連機構124而與記憶體120耦接。記憶體存取單元可實施常在處理器之記憶體子系統中可見之一或多個組件以存取記憶體或與其互動。此類組件之之實例包括(但不限於)記憶體存取邏輯、匯流排介面單元、快取記憶體之一或多個層級、一或多個轉譯後備緩衝器(TLS)、虛擬位址轉譯邏輯等。如所展示,記憶體存取單元可具有至少一快取記憶體109。
處理器102亦包括一組N位元暫存器110。暫存器中之每一者可表示可操作以儲存資料(例如N位元資料)之晶粒上儲存位置。在一些實施例中,N位元暫存器可表示可操作以儲存N位元緊縮資料、向量資料或單指令多資料(SIMD)資料之緊縮資料暫存器,但此並非必需的。在各種實施例中,N位元暫存器可為64位元暫存器、128位元暫存器或256位元暫存器。或者,N位元暫存器可具有其他大小(例如,32位元暫存器、80位元暫存器等)。在一些實施例中,該組N位元暫存器可包括、實施或以其他方式包含由多暫存器記憶體存取指令指示之暫存器112。暫存器可為軟體及/ 或程式設計員可見的及/或可由指令集之指令指定以識別運算元。暫存器可使用眾所周知的技術而以不同方式實施於不同微架構中且不限於任何特定類型之電路。合適類型之暫存器之實例包括(但不限於)專用實體暫存器、使用暫存器重新命名之動態分配之實體暫存器及其組合。
如先前所提及,在一些實施例中,多暫存器記憶體存取指令104可明確指定(例如,經由位元集合或一或多個欄位)或以其他方式指示(例如,隱含地指示)暫存器112。在一些實施例中,該組N位元暫存器可包括、實施或以其他方式包含由多暫存器記憶體存取指令指示之暫存器112。此外,在一些實施例中,多暫存器記憶體存取指令可明確指定或以其他方式指示記憶體中之記憶體位置118。在一些實施例中,記憶體中之資料可經組織為記憶體之線。該說明展示記憶體之對應於所指示記憶體位置118(例如包括在所指示記憶體位置處之資料)之M×N位元線116。記憶體之M×N位元線具有資料之N位元寬部分之整數M數目。如所展示,記憶體之M×N位元線可具有第一N位元資料114-1至第M N位元資料114-M。在一些實施例中,M×N位元線為至少512位元。在一個實施例中,整數N可為128位元及整數M可為四。在另一實施例中,整數N可為256位元及整數M可為二。在又一實施例中,整數N可為64位元及整數M可為八。在其他實施例中,M×N位元線寬度可具有其他寬度(例如,256位元、至少512位元、1024位元等)。N位元資料元素之數目M大體等於記憶體之線之寬度除以N位元資料元素之 寬度。在一些實施例中,M×N位元線可具有等於處理器之快取線之寬度的寬度。
在一些實施例中,記憶體存取單元108可回應於及/或由於多暫存器記憶體存取指令104(例如,回應於表示多暫存器記憶體存取指令及/或自其導出之一或多個經解碼或以其他方式轉換之指令或控制信號)以執行多暫存器記憶體存取操作。在一些實施例中,多暫存器記憶體存取操作可涉及複數個N位元暫存器110中之每一者中之N位元資料,該複數個N位元暫存器110包括、實施或以其他方式包含由指令104指示之暫存器112。此外,在一些實施例中,多暫存器記憶體存取操作亦可涉及記憶體之M×N位元線116之對應於所指示記憶體位置118的不同對應N位元部分114。如所展示,記憶體之M×N位元線可以例如大體習知方式而儲存於快取記憶體109之M×N位元快取線122中。記憶體存取單元及/或處理器可包括可操作以回應於指令而執行操作的具體或特定邏輯(例如,潛在地與韌體及/或軟體組合之電路或其他硬體)。
在一些實施例中,多暫存器記憶體存取指令可為自記憶體載入多暫存器指令。回應於自記憶體載入多暫存器指令,在一些實施例中,處理器可載入複數個N位元暫存器中之每一者中的記憶體之M×N位元線之不同N位元部分。在其他實施例中,多暫存器記憶體存取指令可為多暫存器寫入至記憶體指令。回應於多暫存器寫入至記憶體指令,在一些實施例中,處理器可將來自複數個N位元暫存器中之 每一者的N位元資料寫入至記憶體之M×N位元線的不同對應N位元部分。
在一些實施例中,多暫存器記憶體存取操作中所涉及位元之總數(例如,該操作中所涉及之複數個N位元暫存器110中之每一者中的N位元資料之總和)可共計記憶體之線116之M×N位元的至少一半或在一些狀況下高達全部。在一些實施例中,記憶體之線之M×N位元的至少一半或在一些狀況下高達全部可自快取記憶體109傳輸至該組暫存器110。在各種實施例中,可涉及至少兩個、三個、四個、或四個以上暫存器。作為一個實例,在M×N位元等於512位元及N等於128位元之實施例中,則在各種態樣中,可在多暫存器記憶體存取操作中涉及至少兩個128位元暫存器110、在一些狀況下三個128位元暫存器110或在一些狀況下四個128位元暫存器110。作為另一實例,在M×N位元等於512位元及N等於64位元之實施例中,接著在各種態樣中,可在多暫存器記憶體存取操作中涉及至少三個64位元暫存器110、至少四個64位元暫存器110或在一些狀況下大約高達八64位元暫存器110。作為另一實例,在M×N位元等於512位元及N等於256位元之實施例中,可在多暫存器記憶體存取操作中涉及兩個256位元暫存器110。
為了避免混淆描述,已展示及描述相對簡單之處理器102。在其他實施例中,處理器可視情況包括可見於處理器中的其他眾所熟知之組件。此類組件之實例包括(但不限於)分支預測單元、指令提取單元、指令及資料轉譯後備 緩衝器、預提取緩衝器、微指令佇列、微指令序列、暫存器重新命名單元、指令排程單元、引退單元、包括於處理器中之其他組件及其各種組合。存在處理器中之組件之確實大量不同組合及組配,且實施例不限於任何特定組合或組配。實施例可包括於具有多個核心、邏輯處理器或執行引擎之處理器中,其中之至少一者能夠執行多暫存器記憶體存取指令之一實施例。
圖2為處理一多暫存器記憶體存取指令之實施例之方法230的實施例之方塊流程圖。該方法可藉由處理器、指令處理裝置、積體電路或類似者及/或在其內執行。
該方法包括在區塊231處接收多暫存器記憶體存取指令。在一些實施例中,多暫存器記憶體存取指令可指定或以其他方式指示記憶體位置,及可指定或以其他方式指示暫存器。在各種態樣中,指令可在處理器、指令處理裝置或其部分(例如,指令提取單元、解碼單元、指令轉換器等)處接收。在各種態樣中,指令可自晶粒外來源(例如,來自記憶體、碟片、互連件等)或自晶粒上來源(例如,來自指令快取記憶體、指令提取單元等)接收。
該方法包括在區塊232回應於多暫存器記憶體存取指令而執行多暫存器記憶體存取操作。在一些實施例中,記憶體存取單元或處理器之其他部分可執行記憶體存取操作。在一些實施例中,多暫存取操作可涉及包括、實施或以其他方式包含所指示暫存器之複數個N位元暫存器中之每一者中的N位元資料,及記憶體之對應於所指示記憶體位 置(例如,記憶體之包括在所指示記憶體位置處之資料的M×N位元線)的M×N位元線之不同對應N位元部分。
在一些實施例中,多暫存器記憶體存取操作中所涉及之複數個N位元暫存器中之N位元資料的位元總數可共計記憶體之線的M×N位元之至少一半或在一些狀況下高達全部。在一些實施例中,多暫存器記憶體存取操作中所涉及之複數個N位元暫存器中之N位元資料的位元總數可共計至少256位元、至少512位元或在一些狀況下更多位元(例如,1024位元)。在各種實施例中,可在多暫存器記憶體存取操作中涉及至少兩個、三個、四個或四個以上暫存器。
圖3為處理自記憶體載入多暫存器指令之實施例之方法330的實施例之方塊流程圖。該方法可藉由處理器、指令處理裝置、積體電路或類似者及/或在其內執行。
該方法包括在區塊331處接收自記憶體載入多暫存器指令。在一些實施例中,自記憶體載入多暫存器指令可指定或以其他方式指示記憶體位置,及可指定或以其他方式指示暫存器。該指令可以上文結合圖2描述之各種方式來接收。
該方法亦包括在區塊332回應於自記憶體載入多暫存器指令而執行自記憶體載入多暫存器操作。在一些實施例中,記憶體存取單元或處理器之其他部分可執行該操作。在一些實施例中,執行該操作可包括將記憶體之M×N位元線的對應於所指示記憶體位置之不同N位元部分載入至包含所指示暫存器之複數個N位元暫存器中之每一者中。 在一些實施例中,此可包括將來自快取記憶體之M×N位元快取線的不同N位元部分傳輸至不同N位元暫存器中之每一者。
在一些實施例中,自記憶體之M×N位元線載入於複數個N位元暫存器中之不同N位元部分的位元總數可共計記憶體之線的M×N位元之至少一半或在一些狀況下高達全部。在一些實施例中,自記憶體之M×N位元線載入於複數個N位元暫存器中之不同N位元部分的位元總數可共計至少256位元、至少512位元或在一些狀況下更多位元(例如,1024位元)。在各種實施例中,可在自記憶體載入多暫存器操作中涉及至少兩個、三個、四個或四個以上暫存器。在一個特定實例中,該操作可將至少512位元的記憶體之線之不同128位元部分載入於至少四個128位元暫存器中之每一者中。在另一特定實例中,該操作可將至少512位元的記憶體之線之不同256位元部分載入於至少兩個256位元暫存器中之每一者中。
圖4為處理一多暫存器儲存至記憶體指令之實施例之方法430的實施例之方塊流程圖。該方法可藉由處理器、指令處理裝置、積體電路或類似者及/或在其內執行。
該方法包括在區塊431處接收多暫存器儲存至記憶體指令。在一些實施例中,多暫存器儲存至記憶體指令可指定或以其他方式指示記憶體位置,及可指定或以其他方式指示暫存器。該指令可以上文結合圖2描述之各種方式來接收。
該方法亦包括在區塊432回應於多暫存器儲存至記憶體指令而執行多暫存器儲存至記憶體操作。在一些實施例中,記憶體存取單元或處理器之其他部分可執行該操作。在一些實施例中,執行該操作可包括自包含所指示暫存器之複數個N位元暫存器中之每一者將N位元資料寫入至記憶體之對應於所指示記憶體位置的M×N位元線之不同對應N位元部分。在一些實施例中,此可包括自複數個N位元暫存器中之每一者傳輸N位元資料至快取記憶體,及將不同N位元資料中之每一者儲存於M×N位元快取線之不同N位元部分中。
在一些實施例中,自複數個N位元暫存器寫入至記憶體之M×N位元線的N位元資料之位元總數可共計記憶體之線的M×N位元之至少一半或在一些狀況下高達全部。在一些實施例中,自複數個N位元暫存器寫入至記憶體之M×N位元線的N位元資料之位元總數可共計至少256位元、至少512位元或在一些狀況下更多位元(例如,1024位元)。在各種實施例中,可在多暫存器儲存至記憶體操作中涉及至少兩個、三個、四個或四個以上暫存器。
圖2至圖4之方法已按相對基本形式來描述。然而,可視情況添加及/或自該方法移除操作。舉例而言,在一些實施例中,可視情況將一操作添加至此等方法中之任一者以將與複數個N位元暫存器相關聯之N位元資料(例如,待載入於N位元暫存器中或自N位元暫存器寫入)儲存於快取記憶體中之M×N位元快取線之不同對應N位元部分中。作為 另一實例,在一些實施例中,可視情況將一操作添加至此等方法中之任一者以在快取記憶體與N位元暫存器之間傳輸與複數個N位元暫存器相關聯之N位元資料(例如,待載入於N位元暫存器中或自N位元暫存器寫入)。作為其他實例,可視情況添加一或多個操作以提取指令、解碼指令、引退指令、或類似者、或其各種組合。
在一些實施例中,圖2至圖4中之任一者之操作及/或方法可藉由圖1之處理器執行及/或在其內執行。視情況,上文關於圖1之處理器描述之細節及可選細節亦視情況適用於圖2至圖4之操作及/或方法,該等操作及/或方法在實施例中可藉由此類處理器執行及/或在其內執行。或者,圖2至圖4中之任一者之操作及/或方法可藉由類似或不同處理器執行及/或在其內執行。此外,圖1之處理器可執行與圖2至圖4中之任一者之操作及/或方法相同、類似或不同於其的操作及/或方法。
圖5為可回應於多暫存器記憶體存取指令之第一實例實施例而執行的合適多暫存器記憶體存取操作530之第一實例實施例之方塊圖。多暫存器記憶體存取指令可指示記憶體520中之記憶體位置518及處理器502之暫存器512。在此實施例中,所指示記憶體位置將對應於記憶體516之具有四個128位元資料部分514-1至514-4之512位元線。舉例而言,記憶體之512位元線可將資料儲存於所指示記憶體位置處。在此實施例中,所指示暫存器將包括、由其實施或以其他方式包含一組四個128位元暫存器510。在一些實施例 中,該四個128位元暫存器可為相鄰或依序暫存器。
在此實施例中,多暫存器記憶體存取操作將涉及四個128位元暫存器510中之每一者中之四個不同128位元資料部分514以及記憶體516之512位元線之不同對應128位元部分514。舉例而言,該操作可在記憶體之512位元線與該組四個128位元暫存器之間轉移或交換資料。在一些實施例中,該操作可為自記憶體載入多暫存器操作之實施例,且128位元資料部分514可自記憶體516之512位元線載入或讀取至四個128位元暫存器510中。在其他實施例中,該操作可為多暫存器寫入至記憶體操作之實施例,且128位元資料部分514可自四個128位元暫存器510寫入或儲存至記憶體516之512位元線中。
亦可將記憶體之512位元線儲存於快取記憶體509之512位元快取線522中。在一些實施例中,可經由互連件524在記憶體與處理器(例如,快取記憶體)之間交換資料。在一些實施例中,互連件524可取決於時脈速率等而具有512位元、256位元之位元寬度或某一其他位元寬度。在一些實施例中,可經由互連件534而在快取記憶體與該組四個128位元暫存器之間交換資料。在一些實施例中,取決於時脈速率等,互連件534可具有512位元或至少256位元之頻寬或位元寬度。本發明之範疇不限於互連件524或534之位元寬度。
圖6為可回應於多暫存器記憶體存取指令之第二實例實施例而執行的合適多暫存器記憶體存取操作630之 第二實例實施例之方塊圖。多暫存器記憶體存取指令可指示記憶體620中之記憶體位置618及處理器602之暫存器612。在此實施例中,所指示記憶體位置將對應於記憶體616之具有兩個256位元資料部分614-1至614-2之512位元線。舉例而言,記憶體之512位元線可將資料儲存於所指示記憶體位置處。在此實施例中,所指示暫存器將包括、由其實施或以其他方式包含一組兩個256位元暫存器610-1、610-2。在一些實施例中,該兩個256位元暫存器可為相鄰或依序暫存器。
在此實施例中,多暫存器記憶體存取操作將涉及兩個256位元暫存器610中之每一者中之兩個不同256位元資料部分614以及記憶體616之512位元線之不同對應256位元部分614。舉例而言,該操作可在記憶體之512位元線與該組兩個256位元暫存器之間轉移或交換資料。在一些實施例中,該操作可為自記憶體載入多暫存器操作之實施例,且256位元資料部分614可自記憶體616之512位元線載入或讀取至兩個256位元暫存器610中。在其他實施例中,該操作可為多暫存器寫入至記憶體操作之實施例,且256位元資料部分614可自兩個256位元暫存器610寫入或儲存至記憶體616之512位元線。
亦可將記憶體之512位元線儲存於快取記憶體609之512位元快取線622中。在一些實施例中,可經由互連件624在記憶體與處理器(例如,快取記憶體)之間交換資料。在一些實施例中,互連件624可取決於時脈速率等而具有 512位元、256位元之位元寬度或某一其他位元寬度。在一些實施例中,可經由互連件634而在快取記憶體與該組兩個256位元暫存器之間交換資料。在一些實施例中,取決於時脈速率等,互連件634可具有512位元或至少256位元之頻寬或位元寬度。本發明之範疇不限於互連件624或634之位元寬度。
圖7為可回應於多暫存器記憶體存取指令之第三實例實施例而執行的合適多暫存器記憶體存取操作730之第三實例實施例之方塊圖。多暫存器記憶體存取指令可指示記憶體720中之記憶體位置718及處理器702之暫存器712。在此實施例中,所指示記憶體位置將對應於記憶體716之具有八個64位元資料部分714-1至714-8之512位元線。舉例而言,記憶體之512位元線可將資料儲存於所指示記憶體位置處。在此實施例中,所指示暫存器將包括、由其實施或以其他方式包含一組四個64位元暫存器710。在其他實施例中,可使用四個與八個64位元暫存器710之間的任一者(例如,六個、八個等)。在一些實施例中,該四個或高達八個64位元暫存器可為相鄰或依序暫存器。
在此實施例中,多暫存器記憶體存取操作將涉及在四個(或高達八個)64位元暫存器710中之每一者中之四個(或高達八個)64位元資料部分714以及記憶體716之512位元線之不同對應64位元部分714。舉例而言,該操作可在記憶體之512位元線之四個(或高達八個)資料部分與四個(或高達八個)64位元暫存器之間轉移或交換資料。在一些實施例 中,該操作可為自記憶體載入多暫存器操作之一實施例,且該四個(或高達八個)64位元資料部分714可自記憶體716之512位元線載入或讀取至四個(或高達八個)64位元暫存器710。在其他實施例中,該操作可為多暫存器寫入至記憶體操作之一實施例,且該四個(或高達八個)64位元資料部分714可自四個(或高達八個)64位元暫存器710寫入或儲存至記憶體716之512位元線。在所說明之實例實施例中,使用記憶體之512位元線之最低階一半(亦即,包括最低階四個資料部分714-1至714-4),但此並非必需的。在另一實施例中,可代替使用最高階一半或某一其他部分。
亦可將記憶體之512位元線儲存於快取記憶體709之512位元快取線722中。在一些實施例中,可經由互連件724在記憶體與處理器(例如,快取記憶體)之間交換資料。在一些實施例中,互連件724可取決於時脈速率等而具有512位元、256位元之位元寬度或某一其他位元寬度。在一些實施例中,可經由互連件734在快取記憶體與該組四個(或高達八個)64位元暫存器之間交換資料。在一些實施例中,取決於時脈速率等,互連件734可具有128位元或256位元之頻寬或位元寬度(例如,在使用僅四個暫存器的狀況下)或256位元或512位元(例如,在使用高達八個暫存器的狀況下)。本發明之範疇不限於互連件724或734之位元寬度。
應瞭解此等為合適操作之僅幾個說明性實例。涵蓋其中使用記憶體之較窄(例如,256位元)或較寬(例如,1024位元)線的其他實例。此外,涵蓋其中使用其他大小之 資料部分及/或暫存器(例如,32位元暫存器)的其他實例。
在一些實施例中,相同暫存器組可由處理器(例如,記憶體存取單元、執行單元等)檢視或存取為較大數目個較小暫存器或較小數目個較大暫存器。可在一個視圖中經檢視或存取為單獨較小暫存器之相同兩個或兩個以上暫存器可在另一視圖中經檢視或存取為組合之較大單一暫存器。舉例而言,在一些實施例中,相鄰暫存器對可經分別檢視為兩N/2位元暫存器,或可經邏輯組合或聚合在一起且共同經檢視為單一N位元暫存器。可在兩情形中涉及相同實體暫存器及實體暫存器位元之相同總數,但該兩情形可以不同方式經檢視及存取。此類配置之一個潛在優點為在不需要增加基礎實體暫存器之寬度的情況下儲存較大運算元(例如,緊縮資料運算元)的能力。此可具有潛在優點,諸如避免暫存器檔案佔據於晶粒上之面積或覆蓋面積之增加、避免在內容切換或功率模式轉變時需要自暫存器換入及換出的資料需求之增加等。
圖8為說明一實例實施例之方塊圖,其中一組暫存器在第一視圖840中經檢視或存取為64位元暫存器、在第二視圖842中為128位元暫存器以及在第三視圖844中為256位元暫存器。在第一視圖840中,該組暫存器(例如,實體暫存器)經邏輯檢視或存取為標為X0至X3之四個64位元緊縮資料暫存器。
在第二視圖842中,同一組暫存器(例如,實體暫存器)經邏輯檢視或存取為標為Y0至Y1之兩個(亦即,一 半)128位元暫存器。在第二視圖842中,128位元暫存器Y0之最低階64位元(亦即,位元63:0)映射或對應於64位元暫存器X0,而128位元暫存器Y0之最高階64位元(亦即,位元127:64)映射或對應於64位元暫存器X1。類似地,128位元暫存器Y1之最低階64位元(亦即,位元63:0)映射或對應於64位元暫存器X2,而128位元暫存器Y1之最高階64位元(亦即,位元127:64)映射或對應於64位元暫存器X3。多個(在此狀況下兩個)較小(在此狀況下64位元)暫存器經邏輯組合或聚合以形成單一較大(在此狀況下128位元)暫存器。
在第三視圖844中,同一組暫存器(例如,實體暫存器)經邏輯檢視或存取為標為Z0之單一256位元暫存器。在第三視圖844中,256位元暫存器Z0之最低階64位元(亦即,位元63:0)映射或對應於64位元暫存器X0,256位元暫存器Z0之最低中間階64位元(亦即,位元127:64)映射或對應於64位元暫存器X1,256位元暫存器Z0之最高中間階64位元(亦即,位元191:128)映射或對應於64位元暫存器X2,及256位元暫存器Z0之最高階64位元(亦即,位元255:192)映射或對應於64位元暫存器X3。在第三視圖844中,256位元暫存器Z0之最低階128位元(亦即,位元127:0)映射或對應於128位元暫存器Y0,及256位元暫存器Z0之最高階128位元(亦即,位元255:128)映射或對應於128位元暫存器Y1。
在各種實施例中,用以實施視圖之實際實體暫存器可為64位元暫存器、32位元暫存器或128位元暫存器,但此並非必需的。在所說明之實施例中使用相鄰或依序暫存 器,但此並非必需的。在其他實施例中,可組合非相鄰暫存器(例如,不同組中之非相鄰暫存器、交替暫存器等)。在所說明之實施例中,支援三個不同視圖,但在其他實施例中可支援較少(例如兩)或較多(例如,四個或四個以上)不同視圖。
此外,在其他實施例中,該等視圖可使用不同位元數目。舉例而言,在一些實施例中,可存在其中一組暫存器在一個視圖中可經邏輯檢視或存取為單一512位元暫存器及在另一視圖中為多個較小暫存器(例如,兩個256位元暫存器、四個128位元暫存器、八個64位元暫存器等)的情況。此外,在其他實施例中,可存在一組暫存器在一個視圖中可經邏輯檢視或存取為單一1024位元暫存器及在另一視圖中為多個較小暫存器(例如,兩個512位元暫存器及/或四個256位元暫存器及/或八個128位元暫存器及/或十六個64位元暫存器等)的情況。
圖9A為用於多暫存器記憶體存取指令之合適指令格式之第一實施例的方塊圖。指令格式具有操作碼或作業碼950A。作業碼可表示可操作以識別待執行之指令及/或操作(例如,自記憶體載入多暫存器操作、多暫存器儲存至記憶體操作或其他多暫存器記憶體存取操作)之複數個位元或一或多個欄位。第一指令格式亦包括記憶體位置說明符952A以指定記憶體位置。記憶體位置說明符可表示複數個位元或一或多個欄位。所指定記憶體位置可表示在自記憶體載入指令狀況下之來源,或在寫入至記憶體指令狀 況下之目的地。藉由實例,說明符可用於指定待載入資料之起始位置(例如,資料之第一位元組)。第一指令格式亦包括可選暫存器說明符954A。暫存器說明符可指定暫存器。暫存器說明符可表示複數個位元或一或多個欄位。所指定暫存器可表示在自記憶體載入指令狀況下之目的地暫存器,或在寫入至記憶體指令狀況下之源暫存器。或者,可視情況省略該暫存器說明符(例如,暫存器可由指令隱含地指示而非經明確指定)。在一些實施例中,可基於明確指定或隱含指示之暫存器而指示一或多個其他暫存器。舉例而言,一或多個預定暫存器可經隱含地指示或隱含地與該明確指定或隱含指示之暫存器相關聯。舉例而言,一或多個相鄰、依序或連續暫存器可與該暫存器相關聯。作為另一實例,所有其他暫存器可與該暫存器相關聯。作為另一實例,不同暫存器組中之預定依序暫存器可與該暫存器相關聯。指令可隱含地指示暫存器之此類實施例之一個特定實例為載入或儲存操作涉及該架構中的全部架構可見之暫存器。或者,給定暫存器可專用於多暫存器載入、儲存或其他操作且因此可為隱含的。
圖9B為用於多暫存器記憶體存取指令之合適指令格式之第二實施例的方塊圖。第二指令格式具有操作碼或作業碼950B、記憶體位置說明符952B及暫存器說明符954B。此等中之每一者可如先前所描述。第二指令格式亦包括可選暫存器數目說明符956以指定記憶體存取操作中涉及之暫存器數目(例如,在寫入至記憶體操作狀況下用作 來源或在自記憶體載入操作狀況下用作目的地)。藉由實例,該暫存器數目說明符可指定或指示兩個暫存器、三個暫存器、四個暫存器或某一其他暫存器數目。在其他實施例中,並非指定暫存器數目,亦有可能指定與記憶體操作相關聯之位元數目(例如,為給定暫存器大小或位元數目之倍數)。此欄位為可選且非必需的。在另一實施例中,暫存器數目可為隱含的(例如,對於暫存器說明符954B隱含、對於作業碼950B隱含等)。
圖9C為用於多暫存器記憶體存取指令之合適指令格式之第三實施例的方塊圖。第三指令格式具有操作碼或作業碼950C及記憶體位置說明符952C。此等中之每一者可如先前所描述。第三指令格式亦包括複數個可選暫存器說明符958。在所說明之實施例中,展示四個暫存器說明符958-1至958-4,但可替代地包括較少(例如,兩個、三個)或四個以上。此等說明符中之每一者可表示複數個位元或一或多個欄位。此等多暫存器說明符可允許明確指定將在記憶體存取操作中涉及之待組合之暫存器。在一些狀況下,此可選特徵可用以最佳化或至少改良程式碼之效能、避免或至少減小用以來回移動資料之暫存器至暫存器操作的數目等。此等多暫存器說明符為可選且並非必需的。
此等僅為合適指令格式之幾個實例。應瞭解可視情況將額外欄位添加至此等指令格式中之任一者。在其他實施例中某些明確指定之欄位可對於該指令替代地視情況為隱含的。應瞭解說明符或欄位無需包括鄰接序列之位元, 可替代地視情況由非鄰接位元形成。說明符或欄位可視情況重疊。另外,說明符或欄位之所說明階/配置僅為說明性的。其他實施例可移動或重新配置欄位。
例示性核心架構、處理器及電腦架構
處理器核心可針對不同目的而以不同方式實施且實施於不同處理器中。舉例來說,此類核心之實施可包括:1)預期用於通用計算之通用有序核心;2)預期用於通用計算之高效能通用無序核心;3)預期主要用於圖形及/或科學(輸送量)計算之專用核心。不同處理器之實施可包括:1)包括預期用於通用計算之一或多個通用有序核心及/或預期用於通用計算之一或多個通用無序核心的CPU;及2)包括預期主要用於圖形及/或科學(輸送量)之一或多個專用核心的共處理器。此類不同處理器導致不同電腦系統架構,其可包括:1)來自CPU之單獨晶片上之共處理器;2)與CPU相同之封裝中之單獨晶粒上的共處理器;3)與CPU相同之晶粒上之共處理器(在此狀況下,此類共處理器有時被稱為專用邏輯,諸如整合圖形及/或科學(輸送量)邏輯,或稱為專用核心);及4)可包括在與所描述CPU相同之晶粒上之系統單晶片(有時被稱為應用核心或應用處理器),上述共處理器及額外功能性。接著描述例示性核心架構,其後接著描述例示性處理器及電腦架構。
例示性核心架構
有序及無序核心方塊圖
圖10A為說明根據本發明之實施例之例示性有 序管線及例示性暫存器重命名無序發佈/執行管線兩者的方塊圖。圖10B為說明根據本發明之實施例的待包括於處理器中之有序架構核心之例示性實施例及例示性暫存器重命名無序發佈/執行架構核心兩者的方塊圖。圖10A至圖10B中之實線框說明有序管線及有序核心,而虛線框之可選添加說明暫存器重命名、無序發佈/執行管線及核心。假定有序態樣為無序態樣之子集,將描述無序態樣。
圖10A中,處理器管線1000包括提取階段1002、長度解碼階段1004、解碼階段1006、分配階段1008、重命名階段1010、排程(亦稱為調度或發佈)階段1012、暫存器讀取/記憶體讀取階段1014、執行階段1016、寫回/記憶體寫入階段1018、異常處置階段1022及認可階段1024。
圖10B展示處理器核心1090,其包括耦接至執行引擎單元1050之前端單元1030且該兩者均耦接至記憶體單元1070。核心1090可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、超長指令字(VLIW)核心或混合或替代核心類型。作為另一選項,核心1090可為專用核心,諸如網路或通信核心、壓縮引擎、共處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心或類似者。
前端單元1030包括耦接至指令快取記憶體單元1034之分支預測單元1032,指令快取記憶體單元1034耦接至指令轉譯後備緩衝器(TLB)1036,指令轉譯後備緩衝器(TLB)1036耦接至指令提取單元1038,指令提取單元1038耦接至解碼單元1040。解碼單元1040(或解碼器)可解碼指令, 且產生為輸出一或多個微操作、微程式碼入口點、微指令、其他指令、或其他控制信號(其自原始指令解碼或以其他方式反映原始指令或自其導出)。解碼單元1040可使用各種不同機制來實施。合適機制之實例包括(但不限於)查找表、硬體實施、可程式化邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。在一個實施例中,核心1090包括儲存用於某些巨集指令(例如,在解碼單元1040中或以其他方式在前端單元1030內)之微碼的微碼ROM或其他媒體。解碼單元1040耦接至執行引擎單元1050中之重命名/分配器單元1052。
執行引擎單元1050包括耦接至引退單元1054及一組一或多個排程器單元1056之重命名/分配器單元1052。排程器單元1056表示任何數目個不同排程器,包括保留站、中央指令窗等。排程器單元1056耦接至實體暫存器檔案單元1058。實體暫存器檔案單元1058中之每一者表示一或多個實體暫存器檔案,不同之實體暫存器檔案儲存一或多個不同資料類型,諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,為待執行之下一指令之位址的指令指標)等。在一個實施例中,實體暫存器檔案單元1058包含向量暫存器單元、寫入遮罩暫存器單元及純量暫存器單元。此等暫存器單元可提供架構向量暫存器、向量遮罩暫存器及通用暫存器。實體暫存器檔案單元1058由引退單元1054重疊以說明可實施暫存器重命名及無序執行之各種方式(例如,使用重排序緩衝器及引退暫存器檔案;使用未來檔案、歷史緩衝器及引退暫存器檔案; 使用暫存器映射及暫存器之集區;等)。引退單元1054及實體暫存器檔案單元1058耦接至執行叢集1060。執行叢集1060包括一組一或多個執行單元1062及一組一或多個記憶體存取單元1064。執行單元1062可執行各種運算(例如,移位、加法、減法、乘法)且針對各種類型之資料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)。雖然一些實施例可包括專用於特定功能或功能集合之數個執行單元,其他實施例可包括僅一個執行單元或全部執行所有功能之多個執行單元。排程器單元1056、實體暫存器檔案單元1058及執行叢集1060經展示為可能複數個,此係因為某些實施例產生用於某些類型之資料/操作之單獨管線(例如,各自具有其自身排程器單元、實體暫存器檔案單元及/或執行叢集之純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線及/或記憶體存取管線,且在單獨記憶體存取管線的狀況下,實施其中僅此管線之執行叢集具有記憶體存取單元1064的某些實施例)。亦應理解當使用單獨管線時,此等管線中之一或多者可為無序發佈/執行及剩餘部分為有序的。
該組記憶體存取單元1064耦接至記憶體單元1070,其包括資料TLB單元1072耦接至資料快取記憶體單元1074,資料快取記憶體單元1074耦接至2級(L2)快取記憶體單元1076。在一個例示性實施例中,記憶體存取單元1064可包括載入單元、儲存位址單元及儲存資料單元,其中之每一者耦接至記憶體單元1070中之資料TLB單元1072。指 令快取記憶體單元1034進一步耦接至記憶體單元1070中之2級(L2)快取記憶體單元1076。L2快取記憶體單元1076耦接至快取記憶體之一或多個其他級且最終耦接至主記憶體。
藉由實例,例示性暫存器重命名無序發佈/執行核心架構可如下實施管線1000:1)指令提取1038執行提取階段1002及長度解碼階段1004;2)解碼單元1040執行解碼階段1006;3)重命名/分配器單元1052執行分配階段1008及重命名階段1010;4)排程器單元1056執行排程階段1012;5)實體暫存器檔案單元1058及記憶體單元1070執行暫存器讀取/記憶體讀取階段1014;執行叢集1060執行執行階段1016;6)記憶體單元1070及實體暫存器檔案單元1058執行寫回/記憶體寫入階段1018;7)異常處置階段1022中可涉及各種單元;及8)引退單元1054及實體暫存器檔案單元1058執行認可階段1024。
核心1090可支援一或多個指令集(例如,x86指令集(具有已添加較新版本之一些擴展);CA、Sunnyvale之MIPS技術公司的MIPS指令集;CA、Sunnyvale之ARM Holdings的ARM指令集(具有諸如NEON之可選額外擴展)),該等指令集包括本文所述之指令。在一個實施例中,核心1090包括用以支援緊縮資料指令集擴展(例如,AVX1、AVX2)之邏輯,藉此允許許多多媒體應用使用之操作使用緊縮資料來執行。
應理解該核心可支援多執行緒處理(執行操作或執行緒之兩個或兩個以上平行集合),及可以多種方式進行 此,包括時間分片多執行緒處理、同步多執行緒處理(其中單一實體核心提供用於實體核心正同步多執行緒處理的執行緒中之每一者之邏輯核心),或其組合(例如,時間分片提取及解碼及其後之同步多執行緒處理,諸如在Intel®超執行緒技術中)。
雖然在無序執行之上下文中描述暫存器重命名,但應理解所述暫存器重命名可用於有序架構中。雖然處理器之所說明實施例亦包括單獨指令快取記憶體單元1034及資料快取記憶體單元1074以及共享L2快取記憶體單元1076,但替代實施例可具有用於兩個指令及資料之單一內部快取記憶體,諸如1級(L1)內部快取記憶體或內部快取記憶體之多級。在一些實施例中,系統可包括內部快取記憶體與在核心及/或處理器外部之外部快取記憶體的組合。或者,所有快取記憶體可在核心及/或處理器之外部。
特定例示性有序核心架構
圖11A至圖11B說明較特定例示性有序核心架構之方塊圖,該核心將為晶片中之若干邏輯區塊(包括相同類型及/或不同類型之其他核心)中之一者。邏輯區塊經由具有一些固定功能邏輯、記憶體I/O介面及其他必需I/O邏輯(取決於應用)之較高頻寬互連網路(例如,環狀網路)通信。
圖11A為根據本發明之實施例之單一處理器核心連同其至晶粒上互連網路1102之連接以及其2級(L2)快取記憶體1104之本端子集的方塊圖。在一個實施例中,指令解碼器1100支援具有緊縮資料指令集擴展之x86指令集。 L1快取記憶體1106允許用以快取記憶體至純量及向量單元中之低延時存取。雖然在一個實施例中(為簡化設計),純量單元1108及向量單元1110使用單獨暫存器組(分別,純量暫存器1112及向量暫存器1114)且在其間傳送之資料經寫入至記憶體且接著自1級(L1)快取記憶體1106讀取回,本發明之替代實施例可使用不同方法(例如,使用單一暫存器組或包括允許資料在兩個暫存器檔案之間傳輸而無需寫入及讀取回的通信路徑)。
L2快取記憶體1104之本端子集為劃分成單獨本端子集(每個處理器核心一個)之全域L2快取記憶體的一部分。每一處理器核心具有至L2快取記憶體1104之其自身本端子集的直接存取路徑。處理器核心所讀取之資料儲存於其L2快取記憶體子集1104中,且可與其他處理器核心存取其自身本端L2快取記憶體子集而平行地快速存取。由處理器核心寫入之資料儲存於其自身L2快取記憶體子集1104中且在必要時自其他子集清空。環狀網路確保共享資料之一致性。環狀網路為雙向的,以允許代理程式(諸如處理器核心、L2快取記憶體及其他邏輯區塊)在晶片內彼此通信。每一環狀資料路徑為每個方向1012位元寬。
圖11B為根據本發明之實施例之圖11A中之處理器核心的部分的展開圖。圖11B包括L1快取記憶體1104之L1資料快取記憶體1106A部分,以及關於向量單元1110及向量暫存器1114之更多細節。具體而言,向量單元1110為16寬向量處理單元(VPU)(參見16寬ALU 1128),其執行整數、 單精度浮點及雙精度浮點指令中之一或多者。VPU支援藉由攪拌(swizzle)單元1120攪拌暫存器輸入,藉由數字轉換單元1122A-B進行數字轉換,及在記憶體輸入處藉由複製單元1124進行複製。寫入遮罩暫存器1126允許預測所得向量寫入。
具有整合記憶體控制器及圖形之處理器
圖12為根據本發明之實施例之處理器1200的方塊圖,其可具有一個以上核心,可具有整合記憶體控制器且可具有整合圖形。圖12中之實線框說明具有單一核心1202A、系統代理程式1210、一組一或多個匯流排控制器單元1216之處理器1200,而虛線框之可選添加說明替代處理器1200,其具有多個核心1202A-N、系統代理程式單元1210中之一組一或多個整合記憶體控制器單元1214及專用邏輯1208。
因此,處理器1200之不同實施可包括:1)具有為整合圖形及/或科學(輸送量)邏輯(其可包括一或多個核心)之專用邏輯1208及為一或多個通用核心(例如,通用有序核心、通用無序核心、兩者之組合)的核心1202A-N的CPU;2)具有為預期主要用於圖形及/或科學(輸送量)之大量專用核心之核心1202A-N的共處理器;及3)具有為大量通用有序核心之核心1202A-N的共處理器。因此,處理器1200可為通用處理器、共處理器或專用處理器,諸如網路或通信處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、輸送量多核心整合高(MIC)共處理器(包括30或30以上核心)、 嵌人式處理器或類似者。處理器可實施於一或多個晶片上。處理器1200可為一或多個基板之一部分及/或可使用數個製程技術中之任一者(諸如BiCMOS、CMOS或NMOS)而實施於該一或多個基板上。
記憶體階層包括核心內之快取記憶體之一或多個級、組或一或多個共享快取記憶體單元1206、及耦接至該組整合記憶體控制器單元1214之外部記憶體(未圖示)。該組共享快取記憶體單元1206可包括一或多個中級快取記憶體,諸如2級(L2)、3級(L3)、4級(L4)或快取記憶體之其他級、末級快取記憶體(LLC)及/或其組合。雖然在一個實施例中基於環狀之互連單元1212使整合圖形邏輯1208、該組共享快取記憶體單元1206及系統代理程式單元1210/整合記憶體控制器單元1214互連,但替代實施例可使用任何數目個眾所周知的技術用於使此類單元互連。在一個實施例中,在一或多個快取記憶體單元1206與核心1202-A-N之間維持一致性。
在一些實施例中,核心1202A-N中之一或多者能夠進行多執行緒處理。系統代理程式1210包括協調及操作核心1202A-N之彼等組件。系統代理程式單元1210可包括例如功率控制單元(PCU)及顯示單元。PCU可為或包括用於調節核心1202A-N及整合圖形邏輯1208之功率狀態所需的邏輯及組件。顯示單元係用於驅動一或多個外部連接之顯示器。
核心1202A-N就架構指令集而言可為均質或異 質的;亦即,核心1202A-N中之兩者或兩者以上可能夠執行相同指令集,而其他核心能夠僅執行所述指令集之子集或不同指令集。
例示性電腦架構
圖13至圖16為例示性電腦架構之方塊圖。此項技術中已知的用於以下各項之其他系統設計及組配亦為合適的:膝上型電腦、桌上型電腦、手持型PC、個人數位助理、工程工作站、伺服器、網路器件、網路集線器、交換器、嵌入式處理器、數位信號處理器(DSP)、圖形器件、視訊遊戲器件、機上盒、微控制器、蜂巢式電話、便攜式媒體播放器、手持式器件及各種其他電子器件。一般而言,能夠併入如本文所揭示之處理器及/或其他執行邏輯之大量系統或電子器件一般為合適的。
現參看圖13,展示根據本發明之一個實施例之系統1300之方塊圖。系統1300可包括耦接至控制器集線器1320之一或多個處理器1310、1315。在一個實施例中,控制器集線器1320包括圖形記憶體控制器集線器(GMCH)1390及輸入/輸出集線器(IOH)1350(其可在單獨晶片上);GMCH 1390包括耦接記憶體1340及共處理器1345之記憶體及圖形控制器;IOH 1350將輸入/輸出(I/O)器件1360耦接至GMCH 1390。或者,記憶體及圖形控制器中之一者或兩者整合於處理器(如本文所描述)內,記憶體1340及共處理器1345直接耦接至處理器1310及具有IOH 1350之單一晶片中之控制器集線器1320。
圖13中用虛線指示額外處理器1315之可選性質。每一處理器1310、1315可包括本文所述之處理核心中之一或多者且可為某一版本之處理器1200。
記憶體1340可為例如動態隨機存取記憶體(DRAM)、相變記憶體(PCM)或兩者之組合。對於至少一實施例,控制器集線器1320經由多點匯流排(諸如前側匯流排(FSB))、點對點介面(諸如快速路徑互連(QPI))或類似連接1395而與處理器1310、1315通信。
在一個實施例中,共處理器1345為專用處理器,諸如高輸送量MIC處理器、網路或通信處理器、壓縮引擎、圖形處理器、GPGPU、嵌人式處理器或類似者。在一個實施例中,控制器集線器1320可包括整合圖形加速器。
就包括架構、微架構、熱、功率消耗特性及類似者之一系列優點度量而言,在實體資源1310、1315之間可存在多種差異。
在一個實施例中,處理器1310執行控制一般類型之資料處理操作之指令。嵌入於該等指令內的可為共處理器指令。處理器1310將此等共處理器指令辨識為具有應由附接共處理器1345執行之類型。因此,處理器1310在共處理器匯流排或其他互連件上將此等共處理器指令(或表示共處理器指令之控制信號)發佈至共處理器1345。共處理器1345接受及執行所接收之共處理器指令。
現參看圖14,展示根據本發明之一實施例之第一較特定例示性系統1400之方塊圖。如圖14中所示,多處理 器系統1400為點對點互連系統,且包括經由點對點互連件1450耦接之第一處理器1470及第二處理器1480。處理器1470及1480中之每一者可為某一版本之處理器1200。在本發明之一個實施例中,處理器1470及1480分別為處理器1310及1315,而共處理器1438為共處理器1345。在另一實施例中,處理器1470及1480分別為處理器1310共處理器1345。
展示處理器1470及1480分別包括整合記憶體控制器(IMC)單元1472及1482。處理器1470亦包括點對點(P-P)介面1476及1478作為其匯流排控制器單元之一部分;類似地,第二處理器1480包括P-P介面1486及1488。處理器1470、1480可使用點對點(P-P)介面電路1478、1488經由P-P介面1450而交換資訊。如圖14中所示,IMC 1472及1482將處理器耦接至各別記憶體,亦即記憶體1432及記憶體1434,其可為本端附接至各別處理器之主記憶體之部分。
處理器1470、1480可各自使用點對點介面電路1476、1494、1486、1498經由個別P-P介面1452、1454來與晶片組1490交換資訊。晶片組1490可視情況經由高效能介面1439與共處理器1438交換資訊。在一個實施例中,共處理器1438為專用處理器,諸如高輸送量MIC處理器、網路或通信處理器、壓縮引擎、圖形處理器、GPGPU、嵌人式處理器或類似者。
共享快取記憶體(未圖示)可包括於兩處理器中之任一處理器中或在兩處理器外部,但經由P-P互連件而與 處理器連接,使得任一或兩處理器之本端快取記憶體資訊可儲存於共享快取記憶體中(若處理器經置放為低功率模式)。
晶片組1490可經由介面1496耦接至第一匯流排1416。在一個實施例中,第一匯流排1416可為周邊組件互連(PCI)匯流排、或諸如PCI快速匯流排之匯流排、或另一第三產生I/O互連件匯流排,但本發明之範疇並未如此限制。
如圖14中所示,各種I/O器件1414可連同匯流排橋接器1418一起耦接至第一匯流排1416,匯流排橋接器1418將第一匯流排1416耦接至第二匯流排1420。在一個實施例中,一或多個額外處理器1415,諸如共處理器、高輸送量MIC處理器、GPGPU、加速器(諸如,圖形加速器或數位信號處理(DSP)單元)、場可程式化閘陣列或任何其他處理器耦接至第一匯流排1416。在一個實施例中,第二匯流排1420可為低接腳計數(LPC)匯流排。在一個實施例中,各種器件可耦接至第二匯流排1420,包括(例如)鍵盤及/或滑鼠1422、通信器件1427及儲存單元1428(諸如可包括指令/程式碼及資料1430之磁碟機或其他大量儲存器件)。此外,音訊I/O 1424可耦接至第二匯流排1420。應注意其他架構為可能的。舉例而言,代替圖14之點對點架構,系統可實施多點匯流排或其他此類架構。
現參看圖15,展示根據本發明之一實施例之第二較特定例示性系統1500之方塊圖。圖14至圖15中之相同元 件帶有相同參考數字,且已自圖15忽略圖14之某些態樣以便避免混淆圖15之其他態樣。
圖15說明處理器1470、1480可分別包括整合記憶體及I/O控制邏輯(「CL」)1472及1482。因此,CL 1472、1482包括整合記憶體控制器單元且包括I/O控制邏輯。圖15說明不僅記憶體1432、1434耦接至CL 1472、1482,而且I/O器件1514亦耦接至控制邏輯1472、1482。舊版I/O器件1515耦接至晶片組1490。
現參看圖16,展示根據本發明之一實施例之SoC 1600之方塊圖。圖12中之類似元件帶有相同參考數字。又,虛線框為較高階SoC上之可選特徵。在圖16中,互連單元1602耦接至:應用程式處理器1610,其包括一組一或多個核心202A-N及共享快取記憶體單元1206;系統代理程式單元1210;匯流排控制器單元1216;整合記憶體控制器單元1214;一組一或多個共處理器1620,其可包括整合圖形邏輯、影像處理器、音訊處理器及視訊處理器;靜態隨機存取記憶體(SRAM)單元1630;直接記憶體存取(DMA)單元1632;及顯示單元1640,其用於耦接至一或多個外部顯示器。在一個實施例中,共處理器1620包括專用處理器,諸如網路或通信處理器、壓縮引擎、GPGPU、高輸送量MIC處理器、嵌人式處理器或類似者。
本文中所揭示機制之實施例可以硬體、軟體、韌體或此類實施方法之組合來實施。本發明之實施例可經實施為執行於可程式化系統上之電腦程式或程式碼,可程式 化系統包含至少一處理器、儲存系統(包括揮發性及非揮發性記憶體及/或儲存元件)、至少一輸入器件及至少一輸出器件。
可將諸如圖14中所說明之程式碼1430之程式碼應用於輸入指令以執行本文所述之功能且產生輸出資訊。可以已知方式將輸出資訊應用於一或多個輸出器件。出於本申請案之目的,處理系統包括具有處理器之任何系統,諸如;數位信號處理器(DSP)、微控制器、特殊應用積體電路(ASIC)或微處理器。
程式碼可用高階過程式或物件導向式程式設計語言實施以與處理系統通信。必要時,程式碼亦可用組合或機器語言實施。實際上,本文所述之機制範疇並不限於任何特定程式設計語言。在任何狀況下,該語言可編譯或解譯語言。
可由儲存於機器可讀媒體上之表示處理器內之各種邏輯的代表性指令來實施至少一實施例之一或多個態樣,當由機器讀取該等指令時,其使得機器製造邏輯以執行本文中所描述之技術。稱為「IP核心」之此類表示可儲存於有形機器可讀媒體上,並將其供應至各種消費者或製造設施,以載入至實際上製造邏輯或處理器之製造機器中。
此類機器可讀儲存媒體可包括(但不限於)由機器或器件製造或形成之製品之非暫時性實體配置,包括諸如硬碟機、包括軟碟機之任何其他類型之碟片、緊密光碟 唯讀記憶體(CD-ROM)、可重寫緊密光碟(CD-RW),及磁光碟、諸如隨機記憶體(ROM)之半導體器件、諸如動態隨機存取記憶體(DRAM)之隨機存取記憶體(RAM)、靜態隨機存取記憶體(SRAM)、可抹除可程式化唯讀記憶體(EPROM)、快閃記憶體、電可抹除可程式化唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁卡或光卡、或適合於儲存電子指令之任何其他類型之媒體。
因此,本發明之實施例亦包括含有指令或含有設計資料之非暫時性有形機器可讀媒體,諸如硬體描述語言(HDL),其定義本文所述之結構、電路、裝置、處理器及/或系統特徵。此類實施例亦可被稱為程式產品。
仿真(包括二進位轉譯、程式碼變形等)
在一些狀況下,指令轉換器可用以將指令自源指令集轉換為目標指令集。舉例而言,指令轉換器可將一指令轉譯(例如,使用靜態二進位轉譯、包括動態編譯之動態二進位轉譯)、變形、仿真或以其他方式轉換為待由核心處理之一或多個其他指令。指令轉換器可以軟體、硬體、韌體或其組合來實施。指令轉換器可處於處理器上、處理器之外、或部分處於處理器上及部分在處理器之外。
圖17為根據本發明之實施例之對比使用軟體指令轉換器來將源指令集中之二進位指令轉換為目標指令集中之二進位指令的方塊圖。在所說明之實施例中,指令轉換器為軟體指令轉換器,但或者該指令轉換器可以軟體、韌體、硬體或其各種組合來實施。圖17展示可使用x86編譯 器1704來編譯呈高階語言1702形式之程式以產生x86二進位程式碼1706,其可原生地由具有至少一x86指令集核心之處理器1716執行。具有至少一x86指令集核心之處理器1716表示藉由相容地執行或以其他方式處理以下各項以便達成與具有至少一x86指令集核心之Intel處理器實質上相同結果而可執行與具有至少一x86指令集核心之Intel處理器實質上相同功能的任何處理器:(1)Intel x86指令集核心之指令集之實質部分,或(2)目標為執行於具有至少一x86指令集核心之Intel處理器上之應用程式或其他軟體之目標程式碼版本。x86編譯器1704表示可操作以產生x86二進位程式碼1706(例如,目標程式碼)之編譯器,x86二進位程式碼1706可在具有或不具有額外鏈接處理之情況下執行於具有至少一x86指令集核心之處理器1716上。類似地,圖17展示可使用替代指令集編譯器1708來編譯呈高階語言1702形式之程式以產生替代指令集二進位程式碼1710,其可原生地由不具有至少一x86指令集核心之處理器1714執行(例如,具有執行CA、Sunnyvale之MIPS技術公司之MIPS指令集及/或執行CA、Sunnyvale之ARM Holdings之ARM指令集的核心的處理器)。指令轉換器1712用以將x86二進位程式碼1706轉換為可原生地由不具有x86指令集核心之處理器1714執行的程式碼。此轉換程式碼不可能與替代指令集二進位程式碼1710相同,此係因為能夠進行此轉換之指令轉換器難以製造;然而,該轉換程式碼將實現一般操作且由來自替代指令集之指令構成。因此,指令轉換器1712表示軟體、韌 體、硬體或其組合,其經由仿真、模擬或任何其他程序而允許不具有x86指令集處理器或核心之處理器或其他電子器件執行x86二進位程式碼1706。
亦可視情況在圖1至圖2中之任一者中使用關於圖3至圖4中之任一者描述之組件、特徵及細節。亦可視情況在圖1至圖4中之任一者中使用關於圖5至圖9中之任一者描述之組件、特徵及細節。此外,亦可視情況在本文所述之方法中之任一者中使用本文關於處理器或指令處理裝置中之任一者描述的組件、特徵及細節,該等組件、特徵及細節在實施例中可由及/或藉由此類處理器或裝置執行。
在描述及申請專利範圍中,已使用術語「耦接」及/或「連接」連同其派生詞。應理解此等術語並不預期為彼此之同義語。實情為,在特定實施例中,可使用「連接」以指示兩個或兩個以上元件彼此直接實體或電接觸。「耦合」可意謂兩個或兩個以上元件直接實體或電接觸。然而,「耦接」亦可意謂兩個或兩個以上元件未彼此直接接觸,但仍彼此合作或互動。舉例而言,記憶體存取單元可經由一或多個介入組件與一組暫存器及/或解碼單元耦接。在圖中,使用箭頭來展示耦接。
在描述及申請專利範圍中,可能已使用術語「邏輯」。如本文所使用,邏輯可包括硬體、韌體、軟體或其各種組合。邏輯之實例包括積體電路、特殊應用積體電路、類比電路、數位電路、程式化邏輯器件、包括指令之記憶體器件等。在一些實施例中,硬體邏輯可包括潛在地連同 其他電路組件一起之電晶體及/或閘極。
在以上描述中,闡述了特定細節以便提供對實施例之透徹理解。然而,可在不具有此等特定細節中之一些的情況下實踐其他實施例。本發明之範疇並不由上文提供之特定實例來判定,而是僅由以下申請專利範圍判定。在其他情況下,以方塊圖形式或不具有細節的方式來展示眾所周知的電路、結構、器件及操作以便避免混淆對該描述之理解。其中已展示及描述多個組件,在一些狀況下此等多個組件可併入於一個組件中。其中已展示及描述單一組件,在一些狀況下此單一組件可分成兩個或兩個以上組件。
已描述各種操作及方法。已在流程圖中以相對基本形式來描述該等方法中之一些,但可視情況將操作添加該等方法及/或自其移除。雖然流程圖展示根據實例實施例之操作之特定次序,但該特定次序為例示性的。替代實施例可視情況按不同次序執行該等操作,組合某些操作,重疊某些操作等。
某些操作可由硬體組件執行,或可體現於機器可執行或電路可執行指令中,該等指令可用以致使及/或導致藉由該等指令程式化之機器、電路或硬體組件(例如,處理器、處理器之部分、電路等)執行該等操作。該等操作亦可視情況由硬體與軟體之組合執行。處理器、機器、電路或硬體可包括具體或特定電路或其他邏輯(例如,潛在地與韌體及/或軟體組合之硬體),其可操作以執行及/或處理指令 且回應於指令而儲存結果。
一些實施例包括一製品(例如,電腦程式產品),其包括機器可讀媒體。媒體可包括提供(例如)儲存以可由機器讀取之形式的資訊的機制。機器可讀媒體可提供或已在其上儲存一指令或指令序列,該指令或指令序列在及/或當由機器執行時可操作以致使機器執行及/或導致機器執行本文中所揭示之操作、方法或技術中之一者。機器可讀媒體可提供(例如儲存)本文中所揭示之指令之實施例中的一或多者。
在一些實施例中,機器可讀媒體可包括有形及/或非暫時性機器可讀儲存媒體。舉例而言,有形及/或非暫時性機器可讀儲存媒體可包括軟碟、光學儲存媒體、光碟、光學資料儲存器件、CD-ROM、磁碟、磁光碟、唯讀記憶體(ROM)、可程式化ROM(PROM)、可抹除且可程式化ROM(EPROM)、電可抹除且可程式化ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體、相變記憶體、相變資料儲存材料、非揮發性記憶體、非揮發性資料儲存器件、非暫時性記憶體、非暫時性資料儲存器件、或類似者。非暫時性機器可讀儲存媒體並不由暫時傳播信號組成。在另一實施例中,機器可讀媒體可包括暫時機器可讀通信媒體,例如電、光學、聲學或其他形式之傳播信號,諸如載波、紅外線信號、數位信號或類似者。
合適機器之實例包括(但不限於)通用處理器、專 用處理器、指令處理裝置、數位邏輯電路、積體電路及其類似者。合適機器之其他實例包括併入此類處理器、指令處理裝置、數位邏輯電路或積體電路之計算器件及其他電子器件。此類計算器件及電子器件之實例包括(但不限於)桌上型電腦、膝上型電腦、筆記型電腦、平板電腦、上網本、智慧型手機、蜂巢式電話、伺服器、網路器件(例如,路由器及交換器)、行動網際網路器件(MID)、媒體播放器、智慧型電視、桌上型易網機、機上盒及視訊遊戲控制器。
舉例而言,遍及本說明書參考「一個實施例」、「實施例」、「一或多個實施例」、「一些實施例」指示可在本發明之實踐中包括特定特徵但未必為必需的。類似地,在該描述中,有時將各種特徵聚集在單一實施例、圖或其描述中以用於使本發明精簡且輔助理解各種發明態樣。然而,本發明之此方法不應解釋為反映本發明需要比每一請求項中明確所述之特徵更多的特徵之意圖。實情為,如以下申請專利範圍反映,本發明之態樣在於比單一所揭示實施例之全部特徵少。因此,在實施方式之後的申請專利範圍特此明確地併入此實施方式中,其中每一請求項使其自身獨立成為本發明之單獨實施例。
實例實施例
以下實例涉及其他實施例。可在一或多個實施例中任何位置使用該等實例中之細節。
實例1為包括複數個N位元暫存器之處理器。處理器亦包括解碼單元以接收多暫存器記憶體存取指令。多 暫存器記憶體存取指令將指示記憶體位置且將指示暫存器。處理器亦包括與解碼單元耦接且與複數個N位元暫存器耦接之記憶體存取單元。記憶體存取單元將回應於多暫存器記憶體存取指令而執行多暫存器記憶體存取操作。多暫存器記憶體存取操作將涉及在將包含所指示暫存器之複數個N位元暫存器中之每一者中的N位元資料。多暫存器記憶體存取操作亦將涉及記憶體之M×N位元線之不同對應N位元部分,亦即對應於所指示記憶體位置。視情況,應在多暫存器記憶體存取操作中涉及之複數個N位元暫存器中之N位元資料的位元總數應共計記憶體之線之M×N位元的至少一半。
實例2包括實例1之處理器,且視情況其中記憶體存取單元將執行以下操作:其中應在多暫存器記憶體存取操作中涉及之複數個N位元暫存器中之N位元資料的位元總數應共計記憶體之線之所有M×N位元。
實例3包括實例1之處理器,且視情況其中記憶體存取單元將執行以下操作:其中應在多暫存器記憶體存取操作中涉及之複數個N位元暫存器中之N位元資料的位元總數應共計至少256位元。
實例4包括實例3之處理器,且視情況其中記憶體存取單元將執行以下操作:其中應在多暫存器記憶體存取操作中涉及之複數個N位元暫存器中之N位元資料的位元總數應共計至少512位元。
實例5包括任何前述實例之處理器,且視情況其 中記憶體存取單元將執行將在至少三個N位元暫存器中之每一者涉及N位元資料的操作。
實例6包括任何前述實例之處理器,且視情況其中記憶體存取單元將執行將涉及至少四個N位元暫存器中之每一者中之N位元資料的操作。
實例7包括實例1之處理器,且視情況其中記憶體存取單元將執行以下操作:其將涉及至少四個128位元暫存器中之每一者中的128位元資料以及記憶體之線之不同的對應128位元部分(其將為至少512位元)。
實例8包括實例1之處理器,且視情況其中記憶體存取單元將執行以下操作:其將涉及至少兩個256位元暫存器中之每一者中的256位元資料以及記憶體之線之不同的對應256位元部分(其將為至少512位元)。
實例9包括實例1至8中之任一者之處理器,且視情況其中該處理器包括精簡指令集計算(RISC)處理器,且其中多暫存器記憶體存取指令包括自記憶體載入多暫存器指令,且其中記憶體存取單元將回應於該自記憶體載入多暫存器指令而將記憶體之M×N位元線之不同N位元部分載入於複數個N位元暫存器中之每一者中。視情況,應自記憶體之M×N位元線載入於複數個N位元暫存器中之不同N位元部分的位元總數應共計記憶體之線之M×N位元的至少一半。
實例10包括實例9之處理器,且視情況其中記憶體存取單元將記憶體之線之不同128位元部分(其為至少 512位元)載入於至少四個128位元暫存器中之每一者中。
實例11包括實例9之處理器,且視情況其中記憶體存取單元將記憶體之線之不同256位元部分(其為至少512位元)載入於至少兩個256位元暫存器中之每一者中。
實例12包括實例1至8中之任一者之處理器,且視情況其中處理器包括精簡指令集計算(RISC)處理器,且其中多暫存器記憶體存取指令包括多暫存器寫入至記憶體指令,且其中記憶體存取單元將回應於多暫存器寫入至記憶體指令而將N位元資料自複數個N位元暫存器中之每一者寫入至記憶體之M×N位元線的不同對應N位元部分。視情況,待自複數個N位元暫存器寫入至記憶體之M×N位元線的N位元資料之位元總數將共計記憶體之線之M×N位元的至少一半。視情況,記憶體之線之M×N位元的至少一半為至少256位元。
實例13包括實例1至8中之任一者之處理器,且視情況其中多暫存器記憶體存取指令將明確指定複數個暫存器中之每一者。
實例14包括實例1至8中之任一者之處理器,且視情況其中多暫存器記憶體存取指令將指定複數個暫存器之數目。
實例15為由處理器執行之方法,其包括接收多暫存器記憶體存取指令。多暫存器記憶體存取指令指示記憶體位置且指示暫存器。該方法包括回應於多暫存器記憶體存取指令而執行多暫存器記憶體存取操作。該操作涉及包 含所指示暫存器之複數個N位元暫存器中之每一者中的N位元資料。該操作亦涉及記憶體之M×N位元線之對應於所指示記憶體位置的不同對應N位元部分。視情況,多暫存器記憶體存取操作中涉及之複數個N位元暫存器中之N位元資料的位元總數共計記憶體之線之M×N位元的至少一半。
實例16包括實例15之方法,且視情況其中多暫存器記憶體存取操作中涉及之複數個N位元暫存器中之N位元資料的位元總數共計記憶體之線的所有M×N位元。
實例17包括實例15之方法,且視情況其中多暫存器記憶體存取操作中涉及之複數個N位元暫存器中之N位元資料的位元總數共計至少256位元。
實例18包括任何前述實例之方法,且視情況其中執行包括執行涉及至少四個N位元暫存器中之每一者中之N位元資料的操作。
實例19包括實例15之方法,且視情況其中執行包括執行以下操作:其涉及至少四個128位元暫存器中之每一者中之128位元資料以及記憶體之線之不同對應128位元部分(其為至少512位元)。
實例20包括實例15之方法,且視情況其中執行包括執行以下操作:其涉及至少兩個256位元暫存器中之每一者中之256位元資料以及記憶體之線之不同對應256位元部分(其為至少512位元)。
實例21包括實例15至20中之任一者之方法,且視情況其中接收包括接收自記憶體載入多暫存器指令,且其 中執行包括回應於自記憶體載入多暫存器指令而將記憶體之M×N位元線之不同N位元部分載入於複數個N位元暫存器中之每一者中。視情況,待自記憶體之M×N位元線載入於複數個N位元暫存器中的不同N位元部分之位元總數共計記憶體之線之M×N位元的至少一半。
實例22包括實例21之方法,且視情況其中執行包括將記憶體之線之不同128位元部分(其為至少512位元)載入於至少四個128位元暫存器中之每一者中。
實例23包括實例21之方法,且視情況其中執行包括將記憶體之線之不同256位元部分(其為至少512位元)載入於至少兩個256位元暫存器中之每一者中。
實例24包括實例15至20中之任一者之方法,且視情況其中接收包括接收多暫存器寫入至記憶體指令,且其中執行包括回應於多暫存器寫入至記憶體指令而將N位元資料自複數個N位元暫存器中之每一者寫入至記憶體之M×N位元線的不同對應N位元部分。視情況,自複數個N位元暫存器寫入至記憶體之M×N位元線的N位元資料之位元總數共計記憶體之線之M×N位元的至少一半。視情況,記憶體之線之M×N位元的至少一半為至少256位元。
實例25為用以處理指令之系統,其包括互連件、與互連件耦接之動態隨機存取記憶體(DRAM)及與互連件耦接之處理器。回應於將指示DRAM中之記憶體位置及暫存器之多暫存器記憶體存取指令,處理器將執行多暫存器記憶體存取操作。該操作將涉及將包含所指示暫存器之處 理器之複數個N位元暫存器中之每一者中的N位元資料。該操作亦將涉及DRAM之M×N位元線的將對應於所指示記憶體位置之不同對應N位元部分。視情況,應在多暫存器記憶體存取操作中涉及之複數個N位元暫存器中之N位元資料的位元總數應共計記憶體之線之M×N位元的至少一半。
實例26包括實例25之系統,且視情況其中將在多暫存器記憶體存取操作中涉及之複數個N位元暫存器中之N位元資料的位元總數將共計記憶體之線的所有M×N位元(其為至少512位元)。
實例27為一製品,其包括儲存多暫存器記憶體存取指令之非暫時性機器可讀儲存媒體。多暫存器記憶體存取指令將指示記憶體位置及暫存器。多暫存器記憶體存取指令在由機器處理的情況下可操作以致使機器執行以下操作:其包括執行涉及將包含所指示暫存器之複數個N位元暫存器中之每一者中的N位元資料之多暫存器記憶體存取操作。該操作亦將涉及記憶體之M×N位元線的將對應於所指示記憶體位置之不同對應N位元部分。視情況,多暫存器記憶體存取操作中涉及之複數個N位元暫存器中之N位元資料的位元總數共計記憶體之線之M×N位元的至少一半。
實例28包括實例27之製品,且視情況其中將在多暫存器記憶體存取操作中涉及之複數個N位元暫存器中之N位元資料的位元總數應共計記憶體之線之所有M×N位元(其為至少512位元)。
實例29為包括用於接收多暫存器記憶體存取指 令的構件之處理器。多暫存器記憶體存取指令將指示記憶體位置且指示暫存器。該處理器亦包括用於回應於多暫存器記憶體存取指令而執行多暫存器記憶體存取操作的構件。該操作將涉及包含所指示暫存器之複數個N位元暫存器中之每一者中的N位元資料。該操作亦涉及記憶體之M×N位元線之對應於所指示記憶體位置的不同對應N位元部分。視情況,多暫存器記憶體存取操作中涉及之複數個N位元暫存器中之N位元資料的位元總數共計記憶體之線之M×N位元的至少一半。
實例30包括實例29之處理器,且視情況其中多暫存器記憶體存取操作中涉及之複數個N位元暫存器中之N位元資料的位元總數總計記憶體之線的所有M×N位元。
實例31為儲存一指令之機器可讀儲存媒體,其在由機器執行時將致使機器執行實例15至24中之任一者之方法。
實例32為用以執行實例15至24中之任一者之方法的處理器。
實例33為包括用於執行實例15至24中之任一者之方法的構件之處理器。
實例34為包括用以執行實例15至24中之任一者之方法的積體電路及/或邏輯及/或單元及/或組件及/或模組的處理器。
實例35為包括處理器且視情況包括動態隨機存取記憶體(DRAM)之電腦系統,該電腦系統用以執行實例15 至24中之任一者之方法。
實例36為用以執行實質上如本文所描述之方法或操作之處理器。
實例37為包括用於執行實質上如本文所描述之方法或操作的構件之處理器。
實例38為用以執行實質上如本文所描述之指令之處理器。
實例39為包括用於執行實質上如本文所描述之指令之操作的構件之處理器。
100‧‧‧電腦系統
102‧‧‧處理器
104‧‧‧多暫存器記憶體存取指令
106‧‧‧解碼單元
108‧‧‧記憶體存取單元
109‧‧‧快取記憶體
110-1、110-2、110-M、112‧‧‧暫存器
114-1、114-2、114-M‧‧‧N位元資料
116‧‧‧M×N位元線
118‧‧‧記憶體位置
120‧‧‧記憶體
122‧‧‧M×N位元快取線

Claims (29)

  1. 一種處理器,其包含:一解碼單元,用以接收一多暫存器記憶體存取指令,該多暫存器記憶體存取指令指示出一記憶體位置並指示出一暫存器,其中,該多暫存器記憶體存取指令所指示出的該記憶體位置對應於一M×N位元記憶體線,該M×N位元記憶體線包含整數M個N位元部分;複數個N位元暫存器,其包含所指示出之該暫存器;以及一記憶體存取單元,其與該解碼單元及該等複數個N位元暫存器耦接,該記憶體存取單元可回應於該多暫存器記憶體存取指令而進行一多暫存器記憶體存取操作,該多暫存器記憶體存取操作涉及該等複數個N位元暫存器中之每一者中的N位元資料以及該M×N位元記憶體線的所對應數個不同N位元部分,其中,該多暫存器記憶體存取操作所涉及的在該等複數個N位元暫存器中之該等N位元資料的位元總數合計達該M×N位元記憶體線的至少一半位元量。
  2. 如請求項1之處理器,其中,該多暫存器記憶體存取操作所涉及的在該等複數個N位元暫存器中之該等N位元資料的該位元總數合計等於該M×N位元記憶體線之位元總量。
  3. 如請求項1之處理器,其中,該多暫存器記憶體存取操 作所涉及的在該等複數個N位元暫存器中之該等N位元資料的該位元總數合計達至少256個位元。
  4. 如請求項3之處理器,其中,該多暫存器記憶體存取操作所涉及的在該等複數個N位元暫存器中之該等N位元資料的該位元總數合計達至少512個位元。
  5. 如請求項1之處理器,其中,該等複數個N位元暫存器包含至少三個N位元暫存器。
  6. 如請求項5之處理器,其中,該等複數個N位元暫存器包含至少四個N位元暫存器。
  7. 如請求項6之處理器,其中,N等於128,並且該M×N位元記憶體線包含至少512個位元。
  8. 如請求項1之處理器,其中,N等於256,該等複數個N位元暫存器包含至少兩個256位元暫存器,並且該M×N位元記憶體線包含至少512個位元。
  9. 如請求項1之處理器,其中,該處理器包含一精簡指令集計算(RISC)處理器,其中,該多暫存器記憶體存取指令包含一自記憶體載入多暫存器指令,並且其中,該記憶體存取單元可回應於該自記憶體載入多暫存器指令而把該M×N位元記憶體線之該等不同N位元部分載入到該等複數個N位元暫存器中,其中,要被從該M×N位元記憶體線載入到該等複數個N位元暫存器中的該等不同N位元部分之位元總數合計達該M×N位元記憶體線的至少一半位元量。
  10. 如請求項9之處理器,其中,該記憶體存取單元會把包 含至少512個位元的該M×N位元記憶體線的不同128位元部分載入到至少四個128位元暫存器中。
  11. 如請求項9之處理器,其中,該記憶體存取單元會把包含至少512個位元的該M×N位元記憶體線的不同256位元部分載入到至少兩個256位元暫存器中。
  12. 如請求項1之處理器,其中,該處理器包含一精簡指令集計算(RISC)處理器,其中,該多暫存器記憶體存取指令包含一多暫存器寫入至記憶體指令,並且其中,該記憶體存取單元可回應於該多暫存器寫入至記憶體指令而把來自該等複數個N位元暫存器的該等N位元資料寫入至該M×N位元記憶體線的該等所對應不同N位元部分,其中,來自該等複數個N位元暫存器的要被寫入至該M×N位元記憶體線的該等N位元資料之位元總數合計達該M×N位元記憶體線的至少一半位元量,並且其中,該M×N位元記憶體線之該至少一半位元量為至少256個位元。
  13. 如請求項1之處理器,其中,該多暫存器記憶體存取指令明確地指明該等複數個暫存器中之各者。
  14. 如請求項1之處理器,其中,該多暫存器記憶體存取指令指明該等複數個暫存器之數目。
  15. 如請求項1之處理器,其中,該記憶體存取單元可回應於該多暫存器記憶體存取指令而進行一多暫存器載入操作,該多暫存器載入操作係用於把來自於該M×N位元記憶體線之該等不同N位元部分各者的N位元資料 載入至該等複數個N位元暫存器中之對應者的完全寬度中,並且其中,該等複數個N位元暫存器包含至少三個暫存器。
  16. 如請求項1之處理器,其中,該多暫存器記憶體存取操作涉及該等複數個N位元暫存器中各含有的要被從該M×N位元記憶體線中之所對應的不同N位元部分載入或被儲存至該M×N位元記憶體線中之所對應的不同N位元部分的一組不同N位元資料。
  17. 一種由處理器執行的方法,其包含以下步驟:接收一多暫存器記憶體存取指令,該多暫存器記憶體存取指令指示出一記憶體位置並指示出一暫存器,其中,該多暫存器記憶體存取指令所指示出的該記憶體位置對應於一M×N位元記憶體線,該M×N位元記憶體線包含整數M個N位元部分;以及回應於該多暫存器記憶體存取指令而進行一多暫存器記憶體存取操作,該多暫存器記憶體存取操作涉及複數個N位元暫存器中之每一者中的不同一組N位元資料、及該M×N位元記憶體線之所對應數個不同N位元部分,其中,該等複數個N位元暫存器包含所指示出之該暫存器,其中,該多暫存器記憶體存取操作所涉及的該等複數個N位元暫存器中之該等N位元資料的位元總數合計達該M×N位元記憶體線的至少一半位元量。
  18. 如請求項17之方法,其中,該多暫存器記憶體存取操 作所涉及的該等複數個N位元暫存器中之該等N位元資料的該位元總數合計等於該M×N位元記憶線的所有位元量。
  19. 如請求項17之方法,其中,該多暫存器記憶體存取操作所涉及的該等複數個N位元暫存器中之該等N位元資料的該位元總數合計達至少256個位元。
  20. 如請求項19之方法,其中,該等複數個N位元暫存器包含至少四個N位元暫存器。
  21. 如請求項20之方法,其中,N等於128,並且且該M×N位元記憶體線包含至少512個位元。
  22. 如請求項17之方法,其中,N等於256,該等複數個N位元暫存器包含至少兩個256位元暫存器,並且該M×N位元記憶體線包含至少512個位元。
  23. 如請求項17之方法,其中,接收該多暫存器記憶體存取指令之步驟包含:接收一自記憶體載入多暫存器指令,並且其中,進行該多暫存器記憶體存取操作之步驟包含:回應於該自記憶體載入多暫存器指令而把該M×N位元記憶體線之該等不同N位元部分載入到該等複數個N位元暫存器中,其中,被從該M×N位元記憶體線載入到該等複數個N位元暫存器中的該等不同N位元部分之位元總數合計達該M×N位元記憶體線的至少一半位元量。
  24. 一種用於處理指令的系統,其包含:一互連件; 與該互連件耦接的一動態隨機存取記憶體(DRAM);以及與該互連件耦接的一處理器,該處理器可進行下列步驟:回應於指示出該DRAM中之一記憶體位置及一暫存器的一多暫存器記憶體存取指令而進行一多暫存器記憶體存取操作,該多暫存器記憶體存取操作涉及在該處理器之包含所指示出之該暫存器的複數個N位元暫存器中之每一者中的N位元資料、及該DRAM之對應於所指示出之該記憶體位置的一M×N位元線的所對應數個不同N位元部分,其中,該DRAM之該M×N位元線包含整數M個N位元部分,其中,該多暫存器記憶體存取操作所涉及的該等複數個N位元暫存器中之該等N位元資料的位元總數合計達該M×N位元線的至少一半位元量。
  25. 如請求項24之系統,其中,該多暫存器記憶體存取操作所涉及的該等複數個N位元暫存器中之該等N位元資料的該位元總數合計等於該M×N位元線的所有位元量,該M×N位元線包含至少512個位元。
  26. 一種儲存有多暫存器記憶體存取指令的非暫時性機器可讀儲存媒體,其中,該多暫存器記憶體存取指令會指示出一記憶體位置和一暫存器,並且該多暫存器記憶體存取指令在受一機器處理時可運作來致使該機器進行 包含以下各者的操作:進行一多暫存器記憶體存取操作,該多暫存器記憶體存取操作涉及包含所指示出之該暫存器的複數個N位元暫存器中之每一者中的N位元資料、及對應於所指示出之該記憶體位置的一M×N位元記憶體線的所對應數個不同N位元部分,其中,該M×N位元記憶體線包含整數M個N位元部分,並且其中,該多暫存器記憶體存取操作所涉及的該等複數個N位元暫存器中之該等N位元資料的位元總數總共合計達該位元記憶體線的至少一半位元量。
  27. 如請求項26之非暫時性機器可讀儲存媒體,其中,該多暫存器記憶體存取操作所涉及的該等複數個N位元暫存器中之該等N位元資料的該位元總數合計等於該M×N位元記憶體線的所有位元量,該M×N位元記憶體線包含至少512個位元。
  28. 一種處理器,其包含:複數個N位元暫存器;一解碼單元,用以接收一指令,該指令指示出一記憶體位置並指示出一暫存器;以及一記憶體存取單元,其與該解碼單元及該等複數個N位元暫存器耦接,該記憶體存取單元可回應於該指令而把對應於所指示出之該記憶體位置的一M×N位元記憶體線的數個不同N位元部分載入到該等複數個N位元暫存器中之包含所指示出之該暫存器的至少兩個N 位元暫存器中之對應者中,其中,該DRAM之該M×N位元線包含整數M個N位元部分,並且其中,要被載入到該等至少兩個N位元暫存器中的該等不同N位元部分的位元總數合計達該M×N位元記憶體線的至少一半位元量。
  29. 如請求項28之處理器,其中,M和N為4和128、2和256或8和64,並且其中,該等複數個N位元暫存器意含連續的暫存器。
TW103122085A 2013-06-28 2014-06-26 多暫存器記憶體存取指令、處理器、方法及系統 TWI567751B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/931,008 US9424034B2 (en) 2013-06-28 2013-06-28 Multiple register memory access instructions, processors, methods, and systems

Publications (2)

Publication Number Publication Date
TW201508767A TW201508767A (zh) 2015-03-01
TWI567751B true TWI567751B (zh) 2017-01-21

Family

ID=52116843

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103122085A TWI567751B (zh) 2013-06-28 2014-06-26 多暫存器記憶體存取指令、處理器、方法及系統

Country Status (8)

Country Link
US (8) US9424034B2 (zh)
EP (2) EP3822772A1 (zh)
KR (2) KR20150138343A (zh)
CN (2) CN108845826B (zh)
BR (1) BR112015030001A2 (zh)
RU (1) RU2636675C2 (zh)
TW (1) TWI567751B (zh)
WO (1) WO2014210363A1 (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8515052B2 (en) 2007-12-17 2013-08-20 Wai Wu Parallel signal processing system and method
US9424034B2 (en) 2013-06-28 2016-08-23 Intel Corporation Multiple register memory access instructions, processors, methods, and systems
US9779019B2 (en) * 2014-06-05 2017-10-03 Micron Technology, Inc. Data storage layout
US10241800B2 (en) 2015-06-16 2019-03-26 International Business Machines Corporation Split-level history buffer in a computer processing unit
US20170192782A1 (en) * 2015-12-30 2017-07-06 Robert Valentine Systems, Apparatuses, and Methods for Aggregate Gather and Stride
US10255072B2 (en) 2016-07-01 2019-04-09 Intel Corporation Architectural register replacement for instructions that use multiple architectural registers
US11593117B2 (en) * 2018-06-29 2023-02-28 Qualcomm Incorporated Combining load or store instructions
US20200004535A1 (en) * 2018-06-30 2020-01-02 Intel Corporation Accelerator apparatus and method for decoding and de-serializing bit-packed data
US10896265B2 (en) 2018-08-02 2021-01-19 Micron Technology, Inc. Register access
US11144364B2 (en) 2019-01-25 2021-10-12 International Business Machines Corporation Supporting speculative microprocessor instruction execution
US20220056293A1 (en) * 2019-02-12 2022-02-24 Sakata Inx Corporation Ink composition for photo-curable inkjet printing
CN110187919B (zh) * 2019-05-27 2021-07-20 眸芯科技(上海)有限公司 配置寄存器的装置、方法及系统
US11914511B2 (en) * 2020-06-22 2024-02-27 Apple Inc. Decoupling atomicity from operation size
US11269631B2 (en) * 2020-07-29 2022-03-08 Ghost Locomotion Inc. Extending fused multiply-add instructions
CN112328511B (zh) * 2021-01-04 2021-05-04 统信软件技术有限公司 一种数据处理方法、计算设备及可读存储介质
US11586440B2 (en) * 2021-06-01 2023-02-21 International Business Machines Corporation Link stack based instruction prefetch augmentation
US20230089349A1 (en) * 2021-09-21 2023-03-23 Wisconsin Alumni Research Foundation Computer Architecture with Register Name Addressing and Dynamic Load Size Adjustment
CN114780148B (zh) * 2022-06-17 2022-09-23 飞腾信息技术有限公司 一种系统寄存器访问指令的执行方法、装置及电子设备
US11886291B1 (en) * 2022-07-21 2024-01-30 Dell Products L.P. Providing cache line metadata over multiple cache lines

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5944811A (en) * 1996-08-30 1999-08-31 Nec Corporation Superscalar processor with parallel issue and execution device having forward map of operand and instruction dependencies
US6173393B1 (en) * 1998-03-31 2001-01-09 Intel Corporation System for writing select non-contiguous bytes of data with single instruction having operand identifying byte mask corresponding to respective blocks of packed data
US6662292B1 (en) * 1999-07-14 2003-12-09 Broadcom Corporation Memory access system
US20040078608A1 (en) * 2001-04-02 2004-04-22 Ruban Kanapathippillai Method and apparatus for power reduction in a digital signal processor integrated circuit
US7389317B2 (en) * 1993-11-30 2008-06-17 Texas Instruments Incorporated Long instruction word controlling plural independent processor operations
US20110040939A1 (en) * 2004-06-02 2011-02-17 Broadcom Corporation Microprocessor with integrated high speed memory

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5913054A (en) * 1996-12-16 1999-06-15 International Business Machines Corporation Method and system for processing a multiple-register instruction that permit multiple data words to be written in a single processor cycle
US6049897A (en) * 1997-01-07 2000-04-11 Intel Corporation Multiple segment register use with different operand size
US6014684A (en) 1997-03-24 2000-01-11 Intel Corporation Method and apparatus for performing N bit by 2*N-1 bit signed multiplication
US6674536B2 (en) * 1997-04-30 2004-01-06 Canon Kabushiki Kaisha Multi-instruction stream processor
US6230253B1 (en) 1998-03-31 2001-05-08 Intel Corporation Executing partial-width packed data instructions
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
ATE372542T1 (de) * 2002-05-24 2007-09-15 Nxp Bv Zugriff zum breiten speicher
US7437532B1 (en) * 2003-05-07 2008-10-14 Marvell International Ltd. Memory mapped register file
GB2409066B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2409059B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2409062C (en) * 2003-12-09 2007-12-11 Advanced Risc Mach Ltd Aliasing data processing registers
GB2411976B (en) * 2003-12-09 2006-07-19 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
US7475222B2 (en) * 2004-04-07 2009-01-06 Sandbridge Technologies, Inc. Multi-threaded processor having compound instruction and operation formats
US9557994B2 (en) * 2004-07-13 2017-01-31 Arm Limited Data processing apparatus and method for performing N-way interleaving and de-interleaving operations where N is an odd plural number
US7398347B1 (en) 2004-07-14 2008-07-08 Altera Corporation Methods and apparatus for dynamic instruction controlled reconfigurable register file
EP1873627B1 (en) 2006-06-28 2009-05-27 STMicroelectronics S.r.l. A clustered SIMD processor architecture
US8060724B2 (en) * 2008-08-15 2011-11-15 Freescale Semiconductor, Inc. Provision of extended addressing modes in a single instruction multiple data (SIMD) data processor
US8850166B2 (en) * 2010-02-18 2014-09-30 International Business Machines Corporation Load pair disjoint facility and instruction therefore
US8904153B2 (en) * 2010-09-07 2014-12-02 International Business Machines Corporation Vector loads with multiple vector elements from a same cache line in a scattered load operation
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
WO2013089707A1 (en) * 2011-12-14 2013-06-20 Intel Corporation System, apparatus and method for loop remainder mask instruction
CN104011668B (zh) 2011-12-22 2017-03-22 英特尔公司 用于将源操作数映射到不同范围的系统、装置和方法
WO2013095581A1 (en) 2011-12-22 2013-06-27 Intel Corporation Apparatus and method for sliding window data access
CN104011662B (zh) * 2011-12-23 2017-05-10 英特尔公司 用于提供向量混合和置换功能的指令和逻辑
US9619226B2 (en) 2011-12-23 2017-04-11 Intel Corporation Systems, apparatuses, and methods for performing a horizontal add or subtract in response to a single instruction
US9563425B2 (en) * 2012-11-28 2017-02-07 Intel Corporation Instruction and logic to provide pushing buffer copy and store functionality
CN103150146B (zh) * 2013-01-31 2015-11-25 西安电子科技大学 基于可扩展处理器架构的专用指令集处理器及其实现方法
US9424034B2 (en) 2013-06-28 2016-08-23 Intel Corporation Multiple register memory access instructions, processors, methods, and systems

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7389317B2 (en) * 1993-11-30 2008-06-17 Texas Instruments Incorporated Long instruction word controlling plural independent processor operations
US5944811A (en) * 1996-08-30 1999-08-31 Nec Corporation Superscalar processor with parallel issue and execution device having forward map of operand and instruction dependencies
US6173393B1 (en) * 1998-03-31 2001-01-09 Intel Corporation System for writing select non-contiguous bytes of data with single instruction having operand identifying byte mask corresponding to respective blocks of packed data
US6662292B1 (en) * 1999-07-14 2003-12-09 Broadcom Corporation Memory access system
US20040078608A1 (en) * 2001-04-02 2004-04-22 Ruban Kanapathippillai Method and apparatus for power reduction in a digital signal processor integrated circuit
US20110040939A1 (en) * 2004-06-02 2011-02-17 Broadcom Corporation Microprocessor with integrated high speed memory

Also Published As

Publication number Publication date
WO2014210363A1 (en) 2014-12-31
US20180122430A1 (en) 2018-05-03
US10170165B2 (en) 2019-01-01
KR20180034684A (ko) 2018-04-04
US20180122432A1 (en) 2018-05-03
US20180033468A1 (en) 2018-02-01
RU2636675C2 (ru) 2017-11-27
US20180122429A1 (en) 2018-05-03
US20180122431A1 (en) 2018-05-03
US10163468B2 (en) 2018-12-25
RU2015151132A (ru) 2017-06-01
CN105247477A (zh) 2016-01-13
BR112015030001A2 (pt) 2017-07-25
KR20150138343A (ko) 2015-12-09
US10141033B2 (en) 2018-11-27
US10102888B2 (en) 2018-10-16
US9786338B2 (en) 2017-10-10
US10153011B2 (en) 2018-12-11
EP3014416A4 (en) 2017-02-22
TW201508767A (zh) 2015-03-01
US20180122433A1 (en) 2018-05-03
CN105247477B (zh) 2018-06-19
KR101964350B1 (ko) 2019-04-01
CN108845826A (zh) 2018-11-20
EP3014416A1 (en) 2016-05-04
CN108845826B (zh) 2022-10-14
EP3822772A1 (en) 2021-05-19
US10153012B2 (en) 2018-12-11
US20160358636A1 (en) 2016-12-08
US20150006848A1 (en) 2015-01-01
US9424034B2 (en) 2016-08-23

Similar Documents

Publication Publication Date Title
TWI567751B (zh) 多暫存器記憶體存取指令、處理器、方法及系統
CN107729048B (zh) 提供向量压缩和旋转功能的指令和逻辑
CN107077321B (zh) 用于执行融合的单个周期递增-比较-跳转的指令和逻辑
CN108292229B (zh) 用于重新出现的相邻聚集的指令和逻辑
TWI738682B (zh) 用於載入索引和散佈元件的處理器、方法及系統
TWI641993B (zh) 用以反轉與置換在一遮罩暫存器內的位元之設備及方法(二)
JP5806748B2 (ja) 書き込みマスク・レジスタの末尾の最下位マスキング・ビットを判定するためのシステム、装置、および方法
TWI515653B (zh) 指令順序執行之指令對、處理器、方法及系統
CN110659129A (zh) 用于数据表示之间的一致、加速的转换的装置和方法
CN108292271B (zh) 用于向量置换的指令和逻辑
TWI603261B (zh) 用以執行離心操作的指令及邏輯
TWI752034B (zh) 用以校驗具有指示校驗位元值之位元的位元校驗處理器、方法、系統與指令
TWI729029B (zh) 用於向量位元欄壓縮及擴展的指令及邏輯
TWI544412B (zh) 用於產生抑制的位址軌跡之設備和方法
TWI628595B (zh) 用以執行反離心操作之處理設備和非暫態機器可讀取媒體
JP5798650B2 (ja) 短整数の乗算の数を減らすためのシステム、装置、および方法
TW201712530A (zh) 用於改善狀態相依計算效能的系統、方法和設備
JP5753603B2 (ja) データ要素内のビットをゼロ化するためのシステム、装置、および方法