コンテンツへスキップ

MMX

アーキテクチャリファレンスFeex

MMXは初期のx86パック整数命令拡張であり、x87浮動小数点レジスタファイルとアーキテクチャ上のストレージを共有する64ビットレジスタを使用します。この共有状態は、コードを混在させる際に重要になります。

確認しておくべき要点

MMXは初期のx86パック整数命令拡張であり、x87浮動小数点レジスタファイルとアーキテクチャ上のストレージを共有する64ビットレジスタを使用します。この共有状態は、コードを混在させる際に重要になります。

仕組み

MMX操作は、64ビットレジスタをパックされた整数要素として扱います。MMXレジスタ名は、独立した最新のベクターステートを提供するのではなく、x87レジスタストレージをエイリアスします。後続のx87コードが浮動小数点スタックを正しく使用できるように、EMMSはMMXの使用後にx87のタグ状態を空としてマークします。

有用な場面

レガシーなマルチメディアソフトウェアは、飽和バイト演算にMMXを使用できます。新しいコードでは通常、MMX/x87の状態干渉を避けるため、代わりにXMMまたはより広いベクター機能を使用します。はるかに新しいプロセッサであっても、既存のバイナリには依然としてMMXが含まれている場合があります。

サポートと有効化の確認方法

CPUID.01H:EDXのビット23はMMXを列挙します。レガシーコードのデバッグでは、実際の命令シーケンスとそのEMMS/ステート処理の両方を検査してください。機能フラグだけでは、ルーチンが呼び出し規約に正しく従っているかを証明することはできません。

SIMD機能は命令を記述するものであり、追加のコアを意味するものではありません。命令形式によって、要素の幅、符号の有無、丸め、アライメント、および相互作用するレーンが決まります。ソフトウェアはABIのレジスタ状態を保持し、サポートされている実行環境を使用する必要があります。

この機能が確立しない事項

MMXは整数SIMDであり、64ビットの汎用実行やx86-64のサポートではありません。SSEやそれ以降の拡張機能を意味するものでもありません。MMXとx87を混在させる際のクリーンアップ不足は、CPUがその命令をサポートしているかどうかとは無関係に正確性の問題を引き起こす可能性があります。

実際の互換性とパフォーマンス

SSEファミリーの後続の名称には、それぞれ独立した機能ビットがあります。デプロイされたバイナリについては、ライブラリや起動コードを含め、最低限必要な機能セット全体を検査してください。選択ステップの前にサポートされていない命令が実行されない場合にのみ、フォールバックが役立ちます。

実践的な検証チェックリスト

  1. 関係する正確なプロセッサまたはプラットフォームのモデル、ならびにアプリケーション、OS、ランタイムのバージョンを記録してください。実際のエラーや要件の文言をそのまま保持してください。
  2. その正確なモデルの製造元リファレンスを確認し、プログラムが実行される環境で実効的な機能と有効化状態を検査してください。
  3. 選択したバイナリまたはバックエンドのすべての要件を比較してください。類似した名前の機能、エイリアス、または広範な技術表記だけでは不十分です。
  4. アプリケーションが意図した実装を選択したことを確認してください。要件が満たされていない場合は、文書化された診断機能とサポートされているフォールバックを使用してください。
  5. 一度に1つのサポート対象の変更のみを行い、同じワークロードを繰り返してください。元の構成と復旧手順を常に利用可能な状態にしておいてください。

機能が記載されているにもかかわらずソフトウェアで使用できない場合

正確にどのコンポーネントが失敗しているかから調査を開始してください。ハードウェアデータベースに記載されているのは記録された機能です。オペレーティングシステムまたはハイパーバイザーは、異なる実効環境を公開することがあります。破損や無関係な未サポート命令でも同様の症状が発生する可能性があるため、不正命令エラーの場合も実際にフォールトの原因となった命令とバイナリビルドの調査が必要です。

正確なプラットフォーム向けにサポートされているアプリケーション、ドライバ、またはランタイムのバージョンをインストールし、必要に応じてベンダーが文書化しているベースラインまたはフォールバックビルドを使用してください。ソフトウェアアップデートによってプロセッサに欠落している命令を作り出すことはできません。ファームウェアおよびセキュリティポリシーの変更は、一般的な最適化レシピではなく、システム製造元の手順と復旧計画に従う必要があります。

本説明のソースと対象範囲

Intel 64 and IA-32 Architectures Software Developer's Manual · x86-64 psABI: プロセッサアーキテクチャおよびマイクロアーキテクチャレベル

これらのリファレンスは、アーキテクチャの動作およびソフトウェア要件を規定しています。リンクされたハードウェアモデルページのすべての機能値を個別に検証するものではありません。モデルのサポート状況については、そのページの製造元エビデンスを使用し、実際の実効システム構成を確認してください。この記事はベンチマーク、認定、または独立したレビュー日を提供するものではありません。

出典と検証

エディトリアル所有権: Feex。独立したレビュー日は記録されていません。 調査方法.

この記事は役に立ちましたか?

「はい」または「いいえ」を選択するだけで完了します。必要に応じて理由を選択するか、簡単なメモを追加してください。

この記事は役に立ちましたか?