Vfmaddrnd231pdとは誰か?

2026/10/13 6:12

Vfmaddrnd231pdとは誰か?

RSS: https://news.ycombinator.com/rss

要約▶

日本語訳:

2026 年 10 月 12 日、記事では Intel の 2024 年版ソフトウェア開発マニュアル (SDM) に記載されているが、2026 年版には含まれていない浮動小数点命令

VFMADDRND231PD
を検証した。 SDM は、この命令を、即値バイトにより DAZ、FTZ および例外抑制のビットフィールドを指定することで、インストラクション単位の丸め制御を実行する、パックされた二重精度値への融合乗算加算 (fused multiply-add) として記述している。これは、x86 浮動小数点操作で一般的であるが低速なグローバルな丸emode変更に対する代替手段である。理論的には、AVX-512 を使用せずに加算、減法、乗算に対して制御可能な丸めを実現し、特定のアルゴリズムの加速を可能にすることができると考えられる。検証試みでは、GNU アセンブラが
VFMADDRND231PD
を認識しておらず、Intel C/C++ コンパイラのインリンシック
_mm_fmaddround_pd
および
_mm256_fmaddround_pd
が Clang および ICC コンパイラの両方から欠落していることが明らかとなった。 SDM のオPCODEリストを使用して命令をマニュアルでアセンブルすると (
VEX.DDS.128.66.0F3A.W1 B8 /r /ib
)、2024 年版の SDM 에만見られる「DDS」フィールドが出現しており、ドキュメントとハードウェアの変更が完全に一致していないことを示唆している。 Intel Haswell CPU でこの命令を実行すると
#UD
(未定義命令)がトリガーされる。著者は、これにもかかわらず、SDM のテーブルと擬似コードは単なるタイプミスのように見えないため、Intel が
vfmaddrnd*
セットを追加する意図があり、直前の段階で問題に遭遇しハードウェアから除外したが、マニュアルの更新を完全に行うことはできなかったという仮説を提示している。不一致の原因は依然として確認されておらず、著者は Intel 側との連絡先を持つ者からのフィードバックを求める。

本文

VFMADDRND231PD:SDM 上に存在するが実装されていない命令の謎

命令の概要と仕様

  • 命令名:
    VFMADDRND231PD
    • FMA(乗算・加算)命令セットに含まれる独自の命令。
    • 一般的な
      VFMADD231PD
      などの修飾子付き助記符とは異なり、**「RND」**という特定の役割を持つ。
  • 公式定義: インテル製ソフトウェア開発マニュアル(SDM)には以下のように記載されている。

    「丸め制御を付与したパックされた倍精度浮動小数点数に対する融合乗算・加算」

  • イミディエイトバイトの機能: 複数のビットフィールドを含み、以下の制御を行う。
    • 丸めモード
    • DAZ(Denormal-Ast-Zero:非正規化数処理)
    • FTZ(Flush-To-Zero:ゼロフラッシュ)
    • 例外抑制

期待される特徴と利点

  • 命令単位の丸め制御:
    • 多くの x86 浮動小数点命令はグローバルな設定に依存するため、モード切換えが遅い。
    • この命令は命令ごとに丸めモードを制御可能である点が最大の特徴。
  • 汎用性の高さ:
    • FMA が加算・減算・乗算をいずれも実装できるため、AVX-512 に依存せず任意の演算で丸め動作を制御できる。
    • 丸めに依存するアルゴリズムの高速化が期待される機構となっているはず。

現実に直面した問題点

  • 命令の実在性の疑念:
    • GNU アセンブラーでは認識されない。
    • SDM に記載されているインテル製 C/C++ コンパイラの内在関数
      _mm_fmaddround_pd
      および
      _mm256_fmaddround_pd
      も、Clang および ICC の両方で欠落。
  • アセンブリ時のエラー:
    • SDM に掲載された操作コードリストを手作業でアセンブルすると問題が発生する。

操作コード「DDS」の謎

  • 対応するオペコード:
    VEX.DDS.128.66.0F3A.W1 B8 /r /ib
    • 「VEX」は VEX プレフィックスを指す。
    • **「DDS」**の意味は不明瞭なまま。SDM において DDS が言及されるのはこの唯一の箇所である。
  • Stack Overflow での説:
    • 「DDS は単なる文書用表記であり、後の SDM バージョンで削除された」という回答が存在する。
    • しかし、なぜ今もここに存在するのかについては疑わしい点が多い。
  • 実行時の挙動:
    • FMA 命令セットを対応している CPU(Haswell など)上で実際に実行すると、**「#UD」(未定義命令)**が発生してしまい、動作しない。

調査結果:SDM の変更と矛盾

  • 初期の疑問:
    • SDM が
      VFMADDRND231PD
      のみをリストしているが、他の FMA 命令に見られるような
      PD/PS/SD/SS
      や
      132/213/231
      などの変種が含まれていない。
  • 新版 SDM での発見:
    • より新しいバージョンの SDM(2024 年版)を確認したところ、この命令は完全に記載されていないことが判明。
    • ※文脈上、これは「命令が削除された(または計画がキャンセルされた)」ことを示唆している可能性がある。

結論と仮説

  • 意図的なエラーではない:
    • 明らかな入力ミスやタイプエラーのように見えない。
    • SDM に他の命令とは異なる独自の表や疑似コードが含まれており、他命令との類似性がまったくないため。
  • 最も妥当な仮説:
    • インテル側では
      VFMADD*
      シリーズの追加を計画していたが、最終段階で問題に気づいた。
    • CPU からは取り除かれたものの、SDM の修正が完全に済んでいなかった可能性が高い。
  • 現状の確認手段: 命令を実際に動作させたり、公式な削除声明を確認する方法がない。

インテル関係者と知り合いの方がこの命令の真実をご存知の場合は、ご教示いただけますと幸いです。

同じ日のほかのニュース

一覧に戻る →

2026/10/13 6:40

AI は道具です。それを巧みに使うには技術が必要です。

## 日本語翻訳: 本稿の核心的な論点は、大規模言語モデルは自律的な「自動化」ではなく、人間の技量が必要なツールであるというものである。これは、AI が独立した意思あるいは悪意を持って行動するという考え方を否定するものであり、ソフトウェアが「反逆する(rogue)」ように振る舞うなど、業界特有の成り行きや陰謀論的なナラティブに煽られておりやすい。物理的な器具が悪用され得るように、LLM もエンジニアリング上の制限によって予期せぬ出力を生み出すに過ぎず、エージェント性の喪失によるものではない。人間による判断が依然として中核をなすのは、ユーザーが盲目的に制御権を委ねるのではなく、フィードバックループ内で結果を検証し、プロンプトを見直し、変更を検証するからです。本稿は AI を記述するために使用される擬人化された言語を批判しており、「陰謀」などの用語は技術的な問題が存在する場所に人間の動意を不当に暗示することを示唆しているとしています。 今後の議論では、AI を別個の存在として描く枠組みから転じ、解釈への問いかけや誤りへの認識においてユーザーの専門性を育むことに焦点を移すべきです。開発者および企業に対しては、恐怖を煽る比喩ではなく正確な工学用語を採用することで、より良いリスク管理と説明責任を実現できます。真の熟達とは、どのような質問が重要かを理解し、熟練した運用と盲目的な委任を見極めることであり、不完全なパフォーマンスがツールの有用性や作業者の責任を否定するものではありません。

2026/10/13 1:13

C で構築されたモダンな Web アプリ

## Japanese Translation: 本テキストは、2026 年に C と CGI を OpenBSD 上で構築された独自の商用 Web アプリケーション「marketyour.games」について説明しています。このプロジェクトは現代のフレームワークよりも極度な簡潔性とセキュリティを優先しており、「BCHS」スタック(OpenBSD、C、httpd、SQLite)を採用し、外部のフレームワークや独立したデータベースサーバーは一切使用しません。核心的な革新点は、アプリケーション全体が静的にリンクされた単一のバイナリとして動作し、ランタイム依存関係がゼロであるというアーキテクチャにあります。デプロイはファイルを 1 つだけフォルダに配置するだけであり、古いバージョンを置き換えるだけで済みます。再起動やダウンタイムも不要です。 セキュリティは OpenBSD のデフォルト設定を通じて強制されており、httpd に対して `chroot` を適用し、C プログラムに対して `pledge` および `unveil` などのツールを使用して制約を課します。アーキテクチャは、すべての HTTP リクエストごとに新しいプロセスをフォークし、コードから直接アセットを提供することでメモリ内に完全に収まり、すべてのトラフィックを httpd を介して CGI バイナリにルーティングするという方式に基づいています。このアプローチでは JavaScript テンプレート言語を使用しない(プログレッシブ改善に従う)とともに、安定した CGI 1.1 規格に準拠しますが、使いやすさを犠牲にして制御性を追求します。 主な利点としては、サプライチェーンリスクが著しく低減すること—依存するのは C コンパイラーと 3 つのライブラリ(`libcurl`、`libsodium`、組み込み済みの `libcjson`)のみ—、そして GDB のような標準ツールによるデバッグが容易であることです。アプリケーションは通常の実行ファイルだからです。しかしながら、この手法では開発者がデータを解析するためのロジック(クッキー、クエリ、フォーム)やカスタムヘッダーの管理を自ら実装する必要があり、複雑な依存関係グラフではなく、基本的な HTTP 概念と Vim のような古典的なツール(プラグインなし)を活用する姿勢を選択します。

2026/10/13 4:40

ZX Spectrum 向けのデモシーンイントロを作成する

## Japanese Translation: 著者は、標準的な 128KB の ZX Spectrum にて手書きのレトロなイントロを成功裏に作成し、高度に最適化されたアセンブリ言語プログラミングにより複雑なビジュアルとオーディオを実現した。2 ヵ月間(2025 年 12 月から開始)にわたり、約 19KB のコード(具体的には 10287 バイトのメインルーチン)を書き下し、内蔵 ROM を書き換えることでカスタムフォント「Cartoon」を用いたスムーズなスクロールテキストを作成し、また Amiga モジュール「Milkman」を変換して 3 チャネル AY サウンドトラックを生成した。限られたメモリ制限を管理するため、アセットは BASIC ロードに分割され、ルーチンはオーバーヘッドを避けるために特定のアドレスでハードコーディングされた。技術的な最適化としては、Z80 RL 命令を用いてスクロールテキストの回転を実現し、スキャンライン衝突を避けるために Ruby で生成した座標テーブルを事前計算してスターフィールド効果を再現し、さらにサウンドチップから直接振幅レジスタを読み取ってバウンス VU メーターを実装している。プロジェクトは 1980 年代後半の Amiga クrack イントロに触発され、本物の Spectrum +3上でローカル TNFS サポートのある Makefile 駆動のビルドシステムを用いて開発された。最終的な.tap ファイルは Web ブラウザまたは pouet.net を経由して入手でき、レトロなハードウェア上で高忠実度な体験を提供し、極限を効率的に達成したコーディングの実証として立っている。

Vfmaddrnd231pdとは誰か? | そっか~ニュース