【文献】
Retina MacBook Pro、OS X Mountain Lion、iOS 6 WWDC 2012 アップルが魅せる未来への布石,Mac Fan,日本,株式会社マイナビ,2012年 7月 3日,第20巻第8号通巻353号,pp.50−53
(58)【調査した分野】(Int.Cl.,DB名)
前記ソース・デバイスと前記ターゲット・デバイスがバックボーン・ネットワークに接続された無線アクセス・ポイントを経由しない直接無線接続が可能で、前記同期信号および前記同期データを前記直接無線接続で受信する請求項1に記載の方法。
前記不正アクセスの有無を判断するステップが、前回のブートから今回のブートまでの間に前記ターゲット・デバイスから前記記憶装置が取り外されたか否かを判断するステップを含む請求項5に記載の方法。
前記不正アクセスの有無を判断するステップが、前回のブートからブート・デバイスが変更されたか否かを判断するステップを含む請求項5または請求項6に記載の方法。
前記パワー・オン状態に遷移するステップが、前記ターゲット・デバイスに接続可能な出力デバイスに対するインターフェース・コントローラをディスエーブルに設定するステップを含む請求項1から請求項8のいずれかに記載の方法。
前記同期データの記憶が終了したことに応じて前記ターゲット・デバイスが前記スリープ状態に遷移するステップを有する請求項1から請求項9のいずれかに記載の方法。
【発明を実施するための形態】
【0022】
[同期処理の概要]
図1は、本実施の形態にかかる同期処理の概要を説明する図である。
図1には、一例として、デスクトップPC11、ノートPC13、タブレット端末15、PDA17、およびスマートフォン19などの情報端末装置が直接無線で接続されてネットワークを構成している様子を示している。デスクトップPC11と他の情報端末装置は、バックボーン・ネットワーク31に接続されたWLANのアクセス・ポイント(AP)33を経由しないでデバイス同士が直接無線で接続されている。このようなデバイス同士の直接的な無線接続方式を、以後、デバイス・ツー・デバイス(D2D)接続ということにする。IEEE 802.11に規定するアドホック・モードはD2D接続の典型的な例である。
【0023】
D2D接続は、WLANが存在しない環境での同期処理やWLANに参加できない情報端末装置を含むグループでの同期処理を可能にする。ただし、本発明は情報端末装置同士が有線で接続される場合や、AP33を経由するWLANのネットワークで接続される場合にも適用できることは以下の説明により明らかになる。これらの情報端末装置はたとえば同一のユーザに所有されたり特定のメンバーを構成したりして、互いに信頼関係を構築している。
【0024】
デスクトップPC11は、一例ではキーボードおよび大型のディスプレイを備えており高度の編集機能を保有している。ユーザはデスクトップPC11でデータを編集し、新規に作成した同期データまたは前回の同期からの差分にかかる同期データで他の情報端末装置を同期しようとしている。以後、同期データの転送元となるデスクトップPC11をソース・デバイスということにする。これに対してノートPC13、タブレット端末15、PDA17、およびスマートフォン19は同期データの転送先となり、以後、これらを総称してターゲット・デバイスということにする。
【0025】
ソース・デバイスとターゲット・デバイスの関係は固定する必要はなく、データを編集したいずれのデバイスもソース・デバイスになることができる。ソース・デバイスとターゲット・デバイスはいずれも同一のまたは互換性があるアプリケーション・プログラム(アプリケーション)を実装している。ターゲット・デバイスは、少なくとも同期データが転送されるときは後に説明するスリープ状態に遷移している。
【0026】
ユーザは同期のためにソース・デバイスに対する操作はするが、ターゲット・デバイスに対する操作をする必要はない。ソース・デバイスに対する操作に応じてターゲット・デバイスはスリープ状態からパワー・オン状態に遷移し、同期が終わると元のスリープ状態に戻る。また、ターゲット・デバイスはセキュリティを確保しながらスリープ状態からパワー・オン状態に遷移する。
【0027】
[情報端末装置とパワー・ステート]
図2は、情報端末装置の一例としてのノートPC100のハードウェアの構成を示す機能ブロック図である。多くのハードウェアの構成は周知であるため、ここでは本発明に必要な範囲で説明する。ノートPC100は、ソース・デバイスおよびターゲット・デバイスのいずれにもなり得る。メモリ・コントロール・ハブ(MCH)113には、CPU111、メイン・メモリ115、ビデオ・コントローラ117およびアイオー・コントロール・ハブ(ICH)121が接続されている。ビデオ・コントローラ117には、LCD119が接続されている。
【0028】
ICH121はさまざまな規格のインターフェース機能を備え、
図1には代表的にSATAにSSD123が接続され、SPIにBIOS_ROM125が接続され、USBにUSB端子126が接続され、PCIeにWLANモジュール127が接続され、LPCにエンベデッド・コントローラ(EC)131およびNVRAM133が接続されている。NVRAM133のセキュアな記憶領域には、パワー・オン・パスワードおよびSSDパスワードなどのBIOSパスワード、データを同期するグループ・メンバーのMACアドレス、グループ・メンバーが同期に使用する特別なESSIDおよび認証コードなどが登録されている。
【0029】
EC131には、キーボード129およびパワー・コントローラ135が接続されている。パワー・コントローラ135には、DC/DCコンバータ139の制御回路およびパワー・ボタン145が接続されている。パワー・コントローラ135はさらに、タンパー検出ライン141でSSD123に接続され、同期イベント・ライン143でWLANモジュール127に接続されている。
【0030】
ノートPC100は、ACPI(Advanced Configuration and Power Interface)の省電力機能およびプラグ・アンド・プレイに対応している。ACPIでは、S1ステートからS4ステートまでの4つのスリーピング・ステート(スリープ状態)、S0ステート(パワー・オン状態)、S5ステート(パワー・オフ状態)を定義している。ノートPC100はACPIのスリープ状態のなかで、S3ステートとS4ステートだけを定義している。
【0031】
S3ステートはいわゆるサスペンド状態といわれ、メイン・メモリ115の記憶は保持され、メイン・メモリ115の記憶保持に必要のない電源は停止する。S3ステートに入る際にオペレーティング・システム(OS)は電源が停止するデバイスが保持していたシステム・コンテキストをメイン・メモリ115に退避し、電源が復帰したときに各デバイスに復帰する。
【0032】
S4ステートはACPIでサポートされるスリープ状態の中で最も復帰までの時間が長いパワー・ステートでハイバネーション状態といわれる。ノートPC100がS0ステートからS4ステートに遷移する際には、OSがSSD123にメイン・メモリ115の記憶内容を含むノートPC100の直前のシステム・コンテキストを格納すると、EC131はパワー・コントローラ135やリッド・センサ(図示せず)などの電源の起動に必要な最小限のデバイス以外のデバイスに対する電源を停止する。
【0033】
S5ステートはいわゆるソフト・オフといわれるパワー・ステートで、OSがコンテキストをSSD123に退避しない点を除いては基本的に電力を供給するデバイスの範囲はS4ステートと同じである。以下においては、S3ステート、S4ステート、およびS5ステートを総称するときはSxステートと記載する。Sxステートに対してS0ステートは原則としてノートPC100が動作するために必要なすべてのデバイスに電力が供給されかつブートまたはレジュームが完了した状態である。SxステートからS0ステートに遷移する動作を適宜ウェイクアップということにする。
【0034】
本発明においてはさらにパワー・ステートを遷移させる際のソフトウェア上の実行主体がOSとBIOSのいずれであるかという視点に基づいてS34ステートを定義する。S34ステートは、OSがS0ステートからS3ステートに遷移させ、その後自動的にBIOSがS3ステートからS4ステートに遷移させた状態である。S0ステートからSxステートへ移行させる処理はOSが行うため、OSが認識しているパワー・ステートと実際のパワー・ステートは一致するのが原則である。これに対してS34ステートでは、OSは遷移先がS3ステートであると認識しているが、電源状態とデータ状態は実質的にはS4ステートに相当する。
【0035】
OSはS3ステートに遷移するときに、システム・コンテキストにS3ステートからS0ステートに復帰するコードを含めているため、S34ステートからS0ステートに直接復帰させることはできない。S34ステートからS0ステートに復帰するときは、BIOSが一旦システムをS34ステートからS3ステートに復帰させた後にBIOSから制御権を引き継いだOSがS3ステートからS0ステートに復帰させる必要がある。
【0036】
これに対しS4ステートに遷移するときは、OSがシステム・コンテキストをメイン・メモリ115に書き込んだ後に、メイン・メモリ115が記憶するデータをOSがSSD123に退避する。OSは、システム・コンテキストにS4ステートからS0ステートに復帰するコードを含めているため、システムをS4ステートからS0ステートに直接復帰させることができる。S0ステートからS34ステートに遷移する際に、S3ステートに一時的に留まっている時間をS34時間ということにする。本明細書ではS34ステートをスリープ状態およびSxステートに含めて説明する。
【0037】
SxステートからS0ステートに遷移する際には、リセットされたデバイスに対してBIOSがPOST(Power On Self Test)を実行する。POSTは、CPU111にリセット信号が供給されてから、OSのロードを開始するまでの間に、BIOS_ROM125に格納されたコードがチップ・セット113、121のコントローラや周辺デバイスにパラメータを設定して使用できる状態にする作業をいう。POSTは、CPU111がリセットされてからOSがロードを開始するまでにBIOSコードが行うすべての処理であったり、あるいはその中からCPU111およびメイン・メモリ115などの基本的なデバイスに対する初期化以外の処理を除いた処理であったりする。
【0038】
ICH121は、図示しないRTC(Real Time Clock)とRTCメモリ151を含んでいる。RTCおよびRTCメモリ151は、AC/DCアダプタおよび電池パックの電力が停止して、ICH121にDC/DCコンバータ139から電力が供給されないときにボタン電池から電力の供給を受けることができる。RTCメモリ151は、BIOSのセット・アップ・データおよびRTCが生成した時間情報などを記憶する揮発性メモリである。RTCメモリ151は、S3ステートに遷移する際にBIOSが参照するS34フラグおよびS34時間を記憶する。RTCメモリ151へのS34フラグおよびS34時間の設定は、BIOSセット・アップ・コード233(
図4参照)がBIOS_ROM125のデータ領域283へS34イネーブルを設定する際に行う。
【0039】
S34フラグは、OSがノートPC10をS3ステートに遷移させたときに、S34ステートに遷移する処理をするようにBIOSに指示したり、BIOSがSSD123に対する不正アクセスを検出して実行パスを決定したりするための情報である。S34時間は、OSがシステムをS3ステートに遷移させてからBIOSが自動的にS34ステートに遷移させるまでの時間をいう。
【0040】
ICH121は、ACPIが規定するレジスタ153と、レジスタ155、157を含む。レジスタ153、155、157はSxステートで電源が維持される。レジスタ153は、ACPIに規定するSLP_TYPレジスタおよびSLP_ENレジスタに相当する。レジスタ153はS0ステートからSxステートに遷移する際に遷移先のパワー・ステートがOSにより設定される。レジスタ155には、S3ステートに遷移してからS34時間が経過したときにRTCによりタイム・アップ・ビットが設定される。レジスタ157には、WLANモジュール127が同期イベントを出力したときに同期ビットが設定される。
【0041】
SSD123はディスク・ドライブの一例で、OS、デバイス・ドライバ、アプリケーション、ユーティリティ・プログラムおよびユーザ・データなどを記憶するためのフラッシュ・メモリで構成された記憶領域を備える大容量の記憶装置である。SSD123には、認証コード211が提供するインターフェースを通じてユーザがパスワードを設定することができる。ノートPC100は、SSD123に代えてハードディスク・ドライブや他の不揮発性の記憶装置を搭載することもできる。SSD123は、本実施の形態の同期処理に直接関連する編集アプリケーション191、同期ユーティリティ193、および同期データ195を格納する。
【0042】
編集アプリケーション191は、文書、画像、および映像などのデータを作成するプログラムとすることができる。同期ユーティリティ193は、同期のための認証およびデータの送受信のための処理をするプログラムである。同期データ195は、ノートPC100がソース・デバイスとして動作するときは、編集アプリケーション191を通じてユーザが作成したデータに相当し、ノートPC100がターゲット・デバイスとして動作するときは、ソース・デバイスから受信した編集アプリケーション191に関連付けられたデータに相当する。SSD123はブート・デバイスでノートPC100が起動するときにロードされるブート・イメージを格納している。SSD123の記憶領域はシステム領域とユーザ領域に区分されている。
【0043】
システム領域はSSD123のファームウェアを記憶し、ユーザによるデータの書き込みや読み出しのためのアクセスを禁止している領域である。BIOSがSSD123にSSDパスワードとロック・コマンドを送ると、ファームウェアがSSDパスワードを設定して、設定したSSDパスワードをシステム領域に記憶する。SSDパスワードが設定されたSSD123に、BIOSがSSDパスワードとロック解除コマンドを送ると、ファームウェアが認証してロックを解除し、システムからユーザ領域へのアクセスを許可する。なお、パスワードが設定されたSSD123は、一旦ロックが解除されても、電源が停止したりリセット信号が供給されたりすると再び自動的にロックされる。BIOS_ROM125のデータ構造は、
図4を参照して後に説明する。また、D2D通信を行うWLANモジュール127についても後に説明する。
【0044】
EC131は、CPU、ROM、RAMなどで構成されたマイクロ・コンピュータであり、さらに複数チャネルのA/D入力端子、D/A出力端子、タイマー、およびディジタル入出力端子を備えている。EC131は、ノートPC10の内部の動作環境の管理にかかるプログラムをCPU111とは独立して実行することができる。EC131は、キーボード・コントローラを含んでいる。
【0045】
パワー・コントローラ135は、EC131からの指示に基づいてDC/DCコンバータ139を制御するワイヤード・ロジックのディジタル制御回路(ASIC)である。パワー・コントローラ135は、レジスタ181、183、185を備えている。パワー・コントローラ135は、Sxステートのときにも電源が維持されている。DC/DCコンバータ139は、図示しないAC/DCアダプタまたは電池パックから供給される直流電圧を、ノートPC100を動作させるために必要な複数の電圧に変換し、さらにパワー・ステートに応じて定義された電力供給区分に基づいて各々のデバイスに電力を供給する。
【0046】
パワー・コントローラ135は、同期イベント・ライン143を通じてWLANモジュール127から同期イベントを受け取ったときに、ノートPC100がパワー・オン状態で動作するすべてのデバイスに電力を供給するようにDC/DCコンバータ139を制御する。パワー・コントローラ135は、WLANカード127から同期イベント・ライン143を通じて同期イベントを受け取ったときにレジスタ185を論理値1(同期ビット)に設定する。EC131は、レジスタ185の同期ビットをICH121のレジスタ157に書き込む。WLANモジュール127は、ICH121、およびEC131を通じて同期イベントをパワー・コントローラ135に送ることもできる。この場合は、スリーピング・ステートに遷移している間、ICH121の同期イベントを処理する回路およびEC131に電力を供給しておく必要がある。
【0047】
タンパー検出ライン141は、パワー・コントローラ135と同じ電源でプルアップされている。SSD123はノートPC100に装着されている間、タンパー検出ライン141の電位をグランド・レベルに維持している。SSD123がノートPC100から取り外されるとタンパー検出ライン141の電位が上昇する。パワー・コントローラ135の論理回路は、タンパー検出ライン141の電位が上昇するときのリーディング・エッジを検出するとレジスタ181を論理値1(タンパー・ビット)に設定する。
【0048】
BIOSは、パワー・オン・パスワードまたはSSDパスワードの認証を終えてブートが成功したときにレジスタ183を論理値1(パワー・ビット)に設定し、レジスタ181を論理値0に設定する。BIOSは、Sxステートからウェイクアップする際に、
図3に示す真理値表でSxステートの間にSSD123がICH121から外されたか否かを判断する。
【0049】
スリープ状態の間にSSD123がICH121から外されて再装着されると、タンパー検出ライン141の電位が一旦上昇してからゼロになる。パワー・コントローラ135の論理回路は、タンパー検出ライン141の電位のリーディング・エッジを検出してレジスタ181のタンパー・ビットを論理値1に設定する。スリープ状態の間に、もし、パワー・コントローラ135の電源が停止した場合には、レジスタ181のタンパー・ビットはクリアされて論理値0になるが同時にレジスタ183のパワー・ビットもクリアされて論理値0になる。
【0050】
このような状態は、SSD123とICH21の間に盗聴装置を挿入するような場合にも発生するためBIOSは真理値表を使って、SSD123に対する不正アクセスが発生したと判断することができる。このようにBIOSは、前回のブートから今回のブートまでの間にSSD123がノートPC100から取り外されると、同一のSSD123が再装着されてもまた新たなSSDが再装着されても、BIOSは今回のブートにおいてそれを検出することができる。
【0051】
[D2D通信]
D2D通信は、デバイス・ドライバおよびOSとWLANモジュール127が共同して行うことができる。WLANモジュール127は、D2D通信と同時にまたは切り換えることでバックボーン・ネットワーク31に接続してインフラスト・ラクチャ・モードで無線通信ができるように構成してもよい。WLANモジュール127はD2D通信をする際に、アドホック・モードで1台または複数台の情報端末装置とだけ接続するように構成してもよい。あるいは、WLANモジュール127は、「Soft AP」という技術で複数の情報端末装置と接続するように構成してもよい。
【0052】
D2D通信には、1つの無線コントローラを仮想化して複数の無線コントローラに見せかける「Virtual WiFi」といった機能や、APの機能をエミュレートする「Soft AP」の機能を搭載するWindows7(登録商標)を採用することができる。あるいは、インテル社(インテルは登録商標)のMy WiFi Technologyを採用することもできる。本実施の形態では、WiFi Allianceにより策定されたWiFi Directという通信技術を例にして説明する。WiFi Directを採用すると、1つの情報端末装置をSoft APとして機能させて複数の情報端末装置の接続を可能にするとともに、グループを形成した情報端末装置との間でAPやルータを利用しないD2D通信ができる。
【0053】
〔BIOS_ROMの構成〕
図4はBIOS_ROM125のデータ構造を示す図である。BIOS_ROM125に格納されたBIOSコードは、一例としてUEFIファームウェアで構成している。BIOS_ROM125は、BIOSコードを格納するBIOS領域281とBIOSコードが利用するデータ領域283を含む。BIOS_ROM125はBIOSコードの書き換えに伴うリスクを軽減するためにブート・ブロック方式を採用している。BIOS領域281はブート・ブロック285とシステム・ブロック287に分かれている。ブート・ブロック285は書き込み保護がされている記憶領域でここに格納されたプログラムはTPM(Trusted Platform Module )の仕様書に規定するCRTM(Core Root of Trust for Measurement)として扱われ特別な権限がないと書き換えができないようになっている。
【0054】
ブート・ブロック285には基本デバイス初期化コード201、一貫性認証コード203、POST選択コード205および退避コード207がCRTMとして格納されている。CRTMは、BIOSコードの中で一貫性のある部分として構成され、ノートPC100がブートするときに必ず最初に実行される。基本デバイス初期化コード201は、ノートPC100の電源が起動してウェイクアップする際に、メイン・メモリ115にBIOSコードをロードして実行を開始するまでの処理に必要なCPU111、メイン・メモリ115およびその他の基本的なデバイスの検出、検査および初期化を最低限の範囲で行う。一貫性認証コード203はノートPC100のプラットフォームに関するすべての一貫性の計測を行う。
【0055】
POST選択コード205は、ICH121のレジスタ153、157、RTCメモリ151のS34フラグ、パワー・コントローラ135のレジスタ181、183を参照して、基本POSTコード209、簡易POSTコード213またはS3POSTコード215のいずれを実行するかを判断して実行パスを制御する。POST選択コード205は、WLANモジュール127が生成する同期イベントが原因で電源が起動したときは、遷移元がS3ステート、S34ステート、またはS4ステートのいずれかの場合だけブートを継続する。
【0056】
POST選択コード205は、WLANモジュール127が生成する同期イベントが原因でS34ステートまたはS4ステートからウェイクアップする際に、簡易POSTコード213を選択する。POST選択コード205は、WLANモジュール127が生成する同期イベントが原因でS3ステートからウェイクアップする際に、S3POSTコード215を選択する。
【0057】
POST選択コード205は、スリープ状態の間に行われたSSD123に対する不正アクセスを検出したりブート・デバイスが変更されたりしたことを検出したときに、ウェイクアップを中断して強制的にシャットダウンする。退避コード207は、S0ステートからS34ステートに遷移する際に、S3ステートにおけるメイン・メモリ115の状態をSSD123に転送する。退避コード207は、OSとは異なってメイン・メモリ115の記憶領域のデータ構造を認識していないため、原則として記憶領域の開始アドレスから最終アドレスまでのメイン・メモリ115のアドレス全体の記憶状態をそっくりSSD123にコピーする。
【0058】
基本POSTコード209は、パワー・ボタン145の押下といったようなWLANモジュール127が生成する同期イベント以外の原因でS4ステートまたはS5ステートからウェイクアップする際に、すべての内部デバイスを対象にして検出、検査、および初期化といった完全なPOST処理を行う。基本POSTコード209は、所定のデバイスが検出できないときおよび検査の結果デバイスが正常に動作しないと判断したときにビープ音や画面表示によるエラーを出力する。基本POSTコード209は、MCH113およびICH121に接続されている周辺デバイスからパラメータを取得して現在のシステムにおいて最適なパラメータを選択しMCH113およびICH121が含むコントローラに設定する。
【0059】
このように内部デバイスを検査してそこから取得した情報に基づいて選択した最適なパラメータをコントローラに設定することを初期化といい、いずれかの場所に保存しておいた過去に設定したパラメータを対応するコントローラに設定することをリストアということにする。リストアは、内部デバイスの検出、検査および最適パラメータの選択のための処理を省略するので初期化に比べて短時間で完了することができる。
【0060】
認証コード211は、パワー・オン・パスワード、SSDパスワード、および管理者パスワードなどのBIOSパスワードの設定のためのプロンプトをLCD119に表示したり、入力されたパワー・オン・パスワードをシステムに送ったり、またはSSDパスワードをSSD123に送ってロックを解除したりする。いずれかのBIOSパスワードが設定されているときに、基本POSTコード209の実行の途中または終了したときに認証コード211が必ず実行される。いずれのBIOSパスワードも設定されていないときは制御権が移っても認証コード211は実行されない。
【0061】
簡易POSTコード213は、ウェイクアップする際に、一部のデバイスの検出、検査、および最適なパラメータの選択などのPOST処理を省略して基本POSTコード209よりも短時間でブートを完了する。簡易POSTコード213は、USBデバイス、キーボード129などのような同期処理に必要がないデバイスや、動作のタイミングからOSが初期化をしても問題がないようなデバイスなどのPOST処理を省略することができる。
【0062】
簡易POSTコード213は、S4ステートまたはS5ステートからブートするときに基本POSTコード209が設定した最適なパラメータやそのときのデバイスの情報などをBIOS_ROM125のデータ領域283またはNVRAM133に格納しておき、ブートするときに基本的なデバイスを除いて格納しておいたパラメータをリストアすることでPOST時間を短縮することができる。
【0063】
簡易POSTコード213は、基本POSTコード209よりも復帰時間を短縮することを目的にして構成するため、ユーザにパワー・オン・パスワードおよびSSDパスワードの入力を要求しない。簡易POSTコード213は、ユーザに代わってNVRAM133に格納されたパワー・オン・パスワードおよびSSDパスワードをシステムおよびSSD123に自動的に送付してロックを解除する。簡易POSTコード213は、ICH121のESATAやUSBなどの外付けの出力デバイスに対するインターフェース・コントローラをディスエーブルに設定することができる。
【0064】
S3POSTコード215は、S3ステートからS0ステートに遷移する際にSMIハンドラに呼び出されて実行される。S3POSTコード215は、簡易POSTコード213よりも短時間でPOST処理を完了する。S4ステートまたはS5ステートからブートする際に基本POSTコード209が設定したパラメータは、S0ステートにおいてメイン・メモリ115に記憶される。S0ステートからS3ステートにサスペンドするときには、メイン・メモリ115に記憶されたパラメータおよびS3POSTコード215の記憶が維持される。S3POSTコード215は、メイン・メモリ115に記憶されたパラメータをリストアすることで短時間にコントローラの設定を完了することができる。
【0065】
S3POSTコード215は簡易POSTコード213と同様に、ユーザ入力に代えてパワー・オン・パスワードおよびSSDパスワードを自動的に送付してロックを解除する。S3POSTコード215は簡易POSTコード213と同様に、ICH121のESATAやUSBなどの外付けの出力デバイスに対するインターフェース・コントローラをディスエーブルに設定することができる。
【0066】
I/Oコード231は、CPU111がリアル・モードで動作する際に周辺デバイスにアクセスするための入出力のインターフェースを提供する。BIOSセット・アップ・コード233は、ブート・ドライブの選択、各デバイスの機能のイネーブル/ディスエーブル、セキュリティのイネーブル/ディスエーブルなどのような内部デバイスに対する設定をユーザがカスタマイズするためのインターフェースを提供する。ブートする際に、OSがロードされる前に所定のキーを操作するとBIOSセット・アップ・コード233が実行されて、LCD119にBIOSセット・アップ画面が表示される。
【0067】
ユーザが設定したセット・アップ・データの多くは、ICH121内のRTCメモリ151に記憶される。CPU111は基本POSTコード209、簡易POSTコード213、またはS3POSTコード215を実行する際にRTCメモリ151に記憶されたセット・アップ・データを参照する。ユーザはBIOSセット・アップ・コード233を通じて、ブート・デバイスの順番を設定することができる。
【0068】
たとえば、外付けUSBメモリ、ODD、SSD123の順番に設定することができる。この場合、USB端子126に外付けUSBメモリが接続されておらず、かつODDにブート可能な媒体が装着されていない場合は、SSD123からブートすることになる。しかし、同期のためにウェイクアップする際にUSB端子126にブート・デバイスとなり得る外付けUSBメモリが不正に接続されていると、当該USBメモリでブートして同期データが盗聴される可能性がある。本実施の形態では、後に述べるようにこのような行為に対する対策も講じている。
【0069】
ユーザは、BIOSセット・アップ画面を通じて、S34ステートの利用をイネーブルまたはディスエーブルに設定することができる。さらにS34ステートの利用をイネーブルに設定する際には、S34時間を設定することもできる。設定されたS34イネーブル・フラグとS34時間は、データ領域283に格納される。BIOSセット・アップ・コード233は、S34ステートをイネーブルに設定したときは、同時にRTCメモリ151にS34フラグとS34時間を設定する。
【0070】
環境ユーティリティ・コード235は、ノートPC100の温度および電力を制御する。各BIOSコードは、
図4に示したように独立したコードで構成する必要はなく、コードの一部を共通化してそれぞれの機能を果たすように実行パスを制御するように構成してもよい。本発明はブート・ブロック方式を採用しないBIOS_ROM、あるいは、BIOS領域の全体をブート・ブロックにしたBIOS_ROMに適用することもできる。
【0071】
[同期の全体手順]
図5は、ソース・デバイスとターゲット・デバイスを同期させるときの動作手順を示すフローチャートである。ソース・デバイスおよびターゲット・デバイスはいずれもノートPC100を例にして説明する。ソース・デバイスとターゲット・デバイスの構成要素を区別する必要がある場合は、
図2、
図4に示した参照番号に、ソース・デバイスはSを付し、ターゲット・デバイスはTを付して区別することにする。また、ターゲット・デバイスが1台だけ存在する場合を中心にして説明するが、複数のターゲット・デバイスを同期する場合の手順もこの説明で理解できるようにしている。
【0072】
ソース・デバイスおよびターゲット・デバイスには、互換性のある編集アプリケーション191S、191Tおよび同期ユーティリティ193S、193Tが実装されている。ソース・デバイスとターゲット・デバイスは同期可能なグループを構成するために、あらかじめNVRAM133S、133Tに同期に使用するESSID、MACアドレス、および認証コードなどを格納している。
【0073】
ブロック301〜311はソース・デバイスの動作で、ブロック351〜367はターゲット・デバイスの動作を示している。ブロック301でソース・デバイスはパワー・オン状態で、ユーザは編集アプリケーション191Sを通じてデータの作成または編集をしてSSD123Sに記憶する同期データ195を更新する。ブロック351でターゲット・デバイスは、いずれかのスリープ状態(S3、S34、S4)に遷移している。
【0074】
ターゲット・デバイスはいずれのスリープ状態であっても、少なくともWLANモジュール127Tとパワー・コントローラ135Tに電力が供給されている。スリープ状態のターゲット・デバイスに搭載されたWLANモジュール127Tは、電波のスキャンが可能なパワー・セーブ・モードで動作して、同期の要求があったときにウェイクアップできるようにしてもよい。なお、ターゲット・デバイスはS5ステートのときにもウェイクアップして同期できるようにしてもよい。
【0075】
ブロック303で、ユーザが同期ユーティリティ193Sにアクセスして、LCD119に表示されたアイコンをクリックし同期開始の操作をする。あるいは、ソース・デバイス上での同期対象となるファイルの更新や、スリープまたはシャットダウンなどの電力制御のイベントをトリガーにして自動的に同期を開始するようにしてもよい。ブロック305で、WLANモジュール127Sは、同期に使用する特別なESSIDと相手のMACアドレスを含むプローブ要求フレームをブロードキャストで送信してアクティブ・スキャニング方式によりターゲット・デバイスを探索する。ターゲット・デバイスのWLANモジュール127Tは、受信したESSIDとMACアドレスがあらかじめ登録されたデータに合致する場合はプローブ応答フレームをターゲット・デバイスに送り返す。その後、両者の間で認証とアソシエーションを行って接続が確立される。ブロック352でターゲット・デバイスは、接続が確立されたことで同期信号を受信したと認識する。
【0076】
ブロック353で、同期信号に応じてWLANモジュール127Tはパワー・コントローラ135Tに同期イベントを送る。同期イベントを受け取ったパワー・コントローラ135Tは、レジスタ185に同期ビットを設定してS0ステートで動作するデバイスに電力を供給するようにDC/DCコンバータ139Tを制御する。このとき同期イベントは、ブロック305、352で認証が行われた後に生成されるため、ESSIDとMACアドレスを擬装した情報端末装置により電源が起動するようなことを防ぐことができる。EC131Tは、レジスタ185Tを参照してレジスタ157Tに同期ビットを設定する。ブロック355でBIOSのCRTM(
図4)の実行が開始される。ブロック357でBIOSは、前回のウェイクアップから今回のウェイクアップまでの間に行われた可能性があるターゲット・デバイスに対する不正の有無を検査する。
【0077】
不正の有無は、SSD123の取り外しまたはブート・デバイスの変更が行われたか否かで判断する。不正があった場合は、ブロック359でターゲット・デバイスが自律的にシャットダウンして同期データの受け入れを停止する。なお、シャットダウンは同期を停止する動作の一例で、ブートをその時点で停止するようにしてもよい。不正がなかった場合はブロック361でOSおよび同期ユーティリティ193Tがロードされてブートが完了してS0ステートに遷移する。
【0078】
BIOSは、レジスタ157Tに同期ビットが設定されていることを実行中の同期ユーティリティ193Tに通知する。同期ユーティリティ193Tは、ソース・デバイスに同期の準備が完了したことを通知する。ブロック307、363では、ソース・デバイスの同期ユーティリティ193Sとターゲット・デバイスの同期ユーティリティ193Tの間で相互認証をする。ソース・デバイスは、ターゲット・デバイスから受け取った認証コードでターゲット・デバイスを認証し、同期データを送ってよい相手であることを確認する。
【0079】
ターゲット・デバイスも同様にソース・デバイスから受け取った認証コードでソース・デバイスを認証し、同期データを受け取ってもよい相手であることを確認する。なお、ターゲット・デバイスによるソース・デバイスの認証は省略してもよい。ブロック309で、同期ユーティリティ193Sは、前回の同期からの編集アプリケーション191Sの差分にかかる同期データ195Tと編集アプリケーション193Sの識別子をターゲット・デバイスに転送する。
【0080】
ブロック364で同期データと識別子を受信したターゲット・デバイスでは、編集アプリケーション193Sに対応する編集アプリケーション193Tが起動される。そして、同期データ195Sがアプリケーション193Tに関連付けられてSSD123Tに書き込まれる。同期が成功するとブロック365で同期ユーティリティ193Tは、その旨を同期ユーティリティ193Sに通知する。同期ユーティリティ193Sは、同期データ195Sを送信してから所定の時間が経過しても同期成功の通知を受信しないときは同期データ195Sの再送をすることができる。
【0081】
ブロック311で同期ユーティリティ193Sは、同期成功の通知を受け取ったときまたは所定の時間経過しても同期成功の通知を受け取らなかったときはブロック311で同期を終了してその旨を同期ユーティリティ193Tに通知する。ブロック367で同期の終了を認識した同期ユーティリティ193Tは、OSを通じてターゲット・デバイスをブロック351と同じスリープ状態に遷移させる。ターゲット・デバイスが複数存在する場合は、ブロック305〜311およびブロック352〜367の手順はターゲット・デバイスごとに行われる。同期処理の間、ユーザはターゲット・デバイスで編集が終わった後に接続ユーティリティを通じて同期の開始操作をするだけでよく、ターゲット・デバイスに対して一切の操作をする必要はない。
【0082】
[ウェイクアップにおけるBIOSの処理手順]
つぎに、
図6を参照して
図5のブロック352〜361でBIOSが実行するブートの手順を説明する。ブロック501では、スリープ状態に遷移しているターゲット・デバイスに対して不正操作が行われることを想定する。ブロック503でソース・デバイスから受信した同期信号によりターゲット・デバイスの電源が起動する。ブロック505でCPU111はPOST選択コード205Tを実行する。ブロック507でPOST選択コード205Tは、レジスタ157Tに同期ビットが設定されているか否かを判断する。同期ビットが設定されているときはブロック511に移行し、設定されていないときはブロック509に移行する。ブロック509では同期以外の原因でCPU111がリセットされたため他の手順を実行する。
【0083】
ブロック511でPOST選択コード205TがSSD123TにSSDパスワードが設定されているか否かを判断する。SSDパスワードが設定されている場合は、ブロック513に移行し、設定されていない場合はブロック515に移行する。ブロック513、
514では、POST選択コード205Tが、
図3の真理値表を参照してSSD123Tに対する不正アクセスの有無を判断する。ブロック513でPOST選択コード205Tは、レジスタ183Tを参照してパワー・ビットを確認する。パワー・ビットが設定されているときはブロック
514に移行し、パワー・ビットがクリアされているときは不正を検出した場合に相当するためブロック517に移行する。
【0084】
ブロック
514でPOST選択コード205Tは、レジスタ181Tを参照してタンパー・ビットを確認する。タンパー・ビットが設定されているときはSSD123Tに対する不正アクセスを検出したことに相当するためブロック517に移行する。タンパー・ビットが設定されていないときはSSD123Tに対する不正アクセスを検出しないことに相当するためブロック515に移行する。
【0085】
ブロック515でPOST選択コード205Tは、前回のブートと今回のブートでブート・デバイスが変更されているか否かを判断する。ブート・デバイスが変更されるケースは、たとえば、前回までのブートでは使用されなかった選択順位が上位のブート・デバイスとしてUSBメモリが今回のブートで不正に接続された場合である。真正なユーザがUSBメモリをブート・デバイスとして利用するためには、同期信号ではなくパワー・ボタン145Tで起動する必要がある。
【0086】
ブート・デバイスが変更されているときはブロック517に移行し、変更されていないときは不正がなかったと判断して
図7のブロック551に移行する。ブロック517でPOST選択コード205Tは、ブートを停止してEC131を通じてターゲット・デバイスを強制的にシャットダウンする。このとき、POST選択コード205Tはビープ音でユーザにブートが停止したことを通知するようにしてもよい。
【0087】
図7のブロック551でPOST選択コード205Tは、レジスタ153TにS3ビットが設定されているか否かを判断する。S3ビットが設定されてないときは、S4ステートからの遷移であると判断してブロック555に移行する。S3ビットが設定されているときは、ブロック553でPOST選択コード205TはRTCメモリ151Tを参照してS34フラグが設定されているか否かを判断する。S34フラグが設定されているときは、S34ステートからの遷移であると判断してブロック555に移行する。
【0088】
ブロック555では、POST選択コード205Tから簡易POSTコード213Tに制御が移る。簡易POSTコード213Tは、ブロック557でSSDパスワードをSSD123Tに自動的に送付し、さらに、パワー・オン・パスワードが設定されている場合はシステムにパスワードを自動的に送付する。ブロック559で簡易POSTコード213Tは同期に不要なデバイスのPOSTを省略し、ブロック561で不正に接続される可能性があるUSBメモリやSSDなどの外部接続の出力デバイスに対するインターフェース・コントローラをディスエーブルに設定する。
【0089】
ブロック563では、POSTが終わった後のプロセスが、遷移元がS34ステートかS4ステートかで異なる。S34ステートからの遷移のときは、簡易POSTコード213Tは、S34ステートのときにSSD123Tに退避していたメイン・メモリ115の記憶状態をメイン・メモリ115に復帰する。簡易POSTコード213TはRTCメモリ151のS34フラグをクリアする。この時点でターゲット・デバイスのデータ状態はS3ステートであるが、電源状態はS0ステートである。
【0090】
メイン・メモリ115へのデータ転送が終了すると簡易POSTコード213Tは、制御権をOSに移す。OSは、レジスタ153を参照して遷移元のパワー・ステートがS3ステートであると認識してS0ステートに遷移するために、必要に応じてデバイス・ドライバおよびBIOSと協働しながらシステム・コンテキストをリセットされた各デバイスのレジスタに復帰させる。S4ステートからの遷移の時は、簡易POSTコード213Tから制御が移ったOSがSSD123Tに退避していたシステムの状態をメイン・メモリ115Tおよびレジスタに復帰させる。
【0091】
ブロック573では、POST選択コード205TからS3POSTコード215Tに制御が移る。ブロック575から579まではブロック555からブロック561までの手順とほぼ同じであるが、S3POSTコード215Tは簡易POSTコード213Tより短時間で処理を終了することができる。ブロック563でOSは、メイン・メモリ115に記憶されていたシステム・コンテキストを各デバイスに復帰させる。
【0092】
これまでの手順でターゲット・デバイスはBIOSパスワードが設定されていても、リアルタイムで同期することができる。また、同期信号を受け取ったターゲット・デバイスは、不正があったときは自律的に同期を停止し、不正がなかったときは入出力デバイスのコントローラをディスエーブルにして同期に伴う盗聴からの安全を確保している。また、不正がなかったときは不要なデバイスのPOSTを省略して、基本POSTコード209Tを実行するよりも短時間で同期処理を完了させる。
【0093】
[ターゲット・デバイスを探索する他の方法]
バックボーン・ネットワーク31のAP33は、周囲の情報端末装置に所在を知らせるために常時ビーコン・フレームを送信している。バックボーン・ネットワーク31への接続を希望する情報端末装置がビーコン・フレームを監視して、接続先を探索する方法はパッシブ・スキャニング方式という。本実施の形態では、接続を希望するソース・デバイスがビーコン・フレームを送信して、接続先となるターゲット・デバイスを探索する。このようなビーコン・フレームの利用はアクティブ・スキャニング方式の範疇に含めることができる。
【0094】
図8は、ソース・デバイスがビーコン・フレームを送信してターゲット・デバイスを探索する方法を説明する図である。
図5と同一の手順は同一の参照番号で記載して説明を省略し、異なる部分だけ説明する。ブロック601では、WLANモジュール127Sが、ソフトAPとして動作して特別なESSIDを含むビーコン・フレームを送信する。ターゲット・デバイスはブロック651で、ビーコン・フレームの特別なESSIDを起動信号として認識すると、ただちに同期イベントを生成して電源を起動してブロック355以降の手順を進める。
【0095】
ブロック603とブロック653では、WLANモジュール127SとWLANモジュール127Tが、認証およびアソシエーションを行って接続を確立する。ブロック653の手順はブロック651以降の手順と並行して行われるため、
図4の手順のように接続の確立を待ってから電源を起動するよりも短時間でS0ステートまで遷移させることができる。しかも、複数のターゲット・デバイスが存在する場合は、ビーコン・フレームを検出した各ターゲット・デバイスはただちに電源を起動するため、全体の同期時間を短縮することができる。
【0096】
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。