(57)【特許請求の範囲】
【請求項１】
メモリ・ストレージとコントローラとを備えるメモリ・システム中のキャッシュ線中で動的配列データ構造を実装するための方法であって、
−  前記メモリ・ストレージ中で、前記キャッシュ線を、メタデータ・フィールドと要素フィールドとを含むキャッシュ線として構成するステップであって、前記メタデータ・フィールドが前記動的配列データ構造のメタデータを含み、前記要素フィールドが前記動的配列データ構造の各要素の値を含む、前記構成するステップと、
−  前記コントローラによって、前記動的配列データ構造に対する操作の要求を受け取るステップであって、前記要求が、前記メモリ・ストレージ中における前記キャッシュ線の場所と、前記要求を指定する情報とを示す、前記受け取るステップと、
−  前記コントローラによって、前記情報を使用して、前記動的配列データ構造に対する１つまたは複数のアクションを前記操作について識別するステップであって、前記１つまたは複数のアクションが前記コントローラ中でエンコードされる、前記識別するステップと、
−  前記要求を受け取るステップに応答して、前記１つまたは複数のエンコードされたアクションを実行することによって前記要求を実施するステップと
を含む方法。
【請求項２】
前記構成するステップがさらに、
−  前記動的配列データ構造の要素サイズを前記メタデータ中で定義するステップと、
−  前記動的配列データ構造中の要素数を前記メタデータ中で定義するステップと、
−  前記動的配列データ構造中の各要素の値を前記要素フィールド中で定義するステップとを含む、請求項１に記載の方法。
【請求項３】
前記要求が要素数操作要求を含み、前記要求を実施する前記ステップが、
−  前記メタデータ・フィールドの前記メタデータを読み取るアクションと、
−  前記動的配列データ構造中の要素数を決定するアクションと、
−  前記決定された要素数を返答として前記操作の前記要求元に送るアクションと、のうちの１つまたは複数を実施するステップを含む、請求項１または２に記載の方法。
【請求項４】
前記要求が、前記動的配列データ構造中の選択された要素の値を得るための、前記動的配列データ構造に対するｇｅｔ  ｖａｌｕｅ操作要求を含み、前記要求を実施する前記ステップが、
−  前記メタデータ・フィールドの前記メタデータを読み取るアクションと、
−  前記要素フィールド中の前記選択された要素の、前記メモリ・ストレージ中における場所を決定するアクションと、
−  前記場所を使用して、前記選択された要素の値を読み取るアクションと、
−  前記選択された要素の前記値を返答として前記操作の前記要求元に送るアクションと、のうちの１つまたは複数を実施するステップを含む、請求項１または２に記載の方法。
【請求項５】
前記要求が、値を得て前記動的配列データ構造中の選択された要素を除去するための、前記動的配列データ構造に対するｐｏｐ操作要求を含み、前記要求を実施する前記ステップが、
−  前記メタデータ・フィールドの前記メタデータを読み取るアクションと、
−  前記要素フィールド中の前記選択された要素の、前記メモリ・ストレージ中における場所を決定するアクションと、
−  前記場所を使用して、前記選択された要素の値を読み取るアクションと、
−  前記選択された要素の前記値を返答として前記操作の前記要求元に送るアクションと、
−  前記キャッシュ線を更新するアクションと、のうちの１つまたは複数を実施するステップを含み、前記更新するアクションが、前記メタデータ中の要素数をデクリメントし、前記要素フィールド中の前記要素を移動して、前記選択された要素を前記動的配列データ構造から除去するアクションを含む、請求項１または２に記載の方法。
【請求項６】
前記要求がｓｅｔ  ｖａｌｕｅ操作要求を含み、前記要求が、前記動的配列データ構造中の選択された要素の値を提供し、前記要求を実施する前記ステップが、前記メタデータ・フィールドの前記メタデータを読み取るアクションと、前記動的配列データ構造中の前記選択された要素について、前記キャッシュ線の前記要素フィールド中における場所を決定するアクションと、前記選択された要素に前記値を書き込むアクションと、のうちの１つまたは複数を実施するステップを含む、請求項１または２に記載の方法。
【請求項７】
前記要求がｐｕｓｈ  ｖａｌｕｅ操作要求を含み、前記要求が、前記動的配列データ構造中で挿入されるべき値を提供し、前記要求を実施する前記ステップが、前記メタデータ・フィールドの前記メタデータを読み取るアクションと、前記キャッシュ線を更新するアクションと、のうちの１つまたは複数のアクションを実施するステップを含み、前記更新するアクションが、前記メタデータ中の要素数をインクリメントし、前記要素フィールド中の前記要素を移動して前記動的配列データ構造の選択された要素を挿入し、前記選択された要素に前記値を書き込むアクションを含む、請求項１または２に記載の方法。
【請求項８】
前記要求がｇｅｔ  ｍｉｎｉｍｕｍ  ｖａｌｕｅ操作要求またはｇｅｔ  ｍａｘｉｍｕｍ  ｖａｌｕｅ操作要求を含み、前記要求を実施する前記ステップが、
−  前記メタデータ・フィールドの前記メタデータを読み取るアクションと、
−  前記動的配列データ構造中の全ての要素について、前記要素フィールド中における場所を決定するアクションと、
−  前記決定された場所を使用して前記動的配列データ構造中の前記全ての要素の値を読み取り、最小値または最大値を有する要素を識別するアクションと、
−  前記識別された最小値または最大値を返答として前記操作の前記要求元に送るアクションと、のうちの１つまたは複数を実施するステップを含む、請求項１または２に記載の方法。
【請求項９】
前記要求がｐｏｐ  ｍｉｎｉｍｕｍ  ｖａｌｕｅ操作要求またはｐｏｐ  ｍａｘｉｍｕｍ  ｖａｌｕｅ操作要求を含み、前記要求を実施する前記ステップが、
−  前記メタデータ・フィールドの前記メタデータを読み取るアクションと、
−  前記動的配列データ構造中の全ての要素について、前記要素フィールド中における場所を決定するアクションと、
−  前記決定された場所を使用して前記動的配列データ構造中の前記全ての要素の値を読み取り、最小値または最大値を有する要素を識別するアクションと、
−  前記識別された最小値または最大値を返答として前記操作の前記要求元に送り、前記キャッシュ線を更新するアクションと、のうちの１つまたは複数のアクションを実施するステップを含み、前記更新するアクションが、前記メタデータ中の要素数をデクリメントし、前記要素フィールド中の前記要素を移動して、前記識別された要素を前記動的配列データ構造から除去するアクションを含む、請求項１または２に記載の方法。
【請求項１０】
前記構成するステップがさらに、前記動的配列データ構造の各要素中のインスタンス・フィールドの位置およびサイズを前記メタデータ中で定義するステップを含み、前記要求がｐｏｐ  ｉｎｓｔａｎｃｅ要求を含み、前記方法がさらに、選択された要素のインスタンス・フィールドをデクリメントするステップ、デクリメントされたインスタンスが０よりも大きいことに基づいて、前記デクリメントされたインスタンス・フィールドを有する前記選択された要素を前記動的配列データ構造にプッシュバックするステップを含む、請求項１ないし９のいずれかに記載の方法。
【請求項１１】
前記要求が単一ロード命令または単一ストア命令に対応し、前記単一ロード命令または単一ストア命令が、前記コントローラによって受け取られ実施される原子的メモリ操作を含み、前記単一ロード命令または単一ストア命令が、前記要求を含む同時要求をサポートする、請求項１ないし１０のいずれかに記載の方法。
【請求項１２】
前記要素フィールドと前記メタデータ・フィールドが、前記キャッシュ線の割り振られるビットを共有し、前記キャッシュ線のビットを前記メタデータ・フィールドに割り振ることが、前記要素フィールドから別のビットを割振り解除することを含む、請求項１ないし１１のいずれかに記載の方法。
【請求項１３】
請求項１ないし１２のいずれか一項に記載の方法の方法ステップをコンピュータに実行させるプログラム。
【請求項１４】
動的配列データ構造を実装するためのシステムであって、メモリ・ストレージおよびコントローラを備え、
−  前記メモリ・ストレージ中で、キャッシュ線を、メタデータ・フィールドと要素フィールドとを含むキャッシュ線として構成することであって、前記メタデータ・フィールドが前記動的配列データ構造のメタデータを含み、前記要素フィールドが前記動的配列データ構造の各要素の値を含むものである、前記構成すること、
−  前記コントローラによって、前記動的配列データ構造に対する操作の要求を受け取ることであって、前記要求が、前記メモリ・ストレージ中における前記キャッシュ線の場所と、前記要求を指定する情報とを示すものである、前記受け取ること、
−  前記情報を使用して、前記動的配列データ構造に対する１つまたは複数のアクションを前記操作について識別することであって、前記１つまたは複数のアクションが前記コントローラ中でエンコードされる、前記識別すること、および、
−  前記要求を受け取るのに応答して、前記１つまたは複数のエンコードされたアクションを実行することによって前記要求を実施すること、
によって前記動的配列データ構造を前記キャッシュ線中で実装するように構成されたシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピューティング・システムに関し、より詳細には、キャッシュ線中で動的配列データ構造を実装するための方法に関する。
【背景技術】
【０００２】
多くのマルチスレッド化されたコンピュータ・システムまたは作業負荷は、種々の規模の会社にとって、より重要な技術の１つになる。これらは、コンピューティング・ハードウェア・プラットフォームの計算効率およびフレキシビリティを高める。しかし、より低いハードウェア労力を維持しながらも、より高い性能がなお必要とされている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明の実施形態の目的は、改善された方法、コンピュータ・システム、およびコンピュータ・プログラム製品を提供することである。この目的は、独立請求項の主題によって解決される。従属請求項に、有利な実施形態が記載される。
【課題を解決するための手段】
【０００４】
本明細書において使用されるような原子的メモリ操作（ＡＭＯ: atomic memory operation）は、共有データに対するリード−モディファイ−ライト（read-modify-write）操作を指す。ＡＭＯは、あるスレッドのリード−モディファイ−ライト操作が別のスレッドによる干渉なしで実施されるという意味で、原子的である。言い換えれば、スレッドまたはプロセッサが共有データにアクセスする（例えば同時にアクセスする）場合、各リードまたはライトまたはＡＭＯアクセスは、別のアクセスからの干渉なしで、原子的に実施される。
【０００５】
一態様では、本発明は、メモリ・ストレージとコントローラとを備えるメモリ・システム中のキャッシュ線中で動的配列データ構造を実装するための方法に関する。キャッシュ線の少なくとも一部が、動的配列データ構造としてアクセスされる（または扱われる）ことが可能である。
【０００６】
この方法は、メモリ・ストレージ中で、キャッシュ線を、メタデータ・フィールドと要素フィールドとを含むキャッシュ線として構成するステップを含み、メタデータ・フィールドは、動的配列データ構造のメタデータを含む。要素フィールドは、動的配列データ構造の各要素の要素値を含むことができる。
【０００７】
この方法はさらに、コントローラによって、動的配列データ構造に対する操作の要求を受け取るステップを含み、要求は、メモリ・ストレージ中におけるキャッシュ線の場所と、要求を指定する情報とを示す。要求を指定する情報は、操作によって必要とされる動的配列データ構造の要素を指定する情報を含むことができる。
【０００８】
この方法はさらに、コントローラによって、この情報を使用して、動的配列データ構造に対する１つまたは複数のアクションを操作について識別するステップを含み、１つまたは複数のアクションは、コントローラ中でエンコードされる。この方法はまた、要求を受け取ることに応答して、１つまたは複数のエンコードされたアクションを実行することによって要求を実施するステップを含む。
【０００９】
複数のアクションがコントローラ中でエンコードされてよい。１つまたは複数のアクションを識別するステップは、複数のアクションから１つまたは複数のアクションを選択するステップを含むことができる。
【００１０】
例えば、要求された操作は、原子的メモリ操作とすることができる。受け取られた要求は、動的配列データ構造に対する操作を求める、複数のスレッドからコントローラによって受け取られた複数の同時要求のうちの１つとすることができる。受け取られた同時要求は、順次実施されるものとすることができる。
【００１１】
これらの特徴は、メモリに記憶されたデータにアクセスするためのより単純化された方法を提供できるので、有利であろう。この方法は、既存のメモリ・システムにシームレスに統合させることができる。
【００１２】
メタデータおよび要素フィールドが単一のキャッシュ線内に収まることができることは、コントローラおよびメモリ・システムの実装を容易にすることができる。メモリ・システムを使用することで、複数の動的配列をメモリの容量まで構成することができる。
【００１３】
別の利点は、アクセスされることになる要素のアドレスを必要とすることなく要求を動的配列構造に向けることができることであろう。例えば、要求を、動的配列データ構造の最初の要素、動的配列データ構造の最後の要素、ならびに、指定されたインデックスにおける要素に向けることができる。よって、従来のＡＭＯを超えた新しいＡＭＯを実装して、上記の動的配列データ構造を使用することができる。
【００１４】
さらに他の利点は、所与の操作を実施するために単一のキャッシュ線にアクセスする方が、同じ操作を実施するために複数のキャッシュ線にアクセスするよりも速くすることができることにあるであろう。
【００１５】
これらの特徴は、例えば、この要求など、動的配列データ構造にアクセスする要求を複数のスレッドが同時に発行するマルチスレッド化されたアプリケーションで、複数のユーザまたはスレッドが動的配列データ構造を利用するための単一のインタフェースを提供することができる。
【００１６】
一実施形態によれば、構成するステップはさらに、動的配列データ構造の要素サイズをメタデータ中で定義するステップと、動的配列データ構造中の要素数をメタデータ中で定義するステップと、動的配列データ構造中の各要素の値を要素フィールド中で定義するステップとを含む。
【００１７】
この実施形態は、受け取られた要求を自律的に実行するための十分な情報をコントローラに提供できるので、有利であろう。
【００１８】
一実施形態によれば、要求はさらに、動的配列データ構造の要素の要素サイズを示す。これは、メタデータが要素サイズに関するデータを含まなくてよいので、有利であろう。
【００１９】
実施形態によれば、メタデータ・パラメータが、エラー条件の指示をイネーブルまたはディセーブルにすることができる。例えば、要求が、メタデータ中で定義される要素サイズよりも小さいまたは大きい要素サイズをそれぞれ指定するとき、コントローラは、割込みを発生させることができる。例えば、コントローラは、要素フィールドによってサポートされる最大数の要素をすでに含む動的配列データ構造へのｐｕｓｈ要求に応答して、割込みを発生させることができる。例えば、コントローラは、動的配列データ構造中にない要素のインデックスを指定するｓｅｔ要求に応答して、割込みを発生させることができる。
【００２０】
実施形態によれば、コントローラは、満たすことのできない要求に対して、事前定義済みの失敗値で返答することができる。例えば、コントローラは、動的配列データ構造中にない要素のインデックスを指定するｇｅｔ要求に応答して、事前定義済みの失敗値で返答することができる。実施形態によれば、事前定義済みの失敗値は、メタデータ中の構成可能フィールドによって決定することができる。コントローラは、なぜ要求を満たすことができないかをさらに識別するために、複数の事前定義済みの失敗値のうちの１つを返すことができる。例えば、メタデータはさらに、失敗ポップ・パラメータを含むことができる。失敗ポップ・パラメータは、動的配列データ構造が空である場合に、コントローラからｐｏｐ操作の要求元に返される返答に含めることのできる値を有することができる。
【００２１】
一実施形態によれば、要求は、要素数操作要求を含む。要求を実施するステップは、メタデータ・フィールドのメタデータを読み取るアクションと、動的配列データ構造中の要素数を決定するアクションと、決定された要素数を返答として操作の要求元に送るアクションと、のうちの１つまたは複数を実施するステップを含む。
【００２２】
一実施形態によれば、構成するステップはさらに、動的配列データ構造の要素を保持する循環バッファとして要素フィールドを使用できるようにするヘッド・インデックスおよびテール・インデックスをメタデータ中で定義して、したがっていくつかの要求については要素フィールド内での要素の移動を回避するステップを含む。
【００２３】
要求を指定する情報は、選択された要素を指定することができる。選択された要素は、動的配列データ構造中の最初の要素、動的配列データ構造中の最後の要素、または、動的配列データ構造中の指定されたインデックスにおける要素として指定されてよい。
【００２４】
一実施形態によれば、要求は、動的配列データ構造中の選択された要素の値を得るための、動的配列データ構造に対するｇｅｔ  ｖａｌｕｅ操作要求を含む。要求を実施するステップは、メタデータ・フィールドのメタデータを読み取るアクションと、要素フィールド中の選択された要素の、メモリ中における場所を決定するアクションと、この場所を使用して、選択された要素の値を読み取るアクションと、選択された要素の値を返答として操作の要求元に送るアクションと、のうちの１つまたは複数を実施するステップを含む。
【００２５】
一実施形態によれば、要求は、値を得て動的配列データ構造中の選択された要素を除去するための、動的配列データ構造に対するｐｏｐ操作要求を含む。要求を実施するステップは、メタデータ・フィールドのメタデータを読み取るアクションと、要素フィールド中の選択された要素の、メモリ中における場所を決定するアクションと、のうちの１つまたは複数を実施するステップを含む。この方法はさらに、この場所を使用して、選択された要素の値を読み取るステップと、選択された要素の値を返答として操作の要求元に送るステップと、キャッシュ線を更新するステップとを含む。更新するステップは、メタデータ中の要素数をデクリメントし、要素フィールド中の要素を移動して、選択された要素を動的配列データ構造から除去するステップを含む。
【００２６】
一実施形態によれば、要求は、ｓｅｔ  ｖａｌｕｅ操作要求を含む。この要求は、動的配列データ構造中の選択された要素の値を提供する。要求を実施するステップは、メタデータ・フィールドのメタデータを読み取るアクションと、動的配列データ構造中の選択された要素について、キャッシュ線の要素フィールド中における場所を決定するアクションと、選択された要素にこの値を書き込むアクションと、のうちの１つまたは複数を実施するステップを含む。
【００２７】
一実施形態によれば、要求は、ｐｕｓｈ  ｖａｌｕｅ操作要求を含む。この要求は、動的配列データ構造中で挿入されるべき値を提供する。要求を実施するステップは、メタデータ・フィールドのメタデータを読み取るアクションと、キャッシュ線を更新するアクションと、のうちの１つまたは複数のアクションを実施するステップを含む。更新するアクションは、メタデータ中の要素数をインクリメントし、要素フィールド中の要素を移動して動的配列データ構造の選択された要素を挿入し、選択された要素に値を書き込むアクションを含む。
【００２８】
一実施形態では、ｐｕｓｈ  ｖａｌｕｅ操作要求は、プロセッサのｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ命令に基づくｐｕｓｈ  ＡＭＯ要求とすることができ、要求に対する返答に含まれる条件は、プッシュが成功したかどうかをユーザに示す。さらに別の実施形態では、ｐｕｓｈ  ＡＭＯ要求は、プロセッサのｓｗａｐまたはｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ命令に基づき、返答の中の値は、プッシュが成功したかどうかをユーザに示す。
【００２９】
ＡＭＯ要求は、プロセッサのｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ命令と同様とすることができ、または、プロセッサのｓｗａｐもしくはｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ命令と同様とすることができる。
【００３０】
一実施形態によれば、要求は、ｇｅｔ  ｍｉｎｉｍｕｍ  ｖａｌｕｅ操作要求またはｇｅｔ  ｍａｘｉｍｕｍ  ｖａｌｕｅ操作要求を含む。要求を実施するステップは、メタデータ・フィールドのメタデータを読み取るアクションと、動的配列データ構造中の全ての要素について、要素フィールド中における場所を決定するアクションと、決定された場所を使用して動的配列データ構造中の全ての要素の値を読み取り、最小値または最大値を有する要素を識別するアクションと、識別された最小値または最大値を返答として操作の要求元に送るアクションと、のうちの１つまたは複数を実施するステップを含む。
【００３１】
一実施形態によれば、要求は、ｇｅｔ  ｍｉｎｉｍｕｍ  ｖａｌｕｅ操作要求またはｇｅｔ  ｍａｘｉｍｕｍ  ｖａｌｕｅ操作要求を含む。この要求は、動的配列データ構造の各要素を、符号なし整数、符号あり整数、または浮動小数点数、のうちの１つとして扱うことによって、最小値または最大値を有する要素を識別するアクションを指定する。
【００３２】
一実施形態によれば、要求は、ｐｏｐ  ｍｉｎｉｍｕｍ  ｖａｌｕｅ操作要求またはｐｏｐ  ｍａｘｉｍｕｍ  ｖａｌｕｅ操作要求を含む。要求を実施するステップは、メタデータ・フィールドのメタデータを読み取るアクションと、動的配列データ構造中の全ての要素について、キャッシュ線中における場所を決定するアクションと、決定された場所を使用して動的配列データ構造中の全ての要素の値を読み取り、最小値または最大値を有する要素を識別するアクションと、識別された最小値または最大値を返答として操作の要求元に送り、キャッシュ線を更新するアクションと、のうちの１つまたは複数のアクションを実施するステップを含む。更新するアクションは、メタデータ中の要素数をデクリメントし、要素フィールド中の要素を移動して、識別された要素を動的配列データ構造から除去するアクションを含む。
【００３３】
一実施形態によれば、構成するステップはさらに、動的配列データ構造の各要素中のインスタンス・フィールドの位置およびサイズをメタデータ中で定義するステップを含み、要求はｐｏｐ  ｉｎｓｔａｎｃｅ要求を含む。この方法はさらに、選択された要素のインスタンス・フィールドをデクリメントするステップ、デクリメントされたインスタンスが０よりも大きいことに基づいて、デクリメントされたインスタンス・フィールドを有する選択された要素を動的配列データ構造にプッシュバックするステップを含む。
【００３４】
例えば、要素数の要求に応答して、コントローラは、全てのインスタンスを含めた動的配列データ構造中の要素の数を、返答の中で返すことができる。
【００３５】
一実施形態によれば、要求は、単一ロード命令または単一ストア命令に対応する。単一ロード命令または単一ストア命令は、コントローラによって受け取られ実施される原子的メモリ操作を含み、単一ロード命令または単一ストア命令は、この要求を含む同時要求をサポートする。
【００３６】
コントローラの原子的性質は、動的配列データ構造の使用を求める各要求を満たすことができる。また、複数のスレッドが動的配列データ構造にアクセスするのに伴って発生する可能性のある、動的配列データ構造のデータの破損を回避することができる。
【００３７】
一実施形態によれば、要素フィールドとメタデータ・フィールドは、キャッシュ線の、割り振られるビットを共有する。キャッシュ線のビットをメタデータ・フィールドに割り振ることは、要素フィールドから別のビットを割振り解除することを含む。
【００３８】
例えば、動的配列データ構造は、メモリ・システムの２つ以上のキャッシュ線中で実装されてよく、２つ以上のキャッシュ線は、隣接するキャッシュ線である。動的配列データ構造に対する操作の要求は、２つ以上の隣接するキャッシュ線と、メモリ・システム中における２つ以上のキャッシュ線のうちの第１のキャッシュ線の場所とを示すことができる。
【００３９】
別の態様では、本発明は、前述の実施形態のうちのいずれか１つの方法の方法ステップを実施するためのコンピュータ実行可能命令を含むコンピュータ・プログラム製品に関する。
【００４０】
別の態様では、本発明は、動的配列データ構造を実装するためのシステムに関し、このシステムは、メモリ・ストレージおよびコントローラを備える。このシステムは、メモリ・ストレージ中で、キャッシュ線を、メタデータ・フィールドと要素フィールドとを含むキャッシュ線として構成するように構成され、メタデータ・フィールドは、動的配列データ構造のメタデータを含み、要素フィールドは、動的配列データ構造の各要素の値を含む。このシステムはまた、コントローラによって、動的配列データ構造に対する操作の要求を受け取るように構成され、要求は、メモリ中におけるキャッシュ線の場所と、要求を指定する情報とを示す。このシステムはまた、この情報を使用して、動的配列データ構造に対する１つまたは複数のアクションを操作について識別するように構成され、１つまたは複数のアクションは、コントローラ中でエンコードされる。このシステムはまた、要求を受け取ることに応答して、１つまたは複数のエンコードされたアクションを実行することによって要求を実施するように構成される。
【００４１】
メモリ・システムは、キャッシュ階層中のレベルであってよく、したがって、コントローラが要求を実施すると、その結果、キャッシュ階層中のより低いレベルへのメモリ・システム・アクセスとなり、それによりメタデータおよび要素がメモリ・キャッシュ中で確立されるものとすることができる。メモリ・システムは２つ以上の部分に分離していてよく、ある部分におけるコントローラが、その部分におけるメモリを使用して動的配列データ構造を操作することができる。キャッシュ・レベルは２つ以上のユニットとして複製されてよく、コントローラは、キャッシュ・ユニット内の、基礎をなすキャッシュまたはメモリ・レベルの任意の部分にアクセスすることができる。
【００４２】
本明細書において使用されるように、「コンピュータ可読ストレージ媒体」は、コンピューティング・デバイスのプロセッサによって実行可能な命令を記憶できる任意の有形ストレージ媒体を包含する。コンピュータ可読ストレージ媒体は、コンピュータ可読の非一時的なストレージ媒体と呼ばれる場合がある。コンピュータ可読ストレージ媒体はまた、有形のコンピュータ可読媒体と呼ばれる場合もある。いくつかの実施形態では、コンピュータ可読ストレージ媒体はまた、コンピューティング・デバイスのプロセッサによってアクセス可能なデータを記憶することが可能であってよい。コンピュータ可読ストレージ媒体の例は、以下のものに限定されないが、フロッピー（Ｒ）・ディスク、磁気ハード・ディスク・ドライブ、固体ハード・ディスク、フラッシュ・メモリ、ＵＳＢサム・ドライブ、ランダム・アクセス・メモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、光ディスク、光磁気ディスク、および、プロセッサのレジスタ・ファイルを含む。光ディスクの例は、コンパクト・ディスク（ＣＤ）およびディジタル多用途ディスク（ＤＶＤ）、例えば、ＣＤ−ＲＯＭ、ＣＤ−ＲＷ、ＣＤ−Ｒ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＷ、またはＤＶＤ−Ｒディスクを含む。コンピュータ可読ストレージ媒体という用語はまた、ネットワークまたは通信リンクを介してコンピュータによってアクセス可能な様々なタイプの記録媒体を指す。例えば、モデム、インターネット、またはローカル・エリア・ネットワークを介して、データを取り出すことができる。コンピュータ可読媒体に組み入れられたコンピュータ実行可能コードは、以下のものに限定されないが、ワイヤレス、ワイヤ線、光ファイバ・ケーブル、ＲＦなど、またはこれらの任意の適切な組合せを含めた、任意の適切な媒体を使用して送信することができる。
【００４３】
コンピュータ可読信号媒体は、例えばベースバンド中でまたは搬送波の一部として、コンピュータ実行可能コードが組み入れられた、伝搬データ信号を含むことができる。このような伝搬信号は、以下のものに限定されないが、電磁、光学、またはこれらの任意の適切な組合せを含めた、様々な形のいずれかをとることができる。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体でない任意のコンピュータ可読媒体であって、命令実行システム、装置、またはデバイスによって使用されるプログラムまたはそれらに関連して使用されるプログラムを通信、伝搬、または搬送できる任意のコンピュータ可読媒体とすることができる。
【００４４】
「コンピュータ・メモリ」または「メモリ」は、コンピュータ可読ストレージ媒体の例である。コンピュータ・メモリは、プロセッサから直接にアクセス可能な任意のメモリである。「コンピュータ・ストレージ」または「ストレージ」は、コンピュータ可読ストレージ媒体のさらに他の例である。コンピュータ・ストレージは、任意の不揮発性コンピュータ可読ストレージ媒体である。いくつかの実施形態では、コンピュータ・ストレージはコンピュータ・メモリでもある場合があり、またはその逆の場合もある。
【００４５】
本明細書において、「プロセッサ」は、プログラムまたは機械実行可能命令またはコンピュータ実行可能コードを実行できる、電子コンポーネントを包含する。「プロセッサ」を備えるコンピューティング・デバイスに言及する場合、これは、複数のプロセッサまたは処理コアを備える可能性があると解釈されるべきである。プロセッサは、例えば、マルチコア・プロセッサとすることができる。プロセッサはまた、単一のコンピュータ・システム内にあるかまたは複数のコンピュータ・システム間で分散された、プロセッサの集合を指す場合がある。コンピューティング・デバイスという用語もまた、１つまたは複数のプロセッサをそれぞれが備える複数のコンピューティング・デバイスの集合またはネットワークを指す可能性があると解釈されるべきである。コンピュータ実行可能コードは、同じコンピューティング・デバイス内にある場合のある、さらには複数のコンピューティング・デバイスにわたって分散されている場合のある、複数のプロセッサによって実行されることがある。
【００４６】
コンピュータ実行可能コードは、本発明の一態様をプロセッサに実施させる機械実行可能命令またはプログラムを含むことができる。本発明の態様に関する動作を行うためのコンピュータ実行可能コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（R)、Ｃ＋＋などのオブジェクト指向プログラミング言語、および、「Ｃ」プログラミング言語や類似のプログラミング言語などの従来の手続き型プログラミング言語を含めた、１つまたは複数のプログラミング言語の任意の組合せで書かれて、機械実行可能命令にコンパイルされてよい。いくつかの事例では、コンピュータ実行可能コードは、高水準言語の形であるかまたは事前コンパイルされた形であるものとすることができ、機械実行可能命令をオンザフライで生成するインタープリタと共に使用されてよい。
【００４７】
コンピュータ実行可能コードは、完全にユーザのコンピュータ上で実行されるか、スタンドアロン・ソフトウェア・パッケージとして部分的にユーザのコンピュータ上で実行されるか、部分的にユーザのコンピュータ上で実行され部分的にリモート・コンピュータ上で実行されるか、または完全にリモート・コンピュータもしくはサーバ上で実行される場合がある。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）もしくはワイド・エリア・ネットワーク（ＷＡＮ）を含めた任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、または、接続は、外部コンピュータに対して（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）行われてもよい。
【００４８】
本発明の実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品の、フローチャート、説明、またはブロック図、あるいはそれらの全てに関して、本発明の態様を述べる。適切なときは、フローチャート、説明、またはブロック図、あるいはそれらの全ての、各ブロック、またはブロックの一部を、コンピュータ実行可能コードの形のコンピュータ・プログラム命令によって実装できることは理解されるであろう。さらに、相互排他的でないときは、異なるフローチャート、説明、またはブロック図、あるいはそれらの全ての中のブロックを組み合わせてもよいことも理解されたい。これらのコンピュータ・プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロック中で指定される機能／行為を実装するための手段をもたらすように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供されて、マシンを生み出すことができる。
【００４９】
これらのコンピュータ・プログラム命令はまた、コンピュータ可読媒体に記憶された命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロック中で指定される機能／行為を実装する命令を含む製造品を生み出すように、コンピュータ可読媒体に記憶され、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに、特定の方式で機能するよう指示することができる。
【００５０】
コンピュータ・プログラム命令はまた、コンピュータまたは他のプログラム可能装置上で実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロック中で指定される機能／行為を実装するためのプロセスを提供するように、コンピュータ実装プロセスを生み出すべく、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実施させることができる。
【００５１】
当業者には理解されるであろうが、本発明の態様は、装置、方法、またはコンピュータ・プログラム製品として具現化することができる。したがって、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、または、ソフトウェアとハードウェアの態様を組み合わせた実施形態の形をとることができ、これらは全て、本明細書では「回路」、「モジュール」、または「システム」と一般に呼ばれる場合がある。さらに、本発明の態様は、コンピュータ実行可能コードを組み入れた１つまたは複数のコンピュータ可読媒体において具現化されるコンピュータ・プログラム製品の形をとることもできる。
【００５２】
前述の実施形態の１つまたは複数は、組み合わせられた実施形態が相互排他的でない限り、組み合わせることができることを理解されたい。
【００５３】
以下、図面を参照しながら、本発明の好ましい実施形態について、単なる例としてより詳細に述べる。
【図面の簡単な説明】
【００５４】
【図１】メモリ中のキャッシュ線中で動的配列データ構造を実装するための方法を実行するように動作可能なシステム・アーキテクチャを示す図である。
【図２】メモリ・システムの例示的なブロック図である。
【図３】動的配列データ構造に対する操作のシーケンスを示す図である。
【図４】メモリ中のキャッシュ線中で動的配列データ構造を実装するための方法のフローチャートである。
【発明を実施するための形態】
【００５５】
以下では、図中で同様の番号が付された要素は、同様の要素を示すか、または等価な機能を実施する要素を示すかのいずれかである。機能が等価である場合、前に論じられた要素が必ずしも後の図でも論じられるとは限らない。
【００５６】
図１に、コンピューティング・システム１００中のコンピュータ・システム（またはサーバ）１１２が、汎用コンピューティング・デバイスの形で示されている。コンピュータ・システム１１２のコンポーネントは、以下のものに限定されないが、１つまたは複数のプロセッサまたは処理ユニット１１６と、メモリ・システム１２８と、メモリ・システム１２８を含めた様々なシステム・コンポーネントをプロセッサ１１６に結合するバス１１８とを含むことができる。
【００５７】
コンピュータ・システム１１２は通常、様々なコンピュータ・システム可読媒体を備える。このような媒体は、コンピュータ・システム１１２によってアクセス可能な任意の利用可能な媒体とすることができ、揮発性と不揮発性の媒体、取外し可能と非取外し可能の媒体の両方を含む。
【００５８】
メモリ・システム１２８は、ランダム・アクセス・メモリ（ＲＡＭ）またはキャッシュ・メモリあるいはその両方など、揮発性メモリの形のコンピュータ・システム可読媒体を含むことができる。メモリ・システムは、１つまたは複数のアクティブ・バッファ付きメモリ・デバイスを含むことができる。アクティブ・バッファ付きデバイスは、複数のメモリ要素（例えばチップ）を備えることができる。アクティブ・バッファ付きメモリ・デバイスは、３次元（「３Ｄ」）メモリ・デバイスを形成するメモリの層を含むことができ、この場合、チップの個々の列が、処理ユニット１１６と通信するヴォールト（ｖａｕｌｔ）を形成する。アクティブ・バッファ付きメモリ・デバイスは、複数の処理要素によって同時にアクセスできる区分を含むことができ、これらの区分は、ヴォールトを含めた（ただしこれに限定されない）、任意の適切なメモリ・セグメントとすることができる。
【００５９】
処理ユニット１１６は、アプリケーションを実装するために、動的配列データ構造および関連するメタデータを利用して、メモリ・システムに要求を発行することができる。
【００６０】
コンピュータ・システム１１２はまた、キーボード、ポインティング・デバイス、ディスプレイ１２４など、１つもしくは複数の外部デバイス１１４；ユーザがコンピュータ・システム１１２と対話できるようにする１つもしくは複数のデバイス；または、コンピュータ・システム１１２が１つもしくは複数の他のコンピューティング・デバイスと通信できるようにする任意のデバイス（例えば、ネットワーク・カード、モデムなど）、あるはそれらの全てと、通信することができる。このような通信は、Ｉ／Ｏインタフェース１２２を介して行うことができる。さらに、コンピュータ・システム１１２は、ローカル・エリア・ネットワーク（ＬＡＮ）、一般ワイド・エリア・ネットワーク（ＷＡＮ）、または公衆ネットワーク（例えばインターネット）、あるいはそれらの全てなど、１つまたは複数のネットワークと、ネットワーク・アダプタ１２０を介して通信することができる。図示のように、ネットワーク・アダプタ１２０は、バス１１８を介して、コンピュータ・システム／サーバ１１２の他のコンポーネントと通信する。
【００６１】
図２に、メモリ・システム１２８の例示的なブロック図を詳細に示す。メモリ・システム１２８は、コントローラ２０６およびストレージ２０８を備える。ストレージ２０８は、例えば、キャッシュまたはランダム・アクセス・メモリ（ＲＡＭ）など、任意の適切な物理メモリとすることができる。
【００６２】
コントローラ２０６は、バス１１８と通信するように構成された、要求２１０の受信機２１４、および返答２１２の送信機２１６を備え、受信機２１４および送信機２１６はそれぞれ、先入れ先出しバッファ（ＦＩＦＯ）を備える。コントローラ２０６は、要求２１０に応答して、ストレージ２０８へのリード・アクセスおよびライト・アクセスを実施し、返答２１２を返すことができる。
【００６３】
ストレージ２０８は、１つまたは複数のキャッシュ線２１１を備える。動的配列データ構造２２５がキャッシュ線２１１中で実装されてよく、これは例えば、キャッシュ線２１１の少なくとも一部に動的配列としてアクセスするために、キャッシュ線２１１のこの少なくとも一部を構成することによって、行われる。このようなキャッシュ線２１１は、メタデータ・フィールド２１３および要素フィールド２１５を備える。例えば、動的配列データ構造２２５のメタデータ・フィールド２１３および要素フィールド２１５は、ユーザによってメモリ・ストレージ２０８内で構成されてよい。
【００６４】
メタデータ・フィールド２１３は、動的配列データ構造２２５のメタデータを含む。メタデータ・フィールド２１３は、動的配列データ構造２２５の要素サイズ、および動的配列データ構造２２５中の要素の数を例えば記述するパラメータの、１つまたは複数のパラメータ値を記憶することができる。
【００６５】
要素フィールド２１５およびメタデータ・フィールド２１３は、キャッシュ線２１１の、割り振られるビットを共有する。よって、キャッシュ線のビットをメタデータ・フィールド２１３に割り振ることは、要素フィールド２１５から別のビットを割振り解除することを含む。
【００６６】
例えば、メタデータ・フィールド２１３のサイズは、メタデータ・フィールド２１３中で割り振ることのできるイネーブル・ビットによって制御することができる。イネーブル・ビットは、動的配列データ構造２２５の要素サイズを記述するパラメータなど、所与のパラメータに関連付けられるものとすることができる。イネーブル・ビットがセットされた場合、所与のパラメータのパラメータ値をメタデータ・フィールド２１３に記憶することができ、したがって、これにより、メタデータ・フィールド２１３のサイズが増加する。
【００６７】
述べたメモリ・システムの構造は、例えば、要求２１０など、キャッシュ線にアクセスする要求を複数のスレッドが同時に発行するマルチスレッド化されたアプリケーションで、複数のユーザまたはスレッドが動的配列データ構造を利用するための単一のインタフェースを提供することができる。
【００６８】
動的配列データ構造２２５に対する操作の要求２１０は、コントローラ２０６によって、この操作要求に対応するアクションを実行することで実施される。これらのアクションは、コントローラ中でエンコードされる。要求を実施した後、コントローラ２０６は、通信２２０において、メタデータ・フィールド２１３中でメタデータを、例えば要素数パラメータを更新することができ、要素フィールド２１５中で動的配列データ構造２２５を更新することができる。
【００６９】
要求元またはユーザからの要求２１０は、コントローラ２０６の受信機２１４によってバス１１８から受け取られる。要求元は、アプリケーションを実行しているスレッド、例えば、ＡＭＯ操作を実行しているスレッドとすることができる。要求２１０は、メモリ中におけるキャッシュ線の場所を示す。この示されたキャッシュ線のメタデータ２１３をコントローラ２０６が読み取って、動的配列データ構造２２５のパラメータを決定する。これらのパラメータをコントローラ２０６が使用して、動的配列データ構造２２５中の選択された要素について、メモリ・ストレージ２０８中における場所を決定する。選択された要素は、要求２１０によって使用されるものである。
【００７０】
要求２１０は、要素フィールド２１５中で要素を割り振ってそこに値を記憶するｐｕｓｈ要求など、動的配列データ構造２２５に対する操作を求める任意の適切な要求とすることができる。割り振られる要素は、動的配列データ構造２２５の中間に位置する要素を含めた、要素フィールド２１５の任意の要素とすることができる。
【００７１】
通信２１８で、コントローラ２０６によって動的配列データ構造２２５の要素にアクセスすることができ、このアクセスは要求２１０中の操作に基づく。要求２１０がｐｏｐ操作要求である例では、通信２１８で読み取られた選択された要素の値が、コントローラ２０６によって返答２１２中でユーザに送信される。要求２１０がｐｕｓｈ操作要求である例では、要求２１０は、選択された要素にコントローラ２０６が通信２１８で書き込む値を提供する。
【００７２】
図３に、動的配列データ構造（例えば２２５）に対する操作のシーケンスを説明する図を示す。動的配列データ構造３２５．１は、最初は空であり、要素は０個である。動的配列データ構造に対する操作は、要素フィールド２１５の全ての要素を占めるまで要素を追加することができる。「Ｘ」の印が付いた要素フィールド３１５．１の各要素は、動的配列データ構造の要素を記憶していない空の要素を示す。操作は、同時要求として、要求されてメモリ・システムのコントローラ（例えば２０６）によって受け取られるものとすることができる。
【００７３】
キャッシュ線３１１のメタデータ・フィールド３１３．１は、動的配列データ構造３２５．１中の要素の数を示す値を記憶するためのサブフィールド３１７．１を含む。
【００７４】
シーケンスの第１の操作３０１、pushFirst(A)は、ｐｕｓｈ  ｖａｌｕｅ操作に対応する。ｐｕｓｈ  ｖａｌｕｅ操作要求は、動的配列データ構造３２５．１中で挿入されるべき値「Ａ」を提供する。コントローラ２０６は、値「Ａ」が挿入されるべき、動的配列データ構造３２５．１中の第１の要素３２１の場所を決定する。例えば、ｐｕｓｈ  ｖａｌｕｅ操作要求は、この第１の要素３２１を示すことができる。コントローラ２０６は、値「Ａ」を要素フィールド３１５．２に書き込み、この結果、１つの要素を含む動的配列データ構造３２５．２となる。加えて、コントローラは、要素数の値を増加させるように、メタデータ・フィールド３１３．１のメタデータを更新する。コントローラは、サブフィールド３１７．１の値０を読み取り、これを１つインクリメントし、インクリメントされた値１をサブフィールド３１７．２に書き込む。
【００７５】
シーケンスの第２の操作３０３、pushFirst(B)は、動的配列データ構造３２５．２の第１の要素３２１に値「Ｂ」を挿入するための、別のｐｕｓｈ  ｖａｌｕｅ操作に対応する。このために、コントローラは、値「Ａ」を要素フィールド３１５．２の第１の要素３２１から第２の要素３２３に移動して、要素フィールド３１５．２の第１の要素３２１を解放する。次に、コントローラは、値「Ｂ」を第１の要素３２１に書き込み、この結果、２つの要素を含む動的配列データ構造３２５．３となる。加えて、コントローラは、要素数の値を増加させるように、メタデータ・フィールド３１３．２のメタデータを更新する。コントローラは、サブフィールド３１７．２の値１を読み取り、１つインクリメントし、インクリメントされた値２をサブフィールド３１７．３に書き込む。
【００７６】
シーケンスの第３の操作３０５、pushFirst(C)は、動的配列データ構造３２５．３の第１の要素３２１に値「Ｃ」を挿入するための、さらに他のｐｕｓｈ  ｖａｌｕｅ操作に対応する。このために、コントローラは、値「Ａ」を第２の要素３２３から第３の要素３２４に移動して、第２の要素３２３を解放し、値「Ｂ」を第１の要素３２１から第２の要素３２３に移動して、要素フィールド３１５．３の第１の要素を解放する。次に、コントローラは、値「Ｃ」を第１の要素３２１に書き込み、この結果、３つの要素を含む動的配列データ構造３２５．４となる。加えて、コントローラは、要素数の値を増加させるように、メタデータ・フィールド３１３．３のメタデータを更新する。コントローラ２０６は、サブフィールド３１７．３の値２を読み取り、これを１つインクリメントし、インクリメントされた値３をサブフィールド３１７．４に書き込む。
【００７７】
シーケンスの第４の操作３０７、pushLast(D)は、動的配列データ構造３２５．４の最後の要素に値「Ｄ」を挿入するための、別のｐｕｓｈ  ｖａｌｕｅ操作に対応する。このために、コントローラは、サブフィールド３１７．４に記憶された要素数の値３を読み取って、要素数を決定する。さらに、コントローラは、読み出した要素数の値＋１に対応する場所を要素フィールド３１５．４中で有する要素を決定する。次に、コントローラは、値「Ｄ」を要素３２７に書き込み、この結果、４つの要素を含む動的配列データ構造３２５．５となる。
加えて、コントローラは、要素数の値を増加させるように、メタデータ・フィールド３１３．４のメタデータを更新する。コントローラ２０６は、サブフィールド３１７．４の値３を読み取り、これを１つインクリメントし、インクリメントされた値４をサブフィールド３１７．５に書き込む。
【００７８】
シーケンスの第５の操作３０９、popFirst()は、動的配列データ構造３２５．５の第１の要素の値を読み取って削除するためのｐｏｐ操作に対応する。コントローラは、値「Ｃ」を読み取り、これを操作要求元に送り返し、値「Ｃ」を要素フィールド３１５．５から除去する。次に、コントローラは、値「Ｂ」、「Ａ」、および「Ｄ」を、第２、３、および４の要素から、第１、２、および３の要素にそれぞれ移動し、この結果、３つの要素を含む動的配列データ構造３２５．６となる。
加えて、コントローラは、要素数の値を減少させるように、メタデータ・フィールド３１３．５のメタデータを更新する。コントローラは、サブフィールド３１７．５の値４を読み取り、これを１つデクリメントし、デクリメントされた値３をサブフィールド３１７．６に書き込む。
【００７９】
図４は、図１に示すメモリ・システムなどのメモリ・システムを操作して、キャッシュ線中で、例えばメモリ・システム中の単一のキャッシュ線中で、動的配列データ構造を実装するための、例示的な方法およびシステムのフローチャートである。
【００８０】
ステップ４０１で、キャッシュ線がメタデータ・フィールドおよび要素フィールドを含むように、キャッシュ線がメモリ中で構成される。構成するステップはさらに、動的配列データ構造の要素サイズ、および動的配列データ構造中の要素の数を、メタデータ中で定義するステップを含む。構成するステップはさらに、動的配列データ構造中の各要素の値を要素フィールド中で定義するステップを含む。メタデータ中のパラメータ、および要素フィールド中の要素値は、ユーザから受け取られるものとすることができる。
【００８１】
ステップ４０３で、ユーザまたは要求元からの、動的配列データ構造に対する操作の要求が、コントローラによって受け取られる。要求２１０は、操作に関するキャッシュ線のアドレス場所を提供する。要求を発行した要求元は、プロセッサ上で実行されているスレッドや、バッファ付きメモリ・スタックに含まれる処理要素や、ネットワーク・インタフェース・ロジックを経由してネットワークを介して通信するスレッドなど、任意の適切なユーザとすることができる。
【００８２】
ステップ４０５で、コントローラは、この情報を使用して、動的配列データ構造に対する１つまたは複数のアクションを、操作について識別する。１つまたは複数のアクションは、コントローラ中でエンコードされる。
【００８３】
ステップ４０７で、コントローラは、１つまたは複数のアクションを実行して要求を実施する。例えば、要求は、動的配列データ構造中の選択された要素の値を得るための、動的配列データ構造に対するｐｏｐ操作要求を含む場合がある。この場合、アクションは、コントローラによって次のように実行されてよい。すなわち、メタデータ・フィールドのメタデータを読み取り、メモリ中における選択された要素の場所を決定し、この場所を使用して、選択された要素の値を読み取り、選択された要素の値を返答として操作の要求元に送り、キャッシュ線を更新する。キャッシュ線を更新するステップは、メタデータ中の要素数をデクリメントし、要素フィールド中の要素を移動して、選択された要素を動的配列データ構造から除去するステップを含む。
【００８４】
図示のように、ステップ４０７に続いて、コントローラは、次の要求２１０に応じるために待機し、ブロック４０３に戻る。
【００８５】
最初の構成ステップ４０１は、最初の構成中に１回実施すればよく、ステップ４０３〜４０７は、操作を求める各要求がコントローラ２０６によって応じられるときに繰り返すことができる。
【符号の説明】
【００８６】
１００  コンピューティング・システム
１１２  サーバ
１１４  外部デバイス
１１６  プロセッサ
１２０  ネットワーク・アダプタ
１２２  Ｉ／Ｏインタフェース
１２４  ディスプレイ
１２８  メモリ・システム
２０６  コントローラ
２０８  メモリ・ストレージ
２１０  要求
２１１  キャッシュ線
２１２  返答
２１３  メタデータ・フィールド
２１４  受信機
２１５  要素フィールド
２１６  送信機
２１８  通信
２２０  通信
２２５  動的配列データ構造
３０１  操作
３０３  操作
３０５  操作
３０７  操作
３０９  操作
３１１  キャッシュ線
３１３  メタデータ・フィールド
３１５  要素フィールド
３１７  サブフィールド
３２１  要素
３２３  要素
３２４  要素
３２７  要素
３２５  動的配列データ構造
４０１  ステップ
４０３  ステップ
４０５  ステップ
４０７  ステップ
【図１】
0006333370.tif 000002
【図２】
0006333370.tif 000003
【図３】
0006333370.tif 000004
【図４】
0006333370.tif 000005