2010年1月22日金曜日

SATA LPMって知ってますか?

久しぶりの更新になります。
今回は、SerialATA(以下、SATA)のオプション機能の1つ、「LPM(Link Power Management)」について書きたいと思います。この機能、ご存じない方も多いと思いますが、WindowsVistaからOSの標準サポートが始まっていますし、機器側(HDDやSSD、光学ドライブなど)の対応も進んでいます。(地味な機能なので今後も話題になることはないかと思います)

SATA LPMとは、文字どおり「パワーマネジメント」の機能です。データ転送を行わない時にSerialATAのPHY(物理層)を低電圧状態に移行させ、消費電力を少なくしようというものです。
 制御方法には、「HIPM((Host Initiated Link Power Management)」と「DIPM(Device Initiated Link Power Management)」 の2つが規定されています。HIPMは、ホスト側から省電力状態への移行要求を行う方法。DIPMは、デバイス(HDDやSSDなど)から省電力状態への移行要求を行う方法です。HIPMとDIPMは、どちらか一方のみを使用しても かまいませんし、両方を同時に使用することもできます。このため、両者は、パワーマネジメントの要求を行うのがHostかDeviceかの違いのみで省電力効果などの機能は全く同じです。

省電力状態中のモードには、「Partial」と「Slumber」の2つがあります。両者の違いは、復帰までにかかる時間(レイテンシ)のみで、省電力状態中の消費電力に違いはありません。 Partialの最大復帰時間は、10マイクロ秒。Slumberの最大復帰時間は、10ミリ秒となっています。Slumberの復帰時間は、Partialよりも一桁長いので、 節電効果は、Slumberの方がより大きいことになります。参考までにIntelの昔のレポートでは、HDDでLPMを使用すると300mW~450mWの節電効果が得られるとされていました。

また、SATAでは、LPMを使用する場合のシーケンスが定められており、省電力状態中のモードを変更するためには一定の手順を経る必要があります。たとえば、PartialからSlumberへ移行する場合は、一度、通常の状態に復帰し、その後、Slumberへの移行要求が発行されます。

SATA LPMでは、Partialへは、PMREQ_P、SlumberへPMREQ_Sというリクエストが使用され、復帰にはCOMWAKEというリクエストが使用されます。前述のPartialからSlumberへ移行では、まず、COMWAKEが発行され、これによって機器を通常状態に復帰させます。その後、PMREQ_Sを発行することでSlumberへと移行します。

なお、Slumberへの移行は、Partialを経なければ行えないというわけではありません。最初にSlumberへの要求を行えば、Slumberのみを使うこともできます。ただし、常時Slumberにすると復帰までのレイテンシが長くなり、ストレージの性能が低下する可能性があります。このため、通常は、復帰までのレイテンシが短いPartialへ移行させ、ある程度の時間が経過したらSlumberへと移行する実装が一般的だと思います。また、HIPMとDIPMの両方が有効になっている場合、Partialへの要求は、HIPMでホストから送られ、Slumberへの要求は、逆にDIPMでDeviceから送られるというケースがでてきます(というか、両方を有効にすると、Slumberへの移行は、ほぼこのタイプになると思います)。これは使用上、特に間違った動作ではありません。

次にHIPMやDIPMのメリットについて説明します。
HIPMのメリットは、経過時間を意識することなく、LPMをオンにできることに付きます。HIPMでは、ホスト、つまり、OS側からLPMを制御できますので、たとえば、ファイルの読み出しの完了時や書き込みの完了時など、最終コマンド処理後にすぐさまLPMのリクエストを送ることができます。実際の実装もこのようになっており、HIPMがオンになっていると最終コマンド処理後にLPMの要求が必ず送られてくるような状況です。つまり、HIPMがオンになっていると、ユーザーが知らない間に頻繁にLPMのオン/オフが繰り返されているというわけです。
なお、HIPMは、AHCIモードでのみサポートされます。WindowsVista/7では、OS標準のドライバで標準サポートされています。Intel製のドライバも対応しており、その場合は、WindowsXPでも使用できます。

DIPMのメリットは、実際のコマンド等を処理するハード側ですべての制御を行えることです。DIPMは、コマンド(ATA SET_FEATURESコマンド)をDeviceに送るだけで機能のオン/オフを切り替えることができます。オンにした場合は、Device側で決められた基準に沿って、LPMを要求できます。また、HIPMは、AHCIモードで使用した場合のみ使用できますが、DIPMは、BIOSサポートで使用できる点もあげられます。現在は、どうか知りませんが、とある大手PCメーカーでは、BIOSサポートでDIPMのみを使用していました。

SATA LPMは、地味な機能ですが、ノートPCを中心に現在では多くの製品が使用している省電力機能です。チップセット的には、ICH6M世代から対応が始まっており、AMDのSB600以降でも対応していたはずです。ただ、この機能、ノートPCでは、オンになっていることが一般的ですが、デスクトップでは、BIOSレベルでHIPM/DIPMともに無効になっていることが多くみられるようです。このため、基本、ノートPC向けと言えるかもしれません。

また、デバイスレベルで見た場合、この機能は、無視できないようで、省電力といわれるSSDでも対応していることが一般的です。SSDは、省電力といわれますが、実際は、並列アクセス数の増加によって、ピーク消費電力は、2.5インチのHDDよりも高くなることも珍しくありません。SATA LPMによるSSDの省電力効果は、それほど大きくないと噂された時期もありましたが、実際は、異なるようで、実情は、SATALPMに加え、コントローラ内部の省電力機能を強化することで消費電力を抑えているようです。

次回は、WindowsVista/7やIntelドライバのSATA LPMの設定方法について説明します。

0 件のコメント:

コメントを投稿