南邮 计算机组成考试笔记

一、计算机组成与性能的相关知识与计算


  1. 计算机五大组成部件 冯诺依曼体系

    控制器,运算器,存储器,输入设备,输出设备

  2. 9个影响性能的指标

    吞吐量:

    表征一台计算机在某一时间间隔内能够处理的信息量,单位是字节/秒(B/s)。

    响应时间:

    表征从输入有效到系统产生响应之间的时间度量,用时间单位来度量,例如微秒(10-6s)、纳秒(10-9s)。

    利用率:

    在给定的时间间隔内,系统被实际使用的时间所占的比率,一般用百分比表示。

    处理机字长:

    指处理机运算器中一次能够完成二进制数运算的位数,决定了寄存器和数据总线的位数。当前处理机的字长有8位、16位、32位、64位。字长越长,包含的信息量越多,精度越高,硬件成本也越高

    总线宽度:

    一般指CPU中运算器与存储器之间进行互连的内部总线二进制位数。

    存储容量:

    存储器中所有存储单元的总数目,通常用KB、MB、GB、TB来表示。其中K=210,M=220,G=230,T=240,B=8位(1个字节)。存储器容量越大,记忆的二进制数越多。有内存容量和辅存容量两种指标。存储容量越大,能存储的信息就越多。
    1KB=1024B,1MB=1024KB,
    1GB=1024MB,1TB=1024GB

    存储器带宽:

    存储器的速度指标,单位时间内从存储器读出的二进制数信息量,一般用字节数/秒表示。

    主频/时钟周期:

    CPU的工作节拍受主时钟控制,主时钟不断产生固定频率的时钟,主时钟的频率(f)叫CPU的主频。度量单位是MHz、GHz。
    例如Pentium系列机为60MHz~266MHz,而Pentium 4升至3.6GHz。
      主频的倒数称为CPU时钟周期(T),即T=1/f,度量单位是微秒s 、纳秒ns。

    CPU执行时间:

    表示CPU执行一段程序所占用的CPU时间,可用下式计算:
    CPU执行时间 = CPU时钟周期数 × CPU时钟周期长(T)

  3. 相关计算题

二、基本运算


  1. 校验码
    1. 奇偶校验
    2. 海明校验
    3. crc校验
  2. 数制码制
  3. 浮点数
    1. 基本表示
    2. IEEE745标准

三、运算器


  1. 机器码

    原码:本身,最高位为符号位,其余位8421

    反码:正数不变,负数除符号位外都按位取反

    补码:正数补码位本身,负数补码计算:反码加1

    移码:补码符号位取反即可

  2. 溢出判断

    双符号位异或
    高位与次高位进位异或

  3. 一位全加器 n位行波进位加减器

  4. 一位乘原理

四、CPU子系统


  • CPU基本结构

    主存(外部) - 数据通路 - 缓存部件 - 寄存器 - 运算器

    时序部件 - 控制器 - 控制通路 - 主存

    (以上仅代表部分组件之间的关系)

    在这里插入图片描述

  • 主要部件

    1. 运算器 ALU

      74181 (算术逻辑单元)+ 74182(先行进位发生器)

      例子:

      4 * 74181 + 1 * 74182 → 16位先行进位加法器

      8 * 74181 + 2 * 74182 → 32位先行进位加法器

    2. 缓存部分

      • 缓存从主存中读取的数据/指令
        1. 主存数据寄存器(MDR):接口,用来保存要被写入地址单元或者从地址单元读入的数据。
        2. 主存地址寄存器(MAR):接口,用来保存数据被传输到的位置的地址或者数据来源位置的地址。
    3. 寄存器

      1. 通用寄存器:全局唯一地址,可直接于机器指令中使用

      2. 暂存器:存储临时数据

      3. 指令寄存器(IR): 仅一个,存放指令代码

      4. 程序计数器(PC):仅一个,保存下一条指令的地址,指明指令再存储器中的存放位置(且取指令完成后,PC保存的地址自动修改该以只想下一条指令的存储单元,修改量取决于指令字长和存储器的编址单位)

      5. 程序状态子寄存器:仅一个,记录程序运行状态与工作模式

        • PSW - 标志位(A S O等)
        • PSW - 编程设定位:运行模式,优先级等
      6. 地址寄存器:存储目标存储单元的地址码

      7. 堆栈指针(SP):仅一个,存储器的堆栈栈顶的地址码

        一个字节8位二进制 对于16位二进制存储 进栈SP-2 出栈SP+2

    4. 控制器

      1. 通过输入时序信号、状态信号与指令代码实现各种控制信号
    5. 时序部件

  • 设计步骤

    16原型机

    拟定指令系统

    确定总体结构

    安排时序

    拟定指令流程

    为命令序列形成控制逻辑

  • 基于MIPS的CPU系统

    • 基础

      1. 基本概念

        指令、指令集

        指令字:表示指令的二进制代码

        指令字长:机器指令中二进制代码的总位数

        机器字长:即寄存器的宽度,机器能够直接处理的二进制数据的位数

      2. 指令类别

        CISC - Complex(复杂指令系统计算机)

        指令数目多,长度不固定,涉及存储器读写,在通用寄存器内使用

        RISC - Reduced(精简指令系统计算机)

        指令数目少,长度固定,一般设计CPU内部寄存器,少量情况读写存储器(存数/ 取数)

      3. MIPS32指令中的寻址方式

        1. 常见寻址方式

          • 立即寻址:

            指令中直接包含操作数(所谓立即数)

          • 直接寻址

            • 内存寻址(绝对寻址)

            • 寄存器寻址:

              直接给出操作数在寄存器内部地址码

          • 间接寻址(一般在CSIC中使用)

          • 基址寻址 I型内存

            与变址寻址类似,不过寄存器内地址为基准地址,形式地址为修改量

            对应I型指令面向内存的操作

            在这里插入图片描述

          • 变址寻址

            指令给出一个寄存器编号与一段形式地址

            操作数地址由寄存器和形式地址字段联合产生

            (其中形式地址为基准地址,寄存器中的地址为地址修改量)

            其中:补充相应立即数符号位扩展

            在这里插入图片描述

          • PC 相对寻址: I型转移

            指令给出偏移量:PC当前值与偏移量相加得到有效地址(特殊基址寻址)有效相对于PC值浮动

            详细见 I 型指令条件分支相关指令

            在这里插入图片描述

          • 伪直接寻址(内存) J型

            也称页面寻址:PC高四位(31 ~ 28)与指令中adress字段(J型指令,26位地址,左移两位成为28位)组合产生内存有效地址(32位)

        2. MIPS中通过操作码+代码进行隐性约定寻址方式

    • MIPS32指令格式

      1. RISC (算术运算只能在寄存器中执行)

         取数(lw)将数据从内存复制到寄存器
        
         存数(sw)将数据从寄存器复制到内存
        

        指令字长:32

        寄存器个数:32

        (32 x 32-bitMIPS: 32个32-bit(寄存器宽度)的寄存器)

        在这里插入图片描述

        MIPS:大端模式,即字的最高字节(书写习惯中右低左高)在最低地址(值对应高低)

      2. 指令

        • R(Register)型指令

          1. 字段解释

            op:操作码(R型指令中所有操作码都为0)

            rs:寄存器编号,对应第一个操作数

            rt:寄存器编号,对应第二个操作数

            rd:寄存器编号,对应第三个操作数

            shamt:常数,用于移位指令

            func:功能码,指定指令的具体功能

          2. 指令表

            在这里插入图片描述

          3. 指令类型

            add / sub / and /or /xor (运算)

            $ rs op $ rt → $ rd

            sll / srl / sra(移位)

            $ rt shift shamrt → $rd

            jr (跳转)

            $ rs → PC

        • I (Immediate)型指令

          1. 字段解释

            op:标示指令的操作功能

            rs:第一个源操作数,为寄存器操作数

            rt:目标寄存器编号,用于保存结果

            imm:第二个源操作数,立即数

          2. 指令表

            在这里插入图片描述

          3. 指令类型

            addi / andi / ori / xori (运算)

            $ rs op E(imm) → $ rt # 注意立即数的带符号拓展与无符号拓展,分别对应数值与逻辑运算

            lw / sw (面向内存)

            lw : mem[ $ rs + E(imm) ] → & rt

            sw : $ rt → mem[ $ rs + E(imm) ]

            lui(数位设置)

            im << 16 → $ rt

            (空位补零)

            beq / bne (条件分支)

            beq PC + E(imm)<<2 → PC # if ( $ rs == $ rt )

            bne PC +E(imm)<<2 → PC # if ( $ rs ≠ $ rt )

            tips:这里E为带符号扩展为32位,然后再对立即数左移2位

        • J(Jump)型指令

          1. 字段解释

            op:确定指令功能

            address:转移目标地址的偏移量(该指令用于)

          2. 指令表

            在这里插入图片描述

          3. 指令类型

      3. 寻址方式

        • R型指令由 op func 字段共同隐含说明当前寻址方式
        • I J 型指令由 op 字段隐含说明当前寻址方式
        • 见上边基本里
      4. MIPS汇编代码

        • 代码

          一般用 t 0 , t0, t0,s0的形式表示寄存器,其中 t 0 表 示 作 为 临 时 值 存 放 , t0表示作为临时值存放, t0s0用于保存变量

          寄存器操作数实例:

          f = ( g + h ) - ( i + j )

          add $t0 , $s1 , $s2

          add $t1 , $s3 , $s4

          sub $s0 , $t0 , $t1

          包含立即数的运算

          addi $s3 , $s3 , 4 # 无负常数

          对内存操作

          lw t 0 , 32 ( t0 , 32( t0,32(s1) # 32为偏移地址,$s1为基址寄存器 load word

          sw t 0 , 48 ( t0 , 48( t0,48(s2) #同上 save word

          → 对于寄存器内移动数据操作

          addi $s1 , $s2 , 0 # 某数加0移动到指定位置

          add $t2 , $s1 , $zero # mips32将该zero寄存器置为0,为硬连接

    • 自行设计指令系统格式

      操作码+寻址码+寄存器地址码+内存码+偏移量

      • 操作码 n位操作码支持不大于2^n种操作
      • 寻址码 n位支持不大于2^n种操作
      • 寄存器地址码:取决于系统CPU寄存器的数目
      • 内存码:取决于内存大小
      • 偏移量:n位偏移量支持 -2^(n-1) ~ 2^(n-1)-1
    • 指令周期特性

      1. 单周期CPU 与 多周期CPU ———- MIPS32 - 单周期CPU

      2. 单周期CPU - 指令固定在一个时钟周期完成(中间不可能保存中间量) CPI=1

        时间效率低,时钟宽度由单指令最长时间决定(导致CPU主频低,效率低)

        指令周期内,功能部件不能共享,冗余度大(所有功能一个时钟周期完成,中间量不能保存,显然)

      3. 多周期CPU - 指令分散在多个时钟周期内完成

        时间效率高,时钟宽度由单步操作最长时间决定

      不同时钟周期,不见可共享,冗余度降低

      1. 时序信号:

        指令周期 > 工作周期(机器周期) > 节拍周期(CPU时钟周期)

        指令周期:

        是取出并执行一条指令所需的全部时间

        一般包括取指周期,间址周期,执行周期,中断周期

        机器周期:

        所有指令执行过程中的一个基准时间

        通常用内存中读取一个指令字的最短时间规定

        时钟周期

        控制计算机操作的最小单位时间

        由CPU主频决定

      2. 指令中周期的含义

        FT取指周期

        ST源周期

        从主存中读取源操作数,将依据指令寄存器IR的源地址字段信息进行操作,形式源地址,读取源操作数,

        DT目标周期

        从主存中读取目的地址或目的操作数,将依据指令寄存器IR的目的地址字段信息进行操作,计算转移地址等

        ET执行周期

        据IR中的操作码执行相应操作,实现操作码要求的传送,计算操作

        MT

        内存读写时间

        RT

        寄存器读写时间

    • 数据通路与控制器设计

      1. CPU执行一条指令的步骤

        (1)取指令

        根据PC指针,从存储器中取出指令,并做PC+4

        (2)分析指令

        根据指令操作码送至控制器分析指令功能,产生相应控制信息

        (3)取操作数

        根据指令寻址方式,与相应操作数字段,选择读取寄存器或存储器或立即数,并送至ALU

        (4)执行指令

        ALU根据控制器产生的控制信号完成相应操作,并保存结果或修改PC

        • 多周期处理器步骤
          1. 取指令
          2. 完成寄存器取数、转移地址计算
          3. 执行运算或分支判断
          4. 存储器(内存)读写
          5. 寄存器堆写回
      2. MIPS数据通路架构设计

        • 数据通路设计步骤

          • 多周期

            指令执行过程按存储单元级的信息传输,细分为多步,每步安排一个时钟周期

            共享硬件简化数据通路

            从R型指令开始整合数据通路

          • 单周期类似

            面向指令功能,逐步扩展整合

        • 取指功能的数据通路(公共)

          • 完成功能

            Mem[ PC ] → IR # 根据程序计数器读取下一指令,并存放到相应指令寄存器

            PC + 4 → PC # PC 指针指向下一条指令地址

          • 数据线布局

            在这里插入图片描述

        • R型运算指令数据通路

          • 数据布线

            在这里插入图片描述

          • 分析:对象为 R型运算指令

            分析指令:首先 由 op 与 func 字段经过译码单元,给运算器发送运算控制信号ALU_OP

            取操作数:寄存器堆的两个输入地址与指令对应字段相连接,读出数据后,进入ALU

            执行指令:ALU产生相应结果,而对于寄存器堆的写入,写入地址端与指令对应寄存器地址连接,数据段与ALU输出相连,写入使能端由译码单元控制,等待时钟信号,写入数据,完成操作

          • 能完成R型算数与逻辑运算

          • 信息传送过程

            1. Mem[PC] → IR , PC +4 → PC
            2. Reg[rs] → A , Reg[rt] → B
            3. A op B → F (ALU OUT)
            4. F → Reg[rd]
        • R型上拓展I型指令

          • lw指令

            • 完成操作:

              基址寻址方式产生内存地址(未实现)

              对内存的访问(加入数据存储器线路)

              对对应寄存器地址访问(已实现)

            • 数据布局

              在这里插入图片描述

            • 信息传送过程

              1. Mem[PC] → IR , PC +4 → PC
              2. Reg[rs] → A #基址
              3. A + E[offset] → F
              4. Mem[F] → MDR
              5. MDR → Reg[rt]
          • sw指令

            • 完成操作

              基址寻址产生内存地址(完成)

              读取对应寄存器内数据并输出到相应内存(未完成)

            • 数据线布局

              在这里插入图片描述

            • 信息传送过程

              1. Mem[PC] → IR , PC +4 → PC
              2. Reg[rs] → A , Reg[rt] → B
              3. A + E[offset] → F
              4. B → Mem[F]
          • 立即数运算

            由于之路中存在imm的符号拓展,则可以实现

            信号传送过程

            1. Mem[PC] → IR , PC +4 → PC
            2. Reg[rs] → A
            3. A op E[imm] → F
            4. F → Reg[rt]
        • I型分支指令

          • beq 指令(相等跳转)

            beq rs rt imm

            • 解释

              if( rs == rt )

              then PC + 4 + E( imm )<<2 → PC #PC 相对寻址

              else PC +4 → PC

            • 操作解释

              rs rt寄存器数据进入ALU 进行减法运算,输出zero标志位表示是否相等,是否跳转,且zero信号 进入译码控制单元控制接下来的操作(未实现)

              imm字段需要拓展并左移两位形成偏移地址量(未完成)

              PC 指针的更新(未完成)

            • 数据线布局

              在这里插入图片描述

            • 信息传送过程

              1. Mem[PC] → IR , PC +4 → PC
              2. Reg[rs] → A ,Reg[rd] → B , A - B → zero ; PC +4 + (E(imm) << 2) → F
              3. if zero == 0 , F → PC ; if zero == 1 , PC + 4 → PC
        • J型指令

          • 完成操作 - 页面寻址

            地址位左移两位

            地址拼接器

          • 数据线布局

            在这里插入图片描述

          • 信息传送过程

            1. Mem[PC] → IR , PC +4 → PC
            2. PC[31:28] U (add << 2) → PC
        • 总体布局整合

          引入 MUX 实现数据通路的合并

          在这里插入图片描述

      3. 基本控制单元设计思路 ————— MIPS32组合逻辑

        • 分析指令相应字段产生不同操作的控制信号(微命令,也就是数电领域的各种控制信号)

        • 怎样产生控制信号,有两种结构

          • 组合逻辑硬连线

            步骤:由组合逻辑电路产生微命令序列

            思路:

            整理指令控制信号

            整理控制信号级的真值表

            把表达式转换成组合逻辑电路

            特点:控制信号产生速度块,设计不规整,不容易修改该或扩展

            • 单周期控制信号分析
              • 控制信号分析(一共九个)

                • MUX控制信号

                  PCSrc → 控制 PC 浮动方式

                  直接+4

                  I型分支,PC相对寻址

                  J型跳转指令,页面寻址(移位拼接)

                  Regdst → 控制 写入操作的目标寄存器的地址

                  区分 R 与 I 型指令

                  AluSrc → 控制ALU的一端数据输入

                  输入端为 imm 的符号拓展结果 →访存

                  或者为寄存器数据 → R与 I 型运算指令

                  Mem2reg → 控制寄存器的写入数据

                  来自ALU → R与 I 型运算指令

                  来自mem → 访存操作

                • 控制信号

                  内存的读写信号:R W

                  寄存器的写信号:Regwrite

                  符号拓展器信号:extend ,区分带符号拓展与无符号拓展

                  ALU运算类型控制信号:operation

                • 架构

                  在这里插入图片描述

                • 表格

                  在这里插入图片描述

              • 控制信号结构实现

          • 微程序,基于存储(只适用于多周期CPU)

            • 基础部分

              1. 步骤:由微程序生成微指令,微指令生成微命令序列

                微指令组成:微命令字段+辅助字段+顺序控制字段

                1. 微命令字段:数据选择器的一些控制信号
                2. 辅助字段:微地址字段
                3. 顺序控制字段:标识下一条微指令的地址形成方式

                微指令操作控制编码方式:

                直接编码方式:速度快,但控存容量极大

                字段直接编码方式:缩短了微指令的长度,但是增加了译码电路,使执行速度减慢

                字段间接编码方式:进一步缩短指令字长,但削弱了微指令的并行控制能力

                混合编码方式:综合考虑微指令的字长、灵活性、执行速度等方面的要求

                常数字段方式:来提供常数、计数器初值等

              2. 详细解释:

                一条机器指令所完成的操作划分成若干条微指令来完成(若干条微指令序列即为微程序),由微指令进行解释和执行。

                指令→微指令→微命令

              3. 特点:产生速度慢,可靠性高,灵活性强,维护性好,结构规整,有利于自动化

                在这里插入图片描述

            • 多周期mips控制信号分析

              • 架构图

                在这里插入图片描述

              • 控制信号分析

                类似于单周期控制信号

        • 引入分级控制 简化控制器设计难度

          主控单元→部分简单控制信号

          主控单元→中间信号→下级控制器→复杂控制信号

        • 具体实现

          以MIPS32组合逻辑为例,类似数电设计组合逻辑电路,通过输入输出的真值表设计电路布局

    • CPU硬连线模式样例与指令执行分析

      • 16位

        在这里插入图片描述

        • 指令操作流程
          1. 指令信息

            M → DB → IR

          2. 地址信息(相对于指令)

            PC → A → ALU → 移位器 → 内总线 → MAR

            PC → A → ALU( + CO) → 移位器 → 内总线 → PC (PC + 1)

            取指周期(FT)

            M → IR

            PC +1 → PC

          3. 转移地址

            R0 → B → ALU → 移位器 → 内总线 → PC (寄存器寻址)

            R0 → B → ALU → 移位器 → 内总线 → MAR → AB →DB → MDR →B → ALU → 移位器 → 内总线 → PC (寄存器间接寻址,寻内存)

          4. 操作数地址

            R0 → B → ALU → 移、内 → MAR(寄存器间接寻址)

            变址基址

            PC → A → ALU → 移位器 → 内总线 →MAR → AB → M

            M → DB → MDR → B → ALU → 移位器 → 内总线→ C

            R1 + C → A + B →ALU → 移位器 → 内总线 →MAR

          5. 数据信号

            R → R

            R0 →B → ALU → 移位器 → 内总线 → R1

            R → M

            R0 → B → ALU → 移位器 → 内总线 →MDR → DB → M

            M → R

            M → DB → MDR → R1 → ALU → 移位器 → 内总线 →RX

            M → M

            M → DB → MDR → R1 → ALU → 移位器 → 内总线 → RX → ALU → 移位器 → 内总线 → MDR → DB → M

            R → IO

            R0 → ALU → 移位器 → 内总线 → MDR → DB → IO

            IO → R

            IO → DB → MDR → RI → ALU → 移位器 → 内总线 → RX

            IO → M

            IO → DB → M

      • 32位(MIPS32)

        在这里插入图片描述

    • 性能相关问题

      • 提高性能的方法

        针对存储器

        采用Cache - 主存层次的设计与管理提高整机的速度

        采用内存 - 虚存层次的设计与管理提高整机的速度

        采用多体并行设计方法提高访问速度

        针对控制器

        采用指令流水提高整机的速度

        采用超标量设计技术提高整机的速度

        采用多核技术提高整机的速度

        针对运算器

        采用对于运算方法的改进,比如进位链与两位乘除法

        针对IO系统

        采用DMA技术,减少CPU对外设访问的干预

      • 流水技术

        1. 基本概念
          • 含义:

            把指令分解为若干子过程,每个子过程都可与其他子过程重叠执行

          • 特点:

            1. 流水线的子过程称为流水线的 级 或 段,子过程的数目为流水线的 流水深度m

            2. 每个字过程由专用的功能段实现,各功能段的时间应基本相等,通常为一个时钟周期 T

            3. 流水线需要一定的通过时间才能稳定(完成工作)

              即无空闲功能段 且 t(稳定) = T x m

            4. 适合于大量相同指令的执行

        2. 基本类型
        3. 性能指标
          • 吞吐率

            单位时间内处理的任务数或数据量

          • 加速比

            同一任务,非流水处理与流水处理执行的时间比

          • 利用率(流水线内各部件的平均利用率)

            部件实际工作时间 与 部件总利用时间的比值

      • SMT与超线程(HT)

        1. SMT基本概念

          即CPU能执行来自多个线程的指令(同步多线程)

        2. HT超线程就是一种典型SMT

          在一颗CPU上同时硬件级的并行执行多个程序的指令

        3. 例子

          Intel2002的HT首先用于 Xeon(至强)处理器

      • 多核技术

        1. 基本概念

          一个处理器芯片上集成多个CPU内核

        2. 例子

          国内首款

          龙芯3A (2009,原生4核)

          FT-1000/1500 (2013,16核)

五、存储结构


  • 基本层次结构概念

    1. 层次结构

      Cache(CPU内) < - >主存(内存) < - > 外存

    2. Cache(高速缓冲存储器)

      存储CPU在当前一段时间内多次使用的程序和数据,以缓解CPU与主存的速度差异

      速度非常快,容量非常小

    3. 主存(内存)

      主要存放CPU当前使用的指令与数据(指令从外存读入内存等待CPU缓存器调用)

      能随机访问:任意访问且时间与地址码无关

      工作速度快,有足够存储容量

    4. 外存(辅存)

      存放大量后备程序与数据

      速度较慢,容量较大

  • 存储设备

    • 半导体存储器

      • ROM(只读)

        (1)掩膜ROM,利用掩膜工艺制造,一旦做好,不能更改,因此只适合于存储成熟的固定程序和数据。工厂大量生产时,成本很低。
        (2)可编程ROM,简称PROM,由厂商生产出的空白存储器,根据用户需要,利用特殊方法写入程序和数据,但是只能写一次,写入后信息固定的,不能更改。
        (3)光擦除PROM, 简称EPROM,这种存储器编写后,如果需要擦出可用紫外线灯制造的擦除器照射20分钟左右,使存储器复原用户可再编程。
        (4) 电擦除PROM, 简称EEPROM, 顾名思义可以通过电来进行擦除,这种存储器的特点是能以字节为单位擦除和改写,而且不需要把芯片拔下插入编程器编程,在用户系统即可进行。
        (5)Flash Memory, 简称闪存。它是非易失性存储器,在电源关闭后仍能保持片内信息,与EEPROM相比,闪存存储器具有成本低密度大的优点。

      • RAM(随机读写)

        (1)双极型:其特点是存取速度快,采用晶体管触发器作为基本存储电路,管子较多,功耗大,成本高,主要用于高速缓存存储器Cache

        (2)MOS型:其特点是功耗低,密度大,故大多采用这种存储器,它又分为两种:

        静态RAM(SRAM)

        存储原理是用双稳态触发器来做存储电路,状态稳定,但是掉电后信号会丢失,优点是不用刷新,缺点是集成度低。(cache)

        动态RAM(DRAM)

        存储原理是用电容器来做存储电路,优点是电路简单,集成度高,缺点是由于电容会漏电需要不停的刷新。(主存)

    • 磁盘存储器

      1. 基本结构

        盘片 (一般双面读写)→ 盘组 → 磁盘阵列(raid)

        在这里插入图片描述

        三个盘片,每个盘片对应两个面即共有六个盘面,通过磁头与盘面交互完成读写操作

      2. 技术指标与校验(计算)

        1. 记录密度

          磁道密度:盘面上单位径向长度内的磁道数

          位密度:磁道上单位长度可记录的比特数

        2. 存储容量

          格式化容量:通过扇区计算

          → 盘片数量 * 2(单个盘片可操作面数) * 磁道数量 * 扇区数 * 扇区容量

          非格式化容量:通过位密度计算

          → 盘片数量 * 2 * 磁道数量 * 内层磁道周长 * 内层位密度

        3. 速度指标

          平均存取时间:寻道时间+旋转时间

          带宽(数据传输率)

          → 转速 * 扇区数 * 扇区容量

        4. 例子

          在这里插入图片描述

          在这里插入图片描述

  • 计算机三级存储体系详解(基于程序局部性原理)

    • 层次逻辑

      Cache ←→ 内存 ←→ 外存

      程序与数据存放在外存,运行时先导入内存,运行结束后数据又要输入内存

      Cache的集合缓冲区接受内存的预置的指令与数据后执行,完成后又要通过缓冲区写入内存

    • 地址关联(由于数据指令传输产生的地址关联)

      Cache 与 内存(主存)— Cache-主存系统

      以数据块为单位整体操作

      直接映射、全相联映射、组相联映射

      内存 与 外存

      虚拟存储技术 — 主存-虚存系统

      页式、段式、段页式

    • Cache-主存体系

      1. Cache

        • 存在的原因与效果

          ①CPU访问内存数据或指令只局限于主存的一个小区域(热点区)

          ②CPU处理速度与访存速度不一致

          →因此可以将该区域提前预存到一个高速小容量的Cache中,使 得访存平均速度接近于访问Cache速度

        • 存在的特点

          仅依赖硬件系统实现,对用户透明

          集成与CPU内部

      2. Cache - 主存 地址映射

        • 作用:

          这一层面主要解决CPU与主存速度不匹配的问题,主存用来存放将要参与运行的程序和数据。但是其速度与CPU相差很大,为了使得他们之间的速度更好匹配,于是在主存与CPU之间插入了一种比主存更快,容量更小的高速缓冲存储器(Cache),因此只要把近期要使用的信息调入缓存,CPU便可以直接从缓存中获取信息。注意,主存与缓存中的数据调动是由硬件自动完成,对程序员是透明的。

        • 定义与映射类型详解

          • 以固定大小的数据块进行整体调度(交换)

          • 讨论条件

            存储器按字节编址:1 Byte / 地址

            数据块大小 2^9=512 Byte(B)

            Cache容量:8KB( 1024 B = 1 KB ) → 分成16块

            主存容量:1MB( 1024MB = 1 MB ) →分成2048块

          • 直接映射

            1. Cache:只分块,不分组 (分成16块)

              主存:既分块,也分组(每组的块数=Cache的块数)

            2. 映射规则:

              主存的每一个数据块,只能映射到与其组内序号相同的Cache数据块位置

              在这里插入图片描述

              很明显的直接映射,不同组,同样的块序号映射;

              解释一下:

              • 主存地址 → 分组组号+组内块序号+块内字节地址

                主存地址没问题,通过虚拟软件转换为虚拟地址

                分组组号:主存分组,共128组

                组内块序号:每组16块

                块内字节地址:每块512B(字节)

              • 判断位置:

                标记字段:内存分组组号

                缓存判断来源:

                直接看标记字段,也就是分组的组号就可定位每块对应内存的位置

                内存判断是否在缓存

                由于每组每块只能映射到相同的位置,给定主存地址后,找到Cache对应块的地址,比较分组的组号就能确定当前组的该块数据是否在Cache内

          • 全相联映射

            1. Cache:只分块,不分组

              主存:只分块,不分组

            2. 映射规则:主存的任何一个数据块都可以映射到缓存的任何一个数据块位置上

              在这里插入图片描述

              带点随机映射,只能通过标记位判断来源,好鸡肋哦,效率低欸

              解释一下:

              • 主存地址 → 主存块号 + 块内地址

              • 判断位置

                标记位:主存的块号(太长,判断时间长,硬件复杂)

                主存到缓存:随便映射(就离谱)

                缓存到内存:只能通过标记位判断来自那块

          • 组相联映射

            1. Cache:既分块,也分组

              主存:既分块,也分组(组内的块数 = Cache的组数)

            2. 映射规则

              主存数据块,只能映射到与自己组内快序号相同的缓存分组,可占据缓存分组中任意数据块的位置(假设缓存16块分了8组,导致内存一组有8块,所以内存每组的块数对应缓存组数,且该块数可对应相应内存组中的任意块数)

              在这里插入图片描述

              图示为2路-组相联:2路表示缓存每组块数

              解释一下:

              • 主存地址 → 组号+组内块号+块内地址

              • 主存 → 缓存

                组内块号对应缓存组号,然后缓存组内映射随机

                缓存 → 内存

                缓存组号对应内存组内块号,利用标记位解析出内存组好

          • 例题分析

            在这里插入图片描述

            难点不在于前面缓存,主存的分组,而是地址位

            129=10000001 按三种映射规则转换主存地址

            • 首先从地位开始为共有的块内地址

              取决于一块的大小,本题为32=2^5,即5位即可表示完全

            • 然后对于组相联映射,后五位之后的三位为组内块号(对应缓存组号)

            • 129=10000001

              00001 - 表示块内地址

              100 - 表示组内块号

              其他高位补齐由内存分组决定,表示内存组号

            • 总结:

              xxx号主存单元的地址转换

              先转为二进制:

              按照块的大小,定义块内字地址段的长度

              内存的分组,定义组号地址段长度的长度

              内存组内块数量,定义组内块号地址段长度

        • 替换算法(基于全相连映射)

          • 由于缓存容量小,当内存数据进入缓存时,若缓存已被内存数据占满则需要调用替换算法,把缓存部分数据块写回内存,替换成当前数据块
            • FIFO法

              队列先进先出,简单的很,新进来的顶掉下面队首的,命中时不改变cache中数据次序

            • 近期最久未使用(LRU - Least - Recently Used)

              近期内最久未被访问过的内存块被置换出去

              从上到下,最上面的展示最近被访问过的数据缓存块,最下面的是近期最久未被访问的,即会被替换掉的,遇到命中,则将命中块提到最上面,其余次序不变,遇到替换的,放在最上面并将最下面的顶掉

            • 最不经常使用法(LFU - Least Frequnently Used )

              一段时间内缓存访问次数最少的数据块被置换

            • 随即替换

              随即替换呗

            • 例题

              在这里插入图片描述

      3. Cache的读写操作详解

        • 通过Cache的存在,将CPU的访存操作简化为访问缓存的操作

        • 写 操作

          当CPU发出写请求(指写入内存),若Cache命中(目标内存单元已经映射到缓存之中),处理方案如下

          1. 通写:Cache与内存单元同时写,使之保持一致
          2. 回写:只修改Cache单元,并用标记位注明,直到该块被替换掉时,才写入内存
        • 读 操作

          1. 旁路式读(Look-Aside)

            CPU同时向缓存与主存发送读命令与地址

            若缓存命中:直接返回数据并中断读内存的命令

            若缓存不命中:直接访问主存读取数据

          2. 通过式读(Look-Through)

            CPU首先向Cache发读命令和地址

            若缓存命中,则从缓存中读出数据

            若不命中,再将读命令和地址传给主存并读主存

    • 主存-虚存体系

      1. 主存-虚存 虚拟映射
        • 作用

          这一层面主要解决存储系统的容量问题,辅存的速度较低,但是容量大,用于存放暂时未用到的信息,当CPU要用到这些信息的时候,将辅存的内容调到主存中,供CPU直接访问,主存与辅存之间的数据调动是由硬件和操作系统共同完成的。

        • 定义 与 虚拟映射

          • 虚拟存储器技术:

            在这里插入图片描述

            CPU访问外存,首先通过内存与虚存的交互,得到虚地址码,进而通过软件把虚地址码转化为磁盘(外存)地址码,进而完成外存的访问

          • 内存 虚存地址 映射

            • 基本方式:内存虚存地址之间建立关联表

            • 页式虚拟存储管理

              • 主存与内存统一分页管理(这里的页相对于缓存的块)

                • 页表:

                  记录虚地址页号(虚存)与实地址页号(内存)的对应关系,页表中的每一行称为页表项

                  页表项由实页号与标志位构成,其中标志位表示当前对应虚页面数据是否已被读取入内存里

                • 页表基址寄存器:

                  纪录页表在主存中的起始地址

                • TLB(快表):

                  把活跃页表项用高速存储器单独存储,访问速度更快

                • 具体流程:

                在这里插入图片描述

                虚页号与页表基址寄存器拼接得到实页号,虚地址的页内地址再拼接得到主存(内存)地址(想要访问外存的操作转化为访问虚存操作转化为访问内存操作,妙啊)

            • 段式虚拟存储管理

              • 主存与虚存统一分段管理
                • 段表:

                  虚实地址转换对应表

                  每段都有一登记项:段号、段起点、段长、装入位等

                • 段表基址寄存器

                • 流程图

                  在这里插入图片描述

            • 段页式虚拟存储管理

              • 虚存先分段再分页管理,且虚存页面大小与内存页面大小一致

                内存只分段

              • 段表,页表

              • 段表基址寄存器,页表基址寄存器

              • 地址格式

                虚地址:段号 + 页号 + 页内地址

                实地址:页号 + 页内地址

              • 流程

                在这里插入图片描述

                由此可以小小总结一下,虚地址都是通过 基准地址(基址寄存器等方法)+虚地址的页号或段号得到实地址,然后实地址与页内地址拼接得到主存地址

    • 两个体系区别

      1. 目的不同

        主存-辅存是为了增加容量,cache-主存是为了提高速度

      2. 与cpu访问方式不同

        cpu只能访问主存不能访问辅存,cpu能访问cache和主存

      3. 映射方式不同

        主存-辅存是全相联映射,cache-主存是全相联映射,组相联映射,直接映像都有

      4. 透明性不同

        主存-辅存对系统程序员不透明,对应用程序员透明,cache-主存对二者都透明

      5. 挺高命中率方式不同

        主存辅存随着页面的增大,命中率先增大,到一定程度之后就减小了,但cache-主存不会,虽然块增的太大,会降低速度,但是命中率不会减小

      6. 增加的支持不同

        主存辅存增加了硬件和软件,cache-主存只增加了硬件,cache要求速度,所以都是硬件实现的

六、总线与IO设备


  • 总线技术

    1. 定义:连接各功能组件并承担部件之间信息传送任务的公共信息通道
    • 分类

      • 按传输信号分类

        数据总线(DB)

        地址总线(AB)

        控制总线(CB)

      • 按层次分类

        内部总线

        系统总线

        IO总线

      • 按功能分类

        内总线:芯片内

        局部总线:板卡内

        系统总线:计算机内

        外总线:多机集群

    • 结构分类

      • 单总线结构

        在这里插入图片描述

      • 多总线系统

        在这里插入图片描述

    • 总线的性能问题

      • 性能指标

        在这里插入图片描述

      • 例题

        在这里插入图片描述

        数据宽度为数据字节长 8位一字节

    • 总线周期与操作过程

      • 基本步骤

        主设备申请总线,仲裁器裁决并批准 (主设备:申请并掌握总线权限的设备)

        主设备掌握总线,启动总线周期、初始化(总线周期:通过总线完成一次完整数据传输的时间)

        从设备响应,主从设备之间数据传输(从设备:与主设备对应的设备)

        主设备释放总线,总线周期结束

      • 数据传输模式

        单周期模式:申请一次,只分配一个总线周期,只传送一次数据

        突发模式:申请一次,可分配多个总线周期,可传输多个数据字

      • 控制方式

        同步总线:由统一的时序信号控制

        异步总线:异步应答方式控制总线的传送操作

        扩展的同步总线:在同步应答中加入异步应答的思想,即以时钟周期为时序基础,允许总线周期中时钟数可变

      • 总线的仲裁方式

        解决总线控制权的分配问题,一般采用优先级或公平决策进行仲裁

        按仲裁电路分布分类

        • 集中式仲裁

          每个模块都有两条线连接到中央仲裁器(公共仲裁器)

          BR - 总线请求信号线

          BG - 总线授权信号线

          • 链式查询集中式仲裁

          • 计数器定时集中式仲裁

          • 独立请求集中式仲裁

        • 分散式仲裁

  • IO接口

    • 基础

      1. IO接口:主机与外设的衔接部分,位于总线与外部设备之间

        原因:计算机采用层次结构处理,主机只能管理到接口,所以接口用来衔接主机与外设

        基本功能:

        设备寻址:通过接口完成CPU对外设的访问

        数据缓冲:实现主机与外设的速度匹配

        预处理功能:格式转换,宽度转换,电平转换等

        控制逻辑功能:协助主机实现对IO传送操作的控制

      2. 接口寄存器的编址

        • 单独编址(独立于主存地址)

          为接口的每一个寄存器(IO端口)分配独立的端口地址

          特点:

          需要设置标志位区分访问对象 M/IO (1-访问存储器 0-访问IO端口)

          需要专门的IO指令完成IO操作(显式IO指令)

        • 统一编址(与主存一起编址)

          把IO端口当成特殊内存单元并与主存一并编址,此时IO端口将占据主存的部分地址空间

          特点:

          编址基本原则:

          低端地址 → 内存单元

          高端地址 → IO端口

          可用普通访存指令(隐式IO指令)完成IO操作,不需要额外设定IO访存指令

      3. IO接口的分类

        • 传递信息的联络方式

          立即响应:适合于工作速度十分缓慢的IO设备

          同步:IO设备与主机工作速度不匹配

          异步:IO设备与CPU工作速队完全同步

        • 按数据传输格式分类

          并行接口:

          接口两端均采用并行传输

          适用于设备本身并行工作,距离主机较近的场合

          串行接口

          接口与外设一侧串行传送

          设用于设备本身串行工作,距离主机较远或者需要减少传送线的情况

        • 按 IO操作的控制方式

          PIO(直接程序传送方式) - 程控方式

          中断接口

          DMA接口

          IOP/PPU接口

      4. 输入输出控制模式

        • 计算机的两级控制模式

        • 第一级控制(相对于主机而言,只需要考虑第一级控制)

          直接程序传送方式(PIO)

          程序中断方式(Interrupt)

          直接存储器访问方式(DMA)

          IOP/PPU方式(专用处理器/处理机)

          (前两种方式都是采用主机调用程序完成控制,后两种不需要主机执行IO程序,核心差异在于CPU承担的任务不同)

    • IO控制模式详解

      • 直接程序传送方式与其接口

        • 特征:

          主机CPU直接执行IO程序实现主机与外设的IO交互(概况)

          需要专门的IO程序,且需要对IO设备设定相应的状态量

          主机CPU执行IO程序,需要不断查询外设状态量,才能进而控制具体的数据IO过程(执行过程)

          在数据IO过程中,CPU无法执行其他任务面对其它外设请求响应慢,完全被束缚于简单的数据IO控制

        • 优缺点

          硬件开销小,实时处理能力差,并行程度低,CPU利用率低下

          适用于IO效率不高,数据量少的场景,i比如外设的诊断或调试

      • 中断方式与接口

        • 程序运行过程中,发生某种随机事态,CPU暂停当前程序,转而执行该事态对应的服务程序,结束后再恢复源程序的执行

          • 特征:程序切换+随机性

          • 本质:保护端点,保护现场;恢复现场,返回断点;

            (保护现场,中断服务,恢复现场,中断返回)

        • 特征分析

          数据传送:程序

          响应时间:指令执行结束

          处理异常情况:能

          中断请求:传送数据

          优先级:低

      • DMA(Direct Memory Access)模式

        • 直接采用硬件来控制主存与外设之间的数据,之间CPU不参与干预,结束后以中断模式通知CPU

        • 特点:随机响应,不占用CPU。只占用总线,无程序切换,实现大批量数据的简单传送

        • 应用场景:主存与IO的简单数据传送,大批量数据采集,DRAM的自动刷新

        • 特点分析

          数据传送:硬件

          响应时间:存取周期结束

          处理异常:不能

          中断请求:后处理

          优先级:高

      • IOP/PPU模式

        • IOP - IO Processor 输入输出处理器

        • PPU Peripheral Processor Unit - 外围处理单元

        • 特点

          受主机CPU控制,可与CPU并行工作

          可独立执行复杂IO操作

其他资料可以访问本人github主页自行浏览下载
https://github.com/Schiz0mania
(快让我康康!!)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值