计算机硬件
计算机硬件
早期冯诺依曼机
存储程序概念:将指令以二进制代码的形式事先输入计算机的主存储器,然后按其在存储器中的首地址执行程序的第一条指令,以就按该程序的规定顺序执行其他指令,直至程序执行结束。
- 输入设备:将信息转换成机器能识别的形式
- 输出设备:将结果转换成人们熟悉的形式
- 存储器:存放数据和程序
- 运算器:算术运算,逻辑运算
- 控制器:指挥程序运行
在计算机系统中,硬件和软件在逻辑上时等效的。对于乘法运算,就可以设计一个专门的硬件电路实现乘法运算也可以用软件的方式,执行多次加法实现。
冯诺依曼计算机的特点
- 计算机有五大部件组成:控制器,存储器,运算器,输入输出设备等等。
- 指令和数据以同等地位存储器,可按地址访存,指令和数据用二进制表示
- 指令有操作码和地址码组成:操作码指明运算方式,地址码指明在哪找数据进行运算。
- 存储程序:会提前把指令程序提前存到存储器中
- 以运算器为中心:输入输出设备与存储器之间的数据传送通过运算器完成
不合理的地方:输入设备到存储器要经过运算器处理,这就大大降低了运算器的效率。
现代计算机的结构
现代计算机:以存储器为中心。
在集成电路出现了之后,运算器和控制器被集成到一起,这就是CPU
。
- 内存:主存(内存条,基于
DRAM
)与高速缓存(Cache
,基于SRAM
)两部分。主存就是内存是内存的一部分。 - 外存又称为辅存:是指除计算机内存及
CPU
缓存以外的存储器,此类存储器断电后仍能保存数据。常见的外存有硬盘、光盘、U
盘等。我们现在笔记本所使用的SSD
固态硬盘,机械硬盘等等就是外部存储器。CPU
如果想访问外存中的数据,必须先把外存的数据保存到内存中,CPU
再去读取内存中的数据。
硬件工作原理
主存储器的基本组成
{: height=50% width=50%}
- 存储体:数据在存储器内按地址存储
- 存储单元:每个存储单元存放一串二进制代码
- 存储字:存储单元中二进制代码的组合
- 存储字长:存储单元中二进制代码的位数
- 存储元:存储二进制数据的电子元件,每个电子元件存储1bit
MAR
:存储地址寄存器,MAR
位数反应存储单元的个数。MDR
:存储数据寄存器,存储器中取出的数据将放到MDR
中,所以MDR
的位数等于存储字长。
注意:现代的计算机将MAR和MDR也集成到了CPU中
- 如果
MAR
有4
位,那么总共就有$2^4$个存储单元 - 如果
MDR
有16
位,每个存储单元可存放16bit
,1
个字(word) =16bit
,(字的大小取决于计算机硬件)
工作过程
CPU通过控制总线控制主存储器写数据还是读数据
读数据的过程
CPU
将数据的地址写到MAR
中MAR
根据地址找到这个数据所在的位置。MAR
将数据写到MDR
中。CPU
从MDR
中拿走数据
运算器的基本组成
控制器基本组成
完成一条指令:
- 取指令
PC
取址 - 分析指令
IR
取址 - 执行指令
CU
计算
计算机工作过程
计算机软件
三种高级语言
编译程序:将高级语言编写的源程序全部语句一次全部反应成机器语言程序,而后再执行机器语言程序。(只需编译一次)
解释程序:将源程序的一条语句翻译成对应于机器语言程序的语句,并立即执行。紧接着再翻译下一句(每次执行都要编译)
软件和硬件逻辑功能等价性
软件和硬件逻辑功能等价性:同一个功能,既可以用硬件实现(性能高或者成本高),也可以使用软件实现(性能成本低)
指令集体系结构(ISA):软件和硬件之间的界面,设计计算机系统的ISA。就是要定义一台计算机可以支持哪些指令,以及每条指令的作用是什么,每条指令的用法是什么。
计算机系统的的层次解构
- 计算机体系结构:计算机语言程序员所见到的计算机系统的属性概念性的结构和功能。(指令系统,数据类型,寻址技术,I/O原理)
- 计算机组成原理:实现计算机体系结构所体现的属性,对程序员透明(具体指令的实现)
计算机系统的工作原理
存储程序的工作模式
存储程序工作方式规定:程序执行前,需要将程序所含的指令和数据送入主存储器,一旦程序被启动执行,就无需操作人员干预,自动逐条完成指令的取出和执行任务。
每条指令的执行过程:
- 从主存储器中取指令,对指令进行译码。
- 计算下一条指令地址。
- 取操作数并执行。
- 将结果送回存储器。
每次先将程序的第一条指令放到存储器中,取指令时,将PC
的内容作为地址访问存储器。每条指令的执行过程中,都需要计算下条将执行指令的地址,并送至PC
。
- 对于顺序型指令:下一条指令地址为
PC
的内容加上当前指令的长度。 - 对于跳转型指令:下一条指令地址为指令中指定目标的地址。
源程序到可执行文件
- 编译器:将源程序翻译为汇编语言
- 汇编器:将汇编语言程序翻译为二进制机器语言
- 连接器:将多个相关的目标模块连接成完整的可执行文件。
- 预处理阶段:预处理器
(cpp)
先将包含的头文件内容插入程序文件,输出结果是以.i
为拓展名的文件。 - 编译阶段:编译器
(ccl)
对预处理后的源程序进行编译,生成一个汇编语言程序。输出结果是以.s为拓展名的文件。 - 汇编阶段:汇编器
(as)
将汇编文件翻译为机器语言指令,输出结果是以.o为拓展名的文件。 - 链接阶段:链接器
(ld)
将多个.o文件和标准库函数合并作为一个可执行的目标文件,简称可执行文件。