资讯详情

计算机组成原理-王道笔记

计算机组成原理

文章目录

第二章

2.1移位运算

  1. 算数移位:通过改变各个数码和小数点的相对位置,从而改变各数码位的位权。 对于**所有码都是左移 x2,右移/2 **
  • 原码算数右移:图片

  • 原码算数左移:

定点小数和定点整数的移位一样


  • 反码的算数移位:正相同,负相反

  • 补码的算数移位:

小小结: 由于机器位数有限,有时无法用算数移位精确得等效乘除法


  • 算数移位的应用

  1. 逻辑移位

  1. 循环移位:出的用来补。

小结:


2.2定点数的加减运算

  1. 原码的加减法


  1. 补码的加减法 (计算机中通常)


  1. 溢出判断
  • 何时溢出:


  • 方法一:采用一位符号位判断

  • 方法二:根据进位情况判断

  • 方法三:双符号位


  1. 符号扩展


小结:


2.3定点数的乘法运算

  1. 乘法运算的实现思想

  1. 原码的一位乘法

  1. 补码的一位乘法

  1. 对比:

2.4定点数的除法运算

  1. 除法运算的思想

  2. 原码的除法

  • 两种方法:恢复余数法和加减交替法(不恢复余数法)

    恢复余数法:


加减交替法:


  1. 补码的除法
  • 减去除数=加上(-除数)的补码;最后一位置为 1.

    加减交替法:


  1. 除法运算回顾:

2.5强制类型转换

  • c 语言中的定点整数有:int ,short,long。


2.6数据的存储和排列

  • 大小端模式:

    大端模式:最高的有效字节存到最低有效地址,最低的有效字节存到最高有效地址。

    小端模式:与上述相反

2.7浮点数的表示

  1. 浮点数的表示

    • 浮点数的理解:阶码反映数值大小,常用补码或移码表示定点整数;尾数反映精度,常用原码或补码表示定点小数。

    • 浮点数尾数的规格化:规定。方法:算术左移或右移。
      1. 左规:当浮点数运算的结果为非规格化时要进行规格化处理,将
      2. 右规:当浮点数运算的结果尾数出现溢出(双符号位位 01 或 10)时,将

    • 规格化浮点数的特点:
      1. 用原码表示的尾数进行规格化:
      2. 用补码表示的尾数进行规格化:

        注意补码表示的尾数规格化:符号位和最高位不同(规定的,常用来判断该补码是否规格化)


    正下溢和负下溢当作 0


    • 小结:

  2. IEEE754 标准

  • 移码:补码的基础上将符号去反。。定义:移码=正值+偏置值。如:八位移码的偏置值=128D=1000 0000B,也可以取 127D 即:2n-1或者 2n-1-1,不够便取 mod。


    • 注意原码隐藏了最高位 1,表示 1.M
    • 阶码全 1,全 0 用作后面特殊处理

    • 练习 1:十进制->浮点数:

    • 练习 2:浮点数->十进制

    • IEEE 单精度浮点数表示的:尾数全为 0,阶码真值最小-126(-128,-127 有特殊处理),对用移码机器数 0000 0001,此时整体的真值为(1.0)2x2-126
    • IEEE 单精度浮点数表示的:尾数全为 1,阶码真值最大 127,对用移码机器数 1111 1110,此时整体的真值为(1.111…11)2x2127
    • 只有 1<=E<=254 时,真值=(-1)sx2-126

    • 当阶码 E 全为 0,尾数 M 不全为 0 时,表示+(0.xx…x)2x2-126。注意:隐含最高位变为 0,阶码真值固定视为-126。
    • 当阶码 E 全为 0,尾数 M 全为 0 时,表示真值+0。
    • 当阶码 E 全为 1,尾数 M 全为 0 时,表示无穷大+无穷大。
    • 当阶码 E 全为 1,尾数 M 不全为 0 时,表示非数值“NAN”(not a number)表示非法运算。
  1. 浮点数的运算
  • 浮点数的加减运算:
    1. 对阶中
    2. 尾数加减
    3. 规格化,0.00 几需要“左规”,99.21 几需要“右规”,规格化为
    4. 舍入:规定保留有效尾数;多余的直接砍掉,若砍掉部分非 0,则入 1;或者四舍五入,舍弃位>=5,高位入 1。
    • “0”舍“1”入法:类似于十进制数运算中的“四舍五入” 法,即在尾数右移时:被移去的最高数值位为0,则舍去;。这样做
    • 恒置“1”法:尾数右移时,不论丢掉的最高数值位是“1”还是“0”都使右移后的尾数末位恒置“1”。这种方法同样有使尾数变大和变小的两种可能。
    1. 判溢出:按规定。

  • 练习:

  • 强制类型转换:
    • 在32位机器中不会丢失精度:char->int->long->double; float->double
    • int->float:可能损失精度
    • float->int:可能溢出损失精度
    • 32位以上的机器:
    1. int:表示整数,范围-231~ 231-1,有效数字32位。
    2. float:表示整数及小数,范围+[2-126~2127X(2-2-23)],有效数字23+1=24位。

小结:


2.8电路基本原理和加法器设计

2.8.1:ALU

  • 算术运算:加减乘除等
  • 逻辑运算:与或非等
  • 辅助功能:移位,求补等

2.8.2:加法器

  • FA:full adder:原理:
  • 表达式: 输 出 : S i = A i ⊕ B i ⊕ C i − 1 C i = A i B i + ( A i ⊕ B i ) C i − 1 \begin{aligned} 输出: S_i &= A_i \oplus B_i \oplus C_i-1\\ C_i &= A_iB_i+(A_i \oplus B_i)C_i-1 \end{aligned} 输出:Si​Ci​​=Ai​⊕Bi​⊕Ci​−1=Ai​Bi​+(Ai​⊕Bi​)Ci​−1​
  • 串行进位的并行加法器:把n个全加器串接起来,就可以进行两个n位数的相加。串行进位又叫行波进位。

2.8.3:加法器改进设计

  • 套娃思想:第i位向更高位的进位i可以根据被加数、加数的第1~i位,再结合C0来确定。

  • 观察到G1P1在每一个式子都存在,所以考虑将其现送入高位
  • 同理,G2P2在后面的n-1个式子存在,同样往后送,以此类推。
  • 并行进位的并行加法器:各级进位信号同时形成,又称先行进位、同步进位。
  • 四位并行进位加法器原理图:


  • 单级先行进位方式:又称(越多线路越复杂),然后通过每一个4位CLA加法器(四位并行进位加法器)的串行进位来扩展位更高位。

  • 改进:继续套娃得到:多级先行进位方式,又称方式。

  • ALU芯片的优化:

相当于CLA,相当于BCLA

第三章:存储系统

3.1:存储系统基本概念

3.1.1:存储器的层次结构

  • 辅存中的数据要调入主存后才能被cpu访问
  • 辅存也有外存之称
  • 主存–辅存:实现虚拟存储系统,解决了主存容量不够的问题。
  • Cache–主存:解决了主存与cpu速度不匹配的问题。

3.1.2:存储器的分类

  • 按层次分类:
  • 按存储介质分类:
  1. 半导体存储器
  2. 磁表面存储器
  3. 光存储器
  • 按存取方式
  1. 随机存取存储器(RAM):硬盘
  2. 顺序存取存储器(SAM):磁带
  3. 直接存取存储器(DAM):磁盘
  4. 相联存储器(SAM):按内容访问
  • 按照信息可更改性
  1. 读写存储器
  2. 只读存储器(ROM)
  • 信息的可保存性

1.易失性存储器(主存,Cache) 2.非易失性存储器(磁盘、光盘)

  • DRAM:破坏性读出
  • SRAM:非破坏性读出

3.1.3:存储器的性能指标

  1. 存储容量:存储字数X字长(如1Mx8位)
  2. 单位成本:每位价格=总成本/总容量
  3. 存储速度:数据传输率(主存带宽:Bm)=数据的宽度/存储周期

  • 小结:

3.2:主存储器的基本组成

3.2.1:半导体元件的原理

  • MOS管:可以理解为一种电控开关,输入电压达到某个阈值时,MOS管就可以接通。
  • 存储元:可存一位二进制数据,由一个MOS和电容组成。
  • 存储元,存储单元;存储体

3.2.2:存储芯片的基本原理

  • 控制电路:;同时当数据输出的时候,只有
  • 片选线:给出芯片选择信号:表示。CS:芯片选择信号,CE:芯片使能信号。

  • n位地址->2n个存储单元
  • 总容量=存储单元个数x存储字长=2 3x 8bit = 2 3 x 1Byte=8B
  • 8 x 8位的存存储芯片:常见描述:

3.2.3:如何实现不同的寻址方式

  • 总容量为1K个单元:
  • 按字寻址:256个单元,每个单元4B
  • 按半字寻址:512个单元,每个单元2B
  • 按双字寻址:128个单元,每个单元8B

  • 小结:

3.3:SRAM和DRAM

3.3.1:存储单元不同导致的特性差异

  • DRAM:动态RAM,使用存储信息。通常用于主存
  • 读出1:MOS管接通,电容放点,数据线上产生电流
  • 读出0:MOS管接通后,数据显上无电流
  • 电容放电信息被破坏,是。读出后应该操作
  • 读写慢
  • 每个存储元制造成本更低,集成度高,功耗低
  • 需要刷新:2ms之内刷新一次,因为电荷会从电容里流失
  • 双稳态,1:A高B低;0:A低B高
  • 读出数据,触发器保持稳定,是非破坏性读出,不需要重写;
  • 读写更快
  • 每个存储元制造成本更高,集成度低,功耗大
  • 不需要刷新
  • 对比:

3.3.2:DRAM的刷新

  • 刷新周期:每行都刷新一遍:2ms;
  • 每次刷新一行
  • 刷新有存储器独立完成,不需要cpu控制
  • n位地址,由2n根选通线;改进:一维变二维:拆分为,则需要2n/2:行列都选通时可以进行读写操作。
  • 一维和二维的对比
  • 硬件支持,读出一行的信息后重新写入,占用1个读/写周期
  • 假设DRAM内部结构排列成128x128的形式,存取周期(读/写周期)为0.5us;2ms共2ms/0.5us=4000个周期
  • 刷新方式一:分散刷新:,系统的为1us:前0.5us用于读写,后0.5us用于刷新某行
  • 刷新方式二:集中刷新:2ms内,系统存取周期还是0.5us,
  • 刷新方式三:异步刷新:

3.3.3:DRAM的地址线复用技术

  • 本来要n条地址线,复用可以只要n/2条地址线

小结:

3.4:只读存储器ROM

  • RAM芯片:易失性
  • ROM芯片:非易失性

3.4.1:MROM

  • MROM:掩模式只读存储器
  • 任何人不可重写(只能读出)

3.4.2:PROM

  • 可编程只读存储器
  • 可用专门的PROM写入器写入信息,写一次就不能改写

3.4.3:EPROM

  • 可擦除可编程只读存储器
  • 通过特殊手段:可进行多次重写
  • UVEPROM:紫外线擦除全部信息
  • EEPROM:电擦除,可擦除特定的字

3.4.4:闪存

  • 闪存存储器
  • 可进行多次快速擦除,每个存储元只需要一个MOS管,位密度比RAM更高
  • 注意:由于闪存需要先擦除再写入,因此

3.4.5:SSD

  • 固态硬盘

  • 控制端元加存储单元(闪存flash芯片)

  • 可进行多次快速擦除重写。SSD速度快、功耗低、价格高。

  • 虽然可读可写:但还是只读存储器 小结:

3.5:主存储器与cpu的连接

3.5.1:单块存储芯片与cpu的连接


3.5.2:多块存储芯片与cpu的连接

  • 增加主存的存储字长-位扩展

  • 同时读或者写2位信息
  • 8kb的存储器

  • 增加主存的存储字长-字扩展

线选法和译码片选法


  • 通过片选信号,选中某一片存储器:加一个非门电路
  • 低电平有效的

  • 字位同时扩展法

小结:

3.5.3:关于译码器补充

  • MREQ:cpu主存请求信号

3.6:双口RAM & 多模块存储器

3.6.1:双端口RAM


3.6.2: 多模块存储器

  1. 多体并行存储器:每个模块都有相同的容量容量和存取速度,各模块都有独立的读写控制电路、地址寄存器和数据寄存器。他们既能并行工作,又能交叉工作

  • 可以看到:高位是读取完一个存储体才读取下一个存储体;而低位是每个存储体依次读取 ,宏观上读写一个字的时间接近r。
  • 假设每个存储体存取周期位T,存取时间为r,假设T=4r
  • 存取周期为T,存取时间(总线传输时间)为r,为了使流水线不间断,

  1. 单体多字存储器:每个存储单元存储m个字,总线长度为m个字,一次并行读出m个字。每次只能同时读取m个字,不能单独取其中某个字。
  • 注意:指令和数据在主存中必须是连续存放的。

小结:


3.7:Cache基本原理基本概念

3.7.1:Cache的工作原理

  • 局部性原理
  • 空间局部性:
  • 时间局部性:
  • 基于局部性原理,可以吧cpu目前访问的地址周围的部分数据放到Cache中。

3.7.2:性能分析

  • 设tc:访问一次Cache所需的时间
  • t m:访问一次主存所需的时间。
  • 命中率H:cpu欲访问的信息已经在Cache中的比率。
  • 缺失(未命中)率M=1-H
  • Cache–主存 系统的平均访问时间:t=Htc+(1-H)(tc+ tm)。先访问Cache,若Cache未命中再访问主存
  • 若cpu同时访问Cache和主存,Cache命中,立刻停止访问主存:t= Htc+(1-H) tm


3.7.3:解决“周围”

  • 主存和Cache以块为单位交换数据
  • 主存由块号和块内地址组成
  • 主存的块也叫页,Cache的块也叫行

小结


3.8:Cache-主存的映射方式

3.8.1:全相联映射(随意放)


3.8.2:直接映射

  • 直接映射:主存块在Cache中断位置=主存块号%Cache总块数
  • 末尾三位直接表示主存块所在的Cache位置,所以Cache中不需要存着三位

  • 如何访存

3.8.3组相映射(可放到特定分组)

  • 如何存放
  • 如何访存

小结

3.9:Cache的替换算法

  • 以全相联映射为例的四种算法

3.9.1:随机算法RAND

  • RAND:若Cache满了,则随机选择一块替换

3.9.2:先进先出算法FIFO

  • FIFO:若Cache满了,则替换最先被调入Cache的块
  • 抖动现象:频繁的换入换出现象

3.9.3近期最少使用LRU

  • LRU:为每一个Cache块设置一个“计数器”,用于记录Cache块多久没有被访问,计数器大的替换。
  • 手算
  • 机器算
  • Cache块总数=2n,则计数器只需要n位,且Cache装满后所有计数器的值一定不重复
  • 基于局部性原理,合理的,命中率高

3.9.4:最近不经常使用LFU

  • 为每一个Cache块设置计数器,用于记录被访问次数,替换计数器最小的。

  • 不是很遵循局部性原理,不如LRU

小结

3.10:Cache写策略(数据一致性)

3.10.1:写命中

  1. 全写法:当CPU对Cache写命中时,必须把数据同时写入Caceh和主存,一般使用写缓冲

  1. 写回法:当CPU对Cache写命中时,只修改Cache的内容,而不立即写入主存,只有当此块被换出时才写回主存

3.10.2:写不命中

  1. 写分配法:当CPU对Cache时,把主存中的块调入Cache,在Cache中修改。

  2. 非写分配法:当CPU对Cache时只写入主存,不调入Cache,

  • 注意,只有读不命中时才需要调入Cache

3.10.3:多级Cache

小结


3.11:页式存储器


  • 逻辑地址(虚地址):程序员视角看到的地址
  • 物理地址(实地址):实际在主存中的地址

  • 改进

  • 小结


3.12:虚拟存储器

3.12.1:页式虚拟存储器


3.12.2:段式虚拟存储器

  • 段式虚拟存储器:按照功能模块拆分

3.12.2:段页式虚拟存储器

第三章小结

第四章:指令系统

4.1:指令格式

4.1.1:操作码、地址码的概念

  • 指令:计算机执行某种操作的命令,是计算机运行的最小功能单位
  • 指令集:一台计算机所有指令的集合构成该机的指令系统
  • 一条指令:由操作码(OP)和地址码(A)构成

4.1.2:根据地址数目不同分类

  • 零地址指令:OP
  1. 不需要操作数,如空操作,停机,关中断
  2. 堆栈计算机,两个操作数隐含存放在栈顶和次栈顶,计算结果压回栈顶
  • 一地址指令:OP+A1

  • 二地址指令OP+A 1(目的操作数) +A2(源操作数)

  • 三地址指令OP+A 1 +A2+ A3(结果)

  • 四地址指令:OP+A 1 +A2+ A3(结果)+ A4(下址)

4.1.3:根据指令长度分类

  • 指令字长:一条指令单总长度(可能会变)
  • 机器字长:CPU进行一次整数运算所能处理的二进制数据的位数(通常与ALU有关)
  • 存储字长:一个存储单元中的二进制代码位数(通常与MDR位数相同)
  • 半字长指令、单字长指令、双字长指令===指令长度是机器字长的多少倍
  • 指令字长会影响取指令所需时间。如机器字长=存储字长=16bit,则取一条双字长指令需要访存两次
  • :指令系统中所有指令单长度都相等
  • :指令系统中各种指令单长度不等

4.1.4:根据操作码的长度不同分类

  • 定长操作码:指令系统中所有指令的操作码长度都相同
  • n位->2^n条指令
  • 可变长操作码:指令系统中各指令的操作码长度可变

4.1.5:根据操作类型分类

小结


4.2:扩展操作码指令格式

  • 定长指令字结构+可变长操作数

4.2.1:其中一种设计方法

  • 注意:1:不允许短码是长码的前缀,即短操作码不能与长操作码的前面部分的代码相同;2: 各指令的操作码一定不能重复

4.2.2:另一种设计方法

小结:


4.3:指令寻址

  • 指令寻址:下一条欲执行指令的地址(始终由程序计数器PC给出)

4.3.1:顺序寻址

  • 顺序寻址:(PC)+”1”–>PC,“1”理解为一个指令字长,实际加的值会因指令长度、编址方式而不同

4.3.2:跳跃寻址

  • 跳跃寻址:由转移指令指出JMP

小结


4.4:数据寻址

  • 数据寻址:确定本条指令的地址码指明的真实地址

  • 多地址
  • 接下来10种寻址方式;我们默认

4.4.1:直接寻址

4.4.2:间接寻址

4.4.3:寄存器寻址

  • 寄存器寻址

  • 寄存器间接寻址

4.4.4:隐含寻址

4.4.5:立即寻址

4.4.6:基址寻址

  • A存放偏移量

  • 作用
  • 优点:便于程序“浮动”,方便实现多道程序并发进行
  • 采用基址寻址无需修改指令中的地址码
  • 注意:基址寄存器是的,其。在程序执行过程中,基址寄存器(BR)的内容不变(作为基地址),形式地址可变(作为偏移量)
  • 当采用通用寄存器作为基址寄存器时,可由
  • 优点:扩大寻址范围

4.4.7:变址寻址

  • 作用:
  • 先看直接寻址的缺点

  • 显然非常不方便
  • 变址改变:

  • 基址&变址复合寻址

4.4.8: 相对寻址

  • 取走一条指令后,一定会自动+“1”

  • 作用 但a[0]是变的,可以采用“分段”


4.4.9:堆栈寻址

  • 硬堆栈

  • 软堆栈

4.4.10:小结


4.5:CISC和RISC

  • CISC :complex instruction set computer

  • RISC :reduced instruction set computer


标签: 电容数码表示法309固态电容的工作原理

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台