專(zhuān)利名稱(chēng):減少處理器中的指令沖突的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及超標(biāo)量計(jì)算機(jī),更特別地,本發(fā)明涉及可以從指令發(fā)布隊(duì)列中選擇指
令以在多個(gè)功能單元處執(zhí)行的方法和系統(tǒng)。
背景技術(shù):
在計(jì)算機(jī)體系結(jié)構(gòu)中,超標(biāo)量計(jì)算機(jī),也就是以下計(jì)算機(jī),其具有多個(gè)處理部件,這些部件在一起可以在每一時(shí)鐘周期執(zhí)行一個(gè)以上的指令,該計(jì)算機(jī)可以用于計(jì)算密集的應(yīng)用。通常,超標(biāo)量計(jì)算機(jī)將使用中央處理單元(CPU),其包括多個(gè)執(zhí)行資源,諸如一個(gè)或多個(gè)功能單元,用于同時(shí)執(zhí)行多個(gè)指令。功能單元的示例可以包括算數(shù)邏輯單元、比特移位器或者乘法器。與另外可能利用單個(gè)功能單元一次執(zhí)行一個(gè)指令相比,利用多個(gè)功能單元同時(shí)執(zhí)行多個(gè)指令可以允許整個(gè)CPU的較快的吞吐量。 就具有多個(gè)功能單元的CPU而言,每一功能單元可以與指令選擇邏輯電路相關(guān)聯(lián),該指令選擇邏輯電路從指令隊(duì)列中邏輯地選擇要執(zhí)行的指令。 然而,可能碰巧用于兩個(gè)不同功能單元的選擇邏輯在同一周期也就是同一時(shí)間選擇相同的指令用于執(zhí)行。這種情形被稱(chēng)為指令沖突,并且浪費(fèi)計(jì)算時(shí)間和工作量。因?yàn)橥瑫r(shí)執(zhí)行同一指令的多個(gè)功能單元可能引起數(shù)據(jù)錯(cuò)誤或者其他的問(wèn)題,處理器通常禁止這樣同時(shí)執(zhí)行指令。所以,當(dāng)指令沖突出現(xiàn)時(shí),處理器選擇其中一個(gè)功能單元來(lái)執(zhí)行該指令,并且使得試圖執(zhí)行該指令的所有其他功能單元改為執(zhí)行"空操作指令"(NOP),該"空操作指令"實(shí)際上是一種通常用于無(wú)有用目的的等待狀態(tài)。
發(fā)明內(nèi)容
本發(fā)明提供了一種處理器,包括第一指令選擇邏輯電路,其可操作以將第一選擇
的指令傳送到第一功能單元;以及第二指令選擇邏輯電路,其可操作以當(dāng)且僅當(dāng)?shù)诙x擇
的指令不同于該第一選擇的指令時(shí),將該第二選擇的指令傳送到第二功能單元。 本發(fā)明還提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),具有計(jì)算機(jī)可執(zhí)行指令以可操作用
于在發(fā)布隊(duì)列處存儲(chǔ)指令;根據(jù)第一指令選擇技術(shù)選擇在第一功能單元處執(zhí)行的指令;
根據(jù)第一指令選擇技術(shù)選擇在第二功能單元處執(zhí)行的指令;確定用于在該第一功能單元處
執(zhí)行的所選指令與用于在該第二功能單元處執(zhí)行的所選指令是相同的指令;以及響應(yīng)于
此,根據(jù)第二指令選擇技術(shù)選擇不同的指令以在該第二功能單元處執(zhí)行。 本發(fā)明還提供了一種在處理器中執(zhí)行指令的方法,包括在指令發(fā)布隊(duì)列中存儲(chǔ)
指令;使用第一指令選擇技術(shù)以從該指令隊(duì)列中選擇指令用于在第一功能單元處執(zhí)行;使
用該第一指令選擇技術(shù)選擇指令用于在第二功能單元處執(zhí)行,但是如果在該第二功能單元
處選擇的指令與在該第一功能單元處選擇的指令相同,那么使用第二指令選擇技術(shù)選擇指
令用于在該第二功能單元處執(zhí)行;以及執(zhí)行所選擇的指令。 本發(fā)明還提供了一種在處理器中執(zhí)行指令的方法,包括在指令發(fā)布隊(duì)列中存儲(chǔ)指令;使用第一指令選擇技術(shù)以從該指令發(fā)布隊(duì)列中選擇指令用于在第一功能單元處執(zhí)行;使用該第一指令選擇技術(shù)選擇指令用于在第二功能單元處執(zhí)行,并且使用第二指令選擇技術(shù)選擇指令用于在第二功能單元處執(zhí)行;以及在該第二功能單元處,如果由該第一指令選擇技術(shù)選擇的指令與用于在第一功能單元處執(zhí)行的所選擇的指令相同,那么執(zhí)行由該第二指令選擇技術(shù)選擇的指令。 本發(fā)明還提供了一種系統(tǒng),包括處理器和耦合到該處理器的集成電路,其中所述處理器包括第一指令選擇邏輯電路,其可操作以將第一選擇的指令傳送到第一功能單元;第二指令選擇邏輯電路,其可操作以當(dāng)且僅當(dāng)該第二選擇的指令與該第一選擇的指令不同時(shí),將第二選擇的指令傳送到第二功能單元;以及耦合到該第一和第二指令選擇邏輯電路的指令發(fā)布隊(duì)列。
結(jié)合附圖參考以下詳細(xì)描述,使得可以較容易地明白在此公開(kāi)的主題的實(shí)施例。
圖1是根據(jù)在此公開(kāi)的主題的實(shí)施例,當(dāng)利用多個(gè)功能單元執(zhí)行指令時(shí),可操作
以減少指令沖突的處理器的圖示。 圖2是使用基于位置的選擇技術(shù)從指令隊(duì)列中選擇指令以在功能單元處執(zhí)行的系統(tǒng)圖示。 圖3是使用先進(jìn)先出(oldest first)選擇技術(shù)以從指令隊(duì)列中選擇指令以在功能單元中執(zhí)行的系統(tǒng)圖示。 圖4是當(dāng)從指令隊(duì)列中選擇指令以由兩個(gè)或多個(gè)功能單元執(zhí)行時(shí),用于防止指令沖突的另外的選擇邏輯的圖示。 圖5是根據(jù)在此公開(kāi)的主題的實(shí)施例,包括以下選擇邏輯的處理器的圖示,該選擇邏輯用于從發(fā)布隊(duì)列中選擇指令以在一個(gè)功能單元處執(zhí)行,其中該選擇邏輯可以減少功能單元響應(yīng)于指令沖突而執(zhí)行空操作指令的機(jī)會(huì)。 圖6是根據(jù)在此公開(kāi)的主題的實(shí)施例,用于選擇指令以同時(shí)在多個(gè)功能單元處執(zhí)行的方法的流程圖。 圖7是根據(jù)在此公開(kāi)的主題的實(shí)施例,包括圖5的處理器的計(jì)算系統(tǒng)的圖示。
具體實(shí)施例方式
提出以下的討論以使得本領(lǐng)域技術(shù)人員能夠進(jìn)行和運(yùn)用在此公開(kāi)的主題。在不脫離在此公開(kāi)的主題的精神和范圍的情況下,可以將在此公開(kāi)的一般原理應(yīng)用到除了以上那些詳細(xì)描述之外的實(shí)施例和應(yīng)用。該公開(kāi)內(nèi)容不限于所示的實(shí)施例,而是賦予與在此所公開(kāi)的或討論的原理和特征相一致的最寬的范圍。 作為一種概述,根據(jù)在此公開(kāi)的主題形成的方法和系統(tǒng)可以從指令發(fā)布隊(duì)列中選
擇指令以在多個(gè)功能單元處執(zhí)行,同時(shí)減少指令沖突的機(jī)會(huì),其中當(dāng)一個(gè)以上功能單元試圖執(zhí)行指令發(fā)布隊(duì)列中相同的指令時(shí),指令沖突可能導(dǎo)致執(zhí)行NOP指令。在一實(shí)施例中,系
統(tǒng)中的每一功能單元可以包括指令選擇邏輯電路,其從指令發(fā)布隊(duì)列中選擇具體的指令用于執(zhí)行。例如,根據(jù)具體的選擇技術(shù),例如如以下所述的先進(jìn)的指令先出技術(shù)、基于隊(duì)列中指令的位置/順序的技術(shù)等等,可以實(shí)現(xiàn)每一指令選擇邏輯電路。為了避免導(dǎo)致執(zhí)行NOP指令的指令沖突,一個(gè)或多個(gè)功能單元可以具有可以從指令發(fā)布隊(duì)列中選擇兩個(gè)指令的指令選擇邏輯電路一個(gè)指令是根據(jù)第一選擇技術(shù)選擇的, 一個(gè)指令是根據(jù)第二選擇技術(shù)選擇的。然后,將由例如第一指令選擇技術(shù)所選擇的指令與另一功能單元的指令選擇邏輯電路所選擇的指令進(jìn)行比較。如果兩個(gè)指令不同,那么將不會(huì)出現(xiàn)沖突并且可以在相應(yīng)的功能單元中執(zhí)行每一個(gè)選擇的指令。然而,在比較之后,如果這兩個(gè)指令被識(shí)別為是相同的指令,那么可以由第二功能單元執(zhí)行在第二功能單元處由第二指令選擇技術(shù)選擇的第二指令以避免所識(shí)別的指令沖突,并由此避免由第二功能單元執(zhí)行NOP指令。以下詳細(xì)描述這些和其他的方面。 圖1是根據(jù)在此公開(kāi)的主題的實(shí)施例的處理器100的圖示,該處理器100當(dāng)同時(shí)在多個(gè)功能單元中執(zhí)行指令時(shí),可操作以減少指令沖突。 一般來(lái)說(shuō),例如,處理器100可以對(duì)來(lái)自/去往指令源諸如功能單元190a-190d(盡管示出了四個(gè)功能單元,但是處理器100可以具有少于或多于四個(gè)的功能單元)的指令流進(jìn)行控制。作為處理器100—部分的執(zhí)行控制發(fā)送單元103可以將指令發(fā)送到發(fā)布級(jí)101和執(zhí)行級(jí)102。為了有效地分布指令以由各種執(zhí)行資源(例如功能單元190a-190d)執(zhí)行,指令可以在發(fā)布級(jí)101排隊(duì)直到準(zhǔn)備好由執(zhí)行級(jí)102執(zhí)行。在執(zhí)行之后,將每一執(zhí)行過(guò)的指令的結(jié)果返回到處理器100的執(zhí)行控制接收單元195。 在發(fā)布級(jí)101內(nèi),指令載入器104可以接收和分類(lèi)指令,并且將分類(lèi)過(guò)的指令載入指令發(fā)布隊(duì)列110。指令發(fā)布隊(duì)列110用作一種緩沖器,其有效地將執(zhí)行控制發(fā)送單元103與功能單元190a-190d(也就是執(zhí)行級(jí)102)解耦合。在一實(shí)施例中,指令發(fā)布隊(duì)列110可以保持準(zhǔn)備好執(zhí)行的32個(gè)指令。指令發(fā)布隊(duì)列110內(nèi)每一存儲(chǔ)位置(未在圖1中示出)可以認(rèn)為是指令分布隊(duì)列110中的相應(yīng)位置,并且可以保持將被執(zhí)行的指令,而不管指令的大小或性質(zhì)。當(dāng)執(zhí)行一個(gè)(或多個(gè))指令時(shí),在指令發(fā)布隊(duì)列110中的其上指令剛被執(zhí)行的每一具體位置中產(chǎn)生相應(yīng)的"空位"。例如,如果四個(gè)功能單元190a-190d執(zhí)行來(lái)自發(fā)布隊(duì)列110的四個(gè)指令,則現(xiàn)在在指令被執(zhí)行之前最近所存儲(chǔ)的地方存在四個(gè)空位(也就是指令發(fā)布隊(duì)列110中空的存儲(chǔ)位置)。 指令載入器104通常包括以下邏輯,即確定在一個(gè)或多個(gè)指令被執(zhí)行之后哪些指令被發(fā)送以填充到各種空位中。在一個(gè)實(shí)施例中,剩余指令中的合適指令可以移位到左邊以填充一個(gè)或多個(gè)空位(使用上述示例,留下最右邊四個(gè)空位置)。然后使來(lái)自指令載入器104的接下來(lái)的一個(gè)或多個(gè)指令填充右邊的一個(gè)或多個(gè)空位。作為替換,可以向右邊移位或者指令發(fā)布隊(duì)列110中剩余的指令根本不移位并且簡(jiǎn)單地使來(lái)自指令載入器104的下一指令填充空位。針對(duì)以下圖2的實(shí)施例,更詳細(xì)地描述用于填裝指令發(fā)布隊(duì)列110和填充位置空位的技術(shù)。 在執(zhí)行周期期間,每一功能單元190a-190d可以從發(fā)布隊(duì)列110中選擇具體的指令用于執(zhí)行。為了產(chǎn)生具體的選擇,每一功能單元190a-190d可以包括選擇邏輯191a-191d,其用于確定來(lái)自指令隊(duì)列110中的哪一指令將開(kāi)始執(zhí)行。選擇邏輯191a-191d根據(jù)對(duì)于每一功能單元190a-190d唯一的選擇技術(shù)來(lái)選擇具體的指令。該選擇技術(shù)可以以以下邏輯實(shí)現(xiàn),即確定功能單元是否能夠?qū)嶋H執(zhí)行特定的指令。例如,簡(jiǎn)單的加法功能單元僅可操作用于執(zhí)行加法和減法指令,而乘法器功能單元能夠執(zhí)行加法和減法指令以及更為復(fù)雜的乘法指令。 此外,如果指令選擇邏輯191確定相應(yīng)的功能單元能夠執(zhí)行指令發(fā)布隊(duì)列110中一個(gè)以上的指令,那么指令選擇邏輯191也選擇這些指令中的哪些指令要被執(zhí)行。例如,指令發(fā)布隊(duì)列110中可能有兩個(gè)加法指令準(zhǔn)備執(zhí)行,因此指令選擇邏輯191選擇一個(gè)加法指令而不是另一加法指令用于執(zhí)行。以下結(jié)合圖2-圖5來(lái)討論選擇邏輯191如何選擇一個(gè)指令而不是另一指令。 如以上所討論的那樣,在同一時(shí)鐘周期期間,當(dāng)兩個(gè)功能單元190的指令選擇邏輯191每個(gè)都選擇相同的指令用于執(zhí)行時(shí),產(chǎn)生指令沖突。然而,期望在每一指令周期期間以多個(gè)功能單元190的每一功能單元執(zhí)行指令的時(shí)候,處理器100避免指令沖突。也就是,期望在不引起任一功能單元190a-190d執(zhí)行N0P指令的情況下避免沖突。隨著單個(gè)處理器中功能單元數(shù)目的增加,這變得越加重要了 。 根據(jù)在此公開(kāi)的各種實(shí)施例,可以有用于從指令發(fā)布隊(duì)列110中選擇指令用于由功能單元190執(zhí)行的一種或多種選擇技術(shù)。如以下所述,圖2示出了一種使用基于位置選擇技術(shù)的處理器的實(shí)施例,圖3示出了一種使用先進(jìn)先出選擇技術(shù)的處理器的實(shí)施例,圖4示出了另外一種邏輯,其利用基于優(yōu)先權(quán)的技術(shù)以防止指令沖突,但是所采用的方式消耗了不希望的執(zhí)行周期數(shù)目,以及圖5示出了使用選擇技術(shù)組合的處理器的實(shí)施例。在隨后的整個(gè)描述中,僅為清楚和說(shuō)明的目的,相同的部件使用相同的參考數(shù)字。
圖2是根據(jù)基于位置選擇技術(shù)從指令發(fā)布隊(duì)列110中選擇指令以在功能單元190a執(zhí)行的指令選擇邏輯191a的實(shí)施例的示圖。盡管所使用的參考數(shù)字涉及第一功能單元190a和其相關(guān)聯(lián)的指令選擇邏輯191a,但是以下的描述可以應(yīng)用到任一功能單元190a-190d及其相應(yīng)的指令選擇邏輯電路191a-191d。 選擇邏輯191a可以實(shí)施基于位置的選擇技術(shù),其根據(jù)指令發(fā)布隊(duì)列110內(nèi)的指令的位置(例如從一到三十二的位置)從指令發(fā)布隊(duì)列110中選擇下一可用指令以準(zhǔn)備執(zhí)行。通過(guò)使用一系列級(jí)聯(lián)的判定器單元(例如判定器單元230a,230h和240a)來(lái)實(shí)施這種選擇技術(shù),所述級(jí)聯(lián)的判定器單元以以下段落所討論的最左分級(jí)方式來(lái)選擇指令。
例如,利用三十二個(gè)指令來(lái)填裝發(fā)布隊(duì)列IIO,這些指令以"一"處于最右位置并且"三十二"處于最左位置的方式被放置在從一到三十二的位置上。在該實(shí)施例中,從左到右載入指令,以至于在執(zhí)行指令期間形成空位之后,指令從右向左進(jìn)行移位。例如,在初始化時(shí),來(lái)自指令載入器(圖2未示出)的第一個(gè)三十二個(gè)指令從左到右進(jìn)行載入(也就是,第一最高優(yōu)先權(quán)指令被載入到三十二的位置,第二最高優(yōu)先權(quán)指令被載入到三十一的位置,等等)。隨著指令被執(zhí)行,通過(guò)向左移位剩余的指令來(lái)填充空位。例如,如果在位置六一指令被執(zhí)行,那么處于位置七到位置三十二的指令保持相同的位置,并且位置一到位置五的指令向左移位,以至于處于位置五的指令移位到位置六,處于位置四的指令移位到位置五等等。位置一從指令載入器104(圖1)接收新的指令。 指令發(fā)布隊(duì)列110中每一位置( 一到三十二 )可以耦合到第一判定器單元級(jí)230處一個(gè)判定器單元的兩個(gè)邏輯信號(hào)線,即請(qǐng)求線和許可線。第一判定器單元級(jí)230中的每一判定器單元(僅示出了第一 230a和最后230h)可以經(jīng)由成組的請(qǐng)求/許可線而耦合到指令發(fā)布隊(duì)列110內(nèi)的四個(gè)指令位置。例如,第一判定器單元級(jí)230的判定器單元230a被示出具有四個(gè)請(qǐng)求位(req32,req31,req30和req29)(以及四個(gè)相關(guān)聯(lián)的許可位grant32,grant31,grant30和grant29)。這些組可以唯一地耦合到一個(gè)指令發(fā)布隊(duì)列110位置。例如,位置三十二可以耦合到判定器單元230a的req32和grant32并且位置一可以耦合到判定器單元230h的reql和grant 1。 第一判定器單元級(jí)230中每一判定器單元也可以包括可以耦合到第二判定器單元級(jí)240的使能(enable)線231a和任意請(qǐng)求(any-request)線232a。第二判定器單元級(jí)240與第一判定器單元級(jí)230相似之處在于第二級(jí)240中的每一判定器單元(在該示例中,有兩個(gè),但僅示出了第二級(jí)別240的第一判定器單元240a)也可以具有四個(gè)單元位置,每一單元位置具有成組的請(qǐng)求/許可線(以相似的方式注釋)。這樣,第一組可以耦合到第一判定器單元230a的使能線231a和任意請(qǐng)求線232a。最后,可以以相似的方式將根級(jí)判定器單元250耦合到每一第二級(jí)240判定器單元。 當(dāng)準(zhǔn)備好執(zhí)行指令發(fā)布隊(duì)列110中的指令時(shí),與具體位置相關(guān)聯(lián)的邏輯(未詳細(xì)示出)可以設(shè)置其請(qǐng)求線。第一級(jí)中的每一判定器單元可以通過(guò)被設(shè)置的最左請(qǐng)求線到其任意請(qǐng)求線。接著,每一第二級(jí)判定器單元通過(guò)其最左請(qǐng)求線到其相應(yīng)的任意請(qǐng)求線。在根級(jí),同樣通過(guò)最左請(qǐng)求線到功能單元190,如果功能單元190能夠執(zhí)行該指令,那么該功能單元190發(fā)布許可信號(hào)。如果發(fā)布了許可信號(hào),那么該許可信號(hào)通過(guò)根據(jù)被設(shè)置請(qǐng)求線的模式的判定器級(jí)而向回傳送。然后,使用圖2中省略的電路,選擇邏輯191a將與許可信號(hào)相關(guān)聯(lián)的指令傳送到功能單元190a以執(zhí)行。 在該方式中,指令發(fā)布隊(duì)列110內(nèi)最左位置上準(zhǔn)備執(zhí)行的指令具有隨后被執(zhí)行的優(yōu)先級(jí)。當(dāng)指令被執(zhí)行時(shí),指令發(fā)布隊(duì)列110中每一指令向左邊移位以填充剛被執(zhí)行的指令所留下的空位。 利用該基于位置的選擇技術(shù),能夠理解如果兩個(gè)功能單元(例如圖1中的功能單元190a和190b)能夠執(zhí)行特定的指令并且具有相同的指令選擇邏輯(例如,基于位置的選擇邏輯191a和191b),那么會(huì)經(jīng)常出現(xiàn)每一功能單元選擇相同指令用于執(zhí)行的情況,所以導(dǎo)致指令沖突。當(dāng)然,如以上所述的方案是有問(wèn)題的,因?yàn)楫?dāng)相同指令執(zhí)行兩次用于非有用目的時(shí)(并且可能導(dǎo)致錯(cuò)誤)要求至少一個(gè)功能單元("失敗的"功能單元)執(zhí)行NOP指令,而另一功能單元("獲勝的"功能單元)執(zhí)行該指令,所以用于執(zhí)行不同指令的執(zhí)行機(jī)會(huì)被浪費(fèi)。 圖3是圖1的選擇邏輯191b的實(shí)施例圖示,其根據(jù)先進(jìn)的指令先出的選擇技術(shù)以從指令發(fā)布隊(duì)列110中選擇一指令用于在功能單元190b處執(zhí)行。在該選擇技術(shù)中,每一指令也可以包括包含"年齡數(shù)據(jù)"的數(shù)據(jù)字段,也就是,與該指令處于指令發(fā)布隊(duì)列110多長(zhǎng)時(shí)間有關(guān)的數(shù)據(jù)。在一示例中,每一指令可以包括四位年齡字段,其指示指令處于指令發(fā)布隊(duì)列110中的執(zhí)行周期的數(shù)目。如果在第一執(zhí)行周期,沒(méi)有選擇一指令用于執(zhí)行,那么年齡字段中第一位被設(shè)置為一。相似的,如果在第二執(zhí)行周期,沒(méi)有選擇該指令用于執(zhí)行,那么將年齡字段中第二位設(shè)置為一等等。簡(jiǎn)而言之,準(zhǔn)備被執(zhí)行的具有最大年齡字段值的指令具有高于其他指令的優(yōu)先級(jí)。所述先進(jìn)先出選擇技術(shù)以以下討論的選擇邏輯191b來(lái)實(shí)現(xiàn)。
在該選擇邏輯中,發(fā)布隊(duì)列110中每一指令的年齡字段的第一位A4可以耦合到第一OR門(mén)310,也耦合到第一二至一多路復(fù)用器311的輸入。如果該第一位A4被設(shè)置為一,那么多路復(fù)用器311將該信號(hào)傳送到第一AND門(mén)312的輸入以及第二多路復(fù)用器321的第二輸入。如果沒(méi)有其他年齡字段被設(shè)置為一,那么該信號(hào)經(jīng)由每一多路復(fù)用器321、331和341傳播以變成對(duì)于相關(guān)指令的選擇信號(hào)。也就是說(shuō),因?yàn)椴淮嬖谄渌系闹噶?也就是,第二位A3、第三位A2和第四位Al都被設(shè)置為零),所以年齡字段的第一年齡字段位被設(shè)置為一的第一可用指令將被選擇用于執(zhí)行。 然而,如果另一指令具有其中第二位被設(shè)置(指示該指令是較老的)的年齡字段,
那么第一AND門(mén)312的輸出被設(shè)置為一并且與該指令相關(guān)聯(lián)的選擇信號(hào)經(jīng)由每一多路復(fù)用
器而進(jìn)行傳播,因?yàn)榈诙嗦窂?fù)用器321通過(guò)第二 OR門(mén)320的輸出而被設(shè)置。再次地,如
果其第三和第四年齡字段位被設(shè)置為一的指令存在,那么包含第三和第四OR門(mén)330和340
以及第三和第四AND門(mén)332和342的輸出的相似信號(hào)進(jìn)行傳播。在該方式中,具有最多年
齡字段位設(shè)置的指令將在具有較少年齡字段位設(shè)置的指令之前被選擇。 圖3的選擇邏輯191b示出了用于處理多達(dá)四位年齡字段的選擇邏輯。設(shè)想其他
的實(shí)施例,其中每一指令包括具有或多或少位的年齡字段,諸如具有與發(fā)布隊(duì)列中所存在
的位置相同數(shù)目的位。所以,指令發(fā)布隊(duì)列中每一指令必然可以具有唯一的年齡字段值,以
至于僅一指令可以被選擇并且其將是最老的。然而,三十二位年齡字段太累贅,并且四位年
齡字段是一種考慮速度的對(duì)精確性的適當(dāng)折衷。盡管如此,僅具有四位年齡字段,指令沖突
仍可能以一種無(wú)法接受的比率出現(xiàn)。 在以上相對(duì)于圖2和圖3描述的這兩種指令選擇技術(shù)中的每一種中,當(dāng)具有相似或相同選擇邏輯的兩個(gè)功能單元選擇相同的指令用于執(zhí)行時(shí),指令沖突以及它們所引起的問(wèn)題仍將出現(xiàn)。 圖4是當(dāng)從指令隊(duì)列中選擇指令以在兩個(gè)或多個(gè)功能單元處執(zhí)行時(shí),防止指令沖突的另外選擇邏輯的圖示。每一功能單元(圖4中未示出)可以與以級(jí)聯(lián)方式向功能單元提供優(yōu)先權(quán)的各個(gè)判定器(以及如圖2和圖3所述的指令選擇邏輯)相關(guān)聯(lián)。在具有兩個(gè)功能單元判定器410和420的圖4的簡(jiǎn)單示例中,第一功能單元判定器410具有優(yōu)先權(quán)。如果第一功能單元判定器410在req 0接收信號(hào),相關(guān)聯(lián)的第一功能單元可以在grant 0發(fā)布或不發(fā)布許可。如果grantO被設(shè)置以指示第一功能單元發(fā)布請(qǐng)求的許可,那么AND門(mén)421防止req 0信號(hào)傳播到下一功能單元判定器。如果不存在許可信號(hào),那么AND門(mén)421允許req 0信號(hào)被傳送到第二判定器420用于可能的執(zhí)行。按照所需要的功能單元的數(shù)目重復(fù)這種關(guān)系和邏輯,所以防止了指令沖突的任何可能性,因?yàn)橐坏┮还δ軉卧S可請(qǐng)求以執(zhí)行指令,那么判定器鏈,例如410和420,禁止任何其他功能單元執(zhí)行該指令。
然而,圖4的選擇邏輯400中另外的級(jí)聯(lián)邏輯由于另外的AND門(mén)而引入另外的時(shí)間延遲。例如對(duì)于操作在諸如例如2Ghz和以上的較高時(shí)鐘頻率的處理器而言,這樣的選擇用于執(zhí)行的指令的另外的時(shí)間延遲被證實(shí)是太長(zhǎng)的。 圖5是根據(jù)在此公開(kāi)主題的實(shí)施例的處理器500的圖示,其包括用于從指令發(fā)布隊(duì)列110選擇指令以在功能單元191c和191d執(zhí)行的指令選擇邏輯電路。在該處理器500中,與第一功能單元190c相關(guān)聯(lián)的指令選擇邏輯191c可以根據(jù)第一選擇技術(shù)510從指令發(fā)布隊(duì)列110中選擇指令。而且,與第二功能單元190d相關(guān)聯(lián)的指令選擇邏輯191d可以根據(jù)第一選擇技術(shù)520或第二選擇技術(shù)521從指令發(fā)布隊(duì)列110中選擇指令用于執(zhí)行。另外,處理器500包括選擇邏輯525,如果兩個(gè)選擇邏輯電路191c和191d通過(guò)相同的選擇技術(shù)(例如選擇技術(shù)510和選擇技術(shù)520)而選擇相同的指令,那么該選擇邏輯525導(dǎo)致指令選擇邏輯191d使用第二選擇技術(shù)521以選擇在第二功能單元190d處執(zhí)行的指令。
在一實(shí)施例中,指令選擇邏輯191c的選擇技術(shù)510可以是以上結(jié)合圖2而進(jìn)行一般性描述的先進(jìn)先出選擇技術(shù)。另外,選擇邏輯電路191d的第一選擇技術(shù)520也可以是先進(jìn)先出選擇技術(shù)。指令選擇邏輯電路191d的第二選擇技術(shù)可以是如以上結(jié)合圖3而進(jìn)行一般性描述的基于位置的選擇技術(shù)。設(shè)想其他的實(shí)施例,其中選擇邏輯電路191d可以包括三個(gè)或更多選擇技術(shù)。此外,盡管選擇技術(shù)510和選擇技術(shù)520在圖5中都被示為是先進(jìn)先出選擇技術(shù),但是實(shí)際上它們可以是彼此不同的選擇技術(shù)。此外,在任意指令選擇邏輯中可以使用與先進(jìn)先出或基于位置的指令選擇技術(shù)不同的其他指令選擇技術(shù)。
在操作中,第一功能單元190c具有對(duì)由其指令選擇邏輯電路191c根據(jù)其選擇技術(shù)510而選擇的指令進(jìn)行執(zhí)行的優(yōu)先權(quán)。例如,在執(zhí)行周期期間,指令選擇邏輯電路191c可以從指令發(fā)布隊(duì)列110中選擇最老的指令(如以上所述的通過(guò)年齡字段所確定的那樣)用于執(zhí)行。這可以在不考慮與第二功能單元190d相關(guān)聯(lián)的指令選擇邏輯電路191d所產(chǎn)生的任意選擇的情況下實(shí)現(xiàn)。 當(dāng)通過(guò)第二功能單元190d選擇指令用于執(zhí)行時(shí),指令選擇邏輯電路191d中兩個(gè)不同的選擇技術(shù)520和521可以同時(shí)從指令發(fā)布隊(duì)列110中選擇指令。這些選擇的指令中僅有一個(gè)指令被遞送到第二功能單元190d用于執(zhí)行。邏輯電路525用于一個(gè)或另一個(gè)的排他性選擇。所以,如果第一指令選擇技術(shù)520所選擇的指令也與由指令選擇技術(shù)510從第一功能單元指令選擇邏輯電路191c中選擇的指令相同,那么邏輯電路525導(dǎo)致使用由第二選擇技術(shù)521所做的選擇。 邏輯電路525利用具有兩個(gè)輸入的AND門(mén)530。第一輸入可以耦合到第一比較器541的輸出,該第一比較器可以比較由指令選擇技術(shù)510和指令選擇技術(shù)520所選擇的指令。如果這些選擇的指令相同,那么第一輸入位被設(shè)置(也就是,設(shè)置在邏輯高電壓信號(hào)處)。同樣,AND門(mén)530的第二輸入可以耦合到第二比較器540的輸出,該第二比較器540比較由指令選擇技術(shù)510和指令選擇技術(shù)521選擇的指令。如果這些選擇的指令相同,那么第二輸入位被設(shè)置。如果兩個(gè)輸入都被設(shè)置,那么AND門(mén)530的輸出也就被設(shè)置了。該輸出可以與以下所述的一對(duì)多路復(fù)用器531和532 —起使用。 這些多路復(fù)用器中的第一多路復(fù)用器(也就是多路復(fù)用器532)可以根據(jù)其選擇器輸入而選擇兩個(gè)信號(hào)中的一個(gè)信號(hào)通過(guò)。第一多路復(fù)用器532的選擇器輸入可以耦合到第一比較器541的輸出。多路復(fù)用器532的"O"輸入可以耦合到根據(jù)第二指令選擇技術(shù)520的邏輯并且"1"輸入可以耦合到根據(jù)第三指令選擇技術(shù)521的邏輯。如果第一比較器541的輸出被設(shè)置(例如,第一指令選擇技術(shù)510和第二指令選擇技術(shù)520選擇相同的指令),那么第一多路復(fù)用器532傳送由第三指令選擇技術(shù)521做出的指令選擇。相似的是,如果第一比較器541的輸出沒(méi)有被設(shè)置(例如,第一指令選擇技術(shù)510和第二指令選擇技術(shù)520選擇不同的指令),那么多路復(fù)用器532傳送由第二指令選擇技術(shù)520做出的指令選擇。第一多路復(fù)用器532的輸出然后被傳送到第二多路復(fù)用器531的"0"輸入。
可以使用第二多路復(fù)用器531,以使得由第三指令選擇技術(shù)521做出的指令選擇也不同于由第一指令選擇技術(shù)510所選擇的指令。第二多路復(fù)用器531的選擇器輸入可以耦合到第二比較器540的輸出。所以,如果AND門(mén)530的輸出沒(méi)有被設(shè)置(也就是,由第一指令選擇技術(shù)510和第三指令選擇技術(shù)521選擇的指令不同并且第二比較器540的輸出沒(méi)有被設(shè)置),那么可操作第二多路復(fù)用器531以傳送由第一多路復(fù)用器532所傳送的指令(例如,由第三指令選擇技術(shù)521選擇的指令)。然而,如果這些選擇的指令相同(也就是,AND門(mén)530的輸出被設(shè)置,指示了所有三個(gè)選擇指令選擇技術(shù)510、520和530選擇了相同的
11指令),那么多路復(fù)用器將NOP指令傳送到功能單元190d。 在其他的實(shí)施例中,代替經(jīng)由多路復(fù)用器531的輸入傳送NOP,另一級(jí)聯(lián)的多路復(fù)用器和比較器組(未示出)可以用來(lái)允許第四指令選擇技術(shù)和相關(guān)邏輯(也沒(méi)有示出)以將選擇的指令傳遞到功能單元190d。設(shè)想指令選擇技術(shù)邏輯的另外級(jí),但在此不再討論。
圖6是根據(jù)在此公開(kāi)主題的實(shí)施例,用于選擇指令以在多個(gè)功能單元執(zhí)行的方法流程圖。由整個(gè)處理器控制機(jī)制進(jìn)行的初始化,在步驟600開(kāi)始該方法。在步驟602,加載具有指令的發(fā)布隊(duì)列。在第一初始化期間,需要填裝指令發(fā)布隊(duì)列中的每一位置。隨著指令發(fā)布隊(duì)列中的指令被選擇出來(lái)并且執(zhí)行,用將被執(zhí)行的新的指令來(lái)填充空位(如以上所述的那樣)。 接下來(lái),同時(shí)出現(xiàn)三個(gè)步驟。在步驟604,將在第一功能單元處被執(zhí)行的指令經(jīng)由與第一功能單元相關(guān)聯(lián)的選擇邏輯而被選擇。相似的并且是同時(shí)的,在步驟606,與第二功能單元相關(guān)聯(lián)的選擇邏輯也根據(jù)第一指令選擇技術(shù)選擇指令。并且同時(shí)地,在步驟608,與第二功能單元相關(guān)聯(lián)的選擇邏輯也根據(jù)第二指令選擇技 術(shù)選擇指令。 為防止指令沖突,進(jìn)行以下的比較,即由與第一功能單元相關(guān)聯(lián)的指令選擇邏輯選擇的指令與根據(jù)第一指令選擇技術(shù)由與第二功能單元相關(guān)聯(lián)的指令選擇邏輯選擇的指令之間的比較。然后,基于比較結(jié)果采取合適的動(dòng)作以避免指令沖突。在判定步驟610,進(jìn)行該比較。在步驟620,不管步驟620的比較結(jié)果,執(zhí)行由第一功能單元選擇的指令。如果步驟620的比較結(jié)果為與功能單元相關(guān)聯(lián)的邏輯選擇了不同的指令,那么在步驟622,第二功能單元也執(zhí)行其選擇的指令。然而,如果步驟620的比較結(jié)果為兩個(gè)功能單元選擇了相同的指令,那么執(zhí)行根據(jù)第二指令選擇技術(shù)在第二功能單元選擇的指令(而不是第一選擇的指令)。然后,在步驟650,該方法結(jié)束或者返回到步驟602以重復(fù)該方法。
在另一實(shí)施例中,附加的步驟(圖6中未示出)可以對(duì)在第二功能單元處選擇的第二指令與在第一功能單元處選擇的第一指令進(jìn)行比較。在這一方面上,如果第二選擇的指令也與在第一功能單元處選擇的指令相同,那么在第二功能單元處執(zhí)行NOP指令或者利
用第三指令選擇技術(shù)以選擇又一指令,該指令不同于根據(jù)第一和第二技術(shù)在第二功能單元處選擇的指令。 在進(jìn)一步的實(shí)施例中,可以擴(kuò)展圖6方法的概念以包括兩個(gè)以上功能單元。例如,第三功能單元可以將其選擇與第一功能單元、第二功能單元或兩者進(jìn)行比較。基于第三功能單元的比較結(jié)果,實(shí)現(xiàn)使用不同指令選擇技術(shù)的相似判定。 圖7是根據(jù)在此公開(kāi)主題的實(shí)施例,包括圖5的處理器500的計(jì)算系統(tǒng)790的圖示。在該計(jì)算系統(tǒng)790中,處理器700可以包括一個(gè)以上處理實(shí)體(例如,流水線處理器等等),諸如流水線處理器711。在該實(shí)施例中,流水線處理器711可以包括如以上結(jié)合圖5而一般性描述的多功能單元500。這些處理器710和711可以由處理器控制單元702控制。
所有這些部件可以共同耦合到系統(tǒng)總線740,該系統(tǒng)總線740可以提供到存儲(chǔ)器750或協(xié)同處理器760的系統(tǒng)通信。本領(lǐng)域技術(shù)人員可以理解,圖7所述的各種部件可以包括若干內(nèi)部相關(guān)芯片或者是單個(gè)集成電路的一部分。 雖然在此討論的主題可以容許各種修改和可選性結(jié)構(gòu),但是其某些圖解實(shí)施例在附圖中示出并且以上進(jìn)行了詳細(xì)的描述。而且,本領(lǐng)域技術(shù)人員將懂得,未在所有實(shí)施例中描述的各個(gè)方面,仍然可以存在于任意實(shí)施例中。然而,應(yīng)該懂得,無(wú)意于將主題限制到所公開(kāi)的具體形式,相反的是,本發(fā)明覆蓋了落入公開(kāi)主題的精神和范圍內(nèi)的所有的修改、可選性結(jié)構(gòu)、以及等價(jià)物。
權(quán)利要求
一種處理器,包括第一指令選擇邏輯電路,其可操作以將第一選擇的指令傳送到第一功能單元;以及第二指令選擇邏輯電路,其可操作以當(dāng)且僅當(dāng)?shù)诙x擇的指令不同于該第一選擇的指令時(shí),將該第二選擇的指令傳送到第二功能單元。
2. 權(quán)利要求1的處理器,其布置在單個(gè)集成電路芯片上。
3. 權(quán)利要求l的處理器,其中該第一指令選擇邏輯根據(jù)包括以下之一的第一指令選擇 技術(shù)來(lái)選擇指令先進(jìn)先出指令選擇技術(shù)和基于位置的指令選擇技術(shù)。
4. 權(quán)利要求1的處理器,其中該第二指令選擇邏輯電路進(jìn)一步包括 用于根據(jù)第一指令選擇技術(shù)選擇指令的指令選擇邏輯; 用于根據(jù)第二指令選擇技術(shù)選擇指令的指令選擇邏輯;以及 用于將指令傳送到該第二功能單元用于執(zhí)行的判定邏輯。
5. 權(quán)利要求4的處理器,其中該第一指令選擇技術(shù)包括先進(jìn)先出指令選擇技術(shù),該第 二指令選擇技術(shù)包括基于位置的指令選擇技術(shù)。
6. 權(quán)利要求4的處理器,進(jìn)一步包括當(dāng)且僅當(dāng)所選擇的指令與由第一指令選擇邏輯選 擇的指令不同時(shí),傳送根據(jù)該第一指令選擇技術(shù)選擇的指令,否則傳送根據(jù)該第二指令選 擇技術(shù)選擇的指令。
7. 權(quán)利要求4的處理器,其中該第二指令選擇邏輯電路進(jìn)一步包括以下指令選擇邏 輯,即用于根據(jù)第三指令選擇技術(shù)選擇指令,并且當(dāng)且僅當(dāng)根據(jù)該第一和第二技術(shù)選擇的 指令與由該第一指令選擇邏輯電路選擇的指令相同時(shí),傳送根據(jù)該第三指令選擇技術(shù)選擇 的指令。
8. 權(quán)利要求4的處理器,其中該判定邏輯進(jìn)一步包括具有兩個(gè)輸入的AND門(mén),其中如果由該第一和第二指令選擇邏輯電路選擇的指令相 同,那么第一輸入可操作地被設(shè)置,并且如果由第一和第三指令選擇邏輯電路選擇的指令 相同,那么第二輸入可操作地被設(shè)置;第一多路復(fù)用器,其可操作以如果由該第一和第二指令選擇邏輯電路選擇的指令不 同,那么傳送由該第二選擇邏輯電路選擇的指令,并且其可操作以如果由該第一和第二指 令選擇邏輯電路選擇的指令相同,那么傳送由該第三指令選擇邏輯電路做出的指令選擇; 以及第二多路復(fù)用器,其可操作以如果該AND門(mén)的輸出沒(méi)有被設(shè)置,那么傳送由該第一多 路復(fù)用器傳送的指令,并且其可操作以如果該AND門(mén)的輸出被設(shè)置,那么傳送N0P。
9. 權(quán)利要求1的處理器,進(jìn)一步包括 耦合到指令選擇邏輯電路的指令發(fā)布隊(duì)列;以及耦合到該指令發(fā)布隊(duì)列并且可操作以從執(zhí)行控制發(fā)送模塊接收指令的指令載入器。
10. —種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),具有計(jì)算機(jī)可執(zhí)行指令以可操作用于 在發(fā)布隊(duì)列處存儲(chǔ)指令;根據(jù)第一指令選擇技術(shù)選擇在第一功能單元處執(zhí)行的指令; 根據(jù)第一指令選擇技術(shù)選擇在第二功能單元處執(zhí)行的指令;確定用于在該第一功能單元處執(zhí)行的所選指令與用于在該第二功能單元處執(zhí)行的所 選指令是相同的指令;以及響應(yīng)于此,根據(jù)第二指令選擇技術(shù)選擇不同的指令以在該第二功能單元處執(zhí)行。
11. 一種在處理器中執(zhí)行指令的方法,包括在指令發(fā)布隊(duì)列中存儲(chǔ)指令;使用第一指令選擇技術(shù)以從該指令隊(duì)列中選擇指令用于在第一功能單元處執(zhí)行;使用該第一指令選擇技術(shù)選擇指令用于在第二功能單元處執(zhí)行,但是如果在該第二功能單元處選擇的指令與在該第一功能單元處選擇的指令相同,那么使用第二指令選擇技術(shù)選擇指令用于在該第二功能單元處執(zhí)行;以及執(zhí)行所選擇的指令。
12. 權(quán)利要求11的方法,進(jìn)一步包括根據(jù)第一指令選擇技術(shù)選擇該第一指令,該第一指令選擇技術(shù)基于讀取與每一指令相關(guān)聯(lián)的年齡字段并且選擇具有最大年齡字段值的指令。
13. 權(quán)利要求ll的方法,進(jìn)一步包括根據(jù)第二指令選擇技術(shù)選擇該第二指令,該第二指令選擇技術(shù)基于該指令發(fā)布隊(duì)列中的位置。
14. 權(quán)利要求ll的方法,進(jìn)一步包括使用該第一指令選擇技術(shù)在第三功能單元處選擇指令,但是如果在該第三功能單元處選擇的該指令與在該第一或第二功能單元處選擇的指令相同,那么使用該第二指令選擇技術(shù)在該第三功能單元處選擇指令。
15. 權(quán)利要求ll的方法,進(jìn)一步包括如果使用該第二指令選擇技術(shù)在該第二功能單元處選擇的指令與在該第一功能單元處選擇的指令相同,那么使用第三指令選擇技術(shù)在該第二功能單元處選擇指令。
16. 權(quán)利要求11的方法,進(jìn)一步包括在每一功能單元處執(zhí)行每一所選擇的指令;以及將指令載入到該指令發(fā)布隊(duì)列以替代執(zhí)行過(guò)的指令。
17. —種在處理器中執(zhí)行指令的方法,包括在指令發(fā)布隊(duì)列中存儲(chǔ)指令;使用第一指令選擇技術(shù)以從該指令發(fā)布隊(duì)列中選擇指令用于在第一功能單元處執(zhí)行;使用該第一指令選擇技術(shù)選擇指令用于在第二功能單元處執(zhí)行,并且使用第二指令選擇技術(shù)選擇指令用于在第二功能單元處執(zhí)行;以及在該第二功能單元處,如果由該第一指令選擇技術(shù)選擇的指令與用于在第一功能單元處執(zhí)行的所選擇的指令相同,那么執(zhí)行由該第二指令選擇技術(shù)選擇的指令。
18. —種系統(tǒng),包括處理器,包括第一指令選擇邏輯電路,其可操作以將第一選擇的指令傳送到第一功能單元;第二指令選擇邏輯電路,其可操作以當(dāng)且僅當(dāng)該第二選擇的指令與該第一選擇的指令不同時(shí),將第二選擇的指令傳送到第二功能單元;以及耦合到該第一和第二指令選擇邏輯電路的指令發(fā)布隊(duì)列;耦合到該處理器的集成電路。
19. 權(quán)利要求18的系統(tǒng),其中該處理器和該集成電路布置在相同的集成電路管芯上。
20. 權(quán)利要求18的系統(tǒng),其中該系統(tǒng)包括存儲(chǔ)器。
21. 權(quán)利要求18的系統(tǒng),其中該系統(tǒng)包括另一處理器。
22. 權(quán)利要求18的系統(tǒng),其中該處理器布置在第一集成電路管芯上;以及該集成電路布置在與該第一集成電路管芯相分離的第二集成電路管芯上。
全文摘要
一種用于從發(fā)布隊(duì)列中選擇用于在多個(gè)功能單元執(zhí)行的指令同時(shí)減少指令沖突的機(jī)會(huì)的技術(shù)實(shí)施例。處理器中每一功能單元可以包括從發(fā)布隊(duì)列中選擇具體指令用于執(zhí)行的選擇邏輯電路。為了避免指令沖突,功能單元可以具有可以從指令隊(duì)列中選擇兩個(gè)指令的選擇邏輯電路一個(gè)指令是根據(jù)第一選擇技術(shù)選擇的,一個(gè)指令是根據(jù)第二選擇技術(shù)選擇的。然后,通過(guò)對(duì)由第一選擇技術(shù)選擇的指令和由另一功能單元的選擇邏輯電路選擇的指令進(jìn)行比較,如果由于由第一選擇技術(shù)選擇的指令與在不同功能單元處選擇的指令相同而存在指令沖突,那么代替地使用由第二技術(shù)選擇的指令。
文檔編號(hào)G06F9/38GK101770357SQ200810191060
公開(kāi)日2010年7月7日 申請(qǐng)日期2008年12月31日 優(yōu)先權(quán)日2008年12月31日
發(fā)明者吳永強(qiáng), 孫紅霞, 朱鵬飛, 王凱峰 申請(qǐng)人:世意法(北京)半導(dǎo)體研發(fā)有限責(zé)任公司