计算机结构
计算机结构主要由运算器、控制器、存储器、输入设备和输出设备组成。简化的结构图如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/8cc3cf69047754a89b608d8c9c5642eb.png)
接下来,我们再看看看其详细的结构图如下所示。
其中,主存储器又叫做内存储器,也就是内存;辅助存储器又叫做辅存,也就是外存储器,例如磁盘;CPU的核心部件为运算器和控制器。
CPU由运算器、控制器、寄存器组和内部总线组成。
![](https://i-blog.csdnimg.cn/blog_migrate/79a326fc92e1c0c7773831ccb1e68fc3.png)
运算器包含:算术逻辑单元、累加寄存器、数据缓冲寄存器、状态条件寄存器。
![](https://i-blog.csdnimg.cn/blog_migrate/69efde98b6c5ee41508203cb6b4f59e1.png)
算术逻辑单元(ALU):数据的算术运算和逻辑运算。
累加寄存器(AC):通用寄存器,为ALU提供一个工作区,用于暂存数据。
数据缓冲寄存器(DR):写内存时,暂存指令或数据。
状态条件寄存器(PSW):存储状态标志和控制标志,有时也可以将状态条件寄存器归为控制器部分。
控制器包含:程序计数器、指令寄存器、指令译码器、时序部件。
程序计数器(PC):存储下一条要执行的指令的地址。
指令寄存器(IR):存储即将执行的指令。
指令译码器(ID):对指令中的操作码字段进行分析解释。
时序部件:提供时序控制信号。
计算机体系结构分类
首先,我们先来看一个在计算机领域中,对计算机的体系结构进行分类的一种经典方法,就是Flynn分类法,Flynn分类法将计算机分成单指令流单数据流、单指令流多数据流、多指令流单数据流、多指令流多数据流。
![](https://i-blog.csdnimg.cn/blog_migrate/e54aaab20d634c0623ea2c71a18b2a7e.png)
具体信息如下表所示。
体系结构类型 | 结构 | 关键特性 | 代表 |
---|---|---|---|
单指令流单数据流(SISD) | 控制部分:一个 处理器:一个 主存模块:一个 | 单处理器系统 | |
单指令流多数据流(SIMD) | 控制部分:一个 处理器:多个 主存模块:多个 | 各处理机以异步的形式执行同一条机灵 | 并行处理机、阵列处理机、超级向量处理机 |
多指令流单数据流(MISD) | 控制部分:多个 处理器:一个 主存模块:多个 | 被证明是不可能的,至少是不实际的 | 目前没有,有资料记载流水线处理机为此类 |
多指令流多数据流(MIMD) | 控制部分:多个 处理器:多个 主存模块:多个 | 能够实现作业、任务、指令等各级全面并行 | 多处理机系统、多计算机 |
指令的基本概念
一条指令就是机器语言的一个语句,它是一组有意义的二进制代码,指令的格式如下所示。
其中,操作码部分指出了计算机要执行什么性质的操作,例如,加法、减法、取数、存数等。地址码字段需要包含各操作数的地址及操作结果的存放地址等,从其地址结构的角度可以分为三地址指令、二地址指令、一地址指令和零地址指令。
三地址指令
![](https://i-blog.csdnimg.cn/blog_migrate/a3303523fe9f6b5f52a99c0989cb34e2.png)
例如,执行a+b=c操作时,就是使用的三地址指令。此时如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/25f2ce98303dbe35385ab0e000553d12.png)
二地址指令
![](https://i-blog.csdnimg.cn/blog_migrate/3ce3d11dcc16a9c59f0a30f800e5b64d.png)
例如,执行a+=b操作时,执行的就是二地址指令,此时如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/b99f9f996fbed2a583c20295f3a9b5c3.png)
一地址指令
![](https://i-blog.csdnimg.cn/blog_migrate/8b15e143b8131ec8491f5735e793aafc.png)
例如,执行a++操作时,执行的就是一地址指令,此时如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/f6bf5e5397e9f17fd845aed0695f7c2d.png)
零地址指令
![](https://i-blog.csdnimg.cn/blog_migrate/3dc03ac96d255697c433d87087314e7d.png)
例如,宕机就是零地址指令。
寻址方式
总体来说,寻址方式可以分为:立即寻址、直接寻址、间接寻址、寄存器寻址、寄存器间接寻址。
![](https://i-blog.csdnimg.cn/blog_migrate/387f2c5a3196219bf954e7af33dc0dbd.png)
立即寻址:操作数直接在指令中,速度快,灵活性差。
间接寻址:指令中存放的是操作数的地址。
间接寻址:指令中存放了一个地址,这个地址对应的内容是操作数的地址。
寄存器寻址:寄存器存放操作数。
寄存器内存放的是操作数的地址。
CISC与RISC
CISC和RISC分别表示复杂指令集系统和精简指令集系统,具体信息如下表所示。
指令系统类型 | 指令 | 存执方式 | 实现方式 | 其他 |
---|---|---|---|---|
CISC(复杂) | 数量多、使用频率差别大,可变长格式 | 支持多种 | 微程序控制技术(微码) | 研发周期长 |
SISC(精简) | 数量少,使用频率接近,定长格式,大部分为单周期指令,操作寄存器,只有Load/Store操作内存。 | 支持方式少 | 增加了通信寄存器、硬布线逻辑控制为主,适合采用流水线 | 优化编译,有效支持高级编程语言 |
如何比较CISC和RISC,分哪些维度?
指令数量、指令使用频率、存执方式、寄存器、流水线支持、高级语言支持。
CISC:复杂、指令数量多,频率差别大、多寻址。
RISC:精简、指令数量少。操作寄存器,单周期,少寻址,多通用寄存器,流水线
特别推荐一个分享架构+算法的优质内容,还没关注的小伙伴,可以长按关注一下:
长按订阅更多精彩▼
如有收获,点个在看,诚挚感谢