Tech Inside

2000年問題への対応

Y2K問題は基本的には西暦の日付処理をどう行うかという問題です。データを減らし記憶装置の容量を温存するために従来ソフトウェアで下2桁を西暦表記として扱ってきました。例えば、98ならは1998年、99なら1999年といった具合です。しかし00は1900年と2000年の混乱を招くことになります。

マザーボード搭載のチップセットには、そのCMOSメモリ上に128バイトのRTC(Real Time Clock)回路が組込まれています。RTC回路は末尾2桁のみのデータを格納しており、CMOSメモリには更に2桁のデータを持っています。つまり残念なことに、このRTC回路は西暦を1997→1998→1999→1900というように認識してしまい、2000年問題が発生しかねません。下のダイアグラムはOS、BIOS、そしてRTC回路がどのように動作しているのかを示した図です。互換性を確保するために、PC業界では各アプリケーションソフトは必ずOSを呼び出すように定められており、またOSからBIOSを呼び出すようになっています。またBIOSのみがハードウェア(RTC回路など)へ直接アクセスすることが可能であると定められているのです。

BIOS上には、日付/時間に関する情報を記録するために、50ミリ秒ごとに動き出し時を刻む動作が組込まれています。通常のAward BIOSでは、この時を刻む動作はCMOSメモリを毎回アップデートすることはありません。CMOSへアクセス速度が著しく遅く、毎回CMOSメモリへアクセスしていては、システムのパフォーマンスを低下させるからです。AOpenのBIOSの動作では、西暦表記を4桁のデータで取り扱うようになっており、各アプリケーションソフトやOSが下のダイアグラムのルールに従って日付/時間に関する情報を取得する限り、西暦2000年問題は起こることはありえません(NSTLのテストプログラムはこのルールに従っています)。ところが残念なことに、あるテストプログラム(Checkit98など)においては、直接RTCやCMOSにアクセスするものがあるということが分かりました。これらのソフトで2000年問題が発生するリスクを回避するために、AOpen BIOS開発チームはCMOS設定にオプションを追加し時間を刻む動作がCMOSデータをアップデートできるようにしました。プログラムコードに細心の注意を払い、システムのパフォーマンス低下を最小限に食い止める努力が施されています。

<目次へ戻る>

Copyright ©2003, AOpen Japan Inc., All rights reserved.