プログラムを作ったことがあっても、実際にコンピュータがどうやってプログラムを実行しているかは知らない方も多いでしょう。
コンピュータは、メモリ上に保存された機械語の命令列(「0」と「1」の並び)しか理解できません。そこで、プログラミング言語で書かれたプログラムは、コンパイラというプログラムで機械語に変換します。コンパイラによっては、いったんアセンブリ言語(機械語をもうすこし読みやすい記号で記述できるようにしたもの)のプログラムに変換し、次にアセンブラというプログラムで機械語に変換するものもあります。
プログラムが書き手によって変わるように、コンパイラの変換結果もコンパイラによって差異があり、コンパイラの最適化しだいで、変換後のプログラムの実行効率は大きく変わります。プログラムが巨大化している今日では、特別な分野を除いてアセンブリ言語でプログラミングすることは少なくなり、いかに高性能なコンパイラを作るかが重要になっています。
CPUは、メモリ上に保存された機械語の命令列を順次読みだして実行することにより、プログラムを動作させます。メモリからCPUへの転送速度や数値計算の速度などは、半導体の製造技術だけでなく、メモリの大きさや配置、機械語の命令形式や種類、複数の命令を同時に実行する仕組み、性能の引き出しやすさといった設計が大きく影響します。
スーパーコンピュータから携帯電話まで、コンピュータも用途が違えばかけられるコストも半導体技術も異なり、それに応じた設計が求められます。このようなことを扱うのがコンピュータ・アーキテクチャの分野で、基本設計のことを一般にアーキテクチャと呼んでいます。