计算机基础知识复习01计算机组成原理
1.概述部分
冯诺依曼体系:将程序指令和数据一起存储的计算机设计概念结构
◆ 必须有一个控制器
◆ 必须有一个存储器
◆ 必须有一个运算器
◆ 必须有一个运算器
◆ 必须有输出设备
◆ 必须有输入设备


◆ 必须有输入设备
现代计算机结构以存储器为核心
程序翻译与程序解析
程序分为较为高级的计算机语言L1 和 较为低级的计算机语言L0
- 计算机执行的都是L0
- 翻译过程生成新的L0程序,解释过程不生成新的L0程序
- 解析过程由L0编写的解释器去解析L1程序
解析:
计算机层次
- 硬件逻辑层:由门、触发器等逻辑电路组成
- 微程序机器层:编程语言是微指令集, 微指令所组成的微程序直接交由硬件执行
- 传统机器层:编程语言是CPU指令集(机器指令),
- 操作系统层:操作系统层是在软件和硬件之间的适配层
- 汇编语言层:编程语言是汇编语言,可以翻译成可直接执行的机器语言,完成翻译的过程的程序就是汇编器
- 高级语言层:编程语言为广大程序员所接受的高级语言,如Python、Java、C/C++、Golang等
- 应用层:程序,如word ppt等
计算机的计算单位
容量单位:
在物理层面,利用高低电平0/1记录信息,其中0/1称为bit(比特位)
字节:1Byte=8bits
- 网络速度:宽带的100M是100Mbps
- CPU频率:CPU的时钟频率的单位一般是赫兹(Hz) 即秒分之一
2.组成部分
总线:
解决不同设备之间的通信问题
- 片内总线:高集成度芯片内部的信息传输线
- 系统总线: 1.数据总线:双向传输各个部件的数据信息,一般与CPU位数相同(32位、64位)
2.地址总线:指定源数据或目的数据在内存中的地址,地址总线位数=n,寻址范围:0~𝟐𝒏
3.控制总线:控制总线是用来发出各种控制信号的传输线
◆ 计时器定时查询
◆ 链式查询
◆ 独立请求
输入输出设备:
CPU与IO设备的通信:CPU速度与IO设备速度不一致
- 程序中断: 当外围IO设备就绪时,向CPU发出中断信号,使CPU中断主程序来处理IO设备
- DMA(直接存储器访问):DMA直接连接主存与IO设备,工作时不需要CPU的参与,因此不需要中断CPU
存储器
局部性原理:局部性原理是指CPU访问存储器时,无论是存取指令 还是存取数据,所访问的存储单元都趋于聚集在一个 较小的连续区域中。
因此,根据局部性原理,可以划分主存-辅存层次 和 缓存-主存层次
- 主存储器——内存:通过电容存储数据,必须隔一段时间刷新一次,如果断电则会丢失一部分数据。所谓的32位系统、64位系统,也是指得内存:232 = 4 × 230 = 4𝐺𝐵 264 = 234 × 230 = 234𝐺𝐵
- 辅助存储器——磁盘:磁盘的读取方法有:◆ 最短寻道时间优先:优先访问离磁头最近的磁道◆ 先来先服务算法:按顺序访问进程的磁道读写需求◆ 扫描算法(电梯算法):每次只往一个方向移动,到达一个方向需要服务的尽头再反方向移动◆ 循环扫描算法:从头至尾都只能向一个方向移动
- 高速缓存Cache:单独开一小结
-
高速缓存Cache:
命中率:
访问效率:
缓存替换策略:
当缓存中没有CPU所需的数据,则需要从主存中拿新的数据,对原有数据进行替换
◆ 先进先出算法(FIFO): 把高速缓存看做是一个先进先出的队列,优先替换最先进入队列的字块
◆ 随机算法
◆ 最不经常使用算法(LFU): 优先淘汰最不经常使用的字块,因此需要额外的空间记录字块的使用频率
◆ 最近最少使用算法(LRU):优先淘汰一段时间内没有使用的字块,一般使用双向链表,把当前访问的节点放在最前面
◆ 随机算法
◆ 最不经常使用算法(LFU): 优先淘汰最不经常使用的字块,因此需要额外的空间记录字块的使用频率
◆ 最近最少使用算法(LRU):优先淘汰一段时间内没有使用的字块,一般使用双向链表,把当前访问的节点放在最前面
指令系统:
机器指令主要由两部分组成: 操作码(OP):指明指令所要完成的操作,其位数反映了机器所能进行的操作类型,如2^8 = 256
地址码(add):直接给出操作数或者操作数的地址
分三地址指令:(addr1)OP(addr2) → (addr3)
二地址指令:(addr1)OP(addr2) → (addr1)或(addr2)
一地址指令:(addr1)OP→ (addr1) 或者(addr1)OP(ACC) → (addr1)
零地址指令:在机器指令中无地址码, 空操作、停机操作、中断返回操作等
机器指令的操作类型:
- 数据传输:数据读写、交换地址数据、清零置等操作
- 算术逻辑操作:加减乘除运算 与或非等逻辑位运算
- 移位操作
- 控制指令
- 指令寻址:顺序寻址
跳跃寻址 - 数据寻址:立即寻址:指令直接获得操作数,无需访问地址
间接寻址:指令地址码给出的是操作数地址的地址 ,需要访问一次或多次主存来获取操作数



(尾数使用纯小数) 
在计算过程中很可能发生溢出,判断溢出采用双符号位判断法: 
1.对阶:対阶的目的是使得两个浮点数阶码一致,使得尾数可以进行运算 阶码按小阶看齐大阶的原则 
控制器:
-
程序计数器:程序计数器用来存储下一条指令的地址
- 时序发生器:用于发送时序脉冲,使CPU依据不同的时序脉冲有节奏的进行工作
- 指令译码器:翻译操作码对应的操作以及控制传输地址码对应的数据
- 指令寄存器:从主存或高速缓存取计算机指令
- 主存地址寄存器:保存当前CPU正要访问的内存单元的地址
- 主存数据寄存器:保存当前CPU正要读或写的主存数据
- 通用寄存器:用于暂时存放或传送数据或指令,可保存ALU的运算中间结果
运算器
- 数据缓冲器:暂时存放外设送过来的数据和送往外设的数据
- ALU:算术逻辑单元,是运算器的主要组成
- 状态字寄存器:存放运算状态(条件码、进位、溢出、结果正负等)和 运算控制信息(调试跟踪标记位、允许中断位等)
- 通用寄存器:用于暂时存放或传送数据或指令,可保存ALU的运算中间结果
指令的执行过程:
3.计算部分(一)
二进制运算的基础:
二进制转换十进制:按权展开法

(小数)十进制转换二进制:重复相乘法

二进制负数
(整数)十进制转换二进制:重复相除法
(仅针对负数,正数的反码补码都是它本身)
负数的反码等于原码除符号位外按位取反
负数的补码等于反码+1
定点数与浮点数
定点数:小数点固定在某个位置的数称之为定点数 ,如纯小数和纯整数
浮点数:
如:
浮点数的表示范围:
单精度浮点数:使用4字节、32位来表达浮点数(float)
双精度浮点数:使用8字节、64位来表达浮点数(double)
双精度浮点数:使用8字节、64位来表达浮点数(double)
浮点数的规格化:尾数规定使用纯小数,且尾数最高位必须是1
如:
运算:
定点数的加减法: 整数加法:A 补 + B 补 = 𝐴 + 𝐵 补 (𝑚𝑜𝑑2𝑛+1)
小数加法:A 补 + B 补 = 𝐴 + 𝐵 补 (𝑚𝑜𝑑2)
小数加法:A 补 + B 补 = 𝐴 + 𝐵 补 (𝑚𝑜𝑑2)
整数减法:A 补 − B 补 = 𝐴 + (−𝐵) 补 (𝑚𝑜𝑑2𝑛+1)
小数减法:A 补 − B 补 = 𝐴 + (−𝐵) 补 (𝑚𝑜𝑑2)
小数减法:A 补 − B 补 = 𝐴 + (−𝐵) 补 (𝑚𝑜𝑑2)
-B[补]等于B[补]连同符号位按位取反,末位加一
数值位与符号位一同运算,并将符号位产生的进位自然丢掉 在计算过程中很可能发生溢出,判断溢出采用双符号位判断法:
单符号位表示变成双符号位:0=>00,1=>11 双符号位产生的进位丢弃
结果的双符号位不同则表示溢出
如:
结果的双符号位不同则表示溢出
如:
浮点数的加减法运算:
如:
2.尾数求和:使用补码进行运算
3.尾数规格化:
