#riscvjp kernelはsuper visor modeで動作している。タイマー割り込みなどはmachine modeで動作する。machine modeではMMUが無効化されているので実割り込み処理はせず、contextを保存して、super visor上で動作するkernelにソフトウェア割り込みで遷移して、super visor上で実際の処理を行う
2020-01-24 19:31:33#riscvjp 通常のアプリなどはuser modeで動作する。user modeからsuper visor modeへのsystem call呼び出し (内部ではsretが呼び出されている)
2020-01-24 19:31:57#riscvjp ページテーブルをたどるのをウオークと表現するらしい。 ちょっと前はOSが設計してソフト的に辿ってたけど性能の都合、今はハードウェアで引けるようになっているそう。
2020-01-24 19:42:00#riscvjp ページテーブルエントリー。アクセス/ダーティビットの仕様がちょっと面白い。よくあるのはCPUが勝手にやってくれるものだが、RISC-VはOSでやってもいいよとなっている。
2020-01-24 19:50:00ページテーブルエントリ(PTE)において、保護属性のR/W/Xを全て0にセットしたものはページテーブル参照とみなす。 逆に、1段目/2段目で保護属性bitをどれか立てると1GiB/2MiBのラージページ指定をできる #riscvjp
2020-01-24 19:52:25#riscvjp ワーキングセットのおさらい。 とある実行区間に対しては局所性をもってるよね というやつ(なんか書いてて自分が曖昧にしか理解していないことが露呈する)
2020-01-24 19:59:13#riscvjp 皆さん、そろそろなんで仮想記憶やワーキングセットの話をしているか忘れていると思いますが、 アクセス/ダーティビットの設定をOSで設定できるように仕様が許容されてるのはなぜだろうか?という考察です。
2020-01-24 20:04:47#riscvjp いろいろな条件があるとOSでセットしたほうがいいこともある。ということが分かったのだけど、TLBの操作もセットで必要になっていく話になるそう。 (むっずううう
2020-01-24 20:11:02#riscvjp HIGHエリアにkernelとmemory mapped I/Oを配置。下位メモリにUserspace appを配置し、各アプリで同じアドレス空間を多重に割り当てる (process毎に)
2020-01-24 20:15:31#riscvjp 全部のプロセスをストレートマップしておくと何が嬉しいか?切り替えが発生した時も単純にアクセス可能な領域かどうかを変更するだけでいい。
2020-01-24 20:20:29.@hikalium の話なうw #riscvjp pic.twitter.com/mx3nUdPQM7
2020-01-24 20:25:15#riscvjp MMC初期化処理の解説。ただ初期化するだけじゃなくて別アーキテクチャも考慮した話とかされてて、この辺のナレッジが圧倒的すぎる。かっこいい。
2020-01-24 20:26:20#riscvjp 32bit->64bitの遷移などでMMUの設定に注意が必要 (自分の実行すべきコードがアドレス空間に見えるように設定をしておく)
2020-01-24 20:30:31#riscvjp 面白いけど、情報量ありすぎ、ボーッとしているとあっという間に置いてかれる。ビデオ録画ありそうなので、もう一度聞かないといけない。
2020-01-24 20:31:14