两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

超標(biāo)量處理器內(nèi)的指令發(fā)出控制的制作方法

文檔序號(hào):6559573閱讀:163來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):超標(biāo)量處理器內(nèi)的指令發(fā)出控制的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)處理系統(tǒng)。更具體地說(shuō),本發(fā)明涉及超標(biāo)量數(shù)據(jù)處理系統(tǒng)內(nèi)的指令發(fā)出控制。
背景技術(shù)
眾所周知,提供包括多條指令流水線的超標(biāo)量數(shù)據(jù)處理系統(tǒng)以使多程序指令流可被并行執(zhí)行,從而增加處理器的總處理能力的。與這樣的系統(tǒng)有關(guān)的問(wèn)題是程序指令之間的數(shù)據(jù)相依性可能請(qǐng)求將一個(gè)指令的輸出用作另一個(gè)指令的輸入,這樣,如果這兩個(gè)指令被一起發(fā)出的話(huà),則較新指令的真實(shí)輸入在需要時(shí)將無(wú)法得到,因?yàn)檩^舊指令還未計(jì)算出該值。為了處理這種情形,已知提供了數(shù)據(jù)相依冒險(xiǎn)檢查機(jī)制,該機(jī)制對(duì)將要發(fā)出的程序指令的源和目的寄存器說(shuō)明符有響應(yīng),以在那些指令被一起發(fā)出時(shí)可識(shí)別具有將導(dǎo)致錯(cuò)誤的數(shù)據(jù)相依性的任何指令組合。如果檢測(cè)到這樣的冒險(xiǎn)檢測(cè),則可取消較新指令并使其在稍后的循環(huán)中發(fā)出以使冒險(xiǎn)檢測(cè)不再出現(xiàn)。這降低了處理性能,因?yàn)椴⑿袌?zhí)行能力未被充分利用。

發(fā)明內(nèi)容
從一個(gè)方面來(lái)觀察,本發(fā)明提供了用于處理數(shù)據(jù)的設(shè)備,所述設(shè)備包含多條執(zhí)行流水線,用于并行執(zhí)行程序指令序列的程序指令以生成輸出操作數(shù)值,各自對(duì)應(yīng)的執(zhí)行流水線包括相應(yīng)的多個(gè)執(zhí)行階段,不同類(lèi)型程序指令的輸出操作數(shù)值在不同的執(zhí)行階段生成;冒險(xiǎn)檢測(cè)檢查邏輯單元,可用來(lái)檢測(cè)將要并行發(fā)出給所述多條執(zhí)行流水線的各自對(duì)應(yīng)執(zhí)行流水線的候選程序指令之間的數(shù)據(jù)相依冒險(xiǎn),據(jù)此所述候選程序指令的第一程序指令的輸出操作數(shù)值是所述候選程序指令的第二程序指令的輸入操作數(shù)值,并且在檢測(cè)到這樣的數(shù)據(jù)相依冒險(xiǎn)時(shí)用來(lái)生成數(shù)據(jù)相依冒險(xiǎn)信號(hào);數(shù)據(jù)冒險(xiǎn)克服(override)邏輯單元,可用來(lái)檢測(cè)在請(qǐng)求所述候選程序指令的所述第二程序指令的所述輸入操作數(shù)值之前是否會(huì)生成所述候選程序指令的所述第一程序指令的所述輸出操作數(shù)值,并生成數(shù)據(jù)冒險(xiǎn)克服信號(hào);指令發(fā)出控制邏輯單元,可響應(yīng)所述數(shù)據(jù)冒險(xiǎn)克服信號(hào)的接收而克服任何數(shù)據(jù)相依冒險(xiǎn)信號(hào),并允許所述候選程序指令的所述第一程序指令和所述候選程序指令的所述第二程序指令并行發(fā)出;以及操作數(shù)發(fā)送邏輯單元,可用來(lái)控制將在執(zhí)行流水線之間傳送的所述候選程序指令的所述第一程序指令的所述輸出操作數(shù)值,以用作所述候選程序指令的所述第二程序指令的所述輸入操作數(shù)值。
本發(fā)明人認(rèn)識(shí)到,在每條執(zhí)行流水線上存在多個(gè)執(zhí)行階段并根據(jù)有關(guān)的程序指令類(lèi)型在不同執(zhí)行階段生成輸出操作數(shù)值的處理系統(tǒng)內(nèi),能夠?qū)⒊绦蛑噶畹哪承┙M合一起發(fā)出以并行地執(zhí)行,即使相依兩個(gè)指令之間存在數(shù)據(jù)相依。如果導(dǎo)致數(shù)據(jù)相依冒險(xiǎn)的數(shù)據(jù)值是這樣的數(shù)據(jù)值,即其中,輸出操作數(shù)值在一個(gè)先于其中被請(qǐng)求為相依程序指令形成輸入操作數(shù)(若這些指令被一起發(fā)出)的執(zhí)行階段的執(zhí)行階段被生成,則這是可能的。在這種情形下,盡管存在檢測(cè)出的數(shù)據(jù)相依冒險(xiǎn),可一起并行發(fā)出的程序指令組合被檢測(cè)并且由這個(gè)檢測(cè)產(chǎn)生的信號(hào)被用來(lái)克服數(shù)據(jù)相依冒險(xiǎn)。該機(jī)制還可用來(lái)控制輸出操作數(shù)值在執(zhí)行流水線之間的傳輸/發(fā)送,以在相依程序指令沿指令流水線行進(jìn)時(shí)用作必要的輸入操作數(shù)值。
當(dāng)會(huì)了解,本方法可用來(lái)保證在具有多條指令流水線(包括兩條以上指令流水線)的系統(tǒng)中數(shù)據(jù)相依冒險(xiǎn)檢查的克服,但是本方法更適合具有兩條指令流水線并且按次序?qū)嵤┏绦蛑噶顖?zhí)行的系統(tǒng)。如果允許無(wú)序執(zhí)行,則能夠以相當(dāng)大地增加處理無(wú)序控制所需的復(fù)雜性為代價(jià)減輕與數(shù)據(jù)相依性關(guān)聯(lián)的問(wèn)題。
當(dāng)有關(guān)的執(zhí)行階段具有可用來(lái)實(shí)施不同數(shù)據(jù)處理操作的不同指令執(zhí)行邏輯單元時(shí),其中在不同執(zhí)行階段得到輸出操作數(shù)值的情形尤其可能出現(xiàn)。在這樣的系統(tǒng)內(nèi),隨著不同類(lèi)型的操作在不同階段實(shí)施,執(zhí)行工作量在執(zhí)行階段之間分配。某些指令可能請(qǐng)求將要實(shí)施的多個(gè)不同類(lèi)型的操作,這些不同類(lèi)型的操作在不同執(zhí)行階段實(shí)施,例如在一個(gè)階段的移位后面跟有另一個(gè)階段的ALU操作。
在各執(zhí)行階段提供的不同指令執(zhí)行邏輯單元可采取各種不同的形式,但是在優(yōu)選實(shí)施例中包含了可用來(lái)實(shí)施數(shù)據(jù)移位操作、ALU操作和裝入/存儲(chǔ)操作的多個(gè)操作之一的邏輯單元。可以方便地將這些操作布置在流水線內(nèi),以按順序在各執(zhí)行階段實(shí)施。
在這種配置下,相互之間具有數(shù)據(jù)相依冒險(xiǎn)卻仍可被一起并行發(fā)出的候選程序指令包括后面跟有ALU程序指令的移位程序指令;后面跟有裝入/存儲(chǔ)程序指令的移位程序指令;以及后面跟有裝入/存儲(chǔ)程序指令的ALU程序指令。在所有這些情形中,較早指令的輸出操作數(shù)值將在其作為已經(jīng)隨其并行發(fā)出的下一個(gè)程序指令的輸入操作數(shù)值被請(qǐng)求之前在執(zhí)行流水線階段內(nèi)獲得。
從另一個(gè)方面來(lái)觀察,本發(fā)明提供了用于處理數(shù)據(jù)的設(shè)備,所述設(shè)備包含多個(gè)執(zhí)行流水線部件,用于并行地執(zhí)行程序指令序列的程序指令以生成輸出操作數(shù)值,各執(zhí)行流水線包括對(duì)應(yīng)的多個(gè)執(zhí)行階段部件,不同類(lèi)型程序指令的輸出操作數(shù)值在不同的執(zhí)行階段部件內(nèi)生成;數(shù)據(jù)冒險(xiǎn)檢查部件,用于檢測(cè)將要并行地發(fā)出給所述多個(gè)執(zhí)行流水線部件的各執(zhí)行流水線部件的候選程序指令之間的數(shù)據(jù)相依冒險(xiǎn),從而所述候選程序指令的第一程序指令的輸出操作數(shù)值是所述候選程序指令的第二程序指令的輸入操作數(shù)值,并且在檢測(cè)到這樣的數(shù)據(jù)相依冒險(xiǎn)時(shí)來(lái)生成數(shù)據(jù)相依冒險(xiǎn)信號(hào);數(shù)據(jù)冒險(xiǎn)克服部件,用于檢測(cè)在所述候選程序指令的所述第二程序指令的所述輸入操作數(shù)值被請(qǐng)求之前是否生成了所述候選程序指令的所述第一程序指令的所述輸出操作數(shù)值,并生成數(shù)據(jù)冒險(xiǎn)克服信號(hào);指令發(fā)出控制部件,響應(yīng)所述數(shù)據(jù)冒險(xiǎn)克服信號(hào)的接收,以克服任何數(shù)據(jù)相依冒險(xiǎn)信號(hào),并允許所述候選程序指令的所述第一程序指令和所述候選程序指令的所述第二程序指令并行發(fā)出;以及操作數(shù)發(fā)送部件,用于控制將在執(zhí)行流水線部件之間傳送的所述候選程序指令的所述第一程序指令的所述輸出操作數(shù)值,以用作所述候選程序指令的所述第二程序指令的所述輸入操作數(shù)值。
從又一個(gè)方面來(lái)觀察,本發(fā)明提供了用于處理數(shù)據(jù)的方法,所述方法包含下列步驟在多條執(zhí)行流水線內(nèi)并行地執(zhí)行程序指令序列的程序指令以生成輸出操作數(shù)值,各執(zhí)行流水線包括對(duì)應(yīng)的多個(gè)執(zhí)行階段,不同類(lèi)型程序指令的輸出操作數(shù)值在不同執(zhí)行階段生成;檢測(cè)將要并行發(fā)出給所述多個(gè)執(zhí)行流水線的各執(zhí)行流水線的候選程序指令之間的數(shù)據(jù)相依冒險(xiǎn),從而所述候選程序指令的第一程序指令的輸出操作數(shù)值是所述候選程序指令的第二程序指令的輸入操作數(shù)值,并且在檢測(cè)到這樣的數(shù)據(jù)相依冒險(xiǎn)時(shí)生成數(shù)據(jù)相依冒險(xiǎn)信號(hào);檢測(cè)在請(qǐng)求所述候選程序指令的所述第一程序指令的所述輸入操作數(shù)值之前是否生成了所述候選程序指令的所述第一程序指令的所述輸出操作數(shù)值并生成數(shù)據(jù)冒險(xiǎn)克服信號(hào);響應(yīng)所述數(shù)據(jù)冒險(xiǎn)克服信號(hào)的生成,克服任何數(shù)據(jù)相依冒險(xiǎn)信號(hào),并允許所述候選程序指令的所述第一程序指令和所述候選程序指令的所述第二程序指令并行發(fā)出;以及控制將在執(zhí)行流水線之間傳送的所述候選程序指令的所述第一程序指令的所述輸出操作數(shù)值,以作為所述候選程序指令的所述第二程序指令的所述輸入操作數(shù)值。
通過(guò)下面對(duì)說(shuō)明性實(shí)施例的詳細(xì)描述并結(jié)合附圖,本發(fā)明上述的和其他的目的、特征和優(yōu)點(diǎn)將將會(huì)顯而易見(jiàn)。


圖1示意說(shuō)明訪問(wèn)共享寄存器組的多條執(zhí)行流水線的執(zhí)行階段;圖2示意說(shuō)明包括冒險(xiǎn)檢測(cè)檢測(cè)、冒險(xiǎn)克服和交叉發(fā)送邏輯單元的兩條指令流水線的部分;圖3是示意說(shuō)明用于控制指令發(fā)出以及并行發(fā)出指令的操作數(shù)交叉發(fā)送的電路部分的圖示;以及圖4是示意說(shuō)明指令發(fā)出和交叉發(fā)送的控制的流程圖。
具體實(shí)施例方式
圖1示意說(shuō)明包括兩條執(zhí)行流水線的多發(fā)出數(shù)據(jù)處理系統(tǒng)。應(yīng)知,圖1是高度示意的表示且實(shí)際上在系統(tǒng)內(nèi)大體上會(huì)需要并存在許多附加的功能元件。為了簡(jiǎn)便起見(jiàn),不在圖1中對(duì)這些功能元件進(jìn)行說(shuō)明。
圖1說(shuō)明了每條執(zhí)行流水線是如何從共享寄存器組2中得到它的源輸入操作數(shù)值的。來(lái)自每條執(zhí)行流水線的目的輸出操作數(shù)值被同樣地寫(xiě)回到寄存器堆2中。在這個(gè)示范實(shí)施例中,每條執(zhí)行流水線被表示為具有三個(gè)執(zhí)行階段E1、E2和E3,它們分別包括了移位器4和4′、算術(shù)邏輯部件6和6′、以及裝入/存儲(chǔ)部件8和8′。
沿各執(zhí)行流水線行進(jìn)的指令連同所選擇的源操作數(shù)值可通過(guò)移位器4和4′被移位操作、通過(guò)算術(shù)邏輯部件6和6′被算術(shù)和邏輯操作、通過(guò)裝入/存儲(chǔ)部件8和8′被存儲(chǔ)器訪問(wèn)操作。將會(huì)了解到,還可利用不同數(shù)量的執(zhí)行階段,且相依指令執(zhí)行邏輯單元(即移位器4和4′、算術(shù)邏輯部件6和6′、以及裝入/存儲(chǔ)部件8和8′)的設(shè)置可以根據(jù)特定的實(shí)際應(yīng)用而變化。還將了解到,許多的或大部分的指令將僅僅使用這些不同指令執(zhí)行電路的子電路來(lái)實(shí)施它們預(yù)定的處理操作。作為一例,純移位操作的指令將通常只使用移位器4和4′。到第一執(zhí)行階段E1結(jié)束時(shí)將獲得來(lái)自該移位操作的輸出操作數(shù)值。同樣地,純算術(shù)/邏輯指令將可能只使用ALU部件6和6′并且到第二執(zhí)行階段E2結(jié)束時(shí)將獲得其輸出操作數(shù)值。在第二執(zhí)行階段E2開(kāi)始之前,算術(shù)邏輯部件6和6′不請(qǐng)求其輸入操作數(shù)值被提供。因此,如果在另一條執(zhí)行流水線上利用移位操作計(jì)算這些輸入操作數(shù)值,則到第一執(zhí)行階段E1結(jié)束時(shí)在該另一條執(zhí)行流水線上將提供這個(gè)移位值并可在執(zhí)行流水線之間發(fā)送這個(gè)移位值,以在第二操作階段E2的開(kāi)始時(shí)作為請(qǐng)求該值的ALU部件6和6′的輸入操作數(shù)值。這代表并行進(jìn)入兩條執(zhí)行流水線的指令的操作數(shù)的交叉發(fā)送。以類(lèi)似的方式,在第三執(zhí)行階段E3開(kāi)始之前,裝入/存儲(chǔ)部件8和8′不請(qǐng)求其輸入操作數(shù)值,并且因此可接收已經(jīng)由ALU部件6和6′或移位器4和4′生成的、相鄰執(zhí)行流水線輸出操作數(shù)值作為輸入操作數(shù)值。
圖2示意說(shuō)明使用上述方法的兩條指令流水線的部分。讀取和指令發(fā)出塊10的作用是從指令高速緩沖存儲(chǔ)器中取得多個(gè)程序指令(候選程序指令),并檢測(cè)這些程序指令是需要個(gè)別發(fā)送(沿流水線0)還是可以沿兩條流水線(流水線0和1)并行發(fā)出。數(shù)據(jù)冒險(xiǎn)檢測(cè)部件12的作用是檢查(部分解碼)作為候選指令的指令,它們用以被并行發(fā)出以確定新指令是否為請(qǐng)求在用作將要發(fā)出的舊候選程序指令的目的寄存器的寄存器內(nèi)的輸入操作數(shù)值。這就是數(shù)據(jù)冒險(xiǎn)檢測(cè),按照慣例實(shí)施并可使用記分板記錄數(shù)據(jù)相依性。這樣的標(biāo)準(zhǔn)數(shù)據(jù)冒險(xiǎn)檢測(cè)不僅適用于沿執(zhí)行流水線并行發(fā)出的候選程序指令,而且還可出現(xiàn)在試圖發(fā)出對(duì)已經(jīng)沿執(zhí)行流水線行進(jìn)的指令有相依性的、但在正被檢查的候選程序指令請(qǐng)求該目的值時(shí)還未及時(shí)生成其目的(輸出)值的指令時(shí)。在指令流水線內(nèi)的待處理程序指令之間的這類(lèi)數(shù)據(jù)冒險(xiǎn)檢測(cè)是公知的,將不再這里做進(jìn)一步描述。
當(dāng)兩個(gè)指令沿執(zhí)行流水線并行行進(jìn)時(shí),由較舊指令生成、被較新指令請(qǐng)求的輸出數(shù)據(jù)將在該數(shù)據(jù)被較新指令實(shí)際請(qǐng)求之前生成,如果那些指令是這樣,則當(dāng)這些數(shù)據(jù)冒險(xiǎn)在并行發(fā)出的候選指令之間發(fā)生時(shí),本方法利用冒險(xiǎn)克服邏輯單元16提供了克服已檢測(cè)數(shù)據(jù)冒險(xiǎn)的額外能力。如果此條件滿(mǎn)足,則可使有關(guān)的數(shù)據(jù)在執(zhí)行流水線之間交叉發(fā)送并使兩個(gè)指令一起發(fā)出。發(fā)送控制邏輯單元18同時(shí)響應(yīng)于常規(guī)的數(shù)據(jù)冒險(xiǎn)檢測(cè)邏輯單元12和冒險(xiǎn)克服檢測(cè)邏輯單元16,以發(fā)出來(lái)自正被檢查的候選指令對(duì)的單個(gè)或兩個(gè)指令。如果被請(qǐng)求在執(zhí)行流水線之間發(fā)送且在冒險(xiǎn)克服檢測(cè)邏輯單元16涉及的定時(shí)條件下該發(fā)送被檢測(cè)為可能,則該發(fā)送由發(fā)送控制邏輯單元20控制。
在執(zhí)行流水線自身內(nèi),在達(dá)到多執(zhí)行階段之前,分別是解碼器階段。如前所述,執(zhí)行階段可實(shí)施不同的數(shù)據(jù)操作形式。正如由階段之間雙線箭頭表示的,指定解碼控制信號(hào)的指令和操作數(shù)在階段之間傳遞。在被請(qǐng)求時(shí),可利用多路復(fù)用器22、24使操作數(shù)在執(zhí)行流水線之間發(fā)送以在由發(fā)送控制邏輯單元20生成的交叉發(fā)送控制信號(hào)的控制下用選自另一條流水線的操作數(shù)值代替沿該操作數(shù)的流水線行進(jìn)的當(dāng)前操作數(shù)值(或?qū)嶋H上為空格保持器)。在此示范實(shí)施例中,較舊指令總是被發(fā)進(jìn)流水線0,并且因此只請(qǐng)求從流水線0到流水線1的交叉發(fā)送。
圖3示意說(shuō)明控制信號(hào)的生成,所述控制信號(hào)用于檢測(cè)可能出現(xiàn)的冒險(xiǎn)并克服該冒險(xiǎn)以及控制交叉發(fā)送。解碼器26、28、30分別為指定用于較舊指令的目的寄存器以及由較新指令指定的兩個(gè)源寄存器解碼。比較器32、34確定用于較舊指令的目的寄存器是否與用于較新指令的兩個(gè)源寄存器中的任一個(gè)是相同的,并且在檢測(cè)到這種情況時(shí)生成數(shù)據(jù)冒險(xiǎn)信號(hào)。
解碼器26、28、30還對(duì)它們的指令作出響應(yīng)來(lái)確定執(zhí)行階段,從而在較舊指令時(shí)將獲得目的寄存器值并且較新指令將請(qǐng)求源寄存器值。在這些條件被滿(mǎn)足的執(zhí)行階段根據(jù)有關(guān)的指令類(lèi)型而改變。作為一例,在圖1的系統(tǒng)中的移位指令將請(qǐng)求其源值被早提供(在執(zhí)行階段E1開(kāi)始時(shí)),但是還將早生成其目的值(在執(zhí)行階段E1結(jié)束時(shí))。相反地,裝入/存儲(chǔ)操作將不請(qǐng)求提供其源值直到很晚(在執(zhí)行階段E3開(kāi)始時(shí)),但是生成其目的值同樣很晚(在執(zhí)行階段E3結(jié)束時(shí))。比較器36、38的作用是檢測(cè)由較舊指令產(chǎn)生的目的值是否將在因?yàn)樾枰^新指令而被請(qǐng)求的源值中的任一個(gè)之前獲得。如果出現(xiàn)這樣的情形,則這些比較器36、38的輸出可以和“與”門(mén)40、42一起使用以克服任何檢測(cè)到的數(shù)據(jù)冒險(xiǎn)信號(hào)?!盎颉遍T(mén)42對(duì)還未被重寫(xiě)的任何數(shù)據(jù)冒險(xiǎn)信號(hào)(用于較新指令的任一輸入操作數(shù)值)作出響應(yīng),如果這樣的數(shù)據(jù)冒險(xiǎn)存在且不能被交叉發(fā)送解決則禁止雙重發(fā)出。如果數(shù)據(jù)冒險(xiǎn)已被檢測(cè)并已被重寫(xiě),則“與”門(mén)44、46為必要之處的各源操作數(shù)生成交叉發(fā)送使能信號(hào)。這些交叉發(fā)送控制信號(hào)被用來(lái)或者直接地控制圖2的多路復(fù)用器22、24,或者在作了進(jìn)一步處理后以適應(yīng)另外出現(xiàn)的發(fā)送請(qǐng)求。進(jìn)一步處理的另一例可涉及對(duì)由解碼器26生成的信號(hào)之跟蹤,將目的階段生成其結(jié)果值的時(shí)間表示為該時(shí)或該時(shí)之后,可在執(zhí)行流水線之間傳送操作數(shù)值以解決數(shù)據(jù)相依性。
圖4是示意說(shuō)明多指令發(fā)出的控制的流程圖。在步驟48,雙發(fā)出的兩個(gè)候選指令被接收。步驟50確定在這兩個(gè)指令之間是否存在有數(shù)據(jù)冒險(xiǎn),例如較新指令請(qǐng)求將較舊指令的目的值作為其源之一。如果這樣的數(shù)據(jù)冒險(xiǎn)不存在,則處理可轉(zhuǎn)到步驟52,在該步驟可將兩個(gè)指令并行發(fā)出至兩個(gè)執(zhí)行流水線。
如果在步驟50檢測(cè)到數(shù)據(jù)冒險(xiǎn),則處理轉(zhuǎn)到步驟54,進(jìn)行關(guān)于是否由于交叉發(fā)送可行而克服這個(gè)數(shù)據(jù)冒險(xiǎn)的檢查。交叉發(fā)送是否可行將取決于有關(guān)指令的特定類(lèi)型。如果較舊指令是移位指令,則在圖1的示例中,這個(gè)指令可以和ALU指令或裝入/存儲(chǔ)指令一起發(fā)出。如果較舊指令是ALU指令,則這個(gè)指令可以和裝入/存儲(chǔ)指令一起并行發(fā)出。這些特例并不對(duì)本技術(shù)范圍的普遍性構(gòu)成限制。
如果步驟54確定交叉發(fā)送不能克服在步驟50處檢測(cè)到的數(shù)據(jù)冒險(xiǎn),則處理轉(zhuǎn)到步驟56,在該步驟較舊指令被單獨(dú)發(fā)送并且在下一個(gè)處理循環(huán)中發(fā)出的、提供別的數(shù)據(jù)相依性的較新指令不會(huì)阻止該發(fā)出。如果在步驟54處交叉發(fā)送作為適合于克服數(shù)據(jù)冒險(xiǎn)而被確定,則處理轉(zhuǎn)到步驟58,在該步驟必要的交叉發(fā)送被設(shè)置成在適當(dāng)?shù)臅r(shí)間發(fā)生,此時(shí)指令沿執(zhí)行流水線行進(jìn)并且兩個(gè)指令在步驟52一起發(fā)出。
如上所述,圖2說(shuō)明了由一起被并行發(fā)出至兩條執(zhí)行流水線的指令使用的交叉發(fā)送路徑。本領(lǐng)域的技術(shù)人員當(dāng)會(huì)了解,為除了在同一時(shí)間并行發(fā)出到這兩條執(zhí)行流水線的那些指令,還在執(zhí)行流水線之間實(shí)施其他指令的發(fā)送。依照常規(guī)方法,這種類(lèi)型的發(fā)送可在對(duì)保持在記分板14中的數(shù)據(jù)的相依性上得到控制。圖2所示的實(shí)施例被簡(jiǎn)化,實(shí)際上在流水線之間任一方向上的發(fā)送可在各個(gè)階段被實(shí)施,不僅可處理同一時(shí)間并行發(fā)出至兩條執(zhí)行流水線的指令,而且可處理不同時(shí)間發(fā)出的指令。對(duì)于為了在不同時(shí)間發(fā)出的指令而實(shí)施的被記分板控制時(shí)的正常發(fā)送操作和為了在同一時(shí)間一起發(fā)出的指令而依照本方法實(shí)施的發(fā)送,對(duì)關(guān)于哪個(gè)操作數(shù)應(yīng)當(dāng)在執(zhí)行流水線之間傳遞以及在何時(shí)進(jìn)行的選擇可被合并。沿流水線行進(jìn)以控制發(fā)送多路復(fù)用器的控制信號(hào)和對(duì)這兩個(gè)不同類(lèi)型的選擇可被合并而由相同的硬件來(lái)實(shí)施。執(zhí)行發(fā)送的硬件不必了解發(fā)送是為了在不同時(shí)間發(fā)出的指令而實(shí)施的傳統(tǒng)記分板類(lèi)型發(fā)送的結(jié)果還是為了在相同時(shí)間發(fā)出的指令而實(shí)施的發(fā)送的結(jié)果,因?yàn)槠浔淮_定執(zhí)行流水線之間的交叉發(fā)送可解決數(shù)據(jù)相依性,即使那些指令是在同一時(shí)間發(fā)出的。因此,與記分板14一起操作的數(shù)據(jù)冒險(xiǎn)檢測(cè)邏輯單元12連同冒險(xiǎn)克服檢測(cè)邏輯單元16提供了給圖2的發(fā)送控制部件20的輸入,發(fā)送控制部件20產(chǎn)生與指令一起沿執(zhí)行流水線行進(jìn)的全部發(fā)送控制信號(hào)以控制由兩類(lèi)情形產(chǎn)生的發(fā)送。在兩個(gè)指令沿執(zhí)行流水線行進(jìn)的期間,在通過(guò)發(fā)送控制邏輯單元20發(fā)送控制可解決該數(shù)據(jù)相依性的場(chǎng)合盡管存在來(lái)自數(shù)據(jù)冒險(xiǎn)檢測(cè)邏輯單元12的數(shù)據(jù)相依性信號(hào),冒險(xiǎn)克服檢測(cè)邏輯單元16還向發(fā)送控制邏輯單元18提供輸入以允許雙指令在同一時(shí)間的并行發(fā)出。
盡管已經(jīng)參考附圖對(duì)本發(fā)明的說(shuō)明性實(shí)施例進(jìn)行了詳細(xì)地描述,但是應(yīng)當(dāng)理解,本發(fā)明不限于那些明確的實(shí)施例,在不背離如所附權(quán)利請(qǐng)求書(shū)規(guī)定的本發(fā)明的范圍和精神的條件下,本領(lǐng)域技術(shù)人員可對(duì)它們作出各種變更和修改。
權(quán)利要求
1.一種處理數(shù)據(jù)的設(shè)備,所述設(shè)備包括多條用于并行地執(zhí)行一程序指令序列的程序指令來(lái)生成輸出操作數(shù)值的執(zhí)行流水線,各執(zhí)行流水線包含對(duì)應(yīng)的多個(gè)執(zhí)行階段,不同類(lèi)型程序指令的輸出操作數(shù)值在不同執(zhí)行階段生成;數(shù)據(jù)冒險(xiǎn)檢測(cè)邏輯單元,可檢測(cè)要并行地發(fā)出到所述多條執(zhí)行流水線的各執(zhí)行流水線的候選程序指令之間的數(shù)據(jù)相依冒險(xiǎn),所述候選程序指令的第一程序指令的輸出操作數(shù)值是所述候選程序指令的第二程序指令的輸入操作數(shù)值,并在檢測(cè)到這樣的數(shù)據(jù)相依冒險(xiǎn)時(shí)生成數(shù)據(jù)相依冒險(xiǎn)信號(hào);數(shù)據(jù)冒險(xiǎn)克服邏輯單元,可檢測(cè)在所述候選程序指令的所述第二程序指令的所述輸入操作數(shù)值被請(qǐng)求之前是否生成了所述候選程序指令的所述第一程序指令的所述輸出操作數(shù)值,并生成數(shù)據(jù)冒險(xiǎn)克服信號(hào);指令發(fā)出控制邏輯單元,可響應(yīng)所述數(shù)據(jù)冒險(xiǎn)克服信號(hào)之接收而克服任何數(shù)據(jù)相依冒險(xiǎn)信號(hào),并允許所述候選程序指令的所述第一程序指令和所述候選程序指令的所述第二程序指令并行地發(fā)出;以及操作數(shù)發(fā)送邏輯單元,可控制將在執(zhí)行流水線之間傳送的所述候選程序指令的所述第一程序指令的所述輸出操作數(shù)值,以用作所述候選程序指令的所述第二程序指令的所述輸入操作數(shù)值。
2.如權(quán)利要求1所述的設(shè)備,其中,所述多條執(zhí)行流水線包括按序進(jìn)行程序指令的執(zhí)行的兩條執(zhí)行流水線。
3.如權(quán)利要求1所述的設(shè)備,其中,所述多個(gè)執(zhí)行階段包含各個(gè)不同的指令執(zhí)行邏輯單元,可按請(qǐng)求為執(zhí)行在所述多個(gè)執(zhí)行階段之間行進(jìn)的程序指令而實(shí)施不同的數(shù)據(jù)處理操作。
4.如權(quán)利要求3所述的設(shè)備,其中,對(duì)于至少某些類(lèi)型的程序指令,生成至少一個(gè)輸出操作數(shù)值所需的所有被請(qǐng)求的處理操作,在所述多個(gè)執(zhí)行階段的最后一個(gè)階段到達(dá)之前完成。
5.如權(quán)利要求3所述的設(shè)備,其中,對(duì)于至少某些類(lèi)型的程序指令,至少一個(gè)輸入操作數(shù)值在所述多個(gè)執(zhí)行階段的第一個(gè)階段到達(dá)后才被請(qǐng)求。
6.如權(quán)利要求3所述的設(shè)備,其中,所述各個(gè)不同的指令執(zhí)行邏輯單元實(shí)施下列操作中的一個(gè)或多個(gè)數(shù)據(jù)移位操作;ALU操作;以及裝入/存儲(chǔ)操作。
7.如權(quán)利要求1所述的設(shè)備,其中,各執(zhí)行流水線的所述多個(gè)執(zhí)行階段構(gòu)成一個(gè)執(zhí)行階段序列,其中包括可實(shí)施數(shù)據(jù)移位操作的移位執(zhí)行階段、可實(shí)施ALU操作的ALU執(zhí)行階段、可實(shí)施裝入/存儲(chǔ)操作的裝入/存儲(chǔ)執(zhí)行階段。
8.如權(quán)利要求7所述的設(shè)備,其中,候選程序指令具有數(shù)據(jù)相依冒險(xiǎn)ALU程序指令所跟隨的移位程序指令被并行地發(fā)出;裝入/存儲(chǔ)程序指令所跟隨的移位程序指令被并行地發(fā)出;以及裝入/存儲(chǔ)程序指令所跟隨的ALU程序指令被并行地發(fā)出。
9.一種用于處理數(shù)據(jù)的設(shè)備,所述設(shè)備包括多個(gè)執(zhí)行流水線部件,用于并行地執(zhí)行一個(gè)程序指令序列的程序指令來(lái)生成輸出操作數(shù)值,各執(zhí)行流水線包含對(duì)應(yīng)的多個(gè)執(zhí)行階段部件,不同類(lèi)型程序指令的輸出操作數(shù)值在不同執(zhí)行階段部件內(nèi)生成;數(shù)據(jù)冒險(xiǎn)檢測(cè)部件,用于檢測(cè)要并行地發(fā)出到所述多個(gè)執(zhí)行流水線部件的各執(zhí)行流水線部件的候選程序指令之間的數(shù)據(jù)相依冒險(xiǎn),所述候選程序指令的第一程序指令的輸出操作數(shù)值是所述候選程序指令的第二程序指令的輸入操作數(shù)值,并在檢測(cè)到這樣的數(shù)據(jù)相依冒險(xiǎn)時(shí)生成數(shù)據(jù)相依冒險(xiǎn)信號(hào);數(shù)據(jù)冒險(xiǎn)克服部件,用于檢測(cè)在所述候選程序指令的所述第二程序指令的所述輸入操作數(shù)值被請(qǐng)求之前是否生成了所述候選程序指令的所述第一程序指令的所述輸出操作數(shù)值,并生成數(shù)據(jù)冒險(xiǎn)克服信號(hào);指令發(fā)出控制部件,響應(yīng)所述數(shù)據(jù)冒險(xiǎn)克服信號(hào)的接收而克服任何數(shù)據(jù)相依冒險(xiǎn)信號(hào),并允許所述候選程序指令的所述第一程序指令和所述候選程序指令的所述第二程序指令并行地發(fā)出;以及操作數(shù)發(fā)送部件,用于控制將在執(zhí)行流水線部件之間傳送的所述候選程序指令的所述第一程序指令的所述輸出操作數(shù)值,以用作所述候選程序指令的所述第二程序指令的所述輸入操作數(shù)值。
10.一種用于處理數(shù)據(jù)的方法,所述方法包括下列步驟在多條執(zhí)行流水線內(nèi)并行地一個(gè)執(zhí)行程序指令序列的程序指令來(lái)生成輸出操作數(shù)值,各執(zhí)行流水線包含對(duì)應(yīng)的多個(gè)執(zhí)行階段,不同類(lèi)型程序指令的輸出操作數(shù)值在不同執(zhí)行階段生成;檢測(cè)要并行地發(fā)出到所述多個(gè)執(zhí)行流水線的各執(zhí)行流水線的候選程序指令之間的數(shù)據(jù)相依冒險(xiǎn),所述候選程序指令的第一程序指令的輸出操作數(shù)值是所述候選程序指令的第二程序指令的輸入操作數(shù)值,并在檢測(cè)到這樣的數(shù)據(jù)相依冒險(xiǎn)時(shí)生成數(shù)據(jù)相依冒險(xiǎn)信號(hào);檢測(cè)在所述候選程序指令的所述第二程序指令的所述輸入操作數(shù)值被請(qǐng)求之前是否生成了所述候選程序指令的所述第一程序指令的所述輸出操作數(shù)值,并生成數(shù)據(jù)冒險(xiǎn)克服信號(hào);響應(yīng)所述數(shù)據(jù)冒險(xiǎn)克服信號(hào)的生成來(lái)克服任何數(shù)據(jù)相依冒險(xiǎn)信號(hào),并允許所述候選程序指令的所述第一程序指令和所述候選程序指令的所述第二程序指令并行地發(fā)出;以及控制將在執(zhí)行流水線之間傳送的所述候選程序指令的所述第一程序指令的所述輸出操作數(shù)值,以用作所述候選程序指令的所述第二程序指令的所述輸入操作數(shù)值。
全文摘要
一種數(shù)據(jù)處理系統(tǒng)包括多條執(zhí)行流水線,每條執(zhí)行流水線具有多個(gè)執(zhí)行階段(E1、E2、E3),該數(shù)據(jù)處理系統(tǒng)可具有被一起并行發(fā)出的指令,盡管它們之間有數(shù)據(jù)相依性,其條件是檢測(cè)到較舊指令的結(jié)果操作數(shù)值將在一個(gè)請(qǐng)求該結(jié)果操作數(shù)值作為較新指令的輸入操作數(shù)的執(zhí)行階段之前的執(zhí)行階段生成,且因此所述操作數(shù)值能夠在執(zhí)行流水線之間交叉發(fā)送來(lái)解決數(shù)據(jù)相依性。
文檔編號(hào)G06F9/38GK1869920SQ20061009242
公開(kāi)日2006年11月29日 申請(qǐng)日期2006年5月25日 優(yōu)先權(quán)日2005年5月26日
發(fā)明者D·J·威廉遜, G·A·哈里斯, S·J·希爾 申請(qǐng)人:Arm有限公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
昭平县| 北海市| 遂宁市| 罗江县| 桓台县| 湖州市| 武威市| 焉耆| 巧家县| 呼伦贝尔市| 太原市| 汾阳市| 南京市| 淅川县| 桃园县| 竹北市| 兴和县| 秀山| 金坛市| 钟祥市| 兴仁县| 固原市| 通山县| 项城市| 稷山县| 牟定县| 太仓市| 个旧市| 茂名市| 西乌珠穆沁旗| 诸城市| 县级市| 射洪县| 栖霞市| 孝感市| 承德县| 邵武市| 新干县| 营山县| 柘荣县| 额济纳旗|