天天看點

web開發模式,一個合格的初級前端工程師需要掌握的子產品筆記

CPU裡的時間

真的是好久不見了,人類有個說法叫天上一天,地上一年,而在我們的世界裡,人類一天,我們不知要過多少年~~

web開發模式,一個合格的初級前端工程師需要掌握的子產品筆記

在我所在的CPU這座工廠裡,時間的概念有些不太一樣。工廠大門外的中央廣場上挂着一個大大的鐘表,整個計算機世界裡的居民能夠掐着時間過日子全都仰仗它,你們人類把它叫做晶振。

這個鐘表每隔66000000分之一秒就會報一次時,比人類的鐘表不知道快到哪裡去了。

早些年還是夠用的,不過随着我們CPU工廠生産效率的不斷提升,我們多次向晶振提出提升報時的精度,想讓他報時報的的更快一些,不過都被拒絕了。給我們的理由是記憶體那家夥聯合主機闆上其他機關帶頭反對,說他們受條件限制,沒辦法像我們這麼快。

web開發模式,一個合格的初級前端工程師需要掌握的子產品筆記

靠人不如靠己,為此,咱們工廠專門設立了一個叫

倍頻器

的部門進一步把這個報時細分,達到了3600000000分之1秒,作為我們工廠内部工作作息的

時鐘周期

,這數字實在是太長了,人類為了好記,取了一個叫

主頻

的名字,表示1秒鐘報時的次數,就是3.6GHz。

一不小心扯遠了,這次想給大家說一件事兒······

指令依賴

我們這座工廠的任務就是不斷的執行人類編寫的程式指令,咱廠裡有8個工廠中的房間,大家開足了馬力,就能同時執行8個線程,那速度那叫一個快。

可是廠裡的老闆還是嫌我們不夠快,那天居然告訴我們要每個工廠中的房間執行兩個線程,實作

八核十六線程

,是要把我們的勞動力壓榨到極緻!我們都滿肚子怨言······

事情的起因是這樣的~~

有一次,我們一号工廠中的房間的四人組趁着工作的空當,又鬥起了地主,突然上司過來視察。

web開發模式,一個合格的初級前端工程師需要掌握的子產品筆記

“你們怎麼又在玩?是工作量不飽和嗎?”,見我們幾個閑着,上司一下就不高興了。

我趕緊上前解釋到:“不好意思上司,咱們剛剛執行了一條指令,需要記憶體中的一塊資料,剛好又不在緩存中,是以找記憶體那家夥要資料去了,這不您也知道那家夥向來很慢,我們閑着也是閑着是以就稍微放松了一下······”

聽了我的話上司一下皺起了眉頭,“還給我狡辯,廠裡現在不是用上了

亂序執行

技術嗎?有這閑功夫你們可以先執行後面的指令啊”

web開發模式,一個合格的初級前端工程師需要掌握的子產品筆記

“這我們當然知道,這不您看,我們把後面那幾條指令也都處理了,現在遇到了一條沒法提前執行的指令才停下來的”

上司看了一下問到:“為啥那條不能提前執行?”

“那是一個加法指令,加數依賴于現在正在處理的指令的運算結果呢,是以記憶體那家夥不來消息,我們隻能擱置着了”,我繼續解釋到。

上司聽完,一臉不高興的離開了。

資源閑置

過了幾天,上司又來到咱們一号工廠中的房間來了,也不知道怎麼回事,這明明有八個工廠中的房間,上司怎麼老愛往我們這邊跑。

不過這一次,我們沒有鬥地主,正在辛辛苦苦的工作着。

當時,我正在執行一個浮點數運算,上司過來一看,拍了拍我的肩膀說到:“喲,阿Q,忙着呐,這是在做什麼啊?”

我笑着說到:“上司好,我剛剛用浮點數運算電路單元做了一個浮點數乘法,正在等待計算結果呢”

web開發模式,一個合格的初級前端工程師需要掌握的子產品筆記

上司點了點頭,往周邊巡視一圈,指着一堆裝置問到:“這一堆是什麼?”

“哦,那是整數運算電路單元,這條指令用不到它”

上司再次點了點頭,若有所思的離開了。

超線程技術

又過了幾天,廠裡召開了一次會議,八個工廠中的房間都派了代表參會。

web開發模式,一個合格的初級前端工程師需要掌握的子產品筆記

會上,上司發話了:“前段時間我到各個工廠中的房間視察,發現現在咱們廠裡資源浪費的情況很嚴重!”

二号工廠中的房間的虎子一聽就坐不住了,“上司,咱們大家夥工作都挺賣力的,哪裡有浪費啊?”

上司瞥了一眼,繼續說到:“一方面,廠裡的計算資源——電路裝置得不到充分利用,另一方面,又因為記憶體讀取緩慢、指令依賴等方面的原因,浪費大家太多時間花在等待上”

八号工廠中的房間的代表向來愛拍馬屁,接着上司的話問到:“上司是有什麼訓示?我們八号工廠中的房間絕對支援!”

“我們幾個管理層經過讨論,決定讓你們一個工廠中的房間由現在執行一個線程,變成執行兩個線程!”

web開發模式,一個合格的初級前端工程師需要掌握的子產品筆記

上司這話一出,會場竊竊私語此起彼伏。虎子偏頭小聲對我說到:“這資本家改不了剝削的本色,這壓榨的也太狠了!”

上司咳嗽了幾聲,會場再次安靜了下來。

我起身問到:“上司,這咱們一個工廠中的房間怎麼能執行兩個線程呢,每個工廠中的房間的

寄存器

隻有一套,這用起來豈不是要亂掉?”

“這個你不用擔心,我們會給每個工廠中的房間配兩套寄存器!”

web開發模式,一個合格的初級前端工程師需要掌握的子產品筆記

五号工廠中的房間的代表一聽說到:“要不再給我們添點人手吧,這樣效率肯定提升快!”

上司一聽笑着說到:“還添人手?要不要再給你們添點運算裝置?那我不如再增加幾個工廠中的房間,還開這會幹嘛?這次會議的主題就是如何讓我們現有的資源得到最大程度的利用,減少浪費現象!”

會場一度陷入了尴尬又緊張的氛圍。

還是虎子打破了安靜,“上司,這兩個線程的工作該怎麼開展,我們心底沒有數啊!”

上司滿意的笑了一下:“這才是你們該問的問題嘛!每個工廠中的房間回去重新配置設定一下工作,劃分為兩套班子,各自維護一套寄存器,對外宣稱你們是兩個不同的

實體核心

,但各工廠中的房間的緩存和計算資源還是隻有一套。你們内部協調好,在執行代碼指令的時候,充分利用等待的時間執行另一個線程的指令,這樣也不用擔心指令依賴的問題。”

大家一邊聽一邊做着筆記。

web開發模式,一個合格的初級前端工程師需要掌握的子產品筆記

“還有,如果遇到資源閑置的情況,也可以同時執行兩個線程的指令。比如一個線程是執行整數運算指令,一個線程是執行浮點數運算指令,就可以一起來,讓工廠的計算資源充分用起來,别閑置。”

看我們都認真的記着筆記,上司露出了滿意的笑容,“都記好了吧,我們給這項革命性的技術取了個特别酷的名字,叫超線程技術!”

散會後,大家都紛紛抱怨,把大家逼得這麼緊,以後上班看來是沒法摸魚了,這日子真是越來越難過了。

毀譽參半的超線程

不過,抱怨歸抱怨,大家還是得按照新規來執行。

很快,廠裡就落地了這項技術,咱們一個工廠中的房間搖身一變,變成了倆,咱們原來八核八線程的CPU一下變成了八核十六線程。作業系統那幫人都被我們給騙了,還以為咱們是十六核的CPU呢!

web開發模式,一個合格的初級前端工程師需要掌握的子產品筆記

不過畢竟計算資源還是隻有一份,遇到兩個線程都要使用同樣的計算單元時,還是得要排隊,還要花時間在兩個線程之前的協調工作上,是以整體工作效率的根本沒有2倍,絕大多數時候能提升個20%-30%就不錯了。

不僅如此,工廠中的房間改造後,增加了新的邏輯電路單元,咱這CPU工廠的功耗也更大了,工廠門口那座巨大的風扇也得加大馬力給我們降溫了。

廠子裡對這項技術的反對聲音開始不絕于耳。

web開發模式,一個合格的初級前端工程師需要掌握的子產品筆記

不過後來發生了一件事,讓人們不得不關閉這項技術。聽聞這個消息,我們都樂開了花,看來又可以繼續摸魚了······

最後

由于篇幅限制,pdf文檔的詳解資料太全面,細節内容實在太多啦,是以隻把部分知識點截圖出來粗略的介紹,每個小節點裡面都有更細化的内容!有需要的程式猿(媛)可以幫忙點贊+點選【學習資料】即可免費領取!

web開發模式,一個合格的初級前端工程師需要掌握的子產品筆記
web開發模式,一個合格的初級前端工程師需要掌握的子產品筆記

料】](https://gitee.com/vip204888/web-p7)即可免費領取!

[外鍊圖檔轉存中…(img-uadeDVzU-1626948602767)]

[外鍊圖檔轉存中…(img-pKOdrk4n-1626948602767)]