32位保護模式下,段基地址應盡量選取16位元組對齊的那些地址,可使訪問的性能最大化?

內存晶元組織結構來說明?


類似的說法我聽說過其它版本,比如32位元組,64位元組等等。

如果只說IA平台,性能最佳的應該是4K對齊(或者頁面對齊),這樣能減少換頁以及對一個頁的拆解。

如果不考慮拆分一個內存頁的問題,最好選擇64位元組對齊,因為一個cache line是64位元組。

最小的粒度差不多是16位元組,因為x86(含64)架構下,單條指令的最大長度可達15位元組(Intel手冊上寫的),16位元組剛好能覆蓋住最大的指令長度,猜測CPU內部對16位元組對齊的數據訪問比較快(可能某些buffer是16位元組的)。

順便說一句,32位環境下,更提倡使用的是平坦4G的模型,這種模型下段的大小是4G,基地址是0,通過分頁的方式來控制內存訪問,段寄存器的效果被弱化。


n久沒看知乎,看到有200多條邀請我回答的問題,好像只有這一題是和cpu設計有關,而且還沒有人回答。

在protected mode下memory addressing是用segmentation和paging。問的是段基地址,我猜是單指segment而不是paging

segmentation是通過segment descriptor來翻譯地址的

大概這樣子。

每個segment descriptor可以翻譯成這樣一個area,你能把16位limit全用了就不用經常換segment,如果limit沒用完就有很多碎片化的內存。ref/伸展閱讀:

Protected Mode Memory Addressing

Protected-Mode Memory Management


看Intel/AMD的優化手冊


推薦閱讀:

有沒有可能用3D列印列印出計算機晶元?
IC設計從業者的職業規劃是什麼?
是什麼因素限制了基於Boost拓撲的DC-DC升壓穩壓轉換器的最低輸入電壓?
英特爾晶元漏洞影響有多嚴重?
為什麼 CPU 等的頻率可以達到 GHz 級,但一般的 FPGA 晶元的頻率只能在百 MHz 級呢?

TAG:彙編語言 | 內存RAM | 晶元集成電路 | 計算機組成原理 |