khabaを設計しながら気づいたIA-32のダメなところ
(1) ページング
- PDEとかPTEはダメ。TLBがOSから見えて読み書きできればそれでよかった。つまりTLBにヒットしなければページフォールト。そういうCPUはRISC系では普通にあるらしい。
- TLBは、カバーするアドレスの範囲と対応する物理アドレスを格納するのがいい。これなら32bit*3でいい。この仕組みならページの大きさは自由だし(統一する必要もない)、連続するページは一つのTLBでカバーさせることも可能になる。TLBに0-4GBを0-4GBへ対応付ける設定をTLBに書き込んでおけば、これはページングをoffにしたのと同じ効果がある。
- PDEとかPTEの何がダメって、まずページの大きさを自由にできない。PDEやPTEをもっと小さく保つ工夫を思いついてもそれを生かせない。ある意味CPUがメモリを食っているといえる。
(2) セグメンテーション