(57)【要約】      （修正有）【課題】コンピューティングシステムとディスクドライブ等の大容量記憶デバイスとを統合して、全体の費用および電力を低減する。【解決手段】ＣＰＵ２０５と、ＣＰＵに動作可能に連結されるメモリコントローラと、前記ＣＰＵに動作可能に連結される周辺コントローラ２２０と、共通の電源と、メインメモリ２７５と、周辺コントローラを介してＣＰＵと動作可能に通信するコントローラ２５５等をプリント回路板２８５に搭載する。【選択図】図２
2014182863.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと、
前記ＣＰＵに動作可能に連結されるメモリ管理ユニットと、
前記ＣＰＵに動作可能に連結される周辺コントローラと、
記憶インターフェースを用いて前記周辺コントローラを介して前記ＣＰＵと動作可能に通信する記憶コントローラとを備える、集積回路。
【請求項２】
前記記憶インターフェースは、標準化されている、請求項１に記載の集積回路。
【請求項３】
前記記憶インターフェースは、ＳＣＳＩ、ＳＡＳ、ＳＡＴＡおよびＦＣ、ＵＳＢ  ＵＡＳ、ＳＯＰ／ＰＱＩ、またはＮＶＭｅのうちの１つである、請求項１に記載の集積回路。
【請求項４】
前記周辺コントローラおよび前記記憶コントローラは、前記記憶インターフェースの物理層上で直接通信する、請求項１に記載の集積回路。
【請求項５】
前記周辺コントローラおよび前記記憶コントローラは、前記記憶インターフェースのリンク層上で直接通信する、請求項１に記載の集積回路。
【請求項６】
前記周辺コントローラおよび前記記憶コントローラは、前記記憶インターフェースのトランスポート層上で直接通信する、請求項１に記載の集積回路。
【請求項７】
前記周辺コントローラおよび前記記憶コントローラは、前記記憶インターフェースのアプリケーション層上で直接通信する、請求項１に記載の集積回路。
【請求項８】
大容量メモリと、
集積回路とを備え、
前記集積回路は、
ＣＰＵと、
前記ＣＰＵに動作可能に連結されるメモリ管理ユニットと、
前記ＣＰＵに動作可能に連結される周辺コントローラと、
前記大容量メモリと動作可能に通信し、かつ記憶インターフェースを用いて前記周辺コントローラを介して前記ＣＰＵと通信する、記憶コントローラとを含む、記憶デバイス。
【請求項９】
前記メモリ管理ユニットに動作可能に連結されるメモリデバイス、および前記記憶コントローラに動作可能に連結される第２のメモリデバイスをさらに備える、請求項８に記載の記憶デバイス。
【請求項１０】
前記メモリ管理ユニットに動作可能に連結される単一のメモリデバイス、および前記メモリ管理ユニットに動作可能に連結される前記記憶コントローラをさらに備える、請求項８に記載の記憶デバイス。
【請求項１１】
前記単一のメモリデバイスのＣＰＵメモリ領域への所望されないアクセスから保護し、かつ前記単一のメモリデバイスの記憶コントローラメモリ領域への所望されないアクセスから保護する、セキュリティ対策をさらに含む、請求項１０に記載の記憶デバイス。
【請求項１２】
前記セキュリティは、前記ＣＰＵと前記記憶コントローラとの間での前記単一のメモリデバイスの割り当てを管理するハイパーバイザーによってさらに強化される、請求項１１に記載の記憶デバイス。
【請求項１３】
前記ハイパーバイザーは、前記記憶デバイスのエンドユーザによって更新可能ではない、請求項１２に記載の記憶デバイス。
【請求項１４】
前記周辺コントローラと前記記憶コントローラとの間の通信は、前記共有された単一のメモリデバイスを介してメッセージを受け渡すことによって実行される、請求項１０に記載の記憶デバイス。
【請求項１５】
ＣＰＵと、
記憶インターフェースを用いて前記ＣＰＵと動作可能に通信する、記憶コントローラとを備える、集積回路。
【発明の詳細な説明】
【発明の概要】
【０００１】
コンピューティングシステムおよび記憶媒体コントローラのエレクトロニクス（例えば、ハードディスクドライブまたはソリッドステートドライブエレクトロニクス）の統合が開示される。リソースの共有、記憶インターフェースの除去、および両方に対するファームウェアの実質的な維持も開示される。
【図面の簡単な説明】
【０００２】
【図１】コンピューティングシステムおよび別々の大容量記憶デバイスを示す。
【図２】統合されたコンピューティングシステムおよび記憶媒体コントローラのバリエーションを示す。
【図３】統合されたコンピューティングシステムおよび記憶媒体コントローラの別のバリエーションを示す。
【図４】統合されたコンピューティングシステムおよび記憶媒体コントローラのさらなるバリエーションを示す。
【図５】統合されたコンピューティングシステムおよび記憶媒体コントローラのよりさらなるバリエーションを示す。
【図６】統合のバリエーションを示す。
【図７】別の統合のバリエーションを示す。
【図８】さらなる統合のバリエーションを示す。
【発明を実施するための形態】
【０００３】
コンピューティングシステムは、中央処理ユニット（ＣＰＵ）、ランダムアクセスメモリ（ＲＡＭ）、およびハードディスクドライブまたはソリッドステートドライブ等の大容量記憶デバイスといったいくつかの別個のコンポーネントで構成される。これらのコンポーネントは、個々に設計され、その後、業界全体で合意された（標準化された）記憶インターフェースを利用して共に統合される。例えば、大容量記憶デバイスは、ＳＡＴＡ、ＳＡＳ、ファイバーチャネル、またはＳＣＳＩ等の標準化された記憶インターフェースを介してコンピューティングシステムの残りに通信し得る。
【０００４】
各コンポーネントを個々に設計することは、ソリューション全体の費用および電力を増加させる、ハードウェア設計の非効率性をもたらす。例えば、図１は、大容量記憶デバイス１５０に連結されるコンピューティングシステム１００を示す。コンピューティングシステム１００は、ＣＰＵ１０５、メモリ管理ユニット（ＭＭＵ）を含むメインメモリコントローラ１１０、メインメモリ１１５、周辺コントローラ１２０、ＲＪ４５コネクタ１２５、および電源１３０を備える。ＣＰＵ１０５は、ハーバード、修正ハーバード、フォンノイマン、またはデータフロー等の種々のアーキテクチャのうちの１つを有することができる。ＣＰＵ１０５は、ＣＩＳＣ、ＥＤＧＥ、ＥＰＩＣ、ＭＩＳＣ、ＯＩＳＣ、ＲＩＳＣ、ＶＬＩＷ、ＮＩＳＣ、およびＺＩＳＣ等の種々の命令セットのうちの１つを有することができる。ＣＰＵ１０５は、埋め込み型（例えば、ＡＲＭ）、マイクロコンピュータ（例えば、Ｉｎｔｅｌ  ｘ８６）、ワークステーション／サーバ（例えば、ＨＰ  ＰＡ−ＲＩＳＣ）、ミニ／メインフレーム（例えば、ＩＢＭ  ＥＳＡ／３９０）、および混合コア（例えば、ＩＢＭのＣｅｌｌ）等の種々のＣＰＵのうちの１つであることができる。ＣＰＵ１０５は、中央処理ユニット、デジタル信号プロセッサ、マイクロコントローラ、またはカスタム設計の処理ユニットであることができる。ＣＰＵ１０５は、マルチプロセッサまたは並列プロセッサを含むことができる。
【０００５】
コンピューティングシステム１００は、メインメモリコントローラ１１０および／または周辺コントローラ１２０を備え得る。メインメモリコントローラおよび周辺コントローラのそれぞれの例は、ノースブリッジチップおよびサウスブリッジチップである。ＣＰＵ１０５は、それらのコントローラを備えることができるため、したがって、別々のコントローラは必要とされない。したがって、それらは破線で図解される。メインメモリ１１５は、ＤＲＡＭであることができるが、他の種類のＲＡＭ（例えば、ＳＲＡＭ）または不揮発性メモリ（例えば、ＦＬＡＳＨ）であることもできる。ＲＪ４５コネクタ１２５は、Ｅｔｈｅｒｎｅｔ（登録商標）ケーブルを介して、コンピューティングシステム１００をネットワークに接続するために使用することができる。しかしながら、コンピューティングシステム１００は、無線、同軸ケーブルのような他の種類の通信チャネルを使用することができ、種々の種類の通信プロトコルのうちの１つを使用することができる。電源１３０は、コンピューティングシステム１００の任意または全てのコンポーネントに電圧および電流を提供する。
【０００６】
大容量記憶デバイス１５０は、ディスクドライブとして示され、媒体１７０のデータにアクセスするコントローラ１５５を備える。コントローラ１５５は、メインメモリ１１５と同一または異なる種類のメモリであり得るメモリ１６０に連結される。電源１３０は、大容量記憶デバイス１５０の任意または全てのコンポーネントに電圧および電流を提供する。
【０００７】
コンピューティングシステム１００が、大容量記憶デバイス１５０からデータを取得するとき、大容量記憶デバイス１５０は、最初にメモリ１６０にデータをバッファし得、その後、データを、記憶インターフェース１９０を介してコンピューティングシステム１００に転送し得る。その後、データは、コンピューティングシステム１００のメインメモリ１１５に保存される。記憶インターフェース１９０を介したこの転送は、ハードウェアリソース（例えば、ＡＳＩＣコアダイ領域およびパッドリング領域）および電力の両方を消費するが、より効率的なソリューションで回避し得る。１つの非効率性は、コンピューティングシステム１００と大容量記憶デバイス１５０との間でケーブルを介してデータを伝送するために必要とされる電力である。
【０００８】
１つのそのような効率的なソリューションは、コンピューティングシステム１００のコンポーネントを大容量記憶デバイス１５０と統合することによって達成され、ケーブルを介してデータを伝送するために必要とされる電力等の非効率性を最適化により除去する。図２はこれを説明する。デバイス２００は、ＣＰＵ２０５、メインメモリコントローラ２１０、周辺コントローラ２２０、ＲＪ４５コネクタ２２５、電源２５０、コントローラ２５５、および媒体２７０を備え、それらの全ては、図１に記載されたものと同一であることができる。しかしながら、大容量記憶デバイスとコンピューティングシステムとの統合では、いくつかのコンポーネントは共有され得、全体的な効率を向上させる。第１に、電源２５０は、図１に示される２つの別々の電源の代わりに、全てのコンポーネントに電源を提供する。さらに、メモリ２７５は、図１に示される２つの別々のメモリの代わりに、ＣＰＵ２０５およびコントローラ２５５の両方によって利用される。したがって、デバイスは、より低い電力でかつより費用効率の高いシステムソリューションである。加えて、媒体２７０を除く全てのコンポーネントは、プリント回路板（ＰＣＢ）２８５上に搭載することができる。
【０００９】
図３は、大容量記憶デバイスとコンピューティングシステムのコンポーネントとの統合を説明する。デバイス３００は、ＣＰＵ３０５、メインメモリコントローラ３１０、周辺コントローラ３２０、ＲＪ４５コネクタ３２５、電源３５０、コントローラ３５５、およびメモリ３７５を備え、それらの全ては、図２に記載されたものと同一であることができる。媒体２７０の代わりに、デバイス３００は、ソリッドステート大容量メモリ３９５を備える。大容量メモリ３９５は、例えば、ＦＬＡＳＨ、ＳＴＲＡＭ、ＭＲＡＭ、またはＲｅＲＡＭであることができる。大容量メモリ３９５は、ＳＤ、ＣＦ、ＳＩＭＭ、またはＤＩＭＭ等の着脱可能なメモリであることもできる。
【００１０】
再度、大容量記憶デバイスとコンピューティングシステムとの統合では、少数のコンポーネントを共有することができる。電源３５０は、図１に示される２つの別々の電源の代わりに、全てのコンポーネントに電力を提供する。さらに、メモリ３７５は、図１に示される２つの別々のメモリの代わりに、ＣＰＵ３０５およびコントローラ３５５の両方によって利用される。加えて、大容量メモリ３９５を含む全てのコンポーネントは、プリント回路板（ＰＣＢ）３８５上に搭載することができる。したがって、デバイスは、より低い電力でかつより費用効率の高いシステムソリューションである。
【００１１】
図４は、大容量記憶デバイスとコンピューティングシステムのコンポーネントとの統合を説明する。デバイス４００は、ＣＰＵ４０５、メインメモリコントローラ４１０、周辺コントローラ４２０、ＲＪ４５コネクタ４２５、電源４５０、およびコントローラ４５５を備え、それらの全ては、図２に記載されたものと同一であることができる。デバイス４００は、メモリ／大容量メモリ４６５を備える。メモリ／大容量メモリ４６５は、例えば、ＦＬＡＳＨ、ＳＴＲＡＭ、ＭＲＡＭ、またはＲｅＲＡＭであることができる。メモリ／大容量メモリ４６５は、ＳＤ、ＣＦ、ＳＩＭＭ、またはＤＩＭＭ等の着脱可能なメモリであることもできる。ここで、メモリ／大容量メモリ４６５は、上述のメモリおよび大容量メモリの両方として機能する。
【００１２】
電源４５０のコンポーネント共有に加えて、メモリ／大容量メモリ４６５のメモリ部分も共有される。ここで、メモリ／大容量メモリ４６５は、メモリおよび大容量メモリ部分の両方に使用される同じ種類（例えば、フラッシュ）のメモリであることができる。概して、メモリ／大容量メモリ４６５は、フラッシュまたは磁気媒体のように不揮発性でありながら、ＤＲＡＭ等のメモリ部分と同様のアクセス速度を示すべきである。
【００１３】
コントローラ４５５は、バッファ管理、キャッシングアルゴリズム、コマンドキューイング機能、ならびにエラー検出および訂正等の種々の記憶機能を含むことができる。例えば、正しいデータがメモリ／大容量メモリ４６５から回復されることを確実にすることに専念する相当量の信号処理ハードウェアが、コントローラ４５５内に存在することができる。このハードウェアは、最適な動作のために管理されている不揮発性媒体の特性に密接に連結することができる。ＣＰＵ４０５は、そのような機能を行うためのハードウェア論理を有し得ず、またはそのような機能を最適に行うためのアーキテクチャを有し得ない。さらに、それらの機能のうちのいずれかの除去は、ある用途に対して所望され得ない。例えば、高い整合性のデータが必要な場合、十分最適化されていないエラー回復は許容されないであろう。したがって、コントローラ４５５はデバイス４００に含まれる。
【００１４】
図５は、大容量記憶デバイスとコンピューティングシステムのコンポーネントとの統合を説明する。デバイス５００は、ＣＰＵ５０５、メインメモリコントローラ５１０、周辺コントローラ５２０、ＲＪ４５コネクタ５２５、電源５５０、コントローラ５５５、メモリ５７５、および大容量メモリ５９５を備え、それらの全ては、図３に記載されたものと同一であることができる。電源５５０の共有とともに、コントローラ５５５は、メインメモリ５１０コントローラをＣＰＵ５０５と共有する。これは、データが記憶サブシステムからコンピューティングサブシステムへ移動するとき等、より効率的なＤＲＡＭ割り当てポリシーを提供することができる。より効率的なＤＲＡＭ割り当てポリシーは、データがＤＲＡＭ内の異なる場所へ物理的に移動する必要がないとき、またはソフトウェアポインタのみが交換される必要があるときにも達成することができる。
【００１５】
図６〜８は、種々のＣＰＵおよびコントローラの統合構成を示す。これらのバリエーションは、図２〜５に示され、上述されたデバイスのいずれかに適用することができる。図６は、同一の集積回路６００上に存在するＣＰＵ６０５およびコントローラ６５５を示す。メモリおよび／または大容量メモリもまた、同一の集積回路６００上に存在し得る。この統合に起因して、記憶インターフェース（例えば、図１の１９０）のある態様を除去または修正することができる。例えば、物理記憶インターフェースの管理に関連付けられるハードウェアおよび低レベルソフトウェアのスタックを除去することができ、システム電力を向上させ、複雑性を低減させる。記憶インターフェースのハードウェアおよびソフトウェアのスタックは、より単純なソフトウェアＡＰＩに置き換えられ得る。
【００１６】
より特定の例において、ＳＡＴＡ標準は、物理、リンク、およびトランスポート層を定義する。物理層の一部または全てを除去することができる。この場合、（ＣＰＵ６０５とは別の、またはＣＰＵ６０５の一部の）ＭＭＵのリンク層およびコントローラ６５５のリンク層を共に連結することができ、物理層の除去を可能にする。リンク層もまた除去され得る。それに続いて、トランスポート層が除去され得る。ＭＭＵおよびコントローラ６５５は、その後、アプリケーション層で通信する。これらの層のいずれかの除去は、ＣＰＵで実行している（例えば、オペレーティングシステムの）記憶ドライバの修正も引き起こし得る。また、記憶インターフェースの実際のコマンド構造も、それらの層のいずれかの除去に基づいて、維持、除去、または修正することができる。
【００１７】
加えて、潜在的に、記憶インターフェースは、カスタムまたは非標準化インターフェースであることができる。この一例は、コントローラ６５５のホストインターフェース論理を、ＣＰＵ６０５の関連付けられた論理に連結することができることである。別の例は、単一の共有されたメモリを介して周辺コントローラとコントローラ６５５との間でメッセージを受け渡すことによって、周辺コントローラとコントローラとの間の通信を最初に実行することができることである。
【００１８】
図７は、ＣＰＵ７０５、コントローラ７５５、および任意のメモリ７９０を備えるマルチチップパッケージ（ＭＣＰ）７００を示す。この場合、それぞれは、マルチチップパッケージ７００の基板に結合される別々の集積回路である。代替的に、集積回路は積み重ねられ得る。図８は、ＣＰＵ８０５およびコントローラ８５５を備えるプリント回路板（ＰＣＢ）８００を示す。ＣＰＵ８０５およびコントローラ８５５は、別々のパッケージ内に存在することができる。
【００１９】
上述のように統合されたＣＰＵおよびコントローラに対するファームウェアは、若干の修正を加えると同時に実行することができる。説明のために、図６のＣＰＵ６０５とコントローラ６５５との間の記憶インターフェース上で使用されるデータ転送プロトコルが維持される。ＣＰＵ６０５およびコントローラ６５５は、同一のＤＲＡＭを共有するため、ＤＲＡＭ内でデータを移動することなく、ＣＰＵ６０５とコントローラ６５５との間でソフトウェアポインタを交換することができる。これは、データを移動する必要がないため、時間を節約する。したがって、データ転送プロトコルに対するファームウェアは、そのソフトウェアポインタを含むように若干修正される。ＣＰＵおよびコントローラの両方に対するファームウェアを若干修正することは、それらが、それらの信頼性を実質的に維持することを可能にする。これは、デバイスにおけるＣＰＵおよびコントローラの急速な統合およびテストを可能にする。
【００２０】
上述のように統合されたＣＰＵおよびコントローラに対するファームウェアは、データ記憶プロトコルに実質的な修正を加えると同時に実行することができる。これは、例えば、ＣＰＵ６０５とコントローラ６５５との間の記憶インターフェース上で使用されるデータ転送プロトコルがカスタマイズされた場合に起こり得る。カスタマイズは、ファームウェアへの実質的な修正において具体化されるであろう。修正は、実質的であるが、ファームウェアの特定の機能にのみ影響を及ぼし、ファームウェア全体に影響を及ぼすべきではない。したがって、これは、ファームウェアを組み合わせるよりも、デバイスにおけるＣＰＵおよびコントローラの急速な統合およびテストを可能にするが、上述の若干の修正を用いたデバイスよりも遅い。
【００２１】
上述のように統合されたＣＰＵおよびコントローラに対するファームウェアは、組み合わせることができる。これは、デバイス全体に対するファームウェアを最適化するために行うことができる。また、デバイスは、コンピューティングシステムに対するソフトウェアコードと同一のマイクロプロセッサ上で記憶コントローラファームウェアコードを実行することができる。これは、処理リソースのより効率的な負荷ベースの割り当てを可能にすることによって、ハードウェアリソースを節約する。しかしながら、これは、ファームウェアへのかなり実質的な修正を必要とし得る。１つの結果は、そのように修正されたファームウェアの信頼性は、上述の別々のファームウェアおよびファームウェア修正よりも信頼性が低いことであり得る。その結果、デバイスの統合およびテストは、妨げられ得る。
【００２２】
上述の装置のうちのいくつかでは、コントローラ上で動作する記憶デバイスファームウェアの整合性を維持する際にセキュリティ上の課題が生じ得る。ハイパーバイザーは、コンピューティングシステムソフトウェア（例えば、Ｌｉｎｕｘ（登録商標））とコントローラファームウェアとの間でのリソースの共有を管理するために採用することができ、それぞれが、同一の物理メモリを共有しながらも、他方によりアクセス不可能な保護されたメモリ領域を有することを可能にする。同様に、ハイパーバイザーは、どのコードが、同一の物理ＡＳＩＣ内に存在し得るどのハードウェアリソースにアクセスすることが可能かを管理することができる。例えば、ハイパーバイザーは、システムソフトウェアが、ハードディスクドライブの読み取りチャネル信号処理ハードウェアに関連付けられたハードウェア構成レジスタにアクセスすることを妨げ得るが、一方で、記憶コントローラファームウェアに同一のハードウェアへのアクセスを与え得る。ハイパーバイザーは、好ましくは、記憶デバイスのエンドユーザによって更新可能ではない。
【００２３】
図６のデバイスは、例えば、いわゆる「中間者」攻撃を防ぐことによって、セキュリティを強化することができる。例えば、暗号化されたドライブへの、および暗号化されたドライブからの低レベルデータアクセスは妨害および侵害される可能性がある。システムコントローラおよび記憶コントローラを単一のデバイス（例えば、図６のデバイスＩＣ６００）に統合することによって、これらの種類のセキュリティ違反を防ぐことができる。
【００２４】
記載された装置および方法は、上述の特定の例に限定されるべきではない。記載された装置および方法が適用可能であり得る、種々の修正、同等のプロセス、ならびに多数の構造が容易に明らかになるであろう。例えば、コントローラを除去するために、コントローラの機能性は、ＣＰＵによって行われ得る。
【図１】
2014182863.tif 000003
【図２】
2014182863.tif 000004
【図３】
2014182863.tif 000005
【図４】
2014182863.tif 000006
【図５】
2014182863.tif 000007
【図６】
2014182863.tif 000008
【図７】
2014182863.tif 000009
【図８】
2014182863.tif 000010