CISC 和 RISC 架构

CISC and RISC architectures

我从不同来源阅读了很多有关 CISC 和 RISC 体系结构之间差异的信息。似乎达成共识的一件事是,CISC 始终与冯诺依曼一起使用,而 RISC 与哈佛架构一起使用。但是我不太明白这种分类背后的原因。

指令集(RISC and CISC) with architecture of the processor (Harvard Architecture and Von Neumann Architecture)之间没有关系。两种指令集都可以与任何架构一起使用。

年长的 ARM architecture used Von Neumann Architecture with RISC, and later with ARM9 他们转向使用 RISC 的哈佛架构。最新的 ARM 处理器使用更先进的混合架构。

冯·诺依曼与哈佛的区别并不明显。显然,具有用于指令和数据的独立内存总线的芯片是哈佛架构。但是当添加好的缓存时,单独总线的性能优势会大大降低。

如果你采用这样的芯片并添加良好的缓存,然后切换回单个内存总线,其中一个额外的引脚指示内存获取是用于指令还是用于数据,你仍然在谈论一个哈佛架构 - 从编程的角度来看,你不能说发生了这样的变化。

我认为最大的区别可能是在真正的冯·诺依曼CPU上,您可以写入指令存储器,然后立即执行您编写的指令。例如,在 8086 上,您可以在写入指令后立即写入指令!而在哈佛 CPU 上,即使是具有统一内存总线的哈佛,您也必须在写入之后执行一条指令以强制将其写入实际内存,可能是一条防止乱序执行的指令,然后是刷新该位置的指令缓存的指令。此过程可能需要数百个周期 - 这是必要的,因为芯片的体系结构假定指令和数据存储器不交互。

这种变化甚至可以发生在同一个 CPU 家庭中。原来的cache-less 68000当然是CISCCPU,但是如果你写指令流,你就得提防指令预取,而且有可能在你写内存之后加一个NOP。然而,680x0 系列的后来变体变得越来越像哈佛。例如,外部存储器总线可能保持统一,但指令和数据缓存是分开的。