(57)【要約】      （修正有）【課題】メモリのデータにアクセスするためのシステム、方法、コンピュータプログラム製品を提供する。【解決手段】メモリの少なくとも第１メモリ領域ＭＡ０および第２メモリ領域ＭＡ１にわたって格納されたデータに対する１つ以上の要求を受信することにより作用する。続いて、少なくとも１つのプロセッサにより、メモリの第１メモリ領域内のデータのラップ読出しを実行する。その後、少なくとも１つのプロセッサにより、メモリの第２メモリ領域内のデータの連続読出しを実行する第２メモリ領域は、第１メモリ領域に隣接している。連続読出しは、第２メモリ領域の第１ラップ境界から開始し、かつ、第１メモリ領域内のデータのラップ読出しの後に自動的に実行される。【選択図】図２Ａ
2015158910.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータにより実施されるデータアクセス方法であって、
メモリの少なくとも第１メモリ領域および第２メモリ領域にわたって格納されたデータに対する１つ以上の要求を受信することと、
少なくとも１つのプロセッサによって、前記メモリの前記第１メモリ領域内のデータのラップ読出しを実行することと、
前記少なくとも１つのプロセッサによって、前記メモリの前記第２メモリ領域内のデータの連続読出しを実行することと、を含み、
前記第２メモリ領域は、前記第１メモリ領域に隣接しており、前記連続読出しは、前記第２メモリ領域の第１ラップ境界から開始し、かつ、前記第１メモリ領域内のデータの前記ラップ読出しの後に自動的に実行される、
コンピュータにより実施される方法。
【請求項２】
前記メモリの１つ以上のさらなる隣接したメモリ領域内のデータの前記連続読出しを続けることをさらに含み、
前記１つ以上のさらなる隣接したメモリ領域のうちの１つにおけるデータの前記連続読出しは、前の隣接したメモリ領域内のデータの前記連続読出しの後に、自動的に行われる、
請求項１に記載のコンピュータにより実施される方法。
【請求項３】
前記受信することは、ホストのＣＰＵからデータに対する１つ以上の要求を受信することを含む、請求項１に記載のコンピュータにより実施される方法。
【請求項４】
データに対する２つ以上の要求が受信された場合、データに対する前記受信された要求を、少なくとも前記第１メモリ領域および前記第２メモリ領域にわたるデータに対する単一の要求へと併合することをさらに含む、請求項１に記載のコンピュータにより実施される方法。
【請求項５】
前記要求されたデータが、前記メモリの複数の隣接したメモリ領域にわたって格納されているか否かを決定することをさらに含む、請求項１に記載のコンピュータにより実施される方法。
【請求項６】
前記受信することは、キャッシュメモリコントローラからデータに対する１つ以上の要求を受信することを含む、請求項１に記載のコンピュータにより実施される方法。
【請求項７】
前記少なくとも１つのプロセッサによって、少なくとも前記要求されたデータを前記キャッシュメモリコントローラに送信することをさらに含む、請求項６に記載のコンピュータにより実施される方法。
【請求項８】
前記第１メモリ領域内の前記データは、前記キャッシュメモリコントローラに関連したキャッシュの第１キャッシュラインに書き込まれ、前記第２メモリ領域内の前記データは、前記キャッシュの第２キャッシュラインに書き込まれる、請求項７に記載のコンピュータにより実施される方法。
【請求項９】
複数のメモリデバイスと、
前記複数のメモリデバイスに連結されたメモリコントローラと、を備え、
前記メモリコントローラは、
前記複数のメモリデバイスの少なくとも第１メモリ領域および第２メモリ領域にわたって格納されたデータに対する１つ以上の要求を受信し、
前記第１メモリ領域内のデータのラップ読出しを実行し、
前記第２メモリ領域内のデータの連続読出しを実行するように構成され、
前記第２メモリ領域は、前記第１メモリ領域に隣接し、前記連続読出しは、前記第２メモリ領域の第１境界から開始し、
前記複数のメモリデバイスは、前記第１メモリ領域内のデータの前記ラップ読出しを実行した後に、データの前記連続読出しが前記第２メモリ領域の前記第１境界から自動的に開始するように、構成される、
システム。
【請求項１０】
前記メモリコントローラは、さらに、１つ以上のさらなる隣接したメモリ領域内のデータの連続読出しを実行するように構成される、請求項９に記載のシステム。
【請求項１１】
前記メモリコントローラは、データに対する前記１つ以上の要求をホストのＣＰＵから受信するように構成される、請求項９に記載のシステム。
【請求項１２】
前記メモリコントローラは、データに対する前記１つ以上の要求をキャッシュメモリコントローラから受信するように構成される、請求項９に記載のシステム。
【請求項１３】
前記メモリコントローラは、さらに、前記キャッシュメモリコントローラに少なくとも前記要求されたデータを送信するように構成される、請求項１２に記載のシステム。
【請求項１４】
前記キャッシュメモリコントローラは、前記第１メモリ領域内の前記データをキャッシュの第１キャッシュラインに書込み、前記第２領域内の前記データを前記キャッシュの第２キャッシュラインに書き込むように構成される、請求項１３に記載のシステム。
【請求項１５】
前記メモリコントローラは、データに対する２つ以上の要求を受信した場合に、データに対する前記受信された要求を、少なくとも前記第１メモリ領域および前記第２メモリ領域にわたるデータに対する単一の要求に併合するように構成された併合検出モジュールを備える、請求項９に記載のシステム。
【請求項１６】
前記メモリコントローラは、
少なくとも第１メモリ領域および第２メモリ領域が隣接しているか否かを決定し、かつ
前記少なくとも第１メモリ領域および第２メモリ領域が隣接していることが決定された場合に、併合信号をアサートして、前記要求されたデータの読出し長さを更新するように構成された、併合検出モジュールを備える、
請求項９に記載のシステム。
【請求項１７】
前記メモリコントローラは、前記読出し長さの長さをカウントダウンするように構成されたカウンタをさらに備える、請求項１６に記載のシステム。
【請求項１８】
少なくとも１つのコンピュータデバイスによって実行されると、前記少なくとも１つのコンピュータデバイスに動作を実行させる命令を格納した有形のコンピュータ可読デバイスであって、前記動作は、
メモリの少なくとも第１メモリ領域および第２メモリ領域にわたって格納されたデータに対する１つ以上の要求を受信することと、
前記メモリの前記第１メモリ領域内のデータのラップ読出しを実行することと、
前記メモリの前記第２メモリ領域内のデータの連続読出しを実行することと、を含み、
前記第２メモリ領域は、前記第１メモリ領域に隣接しており、前記連続読出しは、前記第２メモリ領域の第１ラップ境界から開始し、かつ、前記第１メモリ領域内のデータの前記ラップ読出しの後に自動的に実行される、
有形のコンピュータ可読デバイス。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  商用データベースシステムは、性能の改善をキャッシング技術に頼っている。キャッシュは、ディスクベースの記憶装置などのアクセスに時間がかかる記憶装置とは対照的な、ランダムアクセスメモリ（ＲＡＭ）などの迅速にアクセス可能なメモリをサポートするために実装されることが多い。キャッシュは、典型的に、頻繁に使用されるデータを格納し、データベースシステムがデータページにアクセスするのに要する時間を短縮する。
【０００２】
[0002]  一般的に、不揮発性メモリデバイスへメモリコントローラがアクセスすると、バスマスタからの読出しトランザクション要求または書込みトランザクション要求ごとに、チップ選択信号のアサートにより読出し操作または書込み操作が開始する。メモリから読み出され、キャッシュの１つ以上のキャッシュラインを埋めるのに使用されるべきデータの塊は、メモリの複数のメモリ領域にわたって格納され得るが、これには、通常、関連したキャッシュラインに書き込まれるべき各データの塊に対して、別々の読出しコマンドを発行することを必要とする。メモリに対して複数の読出し要求を要することにより、待ち時間およびメモリへのアクセス時間が長くなる。
【発明の概要】
【０００３】
[0003]  本明細書では、複数のメモリデバイスからのデータにアクセスするためのシステム、方法、および／もしくはコンピュータプログラム製品の実施形態、ならびに／またはそれらの組み合わせおよび副次的な組み合わせが提供される。
【０００４】
[0004]  ある実施形態は、コンピュータにより実施されるキャッシュアクセス方法を含む。この方法は、メモリの少なくとも第１メモリ領域および第２メモリ領域にわたって格納されたデータに対する１つ以上の要求を受信することにより、作用する。方法は、続いて、少なくとも１つのプロセッサによって、メモリの第１メモリ領域内のデータのラップラップ読出し(wrapped read)又は先頭読出しを実行する。その後、方法は、少なくとも１つのプロセッサによって、メモリの第２メモリ領域内のデータの連続読出しを実行する。第２メモリ領域は、第１メモリ領域に隣接している。連続読出しは、第２メモリ領域の第１ラップ境界から開始し、かつ、第１メモリ領域内のデータのラップラップ読出しの後に自動的に実行される。
【０００５】
[0005]  別の実施形態は、システムを含む。このシステムは、複数のメモリデバイスと、複数のメモリデバイスに連結されたメモリコントローラと、を備える。メモリコントローラは、複数のメモリデバイスの少なくとも第１メモリ領域および第２メモリ領域にわたって格納されたデータに対する１つ以上の要求を受信するように設計される。メモリコントローラは、メモリの第１メモリ領域内のデータのラップ読出しも実行する。メモリコントローラは、メモリの第２メモリ領域内のデータの連続読出しを実行するようにも設計される。第２メモリ領域は、第１メモリ領域に隣接している。連続読出しは、第２メモリ領域の第１境界から開始する。複数のメモリデバイスは、第１メモリ領域内のデータのラップ読出しを実行した後に、データの連続読出しが第２メモリ領域の第１境界から自動的に開始するように設計される。
【０００６】
[0006]  更なる実施形態は、少なくとも１つのコンピュータデバイスによって実行されると、このコンピュータデバイスに動作を実行させる命令を格納した有形のコンピュータ可読デバイスを含む。動作は、メモリの少なくとも第１メモリ領域および第２メモリ領域にわたって格納されたデータに対する１つ以上の要求を受信することを含む。動作は、さらに、メモリの第１メモリ領域内のデータのラップ読出しを実行することを含む。動作は、さらに、メモリの第２メモリ領域内のデータの連続読出しを実行することを含む。第２メモリ領域は、第１メモリ領域に隣接している。連続読出しは、第２メモリ領域の第１ラップ境界から開始し、かつ、第１メモリ領域内のデータのラップ読出しの後に自動的に実行される。
【０００７】
[0007]  本発明のさらなる特徴および利点、ならびに本発明の多様な実施形態の構造および作用は、添付の図面を参照して、以下でより詳細に説明される。なお、本発明は、本明細書に記載される特定の実施形態に制限されない。それらの実施形態は、本明細書において、例示のみを目的として提示されている。本明細書に記載される教示に基づき、関連技術の当業者には、さらなる実施形態が明らかになるであろう。
【図面の簡単な説明】
【０００８】
[0008]  添付の図面は、本明細書に組み込まれ、かつ本明細書の一部を形成する。
【０００９】
【図１】[0009]  図１は、一例の実施形態に係る、メモリコントローラの多様な構成要素を備えたメモリシステムのブロック図である。
【図２Ａ】[0010]  図２Ａは、メモリのデータ読出しを図示する。
【図２Ｂ】[0011]  図２Ｂは、一例の実施形態に係る、メモリのデータ読出しを図示する。
【図３Ａ】[0012]  図３Ａは、一例の実施形態に係る、複数のメモリ領域にわたるデータの読出しを図示する。
【図３Ｂ】[0012]  図３Ｂは、一例の実施形態に係る、複数のメモリ領域にわたるデータの読出しを図示する。
【図４】[0013]  図４は、ある実施形態に係る、複数のメモリデバイスからデータを読み出すためのフローチャートの一例を図示する。
【図５】[0014]  図５は、多様な実施形態を実現するために有用なコンピュータシステムの一例である。
【００１０】
[0015]  図面において、同じ参照番号は、通常、同一または同様の要素を示す。加えて、一般的に、参照番号の左端の桁は、その参照番号が最初に現れる図面を特定する。
【発明を実施するための形態】
【００１１】
[0016]  なお、本明細書に記載する多様な実施形態および関連の図面は、例として提供されている。したがって、特定のメモリアドレス、キャッシュラインの数、および多様な構成要素に付与された識別表示、または生成される信号への言及は、当業者により理解される本発明の範囲または精神を制限することを意図したものではない。
【００１２】
[0017]  図１は、一例の実施形態に係る、ホストＣＴＲＬブロック１０４と複数のメモリデバイス１０８との間で信号を受信および送信するメモリコントローラ１０２を備えた一例のメモリシステム１００のブロック図である。いくつかの実施形態によると、ホストＣＴＲＬブロック１０４はメモリコントローラ１０２の一部であってもよい。ホストＣＴＲＬブロック１０４は、複数のメモリデバイス１０８へのアクセスに対し、ホストバスを介してホストＣＰＵ（図示なし）から１つ以上の要求を受信することが可能な電気回路および／または構成要素を備える。別の実施形態では、ホストＣＴＲＬブロック１０４は、キャッシュの一部を埋めるデータにアクセスするために１つ以上の要求をキャッシュメモリコントローラから受信し得る。データアクセスは、複数のメモリデバイスのうちの１つ以上に格納されたデータを取り出すための１つ以上の読出し要求を伴い得る、あるいは、データアクセスは、複数のメモリデバイスのうちの１つ以上にデータを格納するための１つ以上の書き込み要求を伴い得る。別の例では、アクセスは、複数のメモリデバイスのうちの１つ以上に格納されたデータの消去を伴い得る。ホストＣＴＲＬブロック１０４は、１つ以上のデータ要求を受信し、１つ以上のデータ信号をメモリコントローラ１０２に提供する。
【００１３】
[0018]  メモリコントローラ１０２に提供されたデータ信号は、アクセス対象のメモリキャッシュラインのバイトサイズを指定するwrap_size信号を含み得る。例えば、バイトサイズは、３２バイトまたは６４バイトのいずれでもよいが、これらに限定されない。データ信号は、アクセス対象のデータのアドレスを含むadr_dat信号も含む。adr_dat信号は、アクセス対象のデータの開始アドレスおよびこのデータの長さに関連したデータを含み得る。ＣＰＵからの要求が、書込み要求である場合、メモリコントローラ１０２に送信されるデータ信号は、メモリに書き込まれるべきデータを含むwdat_dat信号も含む。
【００１４】
[0019]  ある実施形態によると、メモリコントローラ１０２は、ホストＣＴＲＬブロック１０４から提供される多様なデータ信号を受信し、メモリプロセッサ１０６を介して複数のメモリデバイス１０８へのアクセスを適切に制御する。メモリコントローラ１０２は、デコーダ１１０、状態機械１１８、ＴＸカウンタ１１４、ＲＸカウンタ１１６、ＲＸＦＩＦＯ１２０、ＴＸＦＩＦＯ１２２、およびプロセッサ１０６を備え得る。ある実施形態では、メモリコントローラ１０２は、併合検出モジュール１１２を備える。
【００１５】
[0020]  デコーダ１１０は、適切なメモリアドレス信号およびメモリ長さ信号と共に、データ読出しまたはデータ書き込みのどちらが発生しているかを示すrw信号を生成することが可能な電気回路および／または構成要素を備え得る。デコーダ１１０は、複数のメモリデバイス１０８内のメモリ領域のデータ読出しが、ラップ読出し（wrapped read）と連続読出し（continuous read）のどちらであるかを示す種類信号を生成することができてもよい。ラップ読出しおよび連続読出しの違いについては、図２および３を参照して後により詳細に説明する。
【００１６】
[0021]  状態機械１１８は、複数のメモリデバイス１０８からＣＰＵホストへアクセスを転送し、データが複数のメモリデバイス１０８から読み出される、あるいはデータが複数のメモリデバイス１０８に書き込まれるタイミングを制御することが可能な電気回路および／または構成要素を備え得る。例えば、状態機械１１８は、複数のメモリデバイス１０８からのデータ読出し手順を開始するためのrd_start信号または複数のメモリデバイス１０８に対するデータ書込み手順を開始するためのwr_start信号を生成し得る。状態機械１１８は、要求されたデータの全てが読み出されると（あるいは、書き込まれると）、adr_rd_en信号を戻してもよい。
【００１７】
[0022]  ＴＸカウンタ１１４およびＲＸカウンタ１１６は、複数のメモリデバイス１０８の所与のメモリ領域に書き込まれるべきまたは読み出されるべきデータの長さをカウントダウンすることが可能な電気回路および／または構成要素を備え得る。例えば、ＴＸカウンタ１１４は、所与のメモリ領域に書き込まれるべきデータのカウント長さがゼロに達した時にtx_end信号を生成し得る。別の例では、ＲＸカウンタ１１６は、所与のメモリ領域から読み出されるべきデータのカウント長さがゼロに達した時にrx_end信号を生成し得る。それに加え、ＲＸカウンタ１１６は、いつメモリが所与のメモリ領域から読み出されたかを示すrx_en信号も受信し得る。
【００１８】
[0023]  ＲＸＦＩＦＯ１２０およびＴＸＦＩＦＯ１２２は、複数のメモリデバイス１０８とホストＣＴＲＬブロック１０４との間で受け渡されるデータをバッファリングすることが可能な電気回路および／または構成要素を備え得る。例えば、ＲＸＦＩＦＯ１２０は、複数のメモリデバイス１０８から読み出されるべきデータ（dq_in）を受信し、データをrxfifo_doutとしてホストＣＴＲＬブロック１０４に送信する前に、このデータの一時的なバッファを提供し得る。同様に、ＴＸＦＩＦＯ１２２は、ホストＣＴＲＬブロック１０４から書き込まれるべきデータ（wdat_dat）を受信し、データをdq_outとしてプロセッサ１０６に送信する前に、このデータの一時的なバッファを提供し得る。一例では、データのバッファリングは、データ送信における遅延を引き起こす、あるいはデータの信号特性を変化させる。
【００１９】
[0024]  プロセッサ１０６は、少なくともメモリコントローラ１０２の多様な構成要素を制御するように設計され得る。例えば、プロセッサ１０６は、メモリコントローラ１０２の構成要素から出力される多様な信号を受信し、次にメモリバスを介して複数のメモリデバイス１０８と通信する。プロセッサ１０６は、さらに、複数のメモリデバイスから読み出されたデータをdq_inとして提供するように設計されてもよい。ある実施形態によると、プロセッサ１０６は、複数のメモリデバイス１０８とメモリコントローラ１０２との間で指定されたバスプロトコルを実行する。
【００２０】
[0025]  ある実施形態では、併合検出モジュール１１２は、互いに隣接した複数のメモリ領域にわたってデータがアクセスされている時を特定することが可能な電気回路および／または構成要素を備え得る。併合検出モジュール１１２は、受信した１つ以上の読出し要求からadr_datを使用して、要求されたデータが複数のメモリデバイス１０８内の隣接したアドレスを有する複数のメモリ領域に跨って存在するか否かを決定することができる。一例では、アクセス対象のデータが互いに隣接した２つのメモリアドレス内に存在する場合、併合検出モジュール１１２は、第１のメモリ領域からのデータの読出しが完了すると、併合信号をアサートする。併合信号のアサートにより、ＲＸカウンタ１１６が第２のメモリ領域の長さで更新され、読出し動作は、第２メモリ領域に対して進行する。複数のメモリデバイス１０８の複数の隣接したメモリ領域は、このようにして読み出され得る。ある実施形態では、複数の隣接したメモリ領域間でデータを読み出す手順は、メモリコントローラ１０２による複数のデータ読出し要求の実行を必要とせずに行われる。例えば、メモリコントローラ１０２は、複数のメモリ領域にわたるデータにアクセスするために複数の読出し要求をホストＣＴＲＬブロック１０４から受信するが、併合検出モジュール１１２は、これらの複数の読出し要求を、メモリコントローラ１０２の構成要素により実行される単一のデータ読出し要求へと併合するように設計される。読出し要求の数を減少させることにより、複数のメモリデバイス１０８上のデータにアクセスする待ち時間が短縮される。別の例では、併合検出モジュール１１２は、複数の読出し要求を、ラップ読出しを使用して第１メモリ領域から読み出す読出し要求と、連続読出しを使用して任意のさらなる隣接メモリ領域から読み出すための読出し要求とである。ラップ読出しと連続読出しの違いは、図２および３を参照して、以下でより詳細に説明する。
【００２１】
[0026]  図２Ａは、２つ以上のメモリ領域にわたるデータを読み出す方法を図示する。各メモリ領域は、ラップ境界２０１によって分割され得る。ある実施形態において、各メモリ領域は、メモリキャッシュの関連したキャッシュラインに書き込まれるべきデータを含む。本例では、アクセス対象のデータは、第１メモリ領域ＭＡ０内のアドレスＣから開始し、第２メモリ領域ＭＡ１内のアドレス１６まで延在する（アドレスは、１６進法の形式で付与される）。データがＭＡ０のアドレスＣからＭＡ１のアドレス１６まで読み出される場合、このデータは、（データの読出し要求の受信から遅延した後）アドレスＣからアクセスが開始し、ラップ境界２０１ｂに到達するまで順方向に読み出される。各ラップ境界２０１ａ〜ｃは、所与のメモリ領域の開始または終了を形成し得る。さらに、ラップ境界２０１ｂは、第１メモリ領域（ＭＡ０）の終了と、隣接した第２メモリ領域（ＭＡ１）の開始の両方として作用し得る。黒点のそれぞれは、読出しデータへの新しいアクセスの開始を表し得る。メモリ領域内のどこかでデータの読出しを開始することは、非整列読出し（unaligned read）として知られる一方、整列読出し（aligned read）は、ラップ境界から開始する。
【００２２】
[0027]  ラップ境界２０１ｂに到達すると、データの読出しは、ＭＡ０のラップ境界２０１ａまで戻って開始される。これは、データの折り返し読出しとして知られている。ＭＡ０のラップ読出しが完了すると、チップ選択信号のアサートが停止され、ラップ境界２０１ｂから次のメモリ領域ＭＡ１の読出しを開始するために再アサートされなくてはならない。このプロセスは、次のメモリ領域ＭＡ１においてデータの読出しを初期化するためにメモリコントローラによって実行される他の動作と共に、図２Ａに示されるような遅延を引き起こす。データを読み出すためのアドレスが適切に初期化されると、データの読出しは、ＭＡ１において、ラップ境界２０１ｂから開始し、ラップ境界２０１ｃまで続く。ＭＡ０およびＭＡ１の各読出し動作はラップ読出しとみなされ、ＭＡ０のラップ読出しが非整列で、ＭＡ１のラップ読出しが整列である。
【００２３】
[0028]  図２Ｂは、ある実施形態に係る、２つ以上のメモリ領域にわたるデータを読み出す方法を図示する。アクセス対象のデータは、メモリ領域ＭＡ０内のアドレスＣから開始し、第２メモリ領域ＭＡ１内のアドレス１６まで延在する。各メモリ領域ＭＡ０およびＭＡ１は、３２バイトまたは６４バイトのデータを含み得る。他のデータサイズもまた可能である。ある実施形態において、各メモリ領域は、キャッシュの関連したキャッシュラインに書き込まれるべきデータを含む。
【００２４】
[0029]  ある実施形態によると、ラップ読出しは、ＭＡ０のアドレスＣから開始し、ラップ境界２０１ｂに到達すると、ラップ境界２０１ａまで折り返しするように行われる。その後、ＭＡ０のデータの全てが読み出されると、データの読出しは、自動的に、ラップ境界２０１ｂから開始し、ラップ境界２０１ｃまで続く。このようにして、ＭＡ１のデータの全てが、ラップ境界２０１ｂから開始し、ラップ境界２０１ｃで終了する連続読出しにおいて読み出される。ある実施形態によると、データは、図２Ａに示した遅延が生じることなく、両メモリ領域ＭＡ０とＭＡ１との間で読み出される。
【００２５】
[0030]  図１に戻ると、併合検出モジュール１１２は、アクセス対象のデータが２つの隣接したメモリ領域（図２ＢのＭＡ０およびＭＡ１）にわたって存在することを検出し得る。一例では、併合検出モジュール１１２は、（ＭＡ０およびＭＡ１のデータに対する）受信した２つの読出し要求を、単一の読出し要求に併合する。ある実施形態では、単一の読出し要求は、読み出されるべきデータの長さを、両メモリ領域を跨いで伸張するように更新し、メモリコントローラ１０２が２つの別個の読出し動作を実行する必要がなくなるようにする。したがって、ＭＡ０からのデータ読出しと、ＭＡ１からのデータ読出しとの間に、図２Ｂに示されるような遅延が実質的に存在しない。一例において、併合検出モジュール１１２は、ＭＡ０からデータの全てが読み出されるのを待たずに、１つ以上の受信した読出し要求を、ＭＡ０およびＭＡ１にわたるデータに対する単一の読出し要求へと併合する。
【００２６】
[0031]  ある実施形態によると、データの連続読出しは、ＭＡ０を越えて２つ以上のメモリ領域まで延長し得る。図３Ａおよび３Ｂは、いくつかの実施形態において、３つのメモリ領域にわたってデータが読み出される例を図示している。図３Ａにおいて、ある実施形態によると、ＭＡ０のデータ読出しとＭＡ１のデータの読出しとの間には、依然として遅延が示されているが、さらなる隣接したメモリ領域間のデータの読出し（例えば、ＭＡ１からメモリ領域ＭＡ２）には遅延がない。図３Ａに図示されるシナリオは、併合検出モジュール１１２を使用して、複数の読出し要求を、第１メモリ領域ＭＡ０に対する要求と、任意のさらなる隣接したメモリ領域に対する要求との２つの読出し要求へと併合する時に行われ得る。これは、現在のメモリ領域に対するラップ読出しを実行した後に、次のメモリ領域で読出しを始めることができない特定のメモリ構造に対して実行することができる。図３Ｂは、ある実施形態において、所与のメモリ領域のラップ読出しに続いて次のラップ境界で、即座に、かつ自動的に読み出すことができるメモリを使用したシナリオを示す。
【００２７】
[0032]  図３Ａおよび３Ｂの両方において、アクセス対象のデータは、メモリ領域ＭＡ０のアドレスＣから開始し、メモリ領域ＭＡ２のアドレス２Ａまで延在する。ラップ読出しは、ＭＡ０において、アドレスＣから開始し、ラップ境界３０１ｂで折り返すように行われる。ある実施形態によると、ラップ読出しが完了し、アドレスＣに戻ると、次の隣接したメモリ領域ＭＡ１の連続読出しがラップ境界３０１ｂから開始する。連続読出しは、図３Ａでは遅延と新しいアクセス要求との後に開始するが、図３Ｂでは、ほぼ即時に開始する。ある実施形態では、アクセス対象のデータは、ＭＡ１を越えてさらに続くため、同一の連続読出しもまた、ラップ境界３０１ｃを越えて続き、ＭＡ２のデータを読み出す。
【００２８】
[0033]図１を参照すると、併合検出モジュール１１２は、第１メモリ領域のラップ読出しの後に、いつ、複数の隣接したメモリ領域にわたる連続読出しが必要になるかを検出することができる。別の例では、併合検出モジュール１１２は、複数の読出しコマンドを受信した後で、かつメモリ領域から何らかのデータが読み出される前に、隣接したメモリ領域に対する複数の読出しコマンドが、いつ１つまたは２つの読出しコマンドへと併合され得るかを検出する。ある実施形態において、併合検出モジュール１１２は、受信した複数の読出しコマンドを、第１メモリ領域のラップ読出しを実行し、それに続いて、（図３Ｂに示すような）１つ以上の隣接したメモリ領域の連続読出しを実行する単一の読出しコマンドへと併合する。別の実施形態では、併合検出モジュール１１２は、受信した読出しコマンドを、第１キャッシュラインのラップ読出しを実行する第１読出しコマンドと、（図３Ａに示すような）１つ以上の隣接したメモリ領域の連続読出しを実行する第２読出しコマンドへと併合する。
【００２９】
[0034]  図４は、ある実施形態に係る、複数のメモリ領域にわたるデータを読み出すための方法４００の一例を図示する。一例において、方法４００の多様なステップは、図１のメモリコントローラ１０２内に図示される多様な構成要素によって実行され得る。当然ながら、図示されたステップ以外の他のステップが実行されてもよい。
【００３０】
[0035]  ブロック４０２において、メモリコントローラは、アイドル状態で、コマンドの待機をする。
【００３１】
[0036]  ブロック４０４において、メモリコントローラは、１つ以上のデータ読出し要求が受信されたか否かを確認する。受信されていない場合、メモリコントローラは引き続きブロック４０２にてコマンドの待機をする。１つ以上の読出し要求を受信された場合、方法４００は、ブロック４０６に進む。一例において、受信された各読出し要求は、所与のメモリ領域のラップ読出しに対する要求である。
【００３２】
[0037]  ブロック４０６において、チップ選択（ＣＳ）信号がアサートされ、データは、複数のメモリデバイス１０８から読み出されるべく準備される。この準備には、図１を参照して上述したように、メモリコントローラ１０２内の多様な信号をアサートすることを伴い得る。ある実施形態において、メモリコントローラ１０２内の併合検出モジュール１１２は、１つ以上のデータ要求を、単一のデータ要求か、または、要求されたデータが複数のメモリデバイス１０８内の隣接したメモリ領域にわたって存在する場合は、２つのデータ要求へと併合し得る。
【００３３】
[0038]  ある実施形態によると、ブロック４０８において、第１メモリ領域内のデータのラップ読出しが実行される。ラップ読出しは、アクセス対象のデータの第１メモリアドレスから開始し得る。その後、ラップ読出しは、第１メモリ領域の第２ラップ境界まで続き、第１メモリ領域の第１ラップ境界から読出しが継続される。
【００３４】
[0039]  ある実施形態よると、ブロック４１０において、隣接したメモリ領域からデータの読出しが継続されるか否かに応じた決定が成される。この決定は、ブロック４０８において記載したようなラップ読出しを実行した後に併合検出モジュール１１２によって成されてもよく、または、ブロック４０４において記載したような１つ以上の読出し要求を受信した後に併合検出モジュール１１２によって成されてもよい。読み出される次のメモリ領域が隣接していない場合、方法４００はブロック４１２へと進み、チップ選択信号（ＣＳ）のアサートが停止される。その後、方法４００は、ブロック４０２のアイドル状態に戻り、別の読出し要求の待機をする。
【００３５】
[0040]  しかし、ある実施形態によると、読み出されるべき次のメモリ領域が隣接しているとブロック４１０で決定された場合、方法４００はブロック４１４に進む。ブロック４１４において、アクセス対象の次のメモリ領域の長さは、例えばカウンタによって、更新される。ある実施形態では、次のメモリ領域内の全てのデータが読み出されることになるため、この長さは、次のメモリ領域内のアクセス対象のデータの各ビットを指定する。長さは、読み出されるべき２つ以上の隣接したメモリ領域のデータを取り入れて更新されてもよい。例えば、互いに隣接した３つのさらなるメモリ領域に対して読出し要求が受信された場合、長さは、３つのメモリ領域全ての読出しを取り入れて一度に更新され得る。別の実施形態では、長さは、現在のメモリ領域を読み出した後に、読み出されるべき次のメモリ領域について更新される。
【００３６】
[0041]  ある実施形態によると、ブロック４１６において、次のメモリ領域の連続読出しが実行される。連続読出しは、アクセスされているメモリ領域の第１ラップ境界から開始し、アクセスされているメモリ領域の第２ラップ境界で終了する。連続読出しは、メモリ領域内のデータの整列読出しであり得る。ある実施形態によると、連続読出しは、要求されたデータがメモリ領域内のあるアドレスで終了するとしても、メモリ領域全体にアクセスする。ある実施形態によると、メモリ領域の読出しが完了すると、方法４００はブロック４１０に戻り、要求されたデータが、さらなる隣接したメモリ領域内に存在するか否かを決定する。
【００３７】
[0042]  別の実施形態では、ブロック４１６における連続読出しは、一度に１つのメモリ領域だけではなく、要求されたデータを保持する全ての隣接したメモリ領域の全体を読み出す。この状況において、全ての隣接したメモリ領域の全体を読み出した後、アクセス対象のさらなる連続したメモリ領域がなくなり、方法４００はブロック４１２に進む。
［コンピュータシステムの例］
【００３８】
[0043]  多様な実施形態は、例えば、図５に示されるコンピュータシステム５００などの１つ以上の公知のコンピュータシステムを使用して実施することができる。コンピュータシステム５００は、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ（ＩＢＭ）、Ａｐｐｌｅ、Ｓｕｎ、ＨＰ、Ｄｅｌｌ、ソニー、東芝等から入手可能なコンピュータなどの、本明細書に記載された機能を果たすことが可能な任意の公知のコンピュータであってよい。
【００３９】
[0044]  コンピュータシステム５００は、プロセッサ５０４などの１つ以上のプロセッサ（中央処理装置またはＣＰＵとも呼ばれる）を備える。プロセッサ５０４は、通信インフラまたはバス５０６に接続される。
【００４０】
[0045]  １つ以上のプロセッサ５０４は、それぞれ、グラフィック処理装置（ＧＰＵ）であり得る。ある実施形態において、ＧＰＵは、電子デバイス上で数学的に集約されたアプリケーションを迅速に処理するように設計された専用の電子回路であるプロセッサである。ＧＰＵは、コンピュータグラフィックスアプリケーション、画像、および映像に共通した数学的に集約されたデータなどの、大きな塊のデータを並列処理するために効率的な並列性の高い構造を有し得る。
【００４１】
[0046]  コンピュータシステム５００は、ユーザ入力／出力インタフェース５０２を介してインフラ５０６と通信するモニタ、キーボード、ポインタデバイス等のユーザ入力／出力デバイス５０３も備える。
【００４２】
[0047]  コンピュータシステム５００は、ランダムアクセスメモリ（ＲＡＭ）などのメインメモリまたは主メモリ５０８も備える。メインメモリ５０８は、１つ以上のキャッシュレベルを含み得る。メインメモリ５０８は、制御ロジック（つまり、コンピュータソフトウェア）および／またはデータを格納している。
【００４３】
[0048]  コンピュータシステム５００は、１つ以上の二次記憶デバイスまたは二次メモリ５１０も備える。二次メモリ５１０は、例えば、ハードディスクドライブ５１２および／または取り外し可能な記憶デバイスまたはドライブ５１４を含み得る。取り外し可能な記憶ドライブ５１４は、フロッピー（登録商標）ディスクドライブ、磁気テープドライブ、コンパクトディスクドライブ、光学記憶デバイス、テープバックアップデバイスおよび／または他の記憶デバイス／ドライブであってよい。
【００４４】
[0049]  取り外し可能な記憶ドライブ５１４は、取り外し可能な記憶ユニット５１８と情報をやり取りする。取り外し可能な記憶ユニット５１８は、コンピュータソフトウェア（制御ロジック）および／またはデータを格納したコンピュータによって使用可能なまたは可読の記憶デバイスを備える。取り外し可能な記憶ユニット５１８は、フロッピー（登録商標）ディスク、磁気テープ、コンパクトディスク、ＤＶＤ、光学記憶ディスク、および、任意の他のコンピュータデータ記憶デバイスであってよい。取り外し可能な記憶ドライブ５１４は、公知の様式で、取り外し可能な記憶ユニット５１８に対して読出しおよび／または書込みを行う。
【００４５】
[0050]  例示的な実施形態によると、二次メモリ５１０は、コンピュータプログラムおよび／または他の命令および／またはデータをコンピュータシステム５００からアクセス可能にするための他の手段、手法（instrumentality）、または他のアプローチを含み得る。このような手段、手法、または他のアプローチには、例えば、取り外し可能な記憶ユニット５２２およびインタフェース５２０が含まれ得る。取り外し可能な記憶ユニット５２２およびインタフェース５２０の例として、（ビデオゲームデバイスで見られるような）プログラムカートリッジおよびカートリッジインタフェース、（ＥＰＲＯＭまたはＰＲＯＭのような）取り外し可能なメモリチップおよび関連したソケット、メモリスティックおよびＵＳＢポート、メモリカードおよび関連したメモリカードスロット、ならびに／または任意の他の取り外し可能な記憶装置および関連したインタフェースが含まれ得る。
【００４６】
[0051]  コンピュータシステム５００は、通信インタフェースまたはネットワークインタフェース５２４をさらに備えてもよい。通信インタフェース５２４は、コンピュータシステム５００が、（参照番号５２８によって個別または包括的に参照される）遠隔デバイス、遠隔ネットワーク、遠隔エンティティ等の任意の組み合わせと通信し、かつ情報のやり取りをすることを可能にする。例えば、通信インタフェース５２４は、コンピュータシステム５００が、有線および／または無線であり得、かつＬＡＮ、ＷＡＮ、インターネット等の任意の組み合わせを含み得る通信パス５２６を介して、遠隔デバイス５２８と通信できるようにする。制御ロジックおよび／またはデータは、通信パス５２６を介して、コンピュータシステム５００に送信され得る。
【００４７】
[0052]  ある実施形態において、制御ロジック（ソフトウェア）を格納した、有形のコンピュータにより使用可能なまたは可読の媒体を備えた有形の装置または有形の製造品は、本明細書において、コンピュータプログラム製品またはプログラム記憶デバイスとも呼ぶ。これには、コンピュータシステム５００、メインメモリ５０８、二次メモリ５１０、取り外し可能な記憶ユニット５１８および５２２、ならびにこれらのあらゆる組み合わせを具現化した有形の製造品が含まれるが、これらに限定されない。そのような制御ロジックは、（コンピュータシステム５００などの）１つ以上のデータ処理デバイスによって実行されると、このデータ処理デバイスに本明細書に記載したような動作を実行させる。
【００４８】
[0053]  本開示に含まれる教示に基づき、関連技術の当業者には、図５に示した以外のデータ処理デバイス、コンピュータシステム、および／またはコンピュータアーキテクチャを使用して、本発明を行い、かつ利用する方法が明らかになるであろう。特に、実施形態は、本明細書に記載した以外のソフトウェア、ハードウェア、および／またはオペレーティングシステムの実施について、作用してもよい。
［結論］
【００４９】
[0054]  当然のことながら、発明の概要および要旨の部分（存在する場合）ではなく、発明の詳細な説明部分が、請求の範囲の解釈に使用されることが意図されている。発明の概要および要旨の部分（存在する場合）は、発明者（ら）によって意図された本発明の１つ以上の全てではない例示的な実施形態を記載し得るため、本発明または添付の請求の範囲をいかようにも制限することは意図されていない。
【００５０】
[0055]  本明細書において、例示的な分野および用途向けの例示的な実施形態を参照して本発明の説明をしてきたが、当然ながら、本発明はそれらに制限されない。他の実施形態およびそれらの変形は、可能であり、かつ、本発明の範囲および精神に含まれる。例えば、本段落の一般原則を制限することなく、実施形態は、図示され、かつ／または本明細書に記載されたソフトウェア、ハードウェア、ファームウェア、および／またはエンティティに制限されない。さらに、（本明細書において明示されたか否かに関わらず）実施形態は、本明細書に記載された例以外の分野および用途に対しても顕著な有用性を有する。
【００５１】
[0056]  本明細書において、実施形態は、特定の機能の実施と、それらの関係を例示した機能的なビルディングブロックを利用して説明してきた。これらの機能的なビルディングブロックの境界は、説明の便宜上、本明細書において任意に規定した。特定の機能および関係（またはそれらの均等物）が適切に実行される限り、他の境界が規定されてもよい。また、代替的な実施形態では、機能的ブロック、工程、動作、方法等を本明細書で記載された順序とは異なる順序で実行されてもよい。
【００５２】
[0057]  「一実施形態（one embodiment）」「ある実施形態（an embodiment）」「一例の実施形態（an example embodiment）」または類似の語句は、記載された実施形態が特定の特徴、構造、または特性を備え得ることを示しているが、全ての実施形態が、必ずしも、該特定の特徴、構造、または特性を備えていなくてもよい。さらに、そのような語句は、必ずしも同一の実施形態を指すとは限らない。さらに、特定の特徴、構造、または特性が、ある実施形態に関連して説明されている場合、該特徴、構造、特性が他の実施形態にも取り込まれていることは、本明細書における明示の有無にかかわらず、当業者の知識の範囲内である。
【００５３】
[0058]  本発明の広さおよび範囲は、上述した例示的な実施形態のいずれによっても制限されるべきではなく、以下の請求の範囲およびその均等物のみに従って規定されるべきである。
【図２Ａ】
2015158910.tif 000003
【図２Ｂ】
2015158910.tif 000004
【図３Ａ】
2015158910.tif 000005
【図３Ｂ】
2015158910.tif 000006
【図４】
2015158910.tif 000007
【図５】
2015158910.tif 000008
【図１】
2015158910.tif 000009
【外国語明細書】
2015158910000001.pdf