计组中需要记忆的零散知识点

第一章 计算机系统概述

  1. 程序控制指令:指实现程序跳转之类的指令,包括如下:
    • 转移指令
      • 有条件转移指令
      • 无条件转移指令
    • 循环控制指令
    • 调用和返回指令
    • 中断指令
  2. 计算机硬件能直接执行的,只有机器语言程序
  3. 编译(编译器):将高级语言源程序转换为机器级目标代码文件的程序(即生成汇编代码文件)
    汇编(汇编器):将汇编代码转换为机器可以执行的指令
    具体见此篇

第二章 数据的表示和运算

  1. ALU的运算数、运算结果位数与计算机的机器字长相同
  2. ALU图示:如下图,上面产生的几个标志位(ZF/OF/SF/CF)用于表示本次运算结果的特征,通常会被送入PSW程序状态字寄存器(又称为标志寄存器FR)。Cin是进位输入信号、Cout是进位输出信号(类似于带标志位的加法器)。若ALU支持k种功能(算术运算如加减乘除,逻辑运算如与或非移位,其他如求补码),则控制信号位数 m ≥ ⌈ l o g 2 k ⌉ m\ge \lceil log_2k \rceil mlog2k
    请添加图片描述
    • OF(Overflow Flag):带符号数加减有效,判断是否溢出
    • SF(Sign Flag):带符号数加减有效
    • ZF(Zero Flag)
    • CF(Carry Flag):无符号数加减有效,判断是否溢出
  3. 补码加减运算电路:
    请添加图片描述
  4. 加减运算:1)定点数的加减运算(无符号数、补码的加减运算,里面的溢出判断很重要);2)加减运算电路(补码加减运算器,里面的标志位很重要);3)乘除运算(乘除运算基本原理、乘除电路基本结构)。然后就是三个零星知识点:4)零扩展、符号扩展;5)C语言中的整数类型及类型转换;6)数据的存储和排列
  5. 双符号位补码称为模4补码(又称变形补码),单符号位补码称为模2补码
  6. C语言中定点整数是用补码存储的,因此当强制类型转换–短整数变长整数时,符号扩展时若第一位是1,则在前面补1.
  7. 关于浮点数的溢出:
    在这里插入图片描述
  8. 移位运算的溢出:(只有左移才可能会发生溢出,右移则可能是损失精度)
    • 逻辑移位:对于无符号整数应采用逻辑移位,左右移都是补0。左移时若最高位移出的是1则发生溢出
    • 算术移位:带符号整数都用补码表示,应采用算术移位。若移出的高位(左移时)不同于移位后的符号位,即在左移前后符号位不同,则发生溢出
      • 这个不同于做题时自己手动算术移位。这里是机器中将左移前的最高位移到符号位,因此才会根据“左移前后符号位”相不相同来判断。其实就是看移动前,符号位和最高位是否一致,不一致就会溢出。
  9. 已知 [ X ] 补 [X]_补 [X] [ − X ] 补 [-X]_补 [X]:连同符号位一起取反再+1
  10. 在计算机中,通常用来表示主存地址的是无符号数。这是因为主存地址都是正数,无需用机器数来表示。
  11. 机器数:通常将在计算机内部编码表示后的数称为机器数,机器数真正的值(即现实世界中带有正负号的数)称为机器数的真值。机器数X有n位,其中第一位是数的符号,后n-1位是数值部分。数值数据在计算机内部的编码问题,实际上就是机器数X的各位取值与真值的关系问题
  12. 在串行进位的并行加法器中,影响加法器运算速度的因素有“门电路的级延迟”、“元器件速度”、“进位传递延迟”、“各位加法器的速度”等,其中,最关键的因素是:“进位传递延迟”
  13. 对于模4补码,每个模4补码存储时只需要一个符号位,而在算术逻辑部件中(即计算时)为两个符号位
  14. 数据按边界对齐的含义:起始地址能被自身长度整除。如按字节编址下,int型变量的起始地址应该为4的倍数
  15. 低类型向高类型转换的过程,能够保留精度,避免溢出(char->int->long->double)
  16. 左规可能需要进行多次,右规最多只要一次
  17. 采用规格化的浮点数最主要是为了增加数据的表示精度
  18. 对于不同基数,规格化的浮点数应满足:
    请添加图片描述
  19. 定点数运算时不需要舍入;尾数右移才需要舍入(右规或对阶时)
  20. 右规和尾数舍入都可能引起阶码上溢
  21. 加法器是弱鸡版的ALU:ALU可以实现加减乘除等等,加法器只能实现加法
  22. 与非规格化浮点数相比,采用规格化浮点数可以增加表示精度(通过提高尾数位数的有效利用率)。运算速度需要靠硬件提升,表示范围要靠增加阶码位数来扩大,扩大表示范围可以在一定程度上防止运算时溢出
  23. 原码规格化后,尾数最高位为1;补码规格化后,尾数最高位与符号位相异。规格化的目的是使尾数能表示的有效位数尽可能多。
  24. 对于IEEE754单精度浮点数加减运算,只要对阶时得到的两个阶码之差的绝对值大于等于25,就无须继续进行后续处理,此时运算结果直接取阶大的那个数。
    若两个阶码之差绝对值为24,则说明阶小的那个数的尾数右移24位,进行尾数加减运算时,虽然其结果的前24位直接取阶大的那个数的相应位,但是可以保留附加位,阶小的那个数右移后的尾数可能会在舍入时向前面一位进1;若阶差为25,附加位左边第一位一定是0,采用就近舍入时附加位会被丢弃,因此是25
  25. 浮点数的表示范围和精度取决于阶码的位数和尾数的位数,越多越大
  26. 移码和补码的表示范围一样
  27. 两种位扩展
    • 0扩展:用于无符号数,只要在短的无符号数前面添加足够的0即可
    • 符号扩展:用于补码表示的带符号整数。通过在短的带符号整数前面添加足够多的符号位来扩展

第三章 存储系统

  1. 虚拟存储器是靠软硬件结合实现的,需要硬件进行地址翻译,需要操作系统进行资源的管理和调度。因此“虚拟存储器中主存和辅存之间的数据调动对任何程序员都是透明的”这句话是错误的,系统程序猿是需要涉及到这方面的,而应用程序猿才是不需要考虑这个的
  2. 要提高刷新存储器带宽,可采用以下技术:
    • 采用高速DRAM芯片
    • 采用多体交叉存储结构(可成倍增加带宽)
    • 将内部总线宽度加倍(也可成倍增加带宽)
    • 采用双端口存储器将刷新端口和更新端口分开
  3. 对于低位交叉编址(如四体并行交叉编址器), 1 4 \frac{1}{4} 41个存取周期内整个存储器可向CPU提供一个字的信息,但每个存储体必须经过一整个存取周期才能各自向CPU提供一个字的信息
  4. 对多体结构的存储器选用高位交叉编址,通常起不到提高存储器读写速度的作用,因为它不符合程序运行的局部性原理,一次连续读出彼此地址相差一个存储体容量的4个字的机会太少。因此通常只有一个存储模块在不停忙碌,其他存储模块是空闲的
  5. Cache不命中,一般认为是先从主存中读取数据,然后从主存中调取数据到Cache中
  6. ROM虽然名为只读存储器,但是现代的ROM不一定只读;但是CD-ROM还是一定是只读的
  7. 按字节编址、按字节寻址和按字编址、按字寻址:常见的模式是按字节编址,然后按不同的寻址模式进行寻址(如下图)
    • 按字节编址:每个字节存储单元都有一个地址编号
    • 按字节寻址:给出一个字节地址,可取出长度为一个字节的数据。若某数据长度为4B,则需要给出4个字节地址
    • 按字编址:每个字存储单元对应一个地址编号
    • 按字寻址:给出一个字地址,可以取出长度为一个字的数据(按字节编址的情况下,如下图,0~3为一个字,4~7为一个字…,每个字中最小的字节地址作为字地址
      请添加图片描述
  8. 存储器取数据时,如上图的情况,只能一行一行地取(即一整个字一整个字地取)。如果只是要取一个字节的话,通常也是一次取出一个字,然后再通过移位截取存储字中的一个字节。这个知识点经常出的题是,某个数据并不是从一个字地址开始处开始存储的,而是跨越了两个字地址,比如一个4B的数据,存在2、3、4、5号存储单元中(这里和“对齐”这个概念也密切相关)。这时只能取两次,因此存取时间要注意是两个存取周期。如下图的题
    请添加图片描述
    在这里插入图片描述
  9. 轮流启动和同时启动:
    • 轮流启动:一个存储模块一次读写的位数(存储字)=存储器总线中的数据位数
    • 同时启动: 所有存储模块一次并行读写的总位数=存储器总线中的数据位数
      在这里插入图片描述
    • 这道题的“同时启动”和上面按字寻址、按字节寻址的关系:这里的存储器总线(即数据总线)是32位,即机器字长是32位(存储字长 ≠ \ne =数据总线位数,如按字节编址,存储字长就是8位,但数据总线位数肯定不可能是8位,一般数据总线位数就是机器字长),且说明“一次读32位数据”,就是按字寻址,一次读一整个字,因此也是一行一行地读
  10. 关于Cache的一致性问题(全写法、写回法、写分配法、非写分配法)
    首先要明确的是,这四个概念存在的意义是要解决Cache的一致性问题,而只有CPU进行写操作时才会引发Cache的一致性问题(即写操作可能会导致Cache和主存数据不一致)。因此四者分别对应写命中时和写不命中时的解决方案。
    • 写命中时:
      • 全写法(直写法):同时写Cache和主存
      • 写回法:只写Cache(反正CPU和主存的数据交流实际上只是CPU和Cache的数据交流),等到Cache被替换出去时才通过脏位写回主存
    • 写不命中时:
      • 写分配法:先调块,然后写Cache
      • 非写分配法:直接写主存,不调块
    • 搭配:
      • 全写法搭配非写分配法:因为这二者都需要写主存,会有速度上的问题(溢出啥的),而没有一致性的问题,因此都需要配置一个写缓冲
      • 写回法搭配写分配法:因为这二者都不用写主存,都是写Cache,因此会导致一致性问题(Cache和主存内容不一致),因此其Cache块的标记位都需要设置一个脏位
  11. Cache的各项标记位:
    • 有效位:1位
    • 标记位:整个地址减去后面的块内地址(必有)和组地址(组相联映射才有)
    • 一致性维护位:即脏位,要看写策略是什么。如果是写回法就有一位,如果是全写法就没有这位
    • 替换算法位:根据替换策略
      • FIFO:没有明确说法
      • LRU: l o g 2 ( 路数 ) log_2(路数) log2(路数)(如四路总相联,就是2位;全相联,就是 l o g 2 ( 总行数 ) log_2(总行数) log2(总行数)位)
      • 随机替换算法:不需要这位
      • LFU:不太会考到
  12. 内存条和内存条插槽
    • 整体结构:通过存储器芯片的扩展技术(即字扩展和位扩展),将多个芯片做在一个主存模块(即内存条)上,然后由多个主存模块以及主板或扩充板上的RAM芯片和ROM芯片组成一台计算机所需的主存空间,再通过系统总线和CPU相连
    • 如下图是内存条和内存插槽,可知一个内存条就是由若干芯片组成的
      请添加图片描述
    • n通道:现在的计算机中可以有多条存储器总线同时进行数据传输,支持两条总线同时进行传输的内存条插槽为双通道内存插槽,还有三通道、四通道内存插槽。其总线的传输带宽可以分别提高到单通道的2倍、3倍、4倍。如上图右的内存条插槽就是支持双通道内存条的,相同颜色的可以并行传输(若用户只给电脑配了两个内存条,则应该插在两个相同颜色的内存条插槽上,其传输带宽可以增大一倍)
  13. DRAM的三种刷新方式(分散刷新、集中刷新、异步刷新)中,只有分散刷新没有死时间
    在这里插入图片描述
  14. DRAM(动态半导体存储器)每隔一定时间,需要根据原存内容重新写入一遍。而一次完整的刷新过程只需要占用一个存储周期
    • 因为DRAM的刷新对CPU是透明的(即不需要CPU发出一个命令,然后读一遍、写一遍),其刷新是DRAM内部进行的,因此只需要一个存储周期
  15. 存储系统层次结构示意图如下,数据一般只在相邻两层之间复制传送,而且总是从慢速存储器复制到快速存储器才能被使用。传送的单位是一个定长块,因此需要确定定长块的大小,并在相邻两层间建立块映射关系。
    请添加图片描述
    CPU执行指令时,需要的操作数大部分都来自寄存器。若需要从(向)存储器中取(存)数据时,先访问cache,若不在cache中,则访问主存;若不在主存中,则访问硬盘,此时,操作数从硬盘中读出送到主存,然后从主存送到cache
  16. 多个芯片通过存储器芯片扩展技术,形成一个主存模块(内存条);多个主存模块(内存条)+主板上的RAM和ROM芯片组成一台计算机所需的主存空间。最后再通过系统总线和CPU相连
  17. 内存条插槽就是存储器总线,现在的计算机中可以有多条存储器总线同时进行数据传输,支持两条总线同时进行传输的内存条插槽为双通道内存插槽,还有三通道、四通道内存插槽,其总线的传输带宽可分别提高到单通道的2倍、3倍、4倍
    • x通道就是实现低位交叉的多体存储器(CPU交替访问多个内存条),如“双通道内存”就是低位交叉的二体存储器
      请添加图片描述

第四章 指令系统

  1. 指令系统是一台机器硬件能执行的指令全体,也称指令集。指令系统是指令集体系结构(ISA)中最核心的部分。ISA完整定义了软件和硬件之间的接口,因此是软件可见的部分(软件可见的硬件部分是指汇编语言可看到的硬件,如下图的CPU、主存、IO设备)。凡是ISA规定的内容,汇编(系统)程序猿都能看到
    • 其规定的内容包括:指令格式、指令操作类型、数据类型及格式、操作数的存放方式、程序可访问的寄存器个数位数和编号、存储空间的大小和编址方式、寻址方式、指令执行过程的控制方式、控制和状态寄存器的定义、异常和中断方式、机器工作状态的定义和切换、存储保护方式等
      请添加图片描述
  2. 汇编代码中出现“ebp-4”、“ebp-8”等,很可能是指函数中的某一个局部变量。(ebp是当前函数的栈底)
    “ebp+8”、“ebp+12”等对应上一层函数传递过来的参数。
    在这里插入图片描述
  3. x86CPU中一些常见的寄存器:
    请添加图片描述
  4. CPU内部有ebp和esp两个寄存器,这两个寄存器标记了当前正在执行的函数的栈帧的范围。当发生函数调用时,需要修改ebp和esp,让它们指向新的函数的底部和顶部。而当新的函数执行完毕后,就需要让ebp和esp重新指回它上一层函数的栈帧
  5. mov指令不支持两个操作数都同时来自于主存。若要将一个主存地址中的数复制到另一个主存地址中,只能先从主存地址1复制到寄存器,再从寄存器复制到主存地址2
  6. 函数调用的机器级表示:
    请添加图片描述
  7. CPU中的寄存器分为用户可见与用户不可见两大类:
    • 可见的含义:即可编程。如可在指令中指定使用哪个通用寄存器;可通过转移指令修改PC值;可按位访问PSW中的某一个位
    • 用户可见:
      • 通用寄存器组
      • 程序状态字寄存器PSW(cmp)
      • 程序计数器PC(jmp)
      • 累加寄存器ACC
      • 更多见下表
    • 用户不可见:
      • 指令寄存器IR
      • 暂存寄存器DR
      • 存储器地址寄存器MAR
      • 存储器数据寄存器MDR
    • 汇编语言中可能出现的寄存器列表如下,这代表着这些寄存器都是汇编语言程序猿可见的
      请添加图片描述
  8. 程序浮动是由于进程的调度导致的(一段程序代码从内存调出到外存再由外存调入到内存后其在内存中的地址改变叫程序的浮动);程序的调用(如执行一个程序时跳到另一个程序去执行)一般是由中断实现的;程序的无条件转移和条件转移是采用跳跃寻址方式实现的(一个程序内部),采用相对寻址方式
  9. 小端方式将数据的最低有效字节LSB存放在低地址单元中,即数据的地址就是LSB所在的地址;大端方式将数据的最高有效字节MSB存放在低地址单元中,即数据的地址就是MSB所在的地址
  10. RISC的通用寄存器数量多,CISC的通用寄存器数量少。这是因为:CISC对于可访存指令不加限制,而RISC限制只有Load/Store指令可以访存。因此比如CISC里的乘法指令 就可以直接把需要相乘的数取到寄存器,然后就进行乘法操作,不会过多的占用寄存器;而对RISC来说,无论要实现加法乘法除法,一定都需要用一条指令先把数据从主存读入到某一个寄存器,然后再用一条乘法指令对两个寄存器的值进行相乘。因此若使用RISC,我们作为程序员就也许会长期地占用很多个寄存器
    请添加图片描述
  11. CISC的兼容性更好。很多RISC指令是从原来CISC系统的指令系统中挑选一部分实现的
  12. 每一个函数的栈帧底部,一定存储了它上一层函数的栈帧基址(ebp);一个函数的栈帧顶部,一定是该函数的返回地址。详情见mooc-4.3 程序的机器代码表示、4.4 如何传递参数和返回值

请添加图片描述

第五章 中央处理器

  1. 用“数据通路”和“控制器”来划分CPU:
    • 数据通路:即指令执行过程中数据所经过的路径,以及路径上的部件。主要包含算术逻辑单元ALU、通用寄存器、中断处理逻辑等,要用到:
      • 组合逻辑元件(操作元件):如加法器、ALU、多路选择器、扩展器、状态单元的读操作逻辑等
      • 存储元件(状态元件):如触发器、寄存器、存储器等,用于对指令执行的中间状态或最终结果进行保存
    • 控制器:用来对指令进行译码、生成相应控制信号。数据通路中的数据传送操作都是在控制部件的控制下进行的
      • 硬布线方式实现(硬布线控制器=硬连线控制器=组合逻辑控制器)
      • 微程序设计方式实现
  2. 单周期处理器时钟周期取最复杂指令所用时钟周期,因而远远大于许多指令实际所需执行时间。受时钟周期宽度的影响,单周期处理器的效率低下、性能极差。现代处理器采用流水线执行方式,即多周期处理器
    • 多周期处理器基本思想:将每条指令的执行分成多个大致相等的阶段,每个阶段在一个时钟周期内完成,各阶段最多完成一次访存或一次寄存器读写或一次ALU操作;各阶段的执行结果在下个时钟到来时保存到相应存储单元或稳定地保持在组合逻辑电路中;时钟周期的宽度以最复杂阶段所用时间为准,通常取一次存储器读写的时间
    • 对于单周期处理器,一个周期内要完成一整条指令,每条指令的第一步都是取指并让PC指向下条指令,然后的步骤就包括取数、运算等等。依据在硬布线控制器中学的,先分析每条指令的功能,确定每个元件所需控制信号的取值,然后汇总所有指令涉及的控制信号,生成指令与控制信号之间的关系表,最终根据关系表得到每个控制信号的逻辑表达式,据此设计控制电路。
    • 由于一个时钟周期内,总线上的信号不会改变,因此若采用单总线结构,那么一个时钟周期内只能控制一个部件。而一整条指令若要完成必须依靠多个部件协调工作。所以单周期处理器必须配备多总线结构数据通路,单总线结构搭配的是多周期的处理器设计方案

对于我之前的疑问:“为什么单周期处理器在指令执行过程中控制信号不变呢,一条指令不是会分为多个机器周期吗,每个机器周期都完成一个工作,那么产生的控制信号不应该也是有多个的吗。比如说一条指令的执行有取指周期,会产生读信号;还有执行周期,又会产生其他不同的控制信号。‘单周期处理器在指令执行过程中控制信号不变’这句话该怎么理解呢”
正确解答应该是:对于硬布线控制器来说,其最终电路都是包含节拍信号的,因此不需要根据时间的不同,选择不同的控制信号。而这句话是强调单周期处理器中的每个指令的控制信号通常是在指令开始执行之前就确定的,并在指令执行过程中保持不变。时钟信号到来意味着控制信号的改变,而一个时钟周期内,时钟信号不更新,意味着控制信号不变

  1. PC的值由CPU在执行指令过程中(具体为取指周期末)进行修改
  2. 转移指令时,PC的值不总是被修改为转移指令的目标地址,这是因为条件转移指令下,若不满足条件,PC按照往常一样只会自增
  3. CPU中的通用寄存器可以存放数据和地址
  4. 指令周期的四个周期的访存目的:
    • 取指周期:取指令
    • 间指周期:取有效地址
    • 执行周期:取操作数
    • 中断周期:保存断点
  5. CPU周期=机器周期,一般以内存读取一条指令字的最短时间来定义
  6. “工作脉冲”是控制器的最小时间单位,每个时钟周期有一个工作脉冲(看下面袁书的相关内容,只在早期计算机的介绍中讲了工作脉冲,一个节拍内有一个或多个工作脉冲)
  7. 机器周期、节拍、脉冲:早期计算机通常采用这三级时序对数据通路操作进行定时控制
    • 机器周期(现代计算机中,机器周期的概念已逐渐消失):一个指令周期可分为取指、读操作数、执行、写结果等多个基本工作周期,称为机器周期
    • 节拍(现代计算机中,一个时钟周期就是一个节拍):将一个机器周期再划分为若干节拍,每个动作(如存储器读周期有送主存地址、发送读写命令、取数据等步骤)在一个节拍内完成
    • 工作脉冲:为了产生操作控制信号并使某些操作能在一拍时间内配合工作,常在一个节拍内再设置一个或多个工作脉冲
  8. 采用DMA方式传送数据时,每传送一个数据,就是一次访存,所以就需要占用一个存取周期
  9. PC自增是不需要指令的,但需要CU发出读命令
  10. 取指操作是控制器固有的功能,由硬件完成,不需要在操作码控制下完成
  11. 并不是每个指令周期都包含一个中断响应周期的。如果在这条指令取指~执行的过程中没有中断请求(中断请求在任何时候都可以来,而中断响应只能在中断响应周期进行),那么就不会进入中断响应周期,而是直接进入下一条指令。
  12. 在指令长度相同的情况下,所有指令的取指操作是相同的。假如一条指令比较长,占据了两个存储单元,那么就需要两次访存才能取一条指令,这时就和只需一次访存就能取的指令的取指操作不一样了
  13. CPU的读写控制信号的作用是控制存储器操作的读/写类型,进而控制流入、流出存储器信息的方向,进而决定数据总线上的数据流方向
  14. 数据总线是双向的(CPU -> 内存,内存 -> CPU ),地址总线是单向的(CPU -> 内存)。
  15. 数据通路通常指指令执行过程中数据经过的路径以及路径上的部件。数据通路=电路+部件(组合+时序),并由控制信号进行控制。数据通路包含用于异常事件检测及响应的电路。数据通路中的数据流动路径由控制信号进行控制
  16. 微程序控制器的一大优点就是灵活性好。现代计算机设计的目标就是加快计算机的运算速度,因此“提高微程序的执行速度”也是微指令结构设计所追求的目标。而“缩短微指令的长度”就可以加快微指令的取指速度,也可以减小控制存储器的容量,减少成本。
  17. 控制存储器属于CPU的一部分,由ROM构成,这是因为不能易失,掉电就没了可不行(而其他非易失性存储器相比于ROM来说速度更慢)。而寄存器使用SRAM,主存除了存储操作系统那些的其他部分使用DRAM
  18. 微处理器是微型处理器的简称,用于手机、个人PC等。这里的微是“小”的意思,并不是采用微程序控制器的意思
  19. 水平型微指令的并行性非常好,能够允许多个兼容的微指令同时起作用,能充分利用数据通路的并行结构
  20. 程序状态字寄存器PSW是属于运算器的
  21. 控制器中的寄存器只有IR和PC
  22. 控制单元=控制信号产生电路=操作控制器
  23. 时钟脉冲信号由机器脉冲源发出的脉冲信号经整形和分频后形成。时钟脉冲信号的宽度称为时钟周期。时钟周期以相邻状态单元间组合逻辑电路的最大延迟为基准确定
  24. 主存故障引起的中断是硬件中断(是终止,是硬件检测到的致命错误)
  25. 异常的检测与响应是在执行时,(外)中断的检测与响应是在中断周期
  26. cache缺失不是异常,不需要中断
  27. 内部异常处理后,如果是故障,就会返回到当前指令重新执行;如果是陷入,就会返回到下一条指令;如果是终止,则不会返回。如下图
    请添加图片描述
  28. 主存一般会分为系统区和用户区。若一个用户程序的一条指令尝试强行访问系统区的主存单元,这时候就会出现“存储保护错”,属于异常(与当前指令有关就是异常)
  29. 流水线是以时间并行性为原理的,即多个功能部件在时间上相互错开,轮流重叠执行不同任务的相同部分;与之相对的,空间并行是指资源重复,即多个功能部件共同执行同一任务的不同部分。流水线CPU是一种非常经济而使用的时间并行技术,只需增加少量硬件就可以实现计算机运算速度的成倍增加
  30. 对于流水线处理器,通常流水线的设计原则是:指令流水段个数以最复杂指令所用的功能段个数为准;流水段的长度以最复杂的操作所花时间为准。因此,流水线方式并不能缩短一条指令的执行时间,但是对于整个程序来说,流水线方式可以大大增加指令执行的吞吐率。
  31. 要有利于指令流水线的实现的话,数据和指令在存储器中要“对齐”存放,这样有利于减少访存次数,使所需数据在一个流水段内就能从存储器中得到
  32. RISC一定采用流水线技术,采用流水线技术的不一定是RISC
  33. 超标量流水线通过内置多条流水线来同时执行多个处理器,其实质是以空间(即资源)换时间
  34. 控制相关(控制冲突):当流水线遇到转移指令和其他改变PC值的指令而造成断流时。类似于判断、循环、函数调用、递归等涉及到跳转的会涉及到控制冲突
  35. “加入若干空操作”是一个万金油,控制相关、资源相关、数据相关都可以通过这个来避免
  36. 通过编译器调整指令执行顺序只可以解决部分控制冒险。例如循环语句对应的指令,不管怎么调整指令顺序,都要实现一个跳转,这时就没办法解决
  37. 流水线按序流动时,在RAW、WAR、WAW中,只可能出现RAW相关
  38. 超标量流水线能在一个时钟周期内同时发射多条指令,能结合动态调度技术提高指令执行并行性。其是通过在硬件上配置多个功能部件实现的,而并非是“能缩短流水线功能段的处理时间”
  39. 在流水线中,组合逻辑是用来实现一些规则的,如加减乘除,是不随时间和CPU状态的变化而变化的,如ALU;而时序逻辑主要用于流程控制的,每个阶段结束后给出反馈信号。通过改变标志触发器的内容,从而改变整机的状态
  40. 流水线本身是受到控制器的控制的,因此指令流水线数据通路中也不可能包含生成控制信号的控制部件(即控制器)
  41. 双核是指在CPU上集成两个运算核心,而非主板上有两个CPU。由于是通过设置两个运算核心,所以双核是“空间并行的并行计算”(像流水线那种,一组部件,就是时间上并行的并行计算)
  42. 多核CPU各核心可以有独自的Cache,也可以共享同一个Cache,各核心不一定是完全对称的
  43. 不一定非要多核CPU,单核CPU也可以支持多任务操作系统,这就是并发
  44. 多核处理器属于MIMD结构:每一个核都可以发出指令并进行计算
  45. 向量处理器属于SIMD结构:执行向量操作时,一条指令可以同时对多个数据(组成一个向量)进行运算
  46. 硬件多线程技术是在一个核中处理多个线程
  47. SMP(对称多处理器)中所有处理器共享单一物理地址空间
  48. “按序发射、按序完成”这种指令模式指的是“后一条指令的取指一定在前一条指令之后,后一条指令的完成也一定在前一条指令的之后”。在这种非乱序模式下,所有数据冒险都是写后读数据冒险,
  49. 控制信号的类型:
    • 控制某个部件的输入输出:如PCin、PCout
    • 一条线路的通断:可使用三态门,决定某条线路的通断
    • 多条通路的选择:可使用多路选择器MUX,如控制信号0表示把0号输入端的内容直送到输出端
    • 控制某个多功能部件的具体操作。如ALU的控制信号为二进制串,位数由不同功能的数量决定
  50. PC自增:
    • 直接在PC旁边表示“+1”或“PC+1”等,一般指PC带有自增功能,不需要使用ALU完成自增
    • 若无类似标注,一般需要由ALU完成PC自增,常有多路选择器MUX参与,且常将MUX的一个输入端固定为一个数,表示PC+这个数,否则需要占用额外的寄存器来实现PC自增
  51. 相容性微命令:可以并行完成的微命令;互斥性微命令:不允许并行完成的微命令。在字段直接编码方式中,互斥性微命令分在同一段内,相容性微命令分在不同段内。每个字段中一个微周期内至多只有其中一个信号有效(组内互斥、组间相容)
  52. 微指令的格式对比:
微指令的格式特点评价
水平型微指令一条微指令能定义多个可并行的微命令优点:微程序短、执行速度快;缺点:微指令长,编写微程序较麻烦
垂直型微指令一条微指令只能定义一个微命令,由操作码字段规定具体功能优点:微指令短、便于编写;缺点:微程序长,执行速度慢
混合型微指令在垂直型的基础上增加一些不太复杂的并行操作微指令较短,仍便于编写;微程序也不长,执行速度加快
  1. 微指令的编码方式对比(水平型微指令情况下):
    也称为微指令的控制方式,指如何对微指令的控制字段进行编码,以形成控制信号
微指令的编码方式特点评价
直接编码(直接控制)方式在微指令的操作控制字段中,每一位代表一个微操作命令,该位为1表示该控制信号有效优点:简单直观,执行速度快,操作并行性好;缺点:微指令字长过长,n个微命令就要求微指令的操作字段有n位,造成控存容量极大
字段直接编码方式将微指令的控制字段分成若干段,每段经译码后发出控制信号优点:可缩短微指令字长;缺点:要通过译码电路后再发出微命令,因此比直接编码方式慢
字段间接编码方式一个字段的某些微命令需由另一个字段中的某些微命令来解释可进一步缩短微指令字长;缺点:削弱了微指令的并行控制能力,故通常作为字段直接编码方式的一种辅助手段
  1. 硬布线控制器(又称组合逻辑控制器)中,微操作控制信号的形成要根据以下三点:
    • 经指令译码器译码产生的指令信息
    • 时许系统产生的机器周期信号和节拍信号
    • 来自执行单元的反馈信息即标志(也即条件码/状态信息和条件/PSW标志位)
  2. PC决定指令执行顺序; μ P C \mu PC μPC决定微指令执行顺序(当然控制器中也有可能是由上一条微指令的地址码字段指出下一条微指令的地址,因此并不一定采用微指令计数器 μ P C \mu PC μPC
  3. 微程序的执行也是遵循取指、执行这样的步骤,其产生的延迟主要是访存延迟(即从控制存储器读取微指令的时间,远大于硬布线的电路延迟)
  4. 程序状态字寄存器(又称状态条件寄存器/PSW/标志寄存器FR/PWR)属于运算器
  5. 属于控制部件的有:
    • 指令寄存器IR
    • 程序计数器PC
    • 操作控制器/控制单元/控制信号产生电路
      请添加图片描述

第七章 输入/输出系统

  1. 中断服务程序的最后一条指令是“中断返回指令”,本质和“无条件转移”指令一样,都是通过修改PC值来改变程序执行顺序,但不能混为一谈。
  2. 中断响应的优先级(访管、I/O、硬件相关的优先级都高):
    • 访管>程序性>重新启动
    • 硬件故障>其他
    • 非屏蔽中断>可屏蔽中断
    • DMA请求>I/O传送请求(即DMA>中断)
      • DMA请求>不可屏蔽中断>可屏蔽中断
    • 高速设备>低速设备
    • 输入设备>输出设备
    • 实时设备>普通设备
  3. 程序性中断:其他程序想要占用CPU资源,所引起的中断
  4. 在这里插入图片描述
  5. 程序控制方式:即用软件的方式实现的。如在主机和外设的信息传送中,DMA(直接存储器存取)就不是一种程序控制方式;而直接程序传送(即程序查询方式)、程序中断、通道控制都是程序控制方式
    • 中断I/O方式下,数据传送通过软件完成(因为是中断处理程序进行处理);DMA方式下数据传送由硬件完成
  6. 中断I/O方式请求的是CPU处理时间;DMA方式请求的是总线使用权
  7. 中断响应发生在一条指令执行结束后,DMA响应发生在一个总线事务完成后
  8. 在DMA方式下,所说的“在主存和I/O设备之间建立一条直接的数据通路,使得数据在主存和I/O设备之间直接进行传送”,其含义并不是说在主存和I/O之间建立一条物理直接通路,而是主存和I/O设备之间通过I/O设备接口、系统总线以及总线桥接部件等相连接,建立起一个信息可以相互通达的道路。在逻辑上看成是直接相连的,实际上其“直接”是相对于要通过CPU才能和主存相连这种方式而言的
  9. 挂接在总线上的多个部件,只能分时地向总线发送数据,而多个部件可以同时从总线接收数据
  10. 在底层I/O软件中,可以将控制命令送到控制寄存器来启动外设工作;
    CPU对外设的控制命令也是通过数据线传送的,一般将其送到I/O接口的控制寄存器;
    对数据缓冲寄存器、控制/状态寄存器的访问操作是通过相应的指令来完成的,通常把这类指令成为I/O指令,这些I/O指令只能在操作系统内核的底层I/O软件中使用,因而它们是一种特权指令
  11. 总线上,主设备是总线操作的发起者,从设备是总线操作的对象。
    竟成书里,将从设备描述为“接收数据的设备”是错的,因为可能是主设备通过总线向从设备要数据
  12. 所谓的“应答方式”即异步控制方式,即需要握手应答
  13. 异步总线采用握手的方式进行通信,每次握手的过程完成一次通信,但一次通信往往会交换多位数据
  14. 异步串行通信时,没有同步时钟,也不需要在数据传送中传送同步信号。为了确认被传送的字符,约定字符格式为:1个起始位(低电平)、5~8个数据位(如ASCII码为7位)、1个奇偶校验位(检错用)、1或1.5或2个终止位(高电平)。起始位至终止位构成一帧,两帧之间的间隔可以是任意长度的
  15. 同步通信中,时钟信号通常由CPU的总线控制部件发出,送到总线上的所有部件;也可以由每个部件各自的时序发生器发出,但必须由总线控制部件发出的时钟信号对它们进行同步
  16. 字符型设备的基本特征是不可寻址,即不能指定输入或输出的地址。如,打印机、键盘和显示终端是字符设备,没有输出或输入的地址
  17. 共享设备必须是可寻址的随机访问设备,是一段时间内允许多个进程同时访问的设备(在同一时间内,即对同一时刻,共享设备仍然只允许一个进程访问)。分配共享设备是不会引起进程死锁的
  18. DMA方式与中断I/O方式一样,也是采用“请求-响应”的方式,只是中断I/O方式请求的是处理器的时间,而DMA方式下请求的是总线控制权。
  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值