0️⃣ 参考
- 王道计算机考研408
1️⃣ 冯·诺依曼机
- 核心思想【存储程序】
存储程序就是将指令先放入内存中,再从内存读取指令执行,从而实现自动化。 - 核心 【运算器】
- 说明:在计算机系统中,软件和硬件在逻辑上是等效的
例如:乘法的实现,既可以在存储器中使用硬件电路实现乘法允许,也可以使用软件多次加法模拟
六大特点
- 由五个硬件部分组成【输入设备、输出设备、存储器、运算器、控制器】
- 指令和数据以同等地位存入存储器,并且可以按地址寻访
- 指令和数据都是二进制
- 指令由操作码和地址组成
- ”存储程序“
- 以运算器为中心
弊端
可以发现数据一开始放入存储器时,不能直接放入存储器需要经过运算器、读取数据时不能直接从存储器读取,还要经过运算器
所以运算器压力🍐很大,至此,现代计算机诞生。
2️⃣ 现代计算机
- 核心特点:【以存储器为中心】,解决了冯·诺依曼机让运算器压力大的问题
- CPU诞生:【运算器+控制器】,紧密联系,提高效率
设备总结
主机
设备
3️⃣ 存储器
基本结构图
读取过程
-
读
- CPU先将需要取的地址放入MAR
- 主存储器控制逻辑去找地址对应得值
- 找到后写入MDR
- 最后CPU通过数据线路取走MDR的数据
-
取
- CPU将想要写入的位置放在MAR
- CPU将想要写入的数据放在MDR
- CPU通过控制总线告诉主存储器,“我要写”
- 主存储器通过这三个信息就明白了,就去存
存储体
- 存储单元:一串二进制代码
-
存储字:就是存储单元中存的东西(一串二进制代码)
-
存储字长:存储单元中二进制代码的长度
-
存储元:小电容,存储一个bit
计算细节和混淆点
存储体中取出的数据是要放入MDR的,所以MDR位数 = 存储体位数(存储字长)
-
例如
- MAR = 4位,说明有个序号,也就是有16个存储单元【整体的个数】
- MDR = 16位,说明存储字长为16,也就是一个字(word,不是字节)的大小为16bit
-
混淆点【字 和 字节 和 比特位】
- 字(word),不确定,看计算机
- 字节(Byte),1B = 8bit,8个比特位,是固定的【100Mbps,大约就是100/8 MB/s】
- 比特位(bit),可以简称比特,也可以简称位
4️⃣ 运算器
-
ACC【
Accumulate Register
】累加器,存放操作数或运算结果 -
MQ【
Multiple-Quotient Register
】乘商存储器,存放操作数或运算结果 -
X 通用的操作数存储器,多个
-
ALU【
Arithmetic and Logic Unit
】算术逻辑单元,核心,其他都是寄存器,它才是老大
5️⃣ 控制器
-
CU【
Control Unit
】控制单元,核心 -
IR【
instruction Register
】指令寄存器,存放当前执行指令 -
PC【
Program Counter
】程序计数器,存放下一条指令地址,自动加1
宏观的完成一条指令
- 取指令 PC
- 分析指令 IR
- 执行指令 CU
6️⃣ 执行过程【难点】
高级语言 -> 机器语言
第一条指令
(PC)是指读取PC中的数据
- (PC) -> MAR 【此时MAR = 0】,由于PC存储下一条指令的地址,所以最开始从PC中拿,地址!地址!地址!这里比较绕,下一条地址也就是这次该执行的地址,不要专牛角尖
- M(MAR) -> MDR【MDR = 000001 0000000101】,由地址在存储体中找到相应的指令或值
- (MDR)-> IR【IR = 000001 0000000101】
- OP(IR) -> CU 将IR中的操作码部分取出,交给CU分析,然后分析出是取数指令
- AD(IR) -> MAR 【MAR = 0000000101(5)】,由CU分析出取数,就取出IR中地址码的数
- M(MAR) -> MDR 【MDR = 0000000000000010(2)】
- (MDR) -> ACC 【ACC = 2】,在控制单元的控制下,将数据放到ACC中
第二条指令
PC执行完上一条指令后,会自动+1,所以现在PC = 1
- (PC) -> MAR 【MAR = 1】
- M(MAR) -> MDR 【MDR = 00100 0000000110】
- (MDR) -> IR 【IR = 00100 0000000110】
- OP(IR) -> CU 【CU = 00100】
- CU分析后发现,是一个乘法操作,开始指挥IR去取数
- AD(IR) -> MAR 【MAR = 0000000110(6)】
- M(MAR) -> MDR 【MAR = 0000000000000011(3)】
- (MDR)-> MQ 【MQ = 3】
- CU发现是乘法操作,先(ACC) -> X【X = 2】,将被乘数放入X3 * 1,3是被乘数
- (MQ)(X)-> ACC 【ACC = 32 = 6】,如果结果很大,会放入MQ辅助存储
第三条指令
可以发现前面取数指令是相同的,下面直接就省略了
- CU分析后发现是一条加法指令
- AD(IR) -> MAR 【MAR = 0000000111(7)】
- M(MAR) -> MDR 【MDR = 0000000000000001(1)】
- M(MDR) -> X 【X = 1】
- (ACC) + (X) -> ACC 【ACC = 7】,由ALU实现加法运算
第四条指令
- CU分析后发现是一条存储指令
- AD(IR) -> MAR 【MAR = 0000001000(8)】
- (ACC) -> MDR 【MDR = 7】,先将要存储的数据放在MDR中
- 控制单元会通过控制总线告诉主存储器,此次要进行写操作,然后主存储器就会把MDR放入MAR的地址中【原始数据y = 8】
第五条指令
- CU分析后发现是一条停机指令,就结束了
总结分析
慢慢不难发现,前面的取数操作基本上是一样的,变化的是在CU分析完操作码后的操作
- 冯·诺依曼机的特点更加明显
- 五大部件
- 指令和数据平等存放在存储器中
- 指令和数据都是二进制
- 指令 = 操作码 + 地址码
- 存储程序
- 以运算器为中心
7️⃣ 计算机系统的层次结构
五层结构
-
M4【高级语言机器】,执行高级语言
-
M3【汇编语言机器】,执行汇编语言
-
M2【操作系统机器】,向上提高操作系统指令
-
M1【传统机器】,执行机器指令
-
M0【微程序机器】,执行微指令
三个级别的语言
-
高级语言 【编译器、解释器】
-
汇编语言【相当于机器码的助记符号】
-
机器语言【真正能执行的】
编译、汇编、解释程序统称为:翻译程序
机体与机组的区别
- 计算机体系结构,研究的是硬件和软件之间的接口设计
- 计算机组成原理,研究的是如何用硬件实现定义的接口
8️⃣ 计算机性能指标
存储器
总容量 = 存储单元的个数( 2 M A R 2^{MAR} 2MAR) * 存储单元的容量(len(MDR))
- 例如
- MAR为32位,MDR为8bit
则,总容量为 2 32 ∗ 8 b i t = 4 G b ∗ 8 b i t = 4 G B 2^{32}* 8bit = 4Gb * 8bit = 4GB 232∗8bit=4Gb∗8bit=4GB
- MAR为32位,MDR为8bit
2 10 = 1 K b ∗ 8 b i t = 1 K B 2^{10} = 1Kb * 8bit = 1KB 210=1Kb∗8bit=1KB
2 20 = 1 M b ∗ 8 b i t = 1 M B 2^{20} = 1Mb * 8bit = 1MB 220=1Mb∗8bit=1MB
2 30 = 1 G b ∗ 8 b i t = 1 G B 2^{30} = 1Gb * 8bit = 1GB 230=1Gb∗8bit=1GB
2 40 = 1 T b ∗ 8 b i t = 1 T B 2^{40} = 1Tb * 8bit = 1TB 240=1Tb∗8bit=1TB
CPU【重点】
- CPU时钟周期:也就是上图中一段的脉冲信号【单位:微秒、纳秒】
- CPU主频: 1 C P U 时钟周期 \frac{1}{CPU时钟周期} CPU时钟周期1【单位:Hz】
- CPI(
Clock cycle Per Instruction
):执行一条指令所需的时钟周期数【是一个数】,这个还会受到其他硬件约束,所以一般都是考虑平均CPI - 执行一条指令的耗时:CPI * CPU时钟周期
- CPU执行时间: 指令条数 ∗ C P I C P U 主频 \frac{指令条数 * CPI}{CPU主频} CPU主频指令条数∗CPI
例如:
CPU主频1000Hz,程序包含100条指令,平均CPI位3,则该程序在CPU上执行需要多久?
100 ∗ 3 1000 \frac{100 * 3}{1000} 1000100∗3
IPS(Instructions Per Second
):每秒钟执行多少条指令【IPS=
C
P
U
主频
平均
C
P
I
\frac{CPU主频}{平均CPI}
平均CPICPU主频】,当然也有KIPS、MIPS…
- FLOPS:每秒执行多少次浮点运算,当然也有KFLOPS、MFLOPS、GFLOPS、TFLOPS
注意
这里K是103,M是106…是1000的倍数,与容量的要区分开
9️⃣ 系统整体性能指标
常见指标
- 数据通路带宽:也就是数据传输总线的容量
- 吞吐量:系统在单位时间内处理请求的数量
- 响应时间:处理到处理结束的时间
- 基准程序:…鲁大师…
CPU小问题
-
主频高一定比主频低的快吗?
- 不一定,因为CPI不一样
- 例如:A主频2GHz CPI=10,B主频1GHz CPI=1。
- A(IPS)= 2 10 = 0.5 \frac{2}{10} = 0.5 102=0.5
- B(IPS)= 1 1 = 1 \frac{1}{1} = 1 11=1
- 所以B更快
-
CPI也相同会更快吗?
- 不一定,指令系统不同,也是不一样的
-
基准程序越快越好吗?
- 不一定,因为,每个电脑的侧重点不同,存在语句的频度差异
1️⃣0️⃣温馨提示
注意单位
- 描述存储容量、文件大小时【 k = 2 10 k = 2^{10} k=210】
- 描述频率、速率时【 k = 1 0 3 k = 10^3 k=103…】
字节与字
- 字是要看系统定的【word】
- 字节【B】,就是等于8bit