OSECPUのQ&A
毎度のQ&A形式による説明
- (1) 仮想CPU関係
- (1-1) どうしてレジスタが64本もあるの?多すぎじゃないですか?
- x86は8本しかないですし、他のプロセッサでも16本程度のものが多いので、確かにこれは多く見えます。その疑問はもっともです。
- でもOSECPUでは、メモリへのアクセスはいろいろとセキュリティのためのチェックを伴うので、遅いのです。そうなるとできるだけレジスタだけで処理をしたいという気分になります。だからレジスタを増やしました。
- 一方で、レジスタを256本とかにしてもたぶんそんなに使いきれず、結局将来タスクスイッチ(コンテキストスイッチ)のオーバーヘッドが増えるだけになりそうなのでやめました。
- それにOSECPUの命令では、演算命令や比較命令で定数を指定することができません。「1を足す」とか「0と比較する」みたいなことができず、他のレジスタに事前に定数を代入しておいて、そのレジスタとの比較にしなければいけないのです。こんな仕様なのでレジスタは多そうに見えて実はそんなに多くないかもしれません。
- どうしてそんな命令の仕様なのかと言えば、それはJITコンパイラを単純化するためです。
- (1-2) どうしてレジスタマシンを採用したのですか?JIT前提のバイトコードって、スタックマシンが多いと思うんですが。
- うーん、まあ、作者の趣味・・・かなあ。もしあなたがスタックマシンを好きなのでしたら、それでOSECPUみたいなOSを構成してみたら面白いかもしれないですね!
こめんと欄
- このページにこめんと欄はありません。このページの内容にコメントしたいときはimpressionsにお願いします。