RISC处理器设计(四)------数据流的设计

数据流是由硬件的数据通路决定的,表示数据随着指令的执行而流动的过程。也就是数据和控制之间的关系。

对于数据而言,包括操作码、操作数、存储器地址和内容、跳转目的地址和内容、寄存器地址和内容。

对于控制而言,包括控制各个部件的控制信号、时序控制信号和中断控制信号。

1.指令在数据通路中的执行

(1)指令装载进指令寄存器IR

指令的地址来自程序计数器PC。在最好情况下,指令来自指令Cache,是由跳转Cache BTC和通用指令Cache MPC共同构成的。

在最坏的情况下,指令来自于外部存储器,即Cache失效,对于给定的地址,Cache中可能包含有效指令(HIT命中),也可能不包含有效指令(MISS不命中)。

在进行Cache访问的同时,PC值也进行准备,包括PC值自动加1,PC值加偏移量,或者装载一个新的跳转地址。

(2)对指令进行译码并准备操作数

对寄存器堆进行寻址,寻址结果送至总线A_BUS和B_BUS,也可能是一个包含在指令中的常数直接送至总线B_BUS。

(3)指令执行

操作数A_BUS和B_BUS送入ALU中进行运算,运算结果送至总线C_BUS。如果需要,标志位被保存到状态寄存器中。

(4)存储器访问

如果需要,计算得出的C_BUS上的结果作为访问存储器的地址,数据从存储器取出后被保存到总线D_BUS上,如果不需要存储器访问,ALU计算的结果只是缓冲到C_BUS总线上。

(5)保存结果

如果需要,运算结果要送入寄存器堆中保存。这个结果可能是数据移动要写入数据寄存器的值,或者缓冲在C_BUS总线上的值。

2.数据通路的流水线

为了有效的平衡数据通路上各个硬件部件的执行,若干条指令可以并行地在硬件上执行。

所以,将整个数据通路嵌入5级流水线之中,这5级分别是取指令级IF、指令译码级ID、执行级EX、访问存储器级MA和回写级WB。

流水线数据通路的划分包括:

(1)IF级包括程序计数器PC、Cache以及存储器的接口DATA和ADDR。

(2)ID级包括寄存器堆REG、指令寄存器IR和保存标志位的处理器状态寄存器。

(3)EX级包括算术逻辑运算单元ALU。

(4)MA级包括缓冲器和连接ALU输出端口到WB级和存储器的接口。

(5)WB级包括缓冲器和连接MA级到寄存器堆的接口。

3.流水线执行方式的特征

流水线的引入表示在多个时钟周期内执行一条指令。

因此在应用软件的执行过程中,不希望存在延迟跳转、延迟装载、延迟软件中断。

ALU造成的存储器访问的延迟,可以通过前推机制予以解决。

延迟跳转含义是跳转程序中的指令(控制转移),只有在紧跟在控制转移指令之后的指令也进入流水线并执行后,才能被装载进处理器执行。

由于控制转移指令的识别只有在ID级才能完成,那么下一个地址上紧跟在控制转移指令之后的指令已经进入IF级。

紧跟在控制转移指令的地址空间称为延迟槽,在延迟槽中的指令称为延迟指令。

延迟指令将同正常指令一样执行,流经整个流水线。

执行延迟指令是为了避免无效指令的装载,而这种装载相当于在流水线中插入了一个空操作步骤。

延迟跳转的优点是提高流水线的吞吐率。

由于程序代码在存储器中可能有不同的保存位置,延迟跳转的有效使用取决于编译器设计的好与坏。

如果编译器不能对跳转指令进行优化可以在延迟槽中插入一条NOP指令。

为了进一步减小开销,条件跳转指令的延迟槽可以取消掉。ANNUL参数使得条件跳转指令在跳转不执行的情况下,自动用NOP指令代替延迟指令的执行。

禁止两条控制转移指令相邻执行,会导致跳转目的地址计算混乱。在这种情况下,会产生处理器中断。

延迟装载是在一条Load指令装载寄存器X之后,不允许紧接着的指令使用寄存器X中的值。

LD/ST指令和其他指令的重叠执行时可以的。

软件中断也具有延迟效应,因为软件中断被视为控制转移指令。

对目的寄存器的操作只有在两个流水线级之后才能生效,因为有EX级和WB级之间的延迟。

后续指令读取这个寄存器中的值会发生数据错误。

为了解决这个问题实现较好的流水线装载,将前推机制应用到执行级的两个操作数总线上。

前推机制需要增加额外的总线来抽取流水线不同级的数据值。

一个数据通路中ALU的B操作数上的前推机制。

当两个前面的指令不对同一个寄存器赋值时,ALU的B操作数通常来自寄存器堆。如果之前的一条指令把该寄存器作为目的寄存器,当前的ALU运算结果保存在C_BUS总线上。

B操作数也可能来自C_BUS总线。B操作数也可能是MA的输出。

多选器MUX选择合适的源操作数据送入ALU的输入寄存器中。

选择操作数的判决信号是通过一个地址比较器,通过对现在源操作数寄存器地址与前两条指令的目的寄存器地址比较得出。

原文地址:https://www.cnblogs.com/1mpanda/p/8365614.html

时间: 2024-11-10 07:37:43

RISC处理器设计(四)------数据流的设计的相关文章

RISC处理器设计(一)------体系结构的选择

RISC处理器指令和变量数目非常少但结构复杂,因此RISC处理器可实现更高的并行性.本文设计的RISC处理机的特点如下: (1)指令简单且数量较少 通过对程序的静态指令进行静态分析,最终只将最常见的指令在RISC处理器中实现,其他指令由编译器综合实现.要实现这一特性以及减少诸如数据相关或程序跳转引起的流水线冲突较少,主要依赖于合适的编译器和特殊硬件来实现.指令集的简单也带来了相对简单的指令传送机制,可以减少对存储器进行指令的读和写操作. (2)格式固定而且指令长度简短 简单指令基本上字长是固定的

RISC处理器设计(二)------指令集的设计

定义指令字长为32位,并把寄存器堆扩展到32个通用32位寄存器.一套包含8个寄存器的寄存器堆,对于一个优化好的进程,足够安排所有的本地变量.采用寄存器窗技术可以提高系统的吞吐率.使CPI<1.一套32位寄存器阵列能够实现4个嵌套深度的进程. 1.指令格式的设计 指令可以分为四大类: 类别 说明 运算类 寄存器数据算术逻辑运算 访存类 主存储器访问(Load/Store) 跳转类 分支跳转(控制转移.条件与非条件) 特殊类 对诸如程序计数器PC等特殊寄存器操作的特殊指令 指令格式可以分为两大类:访

RISC处理器设计(七)------Cache和寄存器堆的选择

1.通用指令Cache MPC 因为访存类指令占据了存储器的接口,阻止了新的指令进入处理器.因此在冯诺依曼体系结构下,单存储器接口会产生冲突问题. 在RIB模式下(精简指令缓冲器),只保存在访存类指令执行时需要从存储器中取出的指令,将其存入Cache中. 通过这种方法,访存类指令执行的开销可以在Cache命中的情况下减少到一个半周期以内. MPC包含16项,每一项包含两个部分.每一个部分中保存一条指令.还有一个TAG区域保留,作为地址和处理器模式的标识位(KERNEL_MODE或USER_MOD

面向对象分析与设计—四色原型模式(彩色建模、领域无关模型)(概念版)

阅读目录: 1.背景介绍 2.问自己,UML对你来说有意义吗?它帮助过你对系统进行分析.建模吗? 3.一直以来其实我们被一个缝隙隔开了,使我们对OOAD遥不可及 4.四色原型模式填补这个历史缝隙,让我们真的看见OOAD的希望 5.在四色原型上运用彩色建模增强视觉冲击力 6.通过四色原型模式建模出领域无关模型 7.结束语:建模时你可以不考虑具体实现,但是建模者要懂技术实现 1.背景介绍 至今我都清楚的记得我第一次被面试官问起什么叫"建模"技术时的情景,那是好几年前的事情了,当时是胸有成竹

WisDom.Net 框架设计(四)

WisDom.Net  ----用户安全 1.用户单机登录 正如其名这里要求其实就是显示用户只能在一台电脑上登录.防止多处登录,这里简单的说一下实现原理,我们在这里使用session +cookie 的方法来实现  如下图所示 (1) 输入用户名密码 (2) 校验用户名密码格式是否正确 (3) 传入用户名密码 (4) 校验用户密码是否正确,返回登录LoginGuid (5) 用户名密码是否正确 (6) 判断用户在session中是否存在,存在即更新用户LoginGuid,不存在则新增,并在coo

GPS部标平台的架构设计(四)-百度地图设计

部标GPS软件平台之百度地图设计 地图是客户端中不可缺少的一个模块,很多人在设计和画图时候,喜欢加上地图引擎这样高大上的字眼,显得自己的平台有内涵,说白了就是用第三方的SDK来开发,早期的GPS监 控软件用的都是mapx.mapxtrem.acrgis之类的,使用的都是本地地图.不仅要购买正版地图,还要购买价格不菲的地图引擎license,服务器版的部署的时候,还要绑定到服务器ID上,现在这种开发方式已被抛弃.现在的百度地图.谷歌地图提供的SDK接口丰富,开发方便,系统稳定,大家都用的很爽. 在

读书笔记 --简约至上—交互式设计四策略

读书笔记 --简约至上-交互式设计四策略 Giles Colborne 著 李松峰 秦绪文 译 人民邮电出版社 书中以一页短文配上一页图片的形式,针对如何将一个技术产品更方便地被用户所接受这个主题,向读者娓娓道来,看着不觉吃力,作者将自身的一些调研经验以及对用户研究进行了精炼的总结,并向读者传递了一些实用性的理念.书中的用户主要指普通的.不懂技术的.直接的使用产品的大众. 书中目录: 第1章 话说简单 第2章 明确认识 第3章 简约四策略 第4章 删除 第5章 组织 第6章 隐藏 第7章 转移

设计四原则之如何设计漂亮的简历

在这个看脸的世界,设计漂亮的简历就是给简历一个好的脸蛋.那么如何设计美观的简历呢?我的答案是 设计四原则  +  LaTeX排版 下面先放出我设计的一份简历模板,然后依次讲解. 如果你的第一印象被上面的简历吸引了(只看外观,内容都是瞎掰的O(∩_∩)O哈哈~),并且有拿起电话播(+86)8888-888-888的冲动,那么,继续往下看吧. 首先,记住设计四原则: 1.  对比(Contrast) 2.  重复(Repetition) 3.  对齐(Alignment) 4.  亲密性(Prixi

游戏UI框架设计(四) : 模态窗体管理

游戏UI框架设计(四) --模态窗体管理 我们在开发UI窗体时,对于"弹出窗体"往往因为需要玩家优先处理弹出小窗体,则要求玩家不能(无法)点击"父窗体",这种窗体就是典型的"模态窗体".在此笔者设计了四种模式类型:完全透明.半透明.低透明度.透明且可以穿透. (透明不能穿透) (半透明不能穿透) (低透明度,不能穿透) 对于"模态窗体"的基本实现原理是: 在弹出窗体的后面增加一层"UI遮罩窗体",当需要弹出