一次内存读,硬件走了几步
一次普通的内存读,硬件到底走了几步?
複製提示詞,選一家接著聊 —— 它會當面試官逐幕問你,而不是把答案倒給你。
手機上裝了對應 App 的,系統會直接開 App。微信裡點不開外部 App,得先用瀏覽器打開。
複製走的那段末尾帶著判卷用的底牌,別自己先讀 —— 自己推出來過才算學到。
这一份的分水岭是一问:翻译缓存没命中,和一个页根本不在内存里,是同一件事吗? 两者差三到四个数量级,一个纯硬件几十周期,一个要陷进内核 —— 分不清这两个,线上看到 fault 数飙升时就不知道该往哪查。
前面几幕会逼你自己算出「一张页表要 4MB、每个进程一张」,然后自己推出为什么必须分级、为什么必须有那个缓存。
顺带回答一个很多人记反的问题:虚拟内存的主要目的到底是不是「内存不够时拿磁盘顶上」。
這一份練的是
分頁與位址轉換
快取與快取行
延遲數量級
這一份的正文在倉庫裡 (末尾就是底牌,點進去會看見)
練過沒有
登入之後可以記下「這道題我練過」,下次回來看得到是哪天練的。
練過的人寫的心得
還沒有人寫。練完之後,說說你和模型聊出了什麼 —— 哪一幕被問住了,哪個結論你後來改了。
怎麼用
這一批是學習型的:它會引導你,不會追到你說不出話為止。卡住時它先問你卡在哪一層(沒聽過 / 知道但不明白為什麼 / 明白但用不上),再決定給什麼;同一個點引導兩次還不通才直接講,講完要你用自己的話複述一遍。
它會一直逼你算數:答「有開銷」「比較快」會被打斷。說得出結論說不出數字,就是背的 —— 這批練的就是這個。
怎麼開始
- 挑一份,點開它,把提示詞複製走。
- 新開一個空對話貼進去,什麼都別說,等它問第一個問題。
- 準備好被追問數量級:幾奈秒、幾微秒、差幾倍。答不上來就說不知道,它會記一筆然後繼續。
中途隨時能喊的四個口令
跳过立刻進下一幕换个说法這一處換個角度再講一遍直说吧講完整答案,然後要我複述复盘立刻跳到收尾,輸出復盤卡片
三條坑
- 末尾的底牌別自己先讀 —— 那一欄「常見的想錯」寫的就是每一問的答案。
- 別急著拋名詞。說出「這是 TLB miss」很容易,說出它比缺頁快多少才算會。
- 它開始誇你的時候,提醒它看「不許誇我」那條。引導不等於哄。
想補數量級感先做「隨機讀」和「首位元組」;線上排查用得上的是「malloc」「TCP 卡住」「上下文切換」;寫多執行緒程式做「重排序」和「偽共享」。
登入之後可以寫心得。