有哪些不同类型的计算机体系结构?


20

我正在阅读《计算系统的元素》一书。本书教了如何从头开始构建整个计算机。当我浏览有关计算机体系结构的章节时,我注意到所有内容都集中在冯·诺依曼体系结构上。我只是对其他什么架构以及何时何地使用它们感到好奇。

我只知道两个,一个是冯·诺依曼,第二个是哈佛。我也知道用于AVR uC的RISC。


2
第三个是修改过的哈佛大学。单纯的哈佛大学将无法使用相同的存储来保存程序和数据。因此,哈佛的几乎每一种实现方式都经过修改,可以将指令存储器作为数据进行寻址。
大猩猩

1
好问题。
匿名类型

Answers:


27

有许多不同种类的计算机体系结构。

对计算机体系结构进行分类的一种方法是按每个时钟执行的指令数。许多计算机一次读一个指令并执行它(或它们投入了大量的精力来行事,就好像他们这样做,即使在内部他们也喜欢超标量和乱序的东西)。我称这类机器为“冯·诺依曼”机器,因为它们都具有冯·诺依曼瓶颈。这样的机器包括CISC,RISC,MISC,TTA和DSP体系结构。这样的机器包括累加器机器,套准机和堆叠机。其他机器一次读取并执行几条指令(VLIW,超标量),这打破了每时钟一个指令的限制,但仍然以每时钟稍多的指令数量达到了冯·诺依曼瓶颈。其他机器不受冯·诺依曼瓶颈的限制,因为它们在加电时会预加载所有操作一次,然后再处理数据而无须进一步说明。此类非冯·诺依曼机器包括数据流架构,

对计算机体系结构进行分类的另一种方法是通过CPU和内存之间的连接。某些机器具有统一的内存,因此单个地址对应于内存中的单个位置,并且当该内存为RAM时,可以使用该地址读取和写入数据,或者将该地址加载到程序计数器中以执行代码。我称这些机器为普林斯顿机器。其他机器有几个单独的存储空间,因此无论将什么地址加载到其中,程序计数器都始终引用“程序存储器”,并且正常的读写操作始终进入“数据存储器”,这是一个通常包含不同内容的位置即使当数据地址的位恰好与程序存储器地址的位相同时,该信息也会保留。这些机器是“纯哈佛”或“

少数人使用“冯·诺依曼机器”的狭义定义,不包括哈佛机器。如果您是其中的一员,那么对于“具有冯·诺伊曼瓶颈的机器”(包括哈佛机器和普林斯顿机器,但不包括NON-VON)的更一般概念,您将使用什么术语?

大多数嵌入式系统使用哈佛架构。一些CPU是“纯哈佛”,这也许是在硬件中构建的最简单的安排:通向只读程序存储器的地址总线专门连接到程序计数器,例如许多早期的Microchip PICmicro单片机。此外,某些经过修改的哈佛机器还将常量存储在程序存储器中,可以使用特殊的“从程序存储器读取常量数据”指令(不同于“从数据存储器读取”指令)读取常量。在上述哈佛机器上运行的软件无法更改程序存储器,该存储器实际上是该软件的ROM。一些嵌入式系统是“可自编程的”,通常在闪存中具有程序存储器,并具有特殊的“闪存擦除块” 除了“从程序存储器读取数据”指令外,该指令还有一个特殊的“闪存的写块”指令(不同于普通的“向数据存储器写”指令)。最近有几款Microchip PICmicros和Atmel AVR是可自我编程的改进型哈佛计算机。

对CPU进行分类的另一种方法是根据其时钟。大多数计算机都是同步的-它们只有一个全局时钟。一些CPU是异步的-它们没有时钟-包括ILLIAC I和ILLIAC II,它们曾经是世界上最快的超级计算机。

请通过http://en.wikibooks.org/wiki/Microprocessor_Design/Computer_Architecture帮助改善对各种计算机体系结构的描述 。


2
哇,我问了这个问题这么久之后,您就这么隐瞒了这些知识,真是可惜。
Rick_2047'9

3
@Rick-似乎该答案花了很长时间撰写。感谢davidcary花时间回答您的问题!有些人的工作进度与您不同。
凯文·维米尔

2
@reemrevnivek是个玩笑的家伙。
Rick_2047'9

如果将此答案标记为社区Wiki答案,那就太好了。
TrygveLaugstøl2011年

8

CISC与RISC相反。RISC倾向于具有易于编译器优化的简单指令,并且通常具有相同的大小,而CISC则喜欢大小不同的复杂指令。

例如,CISC中的一条弹出指令将修改堆栈指针并将堆栈中的数据放入另一个寄存器。但是,RISC处理器将使用一条指令读取数据,然后使用第二条指令修改堆栈指针。(通常;有些例外,例如PowerPC可以更新堆栈指针并将数据推入堆栈,但这是一个例外)

由于RISC指令的大小都相同,因此反汇编程序更易于编写。设计处理器也更容易,因为流水线不必考虑变化的指令大小。但是,CISC代码密度趋向于更好,这既是因为复杂的指令需要较少的字节来表示相同数量的操作,又是因为可变的指令长度允许某些“压缩”。

还有其他奇特的体系结构,例如VLIW / EPIC。设计此类架构时要考虑并行处理。但是,它们做得不好,因为它们给编译器进行优化带来了沉重的负担,而其他体系结构则拥有花哨的指令窗口,可以减轻编译器的优化负担。


1
如果您喜欢它,请接受它。
科尔图克

5

嗯,就像ENIAC一样,您实际上拥有单独的ALU,然后通过将一个alu的输出连接到将对该中间变量执行下一个运算的另一个alu的输入来“编程”它们。您的“寄存器”和存储是连接alus的电线。

我最近购买了“第一台计算机-历史和体系结构(计算历史)”这本书,该书部分侧重于这个确切的主题。我不建议购买这本书,尽管它只是一本学术论文的集合,很难阅读,而且我怀疑可能在其他地方(免费)出版了。(我在完成介绍之前就放弃了)

一旦发明了记忆并付诸实践,我们就定居于两个受欢迎的冯·诺依曼和哈佛大学。从重新布线,打孔卡,纸带或类似的东西执行起来变得不太实际。并且有基于堆栈的堆栈(例如zpu),我怀疑它可能属于哈佛类别,而不是其所属类别。

冯·诺依曼平台在一个内存接口上以只读(正常使用)闪存启动,而在另一个内存接口上具有读/写数据内存(有时可以同时在两个内存上并行运行)又如何呢?地址空间?或者具有多个内部和外部存储器/接口的所有存储器/接口都并行运行,但由于它们位于同一地址空间中而属于冯·诺依曼。

哈佛平台有什么好处,在该平台上,处理器无法以数据形式访问指令存储器以更改/升级引导加载程序或使引导加载程序加载要运行的下一个程序?为什么不是冯·诺依曼式建筑?在同一接口上的同一内存中执行操作的处理器是否可能以顺序方式(指令提取和内存写入不会同时发生)进行?

两种流行的基于内存的体系结构比当前实现IMO中的不同之处更为接近。

GPU的跌落在哪里?或我从事的业务是网络处理器(NPU)。如果您有这些相对较小的专用微引擎(处理器),它们可以从类似程序ram的哈佛执行(可寻址,但出于性能原因您不想这样做),则可以对各种数据ram进行操作,每个数据ram都有各自独立的地址空间(独立的处理器)每个空间的指令),(并行运行的存储空间)并通过这些ram传递中间数据,以便下一个微引擎以有线alu(eniac)的方式进行下一次计算?你会怎么称呼那个?是npus和gpus只是花哨的修改过的哈佛体系结构吗?


“在哈佛平台上,处理器无法……加载下一个要运行的程序有什么好处?” 许多CPU具有固定的程序,该程序无法被该CPU上运行的软件更改。这种安排的一个优点是,它不可能通过写入随机存储器的错误,错误的软件更新,甚至良好的软件更新和不合时宜的电源故障来“破坏”系统。这使得更新软件更加困难-但是,实际上,您在微波炉中更改了多少次软件?
大卫2010年

2
在微波上没有,但是我每天花费大量时间为微控制器编码并重新加载软件。由于限于小型,无错误,基于rom的系统,使用von neumann可以轻松解决阻塞问题。您所描述的系统对于单独总线的性能提升几乎没有用,这是哈佛架构的另一个功能。所以我的意思是,哈佛架构无法在没有加载程序的情况下无法很好地扩展,使其有些过时。
old_timer 2010年

1
嗯,当它不是真正的时候,他们将它们称为cortex-m3哈佛,与avr一样(他们称其为改良的哈佛)。我敢肯定,有一些纯哈佛架构处理器(PIC),曾经是更纯净的冯·诺依曼,但是大多数都是经过修改的哈佛或经过改良的冯·诺依曼(并行的数据和指令访问),因此它们相同而不是不同。答案就是我要去的地方,纯哈佛和纯冯·诺依曼都迅速过时了。张贴者想知道那里还有什么,几乎所有东西都在那里。
old_timer 2010年

4

von Neumann和Harvard体系结构都可以与RISC处理器(例如AVR和ARM)一起使用。AVR使用哈佛,而某些ARM芯片使用von Neumann,而某些使用哈佛。


-1将您归类为更有趣的答案。
奥斯卡·斯科格
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.