本文共 644 字,大约阅读时间需要 2 分钟。
计算机组成原理一书中指出流水线中有三种数据相关:写后读(RAW)相关、读后写(WAR)相关、写后写(WAW)相关。
那么这里该怎么理解这个A(after)呢?比如说第一条指令中读取了X,第二条指令中要写X,本来应该先读再写,但是由于流水线的存在,发生了第二条指令写完后第一条才读的情形,也就是发生了先写后读,称之为读后写(WAR)相关。
这里的重点是:前后有两条指令,分为三种情况:
- 第一条指令是读操作,第二条指令是写操作,那么只可能发生读后写(WAR)相关
- 第一条指令是写操作,第二条指令是读操作,那么只可能发生写后读(RAW)相关
- 第一条指令是写操作,第二条指令也是写操作,那么只可能发生写后写(WAW)相关
举三个例子:
- LDA R1, A ;M(A)->R1,M(A)是存储单元 ADD R2, R1 ;(R2)+(R1)->R2 分析:第一条指令向R1中写入了新值,第二条指令读取了R1中的值,先写后读,写后读(RAW)相关。
- ADD R3, R4 ;(R3)+(R4)->R3 MUL R4, R5 ;(R4)*(R5)->R4 分析:第一条指令读取了R4中的内容,第二条指令向R4中写入了新值,先读后写,读后写(WAR)相关。
- LDA R6, B ;M(B)->R6,M(B)是存储单元 MUL R6, R7 ;(R6)*(R7)->R6 分析:第一条指令向R6中写入了新值,第二条指令也向R6中写入了新值,先写后写,写后写(WAW)相关。
转载地址:http://pmiqf.baihongyu.com/