TWI729029B - 用於向量位元欄壓縮及擴展的指令及邏輯 - Google Patents

用於向量位元欄壓縮及擴展的指令及邏輯 Download PDF

Info

Publication number
TWI729029B
TWI729029B TW105137911A TW105137911A TWI729029B TW I729029 B TWI729029 B TW I729029B TW 105137911 A TW105137911 A TW 105137911A TW 105137911 A TW105137911 A TW 105137911A TW I729029 B TWI729029 B TW I729029B
Authority
TW
Taiwan
Prior art keywords
bit
array
instruction
processor
compressed
Prior art date
Application number
TW105137911A
Other languages
English (en)
Other versions
TW201732555A (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 TW201732555A publication Critical patent/TW201732555A/zh
Application granted granted Critical
Publication of TWI729029B publication Critical patent/TWI729029B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing

Landscapes

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

Abstract

一處理器包含用於執行一元素陣列與一緊縮位元陣列間之轉換的一指令之一核心。該核心包含用於執行下列操作之邏輯:識別將被該緊縮位元陣列使用的一或多個位元欄長度;識別該元素陣列的元素之寬度;以及根據該位元欄長度以及該元素陣列的元素之該寬度,而同時針對該元素陣列之元素及該緊縮位元陣列之位元欄在該元素陣列與該緊縮位元陣列之間轉換。

Description

用於向量位元欄壓縮及擴展的指令及邏輯
本發明之揭露係有關處理邏輯、微處理器、及相關聯的指令集架構之領域,而該指令集架構被處理器或其他處理邏輯執行時,將執行邏輯、數學、或其他功能運算。
多處理器系統正變得越來越常見。多處理器系統的應用包括動態域分割且一直到桌上型計算。為了利用多處理器系統之優點,將被執行的碼可被分成多個執行緒(thread),以供各處理實體執行。可以與另一執行緒平行之方式執行每一執行緒。此外,為了增加處理實體的效用,可採用亂序執行(out-of-order execution)。當有指令輸入時,亂序執行可執行這些指令。因此,碼序列中較晚出現的指令可能在該碼序列中之較早出現的指令之前被執行。
一處理器包含一前端電路,用以接收用來將複數個資料值在元素陣列與緊縮位元陣列之間做轉換的指令;一解碼器電路,用以將該指令解碼;一核心電路,用以執行該指令;以及一指令引退單元電路,用以將該指令引退。核心電路包含用以識別用於該元素陣列之複數個元素的元素寬度的電路,用以識別用於該緊縮位元陣列之複數個位元欄的一或多個位元欄長度的電路,以及用以將該複數個資料值在該元素陣列與該緊縮位元陣列之間做轉換的電路。
100,600,700,1800:系統
102,200,500,610,615,770,780,1000,1215,1710:處理器
108,142,162,462,1822:執行單元
110:處理器匯流排
104:內部快取記憶體
106,145,164:暫存器檔案
109,143:緊縮指令集
120,640,732,734,1140:記憶體
116:系統邏輯晶片
118:記憶體介面
122:系統輸入/輸出
112:圖形控制器
114:加速圖形埠互連
130,650:輸入/輸出控制器集線器
128:快閃記憶體基本輸入/輸出系統
124:資料儲存裝置
134:網路控制器
140,160:資料處理系統
159,170:處理核心
144,165,1812:解碼器
141:匯流排
146:同步動態隨機存取記憶體控制
147:靜態隨機存取記憶體控制
148:爆發模式快閃記憶體介面
149:PCMCIA/CF卡控制
150:液晶顯示器控制
151:直接記憶體存取控制器
152:替代匯流排主控裝置介面
153:輸入/輸出匯流排
154:輸入/輸出橋接器
155:通用非同步收發器
156:通用序列匯流排
157:藍芽無線通用非同步收發器
158:輸入/輸出擴充介面
166:主處理器
161:單一指令多重資料共處理器
167:快取記憶體
168:輸入/輸出系統
169:無線介面
163:指令集
171:共處理器匯流排
201,570,1808:前端
226:指令預取器
228:指令解碼器
230:追蹤快取記憶體
234:微運算佇列
232:微碼唯讀記憶體
203,580:亂序執行引擎
202:快速排程器
204:慢速/一般浮點排程器
206:簡單浮點排程器
211:執行塊
208:整數暫存器檔案
210:浮點暫存器檔案
212,214:位址產生單元
216,218:快速算術邏輯單元
220:慢速算術邏輯單元
222:浮點算術邏輯單元
224:浮點移動單元
310:緊縮位元組
320:緊縮字
330:緊縮雙字
341:緊縮半倍
342:緊縮單倍
343:緊縮雙倍
344:不帶正負號緊縮位元組表示法
345:帶正負號緊縮位元組表示法
346:不帶正負號緊縮字表示法
347:帶正負號緊縮字表示法
348:不帶正負號緊縮雙字表示法
349:帶正負號緊縮雙字表示法
360,370,380:運算碼格式
361,362,371,372,383,384,387,388:欄
364,365,374,375,385,390:來源運算元識別符
366,376,386:目的地運算元識別符
378:前置位元組
363,373:MOD欄
382,389:共處理器資料處理運算碼欄
381:條件欄
400:處理器管線
402:提取階段
404:長度解碼階段
406:解碼階段
408:分配階段
410:重命名階段
412:排程階段
414:暫存器讀取/記憶體讀取階段
416:執行階段
418:寫回/記憶體寫入階段
422:異常處置階段
424:提交階段
430:前端單元
450:執行引擎單元
470:記憶體單元
490:處理器核心
432,1535:分支預測單元
434:指令快取記憶體單元
436,1545:指令轉譯後備緩衝區
438:指令提取單元
440:解碼單元
452:重命名/分配器單元
454,1824:指令引退單元
456:排程器單元
458:實體暫存器檔案單元
460:執行叢集
464:記憶體存取單元
472:資料轉譯後備緩衝區單元
474:資料快取記憶體單元
476:二階快取記憶體單元
502,502A-N,1406,1407,1826:核心
510:系統代理單元
506,572,574,1525:快取記憶體
552:記憶體控制單元
560:圖形模組
508:環狀互連單元
510:系統代理單元
512:顯示引擎
514,796:介面
516:直接媒體介面
518:PCIe橋接器
520:記憶體控制器
522:一致性邏輯
565:媒體引擎
503:快取記憶體階層
582:分配模組
584:資源排程器
586:資源
588:重排序緩衝器
595:最後一階快取記憶體
590:模組
599:隨機存取記憶體
620:圖形記憶體控制器集線器
695:前端匯流排
645,1724:顯示器
660:外部圖形裝置
670:週邊裝置
750:點對點互連
772,782,914:整合式記憶體控制器單元
776,778,786,788,794,798:點對點介面電路
750,752,754:點對點介面
790:晶片組
738:高效能圖形電路
739:高效能圖形介面
716:第一匯流排
714,814:輸入/輸出裝置
718:匯流排橋接器
720:第二匯流排
722:鍵盤及/或滑鼠
727:通訊裝置
730:程式碼及資料
728:儲存單元
724:音訊輸入/輸出
872,882:整合式記憶體及輸入/輸出控制邏輯
815:傳統輸入/輸出裝置
900:系統單晶片
902:互連單元
910:應用處理器
916:匯流排控制器單元
908:整合式圖形邏輯邏輯
924,1015:影像處理器
926:音訊處理器
928,1020:視訊處理器
930:靜態隨機存取記憶體單元
932:直接記憶體存取單元
940:顯示單元
1005:中央處理單元
1010,1415:圖形處理單元
1025:通用序列匯流排控制器
1030:通用非同步收發器控制器
1035:序列週邊互連/安全數位輸入輸出控制器
1040:顯示裝置
1045:記憶體介面控制器
1050:行動產業處理器介面控制器
1055:快閃記憶體控制器
1060:雙倍資料速率控制器
1065:安全引擎
1070:I2S/I2C控制器
1100:儲存器
1120:模擬軟體
1110:硬體或軟體模型
1150:有線連接
1160:無線連接
1165:製造設施
1205:程式
1210:模擬邏輯
1302:高階語言
1304:x86編譯器
1314:不具有至少一x86指令集核心之處理器
1316:具有至少一x86指令集核心之處理器
1306:x86二進制碼
1308:替代指令集編譯器
1310:替代指令集二進制碼
1312:指令轉換器
1400,1500:指令集架構
1408:二階快取記憶體控制
1409,1520:匯流排介面單元
1411:二階快取記憶體
1410:互連
1420:視訊編碼解碼器
1425:液晶顯示器視訊介面
1430:用戶介面模組介面
1435:啟動唯讀記憶體介面
1440:同步動態隨機存取記憶體控制器
1445:快閃記憶體控制器
1450:序列週邊介面主單元
1490:行動產業處理器介面
1495:高解析度多媒體介面
1460:同步動態隨機存取記憶體晶片或模組
1465:快閃記憶體
1470:藍芽模組
1475:高速3G數據機
1480:全球衛星定位系統模組
1540:記憶體系統
1565:執行實體
1510:快取及匯流排介面單元
1530:指令預取階段
1550:雙指令解碼階段
1555:暫存器重命名階段
1560:發出階段
1570:寫回階段
1580:被執行的指令指標
1582:指令引退指標
1566:算術邏輯單元/乘法單元
1567:算術邏輯單元
1568:浮點單元
1569:位址
1511:中斷控制及分送單元
1512:監聽控制單元
1514:監聽過濾器
1515:計時器
1516:AC埠
1546:載入/儲存單元
1544:記憶體管理單元
1543:預取器
1532:指令快取記憶體
1531:快速迴圈模式選項
1536:全域歷史
1537:目標位址
1538:轉回堆疊
1557:分支
1556:暫存器集區
1561:指令佇列
1575:追蹤單元
1600:執行管線
1700:電子裝置
1725:觸控式螢幕
1730:觸控板
1745:近場通訊單元
1740:感測器集線器
1739,1746:熱感測器
1735:高速晶片組
1738:可信賴的平台模組
1722:BIOS/韌體/快閃記憶體
1760:數位信號處理器
1720:磁碟機
1750:無線區域網單元
1752:藍芽單元
1756:無線廣域網路單元
1755:全球衛星定位系統
1754:相機
1715:低功率雙倍資料速率記憶體單元
1741:加速度計
1742:環境光感測器
1743:羅盤
1744:陀螺儀
1737:風扇
1736:鍵盤
1763:喇叭
1764:耳機
1765:麥克風
1762:音訊單元
1757:用戶介面模組卡
1802:指令流
1810:提取器
1814:二進制轉譯器
1804:編譯器
1818:重命名及分配單元
1820:排程器
1828:記憶體子系統
1830,1904,2002:緊縮位元陣列
1902,2004:陣列
已參照下列附圖之圖式而以舉例且非限制之方式說明了各實施例:第1A圖是根據本發明揭露的實施例而以可包含用於執行指令的一些執行單元的一處理器形成之一例示電腦系統之一方塊圖;第1B圖根據本發明揭露的實施例而示出一資料處理系統;第1C圖示出用於執行文字串比較操作的一資料處理系統之其他實施例;第2圖是可包含用於執行根據本發明揭露的實施例的指令的邏輯電路之一處理器的微架構之一方塊圖;第3A圖根據本發明揭露的實施例而示出在多媒體暫存器中之各種緊縮資料類型表示法;第3B圖根據本發明揭露的實施例而示出可能的暫存 器中資料儲存格式;第3C圖根據本發明揭露的實施例而示出多媒體暫存器中之各種帶正負號及不帶正負號緊縮資料類型表示法;第3D圖示出一運算編碼格式的一實施例;第3E圖根據本發明揭露的實施例而示出具有四十個或更多的位元之另一可能的運算編碼格式;第3F圖根據本發明揭露的實施例而示出又一可能的運算編碼格式;第4A圖是根據本發明揭露的一實施例的一循序管線及一暫存器重命名階段、亂序發出/執行管線之一方塊圖;第4B圖是將被包含在根據本發明揭露的一實施例的一處理器中之一循序架構核心及一暫存器重命名邏輯、亂序發出/執行邏輯之一方塊圖第5A圖是根據本發明揭露的實施例的一處理器之一方塊圖;第5B圖是根據本發明揭露的實施例的一核心的一例示實施方式之一方塊圖;第6圖是根據本發明揭露的實施例的一系統之一方塊圖;第7圖是根據本發明揭露的實施例的一第二系統之一方塊圖;第8圖是根據本發明揭露的實施例的一第三系統之一方塊圖; 第9圖是根據本發明揭露的實施例的一系統單晶片之一方塊圖;第10圖根據本發明揭露的實施例而示出包含一中央處理單元以及可執行至少一指令的一圖形處理單元之一處理器;第11圖是根據本發明揭露的實施例而示出智慧財產權核心的開發之一方塊圖;第12圖根據本發明揭露的實施例而示出不同類型的一處理器可如何模擬一第一類型的一指令;第13圖根據本發明揭露的實施例而示出使用一軟體指令轉換器將一來源指令集中之二進制指令轉換為一目標指令集中之二進制指令的一對照方塊圖;第14圖是根據本發明揭露的實施例的一處理器之一指令集架構之一方塊圖;第15圖是根據本發明揭露的實施例的一處理器之一指令集架構之一更詳細的方塊圖;第16圖是根據本發明揭露的實施例的一處理器的一指令集架構的一執行管線之一方塊圖;第17圖是利用根據本發明揭露的實施例的一處理器的一電子裝置之一方塊圖;第18圖是根據本發明揭露的實施例而用於執行向量位元欄壓縮及擴展的指令的一系統之一方塊圖;第19圖是根據本發明揭露的實施例而用於執行向量位元欄壓縮的一指令的一系統之操作; 第20圖是根據本發明揭露的實施例而用於執行向量位元欄擴展的一指令的一系統之操作;以及第21圖是根據本發明的一實施例而執行用於向量位元欄壓縮及擴展的一指令的一方法之一流程圖。
下文的實施方式說明了一種用於處理設備上的向量位元欄壓縮及擴展之指令及處理邏輯。在下文的說明中,述及了諸如處理邏輯、處理器類型、微架構情況、事件、及啟用機制等的許多特定細節,以便提供對本發明揭露的實施例之更徹底了解。然而,熟悉此項技術者將可了解:可在沒有這些特定細節的情形下實施該等實施例。此外,並不詳細示出某些習知的結構及電路等的細節,以避免非必要地模糊了本發明揭露的實施例。
雖然將參照一處理器而說明下文中之實施例,但是其他的實施例可適用於其他類型的積體電路及邏輯裝置。可將本發明揭露的實施例之類似技術及教導應用於可受益於較高的管線通量(pipeline throughput)及較佳的效能之其他類型的電路或半導體裝置。本發明揭露的實施例之教導可適用於執行資料調處之任何處理器或機器。然而,該等實施例不限於執行512位元、256位元、128位元、64位元、32位元、或16位元資料操作之處理器或機器,且可應用於可執行資料調處或管理之任何處理器或機器。此外,下文中之說明提供了一些例子,且各附圖示出了用於 例示之各種例子。然而,不應以限制之方式詮釋這些例子,這是因為這些例子之用意只是提供本發明揭露的實施例之例子,而不是提供本發明揭露的實施例的所有可能實施方式之一詳盡無遺的清單。
雖然下文的例子將在執行單元及邏輯電路之情境中說明指令處理及分發,但是可經由被儲存在機器可讀取的有形媒體之資料或指令而實現本發明揭露的其他實施例,而當該機器可讀取的有形媒體被一機器執行時,將使該機器執行與本發明揭露的至少一實施例一致之功能。在一實施例中,以機器可執行的指令實施與本發明揭露的實施例相關聯之功能。該等指令可被用於使被以該等指令編程之一般用途或特殊用途處理器執行本發明揭露的該等步驟。可以可包括機器或電腦可讀取的媒體之電腦程式產品或軟體之形式提供本發明揭露的實施例,而該機器或電腦可讀取的媒體中有可被用於將電腦(或其他電子裝置)編程成執行根據本發明揭露的實施例的一或多個操作之被儲存的指令。此外,可以含有用於執行本發明揭露的實施例的步驟之固定功能邏輯之特定硬體組件或以被編程的電腦組件及固定功能硬體組件之任何組合執行該等步驟。
被用於將邏輯編程成執行本發明揭露的實施例之指令可被儲存在系統中之諸如動態隨機存取記憶體(DRAM)、快取記憶體、快閃記憶體、或其他儲存器等的記憶體中。此外,可經由網路或經由其他電腦可讀取的媒體而分發該等指令。因此,機器可讀取的媒體可包括用 於儲存或傳輸機器(例如,電腦)可讀取的形式的資訊之任何機構,但不限於軟碟、光碟、唯讀光碟(Compact Disc,Read-Only Memory;簡稱CD-ROM)、磁光碟、唯讀記憶體(Read Only Memory;簡稱ROM)、隨機存取記憶體(Random Access Memory;簡稱RAM)、可抹除可程式唯讀記憶體(Erasable Programmable Read-Only Memory;簡稱EPROM)、電氣可抹除可程式唯讀記憶體(Electrically Erasable Programmable Read-Only Memory;簡稱EEPROM)、磁卡或光學卡、快閃記憶體、或被用於經由網際網路且經由電信號、光信號、聲音信號、或其他形式的傳播信號(例如,載波、紅外線信號、及數位信號等的信號)而傳輸資訊之機器可讀取的有形媒體。因此,電腦可讀取的媒體包括適於儲存或傳輸機器(例如,電腦)可讀取的形式的電子指令或資訊之任何類型的機器可讀取的有形媒體。
自創建至模擬至製造,一設計可經歷各種階段。用於呈現一設計之資料可以一些方式呈現該設計。首先,可能適用於模擬,可使用硬體描述語言(hardware description language)或另一功能描述語言呈現硬體。此外,可在設計過程的某些階段中製作具有邏輯及/或電晶體閘的一電路層級模型。此外,在某些階段中之設計可到達呈現硬體模型中之各種裝置的實體擺置(placement)的資料之程度。在其中使用某些半導體製造技術之情形中,對於用來製造積體電路的遮罩而言,用於呈現該硬體模型的資料可 以是用於指定不同遮罩層上的各種特徵的存在或不存在之資料。在設計的任何呈現方式中,可將資料儲存在任何形式之機器可讀取的媒體中。記憶體或諸如磁碟或光碟等的磁性或光學儲存器可以是用於儲存經由為了傳輸而被調變的或被以其他方式產生的光波或電波而傳輸的資訊之機器可讀取的媒體。當傳輸用於指示或載有碼或設計之電載波到執行電信號的複製、緩衝、或重新傳輸之程度時,即製作了一份新的拷貝。因此,通訊供應商或網路供應商可在機器可讀取的有形媒體上至少暫時地儲存實施本發明揭露的實施例的技術之物品,諸如被編碼到載波中之資訊。
在現代的處理器中,可將一些不同的執行單元用於處理及執行各種碼及指令。某些指令可較迅速地完成,而其他的指令可能要耗用一些時脈週期才能完成。指令的執行率越快,則處理器的整體效能越佳。因此,儘量快速地執行儘量多的指令將是有利的。然而,諸如浮點指令、載入/儲存操作、及資料移動等的某些指令有較大的複雜度,且需要較多執行時間及處理器資源。
由於越來越多的電腦系統被用於網際網路、文字、及多媒體應用中,所以已隨著時間的經過而加入了額外的處理器支援。在一實施例中,可使一指令集與包括資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷及異常處置、以及外部輸入及輸出(I/O)之一或多個電腦架構相關聯。
在一實施例中,可以可包括被用於實施一或多個指令 集的處理器邏輯及電路之一或多個微架構實施指令集架構(Instruction Set Architecture;簡稱ISA)。因此,具有不同的微架構之處理器可共用一共同指令集的至少一部分。例如,Intel® Pentium 4處理器、Intel® CoreTM處理器、以及自Advanced Micro Devices,Inc.(位於Sunnyvale CA)供應之處理器實施幾乎相同版本的x86指令集(且具有在較新版本中被加入的某些延伸),但是有不同的內部設計。同樣地,諸如ARM Holdings,Ltd.、MIPS、或其被授權人或採用者等的其他處理器開發公司設計之處理器可共用一共同指令集的至少一部分,但是可能包含不同的處理器設計。例如,可使用新的或習知的技術在不同的微架構中以不同的方式實施ISA之相同的暫存器架構,該等新的或習知的技術包括專用的實體暫存器、使用一暫存器重命名(register renaming)機制(例如,使用暫存器別名表(Register Alias Table;簡稱RAT))之一或多個動態分配的實體暫存器、一重排序緩衝器(Reorder Buffer;簡稱ROB)、以及一指令引退暫存器檔案(retirement register file)。在一實施例中,暫存器可包括一或多個暫存器、暫存器架構、暫存器檔案、或可被或可不被軟體程式設計師定址的其他暫存器集(register set)。
一指令可包括一或多個指令格式(instruction format)。在一實施例中,一指令格式可指示尤其用於指定將被執行的操作以及將被執行該操作的運算元之各欄 (位元的數目、位元的位置等的欄)。在一進一步的實施例中,可以指令模板(instruction template)(或子格式)進一步界定某些指令格式。例如,特定指令格式的指令模板可被界定成具有該指令格式的欄之不同的子集,且/或可被界定成具有被以不同的方式解譯之特定欄。在一實施例中,可使用一指令格式表示一指令(且如果被界定,則可以該指令格式的指令模板中之特定指令模板來表示一指令),且該指令指定或指示運算以及該運算將操作之運算元。
科學、金融、自動向量化(auto-vectorized)一般用途、辨識、探掘及合成(Recognition,Mining,and Synthesis;簡稱RMS)、以及視覺及多媒體應用(例如,二維/三維(2D/3D)圖形、影像處理、視訊壓縮/解壓縮、語音辨識演算法、及音訊調處)可能需要對大量的資料項執行相同的操作。在一實施例中,單一指令多重資料(Single Instruction Multiple Data;簡稱SIMD)意指一種使處理器對多個資料元素執行一操作之指令類型。SIMD技術可被用於可將一暫存器中之位元在邏輯上分割成一些固定大小的或可變大小的資料元素(data element)之處理器,其中每一資料元素表示一各別的值。例如,在一實施例中,64位元暫存器中之位元可被組織為包含四個各別的16位元資料元素之一來源運算元,其中每一資料元素表示一各別的16位元值。此種資料類型可被稱為"緊縮"資料類型("packed" data type)或" 向量"資料類型,且該資料類型之運算元可被稱為緊縮資料運算元或向量運算元。在一實施例中,緊縮資料項或向量可以是被儲存在單一暫存器內之一序列的緊縮資料元素,且緊縮資料運算元或向量運算元可以是SIMD指令(或"緊縮資料指令"或"向量指令")之來源或目的地運算元。在一實施例中,一SIMD指令指定對兩個來源向量運算元執行的單一向量運算,該單一向量運算產生具有相同或不同大小以及相同或不同數目的資料元素且按照相同或不同的資料元素順序之一目的地向量運算元(也被稱為結果向量運算元)。
諸如具有其中包括x86、MMXTM、資料流SIMD延伸(Streaming SIMD Extensions;簡稱SSE)、SSE2、SSE3、SSE4.1、及SSE4.2指令的指令集之Intel® CoreTM處理器、諸如具有其中包括向量浮點(Vector Floating Point;簡稱VFP)及/或NEON指令的指令集之ARM Cortex®系列之處理器等的ARM處理器、以及諸如中國科學院計算技術研究所(Institute of Computing Technology(ICT)of the Chinese Academy of Sciences)開發的Loongson系列之處理器等的MIPS處理器採用之SIMD技術等的SIMD技術能夠使應用效能有顯著的改善(CoreTM及MMX TM是Intel Corporation(位於Santa Clara,California)的註冊商標或商標)。
在一實施例中,目的地及來源暫存器/資料可以是用於表示對應的資料或運算的來源及目的地之通用術語。在 某些實施例中,可以暫存器、記憶體、或有所述者之外的其他名稱或功能之其他儲存區實施該等暫存器。例如,在一實施例中,"DEST1"可以是一暫時性儲存暫存器或其他儲存區,而"SRC1"及"SRC2"可以是第一及第二來源儲存暫存器或其他儲存區,且依此類推。在其他實施例中,兩個或更多個SRC及DEST儲存區可對應於相同的儲存區(例如,一SIMD暫存器)內之不同的資料儲存單元。在一實施例中,該等來源暫存器中之一來源暫存器亦可藉由諸如將對第一及第二來源資料執行的一運算的結果寫回到該等兩個來源暫存器中被用來作為一目的地暫存器的一來源暫存器,而充當一目的地暫存器。
第1A圖是根據本發明揭露的實施例而以可包含用於執行指令的一些執行單元的一處理器形成之一例示電腦系統之一方塊圖。根據本揭示,諸如在本發明所述的實施例中,系統100可包含諸如採用包括用於執行處理資料的演算法的邏輯的執行單元之一處理器102等的一組件。系統100可代表基於Intel Corporation(位於Santa Clara,California)供應的Pentium® III、Pentium® 4、XEONTM、Itanium®、XScaleTM、及/或Strong ARMTM微處理器之處理系統,但是亦可使用其他的系統(包括具有其他微處理器的個人電腦(PC)、工程工作站、以及機上盒等的系統)。在一實施例中,樣本系統100可執行自Microsoft Corporation(位於Redmond,Washington)供應之一版本的WINDOWSTM作業系統,雖然亦可使用其他的 作業系統(諸如UNIX及Linux)、嵌入式軟體、及/或圖形使用者介面。因此,本發明揭露的實施例不限於硬體電路及軟體的任何特定組合。
各實施例不限於電腦系統。本發明揭露的實施例可被用於諸如手持裝置以及嵌入式應用的其他裝置。手持裝置的某些例子包括細胞式電話、網際網路協定裝置、數位相機、個人數位助理(Personal Digital Assistant;簡稱PDA)、以及手持個人電腦(PC)。嵌入式應用可包括微控制器、數位信號處理器(Digital Signal Processor;簡稱DSP)、系統單晶片、網路電腦(NetPC)、機上盒、網路集線器、廣域網路(Wide Area Network;簡稱WAN)交換器、或可執行根據至少一實施例的一或多個指令之任何其他系統。
電腦系統100可包含一處理器102,該處理器102可包含用於執行一演算法而執行根據本發明揭露的一實施例的至少一指令之一或多個執行單元108。可在單一處理器的桌上型電腦或伺服器系統之情境中說明一實施例,但是其他實施例可被包含在多處理器系統中。系統100可以是一"中心"系統架構的一例子。系統100可包含用於處理資料信號之一處理器102。處理器102可包括複雜指令集電腦(Complex Instruction Set Computer;簡稱CISC)微處理器、精簡指令集計算(Reduced Instruction Set Computing;簡稱RISC)微處理器、極長指令字(Very Long Instruction Word;簡稱VLIW)微處理器、實施一 些指令集的一組合之處理器、或諸如數位信號處理器等的任何其他處理器裝置。在一實施例中,處理器102可被耦合到一處理器匯流排110,該處理器匯流排110可傳輸資料信號於處理器102與系統100中之其他組件間。系統100的該等元件可執行熟悉此項技術者習知的常見功能。
在一實施例中,處理器102可包含一個一階(L1)內部快取記憶體104。處理器102可根據架構而具有單一內部快取記憶體或多階的內部快取記憶體。在另一實施例中,該快取記憶體可被設置在處理器102之外。其他實施例亦可根據特定實施方式及需求而包含內部及外部快取記憶體的組合。暫存器檔案106可將不同類型的資料儲存在包括整數暫存器、浮點暫存器、狀態暫存器、及指令指標暫存器之各種暫存器中。
包含用於執行整數及浮點運算的邏輯之執行單元108也位於處理器102中。處理器102亦可包含用於儲存某些巨集指令(macroinstruction)的微碼之一微碼(ucode)唯讀記憶體(ROM)。在一實施例中,執行單元108可包含用於處理一緊縮指令集109之邏輯。藉由將緊縮指令集109包含在一般用途處理器102的指令集中,且設置用於執行該等指令之相關聯的電路,即可在一般用途處理器102中使用緊縮資料執行許多的多媒體應用使用之運算。因此,可藉由將一處理器的資料匯流排之全寬度用於對緊縮資料執行運算,而加速且更有效率地執行許多的多媒體應用。此可以消除在該處理器的資料匯流排上傳輸較小的 資料元素之需求而以每次一個資料元素之方式執行一或多次運算。
執行單元108之實施例亦可被用於微控制器、嵌入式處理器、圖形裝置、DSP、以及其他類型的邏輯電路中。系統100可包含一記憶體120。記憶體120可被實施為動態隨機存取記憶體(Dynamic Random Access Memory;簡稱DRAM)裝置、靜態隨機存取記憶體(Static Random Access Memory;簡稱SRAM)裝置、快閃記憶體裝置、或其他記憶體裝置。記憶體120可儲存由資料信號所代表的可被處理器102執行之指令及/或資料。
一系統邏輯晶片116可被耦合到處理器匯流排110及記憶體120。系統邏輯晶片116可包括一記憶體控制器集線器(Memory Controller Hub;簡稱MCH)。處理器102可經由處理器匯流排110而與MCH 116通訊。MCH 116可將一高頻寬的記憶體路徑118提供給被用於指令及資料儲存以及圖形命令、資料、及紋理儲存之記憶體120。MCH 116可將資料訊號導向於處理器102、記憶體120、與系統100中之其他組件之間,及用以橋接資料訊號於處理器匯流排110、記憶體120、與系統I/O 122之間。在某些實施例中,系統邏輯晶片116可提供用於耦合到一圖形控制器112之一圖形埠。MCH 116可經由記憶體介面118而被耦合到記憶體120。圖形卡112可經由一加速圖形埠(Accelerated Graphics Port;簡稱AGP)互連114而被耦合到MCH 116。
系統100可使用一專屬中心介面匯流排122以將MCH 116耦合到輸入/輸出控制器集線器(I/O Controller Hub;簡稱ICH)130。在一實施例中,ICH 130可提供經由一區域I/O匯流排至某些I/O裝置之直接連接。該區域I/O匯流排可包括用於將週邊組件連接到記憶體120、晶片組、及處理器102之一高速I/O匯流排。週邊組件的例子可包括音訊控制器、韌體集線器(快閃BIOS)128、無線收發器126、資料儲存裝置124、包含使用者輸入及鍵盤介面之傳統I/O控制器、諸如通用序列匯流排(Universal Serial Bus;簡稱USB)等的一序列擴充埠、以及一網路控制器134。資料儲存裝置124可包含一硬碟機、一軟碟機、一CD-ROM裝置、一快閃記憶體裝置、或其他大量儲存裝置。
針對一系統的另一實施例中,可配合系統單晶片而使用根據一實施例的指令。系統單晶片的一實施例包含一處理器及一記憶體。一個此類系統之該記憶體可包括一快閃記憶體。該快閃記憶體可被設置在與該處理器及其他系統組件相同的晶粒中。此外,諸如一記憶體控制器或圖形控制器等的其他邏輯塊亦可被設置在系統單晶片上。
第1B圖示出用於實施本發明揭露的實施例的原理之一資料處理系統140。熟悉此項技術者將可易於了解:在不脫離本發明揭露的實施例之範圍下,本發明所述的實施例可配合替代的處理系統而操作。
電腦系統140包含用於執行根據一實施例的至少一指 令之一處理核心159。在一實施例中,處理核心159代表其中包括但不限於CISC、RISC、或VLIW類型架構之任何類型的架構之一處理單元。處理核心159亦可適於以一或多種製程技術進行之製造,且藉由在充分的細節下在一機器可讀取的媒體上呈現之方式,可適於促進該製造。
處理核心159包含一執行單元142、一組暫存器檔案145、以及一解碼器144。處理核心159亦可包含可能是了解本發明揭露的實施例所不必要的額外的電路(圖中未示出)。執行單元142可執行由處理核心159接收的指令。除了執行典型的處理器指令之外,執行單元142可執行緊縮指令集143中之指令,以便對緊縮資料格式執行運算。緊縮指令集143可包含用於執行本發明揭露的實施例之指令、以及其他的緊縮指令。執行單元142可被一內部匯流排耦合到暫存器檔案145。暫存器檔案145可代表處理核心159上用於儲存包括資料的資訊之一儲存區。如前文所述,我們應可了解:該儲存區可儲存可能不是關鍵的緊縮資料。執行單元142可被耦合到解碼器144。解碼器144可將由處理核心159接收的指令解碼為控制信號及/或微碼入口點(entry point)。執行單元142回應這些控制信號及/或微碼入口點,而執行適當的運算。在一實施例中,該解碼器可解譯該指令的運算碼(opcode),因而將指示應對該指令內指示之對應的資料執行何種運算。
處理核心159可與匯流排141耦合以用於與各種其他系統裝置通訊,該等其他系統裝置可包括但不限於諸如同 步動態隨機存取記憶體(Synchronous Dynamic Random Access Memory;簡稱SDRAM)控制146、靜態隨機存取記憶體(SRAM)控制147、爆發模式快閃記憶體介面148、個人電腦記憶卡國際協會(Personal Computer Memory Card International Association;簡稱PCMCIA)/小型快閃記憶體(Compact Flash;簡稱CF)卡控制149、液晶顯示器(Liquid Crystal Display;簡稱LCD)控制150、直接記憶體存取(Direct Memory Access;簡稱DMA)控制器151、以及替代匯流排主介面152。在一實施例中,資料處理系統140亦可包含用於經由一I/O匯流排153而與各種I/O裝置通訊之一I/O橋接器154。此類I/O裝置可包括但不限於諸如通用非同步收發器(Universal Asynchronous Receiver/Transmitter;簡稱UART)155、通用序列匯流排(USB)156、藍芽無線UART 157、以及I/O擴充介面158。
資料處理系統140的一實施例提供了行動、網路及/或無線通訊、以及可執行其中包括文字串比較操作的SIMD操作之一處理核心159。可以包括下列各項之各種音訊、視訊、成像、及通訊演算法將處理核心159編程:諸如沃爾什哈達馬德轉換(Walsh-Hadamard transform)、快速傅立葉轉換(Fast Fourier Transform;簡稱FFT)、離散餘弦轉換(Discrete Cosine Transform;簡稱DCT)、及其各別的逆轉換等的離散轉換;諸如色空間(color space)轉換、視訊編碼移動估計、或視訊解碼移 動補償等的壓縮/解壓縮技術;以及諸如脈碼調變(Pulse Coded Modulation;簡稱PCM)等的調變/解調(Modulation/Demodulation;簡稱MODEM)功能。
第1C圖示出用於執行SIMD文字串比較操作的一資料處理系統之其他實施例。在一實施例中,資料處理系統160可包含一主處理器166、一SIMD共處理器161、一快取記憶體167、以及一輸入/輸出系統168。輸入/輸出系統168在可供選擇採用之情形下可被耦合到一無線介面169。SIMD共處理器161可執行其中包括根據一實施例的指令之操作。在一實施例中,處理核心170可適於以一或多種製程技術進行之製造,且藉由在充分的細節下在一機器可讀取的媒體上呈現之方式,可適於促進其中包括處理核心170之資料處理系統160的所有或一部分之製造。
在一實施例中,SIMD共處理器161包含一執行單元162以及一組暫存器檔案164。主處理器166的一實施例包含用於辨識其中包括根據一實施例的指令的指令集163的指令以供被執行單元162執行之一解碼器165。在其他實施例中,SIMD共處理器161也包含用於將指令集163的指令解碼的解碼器165之至少一部分。處理核心170亦可包含可能是了解本發明揭露的實施例所不必要的額外的電路(圖中未示出)。
於操作時,主處理器166執行用於控制其中包括與快取記憶體167及輸入/輸出系統168間之交互作用的一般類型的資料處理操作之一串資料處理指令。SIMD共處理 器指令可被嵌入該串資料處理指令內。主處理器166之解碼器165將這些SIMD共處理器指令辨識為應由一附加的SIMD共處理器161執行之類型的指令。因此,主處理器166在共處理器匯流排171上發出這些SIMD共處理器指令(或代表SIMD共處理器指令之控制信號)。任何被附加的SIMD共處理器可自共處理器匯流排171接收這些指令。在該例子中,SIMD共處理器161可接受且執行以其為目標之任何被接收的SIMD共處理器指令。
可經由無線介面169接收被該等SIMD共處理器指令處理的資料。在一例子中,可接收形式為數位信號之語音通訊,而該等SIMD共處理器指令可處理該數位信號,以便再生代表語音通訊之數位音訊樣本。在另一例子中,可接收形式為數位位元流之壓縮音訊及/或視訊,而該等SIMD共處理器指令可處理該數位位元流,以便再生數位音訊樣本及/或動態視訊框。在處理核心170的一實施例中,主處理器166及一SIMD共處理器161可被整合到一單一處理核心170中,該單一處理核心170包含一執行單元162、一組暫存器檔案164、以及用於辨識其中包括根據一實施例的指令的指令集163的指令之一解碼器165。
第2圖是可包含用於執行根據本發明揭露的實施例的指令的邏輯電路之一處理器200的微架構之一方塊圖。在某些實施例中,可將根據一實施例的指令實施成對具有位元組、字、雙字(doubleword)、四倍字(quadword)等的大小以及諸如單精度(single precision)及雙倍精度 (double precision)整數及浮點資料類型等的資料類型之資料元素執行運算。在一實施例中,循序前端201可實施處理器200之一部分,該部分可提取將要被執行的指令,及準備該指令稍後將在處理器管線中被使用。前端201可包含數個單元。在一實施例中,指令預取器226自記憶體提取指令,且將該等指令饋送到一指令解碼器228,該指令解碼器228然後將該等指令解碼或解譯。例如,在一實施例中,該解碼器將被接收的指令解碼為機器可執行之被稱為"微指令"或"微運算"(也被稱為"micro op"或"uops")的一或多個運算。在其他實施例中,該解碼器將該指令剖析為可被該微架構用於執行根據一實施例的運算之一運算碼及對應的資料及控制欄。在一實施例中,追蹤快取記憶體230可將被解碼的微運算組合為微運算佇列234中之程式有序序列(ordered sequence)或追蹤,以供執行。當追蹤快取記憶體230遭遇複雜的指令時,微碼ROM 232提供完成該運算所需的微運算。
某些指令可被轉換為單一微運算,而其他的指令需要數個微運算才能完成完全的運算。在一實施例中,如果需要四個以上的微運算才能完成一指令,則解碼器228可存取微碼ROM 232,以便執行該指令。在一實施例中,可將一指令解碼為小數目的微運算,以便在指令解碼器228上處理。在另一實施例中,如果需要一些微運算才能完成運算,則可將指令儲存在微碼ROM 232內。追蹤快取記憶體230意指一種決定自微碼ROM 232讀取用於完成根據 一實施例的一或多個指令的微碼序列的正確微指令指標之入口點可程式邏輯陣列(Programmable Logic Array;簡稱PLA)。在微碼ROM 232完成了一指令的各微運算之定序(sequencing)之後,該機器的前端201可恢復自追蹤快取記憶體230提取微運算。
亂序執行引擎203可準備指令以供執行。該亂序執行邏輯有一些緩衝器,用以在指令流沿著管線行進且被排程以供執行時,將該指令流理順且重排序,以便將效能最佳化。分配器邏輯分配每一微運算所需的該機器之緩衝器及資源,以便執行。暫存器重命名邏輯將各邏輯暫存器重命名到一暫存器檔案中之各條目上。該分配器也將一條目分配給下列各指令排程器之前的兩個微運算佇列(亦即,一微運算佇列用於記憶體運算、以及一微運算佇列用於非記憶體運算)之中的一微運算佇列中之每一微運算,該指令排程器為:記憶體排程器、快速排程器202、慢速/一般浮點排程器204、以及簡單浮點排程器206。微運算排程器202、204、206根據一微運算的相依輸入暫存器運算元來源之備妥狀態以及該微運算完成其運算所需的執行資源之可用性,而決定該微運算何時已準備好執行。一實施例的快速排程器202可在主時脈週期的每一半時脈週期上排程,而其他的排程器可只在每一主處理器時脈週期排程一次。該等排程器仲裁用於將各微運算排程以供執行之分派埠(dispatch port)。
排程器202、204、206、以及執行塊211中之執行單 元212、214、216、218、220、222、224之間可安排暫存器檔案208、210。每一暫存器檔案208、210分別執行整數及浮點運算。每一暫存器檔案208、210可包含一旁路網路,該旁路網路可將尚未被寫到該暫存器檔案的剛剛完成之結果旁路到或轉送到新的相依微運算。整數暫存器檔案208及浮點暫存器檔案210可相互通訊資料。在一實施例中,整數暫存器檔案208可被分為兩個獨立的暫存器檔案,其中一暫存器檔案被用於資料的低階三十二位元,且一第二暫存器檔案被用於資料的高階三十二位元。浮點暫存器檔案210可包含128位元寬度的條目,這是因為浮點指令通常有寬度為自64至128位元的運算元。
執行塊211可包含執行單元212、214、216、218、220、222、224。執行單元212、214、216、218、220、222、224可執行該等指令。執行塊211可包含用於儲存該等微指令需要執行的整數及浮點資料運算元值之暫存器檔案208、210。在一實施例中,處理器200可包含一些執行單元:位址產生單元(Address Generation Unit;簡稱AGU)212與AGU 214、快速算術邏輯單元(ALU)216、快速ALU 218、慢速ALU 220、浮點ALU 222、浮點移動單元224。在另一實施例中,浮點執行塊222、224可執行浮點、MMX、SIMD、及SSE、或其他運算。在又一實施例中,浮點ALU 222可包含一個64位元乘以64位元的浮點除法器,用以執行除法、平方根、以及餘數微運算。在各實施例中,可以浮點硬體處理涉及浮點值之指 令。在一實施例中,可將ALU運算傳遞給高速ALU執行單元216、218。高速ALU 216、218可在半個時脈週期之有效潛時下執行快速運算。在一實施例中,最複雜整數運算進入慢速ALU 220,這是因為慢速ALU 220可包含用於諸如乘式、移位、旗標邏輯、及分支處理等的長潛時類型的運算之整數執行硬體。AGU 212、214可執行記憶體載入/儲存操作。在一實施例中,整數ALU 216、218、220可對64位元的資料運算元執行整數運算。在其他實施例中,ALU 216、218、220可被實施成支援其中包括16、32、128、256等的各種資料位元大小。同樣地,浮點單元222、224可被實施成支援具有各種寬度的位元之一範圍的運算元。在一實施例中,浮點單元222、224可連同SIMD及多媒體指令而對128位元寬度的緊縮資料運算元執行運算。
在一實施例中,微運算排程器202、204、206在父載入完成執行之前,先分派相依的運算。因為可在處理器200中以推測方式排程且執行各微運算,所以處理器200亦可包含用於處理記憶體未命中之邏輯。如果一資料載入未命中資料快取記憶體,則管線中正在執行的相依運算可能使該排程器有暫時錯誤的資料。一重新執行機制追蹤且重新執行使用了錯誤資料的指令。只有相依的運算可能需要被重新執行,且可容許獨立的運算完成。處理器的一實施例之排程器及重新執行機制亦可被設計成擷取用於文字串比較操作之指令序列。
術語"暫存器"可意指可被用來作為識別運算元的指令的一部分之機載處理器(on-board processor)儲存位置。換言之,暫存器可以是可在處理器之外使用的(自程式設計師的觀點而論)那些儲存位置。然而,在某些實施例中,暫存器可能不限於特定類型的電路。然而,暫存器可儲存資料,提供資料,且執行本發明所述的該等功能。可使用諸如專用實體暫存器、使用暫存器重命名之被動態分配的實體暫存器、專用及被動態分配的實體暫存器之組合等的任何數目之不同的技術而以處理器內之電路實施本發明所述的該等暫存器。在一實施例中,整數暫存器儲存32位元的整數資料。一實施例之一暫存器檔案也包含用於緊縮資料的八個多媒體SIMD暫存器。為了便於下文中之討論,該等暫存器可被理解為被設計成諸如Intel Corporation(位於Santa Clara,California)供應之啟用MMX技術的微處理器中之64位元寬度的MMXTM暫存器(在某些例子中也被稱為"mm"暫存器)等的存放緊縮資料之資料暫存器。具有整數及浮點形式的這些MMX暫存器可配合伴隨SIMD及SSE指令的緊縮資料元素而運算。同樣地,與SSE2、SSE3、SSE4、或之後的版本(一般稱為"SSEx")技術有關的128位元寬度之XMM暫存器可存放此種緊縮資料運算元。在一實施例中,於儲存緊縮資料及整數資料時,該等暫存器不需要區分該等兩種資料類型。在一實施例中,整數及浮點資料可被包含在相同的暫存器檔案或不同的暫存器檔案中。此外,在一實施例中, 浮點及整數資料可被儲存在不同的暫存器或相同的暫存器中。
在下列圖式之例子中,可說明一些資料運算元。第3A圖根據本發明揭露的實施例而示出多媒體暫存器中之各種緊縮資料類型表示法。第3A圖示出用於128位元寬度的運算元之一緊縮位元組310、一緊縮字320、及一緊縮雙字(dword)330之資料類型。該例子之緊縮位元組格式310的長度可以是128位元,且包含十六個緊縮位元組資料元素。例如,可將一位元組定義為八位元的資料。每一位元組資料元素的資訊可被儲存在位元組0之位元7至位元0、位元組1之位元15至位元8、位元組2之位元23至位元16、以及最後的位元組15之位元120至位元127。因此,所有可用的位元可被用於該暫存器中。此種儲存安排增加該處理器的儲存效率。此外,由於有十六個資料元素被存取,所以現在可對十六個資料元素平行地執行一運算。
一般而言,一資料元素可包含連同相同長度的其他資料元素而被儲存在單一暫存器或記憶體位置中的一個別的資料件。在與SSEx技術有關的緊縮資料序列中,被儲存在一XMM暫存器中之資料元素的數目可以是128位元除以一個別資料元素的位元長度。同樣地,在與MMX及SSE技術有關的緊縮資料序列中,被儲存在一MMX暫存器中之資料元素的數目可以是64位元除以一個別資料元素的位元長度。雖然第3A圖所示的資料類型可以是128 位元長度,但是本發明揭露的實施例亦可配合64位元寬度或其他大小的運算元而運算。該例子的緊縮字格式320之長度可以是128位元,且包含八個緊縮字資料元素。每一緊縮字包含十六位元的資訊。第3A圖的緊縮雙字格式緊縮雙字格式330之長度可以是128位元,且包含四個緊縮雙字資料元素。每一緊縮雙字資料元素包含三十二位元的資訊。一緊縮四倍字之長度可以是128位元,且包含兩個緊縮四倍字資料元素。
第3B圖根據本發明揭露的實施例而示出可能的暫存器中資料儲存格式。每一緊縮資料可包含一個以上的獨立資料元素。示出了三種緊縮資料格式:緊縮半倍341、緊縮單倍342、及緊縮雙倍343。緊縮半倍341、緊縮單倍342、及緊縮雙倍343之一實施例包含定點資料元素。在另一實施例中,緊縮半倍341、緊縮單倍342、及緊縮雙倍343中之一或多者可包含浮點資料元素。緊縮半倍341的一實施例可以是128位元的長度,包含八個16位元的資料元素。緊縮單倍342的一實施例可以是128位元的長度,且包含四個32位元的資料元素。緊縮雙倍343的一實施例可以是128位元的長度,且包含兩個64位元的資料元素。我們應可了解:可將此類緊縮資料格式進一步延伸到其他的暫存器長度,例如,延伸到96位元、160位元、192位元、224位元、256位元、或更大的暫存器長度。
第3C圖根據本發明揭露的實施例而示出多媒體暫存 器中之各種帶正負號及不帶正負號緊縮資料類型表示法。不帶正負號緊縮位元組表示法344示出將一不帶正負號緊縮位元組儲存在一SIMD暫存器中。每一位元組資料元素的資訊可被儲存在位元組0之位元7至位元0、位元組1之位元15至位元8、位元組2之位元23至位元16、以及最後的位元組15之位元120至位元127。因此,所有可用的位元可被用於該暫存器中。此種儲存安排可增加該處理器的儲存效率。此外,由於有十六個資料元素被存取,所以現在可對十六個資料元素平行地執行一運算。帶正負號緊縮位元組表示法345示出一帶正負號緊縮位元組的儲存。請注意,每一位元組資料元素的第八位元可以是正負號指示元(sign indicator)。不帶正負號緊縮字表示法346示出如何可將字7至字0儲存在一SIMD暫存器中。帶正負號緊縮字表示法347可類似於不帶正負號緊縮字暫存器中表示法346。請注意,每一字資料元素的第十六位元可以是正負號指示元。不帶正負號緊縮雙字表示法348示出如何儲存雙字資料元素。帶正負號緊縮雙字表示法349可類似於不帶正負號緊縮雙字暫存器中表示法348。請注意,該必要的正負號位元可以是每一雙字資料元素之第三十二位元。
第3D圖示出一運算編碼(運算碼)的一實施例。此外,格式360可包含對應於Intel Corporation(位於Santa Clara,California)在全球資訊網(World Wide Web;簡稱WWW)的網址intel.com/design/litcentr上提供的"IA- 32 Intel Architecture Software Developer's Manual Volume 2:Instruction Set Reference"中所述的一運算碼格式類型之暫存器/記憶體運算元定址模式。在一實施例中,可以欄361及362中之一或多者將一指令編碼。可識別每一指令中多達兩個運算元位置,其中包括多達兩個來源運算元識別符364及365。在一實施例中,目的地運算元識別符366可與來源運算元識別符364相同,而在其他實施例中,這兩者可能是不同的。在另一實施例中,目的地運算元識別符366可與來源運算元識別符365相同,而在其他實施例中,這兩者可能是不同的。在一實施例中,由來源運算元識別符364及365所識別的該等來源運算元中之一來源運算元可被文字串比較操作的結果覆寫,而在其他實施例中,識別符364對應於一來源暫存器單元,且識別符365對應於一目的地暫存器單元。在一實施例中,運算元識別符364及365可識別32位元或64位元之來源及目的地運算元。
第3E圖根據本發明揭露的實施例而示出具有四十個或更多的位元之另一可能的運算編碼(運算碼)格式370。運算碼格式370對應於運算碼格式360,且包含一可供選擇採用的前置位元組378。可以由欄378、371、及372中之一或多者將根據一實施例的一指令編碼。由來源運算元識別符374及375以及由前置位元組378可識別每一指令中多達兩個運算元位置。在一實施例中,前置位元組378可被用於識別32位元或64位元之來源及目的地運 算元。在一實施例中,目的地運算元識別符376可與來源運算元識別符374相同,而在其他實施例中,這兩者可能是不同的。在另一實施例中,目的地運算元識別符376可與來源運算元識別符375相同,而在其他實施例中,這兩者可能是不同的。在一實施例中,一指令對由運算元識別符374及375識別的一或多個運算元運算,且由運算元識別符374及375識別的一或多個運算元可被該指令的結果覆寫,而在其他實施例中,由識別符374及375識別的運算元可被寫到另一暫存器中之另一資料元素。運算碼格式360及370容許被MOD欄363及373以及可供選擇採用的標度-索引-基底(scale-index-base)以及位移位元組部分地指定之暫存器對暫存器(register to register)、記憶體對暫存器(memory to register)、暫存器被記憶體(register by memory)、暫存器被暫存器(register by register)、暫存器被立即值(register by immediate)、暫存器對記憶體(register to memory)定址。
第3F圖根據本發明揭露的實施例而示出又一可能的運算編碼(運算碼)格式。可透過一共處理器資料處理(Coprocessor Data Processing;簡稱CDP)指令執行64位元單一指令多重資料(SIMD)算術運算。運算編碼(運算碼)格式380示出具有CDP運算碼欄382及389的一個此類CDP指令。在另一實施例中,由欄383、384、387、及388之一或多者可將該CDP指令類型的運算編碼。可識別每一指令中多達三個運算元位置,其中包 括多達兩個來源運算元識別符385及390以及一目的地運算元識別符386。該共處理器的一實施例可對8、16、32、及64位元值運算。在一實施例中,可對整數資料元素執行一指令。在某些實施例中,可使用條件欄381有條件地執行一指令。在某些實施例中,可以欄383將來源資料大小編碼。在某些實施例中,可對各SIMD欄執行零(Z)、負(N)、進位(C)、以及溢位(V)偵測。對某些指令而言,可以欄384將飽和的類型編碼。
第4A圖是根據本發明揭露的一實施例的一循序管線及一暫存器重命名階段、亂序發出/執行管線之一方塊圖。第4B圖是將被包含在根據本發明揭露的一實施例的一處理器之一循序架構核心及一暫存器重命名邏輯、亂序發出/執行邏輯之一方塊圖。第4A圖中之實線框示出該循序管線,而虛線框示出該暫存器重命名、亂序發出/執行管線。同樣地,第4B圖中之實線框示出該循序架構邏輯,而虛線框示出該暫存器重命名邏輯及亂序發出/執行邏輯。
在第4A圖中,一處理器管線400可包含一提取階段402、一長度解碼階段404、一解碼階段406、一分配階段408、一重命名階段410、一排程(也被稱為分派或發出)階段412、一暫存器讀取/記憶體讀取階段414、一執行階段416、一寫回/記憶體寫入階段418、一異常處置階段422、以及一提交階段424。
在第4B圖中,箭頭表示兩個或更多個單元間之一耦 合,且箭頭的方向指示那些單元間之資料流的方向。第4B圖示出包含被耦合到一執行引擎單元450的一前端單元430之處理器核心490,而該前端單元430及該執行引擎單元450都被耦合到一記憶體單元470。
核心490可以是一精簡指令集計算(RISC)核心、一複雜指令集計算(Complex Instruction Set Computing;簡稱CISC)核心、一極長指令集(VLIW)核心、或一混合或替代核心類型。在一實施例中,核心490可以是諸如網路或通訊核心、壓縮引擎、或圖形核心等的特殊用途核心。
前端單元430可包含被耦合到一指令快取記憶體單元434之一分支預測單元432。指令快取記憶體單元434可被耦合到一指令轉譯後備緩衝區(Translation Lookaside Buffer;簡稱TLB)436。指令TLB 436可被耦合到一指令提取單元438,該指令提取單元438被耦合到一解碼單元440。解碼單元440可將指令解碼,且產生可自原始指令解碼的、或以其他方式反映原始指令的、或可自原始指令衍生的一或多個微運算、微碼入口點、微指令、其他指令、或其他控制信號,作為一輸出。可使用各種不同的機制實施該解碼器。適當的機制之例子包括(但不限於)查詢表、硬體實施方式、可程式邏輯陣列(PLA)、及微碼唯讀記憶體(ROM)等的機制。在一實施例中,指令快取記憶體單元434可被進一步耦合到記憶體單元470中之一個二階(L2)快取記憶體單元476。解碼單元440可被耦 合到執行引擎單元450中之一重命名/分配器單元452。
執行引擎單元450可包含被耦合到一指令引退單元454及一組的一或多個排程器單元456之重命名/分配器單元452。排程器單元456代表其中包括保留站(reservation station)及中央指令視窗(central instruction window)等的任何數目之不同的排程器。排程器單元456可被耦合到實體暫存器檔案單元458。每一實體暫存器檔案單元458代表一或多個實體暫存器檔案,該等實體暫存器檔案中之不同的實體暫存器檔案儲存諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、或狀態(例如,係為將要被執行的下一指令的位址之指令指標)等的一或多個不同的資料類型。實體暫存器檔案單元458可被指令引退單元454重疊,而示出可實施暫存器重命名及亂序執行的各種方式(例如,使用一或多個重排序緩衝器以及一或多個指令引退暫存器檔案;使用一或多個未來檔案(future file)、一或多個歷史緩衝器(history buffer)、以及一或多個指令引退暫存器檔案;使用一暫存器對照表(register map)以及一集區(pool)的暫存器等的方式)。一般而言,自該處理器外部,或自程式設計師的觀點而論,可看到該等架構暫存器。該等暫存器可能不限於任何已知特定類型的電路。各種不同類型的暫存器都是可適用的,只要其儲存且提供本發明所述的資料即可。適用的暫存器之例子包括但可能不限於專用實體暫存器、使用暫存器重命名之被動態分配的實體暫存器、專用 及被動態分配的實體暫存器之組合等的暫存器。指令引退單元454及實體暫存器檔案單元458可被耦合到執行叢集460。執行叢集460可包含一組的一或多個執行單元462及一組的一或多個記憶體存取單元464。執行單元462可執行各種運算(例如,移位、加法、減法、乘法),且可對各種類型的資料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)執行運算。雖然某些實施例可包含專用於一些特定功能或一些組的功能之數個執行單元,但是其他實施例可以只包含全都被用於執行所有功能的一個執行單元或多個執行單元。排程器單元456、實體暫存器檔案單元458、及執行叢集460被示出為可能是複數個,這是因為某些實施例為某些類型的資料/運算創建個別的管線(例如,分別有其自己的排程器單元、實體暫存器檔案單元、及/或執行叢集之一純量整數管線、一純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、及/或一記憶體存取管線;且在一個別的記憶體存取管線之情形中,可實施只有該管線的執行叢集具有記憶體存取單元464之某些實施例)。我們亦應可了解:當使用個別的管線時,這些管線中之一或多個管線可以是亂序發出/執行,且其餘的管線可以是循序執行。
該組記憶體存取單元464可被耦合到記憶體單元470,該記憶體單元470可包含被耦合到一資料快取記憶體單元474之一資料TLB單元472,且該資料快取記憶體單元474被耦合到一個二階(L2)快取記憶體單元476。 在一例示性實施例中,記憶體存取單元464可包含分別可被耦合到記憶體單元470中之資料TLB單元472的一載入單元、一儲存位址單元、及一儲存資料單元。L2快取記憶體單元476可被耦合到一或多個其他階的快取記憶體,且最終可後被耦合到一主記憶體。
舉例而言,該例示暫存器重命名、亂序發出/執行核心架構可以下列方式實施管線400:(1)指令提取單元438可執行提取及長度解碼階段402及404;(2)解碼單元440可執行解碼階段406;(3)重命名/分配器單元452可執行分配階段408及重命名階段410;(4)排程器單元456可執行排程階段412;(5)實體暫存器檔案單元458及記憶體單元470可執行暫存器讀取/記憶體讀取階段414,執行叢集460可執行該執行階段416;(6)記憶體單元470及實體暫存器檔案單元458可執行寫回/記憶體寫入階段418;(7)各單元可能涉及異常處置階段422的效能;以及(8)指令引退單元454及實體暫存器檔案單元458可執行提交階段424。
核心490可支援一或多個指令集(例如,x86指令集(且具有在較新版本中被加入的某些延伸);MIPS Technologies(位於Sunnyvale,CA)的MIPS指令集;ARM Holdings(位於Sunnyvale,CA)的ARM指令集(且具有諸如NEON等的一些可供選擇採用的延伸))。
我們應可了解:該核心可以各種方式支援多緒執行(multithreading)(執行兩個或更多個平行組的運算或執 行緒)。可以諸如包括時間切割(time sliced)多緒執行、同時多緒執行(當一單一實體核心將一邏輯核心提供給每一執行緒時,該實體核心是同時多緒執行)、或以上兩者的一組合執行多緒執行的支援。例如,此種組合可包括諸如在Intel®超執行緒(Hyperthreading)技術中之時間切割式提取及解碼以及後續的同時多緒執行。
雖然可在亂序執行的情境中說明暫存器重命名,但是我們應可了解:可將暫存器重命名用於循序架構中。雖然該處理器的所示實施例也可包含個別的指令及資料快取記憶體單元434/474以及一共用的L2快取記憶體單元476,但是其他實施例可具有用於指令及資料兩者之諸如一個一階(L1)內部快取記憶體等的一單一內部快取記憶體、或多階的內部快取記憶體。在某些實施例中,該系統可包含一內部快取記憶體以及在核心及/或處理器外部的一外部快取記憶體之一組合。在其他實施例中,所有該等快取記憶體都可以是在核心及/或處理器的外部。
第5A圖是根據本發明揭露的實施例的一處理器500之一方塊圖。在一實施例中,處理器500可包括一多核心處理器。處理器500可包含在通訊上被耦合到一或多個核心502之一系統代理單元510。此外,核心502及系統代理單元510可在通訊上被耦合到一或多個快取記憶體506。可經由一或多個記憶體控制單元552而在通訊上耦合核心502、系統代理單元510、及快取記憶體506。此外,核心502、系統代理單元510、及快取記憶體506可 經由記憶體控制單元552而在通訊上被耦合到一圖形模組560。
處理器500可包含用於將核心502、系統代理單元510、快取記憶體506、及圖形模組560互連之任何適當的機構。在一實施例中,處理器500可包含用於將核心502、系統代理單元510、快取記憶體506、及圖形模組560互連之一環狀互連單元508。在其他實施例中,處理器500可包含用於將這些單元互連之任何數目的習知技術。環狀互連單元508可將記憶體控制單元552用於促進互連。
處理器500可包含一記憶體階層,該記憶體階層包含該等核心內之一或多階的快取記憶體、諸如快取記憶體506等的一或多個共用快取記憶體單元、或被耦合到該組整合式記憶體控制器單元552之外部記憶體(圖中未示出)。快取記憶體506可包含任何適當的快取記憶體。在一實施例中,快取記憶體506可包含諸如二階(L2)、三階(L3)、四階(L4)、或其他階的快取記憶體等的一或多個中階快取記憶體、最後一階快取記憶體(Last Level Cache;簡稱LLC)、及/或以上各項之組合。
在各實施例中,一或多個核心502可執行多緒執行。系統代理單元510可包含用於協調及操作各核心502之組件。系統代理單元510可包含諸如一功率控制單元(Power Control Unit;簡稱PCU)。該PCU可以是或包含用於調節各核心502的電源狀態所需之邏輯及組件。系 統代理單元510可包含用於驅動一或多個外部連接的顯示器或圖形模組560之一顯示引擎512。系統代理單元510可包含用於圖形的通訊匯流排之一介面514。在一實施例中,可以週邊組件高速互連(PCI Express;簡稱PCIe)實施介面514。在一進一步的實施例中,可以PCI Express圖形(PCI Express Graphics;簡稱PEG)實施介面514。系統代理單元510可包含一直接媒體介面(Direct Media Interface;簡稱DMI)516。DMI 516可提供電腦系統的主機板或其他部分上的不同的橋接器間之鏈接。系統代理單元510可包含一PCIe橋接器518,用以提供至一計算系統的其他元件之PCIe鏈接。可使用一記憶體控制器520及一致性邏輯522實施PCIe橋接器518。
可以任何適當的方式實施核心502。各核心502可根據架構及/或指令集而是同質的或異質的。在一實施例中,某些核心502可以是循序執行,而其他的核心502可以是亂序執行。在另一實施例中,兩個或更多個核心502可執行相同的指令集,而其他的核心502可只執行該指令集或一不同的指令集之一子集。
處理器500可包括諸如Intel Corporation(位於Santa Clara,California)供應的CoreTM i3、i5、i7、2 Duo及Quad、XeonTM、ItaniumTM、XScaleTM、或StrongARMTM處理器等的一般用途處理器。可由諸如ARM Holdings,Ltd,MIPS等的另一公司提供處理器500。處理器500可以是諸如網路或通訊處理器、壓縮引擎、圖形處理器、共 處理器、或嵌入式處理器等的特殊用途處理器。可在一或多個晶片上實施處理器500。處理器500可以是使用諸如雙載子互補金屬氧化物半導體(BiCMOS)、互補金屬氧化物半導體(CMOS)、或N型金屬氧化物半導體(NMOS)等的一些製程技術中之任何製程技術之一或多個基材的一部分,且/或可使用諸如雙載子互補金屬氧化物半導體(BiCMOS)、互補金屬氧化物半導體(CMOS)、或N型金屬氧化物半導體(NMOS)等的一些製程技術中之任何製程技術而在該一或多個基材上實施處理器500。
在一實施例中,由該等核心502中之多個核心502可共用該等快取記憶體506中之一特定快取記憶體506。在另一實施例中,該等快取記憶體506中之一特定快取記憶體506可被專用於該等核心502中之一核心502。可由一快取記憶體控制器或其他適當的機構可處理將各快取記憶體506指定給各核心502。可藉由實施一特定快取記憶體506的時間切割,而由兩個或更多個核心502共用該等快取記憶體506中之一特定快取記憶體506。
圖形模組560可實施一整合式圖形處理子系統。在一實施例中,圖形模組560可包含一圖形處理器。此外,圖形模組560可包含一媒體引擎565。媒體引擎565可提供媒體編碼及視訊解碼。
第5B圖是根據本發明揭露的實施例的一核心502的一例示實施方式之一方塊圖。核心502可包含在通訊上被 耦合到一亂序執行引擎580之一前端570。核心502可透過快取記憶體階層503而在通訊上被耦合到處理器500的其他部分。
可諸如完全或部分地以前文所述之前端201等的任何適當的方式實施前端570。在一實施例中,前端570可透過快取記憶體階層503而與處理器500的其他部分通訊。在一進一步的實施例中,前端570可自處理器500的一些部分提取指令,且準備該等指令,以便在該等指令被傳遞到亂序執行引擎580時稍後被用於該處理器管線中。
可諸如完全或部分地以前文所述之亂序執行引擎203等的任何適當的方式實施亂序執行引擎580。亂序執行引擎580可準備自前端570接收的指令以供執行。亂序執行引擎580可包含一分配模組582。在一實施例中,分配模組582可分配處理器500的資源或諸如暫存器或緩衝器等的其他資源,以便執行特定的指令。分配模組582可在諸如記憶體排程器、快速排程器、或浮點排程器等的排程器中進行分配。第5B圖中以資源排程器584代表這些排程器。可完全或部分地以前文中配合第2圖所述之分配邏輯實施分配模組582。資源排程器584可根據特定資源的來源之備妥狀態以及執行一指令所需的執行資源之可用性,而決定該指令何時已準備好執行。可諸如以前文所述之排程器202、204、206實施資源排程器584。資源排程器584可將指令的執行排程到一或多個資源。在一實施例中,這些資源可能在核心502的內部,且可被示出為諸如 資源586。在另一實施例中,這些資源可能在核心502的外部,且可被諸如快取記憶體階層503存取。資源可包括諸如記憶體、快取記憶體、暫存器檔案、或暫存器。可以第5B圖中之資源586代表在核心502的內部之資源。於需要時,可透過諸如快取記憶體階層503而與處理器500的其他部分協調被寫到資源586或自資源586讀取的值。當將資源指定給各指令時,可將該等指令放入一重排序緩衝器588中。當各指令被執行時,重排序緩衝器588可追蹤該等指令,且可根據處理器500之任何適當的準則而將該等指令的執行選擇性地重排序。在一實施例中,重排序緩衝器588可識別可被獨立地執行的一些指令或一系列的指令。可以與其他的此類指令平行之方式執行此類指令或此類系列的指令。可以任何適當數目之個別的執行塊或虛擬處理器執行核心502中之平行執行。在一實施例中,特定核心502內之多個虛擬處理器可存取諸如記憶體、暫存器、及快取記憶體等的共用資源。在其他實施例中,處理器500內之多個處理實體可存取共用資源。
可以任何適當的方式實施快取記憶體階層503。例如,快取記憶體階層503可包含諸如快取記憶體572、574等的一或多個較低階或中階快取記憶體。在一實施例中,快取記憶體階層503可包含在通訊上被耦合到快取記憶體572、574之一LLC 595。在另一實施例中,可在處理器500的所有處理實體可存取的一模組590中實施LLC 595。在一進一步的實施例中,可以Intel,Inc.供應的一非 核心模組(uncore module)實施模組590。模組590可包含核心502的執行所必要的但是可能不在核心502內實施的處理器500之一些部分或子系統。除了LLC 595之外,模組590可包含諸如硬體介面、記憶體一致性協調器、處理器間互連、指令管線、或記憶體控制器。可透過模組590(且更具體而言,可透過LLC 595)進行處理器500可用的對RAM 599的存取。此外,核心502的其他實例可相似地存取模組590。可部分地透過模組590而促進核心502的該等實例之協調。
第6-8圖可示出適於包含處理器500的例示系統,而第9圖可示出可包含一或多個核心502的一例示系統單晶片(System on a Chip;簡稱SoC)。膝上型電腦、桌上型電腦、手持個人電腦(PC)、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、細胞式電話、可攜式媒體播放器、手持裝置、及各種其他電子裝置的此項技術中習知之其他系統設計及實施方式亦可適用。一般而言,能夠包含本發明揭露的處理器及/或其他執行邏輯之極多種的系統或電子裝置都可普遍適用。
第6圖示出根據本發明揭露的實施例的一系統600之一方塊圖。系統600可包含一或多個處理器610、615,該一或多個處理器610、615可被耦合到圖形記憶體控制器集線器(Graphics and Memory Controller Hub;簡稱 GMCH)620。第6圖中以虛線表示額外的處理器615之可供選擇採用的本質。
每一處理器610、615可以是處理器500的某一版本。然而,請注意:整合式圖形邏輯及整合式記憶體控制單元可能不存在於處理器610、615中。第6圖示出GMCH 620可被耦合到一記憶體640,該記憶體640可以是諸如一動態隨機存取記憶體(DRAM)。對於至少一實施例而言,該DRAM可與一非揮發性快取記憶體相關聯。
GMCH 620可以是一晶片組、或一晶片組的一部分。GMCH 620可與處理器610、615通訊,且控制處理器610、615與記憶體640之間的交互作用。GMCH 620亦可充當處理器610、615與系統600的其他元件間之一加速匯流排介面。在一實施例中,GMCH 620經由諸如一前端匯流排(Frontside Bus;簡稱FSB)695等的一多點傳輸匯流排(multi-drop bus)而與處理器610、615通訊。
此外,GMCH 620可被耦合到一顯示器645(例如,一平板顯示器)。在一實施例中,GMCH 620可包含一整合式圖形加速器。GMCH 620可被進一步耦合到一輸入/輸出控制器集線器(Input/Output(I/O)Controller Hub;簡稱ICH)650,該ICH 650可被用於將各種週邊裝置耦合到系統600。外部圖形裝置660可包括一分立式圖形裝置,該分立式圖形裝置連同另一週邊裝置670被耦合到ICH 650。
在其他實施例中,額外的或不同的處理器亦可存在於系統600中。例如,額外的處理器610、615可包括可以是與處理器610相同的額外的處理器、可以是與處理器610異質的或非對稱的額外的處理器、加速器(例如,圖形加速器或數位信號處理(DSP)單元)、現場可程式閘陣列、或任何其他處理器。實體資源610、615在其中包括架構、微架構、熱特性、及功率消耗特性等的優點衡量項目上可能有各種差異。這些差異可有效地表現各處理器610、615間之非對稱性及異質性。對於至少一實施例而言,各處理器610、615可位於相同的晶粒封裝中。
第7圖示出根據本發明揭露的實施例的一第二系統700之一方塊圖。如第7圖所示,多處理器系統700可包括一點對點互連系統,且可包含經由一點對點互連750而被耦合之一第一處理器770及一第二處理器780。如同處理器610、615之一或多者一般,處理器770及780之每一處理器可以是處理器500的某一版本。
雖然第7圖可示出兩個處理器770、780,但是應可了解本發明揭露的範圍不受此限制。在其他實施例中,特定系統中可能存在一或多個額外的處理器。
處理器770及780被示出分別包含整合式記憶體控制器單元772及782。處理器770也可包含點對點(Point-to-Point;簡稱P-P)介面776及778作為其匯流排控制器單元的一部分;同樣地,第二處理器780可包含P-P介面786及788。處理器770、780可使用P-P介面電路778、 788而經由一點對點(P-P)介面750交換資訊。如第7圖所示,整合式記憶體控制器單元772及782可將該等處理器耦合到各別的記憶體,亦即,耦合到在一實施例中可以是在本地被連接到該等各別的處理器的主記憶體的一部分之一記憶體732及一記憶體734。
處理器770、780可分別使用點對點介面電路776、794、786、798而經由個別的P-P介面752、754與一晶片組790交換資訊。在一實施例中,晶片組790亦可經由一高效能圖形介面739而與一高效能圖形電路738交換資訊。
一共用快取記憶體(圖中未示出)可被包含在任一處理器中,或是在兩個處理器之外,但是仍然經由P-P互連而與該等處理器連接,因而使處理器被置於一低功率模式時,可將任一或兩個處理器的本地快取記憶體資訊儲存在該共用快取記憶體中。
晶片組790可經由一介面796而被耦合到一第一匯流排716。在一實施例中,第一匯流排716可以是一週邊組件互連(Peripheral Component Interconnect;簡稱PCI)匯流排、或諸如一週邊組件高速互連(PCI Express)匯流排或另一第三代I/O互連匯流排之一匯流排,但是本發明揭露的範圍不受此限制。
如第7圖所示,各種I/O裝置714以及一匯流排橋接器718可被耦合到第一匯流排716,該匯流排橋接器718將第一匯流排716耦合到一第二匯流排720。在一實施例 中,第二匯流排720可以是一低接腳數(Low Pin Count;簡稱LPC)匯流排。在一實施例中,其中包括諸如一鍵盤及/或滑鼠722、一些通訊裝置727、以及諸如可包含指令/程式碼及資料730之一磁碟機或其他大量儲存裝置等的一儲存單元728之各種裝置可被耦合到第二匯流排720。此外,一音訊I/O 724可被耦合到第二匯流排720。請注意,其他的架構也是可能的。例如,一系統可不實施第7圖所示之點對點架構,而替代地實施多點傳輸匯流排或其他的此類架構。
第8圖示出根據本發明揭露的實施例的一第三系統800之一方塊圖。第7及8圖中之同樣的元件有同樣的參考編號,且第8圖已省略了第7圖的某些觀點,以避免模糊了第8圖的其他觀點。
第8圖示出處理器770、780可分別包含整合式記憶體及I/O控制邏輯(Control Logic;簡稱CL)872及882。對於至少一實施例而言,CL 872、882可包含諸如前文中以與第5及7圖有關之方式述及的整合式記憶體控制器單元。此外,CL 872、882亦可包含I/O控制邏輯。第8圖示出:不只是記憶體732、734可被耦合到CL 872、882,而且一些I/O裝置814亦可被耦合到控制邏輯872、882。傳統I/O裝置815可被耦合到晶片組790。
第9圖示出根據本發明揭露的實施例的SoC 900之一方塊圖。第5圖中之類似元件具有同樣的參考號碼。此外,虛線框可代表更先進的SoC上的一些可供選擇採用的 特徵。一互連單元902可被耦合到:一應用處理器910,該應用處理器910可包含一組的一或多個核心502A-N及一些共用快取記憶體單元506;一系統代理單元510;一匯流排控制器單元916;一整合式記憶體控制器單元914;一組或一或多個媒體處理器920,該等媒體處理器920可包括整合式圖形邏輯邏輯908、用於提供靜物及/或視訊攝影機功能的一影像處理器924、用於提供硬體音訊加速的一音訊處理器926、以及用於提供視訊編碼/解碼加速的一視訊處理器928;一靜態隨機存取記憶體(SRAM)單元930;一直接記憶體存取(DMA)單元932;以及用於耦合到一或多個外部顯示器之一顯示單元940。
第10圖根據本發明揭露的實施例而示出包含一中央處理單元(Central Processing Unit;簡稱CPU)以及可執行至少一指令的一圖形處理單元(Graphics Processing Unit;簡稱GPU)之一處理器。在一實施例中,該CPU可執行用於執行根據至少一實施例的運算之一指令。在另一實施例中,該GPU可執行該指令。在又一實施例中,可透過由該GPU及該CPU執行的各運算之一組合而執行該指令。例如,在一實施例中,可接收且解碼根據一實施例的一指令,以供在該GPU上執行。然而,可由該CPU執行該被解碼的指令內之一或多個運算,且結果被送回到該GPU,以供該指令的最後引退。相反地,在某些實施例中,該CPU可充當主處理器,且該GPU可充當共處理 器。
在某些實施例中,該GPU可執行受益於高度平行的通量處理器之指令,而該CPU可執行受益於因深管線架構而得利的處理器的效能之指令。例如,圖形、科學應用、金融應用、及其他平行的工作負荷可受益於該GPU的效能,且相應地被執行,而諸如作業系統核心或應用程式碼等的更循序之應用可能較適用於該CPU。
在第10圖中,處理器1000包含一CPU 1005、GPU 1010、影像處理器1015、視訊處理器1020、USB控制器1025、UART控制器1030、序列週邊互連(SPI)介面/安全數位輸入輸出(SDIO)控制器1035、顯示裝置1040、記憶體介面控制器1045、行動產業處理器介面(MIPI)控制器1050、快閃記憶體控制器1055、雙倍資料速率(DDR)控制器1060、安全引擎1065、以及I2S/I2C控制器1070。其中包括更多的CPU或GPU以及其他的週邊介面控制器之其他的邏輯及電路可被包含在第10圖之該處理器中。
可以機器可讀取的媒體中儲存之代表性資料實施至少一實施例之一或多個觀點,該等代表性資料代表處理器內之各種邏輯,且該等代表性資料被一機器讀取時,將使該機器製造用於執行本發明述及的該等技術之邏輯。被稱為"智慧財產權核心"("IPcore")之此種表示法可被儲存在一實體之機器可讀取的媒體("tape",磁帶)上,且被供應到各客戶或製造設施,以便載入可實際製造出該邏輯或 處理器之製造機器。例如,諸如ARM Holdings,Ltd.開發的CortexTM系列的處理器之智慧財產權核心以及中國科學院計算技術研究所(Institute of Computing Technology(ICT)of the Chinese Academy of Sciences)開發的Loongson智慧財產權核心可被授權給或銷售給諸如Texas Instruments、Qualcomm、Apple、或Samsung等的各客戶或被授權人,且被實施於這些客戶或被授權人製造的處理器。
第11圖根據本發明揭露的實施例而示出智慧財產權核心的開發之一方塊圖。儲存器1100可包含模擬軟體1120及/或硬體或軟體模型1110。在一實施例中,可經由記憶體1140(例如,硬碟)、有線連接(例如,網際網路)1150、或無線連接1160而將代表智慧財產權核心設計的資料提供給儲存器1100。然後可將由該模擬工具及模型產生的智慧財產權核心資訊傳輸到一製造設施1165,且可由一第三方於該製造設施1165將處理器製造成執行根據至少一實施例的至少一指令。
在某些實施例中,一或多個指令可對應於一第一類型或架構(例如,x86),且可在一不同類型或架構(例如,ARM)的處理器上被轉換或模擬。因而可在包括ARM、x86、MIPS、GPU、或其他處理器類型或架構之任何處理器或處理器類型上執行根據一實施例的指令。
第12圖根據本發明揭露的實施例而示出不同類型的一處理器可模擬的一第一類型的一指令。在第12圖中, 程式1205包含可執行與根據一實施例的一指令相同的或實質上相同的功能之某些指令。然而,程式1205的該等指令可能是與處理器1215不同或不相容的一類型及/或格式,亦即,處理器1215可能無法以原生方式執行程式1205中之該類型的該等指令。然而,在模擬邏輯1210的幫助下,程式1205的該等指令可被轉換為處理器1215可以原生方式執行的指令。在一實施例中,可以硬體實施該模擬邏輯。在另一實施例中,可在包含將程式1205中之該類型的指令轉換為處理器1215可以原生方式執行的類型的指令之軟體之實體之機器可讀取的媒體中實施該模擬邏輯。在其他實施例中,模擬邏輯可以是固定功能或可程式硬體以及被儲存在一實體之機器可讀取的媒體上的一程式之一組合。在一實施例中,該處理器包含該模擬邏輯,而在其他實施例中,該模擬邏輯存在於該處理器之外,且可由一第三方提供該模擬邏輯。在一實施例中,該處理器可藉由執行該處理器中包含的微碼或韌體、或與該處理器相關聯的微碼或韌體,而載入一包含軟體的實體之機器可讀取的媒體中實施之該模擬邏輯。
第13圖根據本發明揭露的實施例而示出使用一軟體指令轉換器將一來源指令集中之二進制指令轉換為一目標指令集中之二進制指令的一對照方塊圖。在該所示之實施例中,該指令轉換器是一軟體指令轉換器,但是可以軟體、韌體、硬體、或以上各項的各種組合實施該指令轉換器。第13圖示出:可使用一x86編譯器1304編譯以一高 階語言1302撰寫的一程式,而產生可由具有至少一x86指令集核心之處理器1316以原生方式執行之x86二進制碼1306。具有至少一x86指令集核心之處理器1316代表可藉由以相容之方式執行或以其他方式處理下列項目以便得到與具有至少一x86指令集核心之Intel處理器實質上相同的結果因而執行與具有至少一x86指令集核心之Intel處理器實質上相同的功能之任何處理器:(1)Intel x86指令集核心的指令集之很大一部分;或(2)目標在具有至少一x86指令集核心之Intel處理器上運行的應用程式或其他軟體之目標碼(object code)版本。該x86編譯器1304代表可操作而產生可以在具有或不具有額外鏈接處理之情形下在具有至少一x86指令集核心之處理器1316上執行的x86二進制碼1306(例如,目標碼)之編譯器。同樣地,第13圖示出:可使用一替代指令集編譯器1308編譯以高階語言1302撰寫的程式,而產生可由不具有至少一x86指令集核心之處理器1314(例如,具有用於執行MIPS Technologies(位於Sunnyvale,CA)的MIPS指令集及/或用於執行ARM Holdings(位於Sunnyvale,CA)的ARM指令集的核心之處理器)以原生方式執行之替代指令集二進制碼1310。指令轉換器1312可被用於將x86二進制碼1306轉換為可由不具有x86指令集核心之處理器1314以原生方式執行之碼。該被轉換的碼可能不與替代指令集二進制碼1310相同;然而,該被轉換的碼將完成一般的操作,且將由來自該替代指令集 之指令構成。因此,指令轉換器1312代表透過仿真、模擬、或任何其他程序而可讓不具有x86指令集處理器或核心之處理器或其他電子裝置可執行x86二進制碼1306的軟體、韌體、硬體、或以上各項的組合。
第14圖是根據本發明揭露的實施例的一處理器之一指令集架構1400之一方塊圖。指令集架構1400可包含任何適當數目或種類的組件。
例如,指令集架構1400可包含諸如一或多個核心1406、1407、以及一圖形處理單元1415等的一些處理實體。核心1406、1407可透過諸如一匯流排或快取記憶體等的任何適當的機構而在通訊上被耦合到指令集架構1400的其餘部分。在一實施例中,核心1406、1407可透過一L2快取記憶體控制1408而在通訊上被耦合,該L2快取記憶體控制1408可包含一匯流排介面單元1409及一L2快取記憶體1411。核心1406、1407以及圖形處理單元1415可透過互連1410在通訊上被相互耦合,且被耦合到指令集架構1400的其餘部分。在一實施例中,圖形處理單元1415可使用一視訊編碼解碼器1420,該視訊編碼解碼器1420界定為了輸出而將特定視頻信號編碼及解碼的方式。
指令集架構1400亦可包含用於介接一電子裝置或系統的其他部分或與一電子裝置或系統的其他部分通訊之任何數目或種類的介面、控制器、或其他機構。這些機構可促進與諸如週邊裝置、通訊裝置、其他處理器、或記憶體 之間的交互作用。在第14圖的該例子中,指令集架構1400可包含一液晶顯示器(LCD)視訊介面1425、一用戶介面模組(Subscriber Interface Module;簡稱SIM)介面1430、一啟動ROM介面1435、一同步動態隨機存取記憶體(SDRAM)控制器1440、一快閃記憶體控制器1445、以及一序列週邊介面(Serial Peripheral Interface;簡稱SPI)主單元1450。LCD視訊介面1425可透過諸如一行動產業處理器介面(Mobile Industry Processor Interface;簡稱MIPI)1490或一高解析度多媒體介面(High Definition Multimedia Interface;簡稱HDMI)1495而將來自諸如圖形處理單元1415的視頻信號之輸出提供給一顯示器。該顯示器可包括諸如一液晶顯示器(LCD)。SIM介面1430可提供進或出一SIM卡或裝置之存取。SDRAM控制器1440可提供進或出諸如一SDRAM晶片或模組1460等的記憶體之存取。快閃記憶體控制器1445可提供進或出諸如快閃記憶體1465或RAM的其他實例等的記憶體之存取。SPI主單元1450可提供進或出諸如藍芽模組1470、高速3G數據機1475、全球衛星定位系統模組1480、或實施諸如802.11等的一通訊標準之無線模組1485等的通訊模組之存取。
第15圖是根據本發明揭露的實施例的一處理器之一指令集架構1500之一更詳細的方塊圖。指令集架構1500可實施指令集架構1400的一或多個觀點。此外,指令集架構1500可示出用於執行一處理器內之指令的一些模組 及機構。
指令架構1500可包含在通訊上被耦合到一或多個執行實體1565之一記憶體系統1540。此外,指令架構1500可包含在通訊上被耦合到執行實體1565及記憶體系統1540之諸如單元1510等的一快取及匯流排介面單元。在一實施例中,由一或多個執行階段可執行將指令載入各執行實體1565中。這些階段可包含諸如指令預取階段1530、雙指令解碼階段1550、暫存器重命名階段1555、發出階段1560、以及寫回階段1570。
在一實施例中,記憶體系統1540可包含一被執行的指令指標1580。被執行的指令指標1580可儲存用於識別一批指令內之最舊的未被分派的指令之一值。該最舊的指令可對應於最低的程式順序(Program Order;簡稱PO)值。一PO可包括一指令的一唯一編號。該指令可以是以多個串列(strand)代表的一執行緒內之單一指令。可將PO用於將各指令排序,以便保證碼的正確執行語意。可以諸如評估指令中被編碼的PO之增量(而不是評估一絕對值)等的機制重建PO。此種被重建的PO可被稱為"RPO"。雖然本發明中可能提及PO,但是可以與RPO互換之方式使用該PO。一串列可包含彼此在資料上相依的一序列之指令。於編譯時,可以二進制翻譯器安排該串列。用於執行一串列之硬體可根據各指令的PO而循序地執行特定串列的該等指令。一執行緒可包含多個串列,因而不同串列之各指令可能彼此相依。特定串列之一PO可 以是該串列中尚未自一發出階段被分派到執行階段的最舊指令之PO。因此,如果給定一多串列之執行緒,且每一串列包含以PO排序的一些指令,則被執行的指令指標1580可儲存該執行緒中以最低的編號示出之最舊的PO。
在另一實施例中,記憶體系統1540可包含一指令引退指標1582。指令引退指標1582可儲存用於識別最後引退的指令的PO之一值。可由諸如指令引退單元454設定指令引退指標1582。如果仍沒有指令被引退,則指令引退指標1582可包含一空值(null value)。
各執行實體1565可包含一處理器可用於執行指令之任何適當數目及種類的機構。在第15圖之例子中,各執行實體1565可包括ALU/乘法單元(MUL)1566、一些ALU 1567、以及浮點單元(Floating Point Unit;簡稱FPU)1568。在一實施例中,這些實體1565可利用特定位址1569內所含的資訊。與各階段1530、1550、1555、1560、1570結合之各執行實體1565可共同地構成一執行單元。
可以任何適當的方式實施單元1510。在一實施例中,單元1510可執行快取記憶體控制。在該實施例中,單元1510可因而包含一快取記憶體1525。在一進一步的實施例中,快取記憶體1525可被實施為具有諸如零、128k(k:千)、256k、512k、1M(M:百萬)、或2M位元組的任何適當大小之記憶體之一L2統一快取記憶體。在另一進一步的實施例中,可以改錯碼(error correcting code)記憶體實施快取記憶體1525。在另一實施例中,單元1510可執行至一處理器或電子裝置的其他部分之匯流排介接。在該實施例中,單元1510可因而包含用於經由一互連、處理器內匯流排、處理器間匯流排、或其他通訊匯流排、埠、或線而通訊之一匯流排介面單元1520。匯流排介面單元1520可提供介接,以便執行諸如用於在各執行實體1565與一系統在指令架構1500之外的各部分之間的資料傳送之記憶體及輸入/輸出位址之產生。
為了進一步促進其功能,匯流排介面單元1520可包含用於產生中斷以及至一處理器或電子裝置的其他部分的其他通訊之一中斷控制及分送單元1511。在一實施例中,匯流排介面單元1520可包含用於處理多個處理核心的快取記憶體存取及一致性之一監聽控制單元1512。在一進一步的實施例中,為了提供此種功能,監聽控制單元1512可包含一用於處理不同的快取記憶體間之資訊交換之一快取記憶體至快取記憶體轉移單元。在另一進一步的實施例中,監聽控制單元1512可包含一或多個監聽過濾器1514,用以監視其他快取記憶體(圖中未示出)的一致性,因而諸如單元1510等的快取記憶體控制器無須直接執行此種監視。單元1510可包含用於同步指令架構1500的行動之任何適當數目的計時器1515。此外,單元1510可包含一AC埠1516。
記憶體系統1540可包含用於儲存指令架構1500的處 理需求的資訊之任何適當數目及種類的機構。在一實施例中,記憶體系統1540可包含用於儲存被寫到記憶體或暫存器或自記憶體或暫存器讀回的資訊之諸如緩衝器等的一載入/儲存單元1546。在另一實施例中,記憶體系統1540可包含一轉譯後備緩衝區(TLB)1545,用以提供對實體與虛擬位址間之位址值的查詢。在又一實施例中,記憶體系統1540可包含一記憶體管理單元(Memory Management Unit;簡稱MMU)1544,用以促進對虛擬記憶體的存取。在又一實施例中,記憶體系統1540可包含一預取器1543,用以在實際需要執行指令之前,先向記憶體要求這些指令,以便減少延遲。
可透過不同的階段執行用於執行指令的指令架構1500之操作。例如,使用單元1510時,指令預取階段1530可透過預取器1543而存取指令。可將被擷取的指令儲存在指令快取記憶體1532中。預取階段1530可啟用一用於快速迴圈模式的一選項1531,其中小得足以放入一特定快取記憶體內的構成一迴圈之一系列的指令被執行。在一實施例中,可在無須自諸如指令快取記憶體1532存取額外的指令之情形下完成該執行。可由諸如分支預測單元1535作出要預取哪些指令的決定,該分支預測單元1535可存取在全域歷史1536中之執行的指示、目標位址1537的指示、或一轉回堆疊1538的內容,以便決定然後將執行一些分支1557中之哪一分支的碼。可預取此類分支作為結果。如將於下文中說明的,可透過其他的操作階 段產生各分支1557。指令預取階段1530可將指令以及與未來的指令有關的任何預測提供給雙指令解碼階段1550。
雙指令解碼階段1550可將一被接收的指令轉譯為可被執行的一些基於微碼的指令。雙指令解碼階段1550可在每一時脈週期中將兩個指令同時解碼。此外,雙指令解碼階段1550可將其結果傳遞給暫存器重命名階段1555。此外,雙指令解碼階段1550可自其解碼以及微碼的最終執行而決定任何作為結果的分支。這些結果可被輸入到各分支1557中。
暫存器重命名階段1555可將虛擬暫存器或其他資源的引用轉換為實體暫存器或資源的引用。暫存器重命名階段1555可將此種映射之指示包含在一暫存器集區1556中。暫存器重命名階段1555可改變該等指令作為被接收的指令,且將結果傳送到發出階段1560。
發出階段1560可將命令發出或分派到各執行實體1565。可以亂序的方式執行此種發出。在一實施例中,多個指令在被執行之前,可被存放在發出階段1560。發出階段1560可包含一指令佇列1561,用以存放此種多個命令。發出階段1560可根據諸如用於執行特定指令的資源之可用性或適合性等的任何可接受之準則而將各指令發出到特定的處理實體1565。在一實施例中,發出階段1560可將指令佇列1561內之該等指令重排序,使得被接收的第一指令可能不是被執行的第一指令。根據指令佇列 1561的該排序,可將額外的分支資訊提供給各分支1557。發出階段1560可將各指令傳遞給各執行實體1565以供執行。
在執行之後,寫回階段1570可將資料寫到各暫存器、佇列、或指令集架構1500的其他結果中,以便傳達特定命令的完成。根據發出階段1560中被安排的各指令之順序,寫回階段1570的操作可啟用將要被執行之額外的指令。追蹤單元1575可對指令集架構1500的效能進行監視或除錯。
第16圖是根據本發明揭露的實施例的一處理器的一指令集架構的一執行管線1600之一方塊圖。執行管線1600可示出諸如第15圖的指令架構1500之操作。
執行管線1600可包含一些步驟或操作之任何適當的組合。在1605中,可作出然後將要被執行的分支之預測。在一實施例中,此種預測可根據各指令的先前執行及其結果。在1610中,對應於被預測的執行分支之各指令可被載入一指令快取記憶體中。在1615中,該指令快取記憶體中之一或多個此種指令可被提取,以供執行。在1620中,可將已被提取的該等指令解碼為微碼或更特定的機器語言。在一實施例中,可將多個指令同時解碼。在1625中,可重新指定該等被解碼的指令內之暫存器或其他資源的引用。例如,對虛擬暫存器的引用可被對於對應的實體暫存器的引用取代。在1630中,該等指令可被分派到各佇列,以供執行。在1640中,該等指令可被執 行。可以任何適當的方式完成此種執行。在1650中,該等指令可被發出到適當的執行實體。執行該指令的方式可取決於用於執行該指令的特定實體。例如,在1655中,一ALU可執行算術功能。該ALU可將一單一時脈週期用於其運算,且可利用兩個移位器。在一實施例中,可採用兩個ALU,且因而在1655中可執行兩個指令。在1660中,可作出作為結果的分支之一決定。可將一程式計數器用於指定將進行分支的目的地。可在單一時脈週期內執行1660。在1665中,可由一或多個FPU執行浮點算術。該浮點運算可能需要諸如二到十個週期等的多個時脈週期來完成。在1670中,可執行乘法及除法運算。可在四個時脈週期中執行此種運算。在1675中,可執行對暫存器或管線1600的其他部分之載入及儲存操作。該等操作可包括載入及儲存位址。可在四個時脈週期中執行此種操作。在1680中,可在被1655-1675之作為結果的操作要求時,執行寫回操作。
第17圖是利用根據本發明揭露的實施例的一處理器1710的一電子裝置1700之一方塊圖。電子裝置1700可包括諸如筆記型電腦、超輕薄筆記本電腦、電腦、塔式伺服器(tower server)、機架式伺服器(rack server)、刀鋒型伺服器(blade server)、膝上型電腦、桌上型電腦、平板電腦、行動裝置、電話、嵌入式電腦、或任何其他適當的電子裝置。
電子裝置1700可包含在通訊上被耦合到任何適當數 目或種類的組件、週邊裝置、模組、或裝置之處理器1710。藉由諸如內部積體電路(I2C)匯流排、系統管理匯流排(System Management Bus;簡稱SMBus)、低接腳數(LPC)匯流排、SPI、高解析度音訊(High Definition Audio;簡稱HDA)匯流排、序列先進技術附接(Serial Advanced Technology Attachment;簡稱SATA)匯流排、USB匯流排(版本1、2、3)、或通用非同步收發器(UART)匯流排等的任何適當種類的匯流排或介面可完成該耦合。
這些組件可包括諸如一顯示器1724、一觸控式螢幕1725、一觸控板1730、一近場通訊(Near Field Communication;簡稱NFC)單元1745、一感測器集線器1740、一熱感測器1746、一高速晶片組(Express Chipset;簡稱EC)1735、可信賴的平台模組(Trusted Platform Module;簡稱TPM)1738、BIOS/韌體/快閃記憶體1722、一數位信號處理器1760、諸如一固態硬碟(Solid State Disk;簡稱SSD)或一硬碟機(Hard Disk Drive;簡稱HDD)等的一磁碟機1720、一無線區域網路(Wireless Local Area Network;簡稱WLAN)單元1750、一藍芽單元1752、一無線廣域網路(Wireless Wide Area Network;簡稱WWAN)單元1756、一全球衛星定位系統(Global Positioning System;簡稱GPS)1755、諸如一USB 3.0相機的一相機1754、或以諸如LPDDR3標準實施之一低功率雙倍資料速率(Low Power Double Data Rate;簡稱LPDDR)記憶體單元1715。可分別以任何適當的方式實施這些組件。
此外,在各實施例中,其他組件可透過前文所述之該等組件而在通訊上被耦合到處理器1710。例如,一加速度計1741、環境光感測器(Ambient Light Sensor;簡稱ALS)1742、羅盤1743、以及陀螺儀1744可在通訊上被耦合到感測器集線器1740。一熱感測器1739、風扇1737、鍵盤1736、以及觸控板1730可在通訊上被耦合到EC 1735。喇叭1763、耳機1764、以及一麥克風1765可在通訊上被耦合到一音訊單元1762,該音訊單元1762然後可在通訊上被耦合到DSP 1760。音訊單元1762可包含諸如一音訊編碼解碼器以及一D類放大器。一SIM卡1757可在通訊上被耦合到WWAN單元1756。可在次代形狀因數(Next Generation Form Factor;簡稱NGFF)中實施諸如WLAN單元1750、藍芽單元1752、以及WWAN單元1756之組件。
第18圖根據本發明揭露的實施例而示出用於實施位元欄操作的指令及/或邏輯之一系統1800。在各實施例中,該等指令可以是向量指令。
在一實施例中,該等指令可包括用於將資料結構壓縮為位元欄之一指令。諸如單倍、雙倍、四倍、字、雙字、或其他適當的資料等的任何適當的資料結構可被壓縮。在一進一步的實施例中,可包含用於將結構壓縮為一緊縮位元陣列的位元欄之一指令。在另一進一步的實施例中,可 包含用於在一向量化運算中將多個結構立刻壓縮為多個位元欄之一指令。在另一實施例中,該等多個結構可被壓縮為一緊縮位元陣列,且所有作為結果的位元欄可具有相同的大小。該等結構可被安排在一陣列中。在又一實施例中,該等多個結構可被壓縮,但是各位元欄可具有不同的大小,其中在一大小指示符向量的一元素中界定每一位元欄的大小。
在一實施例中,該等指令可包括用於自位元欄將資料結構解壓縮或將位元欄擴展為資料結構之一指令。諸如單倍、雙倍、四倍、字、雙字、或其他適當的資料等的任何適當的資料結構可被解壓縮。在一進一步的實施例中,可包含用於自一緊縮位元陣列的位元欄將結構解壓縮或擴展之一指令。在另一進一步的實施例中,可包含用於在一向量化運算中自多個位元欄立刻將多個結構解壓縮或擴展之一指令。在另一實施例中,可自一緊縮位元陣列將該等多個結構解壓縮或擴展,且所有作為結果的位元欄可具有相同的大小。該等結構可被安排在一陣列中作為結果。在又一實施例中,可自不同大小的位元欄將該等多個結構解壓縮或擴展,其中在一大小指示符向量的一元素中界定每一位元欄的大小。
該等指令可包括指令流1802中之指令。可以一處理器1806執行該指令,而可以部分地包括以參照第1-17圖所述的各元件之任何適當的方式實施處理器1806。例如,處理器1806可包含用於執行管線操作的各種組件。 處理器1806可包含多個核心1826、引擎、及亂序處理。處理器1806可包含一前端1808,用以自包含指令流1802的記憶體接收或提取指令。前端1808可包含一提取器1810,用以有效率地以將要被執行的可能指令填滿該管線。前端1808可包含一解碼器1812,該解碼器1812將指令解碼為一些運算碼以供執行,決定其意義,且取得副作用、所需的資料、被耗用的資料、以及將要被產生的資料。可將一個二進制轉譯器1814用於將碼最佳化。當一編譯器1804產生指令時,該指令可存在於指令流1802中,或者可由二進制轉譯器1814創造該指令。可將該資訊傳遞給一執行管線中之一亂序或循序執行引擎。該執行管線可包含一重命名及分配單元1818,該重命名及分配單元1818將各指令重命名,以供亂序執行,將此類重命名約定儲存在與一指令引退單元1824共存的一重排序緩衝器(ROB)中,因而各指令看起來可按照其被接收的順序引退。重命名及分配單元1818可進一步分配資源,以供平行地執行各指令。排程器1820可將各指令排程成在有輸入可用時在各執行單元1822上執行。各執行單元1822之輸出可在該ROB中排隊等候。前端1808可嘗試預料將阻止指令在一循序流中執行的任何行為,且可提取可被執行的指令流。當有諸如一錯誤預測時,該ROB可通知該前端,且可替代地執行不同組的指令。前端1808可儲存諸如分支預測之元資料(metadata)等的資料。可自包括多階快取記憶體的一記憶體子系統1828讀取指令及 參數,且可將結果寫到該記憶體子系統1828。
系統1800可處理且執行諸如指令流1802中之那些指令等的指令。可自記憶體子系統1828載入指令流1802或可由一外部來源提供指令流1802。系統1800可處理且執行具有可被向量化的迴圈操作之各指令。可改變或修改可被向量化的迴圈操作,以便包含用於壓縮及旋轉之向量指令。可由一編譯器1804在被提供給系統1800的指令流1802內進行該等改變或修改,且將該等改變或修改插回到指令流1802,或者可由處理器1806內之一個二進制轉譯器、動態轉譯器(dynamic translator)、或及時編譯器(just-in-time compiler)進行該等改變或修改,且將該等改變或修改插回到指令流1802。不論指令的來源為何,都可由處理器1806中之一執行管線執行該指令。
在各實施例中,被系統1800執行的指令可以是用於緊縮位元陣列1830以及其中包含的位元欄之調處。在一實施例中,指令流1802中之指令可包括用於將元素陣列或資料結構壓縮為緊縮位元陣列1830中之位元欄的一指令。在另一實施例中,指令流1802中之指令可包括自緊縮位元陣列1830中之位元欄擴展元素陣列或資料結構的一指令。
可以與一緊縮位元陣列1830中之一或多個位元欄有關之方式執行該等指令。陣列1830可被儲存在系統1800的一記憶體子系統1828中,該記憶體子系統1828可包含實體記憶體、虛擬記憶體、暫存器、或各階的快取記憶 體。在一實施例中,緊縮位元陣列1830可包含多個相同大小的位元欄。在另一實施例中,緊縮位元陣列1830可包含多個不同大小的位元欄。在此種實施例中,緊縮位元陣列1830可包含由用於界定緊縮位元陣列1830中之每一位元欄的大小的各元素構成之一向量,或可被該向量參考。
諸如整數等的某些資料結構可能只將被分配給該資料結構的空間之一部分用於儲存該整數的特定實例之資訊。例如,具有"3"的值之一整數將一整數的兩個位元用於表示該值"1 1"。根據一組的此類結構之特定值,可藉由緊縮被用於表示該等各種結構的位元,而壓縮該組。諸如具有一前導正負號位元之結構等的其他結構可能需要以該結構的所有位元表示各種值。這些其他結構可能不是用於經由緊縮位元而壓縮之候選結構。
舉一組整數{3,8,12,17,19}為例。當使用八個位元表示一特定整數時,因而需要以四十個位元儲存該組整數。可使用{1 1,1 0 0 0,1 1 0 0,1 0 0 0 1,1 0 0 1 1}而以二進制表示該組整數。因此,對於該特定組的整數而言,實際上需要以最多五個位元儲存該組的一特定元素。因此,如果每一整數的三個最高有效位元被截斷,則該組的整數可被儲存為一組的五位元整數,因而需要二十五個位元。該程序可被稱為緊縮位元(packing bits),且此種緊縮位元的一陣列(例如,陣列1830)可被稱為緊縮位元陣列。該陣列的該等元素可被稱為位元欄。該壓縮資料結 構的儲存及調處需要知道特定位元欄的大小,這是因為用於系統1800的大部分指令及操作都假定各元素是諸如單倍、雙倍、或浮點數等的標準類型。儲存空間的節省以及可得到的其他效率之重要性可超過將各元素壓縮為緊縮位元陣列以及自緊縮位元陣列將該元素解壓縮所需的負擔(overhead)。
可以任何適當的方式表示用於位元欄壓縮的指令。例如,該指令的一變體可被稱為"VBFCOMPRESS"。可諸如以任何適當數目或種類的旗標、參數、遮罩、或該指令本身的編碼之變體等的以任何適當的方式指定VBFCOMPRESS的輸入及輸出、以及VBFCOMPRESS的可供選擇採用的特徵或操作或變體。可省略某些旗標或參數,且這些旗標或參數代表的設定可以是固有的,或可被硬編碼(hard-coded)到該指令的執行中。例如,可假定指令的來源或由該指令將要送回的值係一內定暫存器。某些旗標、參數、或遮罩可以是可供選擇採用的,且這些旗標、參數、或遮罩代表的設定可被以內定方式設定。此外,某些旗標、參數、或遮罩可被再用為該指令的來源及結果目的地兩者。以可以是可供選擇採用的、固有的、或被再用的數個參數示出第18圖中所示之執行選項。
在一實施例中,可透過不同的指令之使用而指定該壓縮指令之變體。例如,可為位元組、字、及四倍字提供VBFCOMPRESS之變體。可透過對不同的指令、或該指令的旗標、參數、或遮罩之呼叫,而表示該指令的特定變 體。雖然在本說明書中可使用任何適當的變體,但是該壓縮指令可被稱為VBFCOMPRESS。
在一實施例中,VBFCOMPRESS的旗標、參數、遮罩、或編碼可指定"dest"、或該壓縮操作之目的地。可將該目的地指定為一暫存器、位址、或將寫入或儲存透過該指令而產生的位元欄之一位置之其他識別。該目的地可具有適當的大小。在一進一步的實施例中,dest可指定將包含壓縮該等輸入的結果的緊縮位元欄之陣列。
在一實施例中,VBFCOMPRESS的旗標、參數、遮罩、或編碼可指定"src"或"src1",用以表示將要被壓縮為緊縮陣列中的位元欄的一些元素構成之一向量。該等元素可包含諸如不同種類之整數等的資料結構。在一實施例中,該向量src中之該等元素在壓縮之後可以全部具有相同的長度。在另一實施例中,該向量src中之該等元素在壓縮之後可以具有不同的長度。在此種實施例中,可藉由旗標、參數、遮罩、或編碼而以"src2"指定VBFCOMPRESS。src2可包含用於將在壓縮之後存在的目標位元欄的長度之一向量。在src1中之每一結構可被壓縮為在src2之對應的元素中指定的一長度。可諸如以64位元、128位元、或256位元值等的任何適當的格式指定該長度。
在其中壓縮之後的所有位元欄具有相同的長度之一實施例中,VBFCOMPRESS的旗標、參數、遮罩、或編碼可指定"r64",用以表示src的每一元素將被壓縮成的位元欄 之長度。
系統1800可以向量化的方式取得向量src中包含的該等元素,將每一元素截斷到r64中指定的長度、或向量src2之對應的欄中指定的長度。可以線性之方式在緊縮位元格式下將該等結果儲存在dest中。該dest可被儲存為緊縮位元陣列1830。
VBFCOMPRESS的使用可避免長許多的指令序列,而此種長許多的指令序列將諸如需要:根據新的位元欄大小而將各值移位;將各位元組混洗(shuffling)為兩個拷貝,且同時避免重疊;以及使用一"或"命令將該等拷貝混合。
可以任何適當的方式表示用於位元欄擴展的指令。例如,該指令的一變體可被稱為"VBFEXPAND"。可諸如以任何適當數目或種類的旗標、參數、遮罩、或該指令本身的編碼之變體等的以任何適當的方式指定VBFEXPAND的輸入及輸出、以及VBFEXPAND的可供選擇採用的特徵或操作或變體。可省略某些旗標或參數,且這些旗標或參數代表的設定可以是固有的,或可被硬編碼到該指令的執行中。例如,可假定指令的來源或該指令將要送回的值是到一內定暫存器。某些旗標、參數、或遮罩可以是可供選擇採用的,且這些旗標、參數、或遮罩代表的設定可被以內定方式設定。此外,某些旗標、參數、或遮罩可被再用為該指令的來源及結果目的地兩者。以可以是可供選擇採用的、固有的、或被再用的數個參數示出第18圖所示之執 行選項。
在一實施例中,可透過不同的指令之使用而指定該壓縮指令之變體。例如,可為位元組、字、及四倍字提供VBFEXPAND之變體。可透過對不同的指令、或該指令的旗標、參數、或遮罩之呼叫,而表示該指令的特定變體。雖然在本說明書中可使用任何適當的變體,但是該壓縮指令可被稱為VBFEXPAND。
在一實施例中,VBFEXPAND的旗標、參數、遮罩、或編碼可指定"dest"、或該壓縮操作之目的地。可將該目的地指定為一暫存器、位址、或將寫入或儲存透過該指令而產生的位元欄之一位置之其他識別。該目的地可具有適當的大小。在一進一步的實施例中,dest可指定將包含壓縮該等輸入的結果的緊縮位元欄之陣列。
在一實施例中,VBFEXPAND的旗標、參數、遮罩、或編碼可指定"src"或"src1",用以表示將要自緊縮陣列中之位元欄被擴展為一元素陣列的一些元素構成之一向量。該等目的地元素可包含諸如不同種類之整數等的資料結構。在一實施例中,該向量src中之該等來源元素在仍保持被壓縮時可以全部具有相同的長度。在另一實施例中,該向量src中之該等元素在仍保持被壓縮時可以具有不同的長度。在此種實施例中,可藉由旗標、參數、遮罩、或編碼而以"src2"指定VBFEXPAND。src2可包含用於將被擴展的來源位元欄的長度之一向量。在src1中之每一結構可已被被壓縮為src2之對應的元素中指定的一長度。 可諸如以64位元、128位元、或256位元值等的任何適當的格式指定該長度。
在其中該來源陣列中之所有位元欄具有相同的長度之一實施例中,VBFEXPAND的旗標、參數、遮罩、或編碼可指定"r64",用以表示src的每一元素被壓縮成的位元欄之長度。
系統1800可以向量化的方式取得向量src中包含的該等元素,將每一元素擴展到r64中指定的長度、或向量src2之對應的欄中指定的長度。可以線性之方式且在原始資料結構格式下將該等結果儲存在dest。該來源可曾是緊縮位元陣列1830。緊縮位元陣列1830的一特定實例可包含諸如將被以向量化方式擴展的十六個此種位元欄,而該向量化方式可包括在單一時脈週期中透過SIMD執行之同時操作。
VBFEXPAND的使用可避免長許多的指令序列,而此種長許多的指令序列將諸如需要:分配各位元組;將各位元欄對齊到32位元邊界;以及掩蔽各位元欄。
第19圖根據本發明揭露的實施例而示出用於向量位元欄壓縮的系統1800之例示操作。
一整數陣列1902可包含連續元素中之值{42,100000,4711,128}。在陣列1902中以四個位元組表示這些整數中之每一整數。然而,對於陣列1902中的這些特定值而言,該等值不需要將該等四個位元組的所有位元用於表示。不需要32位元的位元組,而是可以十七個位元表示 每一值。因此,可以作為一來源之陣列1902、作為一目的地之一緊縮位元陣列1904、以及十七的長度呼叫VBFCOMPRESS。結果可以是:所有的42、100000、4711、及128仍然以其精確的值被保留在陣列1904中。然而,現在可以只使用十七個位元表示每一值。每一元素可被視為該緊縮位元陣列中之一位元欄。每一位元欄保留了原始未被壓縮的元素之值。可使用該等值末尾之額外的空間。可以向量化方式截斷陣列1902中之該等值。
在其他實施例中,用於識別陣列1904的每一元素的寬度之另一來源向量可被用來作為VBFCOMPRESS的一輸入。諸如128、4711、及42等的某些元素不需要將所有十七個位元用於表示該等元素。根據執行的特定需求,且在考慮到分別管理各位元欄寬度所需的負擔之情形下,可使用此種長度的來源向量。例如,一src2向量可指定{6(用於值42),17(用於值100000),13(用於值4711),8(用於值128)}之長度。於壓縮時,可存取該向量,以便決定要自該來源向量的該等元素截斷多少位元而達成該等作為結果的位元欄。可保留src2,因而可在另一時間存取該目的地向量的該等元素。
第20圖根據本發明揭露的實施例而示出用於位元欄擴展的系統1800之例示操作。
諸如整數等的元素之一緊縮位元陣列2002可包含連續元素中之值{42,100000,4711,128,31455,65537}。已使用諸如第19圖中之程序壓縮了這些整數中之每一整 數。因此,陣列2002可能已能夠容納額外的壓縮位元欄,因而擴大了表示系統1800中之不同的整數的能力。在第20圖之例子中,可分別以十七個位元表示陣列2002中之該等位元欄。
然而,系統1800的其他部分可預期諸如陣列2002的該等位元欄中之那些整數等的整數將是諸如32位元等的完全的已制定之結構寬度。例如,雖然有時可適應某些可交互運作性(interoperability)或反向相容性(backward-compatibility),但是大部分的指令依賴標準化的寬度及格式。然而,十七位元是不太可能與許多這類的其他指令相容。因此,系統1800可能需要將陣列2002的該等緊縮位元欄擴展為四位元組或三十二位元結構的一陣列2004。
因此,可以作為一來源之陣列2002、作為一目的地之一陣列2004、以及十七的界定長度呼叫VBFEXPAND。結果可以是:42、100000、4711、及128被分別擴展為32位元表示法。可以向量化方式執行該擴展。陣列2004中可用的空間可能不足以接受陣列2002中之所有元素的擴展。該狀況是合於邏輯的,這是因為陣列2002包含無法以擴展格式在陣列2004的相同空間中表示之一些壓縮值。在某些實施例中,可以不理會或不執行超出目的地陣列的空間或大小之緊縮位元欄之嘗試擴展,或者可產生一錯誤。
在其他實施例中,用於識別陣列2002的每一元素的 寬度之另一來源向量可被用來作為VBFEXPAND的一輸入。例如,如果42、100000、4711、及128被分別壓縮到長度6、17、13、及8,則這些長度可被儲存在另一向量中。於VBFEXPAND操作期間可存取這些長度,使得在擴展該等元素中之一特定元素時,將使用該長度。
第21圖是根據本發明的一實施例而處置用於位元欄壓縮及擴展的一指令的一方法2100之流程圖。
可以任何適當的準則啟動方法2100。此外,雖然方法2100說明一些特定元素的操作,但是可以一些元素的任何適當的組合或類型執行方法2100。例如,可以第1-20圖所示之該等元件或可操作而執行方法2100的任何其他系統來執行方法2100。因此,方法2100的較佳初始化點以及包含方法2100的該等元件的順序可取決於所選擇的實施方式。在某些實施例中,可在可供選擇採用之情形下省略、重組、重複、或結合某些元件。此外,可在方法2100本身內平行地執行方法2100的一些部分。
在2105中,可提取一指令。該指令可以是用於諸如壓縮或擴展等的位元欄調處。在2110中,可將該指令解碼。在2115中,可將該指令分配及排程,以供執行。
在2120中,可決定該指令是要將一元素陣列壓縮為一緊縮位元欄陣列或要將一緊縮位元欄陣列擴展為一元素陣列。如果該指令是用於壓縮,則方法2100可繼續進入2125。如果該指令是用於擴展,則方法2100可繼續進入2140。
在2125中,可識別將要被壓縮的一整數或其他元素之陣列。該等元素可包括即使表示法的一些位元被移除仍然可被精確地表示之資料結構。
在2130中,可決定壓縮之後的該等元素的長度。在一實施例中,可將單一長度用於壓縮之後的所有元素。此種單一長度可以是仍然可被用於精確地表示將要被壓縮的每一元素之最小位元數。在另一實施例中,可將每一元素在壓縮之後其本身將要使用的長度給予該元素。在此類實施例中,另一向量或陣列可被用於儲存對應於作為結果的位元欄之長度。
在2135中,該等元素可被分別截斷到指定的位元長度。可按照與該等元素存在於原始陣列的順序相同之順序將該等元素儲存在一緊縮位元欄陣列中。可在單一時脈週期中針對每一元素以向量化方式同時執行該截斷及儲存。方法2100可繼續進入2160。
在2140中,可識別將要被擴展的一緊縮位元欄陣列。該緊縮位元欄陣列可包含先前被壓縮到較短的位元長度之各元素。在2145中,可決定此種位元長度。在一實施例中,相同的位元長度可被用於壓縮該緊縮位元欄陣列中之所有元素。在另一實施例中,一向量可儲存被用於壓縮該緊縮位元欄陣列中之對應的元素之各種長度。
在2150中,可根據界定的長度而擴展每一元素。結果可以是符合該系統的標準類型及位元長度之一資料結構。可將每一被擴展的元素儲存到一元素陣列中,以供後 續的使用。可在單一時脈週期中針對該緊縮位元欄陣列的每一元素以向量化方式同時執行該步驟。在2155中,可捨棄或不理會已沒有目的地陣列中之空間的任何位元欄。
在2160中,可將該指令引退。在2165中,可決定方法2100是要在可供選擇採用之情形下重複於步驟2105或是要終止。
可以硬體、軟體、韌體、或這些實施方式的一組合實施本發明揭露的該等機制之實施例。可將本發明揭露的實施例實施為在包含至少一處理器、一儲存系統(包括揮發性及非揮發性記憶體及/或儲存元件)、至少一輸入裝置、以及至少一輸出裝置的可程式系統上執行之電腦程式或程式碼。
可施加程式碼而輸入用於執行本發明述及的功能且產生輸出資訊之指令。可以習知之方式將該輸出資訊施加到一或多個輸出裝置。為了便於說明本申請案,處理系統可包括具有諸如一數位信號處理器(DSP)、一微控制器、一特定應用積體電路(Application Specific Integrated Circuit;簡稱ASIC)、或一微處理器等的一處理器之任何系統。
可以高階程序或物件導向程式語言實施該程式碼,以便與一處理系統通訊。如有需要,亦可以組合語言或機器語言實施該程式碼。事實上,本發明述及的該等機制在範圍上不限於任何特定程式語言。無論如何,該語言可以是一編譯式或直譯式語言。
可以藉由儲存在機器可讀取媒體上的代表性指令實施至少一實施例之一或多個觀點,該等代表性指令代表處理器內之各種邏輯,且該等代表性指令被一機器讀取時,將使該機器製造用於執行本發明述及的該等技術之邏輯。被稱為"智慧財產權核心"("IP core")之此種表示法可被儲存在一實體之機器可讀取的媒體上,且被供應到各客戶或製造設施,以便載入可實際製造出該邏輯或處理器之製造機器中。
此種機器可讀取的媒體可包括(但不限於)由機器或裝置製造或形成的非短暫性實體物品配置,其中包括諸如硬碟等的儲存媒體、包括軟碟、光碟、唯讀光碟(CD-ROM)、可複寫式光碟(Compact Disk Rewritable;簡稱CD-RW)、以及磁光碟之任何其他類型的磁碟或光碟、諸如唯讀記憶體(ROM)、動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)等的隨機存取記憶體(RAM)、可抹除可程式唯讀記憶體(EPROM)、快閃記憶體、電氣可抹除可程式唯讀記憶體(EEPROM)等的半導體裝置、磁卡或光學卡、或適於儲存電子指令之任何其他類型的媒體。
因此,本發明之實施例亦可包括含有指令或含有諸如硬體描述語言(Hardware Description Language;簡稱HDL)等的設計資料之非短暫性實體機器可讀取的媒體,其中該HDL界定了本發明述及的結構、電路、設備、處理器、及/或系統特徵。此類實施例亦可被稱為程式產 品。
在某些例子中,一指令轉換器可被使用於將指令自一來源指令集轉換到一目標指令集。例如,該指令轉換器可(諸如使用靜態二進制轉譯、其中包括動態編譯之動態二進制轉譯)轉譯、變體、仿真、或其他方式將一指令轉換為將要被該核心處理的一或多個其他指令。可以軟體、硬體、韌體、或以上各項之一組合實施該指令轉換器。該指令轉換器可設於處理器中,可設於處理器之外,或可部分地設於處理器中且部分地設於處理器之外。
因此,揭露了用於執行根據至少一實施例的一或多個指令之技術。雖然已說明了且在附圖中示出了某些例示性之實施例,但是我們應可了解:這些實施例只是例示性,且對其他實施例沒有限制性,而且這些實施例不限於所示及所述的特定結構及安排,這是因為對此項技術具有一般知識者在研究了本發明的揭露之後將可得知各種其他的修改。在成長快速且不易於預見進一步的進展之諸如此項技術等的技術領域中,可在不脫離本發明揭露的原理或伴隨的申請專利範圍之範圍下,可易於在啟用技術進展的幫助下對所揭露的該等實施例作出安排及細節上的修改。
本發明揭露的某些實施例包含一種處理器。該處理器可包含用於接收一元素陣列與一緊縮位元陣列間之轉換的一指令之一前端、用於將該指令解碼之一解碼器、用於執行該指令之一核心、以及用於將該指令引退之一指令引退單元。該核心可包含用於識別將由該緊縮位元陣列使用的 一或多個位元欄長度之邏輯、用於識別該元素陣列的元素的寬度之邏輯、以及用於根據該位元欄長度及元素的該寬度而同時針對該元素陣列的複數個元素以及該緊縮位元陣列的複數個位元欄在該元素陣列與該緊縮位元陣列之間轉換之邏輯。結合上述實施例中之任何實施例時,該處理器可進一步包含用於將該元素陣列的元素壓縮為將被儲存在該緊縮位元陣列的位元欄而執行轉換之邏輯。結合上述實施例中之任何實施例時,該等元素自該寬度被壓縮到該一或多個位元欄長度。結合上述實施例中之任何實施例時,該處理器可進一步包含用於將該緊縮位元陣列的位元欄擴展為該元素陣列的該等元素而執行轉換之邏輯。結合上述實施例中之任何實施例時,該等元素自該一或多個位元欄長度被擴展到該寬度。結合上述實施例中之任何實施例時,根據一相同的位元欄長度而對每一對的該緊縮位元陣列的位元欄以及該元素陣列的元素執行該轉換。結合上述實施例中之任何實施例時,根據被儲存在一向量中之複數個不同的位元欄長度而執行該轉換,該向量被用於將各長度指定給各對的該緊縮位元陣列的位元欄以及該元素陣列的元素之對應的轉換。結合上述實施例中之任何實施例時,該位元欄長度將根據將仍然保持該元素陣列的該等元素的精確度之該元素陣列的所有元素之一最小表示法。結合上述實施例中之任何實施例時,該緊縮位元陣列的位元欄將不對齊處理器位元組表示法。
本發明揭露的某些實施例包含一種系統。該系統可包 含用於接收一元素陣列與一緊縮位元陣列間之轉換的一指令之一前端、用於將該指令解碼之一解碼器、用於執行該指令之一核心、以及用於將該指令引退之一指令引退單元。該核心可包含、用於識別將由該緊縮位元陣列使用的一或多個位元欄長度之邏輯、用於識別該元素陣列的元素的寬度之邏輯、以及用於根據該位元欄長度及元素的該寬度而同時針對該元素陣列的複數個元素以及該緊縮位元陣列的複數個位元欄在該元素陣列與該緊縮位元陣列之間轉換之邏輯。結合上述實施例中之任何實施例時,該系統可進一步包含用於將該元素陣列的元素壓縮為將被儲存在該緊縮位元陣列中的位元欄而執行轉換之邏輯。結合上述實施例中之任何實施例時,該等元素自該寬度被壓縮到該一或多個位元欄長度。結合上述實施例中之任何實施例時,該系統可進一步包含用於將該緊縮位元陣列的位元欄擴展為該元素陣列的該等元素而執行轉換之邏輯。結合上述實施例中之任何實施例時,該等元素自該一或多個位元欄長度被擴展到該寬度。結合上述實施例中之任何實施例時,根據一相同的位元欄長度而對每一對的該緊縮位元陣列的位元欄以及該元素陣列的元素執行該轉換。結合上述實施例中之任何實施例時,根據被儲存在一向量中之複數個不同的位元欄長度而執行該轉換,該向量被用於將各長度指定給各對的該緊縮位元陣列的位元欄以及該元素陣列的元素之對應的轉換。結合上述實施例中之任何實施例時,該位元欄長度將根據將仍然保持該元素陣列的該等元素的精 確度之該元素陣列的所有元素之一最小表示法。結合上述實施例中之任何實施例時,該緊縮位元陣列的位元欄將不對齊處理器位元組表示法。
本發明揭露的某些實施例包含一種設備。該設備可包含用於用於執行下列操作之裝置:接收一元素陣列與一緊縮位元陣列間之轉換的一指令;將該指令解碼;執行該指令;以及將該指令引退。該設備可包含用於識別將由該緊縮位元陣列使用的一或多個位元欄長度之裝置、用於識別該元素陣列的元素的寬度之裝置、以及用於根據該位元欄長度及元素的該寬度而同時針對該元素陣列的複數個元素以及該緊縮位元陣列的複數個位元欄在該元素陣列與該緊縮位元陣列之間轉換之裝置。結合上述實施例中之任何實施例時,該設備可進一步包含用於將該元素陣列的元素壓縮為將被儲存在該緊縮位元陣列的位元欄而執行轉換之裝置。結合上述實施例中之任何實施例時,該等元素自該寬度被壓縮到該一或多個位元欄長度。結合上述實施例中之任何實施例時,該設備可進一步包含用於將該緊縮位元陣列的位元欄擴展為該元素陣列的該等元素而執行轉換之裝置。結合上述實施例中之任何實施例時,該等元素自該一或多個位元欄長度被擴展到該寬度。結合上述實施例中之任何實施例時,根據一相同的位元欄長度而對每一對的該緊縮位元陣列的位元欄以及該元素陣列的元素執行該轉換。結合上述實施例中之任何實施例時,根據被儲存在一向量中之複數個不同的位元欄長度而執行該轉換,該向量 被用於將各長度指定給各對的該緊縮位元陣列的位元欄以及該元素陣列的元素之對應的轉換。結合上述實施例中之任何實施例時,該位元欄長度將根據將仍然保持該元素陣列的該等元素的精確度之該元素陣列的所有元素之一最小表示法。結合上述實施例中之任何實施例時,該緊縮位元陣列的位元欄將不對齊處理器位元組表示法。
本發明揭露的某些實施例包含一種方法。該方法可包含下列步驟:接收一元素陣列與一緊縮位元陣列間之轉換的一指令;將該指令解碼;執行該指令;以及將該指令引退。該方法可包含下列步驟:識別將由該緊縮位元陣列使用的一或多個位元欄長度;識別該元素陣列的元素的寬度;以及根據該位元欄長度及元素的該寬度而同時針對該元素陣列的複數個元素以及該緊縮位元陣列的複數個位元欄在該元素陣列與該緊縮位元陣列之間轉換。結合上述實施例中之任何實施例時,該方法可進一步包含下列步驟:將該元素陣列的元素壓縮為將被儲存在該緊縮位元陣列的位元欄而執行轉換。結合上述實施例中之任何實施例時,該等元素自該寬度被壓縮到該一或多個位元欄長度。結合上述實施例中之任何實施例時,該方法可進一步包含下列步驟:將該緊縮位元陣列的位元欄擴展為該元素陣列的該等元素而執行轉換。結合上述實施例中之任何實施例時,該等元素自該一或多個位元欄長度被擴展到該寬度。結合上述實施例中之任何實施例時,根據一相同的位元欄長度而對每一對的該緊縮位元陣列的位元欄以及該元素陣列的 元素執行該轉換。結合上述實施例中之任何實施例時,根據被儲存在一向量中之複數個不同的位元欄長度而執行該轉換,該向量被用於將各長度指定給各對的該緊縮位元陣列的位元欄以及該元素陣列的元素之對應的轉換。結合上述實施例中之任何實施例時,該位元欄長度將根據將仍然保持該元素陣列的該等元素的精確度之該元素陣列的所有元素之一最小表示法。結合上述實施例中之任何實施例時,該緊縮位元陣列的位元欄將不對齊處理器位元組表示法。

Claims (21)

  1. 一種處理器,包含:一前端電路,用以接收用來將複數個資料值在元素陣列與緊縮位元陣列之間做轉換的指令,其中,該緊縮位元陣列包含比該元素陣列更小的儲存容量;一解碼器電路,用以將該指令解碼;一核心電路,用以執行該指令,其中,該核心電路包含電路,用以:識別用於該元素陣列之複數個元素的元素寬度;識別用於該緊縮位元陣列之複數個位元欄的一或多個位元欄長度;以及將該複數個資料值在該元素陣列與該緊縮位元陣列之間做轉換,其中,該複數個資料值基於該元素陣列的該元素寬度和該緊縮位元陣列的該一或多個位元欄長度而被轉換,並且其中,該複數個資料值的每一個資料值被平行地轉換;以及一指令引退單元電路,用以將該指令引退。
  2. 如請求項1之處理器:其中,該指令包含用以將該複數個資料值壓縮的壓縮指令;並且其中,用以將該複數個資料值在該元素陣列與該緊縮位元陣列之間做轉換的該電路包含用以將該複數個資料值 從該元素陣列的該元素寬度壓縮到該緊縮位元陣列的該一或多個位元欄長度的電路。
  3. 如請求項1之處理器:其中,該指令包含用以將該複數個資料值擴展的擴展指令,並且其中,用以將該複數個資料值在該元素陣列與該緊縮位元陣列之間做轉換的該電路包含用以將該複數個資料值從該緊縮位元陣列的該一或多個位元欄長度擴展到該元素陣列的該元素寬度的電路。
  4. 如請求項1之處理器,其中,用以識別用於該緊縮位元陣列之該複數個位元欄的該一或多個位元欄長度的該電路包含用以識別用於該複數個位元欄之相同位元欄長度的電路。
  5. 如請求項1之處理器,其中,用以識別用於該緊縮位元陣列之該複數個位元欄的該一或多個位元欄長度的該電路包含用以識別用於該複數個位元欄之不同位元欄長度的電路。
  6. 如請求項1之處理器,其中,用以識別用於該緊縮位元陣列之該複數個位元欄的該一或多個位元欄長度的該電路包含用以識別能夠準確地表示該複數個資料值之最小位 元欄長度的電路。
  7. 如請求項1之處理器,其中,該緊縮位元陣列之該複數個位元欄的每一個位元欄係要與處理器位元組表示法不對齊。
  8. 一種用以執行用於向量位元欄壓縮及擴展之系統,包含:一記憶體,用以儲存複數個指令,其中,該複數個指令包含向量指令;以及一處理器,用以執行該複數個指令,其中,該處理器包含:一前端電路,用以接收該複數個指令的該向量指令,其中,該向量指令係用來將複數個資料值在元素陣列與緊縮位元陣列之間做轉換,其中,該緊縮位元陣列包含比該元素陣列更小的儲存容量;一解碼器電路,用以將該向量指令解碼;一核心電路,用以執行該向量指令,其中,該核心電路包含電路,用以:識別用於該元素陣列之複數個元素的元素寬度;識別用於該緊縮位元陣列之複數個位元欄的一或多個位元欄長度;以及將該複數個資料值在該元素陣列與該緊縮位 元陣列之間做轉換,其中,該複數個資料值基於該元素陣列的該元素寬度和該緊縮位元陣列的該一或多個位元欄長度而被轉換,並且其中,該複數個資料值的每一個資料值被平行地轉換;以及一指令引退單元電路,用以將該向量指令引退。
  9. 如請求項8之系統:其中,該向量指令包含用以將該複數個資料值壓縮的壓縮指令,並且其中,用以將該複數個資料值在該元素陣列與該緊縮位元陣列之間做轉換的該電路包含用以將該複數個資料值從該元素陣列的該元素寬度壓縮到該緊縮位元陣列的該一或多個位元欄長度的電路。
  10. 如請求項8之系統:其中,該向量指令包含用以將該複數個資料值擴展的擴展指令,並且其中,用以將該複數個資料值在該元素陣列與該緊縮位元陣列之間做轉換的該電路包含用以將該複數個資料值從該緊縮位元陣列的該一或多個位元欄長度擴展到該元素陣列的該元素寬度的電路。
  11. 如請求項8之系統,其中,用以識別用於該緊縮位元陣列之該複數個位元欄的該一或多個位元欄長度的該電路 包含用以識別用於該複數個位元欄之相同位元欄長度的電路。
  12. 如請求項8之系統,其中,用以識別用於該緊縮位元陣列之該複數個位元欄的該一或多個位元欄長度的該電路包含用以識別用於該複數個位元欄之不同位元欄長度的電路。
  13. 如請求項8之系統,其中,用以識別用於該緊縮位元陣列之該複數個位元欄的該一或多個位元欄長度的該電路包含用以識別能夠準確地表示該複數個資料值之最小位元欄長度的電路。
  14. 如請求項8之系統,其中,該緊縮位元陣列之該複數個位元欄的每一個位元欄係要與處理器位元組表示法不對齊。
  15. 一種用以執行用於向量位元欄壓縮及擴展之方法,包含:接收用來將複數個資料值在元素陣列與緊縮位元陣列之間做轉換的指令,其中,該緊縮位元陣列包含比該元素陣列更小的儲存容量;將該指令解碼;執行該指令,其中,執行該指令包含: 識別用於該元素陣列之複數個元素的元素寬度;識別用於該緊縮位元陣列之複數個位元欄的一或多個位元欄長度;以及將該複數個資料值在該元素陣列與該緊縮位元陣列之間做轉換,其中,該複數個資料值基於該元素陣列的該元素寬度和該緊縮位元陣列的該一或多個位元欄長度而被轉換,並且其中,該複數個資料值的每一個資料值被平行地轉換;以及將該指令引退。
  16. 如請求項15之方法:其中,該指令包含用以將該複數個資料值壓縮的壓縮指令,並且其中,將該複數個資料值在該元素陣列與該緊縮位元陣列之間做轉換包含將該複數個資料值從該元素陣列的該元素寬度壓縮到該緊縮位元陣列的該一或多個位元欄長度。
  17. 如請求項15之方法:其中,該指令包含用以將該複數個資料值擴展的擴展指令,並且其中,將該複數個資料值在該元素陣列與該緊縮位元陣列之間做轉換包含將該複數個資料值從該緊縮位元陣列的該一或多個位元欄長度擴展到該元素陣列的該元素寬 度。
  18. 如請求項15之方法,其中,識別用於該緊縮位元陣列之該複數個位元欄的該一或多個位元欄長度包含識別用於該複數個位元欄之相同位元欄長度。
  19. 如請求項15之方法,其中,識別用於該緊縮位元陣列之該複數個位元欄的該一或多個位元欄長度包含用以識別用於該複數個位元欄之不同位元欄長度。
  20. 如請求項15之方法,其中,識別用於該緊縮位元陣列之該複數個位元欄的該一或多個位元欄長度包含用以識別能夠準確地表示該複數個資料值之最小位元欄長度。
  21. 如請求項15之方法,其中,該緊縮位元陣列之該複數個位元欄的每一個位元欄係要與處理器位元組表示法不對齊。
TW105137911A 2015-12-22 2016-11-18 用於向量位元欄壓縮及擴展的指令及邏輯 TWI729029B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/979,322 US10007519B2 (en) 2015-12-22 2015-12-22 Instructions and logic for vector bit field compression and expansion
US14/979,322 2015-12-22

Publications (2)

Publication Number Publication Date
TW201732555A TW201732555A (zh) 2017-09-16
TWI729029B true TWI729029B (zh) 2021-06-01

Family

ID=59064353

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105137911A TWI729029B (zh) 2015-12-22 2016-11-18 用於向量位元欄壓縮及擴展的指令及邏輯

Country Status (5)

Country Link
US (2) US10007519B2 (zh)
EP (1) EP3394727A4 (zh)
CN (1) CN108292218A (zh)
TW (1) TWI729029B (zh)
WO (1) WO2017112242A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10007519B2 (en) 2015-12-22 2018-06-26 Intel IP Corporation Instructions and logic for vector bit field compression and expansion
US10795836B2 (en) * 2017-04-17 2020-10-06 Microsoft Technology Licensing, Llc Data processing performance enhancement for neural networks using a virtualized data iterator
CN113450807B (zh) * 2020-03-25 2023-03-17 大唐移动通信设备有限公司 一种语音数字信号的压缩方法及装置
CN112230995B (zh) * 2020-10-13 2024-04-09 广东省新一代通信与网络创新研究院 一种指令的生成方法、装置以及电子设备
CN117453381A (zh) * 2022-07-18 2024-01-26 阿里巴巴(中国)有限公司 处理器及其数据操作方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5818536A (en) * 1995-09-29 1998-10-06 U.S. Philips Corporation Motion vector selection using a cost function relating accuracy to bit rate
US20140317377A1 (en) * 2011-12-30 2014-10-23 Elmoustapha Ould-Ahmed-Vall Vector frequency compress instruction
US20150012723A1 (en) * 2013-07-04 2015-01-08 Samsung Electronics Co., Ltd. Processor using mini-cores
US20150186136A1 (en) * 2013-12-27 2015-07-02 Tal Uliel Systems, apparatuses, and methods for expand and compress

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2411975B (en) * 2003-12-09 2006-10-04 Advanced Risc Mach Ltd Data processing apparatus and method for performing arithmetic operations in SIMD data processing
US20080071851A1 (en) * 2006-09-20 2008-03-20 Ronen Zohar Instruction and logic for performing a dot-product operation
US8667250B2 (en) 2007-12-26 2014-03-04 Intel Corporation Methods, apparatus, and instructions for converting vector data
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
CN107220029B (zh) * 2011-12-23 2020-10-27 英特尔公司 掩码置换指令的装置和方法
WO2013095657A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Instruction and logic to provide vector blend and permute functionality
US8849885B2 (en) * 2012-06-07 2014-09-30 Via Technologies, Inc. Saturation detector
US10102889B2 (en) * 2012-09-10 2018-10-16 Texas Instruments Incorporated Processing device with nonvolatile logic array backup
US9274802B2 (en) 2013-01-22 2016-03-01 Altera Corporation Data compression and decompression using SIMD instructions
US9715385B2 (en) * 2013-01-23 2017-07-25 International Business Machines Corporation Vector exception code
EP2972788B1 (en) 2013-03-15 2019-08-21 Oracle International Corporation Efficient hardware instructions for single instruction multiple data processors
US9766888B2 (en) * 2014-03-28 2017-09-19 Intel Corporation Processor instruction to store indexes of source data elements in positions representing a sorted order of the source data elements
US10007519B2 (en) 2015-12-22 2018-06-26 Intel IP Corporation Instructions and logic for vector bit field compression and expansion

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5818536A (en) * 1995-09-29 1998-10-06 U.S. Philips Corporation Motion vector selection using a cost function relating accuracy to bit rate
US20140317377A1 (en) * 2011-12-30 2014-10-23 Elmoustapha Ould-Ahmed-Vall Vector frequency compress instruction
US20150012723A1 (en) * 2013-07-04 2015-01-08 Samsung Electronics Co., Ltd. Processor using mini-cores
US20150186136A1 (en) * 2013-12-27 2015-07-02 Tal Uliel Systems, apparatuses, and methods for expand and compress

Also Published As

Publication number Publication date
US20170177342A1 (en) 2017-06-22
TW201732555A (zh) 2017-09-16
CN108292218A (zh) 2018-07-17
WO2017112242A1 (en) 2017-06-29
US10007519B2 (en) 2018-06-26
US10705845B2 (en) 2020-07-07
US20190026109A1 (en) 2019-01-24
EP3394727A1 (en) 2018-10-31
EP3394727A4 (en) 2020-04-29

Similar Documents

Publication Publication Date Title
TWI731892B (zh) 用於以通道為基礎的跨步儲存操作之指令及邏輯
TWI739772B (zh) 處理器、用於安全指令執行管線之方法、及運算系統
TWI730016B (zh) 用於跨步分散運算的指令與邏輯的處理器、方法及系統
CN108292229B (zh) 用于重新出现的相邻聚集的指令和逻辑
TWI738682B (zh) 用於載入索引和散佈元件的處理器、方法及系統
TWI743064B (zh) 用於取得多重向量元素操作之指令及邏輯
TWI697788B (zh) 用以提供向量包裝之直方圖功能的方法,裝置,指令及邏輯
TWI720056B (zh) 用於設置多重向量元素操作之指令及邏輯
TWI715681B (zh) 用於位元欄位位址和插入之指令及邏輯
TWI729029B (zh) 用於向量位元欄壓縮及擴展的指令及邏輯
US20170168819A1 (en) Instruction and logic for partial reduction operations
CN108292271B (zh) 用于向量置换的指令和逻辑
EP3391235A1 (en) Instructions and logic for even and odd vector get operations
US10102215B2 (en) Apparatus for hardware implementation of lossless data compression
KR101898791B1 (ko) 멀티 스트랜드 비순차 프로세서에서 회수를 위한 명령어들을 식별하는 명령어 및 로직
WO2018005718A1 (en) System and method for out-of-order clustered decoding
US9928066B2 (en) Instruction and logic for encoded word instruction compression
US10795681B2 (en) Instruction length decoding
EP3394721A1 (en) Instruction and logic for compression and rotation
TWI773654B (zh) 處理器、運算系統及用於執行以向量為基礎的位元操控之方法
CN107408035B (zh) 用于缕程间通信的装置和方法

Legal Events

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