TW201346733A - 具有為向量衝突指令與置換指令所共享的全連接互連的處理器 - Google Patents

具有為向量衝突指令與置換指令所共享的全連接互連的處理器 Download PDF

Info

Publication number
TW201346733A
TW201346733A TW101147488A TW101147488A TW201346733A TW 201346733 A TW201346733 A TW 201346733A TW 101147488 A TW101147488 A TW 101147488A TW 101147488 A TW101147488 A TW 101147488A TW 201346733 A TW201346733 A TW 201346733A
Authority
TW
Taiwan
Prior art keywords
vector
instruction
interconnect
data elements
outputs
Prior art date
Application number
TW101147488A
Other languages
English (en)
Other versions
TWI525537B (zh
Inventor
Andrew T Forsyth
Dennis R Bradford
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of TW201346733A publication Critical patent/TW201346733A/zh
Application granted granted Critical
Publication of TWI525537B publication Critical patent/TWI525537B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding

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)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

一種設備,包括用來解碼置換指令與向量衝突指令的解碼單元。向量執行單元與解碼單元耦接,且包括全連接互連。該全連接互連具有至少4個輸入用來接收至少一個源向量之至少4個對應的資料元件。全連接互連具有至少4個輸出。該至少4個輸入的每一個皆與該至少4個輸出耦接。執行單元也包括與該至少4個輸出耦接的置換指令執行邏輯,且可操作來回應置換指令而儲存第一向量結果。執行單元也包括與該至少4個輸出耦接的向量衝突指令執行邏輯,且可操作來回應向量衝突指令而將第二向量結果儲存於目的儲存位置。

Description

具有為向量衝突指令與置換指令所共享的全連接互連的處理器
通言之,本發明之領域與計算科學有關,且更明確地說,與處理器的執行邏輯有關。
在電腦科學領域中,“純量”與“向量”此兩種處理器架構被廣泛地確認。純量處理器被設計用來執行對單組資料實施操作的指令,然而,向量處理器被設計用來執行對多組資料實施操作的指令。圖1A與1B提出一顯示純量處理器與向量處理器之間基本差異的比較例。
圖1A顯示純量AND指令的例子,其中,單個運算元組A與B係被AND在一起以產生一單數((或“純量”)結果C(即AB=C)。相較之下,圖1B顯示向量AND指令的例子,其中,兩個運算元組A/B與D/E分別AND在一起,以平行的方式同時產生向量結果C、F(即,A.AND.B=C與D.AND.E=F)。
如習知技術,典型上,輸入運算元與輸出的結果係儲存在專用暫存器中。例如,很多指令具有兩個輸入運算元。因此,要使用兩個分開的輸入暫存器來暫時儲存各自的輸入運算元。此外,這些相同的指令產生的輸出值也暫時儲存在第三(結果)暫存器中。各自的輸入暫存器101a,b和102a,b與結果暫存器103a,b如圖1A與1B中所見。須注意,“純量”對“向量”的特徵是很容易辨別的。
亦即,圖1A中所見純量設計的輸入暫存器101a與102a僅保持純量值(分別為A與B)。同樣地,圖1A中亦見到純量設計的結果暫存器103a也僅保持純量值(C)。相較之下,圖1B中所見向量系統的輸入暫存器101b與102b保持向量(暫存器101b中為A,D及暫存器102b中為B,E)。同樣地,圖1B中亦見到向量系統的結果暫存器103b保持向量值(C,F)。就術語上,圖1B之向量系統之每一個暫存器101b,102b及103b的內容可統稱為“向量”,且向量中的每一個單獨的純量值可稱為“元件”。因此,例如所見暫存器101b被用來儲存由“元件”A與“元件”D所組合的“向量”A,D。
鑒於向量操作對應於平行實施之多重操作的性能,在,當對輸入向量之元件的一操作與對該相同輸入向量內之另一元件所實施的另一操作具相依性時,在向量操作中會發生問題。
如前所述,當對輸入向量之元件的一操作與對該相同輸入向量之另一元件所實施的另一操作具相依性時,在向量操作中會發生問題。會發生此特定問題的例子是使用“集合”與“分散”指令。
例如,集合指令藉由“集合”資料陣列之索引所指定的資料值而有助於為後續的向量操作建構輸入向量。例如,如果資料陣列“A”具有100個登錄,形式為“gather A[15;34;66;78]”的集合指令將提取陣列A之索引位置第15、第34、第66、及第78中的資料值。接著,所提取的資料值可用來為向量操作形成輸入向量的資料元件。“分散”指令可視為與“集合”指令相反的指令。特別是,形式為“scatter A[15;34;66;78]”的分散指令會將值(例如經由向量操作所產生之輸出向量的各個元件)儲存到陣列A之第15、第34、第66、及第78等索引位置。
因此,S<=gather A[a;b;c;d];T<=vector operation on Sscatter(A[a;b;c;d];T)形式的指令序列將:1)從A之a,b,c,與d的索引位置提取資料運算元;2)對這些運算元實施向量操作;3)將結果之元件分別存入A之a,b,c,與d的索引位置。
在某些情況,提供給集合(與分散)指令的該組索引值反映向量操作內的相依性。例如,S<=gather A[a;b;c;a];T<=vector operation on Sscatter(A[a;b;c;a];T)形式的指令序列顯示對最左之A[a]值所實施的向量操作,與對最右側之A[a]值實施向量操作的結果具有相依性。亦即,正確的操作對應於:1)operation(rightmost A[a])=>R;2)operation(R)。如果未先採取關於資料相依性的預防措施,則會得到不正確的結果。特別是,在此例中,A[a]的最後結果將是operation(A[a])而非 operation(R)。
當在用於向量操作的輸入向量中識別出相依性時,圖2提供可用來成功地導致相依性的方法。特別是,圖2的方法可適當地避免對相同的輸入向量中之相同的運算元(例如識別至少兩個相同值的索引)同時實施操作。代之以一序列的置換分開實施操作,其中,每一個置換為出現多次的索引值執行單個的索引值實例。
例如,如果相同的索引值在輸入向量中出現3次,則將實施3次的向量操作。按此方法,資料相依性被遵守,因為第二次的操作使用第一操作的結果做為輸入運算元,且第三次操作使用第二次操作的結果做為輸入運算元。
圖3顯示圖2之方法之實施例的虛擬碼流。圖4A、B到圖6A、6B顯示有助於討論圖3之虛擬碼流的額外細節。請參閱圖2,一開始,具有相依性關係的索引被識別201。在此,如前所述,具有相依性關係的索引對應於陣列之相同的索引,而該等相同的索引定義相同輸入向量的不同元件。請參閱圖3,陣列的索引指定為b=7,2,7,1,7。就此而論,其中有3個索引具有相依性關係,因為最右、中間、與最左的索引值具有相同的值(7)。另一個初始控制向量為elements_left_mask 330,其代表b之尚未用於集合/向量操作/分散處理序列的元件。在碼流開始處,elements_left_mask=1 1 1 1 1指示b之所有5個元件都尚未處理。
圖3之虛擬碼顯示vconflict(b,b)指令300之執行提 供了indices_having_dependency_relationship資料結構301。圖4A顯示vconflict(b,b)指令的方法401,及圖4B顯示可被設計到半導體晶片內,用來實施vconflict(b,b)指令的硬體邏輯設計。從圖4A與4B可看觀察到,vconflict(b,b)指令將輸入向量的每一個元件與另一輸入向量的每一個元件做比較,並提供每一個比較的結果401。在圖3的虛擬碼方法中,vconflict(b,b)指令以相同的向量(b)執行兩個輸入。
圖4B的硬體設計意圖以微編碼及/或狀態機方法支配控制器410之操作,以便多工器411與解多工器412之各個通道的選擇正確一致的操作。特別是,控制器410將左索引暫存器413之索引值其中某特定的索引多工進入比較器主幹414。比較器主幹414將被選的索引值與右索引暫存器415中的每一個索引值做比對。解多工器412將比較器主幹414的輸出引導至輸出暫存器416與左索引暫存器413之被選值對齊的段。在另一方法中,比較器主幹具有nxn個比較器,因此不需要多工器、解多工器、或控制器(即,存在於輸出暫存器416中之比較結果的每一個位元皆有各自的比較器)。
請參閱圖3的indices_having_dependency_relationship資料結構301,須注意,當b的最左值為與b的每一個值個別地相比較時,比較的結果提供於資料結構301的最左碼段302。值得注意的,在碼段302中存在有5個結果(b的每一個值一個),且碼段302內的結果分別與b的值對 齊。就此而論,資料結構301的最左碼段302為“10101”,其顯示b之最左的值與b之最右的值、b之中間的值及其本身(b之最左的值)具有相依關係。資料結構301的碼段303對應於第二至b之最左值(2)的比較,且顯示2的值在b中除了其本身之外沒有相依關係(即碼段303為01000)。具有10101之值的碼段304指示b的中間值(7)與其本身及b之最左與最右的值具有相依關係。具有00010之值的碼段305指示b之第二最右的值僅與其本身具有相依關係。具有10101之值的碼段306指示b之最右值(7)與b之最左與中間的值及其本身具有相依關係。
請參閱圖2,一旦具有相依關係的索引被識別出(例如圖3之indices_having_dependency_relationship資料結構301中所示),即為後續的向量操作識別出一組非衝突的索引。在圖3的虛擬碼例子中,該組非衝突的索引以indices_permitted_for_execution資料結構331表示。在此,indices_permitted_for_execution資料結構331至少部分是藉由以indices_having_dependency_relationship資料結構301與order_of_dependency_mask 309實施邏輯操作而被建構。
order_of_dependency_mask 309肢接具有要被處理之相依關係之索引的次序。在圖3的特例中,相依性從右到左排序,使得具有相依關係之最右的索引被第一個用於向量操作,接著,相依關係之次一個最右的索引被用於後續的向量操作置換,等等。該另一方法,按從右到左橫過b 的次序為每一個向量操作選擇具有相依關係的索引。就本例的特定值b=7,2,7,1,7來說,對應於最右7的值被用於第一次的集合/向量操作/分散遞迴,中間7的值用於第二次的集合/向量操作/分散遞迴,最左7的值用於第三次的集合/向量操作/分散遞迴。
order_of_dependency_mask 309以遮罩309內碼段之各自位置“向右”放置1來反映此次序。亦即,碼段310代表b的最右值。按照前文所描述的排序規則(在相依序列中,右值比左值先執行),最右的值不具有任何相依性(即使其包括在相依關係之中),其為向量操作遲延對它的使用(即,其以第一次操作置換執行)。就此而論,碼段310的值為00000。如果b的第二最右值在b內具有相依性,則第二碼段311反映相依性將會在b的最右值。就此而論,它的值為00001。如果b的中間值在b內具有相依性,則第三碼段312反映相依性將會在b的第二最右及/或最右值。就此而論,它的值為00011。如果b的第二最左值在b內具有相依性,則第四碼段313反映相依性將會在b的中間、第二最右及/或最右值。就此而論,它的值為00111。如果b的最左值在b內具有相依性,則第五碼段314反映相依性將會在b的第二最左、中間、第二最右及/或最右值。就此而論,它的值為01111。
回憶圖3之例中的indices_permitted_for_execution資料結構311,至少部分是藉由以indices_having_dependency_relationship資料結構301與 order_of_dependency_mask 309實施邏輯操作所建構。在此,conflicted_out_indices資料結構308係接受indices_having_dependency_relationship資料結構301與order_of_dependency_mask 309做為輸入的vptest指令所建構。
vptest指令之操作的實施例與為vptest指令設計之硬體的實施例分別提供於圖5A與5B。在此,請參閱圖5A,兩輸入向量之相同位置的碼段之相同位置的位元被比較501。具有至少一組具有相同邏輯值之相同位置之位元的碼段被識別502,並施加遮罩503。
請參閱圖5B,第一輸入向量被置入暫存器510及第二輸入向量被置入暫存器511。在兩向量它們各自之碼段內相同位置的位元對被AND閘513 AND。如果任何AND閘產生1,則1被暫存在輸出520的碼段中,該碼段對應於與被比較之位元相同位置的碼段。例如,控制器514將致使多工器515、516選擇碼段517、518的位元。在此,每一個碼段517與518對應於暫存器510、511內它們各自向量最左的碼段,且因此被放置在它們各自向量內相同的位置。碼段517與518之相同位置的位元被AND閘513 AND。如果被AND的任何位元對的值每一個皆為1,則1將被記錄在暫存器520的碼段519中(經由控制器514控制解多工器521的通道選擇)。接著對暫存器520的內容施加遮罩層522以產生輸出523。
關於圖3之特定的虛擬碼例, indices_having_dependency_relationship資料結構301被置入暫存器510及order_of_dependency_mask 309被置入暫存器511。如前所述,圖5B之為這些輸入向量所設計的vptest電路之操作產生conflicted_out_indices資料結構308置入暫存器520。conflicted_out_indices資料結構308識別哪些索引由於與b的相依性而衝突離開即將到來的向量操作置換。如圖3中所見,conflicted_out_indices資料結構308具有10100的值,其指示b之中間與最左的索引值因為相依性(b之最右索引值會發生)而在即將到來的向量操作中不被執行。conflicted_out_indices資料結構314的邏輯反轉(!_conflicted_out_indices資料結構307)接著被elements_left_mask 330遮罩。在初始的遞迴中,elements_left_mask為11111。就此而論,在暫存器520中的conflicted_out_indices向量以indices_permitted_for_execution向量331呈現在輸出暫存器523中。
現回到圖2,接著對被允許執行的索引實施向量操作203。圖3的虛擬碼例再次引用集合、向量操作、分散指令序列315。就此而論,圖3顯示:i)集合操作選擇被indices_permitted_for_execution資料結構331所識別之A的值;ii)對A之被集合的值實施向量操作;以及,iii)分散操作將向量操作的結果存回到在資料結構331中所識別的該等索引。該向量操作基本上可以是任何的向量操作。
請參閱圖2,如果向量操作已使用了b之所有的索引,則處理完成204,否則,在201重新決定具有相依關係的索引。在圖3的實施例中,elements_left_mask 332經由重新定義而被更新,其為被衝突離開最近一次集合/向量操作/分散序列的元件。在此情況中,由於b之中間與最左的值在最後的集合/向量操作/分散序列中未被使用,因此,新的elements_left_mask 332對應於10100的值,其指示它們仍被“留下”供處理。因此,處理尚未完成,且需實施另一次遞迴。包括在相依關係中之索引值之第一個索引值的執行,導致了b之索引值之間相依關係的改變。特別是,由於b之最右的索引值已被用於向量操作,以b之中間索引值的向量操作不再需要延遲。因此,indices_having_dependency_relationship資料結構301被更新以反映此改變。
在圖3的實施例中,indices_having_dependency_relationship資料結構301被接受indices_having_dependency_relationship資料結構301與conflicted_out_indices資料結構308做為輸入之vpand指令的執行而更新。vpand指令之方法的實施例見於圖6A。如圖6A中所見,vpand指令接受n個位元的第一個資料段和具有多個元件的向量,其每一個元件皆具有n個位元。接著實施n個位元之第一個資料段對該向量中每一個元件之按位元(bitwise)的AND。圖6B呈現用於vpand指令之可能的邏輯設計,其可被設計到半導體晶片 內。
請參閱圖3,用於vpand指令之n個位元的資料段對應於conflicted_out_indices資料結構308,及vpand指令的輸入向量對應於indices_having_dependency_relationship資料結構301。當conflicted_out_indices資料結構308以按位元(bitwise)對indices_having_dependency_relationship資料結構301中之每一個元件AND時,新的indices_having_dependency_relationship資料結構316被產生。在此,與conflicted_out_indices資料結構308以按位元(bitwise)AND具有從indices_having_dependency_relationship資訊丟棄b之最右索引的效果。該另一方式,如conflicted_out_indices資料結構308之最右位置中的0所反映,b之最右索引值允許在第一次的向量操作315中被執行。如此,其不再是現存相依關係的一部分。藉由實施vpand指令的邏輯AND,識別那些對b之最右索引之執行具有相依性的那些索引一其次一個索引可用於下一次的向量操作。
關於此,vptest指令另一次執行新indices_having_dependency_relationship資料結構316(與原始order_of_dependency_mask 309)產生新的conflicted_out_indices資料結構317。不過,不像初始的序列,以elements_left_mask 332做為vptest指令的輸出遮罩將致使vptest指令的輸出會與conflicted_out_indices 資料結構317之反邏輯有些不同。特別是,新indices_permitted_for_execution 333將具有00100的值,其對應於比已被執行之b之索引小的b之次一個衝突的索引。關於此,下一次的集合、向量操作、分散指令序列係僅以b的中間索引來實施319。回頭大略地參閱圖2,此時,正好完成通過處理202的第二次執行。
不過,在操作319完成之後,從對被更新之elements_left_mask 334的檢查,b之所有的索引中,仍具有尚未被集合/向量操作/分散處理使用過的索引。關於此,仍需進一步檢查b之各索引之間的相依關係。
同前,indices_having_dependency_relationship資料結構被以最新之indices_having_dependency_relationship與conflicted_out_indices資料結構316、317做為輸入之vpand(indices_having_dependency_relationship;conflicted_out_indices)指令的執行所更新。其結果為另一新的indices_having_dependency_relationship資料結構320。在此,vpand指令所實施的邏輯AND識別那些對b之中間索引執行具有相依性的索引-其次一個索引(即b之最左的索引)可用於下一次的向量操作。
關於此,vptest指令另次執行新indices_having_dependency_relationship資料結構320(與原始order_of_dependency_mask 309)產生另一新的conflicted_out_indices資料結構321。經更新的elements_lefr_mask 334遮罩對資料結構321的反邏輯對 應於另一新的indices_permitted_for_execution資料結構335 1000。新的indices_permitted_for_execution資料結構335指示下一次的集合/向量操作/分散序列僅須處理b之最左的索引。回頭大略地參閱圖2,此時,正好完成通過處理202的第三次執行。
關於此,最終的集合、向量操作、分散指令序列323僅使用b之最左的索引來實施。隨著elements_left_mask 336後續更新為00000的值,因此不需要其它的迴圈,且執行完成。
請參閱圖3的虛擬碼,須注意,如初始的vconflict(b,b)指令300所表示,此特例適合於在同一向量中偵測衝突的情況(在此情況為向量b)。更一般來說,可使用一或多組索引來為向量操作建立輸入向量(諸如如圖3中所見,用於集合/向量操作指令序列的輸入向量)。同樣地,可使用一或多組索引將輸出向量寫入記憶體(諸如圖3中的分散)。用來建構輸入向量及/或用來將輸出向量寫入記憶體之索引之間的衝突,可於相同或不同的向量之間偵測。再次,圖3演示了具有相同(b與b)之向量例子。不過,在其它情況中,可藉由比較不同之向量(例如vconflict(b,c))來偵測衝突的索引。例如,第一向量(例如b)可用做為建構後續向量操作之輸入向量的基礎,同時,另一向量(例如c)可用做為將向量操作之結果分散到記憶體中的基礎。關於此,須瞭解,vconflict指令可用於相同或不同的輸入向量。
圖7顯示的通用處理器核心700被認為是描述很多不同類型的處理器核心架構,諸如複雜指令集(CISC)、精減指令集(RISC)、及極長指令字(VLIW)核心。圖7的通用處理器核心700包括:1)提取單元703,用來提取指令的(例如從快取或記憶體);2)解碼單元704,用來解碼指令;3)排程器單元705,用來決定發給執行單元706之時序及/或指令的次序(須注意,排程器為選用);4)執行單元706,其執行指令;5)止用單元707,其指示指令已成功地完成。須注意,處理器核心可以也可以不部分或全部包括用來控制執行單元706之微操作的微碼708。
須注意,執行單元具有執行vconflictvptest、及vpand指令之能力。用來支援這些指令的邏輯電路,可分散橫跨於不同的執行單元,包括在相同的執行單元中,或有能力執行至少兩個指令的單個執行單元。執行單元也支援向量指令。執行單元也能力有支援集合與分散指令。
導致指令集架構中無法普遍包含向量衝突指令的一因素係施行它們的效率傾向受到挑戰。向量衝突指令之施行傾向涉及較大量的比較。例如,某些向量衝突指令進行輸入或源向量之每一個元件對於相同源向量中之每一個其它元件的比較。其它的向量衝突指令則進行一個源向量的每一個元件對於不同源向量之每一個元件的比較。特別是在施行要被比較之資料元件數量相對高時(例如至少8個),此涉及較大數量的比較。此外,向量暫存器的寬度與儲存在其內之資料元件的數目,傾向隨著時間增加。結果,為 了允許此種比較,元件之路選傾向需要有大量的層級。提供擴充的互連以實施此路選及/或以平行或同時的方式來進行元件比較,傾向大大增加用來實施向量衝突指令之電路的面積、成本、及電力消耗。反之,以順序方式實施此路選及/或元件之比較(例如經由多個微指令),傾向花費大量的處理時間。以下揭示快速且有效地施行向量衝突指令的另外方式。
圖8係處理器800之例示實施例的方塊圖,處理器800具有向量執行單元806,其包括置換指令執行邏輯856與向量衝突指令執行邏輯858,兩者共用全連接互連860。該處理器可以是各種不同之複雜指令集計算(CISC)處理器、各種不同之精減指令集計算(RISC)處理器、及各種不同之極長指令字(VLIW)處理器、以上各種處理器的混合、或完全其它類型的處理器其中任一。在一或多個實施例中,處理器可以是通用處理器(例如用於桌上型、膝上型、及類似的電腦的通用微處理器),然而此並非必要。另者,該處理器可以是特殊用途處理器。適合之特殊用途處理器的例子包括但不限於繪圖處理器、網路處理器、通信處理器、密碼處理器、共處理器、內嵌式處理器、數位信號處理器(DSP)、及控制器(例如微控制器),以上僅是舉幾個例子說明。處理器可包括在電腦系統、伺服器、行動電話、機上盒、及具有一或多個處理器的各種不同其它電子裝置中。在某些情況中,該等系統具有記憶體(例如動態隨機存取記憶體(DRAM))。
處理器包括解碼單元804。在操作期間,置換指令852與向量衝突指令854提供給解碼單元。置換指令與向量衝突指令可連同彼此包括在碼序列內,且可在近乎同時或在完全不同的時間以任何順序接收。置換與向量衝突指令可表現為機器指令、微指令、或可被處理器(例如被解碼器)辨識的控制信號。指令處理設備可具有指定或特定的邏輯(例如硬體、韌體、軟體、或某些組合(例如硬體有可能與某些韌體及/或軟體),其可操作來處理指令。
解碼單元可操作來解碼置換指令及可操作來解碼向量衝突指令。解碼單元可將所接收的每一個較高階機器指令解碼成一或多個被解碼的指令。特別是,解碼單元可將置換指令解碼成一或多個被解碼的置換指令853,及解碼單元可將向量衝突指令解碼成一或多個被解碼的向量衝突指令855。一或多個被解碼的指令可代表一或多個較低階的微操作、微碼入口、微指令、或其它較低階指令或控制信號,其反映及/或導源自所接收的較高階指令。一或多個較低階指令或控制信號,經由一或多個較低階(例如電路階層或硬體階層)操作,可施行較高階指令之操作。解碼單元可使用者各種不同的機制來施行。適合的機制包括但不限於微碼唯讀記憶體(ROM)、查詢表、硬體實施、可程式邏輯陣列(PLA)、習知技術中用來實施解碼單元的其它機制。
另者,除了具有解碼單元804,在一或多個其它實施例中,可用指令仿真器、轉譯器、變形器(morpher)、解 譯器、或其它指令轉換邏輯來代替。在習知技術中有各種不同類型的指令轉換邏輯,且可用軟體、硬體、韌體、及它們的組合來實施。指令轉換邏輯可接收向量衝突及/或置換指令、仿真、轉譯、漸變、解譯、或其它方法將其轉換成一或多個對應的衍生指令或控制信號。仍在其它實施例中,指令處理設備會使用解碼單元與額外的指令轉換邏輯兩者。例如,指令處理設備具有指令轉換邏輯將每一個向量衝突與置換指令轉換成一或多個導出的指令,且解碼單元將該一或多個導出的指令解碼成可被處理器之原生硬體所執行的一或多個低階指令或控制信號。某些或所有的指令轉換邏輯可位於其餘處理器以外的晶粒上,諸如獨立的晶粒上或晶粒以外的記憶體中。
向量執行單元806具有與解碼單元804之輸出耦接的輸入。經解碼的置換指令853與經解碼的向量衝突指令855可被提供給向量執行單元。換言之,經解碼的置換指令與經解碼的向量衝突指令兩者都提供給同一個向量執行單元。向量執行單元可操作來執行或處理經解碼的置換指令與經解碼的向量衝突指令兩者。在各不同的實施例中,向量執行單元可包括向量算術邏輯單元、向量邏輯單元、或其它的向量功能單元。例如,向量執行單元回應及/或由於置換指令,可操作來將結果存入由該置換指令所指示的目的儲存位置(例如向量暫存器850中的暫存器或其它架構可見的儲存位置),其中,該結果包括來自按置換指令之指定而被置換、混洗、或重排之一或多個源向量的資 料元件。如另一例,向量執行單元回應及/或由於向量衝突指令,可操作來將結果存入由該向量衝突指令所指示的目的儲存位置(例如向量暫存器中的暫存器),其中,該結果包括對一或多個源向量(例如前文圖3中所顯示及描述的indices_having_dependency_relationship資料結構301)實施元件間比較的結果。執行單元包括執行邏輯(例如硬體(例如積體電路)、韌體、軟體、或它們的組合(例如有可能具有某些韌體及/或軟體的硬體),可操作來施行置換與向量衝突指令之操作(例如為每一個執行一或多個相關的微指令)。
請再參閱圖8,執行單元包括置換指令執行邏輯856。執行單元也包括向量衝突指令執行邏輯858。置換指令執行邏輯與向量衝突指令執行邏輯共用全連接互連860。全連接互連包括至少4個互連輸入及至少4個互連輸出,其中,每一個互連輸入與每一個互連輸出互連在一起。向量衝突指令執行邏輯與置換指令邏輯之間共用全連接互連的有利之處是可允許向量衝突指令與置換指令快速且有效率地施行,同時避免如果向量衝突指令邏輯與置換指令邏輯部置在不同的執行單元及/或使用分離的專用全連接互連時傾向發生的成本、面積、及電力的增加。
處理器也包括向量暫存器850。向量暫存器與執行單元雙向耦接。向量暫存器代表處理器上的儲存位置。每一個向量暫存器可操作來儲存向量(例如緊縮資料)。向量暫存器代表架構暫存器。除了特別說明或明示,本文中所使 用的架構暫存器、暫存器檔案、及暫存器等片語,意指為軟體及/或編程器可見(例如軟體-可見)的暫存器,及/或由通用巨指令所指定來識別運算元的暫存器。這些暫存器係對比於某微架構中之其它非架構或非架構上可見暫存器(例如被指令使用的暫時性暫存器、重排序緩衝區、止用暫存器等)。向量暫存器可使用各種習知技術以不同的方式來實施,且不限於任何所知的某特定類型電路。各種不同類型的暫存器都適用,只要它們有儲存及提供本文所描述之資料的能力。適合之暫存器的例子包括但不限於專用的實體暫存器、使用暫存器更名的動態配置實體暫存器、及它們的組合。
前文顯示及描述了較簡單的處理器以免糢糊了描述。在其它實施例中,處理器可選擇性地包括其它習知組件,諸如,例如指令提取單元、指令排程單元、分支預測單元、指令與資料快取、指令與資料轉譯查詢緩衝區、預提取緩衝區、微指令佇列、微指令序列器、匯流排介面單元、第二或更高階快取記憶體、止用單元、暫存器更名單元、或它們的各種不同的組合。此外,其它實施例可具有多種不同類型的執行單元,且該等執行單元至少其中之一包括至少部分共用全連接互連的置換指令執行邏輯及向量衝突指令執行邏輯。仍是其它實施例,可具有多核心、邏輯處理器、或執行引擎。核心、邏輯處理器、或執行引擎至少其中之一包括至少部分共用全連接互連的向量衝突指令執行邏輯與向量衝突指令執行邏輯。須瞭瞭,處理器中不同 的組件可以說是有極多不同的組合與組態,且本發明之範圍並不限於任何已知的如此組合或組態。
圖9係向量置換操作之例示實施例的方塊圖。向量置換操作可回應及/或由於置換指令而實施。在習知技術中,置換指令有時稱為混洗指令。置換指令可明確指定或以其它方式指示源向量964。舉例來說,源向量可儲存在源緊縮資料暫存器或源記憶體位置中。圖示說明的源向量包括標示為A1-A4的4個源資料元件。資料元件可表示整數、浮點數、或其它資料。回應及/或由於置換指令,結果向量被儲存。舉例來說,結果向量可存入藉由置換指令所明確指定或以其它方式指示的目的緊縮資料暫存器或目的記憶體位置。該結果包括來自按置換指令之指定而被置換、混洗、或重排之源向量的資料元件。特別是,在圖示說明中,每一個結果資料元件可包括A1-A4任何的源資料元件。在某些實施例中,結果向量的每一個元件皆具有對應的索引,其指向源向量的資料元件。此只是置換指令的一圖示說明例。其它的置換指令為習知技術。其它的置換指令可對具有更多資料元件(例如8、16、32、64等)的源向量及/或結果向量實施置換操作,且源與結果資料元件的數量可以相同或不同。此外,圖示說明的向量置換操作是對單個源向量實施,然而其它的置換操作可對來自兩或更多個源向量的資料元件實施。
圖10係向量執行單元1006之例示實施例的方塊圖,其包括共享全連接互連1060的置換指令執行邏輯1056與 向量衝突指令執行邏輯1058。向量執行單元可操作來執行置換指令與向量衝突指令兩者(例如,執行源自於它們的微指令)。舉例來說,向量執行單元可以是向量算術邏輯單元(ALU)、向量邏輯單元、或可操作來比較與置換/混洗資料元件之其它類型的向量功能性單元。
源向量1064可輸入到向量執行單元。源向量具有N個資料元件(A1-AN),其中,N為至少4的整數。在各不同的實施例中,N可為4,8,16,32,或64。雖然在一般實用上N為2的乘冪,但N不限於此。向量執行單元包括全連接互連1060。全連接互連具有N個互連輸入1068、及P個互連輸出1072,其中N與P每一個並不必然等於至少為4的整數。N個互連輸入每一個皆被耦接以接收N個資料元件(A1-AN)其中對應之不同的一個資料元件。N個資料元件每一個皆可為M個位元寬。在各不同的例示實施例中,M個位元可以是8位元、16位元、24位元、32位元、48位元、64位元。M不需限制為2的乘冪。全連接互連可操作來將N個互連輸入之每一個連接到P個互連輸出的每一個。例如,在P個互連輸出的每一個處可得到所有的N個資料元件(A1-AN)。
在某些實施例中,全連接互連係非阻塞式互連。在非阻塞式互連中,任何輸入都可無限制的路由到任何輸出。相較之下,阻塞式互連具有中間或層狀的多工或選擇級段,其對哪一個輸入路由到哪一個輸出加諸了限制。例如,在阻塞式互連中,如果某特定輸入被路到某特定輸出,其 對正被路由到另一輸出的另一輸入加諸了限制(例如,中間的多工器級段僅能選擇兩輸入其中之一朝輸出傳送)。非阻塞式互連不會有此情況,並提供了施行向量衝突指令某些優點。另者,互連可以是阻塞式互連,並增加附加的互連用來饋送向量衝突執行邏輯,以適應互連之阻塞特質所加諸的極限/限制。
在某些實施例中,全連接非阻塞式互連包括全交叉開關。交叉開關可按全矩陣方式將N個輸入連接到P個輸出。在習知技術中,交叉開關有時也稱為交叉點互連、交叉點網絡、矩陣互連、矩陣網絡、全網目的等。在某些實施例中,交叉開關僅是向量執行單元及/或僅具有其中N個輸入全連接到P個輸出之一個互連之向量執行單元的交叉開關,其中,N與P皆至少為4。
請再參閱圖示說明,執行單元包括向量衝突指令執行邏輯1058與置換指令執行邏輯1056。每一個向量衝突指令執行邏輯和置換指令執行邏輯皆與全連接互連耦接。特別是,向量衝突指令執行邏輯的輸入與全連接互連之每一個P互連輸出耦接。同樣地,置換指令執行邏輯的輸入與全連接互連之每一個P互連輸出耦接。在圖示說明中,每一個P互連輸出具有對應的分支1074,其中,該輸出的每一條線被分割成2或更多條線。這些分支之每一分支的一叉路提供給向量衝突指令執行邏輯,而這些分支之每一分支的另一叉路提供給置換指令執行邏輯。互連分支的每一個輸出到達置換指令執行邏輯與向量衝突指令執行邏輯 兩者。另者,除了此種分支,也可選用各自獨立的複製線。
向量衝突指令執行邏輯與置換指令執行邏輯兩者共享及使用全連接互連。在使用期間,來自源運算元(例如源向量1064)的資料元件經由全連接互連被路由、連接、傳導、耦接、或傳送到每一個向量衝突指令執行邏輯與置換指令執行邏輯。在圖示說明中,為簡化而只顯示了單個源向量,然而置換與向量衝突指令所使用的源向量可以相同或更經常是不同。亦即,每一個向量衝突指令執行邏輯與置換指令執行邏輯經由或從全連接互連接收來自源運算元的資料元件。
向量衝突指令執行邏輯利用全連接互連可操作來施行向量衝突指令的操作。在某些實施例中,向量衝突指令的操作是用來偵測源向量中的複製資料元件。在某些實施例中,向量衝突指令的操作是將源向量的每一個資料元件與該源向量之所有其它的資料元件進行相同性的測試或比較。在某些實施例中,每一個資料元件的比較結果可在第一結果向量1067的資料元件內形成位元向量。第一結果向量的特例係圖3的indices_having_dependency_relationship資料結構301。向量衝突指令執行邏輯可回應向量衝突指令而操作來將第一結果向量存入目的儲存位置(例如向量暫存器或記憶體中的位置)。
置換指令執行邏輯利用全連接互連可操作來施行置換指令的操作。在某些實施例中,置換指令可將來自一或多 個源向量(例如源向量1064)的任何資料元件複製或儲存到第二結果向量1066中的任何資料元件。在某些實施例中,置換操作可與圖9中所討論的那些類似。置換指令執行邏輯可回應置換指令而將第二結果向量存入目的儲存位置(例如向量暫存器或記憶體中的位置)。
向量衝突指令執行邏輯與置換指令執行邏輯之間共享全連接互連可提供某些優點。首先,其允許向量衝突指令與置換指令兩者可以快速且有效率的施行,同時避免如果向量衝突指令邏輯與置換指令邏輯部置在不同的執行單元及/或使用分離的專用全連接互連時傾向發生的成本、面積、及電力的增加。通常,接線/互連支配著網絡面積與電力消耗。接線/互連長則傾向佔用大量的空間,且電路在接線/互連上驅動信號傾向消耗大量的電力。用來為衝突/置換操作施行選擇與比較(例如比較器與MUX)的邏輯閘傾向變小且消耗較少的電力。置換與衝突偵測指令/操作兩者間共享接線/互連的優點在於大部分的面積與電力都被分攤或分配給該兩項操作。
圖11係全連接非阻塞式互連1160之例示實施例的電路方塊圖。圖示說明的全連接非阻塞式互連具有4個互連輸入1168與4個互連輸出1172。須瞭解,替代的實施例也可包括更多的輸入與更多的輸出,且輸入與輸出的數量可相同或不同。
全連接互連具有4條輸入分配線1176。在圖示說明中,這些線以水平線來顯示。輸入分配線可代表金屬線、 走線、互連、或其它導電路徑。每一個輸入可有一條輸入分配線。第一輸入1168-1被耦接至第一輸入分配線1176-1,第二輸入1168-2被耦接至第二輸入分配線1176-2,第三輸入1168-3被耦接至第三輸入分配線1176-3,第四輸入1168-4被耦接至第四輸入分配線1176-4。提供於每一個輸入處的資料橫過對應的輸入分配線被廣播。
每一個互連輸出1172具有對應的搭接線組1178耦接於其。在圖示說明中,搭接線組以垂直線組來顯示。搭接線可代表金屬線、走線、互連、或其它導電路徑。在圖示說明的例中,有4個輸出與4組對應的搭接線組。搭接線組中的每一條搭接線被耦接至對應之輸入分配線其中不同之一的分配線。在圖示說明中,每一搭接線僅耦接至其中一條輸入分配線(例如,在圖示說明中,每一搭接線被耦接至最靠近其上終端點的輸入分配線)。例如,在第一組的搭接線1178-1中,第一條搭接線1178-1A被耦接至第一輸入分配線1176-1,第二條搭接線1178-1B被耦接至第二輸入分配線1176-2,第三條搭接線1178-1C被耦接至第三輸入分配線1176-3,第四條搭接線1178-1D被耦接至第四輸入分配線1176-4。每一搭接線組中的搭接線及/或每一個輸出被耦接至每一條輸入分配線以將廣播輸入資料傳送至輸出。
圖12係共享全連接互連1260之4資料元件置換指令執行邏輯1256與4元件向量衝突指令執行邏輯1258之例示實施例的電路方塊圖。4資料元件置換指令執行邏輯每 一個皆能操作一或多個每一個皆具有4個資料元件之源向量1264以產生每一個皆4個資料元件的結果向量1266、1267。
源向量1264具有標示為A1-A4的4個源資料元件。全連接互連被耦接以接收源向量。全連接互連具有4個互連輸入1268。每一個互連輸入被耦接以接收資料元件A1-A4其中對應的資料元件。4個輸入每一個與4條輸入分配線1276其中對應的一條耦接。全連接互連也具有4個互連輸出1272。每一互連輸出被提供以一組搭接線。每組中每條輸入分配線被提供以一條搭接線。搭接線組內的每一條搭接線與輸入分配線之其中一條對應的分配線耦接。
置換指令執行邏輯1256與全連接互連耦接。置換指令執行邏輯包括4個選擇器1256-1、1256-2、1256-3、1256-4。每一個選擇器具有與互連輸出1272其中不同之輸出耦接的輸入。在使用期間,來自源向量的資料元件可經由全連接互連被路由、連接、耦接、或以其它方式傳送至選擇器。每一個選擇器1256可操作來選擇要被存入第一結果向量1266中之對應資料元件中的4個輸入資料元件其中任一。舉例來說,第一選擇器1256-1可選擇要被存入第一結果向量之結果資料元件B1的4個輸入源資料元件其中任一,第二選擇器1256-2可選擇要被存入結果資料元件B2的4個輸入源資料元件其中任一,第三選擇器1256-3可選擇要被存入第三資料元件B3的4個輸入源資料元件其中任一,以及第四選擇器1256-4可選擇要被 存入結果資料元件B4的4個輸入源資料元件其中任一。選擇器可包括硬體、韌體、軟體、或它們的組合(例如,可能具有某些韌體及/或軟體的硬體)。如所示,在某些實施例中,每一個選擇器可包括4:1(4輸入到1輸出)多工器(MUX)。每一個4:1多工器可藉由源自於置換指令所提供之索引的輸入控制或選擇信號(未顯示)來控制。另者,也可利用其它的選擇器電路。
向量衝突指令執行邏輯1258也與全連接互連耦接。向量衝突指令執行邏輯包括4組4個比較器1258-1、1258-2、1258-3、1258-4。4組4個比較器可代表一NxN的比較器主幹,其中N為4。4組比較器每組具有4個比較器(例如4個實體比較器或4個邏輯比較器)。該些比較器組的每一個比較器皆具有與互連輸出1272之不同的輸出耦接的輸入。在使用期間,來自源向量的資料元件經由全連接互連被路由、連接、耦接、或以其它方式傳送到選擇器。每一組比較器1258皆可操作來實施元件間比較,並將比較的結果存入第二結果向量1267之對應的結果資料元件。比較可平行而非順序地實施,其有助於提供向量衝突指令快速且有效率的施行。在某些實施例中,每一比組較器可操作來進行輸入資料元件之不同對應的元件與其它所有的輸入資料元件的比較。例如,第一組比較器1258-1可操作來比較A1與A1、A1與A2、A1與A3、及A1與A4。如所示,在一態樣中,此可包括資料元件與自已本身之無關緊要的比較(例如A1與A1的比較),或在另 一態樣中,此無關緊要的比較可省略。在這類可被省略的無關緊要的比較的實施例中,每一個比較器組可省略一個比較器。在某些實施例中,比較器可用互斥OR(XOR)樹來施行。
在某些實施例中,比較器可邏輯地而非實體地分開(例如單個的寬實體比較器可表現成4個較窄的邏輯比較器)。在某些實施例中,每一個資料元件可以是M位元寬(例如,其中,M為8位元、16位元、32位元、或64位元),且每一個比較器可以是M位元寬,以便能操作來比較M位元寬的資料元件對。另者,比較器可以比資料元件窄(例如小於M位元寬),例如,為了縮小比較器的尺寸/面積,及/或比較器的電力消耗。例如,可比較32位元資料元件之最低階的8位元或16位元的子集。在某些情況中,此會導致假衝突(例如,當資料元件的子集相同但完整的資料元件並不相同時,會錯誤地決定該資料元件相同),此傾向增加序列化的量並使效能降低,但在功能上是良性的。比較器組可包括硬體、韌體、軟體、或其組合(例如,可能具有某些韌體及/或軟體的硬體)。
在圖示說明中,全連接互連的每一個輸出1272具有若干個分支1274,其用來提供輸出給向量衝突指令執行邏輯與置換指令執行邏輯兩者。這些分支每一個的一叉路提供給向量衝突指令執行邏輯,而另一叉路則提供給置換指令執行邏輯。另者,不採分支,而選擇使用分離的複製線。
全連接互連係由向量衝突指令執行邏輯與置換指令執行邏輯兩者所共享。此具有傾向能縮小用來施行這些指令之邏輯的整體尺寸與電力消耗之優點。此外,交叉開關與其它的全連接互連傾向受線路的限制而非受裝置之限制,此意指全連接互連四周的面積傾向受線路之路由的支配,而非電晶體及其它主動與被動半導體裝置/電路所支配。如此,在相同的交叉開關或其它全連接互連上,此傾向有大量的半導體面積來容納置換指令執行邏輯與向量衝突指令執行邏輯兩者。
圖13之電路方塊圖顯示一組4個M位元比較器1380-1,1380-2,1380-3,1380-4與全連接互連之特定互連輸出1368耦接之例示實施例的進一步細節。4條搭接線1378代表分別提供給4條本地路由線1381之給定的互連輸出1368。不採4條搭接線僅提供給4:1M位元多工器1356或一組4個M位元比較器1380其中之一,而將搭接線1378分支到本地路由線,並從該處提供給4:1M位元多工器與一組4個M位元比較器。在特定的圖示說明中,本地路由線終結於4:1M位元多工器,而不同的4條本地搭接線1382組則為4個M位元比較器中每一個提供一條搭接線,然而並不需要此特的組態。以其它方式將4:1M位元多工器或其它選擇器與比較器組連接到給定的互連輸出也是可想見的。
圖14係共享全連接互連1460之8資料元件置換指令執行邏輯1456與8資料元件向量衝突指令執行邏輯1458 之詳細例示實施例的方塊圖。8資料元件置換與向量衝突指令執行邏輯每一個皆能對每一個皆具有8資料元件之一或多個源向量1464操作,以產生每一個皆具有8資料元件的結果向量1466、1467。圖14與圖12有某些類似之處。為避免糢糊了描述,以下的討論將強調圖14之實施例不同或附加的特徵,而不重複所有相似之處。須瞭解,除了明述或以其它方式顯而易見,否則,圖12所描述的屬性與衍生也可應用於圖14。
源向量1464具有標示為A1-A8的8個源資料元件。全連接互連具有8個互連輸入1468,每一個皆耦接以接收8個資料元件A1-A8其中不同的對應元件。8個輸入之每一個皆與8條輸入分配線1476其中不同的對應線耦接。全連接互連也具有8個互連輸出1472。每個互連輸出提供以一組搭接線1478。每組內的每條輸入分配線被提供以一條搭接線。一組內的每條搭接線與輸入分配線之對應的分配線耦接。
置換指令執行邏輯1456與全連接互連1460耦接。置換指令執行邏輯包括1456-1至1456-8等8個選擇器。每個選擇器具有與互連輸出1472其中不同之輸出耦接的輸入。每一個選擇器可操作來選擇要被存入第一結果向量1466中之對應結果資料元件中之8個輸入資料元件其中任一。如所示,在某些實施例中,每一個選擇器包括8:1多工器。或者,也可使用其它的選擇器電路。
向量衝突指令執行邏輯1458也與全連接互連耦接。 向量衝突指令執行邏輯包括8組8個比較器1458-1至1458-8。每組比較器具有與互連輸出1472其中不同之輸出耦接的輸入。每一組比較器可操作來實施元件間的比較,並將比較的結果存入第二結果向量1467之對應的結果資料元件。在某些實施例中,每一組比較器可操作來進行輸入資料元件中不同之對應元件與所有其它輸入資料元件的比較。例如,第一組比較器1458-1可操作來比較A1與A1、A1與A2、A1與A3、A1與A4、A1與A5、A1與A6、A1與A7、及A1與A8。雖然顯示用於M位元資料元件的M位元比較器,但在另些實施例中,比較器可僅比較M位元資料元件之位元的子集。
此僅是少數幾個圖示說明的例子。為簡化圖式,僅顯示4與8個資料元件及相關之4或8寬的指令執行邏輯。不過,須明白,具有多於8個資料元件及多於8寬指令執行邏輯的其它實施例也是可想見的。例如,另一實施例利用16個資料元件源向量及具有16寬的指令執行邏輯。如另一例子,另外的實施例利用32資料元件源向量及具有32寬的指令執行邏輯。
圖15係置換指令與向量衝突指令共享全連接互連之方法1500的例示實施例。此方法可藉由處理器來實施。
該方法包括在方塊1501處接收置換指令,該指令指示包括有至少4個資料元件的至少第一源向量,並指示第一目的儲存位置。在方塊1502處,第一源向量的至少4個資料元件經由執行置換指令之向量執行單元的全連接互 連傳送。在某些實施例中,全連接互連係非阻塞式全連接互連。在某些實施例中,全連接互連係交叉開關。回應置換指令,將第一結果向量存入第一目的儲存位置。在某些實施例中,第一結果向量可包括第一複數個資料元件,且第一複數個的每一個資料元件能夠是第一源向量之至少4個資料元件其中任一。
該方法也包括在方塊圖1503處接收向量衝突指令,該指令指示包括有至少4個資料元件的第二源向量,並指示第二目的儲存位置。在方塊1504處,第二源向量的至少4個資料元件經由執行向量衝突指令之向量執行單元的全連接互連傳送。回應向量衝突指令,將第二結果向量存入第二目的儲存位置。在某些實施例中,第二結果向量包括第二複數個資料元件,且第二複數個資料元件的每一個資料元件可包括第二源向量之對應的資料元件與第二源向量之其它資料元件比較的結果。
例示性核心架構、處理器、及電腦架構
對於不同之目的,處理器核心可用不同的方式在不同的處理器中實施。例如,這類核心的實施可包括:1)意欲用於通用計算的通用順序核心;2)意欲用於通用計算的高性能通用亂序核心;3)意欲主要用於繪圖及/或科學(產出)計算的特殊用途核心。不同處理器的實施可包括:1)包括意欲用於通用計算之一或多個通用順序核心及/或意欲用於通用計算之一或多個亂序核心的CPU;及2)包括意欲 主要用於繪圖及/或科學(產出)計算之一或多個特殊用途核心的共處理器。這些不同的處理器導致不同的電腦系統架構,其可包括:1)與CPU不在同一晶片上的共處理器;2)在與CPU同一封裝中之不同晶粒上的共處理器;3)在與CPU同一晶粒上的共處理器(在此情況,此等共處理器有時稱為特殊用途邏輯,諸如整合式繪圖及/或科學(產出)邏輯,或如特殊用途核心);及4)晶片上系統,其可包括位在與所描述之CPU(有時稱為應用核心或應用處理器)、前所描述之共處理器、及附加功能性之同一晶粒上。以下描述例示性的核心架構,接著描述例示性處理器及電腦架構。
例示性核心架構 順序與亂序核心方塊圖
圖16A的方塊圖說明按照本發明實施例之例示性順序管線與例示性暫存器更名、亂序發出/執行管線。圖16B的方塊圖說明按照本發明實施例之順序架構核心的例示性實施例,與要被包括在處理器中的例示性暫存器更名、亂序發出/執行架構核心。圖16A-16B中的實線框說明順序管線與順序核心,而選用附加的虛線框說明暫存器更名、亂序發出/執行管線與核心。鑒於順序態樣是亂序態樣的子集,現將描述亂序態樣。
在圖16A中,處理器管線1600包括提取階段1602、長度解碼階段1604、解碼階段1606、配置階段1608、更 名階段1610、排程(也稱為配送或發出)階段1612、暫存器讀取/記憶體讀取階段1614、執行階段1616、寫回/記憶體寫入階段1618、異常處置階段1622、及確認階段1624。
圖16B顯示包括有耦接至執行引擎單元1650之前端單元1630,且兩者皆耦接至記憶體單元1670的處理器核心1690。核心1690可包括精減指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字元(VLIW)核心、或混合或替代核心類型。如另一選擇,核心1690可以是特殊用途核心,諸如,例如網路或通信核心、壓縮引擎、共處理器核心、通用計算繪圖處理單元(GPGPU)核心、繪圖核心、諸如此類。
前端單元1630包括分支預測單元1632耦接至指令快取單元1634,其耦接至指令轉譯後備緩衝區(TLB)1636,其耦接至指令提取單元1638,其耦接至解碼單元1640。解碼單元1640(或解碼器)可解碼指令,並產生諸如解碼自或用其它方式反映自或導源自原始指令之一或多個微操作、微碼進入點、微指令、其它指令、或其它控制信號的輸出。解碼單元1640可使用各種不同的機制來實施。適合的機制例子包括但不限於查詢表、硬體實施、可程式邏輯陣列(PLA)、微碼唯讀記憶體(ROMs)等。在一實施例中,核心1690包括微碼ROM或其它儲存用於某些巨指令(例如在解碼單元1640中或不然在前端單元1630中)之微碼的媒體。解碼單元1640耦接至執行引擎單元1650中的更 名/分配器單元1652。
執行引擎單元1650包括耦接至止用單元1654與一組一或多個排程器單元1656的更名/分配器單元1652。排程器單元1656代表任何數量的不同排程器,包括保留站、中央指令窗口等。排程器單元1656耦接至實體暫存器檔案單元1658。每一個實體暫存器檔案單元1658代表一或多個實體暫存器檔案,這些不同的暫存器檔案儲存一或多個不同的資料類型,諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,指令指標,其為下一個要被執行的位址)等。在一實施例中,實體暫存器檔案單元1658包含向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。這些暫存器單元可提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。實體暫存器檔案單元1658被止用單元1654重疊,以說明可實施暫存器更名及亂序執行的各種不同方式(例如,使用重排序緩衝區及止用暫存器檔案;使用未來檔案、歷史緩衝區、及止用暫存器檔案;使用暫存器映圖及暫存器池等)。止用單元1654與實體暫存器檔案單元1658耦接至執行叢集1660。執行叢集1660包括一組一或多個執行單元1662以及一組一或多個記憶體存取單元1664。執行單元1662可實施各種操作(例如移位、加、減、乘)及各種類型的資料(例如純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)。雖然某些實施例可包括一些專用於特殊功能或功能組的執行單元,但其它實施例可包括僅一個執行 單元,或所有都用來執行所有功能的多個執行單元。圖中所顯示的排程器單元1656、實體暫存器檔案單元1658、及執行叢集1660儘可能是複數個,因為某些實施例會為某些類型的資料/操作產生獨立的管線(例如純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、及/或記憶體存取管線,其每一個都具有它們自已的排程器單元、實體暫存器檔案單元、及/或執行叢集-且在獨立之記憶體存取管線的情況中,在某些實施例的實施中,僅此管線的執行叢集具有記憶體存取單元1664)。亦須瞭解,在使用獨立的管線之處,一或多個這些管線可以是亂序發出/執行且其餘的則按順序。
記憶體存取單元1664組耦接至記憶體單元1670,其包括資料TLB單元1672耦接至資料快取單元1674耦接至第二階(L2)快取單元1676。在一例示性的實施例中,記憶體存取單元1664可包括載入單元、儲存位址單元、儲存資料單元,其每一個皆耦接至記憶體單元1670中的資料TLB單元1672。指令快取單元1634進一步耦接至記憶體單元1670中的第二階(L2)快取單元1676。第二階(L2)快取單元1676耦接至一或更多個其它階的快取,且最終耦接至主記憶體。
舉例來說,例示性的暫存器更名、亂序發出/執行核心架構可按如下實施管線1600:1)指令提取1638實施提取與長度解碼階段1602與1604;2)解碼單元1640實施解碼階段1606;3)更名/配置單元1652實施配置階段 1608與更名階段1610;4)排程單元1656實施排程階段1612;5)實體暫存器檔案單元1658實施與記憶體單元1670實施暫存器讀取/記憶體讀取階段1614;執行叢集1660實施執行階段1616;6)記憶體單元1670與實體暫存器檔案單元1658實施寫回/記憶體寫入階段1618;7)各種單元都涉及異常處置階段1622;以及8)止用單元1654與實體暫存器檔案單元1658實施確認階段1624。
核心1690可支援一或多個指令集(例如,x86指令集(具有已增加較新版本的某些延伸);MIPS Technologies of Sunnyvale,CA的MIPS指令集;ARM Holdings of Sunnyvale,CA的ARM指令集(具有選用的附加延伸,諸如NEON)),包括本文所描述的指令。在一實施例中,核心1690包括支援緊縮資料指令集延伸(例如AVX1,AVX2)的邏輯,藉以允許很多使用緊縮資料來實施的多媒體應用程式用來操作。
須瞭解,該核心可支援多線程(執行兩或多組平行的操作或線程),並以多種不同的方式來進行,包括時間切片多線程、併行多線程(在此方面,單個實體核心為每一線程提供邏輯核心,實體核心併行多線程),或以上的組合(例如,時間切片提取與解碼並之後併行多線程,諸如Intel®的超線程技術)。
雖然暫存器更名是以亂序執行的情境描述,但須瞭解,暫存器更名可用於順序架構。雖然所說明的處理器實施例也包括獨立的指令與資料快取單元1634/1674和共用的 L2快取單元1676,但另些實施例可具有用於指令與資料的單一內部快取記憶體,諸如,例如第一階(L1)內部快取記憶體,或多階的內部快取記憶體。在某些實施例中,系統可包括內部快取記憶體與外部快取記憶體的組合,外部快取記憶體係在核心及/或處理器的外部。另者,所有的快取記憶體都可以在核心及/或處理器的外部。
特定例示性順序核心架構
圖17A-B說明更特定之例示性順序核心架構的方塊圖,該核心可以是晶片中數個邏輯方塊其中之一(包括某些類型及/或不同類型的其它核心)。視應用程式而定,邏輯方塊經由高帶寬的互連網路(例如環狀網路)與具有某些固定功能之邏輯、記憶體I/O介面、及其它必要的I/O邏輯的)通信。
圖17A的方塊圖係按照本發明實施例之單處理器核心,連同其連接到晶粒上的互連網路1702及其第二階(L2)快取的局部子集1704。在一實施例中,指令解碼器1700支援具有緊縮資料指令集延伸的x86指令集。L1快取1706允許低延遲存取快取記憶體到純量與向量單元。雖然在一實施例中(為簡化設計)純量單元1708與向量單元1710使用各自的暫存器組(分別是純量暫存器1712與向量暫存器1714),且在它們之間傳輸的資料被寫入到記憶體,並接著從第一階(L1)快取1706中讀回,但本發明的另些實施例可使用不同的方法(例如,使用單個暫存器 組或包括允許能在兩暫存器檔案之間傳輸資料的通信路徑而不寫入與讀回)。
L2快取的局部子集1704係整體L2快取的一部分,其被劃分成獨立的局部子集,每個處理器核心各一個局部子集。每一個處理器核心皆具有到達其自已之L2快取之局部子集1704的直接存取路徑。被處理器核心讀取的資料係存入它的L2快取子集1704中,且可被快速地存取,與其它處理器核心平行地存取它們自已的局部L2快取子集。被處理器核心寫入的資料係儲存在其自已的L2快取子集1704中,且如有必要,可被來自其它子集沖洗。環狀網路確保共享資料的同調性。環狀網路係雙方向性以允許代理者,諸如處理器核心,L2快取與其它邏輯方塊在晶片內互相通信。每一個環狀資料路徑在每個方向為1012位元寬。
圖17B係按照本發明實施例之圖17A中處理器核心的部分展開圖。圖17B包括L1快取1704之L1資料快取1706A部分,以及關於向量單元1710與向量暫存器1714更多的細節。特別是,向量單元1710係16-寬的向量處理單元(VPU)(見16-寬的ALU 1728),其執行一或多個整數、單精確度浮點、及雙精確度浮點指令。VPU支援以拌和單元1720拌和暫存器輸入、以數值轉換單元1722A-B轉換數值、和以複製單元1724在記憶體輸入上複製。寫入遮罩暫存器1726允許預測所得到的向量寫入。
具有整合式記憶體控制器與繪圖的處理器
圖18係按照本發明實施例之處理器1800的方塊圖,其可多於一個核心,具有整合式記憶體控制器,以及具有整合式繪圖。圖18中的實線框說明處理器1800具有單核心1802A、系統代理1810、一組一或多個匯流排控制器單元1816,而選用附加的虛線框說明具有多核心1802A-N的另一處理器1800、系統代理單元1810中的一組一或多個整合式記憶體控制器單元1814,以及特殊用途邏輯1808。
因此,處理器1800之不同的實施可包括:1)具有做為整合式繪圖及/或科學(產出)邏輯(其可包括一或多個核心)之特殊用途邏輯1808與做為一或多個通用核心(例如通用順序核心、通用亂序核心、該兩種核心的組合)之核心1802A-N的CPU;2)具有做為意欲主要用於繪圖及/或科學(產出)之大量特殊用途核心之核心1802A-N的共處理器;以及3)具有做為大量通用順序核心之核心1802A-N的共處理器。因此,處理器1800可以是通用處理器、共處理器或特殊用途處理器,諸如,例如網路或通信處理器、壓縮引擎、繪圖處理器、通用繪圖處理單元(GPGPU)、高產出多重整合式核心(many integrated core;MIC)共處理器(包括30或更多個核心)、內嵌式處理器、諸如此類。處理器可在一或多個晶片上實施。處理器1800可以是部分及/或使用任何數目之處理技術(諸如,例如BiCMOS,CMOS,或NMOS)在一或多個基板上實施。
記憶體階層包括核心內的一或多個快取級、一組或一或多個共用快取單元1806、及外部記憶體(未顯示)耦接至該組整合式記憶體控制器單元1814。該組共用快取單元1806可包括一或多個中階快取記憶體,諸如第二階(L2)、第三階(L3)、第四階(L4)或其它階快取記憶體、最後階快取記憶體(LLC)、及/或它們的組合。雖然在一實施例中,整合式繪圖邏輯1808、共用快取單元1806組、及系統代理單元1810/整合式記憶體控制器單元1814是以環形基互連單元1812來互連起,但另些實施例可使用任何數目之習知技術來互連這些單元。在一實施例中,一或多個快取單元1806與核心1802A-N之間保持一致性。
在某些實施例中,一或多個核心1802A-N具有多線程的能力。系統代理1810包括那些協調與操作核心1802A-N的組件。系統代理單元1810可包括例如電力控制單元(PCU)與顯示單元。PCU可以是或包括用來調整核心1802A-N與整合式繪圖邏輯1808之電力狀態所需的邏輯與組件。顯示單元用來驅動一或多個外接的顯示器。
就架構指令集而論,核心1802A-N可以是同質的或異質的;亦即,2或多個核心1802A-N有執行相同指令集的能力,而其它核心僅有執行該指令集之子集或不同指令集的能力。
例示性電腦架構
圖19-22係例示性電腦架構的方塊圖。用於膝上型電 腦、桌上型電腦、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換機、內嵌式處理器、數位信號處理器(DSP)、繪圖裝置、視訊遊戯裝置、機上盒、微控制器、行動電話、可攜式媒體播放機、手持式裝置、及各種其它電子裝置之其它習知技藝的系統設計與組構也都適用。通言之,有能力結合如本文所揭示之處理器及/或其它執行邏輯之各式各樣的系統或電子裝置一般都適用。
現請參閱圖19,圖中顯示按照本發明一實施例之系統1900的方塊圖。系統1900可包括一或多個處理器1910、1915耦接至控制器集線器1920。在一實施例中,控制器集線器1920包括繪圖記憶體控制器集線器(GMCH)1990與輸入/輸出集線器(IOH)1950(其可能是在各自的晶片上);GMCH 1990包括記憶體與繪圖控制器,記憶體1940與共處理器1945耦接於GMCH 1990;IOH 1950將輸入/輸出(I/O)裝置1960耦接至GMCH 1990。另者,記憶體與繪圖控制器其中之一或兩者皆整合在處理器之內(如本文所描述),記憶體1940與共處理器1945直接耦接至處理器1910,且控制器集線器1920與IOH 1950在一單晶片中。
附加處理器1915之選用的本質在圖19中以虛線來表示。每一個處理器1910、1915包括本文所描述的一或多個處理核心,且可以是某型式的處理器1800。
例如,記憶體1940可以是動態隨機存取記憶體 (DRAM)、相變記憶體(PCM)、或兩者的組合。關於至少一實施例,控制器集線器1920與處理器1910、1915經由多點分岐匯流排通信,諸如前側匯流排(FSB)、點對點介面,諸如QuickPath互連(QPI)、或類似的連接1995。
在一實施例中,共處理器1945係特殊用途處理器,諸如,例如高產輸出MIC處理器、網路或通信處理器、壓縮引擎、繪圖處理器、GPGPU、內嵌式處理器、或諸如此類。在一實施例中,控制器集線器1920可包括整合式繪圖加速器。
就優點之標準的範圍而論,實體資源1910、1915之間可有各種差異,包括架構、微架構、熱、電力消耗特徵、諸如此類。
在一實施例中,處理器1910執行用來控制一般類型之資料處理操作的指令。嵌入在該等指令內的可以是共處理器指令。處理器1910辨識這些共處理器指令係須由附加之共處理器1945來執行的類型。因此,處理器1910在共處理器匯流排或其它互連上發出這些共處理器指令(或代表共處理器指令的控制信號)給共處理器1945。共處理器1945接受並執行所接收的共處理器指令。
現請參閱圖20,方塊圖中顯示按照本發明實施例之第一更特定的例示性系統2000。如圖20所示,多處理器系統2000係點對點互連系統,且包括經由點對點互連2050而耦接的第一處理器2070與第二處理器2080。每一個處理器2070與2080可以是某種型式的處理器1800。 在本發明的一實施例中,處理器2070與2080分別是處理器1910與1915,而共處理器2038係共處理器1945。在另一實施例中,處理器2070與2080係分別是處理器1910與共處理器1945。
所顯示的處理器2070與2080分別包括整合式記憶體控制器(IMC)單元2072與2082。處理器2070也包括成為其一部分的匯流排控制器單元點對點(P-P)介面2076與2078;同樣地,第二處理器2080包括P-P介面2086與2088。處理器2070、2080可使用P-P介面電路2078與2088經由點對點(P-P)介面2050交換資料。如圖20所示,IMC 2072與2082將處理器耦接至各自的記憶體,即記憶體2032與記憶體2034,其為主記憶體的一部分,局部附接於各自的處理器。
每一個處理器2070與2080使用點對點介面電路2076,2094,2086,2098經由個別的點對點(P-P)介面2052,2054與晶片組2090交換資訊。晶片組2090可經由高性能介面2039與共處理器2038選擇性地交換資訊。在一實施例中,共處理器2038係特殊用途處理器,諸如,例如高產出MIC處理器、網路或通信處理器、壓縮引擎、繪圖處理器、GPGPU、內嵌式處理器、諸如此類。
共有快取(未顯示)可包括在處理器內或兩處理器的外部,但經由P-P互連與處理器連接,以致於如果處理器被置入低電力模式,任一或兩處理器的本地快取資訊可儲存在共有快取中。
晶片組2090可經由介面2096耦接至第一匯流排2016。在一實施例中,第一匯流排2016可以是周邊組件互連(PCI)匯流排,或諸如PCI快捷匯流排或其它第三代I/O互連匯流排等的匯流排,雖然本發明的範圍不限於此。
如圖20所示,各種的I/O裝置2014可耦接至第一匯流排2016,加之匯流排電橋2018將第一匯流排2016耦接至第二匯流排2020。在一實施例中,一或多個附加的處理器2015,諸如共處理器、高產出MIC處理器、GPGPU、加速器(諸如,例如繪圖加速器或數位信號處理(DSP)單元)、現場可程式閘陣列、或任何其它的處理器被耦接至第一匯流排2016。在一實施例中,第二匯流排2020可以是低接腳數(LPC)匯流排。在一實施例中,各種的裝置可耦接至第二匯流排2020,包括例如鍵盤及/或滑鼠2022、通信裝置2027、及儲存單元2028,諸如磁碟機或包括有指令/碼及資料2030的其它大量儲存裝置。此外,音頻I/O 2024可耦接至第二匯流排2020。須注意,其它的架構也都可行。例如,系統可實施多點分岐匯流排或其它架構來取代圖20的點對點架構。
現請參閱圖21,顯示按照本發明之實施例之第二更特定例示性系統2100的方塊圖。與圖20與21中類似的元件具有相同的參考數字,且為了避免模糊了圖21的其它態樣,圖21省略了圖20中的某些態樣。
圖21說明處理器2070、2080可分別包括整合式記憶 體與I/O控制邏輯(“CL”)2072與2082。因此,CL 2072、2082包括整合式記憶體控制器單元且包括I/O控制邏輯。圖21說明不僅記憶體2032、2034耦接至CL 2072、2082,且I/O裝置2114也耦接至控制邏輯2072、2082。舊的I/O裝置2115耦接至晶片組2090。
現請參閱圖22,圖中顯示按照本發明實施例之晶片上系統(SoC)2200的方塊圖。與圖18中類似的元件具有相同的參考數字。此外,虛線框係更先進之SoC上選用的特徵。在圖22中,互連單元2202耦接至:應用程式處理器2210,其包括一組一或多個核心202A-N及共用的快取單元1806;系統代理單元1810;匯流排控制器單元1816;整合式記憶體控制器單元1814;一組一或多個共處理器2220,其可包括整合式繪圖邏輯、影像處理器、聲音處理器、及視訊處理器;靜態隨機存取記憶體(SRAM)單元2230;直接記憶體存取(DMA)單元2232;及用於耦接至一或多個外接顯示器的顯示單元2240。在一實施例中,共處理器2220包括特殊用途處理器,諸如,例如網路或通信處理器、壓縮引擎、GPGPU、高產出MIC處理器、內嵌式處理器、諸如此類。
本文所揭示之機制的實施例可在硬體、軟體、韌體、或這些實施方法的組合中實施。本發明的實施例可實施為可在可程式系統上執行的電腦程式或程式碼,該可程式系統包含至少一個處理器、儲存系統(包括揮發與非揮發記憶體及/或儲存元件)、至少一個輸入裝置、及至少一個輸 出裝置。
程式碼,諸如圖20中說明的碼2030,可應用於用以實施本文所描述之功能並產生輸出資訊的輸入指令。輸出資訊可按習知的方式應用於一或多個輸出裝置。基於此應用之目的,處理系統包括具有處理器的任何系統,諸如,例如數位信號處理器(DSP)、微控制器、特殊應用積體電路(ASIC)、或微處理器。
程式碼可在高階程序或物件導向程式語言中實施,用以與處理系統通信。如有需要,程式碼也可在組合或機器語言中實施。事實上,本文所描述的機制並非受限於任何特定的程式語言範圍。無論如何,該語言可以是編譯或解譯的語言。
至少一實施例的一或多個態樣可藉由儲存在機器可讀取媒體上的代表性指令來實施,這些指令代表處理器內的各種邏輯,當被機器讀取時,致使機器製造邏輯以實施本文所描述的技術。這些代表是所謂的“IP碼”,可儲存在實體的機器可讀取媒體上,並供應給各不同的客戶或製造設備以載入到實際製造邏輯或處理器的製造機具。
此機器可讀取媒體包括但不限於藉由機器或裝置所製造或形成之物件的非暫時性實體配置,包括諸如硬碟的儲存媒體,任何其它類型的碟片,包括軟碟、光碟、唯讀光碟(CD-ROM)、可複寫光碟(CD-RW)、及磁光碟;半導體裝置,諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM),諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體 (SRAM)、可抹除可程式唯讀記憶體(EPROM)、快閃記憶體、電氣可抹除可程式唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁或光卡、或任何其它類型適合儲存電子指令的媒體。
因此,本發明之實施例也包括包含有指令或包含有設計資料之非暫時性實體的機器可讀取媒體,諸如硬體描述語言(Hardware Description Language;HDL),其定義結構、電路、設備、處理器及/或本文所描述的系統特徵。這些實施例也可稱為程式產品。
仿真(包括二進位轉換、碼漸變等)
在某些情況中,指令轉換器用來將指令從源指令集轉換成目標指令集。例如,指令轉換器可轉譯(例如,使用靜態二進制轉譯、包括動態編譯的動態二進制轉譯)、漸變、仿真、或者是將指令轉換成可被核心處理之一或多種其它指令的其它方法。指令轉換器可在軟體、硬體、韌體、或以上這些的組合中實施。指令轉換器可在處理器上、處理器外、或部分在處理器上而部分在處理器外。
圖23的方塊圖係按照本發明之實施例,使用軟體指令轉換器將源指令集中的二進制指令轉換成目標指令集的二進制指令之對照。雖然指令轉換器也可以替代地在軟體、韌體、硬體、或以上這些的各種組合中實施,但在說明的實施例中,指令轉換器係軟體指令轉換器。圖23顯示高階語言2302的程式可使用x86編譯器2304編譯,以產 生可被具有至少一個x86指令集核心2316之處理器原生地執行的x86二進制碼2306。具有至少一個x86指令集核心2316的處理器代表可實質地實施與具有至少一個x86指令集核心之Intel處理器相同功能的任何處理器,其可藉由相容地執行或以其它方式處理(1)Intel x86指令集核心之實質部分的指令集,或(2)為了獲致與如同具有至少一個x86指令集核心之Intel處理器實質相同之結果,而以在具有至少一個x86指令集核心之Intel處理器上執行為目標之應用程式的目的碼版本或其它軟體。x86編譯器2304代表一編譯器,無論有或無額外的鏈結處理,其可操作以產生可在具有至少一個x86指令集核心2316之處理器上執行的x86二進制碼2306(例如目標碼)。同樣地,圖23顯示高階語言2302的程式可使用替代的指令集編譯器2308編譯,以產生可被不具有至少一個x86指令集核心之處理器2314(例如,具有執行MIPS Technologies of Sunnyvale,CA之MIPS指令集及/或ARM Holdings of Sunnyvale,CA之ARM指令集)原生地執行的替代指令集二進制碼2310。指令轉換器2312被用來將x86二進制碼2306轉換成可被無x86指令集核心之處理器2314原生地執行的碼。此經轉換的碼不太可能與替代指令集二進制碼2310相同,原因是此指令轉換器的能力很難做到;不過,經轉換的碼將可完成一般的操作,及從替代指令集整理指令。因此,指令轉換器2312代表軟體、硬體、韌體、或它們的組合,經由仿真、模擬、或任何其它處理,允許 不具有x86指令集處理器或核心的處理器或其它電子裝置執行x86二進制碼2306。
在以上的描述中,基於解釋之目的,為了提供對本發明之實施例徹底的瞭解,陳述了諸多的特定細節。不過,熟悉此方面技術之人士會明瞭,沒有某些此等特定的細節,一或多個其它的實施例照樣可實行。所描述的特定實施例並非對本發明限制,而是說明本發明。本發明的範圍並非由以上所提供的特例決定,而僅是由以下的申請專利範圍來決定。在其它例中,為避免模糊了對描述的瞭解,眾所習知的電路、結構、裝置、及操作已用方塊圖之形式或無細節的顯示。
熟悉此方面技術之人士亦可明瞭,可對本文所揭示的實施例做修改,諸如,例如對實施例之組件的組態、形式、功能、及操作與使用的方式做修改。所有與圖式中之說明及說明書中之描述相等的關係都包括在本發明的實施例內。為簡單且清楚的說明,圖中所說明的元件不必然按比例繪製。例如,為了清晰,某些元件的尺寸相對於其它元件被誇大。在各圖中,使用箭頭來顯示耦接及/或連接。
已描述了各種不同的操作與方法。某些方法已用流程圖描述了基本形式,但操作可選擇性地加入及/或從該等方法中移除。此外,已按照例示實施例描述了操作之特定的順序,但須瞭解,該特定順序係例示性。另些實施例可按不同的順序、結合某些操作、重疊某些操作等選擇性地實施該等操作。
某些操作可藉由硬體組件實施,或具體化於機器可執行或電路可執行的指令,其可用來致使或至少導致電路或硬體以實施操作的指令程式化。電路可包括通用或特殊用途處理器,或邏輯電路,以上只是舉幾個例子。操作也可藉由硬體與軟體的組合選擇性地實施。執行單元及/或處理器可包括指定或特定的電路或其它邏輯回應指令、微指令、或源自於機器指令的一或多個控制信號而實施某些操作。
須瞭解,本說明書從頭到尾例如參考“一實施例”、“實施例”、“一或多個實施例”、“某些實施例”意指可能包括在本發明之實作中的特定特徵。同樣地,須瞭解,基於使本揭示順暢及有助於瞭解各不同發明態樣之目的,所描述的各種不同特徵有時可群組在單個實施例、圖、或關於它的描述中。不過,不能將所揭示的此方法解釋成反映本發明需要比每一申請專利範圍所明確敍述之更多特徵的意圖。反之,如以下申請專利範圍所反映,本發明之態樣在於比單一揭示之實施例的所有特徵少。因此,接在實施方式之後的申請專利範圍特此明確地併入此實施方式,且每一申請項就其本身來說都是本發明的獨立實施例。
101‧‧‧輸入暫存器
102‧‧‧輸入暫存器
103‧‧‧結果暫存器
410‧‧‧控制器
411‧‧‧多工器
412‧‧‧解多工器
413‧‧‧左索引暫存器
414‧‧‧比較器主幹
415‧‧‧右索引暫存器
416‧‧‧輸出暫存器
510‧‧‧暫存器
511‧‧‧暫存器
513‧‧‧AND閘
514‧‧‧控制器
515‧‧‧多工器
516‧‧‧多工器
517‧‧‧碼段
518‧‧‧碼段
519‧‧‧碼段
521‧‧‧解多工器
520‧‧‧暫存器
522‧‧‧遮罩層
700‧‧‧通用處理器核心
703‧‧‧提取單元
704‧‧‧解碼單元
705‧‧‧排程器單元
706‧‧‧執行單元
707‧‧‧止用單元
708‧‧‧微碼
800‧‧‧處理器
804‧‧‧解碼單元
806‧‧‧向量執行單元
850‧‧‧向量暫存器
852‧‧‧置換指令
853‧‧‧被解碼的置換指令
854‧‧‧向量衝突指令
855‧‧‧被解碼的向量衝突指令
856‧‧‧置換指令執行邏輯
858‧‧‧向量衝突指令執行邏輯
860‧‧‧全連接互連
964‧‧‧源向量
965‧‧‧結果向量
1006‧‧‧向量執行單元
1060‧‧‧全連接互連
1064‧‧‧源向量
1066‧‧‧第二結果向量
1067‧‧‧第一結果向量
1068‧‧‧互連輸入
1056‧‧‧置換指令執行邏輯
1058‧‧‧向量衝突指令執行邏輯
1072‧‧‧P個互連輸出
1074‧‧‧分支
1160‧‧‧全連接非阻塞式互連
1168‧‧‧互連輸入
1172‧‧‧互連輸出
1176‧‧‧輸入分配線
1178‧‧‧搭接線
1256‧‧‧置換指令執行邏輯
1258‧‧‧向量衝突指令執行邏輯
1260‧‧‧全連接互連
1264‧‧‧源向量
1266‧‧‧第一結果向量
1267‧‧‧第二結果向量
1268‧‧‧互連輸入
1272‧‧‧互連輸出
1276‧‧‧輸入分配線
1274‧‧‧分支
1278‧‧‧搭接線
1380‧‧‧M位元比較器
1368‧‧‧互連輸出
1356‧‧‧4:1M位元多工器
1378‧‧‧搭接線
1381‧‧‧本地路由線
1382‧‧‧本地搭接線
1456‧‧‧置換指令執行邏輯
1458‧‧‧向量衝突指令執行邏輯
1460‧‧‧全連接互連
1464‧‧‧源向量
1466‧‧‧第一結果向量
1467‧‧‧第二結果向量
1472‧‧‧互連輸出
1474‧‧‧分支
1476‧‧‧輸入分配線
1478‧‧‧搭接線
1600‧‧‧處理器管線
1602‧‧‧提取階段
1604‧‧‧長度解碼階段
1606‧‧‧解碼階段
1608‧‧‧配置階段
1610‧‧‧更名階段
1612‧‧‧排程階段
1614‧‧‧暫存器讀取/記憶體讀取階段
1616‧‧‧執行階段
1618‧‧‧寫回/記憶體寫入階段
1620‧‧‧異常處置階段
1624‧‧‧確認階段
1690‧‧‧處理器核心
1630‧‧‧前端單元
1650‧‧‧執行引擎單元
1670‧‧‧記憶體單元
1632‧‧‧分支預測單元
1634‧‧‧指令快取單元
1636‧‧‧指令轉譯後備緩衝區(TLB)
1638‧‧‧指令提取單元
1640‧‧‧解碼單元
1652‧‧‧更名/分配器單元
1654‧‧‧止用單元
1656‧‧‧排程器單元
1658‧‧‧實體暫存器檔案單元
1660‧‧‧執行叢集
1662‧‧‧執行單元
1664‧‧‧記憶體存取單元
1670‧‧‧記憶體單元
1672‧‧‧資料TLB單元
1674‧‧‧資料快取單元
1676‧‧‧第二階(L2)快取單元
1700‧‧‧指令解碼器
1702‧‧‧環狀網路
1704‧‧‧第二階(L2)快取記憶體的局部子集
1706‧‧‧L1快取記憶體
1708‧‧‧純量單元
1710‧‧‧向量單元
1712‧‧‧純量暫存器
1714‧‧‧向量暫存器
1706‧‧‧L1資料快取記憶體
1728‧‧‧向量處理單元
1720‧‧‧拌和單元
1722‧‧‧數值轉換單元
1724‧‧‧複製單元
1726‧‧‧寫入遮罩暫存器
1800‧‧‧處理器
1808‧‧‧特殊用途邏輯
1802‧‧‧核心
1804‧‧‧整合式記憶體控制器單元
1806‧‧‧共用快取單元
1810‧‧‧系統代理單元
1814‧‧‧整合式記憶體控制器單元
1808‧‧‧整合式繪圖邏輯
1812‧‧‧環形基互連單元
1990‧‧‧系統
1910‧‧‧處理器
1915‧‧‧處理器
1920‧‧‧控制器集線器
1990‧‧‧繪圖記憶體控制器集線器
1950‧‧‧輸入/輸出集線器
1940‧‧‧記憶體
1945‧‧‧共處理器
1960‧‧‧輸入/輸出裝置
2000‧‧‧多處理器系統
2050‧‧‧點對點互連
2070‧‧‧第一處理器
2080‧‧‧第二處理器
2038‧‧‧共處理器
2072‧‧‧整合式記憶體控制器
2082‧‧‧整合式記憶體控制器
2032‧‧‧記憶體
2034‧‧‧記憶體
2076‧‧‧點對點介面電路
2094‧‧‧點對點介面電路
2086‧‧‧點對點介面電路
2098‧‧‧點對點介面電路
2090‧‧‧晶片組
2052‧‧‧點對點介面
2054‧‧‧點對點介面
2039‧‧‧高性能介面
2096‧‧‧介面
2016‧‧‧第一匯流排
2014‧‧‧I/O裝置
2018‧‧‧匯流排電橋
2020‧‧‧第二匯流排
2015‧‧‧附加的處理器
2022‧‧‧鍵盤/滑鼠
2027‧‧‧通信裝置
2028‧‧‧儲存單元
2030‧‧‧指令/碼及資料
2024‧‧‧音頻I/O
2114‧‧‧輸入/輸出裝置
2115‧‧‧舊有I/O
2200‧‧‧晶片上系統
2202‧‧‧互連單元
2219‧‧‧應用程式處理器
202‧‧‧核心
2220‧‧‧共處理器
2230‧‧‧靜態隨機存取記憶體單元
2232‧‧‧直接記憶體存取單元
2240‧‧‧顯示單元
2302‧‧‧高階語言
2304‧‧‧x86編譯器
2316‧‧‧x86指令集核心
2306‧‧‧x86二進制碼
2314‧‧‧無x86指令集核心之處理器
2308‧‧‧替代的指令集編譯器
2310‧‧‧替代指令集二進制碼
2312‧‧‧指令轉換器
本發明藉由例子來說明且不限於附圖中的各圖,其中,相同的參考編號指示類似的元件,且其中:圖1A、1B比較純量對向量之處理; 圖2顯示按照實施例的方法,此方法可實施設計用來偵測向量衝突的指令;圖3顯示表現圖2之方法之實施例的虛擬碼;圖4A、B關於向量衝突指令的第一實施例;圖5A、B(習知技術)關於vptest指令;圖6A、B關於vpand指令;圖7顯示處理器核心實施例;圖8顯示具有向量執行單元之處理器之例示實施例的方塊圖,其包括共享全連接互連的置換指令執行邏輯與向量衝突指令執行邏輯;圖9係向量置換操作之例示實施例的方塊圖;圖10係向量執行單元之例示實施例的方塊圖,其包括共享全連接互連的置換指令執行邏輯與向量衝突指令執行邏輯;圖11係全連接非阻塞式互連之例示實施例的電路方塊圖;圖12係共享全連接互連之4資料元件置換指令執行邏輯與4元件向量衝突指令執行邏輯之例示實施例的電路方塊圖;圖13之電路方塊圖顯示一組4個M位元比較器與特定互連輸出耦接之例示實施例的進一步細節;圖14係共享全連接互連之8資料元件置換指令執行邏輯與8資料元件向量衝突指令執行邏輯之詳細例示實施例的方塊圖; 圖15係置換指令與向量衝突指令共享全連接互連之方法的例示實施例;圖16A的方塊圖說明按照本發明實施例之例示性順序管線與例示性暫存器更名、亂序發出/執行管線;圖16B的方塊圖說明按照本發明實施例之順序架構核心的例示性實施例,與要被包括在處理器中的例示性暫存器更名、亂序發出/執行架構核心;圖17A的方塊圖係按照本發明實施例之單處理器核心,連同其連接到晶粒上的互連網路及其第二階(L2)快取的局部子集;圖17B係按照本發明實施例之圖17A中處理器核心的部分展開圖;圖18係按照本發明實施例之處理器的方塊圖,其可多於一個核心,具有整合式記憶體控制器,以及具有整合式繪圖;圖19顯示按照本發明一實施例之系統的方塊圖;圖20顯示按照本發明實施例之第一更特定例示性系統的方塊圖;圖21顯示按照本發明實施例之第二更特定例示性系統的方塊圖;圖22顯示按照本發明實施例之晶片上系統(SoC)的方塊圖;圖23的方塊圖係按照本發明之實施例,使用軟體指令轉換器將源指令集中的二進制指令轉換成目標指令集的 二進制指令之對照。
800‧‧‧處理器
804‧‧‧解碼單元
806‧‧‧向量執行單元
850‧‧‧向量暫存器
852‧‧‧置換指令
853‧‧‧被解碼的置換指令
854‧‧‧向量衝突指令
855‧‧‧被解碼的向量衝突指令
856‧‧‧置換指令執行邏輯
858‧‧‧向量衝突指令執行邏輯
860‧‧‧全連接互連

Claims (22)

  1. 一種設備,包含:解碼單元,用來解碼置換指令與向量衝突指令;以及向量執行單元,與該解碼單元耦接,且包括:全連接互連,具有至少4個輸入來接收至少一個源向量之至少4個對應的資料元件,以及至少4個輸出,其中,該至少4個輸入的每一個皆與該至少4個輸出耦接;與該至少4個輸出耦接的置換指令執行邏輯,且可操作來回應該置換指令而儲存第一向量結果;以及與該至少4個輸出耦接的向量衝突指令執行邏輯,且可操作來回應該向量衝突指令而將第二向量結果儲存於目的儲存位置。
  2. 如申請專利範圍第1項之設備,其中,該全連接互連係由該置換指令執行邏輯與該向量衝突指令執行邏輯所共享,且其中該共享的全連接互連將資料元件連接到該置換指令執行邏輯與該向量衝突指令執行邏輯兩者。
  3. 如申請專利範圍第1項之設備,其中,該全連接互連包含無阻塞互連。
  4. 如申請專利範圍第1項之設備,其中,該全連接互連包含交叉開關。
  5. 如申請專利範圍第1項之設備,其中,該置換指令執行邏輯包含位在該至少4個輸出之每一個的邏輯,用來選擇該至少4個資料元件之任一,且其中該向量衝突指令執行邏輯包含位在該至少4個輸出之每一個的邏輯,用來 將該至少4個資料元件其中不同之對應的資料元件和所有的該至少4個資料元件做比較。
  6. 如申請專利範圍第5項之設備,其中,該至少4個資料元件包含N個資料元件,其中,該至少4個輸出包含N個輸出,其中,該資料元件每一個皆包含M個位元,其中,該置換指令執行邏輯包含位在該N個輸出之每一個的N:1選擇器,用來選擇該N個資料元件的其中任一,且其中該向量衝突指令執行邏輯包含位在該N個輸出之每一個的N,M位元比較器,用來將該N個資料元件其中之一不同之對應的M位元和所有的N個資料元件做比較。
  7. 如申請專利範圍第6項之設備,其中,N為至少8。
  8. 如申請專利範圍第6項之設備,其中,N為至少16且M為32與64其中之一。
  9. 如申請專利範圍第1項之設備,其中,該全連接互連係該向量執行單元的唯一全連接互連,其具有至少4個輸入全連接到至少4個輸出。
  10. 如申請專利範圍第1項之設備,其中,該全連接互連的每一個該輸出皆分支到該置換指令執行邏輯與該向量衝突指令執行邏輯。
  11. 如申請專利範圍第1項之設備,其中,該設備包含通用微處理器,且其中該目的儲存位置包含架構可見的向量暫存器。
  12. 一種方法,包含:接收指示包括有至少4個資料元件之至少第一源向量 及指示第一目的儲存位置的置換指令;經由執行該置換指令之向量執行單元的全連接互連而傳送該第一源向量的該至少4個資料元件;接收指示包括有至少4個資料元件之至少第二源向量及指示第二目的儲存位置的向量衝突指令;以及經由該向量執行單元的該全連接互連傳送該第二源向量的該至少4個資料元件。
  13. 如申請專利範圍第12項之方法,其中,經由該全連接互連傳送該第二源向量之該至少4個資料元件包含經由無阻塞的全連接互連傳送該至少4個資料元件。
  14. 如申請專利範圍第12項之方法,其中,經由該全連接互連傳送該第二源向量之該至少4個資料元件包含經由交叉開關傳送該至少4個資料元件。
  15. 如申請專利範圍第12項之方法,其中,經由該全連接互連傳送該第二源向量的該至少4個資料元件包含經由該全連接互連傳送至少8個資料元件。
  16. 如申請專利範圍第12項之方法,進一步包含:回應該置換指令,將第一結果向量儲存進該第一目的儲存位置,該第一結果向量包括第一複數個資料元件,該第一複數個該資料元件之每一個皆能夠成為該第一源向量之該至少4個資料元件的任何一個;以及回應該向量衝突指令,將第二結果向量儲存進該第二目的儲存位置,該第二結果向量包括第二複數個資料元件,該第二複數個該資料元件之每一個包括該第二源向量的對應資 料元件與該第二源向量之其它資料元件的比較結果。
  17. 一種系統,包含:互連;與該互連耦接的處理器,該處理器包括執行單元,該執行單元包括:全連接互連,具有至少4個輸入來接收至少一個源向量之至少4個對應的資料元件,以及至少4個輸出,其中,該至少4個輸入的每一個皆與該至少4個輸出耦接;與該至少4個輸出耦接的置換指令執行邏輯,且可操作來回應置換指令而儲存第一向量結果;以及與該至少4個輸出耦接的向量衝突指令執行邏輯,且可操作來回應該向量衝突指令而將第二向量結果儲存進目的儲存位置。與該互連耦接的動態隨機存取記憶體(DRAM)。
  18. 如申請專利範圍第17項之系統,其中,該全連接互連係由該置換指令執行邏輯與該向量衝突指令執行邏輯所共享,並從該全連接互連接收資料。
  19. 如申請專利範圍第17項之系統,其中,該全連接互連包含無阻塞互連。
  20. 一種系統,包含:互連;與該互連耦接的處理器,該處理器包括執行單元,該執行單元包括:全連接互連,具有至少4個輸入來接收至少一個源向 量之至少4個對應的資料元件,以及至少4個輸出,其中,該至少4個輸入的每一個皆與該至少4個輸出耦接;與該至少4個輸出耦接的置換指令執行邏輯,且可操作來回應置換指令而儲存第一向量結果;以及與該至少4個輸出耦接的向量衝突指令執行邏輯,且可操作來回應該向量衝突指令而將第二向量結果儲存進目的儲存位置。與該互連耦接的動態隨機存取記憶體(DRAM)。
  21. 如申請專利範圍第20項之系統,其中,該全連接互連係由該置換指令執行邏輯與該向量衝突指令執行邏輯所共享,並從該全連接互連接收資料。
  22. 如申請專利範圍第20項之系統,其中,該全連接互連包含無阻塞互連。
TW101147488A 2011-12-29 2012-12-14 具有為向量衝突指令與置換指令所共享的全連接互連的處理器 TWI525537B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/067982 WO2013101132A1 (en) 2011-12-29 2011-12-29 Processors having fully-connected interconnects shared by vector conflict instructions and permute instructions

Publications (2)

Publication Number Publication Date
TW201346733A true TW201346733A (zh) 2013-11-16
TWI525537B TWI525537B (zh) 2016-03-11

Family

ID=48698366

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101147488A TWI525537B (zh) 2011-12-29 2012-12-14 具有為向量衝突指令與置換指令所共享的全連接互連的處理器

Country Status (5)

Country Link
US (1) US10678541B2 (zh)
EP (1) EP2798504A4 (zh)
CN (1) CN104025067B (zh)
TW (1) TWI525537B (zh)
WO (1) WO2013101132A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI710956B (zh) * 2015-07-31 2020-11-21 英商Arm股份有限公司 用於處理資料之設備及方法和電腦程式

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111831335A (zh) * 2011-12-23 2020-10-27 英特尔公司 经改进的插入指令的装置和方法
WO2013101132A1 (en) 2011-12-29 2013-07-04 Intel Corporation Processors having fully-connected interconnects shared by vector conflict instructions and permute instructions
US9665368B2 (en) * 2012-09-28 2017-05-30 Intel Corporation Systems, apparatuses, and methods for performing conflict detection and broadcasting contents of a register to data element positions of another register
US10545757B2 (en) * 2012-12-28 2020-01-28 Intel Corporation Instruction for determining equality of all packed data elements in a source operand
US9292298B2 (en) * 2013-07-08 2016-03-22 Arm Limited Data processing apparatus having SIMD processing circuitry
US9606803B2 (en) * 2013-07-15 2017-03-28 Texas Instruments Incorporated Highly integrated scalable, flexible DSP megamodule architecture
US9904548B2 (en) * 2014-12-22 2018-02-27 Intel Corporation Instruction and logic to perform a centrifuge operation
US9785437B2 (en) * 2014-12-23 2017-10-10 Intel Corporation Method and apparatus for performing a vector bit reversal and crossing
US9891913B2 (en) * 2014-12-23 2018-02-13 Intel Corporation Method and apparatus for performing conflict detection using vector comparison operations
US10203955B2 (en) * 2014-12-31 2019-02-12 Intel Corporation Methods, apparatus, instructions and logic to provide vector packed tuple cross-comparison functionality
US10423411B2 (en) 2015-09-26 2019-09-24 Intel Corporation Data element comparison processors, methods, systems, and instructions
EP3428792B1 (en) * 2017-07-10 2022-05-04 Arm Ltd Testing bit values inside vector elements
US11163564B1 (en) * 2018-10-08 2021-11-02 Verisilicon Microelectronics (Shanghai) Co., Ltd. Vector compare and store instruction that stores index values to memory

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6178500B1 (en) * 1998-06-25 2001-01-23 International Business Machines Corporation Vector packing and saturation detection in the vector permute unit
WO2000022511A1 (en) * 1998-10-09 2000-04-20 Koninklijke Philips Electronics N.V. Vector data processor with conditional instructions
US6557096B1 (en) * 1999-10-25 2003-04-29 Intel Corporation Processors with data typer and aligner selectively coupling data bits of data buses to adder and multiplier functional blocks to execute instructions with flexible data types
US7155601B2 (en) * 2001-02-14 2006-12-26 Intel Corporation Multi-element operand sub-portion shuffle instruction execution
US6922716B2 (en) * 2001-07-13 2005-07-26 Motorola, Inc. Method and apparatus for vector processing
US7305540B1 (en) * 2001-12-31 2007-12-04 Apple Inc. Method and apparatus for data processing
US8510534B2 (en) 2002-05-24 2013-08-13 St-Ericsson Sa Scalar/vector processor that includes a functional unit with a vector section and a scalar section
US7051186B2 (en) 2002-08-29 2006-05-23 International Business Machines Corporation Selective bypassing of a multi-port register file
US7933405B2 (en) 2005-04-08 2011-04-26 Icera Inc. Data access and permute unit
US8060728B2 (en) * 2007-05-14 2011-11-15 Apple Inc. Generating stop indicators during vector processing
US20090150648A1 (en) * 2007-12-06 2009-06-11 Eric Oliver Mejdrich Vector Permute and Vector Register File Write Mask Instruction Variant State Extension for RISC Length Vector Instructions
US9513905B2 (en) * 2008-03-28 2016-12-06 Intel Corporation Vector instructions to enable efficient synchronization and parallel reduction operations
CN101510082A (zh) * 2009-03-19 2009-08-19 大连理工大学 Epa分布式控制系统功能块程序建模及优化方法
US8972698B2 (en) * 2010-12-22 2015-03-03 Intel Corporation Vector conflict instructions
WO2013101132A1 (en) 2011-12-29 2013-07-04 Intel Corporation Processors having fully-connected interconnects shared by vector conflict instructions and permute instructions

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI710956B (zh) * 2015-07-31 2020-11-21 英商Arm股份有限公司 用於處理資料之設備及方法和電腦程式

Also Published As

Publication number Publication date
EP2798504A4 (en) 2016-07-27
EP2798504A1 (en) 2014-11-05
TWI525537B (zh) 2016-03-11
WO2013101132A1 (en) 2013-07-04
CN104025067B (zh) 2017-12-26
US10678541B2 (en) 2020-06-09
US20140181466A1 (en) 2014-06-26
CN104025067A (zh) 2014-09-03

Similar Documents

Publication Publication Date Title
TWI525537B (zh) 具有為向量衝突指令與置換指令所共享的全連接互連的處理器
CN109062608B (zh) 用于独立数据上递归计算的向量化的读和写掩码更新指令
JP6340097B2 (ja) リードマスク及びライトマスクにより制御されるベクトル移動命令
JP6466388B2 (ja) 方法及び装置
KR101964350B1 (ko) 다중 레지스터 메모리 액세스 명령어들, 프로세서들, 방법들 및 시스템들
TWI512531B (zh) 用以處理blake安全雜湊演算法的方法、設備、系統及製品
US20110231616A1 (en) Data processing method and system
US9513908B2 (en) Streaming memory transpose operations
CN107924307B (zh) 按索引分散至寄存器以及数据元素重布置处理器、方法、系统和指令
JP6673574B2 (ja) ベクトルビットシャッフルを実行するための方法および装置
KR101780303B1 (ko) 시스템 호출을 위한 강건하고 높은 성능의 명령어들
JP2018500658A (ja) インデックスおよび即値を用いてベクトル置換を実行するための方法および装置
JP2018500651A (ja) マスクレジスタとベクトルレジスタとの間で可変に拡張するための方法および装置
JP2017539013A (ja) 競合検出を実行するための方法および装置
JP6807073B2 (ja) 高速ベクトルによる動的なメモリ競合検出
JP2014182796A (ja) 書き込みマスク・レジスタの末尾の最下位マスキング・ビットを判定するためのシステム、装置、および方法
JP2018500652A (ja) マスクをマスク値のベクトルに拡張するための方法および装置
JP2018500666A (ja) ベクトルビットギャザーを実行するための方法および装置
US20230153114A1 (en) Data processing system having distrubuted registers
TWI844900B (zh) 原子式儲存至寬於原生支援資料寬度之記憶體資料的處理器與系統
JP2018503162A (ja) スピンループジャンプを実行するための装置および方法