基礎:計算機是什麼

哈佛架構(Harvard architecture)

回想那間馮紐曼工坊,指令單與零件共用一個架子、一條走廊。哈佛架構就是同一間工坊,但有兩個分開的架子、兩條分開的走廊——一套只給指令,一套只給資料。現在老闆可以在零件被搬往工作檯的同一瞬間去拿下一張指令單,因為它們從不共用同一條走道。

技術上,哈佛機器為指令與資料準備了分開的記憶體與分開的路徑(匯流排),所以提取指令與存取資料可以同時發生,而不必輪流。這就為這兩種操作避開了馮紐曼瓶頸,並提高了記憶體頻寬。代價是僵硬與複雜:程式碼與資料住在不同地方,使得「把程式當成普通資料看待」——儲存程式概念所鼓勵的做法——變得更難。

純哈佛機器常見於小型嵌入式晶片與數位訊號處理器,那裡可預測的速度值得這份僵硬。但對日常電腦,有個誠實的轉折:它們在結構層級大多是馮紐曼(單一位址空間、程式即資料),卻在晶片內部把指令與資料分到各自的第一層快取。這個分離快取的把戲常被稱為改良式哈佛架構——外表是馮紐曼的彈性,內裡是哈佛的平行。

多數現代 CPU 採用分離的 L1 快取:一個 L1 指令快取,加一個獨立的 L1 資料快取。核心可以在同一個週期內提取一條指令並讀取一筆資料——這是疊在馮紐曼主記憶體上的哈佛式平行。

真實晶片常常兩者並用:馮紐曼記憶體,哈佛快取。

別把它想成哈佛與馮紐曼贏家通吃的對決。主流電腦在結構層級是馮紐曼,在快取層級是改良式哈佛——兩者都借了一點。

又称
Harvard model哈佛結構