• 検索結果がありません。

IA-32 インテル ®

2.5.1. フロント・エンド・パイプライン

フロント・エンドは、命令をプログラムの順序でアウト・オブ・オーダー・コアに供給する部分で ある。アウト・オブ・オーダー実行コアは、非常に大きな実行帯域幅を持ち、1/2クロック・サイク ルのレイテンシで基本整数演算を実行できる。フロント・エンドは、IA-32命令のフェッチとデコー ドを実行し、マイクロオペレーション(µops)と呼ばれる単純な操作に変換する。フロント・エンド は、アウト・オブ・オーダー・コアに対して、1サイクルごとに複数のµopsを元のプログラムの順序 で発行できる。

フロント・エンドは、以下の基本機能を行う。

実行されそうな命令をプリフェッチする

まだプリフェッチされていない命令をフェッチする

IA-32命令をデコードし、マイクロオペレーションに変換する

複雑な命令と特殊目的コード用のマイクロコードを生成する

デコードされた命令を実行トレース・キャッシュから取り出す

積極的に分岐予測を実行する

インテルNetBurstマイクロアーキテクチャのフロント・エンドは、パイプライン型高速マイクロプ

ロセッサの一般的な問題に対処するように設計されている。特に、次の2つの問題は、遅延の主な原 因となる。

図2-2. インテル® NetBurst™マイクロアーキテクチャ

Bus Unit S y s t e m B u s

Frequently used paths Less frequently used paths

F e t c h / D e c o d e T r a c e C a c h e

M i c r o c o d e R O M

E x e c u t i o n

Out-Of-Order Core Retirement

1st Level Cache

4-way, low latency

2 n d L e v e l C a c h e

On-die, 8-Way

BTBs/Branch Prediction F r o n t E n d

Branch History Update

バス・ユニット

L2キャッシュ オンダイ、8ウェイ

BTB/分岐予測 フェッチ/

デコード

実行 トレース・

キャッシュ マイクロコードROM

実行 アウト・オブ・

オーダー・コア

リタイアメント L1キャッシュ

4ウェイ、低レイテンシ

使用頻度の高いパス 使用頻度の低いパス システム・バス

フロント・エンド

分岐履歴の更新

ターゲットからフェッチされた命令のデコードに時間がかかる。

分岐または分岐ターゲットがキャッシュ・ラインの中間にあるために、デコード帯域幅が浪費 される。

実行トレース・キャッシュがデコード済みの命令を格納することで、これらの問題に対処できる。命 令は、トランスレーション・エンジンによってフェッチされてデコードされ、トレースと呼ばれる 一連のµopsに変換される。µopsで構成されるこれらのトレースは、トレース・キャッシュに格納さ れる。分岐のターゲットになりそうな命令は、命令アドレスが連続しているかどうかに関係なく、そ の分岐のすぐ後に置かれる。トレースが作成されると、そのトレースに後続する命令が、トレース・

キャッシュ内で検索される。見つかった命令が既存のトレース内の最初の命令である場合は、メモ リ階層からの命令のフェッチとデコードは中止され、そのトレース・キャッシュが命令の新しいソー スになる。図2-2.に、インテルNetBurstマイクロアーキテクチャのクリティカルな実行ループを示 す。この構造は、図2-1.に示したP6マイクロアーキテクチャの実行ループより簡単である。

実行トレース・キャッシュとトランスレーション・エンジンは、協調する分岐予測ハードウェアを 持つ。分岐ターゲットは、分岐ターゲット・バッファ(BTB)を使用して、リニア・アドレスに基づ いて予測され、できるだけ速やかにフェッチされる。分岐ターゲットは、トレース・キャッシュに 格納されている場合はトレース・キャッシュからフェッチされ、それ以外の場合はメモリ階層から フェッチされる。トレースは、トランスレーション・エンジンの分岐予測情報に基づいて、最も可 能性の高いパスに沿って作成される。

2.5.2. アウト・オブ・オーダー・コア

実行コアが命令をアウト・オブ・オーダーで実行できる機能は、並列処理を可能にする主要な要素 である。この機能により、あるµopsの処理が、データまたは(他の命令が使用している)実行リソー スを待機している間遅れる場合、プロセッサは命令の順序を変更して、プログラムの順序でより後 にある他のµopsを先に処理することができる。プロセッサは、複数のバッファを使用して、µopsの 流れを円滑にする。この方法で、パイプラインのある部分に遅延が発生した場合、並行して行われ る他の操作によって、またはその前にバッファに入れられたµopsの実行によって、その遅延を隠す ことができる。

実行コアは、並列実行向けに設計されている。このコアは、1サイクル当たり最大6つのµopsをディ スパッチすることができる。この値は、トレース・キャッシュとリタイアメント・セクションのµops 帯域幅を超えていることに注意されたい。ほとんどのパイプラインは、1サイクルごとに新しいµops の実行を開始できるため、各パイプラインで複数の命令を一度に段階的に処理できる。多くの算術 論理ユニット(ALU)命令は、1サイクル当たり2つのµopを開始できる。多くの浮動小数点命令は、2 サイクルごとに1つのµopを開始できる。最後に、µopsのデータ入力の準備が完了し、リソースが使 用可能になった時点で、ただちにµopsの実行をアウト・オブ・オーダーで開始できる。

2.5.3. リタイヤ

リタイアメント部は、実行されたµopの結果を実行コアから受け取り、元のプログラムの順序に従っ てアーキテクチャ上の状態が正しく更新されるように、それらの結果を処理する。命令を正しいセ マンティクスで実行するには、IA-32命令の結果を元のプログラムの順序で処理してからリタイアさ せなければならない。例外は、命令のリタイア時に発生する。したがって、例外をスペキュレーティ ブに検出することはできず、例外デスティネーションには正しい順序で発生し、例外の発生後はマ シンを正常に再起動できる。

µopsが完了し、結果がデスティネーションに書き込まれた時点で、そのµopsはリタイアされる。1サ イクル当たり最大3つのµopsをリタイアさせることができる。リオーダー・バッファ(ROB)は、完 了したµopsをバッファに入れる、アーキテクチャ・ステートを順序どおりに更新する、例外の順序 を管理する等の機能を持つ、プロセッサ内のユニットである。

また、リタイアメント部は、分岐を監視し、更新された分岐ターゲット情報をBTBに送信して分岐 履歴を更新する。この方法で、更新された分岐履歴情報に基づいて、不要になったトレースをトレー ス・キャッシュからパージし、新しい分岐パスをフェッチできる。

3

IA-32 基本実行環境

IA-32 基本実行環境

本章では、アセンブリ言語プログラマの視点から、IA-32プロセッサの基本実行環境について説明す る。さらに、プロセッサが命令を実行する方法や、データを格納し操作する方法についても説明す る。本章で説明する実行環境に含まれるのは、メモリ(アドレス空間)、汎用データ・レジスタ、セ グメント・レジスタ、EFLAGSレジスタ、および命令ポインタ・レジスタである。

3 .1 . 動作モード

IA-32アーキテクチャは、保護モード、実アドレス・モード、システム管理モードの3種類の動作モー

ドをサポートする。動作モードによって、どの命令やアーキテクチャ上の機能が使用できるかが決 まる。

保護モード。このモードは、プロセッサ本来の動作ステートである。このモードでは、すべて の命令とアーキテクチャ上の機能が使用可能であり、最高の処理能力と機能が得られる。すべ ての新規アプリケーションやオペレーティング・システムに対しては、このモードを推奨する。

保護モードの数々の機能の1つとして、「実アドレス・モード」の8086ソフトウェアを保護され たマルチタスク環境で直接実行できる。この機能は、実際にはプロセッサのモードではないが、

仮想8086モードと呼ばれる。仮想8086モードは、実際には任意のタスクに対してイネーブルに

できる保護モードの属性である。

実アドレス・モード。このモードは、Intel 8086プロセッサのプログラミング環境にいくつかの 拡張機能(保護モードとシステム管理モードとの間の切り替えなど)を提供する。プロセッサ は、電源投入やリセットの直後には実アドレス・モードになる。

システム管理モード(SMM)。このモードは、オペレーティング・システムやエグゼクティブ に、電源管理やシステム・セキュリティなどのプラットフォーム固有の機能をインプリメント するための透過的な機構を提供する。プロセッサは、外部SMM割り込みピン(SMI#)がアク ティブになるか、アドバンスド・プログラマブル割り込みコントローラ(APIC)からSMIを受 け取った時点でSMMに移行する。SMMになると、プロセッサは現在実行されているプログラ ムあるいはタスクのコンテキスト全体をセーブしてから、個々のアドレス空間に切り替える。こ れ以降、SMM固有コードを透過的に実行することができる。SMMから戻ると、プロセッサは システム管理割り込みが発生する前のプロセッサ・ステートに戻される。SMMは、Intel386SL プロセッサおよびIntel486 SLプロセッサで導入され、Pentiumプロセッサ・ファミリでIA-32の 標準機能になった。

基本実行環境は、本章の以降の各節で説明しているように、これらの動作モードそれぞれにおいて 同じである。