type
date
slug
summary
tags
category
password
status
icon
一、计算机发展历程
1. 计算机系统的组成
计算机系统=硬件+软件
- 硬件:计算机的实体,如主机、外设等
- 软件:由具有各类特殊功能的程序组成
2. 硬件的发展

3. 软件的发展
- 系统软件:用来管理整个计算机系统
- 应用软件:按任务需要编制成的各种程序
4. 目前的发展趋势
- 微型计算机向更微型化、网络化、高性能、多用途方向发展(微型计算机的发展以微处理机技术为标志)
- 巨型机向更巨型化、超高速、并行处理、智能化方向发展
二、计算机系统层次结构
1. 计算机硬件的基本组成
(1)冯诺依曼结构

特点:
- 采用"存储程序"的工作方式
- 将指令以二进制代码的形式事先输入计算机的主存储器,然后按其在存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其他指令,直至程序执行结束
- 计算机由五大部件组成
- 输入设备,输出设备,存储器,运算器,控制器
- 指令和数据以同等地位存储在存储器中,并按地址寻问
- 指令和数据均以二进制代码表示
- CPU 区分指令和数据的依据是指令周期的不同阶段
- 数据由指令的地址码给出
- 指令 = 操作码 + 地址码
- 操作码用来表示操作的性质
- 地址码用来表示操作数在存储器中的位置
- 指令在存储器内按顺序存放。
- 通常,指令是顺序执行的,在特定条件下可根据运算结果或根据设定的条件改变执行顺序
- 以运算器为中心,输入输出设备通过运算器与存储器传送数据
- 是单处理机
- 基本工作方式是控制流驱动方式
(2)现代计算机结构

特点:
- 以存储器为核心
- 计算机 = 主机 + 输入/输出设备
- 主机 = CPU + 主存
- CPU = 运算器 + 控制器
- 控制器:指挥各部件使得程序执行
- 运算器:计算机的执行部件,进行算术运算和逻辑运算
- 存储器 = 主存 + 辅存,存放数据和指令
- 主存储器(内存):CPU 可直接访问
- 工作方式:按存储单元的地址进行存取(按地址存取方式)
- 辅助存储器:调入主存后,才可被 CPU 访问
- I/O 设备 = 输入设备 + 输出设备
- 输入设备:将信息转换为机器能够识别的形式
- 输出设备:将结果转换为人们熟悉的形式
2. 计算机的功能部件
(1)存储器
基本组成:
- 存储体:存放二进制信息,有许多存储单元组成
- 地址寄存器(MAR):存放访存地址,经过地址译码后找到所选的存储单元
- 可用于寻址,位数反映最多可寻址的存储单元的个数
- MAR 为 10 位,则最多 $2^{10}=1024$ 个存储单元,记为 1 K
- MAR 的长度与 PC 的长度相等
- 数据寄存器(MDR):暂存要从存储器中读或写的信息
- 位数 = 存储字长
- 时序控制逻辑:用于产生存储器操作所需的各种时序信号相关概念:

- 存储元:即存储二进制的电子元件,每个存储元可存 1 bit
- 存储单元:每个存储单元存放一串二进制代码,包含若干存储元
- 存储字:存储单元中二进制代码的组合
- 存储字长:存储单元中二进制代码的位数
- 机器字长:计算机能一次处理的二进制代码长度
- 指令字长:指令的二进制长度
- 数据字长:数据总线一次能并行传送信息的次数

(2)运算器
相关概念:
- ALU:算术逻辑单元,是运算器的核心,用电路实现各种算数运算、逻辑运算
- ACC:累加器,用于存放操作数,或运算结果
- MQ:乘商寄存器,在乘,除计算时用于存放操作数或运算结果
- X:通用的操作数寄存器,用于存放操作数以上是必须具备的
- IX:变址寄存器
- BR :基址寄存器
- PSW:程序状态寄存器,也称标志寄存器,用于存放 ALU 运算得到的一些标志信息或处理机的状态信息(结果溢出、进位、错位、结果负等)


(3)控制器
相关概念:
- PC:程序计数器,存放下一条指令的地址,并跟踪下一条要执行的指令的地址
- IR:指令寄存器:存放当前正在执行的指令,其内容来自主存储器的 MDR
- 操作码 OP (IR) 送至 CU
- 地址吗 Ad (IR) 送往 MAR,用以取操作数
- CU:控制单元,分析指令,给出控制信号

(4)输入设备
(5)输出设备
3. 计算机系统的细节
(1)系统组成

- CPU:中央处理器
- PC:程序计数器
- MAR:存储器地址寄存器
- ALU:算术逻辑部件
- IR:指令寄存器
- MDR:存储器数据寄存器
- GPRs:通用寄存器组(由若干通用寄存器组成,早期就是累加器)
(2)指令的执行
完成一条指令:
- 取指令 PC,分析指令 IR,执行指令 CU
- 取指 PC + IR,执行 CU
- 开始时,将第一条指令地址放到 PC 中
- 将 PC 的指令存到 MAR 中,发出读命令,读 MAR 里面的内容,然后存到 MDR 中,再把 MDR 的指令放到 IR 中
- 翻译 IR 的操作性质
- 取操作数
- 将操作数送往运算器,进行运算
- 送结果到寄存器中或者送到内存
- PC 加一

(3)计算机的工作过程







三、计算机软件
1. 两类软件
- 系统软件:管理计算机系统的硬件资源,向上层应用程序提供服务
- 如:操作系统、网络服务程序、语言处理程序、数据库管理系统、程序设计语言、分布式软件系统
- 数据库系统不是系统软件
- 应用软件:按应用场景需要编制成的各种程序,直接为用户提供服务
翻译程序:将高级语言程序转换为机器语言程序
- 汇编程序(汇编器):将汇编语言程序翻译为机器语言程序
- 解释程序(解释器):将源程序中的语句按执行顺序逐条翻译成机器指令并立即执行(每次执行都需翻译)
- 编译程序(编译器):将高级语言程序翻译成汇编语言或机器语言程序(只需翻译一次)
3. 软件和硬件的逻辑功能等价性
同一个功能,既可以用硬件实现(性能高成本高),也可以用软件实现(性能低成本也低)
- 对于乘法运算,可以设计一个专门的硬件电路实现乘法运算
- 也可以用软件的方式,执行多次加法运算来实现
4. 指令集体系结构(ISA)
- 软件和硬件之间的界面
- 设计计算机系统的ISA,就是要定义一台计算机可以支持哪些指令,以及每条指令的作用是什么、每条指令的用法是什么
- ISA 是指软件能够感知到的部分,也称软件可见部分
四、计算机系统的层次结构

- 微程序机器层:由硬件直接执行微指令
- 传统机器语言层:用微程序解释机器指令
- 操作系统层:用机器语言解释操作系统
- 汇编语言层:用汇编程序翻译成机器语言程序
- 高级语言层:用编译程序翻译成汇编语言程序
- 下层是上层的基础,上层是下层的拓展
- 没有配备软件的纯硬件系统称为裸机
- 第 3~5 层称为虚拟机,软件实现的机器比较:
- 计算机体系结构:机器语言程序员所见到的计算机系统的属性概念性的结构与功能特性
- 指令系统、数据类型、寻址技术、I/O机理
- 如何设计硬件与软件之间的接口
- 有无乘法指令
- 计算机组成原理:实现计算机体系结构所体现的属性,对程序员“透明”(看不见)
- 具体指令的实现
- 如何用硬件实现所定义的接口
- 如何实现乘法指令
五、计算机系统的工作原理
1. 从 c 语言源程序到可执行文件
预处理 -> 编译 -> 汇编 -> 链接

- hello. c:源程序(文本)
- hello. i:修改了的源程序(文本)
- hello. s:汇编程序(文本)
- hello. o:可重定位目标程序(二进制)
3. 指令执行过程的描述
以取数指令为例
- 取指令:PC -> MAR -> M -> MDR -> IR
- 根据 PC 取指令到 IR
- 分析指令:OP (IR) -> CU
- 指令译码并送出控制信号
- 执行指令:Ad (IR) -> MAR -> M -> MDR -> ACC
- 取数操作
六、计算机的性能指标
1. 字长
- 机器字长(字长):计算机进行一次整数运算所能处理的二进制的位数
- 字长一般等于通用寄存器的位数或 ALU 的宽度
- 字长越长,数的表示范围越大,计算精度越高
- 字长通常选定为字节(8 位)的整数倍
2. 数据通路带宽
- 外部数据总线一次能并行传送信息的位数,非 CPU 内部数据总线宽度
- 各个子系统通过数据总线连接形成的数据传送路径称为数据通路
3. 主存容量
- 主存储器所能存储信息的最大容量
- 通常以字节来衡量【1 B=8 bit】
- 也可以用 $字数*字长$ 表示
- MAR 为 16 位,$2^{16}=65536$,即存储体内有 65536 个存储单元(可称作 64 K,1 K=1024)
- MDR 为 32 位,表示存储容量为 $64K*32$ 位
4. 吞吐量和响应时间
- 吞吐量:系统在单位时间内处理请求的数量
- 响应时间:指用户向计算机发送一个请求,到系统对该请求做出响应并获得所需结果的等待时间
- 通常包括 CPU 时间和等待时间
5. 主频和 CPU 时钟周期
- 主频(CPU 时钟频率):机器内部主时钟的频率,代表每秒执行多少个时钟周期数
- 值越大代表一个操作所需时间越少,CPU 运行速度越快
- CPU 时钟周期:机器内部主时钟脉冲信号的宽度,节拍脉冲或 T 周期,即主频的倒数
- 是 CPU 工作的最小的时间单位,每个动作至少需要 1 个时钟周期
- 时钟脉冲信号
- 时钟周期 = 1 / 主频,如主频为 2.4 GHz,则时钟周期 = 1 / 2.4 G 秒
6. CPI
- 执行一条指令所需要的时钟周期数
- CPI 是一个平均值
- CPI 与系统结构,指令集,计算机组织有关,与时钟频率无关
- $CPI=\frac{时钟周期数量}{指令数量}$
- IPS:每秒执行多少条指令,$IPS=\frac{主频}{平均CPI}$
7. CPU 执行时间
- 运行一个程序所花费的时间
- $执行时间= 时钟周期数量×时钟周期=\frac{时钟周期数量}{主频}=\frac{指令条数×CPI}{主频}$
8. MIPS
- MIPS:每秒执行多少百万条指令【Million instructions per second】
- $MIPS=\frac{指令条数}{执行时间×10^6}=\frac{主频}{CPI×10^6}$
- MFLOPS:每秒执行多少百万次浮点运算
- $MFLOPS = \frac{浮点操作数次数}{执行时间 × 10^6}$
- GFLOPS:每秒执行多少十亿次浮点运算
- $GFLOPS = \frac{浮点操作数次数}{执行时} × 10^9$
- TFLOPS:每秒执行多少万亿次浮点运算
- $TFLOPS = \frac{浮点操作数次数}{执行时间 × 10^{12}}$
9. 其他换算
- $1 kb = 2^{10} b=1024 b$,1 B【字节】=8 bit【位】
- 描述速率,频率时: $1 T= 10^3 G=10^6 M= 10^9 K$
- 作者:救赎之旅
- 链接:https://jiushuself.nyc.mn/article/68c7acf1-8b64-4c66-8cad-9938e5e24967
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
