Day-13 Miku Memory

Miku Memory

tags: IT铁人

虚拟记忆体(Virtual Memory)

前面说到了Cache System後面还有一个Virtual Memory,Virtual Memory是利用硬碟支援Main Memory的技术。比如说我们做了需要很多Memory的事情,像是Chrome开了很多分页或是开了很多APP,8GB或是16GB的Main Memory有时候会塞不下,所以我们就需要安全且有效率的方法实行,否则电脑将无法正常运作。

虚拟位址(Virtual Address)

在支援Virtual Memory的电脑中,处理器会产生一个Virtual Address,并且藉由硬体及软件转译程Physical Address。

也就是说电脑会告诉你东西的编号,要去某个地方询问才能得知东西的真正位置在哪个装置的哪个位置。

Page Table

不同於Cache System的单位名称Block,Virtual Memory的单位称为Page,如果要求的page不在Main Memory,则称为page fault。

因为记忆体跟硬碟的存取速度有明显的落差,所以Virtual Memory注重的是减少page fault,通常采用Fully Associative,并且也会使用教聪明的演算法更换page。

我们透过Page Table储存Virtual Address,并将此表存在Main Memory中,Page Table架构如下:

透过page table可以找到phsical page number,并且有一个valid bit,如果是1代表该page在Main Memory中,反之则在disk中,并且称为page fault。因为将page放在Main Memory中程序才能正常执行。

Reference Bit & Dirty Bit

为了更好的演算法决定哪个page要被替换掉,我们需要加上一些资讯。Reference bit就是拿来检测该page多久没有被使用到了,不过因为LRU成本较高,我们使用的只是类似LRU的作法而已。

因为写回硬碟相当花时间,所以我们又增加了一个bit来确认该page有没有被更动,有发生改动才花时间写回硬碟。

增加了这两种bit,在加上Main Memory还有disk的图形就会如下图所示:

如果存取到不在Main Memory(Physical Memory)中的就代表page fault,此时要在disk才能翻到。

可以注意到上面还有一个TLB,马上就来说说他是什麽。

TLB

我们凡是都会希望再快一点,page的存取一样有区域性,所以现在用到的page很可能等等又要用到,相较於现在page table放在Main Memory中,如果我们能另外用一个硬体当作一个特别的page table,速度又可以提昇许多。

TLB就像是page table的cache,可以更快速的取得某些physical address,如果这边没有找到再去page table找,所以通常TLB不会太大,以免花在TLB的时间太多。

Miss种类

前面提到如果需求的资料不再较为快速的那一层称为miss,不过miss还可以分成三个类型:

名称 原因
强迫性失误(Compulsory misses) 第一次使用的区块必定不在快速的那一层中,所以必定发生失误,也称为冷开机失误(cold-start misses)。
容量性失误(Capacity misses) 程序执行时如果容量不足以包含所有需要的区块时,区块会不断被取代。
冲突性失误(Conflict misses) 在Set Associative以及Direct Mapped中,当许多区块撞到同一个entry中,导致其不断遭替换。

既然知道了miss的原因,我们就可以着手改善:Conflict misses可以透过增加关联度降低,不过可能造成读取速度变慢;Capacity misses可以透过加大容量,不过可能导致整体效能降低;Compulsory misses可以增加区块大小,不过会造成miss penalty增加。

各种作法都会有优缺点,最後该怎麽做需要不断的实验,才能找出对当下最有帮助的作法。

上一篇 下一篇
Multilevel Cache Disk很大,你忍一下

不断尝试be like


<<:  Android学习笔记16

>>:  Day10 为什麽电脑懂我的指令?函数宣告 part2

[DAY1] 在开始之前

Hello 大家好,我是阳光伏特家的工程师 Oscar,这是我第一次参加铁人赛!每年都想报名结果每年...

[NestJS 带你飞!] DAY15 - Dynamic Module

前面有介绍过 Module 的一些基本使用方式,然而有一项非常强大的功能没有被提及,就是 动态模组(...

【後转前要多久】# Day27 Angular - 介绍

终於进入到Angular环节了, 个人学习过程中主要以保哥的Angular教学为主。 Angular...

[职场]舒服的工作环境是需要经营的

同一个部门,类似的职缺;为什麽有些人做的轻松惬意,而有些人却累的跟狗一样? 如果在过往的工作中只遇过...

[Day14] 传值或传址(上)

JavsScript 的资料型别分成两大类,第一类是基本型别,第二类是物件型别,型别的介绍可以参考前...