
アーキテクチャーとマイクロアーキテクチャーってどう違うの?
1. はじめに
前回の記事でご紹介しましたが、コンピューターアーキテクチャーのオンライン授業を受け始めました。
その中で、なかなか理解できず、苦しんだ部分があったため
皆さんにシェアしよう思い記事を書きました。
今回は、アーキテクチャーとマイクロアーキテクチャーの違いについて解説します。
2. アーキテクチャー (Architecture)
アーキテクチャーはコンピューターの “設計図“ のようなものです。
そこには、CPUの命令セット、データ型、メモリモデルなどが含まれます。
例えば、x86、ARMなどがこれに該当します。
これらのアーキテクチャーの例は、聞きなじみがあると思います。
個人的に面白いと思った部分として、
例外はありますが、アーキテクチャーが違えば基本的にプログラムは動作しない、という点です。
(Windows用にコンパイルされたソフトウェアは、基本的にLinuxやmacOSでは動作しませんよね。)
アーキテクチャーが異なると、CPUが理解できる命令セット (ISA) も異なります。
例えば、ARMアーキテクチャーとx86アーキテクチャーでは、使用できる命令セットが異なるため、
x86プロセッサーでコンパイルされたプログラムはARMプロセッサーでは直接実行できません。
また、異なるアーキテクチャー間では、バイナリ (実行可能ファイル) レベルでの互換性がありません。
したがって、一つのアーキテクチャーでコンパイルされたプログラムは、他のアーキテクチャーで基本的には動作しません。
3. マイクロアーキテクチャー (Micro architecture)
マイクロアーキテクチャーは、実際のコンピューターの “作り方” や “組み合わせ” のようなものです。
これは、アーキテクチャーを実現するために、何をどのように実装するかということを指しています。
例えば、パイプラインの構造、キャッシュの設計、命令のデコードや実行の仕組みなどです。
マイクロアーキテクチャーは、同じアーキテクチャーでも、メーカーやモデルによって異なることがあります。
例えば、IntelのCore i7とAMDのRyzenは、どちらもx86アーキテクチャーを採用していますが、マイクロアーキテクチャーは異なります。
コンピューターを最適化する際に、このマイクロアーキテクチャーを最適化します。
各要素はトレードオフの関係にあります。
例えば、パフォーマンスを向上させようとすると、消費電力が増加します。
また、コストを削減しようとすると、パフォーマンスが低下する可能性があります。
さらに、複雑な機能を追加しようとすると、チップの面積が大きくなり、コストが高くなります。
最後に、設計者は、用途に応じてマイクロアーキテクチャーを最適化し、
その結果、多くの種類の製品が販売されます。
例)
– アーキテクチャー: x86
– マイクロアーキテクチャーの例: IntelのSkylake、AMDのZen
– マイクロアーキテクチャーの例: Cortex-A76、Cortex-A57
4. 結論「アーキテクチャーとマイクロアーキテクチャーってどう違うの?」
簡単に言うと、アーキテクチャーはコンピューターの “決まり事” や “設計” で、
マイクロアーキテクチャーはその “実装方法” です。
(参照)Computer Architecture by David Wentzlaff from Princeton University