Pentium F00F バグとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > Pentium F00F バグの意味・解説 

Pentium F00F バグ

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/04/22 07:46 UTC 版)

f00f("foof"と発音)は、インテルPentium、Pentium MMX、Pentiumオーバードライブプロセッサにおいて、ある世代以前のモデルに存在し公開されている、設計上の不具合の通称である。問題[注釈 1]を起こす機械語バイト列「f0 0f c7 c8」の先頭2バイトの16進表現に由来する。

Intelはこの問題を「ロック付 CMPXCHG8B 命令の無効オペランドエラッタ」と呼んでいる[1]

内容

問題を起こす機械語コード(f0 0f c7 c8)に対応するアセンブリ言語表現は以下のようになる。本来はメモリオペランドを指定して使用する前提の命令であり[2]、下記のコードは実際のアセンブラで処理できないかもしれない。

lock cmpxchg8b eax

不具合を引き起こすにはオペランドはレジスタである必要がある[1][2]。ここでは例示としてeaxをオペランドにしているが、その他のレジスタでもよい。

cmpxchg8b命令は、オペランドとして指定されたアドレスのメモリ上の8byteの領域を取る。この命令を実行すると、edx:eaxの値とメモリ上の8byte値を比較し[2]、一致したらZフラグをセットするとともにecx:ebxの値をこの8byte領域にストアし、一致しなければZフラグをクリアするとともに8byteのデータをedx:eaxにロードする(コンペア・アンド・スワップ、詳細はリファレンスマニュアル等を参照)。ただし、この命令の機械語では、命令フォーマット上はオペランドにレジスタも指定することが許容される。そして、レジスタオペランドを指定したcmpxchg8b命令を、lockプレフィクス付で実行すると、この不具合が引き起こされる[1][2]

lockプレフィックス[注釈 2]なしでは、この命令は不正命令例外を引き起こすだけである[1][2]。即ち、レジスタペアedx:eaxに格納された8byte=64bitのデータと、指定されたレジスタ、上記の例ではeaxに格納された4byte=32bitのデータの比較は妥当ではないからである。

しかし、lockプリフィックスを付けた場合、以後のメモリアクセスが抑制されるために、プロセッサは不正命令例外ハンドラに移行することができず[1]、この段階でハングアップし以後は一切の命令を実行せず、割り込みも受け付けなくなってしまう。復旧するにはシステムを再起動しなければならない[1]

対策

この命令は特別な権限を要求せず、特にユーザープロセスの実行中にOSが全く関与できずに発生すると思われたため、当初は重大な問題と考えられた[3]。以後、OSでの対策が行われるとともに、プロセッサ側でも対策が行われた。

オペレーティングシステムでの対応

広く普及していたプロセッサにエラッタが発見されたことから、オペレーティングシステムベンダは発生条件を検知してクラッシュを防ぐ対策を実装する作業に追われた[4][5]

回避にはオペレーティングシステムでの対策を要する。例外発生時に、例外ハンドラへのアクセスが、まずページフォールトを発生するようにして、不具合を回避する[1][2]

プロセッサのバグフィクス

Pentium Pro以降のIntelプロセッサにはこのバグの影響はない[1]。また、最新のIntel Pentium Processor Speficificationもアップデートされ、B2ステッピングではこの問題は修正されている。

影響

f00f命令を問題のあるシステム上で実行しても、ハードウェア的なダメージを起こさない[1]。もちろんファイルシステムオペレーティングシステム、その他の状況にもよるが、ディスクバッファがフラッシュされていなかったり書込み操作中にドライブに割り込まれたり、とあるアトミックでない操作中に割り込まれたりした状態でこのコードを踏み、フリーズしたならば、データを失うことはあり得る。

f00fバグは一般的に知られたので、この言葉は時々よく似たハードウェア設計ミス、例えばCyrix coma バグ英語版のようなものを指すのにも使われる。

脚注 

注釈 

  1. ^ OS側で特別の対策をしていないとプロセッサが異常停止する。
  2. ^ 排他制御を指示するもので、同じメモリアドレスに対して2つのプロセッサが競合しないように使われる。

出典 

  1. ^ a b c d e f g h i ロック付CMPXCHG8B(コンペア アンド エクスチェンジ8バイト)命令の無効オペランドエラッタの概要”. Intel. 1998年1月15日時点のオリジナルよりアーカイブ。2020年4月4日閲覧。
  2. ^ a b c d e f エラッタに関する技術的解説”. Intel. 1998年1月15日時点のオリジナルよりアーカイブ。2020年4月4日閲覧。
  3. ^ “Net reacts to "F0" Pentium bug” (英語). CNet. オリジナルの2013年1月2日時点におけるアーカイブ。. https://archive.is/20130102083018/http://news.com.com/2100-1033-205157.html?legacy=cnet 
  4. ^ オペレーティングシステム ベンダからのステートメント”. Intel. 1998年1月15日時点のオリジナルよりアーカイブ。2020年4月4日閲覧。
  5. ^ “インテル、Pentiumのバグの概要を発表。対策はOSで”. PC Watch. https://pc.watch.impress.co.jp/docs/article/971117/intel.htm 2020年4月4日閲覧。 

関連項目

外部リンク


「Pentium F00F バグ」の例文・使い方・用例・文例

Weblio日本語例文用例辞書はプログラムで機械的に例文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Pentium F00F バグ」の関連用語

Pentium F00F バグのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Pentium F00F バグのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのPentium F00F バグ (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
Tanaka Corpusのコンテンツは、特に明示されている場合を除いて、次のライセンスに従います:
 Creative Commons Attribution (CC-BY) 2.0 France.
この対訳データはCreative Commons Attribution 3.0 Unportedでライセンスされています。
浜島書店 Catch a Wave
Copyright © 1995-2025 Hamajima Shoten, Publishers. All rights reserved.
株式会社ベネッセコーポレーション株式会社ベネッセコーポレーション
Copyright © Benesse Holdings, Inc. All rights reserved.
研究社研究社
Copyright (c) 1995-2025 Kenkyusha Co., Ltd. All rights reserved.
日本語WordNet日本語WordNet
日本語ワードネット1.1版 (C) 情報通信研究機構, 2009-2010 License All rights reserved.
WordNet 3.0 Copyright 2006 by Princeton University. All rights reserved. License
日外アソシエーツ株式会社日外アソシエーツ株式会社
Copyright (C) 1994- Nichigai Associates, Inc., All rights reserved.
「斎藤和英大辞典」斎藤秀三郎著、日外アソシエーツ辞書編集部編
EDRDGEDRDG
This page uses the JMdict dictionary files. These files are the property of the Electronic Dictionary Research and Development Group, and are used in conformance with the Group's licence.

©2025 GRAS Group, Inc.RSS