Ads by Google
新しい記事を書く事で広告が消せます。
スタックマシン (2)
スタックマシン型命令セット
スタックベースの命令セットを持つマシンは、1つ以上のスタックを持つ。2つのスタックを持つ場合、一方を「データスタック」、もう一方を「リターンスタック」と呼び、データスタックはデータの処理に使われ、リターンスタックはサブルーチンコールの戻りアドレスを保持するのに使われる(コールスタックとも)。
オペランドとしてレジスタを使うマシンは、容易にスタックマシンをシミュレートできる。このようなシミュレーションを「仮想スタックマシン」とも呼ぶ。スタックベースの命令セットがレジスタベースのアーキテクチャより優れているのは、オペランドのアドレスを指定する必要がないので、命令長を小さくできる点である。これにより、コンパイルされた実行コードが劇的に小さくなる。命令セットやプログラム対象領域に依存するものの、RISCの1/6、CISCの1/4程度と言われる。
スタックマシンを商用に実装したものでは、コンテキストを保持するための特殊レジスタを持っている(例えばバロース B5000など)。これは厳密にはスタックマシンとは呼べないかもしれないが、それによってスタックマシンを汎用の情報処理に適したものにしているのも事実である。
スタックマシンを商用化した例を以下に挙げる。
○ハードウェアで直接実行される命令セットアーキテクチャ
・バロース B5000 アーキテクチャ(1961年から)
・ユニシス Clearpath/MCP(上記バロースのアーキテクチャの2006年現在の実装)
・タンデム・コンピュータ T/16
・HP 3000 (PA-RISC ではなく、それ以前の CISC)
・Atmel MARC4 マイクロコントローラ
・Forth言語を実装したチップ。RTX2000、Sh-Boom、F21、PSC1000 など。
・The 4stack processor by Bernd Paysan 4つのスタックを持つマシンの提案
・"Ignite" スタックマシン。チャールズ・ムーアがアーキテクチャを設計。
○仮想機械
・UCSD Pascal p-machine
・Java仮想マシン命令セット
・.NET Framework環境における共通中間言語命令セットおよびその仮想機械である VES(仮想実行システム)
・Forth言語処理系。特に threaded code で実装されているもの。
・アドビのPostScript
・サン・マイクロシステムズの Sun Ray スマートカードの定義作成のための SwapDrop 言語
バロースのアーキテクチャは、スタックマシンにタグ付きメモリを組み合わせたものである(各メモリワードの一部ビットでデータ型などを表す)。タグ付きメモリはオペコード(命令コード)の縮小に貢献している。つまり、整数や浮動小数点数といった区別はメモリワード自身が持っているので、命令コードで示す必要がない。スタックマシンであるためオペランドも少なく、結果として命令長が小さくて済むようになっている。
引用元 : Wikipedia http://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8
スタックベースの命令セットを持つマシンは、1つ以上のスタックを持つ。2つのスタックを持つ場合、一方を「データスタック」、もう一方を「リターンスタック」と呼び、データスタックはデータの処理に使われ、リターンスタックはサブルーチンコールの戻りアドレスを保持するのに使われる(コールスタックとも)。
オペランドとしてレジスタを使うマシンは、容易にスタックマシンをシミュレートできる。このようなシミュレーションを「仮想スタックマシン」とも呼ぶ。スタックベースの命令セットがレジスタベースのアーキテクチャより優れているのは、オペランドのアドレスを指定する必要がないので、命令長を小さくできる点である。これにより、コンパイルされた実行コードが劇的に小さくなる。命令セットやプログラム対象領域に依存するものの、RISCの1/6、CISCの1/4程度と言われる。
スタックマシンを商用に実装したものでは、コンテキストを保持するための特殊レジスタを持っている(例えばバロース B5000など)。これは厳密にはスタックマシンとは呼べないかもしれないが、それによってスタックマシンを汎用の情報処理に適したものにしているのも事実である。
スタックマシンを商用化した例を以下に挙げる。
○ハードウェアで直接実行される命令セットアーキテクチャ
・バロース B5000 アーキテクチャ(1961年から)
・ユニシス Clearpath/MCP(上記バロースのアーキテクチャの2006年現在の実装)
・タンデム・コンピュータ T/16
・HP 3000 (PA-RISC ではなく、それ以前の CISC)
・Atmel MARC4 マイクロコントローラ
・Forth言語を実装したチップ。RTX2000、Sh-Boom、F21、PSC1000 など。
・The 4stack processor by Bernd Paysan 4つのスタックを持つマシンの提案
・"Ignite" スタックマシン。チャールズ・ムーアがアーキテクチャを設計。
○仮想機械
・UCSD Pascal p-machine
・Java仮想マシン命令セット
・.NET Framework環境における共通中間言語命令セットおよびその仮想機械である VES(仮想実行システム)
・Forth言語処理系。特に threaded code で実装されているもの。
・アドビのPostScript
・サン・マイクロシステムズの Sun Ray スマートカードの定義作成のための SwapDrop 言語
バロースのアーキテクチャは、スタックマシンにタグ付きメモリを組み合わせたものである(各メモリワードの一部ビットでデータ型などを表す)。タグ付きメモリはオペコード(命令コード)の縮小に貢献している。つまり、整数や浮動小数点数といった区別はメモリワード自身が持っているので、命令コードで示す必要がない。スタックマシンであるためオペランドも少なく、結果として命令長が小さくて済むようになっている。
引用元 : Wikipedia http://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8
コメント
コメントの投稿
