專利名稱:控制指令吞吐量的系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及處理器,具體涉及控制指令吞吐量的系統(tǒng)及方法。
背景技術(shù):
現(xiàn)代處理器包括大量執(zhí)行資源來支持多個指令的并發(fā)處理。處理器通常包括一個或多個整數(shù)、浮點、分支和存儲執(zhí)行部件以便分別實現(xiàn)整數(shù)、浮點、分支和加載/存儲指令。另外,整數(shù)和浮點處理部件通常包括寄存器文件以便使數(shù)據(jù)保持為比較接近處理器核心。為處理器提供大量執(zhí)行資源的一個缺點在于,要求大量功率來運(yùn)行它們。但是,極少程序在大的時間間隔中需要全范圍的處理器執(zhí)行資源。使處理器保持在最大可允許溫度及關(guān)聯(lián)的最大功耗的冷卻系統(tǒng)被設(shè)計成冷卻處理器到其最大指令吞吐能力。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個方面,提供一種用于控制處理器的指令吞吐量的系統(tǒng),所述系統(tǒng)包括比較器,確定每個時鐘周期的實際指令吞吐量與每個時鐘周期的目標(biāo)指令吞吐量設(shè)定的差值;以及調(diào)速控制器,對多個差值求和以確定多個時鐘周期上的平均差值,以及根據(jù)平均差值來調(diào)整每個時鐘周期的實際指令吞吐量。
在一個實施例中,每個時鐘周期的實際指令吞吐量是在給定時鐘周期啟動的實際指令的數(shù)量。
在一個實施例中,所述系統(tǒng)還包括指令計算器,它把在給定時鐘周期的有效啟動信號的數(shù)量加起來,從而確定在給定時鐘周期啟動的實際指令的數(shù)量。
在一個實施例中,所述調(diào)速控制器包括積分器,對多個差值求和以提供平均差值;以及階躍載荷管理器,根據(jù)至少一個平均差值對處理器產(chǎn)生調(diào)速控制信號,以便保持、提高和降低每個時鐘周期的實際指令吞吐量其中之一。
在一個實施例中,所述處理器包括具有關(guān)聯(lián)執(zhí)行部件的多個流水線,所述處理器響應(yīng)調(diào)速控制信號以遞增方式為至少一個關(guān)聯(lián)執(zhí)行部件控制每個時鐘周期的平均指令。
在一個實施例中,所述處理器包括與至少一個加載執(zhí)行部件關(guān)聯(lián)的第一啟動控制器以及與至少一個浮點處理部件關(guān)聯(lián)的第二啟動控制器,調(diào)速控制器產(chǎn)生調(diào)速控制信號,它調(diào)整第一啟動控制器和第二啟動控制器中的至少一個在多個時鐘周期中啟動的指令的數(shù)量。
在一個實施例中,第一啟動控制器和第二啟動控制器中的至少一個包括與取、調(diào)度、發(fā)出和傳送指令通過關(guān)聯(lián)流水線其中至少一項操作關(guān)聯(lián)、用以根據(jù)調(diào)速控制器所提供的調(diào)速控制信號來控制每個周期的實際指令吞吐量的控制器。
在一個實施例中,所述處理器包括與第一浮點處理部件和第二浮點處理部件關(guān)聯(lián)的啟動控制器,調(diào)速控制器產(chǎn)生調(diào)速控制信號,它調(diào)整所述啟動控制器在多個時鐘周期對第一浮點處理部件和第二浮點處理部件啟動的指令的數(shù)量。
在一個實施例中,處理器包括至少一個退出控制器,它控制與至少一個執(zhí)行部件關(guān)聯(lián)的指令的退出,其中,退出控制器通過控制與至少一個執(zhí)行部件關(guān)聯(lián)的指令的退出來調(diào)整多個時鐘周期中的每個時鐘周期的平均實際指令吞吐量。
在一個實施例中,所述系統(tǒng)還包括指令計算器,它把給定時鐘周期中的有效退出信號的數(shù)量相加,從而確定給定時鐘周期中退出的實際指令。
圖1說明用于控制指令吞吐量的系統(tǒng)的一個實施例的框圖。
圖2說明功率分布圖,它根據(jù)每個時鐘周期的指令來說明功耗。
圖3說明用于控制指令吞吐量的系統(tǒng)的另一個實施例的框圖。
圖4說明處理器的指令吞吐量部分的一個實施例。
圖5說明用于控制指令吞吐量的方法的一個實施例。
圖6說明用于控制指令吞吐量的方法的另一實施例。
具體實施例方式
本公開一般涉及用于控制指令吞吐量的系統(tǒng)及方法。所述系統(tǒng)及方法為多個時鐘周期確定每個時鐘周期的目標(biāo)指令設(shè)定與每個時鐘周期的實際指令之間的差值。多個差值用來提供用于調(diào)整指令吞吐量的平均差值。如本文所使用的“指令”表示諸如加載和存儲操作之類的基本處理器命令以及諸如浮點運(yùn)算之類的其它操作。每個時鐘周期的指令或者每個周期的指令表示在給定處理器時鐘周期中啟動或退出的指令的數(shù)量。
圖1說明用于控制指令吞吐量的系統(tǒng)10。該系統(tǒng)包括比較器12、調(diào)速控制器14和處理器16。比較器12可用于產(chǎn)生每個時鐘周期的實際指令吞吐量(實際INST/CYC)與每個時鐘周期的目標(biāo)指令吞吐量設(shè)定(目標(biāo)INST/CYC)之間的差值。每個時鐘周期的目標(biāo)指令吞吐量可根據(jù)特定應(yīng)用預(yù)先確定。例如,處理器16可能每個時鐘周期能夠執(zhí)行四個指令。因此,系統(tǒng)冷卻能力將設(shè)計成根據(jù)功耗以最大可允許溫度將處理器16保持為每個時鐘周期四個指令的平均值。但是,在許多應(yīng)用中,每個時鐘周期的指令的平均數(shù)量小于處理器16的每個時鐘周期的可允許指令容量。
系統(tǒng)10規(guī)定每個時鐘周期的目標(biāo)指令吞吐量的設(shè)定(例如,每個周期1、2或3平均指令數(shù)),并且根據(jù)每個時鐘周期的目標(biāo)吞吐量設(shè)定來控制每個時鐘周期的實際指令吞吐量。這允許根據(jù)特定程序應(yīng)用與每個時鐘周期的目標(biāo)指令吞吐量設(shè)定關(guān)聯(lián)的可變平均目標(biāo)功率,從而消除根據(jù)最壞情況功耗來設(shè)計冷卻系統(tǒng)(例如風(fēng)扇、隔離板、散熱片)的需要。因此,與針對處理器的最壞情況功耗設(shè)計的冷卻系統(tǒng)相對比,可使用降低成本的冷卻系統(tǒng),或者處理器能夠工作在更低的平均溫度而改進(jìn)可靠性。
比較器12為調(diào)速控制器14在每個時鐘周期提供不同的值。調(diào)速控制器14對多個差值求和,以便確定多個時鐘周期上的平均差值。平均差值對應(yīng)于與每個時鐘周期的實際指令吞吐量關(guān)聯(lián)的實際功率和與每個時鐘周期的目標(biāo)指令吞吐量設(shè)定關(guān)聯(lián)的目標(biāo)功率之間的平均功率差異。調(diào)速控制器14定期向處理器16提供調(diào)速控制信號,用于根據(jù)平均差值來調(diào)整每個時鐘周期的實際指令吞吐量。根據(jù)平均差值來調(diào)整指令吞吐量的使用允許處理器在短時間周期以全指令能力工作。
處理器16可通過調(diào)整在多個時鐘周期被啟動通過與處理器16關(guān)聯(lián)的一個或多個執(zhí)行流水線的指令的平均數(shù)量來調(diào)整實際指令周期吞吐量。一個或多個執(zhí)行流水線可包括一個或多個加載執(zhí)行部件和一個或多個浮點處理執(zhí)行部件。處理器16可控制通過一個或多個執(zhí)行流水線的指令的取、發(fā)出、調(diào)度和/或傳送。例如,處理器16可能每八個時鐘周期能夠?qū)σ粋€或多個執(zhí)行部件啟動(例如取、發(fā)出、調(diào)度、傳送)八個指令。但是,處理器16可把這種啟動調(diào)整到每八個時鐘周期七個指令,以便減少每個時鐘周期的實際平均指令。如果每個時鐘周期的預(yù)期平均指令仍然高于每個時鐘周期的目標(biāo)指令吞吐量設(shè)定,則處理器16可按遞增的減少量把這種啟動調(diào)整到每八個時鐘周期六個指令、每八個時鐘周期五個指令、等等,直到每個時鐘周期的實際平均指令低于每個時鐘周期的目標(biāo)指令吞吐量設(shè)定為止。類似地,處理器16可通過調(diào)整退出率或者要退出的每個周期的指令數(shù)量,來調(diào)整實際指令周期吞吐量。
如前面所述,系統(tǒng)10允許基于因功耗、最大可允許溫度以及每個時鐘周期的指令吞吐量之間的相關(guān)性而產(chǎn)生的處理器功耗降低的冷卻容量降低。圖2說明功率分布圖20,它根據(jù)每個時鐘周期的指令來說明功耗。功率分布圖10說明與處理器執(zhí)行每個時鐘周期的最小數(shù)量的指令時處理器的最小功耗對應(yīng)的第一條線22。功率分布圖20說明與處理器以其每個時鐘周期的最大能力執(zhí)行指令時處理器的最大功耗對應(yīng)的第二條線26。功率分布圖20說明與處理器以每個時鐘周期的目標(biāo)指令吞吐量執(zhí)行時處理器的目標(biāo)功率對應(yīng)的第三條線24。因此,存在可根據(jù)最大功率與目標(biāo)功率之間的差異來確定的增量功率,允許使用較小成本的冷卻系統(tǒng),或者以較低平均溫度工作的更可靠系統(tǒng)。
圖3說明用于控制指令吞吐量的另一個系統(tǒng)30。系統(tǒng)30包括指令計算器32,它為給定的時鐘周期確定每個時鐘周期的實際指令吞吐量。指令計算器32接收例如與處理器40關(guān)聯(lián)的N個啟動信號,其中N為大于一的整數(shù)。給定的啟動信號可與處理器40的執(zhí)行部件關(guān)聯(lián)。給定的啟動信號的狀態(tài)可提供是否啟動指令通過與處理器的給定執(zhí)行部件關(guān)聯(lián)的流水線的指示。例如,零值可能是沒有啟動指令通過與給定執(zhí)行部件關(guān)聯(lián)的流水線的無效指示,而一值則可能是啟動指令通過與給定執(zhí)行部件關(guān)聯(lián)的流水線的有效指示?;蛘?,指令計算器32可接收多個退出信號,這些退出信號提供對于給定時鐘周期在與給定執(zhí)行部件關(guān)聯(lián)的流水線結(jié)束時是否退出指令的指示??梢岳斫猓ㄟ^處理器流水線的指令吞吐量的控制可通過控制指令啟動或者指令退出來實現(xiàn)。
指令計算器32確定對于給定時鐘周期根據(jù)啟動信號啟動的、或者對于給定時鐘周期根據(jù)退出信號退出的指令的數(shù)量。然后,指令計算器32為比較器34提供每個時鐘周期的實際指令吞吐量值。比較器34產(chǎn)生每個時鐘周期的實際指令吞吐量值與每個時鐘周期的目標(biāo)指令吞吐量設(shè)定之間的差值。每個時鐘周期的目標(biāo)指令吞吐量設(shè)定可根據(jù)特定應(yīng)用預(yù)先確定,并且可取從1到N的某個值。如果所選值為N,則系統(tǒng)30以其處理器40的每個時鐘周期的最大可允許指令容量工作,從而不執(zhí)行指令吞吐量控制。但是,如果選取1至N-1的某個值,則系統(tǒng)30以低于其處理器40的最大可允許指令時鐘周期容量工作,并且可執(zhí)行指令吞吐量控制。
比較器34每個時鐘周期提供差值,它被提供給積分器36。積分器36對多個差值求和,以便確定多個時鐘周期上的平均差值。平均差值對應(yīng)于與每個時鐘周期的實際指令吞吐量關(guān)聯(lián)的實際功率和與每個時鐘周期的目標(biāo)指令吞吐量設(shè)定關(guān)聯(lián)的目標(biāo)功率之間的平均功率差異。積分器36向階躍載荷管理器38提供平均差值,它例如大約每40到大約每60個時鐘周期被定期更新。階躍載荷管理器38定期(例如大約100至大約300個時鐘周期)向處理器40提供調(diào)速控制信號,用于根據(jù)平均差值來調(diào)整每個時鐘周期的實際指令吞吐量。
調(diào)速控制信號指示處理器40進(jìn)行保持指令吞吐量、提高指令吞吐量或者降低指令吞吐量其中之一。處理器40通過保持指令吞吐量、降低指令吞吐量或者提高指令吞吐量來響應(yīng)。例如,如果執(zhí)行部件的一個或多個以每八個時鐘周期六個指令進(jìn)行操作,則處理器40響應(yīng)降低指令而對一個或多個執(zhí)行部件降低到每八個時鐘周期五個指令。如果平均實際指令吞吐量仍然高于目標(biāo)指令吞吐量,則積分器36和階躍載荷管理器38將更新并發(fā)送下一個降低指令。處理器40響應(yīng)降低指令而對一個或多個執(zhí)行部件降低到每八個時鐘周期四個指令。這個過程將重復(fù)進(jìn)行,直到平均實際指令吞吐量低于目標(biāo)指令吞吐量設(shè)定為止。
或者,如果實際指令吞吐量比目標(biāo)指令吞吐量設(shè)定低了每周期預(yù)定平均指令數(shù)量,則階躍載荷管理器38為處理器40提供提高指令。例如,如果執(zhí)行部件中的一個或多個以每八個時鐘周期六個指令進(jìn)行操作,則處理器響應(yīng)提高指令而對一個或多個執(zhí)行部件提高到每八個時鐘周期七個指令。如果平均實際指令吞吐量仍然比目標(biāo)指令吞吐量設(shè)定低了每周期預(yù)定平均指令數(shù)量,則積分器36和階躍載荷管理器38將更新并發(fā)送下一個提高指令。處理器40響應(yīng)提高指令而對一個或多個執(zhí)行部件提高到每八個時鐘周期八個指令。
圖4說明處理器的示范指令吞吐量部分50。指令吞吐量部分50包括與第一加載執(zhí)行部件66(LOAD0)和第二加載執(zhí)行部件68(LOAD1)關(guān)聯(lián)的第一啟動控制器62和第一退出時間控制器74。指令吞吐量部分50包括與第一浮點執(zhí)行部件70(FP0)和第二浮點執(zhí)行部件72(FP1)關(guān)聯(lián)的第二啟動控制器64和第二退出時間控制器76。第一啟動控制器62、第一退出時間控制器74和第一加載執(zhí)行部件66組成第一指令流水線,以及第一啟動控制器62、第一退出時間控制器74和第二加載執(zhí)行部件68組成第二指令流水線。第二啟動控制器64、第二退出時間控制器76和第一浮點執(zhí)行部件70組成第三指令流水線,以及第二啟動控制器64、第二退出時間控制器76和第二浮點執(zhí)行部件72組成第四指令流水線。因此,指令吞吐量部分50包括四個指令流水線,以及每個時鐘周期能夠執(zhí)行四個指令。
第一和第二啟動控制器62和64可包括與從指令高速緩存60取指令、調(diào)度要執(zhí)行的指令、經(jīng)由傳送寄存器通過關(guān)聯(lián)流水線向給定執(zhí)行部件發(fā)出指令及傳送指令等關(guān)聯(lián)的控制器。與第一和第二啟動控制器62、64關(guān)聯(lián)的取控制器、調(diào)度控制器、發(fā)出控制器及傳送控制器的一個或多個可用于根據(jù)調(diào)速控制信號(TC)來調(diào)整通過與給定執(zhí)行部件關(guān)聯(lián)的相應(yīng)流水線的一個或多個的指令吞吐量。第一和第二啟動控制器62、64可產(chǎn)生每個時鐘周期的啟動信號(LS1-LS4),它們提供是否啟動指令通過相應(yīng)流水線的指示。如前面所述,啟動控制信號可在給定時鐘周期中對于給定流水線啟動指令時具有有效一狀態(tài),而在給定時鐘周期對于給定流水線沒有啟動指令時具有無效零狀態(tài)。
第一和第二退出時間控制器74、76可包括與從關(guān)聯(lián)流水線退出指令關(guān)聯(lián)的控制器。第一和第二退出時間控制器74、76可用于通過控制經(jīng)由相應(yīng)流水線的指令的退出,根據(jù)調(diào)速控制信號(TC)來調(diào)整通過與給定執(zhí)行部件關(guān)聯(lián)的相應(yīng)流水線的一個或多個的指令吞吐量。第一和第二退出時間控制器74、76可產(chǎn)生每一個時鐘周期的退出信號(RS1-RS4),它們提供是否從相應(yīng)流水線退出指令的指示。退出信號可在給定時鐘周期中對于給定流水線退出指令時具有有效一狀態(tài),而在給定時鐘周期對于給定流水線沒有退出指令時具有無效零狀態(tài)。
根據(jù)以上所述的結(jié)構(gòu)和功能特征,參照圖5-6,將會更好地理解某些方法。應(yīng)當(dāng)理解和知道,在其它實施例中,所述動作可能以不同順序和/或與其它動作同時發(fā)生。此外,可能并非需要全部所述特征來實現(xiàn)某種方法。
圖5說明用于控制指令吞吐量的一種方法。在100,每個時鐘周期的實際指令根據(jù)與各時鐘周期的流水線指令吞吐量關(guān)聯(lián)的信號來計算。例如,信號可能是與多個流水線的每個關(guān)聯(lián)的啟動信號,或者是與多個流水線的每個關(guān)聯(lián)的退出信號。一狀態(tài)可表明在與給定執(zhí)行部件關(guān)聯(lián)的流水線執(zhí)行了指令啟動或退出,而零狀態(tài)則可表明在與給定執(zhí)行部件關(guān)聯(lián)的流水線沒有執(zhí)行指令啟動或退出。因此,給定時鐘周期的每個時鐘周期的實際指令可通過合計一狀態(tài)的數(shù)量來確定。該方法進(jìn)入110。在110,對于多個時鐘周期確定每個時鐘周期的實際指令與每個時鐘周期的目標(biāo)指令設(shè)定之間的差值,從而提供多個差值。在120,對多個差值進(jìn)行合計,以便提供多個時鐘周期上的平均差值。然后,方法進(jìn)入130。
在130,根據(jù)一個或多個平均差值來產(chǎn)生調(diào)速控制信號,以指明保持、提高或降低指令吞吐量其中之一。在140,根據(jù)調(diào)速控制信號對于一個或多個執(zhí)行部件遞增修改指令吞吐量。例如,通過浮點執(zhí)行部件的指令吞吐量可通過對于一個或多個浮點執(zhí)行部件遞增地降低或提高每個時鐘周期的指令平均數(shù)量來修改,使得對于設(shè)定數(shù)量的時鐘周期中的或多或少的周期不啟動或退出指令。然后該方法返回到100,以便重復(fù)框100-140。
圖6說明用于控制指令吞吐量的另一種方法。在200,在給定時鐘周期的實際指令吞吐量與多個時鐘周期的每個時鐘周期的目標(biāo)指令吞吐量設(shè)定中確定差值。在210,對于多個差值確定平均差值。在220,實際指令吞吐量根據(jù)平均差值來調(diào)整。
以上描述的是本發(fā)明的實例。當(dāng)然,為了描述本發(fā)明,不可能描述組件或方法的每種可想到的組合,但本領(lǐng)域的技術(shù)人員會認(rèn)識到,本發(fā)明的其它許多組合和置換是可行的。因此,本發(fā)明意在包含落入所附權(quán)利要求的精神及范圍內(nèi)的所有這些改變、修改及變更。
權(quán)利要求
1.一種用于控制處理器(16,40)的指令吞吐量的系統(tǒng)(10,30),所述系統(tǒng)包括比較器(12,34),確定每個時鐘周期的實際指令吞吐量與每個時鐘周期的目標(biāo)指令吞吐量設(shè)定的差值;以及調(diào)速控制器(14),對多個差值求和以確定多個時鐘周期上的平均差值,以及根據(jù)所述平均差值來調(diào)整所述每個時鐘周期的實際指令吞吐量。
2.如權(quán)利要求1所述的系統(tǒng)(10,30),其特征在于,所述每個時鐘周期的實際指令吞吐量是在給定時鐘周期啟動的實際指令的數(shù)量。
3.如權(quán)利要求2所述的系統(tǒng)(10,30),其特征在于,還包括指令計算器(32),它把在給定時鐘周期的有效啟動信號的數(shù)量加起來,從而確定在給定時鐘周期啟動的實際指令的數(shù)量。
4.如權(quán)利要求1所述的系統(tǒng)(10,30),其特征在于,所述調(diào)速控制器(14)包括積分器(36),對所述多個差值求和以提供平均差值;以及階躍載荷管理器(38),根據(jù)至少一個平均差值對所述處理器(16,40)產(chǎn)生調(diào)速控制信號,以便保持、提高和降低每個時鐘周期的實際指令吞吐量其中之一。
5.如權(quán)利要求4所述的系統(tǒng)(10,30),其特征在于,所述處理器(16,40)包括具有關(guān)聯(lián)執(zhí)行部件(66,68,70,72)的多個流水線,所述處理器(16,40)響應(yīng)所述調(diào)速控制信號以遞增方式為至少一個關(guān)聯(lián)執(zhí)行部件(66,68,70,72)控制所述每個時鐘周期的平均指令。
6.如權(quán)利要求1所述的系統(tǒng)(10,30),其特征在于,所述處理器(16,40)包括與至少一個加載執(zhí)行部件(66,68)關(guān)聯(lián)的第一啟動控制器(62)以及與至少一個浮點處理部件(70,72)關(guān)聯(lián)的第二啟動控制器(64),所述調(diào)速控制器(14)產(chǎn)生調(diào)速控制信號,它調(diào)整所述第一啟動控制器(62)和所述第二啟動控制器(64)中的至少一個在多個時鐘周期中啟動的指令的數(shù)量。
7.如權(quán)利要求6所述的系統(tǒng)(10,30),其特征在于,所述第一啟動控制器(62)和第二啟動控制器(64)中的至少一個包括與取、調(diào)度、發(fā)出和傳送指令通過關(guān)聯(lián)流水線其中至少一項操作關(guān)聯(lián)、用以根據(jù)所述調(diào)速控制器(14)所提供的調(diào)速控制信號來控制所述每個周期的實際指令吞吐量的控制器。
8.如權(quán)利要求1所述的系統(tǒng)(10,30),其特征在于,所述處理器(16,40)包括與第一浮點處理部件(70)和第二浮點處理部件(72)關(guān)聯(lián)的啟動控制器(64),所述調(diào)速控制器(14)產(chǎn)生調(diào)速控制信號,它調(diào)整所述啟動控制器(64)在多個時鐘周期對所述第一浮點處理部件(70)和所述第二浮點處理部件(72)啟動的指令的數(shù)量。
9.如權(quán)利要求1所述的系統(tǒng)(10,30),其特征在于,所述處理器(16,40)包括至少一個退出控制器(74,76),它控制與至少一個執(zhí)行部件(66,68,70,72)關(guān)聯(lián)的指令的退出,其中,所述退出控制器(74,76)通過控制與至少一個執(zhí)行部件(66,68,70,72)關(guān)聯(lián)的指令的退出來調(diào)整多個時鐘周期中的每個時鐘周期的平均實際指令吞吐量。
10.如權(quán)利要求1所述的系統(tǒng)(10,30),其特征在于,還包括指令計算器(32),它把給定時鐘周期中的有效退出信號的數(shù)量相加,從而確定給定時鐘周期中退出的實際指令。
全文摘要
公開用于控制指令吞吐量的系統(tǒng)(10,30)及方法。系統(tǒng)(10,30)的一個實施例可包括比較器(12,34),確定每個時鐘周期的實際指令吞吐量與每個時鐘周期的目標(biāo)指令吞吐量設(shè)定的差值;以及調(diào)速控制器(14),對多個差值求和以便確定多個時鐘周期上的平均差值,以及根據(jù)平均差值來調(diào)整每個時鐘周期的實際指令吞吐量。
文檔編號G06F9/38GK1831758SQ20061005928
公開日2006年9月13日 申請日期2006年3月7日 優(yōu)先權(quán)日2005年3月8日
發(fā)明者K·A·赫德 申請人:惠普開發(fā)有限公司