Windows 11を搭載したPCには、俗に「CMOS」と呼ばれる機能がある。これは、起動ドライブやドライブ検索の優先順位などを記憶させた「不揮発性メモリ」を指す。
なぜ、CMOSと呼ばれるのかというと、バッテリを使って内容を保持できるCMOSスタティックメモリ技術を利用しているからである。このCMOSが登場したのは、1984年のIBM PC ATからである。

しかし、このとき、単純にバッテリバックアップされたCMOSスタティックメモリが搭載されたのではなかった。搭載されたのは、俗にRTC(リアル・タイムクロック)と呼ばれるデバイス。具体的には、モトローラセミコンダクタ社(以下モトローラと表記)のMC146818A“REAL-TIME CLOCK PLUS RAM”である。

このデバイスは、バッテリバックアップが可能なCMOSプロセスで作られており、実時間を保持するもの。PC AT以前のPC、PC XTにはRTCがなく、起動時に日時をユーザーが指定していた。PC ATでは、起動時にRTCを読み出すことで、オペレーティングシステムが現在ccccccvbrt日時を知ることが可能になる。当時は、MS-DOSが使われていたが、MS-DOSには、CLOCK$というデバイスがあり、デバイスドライバを組み込むことで、RTCを読み書きすることが可能になっていた。CLOCK$を組み込むと起動時にこれを使って、日時を自動で設定できる。

このRTCは、50バイトのメモリを内蔵しており、RTC側と同じく、メモリもバッテリバックアップされる。PC ATのBIOSは、これを使って、ハードディスクのパラメーター(初期のハードディスクインターフェースでは、セクタ、トラック、ヘッド数を読み出せないものがあった)や、外部記憶の起動優先順位、ビデオカードの種類などを記憶した。
ただし、ハードウェアの一部であり、BIOSプログラムとは不可分であるため、CMOSメモリの使い方は、BIOSが決めていた。決まっているのは、CMOSメモリが割り当ててあるI/Oアドレスや読み書きの手順だけである。

少々、ハードウェアに詳しい方なら、モトローラの半導体なので、同社の6800シリーズ用のファミリーチップではないかと思われるかもしれない。実は、このMC146818Aには、バス側のインターフェースを68系にするか、INTEL系(8080、8085など)にするのかを切り替える信号ピンがあった。モトローラは、これを「MOTEL」コンセプトと呼んでいた。

のちに、このMC146818Aと互換性のあるRTCは複数のメーカーから発売された。MC146818Aは、年を下2桁でしかカウントしていなかった。このため、後年登場した互換チップでは、CMOSメモリの一部に年の上位2桁を記録するcentury registerを持つ。これは、CMOSメモリの健全性のチェックにも利用されている。RTCをチェックしているソフトウェアの開発年と4桁の年を比べ、RTCの方が古い場合には、CMOSメモリの内容が壊れていると推測できる。また、開発年よりも後の年であっても、100年など、余りにかけ離れている場合も壊れている可能性がある。こうした場合、BIOSは、CMOSエラーを表示し、ユーザーに確認を取るなどして、CMOSメモリをデフォルト値に戻す。


その後、PCは、チップセットを使って開発されるようになり、RTCやCMOSメモリはチップセットに取り込まれるが、基本的なアクセス方法などは互換性を保ったままだ。

さて、現在は、BIOSではなく、UEFIをファームウェアに利用しているが、UEFIでは、起動パラメーター(EFIグローバル変数)などを「Nonvolatile」と呼ばれる領域に記録する。Microsoftの資料によれば、Windows 10 RS2でセキュアブートを行う場合、最低120 KBが必要としている。このため、もはやCMOSメモリには保存できず、チップセットにフラッシュメモリなどを接続して不揮発メモリとしている。

タイトルネタは、1961年の映画「モスラ」である。ゴジラとならび東宝三大怪獣の一角をなす。リメイクもされたが、まずは最初に作られたこの作品を見るべきであろう。東宝の怪獣映画といえば伊福部昭を思い出すが、劇中歌である「モスラの歌」を作曲したのは、東京オリンピック(1964年)入場行進曲の古関裕而である。
編集部おすすめ