ロゴ
ユニオンペディア
コミュニケーション
Google Play で手に入れよう
新しい! あなたのAndroid™デバイスでユニオンペディアをダウンロードしてください!
ダウンロード
ブラウザよりも高速アクセス!
 

MMIX

索引 MMIX

MMIX(エムミックス)は、ドナルド・クヌースがジョン・ヘネシー(MIPSプロセッサ設計者)や Dick Sites(Alphaプロセッサ設計者)の協力を得て設計した命令セット(命令セットアーキテクチャ、ISA)である。コンピュータプログラミングの「Art」を記している大著The Art of Computer Programming (TAoCP) において使用していた「MIX」の代替となるべく設計され、現代的な特徴を持つ。当命令セットを設計した後に執筆・改訂の TAoCP にて既に使用されている。 "MMIX" という綴りはローマ数字として解釈すると2009であり、前任のMIXの頭にMを付けたものであると同時に、2000年代のコンピュータ(プロセッサ)という意味を掛けているものと思われる(とはいえ、MIXの時の「実在のコンピュータ 16 種の型番から取って平均した」値の1009である、という主張にはかなりこじつけの気配があったのと同様、特に意味があるものではない)。.

23 関係: 二進法仮想記憶レジスタ (コンピュータ)レジスタ・ウィンドウローマ数字ドナルド・クヌース命令セットアドレス空間アセンブリ言語エンディアンオペレーティングシステムオープンソースコンペア・アンド・スワップコンテクストコールスタックシリアル番号ジョン・ヘネシーサブルーチンDEC AlphaMIPSアーキテクチャMIX (プログラミング)The Art of Computer Programming演算子

二進法

二進法(にしんほう)とは、2 を底(てい、基(base)とも)とし、底の冪の和で数を表現する方法である。 英語でバイナリ (binary) という。binaryという語には「二進法」の他に「二個一組」「二個単位」といったような語義もある(例: バイナリ空間分割)。.

新しい!!: MMIXと二進法 · 続きを見る »

仮想記憶

仮想記憶(かそうきおく、Virtual Memory、バーチャルメモリ)とは、コンピュータ分野におけるメモリ管理の仮想化技法の一種であり、オペレーティングシステムなどが物理的なメモリを、アプリケーション・ソフトウェア(プロセスなど)に対して、専用の連続した主記憶装置に見えるように提供する。 この技術により、物理的な主記憶装置に加えてハードディスク装置等の補助記憶装置を併用すれば、物理的な主記憶装置よりも大きな仮想メモリを提供する事ができる。またアプリケーション・プログラム側は、物理メモリ上のアドレスを意識しなくて良いため、マルチタスクの実現が容易である。このため現代のオペレーティングシステムの多くが仮想記憶をサポートしている。 仮想的に与えられたアドレスを仮想アドレス (virtual address) または論理アドレス (logical address)、実記憶上で有効なアドレスを物理アドレス (physical address) または実アドレス (real address) という。仮想アドレスの範囲を仮想アドレス空間、物理アドレスの範囲を物理アドレス空間という。.

新しい!!: MMIXと仮想記憶 · 続きを見る »

レジスタ (コンピュータ)

レジスタ(register)はコンピュータのプロセッサなどが内蔵する記憶回路で、制御装置や演算装置や実行ユニットに直結した、操作に要する速度が最速の、比較的少量のものを指す。.

新しい!!: MMIXとレジスタ (コンピュータ) · 続きを見る »

レジスタ・ウィンドウ

レジスタウィンドウとは、コンピュータのCPUの一般的な動作であるプロシージャコールの性能を向上させる技法である。 この問題にハードウェアをつぎ込むことによってほとんど全てのコンピュータプログラムが高速に動作するようになる。 これはバークレーRISCの設計上の特長のひとつであり、後にSPARC、AMD 29000、Intel i960で商用化された。 多くのCPUの設計では、レジスタと呼ばれる小規模な超高速メモリを持っている。 レジスタは、長い命令列を実行中にCPUが一時的に値を保持しておくのに使われる。 レジスタが多ければ性能が向上するが、レジスタというのはCPUの命令セットと密接な関係がある。 一度CPUをリリースしてしまったら簡単にはレジスタを増やしたり出来ない。 レジスタは万能の性能向上策であるが、問題もある。 コンピュータプログラムの別々の箇所はそれぞれ一時的な値を持っているため、レジスタの使用が競合してしまう。 プログラムが実行時にどう動くかをよく理解することは困難である。 開発者が実際に開発中に、自分が書いているコードがどれだけレジスタを使ったらよいか、どれだけをプログラムの他の部分のために残しておいたらよいかを決めるのは容易ではない。 一般にそのような考慮は無視され、開発者あるいは彼らが使うコンパイラは見えている全てのレジスタを使うものである。 ここにレジスタウィンドウの使い道が出てくる。 プログラムの各部はそこだけで使えるレジスタを必要とするので、プログラムの各部分ごとにレジスタのセットを提供することに意味が出てくる。もちろん、レジスタのセット以外のレジスタもプログラムのある部分から見えるなら、それも使われてしまうだろう。 ここでのトリックはあるレジスタセット以外のレジスタを見えなくしてしまうことにある。 これは何か複雑なことのように聞こえるかもしれないが、実際は単純である。 プログラムのある部分から別の部分へプロシージャコールで移動するとCPUは簡単にそれを検知できる。一般にプロシージャコールはいくつかの決まった命令列で構成され、元に戻るときも決まった命令列を使う。 バークレーの設計では、プロシージャコールの命令列によって新たなレジスタセットがそれまでのレジスタセットと入れ替えられる。 また、プロシージャから元の場所に戻るときは、それまで使っていたレジスタセットに"dead"(あるいは"reusable")という印をつける。 バークレーRISCの設計では、全部で64本あるレジスタのうち 8本がプログラムから見えるようになっている。 レジスタ全体のことをレジスタファイルと呼び、8本のレジスタのことをウィンドウと呼ぶ。 このレジスタファイルによれば、最大で8レベルのプロシージャコールがレジスタファイル内で実行可能である。 プログラムが8レベル以上の深さでプロシージャをコールしない限りレジスタがあふれる(つまり主記憶かキャッシュに追い出される)ことはない。レジスタがあふれたときの処理はかなり時間を要する。 ほとんどのプログラムは6レベルまでの深さの範囲内で処理を行う。 比較のためサン・マイクロシステムズのSPARCアーキテクチャを説明する。 こちらの場合、8本のレジスタのセットが4個同時に見えるようになっている。 そのうち3セットがウィンドウとなっている。.

新しい!!: MMIXとレジスタ・ウィンドウ · 続きを見る »

ローマ数字

ーマ数字(ローマすうじ)は、数を表す記号の一種である。ラテン文字の一部を用い、例えばアラビア数字における 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 をそれぞれ Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ,Ⅶ,Ⅷ,Ⅸ,Ⅹのように並べて表現する。I, V, X, L, C, D, M はそれぞれ 1, 5, 10, 50, 100, 500, 1000 を表す。i, v, x などと小文字で書くこともある。現代の一般的な表記法では、1 以上 4000 未満の数を表すことができる。 ローマ数字のことをギリシャ数字と呼ぶ例が見られるが、これは誤りである。.

新しい!!: MMIXとローマ数字 · 続きを見る »

ドナルド・クヌース

ドナルド・エルビン・クヌース(Donald Ervin Knuth, 1938年1月10日 -)は数学者、計算機科学者。スタンフォード大学名誉教授。 クヌースによるアルゴリズムに関する著作 The Art of Computer Programming のシリーズはプログラミングに携わるものの間では有名である。アルゴリズム解析と呼ばれる分野を開拓し、計算理論の発展に多大な貢献をしている。その過程で漸近記法で計算量を表すことを一般化させた。 理論計算機科学への貢献とは別に、コンピュータによる組版システム TeX とフォント設計システム METAFONT の開発者でもあり、Computer Modern という書体ファミリも開発した。 作家であり学者であるクヌースは、文芸的プログラミングのコンセプトを生み出し、そのためのプログラミングシステム WEB / CWEB を開発。また、MIX / MMIX 命令セットアーキテクチャを設計。.

新しい!!: MMIXとドナルド・クヌース · 続きを見る »

命令セット

命令セット(めいれいせっと、instruction set)は、コンピュータのハードウェアに対して命令を伝えるための言葉の語彙。.

新しい!!: MMIXと命令セット · 続きを見る »

アドレス空間

情報処理において、アドレス空間 (Address Space) とは、メモリアドレスが意味を成すコンテキストを定義したもの。あるいは、一連のメモリアドレスによってアクセス可能なメモリ空間を意味する。 メモリアドレスはコンピュータのメモリ内の物理的位置を識別するものであり、住所とある意味で類似している。アドレスはデータが格納されている位置を指すが、それはちょうど人間の住所がその人の居住地を指すのと同じである。人間の住所とのアナロジーで言えば、「アドレス空間」とは、町や市や国といったある範囲の地域に対応すると考えることができる。2つのアドレスが数値的に同じでも、それぞれ異なるアドレス空間内のアドレスであれば、異なる位置を指していると言える。これは2つの市に「××町○丁目△-□」という住所が存在したとき、それらが別の場所を指すのと同じことである。 アドレス空間の例:.

新しい!!: MMIXとアドレス空間 · 続きを見る »

アセンブリ言語

モトローラ MC6800 のアセンブリ言語のソースコード アセンブリ言語(アセンブリげんご、英: assembly language)とは、コンピュータ、マイクロコントローラ、その他のプログラム可能な機器を動作させるための機械語を人間にわかりやすい形で記述する、代表的な低水準言語である。なお、英語の assembly とは「組立」という意味である。.

新しい!!: MMIXとアセンブリ言語 · 続きを見る »

エンディアン

ンディアン(endianness)は、複数のバイトなどを並べる順序の種類である。一般的な用語による表現ではバイトオーダ(byte order)、ないしそれを一部訳して日本語ではバイト順とも言う。 英語の「endian」という単語自体には元々は「配置方式」「並び順」といった意味はなかった(#語源を参照)。日本では総称として「エンディアン」と呼ぶことが多いが、英語でそれに相当する語はendianness(エンディアンネス)である。.

新しい!!: MMIXとエンディアン · 続きを見る »

オペレーティングシステム

ペレーティングシステム(Operating System、OS、オーエス)とは、コンピュータのオペレーション(操作・運用・運転)のために、ソフトウェアの中でも基本的、中核的位置づけのシステムソフトウェアである。通常、OSメーカーが組み上げたコンピュータプログラムの集合として、作成され提供されている。 オペレーティングシステムは通常、ユーザーやアプリケーションプログラムとハードウェアの中間に位置し、ユーザーやアプリケーションプログラムに対して標準的なインターフェースを提供すると同時に、ハードウェアなどの各リソースに対して効率的な管理を行う。現代のオペレーティングシステムの主な機能は、ファイルシステムなどの補助記憶装置管理、仮想記憶などのメモリ管理、マルチタスクなどのプロセス管理、更にはGUIなどのユーザインタフェース、TCP/IPなどのネットワーク、などがある。オペレーティングシステムは、パーソナルコンピュータからスーパーコンピュータまでの各種のコンピュータや、更にはスマートフォンやゲーム機などを含む各種の組み込みシステムで、内部的に使用されている。 製品としてのOSには、デスクトップ環境やウィンドウシステムなど、あるいはデータベース管理システム (DBMS) などのミドルウェア、ファイル管理ソフトウェアやエディタや各種設定ツールなどのユーティリティ、基本的なアプリケーションソフトウェア(ウェブブラウザや時計などのアクセサリ)が、マーケティング上の理由などから一緒に含められていることもある。 OSの中で、タスク管理やメモリ管理など特に中核的な機能の部分をカーネル、カーネル以外の部分(シェルなど)をユーザランドと呼ぶ事もある。 現代の主なOSには、Microsoft Windows、Windows Phone、IBM z/OS、Android、macOS(OS X)、iOS、Linux、FreeBSD などがある。.

新しい!!: MMIXとオペレーティングシステム · 続きを見る »

オープンソース

ープンソース (open source) とは、言葉通りのソースコードへのアクセスが開かれている(ソースコードが公開されている)ことを意味するのではなく、ソースコードを商用、非商用の目的を問わず利用、修正、頒布することを許し、それを利用する個人や団体の努力や利益を遮ることがないソフトウェア開発の手法を意味する。オープンソース・イニシアティブ は、「オープンソース」と名乗るための要件として「オープンソースの定義」を掲げている。.

新しい!!: MMIXとオープンソース · 続きを見る »

コンペア・アンド・スワップ

ンペア・アンド・スワップ(Compare-and-Swap、CAS)とは、アトミックに、あるメモリ位置の内容と指定された値を比較し、等しければそのメモリ位置に別の指定された値を格納するCPUの特別な命令の一種である。この操作の結果、置換が行われたかどうかを示す必要があり、単純な真理値を返すか、そのメモリ位置から読み込んだ内容(書き込んだ内容ではない)を返す。 CAS命令はマルチプロセッサシステムでセマフォなどを実装するのに使われる。 また、マルチプロセッサシステムでLock-freeとWait-freeアルゴリズムを実装するのにも使われる。Maurice Herlihy(1993年)はこれが単なるリード、ライトやテスト・アンド・セットでは実装できないことを示した。 CAS命令を利用したアルゴリズムは、一般にあるキーとなるメモリ位置を読み取り、その古い値を記憶しておく。その古い値に基づいて、新しい値を計算する。その後、CAS命令でそのメモリ位置に新しい値を格納するが、そのときにCAS命令の比較によって計算に用いた古い値が置換時にもそのまま入っていることを確認する。CAS命令が比較に失敗した場合、最初から処理をやり直す。メモリ位置を再度読み取って、値を計算し、CAS命令を再実行するのである。 このようなアルゴリズムは False Positive(偽陽性)という問題(あるいは ABA問題)に対処しなければならない。古い値を読み取った後、CAS命令を実行するまでの間に、そのメモリ位置の内容が複数回書き換えられて偶然もとの古い値と同じビットパターンになっている可能性がある。CAS命令だけではこの事実を検出できない。その値はパターンは同じでも全く異なった意味かもしれない。 CAS命令はシングルプロセッサのシステムには不要である。その場合、単に割り込みを不可にすることでアトミック性が達成される。しかし、マルチプロセッサシステムでは同時に全てのプロセッサで割り込みを不可とすることは困難だし、不十分でもある。他のプロセッサでも同じメモリ位置にアクセスしようとしているかもしれない。CAS命令はそのようなプロセッサ間の衝突を防ぎ、アトミックにメモリ位置をチェックして変更することを可能にする。.

新しい!!: MMIXとコンペア・アンド・スワップ · 続きを見る »

コンテクスト

ンテクスト(Context)あるいはコンテキストとは、文脈や背景となる分野によってさまざまな用例がある言葉であるが、一般的に文脈(ぶんみゃく)と訳されることが多い。文脈により「脈絡」、「状況」、「前後関係」、「背景」などとも訳される。.

新しい!!: MMIXとコンテクスト · 続きを見る »

コールスタック

ールスタック (Call Stack)は、プログラムに実行中にサブルーチンに関する情報を格納するスタックである。実行中のサブルーチンとは、呼び出されたが処理を完了していないサブルーチンを意味する。実行スタック (Execution Stack)、制御スタック (Control Stack)、関数スタック (Function Stack)などとも呼ばれる。また、単に「スタック」と言ったときにコールスタックを指していることが多い。コールスタックを正しく保つことは多くのソフトウェアが正常動作するのに重要であるが、その詳細は高水準言語からは透過的である。.

新しい!!: MMIXとコールスタック · 続きを見る »

シリアル番号

リアル番号(シリアルばんごう、serial number)は、ある決まった個々の識別をするために割り当てられる、一連の一意で等差な整数である。 数値的識別子が全てシリアル番号というわけではなく、シリアルではない識別番号の例として、数値に識別以外の情報がない名目番号 (名目値とは無関係)がある。 シリアル番号は任意の数から始めることができ、さらに任意の一定差分ずつ増減させることができる(ただし途中で差分を変えることはできない)。しかし通常は、1 または 0 から1ずつ増え総数または総数-1で終わり、総数を超えたり負数になることはない。.

新しい!!: MMIXとシリアル番号 · 続きを見る »

ジョン・ヘネシー

ョン・リロイ・ヘネシー(John LeRoy Hennessy、1953年 - )は、ミップス・コンピュータシステムズ社の創立者であり、スタンフォード大学の第10代学長を務めたほか、現在はGoogleの親会社であるAlphabetの会長である。.

新しい!!: MMIXとジョン・ヘネシー · 続きを見る »

サブルーチン

ブルーチン(subroutine)は、コンピュータプログラミングにおいて、プログラム中で意味や内容がまとまっている作業をひとつの手続きとしたものである。繰り返し利用されるルーチン作業をモジュールとしてまとめたもので、呼び出す側の「主」となるもの(メインルーチン)と対比して「サブルーチン」と呼ばれる。サブプログラム (subprogram) と呼ばれることもある。また、「サブ」をつけずに「ルーチン」と呼ぶこともある。 プログラムのソース中で、繰り返し現れる作業をサブルーチン化することで、可読性や保守性を高く保つことができる。繰り返し現れる作業でなくても、意味的なまとまりを示すためにサブルーチン化することもある。また、キャッシュのような階層的メモリの設計を持つコンピュータ(現在のパソコンやワークステーションなどほぼすべて)では、よく使われるサブルーチンがキャッシュに格納されることで高速な動作を期待できる。.

新しい!!: MMIXとサブルーチン · 続きを見る »

DEC Alpha

DEC Alpha AXP 21064 のダイ DEC Alpha AXP 21064 のパッケージ Alpha AXP 21064 のダイを埋め込んだ名刺 Compaq Alpha 21264C Alphaを複数のチップで実装した初期のマルチチップモジュール DEC AlphaはAlpha AXPとしても知られ、ディジタル・イクイップメント・コーポレーション (DEC) の64ビットRISC命令セットアーキテクチャ (ISA) であり、32ビットVAX CISC ISA とその実装を置換すべく設計された。AlphaはDECがマイクロプロセッサとして実装し生産した。Alphaマイクロプロセッサは特にDECのワークステーションやサーバに使用され、ミッドレンジ以上のあらゆるコンピュータで採用された。サードパーティもAlphaを使ったシステムを製造しており、PCのフォームファクタのマザーボードなども作られた。 オペレーティングシステム (OS) としてはDEC版UNIX (Tru64 UNIX) やVMSをサポートした。後に、Linux (Debian GNU/Linux, Gentoo Linux, Red Hat Linux) や一部のBSD (NetBSD, OpenBSD, FreeBSD) のようなオープンソースのOSもAlpha上で動作するようになった。マイクロソフトもWindows NT 4.0 SP6までAlphaをサポートしたが、Windows 2000 beta 3以降、サポートは打ち切られた。 1998年、DECがコンパックに買収されると、Alphaアーキテクチャもコンパックのものとなった。コンパックはインテルの顧客でもあり、予定されていたHP/インテルのItaniumアーキテクチャを採用するためAlphaを徐々にフェーズアウトさせることにし、Alpha関連の知的財産権を2001年にインテルに売却し、実質的に製品として見切りをつけた。2002年HPがコンパックを買収し、2004年まで既存製品の開発を継続し、既存顧客向けに2006年10月までAlphaベースのシステムの販売継続を約束した(その後2007年4月に延長)。.

新しい!!: MMIXとDEC Alpha · 続きを見る »

MIPSアーキテクチャ

MIPSアーキテクチャは、ミップス・コンピュータシステムズ(現ミップス・テクノロジーズ)が開発したRISCマイクロプロセッサの命令セット・アーキテクチャ (ISA) である。.

新しい!!: MMIXとMIPSアーキテクチャ · 続きを見る »

MIX (プログラミング)

MIX とは、ドナルド・クヌースが著書 The Art of Computer Programming (TAoCP) で使った仮想計算機である。1960年代に生まれた MIX は、今後の TAOCP の版では MMIX という新たな(仮想の)コンピュータアーキテクチャで置換される予定である。MIX と MMIX のソフトウェア実装(MIXware および MMIXware)はクヌースが開発しており、自由に利用可能となっている。クヌースの MIX/MMIX エミュレータからの派生版も存在する。GNU MDK がその一例で、フリーソフトウェアとして幅広いプラットフォーム上で動作する。 TAoCP 本文中の記述によれば、MIX は「世界初の多機種複合型コンピュータ」で、型番は MIX という綴りをローマ数字として解釈したものと同じ 1009 であると設定されている。この数は「MIX によく似ていて MIX を簡単にシミュレートできる実在のコンピュータ 16 種」の型番から取って平均した(mixした)ものであるとあるが、具体的にその機種を検討してみるとかなり恣意的であり、このラインナップについてはこじつけと見てよいであろう。.

新しい!!: MMIXとMIX (プログラミング) · 続きを見る »

The Art of Computer Programming

『』は、コンピュータプログラミングに関する書籍である。様々なアルゴリズムについて、その背景や歴史まで踏み込んだ徹底的な解説を行っている。著者のドナルド・クヌース は、自身のライフワークと位置づけている。 その全体構想から見れば現在も未完であるが、十分な業績としてみなされていることは、3巻初版までが刊行されていた1974年に受賞したチューリング賞の受賞理由に功績として本シリーズが含まれていることからも分かる。また、1976年に2巻の第2版の準備をしていた際に、初版のような鉛版による組版 (en:Hot metal typesetting) が行われなくなっていたために仕上がりに納得せず、組版システムの TeX を(当初は1978年のサバティカルが終わるまでには完全に仕上げるつもりで)作り始めてしまったことなど、逸話も多い。 現在3巻までと4巻の分冊が刊行されている。今後の計画についてはwebページで確認できるが、おおむね執筆開始当初の構想と変わっておらず、5巻は構文的 (syntactic) アルゴリズムについてで、9章が字句スキャナ、10章が(文字列)解析の技術、6巻は文脈自由文法の理論、7巻がコンパイラ技術となっている。ただし位置付けとして、5巻までの内容は central core of computer programming for sequential machines であるのに対し、6・7巻の内容は important but more specialized である、としている(またドラゴンブック等、この40年の間に書籍が充実した分野でもある)。 近年では、アスキーから日本語訳が出版されていた。2007年9月現在で3巻までと改訂版分冊1巻、4巻の分冊2,3が刊行されていた。その後、KADOKAWAドワンゴに在籍する元アスキーの編集者が担当する「アスキードワンゴ」レーベルにより、2015年6月の1巻再刊から再開され、2017年3月に4巻の最初のまとまった分冊である4A巻が刊行されている。 サイエンス社から出版されていた旧日本語訳版は、原著2巻相当分の4巻までしか出ていない。また、出版時期が古いためもあるが、専門用語について可能な限りカタカナ語を使わず訳すという少々冒険的な方針のために独特の用語が多用されており、和訳における専門用語の扱いにおける歴史的な一例にもなっている。.

新しい!!: MMIXとThe Art of Computer Programming · 続きを見る »

演算子

演算子(えんざんし、operator symbol, operator name)は、数式やコンピュータプログラミング言語などで、各種の演算を表わす記号・シンボルである。普通は、演算子は単なる記号ないし記号列であって構文論的なものであり、それに対応する演算は意味論の側にある。たとえばJavaにおいて、演算子 + を使った a + b という式は、構文論上は単にそういう式だというだけである。意味論的には数値の加算であったり、文字列の連結であったりするが、それは a と b の型に依って決まる(理論的には項書き換えのように、構文論的に意味論も与えられた演算子といったものもある)。 演算が作用する対象のことを被演算子(operand; オペランド、被演算数、引数)という。たとえば、n と 3 との和を表す式 "n + 3" において、"+" は演算子であり、その被演算子は "n" と "3" である。また、数式として一般的な被演算子と被演算子の間に演算子を記述する構文は中置記法と呼ばれる。 数学的には、基本的には、関数(単項演算子では1引数の関数、2項演算子は2引数の関数)をあらわすある種の糖衣構文のようなものに過ぎない。しかし、汎函数計算など、演算子を操作するような手法もある。.

新しい!!: MMIXと演算子 · 続きを見る »

出ていきます入ってきます
ヘイ!私たちは今、Facebook上です! »