9.27.2006

ARM MMU :Address Translation : Level One Descriptor

在ARM User Manual 上看MMU : address translation 時一直有一個疑問,作level one translation時:


mmu 的 TTB (translation base register) 內的bit 14-31


要轉換的address的 bit 20-31

組合成一個 30 bit的address
H  --------------------------L
[TTB 31-14] [ Address 20-31] 1. 0
這個位址就是level one descriptor。
descriptor的內容決定address要怎麼轉換。

問題是...address只有 30 bit呀,後面還有兩個bit怎麼辦?
都用 0 ? 那這個descriptor table不就不連續 ?

真蠢。

descriptor的size是32 bit,所以一個descriptor需要4 bytes。
最後兩個bit當然就不能用囉。


會被混淆的原因是 descriptor的內容,
剛好bit 0, 1 用作 traslation type 的id:
00 - Fault
01 - Coarse Page
10 - Section
11 - Fine Page

沒有留言: