《深入理解計算機係統》一刷(2023.10.16)

類別:未分類 作者:梁寒郡 本章:《深入理解計算機係統》一刷(2023.10.16)

    這本書很深,對於早已失去了專注力的我來說,想一遍就消化掉是不可能的,隻看文字不看視頻不去實踐一定會消化不良。曖昧一點吧,找不到好的詞匯形容。

    走馬觀花也多少能記住些東西,先說一下第一塊難以理解又重要的地方是,其實每個地方都很難全部理解,但是對我而言,更重要的是現在大體上把說不通的點講通。

    流水線是一個很難掌握的點。

    首先是和洗碗筷差不多,任務是一個一個來的,即便核很多,如三個核,那要三個時鍾周期才能讓三個核都進入工作狀態。這個核,用自助餐廳的不同種食物代替吧。

    之後是,每個核工作在同一個任務的不同階段,看起來是並行的,但彼此之間還有有細小的時間差異。

    還是那個洗碗洗筷子模型,係統的吞吐量受到最慢階段的速度所限製,流水線是一步一步來,在一個時鍾內,即便一個階段被完成,但它總是需要等待前麵的階段或者後麵的階段完成,才可以進行跳轉。所以最慢的階段限製著流水線速度。

    切分切分切分,最後限製速度的是寄存器的讀寫速度。

    如果加入前後順序的反饋,那最後一步產生的反饋信息要給第一步,這是兩個過程之間傳遞反饋信息。需要做修改。將SEQ變為SEQ+,動態計算PC。(完全不知道自己在說什了)

    我隻能理解為,各個階段需要配合,需要等待把每個步驟時間對齊,對不齊就容易產生用過去的信息計算當前的狀態,得到的是錯誤的答案,這錯誤有大有小,但一定是不可以的。

    然後這種一有冒險就停止等待的做法可能過於緩慢,引出了用轉發來避免數據冒險。

    本來我要等你寫完我再讀,可是不如你先直接送過來,這樣對於整個過程耽擱得就比較少,寫與送的過程應該是同樣速度的,那我覺得節約的時間是讀的時間。唔!

    兩個過程之間沒法傳送數據了,這時候用暫停與轉發結合的方法。(有點不懂)

    將一個數連加兩次和加一次一個數的兩倍,結果可能會不一樣,不排除兩個指針指向同一個地址的情況,比如由淺複製產生的對象的某個成員變量,加兩次原來數會變為原來的四倍,可能這樣加不了,他或許還沒有訪問權限。但加一次兩倍就變為原來的三倍。因此這兩個不可以相互代替。

    對內聯函數有了更清楚的認知,將指定函數體插入並取代每一處效應該函數的地方。這不是宏定義。

    函數在形參與實參結合時,最好用函數內的變量記錄一下實參的變量,相當於把別人的書抄了一遍就放在家用,否則,每次循環都使用的話,每次都要跑過去抄同一個字,再跑回來運行。測數組或者字符串長度測一次就記錄下來,不要把測試函數放在循環。減少調用的開銷。

    記住for的短路啊!

    但如果一些數據你可以調用,但是不能知道它的值是什怎辦呢?應該是不可能的,可以用,就可以讀,可不可寫才是安全性的重點吧。或許。

    我不記得卡諾圖是如何化簡的了,但是,會不會他有化簡指令的能力?把100個指令同時塞進去,經過化簡變成幾個指令,這不就是一種優化嗎?或許。

    我明顯是對邏輯的理解更深刻一些,對於硬件是如何工作的理解不多。

    把重複的部分抽出來打包。我現在腦袋想的就是這個。

    溢出處理也是一個安全部分較為重要的地方,難哦。

    改變計算次序而提高運算速度或者運算精度的方法,我想了兩個,一個是秦九韶;一個是把數據排序後再做計算,可以減少大數吃掉小數後的損失。

    學到的是,當對需要不斷更新的值做乘法時,可以把已知部分括起來,讓他們先行計算而不需要等待這個更新值,可以降低延遲。

    用冒號問號的句式做數據交換,是一種基於條件數據傳送的手段。它有好有壞我不好掌握,但是,應該先好好習慣冒號問號的代碼書寫格式。


>>章節報錯<<

如果您喜歡,請把《梁寒郡的日記書》,方便以後閱讀梁寒郡的日記書《深入理解計算機係統》一刷(2023.10.16)後的更新連載!
如果你對梁寒郡的日記書《深入理解計算機係統》一刷(2023.10.16)並對梁寒郡的日記書章節有什建議或者評論,請後台發信息給管理員。