Answers:
有许多不同种类的计算机体系结构。
对计算机体系结构进行分类的一种方法是按每个时钟执行的指令数。许多计算机一次读一个指令并执行它(或它们投入了大量的精力来行事,就好像他们这样做,即使在内部他们也喜欢超标量和乱序的东西)。我称这类机器为“冯·诺依曼”机器,因为它们都具有冯·诺依曼瓶颈。这样的机器包括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帮助改善对各种计算机体系结构的描述 。
CISC与RISC相反。RISC倾向于具有易于编译器优化的简单指令,并且通常具有相同的大小,而CISC则喜欢大小不同的复杂指令。
例如,CISC中的一条弹出指令将修改堆栈指针并将堆栈中的数据放入另一个寄存器。但是,RISC处理器将使用一条指令读取数据,然后使用第二条指令修改堆栈指针。(通常;有些例外,例如PowerPC可以更新堆栈指针并将数据推入堆栈,但这是一个例外)
由于RISC指令的大小都相同,因此反汇编程序更易于编写。设计处理器也更容易,因为流水线不必考虑变化的指令大小。但是,CISC代码密度趋向于更好,这既是因为复杂的指令需要较少的字节来表示相同数量的操作,又是因为可变的指令长度允许某些“压缩”。
还有其他奇特的体系结构,例如VLIW / EPIC。设计此类架构时要考虑并行处理。但是,它们做得不好,因为它们给编译器进行优化带来了沉重的负担,而其他体系结构则拥有花哨的指令窗口,可以减轻编译器的优化负担。
嗯,就像ENIAC一样,您实际上拥有单独的ALU,然后通过将一个alu的输出连接到将对该中间变量执行下一个运算的另一个alu的输入来“编程”它们。您的“寄存器”和存储是连接alus的电线。
我最近购买了“第一台计算机-历史和体系结构(计算历史)”这本书,该书部分侧重于这个确切的主题。我不建议购买这本书,尽管它只是一本学术论文的集合,很难阅读,而且我怀疑可能在其他地方(免费)出版了。(我在完成介绍之前就放弃了)
一旦发明了记忆并付诸实践,我们就定居于两个受欢迎的冯·诺依曼和哈佛大学。从重新布线,打孔卡,纸带或类似的东西执行起来变得不太实际。并且有基于堆栈的堆栈(例如zpu),我怀疑它可能属于哈佛类别,而不是其所属类别。
冯·诺依曼平台在一个内存接口上以只读(正常使用)闪存启动,而在另一个内存接口上具有读/写数据内存(有时可以同时在两个内存上并行运行)又如何呢?地址空间?或者具有多个内部和外部存储器/接口的所有存储器/接口都并行运行,但由于它们位于同一地址空间中而属于冯·诺依曼。
哈佛平台有什么好处,在该平台上,处理器无法以数据形式访问指令存储器以更改/升级引导加载程序或使引导加载程序加载要运行的下一个程序?为什么不是冯·诺依曼式建筑?在同一接口上的同一内存中执行操作的处理器是否可能以顺序方式(指令提取和内存写入不会同时发生)进行?
两种流行的基于内存的体系结构比当前实现IMO中的不同之处更为接近。
GPU的跌落在哪里?或我从事的业务是网络处理器(NPU)。如果您有这些相对较小的专用微引擎(处理器),它们可以从类似程序ram的哈佛执行(可寻址,但出于性能原因您不想这样做),则可以对各种数据ram进行操作,每个数据ram都有各自独立的地址空间(独立的处理器)每个空间的指令),(并行运行的存储空间)并通过这些ram传递中间数据,以便下一个微引擎以有线alu(eniac)的方式进行下一次计算?你会怎么称呼那个?是npus和gpus只是花哨的修改过的哈佛体系结构吗?