在5.2 CLA Pipeline Alignment(P35-P36)这一章节中,我对Example 5-1. Write Followed by Read – Read Occurs First与Example 5-2. Write Followed by Read – Write Occurs First不是很理解,看了很多遍,不知道作者想表达的什么意思,求救于各位高手,望予以解答,小弟在此先行谢过。
wellsking:
大概意思:如果后一条语句B,要用到前一条语句A的结果。
CPU:会自动停止B语句的流水线。等到A语句执行完后,再执行B。
CLA: 不会自动停止B的流水线,要人为的插入L2 L3 L4三条等待指令,等到A语句完后,执行B
这是我个人的理解,不知道对不对!
在5.2 CLA Pipeline Alignment(P35-P36)这一章节中,我对Example 5-1. Write Followed by Read – Read Occurs First与Example 5-2. Write Followed by Read – Write Occurs First不是很理解,看了很多遍,不知道作者想表达的什么意思,求救于各位高手,望予以解答,小弟在此先行谢过。
user3681076:
回复 wellsking:
这两条不都是CLA的指令码,我是问为什么CLA要插入三条指令,第一个不要插入任何指令
在5.2 CLA Pipeline Alignment(P35-P36)这一章节中,我对Example 5-1. Write Followed by Read – Read Occurs First与Example 5-2. Write Followed by Read – Write Occurs First不是很理解,看了很多遍,不知道作者想表达的什么意思,求救于各位高手,望予以解答,小弟在此先行谢过。
user3681076:
回复 wellsking:
谢谢您的回答,清帮我解决这个问题好吗
在5.2 CLA Pipeline Alignment(P35-P36)这一章节中,我对Example 5-1. Write Followed by Read – Read Occurs First与Example 5-2. Write Followed by Read – Write Occurs First不是很理解,看了很多遍,不知道作者想表达的什么意思,求救于各位高手,望予以解答,小弟在此先行谢过。
wellsking:
回复 user3681076:
举个例子
第一条指令的功能是计算:A+B=C
第二条指令的功能是计算:C+D=M
第二条指令要用到第一条指令的计算结果C。由于有流水线,CLA在第一条指令没有执行完之前(也就是在没有计算出C之前),
CLA就已经对第二条指令取指,译码(具体看CLA流水线)。
如果不插入三个NOP,第二条指令使用的C,就不是第一条指令计算的结果。
插入三个NOP,等待第一条语句计算完(计算出C),才能执行第二条指令。具体的过程,你要看CLA的流水线的各阶段,F1 F2 D1 D2 R1 R2 E W。
表达能力有限,大概的意思应该是这样。
在5.2 CLA Pipeline Alignment(P35-P36)这一章节中,我对Example 5-1. Write Followed by Read – Read Occurs First与Example 5-2. Write Followed by Read – Write Occurs First不是很理解,看了很多遍,不知道作者想表达的什么意思,求救于各位高手,望予以解答,小弟在此先行谢过。
10#:
回复 wellsking:
楼上解释是正确的。
通常来讲,如果都是CLA指令,都使用相同的流水线,应该没有问题,但这一章节讲的就是特例,比如后一条语句的8级流水线执行到R2时,需要去读前一条语句的运算结果,可它是在W才写入,所以为了使用这个结果,必须加入延时等待。这个例子是因为流水线的读和写是有时间差的,而这两条语句又互相有关系(使用同一个变量或寄存器)那么写程序时就需要人为处理了。
具体就像楼上所说的,还是请仔细看一下流水线的各个阶段去了解一下。
在5.2 CLA Pipeline Alignment(P35-P36)这一章节中,我对Example 5-1. Write Followed by Read – Read Occurs First与Example 5-2. Write Followed by Read – Write Occurs First不是很理解,看了很多遍,不知道作者想表达的什么意思,求救于各位高手,望予以解答,小弟在此先行谢过。
user3681076:
回复 10#:
首先,感谢两位的回答,我看了一下,是不是这个意思:举个例子:
MMOV16 @Reg1, MR3
MMOV16 MR2, @Reg1
这两条语句中第一条用到了Reg1,第二句中也用了Reg1,所以在CLA中我们要用三分MNOP指令来达到想要的结果,如果不加入MNOP指令,Reg1在第二句中仍然使用旧的值?
在5.2 CLA Pipeline Alignment(P35-P36)这一章节中,我对Example 5-1. Write Followed by Read – Read Occurs First与Example 5-2. Write Followed by Read – Write Occurs First不是很理解,看了很多遍,不知道作者想表达的什么意思,求救于各位高手,望予以解答,小弟在此先行谢过。
10#:
回复 user3681076:
意思大概是这样,但不适用于你举的这个例子,因为它们是相同的MMOV16指令,那么执行的动作是完全一样的,其中一个在8级是怎样的,另一个也完全一样。
上面所说的特例,是指分别有读和写,而后一个的读发生在前一个的写之前,就会遇到结果还没出来的问题。
记得之前你问过一个关于MNOP的问题,我想应该解释的比较清楚了。。
在5.2 CLA Pipeline Alignment(P35-P36)这一章节中,我对Example 5-1. Write Followed by Read – Read Occurs First与Example 5-2. Write Followed by Read – Write Occurs First不是很理解,看了很多遍,不知道作者想表达的什么意思,求救于各位高手,望予以解答,小弟在此先行谢过。
user3681076:
回复 10#:
感谢您耐心的回答,在DATSHEET中,所举的例子不也是MMOV16 @Reg1, MR3,MMOV16 MR2, @Reg2.例子中不也是相同的MMOV16 指令码,这个是特例吗,另外,MMOV16 @Reg1, MR3是写,MMOV16 MR2, @Reg2读吗?
在5.2 CLA Pipeline Alignment(P35-P36)这一章节中,我对Example 5-1. Write Followed by Read – Read Occurs First与Example 5-2. Write Followed by Read – Write Occurs First不是很理解,看了很多遍,不知道作者想表达的什么意思,求救于各位高手,望予以解答,小弟在此先行谢过。
10#:
回复 user3681076:
是我没看清楚,上面的就是特例,但内容还是一样的。
第一条语句中Reg1的值可能影响到Reg2的值,那么在Reg1还没写入时,Reg2还是原来的值,因此如果程序设计原意是希望得到Reg1写完后的Reg2的值,那么就需要加入MNOP,否则不需要,就如Example5-1。
你再仔细理解一下这段话:
In both the CLA pipeline the read operation occurs before the write. This means that if a read operation immediately follows a write, then the read will complete first as shown in Example 5-1. In most cases this does not cause a problem since the contents of one memory location does not depend on the state of another. For accesses to peripherals where a write to one location can affect the value in another location the code must wait for the write to complete before issuing the read as shown in Example 5-2.
在5.2 CLA Pipeline Alignment(P35-P36)这一章节中,我对Example 5-1. Write Followed by Read – Read Occurs First与Example 5-2. Write Followed by Read – Write Occurs First不是很理解,看了很多遍,不知道作者想表达的什么意思,求救于各位高手,望予以解答,小弟在此先行谢过。
user3681076:
回复 10#:
您很耐心,谢谢您,有几个问题:1:在CLA中,规定MMOV16 @Reg1, MR3是写,MMOV16 MR2, @Reg2读吗?2:您说“Reg1的值可能影响到Reg2的值”这个他们之间没有任何联系啊。