计算机组成原理知识点

第三章

半导体存储器设计

  • 需要解决:芯片的选用、地址分配与片选逻辑、信号线的连接

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 小结
    (1)对于存储器来说, m k ∗ n mk*n mkn的存储器,那么数据内存的寻址,也就是数据总线是 m k mk mk,这时就要求我们求出相对应的地址寻址的位数(例子1)
    (2)对于片选信号 C S n CSn CSn的选择,目前的认识是对于(1)求解的地址寻址的位数,根据你实际的组成之后符合 n n n的要求的存储器的实际的数量来决定使用几位地址来在地址寻址中留出几位来存储。
    (3)对于画的电路图,注意公用的地址位数一起画就好,片选信号的话,单独列举出来,对于输出的话,如果是组合存储器的拼接,注意一定要对应的输出,还有控制 R / W R/W R/W的话,直接全部一起控制即可
    (4)对于例子2,直接安排即可

存储器的读写及刷新

  • 存储器的读写:
    (1)存储器的读出时间:从给出有效地址后,经过译码电路、驱动电路的延迟,到读出所选中单元的内容,再经过I/O电路的延迟之后再外部总线上稳定地出现所读出的数据信息。
    (2)读周期:表示存储片进行两次连续读操作所必须间隔的时间,它总是大于或等于读出时间。
    在这里插入图片描述
    (3)写周期:要实现写操作,必须要求片选信号和写信号都为低。而且在地址变化期间,写信号必须为高(即无效)
    在这里插入图片描述
    动态存储芯片的刷新
  • (1)刷新定义:定期向电容补充电荷
  • (2)原因:动态存储器依靠电容电荷存储信息。平时无电源供电,时间一长电容电荷会泄放,需要定期向电容补充电荷,以保持信息不变。
  • (3)最大刷新间隔:2ms,在此期间,必须对所有的动态单元刷新一遍。
  • (4)刷新方法:按行读。刷新一行所用的时间–刷新周期(存储周期),刷新一块芯片所需的刷新周期数由芯片矩阵的行数决定。
  • (5)对主存的访问:
    A.CPU访存:由CPU提供行、列地址,随机访问。
    B.动态芯片刷新:由刷新地址计数器提供行地址,定时刷新
  • (6)刷新周期的安排方式
    在这里插入图片描述
    在这里插入图片描述

注意刷新与重写的区别:刷新是非破坏读出的动态,需要补充电荷以保持原来的信息;重写是破坏性读出后重写,以保持原来的信息。

并行存储器

  • 由于CPU和主存储器在速度上不匹配,而且在一个CPU周期中可能需要用几个存储器字,这便限制了高速计算,为了使CPU不至因为等待存储器读写操作的完成而无事可做,可以采取一些加速CPU和存储器之间有效传输的特殊措施

在这里插入图片描述

双端口存储器

  • 双端口存储器的逻辑结构
  • 双端口存储器:是指同一个存储器具有两组相互独立的读写控制线路,是一种高速工作的存储器
  • 2K×16位双端口存储器IDT7133,它提供了两个相互独立的端口,即左端口右端口。它们分别具有各自的地址线、数据线和控制线,可以对存储器中任何位置上的数据进行独立的存取操作。

在这里插入图片描述

  • 无冲突读写控制
  • 当两个端口的地址不相同时,在两个端口上进行读写操作,一定不会发生冲突。当任一端口被选中驱动时,就可对整个存储器进行存取,每一个端口都有自己的片选控制和输出驱动控制。
  • 有冲突读写控制
  • 当两个端口同时存取存储器同一存储单元时,便发生读写冲突。为了解决此问题,特设置了BUSY标志。由片上的判断逻辑决定对哪个端口优先进行读写操作,而暂时关闭另一个被延迟的端口。
    关闭的端口将不能再进行读写访问。

多模块交叉存储器

  • 存储器的模块组织方式
    一个由若干个模块组成的主存储器是线性编址的。这些地址在各模块有两种安排方式:
  • 顺序方式:某个模块进行存取时,其他模块不工作,某一模块出现故障时,其他模块可以照常工作,通过增添模块来扩充存储器容量比较方便。但各模块串行工作,存储器的带宽受到了限制。

在这里插入图片描述

  • 交叉方式:地址码的低位字段经过译码选择不同的模块,而高位字段指向相应模块内的存储字。连续地址分布在相邻的不同模块内,同一个模块内的地址都是不连续的。对连续字的成块传送可实现多模块流水式并行存取,大大提高存储器的带宽。

在这里插入图片描述

  • 多模块存储器的基本结构

在这里插入图片描述

  • 每个模块各自以等同的方式与CPU传送信息。CPU同时访问四个模块,由存储器控制部件控制它们分时使用数据总线进行信息传递。这是一种并行存储器结构。

定量分析

下面做定量分析:

  • 设模块字长等于数据总线宽度
  • 模块存取一个字的存储周期为T
  • 总线传送周期为τ
  • 存储器的交叉模块数为m
    为了实现流水线方式存取,应当满足 T=mτ(m=T/τ称为交叉存取度),因为交叉存储器要求其模块数必须大于或等于m,以保证启动某模块后经mτ时间再次启动该模块时,它的上次存取操作已经完成。
    这样,连续读取m 个字所需的时间为
    t 1 = T + ( m − 1 ) τ t1=T+(m-1)τ t1=T+(m1)τ
    而顺序方式存储器连续读取m个字所需时间为 t 2 = m T t2=mT t2=mT.交叉存储器的带宽确实大大提高了。

在这里插入图片描述
在这里插入图片描述

相联存储器

  • 相联存储器的基本原理 :
  • 相联存储器:指其中任一存储项内容作为地址来存取的存储器。
  • 关键字:选用来寻址存储器的子段。
  • 存放在相联存储器中的项可以看成具有KEY,DATA这样的格式。其中KEY是地址,DATA是被读写信息。
  • 相联存储器的基本原理:把存储单元所存内容的某一部分作为检索项(即关键字项),去检索该存储器,并将存储器中与该检索项符合的存储单元内容进行读出或写入。
  • 相联存储器的组成:存储体、检索寄存器、屏蔽寄存器、符合寄存器、比较线路、代码寄存器、控制线路等组成。
  • (1)检索寄存器:用来存放检索字,其位数和相联存储器的存储单元位数相等。
  • (2)屏蔽寄存器:用来存放屏蔽码,其位数和检索寄存位数相同。
  • (3)符合寄存器:用来存放按检索项内容检索存储体中与之符合的单元地址,其位数等于相联存储器的存储单元个数,每一位对应一个存储单元,位的序数即为相联存储器的单元地址。
  • (4)比较线路:把检索项和从存储体中读出的所有单元内容的相应位进行比较,如果有某个存储单元和检索项符合,就把符合寄存器的相应位置“1”,表示该字已被检索。
  • (5)代码寄存器:用来存放存储体中读出的代码,或者存放向存储体中写入的代码。
  • (6)存储体:由高速半导体存储器构成,以求快速存取。
    在这里插入图片描述

Cache 存储器

在这里插入图片描述

  • CACHE的功能
    CACHE是一种高速缓冲存储器,是为了解决CPU和主存之间速度不匹配而采用的一项重要技术。
  • CACHE能高速地向CPU提供指令和数据,从而加快了程序的执行速度。
  • 为追求高速,包括管理在内的全部功能由硬件实现

在这里插入图片描述

Cache 与 CPU 和 主存之间:

CPU与CACHE之间的数据是以字为单位,而CACHE与主存之间的数据交换是以块为单位的。当CPU读取主存中一个字时,便发出此字的内存地址到 CACHE和主存。此时CACHE控制逻辑依据地址判断此字当前是否在CACHE 中,若是,此字立即传送给CPU;若非,则用主存读周期把此字从内存读出送到CPU,与此同时,把含由这个字的整个数据块从主存读出送到CACHE中。

在这里插入图片描述

CACHE的命中率:在一个程序执行期间,设Nc表示cache完成存取的总次数,Nm表示主存完成存取的总次数,h定义为命中率。则有:
在这里插入图片描述

平均访问时间

若tc表示命中时的Cache访问时间,tm表示未命中时的主存访问时间,1-h表示未命中率,则Cache/主存系统的平均访问时间ta为:
t a = h t c + ( 1 − h ) t m ta=htc+(1-h)tm ta=htc+(1h)tm

访问效率

r = t m / t c r=tm/tc r=tm/tc表示主存慢于Cache的倍率,e表示访问效率,则有:
在这里插入图片描述

在这里插入图片描述

cache存储器地址映射

  • 一般来说,主存容量远大于Cache容量。因此,当要把一个主存块调入Cache时,就有一个如何放置的问题。这就是映象规则要解决的。映象规则有以下三种
  • 1、全相联映象(fully associative)
  • 2、直接映象(direct associative)
  • 3、组相联映象(set associative)
全相联映象
  • 在全相联映射中,将主存中一个块的地址与块的内容一起存于CACHE的行中,其中块地址存于CACHE 行的标记部分中。
    CACHE的数据块大小称为。主存的数据块大小称为。行与块是等长的。
  • 这种方法可使主存的一个块直接拷贝到cache中的任意一行上,非常灵活。
  • 它的主要缺点是比较器电路难于设计和实现,因此只适合于小容量cache采用。

在这里插入图片描述

直接映射方式
  • 这也是一种多对一的映射关系,但一个主存块只能拷贝到cache的一个特定行位置上去。
  • cache的行号i和主存的块号j有如下函数关系: i = j m o d m i=j mod m i=jmodm (m为cache中的总行数)
  • 直接映射方式的优点是硬件简单,成本低。
  • 缺点是每个主存块只有一个固定的行位置可存放,容易产生冲突。因此适合大容量cache采用。

在这里插入图片描述

组相联映射方式
  • 这种方式是前两种方式的折衷方案。它将cache分成u组,每组v行,主存块存放到哪个组是固定的,至于存到该组哪一行是灵活的,即有如下函数关系:
    m = u × v m=u×v mu×v  组号  q = j m o d u q=j mod u qjmodu
  • 组相联映射方式中的每组行数v一般取值较小,这种规模的v路比较器容易设计和实现。而块在组中的排放又有一定的灵活性,冲突减少。

在这里插入图片描述

习题

在这里插入图片描述

分析:

  • 对于组相联cache,对于内存地址格式的安排:最低位是块的大小w,剩余的部分是块的数量s,其中块的数量里面的低位中,为chche 中的组数d,剩余部分就是标记s-d

查找算法

  • 通过查找目录表来实现
    Cache中设有一个目录表,该表所包含的项数与Cache的块数相同,每一项对应于Cache中的一块,用于指出当前该块中存放的信息是哪个主存块的。它实际上记录了该主存块的块地址的高位部分,称为标识(tag)。每个主存块能唯一地由其标识来确定。
    设置有效位。根据相联度有不同的index。

在这里插入图片描述
只需查找候选位置所对应的目录表项
在这里插入图片描述
在这里插入图片描述

cache 存储器–替换策略

  • cache工作原理要求它尽量保存最新数据,必然要产生替换。
  • 替换策略:
    随机法
    FIFO
    LRU
  • 最不经常使用(LFU)算法
      LFU算法将一段时间内被访问次数最少的那行数据换出。每行设置一个计数器。从0开始计数,每访问一次,被访行的计数器增1。当需要替换时,将计数值最小的行换出,同时将这些行的计数器都清零。
      这种算法将计数周期限定在对这些特定行两次替换之间的间隔时间内,不能严格反映近期访问情况。
  • 近期最少使用(LRU)算法
     LRU算法将近期内长久未被访问过的行换出。每行也设置一个计数器,cache每命中一次,命中行计数器清零,其它各行计数器增1。当需要替换时,将计数值最大的行换出。
      这种算法保护了刚拷贝到cache中的新数据行,有较高的命中率。
  • 随机替换
      随机替换策略从特定的行位置中随机地选取一行换出。在硬件上容易实现,且速度也比前两种策略快。
      缺点是降低了命中率和cache工作效率。
  • 写策略
    写回法
    全写法
    写一次法
  • 写回法:
    当CPU写CACHE命中时,只修改CACHE的内容,而不立即写入主存。只有当此行被换出时才写回主存。
    如果CPU写CACHE未命中,未包含欲写字的主存块在CACHE分配一行,将此块整个拷贝到CACHE后对其进行修改.
    实现这种方法时,每个cache行必须配置一个修改位,以反映此行是否被CPU修改过。
    这种方法减少了访问主存的次数,但是存在不一致性的隐患。
  • 全写法:
    当写CACHE命中时,CACHE与主存同时发生写修改,因而较好地维护了CACHE和主存内容的一致性。
    当写CACHE未命中时,只能直接向主存进行写入。
    缺点是降低了cache的功效。
  • 写一次法:
    基于写回法并结合全写法的写策略,
    写命中与写未命中的处理方法与写回法基本相同,只是第一次写命中时同时要写入主存。

习题汇总

在这里插入图片描述
 在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关推荐

  1. 计算机组成原理

    2024-05-02 23:36:01       40 阅读
  2. 计算机组成原理讲解

    2024-05-02 23:36:01       38 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-02 23:36:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-02 23:36:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-02 23:36:01       82 阅读
  4. Python语言-面向对象

    2024-05-02 23:36:01       91 阅读

热门阅读

  1. Agent AI智能体的未来杂谈

    2024-05-02 23:36:01       29 阅读
  2. Runtime.getruntime.exec注意事项

    2024-05-02 23:36:01       30 阅读
  3. 2024最新华为OD机试试题库全 -【找单词】- C卷

    2024-05-02 23:36:01       32 阅读
  4. Xcode安装与配置

    2024-05-02 23:36:01       26 阅读
  5. RedisTemplate实现令牌桶限流

    2024-05-02 23:36:01       23 阅读
  6. 网络新闻的力量:如何用网络爬虫挖掘数据宝藏

    2024-05-02 23:36:01       34 阅读
  7. linux 创建管理员用户并使用生成秘钥登录服务器

    2024-05-02 23:36:01       31 阅读
  8. MySQL:DDL和DML语句

    2024-05-02 23:36:01       34 阅读
  9. 「笔试刷题」:添加逗号

    2024-05-02 23:36:01       28 阅读
  10. 基于python的天气网站数据爬取和可视化分析项目

    2024-05-02 23:36:01       31 阅读
  11. UIViewController中添加一个局部的 UITableView

    2024-05-02 23:36:01       26 阅读
  12. 机器人技术概述_2.机器人4.0的核心技术

    2024-05-02 23:36:01       30 阅读