计算机组成原理 - 速记版(为coursera.org上pku课程总结)

  • 概论:分类应用,概念,基本组成,层次结构

  • 计算机组成基本结构

    • 冯 诺伊曼结构

      • CPU

        • 控制器:CC,ALU

        • 运算器:CU(主要是控制电路,指令译码):IR,PC

      • 主存

        • 主存储器:MDR,MAR
    • 计算机执行指令的过程

      • 取指:PC, MAR, M, MDR, IR

      • 译码:OP(IR),CU

      • 执行:ADD(IR), MAR, M, MDR, ACC

      • 回写:回写到目标地址

    • 基本的简单模型

      • CPU

      • 北桥:一般是用于一些高速设备和CPU之间的连接,如显卡。

      • 南桥:主要是用作非运算类的设备,如IO

      • 系统芯片SoC(System on a clip):将计算机的所有电子系统集成到单一的芯片上面

      • Moore’s Law

  • 总线系统

  • 中央处理器(ALU)(运算器和控制器)

    • 逻辑运算

      • R型:and/or/nor

      • i型:andi/ori(高16位全为0,不是对于低位的复制

    • 算术运算

      • R型:add/addu,sub/subu

      • i型:addi/addiu

      • 加法和减法的实现

        • 半加法器half adder

          • 将两个二进制相加,使用异或门实现

          • 改进:正常位实现异或门实现,进行使用与门实现

        • 全加器full adder:由两个半加器构成,并且增加一个进行线路

          • 溢出:仅仅针对有符号的数进行相加

          • 判断标志:Cin和Cout不想等,就溢出

            • 门电路:异或门相连,值不同时就为真,就溢出

            • 为什么可以作为标志位?

              • 当Cin为0时,Cout为1表示最高位两个1相加,溢出

              • 当Cin为1时,Cout为0表示,进入的是两个0相加,即这一位不存在

        • 减法:在最低位使用一个异或门

        • MIPS:addu和addiu是两条不处理溢出的指令

        • X86: 把opcode看作是有符号的,多了一个标志位OF

      • 加法的逻辑优化·

        • 行波进位加法器(RCA,Ripple Carry Adder)

          • 结构:低位全加器的Cout连接至高一位全加器Cin,因此,第二位要先等第一位计算完成后再计算

          • 优点:电路简单,设计方便

          • 缺点:高位必须等待低位进行

          • 耗费时间(以4位累加器件):T 2T*4= 9T

        • 超前进位加法器(CLA)

          • 本质上是将电路进位计算,这也意味着电路会复杂表

          • 32位的CLA;常见方法:使用4个CLA进行桥接

          • C1 = G0 P0C0

          • C2 = G1 P1C1

          • C3 = G2 P2C2

          • 耗费时间:4T

    • 乘法器:

      • 无多位暂存寄存器,进行到哪一位就对哪一位进行直接的相加

      • 基本硬件:

        • 乘数寄存器Multiplier 带右移

        • 被乘数寄存器Multiplicand 带左移

        • 乘积寄存器Product

        • ALU(8位加法器:乘积最大数)

        • 控制电路

      • 基本过程:

        • 1.检查“乘数寄存器”最低位

        • 2.值为1执行:乘积值和被乘数相加;或者不进行

        • 3.1将被乘数寄存器向左移动一位;

        • 3.2 将乘数寄存器向右移动一位

        • \4. 是否已经到第N次相关的循环

      • 优化:

        • 软件:

          • 因为寄存器的值被改变后,需要等到下一个clock改变才会生效,所以,2,3.1,3.2可并行进行;
        • 硬件

          • 将被“乘数寄存器”使用最小值,并去掉移位功能

          • 将“乘积寄存器”的高位用来存储相关,低4位用于存储乘数,并进行相应的右移动

          • 乘数寄存器不要

          • alu改为最少位数的

    • 除法器:

      • 基本硬件

        • 除数寄存器 Divisor:带向右移动

        • 商 Quotient:带向左移动

        • 余数(被除数寄存器) Remainder

        • ALU:(加法和减法两种)

      • 基本过程

        • 1 余数 = 余数- 除数

        • 2 检查余数

        • 2.1 大于等于0 ,商左移1位,新的设为1

        • 2.2 小于0,回退(加回原来的值),新的最右位设为0

        • 3 除数右移1位

        • 4 检查值是否已经循环完毕或者余数精确值

      • 优化:

        • 软件:因为检查后的值会导致执行不同,因此,无法并行执行

        • 硬件:

          • 除数寄存器,与上面类似

          • 商寄存器取消

          • alu类似

          • 余数寄存器

            • 与乘法类似,高32位为记录相应的值,低32位存相应的商

            • 支持左移和右移,执行加法时左移,执行减法时右移动

    • 门电路基本原理:

      • 非门

      • 与门

      • 或门

      • 异或门:两值不相同时,则取真值

    • 寄存器的基本原理:

      • D触发器:output的值随着clock周期进行相关的变化
  • 指令系统(x86,MIPS ISA)

    • RISC和CISC:精简指令集和复杂指令集

    • X86体系结构

      • X8086

        • 以IP作为PC

        • 具备16位地址,所以寻址能力是2^16

        • 为了扩展寻址能力到2^20, 增加了4个段寄存器:CS代码段, DS数据段, ES附加段, SS堆栈段

        • 逻辑地址->物理地址

          • 16位段基值:16位偏移量->段基值左移4位形成实际20位段基值:16位偏移量-> 2^物理地址(20位) 偏移量
      • X80386

        • 在8086的基础上新增加FS,GS两个段寄存器,以及10个通用寄存器,形成总共的32位
      • X86-64

        • 新增8个64位的寄存器

        • 地址不是统一长度,需要实现变址

    • X86指令简介

      • 指令的分类:

        • 运算类指令:ADD/ADC(带进位)/INC

        • 传送类指令:MOV EBX,40

        • 转移类指令:JNZ

        • 控制类指令:LOOP

    • X86复杂指令例子

      • 串操作指令

        • 作用

          • 对存储器中的每一个数据进行每次一个元素的操作

          • 基本单位是字节或字

          • 串长度可达64KB

        • 分类

          • 共5条串操作指令

          • 另有3种重复前缀,与串操作指令配合使用

        • 例子:MOVSB

          • MOV AX,DS

          • MOV ES,AX

          • MOV SI,2040H

          • MOV DI,2060H

          • CLD

          • MOV CX,3(定义执行三次)

          • REP MOVSB

    • MIPS体系结构(MIPS相关的部分需要重看)

      • 由MIPS公司发展而来,现在仍然广泛运用于数字电视,机顶盒等嵌入式设备

      • MIPS指令特点

        • 固定指令长度

        • 简单寻址模式

        • 指令数量少,功能简单

        • 只支持Load和Store这两种对存储器的访问

          • load和store的区别(方向完全相反):由寄存器写入临时寄存器($8),由临时寄存器($8)写入寄存器

          • lw $8,12($9)/sw $8,40($19)

    • MIPS体系指令

      • 举例MIPS实现A[10]=h A[3]

        • lw $8,12($9)

        • add $8,$18,$8; $8 = $8 $18

        • sw $8,40($19)

      • 分类:

        • 符号的基本含义

          • opcode操作寄存器

          • rs源操作寄存器

          • rt第二个源操作寄存器

          • rd目的操作寄存器

          • shamt移位寄存器

          • funct计算

        • R型:寄存器 32

          • 基本结构:opcode: rs: rt: rd: shamt: funct = 6bit: 5bit: 5bit: 5bit: 5bit: 6bit
        • I型:立即执行

          • 基本结构:opcode: rs: rt: immediate = 6bit: 5bit: 5bit: 16bit

          • PC 2^15 bytes

        • J型:转移类

          • 分支指令:控制相关的分支系统

            • 条件分支 beq rs, rt, true

              • 如何充分发挥16bit作用?

                • 以当前pc为准16bit 2^15

                • MIPS固定为32位

                • 16位位移量的基础上 加4位 2^15 = 2^17

              • 分支不成立:pc=pc 4

              • 分支成立:pc =(pc 4) immediate*4

            • 非条件分支

              • opcode占用6位

              • pc= (pc的高4位) 地址量:地址范围就变为2^(32-4)

              • 如何调用更远的目的地址?

                • 2次调用j指令

                • 使用jr指令:jr,js

  • 周期处理器

    • 单周期处理器

      • 处理器的设计步骤

        • 1.分析指令系统,得出对数据通路的需求。

        • 2.为数据通路选择合适的组件。

        • 3.连接组件建立数据通路。

        • 4.分析每条指令的实现,以确定控制信号。

        • 5.集成控制信号,形成完整的控制逻辑。

      • 需求:

      • 数据通路:

      • 指令

        • 运算指令:

        • 访存指令:

          • 只有访存指令才需要访存时间

          • lw负责从源寄存器取值,写会寄存器

          • sw负责将值写回rd,缺少回写

        • 分支指令:

          • 只负责判断,不会写入寄存器值
      • 控制信号:

        • 控制信号的逻辑表达式:

        • 控制器的逻辑表达式:opcode(6bit)和func(6bit)构成

    • 流水线处理器

      • 指令执行处理过程

        • 取指Fetch

        • 译码Decode

        • 执行Execute

        • 访存Memory

        • 回写Write back

      • 流水线的优化

        • 简单优化

          • 流水线的平衡

            • 不平衡的流水线会对性能造成影响,主要是等待耗时
          • 时钟周期

            • 将大的操作进行再切分小的。形成超级流水线技术(Super pipeling)

            • 实际操作:提升时钟的相关的频率

            • 缺点:单条指令的延迟读取比例会增加,进而影响性能

          • 历史处理器的发展:

            • 频率就是流水线深度的体现(时钟周期)

            • Intel:

              • 1986 R200/R3000 5级

              • 1993 Pentinum 5级

              • 1995 Pentinum Pro 12级(尝试引入RISC创造流水线)

              • 2004 Pentinum 4(Presoft)31级

            • ARM:

              • 1997 ARM9/ARM11 5级

              • 2013 CoreX-A57 15 级别(现在基本主流芯片基本维持的深度)

        • 超标量流水线SuperScalar

          • 原理:拓宽流水线(通常具有2条以上的并行工作的流水线的结构)

          • 采用超标量的芯片:1964 CDC600(第一台)->Cortex-A9

          • 与标量之间的区别:

            • 单周期->标量流水线:时间并行性的优化

            • 标量流水线->超标量流水线:空间并行性的优化

          • 多核CPU

            • 在一个CPU芯片中集成了多个超标量处理器的处理器核
      • 流水线的冒险

        • 通用解决方案:

          • 流水线停顿(stall),产生空泡,通俗地说就是等待;
        • 结构冒险

          • 产生原因:同一个指令被同时执行读和写的操作(本质是硬件资源的不足)

          • 问题:指令和数据放在同一存储,不能同时读存储器?

            • 指令和数据在存储器而不是寄存器时,进行单独的存储。
          • 问题:读和写同时发生?

            • 前半个时钟读,后半个时钟写,并且设置独立的读写口。
        • 数据冒险

          • 产生原因:一条指令需要使用之前的指令结果,但结果没有写回。

          • 问题:需要使用到先前的指令?

            • 软件:使用nop来占用更多时间周期,达到时钟平衡

            • 数据前递(Forwading):省略相关的执行步骤(如读写寄存器),硬件实现叫旁路(即增加多的硬件实现相应的功能)

          • 问题:一条指令需要使之前指令的访存结果?

            • 单数据无法解决,因此只能使用硬件上前递解决
        • 控制冒险

          • 产生原因:无法确定下一条指令出现的冒险

          • Branch Frequency:

            • i7:4 * 16

            • ARM Cortex-A15: 3*15

          • 转移指令占流水线的比例大概在15%~25%

          • 延迟转移技术:将不需要参与前者运算的指令放进需要等待的周期中,从而节约一个周期。

      • 主要思想:分析相关的停顿和寄存器,从而进行相关的优化。

  • 存储管理:与操作习题存储器管理类似

    • 基本功能:

      • 非易失性(断电仍然保存,主要是bios和芯片)

      • 可读可写

      • 随机访问(与位置有关)

      • 访问时间

    • 层次结构(从第一项到最后一项为过程方向)

      • CPU

      • SRAM(cache)

      • DRAM(内存)

      • DISK

    • DRAM

      • 基本结构:通过行地址/列地址进行定位访问数据

      • 基本过程

        • 行选 -> tRCD -> 列选 -> CL ->数据-> 预充电->tRP -> 行地址->tRCD

        • 行选和列选的过程主要是对单元进行刷新(refresh),使得原来表示“1”的电荷有效,表示为“0”的保持无电荷状态

      • 发展

        • SDRAM 同步Sync的过程是通过提升时钟来提升相关的频率

        • SDR SDRAM单通道 同步动态存储

          • 只在时钟clock上升时传送数据
        • DDR SDRAM双通道 同步动态存储

          • 时钟clock上升和下降都传送数据
      • 优点:

        • 集成度高

        • 功耗低

        • 价格较低

      • 缺点:

        • 速度较慢

        • 定时刷新

    • SRAM(cache)

      • 相同的一个DRAM单位,SRAM需要6个mos晶体管

      • 基本结构

        • 地址线

        • 片线:是否有读写功能

        • 数据线

        • 读/写线:决定是否进行读/写

      • 优化条件:

        • 空间局部性:以数据块(block)为单位。

        • 时间局部性:提高访问数据的频率

      • 策略

        • 命中时策略

          • 写穿透Write Through:数据同时写入cache和主存

          • 写返回Write Back:数据只写入cache,仅当被替换时再写入cache

        • 失效时策略

          • 写不分配Write allocate:直接写入主存

          • 写分配Write Non-allocate:将该数据的块写入cache后,再将数据写入cache

      • 访问时间

        • 计算公式:

        • 失效原因:

          • 义务失效 compulsory miss: 完全访问不到

          • 容量失效capacity miss:不能存下更多的块

          • 冲突失效conflict miss:替换算法

        • 组合方式:(解决容量失效)

          • 直接相联

          • 全相联

        • 替换算法(解决冲突失效,具体的可在操作系统中查看)

          • 随机

          • 轮转

          • 最少使用

    • 单位:

      • 总结:除高速缓存和内存外,都采用国际单位制的10进制,2进制的单位缩写需要在国际单位后面加i

      • 1 Byte = 8 bits(看清楚缩写,bit才为一个二进制)

  • 中断和异常

    • 来源和历史

      • 第一台带有中断的机器UNIVAC

      • 中断工作的最初原理是:专向地址为0的执行修复或者停机

    • 表结构

      • 内存分区

        • 中断专用区:一般用于初始化代码

        • 通用区

        • 中断专用区:主要用于中断向量表

      • 基本

        • 中断向量:

        • 基本表示方法:IP:CS(实模式)

        • 物理地址计算:CS左移4位(2^4) 偏移量IP

      • 内容和地址的区别:

        • 内容:中断指令*相应的位数

        • 地址:根据IP:CS从低到高进行取出

      • 扩展:

        • 保护模式:EIP(16->32):CS

        • 保护模式下:段基址不在CS中而在内存中

        • GTD 全局描述符表

        • GTDR 全局描述符表的地址寄存器

        • 中断描述符表:

          • 专用中断:0~4

            • 类型2:非屏蔽中断,不属于内部中断
          • 保留中断:5~31

          • 用户自定义:32~255

    • 处理过程

      • \1. 关中断

      • \2. 保存中断点

      • 3.识别中断源

      • 4.保护现场

      • 5.执行中断程序

        • 主要是为了响应高优先级

        • 通过中断标志位进行判断IF(1时允许响应)

        • 相关指令

          • STI: 1

          • CLI:0

      • 6.恢复现场并返回

    • 内部中断的分类

      • 类型0:除法错中断

        • 与OF位有关

        • 一般由程序员自定义

      • 类型4:溢出中断

        • 恢复现场并返回
      • 类型1:单步中断 :

        • 与TF位有关

        • 除了单步中断外,所有内部中断都不可以通过软件方法屏蔽

      • 类型3:断点中断

      • 常用方法:通过类型3确定出现问题的大体方向,通过类型1进行内部详细筛查

      • 特点:

        • 中断类型号

        • 屏蔽方式

        • 优先级

      • 功能调用:

        • INT指令

        • ROM BIOS中断

          • 例子

            • MOV AH,1

            • MOV CX,0

            • MOV DX,0

            • INT 1AH

          • 10H

            • 0 设置显示位置

            • 2 设置光标位置

          • 1AH

            • 0读时钟

            • 1置时钟

        • DOS中断

          • INT 21H

          • 比BIOS更完善和易于操作

          • 06H 直接控制IO

          • 09H 显示字符串

          • 2CH 取时间

          • 2DH 设置时间

  • 输入和输出设备 (I/O相关设备)

    • I/O的基本功能

      • 数据缓冲:解决CPU与外设之间的速度差距

      • 提供联络信息:协调与同步数据交换过程

      • 信号与信息格式的转换:模/数,数/模,串/并,并/串转换,电平转换

      • 设备选择

      • 中断管理

      • 可编程

    • I/O指令说明:

      • IN AC,PORT

      • OUT PORT,AC

        • OUT中存在M/IO来决定读取memory还是IO
      • 取指方式

        • 直接取址

        • 间接取址

    • I/O设备的编制方式

      • 分开和统一是指I/O设备和存储器的结合方式

      • 统一编址

        • 优点

          • 可以用访问存储器的指令来访问I/O端口,访问存储器的指令功能比较齐全,可以实现直接对I/O端口内的数据进行处理

          • 可以将CPU中的I/O操作与访问存储器操作统一设计为一套控制逻辑,

        • 缺点

          • 由于I/O端口占用了一部分存储器地址空间,因而使存储地址空间减小

          • 由于利用访问存储器的指令来进行I/O操作,指令的长度通常比单独I/O指令要长,因而指令的执行时间也比较长

      • 分开编址

        • 优点

          • I/O端口不占用存储器地址,不会减少用户的存储器地址空间

          • I/O指令编码短,执行速度快

          • I/O指令的地址码较短,地址译码方便

          • 采用单独的I/O指令,使程序中I/O操作和其他操作层次清晰,便于理解

        • 缺点

    • I/O的控制方式

      • 含义:

        • CPU控制外设的数据传送类
      • 方式:

        • 软件方式

          • 程序控制方式(无条件传送,程序查询方式)

            • 无条件传送: 不检查状态之直接传送,容易造成数据冲突

            • 程序查询方式:通过CPU循环查找I/O设备是否有请求

          • 中断控制方式

            • 中断检查相应的状态,不用CPU循环。设备可以向CPU发送相关的信息。

            • NMI 非屏蔽中断

            • INTR 可屏蔽中断

              • PIC中断控制器

              • APIC硬件外部中断

        • 硬件方式

          • 直接存储方式(DMA):通过硬件实现相应的中断

            • DMAC芯片

              • 拥有两个模块:M:内存模块和S:从模块接口

              • 作为CPU的一部分

来源:https://www.icode9.com/content-4-803701.html

(0)

相关推荐