第一章:计算机系统概述
Part1:基本概念
1、计算机系统组成
计算机系统
-
硬件系统
- 早期冯·诺依曼机结构
- 现代计算机结构
-
软件系统
- 系统软件——管理计算机
- 应用软件——为执行任务而编制
2、三级计算机语言
-
三种语言
- 机器语言:二进制代码语言,计算机可以直接执行
- 汇编语言:面向及其的低级语言,其代码符号和及其语言一一对应
- 高级语言:面向人类的自然语言,其代码需要翻译为机器语言
-
翻译过程
翻译类型
- 编译:将源代码变为可执行文件
- 解释:将源代码逐条变为机器语言并且执行
3、计算机的一些指标
-
主存容量(MM, Main Memory)
MAR:Memory Address Register,主存地址寄存器
MDR:Memory Data Register, 主存数据寄存器
这两个寄存器的位数决定了主存容量,如果MAR:16bit MDR:32bit。则
主 存 容 量 = 2 16 ∗ 32 ( b i t ) = 64 k ∗ 4 B = 512 K B 主存容量=2^{16}*32(bit)=64k*4B=512KB 主存容量=216∗32(bit)=64k∗4B=512KB -
CPU
- CPU的时钟周期:CPU中最小的时间单位
- CPU的主频(Clock Speed):CPU内部时钟频率,单位Hz.(1 Hz = 1秒钟一次,时钟周期=CPU主频的倒数)
- CPI(Clock Per Instruction):每条指令平均需要使用几个时钟周期
-
FLOPS
每秒可以支持的浮点运算数量级
MFLOPS:可执行106
GFLOPS:可执行109
TFLOPS:可执行1012
PFLOPS:可执行1015
Part2:计算机硬件系统
1、早期冯·诺依曼结构:以运算器为中心
冯诺依曼在研究EDVAC时,提出了“存储程序”的概念,即将指令以代码的形式事先输入存储器,从首地址开始按序执行,直到指令结束。在他的《EDVAC报告书的第一份草案》中,为现代计算机结构指明了道路
- 采用二进制表示数据
- 像存储数据一样存储程序
- 计算机由输入、输出、存储器、运算器、控制器5大模块构成
这三个原则被称为“存储程序”工作方式
2、现代计算机结构:以存储器为中心
现代计算机常将Control Unit和Arithmetic Unit和Memory中MAR、MDR整合入一个部件,并称之为CPU,如下图所示
3、三大硬件基本结构
- Memory
-
Arithmetic Unit
其中ACC(Accumulator):累加器
MQ:乘商寄存器
ALU(Arithmetic logical Unit):逻辑运算单元
-
Control Unit
其中IR(Instruction Register):存储当前执行指令的寄存器
PC(Program Counter):存储下一条指令地址的寄存器
MCU(Micro Control Unit):微控制单元,用于分析指令
4、一个例子
先看如下代码
int main(void){
int x = 2;
int a = 3;
int b = 1;
int y = 0;
y = a * x + b;
}
将其编译装入后,为这个样子
主存 | 指令 |注释
地址 | 操作码(6bit) | 地址码(10bit) |
--------------------------------------------------------
0 | 000 001 | 0000 00 0101 |取数x到ACC
1 | 000 010 | 0000 00 0110 |对a和x做乘法,并将结果存放于ACC中
2 | 000 011 | 0000 00 0111 |加上b,将结果存放于ACC中
3 | 000 100 | 0000 00 1000 |将结果放到y所处的主存单元中
4 | 000 101 | 0000 00 0000 |停机
--------------------------------------------------------
以下为主存单元数据
--------------------------------------------------------
5 | 000 000 0000 00 0010 |x=2
6 | 000 000 0000 00 0011 |a=3
7 | 000 000 0000 00 0001 |b=1
8 | 000 000 0000 00 0000 |y=0
由3可知一个由完整的计算机如下图所示
则第一条指令执行过程为:
初始状态:PC=0,指向第一条指令地址
---------------------------------------------------------
step 1 : (PC)->MAR, MAR = 0; |
step 2,3 : M(MAR)->MDR, MDR=000 001 0000 00 0101; |取指令阶段
setp 4 : (MDR)->IR; |
---------------------------------------------------------
step 5 : op(IR)->MCU MCU分析后得知其为取数指令,pc=pc+1; | 分析指令阶段
---------------------------------------------------------
step 6 : Ad(IR)->MAR, (MAR)=0000 00 0101 = 5; |
step 7,8 : M(MAR)->MDR, MDR = 000 000 0000 00 0010 = 2; |执行指令阶段
step 9 : (MDR)->ACC |
----------------------------------------------------------
(pc)表示pc中的值,->表示数据流动方向,M(MAR)表示主存(Main Memory)中地址为MAR的主存单元的值
op(IR)表示IR中指令的操作码(operator),Ad(IR)表示IR中指令的地址码
Part end:参考文献和一些说明
可以从pc自增的情况来看出计算机的是按照字节编制还是按照字编址。如果计算机指令长度16位,而pc=pc+2。那么说明该计算机按照字节编制。原因是如果计算机按照字编制的话pc=pc+1.