「已知計算機M字長為32位,按字節編址,採用請求調頁策略的虛擬存儲管理方式,虛擬地址為32位,頁面大小為4KB;數據Cache採用4路組相聯映射,數據區大小為8KB,主存塊大小為32B。」
本書首發天天看小說->𝙩𝙩𝙠.𝙩𝙬,提供給你無錯章節,無亂序章節的閱讀體驗
李林把試卷最後一題投影到白板上,念完題干,轉過身來。
台下二十來雙眼睛看著他。
有好奇的,有懷疑的,還有來自胡云程的審視。
但他毫不在意,只是在腦海中捋順著思路。
在【保持簡單】的視角下,李林眼前的題干,其實和其他人眼中完全不同。
他試圖用語言來描述這種不同。
「這道題看起來很複雜,但其實每一問只涉及一個獨立的知識點,所以,我們先把它拆開。」
李林在題幹上輕輕畫了一道斜槓,將第一段文字和第二段文字隔開。
又畫了一道。
再一道。
很快,壓軸題被他用三道斜槓拆成了四個相互獨立的知識模塊——
虛擬內存、Cache映射、數組存儲、循環訪問模式。
胡云程的眉頭原本擰著,擔心這小子不知天高地厚,一上來就要硬啃最難的骨頭。
但當他看到李林沒有從任何一個具體的公式切入,而是先拆分題干時,不由得默默點頭。
這個拆題的方式不是他教的。
如果是他,應該是按出題順序逐問推進,先講頁表再講Cache,一路順下來。
但李林從題目本身入手,先切割結構再填充細節。
這個視角反過來,不是從答案倒推,而是從問題本身出發。
有點意思。
他摸了摸下巴,突然察覺到,本來空無一人的餘光里,不知道什麼時候冒出來一個黑影。
把胡云程嚇得一個振刀,手中的保溫杯差點甩出去當暗器。
同時,黑影也被嚇得不輕。
「不是,老胡,我就蹭個課聽,你不至於要打我吧。」
胡云程嘴角抽了抽,才發現來的是老熟人——
羅冠。
看這小子自說自話地進來不說,竟然還舉起了手機,像是在錄像。
「不是,你代表省競賽組暗訪來了是吧……不對,你TM從哪進來的!」
「後門沒鎖。」
「……」
「誒呀,老胡,這不是想你了嘛。那邊試卷正在封裝呢,我就過來看看你,沒想到還能看到大神講題,這下賺到了。有這個學生啊,你這次金牌有望——」
「大神?」
「對啊,大神,剛才我監考的他,那可太牛b……咳,後生可畏了。」
「……」
聽到這話,胡云程莫名有種被劇透的無力感。
完了。
完全了。
又讓這小子裝到了。
他TM到底是什麼時候學的?!
還是說……
和上次一樣,他其實早就會。
就是為了打我的臉。
「……」
我臉有那麼大嗎,你TM天天打啊!
雖然心裡驚濤駭浪,但是在小學弟面前,胡云程依舊面沉如水,
「嗯,大神,我的學生。」
「哎呀呀——」
羅冠突然想起來什麼似的,連忙捂住自己的嘴,
「不能說話了,剛才監考的時候就是因為走神,他解的最後一題我都沒看明白。」
「……」
到底誰是老師!
話雖如此,胡云程還是老老實實地轉回了注意力。
他這個小學弟,水平也不簡單……
竟然這麼推崇李林嗎?
一旁,羅冠的鏡頭正穩穩地對著講台,畫面里李林正用手指點著第一塊區域。
「先看第一個模塊,虛擬內存。題干給了四個關鍵點,分別是虛擬地址32位、頁面大小4KB、按字節編址和請求調頁,沒有頁面置換。那我們要先搞清楚一件事,這些參數放在一起,到底在描述一個什麼樣的系統。」
李林在黑板上畫了一個扁長的矩形,從中間一刀切成兩半。
「虛擬地址要分成兩部分,虛頁號和頁內偏移。」
「頁面大小4KB,就是2的12次方,所以頁內偏移占低12位。虛擬地址總共32位,剩下的高20位就是虛頁號。」
「這個過程不需要背,只需要知道為什麼這麼分。因為CPU發出一個地址,MMU要先確定它屬於哪個頁面,再確定它在這個頁面里的具體位置。前者就是虛頁號,後者就是頁內偏移。」
李林似乎非常清楚他們的痛點在哪,沒有把結論直接扔出來,而是從頭推了一遍。
從「為什麼」開始,而不是「是什麼」。
台下的學生逐漸被他講得內容所吸引,有幾個腦瓜轉得快的,已經開始記筆記了。
「然後看數組。」
李林的粉筆移到第二塊區域,
「a[24][64],int類型,一個元素占4個字節。一共有24乘64,1536個元素。占多少內存?」
「1536乘以4,6KB!」
台下跟得上的,已經開始稀稀拉拉地回應了。
蛙趣,還有互動環節。
羅冠默默沖一旁的胡云程比了個大拇指。
你這學生是從哪挖來的,連教學風格都這麼成熟。
胡云程:……
是啊,從哪挖來的來著。
我記得是普通班吧?
「沒錯,一個頁面只能裝4KB,所以6KB需要兩個頁面。這就回答了第一小問的第一部分,數組a分為兩個頁面存儲。」
李林頓了頓,在剛剛寫下的「2個頁面」旁邊又畫了條箭頭,指向「缺頁異常」。
「題目說了,執行之前數組a不在主存。訪問第一個頁面的時候,頁面還沒調入內存,缺頁異常一次。訪問第二個頁面的時候,同樣還沒調入,缺頁異常再一次。所以是兩次。」
「那頁故障地址呢?」
劉筱雨竟然跟上了李林的思路,猛地抬手問道。
在得到李林肯定性地點頭後,她不禁撓撓頭,小臉紅彤彤的。
胡云程硬了。
拳頭硬了。
(゚皿゚メ)
上我課的時候,怎麼不見你這個積極呢。
但不得不承認,這個思路,有東西的。
胡云程深吸一口氣,默默對一旁說道,
「一會兒視頻發我。」
羅冠:?
李林可不管堂下的小動作,指了指題幹上標出的起始地址,
「0042 2000H。這是第一個頁面的起始地址。第二個頁面緊接著它,頁面大小4KB,4KB等於1000H。注意這裡是十六進位,所以第二個頁面的起始地址是0042 2000H加1000H,等於0042 3000H。」
李林一路講下來,幾乎沒有停頓。
第一題的三個小問,從「為什麼頁面大小決定偏移位數」到「為什麼缺頁異常是兩次」到「怎麼加出第二個頁故障地址」。
一路推下來,每一步都落在前一步的基礎上。
環環相扣。
李林相信,絕大部分人都懂了。
聽不懂的,剛才都已經出去了。
但即便如此,面對第二問,李林的嘴角還是咧了咧。
他放下粉筆,雙手撐在講台上,滿臉誠懇,
「說實話,我不覺得,第二問是大家需要做的。」
「?」
「或者說,是大家有能力做的。」
「!」
此話一出,台下頓時喧譁。
畢竟,這相當於赤裸裸地看不起他們了。
第一問,能輕鬆跟下來的人不在少數,突然被這麼說,心裡肯定是不服的。
但是……
胡云程聽到李林的話。
默默嘆了口氣。
他……
太懂了。
教案里,第二問也被他畫了一個大大的叉。
李林似乎完全不在意喧譁一樣,只是轉過身,把第二問露了出來。
「數組a占用多少主存塊?」
「假設上述程序段執行過程中數組a的訪問不會和其他數據發生Cache訪問衝突,則數組a的Cache命中率是多少?」
「若將循環中i和j的次序按如下方式調換:for (j = 0; j < 64; j++) for (i = 0; i < 24; i++) a[i][j]= 10;則數組a的Cache命中率又是多少?」
三連問。
讓他們重新回憶起了考場上看到這一問時的絕望。
即便現在在李林的講解下,解決了第一問,這第二問看起來依舊那麼陌生。
雜亂聲頓時衰減了不少。
李林嘆了口氣,他說的都是實話。
也都是真心話。
他真心認為,花太多時間去搞懂第二問,不如去學把時間拿去學其他的。
什麼?
你說他自己為什麼會?
……那能一樣嗎?
「第四問。數組占多少主存塊?6KB除以32B,192個。命中率,關鍵在於理解這個循環的訪問模式。」
既然大部分人不信邪,或者說不想表現出來信邪,他也不吝嗇於講一遍。
至於能吸收多少。
只有天知道。
李林把題干里的雙重循環圈出來,
「外層i從0到23,內層j從0到63。按行優先存儲,a[0][0]到a[0][63]是連續的256個字節,正好占8個主存塊,每塊32B,一塊裝8個int。按這個順序訪問,每訪問一個主存塊的第一個元素時Cache缺失,剩下的7個都命中。所以命中率是7除以8,87.5%。」
他停了一下,看了看台下。
鴉雀無聲。
但沒有題講到一半就走的道理,於是,他繼續說,只是語速加快了,
「如果是按列訪問呢?交換內外層循環,j在外,i在內。外層j總共64次疊代,每次疊代訪問同一列的不同行。數組有24行,每訪問8行就會填滿一個組,但4路組相聯有4個槽位,而同一列的不同行會被映射到同一個組的不同行。24行除以每組4行,6組。64組Cache,這些數據分散在8個組裡,每組正好分到3行。3小於4,所以不會發生替換——每次疊代,一個組裡最多裝3個不同行的數據,4個槽位夠用。所以即便是按列訪問,只要不發生替換,每次調入一個主存塊後,剩下的7個元素依然是命中的。命中率還是87.5%。」
「……」
「啪。」
粉筆被他丟在了講台上,
「到這裡,這道題就完美的結束了。」
從開始到結束,沒有卡頓,沒有翻書,沒有看答案。
每一步都扎紮實實地落在前一步的基礎上——
從虛存到Cache,從時間局部性到空間局部性,從行訪問到列訪問。
早在一開始,就被他用題幹上的三道斜槓標記了出來。
回望自己做的這一切,李林也不由得有些恍惚。
keep easy。
我也算是做到了吧。
【檢測到能力鞏固——】
【計算機基礎(相性:50%->52%|水平:通曉中期->通曉後期)】
「講課……也在一定程度上,鞏固了我的能力嗎?」
李林眯起眼睛,若有所思。
台下依舊沒人說話,但抄筆記的沙沙聲卻愈發明顯。
羅冠把手機放下來,甩了甩髮酸的雙手。
剛才那將近二十分鐘裡,他幾乎沒有換過姿勢,就那麼舉著手機。
鏡頭裡的畫面他打算回去之後再看一遍。
不是為了學什麼,就是單純想再看一遍。
這種講法,感覺某種程度上能和導師……
不,哪怕是導師,也未必能在沒有備課的情況下,把這道題拆解到這種程度。
「老師,」
眼見時間差不多了,李林轉過身,面向最後一排默默舉起手,
「我能走了嗎?」
胡云程不知道什麼時候,已經站了起來。
他張了張嘴,想說點什麼。
但該說什麼呢?
你講得還行?
這個思路你是怎麼想到的?
或者……你他媽到底是什麼時候學的?
但千言萬語,最終只匯成一句,
「你不能走!」
「他必須走!」
兩道聲音幾乎同時在會議室里炸開。
胡云程喊的是第一句,第二句來自前門。
葉雅蘭猛地推門而入,臉上寫滿了正氣凜然。
好像她不是老師,而是一位英勇的騎士,前來拯救被惡龍囚困的美麗公主。
李林:……
胡云程:?
我記得,至少前門還是鎖了的啊?
「你是誰,有什麼資格讓他走。」
胡云程沉聲問道。
「那個,雲程啊,李林同學他確實趕時間。」
後面跟進來探頭髮聲的是夏秉謙。
作為校長,雖然壓不住胡云程,但是拿鑰匙開門還是能做到的。
胡云程皺了皺眉頭。
「老夏,這個學生不一樣。今年的金牌——」
他搖搖頭,不再說那些虛的,只是指著黑板上的推演過程,
「我跟你說實話,我帶了這麼多年競賽,能把競賽題講到這個程度的,學生也好老師也好,不超過這個數。」
胡云程伸出三根手指。
現在也不怕李林年輕沉不住氣了。
他就是最沉不住的那個。
媽的,再沉,學生都跑了個屁的了!
「大不了,我一會兒親自開車送他去省城,絕對耽誤不了事情。但一會兒我要講的東西,對他是直接有用的東西,讓他更上一個台階,不比那個什麼杯子重要?!」
儘管胡云程說的聲嘶力竭,情真意切。
葉雅蘭卻完全不退縮。
畢竟,她搬來的救兵,可不止夏校長一個。
「我說,小胡……」
一個不緊不慢的聲音從前門飄進來,語氣溫和,但每個字都格外沉重,
「李林該走了。」
馮伊畫踩著高跟鞋走了進來,站在葉雅蘭旁邊,朝胡云程微微點了點頭。
這是通知,不是商量.jpg
胡云程的表情在臉上凝固了。
同樣凝固的還有李林。
我說,為什麼壓軸的不是校長,而是一個老師啊,這下氣勢全沒了!
就算你是清北班的老師也……
「……彳亍。」
胡云程幾乎是咬著牙,吐出了這個字。
「?」