《微处理器访存部件设计及结构功能验证_硕士学位论文.doc》由会员分享,可在线阅读,更多相关《微处理器访存部件设计及结构功能验证_硕士学位论文.doc(59页珍藏版)》请在三一文库上搜索。
1、摘要微处理器访存部件设计及结构功能验证 陈俊莹 西安理工大学分类号 UDC密 级学 号0809090560硕士学位论文微处理器访存部件设计及结构功能验证 学 科 名 称: 微电子学与固体电子学 论文题目:微处理器访存部件设计及结构功能验证 学科名称:微电子学与固体电子学摘 要高性能的微处理器设计是整个信息技术和计算机应用市场竞争的重要焦点和关键内容,因此设计高效的微处理器结构具有重大的意义。本文主要研究RSIC处理器的结构设计,它是一个通用64位RISC结构,四发射的超标量和超流水线微处理器,采用乱序执行和先进的Cache设计等技术提高流水线的效率。处理器有三个执行部件和一个访存部件。完全兼容
2、MIPS定、浮点指令集系统。本文主要分为以下几个部分:1)处理器发射模块和访存模块设计 处理器的结构是影响整个处理器的工作效率的关键部分,只有合理的结构才能使处理器的效率达到最高。本文在简述整个RSIC处理器的整体工作原理的基础上详细介绍了发射模块和访存部件的具体设计。2)处理器延迟调试处理器的运算速度是衡量处理器好坏的最重要的标准,而运算速度和处理器的频率息息相关。本文介绍了通用的几种ASIC延迟调试方法,具体介绍了在工作中出现的发射模块延迟的调试过程。3)基于VMM验证方法学的对微处理器的验证本文通过基于system verilog自动对比平台的搭建,基于c语言的对比模型,完成自动对比,加
3、速验证的速度。基于功能覆盖率的通道划分,基于嵌入式汇编的定向测试编写。保证整个微处理器的功能正确性。关键字: 微处理器结构,访存,延迟调试,功能覆盖率验证TITLE: microprocessor memory access component design and structure functional verificationMajor:MicroelectronicsandSolidElectronicsName:junying CHEN Signature: Supervisor:Prof. ningmei YU Signature: AbstractThe high-perform
4、ance microprocessor design is an important focus and key elements of the entire IT and computer application market competition to design efficient microprocessor architectures is of great significance.This paper mainly studies the structural design of the RSIC processor, it is a general-purpose 64-b
5、it RISC architecture, four launch superscalar and super-pipelined microprocessor。Out of order execution and advanced Cache design technology to improve the efficiency of the pipeline. The processor has three implementation components and a memory component is fully compatible with the MIPS III fixed
6、, floating-point instruction set system. This article is divided into the following sections.1) Processor architecture memory access and issue module designThe processor architecture is a key part of the impact the work efficiency of the entire processor, the only reasonable structure to the efficie
7、ncy of the processor to the highest. RSIC processor briefly works as a whole on the basis of detailed specific design of the issue module and the memory access components.2) The processor delay debuggingThe operation speed of the processor is the most important criteria to measure the processor is g
8、ood or bad, while closely related to the computing speed and processor frequency. This article describes common of several ASIC delay testing method, specific work delayed the commissioning process by the transmitter module.3) Based on the VMM verification methodology microprocessor verificationIn t
9、his paper, Auto Contrast platform based on the systemverilog structures, based on the comparison model of the c language, complete auto contrast, accelerate the validation speed. Division of the channel based on functional coverage, based on the embedded assembler directed test preparation. Ensure t
10、he functional correctness of the entire microprocessor. Key words : Microprocessor architecture, Memory access, Delay debugging ,Functional coverage verificationV目录目录1绪论11.1研究背景及意义11.2国内外研究现状11.3论文的主要内容21.4论文结构安排3264-bit MIPS架构处理器体系结构42.1 RSIC CPU简介42.2MIPS指令集42.3流水线(pipeline)设计思想62.4影响流水线效率的因素72.4.
11、1资源冲突-后继指令等待72.4.2依赖-流水线空泡72.4.3数据冲突-后继指令等待73.基于64-bit MIPS架构处理器模块设计83.1MIPS处理器结构83.2访存部件在处理器中的作用93.3访存部件实现的指令103.4访存部件流水线设计113.4.1Dcache和内存的对应关系113.4.2访存部件整体结构流水133.4.3缓存指令队列维护153.4.4 SRAM使用简介163.4.5 dcache存取数据维护183.4.6访存和内存交互193.5访存小结203.6.1 IQ(指令队列)维护203.6.2指令发射策略223.6.3数据写回策略233.7发射模块总结244 基于64-
12、bit MIPS架构处理器整体结构延迟调试254.1dc工具简介254.2处理器延迟关键路径修改254.2.1修改延迟方法介绍264.2.2处理器整体延迟分析274.2.3本次处理器设计的延迟调试295基于64-bit MIPS架构处理器整体结构功能覆盖率验证315.1 vmm验证方法学315.2基于systemverilog语言的自动对比平台315.2.1基于C语言的Reference module315.2.2微处理器自动对比平台325.3功能覆盖率测试345.3.1功能覆盖率测试点划分345.3.2测试激励编写375.4 RTL级功能验证415.5门级网表仿真456总结与展望47致谢48
13、参考文献49绪论1绪论1.1研究背景及意义人类社会的发展己经进入了数字时代,而数字技术的基础是微电子技术。集成电路是电子信息产业的支柱,对人类社会发展有着重要的意义。作为数字处理核心:微处理器,在当今的人类生产,生活等等各个方面有着不可替代的作用。尤其深刻地影响着武器装备、航空、航天、航海等国防领域。因此,高性能的微处理器的研究有着重大的社会意义【1】。随着半导体工艺的发展,集成电路工艺已进入深亚微米阶段,特征尺寸已减少到了65nm以下,单芯片上能够集成的晶体管数目不断增长。目前,通用微处理器主要采用深流水、SIMD技术,乱序发射,乱序执行等技术获得高性能【2】【3】。采用超标量流水线设计,控
14、制PC的跳转、转移猜测、8取指、8译码、指令相关问题处理、多发射、动态调度、乱序执行、顺序写回等策略,实现了微处理器结构控制的空间并行性和时间并行性,即多条指令在同一时间进行并行运算处理,多级流水线为微处理器高工作频率提供有效保证,以此高效地进行指令取指、指令译码、指令发射、指令执行和指令写回的流水线结构【4】【5】【6】。RISC(精简指令集计算机),是和CISC(复杂指令集计算机)相对的一种CPU体系结构,它把较长的指令分拆成若干条长度相同的单一指令,可使CPU的工作变得单纯、速度更快,设计和开发也更简单【7】【8】。RISC是上世纪80年代发展起来的处理器设计新技术,它的出现对整个计算机
15、界产生了深远的影响。RISC体系结构的重要特点就是其便于利用流水线结构技术进行指令操作。高效的流水线还依赖于内存访问速度,即缓存技术。MIPS CPU是一种RISC体系结构的CPU,并且MIPS体系结构设计时采用了独立的指令缓存和数据缓存,这样,CPU便可以同时获取指令和读写内存变量。将缓存技术和流水线技术结合起来,成为RISC体系结构设计的必然趋势【9】【10】【11】【12】。为了进一步提高流水线的执行效率,本次研究是基于32位MIPS架构多取指、多译码、多发射、多执行、多写回策略的微处理器【13】。通过流水线可以做到每时钟周期取到8条指令、并行译码8条指令、并行发射8条指令、并行执行8条
16、指令、并行写回8条指令的极限处理情况,大幅度提高了微处理器的控制能力和运算效率【14】【15】。1.2国内外研究现状国内的微处理器设计和生产相对于国外来说比较落后的,在日新月异的技术变革中,微处理器的设计正在飞速的更新。国际上正在研究新的体系结构。在常规系统中,微处理器和存储器用不同的芯片来实现,因为数据传输必须通过芯片I/O引脚而受到PCB板上的铜线的影响,这样就极大地限制了微处理器和存储器之间的带宽【16】。PIM(Processor In Memory)技术就是将一个或多个处理器和DRAM集成在同一个芯片上,使在处理器和存储器之间获得极高的带宽,从而有效地降低系统功耗、成本、面积以及存储
17、器延迟,这是一种面向数据密集型应用,可以有效减小存储器和处理器速度差距的新方法。美国加州大学伯克利分校开发的VIRAM芯片就是PIM技术的原型芯片。此芯片包括2个向量处理单元和1个标量处理单元,这些单元都是流水的。VIRAM芯片的重要思想即将向量处理器和DRAM存储器(13M)都做到片上,进而消除片外访存并减少访问次数【17】【18】。目前国际上还有一种流处理技术,用于解决处理器与存储器的差距。这种技术一是通过数据在流寄存器文件的缓存来隐藏方寸延迟,允许对DRAM的访问进行再排序,使访问次数最小化;二是采用可缩放分布式本地寄存器文件结构,以较小代价来实现很高的计算率【21】【22】【23】。斯
18、坦福大学开发的流处理器Imagine原型芯片,运行多媒体应用时,ALU资源利用率高达84%95%【18】【19】。 国内超标量处理器设计日益增多,中科院计算所设计的龙芯2号微处理器,兼容MIPS指令集,采用4发射超标量方案,有2个定点部件、2个浮点和1个访存部件。采用0.18um工艺实现,其时钟频率达500MHZ,710级动态流水线设计。分离一级icache,指令32KB+数据32KB,无2级cache【20】【21】。目前西北工业大学航空微电子中心在I960微处理器性能模型设计、线程级并行的硬件设计研究、同时多线程结构指令流特性及取指技术研究中,均设计到了超标量超流水微处理器研究【22】。我
19、国相继出现龙芯、织女星(VEGA)、方舟、THUMP等多个自主开发的微处理器,而且目前已经应用到多个领域。其中龙芯已应用于服务器领域,各个研发单位都在协力研发,大大推动了我国微处理器设计向更高水平稳步发展【23】。现在通用嵌入式微处理器运算能力虽然很强大,但是在遇见一些运算量大的程序的时候还是不能满足运算需求。针对运算量大的一些专业需求的时候,在微处理器的部件中加入一部分针对某种运算量大的部件,作为专用的某种微处理器。这样在设计和验证的时候只是设计,验证一部分的部件。而这样的设计在国内还没有人提出。为了实现这样的设计拥有自主知识产权的微处理器就十分必要。1.3论文的主要内容本文主要研究RSIC
20、处理器的结构设计,它是一个通用64位RISC结构,四发射的超标量和超流水线微处理器,采用乱序执行和先进的Cache设计等技术提高流水线的效率。处理器有三个执行部件和一个访存部件完全兼容MIPS定、浮点指令集系统主要分为以下几个部分1).处理器结构设计 处理器的结构是影响整个处理器的工作效率的关键部分,只有合理的结构才能使处理器的效率达到最高。在有确定的设计之后,整个处理器的结构RTL级代码的才能顺利编写。本文在简述整个RSIC处理器的整体工作原理的基础上详细介绍了发射模块和访存部件的具体设计。2).处理器延迟调试处理器的运算速度是衡量处理器好坏的最重要的标准,而运算速度和处理器的频率息息相关,
21、因此,处理器的延迟调试对处理器的性能有很关键的作用。本文介绍了通用的几种ASIC延迟调试方法,具体介绍了在工作中出现的发射模块延迟的调试过程。3). 基于VMM验证方法学的对微处理器的验证现在随着集成电路设计越来越复杂,微处理器的验证成为整个处理器的开发过程中最重要的过程,往往验证过程占整个开发设计的70%-80%。因此加速验证的过程变得十分必要,而通过不断的测试,修改原处理器设计中不合理的地方。本文通过基于Systemverilog自动对比平台的搭建,基于C语言的对比模型,完成自动对比,加速验证的速度。具体分析了在测试过程中遇见的几个经典的BUG以及修改方法。基于功能覆盖率的通道划分,基于嵌
22、入式汇编的定向测试编写,保证整个微处理器的功能正确性。在完成软件仿真后,把整个处理器下载到FPGA中进行硬件验证和应用程序验证。1.4论文结构安排 本章阐述了课题的研究背景与意义,总结了微处理器的发展现状,分析了微处理器结构的作用,在此基础上提出了研究课题,并且给出了本课题的主要研究工作和论文的结构安排。第二章主要介绍MIPS处理器的指令集,以及MIPS处理器的结构流水线相关策略以及性能概括。第三章详细描述微处理器中的访存部件模块设计,包括SRAM的时序要求以及应用,LSQ队列以及访存和内存的交互。并且详细描述发射模块的结构体系设计,包括IQ准备和维护、指令发射和数据写回。第四章详细介绍微处理
23、器的延迟调试几种方法,具体介绍了发射模块调延迟的过程。第五章介绍了基于VMM验证方法学的对微处理器的验证,搭建基于systemverilog语言的验证自动对比平台的搭建,对微处理器的c语言建模,快速的定位BUG位置,对功能覆盖率通道的划分,最后通过编写嵌入式汇编的定向测试激励达到功能覆盖率100%的设计目标。764-bit MIPS架构处理器体系结构264-bit MIPS架构处理器体系结构微处理器分为RSIC(精简指令集处理器)和CSIC(复杂指令级处理器)。两种类型的处理器有着各自不同的优缺点。本论文采用的是MIPS架构的RSIC处理器【23】。2.1 RSIC CPU简介IBM研究中心的
24、John Cocke提出RSIC(精简指令集计算机)概念。相对于复杂指令集来说精简的指令集指令数少【24】。RSIC指令集包含了简单基本的指令集,通过这些指令,就可以组成复杂的指令。相比于CSIC(Complex Instruction Set Computing)微处理器来说RSIC微处理器有以下优点【25】:1).RSIC微处理器对结构的依赖不大,设计简单,结构简单,验证相对来说不复杂【25】。 2).RSIC指令集指令数不多,软件开发相对简单【25】。 3).RSIC编译器编译所使用的指令少,因此高级语言能更加有效的编写【25】。RISC微处理器不仅精简了指令系统,采用超标量和超流水线结
25、构;它们的指令数目只有几十条,却大大增强了并行处理能力。RSIC处理器性能特点如下: 一:由于指令集简化后,减少了指令的数量,也就是说减少了硬件的消耗; 二:采用大量的寄存器,不需要通过频繁的和内存和cache交互,提高了处理速度; 三:取数存数与取指令分开执行,使处理器可以完成更多的操作。2.2MIPS指令集MIPS指令编码格式统一,都是32位单字对齐。不同种类的指令格式有所不同按照类型分为三种:I类型(立即数型)、J类型(跳转类型)和R类型(寄存器型)。其指令格式入图2.1所示。图2.1A是立即数型,0-15位是立即数。rs是原操作数寄存器。rt是目的寄存器。Opcode表示这条指令执行的
26、是什么样的操作。图2.1B是跳转类型0-25位表示的是跳转地址。图2.1C寄存器型,通过funct位和opcode位表明执行的操作是什么样的操作。如果是两操作数指令,则sa没用,rd是目标寄存器,rt,rs是原操作数寄存器。如果是三操作数指令,则rd,rt,rs是原操作数寄存器,sa是目的寄存器。 图 2.1 MIPS指令集3种指令类型Fig 2.1 MIPS instruction structureMIPS的指令种类有分为7种如表2.1所示:MIPS指令种类MIPS指令(部分)指令的意义实现与否访存类指令lb, sb, lh, sh, lw, sw, ld, sd, lwc1, swc1,
27、 ldc1, sdc1执行从内存中取数,或把数据存入内存中的操作。实现定点计算指令add, sub, mult, and, or, sll, srl, slt, add.s, add.d .执行定点加减乘除移位前导等运算操作实现浮点运算指令cvt,movf,mul,div,madd,sub.执行IEEE754标准的加减乘除浮点运算操作实现跳转分支指令j, jr, jal, beq, bne .执行跳转操作实现协处理器指令bc1f、bc1f1、bc1t、bc1t1执行协处理器CP0,CP1指令操作没实现断点及陷阱指令teq、teqi、tge、tgei、tgeiu、tgeu、tlt、tlti、tl
28、tiu、tltu、tne、tnei。执行系统操作的指令没实现表 2.1 MIPS指令集的种类Tab 2.1 MIPS instruction type2.3流水线(pipeline)设计思想 对通用设计来讲,pipeline是提高系统工作频率的常见方法。它适合于大量数据处理的场合。指令流水线技术是多条指令重叠执行的一个处理器实现技术,流水线的基本结构是将适当划分的N个操作步骤串联起来,最大特点是数据流在各个步骤的处理从时间上看是连续的。它实际是将大量的数据处理分成几个阶段。每个阶段都利用上一个阶段产生的中间结果,直到得到最终结果。这样,从一个数据输入到结果输出需要多个时钟周期,但仅从输出结果来
29、看,每个时钟周期均可以得到一个结果。pipeline所付出的代价就是增加了输入到输出的时钟数目。 图2.2 流水线原理示意图Fig 2.2 pipeline elements如图2.2所示步骤1是第一级流水线依次类推。当a1的数据进入步骤一流水线时后面的流水线因为没有进入数据,可以看做没有工作。当下个时钟周期b1数据进入流水线后a1的数据经过步骤1处理进入到步骤2,在这一个时钟周期时,同时进行的是b1在步骤1运算,a1在步骤2运算依次类推。最后整个流水级都处于工作状态。以每个时钟周期3.3ns为例,可以看出采用流水线时a1的数据经过4个流水级13.2ns运算出有效数据,而后面每3.3ns运算出
30、一个有效数据。而不采用流水级的设计只能每13.2ns出一个数据。因此采用流水级的设计大大增加了微处理器设计大大增加了微处理器的运算效率。2.4影响流水线效率的因素 在多级流水阶段中,若某级流水处理的时间比其它流水阶段处理时间长的话,那其它流水阶段处理的速度也会受很大影响。因此,在流水线里,应该尽量保证每个阶段所占用时间大致相同。这就要求在电路设计中,寻求逻辑复杂性与处理速度之间的平衡,显得尤为重要。在IC设计初期,系统级划分时,就应合理分配电路到不同阶段以使流水线保持均衡。下面对微处理器中影响流水线效率的因素进行分析。2.4.1资源冲突-后继指令等待当处理器中多个指令同时使用同一个资源时,这样
31、后条指令的执行就必须等前条指令执行完毕后,方可进行。这种因素在流水线中是不不可避免的,虽然编译器在对指令进行编译时,会采取相应算法来尽量减少此类冲突,但实际在CPU上跑一段应用程序时,这种资源冲突的情况是普遍存在的。因此在微处理器设计中,处理资源冲突的电路策略在前端设计中肯定得预先考虑。2.4.2依赖-流水线空泡在流水线中有的时候中间流水级会产生无效的数据这种情况称为流水线的空泡。产生空泡的原因有很多,比如在微处理器中发射模块中前面的指令发射到了fu0里面,而后面的指令因为资源相关,在下一个时钟周期发射模块没有继续发射指令,这个是后fu0的第一级流水线就产生了一个空泡。这个空泡是因第一个数据已
32、经进入第二级流水线了,而第一级流水线没有进入新的数据,因此产生的这个空泡是可以被后面的数据给挤掉。这里用valid来表示流水级的数据是否有效,当valid为0时表示所对应的这级流水是空的,可以被挤掉,当valid为1是表示对应的流水线是有效数据,执行完后需要写回,不能被挤掉。2.4.3数据冲突-后继指令等待数据冲突就是当后条指令的源操作数要用到前条指令的目的操作数时,后条指令就不能发射出去,由于后条指令的该源操作数要用到更新之后的数据,因此必须等待前条指令将结果放到结果总线上时,后条指令才可进行发射。此因素在流水线里,也是对流水线效率有所影响的。编译器对指令编译时,算法会确保减少数据相关的发生
33、。基于64-bit 基于MIPS架构处理器模块设计3.基于64-bit MIPS架构处理器模块设计处理器的结构是影响整个处理器的工作效率的关键部分,只有合理的结构才能使处理器的效率达到最高。因此微处理器的结构是否合理是整个微处理器设计中最关键的部分。作者在整个设计中负责微处理器的访存部件的所有设计,和部分发射模块设计。3.1MIPS处理器结构 本论文中的微处理器流水线采用经典的取址,译码,发射,运算,写回五个部分,冯.诺曼结构,2KB+4KB一级片内高速缓存,4译码,能处理64位数据、四发射、乱序执行(动态调度、顺序发射、静态转移预测)动态流水线结构,定点字长64位,浮点字长64位,PC地址3
34、2位。浮点部件采用IEEE 754标准。本文中的微处理器设计如图3.1所示:图 3.1 处理器整体结构框图Fig 3.1 cpu structure 1).PC模块是整个流水线的最前端,负责计算和控制下一个时钟周期需要取出的指令,根据PC地址从icache中取出相应的指令,当取出指令后,PC地址相应的加16。或者由跳转类指令给出下一个时钟周期取址所需要的PC地址。2).ICAHCE(指令高速缓存),是在内存和CPU之间的速度快存储量小的数据缓存,由SRAM组成,宽度128,深度256,采用两组组相连直接映射。包括指令数据段(每行128bit)和tag段(每行20bit),valid位(1bit
35、)。3).从icache出来的tag位和pc中的tag位(pc地址的高20位)进行对比,当对比命中时说明icache中存的数据是pc地址所对应的数据,把数据送入IR中存储。当对比miss的时候说明icache中没有pc地址对应的数据这个时候通过总线从内存中把数据取出来,分别放入icahce和IR中。4).IR存储的是4条32位指令,通过Decoder模块把这些指令译码成119位的机器码,把软件编译出来的指令转换成硬件电路的控制信号包括op,fc,valid,op,src,dest,imm,pc等等。5).译码后的4条指令放入IQ(instruction queue)队列中,该队列能同时容纳16
36、条指令,起到蓄水池的作用。在指令缓存的同时会进行指令的顺序维护,指令队列的头尾维护,指令之间的资源相关判断。把IQ中的前4条指令发往issue模块中。6).发射模块中32个浮点通用寄存器和32个定点寄存器,每个通用寄存器的位数都是64bit,这里判断指令所需要的数据相关如:addiu sp,sp,-24 move s8,sp当addiu这条指令没有执行完成,move这条指令肯定是不能发射到运算功能模块中的。并且还要判断各条指令所对应的FU单元中的流水线是否能接受新的指令。只有经过指令所对应的FU单元能接受新指令判断,资源相关判断,数据相关判断后,issue才把正确的数据和正确的指令发往正确的F
37、U单元中。7).执行部件分为4个,分别是分支预测执行部件ALU1,定点运算执行部件ALU2,浮点运算执行部件FALU和访存部件。ALU和FALU部件分别执行定点和浮点的加减乘除等运算。8).访存部件是数据的高速缓存,处理器通过store和load指令把数据从内存中取出来。访存部件会在下一节中详细叙述。9).执行部件经过运算后把数据放在出口寄存器上,通过WB模块,顺序的把指令运算出来的指令写回到通用寄存器中。3.2访存部件在处理器中的作用微处理器的速度和内存速度之间的差距逐渐增大,处理器对内存的存储访问成为了系统性能新的瓶颈。使得存储层次对计算机的性能起着至关重要的影响。为了提高微处理器缓存的效
38、率,在绝大多数系统中采用了高速缓冲存储器(Cache)来解决主存与CPU之间的速度不匹配。在内存和处理器之间加入速度快但是存储容量相对较小的SRAM,根据内存中数据存储的相关性,每次从内存中取出所需要的数据,以及内存地址相连的数据块。这样处理器的数据和速度快的cache交互频繁,避免了和速度慢的内存频繁交互。3.3访存部件实现的指令访存部件作为微处理器中的一个重要的部件,是通过访存类的指令来控制整个访存部件的。本文中涉及到的访存指令如表3.1所示:Laod类指令Load类指令作用STORE类指令STORE类指令作用LB从内存中读出8bit数据SB把8bit的数据存入内存中LBU从内存中读出无符
39、号的8bit数据SD把8bit的无符号数据存入内存中LD从内存中读出64bit的数据SDC1把64bit的数据存入内存中LDC1从内存中读出64bit的浮点数据SDL把64bit的浮点数据存入内存中LDR从内存中读出64bit数据中的低48位SW把32bit的数据存入内存中LH从内存中读出32bit数据中的低16位SWC1把32bit的浮点数据存入内存中LHU从内存中读出32bit数据中的低16位,不进行符号位扩展SDR把64bit中的低48位数据存入内存中LWR从内存中读出32bit中的低16位数据SH把32bit中的低16位数据存入内存中LWL从内存中读出32bit中的高16位数据SWR把
40、32bit中的低16位数据存入内存中LW从内存中读出32bit数据SWL把32bit中的高16位数据存入内存中LWC1从内存中读出32bit的浮点数据LWU从内存中读出32bit的数据不进行符号位扩展表3.1 LOAD/STORE类指令Tab 3.1 LOAD/STORE instructionLOAD类指令是把数据从内存中读入到处理器的通用寄存器中,根据指令不同分别取出16bit,32bit,48bit和64bit。STORE类指令是把数据从处理器的通用寄存器中写回到内存中,根据指令不同分别写入16bit,32bit,48bit和64bit。图 3.2 访存类指令格式Fig 3.2 MEM
41、instruction style如图3.2所示是访存类指令的格式,base(基地址2)所对应的寄存器的数据加上offset(偏移量)作为内存寻址的地址,rt作为目标寄存器,STORE类指令就是把rt寄存器中的数据写到内存中,LOAD类指令把内存的数据写入到rt寄存器中。不管是LOAD类指令还是STORE类指令都是通过SRAM存取数据的,所以所有的指令都是复用同一套电路。3.4访存部件流水线设计3.4.1Dcache和内存的对应关系图3.3内存地址划分Fig 3.3 EMS memory address partition 32位的内存地址分为tag,index,offset三部分,图3.3所
42、示如Tag20位就是把4G内存划分为块, Index8位是把划分出来的每一块分成了256行,offset4位能索引每行128bit中的每BYTE。如图3.4所示内存分为若干tag块,每个tag块分为256行,每行128bit。cache分为了256行每行也是128bit。内存中的每个tag块的第一行都对应cache中的第一行,以此类推。这就是组相连映射的方式,本次设计采用的是四组组相连直接映射。有4个256行,每行128bit的cache块,4个块都采用直接映射的方式,4块cache的每一行tag位都是不相同的。图 3.4 cache和内存的对应关系Fig 3.4 The mapping to
43、 the cacheand the EMS memory本文中的设计采用smic 0.13工艺库的SRAM IP 如图3.5所示每一行包括用SRAM搭建的128bit的数据位,20位的tag位和用reg搭建的1bit valid位。Valid位初始化为0,当需要把数据写入cache的时候同时把tag(内存对应地址的高20位)写入存放tag位的SRAM中。写入数据同时把valid位置为1。图3.5dcache行数据Fig 3.5 the struction about dcache3.4.2访存部件整体结构流水访存部件是作为一个FU(function union)模块在处理器中实现的,访存部件的
44、LOAD/STORE指令通过取址,译码,发射后传送到了访存部件中。图3.6是访存部件具体结构框图。图3.6访存部件整体结构框图Fig 3.6 the MEM struction该模块分为四个流水级进行处理,加上对外接口模块,共有5个模块,分别为:Maddr地址加模块 ,LSQ模块,DCache模块,Tagcmp模块,Adapter模块。发射模块发送到访存部件的数据包括:指令的valid,op(标示执行什么样的操作),64位data,32位基地址,32位偏移量,id(标示在整个处理器的指令编号,以便能顺序的写回),dest(LOAD类的指令需要写回到通用寄存器中,dest标示写回到通用寄存器的地
45、址。STORE类指令因为不需要写回到寄存器中所以dest是 0号寄存器)。所有进入访存模块的指令(指令valid为1)通过发射模块传到了Maddr模块后,进行基地址加偏移量的加法操作,然后放入第二级流水线(LSQ)排队等待,LSQ是访存类指令的四项队列。经过地址加处理后的指令依次存入这个四项队列中。指令在这个队列中顺序的对dcache发出请求。通过index索引出4组dcache对应的那一行tag,data,valid,存入寄存器。在下一个时钟周期通过tag模块把4组dcache中存储的tag和地址加后的地址高20位进行对比,如图3.7所示:图3.7 tag对比示意图Fig 3.7 tag c
46、ompare circuit当tag对比为结果为1(有且只有1组dcache中的tag和指令请求的地址高20位相同)并且指令的valid和数据的valid都为1的时候则为hit,这个时候把hit信号传给LSQ,同时并行的通过op执行STORE/LOAD判断,如果是STORE类得指令就把data通过offset判断分别插入4组dcache的数据块中,如果是LOAD类指令则通过offset把需要的数据分别读出来。最后如果hit把4组已经准备好的数据选出正确的一组,等待WB模块发出能写回的信号LOAD类指令把数据写回通用寄存器中,STORE类的指令把128bit的数据和tag写入相应的dcache行中。如果miss则给adapter模块请求,通过adapter模块和内存交互,内存取出数据后放入adapter中,等待WB模块发出写回信号后分LOAD和STORE进行相应的操作。如图3.8所示:图3.8 tag对比示意图Fig 3.8 tag compare3.4.3缓存指令队列维护LSQ(LOAD/S