DRAM 的刷新:為什麼記憶體要一直複習

modern%20workspace%20with%20laptop%2C%20smartphone...
發表時間:2026 年 10 月 25 日 | 更新日期:2026 年 10 月 25 日 | 編輯:雅寶社區編輯團隊
DRAM 的刷新:為什麼記憶體要一直複習 - 雅寶社區 · 頂客論壇

既然電容這麼容易漏電,為什麼不把它做得更完美一點?答案牽涉到物理極限與成本取捨。首先,電容的電容值越大,能儲存的電荷越多,抗漏電能力越強,但這會讓單元面積變大,直接犧牲容量密度。其次,閘極氧化層越薄,電晶體越快、越省電,但漏電也越嚴重。製程微縮到 10 奈米等級之後,這些取捨變得更加尖銳。

此外,DRAM 單元之間的間距越來越小,相鄰單元的電容會透過電場互相干擾,也就是所謂的「耦合效應」。當某一列(Row)被頻繁地開啟與關閉時,鄰近列的電荷可能會被擾動,這也是後來 Rowhammer 攻擊的物理基礎。換句話說,DRAM 的「記憶力」不僅會隨時間自然衰退,還會被鄰居的動作給「吵」到忘東忘西。

2.3 為什麼不直接用 SRAM?

講到這裡,一定有人會問:既然 DRAM 這麼麻煩,為什麼不全部用 SRAM?SRAM(Static RAM)用正反器(Flip-Flop)儲存資料,只要持續供電就能靜態保持,完全不需要刷新,速度也快得多。問題在於面積與成本。SRAM 的單元通常需要六顆電晶體(6T),而 DRAM 只要一顆電晶體加一顆電容(1T1C)。在先進製程下,SRAM 單元的面積大約是 DRAM 單元的數倍到十數倍,這意味著同樣的晶片面積,SRAM 能提供的容量遠低於 DRAM,成本也高出許多。

因此,電腦的記憶體階層分工非常明確:CPU 內部的快取用 SRAM,追求極致速度;主記憶體用 DRAM,追求容量與成本的平衡;硬碟或 SSD 則負責長期儲存。DRAM 之所以能成為主記憶體的主流,正是因為它用「定期刷新」這個小小的麻煩,換來了巨大的容量與成本優勢。

三、刷新的核心機制:記憶體如何「複習」

3.1 刷新到底做了什麼?

刷新的本質,其實就是一次「讀取+寫回」的動作,只是讀出來的資料不會被送到 CPU,而是直接被丟棄,唯一的目的是把電容的電荷重新補滿。你可以把它想像成圖書館員定期把每本書拿出來翻一翻、曬曬太陽,然後再放回架上;書的內容不變,但紙張不會發霉。

在 DRAM 的組織結構中,儲存單元以「列」(Row)為單位排列,每一列共享一條字元線。刷新操作是以「列」為單位進行的:記憶體收到刷新命令後,會依序啟動某一列、讓感測放大器把整列的資料讀出並放大、然後寫回。由於一次刷新只處理一列,而一顆 DRAM 通常有數千到數萬列,因此刷新必須分散在時間軸上持續進行。

3.2 自動刷新與自我刷新

DRAM 的刷新命令主要有兩種形式。第一種是「自動刷新」(Auto Refresh),由記憶體控制器主動發出命令,DRAM 收到後在內部自行產生位址、完成一列的刷新。這種方式常見於系統正常運作時,控制器會根據時序參數定期插入刷新命令。

第二種是「自我刷新」(Self Refresh),主要用在待機或休眠狀態。當系統進入低功耗模式時,記憶體控制器可能已經停止運作,此時 DRAM 會啟動內部的振盪器,自己按照預設的週期進行刷新,不需要外部命令。這也是為什麼筆電闔上螢幕進入睡眠後,記憶體裡的資料還能撐住的原因——它並沒有睡著,而是進入了「自己複習」的模式。

值得一提的是,自我刷新狀態下的功耗雖然比正常運作低很多,但仍然存在,因為刷新本身就需要能量。這也是為什麼有些裝置在長時間休眠後,電量還是會慢慢下降。記憶體的「複習」不是免費的,它需要持續的電力支持。

3.3 刷新週期與時序參數

刷新的節奏由兩個關鍵參數決定:tREFI 與 tRFC。tREFI(Refresh Interval)是兩次刷新命令之間的時間間隔,tRFC(Refresh Cycle Time)則是單次刷新命令執行所需的時間。以常見的消費級 DDR4 為例,標準的刷新週期是 64 毫秒,也就是說,記憶體必須在 64 毫秒內把所有的列都刷新過一輪。

假設一顆 DRAM 有 8192 列需要刷新,那麼平均每 64ms ÷ 8192 ≈ 7.8 微秒就必須發出一次刷新命令,這就是 tREFI 的由來。而每次刷新命令執行時,記憶體會暫時無法接受一般的讀寫命令,這段「停工」時間就是 tRFC,通常落在數百奈秒的等級。

把這兩個數字放在一起看,就能理解刷新對效能的影響。以 7.8 微秒的間隔、每次停工 350 奈秒計算,刷新佔用的時間比例大約是 350 ÷ 7800 ≈ 4.5%。也就是說,記憶體有大約 4% 到 5% 的時間是花在「複習」上,而不是處理真正的資料請求。這個比例看起來不大,但在追求極致效能的伺服器或超頻場景中,卻是不可忽視的成本。

3.4 刷新對效能的實際影響

刷新對效能的影響可以從幾個層面來看。首先是頻寬的損耗:刷新期間記憶體無法傳輸資料,等效頻寬會略微下降。其次是延遲的增加:如果 CPU 發出的讀取請求剛好遇上刷新,就必須排隊等待,造成額外的延遲。這也是為什麼在記憶體超頻時,調整 tREFI 往往能換取一點效能——把刷新間隔拉長,刷新次數變少,效能自然提升。

但這樣做是有風險的。tREFI 拉得太長,代表某些列的資料可能撐不到下次刷新就漏電了,輕則出現位元錯誤,重則導致系統崩潰或資料損毀。這就是為什麼記憶體超頻社群在調整 tREFI 時總是特別謹慎,並且需要搭配燒機測試來驗證穩定性。刷新參數的調整,本質上是在「效能」與「資料正確性」之間走鋼索。

四、溫度與資料保持:高溫下的「記憶力衰退」

4.1 溫度如何影響漏電

DRAM 的漏電速度與溫度密切相關。溫度越高,半導體中的載子活動越劇烈,漏電流也越大,電容的資料保持時間就越短。這是一個指數關係:溫度每上升約 10°C,漏電速率可能增加一倍左右。換句話說,記憶體在天氣熱的時候「忘得更快」。

這也解釋了為什麼伺服器機房要嚴格控制溫度,以及為什麼有些記憶體模組會配備散熱片。散熱不只是為了超頻,也是為了確保資料在標準刷新週期內不會流失。對於一般消費者而言,如果電腦機殼散熱不良,記憶體長期處於高溫環境,理論上會增加位元錯誤的風險,雖然在正常的刷新機制保護下,這種情況通常不會直接導致可見的故障。

4.2 溫度補償刷新

為了應對高溫下的漏電問題,JEDEC 標準定義了「溫度補償刷新」(Temperature Compensated Refresh)。當 DRAM 的溫度超過某個門檻(通常是 85°C)時,記憶體控制器會把刷新頻率加倍,也就是把 tREFI 減半,從原本的 64ms 週期縮短為 32ms。這麼做是為了確保在高溫環境下,每個位元仍能在漏電到無法辨識之前被刷新。

有些高階記憶體或伺服器模組甚至支援更細緻的溫度分級,會根據溫度感測器的讀數動態調整刷新率。這種「看天氣決定複習頻率」的機制,其實非常聰明:在常溫下維持標準刷新率以節省頻寬,在高溫時自動加密刷新以確保正確性。

4.3 資料保持時間的意義

「資料保持時間」是 DRAM 的一個重要規格,指的是在沒有刷新的情況下,資料能維持正確的最長時間。這個數值並不是固定的,它會隨溫度、製程變異、甚至單元在晶片上的位置而有所不同。一般消費級 DRAM 在常溫下的保持時間遠超過 64ms,但在高溫或老化之後,某些「體質較差」的單元可能會逼近標準刷新週期的極限。

這也帶出一個有趣的工程問題:如果某個單元的保持時間特別短,即使按照標準刷新,它仍可能在兩次刷新之間漏電,就會產生所謂的「弱單元」(Weak Cell)。記憶體測試產業因此發展出各種「保留時間測試」(Retention Test),透過高溫烘烤與長時間監測,把這些弱單元篩選出來,以確保出廠的記憶體能在規格範圍內穩定運作。

五、記憶體控制器與刷新排程的協作

5.1 記憶體控制器的角色

刷新不是 DRAM 自己一個人能完成的事。在正常運作模式下,記憶體控制器(Memory Controller)扮演樂團指揮的角色,負責決定何時發出刷新命令、如何與一般的讀寫請求排程。現代的記憶體控制器通常整合在 CPU 內部,它必須在「滿足 CPU 的資料需求」與「維持記憶體正確性」之間取得平衡。

一個好的排程策略,會盡量把刷新命令安排在記憶體閒置或負載較低的時段,避免在密集讀寫時插隊,造成延遲尖峰。有些控制器會將刷新命令「合併」或「延後」,只要不超過 tREFI 的期限,就能換取更平順的效能表現。這種彈性排程的先進程度,往往也是不同平台記憶體效能差異的來源之一。

5.2 刷新排程與服務品質

在伺服器與資料中心環境中,刷新排程還牽涉到服務品質(QoS)的考量。如果刷新命令過於集中,可能造成短暫的延遲抖動,影響即時性應用的表現。因此,部分高階記憶體控制器支援「刷新批次處理」或「分散式刷新」,把刷新工作均勻地打散在時間軸上,讓延遲的變異降到最低。

另一方面,隨著記憶體容量越來越大,刷新所需的總工作量也越來越高。一顆 64GB 的記憶體模組,需要刷新的列數遠多於 8GB 模組,刷新佔用的頻寬比例也隨之上升。這也是為什麼大容量記憶體在設計上需要更精細的刷新管理機制,否則效能損耗會相當可觀。

5.3 DDR5 的刷新管理新機制

進入 DDR5 世代後,刷新管理變得更加複雜,也更加智慧。DDR5 導入了「同庫刷新」(Same-Bank Refresh)與「刷新管理」(Refresh Management, RFM)等機制。前者允許記憶體針對特定 bank 進行刷新,而不是每次都刷新所有 bank,提高排程彈性;後者則與 Rowhammer 防禦有關,我們在後面的章節會詳細說明。

此外,DDR5 也支援「按需刷新」(On-Demand Refresh)的概念,讓控制器可以根據實際的溫度與負載狀況,動態調整刷新策略。這些演進的共同目標,都是在確保資料正確性的前提下,盡可能降低刷新對效能的干擾。

六、DDR 世代的刷新演進:從大一統到精細分工

6.1 從 DDR 到 DDR4 的演進脈絡

回顧 DDR 家族的歷史,刷新機制的演進其實反映了記憶體容量與速度不斷提升的現實壓力。早期的 SDRAM 與 DDR 世代,刷新相對單純:時間到了就全部刷新一輪,沒有太多花俏的排程。但隨著容量增加,刷新所需的時間也跟著拉長,對效能的影響越來越明顯。

DDR3 與 DDR4 開始導入更細緻的刷新策略。例如「精細刷新」(Fine Granularity Refresh)把原本一次大規模的刷新拆成多次小規模刷新,讓每次停工的時間縮短,對延遲的衝擊更平緩。另外,「每庫刷新」(Per-Bank Refresh)則允許控制器一次只刷新一個 bank,其他 bank 仍可正常存取,大幅提升了排程的靈活度。

6.2 新型刷新技術與資安防禦

到了 DDR4 後期與 DDR5 世代,刷新不再只是「對抗漏電」那麼單純,它還被賦予了「對抗攻擊」的任務。最著名的例子就是「目標列刷新」(Target Row Refresh, TRR)。TRR 的原理是:當記憶體偵測到某一列被異常頻繁地開啟時,會主動刷新其鄰近的列,以防止電荷耦合造成的位元翻轉。這正是為了抵禦 Rowhammer 攻擊而生的防禦機制。

DDR5 更進一步導入了「刷新管理」(Refresh Management),讓記憶體可以主動向控制器回報需要刷新的區域,形成一種「回饋式」的刷新策略。這種設計讓刷新從被動的定期保養,逐漸演變為主動的風險管理。

七、刷新與資訊安全:Rowhammer 的啟示

7.1 Rowhammer 攻擊的原理

Rowhammer 是近年來記憶體安全領域最受關注的議題之一。它的基本原理是:當某一列(攻擊列)被極度頻繁地開啟與關閉時,相鄰列(受害列)的電容會因為電場耦合而受到干擾,導致電荷意外流失或增加,進而使位元從 0 翻轉成 1,或從 1 翻轉成 0。攻擊者可以藉由精心設計的記憶體存取模式,誘發特定位址的位元翻轉,進而提升權限或繞過安全檢查。

這個現象之所以可怕,是因為它不需要任何軟體漏洞,純粹是利用 DRAM 的物理特性。換句話說,即使作業系統與應用程式都寫得完美無缺,硬體本身仍可能存在被攻擊的空間。這也是為什麼 Rowhammer 被視為硬體安全的經典案例。

7.2 刷新在防禦中的角色

面對 Rowhammer,刷新機制扮演了重要的防禦角色。首先,更頻繁的刷新可以讓被干擾的位元在出錯之前就被「補救」回來。其次,TRR 等主動偵測機制可以在攻擊發生時,即時刷新受害列,阻止位元翻轉。再者,DDR5 的刷新管理與內建 ECC(On-Die ECC)也能提供額外的保護層。

不過,安全防禦與效能之間永遠存在拉鋸。過於頻繁的刷新會侵蝕效能,過於寬鬆的刷新則可能留下安全缺口。如何在兩者之間取得平衡,是記憶體標準制定者與處理器設計者持續面對的挑戰。對一般使用者而言,選用支援最新標準的記憶體與平台,並保持系統更新,是降低這類風險的務實做法。

八、常見問題與迷思釐清

8.1 DRAM 與 SRAM 的刷新差異

最常見的迷思之一,是把 DRAM 的刷新類推到所有記憶體。事實上,SRAM 完全不需要刷新,因為它用正反器儲存資料,只要供電就能維持狀態。這也說明了為什麼 CPU 快取(SRAM)不需要刷新機制,而主記憶體(DRAM)卻必須持續複習。兩者的差異來自儲存原理,而不是製造品質的好壞。

8.2 刷新會不會讓資料消失?

另一個常見的誤解,是以為刷新會「清空」記憶體。恰恰相反,刷新的目的正是為了防止資料消失。刷新過程雖然會把資料讀出,但隨即會寫回,資料內容不會改變。當然,如果刷新過程本身發生錯誤(例如時序設定不當、電壓不穩),確實可能導致資料損毀,但那是異常情況,而非刷新的本意。

8.3 為什麼待機也耗電?

很多人以為電腦關機或休眠後就不再耗電,但其實只要記憶體仍處於通電狀態,它就會持續刷新。這就是為什麼筆電在睡眠模式下仍會慢慢掉電,也是為什麼伺服器即使閒置也必須維持記憶體供電。刷新的本質是一種「維持性活動」,只要資料還在,這份複習就不能停。

8.4 能不能關掉刷新?

理論上,如果能保證記憶體在極低溫環境下運作,漏電速度會大幅降低,刷新頻率或許可以減少。但這在一般環境中並不現實。對绝大多数使用者而言,刷新是無法關閉、也不應該關閉的機制。超頻玩家可以微調 tREFI 來換取效能,但必須自行承擔穩定性的風險,並且透過嚴謹的測試來驗證。

九、結語:複習,是記憶的代價

回顧整篇文章,我們從 DRAM 的 1T1C 結構談起,理解電容漏電的物理現實,再一路談到刷新機制、溫度補償、記憶體控制器排程、DDR 世代演進,以及 Rowhammer 帶來的安全啟示。你會發現,「刷新」這件看似不起眼的小事,其實牽動了效能、功耗、穩定性和資訊安全等多個層面。

記憶體之所以要一直複習,是因為它選擇了一條「以簡單換取容量」的技術路線。它用電容儲存資料,換來了遠低於 SRAM 的成本與遠高於 SRAM 的密度;而代價,就是必須不斷地對抗漏電、不斷地刷新。這就像我們用便利貼記事情:方便、便宜、隨處可貼,但時間久了黏性會下降,必須偶爾壓一壓、換一張新的。

下次當你打開工作管理員,看到記憶體使用率跳動,或者在新聞裡讀到某個記憶體安全漏洞時,也許可以想起這篇文章。在那看似平靜的記憶體顆粒裡,正有數以億計的電容在默默地被讀取、被寫回、被「複習」。它們不會抱怨,也不會罷工,只為了讓你剛剛開啟的文件、正在播放的影片、以及還沒存檔的報告,能夠安安穩穩地留在那裡。

複習,是記憶的代價;而刷新,則是 DRAM 對資料許下的承諾。理解這個機制,不僅能讓你更懂電腦,也能讓你對每天使用的科技多一分敬意。

🏠 返回首頁