TWI567556B - 無區域性提示向量記憶體存取之處理器、方法、系統與指令 - Google Patents
無區域性提示向量記憶體存取之處理器、方法、系統與指令 Download PDFInfo
- Publication number
- TWI567556B TWI567556B TW104118928A TW104118928A TWI567556B TW I567556 B TWI567556 B TW I567556B TW 104118928 A TW104118928 A TW 104118928A TW 104118928 A TW104118928 A TW 104118928A TW I567556 B TWI567556 B TW I567556B
- Authority
- TW
- Taiwan
- Prior art keywords
- regional
- memory
- instruction
- data
- vector
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims description 467
- 238000000034 method Methods 0.000 title claims description 42
- 230000004044 response Effects 0.000 claims description 41
- 238000012545 processing Methods 0.000 claims description 22
- 239000000872 buffer Substances 0.000 claims description 13
- VOXZDWNPVJITMN-ZBRFXRBCSA-N 17β-estradiol Chemical compound OC1=CC=C2[C@H]3CC[C@](C)([C@H](CC4)O)[C@@H]4[C@@H]3CCC2=C1 VOXZDWNPVJITMN-ZBRFXRBCSA-N 0.000 description 72
- 238000010586 diagram Methods 0.000 description 50
- 238000006073 displacement reaction Methods 0.000 description 43
- 238000009419 refurbishment Methods 0.000 description 27
- 239000000463 material Substances 0.000 description 19
- 238000006243 chemical reaction Methods 0.000 description 17
- 238000007667 floating Methods 0.000 description 15
- 235000012431 wafers Nutrition 0.000 description 11
- 238000004891 communication Methods 0.000 description 10
- 230000000873 masking effect Effects 0.000 description 10
- 230000003416 augmentation Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 238000004519 manufacturing process Methods 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 7
- 230000036961 partial effect Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 239000003795 chemical substances by application Substances 0.000 description 6
- 230000000295 complement effect Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 238000005056 compaction Methods 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000006467 substitution reaction Methods 0.000 description 5
- 230000002123 temporal effect Effects 0.000 description 5
- 235000008504 concentrate Nutrition 0.000 description 4
- 239000012141 concentrate Substances 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 239000006185 dispersion Substances 0.000 description 4
- 238000009418 renovation Methods 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 239000013078 crystal Substances 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 238000005067 remediation Methods 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 230000001629 suppression Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 235000009854 Cucurbita moschata Nutrition 0.000 description 1
- 240000001980 Cucurbita pepo Species 0.000 description 1
- 235000009852 Cucurbita pepo Nutrition 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008602 contraction Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000001066 destructive effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000009396 hybridization Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000007261 regionalization Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 235000020354 squash Nutrition 0.000 description 1
- 239000011232 storage material Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8061—Details on data memory access
- G06F15/8069—Details on data memory access using a cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/27—Using a specific cache architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Complex Calculations (AREA)
Description
實施例係關於處理器。特別地,實施例關於執行例如集中及/或分散指令等向量記憶體存取指令之處理器。
處理器通常可操作以執行指令以存取記憶體。舉例而言,處理器可以執行載入指令以從記憶體載入或讀取資料及/或儲存指令以將資料儲存至或寫入記憶體。
某些處理器可操作以執行向量集中指令。這些向量集中指令也簡稱為集中指令。2011年出版之英特爾®進階向量擴充程式參考,文獻參考號319433-011,說明多個集中指令。實例包含VGATHERDPD、VGATHERQPD、VGATHERDPS、VGATHERQPS、VPGATHERDD、VPGATHERQD、VPGATHERDQ、及VPGATHERQQ。這些集中指令會促使處理器從多個對應的記憶體索引所標示的記憶體中的區域,集中、讀取、或載入多個可能的非鄰
接的資料元。集中的資料元可以儲存在處理器的目的地向量暫存器中。
100‧‧‧系統
103‧‧‧快取階層
302‧‧‧處理器
602‧‧‧處理器
1200‧‧‧暫存器架構
1500‧‧‧處理器
1700‧‧‧系統
1800‧‧‧系統
1900‧‧‧系統晶片
參考用以顯示實施例之說明及附圖,可最佳地瞭解本發明。在圖式中:圖1是用於執行包含具有快取階層和記憶體的處理器之實施例的系統實施例之方塊圖。
圖2是處理無區域性提示向量記憶體存取指令的實施例之方法的實施例之方塊流程圖。
圖3是可操作以執行無區域性提示集中指令的實施例之處理器實施例的方塊圖。
圖4是可被執行以回應無區域性提示集中指令的實施例之集中操作的實施例方塊圖。
圖5是可被執行以回應無區域性提示遮罩集中指令實施例的遮罩集中操作之實施例的方塊圖。
圖6是可操作以執行無區域性提示分散指令的實施例之處理器的實施例的方塊圖。
圖7是可被執行以回應無區域性提示分散指令的實施例之分散操作之實施例方塊圖。
圖8是可被執行以回應遮罩無區域性提示分散指令實施例的遮罩分散操作之實施例的方塊圖。
圖9A-9C是方塊圖,說明根據發明的實施例之同屬向量友善指令格式及其指令樣板。
圖10A-B是方塊圖,顯示根據本發明的實施例之舉例說明的特定向量友善指令格式及運算碼欄位。
圖11A-D是方塊圖,顯示根據本發明的實施例之舉例說明的特定向量友善指令格式及其欄位。
圖12是根據暫存器架構的實施例之方塊圖。
圖13A是方塊圖,顯示有序管線的實施例及重新命名亂序發佈/執行管線的暫存器之實施例。
圖13B是包含耦合至執行引擎單元的前端單元之處理器核心的實施例的方塊圖,執行引擎單元及前端單元都耦合至記憶體單元。
圖14A是單一處理器核心伴隨其對晶粒互連網路的連接及其本地子集合等級2(L2)快取的實施例之方塊圖。
圖14B是圖14A的處理器核心的部份之展開視圖的實施例的方塊圖。
圖15是具有一個以上的核心之處理器、具有整合記憶體控制器、及具有整合的圖形之處理器的方塊圖。
圖16是電腦架構的第一實施例的方塊圖。
圖17是電腦架構的第二實施例的方塊圖。
圖18是電腦架構的第三實施例的方塊圖。
圖19是電腦架構的第四實施例的方塊圖。
圖20是根據本發明的實施例之使用軟體指令轉換器以將源指令集中的二進位指令轉換成標的指令集中的二進位指令之方塊圖。
此處揭示的是無區域性提示向量記憶體存取指令(例如,無區域性提示向量集中指令、無區域性提示向量分散指令)、執行指令的處理器、當執行指令時由處理器執行的方法、以及具有一或更多處理器以執行指令之系統。在下述說明中,揭示眾多特定細節(例如,特定指令操作、資料格式、處理器配置、微架構細節、操作序列、等等)。但是,沒有這些特定細節,仍可實施實施例。在其它情形中,習知的電路、結構及技術未詳細顯示以免有礙本說明的瞭解。
圖1是包含具有快取階層103之處理器102和記憶體118的系統100之實施例。處理器及記憶體藉由例如一或更多互連、晶片組、等等耦合機構116而耦合在一起。處理器包含一或更多核心104。在所示的實例中,處理器包含第一核心(核心1)104-1及選加地高達第N核心(核心N)104-N。處理器包含所需數目的核心(例如,通常範圍從1至數佰數量級)。核心1包含一或更多執行單元106-1及核心N包含一或更多執行單元106-N。
典型地,處理器也具有一或更多快取108、110。快取代表比記憶體118相對更小及更快的儲存型式。快取也比記憶體更接近核心及/或執行單元。快取用以快取或儲存從記憶體被帶入處理器(例如,由集中指令112)之資料,以提供後續更快地存取資料。當處理器要從記憶體讀取資料時,或是將資料寫至記憶體時,則其首先檢查看看
資料的拷貝是否儲存在快取中。假使在快取中發現資料,則相較於資料從記憶體存取的情形,處理器可以更快速地從快取存取資料。結果,包含快取有助於降低存取要由處理器處理的資料所需的平均時間量。接著,這有助於處理器的性能及/或輸貫量。
再參考圖1,所示的處理器具有包含多等級快取之快取階層103。快取等級在它們與處理器的核心及/或執行單元的相對接近度上不同。核心1具有第一級快取或等級1(L1)快取108-1。類似地,核心N具有L1快取108-N。各L1快取可以專用於包含其之對應核心。L1快取代表最接近核心的快取等級。處理器也具有第二級快取或等級2(L2)快取110。L2快取代表次接近核心的快取等級。在某些實施例中,L2快取可以由核心共用。雖然未顯示,但是,可以選加地有更遠離核心之一或更多其它快取等級(例如,等級3(L3)快取)。較接近核心的快取(例如L1快取)通常傾向於比較遠離核心的快取(例如L2快取)更小。通常,相對較接近核心的一或更多快取等級會與核心單晶地集成於晶粒上,而相對較遠離核心的一或更多快取等級可以與核心單晶地集成於晶粒上、或是在晶粒外(例如,在安裝於主機板上的分別晶片中)。從核心存取至L1快取傾向於比存取至L2快取更快,從核心存取至L2快取傾向於比存取至L3快取更快,以及,從核心存取至L3快取傾向於比從核心存取至外部記憶體更快。
將快取包含於處理器中的一原因是記憶體參考通常具有「區域性」。舉例而言,記憶體中資料的參考通常具有時間的及/或空間的區域性。時間的區域性意指當從記憶體中的位址存取資料時,相同的資料在短時間內可能再度被存取。舉例而言,這可為當相同值需要在迴路中被再使用、在計算集合中被重複使用、或是基於各種其它原因等等情形。在這些情形中,有利的是在從記憶體存取資料之後,將資料儲存在快取中,以致於從快取可以更快地執行後續的資料存取,取代從記憶體緩慢地執行後續的資料存取。
空間區域性意指當從記憶體中的位址存取給定的資料時,在鄰近位址之鄰近資料也容易在短時間內被存取。舉例而言,二資料集可以都是相同內容的一部份(例如影像、表格、資料結構、視訊、等等)、以及在大約相同的時間被處理。空間區域性也可基於其它原因而發生。快取藉由不僅儲存初始所需的資料也儲存來自鄰近位址的鄰近資料,而利用空間區域性。典型地,即使當最初僅需要更加少量的資料時,從記憶體存取的及儲存在快取中的最小資料量仍是整體快取列資料量。舉例而言,即使最初僅需要單一8位元、16位元、32位元、64位元或128位元資料元,典型地,仍然是整個512位元快取列被從記憶體存取及被儲存在快取中。假使空間區域性存在,則由於被帶入快取中的額外資料在最近的未來也可能將被需要,所以,這將是有利的。
為了快取是有效的,重要的是使它們保持被最近的未來也將被需要之有關資料填充。在操作期間,在快取中的資料將由最近的未來不可能被需要之逐出資料連續地改變,以清出空間用於最近的未來可能被需要的資料。在用於此目的之技藝中,知道有各式各樣的更換演繹法及政策。這些更換演繹法及政策通常由於時間區域性而高度地根據資料的年齡(例如,最近最少被使用的標示)。
藉由將從記憶體118集中的資料元儲存在快取階層103中,集中指令112可以利用時間的及/或空間的區域性。很多應用及資料型式在它們的存取串中顯示顯著的空間及/或時間區域性,並因而在用於被集中的各資料元件的快取中存取及儲存整個快取列資料量時能夠得利。但是,並非所有應用及/或資料型式具有充份的時間及/或空間區域性,以證明在用於集中及/或分散指令的快取中存取及儲存整個快取列是正當的。某些應用及/或資料型式對於要被集中及/或分散的資料元呈現些微的空間及/或時間區域性。某些資料元曾經被需要,但是在最近的未來不可能再度被需要。舉例而言,這可為某些串流資料應用、高性能計算應用、具有很稀疏記憶體存取的串的應用、及各種其它應用中的情形。此外,在很多情形中,程式人員及/或軟體(例如作業系統)能夠知道此點。一可能的方式是允許此資料儲存在快取中,正如同其它資料從記憶體被帶入處理器中般。但是,此方式的缺點是儲存此資料於快取中會將可能由處理器再使用的經常被使用之資料逐
出。而且,此資料可以停留在快取中一段時間直到最終被逐出快取為止,通常不會被再使用。此資料有效地污染快取並佔據有價值的儲存空間,所述有價值的儲存空間是可被替代地用以儲存經常被使用的資料以增加性能。
此外,集中指令112是集中資料元的向量價值之緊縮或向量型指令。假使充份的空間及/或時間區域性不存在時,各被集中的資料元可能產生整個快取列的資料價值而被儲存於混合快取污染量的快取中。舉例而言,對於集中四、八、十六、或三十二資料元之某些集中指令,這變得特別顯著。此外,當沒有充份的區域性時,存取用於各被集中的資料元之整個快取列資料量會浪費有價值的匯流排或是互連頻寬(例如,在通至快取的互連上及/或通至記憶體的互連)。舉例而言,當僅需要單一8位元、16位元、32位元、或64位元資料元以及有低空間區域性時,會從記憶體取出512位元。僅存取所需的資料元、或是至少小於整個快取列資料量,會較佳地利用互連頻寬。
再參考圖1,處理器及/或一或更多核心會接收及執行無區域性提示記憶體存取指令114(例如無區域性提示向量載入或集中指令及/或無區域性提示向量儲存或分散指令)。提示會標示要被存取的資料(例如被集中或分散)未具有充份的空間及/或時間區域性。在某些實施例中,無區域性提示是無時間區域性提示。在其它實施例中,無區域性提示可為無空間區域性提示。在又其它實施例中,無區域性提示可為無時間及無空間區域性提示。在無時間
區域性提示的情形中,在某些實施例中,被集中的資料元會繞過快取階層103及/或未被儲存於快取階層103中,有助於降低快取污染。在無空間區域性提示的情形中,在某些實施例中,僅以子快取列資料量(例如,快取列資料量的一半或四分之一)、或是在某些情形中以單一資料元資料量,執行資料元存取,有助於降低互連頻寬的浪費及/或降低功率耗損。有利地,在沒有充份的空間及/或時間區域性時,無區域性提示記憶體存取指令114有助於增進性能及/或降低功率耗損。
圖2是處理無區域性提示向量記憶體存取指令的實施例之方法220的實施例之流程圖。在各式各樣的實施例中,由處理器、指令處理設備、或是其它數位邏輯裝置執行方法。
方法包含在區塊221接收無區域性提示向量記憶體存取指令。在各式各樣的態樣中,在處理器或其一部份處(例如,指令提取單元、解碼單元、等等)接收指令。在各式各樣的態樣中,可從晶粒外來源(例如,從記憶體、互連、等等)、或是從晶粒上來源(例如,從指令快取、指令佇列、等等),接收指令。無區域性提示向量記憶體指令可以指明或以其它方式標示具有眾多記憶體索引的源緊縮記憶體索引。在某些實施例中,無區域性提示向量記憶體存取指令提供無區域性提示給處理器,以用於要依記憶體索引被存取的資料元。
在區塊222,存取在根據記憶體索引的記憶體位置之
資料元,以回應無區域性提示向量記憶體存取指令。在某些實施例中,方法包含用於圖3-8中任一圖的下述說明或顯示的任何操作。
圖3是可操作以執行無區域性提示集中指令314的實施例之處理器302的實施例之方塊圖。無區域性提示集中指令於此也稱為無區域性提示向量載入指令。在某些實施例中,處理器可為一般用途處理器(例如用於桌上型、膝上型、或其它電腦中用的型式之一般用途微處理器或中央處理單元(CPU))。替代地,處理器可為特定用途處理器。適當的特定用途處理器的實例包含但不限於圖形處理器、網路處理器、通訊處理器、密碼處理器、共處理器、嵌入式處理器、數位訊號處理器(DSP)、及控制器(例如微控制器)。處理器可為各種複雜指令集計算(CISC)處理器、精簡指令集計算(RISC)處理器、超長指令字(VLIW)處理器、其混合、其它型式的處理器、或是具有這些不同處理器的組合(例如在不同的核心中)中的任一。
在操作期間,處理器302接收無區域性提示集合指令314的實施例。舉例而言,可以從指令提取單元、指令佇列、等等,接收無區域性提示集中指令。無區域性提示集中指令代表巨集指令、組合語言指令、機器碼指令、或處理器的指令集的其它指令或控制訊號。
在某些實施例中,無區域性提示集中指令可以明顯地指明(例如經由一或更多欄位或是位元集)、或以其它方
式標示(例如不明確地標示)源緊縮記憶體索引334。指令也指明或以其它方式標示目的地運算元或目的地儲存位置(例如目的地緊縮資料暫存器),其中,緊縮資料結果336是要被儲存。
在某些實施例中,假使無區域性提示集中指令選加地為遮罩或預測的指令,則其可指明或以其它方式標示源緊縮資料作業遮罩338,但是,這並非必要。如同所示,在某些實施例中,源緊縮資料作業遮罩可以儲存在緊縮資料作業遮罩暫存器340的集合中,但是,這並非必要。在其它實施例中,源緊縮資料作業遮罩可以儲存在另一儲存位置或是由指令指明(例如欄位或立即)。如同下述將進一步說明般,源緊縮資料作業遮罩可以用以遮罩、預測、或有條件地控制集中作業。
再參考圖3,處理器包含解碼單元或解碼器330。解碼單元接收及解碼無區域性提示集中指令314。解碼單元輸出一或更多微指令、微作業、微碼登入點、已解碼指令或是控制訊號、或是反應、代表、及/或導自無區域性提示集中指令之其它相對較低階的指令或控制訊號。一或更更多較低階指令或控制訊號可經由一或更多較低階(例如,電路級或硬體級)作業來實施更高階的無區域性提示集中指令。使用包含但不限於微碼唯讀記憶體(ROM)、查詢表、硬體實施、可編程邏輯陣列(PLA)、及用以實施此技藝者習知的解碼單元之其它機構等各式各樣的不同機構,來實施解碼單元。
在某些實施例中,取代直接提供給解碼單元330的無區域性提示集中指令,可以選擇地使用指令仿真器、翻譯器、解譯器、或其它指令轉換模組。各種型式的指令轉換模組是此技藝者中熟知的且可以以軟體、硬體、韌體、或其組合來實施。在某些實施例中,指令轉換模組位於處理器外部,例如,在分開的晶粒上及/或在記憶體中(例如,靜態、動態、或運行時間仿真模組)。舉例而言,指令轉換模組接收屬於第一指令集的無區域性提示集中指令以及模擬、翻譯、變體、解譯、或以其它方式轉換無區域性提示集中指令成為一或更多對應的或導出的屬於第二不同指令集之中間指令或控制訊號。第二指令集的一或更多中間指令或控制訊號可提供給解碼單元,解碼單元將它們解碼成為可由處理器原有的硬體(例如一或更多執行單元)執行之一或更多較低階指令或控制訊號。
再參考圖3,處理器也包含緊縮資料暫存器332的集合。各緊縮資料暫存器代表可操作以儲存緊縮資料、向量資料、或SIMD資料之晶粒上的儲存位置。緊縮資料暫存器代表軟體及/或程式人員可看見的架構上可看見的暫存器(例如,架構暫存器檔案)、及/或是由指令集的指令所標示以辨識運算元的暫存器。這些架構暫存器與給定的微架構中非架構上可看見的或非架構可見的暫存器(例如,暫時暫存器、重排序緩衝器、退役暫存器、等等)是對比的。緊縮資料暫存器可以利用習知的技術而於不同的微架構中以不同的方式實施且不限於任何特定型式的電
路。適當型式的暫存器之實例包含但不限於專用的實體暫存器、使用暫存器重命名的動態分配的實體暫存器、及其組合。
在某些實施例中,源緊縮記憶體索引334可選擇地儲存於第一緊縮資料暫存器中,以及,緊縮資料結果336可選擇地儲存於第二緊縮資料暫存器中。替代地,其它儲存位置可用於這些運算元中之一或更多。此外,在某些實施例中,用於源運算元的緊縮資料暫存器可選擇地被再使用作為目的地運算元(例如,緊縮資料結果336可選擇地寫於或儲存於源緊縮記憶體索引334上)。
再參考圖3,執行單元306與解碼單元330及緊縮資料暫存器332耦合,且選擇性地與緊縮資料作業遮罩338耦合。執行單元接收代表及/或導自無區域性提示集中指令之一或更多已解碼或以其它方式轉換的指令或控制訊號。執行單元也接收由無區域性提示集中指令標示的源緊縮記憶體索引334。在某些情形中,舉例而言,假使一般用途暫存器是要提供要被用以轉換記憶體索引至記憶體位址(例如,基礎、比例、位移、等等)之資訊,則執行單元也可以選擇地與一般用途暫存器342的集合相耦合。
執行單元可操作以回應及/或因無區域性提示集中指令的結果(例如,回應從指令直接或間接(例如經由仿真)解碼之一或更多指令或控制訊號),以存取由源緊縮記憶體索引334所標示的記憶體中的位置。舉例而言,此存取包含從對應的緊縮記憶體索引所標示的記憶體中的位
置集中或是載入資料元、以及將它們儲存在緊縮資料結果336中。在某些實施例中,可選擇地執行遮罩集中作業。在某些實施例中,執行單元可執行關於圖4-5中任一圖所示及說明的任何作業,但是本發明的範圍不侷限於此。
在某些實施例中,集中作業以無區域性提示實施。在某些實施例中,集中作業以無時間區域性提示實施。在其它實施例中,集中作業以無空間區域性提示實施。在又其它實施例中,集中作業以無時間區域性及無空間區域性提示實施。執行單元可以提供無區域性提示載入作業348給一或更多快取控制器344。在某些實施例中,有單一快取等級及單一快取控制器(例如L1快取控制器)。在其它實施例中,有二或更多快取控制器(例如L1快取控制器、L2快取控制器、及選加地L3快取控制器)。
在某些實施例中,假使無區域性提示載入操作348對資料的請求是具有無空間區域性提示時,以及假使請求在快取308中命中時,則相關的快取控制器344會將子快取列資料量352從快取308歸還。在各式各樣的實施例中,子快取列資料量352可以僅為快取列的一半(例如僅為512位元快取列的256位元)、僅為快取列的四分之一(例如僅128位元)、僅為快取列的八分之一(例如僅64位元)、或是僅為單一資料元(例如1個128位元、64位元、32位元、16位元、或8位元的資料元)。
相反地,假使無區域性提示載入操作348對資料的請求是具有無空間區域性提示時,以及假使請求在所有快取
308中未命中時,則無區域性提示載入操作348請求資料會被送至記憶體控制器346。在某些實施例中,記憶體控制器可以從記憶體(例如外部記憶體)執行子快取列資料存取及歸還350。如前所述,在各式各樣的實施例中,子快取列資料存取及歸還350可僅為快取線的一半(例如僅256位元)、僅為快取列的四分之一(例如僅128位元)、僅為快取列的八分之一(例如僅64位元)、或是僅為單一資料元(例如64位元、32位元、16位元、或8位元的資料元)。亦即,相較於一般用於沒有無區域性的載入操作(例如用於傳統的集中指令的載入操作)之情形,記憶體控制器可以以更小尺寸的存取及資料歸還而從記憶體載入資料。關於一特定實例,通常被用以存取整個512位元快取列資料量之成對的256位元匯流排訊號中有一訊號可以從記憶體控制器送至動態隨機存取記憶體(DRAM),而被傳送的一訊號是包含所需資料元的訊號。在某些實施例中,可以選擇地使用充份含有所需的資料元之最小尺寸存取及資料歸還。記憶體控制器可以提供子快取列資料歸還351給快取控制器344。快取控制器可以提供對應的子快取列資料量352給執行單元。在其它實施例中,子快取列資料量可以在某些而不是全部這些互連上傳輸。
習知地,假使整個快取列正被存取時,則位址的最低階位元(例如位址的最低階6個位元)都是零。相對地,假使僅有一部份快取列正被存取,則某些或所有這些最低
階位元不會都是零,而是被需要以指明快取列內的所需資料之位置(例如,在一實施例中,在512位元快取列內單一64位元、32位元、16位元、或8位元資料元)。在某些實施例中,在記憶體存取中,資料元的大小也需要被標示。
有利地,子快取列資料存取和歸還350及/或子快取列資料存取和歸還351及/或子快取列資料存取和歸還352中任一或更多有助於降低相關互連上浪費的頻寬。這接著有助於增進處理器速度及/或性能,特別是在(至少有時)傾向於受限於記憶體存取頻寬之應用中。在這些情形中,處理器能夠比從記憶體取得資料更快地處理資料。假使所需的資料可以從記憶體更快地取得時,則整體處理器速度及/或性能可以增進。使用可利用的記憶體存取頻寬以存取真正有用的更大部份的資料,以及,當有低的真實空間區域性時,較少部份的「緊隨」空間區域性假設資料會提供優點。當資料存取具有足夠低的空間區域性時,這些較小的存取會是適當的。此外,這些較小的存取也有助於降低歸還所需資料元之功率消耗。
在某些實施例中,假使無區域性提示載入作業348對資料的請求具有無時間區域性(例如無時間的)提示,以及,假使請求在快取308中未中,則如同正常用於一般集中指令(亦即沒有無區域性提示)般,有關的快取控制器344不會將快取中的儲存空間分配用於被請求的資料。假使有多個快取等級,則用於更高等階的快取之快取控制器
(例如較接近核心)會提供請求給用於更低階快取的控制器(例如較遠離核心)。在快取未中時,在某些實施例中,當被請求的資料從記憶體歸還時,各快取控制器類似地不會在它們相關的快取中分配儲存空間以用於被請求的資料。在某些實施例中,假使資料存在於更低階快取中,則其會被歸還給執行單元306,而不儲存在任何更高階的快取中。假使資料未存在於任何快取308中時,用於資料的請求可以提供給記憶體控制器346。假使命中也是無空間區域性提示,則記憶體控制器會從記憶體取出所需資料,選擇性地取出子快取列資料量350,否則,假使提示僅是無時間區域性提示,則取出整個快取列資料量。記憶體控制器可將取出的資料提供給快取控制器。在某些實施例中,快取控制器提供資料給執行單元306,而不將取出的資料儲存在快取中。有利地,省略儲存資料於快取中,這有助於降低快取污染及/或有助於增加處理器性能,以及,當資料存取具有充份低的時間區域性時,這是適當的。一旦執行單元收到所有被請求的資料元,以及,將它們置於緊縮資料結果336中時(例如,在緊縮資料暫存器中),其會發出指令完成的訊息。
執行單元及/或處理器包含特定或特別的邏輯(例如,電晶體、積體電路、或是其它可能與韌體結合的硬體(例如儲存在非依電性記憶體中的指令)及/或軟體),為了回應及/或因無區域性提示集中指令的結果,其可操作以執行無區域性提示集中作業。舉例而言,執行單元包
含集中執行單元、集中及/或分散執行單元、記憶體執行單元、記憶體存取單元、載入單元、載入及/或儲存單元、等等。
圖4是被執行以回應無區域性提示集中指令的實施例之集中作業420的實施例之方塊圖。集中指令可以指明或是標示具有眾多緊縮記憶體索引的源緊縮記憶體索引434。在所示的實施例中,有八個記憶體索引,但是本發明的範圍不侷限於此。在所示的實例中,記憶體索引的值是從最低效位置(在左側)往右至最高效位置(在右側),134、231、20、135、5、21、30...186。這些值僅為舉例說明。其它實施例包含更少或更多的記憶體索引。一般而言,在源緊縮記憶體索引中的記憶體索引的數目可以等於源緊縮記憶體索引運算元的位元尺寸除於各記憶體索引的位元尺寸。在各式各樣的實施例中,源緊縮記憶體索引運算元的寬度可為64位元、128位元、256位元、512位元、或1024位元,但是本發明的範圍不侷限於此。在各式各樣的實施例中,各記憶體索引的尺寸可為16位元、32位元、或64位元,但是本發明的範圍不侷限於此。其它的源緊縮記憶體索引寬度及記憶體索引尺寸也是適當的。
為了回應及/或因集中指令的結果,可以執行集中作業420,以及,緊縮資料結果436可以儲存在目的地儲存位置。在一態樣中,集中指令可以指明或是標示目的地儲存位置。在某些實施例中,緊縮資料結果包含從源緊縮記
憶體索引434的對應記憶體索引所標示之記憶體418中可能的非連續記憶體位置載入或集中之資料元。舉例而言,使用共同比例及共同基礎(例如,記憶體位址=記憶體索引*比例+基礎),將記憶體索引轉換成記憶體位址。舉例而言,在所示的實施例中,記憶體索引134標示儲存資料元B1的記憶體位置,記憶體索引231標示儲存資料元B2的記憶體位置、等等。
在某些實施例中,集中作業包含對記憶體418的子快取列資料存取450。在某些實施例中,集中作業包含繞過處理器的快取之來自記憶體的子快取列資料歸還452。並非存取全部快取列(例如512位元快取列),在各式各樣的實施例中,子快取列資料存取及歸還可以存取及歸還僅快取列的一半(例如256位元)、快取列的四分之一(例如128位元)、快取列的八分之一(例如64位元)、或是僅單一資料元(例如64位元、32位元、16位元、或8位元的資料元)。在某些實施例中,被歸還的資料可以不儲存在處理器的任何快取中。
在所示的實施例中,緊縮資料結果包含八個資料元,但是本發明的範圍不侷限於此。其它實施例包含更少或更多的結果資料元。一般而言,結果資料元的數目等於緊縮資料結果的位元寬度除以各結果資料元的位元尺寸及/或等於源緊縮記憶體索引中的記憶體索引的數目。在各式各樣的實施例中,緊縮資料結果的寬度可為64位元、128位元、256位元、512位元、或1024位元,但是,但是本
發明的範圍不侷限於此。在各式各樣的實施例中,各結果資料元的尺寸可為16位元、32位元、或64位元,但是本發明的範圍不侷限於此。在所示的實施例中,緊縮資料結果儲存從最低效位置(在左方)向右至最高效位置(在右方)之資料元B1至B8。
圖5是顯示遮罩集中作業520的實施例之方塊圖,遮罩集中作業520會被執行以回應遮罩無區域性提示集中指令的實施例。圖5的遮罩作業與圖4的未遮罩作業具有類似性。為了避免模糊說明,將主要說明的不同的及/或增加的圖5的遮罩作業之特徵,而不重覆與圖4的未遮罩作業相關的所有類似或共同特徵。但是,除非另外指明或清楚顯示,否則,先前說明的圖4的未遮罩作業的特徵也可選加地施加至圖5的遮罩作業。
遮罩集中作業可以指明或是以其它方式標示具有眾多緊縮記憶體索引的源緊縮記憶體索引534。源緊縮記憶體索引、以及記憶體索引可以類似於或是同於參考圖3-4所述般,以及可以具有相同的變異及替代。
遮罩集中指令可以增加地指明(例如,明確地指明)或是以其它方式標示(例如不明確地標示)源緊縮資料作業遮罩538。緊縮資料作業遮罩於此也簡稱為作業遮罩、預測遮罩、或遮罩。遮罩代表預測作業元或是條件控制作業元,可用以預測、或條件式地控制、或遮罩對應部份是否要被執行及/或對應結果是否要被儲存。在某些實施例中,遮罩或或預測可以是依每一資料元粒度,以致於在不
同對的對應資料元上的作業可以分別地及/或彼此獨立地被預測或有條件地受控。遮罩包含多個遮罩元、預測元、或條件式控制元。在一態樣中,以與對應的源緊縮記憶體索引的對應記憶體索引及/或對應的結果緊縮資料的結果資料元之一對一的對應性,包含遮罩元。舉例而言,對應的遮罩元、記憶體索引、及結果資料可以佔據運算元內相同的有關部份。
如同所示,在某些實施例中,各遮罩元可為單一遮罩位元。在這些情形中,遮罩具有用於各記憶體索引及/或各結果資料元的位元。在源緊縮記憶體索引具有八個記憶體索引的實例中,以及,在各遮罩元是單一位元的情形中,緊縮資料作業遮罩可為8位元寬,而以各位元代表對應於相同的有關運算元位置中的記憶體索引之預測或遮罩位元。舉例而言,在說明中,對應的位置是在彼此上方垂直對齊。各遮罩位元的值控制對應的集中或載入作業是否要被執行及/或對應的結果資料是否要被儲存。各遮罩位元具有第一值,以允許使用對應的記憶體索引來執行集中或載入作業以及允許對應的結果資料元儲存在結果緊縮資料中,或是具有第二不同值,以不允許使用對應的記憶體索引來執行集中或載入作業以及/或不允許對應的結果資料元儲存在結果緊縮資料中。根據一可能的方式,如同所示,被清除至二進位零(亦即0)的遮罩位元可以代表遮離作業,對此作業,結果資料元不被儲存,而遮罩位元被設定於二進位一(亦即1)可以代表未遮罩作業,對此作
業,集中的結果資料元會被儲存。在所示的實例中,從最低效位元位置(在左方)至最高效位元位置(在右方)之遮罩位元是1,0,1,1,1,0...1。這僅是一說明的實例。在其它實施例中,二或更多位元可選擇地用於各遮罩元(例如,各遮罩元可以具有與各對應的源資料元相同的位元數目,以及,所有位元或是少至單一位元可以被用以決定遮罩)。
為了回應及/或因遮罩集中指令的結果,可以執行遮罩集中作業520,以及,儲存緊縮資料結果536。緊縮資料結果可以類似於或是同於參考圖4所述般,以及可以具有相同的變異及替代。在一態樣中,緊縮資料結果可儲存在遮罩集中指令所標示的目的地儲存位置。遮罩集中指令可以從受到源緊縮資料作業遮罩538的遮罩、預測、或條件式控制的對應記憶體索引所標示之記憶體518中可能的非連續位置,載入或集中資料元。在某些實施例中,假使緊縮資料作業遮罩中對應的遮罩位元未被遮罩時(例如,在顯示中被設定位二進位1),則資料僅被集中及儲存於對應的結果資料元中。相對地,對應於被遮罩的遮罩元之結果資料元可以具有非根據集中作業的預定值。舉例而言,對應的集中作業無需被執行,或是假使對應的集中作業被執行時,則對應的集中資料元無需儲存在對應的結果資料元中。反之,固定的或預定的值可以儲存在對應的結果資料元中。在顯示的實例中,對應於遮離遮罩元的結果資料元(在所示的實例中具有零的值)具有星號(*)以
代表此固定的或預定的值。特別固定或預定值可以取決於用於特定實施之遮蔽型式。在某些實施例中,可以使用零遮蔽。在零遮蔽時,遮離結果資料元可以零化(例如,被強制具有零的值)。或者,其它預定值可以選擇性地儲存於這些遮離結果資料元中。在所示的實例中,在目的地中的緊縮資料結果從最低效位置(在左方)向右至最高效位置(在右方)儲存資料元B1、B2、*、B4、B5、B6、*、B8。
在某些實施例中,遮罩集中作業包含對記憶體518的子快取列資料存取550。在某些實施例中,集中作業包含繞過處理器的快取之來自記憶體的子快取列資料歸還552。並非存取全部快取列(例如512位元快取列),在各式各樣的實施例中,子快取列資料存取及歸還可以存取及歸還僅快取列的一半(例如256位元)、快取列的四分之一(例如128位元)、快取列的八分之一(例如64位元)、或是單一資料元(例如64位元、32位元、16位元、或8位元的資料元)。在某些實施例中,被歸還的資料可以不儲存在處理器的任何快取中。
圖6是可操作以執行無區域性提示分散指令614的實施例之處理器602的實施例之方塊圖。無區域性提示分散指令於此也稱為無區域性提示向量儲存或寫入指令。處理器602包含解碼單元630、執行單元606、緊縮資料暫存器632、源緊縮記憶體索引634、緊縮資料作業遮罩暫存器640、源緊縮資料作業遮罩638、一般用途暫存器
642、一或更多快取控制器644、一或更多快取608、及記憶體控制器646。除非另外指明,否則,執行分散指令而非集中指令除外,處理器602及上述組件可選擇地具有處理器302的某些或全部特徵、變異、及替代以及對應地提及之圖3的組件。為免模糊說明,主要將說明不同的及/或增加的特徵,而不重複所有共同特徵及可能變異。
在作業期間,處理器602可接收無區域性提示分散指令614的實施例。無區域性提示分散指令代表巨集指令、組合語言指令、機器碼指令、或處理器的指令集的其它指令或控制訊號。在某些實施例中,無區域性提示分散指令可以明顯地指明或以其它方式標示源緊縮記憶體索引634及源緊縮資料660。在某些實施例中,源緊縮記憶體索引可選擇地儲存於第一緊縮資料暫存器中,以及,源緊縮資料可以選擇地儲存於第二緊縮資料暫存器中。在某些實施例中,假使無區域性提示分散指令選擇性地為遮罩或預測指令,則其地可指明或以其它方式標示源緊縮資料作業遮罩638,但是,這並非必要。
解碼單元630可以將無區域性提示分散指令614解碼。執行單元606與解碼單元630、緊縮資料暫存器632、及可選擇地與源緊縮資料作業遮罩638(例如遮罩暫存器640)相耦合。執行單元可接收源緊縮記憶體索引634以及源緊縮資料660。為回應及視無區域性提示集中指令(例如,為回應從指令解碼的一或更多指令或控制訊號),執行單元可操作以將來自源緊縮資料660的資料元
分散、儲存、或寫至對應的源緊縮記憶體索引634的緊縮記憶體索引所標示的記憶體中的位置。在某些實施例中,可選擇性地執行遮罩分散作業。在某些實施例中,執行單元可執行關於圖7-8中任一圖所示及說明的任何作業,但是本發明的範圍不侷限於此。執行單元及/或處理器包含特定或特別的邏輯(例如,電晶體、積體電路、或是其它可能與韌體結合的硬體(例如儲存在非依電性記憶體中的指令)及/或軟體),為了回應及/或因無區域性提示分散指令的結果,其可操作以執行無區域性提示分散作業。舉例而言,執行單元包含分散執行單元、集中及/或分散執行單元、記憶體執行單元、記憶體存取單元、儲存單元、載入及儲存單元、等等。
在某些實施例中,分散作業以無區域性提示實施。在某些實施例中,分散作業以無時間區域性提示實施。在其它實施例中,分散作業以無空間區域性提示實施。在又其它實施例中,分散作業以無時間區域性及無空間區域性提示實施。執行單元可以提供無區域性提示儲存作業或寫入作業662給一或更多快取控制器644。在某些實施例中,有單一快取等級及單一快取控制器(例如L1快取控制器)。在其它實施例中,有二或更多快取控制器(例如L1快取控制器、L2快取控制器、及選加地L3快取控制器)。
無時間區域性提示有多種方式可施加至分散指令。首先考慮在較低階快取(例如L2或L3快取)中分散作業命
中。實施不具無時間區域性提示的習知分散指令之一可能的方式是將具有命中資料元的快取列從較低階讀入較高階快取(例如L1快取)。然後,執行寫入以取代更高階快取(例如L1快取)中的資料元。但是,此方式的一可能缺點是其會造成非時間資料被向上帶至更高的快取階層中及/或更接近處理器。在某些實施例中,可以執行替代方式以回應無區域性提示分散指令的實施例。舉例而言,在某些實施例中,在分散作業命中更低階快取(例如L2或L3快取),而非傳送具有命中的資料元的快取列至更高階快取(例如L1快取)時,資料元可被保持在較低階快取中(例如L2或L3快取),以及,可以執行寫入以取代更低階快取中的資料元。此方式可以避免將非時間資料元帶至更高快取階層及/或更接近核心。在某些實施例中,在快取(例如L1快取、L2快取、或L3快取)中分散作業命中時,會將具有資料元的對應快取列從快取逐出至更低階快取或是從所有快取逐出至記憶體。然後,可以對記憶體執行寫入以取代資料元。在另一實施例中,這僅是快取列逐出演繹法或是替代策略中的再一件資訊。
假使無區域性分散或儲存作業662具有無空間區域性提示,以及假使在快取608中請求未命中,則相關作業可以提供給記憶體控制器646。在某些實施例中,記憶體控制器可以對記憶體執行子快取列尺寸分散、寫入、或儲存作業664。在各式各樣的實施例中,子快取列尺寸分散、寫入、或儲存作業664可以僅為快取列的一半(例如僅
256位元)、僅快取列的四分之一(例如僅128位元)、僅快取列的八分之一(例如僅64位元)、或單一資料元(例如僅64位元、32位元、16位元、或8位元資料元)。亦即,記憶體控制器以比通常用於無區域性提示寫入作業(例如用於習知分散指令的寫入作業)更小尺寸的寫入,將資料寫至的記憶體。關於一特定實例,一般用以寫入整個512位元快取列資料量之成對的256位元匯流排寫入訊號中僅一訊號可以從記憶體控制器傳送至DRAM,被傳送的訊號是包含所需資料元之訊號。在某些實施例中,可以選擇地使用足以取代所需資料元的最小尺寸寫入。有利地,這些較小的寫入有助於降低相關互連上浪費的頻寬。此外,這些較小寫入也有助於降低功率消耗。
圖7是顯示分散作業720的實施例之方塊圖,分散作業720會被執行以回應無區域性分散指令的實施例。分散作業可以指明或是以其它方式標示具有眾多緊縮記憶體索引的源緊縮記憶體索引734。源緊縮記憶體索引、以及記憶體索引可以類似於或是同於參考圖4所述般,以及可以具有相同的變異及替代。
分散指令也可以指明或是以其它方式標示具有要被分散或寫至記憶體之眾多緊縮資料的源緊縮資料660。在所示的實施例中,在源緊縮資料中有八個緊縮資料元,以B1至B8標示,但是本發明不侷限於此。其它實施例可以包含更多或更少要分散的資料元。一般而言,要分散的資料元的數目可以等於源緊縮記憶體索引中的記憶體索引的
數目。要分散的各資料元對應於多個記憶體索引中之不同的一索引(例如,在運算元內相同的有關位置中)。在各式各樣的實施例中,源緊縮資料的寬度可為64位元、128位元、256位元、512位元、或1024位元,但是,本發明的範圍不侷限於此。在各式各樣的實施例中,在源緊縮資料760中的各資料元的尺寸可為16位元、32位元、或64位元,但是,本發明的範圍不侷限於此。其它源緊縮資料寬度及資料元尺寸也是適當的。
為了回應及/或因分散指令的結果,可以執行分散作業720。分散作業可以將來自源緊縮資料760的資料元儲存、寫入、或分散至源緊縮記憶體索引734中對應的記憶體索引所標示之記憶體718中的位置。資料元可以被分散或寫至由記憶體索引標示及/或從記憶體索引導出的記憶體中的位置。在某些實施例中,資料元可以分散至選擇性/可能的非連續記憶體位置中。舉例而言,在所示的實施例中,記憶體索引134指向資料元B1要寫入的記憶體位置、等等。在某些實施例中,遍及源緊縮資料,分散是有序的舉例而言,從最低階位元位置(如同所示在左方)至最高階位元位置(如同所示在右方)。在某些實施例中,無區域性提示分散作業包含子快取列資料寫入764至記憶體718。
圖8是顯示遮罩分散作業820的實施例之方塊圖,遮罩分散作業820會被執行以回應遮罩無區域性提示分散指令的實施例。圖8的遮罩作業與圖7的未遮罩作業具有類
似性。為了避免模糊說明,將主要說明不同的及/或增加的圖8的遮罩作業之特徵,而不重覆與圖7的未遮罩作業相關的所有類似或共同特徵。但是,除非另外指明或清楚顯示,否則,先前說明的圖7的未遮罩作業的特徵也可選加地施加至圖8的遮罩作業。
遮罩分散作業可以指明或是以其它方式標示具有眾多緊縮記憶體索引的源緊縮記憶體索引834。源緊縮記憶體索引、以及記憶體索引可以類似於或是同於參考圖3-4及/或圖7所述般,以及可以具有相同的變異及替代。
遮罩分散指令也可以指明或是以其它方式標示源緊縮資料作業860。源緊縮資料作業以及其中的資料元可以類似於或是同於參考圖6-7所述,以及具有相同的變化及替代。
遮罩分散指令可以增加地指明(例如明確地指明)或是以其它方式標示(例如不明確地標示)具有眾多遮罩位元或其它遮罩元之源緊縮資料作業遮罩838。源緊縮資料作業遮罩以及其中的遮罩位元或其它遮罩元可以類似於或是同於參考圖5所述以及具有相同的變化及替代,但是,可以被用以遮罩分散作業而非集中作業除。以與源緊縮記憶體索引的記憶體索引及/或源緊縮資料的對應資料元(例如佔據運算元內相同的有關位置)一對一的對應性,包含遮罩元。各遮罩位元的值或遮罩元會控制是否要對對應的源緊縮資料的對應資料元執行對應的分散或寫入作業。各遮罩位元具有第一值,以允許使用對應的記憶體索
引來執行分散作業,或是具有第二不同值,以不允許使用對應的記憶體索引及源資料元來執行分散作業。
為了回應及/或因受到源緊縮資料作業遮罩838的預測或條件式控制的遮罩分散指令的結果,可以執行遮罩分散作業820。分散作業可以將來自源緊縮資料860的資料元儲存、寫入、或分散至由對應的記憶體索引標示及/或導出的記憶體818中的位置,所述對應的記憶體索引係遭受源緊縮資料作業遮罩838的遮罩、預測、或條件式控制。在某些實施例中,假使在緊縮資料作業遮罩中對應的遮罩位元未被遮罩時(例如,在所示中設定為二進位1),則資料僅被分散或儲存至記憶體位置。相反地,對應於遮離遮罩元的記憶體位置可以具有未被分散作業改變的預存值(例如,在遮罩分散指令執行前記憶體位置中相同的值)。在所示實例中,對應於遮離遮罩元的記憶體位置(在所示的實例中具有零的值)具有星號(*)以代表此預存的值。在某些實施例中,無區域性提示分散作業包含子快取列資料寫入864至記憶體818。
在某些實施例中,指令格式包含作業碼或運算碼。作業碼代表眾多位元或是一或更多欄位,可操作以辨識要執行的指令及/或作業(例如排序索引作業)。取決於特定指令,指令格式也包含一或更多源及/或目的地說明符。舉例而言,如同本文它處中所述般,這些說明符中的各說明符包含位元或一或更多欄位以指明暫存器的位址、記憶體位置、或其它儲存位置。替代地,取代此明確的說明
符,一或更多源及/或目的地可選擇地對指定是不明確的而不是被明確地指明。此外,在某些情形中,源可以被不明確地再作為目前地(例如,對於某些實施例的集中指令)。此外,指令格式可以選擇地增加額外的欄位、與某些欄位重疊、等等。欄位無需包含連續序列的位元而是可以由不連續的或分開的位元構成。
在某些實施例中,無區域性提示向量記憶體存取指令與不具有無區域性提示之向量記憶體存取指令可以選擇地具有不同的作業碼。在某些實施例中,可以選擇地提供不同的作業碼以用於無空間區域性提示及無時間區域性提示向量記憶體存取指令。舉例而言,無空間區域性提示集中指令、無時間區域性提示集中指令、無空間區域性提示分散指令、及無時間區域性提示分散指令可以都具有不同的作業碼。在其它實施例中,無區域性提示向量記憶體存取指令可以與不具有無區域性提示的向量記憶體存取指令共用作業碼。舉例而言,無區域性提示集中指令與不具有無區域性提示的集中指令共用作業碼,且這些指令包含一或更多位元以標示指令是否要被解碼成具有無區域性提示。關於另一實例,無區域性提示分散指令與不具有無區域性提示之分散指令共同作業碼,以及,這些指令包含一或更多位元以標示指令是否要被解碼成具有無區域性提示。在某些實施例中,單一位元具有第一值(例如1)以標示無區域性提示或是第二值(例如0)以標示缺乏無區域性提示。在其它實施例中,二位元可以具有不同的值以標示是
否有無區域性提示以及是什麼型式的無區域性提示。舉例而言,有二個位元具有第一值(例如00)以標示沒有無區域性提示、第二值(例如01)以標示有無區域性提示、第三值(例如10)以標示有無時間區域性提示、以及第四值(例如11)以標示有無空間及無時間區域性提示。在某些實施例中,無區域性提示向量記憶體存取指令(例如無區域性提示集中或分散指令)可以具有比相同指令集中配對的向量記憶體存取指令(例如,傳統上為不具有無區域性提示的集中或分散指令)具有更弱的記憶體排序模型。
指令集包含一或更多指令格式。給定的指令格式界定各種欄位(位元數目、位元位置)以特別指明要執行的作業(作業碼)以及該作業要對其執行的運算元。某些指令格式又會依指令樣板(或子格式)的定義而分解。舉例而言,給定的子令格式之指令樣板可以定義成具有不同的指令格式的欄位之子集合(包含的欄位典型上依相同次序,但是,由於包含較少的欄位,所以,至少某些具有不同的位元位置)及/或定義成具有不同解譯之給定的欄位。因此,使用給定的指令格式,表示ISA的各指令(以及,假使被定義時,是在該指令格式的多個指令樣板中之一)以及包含用於指明作業及運算元的欄位。舉例而言,舉例說明的ADD指令具有特定的作業碼及指令格式,所述指令格式包含指明該作業碼的作業碼欄位以及選取運算元的運算元欄位(源1/目的地及源2);以及,在指令串中此
ADD指令的出現將在選取特定運算元的運算元欄位中具有特定內容。已發佈及/或公開稱為進階向量擴充(AVX)(AVX1及AVX2)且使用向量擴充(VEX)碼化設計的SIMD擴充集(舉例而言,請參考2011年10月之英特爾® 64和IA-32架構軟體開發者手冊;以及,2011年6月之英特爾®先進向量擴充程式參考)。
此處所述的指令實施例可以以不同格式具體實施。此外,於下詳述舉例說明的系統、架構、及管線。指令的實施例可在這些系統、架構、及管線上執行,但是不限於詳述的實施例。
VEX編碼允許指令具有二個以上的運算元,以及允許SIMD向量暫存器長於128位元。使用VEX前置以規定三運算元(或更多)語法。舉例而言,以前的二運算元指令執行例如A=A+B等改寫源運算元的作業。使用VEX前置使得運算元能夠執行例如A=B+C等非破壞性作業。
圖9A顯示舉例說明的AVX指令格式,其包含VEX前置902、真實作業碼欄位930、Mod R/M位元組940、SIB位元組950、位移欄位962、及IMM8 972。圖9B顯示那些來自圖9A的欄位構成全作業碼欄位974及基本作業欄位942。圖9C顯示那些來自圖9A的欄位構成暫存器
索引欄位944。
VEX前置(位元組0-2)902以三位元組形式編碼。第一位元組是格式欄位940(VEX位元組0,位元[7:0]),其含有明確的C4位元組值(用於區別C4指令格式的獨特值)。第二至第三位元組(VEX位元組1-2)包含提供特定能力之多個位元欄位。具體而言,REX欄位905(VEX位元組1,位元[7-5])由VEX.R位元欄位(VEX位元組1,位元[7]-R)、VEX.X位元欄位(VEX位元組1,位元[6]-X)、及VEX.B位元欄位(VEX位元組1,位元[5]-B)組成。如同此技藝中所知般,指令的其它欄位將暫存器索引的下三個位元編碼(rrr、xxx、及bbb),以致於將VEX.R、VEX.X、及VEX.B相加而形成Rrrr、Xxxx、及Bbbb。作業碼映射欄915(VEX位元組1、位元[4:0]-mmmmm)包含用以將暗示的領先作業碼位元組之內容。W欄位964(VEX位元組2,位元[7]-W)-由標示VEX.W表示,以及視指令而提供不同的功能。VEX.vvvv 920(VEX位元組2,位元[6:3]-vvvv)的角色包含下述:1)VEX.vvvv將相反(1的補數)形式指定之第一源暫存器運算元編碼且對於具有2或更多源運算元的指令是有效的;2)VEX.vvvv將用於某些向量偏移的1的補數形式所指定的目的地暫存器運算元編碼;或是,3)VEX.vvvv未將任何運算元編碼,欄位被保留以及應含有1111b。假使VEX.L 968尺寸欄位(VEX位元組2,位元[2]-L)=0,則其表示128位元向量;假使VEX.L=1,則
其表示256位元向量。前置編碼欄位925(VEX位元組2,位元[1:0]-pp)提供增加的位元以用於基本作業欄位。
真實作業碼欄位930(位元組3)也稱為是作業碼位元組。在此欄位中指定作業碼的一部份。
MOD R/M欄位940(位元組4)包含MOD欄位942(位元[7-6]、Reg欄位944(位元[5-3])、及R/M欄位946(位元[2-0])。Reg欄位944的角色包含下述:將目的地暫存器運算元或是源暫存器運算元(Rrrr的rrr)編碼,或是被作為作業碼擴充處理且未被用以將任何指令運算元編碼。R/M欄位946的角色包含下述:將參照記憶體位址的指令運算元編碼,或是將目的地暫存器運算元或是源暫存器運算元編碼。
比例、索引、基礎(SIB)-比例欄位950的內容(位元組5)包含用於記憶體位址產生的SS952(位元[7-6])。SIB.xxx 954的內容(位元[5-3])及SIB.bbb 956的內容(位元[2-0])以前已被述及與暫存器索引Xxxx及Bbbb有關。
位移欄位962及立即欄位(IMM8)972含有位址資料。
向量友善指令格式是適用於向量指令的指令格式(例如,有某些向量作業特有的領域)。雖然說明向量及純量作業是由向量友善指令格式支援的實施例,但是,替代實
施例可僅使用向量友善指令格式的向量作業。
圖10A-10B是方塊圖,顯示根據發明的實施例之同屬向量友善指令格式及其指令樣板。圖10A是方塊圖,顯示根據發明的實施例之同屬向量友善指令格式及其等級A指令樣板;而圖10B是方塊圖,顯示根據發明的實施例之同屬向量友善指令格式及其等級B指令樣板。具體而言,等級A及等級B指令樣板定義之同屬向量友善指令格式1000都包含無記憶體存取1005指令樣板及記憶體存取1020指令樣板。向量友善指令格式的背景中之同屬一詞意指未被繫結至任何特定指令集的指令格式。
雖然將說明向量友善指令格支援下述的發明實施例:具有32位元(4位元組)或64位元(8位元組)資料元件寬度(或大小)的64位元組向量運算元長度(或大小)(因此,16個雙字大小的元或者8個四字大小的元組成的64位元組向量);具有16位元(2位元組)或8位元(1位元組)資料元寬度(或大小)的64位元組向量運算元長度(或大小);具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)或8位元(1位元組)資料元寬度(或大小)的32位元組向量運算元長度(或大小);以及,具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)或8位元(1位元組)資料元寬度(或大小)的16位元組向量運算元長度(或大小);或者,替代實施例可以支援更多、更少、及/或不同的資料元寬度(例如,128位元(16位元組)
資料元寬度)之更多、更少及/或不同的向量運算元大小(例如256位元組向量運算元)。
圖10A中的等級A指令樣板包含:1)在無記憶體存取1005指令樣板之內,有顯示無記憶體存取、全修整控制型作業1010指令樣板以及無記憶體存取、資料轉換型作業1015指令樣板;以及2)在記憶體存取1020指令樣板之內,有顯示記憶體存取、暫時1025指令樣板以及記憶體存取、非暫時1030指令樣板。圖10B中的等級B指令樣板包含:1)在無記憶體存取1005指令樣板之內,有顯示無記憶體存取、寫入遮罩控制、部份修整控制型作業1012指令樣板以及無記憶體存取、寫入遮罩控制、vsize型作業1017指令樣板;以及2)在記憶體存取1020指令樣板之內,有顯示記憶體存取、寫入遮罩控制1027指令樣板。
同屬向量友善指令格式1000包含圖10A-10B中依序顯示的下述列出之欄位。
格式欄位1040-此欄位中的特定值(指令格式識別符值)獨特地識別向量友善指令格式,因此,在指令串中向量友善指令格式的指令發生。如此,在對於僅具有同屬向量友善指令格式的指令集而言是不需要的情形中,此欄位是選加的。
基礎作業欄位1042-其內容區別不同的基礎作業。
暫存器索引欄1044-其內容直接或經由位址產生而指明源和目的地運算元的位置在暫存器或記憶體中。這些
包含足夠數目的位元以從P×Q(例如32×512、16×128、32×1024、64×1024)暫存器檔案中選取N個暫存器。雖然在一實施例中,N可以高達三個源及一個目的地暫存器,但是,替代實施例可以支援更多或更少的源以及目的地暫存器(例如,可以支援高達二個源,這些源中之一也作為目的地,可以支援高達三個源,這些源中之一也作為目的地,可以支援高達二個源及一目的地)。
修改符欄位1046-其內容區別指定與未指定記體存取的同屬向量指令格式的指令之發生;亦即,在無記憶體存取1005指令樣板與記憶體存取1020指令樣板之間區別。記憶體存取作業讀取及/或寫至記憶體層級結構(在某些情形中使用暫存器中的值以指定源及/或目的地位址),而非記憶體存取作業則未如此作(例如,源及目的地是暫存器)。雖然在一實施例中,此欄位也在三個不同方式中之間選取以執行記憶體位址計算,但是,替代實施例可以支援更多、更少、或不同的方式以執行記憶體位址計算。
擴增作業欄位1050-其內容區別各種不同作業中那一作業是基礎作業之外也是要被執行的。此欄位是內容特定的。在發明的一實施例中,此欄位被分成等級欄位1068、阿爾發欄位1052、貝他欄位1054。擴增作業欄位1050允許共同組的作業在單一指令中而不是在2、3或4指令中被執行。
比例欄位1060-其內容允許用於記憶體位址產生的
索引欄位的內容比例化(例如,用於使用2scale*index+base的位址產生)。
位移欄位1062A-其內容作為部份記憶體位址產生(例如,用於使用2scale*index+base+displacement的位址產生)。
位移因數欄位1062B(注意,位移欄位1062A直接在位移因數欄位1062B上並置係標示一或另一者被使用)-其內容作為部份位址產生;其指定要依記憶體存取(N)的大小而比例化的位移因數-其中,N是記憶體存取中的位元組數目(例如,用於使用2scale*index+base+scaled displacement的位址產生)。冗餘低階位元被忽略,因此,位移因數欄位的內容乘以記憶體運算元全部尺寸(N)以產生計算有效位址時使用的最後位移。根據全運算碼欄位1074(稍後說明)及資料操縱欄位1054C,在運行時間,由處理器硬體決定N的值。在位移欄位1062A及位移因數欄位1062B不用於無記憶體存取1005指令樣板及/或不同實施例僅實施二者中之一或不實施二者的情形中,位移欄位1062A及位移因數欄位1062B是選擇性的。
資料元寬度欄位1064-其內容區別一些資料元寬度中的那一寬度是要被使用(在某些實施例中用於所有指令;在其它實施例中僅用於某些指令)。在假使使用運算碼的某些態樣而僅有一資料元寬度被支援及/或資料元寬度被支援時不需要此欄位的情形中,此欄位是選擇性的。
寫入遮罩欄位1070-以每一資料元件位置為基礎,其內容控制目的地向量運算元中的資料元位置是否反應基礎作業及擴增作業的結果。等級A指令樣板支援合併寫入遮罩,而等級B指令樣板支援合併及零化寫入遮罩。當合併時,向量遮罩允許目的地中任何組的元在任何作業的執行期間受保護(由基礎作業及擴增作業指定)而免於更新;在其它的一實施例中,保留對應的遮罩位元具有0之目的地的各元的舊值。相反地,當零化向量遮罩允許目的地中的任何組的元在任何作業(由基礎作業及擴增作業指定)執行期間零化時;在一實施例中,當對應的遮罩位元具有0值時,目的地的元被設定為0。此功能的子集合是控制被執行的作業的向量長度之能力(亦即,被修改的元的跨幅從第一至最後一個);但是,被修改的元不一定是連續的。如此,寫入遮罩欄1070允許部份向量作業,包含載入、儲存、算術、邏輯、等等。雖然說明寫入遮罩欄位1070的內容選取一些含有要被使用的寫入遮罩之寫入遮罩暫存器中之一(因此,寫入遮罩欄位1070的內容間接地識別要被執行的遮罩)的發明實施例,但是,替代實施例取代地或增加地允許遮罩寫入欄位1070的內容直接指定遮罩被執行。
立即欄位1072-其內容允許立即性的規格。在此欄位未出現在未支援立即性的同屬向量友善格式實施中以及其未出現在未使用立即性的指令中之情形中,此欄位是選擇性的。
等級欄位1068-其內容區別不同等級的指令。參考圖10A-B,此欄位的內容在等級A與等級B指令之間選取。在圖10A-B中,經過整修的角落方形被用以標示特定值存在於欄位中(例如,分別在圖10A-B中用於等級欄位1068的等級A 1068A及等級B 1068B)。
在等級A的非記憶體存取1005指令樣板的情形中,阿爾發欄位1052被解譯為RS欄位1052A,其內容區別不同的擴增操作型式中那一型式是要被執行(例如,整修1052A.1及資料轉換1052A.2分別被指定用於無記憶體存取、整修型式作業1010及無記憶體存取、資料轉換型式作業1015指令樣板),而貝他欄位1054區別被指定的型式的作業中那些作業是要被執行。在無記憶體存取1005指令樣板中,比例欄位1060、位移欄位1062A及位移比例欄位1062B不存在。
在無記憶體存取完全整修控制型作業1010指令樣板中,貝他欄位1054被解譯為整修控制欄位1054A,其內容提供靜態整修。雖然在上述的發明實施例中,整修控制欄位1054A包含抑制所有浮點例外(SAE)欄位1056及整修作業控制欄位1058,但是,替代實施例可以支援將這二概念編碼成相同欄位或是僅具有這些概念/欄位中之
一或其它(例如,可以僅具有整修作業控制欄位1058)。
SAE欄位1056-其內容區別是否將例外事件報告禁能;當SAE欄位的1056內容標示抑制被賦能時,給定的指令不報告任何種類的浮點例外旗標及不引起任何浮點例外處理器。
整修作業控制欄位1058-其內容區別整修作業組中哪一作業要執行(例如,向上整修、向下整修、朝向零整修及整修至最近)。因此,整修操作控制欄位1058允許根據每一指令之整修模式的改變。在處理器包含用於指明整修模式的控制暫存器之發明的一實施例中,整修作業控制欄位1050的內容凌駕該暫存器值。
在無記憶體存取資料轉換型式操作1015指令樣板中,貝他欄位1054被解譯為資料轉換欄位1054B,其內容區別多個資料轉換中何者要被執行(例如,無資料轉換、拌和、廣播)。
在等級A的記憶體存取1020指令樣板的情形中,阿爾發欄位1052被解譯為逐出提示欄位1052B,其內容區別逐出提示中之一是要被使用(在圖10A中,暫時1052B.1及非暫時1052B.2分別被指定用於記憶體存取、暫時1025指令樣板以及記憶體存取、非暫時1030指令樣板),而貝他欄位1054被解譯為資料操縱欄位1054C,其內容區別多個資料操縱操作(也稱為原始)中何者是要
被執行(例如,無操縱;廣播;源的上轉;及目的地的下轉)。記憶體存取1020指令樣板包含比例欄位1060,且選擇性地包含位移欄位1062A或位移比例欄位1062B。
藉由轉換支援,向量記憶體指令對記憶體執行向量載入及向量儲存。與正常的向量指令一般,向量記憶體指令以資料元方式對記憶體傳輸資料,而真正被傳送的元是由被選為寫入遮罩的向量遮罩的內容所標示。
暫時資料是能夠足夠快再被使用而從快取獲利之資料。但是,這是提示,以及,不同的處理器可以以不同方式實施它,包含完全忽略提示。
非暫時資料是不太可能足夠快再被使用以從第一層快取中的快取獲利之資料,且應被授予逐出優先權。但是,這是提示,以及,不同的處理器可以以不同方式實施它,包含完全忽略提示。
在等級B的指令樣板的情形中,阿爾發欄位1052被解譯為寫入遮罩控制(Z)欄位1052C,其內容區別由寫入遮罩欄位1070控制的寫入遮罩是否應為合併或零化。
在等級B的非記憶體存取1005指令樣板的情形中,
部份貝他欄位1054是被解譯為RL欄位1557A,其內容區別不同的擴增作業型式中何者是要被執行(例如,整修1057A.1以及向量長度(VSIZE)1057A.2分別被指定用於無記憶體存取、寫入遮罩控制、部份整修控制型作業1012指令樣板以及無記憶體存取、寫入遮罩控制、VSIZE型作業1017指令樣板),而貝他欄位1054的其餘部份區別那一指定型式的作業是要被執行。在無記憶體存取1005指令樣板中,比例欄位1060、位移欄位1062A、及位移比例欄位1062B不存在。
在無記憶體存取中,寫入遮罩控制、部份整修控制型作業1010指令樣板、貝他欄位1054的其它部份被解譯為整修作業欄位1059A且例外事件報告被禁能(給定的指令不報告任何種類的浮點例外旗標及不引起任何浮點例外處理器)。
整修操作控制欄位1059A-正如同整修作業控制欄位1058般,其內容區別整修作業組中何者要執行(例如,向上整修、向下整修、朝向零整修及整修至最近)。因此,整修作業控制欄位1059允許根據每一指令來改變整修模式。在處理器包含用於指定整修模式的控制暫存器之發明的一實施例中,整修操作控制欄位1050的內容淩駕該暫存器值。
在無記憶體存取、寫入遮罩控制,VSIZE型作業1017指令樣板中,貝他欄位1054的其餘部份被解譯為向量長度欄位1059B,其內容區別多個資料向量長度中何者
要被執行(例如,128、256、或512位元組)。
在等級B的記憶體存取1020指令樣板的情形中,部份貝它欄位1054被解譯為廣播欄位1057B,其內容區別廣播型資料操縱作業是否要被執行,而貝它欄位1054中的其它部份被解譯為向量長度欄位1059B。記憶體存取1020指令樣板包含比例欄位1060,以及,選擇性地包含位移欄位1062A或是位移比例欄位1062B。
關於同屬向量友善指令格式1000,完全運算碼欄位1074顯示為包含格式欄位1040、基礎作業欄位1042、及資料元件寬度欄位1064。雖然顯示完全運算碼欄位1074包含所有這些欄位的一實施例,但是,在未支援所有它們的實施例中,完全運算碼欄位1074包含少於所有這些欄位的欄位。完全運算碼欄位1074提供作業碼(運算碼)。
擴增作業欄位1050、資料元寬度欄位1064、及寫入遮罩欄位1070允許根據每一同屬向量友善指令格式的指令來指定這些特點。
因為寫入遮罩欄位及資料元寬度欄位的結合允許根據不同的資料元寬度來施加遮罩,所以,寫入遮罩欄位及資料元寬度欄位的結合會產生型式化的指令。
等級A及等級B之內發現的各種指令樣板在不同的情形中是有利的。在本發明的某些實施例中,不同的處理器或在處理器內不同的核心僅支援等級A、僅支援等級B、或此二等級。舉例而言,要用於一般用途的計算之高
性能一般用途亂序核心可以僅支援等級B,主要用於圖形及/或科學(輸貫量)計算之核心可以僅支援等級A,以及,主要用於二者的核心可以支援這二等級(當然,具有來自二等級的樣板及指令但不是來自二等級的所有樣板及指令之某些混合的核心是在本發明的範圍之內)。而且,單一處理器包含多核心,而所有這些核心支援相同的等級或是不同的核心支援不同的核心。舉例而言,在具有分別的圖形及一般用途的核心之處理器中,主要用於圖形成及/或科學計算之多個圖形核心中之一僅支援等級A,而多個一般用途的核心中之一或更多可以是具有用於僅支援等級B之一般用途計算的暫存器再命名及亂序執行的高性能一般用途核心。未具有分別的圖形核心之另一處理器包含支援等級A及等級B等二等級之一或更多一般用途的有序或亂序核心。當然,在本發明的不同實施例中,來自一等級的特點也可在其它等級中實施。以高階語言撰寫的程式將被置於(例如,剛好即時被編譯或靜態地被編譯)各式各樣不同的可執行形式,包含:1)僅具有由用於執行的標的處理器所支援的等級之指令;或者,2)具有使用所有等級的指令之不同的組合而撰寫的替代常式以及具有根據由目前正執行碼的處理器支援的指令而選取要執行的常式之控制流動碼的形式。
圖11是方塊圖,顯示根據本發明的實施例之舉例說
明的特定向量友善指令格式。圖11顯示特定向量友善指令格式1100,特定向量友善指令格式1100在其指定欄位的位置、大小、解譯、及次序、以及用於那些欄位中的某些欄位之值的情形中是特定的。特定向量友善指令格式1100可以被用以延伸x86指令集,因而某些欄位類似於或同於現有的x86指令集中使用的欄位以及其延伸(例如,AVX)。此格式維持與具有延伸的現存x86指令集的前置編碼欄位、真實運算碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位、及立即欄位一致。顯示來自圖11的欄位映射之來自圖10的欄位。
應瞭解,雖然在同屬向量友善指令格式1000的內容中為了說明而參考特定向量友善指令格式1100,以說明發明的實施例,但是,除非特別申明,否則本發明不侷限於特定向量友善指令格式1100。舉例而言,同屬向量友善指令格式1000慮及用於各種欄位的各種可能大小,而特定向量友善指令格式1100顯示為具有特定大小的欄位。具體舉例而言,雖然資料元寬度欄位1064在特定向量友善指令格式1100中顯示為一位元欄位,但是,本發明不限於此(亦即,同屬向量友善指令格式1000慮及資料元寬度欄位1064的其它大小)。
同屬向量友善指令格式1000包含依圖11A中所示的次序而於下列出的下述欄位。
EVEX Prefix(位元組0-3)1102-以四位元組形式編碼。
格式欄位1040(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)是格式欄位1040以及其含有0x62(用於區別發明的一實施例中向量友善指令格式的獨特值)。
第二-第四位元組(EVEX位元組1-3)包含提供特定能力的多個位元欄位。
REX欄位1105(EVEX位元組1,位元[7-5])-由EVEX.R位元欄位(EVEX位元組1,位元[7]-R)、EVEX.X位元欄位(EVEX位元組1,位元[6]-X)、及1057BEX位元組1,位元[5]-B)組成。EVEX.R、EVEX.X及EVEX.B位元欄位提供與對應的VEX位元欄位相同的功能性,且使用1s互補形式來編碼,亦即,ZMM0被編碼為1111B,ZMM15被編碼為0000B。如同此技藝中所知般,指令的其它欄位將暫存器索引的較低的三個位元編碼(rrr,xxx,及bbb),以致於藉由加上EVEX.R、EVEX.X、及EVEX.B,可以形成Rrrr、Xxxx、及Bbbb。
REX’欄位1010-這是REX’欄位1010的第一部份且是用以將延伸的32暫存器組的上16或下16編碼之EVEX.R’位元欄位(EVEX位元組1,位元[4]-R’)。在發明的一實施例中,此位元與如下標示的其它位元以位元反轉格式儲存,以與BOUND指令區別(在已知的x8632位元模式中),BOUND指令的真實運算碼位元組是62,但是,在MOD R/M欄(下述)中未接受MOD欄位中11的值;發明的替代實施例未以反轉格式儲存此位元及下述其
它標示的位元。1的值用以將下16暫存器編碼。換言之,藉由結合來自其它欄位的EVEX.R’、EVEX.R、及其它RRR以形成R’Rrrr。
運算碼映射欄位1115(EVEX位元組1,位元[3:0]-mmmm)-它的內容將暗指的領先運算碼位元組(0F,0F 38,或0F 3)編碼。
資料元寬度欄位1064(EVER位元組2,位元[7]-W)-由記號EVEX.W表示。EVEX.W用以界定資料型式(32位元資料元或64位元資料元)的粒度(大小)。
EVEX.vvvv 1120(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvvv的角色可以包含下述:1)EVEX.vvvv將以反轉(1s互補)形式指定的第一源暫存器運算元編碼,且對於具有2或更多源運算元的指令是有效的;2)EVEX.vvvv將對某些向量偏移以1s互補形式指定的目的地暫存器運算元編碼;或者3)EVEX.vvvv未將任何運算元編碼,欄位被保留且應含有1111b。因此,EVEX.vvvv欄位1120將依反轉(1s互補)形式儲存的第一源暫存器說明符的4下階位元編碼。取決於指令,額外的不同EVEX位元欄位被用以延伸說明符大小至32暫存器。
EVEX.U 1068等級欄位(EVEX位元組2,位元[2]-U)-假使EVEX.U=0,則其標示等級A或EVEX.U0;假使EVEX.U=1,則其標示等級B或EVEX.U1。
前置編碼欄位1125(EVEX位元組2,位元[1:0]-pp)-提供增加的位元用於基礎作業欄位。除了提供支援
給EVEX前置格式的舊制SSE指令,這也具有使SIMD前置小巧化(而非要求位元組來表示SIMD前置,EVEX前置僅要求2位元)的優點。在一實施例中,為了支援以舊制格式及EVEX前置格式等二格式使用SIMD前置(66H、F2H、F3H)之舊制SSE指令,這些舊制SIMD前置被編碼成SIMD前置編碼欄位;以及,在被提供給解碼器的PLA(以致於PLA可以執行這些舊制指令的舊制及EVEX等二格式而不用修改)之前,在運行時間被擴展成舊有SIMD前置。雖然較新的指令可以直接使用EVEX前置編碼欄位的內容作為運算碼延伸,但是,某些實施例為了一致性而以類似方式擴展但允許不同的意義由這些舊制SIMD前置規定。替代實施例可以重新設計PLA以支援2位元SIMD前置編碼,因而不要求擴展。
阿爾發欄位1052(EVEX位元組3,位元[7]-EH;也稱為EVEX.EH、EXEX.rs、EVEX.RL、EVEX.寫入遮罩控制、及EVEX.N;也以α顯示),如以往所述般,此欄位是內容特定的。
貝他欄位1054(EVEX位元組3,位元[6:4])-SSS;也稱為EVEX.s2-0、EXEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;也以β β β顯示)-如先前所述般,此欄位是內容特定的。
REX’欄位1010-這是REX’欄位的餘部且是可被用以將延伸的32暫存器組中的上16或下16編碼之EVEX.V’位元欄位(EVEX位元組3,位元[3]-V’)。此位元以位元
反轉格式儲存。1的值被用以將下16暫存器編碼。換言之,藉由結合EVEX.V’、EVEX.vvvv以形成V’VVVV。
寫入遮罩欄位1070(EVEX位元組3,位元[2:0]-kkk)-如同先前所述般,其內容指定寫入遮罩暫存器中的暫存器索引。在發明的一實施例中,特定值EVEX.kkk=000具有特別的表現,暗指無寫入遮罩用於特定的指令(這可以以各種方式實施,包含使用實體接線至繞過遮罩硬體的所有組件或硬體之寫入遮罩)。
真實運算碼欄位1130(位元組4)也稱為運算碼位元組。在此欄位中指定運算碼的一部份。
MOD R/M欄位1140(位元組5)包含MOD欄位1142、Reg欄位1144、及R/M欄位1146。如同先前所述般,MOD欄位1142的內容區別記憶體存取與非記憶體存取作業。Reg欄位1144的角色可以總合為二情形:將目的地暫存器運算元或源暫存器運算元編碼,或是被當作運算碼延伸且不被用以將任何指令運算元編碼。R/M欄位1146的角色可以包含下述:將指引記憶體位址的指令運算元編碼,或者,將目的地暫存器運算元或源暫存器運算元編碼。
比例、索引、基礎(SIB)位元組(位元組6)-如同先前所述般,比例欄位1050的內容是用於記憶體位址產生。SIB.xxx 1154及SIB.bbb 1156-這些欄位的內容先前已被指稱與暫存器索引Xxxx及Bbbb有關。
位移欄位1062A(位元組7-10)-當MOD欄位1142
含有10時,位元組7-10是位移欄位1062A,且其工作與舊制32位元位移(disp32)相同並以位元組粒度工作。
位移因數欄位1062B(位元組7)-當MOD欄位1142含有01時,位元組7是位移因數欄位1062B。此欄位的位置與以位元組粒度工作的舊制x86指令組8位元位移(disp8)的位置相同。由於disp8是正負號延伸,所以,其僅可以在-128與127位元組偏移之間定址;以64位元組快取列的觀點而言,disp8使用可以被設定為僅四個真正有用的值-128、-64、0、及64之8位元;由於通常需要更大的範圍,所以,使用disp32;但是,disp32要求4位元組。與disp8和disp32相反,位移因數欄位1062B是disp8的再解譯;當使用位移因數欄位1062B時,真實的位移由位移因數欄位的內容乘以記憶體運算元存取(N)所決定。此型式的位移被稱為disp8*N。這降低平均的指令長度(用於位移但是具有更大範圍的單一位元組)。此被壓縮的位移是根據有效的位移是記憶體存取的粒度之倍數的假設,因此,位址偏移的冗餘低階位元不需被編碼。換言之,位移因數欄位1062B替代舊制x86指令集8位元位移。因此,位移因數欄位1062B以同於x86指令集8位元位移的方式編碼(以致於ModRM/SIB編碼規則不變),僅有的例外是disp8被超載至disp8*N。換言之,編碼規則或編碼長度沒有變化,但是僅有硬體對位移值的解譯有變化(這需要將位移依記憶體運算元的大小來比例化以取得位元組方式的位址偏移)。
立即欄位1072如先前所述地操作。
圖11B是方塊圖,顯示根據本發明的一實施例之構成完全運算碼欄位1074之特定同屬向量友善指令格式1100的欄位。具體而言,完全運算碼欄位1074包含格式欄位1040、基礎作業欄位1042、及資料元寬度(W)欄位1064。基礎作業欄位1042包含前置編碼欄位1125、運算碼映射欄位1115、及真實運算碼欄位1130。
圖11C是方塊圖,顯示根據本發明的一實施例之構成暫存器索引欄位1044之特定同屬向量友善指令格式1100的欄位。具體而言,暫存器索引欄位1044包含REX欄位1105、REX’欄位1110、MODR/M.reg欄位1144,MODR/M.r/m欄位1146、VVVV欄位1120、xxx欄位1154、及bbb欄位1156。
圖11D是方塊圖,顯示根據本發明的一實施例之構成擴增作業欄位1050之特定同屬向量友善指令格式1100的欄位。當等級(U)欄位1068含有0時,則其標示EVEX.U0(等級A 1068A);當其含有1時,則其標示EVEX.U1(等級B 1068B)。當U=0及MOD欄位1142含
有11(標示無記憶體存取作業)時,阿爾發欄位1052(EVEX位元組3,位元[7]-EH)被解譯為rs欄位1052A。當rs欄位1052A含有1(整修1052A.1)時,貝他欄位1054(EVEX位元組3,位元[6:4]-SSS)被解譯為整修控制欄位1054A。整修控制欄位1054A包含一位元SAE欄位1056及二位整修作業欄位1058。當rs欄位1052A含有0(資料轉換1052A.2)時,貝他欄位1054(EVEX位元組3,位元[6:4]-SSS)被解譯為三位元資料轉換欄位1054B。當U=0及MOD欄位1142含有00、01、或10(標示記憶體存取作業)時,阿爾發欄位1052(EVEX位元組3,位元[7]-EH)被解譯為逐出提示(EH)欄位1052B,以及,貝它欄位1054(EVEX位元組3,位元[6:4]-SSS)被解譯為三位元資料操作欄位1054C。
當U=1時,阿爾發欄位1052(EVEX位元組3,位元[7]-EH)被解譯為寫入遮罩控制(Z)欄位1052C。當U=1及MOD欄位1142含有11(標示無記憶體存取作業)時,部份貝他欄位1054(EVEX位元組3,位元[4]-S0)被解譯為RL欄位1057A;當其含有1(整修1057A.1)時,貝他欄位1054的其餘部份(EVEX位元組3,位元[6-5]-S2-1)被解譯為整修作業欄位1059A,而當RL欄位1057A含有0(VSIZE 1057.A2)時,貝他欄位1054的其餘部份(EVEX位元組3,位元[6-5]-S2-1)被解譯為向量長度欄位1059B(EVEX位元組3,位元[6-5]-L1-0)。當U=1及MOD欄位1142含有
00、01、或10(標示記憶體存取作業)時,貝他欄位1054(EVEX位元組3,位元[6:4]-SSS)被解譯為向量長度欄位1059B(EVEX位元組3,位元[6-5]-L1-0)及廣播欄位1057B(EVEX位元組3,位元[4]-B)。
圖12是根據本發明的一實施例之暫存器架構1200的方塊圖。在所示的實施例中,有512位元寬的32個向量暫存器1210;這些暫存器稱為zmm0至zmm31。較低的16 zmm暫存器的低階256位元被覆蓋於暫存器ymm0-16之上。較低的16 zmm暫存器的低階128位元(ymm暫存器的低階128位元)被覆蓋於暫存器xmm0-15之上。特定向量友善指令格式1100如下述表格中所示般對這些被覆蓋的暫存器檔案作業。
換言之,向量長度欄位1059B在最大長度與一或更多其它較短的長度之間選取,其中,每一此較短長度是先前
長度的長度之一半;以及,不具向量長度欄位1059B的指令樣板對最大向量長度操作。此外,在一實施例中,特定向量友善指令格式1100的等級B指令樣板對緊縮的或純量的單/雙精度浮點資料及緊縮的或純量的整數資料作業。純量作業是對zmm/ymm/xmm暫存器中最低階資料元位置執行的作業;更高階的資料元位置視實施例而留在它們在指令之前的相同位置或者被零化。
寫入遮罩暫存器1215-在所示的實施例中,有8個寫入遮罩暫存器(k0至k7),各寫入暫存器大小為64位元。在替代實施例中,寫入遮罩暫存器1215大小為16位元。如同先前所述般,在本發明的一實施例中,向量遮罩暫存器k0無法作為寫入遮罩;當正常標示k0的編碼用於寫入遮罩時,其選取0xFFFF的實體接線的寫入遮罩,有效地使用於該指令的寫入遮罩禁能。
一般用途暫存器1225-在所示的實施例中,有十六個64位元的一般用途暫存器,它們與現存的x86定址模式一起作用以將記憶體運算元定址。這些暫存器以名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15表示。
純量浮點堆疊暫存器檔案(x87堆疊)1245,MMX緊縮整數平坦暫存器檔案1250混疊於其上-在所示的實施例中,x87堆疊是八元件堆疊,用以使用x87指令集延伸,對32/64/80位元浮點資料執行純量浮點作業;而MMX暫存器被用以對64位元緊縮的整數資料執行作業,
以及為了某些在MMX及XMM暫存器之間執行的作業而固持運算元。
本發明的替代實施例可以使用更寬或更窄的暫存器。此外,本發明的替代實施例可以使用更多、更少、或不同的暫存器檔案及暫存器。
處理器核心可以以不同方式實施、用於不同目的、及在不同處理器中。舉例而言,這些核心的實施包含:1)用於一般用途的計算之一般用途的有序核心;2)用於一般用途的計算之高性能的一般用途的亂序核心;3)主要用於圖形及/或科學(輸貫量)計算之特別用途的核心。不同處理器的實施包含:1)CPU,包含用於一般用途的計算之一或更多一般用途的有序核心及/或用於一般用途的計算之一或更多一般用途的亂序核心;以及,2)共處理器,包含一或更多主要用於圖形及/或科學(輸貫量)計算之特別用途的核心。這些不同的處理器導致不同的電腦系統架構,包含:1)與CPU在不同的晶片上之共處理器;2)在與CPU相同封裝中的不同晶片上之共處理器;3)共處理器與CPU在相同晶粒上(在此情形中,此共處理器有時稱為特別用途邏輯,例如集成的圖形及/或科學(輸貫量)邏輯、或是特別用途的核心);以及,4)系統晶片,在相同晶粒上包含所述CPU(有時稱為應用核心或是應用處理器)、上述共處理器、及其它功能。在說明
舉例說明的處理器及電腦架構之後,接著說明舉例說明的核心架構。
圖13A是方塊圖,顯示根據本發明的實施例之舉例說明的有序管線及舉例說明的暫存器重命名、亂序發佈/執行管線。圖13B是方塊圖,顯示根據本發明的實施例之要包含於處理器中之舉例說明的有序架構核心及舉例說明的暫存器重命名、亂序發佈/執行架構核心。圖13A-B顯示有線管線及有序核心,而選加的虛線框顯示暫存器重命名、亂序發佈/執行管線及核心。假定有序態樣是亂序態樣的子集合,以說明亂序態樣。
在圖13A中,處理器管線1300包含提取級1302、長度解碼級1304、解碼級1306、分配級1308、重命名級1310、排程(也稱為發送或發佈)級1312、暫存器讀取/記憶體級1314、執行級1316、寫回/記憶體寫入級1318、例外處理級1322、及確定級1324。
圖13B顯示處理器核心1390,其包含耦合至執行引擎單元1350的前端單元1330,引擎單元1350及前端單元1330都耦合至記憶體單元1370。核心1390可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、超長指令字(VLIW)核心、或是混合或替代核心型式。又另一選項,核心1390可為特別用途核心,例如,
網路或通訊核心、壓縮引擎、共處理器核心、一般用途計算圖形處理單元(GPGPU)核心、圖心核心、等等。
前端單元1330包含耦合至指令快取單元1334的分枝預測單元1332,指令快取單元1334耦合至指令轉譯旁看緩衝器(TLB)1336,指令轉譯旁看緩衝器(TLB)1336耦合至指令提取單元1338,指令提取單元1338耦合至解碼單元1340。解碼單元1340(或解碼器)將指令解碼,以及產生從原始指令解碼、或是以其它方式反應原始指令、或是從原始指令導出之一或更多微作業、微碼進入點、微指令、其它指令、或其它控制訊號,以作為輸出。可以使用各種不同的機構以實施解碼單元1340。適當機構的實例包含但不限於查詢表、硬體實施、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM)、等等。在一實施例中,核心1390包含微碼ROM或儲存微碼以用於某些巨集指令的微碼(例如,在解碼單元1340或者是前端單元1330內)。解碼單元1340耦合至執行引擎單元1350中的重命名/分配器單元1352。
執行引擎單元1350包含耦合至退出單元1354及一或更多排程器單元1356的集合之重命名/分配器單元1352。排程器單元1356代表任何數目的不同排程器、包含保留站、中央指令窗、等等。排程器單元1356耦合至實體暫存器檔案單元1358。各實體暫存器檔案單元1358代表一或更多實體暫存器檔案,不同的實體暫存器檔案儲存一或更多不同的資料型式,例如純量整數、純量浮點、
緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如指令指標器,指令指標器是要被執行的下一指令之位置)、等等。在一實施例中,實體暫存器檔案單元1358包括向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。這些暫存器單元可以提供架構向量暫存器、向量遮罩暫存器、及一般用途暫存器。實體暫存器檔案單元1358由退出單元1354重疊以顯示實施暫存器重命名及亂序執行的各種方式(例如,使用再排序緩衝器和退出暫存器檔案;使用未來檔案、歷史緩衝器、及退出暫存器檔案;使用暫存器映射及暫存器庫;等等)。退出單元1354及實體暫存器檔案單元1358耦合至執行簇1360。執行簇1360包含一或更多執行單元1362及一或更多記憶體存取單元1364的集合。執行單元1362執行多種作業(例如,偏移、加法、減法、乘法)及對各種型式的資料(例如純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)執行。雖然某些實施例包含多個專用於特定指令或功能集的執行單元,但是,其它實施例可以僅包含都執行所有功能之多個執行單元或是一執行單元。由於某些實施例產生用於某些型式的資料/作業之分別的管線(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、及/或記憶體存取管線,這些管線均具有它們自已的排程器單元、實體暫存器單元、及/或執行簇-以及,在分別的記憶體存取管線的情形中,實施某些實施例,其中,僅有此管線的執行簇具有記憶體存取單元
1364),所以,排程器單元1356、實體暫存器檔案單元1358、及執行簇1360顯示為可能是複數的。也應瞭解,在使用分別的管線之情形中,這些管線中之一或更多可以是亂序發佈/執行而其餘的為有序。
記憶體存取單元1364的組耦合至記憶體單元1370,記憶體單元1370包含資料轉譯旁看緩衝器(TLB)單元1372,資料TLB單元1372耦合至資料快取單元1374,資料快取單元1374耦合至等級2(L2)快取單元1376。在一舉例說明的實施例中,記憶體存取單元1364包含載入單元、儲存位址單元、及儲存資料單元,各單元均耦合至記憶體單元1370中的資料TLB單元1372。指令快取單元1334又耦合至記憶體單元1370中的等級2(L2)快取單元1376。L2快取單元1376耦合至一或更多其它等級的快取以及最後耦合至主記憶體。
舉例而言,舉例說明的暫存器重命名、亂序發佈/執行核心架構可以實施如下所述的管線1300:1)指令提取1338執行提取及長度解碼級1302和1304;2)解碼單元1340執行解碼級1306;3)重命名/分配器單元1352執行分配級1308及重命名級1310;4)排程器單元1356執行排程級1312;5)實體暫存器檔案單元1358及記憶體單元1370執行暫存器讀取/記憶體讀取級1314;執行簇1360執行執行級1316;6)記憶體單元1370及實體暫存器檔案單元1358執行寫回/記憶體寫入級1318;7)牽涉例外處理級1322的多種單元;及8)退出單元1354及
實體暫存器單元1358執行確定級1324。
核心1390支援一或更多指令集(例如,x86指令集(具有添加更新的版本之某些延伸);加州Sunnyvale的MIPS Technologies公司之MIPS指令集;加州Sunnyvale的ARM Holdings公司的ARM指令集(具有例如NEON等選加的延伸)),包含此處所述的指令。在一實施例中,核心1390包含邏輯以支援緊縮資料指令集延伸(例如,AVX1、AVX2),藉以允許使用緊縮資料來執行由很多多媒體應用所使用的作業。
應瞭解,核心可支援多緒化(執行二或更多平行組的作業或緒),以及以包含時間切片多緒化、同時多緒化(其中,單一實體核心提供用於各緒之邏輯核心,實體核心是同時多緒的)等各種式方、或者其組合,而如此執行(例如,在英特爾®的混合緒化技術中之時間切片提取及解碼和之後的同時多緒化)。
雖然在亂序執行的背景下說明暫存器重命名,但是,應瞭解,在有序架構中可使用暫存器重命名。雖然所示的處理器之實施例也包含分別的指令及資料快取單元1334/1374以及共用的L2快取單元1376,但是,替代的實施例可以具有用於指令及資料之單一內部快取,例如等級1(L1)內部快取、或多等級內部快取。在某些實施例中,系統包含內部快取及核心和/或處理器之外部的外部快取。替代地,所有快取可以是在核心及/或處理器的外部。
圖14A-B是方塊圖,顯示更特定舉例說明的有序核心架構,其中,核心是晶片中數個邏輯區塊(包含相同型式及/或不同型式的其它核心)中之一。邏輯區塊視應用而經由高頻寬互連網路(例如環式網路)以與某些固定的功能邏輯、記憶體I/O介面、及其它必要的I/O邏輯通訊。
圖14A是根據本發明的實施例之單一處理器核心、以及其對晶粒上互連網路1402的連接及其區域子集合的等級2(L2)快取1404之方塊圖。在一實施例中,指令解碼器1400支援具有緊縮資料指令集延伸的x86指令集。L1快取1406允許對快取記憶體的低潛候期存取進入純量及向量單元。雖然在一實施例中(為簡化設計),純量單元1408及向量單元1410使用分別的暫存器組(分別地,純量暫存器1412及向量暫存器1414)以及在它們之間傳輸的資料被寫至記憶體並接著從等級1(L1)快取1406讀回,但是,本發明的替代實施例可以使用不同的方式(例如,使用單一暫存器集合或是包含允許資料在二暫存器檔案之間傳輸而不用被寫入及讀回的通訊路徑)。
L2快取的區域子集合1404是全區L2快取的部份,全區L2快取是被分割成分別的區域子集合,每一處理器核心一區域子集合。各處理器核心對其自己的區域子集合L2快取1404具有直接存取路徑。由處理器核心讀取的資料儲存在其L2快取子集合1404中,以及,可以與其它存
取它們自己的區域L2快取子集合之處理器核心平行地被快速存取。由處理器核心寫入的資料儲存在它自己的L2快取子集合1404中及於需要時從其它子集合湧入。環式網路確保用於共用資料的相干性。環式網路是雙向的,以允許例如處理器核心、L2快取及其它邏輯區塊等代理器在晶片內彼此通訊。各環式資料路徑是每一方向1012位元寬。
圖14B是根據本發明的實施例之圖14A中的處理器核心之部份擴充視圖。圖14B包含L1快取1404之L1資料快取1406A部份、以及與向量單元1410及向量暫存器1414有關的更多詳節。具體而言,向量單元1410是16寬的向量處理單元(VPU)(請參見16寬的ALU 1428),其執行整數、單精度浮動、及雙精度浮動指令中之一或更多。VPU以拌和單元1420支援拌和暫存器輸入、以數值轉換單元1422A-B支援數值轉換、以及以記憶體輸入上的複製單元1424支援複製。寫入遮罩暫器1426允許預測結果向量寫入。
圖15是根據本發明的實施例之具有一個以上的核心、具有整合記憶體控制器及具有整合的圖形之處理器1500的方塊圖。圖15中的粗線框顯示具有單核心1502A的處理器1500、系統代理器1510、一或更多匯流排控制器單元1516,而選加的虛線框顯示具有多核心1502A-N
的替代處理器1500、系統代理器單元1510中的一或更多整合的記憶體控制器元1514的組、以及特別用途的邏輯1508。
因此,處理器1500的不同實施包含:1)具有與圖形及/或科學(輸貫量)邏輯(包含一或更多核心)整合之特定用途的邏輯1508之CPU,以及,核心1502A-N是一或更多一般用途核心(例如,一般用途的有序核心、一般用途的亂序核心、二者的組合);2)設有核心1502A-N的共處理器是大數目的主要用於圖形及/或科學(輸貫量)之特定用途核心;以及,3)設有核心1502A-N的共處理器是大數目的之一般用途的有序核心。因此,處理器1500可為一般用途的處理器、共處理器或特定用途的處理器,舉例而言,網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(一般用途的圖形處理單元)、高輸貫量多整合核心(MIC)處理器(包含30或更多的核心)、嵌入式處理器、等等。處理器可以實施於一或更多晶片上。使用例如BiCMOS、CMOS、或NMOS等多種製程技術中的任一技術,處理器1500可以是部份及/或實施在一或更多基底上。
記憶體階層包含在核心內的一或更多等級的快取、一或更多共用快取單元1506、及耦合至整合記憶體控制器單元1514組之外部記憶體(未顯示)。共用快取單元1506組可以包含例如等級2(L2)、等級3(L3)、等級4(L4)、或其它等級快取等一或更多中級快取、最後等
級快取(LLC)、及/或其組合。雖然在一實施例中,環式互連單元1512將整合圖形邏輯1508、共用快取單元1506的組、及系統代理單元1510/整合的記憶體控制器單元1514互連,但是,替代實施例可以使用任何數目的已知技術來互連這些單元。在一實施例中,在一或更多快取單元1506與核心1502-A-N之間維持相干性。
在某些實施例中,一或更多核心1502A-N能夠多緒化。系統代理器1510包含那些元件協調及操作核心1502A-N。系統代理器單元1510可以包含例如電力控制單元(PCU)及顯示單元。PCU可以是或包含用於調節核心1502A-N及整合圖形邏輯1508的電力狀態所需的邏輯及元件。顯示單元是用於驅動一或更多外部連接的顯示器。
以架構指令集的觀點而言,核心1502A-N可以是同質的或異質的;亦即,核心1502A-N中的二或更多核心能夠執行相同的指令集,而其它核心能夠僅執行指令集的子集合或不同的指令集。
圖16-19是舉例說明的電腦架構的方塊圖。用於膝上型電腦、桌上型電腦、手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、電動遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放
器、手持裝置、及各式各樣的其它電子裝置等領域中熟知的其它系統設計及配置也是適合的。一般而言,能夠併有此處所揭示的處理器及/或其它執行邏輯的眾多種類的系統或電子裝置通常是適合的。
現在參考圖16,其顯示根據本發明的一實施例之系統1600的方塊圖。系統1600可以包含耦合至控制器集線器1620之一或更多處理器1610、1615。在一實施例中,控制器集線器1620包含圖形記憶體控制器集線器(GMCH)1690及輸入/輸出集線器(IOH)1650(可以在分開的晶片上);GMCH 1690包含記憶體及圖形控制器,記憶體1640及共處理器1645耦合至記憶體及圖形控制器;IOH 1650將輸入/輸出(I/O)裝置1660耦合至GMCH 1690。替代地,記憶體及圖形控制器中之一或二者整合於處理器之內(如此處所述般),記憶體1640及共處理器1645直接耦合至處理器1610,以及,控制器集線器1620與IOH 1650在單一晶片中。
在圖16中以虛線顯示選加本質之增加的處理器1615。各處理器1610、1615包含此處所述的處理核心中之一或更多且可為處理器1500的某版本。
舉例而言,記憶體1640可以是動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或是二者的組合。對於至少一實施例而言,控制器集線器1620經由例如前側匯流排(FSB)等多點匯流排、例如快速路徑互連(QPI)等點對點介面、或是類似連接1695而與處理器
1610、1615通訊。
在一實施例中,共處理器1645是特別用途的處理器,例如高輸貫量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、等等。在一實施例中,控制器集線器1620包含整合圖形加速器。
以包含架構、微架構、熱、耗電特徵、等等度量計量光譜的觀點而言,實體資源1610、1615之間有各種差異。
在一實施例中,處理器1610執行控制一般型式的資料處理作業的指令。嵌入於指令內的可為共處理器指令。處理器1610將這些共處理器指令視為應由附接的共處理器1645執行的型式。因此,處理器1610在共處理器匯流排或是其它互連上發佈這些共處理器指令(或是代表共處理器的控制訊號)給共處理器1645。共處理器1645接受及執行收到的共處理器指令。
現在參考圖17,其為根據本發明的實施例之第一更特定的舉例說明的系統1700的方塊圖。如圖17中所示般,多處理器系統1700是點對點互連系統,以及包含經由點對點互連1750耦合的第一處理器1770和第二處理器1780。各處理器1770及1780可以是處理器1500的某版本。在本發明的一實施例中,處理器1770和1780分別是處理器1610和1615,而共處理器1738是共處理器1645。在另一實施例中,處理器1770及1780分別是處理器1610和共處理器1645。
處理器1770和1780顯示為分別包含整合記憶體控制器(IMC)單元1772和1782。處理器1770也包含點對點(P-P)介面1176和1178作為其匯流排控制器單元的一部份;類似地,第二處理器1780包含P-P介面1786和1788。處理器1770、1780使用P-P介面電路1778、1788而經由點對點(P-P)介面1750交換資訊。如圖17所示,IMC 1772及1782將處理器耦合至各別記憶體,亦即記憶體1732和記憶體1734,它們可以是本地附著至各別處理器的主記憶體的部份。
處理器1770、1780使用點對點介面電路1776、1794、1786、1798,經由個別的P-P介面1752、1754而均可與晶片組1790交換資訊。晶片組1790經由高性能圖形介面1739,可選擇地與共處理器1738交換資訊。在一實施例中,共處理器1738是特定用途處理器,例如高輸貫量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、等等。
共用的快取(未顯示)可以包含任一處理器中或二處理器的外部、但經由P-P互連而與處理器連接,以致於假使處理器處於低電力模式中時,任一或二處理器的本地快取資訊可以儲存在共用的快取中。
晶片組1790可以經由介面1796而耦合至第一匯流排1716。在一實施例中,第一匯流排1716可以是週邊元件互連(PCI)匯流排,或是例如PCI快速匯流排或其它第三代I/O互匯流排等匯流排,但是,本發明的範圍不侷限
於此。
如圖17中所示般,各式各樣的I/O裝置1714與匯流排橋接器1718耦合至第一匯流排1716,匯流排橋接器1718耦合第一匯流排1716至第二匯流排1720。在一實施例中,例如共處理器、高輸貫量MIC處理器、GPGPU、加速器(例如圖形加速器或是數位訊號處理(DSP)單元)、現場可編程閘陣列、或是任何其它處理器等一或更多增加的處理器1715耦合至第一匯流排1716。在一實施例中,第二匯流排1720可以是低接腳數(LPC)匯流排。在一實施例中,各種裝置可以耦合至第二匯流排1720,舉例而言,包含鍵盤及/或滑鼠1722、通訊裝置1727及例如碟片驅動器或其它大量儲存裝置等包含指令/碼及資料1730的儲存單元1728。此外,音訊I/O 1724可以耦合至第二匯流排1720。注意,其它架構是可能的。舉例而言,取代圖17的點對點架構,系統可以實施多點匯流排或其它此類架構。
現在參考圖18,其顯示根據本發明的實施例之第二更特定舉例說明的系統1800之方塊圖。圖17及18中類似的元件帶有類似的代號,以及,圖17的某些態樣在圖18中被省略,以免模糊圖18的其它態樣。
圖18顯示處理元件1770、1780分別包含整合的記憶體及I/O控制邏輯(CL)1772和1782。因此,CL 1772、1782包含整合記憶體控制器單元及包含I/O控制邏輯。圖18顯示不僅記憶體1732、1734耦合至CL 1772、
1782,I/O裝置1814也耦合至控制邏輯1772、1782。舊制I/O裝置1815耦合至晶片組1790。
現在參考圖19,其顯示根據本發明的實施例之SoC 1900的方塊圖。圖15中類似的元件帶有類似的代號。而且,虛線框是關於更多進階的SoCs的選加特點。在圖19中,互連單元1902耦合至:應用處理器1910,包含一或更多核心202A-N及共用快取單元1506的集合;系統代理器單元1510;匯流排控制器單元1516;整合記憶體控制器單元1514;包含整合圖形邏輯、影像處理器、音訊處理器、以及視訊處理器之一或更多共處理器1920的組;靜態隨機存取記憶體(SRAM)單元1930;直接記憶體存取(DMA)單元1932;以及用於耦合至一或更多外部顯示器的顯示單元1940。在一實施例中,共處理器1920包含特定用途的處理器,例如網路或通訊處理器、壓縮引擎、GPGPU、高輸貫量MIC處理器、嵌入式處理器、等等。
此處揭示的機構實施例可以以硬體、軟體、韌體或這些實施方式的結合來實施。本發明的實施例可以實施成在可編程系統上執行的電腦程式或程式碼,可編程系統包括至少一處理器、儲存系統(包含依電性及非依電性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置。
例如圖17中所示的碼1730等程式碼可以應用至輸入資訊以執行此處所述的功能和產生輸出資訊。輸出資訊可
以以已知方式應用至一或更多輸出裝置。為了此應用,處理系統包含具有例如數位訊號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或微處理器等處理器之任何系統。
程式碼可以以高階程式或物件導向的程式語言實施,以與處理系統通訊。假使需要時,程式碼也可以以組合或機器語言來實施。事實上,此處所述的機構在範圍上不侷限於任何特定的程式語言。在任何情形中,語言可以是編譯或解譯的語言。
至少一實施例的一或更多態樣可以由儲存在機器可讀取的媒體上之代表指令實施,代表指令代表處理器內各種邏輯,代表指令由機器讀取時促使機器製造邏輯以執行此處所述的技術。稱為「IP核心」的這些代表可以儲存在實體的、機器可讀取的媒體並供應至各式各樣的客戶或製造設施,而載入至真正地製造邏輯的製造機器或處理器。
此機器可讀取的媒體包含但不限於由機器或裝置製造或形成的物件之非暫時性、實體配置,包括例如硬碟等儲存媒體、包含軟碟、光碟、光碟唯讀記憶體(CD-ROM)、可重寫光碟(CD-RW)、及磁光碟等任何其它型式的碟片、例如唯讀記憶體(ROM)、例如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)等隨機存取記憶體(RAM)、可抹拭可編程唯讀記憶體(EPROM)、快閃記憶體、電可抹拭可編程唯讀記憶體(EEPROM)等半導體裝置、相位改變記憶體(PCM)、
磁性或光學卡、或適用於儲存電子指令的任何其它型式的媒體。
因此,本發明的實施例也包含含有指令或含有設計資料之非暫時的、實體的機器可讀取的媒體,所述設計資料是例如硬體說明語言(HDL),其界定此處所述的結構、電路、裝置、處理器及/或系統特徵。這些實施例也意指程式產品。
在某些情形中,指令轉換器可以用以將指令從源指令集轉換至標的指令集。舉例而言,指令轉換器可以將指令轉譯(例如,使用靜態二進位轉譯、包含動態編譯的動態二進位轉譯)、變形、模仿、或其它方式轉換至由核心處理的一或更多其它指令。指令轉換器可以以軟體、硬體、韌體、或其結合來實施。指令轉換器可以是在處理器上、不在處理器上、或部份在處理器上及部份不在處理器上。
圖20是方塊圖,根據本發明的實施例之比較使用軟體指令轉換器以將源指令集中的二進位指令轉換成標的指令集中的二進位指令。在顯示的實施例中,指令轉換器是軟體指令轉換器,但是,指令轉換器可以替代地以軟體、硬體、或其各種結合來實施。圖20顯示高階語言2002的程式,其可以由x86編譯器2004編譯以產生x86二進位碼2006,二進位碼2006可以由具有至少一x86指令集核心2016的處理器原地執行。具有至少一x86指令集核心
2016的處理器代表藉由共容地執行或其它方式地處理下述,而能夠與具有至少一x86指令集核心的英特爾處理器執行實質上相同功能的任何處理器:(1)英特爾x86指令集核心的指令集的實質部份,或是(2)以在具有至少一x86指令集核心的英特爾處理器上運行為目的之應用程式或其它軟體的物件碼版本,以便取得與具有至少一x86指令集核心的英特爾處理器實質上相同的結果。x86編譯器2004代表可以操作以產生x86二進位碼2006(例如,物件碼)之編譯器,x86二進位碼2006藉由或不藉由增加的鏈結處理,都可以在具有至少一x86指令集核心2016的處理器上執行。類似地,圖20顯示高階語言2002的程式,使用替代指令集編譯器2008,可以將其編譯以產生替代指令集二進位碼2010,替代指令集二進位碼2010可以由不具有至少一x86指令集核心2014的處理器(例如,具有執行例如加州Sunnyvale的MIPS Technologies公司的MIPS指令集及/或加州Sunnyvale的ARM Holdings公司的ARM指令集之核心的處理器)原地執行。指令轉換器2012用以將x86二進位碼2006轉換成可以由不具有x86指令集核心2014的處理器原地執行的碼。由於能夠如此執行的指令轉換器難以製造,所以,此轉換的碼不太可能與替代指令集二進位碼2010相同;但是,所述轉換的碼將完成一般操作及由來自替代指令集的指令組成。因此,指令轉換器2012代表軟體、韌體、硬體或其組合,其經由仿真、模擬或任何其它處理而
允許不具有x86指令集處理器或核心的處理器或其它電子裝置執行x86二進位碼2006。
圖3-8中任一圖說明的組件、特點、及細節也可選擇地用於圖2中。圖4-5中任一圖說明的組件、特點、及細節也可選擇地用於圖3中。圖7-8中任一圖說明的組件、特點、及細節也可選擇地用於圖6中。此外,用於此處所述的任何裝置之此處所述的組件、特點、及細節也可選擇地用於及/或應用至在此處所述的任何方法,這些方法在實施例中由此裝置執行及/或與此裝置一起執行。此處所述的任何處理器可以包含在此處揭示之任何電腦系統或其它系統中。在某些實施例中,指令具有此處揭示的指令格式之特點或細節,但這並非必要。
在說明及申請專利範圍中,使用「連接」及/或「耦合」等詞與它們的衍生。這些詞並非要作為彼此的同義字。相反地,在實施例中,「連接」可用以表示二或更多元件是彼此直接實體及/或電接觸。「耦合」意指二或更多元件是彼此直接實體及/或間接接觸。但是,「耦合」也意指二或更多元件彼此未直接接觸但仍然彼此協力或互動。舉例而言,執行單元可以經由一或更多介入的組件而與暫存器及/或解碼單元相耦合。在圖式中,箭頭用以顯示連接及耦合。
使用「及/或」等詞。如同此處所使用般,「及/或」意謂一或另一或是二者(例如,A及/或B意指A或B或是A及B)。
在上述實施例中,揭示眾多特定細節,以助於完整瞭解本發明的實施例。但是,不用這些特定細節中的某些細節,仍可實施其它實施例。本發明的範圍並非由上述特定實例決定而是僅由下述申請專利範圍決定。在其它情形中,以方塊圖形式及/或無細節,顯示習知的電路、結構、裝置、及作業,以免模糊說明之瞭解。在被視為適當時,在多個圖中,除非另外指明或清楚表示,否則,重複代號、或代號的尾部,以標示選加地具有類似的或是相同的特徵之對應的或類似的元件。
某些作業可以由硬體組件執行、或是可以以機器可執行的或電路可執行的指令具體實施,這些指令被用以促使及/或造成依指令編程的機器、電路或硬體組件(例如處理器、處理器的部份、電路、等等)等電路或其它硬體元件執行作業。作業可以由硬體及軟體的結合選加地執行。處理器、機器、電路、或硬體包含特定的或特別的電路或其它邏輯(例如,可能與韌體及/或軟體相結合之硬體),可操作以執行及/或處理機器指令及儲存結果以回應指令。
某些實施例包含製造物品(例如,電腦程式產品),製造物品包含機器可讀取的媒體。媒體包含機構,機構提供、儲存可由機器讀取的形式之資訊。機器可讀取的媒體提供及於其上儲存指令或指令序列,假使及/或由機器執行時,這些指令或指令序列可操作以促使機器執行及/或造成機器執行此處所述的一或更多作業、方法、或技術。
機器可讀取的媒體儲存或以其它方式提供此處揭示的指令之一或更多實施例。
在某些實施例中,機器可讀取的媒體包含實體的及/或非暫時的機器可讀取的儲存媒體。舉例而言,實體的及/或非暫時的機器可讀取的儲存媒體包含軟碟、光學儲存媒體、光碟、光學資料儲存裝置、CD-ROM、磁碟、磁光碟、唯讀記憶體(ROM)、可編程ROM(PROM)、可抹拭及可編程ROM(EPROM)、電可抹拭及可編程ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體、相變記憶體、相變資料儲存材料、非依電性記憶體、非依電性資料儲存裝置、非暫時記憶體、非暫時資料儲存裝置、等等。
適當的機器實例包含但不限於一般用途處理器、特別用途處理器、指令處理裝置、數位邏輯電路、積體電路、等等。適當的機器之又其它實例包含計算裝置或是包含處理器、指令處理裝置、數位邏輯電路、或積體電路之其它電子裝置。這些計算裝置及電子裝置的實例包含但不限於桌上型電腦、膝上型電腦、筆記型電腦、平板電腦、筆記電腦、智慧型電話、行動電話、伺服器、網路裝置(例如路由器)、行動網際網路裝置(MID)、媒體播放器、智慧型電視、桌上型易網機、機上盒、及電動玩具控制器。
舉例而言,在本說明書中述及的「一實施例」、「實施例」、「一或更多實施例」、「某些實施例」係表示特
定特點包含在本發明的實施中但非必要。類似地,在說明中,為了使揭示流暢及助於瞭解各式各樣的發明態樣,各式各樣的特點群聚於單一實施例、圖式、或其說明中。但是,本揭示的方法不應被解釋成反應本發明要求比各申請專利範圍項中載述的特點還多的特點。相反地,如後述申請專利範圍所反應般,發明的態樣少於單一揭示的實施例之所有特點。因此,跟隨在詳細說明之後的申請專利範圍於此併入實施方式一節中,以各項申請專利範圍依據它自己作為本發明的分別實施例。
下述實例關於其它實施例。在一或更多實施例中的任意處可以使用實例中的特點。
實例1是處理器或其它設備,包含眾多緊縮資料暫存器、及解碼單元以解碼無區域提示向量記憶體存取指令。無區域提示向量記憶體存取指令標示會具有源緊縮記憶體索引之眾多緊縮資料暫存器的緊縮資料暫存器。源緊縮記憶體索引具有眾多記憶體索引。無區域性提示向量記憶體存取指令是提供無區域性提示給處理器以用於要依記憶體索引被存取的資料元。處理器也包含與解碼單元、以及眾多緊縮資料暫存器耦合的執行單元。執行單元會存取位於根據記憶體索引的記憶體位置之資料元,以回應無區域性提示向量記憶體存取指令。
實例2包含實例1的處理器,又包含快取階層,以
及,其中,無區域性提示向量記憶體存取指令包含無區域性提示向量載入指令。執行單元會從記憶體位置載入資料元以回應無區域性提示向量載入指令。快取階層選擇性地不快取從記憶體位置載入的資料元,以回應無區域性提示向量載入指令。
實例3包含實例1-2中任一實例的處理器,又包含快取階層,以及,其中,無區域性提示向量記憶體存取指令包含無區域性提示向量載入指令。執行單元會從記憶體位置載入資料元以回應無區域性提示向量載入指令。為回應無區域性提示向量載入,在對資料元快取未中時,快取階層會選擇性地不分配快取階層中的空間用於從記憶體位置載入的資料元。
實例4包含實例1-3中任一實例的處理器,又包含快取階層,以及,其中,無區域性提示向量記憶體存取指令包含無區域性提示向量載入指令。執行單元會從記憶體位置載入資料元以回應無區域性提示向量載入指令。在對資料元快取命中時,快取階層選擇性地從快取階層輸出不多於一半快取列,以回應無區域性提示向量載入指令。
實例5包含實例4的處理器,其中,在對資料元快取命中時,快取階層選擇性地從快取階層輸出不多於單一資料元,以回應無區域性提示向量載入指令。
實例6包含實例1-4中任一實例的處理器,又包含記憶體控制器,以及,其中,無區域性提示向量記憶體存取指令包含無區域性提示向量載入指令。記憶體控制器選擇
性地對從記憶體載入的各資料元載入不多於一半快取列的資料量,以回應無區域性提示向量載入指令。
實例7包含實例6的處理器,其中,記憶體控制器選擇性地對從記憶體載入的各資料元載入不多於128位元,以回應無區域性提示向量載入指令。
實例8包含實例1-7中任一實例的處理器,其中,無區域性提示向量記憶體存取指令包含無區域性提示集中指令。無區域性提示集中指令會標示眾多緊縮資料暫存器的目的地緊縮資料暫存器。執行單元會將緊縮資料結果儲存在目的地緊縮資料暫存器中,以回應無區域性提示集中指令。緊縮資料結果會包含從記憶體位置集中的資料元。
實例9包含實例1的處理器,又包含記憶體控制器,以及,其中,無區域性提示向量記憶體存取指令包含無區域性提示向量寫入指令。執行單元會將指令標示的源緊縮資料之資料元覆寫於記憶體位置的資料元上,以回應無區域性提示向量寫入指令。記憶體控制器對於被寫至記憶體的源緊縮資料的各資料元是選擇性地寫入不多於一半快取列資料量。
實例10包含實例1及9的處理器,又包含快取階層,以及,其中,無區域性提示向量記憶體存取指令包含無區域性提示向量寫入指令。執行單元會將指令標示的源緊縮資料之資料元覆寫於記憶體位置的資料元上,以回應無區域性提示向量寫入指令。在較低階快取中用於資料元的快取命中時,快取階層會選擇性地不將與快取命中相關
的快取列帶至更高階快取中。
實例11包含實例1、9及10中任一實例的處理器,其中,無區域性提示向量記憶體存取指令包含無區域性提示分散指令,以及,其中,無區域性提示分散指令是標示眾多緊縮資料暫存器的第二緊縮資料暫存器,第二緊縮資料暫存器會具有要包含眾多資料元的源緊縮資料。執行單元會將源緊縮資料的資料元覆寫於在記憶體位置的資料元上,以回應無區域性提示分散指令。
實例12包含實例1-11中任一實例的處理器,其中,解碼單元會將選擇性地具有至少一位元之無區域性提示向量記憶體存取指令解碼,所述至少一位元會具有第一值以標示無區域性提示以及具有第二值以標示缺少無區域性提示。
實例13包含實例1-11中任一實例的處理器,其中,解碼單元會將選擇性地具有眾多位元之無區域性提示向量記憶體存取指令解碼,所述眾多位元會具有第一值以標示無區域性提示是無時間區域性提示、第二值以標示無區域性提示是無空間區域性提示、以及第三值以標示無區域性提示是無時間及無空間區域性提示。
實例14包含實例1-13中任一實例的處理器,其中,解碼單元會將選擇性地標示源緊縮資料作業遮罩之無區域性提示向量記憶體存取指令解碼。
實例15包含處理器中的方法,包含:接收無區域性提示向量記憶體存取指令。無區域性提示向量記憶體存取
指令標示具有眾多記憶體索引的源緊縮記憶體索引。無區域性提示向量記憶體存取指令會提供無區域性提示給處理器以用於要依記憶體索引被存取的資料元。方法也包含存取位於根據記憶體索引的記憶體位置之資料元,以回應無區域性提示向量記憶體存取指令。
實例16包含實例15的方法,其中,接收無區域性提示向量記憶體存取指令包含接收無區域性提示向量載入指令,以及,存取包含從記憶體位置載入資料元。方法又包含選擇性地省略快取從快取階層中的記憶體載入的資料元。
實例17包含實例15-16中任一實例的方法,其中,接收無區域性提示向量記憶體存取指令包含接收無區域性提示向量載入指令,以及,其中,存取包含從記憶體位置載入資料元。方法又包含在快取階層中用於資料元的快取命中時,選擇性地從快取階層輸出不多於一半快取列。
實例18包含實例15-17中任一實例的方法,其中,接收無區域性提示向量記憶體存取指令包含接收無區域性提示向量載入指令。存取包含從記憶體位置載入資料元,包含對從記憶體載入的各資料元選擇性地載入不多於一半快取列資料量。
實例19包含實例15的方法,其中,接收無區域性提示向量記憶體存取指令包含接收無區域性提示向量寫入指令。存取包含將指令標示的源緊縮資料之資料元覆寫於記憶體位置的資料元上,包含對被寫至記憶體的各資料元選
擇性地寫入不多於一半快取列資料量。
實例20包含實例15及19中任一實例的方法,其中,接收無區域性提示向量記憶體存取指令包含接收無區域性提示向量寫入指令。存取包含將指令標示的源緊縮資料之資料元覆寫於記憶體位置的資料元上。方法又包含在較低階快取階層中用於資料元的快取命中時,選擇性地不將與快取命中相關的快取列帶至更高階快取。
實例21包含處理指令的系統,系統包含互連、及與互連耦合的處理器。處理器會接收無區域性提示向量記憶體存取指令。無區域性提示向量記憶體存取指令會標示源緊縮記憶體索引。源緊縮記憶體索引具有眾多記憶體索引。無區域性提示向量記憶體存取指令會提供無區域性提示給處理器以用於要依記憶體索引被存取的資料元。處理器會存取位於根據記憶體索引的記憶體位置之資料元,以回應無區域性提示向量記憶體存取指令。系統也包含與互連耦合的動態隨機存取記憶體(DRAM)。
實例22包含實例21的系統,其中,無區域性提示向量記憶體存取指令包含無區域性提示集中指令。處理器選擇性地不快取為回應快取階層中的無區域性集中指令而從記憶體載入的資料元,以回應無區域性集中指令。
實例23包含製造物件,製造物件包括非暫時的機器可讀取的儲存媒體。非暫時的機器可讀取的儲存媒體儲存無區域性提示向量載入指令。無區域性提示向量載入指令標示會具有源緊縮記憶體索引之緊縮資料暫存器,源緊縮
記憶體索引具有眾多記憶體索引。指令也會標示目的地緊縮資料暫存器。無區域性提示向量記憶體存取指令會提供無區域性提示。無區域性提示向量載入指令假使由機器執行時會促使機器執行多個作業,所述多個作業包含儲存緊縮資料結果於目的地緊縮資料暫存器中。緊縮資料結果會包含從根據記憶體索引的記憶體位置集中之資料元。多個作業也包含省略快取已從快取階層中的記憶體載入的資料元。
實例24包含實例23的製造物件,其中,指令選擇性地促使機器對從記憶體載入的各資料元載入小於一半快取列資料量。
實例25包含處理器或其它設備,可操作以執行實例15-20中任一實例的方法。
實例26包含處理器或其它設備,其包含用於執行實例15-20中任一實例的方法之機構。
實例27包含處理器,處理器包含模組、單元、邏輯、電路及機構的任何組合以執行實例15-20中任一實例的方法。
實例28包含製造物件,製造物件包含選擇性非暫時的機器可讀取的媒體,其選擇性地儲存或以其它方式提供指令,假使及/或當指令由處理器、電腦系統、或其它機器執行時,會操作以促使機器執行實例15-20中任一實例的方法。
實例29包含電腦系統或其它電子裝置,其包含互
連、與互連耦合之實例1-14中任一實例的處理器、以及與互連耦合之至少一組件,至少一組件係選自動態隨機存取記憶體(DRAM)、網路介面、繪圖晶片、無線通訊晶片、全球行動通訊系統(GSM)天線、相變記憶體、及攝影機。
實例30包含實質上如此處所述的處理器或其它設備。
實例31包含處理器或其它設備,其可操作以執行實質上如此處所述的任何方法。
實例32包含處理器或其它設備,其包含用於執行實質上如此處所述的任何方法之機構。
實例33包含處理器或其它設備,其可操作以執行實質上如此處所述的任何無區域性提示向量記憶體存取指令。
實例34包含處理器或其它設備,其包含用於執行實質上如此處所述的任何無區域性提示向量記憶體存取指令之機構。
Claims (24)
- 一種處理器,包括:眾多緊縮資料暫存器;解碼單元,用以解碼無區域性提示向量記憶體存取指令,該無區域性提示向量記憶體存取指令標示會具有源緊縮記憶體索引之眾多緊縮資料暫存器的緊縮資料暫存器,該源緊縮記憶體索引具有眾多記憶體索引,其中,該無區域性提示向量記憶體存取指令係用以提供無區域性提示給該處理器以用於要依記憶體索引被存取的資料元;以及,執行單元,與該解碼單元以及該眾多緊縮資料暫存器耦合,回應該無區域性提示向量記憶體存取指令,該執行單元用以存取位於根據該記憶體索引的記憶體位置之資料元。
- 如申請專利範圍第1項的處理器,又包括快取階層,其中,該無區域性提示向量記憶體存取指令包含無區域性提示向量載入指令,其中,回應該無區域性提示向量載入指令,該執行單元係用以從該記憶體位置載入該資料元,以及,其中,回應該無區域性提示向量載入指令,該快取階層係不用以快取從該記憶體位置載入的該資料元。
- 如申請專利範圍第1項的處理器,又包括快取階層,其中,該無區域性提示向量記憶體存取指令包括無區域性提示向量載入指令,其中,回應該無區域性提示向量載入指令,該執行單元會係用以從該記憶體位置載入該資料元,以及,其中,回應該無區域提示向量載入指令,在 對該資料元快取失誤時,該快取階層係用以不用以分配該快取階層中用於從記憶體載入的該資料元之的空間。
- 如申請專利範圍第1項的處理器,又包括快取階層,其中,該無區域性提示向量記憶體存取指令包括無區域性提示向量載入指令,其中,回應該無區域性提示向量載入指令,該執行單元係用以從該記憶體位置載入該資料元,以及,其中,在對該資料元快取命中時,回應該無區域性提示向量載入指令,該快取階層係用以從該快取階層輸出不多於一半快取列。
- 如申請專利範圍第4項的處理器,其中,在對該資料元快取命中時,回應該無區域性提示向量載入指令,該快取階層係用以從該快取階層輸出不多於單一資料元。
- 如申請專利範圍第1項的處理器,又包括記憶體控制器,其中,該無區域性提示向量記憶體存取指令包括無區域性提示向量載入指令,以及,其中,回應該無區域性提示向量載入指令,該記憶體控制器係用以對從記憶體載入的各該資料元載入不多於一半快取列的資料量。
- 如申請專利範圍第6項的處理器,其中,回應該無區域性提示向量載入指令,該記憶體控制器係用以對從記憶體載入的各該資料元載入不多於128位元。
- 如申請專利範圍第1項的處理器,其中,該無區域性提示向量記憶體存取指令包括無區域性提示集中指令,其中,該無區域性提示集中指令係用以標示該眾多緊縮資料暫存器的目的地緊縮資料暫存器,其中,回應該無區域 性提示集中指令,該執行單元係用以將緊縮資料結果儲存在該目的地緊縮資料暫存器中,以及,其中,該緊縮資料結果係用以包含從該記憶體位置集中的該資料元。
- 如申請專利範圍第1項的處理器,又包括記憶體控制器,其中,該無區域性提示向量記憶體存取指令包括無區域性提示向量寫入指令,其中,回應該無區域性提示向量寫入指令,該執行單元係用以將該指令標示的源緊縮資料之資料元覆寫於在該記憶體位置的該資料元上,以及,其中,回應該無區域性提示向量寫入指令,該記憶體控制器係用以對於被寫至記憶體的該源緊縮資料的各資料元會寫入不多於一半快取列資料量。
- 如申請專利範圍第1項的處理器,又包括快取階層,其中,該無區域性提示向量記憶體存取指令包括無區域性提示向量寫入指令,其中,回應該無區域性提示向量寫入指令,該執行單元係用以將該指令標示的源緊縮資料之資料元覆寫於在該記憶體位置的該資料元上,以及,其中,回應該無區域性提示向量寫入指令,該快取階層在較低階快取中用於資料元的快取命中時,該快取階層不用以將與該快取命中相關的快取列帶至更高階快取中。
- 如申請專利範圍第1項的處理器,其中,該無區域性提示向量記憶體存取指令包括無區域性提示分散指令,其中,該無區域性提示分散指令係用以標示該眾多緊縮資料暫存器的第二緊縮資料暫存器,該第二緊縮資料暫存器係用以具有會包含眾多資料元的源緊縮資料,其中, 回應該無區域性提示分散指令,該執行單元係用以將該源緊縮資料的該資料元覆寫於在該記憶體位置的該資料元上。
- 如申請專利範圍第1項的處理器,其中,該解碼單元係用以將具有至少一位元之無區域性提示向量記憶體存取指令解碼,該至少一位元係用以具有第一值以標示該無區域性提示以及係用以具有第二值以標示缺少該無區域性提示。
- 如申請專利範圍第1項的處理器,其中,該解碼單元係用以將具有眾多位元之該無區域性提示向量記憶體存取指令解碼,該眾多位元係用以具有第一值以標示該無區域性提示是無時間區域性提示、第二值以標示該無區域性提示是無空間區域性提示、以及第三值以標示該無區域性提示是無時間及無空間區域性提示。
- 如申請專利範圍第1項的處理器,其中,該解碼單元係用以將標示源緊縮資料作業遮罩之該無區域性提示向量記憶體存取指令解碼。
- 一種方法,包括:接收無區域性提示向量記憶體存取指令,該無區域性提示向量記憶體存取指令標示具有眾多記憶體索引的源緊縮記憶體索引,其中,該無區域性提示向量記憶體存取指令提供無區域性提示給該處理器以用於要依該記憶體索引被存取的資料元;以及,回應該無區域性提示向量記憶體存取指令,存取位於根據該記憶體索引的記憶體位置之該 資料元。
- 如申請專利範圍第15項的方法,其中,接收該無區域性提示向量記憶體存取指令包括接收無區域性提示向量載入指令,其中,存取包括從該記憶體位置載入該資料元,又包括省略從快取階層中的記憶體載入的快取資料元。
- 如申請專利範圍第15項的方法,其中,接收該無區域性提示向量記憶體存取指令包括接收無區域性提示向量載入指令,其中,存取包括從該記憶體位置載入該資料元,又包括在快取階層中用於資料元的快取命中時,從該快取階層輸出不多於一半快取列。
- 如申請專利範圍第15項的方法,其中,接收該無區域性提示向量記憶體存取指令包括接收無區域性提示向量載入指令,其中,存取包括從該記憶體位置載入該資料元,包含對從記憶體載入的各資料元載入不多於一半快取列資料量。
- 如申請專利範圍第15項的方法,其中,接收該無區域性提示向量記憶體存取指令包括接收無區域性提示向量寫入指令,其中,存取包括將該指令標示的源緊縮資料之資料元覆寫於在該記憶體位置的資料元上,包含對被寫至記憶體的各資料元寫入不多於一半快取列資料量。
- 如申請專利範圍第15項的方法,其中,接收該無區域性提示向量記憶體存取指令包括接收無區域性提示向量寫入指令,其中,存取包括將該指令標示的源緊縮資料 之資料元覆寫於該記憶體位置的資料元上,以及,又包括在較低階快取階層中用於資料元的快取命中時,不將與快取命中相關的快取列帶至更高階快取。
- 一種處理指令的系統,包括:互連;處理器,與該互連耦合,該處理器用以接收無區域性提示向量記憶體存取指令,該無區域性提示向量記憶體存取指令用以標示源緊縮記憶體索引,該源緊縮記憶體索引具有眾多記憶體索引,該無區域性提示向量記憶體存取指令用以提供無區域性提示給該處理器以用於要依該記憶體索引被存取的資料元,回應該無區域性提示向量記憶體存取指令,該處理器用以存取位於根據該記憶體索引的記憶體位置之該資料元;以及,動態隨機存取記憶體(DRAM),與互連耦合。
- 如申請專利範圍第21項的系統,其中,該無區域性提示向量記憶體存取指令包括無區域性提示集中指令,以及,其中,回應該無區域性集中指令,該處理器不用以快取為回應快取階層中的該無區域性集中指令而從記憶體載入的資料元。
- 一種非暫態機器可讀取儲存媒體,該非暫態機器可讀取儲存媒體儲存無區域性提示向量載入指令,該無區域性提示向量載入指令用以標示緊縮資料暫存器以及目的地緊縮資料暫存器,該緊縮資料暫存器係用以具有源緊縮記憶體索引,該源緊縮記憶體索引係用以具有眾多記憶體 索引,其中,該無區域性提示向量記憶體存取指令係用以提供無區域性提示,以及該無區域性提示向量載入指令,假使由機器執行時會促使該機器執行多個作業,該多個作業包括:儲存緊縮資料結果於該目的地緊縮資料暫存器中,該緊縮資料結果用以包含從根據該記憶體索引的記憶體位置集中之資料元;以及,省略已從快取階層中的記憶體載入的快取資料元。
- 如申請專利範圍第23項的非暫態機器可讀取儲存媒體,其中,該指令係用以促使該機器用以對於從記憶體載入的各資料元載入小於一半快取列資料量。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/335,006 US9600442B2 (en) | 2014-07-18 | 2014-07-18 | No-locality hint vector memory access processors, methods, systems, and instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201617890A TW201617890A (zh) | 2016-05-16 |
TWI567556B true TWI567556B (zh) | 2017-01-21 |
Family
ID=55021835
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104118928A TWI567556B (zh) | 2014-07-18 | 2015-06-11 | 無區域性提示向量記憶體存取之處理器、方法、系統與指令 |
Country Status (4)
Country | Link |
---|---|
US (7) | US9600442B2 (zh) |
CN (3) | CN105278917B (zh) |
DE (1) | DE102015007571B4 (zh) |
TW (1) | TWI567556B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8515052B2 (en) | 2007-12-17 | 2013-08-20 | Wai Wu | Parallel signal processing system and method |
US9600442B2 (en) | 2014-07-18 | 2017-03-21 | Intel Corporation | No-locality hint vector memory access processors, methods, systems, and instructions |
US10248419B2 (en) * | 2016-03-09 | 2019-04-02 | International Business Machines Corporation | In-memory/register vector radix sort |
US10901940B2 (en) * | 2016-04-02 | 2021-01-26 | Intel Corporation | Processors, methods, systems, and instructions to atomically store to memory data wider than a natively supported data width |
US10379855B2 (en) * | 2016-09-30 | 2019-08-13 | Intel Corporation | Processors, methods, systems, and instructions to load multiple data elements to destination storage locations other than packed data registers |
US10261786B2 (en) * | 2017-03-09 | 2019-04-16 | Google Llc | Vector processing unit |
US10409727B2 (en) | 2017-03-31 | 2019-09-10 | Intel Corporation | System, apparatus and method for selective enabling of locality-based instruction handling |
US10402336B2 (en) | 2017-03-31 | 2019-09-03 | Intel Corporation | System, apparatus and method for overriding of non-locality-based instruction handling |
US10503652B2 (en) * | 2017-04-01 | 2019-12-10 | Intel Corporation | Sector cache for compression |
US10705590B2 (en) | 2017-11-28 | 2020-07-07 | Google Llc | Power-conserving cache memory usage |
US10572259B2 (en) * | 2018-01-22 | 2020-02-25 | Arm Limited | Hints in a data processing apparatus |
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 |
US11237970B2 (en) * | 2018-11-07 | 2022-02-01 | Micron Technology, Inc. | Reduce data traffic between cache and memory via data access of variable sizes |
US11609858B2 (en) * | 2018-12-26 | 2023-03-21 | Samsung Electronics Co., Ltd. | Bypass predictor for an exclusive last-level cache |
US11113207B2 (en) * | 2018-12-26 | 2021-09-07 | Samsung Electronics Co., Ltd. | Bypass predictor for an exclusive last-level cache |
US11615057B2 (en) * | 2019-02-26 | 2023-03-28 | Amir More | Data compression and decompression facilitated by machine learning |
CN111584011B (zh) * | 2020-04-10 | 2023-08-29 | 中国科学院计算技术研究所 | 面向基因比对的细粒度并行负载特征抽取分析方法及系统 |
CN117591184B (zh) * | 2023-12-08 | 2024-05-07 | 超睿科技(长沙)有限公司 | Risc-v向量压缩乱序执行的实现方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5966528A (en) * | 1990-11-13 | 1999-10-12 | International Business Machines Corporation | SIMD/MIMD array processor with vector processing |
TW201218771A (en) * | 2006-02-21 | 2012-05-01 | Qualcomm Inc | Method, apparatus, processor and computer product for processing multimedia data |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5708849A (en) | 1994-01-26 | 1998-01-13 | Intel Corporation | Implementing scatter/gather operations in a direct memory access device on a personal computer |
US5829025A (en) | 1996-12-17 | 1998-10-27 | Intel Corporation | Computer system and method of allocating cache memories in a multilevel cache hierarchy utilizing a locality hint within an instruction |
US6275904B1 (en) | 1998-03-31 | 2001-08-14 | Intel Corporation | Cache pollution avoidance instructions |
US7467377B2 (en) | 2002-10-22 | 2008-12-16 | Intel Corporation | Methods and apparatus for compiler managed first cache bypassing |
US7647557B2 (en) | 2005-06-29 | 2010-01-12 | Intel Corporation | Techniques for shuffling video information |
US7627735B2 (en) | 2005-10-21 | 2009-12-01 | Intel Corporation | Implementing vector memory operations |
US8074026B2 (en) | 2006-05-10 | 2011-12-06 | Intel Corporation | Scatter-gather intelligent memory architecture for unstructured streaming data on multiprocessor systems |
US8447962B2 (en) | 2009-12-22 | 2013-05-21 | Intel Corporation | Gathering and scattering multiple data elements |
US7984273B2 (en) | 2007-12-31 | 2011-07-19 | Intel Corporation | System and method for using a mask register to track progress of gathering elements from memory |
US8667221B2 (en) | 2008-04-08 | 2014-03-04 | Intel Corporation | Detection of streaming data in cache |
US7814303B2 (en) * | 2008-10-23 | 2010-10-12 | International Business Machines Corporation | Execution of a sequence of vector instructions preceded by a swizzle sequence instruction specifying data element shuffle orders respectively |
US8627017B2 (en) * | 2008-12-30 | 2014-01-07 | Intel Corporation | Read and write monitoring attributes in transactional memory (TM) systems |
US8230172B2 (en) | 2009-12-03 | 2012-07-24 | Intel Corporation | Gather and scatter operations in multi-level memory hierarchy |
US20110257505A1 (en) * | 2010-04-20 | 2011-10-20 | Suri Jasjit S | Atheromatic?: imaging based symptomatic classification and cardiovascular stroke index estimation |
US9727471B2 (en) | 2010-11-29 | 2017-08-08 | Intel Corporation | Method and apparatus for stream buffer management instructions |
US8688957B2 (en) | 2010-12-21 | 2014-04-01 | Intel Corporation | Mechanism for conflict detection using SIMD |
US9471532B2 (en) * | 2011-02-11 | 2016-10-18 | Microsoft Technology Licensing, Llc | Remote core operations in a multi-core computer |
JP5933725B2 (ja) * | 2011-09-26 | 2016-06-15 | インテル・コーポレーション | ベクトル散乱演算機能及びベクトル収集演算機能を提供する命令及びロジック |
DE112011105666T5 (de) * | 2011-09-26 | 2014-07-10 | Intel Corp. | Befehl und Logik zum Bereitstellen von Vektor-Lade-OP/Speicher-OP mit Schritt-Funktionalität |
US9021233B2 (en) * | 2011-09-28 | 2015-04-28 | Arm Limited | Interleaving data accesses issued in response to vector access instructions |
US20130159679A1 (en) * | 2011-12-20 | 2013-06-20 | James E. McCormick, Jr. | Providing Hint Register Storage For A Processor |
WO2013095668A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Systems, apparatuses, and methods for performing vector packed compression and repeat |
KR101328725B1 (ko) * | 2011-12-29 | 2013-11-11 | 전자부품연구원 | 블롭 감지 장치 및 그 방법 |
US8850162B2 (en) * | 2012-05-22 | 2014-09-30 | Apple Inc. | Macroscalar vector prefetch with streaming access detection |
US9842046B2 (en) * | 2012-09-28 | 2017-12-12 | Intel Corporation | Processing memory access instructions that have duplicate memory indices |
US9348601B2 (en) | 2012-12-26 | 2016-05-24 | Intel Corporation | Coalescing adjacent gather/scatter operations |
US9244684B2 (en) * | 2013-03-15 | 2016-01-26 | Intel Corporation | Limited range vector memory access instructions, processors, methods, and systems |
US9600442B2 (en) * | 2014-07-18 | 2017-03-21 | Intel Corporation | No-locality hint vector memory access processors, methods, systems, and instructions |
US10409727B2 (en) * | 2017-03-31 | 2019-09-10 | Intel Corporation | System, apparatus and method for selective enabling of locality-based instruction handling |
US11281585B2 (en) * | 2018-08-30 | 2022-03-22 | Micron Technology, Inc. | Forward caching memory systems and methods |
US11500779B1 (en) * | 2019-07-19 | 2022-11-15 | Marvell Asia Pte, Ltd. | Vector prefetching for computing systems |
-
2014
- 2014-07-18 US US14/335,006 patent/US9600442B2/en active Active
-
2015
- 2015-06-11 TW TW104118928A patent/TWI567556B/zh active
- 2015-06-11 DE DE102015007571.3A patent/DE102015007571B4/de active Active
- 2015-06-18 CN CN201510341039.4A patent/CN105278917B/zh active Active
- 2015-06-18 CN CN201810179089.0A patent/CN108595348B/zh active Active
- 2015-06-18 CN CN202210913541.8A patent/CN115437971A/zh active Pending
-
2017
- 2017-02-15 US US15/433,500 patent/US10210091B2/en active Active
-
2018
- 2018-03-30 US US15/942,046 patent/US10452555B2/en active Active
- 2018-03-30 US US15/941,995 patent/US10467144B2/en active Active
-
2019
- 2019-02-15 US US16/277,935 patent/US10929298B2/en active Active
-
2020
- 2020-10-21 US US17/076,590 patent/US11392500B2/en active Active
-
2022
- 2022-07-18 US US17/867,673 patent/US11892952B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5966528A (en) * | 1990-11-13 | 1999-10-12 | International Business Machines Corporation | SIMD/MIMD array processor with vector processing |
TW201218771A (en) * | 2006-02-21 | 2012-05-01 | Qualcomm Inc | Method, apparatus, processor and computer product for processing multimedia data |
Also Published As
Publication number | Publication date |
---|---|
CN108595348A (zh) | 2018-09-28 |
US20230052652A1 (en) | 2023-02-16 |
US11392500B2 (en) | 2022-07-19 |
US10210091B2 (en) | 2019-02-19 |
US20210141734A1 (en) | 2021-05-13 |
US20180225217A1 (en) | 2018-08-09 |
US11892952B2 (en) | 2024-02-06 |
US10467144B2 (en) | 2019-11-05 |
US20180225218A1 (en) | 2018-08-09 |
US20160019184A1 (en) | 2016-01-21 |
DE102015007571A1 (de) | 2016-01-21 |
US10929298B2 (en) | 2021-02-23 |
US20170300420A1 (en) | 2017-10-19 |
CN105278917B (zh) | 2018-04-10 |
CN115437971A (zh) | 2022-12-06 |
TW201617890A (zh) | 2016-05-16 |
US20190179762A1 (en) | 2019-06-13 |
CN108595348B (zh) | 2022-08-16 |
DE102015007571B4 (de) | 2024-05-02 |
US10452555B2 (en) | 2019-10-22 |
US9600442B2 (en) | 2017-03-21 |
CN105278917A (zh) | 2016-01-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI567556B (zh) | 無區域性提示向量記憶體存取之處理器、方法、系統與指令 | |
US11720362B2 (en) | Apparatus and method for a tensor permutation engine | |
TWI743058B (zh) | 硬體處理器、用於融合指令之方法及非暫時性機器可讀媒體 | |
TWI587215B (zh) | 排序加速度處理器,方法,系統,及指令 | |
TWI742132B (zh) | 用以將多個資料元件載入到非緊縮資料暫存器的目的地儲存位置的處理器、方法、系統及指令 | |
JP6238497B2 (ja) | プロセッサ、方法、及びシステム | |
TWI502499B (zh) | 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法 | |
TWI617978B (zh) | 用於向量索引載入和儲存之方法和設備 | |
KR101679111B1 (ko) | 연산 마스크들의 마스킹되지 않는 요소들을 통합하기 위한 프로세서들, 방법들, 시스템들, 및 명령어들 | |
CN107220029B (zh) | 掩码置换指令的装置和方法 | |
KR101729829B1 (ko) | 복수의 곱셈 연산들을 수행하는 방법 및 장치 | |
JP2018500653A (ja) | ベクトルブロードキャストおよびxorand論理命令のための装置および方法 | |
JP2021057004A (ja) | 行列演算アクセラレータの命令のための装置、方法、及びシステム | |
US20210406018A1 (en) | Apparatuses, methods, and systems for instructions for moving data between tiles of a matrix operations accelerator and vector registers | |
CN106030514B (zh) | 用于执行采用传播的被屏蔽源元素存储指令的处理器及其方法 | |
WO2013095552A1 (en) | Vector instruction for presenting complex conjugates of respective complex numbers | |
WO2013095635A1 (en) | Instruction for merging mask patterns | |
JP2014199663A (ja) | マスクされたフルレジスタアクセスを用いて部分レジスタアクセスを実施するプロセッサ、方法、及びシステム | |
TWI486872B (zh) | 向量緊縮壓縮及重複之實施系統、設備和方法 | |
CN107391086B (zh) | 改进置换指令的装置和方法 | |
TWI622879B (zh) | 考慮用於執行之載入資料元件中的空間區域性之裝置和方法 | |
JP2018500658A (ja) | インデックスおよび即値を用いてベクトル置換を実行するための方法および装置 | |
KR20170099873A (ko) | 벡터 비트 셔플을 수행하기 위한 방법 및 장치 | |
TW201741868A (zh) | 將來源緊縮資料劃分為巷道的處理器、方法、系統及指令 | |
TWI603261B (zh) | 用以執行離心操作的指令及邏輯 |