放弃不难,但坚持一定很酷!
一、数据的表示
(一)进制的转换
R进制转十进制
十进制转R进制
十进制转R进制,就是对十进制数除R取余,最后对余数取倒序
二进制转八进制与十六进制
- 二进制转八进制:从右至左,每3个二进制位对应1个八进制位。对于二进制数10001110,二进制的110对应八进制的6;二进制的001对应八进制的1;而此时只剩下两位10,那么在最前面补0为010,对应八进制的2。所以该二进制数10 001 110就对应八进制数216
- 二进制转十六进制:从右至左,每4个二进制位对应1个十六进制位。对于二进制数10001110,二进制的1110对应十六进制的E(14);二进制的1000对应十六进制的8;如果不满四位,与转八进制一样,在最前面补0(补满4位即可)。在十六进制中,A=10,B=11,C=12,D=13,E=14,F=15
(二)原码反码补码移码
机器数
- 即一个数在计算机中的二进制表示形式。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1
- 比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011。如果是 -3 ,就是 10000011 。这里的 00000011 和 10000011 就是机器数
真值
- 因为第一位是符号位,所以机器数的形式值就不等于真正的数值。例如上面的有符号数 10000011,其最高位1代表负,其真正数值是 -3 而不是形式值131(10000011转换成十进制等于131)。所以,为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值
- 例:0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = –000 0001 = –1
原码
- 原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值。比如如果是8位二进制:
- [+1]原 = 0000 0001
- [-1]原 = 1000 0001
- 因为第一位是符号位, 所以8位二进制数的取值范围就是:
- [1111 1111 , 0111 1111]即[-127 , 127]
反码
- 正数的反码是其本身
- 负数的反码是在其原码的基础上, 符号位不变,其余各个位取反
- [+1] = [00000001]原 = [00000001]反
- [-1] = [10000001]原 = [11111110]反
补码
- 正数的补码是其本身
- 负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1(即在反码的基础上+1)
- [+1] = [00000001]原 = [00000001]反 = [00000001]补
- [-1] = [10000001]原 = [11111110]反 = [11111111]补
移码
- 移码是在补码的基础上,对于符号位进行取反
- [+1] = [00000001]原 = [00000001]反 = [00000001]补=[10000001]移
- [-1] = [10000001]原 = [11111110]反 = [11111111]补=[01111111]移
机器字长为n时各种码制表示的带符号数的范围
- 原码和反码表示的范围是一样的,并且是对称的
- 补码和移码表示的范围是一样的,它可以比原码、反码表示的范围要多1(原因就在0这个位置)
码制 | 定点整数 | 定点小数 |
---|---|---|
原码 | - (2^(n-1)-1) ~ + (2^(n-1)-1) | - (1-2^-(n-1)) ~ +(1-2^-(n-1)) |
反码 | - (2^(n-1)-1) ~ + (2^(n-1)-1) | - (1-2^-(n-1)) ~ +(1-2^-(n-1)) |
补码 | -2^(n-1) ~ +(2^(n-1)-1) | -1 ~ +(1-2^-(n-1)) |
移码 | -2^(n-1) ~ +(2^(n-1)-1) | -1 ~ +(1-2^-(n-1)) |
(三)浮点数运算
浮点数的概念
:浮点数即科学计数法,如1000=1X10^3; 其中,1为尾数,10为基数,3为指数浮点数的运算
:当两个指数不等的浮点数相加时,计算机会把低阶浮点数的指数转化为高阶浮点数的指数,如:1.0X10^3+1.19X10^2,计算机会将1.19X10^2转化为0.119X10^3,然后作和,然后结果格式化(即通过指数的转化保证尾数必须为非零的一位数)浮点数的范围
:由阶码决定浮点数的精度
:由尾数决定
二、CPU结构
主机
中包含两大部件:CPU和内存(主存储器)。而对于声卡、显卡、鼠标键盘这些都是属于外设的CPU
由运算器和控制器组成运算器
- 算术逻辑单元 ALU:负责处理数据,实现对数据的算术运算和逻辑运算
- 累加寄存器 AC:简称累加器,它是一个通用寄存器,功能是当运算器的算术逻辑单元执行算术或逻辑运算时,为ALU提供一个工作区
- 数据缓冲寄存器 DR:作为CPU和内存、外设之间数据传送的中转站,作为CPU和内存、外设之间在操作速度上的缓冲
- 状态条件寄存器 PSW:保存由算术指令和逻辑指令运行或测试的结果建立的各种条件码内容
控制器
- 程序计数器 PC:用于存放下一条指令的地址。当一条指令被获取后,程序计数器的地址加1,指向下一条指令的地址
- 指令寄存器 IR:用于存放当前从主存储器读出的正在执行的一条指令
- 地址寄存器 AR:用于保存当前CPU所访问的内存单元的地址
- 指令译码器 ID:计算机执行一条指令时,首先分析这条指令的操作码是什么,以决定操作的性质和方法,然后才能控制计算机其他各部件协同完成指令表达的功能,这个分析工作由指令译码器来完成
三、Flynn分类法
Flynn分类法有两个指标:指令流,数据流。指令流为机器执行的指令序列;数据流是由指令调用的数据序列。无论是指令流还是数据流,它们都分为两种类型:单、多
四、CISC和RISC
五、流水线
(一)基本概念
(二)流水线计算
流水线周期
指在(取指、分析、执行)三个阶段中时间最长的一段,对应上面的例题,最长的一段时间为2ns,所以流水线周期为2ns- 100条指令全部执行完毕需要的时间为:
理论公式
:(2+2+1)+(100-1)X2=203ns- 100条指令全部执行完毕需要的时间为:
实践公式
:(3+100-1)X2=204ns(公式中的k表示指令被分成了几段)- 计算时优先用理论公式,选项中没有该答案时再采用实际公式
(三)流水线吞吐率计算
- 对应前面例题,指令条数为100,流水线执行时间为203ns,所以流水线的吞吐率TP=100/203
- 而流水线最大吞吐率是一种理想情况,即TPmax=1/2。(Δt=流水线周期=2ns)
(四)流水线加速比计算
前面例题,若不使用流水线,采用顺序执行的方法,花费时间为:(2+2+1)X100=500ns。而使用流水线,花费时间为:(2+2+1)+(100-1)X2=203ns。所以流水线的加速比:S=500/203
(五)流水线的效率计算
前面例题,E=24/60=0.4(可理解为方格占用比例)
六、层次化存储结构
(一)层次结构
- 存储速度最快、效率最高的是寄存器。在CPU中,拥有运算器和控制器,而在运算器和控制器中,就会存在相应的寄存器。但寄存器的容量是最小的
- 速度排在第二的是Cache(高速缓存),之后依次是内存(主存)、外存(辅存)
- 对于Cache而言,它内部的所有内容都来自于内存,它所存储的内容是内存中的一小部分,但是运行速度却比内存快的多
(二)存储器的分类
按存储器所处的位置分类
- 内存:也称主存,设在主机内或主板上,用来存放机器当前运行所需程序和数据,以便向CPU提供信息。相对于外存,其特点是容量小、速度快
- 外存:也称辅存,如磁盘、磁带、光盘和U盘等,用来存放当前不参加运行的大量信息,在需要时调入内存
按存储器的构成材料分类
- 磁存储器:用磁介质做成,如磁芯、磁泡、磁膜、磁鼓、磁带及磁盘等
- 半导体存储器:根据所用元件可分为:双极型和MOS型;根据数据是否需要刷新可分为:静态和动态
- 光存储器:利用光学方法读/写数据的存储器,如光盘
按存储器的工作方式分类
- 读/写存储器(RAM):既能读取也能存入数据的存储器
- 只读存储器:仅能读取的存储器,根据数据的写入方式又可分为:ROM、PROM、EPROM、EEPROM等
- 固定只读存储器(ROM):在厂家生产时就写好数据,其内容只能读出,不能改变。一般用于存放系统程序BIOS和用于微程序控制
- 可编程的只读存储器(PROM):其中的内容可以由用户一次性写入,写入后不能再修改
- 可擦除可编程的只读存储器(EPROM):其中的内容既可以读出,也可以由用户写入,写入后还可以修改
- 电擦除可编程的只读存储器(EEPROM):与EPROM相似,既可以读出,也可以写入,只不过这种存储器采用电擦除的方式进行数据的改写
- 闪速存储器(FM):简称闪存,其特性介于EPROM和EEPROM之间,类似于EEPROM
按访问方式分类
- 按地址访问的存储器
- 按内容访问的存储器
按寻址方式分类
- 随机存储器(RAM):可对任何存储单元存入或读取数据,访问任何一个存储单元所需时间相同
- 顺序存储器(SAM):访问数据所需时间与数据所在的存储位置相关,磁带是典型的顺序存储器
- 直接存储器(DAM):介于随机存取和顺序存取之间的一种寻址方式。磁盘是一种直接存储器
(三)主存
主存的分类
- 主存可分为:随机存取存储器(RAM)和只读存储器(ROM)
- 两种类型明显的区别:内存属于RAM,一旦断电,内存中的所有数据都将被清除掉,无法进行保存;而ROM在断电之后,仍可存储信息
主存的编址
- 概念:主存的编址就是把许多块芯片组成相应的存储器
- 图一中的8表示它有8个地址空间,4表示每一个地址空间存储了4位的信息
- 计算
- 第(1)空:内存地址从AC000H到C7FFFH,对这两个十六进制数进行相减、再加1即可。第5位:F-0=F;第四位:F-0=F;第三位:F-0=F;第二位:7-C,因为C=12,不够减,所以向高位借一位,此时第四位应该是:7+16-C=B(11,因为是十六进制,所以每借一位加16);第一位:因为被借走了一位,所以C-1=B,B-A=1;所得结果是:1BFFFH,再加1,即:1C000H(将其转换成K单位,要对结果除以1024)。将其转为十进制:(0×16^0 + 0×16^1 + 0×16^2 + C×16^3 + 1×16^4)/1024=112K
- 第(2)空:总容量为112K×16bit,需要28片存储器芯片,每片芯片有16K个存储单元,也就是说:(112K×16bit)/(28×16K×a)=1,比值为1是因为我们使用这些芯片组成固定的空间,解得a=4
(四)相联存储器
相联存储器是一种按内容访问的存储器,其工作原理就是把数据或数据的某一部分作为关键字,按顺序写入信息,读出时并行的将该关键字与存储器中的每一单元进行比较,找出存储器中所有关键字相同的数据字,特别适合于信息的检索和更新
(五)Cache(高速缓存)
- CPU会在cache中寻找它需要的数据,如果不能找到,CPU就将前往内存中寻找,而chche的访问命中率就是CPU需要的数据在cache中被找到的比例
- Cache中的地址映像方法:直接映像、全相联映像、组相联映像
直接映像
:指主存的块与Cache块的对应关系是固定的。优点是地址变换简单,缺点是灵活性差、Cache块冲突率高全相联映像
:允许主存的任一块可以调入Cache存储器的任何一个块的空间中。优点是Cache块冲突率低、灵活性好,缺点是访问速度慢、地址变换较复杂、成本太高组相联映像
:是前两种方式的折衷方案,即组采用直接映像方式、块采用全相联映像方式- 这三种映射方式都是计算机硬件自动完成的,不是软件
替换算法
:替换算法的目的是使cache获得尽可能高的命中率,有以下四种:随机替换算法、先进先出算法、近期最少使用算法、优化替换算法虚拟存储器
:即cpu在给出需要访问的内存地址时,给出的并不是真正的物理地址,而是物理地址的抽象,虚拟存储器是由主存-辅存两级存储器组成
七、局部性原理
时间局部性
:指如果程序中的某条指令一旦被执行,则不久的将来该指令可能再次被执行空间局部性
:指一旦程序访问了某个存储单元,则在不久的将来,其附近的存储单元也最有可能被访问工作集理论
:工作集是进程运行时被频繁访问的页面集合
八、磁盘工作原理
- 磁盘调度管理中,先进行移臂调度寻找磁道,再进行旋转调度寻找扇区
- 上面例题,磁盘的旋转周期为33ms,表示旋转一圈耗时33ms,一共有11个记录,可以理解为读取1个记录消耗的时间为3ms
- 若采用单缓冲区顺序处理(如上图中的大圈),当把R0读取单缓冲区时,此时磁头到了R1的起始位置,但是此时是不能读取R1的,因为R0占用着缓冲区(还未处理完),所以新的记录是进不来的。当处理完缓冲区中的R0之后,花费了3ms,此时磁头已经到了R2的起始位置,但是我们接下来想要处理的应该是R1,所以这个时候磁头会一直转动,直到转过一圈,再次跑到R1的起始位置时,才可以处理R1。所以我们处理一个记录R0,一共耗时为:一个记录+一圈,也就是3+33=36ms。从R0到R9都是同样的道理,所以共耗时:36X10=360ms,而对于R10,可以直接读取并处理,耗时为6ms,所以总共耗时为360+6=366ms
- 若对信息存储进行优化分布(如上图中的小圈),先看大圈,我们处理R0的时候,磁头跑到了R2,此时我们将R2假设为R1;而处理完R1之后,磁头跑到了R4,此时我们将R4假设为R2,以此类推,就得到了上图中的小圈。这样下来,就没有任何的时间浪费,那么读取和处理分别耗时3ms,也就是处理完一个记录耗时3+3=6ms,一共11个记录,总共耗时6*11=66ms
九、总线结构
- 概念:总线(Bus)指计算机设备与设备之间传输信息的公共数据通道
- 根据总线所处位置不同,通常分成三种类型
内部总线
:微机内部的,各个外围芯片与处理器之间的总线,属于芯片级别系统总线
:系统总线即为各个插线板和系统板之间的总线
- 数据总线(DB):用来传送数据信息,是双向的。CPU既可通过DB从内存或输入设备读入数据,也可通过DB将内部数据送至内存或输出设备。DB的宽度决定了CPU和计算机其他设备之间每次交换数据的位数
- 地址总线(AB):用于传送CPU发出的地址信息,是单向的。传送地址信息的目的是指明与CPU交换信息的内存单元或I/O设备。地址总线的宽度决定了CPU的最大寻址能力
- 控制总线(CB):用来传送控制信号、时序信号和状态信息等,双向线表示。其中有的信号是CPU向内存或外部设备发出的信息,有的信号是内存或外部设备向CPU发出的信息。CB中每一条线的信息传送方向是单方向且确定的,但CB作为一个整体则是双向的
外部总线
:即微机和外部设备的总线- 总线上的多个部件之间只能分时向总线发送数据,但可以同时从总线接收数据
十、系统可靠性分析
(一)串联系统
- 串联系统的结构:只要一个子系统失效,整个系统都将失效
- 可靠性(R)与失效率(λ)
(二)并联系统
- 并联系统的结构:少数子系统的失效不会影响整个系统
- 可靠性(R)与失效率(μ)
(三)N模冗余系统
- N模冗余系统的结构:N模冗余系统有N个(N=2n+1)相同的子系统和一个表决器组成,表决器把N个子系统中占多数相同结果的输出作为系统的输出
- 在N个子系统中,只要有n+1个及以上子系统能正常工作,系统就能正常工作
- 每个子系统的可靠性为R0,N模冗余系统的可靠性为R
十一、差错控制
(一)校验码基本概念
- 检错:将错误检查出来
- 纠错:将错误检查出来的同时并进行纠正
(二)循环校验码(CRC)
- 循环冗余校验码(CRC)广泛应用于数据通信领域和磁介质存储系统中。它利用生成多项式为k个数据位产生r个校验位来进行编码,其编码长度为k+r
- 循环冗余校验码是由两部分组成的,左边为信息码(数据),右边为校验码。若信息码占k位,则校验码就占n-k位。其中,n为CRC码的字长,所以又称为(n,k)码。校验码是由信息码产生的,校验码位数越多,该代码的校验能力就越强。在求CRC编码时,采用的是模2运算
- 可以检错但不能纠错
(三)奇偶校验码(PC)
- 奇偶校验是一种简单有效的校验方法(可以检错,不能纠错)。这种方法通过在编码中增加一位校验位来使编码中1的个数为奇数(奇校验)或者为偶数(偶校验),从而使码距变为2
- 对于奇校验,它可以检测代码中奇数位出错的编码,但不能发现偶数位出错的情况,即当合法编码中的奇数位发生了错误时,编码中的1变成0或0变成1,则该编码中1的个数的奇偶性就发生了变化,从而可以发现错误
- 常用的奇偶校验码有3种:水平奇偶校验码、垂直奇偶校验码、水平垂直校验码
- 奇校验:被传输的有效数据中“1”的个数是奇数个,校验位填“0”,否则填“1”
- 偶校验:被传输的有效数据中“1”的个数是偶数个,校验位填“0”,否则填“1”
- 例如:奇校验 1000110(0),采用奇校验,“1”的个数为奇数个,所以校验位填“0”
- 偶校验 1000110(1),采用偶检验,“1”的个数为偶数个,所以校验位填“1”
(四)海明校验码(HC)
- 海明码的构成方法是在数据位之间的特定位置上插入k个校验位,通过扩大码距来实现检错和纠错(可以检错和纠错)
- 设数据位是n位,校验位是k位,则n和k必须满足:2^k - 1 ≥ n + k
- 海明校验码的作用:将信息转换为海明校验码形式以后,就能进行纠错,如信息1011,其海明校验码的正确形式为1010101,若收到1011101,我们可以将两个数的校验码位的数提取出来,并在对应位置进行异或运算,如该例得到了001,则说明第1位’(左数第一个信息位)出错了,若得到了010,则说明第二个信息位出错了
十二、输入输出技术
(一)直接程序控制
- 直接程序控制是指外设数据的输入/输出过程是在CPU执行程序的控制下完成的。这种方法分为:无条件传送和程序查询方式两种情况
无条件传送
:在此情况下,外设总是准备好的,它可以无条件的随时接收CPU发来的输出数据,也能够无条件的随时向CPU提供需要输入的数据程序查询方式
:在这种方式下,利用查询方式进行输入/输出,就是通过CPU执行程序来查询外设的状态,判断外设是否准备好接收数据或准备好了向CPU输入的数据
- 缺点:降低了CPU效率、对外部突发事件无法做出实时响应
(二)中断方式
- 对于前面程序控制I/O的方法,其主要缺点在于CPU必须等待I/O系统完成数据的传输任务,整个系统的性能严重下降
- 利用中断方式完成数据的输入/输出过程为:当I/O系统与外设交换数据时,CPU无需等待也不必去查询I/O的状态,而可以抽身出来处理其他任务。当I/O系统准备好后,则发出中断请求信号通知CPU,CPU接到中断请求信号后,保存正在执行程序的现场,转入I/O中断服务程序的执行,完成与I/O系统的数据交换,然后再返回被中断的程序继续执行
- 与程序控制方式相比,中断方式因为CPU无需等待而提高了效率
- 中断处理方法
- 多中断信号线法
- 中断软件查询法
- 菊花链法
- 总线仲裁法
- 中断向量法
(三)直接存储器存取方式(DMA)
- 在计算机与外设交换数据的过程中,无论是程序控制方式,还是中断方式,都需要CPU通过执行程序来实现,这就限制了数据的传送速度。为进一步提高相应的速度,我们引入了DMA
- DMA是指数据在内存与I/O设备间(通俗的说,就是主存与外设)的直接成块传送,即在内存与I/O设备间传送一个数据块的过程,不需要CPU的任何干涉,只需要CPU在过程开始时启动、在过程结束时处理,实际操作全部由DMA硬件自动执行完成,CPU在此传送过程中可以去做别的事情
- 简洁讲,CPU只需向DMA控制器下达指令,让DMA控制器来处理数据的传送,数据传送完毕再把信息反馈给CPU,这样就很大程度上减轻了CPU的负担
(四)输入输出处理机(IOP)
- DMA方式的出现减轻了CPU对I/O操作的控制,使得CPU的效率显著提高。而通道方式的出现则进一步提高了CPU的效率
- 通道是一个具有特殊功能的处理器,又称为输入输出处理器(IOP),它分担了CPU的一部分功能,可以实现对外围设备的统一管理,完成外围设备与主存之间的数据传送
- 通道方式大大提高了CPU的工作效率,然而这种效率的提高是以增加更多的硬件为代价的
- 外围处理机(PPU)方式是通道方式的进一步发展。PPU是专用处理机,它根据主机的I/O命令,完成对外设数据的输入输出