TWI725077B - 用於排序的處理器、系統和方法 - Google Patents

用於排序的處理器、系統和方法 Download PDF

Info

Publication number
TWI725077B
TWI725077B TW105138124A TW105138124A TWI725077B TW I725077 B TWI725077 B TW I725077B TW 105138124 A TW105138124 A TW 105138124A TW 105138124 A TW105138124 A TW 105138124A TW I725077 B TWI725077 B TW I725077B
Authority
TW
Taiwan
Prior art keywords
register
processor
item
sorting
stored
Prior art date
Application number
TW105138124A
Other languages
English (en)
Other versions
TW201732557A (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 TW201732557A publication Critical patent/TW201732557A/zh
Application granted granted Critical
Publication of TWI725077B publication Critical patent/TWI725077B/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • 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/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3888Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Computer Hardware Design (AREA)
  • Executing Machine-Instructions (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)

Abstract

處理器包含第一暫存器,用以在該第一暫存器內之複數個位置處儲存複數個資料項;第二暫存器;以及執行單元,操作地耦接到該第一暫存器及該第二暫存器,該執行單元包含實施排序指令的邏輯電路,用於以資料項值之順序排序被儲存在該第一暫存器中的該複數個資料項,且在該第二暫存器中儲存複數個索引,其中各索引識別與在該排序前被儲存在該第一暫存器中之資料項相關聯的位置。

Description

用於排序的處理器、系統和方法
本發明有關計算裝置的處理器,且更特別地,關於該等處理器所使用的指令集架構(ISA)。
指令集、或指令集架構(ISA)係與電腦的編程有關之電腦架構的一部分。該編程可涉及電腦的不同觀點,包含與指令相關聯之本機資料類型、暫存器架構、定址模式、記憶體架構、中斷及異常處置、以及外部輸入及輸出(I/O)。應注意的是,在此之指令的用語通常意指以處理器之專用執行單元的形式被實施於邏輯電路中的巨集指令。
本發明之實施例有關指令集架構(ISA),包含排序指令的類別,當被執行時,其可依據資料項之下降值或依據該等資料項之上升值,而排序儲存在第一暫存器中的資料項成為有序序列。各暫存器可包含用以儲存資料項之多個邏輯位置,且各位置可與位置號碼相關聯。由於執行排序 指令之其中一者的結果而產生之資料項的有序序列仍可被儲存在第一暫存器之中,且依照在排序前之它們的位置號碼而自資料項之原始序列映像至有序序列的索引可被儲存在第二暫存器中。
100,1100‧‧‧系統單晶片
102,600‧‧‧處理器
104‧‧‧指令執行管道
106‧‧‧暫存器空間
108,109‧‧‧暫存器
110‧‧‧指令提取/解碼級
112,502‧‧‧提取級
114,516‧‧‧執行級
116‧‧‧回寫級
118‧‧‧b排序執行單元
120‧‧‧n排序執行單元
302,---,308‧‧‧通用暫存器
400‧‧‧方法
402,---,410‧‧‧動作
500‧‧‧處理器管道
530,601‧‧‧前端單元
504‧‧‧長度解碼級
506‧‧‧解碼級
508‧‧‧分配級
510‧‧‧重命名級
512‧‧‧排程級
514‧‧‧暫存器讀取/記憶體讀取級
550‧‧‧執行引擎單元
518‧‧‧回寫/記憶體寫入級
522‧‧‧異常處置級
524‧‧‧提交級
532‧‧‧分支預測單元
536‧‧‧指令轉譯後備緩衝器
554‧‧‧報廢單元
558‧‧‧實體暫存器檔案單元
560‧‧‧執行群集
564‧‧‧記憶體存取單元
580‧‧‧資料預取器
602,604,606‧‧‧微操作排程器
603‧‧‧無序執行引擎
628‧‧‧解碼器
630‧‧‧追蹤快取
634‧‧‧微操作隊列
608,610‧‧‧暫存器檔案
622,624‧‧‧浮點單元
700‧‧‧微處理器系統
750,950‧‧‧點對點互連
727‧‧‧通訊裝置
730‧‧‧代碼及資料
732,734,840‧‧‧記憶體
738‧‧‧圖形電路
739‧‧‧圖形介面
790,990‧‧‧晶片組
820‧‧‧圖形記憶體控制器集線器
850‧‧‧輸入/輸出控制器集線器
860‧‧‧外部圖形裝置
870‧‧‧週邊裝置
972,982‧‧‧控制邏輯
915‧‧‧傳統I/O裝置
1002A-N‧‧‧核心
1010‧‧‧系統代理單元
1016‧‧‧匯流排控制器單元
1018‧‧‧媒體處理器
1024‧‧‧影像處理器
1026‧‧‧音頻處理器
1028‧‧‧視頻處理器
1032‧‧‧直接記憶體存取單元
1040‧‧‧顯示單元
1020‧‧‧應用處理器
1108‧‧‧快取控制
1109‧‧‧匯流排介面單元
1110‧‧‧L2快取
1111‧‧‧互連
1130‧‧‧用戶身分模組
1135‧‧‧引導ROM
1120‧‧‧視頻編碼解碼器
1125‧‧‧視頻介面
1145‧‧‧快閃控制器
1165‧‧‧快閃
1170‧‧‧藍牙模組
1175‧‧‧3G調變解調器
1200‧‧‧電腦系統
1202‧‧‧處理裝置
1204‧‧‧主記憶體
1206‧‧‧靜態記憶體
1208‧‧‧網路介面裝置
1210‧‧‧視頻顯示裝置
1212‧‧‧字母數字輸入裝置
1214‧‧‧游標控制裝置
1216‧‧‧信號產生裝置
1218‧‧‧資料儲存裝置
1224‧‧‧機器可存取儲存媒體
1226‧‧‧處理邏輯
1230‧‧‧匯流排
本發明將從下文所給定的詳細說明,及從本發明之各種實施例的附圖,而被更完全地瞭解。惟,該等圖式不應被採取來限制特定實施例的揭示,而是應僅用於解說和理解。
第1圖描繪依據本發明實施例之包含處理器的系統單晶片(SoC);第2圖描繪依據本發明實施例之使用b排序以排序儲存在通用暫存器中之位元組的實例;第3圖描繪依據本發明實施例之使用b排序(或n排序)及拉式置換以達成推式資料置換的實例;第4圖係依據本發明實施例之用以執行資料項置換之方法的方塊圖;第5A圖係描繪其中可實施本發明一實施例之包含異質核心的處理器之微架構的方塊圖;第5B圖係描繪依據本發明至少一實施例而被實施之有序管道及暫存器重命名級,無序發出/執行管道的方塊圖;第6圖描繪依據本發明一實施例之用於包含邏輯的處 理器之微架構的方塊圖;第7圖係描繪其中可使用本發明實施例之系統的方塊圖;第8圖係其中可操作本發明實施例之系統的方塊圖;第9圖係其中可操作本發明實施例之系統的方塊圖;第10圖係依據本發明實施例之系統單晶片(SoC)的方塊圖;第11圖係依據本發明的SoC設計之實施例的方塊圖;以及第12圖描繪電腦系統之一實施例的方塊圖。
在一實施例中,第一暫存器及第二暫存器可在位元方面具有相同的長度。例如,資料項及索引可占有相同數目的位元,以及第一暫存器能儲存與被儲存第二暫存器中之索引數目相同數目的資料項。在另一實施例中,第一暫存器及第二暫存器可在位元方面具有不同的長度。例如,資料項可占有比索引更多的位元。因此,為儲存與被儲存第一暫存器中之資料項的數目相同數目的索引於第二暫存器中,第二暫存器之長度可以比第一暫存器更短。
在一實施例中,該等資料項係位元組,各個位元組包含八個位元且反映從0到255之範圍的資料值。該等位元組可被儲存在與處理器相關聯的第一通用暫存器(GPR)中,而各個位元組係儲存在由該暫存器內之位置號碼所識 別的位置處。該位置號碼可以與順序索引值相關聯。例如,64位元GPR可以以第一位元組(位元組索引0)被儲存在位元0至7中,第二位元組(位元組索引1)被儲存在位元8至13中,...,以及第八位元組(位元組索引7)被儲存在位元56至63,而儲存八個位元組。與處理器相關聯的ISA可包含位元組排序指令(在此稱作b排序),當藉由處理器而被執行時,其可依據它們的值(位元組值)而排序儲存在第一GPR中的該等位元組成為有序序列,且儲存該有序位元組序列於該第一GPR中。該b排序的執行亦可產生及儲存從位元組的原始序列映像到有序序列的索引於與該處理器相關聯的第二GPR中。
在另一實施例中,該等資料項係半位元組(亦稱做一半位元組或四位元),各個半位元組包含四個位元且反映從0到15之範圍的資料值。該等半位元組可被儲存在與處理器相關聯的第一通用暫存器(GPR)中,而各個半位元組係儲存在由該暫存器內之位置號碼所識別的位置處。該位置號碼可以與順序索引值相關聯。例如,64位元GPR可以以第一半位元組(半位元組索引0)被儲存在位元0至3中,第二半位元組(半位元組索引1)被儲存在位元4至7中,...,以及第十六半位元組(半位元組索引15)被儲存在位元60至63,而儲存十六個半位元組。與處理器相關聯的ISA可包含半位元組排序指令(在此稱作n排序),當藉由處理器而被執行時,其可依據它們的值(半位元組值)而排序儲存在第一GPR中的該等半位元組成為有序序列, 且儲存該有序半位元組序列於該第一GPR中。該n排序的執行亦可產生及儲存從半位元組的原始序列映像到有序序列的索引於與該處理器相關聯的第二GPR中。
第1圖描繪依據本發明實施例之包含處理器102的系統單晶片(SoC)100。處理器102可包含製作在諸如SoC 100之半導體晶片組上的邏輯電路。處理器102可係中央處理單元(CPU)、圖形處理單元(GPU)、或多核心處理器的處理核心。如第1圖中所描繪,處理器102可包含指令執行管道104及暫存器空間106。管道104可包含多重管道級,且各級包含邏輯電路,其係製造用以執行多級處理中之特定級的操作,該多級處理係用以執行處理器102的指令集架構(ISA)中所指明之指令所需的。在一實施例中,管道104可包含指令提取/解碼級110、資料提取級112、執行級114、及回寫級116。
暫存器空間106係包含與處理器102相關聯之不同類型暫存器的邏輯電路空間。在一實施例中,暫存器空間106可包含通用暫存器108、109,其各包含一定數目(稱作“長度”)的位元,用以儲存由管道104中所執行之指令所處理的資料項。例如,根據實施,暫存器108、109可係64位元、128位元、256位元、或512位元暫存器。暫存器108、109各可儲存一或多個資料項(例如,位元組或半位元組)。在一實施例中,處理器102可係單指令多資料(SIMD)處理器,亦即,處理器102可執行一指令以處理儲存在暫存器108、109中的多個資料項。在一實施例 中,暫存器108、109可係可被使用以儲存暫態資料的通用暫存器。
程式的來源代碼可被編譯成為以與處理器102相關聯之指令集架構(ISA)所界定的一系列機器可執行指令。當處理器102開始執行該等可執行指令時,該等機器可執行指令可被置放在將被順序執行的管道104上。指令提取/解碼級110可檢索所置放在管道104上的指令,且識別與該指令相關聯的識別符。該指令識別符可使所接收之指令與處理器的ISA中所指明之者相關聯。
在ISA中所指明之該等指令可被設計以處理儲存在通用暫存器(GPR)108、109中的資料項。資料提取級112可檢索來自GPR 108之將被處理的資料項(例如,位元組或半位元組)。執行級114可包含用以執行處理器102的ISA中所指明之指令的邏輯電路。
在一實施例中,與執行級114相關聯的邏輯電路可包含多個“執行單元”(或功能單元),各係專用以執行一個個別的指令。由該等執行單元所執行之所有指令的聚集可構成與處理器102相關聯的指令集。在用以處理由資料提取級112所檢索之資料項的指令之執行後,回寫級116可將結果輸出且儲存在GPR 108、109中。
在一實施例中,處理器102的ISA可界定b排序指令,以及處理器102的執行級114可包含b排序執行單元118,其包含ISA中所界定之b排序指令的硬體實施。當使用b排序執行單元118而被執行時,b排序指令可排序 儲存在GPR 108中的位元組(先前藉由資料提取級112而從第一GPR檢索的)成為有序序列,而該序列係依據它們的位元組值而被安排順序。在一實施例中,該有序序列可係以下降值之順序的位元組序列,而導致具有最高值的位元組與第一GPR的最低位置號碼相關聯,以及具有最低值的位元組與第一GPR的最高位置號碼相關聯。在另一實施例中,該有序序列可係以從最低位置號碼到最高位置號碼之上升值順序的位元組序列。藉由b排序執行單元118之b排序指令的執行亦可產生及儲存從位元組的原始序列映像到有序序列的索引第二GPR中。在一實施例中,資料項的原始序列係順序地儲存在第一GPR之資料項位置的序列處。各資料項位置可以與在排序前之識別位元組的位置號碼的索引值(例如,0、1、...、n)相關聯。由於執行b排序而被儲存在第二GPR中的索引映像包含位元組之有序序列的原始位置號碼。因此,執行該b排序的輸出包含第一GPR中之位元組的有序序列,及第二GPR中之對應索引的序列。
該b排序可採取以下格式:b排序GPR1 GPR2,其中GPR1及GPR2係兩個GPR。若GPR1及GPR2係64位元GPR時,則GPR1可儲存8個位元組。回應執行該b排序指令,儲存在GPR1中的該等位元組可被重新排列成為有序序列,以及GPR2可儲存與該有序序列中之該等位元組相關聯的八個索引值。
第2圖描繪依據本發明實施例之使用b排序以排序儲 存在通用暫存器中之位元組的實例。如第2圖中所示,處理器(未顯示)可以與諸如GPR1及GPR2之64位元暫存器的GPR相關聯。該64位元之GPR1或GPR2各可儲存八個位元組。在此實例中,GPR1可儲存具有不同值的八個位元組。該等八個位元組可從位元組位置0到位元組位置7而被儲存在GPR1中,其中各位元組位置號碼係使用以識別個別的一個位元組。該等位元組位置0到7可被對應地以從0到7的連續索引值指派(例如,29、4、122、9、8、33、24、19,從位元組0到位元組7)。各位元組位置包含八個位元。因此,在位元組位置0的第一位元組可占有GPR1的第一個八位元,在位元組位置1的第二位元組可占有GPR1的第二個八位元,等等。b排序指令可以以下格式而與兩個GPR相關聯:b排序GPR1 GPR2,而GPR1係用以儲存將被排序之八個位元組的GPR,且執行b排序的結果可被儲存在GPR1及GPR2中。
請參閱第2圖,回應執行該b排序指令,儲存在GPR1中之該等位元組可依據上升序而被重新排列,亦即,從(29、4、122、9、8、33、24、19)到(4、8、9、19、24、29、33、122)。因此,儲存在GPR1中之位元組的值從GPR1中之最低位置號碼增加到最高位置號碼。儲存在GPR2之中的可係索引映像,其表示原始序列中之位元組與有序序列中之位元組之間的關係。因為用於原始序列中之位元組的該等索引係連續編號(例如,0、1、...、 7),所以儲存在GPR2中的索引映像可係以儲存在GPR1中之有序序列中的其對應位元組之相同順序安排的索引值。因此,在執行b排序後,GPR2可包含(1、4、3、7、6、0、5、2)的索引映像。在替代的實施例中,b排序可重新排列GPR1中的位元組為從(29、4、122、9、8、33、24、19)到(122、33、29、24、19、9、8、4)的下降序,且儲存(2、5、0、6、7、3、4、1)的索引映像於GPR2中。
在一實施例中,執行級114可包含n排序執行單元120,用以對應地執行ISA中所指明的n排序指令。當使用n排序執行單元120而被執行時,n排序指令可排序儲存在GPR 108中的半位元組(先前藉由資料提取級112而從第一GPR檢索的)成為有序序列,而該序列係依據它們的半位元組值而被安排順序。在一實施例中,該有序序列可係以下降值之順序的半位元組序列。在另一實施例中,該有序序列可係以上升值之順序的半位元組序列。n排序指令的執行亦可產生及儲存從半位元組的原始序列映像到有序序列的索引於第二GPR中。在一實施例中,資料項的原始序列係順序地儲存在第一GPR之資料項位置的序列處。各資料項位置可以與索引值(例如,0、1、...、N)相關聯。由於執行n排序而被儲存在第二GPR中的索引映像包含用於有序序列之半位元組的對應索引值。因此,執行該n排序的輸出包含第一GPR中之半位元組的有序序列,及第二GPR中的索引映像。
該n排序可採取以下格式:n排序GPR2 GPR1,其中GPR1、GPR2係GPR。若GPR1、GPR2係64位元GPR時,則GPR1可儲存16個半位元組。回應執行該n排序指令,儲存在GPR1中的該等半位元組可被重新排列成為有序序列,以及GPR2可儲存與該有序序列中之該等半位元組相關聯的索引映像。
因為b排序(或n排序)指令係實施於做為處理器102之一執行單元的邏輯電路中,所以b排序(或n排序)指令的執行可以以比相似之軟體實施更少的處理器週期完成。在一實施例中,b排序(或n排序)的執行可藉由執行單元而以不大於五個處理器週期執行。
在一實施例中,此類別的排序指令(包含b排序及n排序)指令)可被使用以與ISA中所指明的其他指令結合,而有效率地達成新的功能。在一實施例中,該b排序可被使用以轉換在ISA中所界定的拉式置換指令成為推式置換指令,而無需添加對應於該推式置換的執行單元。ISA的一些實施包含拉式資料置換指令(例如,在x86 ISA中的VPERM),其可依據儲存在第三GPR(索引GPR)中的位元組索引映像,而置換儲存在第一GPR(來源GPR)中之資料項的第一排列,成為儲存在第二GPR(目的地GPR)中之資料項的第二排列。與此對比地,推式置換可根據目的地GPR的索引置換而將來自第一GPR的來源資料項推到第二GPR。
相對於該拉式置換,位元組索引映像依照第一GPR 中之資料項的原始位元組位置(或位元組索引),而指明資料項的第二排列。因此,位元組索引映像係來源資料項的索引置換,且處理器可根據位元組索引映像,而藉由從第一GPR拉出資料項以順序地充填第二GPR的位元組位置(例如,從位元組0到位元組7)。例如,在x86 ISA架構中,VPERM指令可採取以下格式:VPERM zimm2、zimm3、zimm1,其中zimm1-zimm3係具有一定長度的GPR,zimm1係使用以儲存將被置換之第一排列中的資料項,zimm2係使用以儲存被置換成為第二排列之生成的資料項,以及zimm3係使用以儲存從第一排列到第二排列的位元組索引映像。因此,可依據儲存在第三GPR(zimm3)的位元組索引映像,而藉由從第一GPR(zimm1)拉出資料項,以順序地充填第二GPR(zimm2)的位元組位置。
在某些情況下,可能需要從第一GPR將來源資料項順序地推到第二GPR。一解決方法可包含分散來源資料項至快取記憶體(L1或L2快取),且然後,執行打包聚集操作以自該快取記憶體讀取至GPR內,而獲得資料項之推式置換的結果。惟,此可能使處理器性能劣化,因為某些架構之設計可能具有受限數目的寫入埠(典型地,僅一個),其可係快取記憶體與GPR間之資料轉移的瓶頸。
在一實施例中,b排序(或n排序)指令可以與已在ISA中界定的拉式置換指令(例如,x86 ISA的VPERM)結合而被使用,以獲得如與第3圖結合所詳細提供的推式置 換功能。為達成此,用於推式置換之目的地GPR的索引置換可被變換成為由拉式置換所使用的位元組索引映像。該變換可藉由在目的地GPR的索引置換上執行b排序(或n排序)指令,而予以達成。
在一實施例中,目的地GPR的索引置換可被儲存在第四GPR(zimm4)中。用於8位元長度之索引的b排序指令(或用於4位元長度之索引的n排序)可被執行以排序儲存在第四GPR中的索引置換,及產生可由第三GPR中之拉式置換指令所使用的位元組索引映像。該拉式置換指令可被接著執行以根據第三GPR中之產生的位元組索引映像,而從來源暫存器拉出資料到第二GPR內。因此,推式資料置換可藉由結合b排序(或n排序)與已在ISA中界定的拉式置換,而予以達成。
第3圖描繪依據本發明實施例之使用b排序(或n排序)及拉式置換以達成推式資料置換的實例。如第3圖中所示,GPR 302可儲存第一排列的資料項(例如,位元組),其需使用儲存在GPR 306中的位元組索引映像而被推到GPR 304。為使用已在ISA中界定的拉式置換指令(例如,VPERM)而達成推式資料置換,可先將用於推式資料置換之儲存在GPR 306中的位元組索引映像轉換成為用於拉式置換的位元組索引映像,且儲存在GPR 308中。此轉換可藉由執行b排序指令以排序儲存在GPR 306中的該等索引如下:b排序(GPR 306)(GPR 308),而予以達成。例如,如第3圖中所示,GPR 306可原本儲存用於推式置 換的索引映像(1、3、0、2)。b排序(GPR 306)(GPR 308)的執行可排序儲存在GPR 306中之索引值成為下降值的有序序列,且儲存用於拉式置換的索引映像(2、0、3、1)於GPR 308中。b排序指令的執行可轉換與推式置換相關聯的索引映像(儲存在GPR 306中),成為與拉式置換相關聯的位元組索引映像(儲存在GPR 308中)。回應執行b排序指令,儲存在GPR 308中的位元組索引映像可被使用以執行拉式置換,而完成資料項的置換。該拉式置換可被執行為:VPERM(GPR 304)(GPR 308)(GPR 302)。因此,資料項儲存GPR 302可被置換並儲存在GPR 304中,用以完成推式資料項置換。
在此方式中,儲存在來源GPR中之資料項的推式置換係藉由再使用已在ISA中指明之現有的拉式VPERM指令,而被實現。
第4圖係依據本發明實施例之用以執行資料項置換之方法400的方塊圖。方法400可藉由處理邏輯而予以執行,該處理邏輯可包含硬體(例如,電路、專用邏輯、可編程邏輯、微代碼、等等)、軟體(諸如在處理裝置、通用電腦系統、或專用機器上運作的指令)、靭體、或其組合。在一實施例中,方法400可部分地藉由如第1圖中所示之處理器102的處理邏輯,而被執行。
為了簡化說明,方法400係描繪及敘述為一系列的動作。惟,依據此發明的動作可以以各種順序及/或同時地發生,以及與並未被呈現及描述於此的其他動作以各種順 序及/或同時地發生。再者,並非全部所說明的動作可依據所揭示之標的物而被執行以實施方法400。此外,熟習本項技藝之該等人士將瞭解及理解的是,方法400可經由狀態圖或事件而被替代地表示為一系列相互關連的狀態。
請參閱第4圖,在402,操作可開始。在404,處理器102可儲存資料項於第一GPR。該等資料項將藉由推式置換而被置換。
在406,處理器102可儲存表示在第三GPR中用以放置該等資料項之目標位置的位置號碼於第二GPR中。
在408,處理器102可執行在處理器之ISA中所界定的排序指令,而依據下降值之順序排序該等位置號碼,且產生索引映像於第四暫存器中。在一實施例中,該排序指令可係b排序指令。在另一實施例中,該排序指令可係n排序指令。
在410,處理器102可執行拉式置換指令(例如,VPERM),用以根據第四暫存器中之索引映像而在第三GPR中產生該等資料項的置換。
第5A圖係描繪依據本發明一實施例之用於處理器500之微架構的方塊圖,其實施包含異質核心的處理裝置。特別地,處理器500描繪依據本發明至少一實施例之將被包含在處理器中的有序架構核心及暫存器重命名邏輯、無序發出/執行邏輯。
處理器500包含耦接至執行引擎單元550的前端單元530,且該二者係耦接至記憶體單元570。處理器500可 包含精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字(VLIW)核心、或混合或替代核心類型。如又另一選項,處理器500可包含諸如例如,網路或通訊核心、壓縮引擎、圖形核心、或其類似者之特殊用途的核心。在另一實施例中,處理器500可係多核心處理器,或可係多核心處理器的一部分。
前端單元530可包含耦接至指令快取單元534的分支預測單元532,該指令快取單元534係耦接至指令轉譯後備緩衝器(TLB)536,該TLB 536係耦接至指令提取單元538,其係耦接至解碼單元540。解碼單元540(亦稱作解碼器)可解碼指令,且產生解碼自、或反射、或衍生自原始指令的一或多個微操作、微代碼登錄點、微指令、其他指令、或其他控制信號,做為輸出。該解碼器540可使用各種不同的機制以實施。合適機制之實例包含查找表、硬體實施、可編程邏輯陣列(PLA)、微代碼僅讀記憶體(ROM)、等等,但不受限制。指令快取單元534被進一步耦接至記憶體單元570。解碼單元540係耦接至執行引擎單元550中的重命名/分配器單元552。
執行引擎單元550可包含耦接至報廢單元554及一組一或多個排程器單元556的重命名/分配器單元552。排程器單元556表示任何數量之不同的排程器,包含保留站(RS)、中央指令窗口、等等。排程器單元556係耦接至實體暫存器檔案單元558。各個實體暫存器檔案單元558表示一或多個實體暫存器檔案,不同的實體暫存器檔案儲存 諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、等等之一或多個不同的資料類型、狀態(例如,指令指標,其係將被執行之下一個指令的位址)、等等。實體暫存器檔案單元558可由報廢單元554所重疊,用以描繪其中暫存器重命名及無序執行可被實施的各種方式(例如,使用重排序緩衝器及報廢暫存器檔案;使用未來檔案,歷史緩衝器,及報廢暫存器檔案;使用暫存器映像及暫存器池;等等)。
在一實施中,處理器500可以與相對於第1圖所描述的處理器102相同。
通常,架構的暫存器可以從處理器的外部或從編程者的角度看得見的。該等暫存器可不受限於任何已知之特殊類型的電路。各種不同類型的暫存器可係合適的,只要它們如本文所描述地儲存及提供資料。合適的暫存器之實例包含,但不受限於專用實體暫存器、使用暫存器重命名的動態分配實體暫存器、專用及動態分配實體暫存器的組合、等等。報廢單元554及實體暫存器檔案單元558係耦接至執行群集560。該執行群集560可包含一組一或多個執行單元562及一組一或多個記憶體存取單元564。執行單元562可執行各種操作(例如,移位、加法、減法、乘法),且可在各種類型的資料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)上操作。
雖然某些實施例可包含專用於特定之功能或功能組的許多執行單元,但其他實施例可包含只有一個執行單元或 多個執行單元,而皆執行所有功能。排程器單元556、實體暫存器檔案單元558、及執行群集560係顯示為可能是複數的,因為某些實施例為某些類型的資料/操作創建個別的管道(例如,純量整數管道、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管道、及/或各具有其擁有的排程器單元、實體暫存器檔案單元、及/或執行群集之記憶體存取管道---且在個別記憶體存取管道的情況中,其中僅此管道的執行群集具有記憶體存取單元564之某些實施例可被實施)。亦應瞭解的是,當個別管道被使用時,該等管道的一或多者可係無序發出/執行的,以及其餘者則係有序的。
記憶體存取單元564之組係耦接至記憶體單元570,其可包含例如,資料預取器580、資料TLB單元572、資料快取單元(DCU)574、及層次2(L2)快取單元576。在一些實施例中,DCU 574亦稱作第一層次資料快取(L1快取)。DCU 574可處置多個未完成的快取失誤,及繼續服務進入的儲存和載入。它亦支援保持快取連貫性。資料TLB單元572係使用以藉由映像虛擬及實體位址空間,而增進虛擬位址轉譯速度的快取。在一代表性的實施例中,記憶體存取單元564可包含載入單元、儲存位址單元、及儲存資料單元,其可被各自耦接至記憶體單元570中的資料TLB單元572。L2快取單元576可被耦接至一或多個其他層次的快取,且最終地,到主記憶體。
在一實施例中,資料預取器580藉由自動地預測程式 將要消耗之資料,而推測性地將資料載入/預取至DCU 574。預取可意指在處理器實際需求資料之前,將儲存在記憶體階層的一記憶體位置(例如,較低層次的快取或記憶體)中之資料轉移至較接近處理器之較高層次的記憶體位置(例如,產生較低的存取潛時)。更特別地,預取可意指在處理器對於將被送回之特定資料發出需求之前,從較低層次的快取或記憶體早期地檢索資料到資料快取及/或預取緩衝器。
處理器500可支援一或多個指令集(例如,x86指令集(具備已添加有較新版本的一些擴充);加州Sunnyvale之MIPS Technologies的MIPS指令集;加州Sunnyvale之ARM控股有限公司的ARM指令集(具有諸如NEON之選項的額外擴充))。
應瞭解的是,核心可以支援多線程(執行兩個或更多個並行的操作或線程組),且可以以包含時間切片多線程、同步多線程(其中單一實體核心提供邏輯核心以供實體核心係同步多線程之線程的各者之用)、或其組合(例如,諸如在Intel®超線程(Hyperthreading)技術中之時間切片提取和解碼及其後的同步多線程)之各種方式,而被做成。
雖然暫存器重命名可就無序執行的情況而被描述,但應瞭解的是,暫存器重命名可在有序架構中被使用。雖然處理器之所描繪的實施例亦可包含個別的指令及資料快取單元以及共享的L2快取單元,但替代的實施例可具有諸 如例如,層次1(L1)內部快取之單一的內部快取以供指令及資料二者之用,或多層次的內部快取。在一些實施例中,系統可包含內部快取及外部快取的組合,該外部快取可係在核心及/或處理器的外部。選擇性地,所有的快取可係在核心及/或處理器的外部。
第5B圖係描繪依據本發明一些實施例之由第5A圖的處理裝置500所實施之有序管道及暫存器重命名級、無序發出/執行管道的方塊圖。在第5B圖中的實線箱描繪有序管道,而虛線箱則描繪暫存器重命名、無序發出/執行管道。在第5B圖中,處理器管道500可包含提取級502、長度解碼級504、解碼級506、分配級508、重命名級510、排程(亦稱作配送或發出)級512、暫存器讀取/記憶體讀取級514、執行級516、回寫/記憶體寫入級518、異常處置級522、及提交級524。在一些實施例中,級502至524的順序可以與所描繪的不同,且並不受限於第5B圖中所示之特定的順序。
第6圖描繪依據本發明一實施例之用於包含混合核心的處理器600之微架構的方塊圖。在一些實施例中,依據一實施例的指令可被實施,用以在具有位元組、字、双字、四字、等等之尺寸的資料元件,以及諸如單及双倍精確度整數及浮點資料類型的資料類型上操作。在一實施例中,有序前端601可係處理器600的一部分,其可提取將被執行的指令及預備稍後將被使用於處理器管道中的指令。
前端601可包含若干單元。在一實施例中,指令預取器626自記憶體提取指令,且饋送該等指令至指令解碼器628,其依序解碼或解譯該等指令。例如,在一實施例中,該解碼器解碼所接收的指令成為被稱做“微指令”或“微操作”(亦稱做微op或uop)之機器可執行的一或多個操作。在其他實施例中,解碼器剖析指令成為操作代碼(opcode)及對應的資料和控制域,其可由微架構所使用以執行依據一實施例的操作。在一實施例中,追踪快取630可取得解碼之微操作(uop)且將它們組合成為微操作(uop)隊列634中的程式有序序列或踪跡,以供執行之用。當追踪快取630遭遇複雜指令時,微代碼ROM 632提供完成該操作所需的微操作(uop)。
一些指令被轉換成為單一微操作,而其他者需要若干微操作以完成全面操作。在一實施例中,若需要超過四個微操作以完成指令時,則解碼器628將存取微代碼ROM 232以執行指令。對於一實施例,指令可被解碼成為少量的微操作以供指令解碼器628的處理之用。在另一實施例中,指令可被儲存在微代碼ROM 632內,以完成操作所需之多個微操作。追踪快取630意指登錄點可編程邏輯陣列(PLA),用以決定正確微指令指標,以供自微代碼ROM 632讀取微代碼序列來完成依據一實施例的一或多個指令之用。在微代碼ROM 632完成用於指令之微操作的排序後,機器的前端201可恢復從追踪快取630提取微操作。
無序執行引擎603係預備用於執行的指令。無序執行 邏輯具有一些緩衝器以解決和重新排序指令的流程,用於當該等指令沿著管道下行且被排程以供執行之用時,使性能最佳化。分配器邏輯分配各微操作為了要執行而需要的機器緩衝器和資源。暫存器重命名邏輯重命名邏輯暫存器至暫存器檔案中的登錄上。該分配器亦分配用於各微操作的登錄於指令排程器(記憶體排程器、快速排程器602、慢/總體浮點排程器604、及簡單浮點排程器606)前面之兩個微操作隊列(一用於記憶體操作以及一用於非記憶體操作)的其中一者中。微操作排程器602、604、606根據其相依之輸入暫存器運算元來源的準備就緒,及該等微操作要完成其操作所需之執行資源的可用性,而決定微操作何時將執行。一實施例的快速排程器602可在主時脈週期的每一半之上排程,而其他的排程器僅可每個主處理器時脈週期排程一次。該等排程器對配送埠仲裁,用以排程用於執行的微操作。
暫存器檔案608、610位於排程器602、604、606與執行區塊611中的執行單元612、614、616、618、620、622、624之間。各暫存器檔案608、610分別用以執行整數及浮點操作。暫存器檔案608、610各可包含旁通網路,其可旁路或發送尚未被寫入至暫存器檔案內之剛剛完成的結果到新的相依之微操作。整數暫存器檔案608及浮點暫存器檔案610亦能與另一者通訊資料。對於一實施例,整數暫存器檔案608被分成兩個個別的暫存器檔案,一暫存器檔案用於低階32位元之資料以及第二暫存器檔 案用於高階32位元之資料。一實施例之浮點暫存器檔案610具有128位元寬的登錄,因為浮點指令典型地具有從64到128位元之寬度的運算元。
執行區塊611包含執行單元612、614、616、618、620、622、624,其中指令被實際執行。此部分可包含暫存器檔案608、610,其儲存微指令需執行的整數及浮點資料運算元值。一實施例之處理器600可包含多個執行單元:位址產生單元(AGU)612、AGU 614、快速ALU 616、快速ALU 618、慢ALU 620、浮點ALU 622、浮點移動單元624。對於一實施例,浮點執行區塊622、624可執行浮點、MMX、SIMD、及SSE,或其他操作。一實施例之浮點ALU 622包含64位元x 64位元浮點除法器,用以執行除法、平方根、及餘數微操作。對於本發明之實施例,包含浮點值的指令可以以浮點硬體處置。
在一實施例中,ALU操作前往高速度ALU執行單元616、618。一實施例之高速度ALU執行單元616、618可以以時脈週期之一半的有效潛時執行快速操作。對於一實施例中,最複雜的整數操作前往慢ALU 620,因為慢ALU 620可包含用於諸如,乘法器、移位、旗標邏輯、及分支處理之長潛時類型操作的整數執行硬體。記憶體載入/儲存操作係藉由AGU 612、614而被執行。對於一實施例,整數ALU 616、618、620係以在64位元資料運算元上執行整數操作的情況描述。在替代的實施例中,ALU 616、618、620可被實施用以支援包含16、32、128、256、等 等之各式各樣的資料位元。同樣地,浮點單元622、624可被實施用以支援具有各種寬度之位元的運算元範圍。對於實施例,浮點單元622、624可以與SIMD及多媒體指令結合,而在128位元寬的緊縮資料運算元上操作。
在一實施例中,微操作排程器602、604、606在父加載已完成執行之前配送相依的操作。當微操作係在處理器600中被推測地排程及執行時,處理器600亦可包含邏輯用以處置記憶體缺失。若在資料快取中之資料載入失誤時,則可在管道中的飛行中具有相依之操作,而留下具有暫時不正確資料的排程器。中繼機制跟踪且重新執行使用不正確資料的指令。僅相依之操作需要被中繼,以及獨立之操作被允許完成。處理器之一實施例的排程器及中繼機制可被設計來捕捉指令序列,以供正文字串比較操作之用。
處理器600亦包含用以依據本發明實施例而實施用於記憶體歧義消除之儲存位址預測的邏輯。在一實施例中,處理器600的執行區塊611可包含儲存位址預測器(未顯示),用以實施用於記憶體歧義消除的儲存位址預測。
“暫存器”之用語可意指板載處理器儲存位置,其可被使用做為用以識別運算元之指令的一部分。換言之,暫存器可係可從處理器之外部使用的該等者(從編程者的角度來看)。惟,實施例的暫存器在意義上可不受限於特殊類型的電路。更確切地說,實施例的暫存器能儲存及提供資料,以及執行在此所敘述的功能。在此所敘述之暫存器 可使用諸如,專用實體暫存器、使用暫存器重命名的動態分配實體暫存器、專用及動態分配實體暫存器的組合、等等之許多不同的技術,而藉由處理器內之電路來加以實施。在一實施例中,整數暫存器儲存32位元的整數資料。一實施例之暫存器檔案亦包含八個多媒體SIMD暫存器,用於緊縮之資料。
對於下文之討論,暫存器被瞭解為用以保持緊縮資料所設計的資料暫存器,諸如以來自加州Santa Clara之英特爾公司(Intel Corporation)的MMX技術所致能之微處理器中的64位元寬之MMXTM暫存器(在一些情況中,亦稱作‘mm’暫存器)。以整數及浮點兩種形式提供之該等MMX暫存器可與伴隨SIMD及SSE指令的緊縮資料元件一起操作。同樣地,與SSE2、SSE3、SSE4、或更高(通常稱作“SSEx”)技術有關的128位元寬之XMM暫存器亦可被使用以保持該等緊縮資料運算元。在一實施例中,在儲存緊縮資料及整數資料中,該等暫存器並不需要區分該兩種資料類型。在一實施例中,整數及浮點係包含在相同的暫存器檔案或不同的暫存器檔案中。再者,在一實施例中,浮點及整數資料可被儲存在不同的暫存器或相同的暫存器中。
現請參閱第7圖,所顯示的係描繪其中可使用本發明實施例之系統700的方塊圖。如第7圖中所示,多處理器系統700係點對點互連系統,且包含經由點對點互連750而被耦接的第一處理器770及第二處理器780。雖然僅以 兩個處理器770、780顯示,但應瞭解的是,本發明之實施例的範疇並未受限於此。在其他實施例中,一或多個額外的處理器可存在於給定的處理器中。在一實施例中,多處理器系統700可實施如本文所敘述的混合核心。
處理器770及780係顯示個別地包含整合的記憶體控制器單元772及782。處理器770亦包含點對點(P-P)介面776及778做為其匯流排控制器單元的一部分;同樣地,第二處理器780包含點對點(P-P)介面786及788。處理器770、780可使用P-P介面電路778、788而經由點對點(P-P)介面750來交換資訊。如第7圖中所示,IMC 772及782可耦接該等處理器至各自的記憶體,亦即,記憶體732及記憶體734,其可係局部附著至各自的處理器之主記憶體的一部分。
處理器770、780可各自使用點對點介面電路776、794、786、798,而經由個別的P-P介面752、754來與晶片組790交換資訊。晶片組790亦可經由高性能圖形介面739而與高性能圖形電路738交換資訊。
共享的快取(未顯示)可被包含在該兩個處理器的處理器中,或外部,而經由P-P互連來與該等處理器連接,使得若處理器係設置成為低功率模式時,任一個或該兩個處理器的局部快取資訊可被儲存在共享的快取中。
晶片組790可經由介面796而被耦接至第一匯流排716。在一實施例中,第一匯流排716可係週邊組件互連(PCI)匯流排、或諸如PCI快捷匯流排或另一個第三代I/O 互連匯流排的匯流排,雖然本發明之範疇並未受限於此。
如第7圖中所示,各種I/O裝置714可被耦接至第一匯流排716,而伴隨有耦接第一匯流排716至第二匯流排720的匯流排橋接器718。在一實施例中,第二匯流排720可係低接腳數(LPC)匯流排。各種裝置可被耦接至第二匯流排720,包含例如,鍵盤及/或滑鼠722、通訊裝置727、及諸如碟片驅動器或其他大容量儲存裝置的儲存單元728,在一實施例中,其可包含指令/代碼及資料730。進一步地,音頻I/O 724可被耦接至第二匯流排720。應注意的是,其他架構係可能的。例如,系統可實施多點匯流排或其他的該架構,以取代第7圖之點對點的架構。
現請參閱第8圖,所顯示的係其中可操作本發明一實施例之系統800的方塊圖。系統800可包含一或多個處理器810、815,其係耦接至圖形記憶體控制器集線器(GMCH)820。額外的處理器815之選項性質係以虛線表示於第8圖中。在一實施例中,處理器810、815實施依據本發明實施例的混合核心。
各處理器810、815可係如上述之電路、積體電路、處理器、及/或矽積體電路的某一個版本。惟,應注意的是,不一樣的是,整合的圖形邏輯及整合的記憶體控制單元可能並不存在於處理器810、815之中。第8圖描繪GMCH 820可被耦接至記憶體840,其可係例如,動態隨機存取記憶體(DRAM)。對於至少一實施例,該DRAM可以與非揮發性快取相關聯。
GMCH 820可係晶片組,或晶片組的一部分。GMCH 820可以與處理器810、815通訊,及控制處理器810、815與記憶體840之間的相互作用。GMCH 820亦可在處理器810、815與系統800的其他元件之間扮演加速匯流排介面的角色。對於至少一實施例,GMCH 820經由諸如前端匯流排(FSB)895之多點匯流排,而與處理器810、815通訊。
再者,GMCH 820係耦接至顯示器845(諸如扁平面板或觸控螢幕顯示器)。GMCH 820可包含整合的圖形加速器。GMCH 820係進一步耦接至輸入/輸出(I/O)控制器集線器(ICH)850,其可被使用以耦接各式各樣的週邊裝置至系統800。例如,在第8圖之實施例中所顯示的是外部圖形裝置860,其可係伴隨有另一個週邊裝置870而被耦接至ICH 850的離散圖形裝置。
選擇性地,額外的或不同的處理器亦可存在於系統800中。例如,額外的處理器815可包含可以與處理器810相同的額外處理器、可係異質的或與處理器810不對稱的額外處理器、加速器(諸如例如,圖形加速器或數位信號處理(DSP)單元)、可場編程閘陣列、或任何其他的處理器。在包含架構、微架構、熱、功率消耗特徵、及其類似者之優點度量的頻譜方面,在處理器810、815之間可具有各種差異。該等差異可有效地表現為處理器810、815之間的不對稱及異質。對於至少一實施例,各種處理器810、815可駐在相同的晶粒封裝中。
現請參閱第9圖,所顯示的係其中可操作本發明實施例之系統900的方塊圖。第9圖描繪處理器970、980。在一實施例中,處理器970、980可實施如上述的混合核心。處理器970、980可各自包含整合的記憶體及I/O控制邏輯(“CL”)972及982,且各自經由點對點(P-P)介面978及988之間的點對點互聯950而彼此相互通訊。如所示地,處理器970、980各自透過個別的P-P介面976至994及986至998,而經由點對點互連952及954來與晶片組990通訊。對於至少一實施例,CL 972、982可包含整合的記憶體控制器單元。CL 972、982可包含I/O控制邏輯。如所描繪地,記憶體932、934係耦接至CL 972、982,且I/O裝置914亦係耦接至控制邏輯972、982。傳統I/O裝置915係經由介面996而被耦接至晶片組990。
實施例可以以許多不同的系統類型實施。第10圖係依據本發明實施例之SoC 1000的方塊圖。虛線箱係在更先進的SoC上之選項特徵。在第10圖中,互連單元1012係耦接至:應用處理器1020,其包含一組一或多個核心1002A-N及共享的快取單元1006;系統代理單元1010;匯流排控制器單元1016;整合的記憶體控制器單元1014;一組一或多個媒體處理器1018,其可包含整合的圖形邏輯1008、用以提供靜像相機及/或攝影機功能的影像處理器1024、用以提供硬體音訊加速的音頻處理器1026、及用以提供視頻編碼/解碼加速的視頻處理器1028;靜態隨機存取記憶體(SRAM)單元1030;直接記憶 體存取(DMA)單元1032;以及用以耦接至一或多個外部顯示器的顯示單元1040。在一實施例中,記憶體模組可包含在整合的記憶體控制器單元1014中。在另一實施例中,記憶體模組可包含在可被使用以存取及/或控制記憶體之SoC 1000的一或多個其他組件中。應用處理器1020可包含儲存位址預測器,用以實施如在本文實施例中所敘述的混合核心。
記憶體階層包含一或多個層次的快取於該等核心內、一組或一或多個共享的快取單元1006、及耦接至該組整合的記憶體控制器單元1014的外部記憶體(未顯示)。該組共享的快取單元1006可包含諸如層次2(L2)、層次3(L3)、層次4(L4)、或其他層次快取之一或多個中間層次的快取,最後層次的快取(LLC),及/或其組合。
在一些實施例中,一或多個核心1002A-N具備多線程的能力。系統代理1010包含協調及操作核心1002A-N的該等組件。系統代理單元1010可包含例如,功率控制單元(PCU)及顯示單元。該PCU可係,或可包含用以調整該等核心1002A-N及該整合的圖形邏輯1008所需的邏輯和組件。該顯示單元係用以驅動一或多個外部連接的顯示器。
在架構及/或指令集方面,該等核心1002A-N可係同質或異質的。例如,某些核心1002A-N可係有序的,而其他者可係無序的。做為另一實施例,兩個或更多個核心1002A-N能執行相同的指令集,而其他者僅能執行該指令 集的子集或不同的指令集。
應用處理器1020可係通用處理器,諸如可販售自加州Santa Clara之英特爾公司(Intel Corporation)的CoreTM i3、i5、i7、2Duo及Quad、XeonTM、ItaniumTM、XScaleTM、或StrongARMTM處理器。選擇性地,應用處理器1020可來自另一個公司,諸如ARM控股有限公司(ARM HoldingsTM)、MIPSTM、等等。應用處理器1020可係特殊目的處理器,諸如例如,網路或通訊處理器、壓縮引擎、圖形處理器、共處理器、嵌入式處理器、或其類似者。應用處理器1020可被實施於一或多個晶片上。應用處理器1020可係使用諸如例如,BiCMOS、CMOS、或NMOS之多個處理技術的任一者之一或多個基板的一部分,或可被實施在使用諸如例如,BiCMOS、CMOS、或NMOS的多個處理技術之任一者的一或多個基板上。
第11圖係依據本發明的系統單晶片(SoC)設計之實施例的方塊圖。做為特定的說明實例,SoC 1100係包含在使用者裝備(UE)中。在一些實施例中,UE意指將由最終使用者所使用以通訊的任何裝置,諸如手持式電話、智慧型手機、平板個人電腦、超薄筆電、具有寬帶轉接器的筆電、或任何其他相似的通訊裝置。UE通常連接到基地台或節點,其在本質上潛在地對應於GSM網路中的行動站(MS)。
在此,SoC 1100包含兩個核心---1106及1107。核心1106及1107可符合諸如,以英特爾架構核心(Intel® Architecture CoreTM)為基礎之處理器、Advanced Micro Devices,Inc.(AMD)處理器、以MIPS為基礎之處理器、以ARM為基礎之處理器設計、或其客戶、以及它們的獲許可之人或採用者的指令集架構。核心1106及1107係耦接至快取控制1108,其係與匯流排介面單元1109及L2快取1110相關聯,用於與系統1100的其他部件通訊。互連1111包含諸如,IOSF、AMBA、或上述其他互連的晶片上互連,其潛在地實施所敘述之發明的一或多個觀點。在一些實施例中,核心1106、1107可實施如在本文之實施例中所敘述的混合核心。
互連1111提供通訊通道至其他組件,諸如用戶身分模組(SIM)1130以與SIM卡介面、引導ROM 1135以保持由核心1106及1107所執行之用以初始化及引導SoC 1100的引導帶碼、SDRAM控制器1140以與外部記憶體(例如,DRAM 1160)介面、快閃控制器1145以與非揮發性記憶體(例如,快閃1165)介面、週邊控制1150(例如,串列週邊介面)以與週邊介面、視頻編碼解碼1120及視頻介面1125以顯示及接收輸入(例如,觸控致能輸入)、GPU 1115以執行圖形相關之計算、等等。任一該等介面皆可結合在此所敘述之發明的觀點。此外,系統1100描繪用於通訊的週邊,諸如藍牙模組1170、3G調變解調器1175、GPS 1180、及Wi-Fi 1185。
第12圖以電腦系統1200的實例形式描繪機器的圖形表示,其中可執行用以致使該機器執行在此所討論之任一 個或多個方法的一組指令。在選擇性的實施例中,該機器可被連接(例如,聯網)到LAN、內聯網、外聯網、或網際網中的其他機器。該機器可操作於客戶--伺服器網路環境中之伺服器或客戶裝置的容量中,或做為點對點(或分佈式)網路環境中的同行機。該機器可係個人電腦(PC)、平板PC、機上盒(STB)、個人數位助理(PDA)、蜂巢式電話、網路家電、伺服器、網路路由器、交換器或橋接器、或能執行指明將由該機器所採取的動作之一組指令(順序的或其他)的任何機器。進一步地,雖然僅描繪單一的機器,但“機器”之用語亦將被視為任何機器的集合,其逐個地或共同地執行用以執行在此所討論之任一個或多個方法的一組(或多組)指令。
電腦系統1200包含處理裝置1202、主記憶體1204(例如,僅讀記憶體(ROM)、快閃記憶體、動態隨機存取記憶體(DRAM)(諸如同步DRAM(SDRAM)或DRAM(RDRAM)、等等)、靜態記憶體1206(例如,快閃記憶體、靜態隨機存取記憶體(SRAM)、等等)、及資料儲存裝置1218,其經由匯流排1230而彼此互相通訊。
處理裝置1202表示諸如微處理器、中央處理單元、或其類似者之一或多個通用處理裝置。更特別地,該處理裝置可係複雜指令集計算(CISC)微處理器、精簡指令集電腦(RISC)微處理器、極長指令字(VLIW)微處理器、或實施其他指令集的處理器、或實施指令集之組合的處理器。處理裝置1202亦可係諸如應用特定積體電路(ASIC)、場可 編程閘陣列(FPGA)、數位信號處理器(DSP)、網路處理器、或其類似者之一或多個特殊用途處理裝置。在一實施例中,處理裝置1202可包含一或多個處理核心。處理裝置1202係組構以執行用以執行在此所討論之操作及步驟的處理邏輯1226。在一實施例中,處理裝置1202係與相對於第1圖所敘述之處理器架構100相同,如在此伴隨本發明之實施例所描述地。
電腦系統1200可進一步包含通訊地耦接至網路1220的網路介面裝置1208。電腦系統1200亦可包含視頻顯示單元1210(例如,液晶顯示器(LCD)或陰極射線管(CRT))、字母數字輸入裝置1212(例如,鍵盤)、游標控制裝置1214(例如,滑鼠)、及信號產生裝置1216(例如,揚聲器)。再者,電腦系統1200可包含圖形處理單元1222、視頻處理單元1228、及音頻處理單元1232。
資料儲存裝置1218可包含機器可存取儲存媒體1224,其中實施諸如,實施如上述之用於記憶體歧義消除的儲存位址預測之在此所描述的功能之任一個或多個方法的軟體1226係儲存於其上。軟體1226亦可完全地或至少部分地駐存在主記憶體1204內,做為指令1226,及/或在處理裝置1202內,做為在藉由電腦系統1200之其執行期間的處理邏輯1226;該主記憶體1204及該處理裝置1202亦構成機器可存取儲存媒體。
該機器可讀取儲存媒體1224亦可被使用以儲存實施諸如,依據本發明實施例所描述之用於混合核心的儲存位 址預測之指令。雖然機器可存取儲存媒體1224係在實例實施例中顯示為單一的媒體,但“機器可存取儲存媒體”之用語應被視為單一媒體或多個媒體(例如,集中式或分佈式資料庫、及/或相關聯的快取和伺服器),而儲存一或多組的指令。“機器可存取儲存媒體”之用語亦將被認為係包含能儲存、編碼、或承載藉由機器之執行的一組指令,且致使該機器執行本發明之任一個或多個方法的任何媒體。從而,“機器可存取儲存媒體”之用語將被認為係包含固態記憶體、及光學和磁性媒體,但不受限制。
以下實例屬於進一步的實施例。實例1係一種處理器,包含第一暫存器,用以在該第一暫存器內之複數個位置處儲存複數個資料項;第二暫存器;以及執行單元,操作地耦接到該第一暫存器及該第二暫存器,該執行單元包含實施排序指令的邏輯電路,用於以資料項值之順序排序被儲存在該第一暫存器中的該複數個資料項,且在該第二暫存器中儲存複數個索引,其中各索引識別與在該排序前被儲存在該第一暫存器中之資料項相關聯的位置。
在實例2中,實例1的標的物可進一步提供的是,該排序指令係位元組排序指令,以及其中該複數個資料項係複數個位元組。
在實例3中,實例1的標的物可進一步提供的是,該排序指令係半位元組排序指令,以及其中該複數個資料項係複數個半位元組。
在實例4中,實例1、2、及3之任一者的標的物可 進一步提供的是,在該第一暫存器內的各位置係與位置號碼相關聯,以及其中該各索引藉由與該位置相關聯的該位置號碼而識別與該資料項相關聯的該位置。
在實例5中,實例1、2、及3之任一者的標的物可進一步提供的是,該複數個索引係以與在該排序後被儲存在該第一暫存器中之該複數個資料項的該順序相關之順序,儲存在該第二暫存器內的複數個位置中。
在實例6中,實例1、2、及3之任一者的標的物可進一步提供的是,該第一暫存器及該第二暫存器係具有相同長度的通用暫存器。
在實例7中,實例1、2、及3之任一者的標的物可進一步提供的是,該第一暫存器及該第二暫存器係具有不同長度的通用暫存器。
在實例8中,實例1、2、及3之任一者的標的物可進一步提供的是,該等資料項值的該順序係上升資料項值或下降資料項值之其中一者的順序。
在實例9中,實例1、2、及3之任一者的標的物可進一步提供的是,當執行時,該處理器使用該邏輯電路,而以不大於五個處理器週期完成該排序指令。
實例10係一種系統單晶片(SoC),包含第一暫存器,用以在該第一暫存器內之複數個位置處儲存複數個資料項;第二暫存器;以及處理器,操作地耦接到該第一暫存器及該第二暫存器,該處理器包含執行單元,該執行單元包含實施排序指令的邏輯電路,用於以資料項值之順序排 序被儲存在該第一暫存器中的該複數個資料項,且在該第二暫存器中儲存複數個索引,其中各索引識別與在該排序前被儲存在該第一暫存器中之資料項相關聯的位置。
在實例11中,實例10的標的物可進一步提供的是,該排序指令係位元組排序指令,以及其中該複數個資料項係複數個位元組。
在實例12中,實例10的標的物可進一步提供的是,該排序指令係半位元組排序指令,以及其中該複數個資料項係複數個半位元組。
在實例13中,實例10、11、及12之任一者的標的物可進一步提供的是,在該第一暫存器內的各位置係與位置號碼相關聯,以及其中該各索引藉由與該位置相關聯的該位置號碼而識別與該資料項相關聯的該位置。
在實例14中,實例10、11、及12之任一者的標的物可進一步提供的是,該複數個索引係以與在該排序後被儲存在該第一暫存器中之該複數個資料項的該順序相關之順序,儲存在該第二暫存器內的複數個位置中。
在實例15中,實例10、11、及12之任一者的標的物可進一步提供的是,該第一暫存器及該第二暫存器係具有相同長度的通用暫存器。
在實例16中,實例10、11、及12之任一者的標的物可進一步提供的是,該第一暫存器及該第二暫存器係具有不同長度的通用暫存器。
在實例17中,實例10、11、及12之任一者的標的 物可進一步提供的是,該等資料項值的該順序係上升資料項值或下降資料項值之其中一者的順序。
在實例18中,實例10、11、及12之任一者的標的物可進一步提供的是,當執行時,該處理器使用該邏輯電路,而以不大於五個處理器週期完成該排序指令。
實例19係一種方法,包含在與處理器相關聯的第一暫存器中儲存複數個資料項;在第二暫存器中儲存複數個位置號碼,該複數個位置號碼識別第三暫存器內之用以儲存該複數個資料項的目標位置;執行排序指令,用以排序該複數個位置號碼成為下降值的順序,且在第四暫存器中儲存複數個索引,其中各索引識別具有在該排序前被儲存在該第二暫存器中之位置號碼的位置;以及執行置換指令,用以根據被儲存在該第四暫存器中的該複數個索引,而產生將被儲存在第三暫存器中之該複數個資料項的置換。
在實例20中,實例19的標的物可進一步提供的是,該排序指令係實施做為該處理器的第一執行單元,以及其中該置換指令係實施做為該處理器的第二執行單元。
實例21係一種設備,包含用以執行實例19及20之任一者的標的物之裝置。
實例22係一種機器可讀取之非暫時性媒體,具有儲存於其上的程式代碼,當被執行時,其執行包含以下之操作:在與處理器相關聯的第一暫存器中儲存複數個資料項;在第二暫存器中儲存複數個位置號碼,該複數個位置 號碼識別第三暫存器內之用以儲存該複數個資料項的目標位置;執行排序指令,用以排序該複數個位置號碼成為下降值的順序,且在第四暫存器中儲存複數個索引,其中各索引識別具有在該排序前被儲存在該第二暫存器中之位置號碼的位置;以及執行置換指令,用以根據被儲存在該第四暫存器中的該複數個索引,而產生將被儲存在第三暫存器中之該複數個資料項的置換。
在實例23中,實例22的標的物可進一步提供的是,該排序指令係實施做為該處理器的第一執行單元,以及其中該置換指令係實施做為該處理器的第二執行單元。
雖然本發明已相對於有限數量的實施例而予以描述,但熟習本項技藝之該等人士將從該處理解到許許多多的修正例和變化例。所打算的是,附錄之申請專利範圍涵蓋落在本發明之真正精神及範疇的所有該等修正例和變化例。
設計可經過從創作至模擬到製造的各種階段。代表設計的資料可以以許多方式表示。首先,因為可用於模擬,所以硬體可使用硬體說明語言或另一種功能說明語言來表示。此外,具有邏輯及/或電晶體閘的電路層次模型可在設計處理的一些階段產生。再者,在某些階段的大多數設計可達到資料的層次,其表示硬體模型中之各種裝置的實體安置。在其中使用習知之半導體製造技術的情況中,表示硬體模型之資料可係指明用於被使用以產生積體電路的遮罩之不同遮罩層上的各種特徵之存在或不在的資料。在設計的任何表示中,資料可被儲存在任何形式的機器可讀 取媒體中。記憶體或諸如,碟片之磁性或光學儲存器可係用以儲存資訊的機器可讀取媒體,該資訊係經由被調變或產生以傳送資訊的光或電波所傳送。當傳送指示或承載代碼或設計的電性載波到達電性信號之複製、緩衝、或重傳被執行的程度時,則可做成新的拷貝。因此,通訊提供者或網路提供者可使用本發明實施例之技術,而在有形的機器可讀取媒體上至少暫時地儲存諸如,被編碼成為載波之資訊的物件。
如在此所使用之模組意指硬體、軟體、及/或靭體的任何組合。例如,模組包含與非暫時性媒體相關聯之諸如,微控制器的硬體,用以儲存適合於由該微控制器所執行的代碼。因此,引用模組,在一實施例中,意指硬體,其係特別組構用以辨識及/或執行將被保持在非暫時性媒體上的代碼。再者,在另一實施例中,模組的使用意指包含代碼的非暫時性媒體,其係特別適合於由微控制器所執行,以執行預定的操作。且因為可被推斷,所以在又一實施例中,模組(在此實例中)之用語可意指微控制器及非暫時性媒體的組合。往往所描繪為單獨的模組邊界通常會變化且可能會重疊。例如,第一及第二模組可共享硬體、軟體、及/或靭體的任何組合,而潛在地保留一些獨立的硬體、軟體、或靭體。在一實施例中,邏輯之用語的使用包含諸如,電晶體、暫存器、或諸如可編程邏輯裝置之其他硬體的硬體。
在一實施例中,‘組構用以’之片語的使用意指安 排、放在一起、製造、提供販售、輸入、及/或設計設備、硬體、邏輯、或元件,用以執行所指定或所決定的任務。在此實例中,不操作的設備或其元件仍係‘組構用以’執行所指定的任務,若該設備或其元件被設計、耦接、及/或互連以執行該指定之任務的話。做為純粹描繪性之實例,邏輯閘可在操作期間提供0或1。惟,‘組構用以’提供致能信號至時鐘的邏輯閘並不包含可提供1或0之每個可能的邏輯閘。相反地,該邏輯閘被以某種方式耦接,使得在操作期間,1或0輸出係用以致能時鐘。請再次注意的是,‘組構用以’之用語的使用並不需要操作,而是取代地專注於設備、硬體、及/或元件的潛在狀態,其中在該潛在狀態中,該設備、硬體、及/或元件係設計用以當該設備、硬體、及/或元件操作時,執行特殊之任務。
再者,在一實施例中之‘用以’、‘能’、或‘可操作用以’之片語的使用意指用於以特定方式致能設備、邏輯、硬體、及/或元件的使用之方式而被設計的一些設備、邏輯、硬體、及/或元件。如上述,應注意的是,在一實施例中之‘用以’、‘能’、或‘可操作用以’的使用意指設備、邏輯、硬體、及/或元件的潛在狀態,其中該設備、邏輯、硬體、及/或元件並不操作,但係用於以特定方式致能設備的使用之方式而被設計。
如在此所使用的值包含數字、狀態、邏輯狀態、或二進制邏輯狀態之任何已知的表示。邏輯位準、邏輯值、或 邏輯的值之使用往往亦被稱作1及0,其簡單地表示二進制邏輯狀態。例如,1意指高邏輯位準,以及0意指低邏輯位準。在一實施例中,諸如電晶體或快閃胞的儲存胞能保持單一邏輯值或多個邏輯值。然而,已使用電腦系統中之值的其他表示。例如,十進制數十亦可表示為二進制值1010及十六進制字母A。因此,值包含能在電腦系統中被保持之資訊的任何表示。
而且,狀態可藉由值或值的部分而予以表示。例如,諸如邏輯1的第一值可表示缺設或初始狀態,而諸如邏輯0的第二值可表示非缺設狀態。此外,在一實施例中之重設及設定分別意指缺設及更新的值或狀態。例如,缺設值可能包含高邏輯值,亦即,重設,而更新值可能包含低邏輯值,亦即,設定。應注意的是,值的任何組合可用以表示任何數量的狀態。
如上所述之方法、硬體、軟體、靭體、或代碼的實施例,可經由儲存在可由處理元件執行之機器可存取、機器可讀取、電腦可存取、或電腦可讀取媒體上的指令或代碼,而予以執行。非暫時性機器可存取/可讀取媒體包含,以諸如,電腦或電子系統之機器可讀取形式提供(亦即,儲存及/或傳送)資訊的機制。例如,非暫時性機器可存取媒體包含隨機存取記憶體(RAM),諸如靜態RAM(SRAM)或動態RAM(DRAM);ROM;磁性或光學儲存媒體;快閃記憶體裝置;電性儲存裝置;光學儲存裝置;聲學儲存裝置;用以保持從暫時性(傳播的)信號(例如,載 波、紅外線信號、數位信號、等等)所接收的資訊之其他形式的儲存裝置,其係與可從該處接收資訊的非暫時性媒體有所區別。
使用以編程用以執行本發明實施例之邏輯的指令可被儲存在系統中之諸如,DRAM、快取、快閃記憶體、或其他儲存器的記憶體內。再者,該等指令可經由網路或利用其他的電腦可讀取媒體而被分佈。因此,機器可讀取媒體可包含用於以機器(例如,電腦)可讀取形式儲存或傳送資訊的任何機制,但不受限於光盤、光碟、小型碟片僅讀記憶體(CD-ROM)、及磁光碟、僅讀記憶體(ROM)、隨機存取記憶體(RAM)、可拭除可編程僅讀記憶體(EPROM)、電子拭除式可編程僅讀記憶體(EEPROM)、磁性或光學卡片、快閃記憶體、或有形的機器可讀取儲存器,而在經由電性、光學、聲學或、或其他形式的傳播信號(例如,載波、紅外線信號、數位信號、等等)之網際網路上的資訊傳輸中被使用。因而,電腦可讀取媒體包含適用於以機器(例如,電腦)可讀取形式儲存或傳送電子指令或資訊之任何類型之有形的機器可讀取媒體。
在本說明書中對“一實施例”或“實施例”的引用意味的是,結合該實施例所描述之特殊的特性、結構、或特徵係包含在本發明的至少一實施例中。因此,在本說明書中之各處的“在一實施例中”或“在實施例中”之片語的出現無需一定要全部意指相同的實施例。再者,特殊的特性、結構、或特徵可在一或多個實施例中以任何合適的方 式結合。
在上述說明書中,詳細說明已參照特定的代表性實施例而被給定。惟,將呈明顯的是,種種修正和改變可對該處做成,而不會背離如附錄申請專利範圍所陳述之本發明較廣義的精神及範疇。從而,說明書和圖式應被視為描繪性之意義而非限制性的意義。而且,上述實施例及其他例示文字的使用無需一定要意指相同的實施例或相同的實例,而是可表示不同的及獨特的實施例,以及可能地,相同的實施例。
302,---,308:通用暫存器

Claims (20)

  1. 一種用於排序的處理器,包含:第一暫存器,用以在該第一暫存器內之複數個位置處儲存複數個資料項;第二暫存器,用以儲存複數個位置號碼,該複數個位置號碼識別第三暫存器內之用以儲存該複數個資料項的目標位置;以及執行單元,操作地耦接到該第一暫存器及該第二暫存器,該執行單元包含邏輯電路,用於:執行排序指令,用以排序該複數個位置號碼成為下降值或上升值的順序,且在第四暫存器中儲存複數個索引,其中各索引識別具有在該排序前被儲存在該第二暫存器中之位置號碼的位置;且執行置換指令,用以根據被儲存在該第四暫存器中的該複數個索引,而產生將被儲存在第三暫存器中之該複數個資料項的置換。
  2. 如申請專利範圍第1項之處理器,其中該排序指令係位元組排序指令,以及其中該複數個資料項係複數個位元組。
  3. 如申請專利範圍第1項之處理器,其中該排序指令係半位元組排序指令,以及其中該複數個資料項係複數個半位元組。
  4. 如申請專利範圍第1項之處理器,其中在該第一暫存器內的各位置係與位置號碼相關聯,以及其中該各索 引藉由與該位置相關聯的該位置號碼而識別與該資料項相關聯的該位置。
  5. 如申請專利範圍第1項之處理器,其中該複數個索引係以與在該排序後被儲存在該第一暫存器中之該複數個資料項的該順序相關之順序,儲存在該第二暫存器內的複數個位置中。
  6. 如申請專利範圍第1項之處理器,其中該第一暫存器及該第二暫存器係具有相同長度的通用暫存器。
  7. 如申請專利範圍第1項之處理器,其中該第一暫存器及該第二暫存器係具有不同長度的通用暫存器。
  8. 如申請專利範圍第1項之處理器,其中該等資料項值的該順序係上升資料項值或下降資料項值之其中一者的順序。
  9. 如申請專利範圍第1項之處理器,其中當執行時,該處理器使用該邏輯電路,而以不大於五個處理器週期完成該排序指令。
  10. 一種用於排序的系統,包含:第一暫存器,用以在該第一暫存器內之複數個位置處儲存複數個資料項;第二暫存器,用以儲存複數個位置號碼,該複數個位置號碼識別第三暫存器內之用以儲存該複數個資料項的目標位置;以及處理器,操作地耦接到該第一暫存器及該第二暫存器,該處理器包含執行單元,該執行單元包含邏輯電路, 用於:執行排序指令,用以排序該複數個位置號碼成為下降值或上升值的順序,且在第四暫存器中儲存複數個索引,其中各索引識別具有在該排序前被儲存在該第二暫存器中之位置號碼的位置;且執行置換指令,用以根據被儲存在該第四暫存器中的該複數個索引,而產生將被儲存在第三暫存器中之該複數個資料項的置換。
  11. 如申請專利範圍第10項之系統,其中該排序指令係位元組排序指令,以及其中該複數個資料項係複數個位元組。
  12. 如申請專利範圍第10項之系統,其中該排序指令係半位元組排序指令,以及其中該複數個資料項係複數個半位元組。
  13. 如申請專利範圍第10項之系統,其中在該第一暫存器內的各位置係與位置號碼相關聯,以及其中該各索引藉由與該位置相關聯的該位置號碼而識別與該資料項相關聯的該位置。
  14. 如申請專利範圍第10項之系統,其中該複數個索引係以與在該排序後被儲存在該第一暫存器中之該複數個資料項的該順序相關之順序,儲存在該第二暫存器內的複數個位置中。
  15. 如申請專利範圍第10項之系統,其中該第一暫存器及該第二暫存器係具有相同長度的通用暫存器。
  16. 如申請專利範圍第10項之系統,其中該第一暫存器及該第二暫存器係具有不同長度的通用暫存器。
  17. 如申請專利範圍第10項之系統,其中該等資料項值的該順序係上升資料項值或下降資料項值之其中一者的順序。
  18. 如申請專利範圍第10項之系統,其中當執行時,該處理器使用該邏輯電路,而以不大於五個處理器週期完成該排序指令。
  19. 一種用於排序的方法,包含:在與處理器相關聯的第一暫存器中儲存複數個資料項;在第二暫存器中儲存複數個位置號碼,該複數個位置號碼識別第三暫存器內之用以儲存該複數個資料項的目標位置;執行排序指令,用以排序該複數個位置號碼成為下降值或上升值的順序,且在第四暫存器中儲存複數個索引,其中各索引識別具有在該排序前被儲存在該第二暫存器中之位置號碼的位置;以及執行置換指令,用以根據被儲存在該第四暫存器中的該複數個索引,而產生將被儲存在第三暫存器中之該複數個資料項的置換。
  20. 如申請專利範圍第19項之方法,其中該排序指令係實施做為該處理器的第一執行單元,以及其中該置換指令係實施做為該處理器的第二執行單元。
TW105138124A 2015-12-23 2016-11-21 用於排序的處理器、系統和方法 TWI725077B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/757,609 2015-12-23
US14/757,609 US9996361B2 (en) 2015-12-23 2015-12-23 Byte and nibble sort instructions that produce sorted destination register and destination index mapping

Publications (2)

Publication Number Publication Date
TW201732557A TW201732557A (zh) 2017-09-16
TWI725077B true TWI725077B (zh) 2021-04-21

Family

ID=59086561

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105138124A TWI725077B (zh) 2015-12-23 2016-11-21 用於排序的處理器、系統和方法

Country Status (5)

Country Link
US (2) US9996361B2 (zh)
EP (1) EP3394731A4 (zh)
CN (1) CN108475193B (zh)
TW (1) TWI725077B (zh)
WO (1) WO2017112314A1 (zh)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8218847B2 (en) 2008-06-06 2012-07-10 Superdimension, Ltd. Hybrid registration method
US11106462B2 (en) * 2019-05-24 2021-08-31 Texas Instruments Incorporated Method and apparatus for vector sorting
US9606803B2 (en) 2013-07-15 2017-03-28 Texas Instruments Incorporated Highly integrated scalable, flexible DSP megamodule architecture
US9603668B2 (en) 2014-07-02 2017-03-28 Covidien Lp Dynamic 3D lung map view for tool navigation inside the lung
US9633431B2 (en) 2014-07-02 2017-04-25 Covidien Lp Fluoroscopic pose estimation
US9986983B2 (en) 2014-10-31 2018-06-05 Covidien Lp Computed tomography enhanced fluoroscopic system, device, and method of utilizing the same
US10702226B2 (en) 2015-08-06 2020-07-07 Covidien Lp System and method for local three dimensional volume reconstruction using a standard fluoroscope
US10716525B2 (en) 2015-08-06 2020-07-21 Covidien Lp System and method for navigating to target and performing procedure on target utilizing fluoroscopic-based local three dimensional volume reconstruction
US10674982B2 (en) 2015-08-06 2020-06-09 Covidien Lp System and method for local three dimensional volume reconstruction using a standard fluoroscope
US10261790B2 (en) * 2016-03-31 2019-04-16 Intel Corporation Memory copy instructions, processors, methods, and systems
US10191744B2 (en) * 2016-07-01 2019-01-29 Intel Corporation Apparatuses, methods, and systems for element sorting of vectors
US11793579B2 (en) 2017-02-22 2023-10-24 Covidien Lp Integration of multiple data sources for localization and navigation
US10699448B2 (en) 2017-06-29 2020-06-30 Covidien Lp System and method for identifying, marking and navigating to a target using real time two dimensional fluoroscopic data
EP3694412A4 (en) 2017-10-10 2021-08-18 Covidien LP SYSTEM AND METHOD FOR IDENTIFYING AND MARKING A TARGET IN A THREE-DIMENSIONAL FLUOROSCOPIC RECONSTRUCTION
US10930064B2 (en) 2018-02-08 2021-02-23 Covidien Lp Imaging reconstruction system and method
US10893842B2 (en) 2018-02-08 2021-01-19 Covidien Lp System and method for pose estimation of an imaging device and for determining the location of a medical device with respect to a target
US10905498B2 (en) 2018-02-08 2021-02-02 Covidien Lp System and method for catheter detection in fluoroscopic images and updating displayed position of catheter
US11705238B2 (en) 2018-07-26 2023-07-18 Covidien Lp Systems and methods for providing assistance during surgery
US11071591B2 (en) 2018-07-26 2021-07-27 Covidien Lp Modeling a collapsed lung using CT data
US20200050452A1 (en) * 2018-08-11 2020-02-13 Intel Corporation Systems, apparatuses, and methods for generating an index by sort order and reordering elements based on sort order
US11944388B2 (en) 2018-09-28 2024-04-02 Covidien Lp Systems and methods for magnetic interference correction
US10922080B2 (en) * 2018-09-29 2021-02-16 Intel Corporation Systems and methods for performing vector max/min instructions that also generate index values
US10831478B2 (en) 2018-11-06 2020-11-10 International Business Machines Corporation Sort and merge instruction for a general-purpose processor
US10831502B2 (en) 2018-11-06 2020-11-10 International Business Machines Corporation Migration of partially completed instructions
US10831503B2 (en) 2018-11-06 2020-11-10 International Business Machines Corporation Saving and restoring machine state between multiple executions of an instruction
US11877806B2 (en) 2018-12-06 2024-01-23 Covidien Lp Deformable registration of computer-generated airway models to airway trees
US11045075B2 (en) 2018-12-10 2021-06-29 Covidien Lp System and method for generating a three-dimensional model of a surgical site
US11617493B2 (en) 2018-12-13 2023-04-04 Covidien Lp Thoracic imaging, distance measuring, surgical awareness, and notification system and method
US11801113B2 (en) 2018-12-13 2023-10-31 Covidien Lp Thoracic imaging, distance measuring, and notification system and method
US11357593B2 (en) 2019-01-10 2022-06-14 Covidien Lp Endoscopic imaging with augmented parallax
US11625825B2 (en) 2019-01-30 2023-04-11 Covidien Lp Method for displaying tumor location within endoscopic images
US11925333B2 (en) 2019-02-01 2024-03-12 Covidien Lp System for fluoroscopic tracking of a catheter to update the relative position of a target and the catheter in a 3D model of a luminal network
US11564751B2 (en) 2019-02-01 2023-01-31 Covidien Lp Systems and methods for visualizing navigation of medical devices relative to targets
US11744643B2 (en) 2019-02-04 2023-09-05 Covidien Lp Systems and methods facilitating pre-operative prediction of post-operative tissue function
US11819285B2 (en) 2019-04-05 2023-11-21 Covidien Lp Magnetic interference detection systems and methods
US11269173B2 (en) 2019-08-19 2022-03-08 Covidien Lp Systems and methods for displaying medical video images and/or medical 3D models
US12059281B2 (en) 2019-08-19 2024-08-13 Covidien Lp Systems and methods of fluoro-CT imaging for initial registration
US11864935B2 (en) 2019-09-09 2024-01-09 Covidien Lp Systems and methods for pose estimation of a fluoroscopic imaging device and for three-dimensional imaging of body structures
US11931111B2 (en) 2019-09-09 2024-03-19 Covidien Lp Systems and methods for providing surgical guidance
US11627924B2 (en) 2019-09-24 2023-04-18 Covidien Lp Systems and methods for image-guided navigation of percutaneously-inserted devices
US11847730B2 (en) 2020-01-24 2023-12-19 Covidien Lp Orientation detection in fluoroscopic images
US11380060B2 (en) 2020-01-24 2022-07-05 Covidien Lp System and method for linking a segmentation graph to volumetric data
US12064191B2 (en) 2020-06-03 2024-08-20 Covidien Lp Surgical tool navigation using sensor fusion
US11950950B2 (en) 2020-07-24 2024-04-09 Covidien Lp Zoom detection and fluoroscope movement detection for target overlay

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100338570C (zh) * 2002-10-25 2007-09-19 英特尔公司 用于数据的并行右移位合并的方法和装置
US20090254718A1 (en) * 2007-10-31 2009-10-08 Texas Instruments Incorporated Local Memories with Permutation Functionality for Digital Signal Processors
US20130097187A1 (en) * 2011-10-18 2013-04-18 Qualcomm Incorporated Determining Top N or Bottom N Data Values and Positions
US20150277912A1 (en) * 2014-03-28 2015-10-01 Intel Corporation Sort acceleration processors, methods, systems, and instructions

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6990552B2 (en) * 2002-10-31 2006-01-24 Mosaid Technologies, Inc. Sorting method and apparatus using a CAM
US7191318B2 (en) 2002-12-12 2007-03-13 Alacritech, Inc. Native copy instruction for file-access processor with copy-rule-based validation
US7725678B2 (en) 2005-02-17 2010-05-25 Texas Instruments Incorporated Method and apparatus for producing an index vector for use in performing a vector permute operation
US9069547B2 (en) * 2006-09-22 2015-06-30 Intel Corporation Instruction and logic for processing text strings
CN103827813B (zh) * 2011-09-26 2016-09-21 英特尔公司 用于提供向量分散操作和聚集操作功能的指令和逻辑
US10157061B2 (en) * 2011-12-22 2018-12-18 Intel Corporation Instructions for storing in general purpose registers one of two scalar constants based on the contents of vector write masks
CN104025038A (zh) * 2011-12-23 2014-09-03 英特尔公司 用于执行置换操作的装置和方法
US10037205B2 (en) * 2011-12-23 2018-07-31 Intel Corporation Instruction and logic to provide vector blend and permute functionality
US9672044B2 (en) * 2012-08-01 2017-06-06 Nxp Usa, Inc. Space efficient checkpoint facility and technique for processor with integrally indexed register mapping and free-list arrays
US20140189322A1 (en) * 2012-12-28 2014-07-03 Elmoustapha Ould-Ahmed-Vall Systems, Apparatuses, and Methods for Masking Usage Counting
CN104991869B (zh) * 2015-07-31 2017-11-10 成都腾悦科技有限公司 一种微处理器存储管理方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100338570C (zh) * 2002-10-25 2007-09-19 英特尔公司 用于数据的并行右移位合并的方法和装置
US20090254718A1 (en) * 2007-10-31 2009-10-08 Texas Instruments Incorporated Local Memories with Permutation Functionality for Digital Signal Processors
US20130097187A1 (en) * 2011-10-18 2013-04-18 Qualcomm Incorporated Determining Top N or Bottom N Data Values and Positions
US20150277912A1 (en) * 2014-03-28 2015-10-01 Intel Corporation Sort acceleration processors, methods, systems, and instructions

Also Published As

Publication number Publication date
CN108475193B (zh) 2023-12-19
US9996361B2 (en) 2018-06-12
US10635448B2 (en) 2020-04-28
TW201732557A (zh) 2017-09-16
US20170185415A1 (en) 2017-06-29
WO2017112314A1 (en) 2017-06-29
EP3394731A1 (en) 2018-10-31
EP3394731A4 (en) 2019-11-20
CN108475193A (zh) 2018-08-31
US20190065209A1 (en) 2019-02-28

Similar Documents

Publication Publication Date Title
TWI725077B (zh) 用於排序的處理器、系統和方法
US10572376B2 (en) Memory ordering in acceleration hardware
TWI729019B (zh) 處理裝置、系統單晶片、非暫時性機器可讀儲存媒體及用於排序之方法
US20180232627A1 (en) Variable word length neural network accelerator circuit
TWI578159B (zh) 用以提供基底暫存器交換狀態驗證功能之指令及邏輯
JP2019050039A (ja) ゲノム配列決定および配列比較のためのポピュレーションカウント機能性を提供する方法、装置、命令、およびロジック
US10216516B2 (en) Fused adjacent memory stores
TWI692213B (zh) 用以執行資料壓縮的處理裝置和方法以及系統單晶片(SoC)
TWI720056B (zh) 用於設置多重向量元素操作之指令及邏輯
US10019262B2 (en) Vector store/load instructions for array of structures
TW201337738A (zh) 用以提供向量水平式多數決投票功能之指令與邏輯
TWI515653B (zh) 指令順序執行之指令對、處理器、方法及系統
TW201339964A (zh) 使用控制操作來進行單一指令多重資料(simd)可變移位與旋轉之技術
US10157063B2 (en) Instruction and logic for optimization level aware branch prediction
CN108369508A (zh) 使用处理器指令前缀的二进制转换支持
US20140189322A1 (en) Systems, Apparatuses, and Methods for Masking Usage Counting
JP5798650B2 (ja) 短整数の乗算の数を減らすためのシステム、装置、および方法
TWI733714B (zh) 用以執行共軛置換指令的處理裝置
US20190171461A1 (en) Skip ahead allocation and retirement in dynamic binary translation based out-of-order processors
TWI751990B (zh) 衝突罩生成

Legal Events

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