TWI524271B - 模式相依的頻寬負載至較寬暫存器處理器,方法和系統 - Google Patents
模式相依的頻寬負載至較寬暫存器處理器,方法和系統 Download PDFInfo
- Publication number
- TWI524271B TWI524271B TW103121018A TW103121018A TWI524271B TW I524271 B TWI524271 B TW I524271B TW 103121018 A TW103121018 A TW 103121018A TW 103121018 A TW103121018 A TW 103121018A TW I524271 B TWI524271 B TW I524271B
- Authority
- TW
- Taiwan
- Prior art keywords
- processor
- register
- partial width
- memory
- width load
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 75
- 230000001419 dependent effect Effects 0.000 title claims description 35
- 230000015654 memory Effects 0.000 claims description 243
- 230000008859 change Effects 0.000 claims description 32
- 238000012545 processing Methods 0.000 claims description 30
- 230000004044 response Effects 0.000 claims description 20
- 238000003860 storage Methods 0.000 claims description 19
- 238000004519 manufacturing process Methods 0.000 claims description 10
- 239000000872 buffer Substances 0.000 claims description 8
- 230000008878 coupling Effects 0.000 claims description 6
- 238000010168 coupling process Methods 0.000 claims description 6
- 238000005859 coupling reaction Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 claims description 3
- 230000007704 transition Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 37
- 230000007246 mechanism Effects 0.000 description 14
- 239000003795 chemical substances by application Substances 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 235000012431 wafers Nutrition 0.000 description 9
- 238000007667 floating Methods 0.000 description 8
- 238000000605 extraction Methods 0.000 description 6
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000003756 stirring Methods 0.000 description 1
- 239000011232 storage material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Description
本文所述之實施例一般關於處理器。尤其是,本文所述之實施例一般關於將資料從記憶體載入處理器中。
處理器的指令集通常包括處理器能夠執行或進行之各種不同類型的指令。例如,指令集一般可能包括各種算術指令、各種邏輯指令、用以將資料從記憶體載入至處理器中的各種載入指令、等等。
一項挑戰為通常限制了可能包括在指令集中的指令數量。每個指令可能包括操作碼或運算碼。運算碼可能代表用以指定將要進行之特定指令及/或操作的指令部分。例如,來自記憶體指令的給定資料載入可能具有給定的特有操作碼以區分它與其他類型的指令且使處理器能辨識它。運算碼可能代表在指令格式內中一或更多欄位或
位置中之給定長度的一組位元。通常,期望試圖使運算碼的位元數量保持較短,同時提供期望的指令/操作數量。長運算碼傾向於增加解碼器的大小及/或複雜性。另外,長運算碼傾向於增加總指令長度,其可能使指令使用更多程式空間並佔用快取中的更多空間。能以給定運算碼長度及/或指令長度來特有地識別的不同指令數量通常比期望的更有限。額外指令通常不能連續地加入至指令集而最後在可變指令長度架構中不會耗盡可用運算碼或增加指令長度。
在一些情況下,不同指令及/或操作可能具有相同運算碼(或相同部分的運算碼),但可能包括一或更多額外位元以在不同型式的指令及/或操作之間進行區分。針對這種方法的可能缺點為它可能傾向於增加指令長度,或在一些情況下,在指令長度內可能沒有可用空間來容納額外位元以在不同型式的指令/操作之間進行區分。
100‧‧‧電腦系統
101‧‧‧處理器
102‧‧‧部分寬度負載指令
109‧‧‧互連機制
110‧‧‧記憶體
111‧‧‧記憶體位置
112‧‧‧部分寬度資料
115‧‧‧目的地暫存器
103‧‧‧解碼單元
113‧‧‧模式相依的部分寬度負載系統
105‧‧‧部分寬度負載模式
106‧‧‧暫存器
104‧‧‧部分寬度負載模式相依的解碼邏輯
107‧‧‧控制信號
108‧‧‧記憶體子系統
114‧‧‧模式相依的暫存器寫入單元
117‧‧‧位元
118‧‧‧位元
112‧‧‧部分寬度資料
220‧‧‧符號擴展部分寬度負載模式
221‧‧‧零擴展部分寬度負載模式
219‧‧‧部分寬度負載操作
202‧‧‧部分寬度負載指令
205‧‧‧部分寬度負載模式
211‧‧‧記憶體位置
215-1‧‧‧目的地暫存器
215-2‧‧‧目的地暫存器
212‧‧‧部分寬度資料
214‧‧‧模式相依的暫存器寫入單元
202‧‧‧部分寬度負載指令
217‧‧‧位元
218‧‧‧位元
322‧‧‧合併部分寬度負載模式
321‧‧‧零擴展部分寬度負載模式
319‧‧‧部分寬度負載操作
302‧‧‧部分寬度負載指令
305‧‧‧部分寬度負載模式
311‧‧‧記憶體位置
315-1‧‧‧目的地暫存器
315-2‧‧‧目的地暫存器
312‧‧‧部分寬度資料
314‧‧‧模式相依的暫存器寫入單元
323-1‧‧‧位元
323-2‧‧‧位元值
430‧‧‧方法
431-439‧‧‧方塊
500‧‧‧電腦系統
501‧‧‧64位元架構處理器
509‧‧‧互連機制
510‧‧‧記憶體
550‧‧‧64位元可定址範圍
552‧‧‧32位元可定址範圍
554‧‧‧軟體模組
512‧‧‧32位元記憶體位址
513‧‧‧模式相依的部分寬度負載系統
505‧‧‧零擴展的32位元負載模式
515‧‧‧64位元暫存器
502‧‧‧32位元負載指令
519‧‧‧負載操作
556‧‧‧記憶體存取指令
558‧‧‧記憶體存取
660‧‧‧作業系統模組
670‧‧‧使用者級軟體模組
672‧‧‧元資料
674‧‧‧指示
662‧‧‧程式載入器模組
664‧‧‧部分寬度負載模式變換器模組
605‧‧‧部分寬度負載模式
676‧‧‧預設部分寬度負載模式退回邏輯
668‧‧‧中斷處理器模組
678‧‧‧中斷
780‧‧‧方法
781‧‧‧方塊
782‧‧‧方塊
800‧‧‧處理器管線
802‧‧‧提取級
804‧‧‧長度解碼級
806‧‧‧解碼級
808‧‧‧分配級
810‧‧‧更名級
812‧‧‧排程級
814‧‧‧暫存器讀取/記憶體讀取級
816‧‧‧執行級
818‧‧‧寫回/記憶體寫入級
822‧‧‧例外處理級
824‧‧‧提交級
890‧‧‧核心
830‧‧‧前端單元
850‧‧‧執行引擎單元
870‧‧‧記憶體單元
832‧‧‧分支預測單元
834‧‧‧指令快取單元
836‧‧‧指令轉譯旁視緩衝器
838‧‧‧指令提取單元
840‧‧‧解碼單元
852‧‧‧更名/分配器單元
854‧‧‧引退單元
856‧‧‧排程器單元
858‧‧‧實體暫存器檔案單元
860‧‧‧執行叢集
862‧‧‧執行單元
864‧‧‧記憶體存取單元
872‧‧‧資料TLB單元
874‧‧‧資料快取單元
876‧‧‧第2級(L2)快取單元
900‧‧‧指令解碼器
902‧‧‧互連網路
904‧‧‧L2快取的區域子集
906‧‧‧L1快取
908‧‧‧純量單元
910‧‧‧向量單元
912‧‧‧純量暫存器
914‧‧‧向量暫存器
906A‧‧‧L1資料快取
928‧‧‧16寬ALU
920‧‧‧攪和單元
924‧‧‧複製單元
922A‧‧‧數字轉換單元
922B‧‧‧數字轉換單元
926‧‧‧寫入遮罩暫存器
1000‧‧‧處理器
1002A-N‧‧‧核心
1004A-N‧‧‧快取單元
1006‧‧‧共享快取單元
1008‧‧‧專用邏輯
1010‧‧‧系統代理器單元
1012‧‧‧互連單元
1014‧‧‧整合記憶體控制器單元
1016‧‧‧匯流排控制器單元
1100‧‧‧系統
1110‧‧‧處理器
1115‧‧‧處理器
1120‧‧‧控制器中心
1140‧‧‧記憶體
1145‧‧‧協處理器
1150‧‧‧輸入/輸出中心
1160‧‧‧輸入/輸出(I/O)裝置
1190‧‧‧圖形記憶體控制器中心
1195‧‧‧連線
1200‧‧‧系統
1250‧‧‧點對點互連
1270‧‧‧第一處理器
1280‧‧‧第二處理器
1238‧‧‧協處理器
1272‧‧‧整合記憶體控制器單元
1282‧‧‧整合記憶體控制器單元
1276‧‧‧P-P介面
1278‧‧‧P-P介面
1286‧‧‧P-P介面
1288‧‧‧P-P介面
1294‧‧‧對點介面電路
1298‧‧‧對點介面電路
1232‧‧‧記憶體
1234‧‧‧記憶體
1252‧‧‧P-P介面
1254‧‧‧P-P介面
1290‧‧‧晶片組
1239‧‧‧高效能介面
1296‧‧‧介面
1216‧‧‧第一匯流排
1214‧‧‧I/O裝置
1218‧‧‧匯流排橋接器
1220‧‧‧第二匯流排
1222‧‧‧鍵盤/滑鼠
1224‧‧‧音頻I/O
1227‧‧‧通訊裝置
1228‧‧‧儲存單元
1230‧‧‧碼和資料
1300‧‧‧系統
1314‧‧‧I/O裝置
1315‧‧‧傳統I/O裝置
1400‧‧‧單晶片系統
1402‧‧‧互連單元
1410‧‧‧應用處理器
1420‧‧‧協處理器
1430‧‧‧靜態隨機存取記憶體單元
1432‧‧‧直接記憶體存取單元
1440‧‧‧顯示單元
1502‧‧‧高階語言
1504‧‧‧x86編譯器
1506‧‧‧x86二進制碼
1508‧‧‧另一指令集編譯器
1510‧‧‧另一指令集二進制碼
1512‧‧‧指令轉換器
1514‧‧‧不具有x86指令集核心的處理器
1516‧‧‧具有至少一x86指令集核心的處理器
可能藉由參考下面說明和用以繪示實施例的附圖來最佳地了解本發明。在圖中:第1圖係具有用以進行部分寬度負載指令之處理器的電腦系統之實施例的方塊圖。
第2圖係可能根據符號擴展部分寬度負載模式或零擴展部分寬度負載模式之任一者所進行的部分寬度負載操作之第一示範實施例的方塊圖。
第3圖係可能根據合併部分寬度負載模式或零擴展部分寬度負載模式之任一者所進行的部分寬度負載操作之第二示範實施例的方塊圖。
第4圖係當處理部分寬度負載指令之實施例時可能由處理器進行的方法之實施例的方塊流程圖。
第5圖係包括用以進行零擴展的32位元記憶體定址之64位元架構處理器的電腦系統之實施例的方塊圖。
第6圖係在用以改變部分寬度負載模式的使用者級軟體模組與作業系統模組之間的互動之實施例的方塊圖。
第7圖係可能由作業系統模組、特權模組、或其他系統級模組進行的方法之實施例的方塊圖。
第8A圖係繪示根據本發明之實施例之示範有序管線與示範暫存器更名、亂序發出/執行管線兩者的方塊圖。
第8B圖係繪示根據本發明之實施例之將包括在處理器中的有序架構核心之示範實施例與示範暫存器更名、亂序發出/執行架構核心兩者的方塊圖。
第9A圖係根據本發明之實施例之單一處理器核心,與其連結至晶粒上互連網路的連線及其第2級(L2)快取的區域子集之方塊圖。
第9B圖係根據本發明之實施例之部分之第9A圖中的處理器核心之分解圖。
第10圖係根據本發明之實施例之可能具有超過一個核心,可能具有整合記憶體控制器,且可能具有整合圖形之處理器的方塊圖。
第11圖所顯示的係依照本發明之一實施例之系統的方塊圖。
第12圖所顯示的係依照本發明之實施例之第一更具體示範系統的方塊圖。
第13圖所顯示的係依照本發明之實施例之第二更具體示範系統的方塊圖。
第14圖所顯示的係依照本發明之實施例之SoC的方塊圖。
第15圖係根據本發明之實施例之對照於使用軟體指令轉換器將來源指令集中的二進制指令轉換成目標指令集中的二進制指令之方塊圖。
在一些實施例中,處理器可能具有用以藉由兩個或更多不同的對應方式來處理給定指令及/或給定運算碼的兩個或更多模式,例如,用以藉由兩個或更多不同的對應方式來處理從記憶體指令之部分寬度負載的兩個或更多模式。在下面的說明中,提出許多具體細節(例如,特定指令操作、處理器配置、微型架構細節、操作序列、等等)。然而,無須這些具體細節便可能實作實施例。在其他例子中,未詳細顯示熟知的電路、結構及技術以免模
糊對本說明之了解。
第1圖係電腦系統100之實施例的方塊圖。在各種實施例中,電腦系統可能代表桌上型電腦、膝上型電腦、筆記型電腦、平板電腦、小筆電、智慧型手機、個人數位助理、蜂巢式電話、伺服器、網路裝置(例如,路由器或交換器)、行動上網裝置(MID)、媒體播放器、智慧型電視、機上盒、視頻遊戲控制器、或其他類型的電子裝置。
電腦系統包括處理器101之實施例。在一些實施例中,處理器可能是通用處理器。例如,處理器可能是通常作為中央處理單元(CPU)的通用處理器之類型。在其他實施例中,處理器可能是專用處理器。適當專用處理器之實例包括,但不限於協處理器、圖形處理器、通訊處理器、網路處理器、密碼處理器、嵌入式處理器、及數位信號處理器(DSP)以僅舉出數個實例。處理器可能是各種複雜指令集計算(CISC)處理器、各種精簡指令集計算(RISC)處理器、各種極長指令字(VLIW)處理器、以上之各種混合、或完全其他類型的處理器之任一者。
電腦系統也包括記憶體110之實施例。記憶體係藉由耦合或互連機制109來與處理器101耦接。適當耦合或互連機制之實例包括,但不限於一或更多互連、匯流排、集線器、記憶體控制器、晶片組、晶片組元件、等等、及以上之各種組合。記憶體可能包括相同或不同類型的一或更多記憶體裝置。可適用於實施例之一種常用類型
的記憶體係動態隨機存取記憶體(DRAM),雖然可能另外使用其他類型的記憶體(例如,快閃記憶體)。記憶體可能具有儲存於其中的軟體,例如,一或更多作業系統(OS)和一或更多應用程式(未示出)。在操作期間,軟體的指令可被提供給處理器且在處理器上運行。
如圖所示,部分寬度負載指令102可被提供
給處理器101。例如,提取單元(未示出)可提取部分寬度負載指令。部分寬度負載指令可能代表機器碼指令、組合語言指令、巨集指令、或設備之ISA的控制信號。部分寬度負載指令可能明確地指定(例如,透過一或更多欄位或一組位元),或以其他方式指定(例如,隱含地指定)記憶體110中的記憶體位置111作為來源運算元,且可能指定或以其他方式指示其中將儲存從記憶體載入之部分寬度資料112的目的地暫存器115作為目的地運算元。本文所使用的「部分寬度資料」之術語係指資料填充或僅為其中將儲存資料之目的地暫存器115的部分寬度。
處理器包括解碼單元103。解碼單元可能也稱
為解碼器或解碼邏輯。解碼單元可能接收部分寬度負載指令。解碼單元可能可操作以解碼相對較高階指令(例如,機器碼指令、組合語言指令、巨集指令、等等),並輸出一或更多相對較低階指令或控制信號(例如,一或更多微指令、微操作、微碼進入點、等等)。較低階指令或控制信號可從相對較高階指令反映、表現、及/或取得,且可透過較低階操作(例如,電路級或硬體級操作)來實作較
高階指令。解碼單元可使用各種不同機制來實作,包括但不限於微碼唯讀記憶體(ROM)、查找表、硬體實作、可程式化邏輯陣列(PLA)、用以實作本領域中所知之解碼單元的其他機制、及以上之組合。
在其他實施例中,取代解碼單元103或除了
解碼單元103之外,可能使用指令模擬器、轉譯器、模仿器、解譯器、或轉換器。指令轉換器可能將指令模擬、轉譯、模仿、解譯、或以其他方式轉換成一或更多對應取得的指令或控制信號。各種不同類型的上述指令轉換器在本領域中係已知的,且可能在硬體、韌體、軟體、或以上之組合中實作。在一些實施例中,指令轉換器可將接收之較高階指令轉換成一或更多中間階級指令,且解碼單元可將一或更多中間階級指令解碼成能夠被處理器之固有邏輯進行的一或更多較低階指令或控制信號。
如圖所示,解碼單元係處理器之模式相依的
部分寬度負載系統113之一部分。在一些實施例中,可使用兩個或更多模式以藉由兩個或更多種不同對應方式來處理部分寬度負載指令及/或其運算碼。有利地,這可能有助於允許進行不同操作而無須利用另一運算碼,其在一些情況下會是具有挑戰性的,如背景章節中所論述。解碼單元可能與部分寬度負載模式105耦接,或以其他方式通訊。在一些實施例中,部分寬度負載模式可能包括一或更多位元,用以指示多個不同的部分寬度負載模式之其一者。在一種態樣中,可使用單一位元以指示兩個不同的部
分寬度負載模式之任一者。在另一種態樣中,可使用兩個或更多位元以指示兩個、至少三個、至少四個、或可選地超過四個不同的部分寬度負載模式之任一者。在一些實施例中,一或更多位元可能儲存於暫存器(例如,控制、狀態、或配置暫存器)106或另一晶粒上儲存位置中。另外,部分寬度負載模式可能可選地包括在一或更多分離或隔離的位元,而不一定在控制、狀態、或配置暫存器中。
如將於下進一步所解釋,軟體模組(例如,使用者級應用程式模組、作業系統模組、虛擬機監視器模組、特權軟體模組或之類)可能將部分寬度負載模式105(例如,藉由改變一或更多位元)改變為對部分寬度負載指令102而言為適當、期望、或預期的模式(例如,利用部分寬度負載指令的軟體)。
解碼單元及/或處理器可能存取部分寬度負載模式以判定目前部分寬度負載模式來使用,且解碼單元可根據判定之部分寬度負載模式來解碼部分寬度負載指令。在一些實施例中,可使用部分寬度負載模式以對部分寬度負載指令及/或其運算碼提供不同的意義、解釋、及/或操作。在一些實施例中,解碼單元可包括部分寬度負載模式相依的解碼邏輯104,用以藉由一種取決於、基於、及/或符合關聯於指令之目前部分寬度負載模式(例如,在解碼指令時的模式)的方式來解碼部分寬度負載模式。例如,在第一部分寬度負載模式中,可從部分寬度負載指令解碼第一組的一或更多指令或控制信號,而在不同之第二部分
寬度負載模式中,可從部分寬度負載指令(例如,相同運算碼)解碼不同之第二組的一或更多指令或控制信號。可能從符合目前模式105的解碼單元輸出模式相依的指令或控制信號107。
在一些實施例中,部分寬度負載指令可能不
指定或以其他方式指示部分寬度負載模式105(例如,指令可能沒有任何位元來在多個不同樣式的指令/操作之間選擇或區分或以其他方式指定模式)。這通常有助於避免增加指令長度,可能潛在地允許使用指令長度不允許上述額外位元的技術,可能潛在地減少或限制將被解碼的位元數,或提供其他潛在優點。在一些實施例中,可能無法從檢查部分寬度負載指令的任何或所有位元來告訴要使用哪個部分寬度負載模式。
再次參考第1圖,記憶體子系統108係與解
碼單元103和與記憶體110耦接。本領域中所知之各種傳統的記憶體子系統係適當的。記憶體子系統可能可操作回應於及/或作為部分寬度負載指令102的結果(例如,回應於對應於目前部分寬度負載模式105的一或更多解碼指令或控制信號)而將資料從指示的記憶體位置111載入至處理器中。如先前所提及,部分寬度負載指令可能指定或以其他方式指示具有部分寬度資料112的記憶體位置111。部分寬度負載指令可能也指定或以其他方式指示將儲存部分寬度資料的目的地暫存器115。
部分寬度負載模式相依的暫存器寫入單元114
之實施例係與解碼單元103、與記憶體子系統108、及與目的地暫存器115耦接。為了簡單起見,部分寬度負載模式相依的暫存器寫入單元可能也簡稱為模式相依的暫存器寫入單元或暫存器寫入單元。模式相依的暫存器寫入單元可能可操作回應於及/或作為部分寬度負載指令102的結果(回應於對應於目前部分寬度負載模式105的一或更多解碼指令或控制信號107)而寫入或以其他方式存取暫存器115以具有儲存於其中的結果,其係取決於及/或符合部分寬度負載模式。在一些實施例中,模式相依的暫存器寫入單元可能可操作以將至少一部分載入的部分寬度資料112寫入至暫存器的部分寬度,且可能可操作以藉由儲存於暫存器之剩餘寬度中的一組位元117、118來完成或結束寫入暫存器,這組位元具有取決於及/或符合對應部分寬度負載模式的位元值。模式相依的暫存器寫入單元及/或處理器可能包括對部分寬度負載指令起反應的特有或特定邏輯(例如,可能結合一或更多韌體及/或軟體的電路或其他硬體)。
對於不同實施例而言,不同類型的部分寬度負載模式之各種組合係適當的。實例包括,但不限於符號擴展的部分寬度負載模式、零擴展的部分寬度負載模式、合併部分寬度負載模式、及本領域中所知的其他部分寬度負載模式。在符號擴展的部分寬度負載模式中,部分寬度資料的符號位元(例如,具有二進制零或二進制1之值的最高有效位元)可被複製、擴展、或以其他方式儲存或寫
入至未被部分寬度資料佔用之暫存器的剩餘寬度。在零擴展的部分寬度負載模式中,二進制零可能被插入、擴展、或以其他方式儲存或寫入至未被部分寬度資料佔用之暫存器的剩餘寬度。在合併部分寬度負載模式中,部分寬度資料可能與初始或原有位元或在暫存器寫入時已儲存於暫存器中的資料合併。此初始或原有資料不需要被修改或複寫。例如,合併部分寬度負載模式可能將部分寬度儲存至暫存器的最低序部分而複寫在此最低序部分中之初始或原有資料,且可能在暫存器的剩餘最高序部分中留存初始或原有資料。在各種實施例中,可能使用這些或其他類型的部分寬度負載模式之兩個或更多者的組合。不同的對應值116可能被寫入至在不同模式中的目的地暫存器。在所示之實例中,在零擴展的部分寬度負載模式中,部分寬度資料112可能包括在目的地暫存器的一部分(例如,最低序半部或其他部分)中,且所有零117可能儲存於目的地暫存器的另一部分(例如,最高序部分)中。在符號擴展的部分寬度負載模式中,部分寬度資料112可能包括在目的地暫存器的一部分(例如,最低序半部或其他部分)中,且符號位元118(例如,基於部分寬度資料112的最高有效位元)可能儲存於目的地暫存器的另一部分(例如,最高序半部或其他部分)中。在其他實施例中,可能使用其他類型或組合的不同部分寬度負載。例如,在另一實施例中,可能使用合併擴展部分寬度負載模式(例如,參見第3圖)、或其他類型的部分寬度負載模式來代替其中一個
所示之模式,或作為額外第三類型的部分寬度負載模式。
為了避免模糊本說明和概念,已顯示和說明
簡化的處理器101。設備可包括通常在處理器中發現到之各種其他熟知的元件。這類元件之實例包括,但不限於分支預測單元、指令提取單元、指令和資料快取、第二或較高級快取、指令和資料轉譯旁視緩衝器、預取緩衝器、微指令佇列、微指令序列器、暫存器更名單元、指令排程單元、匯流排介面單元、引退單元、包括在處理器中的其他元件、及以上之各種組合。處理器中的元件在字面上有許多不同組合和配置,且實施例並不限於任何特定組合或配置。
第2圖係可能根據符號擴展部分寬度負載模
式220或零擴展部分寬度負載模式221之任一者所進行的部分寬度負載操作219之第一示範實施例的方塊圖。可能回應於部分寬度負載指令202和相關部分寬度負載模式205(例如,在解碼部分寬度負載指令時的部分寬度負載模式)而進行部分寬度負載操作。
部分寬度負載指令可指定或以其他方式指示
記憶體位置211作為來源運算元,且可指定或以其他方式指示目的地暫存器215作為目的地運算元。記憶體位置回應於部分寬度負載指令而儲存將被載入至目的地暫存器中的部分寬度資料。為了簡化說明,顯示了8位元寬的部分寬度資料212。在所示之實例中,8位元部分寬度資料從左邊的最高有效位元位置至右邊的最低有效位元位置具有
值「11110000」。然而,了解這些值僅僅是實例且可能另外使用任何其他可能的位元值。此外,在其他實施例中,部分寬度資料可能具有其他寬度(例如,16位元、32位元、64位元、等等)而不是8位元寬的部分寬度資料。同樣地,為了簡化說明,所示之目的地暫存器具有16位元之寬度。在其他實施例中,目的地暫存器可能具有其他寬度(例如,32位元、64位元、128位元、等等)。在一些實施例中,如在本實例中,部分寬度資料可能是目的地暫存器之寬度的一半,雖然這不是必須的。在其他實施例中,例如,部分寬度資料可能是16位元且目的地暫存器可能是64位元,或部分寬度資料可能是8位元且目的地暫存器可能是32位元、等等。作為另一實例,部分寬度資料可能是64位元且目的地暫存器可能是128位元。
模式相依的暫存器寫入單元214係與目的地暫存器215耦接,係與記憶體位置211耦接,且係與部分寬度負載指令202(例如,解碼單元)耦接。暫存器寫入單元可能可操作回應於部分寬度負載指令而進行寫入或儲存至目的地暫存器。進行寫入或儲存的方式可能取決於或基於關聯於部分寬度負載指令的部分寬度負載模式。在此第一示範實施例中,部分寬度負載模式可能指示符號擴展部分寬度負載模式220(在圖中的左邊)或零擴展部分寬度負載模式221(在圖中的右邊)之任一者。在這些不同類型的部分寬度負載之兩者中,部分寬度資料212(例如,在本實例中是8位元部分寬度資料)可能寫入或儲存
於目的地暫存器中。在所示之實施例中,載入的部分寬度資料被寫入至目的地暫存器的最低序部分,雖然這不是必須的。如圖所示,在符號擴展部分寬度負載模式220、或零擴展部分寬度負載模式221之任一者中,8位元部分寬度資料值「11110000」可能儲存於目的地暫存器215-1、215-2的位元〔7:0〕中。在其他實施例中,可使用其他大小的部分寬度資料及/或可將部分寬度資料寫入至目的地暫存器的其他部分/位置(例如,最高有效部分、等等)。
在所示之實施例中,對兩種不同類型的部分
寬度負載操作/模式不同地處理目的地暫存器的最高序部分(例如,在本實例中是8位元最高序部分)。針對符號擴展部分寬度負載模式220,控制模式相依的暫存器寫入單元以將符號位元218(例如,部分寬度資料之最高有效位元的符號位元)寫入或儲存至未用以儲存部分寬度資料之目的地暫存器215-1的所有剩餘較高有效位元。在所示之實例中,位元7係部分寬度資料的符號位元或最高有效位元。在本實例中,符號位元係二進制1且對應的二進制1 218係儲存於目的地暫存器215-1的位元〔15:8〕之各者中。針對零擴展部分寬度負載模式221,控制模式相依的暫存器寫入單元以將所有零217寫入或儲存至未用以儲存部分寬度資料之目的地暫存器215-2的所有剩餘較高有效位元。如圖所示,二進制零217可能儲存於目的地暫存器215-2的位元〔15:8〕之各者中。藉此,模式相依的
暫存器寫入單元及/或處理器可能以儲存於未用以儲存部分寬度資料之其部分中的位元(例如,217或218)(例如,相較於用以儲存部分寬度資料之最低序部分的所有較有效位元)來完成寫入目的地暫存器215,位元具有取決於部分寬度負載模式的位元值。
第3圖係可能根據合併部分寬度負載模式322
或零擴展部分寬度負載模式321之任一者所進行的部分寬度負載操作319之第二示範實施例的方塊圖。此第二示範實施例與第2圖之先前所述的第一示範實施例具有某些相似性。為了避免模糊本說明,將主要說明第二示範實施例的不同或額外特徵和特性而無須重覆所有相似性。然而,了解針對第2圖之第一示範實施例的上述特徵或特性可能也可選地適用於第二示範實施例。
可回應於部分寬度負載指令302和相關部分
寬度負載模式305而進行部分寬度負載操作319。部分寬度負載指令可指定或以其他方式指示記憶體位置311作為來源運算元,且可指定或以其他方式指示目的地暫存器315作為目的地運算元。記憶體位置回應於部分寬度負載指令而儲存將被載入至目的地暫存器中的部分寬度資料312。為了簡化說明,在本實例中,顯示了8位元部分寬度資料和16位元目的地暫存器,雖然本發明之範圍並不以此為限。
模式相依的暫存器寫入單元314可能可操作
回應於部分寬度負載指令而進行寫入或儲存至目的地暫存
器。進行寫入或儲存的方式可能取決於或基於關聯於部分寬度負載指令的部分寬度負載模式。在此第二示範實施例中,部分寬度負載模式可能指示合併或結合部分寬度負載模式322(在圖中的左邊)或零擴展部分寬度負載模式321(在圖中的右邊)之任一者。在這些不同類型的部分寬度負載之兩者中,部分寬度資料312(例如,在本實例中是8位元部分寬度資料)可能被寫入或儲存於目的地暫存器中。在所示之實施例中,載入的部分寬度資料被寫入至目的地暫存器的最低序部分,雖然這不是必須的。如圖所示,在合併或結合擴展部分寬度負載模式322、或零擴展部分寬度負載模式321之任一者中,8位元部分寬度資料值「11110000」可能儲存於目的地暫存器315-1、315-2的位元〔7:0〕中。在其他實施例中,可使用其他大小的部分寬度資料及/或可將部分寬度資料寫入至目的地暫存器的其他部分/位置(例如,最高有效部分、等等)。
在所示之實施例中,對兩種不同類型的部分
寬度負載操作/模式不同地處理目的地暫存器215的最高序部分(例如,在本實例中是8位元最高序部分)。針對合併或結合擴展部分寬度負載模式322,控制模式相依的暫存器寫入單元以藉由儲存於未用以儲存部分寬度資料之其部分中的位元323-1(例如,相較於用以儲存8位元部分寬度資料之最低序8位元的所有較有效位元)來完成寫入目的地暫存器315-1,位元具有取決於部分寬度負載模式的位元值。例如,如圖所示,暫存器寫入單元可能以留
存於目的地暫存器315-1之最高有效剩餘8位元部分中的最初一組位元(即,最初在部分寬度負載指令之前在目的地暫存器315-1中的那些位元)來完成寫入目的地暫存器315-1。作為參考,顯示了在進行部分暫存器寫入指令之前已存在的一組原有位元值323-2。原有位元值323-2的位元〔15:8〕具有值「01010101」。請注意在進行部分暫存器寫入指令之前已存在的原有位元值323-2之位元〔15:8〕中的這些相同值「01010101」也顯現為在進行部分暫存器寫入指令之後於目的地暫存器315-2之位元〔15:8〕中的相同位元值「01010101」。部分寬度資料可能被合併或插入至替換一些位元,而使其他位元不變的目的地暫存器中。針對零擴展部分寬度負載模式321,控制模式相依的暫存器寫入單元以將所有零317寫入或儲存至未用以儲存部分寬度資料之目的地暫存器315-2的所有剩餘較高有效位元。如圖所示,二進制零317可能儲存於目的地暫存器315-2的位元〔15:8〕之各者中。
將了解這些僅僅是適當類型之部分寬度負載
模式的少數說明性示範實施例。設想出另一實施例,其中第一模式使用符號擴展部分寬度負載模式且第二模式使用合併部分寬度負載模式。設想出又一實施例,其中第2圖之實施例加入另一第三模式以包括合併部分寬度負載模式。設想出再一實施例,其中第3圖之實施例加入另一第三模式以包括符號擴展部分寬度負載模式。其他實施例可能基於其他類型的部分寬度負載模式(例如,擴展的模
式、等等)。再者,如先前所提及,在其他實施例中,部分寬度資料及/或目的地暫存器的位元寬度可能各是較寬或較窄的,且部分寬度資料不必是目的地暫存器之寬度的一半。
在一些實施例中,第2圖及/或第3圖之操作
可能藉由第1圖之處理器來進行及/或在第1圖之處理器內進行。上述針對第1圖之處理器的細節和可選細節可能也可選地適用於第2圖及/或第3圖之操作,其在實施例中可能藉由上述處理器來進行及/或在上述處理器內進行。另外,第2圖及/或第3圖之操作可能藉由類似或不同處理器來進行及/或在類似或不同處理器內進行。此外,第1圖之處理器可能進行與第2圖及/或第3圖相同、類似、或不同的操作。
第4圖係當處理部分寬度負載指令之實施例時可能由處理器進行的方法430之實施例的方塊流程圖。在一些實施例中,第4圖之操作及/或方法可能藉由第1圖之處理器來進行及/或在第1圖之處理器內進行。針對第1圖之處理器所述的元件、特徵、及具體可選細節可能也可選地適用於可能藉由上述處理器來進行及/或在上述處理器內進行的第4圖之操作及/或方法。另外,第4圖之操作及/或方法可能藉由類似或不同處理器來進行及/或在類似或不同處理器內進行。此外,第1圖之處理器可能進行與第4圖相同、類似、或不同的操作及/或方法。
在方塊431中,方法包括接收部分寬度負載
指令。在各種態樣中,可能在處理器、指令處理設備、或其一部分(例如,指令提取單元、解碼單元、等等)中接收指令。在各種態樣中,可能從晶粒外來源(例如,從主記憶體、互連、等等)、或從晶粒上來源(例如,從提取單元、指令快取、等等)接收指令。在一些實施例中,部分寬度負載指令可指定或以其他方式指示記憶體位置作為來源運算元,且可指定或以其他方式指示暫存器作為目的地運算元。在一些實施例中,部分寬度負載指令可能不指定或以其他方式指示部分寬度負載模式(例如,可能不具有位元以指定模式或選擇預定模式)。
在方塊432中,方法可選地包括檢查或以其
他方式判定部分寬度負載模式。另外,可能自動地強加部分寬度負載模式而無須檢查或判定它。在方塊433中,方法也包括回應於部分寬度負載指令而將資料從指示的記憶體位置載入至處理器。
在方塊434中,方法包括回應於部分寬度負
載指令而將載入的資料之至少一部分寫入至目的地暫存器的部分寬度。取決於指令之實作,可能寫入所有載入的資料或只有一部分。在一示範實施例中,32位元之載入的資料可能被寫入至64位元目的地暫存器的最低序32位元半部。在其他實施例中,可能可選地使用其他大小的部分寬度資料及/或目的地暫存器。
在方塊435中,方法也包括以儲存於目的地
暫存器之剩餘寬度(即,未用以儲存部分寬度資料的部
分)中的一組位元來完成寫入目的地暫存器,這組位元取決於處理器的部分寬度負載模式。那些位元從一種模式到另一種模式可能是不同的(即,具有不同的位元值)。在一些實施例中,在第一模式436中,在方塊437中,這可能可選地包括將符號位元(例如,部分寬度資料之符號位元的副本)複製、寫入、或以其他方式儲存至目的地暫存器的剩餘寬度。在一些實施例中,在第二模式438中,在方塊439中,這可能可選地包括將所有零寫入至目的地暫存器的所有剩餘寬度。在另一實施例中,這些第一和第二模式之任一者可能替換成使用合併或結合部分寬度負載模式、或一些其他類型之部分寬度負載模式的模式。
已以相對基本的形式來說明了上述方法,雖
然操作可能可選地加入方法及/或從方法移除。例如,如所提及的判定部分寬度負載模式係可選的(例如,反而可能強加它)。作為另一實例,可能可選地加入額外操作,例如,以解碼指令、提取指令、在匯流排上傳送位元、從匯流排接收位元、等等。作為另一實例,關聯於使用目的地暫存器中之結果的操作可能可選地加入方法。例如,可藉由以其他方式在64位元處理模式中操作的64位元處理器使用目的地暫存器中之零擴展的部分寬度負載結果以存取記憶體作為零擴展的32位元記憶體位址。作為另一實例,可藉由以其他方式在128位元(或其他相對較寬寬度)處理模式中操作的128位元(或其他相對較寬寬度)處理器使用目的地暫存器中之零擴展的部分寬度負載結果
以存取記憶體作為零擴展的64位元(或其他相對較短寬度)記憶體位址。另外,儘管流程圖顯示根據示範實施例之操作的特定順序,但此特定順序係示範性的。其他實施例可能可選地以不同順序來進行操作、結合某些操作、重疊某些操作、等等。例如,在方塊434和435中的操作可能同時或並行而不是順序地進行。
本文所揭露之模式相依的部分寬度負載指令和部分寬度負載模式係通用的且可能用於各種不同目的。例如,它們可能用以對相同運算碼提供不同類型的部分寬度負載操作。然而,為了進一步說明某些概念,下面將進一步說明對不同或更有效率記憶體定址利用模式相依的部分寬度負載指令和部分寬度負載模式之特定實例。在一些實施例中,可能在相對較大位址空間中使用相對較小記憶體位址或指標。作為一實例,可能在64位元架構處理器及/或64位元位址空間中使用64位元長之零擴展的32位元指標。作為另一實例,可能在128位元架構處理器及/或128位元位址空間中使用128位元長之零擴展的64位元指標。
大多數現代通用處理器具有32位元架構或64位元架構。在未來,128位元架構處理器有可能變得普及。各種專用處理器可能使用32位元或64位元架構、或如8位元、9位元、12位元、18位元、24位元、36位元、39位元、40位元、48位元、或60位元之各種其他寬度的架構。這些位元寬度通常係指在處理器之架構內之
各種屬性的位元寬度。例如,這些位元寬度可能係指支援的記憶體位址大小、整數大小、整數暫存器大小或之類、或以上之組合。例如,64位元架構處理器可能支援64位元整數格式,可能具有64位元整數通用暫存器,可能支援將用以存取記憶體的64位元記憶體位址、等等。一些處理器對所有上述參數不使用相同位元寬度。64位元寬度有時稱為處理器之「字元」大小。亦即,64位元架構處理器可能使用64位元「字元」,32位元架構處理器可能使用32位元「字元」、等等。
64位元架構處理器可能傾向於具有某些增強
特徵或優點勝過32位元架構處理器。例如,在一些實施例中,64位元處理器可能具有較大量的處理器暫存器、較大通用處理能力、或具有各種其他機制或特徵以幫助提高效能、等等。然而,通常64位元架構操作的某些態樣可能包含比32位元架構操作相對更高的負擔。一個上述可能的態樣可能包含使用64位元記憶體位址或指標。如上所提及,在一些情況下,64位元架構處理器可能通常使用64位元記憶體位址或指標來存取記憶體。上述64位元記憶體位址或指標通常允許從記憶體中的任何地方存取資料。連續或序列64位元記憶體位址值可能指定記憶體的對應連續單元。這些單元可能代表位址解析的單元(例如,字元、位元組、等等)。
然而,許多使用者級應用程式模組或其他軟
體模組不需要使用64位元記憶體指標及/或不需要從頻繁
到足以調整關聯於使用64位元記憶體指標的額外負擔之記憶體中的任何地方存取資料。例如,這可能通常是當整個使用者級應用程式模組或其他軟體模組能夠符合在記憶體之有限連續範圍內的情況。作為一具體實例,許多常用的使用者級軟體模組和其他模組能夠包含在記憶體的四個十億位元組內。32位元記憶體位址足以在記憶體之連續四個十億位元組中的任何地方定址。當軟體模組(例如,最常被存取的碼和資料)符合在32位元記憶體位址或指標可定址的四個十億位元組內時,使用較小的32位元記憶體位址可能比使用較大64位元記憶體位址更高效及/或有效率。有利地,使用64位元架構處理器中的較小32位元記憶體位址可能有助於利用通常關聯於64位元架構的增強特徵,同時當適當時(例如,當軟體模組符合在四個十億位元組內時)選擇性地有助於減少關聯於使用64位元記憶體位址及/或使用較大記憶體佔用面積的不需要或不必要負擔。
相較於較大指標(例如,64位元指標),當使用較小指標(例如,32位元指標)時,程式往往運行得較快及/或使用較小記憶體。一方面,通常需要較小記憶體來儲存較小指標。另外,較小指標通常在處理器中所使用的快取中佔用較小空間以加速存取經常使用的資料。因此,當使用小指標時,快取可能能夠容納較大數量的上述較小指標及/或較多資料。另外,在快取中發現資料或指標的可能性將往往增加更多上述指標或資料被容納在快
取中(例如,當使用較小指標時),其可能有助於實現提高的程式效能。再者,使用較少資料的程式往往使系統能運行得較快。在一些系統中,使用中的程式之所有碼和資料的集合可能不符合在記憶體中。部分程式可能暫時地儲存於磁碟上且當需要時(例如,在要求呼叫的情況下)被帶進記憶體中。然而,當程式較小時,如可能是當使用較小指標時的情況,它們可能傾向於留下更多空間給目前不運行的其他程式以留存在記憶體中,使得這類程式不需要被移出以在記憶體中騰出空間。一般而言,當較少呼叫發生時,系統效能往往會提高,因為這類呼叫往往延遲程式執行且可能往往對其他程式延遲輸入/輸出。相較於64位元記憶體位址,使用32位元記憶體位址的其他可能優點包括減少的功率消耗。
第5圖係包括用以進行零擴展的32位元記憶
體定址之64位元架構處理器501的電腦系統500之實施例的方塊圖。64位元架構處理器係藉由互連機制509來與記憶體510耦接。記憶體具有64位元可定址範圍550。64位元可定址範圍包括較小連續32位元可定址範圍552作為其子集。32位元可定址範圍可能具有大約四個十億位元組。軟體模組554(例如,使用者級應用程式或其他軟體)係儲存於32位元可定址範圍內。軟體模組具有32位元記憶體位址512。
64位元處理器可能可選地具有本文所揭露之
其他處理器(例如,第1圖之處理器101)的特性或特
徵。64位元架構處理器包括模式相依的部分寬度負載系統513。模式相依的部分寬度負載系統可能可選地具有與第1圖之模式相依的部分寬度負載系統113類似或相同的特徵和特性。模式相依的部分寬度負載系統支援零擴展的32位元負載模式505。處理器也具有64位元暫存器515。在一些實施例中,暫存器可能是可用於記憶體定址的暫存器,如在一些處理器中的通用暫存器、或用於在其他處理器中之記憶體定址的專用暫存器。
可能對模式相依的部分寬度負載系統提供32
位元負載指令502。32位元負載指令可能指定或以其他方式指示其中一個32位元記憶體位址512(代表部分寬度資料)作為來源運算元且可能指定或以其他方式指示64位元暫存器515作為目的地運算元。模式相依的部分寬度負載系統回應於32位元負載指令502及零擴展的32位元負載模式505可能進行零擴展的32位元負載操作519,其包括將指示的32位元記憶體位址512儲存至64位元目的地暫存器515的最低序32位元中且將零儲存於64位元目的地暫存器515的最高序32位元中。
隨後,可能對處理器提供記憶體存取指令
556。記憶體存取指令可能指示64位元零擴展的32位元記憶體位址,其係32位元負載指令502及/或操作519的結果。例如,記憶體存取指令可能指示目的地暫存器515、或結果可能從目的地暫存器移至記憶體存取指令所指示的另一暫存器。處理器回應於記憶體存取指令556而
可使用或基於64位元零擴展的32位元記憶體位址來提供記憶體存取558(例如,從記憶體載入、對記憶體寫入、等等)。
這僅僅是一個說明性實例。在其他實施例
中,可能可選地使用具有除了64位元以外之架構的處理器。此外,在其他實施例中,可能可選地使用具有除了32位元以外之大小的記憶體位址。例如,在一些實施例中,可能在128位元架構處理器及/或128位元位址空間或定址模式上使用128位元零擴展的64位元記憶體位址。作為另一實例,可能可選地在64位元架構處理器或64位元位址空間上使用64位元零擴展的16位元或48位元指標。一般而言,可能在較大架構處理器或位址空間上使用零擴展的較小指標或記憶體位址。
使用者級應用程式模組或其他無特權軟體模
組通常需要當適合如此做時(例如,當它們打算使用與目前現有模式不同的模式時)改變部分寬度負載模式的方式。這可能以不同方式來進行。在一些實施例中,部分寬度負載模式可能可由使用者級或無特權軟體模組直接地改變。在其他實施例中,使用者級或無特權軟體模組可能無法直接地改變部分寬度負載模式。反而,在一些實施例中,可能對特權軟體模組(例如,作業系統模組、虛擬機監視器模組、等等)保留改變部分寬度負載模式。在上述實施例中,特權軟體模組可能提供介面(例如,伺服器、介面、等等)以允許使用者級或無特權軟體模組請求特權
軟體模組改變部分寬度負載模式。
第6圖係在用以改變部分寬度負載模式的使
用者級軟體模組670(或其他無特權軟體模組)與作業系統模組660(或其他特權軟體模組)之間的互動之實施例的方塊圖。使用者級軟體模組包括元資料672,包括用以使用給定部分寬度負載模式的指示674。給定部分寬度負載模式可能是軟體模組期望或打算使用的模式。作為一實例,元資料可能包括目標模組格式或使用者級軟體模組所使用的其他資料結構以將關於其本身的資訊傳遞至作業系統模組660。例如,元資料模組可能包括一旗標或一或更多位元,用以指示期望的部分寬度負載模式。作業系統模組包括程式載入器模組662。程式載入器模組及/或作業系統模組可能可操作以檢查元資料,包括檢查指示674。作業系統模組可能包括部分寬度負載模式變換器模組664,其可能可操作以將處理器的部分寬度負載模式605改變為指示的部分寬度負載模式674。例如,可能在處理器的配置或控制暫存器中改變部分寬度負載模式。
在一些實施例中,處理器可能具有指令集,
其包括用以改變部分寬度負載模式的指令。在本實例中,指令將是對作業系統模組或類似特權級軟體模組保留的特權級指令,雖然在其他實施例中,指令可能是能夠被使用者級軟體模組利用的使用者級指令。當欲改變部分寬度負載模式時,指令可能被部分寬度負載模式變換器模組664使用。指令可能被處理器解碼和執行或以其他方式進行以
將模式從起始模式改變為另一不同模式。在一些實施例中,在上述的模式改變之後,可能可選地進行跳躍以使指令在經更新的不同模式下被提取和解碼,而不使用已在管線中的指令,其在指令的效能之前已存在的過時模式下已被解碼。在一些實施例中,指令集可能也具有用以讀取部分寬度負載模式的指令。此指令可能是能夠被使用者級軟體模組利用的使用者級指令或為作業系統模組或類似特權級軟體模組保留之特權級指令。指令可能被解碼且當執行或以其他方式進行時可能讀取部分寬度負載模式(例如,讀取暫存器中的一或更多位元)。舉例而言,使用者級碼模組或其他軟體模組可能使用這類指令來獲悉部分寬度負載模式。
上面討論了可能使用一個部分寬度負載模以
支援在64位元處理器上的32位元定址。作業系統模組、中斷處理器模組、及可能其他軟體可能主要地使用64位元記憶體定址而不是零擴展的32位元記憶體定址。於是,作業系統模組、中斷處理器模組等可能不必使用提供零擴展的32位元負載之部分寬度負載模式,而是可能使用對相同指令或運算碼提供另一種類型之32位元負載的部分寬度負載模式,例如,符號擴展的32位元負載或合併32位元負載。如圖所示,在一些實施例中,處理器可能包括預設部分寬度負載模式退回邏輯或單元676,用以使或導致在某些條件下自動退回至預設部分寬度負載模式。上述條件之實例可能包括從執行使用者級碼切換或轉
變至作業系統碼、在偵測之後或當對中斷處理器模組668報告中斷678時、當中斷處理器模組開始中斷處理時或之類。單元或邏輯可能在硬體或可能結合一些韌體及/或可能之一些軟體的硬體中實作。在預設部分寬度負載模式中,指令或運算碼可能被視為例如符號擴展的32位元負載或合併32位元負載,而不被視為零擴展的32位元負載。在一些實施例中,預設部分寬度負載模式退回邏輯或單元可能也使部分寬度負載模式自動地從預設部分寬度負載模式復原回至在切換至作業系統碼或中斷處理之前(例如,在從中斷返回679之後)已存在的部分寬度負載模式。返回指令可能當返回時讀取部分寬度負載指令以判定如何解碼部分寬度負載指令。
第7圖係可能由作業系統模組、特權模組、
或其他系統級模組進行的方法780之實施例的方塊圖。在方塊781中,方法包括檢查軟體模組的元資料。這包括檢查處理器之部分寬度負載模式的指示,其將被處理器用來進行部分寬度負載指令。部分寬度負載指令係用以指示記憶體位置作為來源運算元且用以指示暫存器作為目的地運算元。
在方塊782中,方法包括將處理器的部分寬
度負載模式改變為指示的部分寬度負載模式。在一些實施例中,改變部分寬度負載模式可能可操作以控制改變將由處理器儲存於並非用以儲存從記憶體載入之資料的部分寬度之指示的暫存器之部分中的位元值。在一些實施例中,
作業系統模組或其他系統級模組可能維護一組元資料以記錄或追蹤哪些程式使用哪個部分寬度負載模式。一些程式當執行部分寬度負載指令(例如,給定運算碼)時可能使用一個部分寬度負載模式,而其他程式當執行此部分寬度負載指令(例如,此相同的給定運算碼)時可能使用另一不同的部分寬度負載模式。作業系統模組或其他模組當在程式之間切換時及/或當從中斷返回時可能存取元資料以判定哪個部分寬度負載模式來置放適用於程式的處理器。舉例而言,在一些實施例中,作業系統當切換至期望使用不同模式的程式時可能使用指令來改變模式。舉例而言,在一些實施例中,作業系統可能使用不同指令來讀取目前模式以了解當切換程式時是否需要改變模式。
在一些實施例中,使用者級應用程式模組或其他無特權軟體模組可能包括除錯資訊模組或其他元資料模組以傳遞軟體模組期望或打算使用哪個部分寬度負載模式給除錯器模組。除錯器模組可能存取和檢查此除錯資訊模組或其他元資料模組以判定軟體將使用的部分寬度負載模式。這可能使除錯器模組正確地解釋處理器將如何處理指令。
為了簡化說明,本文通常說明兩個不同模式及/或運算碼的意義。然而,將了解其他實施例可能使用三個、四個、或更多不同模式及/或對給定運算碼的意義。舉例而言,處理器可能具有兩個或更多位元,用以指示多個上述不同意義中的何者應用於給定運算碼。
本文已強調部分寬度負載指令的不同解釋。在其他實施例中,除了部分寬度負載指令之外之另一種類型的指令可能被解釋為在另一模式中的部分寬度負載指令(例如,零擴展的部分寬度負載指令)。
可能以不同方式、針對不同目的、且在不同處理器中實作處理器核心。例如,上述核心之實作可能包括:1)預期用於通用計算的通用有序核心;2)預期用於通用計算的高效能通用亂序核心;3)預期主要用於圖形及/或科學(產量)計算的專用核心。不同處理器之實作可能包括:1)包括預期用於通用計算的一或更多通用有序核心及/或預期用於通用計算的一或更多通用亂序核心之CPU;及2)包括預期主要用於圖形及/或科學(產量)的一或更多專用核心之協處理器。上述不同的處理器導致不同的電腦系統架構,其可能包括:1)在與CPU分離之晶片上的協處理器;2)在與CPU之相同封裝中之獨立晶粒上的協處理器;3)在與CPU相同之晶粒上的協處理器(在這種情況下,這類協處理器有時稱為專用邏輯,如整合圖形及/或科學(產量)邏輯、或專用核心);及4)系統晶片,其可能在相同晶粒上包括所述之CPU(有時稱為應用核心或應用處理器)、上述協處理器、及額外功能。在示範處理器和電腦架構的描述之後,接下來說明示範核心架構。
第8A圖係繪示根據本發明之實施例之示範有序管線與示範暫存器更名、亂序發出/執行管線兩者的方塊圖。第8B圖係繪示根據本發明之實施例之將包括在處理器中的有序架構核心之示範實施例與示範暫存器更名、亂序發出/執行架構核心兩者的方塊圖。第8A-B圖中的實線框繪示有序管線和有序核心,而非必要附加的虛線框繪示暫存器更名、亂序發出/執行管線和核心。假定有序態樣係亂序態樣之子集,將說明亂序態樣。
在第8A圖中,處理器管線800包括提取級802、長度解碼級804、解碼級806、分配級808、更名級810、排程(也稱為調度或發出)級812、暫存器讀取/記憶體讀取級814、執行級816、寫回/記憶體寫入級818、例外處理級822、及提交級824。
第8B圖顯示處理器核心890,包括前端單元830,耦接至執行引擎單元850,且這兩者都耦接至記憶體單元870。核心890可能是精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字(VLIW)核心、或混合或任一核心類型。作為另一種選擇,核心890可能是專用核心,例如,網路或通訊核心、壓縮引擎、協處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心、或之類。
前端單元830包括分支預測單元832,耦接至
指令快取單元834,其係耦接至指令轉譯旁視緩衝器(TLB)836,其係耦接至指令提取單元838,其係耦接至解碼單元840。解碼單元840(或解碼器)可解碼指令,並產生作為輸出的一或更多微操作、微碼進入點、微指令、其他指令、或其他控制信號,其係從原始指令解碼、或以其他方式反映原始指令、或從原始指令取得。解碼單元840可使用各種不同機制來實作。適當機制之實例包括,但不限於查找表、硬體實作、可程式化邏輯陣列(PLA)、微碼唯讀記憶體(ROM)、等等。在一實施例中,核心890包括微碼ROM或儲存用於某些巨集指令之微碼的其他媒體(例如,在解碼單元840中或以其他方式在前端單元830內)。解碼單元840係耦接至執行引擎單元850中的更名/分配器單元852。
執行引擎單元850包括更名/分配器單元
852,耦接至引退單元854及一組一或更多排程器單元856。排程器單元856代表任何數量的不同排程器,包括保留站、中央指令視窗、等等。排程器單元856係耦接至實體暫存器檔案單元858。每個實體暫存器檔案單元858代表一或更多實體暫存器檔案,其之不同者儲存一或更多不同的資料類型,如純量整數、純量浮點數、填充整數、填充浮點數、向量整數、向量浮點數、狀態(例如,指令指標,其係將被執行之下一個指令的位址)、等等。在一實施例中,實體暫存器檔案單元858包含向量暫存器單
元、寫入遮罩暫存器單元、及純量暫存器單元。這些暫存器單元可能提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。引退單元854重疊實體暫存器檔案單元858以繪示可實作暫存器更名和亂序執行的各種方式(例如,使用重排序緩衝器和引退暫存器檔案;使用未來檔案、歷史緩衝器、和引退暫存器檔案;使用暫存器映射及暫存器池;等等)。引退單元854和實體暫存器檔案單元858係耦接至執行叢集860。執行叢集860包括一組一或更多執行單元862和一組一或更多記憶體存取單元864。執行單元862可對各種類型的資料(例如,純量浮點數、填充整數、填充浮點數、向量整數、向量浮點數)進行各種操作(例如,移位、加法、減法、乘法)。儘管一些實施例可能包括一些專用於特定功能或功能組的執行單元,但其他實施例可能包括只有一個執行單元或全部進行所有功能的多個執行單元。排程器單元856、實體暫存器檔案單元858、和執行叢集860被顯示為可能是複數的,因為某些實施例對某些類型的資料/操作建立獨立管線(例如,純量整數管線、純量浮點數/填充整數/填充浮點數/向量整數/向量浮點數管線、及/或各具有其自己之排程器單元的記憶體存取管線、實體暫存器檔案單元、及/或執行叢集-且在獨立的記憶體存取管線之情況下,實作了某些實施例是只有此管線的執行叢集具有記憶體存取單元864。也應了解這裡使用了獨立管線,這些管線之一或更多者可能是亂序發出/執行且其餘的是有序的。
這組記憶體存取單元864係耦接至記憶體單
元870,其包括耦接至資料快取單元874的資料TLB單元872,資料快取單元874耦接至第2級(L2)快取單元876。在一示範實施例中,記憶體存取單元864可能包括載入單元、儲存位址單元、及儲存資料單元,各耦接至記憶體單元870中的資料TLB單元872。指令快取單元834更耦接至記憶體單元870中的第2級(L2)快取單元876。L2快取單元876係耦接一或更多其他級的快取且最終耦接至主記憶體。
舉例而言,示範暫存器更名、亂序發出/執行
核心架構可如下實作管線800:1)指令提取838進行提取和長度解碼級802和804;2)解碼單元840進行解碼級806;3)更名/分配器單元852進行分配級808和更名級810;4)排程器單元856進行排程級812;5)實體暫存器檔案單元858和記憶體單元870進行暫存器讀取/記憶體讀取級814;執行叢集860進行執行級816;6)記憶體單元870和實體暫存器檔案單元858進行寫回/記憶體寫入級818;7)各種單元可能包含在例外處理級822中;及8)引退單元854和實體暫存器檔案單元858進行提交級824。
核心890可支援包括本文所述之指令的一或
更多指令集(例如,x86指令集(具有已加入較新版本的一些擴充);美國加州Sunnyvale的MIPS技術之MIPS指令集;美國加州Sunnyvale的ARM股份公司之ARM
指令集(具有如NEON的可選額外的擴充))。在一實施例中,核心890包括支援填充資料指令集擴充(例如,AVX1、AVX2)的邏輯,藉此允許許多多媒體應用所使用之操作能使用填充資料來執行。
應了解核心可支援多執行緒(執行兩個或更
多平行組的操作或執行緒),且可以各種方式來實行,包括時間切割多執行緒、同步多執行緒(其中單一實體核心提供邏輯核心給實體核心係同步多執行緒的每個執行緒)、或以上之組合(例如,時間切割提取和解碼及之後如Intel®超執行緒技術的同步多執行緒)。
儘管在亂序執行之內文中說明了暫存器更
名,但應了解可在有緒架構中使用暫存器更名。儘管處理器之所示實施例也包括分開的指令和資料快取單元834/874及共享L2快取單元876,但其他實施例可能具有用於指令和資料兩者的單一內部快取,例如,第1級(L1)內部快取、或多個級的內部快取。在一些實施例中,系統可能包括內部快取與在核心及/或處理器外部的外部快取之組合。另外,所有快取可能在核心及/或處理器外部。
第9A-B圖繪示更具體之示範有序核心架構的方塊圖,其核心會是在晶片中的數個邏輯方塊之其一者(包括相同類型及/或不同類型的其他核心)。邏輯方塊
依據應用透過高頻寬互連網路(例如,環形網路)來與一些固定功能邏輯、記憶體I/O介面、及其他必要I/O邏輯通訊。
第9A圖係根據本發明之實施例之單一處理器
核心,與其連結至晶粒上互連網路902的連線及其第2級(L2)快取的區域子集904之方塊圖。在一實施例中,指令解碼器900支援具有填充資料指令級擴充的x86指令集。L1快取906允許將快取記憶體低延遲地存取至純量和向量單元中。儘管在一實施例中(為了簡化設計),純量單元908和向量單元910使用單獨的暫存器組(分別是純量暫存器912和向量暫存器914),且傳輸於其間的資料被寫入至記憶體而接著從第1級(L1)快取906讀回,但本發明之其他實施例可使用不同的方法(例如,使用單一暫存器組或包括允許資料在沒被寫入和讀回的情況下傳輸於這兩個暫存器檔案之間的通訊路徑)。
L2快取的區域子集904係為部分的全域L2快取,其分成單獨的區域子集,每個處理器核心一個。每個處理器核心具有直接存取路徑連接至自己的L2快取之區域子集904。處理器核心所讀取的資料係儲存在其L2快取子集904中並能與存取其自己區域L2快取子集之其他處理器核心並行地被快速存取。處理器核心所寫入的資料係儲存在自己的L2快取子集904中,且若有需要的話,會從其他子集中清除。環形網路確保共享資料的一致性。環形網路係雙向的以使得如處理器核心、L2快取和其他
邏輯方塊的代理器能在晶片內彼此通訊。每個環形資料路徑在每個方向上係為1012位元寬。
第9B圖係根據本發明之實施例之第9A圖中
的處理器核心之部分之分解圖。第9B圖包括L1快取904之L1資料快取906A部分,及更多關於向量單元910和向量暫存器914的細節。具體來說,向量單元910係為16寬的向量處理單元(VPU)(參見16寬的ALU 928),其執行整數、單精度浮點數、及雙精度浮點數指令之一或更多者。VPU以攪和單元920來支援攪和暫存器輸入、利用數字轉換單元922A-B來支援數字轉換、及利用複製單元924來支援複製記憶體輸入。寫入遮罩暫存器926允許預測產生之向量寫入。
第10圖係根據本發明之實施例之可具有超過一個核心,可具有整合記憶體控制器,且可具有整合圖形之處理器1000的方塊圖。第10圖中的實線框繪示具有單一核心1002A、系統代理器1010,一組一或更多匯流排控制器單元1016的處理器1000,而非必要添加的虛線框繪示具有多個核心1002A-N、在系統代理器單元1010中的一組一或更多整合記憶體控制器單元1014、及專用邏輯1008的另一處理器1000。
因此,處理器1000之不同實作可能包括:1)具有為整合圖形及/或科學(產量)邏輯(其可能包括
一或更多核心)之專用邏輯1008、及為一或更多通用核心(例如,通用有序核心、通用亂序核心、這兩者之組合)之核心1002A-N的CPU;2)具有為預期主要用於圖形及/或科學(產量)之大量專用核心之核心1002A-N的協處理器;及3)具有為大量通用有序核心之核心1002A-N的協處理器。於是,處理器1000可能是通用處理器、協處理器或專用處理器,例如,網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高產量多重整合核心(MIC)協處理器(包括30個或更多核心)、嵌入式處理器或之類。處理器可能在一或更多晶片上實作。處理器1000可能是一或多個基板的一部分及/或可使用如BiCMOS、CMOS、或NMOS的一些處理技術來實作在一或多個基板上。
記憶體階層包括核心內之一或多級的快取、
一組或一或更多共享快取單元1006、及耦接至這組整合記憶體控制器單元1014的外部記憶體(未示出)。這組共享快取單元1006可能包括如第2級(L2)、第3級(L3)、第4級(L4)、或其他級之快取的一或多個中級快取、最後一級的快取(LLC)、及/或以上之組合。儘管在一實施例中,環形為基的互連單元1012互連整合圖形邏輯1008、這組共享快取單元1006、及系統代理器單元1010/整合記憶體控制器單元1014,但其他實施例可能使用一些熟知的技術來互連上述單元。在一實施例中,在一或更多快取單元1006與核心1002-A-N之間保持一致性。
在一些實施例中,一或更多核心1002A-N能
夠執行多執行緒。系統代理器1010包括那些協調和操作核心1002A-N的元件。例如,系統代理器單元1010可能包括電力控制單元(PCU)及顯示單元。PCU可能是或包括調節核心1002A-N及整合圖形邏輯1008之電力狀態所需的邏輯和元件。顯示單元係用於驅動一或更多外部連接的顯示器。
就架構指令集而言,核心1002A-N可能是同
型或不同型的;亦即,核心1002A-N之兩個或更多者也許能夠執行相同的指令集,而其他者也許僅能夠執行指令集的子集或不同的指令集。
第11-14圖係示範電腦架構的方塊圖。用於膝上型電腦、桌上型電腦、手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視頻遊戲裝置、機上盒、微控制器、手機、可攜式媒體播放器、手持裝置、及各種其他電子裝置之本領域中所知的其他系統設計和配置也是適當的。一般而言,能夠合併處理器及/或如本文所揭露之其他執行邏輯之種類繁多的系統或電子裝置通常都是適當的。
現在參考第11圖,所顯示的係依照本發明之一實施例之系統1100的方塊圖。系統1100可能包括一或
更多處理器1110、1115,其係耦接至控制器中心1120。在一實施例中,控制器中心1120包括圖形記憶體控制器中心(GMCH)1190和輸入/輸出中心(IOH)1150(其可能在獨立晶片上);GMCH 1190包括耦接記憶體1140和協處理器1145的記憶體和圖形控制器;IOH 1150將輸入/輸出(I/O)裝置1160耦接至GMCH 1190。另外,記憶體和圖形控制器之一或兩者係整合在(如本文所述之)處理器內,記憶體1140和協處理器1145係直接耦接至處理器1110、及在具有IOH 1150之單晶片中的控制器中心1120。
在第11圖中以虛線來表示額外處理器1115的非必要性。每個處理器1110、1115可能包括一或更多本文所述之處理核心且可能是一些型式的處理器1000。
記憶體1140可能是例如動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或這兩者之組合。針對至少一實施例,控制器中心1120經由如前端匯流排(FSB)之多點匯流排、如快速路徑互連(QPI)的點對點介面、或類似連線1195來與處理器1110、1115通訊。
在一實施例中,協處理器1145係專用處理器,例如,高產量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或之類。在一實施例中,控制器中心1120可能包括整合圖形加速器。
就規制標準而言,在實體資源1110、1115之
間會有多種差異,包括架構、微型架構、熱、功率消耗特性、等等。
在一實施例中,處理器1110執行控制一般類
型之資料處理操作的指令。嵌入於指令內的可能是協處理器指令。處理器1110辨識這些協處理器指令為應由附接協處理器1145執行的類型。藉此,處理器1110在協處理器匯流排或其他互連上對協處理器1145發出這些協處理器指令(或代表協處理器指令的控制信號)。協處理器1145接受和執行接收之協處理器指令。
現在參考第12圖,所顯示的係依照本發明之
實施例之第一更具體示範系統1200的方塊圖。如第12圖所示,多處理器系統1200是點對點互連系統,且包括經由點對點互連1250耦接的第一處理器1270和第二處理器1280。處理器1270和1280之各者可能是一些型式的處理器1000。在本發明之一實施例中,處理器1270和1280分別是處理器1110和1115,而協處理器1238是協處理器1145。在另一實施例中,處理器1270和1280分別是處理器1110和協處理器1145。
顯示處理器1270和1280分別包括整合記憶
體控制器(IMC)單元1272和1282。處理器1270也包括作為其匯流排控制器單元點對點(P-P)介面1276和1278的部分;同樣地,第二處理器1280包括P-P介面1286和1288。處理器1270、1280可能使用P-P介面電路1278、1288經由點對點(P-P)介面1250來交換資訊。
如第12圖所示,IMC 1272和1282將處理器耦接至各別記憶體(即記憶體1232和1234),其可能是區域附接於各別處理器之主記憶體的部分。
處理器1270、1280可能各使用點對點介面電
路1276、1294、1286、1298經由個別P-P介面1252、1254來與晶片組1290交換資訊。晶片組1290可能可選地經由高效能介面1239來與協處理器1238交換資訊。在一實施例中,協處理器1238係專用處理器,例如,高產量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或之類。
共享快取(未示出)可能包括在任一處理器
中或兩處理器之外;還經由P-P互連與處理器連接,使得若將處理器置於低功率模式中,則任一或兩處理器的區域快取資訊可儲存於共享快取中。
晶片組1290可經由介面1296來耦接至第一
匯流排1216。在一實施例中,第一匯流排1216可能是周邊元件互連(PCI)匯流排、或如PCI快捷匯流排或另一第三代I/O互連匯流排的匯流排,雖然本發明之範圍並不以此為限。
如第12圖所示,各種I/O裝置1214可能與
匯流排橋接器1218一起耦接至第一匯流排1216,其中匯流排橋接器1218將第一匯流排1216耦接至第二匯流排1220。在一實施例中,一或更多額外的處理器1215(如協處理器、高產量MIC處理器、GPGPU的加速器(例
如,圖形加速器或數位信號處理(DSP)單位)、現場可程式閘陣列、或任何其他處理器)係耦接至第一匯流排1216。在一實施例中,第二匯流排1220可能是低接腳數(LPC)匯流排。在一實施例中,各種裝置可能耦接至第二匯流排1220,包括例如鍵盤及/或滑鼠1222、通訊裝置1227及如磁碟機或可能包括指令/碼和資料1230之其他大容量儲存裝置的儲存單元1228。此外,音頻I/O 1224可能耦接至第二匯流排1220。請注意其他架構係可能的。
例如,系統可能實作多點匯流排或其他這類架構,來取代第12圖之點對點架構。
現在參考第13圖,所顯示的係依照本發明之
實施例之第二更具體示範系統1300的方塊圖。第12和13圖中的相同元件具有類似參考數字,且已從第13圖省略第12圖之某些態樣以避免模糊第13圖之其他態樣。
第13圖繪示處理器1270、1280可分別包括整合記憶體和I/O控制邏輯(「CL」)1272和1282。因此,CL 1272、1282包括整合記憶體控制器單元且包括I/O控制邏輯。第13圖不只繪示記憶體1232、1234耦接至CL 1272、1282,而且還繪示I/O裝置1314也耦接至控制邏輯1272、1282。傳統I/O裝置1315係耦接至晶片組1290。
現在參考第14圖,所顯示的係依照本發明之實施例之SoC 1400的方塊圖。第10圖中的相似元件具有相同參考數字。而且,虛線框在更進階的SoC上是非必要
的特徵。在第14圖中,互連單元1402係耦接至:包括一組一或更多核心202A-N及共享快取單元1006的應用處理器1410;系統代理器單元1010;匯流排控制器單元1016;整合記憶體控制器單元1014;可包括整合圖形邏輯、影像處理器、音頻處理器、和視頻處理器的一組或一或更多協處理器1420;靜態隨機存取記憶體(SRAM)單元1430;直接記憶體存取(DMA)單元1432、及用於耦接一或更多外部顯示器的顯示單元1440。在一實施例中,協處理器1420包括專用處理器,例如,網路或通訊處理器、壓縮引擎、GPGPU、高產量MIC處理器、嵌入式處理器或之類。
本文所揭露之機制的實施例可能在硬體、軟
體、韌體、或上述實作方法之組合中實作。本發明之實施例可實作成執行在包含至少一處理器、儲存系統(包括揮發性和非揮發性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置的可程式系統上的電腦程式或程式碼。
可施用程式碼(如第12圖所示之碼1230)來
輸入指令以進行本文所述之功能並產生輸出資訊。可能以已知的方式來對一或更多輸出裝置施用輸出資訊。為了此應用之目的,處理系統包括任何具有處理器(例如,數位信號處理器(DSP)、微控制器、專用積體電路(ASIC)、或微處理器)之系統。
程式碼可能以高階程序或物件導向編程語言
來實作以與處理系統通訊。若需要的話,程式碼也可能以組合或機器語言來實作。事實上,本文所述之機制在範圍上並不受限於任何特定編程語言。在任何情況下,語言可能是經編譯或轉譯語言。
至少一實施例之一或更多態樣可能藉由儲存
在機器可讀媒體上的代表指令來實作,其表現在處理器內的各種邏輯,當指令被機器讀取時會使機器製造邏輯來進行本文所述之技術。這樣的表現,稱為「IP核心」,可儲存在有形的機器可讀媒體上並供應給各種顧客或製造廠來下載至實際產生邏輯的製造機器或處理器中。
這類機器可讀媒體可能包括,但不限於機器
或裝置製造或形成之物件的非暫態有形佈置,包括如硬碟、任何型態之磁碟(包括軟碟、光碟、唯讀光碟機(CD-ROM)、可覆寫光碟(CD-RW)、及磁光碟機)、如唯讀記憶體(ROM)的半導體裝置、如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)的隨機存取記憶體(RAM)、可抹除可程式化唯讀記憶體(EPROM)、快閃記憶體、電子可抹除可程式化唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁或光學卡、或適用於儲存電子指令之任何其他型態之媒體的儲存媒體。
因此,本發明之實施例也包括非暫態、有形
的機器可讀媒體,其包含指令或包含設計資料,如硬體描述語言(HDL),其定義本文所述之結構、電路、設備、
處理器及/或系統特徵。上述實施例也可能係指程式產品。
在一些情況中,可使用指令轉換器來將指令從來源指令集轉換成目標指令集。例如,指令轉換器可轉譯(例如,使用靜態二進制轉譯、包括動態編譯的動態二進制轉譯)、模仿、模擬、或以其他方式將指令轉換成一或更多由核心處理的其他指令。指令轉換器可能在軟體、硬體、韌體、或以上之組合中實作。指令轉換器可在處理器上、在處理器之外、或部分在處理器上且部分在處理器外。
第15圖係根據本發明之實施例之對照使用軟體指令轉換器來將來源指令集中的二進制指令轉換成目標指令集中的二進制指令之方塊圖。雖然指令轉換器可能另外在軟體、硬體、韌體、或以上之各種組合中實作,但在所述之實施例中,指令轉換器係軟體指令轉換器。第15圖顯示高階語言1502的程式可使用x86編譯器1504來編譯以產生x86二進制碼1506,其本身可被具有至少一x86指令集核心1516的處理器執行。具有至少一x86指令集核心1516的處理器代表任何能進行實質上與具有至少一x86指令集核心的Intel處理器相同之功能的處理器,藉由相容地執行或以其他方式處理(1)Intel x86指令集核心之指令集的實質部分或(2)目標碼型式的應用程式或
其他針對在具有至少一x86指令集核心的Intel處理器上執行的軟體,以達到實質上與具有至少一x86指令集核心的Intel處理器有相同的結果。x86編譯器1504代表可操作以產生x86二進制碼1506(例如,目標碼)的編譯器,其能連同或無須額外的連鎖處理地在具有至少一x86指令集核心1516的處理器上執行。同樣地,第15圖顯示高階語言1502的程式可使用另一指令集編譯器1508來編譯以產生原本就可被不具有至少一x86指令集核心1514的處理器(例如,具有執行美國加州Sunnyvale的MIPS技術之MIPS指令集及/或執行美國加州Sunnyvale的ARM股份公司之ARM指令集之核心的處理器)執行的另一指令集二進制碼1510。指令轉換器1512係用於將x86二進制碼1506轉換成本身可被不具有x86指令集核心1514之處理器執行的碼。由於能夠轉換上述的指令轉換器難以製造,因此經轉換碼不太可能與另一指令集二進制碼1510相同;然而,經轉換碼將完成一般操作且由來自另一指令集的指令組成。因此,指令轉換器1512代表軟體、硬體、韌體、或以上之組合,透過模仿、模擬或任何其他程序,允許處理器或其他不具有x86指令集處理器或核心的電子裝置執行x86二進制碼1506。
針對第2-3和5圖之任一者所述的元件、特徵、及細節可能也可選地在第1和4圖之任一者中使用。再者,本文針對任何設備所述的元件、特徵、及細節可能也可選地在本文所述之任一方法中使用,其在實施例中可
能藉由及/或以上述設備來進行。
在本說明及申請專利範圍中,可能已使用
「耦接」和「連接」之詞及其衍生詞。應了解這些詞不打算作為彼此的同義詞。反而,在特定實施例中,可能使用「連接」來表示兩個或更多元件彼此直接實體或電性接觸。「耦接」可能意味著兩個或更多元件直接實體或電性接觸。然而,「耦接」可能也意味著兩個或更多元件並非彼此直接接觸,但仍彼此合作或互動。例如,記憶體子系統可能透過一或更多中間元件或邏輯來與解碼器耦接,或暫存器寫入單元可能透過一或更多中間單元或邏輯來與暫存器耦接。在圖中,雙向箭頭係用於顯示連接和耦接。
在本說明及申請專利範圍中,可能已使用「邏輯」之詞。如本文所使用,邏輯可能包括硬體、韌體、軟體、或以上之組合。邏輯之實例包括積體電路、專用積體電路、類比電路、數位電路、編程邏輯裝置、包括指令的記憶體裝置、等等。在一些實施例中,硬體邏輯可能包括電晶體及/或可能連同其他電路元件的邏輯閘。邏輯可能代表模組、元件、單元、處理器元件、等等。
在上述說明中,為了解釋之目的,已提出許多具體細節以提供對本發明之實施例的全面性了解。然而,本領域之技藝者將清楚明白無需一些這些具體細節便可能實施一或更多其他實施例。不提供所述之特定實施例來限制本發明,而是透過示範實施例來說明它。本發明之範圍並非由具體實例決定,而是僅由申請專利範圍決定。
在其他例子中,以方塊圖形式或未詳細顯示熟知的電路、結構、裝置、及操作以免模糊對本說明之了解。
其中適當地認為,已在圖之間重覆參考數字、或參考數字的端部以指示對應或類似元件,其可能可選地具有類似或相同特性,除非另有指明或顯而易見的。其中已說明了多個元件,它們通常可能被合併成單一元件。在其他情況下,其中已說明了單一元件,它通常可能被分成多個元件。
已說明了各種操作和方法。已在流程圖中以相對基本的形式來說明了一些方法,但操作可能可選地加入方法及/或從方法移除。另外,儘管流程圖顯示根據示範實施例之操作的特定順序,但此特定順序是示範性的。其他實施例可能可選地以不同順序來進行操作、結合某些操作、重疊某些操作、等等。
一些實施例包括一種製造物件(例如,電腦程式產品),其包括機器可讀媒體。媒體可能包括一種機制,其提供(例如,儲存)為機器可讀之形式的資訊。機器可讀媒體可能提供、或於其上已儲存一或更多指令,若及/或當指令被機器執行時會使機器進行及/或導致機器進行本文所揭露之一或更多操作、方法、或技術。適當機器之實例包括,但不限於處理器、指令處理設備、數位邏輯電路、積體電路、等等。適當機器之其他實例包括計算裝置及合併上述處理器、指令處理設備、數位邏輯電路、或積體電路的其他電子裝置。上述計算裝置及電子裝置之實
例包括,但不限於桌上型電腦、膝上型電腦、筆記型電腦、平板電腦、小筆電、智慧型手機、手機、伺服器、網路裝置(例如,路由器和交換器)、行動上網裝置(MID)、媒體播放器、智慧型電視、易網機、機上盒、及視頻遊戲控制器。
在一些實施例中,機器可讀媒體可能包括有形及/或非暫態機器可讀儲存媒體。例如,有形及/或非暫態機器可讀儲存媒體可能包括軟碟、光儲存媒體、光碟、光學資料儲存裝置、CD-ROM、磁碟、磁光碟、唯讀記憶體(ROM)、可程式化ROM(PROM)、可抹除可程式化ROM(EPROM)、電子可抹除可程式化ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體、相變記憶體、相變資料儲存材料、非揮發性記憶體、非揮發性資料儲存裝置、非暫態記憶體、非暫態資料儲存裝置或之類。非暫態機器可讀儲存媒體並非僅由暫態傳播信號組成。
也應了解在本說明書中提到「一個實施例」、「一實施例」、或「一或更多實施例」例如意味著特定特徵可能包括在本發明之實施中。同樣地,應了解在本說明中,為了整合本揭露及協助了解各種本發明態樣之目的,各種特徵在單一實施例、圖、或其說明中有時被組合在一起。然而,本揭露之這種方法並不被解釋為反映出本發明需要比在每個申請專利範圍所明確提出更多的特徵
之打算。反而,如下面的申請專利範圍所反映,本發明態樣可能少於單一揭露之實施例的所有特徵。因此,在詳細說明之後的申請專利範圍特此被明確地併入此詳細說明中,其中每個申請專利範圍主張其本身作為本發明之獨立實施例。
下面的實例關於其他實施例。在一或更多實施例中,可在任何地方使用實例中的具體細節。
實例1係一種處理器,包括一暫存器,具有一寬度,及一解碼單元,用以接收一部分寬度負載指令。部分寬度負載指令係用以指示一記憶體的一記憶體位置作為一來源運算元且指示暫存器作為一目的地運算元。處理器也包括一記憶體子系統,與解碼單元耦接。記憶體子系統回應於部分寬度負載指令而將資料從指示的記憶體位址載入至處理器。處理器也包括一暫存器寫入單元,與記憶體子系統和暫存器耦接。暫存器寫入單元回應於部分寬度負載指令而將載入的資料之至少一部分寫入至暫存器的一部分寬度,及以儲存於暫存器之一剩餘寬度中的一組位元來完成寫入暫存器,這組位元具有取決於處理器之一部分寬度負載模式的位元值,部分寬度負載指令不用以指示部分寬度負載模式。
實例2包括實例1之處理器且可選地其中暫存器寫入單元在部分寬度負載模式中將作為這組位元的所
有零寫入至暫存器的剩餘寬度,且在一第二部分寬度負載模式中,不將作為這組位元的所有零寫入至暫存器的剩餘寬度。
實例3包括實例2之處理器且可選地其中在第二部分寬度負載模式中,暫存器寫入單元係用以將作為這組位元的符號擴展位元寫入至暫存器的剩餘寬度。
實例4包括實例2之處理器且可選地其中在第二部分寬度負載模式中,暫存器寫入單元係用以用最初在剩餘寬度中的一組位元來完成寫入暫存器,在解碼器接收部分寬度負載指令之前,儲存作為在暫存器之剩餘寬度中的這組位元。
實例5包括任何前面的實例之處理器且可選地更包括至少一位元,用以指示部分寬度負載模式,其中處理器係用以存取至少一位元以判定部分寬度負載模式及選擇一相應方法,其判定用於這組位元的位元值。
實例6包括任何前面的實例之處理器且可選地其中至少一位元係在處理器的一暫存器中且係應用程式可見的。
實例7包括任何前面的實例之處理器且可選地其中暫存器的寬度至少與處理器用以存取記憶體之記憶體位址一樣寬,且其中暫存器的部分寬度僅係暫存器之寬度的一部分(例如,一半)。
實例8包括任何前面的實例之處理器且可選地其中一個處理器係一64位元架構處理器,其使用64位
元的記憶體位址,且其中暫存器的部分寬度係32位元,或處理器係一128位元架構處理器,其使用128位元的記憶體位址,且其中暫存器的部分寬度係64位元。
實例9包括任何前面的實例之處理器且可選地其中處理器允許一使用者級應用程式改變部分寬度負載模式。
實例10包括任何前面的實例之處理器且可選地其中處理器允許一作業系統和一虛擬機監視器之至少一者改變部分寬度負載模式,但不允許使用者級應用程式改變部分寬度負載模式。
實例11包括任何前面的實例之處理器且可選地其中處理器具有一指令集,其包括用以改變部分寬度負載模式的一指令。
實例12包括實例1之處理器且可選地其中在部分寬度負載模式中,暫存器寫入單元係用以將作為這組位元的零寫入至暫存器的剩餘寬度,且處理器可選地更包括處理器的一單元,用以在一中斷和從一應用程式至一作業系統的一轉變之其一者下將部分寬度負載模式改變為一第二部分寬度負載模式。
實例13係一種由一處理器進行的方法。方法包括接收一部分寬度負載指令。部分寬度負載指令指示一記憶體的一記憶體位置作為一來源運算元且指示一暫存器作為一目的地運算元。方法包括回應於部分寬度負載指令而將資料從指示的記憶體位址載入至處理器。方法包括回
應於部分寬度負載指令而將載入的資料之至少一部分寫入至暫存器的一部分寬度。方法包括以儲存於暫存器之一剩餘寬度中的一組位元來完成寫入暫存器,這組位元具有取決於處理器之一部分寬度負載模式的位元值。部分寬度負載指令不指示部分寬度負載模式。
實例14包括實例13之方法且可選地其中完成寫入暫存器包括在部分寬度負載模式中,將作為這組位元的零寫入至暫存器的剩餘寬度。可選地,在不同的一第二部分寬度負載模式中,符號擴展位元而不是零將被寫入至暫存器的剩餘寬度。
實例15包括實例13之方法且可選地其中完成寫入暫存器包括在部分寬度負載模式中,將作為這組位元的零寫入至暫存器的剩餘寬度。可選地,在不同的一第二部分寬度負載模式中,最初在剩餘寬度中的一組位元將被儲存於暫存器的剩餘寬度中。
實例16包括任何前面的實例之方法且可選地更包括存取至少一位元以判定部分寬度負載模式。模式可能也可選地包括選擇對應於部分寬度負載模式的一方法,其判定用於這組位元的位元值。
實例17包括任何前面的實例之方法且可選地其中存取至少一位元包括存取在處理器之一應用程式可見暫存器中的至少一位元。
實例18包括任何前面的實例之方法且可選地其中寫入暫存器的部分寬度包括僅寫入暫存器之寬度的子
集(例如,一半)。可選地,暫存器係至少與處理器用以存取記憶體的記憶體位址一樣寬。
實例19包括任何前面的實例之方法且可選地其中寫入暫存器的部分寬度包括以下之其一者:可選地以零來將暫存器的32位元寫入在暫存器的剩餘部分中,且其中處理器用以存取記憶體的記憶體位址係64位元,或可選地以零來將暫存器的64位元寫入在暫存器的剩餘部分中,且其中處理器用以存取記憶體的記憶體位址係128位元。
實例20包括任何前面的實例之方法且可選地更包括從一使用者級應用程式接收一控制信號以改變部分寬度負載模式,及在接收控制信號之後改變部分寬度負載模式。
實例21包括任何前面的實例之方法且可選地更包括從一作業系統和一虛擬機監視器之其一者接收控制信號以改變部分寬度負載模式、及在從作業系統和虛擬機監視器之其一者接收控制信號之後改變部分寬度負載模式。方法可能也可選地包括防止使用者級應用程式改變部分寬度負載模式。
實例22包括任何前面的實例之方法且可選地更包括回應於處理器之一指令集的一使用者級指令而改變部分寬度負載模式。
實例23係一種包括儲存一組指令之一非暫態機器可讀儲存媒體的製造物件,若這組指令被一機器執行
可操作以使機器進行操作。操作包括檢查一軟體模組的元資料,包括檢查被處理器用以進行一部分寬度負載指令的處理器之一部分寬度負載模式的一指示。部分寬度負載指令係用以指示一記憶體位置作為一來源運算元且指示一暫存器作為一目的地運算元。操作也包括將處理器的部分寬度負載模式改變為指示的部分寬度負載模式。其中改變部分寬度負載模式係用以控制改變將被處理器儲存在指示的暫存器之一部分中的位元值,指示的暫存器並非用以儲存從記憶體載入之資料的一部分寬度。
實例24包括實例23之製造物件且可選地其中這組指令更包含若被機器執行可操作以使機器進行包括下列之操作的指令:維護指出哪些不同的軟體模組係用以使用哪些不同的部分寬度負載模式之元資料,包括軟體模組係用以使用部分寬度負載模式,及在處理一中斷之後,結合返回執行來自軟體模組之碼的一轉變來將處理器的部分寬度負載模式改變為指示的部分寬度負載模式。
實例25係一種用以處理指令的系統,包括一互連、與互連耦接的一動態隨機存取記憶體(DRAM)、及與互連耦接的一處理器。處理器包括具有一寬度的一暫存器、用以接收指令的一解碼單元。指令係用以指示DRAM的一記憶體位置作為一來源運算元且指示暫存器作為一目的地運算元。處理器也包括一記憶體子系統,與解碼單元耦接。記憶體子系統回應於指令而從指示的記憶體位址載入資料。處理器也包括一單元,與記憶體子系統和
暫存器耦接。單元回應於指令而將載入的資料之至少一部分寫入至暫存器的一部分寬度,及以儲存於暫存器之一剩餘寬度中的一組位元來完成寫入暫存器,這組位元具有取決於處理器之模式的位元值。可選地,指令不指示模式。
實例26包括實例25之系統且可選地其中單元在部分寬度負載模式中將作為這組位元的零寫入至暫存器的剩餘寬度。可選地,在一第二部分寬度負載模式中,單元並非用以將作為這組位元的零寫入至暫存器的剩餘寬度。
實例27係一種處理器,包括接收一部分寬度負載指令之工具。部分寬度負載指令係用以指示一記憶體的一記憶體位置作為一來源運算元且指示一暫存器作為一目的地運算元。處理器也包括用於回應於部分寬度負載指令而將資料從指示的記憶體位址載入至處理器之工具。處理器也包括用於回應於部分寬度負載指令而將載入的資料之至少一部分寫入至暫存器的一部分寬度之工具。處理器也包括用於以儲存於暫存器之一剩餘寬度中的一組位元來完成寫入暫存器之工具,這組位元具有取決於處理器之一部分寬度負載模式的位元值。可選地,部分寬度負載指令不指示部分寬度負載模式。
實例28包括實例27之處理器且可選地其中用於完成寫入暫存器之工具包括用於在部分寬度負載模式中將作為這組位元的零寫入至暫存器之剩餘寬度的工具。
實例29係一種儲存指令的機器可讀儲存媒
體,若指令被一機器執行會使機器進行實例13-22之任一者的方法。
實例30係一種處理器,用以進行實例13-22之任一者的方法。
實例31係一種處理器,包括用於進行實例13-22之任一者的方法之工具。
實例32係一種處理器,包括積體電路及/或邏輯及/或單元及/或元件及/或模組、或以上之任何組合,用以進行實例13-22之任一者的方法。
實例33係一種電腦系統,包括一動態隨機存取記憶體(DRAM)和一處理器,電腦系統係用以進行實例13-22之任一者的方法。
實例34係一種處理器,用以進行如本文實質上所述之至少一操作或一方法。
實例35係一種處理器,包括用於進行如本文實質上所述之至少一操作或一方法之工具。
實例36係一種處理器,用以執行或進行如本文實質上所述之一指令。
實例37係一種處理器,包括用於進行如本文實質上所述之一指令之工具。
100‧‧‧電腦系統
101‧‧‧處理器
102‧‧‧部分寬度負載指令
103‧‧‧解碼單元
104‧‧‧部分寬度負載模式相依的解碼邏輯
105‧‧‧部分寬度負載模式
106‧‧‧暫存器
107‧‧‧控制信號
108‧‧‧記憶體子系統
109‧‧‧互連機制
110‧‧‧記憶體
111‧‧‧記憶體位置
112‧‧‧部分寬度資料
113‧‧‧模式相依的部分寬度負載系統
114‧‧‧模式相依的暫存器寫入單元
115‧‧‧目的地暫存器
116‧‧‧對應值
117‧‧‧位元
118‧‧‧位元
Claims (26)
- 一種處理器,包含:一暫存器,具有一寬度;一解碼單元,用以接收一部分寬度負載指令,該部分寬度負載指令係用以指示一記憶體的一記憶體位置作為一來源運算元且用以指示該暫存器作為一目的地運算元;一記憶體子系統,與該解碼單元耦接,該記憶體子系統回應於該部分寬度負載指令而將資料從指示的該記憶體位址載入至該處理器;及一暫存器寫入單元,與該記憶體子系統和該暫存器耦接,該暫存器寫入單元回應於該部分寬度負載指令而將載入的該資料之至少一部分寫入至該暫存器的一部分寬度,及將儲存於該暫存器之一剩餘寬度中的一組位元用以完成寫入該暫存器,該組位元具有取決於該處理器之一部分寬度負載模式的位元值,該部分寬度負載指令不用以指示該部分寬度負載模式。
- 一種處理器,包含:一暫存器,具有一寬度;一解碼單元,用以接收一部分寬度負載指令,該部分寬度負載指令係用以指示一記憶體的一記憶體位置作為一來源運算元且用以指示該暫存器作為一目的地運算元;一記憶體子系統,與該解碼單元耦接,若該記憶體子系統接收該部分寬度負載指令則該記憶體子系統將資料從指示的該記憶體位址載入至該處理器;及 一暫存器寫入單元,與該記憶體子系統和該暫存器耦接,若該暫存器寫入單元接收該部分寬度負載指令則該暫存器寫入單元將載入的該資料之至少一部分寫入至該暫存器的一部分寬度,及將儲存於該暫存器之一剩餘寬度中的一組位元用以完成寫入該暫存器,該組位元具有取決於該處理器之一部分寬度負載模式的位元值,該部分寬度負載指令不用以指示該部分寬度負載模式。
- 如申請專利範圍第1或2項所述之處理器,其中該暫存器寫入單元在該部分寬度負載模式中係用以將作為該組位元的所有零寫入至該暫存器的該剩餘寬度,且在一第二部分寬度負載模式中,係用以不將作為該組位元的所有零寫入至該暫存器的該剩餘寬度。
- 如申請專利範圍第3項所述之處理器,其中在該第二部分寬度負載模式中,該暫存器寫入單元係用以將作為該組位元的符號擴展位元寫入至該暫存器的該剩餘寬度。
- 如申請專利範圍第3項所述之處理器,其中在該第二部分寬度負載模式中,該暫存器寫入單元係用以用最初在該剩餘寬度中的一組位元來完成寫入該暫存器,在解碼器接收該部分寬度負載指令之前,儲存作為在該暫存器之該剩餘寬度中的該組位元。
- 如申請專利範圍第1或2項所述之處理器,更包含至少一位元,用以指示該部分寬度負載模式,其中該處理器係用以存取該至少一位元以判定該部分寬度負載模式 及係用以選擇一相應方法,其判定用於該組位元的該些位元值。
- 如申請專利範圍第6項所述之處理器,其中該至少一位元係在該處理器的一暫存器中且係應用程式可見的。
- 如申請專利範圍第1或2項所述之處理器,其中該暫存器的寬度至少與由該處理器用以存取記憶體之記憶體位址一樣寬,且其中該暫存器的該部分寬度僅係該暫存器之寬度的一部分。
- 如申請專利範圍第8項所述之處理器,其中一個係選自:該處理器係一64位元架構處理器,其使用64位元的記憶體位址,且其中該暫存器的該部分寬度係32位元;及該處理器係一128位元架構處理器,其使用128位元的記憶體位址,且其中該暫存器的該部分寬度係64位元。
- 如申請專利範圍第1或2項所述之處理器,其中該處理器允許一使用者級應用程式改變該部分寬度負載模式。
- 如申請專利範圍第1或2項所述之處理器,其中該處理器允許一作業系統和一虛擬機監視器之至少一者改變該部分寬度負載模式,但不允許使用者級應用程式改變該部分寬度負載模式。
- 如申請專利範圍第1或2項所述之處理器,其中該處理器具有一指令集,其包括用以改變該部分寬度負載模式的一指令。
- 如申請專利範圍第1或2項所述之處理器,其中在該部分寬度負載模式中,該暫存器寫入單元係用以將作為該組位元的零寫入至該暫存器的該剩餘寬度,且更包含:該處理器的一單元,用以在一中斷和從一應用程式至一作業系統的一轉變之一者下將該部分寬度負載模式改變為一第二部分寬度負載模式。
- 一種由一處理器進行的方法,包含:接收一部分寬度負載指令,該部分寬度負載指令指示一記憶體的一記憶體位置作為一來源運算元且指示一暫存器作為一目的地運算元;回應於該部分寬度負載指令而將資料從指示的該記憶體位址載入至該處理器;回應於該部分寬度負載指令而將載入的該資料之至少一部分寫入至該暫存器的一部分寬度;及以儲存於該暫存器之一剩餘寬度中的一組位元來完成寫入該暫存器,該組位元具有取決於該處理器之一部分寬度負載模式的位元值,該部分寬度負載指令不指示該部分寬度負載模式。
- 如申請專利範圍第14項所述之方法,其中完成寫入該暫存器包含在該部分寬度負載模式中,將作為該組 位元的零寫入至該暫存器的該剩餘寬度,且其中在不同的一第二部分寬度負載模式中,符號擴展位元而不是零將被寫入至該暫存器的該剩餘寬度。
- 如申請專利範圍第14項所述之方法,其中完成寫入該暫存器包含在該部分寬度負載模式中,將作為該組位元的零寫入至該暫存器的該剩餘寬度,且其中在不同的一第二部分寬度負載模式中,最初在該剩餘寬度中的一組位元將被儲存於該暫存器的該剩餘寬度中。
- 如申請專利範圍第14項所述之方法,更包含:存取至少一位元以判定該部分寬度負載模式;及選擇對應於該部分寬度負載模式的一方法,其判定用於該組位元的該些位元值。
- 如申請專利範圍第17項所述之方法,其中存取該至少一位元包含存取在該處理器之一應用程式可見暫存器中的該至少一位元。
- 如申請專利範圍第14項所述之方法,其中寫入該暫存器的該部分寬度包含僅寫入該暫存器之寬度的一子集,且其中該暫存器係至少與該處理器用以存取該記憶體的記憶體位址一樣寬。
- 如申請專利範圍第19項所述之方法,其中寫入該暫存器的該部分寬度包含以下之其一者:以零來將該暫存器的32位元寫入在該暫存器的剩餘部分中,且其中該處理器用以存取該記憶體的該記憶體位址係64位元;及 以零來將該暫存器的64位元寫入在該暫存器的剩餘部分中,且其中該處理器用以存取該記憶體的該記憶體位址係128位元。
- 如申請專利範圍第14項所述之方法,更包含:從一使用者級應用程式接收一控制信號以改變該部分寬度負載模式;及在接收該控制信號之後改變該部分寬度負載模式。
- 如申請專利範圍第14項所述之方法,更包含:從一作業系統和一虛擬機監視器之一者接收控制信號以改變該部分寬度負載模式;在從該作業系統和該虛擬機監視器之該一者接收該控制信號之後改變該部分寬度負載模式;及防止使用者級應用程式改變該部分寬度負載模式。
- 一種包含儲存一組指令之一非暫態機器可讀儲存媒體的製造物件,若該組指令被一機器執行可操作以使該機器進行操作,包含:檢查一軟體模組的元資料,包括檢查被一處理器用以進行一部分寬度負載指令的該處理器之一部分寬度負載模式的一指示,該部分寬度負載指令用以指示一記憶體位置作為一來源運算元且用以指示一暫存器作為一目的地運算元;及將該處理器的該部分寬度負載模式改變為指示的該部分寬度負載模式,其中改變該部分寬度負載模式係用以控制被該處理器儲存在指示的該暫存器之一部分中的位元值 中的一改變,指示的該暫存器並非用以儲存從記憶體載入之資料的一部分寬度。
- 如申請專利範圍第23項所述之製造物件,其中該組指令更包含若被該機器執行可操作以使該機器進行包含下列之操作的指令:維護指出哪些不同的軟體模組係用以使用哪些不同的部分寬度負載模式之元資料,包括該軟體模組係用以使用該部分寬度負載模式;及在處理一中斷之後,結合返回執行來自該軟體模組之碼的一轉變來將該處理器的該部分寬度負載模式改變為指示的該部分寬度負載模式。
- 一種用以處理指令的系統,包含:一互連;一動態隨機存取記憶體(DRAM),與該互連耦接;及一處理器,與該互連耦接,該處理器包含:一暫存器,具有一寬度;一解碼單元,用以接收一指令,該指令係用以指示該DRAM的一記憶體位置作為一來源運算元且用以指示該暫存器作為一目的地運算元;一記憶體子系統,與該解碼單元耦接,該記憶體子系統回應於該指令而從指示的該記憶體位址載入資料;及一單元,與該記憶體子系統和該暫存器耦接,該 單元回應於該指令而將載入的該資料之至少一部分寫入至該暫存器的一部分寬度,及將儲存於該暫存器之一剩餘寬度中的一組位元用以完成寫入該暫存器,該組位元具有取決於該處理器之一模式的位元值,該指令不用以指示該模式。
- 如申請專利範圍第25項所述之系統,其中該單元在該部分寬度負載模式中將作為該組位元的零寫入至該暫存器的該剩餘寬度,且在一第二部分寬度負載模式中,不將作為該組位元的零寫入至該暫存器的該剩餘寬度。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/931,070 US9395990B2 (en) | 2013-06-28 | 2013-06-28 | Mode dependent partial width load to wider register processors, methods, and systems |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201523439A TW201523439A (zh) | 2015-06-16 |
TWI524271B true TWI524271B (zh) | 2016-03-01 |
Family
ID=52116848
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103121018A TWI524271B (zh) | 2013-06-28 | 2014-06-18 | 模式相依的頻寬負載至較寬暫存器處理器,方法和系統 |
Country Status (8)
Country | Link |
---|---|
US (1) | US9395990B2 (zh) |
EP (1) | EP3014422B1 (zh) |
KR (1) | KR101839479B1 (zh) |
CN (2) | CN105453030B (zh) |
BR (1) | BR112015029955A2 (zh) |
RU (1) | RU2638641C2 (zh) |
TW (1) | TWI524271B (zh) |
WO (1) | WO2014209747A1 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9395990B2 (en) | 2013-06-28 | 2016-07-19 | Intel Corporation | Mode dependent partial width load to wider register processors, methods, and systems |
GB2539040B (en) | 2015-06-05 | 2021-08-25 | Advanced Risc Mach Ltd | Issue policy control |
US10901940B2 (en) * | 2016-04-02 | 2021-01-26 | Intel Corporation | Processors, methods, systems, and instructions to atomically store to memory data wider than a natively supported data width |
US10248423B2 (en) * | 2016-07-22 | 2019-04-02 | International Business Machines Corporation | Executing short pointer mode applications |
US10795853B2 (en) | 2016-10-10 | 2020-10-06 | Intel Corporation | Multiple dies hardware processors and methods |
WO2018075052A1 (en) | 2016-10-20 | 2018-04-26 | Intel Corporation | Systems, apparatuses, and methods for fused multiply add |
CN113287098A (zh) * | 2019-03-26 | 2021-08-20 | 拉姆伯斯公司 | 多精度存储器系统 |
GB2591788B (en) * | 2020-02-06 | 2022-06-01 | Advanced Risc Mach Ltd | Saving and restoring registers |
CN112346783B (zh) * | 2020-11-05 | 2022-11-22 | 海光信息技术股份有限公司 | 一种处理器及其操作方法、装置、设备和介质 |
US20220350570A1 (en) * | 2021-04-28 | 2022-11-03 | International Business Machines Corporation | Pipelined hardware to accelerate modular arithmetic operations |
CN114020332B (zh) * | 2022-01-05 | 2022-09-23 | 北京微核芯科技有限公司 | 指令处理方法及其装置 |
CN114527953B (zh) * | 2022-04-24 | 2022-07-08 | 深圳云豹智能有限公司 | 存储器数据处理系统、方法、装置、计算机设备和介质 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2288521B (en) * | 1994-03-24 | 1998-10-14 | Discovision Ass | Reconfigurable process stage |
US5446912A (en) * | 1993-09-30 | 1995-08-29 | Intel Corporation | Partial width stalls within register alias table |
US6122725A (en) | 1998-03-31 | 2000-09-19 | Intel Corporation | Executing partial-width packed data instructions |
US6542988B1 (en) | 1999-10-01 | 2003-04-01 | Sun Microsystems, Inc. | Sending both a load instruction and retrieved data from a load buffer to an annex prior to forwarding the load data to register file |
US6871273B1 (en) * | 2000-06-22 | 2005-03-22 | International Business Machines Corporation | Processor and method of executing a load instruction that dynamically bifurcate a load instruction into separately executable prefetch and register operations |
EP1217513A3 (en) * | 2000-12-23 | 2003-08-13 | International Business Machines Corporation | Method for handling 32 bit results for an out-of-order processor with a 64 bit architecture |
US7228403B2 (en) * | 2000-12-23 | 2007-06-05 | International Business Machines Corporation | Method for handling 32 bit results for an out-of-order processor with a 64 bit architecture |
US6889312B1 (en) * | 2001-04-02 | 2005-05-03 | Advanced Micro Devices, Inc. | Selective zero extension based on operand size |
US6995756B2 (en) * | 2003-03-31 | 2006-02-07 | Intel Corporation | Methods and apparatus for driving pixels in a microdisplay |
US7237096B1 (en) * | 2004-04-05 | 2007-06-26 | Sun Microsystems, Inc. | Storing results of producer instructions to facilitate consumer instruction dependency tracking |
JPWO2006043345A1 (ja) * | 2004-10-19 | 2008-05-22 | 松下電器産業株式会社 | プロセッサ |
US7376817B2 (en) | 2005-08-10 | 2008-05-20 | P.A. Semi, Inc. | Partial load/store forward prediction |
US20070186210A1 (en) | 2006-02-06 | 2007-08-09 | Via Technologies, Inc. | Instruction set encoding in a dual-mode computer processing environment |
US8566568B2 (en) * | 2006-08-16 | 2013-10-22 | Qualcomm Incorporated | Method and apparatus for executing processor instructions based on a dynamically alterable delay |
US9529592B2 (en) * | 2007-12-27 | 2016-12-27 | Intel Corporation | Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation |
US8977790B2 (en) * | 2008-02-15 | 2015-03-10 | Freescale Semiconductor, Inc. | Peripheral module register access methods and apparatus |
US8392693B2 (en) | 2009-08-28 | 2013-03-05 | Via Technologies, Inc. | Fast REP STOS using grabline operations |
US8627044B2 (en) * | 2010-10-06 | 2014-01-07 | Oracle International Corporation | Issuing instructions with unresolved data dependencies |
US20120254588A1 (en) | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask |
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 |
US8918626B2 (en) * | 2011-11-10 | 2014-12-23 | Oracle International Corporation | Prefetching load data in lookahead mode and invalidating architectural registers instead of writing results for retiring instructions |
CN107220027A (zh) * | 2011-12-23 | 2017-09-29 | 英特尔公司 | 用于执行掩码位压缩的系统、装置以及方法 |
US9395990B2 (en) | 2013-06-28 | 2016-07-19 | Intel Corporation | Mode dependent partial width load to wider register processors, methods, and systems |
-
2013
- 2013-06-28 US US13/931,070 patent/US9395990B2/en not_active Expired - Fee Related
-
2014
- 2014-06-18 TW TW103121018A patent/TWI524271B/zh not_active IP Right Cessation
- 2014-06-19 RU RU2015151131A patent/RU2638641C2/ru not_active IP Right Cessation
- 2014-06-19 WO PCT/US2014/043159 patent/WO2014209747A1/en active Application Filing
- 2014-06-19 KR KR1020157031766A patent/KR101839479B1/ko active IP Right Grant
- 2014-06-19 CN CN201480030091.1A patent/CN105453030B/zh not_active Expired - Fee Related
- 2014-06-19 BR BR112015029955A patent/BR112015029955A2/pt active Search and Examination
- 2014-06-19 EP EP14816582.2A patent/EP3014422B1/en active Active
- 2014-06-19 CN CN201910081033.6A patent/CN109508206B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
BR112015029955A2 (pt) | 2017-07-25 |
EP3014422B1 (en) | 2021-08-25 |
EP3014422A4 (en) | 2017-03-01 |
RU2015151131A (ru) | 2017-05-31 |
CN109508206B (zh) | 2023-08-29 |
CN105453030A (zh) | 2016-03-30 |
CN105453030B (zh) | 2019-02-15 |
RU2638641C2 (ru) | 2017-12-14 |
WO2014209747A1 (en) | 2014-12-31 |
KR20150139931A (ko) | 2015-12-14 |
TW201523439A (zh) | 2015-06-16 |
EP3014422A1 (en) | 2016-05-04 |
US9395990B2 (en) | 2016-07-19 |
KR101839479B1 (ko) | 2018-03-19 |
CN109508206A (zh) | 2019-03-22 |
US20150006856A1 (en) | 2015-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI524271B (zh) | 模式相依的頻寬負載至較寬暫存器處理器,方法和系統 | |
JP6351682B2 (ja) | 装置および方法 | |
TWI567646B (zh) | 容許一架構之編碼模組使用另一架構之程式庫模組的架構間相容性模組 | |
CN107077321B (zh) | 用于执行融合的单个周期递增-比较-跳转的指令和逻辑 | |
KR101842058B1 (ko) | 푸싱형 버퍼 복사 및 저장 기능성을 제공하기 위한 명령어 및 논리 | |
TWI567751B (zh) | 多暫存器記憶體存取指令、處理器、方法及系統 | |
KR101597774B1 (ko) | 마스킹된 전체 레지스터 액세스들을 이용한 부분적 레지스터 액세스들을 구현하기 위한 프로세서들, 방법들 및 시스템들 | |
JP6761565B2 (ja) | アウトオブオーダーハードウェアソフトウェア協調設計プロセッサにおいてスタック同期命令を用いてプレディケート値のスタックを実装し維持する方法および装置 | |
TWI494759B (zh) | 索引化頁面位址之轉譯以降低在虛擬化環境中記憶體使用量的技術 | |
JP2020004397A (ja) | テンソル順列エンジンのための装置および方法 | |
TW201730755A (zh) | 用於以傳巷為基礎之跨步分散運算的指令與邏輯 | |
TW201800948A (zh) | 提取資料至具保證完成指示快取階之處理器、方法、系統及指令 | |
TWI599948B (zh) | 用於存取一組暫存器爲複數較小暫存器或結合的較大暫存器之任一者的處理器、方法、及系統 | |
US20170286110A1 (en) | Auxiliary Cache for Reducing Instruction Fetch and Decode Bandwidth Requirements | |
CN110659129A (zh) | 用于数据表示之间的一致、加速的转换的装置和方法 | |
TWI515653B (zh) | 指令順序執行之指令對、處理器、方法及系統 | |
TWI603261B (zh) | 用以執行離心操作的指令及邏輯 | |
JP6835436B2 (ja) | マスクをマスク値のベクトルに拡張するための方法および装置 | |
TW201734766A (zh) | 使用處理器指令前綴的二進制轉譯支援 | |
US9229874B2 (en) | Apparatus and method for compressing a memory address | |
TWI628595B (zh) | 用以執行反離心操作之處理設備和非暫態機器可讀取媒體 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |