專利名稱:具有自適應(yīng)預(yù)測的關(guān)鍵字轉(zhuǎn)送的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及處理器的領(lǐng)域,尤其涉及處理器和相關(guān)電路中的緩存塊(cacheblock)填充的關(guān)鍵字的轉(zhuǎn)送。
背景技術(shù):
處理器通常實(shí)施加載和存儲操作以訪問存儲器的數(shù)據(jù)。所述加載規(guī)定存儲器位置的讀取,以將數(shù)據(jù)提供給處理器,所述存儲使用處理器提供的數(shù)據(jù)來規(guī)定存儲器位置的寫。根據(jù)處理器實(shí)施的指令集體系結(jié)構(gòu),加載和存儲可以是指令集體系結(jié)構(gòu)中規(guī)定的顯式指令、規(guī)定存儲器操作的指令中的隱式操作、或它們的組合。為了減小用于加載和存儲的存儲器延遲,處理器通常實(shí)施一個(gè)或多個(gè)緩存,在訪問主存儲器系統(tǒng)之前訪問該一個(gè)或多個(gè)緩存。緩存以緩存塊單元來存儲最近訪問過的數(shù)據(jù)。緩存塊在不同處理器中具有不同大小,如32字節(jié)、64字節(jié)、128字節(jié)等等。所述塊通常在存儲器中與它們的尺寸的自然邊界對準(zhǔn)。相應(yīng)地,如果所述加載在緩存中未命中(miss),則包含加載數(shù)據(jù)的緩存塊被從存儲器中讀取,并且傳送到緩存。盡管將緩存塊存儲到緩存中將減小命中(hit)緩存的其它訪問的延遲,處理器的性能常常受到等待加載數(shù)據(jù)的嚴(yán)重影響。通常,緩存塊使用從存儲器到處理器的互連的多次數(shù)據(jù)傳輸而傳送。為了減小對于加載數(shù)據(jù)的等待,加載數(shù)據(jù)被提供在緩存塊的第一傳送,然后傳送剩余數(shù)據(jù)。處理器和緩存被設(shè)計(jì)成,在等待要提供的緩存塊的同時(shí),將加載數(shù)據(jù)轉(zhuǎn)送到目標(biāo)。某些情況下,存儲器控制器可設(shè)計(jì)成,提供指示數(shù)據(jù)即將傳送的響應(yīng)(例如,在數(shù)據(jù)傳送之前若干時(shí)鐘周期),從而緩存/處理器可安排所述數(shù)據(jù)的轉(zhuǎn)送。這樣的存儲器控制器在傳送數(shù)據(jù)之前若干時(shí)鐘周期提供所述響應(yīng),并且保證所述數(shù)據(jù)將在所識別的時(shí)鐘周期傳送。因而,精確地安排所述轉(zhuǎn)送。
發(fā)明內(nèi)容
在實(shí)施例中,系統(tǒng)包括存儲器控制器、一個(gè)或多個(gè)處理器和對應(yīng)緩存。系統(tǒng)可能含有不確定源,不確定源阻止了在處理器緩存中不存在的加載操作的數(shù)據(jù)轉(zhuǎn)送的準(zhǔn)確安排。存儲器控制器可以提供早期響應(yīng),指示數(shù)據(jù)應(yīng)該在后續(xù)時(shí)鐘周期中提供。然而,轉(zhuǎn)送所述數(shù)據(jù)的實(shí)際時(shí)鐘周期由于系統(tǒng)的不確定性而變化。存儲器控制器與緩存/處理器之間的接口單元可以預(yù)測從當(dāng)前接收早期響應(yīng)到所述對應(yīng)數(shù)據(jù)的延遲,并可以推測地準(zhǔn)備轉(zhuǎn)送所述數(shù)據(jù),假如它將如預(yù)測的那樣可用。如果預(yù)測正確,數(shù)據(jù)可以按低延遲轉(zhuǎn)送。如果預(yù)測不正確,數(shù)據(jù)可能按更長延遲轉(zhuǎn)送。接口單元可以監(jiān)視在早期響應(yīng)與數(shù)據(jù)的轉(zhuǎn)送之間的延遲,或者至少所述延遲的變化部分?;跍y量的延遲,接口單元可以修改隨后預(yù)測的延遲。因而,接口單元可以隨著時(shí)間使所預(yù)測延遲適應(yīng)所述系統(tǒng)經(jīng)歷的實(shí)際延遲,調(diào)整不確定性。在實(shí)施例中,不確定性可以包括例如異步時(shí)鐘域父叉中的不確定冋步延遲;存儲器控制器、緩存、以及/或處理器內(nèi)的流水線延遲的不確定性;及由于系統(tǒng)操作模式的變化(例如,進(jìn)入和離開低功率模式等等)造成的時(shí)鐘頻率的一個(gè)或多個(gè)的變化。不確定源可以隨系統(tǒng)而不同。通過使預(yù)測延遲適應(yīng)經(jīng)歷的實(shí)際延遲,當(dāng)數(shù)據(jù)準(zhǔn)備轉(zhuǎn)送時(shí),用于數(shù)據(jù)的轉(zhuǎn)送路徑可能更多的被準(zhǔn)備好,某些實(shí)施例中,在緩存中未命中數(shù)據(jù)的情形下減小對于加載數(shù)據(jù)的平均延遲。
如下詳細(xì)描述參照附圖,現(xiàn)在簡短描述這些附圖。圖I是集成電路的一個(gè)實(shí)施例的方塊圖。圖2是在圖I表示的接口單元的一個(gè)實(shí)施例的方塊圖。圖3是流程圖,表明在圖2表示的延遲監(jiān)視器的一個(gè)實(shí)施例的操作。圖4是流程圖,更詳細(xì)地表明在圖3表示的流程圖的一部分的一個(gè)實(shí)施例。 圖5是流程圖,表明響應(yīng)于早期響應(yīng)指示的關(guān)鍵字轉(zhuǎn)送控制電路的一個(gè)實(shí)施例的操作。圖6是狀態(tài)機(jī)的一個(gè)實(shí)施例的方塊圖,該狀態(tài)機(jī)可以由關(guān)鍵字轉(zhuǎn)送控制電路的一個(gè)實(shí)施例實(shí)施。圖7是時(shí)序圖,表明關(guān)鍵字轉(zhuǎn)送的一個(gè)實(shí)施例的操作。圖8是系統(tǒng)的一個(gè)實(shí)施例的方塊圖。圖9是在圖I表示的接口單元的另一個(gè)實(shí)施例的方塊圖。盡管本發(fā)明可接收各種修改和備選形式,具體實(shí)施例作為例子表示在附圖,這里將詳細(xì)描述。然而,應(yīng)該理解,附圖和對其詳細(xì)描述不打算將本發(fā)明限于公開的特定形式,相反,旨在覆蓋落在附屬權(quán)利要求書所限定的本發(fā)明的精神和范圍內(nèi)的全部修改、等效物及備選例。這里使用的標(biāo)題僅用于組織目的,并且不意味著用來限制說明書的范圍。如貫穿本申請使用的那樣,字詞“可以(may)”用在容許意義上(即意味著具有可能性),而不是命令意義(即,意味著必須)。類似地,字詞“包括(include)”、“包括(including)”、以及“包括(includes)”是指包括但不限于。各個(gè)單元、電路、或其它元件可以描述成“配置成”執(zhí)行任務(wù)(一項(xiàng)或多項(xiàng))。這樣的上下文中,“配置成”是一般意味著“具有電路”的廣義陳述,該電路在操作期間執(zhí)行任務(wù)(一項(xiàng)或多項(xiàng))。這樣,即使當(dāng)單元/電路/元件當(dāng)前不通電時(shí),單元/電路/元件也可配置成執(zhí)行任務(wù)。一般地,形成與“配置成”相對應(yīng)的結(jié)構(gòu)的電路可以包括硬件電路。類似地,各個(gè)單元/電路/元件為了方便,在描述中可以描述成執(zhí)行任務(wù)(一項(xiàng)或多項(xiàng))。這樣的描述應(yīng)該解釋成包括短語“配置成”。所述配置成執(zhí)行一項(xiàng)或多項(xiàng)任務(wù)的單元/電路/元件特意不適用35U. S. C. § 112的第六段的對單元/電路/元件的解釋。
具體實(shí)施例方式現(xiàn)在轉(zhuǎn)到圖1,表示耦合到存儲器12的集成電路10的一個(gè)實(shí)施例方塊圖。所示實(shí)施例中,集成電路10包括一個(gè)或多個(gè)處理器,如處理器14A-14B、二級(L2)緩存16、接口單元18、以及存儲器控制器20。處理器14B的一部分更詳細(xì)地顯示在圖1,以包括寄存器文件22和數(shù)據(jù)緩存24。處理器14A可以是相似的。存儲器控制器20配置成耦合到存儲器12,并且可以經(jīng)接口耦合到接口單元18。如在圖I顯示的那樣,接口可以包括請求、寫數(shù)據(jù)和讀數(shù)據(jù)、以及早期響應(yīng)。接口單元18也經(jīng)過寫總線和讀總線耦合到L2緩存16,該寫總線被標(biāo)記為“寫”的,該讀總線包括讀請求和讀數(shù)據(jù)。接口單元18還經(jīng)仲裁信令耦合到L2緩存16,仲裁信令包括讀仲裁(Read Arb)、同意(Gnt)、以及取消(Cxcl )。處理器14A-14B由接口耦合到L2緩存16,這些接口可以包括請求、寫數(shù)據(jù)、以及讀數(shù)據(jù)。時(shí)鐘域邊界也顯示在圖I為虛線26。處理器14A-14B可以配置成,執(zhí)行加載和存儲操作(更簡明地這里稱作加載和存儲),并且可以配置成檢測在它們的本地緩存(例如,在處理器14B的數(shù)據(jù)緩存24和在處理器14A的類似緩存)中的緩存未命中。對于加載,處理器14A-14B可以配置成將緩存填充請求傳輸?shù)絃2緩存16,以讀取未命中緩存塊。對于存儲未命中,在某些實(shí)施例中,處理器14A-14B也可以配置成傳輸緩存填充請求。其它實(shí)施例中,處理器14A-14B可以配置成傳輸所述存儲以更新L2緩存16和/或存儲器12,但不可傳輸緩存填充來讀取所述未命中緩存塊。處理器14A-14B可以配置成將標(biāo)識符(例如,事務(wù)標(biāo)識符或TID)分配給每個(gè)緩存填充請求和由處理器14A-14B啟動的每個(gè)其它事務(wù)。TID可以與事務(wù)的請求、數(shù)據(jù)等一起傳送,以將所述傳輸識別為同一事務(wù)的部分。 如圖I顯示的那樣,在處理器14B與L2緩存16之間的接口可以包括請求總線(例如,地址、命令等)和讀/寫數(shù)據(jù)總線。讀和寫數(shù)據(jù)總線可以是所示的分離單向總線,或者可以組合為雙向數(shù)據(jù)總線。在某些實(shí)施例(未示在圖I中),也可以有用來傳輸相干響應(yīng)的響應(yīng)總線。其它實(shí)施例可以使用其它接口,如分組接口,用來傳輸請求、響應(yīng)、以及數(shù)據(jù)。處理器14A的接口可以與對于處理器14B的接口相似。處理器14A-14B可以配置成,傳輸在緩存填充請求中的緩存塊的地址。地址可以包括加載的最低有效位,所述加載正是所檢測的緩存未命中,以識別所述加載試圖在緩存線之內(nèi)訪問的字。相應(yīng)地,L2緩存16和存儲器控制器20 (對于L2緩存未命中)可以提供有識別緩存塊的哪部分應(yīng)該最先返回的信息,以容許加載數(shù)據(jù)的轉(zhuǎn)送?!白?word)”可以是由加載訪問的數(shù)據(jù)量(例如,若干連續(xù)字節(jié))。在某些指令集體系結(jié)構(gòu)中,加載(load)可以定義為訪問各種數(shù)據(jù)大小。所述字可以是所述數(shù)據(jù)大小之一,并且其它數(shù)據(jù)大小可以以字為單位表示(例如,訪問字的一半的加載是半個(gè)字,一個(gè)字,訪問兩個(gè)相鄰字的加載的雙字等)。所述加載訪問的所述字常常稱作為緩存塊“關(guān)鍵字(critical word)”,被提供給緩存填充,因?yàn)樵撟质窃诰彺鎵K中對處理器的當(dāng)前性能最重要的字。就是說,直到提供了關(guān)鍵字,處理器停滯在加載操作(并且對于加載的任何從屬操作也停滯)。處理器在某些實(shí)施例中可以配置成,推測地執(zhí)行其它的非依賴操作,但為了完成所述加載和其依賴操作,需要該關(guān)鍵字。如在圖I顯示的那樣,讀數(shù)據(jù)總線可以耦合到數(shù)據(jù)緩存24,以將緩存塊寫入到緩存中,也可以耦合到寄存器文件22,以將關(guān)鍵字寫入到寄存器文件22。可以有多路復(fù)用(多路調(diào)制)或其它切換,以從讀數(shù)據(jù)中選擇要寫入到寄存器文件22中的關(guān)鍵字(未表示在圖I)。也可以有緩沖,以將來自讀數(shù)據(jù)總線的數(shù)據(jù)串行輸送到數(shù)據(jù)緩存24和/或寄存器文件22。緩存塊可以從存儲器控制器20傳輸?shù)浇涌趩卧?8,在所述接口多次傳輸。每個(gè)傳輸這里可以稱作數(shù)據(jù)取字(beat of data)。例如,32字節(jié)緩存塊可以作為8字節(jié)的4個(gè)取字而傳輸。取字的大小可以隨實(shí)施例不同。較大取字可以在較寬數(shù)據(jù)總線傳輸,因而傳輸緩存塊只需要更少次數(shù)的取字。另一方面,較寬數(shù)據(jù)總線可能更貴,就提供在集成電路10的相互連接(接線)(其它實(shí)施例中,在集成電路上的針)而論。相應(yīng)地,取字的大小可以基于設(shè)計(jì)/性能折衷而隨實(shí)施例不同。取字的大小在不同處也可以不同。例如,L2緩存16與接口單元18之間傳輸?shù)娜∽?、和處理?4A-14B與L2緩存16之間傳輸?shù)娜∽?,各自相對于接口單?8與存儲器控制器20之間的取字可以大小不同(并且彼此也可以大小不同)。L2緩存16可以配置成,檢查來自處理器14B的緩存填充請求的命中,并且可以配置成,當(dāng)檢測到緩存命中時(shí),將緩存塊(有初始取字中的關(guān)鍵字)返回到處理器14B。L2緩存16中的緩存命中不必轉(zhuǎn)到接口單元18。L2緩存16可以包括用于從處理器14A-14B接收的請求的隊(duì)列或其它緩沖,也可以包括用于傳輸?shù)浇涌趩卧?8的L2緩存未命中的隊(duì)列/緩沖(未表示在圖I)。所示實(shí)施例中,L2緩存16可以包括對接口單元18的寫總線接口(在圖I 一般表示為“寫”)、和對接口單元18的讀總線接口,讀總線接口包括在圖I表示的讀請求和讀數(shù)據(jù)總線。其它實(shí)施例可以使用用于讀和寫的單個(gè)總線接口(或各自可以傳輸讀和寫的多重總線接口)、或其它類型的接口,如分組接口。L2緩存16與接口單元18之間的接口也可以包括仲裁,所以接口單元18可以仲裁將數(shù)據(jù)轉(zhuǎn)送到處理器14B,如以前提到和下面更詳細(xì)描 述的那樣。接口單元18可以配置成,仲裁轉(zhuǎn)送關(guān)鍵字以及轉(zhuǎn)送緩存塊以用于緩存填充。L2緩存16也可能正在將L2緩存命中數(shù)據(jù)提供給處理器14A-14B,因而在L2緩存命中數(shù)據(jù)與來自接口單元18的數(shù)據(jù)傳輸之間的仲裁可以在競爭數(shù)據(jù)源之間提供適當(dāng)?shù)奶幚砥骺偩€的訪問。在L2緩存未命中的情況下,L2緩存16可以配置成將讀請求傳輸?shù)浇涌趩卧?8。接口單元18可以配置成,隨后在接口將所述請求傳輸?shù)酱鎯ζ骺刂破?0。接口單元18的一個(gè)實(shí)施例的另外細(xì)節(jié)下面關(guān)于圖2討論。所述接口在所示實(shí)施例中包括請求總線、寫數(shù)據(jù)總線、以及讀數(shù)據(jù)總線(盡管在其它實(shí)施例可以使用雙向讀/寫數(shù)據(jù)總線,另外的其它實(shí)施例可以實(shí)施分組接口)。所示實(shí)施例中,從接口單元18到存儲器控制器20的請求傳輸可以包括跨過時(shí)鐘域邊界,時(shí)鐘域邊界在圖I由虛線26顯示。就是說,線26以上的電路(處理器14A-14B、L2緩存16、以及接口單元18的一部分)在一個(gè)時(shí)鐘域,存儲器控制器20和與其連接接口可以在不同的時(shí)鐘域。時(shí)鐘域之內(nèi)的時(shí)鐘可以是同步的,因而時(shí)鐘的上升和下降沿的關(guān)系可以是確定的(允許噪聲和抖動)。時(shí)鐘域之內(nèi)的電路可以同一頻率和相位而計(jì)時(shí)(即,邏輯上是同一時(shí)鐘),或者以不同頻率但彼此鎖相而計(jì)時(shí)。另一方面,不同時(shí)鐘域的時(shí)鐘可以是彼此異步的。不同時(shí)鐘域的時(shí)鐘之間可能沒有確定性相位關(guān)系。時(shí)鐘可以在不同的頻率,頻率不具有彼此的任何依賴性。一個(gè)域的時(shí)鐘可以獨(dú)立于其它時(shí)鐘域、并且不對其它時(shí)鐘域的任何信令或其它通知而改變頻率。相應(yīng)地,接口單元18可以包括同步電路,以將信息(請求、數(shù)據(jù)等)安全地從一個(gè)時(shí)鐘域傳輸?shù)搅硪粋€(gè)。同步電路可以包括能夠在一個(gè)時(shí)鐘域中正確地捕獲信息(例如,滿足在源時(shí)鐘域的計(jì)時(shí)要求)并且將信息正確地傳輸?shù)狡渌鼤r(shí)鐘域(例如,滿足在接收時(shí)鐘域的計(jì)時(shí)要求)的任何電路。先進(jìn)先出緩沖器(FIFO)下面用作例子,但可以使用任何同步電路。圖I中在時(shí)鐘域邊界26以上的時(shí)鐘域這里稱作處理器時(shí)鐘域,在時(shí)鐘域邊界下面的時(shí)鐘域稱作存儲器時(shí)鐘域。每個(gè)時(shí)鐘域的對應(yīng)時(shí)鐘可以分別稱作處理器時(shí)鐘(一個(gè)或多個(gè))和存儲器時(shí)鐘(一個(gè)或多個(gè))。類似地,給定時(shí)鐘域中的時(shí)鐘周期可以分別稱作處理器時(shí)鐘周期和存儲器時(shí)鐘周期。時(shí)鐘周期可以是對應(yīng)時(shí)鐘的一個(gè)周期。
存儲器控制器20可以配置成讀取用于緩存塊的數(shù)據(jù),讀取所述取字(beat),該取字包括關(guān)鍵字,在其它數(shù)據(jù)之前。存儲器控制器20可以配置成傳輸所述取字,該取字包括關(guān)鍵字,在緩存塊的其它取字之前。為了簡便起見,包括關(guān)鍵字的取字這里也可以稱作關(guān)鍵字。接口單元18可以接收關(guān)鍵字,并且可以配置成傳輸用于L2緩存16的仲裁請求(Read Arb),以轉(zhuǎn)送關(guān)鍵字。Read Arb請求也可以識別正在請求哪個(gè)處理器14A-14B。L2緩存16可以配置成,在接口單元18與來自在L2緩存16的緩存命中的數(shù)據(jù)之間仲裁,以確定哪些數(shù)據(jù)要在讀數(shù)據(jù)總線上傳輸?shù)教幚砥?4B (對于處理器14A可以類似地仲裁)。如果L2緩存16同意接口單元18的請求,則L2緩存16可以配置成將同意傳輸?shù)浇涌趩卧?8。另外,L2緩存16可以準(zhǔn)備從來自接口單元18的讀數(shù)據(jù)總線至到處理器14B的讀數(shù)據(jù)總線的轉(zhuǎn)送路徑28。路徑28可以包括多路調(diào)制或其它切換,如果需要,也可以包括緩沖。接口單元18可以配置成傳輸所述數(shù)據(jù)。一般地,轉(zhuǎn)送路徑可以包括連線、緩沖、多路調(diào)制以及/ 或可以將數(shù)據(jù)從源傳輸?shù)侥康牡氐钠渌娐返娜我饨M合。存儲器控制器20也可以配置成返回用于緩存填充的早期響應(yīng),早期響應(yīng)指示了期望關(guān)鍵字在傳輸該早期響應(yīng)的存儲器時(shí)鐘周期(“早期響應(yīng)時(shí)鐘周期”)之后的存儲器時(shí)鐘周期中轉(zhuǎn)送。早期響應(yīng)可以包括緩存填充的TID,標(biāo)識該早期響應(yīng)為哪個(gè)事務(wù)而提供。在后續(xù)時(shí)鐘周期與早期響應(yīng)時(shí)鐘周期之間的存儲器時(shí)鐘周期數(shù)量可以隨實(shí)施例不同。一般地,存儲器時(shí)鐘周期的數(shù)量可以選擇成為接口單元18、L2緩存16、以及處理器14A-14B提供準(zhǔn)備轉(zhuǎn)送數(shù)據(jù)的時(shí)間。一個(gè)或多個(gè)處理器時(shí)鐘周期可以用來準(zhǔn)備所述轉(zhuǎn)送路徑。例如,可能需要若干處理器時(shí)鐘周期來傳輸請求、仲裁、返回同意以及實(shí)際準(zhǔn)備路徑。以這種方式,與沒有早期響應(yīng)并且當(dāng)接收到關(guān)鍵字時(shí)進(jìn)行L2的仲裁的情況相比,可以減小轉(zhuǎn)送關(guān)鍵字的延遲。然而,如果在接收到同意時(shí)所述數(shù)據(jù)沒有準(zhǔn)備好轉(zhuǎn)送(例如,因?yàn)橄旅娴母鞣N不確定性),則接口單元18可以取消數(shù)據(jù)傳輸,并可以在轉(zhuǎn)送路徑的再次仲裁之前,等待所述關(guān)鍵字。存儲器控制器20可以配置成,在緩存填充的讀取已經(jīng)通過存儲器控制器20中的命令點(diǎn)并且到存儲器12的傳輸已經(jīng)安排之后,返回所述早期響應(yīng)。存儲器控制器20在一個(gè)實(shí)施例中可以包括旁通路徑,以在早期響應(yīng)所指示的周期返回所述讀取數(shù)據(jù)。在實(shí)施例中,接口到存儲器12的物理層電路可以配置成,動態(tài)地調(diào)整數(shù)據(jù)返回延遲,以跟蹤存儲器12的操作。這樣的實(shí)施例中,物理層電路可以配置成,將指示當(dāng)前延遲的反饋提供給存儲器控制器邏輯電路。存儲器控制器20可以使用所述反饋來調(diào)整早期返回響應(yīng)的輸送。早期響應(yīng)與關(guān)鍵字之間的存儲器時(shí)鐘周期數(shù)量也可以選擇成,當(dāng)處理器時(shí)鐘正在其最低支持頻率運(yùn)行而存儲器正在其最高頻率運(yùn)行時(shí),容許數(shù)據(jù)路徑的準(zhǔn)備。在其它時(shí)鐘頻率設(shè)置下,早期響應(yīng)可以比它(不然可能需要提供的時(shí)間)更早提供,但早期響應(yīng)在時(shí)鐘頻率的任何配置是可用的。另外,早期響應(yīng)與對應(yīng)數(shù)據(jù)之間的存儲器時(shí)鐘周期數(shù)量可以選擇成,為接口單元18提供對L2緩存16的仲裁的某種靈活性。接口單元18可以改變仲裁請求時(shí)序(與早期響應(yīng)的傳輸相比),以考慮早期響應(yīng)與對應(yīng)數(shù)據(jù)之間的延遲的各種不確定源。接口單元18可以適應(yīng)基于系統(tǒng)實(shí)際經(jīng)歷的延遲的仲裁請求時(shí)序,使轉(zhuǎn)送路徑的準(zhǔn)備更密切地與關(guān)鍵字的到達(dá)相匹配,因而可以更多地以較短延遲成功轉(zhuǎn)送關(guān)鍵字。如以上提到的那樣,存在從早期響應(yīng)到對應(yīng)數(shù)據(jù)的延遲的不確定源。不確定性可以包括例如異步時(shí)鐘域交叉的不確定性。依據(jù)數(shù)據(jù)到達(dá)時(shí)時(shí)鐘的捕獲邊緣的相位關(guān)系,在各個(gè)時(shí)間點(diǎn)所述延遲可以相差一個(gè)處理器時(shí)鐘周期。另外,任一時(shí)鐘的時(shí)鐘頻率的變化可以是不確定源,直到接口單元18對于新延遲已經(jīng)調(diào)整(如處理器時(shí)鐘周期中測量的那樣)。在處理器14A-14B、L2緩存16、接口單元18以及/或存儲器控制器20中的流水線停滯可以是不確定源,如L2緩存16的仲裁延遲可以是不確定源。相應(yīng)地,接口單元18可以配置成,監(jiān)視在以前關(guān)鍵字轉(zhuǎn)送操作中經(jīng)歷的延遲。接口單元18可以配置成,基于以前經(jīng)歷的延遲,預(yù)測對于當(dāng)前關(guān)鍵字轉(zhuǎn)送操作可能經(jīng)歷的延遲。就是說,接口單元18可以基于最近經(jīng)歷延遲來調(diào)整預(yù)測延遲。相應(yīng)地,隨著時(shí)間,接口單元18可以更精確地進(jìn)行關(guān)鍵字轉(zhuǎn)送,因?yàn)榻涌趩卧?8適應(yīng)了不確定性。處理器14A-14B可以實(shí)施任何指令體系結(jié)構(gòu)。各個(gè)實(shí)施例中,處理器14A-14B可以實(shí)施任何微體系結(jié)構(gòu),包括超標(biāo)量或標(biāo)量、超流水線或流水線、無序或有序、推測或非推測等。根據(jù)需要,各個(gè)實(shí)施例可以采用微編碼技術(shù)或者不采用。數(shù)據(jù)緩存24可以具有任何容量和配置(例如,集相關(guān)、直接映像等)。給定實(shí)施例中包括的處理器14A-14B的數(shù)量可以改變,包括具有一個(gè)處理器或多于兩個(gè)處理器的實(shí)施例。寄存器文件22可以包括與任何數(shù) 量的寄存器相對應(yīng)的存儲裝置。例如,寄存器文件22可以包括至少與處理器14A-14B實(shí)施的指令集體系結(jié)構(gòu)中規(guī)定的通用寄存器的數(shù)量一樣多的寄存器。在實(shí)施例中,寄存器文件22可以包括數(shù)量比通用寄存器的數(shù)量多的寄存器,以支持寄存器再命名、用于微代碼使用的臨時(shí)寄存器等。L2緩存16可以如希望的那樣,具有任何容量和配置。L2緩存16可以包括數(shù)據(jù)緩存24,或者可以排除或不包括它。其它實(shí)施例可以不包括L2緩存16 (處理器14A-14B可以直接耦合到接口單元18)。另外的其它實(shí)施例可以包括另外的結(jié)構(gòu)層級。存儲器控制器20可以包括電路,該電路配置成接收存儲器請求,并且配置成與存儲器12接口以完成所述請求。各個(gè)實(shí)施例中,存儲器控制器20可以配置成,接口到任何類型的存儲器,例如,靜態(tài)隨機(jī)存取存儲器(SRAM)或各種類型的動態(tài)RAM(DRAM),如同步DRAM(SDRAM)、雙數(shù)據(jù)速率(DDR、DDR2、DDR3、DDR4 等)DRAM、低功率 DDR (LPDDR2 等)DRAM、RAMBUSDRAM 等。所示實(shí)施例中,處理器14A_14B、L2緩存16、接口單元18以及存儲器控制器20全部集成到單個(gè)半導(dǎo)體基片,作為集成電路10。其它實(shí)施例可以實(shí)施其它集成級和/或分立元件。集成電路10也可以集成外圍電路,以形成在芯片上系統(tǒng)(SOC)實(shí)施。例如,SOC還可以包括視頻和/或聲頻處理電路、耦合到芯片外外圍設(shè)備的芯片上外圍設(shè)備和/或外圍設(shè)備接口等。盡管一個(gè)時(shí)鐘域邊界26顯示在圖1,但其它實(shí)施例可以包括多個(gè)時(shí)鐘域邊界。在實(shí)施例中,處理器14A-14B可以是處理器裝置的例子;L2緩存16可以是高速緩沖存儲裝置的例子;接口單元18可以是接口裝置的例子;及存儲器控制器20可以是存儲器控制器裝置的例子。每個(gè)裝置可以是用來為對應(yīng)元件提供以上描述的操作的裝置。一般地,可以使用進(jìn)行指定操作的組合的和/或順序的邏輯電路。 其次轉(zhuǎn)到圖2,顯示接口單元18的一個(gè)實(shí)施例的方塊圖。在所示實(shí)施例中,接口單元18包括寫隊(duì)列30、讀請求隊(duì)列32、讀數(shù)據(jù)隊(duì)列34、L2仲裁(Arb)電路36、請求控制電路38、計(jì)數(shù)器40、關(guān)鍵字轉(zhuǎn)送控制電路42、延遲監(jiān)視電路44、以及異步(async)FIFO 46A、46B、46C以及46D。寫隊(duì)列30耦合成從L2緩存16接收寫操作,并且耦合到async FIFO 46A-46B和請求控制電路38。讀請求隊(duì)列32耦合成從L2緩存16接收讀請求,并且耦合到請求控制電路38和async FIFO 46B。計(jì)數(shù)器40耦合到async FIFO 46B。讀數(shù)據(jù)隊(duì)列34耦合到對于L2緩存16的讀數(shù)據(jù)接口、L2Arb電路36、以及async FIFO 46C。L2 Arb電路36耦合到對于L2緩存16的仲裁接口(讀Arb、Gnt以及Cxcl)和關(guān)鍵字轉(zhuǎn)送控制電路42。關(guān)鍵字轉(zhuǎn)送控制電路42耦合到延遲監(jiān)視電路44和async FIFO 46D。延遲監(jiān)視電路44耦合到async FIFO 46C-46D。async FIFO 46A耦合到至存儲器控制器20的寫數(shù)據(jù)總線。asyncFIFO 46B耦合到至存儲器控制器20的請求總線,并且耦合到async FIFO 46C-46D。asyncFIFO 46C耦合到來自存儲器控制器20的讀數(shù)據(jù)總線,并且async FIFO 46D耦合成從存儲器控制器20接收早期響應(yīng)。關(guān)鍵字轉(zhuǎn)送控制電路42可以耦合成從存儲器控制器20接收早期響應(yīng)指示(經(jīng)async FIFO 46D),并且可以配置成,確定何時(shí)推測地仲裁L2緩存16,以便轉(zhuǎn)送與接收早期響應(yīng)對應(yīng)的關(guān)鍵字。更具體地說,關(guān)鍵字轉(zhuǎn)送控制電路42可以配置成,在接收到早期響應(yīng)之后的N個(gè)處理器時(shí)鐘周期,產(chǎn)生仲裁轉(zhuǎn)送路徑28的請求,其中N是正整數(shù)(大于零)。時(shí)鐘周期數(shù)“N”可以選擇成,將轉(zhuǎn)送路徑的同意與其中關(guān)鍵字適于轉(zhuǎn)送的時(shí)鐘周期對準(zhǔn),從而可以減少對于關(guān)鍵字的延遲。更具體地,N的大小可以是由延遲監(jiān)視電路44計(jì)算的延遲, 或者可以從所述延遲導(dǎo)出。關(guān)鍵字轉(zhuǎn)送控制電路42可以向L2 Arb電路36發(fā)信令以請求仲裁,并且L2 Arb電路36可以響應(yīng)地傳輸Read Arb。在一個(gè)實(shí)施例中,關(guān)鍵字轉(zhuǎn)送控制電路42可以配置成同時(shí)跟蹤多個(gè)早期響應(yīng)。例如,關(guān)鍵字轉(zhuǎn)送控制電路42可以包括狀態(tài)機(jī)或其它邏輯電路的多個(gè)實(shí)例,每個(gè)實(shí)例可分配成跟蹤單獨(dú)的一個(gè)早期響應(yīng)。關(guān)鍵字轉(zhuǎn)送控制電路42可以配置成,當(dāng)接收到早期響應(yīng)時(shí)將閑置狀態(tài)機(jī)分配給早期響應(yīng)。存儲器控制器20可以與其它讀數(shù)據(jù)相似地將所述關(guān)鍵字提供給接口單元18,接口單元18可以使用async FIFO 46C使數(shù)據(jù)同步進(jìn)入處理器時(shí)鐘域??梢詫?shù)據(jù)提供給讀數(shù)據(jù)隊(duì)列34以便存儲,并且可以從讀數(shù)據(jù)隊(duì)列34在讀數(shù)據(jù)總線上轉(zhuǎn)送到L2緩存16。在某些實(shí)施例中,關(guān)鍵字可以繞過讀數(shù)據(jù)隊(duì)列34,并且可適于提前一個(gè)處理器時(shí)鐘周期轉(zhuǎn)送。延遲監(jiān)視電路44可以配置成,測量在早期響應(yīng)與從async FIF046D和46C分別提供的對應(yīng)數(shù)據(jù)之間的延遲,以檢測實(shí)際經(jīng)歷的延遲(以處理器時(shí)鐘周期計(jì)算)。當(dāng)所測量延遲與以前測量延遲不同時(shí),延遲監(jiān)視電路44可以配置成,修改提供給關(guān)鍵字轉(zhuǎn)送控制電路42的延遲。在一個(gè)實(shí)施例中,延遲監(jiān)視電路可以調(diào)整所述延遲,但可以不立即將延遲設(shè)置成等于當(dāng)前測量延遲。相反,延遲監(jiān)視電路44可以將延遲修改成較接近當(dāng)前測量延遲。隨著時(shí)間,如果當(dāng)前測量延遲保持穩(wěn)定,則來自延遲監(jiān)視電路44的延遲可以接近當(dāng)前測量延遲。另一方面,當(dāng)前測量延遲的短期變化不應(yīng)過分地影響提供給關(guān)鍵字轉(zhuǎn)送控制電路42的延遲。盡管延遲監(jiān)視電路44可以測量從早期響應(yīng)到實(shí)際接收數(shù)據(jù)的延遲,但各個(gè)實(shí)施例可以測量在早期響應(yīng)與關(guān)鍵字的轉(zhuǎn)送之間的延遲的任何部分,或者可以甚至測量整個(gè)延遲。所示實(shí)施例中,計(jì)數(shù)器40對于處理器時(shí)鐘域的每個(gè)時(shí)鐘周期可以增加1,并且可以用作讀數(shù)據(jù)和早期響應(yīng)的時(shí)間戳。計(jì)數(shù)器的當(dāng)前值在每個(gè)時(shí)鐘周期可以寫到async FIFO46B (與來自讀請求隊(duì)列32或?qū)戧?duì)列30的讀或?qū)懻埱笠黄?,如果有的?,并且在asyncFIFO 46B的輸出提供為到async FIFO 46C和46D的輸入。時(shí)間戳可以寫到async FIFO46C-46D(分別與讀數(shù)據(jù)和早期響應(yīng)數(shù)據(jù)一起,如果有的話)。延遲監(jiān)視電路44可以從asyncFIFO 46C-46D接收時(shí)間戳和TID。延遲監(jiān)視電路44可以將同一 TID的時(shí)間戳之差當(dāng)作延遲測量。其它實(shí)施例可以按其它方式測量延遲。另外,其它實(shí)施例可以使用其它同步電路,以使時(shí)間戳與存儲器時(shí)鐘域同步(即,代之以使用async FIF046B)。例如,圖9是接口單元18的另一個(gè)實(shí)施例的方塊圖。圖9的實(shí)施例中,計(jì)數(shù)器40耦合到灰度編碼器160?;叶染幋a器160可以配置成灰度編碼所述計(jì)數(shù)器值,并且將灰度編碼值提供給同步器162。同步器162可以配置成,使灰度編碼值與存儲器時(shí)鐘域同步。同步器162的輸出耦合到灰度譯碼器164,灰度譯碼器164耦合成將時(shí)間戳提供給async FIFO 46C-46D。灰度譯碼器164可以譯碼灰度編碼計(jì)數(shù)器值,并且將所述值作為時(shí)間戳供給到async FIFO 46C-46D。一般地,灰度編碼可以設(shè)計(jì)成,每次所述值遞增時(shí),只有值的一比特變化。灰度編碼可以保證,即使在時(shí)鐘域邊界26上有比特同步時(shí)序的變化,在存儲器時(shí)鐘域中采樣了有效值。圖9的同步電路可以用在例如僅當(dāng)新請求將被傳輸?shù)酱鎯ζ骺刂破?0時(shí)才寫async FIFO 46B的實(shí)施中。就是說,計(jì)數(shù)器值可以連續(xù)地與存儲器時(shí)鐘域同步,而async FIFO 46B僅使有效請求與存儲器時(shí)鐘域同步(這不是每個(gè)時(shí)鐘周期都發(fā)生)。async FIFO 46C-46D在本實(shí)施例中可以用作同步電路,使時(shí)鐘域邊界26上的信 息傳輸同步。一般地,async FIFO可以包括存儲器,該存儲器排列成多個(gè)入口 ;源時(shí)鐘域中的寫指針,該寫指針指向入口之一,下條信息要從源時(shí)鐘域?qū)懙竭@個(gè)入口 ;和接收時(shí)鐘域中的讀指針,該讀指針指向另一個(gè)入口,接收時(shí)鐘域中下條信息要從該另一個(gè)入口讀取。通過保證讀指針和寫指針不指向同一入口(在某些情況下,保證在讀和寫指針之間有一個(gè)或多個(gè)入口),可以保證入口中的所述信息從響應(yīng)讀指針讀之前的寫開始在所述入口中是穩(wěn)定的。所示實(shí)施例中,async FIFO 46A-46B可以配置成,使外出寫數(shù)據(jù)和讀/寫請求(分另O)與存儲器控制器20同步。更具體地,當(dāng)從L2緩存16接收時(shí),讀請求可以在讀請求隊(duì)列32中排隊(duì),寫請求和數(shù)據(jù)可以在寫隊(duì)列30中排列。請求控制電路38可以配置成,監(jiān)視寫隊(duì)列30和讀請求隊(duì)列32,并且可以配置成,選擇要傳輸?shù)酱鎯ζ骺刂破?0的請求。選中的請求可以從隊(duì)列30或32寫到async FIFO 46B。讀請求隊(duì)列32中的一個(gè)示范入口被顯示,包括地址字段(Addr),存儲所述請求的地址;屬性字段中的各種屬性(Attr);及事務(wù)ID字段(TID),存儲被分配給所述請求的TID。寫隊(duì)列入口可以是相似的,但還可以包括用于數(shù)據(jù)的數(shù)據(jù)字段(或者可以有獨(dú)立的寫數(shù)據(jù)隊(duì)列)。請求地址、屬性及TID被顯示為在async FIFO46B中在示范入口中的請求字段(Req),與來自以前所討論的計(jì)數(shù)器40的時(shí)間戳一起。寫數(shù)據(jù)和TID也顯示在async FIFO 46A的示范入口。async FIFO 46C-46D可以配置成,使進(jìn)入讀數(shù)據(jù)和分別來自存儲器控制器20的早期響應(yīng)相同步。在async FIFO 46C中的示范入口顯示了讀數(shù)據(jù)(Data)和TID字段以及時(shí)間戳字段(TS),該時(shí)間戳字段(TS)捕獲來自async FIFO 46B的時(shí)間戳。來自async FIFO46C的數(shù)據(jù)可以寫到讀數(shù)據(jù)隊(duì)列34,以便傳輸?shù)絃2緩存16。示范讀數(shù)據(jù)隊(duì)列入口顯示數(shù)據(jù)字段(Data)和TID字段(TID)。async FIFO 46D顯示示范入口,包括為其提供早期響應(yīng)的所述讀的TID以及時(shí)間戳字段(TS)。在實(shí)施例中,隊(duì)列30、32及34可以是例如隊(duì)列裝置;L2 Arb電路36可以是例如仲裁裝置;關(guān)鍵字轉(zhuǎn)送控制電路42可以是例如關(guān)鍵字轉(zhuǎn)送裝置;延遲監(jiān)視電路44可以是例如監(jiān)視裝置;計(jì)數(shù)器40可以是例如計(jì)數(shù)裝置;請求控制電路38可以是例如請求控制裝置;及async FIFO 46A-46D可以是例如同步裝置。每個(gè)裝置可以是為對應(yīng)元件提供以上描述的操作的裝置。一般地,可以使用進(jìn)行規(guī)定操作的任何組合和/或順序邏輯電路。要注意,接口單元18的其它實(shí)施例可以具有用于L2緩存16和/或存儲器控制器20的不同接口,內(nèi)部可以有其它差別。例如,在實(shí)施例中,到L2緩存16的寫請求和寫數(shù)據(jù)接口可以是分離的,到L2的仲裁接口可以用于讀(如以前描述的那樣)和寫(提取寫數(shù)據(jù))。在實(shí)施例中,寫請求和讀請求可以在不同接口傳輸?shù)酱鎯ζ骺刂破?0,并且可以有用于讀和寫請求的分離async FIFO。也可以有存儲器控制器20的不同的寫數(shù)據(jù)和寫響應(yīng)接口、和用于這些接口的分離asyncFIFO。任何配置可以用在各個(gè)實(shí)施例中?,F(xiàn)在轉(zhuǎn)到圖3,所示流程圖顯示延遲監(jiān)視電路44的一個(gè)實(shí)施例的操作,該延遲監(jiān)視電路44測量延遲,并且基于測量的延遲調(diào)整提供給關(guān)鍵字轉(zhuǎn)送控制電路42的延遲。盡 管方塊為了理解容易按特定順序表示,但可以使用其它順序。在延遲監(jiān)視電路44實(shí)施的組合邏輯中可以并行執(zhí)行方塊。方塊、方塊組合、以及/或作為整體的流程圖可以在多個(gè)時(shí)鐘周期按流水線進(jìn)行。延遲監(jiān)視電路44可以配置成實(shí)施在圖3表示的操作。如果延遲監(jiān)視電路44接收到早期響應(yīng)(判定方塊50的“是”分支),延遲監(jiān)視電路44可以捕獲來自async FIFO 46D的TID和時(shí)間戳(方塊52)。延遲監(jiān)視電路44可以配置成,同時(shí)跟蹤多于一個(gè)早期響應(yīng)。因而,延遲監(jiān)視電路44可以包括捕獲高達(dá)M個(gè)TID和時(shí)間戳的資源,其中M是大于零的正整數(shù)。如果在async FIFO 46C中接收到關(guān)鍵字(判定方塊54的“是”分支),延遲監(jiān)視電路44可以將所述關(guān)鍵字的TID與對于早期響應(yīng)捕獲的TID相比較。如果TID與所述關(guān)鍵字TID之一相匹配(判定方塊56的“是”分支),延遲監(jiān)視電路44可以確定測量延遲,如果測量延遲和輸出延遲不同,可以調(diào)整到關(guān)鍵字轉(zhuǎn)送控制電路42的輸出延遲(方塊58)。圖4是流程圖,顯示在圖3表示方塊58的一個(gè)實(shí)施例。盡管方塊為了理解容易按特定順序表示,但可以使用其它順序。在由延遲監(jiān)視電路44實(shí)施的組合邏輯中可以并行執(zhí)行方塊。方塊、方塊組合、以及/或作為整體的流程圖可以在多個(gè)時(shí)鐘周期按流水線進(jìn)行。延遲監(jiān)視電路44可以配置成實(shí)施在圖4表示的操作。延遲監(jiān)視電路44可以計(jì)算所測量延遲為在關(guān)鍵字時(shí)間戳與來自匹配TID的早期響應(yīng)時(shí)間戳之間的差(方塊60)。延遲監(jiān)視電路44可以計(jì)算誤差為來自方塊60的測量延遲減去輸出到關(guān)鍵字轉(zhuǎn)送控制電路42的當(dāng)前延遲(方塊62)。相應(yīng)地,如果測量延遲大于當(dāng)前輸出延遲,誤差是正的,如果測量延遲小于當(dāng)前輸出延遲,則誤差是負(fù)的。延遲監(jiān)視電路44可以將誤差的1/2添加到當(dāng)前輸出延遲,以產(chǎn)生新的輸出延遲(方塊64)。因而,新延遲可以變動為在當(dāng)前輸出延遲與測量延遲之間差距的1/2。其它實(shí)施例可以使用其它調(diào)整機(jī)理,這些其它調(diào)整機(jī)理包括所述誤差的不同分?jǐn)?shù)。現(xiàn)在轉(zhuǎn)到圖5,所示流程圖顯示關(guān)鍵字轉(zhuǎn)送控制電路42的一個(gè)實(shí)施例的操作。盡管方塊為了理解容易按特定順序表示,但可以使用其它順序。在由關(guān)鍵字轉(zhuǎn)送控制電路42實(shí)施的組合邏輯中可以并行地執(zhí)行方塊。方塊、方塊組合、以及/或作為整體的流程圖可以在多個(gè)時(shí)鐘周期按流水線進(jìn)行。關(guān)鍵字轉(zhuǎn)送控制電路42可以配置成實(shí)施在圖5表示的操作。如果關(guān)鍵字轉(zhuǎn)送控制電路42接收到早期響應(yīng)(判定方塊70的“是”分支),并且狀態(tài)機(jī)可用于根據(jù)測量延遲推測地引發(fā)L2仲裁請求(判定方塊72的“是”分支),關(guān)鍵字轉(zhuǎn)送控制電路42可以將狀態(tài)機(jī)分配給所述事務(wù)(方塊74)。各個(gè)實(shí)施例可以實(shí)施任何數(shù)量的狀態(tài)機(jī),并且可以使用各種分配機(jī)理。例如,可以使用先到先得方案,將狀態(tài)機(jī)分配給到達(dá)的第一關(guān)鍵字轉(zhuǎn)送操作。其它實(shí)施例中,可以為每個(gè)處理器14A-14B保留一個(gè)或多個(gè)狀態(tài)機(jī),從而可以處置每個(gè)處理器14A-14B的至少一個(gè)關(guān)鍵字轉(zhuǎn)送。剩余狀態(tài)機(jī),如果有的話,則可以先到先得地分配。某些實(shí)施例中,狀態(tài)機(jī)的數(shù)量可以與待完成的緩存填充請求的最大數(shù)量相等,從而可以監(jiān)視每個(gè)請求。圖6是狀態(tài)機(jī)的一個(gè)實(shí)施例的方塊圖,可以由關(guān)鍵字轉(zhuǎn)送控制電路42實(shí)施,以推測地產(chǎn)生對L2緩存16的仲裁請求,以基于預(yù)測延遲轉(zhuǎn)送關(guān)鍵字。如以前提到的那樣,可以有狀態(tài)機(jī)的多個(gè)實(shí)例,以同時(shí)跟蹤多個(gè)關(guān)鍵字轉(zhuǎn)送機(jī)會。關(guān)鍵字轉(zhuǎn)送控制電路42可以包括實(shí)施狀態(tài)機(jī)的電路。一般地,狀態(tài)機(jī)可以保持在給定狀態(tài),直到檢測到使?fàn)顟B(tài)機(jī)離開該狀態(tài)的條件(例如,圖6顯示的箭頭)。狀態(tài)機(jī)可以在閑置狀態(tài)80、在復(fù)位、或當(dāng)狀態(tài)機(jī)已經(jīng)完成其關(guān)鍵字轉(zhuǎn)送操作時(shí)開始。當(dāng)響應(yīng)早期響應(yīng)而分配狀態(tài)機(jī)時(shí)(方塊74,圖5),狀態(tài)機(jī)可以轉(zhuǎn)變到等待請求狀態(tài)82。狀態(tài)機(jī)可以保持在等待請求狀態(tài)82,直到作出請求的預(yù)測時(shí)間期滿、或者關(guān)鍵字到達(dá)并且 適于轉(zhuǎn)送。如果關(guān)鍵字在預(yù)測時(shí)間期滿之前到達(dá),那么可以非推測地作出仲裁轉(zhuǎn)送路徑的請求。任一情況下,狀態(tài)機(jī)可以轉(zhuǎn)變到請求適用狀態(tài)84。預(yù)測時(shí)間可以從來自延遲監(jiān)視電路44的輸出延遲導(dǎo)出。例如,所述預(yù)測時(shí)間與所述延遲時(shí)間相比小了仲裁請求與接口單元18的同意之間的周期數(shù)量(例如,這個(gè)實(shí)施例中的3個(gè)時(shí)鐘周期)??蛇x擇地,流水線延遲的額外時(shí)鐘周期可以被包括在預(yù)測時(shí)間與輸出延遲時(shí)間之差中。一般地,預(yù)測時(shí)間與延遲時(shí)間相比小了通過推測請求用于關(guān)鍵字的轉(zhuǎn)送路徑可以節(jié)省的時(shí)鐘周期數(shù)量。某些實(shí)施例中,過高估計(jì)延遲(從而數(shù)據(jù)剛好在轉(zhuǎn)送路徑準(zhǔn)備好之前到達(dá))可能比過低估計(jì)延遲(從而轉(zhuǎn)送路徑比所述數(shù)據(jù)更早適用)有益。例如,如果轉(zhuǎn)送路徑適用,關(guān)鍵字沒有準(zhǔn)備好轉(zhuǎn)送,則當(dāng)數(shù)據(jù)適用時(shí),接口單元18可能取消所述轉(zhuǎn)送并且重新仲裁,失去了由推測仲裁節(jié)省的延遲。在請求適用狀態(tài)84,關(guān)鍵字轉(zhuǎn)送控制電路42可以產(chǎn)生對于L2Arb電路36的請求,以推測地仲裁所述轉(zhuǎn)送路徑。當(dāng)發(fā)送讀仲裁請求時(shí),狀態(tài)機(jī)可以轉(zhuǎn)變到等待同意狀態(tài)86,狀態(tài)機(jī)保持在這,直到L2緩存16同意仲裁請求。狀態(tài)機(jī)然后可以轉(zhuǎn)變到關(guān)鍵字準(zhǔn)備好狀態(tài)88。如果關(guān)鍵字適于轉(zhuǎn)送,狀態(tài)機(jī)可以轉(zhuǎn)變到轉(zhuǎn)送關(guān)鍵字狀態(tài)90,以轉(zhuǎn)送關(guān)鍵字。在一個(gè)實(shí)施例中,狀態(tài)機(jī)可以保持在狀態(tài)90直到如果緩存填充已經(jīng)完成、讀請求在接口單元18中已經(jīng)解隊(duì)時(shí),以防止解隊(duì)。隨后,當(dāng)提供緩存塊時(shí),數(shù)據(jù)可以使用同一路徑寫到L2緩存16和數(shù)據(jù)緩存24。已經(jīng)防止解隊(duì)之后,關(guān)鍵字轉(zhuǎn)送完成,狀態(tài)機(jī)可以轉(zhuǎn)變到閑置狀態(tài)80。其它實(shí)施例中,在關(guān)鍵字狀態(tài)90之后可以使用一組依次狀態(tài),以跟蹤到解隊(duì)的進(jìn)行,并且在返回到閑置狀態(tài)80之前抑制解隊(duì)。另一方面,如果當(dāng)狀態(tài)機(jī)到達(dá)狀態(tài)88時(shí)關(guān)鍵字沒有準(zhǔn)備好,則狀態(tài)機(jī)可以取消轉(zhuǎn)送(到L2緩存16的Cxcl),并且可以轉(zhuǎn)變到等待數(shù)據(jù)狀態(tài)92。狀態(tài)機(jī)當(dāng)接收到關(guān)鍵字時(shí)可以從狀態(tài)92轉(zhuǎn)變到狀態(tài)84,并且可以非推測地轉(zhuǎn)送關(guān)鍵字。可選擇地,其它實(shí)施例中,狀態(tài)機(jī)可以僅處置用于關(guān)鍵字轉(zhuǎn)送的推測請求。如果推測失敗,當(dāng)關(guān)鍵字到達(dá)時(shí),L2Arb電路36可以仲裁關(guān)鍵字。這樣的實(shí)施例中,可以消除狀態(tài)92,如果關(guān)鍵字沒有準(zhǔn)備好轉(zhuǎn)送,則狀態(tài)機(jī)可以從狀態(tài)88返回到閑置狀態(tài)80。
某些實(shí)施例中,也可能有另外轉(zhuǎn)變。例如,在狀態(tài)機(jī)也處置非推測關(guān)鍵字轉(zhuǎn)送的實(shí)施例中,如果關(guān)鍵字到達(dá),狀態(tài)機(jī)可以從閑置狀態(tài)80轉(zhuǎn)變到請求適用狀態(tài)84。圖7是時(shí)序圖,顯示示范關(guān)鍵字轉(zhuǎn)送的處理器時(shí)鐘周期(由豎直虛線定界)。在標(biāo)簽SM對面,為每個(gè)時(shí)鐘周期表示狀態(tài)機(jī)的狀態(tài)。在標(biāo)簽L2對面,顯示接口單元18與L2緩存16之間的操作,在標(biāo)簽P對面,顯示在處理器的操作。在第一時(shí)鐘周期,狀態(tài)機(jī)在閑置狀態(tài)80,并且接收到早期響應(yīng),該早期響應(yīng)使?fàn)顟B(tài)機(jī)被分配(箭頭100)。狀態(tài)機(jī)轉(zhuǎn)變到等待請求狀態(tài)82 (圖7的W4R),并且開始計(jì)數(shù)用來作出推測請求的預(yù)測時(shí)間。在第五時(shí)鐘周期,預(yù)測時(shí)間期滿(箭頭102),狀態(tài)機(jī)轉(zhuǎn)變到請求適用狀態(tài)84(在圖7的Req E1)。讀仲裁請求在第六時(shí)鐘周期中傳輸(箭頭106),并且狀態(tài)機(jī)轉(zhuǎn)變到等待同意狀態(tài)86(在圖7的W4G)。L2緩存在第七時(shí)鐘周期中仲裁,并且在第八時(shí)鐘周期中將同意傳輸?shù)浇涌趩卧?8(箭頭108)。狀態(tài)機(jī)轉(zhuǎn)變到關(guān)鍵字準(zhǔn)備好狀態(tài)88,并且關(guān)鍵字在讀緩沖器34中可用以轉(zhuǎn)送(箭頭110)。關(guān)鍵字傳輸?shù)睫D(zhuǎn)送路徑中,并且在第十時(shí)鐘
周期狀態(tài)機(jī)轉(zhuǎn)變到轉(zhuǎn)送關(guān)鍵字狀態(tài)90 (圖7的F CO。這個(gè)時(shí)鐘周期也是其中正常發(fā)送非推測讀仲裁請求的時(shí)鐘周期(虛線箭頭112)。相應(yīng)地,這個(gè)實(shí)施例中節(jié)省的延遲可以是這個(gè)實(shí)施例與箭頭106和112相對應(yīng)的時(shí)鐘周期之差,或者所示例子的4個(gè)時(shí)鐘周期。在這個(gè)實(shí)施例中,在L2緩存查閱命中檢測的期間過去了幾個(gè)時(shí)鐘周期,對于關(guān)鍵字轉(zhuǎn)送不進(jìn)行所述命中檢測。然而,這個(gè)例子中,同一流水線用來轉(zhuǎn)送關(guān)鍵字,因而數(shù)據(jù)流過這些流水線級。數(shù)據(jù)通過L2轉(zhuǎn)送(到L2的數(shù)據(jù),附圖標(biāo)記114),然后轉(zhuǎn)送到處理器(到P的數(shù)據(jù),附圖標(biāo)記116)。狀態(tài)機(jī)然后可以返回到閑置狀態(tài)。轉(zhuǎn)到圖8,表不系統(tǒng)150的一個(gè)實(shí)施例的方塊圖。在所不實(shí)施例中,系統(tǒng)150包括耦合到外部存儲器12的集成電路10的至少一個(gè)實(shí)例。集成電路10耦合到一個(gè)或多個(gè)外圍設(shè)備154和外部存儲器12。也提供電源156,電源156將電源電壓供給到集成電路152,也將一個(gè)或多個(gè)電源電壓供給到存儲器12和/或外圍設(shè)備154。在某些實(shí)施例中,可以包括集成電路10的多于一個(gè)實(shí)例(也可以包括多于一個(gè)外部存儲器12)。外圍設(shè)備154依據(jù)系統(tǒng)150的類型可以包括任何期望電路。例如,在一個(gè)實(shí)施例中,系統(tǒng)150可以是移動裝置(例如,個(gè)人數(shù)字助手(PDA)、智能電話等),并且外圍設(shè)備154可以包括用于各種類型的無線通信的裝置,如用于wifi、Bluetooth、蜂窩、全球定位系統(tǒng)等。外圍設(shè)備154也可以包括額外的存儲裝置,包括RAM存儲裝置、固狀存儲裝置、或盤存儲裝置。外圍設(shè)備154可以包括用戶接口裝置,如顯示屏幕,包括觸摸顯示屏幕或多觸摸顯示屏幕、鍵盤或其它輸入裝置、麥克風(fēng)、揚(yáng)聲器等。其它實(shí)施例中,系統(tǒng)150可以是任何類型的計(jì)算系統(tǒng)(例如,臺式個(gè)人計(jì)算機(jī)、筆記本電腦、工作站、小型電腦等)。多種變更和修改對于本領(lǐng)域的技術(shù)人員,一旦充分地理解以上公開將成為顯然的。如下權(quán)利要求書旨在解釋成包容全部這樣的變更和修改。
權(quán)利要求
1.一種接口單元,耦合成從存儲器控制器接收與讀請求相對應(yīng)的數(shù)據(jù)被預(yù)期在未來時(shí)鐘周期中被傳輸?shù)闹甘?,其中所述接口單元包? 控制電路,配置成產(chǎn)生將所述數(shù)據(jù)轉(zhuǎn)送到所述讀請求的源的請求,其中所述控制電路配置成,在從所述存儲器控制器接收所述指示之后的N個(gè)時(shí)鐘周期產(chǎn)生所述請求,以當(dāng)在所述未來時(shí)鐘周期中隨后接收到所述數(shù)據(jù)時(shí)容許所述數(shù)據(jù)的轉(zhuǎn)送,其中N是從以前延遲預(yù)測的正整數(shù);以及 延遲監(jiān)視電路,配置成監(jiān)視從所述指示到轉(zhuǎn)送所對應(yīng)數(shù)據(jù)的時(shí)間的至少一部分的延遲,其中所述延遲監(jiān)視電路配置成自適應(yīng)地修改N,以考慮所述延遲中的不確定性。
2.根據(jù)權(quán)利要求I所述的接口單元,其中所述延遲監(jiān)視電路和控制電路根據(jù)第一時(shí)鐘而操作,并且其中以第一時(shí)鐘的時(shí)鐘周期來測量N,并且其中所述存儲器控制器配置成根據(jù)與第一時(shí)鐘異步的第二時(shí)鐘而操作,其中所述延遲的不確定性的原因包括從與第二時(shí)鐘相關(guān)聯(lián)的第二時(shí)鐘域到與第一時(shí)鐘相關(guān)聯(lián)的第一時(shí)鐘域的同步。
3.根據(jù)權(quán)利要求I或2所述的接口單元,其中所述延遲的不確定性的另一個(gè)原因是第一時(shí)鐘和第二時(shí)鐘的至少一個(gè)的時(shí)鐘頻率的變化。
4.根據(jù)權(quán)利要求1-3任一項(xiàng)所述的接口單元,其中所述延遲的不確定性的原因是到所述讀請求的源的流水線中的停滯。
5.根據(jù)權(quán)利要求1-4任一項(xiàng)所述的接口單元,還包括 一個(gè)或多個(gè)先進(jìn)先出(FIFO)緩沖器,配置成實(shí)現(xiàn)所述同步;和 計(jì)數(shù)器,配置成根據(jù)第一時(shí)鐘遞增; 其中所述接口單元配置成,使所述計(jì)數(shù)器的值與第二時(shí)鐘域同步,并且通過FIFO緩沖器而同步第二時(shí)鐘域到第一時(shí)鐘域,其中從FIFO緩沖器與所述指示同時(shí)接收的所述計(jì)數(shù)器的值和從FIFO緩沖器與所述數(shù)據(jù)同時(shí)接收的值之差是所述延遲的測量。
6.一種集成電路,包括 一個(gè)或多個(gè)處理器,每個(gè)處理器包括數(shù)據(jù)緩存,并且配置成響應(yīng)在所述數(shù)據(jù)緩存中的緩存未命中而產(chǎn)生讀操作; 第二級緩存,耦合到所述處理器,并且配置成將在第二級緩存中未命中的讀操作傳輸?shù)綑?quán)利要求1-5任一項(xiàng)中所述的接口單元;及 其中所述接口單元耦合到所述第二級緩存并且耦合到所述存儲器控制器,其中所述接口單元配置成,將所述讀操作傳輸?shù)剿龃鎯ζ骺刂破鳎⑶宜鼋涌趩卧詈铣蓮乃龃鎯ζ骺刂破鹘邮赵缙陧憫?yīng),并且其中所述接口單元配置成,響應(yīng)于與所述給定讀操作相對應(yīng)的早期響應(yīng),預(yù)測緩存塊的關(guān)鍵字將可用于為給定讀操作期間轉(zhuǎn)送的未來時(shí)鐘周期。
7.根據(jù)權(quán)利6所述的集成電路,其中所述接口單元配置成,預(yù)測第一數(shù)量時(shí)鐘周期的延遲,并且其中所述接口單元配置成,確定所述第一數(shù)量與通過監(jiān)視所述延遲而檢測的第二數(shù)量的時(shí)鐘周期之差,并且其中所述接口單元配置成,以所述差的一半來修改所述第一數(shù)量,以產(chǎn)生后續(xù)的預(yù)測。
8.根據(jù)權(quán)利6所述的集成電路,其中所述接口單元配置成,響應(yīng)所述預(yù)測,推測地仲裁來自所述第二級緩存的所述轉(zhuǎn)送路徑。
9.一種方法,包括 在接口單元中,從存儲器控制器接收預(yù)測將要提供緩存塊填充的初始字的指示;所述接口單元預(yù)測一個(gè)后續(xù)的時(shí)鐘周期,在該后續(xù)時(shí)鐘周期將產(chǎn)生將所述初始字轉(zhuǎn)送到發(fā)起所述緩存塊填充的處理器的請求,以便在所述初始字如根據(jù)來自所述存儲器控制器的所述指示所預(yù)期的那樣被提供的情況下,傳輸所述初始字; 監(jiān)視從所述指示到所述初始字的至少一部分時(shí)間的實(shí)際延遲;以及 響應(yīng)于所述實(shí)際延遲,自適應(yīng)地修改所述預(yù)測。
10.根據(jù)權(quán)利9所述的方法,還包括 在所述后續(xù)時(shí)鐘周期中產(chǎn)生所述請求; 響應(yīng)于所述請求,接收許可; 檢測所述初始字如存儲器控制器預(yù)測的那樣被提供;以及 響應(yīng)于所述許可,轉(zhuǎn)送所述初始字。
11.根據(jù)權(quán)利9或10所述的方法,還包括 在接口單元中,從所述存儲器控制器接收預(yù)測將要提供第二緩存塊填充的第二初始字的第二指示; 所述接口單元預(yù)測第二后續(xù)時(shí)鐘周期,在該第二后續(xù)時(shí)鐘周期將產(chǎn)生將所述第二初始字轉(zhuǎn)送到發(fā)起所述第二緩存塊填充的處理器的第二請求,以便在第二初始字如所述存儲器控制器預(yù)測的那樣被提供的情況下,傳輸所述初始字; 在所述第二后續(xù)時(shí)鐘周期中產(chǎn)生所述第二請求; 響應(yīng)于所述第二請求,接收第二許可; 檢測到第二初始字未如預(yù)測的那樣被提供;及 響應(yīng)于所述第二許可,傳輸取消。
12.根據(jù)權(quán)利11所述的方法,還包括 隨后接收所述第二初始字; 響應(yīng)接收到第二初始字,產(chǎn)生第三請求; 響應(yīng)第三請求,接收第三許可 '及 響應(yīng)所述接收,轉(zhuǎn)送所述第二初始字。
13.根據(jù)權(quán)利9所述的方法,還包括 在接口單元中,從存儲器控制器接收預(yù)測將要提供第二緩存塊填充的第二初始字的第二指示; 接口單元預(yù)測第二后續(xù)時(shí)鐘周期,在該第二后續(xù)時(shí)鐘周期產(chǎn)生將所述第二初始字轉(zhuǎn)送到發(fā)起所述第二緩存塊填充的所述處理器的第二請求,以便在第二初始字如存儲器控制器預(yù)測的那樣被提供的情況下,傳輸所述初始字; 比預(yù)測更早地接收所述第二初始字; 響應(yīng)于接收到第二初始字,產(chǎn)生所述第二請求; 響應(yīng)于第二請求,接收第二許可; 響應(yīng)所述許可,將第二初始字轉(zhuǎn)送到所述處理器。
14.根據(jù)權(quán)利9所述的方法,還包括 監(jiān)視在來自存儲器控制器的各個(gè)指示與對應(yīng)初始字之間的延遲; 以及 根據(jù)所述延遲,修改所述后續(xù)時(shí)鐘周期的預(yù)測。
全文摘要
在實(shí)施例中,系統(tǒng)包括存儲器控制器、處理器及對應(yīng)緩存。系統(tǒng)可以包括不確定源,這些不確定源妨礙對處理器緩存中未命中的加載操作的數(shù)據(jù)轉(zhuǎn)送的準(zhǔn)確安排。存儲器控制器可以提供早期響應(yīng),該早期響應(yīng)指示數(shù)據(jù)應(yīng)該在后續(xù)時(shí)鐘周期提供。在存儲器控制器與緩存/處理器之間的接口單元可以預(yù)測從當(dāng)前接收的早期響應(yīng)到對應(yīng)數(shù)據(jù)的延遲,并且可以推測地準(zhǔn)備轉(zhuǎn)送數(shù)據(jù),假如數(shù)據(jù)將如預(yù)測的那樣可用。接口單元可以監(jiān)視在早期響應(yīng)與數(shù)據(jù)轉(zhuǎn)送之間的延遲、或所述延遲的變化的至少一部分?;谒鶞y量的延遲,接口單元可以修改隨后預(yù)測的延遲。
文檔編號G06F13/16GK102822810SQ201180016505
公開日2012年12月12日 申請日期2011年5月26日 優(yōu)先權(quán)日2010年6月1日
發(fā)明者B·P·莉莉, J·M·卡索夫, 陳浩 申請人:蘋果公司