计组PPT查漏补缺之路

计算机体系结构与计算机组成的区别(开学第一个PPT)

计算机体系结构:

  • 计算机体系结构是指系统中对程序员可见的那些属性,换句话说,就是那些对程序的逻辑执行有直接影响的属性。
  • 体系结构属性的示例包括:指令集、用于表示各类数据类型(例如数字、字符)的位数、输入/输出机制、内存寻址技术等等。

计算机组织:

  • 计算机组织是指实现体系结构规范的操作单元及其相互连接方式。
  • 组织属性包含那些对程序员透明的硬件细节,比如控制信号、计算机与外设之间的接口、所采用的存储技术等等。

示例:

  • 示例1:乘法指令
    • 计算机是否具备乘法指令属于体系结构设计方面的问题。
    • 乘法指令是通过专门的乘法单元来实现,还是利用系统中的加法单元重复操作的机制来实现,则属于组织方面的问题。
  • 示例2:
    • 相同的计算机体系结构可以对应多种不同的计算机组织,最典型的例子就是系列计算机。
    • 计算机体系结构:指计算机系列。
    • 计算机组织:指该系列计算机中的不同机型。

比较:计算机体系结构侧重于从程序员可见以及影响程序逻辑执行的角度去描述系统应具备的属性,更偏向于逻辑和功能层面;而计算机组织聚焦于实现体系结构规范的具体操作单元及其相互连接等硬件细节方面,是对体系结构在硬件实现上的细化描述,对程序员来说通常是不可见、透明的部分。二者相互关联,体系结构是组织的顶层设计和规范要求,组织则是实现体系结构的具体硬件形式体现。

关于Chater1

Chapter 1 Basic Structure of Computers | Totoroの旅 (totorocatcat.top)

ALU和Control Unit共同组成了处理器,这是我之前所不知道的事情。

程序计数器指向的是即将执行的下一条指令的内存地址。

指令寄存器保存的是当前正在执行的指令的内容。

之前PPT有一道题少做了。

  1. 第一代计算机
    • 答案:D(真空管)
  2. 第二代计算机
    • 答案:C(晶体管)
  3. 第三代计算机
    • 答案:A(集成电路)

关于Chater9

Chapter 9 Arithmetic(1) | Totoroの旅 (totorocatcat.top)

Chapter 9 Arithmetic(2) | Totoroの旅 (totorocatcat.top)

Chapter 9 Arithmetic(3) | Totoroの旅 (totorocatcat.top)

Chapter 9 Arithmetic(4) | Totoroの旅 (totorocatcat.top)

Chapter 9 Arithmetic(5) | Totoroの旅 (totorocatcat.top)

Chapter 9 Arithmetic(6) | Totoroの旅 (totorocatcat.top)

Chapter 9 Arithmetic(7) | Totoroの旅 (totorocatcat.top)

Chapter 9 Arithmetic(8) | Totoroの旅 (totorocatcat.top)

Chapter 9 Arithmetic(9) | Totoroの旅 (totorocatcat.top)

关于延迟,我一直都不是很清楚:

注意Ripple Carry Adder的延迟:

不需要解释很多,图片能够传达的又何必文字呢

image-20241206130654915
image-20241206130625625

关于Carry-Lookahead Addition ,真切的通过公式理解到了为什么进位是3,和位是4了。

image-20241206131333503
image-20241206131937287

注意Booth是需要向右扩展一位的。

并且在进行Booth的时候,最好向左边扩展几个位

image-20241206135502771
image-20241206135119266

并且需要注意,Booth进行的是算术移位。

有可能考察大题的除了顺序乘法,还有恢复除法。

恢复除法的要点在于移动是一开始就进行的,并且进行的是左移。

同时, 除数是M,被除数是Q,Q需要放在下面。

左移,减法,计算,恢复,0

做移,减法,计算,不用恢复,1

image-20241206142010190
image-20241206141951093

不恢复除法

步骤,左移,如果是0开头就是减法,如果是1开头就是加法。

image-20241206142601516
image-20241206142608908

并且如果最后的余数是负数的话,还需要重新的加上这个数字。

四种考法还是非常固定的,会运用即可。

浮点数的图

image-20241122183507796
image-20241122183653847

注意最大数字和最小数字的表示,注意E所能够表示的范围。

Chater2

Chapter 2 Instruction Set Architecture | Totoroの旅 (totorocatcat.top)

重新理解了一下各种寻址方式,注意间接寻址只有CISC才有。

这里补充几道习题:这一章的内容比较偏向于细节,没有什么好说的,选择题可能会出比较多。

问题

这里需要留下一些编码去表示一些非地址的标志

已知计算机的指令长度为 16 位,其 operand address(操作数地址)为 6 位,设计者需要设计二地址指令、一地址指令和零地址指令,问应如何设计指令格式,并指定每种类型指令可设计的数量。

image-20241206154711414

Chater6

流水线注意都是C,M->C。

Chapter 6 Pipelining(1) | Totoroの旅 (totorocatcat.top)

Chapter 6 Pipelining(2) | Totoroの旅 (totorocatcat.top)

Chater8

Chapter 8 Cache(1) | Totoroの旅 (totorocatcat.top)

Chapter 8 Cache(2) | Totoroの旅 (totorocatcat.top)

Chapter 8 Cache(3) | Totoroの旅 (totorocatcat.top)

Chapter 8 Cache(4) | Totoroの旅 (totorocatcat.top)

Chapter 8 Cache(5) | Totoroの旅 (totorocatcat.top)

Chapter 8 Cache(6) | Totoroの旅 (totorocatcat.top)

Chapter 8 Cache(7) | Totoroの旅 (totorocatcat.top)

Chapter 8 Cache(8) | Totoroの旅 (totorocatcat.top)

Chapter 8 Cache(9) | Totoroの旅 (totorocatcat.top)

  • 内存访问时间是从提供地址到获取有效数据的时间。
  • 内存周期时间是从一次内存访问到下一次内存访问的时间。
  • 它们的关系是: 内存周期时间 = 内存访问时间 + 恢复时间

注意这里的7

image-20241206211840581

因为有8个字,第一个字需要10,后面的7个都只需要1,以及将目标字传递给处理器还需要有一个延迟。

  1. FIFO(First - In - First - Out,先进先出)替换算法
    • 原理
      • FIFO算法基于队列的思想。当缓存(Cache)需要替换一个块(Block)时,它会选择最早进入缓存的块进行替换。就好像是一个排队的过程,先进入缓存的块就像排在队伍前面的人,先被替换出去。
    • 举例
      • 假设缓存有4个块的空间,先后加载了块1、块2、块3、块4。当需要加载新的块(如块5)时,因为块1是最早进入缓存的,所以会将块1替换掉,新的块5就进入了缓存原来块1的位置。
    • 特点
      • 实现简单,易于理解和硬件实现。但是它没有考虑程序的局部性原理,可能会把仍然可能被频繁访问的块替换出去。例如,如果一个程序在循环中频繁访问一个较早加载但仍在使用的数据块,按照FIFO算法,这个块可能会因为它是较早进入缓存的而被替换,导致缓存命中率降低。
  2. Random(随机)替换算法
    • 原理
      • 当缓存需要替换块时,Random算法会在缓存的所有块中随机选择一个进行替换。它没有固定的规则来确定要替换哪个块,完全是随机的选择过程。
    • 举例
      • 同样假设缓存有4个块的空间,存放了块A、块B、块C、块D。当需要替换一个块来加载新块时,可能通过一个随机数生成器或者其他随机选择机制,例如随机选中了块C,那么就将块C替换掉,把新块放入块C原来的位置。
    • 特点
      • 实现也相对简单,不需要记录块进入缓存的顺序或者访问频率等信息。不过,由于其随机性,它可能会替换掉刚刚被访问过或者即将被访问的块,同样可能导致缓存命中率不稳定,在某些情况下缓存性能可能较差。但是在一些简单的缓存系统或者对性能要求不是特别高的场景下,这种简单随机的方式可以作为一种低成本的实现方案。
  3. LFU(Least - Frequently - Used,最不经常使用)替换算法
    • 原理
      • LFU算法是基于块的访问频率来进行替换的。它会记录每个块被访问的次数,当缓存需要替换块时,选择访问频率最低的块进行替换。也就是说,那些在一段时间内被访问次数最少的块会被认为是最不“重要”的,优先被替换出去。
    • 举例
      • 假设缓存中有块X、块Y、块Z,它们的访问次数分别是3次、5次、1次。当需要替换一个块来加载新块时,会选择访问次数最少的块Z进行替换。
    • 特点
      • 考虑了程序访问数据的频率因素,相比FIFO和Random算法,更符合程序的局部性原理中的时间局部性。然而,它需要额外的硬件或者软件来记录每个块的访问次数,这会增加一定的复杂度和存储开销。并且在某些情况下,比如当一个块在过去访问频率很低,但在未来可能会频繁访问时,LFU可能会过早地将其替换掉。
  4. LRU(Least - Recently - Used,最近最少使用)替换算法
    • 原理
      • LRU算法是基于块的最近使用时间来进行替换的。它会记录每个块最后一次被访问的时间,当缓存需要替换块时,选择最久没有被访问的块进行替换。简单来说,就是如果一个块在缓存中很久没有被访问了,就认为它是最有可能可以被替换的。
    • 举例
      • 假设缓存中有块M、块N、块O,块M刚刚被访问过,块N是在一段时间之前访问的,块O是最早访问的且之后一直没再被访问。当需要替换一个块时,就会选择块O进行替换。
    • 特点
      • 很好地利用了程序的局部性原理,特别是时间局部性。它能够有效地保留最近使用过的块,这些块很可能在不久的将来还会被使用。虽然也需要一定的机制来记录块的最后访问时间,增加了一定的复杂性,但在大多数情况下,能够提供较高的缓存命中率,是一种比较常用的缓存替换算法。

注意小页面的优缺点

优点是碎片少了。

缺点是页表大了,并且传输速率慢了。

磁盘要注意双面。

Chapter 3 Basic Input/Output

注意两种IO的区别,其他应该部会考察。

Chapter 3 Basic Input/Output(1) | Totoroの旅 (totorocatcat.top)

Chapter 3 Basic Input/Output(2) | Totoroの旅 (totorocatcat.top)

Chapter 3 Basic Input/Output(3) | Totoroの旅 (totorocatcat.top)

Chapter 3 Basic Input/Output(4) | Totoroの旅 (totorocatcat.top)

Chapter 3 Basic Input/Output(5) | Totoroの旅 (totorocatcat.top)

Chapter 5 Basic Processing Unit

Chapter 5 Basic Processing Unit | Totoro の旅 (totorocatcat.top)

这里还是说明一下内存访问指令:

Load R5, X(R7)

取指,解码(读取R7),计算有效地址,然后读取操作数(内存读写),之后存入寄存器。

Add R3, R4, R5

取指,解码(R3,R4),计算和,不需要进行内存读写,然后存入寄存器。

Store R6, X(R8)

取指,解码(读取R6,R8),然后存储,之后没有操作,因为不用存入寄存器。

这五条指令都十分重要,有助于理解流水线那里。

  1. 取指:取出指令并递增程序计数器(PC)。
  2. 解码:解码指令并从寄存器文件中读取所需的寄存器。
  3. 执行 ALU 操作:执行算术逻辑单元(ALU)操作。
  4. 读写内存:如果指令涉及内存操作数,则进行内存的数据读写。
  5. 写回结果:如果需要,将结果写入目标寄存器。