梁寒郡的日記書 《深入理解計算機系統》一刷(2023.10.16)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    記住for的短路啊!

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

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

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

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

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

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


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

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

    那種預測機制也不明白,只能舉個應用場合的例子,當一個數不斷自加直到被上限擋住為止,這個過程預測出錯只會出現在最開始和結尾,中間一直是否,預測起來不會出錯。

    更深的地方就挖不動了,先這樣。

    如何更快?硬件多數時間都在做加減乘除,再幹活,而不是把過多時間浪費在跑來跑去。

    增加限制條件,然後去掉冗餘的限制條件。

    放東西就是這個道理,越常用的越要放在能快速拿的地方。我們的世界不是遊戲裏抽象的倉庫,而是具有一個存儲的層次結構,有遠近難易之分。

    有記憶的統計來自於局部性,它認為已有之事後必再有,已行之事後必再行。我之前覺得有道理,後來覺得也未必,有些東西摒棄掉了就是摒棄掉了,可能會在別的個體上持續發生,但在單個個體上未必。這有點算是抬槓了,總之呢,局部性可以大大提高性能。

    無條件跳躍可能導致死循環啊,或者莫名其妙鬼畜起來了。雖然對於複雜的過程來說,未知錯誤是難免的,但還是儘可能把會出錯的地方修補一番,然後在關鍵的地方用try與catch。

    映射表的查找方法,如果虛擬內存和物理內存之間的映射表的查詢方式是順序查找,映射表又很長,查的位置不滿足局部性來回跳,那時間就會花費很多,這麼大的宏觀的事可能不是我該考慮的,我就把他縮小吧。要是我建立一個用於存儲和查詢的表,我就會儘量讓他們的序號有一定的意義,至少可以讓我或者程序估計,要查的東西在前一半還是在後一半,哦我想起來了,這是不是設計了主鍵的排序呢?我真是笨蛋。

    除了排序也可以分級,手動地告訴代碼,要找的東西在上一半還是下一半,分兩級就更加好找了。(過於幼稚)

    層之間的關鍵字可以用門電路連接,這樣的話很客觀安全,但是是犧牲了物理空間換去來速度傷的性能。沒有兩全法的。只有取捨。

    借用必須要有借用恢復,有點像中斷。

    需要保持狀態的塊,還是很經典的一句話,出門要有鎖存,進門要有緩衝。

    去掉冗餘,相同的部分只寫一次,這就是C++的優勢哦,不,是共享的優勢。

    創建一個垃圾堆,或者垃圾堆也可以臨時使用,多想想如何把現實中的概念應用到虛擬的領域,這樣或許我們分不清夢境與現實之前,就已經分不清虛擬與現實了。

    大塊與碎片的概念也很好,整可以碎,碎不可以整也。

    相鄰的塊要比破碎的塊更好用,不相鄰就要花費一部分出來連接破碎的塊,可能也需要花時間挑選出合適或足夠的塊們。

    &有和沒有區別很大,需要重視。

    顯示地初始化為0十分重要,要注意。

    動作的前面都會加入一個隱含的形容詞,請求。

    知其然容易,知其所以然難。我知前者少,知後者更少,怎麼會說話呢?不好意思啦。

    雖然看不懂的多,但還是有收穫的,加油!

    或許會二刷吧。或許。



  
相關:    魔門敗類  網遊之劍刃舞者  生生不滅  校花的貼身高手  娛樂帝國系統  
(快捷鍵←)上一章 ↓返回最新章節↓ 下一章 (快捷鍵→)
 
版權聲明: 好書友梁寒郡的日記書《深入理解計算機系統》一刷(2023.10.16)所有小說、電子書均由會員發表或從網絡轉載,如果您發現有任何侵犯您版權的情況,請立即和我們聯繫,我們會及時作相關處理,聯繫郵箱請見首頁底部。
最新小說地圖
搜"梁寒郡的日記書"
360搜"梁寒郡的日記書"

html|sitemap|shenma-sitemap|shenma-sitemap-new|sitemap50000|map|map50000

0.0218s 3.9619MB