首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
假定采用“取指、译码取数、执行、访存、写回”这种五段流水线
[单选题]
下面是一段伪指令序列:
ADD R1 , R0, #20
LD R2 , 12 (R3)
ADD R4, R1, R 2
以上指令序列中,第1条和第2条指令分别与第3条指令发生数据相关。假定采用“取指、译码/取数、执行、
访存、写回”这种五段流水线方式,那么不采用“定向技术”时需要在第三条指令前加入( )条nop指令才
能使这段程序不发生数据冒险。
1
2
3
4
查看答案及解析
添加笔记
求解答(12)
邀请回答
收藏(32)
分享
纠错
3个回答
添加回答
0
PandKnight
对于经典五段流水线的数据相关问题,一般需要考察前后指令之间是否有寄存器写后读(顺序执行下,不会发生写后写或读后写的相关冲突,在乱序执行下才有可能发生)的问题。
关于数据相关的流水线问题,具体延迟几个周期与下列两个因素相关:
1. 是否能在同一周期内完成寄存器的读和写
2. 是否采用“转发/定向”(forward)技术
具体的讨论如下:
如果两者都为否定,那么应当至少延迟3个时钟周期。(下一条指令必须等到上一条指令完成写回后所需操作数才准备就绪)
如果能够在同一周期内完成寄存器的读和写,则上一条指令的“WB”段(写回)与下一条数据相关指令的“ID”(取操作数)可以安排在同一周期,此时至少延迟2个时钟周期。
如果更进一步,采用了“转发技术”,那么需要根据上一条指令的类型来进行区分:
若上一条指令为算术逻辑运算类指令,例如sub、add等等,结果操作数能够在“EX段获得的话,那么上一条指令在“EX”段(运算)运算的结果,可以直接转发到本条指令运算时的一端,从而时钟周期延迟为0。
若上一条指令为取数指令(ld),结果操作数必须等到访存阶段结束才能获得,那么至少需要延迟1个时钟周期。
一般情况下,我们默认能在同一周期内完成寄存器的读和写,是否支持“转发”技术题目一般也会给出,在本题中,是“能在同一周期内完成寄存器读写”和“不采用定向技术”的情况,很容易看到,指令三的源操作数是指令一、二的结果操作数,根据上述讨论应当停顿2个时钟周期。
发表于 2022-10-04 17:09:43
回复(0)
0
伟崽123
取址,译码,这两个可以先做起来
发表于 2019-12-01 19:06:50
回复(0)
0
噫~
应该是指令1和2都和第3条指令发生数据相关,所以两条后面都需要一条空指令作缓冲。
发表于 2019-07-12 07:40:20
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
编译和体系结构
上传者:
呼呼L
难度:
3条回答
32收藏
4674浏览
热门推荐
相关试题
以下指令集架构属于复杂指令集架构的是?
阿里巴巴
编译和体系结构
评论
(15)
来自
阿里巴巴2015实习生笔试题
5.下列判断正确的是( )
资料分析
言语理解与表达
资料分析
评论
(1)
已知a
40
=...
京东
职能
2019
财务
保险
评论
(1)
《拳皇97》最后BOSS是谁?
游戏常识
评论
(1)
《魔兽世界》中,下列不属于玩家可以...
游戏常识
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题