(57)【特許請求の範囲】
【請求項１】
処理されるべきデータブロック(Block)を、複数のデータサブブロック量がメモリのバンク(Bank)量以下の前記複数のデータサブブロックに分割するステップであって、
プリセットされるBlockサイズとメモリアクセス命令に従って、前記処理されるべきBlockを決定するステップと、
プリセットされるデータサブブロックサイズに従って、前記Blockを前記複数のデータサブブロックへ分割するステップであって、前記Blockが複数存在する場合、各Blockは同じ大きさのデータサブブロックサイズによって分割される、ステップとを含む、ステップと、
前記Blockの異なるデータサブブロックが前記メモリの異なるBankに対応している、前記処理されるべきBlockのそれぞれのデータサブブロックに対応するBankにアクセスするステップと、
を含み、前記プリセットされるBlockサイズは、前記メモリの前記Bank量と、メモリデータビット幅と、1つのバースト長と、バースト量との積であり、前記プリセットされるデータサブブロックサイズは、前記メモリデータビット幅と、1つのバースト長と、前記バースト量との積であり、前記バースト量は、前記プリセットされるデータサブブロックサイズが決定されるときに、前記データサブブロックに対するアクセス操作の実行期間が異なるBank間での切り替え待ち遅延と等しくなるように設定される、データ処理方法。
【請求項２】
前記処理されるべきBlockのそれぞれのデータサブブロックに対応するBank上でアクセス操作を実行する前記ステップは、
前記処理されるべきBlockがアクセスされる前にアクセスされるBankに対応するBankアクセスシーケンスと、前記処理されるべきBlockのそれぞれのデータサブブロックと前記メモリのBankとの間の対応に従って、前記処理されるべきBlockに対応するBankアクセスシーケンスを決定するステップと、
前記処理されるべきBlockに対応する前記Bankアクセスシーケンスに従って、前記メモリの同じBankへの2つのアクセス時間の間の時間間隔が最長になるように、前記処理されるべきBlockのそれぞれのデータサブブロックに対応する前記Bankへアクセスするステップと、
を含む、請求項1に記載の方法。
【請求項３】
処理されるべきデータブロック(Block)を、複数のデータサブブロック量がメモリのバンク(Bank)量以下の前記複数のデータサブブロックへ分割するように構成される分割モジュールであって、詳細には、プリセットされるBlockサイズとメモリアクセス命令に従って、前記処理されるべきBlockを決定し、プリセットされるデータサブブロックサイズに従って、前記Blockを前記複数のデータサブブロックへ分割するように構成され、前記Blockが複数存在する場合、各Blockは同じ大きさのデータサブブロックサイズによって分割される、分割モジュールと、
前記Blockの異なるデータサブブロックが前記メモリの異なるBankに対応している、前記処理されるべきBlockのそれぞれのデータサブブロックに対応するBank上でアクセス操作を実行するように構成されるアクセスモジュールと、
を含み、前記プリセットされるBlockサイズは、前記メモリの前記Bank量と、メモリデータビット幅と、1つのバースト長と、バースト量との積であり、前記プリセットされるデータサブブロックサイズは、前記メモリデータビット幅と、1つのバースト長と、前記バースト量との積であり、前記バースト量は、前記プリセットされるデータサブブロックサイズが決定されるときに、前記データサブブロックに対するアクセス操作の実行期間が異なるBank間での切り替え待ち遅延と等しくなるように設定される、データ処理装置。
【請求項４】
前記アクセスモジュールは、詳細には、前記処理されるべきBlockがアクセスされる前にアクセスされるBankに対応するBankアクセスシーケンスと、前記処理されるべきBlockのそれぞれのデータサブブロックと前記メモリのBankとの間の対応とに従って、前記処理されるべきBlockに対応するBankアクセスシーケンスを決定し、前記処理されるべきBlockに対応する前記Bankアクセスシーケンスに従って、前記メモリの同じBankへの2つのアクセス時間の間の時間間隔が最長になるように、前記処理されるべきBlockのそれぞれのデータサブブロックに対応する前記Bankにアクセスするように構成される、請求項3に記載の装置。
【請求項５】
データ処理システムであって、プロセッサと、メモリと、データ線とを含み、前記メモリは複数のバンク(Bank)を含み、前記システムが動作する場合には、前記プロセッサは、前記データ線を通して前記メモリと通信し、前記プロセッサは、詳細には、
処理されるべきデータブロック(Block)を、複数のデータサブブロック量が前記メモリのバンク(Bank)量以下の前記複数のデータサブブロックへ分割し、詳細には、プリセットされるBlockサイズとメモリアクセス命令に従って、前記処理されるべきBlockを決定し、プリセットされるデータサブブロックサイズに従って、前記Blockを前記複数のデータサブブロックへ分割し、
前記Blockの異なるデータサブブロックが前記メモリの異なるBankに対応している、前記処理されるべきBlockのそれぞれのデータサブブロックに対応するBank上でアクセス操作を実行する、
ように構成され、前記Blockが複数存在する場合、各Blockは同じ大きさのデータサブブロックサイズによって分割され、前記プリセットされるBlockサイズは、前記メモリの前記Bank量と、メモリデータビット幅と、1つのバースト長と、バースト量との積であり、前記プリセットされるデータサブブロックサイズは、前記メモリデータビット幅と、1つのバースト長と、前記バースト量との積であり、前記バースト量は、前記プリセットされるデータサブブロックサイズが決定されるときに、前記データサブブロックに対するアクセス操作の実行期間が異なるBank間での切り替え待ち遅延と等しくなるように設定される、データ処理システム。
【請求項６】
前記プロセッサは、詳細には、前記処理されるべきBlockがアクセスされる前にアクセスされるBankに対応するBankアクセスシーケンスと、前記処理されるべきBlockのそれぞれのデータサブブロックと前記メモリのBankとの間の対応とに従って、前記処理されるべきBlockに対応するBankアクセスシーケンスを決定し、前記処理されるべきBlockに対応する前記Bankアクセスシーケンスに従って、前記メモリの同じBankへの2つのアクセス時間の間の時間間隔が最長になるように、前記処理されるべきBlockのそれぞれのデータサブブロックに対応する前記Bankにアクセスするように構成される、請求項5に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ技術分野に関連し、より詳細には、データ処理方法、装置、およびシステムに関する。
【背景技術】
【０００２】
ダブル・データ・レート・スリー・シンクロナス・ダイナミック・ランダム・アクセス・メモリ(double data rate type three synchronous dynamic random access memory、略してDDR3 SDRAM)は、現在最も広範に適用されているメモリ製品であり、価格、バンド幅、電力消費などに関して大きな利点を有する。
【０００３】
DDR3 SDRAMは長さ8のバーストアクセスを一般に使用し、1回のバーストアクセスは、メモリに対する1つのリード(read、略してRD)またはライト(write、略してWR)コマンドを指す。たとえば、DDR3チップのデータビット幅が16ビット(英語ではbit)であり、バースト長が8の場合では、データビット幅は、本明細書では、プロセッサとDDR3チップ間の1本のデータ線の合計の幅を指し、バースト長は、1回のバーストアクセスでアクセスされるデータ長を指し、リードの各回に16bit×8=128bitのデータが返却される。
【０００４】
DDR3 SDRAMメモリ本体は、8個の異なるバンク(Bank)を一般に含み、それぞれのバンクは複数の行に分割され、それぞれの行はページ(Page)と呼ばれ、それぞれのページは複数の列にさらに分割される。図1に示すように、一般的なリードプロセスは、プロセッサが、起動(ACT)コマンドと、ページを開くためにアクセスされるべき1つのBankアドレス(Bankアドレスは図のBA0によって特定される)と1つの(図のRAxとRAyなどの)行アドレスをDDR3 SDRAMへ送信し、次いで、リード(RD)コマンドと(図のCAxなどの)内部ページ列アドレスを送信し、リード操作はリードコマンドを使用して1つのページ内で連続して実行できるが、1つの内部ページ内の場合には、現在開かれているページを閉じるために、最初にプリチャージ(Precharge、略してPRE)コマンドを送信し、そして対応するページを開くためにACTコマンドを再度送信する必要がある。本方法では、同一Bank内のページ間で切り替えが実行される場合には、2つのリードコマンド間にtRTP+tRP+1クロックサイクルの待ち時間が必要であり、ここで、tRTPはリードコマンド送信からプリチャージPREコマンド送信まで(すなわち、1クローズBankコマンド)の時間であり、tRPは1つのBankバンクを閉じるために必要とされる時間であり、1つのACTコマンド送信から1つのリードコマンド送信までに少なくとも1クロックサイクルが必要とされる。図2に示すように、1つの一般的なライトプロセスは、プロセッサが、1つの起動(ACT)コマンドと、書き込まれるべき1つのBankアドレスと行アドレスとをDDR3 SDRAMへ送信し、ライト操作はライトコマンドを使用して1つのページ内で連続的に実行できるが、内部ページの場合には、現在開いているページを閉じるために、最初に1つのPREコマンドを送信し、再度ACTコマンドを送信する必要がある。本方法では、同一Bankの中のページ間で切り替えが実行される場合には、2つのライト(WR)コマンドの間に、WL+4+tWR+tRPクロックサイクルの延長が必要であり、ここでWLは1回のライト待ち時間、すなわち、ライトコマンドが送信された後、ライト操作が開始される前に依然としてWLクロックサイクルの経過が必要であり、その後、4クロックサイクルのライト時間が存在し、tWRはライト操作が実行された後のライト回復時間であり、tRPは1つのバンクを閉じるための時間である。
【０００５】
前述のプロセスから、1つのアクセス操作が実行された後に、2つの連続するメモリアクセス操作が同一Bankの異なるページにアクセスする場合には、後者のアクセス操作が実行される前に、比較的長い待ち時間が必要とされ、アクセス効率を著しく低下させることが分かるであろう。
【発明の概要】
【課題を解決するための手段】
【０００６】
本発明の実施形態は、2つの連続するメモリアクセス操作が同じBankの異なるページにアクセスする場合に、アクセス効率が比較的低いという従来技術の問題を解決するために、データ処理方法と装置を提供する。
【０００７】
第1の態様において、データ処理方法が提供され、本方法は、
処理されるべきデータブロックBlockを、複数のデータサブブロック量がメモリのバンクBank量以下の複数のデータサブブロックへと分割するステップと、
Blockの異なるデータサブブロックがメモリの異なるBankに対応している、処理されるべきBlockのそれぞれのデータサブブロックに対応するBank上で、アクセス操作を実行するステップと、
を含む。
【０００８】
第1の態様を参照して、第1の可能な実装方法では、処理されるべきBlockを複数のデータサブブロックに分割するステップは、
プリセットされるBlockサイズとメモリアクセス命令に従って、処理されるべきBlockを決定するステップと、
プリセットされるデータサブブロックサイズに従って、Blockを複数のデータサブブロックに分割するステップと、
を含む。
【０００９】
第1の態様の第1の可能な実装方法を参照して、第2の可能な実装方法では、プリセットされるBlockサイズは、メモリのBank量と、メモリデータビット幅と、1つのバースト長と、バースト量との積であり、プリセットされるデータサブブロックサイズは、メモリデータビット幅と、1つのバースト長と、バースト量との積である。
【００１０】
第1の態様、または、第1の態様の第1もしくは第2の可能な実装方法を参照して、第3の可能な実装方法では、処理されるべきBlockのそれぞれのデータサブブロックに対応するBank上でアクセス操作を実行するステップは、
処理されるべきBlockがアクセスされる前にアクセスされるBankに対応するBankアクセスシーケンスと、処理されるべきBlockのそれぞれのデータサブブロックとメモリのBankとの間の対応に従って、処理されるべきBlockに対応するBankアクセスシーケンスを決定するステップと、
処理されるべきBlockに対応するBankアクセスシーケンスに従って、処理されるべきBlockのそれぞれのデータサブブロックに対応するBankに、メモリの同じBankへの2つのアクセス時間の間の時間間隔が最長になるようにアクセスするステップと、
を含む。
【００１１】
第2の態様では、データ処理装置が提供され、本装置は、
処理されるべきデータブロックBlockを、複数のデータサブブロック量がメモリのバンクBank量以下の複数のデータサブブロックへ分割するように構成される分割モジュールと、
Blockの異なるデータサブブロックがメモリの異なるBankに対応している、処理されるべきBlockのそれぞれのデータサブブロックに対応するBank上でアクセス操作を実行するように構成されるアクセスモジュールと、
を含む。
【００１２】
第2の態様を参照して、第1の可能な実装方法では、分割モジュールは、詳細には、プリセットされるBlockサイズとメモリアクセス命令に従って処理されるべきBlockを決定し、プリセットされるデータサブブロックサイズに従って、Blockを複数のデータサブブロックへ分割するように構成される。
【００１３】
第2の態様の第1の可能な実装方法を参照して、第2の可能な実装方法では、プリセットされるBlockサイズは、メモリのBank量と、メモリデータビット幅と、1つのバースト長と、バースト量との積であり、プリセットされるデータサブブロックサイズは、メモリデータビット幅と、1つのバースト長と、バースト量との積である。
【００１４】
第2の態様、または、第2の態様の第1もしくは第2の可能な実装方法を参照して、第3の可能な実装方法では、アクセスモジュールは、詳細には、処理されるべきBlockがアクセスされる前にアクセスされるBankに対応するBankアクセスシーケンスと、処理されるべきBlockのそれぞれのテータサブブロックとメモリのBankとの間の対応とに従って、処理されるべきBlockに対応するBankアクセスシーケンスを決定し、処理されるべきBlockに対応するBankアクセスシーケンスに従って、メモリの同じBankへの2つのアクセス時間の間の時間間隔が最長になるように、処理されるべきBlockのそれぞれのデータサブブロックに対応するBankにアクセスするように構成される。
【００１５】
第3の態様では、データ処理システムが提供され、本システムは、プロセッサと、メモリと、データ線とを含み、メモリは複数のバンクBankを含み、システムが動作する場合には、プロセッサはデータ線を通してメモリと通信し、プロセッサは、詳細には、
処理されるべきデータブロックBlockを、複数のデータサブブロック量がメモリのバンクBank量以下の複数のデータサブブロックへ分割し、
Blockの異なるデータサブブロックがメモリの異なるBankに対応する、処理されるべきBlockのそれぞれのデータサブブロックに対応するBank上でアクセス操作を実行する、
ように構成される。
【００１６】
第3の態様を参照して、第1の可能な実装方法では、プロセッサは、
プリセットされるBlockサイズとメモリアクセス命令に従って、処理されるべきBlockを決定し、
プリセットされるデータサブブロックサイズに従って、Blockを複数のデータサブブロックへと分割する、
ように構成される。
【００１７】
第3の態様の第1の可能な実装方法を参照して、第2の可能な実装方法では、プリセットされるBlockサイズは、メモリのBank量と、メモリデータビット幅と、1つのバースト長と、バースト量との積であり、プリセットされるデータサブブロックサイズは、メモリデータビット幅と、1つのバースト長と、バースト量との積である。
【００１８】
第3の態様、または、第3の態様の第1もしくは第2の可能な実装方法を参照して、第3の可能な実装方法では、プロセッサは、
処理されるべきBlockがアクセスされる前にアクセスされるBankに対応するBankアクセスシーケンスと、処理されるべきBlockのそれぞれのデータサブブロックとメモリのBankとの間の対応に従って、処理されるべきBlockに対応するBankアクセスシーケンスを決定し、処理されるべきBlockに対応するBankアクセスシーケンスに従って、メモリの同じBankへの2つのアクセス時間の間の時間間隔が最長になるように、処理されるべきBlockのそれぞれのデータサブブロックに対応するBankにアクセスするように構成される。
【００１９】
本発明の実施形態では、メモリアクセス命令を受信した後、プロセッサは、処理されるべきBlockを複数のデータサブブロックへと分割し、異なるデータサブブロックを異なるBankへ写像し、本方法で、同じBlock上の内部ページアクセス操作が削減され、それによってメモリのアクセス効率を改善できる。
【図面の簡単な説明】
【００２０】
【図１】従来技術によるDDR3 SDRAM上のリード操作を実行する概略図である。
【図２】従来技術によるDDR3 SDRAM上のライト操作を実行する概略図である。
【図３】本発明の1実施形態によるデータ処理を実行する概略図である。
【図４】本発明の実施形態1によるデータ処理方法のフローチャートである。
【図５】従来のメモリアクセス操作における写像関係の概略図である。
【図６】本発明の1実施形態によるメモリアクセス操作における写像関係の概略図である。
【図７】本発明の実施形態2によるデータ処理方法のフローチャートである。
【図８】本発明の実施形態3によるデータ処理装置の概略構造図である。
【図９】本発明の実施形態4によるデータ処理システムの概略構造図である。
【発明を実施するための形態】
【００２１】
図3に示すように、図3は、本発明の1実施形態によるデータ処理を実行する概略図である。本発明の実施形態では、メモリアクセス命令を受信した後、プロセッサは、従来の方法に従って1つのデータブロックBlockを1つのBankへ写像せず、その代わりに、Blockを複数のデータサブブロックへ分割し、異なるデータサブブロックを異なるBankへ写像する。本方法では、同じBlock上での内部ページアクセス操作が削減され、それによってメモリアクセス効率を改善できる。
【００２２】
以下に、仕様の添付図を参照して、本発明の実施形態をさらに詳細に記述する。
【００２３】
図4に示すように、図4は本発明の実施形態1によるデータ処理方法のフローチャートであり、本方法は以下のステップを含む。
S401:プロセッサは、処理されるべきデータブロックBlockを、複数のデータサブブロック量がメモリのバンクBank量以下の複数のデータサブブロックへ分割する。
【００２４】
このステップでは、メモリアクセス命令を受信した後、プロセッサは、メモリアクセス命令によって指示される処理されるべきデータとプリセットされるBlockサイズに従って、それぞれの処理されるべきBlockを決定でき、それぞれのデータサブブロックのプリセットされるサイズに従って、それぞれのBlockを複数のデータサブブロックへ分割する。メモリアクセス命令は、コンピュータプログラムまたはオペレータによって起動されるデータ処理操作要求を指す。プログラムまたはオペレータがデータ処理操作要求をプロセッサに送信した後、プロセッサは、データ処理操作要求によって指示される処理されるべきデータをメモリの中に一時的に格納する(すなわち、データをメモリに書き込む)。プロセッサがアイドルの場合には、処理されるべきデータが読み出されて、処理された後に出力される。本発明の本実施形態におけるアクセス操作は、メモリ上で実行されるリード操作またはライト操作を含む。
【００２５】
図5に示すように、従来のメモリアクセス操作では、プロセッサは、一般に、1つのBlockをメモリの1つの同じBankに写像し、それは、同じBank上での内部ページアクセス操作になりやすい。本発明の本実施形態では、プロセッサは、それぞれのBlockを複数のデータサブブロックへ分割し、次のステップS402で紹介するように、Blockのそれぞれのデータサブブロックを異なるBankに写像する。本発明の本実施形態では、異なるBank間での切り替え待ち遅延は、同じBank内のページ切り替え待ち遅延よりも非常に少なく、それはメモリアクセス効率に対する比較的小さな影響となる。加えて、本発明の本実施形態では、データサブブロックサイズは適切に設定されており、そのため、データサブブロックに対するアクセス操作の実行期間が、異なるBank間での切り替え待ち遅延と等しく、したがって、異なるBank間でシームレスな切り替えを実装でき、メモリアクセス効率をさらに改善できる。
【００２６】
S402:プロセッサは、Blockの異なるデータサブブロックがメモリの異なるBankに対応している、処理されるべきBlockのそれぞれのデータサブブロックに対応するBank上でアクセス操作を実行する。
【００２７】
このステップで、それぞれのデータサブブロックとBankとの間の写像関係に従って、プロセッサは、それぞれのデータサブブロックに対するメモリアクセス操作を連続して実行できる。たとえば、メモリライト操作が1つのBlockに対して実行される場合には、そのBlockのそれぞれのデータサブブロックは、そのデータサブブロックに対応するBankへ連続して書き込まれ、メモリリード操作が1つのBlock上で実行される場合には、そのBlockのそれぞれのデータサブブロックは、そのデータサブブロックに対応するBankから連続して読み出され、処理された後、出力される。
【００２８】
8つの異なるBankを一般に含むDDR3 SDRAMが実施例として用いられる。図6に示すように、図6は、本発明の1実施形態による、それぞれのBlockの複数のデータサブブロックを異なるBankへ別々に写像する概略図である。本発明の本実施形態では、同じBlockの異なるデータサブブロックがメモリの異なるBankに対応し、1つの同じBankは、複数の異なるBlockのデータサブブロックに対応できる。たとえば、Block0のデータサブブロック1〜8は、Bank0〜7へそれぞれ写像され、Block1のデータサブブロック1〜8も、Bank0〜7へそれぞれ写像される。
【００２９】
たとえば、図6に示す写像方法が使用され、同じBlockの異なるデータサブブロックが異なるBankへ写像され、そのようにして、同じBlockに対して、異なるBank間で切り替えが実行されるアクセス操作が実装され、それにより、同じBankの中でのページ切り替え待ち遅延が減少して、メモリアクセス効率を改善する。
【００３０】
BlockのそれぞれのデータサブブロックとメモリのそれぞれのBankとの間の写像関係は予め定義でき、メモリのBankアクセスシーケンスはプリセット可能である。メモリのBank量が8であるものが依然として実施例として使用され、1つのBlockのそれぞれのデータサブブロック、たとえば、データサブブロック1〜8は、昇順に番号が付けられたBank(Bank0〜Bank7)へ、または、降順に番号が付けられたBank(Bank7〜Bank0)へ連続して写像でき、メモリのBankアクセスシーケンスはBank0からBank7のようにプリセットされる。
【００３１】
特定の実装プロセスでは、生じる可能性のある同じBankの中でのページ切り替え待ち遅延をできる限り避けるために、メモリの同じBankへの2つのアクセス時間の間の時間間隔を最長にできる、すなわち、同じBank上の2つのアクセス操作が、他のBankへの最長のアクセス時間量によって間隔があけられる。詳細には、処理されるべきBlockに対応するBankアクセスシーケンスは、処理されるべきBlockがアクセスされる前にアクセスされるBankに対応するBankアクセスシーケンスに従って決定でき、たとえば、メモリのBank量が8の場合には、同じBank上の2つのアクセス操作間の最長時間間隔が、7つのBankにアクセスする時間となる。詳細には、S402で、処理されるべきBlockのそれぞれのデータサブブロックに対応するBank上のアクセス操作を実行するステップは、
処理されるべきBlockがアクセスされる前にアクセスされるBankに対応するBankアクセスシーケンスと、処理されるべきBlockのそれぞれのデータサブブロックとメモリのBankとの間の対応に従って、処理されるべきBlockに対応するBankアクセスシーケンスを決定するステップと、
処理されるべきBlockに対応するBankアクセスシーケンスに従って、メモリの同じBankへの2つのアクセス時間の間の時間間隔が最長になるように、処理されるべきBlockのそれぞれのデータサブブロックに対応するBankにアクセスするステップと、
を含む。
【００３２】
たとえば、1つのメモリが8つのBankを含み、プリセットされるアクセスシーケンスはBank0からBank7であり、Block1は4つのデータサブブロックへ分割され、それらはBank0〜Bank3へ写像され、Block1に対応するBank0〜Bank3は、プリセットされるアクセスシーケンスに従って順にアクセスされる。次の処理されるべきBlock、Block2は、8つのデータサブブロックに分割され、それらはBank0からBank7へ写像され、Block2のデータサブブロックに対応するBankがプリセットされるアクセスシーケンスに従って単にアクセスされる場合には、同じBankへの2つのアクセス時間の間の時間間隔は、3つのBankにアクセスする時間であり、たとえば、Bank0にアクセスする2つのアクセス操作は、Bank1〜Bank3にアクセスする時間のみで間隔があけられる。同じBank上の2つのアクセス操作の間の時間間隔を最長にするために、前のBlockに対するBankアクセスシーケンスに従って、現在処理されるべきBlockに対応するBankアクセスシーケンスを決定できる。詳細には、Block1に対するアクセス操作が実行される場合には、Block0〜3が連続してアクセスされ、次いで、Block2に対するアクセス操作が実行され、Block2のデータサブブロック1〜8は、Bank0〜7にそれぞれ対応し、同じBank上の2つのアクセス操作の間の時間間隔を最長にするために、Block2に対応するBankアクセスシーケンスは、Bank4、Bank5、Bank6、Bank7、Bank0、Bank1、Bank2、Bank3のように決定される。本方法では、同じBankにアクセスする2つのアクセス操作は、7つのBankにアクセスする時間によって間隔があけられる。
【００３３】
本発明の実施形態1における前述のデータ処理ステップから、本発明の本実施形態では、同じBlockの異なるデータサブブロックが異なるBankに写像できるが、メモリチップのBank量は固定され、したがって、特定の実装では、Blockサイズを制限する必要があり、そうすることで、不適切なBank量により、Blockのいくつかのデータサブブロックが同じBankに写像され、処理の複雑さが増加するのを回避できないという状況を回避することが分かるであろう。その一方で、プロセッサがデータブロックBlockをメモリに書き込む前に、Blockの開始アドレスが記録される必要があり、プロセッサの記録負荷を削減するために、Blockサイズはあまりにも小さく設定できない。選択的な実装方法のように、Blockサイズはページサイズと等しく最初に設定でき、データサブブロックサイズはBlockサイズとメモリチップのBank量の商に設定できる。
【００３４】
特定の実装では、異なるBank間で切り替えが実行される場合には、待ち遅延も存在し、待ち遅延が同じBankの中のページ切り替え待ち遅延よりも確実にかなり少なくなる。本発明の好ましい実装方法では、異なるBankの間でのシームレスな切り替えが、それぞれのデータサブブロックのサイズを適切に設定することで実現でき、すなわち、1つのデータサブブロックに対する1つのアクセス操作の実行期間が、異なるBankの間での切り替え待ち遅延とちょうど等しくなる。本発明の実施形態2は、特定の実装方法を与える。
【００３５】
図7に示すように、図7は、本発明の実施形態2によるデータ処理方法のフローチャートであり、本方法は、
S701:プロセッサが、プリセットされるBlockサイズDQ×Burst長×n×Bank数とメモリアクセス命令に従って、処理されるべきBlockを決定し、ここでDQはメモリのデータ線幅であり、Burst長は1つのバースト長であり、nはバースト量を示し、Bank数はメモリチップのBank量である、
ステップを含む。
【００３６】
そのステップで、処理されるべきBlockは、メモリアクセス命令で示される処理されるべきデータとプリセットされるBlockサイズに従って決定される。特定の実装では、メモリアクセス命令によって示される処理されるべきデータのサイズが、プリセットされるBlockサイズの整数倍でない可能性がある。本発明の本実施形態では、決定された処理されるべきBlockのサイズがプリセットされるBlockサイズより小さい場合がある。
【００３７】
本発明の本実施形態では、DQ×Burst長×n×Bank数がプリセットされるデータブロックBlockサイズとして使用され、一方、プリセットされるデータサブブロックサイズは、DQ×Burst長×nとして設定される。本方法では、1つのBlockのデータサブブロックは異なるBankへ別々に写像される。好ましくは、データサブブロックサイズの決定の際、データサブブロックサイズが異なるBank間の切り替え待ち遅延の要件を満たす(すなわち、プロセッサが1つのデータサブブロックに対する1つのアクセス操作を実行した後、異なるBank間の切り替え待ち遅延に対する要件がちょうど満たされ、次のデータサブブロックが即座にアクセスされる)ために、nの値を適切に設定できる。一般に、異なるBank間の切り替え待ち遅延内で、プロセッサは2つのバースト長のアクセス操作を実行でき、したがって、nの値は2に設定できる。たとえば、DQが16bit、Burst長が8、Bank数が8の場合には、Blockサイズは、16bit/8×8×2×8=256バイト(Byte、略してB)になる。
【００３８】
S702:プロセッサは、プリセットされるデータサブブロックサイズDQ×Burst長×nに従って、処理されるべきBlockを複数のデータサブブロックへ分割する。
【００３９】
そのステップで、プロセッサは、プリセットされるデータサブブロックサイズの整数倍のサイズであるBlockを、プリセットされるデータサブブロックサイズのm個のデータサブブロックへ分割し、ここでmはメモリチップのBank量である。1つのBlockがプリセットされるデータサブブロックサイズの整数倍でない場合には、プリセットされるデータサブブロックサイズに従って分割を実行した後、最後のデータサブブロックのサイズは、プリセットされるデータサブブロックサイズよりも小さくすることが許される。
【００４０】
S703:プロセッサは、Blockの異なるデータサブブロックがメモリの異なるBankに対応している、処理されるべきBlockのそれぞれのデータサブブロックに対応するBank上のアクセス操作を実行する。
【００４１】
そのステップで、プロセッサは、同じBlockの異なるデータサブブロックが異なるBankに写像されるという原則に基づいて、BlockのそれぞれのデータサブブロックとBankとの間の写像関係を決定する。特定の実装では、テータサブブロックとBankとの間の写像規則はプリセットできる。たとえば、任意のBlockのそれぞれのデータサブブロックは、Blockの中のデータサブブロックの論理的なシーケンスに従って、シーケンス番号に従って整列されるそれぞれのBankへ連続して写像される。たとえば、メモリチップ上に総計8つのBank、Bank0〜Bank7が存在し、1つのBlockが8つのデータサブブロックに分割された後、現在のBlockのデータサブブロックは連続してBank0〜Bank7へ写像される。プリセットされるBlockサイズよりも小さなBlockが存在する場合には、写像は、最後のサブブロックの写像が完了するまで連続してシーケンシャルに実行される。たとえば、1つのBlockが3つのデータサブブロックだけに分割され、Blockのデータサブブロックは連続してBank0〜Bank2へ写像される。
【００４２】
本実施形態によって提供されるデータ処理方法に従って、DQが16bitで、バースト長が8であり、処理されるべきデータのサイズが160バイト以上の場合には、連続するアクセス操作の間のシームレスな切り替えが実装でき、プロセッサのメモリアクセス効率は90%以上を達成でき、アクセスバンド幅が1秒当たり2.88ギガバイト(Gigabyte per second、略してGB/s)である(アクセス周波数は800Mアクセスサイクル/秒、1アクセスサイクルはアクセスデータのDQ/8×2バイトを生成する。アクセスバンド幅の計算方法はDQ/8×800M×2×90%=2.88(GB/s))。
【００４３】
前述の160バイトは、同じBankの中のページ切り替え待ち遅延が40クロックサイクルであり、40クロックサイクルが10バースト長に相当することに従って決定される。したがって、プロセッサが同じBankの中で10バースト長以内に内部ページ切り替えを実行しない限り、同じBankの中のページ切り替え待ち遅延は生じない。その結果、10バースト長以内では、プロセッサによって実行される1つのアクセス操作のデータ量は、DQ/8×Burst長×10=160Bである。
【００４４】
同じ発明の概念に基づいて、本発明の実施形態は、データ処理方法に対応するデータ処理装置とシステムをさらに提供し、装置とシステムの問題解決原則は、本発明の実施形態のデータ処理方法のそれと類似しているので、装置とシステムの実装に対しては、方法の実装を参照でき、繰り返しの情報は本明細書に提供されない。
【００４５】
図8に示すように、図8は、本発明の実施形態3によるデータ処理装置の概略構造図であり、本装置は、
処理されるべきデータブロックBlockを、複数のデータサブブロック量がメモリのバンクBank量以下の複数のデータサブブロックへ分割するように構成される分割モジュール81と、
Blockの異なるデータサブブロックがメモリの異なるBankに対応する、処理されるべきBlockのそれぞれのデータサブブロックに対応するBank上でアクセス操作を実行するように構成されるアクセスモジュール82と、
を含む。
【００４６】
場合により、分割モジュール81は、詳細には、プリセットされるBlockサイズとメモリアクセス命令に従って、処理されるべきBlockを決定し、プリセットされるデータサブブロックサイズに従って、そのBlockを複数のデータサブブロックへ分割するように構成される。
【００４７】
場合により、プリセットされるBlockサイズは、メモリのBank量と、メモリデータビット幅と、1つのバースト長と、バースト量との積であり、プリセットされるデータサブブロックサイズは、メモリデータビット幅と、1つのバースト長と、バースト量との積である。
【００４８】
場合により、アクセスモジュール82は、詳細には、
処理されるべきBlockがアクセスされる前にアクセスされるBankに対応するBankアクセスシーケンスと、処理されるべきBlockのそれぞれのデータサブブロックとメモリのBankとの間の対応とに従って、処理されるべきBlockに対応するBankアクセスシーケンスを決定し、処理されるべきBlockに対応するBankアクセスシーケンスに従って、メモリの同じBankへの2つのアクセス時間の間の時間間隔が最長になるように、処理されるべきBlockのそれぞれのデータサブブロックに対応するBankにアクセスする、
ように構成される。
【００４９】
図9に示すように、図9は、本発明の実施形態4によるデータ処理システムの概略構造図である。本システムは、プロセッサ91と、メモリ92と、データ線93とを含み、メモリ92は複数のバンクBankを含み、システムが動作する場合には、プロセッサ91はデータ線93を通してメモリ92と通信する。
【００５０】
プロセッサ91は、詳細には、
処理すべきデータブロックBlockを、複数のデータブロック量がメモリのバンクBank量以下の複数のデータサブブロックへ分割し、
Blockの異なるデータサブブロックがメモリの異なるBankに対応する、処理されるべきBlockのそれぞれのデータサブブロックに対応するBank上でアクセス操作を実行する、
ように構成される。
【００５１】
本発明の本実施形態では、プロセッサ91は、詳細には、中央処理装置(Central Processing Unit、略してCPU)であってもよく、この場合には、プロセッサ91によって実行される前述の実行命令はメモリ92に格納でき、プロセッサ91はさらにプログラム可能な論理チップであってもよく、この場合には、実行命令はプログラム可能な論理チップのハードウェア配備の手段により実装できる。
【００５２】
場合によっては、プロセッサ91は、詳細には、
プリセットされるBlockサイズとメモリアクセス命令に従って、処理されるべきBlockを決定し、プリセットされるデータサブブロックサイズに従って、そのBlockを複数のデータサブブロックへ分割する、
ように構成される。
【００５３】
場合によっては、プリセットされるBlockサイズは、メモリのBank量と、メモリデータビット幅と、1つのバースト長と、バースト量との積であり、プリセットされるデータサブブロックサイズは、メモリデータビット幅と、1つのバースト長と、バースト量との積である。
【００５４】
場合によっては、プロセッサ91は、詳細には、
処理されるべきBlockがアクセスされる前にアクセスされるBankに対応するBankアクセスシーケンスと、処理されるべきBlockのそれぞれのデータサブブロックとメモリのBankとの間の対応とに従って、処理されるべきBlockに対応するBankアクセスシーケンスを決定し、処理されるべきBlockに対応するBankアクセスシーケンスに従って、メモリの同じBankへの2つのアクセス時間の間の時間間隔が最長になるように、処理されるべきBlockのそれぞれのデータサブブロックに対応するBankにアクセスする、
ように構成される。
【００５５】
当業者は、本発明の本実施形態が、方法、システム、またはコンピュータプログラム生産物として提供できることが理解されよう。したがって、本発明は、ハードウェアのみの実施形態、ソフトウェアのみの実施形態、または、ソフトウェアとハードウェアの組み合わせの実施形態の形式を使用できる。さらに、本発明は、コンピュータが使用できるプログラムコードを含む、1つまたは複数のコンピュータが使用できる記憶媒体(ディスクメモリ、CD-ROM、光メモリなどを含むがこれらに限定されない)上で実装されるコンピュータプログラム生産物の形式を使用できる。
【００５６】
本発明は、本発明の実施形態に従って、本方法のフローチャートおよび/またはブロック図、装置(システム)、コンピュータプログラム生産物を参照して記述されている。コンピュータプログラム命令は、フローチャートおよび/またはブロック図の中のそれぞれのプロセスおよび/またはそれぞれのブロックと、フローチャートおよび/またはブロック図の中のプロセスおよび/またはブロックの組み合わせを実装するために使用できることを理解すべきである。これらのコンピュータプログラム命令は、汎用コンピュータ、専用コンピュータ、組み込み型プロセッサ、またはマシンを作成する任意の他のプログラム可能なデータ処理装置のプロセッサに対して提供でき、そのため、コンピュータ、または任意の他のプログラム可能なデータ処理装置のプロセッサによって実行される命令は、フローチャートの中の、および/または、ブロック図の中の1つまたは複数のブロックのプロセスの中の、特定の機能を実装するための装置を作成する。
【００５７】
これらのコンピュータプログラム命令はまた、コンピュータまたは特定の方法で動作する任意の他のプログラム可能なデータ処理装置を命令できるコンピュータ可読メモリの中に格納でき、それにより、コンピュータ可読メモリの中に格納された命令が、命令装置を含むアーチファクトを作成する。命令装置は、フローチャートの中の1つまたは複数のプロセス、および/または、ブロック図の中の1つまたは複数のブロックの中にある、特定の機能を実装する。
【００５８】
これらのコンピュータプログラム命令はまた、コンピュータまたは他のプログラム可能なデータ処理装置上へとロードでき、そうすることで、一連の操作とステップがコンピュータまたは他のプログラム可能な装置上で実行され、それによってコンピュータで実装される処理を作成する。したがって、コンピュータまたは別のプログラム可能な装置上で実行される命令は、フローチャート中の1つまたは複数のプロセス、および/または、ブロック図の中の1つもしくは複数のブロックの中にある、特定の機能を実行するためのステップを提供する。
【００５９】
本発明のいくつかの実施形態例を記述してきたが、当業者は、基本的な発明の概念を学べば、これらの実施形態に対する変更と修正をすることができる。したがって、次の特許請求の範囲は、実施形態例と、本発明の範囲に属するすべての変更およびすべての修正をカバーするように解釈されるように意図されている。
【００６０】
明らかに、当業者は、本発明の精神と範囲を逸脱することなく、本発明にさまざまな修正と変形をすることができる。本発明は、次の特許請求の範囲とそれらの等価な技術によって定義される保護範囲内ある、提供されるこれらの修正と変形をカバーするように意図されている。
【符号の説明】
【００６１】
81  分割モジュール
82  アクセスモジュール
91  プロセッサ
92  メモリ
93  データ線
【図１】
0006332756.tif 000002
【図２】
0006332756.tif 000003
【図３】
0006332756.tif 000004
【図４】
0006332756.tif 000005
【図５】
0006332756.tif 000006
【図６】
0006332756.tif 000007
【図７】
0006332756.tif 000008
【図８】
0006332756.tif 000009
【図９】
0006332756.tif 000010