cpu對於記憶體的讀寫會受制於記憶體延遲,處理邏輯更類似於web的阻塞模型還是非同步模型?

時間 2021-05-05 18:17:42

1樓:

記憶體為啥會有頻率這個概念呢?因為記憶體裡的電子必須在固定時間內跳完最長的那條電路,這個「固定時間」的長短決定了頻率。

那為啥要「固定」呢?因為同步電路不同元件之間要互相同步,比如 CPU 空轉 70 個週期等記憶體 1 個週期。

不固定的電路叫「非同步」電路,由於太複雜所以大概只存在於傳說之中。

2樓:Sieg Hail

你的猜測是對的,就某條指令來說,如果有cache missing那麼是執行就是阻塞的,這個問題和亂序(Out-of-order)沒有關係,樓上其他大佬們都回答了。

值得一提的是在超執行緒環境下,碰到因為被cache missing的原因stall住的執行緒很有可能發生切換,這也是超執行緒能提高吞吐的主要原因。

3樓:Interlock

這個是考試內容哇,你可以去翻翻計算機組成原理的教材

簡單來說,暫存器數量少和記憶體讀寫沒關係。

現代CPU設計中,讀寫記憶體的命令走紅色路線,而不用讀寫記憶體的命令走的是另外的路線,比如圖中的黃色路線,兩種命令由CPU中不同的部分並行執行,所以不同型別的命令"通常"不會互相阻塞,相同型別的命令才可能阻塞。但有時候你需要從記憶體裡讀乙個值然後用這個值作為後面命令的輸入,這時候確實會阻塞後面的命令。

4樓:XZiar

根據Intel Optimization Manual的說法[1]:

The L1 DCache maintains requests which cannot be serviced immediately to completion. Some reasons for requests that are delayed: cache misses, unaligned access that splits across cache lines, data not ready to be forwarded from a preceding store, loads experiencing bank collisions, and load block due to cache line replacement.

The L1 DCache can maintain up to 64 load micro-ops from allocation until retirement. It can maintain up to 36 store operations from allocation until the store value is committed to the cache, or written to the line fill buffers (LFB) in the case of non-temporal stores.

The L1 DCache can handle multiple outstanding cache misses and continue to service incoming stores and loads. Up to 10 requests of missing cache lines can be managed simultaneously using the LFB.

簡單來說,對Cache的訪問並不一定是順序的,畢竟架構本身就是亂序執行,只要兩條訪存操作間沒有依賴衝突,後發射的那條先於前面那條完成是完全可行的。反正MOB(Memory Order Buffer)和 ROB(Re-order Buffer)會使得操作最後呈現出順序完成的模樣。

此外,當一條訪存操作(實質是訪問Cache的操作)因為種種原因被推遲沒法完成時,這個訪存埠依舊可以繼續操作。

換句話說,從微觀角度看,站在CPU後端那些訪存埠的視角看,記憶體的訪問就是非同步的。訪存操作提交後就不關自己的事了(除非Load buffer滿了,不允許往佇列裡繼續放入操作,或者其他依賴的資源不夠了)。

而訪存完成後資料會被傳送到ROB,整個執行管線把收到的資料去搬運給需要指令或指定的地點。這麼看來好像不單是非同步,還是個proactor模式的非同步?

而從巨集觀一點的角度看,DRAM,或者說DDR的設計應該是不包含非同步的特性的(我不是很懂這一塊,FB-DIMM這種可能有些不同?),訪問記憶體的某塊區域,時間是可以通過記憶體的時參[2]確定出來的。

因此站在CPU整體的視角看,訪問DRAM就是同步且阻塞的。多條訪存操作可以依次傳送,但結果也需要依次接收。

(事實上對於確定時延的情況,同步+佇列的效果和非同步是沒差的吧)

記憶體延遲在測試中又為何不是那麼明顯有效

這個問題我看不太懂,你是指記憶體延遲對測試的成績影響不大?那不正是因為有Cache幫你擋著訪存請求嘛。影響越小差不多越能體現Cache的作用。

相對於CPU更新換代的速度,記憶體的更新換代為什麼那麼慢?

個人愚見 CPU效能發展有著兩家公司在競爭,因此更新換代的動力比較足,而且其實更新了這麼多代,CPU的絕對效能有了很好的提高,但是單核單頻的效能其實提公升並不大 同樣僅使用單核,酷睿2時代的旗艦處理器跑3.0GHz的效能,和現在的第九代酷睿i9跑3.0GHz的效能對比,經過了9代的公升級發展,效能提...

科學理論的進步是否會受制於人類智力的極限?

大羅 我認為 未知的世界 知識就像是一汪無限的天池,已知的是人類自己挖的乙個水庫,水庫可以不斷挖大挖深,而智商就像是從天池到水庫的水管,智商的高低決定水管的粗細。因此,只要時間足夠,水庫也可以像天池一樣無限,但是關鍵是時間是否足夠?人類本身個體受限於壽命,人類整體受限於各種外來突發事件 戰爭,自然災...

蘋果的統一記憶體和整合顯示卡與CPU共用記憶體有什麼區別?

船長不划船 看那些回答感覺英特爾,amd等廠商應該趕緊請知乎的大佬們去做技術指導,推進人類進步,這種技術在知乎就是跟小孩過家家一樣的簡單。 很多引經據典的詳細回答了。都挺不錯的。蘋果的統一記憶體細節目前還不得而知。一般意義上的UMA與記憶體共享的根本區別,在於記憶體的所有權,以及其服務的方式。就好像...