计算机体系结构与计算机组成

计算机体系结构与计算机组成

之前的文章确立了研究对象并将其划为6个层,之后自然应当讨论各个层的设计与实现,这相当于在分层的视角下讨论计算机体系结构(computer architecture)。计算机体系结构研究的是“如何通过组件拆分的形式构造计算机系统”,其中有高观点的“设计方面的问题”,也有低观点的“如何实现给定的设计”,后一类问题被称为计算机组成(computer organization)

实际上计算机体系结构和计算机组成的概念边界是不太清楚的,在英文维基百科中两者是上述的包含关系,计算机系统学者A.S. Tanenbaum认为这两者通常相同。历史上这两个概念的分裂可追溯至1960s,在这期间图灵奖得主、《人月神话》的作者Fred Brooks创造了计算机体系结构这个术语。当时他作为设计者在描述IBM Stretch计算机时首次用术语“体系结构”描述指令类型、速度提升方面的内容,而在这之前都用“组成”描述。总之这个问题本身不重要,之后不区分它们统称为体系结构。

 

冯·诺依曼体系结构(Von Neumann Architecture)

简称冯·诺依曼结构,也称为冯·诺依曼模型、普林斯顿结构(princeton architecture),由数学家冯·诺依曼等在ENIAC计算机的影响下于1945年提出,是事实上的第一种完整的计算机体系结构设计。由于现代计算机系统仍基本符合最初的冯·诺依曼结构,所以人们没有抛弃这个概念而是选择持续发展这个概念本身,这导致其在今天几乎能泛指任何体系结构。总而言之可以认为冯·诺依曼结构的核心内容如下,其中包括对几大功能组件的划分,以及对这些组件的更具体设计:

1) 内存(memory):用于存储指令数据。内存只能根据内存地址(address)来完成内存读写,其中每个内存地址都是唯一的整数,所有的内存地址能构成一段连续整数。不同内存地址下的存储容量完全相同;

2) 控制单元(control unit):其中的一部分子组件是程序计数器(program counter)寄存器(register),用于执行指令。其通过将指令转化为控制信号来执行指令。其中程序计数器用于指明要执行的指令所在的内存地址,在执行程序时,程序计数器表示的内存地址默认顺序递增,但其也能根据运算结果或外界条件改变。指令通常按执行顺序存放在内存中;

3) 处理单元(processing unit):其子组件主要是算术逻辑单元(ALU)和一些寄存器,用于处理和运算外部数据。其中ALU的作用是执行各种算术运算或逻辑运算,寄存器能被用于存储ALU的输入与输出;

4) IO设备:输入与输出设备。有时也将其中的外存(external storage)单独作为一类组件;

上面的寄存器属于一种功能简单容量固定的小存储单元,支持简单的读写操作。不同名称的寄存器功能基本相同,名称只用于区分其具体用途。冯·诺依曼结构的核心思想是存储程序(stored-program),即指令和数据无差别的位于内存。存储程序是很先进的思想,但其也存在缺点,比如程序可能把自身当数据删掉,这意味着信息安全(information security)问题。另外由于数据和指令无差别的共享“传输通道”,所以内存容量在随技术发展不断提升的同时,内存传输速度却无法“等比例”提升,这被称为冯·诺依曼瓶颈,缓解方法有使用高速缓存(cache)哈佛结构(harvard architecture)等。从分类的角度来看,哈佛结构只是比较特殊的冯·诺依曼结构,并非一种完全不同的体系结构,其特点是数据和指令被分开存储和分开传输

 

冯·诺依曼体系结构的演化

回顾冯·诺依曼结构的整个发展历程,其整体发展方向包括但不限于如下几点:

1) 从以处理单元为中心发展为以内存为中心:即组件间的数据传输路径从以经过处理单元为主发展为以经过内存为主。这种数据传输路径更加的合理,因为其能够允许更多组件并行工作;

2) 从集中控制发展为分散控制:早期各个组件的速度都很慢,通常使用一个控制单元统一进行管理。现在各个组件的速度差异很大,原本统一的控制单元逐步被分散集成到各个组件内部,很多组件内部都有自己的控制单元;

3) 从串行体系结构发展为并行体系结构:简单来说即发展为能同时执行更多子任务;

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部