---
# System prepended metadata

title: 計算機組織
tags: [Memory Management, OS]

---

計算機組織
===
---

###### tags: `OS` `Memory Management` 

---

# Cache Memory
:::info
硬體: CPU L1、L2 ... Memory
作用: 暫存在 Physical Address 上的資料
欄位:
| Valid | Tag | Data |
| ----- | --- | ---- |
:::
![](https://i.imgur.com/Xa4tr7V.png)

Physical Address 分成三部分:
| Physical Address Tag | Cache Index | Block offset |
| -------------------- | ----------- | ------------ |

每次存取 Physical Address 前，會先查看 Cache 有沒有暫存
1. 搜尋對應的 Cache Index
2. 看 Tag 是否一樣
    - 一樣則回傳 Cache 內的 Data
    - 不一樣的話，再實際去 Main Memory 存取


# TLB
:::info
硬體: MMU
作用: 加快 Virtual Address 轉譯為 Physical Address 的速度
欄位:
| Valid | Dirty | Ref | Page Number | Frame Number |
| ----- | ----- | --- | ----------- | ------------ |
:::
- Valid
    是否有值，只是用來 Check 這筆紀錄中裡面是否有實際存著一筆 (Page Number, Frame Number) 對應關係
    
- Dirty
    Check 此 Memory 上有無改動，主要幫助 Replacement 加速

- Ref
    Check 此 Memory 最近有被存取，主要幫助 Replacement 加速

- 運作流程
    Virtual Memory 分為兩部分 :
    | Page Number | Offset |
    | ----------- | ------ |
    一個 Virtual Memory 進入 TLB
    - 若 TLB 有存此 Page Number 對應什麼 Frame Number
        - Physical Memory = Fram Number + Offset
    - 若沒有
        - TLB Miss，再去查 PTE

# PTE
:::info
硬體: 存在與 Main Memory (RAM)
作用: 將 Virtual Address 轉譯為 Physical Address
欄位:
| Valid | Dirty | Ref | Frame Number |
| ----- | ----- | --- | ------------ |
:::
基本上跟 TLB 一樣，但是卻沒有 Page Number 欄位
可以將 PTE 想成一個 Array

- 運作流程
    一個 Virtual Memory 進入 PTE
    - Physical Memory = PTE[Page Number].(Frame Number) + offset

由此可知，Page Number bit 太大，會導致PTE超級大張(2^(Page Number Bit))

- 圖表
![](https://i.imgur.com/ZIVw7hg.png)


