第二章 计算机系统的结构组成与工作原理
1 计算机系统的基本结构与组成
- 计算机体系结构:从程序员角度看到的计算机结构
- 计算机组成:计算机各部件的逻辑结构和连接组成
- 计算机实现:底层的集成电路设计技术、封装技术、电源技术、冷却措施及微组装技术
2 计算机系统的工作原理
2.1 冯·诺依曼计算机架构:
- ①以存储器为中心,五部分组成(运算器、控制器、存储器、输入输出设备);
- ②内部的控制信息和数据信息采用二进制数表示并存在同一存储器中;
- ③按存储程序原理工作,其基本点是指令驱动:编制好的程序(包括指令和数据)预先经由输入设备输入并保存在存储器中;计算机开始工作后,在不需要人工干预的情况下由控制器自动、高速地依次从存储器中取出指令并加以执行。
2.2 模型机系统结构:
基于冯·诺依曼的模型机结构:
- ①总线:按总线传输信息的不同,可分为数据总线(通常双向)、地址总线(通常单向)和控制总线。
- ②存储器子系统:存储器由许多字节单元组成,每个单元具有唯一编号,这个编号称为存储单元地址,其保存的字节信息称为存储单元内容。
要对指定存储单元进行访问,应该首先将该存储单元的地址数据送入地址寄存器,经地址译码产生相应选通信号,并在控制信号的作用下,将存储单元内容读出到数据缓冲器,或将数据缓冲器中的内容写入选定的单元。 - ③输入/输出子系统:用于完成计算机与外部信息的交换。计算机直接相连的外围设备进行数据交换的过程称为输入/输出,而与远方设备进行数据交换的过程称为数据通信。
- ④CPU子系统:运算器、控制器和寄存器集成的超大规模集成电路芯片。
- 运算器:完成各种数据的运算和处理,一般由算数逻辑单元(ALU)、累加器(ACC)、标志寄存器(FR)和暂存器等组成。
- 控制器:是整个微处理器的指挥控制中心。根据程序计数器(PC)指定的地址,CPU首先把指令操作码从存储器中取出来,并由数据总线(DB)输入到指令寄存器(IR)中,然后由指令译码器(ID)分析应该进行什么操作,并通过操作控制器(OC)确定的时序,向相应的部件发出控制信号。
- 寄存器阵列:是CPU中的临时存储单元,又来暂时存放数据和地址。
- 地址和数据缓冲器:用来隔离微处理器的内部和外部总线,并提供附加的驱动能力。
2.3 模型机工作流程:
模型机的工作过程实质是执行程序的过程。每条指令执行的基本过程可以分为取指令、分析指令、执行指令三个阶段。
3 微处理器体系结构的改进
3.1 冯·诺依曼结构的改进
- CPU指令集设计:CISC与RISC技术
- CISC的设计思路:设计人员将复杂指令功能通过微程序实现,再将微程序固化或硬化后交由硬件实现。
- RISC的设计特点:
- ①指令条数少,格式简单,易于译码;
- ②提供足够的寄存器,只允许Load和Store指令访问内存;
- ③指令由硬件直接执行,在单个周期内完成;
- ④充分利用流水线;
- ⑤强调优化编码器的作用。
- 存储器分层子系统:现代计算机系统把容量不同、不同速度的存储器按一定的层次结构组织起来,形成一个统一的存储系统,以解决存储容量、存取速度和价格之间的矛盾。
- 总线与输入/输出子系统:总线是一组传送信息的公共通路,总线上的设备可以分为主设备和从设备。目前常用的输入/输出方式程序控制、中断控制、DMA和I/O处理机。
3.2 并行技术的发展
- 计算机系统可以采取多种措施来提高并行性,其基本思想包括时间重叠、资源重复和资源共享。
- 目前在不同层面实现的并行处理主要包括:
- 系统级并行技术(如多处理器、多磁盘结构);
- 指令级并行技术(如流水线结构);
- 线程级并行技术(如同时多线程SMT处理器);
- 电路级并行技术(如组相联cache、先行进位加法器)
3.3 流水线结构
- 流水线冒险:
- 数据冒险:如后面的计算用到前面的结果。可以采用定向技术或调度技术来处理。
- 结构冒险:硬件资源不够。可以通过加入额外的同类型资源或改变资源的设计来减少或消除。
- 控制冒险:由分支等跳转指令引起。可以通过分支预测及预测执行技术来解决。
3.4 超标量与超长指令字结构
- ①超标量机:通过设置多份流水线硬件并行工作来提高性能。
- ②超长指令字机
3.5 多机与多核结构
- ①多级系统:指由两台以上的计算机经由网络互联、并能够在操作系统的控制下合作解决一个共同问题的计算机系统。
- ②多核系统与多线程技术:将多个处理器集成到单个芯片得到多处理器,同时利用多线程技术,使处理器能并发地执行多个线程,此时的多核芯片称为多线程处理器。
4 计算机主要性能评测指标
4.1 字长
字长是一个基本的微处理器设计决策,指CPU能够完成一次处理(算数运算、逻辑运算、存储、复制等操作)的最大数据宽度。
4.2 存储容量
由CPU的地址总线宽度确定(地址总线宽度为n,则能直接访问空间为:2nB)
4.3 运算速度
- MIPS(每秒百万条指令):MIPS = f(MHz)/CPI
- T(执行时间):T = (IC×CPI)/f(Hz)
f是时钟频率,IC是指令数目,及运行中的程序的指令总数。