專(zhuān)利名稱(chēng):具有階層式微碼儲(chǔ)存之多內(nèi)核處理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明系關(guān)于處理器,且更特別的是,有關(guān)于在包含多處理器內(nèi)核的處理器內(nèi)實(shí) 作微碼。
背景技術(shù):
隨著處理器實(shí)作的發(fā)展,日益常見(jiàn)的企圖是藉由復(fù)制處理器內(nèi)的處理器內(nèi)核來(lái)增 加處理器性能。該等內(nèi)核能夠獨(dú)立地執(zhí)行指令,這可增加用于執(zhí)行應(yīng)用系統(tǒng)的粗粒度并行 性(coarse-grained parallelism),而成本及設(shè)計(jì)復(fù)雜度低于用以增加性能之替代策略所 需要的,例如增加細(xì)粒度并行性或執(zhí)行頻率。不過(guò),多內(nèi)核處理器實(shí)作本身有若干設(shè)計(jì)挑戰(zhàn)。有些處理器內(nèi)核資源(例如,微碼 進(jìn)程的儲(chǔ)存資源)可內(nèi)含于關(guān)鍵時(shí)序路徑(criticaltiming path)中,使得資源與給定內(nèi) 核的鄰近度可直接影響給定內(nèi)核的工作頻率。因此,多個(gè)內(nèi)核共享該等儲(chǔ)存資源中之單一 實(shí)例(instance)可能會(huì)由于增加共享實(shí)例的等待時(shí)間(latency)而使該等內(nèi)核的性能降 級(jí)。不過(guò),以設(shè)計(jì)面積,功率及/或其它設(shè)計(jì)質(zhì)量因素而言,復(fù)制儲(chǔ)存資源使得各個(gè)內(nèi)核包 含它自己的資源實(shí)例是昂貴的。
發(fā)明內(nèi)容
茲揭示具有階層式微碼儲(chǔ)存之多內(nèi)核處理器的各種具體實(shí)施例。根據(jù)一個(gè)具體實(shí) 施例,處理器可包含許多處理器內(nèi)核,各個(gè)系配置成可獨(dú)立執(zhí)行根據(jù)程序員可見(jiàn)的指令集 架構(gòu)(instruction set architecture, ISA)定義的指令。該等處理器內(nèi)核各自可包含配 置成儲(chǔ)存數(shù)個(gè)微碼條目的個(gè)別本地微碼單元。該處理器也可包含遠(yuǎn)程微碼單元,其可被每 個(gè)該等處理器內(nèi)核存取以及包含配置成儲(chǔ)存數(shù)個(gè)微碼條目的遠(yuǎn)程微碼儲(chǔ)存。任何一個(gè)給定 的該等處理器內(nèi)核可被配置成產(chǎn)生給定微碼進(jìn)入點(diǎn),該給定微碼進(jìn)入點(diǎn)系對(duì)應(yīng)至包含可用 該給定處理器內(nèi)核執(zhí)行之一個(gè)或更多操作的特定微碼條目,以及判斷該特定微碼條目是否 儲(chǔ)存于該給定處理器內(nèi)核之該個(gè)別本地微碼單元內(nèi)。響應(yīng)于該特定微碼條目未儲(chǔ)存于該個(gè) 別本地微碼單元內(nèi)的判斷,該給定內(nèi)核可傳遞該特定微碼條目的請(qǐng)求至該遠(yuǎn)程微碼單元。盡管本發(fā)明容易做成不同的修改與替代形式,本文仍以附圖為例圖示數(shù)個(gè)本發(fā)明 的特定具體實(shí)施例且詳述于本文。然而,應(yīng)了解,附圖及詳細(xì)說(shuō)明不是想要把本發(fā)明限制成 所揭示的特定形式,反而,本發(fā)明是要涵蓋落入所附申請(qǐng)專(zhuān)利范圍所界定之本發(fā)明精神及 范疇內(nèi)的所有修改、均等及替代陳述。
圖1的方塊圖系圖示處理器內(nèi)核之一個(gè)具體實(shí)施例。圖2的方塊圖系圖示含有多處理器內(nèi)核的處理器之一個(gè)具體實(shí)施例。圖3的方塊圖系圖示微碼控制儲(chǔ)存之一個(gè)具體實(shí)施例的組織。圖4的方塊圖系圖示包含本地及遠(yuǎn)程微碼單元的階層式微碼儲(chǔ)存之一個(gè)具體實(shí)施例。圖5的方塊圖系圖標(biāo)本地微碼單元之一個(gè)具體實(shí)施例。圖6的方塊圖系圖標(biāo)遠(yuǎn)程微碼單元之一個(gè)具體實(shí)施例。圖7的流程圖系圖示用于擷取具有階層式微碼儲(chǔ)存之處理器內(nèi)的微碼條目的方 法之一個(gè)具體實(shí)施例。圖8的方塊圖系圖標(biāo)示范計(jì)算機(jī)系統(tǒng)之一個(gè)具體實(shí)施例。
具體實(shí)施例方式處理器內(nèi)核的概述圖1圖示處理器內(nèi)核100之一個(gè)具體實(shí)施例。一般而言,內(nèi)核100可被配置成能 執(zhí)行可儲(chǔ)存于與內(nèi)核100直接或間接耦合之系統(tǒng)存儲(chǔ)器內(nèi)的指令。該等指令的定義可根據(jù) 特定指令集架構(gòu)(ISA)。例如,內(nèi)核100可被配置成實(shí)作x86 ISA的版本,然而在其它具體 實(shí)施例中,內(nèi)核100可實(shí)作不同的ISA或數(shù)種ISA的組合。在圖示具體實(shí)施例中,內(nèi)核100可包含指令緩存(instruction cache,IC) 110,其 系經(jīng)耦合以提供指令至指令提取單元(instruction fetch unit,IFU) 120。IFU 120可耦合 至分支預(yù)測(cè)單元(branch prediction unit, BPU) 130與指令譯碼單元140。譯碼單元140 可耦合以提供數(shù)個(gè)操作給多個(gè)整數(shù)執(zhí)行叢集(integer execution cluster) 150a至b與浮 點(diǎn)單元(floating point unit,F(xiàn)PU) 160。每個(gè)叢集150a至b可包含耦合至各自多個(gè)整數(shù) 執(zhí)行單元154a至b的個(gè)別叢集排程器(cluster scheduler) 152a至b。在不同的具體實(shí)施 例中,內(nèi)核100可包含數(shù)個(gè)在叢集150a至b內(nèi)或者由叢集150a至150b所共享的數(shù)據(jù)緩存 (未圖標(biāo))。在圖示具體實(shí)施例中,F(xiàn)PU 160可耦合以接收來(lái)自FP排程器162的操作。另 外,叢集150a至b、FPU 160及指令緩存110可額外地耦合至內(nèi)核接口單元170,接著內(nèi)核 接口單元170是耦合至L2緩存180與在內(nèi)核100外的系統(tǒng)接口單元(system interface unit, SIU)(其系圖示于圖2以及在下文會(huì)加以描述)。應(yīng)注意,盡管圖1呈現(xiàn)一些在各種 單元之間的指令及數(shù)據(jù)流路徑,然而仍可提供未具體圖示于圖1的其它路徑或數(shù)據(jù)或指令 流的方向。內(nèi)核100的附加配置也有可能,例如改變叢集150、FPU160及L2緩存180之?dāng)?shù) 目,以及改變?cè)摰葐卧舜嘶?dòng)方式者。如以下所詳述的,可將內(nèi)核100配置成用于執(zhí)行多執(zhí)行緒(multithread)而可并 行執(zhí)行來(lái)自不同執(zhí)行緒的指令。在不同的具體實(shí)施例中,吾等預(yù)期并行執(zhí)行可用數(shù)目不同 的執(zhí)行緒支持,而且可提供不同數(shù)目的叢集150與FPU 160。另外,也可添加其它的共享或 多執(zhí)行緒化單元,包含專(zhuān)用媒體處理器或其它類(lèi)型的加速器。指令緩存110可被配置成在指令被提取、譯碼及發(fā)行供執(zhí)行之前儲(chǔ)存該指 令。在不同的具體實(shí)施例中,可將指令緩存110配置成為有任何適合的大小及/或關(guān) 連度的直接映像式(direct-mapped)、集合關(guān)連式(set-associative)或完全關(guān)連式 (fully-associative)緩存。指令緩存110可實(shí)體尋址、虛擬尋址、或兩者之組合。在一些 具體實(shí)施例中,指令緩存110也可包含轉(zhuǎn)換后備緩沖器(translation lookaside buffer, TLB)邏輯,其系配置成緩存用于指令提取地址的虛擬至實(shí)體轉(zhuǎn)換,然而在內(nèi)核100內(nèi)的其 它地方可包含TLB與轉(zhuǎn)換邏輯。存取指令緩存110的指令提取可用IFU 120調(diào)節(jié)。例如,IFU 120可跟蹤用于各種執(zhí)行中之執(zhí)行緒的當(dāng)前程序計(jì)數(shù)器狀態(tài)以及可向指令緩存110發(fā)行提取以便擷取額外 的指令供執(zhí)行。在指令緩存未命中的情形下,指令緩存110或者IFU 120可調(diào)節(jié)來(lái)自L(fǎng)2緩 存180擷取的指令數(shù)據(jù)。在一些具體實(shí)施例中,IFU 120也可調(diào)節(jié)在預(yù)期會(huì)用到之前預(yù)提 取(prefetch)來(lái)自其它層次之存儲(chǔ)器階層的指令以便減少存儲(chǔ)器等待時(shí)間的效應(yīng)。例如, 成功的指令預(yù)提取可提高指令在需要時(shí)出現(xiàn)在指令緩存110中的可能性,從而避免高速緩 存階層的可能數(shù)個(gè)層次而未命中的等待時(shí)間效應(yīng)。有各種類(lèi)型的分支(例如,有條件或無(wú)條件跳越、呼叫/返回指令、等等)可改變 特定執(zhí)行緒的執(zhí)行流(flow Of execution)。一般可將分支預(yù)測(cè)單元130配置成可預(yù)測(cè)未 來(lái)的提取地址供IFU 120使用。在一些具體實(shí)施例中,BPU 130可包含配置成可儲(chǔ)存關(guān)于分 支指令之信息的任一合適的結(jié)構(gòu)(或數(shù)個(gè)結(jié)構(gòu))。例如,在一些具體實(shí)施例中,BPU 130可 包含一個(gè)或更多類(lèi)型不同,配置成可預(yù)測(cè)條件分支之結(jié)果的的預(yù)測(cè)器(例如,本地、全域、 或混合預(yù)測(cè)器)??蓪FU 120配置成可產(chǎn)生指令字節(jié)的序列(也被稱(chēng)作提取封包(fetch packet))作為提取的結(jié)果。提取封包可具有任何合適的字節(jié)個(gè)數(shù)的長(zhǎng)度。在一些具體實(shí)施 例中,特別是實(shí)施變量長(zhǎng)度指令的ISA,排列任意邊界之有效指令在給定提取封包內(nèi)的數(shù)量 是變動(dòng)的,以及在有些實(shí)例中,指令可跨越不同的提取封包。一般而言,可將譯碼單元140 配置成可識(shí)別提取封包內(nèi)的指令邊界,以譯碼指令或用其它方式把指令轉(zhuǎn)變成適合用叢集 150或FPU 160來(lái)執(zhí)行的操作,以及分派該等操作供執(zhí)行。在一個(gè)具體實(shí)施例中,可將DEC 140配置成首先判斷可能指令在給定字節(jié)窗口 (從一個(gè)或更多提取封包抽出)內(nèi)的長(zhǎng)度。例如,就兼容于x86的ISA而言,可將DEC 140配 置成可由在給定提取封包內(nèi)的每個(gè)字節(jié)位置開(kāi)始識(shí)別前置碼(prefix)、操作碼、“mod/rm” 及“SIB”字節(jié)的有效順序。然后,在一個(gè)具體實(shí)施例中,可將DEC 140內(nèi)的拾取邏輯(pick 邏輯)配置成可識(shí)別多個(gè)有效指令在窗口內(nèi)的邊界。在一個(gè)具體實(shí)施例中,識(shí)別指令邊界 的多個(gè)提取封包及多組指令指針可隊(duì)列于DEC 140內(nèi)。然后,可引導(dǎo)指令從提取封包儲(chǔ)存器進(jìn)入DEC 140內(nèi)數(shù)個(gè)指令譯碼器中之一個(gè)。 在一個(gè)具體實(shí)施例中,可將DEC 140配置成盡可能提供與每個(gè)周期被分配供執(zhí)行的指令一 樣多的多個(gè)獨(dú)立指令譯碼器,然而也有可能及考慮其它的配置。在內(nèi)核100支持微碼化指 令(microcoded instruction)的具體實(shí)施例中,可將各個(gè)指令譯碼器配置成判斷給定指令 是否為微碼化指令,如果是,則可叫用(invoke)微碼引擎(microcode engine)的操作以把 指令轉(zhuǎn)換成一序列的操作。否則,指令譯碼器可把指令轉(zhuǎn)換成一個(gè)適合供叢集150或FPU 160執(zhí)行的操作(或者,在有些具體實(shí)施例中,可能為數(shù)個(gè)操作)。所得到的操作也可稱(chēng)作 微操作(micro-operation、micro-op或uop),而且可儲(chǔ)存于一個(gè)或更多個(gè)隊(duì)列內(nèi)以等待分 派供執(zhí)行。在一些具體實(shí)施例中,微碼操作與非微碼(或“快速路徑(fastpath)”)操作可 儲(chǔ)存于分開(kāi)的隊(duì)列。與實(shí)作微碼于內(nèi)核100內(nèi)之具體實(shí)施例有關(guān)的其它細(xì)節(jié)在下文會(huì)有更 詳細(xì)的說(shuō)明??蓪EC 140內(nèi)的分派邏輯配置成檢查在隊(duì)列中等待分派之操作的狀態(tài)結(jié)合執(zhí) 行資源與分派法則的狀態(tài)以便嘗試組裝分派包裹(dispatch parcel)。例如,DEC 140可考 慮到可隊(duì)列供分派的操作、在叢集150及/或FPU 160內(nèi)隊(duì)列及等待執(zhí)行的操作數(shù)、以及 可能施加于待分派操作的任何資源限制。在一個(gè)具體實(shí)施例中,可將DEC 140配置成在給定的執(zhí)行周期期間分派一個(gè)操作包裹給叢集150或FPU160中之一個(gè)。在一個(gè)具體實(shí)施例中,可將DEC 140配置成在給定的執(zhí)行周期期間譯碼及分派操 作只給一個(gè)執(zhí)行緒。不過(guò),應(yīng)注意,IFU 120與DEC 140不需要在相同的執(zhí)行緒上并行操 作??煽紤]在指令提取及譯碼期間使用各種類(lèi)型的執(zhí)行緒切換策略(thread-switching policy)。例如,可將IFU 120與DEC 140配置成以循環(huán)方式(round-robin fashion)每N 個(gè)周期(在此N可以少至1)選擇不同的執(zhí)行緒供處理。替換地,在操作期間出現(xiàn)的動(dòng)態(tài)情 況可能會(huì)影響執(zhí)行緒的切換。一般而言,可將叢集150配置成實(shí)作整數(shù)算術(shù)及邏輯操作以及執(zhí)行加載/儲(chǔ)存操 作(load/store operation)。在一個(gè)具體實(shí)施例中,每一個(gè)叢集150a至b可專(zhuān)用于各自的 執(zhí)行緒來(lái)執(zhí)行操作。各個(gè)叢集150可包含它自己的排程器152,該排程器152可被配置成能 管理先前分派至該叢集供執(zhí)行之操作的發(fā)行。各個(gè)叢集150可進(jìn)一步包含它自己的整數(shù)實(shí) 體登錄文件(integer physical register file)復(fù)本以及它自己的完成邏輯(例如,重排 序緩沖器(reorder buffer)或用于管理操作完成及退除的其它結(jié)構(gòu))。在各叢集150內(nèi),有數(shù)個(gè)執(zhí)行單元154可支持各種不同類(lèi)型之操作的并行執(zhí)行。例 如,在一個(gè)具體實(shí)施例中,執(zhí)行單元154可支持并行的加載/儲(chǔ)存地址產(chǎn)生(AGU)操作及算 術(shù)/邏輯(ALU)。執(zhí)行單元154可支持?jǐn)?shù)種附加操作,例如整數(shù)乘法和除法,然而在不同的 具體實(shí)施例中,對(duì)于該等附加操作與其它ALU/AGU操作的通量及并行,該等叢集150可實(shí)施 排程限制(scheduling restriction) 0在不同的具體實(shí)施例中,該等叢集150可包含或共 享可組織成與指令緩存110不同的數(shù)據(jù)緩存。FPU 160可包含F(xiàn)P排程器162,其系類(lèi)似于叢集排程器152,可被配置成能接收、 隊(duì)列及發(fā)行在FP執(zhí)行單元164內(nèi)執(zhí)行的操作。FPU160也可包含配置成管理數(shù)個(gè)浮點(diǎn)操作 數(shù)的浮點(diǎn)實(shí)體登錄文件(floating-point physical register file)??蓪?shù)個(gè)FP執(zhí)行 單元164配置成實(shí)作各種類(lèi)型的浮點(diǎn)操作,例如可以是由ISA界定的操作。在不同的具體 實(shí)施例中,F(xiàn)PU 160可支持不同類(lèi)型之一些浮點(diǎn)操作的并行執(zhí)行,而且也可支持不同的精確 度(例如,64位操作數(shù)、128位操作數(shù)、等等)。在不同的具體實(shí)施例中,F(xiàn)PU 160可包含資 料緩存或可被配置成存取位于其它單元內(nèi)的數(shù)據(jù)緩存。指令緩存110與數(shù)據(jù)緩存156可被配置成經(jīng)由內(nèi)核接口單元170來(lái)存取L2緩存 180。在一個(gè)具體實(shí)施例中,CIU 170可提供內(nèi)核100與系統(tǒng)內(nèi)其它內(nèi)核100以及與外部系 統(tǒng)存儲(chǔ)器、周邊等等之間的通用接口。通常,L2緩存180的容量會(huì)實(shí)質(zhì)大于第一階指令及 數(shù)據(jù)緩存的容量。在一些具體實(shí)施例中,內(nèi)核100可支持有序操作(in-orderoperation)。在其它具 體實(shí)施例中,內(nèi)核100可支持操作(包含,加載及儲(chǔ)存操作)的無(wú)序執(zhí)行。亦即,操作在叢 集150與FPU 160內(nèi)執(zhí)行的順序可不同于與該等操作對(duì)應(yīng)的指令在原始程序內(nèi)的順序。像 這樣被放松執(zhí)行的秩序有助于提高執(zhí)行資源的排程效率,這可改善整體的執(zhí)行性能。另外,內(nèi)核100可實(shí)作各種控制及數(shù)據(jù)推測(cè)技術(shù)(control and dataspeculation technique)。如上述,內(nèi)核100可實(shí)作各種分支預(yù)測(cè)及推測(cè)性預(yù)提取技術(shù)以便嘗試預(yù)測(cè)執(zhí) 行緒的執(zhí)行控制流之進(jìn)行方向。此類(lèi)控制推測(cè)技術(shù)一般是在確知指令是否可用或者是否 推測(cè)錯(cuò)誤(例如,由于分支預(yù)測(cè)錯(cuò)誤)之前企圖提供一致的指令流。如果出現(xiàn)控制推測(cè)錯(cuò) 誤,則可將內(nèi)核100配置成拋棄在推測(cè)錯(cuò)誤路徑中的操作與數(shù)據(jù)以及重新引導(dǎo)執(zhí)行控制到正確的路徑。例如,在一個(gè)具體實(shí)施例中,可將該等叢集150配置成可執(zhí)行條件分支指令以 及判斷分支結(jié)果是否與預(yù)測(cè)結(jié)果一致。如果不一致,則可將叢集150配置成可重新引導(dǎo)IFU 120以開(kāi)始沿著正確的路徑提取。內(nèi)核100可獨(dú)立實(shí)作各種資料推測(cè)技術(shù)用來(lái)在得知數(shù)據(jù)數(shù)值是否正確之前嘗試 提供數(shù)據(jù)數(shù)值給進(jìn)一步的執(zhí)行使用。藉由以推測(cè)方式來(lái)使用該等數(shù)據(jù),在使用數(shù)據(jù)之前,可 放松評(píng)估所有與數(shù)據(jù)有效性有關(guān)之條件的必要時(shí)序限制,這能夠加快內(nèi)核操作。在不同的具體實(shí)施例中,處理器實(shí)作可包含把內(nèi)核100制作成為單一整體集成電 路芯片及其它結(jié)構(gòu)之一部分的多個(gè)實(shí)例。圖2圖示處理器之一個(gè)此種具體實(shí)施例。如圖示, 處理器200包含4個(gè)各按照上述方式配置的內(nèi)核100a至d的實(shí)例。在圖示具體實(shí)施例中, 各個(gè)內(nèi)核100可經(jīng)由系統(tǒng)接口單元(SIU) 210而耦合至L3緩存220與存儲(chǔ)器控制器/周邊 接口單元(MCU)230。在一個(gè)具體實(shí)施例中,可將L3緩存220配置成為使用任一合適組織實(shí) 作的聯(lián)合式緩存,它可操作為在內(nèi)核100的L2緩存180與相對(duì)緩慢的系統(tǒng)存儲(chǔ)器240之間 的中間緩存??蓪CU 230配置成直接介接處理器200與系統(tǒng)存儲(chǔ)器240。例如,可將MCU 230 配置成產(chǎn)生為了支持一個(gè)或更多不同類(lèi)型之隨機(jī)存取存儲(chǔ)器(RAM)而需要的訊號(hào),例如 雙倍數(shù)據(jù)率同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DDR SDRAM)、DDR-2SDRAM、全緩沖雙線(xiàn)存儲(chǔ)器模塊 (FB-DIMM)、或可用來(lái)實(shí)作系統(tǒng)存儲(chǔ)器240的其它合適類(lèi)型存儲(chǔ)器。系統(tǒng)存儲(chǔ)器240可被配 置成儲(chǔ)存可讓處理器200操作于不同內(nèi)核100的指令及數(shù)據(jù),以及可用上述的各種緩存來(lái) 緩存系統(tǒng)存儲(chǔ)器240的內(nèi)容。另外,MCU 230可支持連至處理器200的其它類(lèi)型接口。例如,MCU 230可實(shí)作專(zhuān)用 的圖形處理器接口,例如一種可用來(lái)介接處理器200與圖形處理子系統(tǒng)的加速/先進(jìn)圖形 端口(AGP)接口,其中該圖形處理子系統(tǒng)可包含個(gè)別的圖形處理器、圖形存儲(chǔ)器及/或其它 組件。也可將MCU 230配置成實(shí)作一個(gè)或更多種類(lèi)型的周邊接口,例如,一種PCI-Express 總線(xiàn)標(biāo)準(zhǔn)版本,處理器200通過(guò)該P(yáng)CI-Express總線(xiàn)標(biāo)準(zhǔn)可與周邊介接該周邊,例如儲(chǔ)存 裝置、圖標(biāo)裝置、網(wǎng)絡(luò)裝置、等等。在一些具體實(shí)施例中,處理器200外部的第二總線(xiàn)橋接器 (例如,“南橋”)可用來(lái)經(jīng)由其它類(lèi)型的總線(xiàn)或互連接使處理器200與其它的周邊裝置耦 合。應(yīng)注意,盡管圖中存儲(chǔ)器控制器與周邊接口功能是經(jīng)由MCU 230整合于處理器200內(nèi), 然而在其它具體實(shí)施例中,經(jīng)由習(xí)知的“北橋”配置可實(shí)作該等功能于處理器200外部。例 如,可經(jīng)由個(gè)別的芯片組來(lái)實(shí)作MCU 230的各種功能,而不是整合于處理器200內(nèi)。本地及遠(yuǎn)程微碼單元如上述,在一些具體實(shí)施例中,內(nèi)核100可支持微碼化操作。一般而言,微碼可涵 蓋一種待由給定內(nèi)核100執(zhí)行的個(gè)別操作都源于控制及數(shù)據(jù)儲(chǔ)存的處理器實(shí)作技術(shù),該控 制及數(shù)據(jù)儲(chǔ)存系與指令流的通常程序員可見(jiàn)路徑(例如,也許由IFU 120所提供的)分開(kāi)。 例如,給定ISA(例如,x86 ISA)可包含指令以及可按復(fù)雜度明顯分類(lèi)的其它確定處理器性 能(例如,重設(shè)機(jī)能、中斷/陷入/例外機(jī)能、等等)。與緩存器操作數(shù)有關(guān)的簡(jiǎn)單移位或 旋轉(zhuǎn)指令也許相當(dāng)容易具體實(shí)作成為可用執(zhí)行單元154直接執(zhí)行的單一操作。例如,通過(guò) 進(jìn)位旗標(biāo)來(lái)旋轉(zhuǎn)操作數(shù)的旋轉(zhuǎn)指令更容易具體實(shí)作為可在執(zhí)行單元154內(nèi)執(zhí)行的不同操 作之組合。然而,更加復(fù)雜的指令(例如,某類(lèi)復(fù)雜的控制轉(zhuǎn)移指令、修改系統(tǒng)緩存器(例 如控制緩存器)的指令,涉及虛擬存儲(chǔ)器的指令、在特權(quán)或保護(hù)模式背景下執(zhí)行的指令、等等)可能涉及額外的操作,例如在指令執(zhí)行被調(diào)節(jié)后測(cè)試處理器狀態(tài)(例如,特權(quán)狀態(tài))。ISA內(nèi)有些指令可直接映像至個(gè)別的對(duì)應(yīng)操作。在一些具體實(shí)施例中,對(duì)于ISA之 中不直接映像至可在執(zhí)行單元154內(nèi)執(zhí)行之單一操作的復(fù)雜指令,微碼可用來(lái)把給定復(fù)雜 指令轉(zhuǎn)換成一序列比較簡(jiǎn)單、可分派供執(zhí)行的操作。可利用微碼的操作集合一般包含對(duì)應(yīng) 至可直接執(zhí)行ISA指令的操作。不過(guò),在一些具體實(shí)施例中,微碼操作可包含執(zhí)行單元154 可執(zhí)行但程序員不可見(jiàn)的操作。另外,微碼可用來(lái)產(chǎn)生一序列可執(zhí)行操作以回應(yīng)不與在實(shí) 作ISA內(nèi)之特定指令對(duì)應(yīng)的架構(gòu)定義之處理器事件。例如,重設(shè)微碼進(jìn)程可包含一序列操 作,其配置成使內(nèi)核100處于一致操作狀態(tài)于軟件或硬件重設(shè)事件之后(例如,藉由初始化 緩存、儲(chǔ)存特定數(shù)值至特定架構(gòu)與非架構(gòu)緩存器、致使指令提取從預(yù)定地址開(kāi)始、等等)。在 一些具體實(shí)施例中,微碼也可用來(lái)產(chǎn)生實(shí)作內(nèi)核100中之非架構(gòu)特征的進(jìn)程(亦即,在內(nèi)核 100的正常操作期間,程序員通??床坏交驘o(wú)法存取的特征)。例如,微碼可用來(lái)實(shí)作硬件 測(cè)試或除錯(cuò)進(jìn)程供使用于產(chǎn)品制造期間、現(xiàn)場(chǎng)分析、開(kāi)機(jī)自我測(cè)試、或用于其它合適的應(yīng)用 系統(tǒng)。微碼進(jìn)程通??蓛?chǔ)存于任一合適的類(lèi)型的控制儲(chǔ)存內(nèi),例如只讀存儲(chǔ)器(ROM), 或者,如以下所詳述的,可寫(xiě)入存儲(chǔ)器內(nèi),例如隨機(jī)存取存儲(chǔ)器(RAM)。圖3圖示微碼控制 儲(chǔ)存的一個(gè)示范組織。在圖示具體實(shí)施例中,微碼控制儲(chǔ)存300包含許多條目310,條目 310可各自包含許多操作字段(operation field) 320與順序控制字段(sequencecontrol field) 330。在一個(gè)具體實(shí)施例中,條目310可各自對(duì)應(yīng)至在微碼地址空間內(nèi)的個(gè)別進(jìn)入 點(diǎn)。例如,12位微碼地址空間可以允許多達(dá)4,096 (4K)個(gè)不同的進(jìn)入點(diǎn)數(shù)值。應(yīng)注意,在一 些具體實(shí)施例中,微碼地址空間可被配置成有比實(shí)際條目310還多的可能進(jìn)入點(diǎn)數(shù)值,例 如在使用稀疏進(jìn)入點(diǎn)尋址法(sparse entrypoint addressing)的情形下。在一個(gè)具體實(shí)施例中,可將條目310中每個(gè)操作字段320配置成儲(chǔ)存編碼可用一 個(gè)執(zhí)行單元154執(zhí)行之單一操作的信息。例如,操作字段320可包含配置成識(shí)別待執(zhí)行操 作之類(lèi)型的操作碼位,以及配置成識(shí)別該操作要使用之操作數(shù)來(lái)源(例如,緩存器或立即 數(shù)據(jù))的操作數(shù)位。在一些具體實(shí)施例中,編碼于操作字段320內(nèi)的操作數(shù)可指定應(yīng)從宏 指令(例如,由IFU 120提取的程序員可見(jiàn)ISA指令)取出操作數(shù)以響應(yīng)要執(zhí)行哪一個(gè)微 碼條目310。在一些具體實(shí)施例中,操作字段320中之不同的一個(gè)可各自對(duì)應(yīng)至叢集150內(nèi) 執(zhí)行單元154之中的一個(gè)。因此,例如,如果執(zhí)行單元154包含兩個(gè)ALU與兩個(gè)AGU,則操作 字段320中有兩個(gè)可對(duì)應(yīng)至該等ALU,以及兩個(gè)可對(duì)應(yīng)至該等AGU。亦即,給定條目310中 的每個(gè)操作字段320可各自對(duì)應(yīng)至叢集150的個(gè)別發(fā)行插槽(issue slot),藉此可以一個(gè) 單元的方式分派整個(gè)給定條目310至叢集150。在某些情況下,在給定條目310內(nèi)的一個(gè)操 作可與在同一條目?jī)?nèi)的另一個(gè)操作相依,而在其它的情形下,條目310內(nèi)的每一個(gè)操作可 與其它的獨(dú)立。應(yīng)注意,在其它具體實(shí)施例中,在微碼條目310內(nèi)的操作字段320可能沒(méi)有 發(fā)行插槽的限制。例如,在一個(gè)此種具體實(shí)施例中,可由任何一字段320來(lái)發(fā)行操作至任何 執(zhí)行單元。 順序控制字段330可被配置成管理微碼進(jìn)程的定序行為(sequencing behavior) 0例如,順序控制字段330可被配置成表示進(jìn)程的退出點(diǎn)(亦即,為特定進(jìn)程終 止處的條目310),或可表示微碼流控制的非順序性改變,例如有條件或無(wú)條件分支或跳越 至不同的進(jìn)入點(diǎn)。在一些具體實(shí)施例中,微碼順序控制可管線(xiàn)化使得與給定條目310有關(guān)
9的順序控制字段330實(shí)際關(guān)連于在順序上較早的不同條目310。例如,在于微碼條目310的 提取與關(guān)連于該條目310之順序控制字段330的執(zhí)行之間有一個(gè)或兩個(gè)周期之延遲或氣泡 的具體實(shí)施例中,可儲(chǔ)存會(huì)影響條目310在進(jìn)入點(diǎn)N處之行為的順序控制字段330于各自 在進(jìn)入點(diǎn)N-1或N-2處與其關(guān)連的條目310。在一些具體實(shí)施例中,指令譯碼單元140可包含與微碼條目310之存取及定序有 關(guān)的機(jī)能。例如,可將DEC 140配置成偵測(cè)指令與需要執(zhí)行微碼的其它處理器事件以及對(duì) 應(yīng)地請(qǐng)求來(lái)自微碼儲(chǔ)存的條目310。在一些具體實(shí)施例中,可將DEC 140配置成取決于需要 微碼的指令或其它事件來(lái)計(jì)算出進(jìn)入點(diǎn),例如藉由映像指令操作碼至在微碼地址空間內(nèi)的 進(jìn)入點(diǎn)數(shù)值。然后,DEC 140可呈遞計(jì)算出的進(jìn)入點(diǎn)至可內(nèi)含于DEC 140或在內(nèi)核100內(nèi)裝 設(shè)成內(nèi)核100內(nèi)之獨(dú)特功能單元的微碼單元而可接收及分派列于一個(gè)或更多微碼條目310 所表示的操作供執(zhí)行用。微碼進(jìn)入點(diǎn)的產(chǎn)生也可響應(yīng)于除指令譯碼以外的事件。例如,可 藉由執(zhí)行叢集或其它單元來(lái)產(chǎn)生進(jìn)入點(diǎn)以響應(yīng)例外或中斷的偵測(cè)。在包含多個(gè)內(nèi)核100之處理器200的具體實(shí)施例中,在微碼實(shí)作方面存在特殊問(wèn) 題。通常,每個(gè)內(nèi)核100將參考相同的微碼內(nèi)容(例如,也許反應(yīng)于條目310內(nèi))。亦即,在 一些具體實(shí)施例中,每個(gè)內(nèi)核100可實(shí)作相同的ISA,以及大致上可預(yù)期代碼是用相同的功 能行為執(zhí)行,而與執(zhí)行該代碼的內(nèi)核100無(wú)關(guān)。相應(yīng)地,可將內(nèi)核100配置成共享微碼儲(chǔ)存 的單一、共享實(shí)例,其中該微碼儲(chǔ)存包含所有界定用于處理器200之具體實(shí)施例的微碼條 目310。不過(guò),實(shí)作要被所有內(nèi)核100共享的單一控制儲(chǔ)存實(shí)例(例如,單一 ROM結(jié)構(gòu))可 能會(huì)增加微碼數(shù)據(jù)由控制儲(chǔ)存行進(jìn)到被請(qǐng)求該數(shù)據(jù)之內(nèi)核100所需要距離,這會(huì)增加執(zhí)行 與微碼有關(guān)之操作所需要的總等待時(shí)間。接著,這可能降低內(nèi)核100的執(zhí)行性能。另外,如果多個(gè)內(nèi)核100企圖并行地存取共享控制儲(chǔ)存的話(huà),則于多個(gè)內(nèi)核100之 間共享單一控制儲(chǔ)存可能造成資源爭(zhēng)奪問(wèn)題。增加由控制儲(chǔ)存支持的并行存取數(shù)(例如, 藉由增加讀取總線(xiàn)的數(shù)目、進(jìn)入點(diǎn)譯碼邏輯的數(shù)量、等等)可能會(huì)增加該控制儲(chǔ)存的復(fù)雜 度與成本以及減少它的時(shí)序性能,而序列化并行存取請(qǐng)求可能會(huì)增加內(nèi)核100所經(jīng)歷的微 碼存取等待時(shí)間,因?yàn)槊看畏?wù)都要等它返回。反之,可復(fù)制微碼控制儲(chǔ)存的實(shí)例使得每個(gè)內(nèi)核100包含微碼的完整復(fù)本。在內(nèi) 核100共享單一控制儲(chǔ)存實(shí)例的情形下,該復(fù)制可改善路由、等待時(shí)間及上述資源爭(zhēng)奪問(wèn) 題。例如,可將每個(gè)復(fù)制實(shí)例安置成各自與它的內(nèi)核100有相當(dāng)靠近的鄰近度,這可減少總 路由距離。不過(guò),以此方式整個(gè)復(fù)制控制儲(chǔ)存可能會(huì)增加設(shè)計(jì)面積與每個(gè)內(nèi)核100的復(fù)雜 度,這會(huì)增加設(shè)計(jì)及制造成本與處理器200的耗電量。在一些具體實(shí)施例中,可將處理器200配置成利用包含復(fù)制及共享兩方面的階層 微碼控制儲(chǔ)存方法。如圖4所示,在一個(gè)具體實(shí)施例中,處理器200中多個(gè)內(nèi)核100a至d 各自包含本地微碼單元400a至d的實(shí)例(或簡(jiǎn)稱(chēng)本地單元400a至d)以及可被配置成經(jīng) 由系統(tǒng)接口單元210來(lái)存取共享的遠(yuǎn)程微碼單元410 (或簡(jiǎn)稱(chēng)遠(yuǎn)程單元410)。應(yīng)注意,盡 管為求簡(jiǎn)潔而省略,圖4的具體實(shí)施例中可包含圖2處理器200的其它組件。此外,在不同 的具體實(shí)施例中,可改變內(nèi)核100與分別內(nèi)含于其中之本地微碼單元400的數(shù)目。在一些 具體實(shí)施例中,本地單元400可各自?xún)?nèi)含于內(nèi)核100的其它單元。例如,本地單元400可實(shí) 作于DEC 140內(nèi)。然而在圖示的具體實(shí)施例中,每個(gè)內(nèi)核100都各自包含一個(gè)本地微碼單 元400,吾等預(yù)期,在一些具體實(shí)施例中,內(nèi)核100中只有多個(gè)可包含各自的本地微碼單元400。亦即,在本地單元400方面,不需要用相同的方式配置每一個(gè)內(nèi)核100,然而有些具體 實(shí)施例都這樣做。一般而言,可將本地微碼單元400的每個(gè)實(shí)例配置成儲(chǔ)存判定對(duì)于內(nèi)核100之操 作有較高性能敏感度的微碼進(jìn)程,同時(shí)可將遠(yuǎn)程微碼單元410配置成儲(chǔ)存判定性能敏感 度為較低的微碼進(jìn)程。例如,如果給定微碼進(jìn)程滿(mǎn)足性能敏感性門(mén)坎要求(performance sensitivitythreshold requirement),則可選擇它給在本地單元400內(nèi)的儲(chǔ)存器,否則可 分配給在遠(yuǎn)程單元410內(nèi)的儲(chǔ)存器。在不同的具體實(shí)施例中,可用不同的準(zhǔn)則來(lái)決定給定微碼進(jìn)程的性能敏感性。例 如,微碼進(jìn)程的長(zhǎng)度可用來(lái)作為性能敏感性的準(zhǔn)則,使得有給定長(zhǎng)度(例如,由單一條目 310組成的進(jìn)程)或小于門(mén)坎長(zhǎng)度的進(jìn)程都內(nèi)含于本地單元400,而大于門(mén)坎長(zhǎng)度的進(jìn)程都 內(nèi)含于遠(yuǎn)程單元410。在有些情形下,進(jìn)程執(zhí)行等待時(shí)間可用來(lái)作為長(zhǎng)度的代表。替換地, 進(jìn)程執(zhí)行的頻率可用來(lái)作為選擇準(zhǔn)則,使得至少以門(mén)坎頻率或機(jī)率(例如,可通過(guò)模擬預(yù) 期的編程工作量來(lái)預(yù)測(cè))執(zhí)行的進(jìn)程都內(nèi)含于本地單元400,而有較低執(zhí)行頻率或機(jī)率的 進(jìn)程都內(nèi)含于遠(yuǎn)程單元410。在其它具體實(shí)施例中,可考慮執(zhí)行頻率/機(jī)率與進(jìn)程長(zhǎng)度兩 者,以及其它可能的準(zhǔn)則來(lái)決定給定進(jìn)程要存放于哪里。例如,重設(shè)微碼進(jìn)程可能相當(dāng)長(zhǎng)而 且不經(jīng)常被執(zhí)行,因此有可能內(nèi)含于遠(yuǎn)程微碼單元410。在另一情形下,虛擬記憶頁(yè)未命中 處理微碼進(jìn)程的執(zhí)行頻率可能高于重設(shè)進(jìn)程。不過(guò),記憶頁(yè)未命中進(jìn)程由于未命中記憶頁(yè) 而很可能會(huì)進(jìn)行許多高等待時(shí)間存儲(chǔ)器存取。因此,存取記憶頁(yè)未命中進(jìn)程的等待時(shí)間比 執(zhí)行該進(jìn)程的等待時(shí)間還遜色,而有可能內(nèi)含于遠(yuǎn)程微碼單元410。一般而言,給定微碼進(jìn) 程的性能敏感性門(mén)坎要求可為上述因素(例如,長(zhǎng)度、等待時(shí)間、執(zhí)行頻率)或其它相關(guān)因 素中之一或更多項(xiàng)的任一適當(dāng)函數(shù)。圖5圖標(biāo)本地微碼單元400之實(shí)例之一個(gè)具體實(shí)施例。在圖標(biāo)具體實(shí)施例中,本地 單元400包含控制儲(chǔ)存500與定序器(sequencer) 510。一般而言,控制儲(chǔ)存500可為微碼 控制儲(chǔ)存300之一示范實(shí)例,微碼控制儲(chǔ)存系配置成儲(chǔ)存對(duì)應(yīng)至選定內(nèi)含于本地單元400 的微碼進(jìn)程的許多微碼條目310。在一個(gè)具體實(shí)施例中,控制儲(chǔ)存500可包含依任一合適組 織配置的ROM。例如,控制儲(chǔ)存500可組織成為單一大型ROM記憶庫(kù),而多個(gè)記憶庫(kù)是根據(jù) 條目310的字段或于另一合適方式來(lái)區(qū)隔。一般而言,ROM可指任一類(lèi)型的可尋址數(shù)據(jù)結(jié) 構(gòu),其系配置成接收索引值(例如,進(jìn)入點(diǎn))作為輸入以及響應(yīng)地提供與供給輸入值對(duì)應(yīng)的 輸出值(例如,條目310)。此類(lèi)數(shù)據(jù)結(jié)構(gòu)可包含存儲(chǔ)器數(shù)組與閘極數(shù)組或邏輯裝置的其它 合適配置。在一些具體實(shí)施例中,除了或取代ROM以外,控制儲(chǔ)存500可包含可寫(xiě)入存儲(chǔ)器 組件,例如RAM或非揮發(fā)性存儲(chǔ)器。在一個(gè)具體實(shí)施例中,可將定序器510配置成根據(jù)從DEC 140收到的微碼請(qǐng)求與 內(nèi)含于條目310的順序控制信息存取控制儲(chǔ)存500。響應(yīng)于從DEC 140收到特定的微碼進(jìn) 入點(diǎn),可將定序器510配置成存取控制儲(chǔ)存500以擷取對(duì)應(yīng)至該特定進(jìn)入點(diǎn)的條目310。然 后,可將被擷取條目310內(nèi)所指定的操作送回到DEC 140供分派及執(zhí)行。另外,可將定序器 510配置成能評(píng)估被擷取條目310的順序控制字段330,以判斷是否要擷取在順序上是在前 一個(gè)被擷取條目310之后的另一條目310,是否要擷取位在非順序進(jìn)入點(diǎn)(例如,順序控制 字段330中所指定的進(jìn)入點(diǎn))的另一條目310、是否要終止微碼條目310的擷取、或者是否 要采取一些其它經(jīng)定義之動(dòng)作。在一些具體實(shí)施例中,微碼條目310可包含可在執(zhí)行單元154或內(nèi)核100內(nèi)其它地方內(nèi)預(yù)測(cè)及/或執(zhí)行的分支操作。在一些此類(lèi)具體實(shí)施例中,也可 將定序器510配置成響應(yīng)由被預(yù)測(cè)或執(zhí)行分支操作引起的微碼順序控制之改變。例如,該 分支操作可能造成定序器510把微碼擷取從當(dāng)前的進(jìn)入點(diǎn)復(fù)位向?yàn)橛稍摲种Р僮魉付?的進(jìn)入點(diǎn)。在一些具體實(shí)施例中,可將每個(gè)本地微碼單元400配置成映像相同的一組微碼進(jìn) 入點(diǎn)至它的各自控制儲(chǔ)存500,使得每個(gè)內(nèi)核100都存取與本地進(jìn)入點(diǎn)相同的進(jìn)入點(diǎn)。然而 在一些具體實(shí)施例中,控制儲(chǔ)存500之每個(gè)實(shí)例可與在處理器200之各種內(nèi)核100內(nèi)的每 個(gè)其它實(shí)例有相同的內(nèi)容,吾等預(yù)期,在其它具體實(shí)施例中,各個(gè)控制儲(chǔ)存500不需要與其 它的有完全一樣的內(nèi)容。例如,制造瑕疵可能導(dǎo)致控制儲(chǔ)存500的實(shí)例在功能上有差異,這 可通過(guò)補(bǔ)修技術(shù)或通過(guò)參照儲(chǔ)存于除給定控制儲(chǔ)存500以外之位置中的條目310來(lái)修正。圖6圖標(biāo)遠(yuǎn)程微碼單元410之一個(gè)具體實(shí)施例。在圖標(biāo)具體實(shí)施例中,遠(yuǎn)程單元 410包含遠(yuǎn)程微碼單元接口 610,其可配置成經(jīng)由SIU210或任一其它合適類(lèi)型的接口來(lái)與 內(nèi)核100通訊。接口 610可耦合至請(qǐng)求隊(duì)列(request queue)620與傳送隊(duì)列(transmit queue) 630??蓪⒄?qǐng)求隊(duì)列620配置成向遠(yuǎn)程控制儲(chǔ)存640傳遞儲(chǔ)存于控制儲(chǔ)存內(nèi)微碼條目 的請(qǐng)求。在圖示具體實(shí)施例中,遠(yuǎn)程控制儲(chǔ)存640可包含任意數(shù)目的微碼ROM記憶庫(kù)650a 至n,以及視需要可包含微碼修補(bǔ)RAM660。在一些具體實(shí)施例中,也可將請(qǐng)求隊(duì)列620配置 成傳遞微碼請(qǐng)求至視需要的動(dòng)態(tài)微碼RAM數(shù)組670??蓪魉完?duì)列630配置成能隊(duì)列從遠(yuǎn) 程控制儲(chǔ)存640(以及在一些具體實(shí)施例中,用以傳輸至他們的請(qǐng)求內(nèi)核100的動(dòng)態(tài)微碼 RAM數(shù)組670)擷取的條目。如以上在描述圖4時(shí)提及的,可將遠(yuǎn)程單元410配置成代表內(nèi)核100儲(chǔ)存各種微 碼進(jìn)程。此類(lèi)進(jìn)程可包含,例如,很長(zhǎng)、與選定內(nèi)含于本地單元400的進(jìn)程相比不常被執(zhí)行 或者被視為不太可能影響處理器性能的進(jìn)程。一般而言,可將遠(yuǎn)程單元410配置成從不同 的內(nèi)核100接收各種微碼進(jìn)入點(diǎn)的請(qǐng)求,以及可用一個(gè)或更多對(duì)應(yīng)條目來(lái)響應(yīng)各個(gè)請(qǐng)求。 取決于遠(yuǎn)程微碼單元接口 610的配置以及用于內(nèi)核100與遠(yuǎn)程單元410之間的接口協(xié)議, 可以并行或序列方式接收源于多個(gè)內(nèi)核100的微碼請(qǐng)求。遠(yuǎn)程控制儲(chǔ)存640可為微碼控制儲(chǔ)存300之示范實(shí)例,其系配置成儲(chǔ)存對(duì)應(yīng)至選 定內(nèi)含于遠(yuǎn)程單元410的微碼進(jìn)程的許多微碼條目310。在一些具體實(shí)施例中,儲(chǔ)存于遠(yuǎn) 程控制儲(chǔ)存640內(nèi)之條目310的格式可類(lèi)似于儲(chǔ)存于本地單元400之控制儲(chǔ)存500內(nèi)的條 目310的格式。在圖標(biāo)具體實(shí)施例中,條目310可分配于根據(jù)任一合適分割法或組織的許 多微碼ROM記憶庫(kù)650。應(yīng)注意,在其它具體實(shí)施例中,記憶庫(kù)650的個(gè)數(shù)可改變。也預(yù)期, 與控制儲(chǔ)存500 —樣,在一些具體實(shí)施例中,除存儲(chǔ)器數(shù)組以外,遠(yuǎn)程控制儲(chǔ)存640可包含 可寫(xiě)入存儲(chǔ)器及/或數(shù)據(jù)儲(chǔ)存組件。一般而言,可一起將遠(yuǎn)程微碼單元接口 610、請(qǐng)求隊(duì)列620及傳送隊(duì)列630配置成 管理從內(nèi)核100收到的微碼請(qǐng)求之處理??蓪⒄?qǐng)求隊(duì)列620配置成儲(chǔ)存進(jìn)來(lái)的微碼請(qǐng)求 (在一個(gè)具體實(shí)施例中,這可最低限度包含進(jìn)入點(diǎn)與請(qǐng)求內(nèi)核100的表示值)直到它們可 在遠(yuǎn)程控制儲(chǔ)存640內(nèi)處理為止。同樣,可將傳送隊(duì)列630配置成儲(chǔ)存已從遠(yuǎn)程控制儲(chǔ)存 640 (或在一些具體實(shí)施例中,從動(dòng)態(tài)微碼RAM數(shù)組670)擷取的條目310,直到可傳送條目 310到它們的請(qǐng)求內(nèi)核100為止。在一個(gè)具體實(shí)施例中,可將遠(yuǎn)程微碼單元接口 610配置成 控制從內(nèi)核100接收請(qǐng)求以及傳送所得到的條目到內(nèi)核100,這包含管理請(qǐng)求隊(duì)列620與傳
12送隊(duì)列630。接口 610也可包含邏輯,該邏輯系配置成調(diào)節(jié)儲(chǔ)存于請(qǐng)求隊(duì)列620的個(gè)別請(qǐng)求 的處理,例如以根據(jù)定序控制或仲裁方案來(lái)選擇特定請(qǐng)求供處理,以及在請(qǐng)求處理期間調(diào) 節(jié)被擷取條目在傳送隊(duì)列630內(nèi)的儲(chǔ)存。在其它具體實(shí)施例中,可用在接口 610外部的邏 輯來(lái)選擇出于請(qǐng)求隊(duì)列620供處理的請(qǐng)求以及儲(chǔ)存結(jié)果于傳送隊(duì)列630內(nèi)。遠(yuǎn)程單元410有許多不同的請(qǐng)求管理配置可供考慮。在一個(gè)具體實(shí)施例中,遠(yuǎn)程 單元410可省略定序機(jī)能。在此具體實(shí)施例中,可將遠(yuǎn)程微碼單元接口 610配置成從對(duì)應(yīng) 至給定內(nèi)核100希望收到之每個(gè)特定進(jìn)入點(diǎn)的給定內(nèi)核100收到請(qǐng)求。因此,例如,可將給 定本地單元400的定序器510配置成決定需要擷取哪個(gè)進(jìn)入點(diǎn)給儲(chǔ)存于遠(yuǎn)程單元410的給 定進(jìn)程以及以類(lèi)似于用以存取控制儲(chǔ)存500的方式來(lái)產(chǎn)生引導(dǎo)至該等進(jìn)入點(diǎn)的請(qǐng)求。盡管省略遠(yuǎn)程單元410的定序機(jī)能可簡(jiǎn)化它的設(shè)計(jì),然而這會(huì)增加請(qǐng)求交通量以 及內(nèi)核100與遠(yuǎn)程單元410之間的處理等待時(shí)間。在其它具體實(shí)施例中,遠(yuǎn)程單元410可 支持不同程度的自主定序(autonomous sequencing)。例如,在一個(gè)具體實(shí)施例中,收到的 微碼請(qǐng)求可指定開(kāi)始進(jìn)入點(diǎn)與結(jié)束進(jìn)入點(diǎn)或一些要擷取的條目。在此一具體實(shí)施例中,可 將遠(yuǎn)程單元410配置成擷取與收到請(qǐng)求相對(duì)應(yīng)的多個(gè)條目310,由開(kāi)始端點(diǎn)開(kāi)始并依順序 繼續(xù)直到結(jié)束進(jìn)入點(diǎn)或已獲致要擷取的條目數(shù)。以此方式擷取到的多個(gè)條目310可按照他 們擷取的順序送回到請(qǐng)求內(nèi)核100。在另一具體實(shí)施例中,遠(yuǎn)程單元410可支持更復(fù)雜的定序機(jī)能。例如,可將遠(yuǎn)程單 元410配置成包含機(jī)能上與定序器510類(lèi)似的定序器。可將此一定序器配置成支持被定序 器510支持之順序控制字段330中的一些或所有數(shù)值。替換地,在一個(gè)具體實(shí)施例中,可將 儲(chǔ)存于遠(yuǎn)程單元410的條目310配置成包含與順序控制字段330不同的附加順序控制字 段,使得該附加順序控制字段可用遠(yuǎn)程單元410內(nèi)的定序機(jī)能處理,而順序控制字段330可 用特定本地單元400內(nèi)的定序器510處理。在此一具體實(shí)施例中,可將定序多條目進(jìn)程的 任務(wù)適當(dāng)?shù)胤峙溆谶h(yuǎn)程單元410與本地單元400。由于許多不同的內(nèi)核100可共享遠(yuǎn)程單元410,因此可將遠(yuǎn)程單元410配置成在選 擇要服務(wù)哪種微碼請(qǐng)求時(shí)可使用各種不同類(lèi)型的仲裁或排程策略。例如,可將遠(yuǎn)程單元410 配置成能藉由首先選擇最老的請(qǐng)求,或者使用任一其它合適的選擇方案,而從請(qǐng)求隊(duì)列620 選出請(qǐng)求來(lái)以循環(huán)方式處理。在一些遠(yuǎn)程單元410支持請(qǐng)求之定序的具體實(shí)施例,來(lái)自特 定內(nèi)核100的單一請(qǐng)求有可能使數(shù)目相當(dāng)多的條目310被擷取,而可能排斥其它內(nèi)核100 的請(qǐng)求。相應(yīng)地,在一些具體實(shí)施例中,在擷取到一些條目310后,可暫停此一請(qǐng)求以允許 服務(wù)不同的請(qǐng)求。替換地,選擇下一個(gè)待服務(wù)請(qǐng)求的公平算法不僅可考慮到最近為內(nèi)核100 服務(wù)之請(qǐng)求的總數(shù),也可考慮到該等請(qǐng)求的持續(xù)時(shí)間。應(yīng)注意,在一些具體實(shí)施例中,可以 多埠方式(multiported fashion)來(lái)配置遠(yuǎn)程控制儲(chǔ)存640,藉此可并行擷取一個(gè)以上的 微碼請(qǐng)求。例如,用多端口記憶格(memory cell)來(lái)實(shí)作遠(yuǎn)程控制儲(chǔ)存640。替換地,記憶 庫(kù)方案(banked scheme)可使用較小的單端口記憶格,藉此可并行擷取以不同記憶庫(kù)650 為目標(biāo)的多個(gè)請(qǐng)求。在一些記憶庫(kù)具體實(shí)施例中,可序列化以同一個(gè)記憶庫(kù)650為目標(biāo)的 多個(gè)請(qǐng)求。以階層方式把微碼實(shí)作分配于多個(gè)本地微碼單元400與共享遠(yuǎn)程微碼單元410有 助于改善處理器200的時(shí)序與耗電量。例如,通常本地微碼單元400的面積可小于遠(yuǎn)程微 碼單元410,如果每個(gè)本地微碼單元400都與遠(yuǎn)程微碼單元410 —樣大,這使得本地微碼單元400可以較高的頻率操作。同樣,通常較小微碼單元所消耗的電量比較大的少。在一些具 體實(shí)施例中,實(shí)作與本地微碼單元400分開(kāi)的遠(yuǎn)程微碼單元410使得遠(yuǎn)程微碼單元410在 不被內(nèi)核100存取時(shí)可關(guān)閉電源(例如,用門(mén)控頻率(gating clock)或去能遠(yuǎn)程單元410 的電源柵(power grid))。這可降低處理器200的總耗電量。圖7圖示在處理器具體實(shí)施例中擷取微碼條目310的方法之一個(gè)具體實(shí)施例,處 理器具體實(shí)施例系包含在個(gè)別內(nèi)核100內(nèi)的本地微碼單元400與共享遠(yuǎn)程微碼單元410。 在圖示具體實(shí)施例中,操作在方塊700開(kāi)始,其中系于給定內(nèi)核100內(nèi)產(chǎn)生微碼進(jìn)入點(diǎn)。在 一個(gè)具體實(shí)施例中,可將DEC 140配置成產(chǎn)生與從IFU 120收到的指令相對(duì)應(yīng)的微碼進(jìn)入 點(diǎn),例如藉由譯碼該指令的各種部分,判斷該指令對(duì)應(yīng)至微碼,以及由譯碼后指令產(chǎn)生對(duì)應(yīng) 的進(jìn)入點(diǎn)。如上述,在有些具體實(shí)施例中,也可用DEC 140或在內(nèi)核100內(nèi)的其它單元來(lái)產(chǎn) 生進(jìn)入點(diǎn),對(duì)于除指令執(zhí)行以外的處理器事件,例如重設(shè)事件、中斷、陷入、例外、錯(cuò)誤、呼叫 非架構(gòu)微碼進(jìn)程(例如,測(cè)試或除錯(cuò)進(jìn)程)的請(qǐng)求、或與微碼執(zhí)行有關(guān)的其它類(lèi)型事件。然后,判斷產(chǎn)生的進(jìn)入點(diǎn)是否對(duì)應(yīng)至位于給定內(nèi)核100內(nèi)之本地微碼單元400的 條目310,或位于遠(yuǎn)程微碼單元410內(nèi)(方塊702)。在一個(gè)具體實(shí)施例中,可分割涵蓋條 目310的微碼地址空間使得一個(gè)或更多地址空間部分對(duì)應(yīng)至在本地微碼單元400內(nèi)的條目 310,而一個(gè)或更多其它不同的地址空間部分對(duì)應(yīng)至在遠(yuǎn)程微碼單元410內(nèi)的條目310。例 如,一個(gè)具體實(shí)施例可支持涵蓋4,096個(gè)條目310的12位微碼地址空間,其中1,024個(gè)可位 于本地微碼單元400內(nèi),而其余的都儲(chǔ)存于遠(yuǎn)程。在此實(shí)施例中,16進(jìn)位進(jìn)入點(diǎn)數(shù)值0x000 至0x3FF可對(duì)應(yīng)至在本地單元400內(nèi)的條目310,而進(jìn)入點(diǎn)數(shù)值0x400至OxFFF可對(duì)應(yīng)至 在遠(yuǎn)程單元410內(nèi)的條目。其它的映像方式也有可能,例如把微碼地址空間中多個(gè)不連續(xù) 部分分配到不同單元的映像方式。此外,在一些具體實(shí)施例中,判斷進(jìn)入點(diǎn)是否是在本地或 者遠(yuǎn)程可取決于除了進(jìn)入點(diǎn)是否落入特定地址范圍以外的示值。例如,藉由與指令之進(jìn)入 點(diǎn)分開(kāi)的DEC 140,可從該指令譯碼得到本地/遠(yuǎn)程示值。在不同的具體實(shí)施例中,可用在 內(nèi)核100內(nèi)的譯碼邏輯(例如,DEC 140)、本地微碼單元400 (例如,定序器510)、或在內(nèi)核 100內(nèi)的其它邏輯來(lái)判斷進(jìn)入點(diǎn)是在本地或者遠(yuǎn)程。如果產(chǎn)生的進(jìn)入點(diǎn)對(duì)應(yīng)至位于本地單元400內(nèi)的條目310,則從本地單元擷取條 目(方塊704)。例如,在收到進(jìn)入點(diǎn)與微碼請(qǐng)求的示值后,可將在本地單元400內(nèi)的定序器 510配置成存取控制儲(chǔ)存500以擷取對(duì)應(yīng)的條目310。如果產(chǎn)生的進(jìn)入點(diǎn)對(duì)應(yīng)至位于遠(yuǎn)程單元410內(nèi)的條目310,則請(qǐng)求可傳遞至遠(yuǎn)程 單元(方塊706)。例如,藉由經(jīng)由系統(tǒng)接口單元210來(lái)傳遞指定遠(yuǎn)程單元410為目的地的 請(qǐng)求,DEC 140或者是本地單元400可發(fā)出請(qǐng)求給遠(yuǎn)程單元410。然后,遠(yuǎn)程單元410可擷 取指定條目310 (方塊708)以及送回該條目到給定內(nèi)核100(方塊710)。例如,遠(yuǎn)程微碼單 元接口 610可從SIU 210接收該請(qǐng)求以及插入請(qǐng)求隊(duì)列620。在被選定時(shí),可處理該請(qǐng)求 以從遠(yuǎn)程控制儲(chǔ)存640擷取指定的條目310,以及可將結(jié)果放入傳送隊(duì)列630。隨后,接口 610可從傳送隊(duì)列630選出條目310以及經(jīng)由SIU 210傳遞到給定內(nèi)核100。在由本地單元400或者是遠(yuǎn)程單元410擷取條目310后,可分派它的操作供執(zhí)行 (方塊712)。例如,DEC 140可分派在條目310內(nèi)指定的操作至其中一個(gè)叢集150內(nèi)的排 程器152,供執(zhí)行單元154后續(xù)執(zhí)行。在一些具體實(shí)施例中,在分派之前,可用例如DEC 140 執(zhí)行進(jìn)一步譯碼在條目310內(nèi)指定的操作。
14
在一些具體實(shí)施例中,在被分派供執(zhí)行之前,可儲(chǔ)存或隊(duì)列被擷取微碼條目310 所指定的操作。例如,DEC 140可實(shí)作允許分派從解碼或微碼擷取行程去耦合之操作的隊(duì) 列,這可降低可能出現(xiàn)于DEC140或其上游的延遲對(duì)于性能的沖擊。在一些具體實(shí)施例中, 從遠(yuǎn)程微碼單元410擷取的微碼條目310所指定的操作在被內(nèi)核100收到后可直接插入此 種操作隊(duì)列或儲(chǔ)存器,否則被擷取條目310不會(huì)被儲(chǔ)存或保留于內(nèi)核100內(nèi)。不過(guò),在其 它具體實(shí)施例中,存放于遠(yuǎn)程的被擷取條目310可留在內(nèi)核100內(nèi)一段時(shí)間,這使得該條目 310可再使用而不用再度由遠(yuǎn)程單元410擷取而需等待。例如,本地微碼單元400可包含可 寫(xiě)入儲(chǔ)存器,其系于收到從遠(yuǎn)程單元410擷取的條目310后可寫(xiě)入該條目310。在一個(gè)具體 實(shí)施例中,該儲(chǔ)存器可包含一個(gè)或數(shù)個(gè)緩沖器或緩存器,而且可儲(chǔ)存該條目310直到被后 續(xù)的被擷取條目310逐出。在另一個(gè)具體實(shí)施例中,本地單元400可包含例如實(shí)作成為控制儲(chǔ)存500之一部 分的微碼緩存。可將該緩存配置成儲(chǔ)存許多被擷取條目310以及可用任一合適配置來(lái)組 織,例如直接映像式、集合關(guān)連式、完全關(guān)連式、等等??筛鶕?jù)任一合適的更換策略來(lái)執(zhí)行緩 存逐出,例如使用頻率最低或最近使用最低的策略。在此具體實(shí)施例的一個(gè)變體中,被擷取 條目310可儲(chǔ)存于指令緩存110內(nèi)而不是在專(zhuān)屬微碼緩存內(nèi)。在可緩存儲(chǔ)存于遠(yuǎn)程或儲(chǔ)存 于內(nèi)核100內(nèi)之被擷取條目310的具體實(shí)施例中,對(duì)于儲(chǔ)存于遠(yuǎn)程的給定條目310,可在產(chǎn) 生給定條目310的請(qǐng)求之前,或與其并行地,檢查該緩存或其它本地儲(chǔ)存器。如果想要的條 目310已在本地緩存或其它本地儲(chǔ)存器可取得,則可以不產(chǎn)生或取消(如果未完成的話(huà)) 遠(yuǎn)程單元410的請(qǐng)求??蓪⒃撐⒋a緩存配置成提供動(dòng)態(tài)微碼儲(chǔ)存,它對(duì)內(nèi)核100而言是在 本地而且是基于在給定內(nèi)核100上執(zhí)行的特定指令流來(lái)分配。由于遠(yuǎn)程微碼單元410的等 待時(shí)間通常大于給定本地微碼單元400的等待時(shí)間,因此該微碼緩存可減緩不常用指令順 序的性能問(wèn)題,當(dāng)呈順序出現(xiàn)時(shí)可能需要頻繁地存取遠(yuǎn)程微碼單元410。應(yīng)注意,盡管在類(lèi)似于圖4的具體實(shí)施例中,多個(gè)內(nèi)核100可共享單一遠(yuǎn)程微碼單 元410,然而在其它具體實(shí)施例中可復(fù)制遠(yuǎn)程微碼單元410。例如,內(nèi)核100中數(shù)目少于所 有的幾個(gè)可共享遠(yuǎn)程微碼單元410的數(shù)個(gè)實(shí)例。替換地,遠(yuǎn)程微碼單元410的完整副本可 內(nèi)含于每個(gè)內(nèi)核100。在該等具體實(shí)施例中,復(fù)制遠(yuǎn)程微碼單元410所要求的增加之面積可 能會(huì)被減少的路由及/或時(shí)序復(fù)雜度抵消。例如,復(fù)制遠(yuǎn)程微碼單元410可減少內(nèi)核100 至遠(yuǎn)程微碼的平均距離,而可相應(yīng)地減少遠(yuǎn)程微碼存取等待時(shí)間。在許多處理器實(shí)作中,微碼在處理器實(shí)作期間常常是靜態(tài)不變的而可實(shí)作于只讀 控制儲(chǔ)存內(nèi),例如最小化控制儲(chǔ)存器要求的面積。不過(guò),在一些具體實(shí)施例中,有用的方式 是提供一種可修改微碼的技術(shù),例如,以便修正缺陷或增加機(jī)能。如圖6所示,在一些具體 實(shí)施例中,遠(yuǎn)程微碼單元410可包含配置成提供可寫(xiě)入控制儲(chǔ)存的附加特征??蓪⒁曅枰奈⒋a修補(bǔ)RAM 660配置成提供設(shè)施讓特定進(jìn)入點(diǎn)可從微碼ROM記憶 庫(kù)650映像到在修補(bǔ)RAM 660內(nèi)的對(duì)應(yīng)可寫(xiě)入條目310。在一個(gè)具體實(shí)施例中,修補(bǔ)RAM 660可包含配置成執(zhí)行許多條目310的可寫(xiě)入儲(chǔ)存資源。在一些具體實(shí)施例中,修補(bǔ)RAM 660可包含與一個(gè)ROM記憶庫(kù)650相同數(shù)目的條目310,而在其它具體實(shí)施例中,可提供更 多或更少個(gè)條目。修補(bǔ)RAM 660也可為每個(gè)條目310提供對(duì)應(yīng)至可指派進(jìn)入點(diǎn)的資源。在 遠(yuǎn)程控制儲(chǔ)存640包含各個(gè)條目數(shù)與修補(bǔ)RAM 660相同的許多ROM記憶庫(kù)650的具體實(shí)施 例中,修補(bǔ)RAM 660的給定條目310可映像到ROM記憶庫(kù)650中之任一個(gè)的對(duì)應(yīng)條目310。在修補(bǔ)RAM 660內(nèi)的位之附加集可指定哪一個(gè)記憶庫(kù)在任何給定時(shí)間對(duì)應(yīng)至給定修補(bǔ)RAM 條目。例如,具體實(shí)施例可包含4個(gè)ROM記憶庫(kù)650與一個(gè)修補(bǔ)RAM記憶庫(kù)660,各有1000 個(gè)條目。在修補(bǔ)RAM 660內(nèi)的附加位對(duì)于其中的每個(gè)給定條目310可指定4個(gè)ROM記憶庫(kù) 中之任一個(gè)是否映像到給定條目。在其它具體實(shí)施例中,修補(bǔ)RAM 660的每個(gè)條目可具有 可編程的對(duì)應(yīng)進(jìn)入點(diǎn)。為了修補(bǔ)在一個(gè)記憶庫(kù)650內(nèi)的給定條目310,在一個(gè)具體實(shí)施例中,該給定條目 的想要修補(bǔ)值,以及表示哪個(gè)記憶庫(kù)650要修補(bǔ)或者是特定進(jìn)入點(diǎn)數(shù)值要與該修補(bǔ)RAM條 目關(guān)連的信息可儲(chǔ)存于修補(bǔ)RAM 660的對(duì)應(yīng)條目?jī)?nèi)。隨后,當(dāng)遠(yuǎn)程控制儲(chǔ)存640收到存取 特定進(jìn)入點(diǎn)的請(qǐng)求時(shí),可檢查修補(bǔ)RAM 660以判定被請(qǐng)求進(jìn)入點(diǎn)是否已修補(bǔ)。例如,可將遠(yuǎn) 程控制儲(chǔ)存640配置成判斷該特定進(jìn)入點(diǎn)映像到特定記憶庫(kù)650,然后檢查用于在修補(bǔ)RAM 660內(nèi)之對(duì)應(yīng)條目310的控制位,以判斷是否應(yīng)該選擇儲(chǔ)存于修補(bǔ)RAM 660內(nèi)的條目310而 不是儲(chǔ)存于特定記憶庫(kù)650內(nèi)的條目310。替換地,可比較該特定進(jìn)入點(diǎn)與以關(guān)連方式編程 于修補(bǔ)RAM 660內(nèi)的進(jìn)入點(diǎn)以判斷該特定進(jìn)入點(diǎn)是否命中或匹配修補(bǔ)RAM 660的條目。應(yīng) 注意,在修補(bǔ)RAM 660已顯示為遠(yuǎn)程微碼單元410的視需要特征時(shí),在一些具體實(shí)施例中, 本地微碼單元400也可以剛剛所描述的類(lèi)似方式支持在控制儲(chǔ)存500內(nèi)的修補(bǔ)RAM特征。修補(bǔ)RAM 660可容易提供修補(bǔ)個(gè)別微碼進(jìn)入點(diǎn)。不過(guò),在一些具體實(shí)施例中,最好 再寫(xiě)涵蓋許多進(jìn)入點(diǎn)的整個(gè)進(jìn)程,或用新進(jìn)程擴(kuò)充現(xiàn)有的微碼。相應(yīng)地,在一個(gè)具體實(shí)施 例中,遠(yuǎn)程微碼單元410可包含視需要的動(dòng)態(tài)微碼RAM數(shù)組670。一般而言,微碼RAM數(shù)組 670可根據(jù)任一合適可寫(xiě)入或非揮發(fā)性?xún)?chǔ)存數(shù)組技術(shù)來(lái)實(shí)作以及可被配置成除了儲(chǔ)存于遠(yuǎn) 程控制儲(chǔ)存640及本地控制儲(chǔ)存500內(nèi)的以外,還可儲(chǔ)存許多條目310。在一個(gè)具體實(shí)施例 中,微碼地址空間中與微碼RAM數(shù)組670之條目310關(guān)連的部分(或數(shù)個(gè))可不同于微碼 地址空間與在遠(yuǎn)程控制儲(chǔ)存640及本地控制儲(chǔ)存500內(nèi)之條目310關(guān)連的部分,藉此可根 據(jù)被請(qǐng)求進(jìn)入點(diǎn)來(lái)引導(dǎo)被遠(yuǎn)程微碼單元410收到的微碼存取請(qǐng)求至遠(yuǎn)程控制儲(chǔ)存640或者 是微碼RAM數(shù)組670。在其它具體實(shí)施例中,可將在微碼RAM數(shù)組670內(nèi)的一些條目310配置成遮蔽也 映像至遠(yuǎn)程控制儲(chǔ)存640的進(jìn)入點(diǎn)或使其無(wú)效。例如,微碼RAM數(shù)組670可包含可編程進(jìn)入 點(diǎn)控制位或緩存器,其系與在上文關(guān)于修補(bǔ)RAM 660之說(shuō)明類(lèi)似。在此類(lèi)具體實(shí)施例中,可 檢查映像至遠(yuǎn)程微碼單元410的特定進(jìn)入點(diǎn)以獲悉對(duì)應(yīng)的條目310是否已定義于微碼RAM 數(shù)組670內(nèi)。如果是,則可忽視在遠(yuǎn)程控制儲(chǔ)存640內(nèi)的任何對(duì)應(yīng)條目310。在支持某種 程度之定序的一些遠(yuǎn)程微碼單元410之具體實(shí)施例中,一旦進(jìn)入點(diǎn)在開(kāi)始就已經(jīng)映像至微 碼RAM數(shù)組670 (例如,在多條目微碼進(jìn)程開(kāi)始時(shí))后,則后續(xù)的順序參考可留在分配至微 碼RAM數(shù)組670的部分微碼地址空間內(nèi)。這允許進(jìn)程的其余部分可由RAM數(shù)組670執(zhí)行而 不必進(jìn)一步參考遠(yuǎn)程控制儲(chǔ)存640。應(yīng)注意,盡管上述具體實(shí)施例是用包含數(shù)個(gè)本地微碼單元400與遠(yuǎn)程微碼單元 410的兩階階層來(lái)說(shuō)明,然而在其它具體實(shí)施例中,可用有附加層次的階層將微碼分散于處 理器200內(nèi)或在系統(tǒng)內(nèi)之處理器200的多個(gè)實(shí)例。在一些具體實(shí)施例中,計(jì)算機(jī)系統(tǒng)內(nèi)可實(shí)作處理器200以及其它的組件。圖8圖標(biāo) 該系統(tǒng)之一個(gè)具體實(shí)施例。在圖標(biāo)具體實(shí)施例中,計(jì)算機(jī)系統(tǒng)800包含數(shù)個(gè)處理節(jié)點(diǎn)812A、 812B、812C及812D。各處理節(jié)點(diǎn)經(jīng)由包含于各個(gè)別處理節(jié)點(diǎn)812A至812D內(nèi)的存儲(chǔ)器控制器816A至816D而耦合至個(gè)別存儲(chǔ)器814A至814D。另外,處理節(jié)點(diǎn)812A至812D包含用于 處理節(jié)點(diǎn)812A至812D之間通訊的接口邏輯。例如,處理節(jié)點(diǎn)812A包含接口邏輯818A用來(lái) 與處理節(jié)點(diǎn)812B通訊,接口邏輯818B用來(lái)與處理節(jié)點(diǎn)812C通訊,以及第三接口邏輯818C 用來(lái)與另一個(gè)處理節(jié)點(diǎn)(未圖標(biāo))通訊。同樣,處理節(jié)點(diǎn)812B包含接口邏輯818D、818E及 818F ;處理節(jié)點(diǎn)812C包含接口邏輯818G、818H及8181 ;以及,處理節(jié)點(diǎn)812D包含接口邏輯 818J、818K及818L。處理節(jié)點(diǎn)812D系經(jīng)耦合成經(jīng)由接口邏輯818L可與多個(gè)輸入/輸出裝 置(例如,呈菊鏈配置的裝置820A至820B)通訊。其它的處理節(jié)點(diǎn)可以類(lèi)似的方式與其它 的I/O裝置通訊??蓪⑻幚砉?jié)點(diǎn)812A至812D配置成執(zhí)行基于封包之鏈路(packet-based link)供 處理節(jié)點(diǎn)間相互通訊用。在圖示具體實(shí)施例中,該鏈路系經(jīng)實(shí)作成為單向線(xiàn)路的集合(例 如,線(xiàn)路824A用來(lái)從處理節(jié)點(diǎn)812A傳送封包至處理節(jié)點(diǎn)812B,而線(xiàn)路824B用來(lái)從處理節(jié) 點(diǎn)812B傳送封包至處理節(jié)點(diǎn)812A)。其它的線(xiàn)路824C至824H集合用來(lái)在如圖8所示的 其它處理節(jié)點(diǎn)之間傳送封包。一般而言,每條線(xiàn)路集824可包含一個(gè)或更多數(shù)據(jù)線(xiàn)、與該等 數(shù)據(jù)線(xiàn)相對(duì)應(yīng)的一個(gè)或更多頻率線(xiàn)、以及表示正被傳遞封包之類(lèi)型的一個(gè)或更多控制線(xiàn)。 可以緩存連貫方式操作該鏈路用于在處理節(jié)點(diǎn)之間的通訊,或以不連貫方式用于在處理節(jié) 點(diǎn)與I/O裝置(或習(xí)知構(gòu)造之I/O總線(xiàn)(例如,周邊組件互連(PCI)總線(xiàn)或工業(yè)標(biāo)準(zhǔn)架構(gòu) (ISA)總線(xiàn))的總線(xiàn)橋接器)之間的通訊。此外,可以不連貫方式使用如圖標(biāo)在I/O裝置之 間的菊鏈接構(gòu)來(lái)操作該鏈路。應(yīng)注意,要從一個(gè)處理節(jié)點(diǎn)傳送到另一個(gè)處理節(jié)點(diǎn)的封包可 通過(guò)一個(gè)或更多個(gè)中間節(jié)點(diǎn)。例如,由處理節(jié)點(diǎn)812A傳送到處理節(jié)點(diǎn)812D的封包可通過(guò) 處理節(jié)點(diǎn)812B或者是處理節(jié)點(diǎn)812C,如圖8所示。可使用任何一種合適的路由算法。計(jì)算 機(jī)系統(tǒng)800的其它具體實(shí)施例可包含比圖8所示具體實(shí)施例所示更多或更少個(gè)處理節(jié)點(diǎn)。 此外,可用使用適當(dāng)接口協(xié)議的雙向總線(xiàn)來(lái)實(shí)作計(jì)算機(jī)系統(tǒng)800的其它具體實(shí)施例,而不 是使用上述基于封包之協(xié)議的單向總線(xiàn)。一般而言,該等封包在節(jié)點(diǎn)之間的線(xiàn)路824上是以一個(gè)或更多位時(shí)間(bit time) 傳送。A位時(shí)間可為對(duì)應(yīng)頻率在線(xiàn)的時(shí)鐘訊號(hào)之上升或下降邊緣。該等封包可包含命令封 包用于初始化異動(dòng)、探查封包用于維持緩存連貫性,以及用于回應(yīng)探查及命令的回應(yīng)封包。除了存儲(chǔ)器控制器與接口邏輯以外,處理節(jié)點(diǎn)812A至812D可包含一個(gè)或更多處 理器。大體上,處理節(jié)點(diǎn)包括至少一個(gè)處理器而且可視需要包含存儲(chǔ)器控制器用于按需要 與存儲(chǔ)器及其它邏輯通訊。更特別的是,每個(gè)處理節(jié)點(diǎn)812A至812D可包括如圖2所示之 處理器200的一個(gè)或更多副本(例如,包含如圖1與圖3至圖7所示的各種結(jié)構(gòu)及操作細(xì) 節(jié))。一個(gè)或更多處理器可包括在處理節(jié)點(diǎn)之中或形成該處理節(jié)點(diǎn)的芯片多重處理(CMP) 或芯片多執(zhí)行緒(CMT)集成電路,或者該處理節(jié)點(diǎn)可具有任何其它想要的內(nèi)部結(jié)構(gòu)。在一 些具體實(shí)施例中,處理節(jié)點(diǎn)812的存儲(chǔ)器控制器及/或周邊接口邏輯可直接整合于處理器 200內(nèi),如圖2所示。例如,存儲(chǔ)器控制器816的實(shí)例可對(duì)應(yīng)至在處理器200內(nèi)的存儲(chǔ)器控 制器/周邊接口 230。存儲(chǔ)器814A至814D可包括任何合適的存儲(chǔ)器裝置。例如,存儲(chǔ)器814A至814D 可包括一個(gè)或更多 RAMBUS DRAM (RDRAM)、同步 DRAM (SDRAM)、DDR SDRAM、靜態(tài) RAM、等等。計(jì) 算機(jī)系統(tǒng)800的地址空間可分配于存儲(chǔ)器814A至814D。每個(gè)處理節(jié)點(diǎn)812A至812D可包 含存儲(chǔ)器映像表用來(lái)判斷哪個(gè)地址映像到哪個(gè)存儲(chǔ)器814A至814D,以及因而特定地址的存儲(chǔ)器請(qǐng)求應(yīng)該路由到哪個(gè)處理節(jié)點(diǎn)812A至812D。在一個(gè)具體實(shí)施例中,用于在計(jì)算機(jī) 系統(tǒng)800內(nèi)之地址的連貫點(diǎn)是存儲(chǔ)器控制器816A至816D,該等存儲(chǔ)器控制器816A至816D 系與儲(chǔ)存對(duì)應(yīng)至該地址之字節(jié)的存儲(chǔ)器耦合。換言之,存儲(chǔ)器控制器816A至816D可響應(yīng) 以確保存取對(duì)應(yīng)存儲(chǔ)器814A至814D的每個(gè)存儲(chǔ)器是以緩存連貫方式出現(xiàn)。存儲(chǔ)器控制器 816A至816D可包括用于建立至存儲(chǔ)器814A至814D之接口的控制電路。另外,存儲(chǔ)器控制 器816A至816D可包含用于隊(duì)列存儲(chǔ)器請(qǐng)求的請(qǐng)求隊(duì)列。一般而言,接口邏輯818A至818L可包括用于從鏈路接收封包以及用于緩沖要在 鏈路上傳送之封包的各種緩沖器。如上述,在一些具體實(shí)施例中,接口邏輯818可整合于處 理器200內(nèi),例如于存儲(chǔ)器控制器/周邊接口 230內(nèi)或于與整合存儲(chǔ)器控制器不同的個(gè)別 接口內(nèi)。計(jì)算機(jī)系統(tǒng)800可使用任一合適的流量控制機(jī)構(gòu)用于傳送封包。例如,在一個(gè)具 體實(shí)施例中,每個(gè)接口邏輯818都儲(chǔ)存每種緩沖器在位于鏈路另一端(其系連接該接口邏 輯)之接收器內(nèi)的計(jì)數(shù)。該接口邏輯不會(huì)傳輸封包,除非接收接口邏輯有空間緩沖器儲(chǔ)存 該封包。當(dāng)接收緩沖器因向前路由封包而空出時(shí),接收接口邏輯會(huì)傳送訊息給發(fā)送接口邏 輯以表示該緩沖器已經(jīng)空出。此一機(jī)構(gòu)可稱(chēng)作“基于票券”的系統(tǒng)。I/O裝置820A至820B可為任一合適的I/O裝置。例如,I/O裝置820A至820B可 包含裝置用于與可耦合該裝置的另一個(gè)計(jì)算機(jī)系統(tǒng)通訊(例如,用有線(xiàn)或無(wú)線(xiàn)網(wǎng)絡(luò)適配卡 或調(diào)制解調(diào)器)。此外,I/O裝置820A至820B可包含視訊加速器、聲卡、硬盤(pán)或軟盤(pán)驅(qū)動(dòng)器 或驅(qū)動(dòng)控制器、SCSI (小型計(jì)算機(jī)系統(tǒng)接口)配接器以及電話(huà)卡、聲音卡、以及各種數(shù)據(jù)擷 取卡(例如,GPIB或現(xiàn)場(chǎng)總線(xiàn)適配卡。此外,實(shí)作成為電路卡的任何I/O裝置也可實(shí)作成為 系統(tǒng)800之主電路板上的電路、于處理器200內(nèi)及/或于在處理節(jié)點(diǎn)上執(zhí)行的軟件中。應(yīng) 注意,術(shù)語(yǔ)“I/O裝置”與術(shù)語(yǔ)“周邊裝置”在本文中意指同義的。此外,可將一個(gè)或更多處理器200實(shí)作于更傳統(tǒng)個(gè)人計(jì)算機(jī)(PC)結(jié)構(gòu)(其系包含 該等處理器至一個(gè)或更多I/O互連及/或存儲(chǔ)器之橋接器的一個(gè)或更多界面)。例如,可將 處理器200配置成用來(lái)實(shí)作于北橋-南橋階層內(nèi)。在此具體實(shí)施例中,可將北橋(其系可 耦合或整合于處理器200內(nèi))配置成對(duì)于系統(tǒng)存儲(chǔ)器、圖形裝置接口及/或其它系統(tǒng)裝置 提供高頻寬連接性,而南橋?qū)τ谄渌苓呇b置可經(jīng)由各種類(lèi)型周邊總線(xiàn)(例如,通用串行 總線(xiàn)(USB)、PCI、ISA、等等)來(lái)提供頻寬較低的連接性。盡管已相當(dāng)詳細(xì)地描述以上的具體實(shí)施例,然而在熟諳此藝者一旦完全明白以上 的揭示內(nèi)容后仍可做出許多變體與修改。下列申請(qǐng)專(zhuān)利范圍將被解釋成可涵蓋所有此類(lèi)的 變體及修改。產(chǎn)業(yè)利用性本發(fā)明一般可應(yīng)用于微處理器。
權(quán)利要求
一種處理器,包括多個(gè)處理器內(nèi)核,各處理器內(nèi)核配置成獨(dú)立地執(zhí)行根據(jù)程序員可見(jiàn)的指令集架構(gòu)(ISA)定義的指令,其中該多個(gè)處理器內(nèi)核各自包含配置成儲(chǔ)存微碼條目的個(gè)別本地微碼單元;以及遠(yuǎn)程微碼單元,其可被各該處理器內(nèi)核存取并且包含配置成儲(chǔ)存微碼條目的遠(yuǎn)程微碼儲(chǔ)存;其中,任何一個(gè)給定的該處理器內(nèi)核進(jìn)一步被配置成產(chǎn)生與特定微碼條目相對(duì)應(yīng)的給定的微碼進(jìn)入點(diǎn),該特定微碼條目包含可用該給定的處理器內(nèi)核執(zhí)行的一個(gè)或多個(gè)操作;判斷該特定微碼條目是否儲(chǔ)存于該給定的處理器內(nèi)核中的該個(gè)別本地微碼單元內(nèi);以及響應(yīng)于該特定微碼條目未儲(chǔ)存于該個(gè)別本地微碼單元內(nèi)的判斷,傳遞該特定微碼條目的請(qǐng)求至該遠(yuǎn)程微碼單元。
2.如權(quán)利要求1所述的處理器,其中,為了判斷該特定微碼條目是否儲(chǔ)存于該給定的 處理器內(nèi)核的該個(gè)別本地微碼單元內(nèi),該給定的處理器內(nèi)核進(jìn)一步配置成判斷該給定的微 碼進(jìn)入點(diǎn)是否位于與該個(gè)別本地微碼單元相對(duì)應(yīng)的微碼進(jìn)入點(diǎn)地址空間的一部分中。
3.如前述權(quán)利要求中任何一項(xiàng)所述的處理器,其中,響應(yīng)于收到該請(qǐng)求,該遠(yuǎn)程微碼 單元進(jìn)一步配置成從該遠(yuǎn)程微碼儲(chǔ)存擷取該特定微碼條目并且將該特定微碼條目送回至 該給定的處理器內(nèi)核,其中,該特定微碼條目包含順序控制字段,該順序控制字段配置成表 示在該特定微碼條目之后是否有另一個(gè)微碼條目要擷取,以及其中,該遠(yuǎn)程微碼單元進(jìn)一 步配置成取決于該順序控制字段來(lái)從該遠(yuǎn)程微碼儲(chǔ)存擷取該另一微碼條目并且將該另一微碼條目送回至該給定的處理器內(nèi)核,而該給定的處理器內(nèi)核不用個(gè)別請(qǐng)求該另一微碼條目。
4.如前述權(quán)利要求中任何一項(xiàng)所述的處理器,其中,該處理器內(nèi)核更各自包含配置成 儲(chǔ)存該指令中的數(shù)個(gè)的個(gè)別指令緩存,其中響應(yīng)于收到在該請(qǐng)求之后的該特定微碼條目, 該給定的處理器內(nèi)核進(jìn)一步被配置成儲(chǔ)存該特定微碼條目于該個(gè)別指令緩存內(nèi)。
5.如前述權(quán)利要求中任何一項(xiàng)所述的處理器,其中,至少一部分該遠(yuǎn)程微碼儲(chǔ)存包含 可寫(xiě)入存儲(chǔ)器。
6.如前述權(quán)利要求中任何一項(xiàng)所述的處理器,其中,與儲(chǔ)存于該本地微碼單元內(nèi)的微 碼條目相對(duì)應(yīng)的微碼進(jìn)程都能滿(mǎn)足性能敏感性門(mén)坎要求,同時(shí)至少一些與儲(chǔ)存于該遠(yuǎn)程微 碼單元內(nèi)的微碼條目相對(duì)應(yīng)的微碼進(jìn)程各自都不滿(mǎn)足該性能敏感性門(mén)坎要求。
7.如權(quán)利要求6所述的處理器,其中,該性能敏感性門(mén)坎要求取決于微碼進(jìn)程執(zhí)行的頻率。
8.如權(quán)利要求6所述的處理器,其中,該性能敏感性門(mén)坎要求取決于微碼進(jìn)程執(zhí)行的 等待時(shí)間。
9.一種系統(tǒng),包括 系統(tǒng)存儲(chǔ)器;以及如前述權(quán)利要求中任何一項(xiàng)所述的處理器,其中,該處理器與該系統(tǒng)存儲(chǔ)器耦合。
10.一種方法,包含多個(gè)處理器內(nèi)核中的給定的一個(gè)處理器內(nèi)核產(chǎn)生與特定微碼條目相對(duì)應(yīng)的給定的微碼進(jìn)入點(diǎn),該特定微碼條目包含可用該給定的處理器內(nèi)核執(zhí)行的一個(gè)或更多操作,其中, 該多個(gè)處理器內(nèi)核的每個(gè)配置成獨(dú)立地執(zhí)行根據(jù)程序員可見(jiàn)的指令集架構(gòu)(ISA)定義的 指令,以及其中,該多個(gè)處理器內(nèi)核各自包含配置成儲(chǔ)存數(shù)個(gè)微碼條目的個(gè)別本地微碼單 元;該給定的處理器內(nèi)核判斷該特定微碼條目是否儲(chǔ)存于該給定的處理器內(nèi)核中的該個(gè) 別本地微碼單元內(nèi);以及響應(yīng)于該特定微碼條目未儲(chǔ)存于該個(gè)別本地微碼單元內(nèi)的判斷,該給定的處理器內(nèi)核 傳遞該特定微碼條目的請(qǐng)求至遠(yuǎn)程微碼單元,其中,該遠(yuǎn)程微碼單元可被每個(gè)該處理器內(nèi) 核存取并且包含配置成儲(chǔ)存數(shù)個(gè)微碼條目的遠(yuǎn)程微碼儲(chǔ)存。
全文摘要
一種具有階層式微碼儲(chǔ)存的多內(nèi)核處理器。處理器可包含多處理器內(nèi)核,各個(gè)處理器內(nèi)核系配置成獨(dú)立執(zhí)行根據(jù)程序員可見(jiàn)的指令集架構(gòu)(ISA)定義的指令。各內(nèi)核可包含配置成儲(chǔ)存數(shù)個(gè)微碼條目的個(gè)別本地微碼單元。該處理器也可包含可被每個(gè)該等處理器內(nèi)核存取的遠(yuǎn)程微碼單元。任何給定的其中一個(gè)該等處理器內(nèi)核可被配置成產(chǎn)生給定微碼進(jìn)入點(diǎn),該給定微碼進(jìn)入點(diǎn)系對(duì)應(yīng)至包含可用該給定處理器內(nèi)核執(zhí)行之一個(gè)或更多操作的特定微碼條目,以及判斷該特定微碼條目是否儲(chǔ)存于該給定內(nèi)核之該個(gè)別本地微碼單元內(nèi)。響應(yīng)于該特定微碼條目未儲(chǔ)存于該個(gè)別本地微碼單元內(nèi)的判斷,該給定內(nèi)核可傳遞該特定微碼條目的請(qǐng)求至該遠(yuǎn)程微碼單元。
文檔編號(hào)G06F9/22GK101855614SQ200880102847
公開(kāi)日2010年10月6日 申請(qǐng)日期2008年7月18日 優(yōu)先權(quán)日2007年7月18日
發(fā)明者B·R·霍洛韋, G·W·沈, M·G·巴特勒, S·利 申請(qǐng)人:先進(jìn)微裝置公司