龙芯详细设计dc32-cache模块接口_第1页
龙芯详细设计dc32-cache模块接口_第2页
龙芯详细设计dc32-cache模块接口_第3页
龙芯详细设计dc32-cache模块接口_第4页
龙芯详细设计dc32-cache模块接口_第5页
已阅读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

提交评论