告別分段記憶體:Intel 8086 記憶體分段設計的功過得失
一位電腦愛好者 BillPg 在設計虛構的1980年代家用電腦過程中,重新審視了 Intel 8086 記憶體分段(Memory Segmentation)架構的設計邏輯。他指出,分段記憶體在當時其實是個好主意,卻因開發者的誤用與不良習慣而走向沒落,最終被現代記憶體管理單元(MMU)所取代。

文章重點
- Intel 8086 引入記憶體分段機制,是為了在維持與 8080/Z80 軟體相容的前提下,突破 16 位元位址的 64KB 記憶體上限。
- 8086 的段暫存器值與偏移位址直接相加,造成位址重疊(Overlapping Address)的副作用,此為設計的非預期結果,卻被開發者廣泛利用。
- 80286 之後分段機制雖已改善為定義記憶體區塊的「金鑰」,但開發者已習慣「平坦記憶體模式」,分段設計因此沒落。
- 有人獨立發現在保護模式下建立平坦段再切回實模式的技巧,後被稱為「非實模式(Unreal Mode)」,可在實模式下存取超大位址空間。
- 分段記憶體原本可支援虛擬記憶體等功能,其概念最終被現代記憶體管理單元(MMU)吸收,對應用開發者完全透明。
告別分段記憶體:Intel 8086 記憶體分段設計的功過得失
一位自稱 BillPg 的電腦愛好者,近來正著手設計一台「架空版」1980年代家用電腦。在這個過程中,他重新審視了小型電腦發展史上那些習以為常的設計假設——而事後諸葛未必全然客觀,有時反而會被現代思維所染色。某些在今日看似荒誕的設計,在當年的脈絡下其實相當合理。其中,他特別探討了飽受批評的 8086 記憶體分段(Memory Segmentation)機制。
64K 的枷鎖與突破的嘗試
如果你對這段歷史不太熟悉,可以先了解背景:8086/8088 處理器面臨一個棘手的問題。Intel 希望它在概念上能與 8080、Z80 等採用 16 位元位址的電腦保持軟體相容性——而 16 位元位址意味著記憶體上限僅有 64KB。當 Intel 著手設計下一代晶片時,深知必須打破 64KB 的限制,但若要求開發者全面改寫程式碼,根本不切實際。於是,「將記憶體切割成多個 64KB 區段」的分段概念應運而生。
理論與現實的落差
理論上,16 位元的段暫存器(Segment Register)可額外提供 4 個位址位元,與原有的 16 位元位址合併後形成 32 位元定址空間——儘管 CPU 實際上只有 20 條位址匯流排。適合在 64KB 內執行的程式可以無感沿用,而一套高規格的系統則可擁有多達 16 個這樣的「世界」。未來的系統理論上還可以進一步擴展。
然而現實情況是,Intel 將段暫存器的值作為 32 位元位址的高 16 位,再與一般的 16 位元偏移位址相加。如此一來,位址 0000:0010(段=0,偏移=0x10)與 0001:0000 指向相同的記憶體位置;0010:0010 則與 0000:0110 及 0001:0100 等價。這種**位址重疊(Overlapping Address)**並非原始設計意圖,只是晶片運作方式所衍生的副產品。
好主意被壞習慣埋葬
到了後來,段暫存器的角色演變為指向描述表的索引(如本文標題圖所示),但那時不良的程式設計習慣早已根深蒂固,一個原本可行的好主意就此蒙塵。原始設計者大概從未預料到有人會刻意利用那個重疊位址——但偏偏就有人這麼做了。
等到 80286 及後續處理器真正將段暫存器改為定義記憶體區塊的「金鑰」時,開發者早已習慣將段與偏移合在一起視為一個「大型指標」。C 編譯器甚至提供了不同的「模式(mode)」,讓開發者直接把段當作額外的位址位元使用。正因如此,即便在更新的處理器上,人們也傾向於建立一個「平坦(flat)」段——也就是從位址 0 開始、延伸至記憶體末端的段,然後完全忽略分段的存在。
事實上,有許多人各自獨立發現:只要在保護模式(Protected Mode)下定義一個平坦段,再切回實模式(Real Mode),就能享有平坦位址空間。這個技巧後來被稱為**「非實模式(Unreal Mode)」**,是電腦史上相當有趣的一頁旁門左道。
分段記憶體:超前時代的遺憾
我們認同 BillPg 的觀點:分段記憶體在當時是個好主意,如果開發者能以「正確」的方式使用它,其重要性可能遠不止於此。當然,它也有潛在的缺點——例如,適當的分段或許可以輕鬆支援虛擬記憶體(Virtual Memory),但代價是可能需要換入換出大塊的記憶體段,而非現代作業系統慣用的相對較小的分頁(Page)。
時至今日,分段記憶體原本應承擔的大部分功能,早已融入**記憶體管理單元(MMU)**之中,對應用程式開發者而言幾乎是完全透明的。儘管如此,回顧 Intel 當年做出這個設計選擇的原因,以及我們如何一步步走到今天,仍是一件饒富趣味的事。
原文來源: 查看原文
常見問題
Newsletter
訂閱低空產業電子報
每日精選低空經濟與無人機產業新聞,直送您的信箱。
本文由 LAETimes 編輯部審核發佈 ·


