龍芯詳細設計dc32-cache模塊接口_第1頁
龍芯詳細設計dc32-cache模塊接口_第2頁
龍芯詳細設計dc32-cache模塊接口_第3頁
龍芯詳細設計dc32-cache模塊接口_第4頁
龍芯詳細設計dc32-cache模塊接口_第5頁
免費預覽已結束,剩余12頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Cache模塊接口設計擬制 MIPS項目組 審核 版本 V 1.0 日期 2008.1.2 MIPS項目組Cache模塊接口設計1 概述11 文檔說明本文檔針對Cache的總體RTL設計,作為以后各個模塊RTL集成的依據12 縮寫語:MCore完整的MIPS32處理器,包括執行內核(Execution Core),協處理器0(CP0),存儲器管理(MMU)和總線接口(BIU)system除MCore以外的片上系統core即MCoreExecution Core執行內核,MCore的主要子系統之一MDUMultiply Divide Unit。乘除單元,MCore的主要子系統之一 CP0Copr

2、ocessor 0。系統協處理器0,MCore的主要子系統之一MMUMemory Management Unit。存儲器管理單元,MCore的主要子系統之一 BIUBus Interface Unit。總線接口單元,MCore與System的接口IBIUInstruction Bus Interface Unit。指令總線接口單元,MCore與System的指令接口DBIUData Bus Interface Unit。數據總線接口單元,MCore與System的數據接口TLBTransfer Look-aside Buffer。地址映射頁表,處于MMU中 ITLBInstruction TL

3、B,指令總線TLBDTLBData TLB,數據總線TLBJTLBJoin TLB,指令數據聯合TLB13 輸入文檔14 版本修改原因DateRev.AuthorContent of revisionApproval2008-1-50.0林川cache 初步設計Cache模塊描述2.1 Cache與系統的框圖Cache組織結構ICACHE為8KB,4路組相連,面向指令總線。DCACHE為4KB,2路組相連,面向數據總線。對于ICACHE,對Cache memory每次操作的單位固定為32bit對于DCACHE,對Cache memory每次操作的最小單位為8bit,最大單元為32bit每路Ca

4、che為2KB,分為128行,每行對應4個32bit的內存連續數據,即16Byte每行的4個WORD對應于總線的最低位地址:0 x0,0 x 4,0 x 8,0 x C每行的共用一個高位地址和LOCK位,每個WORD有對應的有效位,其結構如下每組都有一個TAG靜態存儲器和4個DATA靜態存儲器,每個存儲器都是128個單元。TAG的每個單元為25位,如下:Tag內保留的20位是物理地址PA31:12,所以必須和TLB轉換后的物理地址Paddr31:12進行比較,Valid表示相應的DATA是否有效,4位LOCK表示該行不能被替換,1位每個DATA保存了32位外部存儲器對應的數據可見,對于BUS上

5、的地址,其31:12用以作為高位地址比較,其11:4用以檢索Cache Memory的行號,其3:2用以選擇行內的WORD,其1:0用以選擇每個WORD內的Byte。所以,每路的Cache Memory是( 20 + 4 + 1 + 128 ) bit X 128line的大小。Cache的各路也稱為關聯組(association set),其結構都是完全一致的,且共用一個行號作為訪問地址,從邏輯功能上,要求同一行關聯組的各路的Tag都不相同。每行還有一個LRU標志該行最早被替換進CACHE的組。LRU是一個1bit X 128line的靜態存儲器。以二路組相連為例,其結構如下每組內部的結構如

6、上圖,同一個地址,hit0和hit1不會同時有效。當CACHE HIT時,由Hit0和Hit1來選擇從相應組中讀出的數據。當CACHE miss時,由LRU和相應的LOCK來決定需要替換的組。Cache讀命中操作Vaddr31:0和讀訪問請求,在T0 cycle從MCore內核發出后,在當前周期同時發送給CACHE和TLB。對于CACHE,將Vaddr11:4作為Cache Memory的讀地址。在下一周期(T1 cycle),對應行的Tag和4個WORD的數據從Cache Memory讀出,其中Tag中PA31:12將和TLB轉換后的物理地址PA31:12比較,如果一致且,對應的WORD有效

7、位也為高,那么當前CACHE命中(hit)。由Vaddr3:2選擇相應的WORD返回給內核,并將數據握手信號dready有效。由于同一行的各路Tag都不相同,所以只可能有其中一路命中。當CACHE命中后,TLB將不會向MCore外部請求讀訪問。Cache讀缺失操作Cache miss時,將一次性替換對應路的整一行,采用請求字優先,數據一旦寫回cache,就可以返回內核,減少內核的等待損失。具體如下:Vaddr31:0和讀訪問請求,在T0 cycle從MCore內核發出后,在當前周期同時發送給CACHE和TLB。對于CACHE,將Vaddr11:4作為Cache Memory的讀地址。在下一周期

8、(T1 cycle),對應行的Tag和4個WORD的數據從Cache Memory讀出,其中Tag中PA31:12將和TLB轉換后的物理地址PA31:12比較,如果所有各路的tag都不匹配或相應WORD無效,那么成為發生CACHE缺失(miss)。此時,Cache向mmu_ctrl發出cache miss信號,由mmu_ctrl在T1時刻 向MCore外部請求4WORD的讀取訪問。讀取地址是內核需要訪問的當前地址,采用的burst類型是WRAP4,即地址以4為模進行訪問。同時,在T1時刻,CACHE將選擇一路,向當前行寫入內核訪問的物理地址作為更新的tag,但需要將所有WORD的VALID位寫

9、0。外部存儲器經過不定延時,在Tn從外部返回的第一個WORD將寫入CACHE對應行對應WORD,且將該WORD的VALID位寫1,在Tn+1時刻,從CACHE中讀出的tag將與TLB的結果比較成功,產生對于地址的cache hit,并返回給內核數據和ready。CACHE從外部存儲器取回第一個WORD數據后,還需要等待其他3個WORD,這個過程稱為預取(prefetch)。這是因為根據指令和數據空間一致性,相鄰的地址在未來很有可能還會被訪問到。在作prefetch的過程中,內核如果沒有訪問存儲器的操作,則可以并行地和cache運行。如果內核在這期間又發出了新請求,需要根據該地址是否在CACHE

10、區間來判斷。如果不在CACHE區間,那么該請求將直接經過TLB,等待外部存儲器做完當前WRAP4的訪問,再訪問外部存儲器。如果在CACHE區間,CACHE需要優先將prefetch做完,所以當前Cache Memory的地址仍將是上一次Cache miss所指向的行號。如果當前的新請求不在當前prefetch的地址內,那么需要等待所有WRAP4做完,否則,只要prefetch對應的WORD一取回來,就可以判斷出一次cache hit,并返回給內核數據和ready。當在prefetch中,新請求是寫操作且cache hit時,CACHE需要將寫入WORD的對應byte替換為內核向外部存儲器寫入的

11、數據。(我覺得如果過于復雜可以在prefetch期間可將write全hold住,等待prefetch結束后再作判斷)Cache寫操作CACHE將采用write through模式,即如果寫操作cache hit,那么將數據同時寫入Cache和外部存儲器。如果寫操作cache miss,那么只將數據寫入外部存儲器。Vaddr31:0,寫訪問請求和寫數據,在T0 cycle從MCore內核發出后,在當前周期同時發送給CACHE和TLB。對于CACHE,將Vaddr11:4作為Cache Memory的讀地址。在下一周期(T1 cycle),對應行的Tag讀出,其中Tag中PA31:12將和TLB轉

12、換后的物理地址PA31:12比較,如果一致且,對應的WORD有效位也為高,那么當前CACHE命中(hit)。此時CACHE將對相應的WORD進行寫操作,其數據是內核對外部存儲器的寫數據。在下一周期(T2 cycle), CACHE將數據握手信號dready有效。內核的寫請求和寫數據,將在T1時刻,就寫入與外部存儲器交互的Write FIFO。當Write FIFO有空余空間時,在下一周期(T1 cycle),mmu_ctrl就可以返回ready給內核,如果Write FIFO滿,那么需要等待Write FIFO有空余空間時,才可以返回ready給內核。當Write FIFO非空時,所有的pre

13、fetch需要等待Write FIFO為空,才可以向外部存儲器發出訪問請求。ICache接口描述ICache與系統接口 Pin NameSourceBus widthDescriptionClock signals:clksystem1Clock Input. All interface inputs and outputs are relative to the rising edge of this signalReset Signalsrst_nsystem1Hard/Cold Reset Signal. Causes main state of core to default valu

14、e, and a Reset Exception in the core. Falling edge valid.Cache內部邏輯采用外部輸入時鐘作為同步時鐘,所有的寄存器都在工作此時鐘域下,并在時鐘的上升延采樣輸入數據。當外部電源穩定并觸發一個冷復位信號下降沿信號時,FPU中的關鍵狀態寄存器會立即被復位到默認值。該復位相對于同時時鐘是異步復位。ICache與MMU接口Pin NameSourceBus widthTypeDescriptioncore_mmu_reqcore1regthe core fetch instruction enablecore_mmu_vaddrcore32re

15、gthe fetch PC of instructionmmu_icache_paddrmmu32regthe physical address31:12 from TLBmmu_icache_cachenammu1regthe virtual is cache enablemmu_icache_preadymmu1regthe TLB translation is ready and the Paddr is validmmu_icache_excepmmu1regthe TLB refill exception happenedicache_mmu_readyicache1Combthe

16、icahce hit/miss is validicache_mmu_hiticache1Combthe icahce is: 1: hit; 0: missicache_mmu_rdataicache32Combthe fetch Instructionicache_mmu_stateicache4regthe current state for icache state, for debugicache_mmu_reqicache1regthe icache require to access memory off core by wrap4mmu_icache_hrdatammu32co

17、mbthe read data from off core memorymmu_icache_hreadymmu1combthe read ready from off core memorymmu_icache_herrormmu1combhe read error from off core memory其中,當hit時的時序如上圖,mmu_icache_paddr由TLB發出,最快有效于下一個周期,但也可能需要多個周期(ITLB miss,JTLB hit),所以由 mmu_icache_pready來指示其TLB轉換結束,mmu_icache_paddr有效,mmu_icache_pa

18、ddr當且僅當采樣到內核新請求時,才更新。mmu_icache_pready當且僅當采樣到內核新請求時,才激活內部狀態,當TLB翻譯結束,發出一個周期的脈沖。在內核發出請求的下一周期,PA0有效,且CACHE命中,MMU在該周期返回內核aready和dready同時為高,并采樣下一個地址。Miss的時序如上圖。當Cache miss時,MMU在返回內核aready和dready同時為低,同時Cache在當前周期更新TAG存儲器的PA和使所有Valid無效。Cache在發現miss的下一個周期向MMU發出prefetch請求(cache_mmu_req = 1),MMU會根據物理地址PA0向bi

19、u發出WRAP4的訪問請求,經過不定周期的延遲,數據DA0從外部返回,同時mmu_cache_ready有效。Cache在該周期將DA0寫入對應的DATA存儲器,同時寫對應WORD的Valid有效。在下一周期,Cache比較發現hit(此時不需要mmu_core_pready,因為在prefetch狀態,PA0已知),所以MMU可以將DA0從Cache返回給內核。同時, MMU在該周期返回內核aready和dready同時為高,并采樣下一個地址。ICache與set0_tag_mem/ set1_tag_mem接口Pin NameSourceBus widthTypeDescriptionic

20、ache_addricache8regthe addr to icache tag memoryicache_set0tag_wdataicache25regthe data to icache tag memoryicache_set0tag_wenicache1regthe write enable to icache tag memory0: write1: readicache_set0tag_cenicache1regthe chip selection to icache tag memory0: select1: invalidset0tag_icache_rdataset0 t

21、ag25regthe data from icache tag memorySet0Tag代表是關聯組0(set0)對應的TAG存儲器,該連接關系與set1完全一致,不再描述。其傳輸時序如下TAG當發生miss后,cache向外部存儲器prefetch時更新,當miss的當前周期更新TAG存儲器的PA和使所有Valid無效。當外部數據返回的周期寫PA和對應WORD的Valid有效。如下圖ICache與set0_wordx_mem/set1_wordx_mem(x=0,1,2,3)接口Pin NameSourceBus widthTypeDescriptionicache_addricache8

22、regthe addr to icache word0 memoryicache_set0word_wdataicache128regthe data to icache word0 memoryicache_set0word_cenicache1regthe chip selection to icache word0 memory0: select1: invalidset0word_icache_rdataset0 word025regthe data from icache word0 memorySet0word0代表關聯組0的第一個WORD對應的數據存儲器。該連接關系與set1完全

23、一致,不再描述。其他WORD對應的數據存儲器依次類推。DCache接口描述ICache與系統接口 Pin NameSourceBus widthDescriptionClock signals:clksystem1Clock Input. All interface inputs and outputs are relative to the rising edge of this signalReset Signalsrst_nsystem1Hard/Cold Reset Signal. Causes main state of core to default value, and a Re

24、set Exception in the core. Falling edge valid.Cache內部邏輯采用外部輸入時鐘作為同步時鐘,所有的寄存器都在工作此時鐘域下,并在時鐘的上升延采樣輸入數據。當外部電源穩定并觸發一個冷復位信號下降沿信號時,FPU中的關鍵狀態寄存器會立即被復位到默認值。該復位相對于同時時鐘是異步復位。DCache與MMU接口Pin NameSourceBus widthTypeDescriptioncore_mmu_reqcore1regthe core access data enablecore_mmu_vaddrcore32regthe address of d

25、atacore_mmu_cachecore1regcore向MMU發出cache指令信號core_mmu_prefetchcore1regcore向MMU發出prefetch指令信號core_mmu_synccore1regcore向MMU發出sync指令信號core_mmu_cache_codecore5regcore向cache發出子操作碼mmu_dcache_sizecore2regthe access size00:8bit01:16bit10:32bitmmu_dcache_writecore1regthe write enablemmu_dcache_paddrmmu32regth

26、e physical address31:12 from TLBmmu_dcache_cachenammu1regthe virtual is cache enablemmu_dcache_preadymmu1regthe TLB translation is ready and the Paddr is validmmu_dcache_excepmmu1regthe TLB refill exception happeneddcache_mmu_readyicache1Combthe dcahce hit/miss is validdcache_mmu_hiticache1Combthe d

27、cahce is: 1: hit; 0: missdcache_mmu_rdataicache32Combthe read datadcache_mmu_stateicache4regthe current state for icache state, for debugdcache_mmu_reqicache1regthe dcache require to access memory off core by wrap4mmu_dcache_hrdatammu32combthe read data from off core memorymmu_dcache_hreadymmu1combt

28、he read ready from off core memorymmu_dcache_herrormmu1combhe read error from off core memorymmu_dcache_wdatammu32regthe write data讀命中和讀缺損的時序和ICACHE一致。其寫hit時序如下圖,其中當寫訪問和寫數據從內核發出后,第二周期Cache發現tag比較一致,那么將改寫相應的DATA,同時將數據寫入write fifo。在第三周期,再發出cache_mmu_ready有效,如果當前write fifo的操作結束(wff_mmu_ready=1),那么MMU在該

29、周期返回內核aready和dready同時為高,并采樣下一個地址。當寫miss時,無需寫入DATA,所以只要write fifo的操作結束(wff_mmu_ready=1),那么MMU在該周期返回內核aready和dready同時為高,并采樣下一個地址。當發生讀miss后,cache向外部存儲器prefetch時更新,當miss的當前周期更新TAG存儲器的PA和使所有Valid無效。當外部數據返回的周期寫PA和對應WORD的Valid有效。在Prefetch期間,如果發生內核發出寫操作,且寫地址hit,那么需要等待prefetch結束再判斷。DCache與set0_tag_mem/ set1_

30、tag_mem接口Pin NameSourceBus widthTypeDescriptiondcache_addrcache8regthe addr to cache tag memorydcache_set0tag _wdatacache25regthe data to cache tag memorydcache_set0tag _wencache1regthe write enable to cache tag memory0: write1: readdcache_set0tag _cencache1regthe chip selection to cache tag memory0: select1: invalidset0tag_dcache_rdataset0 tag25regthe data from ca

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論