请教:奔腾系列CPU 中的CISC转RISC 和乱序执行 问题?

zongta 2003-12-21 02:47:19
小弟近日学习Art of Assembly Language Programming,其中,第三章讲的 奔腾系列CPU 的CISC转RISC 和乱序执行 技术很模糊。在此,请诸位大侠赐教。我想知道:

1. CISC 转RISC 对于执行效率有什么帮助?
2. 乱序执行的好处是什么?
3. 这些技术的核心思想是什么?

谢谢您的参与!
...全文
179 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
W32API 2003-12-25
  • 打赏
  • 举报
回复
http://220.195.149.80:8080/view.asp?file=33
去看这个吧
zongta 2003-12-25
  • 打赏
  • 举报
回复
请各位推荐一些深入的汇编语言学习资料吧。书、文章、网址和电子版书都可以。
W32API 2003-12-24
  • 打赏
  • 举报
回复
不必客气
zongta 2003-12-24
  • 打赏
  • 举报
回复
To W32API(李诚) :

非常感谢!
W32API 2003-12-23
  • 打赏
  • 举报
回复
绝对必要
zongta 2003-12-23
  • 打赏
  • 举报
回复
在 Art of Assembly Language Programming 中的第三章提到,像下面这两条指令:

mov bx,[1000]
mov ax,[bx]

在管线中可能会引发指令冲突。所以,可以在它们之间插入另外一条指令,以消除冲突,提高管线利用率。就像这样:

mov bx, [1000]
mov cx, 2000
mov ax, [bx]

这种方法,对于奔腾以上的CPU 还有必要吗?
W32API 2003-12-22
  • 打赏
  • 举报
回复
RISC 的执行效率较高,可以实现指令级别的并行执行,P4 的 20 级流水线目前只可以同时执行 120 多条指令,而 G5(POWERPC 970)的 14 级流水线可以同时执行 200 条左右的指令。
RISC 的优势在于比较容易实现大量指令的并行执行,以及指令集及机器码简单。
乱序执行是根据各指令所需的资源,把不产生冲突的指令交给流水线执行,以实现最大的指令执行效率。这个过程允许 CPU 不严格按照代码流程去执行指令。
核心思想是提高 CPU 执行效率。
Semigod 2003-12-22
  • 打赏
  • 举报
回复
楼上真是高手,学到不少
W32API 2003-12-22
  • 打赏
  • 举报
回复
如果你把 CPU 内部的设备理解成资源,那么你就会发觉,同时执行的指令越多,资源就会越紧张。

而管线深,它的频率就可以做得很高,这也就是目前为什么 INTEL 的频率很高,而 AMD 的频率上不去的问题源之一。由管线加深而引起的问题是,CPU 现在都采用预测执行,如果出现预测出错,需要走另外一个分支的时候,之前所预执行的指令以及结果就是无效的,CPU 需要把整条流水线清空,并重新执行,因此 INTEL 加大了分支预测表,以及其缓冲器,以提升其分支预测的命中率。

并行执行的指令数与管线的深度有一定关系,也与执行单元数有关。

对于这个我就不是很清楚这方面的定义,我的理解是:INTEL 的指令在进入流水线后,每级都可以容纳一条指令,那么在流水线填满后,该流水线就有 20 条指令同时在执行。这个是理想状况,有部分指令可能并不需要走完 20 级就可以执行完毕,因此流水线并不见得总是满的。

RISC 指令集的好处是其整个指令集的设计比 CISC 指令集要适合指令的并行执行,其指令执行时,流水线的状况会比 CISC 指令集要好(虽然 INTEL 可以在指令预处理时加入一定的优化,以及我们可以在软件设计的时候加入优化,但是毕竟做不到 RISC 指令集的程度),而 RISC 的执行单元数往往较多,因此其指令的并行执行能力要比 INTEL 的要好。

还有就是不能把 CISC 与 RISC 指令等同,一般来说,CISC 的指令可能会需要 1~n 条 RISC 指令才能完成。
zongta 2003-12-22
  • 打赏
  • 举报
回复
另外,是不是说 管线越深 ,可以并行执行的指令数就越多呢?管线若很深,发生冲突指令的可能性就加大了呢?
zongta 2003-12-22
  • 打赏
  • 举报
回复
To W32API(李诚) :

多谢您的讲解!

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧