專利名稱:使處理器與協(xié)處理器接口的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明通常涉及具有處理器及至少一個協(xié)處理器的數(shù)據(jù)處理系統(tǒng),并且,更具體地,涉及使處理器與協(xié)處理器接口的方法和設(shè)備。
背景技術(shù):
通過專用及特殊硬件功能部件擴展基準體系結(jié)構(gòu)及處理器的能力是可伸縮及可擴展體系結(jié)構(gòu)的一個重要方面。
用于擴展基準體系結(jié)構(gòu)及處理器功能的一個最優(yōu)方法是通過使用協(xié)處理器。這些是在處理器的控制下操作的專用,通常為單目的的處理器。協(xié)處理器的一個常規(guī)用法是作為數(shù)學(xué)協(xié)處理器,以選擇性地向不直接支持浮點能力的體系結(jié)構(gòu)提供浮點能力。這種數(shù)學(xué)協(xié)處理器的某個例子是Intel 8087及80287。某些其它協(xié)處理器的可能用法或類型包含乘累加器,調(diào)制器/解調(diào)器(調(diào)制解調(diào)器),數(shù)字信號處理器(DSP),vitterbi計算器,加密處理器,圖象處理器,及向量處理器。
實現(xiàn)協(xié)處理器的一個方案是使用一個協(xié)處理器接口,其足夠緊密地耦合,使得接口的使用足夠快,以致有利于調(diào)用即使相當簡單的函數(shù)是有利的,同時將接口抽象到這樣一個程度,使得處理器體系結(jié)構(gòu)與任意指定協(xié)處理器的盡可能多的細節(jié)相隔離。例如,這樣一個緊密耦合的協(xié)處理器可以通過到主處理器的專用接口接收操作數(shù)及控制字。通常,基于由主處理器執(zhí)行的一組操作,主處理器會在主處理器產(chǎn)生一個數(shù)值之后把該數(shù)值傳遞給一個協(xié)處理器。在最后修改之后,該數(shù)值可以被發(fā)送給協(xié)處理器。然而,此最后傳送涉及對于某些協(xié)處理器操作可能不可接受的開銷。
通過舉例來說明本發(fā)明,并且本發(fā)明不受附圖的限制,其中類似附圖標記指示類似單元,并且其中
圖1是根據(jù)本發(fā)明圖解數(shù)據(jù)處理系統(tǒng)的一個實施例的模塊圖;圖2是圖解圖1的處理器的一部分的一個實施例的模塊圖;圖3是圖解圖1的協(xié)處理器的一部分的一個實施例的模塊圖;圖4是圖解寄存器廣播操作的一個實施例的時序圖;圖5是圖解廣播屏蔽寄存器的一個實施例的模塊圖;圖6是圖解廣播區(qū)的一個實施例的模塊圖;圖7是圖解寄存器廣播操作的一個可選實施例的時序圖;圖8是圖解圖2的控制電路的一部分的一個實施例的模塊圖;而圖9是圖解圖2的廣播區(qū)控制單元的一部分的一個實施例的模塊圖。
本領(lǐng)域技術(shù)人員理解,圖中的單元以簡單和清晰的方式被圖解,并且沒有必要按比例畫出。例如,圖中某些單元的尺寸相對于其它單元被放大,以幫助改進對本發(fā)明的實施例的理解。
具體實施例方式
在下面的描述中,提出諸如具體詞或字節(jié)長度等等的許多特定細節(jié),以提供對本發(fā)明的徹底理解。然而,本領(lǐng)域的技術(shù)人員明白,本發(fā)明可以在沒有這種細節(jié)的情況下實施。在其它實例中,為了不以不必要的細節(jié)遮蓋本發(fā)明,電路以模塊圖形式示出。對于大部分而言,已經(jīng)省略了涉及時間考慮等等的細節(jié),因為這種細節(jié)不是獲得對本發(fā)明的完整理解所必須的,并且是相關(guān)技術(shù)領(lǐng)域的普通技術(shù)人員所能理解的。
術(shù)語“總線”用于表示多個可用于傳送諸如數(shù)據(jù),地址,控制或狀態(tài)的一或多個各種信息的信號或?qū)w。當用于將信號,狀態(tài)位或類似裝置呈現(xiàn)為其邏輯真或邏輯假狀態(tài)時,分別使用術(shù)語“聲明(assert)”及“取消(negate)”。如果邏輯真狀態(tài)是邏輯電平一,則邏輯假狀態(tài)是一個邏輯電平零。并且如果邏輯真狀態(tài)是邏輯電平零,則邏輯假狀態(tài)是邏輯電平一。一個跟隨在信號名稱后的“*”符號表示該信號是一個低電平有效信號(意味著邏輯真狀態(tài)是一個邏輯電平零)。
圖1是圖解數(shù)據(jù)處理系統(tǒng)10的一個實施例的模塊圖,數(shù)據(jù)處理系統(tǒng)10包含處理器12,協(xié)處理器14,協(xié)處理器16,存儲器18,其它模塊20及外部總線接口22,它們?nèi)客ㄟ^總線28雙向連接。本發(fā)明的可選實施例可以具有唯一一個協(xié)處理器14,兩個協(xié)處理器14及16,或甚至更多協(xié)處理器(未示出)。通過集成電路終端35把外部總線接口22雙向連接到外部總線26。把存儲器24雙向連接到外部總線26??蛇x地,可以通過集成電路終端31把處理器12外部連接到數(shù)據(jù)處理系統(tǒng)10。可選地,可以通過集成電路終端32把協(xié)處理器14外部連接到數(shù)據(jù)處理系統(tǒng)10??蛇x地,可以通過集成電路終端33把存儲器18外部連接到數(shù)據(jù)處理系統(tǒng)10??蛇x地,可以通過集成電路終端34把其它模塊20外部連接到數(shù)據(jù)處理系統(tǒng)10。通過協(xié)處理器接口30,處理器12雙向連接到協(xié)處理器14和協(xié)處理器16。盡管未在圖1中示出,但是可選實施例也可以具有附加存儲器,其類似于通過總線28連接的存儲器18。
圖2是圖解圖1的處理器12的一部分的模塊圖。在一個實施例中,處理器12包含控制電路40,指令解碼電路42,指令流水線44,寄存器46,算術(shù)邏輯單元(ALU)48,鎖存多路復(fù)用器(MUX)50,鎖存多路復(fù)用器(MUX)52,多路復(fù)用器(MUX)54,廣播區(qū)控制單元120,及程序計數(shù)器單元130。在本發(fā)明一個實施例中,協(xié)處理器接口30包含信號60-72及128。由控制電路40產(chǎn)生時鐘信號60。協(xié)處理器操作信號61由控制電路40產(chǎn)生并且被提供給協(xié)處理器14及16。
監(jiān)控模式信號62由控制電路40產(chǎn)生并且被提供給協(xié)處理器14及16。解碼信號63由控制電路40產(chǎn)生并且被提供給協(xié)處理器14及16。通過控制電路40接收來自協(xié)處理器14或協(xié)處理器16的協(xié)處理器忙信號64。執(zhí)行信號65由控制電路40產(chǎn)生并且被提供給協(xié)處理器14及16。通過控制電路40接收來自協(xié)處理品14或協(xié)處理器16的異常信號66。寄存器寫入(REGWR*)信號67由控制電路40產(chǎn)生并且被提供給協(xié)處理器14及16。寄存器信號(REG[4:0])68由控制電路40產(chǎn)生并且被提供給協(xié)處理器14及16。差錯信號(H_ERR*)69由控制電路40產(chǎn)生并且被提供給協(xié)處理器14及16。數(shù)據(jù)選通信號(H_DS*)70由控制電路40產(chǎn)生并且被提供給協(xié)處理器14及16。由控制電路40接收來自協(xié)處理器14及16的數(shù)據(jù)確認信號(H_DA*)71。區(qū)域信號(H_REGION[N:1])由廣播區(qū)控制單元20產(chǎn)生并且被提供給控制電路40及協(xié)處理器14及16。也被認為是協(xié)處理器接口30的一部分的硬件數(shù)據(jù)端口信號(HDP[31:0])72在協(xié)處理器14及16,以及處理器12內(nèi)的內(nèi)部電路之間是雙向的。
在本發(fā)明一個實施例中,提供針對或來自總線28的多個信號,以便在存儲器18和/或存儲器24中加載或存儲數(shù)據(jù)。在一個實施例中,這些信號包含由控制電路40產(chǎn)生并且被提供給總線28的傳送請求信號(TREQ*)73。傳送錯誤確認信號(TEA*)74通過總線28被提供給控制電路40。傳送確認信號(TA*)75通過總線28被提供給控制電路40。通過導(dǎo)體76從總線28向指令流水線44提供指令。通過導(dǎo)體76把數(shù)據(jù)提供給MUX 54。驅(qū)動數(shù)據(jù)信號79使能三態(tài)緩沖區(qū)95以通過導(dǎo)體88及76從鎖存MUX 52提供數(shù)據(jù)。地址選擇信號78使能鎖存MUX 50以通過導(dǎo)體77向總線28提供地址。通過HDP信號(HDP[31:0])72提供MUX 54的另一個輸入。通過ALU結(jié)果導(dǎo)體86提供MUX 54的另一個輸入。MUX 54的輸出,即結(jié)果信號83被提供給寄存器46及三態(tài)緩沖區(qū)96的輸入。使能_廣播信號82使能三態(tài)緩沖區(qū)96驅(qū)動HDP[31:0]72上的結(jié)果信號83。三態(tài)緩沖區(qū)96的輸出也被連接到鎖存MUX 52的輸入。提供結(jié)果信號83作為鎖存MUX 50的輸入,并且作為控制電路40的輸入。通過MUX54向寄存器46提供結(jié)果信號83。結(jié)果選擇信號(結(jié)果_選擇)81選定MUX 54的哪個輸入將在結(jié)果導(dǎo)體83上被驅(qū)動。把源選擇信號(源_選擇)80提供給鎖存MUX 52以選定應(yīng)當通過導(dǎo)體88驅(qū)動哪個信號到三態(tài)緩沖區(qū)95??刂齐娐?0通過導(dǎo)體91提供控制信息并且接收來自寄存器46的狀態(tài)信息??刂齐娐?0通過導(dǎo)體92提供控制信號并且接收來自算術(shù)邏輯單元48的狀態(tài)信號??刂齐娐?0通過區(qū)說明符122提供控制及信息信號,并且接收來自廣播區(qū)控制單元20的控制及信息信號??刂齐娐吠ㄟ^導(dǎo)體124提供控制信號并且接收來自程序計數(shù)器單元130的狀態(tài)信號??刂齐娐?0通過導(dǎo)體93提供控制信號并且接收來自指令流水線44及指令解碼電路42的狀態(tài)信號。指令流水線44通過導(dǎo)體89被連接以向指令解碼電路42提供指令。指令解碼電路42通過導(dǎo)體90向控制電路40及程序計數(shù)器單元130提供解碼指令信息。寄存器46通過導(dǎo)體84向算術(shù)邏輯單元48提供源操作數(shù)。寄存器46通過導(dǎo)體84,鎖存MUX 52,三態(tài)緩沖區(qū)95及導(dǎo)體76提供要存儲在存儲器18或存儲器24中的數(shù)據(jù)。寄存器46通過導(dǎo)體84,鎖存MUX 50及地址導(dǎo)體77向存儲器18或存儲器24提供地址信息。寄存器46通過導(dǎo)體85向算術(shù)邏輯單元48提供第二源操作數(shù)。程序計數(shù)器單元130通過導(dǎo)體126,鎖存MUX 50及地址導(dǎo)體77向存儲器18或存儲器24提供程序計數(shù)器。程序計數(shù)器130還向廣播區(qū)控制單元120提供程序計數(shù)器信息。程序計數(shù)器130接收來自鎖存MUX 50的輸出地址,以作為一個輸入以產(chǎn)生下一個存儲器地址。
注意,本發(fā)明的可選實施例可在寄存器46中包含任何數(shù)量的寄存器。并且,本發(fā)明的可選實施例可能使用一對單向總線代替雙向總線,以及使用多路復(fù)用器邏輯代替三態(tài)緩沖區(qū)以傳送信息。例如,HDP[31:0]或其它雙向總線可以被實現(xiàn)為分立的輸入和輸出部分。
圖3是圖解協(xié)處理器14的一部分的一個實施例的模塊圖。在一個實施例中,協(xié)處理器14包含控制電路100,計算電路102及可選存儲電路104??刂齐娐?00通過包含信號60-72及128的協(xié)處理器接口30雙向連接到處理器12。在本發(fā)明一個實施例中,控制電路100包含接收來自處理器12的操作信號61及解碼信號63的解碼電路106??刂齐娐?00通過導(dǎo)體108提供控制信息并且接收來自可選存儲電路104的狀態(tài)信息??刂齐娐?00通過導(dǎo)體109提供控制信息并且接收來自計算電路102的狀態(tài)信息。計算電路102及可選存儲電路104通過導(dǎo)體110雙向連接。可以提供針對或來自總線28或集成電路終端32的一或多個信號110??刂齐娐?00通過導(dǎo)體112可以接收或提供針對或來自總線28或集成電路終端32的信息。信號72可以被雙向連接到計算電路102及可選存儲電路104。另外,信號72可以雙向連接到總線28或集成電路終端32。在本發(fā)明的一個可選實施例中,可不實現(xiàn)可選存儲電路104。在本發(fā)明的實現(xiàn)可選存儲電路104的實施例中,可以利用寄存器,任何類型的存儲器,包含鎖存器或可編程邏輯陣列的任何類型的存儲電路等實現(xiàn)可選存儲電路104。在本發(fā)明的可選實施例中,計算電路102可以執(zhí)行任何類型的邏輯或計算功能。
系統(tǒng)通過針對涉及專門應(yīng)用的操作而優(yōu)化的外部協(xié)處理器14(或硬件加速器)支持任務(wù)加速。這些外部協(xié)處理器14,16可以象用于執(zhí)行種群統(tǒng)計(population count)或更復(fù)雜功能的協(xié)處理器14(例如DSP加速協(xié)處理器14),或能夠進行高速乘法/累加操作的協(xié)處理器16一樣簡單。
通過若干適于具體實現(xiàn)的機構(gòu),在處理器12及協(xié)處理器14之間傳送數(shù)據(jù)。這些可以被分成針對協(xié)處理器14的傳送,及來自協(xié)處理器14的傳送。
用于向協(xié)處理器14傳送數(shù)據(jù)的機構(gòu)之一是寄存器廣播機構(gòu),該機構(gòu)不涉及指令原語,而是正常處理器12操作的副產(chǎn)品。這涉及通過接口把更新反映到處理器12的通用寄存器(“GPR”)46,使得協(xié)處理器14可以監(jiān)視對一或多個處理器12寄存器的更新。如果協(xié)處理器14“覆蓋”GPR 46的內(nèi)部寄存器或功能,這會是適合的。在這種情況下,不需要從處理器12向協(xié)處理器14的顯式參數(shù)傳遞。
另一個向協(xié)處理器14傳送數(shù)據(jù)的方案是數(shù)據(jù)驅(qū)動方案,其涉及向協(xié)處理器傳送一或多個數(shù)據(jù)項的協(xié)處理。這些項的傳送可以在沒有協(xié)處理器命令或指令的顯式傳送的情況下啟動一個協(xié)處理操作。與協(xié)處理器14的通信開銷的降低可以導(dǎo)致顯著的性能提高。
在基處理器12中提供指令原語,用于外部協(xié)處理器14,16及處理器12之間操作數(shù)及指令的顯式傳送。提供一個握手機構(gòu)以允許對指令及數(shù)據(jù)傳送的速率進行控制。
注意,協(xié)處理器14被設(shè)計為特定于實現(xiàn)的單元,因而一個指定單元的實際功能在不同實現(xiàn)中可自由改變,即使可存在相同指令映射。
圖4是圖解一個寄存器廣播操作的時序圖。為了避免針對協(xié)處理器14或外部監(jiān)視器的參數(shù)傳遞的性能開銷,提供一個寄存器廣播機構(gòu)(也可以被稱為寄存器探聽(snooping)機構(gòu))。這允許協(xié)處理器14實現(xiàn)一或多個處理器12的通用寄存器46的影子復(fù)本(shadow copy)。該能力是通過傳送寫入處理器GPR 46之一的數(shù)值和有關(guān)哪個寄存器46被針對GPR更新而更新的指示來實現(xiàn)的。(注意,帶下劃線的寄存器,例如RA及RC,分別表示對應(yīng)指令,例如ADDC或OR的目的寄存器。)針對每個寄存器更新聲明一個選通信號REGWR*67。通過32位雙向數(shù)據(jù)路徑HDP[31:0]72傳送數(shù)值,并且一個5位寄存器編號總線提供一個指針給所更新的實際處理器寄存器46(REG[4:0])68。寄存器編號可以指示一個正常堆(file)或一個可選堆中的寄存器46。在優(yōu)選實施例中,通過REG[4]==1指示可選堆寄存器,并且通過REG[4]==0指示正常堆寄存器。然而注意,本發(fā)明不以任何方式依賴于寄存器組的實際劃分。
協(xié)處理器14可以內(nèi)部鎖存數(shù)值與目的寄存器46編號的指示,以避免稍后寄存器信息的顯式移動。這些功能也可以被一個調(diào)試協(xié)處理器14用以跟蹤寄存器堆46或其子集的狀態(tài)。圖4說明廣播能力的一個例子。
參照圖4說明的廣播能力通過HDP[31:0]72對每個針對寄存器堆的寫事務(wù)執(zhí)行廣播。因此這個能力允許協(xié)處理器14保持處理器12的寄存器堆(即GPR 46)的一個影子復(fù)本,并且不需要從處理器12向協(xié)處理器14顯式傳遞某些參數(shù)。然而,需要一種進一步控制處理器12及協(xié)處理器14的廣播能力的能力。因此,圖5-9圖解了本發(fā)明允許處理器12的選擇性廣播能力并且允許協(xié)處理器14的選擇性更新策略的的一個實施例。
圖5根據(jù)本發(fā)明的一個實施例圖解了允許實現(xiàn)一個選擇性廣播能力的廣播屏蔽寄存器。因此,不是廣播每個結(jié)果更新到GPR 46,而是廣播屏蔽寄存器可以用于選擇GPR 46的子集,該子集的結(jié)果被廣播到協(xié)處理器14。例如,對于GPR 46中的每個寄存器,單個位可以用作廣播指示符,以確定對該具體寄存器的更新是否會導(dǎo)致(通過HDP[31:0]72)向協(xié)處理器14傳送更新的寄存器內(nèi)容。圖5圖解廣播屏蔽寄存器的一個例子,其中假定GPR 46具有16個寄存器。在這個例子中,0指示與具體位相關(guān)的寄存器禁止其結(jié)果廣播,并且1指示與具體位相關(guān)的寄存器使能其結(jié)果廣播。因此,在圖5的例子中,只有對對應(yīng)于位位置8及9(在一個實施例中,可以指示GPR 46內(nèi)的寄存器R8及寄存器R9)的寄存器的更新被廣播到協(xié)處理器14。如果GPR 46只包含8個寄存器,則廣播屏蔽寄存器只需要8位長。因此,廣播屏蔽寄存器可被認為是具有一組對應(yīng)于GPR 46的廣播指示符的廣播說明符。
在一個實施例中,廣播屏蔽寄存器(例如廣播說明符)是用戶可編程(通過軟件訪問),并且當系統(tǒng)狀態(tài)改變時可被修改,以便當出現(xiàn)新要求時考慮隨時間出現(xiàn)的不同協(xié)處理活動。在另一個實施例中,通過被設(shè)計成更新廣播屏蔽寄存器的具體指令內(nèi)的立即字段可訪問廣播屏蔽寄存器或廣播說明符。可選實施例也可以使用不同的廣播說明符以及針對每個需要通過處理器12廣播其結(jié)果的寄存器提供一個對應(yīng)廣播指示符的不同方法,而不是使用圖5所示的廣播屏蔽寄存器。例如,可以把寄存器屏蔽字段存儲在對應(yīng)于GPR 46的存儲器18或24中。
通過一個廣播屏蔽寄存器(或其它廣播說明符)的使用,可降低HDP[31:0]72的負載及總功耗。例如,如果一個數(shù)值不需要通過協(xié)處理器14探聽,則通過分配GPR 46內(nèi)的一個寄存器來存儲這個數(shù)值并且使用廣播屏蔽禁止這個寄存器的廣播,可以禁止通過處理器12廣播這個數(shù)值。因此,如果只有計算數(shù)值的一個子集需要從處理器12廣播到協(xié)處理器14,則可以保留GPR 46的一個子集以保存這些數(shù)值,并且接著僅更新這些保留寄存器之一的方式會導(dǎo)致計算的數(shù)值的廣播。由于產(chǎn)生結(jié)果的指令的數(shù)量較高,廣播全部寫入結(jié)果會不必要增加HDP[31:0]72的負載,并且消耗更多功率。因而,屏蔽廣播以使只向協(xié)處理器14廣播寄存器更新的一個子集,導(dǎo)致處理器12內(nèi)功耗的降低,并且降低HDP[31:0]72上過多的負載。
為了進一步控制廣播能力,可以使用廣播區(qū)。圖6圖解了一個示例程序空間172,它被分成四個廣播區(qū)廣播區(qū)1 164,廣播區(qū)2 166,廣播區(qū)3 168,及廣播區(qū)4 170。程序空間172可以是處理器12內(nèi)的任何程序空間,并且可以位于諸如存儲器18或24的任何程序存儲器中。廣播區(qū)是指指令地址范圍(即程序區(qū)或執(zhí)行區(qū)),其中廣播被控制。在圖6中,每個廣播區(qū)具有一個對應(yīng)的廣播屏蔽。例如,廣播區(qū)1 164對應(yīng)于廣播屏蔽1 158,廣播區(qū)2 166及廣播區(qū)4 170都對應(yīng)于廣播屏蔽2160,并且廣播區(qū)3 168對應(yīng)于廣播屏蔽3 162。因此,一個廣播屏蔽可以對應(yīng)于不止一個廣播區(qū)。
可以用多個方式控制對廣播區(qū)的廣播屏蔽分配。其可以是固定的,或可以受軟件控制,并且是用戶可編程的。通過把廣播屏蔽與每個實現(xiàn)的廣播區(qū)配對的控制寄存器,或者通過其它存儲裝置可進行編程。當系統(tǒng)執(zhí)行進行時,廣播屏蔽與廣播區(qū)的關(guān)聯(lián)可以在用戶程序控制下,或通過系統(tǒng)事件的硬件監(jiān)視,或通過適于數(shù)據(jù)處理系統(tǒng)的任何其他控制裝置來改變。
當在一個廣播區(qū)內(nèi)正執(zhí)行代碼時,對應(yīng)廣播屏蔽用于提供更新結(jié)果的選擇性廣播。例如,在廣播區(qū)1 164內(nèi),只有對由廣播屏蔽1 158指示的寄存器的那些更新被廣播到協(xié)處理器14。在廣播區(qū)2 166或廣播區(qū)4 170內(nèi),對由廣播屏蔽2 160指示的寄存器的更新被廣播到協(xié)處理器14。在廣播區(qū)3 168內(nèi),對由廣播屏蔽3 162指示的寄存器的更新被廣播到協(xié)處理器14。
這種廣播區(qū)的使用還允許協(xié)處理器14的簡化操作。例如,在某些情況下,協(xié)處理器14不再需要來自處理器12的顯式命令形式的知識,但是由于處理器12可以被用來只向協(xié)處理器14傳遞實際驅(qū)動項,則能以數(shù)據(jù)驅(qū)動方式操作。因此,通過使用廣播區(qū)及廣播屏蔽,處理器12可以控制其廣播能力,并且因而控制其發(fā)送至協(xié)處理器14的驅(qū)動項。通過以數(shù)據(jù)驅(qū)動方式進行操作,涉及向協(xié)處理器14或16傳遞單個控制操作或指令的開銷可以被降低或消除,因而提高系統(tǒng)性能并且降低系統(tǒng)功耗。
可選地,圖6的廣播區(qū)1-4也可以獨立于廣播屏蔽1-3使用。例如,廣播區(qū)可以定義為其中出現(xiàn)或未出現(xiàn)廣播的區(qū)域。即,對于廣播區(qū)1164內(nèi)的代碼,針對GPR 46的任何更新,廣播可始終發(fā)生。然而,可以定義廣播區(qū)2,使得對于在這個范圍內(nèi)的代碼,廣播根本不發(fā)生。因此,廣播能力也可以單純基于廣播區(qū),而不是單純基于廣播屏蔽或廣播屏蔽及區(qū)域的組合,而是選擇性的。
圖7圖解了一個選擇性寄存器廣播操作的例子的時序圖。指令A(yù)DDR3,R2及ORR4,R5在圖6的廣播區(qū)1 164內(nèi),因此對應(yīng)于廣播屏蔽1 158,其一個例子也在圖7中說明。指令A(yù)DDR6,R7,SUBR3,R4,及MULR9,R10在圖6的廣播區(qū)2 166內(nèi),因此對應(yīng)于廣播屏蔽2160,其一個例子也在圖7中說明。圖7的時序圖指示何時指令在指令流水線44的執(zhí)行階段。在各個指令內(nèi)帶下劃線的寄存器指示目的寄存器(結(jié)果被寫入的寄存器)。
在區(qū)域1 164內(nèi),ADDR3,R2的結(jié)果被寫入寄存器R3(其中R3=R3+R2)。由于廣播屏蔽1 158把一個“1”寫入位位置3,對寄存器R3的任何寫入將通過HDP[31:0]72由處理器12廣播。因此,在圖7的時序圖的第一個時鐘周期內(nèi),ADD指令的結(jié)果(被寫入處理器12內(nèi)的R3的結(jié)果)通過HDP[31:0]72向協(xié)處理器14廣播。由于其正被廣播,也通過REG[4:0]68向協(xié)處理器14提供對應(yīng)于R3的寄存器編號。聲明REGWR*67以允許協(xié)處理器14把傳入結(jié)果寫入其寄存器之一,并且聲明使能_廣播82,使得圖2的三態(tài)緩沖區(qū)96可以驅(qū)動結(jié)果到HDP[31:0]72。并且,通過H_REGION[N:1]128向協(xié)處理器14提供區(qū)域指示符。因此,當在區(qū)域1中正執(zhí)行代碼時,H_REGION[N:1]128(對應(yīng)于一個N位數(shù)值)指示“1”。
ORR4,R5指令跟隨ADDR3,R2指令,并且仍然在廣播區(qū)1 164內(nèi);然而,其目的寄存器是R4。根據(jù)廣播屏蔽1 158,寫入R4的結(jié)果不被廣播;因此,OR指令的結(jié)果不提供給協(xié)處理器14,寄存器編號不需要通過REG[4:0]68,并且REGWR*和使能_廣播都解除聲明。
下面3個指令A(yù)NDR6,R7,SUBR3,R4,及MULR9,R10全在廣播區(qū)2 166內(nèi)。R6,R3及R9均帶下劃線,以指示它們是其對應(yīng)指令的目的寄存器。一旦進入廣播區(qū)2 166,H_REGION[N:1]128改變狀態(tài)以指示′2′。廣播區(qū)2 166具有一個表明只應(yīng)廣播對寄存器R9及R6的寫入的對應(yīng)廣播屏蔽2 160。因此,如在圖7的時序圖中所見,當在廣播區(qū)2 166中時,通過HDP[31:0]72向協(xié)處理器14僅廣播AND及MUL指令的結(jié)果。每個寄存器的寄存器編號也通過REG[4:0]68發(fā)送,并且聲明REGWR*和使能_廣播82。然而,由于廣播屏蔽2 160指示在廣播區(qū)2 166內(nèi)不應(yīng)廣播對寄存器R3的寫入,所以未廣播SUB指令的結(jié)果。
圖8以模塊圖形式圖解了圖2的控制電路40的一部分的一個實施例??刂齐娐?0的部分包含廣播屏蔽1寄存器134,廣播屏蔽2寄存器136,及廣播屏蔽M寄存器138,屏蔽選擇電路132,及目的比較單元142??刂齐娐?0包含M個廣播屏蔽寄存器。(同時注意,控制電路40可只包含1或2廣播屏蔽寄存器,即使圖解了3個。)控制電路40也包含連接到廣播屏蔽1寄存器134,廣播屏蔽2寄存器136及廣播屏蔽M寄存器138的屏蔽選擇電路132。屏蔽選擇電路也接收H_REGION[N:1],并且向目的比較單元142提供當前廣播屏蔽140。目的比較單元142也被從指令解碼42連接到導(dǎo)體90,并且向三態(tài)緩沖區(qū)96提供使能_廣播82。
在操作中,廣播屏蔽寄存器134,136及138的值可以通過結(jié)果信號83加載。因此,可以向處理器12提交一個指令以加載值到廣播屏蔽寄存器;因此,通過導(dǎo)體90的控制信號可以指示要執(zhí)行一個指令以加載廣播屏蔽寄存器134,136或138,其中作為來自MUX 54的結(jié)果信號83而提供實際值。因此,在這個實施例中,廣播屏蔽寄存器134,136及138是用戶可編程的。屏蔽選擇電路132接收作為指示代碼的當前執(zhí)行區(qū)(即,當前程序區(qū)域)的N位數(shù)值的H_REGION[N:1]128。(注意,根據(jù)處理器12的設(shè)計,區(qū)域數(shù)Y可大于或小于廣播屏蔽寄存器的數(shù)量。)屏蔽選擇電路132可以用若干不同方式實現(xiàn),以把廣播屏蔽寄存器134,136,...,138之一與由H_REGION[N:1]128指示的每個區(qū)域關(guān)聯(lián)。在一個實施例中,屏蔽選擇電路132把唯一廣播屏蔽與每個廣播區(qū)關(guān)聯(lián)。在可選實施例中,屏蔽選擇電路132可以包含用戶可編程寄存器或其它電路,以允許把一個選擇的廣播屏蔽任意關(guān)聯(lián)到每個廣播區(qū),因而允許不同廣播區(qū)共享廣播屏蔽??蛇x地,廣播屏蔽與廣播區(qū)的關(guān)聯(lián)可以基于數(shù)據(jù)處理系統(tǒng)10的狀態(tài),并且可以在沒有軟件干預(yù)的情況下動態(tài)改變。
因此屏蔽選擇電路132使用H_REGION[N:1]128以選擇對應(yīng)廣播屏蔽寄存器(134,136或138),并且把它作為當前廣播屏蔽140提供。例如,如果HREGION[N:1]128指示圖6的廣播區(qū)2 166,則屏蔽選擇電路132將選擇具有對應(yīng)于廣播屏蔽2 160的數(shù)值的廣播屏蔽寄存器(該值可被存儲在廣播屏蔽寄存器134,136或138的任何一個中)。接著目的比較單元142確定何時一個指令導(dǎo)致向GPR 46內(nèi)的一個目的寄存器寫入一個操作數(shù),并且把由指令解碼42通過導(dǎo)體90提供的目的寄存器與當前廣播屏蔽140相比較,以確定是否使能廣播。如果比較指示應(yīng)當廣播結(jié)果,則聲明使能_廣播82,以便使能三態(tài)緩沖區(qū)96驅(qū)動結(jié)果到HDP[31:0]72上。
圖9以模塊圖形式圖解了圖2的部分廣播區(qū)控制單元的一個實施例。廣播區(qū)控制單元120包含區(qū)1上界寄存器146,區(qū)1下界寄存器148,區(qū)2上界寄存器150,區(qū)2下界寄存器152,區(qū)Y上界寄存器154,區(qū)Y下界寄存器156,及界限比較單元144。區(qū)1上界寄存器146,區(qū)1下界寄存器148,區(qū)2上界寄存器150,區(qū)2下界寄存器152,區(qū)Y上界寄存器154,區(qū)Y下界寄存器156可以接收來自控制單元40的區(qū)域_說明符122,并且存儲這些說明符。可向每個界限寄存器146,148,150,152,154及156提供唯一說明符。這些說明符可以由控制電路40根據(jù)結(jié)果83選擇,并且因而是指令執(zhí)行結(jié)果值的函數(shù),或可以通過指令解碼90,或由其它可選裝置提供。界限寄存器146,148,150,152,154及156向界限比較單元144提供輸出。界限比較單元144也被從程序計數(shù)器單元130連接到導(dǎo)體126,并且提供HREGION[N:1]128作為輸出。
在操作中,區(qū)1上界寄存器146及區(qū)1下界寄存器148定義對應(yīng)于廣播區(qū)1(例如,圖6的廣播區(qū)1 164)的開始及結(jié)束指令地址。因此,當程序計數(shù)器(程序計數(shù)器單元130內(nèi))在開始及結(jié)束指令地址內(nèi)(即,區(qū)1的上界及下界內(nèi))時,界限比較單元144輸出H_REGION[N:1]128以指示區(qū)1。同樣,每對上及下區(qū)界限,例如150及152或154及156,定義一個廣播區(qū),并且當程序計數(shù)器在任何這些區(qū)內(nèi)時,輸出對應(yīng)區(qū)作為H_REGION[N:1]128。注意,如圖9所示,廣播區(qū)控制單元120包含3個廣播區(qū)定義;然而,可以定義任何區(qū)數(shù)Y。通過提供兩種數(shù)值及控制信號以加載這些寄存器的區(qū)域_說明符122,這些上及下界寄存器(146,148,150,152,154及156)可以全部是用戶可編程。
在可選實施例中,其它方法及寄存器可用于定義廣播區(qū)。例如,一個基地址及一個屏蔽可以用于定義每個廣播區(qū)而不是一個下界及上界。同時,頁屬性可以用于定義使用保護或重新定位控制的系統(tǒng)中的廣播區(qū)(例如一個表查找支援緩沖區(qū),TLB)。在可選實施例中,廣播區(qū)控制單元120也可以位于控制電路40內(nèi)??蛇x地,廣播屏蔽寄存器及廣播區(qū)定義寄存器可以組合,使得通過一個具體區(qū)選擇一個具體屏蔽。通過這種方式,可以降低更新屏蔽及區(qū)定義的開銷。并且,如上所述,不同廣播區(qū)可以共享一個相同廣播屏蔽,同時降低廣播屏蔽寄存器的數(shù)量。同時,可選實施例可以不需要向協(xié)處理器14提供廣播區(qū)信息,因而消除對H_REGION[N:1]128的需要。
在本發(fā)明的一個可選實施例中,圖6的廣播區(qū)1-4也可以允許協(xié)處理器14實現(xiàn)一個選擇性執(zhí)行模式策略。廣播區(qū)也可以被稱作執(zhí)行區(qū)。例如,通過傳遞一個指示當前執(zhí)行區(qū)(諸如上面描述的H_REGION[N:1]128)的信號,處理器12可以向協(xié)處理器14提供一個執(zhí)行上下文。即,H_REGION[N:1]128可用于允許協(xié)處理器14設(shè)置本身以在不同及唯一的數(shù)據(jù)驅(qū)動操作模式中操作,其中通過H_REGION[N:1]128的值在處理器12的操作期間動態(tài)選擇該模式。例如,根據(jù)當前執(zhí)行區(qū)(即,當前正執(zhí)行的程序代碼的部分),可以設(shè)置協(xié)處理器以響應(yīng)HREGION[N:1]128在不同模式下操作或執(zhí)行不同功能。例如,如果H_REGION[N:1]128指示執(zhí)行區(qū)2,則協(xié)處理器14可以對針對存儲器的傳送執(zhí)行循環(huán)冗余校驗,并且如果H_REGION[N:1]128指示執(zhí)行區(qū)3,則協(xié)處理器14可以執(zhí)行一個過濾函數(shù)或一個硬件散列函數(shù)。因此,根據(jù)當前執(zhí)行區(qū),協(xié)處理器14可以改變其功能。
在當前發(fā)明的某些實施例中,響應(yīng)通過H_REGION[N:1]接收當前執(zhí)行區(qū)說明符而修改協(xié)處理器14的操作的概念允許簡化協(xié)處理器,以及降低處理器12及協(xié)處理器14之間命令傳送的開銷。協(xié)處理器14可以工作于數(shù)據(jù)驅(qū)動方式,其中響應(yīng)通過HDP[31:0]72來自處理器12的數(shù)據(jù)傳送,以及通過GPR 46中正更新的寄存器的REG[4:0]68的指示,進行處理。當與廣播屏蔽的概念結(jié)合時,只有實際數(shù)據(jù)驅(qū)動項被傳遞到協(xié)處理器14。通過這種方式,由REG[4:0]68指示的,對應(yīng)于由處理器12執(zhí)行的指令的目的寄存器的每個值,可以進一步指示由協(xié)處理器14執(zhí)行的具體操作,它是當前執(zhí)行上下文的一個函數(shù)。當一個寄存器廣播操作發(fā)生時,處理器12的指令執(zhí)行可以把GPR 46內(nèi)的具體寄存器作為目標以間接影響由協(xié)處理器14的選定功能。另外,當由H_REGION[N:1]指示的執(zhí)行上下文改變時,REG[4:0]68的具體編碼所對應(yīng)的選定功能可以改變,其中沒有通過處理器12顯式重新配置協(xié)處理器14的開銷。
在前面的說明書中參照特定實施例描述了本發(fā)明。然而本領(lǐng)域的普通技術(shù)人員理解,在不偏離如下面權(quán)利要求書提出的本發(fā)明的范圍的前提下可以進行各種修改和改變。例如,這里描述的電路可以通過單個集成電路,或不止一個集成電路,或硬件和軟件的組合來實現(xiàn)。相應(yīng)地,說明書和圖例只被看作圖解性的而不是限定性的,并且所有這種修改均被包含在本發(fā)明的范圍內(nèi)。
前面已經(jīng)針對具體實施例描述了本發(fā)明的益處、其它優(yōu)點和問題解決方案。然而,上述益處、優(yōu)點、問題解決方案和目的是使任何益處、優(yōu)點或解決方案付諸實現(xiàn)和易于理解的任何要素,均不得被解釋成任何或所有權(quán)利要求的關(guān)鍵、必需或必要特征或要素。這里,術(shù)語″包括″或其任何其他表達方式均被用來覆蓋非排它性的內(nèi)含,使得包括一系列要素的過程、方法、項目或裝置不僅僅包含那些要素,而是可以包含其它沒有明確列出或所述過程、方法、項目或裝置所固有的要素。
權(quán)利要求
1.一種使處理器通過協(xié)處理器通信總線向寄存器堆選擇性廣播寫事務(wù)的方法,所述處理器具有包括多個寄存器的所述寄存器堆和對應(yīng)于該寄存器堆的廣播說明符,該方法包括接收要寫入所述寄存器堆的操作數(shù);在所述寄存器堆中選擇所述多個寄存器中的一個;向所述寄存器堆提供要寫入所述寄存器堆的所述操作數(shù);及根據(jù)廣播說明符,通過所述協(xié)處理器通信總線選擇性地提供要寫入所述寄存器堆的所述操作數(shù)。
2.如權(quán)利要求1所述的方法,其中廣播說明符包括一組廣播指示符,該組廣播指示符內(nèi)的每個廣播指示符對應(yīng)于多個寄存器中的一個;通過所述協(xié)處理器通信總線選擇性地提供要寫入所述寄存器堆的所述操作數(shù)的步驟基于對應(yīng)于所述寄存器堆的所述多個寄存器中的選定一個的廣播指示符。
3.如權(quán)利要求1所述的方法,其中廣播說明符是處理器內(nèi)多個廣播說明符之一,多個廣播說明符中的每個對應(yīng)于處理器的至少一個廣播區(qū),并且其中如權(quán)利要求4所述的方法還包括通過所述協(xié)處理器通信總線選擇性地提供與當前寫事務(wù)的當前廣播區(qū)對應(yīng)的區(qū)指示符。
4.一種使通過協(xié)處理器通信總線連接到第二處理器的第一處理器選擇性地改變所述第一處理器的執(zhí)行模式的方法,包括通過所述協(xié)處理器通信總線從所述第二處理器接收區(qū)指示符,其中區(qū)指示符指示第二處理器的當前執(zhí)行區(qū);及根據(jù)區(qū)指示符選擇性地改變所述第一處理器的執(zhí)行模式。
5.一種使通過協(xié)處理器通信總線連接到第二處理器的第一處理器選擇性地改變所述第一處理器的執(zhí)行模式的方法,包括通過所述協(xié)處理器通信總線從所述第二處理器接收寄存器說明符,其中寄存器說明符指示所述第二處理器的寄存器堆內(nèi)正寫入操作數(shù)的選定寄存器;及根據(jù)寄存器說明符選擇性地改變所述第一處理器的執(zhí)行模式。
6.一種使具有包括多個寄存器的寄存器堆的處理器通過協(xié)處理器通信總線向所述寄存器堆選擇性廣播寫事務(wù)的方法,該方法包括接收要寫入所述寄存器堆的操作數(shù);選擇所述寄存器堆的所述多個寄存器中的一個;向所述寄存器堆提供要寫入所述寄存器堆的所述操作數(shù);及根據(jù)所述處理器的當前執(zhí)行區(qū),通過所述協(xié)處理器通信總線選擇性地提供要寫入所述寄存器堆的所述操作數(shù)。
7.一種處理器,包括多個寄存器;用于對多個寄存器之一執(zhí)行寫操作的電路;用于提供寫操作的操作數(shù)給所述多個寄存器之一的導(dǎo)體;一組廣播說明符;比較電路,用于比較多個寄存器之一和廣播說明符中的選定一個,并且用于提供廣播使能信號;及連接到比較電路的端口,用于與協(xié)處理器通信總線通信,所述端口包括至少一個協(xié)處理器通信總線信號,用于響應(yīng)廣播使能信號選擇性地提供所述操作數(shù)。
8.如權(quán)利要求7所述的處理器,其中該組廣播說明符內(nèi)的每個廣播說明符包括一組廣播指示符,其中每個廣播指示符對應(yīng)于多個寄存器中的至少一個。
9.如權(quán)利要求7所述的處理器,還包括程序計數(shù)器單元,用于指示地址位置;及廣播區(qū)控制單元,連接到程序計數(shù)器單元,用于指示何時來自程序計數(shù)器單元的所指示地址位置在一組廣播區(qū)之一內(nèi)。
10.一種處理器,包括多個寄存器;用于對多個寄存器之一執(zhí)行寫入的電路;用于提供寫操作的操作數(shù)給所述多個寄存器之一的導(dǎo)體;程序計數(shù)器單元,用于指示地址位置;執(zhí)行區(qū)控制單元,連接到程序計數(shù)器單元,用于指示何時來自程序計數(shù)器單元的所指示地址位置在一組執(zhí)行區(qū)之一內(nèi);及連接到比較電路的端口,用于與協(xié)處理器通信總線通信,所述端口包括至少一個協(xié)處理器通信總線信號,用于當所指示地址位置在一組執(zhí)行區(qū)之一內(nèi)時,指示該組執(zhí)行區(qū)中的當前執(zhí)行區(qū)。
全文摘要
本發(fā)明涉及使處理器(12)與至少一個協(xié)處理器(14,16)接口。一個實施例涉及具有一組廣播說明符的處理器,該處理器使用廣播說明符向一個協(xié)處理器通信總線選擇性地廣播處理器的寄存器內(nèi)寫入的操作數(shù)。因此每個廣播說明符可以包含對應(yīng)于處理器的每個通用寄存器的廣播指示符。一個可選實施例也可以使用廣播區(qū)(164,166,168,170)的概念,其中各個廣播區(qū)可以具有對應(yīng)的廣播說明符,其中一個廣播說明符可對應(yīng)于多個廣播區(qū)??蛇x地,在一個實施例中,處理器可以使用獨立于廣播說明符的廣播區(qū),其中協(xié)處理器能夠根據(jù)當前廣播區(qū)改變其功能。在一個實施例中,處理器可通過協(xié)處理器通信總線(30)提供一個區(qū)說明符(H REGION)以指示當前廣播區(qū)。
文檔編號G06F9/38GK1610880SQ02826499
公開日2005年4月27日 申請日期2002年10月30日 優(yōu)先權(quán)日2001年11月13日
發(fā)明者威廉·C·矛伊爾 申請人:自由度半導(dǎo)體公司