欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

具有同時(shí)的無(wú)序調(diào)度之分布式調(diào)度的制作方法

文檔序號(hào):6476850閱讀:145來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):具有同時(shí)的無(wú)序調(diào)度之分布式調(diào)度的制作方法
技術(shù)領(lǐng)域
本發(fā)明系關(guān)于處理器的技術(shù)領(lǐng)域,且特別是關(guān)于在處理器中指令的提取及調(diào)度 (dispatch)。
背景技術(shù)
按超純量處理器(superscalar processor)試圖透過(guò)平行之方式(i即arallel) 處理多重指令(multiple instructions)來(lái)達(dá)成高效能。舉例而言,超純量處理器通常系 包含多個(gè)平行執(zhí)行單元,每一個(gè)平行執(zhí)行單元被構(gòu)造用來(lái)獨(dú)立地執(zhí)行運(yùn)算(operation)。為 了提供足夠的指令以有效地利用所述平行執(zhí)行單元,該超純量處理器試圖迅速地提取以及 譯碼多重指令,并將他們傳送至指令排程機(jī)制(instruction schedulingmechanism)。
由于指令之間的操作數(shù)相依性(operand d印endency)需要被考慮,因此,被提取 及譯碼的指令的程序順序必須具有可辨識(shí)性(discernable),以使相依性檢核(d印endency checking)能被實(shí)施。舉例而言,實(shí)作寄存器更名(register renaming)之處理器經(jīng)常將該 相依性檢核實(shí)施成部分的寄存器更名運(yùn)算。 以不同的時(shí)脈循環(huán)所傳送的指令的程序順序通常系明顯的以較早時(shí)脈循環(huán) 所傳送的指令比以較晚時(shí)脈循環(huán)所傳送的指令要來(lái)得舊。在程序順序中,較舊的指令系 在較新的指令之前。若分支預(yù)測(cè)(branchprediction)被實(shí)作成例如直接提取(direct fetching),則該程序順序是可推測(cè)的。 在被同時(shí)(例如,以相同的時(shí)脈循環(huán))傳送的指令中,該程序順序較不明顯。為了 確保程序順序可被辨認(rèn),很多處理器在多個(gè)平行譯碼器中分配靜態(tài)程序順序。所述譯碼器 以及其它的硬件可被視為數(shù)個(gè)時(shí)槽(slot),指令可被傳送至所述時(shí)槽。程序順序中的第一 指令被傳送至?xí)r槽O,程序順序中的第二指令被傳送至?xí)r槽l,等等。據(jù)此,所述同時(shí)被傳送 的指令的程序順序很明顯的是來(lái)自所述時(shí)槽,所述指令被傳送至所述時(shí)槽。
圖1為這種用于三個(gè)時(shí)槽(三個(gè)同時(shí)被傳送的指令)的運(yùn)算的范例,當(dāng)然任何數(shù) 目的時(shí)槽皆能被實(shí)作。圖1也顯示范例序列的指令I(lǐng)0至I10,其中,所述指令的推測(cè)的程序 順序系由上流向下(例如根據(jù)該推測(cè)的程序順序,10為第一、II為第二,等等)。在很多 情況下,一些時(shí)脈循環(huán)中所發(fā)送(issue)的指令會(huì)少于三個(gè)(例如所提取的指令不足,實(shí) 作_相依性限制(implementation—dependent constraint),等等)。 如圖l所示,每一個(gè)傳送循環(huán)內(nèi)(在圖1中被標(biāo)示為D0至D4)的程序順序中之第 一指令總是被發(fā)送至?xí)r槽O,程序順序中之第二指令(若有的話(huà))總是被發(fā)送至?xí)r槽l,而 程序順序中之第三指令(若有的話(huà))則總是被發(fā)送至?xí)r槽2。因此,所述同時(shí)傳送的指令的 程序順序?yàn)闀r(shí)槽0、然后時(shí)槽1、以及然后時(shí)槽2。 圖1中的實(shí)作指令傳送通常包含相當(dāng)復(fù)雜的輪循機(jī)制(rotationmechanism),以 將程序順序中之第一指令對(duì)準(zhǔn)(align)時(shí)槽0。該輪循機(jī)制系相依于先前已被傳送的指令 的數(shù)目以及第一指令于被提取的指令中的位置。此外,相較于其它時(shí)槽,時(shí)槽O所關(guān)聯(lián)之資 源通常更被高度地利用。若所述時(shí)槽就資源而言是對(duì)稱(chēng)的,則分配至?xí)r槽O的資源會(huì)整體性支配該處理器之可達(dá)成的平行性(achievable parallelism)。另一方面,若有更多的資 源被分配至?xí)r槽0甚于其它時(shí)槽(并且更多的資源被分配至?xí)r槽1甚于時(shí)槽2),實(shí)作會(huì)因 各個(gè)時(shí)槽之間的差異而更加復(fù)雜。雖然其它已被提出的機(jī)制允許第一指令被傳送至?xí)r槽0 以外的時(shí)槽,但是同時(shí)傳送的指令會(huì)被傳送至較高編號(hào)的時(shí)槽,因此,這種實(shí)作仍須使用到 復(fù)雜的輪循。

發(fā)明內(nèi)容
在一個(gè)實(shí)施例中,一種處理器包括指令緩沖器以及與該指令緩沖器連接之選取 單元。該指令緩沖器被連接用來(lái)接收從指令緩存所提取的指令。該選取單元被構(gòu)造用來(lái)從 該指令緩沖器中選擇多達(dá)(up to)N個(gè)指令以供同時(shí)傳送至多個(gè)時(shí)槽(slot)中的個(gè)別時(shí) 槽,其中N為大于1的整數(shù)。此外,該選取單元被構(gòu)造用來(lái)將所選擇的指令中的最舊的指令 傳送至該多個(gè)時(shí)槽中的任何一個(gè),即使所選擇的指令的數(shù)目大于1。該選取單元被構(gòu)造用來(lái) 基于該最舊的指令被傳送至的時(shí)槽而同時(shí)將所選擇的指令中的其它指令傳送至該多個(gè)時(shí) 槽中的其它時(shí)槽。 一些實(shí)施例包括一種計(jì)算機(jī)系統(tǒng),該計(jì)算機(jī)系統(tǒng)包含該處理器及通訊裝 置,該通訊裝置系構(gòu)造用來(lái)與另一計(jì)算機(jī)系統(tǒng)通訊。 在一實(shí)施例中,一種方法包括從處理器中的指令緩沖器選取多達(dá)N個(gè)指令以供 同時(shí)傳送至該處理器中之多個(gè)時(shí)槽中之個(gè)別時(shí)槽,其中N為大于l的整數(shù);將所選擇的指令 中的最舊的指令傳送至多個(gè)時(shí)槽中的任何一個(gè),即使所選擇的指令的數(shù)目大于1 ;基于該 最舊的指令被傳送至的時(shí)槽,同時(shí)將所選擇的指令中的其它指令傳送至該多個(gè)時(shí)槽中的其 它時(shí)槽。


上述的詳細(xì)說(shuō)明系參照附隨的圖式,現(xiàn)在將簡(jiǎn)單地描述該圖式。
圖1為揭示以一種習(xí)知形式進(jìn)行的指令傳送之方塊圖; 圖2為揭示此處所描述之指令傳送的一個(gè)實(shí)施例之方塊圖; 圖3為處理器之一個(gè)實(shí)施例之方塊圖; 圖4為揭示選取單元之一個(gè)實(shí)施例之運(yùn)算的流程圖; 圖5為揭示選取單元之另一實(shí)施例之運(yùn)算的流程圖;以及 圖6為計(jì)算機(jī)系統(tǒng)之一個(gè)實(shí)施例之方塊圖。 雖然本發(fā)明可容易作各種之修飾和替代形式,但是在此系由圖式中之范例顯示及 詳細(xì)說(shuō)明本發(fā)明之特定實(shí)施例。然而,應(yīng)暸解到此處特定實(shí)施例之圖式及詳細(xì)說(shuō)明并不欲 用來(lái)限制本發(fā)明為所揭示之特定形式,反之,本發(fā)明將涵蓋所有落于如所附申請(qǐng)專(zhuān)利范圍 內(nèi)所界定之本發(fā)明之精神和范圍內(nèi)之修飾、等效和替代內(nèi)容。
具體實(shí)施例方式
現(xiàn)在翻至圖2,方塊圖系顯示以揭示依據(jù)一個(gè)實(shí)施例之指令傳送。系顯示推測(cè)的指 令序列(speculative instruction sequence),包括指令10至110。所述指令的編號(hào)指示 該推測(cè)的程序順序(speculative programorder)(例如,指令10在程序順序中為第一,指 令I(lǐng)1在程序順序中為第二,等等)。系顯示三個(gè)時(shí)槽(slot 0、slot 1、及slot 2),以及顯示數(shù)個(gè)指令傳送的連續(xù)循環(huán)(D0至D4)。雖然系簡(jiǎn)示為三個(gè)時(shí)槽,但需注意的是任何數(shù)目的 時(shí)槽可實(shí)作于各種實(shí)施例中(例如,在圖4中之四個(gè)時(shí)槽)。為了比較之目的,在每一個(gè)循 環(huán)D0至D4中系選擇與圖l所顯示相同的指令。也存在各種不同的理由以在給定的循環(huán)中 選擇少于三個(gè)指令(例如,已被提取但尚未被傳送至?xí)r槽之指令的數(shù)目;對(duì)于同時(shí)傳送指 令(例如,分支指令的偵測(cè)及預(yù)測(cè),在給定組之已提取指令字節(jié)中之指令的數(shù)目,等等)之 實(shí)作-特定限制(implementation-specific constraint);等等)。 根據(jù)此處所描述的指令選擇機(jī)制,在程序順序中最舊的指令可被傳送至任何時(shí) 槽,不論同時(shí)選擇用于傳送之指令的數(shù)目為多少(例如,即使所選取的指令的數(shù)目大于1), 其它被選擇的指令可基于該最舊的指令被傳送至的時(shí)槽而被傳送。舉例而言,所述時(shí)槽可 被視為彼此接續(xù),包含從最后一個(gè)時(shí)槽繞回至?xí)r槽O。也就是,在本實(shí)施例中,時(shí)槽l接續(xù)于 時(shí)槽0,時(shí)槽2接續(xù)于時(shí)槽1,而時(shí)槽0接續(xù)于時(shí)槽2。若最舊的指令被傳送至給定的時(shí)槽, 則隨后的指令被傳送至接續(xù)該給定時(shí)槽的時(shí)槽。在給定傳送中之最舊的指令可以一些方式 加以識(shí)別,這樣,下游管線階段(downstream pipeline stage)便可辨識(shí)該程序順序。
藉由傳送最舊的指令至任何時(shí)槽,指令于下游資源上的負(fù)載(load)便可隨著時(shí) 間而相當(dāng)?shù)仄胶?。因此,在一些?shí)施例中,可提供對(duì)稱(chēng)式資源,而不會(huì)產(chǎn)生嚴(yán)重地影響效能, 實(shí)作可因此被減緩。舉例來(lái)說(shuō),可分配時(shí)槽硬件的實(shí)例,而該實(shí)例可被復(fù)制以提供所希望的 時(shí)槽。此外,在一些實(shí)施例中,指令可以較少或幾乎沒(méi)有輪循之方式被提取(例如,進(jìn)入指 令緩沖器)及傳送,以將他們從該緩沖器對(duì)準(zhǔn)至他們被傳送至之時(shí)槽。 在圖2中,任何給定循環(huán)中的最舊的指令被傳送至該時(shí)槽,該時(shí)槽接續(xù)于已在該 先前傳送中被寫(xiě)入(fill)的最后的時(shí)槽(例如,該時(shí)槽寫(xiě)入有該先前傳送中之最新的指 令)。指令10及II被選擇并在循環(huán)DO中被傳送至?xí)r槽0及1,在循環(huán)Dl中,指令12及 13被選擇。由于指令I(lǐng)I系被傳送至?xí)r槽2,并且為循環(huán)DO中最新的指令,因此,指令12系 被傳送至?xí)r槽2。指令I(lǐng)3被傳送至下一個(gè)接續(xù)的時(shí)槽(時(shí)槽0)。在循環(huán)D2中,有三個(gè)指 令(14、15、及16)被選取,指令14被傳送至?xí)r槽l,而其余指令則傳送至下一個(gè)接續(xù)的時(shí)槽 (指令15被傳送至?xí)r槽2,指令16被傳送至?xí)r槽0)。在循環(huán)D3中,指令17被選取并被傳 送至?xí)r槽1 ;而在循環(huán)D4中,指令18、 19、及110被選取并分別地被傳送至?xí)r槽1、2、及0。
雖然圖2揭示三個(gè)時(shí)槽,但其它實(shí)施例可包含超過(guò)三個(gè)時(shí)槽或兩個(gè)時(shí)槽。舉例而 言,圖3揭示具有四個(gè)時(shí)槽34A-34D之實(shí)施例,每一個(gè)時(shí)槽皆包括硬件,提取的指令可被傳 送至該硬件,并且,該提取的指令在離開(kāi)(exit)該時(shí)槽之最后管線階段之前會(huì)一直留在該 硬件內(nèi)。所述時(shí)槽可彼此相互獨(dú)立,并且,他們的管線可為無(wú)閑置(stall-free)。在一個(gè)實(shí) 施例中,每一個(gè)時(shí)槽可包括至少一個(gè)譯碼器電路系統(tǒng),并且在開(kāi)始無(wú)序執(zhí)行(out of order execution)之前(例如,在指令被排程以執(zhí)行之排程階段之前)可還包括任何額外所希望 的電路。舉例而言,在圖3中,每一個(gè)時(shí)槽可包括譯碼單元以及運(yùn)算(op)隊(duì)列。
翻至圖3,系顯示處理器10之一個(gè)實(shí)施例之方塊圖。在揭示的實(shí)施例中,該處理器 10系包括提取控制單元12、指令緩存(instructioncache ;ICache) 14、分支預(yù)測(cè)器(branch predictor) 16、指令緩沖器20、選取單元26、多個(gè)譯碼單元18A至18D、多個(gè)運(yùn)算隊(duì)列28A至 28D、更名單元(rename unit) 22、以及執(zhí)行核心(execution core) 24。該提取控制單元12 被連接至該指令緩存14、該分支預(yù)測(cè)器16、以及該執(zhí)行核心24。該指令緩存14復(fù)被連接 至該指令緩沖器20,該指令緩沖器20被連接至該選取單元26。該選取單元26被連接至所述譯碼單元18A至18D,所述譯碼單元18A至18D的每個(gè)被連接至個(gè)別的運(yùn)算隊(duì)列28A至 28D。所述運(yùn)算隊(duì)列28A至28D被連接至該更名單元22,該更名單元22復(fù)被連接至執(zhí)行核 心24并包含線內(nèi)式相依性檢核器(intraline d印endency checker) 30。
使用于此處之術(shù)語(yǔ)"運(yùn)算(operation)"、" 指令運(yùn)算 (instructionoperation)"(或更可簡(jiǎn)稱(chēng)為"運(yùn)算(op)")系相關(guān)于由該處理器10所執(zhí)行的 指令。一般而言,運(yùn)算可以一對(duì)一映像(one-to-one m即ping)至由該處理器IO所實(shí)作的指 令集架構(gòu)中所分配指令。所述運(yùn)算可與所述指令相同、或具有譯碼的形式?;蛘?,給定指令 集架構(gòu)(或至少一些所述指令)中的指令可映像至兩個(gè)或更多個(gè)運(yùn)算。在某些情況中,可 實(shí)作微碼化(microcoding),因此,映像可包括儲(chǔ)存于微碼只讀存儲(chǔ)器(microcode ROM)中 的微碼例程(microcode routine)。在其它情況中,硬件可產(chǎn)生所述運(yùn)算,或可使用硬件產(chǎn) 生與微碼化的組合方式。因此,分支運(yùn)算(或更可簡(jiǎn)稱(chēng)為"分支")系對(duì)應(yīng)于分支指令/或 從分支指令所衍生。加載運(yùn)算及儲(chǔ)存運(yùn)算(或更可簡(jiǎn)稱(chēng)為"加載"以及"儲(chǔ)存")系對(duì)應(yīng)于 加載及儲(chǔ)存指令或其它具有存儲(chǔ)器操作數(shù)(memory operand)的指令/或從加載及儲(chǔ)存指 令或其它具有存儲(chǔ)器操作數(shù)的指令所衍生。同樣地,其它的運(yùn)算可對(duì)應(yīng)于其它的指令/或 從其它的指令所衍生。 該提取控制單元12被構(gòu)造而產(chǎn)生提取地址以在該處里器10中提取用于執(zhí)行 之指令。該提取控制單元12被連接至該分支預(yù)測(cè)器16,以及使用由該分支預(yù)測(cè)器16 所產(chǎn)生之分支預(yù)測(cè)來(lái)控制隨后的提取,據(jù)此產(chǎn)生推測(cè)的程序順序。此外,當(dāng)重提取清 除(refetch flush)發(fā)生時(shí)(例如,分支預(yù)測(cè)錯(cuò)誤(branch misprediction)、推測(cè)錯(cuò)誤 (misspeculation)、或異常(exc印tion)),重取清除控制可由執(zhí)行核心24提供,以復(fù)位向 提取(redirecting fetching)。該提取控制單元將提取地址傳輸至該指令緩存14,該指令 緩存14提供對(duì)應(yīng)的指令字節(jié)至該指令緩沖器20。 該選取單元26可掃描該指令緩沖器20中之指令字節(jié),以將用于傳送之指令定 位(locate)于所述時(shí)槽(開(kāi)始于所述譯碼單元18A至18D)。在一個(gè)實(shí)施例中,該指令 緩存14可實(shí)作預(yù)譯碼,以促進(jìn)定位指令于所述所提取之字節(jié)內(nèi)。舉例而言,如x86(也被 稱(chēng)為IA-32)或AMD64TM之可變的位組長(zhǎng)度指令集可在所述字節(jié)的不同點(diǎn)具有指令邊限 (instruction boundary)。該選取單元26可使用該預(yù)譯碼數(shù)據(jù)來(lái)定位指令,并可選擇每一 個(gè)定位的指令所對(duì)應(yīng)之指令字節(jié)來(lái)傳送至譯碼單元18A至18D。該選取單元26也可在同時(shí) 被選擇指令上實(shí)行各式各樣的實(shí)作限制。用于一些實(shí)施例的范例限制可包含一個(gè)或更多個(gè) 以下的限制在分支指令的數(shù)目上的限制;在動(dòng)態(tài)執(zhí)行資源(dynamicexecution resourc) (例如,排程器隊(duì)列項(xiàng)目(scheduler queue entry)或用于寄存器更名的閑置寄存器)之?dāng)?shù) 目上的限制;可在同一群組同時(shí)被調(diào)度(dispatched)的指令類(lèi)型上的限制;等等。
在一個(gè)實(shí)施例中,該選取單元26可于指令字節(jié)被寫(xiě)入至指令緩沖器20時(shí)掃描該 指令字節(jié),以辨別指令以及將他們分配至?xí)r槽。該選取單元26可例如將接續(xù)的時(shí)槽以該程 序順序分配至接續(xù)的指令,從最后一個(gè)時(shí)槽輪循回到時(shí)槽O。當(dāng)所述指令被選擇時(shí),所述指 令可被傳送至該分配的時(shí)槽。因此,時(shí)槽選擇可與給定的時(shí)脈循環(huán)中所選擇之指令的數(shù)目 無(wú)關(guān)。在另一實(shí)施例中,該選取單元26可在每一個(gè)循環(huán)中記錄接續(xù)于寫(xiě)入最新的指令的時(shí) 槽的時(shí)槽(例如,按時(shí)槽編號(hào)),并可將下一個(gè)時(shí)脈循環(huán)中所選擇之最舊的指令傳送至那所 記錄的時(shí)槽編號(hào)。在同樣該下一個(gè)時(shí)脈循環(huán)中所選擇之隨后的指令可被傳送至接續(xù)的時(shí)槽,而接續(xù)于該最新的指令的時(shí)槽可再次被記錄。其它的實(shí)施例可使用其它的機(jī)制來(lái)判定 那些時(shí)槽接收到那些指令。 該選取單元26也可被構(gòu)造用以產(chǎn)生在給定同時(shí)傳送的指令中的最舊之指令的指 示。舉例而言,可提供最舊之指令的時(shí)槽編號(hào),或可于接收最舊之指令的時(shí)槽中設(shè)定旗標(biāo)位 (flag bit)??墒褂萌魏沃甘尽?每一個(gè)譯碼單元18A至18D均包括電路系統(tǒng),該電路系統(tǒng)用以譯碼由選取單元26 所提供之指令,以產(chǎn)生運(yùn)算。若實(shí)作微碼化,則所述譯碼單元可包含一個(gè)微碼單元。該譯碼 單元18A至18D將該運(yùn)算提供至被連接于那個(gè)譯碼單元18A至18D的運(yùn)算隊(duì)列28A至28D。 每一個(gè)運(yùn)算隊(duì)列28A至28D均包括多個(gè)項(xiàng)目,每一個(gè)項(xiàng)目均被構(gòu)造用來(lái)儲(chǔ)存運(yùn)算。若給定 的時(shí)槽在給定的循環(huán)中沒(méi)有被傳送至其之運(yùn)算,但其它的時(shí)槽確有運(yùn)算被傳送,則項(xiàng)目可 分配在運(yùn)算隊(duì)列28A至28D內(nèi),并且該項(xiàng)目可指示無(wú)效。因此,該同時(shí)傳送之指令的群組可 留在每一個(gè)運(yùn)算隊(duì)列28A至28D內(nèi)的相同項(xiàng)目中,并且可同時(shí)由更名單元22讀取。所以, 同時(shí)被傳送之指令的給定群組可同時(shí)離開(kāi)該挾槽。 每一個(gè)運(yùn)算隊(duì)列項(xiàng)目可儲(chǔ)存運(yùn)算以及各種狀態(tài)/控制資料。舉例而言,運(yùn)算隊(duì)列 項(xiàng)目32系顯示于該運(yùn)算隊(duì)列28A內(nèi),其它的項(xiàng)目亦類(lèi)似。該運(yùn)算隊(duì)列項(xiàng)目32可包含有效位 (V)、第一位(F)、以及運(yùn)算欄(0)。其它的狀態(tài)/控制資料也可被實(shí)作在不同的實(shí)施例中。 該有效位可指示該項(xiàng)目是否為有效,也就是,該有效位可指示該項(xiàng)目是否正在儲(chǔ)存運(yùn)算。該 第一位可指示該運(yùn)算是否對(duì)應(yīng)于同時(shí)被傳送的指令的群組中的最舊的指令?;蛘?,一個(gè)或 更多個(gè)項(xiàng)目可儲(chǔ)存指示該最舊的指令的時(shí)槽編碼。在一個(gè)實(shí)施例中,該運(yùn)算隊(duì)列項(xiàng)目也可 包含預(yù)譯碼資料,以加速所述指令的處理。 該更名單元22可實(shí)作該寄存器更名。該更名單元22可維持邏輯寄存器(logical register)對(duì)實(shí)體寄存器(physical register)的映像(mapping),并可基于該映像將每 一個(gè)來(lái)源邏輯寄存器(source logicalregister)更名為實(shí)體寄存器。該更名單元22也 可分配閑置的實(shí)體寄存器給每一個(gè)目標(biāo)寄存器(destination register),并可以該重新 分配的實(shí)體寄存器更名該目標(biāo)寄存器。該更名單元22可更新該映像,以反映該重新分配 的實(shí)體寄存器。 一般而言,該邏輯寄存器可包含任何已建構(gòu)的寄存器(該已建構(gòu)的寄存器 系由該處理器10所實(shí)作的指令集架購(gòu)所分配),以及實(shí)作_特定程序者_(dá)可視寄存器(im plementation-specificprogrammer-visible register)及微石馬臨時(shí)寄存器(microcode tempregister),若有的話(huà)。實(shí)體寄存器可包括實(shí)際上被實(shí)作于該處理器10內(nèi)的寄存器。該 更名單元22提供所述運(yùn)算及他們的更名至該執(zhí)行核心24。 作為該更名處理之一部分,該更名單元可檢核從所述運(yùn)算隊(duì)列28A至28D所同時(shí) 提供之運(yùn)算之間的相依性。來(lái)自該運(yùn)算隊(duì)列項(xiàng)目之第一位可被用來(lái)定位該最舊的指令,以 將所述指令依據(jù)內(nèi)線路相依性檢核器30之相依性檢核排序。該更名單元22也可提供該第 一位或該指令排序的其它指示給該執(zhí)行核心24。 該執(zhí)行核心24可包含排程電路系統(tǒng)(例如,中央式排程器(centralized scheduler)、預(yù)留緩存空間(reservation station),等等),以于運(yùn)算的操作數(shù)可用 (available)時(shí),排程該運(yùn)算以備執(zhí)行。該執(zhí)行核心24可代表一個(gè)或更多個(gè)執(zhí)行各種運(yùn)算 之平行執(zhí)行單元。舉例而言,該執(zhí)行核心24的各種實(shí)施例可包括一個(gè)或更多個(gè)整數(shù)單元 (intege進(jìn)it)、一個(gè)或更多個(gè)地址產(chǎn)生單元(address generation皿it)(用以力口載/儲(chǔ)存運(yùn)算)、一個(gè)或更多個(gè)浮點(diǎn)單元(floating point unit)、及/或一個(gè)或更多個(gè)多媒體單 元、資料緩存,等等。該執(zhí)行核心24也可包含異常偵測(cè)硬件、以及引退硬件(retirement hardware),該引退硬件將不再推測(cè)的以及已正確執(zhí)行過(guò)的指令予以引退。
在不同的實(shí)施例中,該指令緩存14的每個(gè)以及該執(zhí)行核心24中的資料緩存可包 括任何構(gòu)造及容量。在一些實(shí)施例中,該指令緩存14也可儲(chǔ)存預(yù)譯碼數(shù)據(jù),諸如指令起始 及/或終止指針(end indicator),以辨別指令的位置。 在 一 些實(shí)施例中,該處理器10可支持多重執(zhí)行緒(multithreading)。舉例 而言,實(shí)施例可已經(jīng)分享了指令緩存及譯碼硬件,但可具有分別的每一執(zhí)行緒執(zhí)行叢集 (per-thread execution cluster)。需注意的是,雖然該揭示的實(shí)施例包含四個(gè)時(shí)槽(譯 碼單元及運(yùn)算隊(duì)列),但其它的實(shí)施例可包含2或更大之任何數(shù)目個(gè)時(shí)槽。
在一個(gè)實(shí)施例中,被實(shí)作于該指令緩存14內(nèi)的該預(yù)譯碼結(jié)構(gòu)可包含與每一個(gè)指 令字節(jié)關(guān)聯(lián)的兩個(gè)終止位(end bit),一個(gè)終止位包含在兩組終止位之各組內(nèi)。若字節(jié)不 是指令的終止,則兩個(gè)位皆被清除。若該字節(jié)為指令的終止,則可設(shè)定所述終止位之至少一 個(gè)??僧a(chǎn)生該組終止位,這樣,序列中之接續(xù)指令便具有他們的相對(duì)于該組的每個(gè)的組終止 位。在這種實(shí)施例中,該選取單元26可包括兩個(gè)掃描儀,每一個(gè)掃描儀接收該組終止位之 其中一個(gè)。每一個(gè)掃描儀可將頭兩個(gè)指令終止(指示于他們個(gè)別的組位)予以定位。因此, 多達(dá)四個(gè)指令可能只使用搜尋第一及搜尋第二算法而定位在所述終止位上。在一個(gè)實(shí)施例 中,譯碼成一個(gè)或兩個(gè)運(yùn)算之指令在所述譯碼單元18A-18D中的硬件內(nèi)被處理,而譯碼成3 個(gè)或更多個(gè)運(yùn)算碼之指令在微碼中被處理。被譯碼成兩個(gè)運(yùn)算的指令可稱(chēng)為雙重調(diào)度運(yùn)算 (double dispatch op),雙重調(diào)度運(yùn)算可具有兩組終止位,這樣,該指令便可被傳送至兩個(gè) 時(shí)槽。所述指令實(shí)例之其中一個(gè)可如該第二實(shí)例般被附加巻標(biāo)(tagged),而該兩個(gè)接收譯 碼單元18A至18D可產(chǎn)生用于那個(gè)指令的個(gè)別的第一或第二運(yùn)算。 現(xiàn)在翻至圖4,系顯示揭示該選取單元26之一個(gè)實(shí)施例之流程圖。雖然所述區(qū)塊 (block)系以特別的順序顯示,以易于理解,但其它的順序亦可被使用。區(qū)塊可由該選取單 元26內(nèi)的組合邏輯(combinationallogic)以平行的方式實(shí)施。區(qū)塊、區(qū)塊的組合、及/或 該流程圖整體可以管線排列(pipelined)于多重時(shí)脈環(huán)循上。 若有效的指令(指令字節(jié))系在該指令緩沖器20內(nèi)(判斷區(qū)塊40,"是"的路徑), 則該選取單元26可分配時(shí)槽給每一個(gè)指令(區(qū)塊42)。在一個(gè)實(shí)施例中,若指令為雙重調(diào) 度,則該指令可被分配至兩個(gè)時(shí)槽。若指令緩沖器20中沒(méi)有有效的指令,則該選取單元26 可等待有效指令(判斷區(qū)塊40,"否"的路徑)。 該選取單元26可根據(jù)不同的標(biāo)準(zhǔn)選擇一個(gè)或更多個(gè)指令,所述標(biāo)準(zhǔn)中之一些之 實(shí)作可與不同的實(shí)施例相依(區(qū)塊44)。該選取單元26可傳送所述指令至被分配到的時(shí) 槽,并辨別最舊的指令(區(qū)塊46)。 現(xiàn)在翻至圖5,系顯示揭示該選取單元26之另一實(shí)施例之流程圖。雖然所述區(qū)塊 系以特別的順序顯示,以易于理解,但其它的順序亦可被使用。區(qū)塊可由該選取單元26內(nèi) 的組合邏輯以平行的方式實(shí)施。區(qū)塊、區(qū)塊的組合及/或該流程圖整體可以管線排序于多 重時(shí)脈環(huán)循上。 該選取單元26可嘗試去選擇指令以傳送。若至少一個(gè)指令被選取(判斷區(qū)塊50," 是"的路徑),則該選取單元26被構(gòu)造將所述指令傳送至數(shù)個(gè)時(shí)槽(該數(shù)個(gè)機(jī)槽系以最近記錄的時(shí)槽開(kāi)始,并以接續(xù)的時(shí)槽繼續(xù))(區(qū)塊52)。該選取單元26也可辨別該最舊的指 令。該選取單元26也可記錄最后所發(fā)出的指令所對(duì)應(yīng)之時(shí)槽。 現(xiàn)在翻至圖6,系顯示計(jì)算機(jī)系統(tǒng)300之實(shí)施例。在圖6的實(shí)施例中,計(jì)算機(jī)系統(tǒng) 300系包含數(shù)個(gè)處理節(jié)點(diǎn)312A、312B、312C、及312D。每一個(gè)處理節(jié)點(diǎn)經(jīng)由包含在每一個(gè)個(gè) 別處理節(jié)點(diǎn)312A至312D內(nèi)之存儲(chǔ)器控制器316A至316D而連接至個(gè)別的存儲(chǔ)器314A至 314D。此外,處理節(jié)點(diǎn)312A至312D包含接口邏輯(interface logic),所述接口邏輯被用 來(lái)于所述處理節(jié)點(diǎn)312A至312D之間進(jìn)行通訊。舉例而言,處理節(jié)點(diǎn)312A包含用以與處理 節(jié)點(diǎn)312B進(jìn)行通訊的接口邏輯318A、用以與處理節(jié)點(diǎn)312C進(jìn)行通訊的接口邏輯318B、以 及用以與其它的處理節(jié)點(diǎn)(未顯示)進(jìn)行通訊的接口邏輯318C。同樣地,處理節(jié)點(diǎn)312B包 含接口邏輯318D、318E、及318F ;處理節(jié)點(diǎn)312C包含接口邏輯318G、318H、及3181 ;而處理 節(jié)點(diǎn)312D包含接口邏輯318J、318K、及318L。處理節(jié)點(diǎn)312D被連接以經(jīng)由接口邏輯318L 與多個(gè)輸入/輸出(1即ut/0utput ;1/0)裝置(例如,構(gòu)造成菊鏈狀(daisy chain)的裝置 320A至320B)進(jìn)行通訊。其它的處理節(jié)點(diǎn)可以同樣的方式與其它的I/O裝置進(jìn)行通訊。
處理節(jié)點(diǎn)312A至312D實(shí)作以封包為基礎(chǔ)(packet-based)的聯(lián)機(jī),來(lái)進(jìn)行處理 節(jié)點(diǎn)內(nèi)部之通訊。在本實(shí)施例中,該聯(lián)機(jī)系被實(shí)作成數(shù)組單向式線路(unidirectional line)(例如,線路324A被用來(lái)從處理節(jié)點(diǎn)312A傳送封包至處理節(jié)點(diǎn)312B,而線路324B被 用來(lái)從處理節(jié)點(diǎn)312B傳送封包至處理節(jié)點(diǎn)312A)。如圖6所揭示,其它組的線路324C至 324H可被用來(lái)于其它的處理節(jié)點(diǎn)之間傳送封包。 一般而言,每一組線路324可包含一條 或更多條資料線(data line)、一條或更多條對(duì)應(yīng)于所述資料線之時(shí)脈線(clock line)、 以及一條或更多條控制線(controlline)以指示被傳遞的封包之類(lèi)型。該聯(lián)機(jī)可以緩 存一致性(cachecoherent)的方式被運(yùn)算以于處理節(jié)點(diǎn)之間進(jìn)行通訊,或以非一致性 (non-coherent)的方式被運(yùn)算以于處理節(jié)點(diǎn)與1/0裝置(或橋接至傳統(tǒng)架構(gòu)的1/0總線 (諸如,外圍組件互連(Peripheral Componentlnterconnect ;PCI)總線或工業(yè)標(biāo)準(zhǔn)構(gòu)造 (Industry Standard Architecture ;ISA)總線)之總線)之間進(jìn)行通訊。再者,該聯(lián)機(jī)可使 用如所顯示之1/0裝置間的菊鏈狀結(jié)構(gòu)而以非一致性的方式被運(yùn)算。需注意的是,將從一 個(gè)處理節(jié)點(diǎn)被傳送至另一個(gè)處理節(jié)點(diǎn)之封包可通過(guò)一個(gè)或更多個(gè)中間節(jié)點(diǎn)(intermediate node)。舉例而言,如圖6所顯示,由處理節(jié)點(diǎn)312A傳送至處理節(jié)點(diǎn)312D之封包可通過(guò)處 理節(jié)點(diǎn)312B或處理節(jié)點(diǎn)312C。任何適當(dāng)?shù)睦@線算法(routing algorithm)皆可被使用。 相較于圖6所顯示之實(shí)施例,計(jì)算機(jī)系統(tǒng)300之其它實(shí)施例可包含較多或較少個(gè)處理節(jié)點(diǎn)。
—般而言,所述封包可在線路324上的節(jié)點(diǎn)間被傳送如一個(gè)或更多個(gè)位時(shí)間(bit time)。位時(shí)間可為該對(duì)應(yīng)的時(shí)脈線上之時(shí)脈訊號(hào)的上升緣(rising edge)或下降緣 (falling edge)。所述封包可包含用來(lái)起始交易(initiating transaction)的命令封包 (command packet)、用來(lái)維持緩存一致性的探測(cè)封包(probe packet)、以及響應(yīng)探測(cè)及命 令之口向應(yīng)封包(response packet)。 處理節(jié)點(diǎn)312A至312D除了存儲(chǔ)器控制器以及接口邏輯以外可另包含一個(gè)或更 多個(gè)處理器。廣義言之,處理節(jié)點(diǎn)包括至少一個(gè)處理器以及可選擇地包含存儲(chǔ)器控制器, 用以視需要與存儲(chǔ)器以及其它邏輯進(jìn)行通訊。更甚者,如圖3所顯示,每一個(gè)處理節(jié)點(diǎn) 312A至312D可包括一個(gè)或更多個(gè)處理器10之復(fù)制物(例如,包含圖2及圖4至圖5所 顯示之不同的結(jié)構(gòu)以及運(yùn)算細(xì)節(jié))。 一個(gè)或更多個(gè)處理器可包括單芯片多核心處理(chipmultiprocessing ;CMP)或單芯片多執(zhí)行緒處理(chipmultithreaded ;CMT)集成電路,該集 成電路系位在該處理節(jié)點(diǎn)中或形成該處理節(jié)點(diǎn),或該處理節(jié)點(diǎn)可具有任何其它所希望的內(nèi) 部結(jié)構(gòu)。 存儲(chǔ)器314A至314D可包括任何適當(dāng)?shù)拇鎯?chǔ)器裝置。舉例而言,存儲(chǔ)器314A至 314D可包括一個(gè)或更多個(gè)RAMBUS動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(RDRAM)、同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器 (SDRAM) 、DDR DRAM、靜態(tài)隨機(jī)存取存儲(chǔ)器(static RAM),等等。計(jì)算機(jī)系統(tǒng)300的地址空間 被劃分成存儲(chǔ)器314A至314D。每一個(gè)處理節(jié)點(diǎn)312A至312D可包含存儲(chǔ)器映像圖(memory m即),該存儲(chǔ)器映像圖被用來(lái)判定那些地址被映像至那些存儲(chǔ)器314A至314D,以及因此判 定特別地址之存儲(chǔ)器請(qǐng)求(memory request)應(yīng)于被繞線至那個(gè)處理節(jié)點(diǎn)312A至312D。在 一個(gè)實(shí)施例中,該計(jì)算機(jī)系統(tǒng)300內(nèi)之地址的一致性點(diǎn)(coherency point)系為被連接該 存儲(chǔ)器之存儲(chǔ)器控制器316A至316D,其中,該存儲(chǔ)器系儲(chǔ)存該地址所對(duì)應(yīng)之字節(jié)。換言之, 該存儲(chǔ)器控制器316A至316D負(fù)責(zé)確保每一個(gè)至該對(duì)應(yīng)的存儲(chǔ)器314A至314D之存儲(chǔ)器存 取皆以緩存一致性的方式發(fā)生。存儲(chǔ)器控制器316A至316D可包括用來(lái)與存儲(chǔ)器314A至 314D介接(interface)的控制電路系統(tǒng)。此外,存儲(chǔ)器控制器316A至316D可包含用以隊(duì) 列存儲(chǔ)器請(qǐng)求之請(qǐng)求隊(duì)列。 —般而言,接口邏輯318A至318L可包括多種緩沖器,所述緩沖器用來(lái)從該聯(lián)機(jī)接 收封包以及用來(lái)緩沖將被傳送于該聯(lián)機(jī)上的封包。計(jì)算機(jī)系統(tǒng)300可采用于任何用于傳送 封包的流量控制機(jī)制(flowcontrol mechanism)。舉例而言,在一個(gè)實(shí)施例中,每一個(gè)接口 邏輯318儲(chǔ)存該接收器內(nèi)之每一種緩沖器類(lèi)型的數(shù)目之計(jì)數(shù),該接收器系在該聯(lián)機(jī)上該接 口邏輯所連接之另一端處。除非該接收接口邏輯具有閑置的緩沖器以?xún)?chǔ)存封包,否則該接 口邏輯將不傳送該封包。當(dāng)接收緩沖器藉由將封包向前繞線而閑置時(shí),該接收接口邏輯將 訊息傳送給該發(fā)送接口邏輯(sending interface logic),以指示該緩沖器已經(jīng)是閑置的。 這種機(jī)制可被稱(chēng)為"基于抵用券(coupon-based)"的系統(tǒng)。 1/0裝置320A至320B可為任何適用的1/0裝置。舉例而言,I/O裝置320A至 320B可包含用來(lái)與其它計(jì)算機(jī)系統(tǒng)通訊之裝置(例如,網(wǎng)絡(luò)適配卡或調(diào)制解調(diào)器),該 計(jì)算機(jī)系統(tǒng)可與該裝置連接。此外,1/0裝置320A至320B可包含視訊加速器(video accelerator)、音訊卡(audiocard)、硬或軟盤(pán)或驅(qū)動(dòng)控制器、小型計(jì)算機(jī)系統(tǒng)接口 (Small ComputerSystems Interface ;SCSI)轉(zhuǎn)接器及通話(huà)卡(telephony card)、聲卡 (soundcard)、以及多種資料采集卡(data acquisition card)(諸如,通用接口總線(GPIB) 或現(xiàn)場(chǎng)總線適配卡(field bus interface card))。再者,被實(shí)作如卡的任何I/O裝置也可 被實(shí)作如該系統(tǒng)300之主電路板上的電路系統(tǒng)及/或在處理節(jié)點(diǎn)上所執(zhí)行的軟件。需注意 的是,術(shù)語(yǔ)"I/O裝置"與術(shù)語(yǔ)"周邊裝置"于此系視為同義。 再者,一個(gè)或更多個(gè)處理器IO可被實(shí)作在更傳統(tǒng)的個(gè)人計(jì)算機(jī)(PC)結(jié)構(gòu)內(nèi),該更 傳統(tǒng)的個(gè)人計(jì)算機(jī)結(jié)構(gòu)包含一個(gè)或更多個(gè)處理器的接口,以橋接至一個(gè)或更多個(gè)I/O互連 及/或存儲(chǔ)器。 以上所揭露的內(nèi)容一旦理解后,許多的變化及修改對(duì)于該技術(shù)領(lǐng)域中熟習(xí)技術(shù)者 將變得很明顯。接下來(lái)的申請(qǐng)專(zhuān)利范圍打算以涵蓋所有這種變化與修改之方式來(lái)加以解讀。 產(chǎn)業(yè)利用性
本發(fā)明 一般可應(yīng)用于處理器與計(jì)算機(jī)系統(tǒng)c
權(quán)利要求
一種處理器,包括指令緩沖器(20),連接用來(lái)接收從指令緩存(14)所提取的指令;以及選取單元(26),與該指令緩沖器(20)連接,且被構(gòu)造用來(lái)從該指令緩沖器(20)中選擇多達(dá)N個(gè)指令以供同時(shí)傳送至多個(gè)時(shí)槽(34A-34D)中的個(gè)別時(shí)槽,其中,N為大于1的整數(shù),以及其中,該選取單元(26)被構(gòu)造用來(lái)將所述所選擇的指令中的最舊的指令傳送至該多個(gè)時(shí)槽(34A-34D)中的任何一個(gè),即使所述所選擇的指令的數(shù)目大于1,以及其中,該選取單元(20)被構(gòu)造用來(lái)基于該最舊的指令被傳送至的該時(shí)槽而將所述所選擇的指令中的其它指令同時(shí)傳送至該多個(gè)時(shí)槽(34A-34D)中的其它時(shí)槽。
2. 如權(quán)利要求l所述的處理器,其中,該選取單元(26)被構(gòu)造用來(lái)將指令分配至?xí)r槽 (34A-34D),以響應(yīng)接收所述指令進(jìn)入該指令緩沖器(20)。
3. 如權(quán)利要求2所述的處理器,其中,該選取單元(26)被構(gòu)造用來(lái)根據(jù)所述指令于該 指令緩沖器(20)中的程序順序,將所述指令以接續(xù)的方式分配至所述時(shí)槽(34A-34D)。
4. 如權(quán)利要求1至3中任一項(xiàng)所述的處理器,其中,該選取單元(26)被構(gòu)造用來(lái)記錄 該多個(gè)時(shí)槽中哪一個(gè)時(shí)槽接續(xù)于先前指令被傳送至的最后的時(shí)槽,以及其中,該選取單元 (26)被構(gòu)造用來(lái)將該最舊的指令傳送至該被記錄的時(shí)槽。
5. 如權(quán)利要求4所述的處理器,其中,該選取單元(26)被構(gòu)造用來(lái)辨別該最舊的指令, 以及其中,在該被記錄的時(shí)槽(34A-34D)中的隊(duì)列(28A-28D)被構(gòu)造用來(lái)儲(chǔ)存指示,該指示 用以辨別每一組同時(shí)被選擇的指令中最舊的指令。
6. 如權(quán)利要求5所述的處理器,還包括更名單元(22),該更名單元被連接至該多個(gè)時(shí) 槽(34A-34D)中的所述隊(duì)列(28A-28D)以及被構(gòu)造用來(lái)從所述隊(duì)列(28A-28D)中的每個(gè)讀 取所述同時(shí)被選擇的指令中的一個(gè),其中,該更名單元(22)被構(gòu)造用來(lái)在所述同時(shí)被選擇 的指令上實(shí)施寄存器更名,以及被構(gòu)造用來(lái)使用該最舊的指令的指示以偵測(cè)所述同時(shí)被選 擇的指令之間的寄存器相依性。
7. —種方法,包括從處理器(10)中的指令緩沖器(20)選擇多達(dá)N個(gè)指令,以供同時(shí)傳送至該處理器 (10)中的多個(gè)時(shí)槽(34A-34D)中的個(gè)別時(shí)槽,其中,N為大于1的整數(shù);將所述所選擇的指令中的最舊的指令傳送至該多個(gè)時(shí)槽(34A-34D)中的任何一個(gè),即 使所述所選擇的指令的數(shù)目大于1 ;以及基于該最舊的指令被傳送至的該時(shí)槽,將所述所選擇的指令中的其它指令同時(shí)傳送至 該多個(gè)時(shí)槽(34A-34D)中的其它時(shí)槽。
8. 如權(quán)利要求7所述的方法,還包括將指令分配至?xí)r槽(34A-34D),以響應(yīng)接收所述指 令進(jìn)入該指令緩沖器(20),其中,該分配包括根據(jù)所述指令的程序順序,將所述指令以接續(xù) 的方式分配至所述時(shí)槽。
9. 如權(quán)利要求7或8所述的方法,還包括記錄該多個(gè)時(shí)槽(34A-34D)中哪一個(gè)時(shí)槽接續(xù)于先前指令被傳送至的最后的時(shí)槽;以及將該最舊的指令傳送至該記錄的時(shí)槽。
10. 如權(quán)利要求9所述的方法,其中,傳送該最舊的指令還包括辨別該最舊的指令,以 及該方法還包括儲(chǔ)存指示,該指示辨別每一組同時(shí)被選擇的指令中的最舊的指令;從該多個(gè)時(shí)槽(34A-34D)中的每個(gè)時(shí)槽中讀取所述同時(shí)被選擇的指令中的一個(gè);以及使用該最舊的指令的該指示以偵測(cè)所述同時(shí)被選擇的指令之間的寄存器相依性。
全文摘要
在一個(gè)實(shí)施例中,本發(fā)明系揭露一種包括指令緩沖器(instruction buffer)(20)以及選取單元(pick unit)(26)之處理器(10)。該指令緩沖器(20)被連接用來(lái)接收從指令緩存(instruction cache)(14)所提取(fetch)的指令。該選取單元(26)被構(gòu)造用來(lái)從該指令緩沖器(20)中選擇多達(dá)N個(gè)指令以供同時(shí)傳送至多個(gè)時(shí)槽(slot)(34A-34D)中的個(gè)別時(shí)槽,其中N為大于1的整數(shù)。此外,該選取單元(26)被構(gòu)造用來(lái)將所選擇的指令中的最舊的指令傳送至該多個(gè)時(shí)槽(34A-34D)中的任何一個(gè),即使所選擇的指令的數(shù)目大于1。該選取單元(26)被構(gòu)造用來(lái)基于該最舊的指令被傳送至的時(shí)槽而同時(shí)將所選擇的指令中的其它指令傳送至該多個(gè)時(shí)槽(34A-34D)中的其它時(shí)槽。
文檔編號(hào)G06F9/38GK101730880SQ200880011640
公開(kāi)日2010年6月9日 申請(qǐng)日期2008年2月13日 優(yōu)先權(quán)日2007年2月13日
發(fā)明者G·W·沈, S·利 申請(qǐng)人:先進(jìn)微裝置公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
大同县| 从江县| 新蔡县| 新闻| 巴楚县| 尼勒克县| 鞍山市| 仙居县| 新郑市| 安图县| 安丘市| 金秀| 策勒县| 新蔡县| 贡山| 陆丰市| 浪卡子县| 五指山市| 临海市| 嘉善县| 连城县| 义马市| 乡宁县| 阜康市| 临沧市| 永新县| 永兴县| 四子王旗| 融水| 宁乡县| 义乌市| 宁都县| 赣州市| 镇雄县| 桐城市| 芜湖县| 陈巴尔虎旗| 兴城市| 惠水县| 托克托县| 丹凤县|