TWI733714B - 用以執行共軛置換指令的處理裝置 - Google Patents

用以執行共軛置換指令的處理裝置 Download PDF

Info

Publication number
TWI733714B
TWI733714B TW105138125A TW105138125A TWI733714B TW I733714 B TWI733714 B TW I733714B TW 105138125 A TW105138125 A TW 105138125A TW 105138125 A TW105138125 A TW 105138125A TW I733714 B TWI733714 B TW I733714B
Authority
TW
Taiwan
Prior art keywords
register
processor
index
source
vector
Prior art date
Application number
TW105138125A
Other languages
English (en)
Other versions
TW201732558A (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 TW201732558A publication Critical patent/TW201732558A/zh
Application granted granted Critical
Publication of TWI733714B publication Critical patent/TWI733714B/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/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
    • 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/30098Register arrangements
    • 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]

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)
  • Computing Systems (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

敘述了單指令、多資料(SIMD)技術。處理器可包括用以接收複數個來源元素之第一暫存器以及第二暫存器。處理器可在第三暫存器接收置換索引。共軛置換索引具有元素,每一元素相應於來源元素之一者。處理器接著基於相應於來源元素之選擇元素將每一來源元素儲存至第二暫存器中的位置。

Description

用以執行共軛置換指令的處理裝置
本發明係有關於用以執行共軛置換指令的處理裝置。
單指令、多資料(SIMD)架構可在微處理器系統中實施,使得一指令被同時操作在幾個運算元上。SIMD架構利用在一個暫存器或相連記憶體位置內緊縮多個資料元素。利用並行硬體件執行,藉由一個指令對單獨的資料元素執行多個操作,以提高微處理器系統的性能。
100‧‧‧計算系統
102‧‧‧處理器
103‧‧‧快取記憶體
104‧‧‧向量暫存器
105‧‧‧解碼器
106‧‧‧暫存器組
107‧‧‧記憶體介面
108‧‧‧執行單元
109‧‧‧共軛置換指令
110‧‧‧處理器匯流排
120‧‧‧記憶體裝置
210、220、230、240、250‧‧‧方塊
300‧‧‧來源暫存器
301、302、303、304、331、332、333、334‧‧‧元素
310‧‧‧共軛置換索引
311、312、313、314‧‧‧選擇元素
320‧‧‧目的地暫存器
401、402、403、404‧‧‧來源元素
411、412、413、414‧‧‧共軛置換索引
415、416、417、418‧‧‧解多工器(dmux)
421、422、423、424‧‧‧目的地暫存器元素
500‧‧‧處理器管線
502‧‧‧提取階段
504‧‧‧長度解碼階段
506‧‧‧解碼階段
508‧‧‧配置階段
510‧‧‧重新命名階段
512‧‧‧排程階段
514‧‧‧暫存器讀取/記憶體讀取階段
516‧‧‧執行階段
518‧‧‧回寫/記憶體寫入階段
522‧‧‧例外處置階段
524‧‧‧確定階段
530‧‧‧前端單元
532‧‧‧分支預測單元
534‧‧‧指令快取單元
536‧‧‧指令翻譯旁看緩衝器(TLB)
538‧‧‧指令提取單元
540‧‧‧解碼單元
550‧‧‧執行引擎單元
552‧‧‧重新命名/配置器單元
554‧‧‧撤回單元
556‧‧‧排程器單元
558‧‧‧實體暫存器檔單元
560‧‧‧執行叢集
562‧‧‧執行單元
564‧‧‧記憶體存取單元
570‧‧‧記憶體單元
572‧‧‧資料TLB單元
574‧‧‧資料快取單元
576‧‧‧第二階(L2)快取單元
590‧‧‧處理器核心
600‧‧‧處理器
601‧‧‧前端
602‧‧‧快速排程器
603‧‧‧失序執行引擎
604‧‧‧慢/通用浮點排程器
606‧‧‧簡單浮點排程器
608‧‧‧暫存器檔
610‧‧‧暫存器檔
611‧‧‧執行方塊
612‧‧‧位址產生單元(AGU)
614‧‧‧位址產生單元(AGU)
616‧‧‧快速ALU
618‧‧‧快速ALU
620‧‧‧慢ALU
622‧‧‧浮點ALU
624‧‧‧浮點移動單元
626‧‧‧預先提取器
628‧‧‧指令解碼器
630‧‧‧追蹤快取
632‧‧‧微碼ROM
634‧‧‧uop佇列
700‧‧‧多處理器系統
714‧‧‧I/O裝置
715‧‧‧額外處理器
716‧‧‧第一匯流排
718‧‧‧匯流排橋接器
720‧‧‧第二匯流排
722‧‧‧鍵盤及/或滑鼠
724‧‧‧音頻I/O
727‧‧‧通訊裝置
728‧‧‧儲存單元
730‧‧‧指令/碼及資料
732‧‧‧記憶體
734‧‧‧記憶體
738‧‧‧共處理器
739‧‧‧高性能介面
750‧‧‧點對點互連
752、754‧‧‧P-P介面
770‧‧‧第一處理器
772、782‧‧‧積體記憶體控制器(IMC)單元
776、778‧‧‧點對點(P-P)介面
780‧‧‧第二處理器
786、788‧‧‧P-P介面
790‧‧‧晶片組
794、798‧‧‧點對點介面電路
796‧‧‧介面
800‧‧‧第三系統
814‧‧‧I/O裝置
815‧‧‧舊式I/O裝置
832、834‧‧‧記憶體
870、880‧‧‧處理器
872、882‧‧‧控制邏輯CL
890‧‧‧晶片組
900‧‧‧SoC
902‧‧‧互連單元
902A-902N‧‧‧核心
906‧‧‧分享快取單元
908‧‧‧積體圖形邏輯
910‧‧‧系統代理器單元
914‧‧‧積體記憶體控制器單元
916‧‧‧匯流排控制器單元
917‧‧‧應用程式處理器
920‧‧‧媒體處理器
924‧‧‧影像處理器
926‧‧‧音訊處理器
928‧‧‧視訊處理器
930‧‧‧靜態隨機存取記憶體(SRAM)單元
932‧‧‧直接記憶體存取(DMA)單元
940‧‧‧顯示單元
1000‧‧‧SoC
1006‧‧‧核心
1007‧‧‧核心
1008‧‧‧快取控制器
1009‧‧‧匯流排介面單元
1010‧‧‧L2快取
1011‧‧‧互連
1015‧‧‧GPU
1020‧‧‧視訊編碼解碼器
1025‧‧‧視訊介面
1030‧‧‧用戶身份模組(SIM)
1035‧‧‧啟動ROM
1040‧‧‧SDRAM控制器
1045‧‧‧快閃記憶體控制器
1050‧‧‧周邊控制器
1060‧‧‧DRAM
1065‧‧‧快閃記憶體
1070‧‧‧藍芽模組
1075‧‧‧3G數據機
1080‧‧‧GPS
1085‧‧‧WiFi
1100‧‧‧計算系統
1102‧‧‧處理裝置
1104‧‧‧主記憶體
1106‧‧‧靜態記憶體
1108‧‧‧視訊顯示單元
1110‧‧‧文數輸入裝置
1114‧‧‧游標控制裝置
1116‧‧‧訊號產生裝置
1118‧‧‧資料儲存裝置
1120‧‧‧網路
1122‧‧‧圖形處理單元
1124‧‧‧電腦可讀取儲存媒體
1126‧‧‧處理邏輯
1130‧‧‧匯流排
本發明之各個實施例將從下面給出的詳細描述和本發明的各種實施例的附圖中更充分地理解。
圖1為根據一實施例示出實施共軛置換指令之計算系統的方塊圖。
圖2A為根據一實施例示出執行共軛置換指令之方法的圖。
圖2B為根據一實施例示出執行共軛置換指令之方法 的圖。
圖3A為根據一實施例示出單指令、多資料(SIMD)共軛置換指令的範例操作。
圖3B為根據一實施例示出單指令、多資料(SIMD)共軛置換指令的範例操作。
圖4為根據一實施例示出共軛置換指令之硬體實施方式的方塊圖。
圖5A為根據一實施例示出有序管線以及暫存器重新命名階段、失序簽發/執行管線的方塊圖。
圖5B為根據一實施例示出用於實施安全記憶體重新分區之處理器之微架構的方塊圖。
圖6為根據一實施例示出用於包括用以執行安全記憶體重新分區之邏輯電路之處理器之微架構的方塊圖。
圖7為根據本一實施方式之電腦系統的方塊圖。
圖8為根據另一實施方式之電腦系統的方塊圖。
圖9為根據一實施方式之晶片上系統的方塊圖。
圖10為根據一實施方式示出用於計算系統之另一實施方式的方塊圖。
圖11為根據一實施方式示出用於計算系統之另一實施方式的方塊圖。
【發明內容及實施方式】
一些處理器使用向量指令集或單指令、多資料(SIMD)指令集以並行執行多個操作。處理器可以並行 執行多個操作、在相同時間對同一資料或多個資料同時進行操作。向量化是一種用以轉換純量程式的操作,純量程式只能一次對一對運算元操作到可以從單個指令運行多個操作的向量程式。例如,向量化是重寫循環操作以執行SIMD指令的處理,其中取代處理陣列中的單個元素N次,其同時處理陣列的M個元素N/M次。
向量化可包括置換指令,其導致處理器根據置換控制索引將來源元素從來源暫存器儲存至目的地暫存器。例如,處理器之執行單元可基於控制索引中的條目從來源暫存器至目的地暫存器收集元素。SIMD處理器可並行地將來自來源暫存器的元素儲存到目的地暫存器的每一個元素。例如,置換索引可具有各自相應於在目的地暫存器中的素之值的集合。置換索引中的值可以指示來源暫存器中的元素儲存到目的地暫存器的相應元素。因此,處理器可以基於與目的地暫存器的元素相應的置換控制索引中的元素的值,將值儲存到目的地暫存器中的元素。這可以被描述為基於拉的置換,使得處理器根據與目的暫存器的元素相對應的置換索引位置中的條目從來源暫存器拉取元素。例如,控制索引中位置x處的條目可以指向來源暫存器中的元素y來儲存到目的地暫存器的位置x中。
對於某些應用,具有共軛置換指令可能是有益的,使得來源暫存器的元素根據與來源暫存器的元素相關聯的索引中的條目被推送到目的地暫存器。例如,可以使用共軛置換指令而不是基於拉的置換指令更有效地執行暫存器排 序操作。例如,處理器可以藉由比較暫存器的元素以及將它們推送到目的地暫存器比藉由使用附加操作拉取元素更快地對暫存器進行排序。然而,SIMD指令集可以不包括共軛置換指令。因此,為了對緊縮在來源暫存器中的資料執行共軛置換,所述資料可以散佈在記憶體快取中,然後收集回到暫存器中。然而,這些操作可能不利地影響處理器的性能。例如,將資料散佈到快取記憶體可以使處理器寫入具有少量寫入埠的記憶體快取。例如,可能只有一個寫端口可用於一些低級快取。因此,推送置換指令的性能藉由導致對記憶體位置的讀取和寫入指令而不是在處理器暫存器中實現操作,將不利地影響處理器的性能。
本文描述的實施例藉由使用共軛置換運算來消除上述指示的缺陷,以消除在執行指令時來自快取記憶體的分散和收集操作。如本文所描述的,術語共軛置換描述了基於在置換索引中指示的位置將來源暫存器中的條目推送到目的地暫存器。例如,置換索引中的每一個元素可以對應於來源暫存器中的元素。然後,處理器可以將來源暫存器的元素儲存到由置換索引指示的目的地暫存器的元素。在一些實施例中,可以在本地硬體中實現共軛置換指令。例如,SIMD處理器可以藉由將來源暫存器中的每一個元素可操作地耦合到相應的解多工器來在硬體中實現共軛。然後,處理器可以將作為選擇元素的共軛置換索引中的每一個元素耦合到相應的解多工器。解多工器的每一個元素然後可以將來源暫存器的對應元素分配給由共軛置換索引指 示的目的地暫存器的元素。然而,在一些處理器設計中,添加用於基於推送的置換指令的本機硬體實施方式可能在積體電路上消耗大量資源或空間。因此,處理器設計可以不包括基於推送的置換指令的本機硬體實施方式。在一些實施例中,可以將共軛置換指令實現為SIMD處理器中的其他指令的序列。例如,一組指令可以用於將共軛置換索引轉換為置換索引。然後,處理器可以使用置換索引執行置換操作。這組操作導致與目的地暫存器相同的順序中的相同元素,直接在本機硬體中執行共軛置換指令。
圖1為根據一實施例示出實施共軛置換指令之計算系統100的方塊圖。計算系統100由處理器102形成,該處理器102包括用於執行共軛置換指令109的一或多個執行單元108和用於對共軛置換指令109進行解碼的記憶體解碼器105。共軛置換指令109實現根據如本文所描述的一或多個實施例的一或多個特徵。計算系統100可為任何裝置,但是本文描述的各種實施例的描述涉及包括暫存器組106中的一或多個暫存器並且能夠執行一或多個SIMD指令的處理器。
暫存器組103包括一或多個暫存器,用以儲存在執行指令期間由執行單元108使用的資料元素。暫存器組106可以在包括整數暫存器、浮點暫存器、向量暫存器、庫存暫存器、影子暫存器、檢查點暫存器、狀態寄存器和指令指標暫存器的各種暫存器中儲存不同類型的資料。特別地,暫存器組106可包括向量暫存器104,其保存用於藉 由SIMD指令處理的向量的資料。例如,向量暫存器104可儲存用於執行共軛置換指令109的來源元素。
解碼器105可解碼共軛置換指令109,其可指明對向量暫存器104中的來源元素執行的置換。執行單元108然後可以響應於解碼的共軛置換指令109將指令的來源元素儲存到向量暫存器104中。執行單元108然後可以執行共軛置換指令109的操作。例如,共軛置換指令可以執行下面參考圖1B和1C進一步描述的方法。
包括執行整數和浮點運算以及向量運算的邏輯的執行單元108也駐留在處理器102中。應當注意,執行單元可以具有或可以不具有浮點單元。在一個實施例中,處理器102包括用以儲存微碼的微碼唯讀記憶體(ROM),其當被執行時,微碼用以執行某些巨集指令的演算法或處理複雜情境。例如,微碼可包括用執行單元108執行共軛置換指令的一組操作。在一些實施例中,微碼可潛在地可更新的用以處理用於處理器102的邏輯錯誤/修復。
在一些實施例中,執行單元108還可以用在微控制器、嵌入式處理器、圖形裝置、DSP和其他類型的邏輯電路中。在一些實施例中,處理器102包括記憶體介面107並且處理器102耦合至記憶體120。於一實施例中,記憶體介面107可為用於從處理器102至記憶體120之通訊的匯流排協定。記憶體120包括動態隨機存取記憶體(DRAM)裝置、靜態隨機存取記憶體(SRAM)裝置、快閃記憶體裝置或其它記憶體裝置。記憶體120儲存藉由 將由處理器102執行的資料訊號表示的指令和/或資料。例如,記憶體120可以包括電腦程式指令,當由解碼器105編譯和解碼時,指令處理器102執行共軛置換指令109。記憶體120還可以包括用於執行共軛置換指令109、共軛置換索引的來源元素、或者可以從處理器102接收共軛置換指令109的結果。
處理器102經由處理器匯流排110耦合到記憶體120。諸如記憶體控制器集線器(MCH)的系統邏輯晶片可以耦合到處理器匯流排110和記憶體120。MCH可以向記憶體120提供高頻寬記憶體路徑,用於指令和資料儲存以及用於圖形命令、資料和紋理之儲存。MCH可以用於在處理器102、記憶體120和系統100中的其他組件之間引導資料訊號,以及橋接處理器匯流排110、記憶體120和系統I/O之間的資料訊號。MCH可以透過記憶體介面(例如,記憶體介面107)耦合到記憶體120。
在一些實施例中,處理器102可包括內部快取記憶體104。根據架構,處理器102可以具有單個內部快取或多階內部快取。例如,處理器102可以包括1階(L1)內部快取記憶體和2階(L2)內部快取記憶體。在一些實施例中,系統100可以包括內部和外部快取的組合,這取決於特定實施方式和需要。執行單元108可從用於實現共軛置換指令109之內部快取記憶體104存取資料。
圖2A為根據一實施例示出執行在值的陣列上之共軛置換指令之方法的圖。方法可以至少部分地由處理裝置或 處理邏輯執行,該處理裝置或處理邏輯可以包括硬體(例如電路、專用邏輯、可編程邏輯、微碼等)、軟體(例如由處理裝置執行的指令)、韌體或其組合。例如,方法可由參考圖1描述的處理器102執行。
參考圖2A,方法開始於在方塊210中將來源元素的向量儲存到向量暫存器。向量暫存器保存由SIMD指令執行的向量處理的資料。例如,向量暫存器可以包含用於由SIMD指令並行處理的元素。在一些實施例中,另一種暫存器類型可以用於儲存來源資料的元素。來源資料可以是用於分發到目的地暫存器的任何類型的資料。例如,16位元組暫存器可以包含用於分發到目的地暫存器的16個單個位元組元素。在一些其它實施例中,可以使用不同大小的暫存器或資料元素。可以從執行所述方法的處理器外部的記憶體裝置或從內部快取記憶體位置接收來源元素。該方法在方塊220中繼續以將一個共軛置換索引儲存到控制暫存器。共軛置換索引中的每一個條目可以對應於來源向量中在其相應向量中具有相同位置的條目。例如,來源暫存器中的每一個元素可以在相對於來源暫存器的基本位置具有偏移的位置。例如,來源暫存器之最低有效位元組可具有零的偏移,並且每一個更高有效位元組可以具有更高的一個值的偏移值。索引向量可以在相應於來源向量中的元素的位置中具有一組元素。例如,索引向量的每一個元素可以在來源向量之相應的來源元素的位置中,其中相應的元素與個別地基本位置具有相同的偏移。共軛置換索 引中的每一個元素的值可以是指示用於儲存相應的來源向量條目的目的地暫存器位置的整數值。例如,索引向量的每一個元素可以具有指示用於儲存來源暫存器之元素的第二暫存器之位置的整數值。
在方塊230中,方法繼續將來源元素儲存到由共軛置換索引指示的目的地暫存器元素。處理器可以藉由由執行單元執行共軛置換指令來儲存來源元素。來源向量中的每一個元素可以被分佈到由控制向量中的相應選的擇條目識別的目的地暫存器元素。為了進一步解釋,共軛置換索引可以在每一個位置i包括索引[i]的值。來源暫存器可以在每一個位置i包括值source[i]。目的地暫存器可以在每一個位置j處包括值目的地[j]。因此,對於共軛置換指令,處理器可以將儲存在來源暫存器的第i個位置的值複製到目的地暫存器的第j個位置,使得j=索引[i]。
圖2B根據一實施例示出對一組來源資料執行共軛置換操作的另一方法的圖。在圖2B之方法中,處理器藉由將共軛置換索引轉換為置換索引來,然後執行置換指令來實現共軛置換指令的操作。方法可以至少部分地由處理裝置或處理邏輯執行,該處理裝置或處理邏輯可以包括硬體(例如電路、專用邏輯、可編程邏輯、微碼等)、軟體(例如由處理裝置執行的指令)、韌體或其組合。
參照圖2B,方法可以以與上面參照圖2A描述的相同的方式執行方塊210和220的處理。例如,處理器可以向來源暫存器接收一組來源資料元素,並且接收具有用於執 行共軛置換指令的指令的索引。共軛置換索引可以包括複數個元素,其相應於在它們個別的向量中具有相同偏移的來源元素。
在一些實施例中,方法可以包括將索引轉換為具有相應於第二暫存器中的位置的元素並且在方塊240中指示第一暫存器中的位置的第二索引。例如,處理器可以將用於與共軛置換指令一起使用的共軛置換索引轉換為用於與置換指令一起使用的置換索引。為了將共軛置換索引轉換為置換索引,對於共軛置換索引中的每一個元素,方法可以在置換索引中生成條目。例如,對於在位置i處具有值x的共軛置換索引中的條目,所述處理可以在值為i的置換索引的位置x處產生條目。因此,共軛置換索引中的每一個條目可以在索引的位置i處具有索引[i]的值。在置換索引中的每一個條目可在索引的位置j處具有索引2[j]的值。將共軛置換索引轉換為置換索引可以包括在置換索引的位置索引[i]處產生具有值i的置換索引,使得對於共軛置換索引中的每一個位置i,存在用於索引2[索引[i]]等於i。參考圖3B進一步描述將共軛置換索引轉換為置換索引的範例。
繼續到方塊250,方法將來源元素儲存到由第二索引指示的目的地暫存器通道。例如,SIMD處理器可以根據在圖2B的方法的方塊240中產生的置換索引,對來源向量的元素執行基於拉取的置換指令。第二索引中的每一個元素可以在與第二索引的相應於第二暫存器中的位置的基 本位置具有偏移的位置處。第二索引的每一個元素可以具有標識要儲存在目的地暫存器中的相應位置處的來源元素的整數值。處理器可以通過從由所產生的拉取置換索引指示的來源向量中的位置進行收集以將元素儲存到目的地暫存器。例如,轉換的置換索引可以在每一個位置i包括值索引2[i]。來源暫存器可以在每一個位置j處包括值源[j]。目的地暫存器可以在每一個位置k處包括值目的地[k]。因此,對於基於拉取的置換指令,處理器可將等於來源[索引2[i]]的值目的地[i]儲存到目的地暫存器中的每一位置。
圖3A根據實施例示出在SIMD共軛置換指令之執行期間處理器之暫存器之範例。SIMD指令為圖2A中敘述的方法之實施方式的範例。在圖3A之範例中,SIMD指令在具有4元素之記憶體暫存器上操作。在其它實施方式中,SIMD暫存器可包括8元素、16元素或其它元素數目。SIMD指令可包括用以基於在共軛置換索引中的值推送在來源暫存器中的條目至目的地暫存器的共軛置換指令。
來源暫存器300可包括元素301-304之陣列,其儲存用於藉由共軛置換指令分佈的來源資料元素。為了一致性,圖3A和3B中所示的暫存器被示出為左側的最高有效資料元素和右側的最低有效資料元素。例如,元素304中的值表示暫存器中的位置0,元素303中的值表示暫存器中的位置1,元素302中的值表示暫存器中的位置2, 元素301中的值表示暫存器中的位置3。處理器可接收在來源暫存器中的資料、共軛置換索引以及用以執行來自在處理器上操作之軟體之共軛置換指令的指令。
行310是儲存共軛置換索引的輸入值的選擇元素311-314的陣列。例如,共軛置換索引310中的每一個值可以在來源暫存器300中具有在暫存器中具有相同位置的相應元素。置換索引310中的元素可以指示目的地暫存器320中用於儲存來自來源暫存器中的相應元素之值的位置。例如,可以根據共軛置換索引的選擇元素311中的值來分佈元素301中的值、可以根據共軛置換索引的選擇元素312中的值來分佈單元302中的值、可以根據共軛置換索引的選擇元素313中的值來分佈元素303、以及可以根據共軛置換索引的選擇元素314中的值來分佈元素304中的值。
在圖3A的範例中,來源暫存器的最高有效位置中的值為“1”。在共軛置換索引的最高有效位置中的相應值是“2”。處理器將來源暫存器的最高有效位置中的值分佈到由置換索引中的相應值指示的目的地暫存器中的位置。例如,根據共軛置換索引310的最高有效位置中的條目“2”,來源暫存器300的最高有效位置中的值“1”儲存在目的地暫存器320的第二位置。根據置換索引310的第二位置中的條目“1”,來源暫存器300的第二位置中的值“9”被儲存到目的地暫存器320的第一位置。根據置換索引310的第一位置中的條目“3”,來源暫存器300的第一位置中的值“3”被儲存到目的地暫存器320的第三位置。根據置 換索引310的第零位置中的條目“0”,來源暫存器300的第零位置中的值“17”被儲存到目的地暫存器320的第零位置。目的暫存器中的結果表示置換指令的結束,並且可以由處理器使用、可以在處理器上操作的軟體使用,或者可以儲存到記憶體位置。
圖3B根據實施例示出在SIMD共軛置換指令之執行期間處理器之暫存器之範例。共軛置換指令為圖1B中敘述的方法之實施方式的範例。在圖3B之範例中,SIMD指令在具有4元素之記憶體暫存器上操作。在其它實施方式中,SIMD暫存器可包括8元素、16元素或其它元素數目。SIMD指令可包括用以基於在置換索引中的值將條目從來源暫存器拉到目的地暫存器的置換指令。置換索引可以為藉由轉換共軛置換索引為置換索引產生。
來源暫存器300可包括元素301-304之陣列,其儲存用於藉由共軛置換指令分佈的來源資料元素。行310是儲存共軛置換索引的輸入值的選擇元素311-314的陣列。共軛置換索引310中的每一個值可以在來源暫存器300中具有在暫存器中具有相同位置的相應元素。例如,類似於圖3A,共軛置換索引310中的每一個值可以指示在目的地暫存器320中用於儲存在來源暫存器中的相應元素的位置。在圖3B的範例中,來源暫存器的最高有效位置中的值為“1”。在置換索引的最高有效位置中的相應值是“2”。處理器將來源暫存器的最高有效位置中的值分佈到由共軛置換索引中的相應值指示的目的地暫存器中的位置。在一些實 施例中,處理處可不具有共軛置換指令之本機硬體實施方式。在此實施例中,處理器可轉換共軛置換索引為置換索引,並且使用置換索引執行置換指令之操作。例如,可以將共軛置換索引310中的每一個條目轉換為用於由處理器使用的置換索引中的條目。
在圖3B的示例中,來源暫存器300的最高有效位置中的值“1”根據共軛置換索引310的最高有效位置中的條目“2”被儲存在目的地暫存器320的第二位置。然而,為了使用共軛指令執行共軛置換指令之操作,條目被轉換為在置換索引中的條目。在範例中,選擇元素311中的值“2”指示來源暫存器的最高有效位置將被儲存到目的暫存器的第二位置。因此,對於用於實現相同結果的置換指令,置換索引的第二位置應向處理器指示從來源暫存器的第三位置收集值。因此,置換索引的第二位置具有值“3”作為元素332。類似地,在共軛置換索引的第二位置中的條目’1’在置換索引的第一位置中產生’2’的條目、在共軛置換索引的第一位置中的“3”的條目在置換索引的第三位置中產生“1”的條目以及在共軛置換索引的第零位置中的“0”的條目在置換索引的第零位置產生“0”的條目。
處理器可接著根據置換索引330在來源暫存器300之每一個元素上執行置換指令之操作。例如,處理器可以基於在置換索引330之元素331中的條目‘1’拷貝來源暫存器之第一位置的值至目的地暫存器之第三位置。處理器可以基於在置換索引之元素332中的條目‘3’拷貝來源暫存 器之第三位置的值至目的地暫存器之第二位置。處理器可以基於在置換索引之元素333中的條目‘2’拷貝來源暫存器之第二位置的值至目的地暫存器之第一位置。最終,處理器可以基於在置換索引之元素334中的條目‘0’拷貝來源暫存器之第零位置的值至目的地暫存器之第零位置。
類似於圖3A中的結果,再轉換共軛置換索引為置換索引以及執行置換指令之後,目的地暫存器中的結果是相同的。例如,根據置共軛換索引310的第二位置中的條目“1”,來源暫存器300的第二位置中的值“9”被儲存到目的地暫存器320的第一位置。根據共軛置換索引310的第一位置中的條目“3”,來源暫存器300的第一位置中的值“3”被儲存到目的地暫存器320的第三位置。根據共軛置換索引310的第零位置中的條目“0”,來源暫存器300的第零位置中的值“17”被儲存到目的地暫存器320的第零位置。
圖4為示出共軛置換指令之硬體實施方式的方塊圖。在圖4之範例中,SIMD指令在具有4記憶體位置之記憶體暫存器上操作。在其它實施方式中,SIMD暫存器可包括8記憶體位置、16記憶體位置或其它記憶體位置的數目。圖4為示出共軛置換指令之硬體實施方式的一範例。其它實施例可包括用以執行共軛置換指令之不同硬體或不同硬體組態。
在圖4中,來源元素401-404可表示在來源暫存器中的特定位置。例如,來源位置401-404可相同於參考圖3A敘述的單元301-304。具有來源元素401-404之處理器 可實施共軛置換指令,其根據共軛置換索引411-414將在來源暫存器中的每一個元素401-404儲存至目的地暫存器元素421-424。每一個來源元素可耦合至相應的解多工器(dmux)415-418,以判定至目的地暫存器的輸出。例如,來源元素401耦合到相應的解多工器415。
索引選擇元素411-414可表示在控制暫存器中的特定單元。控制暫存器中的元素向處理器指示目的地暫存器中儲存來源暫存器的元素。索引選擇元素411-414可表示例如圖3A中所示的置換索引310中的特定元素311-314。如圖4所示,索引的每一個元素被提供給相應的解多工器以判定每一個來源元素的目的地元素。例如,選擇元素411可以耦合到解多工器415的選擇輸入以判定來源元素401的目的地暫存器位置。
每一個解多工器415-418可被耦合至在目的地暫存器421-424中的每一個通道。例如,解多工器415具有耦合到目的地元素421之輸出、耦合到目的地元素422之輸出、耦合到目的地元素423之輸出以及耦合到目的地元素424之輸出。取決於在選擇輸入處接收來自相應的索引的值,每一個解多工器提供自身相應來源元素至特定目的地元素。因此,每一個解多工器接收作為輸入值之來源資料元素以及作為選擇輸入之置換索引值。解多工器接著提供來源資料元素至由選擇輸入指示的特定目的地存器通道。處理器響應於接收的指令可耦合解多工器至來源暫存器以及目的地暫存器已執行共軛置換指令。
圖5A為根據一實施例示出實施共軛置換指令之處理器核心590之微架構的方塊圖。具體地,根據本發明的至少一個實施例,處理器核心(也簡稱為“處理器”)590描繪了要包括在處理器中的有序架構核心和暫存器重新命名邏輯、失序簽發/執行邏輯。頁面添加和內容拷貝的實施例可以在處理器500中實現。
處理器590包括前端單元530耦合至執行引擎單元550,以及二者係耦合至記憶體單元570。處理器590可包括精簡指令集電腦(RISC)核心、複雜指令集電腦(CISC)核心、極長指令字組(VLIW)核心、或混合或其它核心類型。至於又另一選項,處理器590可包括特用核心,諸如網路或通訊核心、壓縮引擎圖形核心等。於一實施例中,處理器590可為多核心處理器或可為多處理器系統之一部分。
前端單元530包括耦合至一指令快取單元534的分支預測單元532,指令快取單元534係耦合至指令轉譯旁看緩衝器(TLB)536,其係耦合至指令提取單元538,其係耦合至一解碼單元540。解碼單元540(也稱為解碼器)可解碼指令,以及產生一或多個微操作作為輸出,微碼進入點、微指令、其它指令、或其它控制訊號,其係從原先指令解碼,或以其它方式反映、或推衍。解碼器540可使用多種不同機構實施。合適的機制之範例包括但不限制於查找表、硬體實施方式、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等等。指令快取單元534更耦合至記 憶體單元570。解碼單元540係耦合至執行引擎單元550內部的重新命名/配置器單元552。
執行引擎單元550包括重新命名/配置器單元552,耦合至撤回單元554及或多個排程器單元556之集合。排程器單元556表示任何數目的不同排程器,包括保留站(RS)、中央指令窗等。排程器單元556係耦合至實體暫存器檔單元558。每一個實體暫存器檔單元558表示一或多個實體暫存器檔,不同的實體暫存器檔儲存一或多個不同的資料類型,例如純量整數、緊縮浮點、緊縮整數、緊縮浮點、向量整數、向量浮點等,狀態(例如,指令指標,其為要執行的下一個指令)等。實體暫存器檔單元558被退撤回單元554重疊,以說明可以實現暫存器重新命名和失序執行的各種方式(例如,使用重排序緩衝器及撤回暫存器檔、使用未來檔、歷史緩衝器以及撤回暫存器檔;使用暫存器映射和暫存器池等等)。
通常,架構暫存器從處理器外側或從編程者的角度為可見的。暫存器不限於任何已知的特定類型的電路。暫存器各種不同類型是合適的只要它們能夠儲存以及提供如本文敘述的資料。合適的暫存器範例包括但不限制於專用的實體暫存器、使用暫存器重新命名的動態分配的實體暫存器、專用和動態分配的實體暫存器的組合等。撤回單元554和實體暫存器檔單元558耦合到執行叢集560。執行叢集560包括一或多個執行單元562之一集合及一或多個記憶體存取單元564之一集合。執行單元562可對各型資 料(例如純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)執行各項操作(例如移位、加法、減法、乘法)。
雖然有些實施例可包括專用於特定功能或功能集合的多個執行單元,但其它實施例可只包括一個執行單元或多個執行單元,其全部一起執行全部功能。排程器單元556、實體暫存器檔單元558、及執行叢集560顯示為可能為多數,原因在於一些實施例產生針對一些類別的資料/操作的分開管線(例如純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、和/或記憶體存取管線各自具有其本身的排程器單元、實體暫存器檔單元、和/或執行叢集且於分開記憶體存取管線之情況下,實施一些實施例其中只有此一管線的執行叢集具有記憶體存取單元564)。也須瞭解使用分開管線時,此等管線中之一或多者可為失序簽發/執行及有序靜止。
舉幾個例子,記憶體存取單元之集合564耦合至記憶體單元570,其包括資料預提取器580、資料TLB單元572、資料快取單元(DCU)574以及層級2(L2)快取單元576,以命名。在一些實施例中,DCU574也被稱為第一層級資料快取(L1快取)。DCU 574可以處理多個突出的快取失誤並且繼續服務進入的儲存和載入。它還支持維護快取一致性。資料TLB單元572為用來藉由映射虛擬及實體位址空間來改善虛擬位址轉譯速度的快取。在一個具體實施例中,記憶體存取單元564可包括一載入單 元、一儲存位址單元、及一儲存資料單元,各單元係耦合至記憶體單元570中的資料TLB單元572。L2快取單元576可耦合至一或多個其它層級的快取記憶體,及最終耦合至一主記憶體。
於一實施例中,資料預提取器580藉由自動預測程式將要消耗的資料推測地載入/預提取資料至DCU 574。預提取可以指在記憶體層級(例如,叫低層級快取或記憶體)的一記憶體位置(例如,位置)中儲存的資料在處理器實際請求資料之前至更靠近(例如,產生較低的存取延遲)處理器的較高層級記憶體位置。更明確地,預提取可以指在處理器發出對返回的特定資料的需求之前,從較低層級快取/記憶體中的一者之資料快取和/或預提取緩衝器的資料的早期檢索。
處理器590可支持一或多個指令集(例如x86指令集(有些擴延已經增加較新版本);加州昇陽谷的MIPS技術公司之MIPS指令集;加州昇陽谷的ARM控股公司的ARM指令集(具有選擇性額外擴延,諸如霓虹(NEON))。處理器590可支持用以基於置換索引將來源暫存器中的元素分佈到特定目的地暫存器通道的共軛置換指令。
應能理解到核心可支持多執行緒(執行二或多個並列的操作或執行緒集合),且可以多種方式達成支持,包括時間截割多執行緒、同時多執行緒(於該處針對實體核心為同時多執行緒的該等執行緒各自,單一實體核心提供一 邏輯核心)、或其組合(例如時間截割提取與解碼及其後同時多執行緒,諸如Intel® Hyperthreading技術)。
雖然暫存器重新命名係以失序執行脈絡描述,但須瞭解暫存器重新命名可用於有序架構。雖然處理器之具體實施例也包括分開的指令及資料快取單元及一分享L2快取單元,但替代實施例可具有用於指令及資料二者的單一內部快取記憶體,諸如層級1(L1)內部快取記憶體,或內部快的多個層級。在一些實施例中,該系統可包括一內部快取記憶體與在核心和/或處理器外部的一外部快取記憶體之組合。另外,全部外部快取記憶體可位在核心和/或處理器外部。
圖5B為根據本發明一些實施例示出由圖5A之處理器590實施的有序管線以及暫存器重新命名階段、失序簽發/執行管線的方塊圖。圖5B的實線框例示說明有序管線,而虛線框示出說明暫存器重新命名、失序簽發/執行管線。於圖5B中,處理器管線500包括提取階段502、長度解碼階段504、解碼階段506、配置階段508、重新命名階段510、排程(又稱為調度或簽發)階段512、暫存器讀取/記憶體讀取階段514、執行階段516、回寫/記憶體寫入階段518、例外處理階段522、及確定階段524。在一些實施例中,階段502-524的排序可以與所示的不同,並且不限於圖5B中所示的特定排序。
圖6為根據一實施例示出用於包括用以執行共軛置換指令之邏輯電路之處理器600之微架構的方塊圖。在一些 實施例中,根據一實施例之指令可被實施為對具有位元組、字、雙字、四字等等的大小之資料元素以及諸如單精度和雙精度整數和浮點數資料類型的資料類型進行操作。在一個實施例中,有序前端601是處理器600的提取要執行的指令的一部分,並且準備它們稍後在處理器管線中使用。頁面添加和內容拷貝的實施例可以在處理器600中實現。
前端601可包括幾個單元。於一實施例中,指令預先提取器626從記憶體提取指令以及將它們饋送到指令解碼器628,指令解碼器628進而解碼或解讀它們。例如,於一實施例中,解碼器將接收到的指令解碼為機器可以執行之稱為“微指令”或“微操作”(也稱為微op或uops)的一或多個操作。在其它實施例中,解碼器將指令解析為操作碼以及由微架構使用以根據一個實施例執行的操作之相應資料和控製欄位。於一實施例中,追蹤快取630獲取解碼的uop並將它們組裝成為在用於執行之uop佇列634中的程式有序序列或追蹤。當追蹤快取630遇到複雜指令時,微碼ROM 632提供完成操作所需的uop。
一些指令被轉換為單一微操作,而其他指令需要幾個微操作來完成完整的操作。在一個實施例中,如果需要多於四個微操作來完成指令,則解碼器618存取微碼ROM632以執行指令。對於一個實施例,指令可以被解碼為小數目的微操作用於在指令解碼器618處進行處理。在另一實施例中,如果需要數個微操作來完成操作,則可以 將指令儲存在微碼ROM 632內。追蹤快取630指的是用以判定用於從微碼ROM 632讀取微碼序列以完成根據一個實施例的一或多個指令的正確微指令指針之入口點可編碼邏輯陣列(PLA)。在微碼ROM 632完成用於指令的微操作的排序之後,機器的前端601恢復從跟追蹤快取630提取微操作。
失序執行引擎603是準備執行指令的地方。失序執行邏輯具有數個緩衝器以平滑和重新排序指令流,以便在它們沿著管線下行以及被排程執行時優化性能。為了執行,分配器邏輯分配每一個uop需要的機器緩衝器和資源。暫存器重新命名邏輯將邏輯暫存器重新命名為暫存器檔中的條目。分配器也在指令排程器之前為兩個uop佇列之一分配用於每一uop的條目,一個用於記憶體操作,一個用於非記憶體操作:記憶體排程器、快速排程器602,慢/通用浮點排程器604以及簡單浮點排程器606。uop排程器602、604、606基於它們的依附輸入暫存器運算元資源和uop需要完成它們的操作的執行資源的可用性來判定uop何時準備好執行。一實施例之快速排程器602可以在主時脈週期的每一半上排程,而其他排程器只能在每一個主處理器時脈週期排程一次。排程器對分派埠進行仲裁以排程用於執行的uop。
暫存器檔608、610位於排程器602、604、606與執行方塊611中的執行單元612、614、616、618、620、622、624之間。有分別用於整數和浮點操作的單獨的暫 存器檔608、610。一實施例之每一個寄暫存器檔608、610也包括旁通網路,其可以將尚未寫入暫存器檔中之剛完成的結果旁通或轉發到新的從屬uop。整數暫存器檔608和浮點暫存器檔610也能夠與另一個進行通訊資料。對於一個實施例,整數暫存器檔608被分成兩個分開的暫存器檔,一個用於低階32位元資料的暫存器檔和用於高階32位元資料的第二暫存器檔。一實施例之浮點暫存器檔410具有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。對於一實施例,浮點執行方塊612、614執行浮點、MMX、SIMD和SSE或其它操作。一實施例之浮點ALU 612包括由用以執行除法、平方根和餘數微操作的64位乘64位浮點除法器。對於本發明的實施例,涉及浮點值的指令可以用浮點硬體處置。
於一實施例中,ALU操作轉到高速ALU執行單元616、618。一實施例之高速ALU 616、618可以以半個時脈週期的有效潛伏執行快速操作。對於一實施例,最複雜的整數操作進入慢ALU 610,因為慢ALU 610包括用於 長潛伏類型之操作的整數執行硬體,諸如乘法器、移位、旗標邏輯和分支處理。記憶體載入/儲存操作係由AGU 612、614執行。對於一實施例,整數ALU 616、618、620係敘述在64位元資料運算元上執行整數操作之上下文中。在一替代實施例中,ALU 616、618、620可被實施以支持各種包括16、32、128、256等等的資料位元。同樣地,浮點單元612、614可被實施以支持具有各種寬度之位元的運算元範圍。對於一實施例,浮點單元612、614可以結合SIMD和多媒體指令對128位元寬緊縮資料運算元進行操作。
在一個實施例中,uop排程器602、604、606在上代負載已經完成執行之前分派相關操作。由於uop被推測性地排程並在處理器600中執行,因此處理器600還包括處理記憶體遺漏的邏輯。如果資料負載在資料快取中遺漏,在管線中可能存在飛行中的依賴操作,其已經使排程器具有暫時不正確的資料。重撥機制追蹤和重新執行使用不正確資料的指令。只有依賴操作需要被重撥,並且獨立的操作被允許完成。處理器之一實施例之排程器和重放機制也被設計為捕獲用於文本串比較操作的指令序列。
處理器600也包括用以實施根據一實施例之共軛置換指令之邏輯。於一實施例中,處理器600之執行方塊611可包括微控制器(MCU),來執行根據本發明敘述之共軛置換指令。
術語“暫存器”可以指板上處理器儲存位置,其用作識 別運算元之指令的一部分。換言之,暫存器從處理器的外部可以是可用的(從編碼者的角度)。然而,實施例之暫存器不應限制於特定類型的電路的含義。相反,實施例的暫存器能夠儲存和提供資料,並執行本文所述的功能的。本文敘述的暫存器可藉由在處理器中的電路使用不同技術實施,例如專用實體暫存器、使用暫存器重新命名的動態分佈的實體暫存器、專用和動態分佈的實體暫存器的組合等等。在一實施例中,整數暫存器儲存三十二位元整數資料。一實施例之暫存器檔也含有用於緊縮資料的八或十六個多媒體SIMD暫存器。
於下述說明,暫存器被視為設計成保持緊縮資料的資料暫存器,諸如以來自加州聖克拉拉(Santa Clara)之英特爾公司的MMX技術賦能之微處器中64位元寬的MMXTM暫存器(在某些情形中也稱為「mm」暫存器)。能以整數及浮點形式取得的這些MMX暫存器以伴隨SIMD及SSE指令的緊縮資料元操作。類似地,與SSE2、SSE3、SSE4、或是之外(一般稱為「SSEx」)的技術有關的128位元寬的XMM暫存器也用以固持這些緊縮資料運算元。在一實施例中,在儲存緊縮資料及整數資料時,暫存器不需要區分二資料型式。在一實施例中,整數及浮點被含在相同暫存器檔案或不同的暫存器檔案中。此外,在一實施例中,浮點及整數資料可以儲存在不同的暫存器或相同的暫存器中。
實施例可在許多不同系統類型實施。現在參考圖7, 其顯示根據實施方式之一種多處理器系統700之方塊圖。如圖7所示,多處理器系統700為點對點互連系統,包括透過點對點互連750而耦合的第一處理器770及第二處理器780。如圖7所示,處理器770和780中的每一個可以是多核心處理器,包括第一和第二處理器核心,儘管在處理器中可能存在更多的核心。依據本發明之一實施例,每一個處理器可包括併合寫入模式邏輯。頁面添加和內容拷貝的實施例可以在處理器770、處理器780或兩者中實現。
雖然示出為具有兩個處理器770、780,但是應當理解到本發明的範圍不限於此。在其它實施方式中,一或多個附加處理器可以存在於給定的處理器中。
處理器770及780係顯示為分別包括積體記憶體控制器單元(IMC)772及782。處理器770也包括點對點(P-P)介面776及788作為其匯流排控制器單元之一部分;同理,第二處理器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可連同一匯流排橋接器718而耦合至第一匯流排716,該匯流排橋接器718係耦合第一匯流排716至第二匯流排720。在一個實施例中,第二匯流排720可為低接腳數目(LPC)匯流排。在一個實施例中,多個裝置可耦合至第二匯流排720,包括例如鍵盤和/或滑鼠722、通訊裝置727及儲存單元728,諸如磁碟機或其它大容量儲存裝置,可包括指令/碼及資料730。此外,音頻I/O 724可被耦合至第二匯流排720。注意其它架構係屬可能。例如,替代圖7之點對點架構,一系統可實施多插匯流排或其它此種架構。
現在參考圖8,其顯示依據本發明之一個實施例一種第三系統800之方塊圖。圖7與圖8中相似的元件具有相似的元件符號,及圖7的一些方面已經從圖8刪除以免不 必要地遮掩圖8的其它方面。
圖8例示說明處理器870、880分別地可包括積體記憶體及I/O控制邏輯(「CL」)872及882。對於至少一實施例,CL 872、882可包括諸如本文所述的積體記憶體控制器單元。此外。CL 872、882也可包括I/O控制邏輯。圖7示出了記憶體832、834耦合到CL 872、882,並且I/O裝置814也耦合到控制邏輯872、882。舊式I/O裝置815係耦合至晶片組890。頁面添加和內容拷貝的實施例可以在處理器870、處理器880或兩者中實現。
圖9為可以包括一或多個核心902的範例系統單晶片(SoC)900。其它本領域已知之針對膝上型電腦、桌上型電腦、手持式個人電腦、個人數位助理器、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、小區式電話、可攜式媒體播放器、手持式裝置及其它多種電子裝置的其它系統設計及組態也屬適宜。概略言之,能夠結合一處理器和/或其它此處揭示的執行邏輯的大量多種系統及電子裝置大致上為適宜。
圖9為根據本發明實施例之SoC 900的方塊圖。虛線框乃更為更先進SoC上的特徵。於圖9中,一互連單元902係耦合至:一應用程式處理器917其包括一或多個核心902A-N與分享快取單元906之一集合;一系統代理器單元910;一匯流排控制器單元916;一積體記憶體控制 器單元914;一或多個媒體處理器920之一集合其可包括積體圖形邏輯908、用於提供靜止和/或攝像機功能之影像處理器924、用於提供硬體音頻加速之音訊處理器926、及用於提供視頻編碼/解碼加速之視訊處理器928;一靜態隨機存取記憶體(SRAM)單元930;一直接記憶體存取(DMA)單元932;及用以耦合至一或多個外部顯示器的一顯示單元940。頁面添加和內容拷貝的實施例可以在SoC 900中實現。
接下來轉到圖10,描繪了根據本發明之實施例的系統單晶片(SoC)設計的實施例。作為說明性示例,SoC 1000包括在使用者設備(UE)中。在一個實施例中,UE是指要由終端使用者使用來進行通訊的任何設備,諸如手持電話、智慧型手機、平板、超薄智慧型手機、具有寬頻適配器的筆記型電腦或任何其他類似的通訊設備。UE可以連接到基地站或節點,其本質上可以相應於GSM網絡中的行動站(MS)。頁面添加和內容拷貝的實施例可以在SoC 1000中實現。
這裡,SoC 1000包括2個核心-1006和1007。類似於以上論述,核心1006及1007可符合指令集架構,諸如基於Intel® Architecture CoreTM之處理器、Advanced Micro Devices,Inc.(AMD)處理器、基於MIPS之處理器、基於ARM之處理器設計或其客戶以及其執照或採用者。核心1006及1007耦合至與匯流排介面單元1009及L2快取1010相關聯的快取控制器1008,來與系統1000之其他部 分通訊。互連1011包括可能實施本發明所述之一或多個態樣之晶片上互連,諸如IOSF、AMBA或以上論述之任何其他互連。
互連1011提供通訊通道至其他組件,諸如:用以與SIM卡介接之用戶身份模組(SIM)1030、用來保存由核心1006及1007執行來初始化並啟動SOC 1000的啟動碼之啟動ROM 1035、用以與外部記憶體(例如DRAM 1060)介接之SDRAM控制器1040、用以與非揮發性記憶體(例如快閃記憶體1065)介接之快閃記憶體控制器1045、用以與周邊裝置介接之周邊控制器1050(例如串列周邊介面)、用以顯示及接收輸入(例如,具備觸控功能的輸入)之視訊編碼解碼器1020及視訊介面1025、用以執行圖形相關計算之GPU 1015等等。此等介面中任一點可併入本文所述之本發明之態樣。
此外,系統示出用以通訊之周邊裝置,諸如藍芽模組1070、3G數據機1075、GPS 1080及WiFi 1085。請注意,如以上所述,UE包括用於通訊之無線電。因此,並不需要所有此等周邊通訊模組。然而,在UE中將包括用於外部通訊之某種形式的無線電。
圖11示出了計算系統1100的範例形式的機器的圖形表示,其中可以執行用於使機器執行本文所討論的方法中的任何一或多個的一組指令。在替代實施例中,機器可被連接(例如,網絡連接)到LAN、內部網路、外部網路或網際網路中的其他機器。機器可以在用戶端-伺服器網絡 環境中以伺服器或用戶端裝置的能力操作,或者在對等(或分佈式)網絡環境中作為對等機器。機器可以為個人電腦(PC)、平板PC、機上盒(STB)、個人數位助理(PDA)、一蜂巢式電話、網路家電、網路路由器、交換器、或橋接器、或能夠執行指定待由該機器採取之行動之指令(循序或按其他方式)的任何機器。再者,儘管所示僅單一機器,「機器」一詞亦可用來包括個別或共同執行一(或多個)指令集以進行本文中所論述方法其中任何一或多者的任何機器集合。頁面添加和內容拷貝的實施例可以在計算系統1100中實現。
計算系統1100包括處理裝置1102、主記憶體1104(例如,唯讀記憶體(ROM)、快閃記憶體、動態隨機存取記憶體(DRAM)(諸如同步動態DRAM(SDRAM)或DRAM(RDRAM)等等)、靜態記憶體1106(例如,快閃記憶體、靜態隨機存取記憶體(SRAM)等等)以及經由匯流排1130彼此通訊之資料儲存裝置1118。
處理裝置1102表示一或多個通用處理裝置,諸如微處理器、中央處理單元等等。更特別地,處理裝置可為複雜指令集計算(CISC)微處理器、精簡指令集計算(RISC)微處理器、超長指令字組(VLIW)微處理器、或實施其它指令集之處理器、或實施指令集之組合的處理器。處理裝置1102也可為一或多個特用處理裝置,諸如特定應用積體電路(ASIC)、場可編程閘陣列(FPGA)、數位訊號處理器(DSP)、網路處理器等等。 於一實施例中,處理裝置1102可包括一或多個處理器核心。處理裝置1102係組態以執行用於實施本文討論之操作的處理邏輯1126。於一實施例中,處理裝置1102可以為計算系統的一部分。可替代地,計算系統1100可包括其它本文所述之組件。應能理解到核心可支持多執行緒(執行二或多個並列的操作或執行緒集合),且可以多種方式達成支持,包括時間截割多執行緒、同時多執行緒(於該處針對實體核心為同時多執行緒的該等執行緒各自,單一實體核心提供一邏輯核心)、或其組合(例如時間截割提取與解碼及其後同時多執行緒,諸如Intel® Hyperthreading技術)。
計算系統1100可更包括通訊地耦合至網路1120的網路介面裝置1122。計算系統1100也可包括視訊顯示單元1108(例如,液晶顯示器(LCD)或陰極射線管(CRT))、文數輸入裝置1110(例如,鍵盤)、游標控制裝置1114(例如,滑鼠)、訊號產生裝置1116(例如,揚聲器)或其它周邊裝置。再者,計算系統1100可包括圖形處理單元1122、視訊處理單元1128以及音訊處理單元1132。於另一實施例中,計算系統1100可包括晶片組(未示出),其指的是積體電路或晶粒之群組,其被設計以與處理裝置1102一起工作並且控制處理裝置1102和外部裝置之間的通訊。例如,晶片組可為在主機板上的晶粒組,其鏈結處理裝置1102到非常高速的裝置,諸如主記憶體1104和圖形控制器,以及將處理裝置1102鏈結 到低速周邊匯流排的周邊裝置,諸如USB、PCI或ISA匯流排。
資料儲存裝置1118可包括電腦可讀取儲存媒體1124,在其上儲存實現本文描述的功能的方法中的任何一或多個的軟體1126。軟體1126還可以完全地或至少部分地駐留在主記憶體1104內作為指令1126和/或在處理裝置1102內作為處理邏輯1126在其由計算系統1100執行的期間;主記憶體1104和處理裝置1102也構成電腦可讀取儲存媒體。
電腦可讀取儲存媒體1124也可用來利用處理裝置1102儲存指令1126,諸如關於圖1A和1B所描述的,和/或包含調用上述應用的方法的軟體庫。儘管電腦可讀取儲存媒體1124在範例實施例中被示為是單個媒體,但是用語「電腦可讀取儲存媒體」應該被認為包括單個媒體或多個媒體(例如,集中式或分佈式資料庫和/或相關聯的快取及伺服器),其儲存一或多個指令集。用語「電腦可讀取儲存媒體」還應被理解為包括能夠儲存、編碼或攜帶用於由機器執行的一組指令並且使得機器執行本實施例的任何一或多個方法的任何媒體。用語「電腦可讀取儲存媒體」應相應地被認為包括但不限制於固態記憶體以及光學和磁性媒體。
下面的範例涉及到本發明進一步的實施例。
範例1為一種處理器,包含:第一暫存器,其包含用以接收複數個來源元素之複數個第一暫存器位置;第二暫 存器,其包含複數個第二暫存器位置;以及執行單元,其耦合至該第一暫存器及該第二暫存器,該執行單元用以:接收整數值之向量;檢索相對於該第一暫存器的基本位置之具有偏移的來源元素;儲存該來源元素至該第二暫存器的位置,其中該位置係由元素之值識別,該元素相對於整數值之該向量的基本位置具有偏移。
於範例2中,範例1之請求標的更包含複數個解多工器,其中該複數個第一暫存器位置中的每一個耦合至該複數個解多工器中的一者。
於範例3中,範例1之請求標的更包含複數個解多工器,其中該複數個解多工器中的每一個係耦合至該複數個第二暫存器位置中的每一個。
於範例4中,範例1之請求標的更包含複數個解多工器,其中整數之該向量係在第三暫存器接收以及複數個第三暫存器位置中的每一個耦合至該複數個解多工器中的一者。
於範例5中,範例4之請求標的,其中整數值之該向量之該元素指示用於耦合的解多工器的資料輸出線。
於範例6中,範例1之請求標的,其中每一個來源元素具有相應的整數在整數值之該向量中,以及其中該執行單元係用以儲存每一來源元素至該第二暫存器之相應位置,其中用於每一來源元素的該第二暫存器中的該相應位置係由該相應的整數識別。
於範例7中,範例6之請求標的,其中用以儲存該複 數個來源元素的每一元素至該第二暫存器之相應位置,該執行單元係用以並行地儲存該來源元素。
範例8為一種處理器,包含:處理器核心;以及記憶體裝置,其耦合至該處理器核心,其中該記憶體裝置包含微碼,該微碼導致該處理器以:在該處理器之第一暫存器接收複數個來源元素;接收整數值之向量;檢索相對於該第一暫存器的基本位置之具有偏移的來源元素;儲存該來源元素至第二暫存器的位置,其中該位置係由元素之值識別,該元素相對於整數值之該向量的基本位置具有偏移。
於範例9中,範例8之請求標的,其中該微碼更導致處理器核心基於該整數值之該向量產生整數值之第二向量。
於範例10中,範例9之請求標的,其中用以產生整數值之第二向量,該處理器核心係用以將等於相對於該基本位置之該偏移的值儲存至該第二向量之第二基本位置的第二偏移處的第二位置,其中該第二偏移為一等於整數值之該向量之該元素之該值的整數。
於範例11中,範例9之請求標的,其中用以檢索該來源元素,該處理器核心係用以基於在整數值之該第二向量中的第二元素識別該來源元素,其中該偏移等於整數值之該第二向量之該元素之該值,以及該第二暫存器之該位置等於整數值之該向量之該元素之該值。
於範例12中,範例8之請求標的,其中該第一暫存器為第一向量暫存器,以及其中該處理器核心係用以將該 些來源元素之每一者並行地儲存至該第二暫存器。
於範例13中,範例7之請求標的,其中該記憶體裝置包含微碼唯讀記憶體。
範例14為一種方法,包含:藉由處理器接收至該處理器之第一暫存器之複數個來源元素,其中每一個來源元素具有相對於該第一暫存器之基本位置之偏移;藉由該處理器接收具有索引元素之索引,其中每一個索引元素具有相對於該索引之基本位置的偏移,以及其中每一個索引元素相應於具有該相同偏移之來源元素;藉由該處理器將該些來源元素之每一個儲存至在該處理器之第二暫存器中的位置,其中該些位置係由該相應的索引元素之值識別。
於範例15中,範例14之請求標的更包含藉由該處理器基於該索引產生第二索引。
於範例16中,範例15之請求標的,其中該第二索引之每個條目具有識別來源元素之值,其中該來源元素係由該來源元素之該偏移識別。
於範例17中,範例15之請求標的,其中產生第二索引包含將該索引之每一元素並行地轉換為該第二索引之元素。
於範例18中,範例14之請求標的,其中該些來源元素之每一個儲存至該處理器之該第二暫存器中的位置,包含:藉由該處理器提供每一個來源元素至複數個解多工器之相應的解多工器;提供在該索引中的條目至每一個解多工器;以及從每一個解多工器輸出該相應的來源元素至由 該索引指示的資料輸出線。
於範例19中,範例18之請求標的,其中該複數個解多工器的每一者具有耦合至該第二暫存器中的每個位置的資料輸出線。
於範例20中,範例14之請求標的,其中將該些來源元素之每一者儲存至該第二暫存器係由該處理器並行地執行。
範例21為一種包括碼的機器可讀取媒體,當被執行時,導致機器執行任何範例14至20的方法。
範例22為一種設備,包含用以執行任何範例14至20的方法的手段。
範例23為一種設備,包含組態以執行任何範例14至20的方法的設備。
範例24為一種設備,包含:用以藉由處理器接收至該處理器之第一暫存器之複數個來源元素的手段,其中每一個來源元素具有相對於該第一暫存器之基本位置之偏移;用以藉由該處理器接收具有索引元素之索引的手段,其中每一個索引元素具有相對於該索引之基本位置的偏移,以及其中每一個索引元素相應於具有該相同偏移之來源元素;用以藉由該處理器將該些來源元素之每一個儲存至在該處理器之第二暫存器中的位置的手段,其中該些位置係由該相應的索引元素之值識別。
於範例25中,範例24之請求標的更包含用以基於該索引產生第二索引之手段,其中該第二索引之每個條目具 有識別來源元素之值,其中該來源元素係由該來源元素之該偏移識別。
於範例26中,範例24之請求標的更包含:用以提供每一個來源元素至複數個解多工器之相應的解多工器的手段;用以從該索引向該複數個解多工器中的每一個提供條目的手段;以及用以將每一個解多工器之輸出儲存至該第二暫存器中的位置的手段。
範例27為一種系統,包含:處理器核心;以及記憶體裝置,其耦合至該處理器核心,其中該記憶體裝置包含微碼,該微碼導致該處理器以:在該處理器之第一暫存器接收複數個來源元素;接收整數值之向量;檢索相對於該第一暫存器的基本位置之具有偏移的來源元素;儲存該來源元素至第二暫存器的位置,其中該位置係由元素之值識別,該元素相對於整數值之該向量的基本位置具有偏移。
於範例28中,範例27之請求標的,其中該微碼更導致該處理器核心基於該整數值之該向量產生整數值之第二向量。
於範例29中,範例28之請求標的,其中用以產生整數值之第二向量,該處理器核心係用以將等於相對於該基本位置之該偏移的值儲存至該第二向量之第二基本位置的第二偏移處的第二位置,其中該第二偏移為一等於整數值之該向量之該元素之該值的整數。
於範例30中,範例28之請求標的,其中用以檢索該來源元素,該處理器核心係用以基於在整數值之該第二向 量中的第二元素識別該來源元素,其中該偏移等於整數值之該第二向量之該元素之該值,以及該第二暫存器之該位置等於整數值之該向量之該元素之該值。
儘管本發明已經以有關於有限數量的實施例描述,但是本領域技術人員將認識到其中的許多修改和變化。意圖是所附申請專利範圍涵蓋落入本發明的真實精神和範圍內所有此種的修改和變化。
在於此的說明中,提出眾多特定的細節,像是特定類型的處理器及系統配置、特定硬體結構、特定架構及微架構的細節、特定暫存器配置、特定指令類型、特定系統組件、特定測量/高度、特定處理器管線階段及運算等的範例,以為了提供徹底的理解本發明。然而,對本領域具有通常知識者將為顯而易見的是,不需要運用這些特定的細節來實行本發明。在其它實例中,周知的組件或方法,像是特定的及替代的處理器架構、用於說明的演算法之特定的邏輯電路/碼、特定的韌體碼、特定的互連操作、特定的邏輯配置、特定的製制技術及材料、特定的編譯器建置、特定的以碼之演算法的表達、特定切斷電源及閘控技術/邏輯以及其它電腦系統之特定操作細節,未以細節說明以為了避免非必要地模糊本發明。
實施例係參照以特定積體電路之安全記憶體再分割來說明,像是以計算平台或微處理器。實施例亦可應用至其它類型的積體電路及可編程邏輯裝置。例如,所揭露的實施例不限制於桌上型電腦系統或可攜式電腦,諸如Intel® UltrabooksTM電腦。並且亦可在其它裝置中使用,像是手持裝置、平板、其它薄型筆記型電腦、晶片上系統(SoC)裝置以及嵌入應用。手持裝置之一些範例包括蜂巢式電話、網際網路協定裝置、數位相機、個人數位助理(PDA)以及手持PC。嵌入應用典型地包括微控制器、數位訊號處理器(DSP;digital signal processor)、晶片上系統、網路電腦(NetPC)、機上盒、網路集線器、寬域網路(WAN)交換器或能施行下方所教示的功能及操作的任何其它系統。所說明的是,系統能為任何種類的電腦或嵌入系統。所揭示的實施例可特別地被使用於低端裝置,像可穿載裝置(例如,手錶)、電子植入物、感測及控制基礎設施裝置、控制器、監控及資料獲取系統(SCADA;supervisory control and data acquisition)等。再者,於此說明的設備、方法及系統並不限於實體計算裝置,而亦可關於用於能源節約及效率的軟體最佳化。如在下方說明將變為容易明白的是,於此說明的方法、設備及系統的實施例(無論是否參照硬體、韌體、軟體或其結合)係對於「綠科技」是重要的,其與效能考量進行未來的平衡。
雖然這裡的實施例係參照處理器來說明,但其它實施例可應用至其它類型的積體電路及邏輯裝置。本發明類似的實施例之技術及教示能應用到其它類型的電路或半導體裝置,其能從較高管線工作量及改善的效能當中得益。本發明之實施例的教示係可應用到施行資料操作的任何處理 器或機器。然而,本發明並不限於施行512位元、256位元、128位元、64位元、32位元或16位元資料運算的處理器或機器,而能應用到施行資料之操作或管理於其之中的任何處理器和機器。此外,於此的說明提供了範例,並且附圖繪示用於闡述的目的之各種範例。然而,這些範例在當他們僅打算提供本發明之實施例的範例而非窮舉本發明之實施例的所有可能建置時,不應以限制的意義來理解。
雖然下面範例說明在執行單元及邏輯電路之內文中的指令處理及分佈,本發明之其它實施例能藉由儲存在機器可讀、有形媒體中的資料或指令來完成,該媒體係當由機器施行時引起機器施行與本發明之至少一實施例一致的功能。在一實施例中,與本發明之實施例關聯的功能體現在機器可執行指令中。指令能被使用來引起一般目的或特定目的以指令來編程之處理器施行本發明之步驟。本發明之實施例可被設置為電腦程式產品或軟體,其可包括具有儲存於其上之指令的機器或電腦可讀取媒體,該指令可被使用來編程電腦(或其它電子裝置)以施行依據本發明的實施例之一或更多運算。或者,本發明之實施例的運算可由包含用於施行運算之固定功能邏輯的特定硬體組件或由經編程的電腦組件及固定功能硬體組件之任何組合所施行。
使用來編程邏輯以施行本發明之實施例的指令能被儲存在系統中的記憶體內,諸如DRAM、快取、快閃記憶體或其他儲存器。進一步而言,指令能經由網路或藉由其它 電腦可讀取媒體來分佈。因此,機器可讀媒體可包括用於以藉由機器(例如,電腦)而可讀取的形式儲存或傳輸資訊的任何機制,但機器不限於軟碟、光碟、壓縮碟唯讀記憶體/光碟(CD-ROM)及光磁碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可抹除可編程唯讀記憶體(EPROM)、電可抹除可編程唯讀記憶體(EEPROM)、磁或光卡、快閃記憶體或有形的、機器可讀的儲存器,該些儲存器在經由電、光、聲或其它形式的傳播訊號(例如,載波、紅外線訊號、數位訊號等)的網際網路之上的傳輸資訊中使用。因此,電腦可讀取媒體包括適合用於以由機器(例如,電腦)而可讀取之形式儲存或傳輸電子指令或資訊之任何類型的有形機器可讀媒體。
設計可通過從創建到模擬到製造的各種階段。表示設計的資料可以許多方式表示設計。首先,如在模擬中有用的是,硬體可使用硬體描述語言或其它功能描述語言來表示。此外,具有邏輯及/或電晶體閘的電路級模型可在一些設計過程之階段產生。再者,在某階段處,大部分設計達到表示在硬體模型中各種裝置之實體放置的資料之等級。在使用傳統半導體製造技術的情形中,表示硬體模型的資料可為明定在用於使用來生產積體電路之遮罩的不同的遮罩層上各種特徵的存在或缺少的資料。在任何設計之表示中,資料可被儲存在任何形式的機器可讀媒體中。記憶體或像是碟片的磁性或光學儲存器可為機器可讀媒體,用以儲存經由調變的光或電波傳輸的資訊,或儲存別的方 式產生以傳輸這類的資訊。當傳輸指示或運載碼或設計的電載波時,會完成新的複製而到施行電訊號之複製、緩衝或重傳的程度。因此,通訊供應商或網路供應商可至少暫時地在有形、機器可讀媒體上儲存體現本發明之實施例之技術的物件,像是編碼成載波的資訊。
如於此使用的模組參照至硬體、軟體及/或韌體之任何組合。如一範例,模組包括與非暫態媒體關聯的硬體,像是微控制器,用以儲存適於由微控制器執行的碼。因此,在一實施例中,提到模組係參照至硬體,其具體地被配置成認識及/或執行用以留存在非暫態媒體上的碼。再者,在另一實施例中,使用模組參照至包括碼的非暫態媒體,其具體地適於由微控制器執行,用以施行預定的運算。並且如能被推論地,又在另一實施例中,術語模組(在此範例中)可參照至微控制器和非暫態媒體的結合。通常,闡述為分開的模組邊界一般是變化的並且潛在地重疊。例如,第一及第二模組可共用硬體、軟體、韌體或其結合,同時潛在地保有一些獨立硬體、軟體或韌體。在一實施例中,使用術語邏輯包括硬體,諸如電晶體、暫存器或其它硬體,像是可編程邏輯裝置。
在一實施例中使用詞彙「組態以」參照至安排、裝配、製造、提供販賣、進口及/或設計用以施行指派的或決定的任務之設備、硬體、邏輯或元件。在此範例中,其未進行運算的設備或元件仍然「組態以」施行指派的任務,如果它是被設計、耦合及或互連來進行所述指派的任 務的話。如一純說明性範例來看,在運算期間邏輯閘可提供0或0。但邏輯閘「配置以」對時脈提供致能訊號並不包括可提供1或0之每一個潛在邏輯閘。相反的,邏輯閘係為以某種方式耦合之者而在運算期間1或0輸出是用以致能時脈。再一次注意,使用術語「配置以」並不需要運算,而相反地聚焦在設備、硬體及/或元件之潛在狀態(latent state),其中在潛在狀態中,設備、硬體及/或元件係設計成當設備、硬體及/或元件正進行運算時,施行特定的任務。
進一步而言,在一實施例中使用詞彙「用以(to)」、「能夠(capable of/to)」、「可操作以(operable to)」參照至以這類方法設計的某種設備、邏輯、硬體及/或元件,用來以明定的方式致能設備、邏輯、硬體及/或元件之使用。如上所指出的,在一實施例中使用用以、能夠或可操作以參照至設備、邏輯、硬體及/或元件之潛在狀態,其中設備、邏輯、硬體及/或元件未進行運算,但以這類方式設計來以明定的方式致能使用設備。
如於此使用的值,包括數目、狀態、邏輯狀態或二位元邏輯狀態之任何已知表示。通常,邏輯準位(logic level)、邏輯值或邏輯的值之使用亦參照為1及0,其簡單地表示二進位邏輯狀態。舉例而言,1參照至高邏輯準位而0參照至低邏輯準位。在一實施例中,儲存單元(storage cell),像是電晶體或快閃單元,可能夠保持單 一邏輯值或多個邏輯值。然而,在電腦系統中已使用值之其它表示。舉例來說,十進位數10亦可表示為1110之二進位值以及十六進位字母A。因此,值包括能夠保留在電腦系統中之資訊的任何表示。
再者,狀態可由值或部分的值表示。如一範例來看,第一值,像是邏輯1,可表示預設(default)或初始狀態,同時第二值,像是邏輯0,可表示非預設狀態。此外,在一實施例中術語重置(reset)及設定(set),分別參照至預設及更新的值或狀態。舉例來說,預設值潛在地包括高邏輯值,亦即重置,同時更新值潛在地包括低邏輯值,亦即設定。注意,可利用值的任何組合來表示任何數目的狀態。
上面提出之方法、硬體、軟體、韌體或碼之實施例可經由儲存在由處理元件可執行的機器可存取、機器可讀取、電腦可存取或電腦可讀媒體上的指令或碼來建置。非暫態機器可存取/讀取媒體包括以由像是電腦或電子系統的機器可讀取的形式提供(亦即儲存及/或傳輸)資訊的任何機制。舉例而言,非暫態機器可存取媒體包括隨機存取記憶體(RAM;random-access memory),像是靜態RAM(SRAM;static RAM)或動態RAM(DRAM;dynamic RAM);包括ROM;包括磁性或光學儲存媒體;包括快閃記憶體裝置;包括電儲存裝置;包括光學儲存裝置;包括聲學儲存裝置;包括用於保持從暫態(傳播的)訊號(例如,載波、紅外線訊號、數位訊號)接收的 資訊之其它形式的儲存裝置等,其與可從其接收資訊的非暫態媒體有所區別。
使用來編程邏輯用以施行本發明之實施例的指令可被儲存在系統中的記憶體內,像是DRAM、快取、快閃記憶體或其它儲存器。進一步而言,指令能經由網路或藉由其它電腦可讀取媒體來分佈。因此,機器可讀媒體可包括用於以藉由機器(例如,電腦)而可讀取的形式儲存或傳輸資訊的任何機制,但機器不限於軟碟、光碟、壓縮碟唯讀記憶體/光碟(CD-ROM)及光磁碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可抹除可編程唯讀記憶體(EPROM)、電可抹除可編程唯讀記憶體(EEPROM)、磁或光卡、快閃記憶體或有形的、機器可讀的儲存器,該些儲存器在經由電、光、聲或其它形式的傳播訊號(例如,載波、紅外線訊號、數位訊號等)的網際網路之上的傳輸資訊中使用。因此,電腦可讀媒體包括適合用於以由機器(例如,電腦)而可讀取之形式儲存或傳輸電子指令或資訊之任何類型的有形機器可讀媒體。
遍及本說明書所提到的「一實施例」或「實施例」意味連同實施例說明的特別特徵、結構或特性被包括在本發明之至少一實施例中。因此,詞彙「在一實施例中」或「在實施例中」於遍及本說明書各種地方之出現並不必然全參照至相同的實施例。再者,特定特徵、結構或特性可以合適的方式結合在一或多個實施例中。
在前述的說明書中,詳細的說明已參考特定示範性實 施例而給定。然而,將明白的是,各種修改及變化可在不悖離如在所附申請專利範圍中提出之本發明的較寬廣的精神及範圍下對之完成。據此,說明書及圖式是以闡述的義意來考慮,而非是限制的意義。進一步而言,前述使用的實施例及其它示範性地語言並不必然參照至相同實施例或相同範例,而可參照至不同及區別的實施例以及潛在相同的實施例。
一些部分的詳細說明係按照演算法及在電腦記憶體內資料位元上運算之符號表示。這些說明及表示係為由資料處理領域具有通常知識者使用的手段,用以最有效地將他們工作的實質傳達給其它本領域具有通常知識者。在此且一般而言,演算法係理解為導致所欲結果的運算之自我一致的序列(self-consistent sequence)。運算為需要物理量之實體操控的該些者。通常來說,雖然不一定,這些量採用能夠被儲存、轉換、結合、比較及另外其它操控的電或磁訊號的形式。有時,主要是為了共同使用的原因,將這些訊號參照為位元、值、元件、符號、字母、術語、數字等已證明是方便的。於此說明的方塊可以為硬體、軟體韌體或其結合。
然而,應牢記在心的是,所有這些及類似的術語係用以與合適的物理量關聯並且僅為應用到這些量之便利的標記。除非具體地陳述,否則如從上面討論中為明顯的是,可理解的,遍及本說明,利用像是「界定(defining)」、「接收(receiving)」、「判斷(determining)」、「 發出(issuing)」、「鏈接(linking)」、「關聯(associating)」、「獲得(obtaining)」、「證明(authenticating,)」、「禁止(prohibiting)」、「執行(executing)」、「請求(requesting)」、「通訊/傳送(communicating)」等術語的討論參照至計算系統或類似電子計算裝置的動作及處理,其將在計算系統的暫存器及記憶體內表示為物理(例如,電子)量的資料操控和變換成在計算系統記憶體或暫存器或其它這類資訊儲存器、傳輸或顯示裝置內同樣地表示為物理量的其它資料。
字詞「範例」或「示範性的」於此使用來意味作為範例、例子或例證。於此說明為「範例」或「示範性的」態樣或設計並不必然用以理解為在其它態樣或設計之上是較佳的或有益的。相反的,使用字詞「範例」或「示範性的」係打算以具體的方式提出概念。如在此應用中所使用的,述語「或」係打算意味著包含(inclusive)「或」而非互斥(exclusive)「或」。亦即,除非另外明定,或從上下文清楚得知,「X包括A或B」係打算意味自然包含的排列中之任一者。亦即,若X包括A;則X包括B;或X包括A及B兩者,接著「X包括A或B」係在任何前述實例之下被滿足。此外,如在此應用及所附申請專利範圍中使用的冠詞「一(a)」及「一(an)」應一般地被理解為意味「一或更多」,除非另外明定或從上下文清楚得知是涉及單數形式。再者,各處地使用術語「實施例」或「一實施例」或「建置」或「一建置」並不打算意味相 同實施例或建置,除非如此地說明。同樣,於此使用的術語「第一」、「第二」、「第三」、「第四」等意思為標記,用以在不同元件之間進行區別並且可不必要依據他們的數字標示而具有次序的意思。
100‧‧‧計算系統
102‧‧‧處理器
103‧‧‧快取記憶體
104‧‧‧向量暫存器
105‧‧‧解碼器
106‧‧‧暫存器組
107‧‧‧記憶體介面
108‧‧‧執行單元
109‧‧‧共軛置換指令
110‧‧‧處理器匯流排
120‧‧‧記憶體裝置

Claims (17)

  1. 一種處理器,包含:第一暫存器,其包含用以接收複數個來源元素之複數個第一暫存器位置;第二暫存器,其包含複數個第二暫存器位置;以及執行單元,其耦合至該第一暫存器及該第二暫存器,該執行單元用以:接收整數值之向量;檢索相對於該第一暫存器的基本位置之具有偏移的來源元素;儲存該來源元素至該第二暫存器的位置,其中該位置係由整數值之該向量的元素之值識別,該元素相對於整數值之該向量的基本位置具有偏移;其中每一個來源元素具有相應的整數在整數值之該向量中,以及其中該執行單元係用以儲存每一來源元素至該第二暫存器之相應位置,其中用於每一來源元素的該第二暫存器中的該相應位置係由該相應的整數識別。
  2. 如申請專利範圍第1項所述之處理器,更包含複數個解多工器,其中該複數個第一暫存器位置中的每一個耦合至該複數個解多工器中的一者。
  3. 如申請專利範圍第1項所述之處理器,更包含複數個解多工器,其中該複數個解多工器中的每一個係耦合至該複數個第二暫存器位置中的每一個。
  4. 如申請專利範圍第1項所述之處理器,更包含複 數個解多工器,其中整數之該向量係在第三暫存器接收以及複數個第三暫存器位置中的每一個耦合至該複數個解多工器中的一者。
  5. 如申請專利範圍第4項所述之處理器,其中整數值之該向量之該元素指示用於耦合的解多工器的資料輸出線。
  6. 如申請專利範圍第1項所述之處理器,其中用以儲存該複數個來源元素的每一元素至該第二暫存器之相應位置,該執行單元係用以並行地儲存該來源元素。
  7. 一種處理器,包含:處理器核心;以及記憶體裝置,其耦合至該處理器核心,其中該記憶體裝置包含微碼,該微碼導致該處理器以:在該處理器之第一暫存器接收複數個來源元素;接收整數值之向量;檢索相對於該第一暫存器的基本位置之具有偏移的來源元素;儲存該來源元素至第二暫存器的位置,其中該位置係由整數值之該向量的元素之值識別,該元素相對於整數值之該向量的基本位置具有偏移;其中用以檢索該來源元素,該處理器核心係用以基於在整數值之該第二向量中的第二元素識別該來源元素,其中該偏移等於整數值之該第二向量之該元素之該值,以及該第二暫存器之該位置等於整數值之該向量之該元素之該 值。
  8. 如申請專利範圍第7項所述之處理器,其中該微碼更導致處理器核心基於該整數值之該向量產生整數值之第二向量。
  9. 如申請專利範圍第8項所述之處理器,其中用以產生整數值之第二向量,該處理器核心係用以將等於相對於該基本位置之該偏移的值儲存至該第二向量之第二基本位置的第二偏移處的第二位置,其中該第二偏移為一等於整數值之該向量之該元素之該值的整數。
  10. 如申請專利範圍第7項所述之處理器,其中該第一暫存器為向量暫存器,以及其中該處理器核心係用以將該些來源元素之每一個並行地儲存至該第二暫存器。
  11. 如申請專利範圍第7項所述之處理器,其中該記憶體裝置包含微碼唯讀記憶體。
  12. 一種執行共軛置換指令的方法,包含:藉由處理器接收至該處理器之第一暫存器之複數個來源元素,其中每一個來源元素具有相對於該第一暫存器之基本位置之偏移;藉由該處理器接收具有索引元素之索引,其中每一個索引元素具有相對於該索引之基本位置的偏移,以及其中每一個索引元素相應於具有該相同偏移之來源元素;藉由該處理器將該些來源元素之每一個儲存至在該處理器之第二暫存器中的位置,其中該些位置係由該相應的索引元素之值識別; 其中將該些來源元素之每一個儲存至該第二暫存器係由該處理器並行地執行。
  13. 如申請專利範圍第12項所述之方法,更包含藉由該處理器基於該索引產生第二索引。
  14. 如申請專利範圍第13項所述之方法,其中該第二索引之每一個條目具有識別來源元素之值,其中該來源元素係由該來源元素之該偏移識別。
  15. 如申請專利範圍第13項所述之處理器,其中產生第二索引包含將該索引之每一元素並行地轉換為該第二索引之元素。
  16. 如申請專利範圍第12項所述之方法,其中該些來源元素之每一個儲存至該處理器之該第二暫存器中的位置,包含:藉由該處理器提供每一個來源元素至複數個解多工器之相應的解多工器;提供在該索引中的條目至每一個解多工器;以及從每一個解多工器輸出該相應的來源元素至由該索引指示的資料輸出線。
  17. 如申請專利範圍第12項所述之方法,其中該複數個解多工器的每一個具有耦合至該第二暫存器中的每一個位置的資料輸出線。
TW105138125A 2015-12-23 2016-11-21 用以執行共軛置換指令的處理裝置 TWI733714B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/998,151 2015-12-23
US14/998,151 US20170185413A1 (en) 2015-12-23 2015-12-23 Processing devices to perform a conjugate permute instruction

Publications (2)

Publication Number Publication Date
TW201732558A TW201732558A (zh) 2017-09-16
TWI733714B true TWI733714B (zh) 2021-07-21

Family

ID=59087246

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105138125A TWI733714B (zh) 2015-12-23 2016-11-21 用以執行共軛置換指令的處理裝置

Country Status (5)

Country Link
US (1) US20170185413A1 (zh)
EP (1) EP3394766A4 (zh)
CN (1) CN108475253A (zh)
TW (1) TWI733714B (zh)
WO (1) WO2017112195A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6222285B1 (ja) * 2016-06-01 2017-11-01 富士電機株式会社 データ処理装置、データ処理方法及びプログラム
US10877925B2 (en) * 2019-03-18 2020-12-29 Micron Technology, Inc. Vector processor with vector first and multiple lane configuration

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5815723A (en) * 1990-11-13 1998-09-29 International Business Machines Corporation Picket autonomy on a SIMD machine
US6381690B1 (en) * 1995-08-01 2002-04-30 Hewlett-Packard Company Processor for performing subword permutations and combinations
US20140059323A1 (en) * 2012-08-23 2014-02-27 Qualcomm Incorporated Systems and methods of data extraction in a vector processor

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7039060B2 (en) * 2001-03-07 2006-05-02 Mips Tech Inc System and method for extracting fields from packets having fields spread over more than one register
GB2409064B (en) * 2003-12-09 2006-09-13 Advanced Risc Mach Ltd A data processing apparatus and method for performing in parallel a data processing operation on data elements
US7412587B2 (en) * 2004-02-16 2008-08-12 Matsushita Electric Industrial Co., Ltd. Parallel operation processor utilizing SIMD data transfers
US7434024B2 (en) * 2004-08-30 2008-10-07 Ati Technologies, Inc. SIMD processor with register addressing, buffer stall and methods
US20070011442A1 (en) * 2005-07-06 2007-01-11 Via Technologies, Inc. Systems and methods of providing indexed load and store operations in a dual-mode computer processing environment
US20070226469A1 (en) * 2006-03-06 2007-09-27 James Wilson Permutable address processor and method
US20090172348A1 (en) * 2007-12-26 2009-07-02 Robert Cavin Methods, apparatus, and instructions for processing vector data
US8972698B2 (en) * 2010-12-22 2015-03-03 Intel Corporation Vector conflict instructions
US9766887B2 (en) * 2011-12-23 2017-09-19 Intel Corporation Multi-register gather instruction
US9639356B2 (en) * 2013-03-15 2017-05-02 Qualcomm Incorporated Arbitrary size table lookup and permutes with crossbar

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5815723A (en) * 1990-11-13 1998-09-29 International Business Machines Corporation Picket autonomy on a SIMD machine
US6381690B1 (en) * 1995-08-01 2002-04-30 Hewlett-Packard Company Processor for performing subword permutations and combinations
US20140059323A1 (en) * 2012-08-23 2014-02-27 Qualcomm Incorporated Systems and methods of data extraction in a vector processor

Also Published As

Publication number Publication date
CN108475253A (zh) 2018-08-31
EP3394766A4 (en) 2019-10-09
WO2017112195A1 (en) 2017-06-29
EP3394766A1 (en) 2018-10-31
US20170185413A1 (en) 2017-06-29
TW201732558A (zh) 2017-09-16

Similar Documents

Publication Publication Date Title
TWI725077B (zh) 用於排序的處理器、系統和方法
US10572376B2 (en) Memory ordering in acceleration hardware
TWI731893B (zh) 具有載入索引和預提取聚集操作之處理器、方法及系統
TWI738674B (zh) 與快取控制操作有關的處理器、系統及非暫時性機器可讀媒體
CN108334458B (zh) 存储器高效的末级高速缓存架构
CN108475199B (zh) 用于执行密钥值查找指令的处理设备
US10635447B2 (en) Scatter reduction instruction
TWI720056B (zh) 用於設置多重向量元素操作之指令及邏輯
TWI737652B (zh) 併合乘-加(fma)低功能性單元
US20170177543A1 (en) Aggregate scatter instructions
US20170177340A1 (en) Vector store/load instructions for array of structures
US10691454B2 (en) Conflict mask generation
TWI733714B (zh) 用以執行共軛置換指令的處理裝置
CN108292219B (zh) 浮点(fp)加法低指令功能单元
TWI751990B (zh) 衝突罩生成
TW201729081A (zh) 用於以向量為基礎的位元操控之指令及邏輯
TWI724066B (zh) 分散縮減指令