导图社区 计算机系统基础知识
软考软件评测师基础知识,个人整理,主要用于本人备考软考考试,如有错误请多多担待
编辑于2021-10-22 00:07:54第一章:计算机系统构成及硬件基础知识
1.计算机基础知识
数据的表示
1).进制转换
1.进制的基本概念:
在计算机语言中常用的进制有二进制(符号为0b)、八进制、十进制和十六进制(符号为0x或H),十进制是最主要的表达形式。 对于进制,有两个基本的概念:基数和运算规则。 基数:基数是指一种进制中组成的基本数字,也就是不能再进行拆分的数字。二进制是0和1;八进制是0-7;十进制是0-9;十六进制是0-9+A-F(大小写均可)。也可以这样简单记忆,假设是n进制的话,基数就是【0,n-1】的数字,基数的个数和进制值相同,二进制有两个基数,十进制有十个基数,依次类推。 运算规则:运算规则就是进位或错位规则。例如对于二进制来说,该规则是“满二进一,借一当二”;对于十进制来说,该规则是“满十进一,借一当十”。其他进制也是这样。
2.进制之间的转换
按权展开法 (R进制转换为十进制)

短除法 (十进制转R进制)
 
八进制:3位二进制数为1为八进制数(2^3=8)
十六进制:4位二进制数为1为十六进制数(2^4=16)
十进制转R进制 : 整数位短除法逆序,小数点后乘二取整正序 二进制转八进制与十六进制 : 从小数点处向两边,3或4位为一位转换
2).码制(原码/反码/补码/移码)
1.基本概念 (1).原码:最高位为符号位,0表示负,1表示正,其余低位(n-1位)表示数值的绝对值 (2).反码:最高位为符号位,0表示负,1表示正,,正数的反码与原码相同,负数的反码则是其绝对值按位求反(符号位不变) (3).补码:最高位为符号位,0表示负,1表示正,正数的补码与原码和反码相同,负数的补码则等于其反码的末尾加1(符号位不变) (4).移码:作浮点运算的阶码,不管是正数还是负数,都在补码的符号按位取反
 原码表示法比较直观: 它的数值部分就是该数的绝对值,而且与真值、十进制数的转换十分方便。但是它的加减法运算较复杂。当两数相加时,机器要首先判断两数的符号是否相同,如果相同则两数相加,若符号不同,则两数相减。 反码运算要注意的问题: 1.反码运算时,其符号位与数值一起参加运算。 2.反码的符号位相加后,如果有进位出现,则要把它送回到最低位去相加(循环进位)。 3.用反码运算,其运算结果亦为反码。在转换为真值时,若符号位为0,数位不变;若符号位为1,应将结果求反才是其真值。 补码运算要注意的问题: 1.补码运算时,其符号位与数值部分一起参加运算。 2.补码的符号位相加后,如果有进位出现,要把这个进位舍去(自然丢失)。 3.用补码运算,其运算结果亦为补码。在转换为真值时,若符号位为0,数位不变;若符号位为1,应将结果求补才是其真值。
2.数值范围

3.用途: (1).补码用途:常用于加减法运算,部分计算机数的表示和存储 (2).移码用途:常用于浮点数的阶码
3).浮点数的表示
浮点数是一种 公式化 的表达方式,用来近似表示实数,并且可以在表达范围和表示精度之间进行权衡 (因此被称为浮点数) 浮点数所能表示的数值范围主要由阶码决定,所表示数值的精度则由尾数决定。
1.机器数的一般机器表示方法
2.浮点数的精度与范围
阶码通常为带符号的纯整数,尾数为带符号纯小数。 浮点数的表示格式如下: 很明显,一个数的浮点表示不是唯一的。当小数点的位置改变时,阶码也相应改变,因此可以用多种浮点形式表示同一个数。
4).逻辑运算
1.逻辑与(&):0与1相与,只要有1个为0结果就为0,两个都为1才是1。 2.逻辑或(|):0与1相或,只要有1个为1结果就为1,两个都为0才是0。
3.逻辑异或:同0非1,即参加运算的二进制数同为0或同为1结果才为0,一个为0一个为1结果为1。两个输入相同即同为0或同为1时,结果为0;否则为1。
4.逻辑非(!):0的非是1,1的非是0。 5.逻辑左移(<<):二进制数整体左移n位,高位若溢出则舍去,低位补0。 6.逻辑右移(>>):二进制数整体右移n位,低位若溢出则舍去,高位补0。
5).定点整数/定点小数
1.所谓定点数,就是表示数据时小数点的位置固定不变。 2.小数点的位置通常有两种约定方式: (1)定点整数(纯整数,小数点在最低有效数值位之后) (2)定点小数(纯小数,小数点在最高有效数值位之前)。 3.当机器字长为n时,定点数的补码和移码可表示2^n个数,而其原码和反码只能表示2^n-1个数(0表示占用了两个编码),因此,定点数所能表示的数值范围比较小,运算中很容易因结果超出范围而溢出。
1.机器数:一个数在计算机中的二进制表示形式,叫做这个数的机器数。机器数是带符号的,在计算机里用一个数的最高位存放符号,0表示负,1表示正
2.真值:带符号位的机器数对应的实际数值。因为最高位即第一位是符号位,所以机器数的形式就不等于真正的数值。例如,0000 0001的真值为+1
3.带符号的数:在计算机里用一个数的最高位存放符号,0表示负,1表示正
4.定点表示法
定点整数(纯整数):约定小数点的位置在机器数的最高数值位之后。例如,0101011.0
定点小数(纯小数):约定小数点的位置在机器数的最高数值位之前。例如,0.0101011
小数点不占存储位
6).术语
二进制是Binary,简写为B。 八进制是Octal,简写为O。 十进制为Decimal,简写为D。 十六进制为Hexadecimal,简写为H。 Ø地址:整个内存被分为若干个存储单元,为了有效存取每个单元内存储的内容,每个单元必须有唯一的编号来标识 Ø位 (bit) :存放一位二进制的数称为位,简写 b Ø字节: 8 个二进制位为一个字节,简写 B 1B=8bit 1KB=1024B=2^10B 1MB=1024KB=2^20B 1GB=1024MB=2^30B
内存按字节编址从A5000H到DCFFFH的区域其存储容量为()。 A.123KB B.180KB C.223KB D.224KB 解析: 十六进制一般用数字0到9和字母A到F(或a~f)表示,其中:A~F表示10~15 从地址A5000H到DCFFFH的容量大小=DCFFF-A5000=37FFFH 将37FFFH转换成十进制=15*16^0+15*16^1+15*16^2+7*16^3+3*16^4=229375 因为内存是按字节B编码的 所以区域存储容量为229375/1024约等于224K(1K=1024B) 内存按字节编址从A5000H到 DCFFFH 的区域其存储容量为()。 A.224KB B.223KB C.180KB D.123KB 解析: 内存按字节编址从A5000H到 DCFFFH ,得出地址空间为: DCFFFF - A5000 + 1=38000H,将38000H换算为二进制为:11 1000 0000 0000 0000 = 11100000 x 2^10 B = 11100000 KB = 1*2^5 + 1*2^6 + 1*2^7 KB = 224KB。 【注意】:1K=1024B
计算机系统硬件基本组成
计算机系统中,高速缓存一般用 SRAM ,内存一般用 DRAM ,外存一般采用磁存储器。 SRAM 的集成度低、速度快、成本高; DRAM 的集成度高,但是需要动态刷新;磁存储器速度慢、容量大、价格便宜。 
五大部件的名称
1).计算机的硬件基本由五大部分组成: 运算器、控制器、存储器、输入设备(如鼠标键盘)、输出设备(如显示器)。
3).输入设备和输出设备合并称为外部设备,也即外设。
4).主机=CPU+主存储器
五大部件的作用
1).运算器:承担数据的运算和处理
2).控制器: 从存储部件取出指令并完成指令译码,根据指令向各个部件或设备提供它们所需的控制信号,起指挥、协调和控制作用。
3).存储器:实现程序和数据的保存
4).输入设备:把程序和原始数据输入计算机
5).输出设备:把运算及处理结果输出
中央处理单元(CPU)

1).中央处理单元的组成: 由运算器、控制器、寄存器组和内部总线组成
1.运算器
1.1.运算器组成: 运算器由 算术逻辑单元ALU(实现对数据的算术和逻辑运算) 、 累加寄存器AC(运算结果或源操作数的存放区) 、 数据缓冲寄存器DR(暂时存放内存的指令或数据)和 状态条件寄存器PSW(保存指令运行结果的条件码内容,如溢出指标等)组成
算术逻辑单元ALU(跟运算有关:实现对数据的算术和逻辑运算),eg.加法器
累加寄存器AC(通用寄存器,为ALU提供一个工作区;运算结果或源操作数的存放区,即可用于暂存数据 / 常用于ALU执行算数逻辑运算提供数据并暂存运算结果的寄存器)
数据缓冲寄存器DR(对内存储器进行读写操作的时候,用来暂存数据的寄存器,可理解为中转数据的)
状态条件寄存器PSW(记录运算中产生的标志信息,每一位单独使用,成为标志位(进位,溢出,中断等状态标志与控制标志)
争议:也有将其归为控制器的
1.2.运算器功能: 基本功能是完成对各种数据的加工处理,例如算术四则运算,与、或、求反等逻辑运算,算术和逻辑移位操作,比较数值,变更符号,计算主存地址等。
2.控制器
2.1.控制器组成: 控制器由 程序计数器PC(存放指令的执行地址)、指令寄存器IR(暂存CPU指令)、指令译码器ID(分析指令操作码)、时序产生器(是CPU中一个类似"作息时间"的东西,使计算机可以准确、迅速、有条不紊地工作)和操作控制器(用来产生各种操作控制信号)组成。
程序计数器PC(用来存放指令地址,运行时用来获取下一条指令的位置)
程序计数器(PC)用于存放指令的地址,CPU根据该寄存器的指令从内存中读取待执行的指令,该寄存器可以由程序员访问。
指令寄存器IR(暂存从内存中取出的、正在运行的指令,存储位数由指令字长决定)
指令寄存器是CPU中的关键寄存器,其内容为正在执行的指令,显然其位数取决于指令字长。这是由系统使用的寄存器,程序员不能访问。
指令译码器ID(对指令中的操作码字段进行分析解释,来决定操作的性质与方法)
时序产生器(提供时序控制信号:CPU执行指令时根据时序部件发出的时钟信号进行相应操作,在取指阶段读取指令,在分析和执行阶段读取数据)
地址寄存器AR(保存当前CPU所访问的内存单元的地址)
2.2.控制器功能: 控制整个计算机各部件有条不紊的工作,其基本功能是取指令与执行指令,最为重要,包括程序控制、时序控制等。 (1)数据缓冲:由于I/O设备的速率较低而CPU和内存的速率却很高,故在控制器中必须设置一缓冲器。 (2)差错控制:设备控制器还兼管对由I/O设备传送来的数据进行差错检测。 (3)数据交换:这是指实现CPU与控制器之间、控制器与设备之间的数据交换。 (4)状态说明:标识和报告设备的状态控制器应记下设备的状态供CPU了解。 (5)接收和识别命令:CPU可以向控制器发送多种不同的命令,设备控制器应能接收并识别这些命令。 (6)地址识别:就像内存中的每一个单元都有一个地址一样,系统中的每一个设备也都有一个地址,而设备控制器又必须能够识别它所控制的每个设备的地址。
计算机中控制器的主要功能是从内存中取出指令,并指出下一条指令在内存中的位置,首先将取出的指令送入指令寄存器,然后启动指令译码器对指令进行分析,最后发出相应的控制信号和定时信息,控制和协调计算机的各个部件有条不紊地工作,以完成指令所规定的操作。
3.寄存器组
3.1 寄存器的基本概念 寄存器组是CPU中的一个重要组成部分,它是CPU内部的临时存储空间。 寄存器既可以用来存放数据(存储器数据寄存器MDR:用于对内存单元访问时的数据的暂存,由系统使用也即程序员不能访问)和地址(存储器地址寄存器MAR:用于对内存单元访问时的地址的暂存,由系统使用也即程序员不能访问),也可以存放控制信息或CPU工作时的状态。 在CPU中增加寄存器的数量,可以使CPU把执行程序时所需的数据尽可能地放在寄存器中,从而减少访问内存的次数,提高其运行速度。但是,寄存器的数目也不能太多,除了增加成本外,寄存器地址编码增加还会增加指令的长度。
3.2 CPU中的寄存器通常分为存放数据的寄存器、存放地址的寄存器、存放控制信息的寄存器、存放状态信息的寄存器和其他寄存器等类型。 (1)程序计数器( PC ):是存放指令地址的寄存器,其作用是:当程序顺序执行时,每取出一条指令,程序计数器( PC )内容自动增加一个值,指向下一条要取的指令。当程序出现转移时,则将转移地址送入 PC ,然后由 PC 指向新的指令地址。 (2)指令寄存器( IR ):用于存放正在执行的指令,指令从内存取出后送入指令寄存器。其操作码部分经指令译码器送微操作信号发生器,其地址码部分指明参加运算的操作数的地址形成方式。在指令执行过程中,指令寄存器中的内容保持不变。 (3)状态字寄存器( PSW ):用于保存指令执行完成后产生的条件码,例如运算是否有溢出,结果为正还是为负,是否有进位等。此外, PSW 还保存中断和系统作状态等信息。 (4)通用寄存器组:是 CPU 中的一组工作寄存器,运算时用于暂存操作数或地址。在程序中使用通用寄存器可以减少访问内存的次数,提高运算速度。 在汇编语言程序中,程序员可以直接访问通用寄存器以存取数据,可以访问状态字寄存器以获取有关数据处理结果的相关信息,可以通过相关程序计数器进行寻址,但是不能访问指令寄存器。
2).中央处理单元的功能:计算机中的CPU是硬件系统的核心,用于数据的加工处理,能完成各种算术、逻辑运算及控制功能。(实现程序控制、操作控制、时间控制和数据处理。)
3).CPU的性能指标
主频:即CPU的工作频率,单位是Hz(赫兹) 字长:即CPU的数据总线一次能同时处理数据的位数 核心数量:是指在一枚处理器中集成两个或多个完成的计算引擎(内核) CPU缓存(Cache Memory):是位于CPU与内存之间的临时存储器 MIPS:计算机的运算速度常用每秒钟执行的指令数来衡量,单位为每秒百万条指令(MIPS) NFLOPS:计算机的运算速度常用每秒钟执行的指令数来衡量,单位为每秒百万条浮点指令(MFPOPS)。
存储系统(核心为存储器)
存储系统由存放程序和数据的各类存储设备及有关的软件构成,是计算机系统的重要组成部分,用于存放程序和数据。 存储系统分为内存储器和外存储器,两者按一定的结构有机地组织在一起,程序和数据按不同的层次存放在各级存储器中,而整个存储系统具有较好的速度、容量和价格等方面的综合性能指标。 计算机系统中,高速缓存一般用 SRAM ,内存一般用 DRAM ,外存一般采用磁存储器。 SRAM 的集成度低、速度快、成本高; DRAM 的集成度高,但是需要动态刷新;磁存储器速度慢、容量大、价格便宜。 。 存储器是计算机中必不可少、用来存储程序和数据的记忆设备。 设用2K×4位的存储器芯片组成16K x 8位的存储器(地址单元为0000H~3FFFH,每个芯片的地址空间连续),则地址单元OBlFH所在芯片的最小地址编号为(4)。 A、0000H B、0800H C、2000H D、2800H 解析:由于组成的存储器的地址大小为16KB,字长为1字节,每个芯片可存储1 KB数据,即每个芯片所容纳的地址空间大小为1 KB。第一块芯片的地址单元为0000H~03FFH,第二块芯片的地址单元为0400H~07FFH,第三块芯片的地址单元为0800H~0BFFH。所以,地址单元081FH在第三块芯片上,起始地址为0800H。
1).现代计算机系统多级存储体系结构,如右图,其中越顶端的越靠近CPU,存储的速度越快、容量越小,每位的价格都很高。计算机采用分级存储体系的主要目的是:能较好地解决为了解决存储容量、成本和速度之间的矛盾,提供一个在价格、容量上逻辑等价于最便宜的那一层存储器,而访问速度接近于存储系统中最快的那层存储器的存储系统。现代计算机系统中常采用寄存器、高速缓存、主存、外存的多级存储体系。

局部性原理是层次化存储结构的支撑
2).两级存储:Cache存储体系(Cache-主存)、虚拟存储体系(主存-辅存)。
Cache存储体系由Cache和主存储器构成 目的是提高存储速度 【对程序猿以上均透明】 虚拟存储体系由主存储器和在线磁盘存储器等辅存构成 目的是提高存储容量【对应用程序猿透明】
3).存储系统的功能:存储系统是计算机的重要组成部分之一。存储系统提供写入和读出计算机工作需要的信息(程序和数据)的能力,实现计算机的信息记忆功能。
4).存储器分类: (1)按所处的位置可分为:内部存储器(简称内存,容量小、速度快,用于临时存放数据,目前构成内存的主要是半导体存储器)和外部存储器(简称外存,即移动存储器、光盘、磁带等,容量大、速度慢,用于长期保存数据)。 (2)
5).存储器划分: 访问方式: 按寻址访问寄存器、按内容访问寄存器 按寻址方式: 顺序存储器SAM:访问数据所需的时间与数据所在的存储位置相关,磁带是典型的顺序存储器 直接存储器DAM:介于随机与顺序存取之间的一种寻址方式。 随机存储器RAM:对于任何存储单元存入和读取数据,访问任何一个存储单元所需时间是相同的。 按内容访问: 相联存储器是一种按内容访问的存储器。其工作原理就是把数据或数据的某一部分作为关键字,将该关键字与存储器中的每一单元进行比较,找出存储器中所有与关键字相同的数据字。
 顺序存储器( Sequentially Addressed Memory , SAM )指访问数据所需要的时间与数据所在的存储位置相关,磁带是典型的顺序存储器。 直接存储器( Direct Addressed Memory , DAM )是介于随机存取和顺序存取之间的一种寻址方式。磁盘是一种直接存取存储器,它对磁道的寻址是随机的,而在一个磁道内,则是顺序寻址。 随机存储器( Random Access Memory , RAM )指可对任何存储单元存入或读取数据,访问任何一个存储单元所需的时间是相同的。 相联存储器是一种按内容访问的存储器。其工作原理就是把数据或数据的某一部分作为关键字,将该关键字与存储器中的每一单元进行比较,找出存储器中所有与关键字相同的数据字。
5).存储系统的层次化结构
1.寄存器组总是在CPU内部,程序员可通过寄存器名访问,无总线操作,访问速度最快
2.Cache和主存构成内存储系统, 程序员可通过总线寻址访问存储单元, 访问速度较寄存器差
2.1内存
1).内存按字节编址从A5000H到 DCFFFH 的区域其存储容量为()。 A.224KB B.223KB C.180KB D.123KB 解析: 内存按字节编址从A5000H到 DCFFFH ,得出地址空间为: DCFFFF - A5000 + 1=38000H,将38000H换算为二进制为:11 1000 0000 0000 0000 = 11100000 x 2^10 B = 11100000 KB = 1*2^5 + 1*2^6 + 1*2^7 KB = 224KB。 【注意】:1K=1024B 2).内存按字节编址从 A5000H 到 DCFFFH的区域,其存储容量为(224)KB,若用16K * 4bit 的存储器芯片构成该内存,需要( 28) 片 解析: (因为位数来计算的4bit的话,前面的单位是减半的,所以最好是使用bit来计算)DCFFFH - A5000H = 38000H (16进制) 转换成二进制 0011 1000 0000 0000 0000b 去掉十个0 单位就成了kb,然后就是2的5,6,7次方求和 得到224KB
2.1.1 内存的特点与作用: 由半导体器件制成,是计算机的重要部件之一,是CPU能直接寻址的存储空间,其特点是存取速率快。 内存的作用是暂时存放CPU中的运算数据以及与硬盘等外部存储器交换的数据。
2.1.2 内存的分类 (1).只读存储器(ROM):ReadOnly Memory。在制造ROM的时候,信息(数据)或程序被存入并永久保存。这些信息只能读出,不能写入,即使机器停电,数据也不会丢失。 (2).随机存储器(RAM):Random Access Memory。表示既可以从中读取数据,也可以写入数据。当机器电源关闭时,存于其中的数据会丢失。可分为: a.SRAM:高速缓存一般用SRAM,集成度低、速度快、成本高 b.DRAM:内存一般用DRAM,集成度高,但是需要动态刷新【信息会随时间逐渐消失,因此需要定时对其进行刷新来维持】
2.2 Cache高速缓存
2.2.1 Cache的基本介绍 功能:提高CPU的数据输入输出速率,用来存储当前最活跃的程序和数据,直接与CPU交互,位于CPU和主存之间,容量小,速度为内存的5-10倍,由半导体材料构成。 内容:其内容是主存中内存的副本拷贝,对于程序员来说是透明的。 原理:Cache的工作是建立在程序与数据访问的局部性原理上。即经过对大量程序执行情况的结果分析:在一段较短的时间间隔内程序集中在某一较小的内存地址空间执行,这就是程序执行的局部性原理。同样,对数据的访问也存在局部性现象。Cache是高速缓存存储器,为了提高系统处理速度将主存部分存储空间中的内容(按照局部性原理选取的最常用或不久将使用的内容)复制到工作速度更快的Cache中,同样为了提高速度的原因,Cache与主存之间的映射都是由硬件自动实现的。
2.2.2 Cache的组成 由控制器和Cache存储器组成,存储器存储数据,控制部分判断CPU要访问的数据是否在Cache中,在则命中,不在则依据一定的算法从主存中替换(2.2.4 命中率)。
2.2.3 地址映射 在CPU工作时,送出的是主存单元的地址,但是注意应从Cache存储器中读/写信息。这就需要将主存地址转换为Cache存储器地址,这种地址的转换称为地址映像,由硬件自动完成映射,详情如下: a.全相联方式:允许主存中任一块都可以映射到Cache中任一块 优点:十分灵活、空间利用率高 缺点:冲突概率较低、成本高、访问速度慢 b.直接相连方式:主存中的块与Cache的块固定对应,主存中的块只能放在Cache存储器相同块号中 优点:冲突率最低、硬件设备简单、不需要相连存储器(一种按内容访问的存储器)、地址映像方式简单 -> 访问速度快 缺点:冲突率最高、空间利用率低、置换操作频繁速度慢,命中率比较低。容易造成资源浪费。 c.组相联映像方式:兼顾两种方式的优点,将主存与Cache按同样的大小划分为块。通过直接映像确定组号,组内用全相联确定块号。块与块之间采用直接映射,块内部采用全相联映射【组间直组内全】 优点:块的利用率大大提升,与此同时失效率大大降低 缺点:实现难度和造价要比直接映像方式高
2.2.4 命中率 处理器给出需要访问的内存地址后,首先访问Cache,当CPU所访问的数据在Cache中时,称为命中,此时直接从Cache中读取数据;若不命中,再访问主存, 从主存中读取所需要的数据。
2.2.5 主存编址 主存的编址实际上就是将芯片组成相应的存储器。
2.2.6 平均系统周期的时间(以读操作为例,使用Cache+主存储器) t3 = h*t1+(1-h)*t2 其中,h表示对Cache的访问命中率,t1表示Cache的周期时间,t2表示主存储器的周期时间,t3表示系统的平均周期,(1-h)称为失效率(未 命中率)。
使用Cache改善系统性能的依据是程序的局部性原理
3.虚拟存储器对程序员而言是透明的,可以对它进行设置。
虚拟存储是指将多个不同类型、独立存在的物理存储体,通过软、硬件技术,集成为一个逻辑上的虚拟的存储系统,集中管理供用户统一使用。这个虚拟逻辑存储单元的存容量是它所集中管理的各物理存储体的存储量的总和,而它具有的访问带宽则在一定程度上接近各个物理存储体的访问带宽之和。 虚拟存储器实际上是主存—辅存构成的一种逻辑存储器,实质是对物理存储设备进行逻辑化的处理,并将统一的逻辑视图展现给用户。 虚拟存储器的基本思路:作业在提交时,先全部进入辅助存储器,作业投入运行时,将作用中当前使用的部分先装入主存储器,其余暂时不用的部分先存放在作为主存扩充的辅助存储器中,待用到这些信息时,再由系统自动把它们装入到主存储器中。
4.外部存储系统容量大,需通过I/O接口与CPU交换数据,访问速度最慢
寄存器组总是在CPU内部,其余四组均在CPU外部
6).局部性原理
1.所谓局部性原理, 是指CPU访问存储器时, 无论是存取指令还是存取数据, 所访问的存储单元都聚集在一个较小的连续区域中,且通常有两种形式。
2.局部性通常有两种形式: (1)时间局部性(temporal locality):如果一个信息项正在被访问, 那么在近期它很可能还会被再次访问,即在相同的时间里会访问同一个信息项。程序循环、堆栈等是产生时间局部性的原因。 (2)空间局部性(spatial locality):在最近将要用到的信息很可能与现在正在使用的信息在空间地址上是临近的,即相邻的空间地址会被连续访问。eg.顺序表。
3.现代计算机系统的各个层次,从硬件到操作系统,再到应用程序,它们的设计都利用了局部性原理。在硬件层,局部性原理允许计算机设计者通过引入小而快速的高速缓冲存储器来保存最近被引用的指令和数据项,从而提高对主存的访问速度。在操作系统级,局部性原理允许系统使用主存作为虚拟地址空间最近被引用的高速缓存,局部性原理也允许系统利用主存来缓存磁盘文件系统中最近被使用的磁盘块等。局部性原理在应用程序的设计中也扮演着重要的角色, 例如, Web浏览器将最近被引用的文档放在本地磁盘上, 利用的就是时间局部性。大量的Web服务器将最近被请求的文档放在前端磁盘高速缓存中, 这些缓存能满足用户对这些文档的请求,而不需要服务器的任何干涉。
输入输出技术
1).I/O设备管理软件一般分为四层:中断处理程序、设备驱动程序、与设备无关系统软件、用户级软件。
2).常用的输入输出方式有:无条件传输、中断、程序查询、DMA方式
1.程序中断: 中断是指在计算机执行程序的过程中,当出现异常情况或者特殊请求时,计算机停止现行程序的运行,转而对这些异常处理或者特殊请求的处理,处理结束后再返回到现行程序的中断处,继续执行原程序。进行中断处理时,为了能够返回到被中断的程序继续执行,需要保护现场。实现多级中断嵌套时,可以使用堆栈来保护断点和现场。 程序中断: 程序运行时,CPU暂时终止现行程序,而转去处理更紧迫的事件,在处理完成后CPU将自动返回原程序继续执行。 中断向量:中断服务程序的入口地址。 中断响应时间: 从发出中断请求到开始进入中断服务程序所需的时间。 中断向量表:为了提高响应中断的速度,通常把系统中所有的中断类型码及对应的中断向量按一定的规律,放在一个区域内,这个存储区域就称为中断向量表【通常把所有中断服务程序的入口地址(中断向量)汇集为中断向量表。 】 中断方式下的数据传送:是当I/O接口准备好接收数据或准备好向 CPU 传送数据时,就发出中断信号通知 CPU 。对中断信号进行确认后, CPU 保存正在执行的程序的现场,转而执行提前设置好的I/O中断服务程序,完成一次数据传送的处理。这样, CPU 就不需要主动查询外设的状态,在等待数据期间可以执行其他程序,从而提高了 CPU 的利用率。采用中断方式管理I/O设备, CPU 和外设可以并行地工作。
中断是一种非常重要的技术,输入输出设备和主机交换数据、分时操作、实时系统、计算机网络和分布式计算机系统中都要用到中断技术。
2.DMA 直接内存存取( Direct Memory Access , DMA )方式:DMA方式正是为了将 CPU从输入输出控制中解放出来而产生的,允许主存储器和I/O设备之间通过“DMA控制器(DMAC)”直接进行批量数据交换。在内存与I/O(也即外设)传送数据块过程中,除了CPU在过程开始启动(即向设备发出“传送一块数据”的命令)与过程结束(CPU通过轮询或中断得知过程是否结束和下次操作是否准备就绪)时的处理,整个过程无需CPU的干预,实际操作由DMA硬件直接执行完成。 直接内存存取( Direct Memory Access , DMA )方式的基本思想是通过硬件控制实现主存与I/O设备间的直接数据传送,数据的传送过程由 DMA 控制器( DMAC )进行控制,不需要 CPU 的干预。在 DMA 方式下,由 CPU 启动传送过程,即向设备发出“传送一块数据”的命令,在传送过程结束时, DMAC 通过中断方式通知 CPU 进行一些后续处理工作。 实现DMA传送的基本操作如下: (1).外设可通过DMA控制器向CPU发出DMA请求: (2).CPU响应DMA请求,系统转变为DMA工作方式,并把总线控制权交给DMA控制器; (3).由DMA控制器发送存储器地址,并决定传送数据块的长度; (4).执行DMA传送: (5).DMA操作结束,并把总线控制权交还CPU。 DMA控制器在需要的时候代替CPU作为总线主设备,在不受CPU干预的情况下,控制I/O设备与系统主存之间的直接数据传输。DMA操作占用的资源是系统总线,而CPU并非在整个指令执行期间即指令周期内都会使用总线,故DMA请求的检测点设置在每个机器周期也即总线周期结束时执行,这样使得总线利用率最高。 在微机系统中,BIOS(基本输入输出系统),是一个固化到计算机内主板上一个ROM芯片上的程序,用来保存计算机最重要的基本输入输出的程序、开机自检程序、系统自动启动程序,可以从CMOS中读写系统设置的具体信息。
DMA控制方式是在(主存和外设)之间直接建立数据通路进行数据的交换处理。
3.程序查询 程序查询方式下, CPU 通过执行程序查询外设的状态,判断外设是否准备接收数据或准备好了向 CPU 输入的数据。
总线系统
系统总线上传送的信息包括数据信息、地址信息及控制信息,因此,系统总线包含有3种不同功能的总线,即数据总线、地址总线和控制总线。 地址总线宽度决定了 CPU 可以访问的物理地址空间,即 CPU 能够使用多大容量的内存。若地址总线的宽度为32位,最多可以直接访问2^32B(即4GB)的物理空间。 数据总线负责整个系统的数据流量的大小,如果数据总线的宽度为32,则字长为32。 【注意】:1GB = 2^30B 串行总线:适合长距离数据传输,易提高通信时钟频率来实现高速数据传输。 并行总线:适合短距离高速数据传输,但线间串扰会导致速率受损。 半双工总线:同一时刻内可以在一个方向上传输信息:一个发送、一个接收。
1).总线是一组能为多个部件分时共享的信息传送线,用来连接多个部件并为之提供信息交换通路,通过总线复用方式可以减少总线中信号线的数量,以较少的信号线传输更多的信息。总线上传输的信息类型分为数据、地址和控制,因此总线由数据总线、地址总线和控制总线组成。
2).三总线结构的计算机总线系统的组成: 1.数据总线:用于在部件或设备间传送属于数据信息(指令和数据)的电气信号(传送数据信息,CPU一次传输的数据与数据总线带宽相等) 2.地址总线:用于在部件或设备间传送属于地址信息(指令和数据)的电气信号【地址信息指明数据存储部件中的一个存储单元或外围设备中的一个设备】(传送地址,它决定了系统的寻址空间) 3.控制总线:用于向存储部件和外围设备传送起控制作用的电气信号【指定在CPU和这些部件或者设备间传送的方向以及操作的性质等】(传送控制信号和时序信号,如读/写、片选、中断响应信号等)
总线宽度为32bit,时钟频率为200MHz,若总线上每5个时钟周期传送一个32bit的字,则该总线的带宽为 ( ) MB/S。 A.40 B.80 C.160 D.200 解析: 总线上每5个时钟周期传送一个32bit的字,我们将32bit单位转换成4byte 可以算出每个时钟传送=200/5=40Hz 所以总线的带宽是40*4=160MB/S 故答案选择C
3).总线宽度 在计算机中总线宽度分为地址总线宽度和数据总线宽度。其中,数据总线的宽度(传输线根数)决定了通过它一次所能传递的二进制位数。显然,数据总线越宽则每次传递的位数越多,因而,数据总线的宽度决定了在主存储器和CPU之间数据交换的效率。地址总线宽度决定了CPU能直接访问的内存单元的个数。假设地址总线是32位,则能够访问2^32=4GB个内存单元。
校验码
码距:就单个编码A:00而言,其码距为1,因为其只需要改变一位就变成另一位编码。在两个编码中,从A码到B码转换所需要改变的位数称为码距。一般来说,码距越大,越有利于纠错和检错。 奇偶检验码:通过在编码中增加一位校验位来使编码中1的个数为奇数(奇校验)偶数(偶校验) 海明码:在数据位中插入k个校验码,通过扩大码距来实现检错和纠错。数据位n 校验位k 2(k次方)-1>=n+k 循环冗余校验码(CRC):利用生成多项式的k个数据位和产生的r个校验码来进行编码,编码长度是k+r
1).奇偶校验码 通过在编码中增加一位校验位来使编码中1的个数为奇数(奇校验)或者偶数(偶校验),从而使得码距为2。 (1).奇校验 eg.编码中,含有奇数个1,发送给接收方,接收方收到后,会计算收到的编码有多少个1。如果是奇数个,则无误;是偶数,则有误。 (2).偶校验 eg.同理,只是编码中有偶数个1
奇偶校验码只能检1位错,并且无法纠错。
2).CRC循环冗杂校验码 利用生成多项式的k个数据位和产生的r个校验码来进行编码,编码长度是k+r
CRC只能检错,可以检几位的错,但不能纠错,其原理是找出一个能整出多项式的编码,因此首先要将原始报文除以多项式,将所得的余数作为校验位加在原始报文之后,作为发送数据发给接收方,其编码格式位:  由此可知,CRC由两部分组成,左边为信息码(原始数据),右边为校验码。校验码是由信息码产生的,校验码越长,校验能力就越强。求CRC编码时,采用的是模除法2运算,不发生错位和借位。 能够校验传送信息的对错,并且能自动修正错误。广泛用于通信和磁介存储器中。
3).海明校验码 在数据位中插入k个校验码,通过扩大码距来实现检错和纠错。 数据位n、校验位k、满足此关系式:2^k-1>=n+k
具体错误并纠正
3.计算机体系结构
计算机体系结构分类(Flynn分类法)
指令系统
1).计算机指令
1.计算机指令的基本概念 (1)计算机指令的组成:一条指令由操作码和操作数两部分组成,操作码决定要完成的操作,操作数指的是参加运算的数据及其所在的单元地址。 (2)在计算机中,操作要求和操作数地址都由二进制数码表示,分别称作操作码和地址码,整条指令以二进制编码的形式存放在存储器中。 (3)计算机指令执行过程:取指令--分析指令--执行指令三个步骤。首先将程序计数器PC中的指令地址取出,送入地址总线,CPU依据指令地址去内存中取出指令内容存入寄存器IR;而后由指令译码器进行分析,分析指令操作码;最后执行指令,取出指令执行所需的源操作数。
2.分类 (1).访存指令 访存指令是指访问内存的指令。 (2).控制类指令 控制类指令通常是指程序控制类指令,用于控制程序流程改变的指令,包括条件转移指令、无条件转移指令、循环控制指令、程序调用和返回指令、中断指令等。
2).指令寻址方式
1.寻址方式的概念 寻址方式就是处理器根据指令中给出的地址信息来寻找物理地址的方式,是确定本条指令的数据地址以及下一条要执行的指令地址的方法。
2.指令寻址方式 (1).顺序寻址方式:当执行一段程序时,是一条指令接着一条指令地顺序执行。 (2).跳跃寻址方式:当下一条指令的地址码不是由程序计数器PC给出,而是由本条指令直接给出。程序跳跃后,按新的指令地址开始顺序执行,因此,程序计数器PC的内容也必须相应改变,以便及时跟踪新的指令地址。
3.指令操作数寻址方式 (1)立即寻址:操作数在指令中称为立即寻址 (2)直接寻址:操作数在主存单元,而其地址在指令中称为直接寻址 (3)寄存器寻址:操作数在通用寄存器中称为寄存器寻址 (4)寄存器间接寻址:操作数在主存单元,而其地址在寄存器中称为寄存器间接寻址
(1)立即寻址:是一种特殊的寻址方式,指令中在操作码字段后面的部分不是通常意义上的操作数地址,而是操作数本身,也就是说数据就包含在指令中。只要取出指令,也就取出了可以立即使用的操作 。 立即寻址的特点:在取指令时,操作码和操作数被同时取出,不必再次访问主存,从而提高了指令的执行速度。但是,因为操作数是指令的一部分,不能被修改,而且立即数的大小受到指令长度的限制,所以这种寻址方式灵活性最差。 (2)直接寻址:在直接寻址中,指令中地址码字段给出的地址 A 就是操作数的有效地址,即形式地址等于有效地址。 直接寻址的特点:不需作任何寻址运算,简单直观,也便于硬件实现;但地址空间受到指令中地址码字段位数的限制。 (3)间接寻址:间接寻址意味着指令中给出的地址 A 不是操作数的地址,而是存放操作数地址的主存单元的地址,简称操作数地址的地址。 间接寻址的特点:非常灵活,能扩大了寻址范围,可用指令中的短地址访问大的主存空间;另外可将主存单元作为程序的地址指针,用以指示操作数在主存中的位置。当操作数的地址需要改变时,不必修改指令,只需修改存放有效地址的那个主存单元的内容即可。但是,间接寻址在取指之后至少需要两次访问主存才能取出操作数,降低了取操作数的速度。 (4)寄存器寻址:寄存器寻址指令的地址码部分给出了某一个通用寄存器的编号 Ri ,这个指定的寄存器中存放着操作数。 寄存器寻址的特点:一是从寄存器中存取数据比从主存中存取数据要快得多;二是由于寄存器的数量较少,其地址码字段比主存单元地址字段短得多。因此这种方式可以缩短指令长度,提高指令的执行速度,几乎所有的计算机都使用了寄存器寻址方式。 (5)寄存器间接寻址:操作数在主存单元,而其地址在寄存器中。寄存器间接寻址意味着指令中给出的地址 A 不是寄存器的地址,而是存放操作数的寄存器的地址,简称寄存器地址的地址。 寄存器间接寻址的特点:既快又有灵活性,是一种广泛使用的寻址方式。
3).复杂指令系统CISC与精简指令系统RISC
CISC 计算机指复杂指令集计算机,是20世纪六、七十年代发展起来的系列计算机。这种计算机所支持的指令系统趋于多用途、强功能化。指令系统围绕着缩小与高级语言的语义差距以及有利于操作系统的优化而设计。指令系统的复杂化使得设计周期变长,正确性难于保证,不易维护。而且在复杂的指令系统中,只有少数基本指令是经常使用的,需要大量硬件支持的复杂指令利用率却很低。所以在70年代末,随着 VLSI 技术的发展产生了 RISC 计算机。 RISC 计算机指精简指令集计算机,这种计算机有下列特点: 1.指令系统中只包含使用频率较高但不复杂的指令。 2.指令长度固定,指令格式少,寻址方式少。 3.只有存取数指令访问主存,其他指令都在寄存器之间运算。 4.大部分指令在一个机器周期内完成,采用流水技术。 5. CPU 中增加了通用寄存器的数量。 6.硬联逻辑控制,不用微程序控制技术。 7.采用优化的编译,以有效地支持高级语言。
(1)CISC是复杂指令系统,兼容性强,指令繁多,长度可变,由微程序实现 (2)RISC是精简指令系统,指令少,使用频率接近,主要依靠硬件实现(通用寄存器、硬布线逻辑控制)
4).指令流水线技术

1.指令流水线原理 将指令分成不同的段,每段由不同的部分去处理,因此可以产生叠加的效果,所有的部件去处理指令的不同段,如指令流水线技术的注释图片。
3.指令流水线相关概念 (1)流水线的吞吐率指的是计算机中的流水线在特定的时间内可以处理的任务或输出数据的结果的数量。流水线的吞吐率可以进一步分为最大吞吐率和实际吞吐率。
4.系统可靠性分析
平均无故障时间MTTF = 1 / 失效率 平均故障修复时间MTTR = 1 / 修复率 平均故障修复时间MTBF = MTTF + MTTR 系统可用性 = MTTF / (MTTF + MTTR) * 100% MTTF:平均无故障时间 MTBF:平均失效间隔时间 MTTR:平均修复时间
1).系统可靠性 是指一个系统对于给定的时间间隔内、在给定条件下无失效运作的概率。 可以用MTTF / (1+MTTF)来度量,其中MTTF为平均无故障时间。
2).系统可用性 是在给定的时间点上,一个系统能够按照规格说明正确运作的概率。 可以用MTBF / (1+MTBF)来度量,其中MTBF为平均失效间隔时间。
3).可维护性 是在给定的使用条件下,在规定的时间间隔内,使用规定的过程和资源完成维护活动的概率。 可以用1 / (1+MTTR)来度量,其中MTTR为平均修复时间。
4).无论什么系统,都是由多个设备组成的,协同工作,而这多个设备的组合方式可以是串联、并联,也可以是混合模式。假设每个设备的可靠性为R1,R2,……,Rn,则不同的系统的可靠性R的计算公式如下: 1.串联系统:一个设备不可靠,整个系统崩溃:R=R1*R2*……*Rn 2.并联系统:所有设备都不可靠,系统才崩溃:R=1-(1-R1)*(1-R2)*……*(1-Rn) 3.混合模式:串联、并联都有,看注释
 R =
2.流水线相关计算 (1).流水线周期:将指令分成不同执行段,其中执行时间最长的段为流水线周期 (2).流水线总执行时间:= 1条指令总执行时间 + (总指令条数 - 1)* 流水线周期 (3).流水线吞吐率(TP):= 总指令条数 / 流水线总执行时间;nt + (k-1)*t(不常用) (4).流水线加速比:= 不使用流水线总执行时间 / 使用流水线总执行时间 (5).超标量流水线技术:常规流水线度为1,即每个流水线阶段只执行一个部分;当度大于1时,就是超标量流水线技术;当度为3时,相当于3条流水线并行执行,即取指、分析、执行每个阶段都同时处理3条指令,因此,当题目提到度的概念时,计算时需要将:现指令条数 = 原本指令条数 / 度。然后再套用流水线执行时间的公式。
某指令流水线由5段组成,第1、3、5段所需时间为Δt,第2、4段所需时间分别为3Δt和2Δt,那么连续输入n条指令时的吞吐率: TP=n / [(Δt+3Δt+Δt+2Δt+Δt)+(n-1)×3Δt]=n / (3n+5)Δt 若每一条指令都可以分解为取指、分析和执行三步。已知取指时间t取指=4Δt,分析时间t分析=3Δt,执行时间t执行=5Δt。如果按照串行方式执行完100条指令需要时间 (4Δt+3Δt+5Δt)×100=1200Δt 如果按照流水线方式执行,执行完100条指令需要时间 (4Δt+3Δt+5Δt)+(100-1)×max(4Δt,3Δt,5Δt)=507Δt
5.计算机评价的主要性能指标
1).计算机的用途不同,对其不同部件的性能指标要求也有所不同。 用作科学计算为主的计算机,其对主机的运算速度要求很高。 用作大型数据库处理为主的计算机,其对主机的内存容量、存取速度和外存储器的读写速度要求较高。 对于用作网络传输的计算机,则要求有很高的I/O速度,因此应当有高速的I/O总线和相应的I/O接口。
2).计算机的运算速度常用每秒钟执行的指令数来衡量,单位为每秒百万条指令(MIPS)或者每秒百万条浮点指令(MFPOPS)。
3).影响运算速度的主要有如下几个因素: 1.CPU的主频。指计算机的时钟频率。它在很大程度上决定了计算机的运算速度。例如,Intel公司的CPU主频最高已达3.20GHz以上,AMD公司的可达400MHz以上。 2.字长。指计算机运算部件一次能同时处理的二进制数据的位数,字长越长,数据的运算精度也就越高,计算机的处理能力就越强。CPU进行运算和数据处理的最基本、最有效的信息位长度。PC的字长己由8088的准16位(运算用16位,I/O用8位)发展到现在的32位、64位。 3.指令系统的合理性。每种机器都设计了一套指令,一般均有数十条到上百条,例如,加、浮点加、逻辑与、跳转等等,组成了指令系统。 4.数据处理速率 5.运算精度 6.内存容量
6.其他
1).文件: 文件在磁盘上一般是以块(或扇区)的形式存储的。磁盘上的文件有的可能存储在一个连续的区域内,有的则被分割成若干个“片”存储在磁盘中不连续的多个区域。后种情况对文件的完整性没有影响,但由于文件过于分散,将增加计算机读盘的时间,从而降低了计算机的效率。磁盘碎片整理程序可以在整个磁盘系统范围内对文件重新安排,将各个文件碎片在保证文件完整性的前提下转换到连续的存储区内,提高对文件的读取速度。但整理是要花费时间的,所以应该定期对磁盘进行碎片整理,而不是每小时对磁盘进行碎片整理。