具有由向量沖突指令和置換指令共享的全連接互連的處理器的制造方法
【專利摘要】一種裝置,包括用于解碼置換指令和向量沖突指令的解碼單元。向量執(zhí)行單元耦合于該解碼單元并包括全連接互連。該全連接互連具有用于接收至少一個源向量的至少四個相應(yīng)數(shù)據(jù)元素的至少四個輸入。該全連接互連具有至少4個輸出。該至少四個輸入中的每一個與該至少四個輸出中的每一個耦合。該執(zhí)行單元還包括置換指令執(zhí)行邏輯,其與所述至少四個輸出相耦合并且能夠操作以響應(yīng)于所述置換指令而存儲第一向量結(jié)果。該執(zhí)行單元還包括向量沖突指令執(zhí)行邏輯,其與所述至少四個輸出相耦合并且能夠操作以響應(yīng)于所述向量沖突指令而將第二向量結(jié)果存儲在目的地存儲位置中。
【專利說明】具有由向量沖突指令和置換指令共享的全連接互連的處理器
【技術(shù)領(lǐng)域】
[0001]本發(fā)明的【技術(shù)領(lǐng)域】一般地涉及計算科學(xué),尤其涉及處理器的執(zhí)行邏輯。
【背景技術(shù)】
[0002]兩種類型的處理器架構(gòu)在計算機(jī)科學(xué)領(lǐng)域中被廣泛認(rèn)可:“標(biāo)量”和“向量”。標(biāo)量處理器被設(shè)計成執(zhí)行對單個數(shù)據(jù)集進(jìn)行操作的指令,而向量處理器被設(shè)計成執(zhí)行對多個數(shù)據(jù)集進(jìn)行操作的指令。圖1A和圖1B呈現(xiàn)比較性示例,該比較性示例展示了標(biāo)量處理器與向量處理器之間的基本差異。
[0003]圖1A示出標(biāo)量AND(與)指令的示例,其中單個操作數(shù)集A和B被“與”在一起以產(chǎn)生單數(shù)(或“標(biāo)量”)結(jié)果C( 即,AB = C)。相比之下,圖1B示出向量AND指令的示例,其中兩個操作數(shù)集Α/B和D/E被并行地分別求與以同時產(chǎn)生向量結(jié)果C、F( 即,A.AND.B = C和 D.AND.E = F)。
[0004]如本領(lǐng)域所公知的,通常輸入操作數(shù)和輸出結(jié)果兩者均存儲在專用寄存器中。例如,許多指令將具有兩個輸入操作數(shù)。因此,兩個不同的輸入寄存器將被用于臨時存儲相應(yīng)輸入操作數(shù)。此外,這些相同指令將產(chǎn)生輸出值,該輸出值將被臨時存儲在第三(結(jié)果)寄存器中。在圖1A和圖1B中觀察到相應(yīng)輸入101a,b和102a,b以及結(jié)果寄存器103a,b。值得注意的是,“標(biāo)量”對比“向量”表征是容易辨別的。
[0005]即,觀測到圖1A的標(biāo)量設(shè)計的輸入寄存器IOla和102a僅僅保存標(biāo)量值(分別為A和B)。同樣,還觀測到圖1A的標(biāo)量設(shè)計的結(jié)果寄存器103a僅保存標(biāo)量值(C)。與之形成對比的是,觀察到圖1B的向量系統(tǒng)的輸入寄存器IOlb和102b保存向量(在寄存器IOlb中保存A、D,以及在寄存器102b中保存B、E)。同樣,還觀測到圖1B的向量系統(tǒng)的結(jié)果寄存器103a保存向量值(C,F(xiàn))。根據(jù)術(shù)語學(xué),圖1B的向量系統(tǒng)的寄存器101b、102b和103b中的每一個的內(nèi)容可被全局地稱為“向量”,并且該向量內(nèi)的各個標(biāo)量值中的每一個可被稱為“元素”。因此,例如,觀察到寄存器IOlb存儲“向量”A、D,“向量” A、D由“元素”A和“元素” D組成。
[0006]假定向量操作對應(yīng)于并行執(zhí)行的多個操作的執(zhí)行,那么當(dāng)對輸入向量的元素的一個操作依賴于對相同輸入向量內(nèi)的另一元素執(zhí)行的另一操作時,向量操作上就會出現(xiàn)問題。
[0007]附圖簡述
[0008]在附圖的圖 形中作為示例而非限制地說明了本發(fā)明,其中類似的附圖標(biāo)記指示類似的元件,并且其中:
[0009]圖la、b對比標(biāo)量和向量處理;
[0010]圖2示出根據(jù)一實施例的可與被設(shè)計成檢測向量沖突的指令一起執(zhí)行的方法;[0011 ] 圖3示出圖2的方法的實施例的偽代碼表示;
[0012]圖4a、b涉及向量沖突指令的第一實施例;[0013]圖5a、b (現(xiàn)有技術(shù))涉及vptest指令;
[0014]圖6a、6b 涉及 vpand 指令;
[0015]圖7示出處理器核的實施例。
[0016]圖8是具有向量執(zhí)行單元的處理器的示例實施例的框圖,該向量執(zhí)行單元包括共享全連接互連(full-connected interconnect)的置換指令執(zhí)行邏輯和向量沖突指令執(zhí)行邏輯。
[0017]圖9是向量置換操作的示例實施例的框圖。
[0018]圖10是向量執(zhí)行單元的示例實施例的框圖,該向量執(zhí)行單元包括共享全連接互連的置換指令執(zhí)行邏輯和向量沖突指令執(zhí)行邏輯。
[0019]圖11 是全連接非阻擋互連(fully-connected non-blocking interconnect)的不例實施例的電路框圖。
[0020]圖12是共享全連接互連的4數(shù)據(jù)元素置換指令執(zhí)行邏輯、和4元素向量沖突指令執(zhí)行邏輯的詳細(xì)示例實施例的電路框圖。
[0021]圖13是示出將一組4個M位比較器與給定互連輸出耦合的示例實施例的進(jìn)一步細(xì)節(jié)的電路框圖。
[0022]圖14是共享全連接互連的8數(shù)據(jù)元素置換指令執(zhí)行邏輯、和8數(shù)據(jù)元素向量沖突指令執(zhí)行邏輯的詳細(xì)示例實施例的框圖。
[0023]圖15是為置換指令和向量沖突指令共享全連接互連的方法的示例實施例。
[0024]圖16A是示出根據(jù)本發(fā)明的實施例的示例性有序流水線以及示例性寄存器重命名、無序發(fā)布/執(zhí)行流水線兩者的框圖。
[0025]圖16B是示出根據(jù)本發(fā)明的實施例的要包括在處理器中的有序架構(gòu)核的示例性實施例以及示例性寄存器重命名、無序發(fā)布/執(zhí)行架構(gòu)核兩者的框圖。
[0026]圖17A是根據(jù)本發(fā)明的實施例的單處理器核、連同其與管芯上(on-die)互聯(lián)網(wǎng)絡(luò)的連接及其第二級(L2)高速緩存的本地子集的的框圖。
[0027]圖17B是根據(jù)本發(fā)明的各實施例的圖17A中的處理器核的一部分的展開圖。
[0028]圖18是根據(jù)本發(fā)明的實施例的可具有不止一個核、可具有集成存儲器控制器、并且可具有集成圖形的處理器的框圖。
[0029]圖19示出根據(jù)本發(fā)明的一個實施例的系統(tǒng)的框圖。
[0030]圖20示出根據(jù)本發(fā)明的實施例的第一更具體示例性系統(tǒng)的框圖。
[0031]圖21示出根據(jù)本發(fā)明的實施例的第二更具體的示例性系統(tǒng)的框圖。
[0032]圖22示出根據(jù)本發(fā)明的實施例的片上系統(tǒng)(SoC)的框圖。
[0033]圖23是根據(jù)本發(fā)明的各實施例的對照使用軟件指令轉(zhuǎn)換器將源指令集中的二進(jìn)制指令轉(zhuǎn)換成目標(biāo)指令集中的二進(jìn)制指令的框圖。
【具體實施方式】
[0034]回憶【背景技術(shù)】中提及,當(dāng)對輸入向量元素的一個操作依賴于對相同輸入向量的另一元素執(zhí)行的另一操作時,向量操作上就會出現(xiàn)問題。會出現(xiàn)這種特定問題的實例是使用“收集(gather) ” 和“分散(scatter) ” 指令。
[0035]例如,收集指令通過“收集”由數(shù)據(jù)數(shù)組的索引指定的數(shù)據(jù)值來幫助構(gòu)造用于隨后向量操作的輸入向量。例如,如果數(shù)據(jù)數(shù)組“A”具有100個條目,則具有“gather A[15 ;34 ;66 ;78] ”形式的收集指令將取數(shù)組A的第15、34、66和78索引位置上的數(shù)據(jù)值。所取的數(shù)據(jù)值隨后可被用于形成用于向量操作的輸入向量的數(shù)據(jù)元素?!胺稚ⅰ敝噶羁杀灰暈椤笆占敝噶畹哪嬷噶?。具體地,具有“sc atter A[15 ;34 ;66 ;78] ”形式的分散指令將存儲值(例如,由向量操作所產(chǎn)生的輸出向量的相應(yīng)元素)至數(shù)組A的第15、34、66和78索引位置。
[0036]因此,具有以下形式的指令序列:
[0037]S〈 = gather A [a ;b ;c ;d];
[0038]T< = vector operation on S ;
[0039]scatter (A [a ;b ;c ;d] ;T)
[0040]將:1)從A的a、b、c和d索引位置取數(shù)據(jù)操作數(shù);2)對這些操作數(shù)執(zhí)行向量操作;以及3)將結(jié)果的元素分別存儲在A的a、b、c和d索引位置中。
[0041]在一些情況下,被提供給收集(和分散)指令的索引值集反映向量操作內(nèi)的依賴關(guān)系。例如,具有以下形式的指令序列:
[0042]S〈 = gather A [a ;b ;c ;a];
[0043]T< = vector operation on S ;
[0044]scatter (A [a ;b ;c ;a] ;T)
[0045]可反映對最左邊A[a]值執(zhí)行的向量操作依賴于對最右邊A[a]值執(zhí)行的向量操作的結(jié)果。即,正確的操作對應(yīng)于:I) operation (rightmost A [a]) = >R ;2) oper at ion (R) ?如果沒有采取關(guān)于數(shù)據(jù)依賴關(guān)系的預(yù)防措施,那么可能獲得不正確的結(jié)果。具體地,在該示例中,A [a]的最終結(jié)果將是operation (A [a])而不是opera tion (R)。
[0046]圖2提供當(dāng)在用于向量操作的輸入向量內(nèi)標(biāo)識出依賴關(guān)系時可用于成功地考慮到依賴關(guān)系的方法。具體地,圖2的方法將適當(dāng)?shù)乇苊鈱ο嗤斎胂蛄績?nèi)的相同操作數(shù)(例如,由至少兩個相同值的索引所標(biāo)識)同時執(zhí)行操作。相反,將以循環(huán)序列來分別地執(zhí)行操作,其中針對出現(xiàn)多次的索引值的每個分別實例執(zhí)行每個循環(huán)。
[0047]例如,如果對于輸入向量,相同的索引值出現(xiàn)三次,那么向量操作將被執(zhí)行三次。以此方式,數(shù)據(jù)依賴關(guān)系得到考慮,因為第二操作使用第一操作的結(jié)果作為輸入操作數(shù)并且第三操作使用第二操作的結(jié)果作為輸入操作數(shù)。
[0048]圖3示出圖2的方法的實施例的偽代碼流。圖4a、b至圖6a、b示出附加細(xì)節(jié)以幫助討論圖3的偽代碼流。參照圖2,初始地,標(biāo)識具有依賴關(guān)系的索引(201)。在此,如上所述,具有依賴關(guān)系的索引可對應(yīng)于數(shù)組的相同索引,其中這些相同索引定義相同輸入向量的不同元素。參照圖3,數(shù)組的索引被指定為b = 7,2,7,1,7。如此,存在三個具有依賴關(guān)系的索引,因為最右邊、中間和最左邊索引值各自具有相同的值(7)。另一初始控制向量是elements_l eft_mask (元素_左邊_掩碼)330,其表示b中尚未被用于收集/向量操作/分散過程序列的元素。在流程開始時,elements_left_mask =1111 I,其指示b的所有五個元素均尚未被處理。 [0049]圖3的偽代碼示出vconf I ict (b, b)(向量沖突(b,b))指令300的執(zhí)行提供indices_having_dependency_reIationship (索引 _ 具有 _ 依賴 _ 關(guān)系)數(shù)據(jù)結(jié)構(gòu) 301。圖4A示出vconflict(b,b)指令的方法401,且圖4B示出可被設(shè)計到半導(dǎo)體芯片中以執(zhí)行vconflict (b, b)指令的硬件邏輯設(shè)計。如在圖4A和圖4B所觀察到的,vconflict (b, b)指令將輸入向量的每個元素與另一輸入向量的每個元素相比較并提供每次比較401的結(jié)果。在圖3的偽代碼方法中,vconflict(b, b)指令在對這兩個輸入利用相同向量(b)的情況下來執(zhí)行。
[0050]圖4b的硬件設(shè)計可利用規(guī)定控制器410的操作的微代碼和/或狀態(tài)機(jī)辦法來嘗試,使得復(fù)用器411和分用器412的相應(yīng)信道選擇以正確的一致來操作。具體地,控制器410將左邊的索引寄存器413特定的一個索引值復(fù)用到比較器主干414中。比較器主干414將選擇的索引值與右邊的索引寄存器415中的每個索引值相比較。分用器412將比較器主干414的輸出引導(dǎo)至輸出寄存器416的與左邊的索引寄存器413的所選值對準(zhǔn)的片段。在替換辦法中,比較器主干可具有n*n個比較器使得不需要復(fù)用器、分用器或控制器(即,對于出現(xiàn)在輸出寄存器416中的比較結(jié)果的每個位存在單獨的比較器)。
[0051]參照圖3 的 indices_having_dependency_relationship 數(shù)據(jù)結(jié)構(gòu) 301,注意數(shù)據(jù)結(jié)構(gòu)301的最左邊片段302提供當(dāng)b的最左邊值與b的每個值單獨地比較時的比較結(jié)果。值得注意的是,在片段302中出現(xiàn)五個結(jié)果(對于b的每一個值有一個結(jié)果),且片段302內(nèi)的結(jié)果與b的諸值相應(yīng)地對準(zhǔn)。如此,數(shù)據(jù)結(jié)構(gòu)301的最左邊片段302是“10101”,其示出b的最左邊值與b的最右邊值、b的中間值以及它自己(b的最左邊值)具有依賴關(guān)系。數(shù)據(jù)結(jié)構(gòu)301的片段303對應(yīng)于b的從左邊數(shù)第二個值(2)的比較,且示出該值2除了它自己外在b中沒有依賴關(guān)系(即,片段302是01000)。具有值10101的片段304指示b的中間值(7)與它自己以及b的最左邊值和最右邊值具有依賴關(guān)系。具有值00010的片段305指示b的從右邊數(shù)第二個值只與它自己具有依賴關(guān)系。具有值10101的片段306指示b的最右邊值(7)與b的最左邊值和中間值以及它自己具有依賴關(guān)系。
[0052]返回圖2,一旦具有依賴關(guān)系的索引已被標(biāo)識(例如,如在圖3的indices_having_dependency_relationship數(shù)據(jù)結(jié)構(gòu)301中所表示的),就針對隨后向量操作標(biāo)識非沖突索引集。在圖3的偽代碼示例中,在indices_permitted_for_exe cution(索引_被準(zhǔn)許_用于_執(zhí)行)數(shù)據(jù)結(jié)構(gòu)331中表示非沖突索引集。在此,至少部分地通過利用 indices_having_dependency_reIationship 數(shù)據(jù)結(jié)構(gòu) 301 和 o rder_of_dependency_mask(依賴性_掩碼_的_次序)309執(zhí)行邏輯操作來構(gòu)造in dices_permitted_for_execution 數(shù)據(jù)結(jié)構(gòu) 331。
[0053]order_of_dependency_mask309指明應(yīng)以何種次序來處理具有依賴關(guān)系的索引。在圖3的特定示例中,從右到左對依賴性進(jìn)行排序使得具有依賴關(guān)系的最右邊索引被首先用于向量操作,然后,具有依賴關(guān)系的下一個最右邊索引被用于隨后的向量操作循環(huán),等等。換言之,按從右到左跨過B的次序來為每個向量操作選擇具有依賴關(guān)系的索引。對于目前示例的b = 7,2,7,I, 7的特定值,這對應(yīng)于最右邊的值7被用于第一收集/向量操作/分散迭代、中間值7被用于第二收集/向量操作/分散迭代,以及最左邊值7被用于第三收集/向量操作/分散迭代。
[0054]order_of_dependency_mask 309通過將“ I”置于片段在掩碼309內(nèi)的相應(yīng)位置的“右邊”來反映該次序。即,片段310表示b的最右邊值。利用上述排序規(guī)則(在依賴性序列中右邊的值在左邊的值之前被執(zhí)行),最右邊值將不具有使其延遲用于向量操作的任何依賴性(即使它被包括在依賴性關(guān)系中)(即,它通過第一操作循環(huán)被執(zhí)行)。如此,片段310的值是00000。第二片段311反映了,如果b的從右邊數(shù)第二個值在b內(nèi)具有依賴性,那么該依賴性將是對于b的最右邊值而言的。如此,它的值是00001。第三片段312反映了,如果b的中間值在b內(nèi)具有依賴性,那么該依賴性將針對b的從右邊數(shù)第二個值和/或最右邊值。如此,它的值是00011。第四片段313反映了,如果b的從左邊數(shù)第二個值在b內(nèi)具有依賴性,那么它將針對b的中間值、從右邊數(shù)第二個值和/或最右邊值。如此,它的值是00111。第五片段314反映了,如果b的最左邊值在b內(nèi)具有依賴性,那么它將針對b的從左邊數(shù)第二個值、中間值、從右邊數(shù)第二個值和/或最右邊值。如此,它的值是01111。
[0055]回憶起在圖3的示例中至少部分地通過利用indices_having_dependency_re Iationship數(shù)據(jù)結(jié)構(gòu)301和order_of_dependency_mask309執(zhí)行邏輯操作來構(gòu)造indices_permitted_for_execution 數(shù)據(jù)結(jié)構(gòu) 331。在此,通過執(zhí)行接受 indices_ha ving_dependency_reIationship 數(shù)據(jù)結(jié)構(gòu) 301 和 order_of_dependency_mask 309 作為輸入的vptest指令來構(gòu)造conflicted_out_indices (沖突_出局_索引)數(shù)據(jù)結(jié)構(gòu)308。
[0056]在圖5A和圖5B中分別提供了 Vptest指令的操作的實施例和用于vptest指令的硬件設(shè)計的實施例。在此,參照圖5A,比較兩個輸入向量的相同位置的片段的相同位置的位(501)。標(biāo)識至少一組相同位置的具有相同邏輯值的位的片段(502),以及應(yīng)用掩碼(503)。
[0057]參照圖5b,將第一輸入向量放置在寄存器510中,并將第二輸入向量放置在寄存器511中。利用AND門513將在這兩個向量的其相應(yīng)片段內(nèi)具有相同位置的位對進(jìn)行邏輯與(AND)。如果任何AND門產(chǎn)生1,那么將I登記在輸出520的片段中,該片段對應(yīng)于其位被比較的相同位置的片段。例如,控制器514將導(dǎo)致復(fù)用器515、516選擇片段517和518的位。在此,片段517和518中的每一個對應(yīng)于寄存器510、511內(nèi)其相應(yīng)向量的最左邊片段,因此被置于其相應(yīng)向量內(nèi)的相同位置。通過AND門513將片段517和518的相同位置的位求與。如果任何一對被求與的位中的每一個具有值1,那么I將被記錄在寄存器520的片段519中(經(jīng)由控制器514控制分用器521的信道選擇)。隨后對寄存器520的內(nèi)容應(yīng)用掩碼層522以產(chǎn)生輸出523。
[0058]對于圖3 的特定偽代碼不例,indices_having_dependency_relationship 數(shù)據(jù)結(jié)構(gòu)301被放置在寄存器510中且order_of_dependency_mask309被放置在寄存器511中。用于這些輸入向量的上述圖5B的vptest電路設(shè)計的操作在寄存器520中產(chǎn)生conflicted_out_indices數(shù)據(jù)結(jié)構(gòu)308。conflicted_out_indices數(shù)據(jù)結(jié)構(gòu)308標(biāo)識哪些索引由于b內(nèi)的依賴性而從即將到來的向量操作循環(huán)中沖突出局。如圖3所示,conflicted_out_indices數(shù)據(jù)結(jié)構(gòu)308具有值10100,其指示b的中間和最左邊索引值因為依賴性(其正是b的最右邊索引值)將不在即將到來的向量操作中執(zhí)行。conflicted_out_indices數(shù)據(jù)結(jié)構(gòu) 314 的邏輯逆(! _conf licted_out_indices 數(shù)據(jù)結(jié)構(gòu) 307)隨后對著 elements_left_mask 330被掩碼。在初始迭代中,elements_left_mask是I 1111。如此,寄存器520中的 conflie ted_out_indices 向量作為 indices_permitted_for_execution 向量 331 呈現(xiàn)在輸出寄存器523中。
[0059]返回圖2,隨后對被準(zhǔn)許用于執(zhí)行的索引執(zhí)行向量操作(203)。圖3的偽代碼示例再次指代收集、向量操作、分散指令序列315。如此,圖3示出:i)收集(gather)操作,其選擇A中由indices_permitted_for_execution數(shù)據(jù)結(jié)構(gòu)331標(biāo)識的值;ii)對A的被收集的值執(zhí)行向量操作;以及iii)分散(scatter)操作,其將該向量操作的結(jié)果存儲回在數(shù)據(jù)結(jié)構(gòu)331中標(biāo)識的索引中。該向量操作基本上可以是任何向量操作。[0060]參照圖2,如果b的所有索引已被用于向量操作,那么過程完成(204),否則重新確定具有依賴關(guān)系的索引(201)。在圖3的實施例中,通過將eleme nts_left_mask重新定義為從最新近的收集/向量操作/分散序列中沖突出局的元素來更新elementS_left_mask(332)。在這種情況下,新的eIements_left_mas k 332對應(yīng)于值10 10 0,其指示了因為b的中間值和最左邊值未被用于上一收集/向量操作/分散序列,所以它們?nèi)匀槐弧傲舸碧幚?。因此處理未完成且需要?zhí)行另一迭代。包括在依賴性關(guān)系中的索引值中的第一個索引值(最右側(cè)的索引值)的執(zhí)行導(dǎo)致b的索引值之間的依賴性關(guān)系的改變。具體而言,因為b的最右側(cè)索引值已經(jīng)被用于向量操作,所以使用b的中間索引的向量操作不再需要被延遲。indices_having_dependency_relationship數(shù)據(jù)結(jié)構(gòu)301因此被更新以反映此改變。
[0061]在圖3的實施例中,通過執(zhí)行vpand指令來更新indices_having_dependenc y_relationship 數(shù)據(jù)結(jié)構(gòu) 301, vpand 指令接受 indices_having_dependency_relati onship數(shù)據(jù)結(jié)構(gòu)301和conf licted_out_indices數(shù)據(jù)結(jié)構(gòu)308作為輸入。在圖6a中觀察到vpand指令的方法的實施例。如在圖6A中觀察到的,vpand指令接受η位的第一塊以及具有多個元素的向量,每個元素具有η位。隨后執(zhí)行此具有η位的第一塊對著該向量中的每個元素的按位求與。圖6b呈現(xiàn)了可被設(shè)計到半導(dǎo)體芯片中的vpand指令的可能邏輯設(shè)計。
[0062]參考圖3, vpand指令的η位的塊對應(yīng)于conflicted_out_indices數(shù)據(jù)結(jié)構(gòu)308,并且vpand指令的輸入向量對應(yīng)于indices_having_dependency_relationship數(shù)據(jù)結(jié)構(gòu)301 ο 當(dāng)將 conflicted_out_indices 數(shù)據(jù)結(jié)構(gòu) 308 對著 indices_having_de pendency_relationship數(shù)據(jù)結(jié)構(gòu)301內(nèi)的元素中的每一個元素進(jìn)行按位求與時,產(chǎn)生新的indices_having_dependency_reIationship 數(shù)據(jù)結(jié)構(gòu) 316。這里,與 conf licted_out_indices 數(shù)據(jù)結(jié)構(gòu)308的按位求與具有從indices_having_dependency_r elationship信息中丟棄b的最右側(cè)索引的作用。換言之,如conflicted_out_indi ces數(shù)據(jù)結(jié)構(gòu)308的左右側(cè)位置中的O所反映的,b的左右側(cè)索引值已被準(zhǔn)許在第一向量操作315中被執(zhí)行。如此,它不再是現(xiàn)有依賴關(guān)系的一部分。vpand指令所執(zhí)行的邏輯求與標(biāo)識出對b的最右側(cè)索引向量的執(zhí)行有依賴性的那些索引(其中的下一個索引在下一向量操作中可以自由地使用)。
[0063]如此,用新indices_having_dependency_relationship 數(shù)據(jù)結(jié)構(gòu) 316(以及原始的 order_of_dependency_mask 309)對 vptest 指令的另一執(zhí)行產(chǎn)生了新的 con flicted_out_indices數(shù)據(jù)結(jié)構(gòu)317。然而,與初始序列不同,vptest指令的輸出用elements_left_mask 332進(jìn)行掩碼將導(dǎo)致vptest指令的輸出與conf licted_out_ind ices數(shù)據(jù)結(jié)構(gòu)317的邏輯取反不同。具體而言,新的indices_permitted_for_exe cution 333將具有00100的值,該值對應(yīng)于b的下一沖突索引去掉了 b中已經(jīng)被執(zhí)行的索引。如此,僅用b的中間索引來執(zhí)行319下一輪的收集、向量操作、分散指令序列。再簡要參考圖2,此時,第二輪遍歷過程202剛完成。
[0064]然而,在完成操作319之后,從對新更新的elements_left_mask 334的檢查可見,仍未將b的所有索引均用于該收集/向量操作/分散過程。如此,b的索引間的依賴關(guān)系
仍需要進(jìn)一步檢查。
[0065]如前面一樣,通過用最新的indices_having_dependency_relationship 和con flicted_out_indices 數(shù)據(jù)結(jié)構(gòu) 316、317 作為輸入來執(zhí)行 vpand(indices_having_dependency_relationship ;conflicted_out_indices)指令來更新 indices_having_de pendency_relationship 數(shù)據(jù)結(jié)構(gòu)。結(jié)果是另一新的 indices_having_dependency_relationship數(shù)據(jù)結(jié)構(gòu)320。此處,vpand指令所執(zhí)行的邏輯求與標(biāo)識出對b的中間索引向量的執(zhí)行有依賴的那些索引(其中的下一個索引(即,b的最左側(cè)索引)在下一向量操作中可以自由地使用)。
[0066]如此,用新indices_having_dependency_relationship 數(shù)據(jù)結(jié)構(gòu) 320 (以及原始的 order_of_dependency_mask 309)的 vptest 指令的另一執(zhí)行產(chǎn)生另一新的 conflicted_out_indices數(shù)據(jù)結(jié)構(gòu)321。經(jīng)更新的elements_left_mask 334對著數(shù)據(jù)結(jié)構(gòu)321的邏輯反進(jìn)行掩碼便對應(yīng)于另一新的indices_permitted_for_execution數(shù)據(jù)結(jié)構(gòu)335 10000。此新的indices_permitted_for_execution數(shù)據(jù)結(jié)構(gòu)335指示,對于下一收集/向量操作/分散序列,只需要處理b的最左側(cè)索引。再簡要參考圖2,此時,第三輪遍歷過程202剛完成。
[0067]如此,僅用b的最左側(cè)索引來執(zhí)行323最后的收集、向量操作、分散指令序列。隨著elements_left_mask336后續(xù)更新到00000的值,不需要其他循環(huán)并且執(zhí)行完成。
[0068]參考圖3的偽代碼,注意,如初始vconflict(b,b)指令300所表示的,此特定示例適合于以下情形:在同一向量(此實例中的向量b)中檢測到?jīng)_突。更一般地,一個或多個索引集合可被用來創(chuàng)建用于向量操作的輸入向量(諸如用于圖3中觀察到的收集/向量操作指令序列的輸入向量)。類似地,一個或多個索引集合可被用于將輸出向量寫到存儲器(諸如圖3中的分散)??稍谥T向量之間檢測到用于構(gòu)造輸入向量和/或?qū)⑤敵鱿蛄繉懙酱鎯ζ鞯乃饕g的沖突,其中諸向量可以相同或不同。同樣,圖3展示了其中諸向量相同的例子(b和b)。然而,在其他情形下,可以通過比較不同向量(例如:vconflict(b, c))來檢測到?jīng)_突的索引。例如,第一向量(例如,b)可被用作構(gòu)建用于后續(xù)向量操作的輸入向量的基礎(chǔ),而另一向量(例如,c)可被用作將向量操作的結(jié)果分散到存儲器中的基礎(chǔ)。如此,應(yīng)當(dāng)理解,vconflict指令可與相同或不同輸入向量一起使用。
[0069]圖7示出一般的處理器核700,該處理器核被認(rèn)為描述許多不同類型的處理器核架構(gòu),例如復(fù)雜指令集(CISC)、精簡指令集(RISC)和超長指令字(VLIW)。圖7的一般處理器核700包括:I)獲取單元703,其獲取指令(例如,從高速緩存或存儲器);2)解碼單元704,其解碼指令;3)調(diào)度器單元705,其確定指令發(fā)布到執(zhí)行單元706的定時和/或次序(注意,調(diào)度器是任選的);4)執(zhí)行單元706,其執(zhí)行指令;5)引退單元707,其表示指令的成功完成。值得注意的是,處理器核可以部分地或完全地包括或可以不包括微代碼708,以控制執(zhí)行單元706的微操作。
[0070]值得注意的是,所述執(zhí)行單元能夠執(zhí)行vconflict、vptest和vpand指令。支持這些指令的邏輯電路可以跨不同的邏輯執(zhí)行單元散布、包括在同一執(zhí)行單元中、或者這些指令中的至少兩個指令可以能夠從單一執(zhí)行單元執(zhí)行。執(zhí)行單元還支持向量指令。執(zhí)行單元還可以能夠支持gather (收集)和scatter (分散)指令。
[0071]趨于限制向量沖突指令被廣泛地包括在指令集架構(gòu)中的一個因素是要高效地實現(xiàn)向量沖突指令往往具有挑戰(zhàn)性。向量沖突指令的實現(xiàn)通常涉及相對大量的比較。例如,某些向量沖突指令將輸入向量或即源向量的每個元素與同一源向量的每個其他元素進(jìn)行比較。其他向量沖突指令將一個源向量的每個元素與一不同源向量的每個元素進(jìn)行比較。尤其是在其中被比較的數(shù)據(jù)元素的數(shù)量相對很高(例如,至少8個)時,這涉及相對大量的比較。而且,隨著時間推移,向量寄存器的寬度和存儲于其中的數(shù)據(jù)元素的數(shù)量趨向于增加。結(jié)果就是,通常需要對元素進(jìn)行很大程度的路由以便允許這種比較得以進(jìn)行。提供廣泛的互連來并行地或同時地執(zhí)行對元素的這種路由和/或比較通常會顯著增加用于實現(xiàn)向量沖突指令的電路的面積、成本和功耗。相反,串行地執(zhí)行這類元素路由和/或比較(例如,通過多個微指令)通常要花費大量的處理時間。下面公開了快速而高效地實現(xiàn)向量沖突指令的附加方式。
[0072]圖8是具有向量執(zhí)行單元806的處理器800的示例實施例的框圖,該向量執(zhí)行單元包括共享全連接互連(full-connected interconnect)860的置換指令執(zhí)行邏輯856和向量沖突指令執(zhí)行邏輯858。該處理器可以是各種復(fù)雜指令集計算(CISC)處理器、各種精簡指令集計算(RISC)處理器、各種超長指令字(VLIW)處理器、其各種混合、或完全其他類型的處理器中的任何處理器。在一些實施例中,處理器可以是通用處理器(例如,具有在臺式、膝上型等計算機(jī)中使用的類型的通用微處理器),但這不是必須的。替換地,處理器可以是專用處理器。合適的專用處理器的示例包括但不限于:圖形處理器、網(wǎng)絡(luò)處理器、通信處理器、加密處理器、協(xié)處理器、嵌入式處理器、數(shù)字信號處理器(DSP)以及控制器(例如,微控制器),僅列舉數(shù)例。處理器可被包括在計算機(jī)系統(tǒng)、服務(wù)器、蜂窩電話、機(jī)頂盒、和具有一個或多個處理器的各種其他電子設(shè)備中。在一些情況下,這些系統(tǒng)具有存儲器(例如,動態(tài)隨機(jī)存取存儲器(DRAM))。
[0073]處理器包括解碼單元804。在操作期間,可向解碼單元提供置換指令852和向量沖突指令854。置換指令和向量沖突指令可彼此一起被包括在代碼序列中,并且可以在大致相同的時間或在完全不同的時間按任何次序來接收。置換指令和向量沖突指令可代表該處理器所認(rèn)識(例如,通過解碼器)的機(jī)器指令、宏指令、或控制信號。指令處理裝置可具有能夠操作以處理所述指令的專用或特定的邏輯(例如,硬件、固件、軟件或某種組合(例如,潛在地具有某種固件和/或軟件的硬件))。
[0074]解碼單與能夠操作以解碼置換指令并且能夠操作以解碼向量沖突指令。解碼單元可將每條所接收的更高級別機(jī)器指令解碼為一個或多個經(jīng)解碼的指令。特別是,該解碼單元可將置換指令解碼為一個或多個經(jīng)解碼的置換指令853,并且該解碼單元可將該向量沖突指令解碼為一個或多個經(jīng)解碼的向量沖突指令855。該一個或多個經(jīng)解碼的指令可代表一個或多個較低級的微操作、微代碼進(jìn)入點、微指令、或其他較低級的指令或控制信號,它們反映和/或衍生自所接收的較高級的指令。這一個或多個較低級指令或控制信號可通過一個或多個較低級(例如,電路級或硬件級)操作來實現(xiàn)較高級指令的操作。該解碼單元可以使用各種不同的機(jī)制來實現(xiàn)。合適機(jī)制的示例包括但不限于微代碼只讀存儲器(ROM)、查找表、硬件實現(xiàn)、可編程邏輯陣列(PLA)、用于實現(xiàn)本領(lǐng)域已知的解碼單元的其他機(jī)制等。
[0075]替換地,不是具有解碼單元804,在一個或多個其它實施例中,可代之以使用指令仿真器、轉(zhuǎn)譯器、變形器(morpher)、解釋器或者其他指令變換邏輯。各種不同類型的指令變換邏輯在本領(lǐng)域中是已知的,并且可在軟件、硬件、固件、或者其組合中實現(xiàn)。指令變換邏輯可接收向量沖突和/或置換指令、仿真、轉(zhuǎn)譯、變形、解釋、或者以其他方式將該指令轉(zhuǎn)換成一個或多個對應(yīng)的衍生指令或控制信號。在其它實施例中,指令處理裝置可具有解碼單元和附加的指令變換邏輯兩者。例如,指令處理裝置可具有指令轉(zhuǎn)換邏輯和解碼單元,指令轉(zhuǎn)換邏輯用于將每個向量沖突和置換指令轉(zhuǎn)換為一個或多個衍生指令,而解碼單元用于將衍生指令解碼為該處理器的原生硬件能夠執(zhí)行的一個或多個較低級指令或控制信號。指令轉(zhuǎn)換邏輯中的一些或全部可位于處理器的其余部分的管芯外,諸如在單獨的管芯上或在管芯外的存儲器中。
[0076]向量執(zhí)行單元806具有與解碼單元804的輸出相耦合的輸入。經(jīng)解碼的置換指令853和經(jīng)解碼的向量沖突指令855可各自被提供至向量執(zhí)行單元。換言之,經(jīng)解碼的置換指令和經(jīng)解碼的向量沖突指令兩者均被提供至同一向量執(zhí)行單元。該向量執(zhí)行單元能夠操作以執(zhí)行或處理經(jīng)解碼的置換指令和經(jīng)解碼的向量沖突指令兩者。在各實施例中,向量執(zhí)行單元可包括向量算術(shù)邏輯單元、向量邏輯單元、或另一向量功能單元。例如,該向量執(zhí)行單元能夠響應(yīng)于置換指令和/或作為置換指令的結(jié)果而操作以將結(jié)果存儲在該置換指令所指示的目的地存儲位置(例如,諸向量寄存器850中的一寄存器或另一架構(gòu)上可見的存儲位置)中,其中該結(jié)果包括來自一個或多個源向量的、已經(jīng)如該置換指令所指定的那樣置換、混洗(shuffle)、或重新布置的數(shù)據(jù)元素。作為另一示例,該向量執(zhí)行單元能夠響應(yīng)于向量沖突指令和/或作為向量沖突指令的結(jié)果而將結(jié)果存儲在該向量沖突指令所指定的目的地存儲位置(例如,諸向量寄存器中的一寄存器)中,其中該結(jié)果包括對一個或多個源向量的元素所執(zhí)行的元素間比較的結(jié)果(例如,如上面圖3中示出并描述的indices_having_dependency_rel ationship數(shù)據(jù)結(jié)構(gòu)301)。該執(zhí)行單元可包括能夠操作以實現(xiàn)置換指令和向量沖突指令的操作(例如,為每個指令執(zhí)行一個或多個相關(guān)聯(lián)的微指令)的執(zhí)行邏輯(例如,硬件(例如集成電路)、固件、軟件或組合(例如,潛在地具有某種固件和/或軟件的硬件))。
[0077]再次參考圖8,該執(zhí)行單元包括置換指令執(zhí)行邏輯856。該執(zhí)行單元還包括向量沖突指令執(zhí)行邏輯858。該置換指令執(zhí)行邏輯和該向量沖突指令執(zhí)行邏輯共享全連接互連860。該全連接互連包括至少四個互連輸入以及至少四個互連輸出,其中每個互連輸入與每個互連輸出互連。有利地,在向量沖突指令執(zhí)行邏輯和置換指令執(zhí)行邏輯之間共享全連接互連可允許快速而高效地實現(xiàn)向量沖突指令和置換指令兩者,同時避免在向量沖突指令執(zhí)行邏輯和置換指令執(zhí)行邏輯中的每一者被部署在不同執(zhí)行單元和/或以其他方式使用了分開的專用全連接互連時通常會發(fā)生的成本、面積和功率增加。
[0078]該處理器還包括向量寄存器850。該向量寄存器與該執(zhí)行單兀雙向I禹合。該向量寄存器表示板上處理器存儲位置。每個向量寄存器能夠操作以存儲向量(例如,打包的數(shù)據(jù))。該向量寄存器代表架構(gòu)寄存器。短語架構(gòu)寄存器、寄存器組、以及寄存器在本文中用于表示對軟件和/或編程器(例如,軟件可見的)可見的寄存器和/或由宏指令指定來標(biāo)識操作數(shù)(operand)的寄存器,除非另外予以指定或清楚明顯可知。這些寄存器與給定微架構(gòu)(例如,臨時寄存器、重排序緩沖器、引退(retirement)寄存器等)中的其他非架構(gòu)式寄存器形成對比。該向量寄存器可使用公知技術(shù)在不同的微架構(gòu)中以不同的方式實現(xiàn),并且不限于任何已知的特定類型的電路。各種不同類型的寄存器可適用,只要它們能夠存儲并提供在本申請中描述的數(shù)據(jù)。合適類型的寄存器的示例包括但不限于專用物理寄存器、使用寄存器重命名的動態(tài)分配的物理寄存器、及其組合。
[0079]為了避免混淆本描述,已示出和描述了相對簡單的處理器。在其他實施例中,處理器可任選地包括其他公知組件,諸如舉例而言,指令提取單元、指令調(diào)度單元、分支預(yù)測單元、指令和數(shù)據(jù)的高速緩存、指令和數(shù)據(jù)轉(zhuǎn)譯后備緩沖器(translation lookasidebuffer)、預(yù)取緩沖器、微指令隊列、微指令定序器、總線接口單元、第二或更高級高速緩存、引退單元(retirement unit)、寄存器重命名單元、以及上述的各種不同組合。而且,其他實施例可具有多個不同類型的執(zhí)行單元,其中至少一個執(zhí)行單元包括至少部分共享全互連式互連的置換指令執(zhí)行邏輯和向量沖突指令執(zhí)行邏輯。其它實施例可具有多個核、邏輯處理器、或執(zhí)行引擎。所述核、邏輯處理器、或執(zhí)行引擎的至少一者可包括至少部分共享全互連式互連的置換指令執(zhí)行邏輯和向量沖突指令執(zhí)行邏輯。應(yīng)理解,實際上在處理器中存在這些不同組件的眾多不同的可能組合和配置,并且本發(fā)明的范圍不限于任何已知此類組合或配置。
[0080]圖9是向量置換操作的示例實施例的框圖。該向量置換操作可響應(yīng)于置換指令和/或作為置換指令的結(jié)果而執(zhí)行。置換指令在本領(lǐng)域中有時被稱為混洗指令。該置換指令可顯式指定或以其他方式指示源向量964。作為示例,源向量可存儲在源分組數(shù)據(jù)寄存器中或源存儲器位置中。所示源向量包括4個源數(shù)據(jù)元素,它們被標(biāo)記為A1-Ap這些數(shù)據(jù)元素可代表整數(shù)、浮點數(shù)、或其他數(shù)據(jù)。向量響應(yīng)于該置換指令和/或作為該置換指令的結(jié)果,結(jié)果向量被存儲。作為示例,結(jié)果向量可存儲在該置換指令顯式指定或以其他方式指示的目的地打包數(shù)據(jù)寄存器或目的地存儲器位置中。該結(jié)果包括來自源向量的、已經(jīng)如該置換指令所指定地被置換、混洗或重新安排的數(shù)據(jù)元素。具體而言,在圖示中,每個結(jié)果數(shù)據(jù)元素可包括源數(shù)據(jù)元素A1-A4中的任一者。在一些實施例中,結(jié)果向量中的每個元素可具有對應(yīng)的索引,該索引指向該源向量的一數(shù)據(jù)元素。這僅僅是置換指令的一個解說性示例。其他置換指令在本領(lǐng)域中是已知的。其他置換指令可對具有更多數(shù)據(jù)元素(例如,8個、16個、32個、64個等)的源向量和/或結(jié)果向量執(zhí)行置換操作,其中源數(shù)據(jù)元素和結(jié)果數(shù)據(jù)元素的數(shù)量相同或不同。而且,所示向量置換操作是對單一源向量執(zhí)行的向量,盡管也可對來自兩個或多個源向量的數(shù)據(jù)元素執(zhí)行其他置換操作。
[0081]圖10是向量執(zhí)行單元1006的示例實施例的框圖,該向量執(zhí)行單元包括共享全連接互連1060的置換指令執(zhí)行邏輯1056和向量沖突指令執(zhí)行邏輯1058。該向量執(zhí)行單元能夠操作以執(zhí)行置換指令和向量沖突指令兩者(例如,執(zhí)行從這些指令衍生的微指令)。作為示例,該向量執(zhí)行單元可以是能夠操作以比較和置換/混洗數(shù)據(jù)元素的向量算術(shù)邏輯單元(ALU)、向量邏輯單元、或其他類型的向量功能單元。
[0082]源向量1064可被輸入至該向量執(zhí)行單元。該源向量具有N個數(shù)據(jù)元素(A1-An),其中N是至少為4的整數(shù)。在各示例實施例中,N可以是4、8、16、32或64。N不限于是2的冪,盡管實踐中通常如此。該向量執(zhí)行單元包括全連接互連1060。該全連接互連具有N個互連輸入1068,以及P個互連輸出1072,其中N和P每個是至少為4的不必相等的整數(shù)。N個互連輸入中的每一個均耦合以接收N個數(shù)據(jù)元素(A1-An)中的相應(yīng)的一不同的數(shù)據(jù)元素。該N個數(shù)據(jù)元素中的每個數(shù)據(jù)元素可以是M位寬的。在各示例實施例中,M位可以是8位、16位、24位、32位、48位或64位。M不必限于2的冪。該全連接互連能夠操作以將N個互連輸入中的每一個連接到P個互連輸出中的每一個。例如,所有N個數(shù)據(jù)元素(A1-An)均可以在P個互連輸出的每一個處可用。
[0083]在一些實施例中,該全連接互連是非阻擋互連。在非阻擋互連中,任何輸入可不受約束地被路由至任何輸出。通過比較進(jìn)行阻擋的互連具有中間或分層的復(fù)用級或選擇級,所述復(fù)用級或選擇級對可將哪些輸入路由到哪些輸出施加約束。例如,在阻擋互連中,如果給定輸入被路由到給定輸出,則它可對另一輸入被路由到另一輸出施加約束(例如,一中間復(fù)用器級可僅能夠選擇這兩個輸入之一來傳播到輸出)。而非阻擋互連不是這樣的,而這樣為實現(xiàn)向量沖突指令提供了某種優(yōu)勢。替換地,該互連可以是阻擋互連,并且可添加附加的互連來向向量沖突執(zhí)行邏輯進(jìn)行饋送以便容納此互連的阻擋性質(zhì)所施加的限制/約束。
[0084]在一些實施例中,該全連接非阻擋互連包括全交叉(full crossbar)。交叉可按滿矩陣的方式將N個輸入連接到P個輸出。交叉在本領(lǐng)域中有時被稱為交叉點互連、交叉點網(wǎng)絡(luò)、矩陣互連、矩陣網(wǎng)絡(luò)、完全網(wǎng)格等。在一些實施例中,交叉是該向量執(zhí)行單元的唯一交叉和/或該向量執(zhí)行單元僅具有一個互連,其中N個輸入全連接到P個輸出,其中N和P各自至少為4。
[0085]再次參考圖示,該執(zhí)行單元包括向量沖突指令執(zhí)行邏輯1058和置換指令執(zhí)行邏輯1056。向量沖突指令執(zhí)行邏輯和置換指令執(zhí)行邏輯中的每一個均與該全連接互連耦合。具體而言,該向量沖突指令執(zhí)行邏輯的輸入耦合于該全連接互連的P個互連輸出中的每一個。同樣,該置換指令執(zhí)行邏輯的輸入耦合于該全連接互連的P個互連輸出中的每一個。在圖示中,P個互連輸出中的每一個均具有相應(yīng)的分支1074,其中該輸出的每條線均被分為兩條或更多條線。這些分支中的每個分支的一個分叉(fork)被提供給該向量沖突指令執(zhí)行邏輯,而這些分支中的每個分支的另一分叉被提供給該置換指令執(zhí)行邏輯。該互連的輸出中的每一個輸出均分支到該置換指令執(zhí)行邏輯和該向量沖突指令執(zhí)行邏輯。替換地,不是使用此類分支,而是可任選地使用單獨的復(fù)制線。
[0086]該向量沖突指令執(zhí)行邏輯和置換指令執(zhí)行邏輯兩者均共享并使用該全連接互連。在使用期間,來自源操作數(shù)(例如,源向量1064)的數(shù)據(jù)元素通過該全連接互連被路由、連接、傳導(dǎo)、耦合或傳達(dá)到該向量沖突指令執(zhí)行邏輯和該置換指令執(zhí)行邏輯中的每一者。在圖示中,為了簡明,示出了單個源向量,然而置換指令和向量沖突指令所使用的源向量可以相同,或者在更常見情況下可以不同。即,該向量沖突指令執(zhí)行邏輯和該置換指令執(zhí)行邏輯中的每一者均耦合以通過/從該全連接互連接收來自源操作數(shù)的數(shù)據(jù)元素。
[0087]利用全連接互連的向量沖突指令執(zhí)行邏輯能夠操作以實現(xiàn)該向量沖突指令的操作。在一些實施例中,該向量沖突指令的操作是要檢測源向量內(nèi)的重復(fù)數(shù)據(jù)元素。在一些實施例中,該向量沖突指令的操作是要測試或比較源向量的每個數(shù)據(jù)元素以找出與該源向量的所有其他數(shù)據(jù)元素的相等。在一些實施例中,每個數(shù)據(jù)元素比較結(jié)果可形成第一結(jié)果向量1067的數(shù)據(jù)元素內(nèi)的位向量。第一結(jié)果向量的特定示例是圖3的indices_having_dependency_relationship數(shù)據(jù)結(jié)構(gòu)301。該向量沖突指令執(zhí)行邏輯可以可操作以響應(yīng)于該向量沖突指令而將該第一結(jié)果向量存儲在目的地存儲位置(例如,向量寄存器或存儲器中的位置)中。
[0088]利用全連接互連的置換指令執(zhí)行邏輯能夠操作以實現(xiàn)該置換指令的操作。在一些實施例中,該置換指令可將來自一個或多個源向量(例如,源向量1064)的任何數(shù)據(jù)元素復(fù)制或存儲到第二結(jié)果向量1066中的任何數(shù)據(jù)元素。在一些實施例中,該置換操作可以類似于針對圖9所討論的任何操作。該置換指令執(zhí)行邏輯可以可操作以響應(yīng)于該置換指令而將該第二結(jié)果向量存儲在目的地存儲位置(例如,向量寄存器或存儲器中的位置)中。
[0089]在向量沖突指令執(zhí)行邏輯和置換指令執(zhí)行邏輯之間共享全連接互連可提供某些優(yōu)點。舉例來說,它可允許快速和高效地實現(xiàn)向量沖突指令和置換指令兩者,而同時避免如果向量沖突指令執(zhí)行邏輯和置換指令執(zhí)行邏輯中的每一個被部署在不同執(zhí)行單元中和/或以其他方式使用分開的專用全連接互連的情況下通常會發(fā)生的成本、面積和功耗增加。一般而言,該網(wǎng)絡(luò)的面積和功耗由連線/互連支配。該連線/互連通常很長,通常占據(jù)大量的空間,并且用來驅(qū)動連線/互連上的信號的電路通常消耗大量的功率。用于實現(xiàn)針對沖突/置換操作的選擇和比較的邏輯門(例如,比較器和MUX)通常較小且消耗較少的功率。在置換和沖突檢測指令/操作兩者間共享連線/互連的一個優(yōu)點是大部分面積和功率成本被這兩個操作分?jǐn)偦蚍謸?dān)。
[0090]圖11 是全連接非阻擋互連(fully-connected non-blocking interconnect) 1160的示例實施例的電路框圖。所示的全連接非阻擋互連具有4個互連輸入1168和4個互連輸出1172。應(yīng)當(dāng)明白,替換實施例可包括更多輸入和更多輸出且輸入和輸出的數(shù)量可以相同或不同。
[0091]該全連接互連具有4個輸入分布線1176。在圖示中,這些輸入分布線被示出為橫線。這些輸入分布線可代表金屬線、跡線、互連、或其他導(dǎo)電路徑。對每個輸入可以有一條輸入分布線。第一輸入1168-1稱合于第一輸入分布線1176-1,第二輸入1168-2稱合于第二輸入分布線1176-2,第三輸入1168-3稱合于第三輸入分布線1176-3,而第四輸入1168-4耦合于第四輸入分布線1176-4。在每個輸入處提供的數(shù)據(jù)被跨相應(yīng)的輸入分布線地廣播。
[0092]每個互連輸出1172具有與其耦合的一組相應(yīng)的抽頭線1178。在圖示中,這些抽頭線組被示出為豎線組。這些抽頭線可代表金屬線、跡線、互連、或其他導(dǎo)電路徑。在所示示例中,有4個輸出并且有4組相應(yīng)的抽頭線。一組抽頭線內(nèi)的每條抽頭線耦合于輸入分布線中一不同的、相應(yīng)的輸入分布線。在圖示中,每個抽頭線僅耦合于所述輸入抽頭線中之一者(例如,在圖示中,每個抽頭線耦合于最靠近其上方端子的輸入分布線)。例如,在第一抽頭線組1178-1中,第一抽頭線1178-1A耦合于第一輸入分布線1176-1,第二抽頭線1178-1B率禹合于第二輸入分布線1176-2,第三抽頭線1178-1C稱合于第三輸入分布線1176-3,而第四抽頭線1178-1D耦合于第四輸入分布線1176-4。所述各組抽頭線的每組抽頭線內(nèi)的一抽頭線和/或針對每個輸出的一抽頭線耦合于所述輸入分布線中的每條輸入分布線以便將輸入數(shù)據(jù)廣播到該輸出。
[0093]圖12是共享全連接互連1260的4數(shù)據(jù)元素置換指令執(zhí)行邏輯1256和4元素向量沖突指令執(zhí)行邏輯1258的詳細(xì)示例實施例的電路框圖。該4數(shù)據(jù)元素置換和向量沖突指令執(zhí)行邏輯各自能夠?qū)σ粋€或多個源向量1264操作(其中每個源向量具有4個數(shù)據(jù)元素)以產(chǎn)生結(jié)果向量1266、1267 (每個結(jié)果向量具有4個數(shù)據(jù)元素)。
[0094]源向量1264具有4個源數(shù)據(jù)元素,它們被標(biāo)記為A1-A415該全連接互連被耦合以接收該源向量。該全連接互連具有4個互連輸入1268。這些互連輸入中的每個互連輸入耦合以接收數(shù)據(jù)元素A1-A4中的一個相應(yīng)的數(shù)據(jù)元素。這4個輸入中的每一個均與4條輸入分布線1276中的一條相應(yīng)的輸入分布線耦合。該全連接互連還具有4個互連輸出1272。針對每個互連輸出提供一組抽頭線。針對每組內(nèi)的每條輸入分布線提供一條抽頭線。一組抽頭線內(nèi)的每條抽頭線稱合于這些輸入分布線中的一條相應(yīng)的輸入分布線。
[0095]置換指令執(zhí)行邏輯1256與該全連接互連耦合。該置換指令執(zhí)行邏輯包括4個選擇器1256-1、1256-2、1256-3、1256-4。每個選擇器具有與互連輸出1272中的一個不同互連輸出耦合的輸入。在使用過程中,來自該源向量的數(shù)據(jù)元素可被路由、連接、耦合、或以其他方式通過該全連接互連傳達(dá)到選擇器。每個選擇器1256能夠操作以選擇4個輸入數(shù)據(jù)元素中的任何元素以存儲在第一結(jié)果向量1266中的相應(yīng)結(jié)果數(shù)據(jù)元素中。作為示例,第一選擇器1256-1可選擇這4個輸入源數(shù)據(jù)元素中的任何一個以存儲在第一結(jié)果向量的結(jié)果數(shù)據(jù)元素B1中,第二選擇器1256-2可選擇這4個輸入源數(shù)據(jù)元素中的任何一個以存儲在向量結(jié)果數(shù)據(jù)元素B2中,第三選擇器1256-3可選擇這4個輸入源數(shù)據(jù)元素中的任何一個以存儲在第三向量數(shù)據(jù)元素B3中,而第四選擇器1256-4可選擇這4個輸入源數(shù)據(jù)元素中的任何一個以存儲在向量結(jié)果數(shù)據(jù)元素B4中。選擇器可包括硬件、固件、軟件或其組合(例如,潛在地具有某種固件和/或軟件的硬件)。如圖所示,在一些實施例中,每個選擇器可包括一4:1 (4輸入到I輸出)復(fù)用器(MUX)。每個4:1MUX可由一輸入控制或選擇信號(未不出)控制,該輸入控制或選擇信號可從該置換指令所提供的索引得出。替換地,可采用其他選擇器電路。
[0096]向量沖突指令執(zhí)行邏輯1258也與該全連接互連耦合。該向量沖突指令執(zhí)行邏輯包括4組4個比較器1258-1,1258-2,1258-3,1258-4。該4組4個比較器可代表一 NxN比較器主干,其中N為4。這4組比較器中的每一組比較器均具有4個比較器(例如,4個物理比較器或4個邏輯比較器)。各組比較器中的每組比較器具有與互連輸出1272中的一不同互連輸出耦合的輸入。在使用過程中,來自該源向量的數(shù)據(jù)元素可被路由、連接、耦合、或以其他方式通過該全連接互連傳達(dá)到選擇器。每組比較器1258能操作以執(zhí)行元素間比較并且將比較的結(jié)果存儲在第二結(jié)果向量1267的相應(yīng)結(jié)果數(shù)據(jù)元素中。這些比較可以并行而不是串行地執(zhí)行,這可有助于允許快速而高效地實現(xiàn)向量沖突指令。在一些實施例中,每組比較器可操作以將所述輸入數(shù)據(jù)元素中的一不同的相應(yīng)輸入數(shù)據(jù)元素與所有其他輸入數(shù)據(jù)元素進(jìn)行比較。例如,第一組比較器1258-1可操作以將A1與ApA1與AyA1與A3、以及A1與A4進(jìn)行比較。如圖所示,在一方面,這可包括一數(shù)據(jù)元素與其自身的無意義的比較(例如,比較A1與A1),或者在另一方面,可以任選地忽略這種無意義比較。在其中忽略這種無意義比較的實施例中,每組比較器可省略一個比較器。在一些實施例中,這些比較器可被實現(xiàn)為異或(XOR)樹。
[0097]在一些實施例中,這些比較器可被邏輯分開但不物理分開(例如,單一寬物理比較器可代表4個較窄的邏輯比較器)。在一些實施例中,每個數(shù)據(jù)元素可以是M位寬的(例如,其中M是8位、16位、32位、或64位),并且每個比較器可以是M位寬的,以便能夠操作以比較一對M位寬的數(shù)據(jù)元素。替換地,所述比較器可以比數(shù)據(jù)元素更窄(例如,小于M位寬),例如以便減少比較器的尺寸/面積和/或比較器消耗的功率量。例如,32位數(shù)據(jù)元素的最低階8位或16位子集可被比較。在一些情況下,這可導(dǎo)致假沖突(例如,在數(shù)據(jù)元素的位子集相等但是整個數(shù)據(jù)元素不相等時錯誤地確定數(shù)據(jù)元素相等),這可通常增加串行的量并且降低性能,但是在功能上是良性的。各組選擇器可包括硬件、固件、軟件或其組合(例如,潛在地具有某種固件和/或軟件的硬件)。
[0098]在圖示中,該全連接互連的每個輸出1272具有多個分支1274,所述分支被用于向向量沖突指令執(zhí)行邏輯和置換指令執(zhí)行邏輯兩者提供輸出。這些分支中的每個分支的每個分叉(fork)被提供給該向量沖突指令執(zhí)行邏輯,而這些分支中的每個分支的另一分叉被提供給該置換指令執(zhí)行邏輯。替換地,不是使用分支,而是可任選地使用單獨的復(fù)制線。[0099]該全連接互連被該置換指令執(zhí)行邏輯和該向量沖突指令執(zhí)行邏輯兩者共享。有利地,這通常減少用于實現(xiàn)這些指令的邏輯的總的尺寸和功耗。而且,交叉和其他全連接互連通常是線受限(line-limited)而不是器件受限(device-1 imited)的,這意味著圍繞該全連接互連的面積通常由線的路由支配,而不是由晶體管和其他有源和無源半導(dǎo)體器件/電路支配。如此,通常存在大量的半導(dǎo)體面積來在同一交叉或其他全連接互連上容納置換指令執(zhí)行邏輯和向量沖突指令執(zhí)行邏輯兩者。
[0100]圖13是示出將一組4個M位比較器1380-1,1380-2,1380-3,1380-4與全連接互連的給定互連輸出1368耦合的示例實施例的進(jìn)一步細(xì)節(jié)的電路框圖。代表給定互連輸出1368的4條抽頭線1378被提供給4條相應(yīng)的局部路由線1381。不是將4條抽頭線提供給4:liHiMUX1356或一組4個M位比較器1380中的僅一者,而是使抽頭線1378分支到局部路由線中并且從那里被提供給該4:1M位MUX1356和該組4個M位比較器兩者。在該特定圖示中,局部路由線終接于4:1M位MUX,而針對4個M位比較器中的每一個提供不同的一組4條局部抽頭線1382中的一條,盡管此特定配置不是必須的。還構(gòu)想將4:1M位MUX或其他選擇器和一組比較器連接到給定互連輸出的其他方式。
[0101]圖14是共享全連接互連1460的8數(shù)據(jù)元素置換指令執(zhí)行邏輯1456和8數(shù)據(jù)元素向量沖突指令執(zhí)行邏輯1458的詳細(xì)示例實施例的框圖。該8數(shù)據(jù)元素置換和向量沖突指令執(zhí)行邏輯各自均能夠?qū)σ粋€或多個源向量1464進(jìn)行操作(其中每個源向量具有8個數(shù)據(jù)元素)以產(chǎn)生結(jié)果向量1466、1467(每個結(jié)果向量具有8個數(shù)據(jù)元素)。圖14與圖12具有一定程度的相似性。為了避免使說明晦澀,以下討論將著重討論圖14的實施例的不同或附加特征,而不重復(fù)所有的相似點。將理解,除另外闡述或因其他原因顯而易見,否則針對圖12描述的屬性和變化也適用于圖14。
[0102]源向量1464具有被標(biāo)記為A1-A8的8個源數(shù)據(jù)元素。該全連接互連具有8個互連輸入1468,每個互連輸入耦合以接收8個數(shù)據(jù)元素A1-A8中的一不同的、相應(yīng)的數(shù)據(jù)元素。這8個輸入中的每一個均與8個輸入分布線1476中的一不同的、相應(yīng)的輸入分布線耦合。該全連接互連還具有8個互連輸出1472。針對每個互連輸出提供一組抽頭線1478。針對每組內(nèi)的每個輸入分布線提供一個抽頭線。一組抽頭線內(nèi)的每個抽頭線與輸入分布線中的一條相應(yīng)的輸入分布線f禹合。
[0103]置換指令執(zhí)行邏輯1456與該全連接互連1460耦合。該置換指令執(zhí)行邏輯包括8個選擇器1456-1到1456-8。每個選擇器具有與互連輸出1472中的一個不同互連輸出I禹合的輸入。每個選擇器能夠操作以選擇8個輸入數(shù)據(jù)元素中的任何元素以存儲在第一結(jié)果向量1466中的相應(yīng)結(jié)果數(shù)據(jù)元素中。如圖所示,在一些實施例中,所述選擇器中的每一個選擇器可包括一 8:1MUX。替換地,可采用其他選擇器電路。
[0104]向量沖突指令執(zhí)行邏輯1458也與該全連接互連耦合。該向量沖突指令執(zhí)行邏輯包括8組8個比較器1458-1到1458-8。各組比較器中的每組比較器具有與互連輸出1472中的一個不同互連輸出耦合的輸入。每組比較器能操作以執(zhí)行元素間比較并且將比較的結(jié)果存儲在第二結(jié)果向量1467的相應(yīng)結(jié)果數(shù)據(jù)元素中。在一些實施例中,每組比較器可操作以將所述輸入數(shù)據(jù)元素中的一不同的相應(yīng)輸入數(shù)據(jù)元素與所有其他輸入數(shù)據(jù)元素進(jìn)行比較。例如,第一組比較器1458-1可操作以將A1與Ap A1與A2、A1與A3、A1與A4、A1與A5' A1與A6、A1與A7、以及A1與A8進(jìn)行比較。盡管示出了針對M位數(shù)據(jù)元素的M位比較器,然而在替換實施例中,該比較器可僅比較M位數(shù)據(jù)元素的位子集。
[0105]這些只是數(shù)個說明性示例。為了附圖簡明,僅示出了 4個和8個數(shù)據(jù)元素以及相關(guān)聯(lián)的4或8寬指令執(zhí)行邏輯。然而,應(yīng)該明白,還構(gòu)想具有超過8個數(shù)據(jù)元素和超過8寬指令執(zhí)行邏輯的其他實施例。例如,另一實施例利用16數(shù)據(jù)元素源向量并且具有16寬指令執(zhí)行邏輯。作為另一示例,進(jìn)一步的實施例利用32數(shù)據(jù)元素源向量并且具有32寬指令執(zhí)行邏輯。
[0106]圖15向量是為置換指令和向量沖突指令共享全連接互連的方法1500的示例實施例。該方法可由處理器執(zhí)行。
[0107]該方法包括在框1501接收指示至少第一源向量和指示第一目的地存儲位置的置換指令,該第一源向量包括至少4個數(shù)據(jù)元素。在框1502,通過執(zhí)行置換指令的向量執(zhí)行單元的全連接互連來傳達(dá)該第一源向量的該至少4個數(shù)據(jù)元素。在一些實施例中,該全連接互連是非阻擋全連接互連。在一些實施例中,該全連接互連是交叉。響應(yīng)于該置換指令,將第一結(jié)果向量存儲在第一目的地存儲位置。在一些實施例中,該第一結(jié)果向量可包括第一多個數(shù)據(jù)元素且該第一多個數(shù)據(jù)元素中的每個數(shù)據(jù)元素可以能夠是該第一源向量的該至少4個數(shù)據(jù)元素中的任何數(shù)據(jù)元素。
[0108]該方法還包括在框1503接收指示至少第二源向量和指示第二目的地存儲位置的向量沖突指令,該第二源向量包括至少4個數(shù)據(jù)元素。在框1504,通過執(zhí)行向量沖突指令的向量執(zhí)行單元的全連接互連傳達(dá)該第二源向量的該至少4個數(shù)據(jù)元素。響應(yīng)于該向量沖突指令,可將第二結(jié)果向量存儲在第二目的地存儲位置。在一些實施例中,該第二結(jié)果向量包括第二多個數(shù)據(jù)元素,且該第二多個數(shù)據(jù)元素中的每個數(shù)據(jù)元素可包括該第二源向量的相應(yīng)數(shù)據(jù)元素與該第二源向量的其他數(shù)據(jù)元素的比較的結(jié)果。
[0109]示例性核架構(gòu)、處理器和計算機(jī)架構(gòu)
[0110]處理器核可以用出于不同目的的不同方式在不同的處理器中實現(xiàn)。例如,這樣的核的實現(xiàn)可以包括:1)旨在用于通用計算的通用有序核;2)預(yù)期用于通用計算的高性能通用無序核;3)主要預(yù)期用于圖形和/或科學(xué)(吞吐量)計算的專用核。不同處理器的實現(xiàn)可包括:包括預(yù)期用于通用計算的一個或多個通用有序核和/或預(yù)期用于通用計算的一個或多個通用無序核的CPU;以及2)包括主要預(yù)期用于圖形和/或科學(xué)(吞吐量)的一個或多個專用核的協(xié)處理器。這樣的不同處理器導(dǎo)致不同的計算機(jī)系統(tǒng)架構(gòu),其可包括:1)在與CPU分開的芯片上的協(xié)處理器;2)在與CPU相同的封裝中但分開的管芯上的協(xié)處理器;3)與CPU在相同管芯上的協(xié)處理器(在該情況下,這樣的協(xié)處理器有時被稱為諸如集成圖形和/或科學(xué)(吞吐量)邏輯等專用邏輯,或被稱為專用核);以及4)可以將所描述的CPU(有時被稱為應(yīng)用核或應(yīng)用處理器)、以上描述的協(xié)處理器和附加功能包括在同一管芯上的片上系統(tǒng)。接著描述示例性核架構(gòu),隨后描述示例性處理器和計算機(jī)架構(gòu)。
[0111]示例性核架構(gòu)
[0112]有序和無序核框圖
[0113]圖16A是示出根據(jù)本發(fā)明的實施例的示例性有序流水線以及示例性寄存器重命名的無序發(fā)布/執(zhí)行流水線兩者的框圖。圖16B是示出根據(jù)本發(fā)明的實施例的有序架構(gòu)核的示例性實施例以及包括在處理器中的示例性寄存器重命名的無序發(fā)布/執(zhí)行架構(gòu)核兩者的框圖。圖16A-B中的實線框示出了有序流水線和有序核,而可選增加的虛線框示出了寄存器重命名的、無序發(fā)布/執(zhí)行流水線和核。給定有序方面是無序方面的子集的情況下,無序方面將被描述。
[0114]在圖16A中,處理器流水線1600包括提取級1602、長度解碼級1604、解碼級1606、分配級1608、重命名級1610、調(diào)度(也稱為分派或發(fā)布)級1612、寄存器讀取/存儲器讀取級1614、執(zhí)行級1616、回寫/存儲器寫入級1618、異常處理級1622、以及提交級1624。
[0115]圖16B示出處理器核1690,該核1690包括耦合到執(zhí)行引擎單元1650的前端單元1630,并且兩者耦合到存儲器單元1670。核1690可以是精簡指令集計算(RISC)核、復(fù)雜指令集計算(CISC)核、超長指令字(VLIW)核或混合或替換核類型。作為又一選項,核1690可以是專用核,諸如例如網(wǎng)絡(luò)或通信核、壓縮引擎、協(xié)處理器核、通用計算圖形處理單兀(GPGPU)核、或圖形核等等。
[0116]前端單元1630包括耦合到指令高速緩存單元1632的分支預(yù)測單元1634,該指令高速緩存單元1634被耦合到指令轉(zhuǎn)換后備緩沖器(TLB) 1636,該指令轉(zhuǎn)換后備緩沖器1636被耦合到指令獲取單元1638,指令獲取單元1638被耦合到解碼單元1640。解碼單元1640(或解碼器)可解碼指令,并生成從原始指令解碼出的、或以其他方式反映原始指令的、或從原始指令導(dǎo)出的一個或多個微操作、微代碼進(jìn)入點、微指令、其他指令、或其他控制信號作為輸出。解碼單元1640可使用各種不同的機(jī)制來實現(xiàn)。合適的機(jī)制的示例包括但不限于查找表、硬件實現(xiàn)、可編程邏輯陣列(OLA)、微代碼只讀存儲器(ROM)等。在一個實施例中,核1690包括存儲(例如,在解碼單元1640中或否則在前端單元1630內(nèi)的)某些宏指令的微代碼的微代碼ROM或其他介質(zhì)。解碼單元1640耦合至執(zhí)行引擎單元1650中的重命名/分配器單元1652。
[0117]執(zhí)行引擎單元1650包括重命名/分配器單元1652,該重命名/分配器單元1652耦合至引退單元1654和一個或多個調(diào)度器單元(多個)1656的集合。調(diào)度器單元1656表示任何數(shù)目的不同調(diào)度器,包括預(yù)留站、中央指令窗等。調(diào)度器單元1656被耦合到物理寄存器組單元1658。每個物理寄存器文件(多個)單元1658表示一個或多個物理寄存器文件,其中不同的物理寄存器文件存儲一種或多種不同的數(shù)據(jù)類型,諸如標(biāo)量整數(shù)、標(biāo)量浮點、打包整數(shù)、打包浮點、向量整數(shù)、向量浮點、狀態(tài)(例如,作為要執(zhí)行的下一指令的地址的指令指針)等。在一個實施例中,物理寄存器文件單元1658包括向量寄存器單元、寫掩碼寄存器單元和標(biāo)量寄存器單元。這些寄存器單元可以提供架構(gòu)向量寄存器、向量掩碼寄存器、和通用寄存器。物理寄存器組單元1658與引退單元1654重疊以示出可以用來實現(xiàn)寄存器重命名和無序執(zhí)行的各種方式(例如,使用記錄器緩沖器和引退寄存器組;使用將來的文件、歷史緩沖器和引退寄存器組;使用寄存器映射和寄存器池等等)。引退單元1654和物理寄存器文件(多個)單元(多個)1658被耦合到執(zhí)行群集(多個)1660。執(zhí)行群集1660包括一個或多個執(zhí)行單元1662的集合和一個或多個存儲器訪問單元1664的集合。執(zhí)行單元1662可以執(zhí)行各種操作(例如,移位、加法、減法、乘法),以及對各種類型的數(shù)據(jù)(例如,標(biāo)量浮點、打包整數(shù)、打包浮點、向量整型、向量浮點)執(zhí)行。盡管某些實施例可以包括專用于特定功能或功能集合的多個執(zhí)行單元,但其他實施例可包括全部執(zhí)行所有函數(shù)的僅一個執(zhí)行單元或多個執(zhí)行單元。調(diào)度器單元(多個)1656、物理寄存器文件(多個)單元(多個)1658和執(zhí)行群集(多個)1660被示為可能有多個,因為某些實施例為某些類型的數(shù)據(jù)/操作(例如,標(biāo)量整型流水線、標(biāo)量浮點/打包整型/打包浮點/向量整型/向量浮點流水線,和/或各自具有其自己的調(diào)度器單元、物理寄存器文件(多個)單元和/或執(zhí)行群集的存儲器訪問流水線一以及在分開的存儲器訪問流水線的情況下,實現(xiàn)其中僅該流水線的執(zhí)行群集具有存儲器訪問單元(多個)1664的某些實施例)創(chuàng)建分開的流水線。還應(yīng)當(dāng)理解,在分開的流水線被使用的情況下,這些流水線中的一個或多個可以為無序發(fā)布/執(zhí)行,并且其余流水線可以為有序發(fā)布/執(zhí)行。
[0118]存儲器訪問單元1664的集合被耦合到存儲器單元1670,該存儲器單元1670包括耦合到數(shù)據(jù)高速緩存單元1674的數(shù)據(jù)TLB單元1672,其中數(shù)據(jù)高速緩存單元1674耦合到二級(L2)高速緩存單元1676。在一個示例性實施例中,存儲器訪問單元1664可包括加載單元、存儲地址單元和存儲數(shù)據(jù)單元,其中的每一個均耦合至存儲器單元1670中的數(shù)據(jù)TLB單元1672。指令高速緩存單元1634還耦合到存儲器單元1670中的二級(L2)高速緩存單元1676。L2高速緩存單元1676被耦合到一個或多個其他級的高速緩存,并最終耦合到主存儲器。
[0119]作為示例,示例性寄存器重命名的、無序發(fā)布/執(zhí)行核架構(gòu)可以如下實現(xiàn)流水線1600:1)指令獲取1638執(zhí)行獲取和長度解碼級1602和1604 ;2)解碼單元1640執(zhí)行解碼級1606 ;3)重命名/分配器單元1652執(zhí)行分配級1608和重命名級1610 ;4)調(diào)度器單元1656執(zhí)行調(diào)度級1612 ;5)物理寄存器組單元1658和存儲器單元1670執(zhí)行寄存器讀取/存儲器讀取級1614 ;執(zhí)行群集1660執(zhí)行執(zhí)行級1616 ;6)存儲器單元1670和物理寄存器組單元1658執(zhí)行寫回/存儲器寫入級1618 ;7)各單元可牽涉到異常處理級1622 ;以及8)引退單元1654和物理寄存器組單元1658執(zhí)行提交級1624。
[0120]核1690可支持一個或多個指令集合(例如,x86指令集合(具有與較新版本一起添加的某些擴(kuò)展);加利福尼亞州桑尼維爾市的MIPS技術(shù)公司的MIPS指令集合;加利福尼州桑尼維爾市的ARM控股的ARM指令集合(具有諸如NEON等可選附加擴(kuò)展)),其中包括本文中描述的各指令。在一個實施例中,核1690包括支持打包數(shù)據(jù)指令集合擴(kuò)展(例如,AVX1、AVX2)的邏輯,由此允許被許多多媒體應(yīng)用使用的操作將使用打包數(shù)據(jù)來執(zhí)行。
[0121]應(yīng)當(dāng)理解,核可支持多線程化(執(zhí)行兩個或更多個并行的操作或線程的集合),并且可以按各種方式來完成該多線程化,此各種方式包括時分多線程化、同步多線程化(其中單個物理核為物理核正同步多線程化的各線程中的每一個線程提供邏輯核)、或其組合(例如,時分提取和解碼以及此后諸如用Intel?超線程化技術(shù)來同步多線程化)。
[0122]盡管在無序執(zhí)行的上下文中描述了寄存器重命名,但應(yīng)當(dāng)理解,可以在有序架構(gòu)中使用寄存器重命名。盡管所解說的處理器的實施例還包括分開的指令和數(shù)據(jù)高速緩存單元1634/1674以及共享L2高速緩存單元1676,但替換實施例可以具有用于指令和數(shù)據(jù)兩者的單個內(nèi)部高速緩存,諸如例如一級(LI)內(nèi)部高速緩存或多個級別的內(nèi)部緩存。在某些實施例中,該系統(tǒng)可包括內(nèi)部高速緩存和在核和/或處理器外部的外部高速緩存的組合?;蛘?,所有高速緩存都可以在核和/或處理器的外部。
[0123]具體的示例性有序核架構(gòu)
[0124]圖17A-B示出了更具體的示例性有序核架構(gòu)的框圖,該核將是芯片中的若干邏輯塊之一(包括相同類型和/或不同類型的其他核)。這些邏輯塊通過高帶寬的互連網(wǎng)絡(luò)(例如,環(huán)形網(wǎng)絡(luò))與某些固定的功能邏輯、存儲器I/o接口和其它必要的I/O邏輯通信,這依賴于應(yīng)用。[0125]圖17A是根據(jù)本發(fā)明的實施例的連接到管芯上互聯(lián)網(wǎng)絡(luò)1702且具有二級(L2)高速緩存的本地子集1704的單個處理器核的框圖。在一個實施例中,指令解碼器1700支持具有打包數(shù)據(jù)指令集合擴(kuò)展的x86指令集。LI高速緩存1706允許對標(biāo)量和向量單元中的高速緩存存儲器的低等待時間訪問。盡管在一個實施例中(為了簡化設(shè)計),標(biāo)量單元1708和向量單元1710使用分開的寄存器集合(分別為標(biāo)量寄存器1712和向量寄存器1714),并且在這些寄存器之間轉(zhuǎn)移的數(shù)據(jù)被寫入到存儲器并隨后從一級(LI)高速緩存1706讀回,但是本發(fā)明的替換實施例可以使用不同的方法(例如使用單個寄存器集合或包括允許數(shù)據(jù)在這兩個寄存器文件之間傳輸而無需被寫入和讀回的通信路徑)。
[0126]L2高速緩存的本地子集1704是全局L2高速緩存的一部分,該全局L2高速緩存被劃分成多個分開的本地子集,即每個處理器核一個本地子集。每個處理器核具有到其自己的L2高速緩存1704的本地子集的直接訪問路徑。被處理器核讀出的數(shù)據(jù)被存儲在其L2高速緩存子集1704中,并且可以被快速訪問,該訪問與其他處理器核訪問其自己的本地L2高速緩存子集并行。被處理器核寫入的數(shù)據(jù)被存儲在其子集的L2高速緩存子集1704中,并在必要的情況下從其它子集清除。環(huán)形網(wǎng)絡(luò)確保共享數(shù)據(jù)的一致性。環(huán)形網(wǎng)絡(luò)是雙向的,以允許諸如處理器核、L2高速緩存和其它邏輯塊之類的代理在芯片內(nèi)彼此通信。每個環(huán)形數(shù)據(jù)路徑為每個方向1012比特寬。
[0127]圖17B是根據(jù)本發(fā)明的各實施例的圖17A中的處理器核的一部分的展開圖。圖17B包括作為LI高速緩存1704的LI數(shù)據(jù)高速緩存1706A部分,以及關(guān)于向量單元1710和向量寄存器1714的更多細(xì)節(jié)。具體地說,向量單元1710是16寬向量處理單元(VPU)(見16寬ALU1728),該單元執(zhí)行整型、單精度浮點以及雙精度浮點指令中的一個或多個。該VPU通過混合單元1720支持對寄存器輸入的混合、通過數(shù)值轉(zhuǎn)換單元1,722A-B支持?jǐn)?shù)值轉(zhuǎn)換,并通過復(fù)制單元1724支持對存儲器輸入的復(fù)制。寫掩碼寄存器1726允許斷言所得的向量寫入。
[0128]具有集成存儲器控制器和圖形器件的處理器
[0129]圖18是根據(jù)本發(fā)明的實施例的可具有一個以上核、可具有集成存儲器控制器、并且可具有集成圖形器件的處理器1800的框圖。圖18的實線框示出了處理器1800,處理器1800具有單個核1802A、系統(tǒng)代理1810、一組一個或多個總線控制器單元1816,而可選附加的虛線框示出了替換的處理器1800,具有多個核1802A-N、系統(tǒng)代理單元18010中的一組一個或多個集成存儲器控制器單元1814以及專用邏輯1808。
[0130]因此,處理器1800的不同實現(xiàn)可包括:I) CPU,其中專用邏輯1808是集成圖形和/或科學(xué)(吞吐量)邏輯(其可包括一個或多個核),并且核1802A-N是一個或多個通用核(例如,通用的有序核、通用的無序核、這兩者的組合);2)協(xié)處理器,其中核1802A-N是主要預(yù)期用于圖形和/或科學(xué)(吞吐量)的大量專用核;以及3)協(xié)處理器,其中核1802A-N是大量通用有序核。因此,處理器1800可以是通用處理器、協(xié)處理器或?qū)S锰幚砥?,諸如例如網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高吞吐量的集成眾核(MIC)協(xié)處理器(包括30個或更多核)、或嵌入式處理器等。該處理器可以被實現(xiàn)在一個或多個芯片上。處理器1800可以是一個或多個襯底的一部分,和/或可以使用諸如例如BiCMOS、CMOS或NMOS等的多個加工技術(shù)中的任何一個技術(shù)將其實現(xiàn)在一個或多個襯底上。[0131]存儲器層次結(jié)構(gòu)包括在各核內(nèi)的一個或多個級別的高速緩存、一個或多個共享高速緩存單元1806的集合、以及耦合至集成存儲器控制器單元1814的集合的外部存儲器(未示出)。該共享高速緩存單元1806的集合可以包括一個或多個中間級高速緩存,諸如二級(L2)、三級(L3)、四級(L4)或其他級別的高速緩存、末級高速緩存(LLC)、和/或其組合。盡管在一個實施例中,基于環(huán)的互連單元1812將集成圖形邏輯1808、共享高速緩存單元1806的集合以及系統(tǒng)代理單元1810/集成存儲器控制器單元1814互連,但替換實施例可使用任何數(shù)量的公知技術(shù)來將這些單元互連。在一個實施例中,在一個或多個高速緩存單元1806與核1802-A-N之間維持一致性。
[0132]在某些實施例中,核1802A-N中的一個或多個核能夠多線程化。系統(tǒng)代理1810包括協(xié)調(diào)和操作核1802A-N的那些組件。系統(tǒng)代理單元1810可包括例如功率控制單元(PCU)和顯示單元。P⑶可以是或包括調(diào)整核1802A-N和集成圖形邏輯1808的功率狀態(tài)所需的邏輯和組件。顯示單元用于驅(qū)動一個或多個外部連接的顯示器。
[0133]核1802A-N在架構(gòu)指令集合方面可以是同構(gòu)的或異構(gòu)的;8卩,這些核1802A-N中的兩個或更多個核可能能夠執(zhí)行相同的指令集合,而其他核可能能夠執(zhí)行該指令集合的僅僅子集或不同的指令集合。
[0134]示例性計算機(jī)架構(gòu)
[0135]圖19-22是示例性計算機(jī)架構(gòu)的框圖。本領(lǐng)域已知的對膝上型設(shè)備、臺式機(jī)、手持PC、個人數(shù)字助理、工程工作站、服務(wù)器、網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)中樞、交換機(jī)、嵌入式處理器、數(shù)字信號處理器(DSP)、圖形設(shè)備、視頻游戲設(shè)備、機(jī)頂盒、微控制器、蜂窩電話、便攜式媒體播放器、手持設(shè)備以及各種其他電子設(shè)備的其他系統(tǒng)設(shè)計和配置也是合適的。一般來說,能夠納入本文中所公開的處理器和/或其它執(zhí)行邏輯的大量系統(tǒng)和電子設(shè)備一般都是合適的。
[0136]現(xiàn)在參見圖19,所示為根據(jù)本發(fā)明一個實施例的系統(tǒng)1900的框圖。系統(tǒng)1900可以包括一個或多個處理器1910、1915,這些處理器耦合到控制器中樞1920。在一個實施例中,控制器中樞1920包括圖形存儲器控制器中樞(GMCH) 1990和輸入/輸出中樞(IOH) 1950 (其可以在分開的芯片上);GMCH 1990包括存儲器1940和協(xié)處理器1945耦合到的存儲器和圖形控制器;Ι0Η 1950將輸入/輸出(I/O)設(shè)備1960耦合到GMCH 1990。替換地,存儲器和圖形控制器中的一個或兩個在處理器(如本文中所描述的)內(nèi)集成,存儲器1940和協(xié)處理器1945直接耦合到處理器1910、以及在單一芯片中具有IOH 1950的控制器中樞1920。
[0137]附加的處理器1915的任選性在圖19中通過虛線來表示。每一處理器1910、1915可包括本文中描述的處理核中的一個或多個,并且可以是處理器1800的某一版本。
[0138]存儲器1940可以是例如動態(tài)隨機(jī)存取存儲器(DRAM)、相變化存儲器(PCM)或這兩者的組合。對于至少一個實施例,控制器中樞1920經(jīng)由諸如前端總線(FSB)之類的多點總線(mult1-drop bus)、諸如快速通道互連(QPI)之類的點對點接口、或者類似的連接1995與處理器1910、1915進(jìn)行通信。
[0139]在一個實施例中,協(xié)處理器1945是專用處理器,諸如例如高吞吐量MIC處理器、網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU、或嵌入式處理器等等。在一個實施例中,控制器中樞1920可以包括集成圖 形加速計。
[0140]按照包括架構(gòu)、微架構(gòu)、熱、功耗特征等等優(yōu)點的度量譜,物理資源1910、1915之間存在各種差別。[0141]在一個實施例中,處理器1910執(zhí)行控制一般類型的數(shù)據(jù)處理操作的指令。嵌入在這些指令中的可以是協(xié)處理器指令。處理器1910識別如具有應(yīng)當(dāng)由附連的協(xié)處理器1945執(zhí)行的類型的這些協(xié)處理器指令。因此,處理器1910在協(xié)處理器總線或者其他互連上將這些協(xié)處理器指令(或者表示協(xié)處理器指令的控制信號)發(fā)布到協(xié)處理器1945。協(xié)處理器1945接受并執(zhí)行所接收的協(xié)處理器指令。
[0142]現(xiàn)在參考圖20,示出了根據(jù)本發(fā)明的一個實施例的第一更具體的示例性系統(tǒng)2000的方框圖。如圖20所示,多處理器系統(tǒng)2000是點對點互連系統(tǒng),并包括通過點對點互連2050而耦合的第一處理器2070和第二處理器2080。處理器2070和2080中的每一個都可以是處理器1800的某一版本。在本發(fā)明的一個實施例中,處理器2070和2080分別是處理器1910和1915,而協(xié)處理器2038是協(xié)處理器1945。在另一實施例中,處理器2070和2080分別是處理器1910和協(xié)處理器1945。
[0143]處理器2070和2080被示為分別包括集成存儲器控制器(MC)單元2072和2082。處理器2070還包括作為其總線控制器單元的一部分的點對點(P-P)接口 2076和2078 ;類似地,第二處理器2080包括點對點接口 2086和2088。處理器2070、2080可以使用點對點(P-P)電路2078、2088經(jīng)由P-P接口 2050來交換信息。如圖20所示,MC2072和2082將處理器耦合到相應(yīng)的存儲器,即存儲器2032和存儲器2034,這些存儲器可以是本地附連到相應(yīng)處理器的主存儲器的部分。
[0144]處理器2070、2080可各自經(jīng)由使用點對點接口電路2076、2094、2086、2098的各個P-P接口 2052、2054與芯片組2090交換信息。芯片組2090可以可選地經(jīng)由高性能接口 2038與協(xié)處理器2039交換信息。在一個實施例中,協(xié)處理器2038是專用處理器,諸如例如高吞吐量MIC處理器、網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU、或嵌入式處理器等等。
[0145]共享高速緩存(未示出)可以被包括在任一處理器之內(nèi)或被包括兩個處理器外部但仍經(jīng)由P-P互連與這些處理器連接,從而如果將某處理器置于低功率模式時,可將任一處理器或兩個處理器的本地高速緩存信息存儲在該共享高速緩存中。
[0146]芯片組2090可經(jīng)由接口 2096耦合至第一總線2016。在一個實施例中,第一總線2016可以是外圍部件互連(PCI)總線,或諸如PCI Express總線或其它第三代I/O互連總線之類的總線,但本發(fā)明的范圍并不受此限制。
[0147]如圖20所示,各種I/O設(shè)備2014可連同總線橋2018 —起耦合到第一總線2016,總線橋2018將第一總線2016耦合到第二總線2020。在一個實施例中,諸如協(xié)處理器、高吞吐量MIC處理器、GPGPU的處理器、加速計(諸如例如圖形加速計或數(shù)字信號處理器(DSP)單元)、場可編程門陣列或任何其他處理器的一個或多個附加處理器2015被耦合到第一總線2016。在一個實施例中,第二總線2020可以是低引腳計數(shù)(LPC)總線。各種設(shè)備可以被耦合至第二總線2020,在一個實施例中這些設(shè)備包括例如鍵盤/鼠標(biāo)2022、通信設(shè)備2027以及諸如可包括指令/代碼和數(shù)據(jù)2028的盤驅(qū)動器或其它海量存儲設(shè)備的存儲單元2030。此外,音頻1/02024可以被耦合至第二總線2020。注意,其它架構(gòu)是可能的。例如,代替圖20的點對點架構(gòu),系統(tǒng)可實現(xiàn)多點總線或其它此類架構(gòu)。
[0148]現(xiàn)在參考圖21,示出了根據(jù)本發(fā)明的一個實施例的第二更專用的示例性系統(tǒng)2100的方框圖。圖20和21中的相同元件使用相同附圖標(biāo)記,且在圖21中省略了圖20的某些方面以避免遮擋圖7的其它方面。[0149]圖21示出處理器2070、2080可分別包括集成存儲器和I/O控制邏輯(“CL”) 2072和2082。因此,CL2072、2082包括集成存儲器控制器單元并包括I/O控制邏輯。圖21示出不僅存儲器2032、2034耦合至CL2072、2082,而且I/O設(shè)備2114也耦合至控制邏輯2072、2082。傳統(tǒng)I/O設(shè)備2115被耦合至芯片組2090。
[0150]現(xiàn)在參照圖22,所示出的是根據(jù)本發(fā)明一個實施例的SoC2200的框圖。圖18中的類似元件具有相似的附圖標(biāo)記。另外,虛線框是更先進(jìn)的SoC的可選特征。在圖22中,互連單元(多個)2202被耦合至:應(yīng)用處理器2210,該應(yīng)用處理器包括一個或多個核202A-N的集合以及共享高速緩存單元1806 ;系統(tǒng)代理單元1810 ;總線控制器單元1816 ;集成存儲器控制器單元1814 ;—組或一個或多個協(xié)處理器2220,其可包括集成圖形邏輯、圖像處理器、音頻處理器和視頻處理器;靜態(tài)隨機(jī)存取存儲器(SRAM)單元2230 ;直接存儲器存取(DMA)單元2232 ;以及用于耦合至一個或多個外部顯示器的顯示單元2240。在一個實施例中,協(xié)處理器2220包括專用處理器,諸如例如網(wǎng)絡(luò)或通信處理器、壓縮引擎、GPGPU、高吞吐量MIC處理器、或嵌入式處理器等等。
[0151]本文公開的機(jī)制的各實施例可以被實現(xiàn)在硬件、軟件、固件或這些實現(xiàn)方法的組合中。本發(fā)明的實施例可實現(xiàn)為在可編程系統(tǒng)上執(zhí)行的計算機(jī)程序或程序代碼,該可編程系統(tǒng)包括至少一個處理器、存儲系統(tǒng)(包括易失性和非易失性存儲器和/或存儲元件)、至少一個輸入設(shè)備以及至少一個輸出設(shè)備。
[0152]諸如圖20所示的代碼2030之類的程序代碼可應(yīng)用于輸入指令,以執(zhí)行本文中所描述的功能并生成輸出信息。輸出信息可以按已知方式被應(yīng)用于一個或多個輸出設(shè)備。為了本申請的目的,處理系統(tǒng)包括具有諸如例如數(shù)字信號處理器(DSP)、微控制器、專用集成電路(ASIC)或微處理器之類的處理器的任何系統(tǒng)。
[0153]程序代碼可以用高級程序化語言或面向?qū)ο蟮木幊陶Z言來實現(xiàn),以便與處理系統(tǒng)通信。程序代碼也可以在需要的情況下用匯編語言或機(jī)器語言來實現(xiàn)。事實上,本文中描述的機(jī)制不僅限于任何特定編程語言的范圍。在任一情形下,語言可以是編譯語言或解釋
;五古
P口口 ο
[0154]至少一個實施例的一個或多個方面可以由存儲在機(jī)器可讀介質(zhì)上的表征性指令來實現(xiàn),該指令表示處理器中的各種邏輯,該指令在被機(jī)器讀取時使得該機(jī)器制作用于執(zhí)行本文所述的技術(shù)的邏輯。被稱為“IP核”的這些表示可以被存儲在有形的機(jī)器可讀介質(zhì)上,并被提供給多個客戶或生產(chǎn)設(shè)施以加載到實際制造該邏輯或處理器的制造機(jī)器中。
[0155]這樣的機(jī)器可讀存儲介質(zhì)可以包括但不限于通過機(jī)器或設(shè)備制造或形成的物品的非瞬態(tài)、有形安排,其包括存儲介質(zhì),諸如硬盤;任何其它類型的盤,包括軟盤、光盤、緊致盤只讀存儲器(CD-ROM)、緊致盤可重寫(CD-RW)的以及磁光盤;半導(dǎo)體器件,例如只讀存儲器(ROM)、諸如動態(tài)隨機(jī)存取存儲器(DRAM)和靜態(tài)隨機(jī)存取存儲器(SRAM)的隨機(jī)存取存儲器(RAM)、可擦除可編程只讀存儲器(EPRO M)、閃存、電可擦除可編程只讀存儲器(EEPROM);相變化存儲器(PCM);磁卡或光卡;或適于存儲電子指令的任何其它類型的介質(zhì)。
[0156]因此,本發(fā)明的各實施例還包括非瞬態(tài)、有形機(jī)器可讀介質(zhì),該介質(zhì)包含指令或包含設(shè)計數(shù)據(jù),諸如硬件描述語言(HDL),它定義本文中描述的結(jié)構(gòu)、電路、裝置、處理器和/或系統(tǒng)特性。這些實施例也被稱為程序產(chǎn)品。
[0157]仿真(包括二進(jìn)制變換、代碼變形等)[0158]在某些情況下,指令轉(zhuǎn)換器可用來將指令從源指令集轉(zhuǎn)換至目標(biāo)指令集。例如,指令轉(zhuǎn)換器可以變換(例如使用靜態(tài)二進(jìn)制變換、包括動態(tài)編譯的動態(tài)二進(jìn)制變換)、變形、仿真或以其它方式將指令轉(zhuǎn)換成將由核來處理的一個或多個其它指令。指令轉(zhuǎn)換器可以用軟件、硬件、固件、或其組合實現(xiàn)。指令轉(zhuǎn)換器可以在處理器上、在處理器外、或者部分在處理器上部分在處理器外。
[0159]圖23是根據(jù)本發(fā)明的各實施例的對照使用軟件指令轉(zhuǎn)換器將源指令集中的二進(jìn)制指令轉(zhuǎn)換成目標(biāo)指令集中的二進(jìn)制指令的框圖。在所示的實施例中,指令轉(zhuǎn)換器是軟件指令轉(zhuǎn)換器,但作為替換,該指令轉(zhuǎn)換器可以用軟件、固件、硬件或其各種組合來實現(xiàn)。圖23以高級語言2302示出了程序,該程序可使用x86編譯器2304來編譯以生成x86 二進(jìn)制代碼2306,該二進(jìn)制代碼可由具有至少一個x86指令集核的處理器2316本地地執(zhí)行。具有至少一個x86指令集核的處理器2316表示任何處理器,這些處理器能通過兼容地執(zhí)行或以其他方式處理以下內(nèi)容來執(zhí)行與具有至少一個x86指令集核的英特爾處理器基本相同的功能:I)英特爾x86指令集核的指令集的本質(zhì)部分,或2)被定向為在具有至少一個x86指令集核的英特爾處理器上運行的應(yīng)用或其它程序的目標(biāo)代碼版本,以便取得與具有至少一個x86指令集核的英特爾處理器基本相同的結(jié)果。x86編譯器2304表示用于生成x86 二進(jìn)制代碼2306 (例如,對象代碼)的編譯器,該二進(jìn)制代碼2306可通過或不通過附加的鏈接處理在具有至少一個x86指令集核的處理器2316上執(zhí)行。類似地,圖23以高級語言2302示出了程序,該程序可使用替換性指令集編譯器2308來編譯以生成替換性指令集二級制代碼2310,替換性指令集二級制代碼2310可由不具有至少一個x86指令集核的處理器2314 (諸如,具有可執(zhí)行加利福尼亞州桑尼威爾的MIPS技術(shù)公司的MIPS指令集的處理器和/或執(zhí)行加利福尼亞州桑尼威爾的ARM控股公司的ARM指令集的處理器)本地地執(zhí)行。指令轉(zhuǎn)換器2312被用來將x86 二進(jìn)制代碼2306轉(zhuǎn)換成可以由不具有x86指令集核的處理器2314原生執(zhí)行的代碼。該轉(zhuǎn)換后的代碼不大可能與替換性指令集二進(jìn)制代碼2310相同,因為能夠這樣做的指令轉(zhuǎn)換器難以制造;然而,轉(zhuǎn)換后的代碼將完成一般操作并由來自替換性指令集的指令構(gòu)成。因此,指令轉(zhuǎn)換器2312通過仿真、模擬或任何其它過程來表示允許不具有x86指令集處理器或核的處理器或其它電子設(shè)備執(zhí)行x86 二進(jìn)制代碼2306的軟件、固件、硬件或其組合。
[0160]在以上描述中,為解釋起見,闡明了眾多具體細(xì)節(jié)以提供對本發(fā)明的實施例的透徹理解。然而,將對本領(lǐng)域技術(shù)人員明顯的是,沒有這些具體細(xì)節(jié)中的一些也可實踐一個或多個其他實施例。具體實施例不是為了限制本發(fā)明而是為了說明。本發(fā)明的范圍不是由所提供的具體示例確定,而是僅由所附權(quán)利要求確定。在其它實例中,以方框圖形式而非以細(xì)節(jié)地示出了公知的電路、結(jié)構(gòu)、設(shè)備和操作以避免使說明書的理解變得晦澀。
[0161 ] 本領(lǐng)域的技術(shù)人員還將意識到可對本文公開的實施例做出修改,諸如對實施例的各組件的配置、形式、功能和操作方式和使用進(jìn)行修改。在附圖中顯示且在說明書中描述的關(guān)系的所有等效關(guān)系都被涵蓋在本發(fā)明的實施例內(nèi)。為說明的簡單和清楚起見,在附圖中示出的元素不一定按比例繪制。例如,為清楚起見,一些元件的尺寸相對其它元件被夸大。在附圖中,箭頭用于示出耦合和/或連接。
[0162] 已描述了各種操作和方法。已經(jīng)以流程圖方式以基礎(chǔ)方式對一些方法進(jìn)行了描述,但操作可選擇地被添加至這些方法和/或從這些方法中移去。另外,根據(jù)示例性實施例,描述操作的特定順序,但要理解該特定順序是示例性的。替換實施例可任選地以不同方式執(zhí)行這些操作、組合某些操作、覆蓋某些操作等。
[0163]某些操作可由硬件組件執(zhí)行,或者可體現(xiàn)在機(jī)器可執(zhí)行或電路可執(zhí)行的指令中,它們可用于使得或至少導(dǎo)致用執(zhí)行這些操作的指令編程的電路或硬件。電路可包括通用或?qū)S锰幚砥鳌⒒蜻壿嬰娐?,這里僅給出幾個示例。這些操作還可任選地由硬件和軟件的組合執(zhí)行。執(zhí)行單元和/或處理器可包括專門或特定電路,或者其它邏輯,它們對指令或微指令或者衍生自機(jī)器指令的一個或多個控制信號作出響應(yīng),以執(zhí)行某些操作。
[0164]還應(yīng)當(dāng)理解,說明書全文對“一個實施例”、“一實施例”或“一個或多個實施例”的引用例如表示特定特征可包含在本發(fā)明實施例的實踐中。類似地應(yīng)當(dāng)理解,在本說明書中,各個特征有時被一起編組在單個實施例、附圖或其描述中以使本公開變得流暢并幫助理解各個創(chuàng)新性方面。然而,該公開方法不應(yīng)被解釋成反映本發(fā)明需要比每項權(quán)利要求中所明確記載的更多特征的意圖。相反,如下面權(quán)利要求反映的,各創(chuàng)新性方面可具有比單個公開的實施例的全部特征更少的特征。因此,說明書之后所附的權(quán)利要求因此被明確納入該說明書中,每一項權(quán)利要求獨自作為本發(fā)明單獨的實施例。
【權(quán)利要求】
1.一種裝置,包括: 解碼單元,其用于對置換指令和向量沖突指令進(jìn)行解碼;以及 向量執(zhí)行單元,其與所述解碼單元耦合并且包括: 全連接互連,其具有至少四個輸入和至少四個輸出,其中所述至少四個輸入用于接收至少一個源向量的至少四個相應(yīng)的數(shù)據(jù)元素,其中所述至少四個輸入中的每個輸入與所述至少四個輸出中的每個輸出相耦合; 置換指令執(zhí)行邏輯,其與所述至少四個輸出相耦合并且能夠操作以響應(yīng)于所述置換指令而存儲第一向量結(jié)果;以及 向量沖突指令執(zhí)行邏輯,其與所述至少四個輸出相耦合并且能夠操作以響應(yīng)于所述向量沖突指令而將第二向量結(jié)果存儲在目的地存儲位置中。
2.如權(quán)利要求1所述的裝置,其特征在于,所述全連接互連由所述置換指令執(zhí)行邏輯和所述向量沖突指令執(zhí)行邏輯所共享,并且其中被共享的所述全連接互連將數(shù)據(jù)元素連接到所述置換指令執(zhí)行邏輯和所述向量沖突指令執(zhí)行邏輯兩者。
3.如權(quán)利要求1所述的裝置,其特征在于,所述全連接互連包括非阻擋互連。
4.如權(quán)利要求1所述的裝置,其特征在于,所述全連接互連包括交叉。
5.如權(quán)利要求1所述的裝置,其特征在于,所述置換指令執(zhí)行邏輯包括在所述至少四個輸出的每個輸出處的用于選擇所述至少四個數(shù)據(jù)元素中的任何數(shù)據(jù)元素的邏輯,并且其中所述向量沖突指令執(zhí)行邏輯包括在所述至少四個輸出的每個輸出處的用于將所述至少四個數(shù)據(jù)元素中的一不同的相應(yīng)數(shù)據(jù)元素與所有所述至少四個數(shù)據(jù)元素進(jìn)行比較的邏輯。
6.如權(quán)利要求5所述的裝置,其特征在于,所述至少四個數(shù)據(jù)元素包括N個數(shù)據(jù)元素,其中所述至少四個輸出包括N個輸出,其中所述數(shù)據(jù)元素中的每個數(shù)據(jù)元素包括M位,其中所述置換指令執(zhí)行邏輯包括在所述N個輸出的每個輸出處的用于選擇所述N個數(shù)據(jù)元素中的任一數(shù)據(jù)元素的N:1選擇器,并且其中所述向量沖突指令執(zhí)行邏輯包括在所述N個輸出的每個輸出處的用于將所述N個數(shù)據(jù)元素中的一不同的、相應(yīng)的M位數(shù)據(jù)元素與所有N個數(shù)據(jù)元素進(jìn)行比較的N個M位比較器。
7.如權(quán)利要求6所述的裝置,其中N至少為8。
8.如權(quán)利要求6所述的裝置,其中N至少為16而M為32和64中之一。
9.如權(quán)利要求1所述的裝置,其特征在于,所述全連接互連是所述向量執(zhí)行單元中具有全連接到至少四個輸出的至少四個輸入的唯一的全連接互連。
10.如權(quán)利要求1所述的裝置,其特征在于,所述全連接互連的所述輸出中的每個輸出均分支到所述置換指令執(zhí)行邏輯和所述向量沖突指令執(zhí)行邏輯兩者。
11.如權(quán)利要求1所述的裝置,其特征在于,所述裝置包括通用微處理器,并且其中所述目的地存儲位置包括架構(gòu)上可見的向量寄存器。
12.—種方法,包括: 接收指示至少第一源向量和指示第一目的地存儲位置的置換指令,所述第一源向量包括至少四個數(shù)據(jù)元素; 通過執(zhí)行所述置換指令的向量執(zhí)行單元的全連接互連來傳達(dá)所述第一源向量的所述至少四個數(shù)據(jù)元素; 接收指示至少第二源向量和指示第二目的地存儲位置的向量沖突指令,所述第二源向量包括至少四個數(shù)據(jù)元素; 通過所述向量執(zhí)行單元的所述全連接互連來傳達(dá)所述第二源向量的所述至少四個數(shù)據(jù)元素。
13.如權(quán)利要求12所述的方法,其特征在于,通過所述全連接互連來傳達(dá)所述第二源向量的所述至少四個數(shù)據(jù)元素包括通過非阻擋全連接互連來傳達(dá)所述至少四個數(shù)據(jù)元素。
14.如權(quán)利要求12所述的方法,其特征在于,通過所述全連接互連來傳達(dá)所述第二源向量的所述至少四個數(shù)據(jù)元素包括通過交叉來傳達(dá)所述至少四個數(shù)據(jù)元素。
15.如權(quán)利要求12所述的方法,其特征在于,通過所述全連接互連來傳達(dá)所述第二源向量的所述至少四個數(shù)據(jù)元素包括通過所述全連接互連來傳達(dá)至少8個數(shù)據(jù)元素。
16.如權(quán)利要求12所述的方法,其特征在于,還包括: 響應(yīng)于所述置換指令而將所述第一結(jié)果向量存儲在所述第一目的地存儲位置中,所述第一結(jié)果向量包括第一多個數(shù)據(jù)元素,所述第一多個數(shù)據(jù)元素中的每個數(shù)據(jù)元素能夠是所述第一源向量的所述至少四個數(shù)據(jù)元素中的任何數(shù)據(jù)元素;以及 響應(yīng)于所述向量沖突指令而將第二結(jié)果向量存儲在所述第二目的地存儲位置中,所述第二結(jié)果向量包括第二多個數(shù)據(jù)元素,所述第二多個數(shù)據(jù)元素中的每個數(shù)據(jù)元素包括將所述第二源向量中的相應(yīng)數(shù)據(jù)元素與所述第二源向量中的其他數(shù)據(jù)元素進(jìn)行比較的結(jié)果。
17.權(quán)利要求書缺失17
18.權(quán)利要求書缺失18
19.權(quán)利要求書缺失19
20.—種系統(tǒng), 包括: 互連; 與所述互連相耦合的處理器,所述處理器包括執(zhí)行單元,所述執(zhí)行單元包括: 全連接互連,其具有至少四個輸入和至少四個輸出,其中所述至少四個輸入用于接收與至少一個源向量的至少四個相應(yīng)的數(shù)據(jù)元素,其中所述至少四個輸入中的每個輸入與所述至少四個輸出中的每個輸出相耦合; 置換指令執(zhí)行邏輯,其與所述至少四個輸出相耦合并且能夠操作以響應(yīng)于置換指令而存儲第一向量結(jié)果;以及 向量沖突指令執(zhí)行邏輯,其與所述至少四個輸出相耦合并且能夠操作以響應(yīng)于向量沖突指令而將第二向量結(jié)果存儲在目的地存儲位置中;以及與所述互連相耦合的動態(tài)隨機(jī)存取存儲器(DRAM)。
21.如權(quán)利要求20所述的系統(tǒng),其特征在于,所述全連接互連由所述置換指令執(zhí)行邏輯和所述向量沖突指令執(zhí)行邏輯共享以從其接收數(shù)據(jù)。
22.如權(quán)利要求20所述的系統(tǒng),其特征在于,所述全連接互連包括非阻擋互連。
【文檔編號】G06F13/14GK104025067SQ201180076104
【公開日】2014年9月3日 申請日期:2011年12月29日 優(yōu)先權(quán)日:2011年12月29日
【發(fā)明者】A·T·福塞斯, D·R·布拉德福德 申請人:英特爾公司