竹下世界塔の計算機よもやま話

アクセスカウンタ

zoom RSS 仮想マシン・エミュレーションのための機構など

<<   作成日時 : 2011/10/26 19:55   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0


 新しい命令セットのプロセッサを提案しても特徴がなければ使ってもらえない。例えば組み込み系に特化してFPGAのIPマクロによる周辺I/Oを活用するOpenRISC、等。
32bit〜256bitのアーキテクチャを検討する手前、ハイエンド向けとして何らかの機能はないかと考えていた。最近思い至ったのはVM(仮想マシン)だ。独自のアーキテクチャは相手にされなくても、仮想マシンを実行できればその上で実行できる環境をそのまま持ってくることができる。
仮想マシンはJava仮想マシン(JVM)LLVM、Smalltalkの仮想マシンなどがある。
いずれも勉強中だが、マイクロプロセッサから見れば共通する動作がある。
(1)仮想マシンの命令取り込み
(2)命令を解釈する
(3)命令を実行する
(4)実行結果を書きだす
これはプロセッサの内部動作そのもので、プロセッサではハードウェアの支援でこれらを最短1サイクルで実行できるようになっている。エミュレーションとなると各動作に対し複数サイクルがどうしても必要になる。
 ではどのようなメカニズムを持てば仮想マシンのエミュレートに効果があるか?
ひとつは、仮想マシンの命令を持ってくるのロード命令を使うこと。これはマイクロプロセッサで言えば命令キャッシュとデータキャッシュが一緒になっていることと同じ。命令フェッチをしたいのにデータアクセスが発生してキャッシュラインに乗っている命令列が追い出される場合がある。
これはソフトウェアではどうしようもない。そこで第三のキャッシュメモリを考えた。I$(命令キャッシュ),D$(データキャッシュ)と別にE$(エミュレーションキャッシュ)を用意する。
E$はSharedとInvalidateの状態しかもたない。この点はI$と同じ。ただしロード命令でデータがキャッシュに乗る。ロード命令はASIの指定でE$を経由することを指示する。
また、E$にプリフェッチを効かせる命令を用意する。これはI$のハードウェアプリフェッチと同じ目的で、エミュレーションする命令列を事前にE$に乗せる働きをする。
この機構は大したコストアップにはならない。D$に対して同じデータパスを使用し、キャッシュダグをShared/Invalidateにするだけ、メモリの構造は共通化できる。
E$はオプショナルであり、存在しない場合のASI空間は通常のデータアクセスと同等、E$プリフェッチはD$プリフェッチとなる。また、D$の一部をE$動作にしてもよい。
むしろエミュレーションをしない状態のことを考えるとD$の一部をE$として使うようにしたほうがいいかもしれない。
今後Transmetaのアーキテクチャも調べたい。x86命令のエミュレーションを目的としたIn-OrderのVLIWマシンと理解しているが、エミュレーションに関するメカニズムを知りたい。

 また別の仕組み。これはプロセッサ自身の命令エミュレーションに関して。
昔、浮動小数点演算がオプションだった頃は、浮動小数点命令が来ると不正命令のトラップを発生して対応する浮動小数点演算のサブルーチンに飛ばし、あたかも浮動小数点コプロセッサがあるかのように振る舞う仕組みがあった。
現在も実装が面倒だったり使用頻度が少ない命令に対してはトラップを発生してこっそり処理することがある。しかしある命令がハードウェアで実装されているのか、そうではないのかはプロセッサのステータスレジスタを読み込んで自分自身がどんなグレードかを判断する必要があった。
ここで特定の命令がハードウェア実装かどうかを確認する命令を用意する。
IMPL GRx,GRd ; GRxは検査したい命令のパターン(32bit)、GRdには検査結果(0:ハードウェア実装、1..その他)
実装は簡単で、汎用レジスタの内容を命令デコーダに流すだけ。命令を調べるという動作は連続して行う必要性はないので、パイプラインを止めて単独で実行しても問題はない。
この命令はブート時にエミュレーションすべき命令を判断し、フックするために使う。特権命令。ユーザモードでは使わない。

 いずれも大げさなハードウェアの追加はせずに機能を拡張することを考えている。

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文




仮想マシン・エミュレーションのための機構など 竹下世界塔の計算機よもやま話/BIGLOBEウェブリブログ
文字サイズ:       閉じる