1. 计算机硬件组成
- 计算机的基本硬件系统 由 运算器、控制器、存储器、输入设备和输出设备5大部件组成。
- 运算器、控制器等部件被集成在一起统称为中央处理单元(Central Processing Unit,CPU)。CPU是硬件系统的核心,用于数据的加工处理,能完成各种算术、逻辑运算及控制功能。
- 存储器是计算机系统重的记忆设备,分为内部存储器和外部存储器。前者速度高、容量小,一般用于临时存放程序、数据及中间结果。而后者容量大、速度慢,可以长期保存程序和数据。
- 输入设备和输出设备合称为外部设备(简称外设),输入设备用于输入原始数据以及各种命令,而输出设备则用于输出计算机运行的结果。
2. 中央处理单元
-
CPU的功能:
- 程序控制。CPU通过执行指令来控制程序的执行顺序,这是CPU的重要功能。
- 操作控制。一条指令功能的实现需要若干操作信号配合来完成,CPU产生每条指令的操作信号并将操作信号送往对应的部件,控制相应的部件按指令的功能要求进行操作。
- 时间控制。CPU对各种操作进行时间上的控制,即指令执行过程中操作信号的出现时间、持续时间以及出现的时间顺序都需要进行严格控制。
- 数据处理。CPU通过对数据进行算术运算及逻辑运算等方式进行加工处理,数据加工处理的结果被人们所利用。所以,对数据的加工处理也是CPU最根本的任务。
此外,CPU还需要对系统内部和外部的中断(异常)做出响应,进行相应的处理。
-
CPU的组成:CPU主要由运算器、控制器、寄存器组和内部总线等部件组成。
-
运算器:由算术逻辑单元ALU(实现对数据的算术和逻辑运算)、累加寄存器AC(运算结果或源操作数的存放区)、数据缓冲寄存器DR(暂时存放内存的指令或数据)、状态条件寄存器PSW(保存指令运行结果的条件码内容,如溢出标志等)组成。 执行所有的算术运算,如加减乘除等;执行所有的逻辑运算并进行逻辑测试,如与、或、非、比较等。
- 算术逻辑单元ALU
- 累加寄存器AC
- 数据缓冲寄存器DR
- 状态条件寄存器PSW
-
控制器:由指令寄存器IR(暂存CPU执行指令)、程序计数器PC(存放指令执行地址)、地址寄存器AR(保存当前CPU所访问的内存地址)、指令译码器ID(分析指令操作码)等组成。控制整个CPU的工作,最为重要。
- 指令寄存器IR
- 程序计数器PC
- 地址寄存器AR
- 指令译码器ID
-
CPU依据指令周期的不同阶段来区分二进制的指令和数据,因为在指令周期的不同阶段,指令会命令CPU分别去取指令或者数据。
-
在计算机中,处理器的运算主要依赖于晶振芯片给CPU提供的脉冲频率,处理器的运算速度也依赖于这个晶振芯片。通常CPU的频率分为主频、倍频和外频。
- 主频是指CPU内部的时钟频率,是CPU进行运算时的工作频率。
- 外频是指CPU与周边设备传输数据的频率,具体是指CPU到芯片组之间的总线速度。
- 倍频是指CPU频率和系统总线频率之间相差的倍数,CPU速度可以通过倍频来无限提升。
- 三者之间的计算公式:主频=外频×倍频
3. 校验码
-
码距:就单个编码A:000000而言,其码距为1,因为其只需要改变1位就变成另一个编码。在两个编码中,从A码到B码转换所需要改变的位数称为码距,如A:000000要转换为B:111111,码距为2.一般来说,码距越大,越利于纠错和检错。
奇偶校验码 -
奇偶校验码:在编码中增加1位校验位来使编码中1的个数为奇数(奇校验)或者偶数(偶校验),从而使码距变为2。例如:
奇校验:编码中,含有奇数个1,发送给接收方,接收方收到后,会计算收到的编码有多少个1,如果是奇数个,则无误,若是偶数个,则有误。
偶校验同理,只是编码中有偶数个1,由上述,奇偶校验只能检1位错,并且无法纠错。
CRC循环冗余校验码 -
CRC只能检错,不能纠错。使用CRC编码,需要先约定一个生成多项式G(x)G(x)G(x),生成多项式的最高位和最低位必须是1。假设原始信息有mmm位,则对应多项式M(x)M(x)M(x)。生成校验码思想就是在原始信息为后追加若干校验位,使得追加的信息能被G(x)G(x)G(x)整除。接收方接收到带校验位的信息,然后用G(x)G(x)G(x)整除。余数为0,则没有错误,反之则发生错误。
例:假设原始信息串为101101011010110,CRC的生成多项式为G(x)=x4+x+1G(x)=x^4+x+1G(x)=x4+x+1,求CRC校验码。
(1)在原始信息位后面添0,假设生成多项式的阶为rrr,则在原始信息位后添加rrr个0,本题中,G(x)G(x)G(x)的阶为4,则在原始信息串后加4个0,得到的新串为101100000101100000101100000,作为被除数。
(2)由多项式得到除数,多项中xxx的幂指数存在的位置1,不存在的位置0。本题中,xxx的幂指数为0,1,4的变量都存在,而幂指数为2,3的不存在,因此得到串100111001110011.
(3)生成CRC校验码,将前两步得出的被除数和除数进行模2除法运算(即异或运算)(即不 进位也不借位的除法运算)。除法过程如下所示,得到余数111111111111。

注意:余数不足rrr,则余数左边用若干个0补齐。如求得余数为111111,r=4r=4r=4,则补两个0得到001100110011.
(4)生成最终发送信息串,将余数添加到原始信息后。上例中,原始信息为101101011010110,添加余数111111111111后,结果为10110111110110 1111101101111。发送方将此数据发送给接收方。
(5)接收方进行校验。接收方的CRC校验过程与生成过程类似,接收方接收了带校验和的帧后,用多项式G(x)G(x)G(x)来除。余数为0,则表示信息无错;否则要求发送方机型重传。
注意:收发信息双方需使用相同的生成多项式。
4. 指令系统
-
计算机指令的组成:一条指令由操作码和操作数两部分组成,操作码决定要完成的操作,操作数指参加运算的数据及其所在的单元地址。
在计算机中,操作要求和操作数地址都由二进制数码表示,分别称作操作码和地址码,整条指令以二进制编码的形式存放在存储器中。 -
计算机指令执行过程:取指令——分析指令——执行指令 三个步骤,首先将程序计数器PC中的指令地址取出,送入地址总线,CPU依据指令地址去内存中取出指令内容存入指令寄存器IR;而后由指令译码器进行分析,分析指令操作码;最后执行指令,取出指令执行所需的源操作数。
-
指令寻址方式
- 顺序寻址方式:当执行一段程序时,是一条指令接着一条指令地顺序执行。
- 跳跃寻址方式:指下一条指令的地址码不是由程序计数器PC给出,而是由本条指令直接给出。程序跳跃后,按新的指令地址开始顺序执行。因此,程序计数器的内容也必须相应改变,以便及时跟踪新的指令地址。
-
指令操作数的寻址方式
- 立即寻址方式:指令的地址码字段指出的不是地址,而是操作数本身。
- 直接寻址方式:在指令的地址字段中直接指出操作数在主存中的地址。
- 间接寻址方式:指令地址码字段所指向的存储单元中存储的是操作数的地址。
- 寄存器寻址方式:指令中的地址码是寄存器的编号。
- 基址寻址方式:将基址寄存器的内容加上指令中的 形式地址 而形成操作数的有效地址,其优点是可以扩大寻址能力。
- 变址寻址方式:变址寻址方式计算有效地址的方法与基址寻址方式很相似,它是将变址寄存器的内容加上指令中的 形式地址 而形成操作数的有效地址。
-
CISC和RISC
-
CISC是复杂指令系统,兼容性强,指令繁多,长度可变,由微程序实现。
-
RISC是精简指令系统,指令少,使用频率接近,主要依靠硬件实现(通用寄存器,硬不限逻辑控制)
-
具体区别如下:
指令系统类型 指令 寻址方式 实现方式 其它 CISC(复杂) 数量多,使用频率差别大,可变长格式 支持多种 微程序控制技术(微码) 研制周期长 RISC(精简) 数量少,使用频率接近,订长格式,大部分为单周期指令,操作寄存器,只有Load/Store操作内存 支持方式少 增加了通用寄存器;硬布线逻辑控制为主;适合采用流水线 优化编译,有效支持高级语言
-
-
指令流水线原理:将指令分成不同段,每段由不同的部分去处理,因此可以产生叠加的效果,所有的部件去处理指令的不同段。

- RISC中的流水线技术:
- 超流水线(Super Pipe Line)技术。它通过细化流水、增加级数和提高主频,使得在每个机器周期内能完成一个甚至两个浮点操作。其实质是以时间换取空间。
- 超标量(Super Scalar)技术。它通过内装多条流水线来同时执行多个处理,其时钟频率虽然与一般流水线接近,却有更小的CPI。其实质是以空间换取时间。
- 超长指令字(Very Long Instruction Word,VLIW)技术。VLIW和超标量都是20世纪80年代出现的概念,其共同点是要同时执行多条指令,其不同在于超标量依靠硬件来实现并行处理的调度,VLIW则充分发挥软件的作用,而使硬件简化,性能提高。
- 流水线时间计算
- 流水线周期:指令分成不同的执行段,其中执行时间最长的段为流水线周期。
- 流水线执行时间:1条指令总执行时间 +(总指令条数-1)*流水线周期。
- 流水线吞吐率计算:吞吐率即单位时间内执行的指令条数。
公式:指令条数/流水线执行时间 - 流水线的加速比计算:加速比即使用流水线后的效率提升度,即比不使用流水线快了多少倍,越高表明流水线效率越高。
公式:不使用流水线执行时间/使用流水线执行时间
5. 存储系统

-
计算机采用分级存储体系的主要目的是:为了解决存储容量、成本和速度之间的矛盾问题。
-
两级存储:Cache-主存、主存-辅存(虚拟存储体系)
-
局部性原理:总的来说,在CPU运行时,所访问的数据会趋向于一个较小的局部空间地址内,包括下面两个方面:
- 时间局部性原理:如果一个数据项正在被访问,那么在近期它很可能会被再次访问,即在相邻的时间里会访问同一个数据项。
- 空间局部性原理:在最近的将来会用到的数据的地址和现在正在访问的数据地址很可能是相近的,即相邻的空间地址会被连续访问。
-
加快地址转换:TLB。现代处理器都包含一个特殊的cache以跟踪最近使用过的地址变换,这个特殊的地址转换cache通常称为快表(Translation-Lookaside Buffer, TLB)(将其称为地址变换高速缓存更精确)。
-
高速缓存Cache用来存储当前最活跃的程序和数据,直接与CPU交互,位于CPU和主存之间,容量小,速度为内存的5-10倍,由半导体材料构成。其内容是主存内存的副本拷贝,对于程序员来说是透明的。
-
Cache由控制部分和存储器组成,存储器存储数据,控制部分判断CPU要访问的数据是否在Cache中,若在则命中,若不在则依据一定的算法从主存中替换。
-
存储器中数据常用的存取方式有顺序存取、直接存取、随机存取和相联存取等4种。
- 顺序存取:存储器的数据以记录的形式进行组织。对数据的访问必须按特定的线性顺序进行。磁带存储器采用顺序存取的方式。
- 直接存取:与顺序存取相似,直接存取也使用一个共享的读写装置对所有的数据进行访问。但是,每个数据块都拥有唯一的地址标识,读写装置可以直接移动到目的数据块的所在位置进行访问。存取时间也是可变的。磁盘存储器采用直接存取的方式。
- 随机存取:存储器的每一个可寻址单元都具有自己唯一的地址和读写装置,系统可以在相同的时间内对任意一个存储单元的数据进行访问,而与先前的访问序列无关。主存储器采用随机存取的方式。
- 相联存取:相联存取也是一种随机存取的形式,但是选择某一单元进行读写是取决于其内容而不是其地址。与普通的随机存取方式一样,每个单元都有自己的读写装置,读写时间也是一个常数。使用相联存取方式,可以对所有的存储单元的特定位进行比较,选择符合条件的单元进行访问。为了提高地址映射的速度,Cache采取相联存取的方式。
-
地址映射:在CPU工作时,输出的是主存单元的地址,而应从Cache存储器中读/写信息。这就需要将主存地址转换为Cache存储器地址,这种地址的转换称为地址映射,由硬件自动完成映射,分为下列三种方法:
- 直接映像:将Cache存储器等分成块,主存也等分成块并编号。主存中的块与Cache中的块的对应关系是固定的,也即二者块号相同才能命中。地址变换简单但不灵活,容易造成资源浪费。(如下图)
- 全相连映像:同样都等分成块并编号。主存中任意一块都与Cache中任意一块对应。因此可以随意调入Cache任意位置,但地址变换复杂,速度较慢。因为主存可以随意调入Cache任意块,只有当Cache满了才会发生块冲突,是最不容易发生块冲突的映像方式。
- 组组相连映像:前面两种方式的结合,将Cache存储器先分块在分组,主存也同样先分块在分组,组间采用直接映像,即主存中组号与Cache中组号相同的组才能命中,但是组内全相联映像,也即组号相同的两个组内的所有块可以任意调换。
- 全相连映像:同样都等分成块并编号。主存中任意一块都与Cache中任意一块对应。因此可以随意调入Cache任意位置,但地址变换复杂,速度较慢。因为主存可以随意调入Cache任意块,只有当Cache满了才会发生块冲突,是最不容易发生块冲突的映像方式。
- 三种地址映射的对比:
相联度 定位方法 需要比较的次数 直接映像 索引 1 组相联 索引组,查找组中元素 相联的度 全相联 查找所有cache项 cache的容量 独立的查找表 0
- 直接映像:将Cache存储器等分成块,主存也等分成块并编号。主存中的块与Cache中的块的对应关系是固定的,也即二者块号相同才能命中。地址变换简单但不灵活,容易造成资源浪费。(如下图)
-
替换算法
- 目标:使Cache获得尽可能高的命中率。常用算法有如下几种:
- 随机替换算法(Random Policy)。用随机数发生器产生一个要替换的块号,将该块替换出去。
- 先进先出算法(FIFO)。将最先进入Cache的信息块替换出去。
- 近期最少使用算法(LRU)。将近期最少使用Cache中的信息块替换出去。
- 优化替换算法。这种方法必须先执行一次程序,统计Cache的替换情况。有了这样的先验信息,在第二次执行该程序时便可以用最有效的方式来替换。
- 目标:使Cache获得尽可能高的命中率。常用算法有如下几种:
-
命中率及平均时间
Cache有命中率的概念,即当CPU所访问的数据在Cache中时,命中,直接从Cache中读取数据,设读取一次Cache时间为111ns,若CPU访问的数据不在Cache中,则需要从内存中读取,设读取一次内存的时间为100010001000ns,若在CPU多次读取数据过程中,有90%命中Cache,则CPU读取一次的平均时间为(90%∗1+10%∗1000)(90\% * 1+10\%*1000)(90%∗1+10%∗1000)ns

-
磁盘结构和参数
磁盘有正反两个盘面,每个盘面有多个同心圆,每个同心圆是一个磁道,每个同心圆又被划分成为多个扇区,数据就被存放在一个个扇区中。
磁头首先要寻找到对应的磁道,然后等待磁盘进行周期旋转,旋转到指定的扇区,才能读取到对应的数据,因此,会产生寻道时间和等待时间。公式为:存取时间=寻道时间+等待时间(平均定位时间+转动延迟)
注意:寻道时间是指磁头移动到磁道所需的时间;等待时间为等待读写的扇区转到磁头下方所用的时间。 -
磁盘调度算法
之前已经说过,磁盘数据的读取时间分为寻道时间+旋转时间,也即先找到对应的磁道,而后再旋转到对应的扇区才能读取数据,其中寻道时间耗时最长,需要重点调度,有如下调度算法:
先来先服务FCFS:根据进程请求访问磁盘的先后顺序进行调度。
最短寻道时间优先SSTF:请求访问的磁道与当前磁道最近的进程优先调度,使得每次的寻道时间最短。会产生“饥饿”现象,即远处进程可能永远无法访问。
扫描算法SCAN:又称“电梯算法”,磁头在磁盘上双向移动,其会选择离磁头当前所在磁道最近的请求访问的磁道,并且与磁头移动方向一致,磁头永远都是从里向外或者从外向里一直移动完才掉头,与电梯类似。
单向扫描调度算法CSCAN:与SCAN不同的是,其只做单向移动,即只能从里向外或者从外向里。
6. 输入输出技术
- 内存与接口地址的编址方法
- 内存与接口地址的独立编址方法
内存地址与接口地址是完全独立的两个地址空间。访问数据时所使用的指令也完全不同,用于接口的指令只用于接口的读/写,其余的指令全都是用于内存的。因此,在编程序或读程序时很容易使用和辨认。这种编制方法的缺点是用于接口的指令太少,功能太弱。 - 内存与接口地址的统一编址方法
内存地址和接口地址统一在一个公共地址空间里,即内存单元和接口共用地址空间。优点是原则上用于内存的指令全部可以用于接口,这就大大地增强了对接口的操作功能,而且在指令上也不再区分内存或者接口指令。该编制方法的缺点就在于整个地址空间被分成两部分,其中一部分分配给接口使用,剩余的为内存所用,这经常会导致内存地址不连续。
- 内存与接口地址的独立编址方法
- 计算机与外设间的数据交互方式
- 程序控制(查询)方式:CPU主动查询外设是否完成数据传输,效率极低。
- 程序中断方式:设完成数据传输后,向CPU发送中断,等待CPU处理数据,效率相对较高。中断响应时间指的是从发出中断请求到开始进入中断处理程序;中断处理时间指的是从中断处理开始到中断处理结束。中断向量提供中断服务程序的入口地址。多级中断嵌套,使用堆栈来保护断点和现场。
CPU利用中断方式完成数据的I/O,当I/O系统与外设交换数据时,CPU无需等待也不必去查询I/O的状态,当I/O系统完成了数据传输后则以中断信号通知CPU。然后CPU通过栈保存正在执行程序的现场,转入I/O中断服务程序完成与I/O系统的数据交换。再然后返回原主程序继续执行。与程序控制方式相比,中断方式因为CPU无需等待而提高了效率。 - DMA方式(直接主存存取):CPU只需完成必要的初始化等操作,数据传输的整个过程都由DMA控制器完成,在主存和外设之间建立直接的数据通路,效率很高。在一个总线周期结束后,CPU会响应DMA请求开始读取数据;CPU响应程序中断请求是在一条指令执行结束时。
- 通道:也是一种处理机,内部具有独立的处理系统,是数据的传输独立于CPU。分为字节多路通道的传送方式(每一次传送一个通道的一个字节,多路通道循环)和选择通道的传送方式(选择一个通道,先传送完这个通道的所有字节,再开始下一个通道传送)。
7. 总线结构
- 总线 (Bus),是指计算机设备和设备之间传输信息的公共数据通道。总线是连接计算机硬件系统内多种设备的通信线路,它的一个重要特征是由总线上的所有设备共享,因此可以将计算机系统内的多种设备连接到总线上。
- 从广义上讲,任何连接两个以上电子元器件的导线都可以称为总线,通常分为以下三类:
- 内部总线:内部芯片级别的总线,芯片与处理器之间通信的总线。
- 系统总线:是板级总线,用于计算机内各部分之间的连接,具体分为数据总线(并行数据传输位数)、地址总线 (系统可管理的内存空间的大小)、控制总线 (传送控制命令)。代表的有ISA总线、EISA总线、PCI总线。
- 外部总线:设备一级的总线,微机和外部设备的总线。代表的有RS232(串行总线)、SCSI(并行总线)、USB(通用串行总线,即插即用,支持热插拔)。
单总线:同一时刻只有一个设备发送数据,设计复杂,性能低。
总线是一组能为多个部件分时共享的信息传送线,用来连接多个部件并为之提供信息交换通路。所谓共享,指连接到总线上的所有部件都可通过它传递信息;分时性指某一时刻只允许一个部件将数据发送到总线上。因此,共享是通过分时实现的。
总线计算:总线的时钟周期=时钟频率的倒数;总线的宽度(传输速率)=单位时间内传输的数据总量/单位时间大小。
单工:A→BA \rightarrow BA→B,任何时刻都只有一个方向。
半双工:A⇋BA \leftrightharpoons BA⇋B,同一时刻只有一个方向,不同的时刻是可以双向的。
全双工:A⇔BA \Leftrightarrow BA⇔B,任意时刻都可以双向。
4129

被折叠的 条评论
为什么被折叠?



