考研408--组成原理--day6--外部存储器&Cache

(以下内容全部来自上述课程)

目录

  • 外部存储器
    • [1. 磁盘存储器](#1. 磁盘存储器)
      • [1.1 组成](#1.1 组成)
      • [1.2 性能指标](#1.2 性能指标)
      • [1.3 磁盘地址](#1.3 磁盘地址)
      • [1.4 磁盘阵列](#1.4 磁盘阵列)
      • [1.5 小结](#1.5 小结)
    • [2. 固态硬盘(SSD)](#2. 固态硬盘(SSD))
      • [2.1 小结](#2.1 小结)
      • [2.2 机械硬盘vs固态硬盘](#2.2 机械硬盘vs固态硬盘)
      • [2.3 结构](#2.3 结构)
      • [2.4 拓展](#2.4 拓展)
  • Cache
    • [1. 工作原理](#1. 工作原理)
    • [2. 性能分析](#2. 性能分析)
    • [3. 问题](#3. 问题)
    • [4. 小结](#4. 小结)
  • Cache和主存的映射方式
    • [1. 全相联映射](#1. 全相联映射)
    • [2. 直接映射](#2. 直接映射)
    • [3. 组相联映射](#3. 组相联映射)
    • [4. 小结](#4. 小结)
  • Cache替换算法
    • [1. 随机算法(RAND)](#1. 随机算法(RAND))
    • [2. 先进先出算法(FIFO)](#2. 先进先出算法(FIFO))
    • [3. 近期最少使用算法(LRU)](#3. 近期最少使用算法(LRU))
    • [4. 最不经常使用算法(LFU)](#4. 最不经常使用算法(LFU))
    • [5. 小结](#5. 小结)
  • Cache写策略
    • [1. 写命中](#1. 写命中)
      • [1.1 写回法](#1.1 写回法)
      • [1.2 全写法](#1.2 全写法)
    • [2. 写不命中](#2. 写不命中)
      • [2.1 写分配法](#2.1 写分配法)
      • [2.2 非写分配法](#2.2 非写分配法)
    • [3. 多级Cache](#3. 多级Cache)
    • [4. 小结](#4. 小结)

外部存储器


注意:写入数据是1bit1bit写入的,所以要连续的读出来,中间还需要其他的零件才能实现。

可以设定SN是1,NS是0,所以就可以按照二进制写入数据。

1. 磁盘存储器

类似于唱片,可以拨动磁头只能存储位置。

左侧图片是磁盘驱动器,右侧图片是磁盘控制器。

1.1 组成

  • 磁头:磁盘的面。
  • 柱面数:磁盘面儿上的圈圈。(因为好多个磁盘面叠起来就是一个圆柱体)
  • 扇区数:切割面出现的扇形区域。

    一个磁盘的正反面都可以涂上磁层,磁头的上下两端都可以读取数据,第一个磁盘上没有磁头是因为这个磁头只能读单侧,造价成本太高,所以第一层上面就没有磁头。

1.2 性能指标

  • 容量:格式化容量的一部分可以拿去装别的东西,所以一般它的容量比非格式化容量小。
  • 密度:每个圈圈上的信息量都是相等的,所以大的圈信息分布得就稀疏,小的圈就密集,也越难制造。
  • 道密度:半径-->图中右边儿的蓝色线,左边儿的蓝线是磁头
  • 位密度:一圈儿-->图中红色线
  • 面密度:道密度*位密度
  • 寻道:把磁头放到想查找的信息的那个圈儿上。
  • 旋转延迟时间:不一定磁头刚好放在信息弧上,所以得等他自己转过来。
  • 传输时间:划过信息弧的时间。

1.3 磁盘地址

因为读写都是一比特一比特来的,所以就需要用并串变换电路把数据串在一起。

1.4 磁盘阵列

数字越大的版本,性能越好。

RAID0:因为数据都只有一个版本,所以无冗余也没有校验。

RAID1:相同的数据存两遍。

RAID2:Disk0~3存信息,Disk4、5、6是校验位,所以有纠错功能。

1.5 小结

2. 固态硬盘(SSD)

2.1 小结

2.2 机械硬盘vs固态硬盘

ps:机械硬盘是磁盘的一种。

2.3 结构

  • 固态硬盘-->块号
  • 机械硬盘-->扇区
  • 芯片包含块,块包含页。

    如果想擦除数据,是整个块都擦除的,如果你只想写入这个块的某一页的数据,那就需要把不用动的数据复制到另一个块内,擦除原来的块上的数据,把新的页的数据写入后块的那一页中。

2.4 拓展

Cache

Cache可以让访问速度更快。

1. 工作原理

就是类似于你买快递,买的东西被一个地区一个地区传递,最后送到你的手里。

简单来说,就是一个东西,你可能某个时间段天天用,但是又可能过一阵就不用了,啥时候能用上都说不准 ,所以你是把它随身携带呢,还是放在别的地方呢?(涉及Cache替换算法)

2. 性能分析

分为两种情况:

  • 先访问Cache,找完发现没有再找内存
  • Cache和内存同时找

显而易见,第二种更有效率一点儿

3. 问题

Cache和主存的块的容量必须一样,也就是原封不动复制一整个东西备用。

就好比,你买了两只唇膏,有一天你想用,刚好随身(Cache)有,没有的话就只能去家里(内存)找了。

  • 主存地址共22位:4M=222
  • 块内地址10位:1K=210
  • 块号12位:4M/1K=222-10=212

    沿用上述的情景-有待解决的问题:
  • 对应关系:可以说是我的唇膏应该放在我身上的哪个口袋里
  • 内存:我身上的兜都满了,还想带别的东西,那么之前随身携带的东西应该怎么办
  • 一致性:用文本理解吧,唇膏不太恰当

4. 小结

Cache和主存的映射方式

想想你身上的兜有很多,那么怎么分清每个兜里都装了什么东西呢?这就需要标记 了,相当于便签,记录兜里的东西是什么。
有效位 就是用来记录你的兜里有没有放东西。

1. 全相联映射

我想带的东西,身上的兜随便儿放。

  • 主存地址28位:256M=228
  • 块内地址6位:Cache行长64B=26B
  • 主存块号22位:256M/64B=228-6=222
  • 主存块号-->蓝色标记-->22位
  • 块内地址-->黑色-->6位
  • 先根据蓝色标记找到具体的块号,块号中不还分了好多地址么,然后再在这个块中寻找固定的地址。

2. 直接映射

自己的哪个兜都固定 放啥,下次放同样的东西就还放这个兜里。

当然,缺点就是如果没有固定的东西,那这个兜就只能空着了,浪费空间。

因为有了固定性 ,所以主存块号的后三位(23块Cache),就证明了自己的东西放在了哪个兜,你东西还没放兜里呢,就直接翻兜肯定啥都没有,所以可以把后三位去掉,剩余前19位,就可以去找主存的大体位置,然后再根据块内地址精准定位。

3. 组相联映射

就是我这个兜固定放这一类 的东西,好比这个兜只能放唇膏,我这个牌子的唇膏用完了,还可以放另一个牌子的唇膏。

和直接映射的固定类似,这里的Cache被分成了22组,所以后两位就代表哪两个兜用来放这一类的东西,所以用前20位作为标记就可以。

4. 小结

Cache替换算法



1. 随机算法(RAND)

纯随机,无规律。

2. 先进先出算法(FIFO)

非常丝滑地向右下斜着挨个儿替换。(看红色字体)

3. 近期最少使用算法(LRU)

这里就需要用到计数器,用来记录哪个数据一直没有被用到,就直接把它踢出去。

好像数字炸弹啊。

做题的话:

一到要提出数据的时候,就从他前面画一个线隔断,往前找,最近的三个谁没出现就踢谁。

规则非常人性化:

  • 被访问了的数据的计数器就清零,比它低的就都+1,其余不变(是因为再大也大不到哪儿去了,这个其余就是最大的)
  • 如果有地方放,那就愉快地直接放,计数器归零,其他的都+1
  • 如果没地儿放,就把计数器最大数字的踢出去,新加入的为0,其余+1.


    但是!因为你刚拿出去的东西说不定又马上想用了,所以...这就是缺点。

4. 最不经常使用算法(LFU)

这次的计数器记录的是数据的使用次数

空间不够了,谁用得最少,就给谁踢出去。

如果碰到计数器相等且都是最小,可以用先进先出,或者直接淘汰行数最小的。

但是!现在经常常用的,以后可能用到的少,所以...这就是缺点。

5. 小结

Cache写策略


1. 写命中

1.1 写回法

只修改Cache,替换的时候再修改主存。

1.2 全写法

Cache和主存同时修改。

Cache和主存同时修改,但是是利用写缓冲,将修改内容写到写缓冲里,然后再写入主存中。

2. 写不命中

2.1 写分配法

想修改谁,就把谁调入Cache里修改。

搭配写回法就是Cache改了,等它被替换的时候再修改主存。

2.2 非写分配法

想修改谁就直接在主存里修改了。

3. 多级Cache

无限靠近CPU,就无限快(bushi)

4. 小结

相关推荐
立志成为大牛的小牛21 小时前
数据结构——五十四、处理冲突的方法——开放定址法(王道408)
数据结构·学习·程序人生·考研·算法
立志成为大牛的小牛1 天前
数据结构——五十三、处理冲突的方法——拉链法(王道408)
数据结构·学习·考研·算法
元亓亓亓1 天前
考研408--计算机网络--day6--局域网&IEEE802&VLAN
网络·计算机网络·考研·vlan·局域网·ieee
B站_计算机毕业设计之家2 天前
python招聘数据 求职就业数据可视化平台 大数据毕业设计 BOSS直聘数据可视化分析系统 Flask框架 Echarts可视化 selenium爬虫技术✅
大数据·python·深度学习·考研·信息可视化·数据分析·flask
元亓亓亓2 天前
考研408--操作系统--day6--内存&内存管理&连续分配管理方式
考研·操作系统·内存·408
元亓亓亓3 天前
考研408--组成原理--day5--存储系统&主存储器&DRAM和SRAM
考研·存储·408·组成原理
鹓于4 天前
第十四章 DNA的生物合成
考研
以梦为马mmky4 天前
考研专业课135+初试复试经验!
经验分享·考研·信号与系统·山东师范大学
烧冻鸡翅QAQ5 天前
考研数学:多元函数微分学
考研