以前のメモ「Intel Quark CoreはLOCKプリフィクス付きの命令が不安定」で、LOCK
プリフィクス付きの命令が予期しないsegfaultを発生させる問題について紹介しました。この問題について、Intelが対応を決めたので、その件について続報をお知らせします。
現地時間の6月24日にIntelが公開した「Intel® Quark™ SoC X1000 Specification Update / June 2014 / Document Number: 329677-004US」に、該当するLOCK
プリフィクスの問題についての対応の記載があります:
24. Possible Incorrect CPU Operation with LOCK Prefix Instructions Under Specific Circumstances
特定の状況下におけるLOCKプリフィクス命令によって不正確なCPUオペレーションが発生しますProblem:
問題:When a memory instruction with LOCK prefix executes and if it encounters a page fault(#PF) the state of the CPU could potentially get corrupted.
メモリーへの操作を必要とする命令に対して、LOCKプリフィクスを付けて実行を行う際にページ・フォルト(#PF)が発生すると、CPUの状態は潜在的に異常となることがあります。Implication:
影響:Invalid CPU operation may occur for specific instruction sequences when using the LOCK prefix instruction if the instruction generates a page fault.
命令がページ・フォルトを発生させる場合にLOCKプリフィクス命令を使用していると、不正なCPUオペレーションが特定の命令シーケンスにおいて発生することがあります。Workaround:
対策:Software should avoid using the LOCK prefix for instructions that may cause page fault(#PF).
ソフトウェアは、ページ・フォルト(#PF)を引き起こす可能性がある命令に対してLOCKプロフィクスの使用を避けるべきです。Status:
状況:No Fix
修正予定なし
Intel® Quark™ SoC X1000 Specification Update / June 2014 / Document Number: 329677-004US
15ページより引用
※日本語表記は筆者による日本語意訳です。
このように問題が発生することを明記したうえで、この挙動をIntel Quark SoC X1000シリーズの仕様とすることが明示されました。今後、Intel Quark SoC X1000シリーズ向けのソフトウェアを書く際にはこの問題が生じることを前提としてコードを記述し、テストすることが求められます。
このメモには書いていませんでしたが、既存のユーザー・ランドのコードとの互換性の問題があるので、ステッピング・チェンジで修正してくると予想していました。しかし、予想外の対応となりました。
以上、該当するドキュメントが掲載されてから1か月半ほど紹介が遅くなりましたが、続報をお知らせしました。