既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
②保留的低n位数能正确表达计算结果,即高位的舍去并不影响其运算结果。
3.如何判断一个浮点数是否是规格化数?
- 3.如何判断一个浮点数是否是规格化数?
为了使浮点数能尽量多地表示有效位数,一般要求运算结果用规格化数形式表示。“规格化浮点数的尾数小数点后的第一位一定是个非零数。因此,对于原码编码的尾数来说,只要看尾数的第一位是否为1就行:对于补码表示的尾数,只要看符号位和尾数最高位是否相反。需要注意的是,IEEE754标准的浮点数尾数是用原码编码的。
4.对于位数相同的定点数和浮点数,可表示的浮点数个数比定点数个数多吗?
- 4.对于位数相同的定点数和浮点数,可表示的浮点数个数比定点数个数多吗?
不是,可表示的数据个数取决于编码所采用的位数。编码位数一定,编码出来的数据个数就是一定的。m位编码只能表示2m个数,所以对于相同位数的定点数和浮点数来说,可表示的数据个数应该一样多(有时可能由于一个值有两个或多个编码对应,编码个数会有少量差异)。
5.浮点数如何进行舍入?
- 5.浮点数如何进行舍入?
舍入方法选择的原则是:①尽量使误差范围对称,使得平均误差为0,即有舍有入,以防误差积累。②方法要简单,以加快速度。
IEEE754有4种舍入方式。
①就近舍入:舍入为最近可表示的数,若结果值正好落在两个可表示数的中间,则一般选择舍入结果为偶数。
②正向舍入:朝+∞方向舍入,即取右边的那个数
③负向舍入:朝-∞方向舍入,即取左边的那个数。
④截去:朝0方向舍入,即取绝对值较小的那个数
6.现代计算机中是否要考虑原码加减运算?如何实现?
- 6.现代计算机中是否要考虑原码加减运算?如何实现?
因为现代计算机中浮点数采用IEEE754标准,所以在进行两个浮点数的加减运算时,必须考虑原码的加减运算,因为IEEE754规定浮点数的尾数都用原码表示。
原码的加减运算可以有以下两种实现方式
1)转换为补码后,用补码加减法实现,结果再转换为原码。
2)直接用原码进行加减运算,符号和数值部分分开进行(具体过程见原码加减运算部分)。
7.长度为n+1的定点数,按照不同的编码方式,表示的数值范围是多少?
- 7.长度为n+1的定点数,按照不同的编码方式,表示的数值范围是多少?
各编码方式的数值范围见表2.8
8.设阶码和尾数均用补码表示,阶码部分共K+1位(含1位阶符),尾数部分共n+1位(含1位数符),则这样的浮点数的表示范围是多少?
- 8.设阶码和尾数均用补码表示,阶码部分共K+1位(含1位阶符),尾数部分共n+1位(含1位数符),则这样的浮点数的表示范围是多少?
浮点数的表示范围见表2.9。
第三章 存储系统
【复习提示】
本章是历年考査的重点,特别是有关 Cache和存储器扩展的知识点容易出综合题。此外,存储器的分类与特点,存储器的扩展(芯片选择、连接方式、地址范围等),低位交叉存储器,Cache的相关计算与替换算法,虚拟存储器与快表也容易出选择题。读者应在掌握基本原理和理论的基础上,多结合习题进行练习复习,以加深和巩固。另外,读者还需掌握存在 Cache和TLB的计算机中的地址翻译与 Cache映射问题,该问题在《操作系统考研复习指导》中有详细说明。
本章有两个难点:一是 ache映射规律、容量计算及替换特性;二是交又存储器访问时间和访问效率。二者都可与第5章的大题综合,或与第6章总线访问内存时间的计算问题综合。
在学习本章时,请读者思考以下问题:
- 1)存储器的层次结构主要体现在何处?为何要分这些层次?计算机如何管理这些层次?
- 2)存取周期和存取时间有何区别?
- 3)在虚拟存储器中,页面是设置得大一些好还是设置得小一些好?
请读者在学习本章的过程中寻找答案,本章末尾会给出参考答案。
3.1 存储器概述
3.1.1 存储器的分类
相联存储器的基本原理是把存储单元所存内容的某一部分作为检索项(即关键字项)去检索该存储器,并将存储器中与该检索项符合的存储单元内容进行读出或写入。所以它是 按内容或地址进行寻址的,价格较为昂贵。 一般用来制作TLB、相联 Cache等。
按在计算机中的作用对存储器分类:
- 1> 主存储器,简称主存。CPU可以直接随机地对其进行访问,也可以和高速缓存器及辅助存储器交换数据。
- 2> 辅助存储器,简称辅存,不能与CPU直接相连,用来存放当前暂时不用的程序和数据
- 3> 高速缓冲存储器,位于主存和CPU之间,用来存放正在执行的程序段和数据
按存储介质分类:
- 磁表面存储器(磁盘,磁带),磁心存储器半导体存储器(MOS型存储器,双极存储器)和光存储器(光盘)。
按存取方式分类:
- 1> 随机存储器(RAM)。存储器的任何一个存储单元的内容都可以随机存取,而且存取时间与存取单元的物理位置无关,主要用作主存或高速缓冲存储器。
- 2> 只读存储器(ROM)。存储器的内容只能随机读出而不能写入。。即使断电,内容也不会丢失。
- 3> 串行访问存储器。对存储单元进行读/写操作时,需按其物理位置的先后顺序寻址,包括顺序存取存储器(如磁带)与直接存取存储器(如磁盘)。
按信息的可保存性分类:
- 断电后,存储信息即消失的存储器,称为易失性存储器,如RAM。断电后信息仍然保持的存储器,称为非易失性存储器,如ROM,磁表面存储器和光存储器。若某个存储单元所存储的信息被读出时,原存储信息被破坏,则称为破坏性读出;若读出时,被读单元原存储信息不被破坏,则称为非破坏性读出。具有破坏性读出性能的存储器,每次读出操作后,必须紧接一个再生的操作,以便恢复被破坏的信息。
3.1.2 存储器的性能指标
存储器的性能指标,有3个主要的性能指标,存储容量,单位成本和存储速度
- 1> 存储容量:存储字数*字长
- 2> 单位成本:每位价格=总成本/总容量
- 3> 存储速度:数据传输率=数据的宽度/存储周期
存取时间:存取时间时指从启动一次存储器操作到完成该操作所经历的时间,分为读出时间和写入时间。
存取周期:它是指存储器进行一次完整的读写操作所需的全部时间,即连续两次独立访问存储器操作(读或写操作)之间所需的最小时间间隔。
主存带宽:主存带宽又称数据传输率,表示每秒从主存进出信息的最大数量,单位为字/秒,字节/秒
存取时间不等于存储周期,通常存储周期大于存取时间。因为任何一种存储器,在读写操作之后,总要有一段恢复内部状态的复原时间。
3.2 存储器的层次结构
3.3 半导体随机存储器
3.3.1 SRAM和DRAM
3.3.2 只读存储器
3.3.3 主存的基本组成(存储系统)
3.4 主存储器与CPU的连接
3.4.2 主存容量的扩展
1.位扩展
2.字扩展
原来译码器的功能在这里可以使用!
3.字位同时扩展法
设CPU有16根地址线,8根数据线,并用MREQ作为访存控制信号(低电平有效),用WR作为读/写控制信号(高电平为读,低电平为写)。现有下列存储芯片:1K×4位RAM,4K×8位RAM,8K×8位RAM,2K×8位ROM,4K×8位ROM,8K×8位ROM及74LS138译码器和各种门电路。画出CPU与存储器的连接图,要求:
1)主存地址空间分配:6000H~67FFH为系统程序区;6800H~6BFFH为用户程序区。
2)合理选用上述存储芯片,说明各选几片?
3)详细画出存储芯片的片选逻辑图。
补充:系统程序区用ROM,用户程序区用RAM
MAR和MDR是直接做在CPU芯片上面的!
3.5 双端口RAM和多模块存储器
3.5.1 双端口RAM
3.5.2 多模块存储器
交叉存储器实际上是一种模块式的存储器,它能并行执行多个独立的读/写操作。
3.6 高速缓冲存储器
3.6.1 程序访问的局部性原理
3.6.2 Cache的基本工作原理
直接好家伙!
3.6.4 Cache中主存块的替换算法
- 随机算法(RAND):随机地确定替换的 Cache块。它的实现比较简单,但没有依据程序访问的局部性原理,故可能命中率较低
- 先进先出算法(FIFO):选择最早调入的行进行替换。它比较容易实现,但也没有依据程序访问的局部性原理,可能会把一些需要经常使用的程序块(如循环程序)也作为最早进入 Cache的块替换掉。
- 近期最少使用算法(LRU):依据程序访问的局部性原理选择近期内长久未访问过的存储行作为替换的行,平均命中率要比FFO要高,是堆栈类算法。
LRU算法对每行设置一个计数器, Cache每命中一次,命中行计数器清0,而其他各行计数器均加1,需要替换时比较各特定行的计数值,将计数值最大的行换出。 - 最不经常使用算法(LFU):将一段时间内被访问次数最少的存储行换出。每行也设置一个计数器,新行建立后从0开始计数,每访问一次,被访问的行计数器加1,需要替换时比较各特定行的计数值,将计数值最小的行换出。
Cache例题
3.7 虚拟存储器
3.7.1 虚拟存储器的基本概念
3.7.5 段页式虚拟存储器
把程序按逻辑结构分段,每段再划分为固定大小的页,
主存空间也划分为大小相等的页,
程序对主存的调入、调出仍以页为基本传送单位。
每个程序对应一个段表,每段对应一个页表
虚拟地址:段号+段内页号+页内地址
3.7.3 快表(TLB)
页表、段表存放在主存中,收到虚拟地址后要先访问主存,査询页表、段表,进行虚实地址转换。
放在主存中的页表称为慢表(Page)
提高变换速度→用高速绥沖存储器存放常用的页表项 → 快表(TLB)
3.8 本章开头提出的问题回答
1)存储器的层次结构主要体现在何处?为何要分这些层次?计算机如何管理这些层次?
- 1)存储器的层次结构主要体现在何处?为何要分这些层次?计算机如何管理这些层次?
存储器的层次结构主要体现在 Cache-主存和 主存-辅存这两个存储层次上。
Cache-主存层次在存储系统中主要 对CPU访存起加速作用,即从整体运行的效果分析,CPU访存速度加快,接近于 Cache的速度,而寻址空间和位价却接近于主存。
主存-辅存层次在存储系统中主要 起扩容作用,即从程序员的角度看,他所使用的存储器的容量和位价接近于辅存,而速度接近于主存。
综合上述两个存储层次的作用,从整个存储系统来看,就达到了速度快、容量大、位价低的优化效果。
主存与 Cache之间的信息调度功能全部由硬件自动完成。而主存与辅存层次的调度目前广泛采用虚拟存储技术实现,即将主存与辅存的一部分通过软/硬结合的技术组成虚拟存储器,程序员可用这个比主存实际空间(物理地址空间)大得多的虚拟地址空间(逻辑地址空间)编程,当程序运行时,再由软/硬件自动配合完成虚拟地址空间与主存实际物理空间的转换。因此,这两个层次上的调度或转换操作对于程序员来说都是透明的。
2)存取周期和存取时间有何区别?
- 2)存取周期和存取时间有何区别?
存取周期和存取时间的主要区别是:存取时间仅为完成一次操作的时间;而存取周期不仅包含操作时间,而且包含操作后线路的恢复时间,即存取周期=存取时间+恢复时间。(这是不是也可以解释,为什么IC前端,时序分析中有建立时间和保持时间吧)
3)在虚拟存储器中,页面是设置得大一些好还是设置得小一些好?
- 3)在虚拟存储器中,页面是设置得大一些好还是设置得小一些好?
页面不能设置得过大,也不能设置得过小。因为页面太小时,平均页内剩余空间较少,可节省存储空间,但会使得页表增大,而且页面太小时不能充分利用访存的空间局部性来提高命中率;页面太大时,可减少页表空间,但平均页内剩余空间较大,会浪费较多存储空间,页面太大还会使页面调入/调出的时间较长
3.9 常见问题
1.存取时间Ta就是存储周期Tm吗?
- 1.存取时间Ta就是存储周期Tm吗?
不是。存取时间Ta是执行一次读操作或写操作的时间,分为读出时间和写入时间。读出时间是从主存接收到有效地址开始到数据稳定为止的时间;写入时间是从主存接收到有效地址开始到数据写入被写单元为止的时间。
存储周期Tm是指存储器进行连续两次独立地读或写操作所需的最小时间间隔。所以存取时间Ta不等于存储周期Tm。通常存储周期Tm大于存取时间Ta。
2. Cache行的大小和命中率之间有什么关系?
- 2.Cache行的大小和命中率之间有什么关系?
行的长度较大,可以充分利用程序访问的空间局部性,使一个较大的局部空间被一起调到Cache中,因而可以增加命中机会。但是,行长也不能太大,主要原因有两个:
1)行长大使失效损失变大。也就是说,若未命中,则需花更多时间从主存读块。
2)行长太大, Cache项数变少,因而命中的可能性变小
3.发生取指令 Cache缺失的处理过程是什么?
- 3.发生取指令 Cache缺失的处理过程是什么?
1)程序计数器恢复当前指令的值。
2)对主存进行读的操作。
3)将读入的指令写入 Cache中,更改有效位和标记位。
4)重新执行当前指令。
4.关于 Cache的一些小知识
- 4.关于 Cache的一些小知识。
1)多级 Cache。现代计算机系统中,一般采用多级的 Cache系统。CPU执行指令时,先到速度最快的一级 Cache( LI Cache)中寻找指令或数据,找不到时,再到速度次快的二级Cache(L2 Cache)中找…最后到主存中找。
2)指令 Cache和数据 Cache。指令和数据可以分别存储在不同的 Cache中( LI Cache一般会这么做),这种结构也称哈佛 Cache,其特点是允许CPU在同一个 Cache存储周期内同时提取指令和数据,由于指令执行过程取指和取数据都有可能访问 Cache,因此这一特性可以保证不同的指令同时访存。
第四章 指令系统
【复习提示】
指令系统是表征一台计算机性能的重要因素。读者应注意扩展操作码技术,各种寻址方式的特点及有效地址的计算,相对寻址有关的计算,CISC与RISC的特点与区别。本章知识点出选择题的概率较大,但也有可能结合其他章节出有关指令的综合题。2014年、2015年已连续两次出现指令系统和指令流水线的大题。指令系统格式和指令寻址方式与CPU指令执行过程部分紧密结合,希望读者引起重视。
在学习本章时,请读者思考以下问题
- 1)什么是指令?什么是指令系统?为什么要引入指令系统?
- 2)一般来说,指令分为哪些部分?每部分有什么用处?
- 3)对于一个指令系统来说,寻址方式多和少有什么影响?
请读者在本章的学习过程中寻找答案,本章末尾会给出参考答案。
4.1 指令格式
4.1.1 指令的基本格式
4.2 指令寻址方式
4.2.1 指令的寻址方式
4.2.2 常见的数据寻址方式
隐含寻址
立即寻址
直接寻址
间接寻址
寄存器寻址
寄存器间接寻址
偏移寻址
堆栈寻址
4.3 CISC和RISC的基本概念
4.4本章开头提出的问题回答
1)什么是指令?什么是指令系统?为什么要引入指令系统?
- 1)什么是指令?什么是指令系统?为什么要引入指令系统?
指令就是要计算机执行某种操作的命令,一台计算机中所有机器指令的集合,称为这台计算机的指令系统。引入指令系统后,避免了用户与二进制代码直接接触,使得用户编写程序更为方便。另外,指令系统是表征一台计算机性能的重要因素,它的格式与功能不仅直接影响到机器的硬件结构,而且也直接影响到系统软件,影响到机器的适用范围。
2)一般来说,指令分为哪些部分?每部分有什么用处?
- 2)一般来说,指令分为哪些部分?每部分有什么用处?
一条指令通常包括操作码字段和地址码字段两部分。其中,操作码指出指令中该指令应该执行什么性质的操作和具有何种功能,它是识别指令、了解指令功能与区分操作数地址内容的组成和使用方法等的关键信息。地址码用于给出被操作的信息(指令或数据)的地址,包括参加运算的一个或多个操作数所在的地址、运算结果的保存地址、程序的转移地址、被调用子程序的入口地址等。
3)对于一个指令系统来说,寻址方式多和少有什么影响?
- 3)对于一个指令系统来说,寻址方式多和少有什么影响?
寻址方式的多样化能让用户编程更为方便,但多重寻址方式会造成CPU结构的复杂化(详见下章),也不利于指令流水线的运行。而寻址方式太少虽然能够提高CPU的效率,但对于用户而言,少数几种寻址方式会使编程变得复杂,很难满足用户的需求。
4.5常见问题
1.简述各常见指令寻址方式的特点和适用情况
- 1.简述各常见指令寻址方式的特点和适用情况
立即寻址操作数获取便捷,通常用于给寄存器赋初值。
直接寻址相对于立即寻址,缩短了指令长度
间接寻址扩大了寻址范围,便于编制程序,易于完成子程序返回。
寄存器寻址的指令字较短,指令执行速度较快
寄存器间接寻址扩大了寻址范围。
基址寻址扩大了操作数寻址范围,适用于多道程序设计,常用于为程序或数据分配存储空间。
变址寻址主要用于处理数组问题,适合编制循环程序。
相对寻址用于控制程序的执行顺序、转移等。
基址寻址和变址寻址的区别:两种方式有效地址的形成都是寄存器内容+偏移地址,但是在基址寻址中,程序员操作的是偏移地址,基址寄存器的内容由操作系统控制,在执行过程中是动态调整的;而在变址寻址中,程序员操作的是变址寄存器,偏移地址是固定不变的。
2.一个操作数在内存可能占多个单元,怎样在指令中给出操作数的地址?
- 2.一个操作数在内存可能占多个单元,怎样在指令中给出操作数的地址?
现代计算机都采用字节编址方式,即一个内存单元只能存放一字节的信息。一个操作数(如char、int、foat、 double)可能是8位、16位、32位或64位等,因此可能占用1个、2个、4个或8个内存单元。也就是说,一个操作数可能有多个内存地址对应。
有两种不同的地址指定方式:大端方式和小端方式。
大端方式:指令中给出的地址是操作数最高有效字节(MSB)所在的地址
小端方式:指令中给出的地址是操作数最低有效字节(LSB)所在的地址。
3.装入/存储(Load/ Store)型指令有什么特点?
- 3.装入/存储(Load/ Store)型指令有什么特点?
装入/存储型指令是用在规整型指令系统中的一种通用寄存器型指令风格。这种指令风格在RISC指令系统中较为常见。为了规整指令格式,使指令具有相同的长度,规定只有 Load/Store指令才能访问内存。而运算指令不能直接访问内存,只能从寄存器取数进行运算,运算的结果也只能送到寄存器。因为寄存器编号较短,而主存地址位数较长,通过某种方式可使运算指令和访存指令的长度一致。
这种装入/存储型风格的指令系统的最大特点是,指令格式规整,指令长度一致,一般为32位。由于只有 Load/Store指令オ能访问内存,程序中可能会包含许多装入指令和存储指令,与ー般通用寄存器型指令风格相比,其程序长度会更长。
第五章 中央处理器
【复习提示】
中央处理器是计算机的中心,也是本书的难点。其中,数据通路的分析、指令执行阶段的节拍与控制信号的安排、流水线技术与性能分析易出综合题。而关于各种寄存器的特点、指令执行的各种周期与特点、控制器的相关概念、流水线的相关概念也极易出选择题。
在学习本章时,请读者思考以下问题
- 1)CPU分为哪几部分?分别实现什么功能?
- 2)指令和数据均存放在内存中,计算机如何从时间和空间上区分它们是指令还是数据?
- 3)什么是指令周期、机器周期和时钟周期?它们之间有何关系?
- 4)指令周期是否有一个固定值?为什么?
- 5)什么是微指令?它和第4章谈到的指令有什么关系?
- 6)什么是指令流水线?指令流水线相对于传统计算机体系结构的优势是什么?如何计算指令流水线的加速比?
请读者在本章的学习过程中寻找答案,本章末尾会给出参考答案。
【复习提示】
中央处理器是计算机的中心,也是本书的难点。其中,数据通路的分析、指令执行阶段的节拍与控制信号的安排、流水线技术与性能分析易出综合题。而关于各种寄存器的特点、指令执行的各种周期与特点、控制器的相关概念、流水线的相关概念也极易出选择题。
在学习本章时,请读者思考以下问题:
- 1)CPU分为哪几部分?分别实现什么功能?
- 2)指令和数据均存放在内存中,计算机如何从时间和空间上区分它们是指令还是数据?
- 3)什么是指令周期、机器周期和时钟周期?它们之间有何关系?
- 4)指令周期是否有一个固定值?为什么?
- 5)什么是微指令?它和第4章谈到的指令有什么关系?
- 6)什么是指令流水线?指令流水线相对于传统计算机体系结构的优势是什么?如何计算指令流水线的加速比?
请读者在本章的学习过程中寻找答案,本章末尾会给出参考答案。
5.1 CPU的功能和基本构造
5.1.1 CPU的基本功能
CPU的功能:
- 指令控制:完成取指令、分析指令和执行指令的操作,即程序的顺序控制。
- 操作控制:一条指令的功能往往是由若干操作信号的组合来实现的。CPU管理并产生由内存取出的每条指令的操作信号,把各种操作信号送往相应的部件,从而控制这些部件按指令的要求进行动作。
- 时间控制:对各种操作加以时间上的控制。时间控制要为每条指令按时间顺序提供应有的控制信号。
- 数据加工:对数据进行算术和逻辑运算。
- 中断处理:对计算机运行过程中出现的异常情况和特殊请求进行处理。
5.1.2 CPU的基本结构
1.运算器
- 算术逻辑单元ALU
- 累加寄存器ACC
- 程序字状态寄存器PSW
- 计数器CT
- 暂存寄存器
- 通用寄存器组
- 移位器
通用寄存器供用户自由编程,可以存放数据和地址。而指令寄存器是专门用于存放指令的专用寄存器,不能由通用寄存器代替。
2.控制器
- 程序计数器PC:存放下一条指令在主存中的地址,具有自增功能。
- 指令寄存器IR:存放当前正在执行的指令。
- 指令译码器
- 存储器地址寄存器MAR
- 存储器数据寄存器MDR
- 时序系统
- 微操作信号发生器
条件转移指令执行时,需要对标志寄存器的内容进行测试,判断是否满足转移条件。
转移指令时,需要判断转移是否成功,若成功则PC修改为转移指令的目标地址,否则下一条指令的地址仍然为PC自增后的地址。指令包括操作码字段和地址码字段,但指令译码器仅对操作码字段进行译码,借以确定指令的操作功能。
注意:CPU内部寄存器大致可分为两类:一类是用户可见的寄存器,可对这类寄存器编程,如通用寄存器组、程序状态字寄存器;另一类是用户不可见的寄存器,对用户是透明的,不可对这类寄存器编程,如存储器地址寄存器MAR、存储器数据寄存器MDR、指令寄存器IR。
5.2 指令执行过程
5.2.1 指令周期
5.2.2 指令周期的数据流
取指周期
间址周期
间址周期的作用是取操作数的有效地址,因此间址周期结束后,MDR的内容为操作数地址。
执行周期
根据IR中的指令字的操作码和操作数通过ALU操作产生执行结果。不同指令的执行操作不同,因此没有统一的数据流向。
中断周期
5.2.3 指令执行方案
5.3 数据通路的功能和基本结构
实际考试中,建议把间址周期合并到执行周期,因为每个人对间址周期的理解是不一样的
专用数据通路方式
注意ALU不是通用寄存器?
5.4 控制器的功能和工作原理
5.4.1 控制器的结构和功能
控制器是计算机系统的指挥中心,控制器的主要功能有:
- 1)从主存中取出一条指令,并指出下一条指令在主存中的位置。
- 2)对指令进行译码或测试,产生相应的操作控制信号,以便启动规定的动作。
- 3)指挥并控制CPU、主存、输入和输出设备之间的数据流动方向。
5.4.2 硬布线控制器
1. 硬布线控制单元图
2.硬布线控制器的时序及微操作
3.CPU控制方式
4.硬布线控制单元设计步骤
5.4.3 微程序控制器
1.微程序控制的基本概念
2.微程序控制组成和工作过程
5.微指令的格式
3.微指令的编码方式
4.微指令的地址形成方式
6.微程序控制单元的设计
设计步骤:
- 分析每个阶段的微操作序列
- 写出对应机器指令的微操作命令及节拍安排
- 确定微指令格式
- 编写微指令码点
7. 动态微程序设计和毫微程序设计
8.硬布线和微程序控制器的特点
5.5 指令流水线
5.5.1 指令流水的基本概念
5.5.3 影响流水线的因素
5.5.2 流水线的分类
1.部件功能级、处理机级和处理机间级流水线
- 根据流水线使用的级别的不同,流水线可分为部件功能级流水线、处理机级流水线和处理机间流水线。
- 部件功能级流水就是将复杂的算术逻辑运算组成流水线工作方式。例如,可将浮点加法操作分成求阶差、对阶、尾数相加以及结果规格化等4个子过程。
- 处理机级流水是把一条指令解释过程分成多个子过程,如前面提到的取指、译码、执行、访存及写回5个子过程。
- 处理机间流水是一种宏流水,其中每一个处理机完成某一专门任务,各个处理机所得到的结果需存放在与下一个处理机所共享的存储器中。
2.单功能流水线和多功能流水线
- 按流水线可以完成的功能,流水线可分为单功能流水线和多功能流水线。
- 单功能流水线指只能实现一种固定的专门功能的流水线;
- 多功能流水线指通过各段间的不同连接方式可以同时或不同时地实现多种功能的流水线。
3.动态流水线和静态流水线
- 按同一时间内各段之问的连接方式,流水线可分为静态流水线和动态流水线。
- 静态流水线指在同一时间内,流水线的各段只能按同一种功能的连接方式工作。
- 动态流水线指在同一时间内,当某些段正在实现某种运算时,另一些段却正在进行另一种运算。这样对提高流水线的效率很有好处,但会使流水线控制变得很复杂。
4.线性流水线和非线性流水线 - 按流水线的各个功能段之间是否有反馈信号,流水线可分为线性流水线与非线性流水线。
- 线性流水线中,从输入到输出,每个功能段只允许经过一次,不存在反馈回路。
- 作线性流水线存在反馈回路,从输入到输出过程中,某些功能段将数次通过流水线,这种流水线适合进行线性递归的运算。
5.5.5 超标量流水线的基本概念
1.超标量流水技术
2.超流水技术
3.超长指令集
5.6本章开头提出的问题回答
1)CPU分为哪几部分?分别实现什么功能?
- 1)CPU分为哪几部分?分别实现什么功能?
CPU分为运算器和控制器。其中运算器主要负责数据的加工,即对数据进行算术和逻辑运算控制器是整个系统的指挥中枢,对整个计算机系统进行有效的控制,包括指令控制、操作控制、时间控制和中断处理。
2)指令和数据均存放在内存中,计算机如何从时间和空间上区分它们是指令还是数据?
- 2)指令和数据均存放在内存中,计算机如何从时间和空间上区分它们是指令还是数据?
从时间上讲,取指令事件发生在“取指周期”,取数据事件发生在“执行周期”。从空间上讲,从内存读出的指令流流向控制器(指令寄存器),从内存读出的数据流流向运算器(通用寄存器)。
3)什么是指令周期、机器周期和时钟周期?它们之间有何关系?
- 3)什么是指令周期、机器周期和时钟周期?它们之间有何关系?
CPU每取出并执行一条指令所需的全部时间称为指令周期;机器周期是在同步控制的机器中,执行指令周期中一步相对完整的操作(指令步)所需的时间,通常安排机器周期长度=主存周期;时钟周期是指计算机主时钟的周期时间,它是计算机运行时最基本的时序单位,对应完成一个微操作所需的时间,通常时钟周期=计算机主频的倒数
4)指令周期是否有一个固定值?为什么?
- 4)指令周期是否有一个固定值?为什么?
由于计算机中各种指令执行所需的时间差异很大,因此为了提高CPU的运行效率,即使在同步控制的机器中,不同指令的指令周期长度都是不一致的,即指令周期对不同的指令来说不是个固定值。
5)什么是微指令?它和第4章谈到的指令有什么关系?
- 5)什么是微指令?它和第4章谈到的指令有什么关系?
控制部件通过控制线向执行部件发出各种控制命令,通常把这种控制命令称为微命令,而一组实现一定操作功能的微命令的组合,构成一条微指令。许多条微指令组成的序列构成微程序,微程序完成对指令的解释执行。指令,即指机器指令。每条指令可以完成一个独立的算术运算或逻辑运算操作。在采用微程序控制器的CPU中,一条指令对应一个微程序,一个微程序由许多微指令构成,一条微指令会发出很多不同的微命令。
6)什么是指令流水线?指令流水线相对于传统计算机体系结构的优势是什么?如何计算指令流水线的加速比?
- 6)什么是指令流水线?指令流水线相对于传统计算机体系结构的优势是什么?如何计算指令流水线的加速比?
指令流水线是把指令分解为若干子过程,通过将每个子过程与其他子过程并行执行,来提高计算机的吞吐率的技术。采用流水线技术只需增加少量硬件就能把计算机的运算速度提高几倍,因此成为计算机中普遍使用的一种并行处理技术,通过在同一个时间段使用各功能部件,使得利用率明显提高。
流水线的加速比指的是完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比。一条k段流水线理论上的最大加速比为Smax=k。因此,在现代计算机中提高流水线段数有利于提高计算机的吞吐量。具体的加速比要使用时空图来计算。
5.7 常见问题
1.流水线越多,并行度就越高。是否流水段越多,指令执行越快?
- 1.流水线越多,并行度就越高。是否流水段越多,指令执行越快?
错误,因为如下:
1)流水段缓冲之间的额外开销增大。每个流水段有一些额外开销用于缓冲间传送数据、进行各种准备和发送等功能,这些开销加长了一条指令的整个执行时间,当指令间逻辑上相互依赖时,开销更大。
2)流水段间控制逻辑变多、变复杂。用于流水线优化和存储器(或寄存器)冲突处理的控制逻辑将随流水段的增加而大增,这可能导致用于流水段之间控制的逻辑比段本身的控制逻辑更复杂。
2.有关指令相关、数据相关的几个概念
- 2.有关指令相关、数据相关的几个概念
1)两条连续的指令读取相同的寄存器时,会产生读后读( Read After Read,RAR)相关,这种相关不会影响流水线。
2)某条指令要读取上一条指令所写入的寄存器时,会产生写后读( Read After Write,RAW)相关,它称数据相关或真相关,影响流水线。按序流动的流水线只可能出现RAW相关。
3)某条指令的上条指令要读/写该指令的输出寄存器时,会产生读后写( Write After Read,WAR)和写后写( Write After Write,WAW)相关。在非按序流动的流水线中,既可能发生RAW相关,又可能发生WAR相关和WAW相关。
对流水线影响最严重的指令相关是数据相关。
第六章 总线
【复习提示】
本章的知识点较少,其中总线仲裁及总线操作和定时方式是难点。本章内容通常以选择题的形式出现,特别是系统总线的特点、性能指标、各种仲裁方式的特点、异步定时方式及常见的总线标准和特点等。总线带宽的计算也可能结合其他章节出综合题
在学习本章时,请读者思考以下问题:
- 1)引入总线结构有什么好处?
- 2)引入总线结构会导致什么问题?如何解决?
请读者在学习本章的过程中寻找答案,本章末尾会给出参考答案。
6.1 总线的概述
6.1.1 总线基本概念
3.总线的特性
- 机械特性:尺寸、形状、管脚数、排列顺序
- 电气特性:传输方向和有效的电平范围
- 功能特性:每根传输线的功能(地址、数据、控制)
- 时间特性:信号的时序关系
6.1.2 总线的分类
6.1.4 总线的性能指标
总线的性能指标
1.总线的传输周期(总线周期)
2.总线时钟周期
3.总线的工作频率
4.总线的时钟频率
5.总线宽度
6.总线带宽
7.总线复用
8.信号线数
6.2 总线仲裁
6.2.2 分布仲裁方式
特点:不需要中央仲裁器,每个潜在的主模块都有自己的仲裁器和仲裁号,多个仲裁器竞争使用总线。
- 当设备有总线请求时,它们就把各自唯一的仲裁号发送到共享的仲裁总线上
- 每个仲裁器将从仲裁总线上得到的仲裁号与自己的仲裁号进行比较;
- 如果仲裁总线上的号优先级高,则它的总线请求不予响应,并撤销它的仲裁号;
- 最后,获胜者的仲裁号保留在仲裁总线上。
6.3 总线操作和定时
6.4 总线标准
总线标准的基本概念:
- 总线标准是国际上公布或推荐的互连各个模块的标准,它是把各种不同的模块组成计算机系统时必须遵守的规范。按总线标准设计的接口可视为通用接口,在接口的两端,任何一方只需根据总线标准的要求完成自身方面的功能要求,而无须了解对方接口的要求。
- 系统总线标准:ISA、EISA、VESA、PCI、PCI- Express等。
- 设备总线标准:IDE、AGP、RS-232C、USB、SATA、SCSI、 PCMCIA等。
- 局部总线标准:在ISA.总线和CPU总线之间增加的一级总线或管理层,如PCI、PCI-E、VESA、AGP等,可以节省系统的总带宽。
- 即插即用( Plug-and-Play)的作用是自动配置(低层)计算机中的板卡和其他设备,然后告诉对应的设备都做了什么。把物理设备和软件(设备驱动程序)相配合,并操作设备,在每个设备和它的驱动程序之间建立通信信道
- 热插拔( hot-plugging或 Hot Swap)即带电插拔,热插拔功能就是允许用户在不关闭系统,不切断电源的情况下取出和更换损坏的硬盘、电源或板卡等部件,从而提高了系统对灾难的及时恢复能力、扩展性和灵活性等,例如一些面向高端应用的磁盘镜像系统都可以提供磁盘的热插拔功能。
6.4.1 常见的总线标准
6.5本章开头提出的问题回答
1)引入总线结构有什么好处?
- 1)引入总线结构有什么好处?
引入总线结构主要有以下优点
①简化了系统结构,便于系统设计制造。
②大大减少了连线数目,便于布线,减小体积,提高系统的可靠性
③便于接口设计,所有与总线连接的设备均采用类似的接口。
④便于系统的扩充、更新与灵活配置,易于实现系统的模块化
⑤便于设备的软件设计,所有接口的软件对不同的接口地址进行操作。
⑥便于故障诊断和维修,同时也能降低成本。
2)引入总线会导致什么问题?如何解决?
- 2)引入总线会导致什么问题?如何解决?
引入总线后,总线上的各个设备分时共享同一总线,当总线上多个设备同时要求使用总线时就会导致总线的冲突。为解决多个主设备同时竞争总线控制权的问题,应当采用总线仲裁部件,以某种方式选择一个主设备优先获得总线控制权,只有获得了总线控制权的设备才能开始数据传送。
6.6 常见问题
1.同一个总线不能既采用同步方式又采用异步方式通信吗?
- 1.同一个总线不能既采用同步方式又采用异步方式通信吗?
半同步通信总线可以。这类总线既保留了同步通信的特点,又能采用异步应答方式连接速度相差较大的设备。通过在异步总线中引入时钟信号,其就绪和应答等信号都在时钟的上升沿或下降沿有效,而不受其他时间的信号干扰。
例如,某个采用半同步方式的总线总是从某个时钟开始,在每个时钟到来时,采样Wait信号,若无效,则说明数据未准备好,下个时钟到来时,再采样Wait信号,直到检测到有效,再去数据线上取数据。PCI总线也是一种半同步总线,它的所有事件都在时钟下降沿同步,总线设备在时钟开始的上升沿采样总线信号。
2.一个总线在某一时刻可以有多对主从设备进行通信吗?
- 2.一个总线在某一时刻可以有多对主从设备进行通信吗?
不可以。在某个总线周期内,总线上只有一个主设备控制总线,选择一个从设备与之进行通信(即一对一的关系),或对所有设备进行广播通信(即一对多的关系)。所以一个总线在某一时刻不能有多对主从设备进行通信,否则会发生数据冲突。
第七章 输入/输出系统
【复习提示】
I/O方式是本章的重点和难点,每年不仅会以选择题的形式考查基本概念和原理,而且可能会以综合题的形式考査,特别是各种IO方式效率的相关计算,中断方式的各种原理、特点、处理过程、中断屏蔽,DMA方式的特点、传输过程、与中断方式的区别等。
在学习本章时,请读者思考以下问题
- 1)IO设备有哪些编址方式?各有何特点?
- 2)CPU响应中断应具备哪些条件?
请读者在学习本章的过程中寻找答案,本章末尾会给出参考答案。
【复习提示】
I/O方式是本章的重点和难点,每年不仅会以选择题的形式考査基本概念和原理,而且可能会以综合题的形式考査,特别是各种IO方式效率的相关计算,中断方式的各种原理、特点、处理过程、中断屏蔽,DMA方式的特点、传输过程、与中断方式的区别等。
在学习本章时,请读者思考以下问题:
- 1)I/O设备有哪些编址方式?各有何特点?
- 2)CPU响应中断应具备哪些条件?
请读者在学习本章的过程中寻找答案,本章末尾会给出参考答案。
7.1 I/O系统基本概念
7.1.1 输入/输出系统
输入、输出是以主机为中心谈论的!输入、输出设备都属于外部设备
7.1.2 I/O控制方式
7.1.4 解析
- I/O设备不可能直接与主板总线相连,它总是通过设备控制器来相连的
- I/O指令是指令系统的一部分,是机器指令的一类,但其为了反映与I/O设备交互的特点,格式和其他通用指令相比有所不同。
- 通道程序存放在主存而非通道中,由通道从主存中取出并执行。通道程序由通道执行,且只能在具有通道的I/O系统中执行
7.2 外部设备
- 外部设备
外部设备也称外围设备,是除了主机以外的、能直接或间接与计算机交换信息的装置。
7.2.1 输入设备
用于向计算机系统输入命令和文本、数据等信息的部件。键盘和鼠标是最基本的输入设备。
7.2.2 输出设备
用于将计算机系统中的信息输出到计算机外部进行显示、交换等的部件。显示器和打印机是最基本的输出设备。
打印机从打字原理的角度可以分为:击打式和非击打式!
7.2.3 外存设备
是指除计算机内存及CPU缓存等以外的存储器。硬磁盘、光盘等是最基本的外存设备。
串行:不能同时写和读!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
0cHM6Ly9ibG9nLmNzZG4ubmV0L2hhb2ppZV9kdWFu,size_16,color_FFFFFF,t_70)
串行:不能同时写和读!
[外链图片转存中…(img-gP5I2Du4-1715583138437)]
[外链图片转存中…(img-IGjPmUOU-1715583138438)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!