文章目录
- 计算机系统体系结构
- 1. 什么是计算机体系结构
- 术语解释
- 计算机系统体系结构所涉及的内容
- 简单通用计算机结构
- 计算机指令
- 程序执行过程
- 时钟
- 2. 计算机的发展
- 机械计算机
- 机电式计算机
- 早期电子计算机
- 微机和PC革命
- 移动计算和云计算
- 摩尔定律
- 乱序执行
- 3. 存储程序计算机
- 寄存器传输语言(RTL)
- 存储程序的概念
- 指令格式
- 三操作指令
- 两地址指令
- 单地址指令
- 计算机分类
- 4. 计算机系统概览
- 存储层次
- 总线
计算机系统体系结构
1. 什么是计算机体系结构
计算机体系结构描述了程序员视角中的计算机,它是一个抽象的计算机模型,定义了计算机的指令集、寄存器、数据类型等。体系结构与计算机的实际硬件实现(计算机组成)是分开的,它关注的是如何高效地执行程序,而不考虑硬件的具体实现细节。
术语解释
- 指令集体系结构(ISA):描述了程序员看到的计算机的抽象视图,定义了汇编语言和编程模型。
- 微体系结构:描述了一种指令集体系结构的具体实现方式,关注计算机的内部设计。
- 系统体系结构:关注包括处理器、存储器、总线和外设在内的整个系统。
计算机系统体系结构所涉及的内容
- 中央处理单元(CPU):执行程序的部件。
- 存储器系统:保存程序和数据,包括Cache、主存、辅存等。
- 输入输出子系统:使CPU与外部设备(如显示器、打印机)通信。
简单通用计算机结构
- 存储器层次:包括Cache、主存、辅存等,用于提高数据访问速度。
- 总线:连接计算机各功能单元,允许数据交换。
- 寄存器:CPU内部的高速存储单元,用于存放数据。
计算机指令
- 基本指令:如MOV(移动)、LOAD(加载)、STORE(存储)、ADD(加法)、TEST(测试)、BEQ(等于时跳转)等。
程序执行过程
- 指令执行:CPU从存储器读取指令,执行后可能需要读取数据,最后可能写回结果。
- 指令格式:包括操作码和操作数地址,操作数可以是寄存器或存储器地址。
在上图中,从存储器中读出一条Z=X+Y的指令,将其发送给解释单元,解释单元产生控制信号,驱动这条指令的执行。假定这个程序的功能是从存储器读出两个数据(X和Y),将它们相加,然后写回存储器。
要执行这个程序,CPU必须首先从存储器中取出一条指令,在CPU分析或解码这条指令后,从存储器中读出这条指令所需的所有数据。
- 第一条指令,LOAD X,从存储器中读出变量X的值,并将它暂存在寄存器中。
- 第二条指令,LOAD Y,从存储器中读出变量Y的值,并保存在另一个寄存器中。
- 第三条指令,Z=X+Y,将两个寄存器的内容相加,并将结果保存在第三个寄存器中。
- 第四条指令,STORE Z,将加法的结果写回存储单元Z。
时钟
绝大多数数字电子电路都带有一个时钟,用以生成连续的间隔固定的电脉冲流。
之所以被称作时钟,是因为可用这些电脉冲来计时或确定计算机内所有事件的顺序。如,处理器可能会在每一个时钟脉冲到来时执行一条新指令
2. 计算机的发展
机械计算机
机械计算机的历史可以追溯到古代,当时的人们使用算盘进行计算。但真正意义上的机械计算机出现在19世纪,由查尔斯·巴贝奇设计的差分机和分析机。尽管它们从未被完全制造出来,但它们的设计理念影响了计算机的发展。
机电式计算机
机电式计算机是计算机历史上的一个重要阶段,它们使用电气和机械设备进行计算。例如,赫尔曼·霍尔雷斯设计的塔布拉图机,这是一种自动化的打孔卡机械计算机。另一个例子是哈佛马克一号,这是一种大型电动机械计算机。
早期电子计算机
二战期间,计算机技术取得了重大突破,出现了一批电子计算机。例如,英国的科尔斯斯机,用于破解德国的恩尼格玛密码。美国的ENIAC(电子数值积分计算机),是世界上第一台通用电子计算机。
微机和PC革命
20世纪70年代,微处理器的发明使得计算机可以变得更小、更便宜、更强大。这使得个人计算机(PC)成为可能。IBM的PC和苹果的Apple II是这个时期的代表作。
20世纪80年代和90年代,微软的Windows操作系统和因特网的普及,使得PC进一步普及,成为日常生活和工作的必需品。
移动计算和云计算
21世纪,移动设备(如智能手机和平板电脑)和云计算的兴起,进一步改变了计算的方式。现在,我们可以随时随地进行计算,而且可以利用云计算的强大计算能力进行大规模的数据处理。
计算机的发展仍在继续,例如量子计算、人工智能等新技术正在改变我们的生活和工作。
摩尔定律
摩尔定律是由英特尔公司的创始人之一戈登·摩尔在1965年提出的。他预测,集成电路上可容纳的晶体管数量,大约每两年会翻一番。这意味着计算机的性能大约每两年会翻一番。这个预测在过去的几十年中基本上得到了验证,推动了计算机技术的快速发展。
然而,近年来,随着晶体管尺寸接近物理极限,摩尔定律的速度已经开始放缓。这引发了对新计算技术,如量子计算和神经计算的研究。
乱序执行
乱序执行是一种在计算机中提高指令执行效率的技术。在乱序执行中,处理器会在指令流中查找可以并行执行的指令,然后按照优化的顺序执行这些指令。这样可以充分利用处理器的计算资源,提高执行效率。
乱序执行是现代超标量和超线程处理器的重要技术之一。它需要复杂的硬件支持,包括指令调度器、寄存器重命名和重排序缓冲区等。
乱序执行技术使得现代处理器能够在单个时钟周期内执行多个指令,大大提高了处理器的性能。但是,它也带来了一些挑战,例如处理器设计的复杂性和功耗问题。
3. 存储程序计算机
这幅图叫作存储器映射,它展示了信息在存储器中的存放位置。它是存储器的一幅快照,因为它表示存储器在某个特定时刻的状态。存储器映射也包含程序使用的变量和数字串。
存储器中的每个位置要么保存了指令要么保存了数据元素。第一列中的数字0~37为地址,代表了数据元素和指令在存储器内的存放位置(地址从0而不是1开始,因为0是一个合法的标识符)。
程序位于地址0~16的位置,变量位于地址17~20的位置,而数据(串)位于地址21~37的位置。可以将计算机的存储器视作一个数据元素的表格——每个元素的位置就是它的地址。例如,地址为4的存储单元保存了指令“将Max_Run置为1”而地址为20的存储单元保存了元素Max_Run的值。17行及其后面的各行使用了粗体字,表明它们保存了变量以及要处理的数串。
寄存器传输语言(RTL)
使用RTL描述计算机内部操作。
在RTL语言中,用方括号[ ]表示存储单元的内容,如
[15] = Max_Run
含义是:地址为15的存储单元保存了变量Max_Run的值 左箭头符号表示数据传送操作,如
[15]<–[15] + 1
含义是:将地址为15的存储单元的值加1,并将结果写回地址为15的存储单元
存储程序的概念
下面的伪代码描述了存储程序计算机的基本操作:
存储程序计算机
程序计数器指向存储器中的第一条指令
REPEAT
从程序计数器所指的存储单元中读出指令
修改程序计数器,使之指向下一条指令
将从存储器中取出的指令解码
执行指令
FOREVER
End
从存储器中取出每条指令都需要进行一次访存操作(即读存储器)。
可以用下面的伪代码描述“执行指令”这一动作:
执行指令
IF 指令需要使用数据
THEN 从存储器中读这个数
END_IF
完成指令定义的操作
IF 指令要将数据写回存储器
THEN 将数据写回存储器
END_IF
End
执行一条指令需要至少两次访存,第一次访存是读取指令,第二次访存要么从存储器读出指令需要的数据,要么将它之前的指令产生的或修改过的数据写回存储器。
指令格式
三操作指令
ADD P,Q,R是一条典型的三操作数指令,P、Q、R是三个存储单元地址的符号名。
这个三操作数指令格式用RTL表示为:
如图,描述了指令的4个字段与CPU、存储器以及指令的执行方式之间的关系
两地址指令
有些计算机实现了两地址指令,其格式为:
Address2为源操作数,Address1既是源操作数也是目的操作数。
指令ADD P,Q的RTL定义为:
- 两地址指令会破坏它的一个操作数,也就是说,会用结果替换源操作数P在实际计算机中。
- 一般不允许同一条指令中使用两个存储地址,大多数计算机都规定一个地址是存储器地址,另一个地址是寄存器。
单地址指令
有些计算机实现单地址指令,其格式为:
指令中只提供了一个操作数地址,而指令却需要至少两个地址,处理器不得不使用一个不需要显示地址的第二操作数,第二个操作数来自CPU内一个叫累加器(accumulator)的寄存器。
如图,描述了一条单操作数指令执行过程中的信息流,操作结果将一直保存在寄存器中,直到另一条指令将它送入存储器。
计算机分类
可以按照计算机的指令处理数据的方式对计算机分类
- 存储器-存储器型:一条指令能够从存储器中读出源操作数,对数据完成某个操作,并将结果保存在存储器中
- 寄存器-存储器型:能够处理两个数据,其中一个位于存储器中,另一个位于寄存器中,结果要么被写回存储器,要么被写回寄存器,如Intel IA32 CPU体系结构
- 寄存器-寄存器型:只能对寄存器中的内容进行操作,这些计算机必须通过LOAD指令将数据读入寄存器并使用STORE指令将数据从寄存器送回存储器。由于LOAD 和STORE操作是仅有的存储器访问指令,这些计算机也被称为load/store 型计算机,如ARM和MIPS CPU体系结构。
4. 计算机系统概览
存储层次
-
寄存器:存放处理器的工作数据
-
Cache:缓存常用数据的快速存储器
-
DRAM:存放工作数据
-
硬盘:保存程序和数据
总线
节点之间的互连通过总线完成,公共总线将所有单元连接在一起,只有一条高速数据通路,每个单元通过一个接口与这条通路相连。
缺点:
每次只有唯一一个设备能够与其它设备通信,因为这里只有一条信息通路。如果两个设备同时请求使用总线,它们不得不去竞争总线的控制权。用术语仲裁来描述多个设备竞争同一资源的过程。