【レポート】

徹底解説 - POWERアーキテクチャ2.03

1 POWER ISA 2.03とは

    安藤壽茂  [2007/02/12]

    POWER ISA 2.03とは

    POWERアーキテクチャは、1990年代初頭に開発されたIBMのRS/6000 RISCに端を発し、その後、同社のエンジニアリングワークステーション、Unixサーバ用のプロセサアーキテクチャとして発展する。その一方で、IBM、MotorolaとAppleが協力してPowerPCチップが開発され、POWERベースであるが、若干異なるPowerPCアーキテクチャが作られた。このPowerPCチップは、最近までApple社のPCに使用されていたことは記憶に新しい。また、AppleはIntelプロセサに切り替わってしまったが、Xbox360やPS3といったゲームコンソールのCPUにはPowerPCアーキテクチャのプロセサが使われており、現代の主要なプロセサアーキテクチャという地位は変わっていない。

    また、1997年にはIBMとMotorolaが協力して、組み込み用プロセサ向きのPowerPC Book-E仕様を開発した。このPowerPCの組み込みプロセサは制御プロセサとして広く用いられているし、Xilinx社のFPGAの中にもコンポーネントとして組み込まれており、組み込みプロセサとしても主要なアーキテクチャの一つである。

    ということで、POWERアーキテクチャは現代を代表するプロセサアーキテクチャであるが、その中には、少しづつ異なる3つのアーキテクチャ仕様が存在するという状況になっている。サーバ、PC、組み込み用では用途が異なるので、異なる仕様が必要というのも正しいが、コンパイラなどのツールを作る上では、それぞれの仕様に対して少しづつ異なる製品を作る必要があり、面倒である。また、ユーザから見ても、プロセサの品種ごとに使用できる命令が異なるのでは、プログラムの流用も出来難いという問題がある。そこで、POWERアーキテクチャを推進する業界団体であるPOWER.ORGにおいて、統一仕様を作成しようという活動が行われ、最近、POWER Instruction Set Architecture Version 2.03として公開された。

    これまでの3種のアーキテクチャ仕様を統合したのであるから、メジャーバージョン番号を上げて3.0としても良さそうであるが、仕様を検討したのが謙虚な方々なのか、あるいは、統合しただけで主要な機能追加が無いと考えたのか、従来のPowerPC Version 2.02のマイナーバージョン番号を上げたVersion 2.03というネーミングになっている。

    統合したと言っても、全部の仕様をORで取り入れたのでは組み込み用には重過ぎる仕様になり、実用的ではない。従って、V2.03仕様では、仕様を論理的なカテゴリに分割している。全てのPOWERアーキテクチャのプロセサが実装すべき仕様はベーシックカテゴリ、サーバプロセサ用の機能はサーバカテゴリ、組み込みプロセサ用の機能はエンベデッドカテゴリにまとめられている。

    これらが主要なカテゴリであるが、それ以外に、次の表に示すように、特定用途向けのオプションカテゴリが多数定義されている。

    POWER ISA 2.03の主なカテゴリ。ベーシックカテゴリは必須。ブルーはサーバ用のカテゴリ、ピンクは組み込み用のカテゴリである。そして、グリーンは単独でも選択できるカテゴリである。

    図の中で、ブルーで示したカテゴリはサーバ用であり、サーバ性能モニタカテゴリはサーバカテゴリと共に選択しなければならない。また、ピンクで示したカテゴリは組み込み用であり、これらのカテゴリを選択するためには、エンベデッドカテゴリが選択されている必要がある。そして、グリーンで示したカテゴリは独立に選択可能なカテゴリである。

    このような体系であるので、ベーシックカテゴリだけを実装しても良いし、ベーシック、サーバとエンベデッドカテゴリの全部を実装してもPOWER ISA2.03準拠のプロセサと言える。次の表に、V2.03仕様のカテゴリの一覧を示す。

    V2.03仕様のカテゴリの表
    カテゴリ 略号 適用
    Base B 全ての実装において必須
    Server S サーバ用の実装に必須
    Embedded E 組み込み用の実装に必須
    Alternate Time Base ATB 追加タイムベース機能; Book II参照
    Cache Specification CS 特定用途のキャッシュの指定; Book II参照
    Embedded.Cache Debug E.CD キャッシュデータとディレクトリへの直接アクセス機能
    Embedded.Enhanced Debug E.ED 組み込み用の拡張デバグ機能; Book III-E参照
    Embedded.External PID E.PD 組み込み用の外部PID機構; Book III-E参照
    Embedded.Little-Endian E.LE 組み込み用のリトルエンディアンページ属性; Book III-E参照
    Embedded.MMU Type FSL E.MF 組み込み用のFSL型MMU; Book III-E参照
    Embedded.Performance Monitor E.PM 組み込み用のパフォーマンスモニタ機能; Book III-E参照
    Embedded.Processor Control E.PC 組み込み用のプロセサコントロール機能; Book III-E参照
    Embedded Cache Locking ECL 組み込み用の拡張キャッシュロック機能; Book III-E参照
    External Control EXC デバイスI/O; Book II参照
    External Proxy EXP 組み込み用の外部プロキシ機構; Book III-E参照
    Floating-Point
    Floating-Point.Record
    FP
    FP.R
    浮動小数点機構
    Rc=1の浮動小数点命令
    Legacy Move Assist LMV Determine Left most Zero Byte命令
    Legacy Integer Multiply-Accumulate1 LMA Legacy Integer Multiply-accumulate命令
    Load/Store Quadword LSQ Quadwordロード/ストア命令; Book III-S参照
    Memory Coherence MMC メモリコヒーレンスの必要性; Book II参照
    Move Assist MA Move Assist命令
    Server.Performance Monitor S.PM サーバ用パフォーマンスモニタ機能; Book III-S参照
    Signal Processing Engine1、2
    SPE.Embedded Float Scalar Double
    SPE.Embedded Float Scalar Single
    SPE.Embedded Float Vector
    SP
    SP.FD
    SP.FS
    SP.FV
    信号処理用の機構
    GPRを用いる倍精度浮動小数点命令セット
    GPRを用いる単精度浮動小数点命令セット
    GPRを用いるベクトル浮動小数点命令セット
    Stream STM ストリーム処理用の dcbt 命令; Book II参照
    Trace T RC トレース機構; Book III-S参照
    Variable Length Encoding VLE 可変長命令機構; Book VLE参照
    Vector1
    Vector.Little-Endian
    V
    V.LE
    ベクトル処理機構
    べクトルストアにおけるリトルエンディアンサポート
    Wait WT Wait命令; Book II参照
    64-Bit 64 64ビットの実装には必須
    1 SPEは命令コードに重複があるので、VectorとLegacy Integer Multiply-Accumulateカテゴリとは排反である。
    2 SPEに依存するFloating-PointカテゴリはSPE.Embedded Float_* oまたはSP.*.と表記する。

    このように、V2.03仕様ではカテゴリという概念を使って、必要な機能だけを実装することを可能としている。一方、カテゴリを選択すると、そのカテゴリに含まれる全機能を実装することが必要であり、カテゴリの中の機能のつまみ食いは許さないということで、バリエーションの増加を抑えている。このような仕組みであるので、サポートしているカテゴリを与えると、その範囲内で最適の動作をするコードを生成するコンパイラを作ることが可能になり、3種のアーキテクチャに対するコンパイラを商品化するのに比べて、開発ツール類のサポートや流通が容易になると考えられる。

    また、V2.03仕様は、ユーザ命令を定義するBook-1、仮想記憶アーキテクチャを定義するBook-2、サーバ用OSの命令を定義するBook-3S、組み込み用OS命令を定義するBook-3E、そして可変長命令エンコーディングを定義するBook VLEとAppendixから構成されており、全体では850ページというボリュームである。

    新着記事

    特設サイトの情報

      人気記事

      一覧

        イチオシ記事

        新着記事

        特別企画

        マイナビニュースマガジン