コンピュータ工学においてマイクロアーキテクチャ(μarchまたはuarchと略されることもある)とは、コンピュータ、中央処理装置、またはデジタル信号プロセッサの電気回路について、ハードウェアの動作を完全に記述するのに十分な記述のことである。

学者は「コンピュータ組織」という言葉を使うが、コンピュータ業界では「マイクロアーキテクチャ」と言うことが多い。マイクロアーキテクチャと命令セットアーキテクチャ(ISA)は、合わせてコンピュータアーキテクチャーの分野を構成している。

マイクロアーキテクチャとISAの違いと関係

命令セットアーキテクチャ(ISA)はソフトウェア(コンパイラやOS、アプリケーション)が見るインターフェースで、命令の意味・レジスタやメモリのモデル・例外や割り込みの振る舞いなどを規定する。一方、マイクロアーキテクチャはそのISAを実際にどのように回路で実現するかを定める設計図だ。つまり、同じISAを複数のマイクロアーキテクチャが実装できる(例:異なる世代のIntelプロセッサや、ARMの複数コア実装)。

重要な点は、ISAは「何をするか(what)」を定義し、マイクロアーキテクチャは「どうやって行うか(how)」を決める、ということだ。マイクロアーキテクチャはISAの機能を満たす限り、消費電力・性能・コスト・面積などのトレードオフに応じて異なる実装が可能である。

マイクロアーキテクチャの主要要素

  • パイプライン:命令実行を複数のステージに分割し、同時並列で処理する手法(フェッチ、デコード、実行、メモリアクセス、ライトバックなど)。
  • スーパースカラと並列実行:同一サイクルに複数命令を発行することでスループットを上げる設計。
  • アウト・オブ・オーダ実行(OoO):プログラム順序に依存しない命令を先に実行してリソース利用を最大化する機構。レジスタリネーミングやリオーダーバッファを伴う。
  • ブランチ予測:条件分岐の行き先を予測してパイプラインを空回りさせないようにする。性能に大きく寄与する。
  • キャッシュとメモリ階層:L1/L2/L3キャッシュ、TLBなどを含む階層的な高速メモリ設計。キャッシュ戦略(アソシアティビティ、置換アルゴリズム)が性能に影響する。
  • メモリ一貫性とコヒーレンシ:マルチコア環境でのデータの整合性を保つプロトコル(MESIなど)。
  • 入出力とインターコネクト:コア間やコアとメモリコントローラを結ぶバス/ネットワーク設計。
  • 制御ロジックとマイクロコード:命令を直接ハードウェアで解釈する方式(ハードワイヤード)や、複雑命令をマイクロコードで実装する方式がある。

設計上のトレードオフ

マイクロアーキテクチャ設計は複数の相反する目標のバランス取りである。主なもの:

  • 性能(スループット/レイテンシ):深いパイプラインや多数の並列発行で性能向上が可能だが、パイプラインハザードやブランチミスのコストが増す。
  • 消費電力と発熱:高性能化はしばしば高消費電力を招く。モバイル向けでは電力効率が最優先される。
  • 回路面積(コスト):大きなキャッシュや多数の実行ユニットはダイサイズを増やす。
  • 設計の複雑さと検証工数:アウト・オブ・オーダ実行や高精度な予測器は設計と検証を難しくする。

実装と検証

設計はRTL(ハードウェア記述言語)で記述され、シミュレーション・合成・タイミング解析・物理設計を経て製造される。検証はソフトウェア互換性(ISA準拠)、機能検証、パフォーマンス測定、消費電力評価など多層で行われる。近年は形式検証やプロパティチェック、自動テスト生成が重要になっている。

セキュリティとマイクロアーキテクチャ

スペクトルやメルトダウンといった脆弱性は、マイクロアーキテクチャの投機実行やキャッシュ動作を悪用するサイドチャネル攻撃の例であり、設計時にこれらを考慮することが不可欠になっている。対策はマイクロコードやハードウェア修正、OS側の緩和策などが組み合わされる。

代表的な例

同一ISAを使った異なるマイクロアーキテクチャの例:

  • x86系:IntelのPentium系(P6、NetBurst、Core、Skylakeなど)やAMDのAthlon/Zenなど。各世代でパイプライン深度、キャッシュ構成、予測器、マルチスレッディングの実装が異なる。
  • ARM系:ARMv8などのISAを、Cortex-Aシリーズや自社設計コアで異なるトレードオフで実装。
  • RISC-V:オープンISAをベースに各社・研究機関が多様なマイクロアーキテクチャを開発している。

まとめ

マイクロアーキテクチャは、ISAが規定する機能をハードウェアで実現するための詳細な設計であり、性能・電力・コスト・設計期間といった要因を調整することで最終製品の特性を決める。ソフトウェアからは同じISAに見える複数の実装が存在し得るため、マイクロアーキテクチャはCPUの「中身」を決定する重要な層である。