第一章:计算机系统概述
计算机系统硬件基本组成
计算器的基本硬件系统由运算器、控制器、存储器、输入设备、输出设备的5大部件组成。
冯·诺依曼计算机特点:
-
计算机由五大部件组成
-
指令和数据以同等地位存于存储器,可按地址寻访
-
指令和数据用二进制表示
-
指令由操作码和地址码组成
-
存储程序
-
以运算器为中心(输入/输出设备与存储器之间 的数据传送通过运算器完成)基本方式控制流驱动
是“存储程序”的思想:存储程序:将指令以代码的形式事先输入计算机的主存储器,然后按其在存储器中的首地址执行程序的第一条指令,然后按该程序的规定顺序执行其他指令,直至程序执行结束。
因为以运算器为中心,输入/输出设备与存储器之间 的数据传送都必须通过运算器完成,太浪费系统资源,所以现代计算机都是以存储器为中心。
现代计算机特点:
1. 以存储器为中心
2. CPU=运算器+控制器
每个存储元件存储一位二进制,每个存储单元有n个存储元件,所以可以存储n位二进制代码,n个二进制代码叫存储字,n是存储字长。存储字长只能是1B 或者字节的偶数倍。MDR位数通常等于存储字长,MAR通常表示存储单元个数。
中央处理单元
中央处理单元(CPU)是计算机系统的核心部件,它负责获取程序指令、对指令进行译码并加以执行。
程序和数据都存储在内存中
主存储器(主存)
组成: 地址寄存器(MAR) ,数据寄存器(MDR),存储体,时序控制逻辑(产生存储器操作所需要的各种时序信号),
主存是可以由CPU直接访问
存储体:由n个存储单元构成,每个存储单元又包含m个存储元件(是最小单位,只能存一个二进制数),存储单元:叫存储字,m是存储字长,记作"字"Word,一般就是64位计算机:1W=8B(64bit);
- 字长作用:影响CPU的数据处理能力、寄存器大小、内存寻址范围等。
值得注意的是:n位地址 —> 2^n 个存储单元 总容量= 存储单元个数×存储字长
Memory Address Register (存储地址寄存器)→位数等于PC
Memory Data Register (存储数据寄存器)→位数等于存储字长
(指的是现代计算机在MAR、MDR集成在CPU中)
1. CPU的功能
-
程序控制(控制器)
-
操作控制(控制器)
-
时间控制(控制器)
-
数据处理(运算器)
2. CPU的组成
CPU主要由运算器、控制器、寄存器组和内部总线等部件组成。
-
运算器:运算器只能完成运算。
-
算术逻辑单元(ALU):算术逻辑单元,通过内部复杂的电路实现算数运算、逻辑运算
-
累加寄存器(ACC ):运算器的算数逻辑单元执行算数或逻辑运算时,为ALU提供一个工作区,运算的结果存储在ACC中。
-
MQ: 乘商寄存器,在乘、除运算时,用于存放操作数或运算结果
-
数据缓冲寄存器(DR):作为CPU和内存、外部设备之间的中转站。
-
状态条件寄存器(PSW):标志寄存器,存放ALU的一些标准信息,处理机的状态,是否溢出,进位
-
X: 通用的操作数寄存器,用于存放操作数
-
ALU是核心,ACC,MQ,X是必须具备的
-
-
控制器:控制器用于控制整个 CPU 的工作,它决定了计算机运行过程的自动化。它不仅要保证程序的正确执行,而且要能够处理异常事件。
-
CU:控制单元,分析指令,给出控制信号
-
指令寄存器(IR):当CPU执行指令时,先把它从内存存储器(MDR)取到缓冲寄存器中,在送入IR暂存。对用户完全透明,操作码和地址码都在这里面
-
程序计数器(指令计数器)(PC):跟踪指令的地址。PC在顺序执行的时候加1,在转移执行的时候加上一个位移量
-
地址寄存器(AR):保存当前CPU所访问的内存单元的地址
-
指令译码器(ID):指令包含操作码和地址码。对指令中的操作码进行分析解释
-
**补充:指令 == 操作码 + 地址码
-
首先,PC指向的地址传入MAR(地址寄存器)
-
地址寄存器通过从存储体将该地址存放的内容放入MDR(数据寄存器)中
-
MDR将内容传入CPU的IR(指令寄存器)中.(此时取指令结束,PC自动+1)
-
IR(指令寄存器)将指令交给CU(控制单元),CU 对指令分析。此时分析指令结束
-
执行指令:根据要求数据会通过IR和主存储器中先通过MAR传地址,MDR取数据,将数据传入需要的地方(eg.ACC或者MQ.........)进行执行
-
计算机软件
应用软件是为了解决某个应用领域的问题而编制的程序
系统软件负责管理硬件资源,并向上层应用程序提供基础服务,类似基建
网卡驱动,Debug也是属于系统软件。
该科主要考察硬件
语言主要三种:机器语言,汇编语言,高级语言
而机器语言是计算机可以唯一直接识别和执行的语言
而高级语言又分为:编译型和解释型,主要有以下区别:
-
汇编程序(汇编器):将汇编语言翻译成机器语言,
-
解释程序(解释器):将源程序中的语句按执行顺序逐条翻译成机器指令并立即执行。
-
编译程序(编译器) :将高级语言翻译成汇编语言或机器语言程序。
软件和硬件的逻辑功能等价性:
同一个功能,既可以用硬件实现(性能高成本高),也可以用软件实现(性能低成本也低)
这是计算机系统设计的重要依据。
界限
指令集体系结构(ISA):软件和硬件之间的界面。设计计算机系统的ISA,就是要定义一台计算机可以支持哪些指令,以及每条指令的作用是什么、每条指令的用法是什么。
多级层次结构
M4~M2是虚拟机器 ,没有配置软件的纯硬件系统叫裸机
M2 也叫混合层,由操作系统程序实现,操作程序是由机器指令和广义指令组成,广义指令是为了拓展机器功能而设置,是由操作系统定义和解释的软件指令
M1硬件 微程序解释机器指令系统
M0硬件 微程序机器是实实在在的硬件直接执行微程序
工作原理
hello.c、hello.i、hello.s都属于文本文件
hello.o和hello.exe文件c才是二进制文件
机器语言和汇编语言都与计算机系统结构相关,二者一一对应,功能相同。
低级语言的执行效率一般高于高级语言。
低级和高级可以编写出来功能等价的程序。
性能分析
一:容量
MAR:地址表示个数。
MDR: 数据表示一个数据的大小。
总容量:个数 × 一个的大小 = MAR * MDR
CPU主频
CPU时钟周期:是机器内部主时钟脉冲信号的宽度,是cpu工作的最小时间单位。
以相邻状态单元间的组合逻辑电路的最大延迟时间为基准确定,也是指令流水线每个流水的最大延长时间确定。
时钟脉冲信号:是机器脉冲源发出的脉冲信号经整形和分频后形成。
注意:描述性能时候的K,M,G和,描述容量时的不是同一个大小
机器字长:“32位机器”其中的32位指的就是机器字长,简称字长,指计算机进行一次整数运算所能处理的二进制数据的位数。通常是1字节(1B)的整数倍.
(以题目条件为准,但默认情况下可认为机器字长=存储字长,当机器字大于存储字长需要位拓展,小于需要多次访存。
CPI:执行一条指令所需要的时钟周期数。
CPU执行时间=执行所需的CPU时钟周期数/主频=(指令条数xCPI)/主频
=CPU时间+等待时间
IPS:每秒执行多少条指令
IPS=主频/平均CPI
MIPS( 每秒执行多少百万条指令)
MFLOPS:每秒所执行的浮点运算有多少百万次
基于完成操作的次数而不是指令条数
是科学计算机最能标志系统性能的参数
数据通路带宽:数据总线一次所能并行传送信息的位数(各硬件部件通过数据总线传输数据)eg ,带宽是 8big ,每次只能传输 8big
吞吐量:指系统在单位时间内处理请求的数量。它取决于信息能多快地输入内存,CPU能多快地取指令,数据能多快地从内存取出或存入,以及所得结果能多快地从内存送给一台外部设备。这些步骤中的每一步都关系到主存,因此,系统吞吐量主要取决于主存的存取周期。是反应性能的综合参数
响应时间:指从用户向计算机发送一个请求,到系统对该请求做出响应并获得它所需要的结果的等待时间。通常包括CPU时间(运行一个程序所花费的时间)与等待时间(用于磁盘访问、存储器访问、I/O操作、操作系统开销等时间)。
系统整体的性能指标(动态测试)
基准程序(跑分软件 eg.鲁大师):是用来测量计算机处理速度的一种实用程序,以便于被测量的计算机性能可以与运行相同程序的其它计算机性能进行比较。
比较两个 计算机的快慢需要考察的不仅仅是主频,CPI还有指令系统的不同
计算机基本单位
位(比特) 最小数据单位 | bit、b | 8b=1B |
---|---|---|
字节 最小存储单位 | byte、B | 1B = 8b |
千字节 | KB(10) | 1KB = 1024B |
兆字节 | MB(20) | 1MB = 1024KB |
吉字节 | GB(30) | 1GB = 1024MB |
太字节 | TB(40) | 1TB = 1024GB |
易混点
1:翻译程序、汇编程序、编译程序和解释程序的区别和联系是什么?
共同点:三者都是属于要把高级语言翻译成机器语言的翻译程序,是不同的执行方式。
区别:
1.编译程序是先将高级语言程序先编译成低级语言(汇编语言或机器语言),形成一个目标文件后在进行执行操作。但是翻译完成后的目标文件(汇编语言或机器语言)并不能直接被机器识别,还需要经过微程序进一步将机器语言解释为计算机可识别的微指令。
2.汇编程序是将汇编语言翻译成机器语言。源文件与编译程序不同。
上述两种程序都分为两个阶段:编译(汇编)阶段和执行阶段。
3.解释程序是将高级语言程序边翻译边执行,不会产生目标文件(与另外两种程序的区别),只有一个阶段。
下图是王道书讲解
2. 机器字长、存储字长和指令字长的区别和联系是什么
注意(总结):
-
寄存器是由触发器构成的。
-
机械字长是数据运算的基本单位长度,等于cpu内部运算位数和通用寄存器的宽度,决定了数据表示范围和精度,与存取速度内存容量没有关系.
-
存储字长是存放在一个存储单元中的二进制代码位数(存储字)=MDR的位数
-
指令字长取决于指令的功能和格式,一般是单字长,半字长,双字长。
-
计算机的位数是指机械字长,一次性可以处理的二进制长度,通常等于ALU宽度,通用寄存器位数。
-
MFLOPS 描述计算机浮点数运算性能,现在科学计算的计算器主要计算评估浮点运算的性能。所以在科学计算中他是表示性能最有用的参数。
-
CPU周期是机器在周期,是多个时钟周期组成。
-
状态寄存器和通用寄存器只要汇编程序员可见,IR,MAR,MDR是CPU内部工作寄存器,对程序员不可见。
-
CPI是执行一条指令的时钟周期数,与时钟频率无关,与系统结构,指令集,计算机组织有关。
-
cpu时间是T,CPU速度提高100%时候时间才减半,T=T/2,提高50%:T=T/(1+0.5)