iT邦幫忙

2021 iThome 鐵人賽

DAY 13
0
自我挑戰組

杰哥的考研紀錄系列 第 13

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


上一篇
Day-12 Multilevel Cache
下一篇
Day-14 Disk很大,你忍一下
系列文
杰哥的考研紀錄30

尚未有邦友留言

立即登入留言