软件测试最全计算机组成原理:最详细笔记_计算机组成原理笔记下载(2),2024年最新靠着这份面试题跟答案

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 四级网络工程师考试,就用这个方法,妙!
    在这里插入图片描述
知识回顾与重点考点

在这里插入图片描述

2.1.2 BCD码(Binary-Code Decimal码)

注意:这是为了表示0和9,所以1010~1111都是违法的,以前都没在意!
在这里插入图片描述
在这里插入图片描述

知识回顾与重要考点

在这里插入图片描述

2.1.4 字符与字符串

在这里插入图片描述

1.字符编码ASCII码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

字符串

在这里插入图片描述
在这里插入图片描述

知识回顾与重要考点

在这里插入图片描述

2.1.5 校验码

在这里插入图片描述

任意两个码字之间最少变化的二进制位数称为码距,码距大于等于2的数据校验码开始具有检错的能力。码距越大,检错、纠错能力越强。奇偶校验码的码距等于2,可以检测出一位错误(或奇数位错误),但不能确定出错的位置,也不能检测出偶数位错误;海明码的码距大于2,因此不仅可以发现错误,还能指出错误的位置。仅靠增加奇偶校验位的位数不能提高正确性,还要考虑码距。

具有检、纠错能力的数据校验码的实现原理:在编码中,除合法码字外,再加入一些非法码字,当某个合法码字出现错误时,就变为非法码字。合理安排非法码字的数量和编码规则就能达到纠错的目的。

1.奇偶校验码

原编码上加一个校验位,码距等于2!
在这里插入图片描述
在这里插入图片描述
知识回顾与重要考点

在这里插入图片描述

2.海明(汉明)校验码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 循环冗余校验(CRC)码

终于知道了《UVM实战》中的CRC校验是什么回事了!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

CRC校验码是可以纠错的,前面这个是因为信息位太长

在这里插入图片描述
在这里插入图片描述

2.2 定点数的表示和运算

2.3 浮点数的表示与运算

2.4 算数逻辑单元(ALU)

2.5 本章开头提出的问题回答

1)在计算机中,为什么要采用二进制来表示数据?
  • 1)在计算机中,为什么要采用二进制来表示数据?

从可行性来说,采用二进制,只有0和1两个状态,能够表示0、1两种状态的电子器件很多,如开关的接通和断开、晶体管的导通和截止、磁元件的正负剩磁、电位电平的高与低等,都可表示0、1两个数码。使用二进制,电子器件具有实现的可行性。
从运算的简易性来说,二进制数的运算法则少,运算简单,使计算机运算器的硬件结构大大简化(十进制的乘法九九口诀表有55条公式,而二进制乘法只有4条规则)从逻辑上来说,由于二进制0和1正好和逻辑代数的假( false)和真(true)相对应,有逻辑代数的理论基础,用二进制表示二值逻辑很自然。

2)计算机在字长足够的情况下能够精确地表示每个数吗?若不能,请举例说明。
  • 2)计算机在字长足够的情况下能够精确地表示每个数吗?若不能,请举例说明。

计算机采用二进制来表示数据,在字长足够时,可以表示任何一个整数。而二进制表示小数时只能够用1(2)的和的任意组合表示,即使字长很长,也不可能精确表示出所有小数,只能无限逼近。例如0.1就无法用二进制精确地表示。

3)字长相同的情况下,浮点数和定点数的表示范围与精度有什么区别?
  • 3)字长相同的情况下,浮点数和定点数的表示范围与精度有什么区别?

字长相同时,浮点数取字长的一部分作为阶码,所以表示范围比定点数要大,而取一部分作为阶码也就代表着尾数部位的有效位数减少,而定点数字长的全部位都用来表示数值本身,精度要比同字长的浮点数更大。

4)用移码表示浮点数的阶码有什么好处?
  • 4)用移码表示浮点数的阶码有什么好处?

移码的两个好处
①浮点数进行加减运算时,时常要比较阶码的大小,相对于原码和补码,移码比较大小更方便。
②检验移码的特殊值(0和max)时比较容易。阶码以移码编码时的特殊值如下。0:表示指数为负无穷大,相当于分数分母无穷大,整个数无穷接近0,在尾数也为0时可用来表示0:尾数不为零表示未正规化的数。max:表示指数正无穷大,若尾数为0,则表示浮点数超出表示范围(正负无穷大);尾数不为0,则表示浮点数运算错误

2.6 常见问题

1.如何表示一个数值数据?计算机中的数値数据都是二进制数吗?
  • 1.如何表示一个数值数据?计算机中的数値数据都是二进制数吗?

在计算机内部,数值数据的表示方法有以下两大类。
①直接用二进制数表示。分为无符号数和有符号数,有符号数又分为定点数表示和浮点数表示。无符号数用来表示无符号整数(如地址等信息);定点数用来表示整数;浮点数用来表示实数。
②二进制编码的十进制数,一般都采用8421码(也称NBCD码)来表示,用来表示整数。
所以,计算机中的数值数据虽然都用二进制来编码表示,但不全是二进制数,也有用十进制数表示的。后面一章有关指令类型的内容中,就有对应的二进制加法指令和十进制加法指令。

2.在高级语言编程中所定义的 unsigned/short/int/long/float/double型数据是怎么表示的?什么称为无符号整数的“溢出”?
  • 2.在高级语言编程中所定义的 unsigned/short/int/long/float/double型数据是怎么表示的?什么称为无符号整数的“溢出”?

unsigned型数据就是无符号整数,不考虑符号位。直接用全部二进制位对数值进行编码得到的就是无符号数,一般都用补码表示。

int型数据就是定点整数,一般用补码表示。int型数据的位数与运行平台和编译器有关,一般是32位或16位。例如,真值是-12的int型整数,在机器内存储的机器数(假定用32位寄存器寄存)是1111-1111-1111-1111-1111-1111-1111-0100.

long型数据和short型数据也都是定点整数,只是位数不同,分别是长整型和短整型数,通常用补码表示。

float型数据是用来表示实数的浮点数。现代计算机用IEEE754标准表示浮点数,其中32位单精度浮点数就是float型,64位双精度浮点数就是 double型。

需要注意的是,C语言中的int型和 unsigned型变量的存储方式没有区别,都按照补码的形式存储,在不溢出范围内的加减法运算也是相同的,只是int型变量的最高位代表符号位,而unsigned型中的最高位表示数值位,两者在C语言中的区别体现在输出时到底是采用%d还是采用%u。

对于无符号定点整数来说,若寄存器位数不够,则计算机运算过程中一般保留低n位,舍弃高位。这样,会产生以下两种结果。
①保留的低n位数不能正确表示运算结果。在这种情况下,意味着运算的结果超出了计算机所能表达的范围,有效数值进到了第n+1位,称此时发生了“溢出”现象
②保留的低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中主存块的替换算法
  1. 随机算法(RAND):随机地确定替换的 Cache块。它的实现比较简单,但没有依据程序访问的局部性原理,故可能命中率较低
  2. 先进先出算法(FIFO):选择最早调入的行进行替换。它比较容易实现,但也没有依据程序访问的局部性原理,可能会把一些需要经常使用的程序块(如循环程序)也作为最早进入 Cache的块替换掉。
  3. 近期最少使用算法(LRU):依据程序访问的局部性原理选择近期内长久未访问过的存储行作为替换的行,平均命中率要比FFO要高,是堆栈类算法。
    LRU算法对每行设置一个计数器, Cache每命中一次,命中行计数器清0,而其他各行计数器均加1,需要替换时比较各特定行的计数值,将计数值最大的行换出。
  4. 最不经常使用算法(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的功能:

  1. 指令控制:完成取指令、分析指令和执行指令的操作,即程序的顺序控制。
  2. 操作控制:一条指令的功能往往是由若干操作信号的组合来实现的。CPU管理并产生由内存取出的每条指令的操作信号,把各种操作信号送往相应的部件,从而控制这些部件按指令的要求进行动作。
  3. 时间控制:对各种操作加以时间上的控制。时间控制要为每条指令按时间顺序提供应有的控制信号。
  4. 数据加工:对数据进行算术和逻辑运算。
  5. 中断处理:对计算机运行过程中出现的异常情况和特殊请求进行处理。

在这里插入图片描述

在这里插入图片描述

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.微程序控制单元的设计

设计步骤:

  1. 分析每个阶段的微操作序列
  2. 写出对应机器指令的微操作命令及节拍安排
  3. 确定微指令格式
  4. 编写微指令码点

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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.总线的特性
  1. 机械特性:尺寸、形状、管脚数、排列顺序
  2. 电气特性:传输方向和有效的电平范围
  3. 功能特性:每根传输线的功能(地址、数据、控制)
  4. 时间特性:信号的时序关系
6.1.2 总线的分类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.1.4 总线的性能指标

总线的性能指标
1.总线的传输周期(总线周期)
2.总线时钟周期
3.总线的工作频率
4.总线的时钟频率
5.总线宽度

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

aGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hhb2ppZV9kdWFu,size_16,color_FFFFFF,t_70)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.1.4 总线的性能指标

总线的性能指标
1.总线的传输周期(总线周期)
2.总线时钟周期
3.总线的工作频率
4.总线的时钟频率
5.总线宽度

[外链图片转存中…(img-gabazyNK-1715568034599)]
[外链图片转存中…(img-8aDWdeer-1715568034599)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值