1、第三届龙芯杯系统能力大赛北京航空航天大学一队队员:张明远 潘叙辰 林家桢第1页,共13页。CONTENTS目 录整体架构Cache设计系统支持第2页,共13页。整体架构itlbdtlbICacheDCacheNPCIF1IF1IDEXM1M2decoderGPRcmpALUMDUCP0Cache_to_AXIAXI单发七级流水 102条指令四路组相连CacheCache_to_AXI转换器第3页,共13页。Cache设计四路组相连的近似LRU替换算法Way0Way1lrubank1Way0Way1lrubank0lruBank0Bank1LRU状态位结构具体算法命中时:将对应Bank的LRU状
2、态位修改为未命中的Way下标,将总LRU状态位修改为未命中的Bank下标替换时:替换总LRU状态位所指Bank中LRU状态位所指Way对应的缓存行第4页,共13页。Cache设计读写缓冲区vvvvvvvv数据缓冲区字节有效位缓冲区地址缓冲区结构将读写缓冲区纳入Cache命中范围写方向缺失不暂停命中=(读/写地址=缓冲区地址&对应字节有效)写操作缺失时直接将写地址记入缓冲区地址寄存器,将数据写入数据缓冲区,将对应字节有效位置1第5页,共13页。Cache设计两周期Cache第一周期虚地址索引,第二周期实地址匹配使用转发解决读写冲突相邻的两条写指令和读指令,如果操作同一地址会发生冲突,后一条读指令
3、读出的将是旧数据vaddrpaddr12Read/Write第6页,共13页。Cache设计I CacheD CacheCache_to_AXICPUread_instread_datawrite_dataread_inst_uncachedload_inst_cachelineread_data_uncachedload_data_cachelinewrite_data_uncachedstore_data_cachelinereadwrite优先级load_data_cachelineread_data_uncachedload_inst_cachelineread_inst_uncach
4、edstore_data_cachelinewrite_data_uncached第7页,共13页。系统支持 为了支持操作系统Cache指令,branch_like类型指令,Trap类型指令,swl,swr,lwl,lwr,ll,sc 实现102条指令实现20个CP0寄存器实现8项全相连TLB支持tlbwr,tlbwi,tlbr,tlbp指令实现了index,random,wired,entrylo0/1,entryhi,context,count,compare,intctl等寄存器第8页,共13页。运行PMON能完整运行pmon,并通过网口装载linux内核第9页,共13页。谢谢第10页,
5、共13页。附录add,addi,addu,addiu,sub,subu,slt,slti,sltu,sltiu,div,divu,mult,multu,and,andi,lui,nor,or,ori,xor,xori,sllv,sll,srav,sra,srlv,srl,beq,bne,bgez,bgtz,blez,bltz,bgezal,bltzal,j,jal,jr,jalr,mfhi,mflo,mthi,mtlo,break,syscall,lb,lbu,lh,lhu,lw,sb,sh,sw,eret,mfc0,mtc0,tlbp,tlbr,tlbwi,tlbwr,cache,pref,
6、prefx,sync,synci,wait,teq ,teqi,tge,tgei,tgeiu,tgeu,tlt,tlti,tltiu,tltu,tne,tnei,beql,lwl,lwr,swl,swr,movz,movn,clo,clz,bgezall,bgezl,bgtzl,blezl,bltzall,bltzl,bnel,mul,madd,maddu,msub,msubu,ll,sc支持的指令实现的CP0寄存器index,random,entrylo0/1,wired,context,entryhi,intctl,status,cause,epc,badvaddr,count,compare,config,config1,taglo,prid,ebase,hwrena第11页,共13页。瓶颈与遗憾ICachePCGPRcmpdecoder初赛提交版本决赛提交版本NPCitlbICacheNPCGPRcmpdecoder每条跳转指令后都必须插入一个nop,限制了IPCGPR-CMP-NPC-Itlb路径过长,限制了频率第12页,共13页。瓶颈与遗憾Linux进程切换存在问题第13页,共13页。