微处理器访存部件设计与结构功能验证论文_第1页
微处理器访存部件设计与结构功能验证论文_第2页
微处理器访存部件设计与结构功能验证论文_第3页
微处理器访存部件设计与结构功能验证论文_第4页
微处理器访存部件设计与结构功能验证论文_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 . .PAGE53 / NUMPAGES59微处理器访存部件设计与结构功能验证 陈俊莹 西安理工大学分类号 UDC密 级学 号0809090560硕士学位论文微处理器访存部件设计与结构功能验证学 科 名 称:微电子学与固体电子学论文题目:微处理器访存部件设计与结构功能验证 学科名称:微电子学与固体电子学摘 要高性能的微处理器设计是整个信息技术和计算机应用市场竞争的重要焦点和关键容,因此设计高效的微处理器结构具有重大的意义。本文主要研究RSIC处理器的结构设计,它是一个通用64位RISC结构,四发射的超标量和超流水线微处理器,采用乱序执行和先进的Cache设计等技术提高流水线的效率。处理器有三

2、个执行部件和一个访存部件。完全兼容MIPS定、浮点指令集系统。本文主要分为以下几个部分:1)处理器发射模块和访存模块设计 处理器的结构是影响整个处理器的工作效率的关键部分,只有合理的结构才能使处理器的效率达到最高。本文在简述整个RSIC处理器的整体工作原理的基础上详细介绍了发射模块和访存部件的具体设计。2)处理器延迟调试处理器的运算速度是衡量处理器好坏的最重要的标准,而运算速度和处理器的频率息息相关。本文介绍了通用的几种ASIC延迟调试方法,具体介绍了在工作中出现的发射模块延迟的调试过程。3)基于VMM验证方法学的对微处理器的验证本文通过基于system verilog自动对比平台的搭建,基于

3、c语言的对比模型,完成自动对比,加速验证的速度。基于功能覆盖率的通道划分,基于嵌入式汇编的定向测试编写。保证整个微处理器的功能正确性。关键字: 微处理器结构,访存,延迟调试,功能覆盖率验证TITLE: microprocessor memory access component design and structure functional verificationMajor:MicroelectronicsandSolidElectronicsName:junying CHEN Signature:Supervisor:Prof. ningmei YU Signature:AbstractT

4、he high-performance 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 gener

5、al-purpose 64-bit 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

6、 MIPS III fixed, floating-point instruction set system. This article is divided into the following sections.1) Processor architecture memory access andissue moduledesignThe processor architecture is a key part of the impact the work efficiency of the entire processor, the only reasonable structure t

7、o the efficiency 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 p

8、rocessor is good 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 ver

9、ificationIn this 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 preparat

10、ion. Ensure the functional correctness of the entire microprocessor. Key words : Microprocessor architecture, Memory access, Delay debugging ,Functional coverage verification目录 TOC o 1-3 h z u HYPERLINK l _Toc3206534301绪论 PAGEREF _Toc320653430 h 1HYPERLINK l _Toc3206534311.1研究背景与意义 PAGEREF _Toc32065

11、3431 h 1HYPERLINK l _Toc3206534321.2国外研究现状 PAGEREF _Toc320653432 h 1HYPERLINK l _Toc3206534331.3论文的主要容 PAGEREF _Toc320653433 h 2HYPERLINK l _Toc3206534341.4论文结构安排 PAGEREF _Toc320653434 h 3HYPERLINK l _Toc320653435264-bit MIPS架构处理器体系结构 PAGEREF _Toc320653435 h 4HYPERLINK l _Toc3206534362.1 RSIC CPU简介

12、PAGEREF _Toc320653436 h 4HYPERLINK l _Toc3206534372.2MIPS指令集 PAGEREF _Toc320653437 h 4HYPERLINK l _Toc3206534382.3流水线(pipeline)设计思想 PAGEREF _Toc320653438 h 6HYPERLINK l _Toc3206534392.4影响流水线效率的因素 PAGEREF _Toc320653439 h 7HYPERLINK l _Toc3206534402.4.1资源冲突-后继指令等待 PAGEREF _Toc320653440 h 7HYPERLINK l

13、_Toc3206534412.4.2依赖-流水线空泡 PAGEREF _Toc320653441 h 7HYPERLINK l _Toc3206534422.4.3数据冲突-后继指令等待 PAGEREF _Toc320653442 h 7HYPERLINK l _Toc3206534433.基于64-bit MIPS架构处理器模块设计 PAGEREF _Toc320653443 h 8HYPERLINK l _Toc3206534443.1MIPS处理器结构 PAGEREF _Toc320653444 h 8HYPERLINK l _Toc3206534453.2访存部件在处理器中的作用 PA

14、GEREF _Toc320653445 h 9HYPERLINK l _Toc3206534463.3访存部件实现的指令 PAGEREF _Toc320653446 h 10HYPERLINK l _Toc3206534473.4访存部件流水线设计 PAGEREF _Toc320653447 h 11HYPERLINK l _Toc3206534483.4.1Dcache和存的对应关系 PAGEREF _Toc320653448 h 11HYPERLINK l _Toc3206534493.4.2访存部件整体结构流水 PAGEREF _Toc320653449 h 13HYPERLINK l

15、_Toc3206534503.4.3缓存指令队列维护 PAGEREF _Toc320653450 h 15HYPERLINK l _Toc3206534513.4.4 SRAM使用简介 PAGEREF _Toc320653451 h 16HYPERLINK l _Toc3206534523.4.5 dcache存取数据维护 PAGEREF _Toc320653452 h 18HYPERLINK l _Toc3206534533.4.6访存和存交互 PAGEREF _Toc320653453 h 19HYPERLINK l _Toc3206534543.5访存小结 PAGEREF _Toc320

16、653454 h 20HYPERLINK l _Toc3206534553.6.1 IQ(指令队列)维护 PAGEREF _Toc320653455 h 20HYPERLINK l _Toc3206534563.6.2指令发射策略 PAGEREF _Toc320653456 h 22HYPERLINK l _Toc3206534573.6.3数据写回策略 PAGEREF _Toc320653457 h 23HYPERLINK l _Toc3206534583.7发射模块总结 PAGEREF _Toc320653458 h 24HYPERLINK l _Toc3206534594 基于64-bi

17、t MIPS架构处理器整体结构延迟调试 PAGEREF _Toc320653459 h 25HYPERLINK l _Toc3206534604.1dc工具简介 PAGEREF _Toc320653460 h 25HYPERLINK l _Toc3206534614.2处理器延迟关键路径修改 PAGEREF _Toc320653461 h 25HYPERLINK l _Toc3206534624.2.1修改延迟方法介绍 PAGEREF _Toc320653462 h 26HYPERLINK l _Toc3206534634.2.2处理器整体延迟分析 PAGEREF _Toc320653463

18、h 27HYPERLINK l _Toc3206534644.2.3本次处理器设计的延迟调试 PAGEREF _Toc320653464 h 29HYPERLINK l _Toc3206534655基于64-bit MIPS架构处理器整体结构功能覆盖率验证 PAGEREF _Toc320653465 h 31HYPERLINK l _Toc3206534665.1 vmm验证方法学 PAGEREF _Toc320653466 h 31HYPERLINK l _Toc3206534675.2基于systemverilog语言的自动对比平台 PAGEREF _Toc320653467 h 31HY

19、PERLINK l _Toc3206534685.2.1基于C语言的Reference module PAGEREF _Toc320653468 h 31HYPERLINK l _Toc3206534695.2.2微处理器自动对比平台 PAGEREF _Toc320653469 h 32HYPERLINK l _Toc3206534705.3功能覆盖率测试 PAGEREF _Toc320653470 h 34HYPERLINK l _Toc3206534715.3.1功能覆盖率测试点划分 PAGEREF _Toc320653471 h 34HYPERLINK l _Toc3206534725.

20、3.2测试激励编写 PAGEREF _Toc320653472 h 37HYPERLINK l _Toc3206534735.4 RTL级功能验证 PAGEREF _Toc320653473 h 41HYPERLINK l _Toc3206534745.5门级网表仿真 PAGEREF _Toc320653474 h 45HYPERLINK l _Toc3206534756总结与展望 PAGEREF _Toc320653475 h 47HYPERLINK l _Toc320653476致 PAGEREF _Toc320653476 h 48HYPERLINK l _Toc320653477参考文

21、献 PAGEREF _Toc320653477 h 491绪论1.1研究背景与意义人类社会的发展己经进入了数字时代,而数字技术的基础是微电子技术。集成电路是电子信息产业的支柱,对人类社会发展有着重要的意义。作为数字处理核心:微处理器,在当今的人类生产,生活等等各个方面有着不可替代的作用。尤其深刻地影响着武器装备、航空、航天、航海等国防领域。因此,高性能的微处理器的研究有着重大的社会意义1。随着半导体工艺的发展,集成电路工艺已进入深亚微米阶段,特征尺寸已减少到了65nm以下,单芯片上能够集成的晶体管数目不断增长。目前,通用微处理器主要采用深流水、SIMD技术,乱序发射,乱序执行等技术获得高性能2

22、3。采用超标量流水线设计,控制PC的跳转、转移猜测、8取指、8译码、指令相关问题处理、多发射、动态调度、乱序执行、顺序写回等策略,实现了微处理器结构控制的空间并行性和时间并行性,即多条指令在同一时间进行并行运算处理,多级流水线为微处理器高工作频率提供有效保证,以此高效地进行指令取指、指令译码、指令发射、指令执行和指令写回的流水线结构456。RISC(精简指令集计算机),是和CISC(复杂指令集计算机)相对的一种CPU体系结构,它把较长的指令分拆成若干条长度一样的单一指令,可使CPU的工作变得单纯、速度更快,设计和开发也更简单78。RISC是上世纪80年代发展起来的处理器设计新技术,它的出现对整

23、个计算机界产生了深远的影响。RISC体系结构的重要特点就是其便于利用流水线结构技术进行指令操作。高效的流水线还依赖于存访问速度,即缓存技术。MIPS CPU是一种RISC体系结构的CPU,并且MIPS体系结构设计时采用了独立的指令缓存和数据缓存,这样,CPU便可以同时获取指令和读写存变量。将缓存技术和流水线技术结合起来,成为RISC体系结构设计的必然趋势9101112。为了进一步提高流水线的执行效率,本次研究是基于32位MIPS架构多取指、多译码、多发射、多执行、多写回策略的微处理器13。通过流水线可以做到每时钟周期取到8条指令、并行译码8条指令、并行发射8条指令、并行执行8条指令、并行写回8

24、条指令的极限处理情况,大幅度提高了微处理器的控制能力和运算效率1415。1.2国外研究现状国的微处理器设计和生产相对于国外来说比较落后的,在日新月异的技术变革中,微处理器的设计正在飞速的更新。国际上正在研究新的体系结构。在常规系统中,微处理器和存储器用不同的芯片来实现,因为数据传输必须通过芯片I/O引脚而受到PCB板上的铜线的影响,这样就极限制了微处理器和存储器之间的带宽16。PIM(Processor In Memory)技术就是将一个或多个处理器和DRAM集成在同一个芯片上,使在处理器和存储器之间获得极高的带宽,从而有效地降低系统功耗、成本、面积以与存储器延迟,这是一种面向数据密集型应用,

25、可以有效减小存储器和处理器速度差距的新方法。美国加州大学伯克利分校开发的VIRAM芯片就是PIM技术的原型芯片。此芯片包括2个向量处理单元和1个标量处理单元,这些单元都是流水的。VIRAM芯片的重要思想即将向量处理器和DRAM存储器(13M)都做到片上,进而消除片外访存并减少访问次数1718。目前国际上还有一种流处理技术,用于解决处理器与存储器的差距。这种技术一是通过数据在流寄存器文件的缓存来隐藏方寸延迟,允许对DRAM的访问进行再排序,使访问次数最小化;二是采用可缩放分布式本地寄存器文件结构,以较小代价来实现很高的计算率212223。斯坦福大学开发的流处理器Imagine原型芯片,运行多媒体

26、应用时,ALU资源利用率高达84%95%1819。 国超标量处理器设计日益增多,中科院计算所设计的龙芯2号微处理器,兼容MIPS指令集,采用4发射超标量方案,有2个定点部件、2个浮点和1个访存部件。采用0.18um工艺实现,其时钟频率达500MHZ,710级动态流水线设计。分离一级icache,指令32KB+数据32KB,无2级cache2021。目前西北工业大学航空微电子中心在I960微处理器性能模型设计、线程级并行的硬件设计研究、同时多线程结构指令流特性与取指技术研究中,均设计到了超标量超流水微处理器研究22。我国相继出现龙芯、织女星(VEGA)、方舟、THUMP等多个自主开发的微处理器,

27、而且目前已经应用到多个领域。其中龙芯已应用于服务器领域,各个研发单位都在协力研发,大大推动了我国微处理器设计向更高水平稳步发展23。现在通用嵌入式微处理器运算能力虽然很强大,但是在遇见一些运算量大的程序的时候还是不能满足运算需求。针对运算量大的一些专业需求的时候,在微处理器的部件中加入一部分针对某种运算量大的部件,作为专用的某种微处理器。这样在设计和验证的时候只是设计,验证一部分的部件。而这样的设计在国还没有人提出。为了实现这样的设计拥有自主知识产权的微处理器就十分必要。1.3论文的主要容本文主要研究RSIC处理器的结构设计,它是一个通用64位RISC结构,四发射的超标量和超流水线微处理器,采

28、用乱序执行和先进的Cache设计等技术提高流水线的效率。处理器有三个执行部件和一个访存部件完全兼容MIPS定、浮点指令集系统主要分为以下几个部分1).处理器结构设计 处理器的结构是影响整个处理器的工作效率的关键部分,只有合理的结构才能使处理器的效率达到最高。在有确定的设计之后,整个处理器的结构RTL级代码的才能顺利编写。本文在简述整个RSIC处理器的整体工作原理的基础上详细介绍了发射模块和访存部件的具体设计。2).处理器延迟调试处理器的运算速度是衡量处理器好坏的最重要的标准,而运算速度和处理器的频率息息相关,因此,处理器的延迟调试对处理器的性能有很关键的作用。本文介绍了通用的几种ASIC延迟调

29、试方法,具体介绍了在工作中出现的发射模块延迟的调试过程。3). 基于VMM验证方法学的对微处理器的验证现在随着集成电路设计越来越复杂,微处理器的验证成为整个处理器的开发过程中最重要的过程,往往验证过程占整个开发设计的70%-80%。因此加速验证的过程变得十分必要,而通过不断的测试,修改原处理器设计中不合理的地方。本文通过基于Systemverilog自动对比平台的搭建,基于C语言的对比模型,完成自动对比,加速验证的速度。具体分析了在测试过程中遇见的几个经典的BUG以与修改方法。基于功能覆盖率的通道划分,基于嵌入式汇编的定向测试编写,保证整个微处理器的功能正确性。在完成软件仿真后,把整个处理器下

30、载到FPGA中进行硬件验证和应用程序验证。1.4论文结构安排本章阐述了课题的研究背景与意义,总结了微处理器的发展现状,分析了微处理器结构的作用,在此基础上提出了研究课题,并且给出了本课题的主要研究工作和论文的结构安排。第二章主要介绍MIPS处理器的指令集,以与MIPS处理器的结构流水线相关策略以与性能概括。第三章详细描述微处理器中的访存部件模块设计,包括SRAM的时序要求以与应用,LSQ队列以与访存和存的交互。并且详细描述发射模块的结构体系设计,包括IQ准备和维护、指令发射和数据写回。第四章详细介绍微处理器的延迟调试几种方法,具体介绍了发射模块调延迟的过程。第五章介绍了基于VMM验证方法学的对

31、微处理器的验证,搭建基于systemverilog语言的验证自动对比平台的搭建,对微处理器的c语言建模,快速的定位BUG位置,对功能覆盖率通道的划分,最后通过编写嵌入式汇编的定向测试激励达到功能覆盖率100%的设计目标。264-bit MIPS架构处理器体系结构微处理器分为RSIC(精简指令集处理器)和CSIC(复杂指令级处理器)。两种类型的处理器有着各自不同的优缺点。本论文采用的是MIPS架构的RSIC处理器23。2.1 RSIC CPU简介IBM研究中心的John Cocke提出RSIC(精简指令集计算机)概念。相对于复杂指令集来说精简的指令集指令数少24。RSIC指令集包含了简单基本的指

32、令集,通过这些指令,就可以组成复杂的指令。相比于CSIC(ComplexInstruction Set Computing)微处理器来说RSIC微处理器有以下优点25:1).RSIC微处理器对结构的依赖不大,设计简单,结构简单,验证相对来说不复杂25。 2).RSIC指令集指令数不多,软件开发相对简单25。 3).RSIC编译器编译所使用的指令少,因此高级语言能更加有效的编写25。RISC微处理器不仅精简了指令系统,采用超标量和超流水线结构;它们的指令数目只有几十条,却大大增强了并行处理能力。RSIC处理器性能特点如下: 一:由于指令集简化后,减少了指令的数量,也就是说减少了硬件的消耗; 二:

33、采用大量的寄存器,不需要通过频繁的和存和cache交互,提高了处理速度; 三:取数存数与取指令分开执行,使处理器可以完成更多的操作。2.2MIPS指令集MIPS指令编码格式统一,都是32位单字对齐。不同种类的指令格式有所不同按照类型分为三种:I类型(立即数型)、J类型(跳转类型)和R类型(寄存器型)。其指令格式入图2.1所示。图2.1A是立即数型,0-15位是立即数。rs是原操作数寄存器。rt是目的寄存器。Opcode表示这条指令执行的是什么样的操作。图2.1B是跳转类型0-25位表示的是跳转地址。图2.1C寄存器型,通过funct位和opcode位表明执行的操作是什么样的操作。如果是两操作数

34、指令,则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, ldc1, sdc1执行从存中取数,或把数据存入存中的操作。实现定点计算指令add, sub, mult, and, or, sll, srl, slt, ad

35、d.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、tltiu、tltu、tne、tnei。执行系统操作的指令没实现表 2.1 MIPS指令集的种类Tab 2.1 MIPS instruction type2.3流水线(p

36、ipeline)设计思想对通用设计来讲,pipeline是提高系统工作频率的常见方法。它适合于大量数据处理的场合。指令流水线技术是多条指令重叠执行的一个处理器实现技术,流水线的基本结构是将适当划分的N个操作步骤串联起来,最大特点是数据流在各个步骤的处理从时间上看是连续的。它实际是将大量的数据处理分成几个阶段。每个阶段都利用上一个阶段产生的中间结果,直到得到最终结果。这样,从一个数据输入到结果输出需要多个时钟周期,但仅从输出结果来看,每个时钟周期均可以得到一个结果。pipeline所付出的代价就是增加了输入到输出的时钟数目。 图2.2 流水线原理示意图Fig 2.2 pipeline eleme

37、nts如图2.2所示步骤1是第一级流水线依次类推。当a1的数据进入步骤一流水线时后面的流水线因为没有进入数据,可以看做没有工作。当下个时钟周期b1数据进入流水线后a1的数据经过步骤1处理进入到步骤2,在这一个时钟周期时,同时进行的是b1在步骤1运算,a1在步骤2运算依次类推。最后整个流水级都处于工作状态。以每个时钟周期3.3ns为例,可以看出采用流水线时a1的数据经过4个流水级13.2ns运算出有效数据,而后面每3.3ns运算出一个有效数据。而不采用流水级的设计只能每13.2ns出一个数据。因此采用流水级的设计大大增加了微处理器设计大大增加了微处理器的运算效率。2.4影响流水线效率的因素 在多

38、级流水阶段中,若某级流水处理的时间比其它流水阶段处理时间长的话,那其它流水阶段处理的速度也会受很大影响。因此,在流水线里,应该尽量保证每个阶段所占用时间大致一样。这就要求在电路设计中,寻求逻辑复杂性与处理速度之间的平衡,显得尤为重要。在IC设计初期,系统级划分时,就应合理分配电路到不同阶段以使流水线保持均衡。下面对微处理器中影响流水线效率的因素进行分析。2.4.1资源冲突-后继指令等待当处理器中多个指令同时使用同一个资源时,这样后条指令的执行就必须等前条指令执行完毕后,方可进行。这种因素在流水线中是不不可避免的,虽然编译器在对指令进行编译时,会采取相应算法来尽量减少此类冲突,但实际在CPU上跑

39、一段应用程序时,这种资源冲突的情况是普遍存在的。因此在微处理器设计中,处理资源冲突的电路策略在前端设计中肯定得预先考虑。2.4.2依赖-流水线空泡在流水线中有的时候中间流水级会产生无效的数据这种情况称为流水线的空泡。产生空泡的原因有很多,比如在微处理器中发射模块中前面的指令发射到了fu0里面,而后面的指令因为资源相关,在下一个时钟周期发射模块没有继续发射指令,这个是后fu0的第一级流水线就产生了一个空泡。这个空泡是因第一个数据已经进入第二级流水线了,而第一级流水线没有进入新的数据,因此产生的这个空泡是可以被后面的数据给挤掉。这里用valid来表示流水级的数据是否有效,当valid为0时表示所对

40、应的这级流水是空的,可以被挤掉,当valid为1是表示对应的流水线是有效数据,执行完后需要写回,不能被挤掉。2.4.3数据冲突-后继指令等待数据冲突就是当后条指令的源操作数要用到前条指令的目的操作数时,后条指令就不能发射出去,由于后条指令的该源操作数要用到更新之后的数据,因此必须等待前条指令将结果放到结果总线上时,后条指令才可进行发射。此因素在流水线里,也是对流水线效率有所影响的。编译器对指令编译时,算法会确保减少数据相关的发生。3.基于64-bit MIPS架构处理器模块设计处理器的结构是影响整个处理器的工作效率的关键部分,只有合理的结构才能使处理器的效率达到最高。因此微处理器的结构是否合理

41、是整个微处理器设计中最关键的部分。作者在整个设计中负责微处理器的访存部件的所有设计,和部分发射模块设计。3.1MIPS处理器结构本论文中的微处理器流水线采用经典的取址,译码,发射,运算,写回五个部分,.诺曼结构,2KB+4KB一级片高速缓存,4译码,能处理64位数据、四发射、乱序执行(动态调度、顺序发射、静态转移预测)动态流水线结构,定点字长64位,浮点字长64位,PC地址32位。浮点部件采用IEEE 754标准。本文中的微处理器设计如图3.1所示:图 3.1 处理器整体结构框图Fig 3.1 cpu structure1).PC模块是整个流水线的最前端,负责计算和控制下一个时钟周期需要取出的

42、指令,根据PC地址从icache中取出相应的指令,当取出指令后,PC地址相应的加16。或者由跳转类指令给出下一个时钟周期取址所需要的PC地址。2).ICAHCE(指令高速缓存),是在存和CPU之间的速度快存储量小的数据缓存,由SRAM组成,宽度128,深度256,采用两组组相连直接映射。包括指令数据段(每行128bit)和tag段(每行20bit),valid位(1bit)。3).从icache出来的tag位和pc中的tag位(pc地址的高20位)进行对比,当对比命中时说明icache中存的数据是pc地址所对应的数据,把数据送入IR中存储。当对比miss的时候说明icache中没有pc地址对应

43、的数据这个时候通过总线从存中把数据取出来,分别放入icahce和IR中。4).IR存储的是4条32位指令,通过Decoder模块把这些指令译码成119位的机器码,把软件编译出来的指令转换成硬件电路的控制信号包括op,fc,valid,op,src,dest,imm,pc等等。5).译码后的4条指令放入IQ(instruction queue)队列中,该队列能同时容纳16条指令,起到蓄水池的作用。在指令缓存的同时会进行指令的顺序维护,指令队列的头尾维护,指令之间的资源相关判断。把IQ中的前4条指令发往issue模块中。6).发射模块中32个浮点通用寄存器和32个定点寄存器,每个通用寄存器的位数都

44、是64bit,这里判断指令所需要的数据相关如:addiu sp,sp,-24move s8,sp当addiu这条指令没有执行完成,move这条指令肯定是不能发射到运算功能模块中的。并且还要判断各条指令所对应的FU单元中的流水线是否能接受新的指令。只有经过指令所对应的FU单元能接受新指令判断,资源相关判断,数据相关判断后,issue才把正确的数据和正确的指令发往正确的FU单元中。7).执行部件分为4个,分别是分支预测执行部件ALU1,定点运算执行部件ALU2,浮点运算执行部件FALU和访存部件。ALU和FALU部件分别执行定点和浮点的加减乘除等运算。8).访存部件是数据的高速缓存,处理器通过st

45、ore和load指令把数据从存中取出来。访存部件会在下一节中详细叙述。9).执行部件经过运算后把数据放在出口寄存器上,通过WB模块,顺序的把指令运算出来的指令写回到通用寄存器中。3.2访存部件在处理器中的作用微处理器的速度和存速度之间的差距逐渐增大,处理器对存的存储访问成为了系统性能新的瓶颈。使得存储层次对计算机的性能起着至关重要的影响。为了提高微处理器缓存的效率,在绝大多数系统中采用了高速缓冲存储器(Cache)来解决主存与CPU之间的速度不匹配。在存和处理器之间加入速度快但是存储容量相对较小的SRAM,根据存中数据存储的相关性,每次从存中取出所需要的数据,以与存地址相连的数据块。这样处理器

46、的数据和速度快的cache交互频繁,避免了和速度慢的存频繁交互。3.3访存部件实现的指令访存部件作为微处理器中的一个重要的部件,是通过访存类的指令来控制整个访存部件的。本文中涉与到的访存指令如表3.1所示:Laod类指令Load类指令作用STORE类指令STORE类指令作用LB从存中读出8bit数据SB把8bit的数据存入存中LBU从存中读出无符号的8bit数据SD把8bit的无符号数据存入存中LD从存中读出64bit的数据SDC1把64bit的数据存入存中LDC1从存中读出64bit的浮点数据SDL把64bit的浮点数据存入存中LDR从存中读出64bit数据中的低48位SW把32bit的数据

47、存入存中LH从存中读出32bit数据中的低16位SWC1把32bit的浮点数据存入存中LHU从存中读出32bit数据中的低16位,不进行符号位扩展SDR把64bit中的低48位数据存入存中LWR从存中读出32bit中的低16位数据SH把32bit中的低16位数据存入存中LWL从存中读出32bit中的高16位数据SWR把32bit中的低16位数据存入存中LW从存中读出32bit数据SWL把32bit中的高16位数据存入存中LWC1从存中读出32bit的浮点数据LWU从存中读出32bit的数据不进行符号位扩展表3.1 LOAD/STORE类指令Tab 3.1 LOAD/STORE instruct

48、ionLOAD类指令是把数据从存中读入到处理器的通用寄存器中,根据指令不同分别取出16bit,32bit,48bit和64bit。STORE类指令是把数据从处理器的通用寄存器中写回到存中,根据指令不同分别写入16bit,32bit,48bit和64bit。图 3.2 访存类指令格式Fig 3.2 MEM instruction style如图3.2所示是访存类指令的格式,base(基地址2)所对应的寄存器的数据加上offset(偏移量)作为存寻址的地址,rt作为目标寄存器,STORE类指令就是把rt寄存器中的数据写到存中,LOAD类指令把存的数据写入到rt寄存器中。不管是LOAD类指令还是ST

49、ORE类指令都是通过SRAM存取数据的,所以所有的指令都是复用同一套电路。3.4访存部件流水线设计3.4.1Dcache和存的对应关系图3.3存地址划分Fig 3.3 EMS memory address partition 32位的存地址分为tag,index,offset三部分,图3.3所示如Tag20位就是把4G存划分为块, Index8位是把划分出来的每一块分成了256行,offset4位能索引每行128bit中的每BYTE。如图3.4所示存分为若干tag块,每个tag块分为256行,每行128bit。cache分为了256行每行也是128bit。存中的每个tag块的第一行都对应cac

50、he中的第一行,以此类推。这就是组相连映射的方式,本次设计采用的是四组组相连直接映射。有4个256行,每行128bit的cache块,4个块都采用直接映射的方式,4块cache的每一行tag位都是不一样的。图 3.4 cache和存的对应关系Fig 3.4 The mapping to the cacheand the EMS memory本文中的设计采用smic 0.13工艺库的SRAM IP 如图3.5所示每一行包括用SRAM搭建的128bit的数据位,20位的tag位和用reg搭建的1bit valid位。Valid位初始化为0,当需要把数据写入cache的时候同时把tag(存对应地址的

51、高20位)写入存放tag位的SRAM中。写入数据同时把valid位置为1。图3.5dcache行数据Fig 3.5 the struction about dcache3.4.2访存部件整体结构流水访存部件是作为一个FU(function union)模块在处理器中实现的,访存部件的LOAD/STORE指令通过取址,译码,发射后传送到了访存部件中。图3.6是访存部件具体结构框图。图3.6访存部件整体结构框图Fig 3.6 the MEM struction该模块分为四个流水级进行处理,加上对外接口模块,共有5个模块,分别为:Maddr地址加模块 ,LSQ模块,DCache模块,Tagcmp模块

52、,Adapter模块。发射模块发送到访存部件的数据包括:指令的valid,op(标示执行什么样的操作),64位data,32位基地址,32位偏移量,id(标示在整个处理器的指令编号,以便能顺序的写回),dest(LOAD类的指令需要写回到通用寄存器中,dest标示写回到通用寄存器的地址。STORE类指令因为不需要写回到寄存器中所以dest是 0号寄存器)。所有进入访存模块的指令(指令valid为1)通过发射模块传到了Maddr模块后,进行基地址加偏移量的加法操作,然后放入第二级流水线(LSQ)排队等待,LSQ是访存类指令的四项队列。经过地址加处理后的指令依次存入这个四项队列中。指令在这个队列中

53、顺序的对dcache发出请求。通过index索引出4组dcache对应的那一行tag,data,valid,存入寄存器。在下一个时钟周期通过tag模块把4组dcache中存储的tag和地址加后的地址高20位进行对比,如图3.7所示:图3.7 tag对比示意图Fig 3.7 tag compare circuit当tag对比为结果为1(有且只有1组dcache中的tag和指令请求的地址高20位一样)并且指令的valid和数据的valid都为1的时候则为hit,这个时候把hit信号传给LSQ,同时并行的通过op执行STORE/LOAD判断,如果是STORE类得指令就把data通过offset判断分

54、别插入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/STORE QUE

55、UE)是一个指令缓存区,当指令遇见miss的时候会从存中把数据取出来,这个时间相对于处理器的运行速度来说是很慢的。这时把在LSQ中排队的中后面的指令给dcache请求,先行判断。这样可以极大提高访存取数据的时间.如图3.9是LSQ的指令队列示意图:图3.9LSQ队列控制指针Fig3.9 LSQ fifoHead,Tail,Head00分别是LSQ的三个控制指针,都是分别通过两位的寄存器寄存。每个时钟周期判断进入队列的指令的valid,当valid为1时为有效指令在下个时钟周期上升沿的时候打入Tail指针所指向的寄存器中,Tail指针相应的加1。Head指针指向的是第一条等待写回的指令,当WB模

56、块给出能写回的信号后,在下个时钟周期上升沿Head加1。当Head和Tail指向同一个寄存器的时候有两种情况一是队列全空的时候,还有就是队列全满的时候。这个时候判断Head和Tail同时指向的那一行中寄存器中的valid,如果为1则是满,为0则是空,队列为满给发射模块发送信号,发射模块将不会给访存模块发送新的指令,当有指令写回后队列中出现了空间,这个时候LSQ队列才能接受新的指令。本问中的设计采用的是单端口的SRAM因此每次只能有一条指令对dcache进行操作。Head00指向的就是当前发往dcache的指令。当Head00发出一条指令到dcache查找数据后,Head00在下一个时钟上升沿加

57、1。当Head00指向的是STORE类的指令,在指令发送到dcache后Head00不能加一,只能是等待STORE类的指令写回了后Head00加1。3.4.4 SRAM使用简介图3.10 SRAM IP核结构Fig3.10 SRAM IP input/output图3.10是本文中设计采用smic 0.13单端口SRAM IP核,这个SRAM IP核是作为访存部件中的dcache使用。当CEN信号为低是片选有效信号,这个时候片子选通,可以进行读写的操作。WEN是读写信号。当CEN信号为有效的时候WEN高电平是进行读操作,WEN信号为低时进行写操作。A端口是读取地址输入端口,SRAM每次读取一行

58、数据,因此A地址代表索引行地址。D是输入端,在写模式下输入端口的数据会写入SRAM中。Q端口是输出端口。图3.11 SRAM读时序图Fig 3.11 SRAM read cycle如图3.11所示图是SRAM进行读操作时的时序。在时钟上升沿到来时采集CEN和WEN信号,片选信号为低WEN信号为高是读操作,同时采集A端口地址信息,Q端口在2.7ns之后输出A地址行所对应的数据。当CEN信号为高的时候,输出端保持上个采集信号时的输出。图3.12 SRAM写时序图Fig SRAM write cycle如图3.12所示CEN为低,WEN为低是写操作,信号时钟上升沿来后采集信号,把D端口的数据写入SR

59、AM中2.7ns后完成写操作,这个时候输出端口Q输出D端口的数据当CEN信号为高的时候,输出端保持上个采集信号时的输出。图3.13是SRAM存取数据VCS仿真图。可以看出CEN为低就是写数据写的地址是A输入端口01,02写入的是一个fffffffffffff的数据串,当WEN为高是读数据,读的是地址A 01和03的数据可以看出01的数据是fffffffffffff的数据串,而03所对应的数据已经改变成1的数据串。图3.13实际仿真电路图Fig 3.13 emluatorcircuit3.4.5 dcache存取数据维护Dcache每一行对应一个dirty位,4组dcache就有4个256bit

60、的寄存器组存放dirty位。当进行STORE类指令操作后在写入数据的同时对对应行的dirty位置1,表明该行的数据需要写回的存中。本次设计采用的是write back策略:先把store的数据放入dcache中,在合适的时间写入存中。当LSQ中没有指令的时候,通过前导零检测4组dirty数组,并行检测每一组第一个dirty位的行号。优先把第一组dcache的数据写回到存中,其次是第二组,以此类推。访存类指令在Tagcmp模块进行tag位对比,miss的时候,会出现以下几种情况:如果4组dcache的地址对应行数据的valid都为0时,这个时候是miss的情况发生了,从存中把数据提取出来之后,这

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论