コンピュータ命令セットアーキテクチャ
汎用Power ISAプロセッサの非常に高レベルの回路図
Power ISAは 、現在 IBM が主導する OpenPOWER Foundationによって開発されているRISC( 縮小命令セットコンピュータ ) 命令セットアーキテクチャ (ISA)です 。元々はIBMと、現在は解散した業界団体 Power.orgによって開発されました。Power ISAは PowerPC ISAの進化形であり 、コアとなるPowerPC ISAと組み込みアプリケーション向けのオプション規格Book Eを統合して作成されました。2006年のこれら2つのコンポーネントの統合は、Power.orgの創設者であるIBMと Freescale Semiconductor によって主導されました。
バージョン3.0より前のISAでは、ISAは複数のカテゴリに分割されています。 プロセッサは、 タスク の必要に応じてこれらのカテゴリのセットを実装します 。プロセッサのクラスによって、特定のカテゴリを実装する必要があります。例えば、サーバークラスのプロセッサには、 Base 、 Server 、 Floating-Point 、 64-Bit などのカテゴリが含まれます。すべてのプロセッサはBaseカテゴリを実装します。
Power ISAはRISC ロード/ストアアーキテクチャです。複数の レジスタ セットを備えています 。
整数演算用の 32 × 32 ビットまたは 64 ビットの汎用レジスタ (GPR) 。
ベクトル演算 および 浮動小数点演算用の 64 × 128 ビット ベクトル スカラー レジスタ (VSR) 。
浮動小数点演算用の VSR の一部としての32 × 64 ビット浮動小数点レジスタ (FPR)。
ベクトル演算用の VSR の一部としての32 × 128 ビット ベクトル レジスタ (VR)。
比較と制御フローのための 8 × 4 ビット条件レジスタ フィールド (CR) 。
さまざまなサイズの11 個 の特殊レジスタ: カウンター レジスタ (CTR)、リンク レジスタ (LR)、タイム ベース (TBU、TBL)、代替タイム ベース (ATBU、ATBL)、アキュムレータ (ACC)、 ステータス レジスタ (XER、FPSCR、VSCR、SPEFSCR)。
バージョン3.0までの命令の長さは32ビットです。ただし、 ローエンドの組み込みアプリケーション向けに高い コード密度を提供するVLE(可変長エンコード)サブセットと、64ビット命令を作成するためのプレフィックスを導入したバージョン3.1は 例外 です。ほとんどの命令は3項演算、つまり2つのソースオペランドと1つのデスティネーションを持ちます。単精度および 倍精度の IEEE 754 準拠の浮動小数点演算がサポートされており、これには追加の 融合積和演算 (FMA)と10進浮動小数点演算命令も含まれます。1つの命令で最大16要素の整数および浮動小数点データに対する
単一命令複数データ (SIMD)演算も用意されています。
Power ISAは、 ハーバード キャッシュ ( データキャッシュと命令キャッシュを分割したもの) と統合キャッシュをサポートしています。メモリ操作はロード/ストアのみで実行されますが、 アウトオブオーダー実行が可能です。また、 ビッグエンディアンとリトルエンディアンの 両方のアドレス指定をサポートし、 モードエンディアンとページ単位のエンディアンという2つのカテゴリに分かれています。さらに、 32ビット と 64ビットの 両方のアドレス指定をサポートしています。
さまざまな操作モードには、ユーザー、スーパーバイザー、ハイパーバイザーなどがあります。
カテゴリー
ベース – 第1巻と第2巻の大部分
サーバー – ブック III-S
埋め込み – ブック III-E
その他 – 浮動小数点、ベクトル、信号処理、キャッシュロック、10 進浮動小数点など。
本
Power ISA 仕様は、「ブック」と呼ばれる 5 つの部分に分かれています。
ブックI 「 ユーザー命令セットアーキテクチャ」 では、アプリケーションプログラマが利用できる基本命令セットについて解説します。メモリ参照、フロー制御、整数演算、浮動小数点演算、数値演算アクセラレーション、アプリケーションレベルプログラミングなどについて解説します。 デジタル信号プロセッサ (DSP)などの補助処理装置や AltiVec 拡張に関する章も含まれています。
ブック II – 仮想環境アーキテクチャで は、タイミング、同期、キャッシュ管理、ストレージ機能、バイト順序など、アプリケーション プログラマが使用できるストレージ モデルを定義します。
第3巻 「 オペレーティング環境アーキテクチャ」 には、例外、割り込み、メモリ管理、デバッグ機能、および特殊制御機能が含まれます。2つのパートに分かれています。
Book III-S – 汎用/サーバー実装で使用されるスーパーバイザ命令を定義します。主に、以前のPowerPC ISAのBook IIIの内容に基づいています。
Book III-E – 組み込みアプリケーションで使用されるスーパーバイザ命令を定義します。これは、以前のPowerPC Book Eから派生したものです。
ブックVLE ( 可変長エンコード命令アーキテクチャ)は 、ブックI~IIIの代替命令と定義を定義し、高命令密度および超ローエンドアプリケーション向けに設計されています。16ビット命令とビッグエンディアン・バイトオーダリングを使用します。
コンプライアンス
Power ISA バージョン3の新機能は、実装において仕様全体を実装しなくても準拠できる点です。命令と技術の拡散により、仕様全体を実装するのは扱いにくくなったため、OpenPOWER Foundationは段階的な準拠を可能にすることを決定しました。
これらのレベルには、オプション要件と必須要件が含まれます。よくある誤解として、実装が下位レベルで準拠している限り、上位レベルから選択された追加機能やカスタム拡張機能を使用することは妨げにならない、というものがあります。しかしながら、設計で宣言されたサブセットレベルを超えて追加された機能を無効にするオプションを提供することが推奨されます。
特許 や 商標 など、 知的財産権 の使用に関する財団の保護を受けるには、設計は宣言されたサブセットレベルで準拠している必要があります 。これはOpenPOWER EULAに説明されています。 [1]
適合設計は以下を満たす必要がある: [2]
ベース アーキテクチャ をサポートする
少なくとも1つのサブセットをサポートする
SFS – スカラー固定小数点サブセット。129個の命令。基本的な固定小数点命令とロード/ストア命令で構成され、 ベース アーキテクチャの本質を成しています。
SFFS – スカラー固定小数点 + 浮動小数点サブセット。214命令。ベースに浮動小数点演算を追加します。
LCS – Linux準拠サブセット。962命令。サーバーグレードのLinux向けに設計されており、64ビット、オプションのSIMD/VSX、Radix MMU、リトルエンディアンモード、ハイパーバイザーサポートなどの機能が追加されています。
ACS – AIX 準拠サブセット。1099命令。AIXの実行を目的としており、10進および4倍精度浮動小数点演算、ビッグエンディアンモード、対称型マルチプロセッシングなどの機能が追加されています。
LCS および ACS のいずれかの機能をオプションとして含めることも、行列計算や電源管理などの常にオプションの機能を選択することもできます。
オプション機能を選択した場合は、その全体を実装する必要があります (オプション機能の部分的な実装は許可されません)。
アーキテクチャサンドボックス で実装された、実装固有のカスタム拡張機能が含まれる場合があります 。拡張機能が十分に汎用的である場合、OpenPOWER Foundationは実装者に、OpenPOWER ISAワークグループにRFC(Request for Comments)として提出するよう求めています。RFCを提出するために必ずしもOpenPOWER Foundationに参加する必要はありません。 [3]
多くの機能はハードウェアまたはファームウェアのいずれかで実装できます。
EABIとLinuxコンプライアンスの矛盾
EABI 仕様は、Compliancy サブセットの発表および作成よりも前のものです。
Linux CompliancyサブセットにおけるVSX(SIMD)のオプションについて:2003~2004年、64ビットEABI v1.9ではSIMDがオプションとなりましたが [4] 、2015年7月、IBM POWER9システムのパフォーマンス向上のため、EABI v2.0ではSIMDが必須となりました [5] 。Linux CompliancyレベルではSIMDがオプションであるのに対し、EABI v2.0では必須となっているというこの矛盾は、相当の労力を費やさなければ修正できません。Linux ディストリビューション の後方互換性を失わせることは現実的ではありません。現状では、標準Linuxディストリビューションを実行したい新規OpenPOWER実装者は、962という膨大な命令を実装しなければなりません。対照的に、Linuxを実行するための最低限必要なRISC-V RV64GCでは、わずか165命令しか必要としません [6] 。
仕様
パワーISA v.2.03
Power ISA v.2.03 [7] の仕様は、 POWER5 +の 旧PowerPC ISA v.2.02 [8]と PowerPC 仕様の拡張版である Book E [9]に基づいています。Book Eには、 DSP などの補助処理装置と AltiVec 拡張に関する5つの新しい章が追加されました 。
準拠コア
パワーISA v.2.04
Power ISA v.2.04 [10] の仕様は 2007年6月に完成しました。これはPower ISA v.2.03に基づいており、主に 仮想化 、 ハイパーバイザ 機能、 論理パーティショニング 、 仮想ページ 処理に関する Book III-S 部分の変更が含まれています。
準拠コア
以前のバージョンのPower ISAに準拠するすべてのコア
PA Semiの PA6T コア
AMCCの タイタン
パワーISA v.2.05
Power ISA v.2.05 [11] の仕様は 2007年12月にリリースされました。これはPower ISA v.2.04に基づいており、主に Book I と Book III-Sに対する変更が含まれており、10進演算( Book I のカテゴリ:10進浮動小数点 )やサーバーハイパーバイザーの改良などの重要な機能強化が含まれています。
準拠コア
パワーISA v.2.06
Power ISA v.2.06の仕様 [12] は2009年2月にリリースされ、2010年7月に改訂されました。 [13] これはPower ISA v.2.05をベースとしており、POWER7プロセッサと e500-mcコア向け の拡張機能が含まれています。重要な新機能の一つは、ベクトルスカラー浮動小数点命令( VSX )です。 [14] Book III-E には、シングルコアおよびマルチコア実装におけるハイパーバイザと仮想化に関する組み込み仕様の大幅な強化も含まれています。
この仕様は2010年11月にPower ISA v.2.06リビジョンB仕様に改訂され、仮想化機能が強化されました。 [13] [15]
準拠コア
パワーISA v.2.07
Power ISA v.2.07 [16] の仕様は 、2013年5月にリリースされました。これは、Power ISA v.2.06 に基づいており、 論理パーティション機能 、 トランザクションメモリ 、拡張されたパフォーマンス監視、新しいストレージ制御機能、VMX および VSX ベクトル機能 (VSX-2) への追加、 AES [16] : 257 [17] および ガロアカウンターモード (GCM)、SHA-224、SHA-256、 [16] : 258 SHA-384、および SHA-512 [16] : 258 ( SHA-2 ) 暗号化拡張機能、 巡回冗長検査 (CRC) アルゴリズムが 含まれています。 [18]
この仕様は2015年4月にPower ISA v.2.07 B仕様に改訂されました。 [19] [20]
準拠コア
以前のバージョンのPower ISAに準拠するすべてのコア
パワー8
A2O
パワーISA v.3.0
Power ISA v.3.0 [21] [22] の仕様は 2015年11月にリリースされました。これはOpenPOWER Foundation設立後初めて公開された仕様であり、幅広いワークロードに対応する機能強化が盛り込まれ、サーバーと組み込みのカテゴリを削除しながらも下位互換性を維持し、VSX-3命令のサポートを追加しました。新機能には、128ビット4倍精度浮動小数点演算、 乱数ジェネレータ 、ハードウェア支援による ガベージコレクション 、ハードウェアによるトラステッドコンピューティングなどがあります。
この仕様は2017年3月にPower ISA v.3.0 B仕様に改訂され [19] [23]
、2020年5月にv3.0C仕様に再度改訂されました [19] [24] [25] 。v3.0からv3.0Bへの大きな変更点の一つは、ハードウェア支援によるガベージコレクションのサポートが削除されたことです。v3.0Bとv3.0Cの主な違いは、v3.1に記載されている準拠レベルがv3.0Cにも追加されたことです。
準拠コア
パワーISA v.3.1
Power ISA v.3.1仕様 [19] [27] は2020年5月にリリースされました。主にPower10で導入された新機能のサポートを提供しますが、PowerISA仕様にオプション性の概念も含まれています。命令は、通常の4バイトの「ワード命令」と比較して、8 バイト 長の「プレフィックス付き命令」になりました。SIMD命令とVSX命令にも多くの新機能が追加されました。VSXとSVP64拡張は、16ビット半精度浮動小数点のハードウェアサポートを提供します。 [28] [29]
新しい 64 ビット プレフィックス付き命令の主な利点の 1 つは、分岐の即値が 34 ビットに拡張されることです。
この仕様は2021年9月にPower ISA v.3.1B仕様に改訂されました。 [19] [30]
この仕様は2024年5月にPower ISA v.3.1C仕様に改訂されました。 [19] [31]
準拠コア
以前のバージョンのPower ISAに準拠するすべてのコア
パワー10 [32]
パワー11
参照
参考文献
^ Power ISA EULA の最終草案
^ Open Power ISA: アーキテクチャのコンプライアンスと将来の基盤
^ OPF Power ISA EULA のセクション 2.2
^ Taylor, Ian Lance. 「64 ビット PowerPC ELF アプリケーション バイナリ インターフェース サプリメント 1.9」。
^ 「Power Architecture 64-Bit ELF V2 ABI仕様、OpenPOWER ABI for Linux Supplement」 (PDF) 2015年7月16日。2019年10月24日時点のオリジナル (PDF) からのアーカイブ。
^ Asanović, Krste (2017年10月14日). 「RISC-Vによるコンピュータアーキテクチャ研究」 (PDF) . p. 18.
^ 「Power ISA v.2.03」 (PDF) Power.org、2006年9月29日。2011年7月27日時点のオリジナル (PDF) からアーカイブ。
^ 「PowerPC Architecture Book, Version 2.02」。IBM。2005年2月24日。2007年10月18日時点のオリジナルよりアーカイブ 。 2007年3月16日 閲覧。
^ 「PowerPC Book E v.1.0」 (PDF) IBM 2002年5月7日。 2018年3月10日時点のオリジナルよりアーカイブ (PDF) 。 2007年3月16日 閲覧 。
^ 「Power ISA バージョン 2.04」 (PDF) . Power.org. 2007年6月12日. オリジナル (PDF) から2007年9月27日アーカイブ。 2007年6月14日 閲覧 。
^ 「Power ISA バージョン 2.05」Power.org. 2007年10月23日. 2012年11月24日時点のオリジナルよりアーカイブ 。 2007年12月18日 閲覧。
^ 「Power.org、Power Architecture開発者会議で仕様の進歩と新サービスを発表」(プレスリリース)Power.org、2007年9月24日。2007年10月12日時点のオリジナルよりアーカイブ。 2007年9月24日 閲覧 。
^ ab "Power ISA バージョン 2.06 リビジョン B". Power.org. 2010年7月23日. 2012年11月24日時点のオリジナルよりアーカイブ。 2011年2月12日 閲覧 。
^ 「IBM POWERベクトル・スカラー・アーキテクチャによるワークロード加速」IBM. 2016年3月1日. 2017年5月2日 閲覧 。
^ 「Power ISA 2.06 Rev. B は組み込み分野における完全なハードウェア仮想化を実現」EETimes. 2010年11月3日. 2011年6月8日 閲覧 。
^ abcd "Power ISA バージョン 2.07" (PDF) . Power.org. 2013年5月15日. 2023年11月2日 閲覧 。
^ Barbosa, Leonidas (2014年9月21日). 「POWER8インコア暗号化」. IBM.
^ IBM Power Systemsプロセッサー(IBM POWER8を含む ) のパフォーマンス最適化およびチューニング手法。IBM。2015年8月。p. 48。ISBN 9780738440927 。
^ abcdef 「命令セットアーキテクチャ」。OpenPOWER Foundation 。
^ 「Power ISA バージョン 2.07 B」。Power.org。2015年4月9日。 2023年2月23日 閲覧 。
^ Power 3.0でオープンな新時代を宣言
^ “Power ISA バージョン 3.0”. openpowerfoundation.org. 2016年11月30日. 2017年8月3日時点のオリジナルよりアーカイブ。 2017年1月6日 閲覧 。
^ 「Power ISA バージョン 3.0 B」。IBM。2017年3月29日。 2023年2月23日 閲覧 。
^ 「Power ISA バージョン 3.0 C」。OpenPOWER Foundation。2020年5月1日。 2023年2月23日 閲覧 。
^ Power ISA仕様一覧
^ [PATCH、コミット済み] Power ISA 3.0 / POWER9 binutils の完全サポートを追加
^ 「Power ISA バージョン 3.1」。OpenPOWER Foundation。2020年5月1日。 2023年2月23日 閲覧 。
^ "OPF_PowerISA_v3.1B.pdf". OpenPOWER Files . OpenPOWER Foundation . 2023年7月2日 閲覧。
^ "ls005.xlen.mdwn". libre-soc.org Git . 2023年7月2日 閲覧 。
^ 「Power ISA バージョン 3.1B」。OpenPOWER Foundation。2021年9月14日。 2023年2月23日 閲覧 。
^ 「Power ISA バージョン 3.1C」。OpenPOWER Foundation。2024年5月26日。 2024年7月4日 閲覧 。
^ Seo, Carlos Eduardo (2020年5月12日). 「POWER10向け命令セットアーキテクチャーをリリースしました。Power ISA v3.1はIBM Portal for OpenPOWERから入手可能です」. twitter.com . 2020年5月23日 閲覧 。