iT邦幫忙

2024 iThome 鐵人賽

DAY 8
2
自我挑戰組

上班辦公室,下班讀書室:RISC-V / ARM64 體系結構編程與實踐系列 第 8

[鐵人賽] Day 8 公司讀書會 - RISC-V 第16章 - Memory Barrier Instruction (上)

  • 分享至 

  • xImage
  •  

今日的行程:

讀書室:19:30-20:30

正片開始

今日的記錄:
記錄公司禮拜五的讀書會內容

Memory Barrier Instruction

思考題目

  1. 請問下列程式嗎? assert(a == 1) 有沒有可能失敗?
CPU 0                     CPU 1
----------------------------------------------------
void func0 ()             void func1()
{                         {
    a = 1;                    while (b == 0) continue;
    b = 1;                    assert (a == 1);
}                         }
  1. 什麼是儲存緩衝區 (store buffer)?
  1. 什麼是無效隊列 (invalidate queue)?

Cache & Cache Coherency

現今的 CPU 運作速度和記憶體的存取速度存在著不小的落差,所以通常會用快取 (cache) 來嘗試隱藏記憶體的存取延遲,但由於各自 CPU 可能會有各自的私有快取 (private cache),為了避免不同 CPU 的 cache 之間,對同一份資料有不同的副本,所以需要快取一致性協定 (cache coherence protocol),來維護各個快取間的資料正確性。常見的有 MESI、MEOSI 等等。
cache coherence protocl 通常分為兩大類,directory based 和 snooping based,snooping based 會需要送出 broadcasting 的訊號到 bus 上,然後監聽 bus 訊號,會占用很多的 bus 資源,所以擴展性較 directory based 的差,但實作相對簡單,所以在相對小型的系統上,主流還是使用 snooping based 的 coherence protocol。

CPU stall

在 snooping based 的 cache coherence protocol 運作的過程,可能會因為訊息頻繁的傳遞、Bus 繁忙,而 CPU 需要等某些訊號發生才能繼續執行,導致 CPU 性能下降,這稱為 CPU stall。
具體來說可能是這樣的情境,CPU0 要修改 cache 的內容但是其餘的 CPU 也有這條 cache line,這時候會發生的事情是,CPU0 送出一個請 CPU{1...N} invalidate cache 的訊息,而 CPU0 需要等到 CPU{1...N} 回了一個 ACK 訊息才能繼續往下執行。

store buffer & invalidate queue

為了解決以上性能問題,引進了 store buffer 和 invalidate queue 的機制。
store buffer 是 CPU 尚未收到 ACK 訊號之前,可以先將資料寫入 store buffer 中,等到收到 ACK 訊號之後,再把 store buffer 中的資料寫入 cache 中;
而因為 store buffer 的空間也不會太多,如果空間用完了,還是會有相同的問題,所以引進了 invalidate queue 的機制,當 CPU 收到 invalidate 訊號時,可以先把這個訊號記錄在 invalidate queue 中,就先回 ACK 訊號,以加速整個訊息交換的過程。

總結

  • RISC-V 使用的 memory model 是 WMO (Weak Memory Ordering),在約束條件沒有那麼強的 memory model 下,軟硬體能嘗試進行許多效能優化,而在激進的效能優化策略上,也大大的增加把事情做對的難度。
  • 今天記錄的是第 16 章的前半部分,引進了 store buffer 和 invalidate queue 來做優化,明天來記錄這樣的優化可能引進什麼樣的問題。

上一篇
[鐵人賽] Day 7 New Extensions: Smstateen/Ssstateen
下一篇
[鐵人賽] Day 9 公司讀書會 - RISC-V 第16章 - Memory Barrier Instruction (中)
系列文
上班辦公室,下班讀書室:RISC-V / ARM64 體系結構編程與實踐30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言