部分图片摘取自b站王道考研教育与b站飞天闪客,仅作学习使用

文章目录

概念区分

指令字长:一条指令的总长度(ISA指令集架构)
机器字长:CPU进行一次整数运算所能处理的二进制数据的位数(ALU)
存储字长:一个存储单元中的二进制代码位数(MDR)

:计算机中一次性处理数据的基本单位

字长=机器字长(二者是一个概念):指一个字包含的二进制位数,即字的宽度。(字的大小)

字节:1字节=8位

举个例子:假设指令字长=机器字长=存储字长
前提:1.主存是按字编址 2.定长指令集
一台32位的计算机,1字 = 32位(bit)=4字节(B),机器字长就是32位
一台64位的计算机,1字 = 64位(bit)=8字节(B),机器字长就是64位

0、计算机体系结构

计算机系统中程序指令和数据的存储与访问方式

冯·诺依曼计算机体系结构

哈佛计算机体系结构

计算机体系

https://www.bilibili.com/video/BV1ps4y1d73V?t=1110.5&p=5
PC程序指针计数器:下一条指令的存放地址

PC+“1”这个1指的是一个指令字长

1、存储

MAR
MDR
https://www.bilibili.com/video/BV1ps4y1d73V?t=888.9&p=33

存储器类型

RAM

SRAM
DRAM

SDRAM(Synchronous Dynamic Random-Access Memory)

DDR(Double Data Rate)双倍数据率

双通道

ROM

Cache

2、指令

https://www.bilibili.com/video/BV1ps4y1d73V?t=546.2&p=51

指令格式

https://www.bilibili.com/video/BV1ps4y1d73V?t=364.7&p=45
指令长度可定长可变长
操作码可定长可变长
操作数(地址码)可无可一可多

操作码

操作数(地址码)

指令集架构

CISC

复杂指令集
x86

RISC

精简指令集
ARM

RISC-V

指令集架构与操作系统

https://www.bilibili.com/video/BV1245uzdEmV?t=89.9

指令集架构与计算机体系结构

11

哈佛架构与冯诺依曼架构

哈佛:(确定性实时响应、高执行效率)嵌入式、DSP、微控制器领域
指令数据分开存储
1.并行操作:由于指令和数据有独立的总线,处理器可以同时进行取指和存取数据。(实现指令流水线)
2.消除“冯·诺依曼瓶颈”:哈佛架构从根源上解决了指令和数据对单一总线的竞争问题,使得流水线可以被更充分地利用,实现了更高的指令吞吐量。
3.可预测的时序:因为取指和数据访问不会相互阻塞,所以最坏情况执行时间是可以预测的。(实时响应)
4.免受数据访问干扰:密集的数据流(如处理大量传感器读数)不会影响指令的稳定供给,从而保证了控制循环的稳定性和响应速度。
5.双倍带宽潜力:理论上,拥有两条独立的总线,使得每个时钟周期内可以完成两次内存传输(一次取指,一次数据访问)。而冯·诺依曼架构在同一时刻只能进行一次传输。
6.指令保护:指令存储器通常是只读的或受到严格保护,这可以防止恶意代码或程序故障意外修改程序指令本身,提高了系统抵御软件错误和病毒攻击的能力。

冯诺依曼:(通用计算、极高灵活性)PC、服务器、智能手机
指令数据一同存储
1.自修改代码:程序可以在运行时生成或修改自身的指令。这在某些特定场景(如即时编译器、动态代码加密解密)中非常强大。
2.程序加载与存储:操作系统加载一个程序(如从硬盘读取一个.exe文件到内存)的过程变得极其自然:它只是将一段“数据”从外部存储复制到内存,然后将指针(程序计数器)指向它,这些“数据”就被当作指令执行了。在哈佛架构中,这需要专门机制将代码写入指令存储器。
3.高级语言特性:函数指针、回调机制等高级编程概念在冯·诺依曼模型下非常容易实现,因为函数(作为指令)的地址和普通数据没有本质区别。
4.代码和数据可以动态地共享整个内存空间,使得内存利用率在宏观上达到最优。
5.单一内存控制器和总线:在芯片级别,只需要一套内存接口、一套地址总线和数据总线(与主存相连)。这降低了芯片设计的复杂度和引脚数量,从而降低了成本。
6.简化编译器设计:编译器无需关心指令和数据必须存放在两个绝对隔离的物理空间中,目标代码的生成更简单。

注:在现代PC当中CPU内部通过将数据和指令分别存储在数据cache和指令cache当中来实现指令的流水线执行

编译过程

https://www.bilibili.com/video/BV1ps4y1d73V?t=138.9&p=8

函数调用的本质(汇编指令层面解读)

进程的内存资源与函数调用栈

https://www.bilibili.com/video/BV1ps4y1d73V?t=117.9&p=57

栈帧结构

https://www.bilibili.com/video/BV1ps4y1d73V?t=1054.0&p=59
ebp(extended base pointer):指向栈底,用于访问数据
esp(extended stack pointer):指向栈顶,用于添加数据

函数调用流程

https://www.bilibili.com/video/BV1ps4y1d73V?t=1090.7&p=59
触发调用流程:
1、保存寄存器
保存重要寄存器的数值
2、保存参数
将接下来使用的函数fun2的参数保存在当前函数fun1的栈帧较为顶部的位置
3、call:
将PC程序指针计数器的内容(即执行完接下来使用的函数fun2所跳转的下一个地址)压入当前函数fun1的栈帧的顶部位置
同时将PC程序指针计数器的内容修改为fun2的第一行代码的地址
————————————————————以上是fun1的栈帧——————————————————————————
4、enter:可以理解为开创一个新的栈帧:保存+改(对于ebp而言)
把上一个函数fun1的栈帧的栈底基地址(ebp)压入当前函数fun2的栈帧的底部位置
同时要将基地址指针(ebp)设置为当前栈顶的值(esp)
5、初始化局部变量(参数传递)
通过ebp指针访问上一个函数fun1所保存的保存在fun1的栈帧较为顶部的位置的参数,并创建局部变量
6、fun2函数执行逻辑…
7、保存返回值
将需要返回的值保存在寄存器当中(所以说返回值是通过寄存器传递的)
8、leave:改+弹
把指向栈顶的指针(esp)设置为当前栈底的指针(ebp):esp指回来
同时将ebp的值修改为栈顶的数值(esp指向的内容):ebp指回去
————————————————————以上是fun2的栈帧——————————————————————————
9、ret:
当前栈顶指针指向的内容(esp指向的内容)恢复到PC程序指针计数器
10、fun1函数接下来的执行逻辑…

指令周期

时钟周期

机器周期

指令周期
https://www.bilibili.com/video/BV1ps4y1d73V?t=496.3&p=63

指令流水线

MIPS(Microprocessor without Interlocked Pipelined Stages)无互锁流水线阶段的微处理器
世界上第一个RISC指令集架构
五段指令流程https://www.bilibili.com/video/BV1ps4y1d73V?t=173.5&p=71
FE(Instruction Fetch)->ID(Instruction Decode)->EX(Execution)->MEM(Memory)->WB(Write Back)

影响指令流水线的因素

结构相关—资源冲突—互斥

由于多条指令在同一时刻争用同一资源而形成的冲突称为结构相关。

数据相关—数据冲突—同步

数据相关指在一个程序中,存在必须等前一条指令执行完才能执行后一条指令的情况,则这两条指令即为数据相关。

控制相关

当流水线遇到转移指令和其他改变PC值的指令而造成断流时,会引起控制相关。
改变PC值的指令:转移指令、中断、函数调用

3、CPU

https://www.bilibili.com/video/BV1ps4y1d73V?t=1941.3&p=62

https://www.bilibili.com/video/BV1ps4y1d73V?t=1941.3&p=62

运算器

算术逻辑单元ALU
暂存寄存器
通用寄存器组
累加寄存器ACC
程序状态字寄存器PSW
移位器
计数器

控制器

程序计数器PC
指令寄存器IR
指令译码器
时序系统
微操作信号发生器
存储器地址寄存器MAR
存储器数据寄存器MDR
https://www.bilibili.com/video/BV1ps4y1d73V?t=931.5&p=66

硬布线控制器—RISC

微程序控制器—CISC

一条指令—一个微程序
微程序实现的本质是CU里面嵌套了一个使用硬布线实现的CPU
https://www.bilibili.com/video/BV1ps4y1d73V?t=973.8&p=67

数据通路

1寄存器<->寄存器
2寄存器<->ALU
3寄存器<->内存

内部总线

CPU内部总线仅传输数据(含指令)与地址。
CPU中的控制信号由CU通过一套独立的控制线网络分发给各个功能部件,用以协调和管理内部总线上的数据流动与操作执行。

专用数据通路

Flynn计算机体系结构

Flynn与指令数据存储形式

SISD

https://www.bilibili.com/video/BV1ps4y1d73V?t=222.9&p=73
多模块交叉存储器:低位交叉编址内存(双通道)

SIMD—GPU

https://www.bilibili.com/video/BV1ps4y1d73V?t=241.5&p=73
GPU实现—支持深度学习(因为矩阵运算量大)
https://www.bilibili.com/video/BV1ps4y1d73V?t=1224.6&p=73

MIMD

线程级并行->进程级并行
https://www.bilibili.com/video/BV1ps4y1d73V?t=634.0&p=73

多处理器系统—现代计算机结构

共享内存多处理器(Shared Memory multiProcessor, SMP)
多核处理器(multi-core)
一个CPU芯片中包含多个处理器,即多个核(core),因此通常也称为片级多处理器(Chip-Level MultiProcessing,CMP)。意思是:一块芯片上集成了多个处理器所有核共享一个LLC(Last-LevelCache),并共享主存储器
一个CPU上有多个核

https://www.bilibili.com/video/BV1ps4y1d73V?t=774.6&p=73
https://www.bilibili.com/video/BV1ps4y1d73V?t=706.9&p=73

多计算机系统

联邦机器学习
https://www.bilibili.com/video/BV1ps4y1d73V?t=790.3&p=73
https://www.bilibili.com/video/BV1ps4y1d73V?t=827.4&p=73

4、系统总线(BUS)

分时、共享
控制总线 + 地址总线、数据总线

总线结构

单总线结构

https://www.bilibili.com/video/BV1ps4y1d73V?t=1447.3&p=75

双总线结构

https://www.bilibili.com/video/BV1ps4y1d73V?t=1662.5&p=75

三总线结构

https://www.bilibili.com/video/BV1ps4y1d73V?t=1718.7&p=75

现代总线设计

单片机—MCU—STM32

多主多从总线矩阵

计算机
南北桥时期

北桥(MCH、GMCH):负责管理高速设备,直接连接CPU
南桥(ICH):负责管理中低速设备,连接北桥

现代计算机(CPU内部集成北桥时期)

总线仲裁

集中仲裁

链式查询

https://www.bilibili.com/video/BV1ps4y1d73V?t=736.3&p=77

计数器查询

计数器累加的是IO设备的地址

https://www.bilibili.com/video/BV1ps4y1d73V?t=1124.5&p=77

独立请求

https://www.bilibili.com/video/BV1ps4y1d73V?t=1429.8&p=77

分布仲裁

去中心化

总线通信方式

同步

异步

不互锁
半互锁
全互锁

半同步

分离式

总线标准

系统总线(与CPU相连)

ISA(Industry Standard Architecture)
EISA(Extended ISA)
FBS
QPI

局部总线(与北桥相连)

VESA(Video Electronics Standard Architecture)
PCI(Peripheral Component Interconnect)
AGP(Accelerated Graphics Port)显卡专用局部总线
DDRDouble Data Rate)时钟信号的上升沿和下降沿都传输数据—内存专用
PCIE(PCI-Express)串行—可以通过拓展数据通路的方式加快传输速度

设备总线(与南桥相连)

RS-232C(Recommended Standard)串口(RXD、TXD、GND)
SCSI(Small Computer System Interface)
PCMCIA(Personal Computer Memory Card International Association)
USB(Universal Serial Bus)串行
IDE/ATA(Integrated Drive Electronics)
SATA(Serial Advanced Technology Attachment)串行

5、IO

IO接口

https://www.bilibili.com/video/BV1ps4y1d73V?t=1033.3&p=82

IO控制方式

https://www.bilibili.com/video/BV1ps4y1d73V?t=1297.9&p=80
https://www.bilibili.com/video/BV1YE411D7nH?t=1759.7&p=75

程序查询方式

程序中断方式

中断执行与调用函数的不同点
在这里插入图片描述

单重中断与多重中断
单重中断

https://www.bilibili.com/video/BV1ps4y1d73V?t=2536.8&p=84

多重中断

https://www.bilibili.com/video/BV1ps4y1d73V?t=55.9&p=85
屏蔽字:可以用于选择屏蔽中断请求(硬件实现-与门当中的一项)

找到中断服务程序的入口地址的方法
软件查询法
硬件向量法

https://www.bilibili.com/video/BV1ps4y1d73V?t=2092.3&p=84
硬件电路出发电平信号->译码器->向量地址->根据地址查询终端向量表->中断向量表跳转中断服务程序的入口地址
(二重指针)

DMA方式

Direct Memory Access直接内存访问
DMA 是一种允许计算机中的某些硬件子系统(如硬盘、显卡、网卡等)直接与主内存进行数据读写,而无需中央处理器的持续参与的技术。
DMA传输的单位是,读取硬盘的过程以及写入内存的过程所操作的对象必须是连续的

CPU每发出一条/O指令,只能读/写一个或多个连续的数据块。

https://www.bilibili.com/video/BV1ps4y1d73V?t=495.7&p=87
https://www.bilibili.com/video/BV1ps4y1d73V?t=1023.7&p=87

https://www.bilibili.com/video/BV1ps4y1d73V?t=1575.9&p=87

通道控制方式

https://www.bilibili.com/video/BV1YE411D7nH?t=1564.9&p=75

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐