具有融合保留站結(jié)構(gòu)的微處理器的制造方法【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明概括而言涉及在微處理器中發(fā)射和分派指令的過程,更具體而言涉及更高效地分派指令來供微處理器執(zhí)行的融合保留站(fusedreservat1nstat1ns)模塊,并且改善了性能?!?br>背景技術(shù):
】[0002]許多現(xiàn)代微處理器是超標(biāo)量的,其中它們包括多個執(zhí)行單元并且在單個時鐘周期中能夠分派多個指令到這些執(zhí)行單元。許多現(xiàn)代微處理器也運(yùn)行亂序(out-of-order,0-0-0)執(zhí)行。也就是說,微處理器可不按軟件程序的指令指定的順序執(zhí)行指令。超標(biāo)量亂序執(zhí)行微處理器通常嘗試維持未完成指令的相對大的池以便它們可利用更大量的指令并行度。[0003]微處理器執(zhí)行相應(yīng)指令集架構(gòu)的指令,例如x86指令集架構(gòu)等等。在許多這種微處理器中,經(jīng)常被稱為宏指令的指令集架構(gòu)的指令首先被翻譯成被發(fā)射到保留站模塊的微指令(或者微操作或“μop”),保留站模塊進(jìn)而將指令分派到執(zhí)行單元。微指令在這里被更概括地簡稱為指令。指令也被發(fā)射到重排序緩沖器(reorderbuffer,ROB),其確保指令的按序引退(retirement)ο[0004]保留站(reservat1nstat1n,RS)包括一個或多個有序隊列。當(dāng)有多個指令準(zhǔn)備好從RS隊列分派時,意味著指令滿足了被分派到執(zhí)行單元的條件,則準(zhǔn)備就緒的指令中的一個或多個被分派到相應(yīng)的執(zhí)行單元。當(dāng)執(zhí)行單元可用,并且指令執(zhí)行所必要的任何操作數(shù)也可用時,則意味著該指令準(zhǔn)備好被分派。隨著微處理器設(shè)計變得越來越復(fù)雜,RS的效率和性能都需要改善。希望通過使RS更小并且更高效來改善RS的時序和吞吐量。RS也應(yīng)當(dāng)提供更大的進(jìn)入效率以及增大的執(zhí)行單元支持。傳統(tǒng)的RS配置并不滿足所有這些設(shè)計改善目標(biāo)?!?br/>發(fā)明內(nèi)容】[0005]根據(jù)一個實(shí)施例的具有融合保留站(RS)結(jié)構(gòu)的微處理器包括主RS、次RS和繞過系統(tǒng)。主RS具有用于接收發(fā)射的指令的輸入,具有用于將發(fā)射的指令推送到次RS的推送輸出,并且具有用于分派發(fā)射的指令中的準(zhǔn)備好分派的至少一個指令的至少一個繞過輸出。次RS具有耦合到主RS的推送輸出的輸入并且具有至少一個分派輸出。繞過系統(tǒng)在主RS的繞過輸出和次RS的至少一個分派輸出之間進(jìn)行選擇來分派所選擇的發(fā)射指令。[0006]主RS可實(shí)現(xiàn)有統(tǒng)一RS結(jié)構(gòu)。次RS可實(shí)現(xiàn)有任何類型的RS結(jié)構(gòu),并且通常包括多個RS隊列。主RS可作為溢出緩沖器操作,用于在次RS滿時接收和存儲額外的發(fā)射指令。另外,繞過系統(tǒng)可允許主RS在某些條件下直接分派指令,例如當(dāng)次RS在給定周期中沒有分派某種類型的指令時。主RS可包括移位緩沖器來移動其內(nèi)存儲的指令以維持接收的指令順序。[0007]根據(jù)一個實(shí)施例的具有多級保留站(RS)結(jié)構(gòu)的微處理器包括主RS、次RS和繞過控制系統(tǒng)。主RS包括用于存儲接收到的發(fā)射指令的至少一個主RS隊列,用于將其內(nèi)存儲的發(fā)射指令推送到次RS的推送輸出,以及至少一個繞過輸出,該繞過輸出可分派主RS隊列中存儲的發(fā)射指令中的準(zhǔn)備好被分派的至少一個指令。次RS包括用于存儲從主RS接收的發(fā)射指令的至少一個次RS隊列,以及用于分派次RS中存儲的發(fā)射指令中的準(zhǔn)備好被分派的至少一個指令的至少一個分派輸出。繞過控制系統(tǒng)在次RS的分派輸出和主RS的繞過輸出之間進(jìn)行選擇來分派發(fā)射指令?!靖綀D說明】[0008]參考隨后的描述和附圖將更好地理解本發(fā)明的益處、特征和優(yōu)點(diǎn),附圖中:[0009]圖1是包括根據(jù)本發(fā)明的一個實(shí)施例實(shí)現(xiàn)的融合保留站(RS)模塊的超標(biāo)量流水線微處理器的簡化框圖;[0010]圖2是根據(jù)一個實(shí)施例的圖1的融合RS模塊的更詳細(xì)框圖;[0011]圖3是根據(jù)一個實(shí)施例的圖1的融合RS模塊的框圖,其具有實(shí)現(xiàn)主RS的統(tǒng)一RSQ和實(shí)現(xiàn)次RS的多重分派RS;[0012]圖4是根據(jù)另一實(shí)施例的圖1的融合RS模塊的簡化框圖,其中次RS是利用分割RS實(shí)現(xiàn)的;[0013]圖5是根據(jù)另外一個實(shí)施例的圖1的融合RS模塊的簡化框圖,其中次RS是利用集群RS實(shí)現(xiàn)的;[0014]圖6是包括傳統(tǒng)RS結(jié)構(gòu)的流水線的簡化框圖;[0015]圖7是包括根據(jù)本發(fā)明的一個實(shí)施例的融合RS結(jié)構(gòu)的流水線的簡化框圖;[0016]圖8是圖示出根據(jù)一個實(shí)施例被配置為具有移位特征的RSQ的圖2的主RS的操作的一對簡化圖;并且[0017]圖9是圖示出根據(jù)一個實(shí)施例的具有總共12個條目并且假定每次推送出4個指令的圖8的RSQ的移位特征的簡化圖?!揪唧w實(shí)施方式】[0018]發(fā)明人認(rèn)識到了傳統(tǒng)的保留站結(jié)構(gòu)的效率低下和更低的性能。他們因此開發(fā)出了一種具有改善的效率和性能的融合保留站結(jié)構(gòu)。融合保留站(RS)結(jié)構(gòu)包括一種多級或堆疊式保留站結(jié)構(gòu),其中包括主RS和次RS。主RS提供前端溢出緩沖器功能,用于緩沖發(fā)射的指令以減少轉(zhuǎn)變到造成微處理器的流水線延遲的重發(fā)射模式的發(fā)生。融合結(jié)構(gòu)因?yàn)楦纳频木彌_功能可減少前端時序氣泡。主RS和次RS結(jié)構(gòu)都可以更小,從而整體時序可得到改善。另外,當(dāng)次RS不能分派給定類型的至少一個指令時,那么當(dāng)主RS內(nèi)的任何一個或多個指令準(zhǔn)備好被直接分派到處理器的執(zhí)行單元時,次RS可被繞過。[0019]圖1是包括根據(jù)本發(fā)明的一個實(shí)施例實(shí)現(xiàn)的融合保留站(RS)模塊108的超標(biāo)量流水線微處理器100的簡化框圖。微處理器100包括指令高速緩存102,其緩存某個指令集架構(gòu)的宏指令130,例如x86指令集架構(gòu)等等。其它的或替換的指令集架構(gòu)也是可以預(yù)期的。微處理器100包括指令翻譯器104,其接收宏指令130并將宏指令130翻譯成微指令132。微指令132隨后被提供到寄存器別名表(registeraliastable,RAT)106(亦稱為“重命名”表),RAT106生成微指令132的微指令的相關(guān)性(cbpendency)并且將微指令132按程序順序發(fā)射到融合RS模塊108和重排序緩沖器(ROB)110。ROB110對于從RAT106發(fā)射的每個微指令存儲一條目。融合RS模塊108將微指令分派到多個執(zhí)行單元112中的適當(dāng)?shù)囊粋€。[0020]從RAT106發(fā)射的微指令(ISSUE)通??杀环Q為微指令,但在這里被更概括地簡稱為“指令”。融合RS模塊108在其已滿或者因其他原因不能夠從RAT106接收額外的指令時聲明一個滿指示信號,示為RS_FULL。ROB110通常具有更大的結(jié)構(gòu),在融合RS模塊108已滿之后可繼續(xù)接收指令。最終,融合RS模塊108能夠?qū)⒅噶罘峙傻綀?zhí)行單元112以使得其能夠接收更多的指令。在融合RS模塊108指示出其不再滿之后(例如當(dāng)信號RS_FULL被取消聲明時),指令從ROB110臨時性地被重發(fā)射(REISSUE)到融合RS模塊108。當(dāng)ROB110跟上了RAT106時,再次從RAT106發(fā)射指令。[0021]如本文進(jìn)一步描述的,融合RS模塊108具有更多數(shù)量的亂序(0-0-0)窗口,從而不會那么經(jīng)常地變滿。融合RS模塊108更小并且具有更高效的設(shè)計,從而具有改善的時序。融合RS模塊108表現(xiàn)出增大的吞吐量并從而表現(xiàn)出更高的性能。融合RS模塊108可減少重播并且可減少其確實(shí)變滿時的懲罰。融合RS模塊108可減少會插入流水線延遲的前端空間或“氣泡”。[0022]圖2是根據(jù)一個實(shí)施例的融合RS模塊108的更詳細(xì)框圖,該融合RS模塊108耦合在RAT106和ROB110與執(zhí)行單元112之間。RAT106具有被提供到ROB110的輸入的輸出。復(fù)用器(MUX)202具有與RAT106的輸出耦合的第一輸入,具有與ROB110的輸出耦合的第二輸入,并且具有與融合RS模塊108內(nèi)的主RS204的輸入耦合的輸出。主RS204具有與次RS208的輸入耦合的推送輸出206。次RS208具有被提供到繞過系統(tǒng)212的輸入的分派輸出210,繞過系統(tǒng)212具有與寄存器模塊216的輸入親合的分派輸出214。如本文進(jìn)一步描述的,主RS204還包括被提供到繞過系統(tǒng)212的輸入的繞過輸出230,并且次RS208向繞過系統(tǒng)提供信號S_N0NDIS。[0023]寄存器模塊216被示為介于融合RS模塊108與執(zhí)行單元112之間,用于提供相應(yīng)的指令操作數(shù)和指令操作碼。寄存器模塊216可包括微處理器100的任何寄存器,例如物理寄存器文件(physicalregisterfile,PRF)、R0B110的寄存器文件、通用寄存器(generalpurposeregister,GPR)等等,并且還包括用于收集指令的信息來提交給執(zhí)行單元112的電路和邏輯。在一個實(shí)施例中,融合RS模塊108只處理或操作個體指令的“標(biāo)簽”而不是指令本身。這使得能夠減小實(shí)現(xiàn)融合RS模塊108的電路的大小,因?yàn)槠浯鎯Σ⑻幚頊p少量的信息。寄存器模塊216使用每個指令的標(biāo)簽來收集指令信息,包括指令操作數(shù)和指令操作碼等等,并且將收集的指令信息提供給執(zhí)行單元112。由于每個標(biāo)簽代表相應(yīng)的指令,所以該信息在這里被簡稱為“指令”。[0024]在操作中,主RS204把從RAT106或ROB110接收的發(fā)射指令推送到次RS208。當(dāng)次RS208已滿并且不能接收從主RS204推送的更多指令時,其向主RS204聲明S_RSFULL信號。S_RSFULL信號是融合RS模塊108內(nèi)部的并且是與RS_FULL信號(圖1)不同的信號。當(dāng)S_RSFULL信號被聲明時,主RS204作為溢出緩沖器操作來接收并存儲額外的發(fā)射指令。當(dāng)次RS208從滿變成當(dāng)前第1頁1 2 3 4 5