/*
1.2.1——计算机硬件的基本组成
存储程序:将指令以二进制代码的形式事先输入计算机的主存储器。
早期冯诺依曼机:输入设备->运算器->存储器->控制器->输出设备
在计算机系统中,软件和硬件在逻辑上是等效的
冯诺依曼机的特点:
1、计算机由五大部件组成
2、指令和数据以同等地位存于存储器,可按地址寻访
3、指令和数据用二进制表示
4、指令由操作码和地址码组成
5、存储程序
*6、以运算器为中心
现代计算机:以存储器为中心
硬件:
1、主机 = CPU(运算器 + 控制器) + 主存储器
2、I/O设备 = 输入/输出设备 + 辅存
*/
/*
1.2.2认识各个硬件部件
1、主存储器 = 存储体 + MAR + MDR
MAR:存储地址寄存器
MDR:存储数据寄存器
*现在计算机通常把MAR、MDR放在CPU中
数据在 存储体 内按地址存储
存储单元:每个存储单元存放一串二进制代码
存储字(word):存储单元中二进制代码的组合
存储字长:存储单元中二进制代码的位数
存储元:存储二进制的电子元件,每个存储元可存1bit
例:
MAR=4位->总共有2的4次方个存储单元
MDR=16位->每个存储单元可存放16bit,1个字(word)= 16bit
易混淆:
一个字节 = 8bit
1B = 1个字节/1b = 1bit
2、运算器的基本组成
运算器:用于实现算术运算、逻辑运算
ACC:累加器,用于存放操作数,或运算结果
MQ:乘商寄存器,在乘除运算时,用于存放操作数或运算结果
X:通用寄存器,用于存放操作数
*ALU:算术逻辑单元,通过内部复杂的电路实现算术运算、逻辑运算
3、控制器的基本组成
*CU:控制单元,分析指令,给出控制信号
IR:指令寄存器,存放当前执行的指令
PC:程序计数器,存放下一条指令地址,有自动加一功能
完成一条指令:取指令PC -> 分析指令IR -> 执行指令CU
4、计算机的工作过程
初始:指令、数据存入主存,PC指向第一条指令
从主存中取指令放入IR、PC自动加1、CU分析指令、CU指挥其他部件执行指令
*/
/*
1.2.3计算机的层次结构
1、
软件: 虚拟机器M4(高级语言机器) :用编译程序翻译成汇编语言程序
↓
虚拟机器M3(汇编语言机器) :用汇编程序翻译成机器语言程序 汇编语言指令和机器语言指令一一对应
↓
虚拟机器M2(操作系统机器):向上提供“广义指令”(系统调用)
↓
**硬件: 传统机器M1(用机器语言的机器):执行二进制机器指令
↓
微程序机器M0(微指令系统):由硬件直接执行微指令
2、三种级别的语言
高级语言(C++、Java)——>汇编语言:助记符 ——> 机器语言:二进制代码
↓
↓解释程序(解释器):JavaScript、Python、Shell
二进制语言
编译程序:
将高级语言编写的源程序全部语句一次性全部翻译成机器语言程序,而后再执行机器语言程序(只需翻译一次)
解释程序:
将源程序的一条语句翻译成对应于机器语言的语句,并立即执行。紧接着再翻译下一句(每次执行都需要翻译)
*/
/*
1.3计算机的性能指标
1、存储器的性能指标
MAR位数反应存储单元的个数
MDR位数 = 存储字长 = 每个存储单元的大小
例子:MAR为32位,MDR为8位
总容量 = 2^(32) * 8 bit = 4GB
存储器容量:K:2^10 M:2^20 G:2^30 T:2^40
2、CPU的性能指标*****
CPU主频:CPU内数字脉冲信号震荡的频率
CPU时钟周期(单位:微秒、纳秒、秒)
CPU主频(时钟频率)= 1 / CPU时钟周期 (单位:Hz)
CPI:执行一条指令所需的时钟周期数
不同的指令,CPI不同,甚至相同的指令,CPI也可能有变化
*CPU执行时间(整个程序的耗时)= CPU时钟周期数/主频 = (指令条数 * CPI)/主频
IPS:每秒执行多少条指令
IPS = 主频/平均CPI
FLOPS:每秒执行多少次浮点运算
KIPS/MIPS KFLOPS/MLOPS/GMLOPS/TFLOPS
注:运算速度:K = 10^3 M = 10^6 G = 10^9 T = 10^12
3、系统整体的性能指标
(1)数据通路带宽
数据总线一次所能并行传送信息的位数(各硬件通过数据总线传输数据)
(2)吞吐量
系统在单位时间内处理请求的数量
(3)响应时间
指从用户向计算机发送一个请求,到系统对该请求做出响应并获得它所需要的结果的等待时间
4、系统整体的性能指标(动态测试)
基准程序是用来测量计算机处理速度的一种实用程序
问:主频高的CPU一定比主频低的CPU快吗?
不一定,如A的主频为2GHz,平均CPI=10;B的主频为1GHz,平均CPI=1
问:若A、B两个CPU的平均CPI相同,那么A一定更快吗?
不一定
问:基准程序执行得越快说明机器性能越好吗?
基准程序中的语句存在频度差异,运行结果也不能完全说明问题
*/