一种带Cache的嵌入式CPU的设计与实现

一种带Cache的嵌入式CPU的设计与实现,第1张

基于FPGA平台实现了嵌入式RISC CPU的设计。根据项目要求,实现指令集为MIPS CPU指令集的一个子集,分析指令处理过程,构建了嵌入式CPU的5级数据通路。分析了流水线产生的相关性问题,采用数据前推技术和软件编译结合的解决方案。给出了控制单元、运算单元、指令Cache的实现与设计。在FPGA平台上实现并验证了CPU的设计。

  随着集成电路设计和工艺技术的发展,嵌入式系统已经在PDA、机顶盒、手机等信息终端中被广泛应用。嵌入式系统具有电路尺寸小、成本低廉、可靠性高、功耗低等优点,是未来集成电路发展的方向。而作为嵌入式系统核心的微处理器,其性能直接影响整个系统的性能。为了提高CPU的效率和指令执行的并行性,现代微处理器广泛采用流水线设计,所以,CPU流水线的设计成为决定其性能的关键。

  MIPS(Microprocessor without Interlocked Pipeline Stages)是一种典型的RISC(Reduced InstrucTION Set Computer)微处理器,在嵌入式系统领域中得到广泛的应用。MIPS32TM指令集开放,指令格式规整,易于流水线设计,大量使用寄存器 *** 作。与CISC(Complex InstrucTIon Set Computer)微处理器相比,RISC具有设计更简单、设计周期更短等优点,并可以应用更多先进的技术,开发更快的下一代处理器。

  1 基于MIPS指令集的CPU流水线结构

  1.1 指令集的选取

  设计实现了指令兼容MIPS系列RISC处理器的指令集。由于MIPS32TM指令集是开放的指令集,指令格式非常简单,按照指令格式可分为寄存器类型(R-type)指令、立即数类型(I-type)指令和跳转类型(J-type)指令。这三类指令均为32 bit,而且指令 *** 作码在固定的位置上。这种特点易于指令代码的拆分,易于流水线CPU的设计。

  指令类型参考MIPS处理器的指令集设计原则。所有指令的运算都在寄存器中进行,当需要与内存交换数据时,通过内存访问指令进行内存和寄存器的数据交换。设计实现程序中经常使用的34条指令,实现指令集按照功能分成5种类型:算术运算类指令、逻辑运算类指令、数据传送指令、条件转移和无条件跳转类指令、特殊指令等。

  1.2 流水线的设计

  在基本的MIPS处理器中有5个流水级,其中各流水级定义与主要功能为:IF为计算下一条指令的地址PC,并从指令存储器读取指令;ID为对指令进行译码,从寄存器堆中取出源 *** 作数;EX为当指令是运算类指令时执行运算,当指令是转移类指令时进行有效地址计算;MEM为从数据存储器读写数据;WB为将数据写回到寄存器堆。按照这一流水线结构,本文设计实现一种较为通用的MIPS CPU,通过VHDL语言实现,各模块之的关系如图1所示。

 一种带Cache的嵌入式CPU的设计与实现,第2张


  2 嵌入式CPU流水线中的相关性

  由于指令以流水线形式并行处理,必产生指令相关性问题,一般存在三种相关:结构相关、数据相关和控制相关,引起流水线竞争。

  结构相关问题是指由于硬件资源不足而导致流水线不畅通,例如只有一个存储器模块时,就不能对存储器同时取指令和数据。数据相关问题是指一条指令的后续指令要使用该条指令的结果。而控制相关问题是指转移指令从取指到转向目标地址要花几个时钟周期,但流水线CPU在每个周期都取指令。

  解决结构相关问题的方法是尽量增加硬件电路资源,本设计采用哈佛架构,使用指令存储器和数据存储器避免结构竞争。对于寄存器组存在的结构竞争,采用由D-FF构建寄存器予以避免,当写入地址和读出地址相同时,直接用写入数据驱动读出总线。数据相关问题可以用数据前推技术得到缓解。数据前推技术对于ALU计算指令非常有效,但对于存储器读数据指令,如果下面的指令想立即使用其结果,则必须暂停流水线一个周期。至于控制相关,可以使用指令重组优化及延迟转移技术等软件编译方法解决。0

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2713654.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-17
下一篇 2022-08-17

发表评论

登录后才能评论

评论列表(0条)

保存