-
2021-08-23 08:45:55
文章目录
前言
本文是基于《计算机组成与系统结构》的一篇学习笔记,后续会持续更新,文章顺序与书中目录一致,如有纰漏还望批评指正!
一、绪论
这一部分将从计算机的发展历史、组成层次、结构实现等角度对计算机的发展进行整体概述,后续章节再进行细致分析。
1.计算机的发展史
为此我甚至整理了一个表格[doge]
时代 计算机类型 时间区段 主要组成部分 代表性的计算机 代表性事件 第0代 机械计算机 电子管计算机出现以前 算盘、计算尺、手摇机械计算机 第1代 电子管计算机 1945-1955年 电子管、电磁继电器 ENIAC、IBM701 使用机器语言 第2代 晶体管计算机 1955-1965年 晶体管、磁芯存储器 IBM 7030、Univac LARC 开始使用高级语言 第3代 集成电路计算机 1965-1980年 中小规模集成电路芯片、多层印刷电路板、磁芯存储器 IBM 360、IBM 370、DEC PDP-8 出现了分时操作系统,计算机开始向经济军事领域渗透 第4代 超大规模集成电路计算机 1980-1991年 大规模及超大规模集成电路 IBM 3090、VAX 9000 出现了DOS、Windows、UNIX等操作系统 第5代 高性能智能计算机 1991年之后 超大规模、超高速集成电路 注意:表中的第0代计算机应是根据我国的发展情况来划分的,在一些国外资料中可能并没有这一项
摩尔定律
定义:集成电路芯片的集成度每18个月翻一番。
这条定律是戈登·摩尔根据实际经验提出的预言,并且事实也正如预言中那样,半导体工业还是按照DRAM每18个月、微处理器每24个月集成度翻倍的规律发展着。
2.计算机的基本组成
为此我甚至整理了一个脑图[doge]
有些地方简略了一下,因为我相信你们可以理解!这里单独提一下冯·诺依曼计算机(von Neumann machine),它具有两个特点:
- 逐条指令执行
- 指令、数据以及其他信息均使用二进制编码表示
可以看出基本上是现代计算机理论体系的雏形。
3.计算机系统的层次结构
同样使用表格形式以便加强记忆,不过注意这里的“层次结构”是从设计角度来划分的。
级别 设计方法 是否需要考虑硬件细节 第1级 微程序或硬件逻辑 存储器、接口等大量细节 第2级 机器语言 相对较少的细节 第3级 操作系统 相对更少的细节,但同时需要设计者对软件的了解 第4级 汇编语言 只需要知道一些寄存器的细节即可 第5级 高级语言 通常不必理会硬件细节 第6级 应用语言 不必理会硬件细节 5.计算机的各种分类
单独说一下还有一种分类方法:Flynn分类法。
在这之前先备一下基础知识:指令流(IS):机器执行的指令序列,由存储器流入控制单元(CU)。
数据流(DS):指令流使用的数据,在处理单元(PU)中进行处理。
控制流(CS):指令流进入CU,由CU产生一系列的控制流(信号),在控制流的控制下完成指令的功能下面介绍Flynn对于计算机的四种分类:
1.单指令流单数据流(SISD)计算机:由单一控制单元、单一处理单元和单一存储器组成。每次从存储器取一条指令到控制器,由控制器对指令译码产生控制信号,控制单元完成指令的功能。
2.单指令流多数据流(SIMD)计算机:每次从存储器取一条指令到控制器,由控制器对指令译码产生多个控制信号,并用相同的控制信号控制多个处理单元执行相同的操作,完成这条指令对多个数据的处理。
3.多指令流单数据流(MISD)计算机:由多个控制单元同时执行多条指令对同一数据进行处理。
4.多指令流多数据流(MIMD)计算机:各个处理机分别执行多条指令、处理多个数据,并行工作而实现某种功能。
总之暂时只需要记住指令的执行过程就可,这四种分类可简单看作指令流数量和数据流数量的变化,暂时不做深究。
6.计算机系统性能描述
计算机性能的主要指标包括速度、存储容量、外设的配置、软件的配置、重量、价格等等。只需要记住服务器系统的配置>=个人计算机的配置即可。
高性能计算机:一般认为能达到或超过万亿次/秒的计算机为高性能计算机。目前我国的“天河一号”和“天河一号 A”均为代表性计算机。
关于计算机系统性能的评估
先来看一下评估标准:
- 执行时间(响应时间):计算机执行一个任务从开始到完成所用的时间。
- 吞吐量:在给定时间内完成的任务总数。
接下来看评估方法:
- 利用执行时间计算:性能P = 1 / 执行时间T。
- 利用吞吐率计算: 性能P = 完成的总任务数 / 给定时间。
- 相对性能:两台计算机之间性能P的比值。
以上为第一种评估方式,但实际应用中我们更偏向于使用更加科学精确的方法进行度量,因此一般采用专门的测试程序来测评计算机系统性能:
- 基准测试程序:包含多种测试程序,可以避免单个测试程序的片面性。
- SPEC CPU 2000基准测试程序:由SPEC提供的性能测试包,源程序包含了整数和浮点数两大部分。
- PC性能测试:当代普遍应用的测试方式。
以上几种测试方式限于篇幅不做详述,读者可以自行查阅。
Amdahl定律
定义:计算机系统中某一部件由于采用某种更快的执行方式后,整个系统性能的提高与这种执行方式的使用频率或占总执行时间的比例有关。
加速比的定义如下: 加速比 = 改进后的系统性能 / 改进前的系统性能
下面介绍一些度量标准:
- 可改进比例fe:可改进部分在原系统总执行时间中所占的比例。
- 部件加速比re:某部件改进后性能提高的比例。
接下来举个栗子帮助理解:
假设计算机系统执行一个任务所需总执行时间T0为100s,其中任务所需的一个部件的执行速度可以改进,这个部件的执行时间占总执行时间的比例fe为40%,这个部件的加速比re为10,即这个部件的总执行时间为40s,加速后的总执行时间为4s,那么我们可以得出改进后的系统总执行时间Tn = T0(1 - fe + fe/re)= 64s,加速比Sp可表示为Sp = 1 / (1 - fe + fe/re)=10
二、计算机系统中的数据表示
首先对接下来要讲的内容做一下简单梳理,第一部分数据编码是数值数据的编码格式(几进制、原码、反码还是补码又或者对其进行的移码操作),第二部分为非数值数据的编码格式(非数值数据指除去数字以外的数据,如a,b,<,?等等),第三部分为检错码与纠错码。
1.数值数据的编码格式
首先,几进制==逢几进一;
然后,再总结一下几个概念:基数:m进制的基数为m
位权:为基数的i次方不同进制有着不同的标识,
十进制常用字母D或不加标识,
二进制常用字母B标识,
八进制常用字母O标识,
十六进制常用字母H标识。另外,
机器数:各种数值数据在计算机中的表示的形式成为机器数。
真值:机器数对应的实际数值称为数的真值。这里做一下解释,上述“各种数值数据”包括数值型数据和非数值型数据,对于非数值型数据如a,它的真值即是a所对应的ascii码值。
再来介绍一下无符号数与有符号数:
简单来说就是无符号数没有正负号,有符号数有正负号,有符号数便于交流理解,而计算机无法识别正负号,因而需要单独使用两位二进制位作为正负数的判断依据。总结
以上就是今天要讲的内容,后续更新!
更多相关内容 -
计算机组成与结构笔记1
2019-01-03 16:22:40计算机组成与结构部分笔记,内容包括系统概论,Verilog 语言及vivado使用,运算器等。 -
天勤2019版计算机组成原理高分笔记..pdf
2019-11-11 18:05:51知识点讲解 .1计算机的发展历程 1.1.1计算机硬件的发展 计算机从20世纪40年代诞生至今,已有几十年的历史。计算机的发展历程既是...从第一代到第四代,计算机的体系结构都是相同的,即都由控制器、存储器、运算器、 -
【XJTUSE 计算机组成与结构笔记】 第十二章 CPU结构和功能
2021-12-27 00:05:53【XJTUSE 计算机组成与结构笔记】 第十二章 CPU结构和功能文章目录
第十二章 CPU结构和功能
1、处理器内部结构,了解就行
2、寄存器组织,寄存器分类、用户可见和控制状态寄存器,通用寄存器能存什么,数据和地址寄存器是否区分,长度如何确定,条件代码用来干什么,存在哪里
3、控制和状态寄存器了解就行
4、指令周期,包括哪几个部分,子周期关系,前后关系,哪些必须,哪些可能
5、流水线
为什么要采用流水线,流水策略有哪些,分段,⭐️ 指令流水操作时序图
哪些因素影响流水线性能、流水线性能衡量标准:加速比与吞吐量要掌握
5、指令流水线处理条件转移指令的几种方式
12.1 CPU组成
CPU执行指令的步骤:
取指令
解释指令
取数据
处理数据
写数据
为了执行指令,CPU必须包括ALU和CU,同时,CPU需要临时存储一些数据,包括下一条指令的位置。因此,CPU需要一个小的内部内存——寄存器
12.2 寄存器组织
寄存器:CPU中用于暂存的一小块工作空间(I/O中也有)
是CPU设计需要考虑的一个重要因素
1️⃣ 用户可见寄存器User-visible registers
允许机器语言或汇编语言的编程人员通过优化寄存器的使用而减少对主存的访问
2️⃣ 控制和状态寄存器Control and status registers
由控制器来控制CPU的操作,并由拥有特权的操作系统来控制程序的执行
用户可见寄存器
通用目的寄存器general purpose register
也许真的是通用的
可能是受限制的
可能有用于浮点和堆栈操作的专用寄存器
可用于数据或寻址
数据寄存器
累加器
地址寄存器
段指针、栈指针
条件码寄存器
由CPU硬件设置的位,作为最后一次操作的结果
COAPZS
正,负,零,溢出,等等,
在存储最后一个操作的结果之后,还会设置一个条件代码,这个代码可以用于条件分支
可以被程序隐式地读取、通常不能被程序设置
对程序员部分可见
采用更多的通用寄存器/专用寄存器?
1️⃣ 采用更多的通用寄存器
增加灵活性,给程序员提供了更大的自由,寻址方式也可以更丰富
增加指令的长度和复杂度
2️⃣ 采用更多地专用寄存器
更短的指令
灵活性变差
控制和状态寄存器
程序寄存器PC:存有待取指令地地址
指令寄存器IR:存有最近取来的指令
存储器地址寄存器MAR:存有存储器位置的地址
存储缓冲寄存器MBR:存有将被写入存储器的数据字或最近被存储器读出的字
很多CPU设计都包括程序状态字PSW的一个或一组寄存器,一般含有条件码和其他状态信息。大多对程序员不可见
符号sign
进位carry
等于equal
溢出overflow
中断允许\禁止
监管supervisor(CPU处在监管模式还是用户模式)
子程序调用,不需要保存现场,就是一段代码的替换
设计控制寄存器时要考虑两个因素
1️⃣ 操作系统支持
CPU设计与操作系统设计是紧密联系在一起的,二者应该相互配合
2️⃣ 控制信息分配在内存和寄存器
控制信息也可以存储在主存的前几百个字中,设计者必须决定有多少在寄存器中,有多少在内存中
微处理器寄存器举例
12.3 指令周期
间接寻址周期
可能需要内存访问才能获取操作
间接处理需要更多的内存访问
可视为附加指令子周期
一旦取来一个指令,它的操作数指定符必须被识别,然后读取存储器中的每个操作数,这个过程可能要求间接寻址。寄存器操作数不需要从存储器读取,一旦操作完成,可能需要一个类似的过程将结果存入主存。
数据流
假定一个CPU中有一个MAR、一个MBR、一个PC、一个IR
取指周期
PC存有待取的下一条指令的地址
地址被送到MAR
地址放在地址总线中
控制器发出一个存储器读的请求,存储器根据地址读取到下一条指令的内容
存储器将结果放在数据总线中,CPU将其复制到MBR,然后传送到IR
同时,PC+1
一旦经历过取指周期,控制器会检查IR中的内容
间接周期
一旦经历取指周期,检查器检查IR的内容,确定是否有一个使用间接寻址的操作数指定符,若是则进入间接周期
MBR最右边的N位是一个地址引用,被送入MAR
控制器发一个存储器读,得到操作数地址
送入MBR
执行周期
没有固定地形式,取决于实际执行的指令
中断周期
PC的当前的内容被保存,以便在中断之后CPU能恢复先前的动作
PC的内容被送到MBR,写入存储器
一个专门的存储器位置被控制器装入MAR(可能是一个栈指针)
中断子程序的地址装入PC
可获取下一个指令(中断处理程序的第一个指令)
12.4 指令流水线(重点)
指令预取
可以将指令处理分为两个阶段:取指令和执行指令。在指令执行过程中,主存可能没有存取操作,可以在解码和执行当前指令时获取下一个指令。
这种方式需要指令缓存,需要更多的寄存器
预取可以提速,但是速度不会翻一番,若指令之间有关系,会造成无效缓存以及速度降低
指令流水线instruction pipelining
处理相关任务时,资源能错开使用,不均等分段会降低流水线的效率
指令流水线可将指令处理分解如下:
取指令FI:从cache中读下一条指令
译码指令DI:decode instruction
计算操作数CO:计算每个源操作数的有效地址,涉及偏移寻址、寄存器间接寻址等
取操作数FO:从存储器中取出操作数,寄存器中的数不需要取
执行指令EI
写操作数WO
实际运行中,指令之间肯定会有依赖,条件转移也会降低速度,有条件转移是在执行阶段知道转还是不转
C语言中的goto是无条件转移、for循环是条件转移
流水线性能
指令流水线的周期 τ \tau τ,是在流水线中将一组指令推进一段所需的时间,表示公式如下(掌握定义):
τ = m a x i [ τ i ] + d = τ m + d 1 ≤ i ≤ k \tau=max_i[\tau_i]+d=\tau_m+d\qquad 1\le i\le k τ=maxi[τi]+d=τm+d1≤i≤k
其中:τ i = 流 水 线 第 i 段 的 电 路 延 迟 时 间 \tau_i=流水线第i段的电路延迟时间 τi=流水线第i段的电路延迟时间
τ m = 最 大 段 延 迟 \tau_m=最大段延迟 τm=最大段延迟
k = 指 令 流 水 段 数 k=指令流水段数 k=指令流水段数
d = 锁 存 延 时 d=锁存延时 d=锁存延时
通常延时d等于时钟脉冲的宽度而且 τ m > > d \tau_m>>d τm>>d
假设现有n条指令在进行,无转移发生,令 T k , n T_{k,n} Tk,n为k阶段流水线执行所有n条指令所需的总时间,则有:
T k , n = [ k + ( n − 1 ) ] τ T_{k,n}=[k+(n-1)]\tau Tk,n=[k+(n−1)]τ
提速比
s k = n k τ [ k + ( n − 1 ) ] τ = n k k + ( n − 1 ) s_k=\frac{nk\tau}{[k+(n-1)]\tau}=\frac{nk}{k+(n-1)} sk=[k+(n−1)]τnkτ=k+(n−1)nk
吞吐率 T p T_p Tp:流水线单位时间内产生的指令数(掌握定义)
T p = n [ k + ( n − 1 ) ] τ T_p=\frac{n}{[k+(n-1)]\tau} Tp=[k+(n−1)]τnT p m a x = 1 τ T_{pmax}=\frac{1}{\tau} Tpmax=τ1
n > > k , T p ≈ T p m a x n>>k,T_p\thickapprox T_{pmax} n>>k,Tp≈Tpmax
举例
考虑一个时钟周期为50ns的单流水线处理器有5个流水线阶段:FI、DI、FO、EX和WB。假设每个阶段的持续时间相等,需要2个时钟周期。它需要执行8个连续指令。
绘制流水线各功能阶段时序图,计算提速和吞吐量。假设在执行指令期间没有冲突、依赖或分支。
如果指令4是一个条件转移指令,并且转移的目标是指令7。在此执行中,结果是进行分支。绘制流水线各功能阶段时序图,计算提速和吞吐量。假设在指令8之后,没有其他指令要执行。
流水线相关性pipeline hazard
流水线相关性发生在流水线,因为某些条件不允许流水线亟需运行,而必须停顿,也称为流水线空泡pipeline bubble。有三种类型:
结构相关(资源冲突)resource hazard
发生在两条(或多条)已进入流水线的指令需要使用相同资源的时候
就意味着某些指令的处理过程需要停滞
数据冲突data hazard
数据冲突发生在对一个操作数位置的访问出现冲突的时候。
程序中的两条指令是依次执行,并且都将访问同一个内存或者寄存器操作数。如果这两条指令是严格执行的,那么没问题发生。如果在流水线中运行,可能会使操作数不按次序更新,从而产生不正确的结果
举例:
第一条指令将寄存器EAX和EBX中的内容相加,并将结果保存在EAX寄存器;
第二条指令从ECX中减去EAX,并将结果存回ECX;
ADD指令
1️⃣ 写后读相关或真实数据相关(RAW)
一条指令改写一个寄存器或内存地址
而后续的指令从所改写的寄存器或内存地址读取数据
如果在写操作完成之前,读操作就开始进行,那么就会发生相关
2️⃣ 读后写相关或反相关(WAR)
一条指令读一个寄存器或内存地址
而后续的指令又将改写该寄存器或内存地址的内容
如果在读操作完成之前,写操作就开始执行,那么就会发生相关
3️⃣ 写后写相关或输出相关(WAW)
两条指令要改写同一个寄存器或内存地址
如果这两条指令的写操作发生次序与期望的次序相反,那么就会发生相关
在按序流动的流水线中,只可能出现RAW相关
控制冲突Control Hazards
也称为分支冲突,发生在流水线对分支转移做出了错误的预测,因此读取了后期必须取消的指令的时候。处理办法如下:
1️⃣ 多个指令流multiple streams
使用两个流水线
每个分支预取到单独的流水线中执行
最终依据条件转移指令结果选择保留其中一条流水线的结果
问题
导致寄存器和存储器访问的竞争延迟
多个分支导致需要更多的流水线
应用
由IBM370,3033使用
2️⃣ 预取分支目标prefetch branch target
除了取条件分支指令之后的指令外,分支目标处的指令也被预取
预取的结果会放到一个特殊的寄存器
目标被保存直到分支指令被执行
应用:IBM 360/91使用
3️⃣ 循环缓冲器loop buffer
维护一个小的但极高速的存储器,含有n条最近顺序取来的指令
流水线取指阶段维护
若一个转移将要发生,硬件首先检查转移目标是否在此缓冲器中
非常适合小的循环
类似于指令高速缓存,不同在于它只保留顺序的指令,因而容量较小,成本也较低
应用:CRAY-1使用
4️⃣ 分支预测
包括
预测绝不发生
预测总是发生
依据操作码
假定对某些条件转移指令总是预测发生转移,对另外的一些转移总是预测不发生转移
发送/不发生切换
Bits (1~2bits):记录执行转移情况
适合循环和迭代
转移历史表
是一个小容量的Cache — BTB/BHT
前三种静态,后两种动态:取决于执行的历史
5️⃣ 延迟转移
插入NULL操作
阻塞流水线
使用在早期CPU上
重排序指令
乱序执行
目前机器常用
-
【XJTUSE 计算机组成与结构笔记】 第七章 I/O
2021-12-26 10:26:15【XJTUSE 计算机组成与结构笔记】 第七章 I/O文章目录
第七章 I/O
KEY POINTS
1、常见的外设有哪些
2、I/O模块,为什么需要I/O模块、I/O模块的功能、掌握完成I/O模操作需要完成的三种技术
3、编程式I/O,执行过程,两方面CPU和I/O模块,共享公共总线时,两种寻址方式,各有什么特点,如何区分
4、中断驱动式I/O,过程如何,结合中断,掌握中断的处理机制,设计时要考虑识别中断设备的技术,四种方式分别是什么
5、DMA是什么,为什么效率更高,可采用哪些方式与CPU复用内存:块传送、周期窃取、交替方式、各自如何处理
6、I/O通道,I/O通道的概念、功能、分类、最大传输率的计算与应用
外围设备种类繁多
提供不同数量的数据
以不同的速度
根据不同的计时顺序
以不同的格式
都比 Cpu 和 Ram 慢
外围设备不直接连接到系统总线 , 需要 I/O 模块
I/O模块
CPU和内存的接口
接口到一个或多个外设
I/O 模块化架构旨在提供系统的方法来控制与外部世界的交互,并为 OS 提供信息以有效管理 I/O 活动
7.1 外设
人类可读
屏幕、打印机、键盘
机器可读
磁盘和控制器
通信
网络接口卡
一些设备如下:
1、键盘/监视器
信息交换的基本单位是字符
2、磁盘驱动器
包含两部分:一是与I/O模块交换数据、控制和状态信号,二是用于控制磁盘的读/写机制
7.2 I/O模块
模块功能
I/O模块的功能如下:
Control & Timing 控制与定时
CPU ~ I/O Communication 处理器通信
Device ~I/O Communication 设备通信
Memory ~ I/O communication 存储通信
Data Buffering 数据缓冲
Error Detection 检错
控制从外设到处理器的数据传送包括以下几个步骤:
1️⃣ 处理器查询I/O模块,检查所连设备的状态
2️⃣ I/O模块返回设备状态
3️⃣ 如果设备状态正常且就绪,CPU通过向I/O模块发出命令,请求数据传送
4️⃣ I/O模块获得来自外设的一个数据单元(8位或者16位)
5️⃣ 数据从I/O模块传送到处理器
I/O communication
命令译码command decoding: I/0 模块接受来自处理器的命令,这些命令一般作为信号发送到控制总线。例如,一个用于磁盘驱动器的I/0模块,可能接受READ SECTOR (读扇区)、WRITE、SECTOR (写扇区)、SEEK (寻道)磁道号和SCAN (扫描)记录标识等命令。后两条命令中的每条都包含一个发送到数据总线上的参数。
数据交换data exchange:数据是在处理器和I/0模块间经由数据总线来交换的。
状态报告:由于外设速度很慢,所以知道I/O模块的状态很重要。例如,如果要求-一个I/O模块发送数据到处理器( 读操作),而该I/0模块仍在处理先前的I/O命令而对此请求未能就绪,则可以用状态信号来报告这个事实。常用的状态信号有忙( BUSY)和就绪(READY),还有报告各种出错情况的信号。
地址识别:正如存储器中每个字对应一个地址- -样,每个I/0设备也有地址。因此,I/O模块必须能识别它所控制的每个外设的唯一地址 。另一方面,V0模块必须能进行设备通(devicecommunication),通信内容包括命令、状
Data Buffering 数据缓冲
这是I/O模块的一个重要作用
Error Detection 检错
包括硬件故障(纸张堵塞)与传输错误(位错误、数据损失)
模块结构
地址线、控制线是CPU的,I/O设备的地址通过I/O模块识别
数据线将零碎的控制信息作为参数进行传输:比如奇偶页信息;含义明确的控制信号通过控制线传输
I/O模块决策
支持多个或单个设别
将设备属性隐藏或揭示给CPU
控制设备功能/离开CPU
7.3 编程式I/O
对于编程式I/O programmed I/O,数据在处理器和I/O模块之间交换,处理器通过执行程序来直接控制I/O操作,包括检测设备状态、发送读或写命令、以及传送数据
CPU 在发出 I/O 命令时等待 I/O 模块完成操作,会浪费CPU
执行过程
1️⃣ CPU遇到一条I/O指令
2️⃣ 它通过向I/O模块发送一个命令来执行它,并等待I/O模块就绪
3️⃣ I/O模块执行命令,然后在I/O状态寄存器中设置适当的位
4️⃣ CPU定期检查状态位,直到它发现操作完成
为了执行与I/O相关的指令,处理器发送一个指定具体I/O模块和外设的地址,并发送一条I/O命令。当I/O模块被处理器寻址时,它可能会就收四种I/O命令:
控制命令、测试命令、读命令、写命令
当处理器、主存和I/O共享一条公共总线时,编址方式主要有两种:
存储器映射式memory-mapped
设备和内存共享地址空间
I/O看起来就像存储器read/write
没有针对I/O的特别命令
分离式isolated
单独的地址空间
需要I/O或存储器选择线
有I/O特殊命令:指令集不会太多
优势
简单、处理器完全在控制中
缺点
耗费CPU
解决方案
使用中断机制
7.4 中断驱动(interrupt driven)I/O
处理器发送一个I/O命令道模块,然后去处理其他有用的工作,当I/O模块准备与处理器交换数据时,它中断处理器以请求服务,然后处理器执行数据传送,最后恢复原来的处理工作
中断信号的发出由I/O自控
中段处理过程
中断源的识别
1️⃣ 多条中断线
2️⃣ 软件轮询式
当处理器检测到一个中断时,进入中断服务程序,轮询每一个I/O模块来确定时哪一个模块产生的中断
3️⃣ 链式查询(硬件轮询)
所有I/O模块共享一个共同的中断请求行为,一旦CPU感受到中断,中断识别就会从链上发送下来。
硬件轮询更快、但是对故障很敏感
4️⃣ 仲裁式
采用中断向量
模块必须占用总线才能引起中断
7.5 Direct Memory Access直接存储访问
编程式和中断式的缺点
编程 I/O 需要占用所有 CPU 时间 中断驱动的 I/O 仍需要主动 CPU 干预,尽管 CPU 使用效率高于编程 I/O(传输率较低)
数据的传输必须通过CPU,转移率有限
当传输大量数据时,DMA 是一种更高效的技术
DMA概念
DMA控制器从CPU接管I/O,无需CPU干预就可以将数据块传输到内存或者从内存中获取
对总线的使用优先级上:DMA>CPU
CPU和DMA的数据传输模式:
1️⃣ block transfer mode 块传输方式
2️⃣cycle stealing mode 周期窃取式
DMA 仅在 CPU 不需要时才使用总线,或迫使 CPU 暂时停止运行
DMA 传输一个字的数据,然后释放总线
DMA 交错传输指令和数据
3️⃣transparent mode 透明方式
DMA结构
DMA结构如下:
DMA不用解析地址,直接将地址信号传给后面的I/O设备,让其进行判断
DMA操作
预处理:CPU通知DMA控制器
阅读/写作
设备地址
数据内存块的始地址
要传输的数据量
CPU 继续开展其他工作
数据传输:DMA控制器处理传输(逐字传输)
后处理:DMA控制器在完成后发送中断
一块数据传输完以后才发送中断,不像中断驱动一个字终中断一次
DMA Transfer Cycle Stealing
前两种方式的缺点
I/O传送速度受处理器测试和服务设备速度的限制。
处理器负责管理 I/O传送,对于每一次的 I/O传送,处理器必须执行很多指令
DMA的特点
DMA控制器按周期掌管总线
传输一个字的数据
不是一个中断,CPU不切换上下文
CPU在进入总线前暂停
会使CPU速度变慢
DMA配置
最常使用第三种,CPU只暂停一次
DMA三种方式跟CPU传送数据
1️⃣ 块传送模式Block transfer mode (独占模式)
整个数据块按一个连续的顺序传输
如果DMA传输数据,CPU将被禁用一段时间,直到DMA释放总线
用于将程序或数据文件装入内存
2️⃣ 周期窃取模式§Cycle stealing mode
DMA仅在CPU不需要或强制CPU暂时暂停运行时才使用总线
DMA传输一个字的数据,然后释放总线
DMA交错指令和数据传输
3️⃣ 透明模式(交替模式alternate mode)
DMA和CPU采用分时复用的方式使用总线
需要的时间最多,但效率最高
适用于CPU处理时间比主存存取时间长的情况
题
定一秒的时间区级
例题
假设一台计算机的CPU时钟频率为500Mhz,其CPI为5(意味着平均执行一条指令需要5个时钟周期)。中断模式下,I/O设备的数据传输速率为0.5 MB/s,传输单元为32位。中断服务程序包含18条指令,中断服务的其他开销相当于2条指令的执行时间。请回答:
1)在中断模式下,CPU用于I/O传输的时间与总CPU运行时间的比值是多少?
2)假设设备的数据传输速率为5MB/s,采用DMA模式传输5000B块的数据,DMA预处理和后处理的总成本为500个时钟周期。CPU用于I/O传输的时间占总CPU运行时间的比例是多少?(假设DMA和CPU之间没有内存访问冲突)。
解决方案:
中断模式
在每个中断中,CPU用于I/O传输的时间= 5×18+5×2=100个时钟周期。
在一秒钟,I/O设备传输0.5MB的数据和,需要中断时间= 0.5 MB / 32 = 0.5 MB / 4 B = 0.125 M。
中断成本=0.125M×100=12.5M时钟周期
所需比例= 12.5M/500M=2.5%
DMA模式
在每个DMA中,CPU用于I/O传输的时间=500个时钟周期。
在一秒钟,I/O设备传输5MB的数据和,需要DMA处理时间=5MB/5000B=1K。
DMA处理成本=1K×500=0.5M时钟周期
所需比例= 0.5M /500M=0.1%
7.6 I/O通道
I/O通道是拥有自己的处理器来执行I/O程序的I/O模块
I/O 程序位于主内存中 ,事实上,I/O 通道代表了 DMA 概念的扩展。 因此,I/O 通道能够执行 I/O 指令并控制 I/O 操作
通道功能
接收来自CPU的命令
从内存中加载I/O程序,将命令发送给设备
缓冲、控制和传输数据,为传输提供路径
报告设备状态,发送中断
通道类型
通道容量/数据传输速率:每个通道单位时间传输的最大数据
选择通道
在任何时候,只选择一台设备来传输数据 ;适用于高速设备
多路通道
字节多路通道
轮转
适用于低速设备
每次传输一个字节给一个设备
最终的通道容量要加起来算
块多路通道
轮转
每次传输K个字节给一个设备
通道容量取决于最快的那个设备
7.7 外部接口
点对点和多点配置
串行和并行
-
《计算机组成与结构》 备课笔记
2013-12-01 17:16:43我们老师十几年教学经验编的,参考书籍多达40多本! -
计算机组成原理+数据结构+计算机网络+操作系统考研学习笔记.rar
2020-03-30 08:38:50本人2020年考研,考试科目为北京邮电大学803,包括计算机组成原理,数据结构,操作系统,计算机网络。本文档是我的笔记扫描版,全部是我学习过程中的对教材,辅导书以及错题,难题的总结。可以用作考研学生的复习... -
组成与系统结构思维导图总结笔记
2020-11-18 17:55:28请使用Mindmaster软件打开.emmx文件进行阅读 面向用户:软件工程专业在读本科生,软件工程初学者,考研者 内容包括:指令系统,中央处理器,指令流水线,存储器,互联及I/O -
考研初试408《计算机组成原理》详细笔记
2022-03-30 17:20:06考研自用笔记,根据网课视频等详细做的笔记。内容为考研初试408《数据结构》的笔记,十分详细,文字笔记+配图说明,一刷、二刷、三刷都很适用,建议结合课本配套食用。 加油加油,在座各位都是研究生!! o((>ω))o -
计算机组成原理考研学习笔记.zip
2020-03-30 08:43:15本人2020年考研,考试科目为北京邮电大学803,包括计算机组成原理,数据结构,操作系统,计算机网络。本文档是我的笔记扫描版,全部是我学习过程中的对教材,辅导书以及错题,难题的总结。可以用作考研学生的复习... -
系统分析师学习笔记 计算机组成与体系结构.docx
2020-10-17 17:20:4513.计算机组成与体系结构 PAGE8 / NUMPAGES8 本章内容及分布 编码及浮点数运算 ? Flynn分类法 ? CISC与RISC ? 存储系统 ? 嵌入式系统 ? 系统可靠性计算 ? 编码及浮点数运算 浮点数表示科学计数法 N=尾数X基数指数... -
计算机组成与结构课程设计
2008-12-25 22:27:35研制一台性能如下的实验计算机: (1) 不使用外设。 (2) 运算器采用多累加器结构。 (3) 操作数寻址方式有:直接地址寻址立即数寻址.寄存器直接寻址 (4) 指令系统由如下8条指令组成: 指令编码 助记符 指令... -
王道计算机考研——计算机组成原理笔记
2022-02-08 15:40:39计算机组成原理 1.计算机系统概述 1. 计算机发展历程 2.计算机系统的组成 冯诺依曼体系结构:以运算器为核心 冯诺依曼体系结构的特点 现在计算机体系结构:以内存为核心 CPU,主机,外设 3.存储器 主...1.计算机系统概述
1. 计算机发展历程
2.计算机系统的组成
- 冯诺依曼体系结构:以运算器为核心
- 冯诺依曼体系结构的特点
- 现在计算机体系结构:以内存为核心
- CPU,主机,外设
3.存储器
- 主存储器由存储体,MAR,MDR组成
- 和右边的图进行类比,MAR存储CPU想要获取数据的地址,在存储体中找到后放在MDR中,CPU从MDR中把数据取走。
-
存储体是由一个个存储单元组成的
-
存储字:存储单元中二进制代码的集合
-
存储字长:存储单元中二进制代码的位数
4.运算器
5. 控制器
6. 计算机的工作过程(重点)
- 程序被编译成二进制存储在主存中
工作过程
-
(MAR):表示MAR里边的值为0
-
M(MAR) :主存储器所指向的存储单元里边的值
-
OP(IR):取操作码
-
Ad(IR):取地址码
7. 计算机的层次结构
- 注意编译程序和解释程序的区别
编译程序:将高级语言编写的源程序全部语句一次全部翻译成机器语言程序,而后再执行机器语言程序(只需翻译一次)
解释程序将源程序的一条语句翻译成对应于机器语言的语句,并立即执行。紧接着再翻译下一句(每次执行都要翻译)
8.计算机的性能指标
1. 存储器
2. CPU
3.系统整体的性能指标
4. 思考
2. 数据的表示和运算
1.进位计数制
- 其他进制转十进制
- 二进制<——> 八进制,十六进制 (注意:小数部分也是从右往左算)
- 十进制——>任意进制(整数部分)
- 十进制——>任意进制(小数部分)
- 十进制转二进制(拼凑法,适用于十进制数不是很大的情况)
- 真值和机器数
2.BCD码
- 概念
- 8421码
- 8421码相加
- 可以转换成十进制相加后,再转换成8421码
- 机算方法:不在范围内,加6。如图所示
- 其他表示方式
3. 字符与字符串
- ASCII码
- 汉字的表示和编码
- 字符串的表示形式
- 知识回顾
4.奇偶校验码
- 校验原理
- 奇偶校验码
- 硬件实现
5.海明码
- 设计思想
- 求解步骤
- 全校验
- 海明码只能纠错一位(一个数据传错时,可以纠正)
- 可以检错两位
6. 循环冗余校验码(CRC码)
- 基本思想
- 例题
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TxXHrXvO-1644306008648)(C:\Users\86155\AppData\Roaming\Typora\typora-user-images\image-20220126201152982.png)]
- CRC校验码计算过程
7. 定点数的表示
- 定点数和浮点数的概念
- 无符号数
- 原码
- 反码
- 补码(高频考点)
- 移码
- 技巧
- 补码的作用(注意:执行加法运算时,符号位一起参加运算)
8.移位运算
- 原码的算数移位
- 反码的算数移位
- 补码的算数移位
- 总结
- 逻辑移位
9. 溢出判断
- 符号扩展
10.原码乘法运算
- 机器实现(视频 P18节)
11.补码乘法运算
- 机器实现
- 手算步骤
12.原码除法运算
- 机器运算过程
- 恢复余数法
- 加减交替法
13.补码除法运算
14.强制类型转换
15.数据的存储和排列
- 大小端模式
- 边界对齐
16. 浮点数的表示
- 浮点数的表示
- 尾数的规格化
17. IEEE 754 浮点数标准
- 标准
- 示例(十进制转换为浮点数)
- 示例(浮点数转换为十进制数)
- 单精度浮点数表示的最大值,最小值
- 特殊数值
18.浮点数的运算
- 和十进制的科学计数法进行类比
- 浮点数加减法(P26)
- 舍入
- 强制类型转换
19. 电路的基本原理
- 基本的逻辑运算
- 复合逻辑
3.存储系统
1. 主存简单模型和寻址概念
- 存储器芯片的基本结构
- 寻址
2.存储器RAM
- 两种RAM的比较
- DRAM的刷新
3.ROM(只读存储器)
- 为什么需要ROM?
因为RAM里面的数据容易丢失。
4.存储器基本概念
- 存储器的分类
- 性能指标
数据的宽度:在一个存储周期中存储的位数
- 层次化结构
5. 主存与CPU的连接
- CS:片选线(决定主存是否工作)这种写法是高电平有效
- WE:读写控制线
- A0~A13:地址线
- D0~D7:数据线
- 译码器
- 线选法和译码线选法的区别
6.主存与CPU的连接(例题)
- 分析
- 图解
7.双端口RAM和多模块存储器
- 双端口RAM
- 多模块存储器
- 高位交叉编址和低位交叉编址
- 流水线问题
8.局部性原理及性能分析
- 局部性原理
- 性能分析
- 例题(蓝色字体为答案)
9. Cache 地址映射
- Cache的工作原理
- 地址映射——全相连映射
- 地址映射——直接映射
- 地址映射——组相连映射
10.cache替换算法及写策略
- 替换算法
LRU侧重于近期表现,LFU侧重于全局表现
- 例题
- 命中时的写策略
- 写回法
- 全写法
- 未命中时的写策略
- 写分配法
- 非写分配法
11. 虚拟存储器
- 概念
- 页式虚拟存储器
- 段式虚拟存储器
- 段页式虚拟存储器
- 快表
4.指令系统
1.指令格式
- 指令的含义
- 指令的格式
- 地址码
- 扩展操作码举例
- 扩展操作码的规范
- 指令操作码
- 操作类型
2.指令寻址
- 数据存放
- 指令寻址
3.数据寻址1
- 操作数类型
- 地址码的构成
寻址特征:采用哪一种方式进行寻址
通过寻址特征和形式地址求出有效地址
- 立即寻址
- 直接寻址
- 间接寻址
- 寄存器寻址
- 寄存器间接寻址
- 隐含寻址
- 总结
4.数据寻址2——偏移寻址
- 基址寻址
- 变址寻址
- 相对寻址
- 相对寻址举例
- 总结
5. 数据寻址——堆栈寻址
6.CISC和RISC
- 基本含义
- 特点
5.中央处理器
1.CPU功能和基本结构
- CPU的功能
- 运算器和控制器的功能
- 运算器的基本结构
- 控制器的基本结构
- CPU的基本结构
2.指令周期的数据流
- 指令周期
- 指令周期流程
- 取指周期
- 间址周期
- 中断周期
- 指令执行方案
3. 数据通路1——CPU内部单总线通路
- 数据通路
- CPU内部单总线方式
在介绍这个之前,首先区别一下系统总线和内部总线。
内部总线是指同一部件,如CPU内部连接各寄存器及运算部件之间的总线;
系统总线是指同一台计算机系统的各部件,如CPU、内存、通道和各类l/o接口间互相连接的总线。
- 例题
取指周期
间址周期
执行周期
4. 数据通路2——专用数据通路
- 取指周期
- 例题
第一问
第二问
第三问
第四问
第五问
第六问
5. 控制器1——硬布线
- 控制器的结构和功能
- 控制单元的输入和输出
- CPU的控制方式
6.控制器2——微程序
- 控制器的设计思路
- 微程序的基本思想
- 微程序控制器的基本结构
- 控制存储器
- 微指令的格式
- 微指令的编码方式
- 微指令的地址形成方式
前两种理解,后四种了解(不重要)
- 下地址方式例题
- 一些易混淆的概念
指令=微程序
微程序由多个微指令组成
微指令由多个微命令组成
微命令是微操作的控制信号
微操作是微命令的执行过程
7.指令流水线的概念及性能指标
- 指令流水的定义
- 流水线的表示方法
- 流水线的性能指标
- 吞吐率
- 加速比
- 效率
8.影响流水线的因素及分类
- 机器周期的设置
- 影响流水线的因素
- 结构相关
- 数据相关
- 例题
- 数据相关的一些概念
RAW(read after write):写后读
另外两个同上
- 控制相关
- 总结
- 流水线的分类
- 流水新的多发技术
- 超标量技术
- 超流水技术
- 超长指令字
6.总线
1.总线的概念和分类
- 总线的特点
- 总线特性
- 总线的分类
- 串行总线与并行总线
- 按总线功能
- 系统总线的结构
- 单总线结构
- 双总线结构
- 三总线结构
2.性能指标
- 带宽例题
- 上节遗留问题:串行总线和并行总线哪个速度更快
- 总结
3. 总线仲裁
- 基本特点
- 集中仲裁方式(重要)
- 链式查询方式
- 计数器查询方式
- 独立请求方式
- 三种方式总结
- 分布仲裁方式(了解即可)
4. 总线操作和定时
- 总线传输的四个阶段
- 同步定时方式
- 异步定时方式
- 例题(数据传输率)
- 半同步通信(扩展)
- 分离式通信(拓展)
5. 总线标准
- 基本特点
7. 输入输出系统
1. IO系统基本概念
- 演变过程
- IO系统基本组成
- IO方式简介
2. 输入输出
- 外部设备
- 显示器
3. 外存储器
- 基本概念
- 磁盘存储器
- 磁盘设备的组成
- 性能指标
- 存取时间计算过程
- 磁盘地址和磁盘的工作过程
4. IO接口
- 功能
- 基本结构
- 接口与端口
- IO端口及其编址
- IO接口的类型
5. 程序查询方式
- 程序查询方式流程图
- 接口结构
- 例题
- 总结
6. 中断系统
- 基本概念
- 分类
- 中断请求标记
- 中断判优
- 优先级设置
- 中断处理过程
- 中断隐指令
- 中断服务程序
- 单重中断和多重中断
- 中断屏蔽技术
- 中断屏蔽技术 例题(重要,需掌握)
7. 程序中断方式
- 程序中断方式过程
恢复现场即算做下一次启动
- 例题 第一问
- 例题 第二问 (重要)
CPI:执行一条指令所需要的时钟周期
8. DMA方式
- DMA 控制器
- 结构
- DMA传送方式
- DMA方式的特点
- DMA方式与中断方式对比
- CPU占用情况 中断方式
- CPU占用情况 DMA方式
- 总结
-
计算机组成原理:最详细笔记
2021-01-21 14:26:44参考:《王道计算机组成原理》学习笔记总目录+思维导图 2019 王道考研 计算机组成原理 第一章 计算机系统概述 1.1 计算机发展历程 1.1.1 计算机硬件的发展 计算机系统=硬件+软件 计算机硬件的发展: 第一代计算机... -
计算机组成原理王道笔记——基础知识
2021-04-20 17:39:04一、冯 诺依曼机(计算机硬件基本结构) 冯诺依曼提出了“存储程序”的概念:将指令以二进制代码的形式事先输入计算机的主存储器(内存)中,然后计算机按地址顺序一条一条的执行指令。 冯诺依曼计算机特点: 1、... -
软考-软件设计师 笔记一(计算机组成与体系结构)
2021-03-21 10:56:56历年分值分布情况数据的表示进制的转换原码反码补码移码数值的表示范围浮点数运算计算机结构CPU结构(运算器与控制器的组成)Flynn分类法 历年分值分布情况 数据的表示 进制的转换 X进制转十进制 : 按权展开 例如: ... -
一、计算机系统概论----王道计算机组成原理学习笔记
2022-02-21 10:29:05一、计算机系统概论 1.计算机的发展历程 1.1什么是计算机系统 1.2硬件的发展 1.3软件的发展 1.4目前的发展趋势 -
北京科技大学计算机组成原理和数据结构历年试题及笔记.rar
2021-11-07 18:52:49北京科技大学计算机组成原理和数据结构历年试题及笔记.rar -
计算机组成原理高分笔记
2012-05-01 23:55:12很强大!是考研必备笔记哦!记得顶哦!计算机组成原理必备笔记! -
《王道计算机组成原理》学习笔记总目录+思维导图
2020-01-27 22:39:04文章目录第 1 章 计算机系统概述1.1 计算机发展历程1.1.1 计算机硬件的发展1.1.2 计算机软件的发展 第 1 章 计算机系统概述 1.1 计算机发展历程 1.1.1 计算机硬件的发展 1.1.2 计算机软件的发展 ... -
计算机408考研复习笔记
2021-02-19 15:28:24数据结构+组成原理+操作系统+计网 适用于期末复习 考研总结 -
计算机组成原理思维导图(xmind)
2020-05-26 08:30:57计算机组成 第一章 计算机系统概论 冯诺依曼型计算机特点 1.计算机由运算器,控制器,存储器,输入和输出设备5部分组成 2.采用存储程序的方式,程序和数据放在同一个存储器中,并以二进制表示。 3.指令由操作码和... -
计算机组成与体系结构笔记(1)
2019-01-11 14:59:37文章目录1.11.2 计算机系统的基本组成结构1.3 执行的过程1.4 计算机性能指标2 数据的机器级表示与运算2.1 整数的编码2.2 有符号数与无符号数间转换2.3 整数的位运算与逻辑运算2.4整数的扩展与移位2.5 整数的加法2.6 ... -
计算机组成原理第二章-运算方法与运算器
2019-03-12 13:04:31计算机中的数据表示,熟悉包括定点数、浮点数、字符、十进制数的表示方法 ; 原码、补码、反码、移码等码制之间的关系以及各码制之间真值数的转换; 补码的加减运算,定点原码一位乘、除运算,定点补码一位乘、除运算... -
计算机原理与体系结构学习笔记
2012-05-11 15:50:28记录了个人在研习《计算机体系结构》《计算机组成原理》时的一些心得体会~~~ -
计算机组成原理(唐朔飞)笔记-1.2计算机基本组成上
2019-09-19 10:18:231.2计算机基本组成 1.2.1冯·诺依曼机器的特点 约定:本教材不依靠任何现代机器作为模型讲解! 冯·诺依曼计算机的特点可归结如下: 计算机由运算器、存储器、控制器、输入设备、输出设备五大部件组成。 指令... -
计算机组成原理学习笔记第1章 1.1——冯 · 诺依曼结构计算机工作原理及层次结构分析
2022-03-05 18:51:49计算机组成原理学习笔记第1章 1.1——冯 · 诺依曼结构计算机工作原理及层次结构分析。周六下午4点到现在,整理了大约4个小时1,终于整理好了第一节的笔记。 -
计算机组成原理(唐朔飞)笔记-1.2计算机基本组成中
2019-09-20 09:04:061.2计算机基本组成中 上篇文章对冯·诺依曼计算机以及现代计算机的硬件结构进行了详细的讲解。今天将对计算机硬件进行更加细致的讲解。 存储器 上篇文章中讲到,冯·诺依曼计算机是具有存储程序功能的计算机,且... -
2021年 专插本考生 5万字精心整理 计算机基础与数据结构 笔记 建议直接收藏
2021-04-11 21:40:27必做题整理 时间 2021年4月11日,时间21点40分,考完试十分怀疑人生,本来想靠专业课拉点分,也预料到今年专插本报名人数多,加上改革...我还做了超详细的政治思维导图,我会把历年试题资料还有自己的笔记,都一并上传 -
计算机组成原理(哈工大)学习笔记
2020-07-08 08:10:46文章目录计算机组成原理一、计算机系统概论1.1计算机系统简介一、计算机的软硬件概念二、计算机系统的层次结构三、计算机体系结构和计算机组成1.2计算机的基本组成1.3计算机硬件的主要技术指标一、机器字长二、运算...