機械語(マシン語)とは、マイクロプロセッサが処理を行う時に読み取る、実行内容が記述されたデータ列の事である。
機械語は、その名の通り機械である計算機のために書かれた0と1のビットからなるデータ列であり、人間が機械語だけを見て、どんな動作をするのかを理解するのは非常に難しい。
通常はC言語やJavaといったプログラミング言語でプログラムを記述し、コンパイラというツールによって機械語に変換する。文字を使って命令とレジスタを表現する事で、機械語をもう少し分かりやすく表記したアセンブリ言語もあり、アセンブリ言語で書かれたコードはアセンブラによって機械語に変換する。
機械語とアセンブリ言語は低級言語、CやJava等のプログラミング言語は高級言語と呼ばれる。
機械語はバイナリエディタなどによって読み書きする事ができる。その際には1と0の二進数ではなく、記述を短くできる十六進数が使われることも多い。
プログラミングやコンピューターの入出力がパンチカードで行われていた時代は、機械語を直接読み書きできる事が計算機を扱うエンジニアにとって普通であった。しかし、アセンブラやコンパイラの普及によりそういったスキルは必須ではなくなり、むしろマニアックであるとみなされる領域となっている。
また、マイクロプロセッサはその種類ごとに解釈できる機械語の仕様が異なっており、これを命令セットアーキテクチャ(ISA: instruction set architecture)と呼んでいる。
実行時にOut-of-Order解析とかないわ〜、そんなんコンパイラの仕事だわ〜ということでややこしい機能を取っ払い、代わりに並列実行の口だけ用意したアーキテクチャ。一度に色々するので「命令がすっごい長いよ!」という名前がついた。得意不得意がはっきりしていて、行列の計算などは大得意だが、プログラムの並列性が低いと性能がまるで出ない。比較的単純な設計で並列性を向上させられるので、Intelはi960やItaniumのようなプロセッサでこの命令セットを採用したが、最適化に手間がかかる割に性能が出ないという理由でどれもパッとせず。CPUの並行処理の手法としては複数の命令を並行して複数のプロセッサ内ユニットで実行するスーパースケーラ実装の方が成功した。
独自命令アーキテクチャをハナから諦め、x86命令をVLIW命令に変換して実行するCPUも現れた。2000年代前半にTransmetaが世に送り出したCrusoeやEfficeonといった省電力プロセッサがこれである。AMDのGPUであるRadeon HD 2000~HD 6000系もVLIWだったりした。
掲示板
提供: nakamasa
提供: 深山w差分
提供: 酉々
提供: ひろ
提供: ななのといこ
急上昇ワード改
最終更新:2025/03/22(土) 14:00
最終更新:2025/03/22(土) 14:00
ウォッチリストに追加しました!
すでにウォッチリストに
入っています。
追加に失敗しました。
ほめた!
ほめるを取消しました。
ほめるに失敗しました。
ほめるの取消しに失敗しました。