计算机组织与系统结构 设计流水线处理器_第1页
计算机组织与系统结构 设计流水线处理器_第2页
计算机组织与系统结构 设计流水线处理器_第3页
计算机组织与系统结构 设计流水线处理器_第4页
计算机组织与系统结构 设计流水线处理器_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

计算机组织与系统结构

设计流水线处理器

DesigningaPipelineProcessor

(第十五讲)

程旭

2000-12-18

北京大学计算机科学技术系微处理器研究开发中心

串行洗衣店

6PM78910111212AM

30'30'30'30'30'30'30'30'30'30'30'30'30'30'30'30

d迳

工作时间

田回A

.

串行洗衣店需要8个小时完成4个工作量

如果他们了解流水技术,那么需要多长时间完成上述工作呢?

北京大学计算机科学技术系微处理器研究开发中心

流水技术无助于减少单个任务

流水技术性质的处理延迫(latency),但宥助

于提高整体工作负莪的吞吐率

多个不同任务同时操作,使用不

同资源

潜在加速比二流水线级数

流水线的速率受限于最慢的流

水段

流水段的执行时间如果不均衡,

那么加速比就会降低

开始填充流水线的时间和最后

排放流水线的时间降低加速比

相关将导致流水线暂停

北京大学计算机科学技术系微处理器研究开发中心

理想流水线

假设所有指令都完全独立!

IFDCDEXMEMWB

IFDCDEXMEMWB

IFDCDEXMEMWB

IFDCDEXMEMWB

IFDCDEXMEMWB

最大加速比v流水线段数

加速比<非流水化操作的时间

____________________曩长段的呻____________________

例如:40ns数据通路,5段,最长段为10ns,加速比<4

北京大学计算机科学技术系微处理器研究开发中心

流水技术会产生哪些问题?

流水线冒险(PipelineHazards)

•结构冒险(structuralhazards):试图同时以两种不同的方式

使用同一资源

-例如,多次存储器访问、多次寄存器写

-解决方案:多个存储器、暂停

•数据冒险(datahazards):在产生数据之前,就试图使用它们

-例如,addrl,r2,r3;subr4,rl,r5;Iwr6,0(r7);orr8,r6,r9

-解决方案:前递/旁路、暂停/气泡

•控制冒险(controlhazards):在判定转移条件之前,就试图决

策转移方向

-例如,条件转移

-解决方案:预测、延迟转移

北京大学计算机科学技术系微处理器研究开发中心

具有数据・E3定控制的流水化数据通路

就象时间■状态!

Ilw$2,20($5)IPC.

VI操作数寄存器选择

<=PC+4+immed

结果寄存器选择和使能

北京大学计算机科学技术系微处理器研究开发中心

总结

°流水处理是非常基本的概念

•使用不同资源的多个处理步骤

°通过流水化指令处理利用数据通路的处理能力

•在处理当前指令的同时,开始处理下一指令

•受最长段的时间限制

■需要检测和处理冒险

°哪些策略使得流水容易实现?

•所有的指令长度相同

•只有少量的指令格式

•Ld/St结构

°相关冒险问题是难点

北京大学计算机科学技术系微处理器研究开发中心

教学目标:已经掌握的内容

°计算机的五个基本部件

处理器

输入

存储器

输出

°本讲主题:为流水化数据通路设计控制

北京大学计算机科学技术系微处理器研究开发中心

控制图

MuS

UA

O/

Bo

OuH

£/

S

Ua§)A

_

北京大学计算机科学技术系微处包器研究开发中心

控制信号

°重要发现:N段的控制信号=Func(N段的指令)

•N=Exec、Mem或Wr

°示例:Exec段的控制信号=Func(Load的Exec)

:Ifetch:Reg/DecMem

RegWrBranch

l—

O.

|qa

E

IIX

FD

//'

IEM

D

xi

RR

eeR

gge

iig

ssi

ffs

eet

rre

r

RegDst=0ALUSrc=lMemWrMemtoReg

北京大学计算机科学技术系微处理器研究开发中心

流水线控制

在Reg/Dec段,主控产生控制信号

•Exec(ExtOp,ALUSrc,…)的控制信号在1个周期后使用

•Mem(MemWrBranch)的控制信号在2个周期后使用

•Wr(MemtoRegMemWrj的控制信号在3个周期后使用

Reg/DecExecMem

2ExtOpExtOp

ALUSrcALUSrcM

Ie

FALUOpALUOpm

/

IMain'

DRegDstRecDstw

Rr

eControl

gR

iemWrMemWrMemWre

sg

ti

eranchBranchBranchs

rf

e

r

emtoReg.MemtoRegMemtoRegVIemtoRee,

ReiWr、RegWrRecWrReqWr4

北京大学计算机科学技术系微处理器研究开发中心

回写段的开始:现实中的问题

Clk

RegAdrWrAdrX

RegWrMemWr

RegWr'sClk-to-QMemWr'sClk-to-Q

―►—

RegAdr^CIk-to-QWrAdr^Clk-to-Q

RegWrMemWr

W

redr

Da

at

°在Wr段的开始,如果下式成立,现实中就会出现问题:

•RegAdr、(RdorRt)Clk-to-Q>RegWr'sClk-to-Q

•在Address和WriteEnable之间出现了竞争!

°同样,在Mem段的开始,如果下式成立,现实中就会出现问题:

•WrAdrJsClk-to-Q>MemWrJsClk-to-Q

•在Address和WriteEnable之间出现了竞争!

北京大学计算玩科学技术系微处理器研究开发中心

流水线的问题

多周期设计是如何防止Addr和WrEn之间的竞争的?

■确保在第N个周期结束时地址是稳定的

■在第N+1个周期使WrEn有效

°这种方法在流水线设计中不能使用!这是因为

北京大学计算机科学技术系微处理器研究开发中心

同步寄存器堆和同步存储器

解决方案:将WriteEnable信号和时钟进行逻辑与

•只有这里可以使用门控的时钟信号

•必须咨询电路专家,确保没有定时违例:

-例如:ClockHighTime>WriteAccessDelay

同步存储器和同步寄存器

至少在时钟沿前的建立时间之间,

Address>Data和WrEn必须稳定

在捕获这些信号的时钟沿之后的

时钟周期,发生写操作

北京大学计算机科学技术系微处理器研究开发中心

Cycle4Cycle5Cycle6Cycle7

EndofCycle4:Ld'sMem,R-tpeJsExec,SfsReg,Beq'sIfetch

EndofCycle5:Ld'sWr,R-typeJsMem,SfsExec,Beq'sReg

EndofCycle6:R-typeJsWr,SfsMem,Beq、Exec

EndofCycle7:Store、Wr,Beq'sMem

北京大学计算机科学技术系微处理器研究开发中心

流水示例:第US周期结束

0:Load、Mem4:R-type5sExec8:Store、Reg12:Beq、Ifetch

8:Store'sReg4:R-type'sExec:0:Load'sMem

12:Beq'sIfetALUOp=R-type

RegWr=0ExtOp=xBranch=0

Clk

PC+4

Imml6

busAZeroData

A

Mem

IbusB

RADo

s

二.WA

Di

I

RegDst=lALUSrc=0ClkMemtoReg=x

北京大学计算机科学技术系MemWr=微处理器研究开发中心

流水示例:第五周期结束

0:Lw'sWr4:R5sMem8:St'sExec12:Beq、Reg16:R'sIfetch

12:Beq,sReg,8:Store'sExec4:R-type'sMem

0:Load'sWr

16:R'sRfetALUpp=Add

RegW「]ExtOp:1Branch=0

Clk

aQ

pcE

X

+4I

DPC+4'

/M

Ee

xImml6

:m

:ZerolData

BbusA

es

qbusBfMem

oo

sr

e-j-►RADo

bc

us!—►WA

sA-I-kDi

Ad

d

&<r

e

Bs

s

ALUSrc=lClk----|-J-MemtoRegM

MemWr=0~

北京大学计算机科学技术系微处理器研究开发中心

流水示例:第六周期结束

4:R'sWr8:St'sMem12:Beq'sExec16:R'sReg20:RJsIfet

12:Beq'sExec8:Store'sMem

◄---------------►

4:R-type'sWr

ALUpp=Sub

ExtOp二1Branch=0

Ik

o-D。A

lcI

D

I+4f

F/PC+4E

=EX

DXImml6、

:M

:

RbusAiZeroData

I—

nt:

sybusBMem

fpB

reeRADo

ucq

cso

dbsWA

ou

sRDi

n

@Ase

I<u

2&-

0sf

RegDskxA,USrc=0ClkMemtoRegM)

北京大学计算机科学技术系MemWr=微处理器研究开发中心

流水示例:第七周期结束

8:St'sWr12:Beq、Mem16:R'sExec20:R'sReg24:R'sIfet

20:R-type'sReg16:R-type'sExeq:12:Beq'sMem

24:8:Store'sWr

ALUOp=R-typp

R-type'sIfet

RegWr=0ExtOp=x.Branch=l

ClkI

-

Qo凸

Il

ls/lPC+4

Elg'lJ

XM

:Imml6e

Rm

fbusA:ZenData

y

pR

ebusBtMem

cy

spRADo

be

uo

ssWA

AR

eDi

us

lg

I

RegDstf=lALUSrc=0qk—p)MemtoReghx

MemWr=0~'

北京大学计算机科学技术系微处理器研究开发中心

延迟转移现象

Cycle4Cycle5:Cycle6Cycle7Cycle8Cycle9Cycle10Cycle11

.___

Clk_|_|1_|_1_|_|_|_|1_

12:BeqIfetch|Reg/Dec|Exec|MemWr

■、-

(targetis1000)11

Ifetch^Reg/Dec|ExeciMem|Wr

16:R-type■

20:R-type|'【fetch|Reg/Dec'[ExecMem|Wr

24:R-typeIfetchkeg/Dec|ExecMemWr

1000:TargetofBrIfetch|Reg/Dec||Exec|Mem|Wr

虽然Beq在第4周期取指:

•目标地址在第7个周期结束时才能写入PC

•转移的目标在第8个周期前不能被取指

•在转移发生效果之前,有解指令被延迟

这也就是转移冒险(BranchHazard):

­非常精致的设计有可能将这一延迟减小至一条指令

北京大学计算机科学技术系微处理器研究开发中心

延迟装入现象

Cycle1Cycle2Cycle3Cycle4:Cycle5Cycle6Cycle7Cycle8

i_i-

Clock1_|_|i_rn1iI_|1_

10:LoadIfetch|Reg/Dec|Exec|Mem|Wr

■■■J

Plus1Ifetch|Reg/Dec|Exec|卜Mem\Wr

Plus2Ifetch|Reg/Dec|〜Exec,IMem|Wr

Plus3Ifetch|Reg/Dec[ExecMem1Wr

Plus4IfetchReg/Dec|ExecMemWr

V

虽然Load在第一个周期就被取指:

•它的数据直到第五个周期结束时才被写入到寄存器堆

•在第六个周期之前,不可能从寄存器堆中读取这一数值

•在装入指令结束之前,有栋指令被延迟

北京大学计算机科学技术系微处理器研究开发中心

数据通路+数据一E3定控制

北京大学计算机科学技术系微处理器研究开发中心

指令流水示例

10lwr1,r2(35)

14addir2,r2,3

20sub

24beqr6,r7,100

30orir8,r9,17

34addr10,r11,r12

100andr13,r14,15地址以八进制表示

北京大学计算机科学技术系微处理器研究开发中心

北京大学计算机科学技术系微处理器研究开发中心

北京大学计算机科学技术系微处理器研究开发中心

北京大学计算机科学技术系微处理器研究开发中心

北京大学计算机科学技术系微处理器研究开发中心

Fetch30并Decode24并Exec20并Meml4并WB10

k/B

M

0b

ID

IF

34addr1O,r11,r12

O

注意延迟转移:在B;q之后总是执行ori100andr13,r14,15

北京大学计算机科学技术系微处理器研究开发中心

FetchlOO并Decode30并Exec24并Mem20并WB14

□□□

oWB

00MemCtrl

Ctrl

o

IRxxX

IO

r6■

iZI

110lwr1,r2(35)

>0B14addl2r2,3

IM20subr3,r4,r5

E*

o24hftnr6r7100

R30orir8,r9,17

34addr10,r11,r12

O

注意延迟转移:在Beq之后总是执行oriIF100andr13,r14.15

北京大学计算机科学技术系微处理器研究开发中心

Fetchl04并Decodel00并Exec30并MeIn24并WB20

北京大学计算机科学技术系微处理器研究开发中心

FetchllO并口3(30(16104并£乂3(3100并皿11130并帕24

北京大学计算机科学技术系微处理器研究开发中心

Fetchll4^Decodell0^Execl04^Meml00^WB30

北京大学计算机科学技术系微处理器研究开发中心

再谈流水线冒险

IFDC;ExMem

IF|DCD|OFIExIRSWARDataHazard

(writeafterread)

北京大学计算机科学技术系微处理器研究开发中心

数据冒险

°如何避免一些冒险

•通过总是在流水线的前段(DCD)取操作数,来消除WAR

•通过按序完成所有回写操作(在最后一级,静态),来消除

WAW

°检测并解决RAW

­暂停,并尽可能前递

北京大学计算机科学技术系微处理器研究开发中心

冒险检测

°照例令i将被发射,它的前指令J在指令流水线中

°关于寄存器r存在RAW冒险,如果rGRregs(i)nWregs(j)

•保存流水线中指令的尚未完成写的纪录信息,并与当前指令的操

作数寄存器进行比较

•当发送指令时,预留它的结果寄存器

•当完成操作后,删除它的写预留(writereservation)

关于寄存器r存在WAW冒险,如果rGWregs(i)nWregs(j)

关于寄存器r存在WAR冒险,如果rGWregs(i)cRregs(j)

北京大学计算机科学技术系微处理器研究开发中心

未完成写的纪录

/当前操作数寄存器

/未完成写操作

冒险<=

((rs==rwex)®Wex)OR

((rs==rwmem)®Wme)OR

((rs==rwwb)®Wwb)OR

(“t==rwex)®Wex)OR

((rt==rwmem)®Wme)OR

((rt==rwwb)®Wwb)

北京大学计算机科学技术系微处理器研究开发中心

通过前递解决RAW冒险检测最近的valid

写操作操作数寄存

器笄forward到

op就存需

bypassing流水

线中的其他部分

增加多路选择器来

增设来自流水线寄

存器的通路

DataForwarding

=DataBypassing

北京大学计算机科学技术系微处理器研究开发中心

存储器操作

•如果指令按序开始处理,并且在相

同段执行操作,那么存储器操作之

间就没有冒险!

•延迟算术操作的回写会产生哪些开

销?

•时钟周期?

•硬件?

・关于装入指令的数据相关如何?

•R1R4+R5

•R2<=Mem[R2+i]

•R3<=R2+R1

=>

至寄存器堆

"DelayedLoads"

北京大学计算机科学技术系微处理器研究开发中心

编译消除装入暂停的效果

%loadsstallingpipeline

北京大学计算机科学技术系微处理器研究开发中心

如何处理中断、自陷、故障?

°外部中断:

•允许流水线排空,

•PCU中断地址

°故障(指令内部、可重启)

・强制自陷指令进入IF

•禁止写操作直到自陷指令达到WB

•必须保存多个PCs或者PC+state

RefertoMIPSsolution

北京大学计算机科学技术系微处理器研究开发中心

意外事件处理

检测错误指令地址

Ilw$2,20($5)1

检测错误指令

Iimhfnhoprwj

检测溢出

检测错误数据地址

允许意外事件生效!

北京大学计算机科学技术系微处理器研究开发中心

意外事件中的问题

°意外事件/中断:在5段流水线中执行着5条指令

•如何停止流水线?

•重启?

•哪些问题产生中断?

段名可能出现的中断问题

IF取指页失效、未对准存储器访问、存储保护违例

ID未定义或非法操作码

EX算术意外事件

MEM取数据页失效、未对准存储器访问、存储保护违例、存储器错误

°产生数据页失效的Load指令、产生指令页失效的Add指令?

°解决方案1:中断向量/指令

°解决方案2:尽可能早地中断执行,之后,重启所有未执行完的操作

北京大学计算机科学技术系微处理器研究开发中心

解决方案:上部冻结&下部加空泡

北京大学计算机科学技术系微处理器研究开发中心

参考:MIPSR3000的时钟定时策略

phi1---------------I-

phi2__________

°双相无重叠时钟(2・phasenonoveHappingclocks)

°流水线段两级锁存(电平使能)

边沿触发

北京大学计算机科学技术系微处理器研究开发中心

MIPSR3000指令流水线

Decode

InstFetchReg.ReadALU/E.AMemoryWriteReg

TLBl-CacheRFOperationWB

E.A.TLBD-Cache

北京大学计算机科学技术系微处理器研究开发中心

关于rl的数据冒险

•立即向后相关就可能出现冒险

时间(时钟周期}IFID/RFEXMEMWB

addrl,r2,r3IMi£RegDM

指IM上

subr4,rlJr3DM

andr6rl,r7IMXReg

次5

orr83rl,r9IMJReg

仅orMemMemReg

在MIPSR3000流水线中,无需从WB段进行前递!

北京大学计算机科学技术系微处理器研究开发中心

MIPSR3000的多周期操作

例如:乘法、除法、Cache失效

暂停流水线中多周期操

作之上的所有流水段

排空(空泡)它之下的

所有段

使用本地流水段状态的

控制字来一步步执行多

周期操作

北京大学计算机科学技术系微处理器研究开发中心

流水化设计中的指令发送

基本流水线

温馨提示

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

评论

0/150

提交评论