偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

CPU加了緩存后,有人急了

商務(wù)辦公
Hi,我是 CPU 一號(hào)車間的阿 Q,還記得我嗎,真是好久不見(jiàn)了~我所在的 CPU 是一個(gè)八核 CPU,就有八個(gè)工作車間,那運(yùn)行起來(lái)速度杠桿的~

 Hi,我是 CPU 一號(hào)車間的阿 Q,還記得我嗎,真是好久不見(jiàn)了~我所在的 CPU 是一個(gè)八核 CPU,就有八個(gè)工作車間,那運(yùn)行起來(lái)速度杠桿的~

[[431932]]

圖片來(lái)自 包圖網(wǎng)

虛擬地址翻譯

一大早,我們一號(hào)車間 MMU(內(nèi)存管理單元)部門(mén)的小黑就來(lái)到領(lǐng)導(dǎo)辦公室,恰好我也在。

[[431933]]

“領(lǐng)導(dǎo),聽(tīng)說(shuō)您同意了阿 Q 他們的方案,給每個(gè)車間都劃撥了緩存建設(shè)預(yù)算?”

“你這小子,消息還挺靈通的。沒(méi)錯(cuò),內(nèi)存那家伙實(shí)在太慢了,加了緩存后,不用每次都從內(nèi)存讀取數(shù)據(jù),能讓咱們的性能提升不少”,領(lǐng)導(dǎo)說(shuō)到。

“那我們 MMU 部門(mén)也要申請(qǐng)一筆經(jīng)費(fèi)”,小黑說(shuō)到。

領(lǐng)導(dǎo)眉頭一緊,問(wèn)道:“你們要申請(qǐng)經(jīng)費(fèi)干什么?”

“我們也要建設(shè)緩存”

“你們 MMU 部門(mén)做地址翻譯工作,要緩存做什么,怕不是看領(lǐng)導(dǎo)給我們撥了款,眼紅了吧?”,我在一旁說(shuō)到。

小黑轉(zhuǎn)過(guò)身來(lái),看著我說(shuō)道:“說(shuō)我眼紅,我倒是問(wèn)你,你知道虛擬地址翻譯的過(guò)程嗎?”

這可難不倒我,以前就沒(méi)少聽(tīng)他說(shuō)過(guò),“怎么不知道?以 32 位的虛擬地址為例,一個(gè) 32 位的虛擬地址分為三部分,分別是頁(yè)目錄索引、頁(yè)表索引、頁(yè)內(nèi)偏移。

翻譯的時(shí)候,從 CR3 寄存器中取出頁(yè)目錄地址,根據(jù)頁(yè)目錄索引找到頁(yè)表,再根據(jù)頁(yè)表索引找到物理內(nèi)存頁(yè)面,最后根據(jù)頁(yè)內(nèi)偏移,完成尋址。我說(shuō)的對(duì)吧?”

“嘿,你小子不錯(cuò)啊,記性挺好”,小黑有點(diǎn)不敢相信,隨后又問(wèn)到:“既然你知道,那我再問(wèn)你,這讀取一次數(shù)據(jù),需要訪問(wèn)幾次內(nèi)存?”

我思考了一下,開(kāi)始算了起來(lái)。從頁(yè)目錄表中讀取一次,從頁(yè)表中再讀取一次,最后訪問(wèn)頁(yè)面內(nèi)數(shù)據(jù)再讀取一次,總共就是三次。

“需要訪問(wèn)三次內(nèi)存!”,我回答到。

小黑點(diǎn)了點(diǎn)頭說(shuō)道:“沒(méi)錯(cuò),你知道的,內(nèi)存那家伙本來(lái)就慢,這每讀寫(xiě)一個(gè)數(shù)據(jù),都要訪問(wèn)內(nèi)存三次,這誰(shuí)頂?shù)米“?”

說(shuō)的是啊,內(nèi)存那家伙慢我是知道的,但讀寫(xiě)一次就要折騰三回,我倒是沒(méi)想過(guò)。

“就這還是 32 位地址的情況,我還沒(méi)算 64 位下變成了 4 級(jí)頁(yè)表呢,那訪問(wèn)內(nèi)存的次數(shù)就更多了!”

“好在咱們馬上就要建設(shè)緩存設(shè)施了,也不用每次都從內(nèi)存讀取數(shù)據(jù),要是緩存能找到,就不用讀取內(nèi)存了嘛!”

“可是查頁(yè)目錄和頁(yè)表還是得要兩次啊”,小黑說(shuō)到。

“要是能把地址翻譯的結(jié)果也緩存起來(lái)就好,就不用每次都從內(nèi)存查了”,我陷入了思考。

“你看,你跟我想到一會(huì)兒去了,所以我才向領(lǐng)導(dǎo)申請(qǐng),咱們 MMU 部門(mén)也加上緩存,這樣地址翻譯變快了,咱們整個(gè)車間工作效率才高嘛!”

[[431935]]

這時(shí),領(lǐng)導(dǎo)站了起來(lái),說(shuō)道:“唉~格局要打開(kāi),光你們一號(hào)車間提高不行,得發(fā)動(dòng)全廠八個(gè)車間一起。小黑,經(jīng)費(fèi)的問(wèn)題不用擔(dān)心,這事由你牽頭,把其他幾個(gè)車間的 MMU 部門(mén)負(fù)責(zé)人召集起來(lái)開(kāi)個(gè)會(huì),把你說(shuō)的方案落地下去”

“沒(méi)問(wèn)題!”,領(lǐng)導(dǎo)這么一說(shuō),小黑高興壞了。

地址翻譯緩存

回去的路上,我又忍不住好奇,向小黑打聽(tīng)起來(lái):“你們這翻譯地址用的緩存,準(zhǔn)備怎么個(gè)弄法?”

“我還沒(méi)想的很成熟,只有個(gè)大概的方案”

“快給我透露一下”

“好吧,告訴你也無(wú)妨!我舉個(gè)例子吧,假設(shè)要翻譯的虛擬地址是 0x12345678,這是一個(gè) 32 位的地址,前面的 20 位是 0x12345000,經(jīng)過(guò)兩次查表后,定位到真實(shí)的物理頁(yè)面 0x00abc000,最后再加上頁(yè)內(nèi)偏移,翻譯結(jié)果就是 0x00abc678”

“地址翻譯完成后,將虛擬頁(yè)編號(hào) 0x12345 和物理頁(yè)編號(hào) 0x00abc 的映射關(guān)系記錄起來(lái)放到緩存中”

“在進(jìn)行地址翻譯的時(shí)候,先去這個(gè)緩存里瞅一瞅,看看有沒(méi)有記錄過(guò),如果有就直接用之前記錄的,找不到再去內(nèi)存頁(yè)表中找。跟局部性原理類似,翻譯過(guò)的地址,在接下來(lái)一段時(shí)間內(nèi)再次用到的可能性很大,所以這個(gè)緩存是很有必要的!”,小黑非常自信的說(shuō)道。

“聽(tīng)上去很不錯(cuò),期待早點(diǎn)上馬啊!”

TLB

過(guò)了幾天,我打算去 MMU 部門(mén)轉(zhuǎn)轉(zhuǎn),想看看他們的緩存搞的咋樣了。

一進(jìn)門(mén),只見(jiàn)小黑和其他幾個(gè)車間的 MMU 部門(mén)負(fù)責(zé)人正在緊張的討論著,一旁的畫(huà)板上畫(huà)了不少條條框框的圖。

[[431936]]

“小黑老哥,你們這是在做什么呢?”

“我們正在研究這個(gè)翻譯記錄緩存項(xiàng)的存儲(chǔ)方式呢!你來(lái)的正好,我們討論了半天也沒(méi)什么好的思路,快來(lái)幫我出出主意”

我有些好奇,問(wèn)道:“什么問(wèn)題把你們都難倒了?”

“就是虛擬地址翻譯的結(jié)果,我們不知道怎么存了!”

“這有什么好糾結(jié)的,緩存空間就那么大,一個(gè)翻譯結(jié)果就是一條記錄,一條一條的存唄”

二號(hào)車間 MMU 負(fù)責(zé)人連連揮手,“沒(méi)你想的這么簡(jiǎn)單,按照你這種存法,那在翻譯地址的時(shí)候,怎么查找?難道要全部掃描一遍?”

我愣了一下,“啊這,我倒是沒(méi)想這么多···不過(guò)緩存空間也不大,存不了太多翻譯結(jié)果,全部掃描也還好吧?”

“那可不行,咱們 CPU 的目標(biāo)就是要把性能優(yōu)化到極致,這種方案上了,領(lǐng)導(dǎo)還不得罵死我”,小黑說(shuō)到。

我想了想,“有了,給虛擬頁(yè)編號(hào)取模,每個(gè)虛擬頁(yè)的翻譯記錄只能存在緩存中固定的位置,這樣不用全部掃描,一次就能定位,是不是很贊?”

小黑搖了搖頭:“這個(gè)方案我們剛才也討論過(guò)了,緩存空間有限,會(huì)導(dǎo)致大量的虛擬頁(yè)取模后映射到同一個(gè)存儲(chǔ)位置,就會(huì)經(jīng)常沖突,也不是個(gè)好辦法!”

“看來(lái)還真有點(diǎn)麻煩啊”,我也不自覺(jué)的皺起了眉頭,陷入了思考之中。

“可不是嘛,所以我們才頭疼啊”

空氣突然安靜,所有人都在低頭沉思。

“哎,有了!”,一個(gè)念頭在我腦中閃現(xiàn)。

“什么辦法?快說(shuō)說(shuō)看”

“分組連接!”

“分組連接?”,眾人問(wèn)到。

“沒(méi)錯(cuò)!把前面這兩種方案結(jié)合一下??梢园丫彺娲鎯?chǔ)空間劃分很多個(gè)組,全部遍歷太慢,直接取模映射又容易沖突,那如果映射的結(jié)果不是一個(gè)固定的位置,而是一個(gè)分組呢?”

“聽(tīng)上去不錯(cuò)唉,這樣既降低了沖突,遍歷也只需在分組區(qū)間里進(jìn)行了,工作量大大降低了,真是個(gè)好辦法”

小黑和大家都一致同意了我的想法。

“那怎么分組呢,多少項(xiàng)為一組呢?”,有人問(wèn)到。

“嗯,這個(gè)我也說(shuō)不好,得做實(shí)驗(yàn)驗(yàn)證,2、4、8、16 都可以試試,實(shí)踐出真知嘛!”

“好,沒(méi)問(wèn)題,咱們下來(lái)測(cè)試下”

“我還有一個(gè)問(wèn)題,你們的這個(gè)緩存項(xiàng)什么時(shí)候更新呢?咱們?cè)诒Wo(hù)模式下,不同的進(jìn)程中,同一個(gè)虛擬頁(yè)翻譯后對(duì)應(yīng)的物理頁(yè)面可是不同的,你們可不要用了錯(cuò)誤的緩存,那可就出大亂子了!”

“嗨,這還用你說(shuō),在場(chǎng)的各位干這份工作時(shí)間都不短了,這一點(diǎn)我們比你更清楚。進(jìn)程切換的時(shí)候,會(huì)把新進(jìn)程的頁(yè)目錄表基地址寫(xiě)到 CR3 寄存器中,那時(shí)候我們就會(huì)把緩存中的數(shù)據(jù)全部清掉啦!”,小黑胸有成竹的說(shuō)到。

“也不用全部清掉吧,像有些內(nèi)核頁(yè)面,是所有進(jìn)程共享的,就可以保留啊”

小黑點(diǎn)了點(diǎn)頭,“有道理,看來(lái)得給地址翻譯記錄增加一個(gè)標(biāo)記,用來(lái)標(biāo)記是不是全局有效”

一個(gè)月后,八個(gè)車間 MMU 部門(mén)的緩存全部建設(shè)完成,當(dāng)天便投入使用,咱們這個(gè) CPU 的運(yùn)行效率一下突飛猛進(jìn),這緩存的威力可真是太大了。

為了跟我們的一二級(jí)緩存相區(qū)分,小黑還給他們的地址翻譯緩存取了一個(gè)響亮的名字:TLB——翻譯后備緩沖區(qū)。

作者:軒轅之風(fēng)

編輯:陶家龍

來(lái)源:轉(zhuǎn)載自公眾號(hào)編程技術(shù)宇宙(ID:xuanyuancoding)

責(zé)任編輯:武曉燕 來(lái)源: 編程技術(shù)宇宙
相關(guān)推薦

2021-09-16 18:29:17

CPU緩存虛擬

2019-12-17 14:24:11

CPU緩存偽共享

2019-12-10 14:51:00

CPU緩存內(nèi)存

2009-04-24 14:46:59

2021-04-18 15:31:15

工資刪庫(kù)公司

2025-02-04 10:58:16

2019-04-08 10:09:04

CPU緩存高性能

2019-11-12 14:40:43

CPU緩存內(nèi)存

2021-05-05 10:46:12

Spectre攻擊數(shù)據(jù)泄露

2021-03-18 08:03:58

SteamMesa緩存

2018-11-30 15:17:38

CPUCache緩存行

2020-03-02 09:50:50

程序員技能開(kāi)發(fā)者

2020-06-04 18:21:34

CPU緩存Intel

2018-04-11 09:40:54

蘋(píng)果iPhoneFace ID

2018-08-16 11:30:12

JavaCPU緩存

2010-04-21 14:20:45

處理器緩存技術(shù)

2023-05-09 10:55:43

CPU緩存內(nèi)存

2024-11-14 07:10:00

2021-01-13 11:11:25

英特爾CPU勒索軟件

2024-05-06 00:00:00

RefReactive性能
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)