前言
https://pan.baidu.com/s/17AhjzZuchwi1VCdWBjV2o3IlYrNxM3Rwdi50==?linksource=zhihu&login_type=weixin&at=1697384777060#list/path=%2F 复习使用的是唐朔飞的计算机组成原理PPT(500页)痛苦面具-.-
一、计算机概论
- 计算机系统简介
1.计算机系统:1.硬件(计算机的实体,如:主机、外设) 2.软件(由具有各类特殊功能的信息、程序组成)
软件:
- 系统软件:用来管理整个计算机系统:语言处理程序、操作系统、服务型程序、数据库管理系统、网络软件
- 应用程序:按任务需要编制成的各种程序
2.计算机的解题过程:高级程序语言–>翻译–>目标程序–>运行–>结果
3.计算机体系结构和计算机组成
计算机体系结构:程序员所见到的计算机系统的属性、概念性的结构与功能特性(指令系统、数据类型、寻址技术、I/O机理)
计算机组成:实现计算机体系结构所体现的属性(md,不说人话)
区分计算机组成和计算机体系结构是十分重要的
一个直观的例子
一台机器是否具备乘法指令的功能,这是计算机体系结构的问题
如何实现这个乘法指令的,使用专门的乘法电路还是采用连续相加的加法电路等,这是计算机组成的问题
作用 许多计算机厂商向用户提供一系列体系结构相同的计算机,而它们的组成却有很大的差异,因此只知道结构不知道组成是选不好适合你的电脑机器的
专业的说 计算机体系结构是指那些能够被程序员所见到的计算机属性。所看到的计算机属性,包括指令集、数据类型、存储器寻址技术、I/O机理等(抽象,概念性) 比如IBM PC和 RS6000 是具有不同的指令集、数据类型、存储器寻址技术、I/O机理,所以这两种机器的结构各不相同。 计算机组成就是如何具体实现这些计算机结构所体现的属性,比如硬件细节,指令集体现了机器的属性,这是结构问题。但指令的实现,比如如何取指令、分析指令、取操作数等等,这些都是计算机组成问题 ———————————————— 版权声明:本文为CSDN博主「yilyil」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_42146775/article/details/105477073
- 计算机的基本组成
1.冯·诺依曼计算机的特点:
- 计算机由五大部件组成:控制器、运算器、存储器、输入设备、输出设备
- 指令和数据以同等地位存于存储器,可按地址寻访
- 指令和数据用二进制表示
- 指令由操作码和地址码组成
- 存储程序
- 以运算器为中心
ps:
控制器:作为计算机的指挥中枢,它可以确保计算机以正确的方式和顺序执行所有操作
运算器(ALU):负责数学运算和逻辑运算
控制器+运算器 -> cpu(中央处理器)
存储器:内存:比如内存条、基于电存取数据,断点数据全部丢失、用于临时保存数据,存取速度快。外存:用于永久保存数据,断电数据仍然存在,如:1.机械硬盘:存取数据慢,基于磁存取数据、2.固态硬盘(SSD):依赖电子存取数据,相对机械硬盘速度较快
输入设备:键盘、鼠标、麦克风等等
输出设备:显示器、耳机、打印机等等
2.现代计算机硬件框图
3.计算机的工作步骤
4.计算机的解题过程
①初态:ACC中要保存 被加数
②假设加法指令中,加数的地址为M,那么取出M中的数据放到X寄存器中,即 [M]->X
③由ALU执行加法,最后放到ACC中
减法操作:减法操作与加法操作一样
①初态:被乘数放在ACC中
②假设乘法指令中,乘数的地址为M,那么[M]->MQ
③根据约定,被乘数要放到X中,所以[ACC]->X
④乘法通过累加和移位进行,所以要让ACC保存累加的内容。在这之前,要将ACC清零,即0->ACC
⑤[X]×[MQ]->ACC//MQ
“//”表示寄存器的连接关系
除法操作:
①ACC中保存被除数
②假设除法指令中,除数保存在地址M中,那么[M]->X
③ALU执行除法运算,商存在MQ中,余数放在ACC中
可以看到乘法和除法中用到了MQ,乘法用MQ保存乘数,除法用MQ保存商,所以叫做乘商寄存器
5.计算机硬件的主要技术指标
- 机器字长:CPU 一次能处理数据的位数与 CPU 中的 寄存器位数 有关
- 运算速度:主频、吉普森法、MIPS、CPI、FLOPS
- 存储容量:存放二进制信息的总位数
ps:1KB = 1024B (2^10B) = 2^13b 、1B = 2^3b
二、计算机的发展及应用
(不要问为什么还在看,要是问,就当是在熬夜看小说吧)
- 计算机的发展史:略
- 计算机的应用:略
- 计算机的展望:略
三、系统总线
- 总线的基本概念
- 什么是总线:总线是连接各个部件的信息传输线,是各个部件共享的传输介质,有并行、串行之分
- 总线的分类
- 内部总线:指芯片内部连接各元件的总线。例如CPU芯片内部,在各个寄存器、ALU、 指令部件等各元件之间有总线相连。
- 系统总线:连接CPU .存储器和各种I/O模块等主要部件的总线。又称板级总线或板间总线。具体分类:处理器总线、存储器总线、I/O总线
- 通信总线:这类总线用于主机和I/0设 备之间或计算机系统之间的通信。
- 总线特性
- 机械特性:尺寸、形状、管脚数 及 排列顺序
- 电气特性:传输方向 和有效的 电平 范围
- 功能特性:每根传输线的 功能:地址、数据、控制
- 时间特性:信号的 时序 关系
- 总线的性能指标与标准
- 总线控制
总线判优控制的集中式方式有三种:链式查询、计数器定时查询、独立请求方式
在查询链中离总线控制器最近的部件具有最高优先权,离总线控制器越远,优先权越低。
1
2
3
4
5
链式查询通过接口的优先权排队电路实现。
优点:结构简单,主要运用在简单的嵌入式系统中
缺点:速度慢,需要一直向下查询,对电路故障特别敏感
注:计数器的初值可用程序设置,以方便地改变优先次序。当然这种灵活性是以增加控制线数为代价的。
1
如果计数器的初值是从0开始,各部件的优先次序与链式查询法相同。
注:优点:响应时间快,对优先次序的控制相当灵活 缺点:控制线数增加了很多
- 总线通信的四种方式:
- 同步通信:由 统一时标 控制数据传送
- 异步通信:采用 应答方式,没有公共时钟标准
- 半同步通信:同步、异步结合
- 分离式通信:充分 挖掘 系统 总线每个瞬间 的 潜力
同步通信
注:同步通信采用速度最慢的那个模块作为标准,即使有关模块的速度比较快,也要按照最慢的模块进行设置。
1
2
3
4
5
一般应用在总线长度比较短,并且各个模块的存取时间比较一致的情况下,使用同步式传输数据。
同步通信的优点:同步通信具有较高的传输效率,可靠性较高
缺点:所有模块都强求一致的同一时限,使设计缺乏灵活性。
异步定时方式
1
2
3
4
5
6
7
8
9
10
11
12
ps:复习一下
TCP三次握手:为了保证客户端和服务器端的可靠连接,TCP建立连接时必须要进行三次会话,也叫TCP三次握手,进行三次握手的目的是为了确认双方的接收能力和发送能力是否正常。
公安局:你好!陈某,听得到吗?(一次会话)
陈某:听到了,王哥,你能听到吗 (二次会话)
公安局:听到了,你过来自首吧 (开始会话)(三次会话)
- 第一次握手 TCP客户进程也是先创建传输控制块TCB,然后向服务器发出连接请求报文,这是报文首部中的同部位SYN=1,同时选择一个初始序列号 seq=x ,此时,TCP客户端进程进入了 SYN-SENT 同步已发送状态
- 第二次握手 TCP服务器收到请求报文后,如果同意连接,则会向客户端发出确认报文。确认报文中应该 ACK=1,SYN=1,确认号是ack=x+1,同时也要为自己初始化一个序列号 seq=y,此时,TCP服务器进程进入了 SYN-RCVD 同步收到状态
- 第三次握手 TCP客户端收到确认后,还要向服务器给出确认。确认报文的ACK=1,ack=y+1,自己的序列号seq=x+1,此时,TCP连接建立,客户端进入ESTABLISHED已建立连接状态 触发三次握手
半同步方式
分离式方式
四、存储器
(这也太多了把,奔溃了………..
- 概述
- 存储器主要分为ROM和RAM,根据图1先来讲讲RAM和ROM,两者相比,的最大区别是RAM在断电以后保存在上面的数据会自动消失,而ROM不会自动消失,可以长时间断电保存。
- 主存储器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
主存中存储单元:
下图中,每一个小方块就代表一个存储单元,大方块是主存中的存储体。
以8位二进制作为一个存储单元,也就是一个字节。
通常,字由字节组成。(说白了,字和字节都是一位一位构成的,只不过字包含了字节)
下图一个存储单元为一个字节,这4个字节又构成了1个字。每个字有字地址,在图中形象化的表示了。
那么现在一个问题是,下图的字长为多少?
经过分析,4个字节组成了1个字,一个字节8位,所以总共是32位,字长也就是32位。 ![image-42](/assets/blog_res/2023-10-14-jisuanjijichu2/image-42.png)
了解了上面的概念原理,我们来做几个例子:
1.设地址线为24根,按字节寻址,求访问范围?
2.如果存储容量不变,若字长为16位,求按字寻址范围?
3.如果存储容量还不变,若字长为32,求按字寻址范围?
我们先分析第一个问题。
如果地址线有24根,并且每根地址线有0、1两位,我们可以从000…000(24位)一直到111…111(24位)。所以一共就有224位,也就是有224个地址。转化完成就是16M。这些地址表示存储单元的位置,所以存储单元的个数也为16M。
单位:
字节—Byte/byte
位—bit
1Byte=8bit
转换过程:
2^24Byte=16777216Byte
16777216Byte/1024=16384KByte
16384KByte/1024=16MByte
第一个问题说了,我们要按字节寻址,有多少存储字。
一个存储单元可以存放一个8位二进制数,这个二进制数就是一个存储字。说白了就是问有多少个存储单元。经过分析就有16M个。
关于存储容量:
1
2
3
4
5
6
7
8
9
10
11
12
一个存储单元中有8位,那么16M个存储单元(地址)中,可以存放16M×8位。这也就是存储容量。
假如地址寄存器MAR是8位,每个存储单元可以写入/读出10位的二进制数。存储容量 就应该为28×10位。
字地址:用该字高位字节的地址表示。也有用低位字节的地址来表示字地址。
那么来看第二个问题:
存储容量不变,也就是有16M*8位,若字长为16位,我们按字寻址,有多少存储字。
下图的字长为16位:一个字节8位,两个字节自然就是16位。 ![image-43](/assets/blog_res/2023-10-14-jisuanjijichu2/image-43.png)
如果是按字寻址,我们知道字长16位,那么用总容量除以字长就是存储字的个数:
(16M*8)/16=8M
- 随机存取存储器 ( RAM ) 和 只读存储器 ( ROM )
(原理没眼看了,跳了)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
一、寄存器
在单片机应用上,寄存器(register)通常用于存储程序的运行时状态,例如程序计数器(Program Counter,PC)用于存储下一条将要执行的指令的内存地址。
二、存储器
1.RAM随机存储器(RAM)是计算机存储器的一种,它的特点是数据可以随机存取。
读取和写入速度非常快,但需要不间断的电源供应。
RAM可以被CPU读取和写入数据,且存储器中的数据在断电后会丢失。
RAM还分为静态存储(SRAM)和动态存储(DRAM)两种,SRAM比DRAM速度更快,所以价格也更贵。
在单片机应用里面,一般RAM用来存变量、函数参数、返回值等数据,掉电后数据会丢失。
2.ROM只读存储器(ROM)是一种只能读取数据,不能写入数据的存储器,数据一旦写入之后就无法更改。
ROM存储器中的数据是固化在芯片中的,断电后数据不会丢失。
ROM被用于存储固化的程序和数据,例如BIOS、固件等。
常见的ROM有EPROM、EEPROM、Flash等。在单片机的应用里,ROM一般用来存储程序,或者一些固化的图片数据。
ROM种类:
1. 掩模 ROM ( MROM ) :行列选择线交叉处有 MOS 管为“1”、行列选择线交叉处无 MOS 管为“0“
2. PROM (一次性编程) ![image-44](/assets/blog_res/2023-10-14-jisuanjijichu2/image-44.png)
3. EPROM (多次性编程)
4. EEPROM (多次性编程 ) :电可擦写、局部擦写、全部擦写
5. Flash Memory (闪速型存储器) :EPROM 价格便宜 集成度高、EEPROM 电可擦洗重写、比 EEPROM快、具备 RAM 功能
存储器容量的扩展
1、位扩展——增加存储字长
位扩展的目的是为了增加存储字的字长。
假设现在有1K(1024个)4位的存储芯片(容量为4096bit)若干,要想构成一个1K8位的存储器,我们可以使用两片1K*4位的存储芯片来构成,如下图
我们通过片选信号CS同时选中两片存储芯片,同时进行8位数据的读出和写入,例如,每片芯片有10跟地址线,4跟数据线,它们的连接方式如下
对于如上例子,位扩展的关键就是将两个存储芯片当成一个存储芯片来用,让两个存储芯片同时工作,同时被选中,同时做读操作,同时做写操作,要想保证同时,就是把两个芯片的片选CS,用相同的信号进行连接。
2、字扩展——增加存储字的数量
假设现在有1K8位的存储芯片若干,要想构成一个2K8位的存储器,我们可以使用两片1K*8位的存储芯片来构成,如下图
每一个存储芯片的容量是1K8位,我们要构成一个2K(11位2进制位)8的存储器,而存储芯片的每一片的容量是1K(10位二进制位),因此我们需要使用两片1K*8位的存储芯片来构成,如图
总共有11条地址线,对于A10,我们将它当成片选信号线,当A10=0时,片选选中左边的存储芯片工作,右边不工作,当A10=1时,通过一个取反,片选选择右边的芯片工作,这从外部看来就是从 0 0000000000 ~ 1 1111111111 刚好是从0~2047共2K个存储单元,每一个存储单元存放8位的二进制代码。
3、字、位扩展
假设现在有1K4位的存储芯片若干,要组成4K8位的存储器,我们可以使用8片1K4位的存储芯片来构成。首先拿两片,来构成1K8位这样一组芯片,接着,我们需要4组来构成4K*8位的存储器。
那么如何进行连接呢?
其实就是将上述两种方法进行综合,4K8的存储器,4K(12位二进制位,即12根地址线),8bit,就是8根数据线,1K4bit的芯片有需要10根地址线,也就是说系统给出的从A0-A11 12根地址线,其中的10根A0-A9是直接送到芯片当中构成1K*8的一个小的存储器,剩余的2根地址线(4个地址)A11-A10,我们用来做片选信号,如下图
1
2
3
4
5
6
7
8
9
10
11
12
4K的空间我们分配到了4个存储器当中,每个存储器包含了两片1K*4bit的存储芯片,
第一个存储器的范围为 00 0...0(10个0)~00 1...1(10个1)
第二个存储器的范围为 01 0...0(10个0)~01 1...1(10个1)
第三个存储器的范围为 10 0...0(10个0)~10 1...1(10个1)
第四个存储器的范围为 11 0...0(10个0)~11 1...1(10个1)
由A11和A10来判断要访问的地址在哪一个存储器当中,我们采用译码器进行译码,当
A11 =0 A10=0 选择第一个存储器
A11 =0 A10=1 选择第二个存储器
A11 =1 A10=0 选择第三个存储器
A11 =1 A10=1 选择第四个存储器
存储器与 CPU 的连接
- 地址线的连接:由于CPU地址线一般多于存储芯片地址线,因此一般CPU低位地址线与存储芯片相连,高位地址线用作控制信号。
- 数据线的连接
- 读/写命令线的连接:CPU读/写命令线一般可直接与存储芯片的读/写控制端相连,通常高电平为读,低电平为写。
- 片选线的连接:由于存储器是由许多存储芯片组成的,存储芯片的片选控制线和CPU的高位地址有关,CPU的高位地址线经过译码器译码,和访存控制信号共同作用,产生存储芯片的片选信号。访存控制信号,例如,低电平有效时,访问存储器;高电平有效时,访问I/O。
- 合理选择存储芯片:系统程序区应该选择ROM ,用户程序区选择RAM。 其他,比如时序、负载等
存储器的校验
1.对存储器校验的原因: 以内存为例,内存是电子设备,信息保存在电容当中,若采用静态RAM,则是保存在四管的触发器当中,若内存所处的电磁环境比较复杂,或在空间环境下受到带电粒子的打击,可能造成电容的充放电或触发器的翻转,存在在存储器的信息可能会出错
2.编码的检测能力和纠错能力与任意两组合法代码之间二进制的最少差异数有关 差异的位数越多,检错能力和纠错能力就越强 若只差一位,既不能检错,也不能纠错 若相差两位,可以检1位错,纠0位错 若相差三位,可以检1位错,纠1位错
3.编码的最小距离 任意两组合法代码之间二进制的最少差异数
编码的检测能力和纠错能力与编码的最小距离关系 L-1=D+C(D>=C) L:编码最小距离 D: 检错位数 C: 纠错位数
假设L=3,要使编码具有一位纠错能力,至少有一位检错能力
4.汉明码 (1)定义:指具有一位纠错能力的编码
(2)采用奇偶校验 采用分组校验
(3)奇校验:加上一个校验位,加上原来的数据位,两者和在一起,代码当中1的个数是奇数个。 偶校验:加上一个校验位,加上原来的数据位,两者和在一起,代码当中1的个数是偶数个。
提高访存速度的措施: 采用高速器件、调整主存结构、采用层次结构 Cache –主存
高性能存储芯片 (1) SDRAM (同步 DRAM) 在系统时钟的控制下进行读出和写入 CPU 无须等待 (2) RDRAM 由 Rambus 开发,主要解决 存储器带宽 问题 (3) 带 Cache 的 DRAM 在 DRAM 的芯片内 集成 了一个由 SRAM 组成的 Cache ,有利于 猝发式读取
高速缓冲存储器
什么是 cache ?
cache 是一种小容量高速缓冲存储器,由 SRAM(static random access of memory)组成。直接制作在 CPU 芯片内,速度几乎与 CPU 一样快。程序运行时,CPU 使用的一部分数据/指令会预先拷贝在 cache中,cache 中的内容是主存储器中部分内容的映像。当CPU 需要从内存读写数据或指令时,先检查 cache,若有,就直接从 cache 中读取,而不访问主存。
实现 cache 机制需要解决的问题:
- 分块?
- 主存块与 cache 之间如何映射?
- cache 的替换机制?
- 写数据如何保持一致? ….(过于复杂,不看了
辅助存储器
辅存: 辅助存储器,也叫外存储器,读取速度最慢,容量最大,价格最低。其实辅存可以被看作外设。
主存: 也叫内存,位于主板上,CPU可以直接从内存中读取数据。(实际操作中其实是CPU先去缓存cache中找数据,找不到再去内存读,一般找到的概率高于90%,但这一过程对于用户是透明的。)主存的读写速度高于辅存(能达到1000倍),但容量小于辅存。
缓存: cache,位于CPU内部,速度很快,是主存读取速度的10倍,但容量很小,价格贵。
CPU内部寄存器: CPU包括运算器和控制器,其中的寄存器有数据寄存器DR,地址寄存器AR,程序计数器PC,指令寄存器IR等。
辅存的种类
辅存可分为以下三类:磁表面存储器、光存储器、半导体存储器
- 磁道
存储在介质表面上的信息的磁化轨迹。
- 柱面
在磁盘存储器中,对有多个盘片构成的盘组中,由处于同一半径的磁道组成的一个圆柱面。
注意:柱面数 = 磁道数
磁道与柱面的关系大致是这样:
- 道密度
半径方向单位长度磁道数。
- 位密度
磁道方向上单位长度记录的二进制位数。
技术指标
- 存储密度
单位长度或单位面积磁层表面所存储的二进制信息量。
- 存储容量
指磁表面存储器所能存储的二进制信息总量。
- 寻址时间
磁头从启动到找到存储位置的时间称为寻址时间,分成找道时间和等待时间。
找道时间Ts: 指的是磁头从当前磁道移动到目标磁道的时间,一般以平均找道时间表示。
等待时间Tw: 指的找道完成后,磁头等待读写区域旋转到磁头正下方所需要的等待时间,一般也以平均等待时间表示,平均等待时间为磁盘旋转半圈的时间。
- 数据传输率
单位时间内磁表面存储器向主机传送数据的位数或字节数。
数据传输率D=单磁道容量/转一圈时间
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
【例题】
设磁盘组有20个可用记录面;存储区域内直径为2.36英寸,外直径5.00英寸;道密度为1250TPI,内层位密度52400bpi,转速为2400rpm,(其中TPI表示每英寸磁道数,bpi表示每英寸位数)。问:
(1) 共有多少个柱面?
(2)每道存储多少字节?
(3)盘组总存储容量是多少?
(4)数据传输率是多少?
【解答】
先说明,一般认为每个磁道存储的位数相同。
(1)柱面数 = 磁道数 = (5.00 - 2.36) * 1250 = 3300
(2)2.36 * pi * 52400 / 8 / 1024 = 47.4KB
(3)20 * 3300 * 47.4 / 1024 = 3055.11MB
(4)转速位2400r/min,故转一圈要1/40s,一个磁道有47.4KB,故数据传输率 = 47.4 / (1/40)/1024 = 1.85MB/s
输入输出系统
距离12点只剩下1.5个小时了,还有6章没复习,只能有所省略了
- 概 述
- 输入输出系统的发展概况
- 早期:分散连接、CPU 和 I/O设备 串行 工作 程序查询方式
- 接口模块和 DMA 阶段:总线连接、CPU 和 I/O设备 并行 工作(中断方式、DMA 方式)
- 具有通道结构的阶段
- 具有 I/O 处理机的阶段
- 输入输出系统的组成
- I/O 软件:
- I/O 指令(操作码、命令码、设备码),CPU 指令的一部分
- 通道指令:通道自身的指令、指出数组的首地址、传送字数、操作命令、如 IBM/370 通道指令为 64 位。具有通道的计算机中,I/O指令不负责数据输入输出,而主要完成启停设备、通道控制,实际数据传输由通道完成。
- I/O 硬件:
- 设备 I/O 接口
- 设备 设备控制器 通道
- I/O 软件:
- I/O 设备与主机的联系方式
- I/O 设备编址方式:
- 统一编址 用取数、存数指令
- 不统一编址 有专门的 I/O 指令
- 设备选址:用设备选择电路识别是否被选中
- 传送方式:并行、串行
- I/O 设备编址方式:
联络方式:立即响应、 异步工作采用应答信号、同步工作采用同步时标
- I/O 设备与主机的连接方式:辐射式连接、总线连接
- 程序中断
中断过程
计算机在执行程序的过程中,当出现异常情况或特殊请求时,计算机停止现行程序的运行,转向对这些异常情况或特殊请求的处理,处理结束后再返回到现行程序的间断处,继续执行原程序,这就是中断。
中断方式
中断程序消除了CPU原地踏步的情况,但是,CPU在响应中断请求后,必须暂停现程序,转而去执行中断服务子程序,消耗了CPU资源,并且中断处理过程是有开销的。
中断源
- 人为设置的中断(定时中断)
- 程序性事故:溢出、操作码不能识别、除法非法
- 硬件故障
- I/O设备
外部事件(按键中断)
可屏蔽中断
每一个中断源都对应一个中断屏蔽位,一旦处理器把中断屏蔽位设为 “真”,即屏蔽了这个中断源。这个中断源再发出中断请求,也不会被响应。
1
不可屏蔽中断
只要外设通过相应的引脚发出了中断请求,CPU一定会响应这个中断。
1
各中断源如何向 CPU 提出请求?
每个中断源都对应一个中断请求标记触发器,中断源提出了中断请求,就会把这个触发器置为 “真”,这就是中断源提出中断请求的唯一标志。
1
各中断源同时提出请求,怎么办?
采用中断优先级比较电路或软件方法,来比较中断优先级,选出其中优先级最高的那个中断去响应。
1
CPU在什么条件下响应中断?
【条件1】程序状态字,一般写作PSW,其中有两类信息,一类信息叫做控制位,另一类信息叫做状态位。
中断允许位,是一个中断的总开关,如果这个位的值是 “1”,就代表 CPU 现在可以接受外部的中断;如果是 “0”,就代表 CPU 根本不接受中断,所以这个位也称作中断总开关。
【条件2】每一个可屏蔽中断,都有一个中断屏蔽位,中断屏蔽位如果是 ”1“,就代表 CPU 要把这个中断源屏蔽掉。只有当这个位是 ”0“,表示没有屏蔽这个中断源时,CPU才可以去响应中断。
1
CPU在什么时间下响应中断?
CPU 只能在执行完当前指令后,才能去响应中断。CPU 不会在指令执行过程中响应中断。
1
CPU以什么方式响应中断?
在中断响应中计算机会去做三件事,这三件事没有任何一条指令控制,都是自动去做,因此叫做中断隐指令。
硬件关中断 进入中断程序之后会有一个非常关键的动作,叫做保护现场,我们希望保护现场的时候中断的总开关是关着的,所以要有一个硬件自动关中断的操作。
保护断点
中断服务程序的返回地址,当发生中断跳转时,即将要执行到的那条指令的地址,断点必须保存。
向中断服务程序的入口跳转
硬件方式、软件方式
1
如何保护现场?
把中断服务程序运行过程中要用到的那些寄存器值送到堆栈里面保护起来,这就是保护现场。
1
如何恢复现场,如何返回?
恢复现场和保护现场总是成对出现。恢复现场是指在中断服务程序返回之前,按照刚才入栈的逆序把堆栈顶端的若干个信息弹回到相应的寄存器中。
把断点的值送给程序计数器,程序计数器就会指向刚才在主程序中马上要执行而又没有执行到的那条指令的位置,接下来就会取这条指令并执行,完成中断的返回。
1
处理中断的过程中又出现新的中断怎么办?
中断的嵌套。
1
2
3
中断接口电路:略
DMA 工作方式
DMA的基本定义
DMA,全称Direct Memory Access,即直接存储器访问。
DMA传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。当CPU初始化这个传输动作,传输动作本身是由DMA控制器来实现和完成的。DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场过程,通过硬件为RAM和IO设备开辟一条直接传输数据的通道,使得CPU的效率大大提高。
DMA 与中断的比较
DMA 接口
- HLDA: CPU 发给接口的总线应答信号
- HRQ: DMA 接口发给 CPU 的总线使用请求信号
- DACK: DMA 控制器发给设备的应答信号
- DREQ: 设备发给 DMA 控制器的请求信号
- AR: 主存地址寄存器
- WC(Word Counter): 计数器
- DAR: 设备地址寄存器
- BR: 数据缓冲寄存器
1
2
3
4
5
6
7
8
预处理:CPU 参与
数据传送:CPU 不参与,由 DMA 控制器完成
后处理:中断形式,CPU 参与
后处理
由中断服务程序完成,主要目的如下。
检验输入主存的数是否正确。
决定是否继续使用 DMA,重新初始化 DMA,或者停止设备。
测试传送过程是否正确,错则转诊断程序。
DMA普通传输过程
DMA有一个使能信号,通过使能信号来控制DMA工作,在使用DMA时,首先需要使能DMA。 针对于不同的传输方向,其传输过程略有不同。
从外设向存储器传输数据
DMA使能后,等待外设发出DMA请求信号,DMA收到请求,数据从外设端口数据传输地址(DMA_SxPAR)存储到DMA缓冲区(FIFO)内,当缓冲区(FIFO)内数据量达到缓冲区(FIFO)阈值后,缓冲区(FIFO)内数据移出到内存端口数据传输地址(DMA_SxM0AR)指定的存储器地址中,同时每传输一个数据,DMA_SxNDTR内的值会减1,DMA_SxNDTR值递减为0,DMA传输停止。
从存储器向外设传输数据
DMA使能后,立即会将内存端口数据传输地址(DMA_SxM0AR)指定的数据移动到DMA缓冲区(FIFO)内,完全填满DMA缓冲区(FIFO),等待外设端口DMA请求信号,每次发生外设请求,缓冲区内的数据以外设端口宽度指定的数据量移出到外设端数据传输地址(DMA_SxPAR)指定的目标地址上,同时每传输一个数据,DMA_SxNDTR内的值会减1,DMA_SxNDTR值递减为0,DMA停止传输。当DMA缓冲区(FIFO)内数据量小于等于缓冲区阈值时,会使用存储器内的数据再次填充满FIFO。
计算机的运算方法
- 无符号数和有符号数
1.无符号数
寄存器位数反映无符号数的表示范围:
8位——0~255
16位——0~65535
2.有符号数
机器数与真值
补码表示法
1
2
3
4
补数
时针转一圈为12小时,当时钟指示为六点,想要它指向三点,可以按顺时针方向将分针转九格,也可以逆时针方向转三格,结果是一致的。
事实上,任何时候时针向顺时针转九格和逆时针转三格的效果都是一致的。
如果我们将方向定位正负,在12这个计量范围之内,+9和-3就是互补的。数学上称这个12为模写作(mod12),而称+9是-3以12为模的补数。
整数和小数
1
2
3
4
5
6
7
①x=+1010,则 [x]补=0,1010
②x=-1011000,则 [x]补=27+1+x=27+1+(-1011000)=1,0101000
①x=+0.1110,则 [x]补=0.1110
②x=-0.1100000,则 [x]补=2+(-0.1100000)=1.0100000
利用原码求补码
1
2
3
4
5
举例:
x=-1010
[x]原=1,1010
[x]反=1,0101
[x]补=[x]反+1=1,0110
反码
反码表示法
…. … ..
指令系统
指令:
- 计算机能直接识别、执行的操作命令(机器指令)
- 是冯诺依曼结构计算机“程序控制”原理实现的载体
- 是软、硬件界面和程序员操作计算机硬件的接口
- 是硬件设计的依据,是软件设计的基础,直接影响计算机系统的性能
指令系统(指令集): 一台计算机中所有机器指令的集合
- 系列机:同一公司不同时期生产,系统结构和指令系统基本相同的计算机(向下兼容性)
- 兼容机:不同公司生产,系统结构和指令系统基本相同的计算机
指令字长:
- 指令中包含的二进制位数
- 决定于操作码的长度、操作数地址的长度、操作数的个数
- 与机器字长相比可分为:单字长指令、双字长指令、半字长指令等长度指令
- 多字长指令:解决寻址较大存储空间的问题(扩展指令长度),但取指令的访存次数较多,影响速度,占用空间大
- 等长指令:指令字长度固定,对硬件的设计简化有利 变长指令:指令字长度根据需要可变
指令分类:
指令基本格式
操作码:指出指令所进行的操作
地址码:表示参加运算的数据应从存储器的哪个单元取,运算的结果应存到哪个单元
1
2
3
操作码字段的位数与支持的最大指令数量有关
寻址方式字段的位数与支持的寻址方式种类有关
地址码字段的作用及影响与其位数和寻址方式有关
等长指令格式
优点: 定长指令结构规整,有利于简化硬件,尤其是指令译码部件的设计
不足: 定长指令平均长度长,容易出现冗余码点和指令不易扩展等不足
在等长指令系统中,指令可以采用固定长度的操作码(即定长操作码),也可以采用长度不固定的操作码(即扩展/变长操作码)
扩展(变长)操作码指令格式
定长指令中将操作码位数扩展至操作数地址码字段(即将用不到的地址码位数并入到操作码中用作操作码),或将操作数位数向前扩展至操作码字段(即将操作码左移,将操作码用不到的位数并入到操作数地址码中用作地址码)
变长指令格式
各种指令字的长度随指令功能的不同而不同,如指令可分为单字长指令、半字长指令或多字长指令
优点: 变长指令结构灵活,能充分利用指令中的每一位,因此指令码点冗余少,指令的平均长度短,易于扩展
不足: 但由于格式不规整,不同指令的取指事件可能不同,导致控制复杂
指令和操作数的寻址方式
基本概念:
寻址方式:确定本条指令的操作数地址或下一条要执行指令的指令地址,直到程序结束 寻址方式的划分:指令寻址、操作数寻址(即指令中数据的寻址) 程序计数器PC:用于存放下一条指令所在单元的地址。ARM型CPU中为程序计数器PC,X86型CPU中为指令指针寄存器IP,用于控制程序中指令的执行顺序
指令寻址
1
2
3
4
5
顺序寻址
指令在内存中是顺序存放,当执行一段程序时,通常是一条指令接一条指令地顺序执行。程序计数器PC(指令指针寄存器IP)每执行一条指令,PC+1(“1”指存储1条指令所占用的字节单元数,和编址方式有关),指向下一条欲执行指令的指令地址,这种程序顺序执行的过程称为指令的顺序寻址
跳跃寻址
当程序执行循环指令或转移指令等指令时,指令的寻址采用跳跃寻址方式,即下一条指令的地址不是由程序计数器PC+1产生,而是将本条指令给出的目标地址直接装入PC给出
操作数寻址(数据寻址)
形式地址:指令字中的地址
有效地址:操作数的真实内存地址
地址码字段通常为形式地址,形式地址与有效地址间需要进行转换,寻址过程就是把操作数的形式地址根据寻址方式转换为操作数的有效地址的过程,寻址方式由寻址特征位标识
立即寻址(立即数寻址)
1
2
3
4
5
- **形式地址就是操作数**,一般以补码形式进行表示
- 取指操作将数据与指令一并读入CPU内部的寄存器,即只取指令访存一次,执行阶段不访存
- 优点:数据直接送给CPU,因此在指令执行阶段不访存,取指操作将数据与指令一并读入CPU内部的寄存器,指令执行速度快,便于程序设计(如变量赋初值)
- 缺点:形式地址的位数限制的立即数的范围
- 一般为双字长指令
直接寻址(直接内存寻址)
- 形式地址就是有效地址
- 以一地址指令为例
执行过程为直接利用有效地址访问对应内存,从内存单元中将操作数取出并对其完成操作码的操作,之后送到寄存器,即执行阶段需要访存一次
- 优点:操作数地址直接给出不需要变换,实现简单
- 缺点:形式地址的位数决定了该指令操作数的寻址范围,且操作数的地址不易修改
- 通常为双字长指令
间接寻址 - 通过地址码字段中的形式地址访问主存一次,获得有效地址,再基于有效地址进行二次访问内存,才能获得操作数(以速率换访存范围),即执行阶段最少访问主存两次,也可能进行多次间址 - 优点:可扩大寻址范围,便于编制程序 - 缺点:多次访问主存,访问速率过慢
寄存器寻址 - 操作数不放在内存中,而是放在CPU的通用寄存器中,指令中给出的操作数地址是通用寄存器的编号 - 优点:操作数在寄存器中,指令执行速度快;能访问的数据大小一般与计算机字长有关,不受形式地址的限制
寄存器间接寻址 - 地址码在字段给出的是寄存器编号,通过地址码字段中的形式地址访问寄存器一次,获得有效地址,再基于有效地址访问内存获得操作数(解决间接寻址两次访问主存速度慢的问题) - 便于编制循环程序 …
…
…
CISC和RISC的基本概念
计算机处理器包含有实现各种功能的指令或微指令,指令集越丰富,为微处理器编写程序就越容易,但是丰富的微指令集会影响其性能
CISC: 复杂指令计算机。CISC包括一个丰富的微指令集,这些微指令简化了在处理器上运行的程序的创建。指令由汇编语言所组成,把一些原来由软件实现的常用的功能改用硬件的指令系统实现,编程者的工作因而减少许多,在每个指令期同时处理一些低阶的操作或运算,以提高计算机的执行速度,这种系统就被称为复杂指令系统
在CISC指令集的各种指令中,其使用频率却相差悬殊,大约有20%的指令会被反复使用,占整个程序代码的80%。而余下的80%的指令却不经常使用,在程序设计中只占20%
RISC: 精简指令集计算机。是一种执行较少类型计算机指令的微处理器,起源于80年代的MIPS主机(即RISC机),RISC机中采用的微处理器统称RISC处理器。这样一来,它能够以更快的速度执行操作(每秒执行更多百万条指令,即MIPS)
RISC主要特点:
- 指令数量相对少,寻址方式相对少
- 指令格式相对少,指令为等长指令,适合进行流水线操作
- 读取存储器使用LOAD指令,写存储器使用STORE指令
- CPU内部的寄存器相对多,用于暂存数据。所有操作在寄存器进行,大大减少访问存储器操作
- 控制器的设计采用硬件布线
RISC和CISC各有优势,而且界限并不那么明显。现代的CPU往往采用CISC的外围,内部加入了RISC的特性,如超长指令集CPU就是融合了RISC和CISC的优势,成为未来的CPU发展方向之一
CPU 的结构和功能
本章从分析CPU的功能和内部结构入手,详细讨论机器完成一条指令的全部过程,以及进一步提高数据的处理能力、开发系统的并行性所采取的流水技术。此外,本章还进一步概括了中断技术在提高整机系统效能方面的作用。
- CPU的结构
- 第一章说明了CPU实质上包括运算器和控制器两大部分,第六章讨论了计算机内各种运算以及相应的硬件配置,这里重点介绍控制器的功能。
对于冯·诺依曼结构的计算机而言,一旦程序进入存储器后,就可以由计算机自动完成取指令和执行指令的任务,控制器就是完成此项工作的,它负责协调并控制计算机各部件执行程序的指令序列,基本功能是取出指令、分析指令、执行指令。
- 取出指令 控制器必须具备能自动从存储器中取出指令的功能,为此要求控制器能自动形成指令的地址,并能发出取指令的命令,将对应此地址的指令取到控制器中。第一条指令的地址可以人为指令,也可以由系统设定。
- 分析指令 分析指令包括两个部分的内容:其一:分析此指令要完成什么操作,即控制器需发出什么操作命令,其二:分析参与这次操作的操作数地址,即操作数的有效地址。
- 执行指令 执行指令就是根据分析指令产生的操作命令和操作数地址的要求,形成操作控制信号序列(不同指令有不同的操作控制信号序列),通过对运算器、存储器以及I/O设备的操作,执行每条指令。
此外控制器还必须能控制程序的输入和运算结果的输出(即控制主机与I/O设备交换信息)以及对总线的管理,甚至能处理机器运行过程中出现的异常情况和特殊请求,即处理中断的能力。
总之CPU必须具有:
1
2
3
4
5
- 控制程序的顺序执行(指令控制)
- 产生完成每条指令所需的控制命令(操作控制)
- 对各种操作加以时间上的控制(时间控制)
- 对数据进行算术运算和逻辑运算(数据加工)
- 处理中断的能力
CPU结构框图
将上图细化,还可以得出下图,图中的ALU实质上只对CPU内部寄存器的数据进行操作。
寄存器是所有存储器中速度最快、容量最小且价格最贵的,通常位于CPU内部,CPU中的寄存器大致可分为两类: 一类是用户可见寄存器,用户对这类寄存器可以编程,以及通过优化使CPU因使用这类寄存器而减少对主存的访问次数。 另一类属于控制和状态寄存器,用户不可对这类寄存器编程,它们被控制部件使用,以控制CPU的操作,也可被带有特权的操作系统程序使用,从而控制程序执行。
用户可见寄存器 通常CPU执行机器语言访问的寄存器为用户可见寄存器,按其特征又可以分为以下几类:
- 通用寄存器 该类寄存器可由程序设计者指定许多功能,可用于存放操作数,也可以作为满足某种寻址方式所需的寄存器。
- 数据寄存器 该类寄存器用于存放操作数,其位数应满足多种数据类型的数值范围,有些机器允许使用两个连续的寄存器存放双倍字长的值,还有些机器的数据寄存器只能用于保存数据,用户不能进行操作数地址的计算。
- 地址寄存器 该类寄存器用于存放地址,其本身可以具有通用性,也可用于特殊的寻址方式,如用于基址寻址的段指针(存放基地址)、用于变址寻址的变址寄存器和用于堆栈寻址的栈指针。地址寄存器的位数必须足够长,以满足最大的地址范围。
- 条件码寄存器 该类寄存器中存放条件码,它们对用户来说是部分透明的。条件码是CPU根据运算结果由硬件设置的位,例如,算术运算会产生正、负、零或溢出等结果。条件码可被测试,做为分支运算的依据。此外,有些条件码也可以被设置,例如,对于最高位进位标志C,可用指令对它置位和复位。将条件码放到一个或多个寄存器中,就构成了条件码寄存器。
在调用子程序前,必须将所有的用户可见寄存器的内容保存起来,这种保存可以由CPU自动完成,也可由程序编程保存,视不同的机器进行处理。
控制和状态寄存器 CPU还有一类寄存器用于控制CPU的操作或运算。在一些机器里,大部分这类寄存器对用户是透明的。如以下四种寄存器在指令执行过程中起重要作用。
- MAR:存储器地址寄存器,用于存放将被访问的存储单元的地址。
- MDR:存储器数据寄存器,用于存放欲存入存储器中的数据或最近从存储器中读出的数据。
- PC:程序计数器,存放现行指令的地址,通常具有计数功能。当遇到转移类指令时,PC值可被修改。
- IR:指令寄存器,存放当前欲执行的指令。
- 通过这四个寄存器,CPU和主存可交换信息。例如,将现行指令地址从PC送至MAR,启动存储器作读操作,存储器就可将指令地址单元内的指令读至MDR,再由MDR读至IR。
在CPU内部必须给ALU提供数据,因此ALU必须可直接访问MDR和用户可见寄存器ALU的外围还可以有另一些寄存器,这些寄存器用于ALU的输入/输出以及用于和MDR及用户可见寄存器交换数据。
在CPU的控制和状态寄存器中,还有用来存放程序状态字PSW的寄存器,该寄存器用来存放条件码和其他状态信息。在具有中断系统的机器中还有中断标记寄存器。
控制单元和中断系统
控制单元(CU)是提供完成计算机全部指令操作的微操作命令序列部件。现代计算机中微操作命令序列的形成方法有两种:
1
2
组合逻辑设计方法,为硬连续逻辑
微程序设计方法,为存储逻辑
中断系统主要用于处理计算机的各种中断。
指令周期的基本概念
CPU每取出并执行一条指令所需的全部时间称为指令周期,也即CPU完成一条指令的时间
….
:(没时间了,后面腾出时间再看吧