① 第一台通用计算机 ENIAC (1946)
② 发展历程
③ 摩尔定律
每平方英寸电路板上的晶体管数量每 18 ~ 24 个月翻一倍。
💐 计算机系统 = 软件 + 硬件
🌸 硬件 = 主机 + 外部设备
🌷 外部设备 = I/O 设备 + 外存
注意 🔔 :
硬盘 / U盘 既是输入设备也是输出设备。
🍀 主机 = CPU + 主存储器
🌹 CPU = 运算器 + 控制器
🌿 运算器 = ALU(算术逻辑单元) + 通用寄存器
🍁 通用寄存器 = ACC(累加数寄存器) + MQ(乘商寄存器) + X(操作数寄存器) + PSW(程序状态字) + BR(基址寄存器) + IX(变址寄存器)
🌼 控制器 = PC(程序计数器) + IR(指令寄存器) + CU(控制单元/操作码译码器)
🌻 主存储器 = M(存储体) + MAR(地址寄存器) + 地址译码器 + MDR(数据寄存器)
注意 🔔 :
MAR 的位数 = 最大存储单元个数 (N 位长的 MAR 可映射到 2N2^N2N 个地址)
MDR 的位数 = 存储字长
🌺 软件 = 运行程序 + 文档
一般求寻址范围有两种题型:
① 直接给出存储器的容量和字长,然后按字节、半字、字、双字寻址。
🌰 例:已知计算机的字长为 32 位,存储器的容量为 1MB,如果按字节、半字、字、双字寻址,寻址范围各为多少?
解:1MB = 8Mbit
按字节寻址,寻址范围为 8Mbit / 8bit = 1M
按半字寻址,寻址范围为 8Mbit / 16bit = 512K
按字寻址,寻址范围为 8Mbit / 32bit = 256K
按双字寻址,寻址范围为 8Mbit / 64bit = 128K
🔔 寻址范围一定不含 B 和 bit 等,因为计算时约掉了。
② 不给出存储容量,只给出地址线和数据线的位数
🌰 例:假设 CPU 有 20 根地址线和 32 根数据线,试问按字节和字寻址,寻址范围分别是多少?
解: 按字节寻址:220=1M2^{20} = 1M220=1M
按字寻址:32 bit = 4 B = 222^222 B 借用 2 根地址线进行字内寻址
220−2=218=256K2^{20-2} = 2^{18} = 256K220−2=218=256K
提出时间 : 1945 年
核心思想:存储程序、二进制表示
内容:
① 计算机 = 运算器 + 存储器 + 控制器 + 输入设备 + 输出设备
② 指令和数据以 同等地位 存放在存储器中,并可按 地址访问 存储器。
③ 指令和数据均用 二进制 代码表示。
④ 指令 = 操作码 + 地址码
⑤ 指令 在存储器中 顺序存放,通常是顺序执行,特定情况下可改变顺序。
⑥ 计算机 以运算器为中心,输入/输出设备与存储器之间的数据传送通过运算器完成。
注意 🔔 :
1️⃣ 冯 · 诺依曼计算机中指令和数据均以二进制的形式存放在存储器中,CPU 区分它们的依据是:
① 指令周期的不同阶段:取指阶段 取出的是指令,其他阶段取出的是数据
② 取指令和取数据时地址的来源是不同的:指令地址来自于程序计数器,数据地址来自于地址形成部件或指令的地址码字段
2️⃣ 为适应发展的需要,现代计算机组织结构已转化为 以存储器为中心:
计算机软件通常分为两大类:系统软件和应用软件
计算机的编程语言通常分为三大类:机器语言、汇编语言和高级语言
由于计算机不能直接执行高级语言程序,需要对高级语言进行解释或编译:
“用嘴来解释,用手来编译。”
① 解释不生成目标代码,而编译生成目标代码。
② 编译比解释快。
① 存储容量
存储容量 = 存储单元个数 ×\times× 存储字长
② 机器字长 :进行一次整数运算所能处理的最大二进制位数
机器字长 = 通用寄存器的长度 = 微处理器的位数
③ 吞吐量 :单位时间内的数据处理量,主要取决于主存的存取周期
④ 主频 :每秒有多少个时钟周期
注意 🔔 :
能缩短程序执行时间的措施是:
❶ 提高主频 (缩短时钟周期)
❷ 优化数据通路结构(更快地为程序执行准备数据)
❸ 对程序进行编译优化(减少指令数)
⑤ 时钟周期:主频的倒数,CPU 中最小的时间单位
注意 🔔 :
指令周期 > CPU 周期 > 时钟周期
⑥ CPI (Clock Cycle Per Instruction) : 执行一条指令所需的时钟周期数
🌰 例:
假定机器 M 的时钟频率为 200MHz, 程序 P 在机器 M 上的执行时间为 12 s。对 P 优化时,将其所有乘 4 指令都换成了一条左移 2 位的指令,得到优化后的程序 P′P^{'}P′。若在 M 上乘法指令的 CPI 为 102, 左移指令的 CPI 为 2, P 的执行时间是 P′P^{'}P′ 执行时间的 1.2 倍,问 P 中乘法指令的条数为?
解: P 的执行时间为 12 s, P′P^{'}P′ 的执行时间为 10 s,P 比 P′P^{'}P′ 多执行 2 s, 即多了 2 ×\times× 200M = 400M 个时钟周期。而每条乘法指令比左移指令需要多执行 102 - 2 = 100 个时钟周期,因此 P 中乘法指令的条数为 400M / 100 = 4M = 400 万。
⑦ MIPS (Million Instructions Per Second) : 每秒可执行百万条指令数
注意 🔔 :
MIPS = 主频CPI\frac {主频}{CPI}CPI主频 = 1指令周期\frac {1}{指令周期}指令周期1
⑧ FLOPS (Floating-point Operations Per Second) : 每秒执行的浮点运算次数