(57)【特許請求の範囲】
【請求項１】
メモリから特定のブロックの特定のセクタ内の特定のデータをキャッシュ内にコピーするための方法であって、
前記特定のブロックは少なくとも２つのセクタを含み、前記キャッシュはタグ配列およびデータ配列を含み、
前記タグ配列は、前記メモリからのデータが前記データ配列に格納される場所をマッピングするものであって、複数のウェイおよび複数のセットに配置された複数のタグ構造を含み、
前記タグ構造は、セクタビットベクタフィールド、ウェイフィールド、および開始セクタフィールドを含み、
前記方法は、
前記メモリから前記特定のブロックの前記特定のセクタ内の前記特定のデータを、前記開始セクタから始まる前記データ配列のウェイ内にプロセッサによってコピーすることと、
前記データ配列に格納されている前記特定のブロックの前記特定のセクタを識別するために前記タグ配列を前記プロセッサによって更新することと、
前記データ配列内の前記ウェイに格納されている前記特定のブロックの前記特定のセクタを識別するために前記タグ配列を前記プロセッサによって更新することと、
前記データ配列内の前記ウェイ内の前記開始セクタに格納されている前記特定のブロックの前記特定のセクタを識別するために前記タグ配列を前記プロセッサによって更新することとを含む方法。
【請求項２】
前記コピーを行う前に、前記特定のブロック内のデータのコピーが前記キャッシュ内に格納されていないことを前記プロセッサによって判定することをさらに含む請求項１に記載の方法。
【請求項３】
前記特定のブロック内の前記データの前記コピーが前記キャッシュ内に格納されていないことを前記プロセッサによって判定することは、前記特定のデータに対する要求のタグフィールドを前記タグ配列内のタグフィールドと比較することを含む請求項２に記載の方法。
【請求項４】
前記コピーを行う前に、前記特定のセクタ内の前記特定のデータのコピーが前記キャッシュ内に格納されていないことを前記プロセッサによって判定することをさらに含む請求項３に記載の方法。
【請求項５】
前記特定のセクタ内の前記特定のデータの前記コピーが前記キャッシュ内に格納されていないことを前記プロセッサによって判定することは、前記要求のセクタインデックスフィールドを前記タグ配列内のセクタビットベクタフィールドと比較することを含む請求項４に記載の方法。
【請求項６】
前記タグ配列内の前記セクタビットベクタフィールドは、前記データ配列内に格納されている前記特定のブロックのセクタのコピーを示す請求項５に記載の方法。
【請求項７】
前記特定のブロックは、第１の特定のブロックであり、前記特定のデータは、第１の特定のデータであり、前記第１の特定のデータは、前記第１の特定のブロック内の前記メモリに格納され、
前記特定のセクタは、第１の特定のセクタであり、
前記ウェイは、第１のウェイであり、
前記開始セクタは、第１の開始セクタであり、前記方法は、
前記メモリから第２の特定のセクタ内のデータを、第２の開始セクタから始まる前記データ配列の第２のウェイ内に前記プロセッサによってコピーし、前記第２の特定のセクタは、第２の特定のブロック内の前記メモリに格納され、前記第２の特定のブロックは、前記第１の特定のブロックと異なることと、
前記データ配列に格納されている前記第２の特定のブロックの前記第２の特定のセクタを識別するために前記タグ配列を前記プロセッサによって更新することと、
前記データ配列内の前記第２のウェイに格納されている前記第２の特定のブロックの前記第２の特定のセクタを識別するために前記タグ配列を前記プロセッサによって更新することと、
前記データ配列内の前記第２のウェイ内の前記第２の開始セクタに格納されている前記第２の特定のブロックの前記第２の特定のセクタを識別するために前記タグ配列を前記プロセッサによって更新することとを含む請求項１に記載の方法。
【請求項８】
前記第１のウェイと第２のウェイとは異なる請求項７に記載の方法。
【請求項９】
コピーすることは、前記特定のブロックを分析することと、前記メモリ内にデータが格納されている場合に前記特定のブロックの前記特定のセクタ内のデータをコピーすることと、前記メモリ内にデータが格納されていない場合に前記特定のブロックの別のセクタに対する前記データ配列内に空間を割り当てないこととを含む請求項１に記載の方法。
【請求項１０】
前記プロセッサによって前記第１の特定のセクタ内のデータをコピーすることは、前記第１の特定のブロックを分析することと、前記メモリ内にデータが格納されている場合に前記第１の特定のブロックの前記第１の特定のセクタ内のデータをコピーすることと、前記メモリ内にデータが格納されていない場合に前記第１の特定のブロックの別のセクタに対する前記データ配列内に空間を割り当てないこととを含み、
前記プロセッサによって前記第２の特定のセクタ内のデータをコピーすることは、前記第２の特定のブロックを分析することと、前記メモリ内にデータが格納されている場合に前記第２の特定のブロックの前記第２の特定のセクタ内のデータをコピーすることと、前記メモリ内にデータが格納されていない場合に前記第２の特定のブロックの別のセクタに対する前記データ配列内に空間を割り当てないこととを含む請求項７に記載の方法。
【請求項１１】
コピーすることは、前記特定のセクタおよび関係するセクタ内のデータをコピーすることを含む請求項１に記載の方法。
【請求項１２】
前記データ配列内の前記特定のデータに予約されているセクタの数を示すために前記タグ配列を前記プロセッサによって更新することをさらに含む請求項１に記載の方法。
【請求項１３】
置換ポリシーに基づき前記プロセッサによって前記ウェイおよび開始セクタを選択することをさらに含む請求項１に記載の方法。
【請求項１４】
特定のブロックの特定のセクタ内にある特定のデータをコピーするシステムであって、前記特定のブロックは少なくとも２つのセクタを含み、
メモリと、
タグ配列とデータ配列とを備えるキャッシュであって、前記タグ配列は、前記メモリからのデータが前記データ配列に格納される場所をマッピングするものであって、複数のウェイまたは列および複数のセットまたは行に配置された複数のタグ構造を備え、前記タグ構造は、セクタビットベクタフィールド、ウェイフィールド、および開始セクタフィールドを含む、キャッシュと、
前記キャッシュおよび前記メモリと通信するように構成されたプロセッサとを備え、
前記プロセッサは、
前記メモリから前記特定のブロックの前記特定のセクタ内の前記特定のデータを、開始セクタから始まる前記データ配列のウェイ内にコピーし、
前記データ配列に格納されている前記特定のブロックの前記特定のセクタを識別するために前記タグ配列を更新し、
前記データ配列内の前記ウェイに格納されている前記特定のブロックの前記特定のセクタを識別するために前記タグ配列を更新し、
前記データ配列内の前記ウェイ内の前記開始セクタに格納されている前記特定のブロックの前記特定のセクタを識別するために前記タグ配列を更新するシステム。
【請求項１５】
前記特定のデータは、第１の特定のデータであり、前記第１の特定のデータは、第１の特定のブロック内の前記メモリに格納され、
前記特定のセクタは、第１の特定のセクタであり、
前記ウェイは、第１のウェイであり、
前記開始セクタは、第１の開始セクタであり、前記プロセッサは、
前記メモリから第２の特定のセクタ内のデータを、第２の開始セクタから始まる前記データ配列の第２のウェイ内にコピーし、前記第２の特定のデータは、第２の特定のブロック内の前記メモリに格納され、前記第２の特定のブロックは、前記第１の特定のブロックと異なり、
前記データ配列に格納されている前記第２の特定のブロックの前記第２の特定のセクタを識別するために前記タグ配列を更新し、
前記データ配列内の前記第２のウェイに格納されている前記第２の特定のブロックの前記第２の特定のセクタを識別するために前記タグ配列を更新し、
前記データ配列内の前記第２のウェイ内の前記第２の開始セクタに格納されている前記第２の特定のブロックの前記第２の特定のセクタを識別するために前記タグ配列を更新するのにさらに有効である請求項１４に記載のシステム。
【請求項１６】
前記第１のウェイと第２のウェイとは異なる請求項１５に記載のシステム。
【請求項１７】
前記プロセッサは、前記第１の特定のブロックを分析することによって前記第１の特定のセクタ内のデータをコピーし、前記メモリ内にデータが格納されている場合に前記第１の特定のセクタ内のデータをコピーし、前記メモリ内にデータが格納されていない場合に前記第１の特定のブロックの別のセクタに対する前記データ配列内で空間を割り当てず、
前記プロセッサは、前記第２の特定のブロックを分析することによって前記第２の特定のセクタ内のデータをコピーし、前記メモリ内にデータが格納されている場合に前記第２の特定のセクタ内のデータをコピーし、前記メモリ内にデータが格納されていない場合に前記第２の特定のブロックの別のセクタに対する前記データ配列内で空間を割り当てない請求項１５に記載のシステム。
【請求項１８】
前記データ配列は、ＤＲＡＭを使用して実装され、前記タグ配列は、ＳＲＡＭまたはＤＲＡＭを使用して実装される請求項１４に記載のシステム。
【請求項１９】
アドレスに基づきキャッシュ内に格納されている特定のブロックからの特定のセクタ内の特定のデータのコピーを取り出すための方法であって、前記アドレスは、タグフィールド、セットインデックスフィールド、セクタインデックスフィールドを含み、前記キャッシュはタグ配列およびデータ配列を含み、前記タグ配列は、前記メモリからのデータが前記データ配列に格納される場所をマッピングするのに有効であり、前記方法は、
前記セットインデックスフィールド内で識別されているセット内の、前記タグフィールド内の第１のタグデータを、前記タグ配列内の別のタグフィールド内の第２のタグデータと、プロセッサによって比較して、一致するタグを生成し、前記一致するタグはタグ構造内にあり、前記タグ構造は、セクタビットベクタフィールド、ウェイフィールド、および開始セクタフィールドを備えることと、
前記タグ構造の前記セクタビットベクタフィールド内のセクタビットベクタデータを、前記アドレスの前記セクタインデックスフィールド内のデータと、前記プロセッサによって比較し、前記特定のブロックからの前記特定のセクタ内の前記特定のデータの前記コピーが前記キャッシュ内に格納されていると判定することと、
前記ウェイフィールド内のデータを前記プロセッサによって分析し、前記特定のブロックからの前記特定のセクタ内の前記特定のデータの前記コピーが格納されている前記データ配列内のウェイを決定することと、
前記開始セクタフィールド内のデータを前記プロセッサによって分析し、前記特定のブロックからの前記特定のセクタ内の前記特定のデータの前記コピーが格納されている前記データ配列内の開始セクタを決定することと、
前記データ配列の前記ウェイ、セット、および開始セクタ内の、前記特定のブロックからの前記特定のセクタの前記特定のデータの前記コピーを前記プロセッサによって取り出すこととを含む方法。
【請求項２０】
前記アドレスは、セクタオフセットフィールドをさらに含み、前記方法は、前記セクタオフセットフィールド内のデータを使用して前記特定のセクタの前記特定のデータの前記コピーを取り出すことをさらに含む請求項１９に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
本明細書において別段の指示のない限り、この節で説明する題材は、本出願の請求項に対する従来技術ではなく、またこの節に含めることによって従来技術であると認められることはない。
【０００２】
プロセッサまたはプロセッサコアの１つまたは複数がアクセスするデータを格納するためにキャッシュが使用されうる。データは、キャッシュを備えるチップの外部に典型的には配置される、より大容量のメモリ内に格納されたデータのコピーとすることができる。キャッシュ内のデータのコピーは、データ配列内に格納することができる。タグ配列が、データ配列内に格納されているデータのインデックスを保持することができる。プロセッサは、アドレスを識別することによってキャッシュ内に格納されている特定のデータを要求することができる。アドレスはタグ配列内のアドレスと比較され、これにより、特定のデータのコピーがキャッシュのデータ配列内に格納されているかどうかを判定する。
【発明の概要】
【０００３】
一例では、特定のブロックの特定のセクタ内にある特定のデータをメモリからキャッシュ内にコピーするための方法が説明される。いくつかの例では、キャッシュは、タグ配列とデータ配列とを備えることができる。いくつかの例では、この方法は、メモリから特定のセクタ内の特定のデータを、開始セクタから始まるデータ配列のウェイ内にプロセッサによってコピーすることを含むことができる。いくつかの例では、この方法は、特定のセクタを識別するようにタグ配列をプロセッサによって更新することをさらに含むことができる。いくつかの例では、この方法は、データ配列内のウェイを識別するようにタグ配列をプロセッサによって更新することをさらに含むことができる。いくつかの例では、この方法は、開始セクタを識別するようにタグ配列をプロセッサによって更新することをさらに含むことができる。
【０００４】
別の例では、特定のブロックの特定のセクタ内にある特定のデータをコピーするためのシステムが説明される。いくつかの例では、システムは、タグ配列およびデータ配列を備えるキャッシュを具備する。いくつかの例では、システムは、メモリと、キャッシュおよびメモリと通信するように構成されたプロセッサとをさらに備える。いくつかの例では、プロセッサは、メモリから特定のセクタ内の特定のデータを開始セクタから始まるデータ配列のウェイ内にコピーするのに有効であるものとしてよい。いくつかの例では、プロセッサは、特定のセクタを識別するようにタグ配列を更新するためにさらに有効であるものとしてよい。いくつかの例では、プロセッサは、データ配列のウェイを識別するようにタグ配列を更新するためにさらに有効であるものとしてよい。いくつかの例では、プロセッサは、開始セクタを識別するようにタグ配列を更新するためにさらに有効であるものとしてよい。
【０００５】
さらに別の例では、アドレスに基づきキャッシュ内に格納されている特定のセクタ内の特定のデータのコピーを取り出すための方法が説明される。いくつかの例では、アドレスは、タグフィールド、セットインデックスフィールド（ｓｅｔ  ｉｎｄｅｘ  ｆｉｅｌｄ）、およびセクタインデックスフィールド（ｓｅｃｔｏｒ  ｉｎｄｅｘ  ｆｉｅｌｄ）を備える。いくつかの例では、キャッシュは、タグ配列とデータ配列とを備える。いくつかの例では、この方法は、セットインデックスフィールド内で識別されているセット内の、タグフィールド内の第１のタグデータを、タグ配列内の別のタグフィールド内の第２のタグデータと、プロセッサによって比較して、一致するタグを生成することを含む。いくつかの例では、一致するタグは、タグ構造内にある。いくつかの例では、タグ構造は、セクタビットベクタフィールド、ウェイフィールド、および開始セクタフィールドを備える。いくつかの例では、この方法は、タグ構造のセクタビットベクタフィールド内のセクタビットベクタデータを、アドレスのセクタインデックスフィールド内のデータと、プロセッサによって比較し、特定のセクタ内の特定のデータのコピーがキャッシュ内に格納されていると判定することをさらに含む。いくつかの例では、この方法は、ウェイフィールド内のデータをプロセッサによって分析し、特定のセクタ内の特定のデータのコピーが格納されているデータ配列内のウェイを決定することをさらに含む。いくつかの例では、この方法は、開始セクタフィールド内のデータをプロセッサによって分析し、特定のセクタ内の特定のデータのコピーが格納されているデータ配列内の開始セクタを決定することをさらに含む。いくつかの例では、この方法は、データ配列のウェイ、セット、および開始セクタ内の特定のデータのコピーをプロセッサによって取り出すことをさらに含む。
【０００６】
前述の説明は、例示的なものにすぎず、いっさい制限することを意図されていない。上述の例示的な態様、実施形態、および特徴に加えて、図面を参照し、以下の詳細な説明を参照することによってさらなる態様、実施形態、および特徴も明らかになるであろう。
【図面の簡単な説明】
【０００７】
【図１】本明細書に提示されている少なくともいくつかの実施形態により構成される、記憶効率の高いセクタ化されたキャッシュを実装するために使用されうる例示的なシステムを示す図である。
【図２】本明細書に提示されている少なくともいくつかの実施形態により構成される、記憶効率の高いセクタ化されたキャッシュを実装するために使用されうる例示的なシステムを示す図である。
【図３】本明細書に提示されている少なくともいくつかの実施形態により構成される、記憶効率の高いセクタ化されたキャッシュを実装するための例示的なプロセスの流れ図である。
【図４】本明細書に提示されている少なくともいくつかの実施形態により構成される、記憶効率の高いセクタ化されたキャッシュを実装するための例示的なコンピュータプログラム製品を示す図である。
【図５】本明細書に提示されている少なくともいくつかの実施形態により構成される、記憶効率の高いセクタ化されたキャッシュを実装するように構成された例示的なコンピューティングデバイスを示すブロック図である。
【発明を実施するための形態】
【０００８】
以下の詳細な説明では、詳細な説明の一部をなす、添付図面が参照される。図面中の類似の記号は、典型的には、文章が別段説明していない限り類似のコンポーネントを明示する。詳細な説明、図面、および請求項で説明されている例示的な実施形態は、制限することを意図されていない。他の実施形態も利用することができ、また本明細書に提示されている主題の精神または範囲から逸脱することなく、他の変更を加えることができる。本明細書で一般的に説明され、また図に例示されているような本開示の態様は、さまざまな異なる構成による配置、置換、組み合わせ、分離、設計が可能であり、すべて本明細書において明示的に企図される。
【０００９】
本開示は、とりわけ、記憶効率の高いセクタ化されたキャッシュを実装することに関係する方法、装置、システム、デバイス、およびコンピュータプログラム製品に、一般的に関する。
【００１０】
簡単に言うと、メモリ内の特定のブロックの特定のセクタ内にある特定のデータをメモリからキャッシュ内にコピーするためのシステムの技術が一般的に説明されているということである。いくつかの例では、キャッシュは、タグ配列とデータ配列とを備える。いくつかの例では、プロセッサは、メモリから特定のセクタ内のデータを開始セクタから始まるデータ配列のウェイ内にコピーするように適合されうる。いくつかの例では、プロセッサは、特定のセクタを識別するためにタグ配列を更新するように適合されうる。いくつかの例では、プロセッサは、データ配列内のウェイを識別するためにタグ配列を更新するように適合されうる。いくつかの例では、プロセッサは、開始セクタを識別するためにタグ配列を更新するように適合されうる。
【００１１】
図１は、本明細書に提示されている少なくともいくつかの実施形態により構成された記憶効率の高いセクタ化されたキャッシュを実装するために使用されうる例示的なシステムを示している。例示的なシステム１００は、キャッシュ１１２およびメモリ１５４と通信するように構成されたプロセッサ１０２を備えることができる。キャッシュ１１２は、タグ配列１０６とデータ配列１０４とを備えることができる。いくつかの例では、データ配列１０４は、ＤＲＡＭ（ダイナミックランダムアクセスメモリ）を使用して実装することが可能であり、タグ配列１０６は、ＳＲＡＭ（スタティックランダムアクセスメモリ）またはＤＲＡＭを使用して実装することが可能である。
【００１２】
タグ配列１０６は、複数のウェイまたは列１０８および複数のセットまたは行１１０に配置された複数のタグ構造１１６を備えるように構成されうる。いくつかの例では、データ配列１０４は、同じ数のセット１１０および異なる数のウェイ１１４に配置された複数のキャッシュライン１１８を備えるように構成されうる。たとえば、図示されているように、タグ配列１０６およびデータ配列１０４は、両方ともＮ個のセットを含むものとしてよい。図示されている例では、タグ配列１０６は８個のウェイを含み、データ配列１０４は４個のウェイを含む。
【００１３】
以下でさらに詳しく説明されるように、タグ構造１１６は、セクタ１２０、１２２がデータ配列１０４内に格納されているデータを含む場所をマッピングするか、またはインデックス付けするように（マッピング矢印１２４によって例示されているように）構成されうる。セクタ１２０、１２２は、メモリ１５４内の異なるデータブロックからのデータのコピーを含むことができる。プロセッサ１０２は、データ配列１０４のキャッシュライン１１８内にデータを格納し、タグ配列１０６内にタグ構造１１６を格納するように適合されうる。いくつかの例では、異なるデータブロックからのデータが単一のキャッシュライン内に格納される場合、タグ構造１１６は、セット、ウェイ（列）、およびデータがデータ配列１０４内に格納される開始セクタの位置を示すように適合されうる。同様に、プロセッサ１０２は、アドレスを生成し、それらのアドレスをタグ配列１０６内のタグ構造１１６と比較することによってデータ配列１０４内に格納されているデータに対する要求を生成するように構成されうる。他の利点もあるが特に、同じキャッシュライン内に複数の異なるブロックからのデータのコピーを格納し、インデックス付けすることによって、効率的なキャッシュ格納を実現することができる。
【００１４】
図２は、本明細書に提示されている少なくともいくつかの実施形態により構成された記憶効率の高いセクタ化されたキャッシュを実装するために使用されうる例示的なシステムを示している。図２は、システム１００のものと実質的に類似しており、詳細を追加している。図１のコンポーネントと全く同じくラベル付けされている図２のコンポーネントについては、わかりやすくするため、再度説明することはしない。
【００１５】
図２に示されているように、プロセッサ１０２は、キャッシュ１１２内に格納されうるデータの位置を識別するアドレス１２６を生成するように構成されうる。アドレス１２６は、タグ１２８、セットインデックス１３０、セクタインデックス１３２、およびセクタオフセット１３４などのフィールドを含むものとしてよい。タグ配列内のそれぞれのタグ構造１１６は、タグ１３６、状態１３８、セクタビットベクタ１４０、ウェイ１４２、開始セクタ１４４、および／または長さ１４５などのフィールドを含むように構成されうる。これらのフィールドの用途のいくつかについて以下で説明する。データ配列１０４内のそれぞれのキャッシュライン１１８は、１４６、１４８、１５０、および１５２に示されているようにＭ個のセクタを含むように構成されうる。いくつかの例では、６４個のセクタが、キャッシュライン１１８内で使用されうる。
【００１６】
プロセッサ１０２が特定のブロックの特定のセクタ内の特定のデータを要求する例では、プロセッサ１０２は、特定のデータに対するアドレス１２６を生成するように構成されうる。アドレス１２６のセットインデックス１３０は、タグフィールド１２８内で識別されたタグに対するタグ配列１０６内のプロセッサ１０２が読み出すことができるセットまたは行を示すものとしてよい。図示されている例では、セットＳ２は、アドレス１２６で識別される。その例では、セットが識別された後、プロセッサ１０２は、タグフィールド１２８で識別されたタグに対するセットＳ２内のウェイ（列）におけるタグを比較するように構成されうる。セットＳ２内のウェイのうちの１つにおいてタグフィールド１２８内のデータとタグフィールド１３６内のデータとの間に一致がない場合、プロセッサ１０２は、ブロックミスがあると判定するように構成されうる。次いで、要求されたデータのセクタ内のデータをメモリ１５４から取り出して、置換ポリシーによって定められた位置のキャッシュ１１２内に格納することができる。たとえば、最も古いタイムスタンプを持つデータ、定義された期間内にアクセスされていないデータ、または最も長い間使用されていないデータは、要求されたデータのコピーで上書きされうる。
【００１７】
プロセッサ１０２がタグフィールド１２８内のデータとタグフィールド１３６のうちの１つの中のデータとの間の一致を判定する例では、プロセッサ１０２は、状態フィールド１３８内のデータを読み出すように構成されうる。状態フィールド１３８内のデータは、キャッシュコヒーレンスプロトコルに照らしてデータの状態が有効であるかどうかを示すことができる。状態が有効でない場合、プロセッサ１０２は、キャッシュミスが発生したと判定するように構成されうる。状態が有効である場合、プロセッサ１０２は、セクタインデックスフィールド１３２内のデータをセクタビットベクタフィールド１４０内のデータと比較し、特定のセクタ内のデータのコピーがデータ配列１０４内に格納されているかどうかを判定するように構成されうる。たとえば、セクタビットベクタ１４０内のビットは、特定のセクタ内のデータのコピーがデータ配列１０４内に格納されているかどうかを示しうる。セクタビットベクタ１４０内のデータが特定のセクタ内のデータのコピーがデータ配列１０４内に格納されていないことを示している場合、プロセッサ１０２は、セクタミスがあると判定するように構成されうる。セクタミスに応答して、プロセッサ１０２は、メモリ１５４から特定のセクタ内のデータを取り出し、それを置換ポリシー（本明細書で説明されている）に基づきキャッシュ１１２内にコピーするように構成されうる。
【００１８】
特定のセクタ内のデータのコピーが、キャッシュ１１２内に存在すると判定される例では、プロセッサ１０２は、ウェイフィールド１４２内のデータを読み出すように構成されうる。ウェイフィールド１４２は、特定のセクタ内のデータのコピーが格納されるデータ配列１０４内のウェイまたは列を示しうる。複数のタグラインを持つ複数の異なるブロックのセクタ内のデータは、タグ配列１００６内でデータ配列１０４内の同じウェイ１１４およびキャッシュライン１１８にマッピングされうる。プロセッサ１０２は、開始セクタフィールド１４４のデータを読み出して、特定のセクタ内のデータのコピーが格納されているキャッシュライン１１８内の開始セクタを決定するように構成される。プロセッサ１０２は、長さフィールド１４５内のデータを読み出して特定のデータが占有および／または予約することができるセクタの数を決定するように構成されうる。たとえば、この特定のデータは、データ配列１０４内の２つのセクタを占有することができ、全部で４つのセクタを関係するデータのために予約することができる。占有され、予約されているセクタは、長さフィールド１４５で識別されうる。この例では、プロセッサ１０２が同じブロックの２つの新しいセクタにアクセスする場合、それら２つの新しいセクタ内のデータは、異なるブロックのデータを退去させることなく長さフィールド１４５内に定義されている既存の予約を使用して格納されうる。開始セクタフィールド１４４から開始セクタが決定された後、プロセッサ１０２は、アドレス１２６のセクタオフセットフィールド１３４内に１バイト／ワードを配置するように構成されうる。
【００１９】
メモリ１５４からのデータは、キャッシュ１１２内に効率よく格納することができる。プロセッサ１０２がブロックもしくはセクタミス（上述の）を判定する例では、またはキャッシュ１１２に、最初に、データが書き込まれる場合、データはプロセッサ１０２によってメモリ１５４からデータ配列１１４にコピーされるものとしてよい。データのブロック全体がデータ配列１１４に必ずしもコピーされる必要はないが、それは、要求された特定のセクタそれ自体がコピーされうるからである。複数の異なるブロックからのデータを含むセクタ群が単一のキャッシュライン内に収まりうる例では、データを入れたそれらのセクタ群を同じキャッシュライン内に格納することができる。たとえば、特定のセクタがプロセッサ１０２によってアクセスされる場合、そのセクタおよび次の連続する１つまたは複数のセクタをコピーすることが可能である。別の例では、プロセッサ１０２は、セクタプリフェッチャを使用するように構成されうる。セクタプリフェッチャは、セクタ内のデータに対する連続するアクセスを検出し、特定のセクタおよび次の少数のセクタをプリフェッチするように構成されうる。次の少数のセクタは、連続的であってもよいし、ストライドで隔てられていてもよい。履歴データに基づく、いくつかの例では、プリフェッチャは、長さフィールド１４５を使用してデータ配列１０４内に予約すべきセクタの数を決定するように構成することもできる。別の例では、プロセッサ１０２は、このブロックについて過去にアクセスされたセクタの数などのブロック内のデータの過去の使用を監視するように構成されうる。プロセッサ１０２は、この情報に基づき、ブロックに対するセクタを、過去にアクセスされたのと同じ数だけ予約するように構成されうる。
【００２０】
いくつかの例では、予測アルゴリズムに基づき、特定のセクタに加えて、データを含むセクタ群を予約するか、またはメモリ１５４からキャッシュ１１２にコピーすることができる。これらの例では、プロセッサ１０２は、メモリ１５４からコピーされたセクタおよびブロック内のデータの履歴情報を保持するように構成されうる。たとえば、これまでのことから、データを含むいくつかのセクタは、典型的には、メモリ１５４からキャッシュ１１２にまとめてコピーされうるか（連続するセクタなど）、またはデータを含む１つのセクタのコピーを行うことが、関係するセクタもコピーすべきであることを示唆しうる。この履歴情報があると、これらの関係するセクタのうちの１つに対するセクタミスは、関係するセクタをデータとともにコピーするようにプロセッサ１０２を構成すべきであることを示しうる。たとえば、プロセッサ１０２は、キャッシュ１１２が格納できる内容以上のブロックの使用を追跡することができる予測構造を使用するように構成されうる。一例では、予測構造は、ブロックアドレスでインデックス付けされたテーブル、およびブロックがキャッシュから退去させられるときにブロックのセクタビットベクタ１４０内に「１」の数を記録するのに有効なカウンタを備えることができる。プロセッサ１０２が、ブロックミスがあると判定した場合、プロセッサ１０２はテーブルをチェックするように構成されうる。カウンタは、ブロックのために予約するセクタの数を決定するためにプロセッサ１０２によって使用されうる。
【００２１】
一例では、メモリ１５４は、プロセッサ１０２による要求があったときにキャッシュ１１２のデータ配列１１４内にコピーされうるブロック１５６および１６２内のデータを含みうる。この例では、ブロック１５６はタグ「４５６」を有し、４つのセクタ１５８（Ｘ１、Ｘ２、Ｘ３、およびＸ４）を備える。この例では、データは、セクタＸ１およびＸ３内に格納される（データビットベクタ１６０のビット１０１０によって示されるように）。この例では、ブロック１６２はタグ「７８９」を有し、４つのセクタ１６２（Ｙ１、Ｙ２、Ｙ３、およびＹ４）を備える。この例では、データは、セクタＹ３およびＹ４内に格納される（データビットベクタ１６６のビット００１１によって示されるように）。ブロック１５６および１６２のすべてのセクタをコピーし格納すると、全部で８個のセクタと複数のキャッシュライン１１８が割り当てられ、データ配列１１４内で使用される。これは、セクタＸ２、Ｘ４、Ｙ１、およびＹ２内に現在データが格納されていなくても当てはまる。
【００２２】
プロセッサ１０２は、データが現在格納されているセクタ１５８、１６４からのデータをメモリ１５４からデータ配列１１４内にコピーするように適合されうる。この例では、ブロック１５６のセクタＸ１およびＸ３内のデータは、データライン１１８ａにコピーされる。データライン１１８ａは、４つのキャッシュラインセクタ番号１６４（００、０１、１０、１１と番号が振られる）を持つ４つのセクタを備える。ブロック１５８の２つのセクタ（Ｘ１およびＸ３）のみからのデータがメモリ１５４からデータ配列１１４にコピーされると、データライン１１８ａに、他の２つのセクタ内のデータのための余地が作られる。ブロック１６２内のセクタＹ３およびＹ４内のデータも、データライン１１８ａにコピーすることができる。いくつかの例では、プロセッサ１０２は、ブロックに対して必要になる可能性の高い連続するセクタをプリセットされた数だけ予約するように構成されうる。たとえば、キャッシュライン１１８内に６４個のセクタがあり、タグ配列１０６にデータ配列１０４のライン数の２倍のラインを保持することができる場合、プロセッサ１０２は、デフォルトでそれぞれの新しいブロックについて３２個のセクタを予約することができる。別の例では、上で説明されているように、ブロックの過去の使用度を記録する予測テーブルを使用することができる。この例では、プロセッサ１０２は、過去にそのブロックに対して使用した数のセクタを、予約することができるセクタの最小数に切り上げて予約するように構成されうる。たとえば、最小数は、１６または３２の倍数とすることが可能である。
【００２３】
この例では、プロセッサ１０２は、ブロック１５６および１６２のコピーを反映するためにタグ配列１０８を更新するように構成されうる。この例に示されているように、第１のタグ構造１１６ａは、ブロック１５６にインデックスを付けるために使用することができる。この例では、プロセッサ１０２は、タグフィールド１３６にタグ「４５６」を格納し、状態フィールド１３８に有効状態（たとえば、「１」）を格納するように構成されうる。この例では、プロセッサ１０２は、ブロック１５６のどのセクタにデータ配列１０４内に格納されているデータが収められているかを示すビットベクタ「１０１０」を含めるためにセクタビットベクタ１４０内のデータを更新するように構成されうる。
【００２４】
この例では、ブロック１５６は、データ配列１０４のウェイｗ２にマッピングされる。複数の異なるブロックからのセクタ群のデータを同じキャッシュラインおよびウェイにマッピングできるので、タグ構造１１６ａも開始セクタフィールド１４４を備える。この例では、タグ「４５６」を持つブロック１５６は、値００を持つキャッシュラインセクタ番号１６４から始まり、したがって、プロセッサ１０２は、開始セクタフィールド１４４内に「００」を格納するように構成されうる。ブロック１５６の２つのセクタ内にデータがあり、したがって、プロセッサ１０２は、長さフィールド１４５内に「１０」を格納するように構成されうる。
【００２５】
同様に、この例では、第２のタグ構造１１６ｂは、ブロック１６２にインデックスを付けるために使用することができる。タグ構造１１６ｂは、タグ構造１１６ａとして異なるタグエントリ内に格納されうる。プロセッサ１０２は、タグフィールド１３６にタグ「７８９」を格納し、状態フィールド１３８に有効状態（たとえば、「１」）を格納するように構成されうる。この例では、プロセッサ１０２は、ブロック１６２のどのセクタにデータ配列１０４内に格納されているデータが収められているかを示すビットベクタ「００１１」を含めるためにセクタビットベクタ１４０内のデータを更新するように構成されうる。
【００２６】
この例では、ブロック１６２は、ウェイｗ２にマッピングされる。複数の異なるブロックからのセクタ群のデータを同じキャッシュラインおよびウェイにマッピングできるので、タグ構造１１６ｂも開始セクタフィールド１４４を備える。この例では、タグ「７８９」を持つブロック１６２は、値１０を持つキャッシュラインセクタ番号１６４から始まり、したがって、プロセッサ１０２は、開始セクタフィールド１４４内に「１０」を格納するように構成されうる。ブロック１６２の２つのセクタ内にデータがあり、したがって、プロセッサ１０２は、長さフィールド１４５内に「１０」を格納するように構成されうる。
【００２７】
この例では、データがブロック１５６のセクタＸ２内に格納されていた場合、ブロック１５６および１６２は、同じキャッシュライン１１８ａに収まりきらないことがある。このような例では、別のキャッシュラインを使用して、ブロック１５６、１６２を格納することができる。たとえば、プロセッサ１０２は、タグ配列１０６を読み出し、ヴィクティムブロック（victim block）内でブロック１５６、１６２からのデータを格納する所望の数のセクタを含むデータを探すように構成されうる。ヴィクティムブロックからのデータは、キャッシュ１１２から退去させられるようにプロセッサ１０２によって選択されうる。ヴィクティムブロックからデータを退去させた後、プロセッサ１０２は、ブロック１５６および／または１６２からのデータをコピーし、ヴィクティムブロックからのデータによって解放されたデータ配列１０４内の空間を占有するように構成されうる。別の例では、プロセッサ１０２は、タグ配列１０６を読み出して、ブロック１５６、１６２内のデータに連続する同じキャッシュライン内に格納された別のブロックからのデータがあるかどうかを調べるように構成されうる。そのようなデータは、退去させることができ、プロセッサ１０２は、ブロック１５６、１６２の記憶域を連続するセクタに拡張するように構成されうる。他の例では、プロセッサ１０２によって使用される置換ポリシーに基づき、キャッシュライン１１８ａ内に格納されている古くなったデータを退去させて、新しいデータの記憶域を確保することができる。プロセッサ１０２は、単一のキャッシュライン１１８内に格納されうる異なるデータブロックの個数を制限するように構成されうる。たとえば、タグ配列１０６を簡約するために、プロセッサ１０２は、単一のキャッシュライン内に格納されうる異なるブロックの個数（たとえば、２または４ブロック）を制限するように構成されうる。このような例では、開始セクタフィールド１４４内のデータは、キャッシュライン内の許可されたブロックの個数に基づき許可された開始セクタのうちの１つを識別する少数のビットで符号化されうる。開始セクタフィールド１４４内のデータは、特定のブロックが１／４のキャッシュライン、１／２のキャッシュライン、またはキャッシュライン全体を使用するかどうかを示すことができる。
【００２８】
他の可能な利点のうち特に、システム１００では、キャッシュ１１２が、単一のキャッシュライン内に複数の異なるブロックからのデータを格納することができる。データの単一ブロックの格納は、必ずしも、データ配列１０４内のキャッシュライン全体の割り当てを必要とするわけではない。セクタ内にデータがあるかどうかに関係なくブロック内のすべてのセクタに対して空間の割り当てを行う代わりに、中にデータが格納されているセクタに対してデータ配列内の空間の割り当てを行うことができる。いくつかの例において、システム１００では、タグ構造１１６とキャッシュライン１１８との間で１対１マッピングを行わずに、タグ構造１１６とキャッシュライン１１８との間の多対１またはｎ対１のマッピングを行うことができる。たとえば、タグ配列１０８内のウェイｗ２およびウェイｗ５におけるタグ構造は、両方とも、ウェイフィールド１４２内のデータに基づきデータ配列１０４のウェイｗ２内のキャッシュライン１１８にマッピングすることができる。タグ配列１０８では、データ配列１０４で使用されるのよりも多くのウェイ／列を使用することができるが、それは、データの複数の異なるブロックがデータ配列１０４内の同じキャッシュラインを共有することができるからである。いくつかの例では、中にデータが格納されているセクタをコピーすることによって、キャッシュ内の記憶域断片化は、比較的大きなキャッシュサイズを有するキャッシュ内であっても制限されうる。いくつかの例では、システム１００は、データ配列１０４内のキャッシュラインを部分的に埋まることを回避する。上記の結果、他の利点もあるが特に、以下で説明されるように、より高い性能、より優れたエネルギー効率が得られる。
【００２９】
その結果、記憶域断片化の制限の少なくとも一部において、キャッシュはより多くのデータブロックを保持することができる。実効キャッシュ容量を増やすと、別のメモリから取り出さずにキャッシュ内により多くのブロックを見つけられるため、キャッシュミス率を低減することができる。チップの帯域幅エンベロープをキャッシュに当てることなくより多くのコアを実装できるようにして、データトラヒックを低減することができる。複数のブロックからのデータは単一のキャッシュラインを共有することができるので、キャッシュラインに対して、より頻繁にアクセスすることができる。ＤＲＡＭキャッシュラインは、リフレッシュされないとその電荷を失うおそれがある。キャッシュラインに複数回アクセスすることは、使用するＤＲＡＭのリフレッシュ回数を減らせることを意味するものとしてよい。
【００３０】
システム１００を使用して効率を高める例として、４ＫＢラインおよび８ウェイアソシエイティブ方式を用いる３２ＭＢのセクタ化されたキャッシュでは、８，１９２個のキャッシュラインが、１２８ＫＢ（タグに６４ＫＢ、セクタビットベクタに６４ＫＢ）のタグ配列とともに使用されうる。それぞれの４ＫＢラインが半分書き込まれた場合、実効キャッシュ容量は１６ＭＢにすぎない。タグ構造１１６は、キャッシュラインが配置されている場所を示すウェイフィールド（いくつかの例では、３ビットとすることができる）を含む。タグ構造１１６は、開始セクタを示す開始セクタフィールド（いくつかの例では、１ビットとすることができる）を含みうる。タグ構造１１６は、ブロックが占有することを許可されうるセクタの最大数を示す長さフィールド（いくつかの例では、１ビットとすることができる）を含みうる。この例において、タグ構造１１６内のエクストラフィールドは、タグ配列において合計５個のエクストラビットを有し、合計で５ＫＢのエクストラタグ記憶域（４％増加）と３２ＭＢの実効キャッシュ容量（１００％増加）を備える。
【００３１】
図３は、本明細書に提示されている少なくともいくつかの実施形態によって構成された記憶効率の高いセクタ化されたキャッシュを実装するための例示的なプロセスの流れ図を示している。いくつかの例では、図３のプロセスは、上述のシステム１００を使用して実装することが可能である。例示的なプロセスは、ブロック２００、２０２、２０４、２０６、２０８、２１０、２１２、２１４、および／または２１６のうちの１つまたは複数によって例示されているような１つまたは複数のオペレーション、アクション、または機能を備えることができる。離散ブロックとして例示されているが、所望の実装に応じて、さまざまなブロックをいくつかの付加的なブロックに分割するか、またはより少ないブロックに組み合わせるか、またはなくすことができる。処理はブロック２００から始まるものとしてよい。
【００３２】
ブロック２００で、プロセッサは、キャッシュに、特定のブロック内の特定のセクタ内のデータを要求するように構成されうる。処理は、ブロック２００からブロック２０２に進むことができる。
【００３３】
ブロック２０２で、プロセッサは、特定のブロックに対するデータのコピーがキャッシュ内に格納されているかどうかを判定するように構成されうる。いくつかの例では、これは、タグ配列内のタグおよび／または状態フィールドを分析することによって実行されうる。ブロックがキャッシュ内に存在していない場合（「いいえ」）、プロセッサは、キャッシュミスが発生したと判定するように構成され、処理は、ブロック２０２からブロック２１０に進むことができる。
【００３４】
ブロック２０２で、ブロックがキャッシュ内に存在しているとプロセッサが判定した場合（「はい」）、処理は、ブロック２０２からブロック２０４に進むことができる。ブロック２０４で、プロセッサは、特定のセクタ内のデータのコピーがキャッシュ内に格納されているかどうかを判定するように構成されうる。いくつかの例では、これは、セクタビットベクタを分析することによって実行されうる。特定のセクタに対するデータがキャッシュ内に格納されていない場合（「いいえ」）、プロセッサは、セクタキャッシュミスが発生したと判定するように構成され、処理は、ブロック２０４からブロック２１０に進むことができる。
【００３５】
ブロック２０４で、特定のセクタ内のデータのコピーがキャッシュ内に存在しているとプロセッサが判定した場合（「はい」）、処理は、ブロック２０４からブロック２０６に進むことができる。ブロック２０６で、プロセッサは、特定のセクタ内のデータのコピーがキャッシュのデータ配列内に格納されている場所のウェイおよび開始セクタを決定するように構成されうる。いくつかの例では、これは、ウェイおよび開始セクタフィールド内のデータを分析することによって実行されうる。処理は、ブロック２０６からブロック２０８に進むことができる。ブロック２０８で、プロセッサは、セクタビットベクタを参照することによって適切なセクタにおいてデータ配列のウェイおよび開始セクタ内に格納されている特定のセクタのデータのコピーを取り出すように構成されうる。
【００３６】
ブロック２１０で、ブロック２０２におけるブロックミスの後、またはブロック２０４におけるセクタミスの後に、プロセッサは、特定のセクタ内に格納されているデータを別のメモリからキャッシュのデータ配列のキャッシュライン内にコピーするように構成されうる。特定のセクタ内に格納されているデータは、他の異なるブロックからのデータを含むキャッシュライン内にコピーされうる。処理は、ブロック２１０からブロック２１２に進むことができる。
【００３７】
ブロック２１２で、プロセッサは、データ配列内に格納されているデータを含む特定のセクタを識別するためにキャッシュのタグ配列を更新するように構成されうる。いくつかの例では、これは、セクタビットベクタフィールドを更新することによって実行することが可能である。処理は、ブロック２１２からブロック２１４に進むことができる。
【００３８】
ブロック２１４で、プロセッサは、データを含む特定のセクタがデータ配列内において格納されているウェイを識別するためにキャッシュのタグ配列を更新するように構成されうる。いくつかの例では、これは、ウェイフィールドを更新することによって実行することが可能である。処理は、ブロック２１４からブロック２１６に進むことができる。
【００３９】
ブロック２１６で、プロセッサは、データを含む特定のセクタがデータ配列内において格納されているキャッシュライン内の開始セクタを識別するためにキャッシュのタグ配列を更新するように構成されうる。いくつかの例では、これは、開始セクタフィールドを更新することによって実行することが可能である。
【００４０】
図４は、本明細書で提示されている少なくともいくつかの実施形態により構成された例示的なコンピュータプログラム製品３００を示している。プログラム製品３００は、信号伝送媒体３０２を含むことができる。信号伝送媒体３０２は、たとえば、プロセッサによって実行されたときに、図１〜３に関して上で説明されている機能をもたらすことができる１つまたは複数の命令３０４を含むことができる。そこで、たとえば、システム１００を参照すると、プロセッサ１０２は、媒体３０２によってシステム１００に伝達される命令３０４に対する応答として図４に示されているブロックのうちの１つまたは複数を実行することができる。
【００４１】
いくつかの実装では、信号伝送媒体３０２は、限定はしないが、ハードディスクドライブ、コンパクトディスク（ＣＤ）、デジタルビデオディスク（ＤＶＤ）、デジタルテープ、メモリなどのコンピュータ可読媒体３０６を包含しうる。いくつかの実装では、信号伝送媒体３０２は、限定はしないが、メモリ、読み書き（Ｒ／Ｗ）ＣＤ、Ｒ／Ｗ  ＤＶＤなどの記録可能媒体３０８を包含しうる。いくつかの実装では、信号伝送媒体３０２は、限定はしないが、デジタルおよび／またはアナログ通信媒体（たとえば、光ファイバーケーブル、導波管、有線通信リンク、ワイヤレス通信リンクなど）などの通信媒体３１０を包含しうる。そのため、たとえば、プログラム製品３００は、ＲＦ信号伝送媒体３０２によってシステム１００の１つまたは複数のモジュールに伝達されうるものとしてよく、信号伝送媒体３０２は、ワイヤレス通信媒体３１０（たとえば、ＩＥＥＥ８０２．１１標準に適合するワイヤレス通信媒体）によって伝達される。
【００４２】
図５は、本明細書に提示されている少なくともいくつかの実施形態による記憶効率の高いセクタ化されたキャッシュを実装するように構成されている例示的なコンピューティングデバイス４００を示すブロック図である。非常に基本的な構成４０２において、コンピューティングデバイス４００は、典型的には、１つまたは複数のプロセッサ４０４およびシステムメモリ４０６を備える。メモリバス４０８は、プロセッサ４０４とシステムメモリ４０６との間の通信に使用されうる。
【００４３】
所望の構成に応じて、プロセッサ４０４は、限定はしないが、マイクロプロセッサ（μＰ）、マイクロコントローラ（μＣ）、デジタルシグナルプロセッサ（ＤＳＰ）、またはこれらの任意の組み合わせを含む任意の種類のものとすることができる。プロセッサ４０４は、一次キャッシュ４１０および二次キャッシュ４１２などの１つまたは複数のキャッシングレベルのキャッシュ、プロセッサコア４１４、およびレジスタ４１６を備えることができる。例示的なプロセッサコア４１４は、算術論理演算ユニット（ＡＬＵ）、浮動小数点演算ユニット（ＦＰＵ）、デジタル信号処理コア（ＤＳＰコア）、またはこれらの任意の組み合わせを含むことができる。例示的なメモリコントローラ４１８は、プロセッサ４０４と併用することもできるか、またはいくつかの実装では、メモリコントローラ４１８は、プロセッサ４０４の内部パーツとすることもできる。
【００４４】
所望の構成に応じて、システムメモリ４０６は、限定はしないが、揮発性メモリ（ＲＡＭなど）、不揮発性メモリ（ＲＯＭ、フラッシュメモリなど）、またはこれらの任意の組み合わせを含む任意の種類のものとすることができる。システムメモリ４０６には、オペレーティングシステム４２０、１つまたは複数のアプリケーション４２２、およびプログラムデータ４２４を格納することができる。アプリケーション４２２は、図２のシステム１００に関して説明されているものを含む本明細書で説明されているような機能を実行するように構成された記憶効率の高いセクタ化されたキャッシュアルゴリズム４２６を含むものとしてよい。プログラムデータ４２４は、本明細書で説明されているような記憶効率の高いセクタ化されたキャッシュアルゴリズムに使用することができる記憶効率の高いセクタ化されたキャッシュデータ４２８を含みうる。いくつかの実施形態では、アプリケーション４２２は、オペレーティングシステム４２０上でプログラムデータ４２４を操作し、記憶効率の高いセクタ化されたキャッシュアルゴリズムが実現されるように構成されうる。この説明されている基本的な構成４０２は、図５において、内側破線内のコンポーネントによって例示されている。
【００４５】
コンピューティングデバイス４００は、付加的な特徴または機能を有し、また基本的な構成４０２と必要なデバイスおよびインターフェースとの間の通信が容易に行えるようにするための付加的なインターフェースを備えることができる。たとえば、バス／インターフェースコントローラ４３０は、記憶装置用のインターフェースバス４３４を介して基本的な構成４０２と１つまたは複数のデータ記憶装置デバイス４３２との間の通信が容易に行えるようにするために使用できる。データ記憶装置デバイス４３２は、取り外し可能な記憶装置デバイス４３６、取り外し不可能な記憶装置デバイス４３８、またはこれらの組み合わせとすることができる。取り外し可能な記憶装置デバイスおよび取り外し不可能な記憶装置デバイスの例を２、３挙げると、フレキシブルディスクドライブおよびハードディスクドライブ（ＨＤＤ）などの磁気ディスクデバイス、コンパクトディスク（ＣＤ）ドライブまたはデジタル多用途ディスク（ＤＶＤ）ドライブなどの光ディスクドライブ、ソリッドステートドライブ（ＳＳＤ）、およびテープドライブなどがそうである。例示的なコンピュータ記憶媒体としては、コンピュータ可読命令、データ構造体、プログラムモジュール、またはその他のデータなどの情報を格納するための方法または技術で実装される揮発性および不揮発性、取り外し可能および取り外し不可能な媒体を挙げることができる。
【００４６】
システムメモリ４０６、取り外し可能記憶装置デバイス４３６、および取り外し不可能な記憶装置デバイス４３８は、すべてコンピュータ記憶媒体の実施例である。コンピュータ記憶媒体としては、限定はしないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたはその他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多目的ディスク（ＤＶＤ）またはその他の光学式記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置またはその他の磁気記憶デバイス、または所望の情報を格納するために使用することができ、しかもコンピューティングデバイス４００によってアクセスできるその他の媒体が挙げられる。このような任意のコンピュータ記憶媒体は、コンピュータデバイス４００の一部であるものとしてよい。
【００４７】
コンピューティングデバイス４００は、バス／インターフェースコントローラ４３０を介してさまざまなインターフェースデバイス（たとえば、出力デバイス４４２、周辺機器インターフェース４４４、および通信デバイス４４６）から基本構成４０２への通信を容易に行えるようにするためのインターフェースバス４４０を備えることもできる。例示的な出力デバイス４４２は、グラフィックス処理ユニット４４８およびオーディオ処理ユニット４５０を備え、これらは、１つまたは複数のＡ／Ｖポート４５２を介してディスプレイまたはスピーカーなどのさまざまな外部デバイスと通信するように構成されうる。例示的な周辺機器インターフェース４４４は、シリアルインターフェースコントローラ４５４またはパラレルインターフェースコントローラ４５６を備え、これらは、１つまたは複数のＩ／Ｏポート４５８を介して入力デバイス（たとえば、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなど）または他の周辺機器デバイス（たとえば、プリンタ、スキャナなど）などの外部デバイスと通信するように構成されうる。例示的な通信デバイス４４６は、ネットワークコントローラ４６０を備え、これは、１つまたは複数の通信ポート４６４を介してネットワーク通信リンク上で１つまたは複数の他のコンピューティングデバイス４６２との通信を容易に行えるように構成されうる。
【００４８】
ネットワーク通信リンクは、通信媒体の一例であるものとしてよい。通信媒体は、典型的には、コンピュータ可読命令、データ構造体、プログラムモジュール、または搬送波もしくは他のトランスポートメカニズムなどの変調データ信号による他のデータによって具現化されうるものであり、任意の情報配信媒体を含むことができる。「変調データ信号」は、信号内の情報を符号化する方法によりその特性のうち１つまたは複数が設定または変更された信号であるものとすることができる。たとえば、限定はしないが、通信媒体としては、有線ネットワークまたは直接配線接続などの有線媒体、および、音響、高周波（ＲＦ）、マイクロ波、赤外線（ＩＲ）、およびその他のワイヤレス媒体などのワイヤレス媒体が挙げられる。本明細書で使用されているコンピュータ可読媒体という用語は、記憶媒体と通信媒体の両方を含むことができる。
【００４９】
コンピューティングデバイス４００は、携帯電話、パーソナルデータアシスタント（ＰＤＡ）、パーソナルメディアプレーヤーデバイス、ワイヤレスウェブウォッチデバイス、パーソナルヘッドセットデバイス、特定用途向けデバイス、または上記機能のいずれかを含むハイブリッドデバイスなどのスモールフォームファクタポータブル（またはモバイル）電子デバイスの一部として実装できる。コンピューティングデバイス４００は、ラップトップコンピュータおよび非ラップトップコンピュータの両方の構成を含むパーソナルコンピュータとして実装することもできる。
【００５０】
本開示は、さまざまな態様を例示するものとして意図されている、本出願において説明されている特定の実施形態に関して限定されない。多くの修正ならびに変更は、当業者には明らかなように、本明細書の精神および範囲から逸脱することなく行うことができる。本開示の範囲内で機能的に同等の方法および装置は、本明細書に列挙されているものに加えて、当業者には前記の説明から明らかであろう。このような修正形態および変更形態は、付属の請求項の範囲内にあることが意図されている。本開示は、付属の請求項の対象である等価物の全範囲とともに、付属の請求項に関してのみ限定されるものとする。本開示は、もちろん変化しうる、特定の方法、試薬、化合物、組成物、または生体系に限定されない。また、本明細書で使用されている用語は、特定の実施形態を説明することのみを目的としており、限定的であることを意図されていないことは理解されるであろう。
【００５１】
本明細書における実質的にすべての複数形および／または単数形の用語の使用に対して、当業者は、状況および／または用途に適切なように、複数形から単数形に、および／または単数形から複数形に変換することができる。さまざまな単数形／複数形の置き換えは、理解しやすいように、本明細書で明確に説明することができる。
【００５２】
通常、本明細書において、特に添付の特許請求の範囲（たとえば、添付の特許請求の範囲の本体部）において使用される用語は、全体を通じて「オープンな（ｏｐｅｎ）」用語として意図されていることが、当業者には理解されよう（たとえば、用語「含む（ｉｎｃｌｕｄｉｎｇ）」は、「含むがそれに限定されない（ｉｎｃｌｕｄｉｎｇ  ｂｕｔ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ）」と解釈されるべきであり、用語「有する（ｈａｖｉｎｇ）」は、「少なくとも有する（ｈａｖｉｎｇ  ａｔ  ｌｅａｓｔ）」と解釈されるべきであり、用語「含む（ｉｎｃｌｕｄｅｓ）」は、「含むがそれに限定されない（ｉｎｃｌｕｄｅｓ  ｂｕｔ  ｉｓ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ）」と解釈されるべきである、など）。導入される請求項で具体的な数の記載が意図される場合、そのような意図は、当該請求項において明示的に記載されることになり、そのような記載がない場合、そのような意図は存在しないことが、当業者にはさらに理解されよう。たとえば、理解の一助として、添付の特許請求の範囲は、導入句「少なくとも１つの（ａｔ  ｌｅａｓｔ  ｏｎｅ）」および「１つまたは複数の（ｏｎｅ  ｏｒ  ｍｏｒｅ）」を使用して請求項の記載を導くことを含む場合がある。しかし、そのような句の使用は、同一の請求項が、導入句「１つまたは複数の」または「少なくとも１つの」および「ａ」または「ａｎ」などの不定冠詞を含む場合であっても、不定冠詞「ａ」または「ａｎ」による請求項の記載の導入が、そのように導入される請求項の記載を含む任意の特定の請求項を、単に１つのそのような記載を含む実施形態に限定する、ということを示唆していると解釈されるべきではない（たとえば、「ａ」および／または「ａｎ」は、「少なくとも１つの」または「１つまたは複数の」を意味すると解釈されるべきである）。同じことが、請求項の記載を導入するのに使用される定冠詞の使用にも当てはまる。また、導入される請求項の記載で具体的な数が明示的に記載されている場合でも、そのような記載は、少なくとも記載された数を意味すると解釈されるべきであることが、当業者には理解されよう（たとえば、他の修飾語なしでの「２つの記載（ｔｗｏ  ｒｅｃｉｔａｔｉｏｎｓ）」の単なる記載は、少なくとも２つの記載、または２つ以上の記載を意味する）。さらに、「Ａ、ＢおよびＣ、などの少なくとも１つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている（たとえば、「Ａ、Ｂ、およびＣの少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡおよびＢを共に、ＡおよびＣを共に、ＢおよびＣを共に、ならびに／またはＡ、Ｂ、およびＣを共に、などを有するシステムを含むが、それに限定されない）。「Ａ、Ｂ、またはＣ、などの少なくとも１つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている（たとえば、「Ａ、Ｂ、またはＣの少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡおよびＢを共に、ＡおよびＣを共に、ＢおよびＣを共に、ならびに／またはＡ、Ｂ、およびＣを共に、などを有するシステ���を含むが、それに限定されない）。２つ以上の代替用語を提示する事実上いかなる離接する語および／または句も、明細書、特許請求の範囲、または図面のどこにあっても、当該用語の一方（ｏｎｅ  ｏｆ  ｔｈｅ  ｔｅｒｍｓ）、当該用語のいずれか（ｅｉｔｈｅｒ  ｏｆ  ｔｈｅ  ｔｅｒｍｓ）、または両方の用語（ｂｏｔｈ  ｔｅｒｍｓ）を含む可能性を企図すると理解されるべきであることが、当業者にはさらに理解されよう。たとえば、句「ＡまたはＢ」は、「Ａ」または「Ｂ」あるいは「ＡおよびＢ」の可能性を含むことが理解されよう。
【００５３】
それに加えて、本開示の特徴または態様がマーカッシュグループに関して説明されている場合、本開示は、これにより、マーカッシュグループの個別のメンバーまたはメンバーのサブグループに関しても説明されることは当業者であれば理解するであろう。
【００５４】
当業者であれば理解するように、書面による明細書を提示することに関してなど、あらゆる目的について、本明細書で開示されているすべての範囲は、あらゆる可能な部分範囲およびそれらの部分範囲の組み合わせを包含する。リストされている範囲は、同じ範囲を少なくとも２等分、３等分、４等分、５等分、１０等分などに分割することを十分に記述し、またそのように分割することを可能にする範囲であると容易に理解できる。非限定的な例として、本明細書で説明されているそれぞれの範囲は、下３分の１、中３分の１、および上３分の１などに容易に分割できる。当業者であれば理解するように、「最大〜まで」、「少なくとも」、「より大きい」、「より小さい」、および同様の語句などのすべての言い回しは、参照されている数を含み、上で説明したようにその後いくつかの部分範囲に分割することができる範囲を指す。最後に、当業者であれば理解するように、範囲はそれぞれの個別のメンバーを含む。したがって、たとえば、１〜３個のセルを持つ１つのグループは、１、２、または３個のセルを持ついくつかのグループを指す。同様に、１〜５個のセルを持つ１つのグループは、１、２、３、４、または５個のセルを持ついくつかのグループを指す。
【００５５】
本明細書ではさまざまな態様および実施形態が開示されているが、他の態様および実施形態も当業者には明らかであろう。本明細書で開示されているさまざまな態様および実施形態は、例示することを目的としており、制限することを意図しておらず、真の範囲および精神は以下の請求項によって示される。
【図１】
0005597306.tif 000002
【図２】
0005597306.tif 000003
【図３】
0005597306.tif 000004
【図４】
0005597306.tif 000005
【図５】
0005597306.tif 000006