(57)【要約】  列に対する親和性を持って論理的な記憶の単位にわたってデータの行をストライピングするための方法、装置およびコンピュータ読取可能媒体が提供される。代替的に、行に対する親和性を持って論理的な記憶の単位にわたってデータの列をストライピングするための方法、装置およびコンピュータ読取可能媒体が提供される。論理スライスのデータが要求されると、あるマッピングによって、どの論理単位がその論理スライスを記憶していそうであるかを判断するための情報が提供されてもよい。一実施例では、データが、その論理スライスを記憶すると予測される論理単位から検索される。他の実施例では、データがいくつかの論理単位から検索され、論理単位にマッピングされないデータは、その検索されたデータから取除かれる。
2013502658.tif 000002
【特許請求の範囲】
【請求項１】
メモリコントローラと、
複数のメモリチップとを含むメモリ装置であって、
前記メモリコントローラは、計算装置から、前記複数のメモリチップにわたってストライピングされる１つ以上のデータブロックに記憶されるデータに対する要求を受取るよう構成され、各データブロックは行の集合を記憶し、前記複数のメモリチップの各メモリチップは不揮発性ランダムアクセスメモリ装置であり、
前記メモリコントローラは、前記要求は前記行の集合における１つ以上の列に記憶される列状データに対するものであると判断するよう構成され、
前記メモリコントローラは、前記１つ以上のデータブロックの各データブロック毎に、
前記各データブロック毎に、前記１つ以上の列の各列を、データブロックの、１つ以上のストライピングされた部分にマッピングするマッピング論理を用いることと、
前記マッピング論理に基づいて、前記複数のメモリチップのうち、前記１つ以上の列がマッピングされる前記１つ以上のストライピングされた部分を記憶する１つ以上のメモリチップを選択することと、
前記１つ以上のストライピングされた部分を、前記１つ以上のメモリチップから、前記データブロックの、１つ以上の他のストライピングされた部分を、前記複数のメモリチップのうちの１つ以上の他のメモリチップから検索することなく、検索することとを実行するよう構成され、前記データブロックの前記１つ以上の他のストライピングされた部分は１つ以上の他の列によってマッピングされ、さらに
前記計算装置に対して、前記列状データを、前記データブロックの前記１つ以上のストライピングされた部分から返すことを実行するよう構成される、メモリ装置。
【請求項２】
前記マッピング論理はデフォルトマッピングおよび調整的マッピングを含み、前記デフォルトマッピングは前記１つ以上の列のうちのある特定の列を前記１つ以上のストライピングされた部分のうちの第１のストライピングされた部分にマッピングし、前記１つ以上のメモリチップの第１のメモリチップは前記第１のストライピングされた部分を記憶し、前記メモリコントローラは、さらに、
前記調整的マッピングから、前記１つ以上の列は前記１つ以上のストライピングされた部分の第２のストライピングされた部分上にオーバフローすると判断すること、および
前記第２のストライピングされた部分を、前記第２のストライピングされた部分を記憶する第２のメモリチップから検索することを実行するよう構成され、
前記データブロックの前記１つ以上の他のストライピングされた部分は、前記第１のストライピングされた部分および前記第２のストライピングされた部分の両方以外のストライピングされた部分であり、前記１つ以上の他のメモリチップは、前記第１のメモリチップおよび前記第２のメモリチップの両方以外のメモリチップであり、前記１つ以上の他の列は前記ある特定の列以外の列である、請求項１に記載のメモリ装置。
【請求項３】
前記１つ以上のストライピングされた部分の各ストライピングされた部分は、前記複数のメモリチップの前記１つ以上のメモリチップ上におけるある論理的な記憶の単位に記憶される、請求項１に記載のメモリ装置。
【請求項４】
各論理的な記憶の単位は、前記複数のメモリチップと前記メモリコントローラとの間における最小転送単位（ＭＴＵ）に基づくサイズのものである、請求項３に記載のメモリ装置。
【請求項５】
前記マッピング論理は、前記メモリコントローラにおいて、前記１つ以上の列のうちのある特定の列を前記１つ以上のストライピングされた部分のうちのある特定のストライピングされた部分にマッピングするデフォルトマッピングを含む、請求項１に記載のメモリ装置。
【請求項６】
前記マッピング論理はデフォルトマッピングおよび調整的マッピングを含み、前記メモリコントローラは、さらに、前記調整的マッピングを、ブロックヘッダを記憶するある特定のメモリ装置から検索することを実行するよう構成される、請求項１に記載のメモリ装置。
【請求項７】
前記マッピング論理は、前記メモリコントローラにおいて、前記１つ以上の列のうちのある特定の列を前記１つ以上のストライピングされた部分のうちのある特定のストライピングされた部分にマッピングするデフォルトマッピングを含み、前記メモリコントローラは、さらに、ブロックヘッダを、前記ブロックヘッダを記憶する第１のメモリチップから検索することを実行するよう構成され、前記マッピング論理は、さらに、前記ブロックヘッダにおいて、前記１つ以上の列は前記特定のストライピングされた部分に当てはまることを示す調整的マッピングを含む、請求項１に記載のメモリ装置。
【請求項８】
メモリコントローラと、
複数のメモリチップとを含むメモリ装置であって、
前記メモリコントローラは、計算装置から、複数のメモリ装置にわたってストライピングされる１つ以上のデータブロックに記憶されるデータに対する要求を受取るよう構成され、前記１つ以上のデータブロックの各々は行の集合を記憶し、前記複数のメモリ装置の各メモリ装置は不揮発性ランダムアクセスメモリ装置であり、
前記メモリコントローラは、前記要求は前記行の集合における１つ以上の列に記憶される列状データに対するものであると判断するよう構成され、
前記メモリコントローラは、前記１つ以上のデータブロックの各データブロック毎に、
前記複数のメモリ装置の各々から、前記データブロックのストライピングされた部分を検索することと、
前記データブロックに対して、前記１つ以上の列の各列を、前記データブロックの、１つ以上のストライピングされた部分にマッピングするマッピング論理を用いることと、
前記マッピング論理に基づいて、前記１つ以上のストライピングされた部分を、前記データブロックの前記検索されたストライピングされた部分から抽出することと、
前記計算装置に対して、前記列状データを、前記データブロックの前記１つ以上のストライピングされた部分から、前記データブロックの前記検索されたストライピングされた部分のうちの１つ以上の他のストライピングされた部分を返すことなく、返すこととを実行するよう構成される、メモリ装置。
【請求項９】
前記ストライピングされた部分の各々は、前記複数のメモリチップのうちのあるメモリチップにおいてある論理的な記憶の単位に記憶される、請求項８に記載のメモリ装置。
【請求項１０】
各論理的な記憶の単位は、前記複数のメモリチップと前記メモリコントローラとの間における最小転送単位（ＭＴＵ）に基づくサイズのものである、請求項８に記載のメモリ装置。
【請求項１１】
前記検索されたストライピングされた部分のうちのある特定のストライピングされた部分はブロックヘッダを含み、前記マッピング論理は、前記ブロックヘッダに記憶されるマッピングを含む、請求項８に記載のメモリ装置。
【請求項１２】
メモリコントローラが、計算装置から、複数のメモリ装置にわたってストライピングされる１つ以上のデータブロックに記憶されるデータに対する要求を受取るステップを含み、各データブロックは行の集合を記憶し、前記複数のメモリ装置の各メモリ装置は不揮発性ランダムアクセスメモリ装置であり、さらに、
前記要求は前記行の集合における１つ以上の列に記憶される列状データに対するものであると判断するステップを含み、
前記１つ以上のデータブロックの各データブロック毎に、
前記各データブロック毎に、前記１つ以上の列の各列を、データブロックの、１つ以上のストライピングされた部分にマッピングするマッピング論理を用いるステップと、
前記マッピング論理に基づいて、前記複数のメモリ装置のうち、前記１つ以上の列がマッピングされる前記１つ以上のストライピングされた部分を記憶する１つ以上のメモリ装置を選択するステップと、
前記１つ以上のストライピングされた部分を、前記１つ以上のメモリ装置から、前記データブロックの、１つ以上の他のストライピングされた部分を、前記複数のメモリ装置のうちの１つ以上の他のメモリ装置から検索することなく、検索するステップとを含み、前記データブロックの前記１つ以上の他のストライピングされた部分は１つ以上の他の列によってマッピングされ、さらに
前記計算装置に対して、前記列状データを、前記データブロックの前記１つ以上のストライピングされた部分から返すステップを含む、方法。
【請求項１３】
前記マッピング論理はデフォルトマッピングおよび調整的マッピングを含み、前記デフォルトマッピングは前記１つ以上の列のうちのある特定の列を前記１つ以上のストライピングされた部分のうちの第１のストライピングされた部分にマッピングし、前記１つ以上のメモリ装置の第１のメモリ装置は前記第１のストライピングされた部分を記憶し、さらに、
前記調整的マッピングから、前記１つ以上の列は前記１つ以上のストライピングされた部分の第２のストライピングされた部分上にオーバフローすると判断するステップ、および
前記第２のストライピングされた部分を、前記第２のストライピングされた部分を記憶する第２のメモリ装置から検索するステップを含み、
前記データブロックの前記１つ以上の他のストライピングされた部分は、前記第１のストライピングされた部分および前記第２のストライピングされた部分の両方以外のストライピングされた部分であり、前記１つ以上の他のメモリ装置は、前記第１のメモリ装置および前記第２のメモリ装置の両方以外のメモリ装置であり、前記１つ以上の他の列は前記ある特定の列以外の列である、請求項１２に記載の方法。
【請求項１４】
前記１つ以上のストライピングされた部分の各ストライピングされた部分は、前記複数のメモリ装置の前記１つ以上のメモリ装置上におけるある論理的な記憶の単位に記憶される、請求項１２に記載の方法。
【請求項１５】
各論理的な記憶の単位は、前記１つ以上のメモリ装置と前記メモリコントローラとの間における最小転送単位（ＭＴＵ）に基づくサイズのものである、請求項１４に記載の方法。
【請求項１６】
前記マッピング論理はデフォルトマッピングおよび調整的マッピングを含み、さらに、前記調整的マッピングを、ブロックヘッダを記憶するある特定のメモリ装置から検索するステップを含む、請求項１２に記載の方法。
【請求項１７】
前記マッピング論理は、前記メモリコントローラにおいて、前記１つ以上の列のうちのある特定の列を前記１つ以上のストライピングされた部分のうちのある特定のストライピングされた部分にマッピングするデフォルトマッピングを含み、さらに、ブロックヘッダを、前記ブロックヘッダを記憶する第１のメモリチップから検索するステップを含み、前記マッピング論理は、さらに、前記ブロックヘッダにおいて、前記１つ以上の列は前記特定のストライピングされた部分に当てはまることを示す調整的マッピングを含む、請求項１２に記載の方法。
【請求項１８】
メモリコントローラが、計算装置から、複数のメモリ装置にわたってストライピングされる１つ以上のデータブロックに記憶されるデータに対する要求を受取るステップを含み、前記１つ以上のデータブロックの各々は行の集合を記憶し、前記複数のメモリ装置の各メモリ装置は不揮発性ランダムアクセスメモリ装置であり、さらに、
前記要求は前記行の集合における１つ以上の列に記憶される列状データに対するものであると判断するステップを含み、
前記１つ以上のデータブロックの各データブロック毎に、
前記複数のメモリ装置の各々から、前記データブロックのストライピングされた部分を検索するステップと、
前記データブロックに対して、前記１つ以上の列の各列を、前記データブロックの、１つ以上のストライピングされた部分にマッピングするマッピング論理を用いるステップと、
前記マッピング論理に基づいて、前記１つ以上のストライピングされた部分を、前記データブロックの前記検索されたストライピングされた部分から抽出するステップと、
前記計算装置に対して、前記列状データを、前記データブロックの前記１つ以上のストライピングされた部分から、前記データブロックの前記検索されたストライピングされた部分のうちの１つ以上の他のストライピングされた部分を返すことなく、返すステップとを含む、方法。
【請求項１９】
前記ストライピングされた部分の各ストライピングされた部分は、前記複数のメモリ装置においてある論理的な記憶の単位に記憶される、請求項１８に記載の方法。
【請求項２０】
前記検索されたストライピングされた部分のうちのある特定のストライピングされた部分はブロックヘッダを含み、前記マッピング論理は、前記ブロックヘッダに記憶されるマッピングを含む、請求項１８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
この発明はデータベース管理に関し、より特定的には、データを物理メモリに記憶するためのシステムおよび方法に関する。
【背景技術】
【０００２】
背景
テーブルデータは、従来、図形および概念の両方において、二次元であるものとして見られる。たとえば、以下のサンプルテーブルは複数の従業員に関するデータを含む。
【０００３】
【表１】
2013502658.tif 000003
【０００４】
しかしながら、コンピュータメモリに記憶されると、このデータは一次元の値のストリングとして記憶されることになる。テーブルの値を記憶するための第１の技術は行優先志向と称され、それは、第１の行のすべての値を記憶し、次いで次の行の値を記憶し、たとえば、「…１２３４；ジョン；７５０００；財務；１２３５；トム；６５０００；財務；１２３６；ケイト；８５０００；法務…」となる。テーブルの値を記憶するための第２の技術は列優先志向と呼ばれ、それは、第１の列のすべての値を記憶し、次いで、第２の列の値を記憶し−「…１２３４；１２３５；１２３６；ジョン；トム；ケイト；７５０００；６５０００；８５０００；財務；財務；法務…」などとなる。換言すると、テーブルからのデータは、列タイプ（つまり列優先）または行タイプ（つまり行優先）のいずれかである記憶フォーマットにおいて記憶されてもよい。
【０００５】
記憶されたデータを検索する際には、データは、ハードディスクドライブなどのような永久メモリからブロックの単位におけるキャッシュのような短期メモリに移動され、そこにおいては、ブロックは３２Ｋなどの固定されたサイズであってもよい。永久メモリにおいてシーケンスで記憶されるデータを検索する際には、短期メモリに転送される必要があるブロックの数は最小限にされる。たとえば、上記のテーブルが行優先フォーマットに記憶される場合には、従業員１２３４の記録を検索することは、永久メモリにシーケンスで記憶されるデータを検索することを含む（つまり「１２３４；ジョン；７５０００；財務」）。したがって、そのデータは、すべて１ブロックで含まれるか、または数ブロックにわたるだけでありそうである。しかしながら、平均給与を計算する機能が行優先フォーマットに記憶されるデータにおいて実行されるとすると、その機能はテーブルに記憶されるすべての給与を検索しなければならないことになるが、それらはシーケンスでは記憶されてはおらず、したがって、必要とされる従業員記録を検索するよりも多くのデータのブロックを短期メモリに転送することを必要とする。
【０００６】
上記のテーブルが列優先フォーマットにおいて記憶される場合には、この筋書きは逆転される。給与データはシーケンスで記憶されており（「７５０００；６５０００；８５０００」）、平均給与を判断することは、数ブロックのデータを短期メモリに転送することを必要とするのみということになる。しかしながら、従業員一人一人のまとまった記録はシーケンスでは記憶されないことになり、したがって、数多くのデータのブロックの転送を必要とする。
【０００７】
多数のデータのブロックを転送することは、わずか数個のデータのブロックを転送するよりも、より時間がかかり、かつより資源集中的である。したがって、上記の平均給与動作は、列優先フォーマットにおいて記憶されるデータにおいての方が、より迅速に、かつより少ないシステム資源で完了されるであろうが、従業員記録の検索は、行優先フォーマットに記憶されるデータにおいての方が、より迅速に、かつより少ないシステム資源で実行されるであろう。データベース設計者は、最も頻繁に実行されることになる動作のタイプに基づいて、好ましい記憶技術を選択することができるが、いずれのフォーマットもすべてのタイプの動作を効率的に実行することはできないことになる。したがって、当該技術分野においては、列優先記憶技術および行優先記憶技術の両方の恩恵を組合せるデータ記憶技術に対する要求が存在する。
【０００８】
このセクションに記載されるアプローチは、追求されるかもしれないアプローチではあるが、以前に構想または追求されたことがあるアプローチでは必ずしもない。したがって、そうではないと示されるのでなければ、このセクションに記載されるアプローチのいずれも単にそれらのこのセクションにおける包含により先行技術として適格である、と仮定されるべきではない。
【図面の簡単な説明】
【０００９】
【図１】例示的フラッシュメモリモジュールを示す。
【図２Ａ】例示的なオープンＮＡＮＤフラッシュインターフェイスグループコネクタを示す。
【図２Ｂ】例示的なオープンＮＡＮＤフラッシュインターフェイスグループコネクタを示す。
【図３】内部フラッシュチップ階層の一例である。
【図４】ここに開示される技術と関連して用いることができる例示的コンピュータシステムを示す。
【発明を実施するための形態】
【００１０】
詳細な説明
この発明を、同様の参照番号は同様の要素を示す添付の図面の図において、限定的にはでなく、例示的に説明する。
【００１１】
以下の記載においては、説明のため、多数の具体的な詳細を、この発明の十分な理解を与えるために述べる。しかしながら、この発明はこれらの具体的な詳細なしに実施されてもよいことは明らかである。他の例では、周知の構造および装置が、ブロック図において、この発明を不要に不明瞭にすることを回避するために、示される。
【００１２】
概要
列状スライスに対する親和性を伴って論理的な記憶の単位（ここにおいては「ＬＵＮ」とも称される）にわたって行優先データをストライピングするための方法および記憶装置が提供される。代替的に、行スライスに対する親和性を伴って論理的な記憶の単位にわたって列優先データをストライピングするための方法および記憶装置が提供される。列状スライスのデータがホスト装置によって記憶装置に対して要求されると、記憶装置におけるメモリコントローラは、マッピング論理を用いて、どの論理単位がその列状スライスを記憶していそうであるかを判断する。メモリコントローラと記憶チップとの間のデータＩ／Ｏ（「入力および／または出力」）を低減する一実施例では、その列状スライスを記憶していると予測される論理単位からデータが検索される。メモリコントローラとホスト装置との間のＩ／Ｏを低減する別の実施例では、いくつかの論理単位からデータを検索し、その列状スライスにはないデータは、その検索されたデータから除去される。
【００１３】
マッピング論理は、コントローラによって、データを記憶および検索するよう用いられてもよく、マッピング論理は、列状スライスを論理単位にマッピングする任意のハードウェアまたはプログラミングされたソフトウェアマッピングを含んでもよい。一実施例では、マッピング論理はデータブロックに特化されている。換言すれば、異なるデータブロックに対して異なるマッピングが提供されてもよい。一例においては、マッピングは、ブロックに対するブロックヘッダを記憶する論理単位に記憶され、メモリコントローラはそのマッピングをその論理単位から検索する。一実施例においては、メモリコントローラは、メモリにおいて、またはメモリコントローラ上のハードウェアにおいて実現される、列状スライスの、論理単位へのデフォルトマッピングを用いる。メモリコントローラは、デフォルトマッピングを用いて、データを、デフォルトで列状スライスを記憶する論理単位およびデフォルトでブロックヘッダを記憶する論理単位から、並列して検索すべきであると判断する。この実施例においては、このブロックヘッダは、要求される列状スライスのさまざまな部分が他の論理単位に記憶されているかどうかを判断するのに用いられる、列状スライスの相対的サイズなどのような、追加的な調整的マッピング情報を与える。デフォルト論理単位が列状スライス全体を含む場合には、その要求を満たすさらなるデータ検索は行なわれない。
【００１４】
フラッシュ記憶装置
一例では、フラッシュの複数ＮＶメモリチップなどのような、不揮発性（ＮＶ）記憶ドライブシステムがデータを記憶する。一例として、図１は例示的フラッシュドライブの概略図を示す。このフラッシュドライブは、フラッシュメモリコントローラ１０１と、複数のフラッシュメモリチップ１０２とを含む。複数のフラッシュメモリチップ１０２は、ドライブ毎により高い記憶容量を達成するよう用いられ得る。
【００１５】
図１の例においては、フラッシュメモリコントローラ１０１はＨＯＳＴシステムアダプタ１０４にバス１０３を介して接続される。このバスは、たとえば、ＳＡＳまたはＳＡＴＡなどのような差動インターフェイスを伴う高速シリアルバスであるかもしれない。高速シリアルケーブル敷設は、記憶ボックス配線を単純化し、より細い配線のため、記憶部封入体内においてよりよい空気の流れを与え、よりコンパクトなＰＣＢフットプリントを有し、並列配線間のクロストークを回避し得る。ＨＯＳＴシステムは、フラッシュメモリコントローラ１０１および記憶チップ１０２を含むフラッシュメモリ装置におけるデータの記憶および検索のためにフラッシュメモリコントローラ１０１に命令を送るようＨＯＳＴシステムアダプタ１０４を用いるよう構成されるＰＣ（「パーソナルコンピュータ」）などのような計算装置である。
【００１６】
論理的な記憶の単位
一実施例においては、内部のフラッシュチップ階層（たとえば図３参照）によって、フラッシュチップを、可変数の完全に並列なＬＵＮ（論理単位番号）３０１に区分する。すべてのＬＵＮは、フラッシュチップをフラッシュコントローラに接続する１つのバスを共有する。別の実施例では、各論理的記憶単位は、フラッシュチップなどのような異なる物理的記憶単位に対応する。一実施例では、各ＬＵＮは、これも並列動作可能な（しかしながらある制限があり、たとえば、ＯＮＦｉ２．０は現在のところはインタリーブされる読出を規定していない）可変数の「インタリーブ」３０３にさらに細分される。内部のフラッシュチップ階層におけるこの柔軟性は、フラッシュ特性における可変性をさらに増す。
【００１７】
図３はターゲットメモリ編成の一例を示す。この場合においては、２つの論理単位があり、そこにおいては、各論理単位は２方向のインタリーブされるアドレスをサポートする。装置は１つ以上のターゲットを含む。ターゲットは１つのＣＥ♯信号によって制御される。ターゲットは１つ以上の論理単位（ＬＵＮ）内に編成される。論理単位（ＬＵＮ）は、独立してコマンドを実行しステータスを報告することができる最小単位である。具体的には、別々のＬＵＮが、任意のコマンドシーケンスにおいて、並列して動作してもよい。たとえば、ページプログラム動作をＬＵＮ０上において開始し、次いで、その動作の完了前に、読出コマンドをＬＵＮ１上において開始することが許可可能である。一実施例においては、ＬＵＮは少なくとも１つのページレジスタとフラッシュアレイとを含む。一実施例では、ページレジスタの数は、そのＬＵＮに関してサポートされる、インタリーブされる動作の数に依存する。一実施例では、フラッシュアレイは、ある数のブロックを含む。
【００１８】
フラッシュドライブのためのパラレルインターフェイス
フラッシュドライブのための数多くのパラレルインターフェイスは、高速シリアルインターフェイスを超える大きな性能利点を提供しはしない。たとえば、ＯＮＦｉ（オープンＮＡＮＤフラッシュインターフェイスグループ）は、フラッシュシステムのための新しいパラレルコネクタを規定しているが、それは、現世代３ＧｂｐｓＳＡＴＡを超える大きな利点を有さず、それどころか、次世代６ＧｂｐｓＳＡＴＡよりも低速である。レガシーＯＮＦｉインターフェイスは４０ＭＢ／ｓに定格化され、第１世代は約１３３ＭＢ／ｓに定格化され、第２世代は約２６６ＭＢ／ｓに定格化され、第３世代は約４００ＭＢ／ｓに定格化される。新しいパラレルＯＮＦｉコネクタ規格を有することに対する第１の目的は、したがって、大量消費者（ノートブックまたはデスクトップ）ＰＣに対する規格化であるように思われ、新たなまたはより高速な記憶システムインターフェイスに対してではないように思われる。
【００１９】
例示的ＯＮＦｉコネクタを図２Ａおよび図２Ｂに示す。このＯＮＦｉコネクタは、既存のメモリコネクタを活用し、大きなツール化コストを回避し、電気的検証を再使用し、低コストおよび高速ＴＴＭ（「時間対市場」）を確実にする。ＯＮＦｉコネクタおよびモジュールは、ＰＣプラットフォームにおけるＮＡＮＤの広く行き渡った使用のための、鍵となる構築ブロックである。ＯＮＦｉ２．０ソース同期データインターフェイスは、スケーラブルな、上位互換性があり、ＮＡＮＤデバイスにＤＬＬを有さない。
【００２０】
パラレルインターフェイスが、（フラッシュドライブ対ＨＯＳＴアダプタバスにおけるすべての帯域幅ボトルネックが除去される点まで）高速シリアルインターフェイスの性能を有意に凌がない限り、シリアルインターフェイスとパラレルインターフェイスとの間の差異は、この開示の目的に対しては関係がない。ある例示的な記憶インターフェイスはこの世代の３Ｇｂｐｓまたは次世代６ＧｂｐｓＳＡＴＡ／ＳＡＳに匹敵する。
【００２１】
データストライピング
ディスクとＨＯＳＴシステムとの間において高い帯域幅を達成するために、記憶アレイは従来よりストライピング技術を用い、そこにおいては、論理的に隣接するデータのチャンクを複数のディスクにわたって分割する。十分に大きな単位においてデータを読出すホストアプリケーションに対しては、組合されたディスク帯域幅が利用可能である。しかしながら、組合されたディスク帯域幅は、記憶パイプ（「記憶バス」）、ホストコントローラ論理、ホストメモリバスなどにおけるボトルネックによって制限されるかもしれない。
【００２２】
記憶アレイと同様に、複数のメモリチップを伴うフラッシュドライブシステムは、データストライピングを用いて、論理的に隣接するアプリケーションデータのチャンクを複数のメモリチップにわたって分割し、増大されたＨＯＳＴ対フラッシュメモリ帯域幅を、ＨＯＳＴシステム上で動作するアプリケーションに対して提供してもよい。
【００２３】
異なるデータストライピングのアプローチは、メモリチップ、内部のオン・ザ・ドライブ・バスおよび外部の記憶バスの数ならびにタイプが固定される、所与のＨＷフラッシュドライブ構成（つまりハードウェアに基づく暗号化を伴うフラッシュドライブ）に対して、劇的に異なる性能特性をもたらす結果となり得る。
【００２４】
フラッシュデバイス上におけるストライピング
同じデータストライピングのアプローチは、異なるＨＷフラッシュドライブシステムにおいて劇的に異なる性能特性をもたらす結果となり得る。したがって、フラッシュドライブにおけるデータストライピングは、典型的には、フラッシュ技術／ベンダ依存型である。
【００２５】
たとえば、ＮＡＮＤメモリチップに対するローインターフェイス、外部のチップパッケージングおよび内部のフラッシュチップ階層に対するＯＮＦｉ２．０規格においては、５つの異なるフラッシュチップパッケージが規定され、（ＴＳＯＰ−４８、ＷＳＯＰ−４８、ＬＧＡ−５２、ＢＧＡ−６３およびＢＧＡ−１００）、ピンアウトは、チップベンダにわたる相互運用性のために固定される。データバス幅は８ビットと１６ビットとの間で柔軟性がある。２０Ｍｈｚから６６Ｍｈｚの範囲の、６つの非同期タイミングモードおよび４つのソース同期タイミングモードがある。ならびに、１つの１６ビットバスをデュアルの８つのバスに分割すること、およびソース同期動作におけるＤＤＲ（ダブルデータレート）モードに対する規定がある。これらのバスパラメータのみで、＞６Ｘ可変性を、チップ対コントローラ帯域幅等式に導入し得る。
【００２６】
ＯＮＦｉとは対照的に、ＳＤ（セキュアデジタル）カード規格は、６ワイヤ外部カードバス（クロック、コマンドおよび１−４ワイヤデータバス）までを、５０Ｍｈｚまでの可変タイミングとともに、およびさまざまな動作に対する最大（つまりタイムアウト）値を、規定する。このＳＤ規格はＯＮＦｉよりも概してより単純ではあるが、ＳＤカード性能特性は典型的にはより制御可能ではなく、挙動はＯＮＦｉ準拠フラッシュチップの挙動より予測不可能である。
【００２７】
最小転送単位
数多くのフラッシュチップ標準規格またはトレンドが共有しているように思われる１つの特色は、読出転送が最小転送単位（ＭＴＵ、セクタ、ブロックまたはページとも称される）の倍数で行なわれるということである。一例では、最小転送単位長は５１２バイトである。他の実施例では、ＭＴＵ長はそれよりも大きいかまたは小さくてもよい。最小転送単位は、要求−応答バスプロトコルの「おしゃべりであること」を隠すことができ、ＨＯＳＴアプリケーション、またはＨＯＳＴシステム上において動作するアプリケーションが、データアクセスにおけるリファレンスの局所性を利用することを可能にする。同じことが、実際に、ＤＲＡＭ対ＣＰＵメモリインターフェイスに対してさえも当てはまる。ＣＰＵは、典型的には、キャッシュラインサイズ転送、たとえば１転送に付き６４〜１２８バイト、で動作する。
【００２８】
ＭＴＵアクセスのレイテンシ（読出要求コマンドの終わりとデータバス上に現われるＭＴＵの最初のビットとの間におけるクロックサイクル数として規定される）は、デバイス、技術およびパッケージに特定的である。読出コマンドをフラッシュチップに送るのに必要なクロックサイクル数は、さらに、たとえば、コマンドバスが相対的に細く、読出要求が相対的に長い場合に、カウントされてもよい。いくつかの例では、コマンドは十分に短く、バスは、読出コマンド長が全体のＭＴＵアクセスレイテンシにおいて些細であるよう、十分に幅広い。最初のＭＴＵアクセスレイテンシの後、ＭＴＵは、フルデータバス速度で転送される。
【００２９】
記憶および検索におけるボトルネック
別の共通の特色は、外部フラッシュチップインターフェイス規格（たとえばフォームファクタ、バスコマンドおよびバスタイミング）は頻繁には変更されないということであるように思われる。それらの規格は、しかしながら、増大しつつあるチップ密度ならびに並列性（ＬＵＮ）および「インタリーブ」の度合いにおける可変性に対する明示的な規定を含む傾向がある。フラッシュドライブキャパシティ増大に対する利用者の要求は、したがって、オン・ザ・ドライブ・バスおよび／またはドライブ対ＨＯＳＴバスにおけるボトルネックに至る結果となることが予期され得、なぜならば、たとえば、限られた数の、所与のフォームファクタのチップのみが、典型的な３．５″ディスク封入体にフィットし得るからである。ドライブ単位のチップ数に対する制限は、チップ対フラッシュコントローラバスの数および組合されたチップ対フラッシュコントローラ帯域幅における制限に変換される。
【００３０】
データベース管理システムにおいては、データはテーブルに記憶され、テーブルは図３のブロック３０２のようなデータブロックに記憶される。フルテーブルスキャン動作によって、テーブルブロックが、一度に、Ｎ個の隣接するデータブロックからなる集合で読出される（たとえば３２Ｋのデータブロックサイズ、および１つの集合においてＮ＝３２個のブロックは、１ＭＢのシーケンスでの読出となる結果となる）。
【００３１】
複数チップ（およびチップ内における複数の並列ＬＵＮなど）を利用するために、１ＭＢの（アプリケーションの観点から）隣接するデータを、フラッシュドライブにおいて多数の並列単位にわたってストライピングしてもよい。
【００３２】
データフォーマットを意識しない（つまり物理的な）データストライピング技術が多くある。たとえば、６４個の並列フラッシュ単位を与えられるとして、データは、ビット（たとえば、第１のビットは第１のチップに行き、第２のビットは第２のチップに行き、…６４番目のビットは６４番目のチップに行き、次いでそのパターンが繰返す）、バイト、ワードなど、１６ｋ単位まで（１ＭＢ読出においては、６４チップ構成）でストライピングされ得、または全くストライピングされなくてもよい。
【００３３】
ある十分な物理的データストライピング技術は、フラッシュドライブ内において利用可能な並列性を利用するが、フラッシュチップからホストシステムに転送される必要があるデータの量を低減しはしない。バスのうち、フラッシュチップとＨＯＳＴ  ＣＰＵとの間において横切らなければならない任意のバスがボトルネックである場合、増大した並列性は性能改善をもたらす結果とはならず（または考えられ得る性能の恩恵はほんの部分的にのみ実現化される）、ストライピングは効果的ではない（かまたは部分的な効果のみを有する）。
【００３４】
データのスライスに対する親和性を伴ってデータをストライピングする
データ管理システムにおいては、フルテーブルスキャンは、典型的には、データベース列の部分集合を（選択されたすべての列が１つの考えられ得る部分集合である状態で）選択する。Ｃ列を有するテーブルの場合、フルテーブルスキャンにおける考えられ得る部分集合の数は２∧Ｃであり、それらのわずか１つが、「すべての列が選択された」ケースである。テーブル列のある部分集合を選択するテーブルスキャンの場合には、テーブルデータからなるある部分集合をフラッシュチップからＨＯＳＴ  ＣＰＵに転送する必要がある。
【００３５】
一実施例においては、行優先フォーマットに記憶されるデータベースブロックは、さまざまなブロックヘッダ、テーブル行および行列を行内に含む。行優先フォーマットは、リファレンスアクセスプロパティの十分な局所性を与え、効率的なテーブルインデックス付けを可能にし、列優先フォーマットは、行優先フォーマットとは異なる、それら自体のトレードオフの集合を有する。たとえば、列優先フォーマットは、いくつかの特別化されたリサーチおよび商業製品、たとえばオラクル（登録商標）・エクスプレスおよび他のオラクル（登録商標）製品において用いられる。いずれのフォーマットも、ここに開示される技術に従って用いられてもよい。それらの技術の明確かつ簡潔な説明を与えるため、列に対する親和性を伴ってデータをストライピングすることにより行優先フォーマットにデータを記憶することを参照して、ある例を示す。ここで用いられるとおりでは、「行」という語は、「列」に対して垂直な任意のデータのスライスを含み、「列」という語は、「行」に対して垂直な任意のデータのスライスを含む。換言すれば、「行」および「列」が垂直なデータのスライスを記載する限りにおいて、「行」は「列」と置き換えられてもよく、およびその逆であってもよい。したがって、記載される例を用いて、行に対する親和性を持ってデータをストライピングすることによって列優先フォーマットにデータを記憶してもよく、または列に対する親和性を持ってデータをストライピングすることにより行優先フォーマットにデータを記憶してもよい。
【００３６】
ある行優先フォーマットにおいては、テーブルデータを記憶するデータブロックは、所与のフルテーブルスキャンが必要とする列、およびその所与のフルテーブルスキャンに対して必要とされない列の両方を含む。同様に、ある列優先フォーマットにおいては、テーブルデータを記憶するデータブロックは、所与のフルテーブルスキャンが必要とする行、およびその所与のフルテーブルスキャンに対して必要とされない行の両方を含む。
【００３７】
技術独立型ストライピング
我々のアプローチの技術は、行記憶におけるデータブロックのある特別な表現を導入し、そこにおいては、列は、フラッシュＭＴＵ（最小転送単位）サイズの単位に和合される。さまざまな実施例において、それらの技術は以下を与える：
ａ）フラッシュコントローラにおけるＳＭＡＲＴスキャン投影の、非常に単純な、フラッシュ技術／ベンダ独立型実現例。フラッシュコントローラにおいて行なわれるスマートスキャン投影は、フラッシュコントローラからＨＯＳＴ  ＣＰＵに転送される必要があるＭＴＵの数を低減し、フラッシュコントローラより上方向のすべてのバスに対する要件を低減する；および／または
ｂ）多数のフラッシュ技術／ベンダ依存型ＳＭＡＲＴスキャン最適化であり、そこにおいては、ＭＴＵのある部分集合のみがフラッシュチップからフラッシュコントローラに転送され、フラッシュチップをフラッシュコントローラに接続するローカルバス、フラッシュチップおよびフラッシュコントローラそれ自体に対する要件を低減する。
【００３８】
フルテーブルスキャン動作がこれらの資源のうちの任意のものにおいて妨害される場合には、ここに論じられるさまざまなアプローチを実施することが、性能改善をもたらす結果となり得る。
【００３９】
データが行優先フォーマットに記憶される一実施例においては、ブロックは、「ブロックフレーム」および「列データ」に論理的に分割される。列データは、さらに、列毎に１個のスライスで、複数の列状スライスに分割される。ブロックフレームはさまざまなブロックヘッダ（キャッシュヘッダ、トランザクションヘッダなど）を含む。一実施例においては、ブロックフレームに記憶されるあるブロックヘッダは、列を論理的な記憶の単位にマッピングするマッピング情報を含む。列状スライスは「垂直」列状スライス（たとえば＜長さ，値＞の対からなるシーケンス）を含む。
【００４０】
論理的な列状スライスはＭＴＵの集合にマッピングされる。
一実施例においては、上記のａ）を達成するために、マッピングはフラッシュ／ベンダ技術独立型である。たとえば、ＭＴＵサイズのみを考慮してマッピングを実施してもよい。
【００４１】
一実施例においては、上記のｂ）を達成するために、マッピングはフラッシュ／ベンダ技術依存型である。たとえば、ＭＴＵサイズおよび複数のフラッシュチップにわたる物理的なデータのストライピングの両方を考慮してもよい。
【００４２】
１つのブロックをある既知の数の固定長ＭＴＵにマッピングすることは、各々５１２バイトの６４個のストライプにわたる６３列テーブルストライピングに対する３２Ｋテーブルブロックの非限定的な例によって説明されてもよい。
【００４３】
この例においては、ストライピング処理は、組合されたブロックフレームスペース要件および集合体列スライス要件をすべての６３個の列に対して計算することによって始まる。これは、６４個の負でない数からなる集合であり、それらの和は、３２７６８（３２Ｋ）未満かそれに等しい。この例では、その和は、通常は３２Ｋよりも小さく、なぜならば、ブロックは、典型的には、それらにおいていくらかの量の空きスペースを有するからである。
【００４４】
この例においては、６４個の数は、ブロックフレームスライスに記憶される。選択肢として、これらの６４個の２バイト整数を記憶するための１２８バイトが、そのブロックにおいて、データ挿入時間に予約された。別の実施例では、余剰のスペースはそのブロックにおいて利用可能であり、なぜならば、０個の空きバイトを伴う十分にロードされたブロックは稀であるためである。たとえば、１２８バイトは３２Ｋブロックの０．４％であり、これは、どちらにせよ、有意な記憶オーバヘッドを課しはしない。
【００４５】
この例で続けると、すべての６４個のスライスは、次いで、シーケンスで、ブロックフレームで始まって、１つのものが別のものに続き、シーケンス状の６４個の５１２バイトストライプに、次のスライスをその一次ストライプにおいて開始することが３２Ｋをオーバフローしない場合には次のスライスはその一次ストライプと整列される（パディングされる）ように構成される親和性／パディング規則で、書込まれる。他の態様では、次のスライスをその一次ストライプにパディングする代わりに、次のスライスは前のスライスに続いてもよい。たとえば、次のスライスは次のストライプにおいて前のスライスにすぐ続いてもよい。
【００４６】
このマッピングは、その単純さのため選択された、以下の図によって説明される。任意の他の「回復可能な」和合化されたマッピングを代わりに用いることもできる。
【００４７】
【数１】
2013502658.tif 000004
【００４８】
この図においては、ブロックフレーム（Ｆで示される）は、第１のＭＴＵサイズ化された単位を部分的に満たす。第１のスライス（「ｘ」で示される）はパディングされる。第１の列状スライス（「１」で示される）は、その一次マッピング位置で開始し、次の２つのストライプにオーバフローする。列２および列３（「２」および「３」で示される）に対する列状スライスはそれらの一次位置（既に列１に取られている）においては開始することができず、したがって、それらはシーケンスで続く。列３と列６１との間におけるどこか（「Ａ」で示される）において、パディングおよび一次マッピングは再び可能となり、最後の３つの列（６１、６２、６３）は、それらの対応の一次ストライプにマッピングし、それら一次ストライプに完全に当てはまる。
【００４９】
このようにスライスをＭＴＵサイズ化されたストライプにマッピングすることは、フラッシュコントローラにおける非常に単純な投影実現例を可能にする。ブロックフレームにおける６４個の数を見ることによって、フラッシュコントローラは、ＭＴＵサイズ化されたスライスのうちどれが所与のＳＭＡＲＴスキャンによって必要とされないかを判断し、これらの不必要なストライプをＨＯＳＴに送ることを回避することができる。
【００５０】
この特別なブロック表現は、ブロックデータをレイアウトする、ある十分に等価な態様である。１つの実施例では、２つの表現間における高速変換が常に可能であるのは、６４個の２バイト数を保持するよう、あるブロックにおいてスペースがある場合である。先に言及されたように、このスペースは、挿入時間に予約することができるか、またはまさに偶然にそのブロックに存在してもよい。存在するブロックが、（たとえばデータベースシステムの前のバージョンによってフォーマット化／挿入される）１２８の空きバイトを有さないような珍しい場合においては、その例外ブロックをそれの元の形式において記憶することができ、例外があるという事実は、ブロックフレームヘッダにおけるある特別なビットによって示すことができる。一実施例では、スペアのビットが、例外を示すよう、ある３２Ｋのブロックにおいて常に存在する。
【００５１】
一実施例では、メモリコントローラは、複数のメモリチップにわたってストライピングされる行データのブロックから列データに対する要求を受取る。メモリコントローラは、メモリチップから、データの最小転送単位などのような情報を検索する。メモリコントローラは、検索された情報のブロックヘッダに記憶されるマッピングにアクセスして、データのうちの１つ以上の部分が要求された１つ以上の列を記憶すると判断する。１つの例では、データのうちの１つ以上の部分が、１つ以上のメモリチップから受取られたが、１つ以上の他のメモリチップからは受取られず、データのうちの１つ以上の他の部分が、１つ以上の他のメモリチップから受取られた。マッピングに基づいて、メモリコントローラは、データのうちの１つ以上の他の部分をフィルタ処理して出し、ホスト装置に対し、要求された１つ以上の列がマッピングされるデータの部分のみを返す。
【００５２】
技術依存型ストライピング
技術依存型マッピングは、上で説明されたマッピングに対する向上である。さまざまな実施例において、これらの技術は以下を含む：
１）  ＳＭＡＲＴスキャンに対して、フラッシュドライブシステムにおいて、すべてのチップから並列性を達成する；および／または
２）  フラッシュチップとフラッシュコントローラとの間において移動されなければならないＭＴＵの数を低減する。
【００５３】
一実施例では、あるフラッシュドライブは、フラッシュチップにわたる物理データストライピングの何らかの形式を用いる。一例においては、「ストライピングなし」は、ストライピングの別の特別な形式として考慮される。一実施例では、ストライプの数、それらのサイズ、およびフラッシュチップ／ＬＵＮ／インタリーブに対するストライプの具体的な割当ては、フラッシュ／ベンダ技術依存型である。ストライプの数は、データアクセスタイプの混合に対するフラッシュドライブの最適な全体性能に基づいて選択されてもよい。
【００５４】
一実施例では、デフォルトマッピング論理がメモリコントローラ上にある。このデフォルトマッピング論理は、１つ以上の列を、当該１つ以上の列のためにデータを記憶すると予測される論理単位にマッピングする。デフォルトマッピング論理は、ブロックヘッダを記憶するメモリチップから検索される調整的マッピングによって補われてもよい。たとえば、デフォルトマッピングは、要求された列を記憶するかもしれない１つ以上の論理単位を予測したかもしれず、ブロックヘッダは、列が、実際に、予測された１つ以上の論理単位に記憶されるかどうかを示してもよい。一例では、ブロックヘッダは、列サイズを記憶して、列データが１つの論理単位から他の論理単位にオーバフローするかどうかを示す。
【００５５】
一実施例では、ストライピングは物理論理的であり、そこにおいては、データの物理的ストライピングは変更されない。換言すると、物理的ストライピングが３２Ｋのブロックデータをある数のチップにわたって分散させる場合、ある位置においては、一実施例においては、物理論理的ストライピングの結果、同じストライプが同じフラッシュチップの集合において用いられる。一実施例では、物理的ストライピングアプローチとは異なって、ストライプの内容を再配置して、さまざまな読出時間ＳＭＲＴスキャン最適化を可能にする。
【００５６】
一実施例では、物理論理的ストライピングは、物理的データストライピングを変更するというより積極的なアプローチよりも単純性の点である利点を有し、なぜならば、物理論理的ストライピングは、概して、物理的のみのストライピング法より悪くなることは決してないからである。一実施例では、ある物理的ストライピングが最適に選択される。この実施例に従うと、最悪の場合には、全く同じストライプの集合が、物理論理的ストライピングがないのと全く同じ順序で読出されて、劣化が全くないことを保証することができる（が、この場合においては恩恵も全くない）。すべてのデータベースアクセスが、論理的ストライピングから理論的に恩恵を受け得るスマートスキャンであるわけではない。したがって、さまざまな実施例は、非スマートスキャン動作を劣化させはしない。物理的ストライプ配置に従うことは、これを達成する１つの単純な態様である。
【００５７】
物理論理的ストライピングを、上記と同様に、６３列テーブルにアクセスする、ＳＭＡＲＴスキャンの一例によって示す。一実施例では、所与のフラッシュ／ベンダ技術に対して選択される物理的ストライピングは、３２Ｋのシーケンス状のデータを、フラッシュドライブにおいてフラッシュチップにおいて６４個の並列単位にわたって、チップ毎に１つのＭＴＵで分散させる。
【００５８】
この例においては、１つの３２Ｋのデータブロック内において、マッピングは同じままであり、−−フレーム、続いてＣ１、Ｃ２．．．、Ｃ６３である。連続する３２Ｋのデータベースブロックの場合、列状スライスをＭＴＵにマッピングすることは、以下の図にあるように、誘導された「位相シフト」でなされる。
【００５９】
【数２】
2013502658.tif 000005
【００６０】
示されるように、「Ｆ」はブロックフレームスライスマッピングを示し、数字１、２、３、４および５は列状スライス１、２、３などの一次マッピングを示し、文字Ａ、ＢおよびＣは対応するように列状スライス６１、６２および６３の一次マッピングを示す。一実施例においては、テーブルの列は６４個のフラッシュチップに対応し、ある列内のＭＴＵはあるチップ内にシーケンスである。
【００６１】
この例においては、次の集合の３２個のブロックに対して、誘導されたシフトパターンが、３２個の３２Ｋブロックからなる最初の集合と同様に繰返す。誘導された位相シフト値は、すべての一次列ＭＴＵをすべての並列チップ（ＬＵＮ）にわたって分散させるよう用いられる。この物理論理的ストライピング例は、技術依存型のさまざまな読出時間最適化を斟酌する。
【００６２】
列♯１にアクセスする例示的ＳＭＡＲＴスキャン、１ＭＢのシーケンスのデータブロック（３２個の３２Ｋブロック）の処理は以下の態様で進行する。アルゴリズムの第１のステップにおいては、一次の３２のブロックフレームストライプが３２個の異なるフラッシュチップから並列に転送される（位相シフトされたストライピングは、ブロックフレームが異なるチップにマッピングされることを保証する）。同時に、他の３２個のチップは、一次ＭＴＵを、必要とされる列１のために転送している。
【００６３】
一実施例では、列１が、ブロックフレームスライスにおける組合された列長さを見ることによって判断され得るように、完全に一次スライス上にある場合には、読出されたアルゴリズムは第１のステップの後に終結する。この例においては、列状ストライピング技術は、フラッシュチップとフラッシュコントローラとの間において移動されるデータの量を３２Ｘ分低減する。
【００６４】
一実施例においては、列が二次オーバフロースライスにオーバフローする場合には、読出は、すべてのオーバフロースライスが検索されるまで、継続する。検索されたデータはホストに送られる。このオーバフローの例では、フラッシュチップとフラッシュコントローラとの間において移動されるデータの量における低減は３２Ｘ未満であるが、依然として容易に当該の桁数にあり得る。たとえば、オーバフローが、単一のオーバフローのみである場合には、１６Ｘ低減が、フラッシュチップとフラッシュコントローラとの間において転送されるデータの量において、他の例における３２Ｘの代わりに達成されてもよい。
【００６５】
この例においては、どのようなストライプが検索される必要があるか、およびどのようにして要求された列がそれらの一次ストライプにマッピングするかによって、列状ストライピング技術は、フラッシュチップとフラッシュコントローラとの間におけるローカルバスがボトルネックである場合には、１．０（改善なし）から３２Ｘの間の性能改善比をもたらす結果となってもよい。
【００６６】
一実施例においては、上記のＳＭＡＲＴスキャン読出最適化が（たとえばレイテンシが大き過ぎるため）所与のフラッシュ技術に適用可能でない場合には、ＭＡＸ列サイズに基づく異なる最適化が用いられる。時として、列サイズは、まさに、たとえばオラクル（登録商標）ＤＡＴＥ、ネイティブフロート／ダブルおよび固定された文字（たとえば文字（３））列での場合にあるように公知である。その場合、たとえば、６３列テーブルにおいて列１〜１０にアクセスするＳＭＡＲＴスキャンでは、最初の１０列において組合されたＭＡＸ長を知っていることは、そのスキャンによって必要とされるＭＴＵの部分集合を制限することを許してもよい。異なる位相シフト戦略をこの例において用いることができ、その技術に対するチップにわたるＭＴＵレイアウトを、ＭＡＸ列サイズに基づくＭＴＵ制限を伴うプレフィックスＳＭＡＲＴスキャンに対して最適化する。
【００６７】
６４並列チップ／５１２バイトストライピング例においては、１６個のＭＴＵの位相シフトを、示されるように、毎４ブロック後に行なってもよい。
【００６８】
【数３】
2013502658.tif 000006
【００６９】
この位相シフト例はすべてのフラッシュチップからのシーケンスでの転送長を増大させ、この場合においてはＭＴＵアクセスレイテンシを低減する。一実施例においては、位相シフト例は、フラッシュチップ並列性の恩恵を得る。
【００７０】
ＭＴＵの部分集合をフラッシュコントローラからＨＯＳＴに返すことは、データベースシステムはＭＴＵの部分集合によって形成される「部分的」ブロックを取扱わなければならないことを意味する。これはいくつかの選択肢を残す。１つの選択肢においては、ＭＴＵの部分集合は、部分的な行優先ブロックに再度組合せられ、その後、そのブロックは、さらなる処理のために、リレーショナルデータベース管理システムに与えられる。他の選択肢においては、リレーショナルデータベース管理システムは、ベクトル化された列状処理技術を選択肢的に利用して、列状ＭＴＵを直接取扱う。
【００７１】
前者のＭＴＵ再組合せの場合においては、１つの実施例では、フラッシュコントローラそれ自体がプログラミングされるかまたは他の態様で論理的に構成されてＭＴＵ再組合せを実行する。ＭＴＵ再組合せは、さらに、ＨＯＳＴ  ＣＰＵにおいてなされてもよく、またはフラッシュコントローラとＨＯＳＴ  ＣＰＵとの間において最も適切なように分割されてもよい。
【００７２】
一実施例においては、行記憶フォーマットから和合された  −  列状ＭＴＵへのブロック変換は、大抵、フラッシュコントローラが、ＭＴＵサイズおよびフラッシュチップにわたる物理的ストライピングなどのような、必要な情報だけをＨＯＳＴに晒してそれを行なうよう、ＨＯＳＴ  ＣＰＵにおいて行なわれる。別の実施例では、行記憶フォーマットから和合された  −  列状ＭＴＵへのブロック変換は、全体的にフラッシュコントローラにおいて行なわれるか、またはＨＯＳＴ  ＣＰＵとフラッシュコントローラとの間において適切に分割される。
【００７３】
フラッシュコントローラとＨＯＳＴ  ＣＰＵとの間における作業区分選択肢にはさまざまな賛否がある。より多くの作業をＨＯＳＴ  ＣＰＵにおいて行なうことは、ホスト上の可視のＣＰＵオーバヘッドに変換し得る。他方、フラッシュコントローラは、ＨＯＳＴよりもプログラミングおよびアップグレードがより困難であり得る。
【００７４】
一実施例においては、フラッシュコントローラにおいてＳＭＡＲＴスキャンをサポートすることは、記憶バスコマンド拡張の使用を巻込む。大抵の記憶コマンドシステムは、ベンダ／アプリケーション特化コマンドを実現するよう何らかの機構を確保している。
【００７５】
ベンダ特化コマンドを実現するひとつのスキームは、ベンダ／アプリケーション特化通信に対して、たとえばドライブキャパシティを超えるハイアドレスなど、ブロックアドレスの範囲を確保することである。一実施例においては、このスキームはすべての記憶プロトコルに対してあまねく適用可能である。ＨＯＳＴによる特別なブロックアドレスに対する書込は、フラッシュコントローラによってベンダ特化コマンドとして解釈され得、ＨＯＳＴによるこれらのアドレスからの読出は、フラッシュコントローラによってスマートスキャン読出要求として解釈され得る。
【００７６】
データに対する要求に応答する
一実施例においては、メモリコントローラは、複数のメモリチップにわたってストライピングされる行データのブロックから列データに対する要求を受取る。たとえば、その要求は、行データのデータブロックから１つ以上のデータの列を選択するコマンドを含んでもよい。他の例では、その要求は、要求される列を特定するメタデータを、それら列において実行されるべき動作を特定することなく含む。メモリコントローラは、あるマッピングにアクセスして、メモリチップそれら自体またはメモリチップの論理単位の点で識別されてもよい１つ以上のメモリ装置が要求された列データを記憶すると判断する。
【００７７】
一実施例においては、メモリコントローラは、ブロックヘッダに決定論的にマッピングされるあるメモリ装置、および要求された列データを保持すると予測される１つ以上のメモリ装置から、並列に、データのＭＴＵにアクセスする。ブロックヘッダを読出して、要求される列データの全体が、要求される列データを保持すると予測されるメモリ装置から検索される情報に記憶されるかどうかを判断する。要求される列データの全体が、要求される列データを保持すると予測されるメモリ装置から検索される情報に記憶される場合には、メモリコントローラは、その要求される列データを、ホスト装置に対し、他のメモリ装置から他のデータを検索したり返したりすることなく、返す。
【００７８】
ブロックヘッダが、要求される列データは１つ以上の他のメモリ装置にオーバフローする旨を示す場合には、メモリコントローラは、要求される列データの残りを、１つ以上の他のメモリ装置から検索する。一実施例においては、メモリコントローラは要求される列データを複数のメモリ装置から組立て、その要求される列データを、ホスト装置に対し、要求されるデータの列を記憶すると予測されるかまたは知られているメモリ装置以外の他のメモリ装置から他のデータを検索したり返したりすることなく、戻す。
【００７９】
ハードウェア概要
ある実施例に従うと、ここに記載される技術は１つ以上の特殊用途計算装置によって、またはそれに関連して実現される。一例においては、あるフラッシュメモリモジュールは、ＨＯＳＴ計算装置に対してデータを送り、ＨＯＳＴ計算装置からデータおよびコマンドを受取る記憶装置である。このＨＯＳＴ計算装置は、データ記憶コマンドおよびデータ検索コマンドをフラッシュメモリモジュールに送るよう構成される。それら特殊用途計算装置は、それらの技術を実行するようハードワイヤードであってもよく、またはそれらの技術を実行するよう永続的にプログラミングおよび／またはオンザフライで再プログラミングされてもよい１つ以上のアプリケーション特化集積回路（ＡＳＩＣ）またはフィールドプログラマブルゲートアレイ（ＦＰＧＡ）などのようなデジタル電子装置を含んでもよく、またはファームウェア、メモリ、他のストレージもしくは組合せにおけるプログラム命令に従ってそれらの技術を実行するようプログラミングされる１つ以上の汎用ハードウェアプロセッサを含んでもよい。そのような特殊用途計算装置は、さらに、それらの技術を達成するようカスタムプログラミングを伴う、カスタムハードワイヤード論理、ＡＳＩＣまたはＦＰＧＡを組合わせてもよい。特殊用途計算装置は、デスクトップコンピュータシステム、ポータブルコンピュータシステム、携帯型装置、ネットワーク化装置、またはそれらの技術を実現または利用するようハードワイヤードおよび／またはプログラム論理を組込む任意の他の装置であってもよい。
【００８０】
たとえば、図４は、コンピュータシステム４００を例示するブロック図である。コンピュータシステム４００は、情報をやりとりするためのバス４０２または他の通信機構と、バス４０２に結合され、情報を処理するためのハードウェアプロセッサ４０４とを含む。ハードウェアプロセッサ４０４はたとえば汎用マイクロプロセッサであってもよい。
【００８１】
コンピュータシステム４００は、バス４０２に結合され、プロセッサ４０４によって実行されるべき命令および情報を記憶するための、ランダムアクセスメモリ（ＲＡＭ）または他のダイナミック記憶装置などの主メモリ４０６も含む。主メモリ４０６は、プロセッサ４０４によって実行されるべき命令の実行中に一時的変数または他の中間情報を記憶するためにも使用されてよい。そのような命令は、プロセッサ４０４にとってアクセス可能な非一時的記憶媒体に記憶されると、コンピュータシステム４００を、それらの命令に指定される演算を実行するようカスタマイズされる特殊用途マシンにする。
【００８２】
コンピュータシステム４００は、さらに、バス４０２に結合され、プロセッサ４０４のために静的情報および命令を記憶するためのリードオンリメモリ（ＲＯＭ）４０８または他の静的記憶装置を含む。磁気ディスクまたは光ディスクなどの記憶装置４１０が、情報および命令を記憶するために設けられバス４０２に結合される。
【００８３】
コンピュータシステム４００は、コンピュータユーザに情報を表示するための、陰極線管（ＣＲＴ）などのディスプレイ４１２にバス４０２を介して結合されてもよい。アルファベット数字および他のキーを含む入力装置４１４が、プロセッサ４０４に情報およびコマンド選択を通信するためにバス４０２に結合される。他のタイプのユーザ入力装置は、マウス、トラックボールまたはカーソル方向キーなどのカーソル制御４１６であり、プロセッサ４０４に方向情報およびコマンド選択を通信し、かつディスプレイ４１２上でカーソル移動を制御する。この入力装置は、典型的には、装置が平面における位置を特定することを可能にする、第１の軸（たとえばｘ）および第２の軸（たとえばｙ）の２つの軸において２つの自由度を有する。
【００８４】
コンピュータシステム４００は、コンピュータシステムとの組合せでコンピュータシステム４００を特殊用途マシンにするかまたはプログラムする、カスタマイズされたハードワイヤード論理、１つ以上のＡＳＩＣもしくはＦＰＧＡ、ファームウェア、および／またはプログラム論理を用いて、ここに記載される技術を実現してもよい。ある実施例に従うと、ここに記載される技術は、コンピュータシステム４００にコマンドをフラッシュメモリモジュールに送らせるよう、プロセッサ４０４が主メモリ４０６に含まれる１つ以上の命令の１つ以上のシーケンスを実行すること応答して、コンピュータシステム４００により用いられる。そのような命令は、記憶装置４１０などの別の記憶媒体から主メモリ４０６に読込まれてもよい。主メモリ４０６に含まれる命令のシーケンスの実行により、プロセッサ４０４は、ここに記載された処理ステップを行なう。代替的実施例では、ソフトウェア命令の代わりに、またはこれと組合わせて、ハードワイヤード回路系が用いられてもよい。
【００８５】
ここで用いられる「記憶媒体」という用語は、マシンをある特定の態様で動作させるデータおよび／または命令を記憶する任意の非一時的媒体のことを指す。そのような記憶媒体は、不揮発性媒体および／または揮発性媒体を含み得る。不揮発性媒体は、たとえば、記憶装置４１０などの光ディスク、磁気ディスク、またはフラッシュメモリモジュールを含む。揮発性媒体は、主メモリ４０６などのダイナミックメモリを含む。記憶媒体の一般的な形態は、たとえば、フロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、ソリッドステートドライブ、磁気テープ、または任意の他の磁気データ記憶媒体、ＣＤ−ＲＯＭ、任意の他の光学データ記憶媒体、孔のパターンを備える任意の物理的媒体、ＲＡＭ、ＰＲＯＭ、およびＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、ＮＶＲＡＭ、任意の他のメモリチップまたはカートリッジを含む。
【００８６】
記憶媒体は、伝送媒体とは区別されるが、それとの関連で用いられてもよい。伝送媒体は、情報を記憶媒体間で転送することに加わる。たとえば、伝送媒体は、バス４０２を含むワイヤを含む、同軸ケーブル、銅線および光ファイバを含む。伝送媒体は、無線通信および赤外線データ通信の際生成されるものなど、音波または光波の形もとり得る。
【００８７】
さまざまな形態の媒体が、１つ以上の命令の１つ以上のシーケンスをプロセッサ４０４に搬送し実行するのに関係し得る。たとえば、命令は、最初に遠隔コンピュータの磁気ディスクまたはソリッドステートドライブ上に担持され得る。遠隔コンピュータは、命令をそのダイナミックメモリにロードし、モデムを用いて電話線を介して命令を送信することができる。コンピュータシステム４００に局在するモデムは、電話線でデータを受取り、赤外線送信機を用いてデータを赤外線信号に変換することができる。赤外線検出器が、赤外線信号で搬送されるデータを受信することができ、適切な回路系が、データをバス４０２に与えることができる。バス４０２は、データを主メモリ４０６に搬送し、プロセッサ４０４は命令をそこから検索し実行する。主メモリ４０６によって受取られた命令は、任意で、プロセッサ４０４によって実行される前または後のいずれかに記憶装置４１０上に記憶されてもよい。
【００８８】
コンピュータシステム４００は、バス４０２に結合される通信インターフェイス４１８も含む。通信インターフェイス４１８は、ローカルネットワーク４２２に接続されるネットワークリンク４２０に結合する双方向のデータ通信を提供する。たとえば、通信インターフェイス４１８は、データ通信接続を対応するタイプの電話線に与えるよう、統合サービスデジタル網（ＩＳＤＮ）カード、ケーブルモデム、衛星モデムまたはあるモデムであってもよい。別の例として、通信インターフェイス４１８は、データ通信接続を互換可能なローカルエリアネットワーク（ＬＡＮ）に与えるよう、ＬＡＮカードであってもよい。ワイヤレスリンクが実現されてもよい。任意のそのような実現化例において、通信インターフェイス４１８は、さまざまな種類の情報を表わすデジタルデータストリームを搬送する電気信号、電磁信号または光信号を送信および受信する。
【００８９】
ネットワークリンク４２０は、典型的には、１つ以上のネットワークを介してデータ通信を他のデータ装置に与える。たとえば、ネットワークリンク４２０は、ローカルネットワーク４２２を介してホストコンピュータ４２４またはインターネットサービスプロバイダ（ＩＳＰ）４２６によって操作されるデータ機器への接続を与えてもよい。ＩＳＰ４２６は、次いで、現在通常「インターネット」４２８と呼ばれているワールドワイドパケットデータ通信ネットワークを介してデータ通信サービスを提供する。ローカルネットワーク４２２およびインターネット４２８はどちらも、デジタルデータストリームを搬送する電気信号、電磁信号または光信号を使用する。さまざまなネットワークを介する信号と、コンピュータシステム４００へおよびこれからデジタルデータを搬送する、ネットワークリンク４２０上および通信インターフェイス４１８を介する信号とは、伝送媒体の例示の形である。
【００９０】
コンピュータシステム４００は、ネットワーク、ネットワークリンク４２０および通信インターフェイス４１８を介して、プログラムコードを含む、メッセージを送信しかつデータを受信することができる。インターネットの例では、サーバ４３０は、インターネット４２８、ＩＳＰ４２６、ローカルネットワーク４２２および通信インターフェイス４１８を介してアプリケーションプログラムのための要求されたコードを送信するかもしれない。
【００９１】
受取られたコードは、受取られたときにプロセッサ４０４によって実行されてもよく、および／または後の実行のために記憶装置４１０もしくは他の不揮発性記憶部に記憶されてもよい。
【００９２】
前述の明細書において、この発明の実施例を、実現例ごとに異なってもよい数多くの具体的な詳細を参照して記載した。したがって、この発明が何であるか、および何が出願人によってこの発明であるよう意図されるかを唯一かつ排他的に示すものは、この出願から、具体的な形で出る、任意の後の訂正を含む請求項の組である。そのような請求項に含まれる文言に対してここに明示的に述べられるすべての定義は、請求項において用いられるそのような文言の意味を支配することになる。したがって、請求項に明示的に記載されない限定、要素、特性、特徴、利点および属性は、その請求項の範囲をいかようにも限定すべきではない。明細書および図面は、したがって、限定の意味ではなく例示的な意味にみなされるべきものである。
【図１】
2013502658.tif 000007
【図２Ａ】
2013502658.tif 000008
【図２Ｂ】
2013502658.tif 000009
【図３】
2013502658.tif 000010
【図４】
2013502658.tif 000011
【手続補正書】
【提出日】平成24年2月22日(2012.2.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
メモリコントローラと、
複数のメモリチップとを含むメモリ装置であって、
前記メモリコントローラは、計算装置から、前記複数のメモリチップにわたってストライピングされる１つ以上のデータブロックに記憶されるデータに対する要求を受取るよう構成され、
前記メモリコントローラは、前記要求は行の集合における１つ以上の列に記憶される列状データに対するものであると判断するよう構成され、
前記メモリコントローラは、前記１つ以上のデータブロックの各データブロック毎に、
前記各データブロック毎に、前記１つ以上の列の各列を、データブロックの、１つ以上のストライピングされた部分にマッピングするマッピング論理を用いることと、
前記マッピング論理に基づいて、前記複数のメモリチップのうち、前記１つ以上の列がマッピングされる前記１つ以上のストライピングされた部分を記憶する１つ以上のメモリチップを選択することと、
前記１つ以上のストライピングされた部分を、前記１つ以上のメモリチップから、前記データブロックの、１つ以上の他のストライピングされた部分を、前記複数のメモリチップのうちの１つ以上の他のメモリチップから検索することなく、検索することとを実行するよう構成され、前記データブロックの前記１つ以上の他のストライピングされた部分は１つ以上の他の列によってマッピングされ、さらに
前記計算装置に対して、前記列状データを、前記データブロックの前記１つ以上のストライピングされた部分から返すことを実行するよう構成される、メモリ装置。
【請求項２】
前記マッピング論理はデフォルトマッピングおよび調整的マッピングを含み、前記デフォルトマッピングは前記１つ以上の列のうちのある特定の列を前記１つ以上のストライピングされた部分のうちの第１のストライピングされた部分にマッピングし、前記１つ以上のメモリチップの第１のメモリチップは前記第１のストライピングされた部分を記憶し、前記メモリコントローラは、さらに、
前記調整的マッピングから、前記１つ以上の列は前記１つ以上のストライピングされた部分の第２のストライピングされた部分上にオーバフローすると判断すること、および
前記第２のストライピングされた部分を、前記第２のストライピングされた部分を記憶する第２のメモリチップから検索することを実行するよう構成され、
前記データブロックの前記１つ以上の他のストライピングされた部分は、前記第１のストライピングされた部分および前記第２のストライピングされた部分の両方以外のストライピングされた部分であり、前記１つ以上の他のメモリチップは、前記第１のメモリチップおよび前記第２のメモリチップの両方以外のメモリチップであり、前記１つ以上の他の列は前記ある特定の列以外の列である、請求項１に記載のメモリ装置。
【請求項３】
前記１つ以上のストライピングされた部分の各ストライピングされた部分は、前記複数のメモリチップの前記１つ以上のメモリチップ上におけるある論理的な記憶の単位に記憶され、各論理的な記憶の単位は、前記複数のメモリチップと前記メモリコントローラとの間における最小転送単位（ＭＴＵ）に基づくサイズのものである、請求項１に記載のメモリ装置。
【請求項４】
前記マッピング論理は、前記メモリコントローラにおいて、前記１つ以上の列のうちのある特定の列を前記１つ以上のストライピングされた部分のうちのある特定のストライピングされた部分にマッピングするデフォルトマッピングを含む、請求項１に記載のメモリ装置。
【請求項５】
前記マッピング論理は、前記メモリコントローラにおいて、前記１つ以上の列のうちのある特定の列を前記１つ以上のストライピングされた部分のうちのある特定のストライピングされた部分にマッピングするデフォルトマッピングを含み、前記メモリコントローラは、さらに、ブロックヘッダを、前記ブロックヘッダを記憶する第１のメモリチップから検索することを実行するよう構成され、前記マッピング論理は、さらに、前記ブロックヘッダにおいて、前記１つ以上の列は前記特定のストライピングされた部分に当てはまることを示す調整的マッピングを含む、請求項１に記載のメモリ装置。
【請求項６】
メモリコントローラと、
複数のメモリチップとを含むメモリ装置であって、
前記メモリコントローラは、計算装置から、前記複数のメモリチップにわたってストライピングされる１つ以上のデータブロックに記憶されるデータに対する要求を受取るよう構成され、前記１つ以上のデータブロックの各々は行の集合を記憶し、
前記メモリコントローラは、前記要求は前記行の集合における１つ以上の列に記憶される列状データに対するものであると判断するよう構成され、
前記メモリコントローラは、前記１つ以上のデータブロックの各データブロック毎に、
前記複数のメモリチップの各々から、前記データブロックのストライピングされた部分を検索することと、
前記データブロックに対して、前記１つ以上の列の各列を、前記データブロックの、１つ以上のストライピングされた部分にマッピングするマッピング論理を用いることと、
前記マッピング論理に基づいて、前記１つ以上のストライピングされた部分を、前記データブロックの前記検索されたストライピングされた部分から抽出することと、
前記計算装置に対して、前記列状データを、前記データブロックの前記１つ以上のストライピングされた部分から、前記データブロックの前記検索されたストライピングされた部分のうちの１つ以上の他のストライピングされた部分を返すことなく、返すこととを実行するよう構成される、メモリ装置。
【請求項７】
前記ストライピングされた部分の各々は、前記複数のメモリチップのうちのあるメモリチップにおいてある論理的な記憶の単位に記憶され、各論理的な記憶の単位は、前記複数のメモリチップと前記メモリコントローラとの間における最小転送単位（ＭＴＵ）に基づくサイズのものである、請求項６に記載のメモリ装置。
【請求項８】
前記検索されたストライピングされた部分のうちのある特定のストライピングされた部分はブロックヘッダを含み、前記マッピング論理は、前記ブロックヘッダに記憶されるマッピングを含む、請求項６に記載のメモリ装置。
【請求項９】
メモリコントローラが、計算装置から、複数のメモリ装置にわたってストライピングされる１つ以上のデータブロックに記憶されるデータに対する要求を受取るステップと、
前記要求は行の集合における１つ以上の列に記憶される列状データに対するものであると判断するステップとを含み、
前記１つ以上のデータブロックの各データブロック毎に、
前記各データブロック毎に、前記１つ以上の列の各列を、データブロックの、１つ以上のストライピングされた部分にマッピングするマッピング論理を用いるステップと、
前記マッピング論理に基づいて、前記複数のメモリ装置のうち、前記１つ以上の列がマッピングされる前記１つ以上のストライピングされた部分を記憶する１つ以上のメモリ装置を選択するステップと、
前記１つ以上のストライピングされた部分を、前記１つ以上のメモリ装置から、前記データブロックの、１つ以上の他のストライピングされた部分を、前記複数のメモリ装置のうちの１つ以上の他のメモリ装置から検索することなく、検索するステップとを含み、前記データブロックの前記１つ以上の他のストライピングされた部分は１つ以上の他の列によってマッピングされ、さらに
前記計算装置に対して、前記列状データを、前記データブロックの前記１つ以上のストライピングされた部分から返すステップを含む、方法。
【請求項１０】
前記マッピング論理はデフォルトマッピングおよび調整的マッピングを含み、前記デフォルトマッピングは前記１つ以上の列のうちのある特定の列を前記１つ以上のストライピングされた部分のうちの第１のストライピングされた部分にマッピングし、前記１つ以上のメモリ装置の第１のメモリ装置は前記第１のストライピングされた部分を記憶し、さらに、
前記調整的マッピングから、前記１つ以上の列は前記１つ以上のストライピングされた部分の第２のストライピングされた部分上にオーバフローすると判断するステップ、および
前記第２のストライピングされた部分を、前記第２のストライピングされた部分を記憶する第２のメモリ装置から検索するステップを含み、
前記データブロックの前記１つ以上の他のストライピングされた部分は、前記第１のストライピングされた部分および前記第２のストライピングされた部分の両方以外のストライピングされた部分であり、前記１つ以上の他のメモリ装置は、前記第１のメモリ装置および前記第２のメモリ装置の両方以外のメモリ装置であり、前記１つ以上の他の列は前記ある特定の列以外の列である、請求項９に記載の方法。
【請求項１１】
前記１つ以上のストライピングされた部分の各ストライピングされた部分は、前記複数のメモリ装置の前記１つ以上のメモリ装置上におけるある論理的な記憶の単位に記憶され、各論理的な記憶の単位は、前記１つ以上のメモリ装置と前記メモリコントローラとの間における最小転送単位（ＭＴＵ）に基づくサイズのものである、請求項９に記載の方法。
【請求項１２】
前記マッピング論理はデフォルトマッピングおよび調整的マッピングを含み、さらに、前記調整的マッピングを、ブロックヘッダを記憶するある特定のメモリ装置から検索するステップを含む、請求項９に記載の方法。
【請求項１３】
前記マッピング論理は、前記メモリコントローラにおいて、前記１つ以上の列のうちのある特定の列を前記１つ以上のストライピングされた部分のうちのある特定のストライピングされた部分にマッピングするデフォルトマッピングを含み、さらに、ブロックヘッダを、前記ブロックヘッダを記憶する第１のメモリチップから検索するステップを含み、前記マッピング論理は、さらに、前記ブロックヘッダにおいて、前記１つ以上の列は前記特定のストライピングされた部分に当てはまることを示す調整的マッピングを含む、請求項９に記載の方法。
【請求項１４】
メモリコントローラが、計算装置から、複数のメモリ装置にわたってストライピングされる１つ以上のデータブロックに記憶されるデータに対する要求を受取るステップと、
前記要求は行の集合における１つ以上の列に記憶される列状データに対するものであると判断するステップとを含み、
前記１つ以上のデータブロックの各データブロック毎に、
前記複数のメモリ装置の各々から、前記データブロックのストライピングされた部分を検索するステップと、
前記データブロックに対して、前記１つ以上の列の各列を、前記データブロックの、１つ以上のストライピングされた部分にマッピングするマッピング論理を用いるステップと、
前記マッピング論理に基づいて、前記１つ以上のストライピングされた部分を、前記データブロックの前記検索されたストライピングされた部分から抽出するステップと、
前記計算装置に対して、前記列状データを、前記データブロックの前記１つ以上のストライピングされた部分から、前記データブロックの前記検索されたストライピングされた部分のうちの１つ以上の他のストライピングされた部分を返すことなく、返すステップとを含む、方法。
【請求項１５】
前記ストライピングされた部分の各ストライピングされた部分は、前記複数のメモリ装置においてある論理的な記憶の単位に記憶され、各論理的な記憶の単位は、前記複数のメモリ装置と前記メモリコントローラとの間における最小転送単位（ＭＴＵ）に基づくサイズのものである、請求項１４に記載の方法。
【請求項１６】
前記検索されたストライピングされた部分のうちのある特定のストライピングされた部分はブロックヘッダを含み、前記マッピング論理は、前記ブロックヘッダに記憶されるマッピングを含む、請求項１４に記載の方法。
【国際調査報告】
2013502658.tif 000012
2013502658.tif 000013