25下的软考成绩出来了,很高兴过了(^▽^),分享一下我备考过程中的笔记吧
一.技术类-计算机基础
1-1.冯诺依曼计算机
冯诺依曼计算机特点:
- 计算机由五大部件组成
- 指令和数据以同等地位存于存储器,可按地址寻访
- 指令和数据用二进制表示
- 指令由操作码和地址码组成
- 存储程序以运算器为中心
组成部分及工作流程:

- 输入设备:
将信息转换成计算机能识别的形式
- 控制器:
指挥程序运行
- 运算器:
进行算数运算,逻辑运算
- 存储器:
存放程序和数据
- 输出设备:
将结果转换为人们熟悉的形式
缺陷:
以运算器为中心,承担绝大多数任务
现代计算机硬件系统

改进:
将运算器和控制器合并成了CPU中
特点:
以存储器为中心
1-2.现代计算机硬件图和CPU01

硬件组成
- 主机:
运算器,控制器,主存
- 存储器:
主存,辅存
- IO设备:
输入设备,输出设备
CPU(运算器组成)

- ALU(必须):
Arithmetic Logic Unit,算术逻辑运算单元
为运算器的核心部件,其功能是进行算术、逻辑运算。
- ACC(必须):
Accumulator,累加器
是运算器中既能存放运算前的操作数,又能存放运算结果的寄存器。
- MQ(选配):
Multiplier-Quotient Register,乘商寄存器
乘法运算时存放乘数、除法时存放商的寄存器。
- X(选配):
此字母没有专指的缩写含义,可以用作任一部件名,在此表示操作数寄存器,即运算器中工作寄存器之一,用来存放操作数;
- PSW:
Program Status Word,状态寄存器
用来存储表示当前运算的状态及程序的工作方式。用于计算出现溢出情况下,记录到该寄存器;或出现中断,记录中断情况,保护现场
程序状态字寄存器用来保存由算术/逻辑指令运行或测试的结果所建立起来的各种条件码内容,如运算结果进/借位标志(C)、运算结果溢出标志(O)、运算结果为零标志(Z)、运算结果为负标志(N)、运算结果符号标志(S)等,这些标志位通常用1位触发器来保存。
除此之外,程序状态字寄存器还用来保存中断和系统工作状态等信息,以便CPU和系统及时了解机器运行状态和程序运行状态。
因此,程序状态字寄存器是一个保存各种状态条件标志的寄存器。
CPU各部件计算时作用
| ACC | MQ | X | |
|---|---|---|---|
| 加法 | 被加数和 | 加数 | |
| 减法 | 被减数差 | 减数 | |
| 乘法 | 乘积 高位 | 乘数 乘积 低位 | 被乘数 |
| 除法 | 被除数余数 | 商 | 除数 |
指令

指令操作分为:
- 操作码字段OP:用于表示指令功能
- 操作地址码字段Addr:用于指向指令的操作对象
例如:取数A [A]→ACC
000001 0000001000
存数 [ACC]→B
B加C [ACC]+[C]→ACC
乘D [ACC]×[D]→ACC
打印E [E]→打印机
停机
1-3.现代计算机硬件图和CPU02

CPU(控制器组成)
- CU控制单元: Control Unit,控制单元
CU发出各种控制命令或微指令,控制整个计算机系统,包括cpu内部的各个部件,能够协调、稳定、正确、连续的运行;
- ID:
Instruction Decoder,指令译码器
用于分析指令哪些是操作码,那些是地址码,操作码代表的作用是什么,以决定操作的性质和方法,然后才能控制计算机其他各部件协同完成指令表达的功能。
- IR:
Instruction Register,指令寄存器
其功能是存放当前正在执行的指令
- PC:
Program Counter,程序计数器
其功能是用来指向下一条指令在主存储器中的地址
- 时序部件:
提供稳定的时钟
主存储器组成
- MAR:
memory address register,主存地址寄存器,MAR用来保存数据被传输到的位置的地址或者数据来源位置的地址。
- MDR:
memory data register,主存数据寄存器,MDR用来保存要被写入地址单元或者从地址单元读入的数据。
总结:CPU运算器与控制器构成
运算器组件:
- 算术逻辑单元ALU: 数据的算术运算和逻辑运算;
- 累加寄存器ACC: 通用寄存器,为ALU提供一个工作区,用来暂存数据;
- 数据缓冲寄存器DR: 写内存时,暂存指令或数据;
- 状态条件寄存器PSW: 存状态标志与控制标志。
控制器组件:
- 程序计数器PC: 存储下一条要执行指令的地址;
- 指令库寄存器IR: 存储即将执行的指令;
- 指令译码器ID: 对指令中的操作码字段进行分析解释;
- 地址寄存器AR: 用来保存当前CPU所访问的内存单元的地址。
- 时序部件: 提供时序控制信号。
一条指令的执行步骤:
取指:
PC(程序计数器)→AR(地址寄存器)→存储器→DR数据寄存器→IR指令寄存器(存放即将执行的指令)
PS:现在,MAR(地址寄存器)和MDR(数据寄存器)集成到了CPU,故直接称为AR和DR
分析:
OP→ID→CU控制器
执行:
Ad →AR(地址寄存器)→M存储器→DR数据寄存器→AC累加器
1-4.主存
主存存储单元
存储器的基本单位是存储单元, 一般以8位二进制为一个存储单元。
每个存储单元都有一个地址, 一般用十六进制数表示。

主存的总线类型
- 数据总线:
一次处理n位的数据,则数据总线的长度为n。n的位数为一个字的长度。
- 地址总线:
假如需要n位二进制数来表示所有的地址,则地址总线的个数为n。

例题1
内存按字节编址,地址从A4000H到CBFFFH,共有(1)个字节。若 用存储容量为32K×8bit的存储芯片构成该内存,至少需要(2)片。
试题分析:
1.先求出地址总个数:
CBFFFH-A4000H+1=CC000-A4000=28000H(十六进制)
PS:为什么要+1,类比于 3 到 10 有几个数,你怎么算? 10 - 3 + 1 = 8 个数,不信的话,你数一数指头,是不是8个数, 反正我是信了。
$2(16^4)+8(16^3)=163840=160*1024(个)=160K(个)$
PS:为什么取1024进制,因为题目内存是以字节编码(Byte),那么字节的进制就是1024;
2.求解芯片个数
$$
\frac{160K8bit}{32K8bit}=5(个)
$$
例题2
内存按字节编址,利用 8K × 4bit 的存储器芯片构成 84000H 到 8FFFFH 的内存,共需(?)片
试题分析:
根据题目描述,采用该存储器芯片需要构成
8FFFFH - 84000H + 1 = C000H
的空间,且内存按照字节(8bit)编码,需要的容量是C000H×8bit。
C000H×8bit 就是:48K×8bit,一片存储芯片的容量是8K×4bit,两者相除得12。也就是
$$
\frac{48K8bit}{8K4bit}=12
$$
1-5.存储器
分类(RAM/ROM)

SRAM与 DRAM
| SRAM(Static Random Access Memory) 静态随机存储器 | DRAM(Dynamic Random Access Memory) 动态随机储器 | |
|---|---|---|
| 优点: | ①数据由锁存器记忆,不需要另设电路定期刷新; ②存取速度很快(SRAM采用了与制作CPU相同的半导体工艺)。 | ①所用元件少,集成度高: ②功耗低,便于大规模集成。 |
| 缺点: | ①所有元件较多,集成度比DRAM低; ②功耗较大; ③体积较大,制造成本比DRAM高。 | ①需要定期刷新,外围电路比较复杂; ②刷新器件时不能进行读写操作,使有效利用时间受到限制 |
存储器分类级别


时间 和 空间 局部性
时间局部性:刚被访问的内容,立即又被访问。
空间局部性:刚被访问的内容,临近的空间很快被访问。
1-6.校验码概念
信息保存在电容中,如遇电磁环境干扰,会导致电容的充放电 或触发器的翻转,存在存储器的信息可能会出错
为了检查出错误,人们提出了校验码
码距与检错纠错:
一个编码系统的码距就是整个编码系统中任意(所有)两个码字的最 小距离。
若一个编码系统有四种编码分别为:0000,0011,1100, 1111,此编码系统中0000与1111的码距为4; 0000与0011的码距为2, 是此编码系统的最小码距。因此该编码系统的码距为2。
- 在一个码组内为了检测e个误码,要求最小码距应该满足: d>=e+1
- 在一个码组内为了纠正t个误码,要求最小码距应该满足: d>=2t+1
- 同时纠错检错: d>=e+t+1
校验码
假如我们现在要对A,B两个字母进行编码。我们可以选用不同 长度的编码,以产生不同码距的编码,分析它们的检错纠错能力。
1、若用1位长度的二进制编码。若A=0,B=1。这样A,B之间的最小 码距为1。
合法码:{0,1}; 非法码:{0,1};
2、若用2位长度的二进制编码,可选用11,00作为合法编码,也可 以选用01,10作为合法编码。若以A=00,B=11为例,A、B之间的最 小码距为2。
合法码:{11,00}; 非法码:{10,01};
3、若用3位长度的二进制编码,可选用111,000作为合法编码。A,B之 间的最小码距为3。
合法码:{111,000}; 非法码:{001,010,011,100,101,110}
奇偶校验
只能发现奇数个位出错的情况
奇偶校验分为:奇校验,偶校验
分别是确保一组数据中,1的个数为奇数还是偶数
00100011
偶校验:100100011 奇校验:000100011
发现错误演示
以偶校验为例:
假设100100011 有一位出错→100100010
假设100100011 有二位出错→100100000
说明:只能发现奇数个位出错的情况,偶数个无法检测出来
海明码
奇偶校验、分组校验
校验位与数量
海明码的校验码的位置必须是在$2^n$位置(n从0开始,分别代表从右边数 起分别是第1、2、4、8、16……),信息码也就是在非$2^n$位置

设数据位是n位,校验位是K位,则n和k必须满足以下关系:
$$
2^k≥n+k+1
$$
海明码的计算方式是同组(除校验位)查看1的个数,并依据是奇or偶校验,进行补0或补1
PS:实际是同组(除校验位)进行按位异或(即两位相同为0,不同为1)
分组方式
分组的方式,我们是看位数的二进制
第一组:XXXX1
1:001 3:011 5:101 7:111
(格式 位数:二进制表示)
第二组:XXX1X
2:010 3:011 6:110 7:111
第三组:XX1XX
4:100 5:101 6:110 7:111
第四组:X1XXX
…
第五组:1XXXX
例题:
现有一组数据0101,求按“偶校验”配置的海明码
0101是原始数据,我们需要先用公式,计算至少需要几位校验位:(重点考点)
$$
2^k≥n+k+1
$$
带入原数据位数n=4,得出最少K为3,然后按照分组方式,找到校验位插入位置
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 信息位 |
|---|---|---|---|---|---|---|---|
| 1 | 0 | 1 | r3 | 0 | r2 | r1 | 校验位 |
第一组位数:1357
r1=第3位⊕第5位⊕第7位
=0⊕1⊕1=0
异或过程:
0⊕1=1,
前一个结果1与后面进行运算1⊕1=0
第二组位数:2367
r2=第3位⊕第6位⊕第7位
=0⊕0⊕1=1
第三组位数:4567
r4=第5位⊕第6位⊕第7位
=1⊕0⊕1=0
CRC循环冗余校验码
采用CRC进行差错校验,生成多项式为$G(X)=X^4+X+1$,信息码字为10111,则计算出的 CRC校验码是( )。
A. 0000 B. 0100 C. 0010 D. 1100
解题步骤:
- 化解多项式为10011
- 信息码加0做模二加运算(异或 / 不进位加法)
- 得到的余数即为校验码
1.化解多项式为10011:
$G(X)=X^4+X+1$
$=2^4+2^1+2^0$
$2^4+2^1+2^0→2^4+02^3+02^2+2^1+2^0$
| $2^4$ | $0*2^3$ | $0*2^2$ | $2^1$ | $2^0$ |
|---|---|---|---|---|
| 1 | 0 | 0 | 1 | 1 |
2.信息码加0做模二除运算(异或 / 不进位加法)

题目中给的消息码10111,我们在后面添加多项式最高次幂个0(例如多项式最高次幂是$x^4$,我们就加4个0),进行按位异或运算(相同为0,不同为1)
3.得到的余数即为校验码
最后,当最后除不尽,余数(即最下面的1100)便是校验码
最终的信息位+校验位为:10111 1100
1-11指令的流水线
指令
指令周期:
取出(解释)并执行一条指令所需的全部时间。

完成一条指令(一个指令周期)可以分为:取指周期、分析周期、执行周期
指令流水技术:
指令步骤的并行、提高处理器执行指令的效率。 假设使用流水线将指令流的处理过程划分为取指、分析、执行三 个并行处理的过程段。在这个流水线中,处理器有三个操作部件, 同时对这三条指令进行加工,加快了程序的执行速度。几乎所有 的高性能计算机都采用了指令流水线。
1.顺序方式:
各条机器指令之间顺序串行地执行,执行完一条指令后才 取下一条指令。缺点是速度慢,机器各部件利用率低。

2.重叠方式:
在解释第K条指令的操作完成之前就可以开始解释第K+1 条指令。

3.流水方式
流水线建立时间:
当第一个指令走完了"取指-分析-执行"的时间,即是流水线建立时间.
在建立过程中,并不是所有部件都在工作,而是挨个启动的过程,就是流水线建立过程

流水线周期:
当流水线建立好后,每个指令都在近乎相同的时间片内完成,我们将这样的的时间片叫做△t
而△t是"取指-分析-执行"执行过程中耗时最长的阶段时间
例如:
取指2s,分析3s,执行1s,取最长的分析3s

计算n条指令总共执行时间公式:
公式:
① 理论公式(主要为准):
$$
(t1+t2+…+tk)+(n-1)*△t
$$
(t1+t2+…+tk):即流水线建立时间,而tx为第几阶段的时间(例如t1为取指时间,t2为分析时间,t3为执行时间)
**△t **: 即流水线周期,执行过程中耗时最长的阶段时间
② 实践公式:
$$
(k+n-1)*△t
$$
K : 执行过程有几个阶段(例如"'取指-分析-执行"有3段,k=3)
例题:
若流水线把一条指令分为取指、分析和执行三个部分,三部分的时间分别 是取指2ns,分析2ns,执行1ns。那么流水线周期是多少?100条指令全部执行 完毕需要的时间是多少?
解析:① 理论公式(主要为准):
$$
(t1+t2+…+tk)+(n-1)△t\ =(2+2+1)+(100-1)2\
=203
$$
② 实践公式:
$$
(k+n-1)△t\ =(3+100-1)2\
=204
$$
流水线的吞吐率和最大吞吐率:
吞吐率是指单位内流水线处理机流出的结果数。 对指令而言,就是单位时间内执行的指令数。
$$
吞吐率:TP=\frac{指令条数}{流水线时间}=\frac{指令条数}{(t1+t2+…+tk)+(n-1)*△t}
$$
而最大吞吐率为
$$
最大吞吐率:TP_{max}=\lim_{n\to \infty}\frac{n}{(k+n-1)△t}=\frac{1}{△t}
$$
流水线加速比:
$$
流水线加速比:TP=\frac{不使用流水线执行时间}{使用流水线时间}=\frac{n(t1+t2+t3+..+tk)}{(t1+t2+…+tk)+(n-1)△t}
$$
1-13高速缓冲存储器
作用:
解决CPU和主存之间的速度差异,避免CPU“空等”现象。

局部性原理:
1.时间局部性
时间局部性是指被引用过一次的内存位置很可能在不远的将来再被多次引用。
2.空间局部性
空间局部性是指如果一个内存位置被引用了一次,那么程序很可能在不远的将来引用其附近的一个内存位置。

Cache的映像/映射方法
1.直接映像
每一个内存区都是和一个Cache块相对应的,也就是说,Cache块里有多少块,一个内存区里就有多少Cache块,每一块都是相互对应的。假设cache里有32块,那么内存里就会先算着32块总共有多大,在除以自己的容量,就可以得出自己该划分出多少的区,每一个区有n块(cache有多少块,一个内存区里就有多少块)。这样来一一对应。
优点:地址换算快,更好的运行效率。
缺点:不灵活,冲突率太高,假设0区的第0块在和cache的第0块传递数据,第二区的第0块就不能传输,即使有别的cache块空闲着也不能传输,只能等。太浪费资源了。
2.全相联映像
内存中不再分区,而是直接分块,就是你Cache有多大,我内存就按这个大小来分块,假设Cache有512kb,我内存中每一块就是512kb,我内存中每一块都相当于是一个Cache的副本(其实cache是内存的一个副本,这里为了方便理解,故此这样说)。例如,内存中的第0块中就有Cache中的每一块与之相对应。这样就很好的解决了冲突率高的问题,只有Cache中被填满了,才会有冲突产生。
优点:位置不受限制,十分灵活,很好的解决了冲突高的问题,资源利用率高
缺点:无法从主存块号中直接获得Cache的块号,变换比较复杂,速度比较慢。

3.组相联映像
是前两种的集大成者。
它的分区方法是组对组的一种分区方式,每两块是一组。一个Cache对应一个内存中的区,内存区里的组数和Cache中的组数是一一对应的。Cache能够对应每一个内存区。这符合直接映像的优点。然而,每一个组内的数据也是可以自己替换的,比如内存中的第0区中的第8组的第0块中的数据可以替换到Cache第0组中的第0块,也可以去第0组的第一块。这就符合了全相连映像。所以说组采用直接映像,块采用全相连映像。

对比
| 冲突率 | 电路复杂程度 | 其他 | |
|---|---|---|---|
| 直接相联映像 | 高 | 简单 | 对应位置有数据即冲突 |
| 全相联映像 | 低 | 复杂 | 所有位置有数据即冲突 |
| 组相联映像 | 中 | 折中 | 小组内的对应位置有数据即冲突 |
使用方案
距离CPU较近位置可以采用直接映像或者 组相联映像距离
CPU较远的可以采用全相联映像
cache的性能
CPU在访问内存时,首先判断所要访问的内容是否在Cache中,如果在, 就称为“命中”,此时CPU直接从Cache中调用该内容;否则,就称为 “不 命中”,CPU只好去内存中调用所需的子程序或指令了。CPU不但可以直接从 Cache中读出内容,也可以直接往其中写入内容。由于Cache的存取速率相当 快,使得CPU的利用率大大提高,进而使整个系统的性能得以提升。
Cache的平均访问时间ta
如果以Hc为代表对Cache的访问命中率(百分数%),tc为Cache的存取时间,tm为 主存的访问时间,则Cache的平均访问时间ta为:
$$
ta=Hc*tc+(1-Hc)tm
$$
cache写策略
因为cache的内容是部分主存内容的副本,应该与主存内容保持一致。 而CPU对cache的写入更改了cache内容,如何与主存内容保持一致就有 几种写操作工作方式可供选择,统称为写策略。
1.写回法(write--back)
当CPU对cache写命中时,只修改cache的内容不立即写入主存,只当此行被换出时才写回主存。这种策略使cache在CPU-主存之间,不仅在 读方向而且在写方向上都起到高速缓存作用。
2、写直达法(write--through)
又称全写法,写透。是当cache写命中时,cache与主存同时发生写修改。
3、标记法
数据进入cache后,有效位置1,当cpu对该数据修改时,数据只写入主存并将该有效位置0。要从cache中读取数据时要测试其有效位,若为1则直接从cache中取数,否则从主存中取数。
cache替换算法
1.随机算法
这是最简单的替换算法。随机法完全不管Cache块过去、现 在及将来的使用情况,简单地根据一个随机数,选择一块替换掉。
2.先进先出(First In and First Out,FIFO)算法
按调入Cache的先后 决定淘汰的顺序,即在需要更新时,将最先进入Cache的块作为被替换的块。 这种方法要求为每块做一记录,记下它们进入Cache的先后次序。这种方法容 易实现,而且系统开销小。其缺点是可能会把一些需要经常使用的程序块(如 循环程序)替换掉。
3.近期最少使用(Least Recently Used,LRU)算法
LRU算法是把 CPU近期最少使用的块作为被替换的块。这种替换方法需要随时记录Cache中 各块的使用情况,以便确定哪个块是近期最少使用的块。LRU算法相对合理, 但实现起来比较复杂,系统开销较大。通常需要对每一块设置一个称为“年龄 计数器”的硬件或软件计数器,用以记录其被使用的情况。
4.最不经常使用页置换(Least Frequently Used,LFU)算法
要求在页 置换时置换引用计数最小的页,因为经常使用的页应该有一个较大的引用次数。 但是有些页在开始时使用次数很多,但以后就不再使用,这类页将会长时间留在内存中,因此可以将引用计数寄存器定时右移一位,形成指数衰减的平均使 用次数。LFU的复杂度以及计数器规模都比LRU大,LRU只关注近期访问情况, 而LFU会统计累计访问次数作为淘汰的依据。该算法计数器位数多,实现困 难。
1-14 磁盘存储器
常用的外存有磁带存储器、硬盘 存储器、磁盘阵列和光盘存储器。
磁盘容量计算公式
磁盘标称的容量是格式化容量,计算公式如下:
存储容量=n×t×s×b
其中:
n:为保存数据的总记录面数
t:为每面磁道数
s:为每道的扇区数
b:为每个扇区存储的字节数
硬盘存取时间:
寻道时间+等待时间+读/写时间
其中读/写时间可忽略不计
平均寻道时间+平均等待时间

例题1
在磁盘上存储数据的排列方式会影响 I/O 服务的总时间。假设每磁道划 分成 10 个物理块,每块存放 1 个逻辑记录。逻辑记录 RI.R2, …, RI0 存放在同一个磁道上, 记录的安排顺序如下表所示;

假定磁盘的旋转速度为 30ms/周,磁头当前处在 R1 的开始处。若系统顺 序处理这些记录,使用单缓冲区,每个记录处理时间为 6ms,则处理这 10 个记录的最 长时间为 (1) ;若对信息存储进行优化分布后,处理 10 个 记录的最少时间为(2)_.
解题思路:
依题意,有10个物理块的话,存放方式如下

因为磁盘的旋转速度为 30ms/周,磁头当前处在 R1 的开始处,所以,平均到每一块读取时间为3ms
(1)对第一种情况:系统读出(3ms)并处理记录R1(6ms) 之后,磁头已转到记录R4的开始处,所以为了读出记录R2,磁盘必须再转一圈,需要30ms(转一圈)加3ms(读记录)的时间。这样,处理10个记录的总时间应为处理前9个记录(即R1,R2,…,R9)的总时间再加上读R10和处理时间
9×33ms+ 9ms=306ms
(2)若对信息进行分布优化的结果对应关系所示:
| 物理块 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|
| 逻辑记录 | r1 | r8 | r5 | r2 | r9 | r6 | r3 | r10 | r7 | r4 |
记录的开始处,立即就可以读出并处理,因此处理10个记录的总时间为:
10×(3ms(读记录)+6ms(处理记录))=10×9ms90ms
例题2
在磁盘调度管理中,应先进行移臂调度,再进行旋转调度。假设磁盘移动臂位于21 号柱面上,进程的请求序列如下表所示。如果采用最短移臂调度算法,那么系统的 响应序列应为()

A. ②⑧③④⑤①⑦⑥⑨
B. ②③⑧④⑥⑨①⑤⑦
D. ②⑧③⑤⑦①④⑥⑨
C. ①②③④⑤⑥⑦⑧⑨
解题思路
根据题干要求,先进行移臂调度,找到对应柱面,然后进行旋转调度,找 到对应磁头和扇区。
由表可知①⑤⑦在17柱面(21-17=4),②③⑧在23柱面(23-21=2),④⑥在32柱面(32-21=9)。
因此按最短移臂算法,应该是23柱面17柱 面32柱面38柱面,只有D项满足。
参考答案:D
1-15 计算机系统结构的分类
Flynn 分类1966年,Michael.J.Flynn 提出根据指令流、数据流的多倍性特征对 计算机系统进行分类(通常称为 Flynn 分类法),有关定义如下。
- 指令流:指机器执行的指令序列;
- 数据流:指由指令流调用的数据序列,包括输入数据和中间结果, 但不包括输出数据。
Flynn根据不同的指令流-数据流组织方式,把计算机系统分成以下四类。
1.单指令流单数据流SISD:
(Single Instruction stream and Single Data stream,SISD)
SISD 其实就是传统的顺序执行的单处理器计算机,其指 令部件每次只对一条指令进行译码,并只对一个操作部件分配数据。
2.单指令流多数据流SIMD:
(Single Instruction stream and Multiple Data stream,SIMD)
SIMD 以并行处理机(矩阵处理机)为代表,并 行处理机包括多个重复的处理单元,由单一指令部件控制,按照同一指令流的 要求为它们分配各自所需的不同数据。
3.多指令流单数据流MISD:
(Multiple Instruction stream and Single Data stream,MISD)
MISD 具有n个处理单元,按 n 条不同指令的要求 对同一数据流及其中间结果进行不同的处理。一个处理单元的输出又作为另一 个处理单元的输入。这类系统实际上很少见到。
4.多指令流多数据流MIMD:
(Multiple Instruction stream and Multiple Data stream,MIMD)
MIMD 是指能实现作业、任务、指令等各级全面 并行的多机系统。如多核处理器、多处理机属于 MIMD。
复杂指令系统CISC的特点
- 指令数量众多。指令系统拥有大量的指令,通常有 100~250 条。
- 指令使用频率相差悬殊。最常使用的是一些比较简单的指令,仅占指 令总数的20%,但在程序中出现的频率却占80%。而大部分复杂指令却很少使 用。
- 支持很多种寻址方式。支持的寻址方式通常为 5~20 种。
- 变长的指令。指令长度不是固定的,变长的指令增加指令译码电路的 复杂性。
- 指令可以对主存单元中的数据直接进行处理。典型的 CISC 通常都 有指令能够直接对主存单元中的数据进行处理,其执行速度较慢。
- 以微程序控制为主。CISC 的指令系统很复杂,难以用硬布线逻辑(组合逻辑)电路实现控制器,通常采用微程序控制。
精简指令系统RISC的特点
- 指令数量少。优先选取使用频率最高的一些简单指令和一些常用指令, 避免使用复杂指令。只提供了 LOAD(从存储器中读数)和 STORE(把数据写 入存储器)两条指令对存储器操作,其余所有的操作都在 CPU 的寄存器之间进 行。
- 指令的寻址方式少。通常只支持寄存器寻址方式、立即数寻址方式和相 对寻址方式。
- 指令长度固定,指令格式种类少。因为 RISC 指令数量少、格式少、相 对简单,其指令长度固定,指令之间各字段的划分比较一致,译码相对容易。
- 以硬布线逻辑控制为主。为了提高操作的执行速度,通常采用硬布线 逻辑(组合逻辑)来构建控制器。
- 单周期指令执行,采用流水线技术。因为简化了指令系统,很容易利 用流水线技术,使得大部分指令都能在一个机器周期内完成。少数指令可能会 需要多周期,例如, LOAD/STORE 指令因为需要访问存储器,其执行时间就 会长一些。
- 优化的编译器:RISC 的精简指令集使编译工作简单化。因为指令长 度固定、格式少、寻址方式少,编译时不必在具有相似功能的许多指令中进行 选择,也不必为寻址方式的选择而费心,同时易于实现优化,从而可以生成高 效率执行的机器代码。
- CPU 中的通用寄存器数量多,一般在 32 个以上,有的可达上千个。
CISC与RISC对比
| 指令系统类型 | 指令 | 寻址方式 | 实现方式 | 其它 |
|---|---|---|---|---|
| CISC(复杂) | 数量多,使用频 率差别大,可变 长格式 | 支持多种 | 微程序控制技术(微码) | 研制周期长 |
| RISC(精简) | 数量少,使用频 率接近,定长格 式,大部分为单 周期指令,操作 寄存器,只有 Load/Store操作 内存 | 支持方式少 | 增加了通用寄存 器;硬布线逻辑 控制为;适合采 用流水线 | 优化编译,有效 支持高级语言 |
1-16 总线
按总线相对于 CPU 或其他芯片的位置可分为内部总线和外部总线两种。
按总线功能来划分,又可分为地址总线、数据总线、控制总线三类,地址总 线用来传送地址信息,数据总线用来传送数据信息,控制总线用来传送各种 控制信号。
并行总线和串行总线
按照总线中数据线的多少,可分为并行总线和串行总线。
| 名称 | 数据线 | 特点 | 应用 |
|---|---|---|---|
| 并行总 线 | 多条双向数据线 | 有传输延迟,适合近距离 连接。 | 系统总线(计算机各部件) |
| 串行总 线 | 一条双向数据线 或两条单向数据线 | 速率不高,但适合长距离 连接。 | 通信总线(计算机之间或计算机与其他系统间) |
单工,半双工,双工
单工通信
单工通信只支持信号在一个方向上传输(正向或反向),任何时候不能改变信号的传输方向。
为保证正确传送数据信号,接收端要对接收的数据进行校验,若校验出错,则通过监控信道发送请求重发的信号。
此种方式适用于数据收集系统,如气象数据的收集、电话费的集中计算等。
例如计算机和打印机之间的通信是单工模式,因为只有计算机向打印机传输数据,而没有相反方向的数据传输。还有在某些通信信道中,如单工无线发送等
半双工通信
半双工通信允许信号在两个方向上传输,但某一时刻只允许信号在一个信道上单向传输。
因此,半双工通信实际上是一种可切换方向的单工通信。
此种方式适用于问讯、检索、科学计算等数据通信系统;
传统的对讲机使用的就是半双工通信方式。由于对讲机传送及接收使用相同的频率,不允许同时进行。因此一方讲完后,需设法告知另一方讲话结束(例如讲完后加上’OVER’),另一方才知道可以开始讲话。
全双工通信
全双工通信允许数据同时在两个方向上传输,即有两个信道,因此允许同时进行双向传输。
全双工通信是两个单工通信方式的结合,要求收发双方都有独立的接收和发送能力。
全双工通信效率高,控制简单,但造价高。
计算机之间的通信是全双工方式。一般的电话、手机也是全双工的系统,因为在讲话时可以听到对方的声音。
例题
下列说法中正确的是(12)。
A.半双工总线只在一个方向上传输信息,全双工总线可在两个方向上轮 流传输信息
B.半双工总线只在一个方向上传输信息,全双工总线可在两个方向上同 时传输信息
C.半双工总线可在两个方向上轮流传输信息,全双工总线可在两个方 向上同时传输信息
D.半双工总线可在两个方向上同时传输信息,全双工总线可在两个方向 上轮流传输信息
试题分析
对端到端通信总线的信号传输方向与方式的分类定义如下:
单工是指A只能发信号,而B只能接收信号,通信是单向的。
半双工是指A能发信号给B,B也能发信号给A,但这两个过程不能同时 进行。
全双工比半双工又进了一步,在A给B发信号的同时,B也可以给A发信号, 这两个过程可以同时进行互不影响。
参考答案:C
1-17 磁盘阵列
RAID 0(无冗余和无校验的数据分块)
代表了所有RAID级别中最高的存储性能。RAID 0提高存储 性能的原理是把连续的数据分散到多个磁盘上存取,这样,系统有数据请求就可以被多个磁盘并行的 执行,每个磁盘执行属于它自己的那部分数据请求。
这种数据上的并行操作可以充分利用总线的带宽,显著提高磁盘整体存取性能。

RAID1(磁盘镜像阵列)
RAID1称为镜像,它将数据完全一致地分别写到工作磁盘和镜像磁盘, 磁盘间利用率为50%。

RAID 2(采用纠错海明码的磁盘阵列)
采用了海明码纠错技术,用户需增加校验盘来提供 单纠错和双验错功能。对数据的访问涉及阵列中的每一个盘。
大量数据传输时I/O性能较高,但 不利于小批量数据传输。实际应用中很少使用。

RAID3和RAID4(采用奇偶校验码的磁盘阵列)
把奇偶校验码存放在一个 独立的校验盘上。如果有一个盘失效,其上的数据可以通过对其他盘上的数据进 行异或运算得到。
读数据很快,但因为写入数据时要计算校验位,写速度较慢。
RAID3采用位交叉奇偶校验,RAID4采用块交叉奇偶校验码。
RAID3适用于大型文件且I/O需求不频繁的应用,RAID4适用于大型文件的读取。

RAID5(无独立校验盘的奇偶校验码的磁盘阵列)-出过题!!!
无独立校验盘,校验信息分布在组内所有盘上,对于大批量和小批量数据的读写性能都很好,适用于I/O需求频繁的应用。
当有N块阵列盘时,用户空间为N-1块盘容量。

RAID6(独立的数据硬盘与两个独立的分布式校验方案):
RAID6技术是在RAID5基础上,为了进一步加强数据保护而设计的一种RAID方式,实际上是一种扩展RAID5等级。
当有N块阵列盘时,用户空间为N-2块盘容量。

RAID7(最优化的异步高I/O速率和高数据传输率):
RAID7完全可以理解为一个独立存储计 算机,它自身带有操作系统和管理工具,完全可以独立运行。

RAID10(最可靠与高性能):
RAID1+0也被称为RAID10标准,实际是将RAID 1和RAID0标准结合的产物。
RAID1是一个冗余的备份阵列,而RAID0负责数据读 写的阵列。
由于利用了RAID0极高的读写效率和RAID1较高的数据保护和恢复能力,使RAID10成为了一种性价比较高的等级。

1-18 系统可靠性
- 平均无故障时间-> (MTTF) MTTF=1/ λ, λ为失效率
- 平均故障修复时间-> (MTTR) MTTR=1/μ, μ为修复率
- 平均故障间隔时间-> (MTBF) MTBF = MTTR + MTTF
在实际应用中,一般 MTTR 很小,所以通常认为 MTBF≈MTTF
- 可靠性可以用 MTTF / (1+MTTF) 来度量。
- 可用性可以用 MTBF / (1+MTBF) 来度量。
- 可维护性可以用 1 / (1+MTTR) 来度量。
口诀:靠运(用)维->FBI
Comments NOTHING