首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

計算機存儲體系:Cache原理、DMA機制與性能優化

     編輯:關於C語言

計算機存儲體系:Cache原理、DMA機制與性能優化

存儲器層次結構

CPU 寄存器 (最快, 最小)
    ↓
L1/L2/L3 Cache (SRAM, ns級)
    ↓
主存 DRAM (GB級, ~100ns)
    ↓
磁盤/SSD (TB級, ms/μs級)

核心思想:局部性原理(時間局部性+空間局部性)讓小容量高速Cache覆蓋大部分訪問。

Cache 工作流程

  1. CPU發出地址 → 分為Tag、Index、Offset
  2. 按Index查找Cache組 → 比較Tag命中?
  3. 命中:直接從Cache讀取數據 → CPU繼續
  4. 未命中:從主存讀取一塊 → 裝入Cache(可能替換) → 再讀取

命中率直接決定平均訪問時間:AMAT = Hit_time + Miss_rate × Miss_penalty

Cache 設計權衡

參數過大影響過小影響
容量查找慢、成本高、功耗大命中率低、頻繁訪存
塊大小空間局部性利用不足、替換開銷大標籤開銷大、空間局部性差
關聯度比較器複雜、延遲高衝突未命中多

最佳塊大小通常32-128字節,平衡空間局部性與傳輸開銷。

DMA (Direct Memory Access) 機制

問題:CPU速度快,外設慢,CPU輪詢/中斷搬運數據嚴重浪費算力。
解決:DMA控制器接管內存↔外設數據傳輸,CPU僅參與啟動和結束。

DMA 傳輸流程

  1. 啟動:CPU配置DMA寄存器(源地址、目標地址、長度、方向)→ 啟動DMA
  2. 傳輸:DMA請求總線控制權 → 直接搬運數據(無CPU干預)
  3. 完成:DMA發送中斷通知CPU → CPU處理後續(如檢查錯誤、啟動下一傳輸)

DMA 優勢

  • CPU釋放去執行計算任務
  • 總線利用率高(突發傳輸)
  • 大塊數據移動(網卡收包、磁盤讀寫、聲卡播放)效率極高

總結

現代計算機性能核心在於存儲層次與數據搬運機制:
• Cache用局部性原理掩蓋主存延遲
• DMA用專用控制器釋放CPU處理大數據移動
理解兩者原理,是系統優化、驅動開發、高性能計算的必修課。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved