計算モデル
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/08/31 06:19 UTC 版)
理論計算機科学の多くの分野で、「計算機械」を理論的に、すなわちモデル化して扱うために多大に活用されている。また特に抽象機械は、実際のプロセッサやコンパイラやインタプリタの研究や開発など、理論に限らず実際的な分野でも活用される。計算理論においては、計算可能性や計算複雑性について形式的・定量的に示すためなどに使われており、古典的な成果にチャーチ=チューリングのテーゼがある。
より現実の計算機に近づけた機械の定義には命令セット、レジスタ、メモリモデルなども含まれる。現在の一般的なコンピュータ(要するにいわゆるノイマン型)を抽象化した計算モデルとしてはRAMモデル(ランダムアクセスマシン)がある。これはメモリに対してインデックス付けによりランダムアクセス可能な計算モデルである(チューリングマシンではテープの1区画ずつの移動しかできない)。キャッシュメモリが一般化し、そのヒット率が性能に与える影響が大きくなるにつれて、メモリの階層を前提とした計算モデルが重要となった。
ハードウェアとして実装されていない(実装する予定のない)プロセッサの設計も一種の抽象機械である[1]。特にインタプリタの形式でソフトウェアとして実装されている抽象機械を仮想機械と呼ぶ。研究目的などで、より抽象的な抽象機械の実装を作って研究などに使うこともある。
抽象機械を使用することで、実際にシステムを組み立てることなく時間、メモリ使用量など特定の操作の実行に要するリソースを計算で求めることが可能である。
関連項目
- チューリングマシン
- レジスタマシン
- スタックマシン
- ラムダ計算
- セルオートマトン
- SECDマシン
- CEK機械
- 帰納函数
- 論理回路
- 形式文法
- プッシュダウン・オートマトン
- 有限状態機械
- 状態遷移図
- 神経細胞網
- 量子計算機
脚注
- ^ と言えなくもないが、実機のプロセッサに近い設計では、理論的に扱うための利点はほぼ無い。
計算モデル
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/26 20:47 UTC 版)
CILはオブジェクト指向かつスタックベースである。これは、たいていのプログラミング言語同様、命令のパラメータと結果が、いくつかのレジスタや他のメモリ領域に保持されるのではなく、単一のスタック上に保持されることを意味する。 x86における加算命令のアセンブリコード例を挙げる。 add eax, edx ここで、eaxとedxは汎用レジスタであり、上記はeaxにedxの内容を加算代入している。 これに相当する中間言語 (IL) のコードは以下のように表せる。 ldloc.0ldloc.1addstloc.0 // a = a + b または a += b; ここで、スタック上に2つのローカル変数がプッシュされる。加算命令が呼び出された際にオペランドがポップされ結果がプッシュされる。残った値はその後ポップされ最初のローカル変数にストアされる。
※この「計算モデル」の解説は、「共通中間言語」の解説の一部です。
「計算モデル」を含む「共通中間言語」の記事については、「共通中間言語」の概要を参照ください。
- 計算モデルのページへのリンク