專利名稱:用于微處理器的可配置高速緩沖存儲(chǔ)器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于微處理器或微控制器的可配置高速緩沖存儲(chǔ)器。 背景技水
管線式微處理器結(jié)構(gòu)的瓶頸是存儲(chǔ)器系統(tǒng)的高存取時(shí)間。用以解決此問題的典型方 法使用大型高速緩沖存儲(chǔ)器且在初始高存儲(chǔ)器存取時(shí)間之后每時(shí)鐘傳輸多個(gè)數(shù)據(jù)字。小 型微控制器設(shè)計(jì)受限于可位于芯片上的高速緩沖存儲(chǔ)器的量,且其不能支持大尺寸的高 等待時(shí)間但高處理量的窄存儲(chǔ)器。因此,需要一種用于微控制器或微處理器的可配置高 速緩沖存儲(chǔ)器。
發(fā)明內(nèi)容
根據(jù)一實(shí)施例, 一種用于中央處理單元的高速緩沖存儲(chǔ)器模塊可包含與存儲(chǔ)器耦合 的高速緩沖存儲(chǔ)器控制單元以及與所述控制單元及所述存儲(chǔ)器耦合的髙速緩存存儲(chǔ)器, 其中所述高速緩存存儲(chǔ)器包含多個(gè)高速緩沖存儲(chǔ)器線,所述多個(gè)高速緩沖存儲(chǔ)器線中的 至少一個(gè)高速緩沖存儲(chǔ)器線包含地址標(biāo)記位字段及用于存儲(chǔ)待順序地發(fā)布的指令的相 關(guān)聯(lián)存儲(chǔ)區(qū)域以及至少一個(gè)控制位字段,其中所述控制位字段與所述地址標(biāo)記位字段耦 合以屏蔽地址標(biāo)記位字段中預(yù)定義數(shù)目的位。
根據(jù)另一實(shí)施例, 一種微控制器可包含中央處理單元;與所述中央處理單元耦合 的高速緩沖存儲(chǔ)器模塊,其包含與存儲(chǔ)器耦合的高速緩沖存儲(chǔ)器控制單元,以及與所 述控制單元及所述存儲(chǔ)器耦合的高速緩存存儲(chǔ)器,其中所述高速緩存存儲(chǔ)器包含多個(gè)高 速緩沖存儲(chǔ)器線,所述多個(gè)高速緩沖存儲(chǔ)器線中的至少一個(gè)高速緩沖存儲(chǔ)器線包含地址 標(biāo)記位字段及用于存儲(chǔ)待順序地發(fā)布的指令的相關(guān)聯(lián)存儲(chǔ)區(qū)域以及至少一個(gè)控制位字
5段,其中所述控制位字段與所述地址標(biāo)記位字段耦合以屏蔽地址標(biāo)記位字段中預(yù)定義數(shù) 目的位。
根據(jù)進(jìn)一步實(shí)施例,所述至少一個(gè)高速緩沖存儲(chǔ)器線進(jìn)一步可包含用于鎖定相關(guān)聯(lián) 高速緩沖存儲(chǔ)器線的至少一個(gè)鎖定位。根據(jù)進(jìn)一步實(shí)施例,每一高速緩沖存儲(chǔ)器線可包 含用于鎖定相關(guān)聯(lián)高速緩沖存儲(chǔ)器線的至少一個(gè)鎖定位。根據(jù)進(jìn)一步實(shí)施例,每一高速 緩沖存儲(chǔ)器線進(jìn)一步可包含用于自動(dòng)鎖定所述相關(guān)聯(lián)高速緩沖存儲(chǔ)器線的至少一個(gè)分 支跟蹤位,其中在所述分支跟蹤位被設(shè)定的情況下,鎖定位在相關(guān)聯(lián)存儲(chǔ)區(qū)域中的預(yù)定 義分支指令已被發(fā)布的情況下被自動(dòng)設(shè)定。根據(jù)進(jìn)一步實(shí)施例,每一高速緩沖存儲(chǔ)器線 進(jìn)一步可包含用于指示相關(guān)聯(lián)高速緩沖存儲(chǔ)器線的有效性的有效性控制位。根據(jù)進(jìn)一步 實(shí)施例,每一高速緩沖存儲(chǔ)器線進(jìn)一步可包含用于指示高速緩沖存儲(chǔ)器線是用作指令高 速緩沖存儲(chǔ)器線還是數(shù)據(jù)高速緩沖存儲(chǔ)器線的類型控制位。根據(jù)進(jìn)一步實(shí)施例,高速緩 沖存儲(chǔ)器模塊可進(jìn)一步包含與存儲(chǔ)器及高速緩存存儲(chǔ)器耦合的預(yù)取單元,其中所述預(yù)取 單元可操作以將來自存儲(chǔ)器的指令加載到另一高速緩沖存儲(chǔ)器線中,其中所述指令相繼 于當(dāng)前從高速緩沖存儲(chǔ)器線發(fā)布的指令。根據(jù)進(jìn)一步實(shí)施例,可使用最近最少使用的算 法來確定哪個(gè)高速緩沖存儲(chǔ)器線將被蓋寫。
根據(jù)又一實(shí)施例, 一種操作用于中央處理單元的具有多個(gè)高速緩沖存儲(chǔ)器線的高速 緩沖存儲(chǔ)器的方法可包含以下步驟將多個(gè)順序指令存儲(chǔ)在高速緩沖存儲(chǔ)器的高速緩沖 存儲(chǔ)器線內(nèi)且將順序指令的相關(guān)聯(lián)起始地址存儲(chǔ)在高速緩沖存儲(chǔ)器線的相關(guān)聯(lián)地址標(biāo) 記位字段中;將屏蔽存儲(chǔ)在高速緩沖存儲(chǔ)器線的屏蔽位字段中;接收指令地址請(qǐng)求;將 指令地址請(qǐng)求與通過用屏蔽位字段屏蔽相關(guān)聯(lián)地址標(biāo)記位字段而產(chǎn)生的部分地址進(jìn)行 比較,以產(chǎn)生命中或未命中信號(hào);如果已產(chǎn)生命中信號(hào),那么從高速緩沖存儲(chǔ)器線存取 指令。
根據(jù)進(jìn)一步實(shí)施例,所述指令地址請(qǐng)求可由中斷或由俘獲指令產(chǎn)生。根據(jù)進(jìn)一步實(shí) 施例,所述中斷或俘獲指令可產(chǎn)生由基本地址及偏移地址構(gòu)成的地址,其中偏移分別由 中斷優(yōu)先級(jí)或由俘獲數(shù)目產(chǎn)生。根據(jù)進(jìn)一步實(shí)施例,所述方法可進(jìn)一步包含鎖定高速緩 沖存儲(chǔ)器線的步驟。根據(jù)進(jìn)一步實(shí)施例,所述方法可進(jìn)一步包含以下步驟將多個(gè)順序 指令存儲(chǔ)在高速緩沖存儲(chǔ)器的另一高速緩沖存儲(chǔ)器線內(nèi);設(shè)定用于所述另一高速緩沖存 儲(chǔ)器線的分支跟蹤功能;執(zhí)行從所述另一高速緩沖存儲(chǔ)器線提取的指令;在調(diào)用子例程 后即自動(dòng)鎖定所述另一高速緩沖存儲(chǔ)器線。根據(jù)進(jìn)一步實(shí)施例,所述方法可進(jìn)一步包含 在從子例程返回后即復(fù)位用于所述另一高速緩沖存儲(chǔ)器線的分支跟蹤功能的步驟。根據(jù) 進(jìn)一步實(shí)施例,可在執(zhí)行所述另一高速緩沖存儲(chǔ)器線中所含有的指令后即調(diào)用子例程。
可通過參看結(jié)合附圖所作的以下描述來獲得對(duì)本發(fā)明的較完整理解,其中
圖1說明可配置高速緩沖存儲(chǔ)器的第一實(shí)施例。
圖2說明根據(jù)圖1的實(shí)施例的高速緩存存儲(chǔ)器區(qū)段的細(xì)節(jié)。
圖3說明可配置高速緩沖存儲(chǔ)器的第二實(shí)施例。
圖4說明根據(jù)圖3的實(shí)施例的高速緩存存儲(chǔ)器的高速緩沖存儲(chǔ)器線的細(xì)節(jié)。
圖5說明用于控制高速緩沖存儲(chǔ)器的實(shí)施例的功能的示范性寄存器。
圖6說明根據(jù)所述實(shí)施例中的一者的映射高速緩沖存儲(chǔ)器線的內(nèi)容的其它寄存器。
圖7說明用于產(chǎn)生特定信號(hào)的某種邏輯電路。
圖8說明展示簡(jiǎn)化高速緩沖存儲(chǔ)器存取過程的流程圖。
盡管本發(fā)明允許各種修改及替代形式,但已在附圖中展示并在本文中詳細(xì)描述其特 定實(shí)例性實(shí)施例。然而,應(yīng)了解,本文中對(duì)特定實(shí)例性實(shí)施例的描述并不希望將本發(fā)明 限于本文所揭示的特定形式,而是相反地,本發(fā)明將涵蓋如由所附權(quán)利要求書所界定的 所有修改及等效物。
具體實(shí)施例方式
標(biāo)準(zhǔn)微控制器單元(MCU)通常包含8位或16位微處理器核心。32位核心僅最近 才進(jìn)入MCU界。所有這些核心通常均不具有高速緩沖存儲(chǔ)器。僅復(fù)雜的高端32位微控 制器可具有高速緩沖存儲(chǔ)器。這是因?yàn)閷?duì)于MCU來說,高速緩沖存儲(chǔ)器為較大且昂貴 的。所揭示的實(shí)施例提供中間立場(chǎng)的小型可配置高速緩沖存儲(chǔ)器,其可在運(yùn)作中配置且 可充當(dāng)預(yù)取及分支跟蹤緩沖器,同時(shí)提供用于MCU應(yīng)用的最佳高速緩沖存儲(chǔ)器深度。
根據(jù)一實(shí)施例,高速緩沖存儲(chǔ)器可經(jīng)設(shè)計(jì)為可配置以非常靈活地操作。舉例來說, 其可經(jīng)編程以嚴(yán)格地作為高速緩沖存儲(chǔ)器來操作,這對(duì)于小型回路優(yōu)化為有用的。為此, 可手動(dòng)鎖定包含回路的相應(yīng)高速緩沖存儲(chǔ)器線。其還可貢獻(xiàn)特定數(shù)目的高速緩沖存儲(chǔ)器 線(例如,多達(dá)用于鏈接分支歷史存儲(chǔ)的線的一半),此可加速函數(shù)調(diào)用返回。最后, 其可經(jīng)配置以在從高速緩沖存儲(chǔ)器線發(fā)布第一指令時(shí)將順序程序信息預(yù)取到最近最少 使用的高速緩沖存儲(chǔ)器線中。通過以兩倍于微處理器可使用程序指令的速率來預(yù)取程序 指令,存儲(chǔ)器系統(tǒng)提供可用帶寬以在不使程序指令流停止的情況下提取程序數(shù)據(jù)。實(shí)際 上,并非所有程序數(shù)據(jù)提取均為透明的。根據(jù)不同實(shí)施例的高速緩沖存儲(chǔ)器設(shè)計(jì)方法提
供用以通過給出與高等待時(shí)間但高處理量的寬存儲(chǔ)器組合的低等待時(shí)間高速緩沖存儲(chǔ) 器的特征平衡來改進(jìn)性能的機(jī)制。根據(jù)一實(shí)施例,高速緩沖存儲(chǔ)器可經(jīng)設(shè)計(jì)為運(yùn)行時(shí)間及運(yùn)作中可配置的完全相聯(lián)高 速緩沖存儲(chǔ)器。圖l展示此類可配置高速緩沖存儲(chǔ)器100的實(shí)施例的框圖。耦合總線110a 及110b將高速緩沖存儲(chǔ)器耦合到微控制器或微處理器的中央處理單元(CPU)。高速緩 沖存儲(chǔ)器100包含高速緩沖存儲(chǔ)器控制器120,所述高速緩沖存儲(chǔ)器控制器120耦合到 指令高速緩沖存儲(chǔ)器區(qū)段130及數(shù)據(jù)高速緩沖存儲(chǔ)器區(qū)段140。每一指令高速緩沖存儲(chǔ) 器區(qū)段包含指令存儲(chǔ)器特有且相關(guān)聯(lián)的控制位及標(biāo)記(例如,以線形式),其中線可包 括用于存儲(chǔ)多個(gè)字的存儲(chǔ)區(qū)域。舉例來說,字可為16位長(zhǎng)且指令高速緩沖存儲(chǔ)器130 內(nèi)的線可具有4個(gè)雙字,從而產(chǎn)生4X32個(gè)位。根據(jù)一實(shí)施例,小型指令高速緩沖存儲(chǔ) 器130可包括4個(gè)此類線。根據(jù)其它實(shí)施例,依據(jù)相應(yīng)處理器的設(shè)計(jì)而定的其它配置可 能為更有利的。根據(jù)一實(shí)施例,數(shù)據(jù)高速緩沖存儲(chǔ)器區(qū)段140可經(jīng)設(shè)計(jì)成類似于指令高 速緩沖存儲(chǔ)器設(shè)計(jì)130。依據(jù)設(shè)計(jì)模型而定,單獨(dú)的數(shù)據(jù)及指令高速緩沖存儲(chǔ)器區(qū)段130 及140可能為合乎需要的,此(例如)可用于具有哈佛(Harvard)結(jié)構(gòu)的處理器中。然 而,在常規(guī)的馮'諾伊曼(von Neumann)型微處理器中,可使用能夠從同一存儲(chǔ)器高 速緩存指令及數(shù)據(jù)的混合式高速緩沖存儲(chǔ)器。圖l僅展示根據(jù)具有哈佛結(jié)構(gòu)的處理器的 連接到指令及數(shù)據(jù)高速緩沖存儲(chǔ)器130、 140的程序快閃存儲(chǔ)器160 (PFM)。數(shù)據(jù)存儲(chǔ) 器可單獨(dú)地耦合于哈佛結(jié)構(gòu)中,或者存儲(chǔ)器160可為如在馮 諾伊曼結(jié)構(gòu)中所使用的統(tǒng) 一指令/數(shù)據(jù)存儲(chǔ)器。多路復(fù)用器150 (例如)由高速緩沖存儲(chǔ)器控制器120控制且將存 儲(chǔ)于高速緩存存儲(chǔ)器130、 140中的數(shù)據(jù)/指令經(jīng)由總線110b提供到CPU。
圖2更詳細(xì)地展示根據(jù)一實(shí)施例的指令高速緩沖存儲(chǔ)器130及數(shù)據(jù)高速緩沖存儲(chǔ)器 的結(jié)構(gòu)。所述布置再次展示用于指令及數(shù)據(jù)的單獨(dú)高速緩沖存儲(chǔ)器。高速緩沖存儲(chǔ)器的 每一線包含數(shù)據(jù)/指令存儲(chǔ)區(qū)域以及多個(gè)相關(guān)聯(lián)控制及標(biāo)記位(例如,IFM、 TAG及BT)。 IFM表示特定屏蔽,其可用以(例如)屏蔽地址標(biāo)記字段TAG的某些位,所述地址標(biāo) 記字段TAG含有數(shù)據(jù)/指令高速緩沖存儲(chǔ)器DATA的起始地址,如下文將更詳細(xì)地解釋。 每一線可(例如)包含指令/數(shù)據(jù)高速緩沖存儲(chǔ)器的4X32個(gè)位,如圖2中所展示。標(biāo)記 字段可包含實(shí)際地址以及指示相應(yīng)高速緩沖存儲(chǔ)器線的有效性、鎖定、類型等的額外位。 此外,如圖2中所展示,針對(duì)每一高速緩沖存儲(chǔ)器線提供分支跟蹤位BT。當(dāng)此位被設(shè) 定時(shí),每當(dāng)在相應(yīng)高速緩沖存儲(chǔ)器線內(nèi)執(zhí)行子例程調(diào)用指令且所述指令不是所述線中的 最后一個(gè)指令時(shí),CPU即可自動(dòng)鎖定相關(guān)聯(lián)的高速緩沖存儲(chǔ)器線。在此情況下,相應(yīng)高 速緩沖存儲(chǔ)器線被自動(dòng)鎖定,且當(dāng)程序從相應(yīng)子例程返回時(shí),跟隨在相應(yīng)調(diào)用指令之后 的指令將存在于高速緩沖存儲(chǔ)器中,如下文將更詳細(xì)地解釋。
圖3展示可配置高速緩沖存儲(chǔ)器的另一實(shí)施例。高速緩沖存儲(chǔ)器控制器120提供用于高速緩沖存儲(chǔ)器的所有功能的控制信號(hào)及信息。舉例來說,高速緩沖存儲(chǔ)器控制器120 控制TAG邏輯310,所述TAG邏輯310與命中邏輯320耦合,所述命中邏輯320還處 理來自高速緩沖存儲(chǔ)器控制器120及來自由高速緩沖存儲(chǔ)器控制器所提供的預(yù)取標(biāo)記 330的數(shù)據(jù)。命中邏輯產(chǎn)生控制高速緩沖存儲(chǔ)器線地址編碼器340的信號(hào),所述高速緩 沖存儲(chǔ)器線地址編碼器340尋址高速緩存存儲(chǔ)器350,所述高速緩存存儲(chǔ)器350在此實(shí) 施例中包含(例如)16個(gè)線的數(shù)據(jù)/指令存儲(chǔ)器,每一線包含(例如)用于指令/數(shù)據(jù)存 儲(chǔ)的4X32位雙字。程序快閃存儲(chǔ)器160與高速緩沖存儲(chǔ)器控制器120耦合且經(jīng)由預(yù)取 單元360而與高速緩沖存儲(chǔ)器耦合,所述預(yù)取單元360還連接到高速緩沖存儲(chǔ)器線地址 編碼器340。預(yù)取單元360將指令傳送到由高速緩沖存儲(chǔ)器線地址編碼器340直接或通 過緩沖器尋址的高速緩存存儲(chǔ)器350的每一高速緩沖存儲(chǔ)器線中。為此,預(yù)取單元360 可包含能夠存儲(chǔ)待傳送到相應(yīng)高速緩沖存儲(chǔ)器線的存儲(chǔ)區(qū)域中的指令的一個(gè)或一個(gè)以 上緩沖器。多路復(fù)用器150經(jīng)控制以在高速緩存存儲(chǔ)器350內(nèi)或從單元360的預(yù)取緩沖 器中選擇相應(yīng)字節(jié)/字/雙字并將其提供到CPU總線110b。
圖4更詳細(xì)地展示高速緩存存儲(chǔ)器350。在此實(shí)施例中,提供16個(gè)高速緩沖存儲(chǔ)器 線。每一線包含多個(gè)控制位及一 4X32位指令/數(shù)據(jù)存儲(chǔ)區(qū)域(WordO到Word3)。所述 控制位包含屏蔽MASK、地址標(biāo)記TAG、有效性位V、鎖定位L、類型位T及分支跟蹤 位BT。屏蔽MASK允許在由命中邏輯320進(jìn)行比較期間屏蔽地址標(biāo)記TAG的選定位, 如下文將更詳細(xì)地解釋。地址標(biāo)記TAG進(jìn)而指示存儲(chǔ)器160中的高速緩沖存儲(chǔ)器線的 開始。如下文將更詳細(xì)地解釋,地址標(biāo)記TAG為可讀及可寫的,且在由用戶寫入時(shí)將 強(qiáng)制預(yù)取功能。有效性位V指示相關(guān)聯(lián)高速緩沖存儲(chǔ)器線中的條目為有效的。此位不能 由用戶更改,且其經(jīng)自動(dòng)設(shè)定或復(fù)位。鎖定位L指示高速緩沖存儲(chǔ)器線是否被鎖定,且 因此不能被蓋寫。此位可由用戶更改或可相對(duì)于分支跟蹤功能而自動(dòng)設(shè)定,如下文所解 釋。位T指示高速緩沖存儲(chǔ)器線的類型,即,高速緩沖存儲(chǔ)器線是用作指令高速緩沖存 儲(chǔ)器線還是用作數(shù)據(jù)高速緩沖存儲(chǔ)器線。此位可經(jīng)設(shè)計(jì)為由用戶更改,這允許高速緩沖 存儲(chǔ)器的非常靈活的指派及配置。代替使用單個(gè)可指派位T來將某些高速緩沖存儲(chǔ)器線 指定為數(shù)據(jù)高速緩沖存儲(chǔ)器線,可使用通用配置寄存器來界定特定數(shù)目個(gè)將用于高速緩 存數(shù)據(jù)的線,而剩余高速緩沖存儲(chǔ)器線將用于指令高速緩存。在此實(shí)施例中,仍可提供 位T以指示哪些高速緩沖存儲(chǔ)器線經(jīng)設(shè)定為所指定的數(shù)據(jù)高速緩沖存儲(chǔ)器線,且因此所 述位T在此實(shí)施例中不能被更改。如稍后將解釋,根據(jù)一個(gè)實(shí)施例的高速緩沖存儲(chǔ)器可 (例如)經(jīng)配置以將零個(gè)高速緩沖存儲(chǔ)器線、l個(gè)、2個(gè)或4個(gè)高速緩沖存儲(chǔ)器線用于數(shù) 據(jù)高速緩存的目的。此指派可因此將高速緩沖存儲(chǔ)器分裂為兩個(gè)部分,例如,依據(jù)所指
9派線的數(shù)目而定,可從高速緩沖存儲(chǔ)器的底部向上指派數(shù)據(jù)高速緩沖存儲(chǔ)器線。具有更 多數(shù)據(jù)高速緩沖存儲(chǔ)器線的其它配置當(dāng)然是可能的且依據(jù)高速緩沖存儲(chǔ)器的相應(yīng)設(shè)計(jì) 而定。因此,當(dāng)被設(shè)定時(shí),位T指示此線用于數(shù)據(jù)高速緩存。
圖7展示可用以實(shí)施分支跟蹤功能的某種邏輯電路的實(shí)施例。如上文所解釋,分支 跟蹤位750用以在將分支到子例程且將返回的子例程指令、俘獲、中斷或其它指令在高 速緩沖存儲(chǔ)器線內(nèi)執(zhí)行且不是所述線中的最后一個(gè)指令的情況下自動(dòng)鎖定相關(guān)聯(lián)高速 緩沖存儲(chǔ)器線。當(dāng)被設(shè)定時(shí),在調(diào)用子例程類型指令已被執(zhí)行且程序分支離開其線性執(zhí) 行序列時(shí),CPU可通過經(jīng)由邏輯門760設(shè)定位740來自動(dòng)鎖定相關(guān)聯(lián)線。此子例程類型 指令的執(zhí)行可在執(zhí)行單元中檢測(cè)到,且通過信號(hào)770發(fā)信號(hào)通知邏輯門760。當(dāng)至少一 個(gè)尚未執(zhí)行但將在程序從相應(yīng)子例程返回時(shí)執(zhí)行的指令留在高速緩沖存儲(chǔ)器線中時(shí),啟 用此功能性。在此指令被放置于高速緩沖存儲(chǔ)器線的最后一個(gè)存儲(chǔ)器空間中的情況下, 將沒有必要保持高速緩沖存儲(chǔ)器線自動(dòng)鎖定,因?yàn)殡S后的指令將在不同高速緩沖存儲(chǔ)器 線中或甚至可能不在高速緩沖存儲(chǔ)器中。當(dāng)位750依據(jù)相應(yīng)子例程或中斷調(diào)用的執(zhí)行(其 通過檢測(cè)信號(hào)770發(fā)信號(hào)通知邏輯門760)而被設(shè)定時(shí),CPU自動(dòng)設(shè)定及復(fù)位鎖定位740。
圖5及圖6展示在微處理器或微控制器內(nèi)實(shí)施以控制可配置高速緩沖存儲(chǔ)器的行為 及功能性的通用高速緩沖存儲(chǔ)器控制寄存器510及其它控制寄存器610到660的實(shí)例。 所有寄存器可被設(shè)計(jì)為用于在32位環(huán)境中使用的32位寄存器。然而,這些寄存器可容 易適應(yīng)于在16位或8位環(huán)境中工作。舉例來說,寄存器CHECON包含位31以啟用或 停用整個(gè)高速緩沖存儲(chǔ)器,且位16 CHECOH可用以實(shí)現(xiàn)PFM程序循環(huán)位上的高速緩沖 存儲(chǔ)器一致性設(shè)定。舉例來說,此位CHECOH可在被設(shè)定時(shí)使所有數(shù)據(jù)及指令線無效, 或可使所有數(shù)據(jù)線無效且僅使未經(jīng)鎖定的指令線無效。位24可用以啟用所強(qiáng)制的數(shù)據(jù) 高速緩存功能,如下文將更詳細(xì)地解釋。當(dāng)被設(shè)定時(shí),如果高速緩沖存儲(chǔ)器帶寬未用于 提取指令,那么此功能強(qiáng)制數(shù)據(jù)高速緩存。位11-12 BTSZ可用以啟用/停用分支跟蹤標(biāo) 記。舉例來說,在一個(gè)實(shí)施例中,如果被啟用,那么分支跟蹤標(biāo)記可被設(shè)定為1、 2或4 個(gè)線的大小。因此,1、 2或4個(gè)高速緩沖存儲(chǔ)器線將具有此功能性。根據(jù)其它實(shí)施例, 所有高速緩沖存儲(chǔ)器線可被啟用以用于此功能性。位8-9 DCSZ用以界定數(shù)據(jù)高速緩沖 存儲(chǔ)器線的數(shù)目,如上文所解釋。在一個(gè)實(shí)施例中,所述數(shù)目可經(jīng)設(shè)定以啟用0、 1、 2 或4個(gè)數(shù)據(jù)高速緩沖存儲(chǔ)器線。
位4-5 PREFEN可用以啟用選擇性地用于存儲(chǔ)器的可高速緩存及非可高速緩存區(qū)的 預(yù)測(cè)性預(yù)取。存儲(chǔ)器的可高速緩存區(qū)可為存儲(chǔ)器內(nèi)的例如可經(jīng)實(shí)際高速緩存的存儲(chǔ)器或 程序區(qū)的區(qū),其意指與高速緩沖存儲(chǔ)器實(shí)際耦合的存儲(chǔ)器區(qū)。非可高速緩存區(qū)一般指代(例如)通常不能被高速緩存的存儲(chǔ)器映射外圍空間??筛咚倬彺鎱^(qū)與非可高速緩存區(qū) 之間的區(qū)別依據(jù)系統(tǒng)設(shè)計(jì)而定。 一些實(shí)施例可能需要此區(qū)別,且相應(yīng)微處理器/微控制器 將支持高速緩存/非高速緩存方法,而處理器的其它實(shí)施例可能能夠高速緩存任何類型的 存儲(chǔ)器,而不管其是實(shí)際存儲(chǔ)器區(qū)還是存儲(chǔ)器映射區(qū)。
如果被設(shè)定,那么預(yù)取單元將一直提取跟隨在當(dāng)前從中發(fā)布指令的高速緩沖存儲(chǔ)器 線之后的指令。使用兩個(gè)位允許(例如)四種不同設(shè)定,例如,啟用用于可高速緩存區(qū) 及非可高速緩存區(qū)兩者的預(yù)測(cè)性預(yù)取、僅啟用用于非可高速緩存區(qū)的預(yù)測(cè)性預(yù)取、僅啟 用用于可高速緩存區(qū)的預(yù)測(cè)性預(yù)取以及停用預(yù)測(cè)性預(yù)取。根據(jù)一實(shí)施例,假定高速緩沖 存儲(chǔ)器線包含16個(gè)字節(jié)或四個(gè)雙字。舉例來說,如果中央處理單元請(qǐng)求來自地址 0x001000的指令xl,那么高速緩沖存儲(chǔ)器控制邏輯將所有地址標(biāo)記與0x00100X (其中 位X被忽略)進(jìn)行比較。如果控制器產(chǎn)生命中,那么選擇相應(yīng)線。選定線包含以地址 0x001000起始的所有指令。因此,在每一指令為32位長(zhǎng)的情況下,第一指令將被發(fā)布 到中央處理單元,且預(yù)取單元將被觸發(fā)以預(yù)取下一線指令。為此,預(yù)取單元將把隨后的 地址標(biāo)記計(jì)算為0x001010且開始在下一可用高速緩沖存儲(chǔ)器線中加載相應(yīng)指令。當(dāng)中 央處理單元進(jìn)一步執(zhí)行來自地址0x001004、 0x001008及0x00100C的指令時(shí),預(yù)取單元 用來自地址0x001010、 0x001014、 0x001018及0x00101C的指令來填滿下一可用高速緩 沖存儲(chǔ)器線。在中央處理單元完成執(zhí)行當(dāng)前選定的高速緩沖存儲(chǔ)器線的指令之前,預(yù)取 單元將完成裝載后續(xù)指令。因此,中央處理單元將不被停止。
返回參看圖5,位0-2用以界定程序快閃存儲(chǔ)器的等待狀態(tài)的數(shù)目。因此,很多種
不同的快閃存儲(chǔ)器可與微控制器一起使用。
如圖4中所示的高速緩沖存儲(chǔ)器內(nèi)的每一線可在控制下被映射到如圖6中所示的寄
存器。因此,高速緩沖存儲(chǔ)器線可被設(shè)計(jì)為完全可通過讀取及寫入操作來存取且可完全 由用戶更改。然而,如上文所述,高速緩沖存儲(chǔ)器線的一些位可經(jīng)設(shè)計(jì)而不得由用戶更 改或可能在用戶可更改相應(yīng)線之前需要對(duì)相應(yīng)線進(jìn)行開鎖。為此,可提供索引寄存器600
以用于選擇所述16個(gè)高速緩沖存儲(chǔ)器線中的一者。 一旦已通過索引寄存器600選擇了 高速緩沖存儲(chǔ)器線,所述高速緩沖存儲(chǔ)器線便可通過隨后的寄存器610-660來存取。屏 蔽寄存器可(例如)在位5-15中包含選定高速緩沖存儲(chǔ)器線的屏蔽MASK。用于標(biāo)記 的第二寄存器可在位4-23中具有地址標(biāo)記且還可包含指示選定寄存器的有效性、鎖定狀 態(tài)、類型及分支跟蹤功能的位V、 L、 T及BT。最后,四個(gè)32位寄存器可被提供用于 在寄存器WordO、 Wordl、 Word2及Word3中包含高速緩存數(shù)據(jù)或指令的選定線??蓪?shí) 施其它控制寄存器以控制高速緩沖存儲(chǔ)器的通用功能。因此,每一高速緩沖存儲(chǔ)器線可由用戶或軟件存取及操縱,如下文將更詳細(xì)地解釋。
根據(jù)所揭示的實(shí)施例,高速緩沖存儲(chǔ)器100、 300經(jīng)設(shè)計(jì)以通過從PFM 160提取(例 如)128位對(duì)準(zhǔn)的指令字集合(稱為線)來對(duì)初始CPU指令提取作出響應(yīng)。所請(qǐng)求的實(shí) 際指令可存在于所述線中的任何地方。所述線存儲(chǔ)在高速緩沖存儲(chǔ)器130、 350 (填充) 中,且指令返回到CPU。此存取可占用多個(gè)時(shí)鐘周期且使CPU停止。舉例來說,對(duì)于 40毫微秒存取快閃,存取可在80MHz下引起3個(gè)等待狀態(tài)。然而, 一旦線被高速緩存, 對(duì)存在于所述線中的指令地址的后續(xù)存取便在零等待狀態(tài)中發(fā)生。
如果高速緩存如此被啟用,那么此過程繼續(xù)用于未命中高速緩沖存儲(chǔ)器線的每個(gè)指 令地址。以此方式,如果小回路為128位對(duì)準(zhǔn)的且與高速緩沖存儲(chǔ)器130、 350的字節(jié) 數(shù)目相同或少于高速緩沖存儲(chǔ)器130、 350的字節(jié)數(shù)目,那么所述回路可在零等待狀態(tài) 下從高速緩沖存儲(chǔ)器執(zhí)行。對(duì)于完全填充的回路,如圖1中所示的具有32位指令的4 線高速緩沖存儲(chǔ)器130每時(shí)鐘執(zhí)行一個(gè)指令。換句話說,CPU在16個(gè)時(shí)鐘中執(zhí)行存儲(chǔ) 于高速緩沖存儲(chǔ)器130中的所有指令。如果僅支持128位寬的提取,那么所述同一回路 可每線占用特定數(shù)目的等待狀態(tài)以用于提取(例如,3個(gè)等待狀態(tài)),且占用特定數(shù)目的 時(shí)鐘以用于執(zhí)行(例如,4個(gè)時(shí)鐘),這將導(dǎo)致(例如)每4個(gè)指令占用7個(gè)時(shí)鐘。此實(shí) 例將產(chǎn)生具有28個(gè)時(shí)鐘的總回路時(shí)間。
圖1中的實(shí)施例包含兩線數(shù)據(jù)高速緩沖存儲(chǔ)器以利用可存儲(chǔ)于PFM 160中的常數(shù)及 表數(shù)據(jù)的空間接近性。然而,在其它實(shí)施例中,此高速緩沖存儲(chǔ)器可為更大的且連接到 數(shù)據(jù)存儲(chǔ)器。
此外,如上文所解釋,如圖1及圖3中所展示的高速緩沖存儲(chǔ)器還可實(shí)現(xiàn)預(yù)取,以 允許避免提取128位寬的指令流所需的特定數(shù)目的等待狀態(tài)。如果預(yù)取被啟用,那么高 速緩沖存儲(chǔ)器100、 300使用最近最少使用的線進(jìn)行預(yù)測(cè)地址填充。預(yù)測(cè)地址正好是下 一順序128位對(duì)準(zhǔn)地址,如上文對(duì)使用實(shí)際地址的實(shí)例所做詳細(xì)解釋。因此,在高速緩 沖存儲(chǔ)器線內(nèi)執(zhí)行指令期間,如果預(yù)測(cè)地址尚未在高速緩沖存儲(chǔ)器中,那么高速緩沖存 儲(chǔ)器產(chǎn)生快閃存儲(chǔ)器存取。當(dāng)CPU正在需要(例如)對(duì)快閃存儲(chǔ)器系統(tǒng)的3等待狀態(tài) 存取的頻率下運(yùn)行時(shí),預(yù)測(cè)地址提取在其中CPU需要預(yù)測(cè)指令的周期內(nèi)完成。以此方 式,對(duì)于線性代碼,CPU指令提取可在零等待狀態(tài)下運(yùn)行。
當(dāng)鏈接分支與鏈接跳躍指令在CPU中執(zhí)行以保存高速緩沖存儲(chǔ)器線以供將來使用 時(shí),分支跟蹤特征查看所述指令。此特征通過在跟蹤分支或跳躍指令的線中保存任何指 令來增強(qiáng)功能調(diào)用返回的性能。
程序快閃存儲(chǔ)器高速緩沖存儲(chǔ)器160及預(yù)取模塊120、 360為在可高速緩存程序快
12閃存儲(chǔ)器區(qū)外部執(zhí)行的應(yīng)用提供增強(qiáng)的性能。性能增強(qiáng)以三種不同方式來實(shí)現(xiàn)。
第一種方式是模塊高速緩存能力。如圖1及圖3中所展示的4或16線指令高速緩 沖存儲(chǔ)器130、 350具有每時(shí)鐘為回路供應(yīng)一次指令(對(duì)于32位操作代碼多達(dá)16/64個(gè) 指令且對(duì)于16位操作代碼多達(dá)32/128個(gè)指令)的能力。高速緩沖存儲(chǔ)器大小及組織的 其它配置可適用。圖1中所展示的實(shí)施例還提供高速緩存兩線數(shù)據(jù)的能力,從而提供對(duì) 線內(nèi)的數(shù)據(jù)項(xiàng)的改進(jìn)存取。圖3中所展示的實(shí)施例通過設(shè)定分裂點(diǎn)或個(gè)別地指派相應(yīng)高 速緩沖存儲(chǔ)器類型(如上文所解釋)來提供可更靈活指派的數(shù)據(jù)高速緩沖存儲(chǔ)器線大小。 第二,當(dāng)允許預(yù)取時(shí),模塊每時(shí)鐘為線性代碼提供一次指令,從而隱藏快閃存儲(chǔ)器 的存取時(shí)間。第三,模塊可將一個(gè)或兩個(gè)指令高速緩沖存儲(chǔ)器線分配給鏈接分支歷史指 令。當(dāng)具有鏈接的跳躍或分支指令在CPU中出現(xiàn)時(shí),最后一個(gè)線被標(biāo)記為分支歷史線 并保存以用于從調(diào)用返回。 模塊啟用
根據(jù)一實(shí)施例,在復(fù)位之后,可通過設(shè)定位(例如,CHECON寄存器中的位31 ON/OFF (參見圖5))來啟用模塊。清除此位將完成以下各項(xiàng)-
停用所有高速緩沖存儲(chǔ)器、預(yù)取及分支歷史功能性且復(fù)位高速緩沖存儲(chǔ)器的狀態(tài)。
將模塊設(shè)定為旁路模式。
允許特殊功能寄存器(SFR)讀取及寫入。
節(jié)電模式下的操作
休眠模式
根據(jù)一實(shí)施例,當(dāng)裝置進(jìn)入休眠模式時(shí),時(shí)鐘控制塊停止對(duì)高速緩沖存儲(chǔ)器模塊 100、 300的時(shí)鐘。 閑置模式
根據(jù)一實(shí)施例,當(dāng)裝置進(jìn)入閑置模式時(shí),高速緩沖存儲(chǔ)器及預(yù)取時(shí)鐘源仍起作用且 CPU停止執(zhí)行代碼。任何未處理預(yù)取在模塊100、 300經(jīng)由自動(dòng)時(shí)鐘門控而停止其時(shí)鐘 之前完成。
旁路行為
根據(jù)一實(shí)施例,默認(rèn)操作模式為旁路。在旁路模式下,模塊針對(duì)每個(gè)指令而存取 PFM,從而招致如寄存器CHECON中的PFMWS位(參見圖5)所界定的快閃存取時(shí)間。 高速緩存行為
根據(jù)圖1,高速緩存與預(yù)取模塊可實(shí)施完全相聯(lián)4線指令高速緩沖存儲(chǔ)器。依據(jù)設(shè) 計(jì)而定,可提供更多或更少的高速緩沖存儲(chǔ)器線。高速緩沖存儲(chǔ)器線內(nèi)的指令/數(shù)據(jù)存儲(chǔ)
13區(qū)域可經(jīng)設(shè)計(jì)為不可寫的且在快閃編程序列期間或當(dāng)通用控制寄存器CHECON中的相 應(yīng)位被設(shè)定為邏輯0時(shí)與相關(guān)聯(lián)控制位一起被清除。其每線使用含有快閃地址標(biāo)記的寄 存器或位字段。每一線可由128個(gè)位(16個(gè)字節(jié))的指令構(gòu)成,而不管指令大小如何。 為了簡(jiǎn)化存取,根據(jù)圖1及圖3的高速緩存與預(yù)取模塊可僅從快閃160請(qǐng)求16字節(jié)對(duì) 準(zhǔn)指令數(shù)據(jù)。根據(jù)一實(shí)施例,如果CPU所請(qǐng)求的地址未與16字節(jié)邊界對(duì)準(zhǔn),那么模塊 將通過丟棄地址位[3.0]來對(duì)準(zhǔn)地址。
當(dāng)僅配置為高速緩沖存儲(chǔ)器時(shí),模塊通過在未命中時(shí)將多個(gè)指令加載到線中而像任 何高速緩沖存儲(chǔ)器一樣起作用。根據(jù)一實(shí)施例,模塊可使用簡(jiǎn)單的最近最少使用的 (LRU)算法來選擇哪個(gè)線接收新指令集合。高速緩沖存儲(chǔ)器控制器使用寄存器CHECON 的等待狀態(tài)值來確定當(dāng)其檢測(cè)到未命中時(shí)其必須等待快閃存取多久。在命中時(shí),高速緩 沖存儲(chǔ)器在零等待狀態(tài)下返回?cái)?shù)據(jù)。
指令高速緩沖存儲(chǔ)器依據(jù)預(yù)取及分支跟蹤選擇而以不同方式起作用。如果代碼為 100%線性的,那么僅高速緩存模式將以相應(yīng)PFMWS周期時(shí)序?qū)⒅噶钐峁┗氐紺PU, 其中PFMWS為等待狀態(tài)的數(shù)目。
屏蔽
使用屏蔽位字段會(huì)實(shí)現(xiàn)高速緩沖存儲(chǔ)器的進(jìn)一步靈活的使用。圖7展示用以實(shí)施屏 蔽功能的可能的邏輯電路。高速緩沖存儲(chǔ)器線的位字段710含有(例如)ll個(gè)位,所述 位可用以屏蔽地址標(biāo)記720的某些位。屏蔽位字段710的11個(gè)位用以屏蔽地址標(biāo)記720 的較低位0-10。當(dāng)比較器780將地址標(biāo)記720與所請(qǐng)求地址790進(jìn)行比較時(shí),屏蔽位字 段710中被設(shè)定為"1"的任何位將使得地址標(biāo)記中的相應(yīng)位被忽略。如果指令/數(shù)據(jù)存 儲(chǔ)區(qū)域包含16個(gè)字節(jié),那么地址標(biāo)記不包含實(shí)際地址的較低4個(gè)位。因此,如果屏蔽 710的所有位被設(shè)定為"1",那么比較器將實(shí)際地址的位4-23與使用24個(gè)地址位的系 統(tǒng)中的地址標(biāo)記的位0-19進(jìn)行比較。然而,通過屏蔽730,可迫使比較器780僅將地址 標(biāo)記720的小部分與實(shí)際地址790的相應(yīng)小部分進(jìn)行比較。因此,多個(gè)地址可引起命中。 此功能性可尤其有利地與某些引起到指令存儲(chǔ)器中的預(yù)定義地址的分支的中斷或俘獲 指令的產(chǎn)生一起使用。舉例來說,中斷可引起到含有中斷服務(wù)例程的存儲(chǔ)器地址的分支, 所述存儲(chǔ)器地址由中斷基本地址加上由中斷的優(yōu)先級(jí)所界定的偏移地址加以界定。舉例 來說,優(yōu)先級(jí)0中斷將分支到地址0x000100,優(yōu)先級(jí)1中斷將分支到地址0x000110, 優(yōu)先級(jí)2中斷將分支到地址0x000120,等等。俘獲指令可被類似地組織且可引起類似的 分支模式。假定特定數(shù)目的中斷服務(wù)例程至少對(duì)于預(yù)定義數(shù)目的指令為相同的,那么通 過使用屏蔽功能,這些地址可引起到含有服務(wù)例程的起始的同一高速緩沖存儲(chǔ)器線的分支。舉例來說,如果對(duì)于優(yōu)先級(jí)等級(jí)0-3的中斷服務(wù)例程的最初四個(gè)32位指令為相同的, 那么包含在地址0x000010處起始的指令的高速緩沖存儲(chǔ)器線的屏蔽位字段可被設(shè)定為 "11111111100",其將對(duì)從0x000100起始到0x0001300的所有地址引起命中。因此,不 僅具有優(yōu)先級(jí)0的中斷將引起命中,而且具有優(yōu)先級(jí)1、 2及3的中斷也將引起命中。 其全部將跳躍到已經(jīng)加載在高速緩沖存儲(chǔ)器中的同一指令序列。因此,將不會(huì)發(fā)生因存 取快閃存儲(chǔ)器的損失。 預(yù)取行為
控制寄存器CHECON的位字段PREFEN或相應(yīng)單個(gè)位(參見圖5)可用以啟用預(yù) 取功能。當(dāng)經(jīng)配置用于預(yù)取時(shí),模塊100、 300預(yù)測(cè)下一線地址且將其返回到高速緩沖 存儲(chǔ)器130、 350的LRU線中。預(yù)取功能基于第一 CPU指令提取來開始預(yù)測(cè)。當(dāng)?shù)谝?線放置于高速緩沖存儲(chǔ)器130、 350中時(shí),模塊僅使地址遞增到下一 16字節(jié)對(duì)準(zhǔn)地址且 開始快閃存取??扉W存儲(chǔ)器160在所有指令可從先前線執(zhí)行時(shí)或之前返回下一指令集合。
如果在預(yù)測(cè)快閃存取期間的任何時(shí)間,新CPU地址不與預(yù)測(cè)地址匹配,那么快閃 存取將被改變到正確地址。此行為不會(huì)使CPU存取占用比沒有預(yù)測(cè)的情況下所占用的 時(shí)間更長(zhǎng)的時(shí)間。
如果預(yù)測(cè)快閃存取完成,那么將指令與其地址標(biāo)記一起放置于LRU線中。在CPU 地址命中線之前不更新LRU指示。如果其是正好所預(yù)取的線,那么將所述線標(biāo)記為最 近最多使用的線且相應(yīng)地更新其它線。如果其是高速緩沖存儲(chǔ)器中的另一線,那么算法 相應(yīng)地調(diào)整,但正好所預(yù)取的線仍為L(zhǎng)RU線。如果其未命中高速緩沖存儲(chǔ)器130、 350, 那么存取轉(zhuǎn)到快閃且返回指令放置于LRU線(其為最近最多更新但從未使用的預(yù)取線) 中。
根據(jù)一實(shí)施例,如上文所述,可選擇性地開啟或關(guān)閉數(shù)據(jù)預(yù)取。根據(jù)另一實(shí)施例, 如果控制寄存器(例如,CHECON)中的專用位被設(shè)定為邏輯1,那么在指令預(yù)取中途 的數(shù)據(jù)存取可導(dǎo)致指令預(yù)取異常中止。如果此位被設(shè)定為邏輯0,那么數(shù)據(jù)存取在指令 預(yù)取完成之后完成。
分支跟蹤行為
高速緩沖存儲(chǔ)器可經(jīng)分裂以(例如)通過編程寄存器CHECON中的位字段BTSZ (參見圖5)而將指令高速緩沖存儲(chǔ)器的一個(gè)或一個(gè)以上線用于分支跟蹤指令。當(dāng)CPU 請(qǐng)求如從分支與鏈接或跳躍與鏈接指令所計(jì)算的新地址時(shí),分支跟蹤線為最近最多使用 的高速緩沖存儲(chǔ)器線。根據(jù)一實(shí)施例,當(dāng)模塊100、 300將MRU高速緩沖存儲(chǔ)器線標(biāo)記 為分支跟蹤線時(shí),其還可解除分配LRU分支跟蹤線,從而使其返回為通用高速緩沖存儲(chǔ)器使用。
如上文所解釋,如果最后一個(gè)存取是來自MRU線中的最后一個(gè)指令(最高地址), 那么所述線不被標(biāo)記為分支跟蹤線。而且,模塊不從高速緩沖存儲(chǔ)器的分支跟蹤部分解 除分配現(xiàn)有線中的任一者。
預(yù)加載行為
應(yīng)用代碼可引導(dǎo)模塊100、 300用來自快閃存儲(chǔ)器160的指令預(yù)加載及鎖定一個(gè)高 速緩沖存儲(chǔ)器線。預(yù)加載功能使用來自經(jīng)標(biāo)記為高速緩沖存儲(chǔ)器(即,非分支跟蹤)的 線的LRU。
根據(jù)一實(shí)施例,可直接存取高速緩沖存儲(chǔ)器線中的地址標(biāo)記位字段,且用戶可將任 何值寫入到此位字段中。此寫入導(dǎo)致對(duì)快閃存儲(chǔ)器中所尋址的相應(yīng)線的強(qiáng)制預(yù)加載高速 緩存。因此,預(yù)加載通過將地址寫入到高速緩沖存儲(chǔ)器線的地址標(biāo)記位字段中以從存儲(chǔ) 器預(yù)加載到相應(yīng)線來工作。根據(jù)一實(shí)施例,此動(dòng)作在存取快閃以檢索指令之前使所述線 無效。在預(yù)加載之后,所述線可由中央處理單元存取以用于執(zhí)行相應(yīng)指令。
根據(jù)一實(shí)施例,此功能性可用以實(shí)施非常靈活的調(diào)試功能性,而無需更改程序標(biāo)儲(chǔ) 器中的代碼。 一旦識(shí)別到包括在調(diào)試序列期間需要斷點(diǎn)的指令的相應(yīng)線,便可將所述線 標(biāo)記為預(yù)加載有特定地址。接著,所述高速緩沖存儲(chǔ)器線的內(nèi)容可經(jīng)修改以包括調(diào)試指 令。舉例來說,系統(tǒng)軟件可自動(dòng)替換所述高速緩沖存儲(chǔ)器線內(nèi)的指令以產(chǎn)生斷點(diǎn)或執(zhí)行 任何其它類型的子例程。 一旦相應(yīng)代碼已被執(zhí)行,便可用原始指令來替換所述指令且可 更改堆棧以返回到已從中執(zhí)行調(diào)試?yán)痰耐坏刂?。預(yù)加載功能性允許非常靈活地更改 系統(tǒng)內(nèi)的代碼。
根據(jù)又一實(shí)施例,如果高速緩沖存儲(chǔ)器線由鎖定位鎖定或潛在地由分支跟蹤位鎖 定,那么可禁止對(duì)此高速緩沖存儲(chǔ)器線的寫入存取。因此,僅經(jīng)開鎖的高速緩沖存儲(chǔ)器 線可為可寫的。如果實(shí)施此功能性,那么用戶必須在其可將新地址標(biāo)記寫入到高速緩沖 存儲(chǔ)器線中之前首先開鎖所述高速緩沖存儲(chǔ)器線,以迫使高速緩沖存儲(chǔ)器控制器加載來 自存儲(chǔ)器的相應(yīng)指令或數(shù)據(jù)。對(duì)于對(duì)指令/數(shù)據(jù)存儲(chǔ)區(qū)域的寫入存取也一樣。
主動(dòng)地用所指定指令加載高速緩沖存儲(chǔ)器的特征尤其對(duì)于如上文所解釋的屏蔽功 能來說可為非常有用的。舉例來說,如果許多中斷服務(wù)例程以同一指令序列來起始,那 么可通過將相應(yīng)服務(wù)例程地址寫入到地址標(biāo)記中以使得相應(yīng)高速緩沖存儲(chǔ)器線預(yù)加載 有相應(yīng)中斷服務(wù)例程指令而迫使此指令序列進(jìn)入高速緩沖存儲(chǔ)器中。通過設(shè)定如上文所 解釋的相應(yīng)屏蔽且鎖定相應(yīng)高速緩沖存儲(chǔ)器線,高速緩沖存儲(chǔ)器可經(jīng)預(yù)配置以使得程序 對(duì)某些中斷做出反應(yīng)而沒有快閃存取損失。因此,某些例程可始終可通過高速緩沖存儲(chǔ)器來存取。
復(fù)位與初始化
在復(fù)位后,所有高速緩沖存儲(chǔ)器線均即被標(biāo)記為無效的且高速緩沖存儲(chǔ)器特征被停 用。舉例來說,通過寄存器CHECON,等待狀態(tài)被復(fù)位到其最大等待狀態(tài)值(允許在復(fù) 位之后進(jìn)行旁路存取)。
在任何快閃程序開始時(shí),模塊100、 300迫使高速緩沖存儲(chǔ)器為其復(fù)位值。在程序 循環(huán)結(jié)束之前,由CPU所進(jìn)行的任何存取均被停止。 一旦程序循環(huán)完成,待決的CPU 存取便經(jīng)由旁路到快閃而繼續(xù)進(jìn)行。返回指令按配置寄存器中所界定的值而完成。
快閃預(yù)取緩沖器(FPB)
根據(jù)一實(shí)施例,快閃預(yù)取緩沖器設(shè)計(jì)(參見圖3)可為簡(jiǎn)單的緩沖器,例如鎖存器 或寄存器365。在一個(gè)實(shí)施例中,其可經(jīng)設(shè)計(jì)以允許利用x32位快閃存儲(chǔ)器的4個(gè)面板 當(dāng)在16位指令模式下操作時(shí)預(yù)取多達(dá)總共8個(gè)指令的CPU核心指令或當(dāng)在32位指令 模式下操作時(shí)預(yù)取4個(gè)指令的CPU核心指令。在高速緩沖存儲(chǔ)器控制器120中實(shí)施的 FPB以線性方式來預(yù)取以確保被饋入到核心中的指令將不使核心指令停止。根據(jù)一實(shí)施 例,F(xiàn)PB可含有2個(gè)各自具有16個(gè)字節(jié)的緩沖器。每一緩沖器跟蹤指令地址提取。如 果分支出現(xiàn)在緩沖器指令邊界之外,那么利用替代緩沖器(招致初始停止,但接著高速 緩存線性代碼提取)。每一指令提取迫使FPB抓取后續(xù)線性可能的16個(gè)字節(jié)以填充緩沖 器。
根據(jù)另一實(shí)施例,任選地,可編程的強(qiáng)制數(shù)據(jù)高速緩沖存儲(chǔ)器操作可通過預(yù)取緩沖 器來實(shí)施。 一旦高速緩沖存儲(chǔ)器填充有一個(gè)或一個(gè)以上指令線,便可順序地執(zhí)行所述指 令而無需在特定時(shí)間周期內(nèi)提取其它指令線。此情況尤其如此,因?yàn)閱蝹€(gè)高速緩沖存儲(chǔ) 器線內(nèi)的指令的執(zhí)行時(shí)間可兩倍于或甚至更長(zhǎng)于用以將高速緩沖存儲(chǔ)器線加載到高速 緩沖存儲(chǔ)器中的時(shí)間。此外,如果一個(gè)或多個(gè)連續(xù)高速緩沖存儲(chǔ)器線包括經(jīng)執(zhí)行的回路, 那么可能存在期間不需要高速緩存任何其它指令的相對(duì)較長(zhǎng)的時(shí)間。根據(jù)一實(shí)施例,此 時(shí)間可用以高速緩存數(shù)據(jù),例如待在表中使用的相對(duì)大量的數(shù)據(jù),等等。高速緩沖存儲(chǔ) 器可由寄存器(例如,寄存器CHECON中的位23 DATAPREFEN (參見圖5))編程, 以在高速緩沖存儲(chǔ)器帶寬不用于提取指令時(shí)執(zhí)行額外的數(shù)據(jù)高速緩沖存儲(chǔ)器功能。這在 數(shù)據(jù)表由需要被加載到高速緩沖存儲(chǔ)器中的程序使用的情況下可為有用的。數(shù)據(jù)提取可 在第一次初始填充之后發(fā)生且仍允許核心繼續(xù)使用來自高速緩沖存儲(chǔ)器線的所預(yù)取指 令。根據(jù)一實(shí)施例,當(dāng)功能位DATAPREFEN被設(shè)定時(shí),可在每一指令提取之后自動(dòng)提 取數(shù)據(jù)線?;蛘?,根據(jù)另一實(shí)施例,只要相應(yīng)位DATAPREFEN被設(shè)定,就可強(qiáng)制數(shù)據(jù)
17高速緩存。因此,舉例來說,可通過設(shè)定相應(yīng)位來開始及停止所強(qiáng)制的數(shù)據(jù)高速緩存。 在又一實(shí)施例中,每當(dāng)高速緩沖存儲(chǔ)器在一時(shí)間周期內(nèi)暫停加載指令時(shí),就可自動(dòng)執(zhí)行 所強(qiáng)制的數(shù)據(jù)高速緩存。如果提供多個(gè)控制位,那么可實(shí)施不同數(shù)據(jù)高速緩存模式的可 編程組合。
圖8展示根據(jù)一實(shí)施例的使用高速緩存及預(yù)取功能的簡(jiǎn)化快閃存儲(chǔ)器請(qǐng)求??扉W存 儲(chǔ)器請(qǐng)求在步驟800處開始。首先,在步驟805中確定請(qǐng)求是否為可高速緩存的。如果 請(qǐng)求為可高速緩存的,那么在步驟810中確定所提供地址是否己產(chǎn)生高速緩沖存儲(chǔ)器命 中。如果是,那么根據(jù)一實(shí)施例,過程可分支為兩個(gè)并行過程。然而,其它實(shí)施例可順 序地執(zhí)行這些過程。第一分支以步驟812開始,在步驟812中確定是否己請(qǐng)求對(duì)子例程 的調(diào)用。如果否,那么第一并行過程結(jié)束。如果是,那么在步驟815中確定是否已在相 應(yīng)高速緩沖存儲(chǔ)器線中設(shè)定分支跟蹤位。如果是,那么在步驟820中確定調(diào)用是否為經(jīng) 高速緩存線中的最后一個(gè)指令。如果是,那么第一并行過程結(jié)束。如果是,那么在步驟 830中鎖定相應(yīng)高速緩沖存儲(chǔ)器線。第二并行過程在步驟835中開始,其中從高速緩沖 存儲(chǔ)器返回指令,且在步驟835中,執(zhí)行最近最后使用的算法以更新高速緩沖存儲(chǔ)器線 的狀態(tài)。如果在步驟810中尚未產(chǎn)生高速緩沖存儲(chǔ)器命中或如果請(qǐng)求為不可高速緩存的, 那么在步驟840中確定預(yù)取緩沖器是否產(chǎn)生命中。如果預(yù)取緩沖器含有所請(qǐng)求的指令, 那么在步驟845中返回所請(qǐng)求的指令。否則,在步驟850中執(zhí)行快閃存取,其將使CPU 停止。在步驟850之后的步驟855中,在高速緩沖存儲(chǔ)器線可用于執(zhí)行高速緩沖存儲(chǔ)器 功能的情況下,快閃請(qǐng)求可填充高速緩沖存儲(chǔ)器線。例程以步驟860結(jié)束。
盡管已參考本發(fā)明的實(shí)例性實(shí)施例而描繪、描述及界定了本發(fā)明的實(shí)施例,但所述 參考并不意味著對(duì)本發(fā)明的限制,且不應(yīng)推斷出任何此類限制。所揭示的標(biāo)的物能夠在 形式及功能上作出相當(dāng)多的修改、更改及等效物,如相關(guān)領(lǐng)域的和受益于本發(fā)明的一般 技術(shù)人員將想到的。本發(fā)明的所描繪及描述的實(shí)施例僅為實(shí)例,且并非窮舉本發(fā)明的范 圍。
權(quán)利要求
1.一種用于中央處理單元的高速緩沖存儲(chǔ)器模塊,其包含與存儲(chǔ)器耦合的高速緩沖存儲(chǔ)器控制單元,與所述控制單元及所述存儲(chǔ)器耦合的高速緩存存儲(chǔ)器,其中所述高速緩存存儲(chǔ)器包含多個(gè)高速緩沖存儲(chǔ)器線,所述多個(gè)高速緩沖存儲(chǔ)器線中的至少一個(gè)高速緩沖存儲(chǔ)器線包含地址標(biāo)記位字段及用于存儲(chǔ)待順序發(fā)布的指令的相關(guān)聯(lián)存儲(chǔ)區(qū)域以及至少一個(gè)控制位字段,其中所述控制位字段與所述地址標(biāo)記位字段耦合以屏蔽所述地址標(biāo)記位字段中預(yù)定義數(shù)目的位。
2. 根據(jù)權(quán)利要求1所述的高速緩沖存儲(chǔ)器模塊,其中所述至少一個(gè)高速緩沖存儲(chǔ)器線 進(jìn)一步包含用于鎖定所述相關(guān)聯(lián)高速緩沖存儲(chǔ)器線的至少一個(gè)鎖定位。
3. 根據(jù)權(quán)利要求1所述的高速緩沖存儲(chǔ)器模塊,其中每一高速緩沖存儲(chǔ)器線包含用于 鎖定所述相關(guān)聯(lián)高速緩沖存儲(chǔ)器線的至少一個(gè)鎖定位。
4. 根據(jù)權(quán)利要求3所述的高速緩沖存儲(chǔ)器模塊,其中每一高速緩沖存儲(chǔ)器線進(jìn)一步包 含用于自動(dòng)鎖定所述相關(guān)聯(lián)高速緩沖存儲(chǔ)器線的至少一個(gè)分支跟蹤位,其中在所述 分支跟蹤位被設(shè)定的情況下,所述鎖定位在所述相關(guān)聯(lián)存儲(chǔ)區(qū)域中的預(yù)定義分支指 令已被發(fā)布的情況下被自動(dòng)設(shè)定。
5. 根據(jù)權(quán)利要求1所述的高速緩沖存儲(chǔ)器模塊,其中每一高速緩沖存儲(chǔ)器線進(jìn)一步包 含用于指示所述相關(guān)聯(lián)高速緩沖存儲(chǔ)器線的有效性的有效性控制位。
6. 根據(jù)權(quán)利要求1所述的高速緩沖存儲(chǔ)器模塊,其中每一高速緩沖存儲(chǔ)器線進(jìn)一步包 含用于指示所述高速緩沖存儲(chǔ)器線是用作指令高速緩沖存儲(chǔ)器線還是數(shù)據(jù)高速緩 沖存儲(chǔ)器線的類型控制位。
7. 根據(jù)權(quán)利要求1所述的高速緩沖存儲(chǔ)器模塊,其進(jìn)一步包含與所述存儲(chǔ)器及所述高 速緩存存儲(chǔ)器耦合的預(yù)取單元,其中所述預(yù)取單元可操作以將來自所述存儲(chǔ)器的指 令加載到另一高速緩沖存儲(chǔ)器線中,其中所述指令相繼于當(dāng)前從所述高速緩沖存儲(chǔ) 器線發(fā)布的指令。
8. 根據(jù)權(quán)利要求1所述的高速緩沖存儲(chǔ)器模塊,其中最近最少使用的算法用以確定哪 個(gè)高速緩沖存儲(chǔ)器線將被蓋寫。
9. 一種操作用于中央處理單元的具有多個(gè)高速緩沖存儲(chǔ)器線的高速緩沖存儲(chǔ)器的方 法,所述方法包含以下步驟將多個(gè)順序指令存儲(chǔ)在所述高速緩沖存儲(chǔ)器的高速緩沖存儲(chǔ)器線內(nèi)且將所述順序指令的相關(guān)聯(lián)起始地址存儲(chǔ)在所述高速緩沖存儲(chǔ)器線的相關(guān)聯(lián)地址標(biāo)記位字段 中將屏蔽存儲(chǔ)在所述高速緩沖存儲(chǔ)器線的屏蔽位字段中; 接收指令地址請(qǐng)求;將所述指令地址請(qǐng)求與通過用所述屏蔽位字段屏蔽所述相關(guān)聯(lián)地址標(biāo)記位字段 而產(chǎn)生的部分地址進(jìn)行比較,以產(chǎn)生命中或未命中信號(hào);如果已產(chǎn)生命中信號(hào),那么從所述高速緩沖存儲(chǔ)器線存取指令。
10. 根據(jù)權(quán)利要求9所述的方法,其中由中斷或由俘獲指令產(chǎn)生所述指令地址請(qǐng)求。
11. 根據(jù)權(quán)利要求io所述的方法,其中所述中斷或俘獲指令產(chǎn)生由基本地址及偏移地 址構(gòu)成的地址,其中所述偏移分別由中斷優(yōu)先級(jí)或由俘獲數(shù)目產(chǎn)生。
12,根據(jù)權(quán)利要求9所述的方法,其進(jìn)一步包含鎖定所述高速緩沖存儲(chǔ)器線的步驟。
13. 根據(jù)權(quán)利要求9所述的方法,其進(jìn)一步包含將多個(gè)順序指令存儲(chǔ)在所述高速緩沖存儲(chǔ)器的另一高速緩沖存儲(chǔ)器線內(nèi); 為所述另一高速緩沖存儲(chǔ)器線設(shè)定分支跟蹤功能; 執(zhí)行從所述另一高速緩沖存儲(chǔ)器線提取的指令; 在調(diào)用子例程后即刻自動(dòng)鎖定所述另一高速緩沖存儲(chǔ)器線。
14. 根據(jù)權(quán)利要求9所述的方法,其進(jìn)一步包含在從所述子例程返回后即刻為所述另一 高速緩沖存儲(chǔ)器線復(fù)位所述分支跟蹤功能的步驟。
15. 根據(jù)權(quán)利要求9所述的方法,其中在執(zhí)行所述另一高速緩沖存儲(chǔ)器線中所含有的指 令后即刻調(diào)用所述子例程。
16. —種微控制器,其包含中央處理單元;與所述中央處理單元耦合的高速緩沖存儲(chǔ)器模塊,其包含-與存儲(chǔ)器耦合的高速緩沖存儲(chǔ)器控制單元,與所述控制單元及所述存儲(chǔ)器耦合的高速緩存存儲(chǔ)器,其中所述高速緩存存儲(chǔ) 器包含多個(gè)高速緩沖存儲(chǔ)器線,所述多個(gè)高速緩沖存儲(chǔ)器線中的至少一個(gè)高速緩 沖存儲(chǔ)器線包含地址標(biāo)記位字段及用于存儲(chǔ)待順序發(fā)布的指令的相關(guān)聯(lián)存儲(chǔ)區(qū) 域以及至少一個(gè)控制位字段,其中所述控制位字段與所述地址標(biāo)記位字段耦合以 屏蔽所述地址標(biāo)記位字段中預(yù)定義數(shù)目的位。
17. 根據(jù)權(quán)利要求16所述的微控制器,其中所述至少一個(gè)高速緩沖存儲(chǔ)器線進(jìn)一步包 含用于鎖定所述相關(guān)聯(lián)高速緩沖存儲(chǔ)器線的至少一個(gè)鎖定位。
18. 根據(jù)權(quán)利要求16所述的微控制器,其中每一高速緩沖存儲(chǔ)器線包含用于鎖定所述 相關(guān)聯(lián)高速緩沖存儲(chǔ)器線的至少一個(gè)鎖定位。
19. 根據(jù)權(quán)利要求18所述的微控制器,其中每一高速緩沖存儲(chǔ)器線進(jìn)一步包含用于自 動(dòng)鎖定所述相關(guān)聯(lián)高速緩沖存儲(chǔ)器線的至少一個(gè)分支跟蹤位,其中在所述分支跟蹤 位被設(shè)定的情況下,所述鎖定位在所述相關(guān)聯(lián)存儲(chǔ)區(qū)域中的預(yù)定義分支指令己被發(fā) 布的情況下被自動(dòng)設(shè)定。
20. 根據(jù)權(quán)利要求16所述的微控制器,其中每一高速緩沖存儲(chǔ)器線進(jìn)一步包含用于指 示所述相關(guān)聯(lián)高速緩沖存儲(chǔ)器線的有效性的有效性控制位。
全文摘要
本發(fā)明提供一種用于中央處理單元的高速緩沖存儲(chǔ)器模塊,其具有與存儲(chǔ)器耦合的高速緩沖存儲(chǔ)器控制單元以及與所述控制單元及所述存儲(chǔ)器耦合的高速緩存存儲(chǔ)器,其中所述高速緩存存儲(chǔ)器具有多個(gè)高速緩沖存儲(chǔ)器線,所述多個(gè)高速緩沖存儲(chǔ)器線中的至少一個(gè)高速緩沖存儲(chǔ)器線具有地址標(biāo)記位字段及用于存儲(chǔ)待順序發(fā)布的指令的相關(guān)聯(lián)存儲(chǔ)區(qū)域以及至少一個(gè)控制位字段,其中所述控制位字段與所述地址標(biāo)記位字段耦合以屏蔽所述地址標(biāo)記位字段中預(yù)定義數(shù)目的位。
文檔編號(hào)G06F12/08GK101558390SQ200780046103
公開日2009年10月14日 申請(qǐng)日期2007年12月12日 優(yōu)先權(quán)日2006年12月15日
發(fā)明者格雷格·D·拉赫蒂, 約瑟夫·W·特里斯, 羅德尼·J·佩薩文托 申請(qǐng)人:密克羅奇普技術(shù)公司