---
title: 计算机组成原理
date: 9997-12-29
tags: [计算机,计算机基础,计算机组成]
---
计算机组成原理笔记
## 0.1. 计算机系统的层次结构
应用软件、系统软件、硬件构成了计算机系统的三个层次结构。
```
软件
系统软件
操作系统
语言处理程序
标准库程序
服务性程序
数据库管理系统
计算机网络软件
应用软件
硬件
CPU(运算器、控制器、Cache)
运算器是处理数据的:数据加工。主要功能
算术运算,逻辑运算
所有的运算功能由一个被称为ALU(算术逻辑单元)的电路完成
功能强的ALU还能执行:定点运算、浮点运算,向量运算
暂放参加运算的数据和中间结果。(由多个通用寄存器来完成)
控制器是执行程序的
按规定管理 指挥(人的大脑)。处理指令的
功能:
正确执行每条指令(单个指令): 取⇒分析⇒执行
保证指令按规定序列自动连续执行(多个指令)
对异常情况和请求及时响应和处理
存储器是存储数据和程序的
三级存储系统
高速缓冲存储器
主存储器
辅助存储器
存储系统(高速缓存、主存储器、外存设备)
输入/ 输出设备等主要组成部分
系统总线
```
```
系统软件管理应用软件,直接管理硬件资源
TODO:它们[?谁]总是通过总线和接口连接在一起,构成一台完整的计算机
这三级存储器存储介质(半导体材料,磁性材料),工作原理和特性各不相同
```
计算机硬件的三个主要性能指标
![](https://img-blog.csdnimg.cn/20190129125335992.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTIzMDk2,size_16,color_FFFFFF,t_70)
借助系统总线的连接,计算机在各系统部件之间实现【地址信号、数据信号、控制信号】的传送
```
机器字长:CPU一次能处理数据的位数,通常与CPU的寄存器位数有关
指令字长:机器指令中二进制代码的总位数
存储字长:一个存储单元能存放的二进制数字位数
```
## 0.2. 计算机发展简史
```
冯.诺依曼体制特点:
【二进制】表示指令和数据
【存储程序】概念。(计算机不仅可以存储数据也可以存储程序)
计算机系统由【运算器、控制器、存储器、输入设备、输出设备】五大部件组成
运算器为核心
指令由操作码和地址码组成
指令在计算机中是顺序执行的,并受控制器的统一控制
```
```
现在的计算机结构(冯.诺依曼结构)
不改变的:存储程序(冯.诺依曼思想精华)
典型【冯.诺依曼】计算机结构以【运算器】为中心
改变的是:以【存储器】为中心,总线结构,分散控制
```
电子管计算机⇒晶体管计算机⇒中小规模集成电路计算机⇒超大规模集成电路计算机
```
计算机中【控制单元】负责指令译码。(控制器)
存储字是指存放在一个存储单元中的二进制【代码组合】
把汇编程序变成机器语言程序的过程是汇编(编译、编辑、链接)
计算机系统中算术逻辑单元和控制单元合称为【CPU】
存取速度:寄存器>cache>内存>外存
【兼容】是指计算机软件或硬件的通用性
```
https://blog.csdn.net/qq_41523096/article/details/86688528
## 0.3. 系统总线
### 0.3.1. 概念
```
总线不仅是指一组传输线,还包括相应的总线接口和总线控制器
分时共享是总线的主要特征
共享:是指总线所连接的各部件都通过共享它传递信号
分时:是指在某一时刻只允许有一个部件将信号发送上总线
```
总线所连的各个部件都应有三态门电路,这是最基本的总线接口逻辑电路
```
总线的基本结构
一组传输线总线接口(三态门)
总线接口寄存器(缓冲作用)
总线控制器(维护总线协议)
```
### 0.3.2. 分类
```
系统总线包括:数据总线、地址总线、控制总线和电源线
单向总线:地址总线
双向总线:数据总线、控制总线
都是并行总线
```
### 0.3.3. 结构
以存储器为中心的双总线结构(当前广泛使用),减轻了系统总线的负担
```
大多数计算机采用了分层次的多总线结构
速度差异较大的设备分享不同速度的总线,
速度相近的设备共享同一速度总线
```
### 0.3.4. 控制
总线的控制主要解决通信双方如何获知数据传输开始和传输结束,以及通信双方如何协调配合
```
线传输周期(总线周期)
一次总线操作所需要的时间。(分四个阶段:申请、寻址、传输、结束)
申请分配阶段:主设备提出申请,总线仲裁机构决定授予总线使用权
寻址阶段:主设备取得了总线使用权后,通过总线发出访问从设备的存储地址或设备地址及有关命令,启动传输
传输阶段:主设备和从设备之间进行数据交换
结束阶段:主设备从系统总线上撤出,并让出总线使用权
```
```
同步通信:
设置统一的时钟信号,数据传送时,收发双方严格遵循这个时钟信号。(和最慢的部件同步!!)
应用范围:总线上各部件间工作速度差异较小,其控制较简单,但时间利用率可能不高
异步通信:
没有统一的时钟信号,数据传送时,采用应答方式工作
应用范围:总线上各部件工作速度差异较大,传输时间可根据需要而定,时间利用率高,控制复杂
异步分为:不互锁、半互锁、全互锁
半同步通信:
将同步与异步相结合。既有公共时钟控制又允许不同速度部件谐和工作(插入等待周期。)
分离式通信:
充分挖掘系统总线每个瞬间的潜力
将一个总线传输周期分成两个子周期分给主从部件
```
### 0.3.5. 仲裁
```
连接到总线上的功能部件有主和从两种形态
如:CPU在不同的时间可以主动,也可以被动,但是存储器只能被动
【主设备】可以启动一个总线周期,【从设备】只能响应主部件的请求
每次总线操作,只能有一个【主设备】占用【总线控制权】,但同一时间里可以有一个或多个从设备
为了解决多个主设备同时竞争总线控制权,必须具有【总线仲裁部件】,以某种方式选择其中一个主设备作为总线的下一次主方
对多个主设备提出的总线请求,一般采用【优先级】或【公平】策略进行仲裁
除CPU外,输入输出设备也可以提出总线请求
对输入输出设备的总线请求采用【优先级】策略。
```
```
按照总线仲裁【电路的位置】不同,仲裁分为集中式和分布式仲裁两类。
集中式仲裁总线控制:总线控制逻辑电路基本集中在一起
分布式仲裁总线控制:总线控制逻辑基本分散在总线各个部件中
```
```
集中式仲裁
集中式仲裁中每个总线上的部件有两条线连仲裁器
一条是送往仲裁器的总线请求信号线BR
一条是仲裁器送出的总线授权信号线BG。
(1)链式查询方式
离仲裁器最近的设备具有最高优先级,通过接口的优先级排队电路来实现。
(2)计数器定时查询方式
(3)独立请求方式
```
https://blog.csdn.net/qq_41523096/article/details/86688682
## 0.4. 存储器
```
内存
在计算机中,存储正在运行的(部分)程序和数据的部件。
通过地址总线、数据总线、控制总线与CPU等其他部件相连
内存功能:存放程序和数据部件,并满足在计算机执行的过程中,能够随机访问这些程序和数据
①存(存放)
②取(访问)
```
![访问](https://img-blog.csdnimg.cn/20190129131830719.png)
### 0.4.1. 存储器基本结构
```
存储体
地址寄存器
地址译码器
数据缓冲寄存器
读写控制线路
先送地址后读写数据
```
### 0.4.2. 存储器的分类
```
一个触发器能存储一位二进制代码。
一个触发器电路称为一个存储元(存储位),是存储器中的最小单位。
```
```
随机读写存储器(RAM):在程序执行过程中可读可写。
静态的和动态的RAM
SRAM 静态 作为cache
DRAM 动态 做内存 (因为需要刷新)
只读存储器(ROM):在程序执行过程中只读。
```
```
存储器的层次结构(三级存储系统):由系统统一调度、统一管理。
高速缓冲存储器(Cache)
高速缓冲存储器也有两神:
一是在CPU内(一级 CACHE、二级 CACHE)。CPU通过内部总线对其进行读/写操作
一是在CPU外(主板上)。CPU通过存储器总线对其进行读/写操作
主存储器(内存,Main memory)
围绕主存储器(内存)来组织和运行的。
SRAM存储器: 存取速度快、集成度低、位平均功耗高,小容量主存。
DRAM存储器: 存取速度慢、集成度高、位平均功耗低,大容量主存。(定时通电刷新)
性能指标:存储容量、存取时间、存储周期、存储器带宽。
辅助存储器(外存)
三个要点: 速度 容量 费用
离CPU越近的速度越快,越远容量越大
多级存储系统可以实现的前提: 程序运行时的局部性。
```
主存储器性能指标
![主存储器性能指标](https://img-blog.csdnimg.cn/20190129131940908.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTIzMDk2,size_16,color_FFFFFF,t_70)
CPU不能直接访问辅助存储器(外存),程序与数据从辅助存储器调入内存后,再从内存调入CACHE, CPU访问CACHE,读写程序和数据。
### 0.4.3. 存储单元(地址译码)
```
通过地址译码寻找存储单元,需要有译码器
地址译码器:把地址信号翻译成,对应存储单元的选择信号。
单译码器。
双译码器。
双译码比单译码使用的选择线少,可以减少芯片的引脚
```
### 0.4.4. 存储器(芯片封装)
![芯片及其引脚](https://img-blog.csdnimg.cn/20190129131953985.png)
要会画芯片的封装
```
地址线,数据线(i/o),读写信号线(WE),片选信号线(CS)
```
## 0.5. 主存储器
![](https://img-blog.csdnimg.cn/20190129132052751.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTIzMDk2,size_16,color_FFFFFF,t_70)
### 0.5.1. 主存储器扩展
内存条是由多个存储芯片扩展而成。扩展后需要选芯片。扩展方法选择标准:片选信号越少越好
位扩展(数据线扩充)
![](https://img-blog.csdnimg.cn/20190129132000747.png)
字扩展(地址线扩充)
![](https://img-blog.csdnimg.cn/20190129132003737.png)
位字扩展(先位后字)
![](https://img-blog.csdnimg.cn/20190129132007175.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTIzMDk2,size_16,color_FFFFFF,t_70)
存储芯片无论位扩展还是字扩展,各芯片的片内地址线条条相并联。
即所有A0连在一起,所有A1连在一起,所有A2连在一起为什么?
各片內的存储单元地址相同,解决了地址线的扩充问题
### 0.5.2. 主存储器与CPU的连接
CPU对內存进行读写操作时,要给出**内存单元的地址信号**,给出**对内存单元进行操作的读写控制信号**,然后通过**数据总线**传输数据**信号**。
```
连接方法
CPU的地址总线:连接内存全部地址信号线;
CPU的控制总线:连接内存的读/写控制信号线;
CPU的数据总线:连接内存的数据线。
1)各扩展芯片的片内地址线、数据线、控制信号线:条条并连。
2)扩展后的产生的高位地址线:经译码,产生片选信号。
```
TODO:译码器的输出端和片选信号怎么连
存储器与CPU链接举例:
![](https://img-blog.csdnimg.cn/20190129132023532.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTIzMDk2,size_16,color_FFFFFF,t_70)
### 0.5.3. 主存读写周期与CPU的配合
```
在读过程中,地址信号不能变
在写过程中,地址信号、数据信号都不能变
```
![](https://img-blog.csdnimg.cn/20190129132028273.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTIzMDk2,size_16,color_FFFFFF,t_70)
### 0.5.4. 主存储器的刷新
**刷新周期**,DRAM 所有存储单元都被刷新一次的时间。一般为2ms。
整个主存中,各芯片可同时刷新,芯片内逐行刷新,每次刷新一行。
几种刷新方式:
```
1)集中式刷新
在2ms内按存储容量集中安排刷新时间(刷新期间停止读/写操作)
2)分散式刷新
把存取周期分成两部分。一半读写一半刷新,一个周期刷一行。
(如果CPU存取周期是主存存取周期的二倍,使用此方法好)
3)异步式刷新
在2ms内,分散式地对128行逐行刷新一遍,每一行平均刷新的时间
间隔为 2ms / 128 = 15.625us,即每隔15.6us提出一次刷新请求。
这样,每行之间的刷新间隔仍为2ms。
相对于分散式刷新,它减少了刷新次数;
相对于集中式刷新,它的主机“死区”缩短了很多
```
### 0.5.5. 主存储器的性能提高
```
提高主存制造技术
改进存储器结构
单体多字存储器
单体双端口存储器
多体交叉存储器(重点)
```
![](https://img-blog.csdnimg.cn/20190129132045605.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTIzMDk2,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20190129132048570.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTIzMDk2,size_16,color_FFFFFF,t_70)
## 0.6. 高速缓冲存储器(Cache)
为了弥补主存速度的不足
![](https://img-blog.csdnimg.cn/20190129132113473.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTIzMDk2,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20190129132116823.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTIzMDk2,size_16,color_FFFFFF,t_70)
`系统效率 = (Cache存取时间/平均存取时间)`
```
Cache 的全部功能都是由硬件完成的
内存地址 转 Cache地址)
先有内存的地址,然后再有cache的地址
```
## 地址映象
Cache与主存中存储单元地址映象关系
```
映象
物理意义:位置的对应关系
将主存地址变成Cache地址。
```
![](https://img-blog.csdnimg.cn/2019012913212414.png)
```
直接映象
方式:多对一映射
主存中的一块只能映象到Cache某一个固定的块中
特点:Cache的利用率不高
全相联映象
主存中任一块都可以映象到Cache中任一块上。
必须采用相联存储器
```
![](https://img-blog.csdnimg.cn/20190129132132851.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTIzMDk2,size_16,color_FFFFFF,t_70)
TODO:内存地址如何换成cache地址 4-04
## 替换算法
当未命中而将新的主存块调入Cache中,而它的位置已被占满,就会产生替换问题。
```
替换算法目的:获得最高命中率
先进先出算法 FIFO
最近最少使用算法 LRU
平均命中率 LRU>FIFO
LRU替换算法反映了程序的局部性特点
```