專利名稱:一種用于訪問系統芯片外sdram的控制器及其實現方法
技術領域:
本發明涉及集成電路(IC)設計領域,尤其涉及一種在基于ARM內核的具有AMBA總線的片上系統(SOC)內訪問片外同步動態隨機存儲器(SDRAM)的控制器,以及其實現方法。
背景技術:
在集成電路設計領域,片上系統(SOC,system on a chip)在進入本世紀后得到迅猛發展。片上系統SOC簡單地講是將計算機系統集成到一片芯片上。當該系統需要外接大容量的動態隨機存儲器DRAM(以SDRAM為例)時,片內的訪問接口模塊(或稱SDRAM controller)的性能就顯得尤為重要。從計算機系統角度來看,在計算機系統中的存儲子系統是決定整個系統性能的重要一環。當系統中如果有同步動態隨機存儲器SDRAM的話,為保證系統性能,一般要加高速緩存(cache)對數據進行緩存。一般而言,片上系統SOC也是一個計算機系統,當外接大容量的SDRAM時,同步動態隨機存儲器控制器(SDRAMcontroller)一方面要將片內CPU的訪問命令轉換成符合SDRAM訪問時序,同時也要考慮性能要滿足要求。
關于高速緩存(cache)在計算機系統中的作用在關于現代計算機體系結構教材中都有描述,也可以參見美國加州大學Irvine分校的Preeti RanjanPanda的博士論文《Memory Optimizations and Exploration for EmbeddedSystems》(1998),對此作了專門描述。但在片上系統SOC領域專門對此進行論述的較為少見。
目前,商業上成熟的同步動態隨機存儲器控制器(SDRAM controller)比如Lattic公司、Xlinx公司以及ARM公司提供的SDRAM controller IP,均不帶有高速緩存功能,ARM公司提供的SDRAM controller IP頂多具有寫緩沖器(writebuffer)和讀緩沖器(read buffer),只具有極為有限的數據緩存功能。
同步動態隨機存儲器(SDRAM)的優點是容量大,密度高,但是訪問周期長,與靜態隨機存儲器(SRAM)相比,訪問它需要許多額外的開銷(latency),因此在SOC設計中,如果使用現有的同步動態隨機存儲器控制器SDRAMcontroller,那么在選用CPU內核時,必須具有數據緩沖功能,否則很可能由于同步動態隨機存儲器SDRAM訪問周期過長而導致性能下降,甚至不能正常工作。
本發明人針對SOC系統芯片中存在的上述不足而構思設計,希望通過提高SOC系統芯片對片外SDRAM的訪問效率,從而提高整個SOC的系統性能。
發明內容
本發明所要解決的技術問題是提供一種在片上系統(SOC)內設置訪問片外同步動態隨機存儲器的控制器及其實現方法,采用該控制器和方法能夠提高整個片上系統(SOC)對片外SDRAM的訪問效率,從而提高了整個系統的性能。
為了實現上述目的,本發明提供了一種訪問片外同步動態隨機存儲器的控制器,設置于基于ARM內核的、具有AHB總線的片上系統內,介于所述AHB總線和片外同步動態隨機存儲器之間,其特點在于,包括一SDRAM訪問接口模塊,用于與所述外同步動態隨機存儲器連接,滿足同步動態隨機存儲器SDRAM的訪問時序;一高速緩存控制器,用于連接所述AHB總線和所述SDRAM訪問接口模塊,并對來自片外同步動態隨機存儲器SDRAM的數據進行預取和緩存。
上述的控制器,其特點在于,所述高速緩存控制器進一步包括存儲器控制器、控制器、不命中地址(miss_addr)模塊、置換單元;其中,所述存儲器控制器,用于與所述所述AHB總線和片外同步動態隨機存儲器連接,對緩存的數據和相關標志位存放進行控制,以及與所述SDRAM訪問接口模塊之間的數據傳輸;所述控制器,用于通過狀態機實現對整個高速緩存的訪問操作過程進行統籌調度;所述不命中地址模塊,用于與所述存儲器控制器和控制器連接,在不命中的情況下產生訪問所述存儲器控制器內高速緩存存儲器的地址,以及地址切換信號;所述置換單元,用于在所述控制器控制下產生需要被替換出去的存儲體的選擇信號,輸出給所述存儲器控制器。
上述的控制器,其特點在于,所述存儲器控制器進一步包括一數據存儲器,為高速緩存cache的數據存儲區,用于對緩存的數據和相關標志位進行存放;一邏輯電路,用于對所述數據存儲器的存儲數據進行邏輯控制。
上述的控制器,其特點在于,所述存儲器控制器為帶4個存儲體的存儲器結構,所述存儲體進一步包括8×16bit的存儲塊和dirty、tay、tag標志位。
上述的控制器,其特點在于,所述置換單元為一線性反饋轉位寄存器LFSR。
上述的控制器,其特點在于,所述SDRAM訪問接口模塊進一步包括一配置模塊,用于完成所述同步動態隨機存儲器參數配置;一主控模塊,又包括與存儲器的接口,用于使高速緩存的接口符合標準的SDRAM接口;二個主狀態機,包括初始化工作機和正常工作狀態機;一組計數器,用于控制各個命令的時序滿足接口規范的要求。
上述的控制器,其特點在于,所述的計數器采用同步遞減計數的方式,所述計數器的位寬由與其相關的時序參數的最大值決定。
為了更好地實現上述目的,本發明還提供了一種利用該控制器進行數據存取控制的方法,其特點在于在片上系統內,介于所述AHB總線和片外同步動態隨機存儲器之間,分別設置SDRAM訪問接口模塊和高速緩存控制器;將所述高速緩存控制器與所述AHB總線連接,負責向所述SDRAM訪問接口模塊產生片外同步動態隨機存儲器SDRAM的訪問控制信息,所述SDRAM訪問接口模塊根據所述控制信息來訪問片外同步動態隨機存儲器SDRAM,滿足片外同步動態隨機存儲器SDRAM的時序接口。在該方法中采用了內嵌高速緩存cache來完成SDRAMcontroller的功能。
本發明還有一個目的,是提供一種片上系統芯片,該芯片的片上系統能夠克服現有技術中對片外同步動態隨機存儲器SDRAM訪問效率不高,對系統性能有較大制約的缺點。
為了實現上述目的,本發明還提供了一種系統芯片,包括通過AHB總線連接的ARM內核、SDRAM控制器和其他模塊,所述SDRAM控制器與片外同步動態隨機存儲器連接,其特點在于,所述SDRAM控制器進一步包括
一SDRAM訪問接口模塊,用于與所述外同步動態隨機存儲器連接,滿足同步動態隨機存儲器SDRAM的訪問時序;一高速緩存控制器,用于連接所述AHB總線和所述SDRAM訪問接口模塊,并對來自片外同步動態隨機存儲器SDRAM的數據進行預取和緩存。
下面結合附圖進一步說明本發明的具體實施例
圖1是本發明所示的一種帶有SDRAM controller的SOC芯片結構示意圖;圖2是圖1中SDRAM controller的系統結構圖;圖3是圖2中高速緩存控制器模塊與SDRAM訪問接口模塊的接口時序圖;圖4是本發明所示的一種高速緩存控制器模塊組成結構圖;圖5是本發明所示的一種采用4路組相聯變換(4_way set_associativemapping)結構的高速緩存存儲器的組織結構圖;圖6是本發明所用的一種線性反饋轉位寄存器LFSR的電路結構圖;圖7是圖5中所示存儲器中一個存儲體的存儲結構圖。
具體實施例方式
圖1是同步動態隨機存儲器(SDRAM controller)1在SOC系統芯片10中的位置,它介于AHB總線4和外部SDRAM 20之間,將來自ARM總線4的CPU訪問命令轉換成符合SDRAM的接口時序。其中,系統芯片10包括通過AHB總線條連接的ARM內核3、其它模塊2和同步動態隨機存儲器(SDRAM controller)1。
圖2是同步動態隨機存儲器(SDRAM controller)的系統結構圖。同步動態隨機存儲器(SDRAM controller)1,作為業界流行的片上總線AMBA(AHB+APB)上的從設備,它用兩個相對獨立的模塊來實現,高速緩存控制器(cachecontroller)11和SDRAM訪問接口模塊(sdram interface)12,高速緩存控制器(cache controller)11負責與AHB總線4接口,向SDRAM訪問接口模塊(sdraminterface)12產生SDRAM 20的訪問控制信息;SDRAM訪問接口模塊(sdraminterface)12根據這些訪問控制信息來訪問片外SDRAM 20,滿足片外SDRAM 20的時序接口。
圖3是高速緩存控制器(cache controller)11與SDRAM訪問接口模塊(sdram interface)12的接口時序圖。其中該信號說明如下Sdwrdata是將要寫到SDRAM 20中的數據;Sdrddata是從SDRAM中讀入數據;Wrind為寫命令,為高時,將開始一次寫burst操作;Rdind為讀命令,為高時,將開始一次讀burst操作;Datardy為SDRAM訪問接口模塊12的應答信號,當SDRAM訪問接口模塊12收到Wrind或Rdind命令后,表明準備就緒,開始讀寫操作;Sdaddr為高速緩存控制器(cache controller)11送到SDRAM訪問接口模塊12的地址。
圖4是高速緩存控制器(cache controller)11組成結構圖。它的內部子模塊包括存儲器控制器(Memory controller)110主要完成對數據控制器(datamemory)110a的控制,以及與SDRAM訪問接口模塊12之間的數據傳輸等。
控制器(Controller)111對高速緩存(cache)的較高層次的控制單元,內有狀態機,對整個操作過程進行調度。
置換單元(replacement)113產生需要被替換出去的存儲塊(block)的選擇信號。
不命用地址(addr_miss)模塊112在不命中(miss)時產生所需的地址。
圖5是存儲器控制器(Memory controller)110采用4路組相聯變換(4_wayset_associative mapping)時,一個存儲體(bank)的存儲器(memory)的存儲結構圖。實際有4個這樣的存儲體(bank)。存儲器控制器(Memorycontroller)110作為高速緩存(cache)的數據存儲區,存儲了SDRAM 20中的數據,是以存儲塊(block)為單位進行存儲,存儲塊(block)大小可以根據實際需求來設置,本設計中,存儲塊(block)大小為8×16bits,也是一個SDRAM的瞬時脈沖(burst)傳輸。除了存儲塊(block),還包括相關標志位,標志位包括dirty,tag和valid。Dirty位用來表明在采用write_back方式寫入時,該存儲塊(block)已被改寫,但SDRAM 20中并沒有更新,因此在替換時,先要把該存儲塊(block)寫入到SDRAM中,如果dirty位為無效值,則不必將該模塊寫入到SDRAM 20中;Tag隨機存儲器中存放存儲塊(block)的高位地址(來自CPU);Valid標志是在判斷是否命中時使用,當某存儲塊(block)被寫入時,與Tag隨機存儲器一起,該valid位置1,否則說明該存儲塊(block)中還是無效數據(初始值),肯定是不命中的。
圖6是LFSR的電路結構圖。該電路值需要產生兩位偽隨機數據,在給定初值后,該電路就在不受干擾的情況下運行,當來自控制器(controller)111的“捕捉”信號有效后,將鎖定該電路的輸出,該輸出被送到存儲器控制器(memory controller)110中,選擇其中一個存儲體(bank)。
在圖7中,根據來自處理器(processor)的存儲器地址(memory address),取出4組數據(data或稱line)的Tag值,該Tag值是數據(data)對應在SDRAM中的高位地址,同時與來自處理器(processor)的高位地址(Tag)比較,則共有4個比較器,如果有一個相同,說明有命中(hit)的情況,否則說明沒有命中(miss)。
在圖1、圖2中,本發明揭示了一種帶緩存的同步動態隨機存儲器的控制器1,包括SDRAM訪問接口模塊12,其用于滿足SDRAM的訪問時序,因為SDRAM存儲器與靜態存儲器(SRAM)相比,本身帶有比較復雜的控制狀態機。在本發明中,除了用SDRAM訪問接口模塊12實現上述功能外,還包括高速緩存控制器模塊11,實現對來自SDRAM的數據進行預取和緩存的新功能。
帶緩存的同步動態隨機存儲器的控制器1在SOC芯片10中的位置參見圖1,它介于AHB總線4和外部SDRAM 20之間。帶緩存的同步動態隨機存儲器的控制器1的組成參見圖2,該高速緩存控制器(Cache controller)11負責與AHB總線4接口,向SDRAM訪問接口模塊(sdram interface)12產生SDRAM 20的訪問控制信息;SDRAM訪問接口模塊(sdram interface)12根據這些訪問控制信息來訪問片外SDRAM 20,滿足片外SDRAM 20的時序接口。
在實施過程中,這兩個部分是分開獨立設計的,兩者之間接口比較簡單,用預先定義好的接口信號及時序來進行約束,參見圖3。其中,一、高速緩存控制器(cache controller)11該高速緩存控制器11,負責向SDRAM訪問接口模塊(sdram interface)12產生SDRAM 20的訪問控制信息,同時也負責與AHB總線4接口。
該高速緩存控制器11的組成結構圖,參見圖4,其內部子模塊進一步包括存儲器控制器(Memory controller)110,主要用于完成對數據存儲器(data memory)110a的控制,以及與SDRAM訪問接口模塊(sdram interface)12之間的數據傳輸等。
控制器(Controller)111,是高速緩存(cache)的較高層次的控制單元,內設置有狀態機,對整個操作過程進行調度。
置換單元(replacement)113,用于產生需要被替換出去的存儲塊(block)的選擇信號。
命中地址模塊(addr_miss)112,用于在發生不命中(miss)時產生所需的地址。
該存儲器控制器(memory controller)110是高速緩存(cache)中最重要的模塊。也是高速緩存(cache)的核心所在,緩存的數據以及相關的標志位存放在該存儲器控制器110中。
在圖5中,該存儲器控制器(memory controller)110采用4路組相聯變換(4_way set_associative mapping)時,一個存儲體(a bank)的存儲器的存儲結構圖,實際有4個這樣的存儲體(bank)。該存儲器控制器(memorycontroller)110作為高速緩存(cache)的數據存儲區,不僅存儲SDRAM中的數據,還包括相關標志位,標志位包括Tag,Valid和Dirty。該存儲器控制器(memory controller)110用單端SRAM(singal port sram)來實現。
高速緩存訪問的單元是存儲塊(block或稱line),一個存儲塊(block)存放一次SDRAM的瞬間脈沖(burst)傳輸,一個存儲體(bank)放多個存儲塊(block),存儲塊(block)大小和數量可根據實際需求來確定。
Dirty位用來表明在采用write_back方式寫入時,該存儲塊(block)已被改寫,但SDRAM中并沒有更新,因此在替換時,先要把該存儲塊(block)寫入到SDRAM中,如果dirty位為無效值,則不必將該模塊寫入到SDRAM中。
Tag隨機存儲器中存放存儲塊(block)的高位地址(來自CPU)。存儲體(Bank)中的存儲塊(block)也是由來自CPU的地址提供而形成的索引(index)。
Valid標志是在判斷是否命中時使用,當某存儲塊(block)被寫入時,與Tag存儲器一起,該Valid位置1,否則說明該存儲塊(block)中還是無效數據(初始值),肯定是不命中的。
在圖4中,該不命中地址模塊(miss_addr)112主要是用來在不命中(miss)的情況下訪問存儲器控制器(memory controller)110的內部高速緩存存儲器(cache memory)的地址,以及地址切換信號。
該不命中地址模塊(miss_addr)112也有狀態機,該狀態機與控制器(controller)111的狀態機同步,因為都是針對高速緩存(cache)訪問而言,只是輸出的結果不同。
在圖4中,該控制器(controller)111實現統籌協調高速緩存(cache)的整個訪問過程。它是用狀態機實現的,因此該控制器(controller)111比較簡單,不必畫出其結構圖。
在圖4中,置換單元(replacement unit)113為簡化設計,在本發明中將采用隨機(radom)的方法來選中需要被替換出去的存儲塊(block)。用線性反饋轉位寄存器LFSR(Linear Feeaback Shift Register,)來產生偽隨機數據,用線性反饋轉位寄存器LFSR的電路結構圖見圖6。該用線性反饋轉位寄存器LFSR在上電復位后就一直運行,只是在需要的時候將數據作為需要被替換的存儲塊(block)的存儲體(bank)值輸出,這是一個比較簡單的方法。
二、SDRAM訪問接口模塊(sdram interface)12SDRAM訪問接口模塊12包括兩個功能模塊,即配置模塊(sdram_reg),主控制模塊(sdram_cmd_seq)。
配置模塊主要完成SDRAM的參數配置工作,是一個獨立的AHB SLAVE模塊,它與AHB的接口遵從AMBA總線AHB讀寫規范。配置內容包括與SDRAM芯片相關的控制和時序參數;初始化SDRAM的控制寄存器,軟件通過向該寄存器寫值發布初始化命令初始化外掛SDRAM;自動刷新時間參數。
主控模塊(sdram_cmd_seq),主要包括這幾個部分與MEMORY的接口;兩個主控狀態機;時序計數器組。
主控模塊(sdram_cmd_seq)的存儲器(MEMORY)接口符合標準的SDRAM接口,數據位寬為16bit,也可以根據SDRAM的大小進行擴展。
主控模塊(sdram_cmd_seq)有兩個主狀態機,一個是初始化狀態機,一個是正常工作狀態機。均采用讀寫后自動充電方式,存儲器(MEMORY)刷新方式也采用定時自動刷新方式。
主控模塊(sdram_cmd_seq)另外還包括一組計數器,主要是用于控制各個命令的時序滿足接口規范的要求,它們包括Tcd計數器,Trp計數器,Trc計數器,auto-refresh計數器,burst-wr計數器,burst-rd計數器,所有計數器統一采用同步遞減計數的方式,計數器的位寬由與其相關的時序參數的最大值決定。
在本發明中,該帶緩存的同步動態隨機存儲器的控制器111的實現方法是基于下列設計原理高速緩存(Cache)的目的是在高速CPU和低速memory之間建立容量小、速度快的存儲器(memory),因此CPU在每次讀寫存儲器(memory)時不必都訪問外部的慢速存儲器(memory)。這是因為,程序執行時的具有空間局部性(spatial locality)和時間局部性(temporal locality)屬性。也就是說,在空間上相鄰的數據被訪問的概率越大;被訪問過的數據被再次訪問的可能性也很大。比如,如果CPU要讀取程序指令(作為數據保存在SDRAM中),高速緩存(cache)將它相鄰的一片數據也一并寫入到高速緩存(cache)中,這樣,在CPU在執行隨后的程序時,存儲到高速緩存(cache)中的其余數據很有可能被CPU讀取,而不需要從外部SDRAM中讀取。
高速緩存(cache)設計時要考慮高速緩存(cache)的數據的存儲方式、取出(fetching)策略、寫入(writing)策略、置換(replacement)策略。
高速緩存(cache)性能的計算公式如下(Access time)=(hit cost)+(miss rate)*(miss penalty)(1)在公式(1)中,不難看出,要提高高速緩存(cache)的性能,只需要減少hit cost,miss rate和miss penalty的數值即可。比如hit cost為1個cycle,miss rate為10%,miss penalty為8個cycle的話,平均訪問時間為1+0.1*8=1.8(cycles)這樣就大大提高了訪問的速度。
高速緩存(cache)的實現策略如下1)高速緩存存儲器組織結構(cache memory organization)在本實施例中,采用4路組相聯變換(4_way set_associative mapping)結構。如圖7所示2)取出方式(fetch mechanism)取出(fetch)有很多種方式,實現起來難易程度不同,本設計按需預取方式,降低實現的復雜程度,也就是在發生不命中的情況下才從SDRAM中取數據。
3)寫入方式(write mechanism)
本設計將采用write_back方法以及write_allocate方式。Write_back方法是當CPU要往SDRAM中寫入數據時,只是將數據寫到高速緩存(cache)中,并不直接寫到SDRAM中,只是在它所在的存儲塊(block)被替換出去的時候,才被真正寫入SDRAM,這特別適合對某存儲區域反復多次讀寫以及先寫后讀的情況,但這種寫入方式會導致存儲一致性問題,而對于單處理器(singleprocessor)情況,一致性問題可以不予考慮,但會增加標志位和被替換時傳輸開銷。
Write_allocate方式是在出現寫不命中(write miss)時,先把該存儲塊(block)讀入高速緩存(cache)中,再在高速緩存(cache)中進行修改。
4)置換策略(replacement policy)從易實現性角度來講,隨時(random)方法將是比較好的選擇,用LFSR方法來產生隨機數。
在本發明的具體實施例中,帶緩存的同步動態隨機存儲器的控制器實現方法,具體實現步驟包括步驟1,對片上系統的CPU發出讀/寫操作指令進行判斷,當操作指令為讀操作時,執行步驟11,當操作指令為寫操作指令時,執行步驟21;步驟11,在高速緩存控制器中的狀態機的控制下,啟動是否命中的判斷,如果命中,則將高速緩存控制器中緩存的數據送到AHB總線上,執行過程完畢;如果不命中,將執行步驟12;步驟12,立即啟動高速緩存控制器中的一置換單元,選一個高速緩存控制器中的存儲體來存放數據;步驟13,對被選中存儲體中的存儲塊,其drity標志位無效/有效進行判斷;如果被選中存儲體中的存儲塊,其drity標志位無效,則執行步驟14;如果被選中存儲體中的存儲塊,其drity標志位有效,則執行步驟15;步驟14,直接從同步動態隨機存儲器SDRAM中取出長度為一個存儲塊的數據,覆蓋到被選中的所述存儲塊中,并將CPU所需數據送到AHB總線上,過程執行完畢;步驟15,將CPU所需數據送到AHB總線上,過程執行完畢;步驟21,在高速緩存控制器中的狀態機的控制下,啟動是否命中的判斷,如果命中,則將來自AHB總線的數據寫入高速緩存控制器中的高速緩存存儲器,并將所述高速緩存存儲器中相應存儲塊的drity標志位設置為有效,執行過程完畢;如果不命中,將執行步驟22;步驟22,立即啟動高速緩存控制器中的一置換單元,選一個高速緩存控制器中存儲體來存放數據;步驟23,對被選中存儲體中的存儲塊,其drity標志位無效/有效進行判斷;如果被選中存儲體中的存儲塊,其drity標志位無效,則執行步驟24;如果被選中存儲體中的存儲塊,其drity標志位有效,則執行步驟25;步驟24,直接從SDRAM中取出長度為一個存儲塊的數據,覆蓋到所述存儲塊中,并將來自AHB總線的數據寫入到所述存儲塊中,并設drity標志位為有效,過程執行完畢;步驟25,先將所述存儲塊中的數據替換出去,保存到同步動態隨機存儲器SDRAM中,然后從同步動態隨機存儲器SDRAM中取出被尋址的地址的內容,長度為一個存儲塊,寫入到高速緩存存儲器中,并將來自AHB的數據寫入到所述存儲塊中,并設drity標志位為有效,過程執行完畢。
采用本發明所述的方法和裝置,與現有的技術相比,由于采取了cache緩存的技術措施,訪問外接SDRAM的效率提高了40%以上,使得在SOC設計時,可提高系統的性能,因此也提高了設計的靈活性。
權利要求
1.一種訪問片外同步動態隨機存儲器的控制器,設置于基于ARM內核的、具有AHB總線的片上系統內,介于所述AHB總線和片外同步動態隨機存儲器之間,其特征在于,包括一SDRAM訪問接口模塊,用于與所述外同步動態隨機存儲器連接,滿足同步動態隨機存儲器SDRAM的訪問時序;一高速緩存控制器,用于連接所述AHB總線和所述SDRAM訪問接口模塊,并對來自片外同步動態隨機存儲器SDRAM的數據進行預取和緩存。
2.根據權利要求1所述的控制器,其特征在于,所述高速緩存控制器進一步包括存儲器控制器、控制器、不命中地址模塊、置換單元;其中,所述存儲器控制器,用于與所述所述AHB總線和片外同步動態隨機存儲器連接,對緩存的數據和相關標志位存放進行控制,以及與所述SDRAM訪問接口模塊之間的數據傳輸;所述控制器,用于通過狀態機實現對整個高速緩存的訪問操作過程進行統籌調度;所述不命中地址模塊,用于與所述存儲器控制器和控制器連接,在不命中的情況下產生訪問所述存儲器控制器內高速緩存存儲器的地址,以及地址切換信號;所述置換單元,用于在所述控制器控制下產生需要被替換出去的存儲體的選擇信號,輸出給所述存儲器控制器。
3.根據權利要求2所述的控制器,其特征在于,所述存儲器控制器進一步包括一數據存儲器,為高速緩存cache的數據存儲區,用于對緩存的數據和相關標志位進行存放;一邏輯電路,用于對所述數據存儲器的存儲數據進行邏輯控制。
4.根據權利要求2或3所述的控制器,其特征在于,所述存儲器控制器為帶4個存儲體的存儲器結構,所述存儲體進一步包括8×16bit的存儲塊和dirty、tay、tag標志位。
5.根據權利要求4所述的控制器,其特征在于,所述置換單元為一線性反饋轉位寄存器LFSR。
6.根據權利要求1、2、3或5所述的控制器,其特征在于,所述SDRAM訪問接口模塊進一步包括一配置模塊,用于完成所述同步動態隨機存儲器參數配置;一主控模塊,又包括與存儲器的接口,用于使高速緩存的接口符合標準的SDRAM接口;二個主狀態機,包括初始化工作機和正常工作狀態機;一組計數器,用于控制各個命令的時序滿足接口規范的要求。
7.根據權利要求6所述的控制器,其特征在于,所述的計數器采用同步遞減計數的方式,所述計數器的位寬由與其相關的時序參數的最大值決定。
8.一種利用同步動態隨機存儲器的控制器進行數據存取控制的方法,其特征在于在片上系統內,介于所述AHB總線和片外同步動態隨機存儲器之間,分別設置SDRAM訪問接口模塊和高速緩存控制器;將所述高速緩存控制器與所述AHB總線連接,負責向所述SDRAM訪問接口模塊產生片外同步動態隨機存儲器SDRAM的訪問控制信息,所述SDRAM訪問接口模塊根據所述控制信息來訪問片外同步動態隨機存儲器SDRAM,滿足片外同步動態隨機存儲器SDRAM的時序接口。
9.根據權利要求8所述控制器進行數據存取控制的方法,其特征在于進一步包括如下步驟步驟1,對片上系統的CPU發出讀/寫操作指令進行判斷,當操作指令為讀操作時,執行步驟11,當操作指令為寫操作指令時,執行步驟21;步驟11,在高速緩存控制器中的狀態機的控制下,啟動是否命中的判斷,如果命中,則將高速緩存控制器中緩存的數據送到AHB總線上,執行過程完畢;如果不命中,將執行步驟12;步驟12,立即啟動高速緩存控制器中的一置換單元,選一個高速緩存控制器中的存儲體來存放數據;步驟13,對被選中存儲體中的存儲塊,其drity標志位無效/有效進行判斷;如果被選中存儲體中的存儲塊,其drity標志位無效,則執行步驟14;如果被選中存儲體中的存儲塊,其drity標志位有效,則執行步驟15;步驟14,直接從同步動態隨機存儲器SDRAM中取出長度為一個存儲塊的數據,覆蓋到被選中的所述存儲塊中,并將CPU所需數據送到AHB總線上,過程執行完畢;步驟15,將CPU所需數據送到AHB總線上,過程執行完畢;步驟21,在高速緩存控制器中的狀態機的控制下,啟動是否命中的判斷,如果命中,則將來自AHB總線的數據寫入高速緩存控制器中的高速緩存存儲器,并將所述高速緩存存儲器中相應存儲塊的drity標志位設置為有效,執行過程完畢;如果不命中,將執行步驟22;步驟22,立即啟動高速緩存控制器中的一置換單元,選一個高速緩存控制器中存儲體來存放數據;步驟23,對被選中存儲體中的存儲塊,其drity標志位無效/有效進行判斷;如果被選中存儲體中的存儲塊,其drity標志位無效,則執行步驟24;如果被選中存儲體中的存儲塊,其drity標志位有效,則執行步驟25;步驟24,直接從SDRAM中取出長度為一個存儲塊的數據,覆蓋到所述存儲塊中,并將來自AHB總線的數據寫入到所述存儲塊中,并設drity標志位為有效,過程執行完畢;步驟25,先將所述存儲塊中的數據替換出去,保存到同步動態隨機存儲器SDRAM中,然后從同步動態隨機存儲器SDRAM中取出被尋址的地址的內容,長度為一個存儲塊,寫入到高速緩存存儲器中,并將來自AHB的數據寫入到所述存儲塊中,并設drity標志位為有效,過程執行完畢。
10.根據權利要求8所述的數據存取控制的方法,其特征在于,所述啟動置換單元的步驟中,是采用隨機的方法來選中需要被替換出去的存儲塊。
11.一種系統芯片,包括通過AHB總線連接的ARM內核、SDRAM控制器和其他模塊,所述SDRAM控制器與片外同步動態隨機存儲器連接,其特征在于,所述SDRAM控制器進一步包括一SDRAM訪問接口模塊,用于與所述外同步動態隨機存儲器連接,滿足同步動態隨機存儲器SDRAM的訪問時序;一高速緩存控制器,用于連接所述AHB總線和所述SDRAM訪問接口模塊,并對來自片外同步動態隨機存儲器SDRAM的數據進行預取和緩存。
12.根據權利要求11所述的芯片,其特征在于,所述高速緩存控制器進一步包括存儲器控制器、控制器、不命中地址模塊、置換單元;其中,所述存儲器控制器,用于與所述所述AHB總線和片外同步動態隨機存儲器連接,對緩存的數據和相關標志位存放進行控制,以及與所述SDRAM訪問接口模塊之間的數據傳輸;所述控制器,用于通過狀態機實現對整個高速緩存的訪問操作過程進行統籌調度;所述不命中地址模塊,用于與所述存儲器控制器和控制器連接,在不命中的情況下產生訪問所述存儲器控制器內高速緩存存儲器的地址,以及地址切換信號;所述置換單元,用于在所述控制器控制下產生需要被替換出去的存儲體的選擇信號,輸出給所述存儲器控制器。
全文摘要
本發明公開了一種訪問片外SDRAM的控制器及其實現方式,該控制器設置于基于ARM內核的、具有AHB總線的片上系統內,介于所述AHB總線和片外同步動態隨機存儲器之間,包括SDRAM訪問接口模塊,用于與外同步動態隨機存儲器連接,滿足同步動態隨機存儲器SDRAM的訪問時序;高速緩存控制器,用于連接AHB總線和SDRAM訪問接口模塊,并對來自片外同步動態隨機存儲器SDRAM的數據進行預取和緩存。由于在系統芯片內設置了高速緩存,從而使訪問外接SDRAM的效率提高,提高了整個系統的性能,同時也提高了芯片設計的靈活性。
文檔編號H01L27/00GK1553496SQ0313181
公開日2004年12月8日 申請日期2003年6月5日 優先權日2003年6月5日
發明者葉輝, 熊小昆, 葉 輝 申請人:中興通訊股份有限公司