流水線調(diào)度中混疊寄存器的分配的制作方法
【專利摘要】在實(shí)施例中,系統(tǒng)包括處理器,其包括一個(gè)或多個(gè)核和多個(gè)混疊寄存器,用于存儲(chǔ)與環(huán)的多個(gè)操作關(guān)聯(lián)的存儲(chǔ)器范圍信息。該存儲(chǔ)器范圍信息引用存儲(chǔ)器內(nèi)的一個(gè)或多個(gè)存儲(chǔ)器位點(diǎn)。系統(tǒng)還包括寄存器分配部件,用于將所述混疊寄存器中的每個(gè)分配給環(huán)的對(duì)應(yīng)操作,其中根據(jù)旋轉(zhuǎn)調(diào)度進(jìn)行所述分配,并且混疊寄存器中的一個(gè)被分配給環(huán)的第一迭代中的第一操作和環(huán)的后續(xù)迭代中的第二操作。系統(tǒng)還包括耦合于處理器的存儲(chǔ)器。描述其他實(shí)施例并且它們被要求保護(hù)。
【專利說明】流水線調(diào)度中混疊寄存器的分配
【技術(shù)領(lǐng)域】
[0001 ] 實(shí)施例涉及流水線調(diào)度操作。
【背景技術(shù)】
[0002]通常由編譯器處理的任務(wù)是存儲(chǔ)器消歧(memory disambiguat1n),其可包括檢測(cè)非混疊存儲(chǔ)器訪問,例如訪問不同存儲(chǔ)器位點(diǎn)的加載或存儲(chǔ)。這些操作可調(diào)度成為了更好的指令級(jí)并行性而無序運(yùn)行。相比之下,訪問相同存儲(chǔ)器位點(diǎn)的存儲(chǔ)器操作標(biāo)記為“混疊(aliased) ”,并且無法被無序調(diào)度。
[0003]在編譯器優(yōu)化(例如,軟件流水線)中通常包括存儲(chǔ)器消歧。軟件流水線可以通過使連續(xù)迭代的執(zhí)行重疊而為環(huán)利用指令級(jí)并行性。然而,連續(xù)迭代中操作的執(zhí)行的重疊可以產(chǎn)生混疊。
【專利附圖】
【附圖說明】
[0004]圖1是根據(jù)本發(fā)明的實(shí)施例用于調(diào)度混疊寄存器的系統(tǒng)的框圖。
[0005]圖2A、B、C圖示根據(jù)本發(fā)明的實(shí)施例的混疊寄存器分配方案。
[0006]圖3是根據(jù)本發(fā)明的另一個(gè)實(shí)施例的混疊寄存器分配方案的圖示。
[0007]圖4是根據(jù)本發(fā)明的實(shí)施例用于調(diào)度混疊寄存器的方法的流程圖。
[0008]圖5是根據(jù)本發(fā)明的實(shí)施例的處理器的框圖。
[0009]圖6是根據(jù)本發(fā)明的實(shí)施例包括多個(gè)核的處理器的實(shí)施例的圖示。
[0010]圖7是根據(jù)本發(fā)明的實(shí)施例的系統(tǒng)的框圖。
【具體實(shí)施方式】
[0011]為了在運(yùn)行時(shí)執(zhí)行的優(yōu)化,硬件支持可用于完成存儲(chǔ)器消歧。在本發(fā)明的實(shí)施例中,硬件支持可包括寄存器文件(例如,旋轉(zhuǎn)寄存器文件),其包括多個(gè)存儲(chǔ)器訪問寄存器(“混疊寄存器”),這些寄存器可應(yīng)用于例如環(huán)等循環(huán)碼,其包括要為了多個(gè)迭代而執(zhí)行的多個(gè)操作。在實(shí)施例中,混疊寄存器可應(yīng)用于環(huán)的軟件流水線調(diào)度來實(shí)行存儲(chǔ)器消歧并且在運(yùn)行時(shí)發(fā)現(xiàn)混疊。
[0012]例如,在調(diào)度階段期間,環(huán)內(nèi)的存儲(chǔ)器訪問(例如,加載操作或存儲(chǔ)操作,在本文是“操作”)可以假設(shè)為沒有混疊(“數(shù)據(jù)猜測(cè)”),例如可以假設(shè)在存儲(chǔ)器訪問之間沒有依賴性(例如,有序關(guān)系)。盡管數(shù)據(jù)猜測(cè)實(shí)現(xiàn)更多的并行性(例如,計(jì)算資源通過操作的無序處理的高效使用),它也可導(dǎo)致錯(cuò)誤。例如,如果存儲(chǔ)器訪問碰巧彼此混疊(例如,存儲(chǔ)器訪問被引導(dǎo)到重疊的存儲(chǔ)器位點(diǎn))并且如果在執(zhí)行調(diào)度中存儲(chǔ)器訪問的順序與它們?cè)谠辑h(huán)中的順序不同,則數(shù)據(jù)猜測(cè)是錯(cuò)誤的,例如數(shù)據(jù)猜測(cè)失敗。為了捕捉將導(dǎo)致混疊的該情況,可以對(duì)每個(gè)存儲(chǔ)器訪問分配混疊寄存器,其在執(zhí)行訪問時(shí)記錄訪問的地址(例如,被訪問存儲(chǔ)器的起始地址和范圍)的存儲(chǔ)器范圍。訪問的存儲(chǔ)器范圍可與所有潛在混置訪問的混置寄存器比較并且如果存在匹配,則識(shí)別混疊,例如數(shù)據(jù)猜測(cè)的失敗。這樣的失敗可通過例如執(zhí)行恢復(fù)代碼來處理。在一些實(shí)施例中,恢復(fù)代碼的執(zhí)行可導(dǎo)致退回到環(huán)之前的迭代,和/或?qū)Σ僮髦匦屡判騺硐殳B。
[0013]一般存在兩種混疊寄存器:靜態(tài)和旋轉(zhuǎn)。靜態(tài)混疊寄存器與旋轉(zhuǎn)混疊寄存器使用起來不同,例如在指令中編碼如何比較寄存器方面。為了執(zhí)行與靜態(tài)混疊寄存器的比較,靜態(tài)混疊寄存器的寄存器號(hào)可被顯式編碼。與靜態(tài)寄存器相比之下,典型地不單獨(dú)比較旋轉(zhuǎn)混疊寄存器。相反,僅對(duì)一個(gè)寄存器號(hào)編碼并且比較所有寄存器,從編碼寄存器開始直到編號(hào)最大的寄存器。該技術(shù)可解決編碼但可產(chǎn)生假肯定,例如如果未正確地分配寄存器。
[0014]注意對(duì)于旋轉(zhuǎn)混疊寄存器文件,比較可以是“單向的”,例如比較可以是針對(duì)編號(hào)最大的寄存器的“向上檢查”,而不是“向下”。可存在基址指針,其指向混疊寄存器文件。在“旋轉(zhuǎn)”中,基址指針上移,并且從原始到基址指針?biāo)赶虻漠?dāng)前寄存器,清除所有寄存器。
[0015]本發(fā)明的實(shí)施例在軟件流水線中可使用旋轉(zhuǎn)混疊寄存器。在本文,“寄存器”或“混疊寄存器”通常指“旋轉(zhuǎn)混疊寄存器”。
[0016]圖1是根據(jù)本發(fā)明的實(shí)施例用于調(diào)度混疊寄存器的系統(tǒng)100的框圖。該系統(tǒng)100包括處理器110,其耦合于動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM) 180。該處理器110可包括多個(gè)核112α、112Γ..112η來執(zhí)行指令。處理器110可包括寄存器分配邏輯114、指令調(diào)度邏輯116、旋轉(zhuǎn)寄存器文件118、混疊檢測(cè)邏輯120和一個(gè)或多個(gè)高速緩存存儲(chǔ)器(其包括高速緩存122)。在實(shí)施例中,寄存器分配邏輯114、指令調(diào)度邏輯116和混疊檢測(cè)邏輯120中的一個(gè)或多個(gè)可以是軟件、硬件、固件或其組合。例如,寄存器分配邏輯114可包括要由執(zhí)行硬件執(zhí)行的軟件或?qū)S霉碳驅(qū)S秒娐坊蚱浣M合。指令調(diào)度邏輯116可包括軟件、硬件、固件或其組合。例如,指令分配邏輯114可包括要由執(zhí)行硬件執(zhí)行的軟件或?qū)S霉碳驅(qū)S秒娐坊蚱浣M合。
[0017]在操作中,指令調(diào)度邏輯116可創(chuàng)建操作調(diào)度用于環(huán)(例如,對(duì)于多個(gè)N個(gè)迭代要迭代執(zhí)行的限定操作組)的執(zhí)行。指令調(diào)度邏輯116可調(diào)度操作(例如,軟件流水線)以便實(shí)現(xiàn)可用計(jì)算資源的高效利用。
[0018]由于軟件流水線,由指令調(diào)度邏輯產(chǎn)生的執(zhí)行調(diào)度與在環(huán)中規(guī)定的操作的執(zhí)行順序相比可導(dǎo)致不同的執(zhí)行順序。例如,兩個(gè)操作的環(huán)(操作a后跟操作b)可由指令調(diào)度邏輯116調(diào)度使得對(duì)于每個(gè)迭代執(zhí)行操作b,在這之后執(zhí)行操作a,以便高效利用可用計(jì)算資源。
[0019]對(duì)于環(huán)中的多個(gè)迭代中的每個(gè),寄存器分配邏輯114可將旋轉(zhuǎn)寄存器文件118中的一組混疊寄存器中的每個(gè)混疊寄存器分配給環(huán)中的對(duì)應(yīng)操作。在實(shí)施例中,旋轉(zhuǎn)寄存器文件118的每個(gè)混疊寄存器可不止一次地被分配,例如,可對(duì)連續(xù)操作分配混疊寄存器,從而旋轉(zhuǎn)通過多個(gè)(例如,有限數(shù)量的)混疊寄存器(假設(shè)沒有混疊寄存器同時(shí)被分配給兩個(gè)操作)。
[0020]每個(gè)混疊寄存器可用于將存儲(chǔ)器訪問數(shù)據(jù)(例如,一個(gè)或多個(gè)存儲(chǔ)器位點(diǎn)的存儲(chǔ)器地址范圍)存儲(chǔ)在高速緩存122中或DRAM 180中,通過環(huán)的對(duì)應(yīng)操作來訪問該數(shù)據(jù)。在實(shí)施例中,可由混疊檢測(cè)邏輯120將混疊寄存器中的一個(gè)的內(nèi)容與旋轉(zhuǎn)寄存器文件118的混疊寄存器中的若干其他的內(nèi)容比較,來確定是否存在混疊,例如在相同時(shí)幀是否存在對(duì)共同存儲(chǔ)器位點(diǎn)的訪問(經(jīng)由例如加載操作或存儲(chǔ)操作)。
[0021]圖2A、B、C圖示根據(jù)本發(fā)明的實(shí)施例的寄存器分配方案。在圖2A中,作為示范性環(huán),偽代碼環(huán)210包括操作a和操作b。操作a和b兩者都是存儲(chǔ)器訪問,例如加載或存儲(chǔ)操作(在本文是“操作”)。
[0022]對(duì)于N=3,環(huán)210執(zhí)行3個(gè)迭代,例如i=0、l、2。注意在由偽代碼210描述的環(huán)中,在相同迭代中在操作b之前執(zhí)行操作a,并且在后續(xù)迭代中在所有a操作和所有b操作之前也執(zhí)行操作a。
[0023]在圖2B中,描繪對(duì)于環(huán)的軟件流水線調(diào)度220。在軟件流水線調(diào)度220中,在迭代O內(nèi)將操作a調(diào)度成在操作b執(zhí)行后執(zhí)行。在迭代I中,操作a調(diào)度成在操作b執(zhí)行后執(zhí)行。在迭代2中,操作a調(diào)度成在操作b執(zhí)行后執(zhí)行。如與環(huán)210相比,操作的重新排序可引起混疊,其可通過使用運(yùn)行時(shí)混疊監(jiān)視來檢測(cè)??煞峙浠殳B寄存器來實(shí)現(xiàn)運(yùn)行時(shí)混疊監(jiān)視。
[0024]在圖2C中,混疊寄存器分配方案230代表根據(jù)本發(fā)明的實(shí)施例的技術(shù)方案。X軸232指示時(shí)間并且Y軸234指示與對(duì)應(yīng)混疊寄存器關(guān)聯(lián)的寄存器號(hào)。條242-250代表操作的“壽命時(shí)間”。第一操作的壽命時(shí)間可限定為這樣的時(shí)期,其以第一操作(“生產(chǎn)者操作”)的執(zhí)行開始并且在執(zhí)行第二操作時(shí)結(jié)束,該第二操作可在完成第二操作之前與第一操作混疊。每個(gè)壽命時(shí)間用對(duì)應(yīng)的生產(chǎn)者操作來標(biāo)記。例如,壽命時(shí)間244在時(shí)間t=l處開始(在該時(shí)間處開始執(zhí)行操作b),并且在t=5處結(jié)束,其是結(jié)束操作a的執(zhí)行時(shí)的時(shí)間(例如,迭代O中指令b具有關(guān)聯(lián)的壽命時(shí)間244)。
[0025]分配方案230在每個(gè)迭代內(nèi)對(duì)環(huán)的每個(gè)操作分配混疊寄存器(對(duì)于N=3,迭代i=0、1、2)。對(duì)于環(huán)迭代i,分別對(duì)a和b的壽命時(shí)間分配寄存器2*i和2*i+l。
[0026]例如,在迭代236 (i=0,迭代O)中,在時(shí)間軸232上的時(shí)間=4處,操作a開始執(zhí)行。要存儲(chǔ)在混疊寄存器O中的操作a的存儲(chǔ)器訪問地址范圍可與編號(hào)較高的混疊寄存器中的每個(gè)的存儲(chǔ)的訪問范圍比較:從寄存器I到與主動(dòng)操作關(guān)聯(lián)的編號(hào)最大的寄存器,例如寄存器I和3,將這些寄存器在第一迭代236和第二迭代238中分配給操作b。(寄存器2在迭代238中分配給操作a,其要在迭代236中結(jié)束操作a的壽命時(shí)間242后執(zhí)行,并且因此未被考慮)。采用該方式,混疊可以通過存儲(chǔ)在第一分配混疊寄存器中的存儲(chǔ)器訪問范圍與存儲(chǔ)在后續(xù)分配的混疊寄存器中的存儲(chǔ)的存儲(chǔ)器訪問范圍的比較而動(dòng)態(tài)捕捉。
[0027]注意在時(shí)間t=5處,迭代236 (“迭代O”)的壽命時(shí)間242和244已經(jīng)到期,并且因此在t=5處開始,將不進(jìn)行對(duì)于第一迭代236的壽命時(shí)間242和244的分配寄存器的內(nèi)容的額外比較。因此,寄存器O和I可在迭代240 (“迭代2”)中重用,該迭代240在t=5處開始。
[0028]在混疊寄存器分配方案230的示例中,由于例如對(duì)于環(huán)210的存儲(chǔ)器位點(diǎn)的重疊使用,一組四個(gè)旋轉(zhuǎn)寄存器(編號(hào)為0-3)足以檢測(cè)混疊實(shí)例。如根據(jù)流水線調(diào)度220所執(zhí)行的,環(huán)210具有迭代間隔(224,以及226) Λ t=2,其是連續(xù)迭代的起始之間的時(shí)間間隔。寄存器分配方案230中的迭代間隔(260,以及262)也是Λ t=2。
[0029]可以分配混疊寄存器使得總共4個(gè)旋轉(zhuǎn)寄存器足以實(shí)施比較來檢測(cè)混疊。對(duì)于包括具有更復(fù)雜軟件流水線方案的超過兩個(gè)操作的環(huán),可需要更大的旋轉(zhuǎn)寄存器組來檢測(cè)混疊的每個(gè)實(shí)例。對(duì)于任何N值,有限集合的混疊寄存器(小于N)可在旋轉(zhuǎn)基礎(chǔ)上分配,例如在第一混疊寄存器處開始并且繼續(xù)通過編號(hào)最大的混疊寄存器并且循環(huán)重復(fù)來實(shí)現(xiàn)混疊的檢測(cè)。
[0030]圖3是根據(jù)本發(fā)明的另一個(gè)實(shí)施例的寄存器分配方案300的圖示。寄存器分配300旨在減少混疊寄存器的數(shù)量而不改變軟件流水線調(diào)度。
[0031]時(shí)間軸302可度量每個(gè)操作a和b的壽命時(shí)間。寄存器軸304可指示分配哪個(gè)混疊寄存器來存儲(chǔ)對(duì)于每個(gè)操作的對(duì)應(yīng)存儲(chǔ)器訪問范圍(例如,在例如圖1的DRAM 180等存儲(chǔ)器內(nèi)的地址范圍)。例如,在迭代306 (第O個(gè)迭代)中,寄存器O存儲(chǔ)與操作a (其具有壽命時(shí)間312)關(guān)聯(lián)的存儲(chǔ)器訪問范圍,并且寄存器I存儲(chǔ)與操作b (其具有壽命時(shí)間314)關(guān)聯(lián)的存儲(chǔ)器訪問范圍。操作a (如在圖2的偽代碼210中示出的)預(yù)計(jì)在操作b之前出現(xiàn)。
[0032]為了確保在第一迭代的操作a與b之間不存在混疊,在圖3的方案300中,操作b的壽命時(shí)間314延伸到操作a的壽命時(shí)間312的末端并且混疊寄存器I對(duì)于壽命時(shí)間314分配給操作b。在寄存器分配300中,迭代中操作a的壽命時(shí)間在相同迭代和下一個(gè)迭代中在操作b的壽命時(shí)間之上,并且對(duì)于混疊的檢查包括從混疊寄存器O到混疊寄存器I (按旋轉(zhuǎn)混疊寄存器的數(shù)字順序“向上”)。此外,因?yàn)榈?06 (“迭代O”)中操作a的壽命時(shí)間312在迭代308 (“迭代I”)中操作b的壽命時(shí)間318期間發(fā)生,寄存器O的內(nèi)容可與寄存器2的內(nèi)容比較來確定在壽命時(shí)間312期間的操作a與壽命時(shí)間318期間的操作b之間是否存在混疊。
[0033]注意壽命時(shí)間314在t=5處結(jié)束。查看迭代308 (“迭代1”),因?yàn)閴勖鼤r(shí)間314結(jié)束并且超過壽命時(shí)間314不需要寄存器1,可以看到混疊寄存器I可以用于存儲(chǔ)迭代308中所包括的具有壽命時(shí)間316的操作a的關(guān)聯(lián)存儲(chǔ)器訪問范圍。虛線324和325指示迭代308 (迭代I)的邊界,該迭代308包括具有壽命時(shí)間318和分配的寄存器2的操作b的執(zhí)行,以及具有壽命時(shí)間316和分配的寄存器I的操作a的執(zhí)行。
[0034]從而,可以循環(huán)分配寄存器,例如寄存器I可用于在壽命時(shí)間314(例如,時(shí)間間隔Δ t=l — 5)期間存儲(chǔ)迭代306中的操作b的存儲(chǔ)器訪問范圍,并且寄存器I還可在迭代308中用于存儲(chǔ)對(duì)于在壽命時(shí)間316 (例如,時(shí)間間隔Λ t=6 — 7)期間的操作a的存儲(chǔ)器訪問范圍。
[0035]迭代310 (“迭代2”)被虛線326和328界定,并且包括使用寄存器O存儲(chǔ)操作b的存儲(chǔ)器訪問范圍來執(zhí)行具有壽命時(shí)間322 ( Δ t=5 - 9)的操作b,和使用寄存器2存儲(chǔ)迭代310的操作a的存儲(chǔ)器訪問范圍來執(zhí)行具有壽命時(shí)間320 ( Δ t=8 - 9)的操作a,因?yàn)閴勖鼤r(shí)間318在t=7處到期,這釋放寄存器2用于在迭代310中重用。從而,寄存器2在連續(xù)迭代中重用(“寄存器重用”),例如在操作b的壽命時(shí)間318期間在迭代308中,以及也在操作a的壽命時(shí)間320期間在迭代310中。連續(xù)迭代中該寄存器重用技術(shù)可以導(dǎo)致用于在環(huán)(例如,圖2的環(huán)210)的執(zhí)行期間檢測(cè)混疊的寄存器的總數(shù)量減少。此外,在寄存器分配300中,可循環(huán)使用寄存器O、1、2的組,例如寄存器O在壽命時(shí)間312 ( Δ t=4 - 5)期間在迭代306 (“迭代O”)中使用并且再次在壽命時(shí)間322 ( At=5 — 9)期間在迭代310 (“迭代2”)中使用。
[0036]對(duì)于環(huán)的軟件流水線調(diào)度使用混疊寄存器的旋轉(zhuǎn)分配可以視為寄存器分配問題到循環(huán)調(diào)度問題的變換。每個(gè)依賴性(基于操作的執(zhí)行順序的操作的關(guān)系)可視為具有依賴距離,例如依賴操作之間的迭代次數(shù)。例如,在圖2和3中,存在兩個(gè)依賴性:
I)具有距離(例如,迭代之間的距離)零(例如,相同迭代)的a — b,其意指要對(duì)相同迭代中操作a的壽命時(shí)間分配相同或比操作b的壽命時(shí)間編號(hào)要小的寄存器。
[0037]2)具有距離一(相鄰迭代)的a — b,其意指要對(duì)迭代中操作a的壽命時(shí)間分配相同或比相鄰迭代中操作b的壽命時(shí)間編號(hào)要小的寄存器,使得旋轉(zhuǎn)混疊寄存器將按旋轉(zhuǎn)寄存器的數(shù)字“向上”順序來檢查。
[0038]在本發(fā)明的實(shí)施例中,基于依賴圖,“對(duì)于壽命時(shí)間的軟件流水線調(diào)度”可以通過將壽命時(shí)間視為操作而創(chuàng)建,并且軟件流水線算法可以應(yīng)用于調(diào)度壽命時(shí)間。
[0039]可以制定調(diào)度方法,從而將寄存器分配問題制定為將壽命時(shí)間“調(diào)度”到寄存器內(nèi)。例如,讓a(i)成為環(huán)迭代i中的操作a,并且讓r (a, i)成為由調(diào)度分配給它的寄存器。
[0040]調(diào)度遵從下列約束:
(I)模約束:對(duì)于所有i,r (a, i)= r (a, 0)+i*C。在這里C是要由調(diào)度器確定的常數(shù)。即,操作的壽命時(shí)間從調(diào)度中的寄存器方面來看在恒定時(shí)期中出現(xiàn)。例如,在圖2的框230中,操作a的壽命時(shí)間在恒定時(shí)期C=2 (在寄存器O和2中)中出現(xiàn);在圖3中,操作a的壽命時(shí)間在恒定時(shí)期C=I (在寄存器O和I中)中出現(xiàn)。
[0041](2)依賴約束:假設(shè)a(i)和b(i+d)(其中d彡O)可混疊,并且a(i)按原始執(zhí)行順序在b(i+d)之前,但它們?cè)诃h(huán)的軟件流水線調(diào)度中重新排序。為了確保在運(yùn)行時(shí)期間捕捉任何混疊,我們讓r (a, i)彡r (b, i+d)(對(duì)于所有i)。即,要對(duì)a (i)分配與b (i+d)相同的寄存器,或?qū)(i)分配編號(hào)較小的寄存器以便使得a(i)的存儲(chǔ)器地址范圍與b (i+d)的存儲(chǔ)器地址范圍相比較。這是因?yàn)樾D(zhuǎn)寄存器文件的單向比較特征。該約束可以通過依賴a — b (具有等于d的距離和O延遲(從寄存器方面來看))來模型化。
[0042](3)資源約束:如果兩個(gè)操作的壽命時(shí)間在時(shí)間上重疊,無法對(duì)它們分配相同的寄存器。
[0043]傳統(tǒng)的軟件流水線具有兩個(gè)維度:資源和時(shí)間。它在遵從所有依賴和資源約束的情況下以恒定周期(初始間隔,“II”)將操作調(diào)度在適當(dāng)時(shí)間。在本文呈現(xiàn)的寄存器分配中,寄存器可采用與“時(shí)間”相同的方式來對(duì)待,時(shí)間可視為“資源”,壽命時(shí)間可視為“操作”,并且混疊檢查視為“依賴”。
[0044]根據(jù)本發(fā)明的實(shí)施例,在操作上,可考慮下列考量來達(dá)成調(diào)度:
1.依賴建立。
[0045]具有距離d (a與b之間的迭代次數(shù))的依賴a — b根據(jù)上文的依賴約束添加到依賴圖,d=0的時(shí)候除外,但a在相同迭代中按原始執(zhí)行順序在b之后。
[0046]此外,可以添加下列依賴來避免假肯定,只要它在依賴圖中未完成局部循環(huán)即可,其中局部循環(huán)由距離全部是O的依賴組成:假設(shè)a(i)和b(i+d)(其中d>0)可混疊,并且a(i)按原始執(zhí)行順序在b (i+d)之前并且在環(huán)的軟件流水線調(diào)度中也是如此。在該情況下,當(dāng)b (i+d)執(zhí)行時(shí),它應(yīng)完全沒有對(duì)于混疊來檢查a (i)。這可以通過確保對(duì)b (i+d)分配比a(i)編號(hào)更大的寄存器而實(shí)行。即,對(duì)于所有i,r (a, i) < r (b, i+d)。這可以通過添加具有等于d的距離和延遲為I的依賴a — b而進(jìn)行。
[0047]假肯定可以通過添加下列種類的依賴而進(jìn)一步最小化,只要它們?cè)谝蕾噲D中未完成局部循環(huán)即可:對(duì)于來自相同迭代的操作a和b,可以存在a從不檢查b的情況??梢蕴砑泳哂械扔贠的距離和延遲為I的依賴b — a。
[0048]2.循環(huán)調(diào)度 (I)僅基于局部依賴來調(diào)度壽命時(shí)間。即,僅考慮距離是O的依賴并且忽略所有其他。這產(chǎn)生對(duì)于單環(huán)迭代中的壽命時(shí)間的調(diào)度。
[0049]可以采用各種策略來對(duì)要調(diào)度的壽命時(shí)間定優(yōu)先級(jí)。在實(shí)施例中,可采用叫作“首先適應(yīng)(first-fit)”的簡(jiǎn)單調(diào)度策略:如果超過一個(gè)壽命時(shí)間準(zhǔn)備被調(diào)度,用最早起始時(shí)間對(duì)這一個(gè)定優(yōu)先級(jí)。
[0050]假設(shè)每個(gè)環(huán)迭代的壽命時(shí)間具有相同調(diào)度??紤]忽略的依賴性的情況下,使兩個(gè)連續(xù)環(huán)迭代的壽命時(shí)間的調(diào)度重疊。這產(chǎn)生更緊湊的調(diào)度,其可以在迭代之間重用寄存器。該局部調(diào)度和壓縮方法連同首先適應(yīng)策略可有效地減少假肯定。
[0051]3.處理未添加的依賴以在依賴建立(上文)中避免循環(huán)形成。對(duì)于省略的依賴a — b中的每個(gè),檢查來確定它是否被調(diào)度遵從。如果否的話,使b移到靜態(tài)混疊寄存器。
[0052]4.寄存器分配和旋轉(zhuǎn)。寄存器分配可以采取平坦時(shí)間-空間圖,其具有無限數(shù)量的寄存器。將圖中的寄存器號(hào)映射到旋轉(zhuǎn)寄存器文件中的那些。旋轉(zhuǎn)指令也可以每II個(gè)循環(huán)插入環(huán)的軟件流水線調(diào)度內(nèi),其可以每II個(gè)循環(huán)“清除” C數(shù)量的死壽命時(shí)間。
[0053]圖4是根據(jù)本發(fā)明的實(shí)施例用于分配混疊寄存器的方法的流程圖400。在框402處,可在壽命時(shí)間之間建立依賴。繼續(xù)到框404,執(zhí)行循環(huán)調(diào)度,其包括根據(jù)建立的依賴和資源約束來調(diào)度壽命時(shí)間到寄存器。前進(jìn)到框406,可處理在框402中未考慮的依賴,例如通過使用靜態(tài)混疊寄存器。前往框408,可對(duì)環(huán)的操作分配多個(gè)混疊寄存器,例如,可在每個(gè)迭代中對(duì)環(huán)的每個(gè)操作分配混疊寄存器??裳h(huán)分配混疊寄存器,其中每個(gè)寄存器對(duì)于相應(yīng)操作的壽命時(shí)間而分配,并且每個(gè)寄存器可存儲(chǔ)由相應(yīng)操作訪問的存儲(chǔ)器地址的指示。在一些實(shí)施例中,分配給第一迭代中的第一操作的至少一個(gè)寄存器可被在第一操作的關(guān)聯(lián)壽命時(shí)間已經(jīng)到期后開始的連續(xù)迭代中的另一個(gè)操作重用。從而,兩個(gè)連續(xù)環(huán)迭代的壽命時(shí)間可導(dǎo)致緊湊的調(diào)度,其可重用迭代之間的寄存器。繼續(xù)到框410,旋轉(zhuǎn)清除指令可添加到調(diào)度,被執(zhí)行以便清除(例如,擦除)與結(jié)束的壽命時(shí)間關(guān)聯(lián)的混疊寄存器。
[0054]現(xiàn)在參考圖5,示出根據(jù)本發(fā)明的實(shí)施例的處理器的框圖。如在圖5中示出的,處理器500可以是多核處理器,其包括核域510中的多個(gè)核510a_510n。這些核中的一個(gè)或多個(gè)可包括指令調(diào)度邏輯、混疊寄存器(例如,旋轉(zhuǎn)寄存器文件)和寄存器分配邏輯,用于根據(jù)本發(fā)明的實(shí)施例對(duì)環(huán)的操作分配混疊寄存器。
[0055]核可經(jīng)由互連515而耦合于系統(tǒng)代理或非核520,其包括各種部件。如看到的,非核520可包括共享高速緩存530,其可以是最后級(jí)別的高速緩存并且包括高速緩存控制器532。另外,非核可包括集成存儲(chǔ)器控制器540和各種接口 550。
[0056]進(jìn)一步參考圖5,處理器500可與系統(tǒng)存儲(chǔ)器560通信,例如經(jīng)由存儲(chǔ)器總線。另夕卜,通過接口 550,可以連接到各種片外部件,例如外圍裝置、大容量存儲(chǔ)等。盡管在圖5的實(shí)施例中用該特定實(shí)現(xiàn)示出,本發(fā)明的范圍在該方面不受限制。
[0057]參考圖6,圖示包括多個(gè)核的處理器的實(shí)施例。處理器600包括任何處理器或處理裝置,例如微處理器、嵌入式處理器、數(shù)字信號(hào)處理器(DSP)、網(wǎng)絡(luò)處理器、手持處理器、應(yīng)用處理器、協(xié)同處理器、片上系統(tǒng)(SOC)或執(zhí)行代碼的其他裝置。在一個(gè)實(shí)施例中,處理器600包括至少兩個(gè)核-核601和602,其可包括不對(duì)稱核或?qū)ΨQ核(圖示的實(shí)施例)。然而,處理器600可包括任何數(shù)量的處理元件,其可以是對(duì)稱或不對(duì)稱的。
[0058]在一個(gè)實(shí)施例中,處理元件指用于支持軟件線程的硬件或邏輯。硬件處理元件的示例包括:線程單元、線程槽、線程、過程單元、上下文、上下文單元、邏輯處理器、硬件線程、核和/或能夠保持對(duì)于處理器的狀態(tài)(例如執(zhí)行狀態(tài)或架構(gòu)狀態(tài))的任何其他元件。也就是說,在一個(gè)實(shí)施例中,處理元件指能夠獨(dú)立地與代碼(例如軟件線程、操作系統(tǒng)、應(yīng)用或其他代碼)關(guān)聯(lián)的任何硬件。物理處理器典型地指集成電路,其潛在地包括任何數(shù)量的其他處理元件,例如核或硬件線程。
[0059]核通常指定位在能夠維持獨(dú)立架構(gòu)狀態(tài)的集成電路上的邏輯,其中每個(gè)獨(dú)立維持的架構(gòu)狀態(tài)與至少一些專用執(zhí)行資源關(guān)聯(lián)。與核相比之下,硬件線程典型地指定位在能夠維持獨(dú)立架構(gòu)狀態(tài)的集成電路上的任何邏輯,其中獨(dú)立維持的架構(gòu)狀態(tài)共享對(duì)執(zhí)行資源的訪問。如可以看到的,在共享某些資源并且其他專用于架構(gòu)狀態(tài)時(shí),硬件線程和核的術(shù)語之間的界線重疊。然而通常,核和硬件線程由操作系統(tǒng)視為個(gè)體邏輯處理器,其中操作系統(tǒng)能夠獨(dú)立調(diào)度每個(gè)邏輯處理器上的操作。
[0060]物理處理器600 (如在圖6中圖示)包括兩個(gè)核,核601和602。在這里,核601和602視為對(duì)稱核,即具有相同配置、功能單元和/或邏輯的核。在另一個(gè)實(shí)施例中,核601包括無序處理器核,而核602包括有序處理器核。然而,核601和602可獨(dú)立地從任何類型的核選擇,例如本地核、軟件管理核、適于執(zhí)行本地指令集架構(gòu)(ISA)的核、適于執(zhí)行轉(zhuǎn)換ISA的核、聯(lián)合設(shè)計(jì)的核或其他已知核。再進(jìn)一步論述,因?yàn)楹?02中的單元采用相似方式操作,在核601中圖示的功能單元在下文進(jìn)一步詳細(xì)描述。
[0061]如描繪的,核601包括兩個(gè)硬件線程601a和601b,其也可稱為硬件線程槽601a和601b。因此,在一個(gè)實(shí)施例中,軟件實(shí)體(例如操作系統(tǒng))潛在地將處理器600視為四個(gè)獨(dú)立處理器,即能夠并發(fā)執(zhí)行四個(gè)軟件線程的四個(gè)邏輯處理器或處理元件。如上文提到的,第一線程與架構(gòu)狀態(tài)寄存器601a關(guān)聯(lián),第二線程與架構(gòu)狀態(tài)寄存器601b關(guān)聯(lián),第三線程可與架構(gòu)狀態(tài)寄存器602a關(guān)聯(lián),并且第四線程可與架構(gòu)狀態(tài)寄存器602b關(guān)聯(lián)。在這里,架構(gòu)狀態(tài)寄存器(601a、601b、602a和602b)中的每個(gè)可稱為處理元件、線程槽或線程單元,如上文描述的。如圖示的,架構(gòu)狀態(tài)寄存器601a在架構(gòu)狀態(tài)寄存器601b中復(fù)制,因此個(gè)體架構(gòu)狀態(tài)/上下文能夠被存儲(chǔ)以用于邏輯處理器601a和邏輯處理器601b。在核601中,其他較小的資源(例如指令指針)以及分配器和重命名塊630中的重命名邏輯也可對(duì)于線程601a和601b復(fù)制。例如重排序器/引退單元635中的重排序緩沖器、ILTB 620、加載/存儲(chǔ)緩沖器和隊(duì)列等一些資源可通過分區(qū)而共享。例如通用內(nèi)部寄存器、頁表基址寄存器、低級(jí)數(shù)據(jù)高速緩存和數(shù)據(jù)TLB 615、執(zhí)行單元640和無序單元635的部分等其他資源潛在地完全共享。
[0062]處理器600通常包括其他資源,其可完全被共享、通過分區(qū)而共享或被處理元件專用/專用于處理元件。在圖6中,圖示具有處理器的說明性邏輯單元/資源的純示范性處理器的實(shí)施例。注意處理器可包括或省略這些功能單元中的任何單元,以及包括未描繪的任何其他已知的功能單元、邏輯或固件。如圖示的,核601包括簡(jiǎn)化的代表性無序(000)處理器核。但在不同的實(shí)施例中可利用有序處理器。000核包括用于預(yù)測(cè)要執(zhí)行/采取的分支的分支目標(biāo)緩沖器620和用于存儲(chǔ)對(duì)于指令的地址轉(zhuǎn)換條目的指令轉(zhuǎn)換緩沖器(1-TLB)620。
[0063]核601進(jìn)一步包括解碼模塊625,其耦合于提取單元620來對(duì)提取的元素解碼。在一個(gè)實(shí)施例中,提取邏輯包括分別與線程槽601a、601b關(guān)聯(lián)的個(gè)體定序器。核601通常與第一 ISA關(guān)聯(lián),該第一 ISA限定/規(guī)定在處理器600上可執(zhí)行的指令。是第一 ISA的部分的機(jī)器代碼指令通常包括指令(稱為操作碼)的一部分,其引用/規(guī)定要執(zhí)行的指令或操作。解碼邏輯625包括電路,其從它們的操作碼識(shí)別這些指令并且在流水線上傳遞解碼的指令用于處理,如由第一 ISA限定的。例如,在一個(gè)實(shí)施例中,解碼器625包括這樣的邏輯,其設(shè)計(jì)成或適于識(shí)別特定指令,例如事務(wù)指令。由于由解碼器625識(shí)別,架構(gòu)或核601采取特定、預(yù)定義動(dòng)作來執(zhí)行與合適的指令關(guān)聯(lián)的任務(wù)。重要地是注意本文描述的任務(wù)、塊、操作和方法中的任一個(gè)可響應(yīng)于單個(gè)或多個(gè)指令而執(zhí)行,這些指令中的一些可以是新的或舊的指令。
[0064]在一個(gè)示例中,分配器和重命名塊630包括用于保留資源(例如寄存器文件)來存儲(chǔ)指令處理結(jié)果的分配器。然而,線程601a和601b潛在地能夠無序執(zhí)行,其中分配器和重命名塊630還保留其他資源(例如重排序緩沖器)來跟蹤指令結(jié)果。單元630還可包括寄存器重命名器,用于將程序/指令參考寄存器重命名為處理器600內(nèi)部的其他寄存器。重排序器/引退單元635包括例如上文提及的重排序緩沖器、加載緩沖器和存儲(chǔ)緩沖器等部件,用于支持無序執(zhí)行和稍后無序執(zhí)行的指令的有序引退。
[0065]在一個(gè)實(shí)施例中,調(diào)度器和執(zhí)行單元塊640包括調(diào)度器單元,用于調(diào)度執(zhí)行單元上的指令/操作。例如,調(diào)度器單元可根據(jù)流水線調(diào)度來調(diào)度環(huán)的操作。還包括與執(zhí)行單元關(guān)聯(lián)的寄存器文件來存儲(chǔ)信息指令處理結(jié)果。示范性執(zhí)行單元包括浮點(diǎn)執(zhí)行單元、整數(shù)執(zhí)行單元、跳轉(zhuǎn)執(zhí)行單元、加載執(zhí)行單元、存儲(chǔ)執(zhí)行單元和其他已知的執(zhí)行單元。
[0066]核601和602中的一個(gè)或二者可包括對(duì)應(yīng)的混疊寄存器文件(642或646),和對(duì)應(yīng)的寄存器分配邏輯(644或648),用于根據(jù)本發(fā)明的實(shí)施例對(duì)環(huán)中的多個(gè)操作中的每個(gè)分配對(duì)應(yīng)混疊寄存器文件(642或646)的混疊寄存器?;殳B寄存器可用于根據(jù)本發(fā)明的實(shí)施例來識(shí)別混疊。
[0067]較低級(jí)數(shù)據(jù)高速緩存和數(shù)據(jù)轉(zhuǎn)換緩沖器(D_TLB)651耦合于執(zhí)行單元640。D-TLB651存儲(chǔ)最近的虛擬/線性到物理地址轉(zhuǎn)換。作為特定示例,處理器可包括頁表結(jié)構(gòu),用于將物理存儲(chǔ)器分成多個(gè)虛擬頁面。
[0068]在這里,核601和602共享對(duì)更高級(jí)或更遠(yuǎn)高速緩存610的訪問,該更高級(jí)或更遠(yuǎn)高速緩存610高速緩存最近提取的元素。注意更高級(jí)或更遠(yuǎn)指的是增加或更遠(yuǎn)離執(zhí)行單元的高速緩存級(jí)別。在一個(gè)實(shí)施例中,更高級(jí)高速緩存610是最后級(jí)別的數(shù)據(jù)高速緩存-在處理器600上存儲(chǔ)器等級(jí)結(jié)構(gòu)中最后的高速緩存-例如第二或第三級(jí)數(shù)據(jù)高速緩存。然而,更高級(jí)高速緩存610不這樣受限制,因?yàn)樗膳c指令高速緩存關(guān)聯(lián)或包括指令高速緩存。跟蹤高速緩存-指令高速緩存類型-相反可在解碼器625后耦合來存儲(chǔ)最近解碼的痕跡(trace)ο
[0069]在描繪的配置中,處理器600還包括總線接口模塊605。歷史上,控制器670已經(jīng)包括在處理器600外部的計(jì)算系統(tǒng)中。在該情形中,總線接口 605與處理器600外部的裝置通信,例如系統(tǒng)存儲(chǔ)器675、芯片集(通常包括用于連接到存儲(chǔ)器675的存儲(chǔ)器控制器中樞,和連接外圍裝置的I/O控制器中樞)、存儲(chǔ)器控制器中樞、北橋或其他集成電路。并且在該情形中,總線605可包括任何已知互連,例如多點(diǎn)總線、點(diǎn)到點(diǎn)互連、串行互連、并行總線、一致性(例如,高速緩存一致性)總線、分層協(xié)議架構(gòu)、差動(dòng)總線和GTL總線。
[0070]存儲(chǔ)器675可專用于處理器600或與系統(tǒng)中的其他裝置共享。存儲(chǔ)器675類型的共同示例包括DRAM、SRAM、非易失性存儲(chǔ)器(NV存儲(chǔ)器)和其他已知存儲(chǔ)裝置。注意裝置680可包括耦合于存儲(chǔ)器控制器中樞的圖形加速器、處理器或卡、耦合于I/O控制器中樞的數(shù)據(jù)存儲(chǔ)、無線收發(fā)器、閃存裝置、音頻控制器、網(wǎng)絡(luò)控制器或其他已知裝置。
[0071]然而,注意在描繪的實(shí)施例中,控制器670圖示為處理器600的部分。近來,因?yàn)楦嗟倪壿嫼脱b置在單個(gè)芯片(die)(例如S0C)上集成,這些裝置中的每個(gè)可包含在處理器600上。例如,在一個(gè)實(shí)施例中,存儲(chǔ)器控制器中樞670在與處理器600相同的封裝和/或芯片上。在這里,核的一部分(核上部分)包括一個(gè)或多個(gè)控制器670,用于與例如存儲(chǔ)器675或圖形裝置680等其他裝置接口。包括用于與這樣的裝置接口的互連和控制器的配置通常稱為核上(或非核配置)。作為示例,總線接口 605包括環(huán)形互連,其具有用于與存儲(chǔ)器675接口的存儲(chǔ)器控制器和用于與圖形裝置680接口的圖形控制器。再者,在SOC環(huán)境中,甚至更多的裝置(例如網(wǎng)絡(luò)接口、協(xié)同處理器、存儲(chǔ)器675、圖形裝置680和任何其他已知計(jì)算機(jī)裝置/接口)可在單個(gè)芯片或集成電路上集成來提供具有高功能性和低功耗的小形狀因子。
[0072]實(shí)施例可在許多不同的系統(tǒng)類型中實(shí)現(xiàn)?,F(xiàn)在參考圖7,示出根據(jù)本發(fā)明的實(shí)施例的系統(tǒng)的框圖。如在圖7中示出的,多處理器系統(tǒng)700是點(diǎn)到點(diǎn)互連系統(tǒng),并且包括經(jīng)由點(diǎn)到點(diǎn)互連750而耦合的第一處理器770和第二處理器780。如在圖7中示出的,處理器770和780中的每個(gè)可以是多核處理器,其包括第一和第二處理器核(即,處理器核774a和774b以及處理器核784a和784b),但潛在地在處理器中可存在多得多的核。
[0073]仍參考圖7,第一處理器770進(jìn)一步包括存儲(chǔ)器控制器中樞(MCH) 722和點(diǎn)到點(diǎn)(P-P)接口 776和778。相似地,第二處理器780包括MCH 782和P-P接口 786和788。如在圖7中示出的,MCH 722和782使處理器耦合于相應(yīng)的存儲(chǔ)器,即存儲(chǔ)器732和存儲(chǔ)器734,其可以是本地附連到相應(yīng)處理器的系統(tǒng)存儲(chǔ)器(例如,DRAM)的部分。根據(jù)本發(fā)明的實(shí)施例,處理器770和780中的每個(gè)可包括寄存器文件(未示出)中的混疊寄存器和寄存器分配邏輯(未示出),用于對(duì)環(huán)的多個(gè)存儲(chǔ)器訪問操作中的每個(gè)分配混疊寄存器。根據(jù)本發(fā)明的實(shí)施例,混疊寄存器可用于檢測(cè)可由于環(huán)的操作的流水線調(diào)度而出現(xiàn)的混疊。
[0074]第一處理器770和第二處理器780可分別經(jīng)由P_P互連762和754而耦合于芯片集790。如在圖7中示出的,芯片集790包括P-P接口 794和798。
[0075]此外,芯片集790包括接口 792,用于通過P-P互連739而使芯片集790與高性能圖形引擎738耦合。進(jìn)而,芯片集790可經(jīng)由接口 796耦合于第一總線716。如在圖7中示出的,各種輸入/輸出(I/O)裝置714可連同總線橋718 —起耦合于第一總線716,該總線橋718使第一總線716耦合于第二總線720。各種裝置可耦合于第二總線720,這些裝置包括例如鍵盤/鼠標(biāo)722、通信裝置726和例如盤驅(qū)動(dòng)器或其他大容量存儲(chǔ)裝置等數(shù)據(jù)存儲(chǔ)單元728,其在一個(gè)實(shí)施例中可包括代碼730。此外,音頻I/O 724可耦合于第二總線720。實(shí)施例可以并入其他類型的系統(tǒng)內(nèi),其包括例如智能蜂窩電話、Ultrabook
[0076]下列示例關(guān)于另外的實(shí)施例。
[0077]在第一示例中,系統(tǒng)包括處理器,其包括一個(gè)或多個(gè)核。處理器還包括寄存器文件,其包括多個(gè)混疊寄存器,用于存儲(chǔ)與環(huán)的多個(gè)操作關(guān)聯(lián)的存儲(chǔ)器范圍信息。該存儲(chǔ)器范圍信息引用存儲(chǔ)器內(nèi)的一個(gè)或多個(gè)存儲(chǔ)器位點(diǎn)。處理器還包括寄存器分配邏輯,用于將混疊寄存器中的每個(gè)分配給環(huán)的對(duì)應(yīng)操作??筛鶕?jù)旋轉(zhuǎn)調(diào)度進(jìn)行分配并且將混疊寄存器中的至少一個(gè)分配給環(huán)的第一迭代中的第一操作和環(huán)的后續(xù)迭代中的第二操作。系統(tǒng)還包括耦合于處理器的存儲(chǔ)器??蛇x地,處理器進(jìn)一步包括指令調(diào)度邏輯,用于根據(jù)流水線調(diào)度來調(diào)度環(huán)的操作,其中環(huán)的至少一個(gè)操作要根據(jù)與環(huán)的操作的順序不同的執(zhí)行調(diào)度來執(zhí)行??蛇x地,一個(gè)或多個(gè)核中的一個(gè)可執(zhí)行存儲(chǔ)在第一混疊寄存器中的數(shù)據(jù)與存儲(chǔ)在混疊寄存器中的至少一個(gè)其他中的數(shù)據(jù)的比較來確定是否存在混疊。可選地,第一混疊寄存器可持續(xù)第一壽命時(shí)間地分配給第一操作并且第一混疊寄存器可持續(xù)第二壽命時(shí)間地分配給第二操作,其中第一壽命時(shí)間和第二壽命時(shí)間是非重疊時(shí)期??蛇x地,第一壽命時(shí)間在環(huán)的第一迭代內(nèi)并且第二壽命時(shí)間在環(huán)的第二迭代內(nèi),該第二迭代是依次挨著第一迭代的迭代??蛇x地,寄存器分配邏輯可執(zhí)行旋轉(zhuǎn)清除指令來擦除關(guān)聯(lián)壽命時(shí)間到期的每個(gè)混疊寄存器的內(nèi)容。
[0078]在第二示例中,至少一個(gè)計(jì)算機(jī)可讀介質(zhì)包括指令,其在被執(zhí)行時(shí)使系統(tǒng)能夠根據(jù)對(duì)于環(huán)的多個(gè)迭代的旋轉(zhuǎn)序列相繼將旋轉(zhuǎn)寄存器文件的多個(gè)混疊寄存器中的每個(gè)分配給環(huán)的對(duì)應(yīng)操作,其中每個(gè)混疊寄存器存儲(chǔ)由對(duì)應(yīng)操作訪問的一個(gè)或多個(gè)存儲(chǔ)器位點(diǎn)的指示并且混疊寄存器中的一個(gè)被分配給環(huán)的第一迭代中的第一操作和環(huán)的后續(xù)迭代中的第二操作。至少一個(gè)計(jì)算機(jī)可讀介質(zhì)還包括指令,用于通過比較分配的混疊寄存器中的至少一個(gè)的內(nèi)容與一個(gè)或多個(gè)其他分配的混疊寄存器的內(nèi)容來確定是否存在混疊條件。第一混疊寄存器可對(duì)于第一壽命時(shí)間分配給第一操作并且第一混疊寄存器對(duì)于第二壽命時(shí)間分配給第二操作,其中第一壽命時(shí)間和第二壽命時(shí)間是非重疊時(shí)期??蛇x地,第一壽命時(shí)間和第二壽命時(shí)間是環(huán)中的依次相鄰迭代。可選地,第一壽命時(shí)間和第二壽命時(shí)間在環(huán)的非相鄰迭代中??蛇x地,至少一個(gè)計(jì)算機(jī)可讀介質(zhì)包括額外指令,其在被執(zhí)行時(shí)使系統(tǒng)能夠?qū)τ诓僮饕约盎谂判蜿P(guān)系對(duì)于相同或不同迭代內(nèi)的另一個(gè)操作分配壽命時(shí)間并且對(duì)于壽命時(shí)間的持續(xù)時(shí)間對(duì)操作分配對(duì)應(yīng)混疊寄存器??蛇x地,至少一個(gè)計(jì)算機(jī)可讀介質(zhì)進(jìn)一步包括指令,其使系統(tǒng)能夠在持續(xù)時(shí)間到期時(shí)對(duì)另一個(gè)迭代中的另一個(gè)操作重新分配對(duì)應(yīng)混疊寄存器??蛇x地,至少一個(gè)計(jì)算機(jī)可讀介質(zhì)進(jìn)一步包括指令,其使系統(tǒng)能夠響應(yīng)于排序關(guān)系的存在來檢查混疊,其中該排序關(guān)系響應(yīng)于以下而被指示:根據(jù)流水線調(diào)度,調(diào)度的環(huán)的第一操作在環(huán)的第二操作之后執(zhí)行;以及環(huán)中環(huán)的第一操作在環(huán)的第二操作之前可執(zhí)行這一指示。
[0079]在第三示例中,方法包括根據(jù)對(duì)于環(huán)的多個(gè)迭代的旋轉(zhuǎn)序列相繼將寄存器文件的多個(gè)混疊寄存器中的每個(gè)分配給環(huán)的對(duì)應(yīng)操作,包括對(duì)環(huán)的第一迭代中的第一操作和環(huán)的后續(xù)迭代中的第二操作分配混疊寄存器中的一個(gè),其中每個(gè)混疊寄存器存儲(chǔ)由對(duì)應(yīng)操作訪問的存儲(chǔ)器位點(diǎn)的指示。方法還包括通過比較分配的混疊寄存器中的至少一個(gè)的內(nèi)容與一個(gè)或多個(gè)其他分配的混疊寄存器的內(nèi)容來確定是否存在混疊條件??蛇x地,方法包括將第一混疊寄存器對(duì)于第一壽命時(shí)間分配給第一操作以及將第一混疊寄存器對(duì)于第二壽命時(shí)間分配給第二操作,其中第一壽命時(shí)間和第二壽命時(shí)間是非重疊時(shí)期??蛇x地,第一壽命時(shí)間和第二壽命時(shí)間是環(huán)中的依次相鄰迭代??蛇x地,方法包括對(duì)于第一壽命時(shí)間將第一混疊寄存器分配給環(huán)的第一迭代中的第二操作以及對(duì)于第二壽命時(shí)間將第一混疊寄存器分配給環(huán)的第二迭代的第一操作,其中第一壽命時(shí)間和第二壽命時(shí)間是非重疊時(shí)期??蛇x地,方法包括將對(duì)于操作分配壽命時(shí)間以及基于排序關(guān)系分配壽命時(shí)間給相同迭代或不同迭代內(nèi)的另一個(gè)操作,以及對(duì)于該壽命時(shí)間的持續(xù)時(shí)間將對(duì)應(yīng)混疊寄存器分配給操作??蛇x地,方法包括在該持續(xù)時(shí)間到期時(shí)對(duì)另一個(gè)迭代中的另一個(gè)操作重新分配對(duì)應(yīng)混疊寄存器。可選地,方法包括通過比較分配給環(huán)的第一迭代的第一混疊寄存器的內(nèi)容與對(duì)于與第二操作關(guān)聯(lián)的第二壽命時(shí)間分配給第二操作的第二混疊寄存器的內(nèi)容來確定在環(huán)的第一迭代中是否存在混疊,其中第二壽命時(shí)間由第一操作的第一調(diào)度執(zhí)行時(shí)間相對(duì)于第二操作的第二調(diào)度執(zhí)行時(shí)間而確定??蛇x地,方法包括響應(yīng)于排序關(guān)系的存在來檢查混疊,其中該排序關(guān)系響應(yīng)于以下而指示:根據(jù)流水線調(diào)度,調(diào)度的環(huán)的第一操作在環(huán)的第二操作之后執(zhí)行;以及在環(huán)中該環(huán)的第一操作在環(huán)的第二操作之前可執(zhí)行這一指示。
[0080]在第四示例中,設(shè)備配置成執(zhí)行第三示例的方法,其包括選項(xiàng)中的一個(gè)或多個(gè)。
[0081]在第五示例中,處理器包括:一個(gè)或多個(gè)核;寄存器文件,其包括多個(gè)混疊寄存器,用于存儲(chǔ)與環(huán)的多個(gè)操作關(guān)聯(lián)的存儲(chǔ)器范圍信息,其中該存儲(chǔ)器范圍信息參考存儲(chǔ)器內(nèi)的一個(gè)或多個(gè)存儲(chǔ)器位點(diǎn);和寄存器分配邏輯,用于對(duì)環(huán)的對(duì)應(yīng)操作分配混疊寄存器中的每個(gè)??筛鶕?jù)旋轉(zhuǎn)調(diào)度進(jìn)行分配,其中對(duì)環(huán)的第一迭代中的第一操作和環(huán)的后續(xù)迭代中的第二操作分配混疊寄存器中的至少一個(gè)。系統(tǒng)還包括耦合于處理器的存儲(chǔ)器??蛇x地,處理器進(jìn)一步包括指令調(diào)度邏輯,用于根據(jù)流水線調(diào)度來調(diào)度環(huán)的操作,其中環(huán)的至少一個(gè)操作要根據(jù)與環(huán)的操作的順序不同的執(zhí)行調(diào)度來執(zhí)行??蛇x地,一個(gè)或多個(gè)核中的一個(gè)執(zhí)行存儲(chǔ)在第一混疊寄存器中的數(shù)據(jù)與存儲(chǔ)在混疊寄存器中的至少一個(gè)其他中的數(shù)據(jù)的比較來確定是否存在混疊。可選地,第一混疊寄存器對(duì)于第一壽命時(shí)間被分配給第一操作并且第一混疊寄存器對(duì)于第二壽命時(shí)間被分配給第二操作,其中第一壽命時(shí)間和第二壽命時(shí)間是非重疊時(shí)期。可選地,第一壽命時(shí)間在環(huán)的第一迭代內(nèi)并且第二壽命時(shí)間在環(huán)的第二迭代內(nèi),該第二迭代是依次挨著第一迭代的迭代??蛇x地,寄存器分配邏輯進(jìn)一步執(zhí)行旋轉(zhuǎn)清除指令來擦除關(guān)聯(lián)壽命時(shí)間到期的每個(gè)混疊寄存器的內(nèi)容。
[0082]實(shí)施例可在許多不同類型的系統(tǒng)中使用。例如,在一個(gè)實(shí)施例中,通信裝置可以設(shè)置成執(zhí)行本文描述的各種方法和技術(shù)。當(dāng)然,本發(fā)明的范圍不限于通信裝置,而相反其他實(shí)施例可以針對(duì)用于處理指令的其他類型的設(shè)備,或包括指令的一個(gè)或多個(gè)機(jī)器可讀介質(zhì),這些指令響應(yīng)于在計(jì)算裝置上執(zhí)行而促使該裝置實(shí)施本文描述的方法和技術(shù)中的一個(gè)或多個(gè)。
[0083]實(shí)施例可在代碼中實(shí)現(xiàn)并且可存儲(chǔ)在非暫時(shí)性存儲(chǔ)介質(zhì)上,該非暫時(shí)性存儲(chǔ)介質(zhì)具有存儲(chǔ)在其上的指令,其可以用于對(duì)系統(tǒng)編程來執(zhí)行指令。存儲(chǔ)介質(zhì)可包括但不限于:任何類型的盤,這些盤包括軟盤、光盤、固態(tài)驅(qū)動(dòng)器(SSD)、壓縮盤只讀存儲(chǔ)器(⑶-ROM)、壓縮盤可重寫(⑶-RW)和磁光盤;半導(dǎo)體器件,例如只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)(例如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM))、可擦除可編程只讀存儲(chǔ)器(EPR0M)、閃速存儲(chǔ)器、電可擦除可編程只讀存儲(chǔ)器(EEPROM);磁或光卡或適合于存儲(chǔ)電子指令的任何其他類型的介質(zhì)。
[0084]盡管已經(jīng)關(guān)于有限數(shù)量的實(shí)施例描述本發(fā)明,本領(lǐng)域內(nèi)技術(shù)人員將意識(shí)到從其處的許多修改和改動(dòng)。規(guī)定附上的權(quán)利要求涵蓋所有這樣的修改和改動(dòng),它們落入本發(fā)明的真正精神和范圍內(nèi)。
【權(quán)利要求】
1.一種系統(tǒng),其包括: 處理器,其包括: 一個(gè)或多個(gè)核; 寄存器文件,其包括多個(gè)混疊寄存器,用于存儲(chǔ)與環(huán)的多個(gè)操作關(guān)聯(lián)的存儲(chǔ)器范圍信息,其中所述存儲(chǔ)器范圍信息引用存儲(chǔ)器內(nèi)的一個(gè)或多個(gè)存儲(chǔ)器位點(diǎn);以及 寄存器分配部件,用于將所述混疊寄存器中的每個(gè)分配給所述環(huán)的對(duì)應(yīng)操作,其中根據(jù)旋轉(zhuǎn)調(diào)度進(jìn)行分配,其中將所述混疊寄存器中的至少一個(gè)分配給所述環(huán)的第一迭代中的第一操作和所述環(huán)的后續(xù)迭代中的第二操作; 所述存儲(chǔ)器,其耦合于所述處理器。
2.如權(quán)利要求1所述的系統(tǒng),其中所述處理器進(jìn)一步包括指令調(diào)度部件,用于根據(jù)流水線調(diào)度來調(diào)度所述環(huán)的操作,其中所述環(huán)的至少一個(gè)操作根據(jù)與所述環(huán)的操作的順序不同的執(zhí)行調(diào)度來執(zhí)行。
3.如權(quán)利要求1所述的系統(tǒng),其中所述一個(gè)或多個(gè)核中的一個(gè)執(zhí)行存儲(chǔ)在第一混疊寄存器中的數(shù)據(jù)與存儲(chǔ)在所述混疊寄存器中的至少一個(gè)其他中的數(shù)據(jù)的比較來確定是否存在混疊。
4.如權(quán)利要求1所述的系統(tǒng),其中第一混疊寄存器對(duì)于第一壽命時(shí)間被分配給第一操作并且所述第一混疊寄存器對(duì)于第二壽命時(shí)間被分配給第二操作,其中所述第一壽命時(shí)間和所述第二壽命時(shí)間是非重疊時(shí)期。
5.如權(quán)利要求4所述的系統(tǒng),其中所述第一壽命時(shí)間在所述環(huán)的第一迭代內(nèi)并且所述第二壽命時(shí)間在所述環(huán)的第二迭代內(nèi),所述第二迭代是依次挨著所述第一迭代的迭代。
6.如權(quán)利要求1-5中任一項(xiàng)所述的系統(tǒng),其中所述寄存器分配部件用于執(zhí)行旋轉(zhuǎn)清除指令來擦除關(guān)聯(lián)壽命時(shí)間到期的每個(gè)混疊寄存器的內(nèi)容。
7.至少一個(gè)計(jì)算機(jī)可讀介質(zhì),其包括指令,所述指令在被執(zhí)行時(shí) 使系統(tǒng)能夠: 根據(jù)對(duì)于環(huán)的多個(gè)迭代的旋轉(zhuǎn)序列相繼將旋轉(zhuǎn)寄存器文件的多個(gè)混疊寄存器中的每個(gè)分配給所述環(huán)的對(duì)應(yīng)操作,其中每個(gè)混疊寄存器存儲(chǔ)由對(duì)應(yīng)操作訪問的一個(gè)或多個(gè)存儲(chǔ)器位點(diǎn)的指示并且所述混疊寄存器中的一個(gè)被分配給所述環(huán)的第一迭代中的第一操作和所述環(huán)的后續(xù)迭代中的第二操作;以及 通過比較分配的混疊寄存器中的至少一個(gè)的內(nèi)容與一個(gè)或多個(gè)其他分配的混疊寄存器的內(nèi)容來確定是否存在混疊條件。
8.如權(quán)利要求7所述的計(jì)算機(jī)可讀介質(zhì),其中第一混疊寄存器對(duì)于第一壽命時(shí)間被分配給第一操作并且所述第一混疊寄存器對(duì)于第二壽命時(shí)間被分配給第二操作,其中所述第一壽命時(shí)間和所述第二壽命時(shí)間是非重疊時(shí)期。
9.如權(quán)利要求8所述的計(jì)算機(jī)可讀介質(zhì),其中所述第一壽命時(shí)間和所述第二壽命時(shí)間是所述環(huán)的依次相鄰迭代。
10.如權(quán)利要求8所述的計(jì)算機(jī)可讀介質(zhì),其中所述第一壽命時(shí)間和所述第二壽命時(shí)間在所述環(huán)的非相鄰迭代中。
11.如權(quán)利要求7所述的計(jì)算機(jī)可讀介質(zhì),其進(jìn)一步包括指令,所述指令使所述系統(tǒng)能夠: 對(duì)于操作以及基于排序關(guān)系對(duì)于相同或不同迭代內(nèi)的另一個(gè)操作分配壽命時(shí)間;以及 對(duì)于所述壽命時(shí)間的持續(xù)時(shí)間,對(duì)所述操作分配對(duì)應(yīng)混疊寄存器。
12.如權(quán)利要求11所述的計(jì)算機(jī)可讀介質(zhì),其進(jìn)一步包括指令,所述指令使所述系統(tǒng)能夠在所述持續(xù)時(shí)間到期時(shí)將所述對(duì)應(yīng)混疊寄存器重新分配給另一個(gè)迭代中的另一個(gè)操作。
13.如權(quán)利要求7-12中任一項(xiàng)所述的計(jì)算機(jī)可讀介質(zhì),其進(jìn)一步包括指令,所述指令使所述系統(tǒng)能夠響應(yīng)于排序關(guān)系的存在來檢查混疊,其中所述排序關(guān)系響應(yīng)于以下而被指示: 根據(jù)流水線調(diào)度,調(diào)度的環(huán)的第一操作在所述環(huán)的第二操作之后執(zhí)行;以及 所述環(huán)中,所述環(huán)的第一操作在所述環(huán)的第二操作之前可執(zhí)行這一指示。
14.一種方法,其包括: 根據(jù)所述環(huán)的多個(gè)迭代的旋轉(zhuǎn)序列,相繼將寄存器文件的多個(gè)混疊寄存器中的每個(gè)分配給所述環(huán)的對(duì)應(yīng)操作,包括將混疊寄存器中的一個(gè)分配給所述環(huán)的第一迭代中的第一操作和所述環(huán)的后續(xù)迭代中的第二操作,其中每個(gè)混疊寄存器存儲(chǔ)由對(duì)應(yīng)操作訪問的存儲(chǔ)器位點(diǎn)的指示;以及 通過比較分配的混疊寄存器中的至少一個(gè)的內(nèi)容與一個(gè)或多個(gè)其他分配的混疊寄存器的內(nèi)容來確定是否存在混疊條件。
15.如權(quán)利要求14所述的方法,其進(jìn)一步包括對(duì)于第一壽命時(shí)間將第一混疊寄存器分配給第一操作以及對(duì)于第二壽命時(shí)間將所述第一混疊寄存器分配給第二操作,其中所述第一壽命時(shí)間和所述第二壽命時(shí)間是非重疊時(shí)期。
16.如權(quán)利要求15所述的方法,其中所述第一壽命時(shí)間和所述第二壽命時(shí)間是所述環(huán)中的依次相鄰迭代。
17.如權(quán)利要求15所述的方法,其進(jìn)一步包括對(duì)于第一壽命時(shí)間將第一混疊寄存器分配給所述環(huán)的第一迭代中的第二操作以及對(duì)于第二壽命時(shí)間將所述第一混疊寄存器分配給所述環(huán)的第二迭代的第一操作,其中所述第一壽命時(shí)間和所述第二壽命時(shí)間是非重疊時(shí)期。
18.如權(quán)利要求14所述的方法,其進(jìn)一步包括對(duì)于操作以及基于排序關(guān)系對(duì)于相同迭代或不同迭代內(nèi)的另一個(gè)操作分配壽命時(shí)間,以及對(duì)于所述壽命時(shí)間的持續(xù)時(shí)間將對(duì)應(yīng)混疊寄存器分配給所述操作。
19.如權(quán)利要求18所述的方法,其進(jìn)一步包括在所述持續(xù)時(shí)間到期時(shí)重新分配所述對(duì)應(yīng)混疊寄存器給另一個(gè)迭代中的另一個(gè)操作。
20.如權(quán)利要求14所述的方法,其進(jìn)一步包括通過比較分配給所述環(huán)的第一操作的第一混疊寄存器的內(nèi)容與對(duì)于與所述第二操作關(guān)聯(lián)的第二壽命時(shí)間分配給所述第二操作的第二混疊寄存器的內(nèi)容來確定在所述環(huán)的第一迭代中是否存在混疊,其中所述第二壽命時(shí)間由所述第一操作的第一調(diào)度執(zhí)行時(shí)間相對(duì)于所述第二操作的第二調(diào)度執(zhí)行時(shí)間而確定。
21.如權(quán)利要求14所述的方法,其進(jìn)一步包括響應(yīng)于排序關(guān)系的存在來檢查混疊,其中所述排序關(guān)系響應(yīng)于以下而被指示: 根據(jù)流水線調(diào)度,調(diào)度的環(huán)的第一操作在所述環(huán)的第二操作之后執(zhí)行;以及 所述環(huán)中,所述環(huán)的第一操作在所述環(huán)的第二操作之前可執(zhí)行這一指示。
22.—種設(shè)備,其包括用于執(zhí)行如權(quán)利要求14-21中任一項(xiàng)所述的方法的部件。
23.一種設(shè)備,其配置成執(zhí)行如權(quán)利要求14-21中任一項(xiàng)所述的方法。
24.—種處理器,其包括: 一個(gè)或多個(gè)核; 寄存器文件,其包括多個(gè)混疊寄存器,用于存儲(chǔ)與環(huán)的多個(gè)操作關(guān)聯(lián)的存儲(chǔ)器范圍信息,其中所述存儲(chǔ)器范圍信息引用存儲(chǔ)器內(nèi)的一個(gè)或多個(gè)存儲(chǔ)器位點(diǎn); 寄存器分配邏輯,用于將所述混疊寄存器中的每個(gè)分配給所述環(huán)的對(duì)應(yīng)操作,其中根據(jù)旋轉(zhuǎn)調(diào)度進(jìn)行所述分配,其中將所述混疊寄存器中的至少一個(gè)分配給所述環(huán)的第一迭代中的第一操作和所述環(huán)的后續(xù)迭代中的第二操作; 所述存儲(chǔ)器耦合于所述處理器。
25.如權(quán)利要求24所述的處理器,其進(jìn)一步包括指令調(diào)度邏輯,用于根據(jù)流水線調(diào)度來調(diào)度所述環(huán)的操作,其中所述環(huán)的至少一個(gè)操作根據(jù)與所述環(huán)的操作的順序不同的執(zhí)行調(diào)度來執(zhí)行。
【文檔編號(hào)】G06F9/38GK104412233SQ201380033509
【公開日】2015年3月11日 申請(qǐng)日期:2013年5月30日 優(yōu)先權(quán)日:2013年5月30日
【發(fā)明者】H.榮, C.王, H.樸, Y.吳 申請(qǐng)人:英特爾公司