计算机组成原理-Part1
计算机组成原理-Part1——计算机系统概述
[TOC]
开篇
CPU、内存、硬盘上都有针脚。这些针脚就是用来接收高低电平的电信号的。
传递电信号就需要电脑主板上的印刷电路,这是可以导电的。
计算机体系结构 vs 计算机组成原理
计算机体系结构:机器语言程序员所见到的计算机系统的属性概念性的结构与功能特性(指令系统、数据类型、寻址技术、I/O机理)
如何设计硬件与软件之间的接口。如:有无乘法指令
计算机组成原理:实现计算机体系结构所体现的属性,对程序员“透明”(具体指令的实现)
如何用硬件实现所定义的接口。如:如何实现乘法指令
计算机发展历程(408大纲已删)
计算机系统
软件
系统软件:用来管理整个计算机系统。
例如:操作系统、数据库管理系统(DBMS)、标准程序库(编程使用库)、网络软件(实现网络协议的模块)、语言处理程序(将高级语言转换成低级语言)、服务程序(调试程序)等。
应用软件:按任务需要编织成的各种程序。
硬件
计算机性能的好坏取决于“软”、“硬”件功能的总和。
硬件发展历程
发展阶段 | 时间 | 逻辑元件 | 速度(次/秒) | 内存 | 外存 |
---|---|---|---|---|---|
第一代 | 1946-1957 | 电子管 | 几千-几万 | 汞延迟线、磁鼓 | 穿孔卡片、纸带 |
第二代 | 1958-1964 | 晶体管 | 几万-几十万 | 磁芯存储器 | 磁带 |
第三代 | 1964-1971 | 中小规模集成电路 | 几十万-几百万 | 半导体存储器 | 磁带、磁盘 |
第四代 | 1972-现在 | 大规模、超大规模集成电路 | 上千万-万亿 | 半导体存储器 | 磁盘、磁带、光盘、半导体存储器 |
- 发展趋势
- 更微型、多用途
- 更巨型、超高速
计算机系统层次结构
计算机硬件的基本组成
早期冯诺依曼结构
- 存储程序:将指令以二进制代码的形式事先输入计算机的主存储器,从首地址开始顺序执行指令至结束。
- 针对问题:虽然早期冯诺依曼机的计算速度很快,但是 ENIAC 需要手动接线来控制计算,因此速度并不理想。
- 在计算机系统中,软件和硬件在逻辑上是等效的。
- 冯·诺依曼计算机的特点:
- 计算机由五大部件组成:输入设备、输出设备、主存储器、运算器、控制器
- 指令和数据以同等地位存于存储器,可按地址寻访
- 指令和数据用二进制表示
- 指令由操作码和地址码组成
- 存储程序被首次提出
- 以运算器为中心(输入/输出设备与存储器之间的数据传送通过运算器完成)
现代计算机结构
- 现代计算机:以存储器为中心
- CPU=运算器+控制器
- 计组中的主机只包括:CPU 和主存。硬盘等不属于主机。
认识各个硬件部件
主存储器
- MAR(Memory Address Register):存储地址寄存器,专门存放单次操作的数据地址
- MDR(Memory Data Register):存储数据寄存器,专门存放单次操作的数据内容
- 存储单元:每个存储单元用来存放一串二进制代码。每个存储单元对应一个地址信息(即 MAR 中应当指明的信息)
- 存储字(word):每个存储单元中的一串二进制代码,就是一个存储字
- 存储字长:存储单元/每个存储字中,包含的二进制代码的位数。*长度一般为:k * 8 bit*
- 存储元:即存储二进制的电子元件(电容),每个存储元可存 1bit
- 数据在存储体内按地址存储
- MAR 位数反映存储单元的个数:MAR=4位 -> 总共有 2^4^ 个存储单元
- MDR 位数 = 存储字长:MDR = 16位 -> 每个存储单元可存放 16bit,1个字(word) = 16bit
- 易混淆:
- 1个字节(Byte)= 8bit
- 1B = 1个字节,1b = 1个bit
- 字(word)的长度由机器本身决定
运算器
- 运算器:用于实现算术运算(如:加减乘除)、逻辑运算(如:与或非)
- ACC:累加器,用于存放操作数,或运算结果
- MQ:乘商寄存器,在乘、除运算时,用于存放操作数或运算结果
- X:通用的操作数寄存器/通用寄存器,用于存放操作数。通常有多个,不过只需要一个就可以完成大部分运算
- ALU:(※核心元件)算术逻辑单元,通过内部复杂的电路实现算数运算、逻辑运算
控制器
- CU(Control Unit):(※核心元件)控制单元,分析指令,给出控制信号
- IR(Instruction Register):指令寄存器,存放当前执行的指令
- PC(Program Counter):程序计数器,存放下一条指令地址,有自动加1功能
计算机工作流程
- 工作过程:
- 初始状态:指令、数据存入主存,PC 指向第一条指令
- PC -> MAR -> 从存储体中取指令放入 MDR -> 由于处于取指令周期,将指令数据放入 IR -> 由 CU 分析指令(前半段二进制码) -> 变量地址(后半段二进制)放入 MAR -> 从存储体中取指令放入 MDR -> 由于执行指令周期,将变量数据放入运算器寄存器中 -> 执行运算并将结果放入 ACC -> ……
- 注:现在的计算机通常把 MAR、MDR 也集成在 CPU 内
计算机系统的多级层次结构
五层机器结构
- 下层是上层的基础,上层是下层的扩展
- 高级语言机器
- 汇编语言机器
- 操作系统机器
- 传统机器
- 微程序机器
三个级别语言
- 编译、汇编、解释程序,可统称“翻译程序”
- 编译程序:将高级语言的源程序一次性翻译成汇编语言,或者直接翻译为机器语言的执行程序(只需翻译一次)
- 解释程序:将高级语言的源程序逐语句翻译成机器语言,并立即执行。(每次执行都要翻译)
- 汇编程序:将汇编语言翻译成机器语言。
计算机的性能指标
存储器
- MAR位数反映存储单元的个数(最多支持多少个)
- MDR位数=存储字长=每个存储单元的大小
- 总容量 = 存储单元个数×存储字长 bit = 存储单元个数×存储字长/8 Byte (1Byte=8bit)
- Eg:MAR为 32 位,MDR 为 8 位;总容量 = 2^32^ * 8 bit = 4 GB
注:此处描述文件、容量大小等所用的 K、M、G、T
2^10^B:KB 2^20^B:MB 2^30^B:GB 2^40^B:TB
CPU
- CPU 主频(时钟频率):CPU 内数字脉冲信号振荡的频率。
- 1s 内进行的数字脉冲信号次数
- CPU 主频 = 1/CPU 时钟周期
- 单位:赫兹,Hz
- CPU 时钟周期:一次脉冲信号的周期。
- 单位:微秒、纳秒
- CPI(Clock cycle Per Instruction):执行一条指令所需的时钟周期数
- 不同的指令,CPI 有可能不同
- 相同的指令,根据不同 CPU 的实现方式不同、当前内存负载不同等等一系列状态,CPI 也可能不同
- 可以影响 CPI 的因素太多,一般只讨论平均 CPI
- 执行一条指令的耗时 = CPI × CPU时钟周期
- CPU 执行时间(整个程序的耗时)= CPU时钟周期数 / 主频 =(指令条数 * CPI)/ 主频
- IPS( Instructions Per Second ):每秒执行多少条指令
- IPS = 主频 / 平均 CPI
- 度量指标时经常使用 KIPS、MIPS
- FLOPS(Floating-point Operations Per Second):每秒执行多少次浮点运算
- 度量指标时经常使用 KFLOPS、MFLOPS、GFLOPS、TFLOPS、PFLOPS、EFLOPS、ZFLOPS
注:此处频率、速率常用的 K、M、G、T 为数量单位
K=Kilo=千=10^3^,M=Million=百万=10^6^,G=Giga=十亿=10^9^ ,T=Tera=万亿= 10^12^,P=10^3^T,E=10^3^P,Z=10^3^E
系统整体
数据通路带宽:数据总线一次所能并行传送信息的位数(各硬件部件通过数据总线传输数据)
- CPU <=> 主存储器 <=> I/O 设备。这之间的数据传输都需要依靠数据总线传输。
吞吐量:指系统在单位时间内处理请求的数量。
- 取决于信息能多快地输入内存,CPU 能多快地取指令,数据能多快地从内存取出或存入,以及所得结果能多快地从内存送给一台外部设备。
- 这些步骤中的每一步都关系到主存,因此,系统吞吐量主要取决于主存的存取周期。
响应时间:指从用户向计算机发送一个请求,到系统对该请求做出响应并获得它所需要的结果的等待时间。
- 通常包括 CPU 时间(运行一个程序所花费的时间)与等待时间(用于磁盘访问、存储器访问、I/O 操作、操作系统开销等时间)。
基准程序:是用来测量计算机处理速度的一种实用程序,以便于被测量的计算机性能可以与运行相同程序的其它计算机性能进行比较。
思考:
- Q:主频高的 CPU 一定比主频低的CPU快吗?
- A:不一定,如两个 CPU,A 的主频为 2GHz,平均 CPI=10;B 的主频 1GHz,平均 CPI=1…
- Q:若 A、B 两个 CPU 的平均 CPI 相同,那么 A 一定更快吗?
- A:也不一定,还要看指令系统。如:A 不支持乘法指令,只能用多次加法实现乘法;而 B 支持乘法指令。
- Q:基准程序执行得越快说明机器性能越好吗?
- A:基准程序中的语句存在频度差异,运行结果也不能完全说明问题,要看硬件具体的运用场景
习题课
1.1.4
电子管 -> 晶体管(开始出现高级语言 FORTRAN 和操作系统) -> 中小规模集成电路 -> 大规模集成电路
略
略
如果一个元器件可以表示 n 种状态,就可以使用 n 进制的信息位。
制约运算速度的主要因素:进位(串行部分)
要看处理的对象,才能比较是否方便(如开关、汉字个数)
1.2.6
- 重点在于完整,计算机系统包括软件和硬件
- 冯诺依曼机是控制流驱动:先分析指令,再取数据
- 冯诺依曼机特点:存储程序
- 区分指令还是数据,是根据指令周期的不同阶段
- 软硬件逻辑上等效/具有等效性
- 同 6
- 地址译码器在内存,MAR 现在集成在 CPU 中
- 运算器不包含地址寄存器
- 寄存器 > cache > 主存
- 地址空间由地址码长度决定,与存储字长无关
- 略
- 计算机软件
- 系统软件(保证计算机正确运行的软件)
- 操作系统
- 编译程序(语言处理软件)
- 连接程序(服务型程序)
- 数据库管理系统(DBMS)
- 应用软件(为了解决某个应用领域中的问题而编制的软件)
- 文本处理
- 数据库系统(DBS)
- 系统软件(保证计算机正确运行的软件)
- 软硬件等效 ≠ 等价(效果一样,但是设计思想和代价都不一样)
- 略
- 同 14
- 相联存储器既可以按地址寻址,也可以按内容寻址
- 常用于段表、页表、块表、Cache 存放块地址
- 下层是上层的基础,上层是下层的扩展
- 有且仅有机器语言可以直接执行
- 数据由指令的地址码给出
1.3.3
数据通路、编译优化、时钟频率
速度指标
- 标量机顺序执行,向量机并行执行,一般向量机更快
同 2
同 1.2.6 的 9
机器字长如上,数据运算的基本单位长度;寄存器的基本单元是D触发器;字是 8 的倍数,不固定。
同 4;数据字长:数据总线一次能并行传输的位数,不一定等于 MDR。
- 若存储字长 16 位,数据字长 4 位,则分 4 次发送
多少位的计算机,则代表多少位的机器字长、多少位的寄存器
同 7
IR、MDR、MAR 对用户透明
时钟频率会影响程序运行速度,与每条指令所需多少时钟周期无关
- 系统结构、组织,RISC or CISC,可以影响 CPI
用户角度 -> 交互 -> 吞吐率
兼容:指计算机软件或硬件的通用性,即使用或运行在某个型号的计算机系统中的硬件,软件也能应用于另外一个型号的计算机系统时,则称这两台计算机在硬件或软件上存在兼容性。
知识储备!
- 字:计算机进行数据处理时,一次存取、加工和传送的数据长度,不固定。
IPS = 主频 / CPI
速度 +50% -> 时间 / 150%
程序执行时间 = CPI × 指令条数 × 时钟周期
运行时间 = 指令数 × CPI / 主频
指令系统的组织逻辑:
- 不同的实现方式 -> 不同的 CPI
- 若指令集体系结构(ISA)和实现方式相同 -> CPI 相同
按指令长度分类(指令字长):半字长指令、单字长指令、双字长指令
- 指令寄存器 IR,要能够存储系统中最长的指令
- 定长指令字结构:指令系统中所有指令的长度都相等
- 变长指令字结构:指令系统中各种指令的长度不等
浮点寄存器: