在微控制器尺寸和成本的限制下,M4K內(nèi)核內(nèi)部不支持指令高速緩存(I-cache)或數(shù)據(jù)高速緩存(D-cache)的標(biāo)準(zhǔn)功能。本文重點(diǎn)討論的一個(gè)內(nèi)容--SRAM接口,這是MIPS32 M4K內(nèi)核的一個(gè)標(biāo)準(zhǔn)功能。
M4K內(nèi)核SRAM接口基本描述
M4K內(nèi)核SRAM接口是M4K內(nèi)核的通用高速存儲(chǔ)器接口。它可為指令存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器路徑提供低延遲接口,支持單周期和多周期存儲(chǔ)器存取。 必須指出,SRAM接口不能直接與外部存儲(chǔ)器件連接,若要實(shí)現(xiàn)外部存儲(chǔ)連接,需使用一個(gè)外部存儲(chǔ)控制器。必須使用固定映射表(FMT)和SRAM接口,以提供完整的存儲(chǔ)器控制邏輯。一種是置于CPU與主存間的高速緩存,它有兩種規(guī)格:一種是固定在主板上的高速緩存(Cache Memory );另一種是插在卡槽上的COAST(Cache On A Stick)擴(kuò)充用的高速緩存,另外在CMOS芯片1468l8的電路里,它的內(nèi)部也有較小容量的128字節(jié)SRAM,存儲(chǔ)我們所設(shè)置的配置數(shù)據(jù)。還有為了加速CPU內(nèi)部數(shù)據(jù)的傳送,自80486CPU起,在CPU的內(nèi)部也設(shè)計(jì)有高速緩存,故在Pentium CPU就有所謂的L1 Cache(一級(jí)高速緩存)和L2Cache(二級(jí)高速緩存)的名詞,一般L1 Cache是內(nèi)建在CPU的內(nèi)部,L2 Cache是設(shè)計(jì)在CPU的外部,但是Pentium Pro把L1和L2 Cache同時(shí)設(shè)計(jì)在CPU的內(nèi)部,故Pentium Pro的體積較大。Pentium II又把L2 Cache移至CPU內(nèi)核之外的黑盒子里。SRAM顯然速度快,不需要刷新的操作,但是也有另外的缺點(diǎn),就是價(jià)格高,體積大,所以在主板上還不能作為用量較大的主存。
雙模操作
SRAM接口的初始配置稱為雙模。在這種模式下,指令和數(shù)據(jù)通道彼此隔離。數(shù)據(jù)有獨(dú)立的讀寫總線(D-SRAM),還有D-SRAM接口控制信號(hào)和一個(gè)獨(dú)立的指令側(cè)(I-SRAM)接口,以及其互補(bǔ)I-SRAM控制信號(hào)。
雙模有助于I-SRAM和D-SRAM接口的同步處理,消除任何可能出現(xiàn)在公用總線接口上的延遲,防止其減緩程序的執(zhí)行。在這個(gè)模式下,內(nèi)核可達(dá)到1.5 DMIPS/MHz的標(biāo)稱性能。雙模結(jié)構(gòu)如圖1所示。
標(biāo)準(zhǔn)模式
標(biāo)準(zhǔn)模式是標(biāo)準(zhǔn)接口的一個(gè)配置選項(xiàng),在這種模式下,為了節(jié)省必須從內(nèi)核發(fā)送的信號(hào)總數(shù),I-SRAM和D-SRAM信號(hào)合并在一起。除了數(shù)據(jù)寫總線外,D-SRAM接口是完全禁用的,所有數(shù)據(jù)讀周期都自動(dòng)改變方向,以使用I-SRAM讀總線。
在該模式中,內(nèi)核的平均性能大概是1.2 DMIPS/MHz。然而,由SRAM接口內(nèi)核暴露的活躍信號(hào)總數(shù)是122個(gè),比雙模節(jié)省87個(gè)信號(hào)。減少接口使用的活躍信號(hào)數(shù)量,對(duì)于成本非常有限、總裸片面積比絕對(duì)性能更重要的設(shè)計(jì)來說,是一種更經(jīng)濟(jì)有效的方式。
SRAM接口標(biāo)準(zhǔn)模式如圖2所示。
處理中斷
SRAM接口提供了中止指令處理的能力,這種能力可中止M4K內(nèi)核5段流水線中任何指令處理。這有助于外部系統(tǒng)控制器立即響應(yīng)外部事件,如中斷請(qǐng)求或通過EJTAG調(diào)試接口請(qǐng)求。在處理典型微控制器應(yīng)用中高度確定性性質(zhì)時(shí),快速響應(yīng)外部中斷事件至關(guān)重要。
對(duì)接口信號(hào)連接有限的器件提供支持
這個(gè)功能通常用于接口外設(shè)的總線鎖存和總線停止的組合,如ADC。該類型的混合信號(hào)器件通常不提供32位位寬的接口。
總線鎖存和總線停止
SRAM接口提供輸入控制信號(hào),在外部存儲(chǔ)控制器禁用這個(gè)信號(hào)之前鎖住數(shù)據(jù)總線,以防止CPU進(jìn)一步寫處理。由此,可不用擔(dān)心多線程存儲(chǔ)周期的損害。SRAM接口還提供控制信號(hào),利于總線停止,使設(shè)計(jì)師將速度更慢的存儲(chǔ)器和外設(shè)連接到系統(tǒng)成為可能。這些器件可包括速度更慢的非易失性RAM和混合信號(hào)器件,在將請(qǐng)求的數(shù)據(jù)傳送到總線之前,它們需要更多的等待時(shí)間。
緩存關(guān)聯(lián)信號(hào)
雖然M4K內(nèi)核不包含任何高速緩存,但仍能指明出現(xiàn)在地址總線上的當(dāng)前存儲(chǔ)器地址是否可以進(jìn)行緩存。外部存儲(chǔ)控制器能夠利用這些狀態(tài)信號(hào)實(shí)現(xiàn)L2高速緩存結(jié)構(gòu)。
M4K SRAM接口在微控制器領(lǐng)域的應(yīng)用
利用上述這些功能,設(shè)計(jì)師們能夠?qū)τ谖⒖刂破飨到y(tǒng)環(huán)境中使用M4K SRAM接口的多種優(yōu)勢(shì)有所認(rèn)識(shí)。
首先,緊密耦合的接口意味著大多數(shù)處理任務(wù)是在單時(shí)鐘周期內(nèi)完成的。除非當(dāng)設(shè)計(jì)師執(zhí)行總線停止時(shí),需要考慮速度較慢的存儲(chǔ)器件的完成周期。而且,連接到該接口的控制邏輯必須只能處理指令和數(shù)據(jù),以使整個(gè)邏輯設(shè)計(jì)不那么復(fù)雜。另外,可能還要鎖住總線,使原子處理的完成能夠不受排隊(duì)周期的影響。SRAM指令執(zhí)行速度要比DRAM快得多。Cold-Fire5329處理器內(nèi)部集成了32 KB的SRAM,本設(shè)計(jì)方案將充分利用處理器片內(nèi)SRAM來對(duì)解碼程序進(jìn)行優(yōu)化。首先對(duì)源代碼中的主要解碼函數(shù)進(jìn)行分析,如表1所列。可以看到驅(qū)動(dòng)寫函數(shù)(write)、子帶綜合(MPEGSUB_synthesis)、反向修正離散余弦變換(imdct_I)和快速離散余弦變換(fast_dct)對(duì)處理器資源消耗較大,幾乎占用80%的解碼時(shí)間。根據(jù)分析結(jié)果,分別把音頻驅(qū)動(dòng)程序和上述解碼函數(shù)放進(jìn)SRAM中執(zhí)行,以提高流媒體解碼器的執(zhí)行速度,降低其對(duì)處理器資源的消耗。
固定映射表(FMT)可減少外部存儲(chǔ)控制器所需的邏輯和解碼量。除了存儲(chǔ)器映像外設(shè),以及對(duì)微控制器可用的存儲(chǔ)器件絕對(duì)尺寸外,有源區(qū)都在定義的邊界之內(nèi)。
在雙模操作下,指令提取路徑和數(shù)據(jù)讀/寫路徑是獨(dú)立的。這些獨(dú)立的數(shù)據(jù)通道有助于存儲(chǔ)控制器邏輯優(yōu)化存儲(chǔ)器件的類型和尺寸。
中止流水線中,任何處理的能力都有助于在調(diào)試環(huán)境中實(shí)現(xiàn)快速響應(yīng)和精確的斷點(diǎn)控制。
基本上,L2緩存可以使用M4K內(nèi)核的本地信號(hào)執(zhí)行,從而簡化L2緩存控制器。