專利名稱:用于在總線上發(fā)送存儲(chǔ)器預(yù)取命令的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本公開一般涉及數(shù)字系統(tǒng),更具體而言,涉及用于在處理系統(tǒng)中通過總線發(fā)送存儲(chǔ)器預(yù)取命令的方法和設(shè)備。
背景技術(shù):
集成電路通過使采用分立裝置很難或不可能實(shí)現(xiàn)的新應(yīng)用能夠得到實(shí)現(xiàn),而徹底變革了電子工業(yè)。集成能使含有數(shù)百萬個(gè)電子元件的復(fù)雜電路封裝到半導(dǎo)體材料的單個(gè)芯片中。結(jié)果,諸如計(jì)算機(jī)、蜂窩式電話、個(gè)人數(shù)字助理(PDA)等這樣的功能強(qiáng)大的計(jì)算裝置可以縮小成手持式裝置。
當(dāng)今,集成電路被廣泛用來實(shí)現(xiàn)復(fù)雜的電路,諸如通用和專用的處理器。典型的集成處理器包括中央處理單元(CPU)和系統(tǒng)存儲(chǔ)器。高帶寬系統(tǒng)總線可用來支持這二者之間的通信??偩€典型是集成電路上的各元件之間的共享通道或路徑。此外,還可以存在外部總線,其可以用來在片上存儲(chǔ)器控制器的控制下對(duì)低延遲的片外存儲(chǔ)器進(jìn)行存取。
片外存儲(chǔ)器通常被格式化成多個(gè)頁。一頁一般與一行存儲(chǔ)器相關(guān)聯(lián)。在大多數(shù)情況下,存儲(chǔ)器控制器能夠一次僅僅打開有限數(shù)目個(gè)頁?!按蜷_頁”指的是存儲(chǔ)器正指向一行存儲(chǔ)器并且僅需要來自存儲(chǔ)器控制器的列存取命令來讀取數(shù)據(jù)。為了存取存儲(chǔ)器的未打開頁,存儲(chǔ)器控制器必須在提供列存取命令以讀取數(shù)據(jù)之前為存儲(chǔ)器提供行存取命令以移動(dòng)指針。結(jié)果,在關(guān)閉存儲(chǔ)器中的頁和打開新頁時(shí)會(huì)有延遲代價(jià)。
許多CPU的具體實(shí)現(xiàn)包括預(yù)取機(jī)制,以便對(duì)片外存儲(chǔ)器裝置所經(jīng)常遇到的高延遲進(jìn)行補(bǔ)償。這些CPU可配置成對(duì)指令流進(jìn)行評(píng)估,并向?qū)砜赡鼙恍枰钠獯鎯?chǔ)器裝置請(qǐng)求頁,以便減小延遲并提高CPU性能。然而,由于指令流的分支以及CPU的中斷,這些預(yù)取請(qǐng)求可能經(jīng)常是不正確的。此外,一旦總線上接受了預(yù)取請(qǐng)求,則即使不再需要數(shù)據(jù),數(shù)據(jù)也將從片外存儲(chǔ)器中被讀出并在總線上傳遞回CPU。這經(jīng)常會(huì)由于推測性數(shù)據(jù)在總線上被傳遞給CPU,而導(dǎo)致總線上的較低帶寬,從而延誤CPU從片外存儲(chǔ)器裝置存取后續(xù)數(shù)據(jù)。
許多年前,利用預(yù)取命令來將CPU連接于片外存儲(chǔ)器裝置的方法就已經(jīng)提供了一種可行的解決方案。然而,隨著CPU的操作速度持續(xù)按照指數(shù)規(guī)律增加,越來越需要減小典型地與片外存儲(chǔ)器裝置相關(guān)的延遲。
發(fā)明內(nèi)容
在本發(fā)明的一個(gè)方面中,提供了一種從存儲(chǔ)器中取回?cái)?shù)據(jù)的方法,該方法包括預(yù)測將被需要的數(shù)據(jù)所來自的存儲(chǔ)器地址,向存儲(chǔ)器控制器發(fā)送對(duì)處于預(yù)測的存儲(chǔ)器地址處的數(shù)據(jù)的預(yù)取命令,向存儲(chǔ)器控制器發(fā)送對(duì)處于預(yù)測的存儲(chǔ)器地址處的數(shù)據(jù)的讀取請(qǐng)求,以及響應(yīng)于該讀取請(qǐng)求而對(duì)處于預(yù)測的存儲(chǔ)器地址處的數(shù)據(jù)進(jìn)行接收。
在本發(fā)明的另一方面中,提供了一種從存儲(chǔ)器中取回?cái)?shù)據(jù)的方法,該方法包括預(yù)測將被需要的數(shù)據(jù)所來自的存儲(chǔ)器的未打開頁中的地址,向存儲(chǔ)器控制器發(fā)送對(duì)處于預(yù)測的存儲(chǔ)器地址處的數(shù)據(jù)的預(yù)取命令,將預(yù)測地址處的數(shù)據(jù)讀入預(yù)取緩沖器中,以及從預(yù)取緩沖器中丟棄數(shù)據(jù)。
在本發(fā)明的又一方面中,提供了一種處理系統(tǒng),其包括存儲(chǔ)器、存儲(chǔ)器控制器和處理器。該處理器配置成預(yù)測將被需要的數(shù)據(jù)所來自的存儲(chǔ)器地址,向存儲(chǔ)器控制器發(fā)送對(duì)處于預(yù)測的存儲(chǔ)器地址處的數(shù)據(jù)的預(yù)取命令,如果預(yù)測的存儲(chǔ)器地址處的數(shù)據(jù)被需要?jiǎng)t向存儲(chǔ)器控制器發(fā)送對(duì)該數(shù)據(jù)的讀取請(qǐng)求,其中存儲(chǔ)器控制器進(jìn)一步配置成響應(yīng)于讀取請(qǐng)求而將預(yù)測的存儲(chǔ)器地址處的數(shù)據(jù)傳遞給處理器。
在本發(fā)明的又一方面中,提供了一種處理系統(tǒng),其包括存儲(chǔ)器,存儲(chǔ)器控制器,用于對(duì)將被需要的數(shù)據(jù)所來自的存儲(chǔ)器地址進(jìn)行預(yù)測的裝置,用于向存儲(chǔ)器控制器發(fā)送對(duì)處于預(yù)測的存儲(chǔ)器地址處的數(shù)據(jù)的預(yù)取命令的裝置,用于在處于預(yù)測的存儲(chǔ)器地址處的數(shù)據(jù)被需要時(shí)向存儲(chǔ)器控制器發(fā)送對(duì)該數(shù)據(jù)的讀取請(qǐng)求的裝置,以及用于接收數(shù)據(jù)的接收裝置,其中存儲(chǔ)器控制器進(jìn)一步配置成響應(yīng)于讀取請(qǐng)求而將處于預(yù)測的存儲(chǔ)器地址處的數(shù)據(jù)傳遞給接收裝置。
應(yīng)能理解,對(duì)于本領(lǐng)域技術(shù)人員來說,通過以下詳細(xì)說明,本發(fā)明的其它實(shí)施例將變得顯而易見,其中通過例證的形式示出及說明本發(fā)明的不同實(shí)施例。如將認(rèn)識(shí)到的那樣,在不脫離本發(fā)明的精神和范圍的情況下,本發(fā)明可有其它不同的實(shí)施例,并且其一些細(xì)節(jié)能在其它不同的方面中進(jìn)行修改。因此,附圖和詳細(xì)說明實(shí)際上應(yīng)被看作是說明性的而非限制性的。
在附圖中,以舉例的方式而非限制的方式示出了本發(fā)明的各方面,在附圖中圖1是示出帶有片外存儲(chǔ)器的集成電路的實(shí)例的概念性框圖;圖2是示出帶有片外存儲(chǔ)器的集成電路的另一個(gè)實(shí)例的概念性框圖;圖3是示出用預(yù)取命令來減小對(duì)SDRAM進(jìn)行讀取操作時(shí)的延遲的時(shí)序圖;圖4是示出用預(yù)取命令來減小對(duì)NAND閃存進(jìn)行讀取操作時(shí)的延遲的時(shí)序圖。
具體實(shí)施例方式
以下結(jié)合附圖所做的詳細(xì)描述是用于說明本發(fā)明的不同實(shí)施例的,而不打算僅代表可實(shí)現(xiàn)本發(fā)明的唯一幾個(gè)實(shí)施例。詳細(xì)描述包括了用于透徹理解本發(fā)明的具體細(xì)節(jié)。然而,對(duì)本領(lǐng)域技術(shù)人員而言很明顯的是,沒有這些具體細(xì)節(jié)本發(fā)明也可以實(shí)施。在一些例子中,為了避免模糊本發(fā)明的概念,以框圖形式顯示公知的結(jié)構(gòu)和組件。
將描述帶有片外存儲(chǔ)器的集成電路的幾個(gè)實(shí)施例,以說明不同的發(fā)明性概念。在此描述的至少一個(gè)實(shí)施例中,集成在芯片上的CPU可以以趨向于減小這樣的配置會(huì)典型遇到的延遲的方式,來通過存儲(chǔ)器控制器與片外存儲(chǔ)器相接。本領(lǐng)域技術(shù)人員還將很容易理解,這些發(fā)明性概念并不限于這樣的配置,而可以應(yīng)用于總線主控裝置與存儲(chǔ)器通信的任何處理系統(tǒng)上。舉例來說,CPU可以使用本公開通篇描述的不同發(fā)明性概念來與片上存儲(chǔ)器通信??蛇x地,分立處理器或其它總線主控裝置,也可以用來與分立存儲(chǔ)器通信。
圖1是示出帶有片外存儲(chǔ)器的集成電路102的概念性框圖。片外存儲(chǔ)器可以采用具有多頁格式的任意存儲(chǔ)裝置(包括例如存儲(chǔ)器、寄存器、網(wǎng)橋或能夠取回和存儲(chǔ)信息的任何其它裝置)來實(shí)現(xiàn)。在圖1所示的實(shí)施例中,片外存儲(chǔ)器可包括同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(SDRAM)104和NAND閃存106。CPU 108可通過SDRAM存儲(chǔ)器控制器110來存取SDRAM 104,并通過NAND快閃控制器(flashcontroller)112來存取NAND閃存106。CPU 108可以是任何處理元件,包括例如微處理器、數(shù)字信號(hào)處理器(DSP)、可編程邏輯元件、門或晶體管邏輯的組合、或任何其它處理元件。
集成電路102可包括系統(tǒng)總線114,以將CPU 108連接于SDRAM控制器110和NAND快閃控制器112。系統(tǒng)總線114還可以用于在為了避免模糊不同發(fā)明性概念而被省略的其它不同集成元件之間提供通信。系統(tǒng)總線114可以取決于具體應(yīng)用情況和總體的設(shè)計(jì)約束而以多種方式來配置。舉例來說,系統(tǒng)總線114可被實(shí)現(xiàn)為共享總線或點(diǎn)對(duì)點(diǎn)的切換連接。
在處理系統(tǒng)的一個(gè)實(shí)施例中,總線主控裝置可用于生成預(yù)取命令來存取存儲(chǔ)器中的未打開頁。舉例來說,圖1中所示的CPU 108可以通過系統(tǒng)總線114將預(yù)取命令發(fā)送給SDRAM存儲(chǔ)器控制器110。預(yù)取命令可包括,通過預(yù)計(jì)CPU 108在將來對(duì)數(shù)據(jù)的請(qǐng)求而得出的可能由SDRAM存儲(chǔ)器控制器110用來存取SDRAM 104中的存儲(chǔ)器頁的地址。SDRAM存儲(chǔ)器控制器110可簡單地打開SDRAM 104中的存儲(chǔ)器的頁,或者可選地,從該頁中將一部分或全部數(shù)據(jù)讀入預(yù)取緩沖器中。在最簡單的配置中,SDRAM存儲(chǔ)器控制器110簡單地打開SDRAM 104中的存儲(chǔ)器的頁,并且由于頁已經(jīng)被打開的事實(shí),CPU 108可得到較低延遲的好處,因此,CPU 108不需要來自SDRAM存儲(chǔ)器控制器110的行存取命令。在可選配置中,SDRAM存儲(chǔ)器控制器110可實(shí)現(xiàn)預(yù)取緩沖器,其中SDRAM存儲(chǔ)器控制器110將從頁中讀取數(shù)據(jù)并將讀取的數(shù)據(jù)存入其預(yù)取緩沖器中。從頁中讀取的數(shù)據(jù)的量可以是預(yù)定的,或者可選地,可以用預(yù)取命令來廣播該數(shù)據(jù)量。當(dāng)CPU 108準(zhǔn)備讀取數(shù)據(jù)時(shí),它簡單地從預(yù)取緩沖器中讀取數(shù)據(jù),其延遲比從SDRAM 104中讀取的延遲低得多。如果CPU 108不需要該數(shù)據(jù),那么該數(shù)據(jù)可由SDRAM存儲(chǔ)器控制器110丟棄,而不會(huì)經(jīng)過CPU發(fā)送到SDRAM總線114上。SDRAM存儲(chǔ)器控制器110可利用任意數(shù)目的算法來確定CPU 108不需要數(shù)據(jù)。舉例來說,SDRAM存儲(chǔ)器控制器110可在它沒在預(yù)定時(shí)間內(nèi)接收到來自CPU 108的讀取請(qǐng)求或者沒有接收到預(yù)定數(shù)目個(gè)對(duì)不同頁的讀取請(qǐng)求的情況下丟棄數(shù)據(jù)。可選地,如果在SDRAM存儲(chǔ)器控制器110接收到對(duì)預(yù)取緩沖器中的數(shù)據(jù)的讀取請(qǐng)求以前,其接收到后續(xù)的預(yù)取命令,則SDRAM存儲(chǔ)器控制器110可丟棄數(shù)據(jù)。
圖1所示的CPU 108可以以類似的方式,通過將預(yù)取命令經(jīng)系統(tǒng)總線114發(fā)送到NAND快閃控制器112,來存取NAND閃存106。預(yù)取命令可包括可能由NAND快閃控制器112用來存取NAND閃存106中的存儲(chǔ)器的未打開頁的地址。NAND快閃控制器112可簡單地緩存NAND閃存106中的存儲(chǔ)器的頁,以給CPU 108帶來后續(xù)讀取請(qǐng)求的延遲較低的好處??蛇x地,通過預(yù)計(jì)CPU 108在將來對(duì)數(shù)據(jù)的請(qǐng)求,NAND快閃控制器112能將數(shù)據(jù)從NAND閃存頁緩沖器中讀入到預(yù)取緩沖器中。如果CPU 108不需要數(shù)據(jù),那么數(shù)據(jù)可由NAND快閃控制器112丟棄。NAND快閃控制器112以與前面關(guān)于SDRAM控制器而給出的描述相同的方式,或者通過任何其它方法,來確定CPU 108不需要數(shù)據(jù)。
在到此為止所描述的實(shí)施例中,存儲(chǔ)器控制器,無論它是SDRAM存儲(chǔ)器控制器110、NAND快閃控制器112,還是任意其它的存儲(chǔ)器控制器,都不用響應(yīng)于預(yù)取命令而向總線主控裝置發(fā)送數(shù)據(jù)。僅僅響應(yīng)于總線主控裝置對(duì)包含在預(yù)取命令中的相同地址的后續(xù)的讀取請(qǐng)求,而通過系統(tǒng)總線發(fā)送數(shù)據(jù)。此外,不需要存儲(chǔ)器控制器響應(yīng)于預(yù)取命令而將數(shù)據(jù)讀入到預(yù)取緩沖器中或者甚至打開存儲(chǔ)器中的頁。在某些實(shí)施例中,預(yù)取命令可僅僅提供來自總線主控裝置的通知,即,某個(gè)地址在將來會(huì)被請(qǐng)求的通知,以及如果存儲(chǔ)器控制器能做些什么來最小化傳輸延遲,則它應(yīng)該這樣做,但不要求這樣做的通知。
在集成電路102的一個(gè)實(shí)施例中,系統(tǒng)總線114可采用地址通道、寫通道和讀通道來實(shí)現(xiàn)。地址通道可被CPU 108用來通過適當(dāng)?shù)拇鎯?chǔ)器控制器來存取片外存儲(chǔ)器中的特定位置。邊帶信令可用來支持預(yù)取命令,以及尤其指示CPU 108正在請(qǐng)求讀操作還是寫操作的其它控制信號(hào)。寫通道可以用來通過適當(dāng)?shù)拇鎯?chǔ)器控制器將數(shù)據(jù)寫到片外存儲(chǔ)器中,而讀通道可以用來通過適當(dāng)?shù)拇鎯?chǔ)器控制器將數(shù)據(jù)從片外存儲(chǔ)器中讀出。這樣的總線結(jié)構(gòu)在本領(lǐng)域內(nèi)是眾所周知的。
在集成電路102的可替代實(shí)施例中,總線結(jié)構(gòu)可配置成能將地址通道除去。圖2示出了這種概念??赏ㄟ^將寫通道重新定義為“發(fā)送通道”202來除去地址通道。發(fā)送通道202可以用作在CPU 108和適當(dāng)?shù)拇鎯?chǔ)器控制器之間以時(shí)分復(fù)用方式發(fā)送信息的一般介質(zhì)。該信息可包括地址信息、控制信號(hào)和要被寫到片外存儲(chǔ)器上的數(shù)據(jù)??刂菩盘?hào)的一個(gè)實(shí)例是指示在一次讀或?qū)懖僮髦幸獜钠獯鎯?chǔ)器中讀取或要寫到片外存儲(chǔ)器上的字節(jié)數(shù)目的信號(hào)??刂菩盘?hào)的另一個(gè)實(shí)例是指示將利用發(fā)送通道的哪些字節(jié)通路(byte lane)來發(fā)送要寫到片外存儲(chǔ)器上的數(shù)據(jù)的信號(hào)。舉例而言,在32比特發(fā)送通道202上發(fā)送2字節(jié)的數(shù)據(jù)將需要4條字節(jié)通路中的2條。該控制信號(hào)可用來向適當(dāng)?shù)拇鎯?chǔ)器控制器指示,發(fā)送通道202上的2條字節(jié)通路中的哪一條將被用來發(fā)送數(shù)據(jù)。
聯(lián)系圖2描述的各種概念可使用任意數(shù)目的協(xié)議來實(shí)現(xiàn)。在以下的詳細(xì)說明中,將提出總線協(xié)議的一個(gè)實(shí)例。提出該總線協(xié)議是為了說明處理系統(tǒng)的各發(fā)明性方面,并為了理解這些發(fā)明性方面可用任意適當(dāng)?shù)膮f(xié)議來實(shí)現(xiàn)。下面的表1中顯示出了用于發(fā)送通道的基本信令協(xié)議。在對(duì)此處描述的總線結(jié)構(gòu)的實(shí)際應(yīng)用中,本領(lǐng)域技術(shù)人員將能很容易地為這種協(xié)議改變和/或添加信號(hào)。
表1
同樣的信令協(xié)議可用于以下表2顯示的接收通道。
表2
表3中顯示了這種信令協(xié)議中使用的類型字段的定義。
表3
表4中顯示了該信令協(xié)議中的有效和傳輸確認(rèn)信號(hào)的定義。
表4
圖3是說明如何用預(yù)取命令來減小對(duì)SDRAM的讀取操作的延遲的一個(gè)實(shí)例的時(shí)序圖。為了避免模糊本發(fā)明的概念,圖3中示出的實(shí)例僅限于讀取操作。此外,將不示出用于這些讀取操作的控制信號(hào)。本領(lǐng)域的技術(shù)人員將能理解,對(duì)于任意給定讀取操作,簡單地通過增加總線寬度和提供用于識(shí)別運(yùn)載控制信號(hào)的字節(jié)通路的信令,控制信號(hào)就能與地址信息平行地在發(fā)送通道上發(fā)送。
在此實(shí)例中,從SDRAM中的未打開頁中存取數(shù)據(jù)的延遲為七個(gè)時(shí)鐘周期,而從SDRAM中的相同打開頁中存取數(shù)據(jù)的延遲為四個(gè)時(shí)鐘周期。此實(shí)例中的前兩次讀取操作是對(duì)SDRAM中的相同頁進(jìn)行的,而第三次讀取操作是對(duì)SDRAM中的不同頁進(jìn)行的。通過利用預(yù)取命令,第三次讀取操作的延遲可從七個(gè)時(shí)鐘周期減小到四個(gè)時(shí)鐘周期。
系統(tǒng)時(shí)鐘302可用來同步CPU和SDRAM之間的通信。系統(tǒng)時(shí)鐘302被顯示為帶有二十一個(gè)時(shí)鐘周期,并且為了便于解釋將每個(gè)周期按順序進(jìn)行編號(hào)。
在第一時(shí)鐘周期301期間,對(duì)存儲(chǔ)器關(guān)閉頁中的地址進(jìn)行的第一次讀取操作可由CPU啟動(dòng)。這可以通過斷言(assert)有效信號(hào)301,適當(dāng)?shù)卦O(shè)置類型字段306和在發(fā)送通道308上將第一次讀取操作所用的地址A0發(fā)送到SDRAM控制器來完成。類型字段306可被SDRAM控制器用來確定CPU正在向SDRAM請(qǐng)求對(duì)地址A0處的讀取操作。在第一時(shí)鐘周期301結(jié)尾,CPU檢測由SDRAM控制器對(duì)傳輸確認(rèn)信號(hào)310進(jìn)行的斷言,并確定該傳輸已被接收和接受。
響應(yīng)于第一讀取操作請(qǐng)求,SDRAM控制器可打開SDRAM中的適當(dāng)頁并開始從地址A0讀取數(shù)據(jù)。由于SDRAM的延遲,在數(shù)據(jù)可用之前可能經(jīng)歷七個(gè)時(shí)鐘周期時(shí)延。一旦數(shù)據(jù)是可用的,SDRAM控制器就可斷言有效信號(hào)312并設(shè)置類型字段314以在接收通道316上發(fā)送數(shù)據(jù)傳輸?shù)男盘?hào)。此實(shí)例中的數(shù)據(jù)傳輸需要4個(gè)時(shí)鐘周期以容納CPU請(qǐng)求的數(shù)據(jù)量和接收通道316的寬度。隨后,可在第八、第九、第十和第十一時(shí)鐘周期315、317、319和321期間通過接收通道316來將數(shù)據(jù)從SDRAM控制器發(fā)送至CPU。在這些時(shí)鐘周期中的每個(gè)的結(jié)尾,SDRAM控制器檢測由CPU對(duì)傳輸確認(rèn)信號(hào)318進(jìn)行的斷言,并確定該數(shù)據(jù)傳輸已被接收和接受。
在第八個(gè)時(shí)鐘周期315期間,CPU可請(qǐng)求對(duì)包含第一讀取操作所用的地址A0的SDRAM中的相同頁進(jìn)行第二次讀取操作。這可以通過斷言有效信號(hào)304、適當(dāng)?shù)卦O(shè)置類型字段306和在發(fā)送通道308上將第二次讀取操作所用的地址A1發(fā)送給SDRAM控制器來完成。類型字段306可被SDRAM控制器用來確定CPU正在向SDRAM請(qǐng)求對(duì)地址A1處的讀取操作。在第八時(shí)鐘周期315的結(jié)尾,CPU檢測SDRAM控制器對(duì)傳輸確認(rèn)信號(hào)310進(jìn)行的斷言,并確定該傳輸已被接收和接受。
由于SDRAM中的頁已被打開,所以SDRAM的延遲減小至四個(gè)周期,變得對(duì)第十二時(shí)鐘周期323開頭的傳輸可用。一旦數(shù)據(jù)可用,SDRAM控制器就可斷言有效信號(hào)312和設(shè)置類型字段314,以在接收通道316上發(fā)送數(shù)據(jù)傳輸?shù)男盘?hào)。因?yàn)楸徽?qǐng)求的數(shù)據(jù)的量和接收通道316的寬度,此實(shí)例中的數(shù)據(jù)發(fā)送也需要4個(gè)時(shí)鐘周期,因此,本次數(shù)據(jù)發(fā)送可在第十二、十三、十四和十五時(shí)鐘周期323、325、327和329期間通過接收通道316來發(fā)送。在這些時(shí)鐘周期中的每個(gè)的結(jié)尾,SDRAM控制器檢測由CPU對(duì)傳輸確認(rèn)信號(hào)318進(jìn)行的斷言,并確定該數(shù)據(jù)傳輸已被接收和接受。
在第八時(shí)鐘周期315期間,CPU還預(yù)測它將需要來自SDRAM中的不同頁中的地址A2的數(shù)據(jù),結(jié)果,可在第九時(shí)鐘周期319通過發(fā)送通道308發(fā)送預(yù)取命令。這可以通過斷言有效信號(hào)304、設(shè)置類型字段306以指示預(yù)取命令和在發(fā)送通道308上將地址A2發(fā)送給SDRAM控制器來完成。響應(yīng)于該預(yù)取命令,SDRAM控制器可開始打開SDRAM中的存儲(chǔ)器的新的頁,并平行地為第一次讀取操作通過接收通道316來向CPU傳輸數(shù)據(jù)。在第九時(shí)鐘周期317的結(jié)尾,CPU檢測由SDRAM控制器對(duì)傳輸確認(rèn)信號(hào)310進(jìn)行的斷言,并確定預(yù)取命令已被接收和接受。
在第十四時(shí)鐘周期327期間,CPU確定它明確地需要來自SDRAM中的地址A2處的數(shù)據(jù),因此發(fā)送對(duì)該數(shù)據(jù)的讀取請(qǐng)求。這可以通過斷言有效信號(hào)304、適當(dāng)?shù)卦O(shè)置類型字段306和在發(fā)送通道308上將第三次讀取操作所用的地址A2發(fā)送給SDRAM控制器來完成。類型字段306可被SDRAM控制器用來確定CPU正在向SDRAM請(qǐng)求對(duì)地址A2處的讀取操作。在第十四時(shí)鐘周期327的結(jié)尾,CPU檢測SDRAM控制器對(duì)傳輸確認(rèn)信號(hào)310進(jìn)行的斷言,并確定本發(fā)送已被接收和接受。
由于SDRAM控制器已經(jīng)打開含地址A2的SDRAM中的存儲(chǔ)器的頁,所以SDRAM的延遲可減小至四個(gè)周期,并且數(shù)據(jù)變成對(duì)第八時(shí)鐘周期335開頭的發(fā)送可用。一旦數(shù)據(jù)可用,SDRAM控制器就可斷言有效信號(hào)312并設(shè)置類型字段314,以在接收通道316上發(fā)送數(shù)據(jù)傳輸?shù)男盘?hào)。因?yàn)楸徽?qǐng)求的數(shù)據(jù)的量和接收通道316的寬度,本實(shí)例中的數(shù)據(jù)發(fā)送需要4個(gè)時(shí)鐘周期,因此,可在第十八、第十九、第二十、和第二十一時(shí)鐘周期335、337、339和341期間通過接收通道316來發(fā)送該次數(shù)據(jù)發(fā)送。在這些時(shí)鐘周期中的每個(gè)的結(jié)尾,SDRAM控制器檢測CPU對(duì)傳輸確認(rèn)信號(hào)318進(jìn)行的斷言,并確定數(shù)據(jù)發(fā)送已被接收和接受。
圖4是時(shí)序圖,其示出了如何可以利用預(yù)取命令來減小對(duì)NAND閃存進(jìn)行讀取操作時(shí)的延遲的實(shí)例。以與用來描述關(guān)于SDRAM的預(yù)取命令的方式相類似的方式,圖4中示出的實(shí)例僅限于讀取操作,并且用于那些讀取操作的控制信號(hào)并未示出。本領(lǐng)域的技術(shù)人員將會(huì)理解,簡單地通過增加總線寬度并提供用于識(shí)別運(yùn)載控制信號(hào)的字節(jié)通路的信令,就能通過發(fā)送通道與任意給定讀取操作所用的地址信息并行地發(fā)送控制信號(hào)。
在此實(shí)例中,CPU將從NAND閃存讀取數(shù)據(jù),該NAND閃存具有n個(gè)周期的延遲。該延遲等于將全頁數(shù)據(jù)(典型為512字節(jié))從NAND閃存讀入包含在NAND快閃控制器內(nèi)的較大讀取緩沖器中所需的時(shí)間。大多數(shù)情況下的初始延遲可能是數(shù)百個(gè)時(shí)鐘周期。如果CPU只是簡單地向NAND快閃控制器請(qǐng)求對(duì)關(guān)閉頁的數(shù)據(jù)進(jìn)行讀取操作,CPU可停止工作,同時(shí)其等待新頁的數(shù)據(jù)加載到NAND快閃控制器中。通過發(fā)布預(yù)取命令,NAND快閃控制器能夠?qū)?shù)據(jù)讀入到讀取緩沖器中同時(shí)CPU可繼續(xù)執(zhí)行其它指令。此外,接收通道還可用來為其它讀操作向CPU發(fā)送數(shù)據(jù)。這傾向于顯著地提高接收通道的利用率。
在第一時(shí)鐘周期301期間,CPU預(yù)測它將需要NAND閃存中的地址A0的數(shù)據(jù),因此,CPU可通過發(fā)送通道308發(fā)送預(yù)取命令。這可以通過斷言有效信號(hào)304、設(shè)置類型字段306以指示預(yù)取命令和在發(fā)送通道308上將預(yù)取命令所用的地址A0發(fā)送給NAND快閃控制器來完成。響應(yīng)于預(yù)取命令,NAND快閃控制器可開始將存儲(chǔ)器的新頁從NAND閃存中加載到NAND快閃控制器中的讀取緩沖器中。在第一時(shí)鐘周期301的結(jié)尾,CPU檢測到由NAND快閃控制器對(duì)傳輸確認(rèn)信號(hào)310進(jìn)行的斷言,并確定該預(yù)取命令已被接收和接受。
在大多數(shù)情況下,將新頁從NAND閃存加載到NAND快閃控制器中的處理需要許多周期來完成。在這段時(shí)間期間,CPU可在等待NAND閃存將存儲(chǔ)器的新頁加載到NAND快閃控制器中的同時(shí),繼續(xù)從其外部高速緩沖存儲(chǔ)器或外部存儲(chǔ)器中取指令和執(zhí)行指令。在時(shí)鐘周期n401,其中n大于或等于加載NAND快閃控制器中的讀取緩沖器所需的時(shí)間,CPU可通過斷言有效信號(hào)304、適當(dāng)?shù)卦O(shè)置類型字段306和在發(fā)送通道308上將地址A0發(fā)送給NAND快閃控制器來請(qǐng)求對(duì)地址A0的讀操作。在n時(shí)鐘周期401的結(jié)尾,CPU檢測由NAND快閃控制器對(duì)傳輸確認(rèn)信號(hào)310進(jìn)行的斷言,并確定該發(fā)送已被接收和接受。
由于NAND閃存中的讀取緩沖器已經(jīng)加載了來自NAND快閃控制器的存儲(chǔ)器的頁,所以延遲可減小成CPU通過接收通道讀取NAND快閃控制器中的緩沖器所必需的時(shí)間。在此實(shí)例中,讀延遲被減小成四個(gè)時(shí)鐘周期。結(jié)果,在CPU請(qǐng)求讀操作之后再過四個(gè)時(shí)鐘周期,數(shù)據(jù)可變成可用。一旦數(shù)據(jù)可用,NAND快閃控制器就可斷言有效信號(hào)312并設(shè)置類型字段314以在接收通道316上發(fā)送數(shù)據(jù)傳輸?shù)男盘?hào)。此實(shí)例中的數(shù)據(jù)發(fā)送是在四個(gè)時(shí)鐘周期內(nèi)通過接收通道316發(fā)送的。在這些時(shí)鐘周期中的每個(gè)的結(jié)尾,NAND快閃控制器檢測由CPU對(duì)傳輸確認(rèn)信號(hào)318進(jìn)行的斷言,并確定該次數(shù)據(jù)發(fā)送已經(jīng)被接收和接受。
結(jié)合本文中所公開的實(shí)施例描述的多種示例的邏輯塊、模塊、電路、元件和/或組件可以用通用處理器、數(shù)字信號(hào)處理器(DSP)、專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)或其它可編程邏輯器件、分立門或晶體管邏輯、分立硬件部件、或設(shè)計(jì)成執(zhí)行本文所述功能的以上的任意組合來實(shí)現(xiàn)或執(zhí)行。通用處理器可以是微處理器,但是可替換地,處理器也可以是任何常規(guī)的處理器、控制器、微控制器、或狀態(tài)機(jī)。處理器也可以被實(shí)現(xiàn)為計(jì)算器件的組合,例如,DSP和微處理器的組合、多個(gè)微處理器的組合、一個(gè)或多個(gè)微處理器與一個(gè)DSP核心的組合、或任意其它此類配置。
結(jié)合本文中所公開的實(shí)施例描述的方法或算法可以直接用硬件、處理器執(zhí)行的軟件模塊、或二者的結(jié)合來實(shí)施。軟件模塊可置于RAM存儲(chǔ)器、閃存、ROM存儲(chǔ)器、EPROM存儲(chǔ)器、EEPROM存儲(chǔ)器、寄存器、硬盤、可移動(dòng)磁盤、CD-ROM、或技術(shù)領(lǐng)域內(nèi)所公知的其它形式的存儲(chǔ)介質(zhì)中??蓪⒋鎯?chǔ)介質(zhì)連接到處理器,以便處理器可從存儲(chǔ)介質(zhì)讀取信息并向存儲(chǔ)介質(zhì)寫入信息。可替換地,存儲(chǔ)介質(zhì)可以被集成在處理器中。
對(duì)所公開的實(shí)施例的上述說明,是為了使本領(lǐng)域的專業(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與權(quán)利要求相一致的最寬的范圍,其中除非特別指出,否則對(duì)單一元件的標(biāo)記并不是指“一個(gè)和僅僅一個(gè)”,而是指“一個(gè)或多個(gè)”。此公開中描述的各種實(shí)施例的元件的所有結(jié)構(gòu)上和功能上的等效體,無論其對(duì)于本領(lǐng)域普通技術(shù)人員來說是已知的還是將在以后變成已知的,都在此通過引用將其特意結(jié)合到本文中,并且這些等效體應(yīng)包含在各權(quán)利要求中。此外,在此公開的任何內(nèi)容都不是貢獻(xiàn)給公眾的,不管此公開內(nèi)容是否明確地在權(quán)利要求中被引用。除了明確地用短語“用于做什么的裝置”或者在方法權(quán)利要求的情況下用短語“用于做什么的步驟”來陳述的元件外,該權(quán)利要求中的元件都不應(yīng)基于35 U.S.C.§112第六條來解釋。
權(quán)利要求
1.一種從存儲(chǔ)器中取回?cái)?shù)據(jù)的方法,包括預(yù)測將被需要的數(shù)據(jù)所來自的存儲(chǔ)器地址;向存儲(chǔ)器控制器發(fā)送對(duì)處于預(yù)測的存儲(chǔ)器地址處的數(shù)據(jù)的預(yù)取命令;向所述存儲(chǔ)器控制器發(fā)送對(duì)處于所述預(yù)測的存儲(chǔ)器地址處的數(shù)據(jù)的讀取請(qǐng)求;響應(yīng)于所述讀取請(qǐng)求而接收處于所述預(yù)測的存儲(chǔ)器地址處的數(shù)據(jù)。
2.如權(quán)利要求1所述的方法,其中,所述存儲(chǔ)器控制器響應(yīng)于所述預(yù)取命令而打開所述存儲(chǔ)器中的頁,所述頁包括處于所述預(yù)測的地址處的數(shù)據(jù)。
3.如權(quán)利要求2所述的方法,其中,所述存儲(chǔ)器控制器將來自包括處于所述預(yù)測的地址處的數(shù)據(jù)的頁中的至少一部分?jǐn)?shù)據(jù)讀入預(yù)取緩沖器中,并且其中,響應(yīng)于所述讀取請(qǐng)求,處于所述預(yù)測的地址處的數(shù)據(jù)從所述預(yù)取緩沖器中被接收。
4.如權(quán)利要求3所述的方法,其中,讀入所述預(yù)取緩沖器中的來自所述頁中的所述至少一部分?jǐn)?shù)據(jù)的大小為預(yù)定大小。
5.如權(quán)利要求3所述的方法,其中,通過所述預(yù)取命令來將讀入所述預(yù)取緩沖器中的來自所述頁中的所述至少一部分?jǐn)?shù)據(jù)的大小發(fā)送給所述存儲(chǔ)器控制器。
6.如權(quán)利要求1所述的方法,其中,所述存儲(chǔ)器包括SDRAM。
7.如權(quán)利要求1所述的方法,其中,所述存儲(chǔ)器包括NAND閃存。
8.如權(quán)利要求1所述的方法,進(jìn)一步包括,通過所述預(yù)取命令和所述讀取請(qǐng)求而將所述預(yù)測的地址發(fā)送給所述存儲(chǔ)器控制器。
9.如權(quán)利要求8所述的方法,其中,所述預(yù)測的地址在總線的第一通道上被發(fā)送給所述存儲(chǔ)器控制器,并且其中,響應(yīng)于所述讀取請(qǐng)求而在所述總線的第二通道上接收數(shù)據(jù)。
10.如權(quán)利要求9所述的方法,其中,所述預(yù)取命令和所述讀取請(qǐng)求在公共通道上被發(fā)送給所述存儲(chǔ)器控制器。
11.如權(quán)利要求10所述的方法,其中,所述預(yù)取命令包括第一代碼,并且所述讀取請(qǐng)求包括與所述第一代碼不同的第二代碼。
12.如權(quán)利要求9所述的方法,進(jìn)一步包括,在所述總線的所述第一通道上向所述存儲(chǔ)器控制器發(fā)送與所述預(yù)取命令和所述讀取請(qǐng)求相關(guān)的傳輸限定符。
13.如權(quán)利要求9所述的方法,進(jìn)一步包括,在所述總線的所述第一通道上發(fā)送要被寫入所述存儲(chǔ)器的數(shù)據(jù),并在所述總線的所述第一通道上發(fā)送要將所述數(shù)據(jù)寫入所述存儲(chǔ)器的地址。
14.一種從存儲(chǔ)器中取回?cái)?shù)據(jù)的方法,包括預(yù)測將被需要的數(shù)據(jù)所來自的存儲(chǔ)器的未打開頁中的地址;向所述存儲(chǔ)器控制器發(fā)送對(duì)處于預(yù)測的存儲(chǔ)器地址處的數(shù)據(jù)的預(yù)取命令;將處于所述預(yù)測的地址處的數(shù)據(jù)讀入預(yù)取緩沖器中;和從所述預(yù)取緩沖器中丟棄所述數(shù)據(jù)。
15.如權(quán)利要求14所述的方法,其中,當(dāng)向所述存儲(chǔ)器控制器已發(fā)送了預(yù)定數(shù)目個(gè)對(duì)所述存儲(chǔ)器的一個(gè)或多個(gè)不同頁中的數(shù)據(jù)的讀取請(qǐng)求,而沒有向所述存儲(chǔ)器控制器發(fā)送對(duì)處于所述存儲(chǔ)器中的預(yù)測的地址處的數(shù)據(jù)的讀取請(qǐng)求時(shí),響應(yīng)于這種情況而從所述預(yù)取緩沖器中丟棄所述數(shù)據(jù)。
16.如權(quán)利要求14所述的方法,其中,在沒有對(duì)處于所述存儲(chǔ)器中的預(yù)測的地址處的數(shù)據(jù)的讀取請(qǐng)求被發(fā)送到所述存儲(chǔ)器控制器的情況持續(xù)了預(yù)定時(shí)間后,所述數(shù)據(jù)從所述預(yù)取緩沖器中被丟棄。
17.如權(quán)利要求14所述的方法,其中,當(dāng)在對(duì)處于所述存儲(chǔ)器中的預(yù)測的地址處的數(shù)據(jù)的讀取請(qǐng)求被發(fā)送到所述存儲(chǔ)器控制器之前,后續(xù)的預(yù)取命令被發(fā)送到所述存儲(chǔ)器控制器時(shí),所述預(yù)取緩沖器響應(yīng)于這種情況而丟棄所述數(shù)據(jù)。
18.一種處理系統(tǒng),包括存儲(chǔ)器;存儲(chǔ)器控制器;和處理器,其配置成預(yù)測將被需要的數(shù)據(jù)所來自的存儲(chǔ)器地址,向所述存儲(chǔ)器控制器發(fā)送對(duì)處于預(yù)測的存儲(chǔ)器地址處的數(shù)據(jù)的預(yù)取命令,并在所述數(shù)據(jù)被需要時(shí)向所述存儲(chǔ)器控制器發(fā)送對(duì)處于所述預(yù)測的存儲(chǔ)器地址處的數(shù)據(jù)的讀取請(qǐng)求;其中,所述存儲(chǔ)器控制器進(jìn)一步配置成響應(yīng)于所述讀取請(qǐng)求而將處于所述預(yù)測的存儲(chǔ)器地址處的數(shù)據(jù)傳遞給所述處理器。
19.如權(quán)利要求18所述的處理系統(tǒng),其中,所述存儲(chǔ)器控制器進(jìn)一步配置成響應(yīng)于所述預(yù)取命令而打開所述存儲(chǔ)器中的頁,所述頁包括處于所述預(yù)測的地址處的數(shù)據(jù)。
20.如權(quán)利要求19所述的處理系統(tǒng),進(jìn)一步包括預(yù)取緩沖器;并且其中,所述存儲(chǔ)器控制器進(jìn)一步配置成將來自包括處于所述預(yù)測的地址處的數(shù)據(jù)的所述頁中的至少一部分?jǐn)?shù)據(jù)讀入所述預(yù)取緩沖器中,并響應(yīng)于所述讀取請(qǐng)求而將處于所述預(yù)測的地址處的數(shù)據(jù)從所述預(yù)取緩沖器中傳遞給所述處理器。
21.如權(quán)利要求20所述的處理系統(tǒng),其中,讀入所述預(yù)取緩沖器中的來自所述頁中的所述至少一部分?jǐn)?shù)據(jù)的大小為預(yù)定大小。
22.如權(quán)利要求20所述的處理系統(tǒng),其中,所述處理器進(jìn)一步配置成,把將被讀入所述預(yù)取緩沖器中的來自所述頁中的所述至少一部分?jǐn)?shù)據(jù)的大小發(fā)送給所述預(yù)取緩沖器。
23.如權(quán)利要求20所述的處理系統(tǒng),其中,所述預(yù)取緩沖器被置于所述存儲(chǔ)器控制器中。
24.如權(quán)利要求20所述的處理系統(tǒng),其中,所述存儲(chǔ)器控制器進(jìn)一步配置成,如果所述存儲(chǔ)器控制器在接收到所述預(yù)取命令之后從所述處理器接收到預(yù)定數(shù)目個(gè)對(duì)所述存儲(chǔ)器的一個(gè)或多個(gè)不同頁中的數(shù)據(jù)的讀取請(qǐng)求,而沒有接收到對(duì)對(duì)處于所述預(yù)測的存儲(chǔ)器地址處的數(shù)據(jù)的讀取請(qǐng)求時(shí),則所述存儲(chǔ)器控制器丟棄所述預(yù)取緩沖器中的數(shù)據(jù)。
25.如權(quán)利要求18所述的處理系統(tǒng),其中,所述存儲(chǔ)器包括SDRAM。
26.如權(quán)利要求18所述的處理系統(tǒng),其中,所述存儲(chǔ)器包括NAND閃存。
27.如權(quán)利要求18所述的處理系統(tǒng),其中,所述處理器進(jìn)一步配置成通過所述預(yù)取命令和所述讀取請(qǐng)求而將所述預(yù)測的地址發(fā)送給所述存儲(chǔ)器控制器。
28.如權(quán)利要求27所述的處理系統(tǒng),進(jìn)一步包括將所述處理器連接到所述存儲(chǔ)器控制器的總線,所述總線具有第一和第二通道,其中,所述處理器進(jìn)一步配置成在總線的第一通道上將所述預(yù)測的地址發(fā)送給所述存儲(chǔ)器控制器,并且其中,所述存儲(chǔ)器控制器進(jìn)一步配置成在所述總線的第二通道上將所述數(shù)據(jù)發(fā)送給所述處理器。
29.如權(quán)利要求28所述的處理系統(tǒng),進(jìn)一步包括所述處理器和所述存儲(chǔ)器控制器之間的公共通道,并且其中,所述處理器進(jìn)一步配置成在所述公共通道上將所述預(yù)取命令和所述讀取請(qǐng)求發(fā)送給所述存儲(chǔ)器控制器。
30.如權(quán)利要求29所述的處理系統(tǒng),其中,所述處理器進(jìn)一步配置成,生成包括所述預(yù)取命令的第一代碼和包括所述讀取請(qǐng)求的第二代碼,所述第一代碼與所述第二代碼不同。
31.如權(quán)利要求28所述的處理系統(tǒng),其中,所述處理器進(jìn)一步配置成在所述總線的所述第一通道上將與所述預(yù)取命令和所述讀取請(qǐng)求相關(guān)的傳輸限定符發(fā)送給所述存儲(chǔ)器控制器。
32.如權(quán)利要求28所述的處理系統(tǒng),其中,所述處理器進(jìn)一步配置成,在所述總線的所述第一通道上發(fā)送要被寫入所述存儲(chǔ)器的數(shù)據(jù),并在所述總線的所述第一通道上發(fā)送要將所述數(shù)據(jù)寫入所述存儲(chǔ)器的地址。
33.一種處理系統(tǒng),其包括存儲(chǔ)器;存儲(chǔ)器控制器;用于預(yù)測將被需要的數(shù)據(jù)所來自的存儲(chǔ)器地址的裝置;用于向所述存儲(chǔ)器控制器發(fā)送對(duì)處于預(yù)測的存儲(chǔ)器地址處的數(shù)據(jù)的預(yù)取命令的裝置;用于在處于所述預(yù)測的存儲(chǔ)器地址處的數(shù)據(jù)被需要時(shí)將對(duì)所述數(shù)據(jù)的讀取請(qǐng)求發(fā)送給所述存儲(chǔ)器控制器的裝置;和用于接收所述數(shù)據(jù)的接收裝置;其中,所述存儲(chǔ)器控制器進(jìn)一步配置成響應(yīng)于所述讀取請(qǐng)求而將處于所述預(yù)測的存儲(chǔ)器地址處的數(shù)據(jù)傳遞給所述接收裝置。
全文摘要
本發(fā)明公開了一種處理系統(tǒng)和方法,其中處理器可配置成預(yù)測將被需要的數(shù)據(jù)所來自的存儲(chǔ)器地址,向存儲(chǔ)器控制器發(fā)送對(duì)處于預(yù)測的存儲(chǔ)器地址處的數(shù)據(jù)的預(yù)取命令,如果處于預(yù)測的存儲(chǔ)器地址處的數(shù)據(jù)被需要,則向存儲(chǔ)器控制器發(fā)送對(duì)該數(shù)據(jù)的讀取請(qǐng)求。
文檔編號(hào)G06F9/38GK101048762SQ200580037154
公開日2007年10月3日 申請(qǐng)日期2005年8月26日 優(yōu)先權(quán)日2004年8月27日
發(fā)明者R·G·霍夫曼, M·M·謝弗 申請(qǐng)人:高通股份有限公司