TWI619073B - 在處理具有未對準資料列的陣列期間用於刪除未對準記憶體存取的處理器、非暫時的機器可讀取的媒體和計算系統 - Google Patents
在處理具有未對準資料列的陣列期間用於刪除未對準記憶體存取的處理器、非暫時的機器可讀取的媒體和計算系統 Download PDFInfo
- Publication number
- TWI619073B TWI619073B TW104117962A TW104117962A TWI619073B TW I619073 B TWI619073 B TW I619073B TW 104117962 A TW104117962 A TW 104117962A TW 104117962 A TW104117962 A TW 104117962A TW I619073 B TWI619073 B TW I619073B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- vector
- input vector
- input
- field
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims description 152
- 238000012545 processing Methods 0.000 title claims description 44
- 239000013598 vector Substances 0.000 claims abstract description 284
- 238000003860 storage Methods 0.000 claims description 24
- 238000000034 method Methods 0.000 claims description 20
- 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 58
- 238000006073 displacement reaction Methods 0.000 description 40
- 238000009419 refurbishment Methods 0.000 description 28
- 238000010586 diagram Methods 0.000 description 27
- 239000003607 modifier Substances 0.000 description 15
- 238000007667 floating Methods 0.000 description 14
- 238000006243 chemical reaction Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 11
- 230000003416 augmentation Effects 0.000 description 9
- 238000013461 design Methods 0.000 description 9
- 235000012431 wafers Nutrition 0.000 description 9
- 230000036961 partial effect Effects 0.000 description 8
- 239000003795 chemical substances by application Substances 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000003321 amplification Effects 0.000 description 5
- 238000003491 array Methods 0.000 description 5
- 238000003199 nucleic acid amplification method Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000002441 reversible effect Effects 0.000 description 3
- 230000001629 suppression Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000001066 destructive effect Effects 0.000 description 2
- 230000000873 masking effect Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 101100140195 Caenorhabditis elegans rbx-1 gene Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000003750 conditioning effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002789 length control Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000009418 renovation Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
Abstract
描述具有指令執行管線的處理器。指令執行管線包含:指令擷取級以擷取指令。指令的指令格式指明第一輸入向量、第二輸入向量、及第三輸入運算元。指令執行管線包括指令解碼級用以將指令解碼。指令執行管線包含功能單元用以執行指令。功能單元包含路由網路,用以將第一組連續元件從輸入向量之一者的第一端路由至指令的結果向量之第二端、以及將第二組連續元件從輸入向量中之另一者的第二端路由至指令的結果向量之第一端。第一及第二端是相反的向量端。第一及第二組連續元件是從第三輸入運算元界定。指令不能夠將非連續元件組從輸入向量路由至指令的結果向量。也揭示使用指令的軟體管線。
Description
發明的領域係關於計算機科學,更具體而言,關於具有未對準資料列的陣列處理期間用於刪除未對準記憶體存取的指令集。
圖1顯示半導體晶片上以邏輯電路實施的處理核心100之高階圖。處理核心包含管線101。管線由多個級組成,各級設計成完全執行程式碼指令所需的多步驟處理中的特定步驟。這些典型上包含至少:1)指令擷取及解碼;2)資料擷取;3)執行;4)寫回。在資料由在上述另一先前級(例如步驟2)中被擷取及由相同指令識別時,執行級執行由在上述先前級(例如在步驟1中)中被擷取及解碼的指令所辨識的特定操作。被操作的資料典型上是自(一般用途)暫存器儲存空間102擷取的。在操作完成時產生的新資料典型上也會「寫回」至暫存器儲存空間(例如在
上述級4)。
與執行級相關連的邏輯電路典型上由多個「執行單元」或「功能單元」103_1至103_N構成,各功能單元均設計成執行它自己的獨特操作子集合(例如第一功能單元執行整數數學操作,第二功能單元執行浮點指令,第三功能單元對快取/記憶體執行載入/儲存、等等)。由所有功能單元執行的所有操作的集合相當於由處理核心100支援的「指令集」。
在電腦科學領域中被廣泛認知的二種型式的架構:「純量」及「向量」。純量處理器設計成執行會對單一資料集執行操作的指令,而向量處理器設計成執行會對多個資料集執行操作的指令。圖2A及2B呈現比較實例,顯示純量處理器與向量處理器之間的基本差異。
圖2A顯示純量AND(及)指令的實例,其中,單一運算元集A、B一起被及(AND)以執行奇異(或「純量」)結果C(亦即,AB=C)。相對地,圖2B顯示向量AND指令,其中,二運算元集A/B與D/E分別被平行地一起及(AND),以同時產生向量結果C、F(亦即,A.AND.B=C及D.AND.E=F)。關於術語,「向量」是具有多個「元件」的資料元件。舉例而言,向量V=Q,R,S,T,U具有五個不同的元件:Q,R,S,T及U。舉例說明的向量V的「大小」為五(由於其具有五個元件)。
圖1也顯示向量暫存器空間107的存在,其不同於一般用途的暫存器空間102。具體而言,一般用途的暫存器
空間102額定地用以儲存純量值。如此,當任何執行單元執行純量操作時,它們額定地使用從一般用途暫存器儲存空間102呼叫的運算元(及將結果寫回)。相對地,當任何執行單元執行向量操作時,它們額定地使用從向量暫存器空間107呼叫的運算元(及將結果寫回)。不同的記憶體區域類似地被分配用於純量值的儲存以及向量值。值得注意,某些機器使用向量暫存器空間以儲存浮點純量值。
100‧‧‧處理核心
301‧‧‧輸入陣列結構
302‧‧‧結果陣列結構
401‧‧‧輸入陣列結構
402‧‧‧輸出陣列
800‧‧‧暫存器架構
990‧‧‧核心
1100‧‧‧處理器
1200‧‧‧多處理器系統
1300‧‧‧第三系統
1400‧‧‧系統晶片
1500‧‧‧多核心處理器
從配合附圖的詳細說明,可更佳地瞭解本發明。在圖式中:圖1顯示指令執行管線;圖2A及2B比較純量與向量處理;圖3A及3B顯示具有未對準列的陣列之處理;圖4顯示具有未對準列的陣列之改良的處理方法;圖5A顯示圖4的處理中使用的第一指令之設計;圖5B顯示圖4的處理中使用的第二指令之設計;圖5C顯示編譯處理;圖6A是方塊圖,說明根據發明的實施例之同屬向量友善指令格式及其等級A指令樣板。
圖6B是方塊圖,說明根據發明的實施例之同屬向量友善指令格式及其等級B指令樣板。
圖7A-D是方塊圖,顯示根據本發明的實施例之舉例說明的特定向量友善指令格式。
圖8是根據本發明的一實施例之暫存器架構的方塊圖。
圖9A是根據本發明的實施例之單一CPU核心伴隨其對晶粒互連網路的連接及其本地子集合等級2(L2)快取的實施例之方塊圖。
圖9B是根據本發明的實施例之圖9A的CPU核心的部份之展開視圖。
圖10A-B是方塊圖,顯示根據本發明的實施例之舉例說明的亂序架構。
圖11是根據本發明的實施例之系統的方塊圖。
圖12是根據本發明的實施例之第二系統的方塊圖。
圖13是根據本發明的實施例之第三系統的方塊圖。
圖14是根據本發明的實施例之SoC的方塊圖。
圖15是根據本發明的實施例之設有整合的整合記憶體控制器及圖形之多核心處理器及單核心處理器的方塊圖。
圖16是根據本發明的實施例之使用軟體指令轉換器以將源指令集中的二進位指令轉換成標的指令集中的二進位指令之方塊圖。
向量處理對於處理陣列是有用的。舉例而言,各向量對應於陣列中的列。根據基本的陣列處理,從輸入陣列讀取及處理列的資訊值(或簡稱為陣列的「列」)。列的來
自處理之結果資訊的值接著寫入至結果陣列結構。
圖3A顯示當陣列的列相對於記憶體定址空間「未對準」時引起的問題或無效率。圖3A顯示舉例說明的輸入陣列結構301及舉例說明的「結果」陣列結構302。此處,圖3A中觀察到的各長方形列對應於向量暫存器,其中,單一記憶體讀取可以填充一或更多這些向量暫存器。理想上,陣列的多個列在向量暫存器邊緣上相對齊。但是,注意,列的資訊值303、304在它們分別的陣列結構301、302內未對準。亦即,列在正常向量邊界未開始/結束,而是在它們之內啟始/結束。此外,列303、304都具有不同的未對準程度。
當從事具有未對準向量列的陣列之處理時,向量處理器及它們的編譯器會呈現無效率。更具體而言,由於未對準存取會造成為了用於計算之單一列輸入資料而從記憶體多重讀取及/或它們會造成為了單一列結果資料而對記憶體多重寫入,所以,未對準存取是無效率的。
現今的編譯器經由所謂的「剝離」技術而尋求降低與未對準陣列存取相關的處罰,「剝離」技術係捲動經過多個迭代直到達到對準的結果列為止。由於剝離的結果,陣列結構將如圖3B般對準。此處,輸入及結果陣列等二者的啟始位置以相同量305偏移,量305具有會造成結果列307與機器額定的向量邊界相對齊之偏移量。以結果307被對準,則可避免多次寫入記憶體來寫入單一結果列。但是,由於輸入及結果列彼此未對準,所以,輸入列308仍
然未對準。因此,仍然可能從記憶體多次讀取以取得用於計算的資訊列,以及,處理器會繼續以無效率方式操作。
圖4顯示改良方式,其利用軟體管線化及成對特別適應化指令。使用軟體管線化及特定指令,可以有效率地處理具有未對準列的陣列,而不會遭受對記憶體未對準存取之懲罰。此處,陣列的列之邊界保持為管線迴路的內部,而不曝露於記憶體存取介面。結果,自記憶體呼叫的輸入資料對準機器的向量邊界而不是未對準列的邊界。因此,即使被處理的陣列之列未對準,仍可藉由對準的記憶體存取而擷取輸入資料。類似地,即使結果陣列的列未對準,結果資料仍能以對準方式寫至記憶體。在輸入列與結果列之間的未對準程度也是不同。
如圖4中可見般,輸入陣列結構401含有要被處理的一系列未對準列411、412、413,將在輸出列402中產生結果列431、432、433以回應陣列處理。為了簡明起見,圖4的實例僅述及對向量暫存器空間存取。習於一般技藝者將清楚知道,即使在圖4的實例中僅有向量暫存器空間被述及,此處所述之對準的存取方式仍可正如上所述地消除未對準記憶體存取。
在基本實施中,輸入陣列結構401的各段對應於向量暫存器空間內的獨特向量暫存器(均具有它自己分別的暫存器位址)。如圖4所示,1)輸入列411的領先區411_1保持在暫存器RX1中;2)輸入列411的尾端區411_2及輸入列412的領先區412_1含於暫存器RX2中;以及,3)
輸入列412的尾端區412_2及輸入列413的領先區413_1含於暫存器RX3中;等等。類似地,也如圖4所示般,1)結果列431的領先區431_1保持在暫存器RY1中;2)結果列431的尾端區431_2及結果列432的領先區432_1含於暫存器RY2中;以及,3)結果列432的尾端區432_2及結果列433的領先區433_1含於暫存器RY3中;等等。注意,在圖4的特別實例中,輸入陣列401中的列的對準不同於輸出陣列402中的列的對準。
軟體管線迴路可以結構成如同顯示新指令VSHIFTR2B 451、VSHIFTL2B 453之插圖450內所觀察到般,無論在什麼之間,碼序列452都可被用以對陣列中的各列執行陣列處理。VSHIFTR2B指令451及VSHIFTL2B指令453的獨特特點是二指令都接受二源向量源運算元及第三輸入運算元,以某方式,指明陣列內的未對準,接著指明偏移量及來自二向量源運算元的內容整合成單一結果向量。在圖4的實例中,第三輸入運算元顯示成純量輸入S1。如同下述將更詳細說明般,第三輸入運算元可以採取例如遮罩輸入向量。
為了簡明起見,本說明假定列411正好被處理過且軟體管線化迴路的下一迭代始於列412的處理,以說明軟體管線化迴路。值得注意,為了已經處理列411,暫存器RX2的內容必須已在先前的迭代時被讀取。此外,暫存器RX2包含列412的領先部412_1。此處,在列412的處理啟始時,如同虛擬碼450中指定般,包含領先部412_1的
暫存器RX2的內容被假定是在R2的內容中。此外,關於迴路初始化的一部份,純量值S1會被用以界定存在於輸入陣列401的列之內的未對準量。
因此,根據虛擬碼450,包含列412的尾端部412_2之RX3的內容被讀取455至R3中。然後,以R2、R3、及S1作為輸入運算元而執行VSHIFTR2B指令451並將結果儲存於RZ1中。
VSHIFTR2B指令的執行451以圖形顯示於插圖420中。如同插圖420所示般,VSHIFTR2B指令的執行451將會:1)將暫存器R2的內容的最後三個元件向右偏移423五個元件位置,以將列412的最右邊緣對齊暫存器空間的最右邊緣;2)將暫存器R3的前五個元件位置附加424至R2的被偏移元件的最左邊緣。因此,也稱為「目前向量」421的RZ1中VSHIFTR2B的結果對應於輸入列412的對齊版本。注意,在本實例中,每一向量有八個元件。假定取決於設計選擇而於輸入陣列中顯示未對準,S1可被定為3或5。
接著使用RZ1作為用於陣列處理序列452的的輸入源運算元。陣列處理序列452將其結果432寫入(425)RM2。結果432是結果資料432的完全對齊列,其導先區432_1會與結果431的尾端區431_2一起被寫至在暫存器RY2的輸出陣列402中。此處,注意,用於前一列411的先前處理產生對齊的列431作為其結果。由於前一迴路循環期間被執行的操作456的結果,對齊列431目前儲存在
RM1。
接著,執行(453)VSHIFTL2B指令。VSHIFTL2B指令的操作圖示於插圖426。如同插圖426所示,VSHIFTL2B指令接受二結果431和432以及純量S2輸入作為源運算元。純量輸入S2指明結果陣列402中的未對準。注意,在結果陣列402中的未對準不同於輸入陣列401中的未對準。這是輸入陣列401的未對準對應於五向量元件位置(例如S1=5),而輸出陣列402的未對準對應於三向量元件位置(例如S2=3)。如此,在圖4的實例中,S1及S2採取不同的值。
從這些輸入運算元,VSHIFTL2B指令將:1)將RM2中的第二結果432的前五個元件位置向左偏移427三個元件位置;以及2)將RM1中的第一結果431的最後三個元件附加428至第二結果432的被偏移的元件的最右邊緣。這些活動形成二不同的輸出列之適當未對準的資料內容,藉由對準的存取,資料內容可以被儲存至結果陣列402中(在暫存器RC=RY2)。
由於處理456的結果,R3的內容接著被移至R2中,以及,RM2的內容被移至RM1中。
從上述說明,應清楚上述處理可以順序地開始至輸入陣列401中的下一暫存器RX4且結果將順序地寫入至在RY3的輸出陣列,作為對準存取的輸出結果432_2、433_1。因此,以此方式處理整個陣列。值得一提的是,如同軟體管線450的設計可見般,在各迭代時,每一記憶
體讀取存取僅使用一對準的向量載入455以及每一記憶體寫入存取僅使用一對準的向量儲存458。在一般的情形中,每一軟體管線迴路的迭代之對準的記憶體載入及儲存的數目分別等於記憶體讀取及寫入的數目。
因為來自前一迭代的資料內容(例如,暫存器RM1的內容)會由後續的迭代使用(例如輸出向量431_2、432_1的形成),所以,上述流程至少可被視為軟體管線化迴路。可以執行某迴路初始化(未顯示)以初始化迴路。在實施例中,迴路初始化界定純量S1及S2以及執行用於要被處理之第一輸入向量的遮罩讀取(僅捕捉輸入陣列的第一列之領先部),然後,讀取要被處理的第二輸入向量。迴路初始化繼續執行VSHIFTR2B指令以形成後續由陣列處理序列452處理的第一向量。該結果為第一輸出列。迴路初始化繼續執行VSHIFTL2B指令以形成第一結果,第一結果含有輸出陣列的第一列之領先部,接著會被遮罩式地儲存至輸出陣列,然後被移入RM1中。被讀取的第二輸入向量的內容在R2中偏移。在此點,軟體管線化迴路準備好如同最後參考圖4所述般地操作。也有結尾常式,結尾常式係在執行遮罩式寫入至輸出陣列的最後列的尾端部之向量暫存器空間之後,在每一次結束時被執行。
為了簡明起見,在輸出向量402中的未對準S2被視為迴路本身的輸入條件。可能的是,這些未對準導因於陣列處理452且被指定為提供給VSHIFTL2B指令453的處
理452的另一結果(亦即,處理452界定S2)。此外,值得一提,在某些情形中,輸出陣列可以被寫入而輸出向量被對準。在該情形中,處理452的結果可以寫入輸出陣列402,而不用執行VSHIFTL2B指令。
在替代實施例中,取代純量值S,VSHIFTR2B及VSHIFTL2B指令採用遮罩值以指明偏移控制資訊。此處,對於VSHIFTR2B指令,被遮罩的遮罩位元之數目可以用以指明純量偏移控制S(例如在圖4中,S=5,VSHIFTR2B指令的實例中為11100000)。
以下述虛擬碼,說明本實施例,其中,KL是向量中的元件數目。VSHIFTR2B zmmdest,zmmsrc1,zmmsrc2,k1 s=zerocnt(k1)//count number of zeros in k1 for(i=0;i<KL-s;i++){ zmmdest[i]=zmmsrc1[i+s]; } for(;i<KL;i++){ zmmdest[n]=zmmsrc2[i-KL+s]; }替代地,未被遮罩之輸入遮罩的位元數目可以用以指明偏移控制S。
類似地,對於VSHIFTL2B指令,被遮罩的遮罩值的位元可以指明例如純量偏移控制S(例如在圖4的VSHIFTL2B指令的實施例中為11111000,偏移控制
S=3)。VSHIFTL2B zmmdest,zmmsrc1,zmmsrc2,k1 s=zerocnt(k1)//compute number of zeros in k1 for(i=0;i<s;i++){ zmmdest[i]=zmmsrc1[i+KL-s]; } for(;i<KL;i++){ zmmdest[i]=zmmsrc2[i-s]; }
可以使用其它遮罩值設計以提供偏移控制資訊。以加至圖4的指令序列450之另一指令,可以完成邏輯倒轉。
根據上述指令,舉例說明的向量迴路for(i=0;i<N;i+=KL)B[i+KL-1:i]=computation(A[i+KL-1:i])可以向量化,並以下述方式消除未對準的記憶體存取://prolog of SWP rax=A%VL//決定A的對準r8=A-rax//最接近A對準的位址rbx=B%VL//決定B的對準r9=B-rbx//最接近B對準的位址k3=(1<<rax-1)//以A對準的遮罩k1=knot(k3)//用於A的第一次載入的遮罩,k3的相反k4=(1<<rbx-1)//以B對準的遮罩k2=knot(k4)//用於B的第一次儲存的遮罩,k4的相反vpxor zmm_res1,zmm_res1,zmm_res1//zmm_res1=0
vmovdqa8 zmm_in1{k1},[r8]//以遮罩k1載入第一對準向量(未滿)vmovdqa8 zmm_in2,[r8+VL]//載入第二對準向量(滿)vshiftr2b zmm_cur,zmm_in1,zmm_in2,k1//建構目前向量以計算zmm_res2=computation(zmm_cur)//執行向量計算vshiftl2b zmm_out,zmm_res1,zmm_res2,k2//建構輸出向量vmovdqa8[r9]{k2},zmm_out//以遮罩k2儲存輸入向量至對準的位置//(未滿)zmm_in1=zmm_in2//保留值以用於下一次zmm_res1=zmm_res2//向量迭代//管線被載入,啟始主迴路for(i=KL,rcx=VL;i<N;i+=KL,rcx+=VL){//1向量(KL元件,VL位元組)被計算//已經被計算vmovaps zmm_in2,[r8+rcx+VL]//下一向量的對準載入vshiftr2b zmm_cur,zmm_in1,zmm_in2,k1//建構目前向量以計算zmm_res2=computation(zmm_cur)//執行向量計算vshiftl2b zmm_out,zmm_res1,zmm_res2,k2//建構輸出向量vmovaps[r9+rcx],zmm_out//輸出向量的對準儲存zmm_in1=zmm_in2//保留值以用於下一次zmm_res1=zmm_res2//向量迭代} //epilog vmovaps[r9+rcx]{k4},zmm_out//最後的最後元件的對準儲存//輸出向量至B,使用k4遮罩而不寫至陣列邊界之外
值得一提,偏移指令使用分別與第一輸入及輸出向量
的載入及儲存所使用的遮罩相同的遮罩。
圖5A及5B分別顯示能夠執行VSHIFTR2B和VSHIFTL2B指令的指令執行管線功能單元510、520的電路設計之說明。如圖5A所示,VSHIFTR2B功能單元510接受第一及第二輸入向量運算元501、502。此處,輸入向量運算元501、502具有N元件的尺寸。另一輸入503指明要由功能單元510執行的操作,其中,第一輸入運算元501的N-K連續元件區及第二源運算元502的K連續元件區將被選取用於包含在結果505中。如上述最後所述,在輸入503收到的內容可以指明資料陣列內的未對準。
輸入503被用以控制交換網路504,交換網路504可由多工器電路建立,但僅為一實例。在操作時,經由輸入503而施加至交換網路504之真正的控制可從在指令的指令格式中指定的第三輸入運算導出。舉例而言,在指令被解碼之後,一系列微作業可以核發給功能單元或在功能單元內產生,以設立交換網路504的適當切換控制。替代地,運算碼及第三輸入運算元可以經由輸入503而直接施加至交換網路504。第三輸入運算元可以採取指令格式內的(例如遮罩)向量或純量的形式。在純量的情形中,純量值以指令格式清楚表示成立即運算元或是從其它純量暫存器空間(例如,保留有條件分支資訊的控制暫存器空間)中被請求收回。替代地,向量運算元可以由指令真正地請求收回,但是純量值被瞭解佔據多個向量資料元件中
之一。
無論實施為何,交換網路504將來自第一源運算元501的上邊界之N-K連續元件置入於結果505的領先邊緣中,以及,將結果內來自第二源運算元502的下邊界之K連續元件附加至選自第一源運算元的N-K元件的尾端邊緣。
指令可以完全平行地執行(所有向量元件被同時平行地處理)、完全串列方式執行(以一元件接一元件為基礎,選取元件以包含於結果中)或是在這二方式之間的某結合。
在另外的實施例中,使功能單元510執行的操作的粒度為可配置的,以致於對具有不同元件數尺寸的向量源運算元執行操作。在此情形中,N是指令的另一變數,舉例而言,在指令的立即運算元中被指明。
如圖5B所示,VSHIFTL2B功能單元520接受第一及第二輸入向量運算元511、512。此處,輸入向量運算元511、512具有N元件的尺寸。另一輸入513指明要由功能單元510執行的操作,其中,第一輸入運算元511的K連續元件上區及第二源運算元512的N-K連續元件下區將被選取用於包含在結果515中。如上述最後所述,在輸入513收到的內容可以指明資料陣列內的未對準。
輸入513被用以控制交換網路514,交換網路514可由多工器電路建立,但僅為一實例。在操作時,經由輸入513而施加至交換網路514之真正的控制可從在指令的指
令格式中指定的第三輸入運算元導出。舉例而言,在指令被解碼之後,一系列微作業可以核發給功能單元或在功能單元內產生,以設立交換網路514的適當切換控制。替代地,運算碼及第三輸入運算元可以經由輸入513而直接施加至交換網路514。第三輸入運算元可以採取指令格式內的(例如遮罩)向量或純量的形式。在純量的情形中,純量值以指令格式清楚表示成立即運算元或是從其它純量暫存器空間(例如,保留有條件分支資訊的控制暫存器空間)中被請求收回。替代地,向量運算元可以由指令真正地請求收回,但是純量值被瞭解佔據多個向量資料元件中之一。
無論實施為何,交換網路514將來自第一源運算元511的上邊界之K連續元件置入於結果515的領先邊緣中,以及,將結果內來自第二源運算元512的下N-K連續元件附加至選自第一源運算元的K元件的尾端邊緣。
指令可以完全平行地執行(所有向量元件被同時平行地處理)、完全串列方式執行(以一元件接一元件為基礎,選取元件以包含於結果中)或是在這二方式之間的某結合。
在另外的實施例中,使功能單元511執行的操作的粒度為可配置的,以致於對具有不同元件數尺寸的向量源運算元執行操作。在此情形中,N是指令的另一變數,舉例而言,在指令的立即運算元中被指明。
注意,上述圖5A及5B中的操作可以合併成相同的功
能單元。在各式各樣的實施例中,這二個指令中的任一或二者的運算碼相當於如上所述地僅將連續的元件組從二源向量運算元移至結果中。亦即,指令無法被用以將非連續的元件組從任一源運算元移至結果中。假使僅有單一元件是要從多個運算元中之一被移入結果中時,則該單一元件可以被視為「連續的」符合如上所述之指令操作。
圖5C顯示可由編譯器執行的編譯處理(例如,正建構以具有特定指令集架構的處理器為標的之物件碼的編譯器)。根據圖5的處理,編譯器偵測對具有未對準資料列521的陣列執行的處理。為回應偵測,編譯器建構碼序列,所述碼序列執行陣列處理以包含指令,所述指令係在其指令格式中具有第一及第二向量運算元以及指明未對準522的第三輸入運算元。在實施例中,未使用剝離處理來建構碼。
上述詳述的指令實施例至少部份地以下述中詳述的「同屬向量友善指令格式」具體實施。此外,於下詳述舉例說明的系統、架構及管線。上述指令的實施例可以在這些系統、架構、及管線上執行,但不侷限於這些細節。
向量友善指令格式是適用於向量指令的指令格式(例如,有某些向量操作特有的欄位)。雖然說明向量及純量操作都是由向量友善指令格式支援的實施例,但是,替代實施例可僅使用向量友善指令格式的向量操作。
圖6A-6B是方塊圖,顯示根據發明的實施例之同屬向量友善指令格式及其指令樣板。圖6A是方塊圖,顯示根據發明的實施例之同屬向量友善指令格式及其等級A指令樣板;而圖6B是方塊圖,顯示根據發明的實施例之同屬向量友善指令格式及其等級B指令樣板。具體而言,等級A及等級B指令樣板定義之同屬向量友善指令格式600都包含無記憶體存取605指令樣板及記憶體存取620指令樣板。向量友善指令格式的背景中之同屬一詞意指未被繫結至任何特定指令集的指令格式。雖然將說明向量友善指令格式中的指令對源自暫存器(無記憶體存取605指令樣板)或暫存器/記憶體(記憶體存取620指令樣板)之實施例,但是,本發明的替代實施例可以僅支援這些中之一。而且,雖然將說明有向量指令格式的載入及儲存指令之本發明的實施例,但是,替代實施例可以增加地或替代地具有可將向量移入及移出暫存器(例如從記憶體至暫存器中,從暫存器至記憶體中,在暫存器之間)之不同指令格式的指令。此外,雖然將說明支援二等級的指令樣板之本發明的實施例,但是,替代實施例可以僅支援這些中之一或二個以上。
雖然將說明向量友善指令格支援下述的發明實施例:具有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位元組)資料元件寬度)之更多、更少及/或不同的向量運算元大小(例如656位元組向量運算元)。
圖6A中的等級A指令樣板包含:1)在無記憶體存取605指令樣板之內,有顯示無記憶體存取、全修整控制型操作610指令樣板以及無記憶體存取、資料轉換型操作615指令樣板;以及2)在記憶體存取620指令樣板之內,有顯示記憶體存取、暫時625指令樣板以及記憶體存取、非暫時630指令樣板。圖6B中的等級B指令樣板包含:1)在無記憶體存取605指令樣板之內,有顯示無記憶體存取、寫入遮罩控制、部份修整控制型操作612指令樣板以及無記憶體存取、寫入遮罩控制、vsize型操作617指令樣板;以及2)在記憶體存取620指令樣板之內,有顯示記憶體存取、寫入遮罩控制627指令樣板。
同屬向量友善指令格式600包含圖6A-6B中依序顯示
的下述列出之欄位。配合有關圖4、5A、及5B的上述說明,在實施例中,參考圖6A-B及7中提供的格式細節,可使用非記憶體存取指令型式605、或記憶體存取指令型式620。用於輸入向量運算元及目的地之位址可以在下述暫存器位址欄位644中辨識。指令可以格式化成破壞性的或非破壞性的。
格式欄位640-此欄位中的特定值(指令格式識別符值)獨特地識別向量友善指令格式,因此,在指令串中向量友善指令格式的指令發生。因此,格式欄位640的內容區別第一指令格式中的指令發生與其它指令格式的指令發生。如此,在對於僅具有同屬向量友善指令格式的指令集而言是不需要的情形中,此欄位是選加的。
基礎操作欄位642-其內容區別不同的基礎操作。如同此處稍後說明般,基礎操作欄位642可以包含及/或是運算碼欄位的一部份。
暫存器索引欄644-其內容直接或經由位址產生而指明源和目的地運算元的位置在暫存器或記憶體中。這些包含足夠數目的位元以從PxQ(例如32 x1012)暫存器檔案中選取N個暫存器。雖然在一實施例中,N可以高達三個源及一個目的地暫存器,但是,替代實施例可以支援更多或更少的源以及目的地暫存器(例如,可以支援高達二個源,這些源中之一也作為目的地,可以支援高達三個源,這些源中之一也作為目的地,可以支援高達二個源及一目的地)。雖然在一實施例中P=32,但是,替代實施例可
以支援更多或更少的暫存器(例如16)。雖然在一實施例中Q=1012位元,但是,替代實施例可以支援更多或更少的位元(例如128、1024)。
修改符欄位646-其內容區別指定與未指定記體存取的同屬向量指令格式的指令之發生;亦即,在無記憶體存取605指令樣板與記憶體存取620指令樣板之間區別。記憶體存取操作讀取及/或寫至記憶體層級結構(在某些情形中使用暫存器中的值以指定源及/或目的地位址),而非記憶體存取操作則未如此作(例如,源及目的地是暫存器)。雖然在一實施例中,此欄位也在三個不同方式中之間選取以執行記憶體位址計算,但是,替代實施例可以支援更多、更少、或不同的方式以執行記憶體位址計算。
擴增操作欄位650-其內容區別各種不同操作中那一操作是基礎操作之外也是要被執行的。此欄位是內容特定的。在發明的一實施例中,此欄位被分成等級欄位668、阿爾發欄位652、貝他欄位654。擴增操作欄位允許共同組的操作在單一指令中而不是在2、3或4指令中被執行。下述是指令的某些實例(稍後將更詳細說明)使用擴增欄位650以減少所需指令的數目。
其中,[rax]是用於位址產生的基礎指標器,以及,其中,{ }標示由資料操縱欄位(稍後更詳細說明)指定的轉換操作。
比例欄位660-其內容允許用於記憶體位址產生的索引欄位的內容比例化(例如,用於使用2scale*index+base的位址產生)。
位移欄位662A-其內容作為部份記憶體位址產生(例如,用於使用2scale*index+base+displacement的位址產生)。
位移因數欄位662B(注意,位移欄位662A直接在位
移因數欄位662B上並置係標示一或另一者被使用)-其內容作為部份位址產生;其指定要依記憶體存取(N)的大小而比例化的位移因數-其中,N是記憶體存取中的位元組數目(例如,用於使用2scale*index+base+scaleddisplacement的位址產生)。冗餘低階位元被忽略,因此,位移因數欄位的內容乘以記憶體運算元全部尺寸(N)以產生計算有效位址時使用的最後位移。根據全運算碼欄位674(稍後說明)及資料操縱欄位654C,在運行時間,由處理器硬體決定N的值。在位移欄位662A及位移因數欄位662B不用於無記憶體存取605指令樣板及/或不同實施例僅實施二者中之一或不實施二者的情形中,位移欄位662A及位移因數欄位662B是選擇性的。
資料元件寬度欄位664-其內容區別一些資料元件寬度中的那一寬度是要被使用(在某些實施例中用於所有指令;在其它實施例中僅用於某些指令)。在假使使用運算碼的某些態樣而僅有一資料元件寬度被支援及/或資料元件寬度被支援時不需要此欄位的情形中,此欄位是選擇性的。
寫入遮罩欄位670-以每一資料元件位置為基礎,其內容控制目的地向量運算元中的資料元件位置是否反應基礎操作及擴增操作的結果。等級A指令樣板支援合併寫入遮罩,而等級B指令樣板支援合併及零化寫入遮罩。當合併時,向量遮罩允許目的地中任何組的元件在任何操作的執行期間受保護(由基礎操作及擴增操作指定)而免於更
新;在其它的一實施例中,保留對應的遮罩位元具有0之目的地的各元件的舊值。相反地,當零化向量遮罩允許目的地中的任何組的元件在任何操作(由基礎操作及擴增操作指定)執行期間零化時;在一實施例中,當對應的遮罩位元具有0值時,目的地的元件被設定為0。此功能的子集合是控制被執行的操作的向量長度之能力(亦即,被修改的元件的跨幅從第一至最後一個);但是,被修改的元件不一定是連續的。如此,寫入遮罩欄670允許部份向量操作,包含載入、儲存、算術、邏輯、等等。而且,此遮罩可以用於故障抑制(亦即,藉由遮罩目的地之資料元件位置以防止接收任何會/將造成故障操作的結果-例如,假定記憶體中的向量越過頁邊界以及第一頁而非第二頁將造成頁故障,則假使位於第一頁上之向量的所有資料元件位由寫入遮罩遮蔽時,可以忽略頁故障)。此外,寫入遮罩允許含有某些型式之條件式陳述的「向量化迴路」。雖然說明寫入遮罩欄位670的內容選取一些含有要被使用的寫入遮罩之寫入遮罩暫存器中之一(因此,寫入遮罩欄位670的內容間接地識別要被執行的遮罩)的發明實施例,但是,替代實施例可取代地或增加地允許遮罩寫入欄位670的內容直接指定遮罩被執行。此外,當在下述中時,零化允許性能增進:1)由於在暫存器重命名管線級期間目的地不再是隱含源(由於任何不是操作結果的資料元件(任何被遮罩的資料元件)將被零化,所以,沒有來自目前的目的地暫存器之資料元件需要被拷貝至被重命名的目
的地暫存器或是有點與操作一起被執行),所以,對指令使用暫存器重命名,所述指令是其目的地運算元也不是源(也稱為非三級指令);以及2)由於零正被寫入,而在寫回級期間。
立即欄位672-其內容允許立即性的規格。在此欄位未出現在未支援立即性的同屬向量友善格式實施中以及其未出現在未使用立即性的指令中之情形中,此欄位是選擇性的。
等級欄位668-其內容區別不同等級的指令。參考圖2A-B,此欄位的內容在等級A與等級B指令之間選取。在圖6A-B中,經過整修的角落方形被用以標示特定值存在於欄位中(例如,分別在圖6A-B中用於等級欄位668的等級A 668A及等級B 668B)。
在等級A的非記憶體存取605指令樣板的情形中,阿爾發欄位652被解譯為RS欄位652A,其內容區別不同的擴增操作型式中那一型式是要被執行(例如,整修652A.1及資料轉換652A.2分別被指定用於無記憶體存取、整修型式操作610及無記憶體存取、資料轉換型式操作615指令樣板),而貝他欄位654區別被指定的型式的操作中那些操作是要被執行。在圖6中,使用圓化角落的
方塊以標示特定值存在(例如,在修改符欄位646中無記憶體存取646A;整修652A.1及資料轉換652A.2用於阿爾發欄位652/rs欄位652A)。在無記憶體存取605指令樣板中,比例欄位660、位移欄位662A及位移比例欄位662B不存在。
在無記憶體存取完全整修控制型操作610指令樣板中,貝他欄位654被解譯為整修控制欄位654A,其內容提供靜態整修。雖然在上述的發明實施例中,整修控制欄位654A包含抑制所有浮點例外(SAE)欄位656及整修操作控制欄位658,但是,替代實施例可以支援將這二概念編碼成相同欄位或是僅具有這些概念/欄位中之一或其它(例如,可以僅具有整修操作控制欄位658)。
SAE欄位656-其內容區別是否將例外事件報告禁能;當SAE欄位656的內容標示抑制被賦能時,給定的指令不報告任何種類的浮點例外旗標及不引起任何浮點例外處理器。
整修操作控制欄位658-其內容區別整修操作組中哪一操作要執行(例如,向上整修、向下整修、朝向零整修及整修至最近)。因此,整修操作控制欄位658允許根據每一指令為基礎之整修模式的改變,因此,當這被要求時,特別有用。在處理器包含用於指明整修模式的控制暫存器之發明的一實施例中,整修操作控制欄位650的內容
凌駕該暫存器值(能夠選擇整修模式而不必對此控制暫存器執行保存-整修-恢復,會是有利的)。
在無記憶體存取資料轉換型式操作615指令樣板中,貝他欄位654被解譯為資料轉換欄位654B,其內容區別多個資料轉換中何者要被執行(例如,無資料轉換、拌和、廣播)。
在等級A的記憶體存取620指令樣板的情形中,阿爾發欄位652被解譯為逐出提示欄位652B,其內容區別逐出提示中之一是要被使用(在圖6A中,暫時652B.1及非暫時652B.2分別被指定用於記憶體存取、暫時625指令樣板以及記憶體存取、非暫時630指令樣板),而貝他欄位654被解譯為資料操縱欄位654C,其內容區別多個資料操縱操作(也稱為原始)中何者是要被執行(例如,無操縱;廣播;源的上轉;及目的地的下轉)。記憶體存取620指令樣板包含比例欄位660,且選擇性地包含位移欄位662A或位移比例欄位662B。
藉由轉換支援,向量記憶體指令對記憶體執行向量載入及向量儲存。與正常的向量指令一般,向量記憶體指令以資料元件方式對記憶體傳輸資料,而真正被傳送的元件是由被選為寫入遮罩的向量遮罩的內容所標示。在圖6A
中,圓化角落的方形用以標示特定值存在於欄位中(例如用於修改符欄位646的記憶體存取646B;用於阿爾發欄位652/退出提示欄位652B的暫時652B.1及非暫時652B.2)。
暫時資料是能夠足夠快再被使用而從快取獲利之資料。但是,這是提示,以及,不同的處理器可以以不同方式實施它,包含完全忽略提示。
非暫時資料是不太可能足夠快再被使用以從第一層快取中的快取獲利之資料,且應被授予逐出優先權。但是,這是提示,以及,不同的處理器可以以不同方式實施它,包含完全忽略提示。
在等級B的指令樣板的情形中,阿爾發欄位652被解譯為寫入遮罩控制(Z)欄位652C,其內容區別由寫入遮罩欄位670控制的寫入遮罩是否應為合併或零化。
在等級B的非記憶體存取605指令樣板的情形中,部份貝他欄位654是被解譯為RL欄位657A,其內容區別不
同的擴增操作型式中何者是要被執行(例如,整修657A.1以及向量長度(VSIZE)657A.2分別被指定用於無記憶體存取、寫入遮罩控制、部份整修控制型操作612指令樣板以及無記憶體存取、寫入遮罩控制、VSIZE型操作617指令樣板),而貝他欄位654的其餘部份區別那一指定型式的操作是要被執行。在圖6中,圓化角落區塊用以標示特定值存在(例如在修改符欄位646中的無記憶體存取646A;用於RL欄位657A的整修657A.1及VSIZE 657A.2)。在無記憶體存取605指令樣板中,比例欄位660、位移欄位662A、及位移比例欄位662B不存在。
在無記憶體存取中,寫入遮罩控制、部份整修控制型操作610指令樣板、貝他欄位654的其它部份被解譯為整修操作欄位659A且例外事件報告被禁能(給定的指令不報告任何種類的浮點例外旗標及不引起任何浮點例外處理器)。
整修操作控制欄位659A-正如同整修操作控制欄位658般,其內容區別整修操作組中何者要執行(例如,向上整修、向下整修、朝向零整修及整修至最近)。因此,整修操作控制欄位659A允許根據每一指令來改變整修模式,因而當這被要求時,特別有用。在處理器包含用於指定整修模式的控制暫存器之發明的一實施例中,整修操作
控制欄位650的內容淩駕該暫存器值(能夠選擇整修模式而不必對此控制暫存器執行保存-整修-恢復,會是有利的)。
在無記憶體存取中、寫入遮罩控制,VSIZE型操作617指令樣板、貝他欄位654的其餘部份被解譯為向量長度欄位659B,其內容區別多個資料向量長度中何者要被執行(例如,128、856、或1012位元組)。
在等級A的記憶體存取620指令樣板的情形中,部份貝它欄位654被解譯為廣播欄位657B,其內容區別廣播型資料操縱操作是否要被執行,而貝它欄位654中的其它部份被解譯為向量長度欄位659B。記憶體存取620指令樣板包含比例欄位660,以及,選擇性地包含位移欄位662A或是位移比例欄位662B。
關於同屬向量友善指令格式600,完全運算碼欄位674顯示為包含格式欄位640、基礎操作欄位642、及資料元件寬度欄位664。雖然顯示完全運算碼欄位674包含所有這些欄位的一實施例,但是,在未支援所有它們的實施例中,完全運算碼欄位674包含少於所有這些欄位的欄
位。完全運算碼欄位674提供作業碼(運算碼)。
擴增操作欄位650、資料元件寬度欄位664、及寫入遮罩欄位670允許根據每一同屬向量友善指令格式的指令來指定這些特點。
因為寫入遮罩欄位及資料元件寬度欄位的結合允許根據不同的資料元件寬度來施加遮罩,所以,寫入遮罩欄位及資料元件寬度欄位的結合會產生型式化的指令。
由於指令格式會根據其它欄位的內容而為了不同的目的,再使用不同的欄位。舉例而言,一觀點是修改符欄位的內容在圖6A-B上的無記憶體存取605指令樣板與圖6A-B上的記憶體存取6250指令樣板之間選擇;而等級欄位668的內容在圖6A的指令樣板610/615與圖6B的612/617之間的那些非記憶體存取605指令樣板之內選擇;以及,等級欄位668的內容在圖6A的指令樣板625/830與圖6B的627之間的那些非記憶體存取620指令樣板之內選擇。從另一觀點而言,等級欄位668的內容在圖6A及B分別的等級A和等級B指令樣板之間選擇;而修改符欄位的內容在圖6A的指令樣板605與620之間的那些等級A指令樣板內選擇;以及,修改符欄位的內容在圖6B的指令樣板605與620之間的那些等級B指令樣板內選擇。在標示等級A指令樣板的等級欄位的內容之情形中,修改符欄位646的內容選擇rs欄位652A與EH欄位652B之間的阿爾發欄位652的解譯。以相關方式,修改符欄位646及等級欄位668的內容會選擇阿爾發欄位是
否被解譯為652A的rs欄位、EH欄位652B、或寫入遮罩控制(Z)欄位652C。在標示等級A無記憶體存取操作之等級及修改符欄位的情形中,擴增欄位的貝它欄位的解譯會根據rs欄位的內容而變;而在標示等級B無記憶體存取操作之等級及修改符欄位的情形中,貝它欄位的解譯取決於RL欄位的內容。在標示等級A記憶體存取操作之等級及修改符欄位的情形中,擴增欄位的貝它欄位的解譯會根據基礎操作欄位的內容而變;而在標示等級B記憶體存取操作之等級及修改符欄位的情形中,擴增欄位的貝它欄位的廣播欄位657B的解譯會視基礎操作欄位的內容而變。因此,基礎操作欄位、修改符欄位及擴增操作欄位的結合允許更多樣式的擴增操作被指定。
在等級A及等級B之內發現的各種指令樣板在不同的情形中是有利的。當為了性能而要求零化-寫入遮罩或更小的向量長度時,等級A是有用的。舉例而言,由於我們不再需要人為地合併目的地,所以,當重命名有用時,零化允許避免偽造相依性;關於另一實例,當以向量遮罩模仿較短向量尺寸時,向量長度控制會減輕使得儲存-負載遞送議題。當需要下述時,等級B是有用的:1)允許浮點例外(亦即,當SAE欄位的內容標示否時)並同時使用整修-模式控制;2)能夠使用上轉、拌和、切換、及/或下轉;3)對圖形資料型式操作。舉例而言,當與不同格式的源工作時,上轉、拌和、切換、下轉、及圖形資料型式會降低所需的指令數目;關於另一實例,允許例外之能
力可提供完全IEEE符合的受指引的整修-模式。
圖7是方塊圖,顯示根據本發明的實施例之舉例說明的特定向量友善指令格式。圖7顯示特定向量友善指令格式700,特定向量友善指令格式700在其指定欄位的位置、大小、解譯、及次序、以及用於那些欄位中的某些欄位之值的情形中是特定的。特定向量友善指令格式700可以被用以延伸x86指令集,因而某些欄位類似於或同於現有的x86指令集中使用的欄位以及其延伸(例如,AVX)。此格式維持與具有延伸的現存x86指令集的前置編碼欄位、真實運算碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位、及立即欄位一致。顯示來自圖7的欄位映射之來自圖6的欄位。
應瞭解,雖然在同屬向量友善指令格式700的內容中為了說明而參考特定向量友善指令格式600,以說明發明的實施例,但是,除非特別申明,否則本發明不侷限於特定向量友善指令格式700。舉例而言,同屬向量友善指令格式600慮及用於各種欄位的各種可能大小,而特定向量友善指令格式700顯示為具有特定大小的欄位。具體舉例而言,雖然資料元件寬度欄位664在特定向量友善指令格式700中顯示為一位元欄位,但是,本發明不限於此(亦即,同屬向量友善指令格式600慮及資料元件寬度欄位664的其它大小)。
同屬向量友善指令格式600包含依圖7中所示的次序而於下列出的下述欄位。
EVEX Prefix(位元組0-3)
EVEX Prefix 702-以四位元組形式編碼。
格式欄位640(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)是格式欄位640以及其含有0x62(用於區別發明的一實施例中向量友善指令格式的獨特值)。
第二-第四位元組(EVEX位元組1-3)包含提供特定能力的多個位元欄位。
REX欄位705(EVEX位元組1,位元[7-5])-由EVEX.R位元欄位(EVEX位元組1,位元[7]-R)、EVEX.X位元欄位(EVEX位元組1,位元[6]-X)、及657BEX位元組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’欄位710-這是REX’欄位710的第一部份且是用以將延伸的32暫存器組的上16或下16編碼之EVEX.R’位元欄位(EVEX位元組1,位元[4]-R’)。在
發明的一實施例中,此位元與如下標示的其它位元以位元反轉格式儲存,以與BOUND指令區別(在已知的x86 32位元模式中),BOUND指令的真實運算碼位元組是62,但是,在MOD R/M欄(下述)中未接受MOD欄位中11的值;發明的替代實施例未以反轉格式儲存此位元及下述其它標示的位元。1的值用以將下16暫存器編碼。換言之,藉由結合來自其它欄位的EVEX.R'、EVEX.R、及其它RRR以形成R'Rrrr。
運算碼映射欄位715(EVEX位元組1,位元[3:0]-mmmm)-它的內容將暗指的領先運算碼位元組(0F,0F 38,或0F 3)編碼。
資料元件寬度欄位664(EVER位元組2,位元[7]-W)-由記號EVEX.W表示。EVEX.W用以界定資料型式(32位元資料元件或64位元資料元件)的粒度(大小)。
EVEX.vvvv 720(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvvv的角色可以包含下述:1)EVEX.vvvv將以反轉(1s互補)形式指定的第一源暫存器運算元編碼,且對於具有2或更多源運算元的指令是有效的;2)EVEX.vvvv將對某些向量偏移以1s互補形式指定的目的地暫存器運算元編碼;或者3)EVEX.vvvv未將任何運算元編碼,欄位被保留且應含有1111b。因此,EVEX.vvvv欄位720將依反轉(1s互補)形式儲存的第一源暫存器說明符的4下階位元編碼。取決於指令,額外的不同EVEX位元欄位被
用以延伸說明符大小至32暫存器。
EVEX.U 668等級欄位(EVEX位元組2,位元[2]-U)-假使EVEX.U=0,則其標示等級A或EVEX.U0;假使EVEX.U=1,則其標示等級B或EVEX.U1。
前置編碼欄位725(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前置編碼,因而不要求擴展。
阿爾發欄位652(EVEX位元組3,位元[7]-EH;也稱為EVEX.EH、EXEX.rs、EVEX.RL、EVEX.寫入遮罩控制、及EVEX.N;也以α顯示),如以往所述般,此欄位是內容特定的。稍後提供額外說明。
貝他欄位654(EVEX位元組3,位元[6:4])-SSS;也
稱為EVEX.s2-0、EXEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;也以β β β顯示)-如先前所述般,此欄位是內容特定的。稍後提供額外說明。
REX’欄位710-這是REX’欄位的餘部且是可被用以將延伸的32暫存器組中的上16或下16編碼之EVEX.V’位元欄位(EVEX位元組3,位元[3]-V’)。此位元以位元反轉格式儲存。1的值被用以將下16暫存器編碼。換言之,藉由結合EVEX.V'、EVEX.vvvv以形成V'VVVV。
寫入遮罩欄位670(EVEX位元組3,位元[2:0]-kkk)-如同先前所述般,其內容指定寫入遮罩暫存器中的暫存器索引。在發明的一實施例中,特定值EVEX.kkk=000具有特別的表現,暗指無寫入遮罩用於特定的指令(這可以以各種方式實施,包含使用實體接線至繞過遮罩硬體的所有組件或硬體之寫入遮罩)。
這也稱為運算碼位元組。在此欄位中指定運算碼的一部份。
修改符欄位646(MODR/M.MOD,位元[7-6]-MOD欄位742)-如同先前所述般,MOD欄位742的內容區別記憶體存取與非記憶體存取操作。稍後將進一步說明此欄位。
MODR/M.reg欄位744,位元[5,3]-ModR/M.reg欄位
的角色可以總合為二情形:ModR/M.reg將目的地暫存器運算元或源暫存器運算元編碼,或是ModR/M.reg被當作運算碼延伸且不被用以將任何指令運算元編碼。
MODR/M.r/m欄位746,位元[2-0]的角色可以包含下述:將指引記憶體位址的指令運算元編碼,或者,ModR/M.r/m將目的地暫存器運算元或源暫存器運算元編碼。
比例欄位660(SIB.SS,位元[7-6]-如同先前所述般,比例欄位660的內容是用於記憶體位址產生。稍後將進一步說明此欄位。
SIB.xxx 754(位元[5-3]及SIB.bbb 756(位元[2-0])-這些欄位的內容先前已被指稱與暫存器索引Xxxx及Bbbb有關。
位移欄位662A(位元組7-10)-當MOD欄位742含有10時,位元組7-10是位移欄位662A,且其工作與舊制32位元位移(disp32)相同並以位元組粒度工作。
位移因數欄位662B(位元組7)-當MOD欄位742含有01時,位元組7是位移因數欄位662B。此欄位的位置與以位元組粒度工作的舊制x86指令組8位元位移(disp8)的位置相同。由於disp8是正負號延伸,所以,
其僅可以在-128與127位元組偏移之間定址;以64位元組快取列的觀點而言,disp8使用可以被設定為僅四個真正有用的值-128、-64、0、及64之8位元;由於通常需要更大的範圍,所以,使用disp32;但是,disp32要求4位元組。與disp8和disp32相反,位移因數欄位662B是disp8的再解譯;當使用位移因數欄位662B時,真實的位移由位移因數欄位的內容乘以記憶體運算元存取(N)所決定。此型式的位移被稱為disp8*N。這降低平均的指令長度(用於位移但是具有更大範圍的單一位元組)。此被壓縮的位移是根據有效的位移是記憶體存取的粒度之倍數的假設,因此,位址偏移的冗餘低階位元不需被編碼。換言之,位移因數欄位662B替代舊制x86指令集8位元位移。因此,位移因數欄位662B以同於x86指令集8位元位移的方式編碼(以致於ModRM/SIB編碼規則不變),僅有的例外是disp8被超載至disp8*N。換言之,編碼規則或編碼長度沒有變化,但是僅有硬體對位移值的解譯有變化(這需要將位移依記憶體運算元的大小來比例化以取得位元組方式的位址偏移)。
立即欄位672如先前所述地操作。
圖8是根據本發明的一實施例之暫存器架構800的方
塊圖。於下列出暫存器架構的暫存器檔案及暫存器架構:向量暫存器檔案810-在所示的實施例中,有812位元寬的32個向量暫存器;這些暫存器稱為zmm0至zmm31。較低的16 zmm暫存器的低階656位元被覆蓋於暫存器ymm0-16之上。較低的16 zmm暫存器的低階128位元(ymm暫存器的低階128位元)被覆蓋於暫存器xmm0-15之上。特定向量友善指令格式700如下述表格中所示般對這些被覆蓋的暫存器檔案操作。
換言之,向量長度欄位659B在最大長度與一或更多其它較短的長度之間選取,其中,每一此較短長度是先前長度的長度之一半;以及,不具向量長度欄位659B的指令樣板對最大向量長度操作。此外,在一實施例中,特定向量友善指令格式700的等級B指令樣板對緊縮的或純量的單/雙精度浮點資料及緊縮的或純量的整數資料操作。純量操作是對zmm/ymm/xmm暫存器中最低階資料元件位
置執行的操作;更高階的資料元件位置視實施例而留在它們在指令之前的相同位置或者被零化。
寫入遮罩暫存器815-在所示的實施例中,有8個寫入遮罩暫存器(k0至k7),各寫入暫存器大小為64位元。如先前所述,在本發明的一實施例中,向量遮罩暫存器k0無法作為寫入遮罩;當正常標示k0的編碼用於寫入遮罩時,其選取0xFFFF的實體接線的寫入遮罩,有效地使用於該指令的寫入遮罩禁能。
多媒體擴充控制狀態暫存器(MXCSR)820-在所示的實施例中,此32位元暫存器提供狀態及控制浮點操作中使用的位元。
一般用途暫存器825-在所示的實施例中,有十六個64位元的一般用途暫存器,它們與現存的x86定址模式一起作用以將記憶體運算元定址。這些暫存器以名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15表示。
擴充旗標(EFLAG)暫存器830暫存器-在所示實施例中,此32位元暫存器用以記錄很多指令的結果。
浮點控制字(FCW)暫存器835及浮點狀態字(FSW)暫存器840-在所示實施例中,這些暫存器由x87指令集擴充使用以在FCW情形中設定整修模式、例外遮罩及旗標,以及在FSW的情形中保持追蹤例外。
純量浮點堆疊暫存器檔案(x87堆疊)845,MMX緊縮整數平坦暫存器檔案850混疊於其上-在所示的實施例
中,x87堆疊是八元件堆疊,用以使用x87指令集延伸,對32/64/80位元浮點資料執行純量浮點操作;而MMX暫存器被用以對64位元緊縮的整數資料執行操作,以及為了某些在MMX及XMM暫存器之間執行的操作而固持運算元。
區段暫存器855-在所示實施例中,有六個16位元暫存器用以儲存用於區段化的位址產生。
RIP暫存器865-在所示實施例中,此64位元暫存器儲存指令指標器。
本發明的替代實施例可以使用更寬或更窄的暫存器。此外,本發明的替代實施例可以使用更多、更少、或不同的暫存器檔案及暫存器。
圖9A-B是方塊圖,顯示舉例說明的有序處理器架構。這些舉例說明的實施例是圍繞有序CPU核心的多個例示而設計,所述有序CPU核心擴增有寬向量處理器(VPU)。取決於e13t應用,核心經由高頻寬互連網路以與某些固定的功能邏輯、記憶體I/O介面、及其它必要的I/O邏輯通訊。舉例而言,作為獨立GPU之本實施例的實施典型上將包含PCIe匯流排。
圖9A是根據本發明的實施例之單一CPU核心、以及其對晶粒上互連網路902的連接及其等級2(L2)快取904的區域子集合之方塊圖。指令解碼器900支援具有包含特
定向量指令格式700之擴充的x86指令集。雖然在一實施例中(為簡化設計),純量單元908及向量單元910使用分別的暫存器組(分別地,純量暫存器912及向量暫存器914)以及在它們之間傳輸的資料被寫至記憶體並接著從等級1(L1)快取906讀回,但是,本發明的替代實施例可以使用不同的方式(例如,使用單一暫存器集合或是包含允許資料在二暫存器檔案之間傳輸而不用被寫入及讀回的通訊路徑)。
L1快取906允許低潛候期存取快取記憶體至純量及向量單元中。與向量友善指令格式的載入作業指令一起,這意指L1快取906被視為有點類似擴充的暫存器檔案。這顯著地增進很多演繹法的性能,特別是藉由逐出提示欄位652B。
L2快取的區域子集合904是全區L2快取的一部份,全區L2快取是被分割成分別的區域子集合,每一處理器核心一區域子集合。各處理器核心對其自己的區域子集合L2快取904具有直接存取路徑。由CPU核心讀取的資料儲存在其L2快取子集合904中,以及,可以與其它存取它們自己的區域L2快取子集合之CPU平行地被快速存取。由CPU核心寫入的資料儲存在它自己的L2快取子集合904中及於需要時從其它子集合湧入。環式網路確保用於共用資料的相干性。
圖9B是根據本發明的實施例之圖9A中的CPU核心之部份放大視圖。圖9B包含L1快取904之L1資料快取
906A部份、以及與向量單元910及向量暫存器914有關的更多細節。具體而言,向量單元910是16寬的向量處理單元(VPU)(請參見16寬的ALU 928),其執行整數、單精度浮動、及雙精度浮動指令。VPU以拌和單元920支援拌和暫存器輸入、以數值轉換單元922A-B支援數值轉換、以及以記憶體輸入上的複製單元924支援複製。寫入遮罩暫器926允許預測結果向量寫入。
舉例而言,以多種方式拌和暫存器資料,以支援矩陣乘法。來自記憶體的資料可以經過VPU大道複製。在圖形及非圖形平行資料處理中,這是常見的操作,顯著地增加快取效率。
環式網路是雙向的,以允許例如CPU核心、L2快取及其它邏輯區塊等代理器在晶片內彼此通訊。各環式資料路徑是每一方向812位元寬。
圖10是方塊圖,顯示根據本發明的實施例之舉例說明的亂序架構以及可被視為例如圖1中上述的管線等管線的更具體說明。具體而言,圖10顯示已被修改成併有向量友善指令格式及其執行之熟知的亂序架構。在圖10中,箭頭代表二或更多單元之間的耦合以及箭頭的方向表示這些單元之間的資料流動的方向。圖10包含耦合至執行引擎單元1010的前端單元1005及記憶體單元1015;執行引擎單元1010又耦合至記憶體單元1015。
前端單元1005包含耦合至等級2(L2)分枝預測單元1022的等級1(L1)分枝預測單元1020。L1及L2分枝預測單元1020和1022耦合至L1指令快取單元1024。L1指令快取單元1024耦合至指令轉譯旁看緩衝器(TLB)1026,指令轉譯旁看緩衝器(TLB)1026又耦合至指令擷取及預解碼單元1028。指令擷取及預解碼單元1028耦合至指令佇列單元1030。指令佇列單元1030又耦合至解碼單元1032。解碼單元1032包含複合解碼器單元1034及三個簡單的解碼器單元1036、1038、及1040。解碼單元1032包含微碼ROM單元1042。解碼單元1032如上述解碼級區中先前所述般地操作。L1指令快取單元1024又耦合至記憶體單元1015中的L2快取單元1048。指令TLB單元1026又耦合至記憶體單元1015中的第二級TLB單元1046。解碼單元1032、微碼ROM單元1042、及迴路串偵測器單元1044均耦合至執行引擎單元1010中的重命名/分配器單元1056。
執行引擎單元1010包含耦合至退出單元1074的重命名/分配器單元1056及聯合排序單元1058。退出單元1074又耦合至執行單元1060以及包含重排序緩衝器單元1078。聯合排序單元1058又耦合至實體暫存器檔案單元1076,實體暫存器檔案單元1076耦合至執行單元1060。實體暫存器檔案單元1076包括向量暫存器單元1077A、寫入遮罩暫存器單元1077B、及純量暫存器單元1077C;這些暫存器單元可以提供向量暫存器810、向量遮罩暫存
器815、及一般用途暫存器825;以及,實體暫存器檔案單元1076包含未顯示的其它暫存器檔案(例如,混疊於MMX緊縮整數平坦暫存器檔案850的純量浮點堆疊暫存器檔案845)。執行單元1060包含三個混合純量及向量單元1062、1064、及1072;載入單元1066;儲存位址單元1068;儲存資料單元1070。載入單元1066、儲存位址單元1068、及儲存資料單元1070均又耦合至記憶體單元1015中的資料TLB單元1052。
記憶體單元1015包含第二級TLB單元1046,第二級TLB單元1046耦合至資料TLB單元1052。資料TLB單元1052耦合至L1資料快取單元1054。L1資料快取單元1054又耦合至L2快取單元1048。在某些實施例中,L2快取單元1048又耦合至主記憶體單元1015之內及/或之外的L3及更高等級的快取單元1050。
舉例而言,舉例說明的亂序架構可以實施如下所述的管線8200:1)指令擷取及預解碼單元1028執行擷取及長度解碼級;2)解碼單元1032執行解碼級;3)重命名/分配器單元1056執行分配級及重命名級;4)聯合排程器1058執行排程級;5)實體暫存器檔案單元1076、重排序緩衝器單元1078、及記憶體單元1015執行暫存器讀取/記憶體讀取級;執行單元1060執行執行/資料轉換級;6)記憶體單元1015及重排序緩衝器單元1078執行寫回/記憶體寫入級1960;7)退出單元1074執行ROB讀取級;8)牽涉例外處理級的多種單元;及9)退出單元1074及實體暫存
器檔案單元1076執行確定級。
圖15是根據本發明的實施例之具有整合記憶體控制器及圖形之單核心處理器和多核心處理器1500的方塊圖。圖15中的粗線框顯示具有單核心1502A的處理器1500、系統代理器1510、一或更多匯流排控制器單元1516,而選加的虛線框顯示具有多核心1502A-N的替代處理器1500、系統代理器單元1510中的一或更多整合的記憶體控制器單元1514的組、以及特別用途的邏輯1508。
記憶體階層包含在核心內的一或更多等級的快取、一或更多共用快取單元1506、及耦合至整合記憶體控制器單元1514組之外部記憶體(未顯示)。共用快取單元1506組可以包含例如等級2(L2)、等級3(L3)、等級4(L4)、或其它等級快取等一或更多中級快取、最後等級快取(LLC)、及/或其組合。雖然在一實施例中,環式互連單元1512將整合圖形邏輯1508、共用快取單元1506的組、及系統代理器單元1510,但是,替代實施例可以使用任何數目的已知技術來互連這些單元。
在某些實施例中,一或更多核心1502A-N能夠多緒化。系統代理器1510包含那些元件協調及操作核心1502A-N。系統代理器單元1510可以包含例如電力控制單元(PCU)及顯示單元。PCU可以是或包含用於調節核
心1502A-N及整合圖形邏輯1508的電力狀態所需的邏輯及元件。顯示單元是用於驅動一或更多外部連接的顯示器。
以架構及/或指令集的觀點而言,核心1502A-N可以是同質的或異質的。舉例而言,核心1502A-N中的某些核心是有序的(例如,類似於圖9A-9B中所示般),而其它核心是亂序的(例如,類似於圖10中所示般)。關於另一實施例,核心1502A-N中的二或更多核心能夠執行相同的指令集,而其它核心能夠僅執行該指令集的子集合或不同的指令集。這些核心中至少一核心能夠執行此處所述的向量友善指令格式。
處理器可為一般用途的處理器,例如可從加州聖克拉拉(Santa Clara)之英特爾公司取得的CoreTM i3、i5、i7、2 Duo及Quad、XeonTM、ItaniumTM處理器。或者,處理器可以來自其它公司。處理器可以是特別用途的處理器,例如網路或通訊處理器、壓縮引擎、圖形處理器、共處理器、嵌入式處理器、等等。處理器可以實施於一或更多晶片上。處理器1500可以是使用例如BiCMOS、CMOS、或NMOS等多種處理技術中的任一技術而實施於一或更多基底上以及/或其一部份。
圖11-13是舉例說明的適用於包含處堙器1500的系統,而圖11是包含一或更多核心1502之舉例說明的系統
晶片(SoC)。用於膝上型電腦、桌上型電腦、手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、電動遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持裝置、及各式各樣的其它電子裝置等領域中熟知的其它系統設計及配置也是適合的。一般而言,能夠併有此處所揭示的處理器及/或其它執行邏輯的眾多種類的系統或電子裝置通常是適合的。
現在參考圖11,其顯示根據本發明的一實施例之系統1100的方塊圖。系統1100可以包含一或更多處理器1110、1115,它們耦合至圖形記憶體控制器集線器(GMCH)1120。在圖11中以虛線表示增加的處理器1115之選加的本質。
各處理器1110、1115可為處理器1500的某版本。但是,應注意,整合圖形邏輯及整合記憶體控制單元將存在於處理器1110、1115中。
圖11顯示GMCH 1120可以耦合至記憶體1140,舉例而言,記憶體1140可以是動態隨機存取記憶體(DRAM)。對於至少一實施例而言,DRAM可以與非揮發性快取有關。
GMCH 1120可為晶片組、或晶片組的一部份。GMCH 1120可以與處理器1110、1115相通訊以及控制處理器1110、1115與記憶體1140之間的互動。GMCH 1120也作為處理器1110、1115與系統1100的其它元件之間的加速
匯流排介面。對於至少一實施例,GMCH 1120經由例如前側匯流排(FSB)1195等多點匯流排而與處理器1110、1115通訊。
此外,GMCH 1120耦合至顯示器1145(例如平板顯示器)。GMCH 1120包含整合圖形加速器。GMCH 1120又耦合至輸入/輸出(I/O)控制器集線器(ICH)1150,輸入/輸出(I/O)控制器集線器(ICH)1150用以耦合各式各樣的週邊裝置至系統1100。舉例而言,圖11顯示外部圖形裝置1160、以及另一週邊裝置1170,外部圖形裝置1160為耦合至ICH 1150之離散圖形裝置。
或者,增加的或不同的處理器也可以存在於系統1100中。舉例而言,增加的處理器1115可以包含與處理器1110相同的增加的處理器、與處理器1110異質或不對稱的增加的處理器、加速器(例如圖形加速器或數位訊號處理(DSP)單元)、現場可編程閘陣列、或任何其它處理器。以包含架構、微架構、熱、耗電特徵、等等度量計量光譜的觀點而言,實體資源1110、1115之間有各種差異。這些差異可以有效地突顯它們本身在處理元件1110、1115之間的不對稱性及異質性。對於至少一實施例,各式各樣的處理元件1110、1115駐於相同的晶粒封裝中。
現在參考圖12,顯示根據本發明的實施例之第二系統1200的方塊圖。如圖12中所示般,多處理器系統1200是點對點互連系統,以及包含經由點對點互連1250
耦合的第一處理器1270和第二處理器1280。如圖12所示,各處理器1270及1280可以是處理器1500的某版本。
或者,處理器1270和1280中之一或更多可為處理器以外的元件,例如加速器或現場可編程閘陣列。
雖然僅顯示二處理器1270、1280,但是,須瞭解本發明的範圍不侷限於此。在其它實施例中,一或更多增加的處理元件可以存在於給定的處理器中。
處理器1270也包含整合記憶體控制器集線器(IMC)單元1272和點對點(P-P)介面1276和1278。類似地,第二處理器1280包含IMC 1282和P-P介面1286和1288。處理器1270、1280使用P-P介面電路1278、1288而經由點對點(PtP)介面1250交換資訊。如圖12所示,IMC 1272及1282將處理器耦合至各別記憶體,亦即記憶體1242和記憶體1244,它們可以是本地附著至各別處理器的主記憶體的部份。
處理器1270、1280使用點對點介面電路1276、1294、1286、1298,經由個別的P-P介面1252、1254而均可與晶片組1290交換資訊。晶片組1290經由高性能圖形介面1239,也與高性能圖形處理電路1238交換資料。
共用的快取(未顯示)可以包含任一處理器中或二處理器的外部、但經由P-P互連而與處理器連接,以致於假使處理器處於低電力模式中時,任一或二處理器的本地快取資訊可以儲存在共用的快取中。
晶片組1290可以經由介面1296而耦合至第一匯流排1216。在一實施例中,第一匯流排1216可以是週邊元件互連(PCI)匯流排,或是例如PCI快速匯流排或其它第三代I/O互匯流排等匯流排,但是,本發明的範圍不侷限於此。
如圖12中所示般,各式各樣的I/O裝置1214與匯流排橋接器1218耦合至第一匯流排1216,匯流排橋接器1218耦合第一匯流排1216至第二匯流排1220。在一實施例中,第二匯流排1220可以是低接腳數(LPC)匯流排。在一實施例中,各種裝置可以耦合至第二匯流排1220,舉例而言,包含鍵盤及/或滑鼠1222、通訊裝置1226及例如碟片驅動器或其它大量儲存裝置等包含碼1230的儲存單元1228。此外,音訊I/O 1224可以耦合至第二匯流排1220。注意,其它架構是可能的。舉例而言,取代圖12的點對點架構,系統可以實施多點匯流排或其它此類架構。
現在參考圖13,其顯示根據本發明的實施例之第三系統1300之方塊圖。圖12及13中類似的元件帶有類似的代號,以及,圖12的某些態樣在圖13中被省略,以免模糊圖13的其它態樣。
圖13顯示處理元件1270、1280分別包含整合的記憶體及I/O控制邏輯(CL)1272和1282。對於至少一實施例中,CL 1272、1282包含例如上述參考圖8、9、及12所述的整合記憶體控制器集線器邏輯(IMC)。此外,CL
1272、1282也包含I/O控制邏輯。圖13顯示不僅記憶體1242、1244耦合至CL 1272、1282,I/O裝置1314也耦合至控制邏輯1272、1282。舊制I/O裝1315耦合至晶片組1290。
現在參考圖14,其顯示根據本發明的實施例之SoC 1400的方塊圖。圖15中類似的元件帶有類似的代號。而且,虛線框是關於更多進階的SoCs的選加特點。在圖14中,互連單元1402耦合至:應用處理器1410,包含一或更多核心1502A-N及共用快取單元1506的集合;系統代理器單元1510;匯流排控制器單元1516;整合記憶體控制器單元1514;包含整合圖形邏輯1508、用於提供靜態及/或攝影機功能的影像處理器1424、用於提供硬體音訊加速之音訊處理器1426、以及用於提供視訊編碼/解碼加速的視訊處理器1428之一或更多媒體處理器1420的組;靜態隨機存取記憶體(SRAM)單元1430;直接記憶體存取(DMA)單元1432;以及用於耦合至一或更多外部顯示器的顯示單元1440。
此處揭示的機構實施例可以以硬體、軟體、韌體或這些實施方式的結合來實施。本發明的實施例可以實施成在可編程系統上執行的電腦程式或程式碼,可編程系統包括至少一處理器、儲存系統(包含依電性及非依電性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置。
程式碼可以應用至輸入資料以執行此處所述的功能和
產生輸出資訊。輸出資訊可以以已知方式應用至一或更多輸出裝置。為了此應用,處理系統包含具有例如數位訊號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或微處理器等處理器之任何系統。
程式碼可以以高階程式或物件導向的程式語言實施,以與處理系統通訊。假使需要時,程式碼也可以以組合或機器語言來實施。事實上,此處所述的機構在範圍上不侷限於任何特定的程式語言。在任何情形中,語言可以是編譯或解譯的語言。
至少一實施例的一或更多態樣可以由儲存在機器可讀取的媒體上之代表指令實施,代表指令代表處理器內各種邏輯,代表指令由機器讀取時促使機器製造邏輯以執行此處所述的技術。稱為「IP核心」的這些代表可以儲存在實體的、機器可讀取的媒體並供應至各式各樣的客戶或製造設施,而載入至真正地製造邏輯的製造機器或處理器。
此機器可讀取的媒體包含但不限於由機器或裝置製造或形成的物件之非暫時性、實體配置,包括例如硬碟等儲存媒體、包含軟碟、光碟、光碟唯讀記憶體(CD-ROM)、可重寫光碟(CD-RW)、及磁光碟等任何其它型式的碟片、例如唯讀記憶體(ROM)、例如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)等隨機存取記憶體(RAM)、可抹拭可編程唯讀記憶體(EPROM)、快閃記憶體、電可抹拭可編程唯讀記憶體(EEPROM)等半導體裝置、磁性或光學卡、或適用於儲存電子指令的任何其它型
式的媒體。
因此,本發明的實施例也包含含有向量友善指令格式的指令或含有設計資料之非暫時的、實體的機器可讀取的媒體,所述設計資料是例如硬體說明語言(HDL),其界定此處所述的結構、電路、裝置、處理器及/或系統特徵。這些實施例也意指程式產品。
在某些情形中,指令轉換器可以用以將指令從源指令集轉換至標的指令集。舉例而言,指令轉換器可以將指令轉譯(例如,使用靜態二進位轉譯、包含動態編譯的動態二進位轉譯)、變形、模仿、或其它方式轉換至由核心處理的一或更多其它指令。指令轉換器可以以軟體、硬體、韌體、或其結合來實施。指令轉換器可以是在處理器上、不在處理器上、或部份在處理器上及部份不在處理器上。
圖16是方塊圖,根據本發明的實施例之比較使用軟體指令轉換器以將源指令集中的二進位指令轉換成標的指令集中的二進位指令。在顯示的實施例中,指令轉換器是軟體指令轉換器,但是,指令轉換器可以替代地以軟體、硬體、或其各種結合來實施。圖16顯示高階語言1602的程式,其可以由x86編譯器1604編譯以產生x86二進位碼1606,二進位碼1606可以由具有至少一x86指令集核心1616的處理器原地執行(假定經過編譯的某些指令是向量友善指令格式)。具有至少一x86指令集核心1616的處理器代表藉由共容地執行或其它方式地處理下述,而能夠與具有至少一x86指令集核心的英特爾處理器執行實質上
相同功能的任何處理器:(1)英特爾x86指令集核心的指令集的實質部份,或是(2)以在具有至少一x86指令集核心的英特爾處理器上運行為目的之應用程式或其它軟體的物件碼版本,以便取得與具有至少一x86指令集核心的英特爾處理器實質上相同的結果。x86編譯器1604代表可以操作以產生x86二進位碼1606(例如,物件碼)之編譯器,x86二進位碼1606藉由或不藉由增加的鏈結處理,都可以在具有至少一x86指令集核心1616的處理器上執行。類似地,圖16顯示高階語言1602的程式,使用替代指令集編譯器1608,可以將其編譯以產生替代指令集二進位碼1610,替代指令集二進位碼1610可以由不具有至少一x86指令集核心1614的處理器(例如,具有執行例如加州Sunnyvale的MIPS Technologies公司的MIPS指令集及/或加州Sunnyvale的ARM Holdings公司的ARM指令集之核心的處理器)原地執行。指令轉換器1612用以將x86二進位碼1606轉換成可以由不具有x86指令集核心1614的處理器原地執行的碼。由於能夠如此執行的指令轉換器難以製造,所以,此轉換的碼不太可能與替代指令集二進位碼1610相同;但是,所述轉換的碼將完成一般操作及由來自替代指令集的指令組成。因此,指令轉換器1612代表軟體、韌體、硬體或其組合,其經由仿真、模擬或任何其它處理而允許不具有x86指令集處理器或核心的處理器或其它電子裝置執行x86二進位碼1606。
此處揭示之向量友善指令格式的指令之某些操作可以由硬體組件執行、或是可以以機器可執行的指令具體實施,這些指令被用以促使及/或至少造成依指令編程的電路或硬體組件執行操作。電路包含一般用途或特別用途的處理器、或邏輯電路,這些僅為少數實例。操作也可以選擇性地由硬體及軟體的結合來執行。執行邏輯及/或處理器包含特定的或特別的電路或其它邏輯,以回應機器指令或是一或更多導自機器指令的控制訊號,而儲存指令特定結果運算元。舉例而言,此處揭示的指令的實施例可以在圖11-16中的一或更多系統中執行及向量友善指令格式的指令之實施例可以儲存在要由系統執行的程式碼中。此外,這些圖式的處理元件可以利用此處詳述的管線及/或架構(例如有序及亂序架構)。舉例而言,有序架構的解碼單元可以將指令解碼,將解碼的指令遞送給向量或純量單元、等等。
上述說明僅是顯示本發明的較佳實施例。從上述說明中,也應清楚,特別是在成長快速且不易預見進展之技術領域中,在不悖離後附的申請專利範圍及其均等範圍之本發明的原理之下,習於此技藝者,可以在配置及細節上修改本發明。舉例而言,一或更多方法的操作可以結合或進一步拆開。
雖然已說明將原本地執行向量友善指令格式之實施
例,但是,經由在執行不同的指令集之處理器上運算的仿真層(例如,執行例如加州Sunnyvale的MIPS Technologies公司的MIPS指令集之處理器、執行加州Sunnyvale的ARM Holdings公司的ARM指令集之處理器),本發明的實施例可以執行向量友善指令格式。而且,雖然在圖式中的流程圖顯示由本發明的某些實施例執行之特定次序的操作,但是,應瞭解,此次序僅為舉例說明(例如,替代實施例可以以不同次序執行操作、結合某些操作、重疊某些操作、等等)。
在上述說明中,為了說明之目的,揭示眾多特定細節,以助於完整瞭解本發明的實施例。但是,將清楚知道,習於此技藝者沒有這些特定細節的某些細節,仍可實施一或更多其它實施例。所述之特定實施例並非要限定本發明,而是要說明本發明的實施例。本發明的範圍非由上述特定實例所決定,而是僅由下述申請專利範圍決定。
Claims (22)
- 一種處理器,包括:指令執行管線,包括:指令擷取級,用以擷取第一指令及第二指令,該第一指令的指令格式指明儲存相對於記憶體定址空間未對準的第一輸入向量之第一暫存器、儲存相對於該記憶體定址空間未對準的第二下一輸入向量之第二暫存器、第一結果向量、及第三輸入運算元,且該第二指令的指令格式指明儲存相對於該記憶體定址空間未對準的該第二下一輸入向量之第二暫存器、儲存相對於該記憶體定址空間未對準的第三下一輸入向量之第三暫存器、第二結果向量、及第四輸入運算元;指令解碼器,用以將該第一指令解碼為經解碼第一指令,且將該第二指令解碼為經解碼第二指令;以及執行單元,用以:執行該經解碼第一指令,以致使路由網路將第一組連續元件從該第一輸入向量的第一端路由至該第一結果向量之第二端,將第二組連續元件從該第二下一輸入向量的第二端路由至該第一結果向量之第一端,該第一輸入向量的該第一端及該第二下一輸入向量的該第二端是相反的向量端,且在執行該經解碼第一指令後,保存該第二下一輸入向量在該第二暫存器中,其中該第一輸入向量及該第二下一輸入向量的該第一組連續元件及該第二組連續元件是由該第三輸入運算元所界定;及 執行該經解碼第二指令,以致使該路由網路將第一組連續元件從該第二下一輸入向量的第一端路由至該第二結果向量之第二端,將第二組連續元件從該第三下一輸入向量的第二端路由至該第二結果向量之第一端,該第二下一輸入向量的該第一端及該第三下一輸入向量的該第二端是相反的向量端,其中該第二下一輸入向量及該第三下一輸入向量的該第一組連續元件及該第二組連續元件是由該第四輸入運算元所界定。
- 如申請專利範圍第1項的處理器,其中,該第三輸入運算元被指定為純量。
- 如申請專利範圍第1項的處理器,其中,該第三輸入運算元以遮罩向量實施。
- 如申請專利範圍第1項的處理器,其中,該第一輸入向量的該第一端是左端及該第二輸入下一向量的該第二端是右端。
- 如申請專利範圍第1項的處理器,其中,該第一輸入向量的該第一端是右端及該第二輸入下一向量的該第二端是左端。
- 如申請專利範圍第1項的處理器,其中該執行單元用以執行該經解碼第二指令以進一步在執行該經解碼第二指令後,保存該第三下一輸入向量在該第三暫存器中。
- 如申請專利範圍第1項的處理器,其中該第一結果向量儲存在不是該第一暫存器也不是該第二暫存器的暫存器中以作為該第一指令的結果。
- 一種非暫時的機器可讀取的媒體,含有儲存於其中的程式碼,當該程式碼由計算系統處理時,致使執行以下方法,該方法包含:偵測具有未對準資料列的陣列之處理;將該陣列的該處理編譯成為具有指令之軟體管線化迴路程式碼序列,其具有第一指令及第二指令,該第一指令的指令格式指明儲存相對於記憶體定址空間未對準的該陣列的第一輸入向量之第一暫存器、儲存相對於該記憶體定址空間未對準的該陣列的第二下一輸入向量之第二暫存器、第一結果向量、及第三輸入運算元,且該第二指令的指令格式指明儲存相對於該記憶體定址空間未對準的該陣列的該第二下一輸入向量之第二暫存器、儲存相對於該記憶體定址空間未對準的該陣列的第三下一輸入向量之第三暫存器、第二結果向量、及第四輸入運算元;將該第一指令解碼為經解碼第一指令;將該第二指令解碼為經解碼第二指令;執行該經解碼第一指令,以致使路由網路將第一組連續元件從該第一輸入向量的第一端路由至該第一結果向量之第二端,將第二組連續元件從該第二下一輸入向量的第二端路由至該第一結果向量之第一端,該第一輸入向量的該第一端及該第二下一輸入向量的該第二端是相反的向量端,且在執行該經解碼第一指令後,保存該第二下一輸入向量在該第二暫存器中,其中該第一輸入向量及該第二下一輸入向量的該第一組連續元件及該第二組連續元件是由 該第三輸入運算元所界定;及執行該經解碼第二指令,以致使該路由網路將第一組連續元件從該第二下一輸入向量的第一端路由至該第二結果向量之第二端,將第二組連續元件從該第三下一輸入向量的第二端路由至該第二結果向量之第一端,該第二下一輸入向量的該第一端及該第三下一輸入向量的該第二端是相反的向量端,其中該第二下一輸入向量及該第三下一輸入向量的該第一組連續元件及該第二組連續元件是由該第四輸入運算元所界定。
- 如申請專利範圍第8項的非暫時的機器可讀取的媒體,其中,剝離未用於公式化該軟體管線化迴路程式碼序列。
- 如申請專利範圍第8項的非暫時的機器可讀取的媒體,其中,該第一結果向量是該陣列的對準列。
- 如申請專利範圍第10項的非暫時的機器可讀取的媒體,其中,該程式碼序列包含處理該對準列之碼。
- 如申請專利範圍第10項的非暫時的機器可讀取的媒體,其中,該第一結果向量包含該陣列的二不同列之區段。
- 如申請專利範圍第10項的非暫時的機器可讀取的媒體,其中該執行該經解碼第二指令進一步包含在執行該經解碼第二指令後,保存該第三下一輸入向量在該第三暫存器中。
- 如申請專利範圍第13項的非暫時的機器可讀取 的媒體,其中,用於該些列的記憶體存取未與列邊界對準。
- 如申請專利範圍第10項的非暫時的機器可讀取的媒體,其中該第一結果向量儲存在不是該第一暫存器也不是該第二暫存器的暫存器中以作為該第一指令的結果。
- 如申請專利範圍第15項的非暫時的機器可讀取的媒體,其中,用於該些列的記憶體存取未與列邊界對準。
- 一種計算系統,包括:系統記憶體;處理器,耦合至該系統記憶體,該處理器包括指令執行管線,該指令執行管線包括:指令擷取級,用以擷取第一指令及第二指令,該第一指令的指令格式指明儲存相對於記憶體定址空間未對準的第一輸入向量之第一暫存器、儲存相對於該記憶體定址空間未對準的第二下一輸入向量之第二暫存器、第一結果向量、及第三輸入運算元,且該第二指令的指令格式指明儲存相對於該記憶體定址空間未對準的該第二下一輸入向量之第二暫存器、儲存相對於該記憶體定址空間未對準的第三下一輸入向量之第三暫存器、第二結果向量、及第四輸入運算元;指令解碼級,用以將該第一指令解碼為經解碼第一指令,且將該第二指令解碼為經解碼第二指令;以及執行單元,用以: 執行該經解碼第一指令,以致使路由網路將第一組連續元件從該第一輸入向量的第一端路由至該第一結果向量之第二端,將第二組連續元件從該第二下一輸入向量的第二端路由至該第一結果向量之第一端,該第一輸入向量的該第一端及該第二下一輸入向量的該第二端是相反的向量端,且在執行該經解碼第一指令後,保存該第二下一輸入向量在該第二暫存器中,其中該第一輸入向量及該第二下一輸入向量的該第一組連續元件及該第二組連續元件是由該第三輸入運算元所界定;及執行該經解碼第二指令,以致使該路由網路將第一組連續元件從該第二下一輸入向量的第一端路由至該第二結果向量之第二端,將第二組連續元件從該第三下一輸入向量的第二端路由至該第二結果向量之第一端,該第二下一輸入向量的該第一端及該第三下一輸入向量的該第二端是相反的向量端,其中該第二下一輸入向量及該第三下一輸入向量的該第一組連續元件及該第二組連續元件是由該第四輸入運算元所界定。
- 如申請專利範圍第17項的計算系統,其中,該第三輸入運算元被指定為純量。
- 如申請專利範圍第17項的計算系統,其中,該第三輸入運算元以遮罩向量實施。
- 如申請專利範圍第17項的計算系統,其中,該第一輸入向量的該第一端是左端及該第二輸入下一向量的該第二端是右端。
- 如申請專利範圍第17項的計算系統,其中,該第一輸入向量的該第一端是右端及該第二輸入下一向量的該第二端是左端。
- 如申請專利範圍第17項的計算系統,其中,該系統記憶體含有經過編譯的碼用以處理具有未對準的資料列之陣列,其中,對該系統記憶體作對準存取以處理該陣列的資料。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/327,534 US9910670B2 (en) | 2014-07-09 | 2014-07-09 | Instruction set for eliminating misaligned memory accesses during processing of an array having misaligned data rows |
US14/327,534 | 2014-07-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201617856A TW201617856A (zh) | 2016-05-16 |
TWI619073B true TWI619073B (zh) | 2018-03-21 |
Family
ID=54867006
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104117962A TWI619073B (zh) | 2014-07-09 | 2015-06-03 | 在處理具有未對準資料列的陣列期間用於刪除未對準記憶體存取的處理器、非暫時的機器可讀取的媒體和計算系統 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9910670B2 (zh) |
CN (1) | CN105278921B (zh) |
DE (1) | DE102015007422A1 (zh) |
TW (1) | TWI619073B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI717171B (zh) * | 2019-12-26 | 2021-01-21 | 大陸商深圳大心電子科技有限公司 | 資料讀取方法、儲存控制器與儲存裝置 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100308418B1 (ko) * | 1999-03-27 | 2001-09-26 | 이기용 | Rf(무선인식) 직불카드 및 그 시스템 |
EP2795510A4 (en) | 2011-12-22 | 2015-09-02 | Intel Corp | METHOD AND APPARATUS FOR USING MEMORY DEVICES TO IMPLEMENT DIGITAL RIGHTS MANAGEMENT PROTECTION |
US11360770B2 (en) | 2017-03-20 | 2022-06-14 | Intel Corporation | Systems, methods, and apparatuses for zeroing a matrix |
KR102343652B1 (ko) * | 2017-05-25 | 2021-12-24 | 삼성전자주식회사 | 벡터 프로세서의 서열 정렬 방법 |
US11275588B2 (en) | 2017-07-01 | 2022-03-15 | Intel Corporation | Context save with variable save state size |
US20190004878A1 (en) * | 2017-07-01 | 2019-01-03 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with security, power reduction, and performace features |
US10671460B2 (en) * | 2018-02-05 | 2020-06-02 | Micron Technology, Inc. | Memory access communications through message passing interface implemented in memory systems |
CN108920146A (zh) * | 2018-06-05 | 2018-11-30 | 广州衡昊数据科技有限公司 | 页面控制组件和可视化模拟操作系统 |
US10990396B2 (en) * | 2018-09-27 | 2021-04-27 | Intel Corporation | Systems for performing instructions to quickly convert and use tiles as 1D vectors |
US11144286B2 (en) * | 2019-01-14 | 2021-10-12 | Microsoft Technology Licensing, Llc | Generating synchronous digital circuits from source code constructs that map to circuit implementations |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5781457A (en) * | 1994-03-08 | 1998-07-14 | Exponential Technology, Inc. | Merge/mask, rotate/shift, and boolean operations from two instruction sets executed in a vectored mux on a dual-ALU |
TW386193B (en) * | 1997-02-07 | 2000-04-01 | Cirrus Logic Inc | Circuits, system, and methods for processing multiple data streams |
TW506216B (en) * | 2000-03-10 | 2002-10-11 | Datacube Inc | Image processing system using an array processor |
TW564368B (en) * | 1999-10-01 | 2003-12-01 | Hitachi Ltd | Method and apparatus for arithmetic operations on vectored data |
TWI245219B (en) * | 2003-06-30 | 2005-12-11 | Intel Corp | SIMD integer multiply high with round and shift |
WO2013095576A1 (en) * | 2011-12-22 | 2013-06-27 | Intel Corporation | Processor-based apparatus and method for processing bit streams |
US8493398B2 (en) * | 2008-01-14 | 2013-07-23 | International Business Machines Corporation | Dynamic data type aligned cache optimized for misaligned packed structures |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050273559A1 (en) | 2004-05-19 | 2005-12-08 | Aris Aristodemou | Microprocessor architecture including unified cache debug unit |
US7783860B2 (en) | 2007-07-31 | 2010-08-24 | International Business Machines Corporation | Load misaligned vector with permute and mask insert |
US9378017B2 (en) | 2012-12-29 | 2016-06-28 | Intel Corporation | Apparatus and method of efficient vector roll operation |
-
2014
- 2014-07-09 US US14/327,534 patent/US9910670B2/en active Active
-
2015
- 2015-06-03 TW TW104117962A patent/TWI619073B/zh not_active IP Right Cessation
- 2015-06-09 DE DE102015007422.9A patent/DE102015007422A1/de active Pending
- 2015-06-09 CN CN201510313561.1A patent/CN105278921B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5781457A (en) * | 1994-03-08 | 1998-07-14 | Exponential Technology, Inc. | Merge/mask, rotate/shift, and boolean operations from two instruction sets executed in a vectored mux on a dual-ALU |
TW386193B (en) * | 1997-02-07 | 2000-04-01 | Cirrus Logic Inc | Circuits, system, and methods for processing multiple data streams |
TW564368B (en) * | 1999-10-01 | 2003-12-01 | Hitachi Ltd | Method and apparatus for arithmetic operations on vectored data |
TW506216B (en) * | 2000-03-10 | 2002-10-11 | Datacube Inc | Image processing system using an array processor |
TWI245219B (en) * | 2003-06-30 | 2005-12-11 | Intel Corp | SIMD integer multiply high with round and shift |
US8493398B2 (en) * | 2008-01-14 | 2013-07-23 | International Business Machines Corporation | Dynamic data type aligned cache optimized for misaligned packed structures |
WO2013095576A1 (en) * | 2011-12-22 | 2013-06-27 | Intel Corporation | Processor-based apparatus and method for processing bit streams |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI717171B (zh) * | 2019-12-26 | 2021-01-21 | 大陸商深圳大心電子科技有限公司 | 資料讀取方法、儲存控制器與儲存裝置 |
Also Published As
Publication number | Publication date |
---|---|
TW201617856A (zh) | 2016-05-16 |
US20160011870A1 (en) | 2016-01-14 |
CN105278921A (zh) | 2016-01-27 |
DE102015007422A1 (de) | 2016-01-14 |
US9910670B2 (en) | 2018-03-06 |
CN105278921B (zh) | 2019-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI619073B (zh) | 在處理具有未對準資料列的陣列期間用於刪除未對準記憶體存取的處理器、非暫時的機器可讀取的媒體和計算系統 | |
TWI622930B (zh) | 用於實施具有疊代相依條件之疊代的向量迴圈的處理器、方法和計算系統 | |
KR101722346B1 (ko) | 적분 이미지 계산 명령어를 위한 방법 및 장치 | |
TWI550512B (zh) | 擴展記憶體源至目的地暫存器及壓縮源暫存器至目的地記憶體位置之處理器 | |
CN107273095B (zh) | 用于对齐寄存器的系统、装置和方法 | |
KR101794802B1 (ko) | 히스토그램을 결정하기 위한 명령어 | |
TWI587215B (zh) | 排序加速度處理器,方法,系統,及指令 | |
TWI502499B (zh) | 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法 | |
TW201730746A (zh) | 用以融合指令之硬體設備及方法 | |
TWI489382B (zh) | 改良的萃取指令背景之設備及方法 | |
TWI578230B (zh) | 用於執行複數個乘法運算的方法和設備 | |
TWI489384B (zh) | 執行置換運算的處理器與方法及具有該處理器的電腦系統 | |
WO2013095619A1 (en) | Super multiply add (super madd) instruction with three scalar terms | |
TW201738733A (zh) | 執行指令以排列遮罩的系統及方法 | |
TWI526930B (zh) | 用以複製及遮蔽資料結構之設備及方法 | |
CN107193537B (zh) | 经改进的插入指令的装置和方法 | |
CN109643235B (zh) | 用于多源混合操作的装置、方法和系统 | |
TW201732574A (zh) | 用於改善向量通量的系統、方法及設備 | |
TW201732571A (zh) | 用於獲得偶數和奇數資料元素的系統、裝置及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |