(57)【要約】【課題】ホストOSプロセッサが動作している期間と、ディスクドライブコントローラが動作している期間との間には、ごくわずかな重複部分しかない。したがって、ホストOSとディスクドライブコントローラとの間のデータ転送の効率を上げて、コストおよびパフォーマンスの利点を得ることが望ましい。【解決手段】ホストオペレーティングシステム(OS)103は、ディスクドライブオペレーティングシステム(RTOS)102の管理下にあるタスクとして機能することができる。ホストOS 103とディスクドライブオペレーティングシステム102は、シングルプロセッサ101上で実行可能である。当該プロセッサ101は、ディスクドライブコントローラのリアルタイム応答特性を管理することができる。共有メモリサブシステムは、両方のオペレーティングシステムによってアクセスすることができる。【選択図】図１
2008135014.tif 000002
【特許請求の範囲】
【請求項１】
第１のホストオペレーティングシステム（OS）からの読み取り要求および書き込み要求に応じて、ディスクに対してデータの読み取りおよび書き込みを行うタスクを実行するように構成されたディスクドライブオペレーティングシステムを実行するプロセッサを有し、
前記第１のホストOSは、前記ディスクドライブオペレーティングシステム内のタスクとして実行されることを特徴とするハードディスクドライブ。
【請求項２】
前記ディスクドライブオペレーティングシステムおよび前記第１のホストオペレーティングシステムは、前記プロセッサ上で実行されることを特徴とする請求項１に記載のハードディスクドライブ。
【請求項３】
前記ディスクドライブオペレーティングシステムは、前記第１のホストOSタスクを、前記読み取り要求および書き込み要求を実行するタスクと比較して優先順位の低いタスクとして実行することを特徴とする請求項１に記載のハードディスクドライブ。
【請求項４】
前記ディスクドライブオペレーティングシステムは、リアルタイムオペレーティングシステムであることを特徴とする請求項１に記載のハードディスクドライブ。
【請求項５】
前記ハードディスクドライブは、組み込み機器の一部であることを特徴とする請求項４に記載のハードディスクドライブ。
【請求項６】
前記ディスクドライブオペレーティングシステムは、前記第１のホストOSに対する割り込みの有効化および無効化をシミュレートすることを特徴とする請求項１に記載のハードディスクドライブ。
【請求項７】
前記第１のホストOSは、前記読み取り要求および書き込み要求に応じてカスタムデバイスドライバがデータの読み取りおよび書き込みを行うバッファにポインタを渡すカスタムデバイスドライバを実行することを特徴とする請求項１に記載のハードディスクドライブ。
【請求項８】
前記ディスクドライブオペレーティングシステムは、前記第１のホストOS用の割り込みビットを、第１の記憶位置から第２の記憶位置に移動することを特徴とする請求項６に記載のハードディスクドライブ。
【請求項９】
第２のホストOSは、前記ディスクドライブオペレーティングシステム内のタスクとして実行されることを特徴とする請求項１に記載のハードディスクドライブ。
【請求項１０】
第１のホストオペレーティングシステム（OS）からの読み取り要求および書き込み要求に応じて、ディスクドライブオペレーティングシステムを使用して、ディスクに対してデータの読み取りおよび書き込みを行うタスクを実行するステップと、
前記第１のホストOSを、前記ディスクドライブオペレーティングシステム内のタスクとして実行するステップとを含むことを特徴とするハードディスクドライブを実装する方法。
【請求項１１】
前記ディスクドライブオペレーティングシステムおよび前記第１のホストOSは、プロセッサを共有することを特徴とする請求項１０に記載の方法。
【請求項１２】
前記方法はさらに、第２のホストOSを、前記ディスクドライブオペレーティングシステム内のタスクとして実行するステップを含むことを特徴とする請求項１０に記載の方法。
【請求項１３】
前記方法はさらに、前記第１のホストOSに対する割り込みの有効化および無効化をシミュレートするステップを含むことを特徴とする請求項１０に記載の方法。
【請求項１４】
前記方法はさらに、メモリ空間を共有するステップを含み、前記第１のホストOSは、前記読み取り要求および書き込み要求に応じてカスタムデバイスドライバがデータの読み取りおよび書き込みを行う前記メモリ空間内の位置にポインタを渡すカスタムデバイスドライバを実行することを特徴とする請求項１０に記載の方法。
【請求項１５】
前記第１のホストOSを、前記ディスクドライブオペレーティングシステム内のタスクとして実行するステップはさらに、
前記第１のホストOSにおける割り込みをシミュレートする仮想ハードウェアを準備するステップと、
目標プロセッサモードに切り替えるステップと、
割り込み復帰のための準備をするステップと、
割り込みモードに切り替えるステップと、
前記第１のホストOSタスクのコンテキスト領域におけるプログラムカウンタを修正するステップとを含むことを特徴とする請求項１０に記載の方法。
【請求項１６】
ホストオペレーティングシステム（OS）からの読み取り要求および書き込み要求に応じて、ディスクに対するデータの読み取りおよび書き込みを行うように構成されたディスクドライブオペレーティングシステムを実行するプロセッサと、
前記読み取り要求および書き込み要求に応じてデータを格納する、前記ディスクドライブオペレーティングシステムおよび前記ホストオペレーティングシステムによってアクセス可能な共有メモリとを有することを特徴とするハードディスクドライブ。
【請求項１７】
前記共有メモリは、前記プロセッサを含む集積回路の一部であり、前記ホストOSは前記プロセッサ上で実行されることを特徴とする請求項１６に記載のハードディスクドライブ。
【請求項１８】
ユーザデータを含むファイルシステムと、前記ユーザデータについて説明するファイルメタデータとをマウントするディスクドライブオペレーティングシステムを実行するプロセッサを有し、
前記プロセッサは、ホストオペレーティングシステム（OS）からの前記ユーザデータに関する読み取り要求および書き込み要求を受信し、前記ファイルメタデータに基づいて、前記読み取り要求および書き込み要求を最適化済み読み取りコマンドおよび書き込みコマンドに変換して、前記最適化済み読み取りコマンドおよび書き込みコマンドを実行することを特徴とするハードディスクドライブ。
【請求項１９】
前記プロセッサは、前記ファイルメタデータおよび回転位置による最適化（RPO）を使用して、現在のおよび後続のデータストリームまで帯域幅を増加させるパターンで、前記要求されたデータの論理ブロックアドレス（LBA）をディスク全体にわたって書き込むことを特徴とする請求項１８に記載のハードディスクドライブ。
【請求項２０】
前記プロセッサは、ディスクに格納されているデータの先行読み取りを行い、前記ファイルメタデータを使用して後続の要求を処理することを特徴とする請求項１８に記載のハードディスクドライブ。
【請求項２１】
前記プロセッサは、前記ホストOSを前記プロセッサ上のタスクとして実行するリアルタイムオペレーティングシステムを実行することを特徴とする請求項１８に記載のハードディスクドライブ。
【請求項２２】
前記プロセッサは、回転位置による最適化、およびファイルタイプによって指定される内容の優先順位付けの少なくとも１つを使用することによって、データの先行読み取りを行うことを特徴とする請求項２０に記載のハードディスクドライブ。
【請求項２３】
前記プロセッサは、読み取り要求および書き込み要求のパターンに応じて、データをキャッシュに格納し、キャッシュヒットを発生させて後続の要求に対するパフォーマンスを向上させることを特徴とする請求項１８に記載のハードディスクドライブ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はディスクドライブに関し、特に、ハードディスクドライブの効率を改善する技術に関する。
【背景技術】
【０００２】
ホストオペレーティングシステムがストレージデバイスに読み取り要求または書き込み要求を送信するとき、オペレーティングシステム（OS）内の要求タスクは、要求が完了するまでブロックされる。デスクトップ環境においては、一般に、要求動作中に実行可能なその他のタスクがある。
【０００３】
しかし、組み込み機器は、一般に、一度に1つの機能しか実行することができない。統合化ドライブストレージを備えた組み込み機器においては、ホストOSを実行するプロセッサは、ディスクドライブの動作中にアイドル状態にある。逆に言えば、ディスクドライブコントローラのプロセッサにも、かなりのアイドル期間がある。
【０００４】
大部分のディスクドライブコントローラのプロセッサの設計では、応答時間対全帯域幅に重点が置かれている。標準設計基準によると、コマンドを一旦受信したら、ディスクドライブコントローラのプロセッサがその処理を速やかに終了させることがより重視されている。例えば、標準設計基準では、時間とともに実行可能な処理の総量を最大にすることよりも、ディスクドライブ内のアクチュエータの運動を開始することの方がより重要である。その結果、ディスクドライブコントローラのプロセッサは、かなりの量の未使用プロセッサ帯域幅を有する。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
代表的な組み込み機器の環境においては、ホストOSプロセッサが動作している期間と、ディスクドライブコントローラが動作している期間との間には、ごくわずかな重複部分しかない。したがって、ホストOSとディスクドライブコントローラとの間のデータ転送の効率を上げて、コストおよびパフォーマンスの利点を得ることが望ましい。
【０００６】
ブロックアドレスを介してデータにアクセスするストレージデバイスの場合、ストレージデバイスは、所定の読み取り/書き込みアクセスの性質に関する情報を有していない。ストレージデバイスの見地から、すべてのアクセスは等しく生成される。ビデオおよびオーディオのリアルタイムの性質は、ジッタが非常に低い安定したデータレートを要求する。
【０００７】
これらのシステムの多くでは、ストレージデバイスに対するその他のアクセスは同時に発生する。例えば、セットトップボックスでは、ユーザがチャンネルガイドを閲覧している間、同時に映画を再生することができる。映画の要件はリアルタイムであるが、チャンネルガイドの要件はリアルタイムではない。上記ストレージデバイスではこれらの要件は配慮されていないため、この制限に対処するようにシステムを設計しなければならず、しばしば追加のシステムコストの発生またはパフォーマンスの低下を招くことになる。
【０００８】
この制限に対処する試みは、市場においてはその採用に失敗した。この失敗は、ストレージデバイスにかなりのコストアップが発生したことや、あるいはシステム/ストレージデバイス間通信のプロトコルが、規格に対するかなりの変更を要求したことのいずれかの理由によるものである。
【０００９】
したがって、かなりの追加費用を要求することなく、またはシステムまたはストレージデバイスの通信プロトコルに対するかなりの変更を要求することなく、ディスクドライブストレージデバイスにオーディオおよび/またはビデオの多重ストリームを提供させる技術を提供することが望ましい。
【課題を解決するための手段】
【００１０】
本発明の一部の実施形態によれは、ホストオペレーティングシステム（OS）は、ディスクドライブオペレーティングシステムの管理下にあるタスクとして機能する。他の実施形態によると、ホストOSとディスクドライブオペレーティングシステムは、シングルプロセッサ上で実行可能である。プロセッサは、ディスクドライブコントローラのリアルタイム応答特性を管理することができる。本発明は、ホストOSに対する変更を最小限に抑えた、ホストOSとディスクドライブとの間の独特のインタフェースを提供する。本発明のさらに別の実施形態によると、両方のオペレーティングシステムによってアクセス可能な共有メモリサブシステムが提供される。
【００１１】
本発明の他の実施形態によると、ディスクドライブストレージデバイスは、ホストオペレーティングシステム（OS）によって管理される基礎をなすファイルシステムに関するメタデータに対してアクセスおよび応答を行い、ディスクドライブとホストOSとの間のデータ転送を最適化することができる。ディスクドライブは、読み取りおよび書き込みアクセスの性質を特定することができる。その結果、アクセスの優先順位付け、およびアクセスのパフォーマンスの最適化が可能になる。ディスクドライブは、ブロックインタフェースを一切変更することなく、これらの機能を実行することができる。その結果、本発明によるディスクドライブは、既存のシステムの完全互換性互換部品であることが可能である。
【００１２】
本発明のその他の目的、機能、および利点は、以下の詳細な説明および添付図面を考察することによって明らかになる。
【発明の効果】
【００１３】
本発明によれば、ホストオペレーティングシステムに対する変更を最小限に抑え、ホストオペレーティングシステムとディスクドライブとの間におけるアクセスの優先順位付け、およびアクセスのパフォーマンスの最適化が可能になる
【発明を実施するための最良の形態】
【００１４】
＜ディスクドライブ（OS）の管理下のタスクとして実装されるホストオペレーティングシステム（OS）＞
一般に、コンピューティングシステムは、ホストオペレーティングシステム（OS）と、ディスクドライブ用のディスクドライブオペレーティングシステムを含む。ホストOSは、ディスクドライブオペレーティングシステムに対して論理ブロックアドレス（LBA）の要求を発行し、磁気ハードディスクに対するデータの読み取りおよび/または書き込みを行う。ここでは、ホストOSからのこのような要求を、「読み取り/書き込み要求」または「LBA要求」と呼ぶ場合もある。ディスクドライブオペレーティングシステムは、読み取り/書き込み要求を読み取り/書き込みコマンドに変換する。これらの読み取り/書き込みコマンドを実行することによって、ディスクドライブの機械部品（例えば、アクチュエータアームおよび読み取り/書き込みヘッド）を使用して、ディスクに対するデータの読み取りおよび書き込みが行われる。
【００１５】
ディスクドライブオペレーティングシステムとホストオペレーティングシステム（OS）の機能は、ホストOSの管理下でディスクドライブ動作を実行することによって組み合わせることができる。当該ホストOSがリアルタイムオペレーティングシステム（RTOS）ではないと仮定すると、このアプローチは、結果として、ディスクドライブ機能に対する応答時間にとって非決定論的な挙動となるであろう。この結果として得られる挙動は、ドライブ性能を低下させるとともに、サーボ制御が同じプロセッサ上で実行される環境を不安定にする可能性がある。
【００１６】
その代わりに、本発明の実施例では、ディスクドライブオペレーティングシステムのタスクとして、ホストOSに疑似仮想マシンが提供される。ホストOSのタスクは、システムにおいてリアルタイムタスクよりも低い優先度で実行する。この技術によって、一般に、プロセッサの割り込みに応じて、優先順位の高いタスクの実行準備ができているときにホストOSを中断させることができる。ホストOSが主制御装置である場合、ホストOSとディスクドライブオペレーティングシステムの伝統的な役割は逆になる。本発明によるホストOSは、ホスト機能のすべてを実行することができる。これらのホスト機能には、例えば、ディスクドライブオペレーティングシステムに対する読み取り要求および書き込み要求を発行すること、ユーザインタフェース機能を実行すること、ユーザソフトウェアアプリケーションとハードウェアとの相互作用を管理すること、メモリの制御および割り当てを行うこと、命令の処理に優先順位をつけること、入出力装置を制御すること、ネットワークを容易にすること、およびファイルを管理することなどが含まれる。
【００１７】
本発明は、ディスクドライブオペレーティングシステムの管理下における複数のホストオペレーティングシステムの実行を考慮に入れている。このことは、安全なアプリケーションにとって大きな利点がある。ディスクドライブオペレーティングシステムおよびホストOSは、共有プロセッサ上、または別個のプロセッサ上で実行させることができる。
【００１８】
ディスクドライブオペレーティングシステムは、ここでは、主に組み込み機器内のディスクドライブに用いられるリアルタイムオペレーティングシステム（RTOS）の文脈において説明される。しかし、本発明の原理は、リアルタイムオペレーティングシステム以外のディスクドライブオペレーティングシステムに適用できることを理解する必要がある。
【００１９】
本発明の一部の実施形態によれは、ディスクドライブ用のリアルタイムオペレーティングシステム（RTOS）、およびホストオペレーティングシステム（OS）は、コンピューティングシステムにおいて1つのプロセッサ（例えば、マイクロプロセッサまたは中央処理装置）を共有して、２つのオペレーティングシステム間のデータ転送の効率を上げる。図1は、本発明の特定の実施例による、共有プロセッサを備えた組み込み機器の例を示す図である。
【００２０】
図１に示す組み込み機器は、プロセッサ101、磁気ハードディスク104、アクチュエータアーム111、読み取り/書き込みヘッド110、キャッシュメモリ105、および1つ以上の入出力装置106（例えば、キーボード）などを有する。プロセッサ101は、ディスクドライブ用のリアルタイムオペレーティングシステム（RTOS）102、およびホストオペレーティングシステム（OS）103を実行する。リアルタイムオペレーティングシステム102は、ディスク104に対するデータの読み取りおよび書き込みなどを含む、ディスクドライブコントローラの機能を実行する。ホストOS 103は、組み込み機器のその他の機能を実行する。ホストOSとしては、例えば、Linux、Windows（登録商標） CE、Mac OS Xなどが使用可能である。ホストOS 103は入出力装置106とのインタフェースの機能を果たし、プロセッサ101はキャッシュメモリ105との通信を行う。
【００２１】
図２は、本発明の一実施例による、リアルタイムオペレーティングシステムによって制御される、ディスクドライブおよび1つ以上のホストオペレーティングシステムのタスク切り替えを示す図である。リアルタイムオペレーティングシステム（RTOS）201は、プロセッサ内でタスク切り替えを制御する。RTOS 201は、1つ以上のディスクに対するデータの読み取りおよび書き込みを行うための種々のディスクドライブタスクルーチンを切り替えることができる。種々のディスクドライブタスクルーチンには、待ち行列202、ドライブサイド203、実行204、および四角形205によって表されるその他のディスクドライブタスクが含まれる。RTOS 201は、ディスクドライブタスクと、1つ以上のホストオペレーティングシステムを実行する1つ以上の優先順位の低いタスクとの間で切り替えを行うことができる。
【００２２】
RTOS 201は、ホストOS 206、ホストOS 207、およびその他のホストオペレーティングシステム208などの、複数のホストオペレーティングシステムを実行するタスク間の切り替えを行うことができる。ホストOSの観点から、ホストOSは、目標プロセッサの完全な所有権を引き続き有する。RTOSは、ホストOSのタスク切り替えに対する責任を有しており、目標プロセッサの制御に対するホストOSの視点を維持する。
【００２３】
図３は、本発明の一実施例による、プロセッサ上の実行シーケンスの例を示す図であり、共有プロセッサがホストOSおよびディスクドライブのために実行するタスクを、RTOSによって切り替える方法を示す。図３において、共有プロセッサは、ホストOS用のサブタスク#1を実行する。サブタスク#1は、ホストOSのサブタスクである。RTOSが読み取りコマンドを発行するとき、RTOSは、プロセッサにホストOSからディスクドライブへのタスク切り替えを行わせる。ディスクドライブ時間中、プロセッサは、ディスク上の要求データのシークを開始する必要があるタスクを実行する。
【００２４】
シークシーケンスの実行中、RTOSは、プロセッサにディスクドライブタスクからホストOSへのタスク切り替えを行わせて、サブタスク#2を処理する。シークシーケンスが完了するまで、プロセッサは、ホストOS用のサブタスク#2を継続して処理する。その後、RTOSは、プロセッサに、ホストOSのサブタスク#2からディスクドライブタスクへのタスク切り替えを行わせる。ディスクドライブ時間中、プロセッサは、読み取りシーケンスの完了に必要なタスクを実行する。その後、RTOSは、プロセッサに、ディスクドライブタスクからホストOSのサブタスク#1に戻るようにタスクを切り替えさせる。ホストOSサブタスク#1および#2は、単一のホストOSのサブタスクである。
【００２５】
図３は、RTOSが、共有プロセッサに、ホストOSサブタスクの一時停止を行わせて、読み取りコマンドのタスクを実行できることを示す図である。同様に、RTOSは、共有プロセッサに、ホストOSサブタスクの一時停止を行わせて、書き込みコマンドのタスクを実行することができる。図３は、ディスクドライブがシーク動作を実行してディスク上にデータの読み込み（または、書き込み）を行っている間に、RTOSは、共有プロセッサに、ホストOSサブタスクの実行を行わせることができることを示す図でもある。これによって、プロセッサの効率が向上する。
【００２６】
ディスクドライブRTOSは、ホストOSにおける割り込みのシミュレーションとともに、ホストOSのタスク切り替えの責任を有する。ホストOSの観点から、これらの責任は、ホストOSによって完全に所有される共有プロセッサの動作を円滑化する。図４は、本発明の一実施例による、ディスクドライブRTOSを使用してメモリ内の仮想割り込み領域をシミュレートすることができるタスク切り替えプロセスの例を示す。
【００２７】
条件つきステップ401において、現在実行中のタスクはない。ステップ401の間、RTOSは、ホストOSを実行するタスクを実行すべきかどうか決定する。この決定は、RTOSで実行する必要がある優先順位の高いタスクがあるかどうかに基づいて行われる。ホストOSを実行するタスクをRTOSが実行しない場合、ステップ409において、RTOSは別のタスクに切り替える。ホストOSを実行するタスクの実行をRTOSが決定した場合、条件つきステップ402において、RTOSは、ホストOSからの割り込みが保留中であるかどうか判断する（例えば、メモリ内の仮想割り込み領域において）。ホスト割り込みが保留中でない場合、ステップ409において、RTOSは別のタスクに切り替える。
【００２８】
ホストOS割り込みが保留中である場合、条件つきステップ403において、RTOSは、ホストOSにおいて割り込みが有効になっているかどうか判断する。ホストOS割り込みが有効になっていない場合、ステップ409において、RTOSは別のタスクに切り替える。ホストOS割り込みが有効になっている場合、ステップ404において、RTOSは、ホストOSにおいて割り込みのシミュレーションを行う仮想ハードウェアの準備に進む。本発明の一実施例によると、ステップ405において、ドライブコントローラRTOSは、目標プロセッサモードへ切り替えることによって、ホストOSにおける割り込みのシミュレーションを行うことができる。目標プロセッサモードは、プロセッサの動作モードである。
【００２９】
その後、ステップ406において、RTOSは割り込み復帰の準備を行う。ステップ406における割り込み復帰の準備には、ステップ405において切り替えられた目標プロセッサモードと関連付けられたレジスタの修正が含まれる。その結果、適切なデータを含む作業レジスタを用いて、正しい命令で実行が開始されるようになる。
【００３０】
次に、ステップ407において、RTOSは割り込みモードに切り替えて戻る。割り込みモードは、割り込み処理モードの1つにおける実行を意味する。ARMプロセッサ上の割り込みモードに関するプロセッサに特有な例には、IRQおよびFIQが含まれる。なお、割り込みモードに関するこれらの例は、説明のために提供されたものであり、本実施例の適用範囲を限定することを意図したものではない。
【００３１】
次に、ステップ408において、RTOSは、ホストOSタスクのコンテキスト領域でプログラムカウンタを修正して、シミュレーション中の割り込みに対する割り込み処理コードの開始を反映する。仮想ハードウェアを準備した後、ステップ409において、ホストOSはホストOSタスクに切り替える。
【００３２】
図５は、本発明の一実施例による、ホストOS割り込みをシミュレーションするためのRTOSにおいて仮想割り込みを準備するための仕組みの例を示す。始めに、条件つきステップ501において、RTOSは保留中の割り込みがあるかどうか判断する。保留中の割り込みがない場合、コードブロックは終了する。保留中の割り込みがあることをRTOSが検出した場合、条件つきステップ502において、RTOSは、割り込み処理が進行中であるかどうか判断する。割り込み処理が進行中である場合、コードブロックは終了する。進行中の割り込み処理がない場合、ステップ503において、RTOSは優先順位の最も高い割り込みを決定する。その後、RTOSは、ステップ504においてローカル割り込みをクリアして、ステップ505においてホストOS割り込みを設定し、ステップ506において進行中割り込みフラグを「真」に設定する。
【００３３】
図６は、割り込み禁止ビットを再配置したARMプロセッサステータスレジスタを示す図である。ホストOSが、プロセッサの実際の割り込みの無効化を許可されている場合、優先順位の高いタスクによるプロセッサの制御権の獲得を防止することができる。RTOSは、このレジスタを利用して、本発明の一実施例による、プロセッサ内で割り込みを有効化および無効化するホストOSの機能をシミュレートすることができる。この機能は、ホストOSにおける割り込みに使用するロケーション６および７のビットを、プログラムステータスレジスタの未使用部分（ロケーション８および９）にそれぞれ移動した後、ロケーション６および７のビットをクリアすることによって実現することができる。図６に示される説明は、ARMプロセッサのステータスレジスタに特有なものであるが、使用される特定のプロセッサアーキテクチャによって異なる場合がある。
【００３４】
RTOSとホストオペレーティングシステムの両方が同じプロセッサ上で実行される場合、両方ともすべて同じ周辺機器およびメモリにアクセスする。この共有アクセスによって、追加のコストが節約される。なぜならば、パッケージングおよびPCB不動産コストのために、小さなメモリを多重に使用するよりも、組み合わせたより大きなメモリの方が安くすむからである。
【００３５】
伝統的な２つのプロセッサシステムにおいては、ホストOSは、ドライブインタフェースを通じて読み取り要求および書き込み要求を送信する。本発明では、メールボックスシステムを使用して、さらに高速かつ効率的な仕組みが提供される。ホストOSの見地から、ディスクドライブは、通常のドライブのようにアクセスされる。唯一のシステムの変化は、カスタムデバイスドライバである。カスタムデバイスドライバは、RTOSに対するシステムコールを呼び出して、ディスクドライブのファームウェアに読み取り要求または書き込み要求を送信する。受信した要求は、データ転送以外は、ディスクドライブのファームウェアによって通常の要求として処理される。ディスクドライブのファームウェアは、ディスクドライブファームウェアがコマンドタイプによって書き込みまたは読み取りを行うバッファにポインタを渡す。カスタムデバイスドライバは、このポインタを使用して、バッファに対するデータの読み取りまたは書き込みを行い、ホストOSとの間でデータを転送することができる。このプロセスによって、ドライブインタフェース上で通常発生するデータ転送が排除されるため、パフォーマンスが大幅に改善される。システムコールの一部として、要求はドライブの受信待ち行列に置かれる。
【００３６】
＜基礎をなすファイルシステムに関するメタデータに対するディスクドライブのアクセスおよび応答＞
オペレーティングシステムは、一般に、論理ファイルシステムに基づいてデータを編成する。これらのファイルがディスクに書き込まれるとき、データとともに、これらのファイルについて説明するメタデータがディスクに格納される。ファイルのメタデータには、例えば、ファイルサイズ、ファイルタイプ、ファイルアクセス許可、および最終アクセス時間を含めることができる。
【００３７】
本発明の別の実施例によると、ディスクドライブは、ディスクに格納されたユーザデータについて説明するファイルメタデータにアクセスすることができる。ディスクドライブは、このファイルメタデータを使用して、ホストオペレーティングシステムからの読み取り要求および書き込み要求の最適化を実行することができる。ディスクドライブは、データに関する論理ブロックアドレス（LBA）情報の使用に限定されない。ファイルメタデータは、LBAのみによって提供されるよりも多くのユーザデータに関する情報を、ディスクドライブに提供することができる。
【００３８】
本発明では、ディスクドライブは、ファイルメタデータを使用したファイルシステムレベルでのパフォーマンスと優先順位付けの最適化を実行することが許可されている。この最適化は、例えば、標準的なブロックインタフェースを通じて、または共有メモリ領域の有無にかかわらずホストOSおよびディスクドライブOSを実行する共有プロセッサを通じて行うことができる。
【００３９】
本発明の本実施例は、暗号化ファイルによって機能する。ディスクドライブデバイスは、データを復号化して機能させる必要はない。
【００４０】
本発明の本実施例によるシステムは、ストレージデバイスのファームウェアに、読み取り専用アクセスのためにディスクに常駐するファイルシステムをマウントさせることによって実現することができる。この実施例は、各ファイルシステムに使用するカスタムコードを書き込むことによって、またはディスクドライブコントローラ内でホストOSプロセス（Linuxのバージョンなど）を実行することによって、実現することができる。
【００４１】
ファイルシステムをマウントする機能は、通常、ホストOSのために確保されている。本発明の本実施例では、内部バッファの最適化、回転位置による最適化（Rotational Positional Optimization（RPO））、およびその他の最適化を目的とした、ハードディスクに常駐するファイルシステムをマウントするディスクドライブを考慮に入れている。ファイルシステムメタデータに配慮したディスクドライブは、例えば、多数の同時発生的読み取り/書き込みストリームが予想される、サーバ環境またはホームシアタパーソナルコンピュータ（HTPC）において発行される要求に関して、例えば、ハードウェアを最も効果的に利用することができる。これらの両方の環境に対しては、本発明の優れたデータ転送特性をさらに上手く役立てることができる。
【００４２】
いくつかの動作モードでは、要求の優先順位付けなど、ホストOSからのLBA読み取り/書き込み要求の最適化を行うことができる。ディスクに対して読み取りおよび書き込みを行うデータの要求をホストOSが送信するとき、ディスクドライブは、読み取り/書き込み要求のLBAをファイル転送先に変換する。ファイルメタデータが解釈されて、適切な最適化が仕組まれる。例えば、ディスクドライブは、ディスク上に格納されているデータに対していつどこで先行読み取りを行うかを決定して、回転位置による最適化（RPO）およびファイルシステムメタデータを使用して後続の要求を処理することができる。別の例として、ディスクドライブは、ファイルシステムメタデータを使用して、後続の書き込み要求のために書き込みコマンドを実行することができる。
【００４３】
ファイルシステムメタデータには、ファイルタイプ、ファイルサイズ、最終アクセス時間、および物理的位置などの情報を含めることができる。これらの情報を使用して、ディスクドライブは、要求に優先順位を付けたり、先行読み取りまたは先行書き込みを行う後続の要求を選択することができる。例えば、ディスクドライブは、ファイルシステムメタデータを使用して、その他の優先順位の低いファイルよりもビデオファイルまたは音声ファイルへのアクセスを優先させることができる。ファイルシステムメタデータに関するこれらの例は、最適化を実行するためにディスクドライブによって利用可能なファイルシステムメタデータのタイプを限定することを意図するものではない。
【００４４】
別の実施例によると、ディスクドライブによって実行される適切な最適化は、ファイル名から識別することができる。例えば、アクセスが読み取りであり、ファイルがそのファイル名の拡張子またはマジックナンバーによってビデオファイルとして識別される場合、ディスクドライブは、通常よりも大きい内部バッファを割り当てることができる。バッファが一旦割り当てられれば、読み取りが開始される。その一方で、ブロックからファイルへの残りの変換が完了する。この場合、LBAからファイルへの変換を使用して、ファイルの先行読み取りを実行する。
【００４５】
読み取り要求が処理される間、ディスクドライブは、ファイルシステムメタデータを使用して異なる読み取り要求に対応するディスクからのデータの読み取りを選択することができる。後続の読み取り要求を処理する機能は、読み取り/書き込みヘッドがプラッタの表面を移動するときの位置および回転の効率によって実現することができる。または、この機能は、ファイルタイプによって指定される内容の優先順位付けによって実現することができる。本発明は、前述の最適化に限定されるものではない。
【００４６】
本発明によるディスクドライブは、連続した論理ブロックアドレスおよび非連続の論理ブロックアドレスの先行読み取り（および先行書き込み）を行う機能を有する。本発明の実施例によれば、現在の要求が処理されている間、後続の読み取り要求および書き込み要求は、キャッシュヒットとなることが可能になっている。なぜならば、ディスクドライブは、ファイルシステムメタデータを利用して、後続の読み取り/書き込み要求に応じたデータの読み取りおよび書き込みをすでに済ませているからである。その結果、パフォーマンスが大幅に向上する。利用可能なときにキャッシュメモリに格納されているデータにアクセスすることによって、多数の同時ストリームを一度に処理することができる。または、高精細度オーディオおよびビデオなどの、さらに高帯域幅のストリームを使用可能にすることができる。
【００４７】
ビデオファイルの書き込みの場合、ディスクドライブは、ファイルメタデータを使用して、ディスクの全域にわたってLBAを物理的に拡張するかどうかを決定することができる。この場合、保証された帯域幅を現在および後続のデータストリームまで増加させる方法で拡張を行う。LBAは、ディスクの内径および外径におけるデータ転送速度の差を均等にするパターンで、ディスクの全域にわたって拡張することができる。小さな構成ファイルの書き込みを行う場合、例えば、さらに高い優先順位を有するデータストリームの方が優先する場合、ディスクドライブは、当該ファイルをディスクに書き込む前に、内部キャッシュにデータを書き込むかどうかを決定することができる。その後、書き込みヘッドが書き込み位置にあるとき、ディスクドライブは、この小さな構成ファイルをディスクに書き込むことができる。
【００４８】
本発明によるストレージデバイスは、システムレベルで実行される場合よりもはるかに高いレベルのパフォーマンスを提供することができる。その理由は、当該デバイスが、それ自体の内部の幾何学的配置に関する情報を有するからである。当該デバイスは、ファイルメタデータを使用して、マルチストリーム環境におけるファイルの先行読み取りを実行することができる。その結果、ヘッドの次のシーク動作を要求する運動の前に最大量のデータを読み取ることができる。当該デバイスは、RPO（回転位置による最適化）によって、後続の要求に対する先行読み取り動作を実行することもできる。システムレベルでの解決策の場合、そのような情報はない。
【００４９】
別の動作モードでは、書き込みの要求を特定することが可能である。この場合、リアルタイムファイルは、非リアルタイムファイルとは別のハードディスクの領域に置かれる。本発明のこの局面では、読み取り側を大幅に加速することができる。すなわち、要求からの入力LBAを検査する単純な範囲チェックを使用して、読み取り要求が、上記に定義した別個のリアルタイム領域の範囲に入っているかどうかを判断する。
【００５０】
別の実施例によると、標準的なブロック書き込みは、ファイルシステムメタデータを使用して、アイドルモードの間、ファイルごとに再配置することができる。ここに説明される実施例は、本発明の原理を示すために提供された動作モードのいくつかの例であり、本発明の適用範囲を限定することを意図したものではない。
【００５１】
図７は、本発明の一実施例による、ハードディスクドライブのパフォーマンスの最適化を目的とした、ディスクドライブオペレーティングシステムに対するホストOSの読み取り/書き込み要求の解釈および変換を示す図である。ステップ702において、LinuxまたはMicrosoft windowsなどのホストOS 701は、通常の動作の手順において、読み取り/書き込みモードにある1つ以上のファイルシステム711を、ハードディスク710などのストレージデバイスにマウントする。ステップ703に示すように、通常の動作の手順において、ホストOSは、ディスクドライブ712に対して多数の読み取り/書き込み要求を発行する。ディスクドライブ712は、ディスクドライブオペレーティングシステムを含む。ホストOS 701とディスクドライブ712との間のコミュニケーションは、通常、PATA（パラレルATA）、SATA（シリアルATA）、SCSI（Small Computer System Interface）、またはIEEE-1394などの、一般にファイアワイヤとして知られる標準的なデータバスインタフェース704を通じて行われる。
【００５２】
あるいは、ディスクドライブ712は、同様のネットワークインタフェース720および721（イーサネット（登録商標）インタフェースなど）を使用したネットワーク715を通じて、ホストOS 701との通信を行うことができる。ディスクドライブ712は、ネットワーク715を通じて、その他のホストオペレーティングシステム(図示されていない)との通信を行うこともできる。
【００５３】
ステップ705は、読み取り専用モードにある目標ファイルシステムをマウントするディスクドライブ712を示す。読み取り専用モードにある目標ファイルシステムをマウントした後、ディスクドライブは、ファイルシステム内のメタデータにアクセスしたり、メタデータを使用して読み取り/書き込み要求を最適化したりすることができる。
【００５４】
入力される読み取り/書き込み要求を待ち行列に入れることによって、ステップ706において、プロセスは実行を開始する。ステップ707において、待ち行列に入れられた読み取り/書き込み要求は、ファイルメタデータに基づいて、ハードウェアのための最適化済み読み取り/書き込みコマンドに変換される。最適化済み読み取り/書き込みコマンドは、ファイルメタデータおよびRPOに基づいて優先順位を付けた読み取り/書き込みコマンドを含む。
【００５５】
ステップ706および707を実行した後、ステップ708において、ディスクドライブ712は、ディスクドライブのための最適化済み読み取り/書き込みコマンドを含むコマンド待ち行列を生成する。例えば、リアルタイムパフォーマンス特性を必要とするデータストリームの場合、ディスクドライブは、通常よりも大きなバッファを割り当てることによって読み取り要求を最適化することができる。基礎をなすファイルシステムおよびRPOに関する情報に基づいて、ディスクドライブは、異常のある読み取り要求を処理して、または異なる読み取り要求を組み合わせて、1つ以上のファイルのデータ転送を最大限に増加させたり、次のデータブロックの位置を特定するために必要なヘッドの物理的運動の量を最小限に抑えたりすることができる。ディスクドライブは、上記の最適化などのような、多数のその他の読み取り要求の最適化を実行することができる。
【００５６】
別の例として、ディスクドライブは、書き込み要求を、ファイルのリアルタイムステータスに基づいて最適化することができる。ディスクドライブは、基礎をなすファイルシステムおよびRPOに関する情報によって書き込み要求を最適化することもできる。その結果、データストリームを、キャッシュに、またはハードディスク上の隣接する空きスペースの領域に書き込むことができる。これによって、後続のシーク動作が強化される。ディスクドライブは、上記の最適化などのような、多数のその他の書き込み要求の最適化を実行することができる。本発明は、ホストOSの読み取り/書き込み要求を、ブロックストレージデバイスのために優先順位を付けて最適化したコマンドに変換する目的で使用可能な変数によって限定されない。
【００５７】
四角形713は、データを渡すために、ディスクドライブOSとホストOSの両方によって使用することができる共有メモリを示す。上記の共有プロセッサの実施例によると、共有メモリ領域713は、ホストOSおよびディスクドライブOSによって共有されるプロセッサの共有メモリ領域であってもよい。共有プロセッサの実施例においては、共有メモリ領域713は、ブロックデバイスの接続に使用される通常のインタフェース704と比較して、優れたデータ転送パフォーマンス特性を有する。あるいは、共有メモリ領域713は、ディスクドライブコントローラ、およびホストOSを実行する別個のプロセッサによってアクセス可能なメモリ素子であってもよい。
【００５８】
ディスクドライブ712が最適化済みコマンド待ち行列708を実行するため、データを共有メモリ領域713に直接書き込むことができる。ディスクドライブ712は、共有メモリ領域713内のメモリ位置にポインタを渡すことができる。ホストOSは、ディスクドライブによって提供されたポインタを使用して、速やかにデータにアクセスすることができる。ホストOSは、この共有メモリの低待ち時間データ転送特性から大きな利益を得ることができる。
【００５９】
本発明の典型的な実施例についての前述の説明は、図示および説明の目的で行われたものである。したがって、前述の説明は、網羅的であることを意図したものではない。または、前述の説明によって、本発明を、開示される厳密な形式に限定することを意図したものではない。本発明においては、修正の自由度、種々の変更、および代用が意図されている。場合によっては、本発明の機能は、述べられたような対応するその他の機能を使用せずに利用することができる。上記の教授内容の見地から、本発明の適用範囲から逸脱することなく、多数の修正および変更が可能である。本発明の適用範囲は、この詳細な説明によって限定されないことを意図している。
【図面の簡単な説明】
【００６０】
【図１】本発明の一実施例による、ディスクドライブとホストオペレーティングシステムのためにリアルタイムオペレーティングシステムを実行するプロセッサを備えた組み込み機器を示すブロック図である。
【図２】本発明の一実施例による、リアルタイムオペレーティングシステムによって制御される、ディスクドライブおよび複数のホストオペレーティングシステムのタスク切り替えを示す図である。
【図３】本発明の一実施例による、プロセッサ上の実行シーケンスの例を示すタイミンググラフである。
【図４】本発明の一実施例による、リアルタイムオペレーティングシステムを通じてタスクを切り替えるプロセスを示すフローチャートである。
【図５】本発明の一実施例による、ホストオペレーティングシステム内で割り込みをシミュレートするためのリアルタイムオペレーティングシステムにおいて、仮想割り込みを準備するプロセスを示すフローチャートである。
【図６】本発明の一実施例による、割込み禁止ビットを再配置したARMプロセッサステータスレジスタの例を示す図である。
【図７】本発明の一実施例による、ファイルメタデータを使用して、ホストOSコマンドを最適化済みコマンドに変換するディスクドライブの例を示す図である。
【符号の説明】
【００６１】
101…プロセッサ、
102…リアルタイムオペレーティングシステム(RTOS)、
103…ホストオペレーティングシステム(OS)、
104…磁気ハードディスク、
105…キャッシュメモリ、
106…入出力装置、
110…読み取り/書き込みヘッド、
111…アクチュエータアーム。
【図１】
2008135014.tif 000003
【図２】
2008135014.tif 000004
【図３】
2008135014.tif 000005
【図４】
2008135014.tif 000006
【図５】
2008135014.tif 000007
【図６】
2008135014.tif 000008
【図７】
2008135014.tif 000009