JP2004240616A - メモリコントローラ及びメモリアクセス制御方法 - Google Patents
メモリコントローラ及びメモリアクセス制御方法 Download PDFInfo
- Publication number
- JP2004240616A JP2004240616A JP2003027940A JP2003027940A JP2004240616A JP 2004240616 A JP2004240616 A JP 2004240616A JP 2003027940 A JP2003027940 A JP 2003027940A JP 2003027940 A JP2003027940 A JP 2003027940A JP 2004240616 A JP2004240616 A JP 2004240616A
- Authority
- JP
- Japan
- Prior art keywords
- block
- logical address
- address
- prefetch
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】CPUに負荷をかけることなくメモリアクセスの高速化を図る。
【解決手段】メモリコントローラ200内のアドレス変換テーブル203が、CPUやI/Oデバイスから供給される論理アドレスとメモリ3上の物理アドレスとを所定のブロック単位で管理し、論理アドレスのブロックと物理アドレスのブロックとを対応づけ、データの移動が必要な場合に、アドレス変換テーブル203上の論理アドレスのブロックと物理アドレスのブロックとの対応づけを変更することにより、物理アドレス上でデータを移動させることなく、論理アドレス上でデータを移動させてメモリアクセスの高速化を図る。
【選択図】 図1
【解決手段】メモリコントローラ200内のアドレス変換テーブル203が、CPUやI/Oデバイスから供給される論理アドレスとメモリ3上の物理アドレスとを所定のブロック単位で管理し、論理アドレスのブロックと物理アドレスのブロックとを対応づけ、データの移動が必要な場合に、アドレス変換テーブル203上の論理アドレスのブロックと物理アドレスのブロックとの対応づけを変更することにより、物理アドレス上でデータを移動させることなく、論理アドレス上でデータを移動させてメモリアクセスの高速化を図る。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、マイクロプロセッサやI/O(Input/Output)デバイスによりアクセスされるメモリの制御技術に関する。
【0002】
【従来の技術】
ネットワークやストレージ等のI/Oデバイスからの入力データは、I/Oデバイスにより、デバイスドライバが管理するI/Oバッファに転送され、それより上位のミドルウェアやアプリケーションは、このデータをそれぞれのプログラムが管理するデータバッファにコピーして使用する。この時に発生するメモリ間のデータコピーがCPU(Central Processing Unit)にとって大きな負荷となっている。
【0003】
従来の技術では、例えば、特開平11−327798では、高速なSRAM(Static Random Access Memory)をI/Oキャッシュメモリとして用いることにより、アクセススピードが上がる分データコピーにかかるCPUの負荷を軽減させる方法が開示されている。
【0004】
また、一般的な方法として、チップセットにDMA(Direct Memory Access)コントローラを内蔵させることにより、データコピーをDMAコントローラに行わせる方法がある。
【0005】
また、メモリのリードアクセスに関してはプリフェッチを行うことが有効であり、いくつかの方式が提案されている。
例えば、特開平9−120372では、プリフェッチ命令を用いることにより好適なプリフェッチを行う手法について開示している。この方法は、ソフトウェアの設計者が通常のロード命令とプリフェッチ命令を意識して記述する必要がある点で一般に普及させることが難しい。また、C言語を使ったプログラムにおいては、コンパイラが通常のロード命令とプリフェッチ命令を生成し分けることは、さらに困難である点で、実現上の課題がある。
【0006】
また、特開2000−148584では、CPUのひとつ前のアクセスに関連してプリフェッチを行う方式が開示されている。しかし、メモリを複数のCPUやI/Oデバイスでシェアするシステムにおいては、メモリへのアクセスは、複数のデバイスが交互にアクセスする場合があり、このようなケースにおいては、プリフェッチによる効果が得られないだけでなく、プリフェッチ動作がメモリバスを使用することによる性能の低下も考えられる。また、単一のCPUアクセスについても、タスクスイッチや割り込み処理等によりメモリアクセス処理が中断されることも考えられる。
【0007】
【特許文献1】
特開平11−327798号公報
【特許文献2】
特開平9−120372号公報
【特許文献3】
特開2000−148584号公報
【0008】
【発明が解決しようとする課題】
CPUとメモリとI/Oデバイスで構成される計算機システムでは、CPUの内部動作周波数に比して、メモリデバイスの動作周波数が低く、アクセスレイテンシが大きいため、メモリアクセス、特にメモリのリードアクセスやメモリ上のデータの移動にかかる処理がシステム性能のボトルネックになっている。
この問題は、近年のCPU内部周波数の向上率に比して、メモリの動作周波数やアクセスレイテンシの向上率が低いことに起因しており、計算機システムを構築する上で年々大きな課題となっている。
以上のように、従来の技術では、この問題を有効に解決することができず、本発明はこの問題を解決することを主な目的とする。
【0009】
【課題を解決するための手段】
本発明に係るメモリコントローラは、
メモリと、メモリへのアクセスを行うデバイスとに接続され、デバイスのメモリアクセスを制御するメモリコントローラであって、
デバイスがメモリにアクセスする際に用いる論理アドレスを所定のブロック単位で管理してデバイスのメモリアクセスを制御することを特徴とする。
【0010】
【発明の実施の形態】
実施の形態1.
図2は一般的な計算機システムの構成例を示しており、CPU1およびネットワークI/F4やストレージI/F5等のI/Oデバイスはチップセット2を介してメモリ3(例えばSDRAM(Synchronous Dynamic Random Access Memory))と接続されている。
ネットワークやストレージへの入力データは、ネットワークデバイスやストレージデバイスより、これらを制御するI/Oドライバが管理するI/Oバッファに転送され、その後、そのデータを使用するアプリケーション・ソフトウェアが管理するアプリケーション・バッファにコピーして使用される。同様に、ネットワークやストレージへの出力データは、アプリケーション・バッファよりI/Oバッファにコピーした後に、ネットワークやストレージデバイスに出力される。データコピーは、CPUがロード命令とストア命令により行うが、現在のCPUはCPU内部のクロック周波数に対して、CPUの外部バスへアクセスを行うためのクロック周波数が1/2〜1/10程度と低いために、メモリへのアクセスは、CPUの処理性能に対して非常に低速な処理となる。したがって、このようなデータコピーは、計算機システムの性能にとって大きなマイナス要因であり、データコピーを高速に行う手法が求められている。
【0011】
例えば、特開平11−327798では、高速メモリをI/Oバッファに用いてシステム性能を向上させているが、前述のようにCPUがロード命令とストア命令を用いて、I/Oバッファから主メモリ上のアプリケーション・バッファへデータコピーを行うため、性能向上の度合いは限定的である。
また、一般的な手法としては、図2のチップセットにDMAコントローラを内蔵して、DMAコントローラにメモリコピーを行わせる方法がある。この方法においては、CPUがロード命令やストア命令を実行しなくて済むという利点がある。しかし、データコピーにかかる時間はCPUがロード命令とストア命令により実施するのと大差がない。また、DMAコントローラがメモリアクセスを行うことにより、CPUのメモリアクセス性能が低下することや、DMAコントローラは、データコピーの終了を割り込みにより通知するために、割り込み処理が必要となること等の問題点がある。
【0012】
図1は、メモリ管理テーブルとしてアドレス変換テーブルを、図2におけるチップセット2上に内蔵されるメモリコントローラ200に実装した場合の例を示している。
図1において、アドレス変換テーブル203は、CPU1とI/Oデバイスが供給する論理アドレスとメモリ上の物理アドレスを例えば1Kバイトのブロック単位で管理し、論理アドレスのブロック(論理アドレスブロック)と物理アドレスのブロック(物理アドレスブロック)を対応づけている。アドレス変換テーブル203では、例えば、0x1000番地(Logic)を先頭とする1Kバイト分の論理アドレスブロックと、0x2000番地(Phy)を先頭とする1Kバイト分の物理アドレスブロックとを対応づけるといった形で論理アドレスブロックと物理アドレスブロックの対応づけを管理している。そして、アドレス変換テーブル203では、CPU又はI/Oデバイスから論理アドレスが供給された場合に、供給された論理アドレスが対応する物理アドレスブロックを特定し、論理アドレスを物理アドレスに変換し、変換した物理アドレスをメモリアクセス制御回路202に供給する。
制御レジスタ204は、アドレス変換テーブル203の内容を更新するためのソフトウェアインタフェースである。
調停回路201は、CPUとI/Oデバイスのアクセスの調停を行い、いずれかのアクセスのみをメモリアクセス制御回路202とアドレス変換テーブル203に供給する。
メモリアクセス制御回路202は、上記調停回路201より供給されたアクセスによりメモリの制御を行う。その際に、アドレスとして、アドレス変換テーブルが供給するメモリの物理アドレスを使用する。
【0013】
なお、CPU1、ネットワークI/F4やストレージI/F5等のI/Oデバイスは、メモリを共用する複数のデバイスであり、メモリコントローラにおいて、管理テーブルはアドレス管理部の例に相当し、メモリアクセス制御回路はメモリアクセス制御部の例に相当する。
【0014】
一般的な計算機システムでは、I/Oバッファに置かれている受信データをアプリケーション・バッファにデータコピーした後、コピー元のデータにアクセスすることは殆どない。これは、I/Oバッファがデバイスドライバによって管理されているメモリ領域であり、デバイスドライバは、I/Oデバイスを制御するためのソフトウェアであるために、デバイスの制御が、この場合はデータ受信処理が終わってしまえば、その受信データにアクセスする必要が無くなるためである。
従って、多くの場合において、このようなI/Oバッファからアプリケーション・バッファにコピーされる場合は、データコピーはデータムーブ(移動)であっても差し支えないことになる。
【0015】
本実施の形態では、物理アドレス上はデータを移動させずに、アドレス変換テーブルを更新することで、論理アドレス上でデータを移動させることにより、高速にデータムーブを行う特徴を持つ。
具体的に図1の構成において、ネットワークI/Fが1Kバイトのデータを受信する例を用いて説明を行う。
ネットワークI/Fは、デバイスドライバにより、I/Oバッファに受信データを転送するようにプログラミングされている。I/Oバッファはデバイスドライバからは、論理アドレスで管理されている。従って、ネットワークI/Fは受信データを論理アドレスにより転送する。この例では、I/Oバッファのアドレスを、0x1000番地(Logic)であるとする。
ネットワークI/Fは、データを受信するとI/Oバスを用いて0x1000番地(Logic)に受信データの転送を行う。チップセット内部のメモリコントローラ200は、この転送を受けてアドレス変換テーブル203を用いて、論理アドレスから物理アドレスへの変換を行い、物理アドレスでメモリへデータの転送を行う。
ここでは仮にアドレス変換テーブル203において、0x1000番地(Logic)が0x2000番地(Phy)に対応づけられていた、つまり、0x1000番地(Logic)を先頭とする1Kバイト分の論理アドレスブロックと0x2000番地(Phy)を先頭とする1Kバイト分の物理アドレスブロックが対応づけられていたとする。アドレス変換テーブル203では、下位10ビットは論理アドレスをそのまま物理アドレスとして出力し、それ以外の上位アドレスは、テーブルに保持されている対応づけられたアドレスに付け替えて物理アドレスとし、メモリアクセス制御回路に出力する。つまり、アドレス変換テーブル203では、論理アドレスブロックと物理アドレスブロックの対応づけから、供給された論理アドレスに対応する物理アドレスブロックを特定して、論理アドレスを物理アドレスに変換する。
メモリアクセス制御回路は物理アドレスでメモリにアクセスを行う。
このようにすることで、0x1000番地(Logic)は、0x2000番地(Phy)に変換されて、メモリへは0x2000番地(Phy)にデータが転送される。ここで、0x2000番地(Phy)は、ネットワークI/Fからだけでなく、CPUからも0x1000番地(Logic)によりアクセスされることを付け加えておく。
【0016】
デバイスドライバによる一定の処理が完了した後、受信データはアプリケーション・バッファに渡される。ここでは仮に、アプリケーション・バッファのアドレスが0x8000番地(Logic)であるとし、アドレス変換テーブル203では0x8000番地(Logic)と0x9000番地(Phy)とを対応づけていた、つまり、0x8000番地(Logic)を先頭とする1Kバイト分の論理アドレスブロックと0x9000番地(Phy)を先頭とする1Kバイト分の物理アドレスブロックとを対応づけていたとする。この場合に、ソフトウェアは、アドレス変換テーブルを0x8000番地(Logic)と0x2000番地(Phy)とを対応づけるように書き換え、もともと、0x8000番地(Logic)に対応づけられていた0x9000番地(Phy)を0x1000番地(Logic)と対応づけるように書き換える。
これにより、アプリケーション・ソフトウェアは0x8000番地(Logic)、すなわちアプリケーション・バッファをアクセスすれば、0x2000番地(Phy)にアクセスすることとなり、受信データにアクセスできるようになる。すなわち、0x1000番地(Logic)から0x8000番地(Logic)へ1Kバイトのデータが移動したことになる。このように、論理アドレスブロックに対応づけられている特定の物理アドレスブロックについて、対応づけの対象となる論理アドレスブロックを別の論理アドレスブロックに変更することにより、特定の物理アドレスブロックを論理アドレス上で移動させることができる。
同時に、デバイスドライバが管理するI/Oバッファ0x1000番地(Logic)には、新たに0x9000番地(Phy)が物理領域として割り当てられることになる。
同様に、2Kバイトの受信データであれば、2ブロック分のアドレス変換テーブルを書き換えれば良い。
【0017】
そして、本実施の形態では、アドレス変換テーブルの書き換えに関して、好適なソフトウェアインタフェースも定義する。メモリコントローラには、アドレス変換テーブル書き換え用として、制御レジスタ204に、ソースアドレス・レジスタとディスティネーションアドレス・レジスタとブロックサイズ・レジスタを備える。ソースアドレス・レジスタには、書換え前(対応づけの変更前)の論理アドレスブロックを設定し、ディスティネーションアドレス・レジスタには書換え後(対応づけの変更後)の論理アドレスブロックを設定し、ブロックサイズ・レジスタには書換え(対応づけの変更)を行うブロックサイズを設定する。
前述した、ネットワークI/Fから受信したI/Oバッファにあるデータをアプリケーション・バッファに移動するケースでは、ソースアドレス・レジスタに0x1000番地(Logic)を設定し、ディスティネーションアドレス・レジスタに0x8000番地(Logic)を設定し、ブロックサイズ・レジスタに1(1ブロック=1KB)を設定することで、メモリコントローラが、0x1000番地(Logic)に対応づけられていた1Kバイトの物理アドレスブロックを0x8000番地(Logic)に対応づけ、0x8000番地(Logic)に対応づけられていた1Kバイトの物理アドレスブロックを0x1000番地(Logic)に対応づける。
このようなソフトウェアインタフェースにより、ソフトウェアに論理アドレスと物理アドレスの対応づけを意識する必要が無くなり、システムの設計が容易になる。
【0018】
このように、本実施の形態のメモリコントローラは、アドレス変換テーブルの対応づけを更新することで、物理アドレス上でデータを移動させることなく、論理アドレス上でデータを移動させることができ、これにより高速にデータムーブを行うことができ、CPUに負荷をかけることなくメモリアクセスの高速化を図ることができる。
【0019】
実施の形態2.
実施の形態1で示したアドレス変換機能を用いたブロック単位のデータムーブ機能に加えて、本実施の形態では、メモリコントローラがブロック単位にメモリを管理していることを利用して、ワード単位のデータ移動の機能を実現する。この機能は、ネットワークI/Fにデータを出力する場合などに、ブロックデータにパケットヘッダを付加する場合に好適である。
なお、本実施の形態において、ワードはメモリバスのビット幅と同じとし、メモリバスのビット幅は32ビットとする。すなわち、1ワードは4バイトである。
【0020】
図3は、ワード単位でのデータ移動を可能にしたメモリコントローラ200の内部構造を示している。
アドレス変換+ワードシフトテーブル205は、実施の形態1のアドレス変換テーブル203の機能に加えて、メモリコントローラが管理するメモリブロック毎にアドレスをシフトするためのシフト量を保持するためのテーブルである。つまり、アドレス変換+ワードシフトテーブル205は、実施の形態1のアドレス変換テーブルと同様に論理アドレスブロックと物理アドレスブロックとを対応づけるとともに、更に、論理アドレスブロックごとにアドレスシフトのためのシフト量を設定している。シフト量はワード単位で設定が可能で1ワードは4バイトである。
本実施の形態では、制御レジスタ204は、実施の形態1のアドレス変換テーブルを更新するためのソフトウェアインタフェースに加えて、メモリコントローラが管理するメモリブロック毎のシフト量を設定するためのブロックアドレス指定レジスタとシフト量設定レジスタからなるソフトウェアインタフェースを備える。
なお、本実施の形態においても、メモリコントローラが管理するメモリブロックサイズは、1Kバイトとする。
また、本実施の形態のアドレス変換+ワードシフトテーブルは、アドレス管理部の例に相当する。
【0021】
例えば、0x1000番地(Logic)にある512バイトのブロック・データに32バイトのパケットヘッダを付加するために、0x1020番地(Logic)にブロック・データを移動する場合について説明する。
まず、ソフトウェアは制御レジスタのブロックアドレス指定レジスタに0x1000番地(Logic)を設定し、シフト量設定レジスタに8(8ワード=32バイト)を設定し、ワードシフトテーブル更新コマンドを発行することにより、0x1000番地(Logic)のブロックを32バイトシフトするようにワードシフトテーブルを更新する。
前記設定が行われると、アドレス変換+ワードシフトテーブル205は、メモリの物理アドレスを生成する場合に、下位10ビットについては、CPUおよびI/Oデバイスが供給するアドレスに対してワードシフトテーブルに設定されたシフト量を引き算したアドレスを生成し、それ以外の上位アドレスは、実施の形態1に示すようにアドレスの付け替えによりアドレスを生成する。つまり、本実施の形態では、CPUやI/Oデバイスから供給された論理アドレスに対応する物理アドレスブロックを特定するとともに、供給された論理アドレスが属する論理アドレスブロックのシフト量に従ってアドレスシフトを行い、供給された論理アドレスを物理アドレスに変換する。
【0022】
仮に、0x1000番地(Logic)と0x2000番地(Phy)が対応づけられていて、0x1000番地(Logic)のブロックに32バイトのシフト量が設定されている場合、CPUおよびI/Oデバイスからの0x1020番地(Logic)は、0x2000番地(Phy)に変換され、0x1000番地(Logic)は、0x23E0番地(Phy)に変換される。
このことは、付加される32バイトのヘッダは、物理メモリ上は0x23E0番地(Phy)から0x23FF番地(Phy)の32バイトの物理アドレス空間に置かれ、CPUおよびI/Oデバイスからは0x1000番地(Logic)から0x1020番地(Logic)の32バイトの論理アドレス空間によってアクセスされることになる。また、512バイトのブロックデータは、物理メモリ上は、0x2000番地(Phy)から0x2200番地(Phy)の512バイトの物理アドレス空間に置かれ、CPUおよびI/Oデバイスからは、0x1020番地(Logic)から0x121F番地(Logic)の512バイトの論理アドレス空間によってアクセスされることを示す。
【0023】
さらに、ワードシフトを設定したブロックを実施の形態1に示す方法により、論理アドレス上を移動(データムーブ)させる場合について説明する。
例えば、0x1000番地(Logic)は物理アドレス0x2000番地(Phy)と対応づけられており、ワードシフト量が8に設定されていて、0x8000番地(Logic)は物理アドレス0x9000番地(Phy)と対応づけられており、ワードシフト量が1に設定されているとする。
0x1000番地(Logic)と0x8000番地(Logic)を実施の形態1に示す方法によりデータムーブさせる場合は、0x1000番地(Logic)の物理アドレスとワードシフト量を、0x8000番地(Logic)のデータムーブ後の物理アドレスとワードシフト量とし、0x8000番地(Logic)の物理アドレスとワードシフト量を、0x1000番地(Logic)のデータムーブ後の物理アドレスとワードシフト量とすれば良い。即ち、0x1000番地(Logic)のデータムーブ後の物理アドレスは0x9000番地(Phy)、ワードシフト量は1であり、0x8000番地(Logic)のデータムーブ後の物理アドレスは0x2000番地(Phy)、ワードシフト量は8である。
この結果、CPUおよびI/Oデバイスは、0x8000番地(Logic)から0x801F番地(Logic)の論理アドレスにより付加した32バイトのパケットヘッダをアクセスでき、0x8020番地(Logic)から0x821F番地(Logic)の論理アドレスにより512バイトのブロック・データをアクセスすることが可能になる。
このように、本実施の形態では、論理アドレスブロックに対応づけられている特定の物理アドレスブロックについて、対応づけの対象となる論理アドレスブロックを別の論理アドレスブロックに変更するとともに、特定の物理アドレスブロックに新たに対応づけられた論理アドレスブロックのシフト量を変更することにより、特定の物理アドレスブロックを論理アドレス上で移動させることができる。
なお、以上の説明では、ブロック及びシフト量の双方を変更することでデータを論理アドレス上で移動させる場合について説明したが、ブロックの変更を伴わずにワードシフトテーブルに示されているシフト量を変更することで論理アドレス上でデータを移動させてもよい。
【0024】
さらに、本実施の形態ではソフトウェアによるワードシフトテーブルの変更を容易にするために、ワードシフト量設定レジスタは、相対的なシフト量(シフト量の変更量)を設定するようにする。すなわち、その時点から何ワードシフトするかを設定するようにする。そして、ワードシフトテーブルの更新は、その時点でのワードシフト管理テーブルに設定されているシフト量にシフト量設定レジスタに設定された相対値(シフト量の変更量)を足し算したものを新たな値として書き込む。
例えば、既にワードシフト量8と設定されているメモリブロックに対して、シフト量設定レジスタに1と設定してワードシフトコマンドが発行した場合は、ワードシフトテーブルは9に更新される。このようにすることで、ソフトウェアは、以前に設定したシフト量を意識する必要がなくなるため、管理が容易になる。
【0025】
このように、本実施の形態のメモリコントローラは、アドレス変換テーブルの対応づけ及びワードシフトテーブルのシフト量を更新することで、物理アドレス上でデータを移動させることなく、論理アドレス上でブロック単位及びワード単位でデータを移動させることができ、これにより高速にデータムーブを行うことができ、CPUに負荷をかけることなくメモリアクセスの高速化を図ることができる。
【0026】
実施の形態3.
本実施の形態では、メモリに対するプリフェッチを効率的に行うことにより計算機システムの性能を向上させる方法について示す。
【0027】
図5、図6は、図2に示す計算機システムにおいて、主メモリに一般的なSDRAMを用いた場合のプリフェッチを行わない場合とプリフェッチを行った場合の連続するアドレスへのアクセスのタイミングを示したものである。プリフェッチを行わない場合は、図5に示すように、2回目以降のアクセスが9サイクルかかっているのに対して、プリフェッチを行った場合は、図6に示すように、2回目以降のバーストが5サイクルで完了する。これは、プリフェッチを行うことで、SDRAMのレイテンシを隠蔽できることによる。また、メモリバスに流れるデータ量を見れば分かるように、CPUからのトランザクションを待たずにメモリをアクセスすることで、メモリバスの実質的バンド幅を大幅に向上させることも可能となる。このように、SDRAMへのブロック・リード・アクセスは、プリフェッチを行うことが、SDRAM特有のアクセス・レイテンシを低減できる点で有効である。
【0028】
しかしながら、実際の計算機システムにおいては、いつもブロックデータにアクセスする訳ではなく、様々なサイズのデータへのアクセスが存在するため、常にプリフェッチを行うことは計算機システムの性能を向上させる上で決して有効な手法ではない。例えば、4バイトのデータに対して、1Kバイトのプリフェッチを行ってしまえば、システム性能としては非常に大きなダメージを受ける。また、プリフェッチが有効なデータへのアクセスであっても、割り込みやタスクスイッチ、他のI/Oからのメモリアクセスにより、連続する領域へのアクセスが中断されてしまうケースもある。
従って、一般的な計算機システムではプリフェッチは行わず、特開平11−327798の例にあるように高速メモリを部分的に用いてシステム性能を向上させている。
【0029】
また、プリフェッチを行う手法としては、特開平9−120372の例にあるように、プロセッサが実行する命令にプリフェッチ情報を埋め込む方法がある。この方法では、特開2000−148584に示されるように、
コンパイラが通常のロード命令とプリフェッチ命令を区別して生成することが困難であるとの問題点がある。
また、特開2000−148584の方法によれば、上記コンパイラによる問題は解決されるものの、CPUのひとつ前のアクセスに関連してプリフェッチ動作が行われる点において、前述したように割り込みやタスクスイッチ、他のI/Oからのメモリアクセスにより連続するアクセスが中断された場合に、プリフェッチが有効に働かないという問題点がある。
【0030】
図4は、本実施の形態に係るメモリコントローラ200の構成例を示す。
図4において、調停回路201は、CPUとI/Oデバイスのアクセスの調停を行い、いずれかのアクセスのみをメモリアクセス制御回路202とエリア属性管理テーブル206に供給する。
エリア属性管理テーブル206は、1Kバイトの論理アドレスブロックごとにエリア属性を保持し、調停回路201を介してCPU又はI/Oデバイスより供給される論理アドレスにより、エリア属性情報をメモリアクセス制御回路202に供給する。エリア属性には、論理アドレスブロックがプリフェッチの対象となるか否か、及びプリフェッチを行うとした場合のプリフェッチサイズが示されている。エリア属性管理テーブル206は、調停回路201を介してCPU又はI/Oデバイスより論理アドレスが供給された場合に、エリア属性情報として、供給された論理アドレスがプリフェッチの対象となるか否か、プリフェッチの対象となる場合にはそのプリフェッチサイズをメモリアクセス制御回路202に通知する。プリフェッチサイズは、回路を簡単にするために、例えば、1Kバイト、512バイト、256バイトの3通りとする。
なお、エリア属性管理テーブルは、プリフェッチ属性管理部の例に相当し、エリア属性情報はプリフェッチ属性情報の例に相当する。
【0031】
メモリアクセス制御回路202は、調停回路201より供給されるアドレスと、エリア属性管理テーブル206から供給されるエリア属性情報、プリフェッチバッファ208に該データ(プリフェッチデータ)が有るか無いか(Hit/Miss)により、以下に示すメモリまたはプリフェッチバッファへのアクセスを行う。
(1)リードアクセスであり、プリフェッチ可能、プリフェッチバッファにプリフェッチデータが無い場合
エリア属性のプリフェッチサイズ分のデータをメモリよりリードし、該アクセスに対するリードデータを返すと同時に、全てのリードデータをプリフェッチバッファに書き込む。
(2)リードアクセスであり、プリフェッチ可能、プリフェッチバッファにプリフェッチデータが有る場合
メモリへはアクセスを行わず、プリフェッチバッファよりデータをリードし、該アクセスに対するリードデータを返す。
(3)ライトアクセスであり、プリフェッチ可能、プリフェッチバッファにプリフェッチデータが有る場合
プリフェッチバッファとメモリの双方に対して、該アクセスのライトデータを書き込む。
(4)ライトアクセスであり、プリフェッチ可能、プリフェッチバッファにプリフェッチデータが無い場合、及び、ライトアクセスであり、プリフェッチ不可である場合
該アクセスのライトデータをメモリに書き込む。
【0032】
プリフェッチバッファ制御回路207は、調停回路201より供給されるアドレスによりアクセスされるデータがプリフェッチバッファに有るか無いかを判定し、該アクセスのデータがプリフェッチバッファに有る場合はHit信号を、無い場合はMiss信号を出力する。また、本実施の形態では複数個のプリフェッチバッファ208を備える。プリフェッチバッファ制御回路207は、これら複数のプリフェッチバッファ208へのアクセス履歴を保持し、新たな領域へのプリフェッチ要求に対しては、もっともアクセス履歴が古いプリフェッチバッファを廃棄して、そのプリフェッチバッファに新たなプリフェッチデータを保持する。なお、本実施の形態でのプリフェッチバッファのサイズは1Kバイト、プリフェッチバッファの数は8個である。なお、プリフェッチバッファ制御回路は、プリフェッチバッファ制御部の例に相当する。
【0033】
1Kバイトの0x1000番地にあるブロックデータへのリードアクセスを行う場合について例を示す。
まず、ソフトウェアは、この領域をプリフェッチ可能、プリフェッチサイズ1Kバイトにエリア属性管理テーブル206を設定する。この処理は、OSがタスクやハンドラにメモリを割り当てる時に行っても良いし、タスクやハンドラ自身が行っても良い。
CPUもしくは、I/Oデバイスがこの領域、例えば0x1000番地へのリードアクセスを発行すると、エリア属性管理テーブル206は、メモリアクセス制御回路202に対してプリフェッチ可能、プリフェッチサイズが1Kバイトのエリア属性情報を出力すると同時に、プリフェッチバッファ制御回路はMissを出力する。
これを受けて、メモリアクセス制御回路は、メモリに対して図5に示す連続したリードアクセスによって1Kバイトのデータをリードし、CPUもしくはI/Oデバイスへリードデータを返すと同時に、プリフェッチバッファへリードしたデータ全てを書き込む。
次に、0x1020番地へのアクセスがあった場合は、エリア属性管理テーブル206からプリフェッチ可能とのエリア属性情報、プリフェッチバッファ制御回路207からHitが出力されるので、メモリアクセス制御回路202はプリフェッチバッファ208よりデータをリードして、CPUもしくは、I/Oデバイスにリードデータを返す。
【0034】
さらに、本実施の形態ではプリフェッチバッファを複数持つことで、プリフェッチバッファの利用効率を高めている。例えば、前記のように0x1000番地から1Kバイトをプリフェッチバッファに保持した状態で、0x2000番地へのリードアクセスがあった場合、その0x2000番地がプリフェッチ可能であれば、その時点で最もアクセス履歴の古い、すなわち、最後にアクセスされてから時間が経過しているプリフェッチバッファを破棄して0x2000番地のデータをプリフェッチバッファに格納する。このことは、ブロックデータへのアクセスの途中で、命令フェッチやタスクスイッチ、割り込み処理、I/Oデバイスからのアクセス等の発生によるプリフェッチしたブロックデータへの連続アクセスの中断があっても、プリフェッチデータを保持し続けることができ、低レイテンシなデータ提供を可能にする。つまり、本実施の形態では、メモリアクセス制御回路は、いずれかのプリフェッチバッファへのアクセス中に他のプリフェッチバッファへのアクセスが必要になった場合に、アクセス中のプリフェッチバッファにプリフェッチデータを保持させたまま当該プリフェッチバッファへのアクセスを中断し、アクセスが必要になった他のプリフェッチバッファへのアクセスを開始することができ、更には、他のプリフェッチバッファへのアクセスが終了した際に、アクセスが中断したプリフェッチバッファへのアクセスを再開することができる。
また、このような特徴から、本実施の形態がブロックデータへのアクセスだけでなく、命令アクセスに対しても有効であることを示す。
【0035】
さらに、本実施の形態では、プリフェッチされた領域へのライトアクセスがあった場合は、メモリアクセス制御回路が、メモリにライトするのと平行して、プリフェッチバッファにもライトする。このことにより、データのコヒーレンシを保証し、次にリードアクセスがあった場合に低レイテンシなデータ供給が可能となる。
【0036】
さらに、本実施の形態では、CPUとI/Oデバイスとのデータの受け渡しも高性能に実現することが可能である。例えば、ネットワークI/Fが受信したデータは、メモリ上のI/Oバッファにライトされ、そのデータはCPUによってリードされる可能性が非常に高い。このような場合に、I/Oバッファの領域がプリフェッチバッファにあれば、ネットワークI/Fからのライトは、プリフェッチバッファにもライトされるために、その後のCPUからのリードは、プリフェッチバッファにアクセスすることになるため、高速に処理することが可能となる。I/Oバッファ領域をプリフェッチバッファに載せるためには、I/Oバッファ領域のエリア属性をプリフェッチ可能、プリフェッチサイズ1Kバイトに設定し、1WORDリードすれば、プリフェッチが行われてI/Oバッファ領域がプリフェッチバッファに載ることになる。
ただし、このような受信バッファ領域には多くの場合は、受信前には意味の有るデータが置かれていない、即ちソフトウェアから見ればバッファが空であり、このような場合にはデータのコヒーレンシを保証しなくても良いことになる。
そこで、本実施の形態では、擬似プリフェッチ機能を定義する。擬似プリフェッチ機能は、プリフェッチをせずにプリフェッチをしたことにする機能である。具体的には、ソフトウェアが、制御レジスタを通して、擬似プリフェッチアドレスを設定し、擬似プリフェッチコマンドを発行する。これが発行されると、プリフェッチバッファ制御回路207は、擬似プリフェッチを行い、擬似プリフェッチアドレスに対して、プリフェッチバッファを与える。これに伴うメモリへのリードは行わない。従って、CPUとI/Oデバイスとの間のデータのやり取りを高速に行うことができる上に、メモリバスを効率的に使うことが可能となる。
このように本実施の形態では、プリフェッチ対象の論理アドレスブロックについてプリフェッチデータがプリフェッチバッファに存在しないために当該論理アドレスブロックに対するライトデータがプリフェッチバッファに書き込めない状態にある場合に、プリフェッチバッファ制御回路が当該論理アドレスブロックに対するライトアクセスの発生前に当該論理アドレスブロックについて擬似プリフェッチを行って当該論理アドレスブロックに対するライトデータをプリフェッチバッファに書込める状態にする。
【0037】
以上のように、本実施の形態のメモリコントローラは、論理アドレスブロックごとのエリア属性に従ってプリフェッチを行うため、プリフェッチが有効な論理アドレスブロックのみプリフェッチを行うといった効率的なプリフェッチを行うことができる。
また、エリア属性としてプリフェッチサイズが設定されているため、論理アドレスブロックごとに効率のよいプリフェッチサイズでプリフェッチを行うことができる。
【0038】
更には、本実施の形態のメモリコントローラは、複数のプリフェッチバッファを備えているため、ブロックデータへのアクセスの途中で、命令フェッチやタスクスイッチ、割り込み処理、I/Oデバイスからのアクセス等の発生によるプリフェッチしたブロックデータへの連続アクセスの中断があっても、プリフェッチデータを保持し続けることができ、低レイテンシなデータ提供を可能にする。
また、本実施の形態のメモリコントローラは、ブロックデータへのアクセスだけでなく、命令アクセスに対しても有効である。
【0039】
また、本実施の形態のメモリコントローラは、プリフェッチされた領域へのライトアクセスがあった場合は、メモリにライトするのと平行して、プリフェッチバッファにもライトする。このことにより、データのコヒーレンシを保証し、次にリードアクセスがあった場合に低レイテンシなデータ供給が可能となる。
【0040】
また、本実施の形態のメモリコントローラは、擬似プリフェッチを行うことにより、複数のデバイス間のデータのやり取りを高速に行うことができる上に、メモリバスを効率的に使うことが可能となる。
【0041】
実施の形態4.
実施の形態1および実施の形態2と実施の形態3でそれぞれ示したデータを移動する機能とプリフェッチ機能を組み合わせて使用することも可能である。
この場合は、実施の形態3で示したエリア属性管理テーブルは、実施の形態1又は2で示す論理アドレスが管理され、実施の形態3で示したプリフェッチバッファは、実施の形態1又は2で示す物理アドレスが管理されるようにすれば良い。
このようにすれば、ネットワークI/Fより受信したデータは、ネットワークI/Fがメモリに書き込むのと同時にプリフェッチバッファに書き込まれ、これを実施の形態1又は2の方法に基づいて移動すると、プリフェッチバッファは物理アドレスで管理されているため、プリフェッチバッファも論理アドレス上を移動することになる。従って、データを移動した後のデータアクセスはプリフェッチバッファに対して行われることになり、非常に高速なデータアクセスが可能となる。
以上より、実施の形態1と実施の形態3とを組合せた場合は、論理アドレスブロックに対応づけられているプリフェッチバッファ上の特定の物理アドレスブロックについて、対応づけの対象となる論理アドレスブロックを別の論理アドレスブロックに変更することにより、プリフェッチバッファ上の特定の物理アドレスブロックを論理アドレス上で移動させることができ、実施の形態2と実施の形態3とを組み合わせた場合は、論理アドレスブロックに対応づけられているプリフェッチバッファ上の特定の物理アドレスブロックについて、対応づけの対象となる論理アドレスブロックを別の論理アドレスブロックに変更するとともに、プリフェッチバッファ上の特定の物理アドレスブロックに新たに対応づけられた論理アドレスブロックのシフト量を変更することにより、プリフェッチバッファ上の特定の物理アドレスブロックを論理アドレス上で移動させることができる。
【0042】
このように、本実施の形態のメモリコントローラは、プリフェッチバッファ上のデータも論理アドレス上を移動させることができ、従って、データを移動した後のデータアクセスはプリフェッチバッファに対して行われることになり、非常に高速なデータアクセスが可能となる。
【0043】
ここで、以上の実施の形態1〜4に示したメモリコントローラの特徴を以下にて再言する。
【0044】
実施の形態1〜4に示したメモリコントローラは、CPUとネットワークI/FやストレージI/F等のI/Oデバイスにより共有されるメモリへのアクセスを制御するメモリコントローラであって、CPUとI/Oデバイスが供給するアドレス(論理アドレス)をブロック単位で管理する管理テーブルを備えたことを特徴とする。
【0045】
実施の形態1に示したメモリコントローラは、ブロック毎に論理アドレスとメモリの物理アドレスを対応づけるアドレス変換テーブルを有し、このアドレス変換テーブルの情報に基づいてCPUとI/Oデバイスが供給する論理アドレスを変換した物理アドレスによってメモリにアクセスすることを特徴とする。
【0046】
実施の形態1に示したメモリコントローラは、アドレス変換テーブルを書き換えることにより、論理アドレス上、データを移動させることができることを特徴とする。
【0047】
実施の形態1に示したメモリコントローラは、ソフトウェアインタフェースとして、ソースアドレス・レジスタとディスティネーションアドレス・レジスタとデータサイズ・レジスタを備え、これらのレジスタを設定への設定情報に基づいて、アドレス変換テーブルを書き換えることを特徴とする。
【0048】
実施の形態2に示したメモリコントローラは、ブロック毎にワードシフト量を有し、論理アドレスに対してワードシフト量を引き算することで生成する物理アドレスによってメモリにアクセスすることを特徴とする。
【0049】
実施の形態2に示したメモリコントローラは、ワードシフト量を更新することにより、論理アドレス上、データをワード単位で移動させることができることを特徴とする。
【0050】
実施の形態2に示したメモリコントローラは、ソフトウェアインタフェースとして相対的なワードシフト量を設定させる制御レジスタを備え、ワードシフトテーブルに設定されていた値と相対的なワードシフト量を加算した値によって、ワードシフトテーブルを更新することを特徴とする。
【0051】
実施の形態2に示したメモリコントローラは、ブロック単位のデータ移動を行う際に、ワードシフト量も物理アドレス情報と共に更新することで、ブロック単位のデータ移動とブロック内のワード単位のデータ移動を両立させることを特徴とする。
【0052】
実施の形態2に示したメモリコントローラは、ブロックデータを論理アドレス上、ブロック単位にもワード単位にも移動できることを特徴とする。
【0053】
実施の形態3に示したメモリコントローラは、管理するエリア毎にアクセス属性を有することで、メモリへのアクセス効率を向上させることを特徴とする。
【0054】
実施の形態3に示したメモリコントローラは、アクセス属性として、該当プリフェッチ可能か否かを示す情報と、該当エリアに対するプリフェッチサイズを持つことで、メモリへの効率的で無駄のないプリフェッチを可能にすることを特徴とする。
【0055】
実施の形態3に示したメモリコントローラは、プリフェッチバッファを複数持つことにより、CPUおよびI/Oデバイスからの連続するエリアへのアクセスが、他のエリアへのアクセスにより中断されても、メモリへのアクセス効率を低下させないことを特徴とする。
【0056】
実施の形態3に示したメモリコントローラは、プリフェッチバッファに該当エリアのデータが存在している場合に、ライトアクセスをプリフェッチバッファとメモリの双方にデータを書き込むことで、その後発生する該エリアへのリードアクセスを高速に処理することを特徴とする。
【0057】
実施の形態3に示すメモリコントローラは、プリフェッチバッファに該当エリアのデータが存在していない場合において、I/Oデバイス、またはCPUからの書き込みが予測される場合は、プリフェッチバッファにバッファリングすることで、CPU、またはI/Oデバイスからのリード処理を高速に処理することを特徴とする。
【0058】
実施の形態4に示すメモリコントローラは、CPUおよびI/Oデバイスが供給する論理アドレスによりプリフェッチ属性を管理し、物理アドレスでプリフェッチバッファを管理することで、実施の形態1および実施の形態2に記載の処理と実施の形態3に記載の処理とを組み合わせることを特徴とする。
【0059】
実施の形態4に示すメモリコントローラは、実施の形態3に示す属性管理方式とプリフェッチバッファ管理方式を有し、ブロックデータを論理アドレス上、ブロック単位にもワード単位にも移動でき、かつ実施の形態3によるメモリアクセスを可能とすることを特徴とする。
【0060】
【発明の効果】
本発明によれば、論理アドレスを所定のブロック単位で管理してメモリアクセスを制御するため、CPUに負荷をかけることなくメモリアクセスの高速化を図ることができ、また、効率的なプリフェッチを実現することができる。
【図面の簡単な説明】
【図1】実施の形態1に係るメモリコントローラの構成例を示す図。
【図2】一般的な計算機システムの構成例を示す図。
【図3】実施の形態2に係るメモリコントローラの構成例を示す図。
【図4】実施の形態3に係るメモリコントローラの構成例を示す図。
【図5】プリフェッチを行わない場合の連続アドレスへのアクセスのタイミングを示すタイミングチャート。
【図6】プリフェッチを行った場合の連続アドレスへのアクセスのタイミングを示すタイミングチャート。
【符号の説明】
1 CPU、2 チップセット、3 メモリ、4 ネットワークI/F、5 ストレージI/F、6 その他I/O、200 メモリコントローラ、201 調停回路、202 メモリアクセス制御回路、203 アドレス変換テーブル、204 制御レジスタ、205 アドレス変換+ワードシフトテーブル、206エリア属性管理テーブル、207 プリフェッチバッファ制御回路、208 プリフェッチバッファ。
【発明の属する技術分野】
本発明は、マイクロプロセッサやI/O(Input/Output)デバイスによりアクセスされるメモリの制御技術に関する。
【0002】
【従来の技術】
ネットワークやストレージ等のI/Oデバイスからの入力データは、I/Oデバイスにより、デバイスドライバが管理するI/Oバッファに転送され、それより上位のミドルウェアやアプリケーションは、このデータをそれぞれのプログラムが管理するデータバッファにコピーして使用する。この時に発生するメモリ間のデータコピーがCPU(Central Processing Unit)にとって大きな負荷となっている。
【0003】
従来の技術では、例えば、特開平11−327798では、高速なSRAM(Static Random Access Memory)をI/Oキャッシュメモリとして用いることにより、アクセススピードが上がる分データコピーにかかるCPUの負荷を軽減させる方法が開示されている。
【0004】
また、一般的な方法として、チップセットにDMA(Direct Memory Access)コントローラを内蔵させることにより、データコピーをDMAコントローラに行わせる方法がある。
【0005】
また、メモリのリードアクセスに関してはプリフェッチを行うことが有効であり、いくつかの方式が提案されている。
例えば、特開平9−120372では、プリフェッチ命令を用いることにより好適なプリフェッチを行う手法について開示している。この方法は、ソフトウェアの設計者が通常のロード命令とプリフェッチ命令を意識して記述する必要がある点で一般に普及させることが難しい。また、C言語を使ったプログラムにおいては、コンパイラが通常のロード命令とプリフェッチ命令を生成し分けることは、さらに困難である点で、実現上の課題がある。
【0006】
また、特開2000−148584では、CPUのひとつ前のアクセスに関連してプリフェッチを行う方式が開示されている。しかし、メモリを複数のCPUやI/Oデバイスでシェアするシステムにおいては、メモリへのアクセスは、複数のデバイスが交互にアクセスする場合があり、このようなケースにおいては、プリフェッチによる効果が得られないだけでなく、プリフェッチ動作がメモリバスを使用することによる性能の低下も考えられる。また、単一のCPUアクセスについても、タスクスイッチや割り込み処理等によりメモリアクセス処理が中断されることも考えられる。
【0007】
【特許文献1】
特開平11−327798号公報
【特許文献2】
特開平9−120372号公報
【特許文献3】
特開2000−148584号公報
【0008】
【発明が解決しようとする課題】
CPUとメモリとI/Oデバイスで構成される計算機システムでは、CPUの内部動作周波数に比して、メモリデバイスの動作周波数が低く、アクセスレイテンシが大きいため、メモリアクセス、特にメモリのリードアクセスやメモリ上のデータの移動にかかる処理がシステム性能のボトルネックになっている。
この問題は、近年のCPU内部周波数の向上率に比して、メモリの動作周波数やアクセスレイテンシの向上率が低いことに起因しており、計算機システムを構築する上で年々大きな課題となっている。
以上のように、従来の技術では、この問題を有効に解決することができず、本発明はこの問題を解決することを主な目的とする。
【0009】
【課題を解決するための手段】
本発明に係るメモリコントローラは、
メモリと、メモリへのアクセスを行うデバイスとに接続され、デバイスのメモリアクセスを制御するメモリコントローラであって、
デバイスがメモリにアクセスする際に用いる論理アドレスを所定のブロック単位で管理してデバイスのメモリアクセスを制御することを特徴とする。
【0010】
【発明の実施の形態】
実施の形態1.
図2は一般的な計算機システムの構成例を示しており、CPU1およびネットワークI/F4やストレージI/F5等のI/Oデバイスはチップセット2を介してメモリ3(例えばSDRAM(Synchronous Dynamic Random Access Memory))と接続されている。
ネットワークやストレージへの入力データは、ネットワークデバイスやストレージデバイスより、これらを制御するI/Oドライバが管理するI/Oバッファに転送され、その後、そのデータを使用するアプリケーション・ソフトウェアが管理するアプリケーション・バッファにコピーして使用される。同様に、ネットワークやストレージへの出力データは、アプリケーション・バッファよりI/Oバッファにコピーした後に、ネットワークやストレージデバイスに出力される。データコピーは、CPUがロード命令とストア命令により行うが、現在のCPUはCPU内部のクロック周波数に対して、CPUの外部バスへアクセスを行うためのクロック周波数が1/2〜1/10程度と低いために、メモリへのアクセスは、CPUの処理性能に対して非常に低速な処理となる。したがって、このようなデータコピーは、計算機システムの性能にとって大きなマイナス要因であり、データコピーを高速に行う手法が求められている。
【0011】
例えば、特開平11−327798では、高速メモリをI/Oバッファに用いてシステム性能を向上させているが、前述のようにCPUがロード命令とストア命令を用いて、I/Oバッファから主メモリ上のアプリケーション・バッファへデータコピーを行うため、性能向上の度合いは限定的である。
また、一般的な手法としては、図2のチップセットにDMAコントローラを内蔵して、DMAコントローラにメモリコピーを行わせる方法がある。この方法においては、CPUがロード命令やストア命令を実行しなくて済むという利点がある。しかし、データコピーにかかる時間はCPUがロード命令とストア命令により実施するのと大差がない。また、DMAコントローラがメモリアクセスを行うことにより、CPUのメモリアクセス性能が低下することや、DMAコントローラは、データコピーの終了を割り込みにより通知するために、割り込み処理が必要となること等の問題点がある。
【0012】
図1は、メモリ管理テーブルとしてアドレス変換テーブルを、図2におけるチップセット2上に内蔵されるメモリコントローラ200に実装した場合の例を示している。
図1において、アドレス変換テーブル203は、CPU1とI/Oデバイスが供給する論理アドレスとメモリ上の物理アドレスを例えば1Kバイトのブロック単位で管理し、論理アドレスのブロック(論理アドレスブロック)と物理アドレスのブロック(物理アドレスブロック)を対応づけている。アドレス変換テーブル203では、例えば、0x1000番地(Logic)を先頭とする1Kバイト分の論理アドレスブロックと、0x2000番地(Phy)を先頭とする1Kバイト分の物理アドレスブロックとを対応づけるといった形で論理アドレスブロックと物理アドレスブロックの対応づけを管理している。そして、アドレス変換テーブル203では、CPU又はI/Oデバイスから論理アドレスが供給された場合に、供給された論理アドレスが対応する物理アドレスブロックを特定し、論理アドレスを物理アドレスに変換し、変換した物理アドレスをメモリアクセス制御回路202に供給する。
制御レジスタ204は、アドレス変換テーブル203の内容を更新するためのソフトウェアインタフェースである。
調停回路201は、CPUとI/Oデバイスのアクセスの調停を行い、いずれかのアクセスのみをメモリアクセス制御回路202とアドレス変換テーブル203に供給する。
メモリアクセス制御回路202は、上記調停回路201より供給されたアクセスによりメモリの制御を行う。その際に、アドレスとして、アドレス変換テーブルが供給するメモリの物理アドレスを使用する。
【0013】
なお、CPU1、ネットワークI/F4やストレージI/F5等のI/Oデバイスは、メモリを共用する複数のデバイスであり、メモリコントローラにおいて、管理テーブルはアドレス管理部の例に相当し、メモリアクセス制御回路はメモリアクセス制御部の例に相当する。
【0014】
一般的な計算機システムでは、I/Oバッファに置かれている受信データをアプリケーション・バッファにデータコピーした後、コピー元のデータにアクセスすることは殆どない。これは、I/Oバッファがデバイスドライバによって管理されているメモリ領域であり、デバイスドライバは、I/Oデバイスを制御するためのソフトウェアであるために、デバイスの制御が、この場合はデータ受信処理が終わってしまえば、その受信データにアクセスする必要が無くなるためである。
従って、多くの場合において、このようなI/Oバッファからアプリケーション・バッファにコピーされる場合は、データコピーはデータムーブ(移動)であっても差し支えないことになる。
【0015】
本実施の形態では、物理アドレス上はデータを移動させずに、アドレス変換テーブルを更新することで、論理アドレス上でデータを移動させることにより、高速にデータムーブを行う特徴を持つ。
具体的に図1の構成において、ネットワークI/Fが1Kバイトのデータを受信する例を用いて説明を行う。
ネットワークI/Fは、デバイスドライバにより、I/Oバッファに受信データを転送するようにプログラミングされている。I/Oバッファはデバイスドライバからは、論理アドレスで管理されている。従って、ネットワークI/Fは受信データを論理アドレスにより転送する。この例では、I/Oバッファのアドレスを、0x1000番地(Logic)であるとする。
ネットワークI/Fは、データを受信するとI/Oバスを用いて0x1000番地(Logic)に受信データの転送を行う。チップセット内部のメモリコントローラ200は、この転送を受けてアドレス変換テーブル203を用いて、論理アドレスから物理アドレスへの変換を行い、物理アドレスでメモリへデータの転送を行う。
ここでは仮にアドレス変換テーブル203において、0x1000番地(Logic)が0x2000番地(Phy)に対応づけられていた、つまり、0x1000番地(Logic)を先頭とする1Kバイト分の論理アドレスブロックと0x2000番地(Phy)を先頭とする1Kバイト分の物理アドレスブロックが対応づけられていたとする。アドレス変換テーブル203では、下位10ビットは論理アドレスをそのまま物理アドレスとして出力し、それ以外の上位アドレスは、テーブルに保持されている対応づけられたアドレスに付け替えて物理アドレスとし、メモリアクセス制御回路に出力する。つまり、アドレス変換テーブル203では、論理アドレスブロックと物理アドレスブロックの対応づけから、供給された論理アドレスに対応する物理アドレスブロックを特定して、論理アドレスを物理アドレスに変換する。
メモリアクセス制御回路は物理アドレスでメモリにアクセスを行う。
このようにすることで、0x1000番地(Logic)は、0x2000番地(Phy)に変換されて、メモリへは0x2000番地(Phy)にデータが転送される。ここで、0x2000番地(Phy)は、ネットワークI/Fからだけでなく、CPUからも0x1000番地(Logic)によりアクセスされることを付け加えておく。
【0016】
デバイスドライバによる一定の処理が完了した後、受信データはアプリケーション・バッファに渡される。ここでは仮に、アプリケーション・バッファのアドレスが0x8000番地(Logic)であるとし、アドレス変換テーブル203では0x8000番地(Logic)と0x9000番地(Phy)とを対応づけていた、つまり、0x8000番地(Logic)を先頭とする1Kバイト分の論理アドレスブロックと0x9000番地(Phy)を先頭とする1Kバイト分の物理アドレスブロックとを対応づけていたとする。この場合に、ソフトウェアは、アドレス変換テーブルを0x8000番地(Logic)と0x2000番地(Phy)とを対応づけるように書き換え、もともと、0x8000番地(Logic)に対応づけられていた0x9000番地(Phy)を0x1000番地(Logic)と対応づけるように書き換える。
これにより、アプリケーション・ソフトウェアは0x8000番地(Logic)、すなわちアプリケーション・バッファをアクセスすれば、0x2000番地(Phy)にアクセスすることとなり、受信データにアクセスできるようになる。すなわち、0x1000番地(Logic)から0x8000番地(Logic)へ1Kバイトのデータが移動したことになる。このように、論理アドレスブロックに対応づけられている特定の物理アドレスブロックについて、対応づけの対象となる論理アドレスブロックを別の論理アドレスブロックに変更することにより、特定の物理アドレスブロックを論理アドレス上で移動させることができる。
同時に、デバイスドライバが管理するI/Oバッファ0x1000番地(Logic)には、新たに0x9000番地(Phy)が物理領域として割り当てられることになる。
同様に、2Kバイトの受信データであれば、2ブロック分のアドレス変換テーブルを書き換えれば良い。
【0017】
そして、本実施の形態では、アドレス変換テーブルの書き換えに関して、好適なソフトウェアインタフェースも定義する。メモリコントローラには、アドレス変換テーブル書き換え用として、制御レジスタ204に、ソースアドレス・レジスタとディスティネーションアドレス・レジスタとブロックサイズ・レジスタを備える。ソースアドレス・レジスタには、書換え前(対応づけの変更前)の論理アドレスブロックを設定し、ディスティネーションアドレス・レジスタには書換え後(対応づけの変更後)の論理アドレスブロックを設定し、ブロックサイズ・レジスタには書換え(対応づけの変更)を行うブロックサイズを設定する。
前述した、ネットワークI/Fから受信したI/Oバッファにあるデータをアプリケーション・バッファに移動するケースでは、ソースアドレス・レジスタに0x1000番地(Logic)を設定し、ディスティネーションアドレス・レジスタに0x8000番地(Logic)を設定し、ブロックサイズ・レジスタに1(1ブロック=1KB)を設定することで、メモリコントローラが、0x1000番地(Logic)に対応づけられていた1Kバイトの物理アドレスブロックを0x8000番地(Logic)に対応づけ、0x8000番地(Logic)に対応づけられていた1Kバイトの物理アドレスブロックを0x1000番地(Logic)に対応づける。
このようなソフトウェアインタフェースにより、ソフトウェアに論理アドレスと物理アドレスの対応づけを意識する必要が無くなり、システムの設計が容易になる。
【0018】
このように、本実施の形態のメモリコントローラは、アドレス変換テーブルの対応づけを更新することで、物理アドレス上でデータを移動させることなく、論理アドレス上でデータを移動させることができ、これにより高速にデータムーブを行うことができ、CPUに負荷をかけることなくメモリアクセスの高速化を図ることができる。
【0019】
実施の形態2.
実施の形態1で示したアドレス変換機能を用いたブロック単位のデータムーブ機能に加えて、本実施の形態では、メモリコントローラがブロック単位にメモリを管理していることを利用して、ワード単位のデータ移動の機能を実現する。この機能は、ネットワークI/Fにデータを出力する場合などに、ブロックデータにパケットヘッダを付加する場合に好適である。
なお、本実施の形態において、ワードはメモリバスのビット幅と同じとし、メモリバスのビット幅は32ビットとする。すなわち、1ワードは4バイトである。
【0020】
図3は、ワード単位でのデータ移動を可能にしたメモリコントローラ200の内部構造を示している。
アドレス変換+ワードシフトテーブル205は、実施の形態1のアドレス変換テーブル203の機能に加えて、メモリコントローラが管理するメモリブロック毎にアドレスをシフトするためのシフト量を保持するためのテーブルである。つまり、アドレス変換+ワードシフトテーブル205は、実施の形態1のアドレス変換テーブルと同様に論理アドレスブロックと物理アドレスブロックとを対応づけるとともに、更に、論理アドレスブロックごとにアドレスシフトのためのシフト量を設定している。シフト量はワード単位で設定が可能で1ワードは4バイトである。
本実施の形態では、制御レジスタ204は、実施の形態1のアドレス変換テーブルを更新するためのソフトウェアインタフェースに加えて、メモリコントローラが管理するメモリブロック毎のシフト量を設定するためのブロックアドレス指定レジスタとシフト量設定レジスタからなるソフトウェアインタフェースを備える。
なお、本実施の形態においても、メモリコントローラが管理するメモリブロックサイズは、1Kバイトとする。
また、本実施の形態のアドレス変換+ワードシフトテーブルは、アドレス管理部の例に相当する。
【0021】
例えば、0x1000番地(Logic)にある512バイトのブロック・データに32バイトのパケットヘッダを付加するために、0x1020番地(Logic)にブロック・データを移動する場合について説明する。
まず、ソフトウェアは制御レジスタのブロックアドレス指定レジスタに0x1000番地(Logic)を設定し、シフト量設定レジスタに8(8ワード=32バイト)を設定し、ワードシフトテーブル更新コマンドを発行することにより、0x1000番地(Logic)のブロックを32バイトシフトするようにワードシフトテーブルを更新する。
前記設定が行われると、アドレス変換+ワードシフトテーブル205は、メモリの物理アドレスを生成する場合に、下位10ビットについては、CPUおよびI/Oデバイスが供給するアドレスに対してワードシフトテーブルに設定されたシフト量を引き算したアドレスを生成し、それ以外の上位アドレスは、実施の形態1に示すようにアドレスの付け替えによりアドレスを生成する。つまり、本実施の形態では、CPUやI/Oデバイスから供給された論理アドレスに対応する物理アドレスブロックを特定するとともに、供給された論理アドレスが属する論理アドレスブロックのシフト量に従ってアドレスシフトを行い、供給された論理アドレスを物理アドレスに変換する。
【0022】
仮に、0x1000番地(Logic)と0x2000番地(Phy)が対応づけられていて、0x1000番地(Logic)のブロックに32バイトのシフト量が設定されている場合、CPUおよびI/Oデバイスからの0x1020番地(Logic)は、0x2000番地(Phy)に変換され、0x1000番地(Logic)は、0x23E0番地(Phy)に変換される。
このことは、付加される32バイトのヘッダは、物理メモリ上は0x23E0番地(Phy)から0x23FF番地(Phy)の32バイトの物理アドレス空間に置かれ、CPUおよびI/Oデバイスからは0x1000番地(Logic)から0x1020番地(Logic)の32バイトの論理アドレス空間によってアクセスされることになる。また、512バイトのブロックデータは、物理メモリ上は、0x2000番地(Phy)から0x2200番地(Phy)の512バイトの物理アドレス空間に置かれ、CPUおよびI/Oデバイスからは、0x1020番地(Logic)から0x121F番地(Logic)の512バイトの論理アドレス空間によってアクセスされることを示す。
【0023】
さらに、ワードシフトを設定したブロックを実施の形態1に示す方法により、論理アドレス上を移動(データムーブ)させる場合について説明する。
例えば、0x1000番地(Logic)は物理アドレス0x2000番地(Phy)と対応づけられており、ワードシフト量が8に設定されていて、0x8000番地(Logic)は物理アドレス0x9000番地(Phy)と対応づけられており、ワードシフト量が1に設定されているとする。
0x1000番地(Logic)と0x8000番地(Logic)を実施の形態1に示す方法によりデータムーブさせる場合は、0x1000番地(Logic)の物理アドレスとワードシフト量を、0x8000番地(Logic)のデータムーブ後の物理アドレスとワードシフト量とし、0x8000番地(Logic)の物理アドレスとワードシフト量を、0x1000番地(Logic)のデータムーブ後の物理アドレスとワードシフト量とすれば良い。即ち、0x1000番地(Logic)のデータムーブ後の物理アドレスは0x9000番地(Phy)、ワードシフト量は1であり、0x8000番地(Logic)のデータムーブ後の物理アドレスは0x2000番地(Phy)、ワードシフト量は8である。
この結果、CPUおよびI/Oデバイスは、0x8000番地(Logic)から0x801F番地(Logic)の論理アドレスにより付加した32バイトのパケットヘッダをアクセスでき、0x8020番地(Logic)から0x821F番地(Logic)の論理アドレスにより512バイトのブロック・データをアクセスすることが可能になる。
このように、本実施の形態では、論理アドレスブロックに対応づけられている特定の物理アドレスブロックについて、対応づけの対象となる論理アドレスブロックを別の論理アドレスブロックに変更するとともに、特定の物理アドレスブロックに新たに対応づけられた論理アドレスブロックのシフト量を変更することにより、特定の物理アドレスブロックを論理アドレス上で移動させることができる。
なお、以上の説明では、ブロック及びシフト量の双方を変更することでデータを論理アドレス上で移動させる場合について説明したが、ブロックの変更を伴わずにワードシフトテーブルに示されているシフト量を変更することで論理アドレス上でデータを移動させてもよい。
【0024】
さらに、本実施の形態ではソフトウェアによるワードシフトテーブルの変更を容易にするために、ワードシフト量設定レジスタは、相対的なシフト量(シフト量の変更量)を設定するようにする。すなわち、その時点から何ワードシフトするかを設定するようにする。そして、ワードシフトテーブルの更新は、その時点でのワードシフト管理テーブルに設定されているシフト量にシフト量設定レジスタに設定された相対値(シフト量の変更量)を足し算したものを新たな値として書き込む。
例えば、既にワードシフト量8と設定されているメモリブロックに対して、シフト量設定レジスタに1と設定してワードシフトコマンドが発行した場合は、ワードシフトテーブルは9に更新される。このようにすることで、ソフトウェアは、以前に設定したシフト量を意識する必要がなくなるため、管理が容易になる。
【0025】
このように、本実施の形態のメモリコントローラは、アドレス変換テーブルの対応づけ及びワードシフトテーブルのシフト量を更新することで、物理アドレス上でデータを移動させることなく、論理アドレス上でブロック単位及びワード単位でデータを移動させることができ、これにより高速にデータムーブを行うことができ、CPUに負荷をかけることなくメモリアクセスの高速化を図ることができる。
【0026】
実施の形態3.
本実施の形態では、メモリに対するプリフェッチを効率的に行うことにより計算機システムの性能を向上させる方法について示す。
【0027】
図5、図6は、図2に示す計算機システムにおいて、主メモリに一般的なSDRAMを用いた場合のプリフェッチを行わない場合とプリフェッチを行った場合の連続するアドレスへのアクセスのタイミングを示したものである。プリフェッチを行わない場合は、図5に示すように、2回目以降のアクセスが9サイクルかかっているのに対して、プリフェッチを行った場合は、図6に示すように、2回目以降のバーストが5サイクルで完了する。これは、プリフェッチを行うことで、SDRAMのレイテンシを隠蔽できることによる。また、メモリバスに流れるデータ量を見れば分かるように、CPUからのトランザクションを待たずにメモリをアクセスすることで、メモリバスの実質的バンド幅を大幅に向上させることも可能となる。このように、SDRAMへのブロック・リード・アクセスは、プリフェッチを行うことが、SDRAM特有のアクセス・レイテンシを低減できる点で有効である。
【0028】
しかしながら、実際の計算機システムにおいては、いつもブロックデータにアクセスする訳ではなく、様々なサイズのデータへのアクセスが存在するため、常にプリフェッチを行うことは計算機システムの性能を向上させる上で決して有効な手法ではない。例えば、4バイトのデータに対して、1Kバイトのプリフェッチを行ってしまえば、システム性能としては非常に大きなダメージを受ける。また、プリフェッチが有効なデータへのアクセスであっても、割り込みやタスクスイッチ、他のI/Oからのメモリアクセスにより、連続する領域へのアクセスが中断されてしまうケースもある。
従って、一般的な計算機システムではプリフェッチは行わず、特開平11−327798の例にあるように高速メモリを部分的に用いてシステム性能を向上させている。
【0029】
また、プリフェッチを行う手法としては、特開平9−120372の例にあるように、プロセッサが実行する命令にプリフェッチ情報を埋め込む方法がある。この方法では、特開2000−148584に示されるように、
コンパイラが通常のロード命令とプリフェッチ命令を区別して生成することが困難であるとの問題点がある。
また、特開2000−148584の方法によれば、上記コンパイラによる問題は解決されるものの、CPUのひとつ前のアクセスに関連してプリフェッチ動作が行われる点において、前述したように割り込みやタスクスイッチ、他のI/Oからのメモリアクセスにより連続するアクセスが中断された場合に、プリフェッチが有効に働かないという問題点がある。
【0030】
図4は、本実施の形態に係るメモリコントローラ200の構成例を示す。
図4において、調停回路201は、CPUとI/Oデバイスのアクセスの調停を行い、いずれかのアクセスのみをメモリアクセス制御回路202とエリア属性管理テーブル206に供給する。
エリア属性管理テーブル206は、1Kバイトの論理アドレスブロックごとにエリア属性を保持し、調停回路201を介してCPU又はI/Oデバイスより供給される論理アドレスにより、エリア属性情報をメモリアクセス制御回路202に供給する。エリア属性には、論理アドレスブロックがプリフェッチの対象となるか否か、及びプリフェッチを行うとした場合のプリフェッチサイズが示されている。エリア属性管理テーブル206は、調停回路201を介してCPU又はI/Oデバイスより論理アドレスが供給された場合に、エリア属性情報として、供給された論理アドレスがプリフェッチの対象となるか否か、プリフェッチの対象となる場合にはそのプリフェッチサイズをメモリアクセス制御回路202に通知する。プリフェッチサイズは、回路を簡単にするために、例えば、1Kバイト、512バイト、256バイトの3通りとする。
なお、エリア属性管理テーブルは、プリフェッチ属性管理部の例に相当し、エリア属性情報はプリフェッチ属性情報の例に相当する。
【0031】
メモリアクセス制御回路202は、調停回路201より供給されるアドレスと、エリア属性管理テーブル206から供給されるエリア属性情報、プリフェッチバッファ208に該データ(プリフェッチデータ)が有るか無いか(Hit/Miss)により、以下に示すメモリまたはプリフェッチバッファへのアクセスを行う。
(1)リードアクセスであり、プリフェッチ可能、プリフェッチバッファにプリフェッチデータが無い場合
エリア属性のプリフェッチサイズ分のデータをメモリよりリードし、該アクセスに対するリードデータを返すと同時に、全てのリードデータをプリフェッチバッファに書き込む。
(2)リードアクセスであり、プリフェッチ可能、プリフェッチバッファにプリフェッチデータが有る場合
メモリへはアクセスを行わず、プリフェッチバッファよりデータをリードし、該アクセスに対するリードデータを返す。
(3)ライトアクセスであり、プリフェッチ可能、プリフェッチバッファにプリフェッチデータが有る場合
プリフェッチバッファとメモリの双方に対して、該アクセスのライトデータを書き込む。
(4)ライトアクセスであり、プリフェッチ可能、プリフェッチバッファにプリフェッチデータが無い場合、及び、ライトアクセスであり、プリフェッチ不可である場合
該アクセスのライトデータをメモリに書き込む。
【0032】
プリフェッチバッファ制御回路207は、調停回路201より供給されるアドレスによりアクセスされるデータがプリフェッチバッファに有るか無いかを判定し、該アクセスのデータがプリフェッチバッファに有る場合はHit信号を、無い場合はMiss信号を出力する。また、本実施の形態では複数個のプリフェッチバッファ208を備える。プリフェッチバッファ制御回路207は、これら複数のプリフェッチバッファ208へのアクセス履歴を保持し、新たな領域へのプリフェッチ要求に対しては、もっともアクセス履歴が古いプリフェッチバッファを廃棄して、そのプリフェッチバッファに新たなプリフェッチデータを保持する。なお、本実施の形態でのプリフェッチバッファのサイズは1Kバイト、プリフェッチバッファの数は8個である。なお、プリフェッチバッファ制御回路は、プリフェッチバッファ制御部の例に相当する。
【0033】
1Kバイトの0x1000番地にあるブロックデータへのリードアクセスを行う場合について例を示す。
まず、ソフトウェアは、この領域をプリフェッチ可能、プリフェッチサイズ1Kバイトにエリア属性管理テーブル206を設定する。この処理は、OSがタスクやハンドラにメモリを割り当てる時に行っても良いし、タスクやハンドラ自身が行っても良い。
CPUもしくは、I/Oデバイスがこの領域、例えば0x1000番地へのリードアクセスを発行すると、エリア属性管理テーブル206は、メモリアクセス制御回路202に対してプリフェッチ可能、プリフェッチサイズが1Kバイトのエリア属性情報を出力すると同時に、プリフェッチバッファ制御回路はMissを出力する。
これを受けて、メモリアクセス制御回路は、メモリに対して図5に示す連続したリードアクセスによって1Kバイトのデータをリードし、CPUもしくはI/Oデバイスへリードデータを返すと同時に、プリフェッチバッファへリードしたデータ全てを書き込む。
次に、0x1020番地へのアクセスがあった場合は、エリア属性管理テーブル206からプリフェッチ可能とのエリア属性情報、プリフェッチバッファ制御回路207からHitが出力されるので、メモリアクセス制御回路202はプリフェッチバッファ208よりデータをリードして、CPUもしくは、I/Oデバイスにリードデータを返す。
【0034】
さらに、本実施の形態ではプリフェッチバッファを複数持つことで、プリフェッチバッファの利用効率を高めている。例えば、前記のように0x1000番地から1Kバイトをプリフェッチバッファに保持した状態で、0x2000番地へのリードアクセスがあった場合、その0x2000番地がプリフェッチ可能であれば、その時点で最もアクセス履歴の古い、すなわち、最後にアクセスされてから時間が経過しているプリフェッチバッファを破棄して0x2000番地のデータをプリフェッチバッファに格納する。このことは、ブロックデータへのアクセスの途中で、命令フェッチやタスクスイッチ、割り込み処理、I/Oデバイスからのアクセス等の発生によるプリフェッチしたブロックデータへの連続アクセスの中断があっても、プリフェッチデータを保持し続けることができ、低レイテンシなデータ提供を可能にする。つまり、本実施の形態では、メモリアクセス制御回路は、いずれかのプリフェッチバッファへのアクセス中に他のプリフェッチバッファへのアクセスが必要になった場合に、アクセス中のプリフェッチバッファにプリフェッチデータを保持させたまま当該プリフェッチバッファへのアクセスを中断し、アクセスが必要になった他のプリフェッチバッファへのアクセスを開始することができ、更には、他のプリフェッチバッファへのアクセスが終了した際に、アクセスが中断したプリフェッチバッファへのアクセスを再開することができる。
また、このような特徴から、本実施の形態がブロックデータへのアクセスだけでなく、命令アクセスに対しても有効であることを示す。
【0035】
さらに、本実施の形態では、プリフェッチされた領域へのライトアクセスがあった場合は、メモリアクセス制御回路が、メモリにライトするのと平行して、プリフェッチバッファにもライトする。このことにより、データのコヒーレンシを保証し、次にリードアクセスがあった場合に低レイテンシなデータ供給が可能となる。
【0036】
さらに、本実施の形態では、CPUとI/Oデバイスとのデータの受け渡しも高性能に実現することが可能である。例えば、ネットワークI/Fが受信したデータは、メモリ上のI/Oバッファにライトされ、そのデータはCPUによってリードされる可能性が非常に高い。このような場合に、I/Oバッファの領域がプリフェッチバッファにあれば、ネットワークI/Fからのライトは、プリフェッチバッファにもライトされるために、その後のCPUからのリードは、プリフェッチバッファにアクセスすることになるため、高速に処理することが可能となる。I/Oバッファ領域をプリフェッチバッファに載せるためには、I/Oバッファ領域のエリア属性をプリフェッチ可能、プリフェッチサイズ1Kバイトに設定し、1WORDリードすれば、プリフェッチが行われてI/Oバッファ領域がプリフェッチバッファに載ることになる。
ただし、このような受信バッファ領域には多くの場合は、受信前には意味の有るデータが置かれていない、即ちソフトウェアから見ればバッファが空であり、このような場合にはデータのコヒーレンシを保証しなくても良いことになる。
そこで、本実施の形態では、擬似プリフェッチ機能を定義する。擬似プリフェッチ機能は、プリフェッチをせずにプリフェッチをしたことにする機能である。具体的には、ソフトウェアが、制御レジスタを通して、擬似プリフェッチアドレスを設定し、擬似プリフェッチコマンドを発行する。これが発行されると、プリフェッチバッファ制御回路207は、擬似プリフェッチを行い、擬似プリフェッチアドレスに対して、プリフェッチバッファを与える。これに伴うメモリへのリードは行わない。従って、CPUとI/Oデバイスとの間のデータのやり取りを高速に行うことができる上に、メモリバスを効率的に使うことが可能となる。
このように本実施の形態では、プリフェッチ対象の論理アドレスブロックについてプリフェッチデータがプリフェッチバッファに存在しないために当該論理アドレスブロックに対するライトデータがプリフェッチバッファに書き込めない状態にある場合に、プリフェッチバッファ制御回路が当該論理アドレスブロックに対するライトアクセスの発生前に当該論理アドレスブロックについて擬似プリフェッチを行って当該論理アドレスブロックに対するライトデータをプリフェッチバッファに書込める状態にする。
【0037】
以上のように、本実施の形態のメモリコントローラは、論理アドレスブロックごとのエリア属性に従ってプリフェッチを行うため、プリフェッチが有効な論理アドレスブロックのみプリフェッチを行うといった効率的なプリフェッチを行うことができる。
また、エリア属性としてプリフェッチサイズが設定されているため、論理アドレスブロックごとに効率のよいプリフェッチサイズでプリフェッチを行うことができる。
【0038】
更には、本実施の形態のメモリコントローラは、複数のプリフェッチバッファを備えているため、ブロックデータへのアクセスの途中で、命令フェッチやタスクスイッチ、割り込み処理、I/Oデバイスからのアクセス等の発生によるプリフェッチしたブロックデータへの連続アクセスの中断があっても、プリフェッチデータを保持し続けることができ、低レイテンシなデータ提供を可能にする。
また、本実施の形態のメモリコントローラは、ブロックデータへのアクセスだけでなく、命令アクセスに対しても有効である。
【0039】
また、本実施の形態のメモリコントローラは、プリフェッチされた領域へのライトアクセスがあった場合は、メモリにライトするのと平行して、プリフェッチバッファにもライトする。このことにより、データのコヒーレンシを保証し、次にリードアクセスがあった場合に低レイテンシなデータ供給が可能となる。
【0040】
また、本実施の形態のメモリコントローラは、擬似プリフェッチを行うことにより、複数のデバイス間のデータのやり取りを高速に行うことができる上に、メモリバスを効率的に使うことが可能となる。
【0041】
実施の形態4.
実施の形態1および実施の形態2と実施の形態3でそれぞれ示したデータを移動する機能とプリフェッチ機能を組み合わせて使用することも可能である。
この場合は、実施の形態3で示したエリア属性管理テーブルは、実施の形態1又は2で示す論理アドレスが管理され、実施の形態3で示したプリフェッチバッファは、実施の形態1又は2で示す物理アドレスが管理されるようにすれば良い。
このようにすれば、ネットワークI/Fより受信したデータは、ネットワークI/Fがメモリに書き込むのと同時にプリフェッチバッファに書き込まれ、これを実施の形態1又は2の方法に基づいて移動すると、プリフェッチバッファは物理アドレスで管理されているため、プリフェッチバッファも論理アドレス上を移動することになる。従って、データを移動した後のデータアクセスはプリフェッチバッファに対して行われることになり、非常に高速なデータアクセスが可能となる。
以上より、実施の形態1と実施の形態3とを組合せた場合は、論理アドレスブロックに対応づけられているプリフェッチバッファ上の特定の物理アドレスブロックについて、対応づけの対象となる論理アドレスブロックを別の論理アドレスブロックに変更することにより、プリフェッチバッファ上の特定の物理アドレスブロックを論理アドレス上で移動させることができ、実施の形態2と実施の形態3とを組み合わせた場合は、論理アドレスブロックに対応づけられているプリフェッチバッファ上の特定の物理アドレスブロックについて、対応づけの対象となる論理アドレスブロックを別の論理アドレスブロックに変更するとともに、プリフェッチバッファ上の特定の物理アドレスブロックに新たに対応づけられた論理アドレスブロックのシフト量を変更することにより、プリフェッチバッファ上の特定の物理アドレスブロックを論理アドレス上で移動させることができる。
【0042】
このように、本実施の形態のメモリコントローラは、プリフェッチバッファ上のデータも論理アドレス上を移動させることができ、従って、データを移動した後のデータアクセスはプリフェッチバッファに対して行われることになり、非常に高速なデータアクセスが可能となる。
【0043】
ここで、以上の実施の形態1〜4に示したメモリコントローラの特徴を以下にて再言する。
【0044】
実施の形態1〜4に示したメモリコントローラは、CPUとネットワークI/FやストレージI/F等のI/Oデバイスにより共有されるメモリへのアクセスを制御するメモリコントローラであって、CPUとI/Oデバイスが供給するアドレス(論理アドレス)をブロック単位で管理する管理テーブルを備えたことを特徴とする。
【0045】
実施の形態1に示したメモリコントローラは、ブロック毎に論理アドレスとメモリの物理アドレスを対応づけるアドレス変換テーブルを有し、このアドレス変換テーブルの情報に基づいてCPUとI/Oデバイスが供給する論理アドレスを変換した物理アドレスによってメモリにアクセスすることを特徴とする。
【0046】
実施の形態1に示したメモリコントローラは、アドレス変換テーブルを書き換えることにより、論理アドレス上、データを移動させることができることを特徴とする。
【0047】
実施の形態1に示したメモリコントローラは、ソフトウェアインタフェースとして、ソースアドレス・レジスタとディスティネーションアドレス・レジスタとデータサイズ・レジスタを備え、これらのレジスタを設定への設定情報に基づいて、アドレス変換テーブルを書き換えることを特徴とする。
【0048】
実施の形態2に示したメモリコントローラは、ブロック毎にワードシフト量を有し、論理アドレスに対してワードシフト量を引き算することで生成する物理アドレスによってメモリにアクセスすることを特徴とする。
【0049】
実施の形態2に示したメモリコントローラは、ワードシフト量を更新することにより、論理アドレス上、データをワード単位で移動させることができることを特徴とする。
【0050】
実施の形態2に示したメモリコントローラは、ソフトウェアインタフェースとして相対的なワードシフト量を設定させる制御レジスタを備え、ワードシフトテーブルに設定されていた値と相対的なワードシフト量を加算した値によって、ワードシフトテーブルを更新することを特徴とする。
【0051】
実施の形態2に示したメモリコントローラは、ブロック単位のデータ移動を行う際に、ワードシフト量も物理アドレス情報と共に更新することで、ブロック単位のデータ移動とブロック内のワード単位のデータ移動を両立させることを特徴とする。
【0052】
実施の形態2に示したメモリコントローラは、ブロックデータを論理アドレス上、ブロック単位にもワード単位にも移動できることを特徴とする。
【0053】
実施の形態3に示したメモリコントローラは、管理するエリア毎にアクセス属性を有することで、メモリへのアクセス効率を向上させることを特徴とする。
【0054】
実施の形態3に示したメモリコントローラは、アクセス属性として、該当プリフェッチ可能か否かを示す情報と、該当エリアに対するプリフェッチサイズを持つことで、メモリへの効率的で無駄のないプリフェッチを可能にすることを特徴とする。
【0055】
実施の形態3に示したメモリコントローラは、プリフェッチバッファを複数持つことにより、CPUおよびI/Oデバイスからの連続するエリアへのアクセスが、他のエリアへのアクセスにより中断されても、メモリへのアクセス効率を低下させないことを特徴とする。
【0056】
実施の形態3に示したメモリコントローラは、プリフェッチバッファに該当エリアのデータが存在している場合に、ライトアクセスをプリフェッチバッファとメモリの双方にデータを書き込むことで、その後発生する該エリアへのリードアクセスを高速に処理することを特徴とする。
【0057】
実施の形態3に示すメモリコントローラは、プリフェッチバッファに該当エリアのデータが存在していない場合において、I/Oデバイス、またはCPUからの書き込みが予測される場合は、プリフェッチバッファにバッファリングすることで、CPU、またはI/Oデバイスからのリード処理を高速に処理することを特徴とする。
【0058】
実施の形態4に示すメモリコントローラは、CPUおよびI/Oデバイスが供給する論理アドレスによりプリフェッチ属性を管理し、物理アドレスでプリフェッチバッファを管理することで、実施の形態1および実施の形態2に記載の処理と実施の形態3に記載の処理とを組み合わせることを特徴とする。
【0059】
実施の形態4に示すメモリコントローラは、実施の形態3に示す属性管理方式とプリフェッチバッファ管理方式を有し、ブロックデータを論理アドレス上、ブロック単位にもワード単位にも移動でき、かつ実施の形態3によるメモリアクセスを可能とすることを特徴とする。
【0060】
【発明の効果】
本発明によれば、論理アドレスを所定のブロック単位で管理してメモリアクセスを制御するため、CPUに負荷をかけることなくメモリアクセスの高速化を図ることができ、また、効率的なプリフェッチを実現することができる。
【図面の簡単な説明】
【図1】実施の形態1に係るメモリコントローラの構成例を示す図。
【図2】一般的な計算機システムの構成例を示す図。
【図3】実施の形態2に係るメモリコントローラの構成例を示す図。
【図4】実施の形態3に係るメモリコントローラの構成例を示す図。
【図5】プリフェッチを行わない場合の連続アドレスへのアクセスのタイミングを示すタイミングチャート。
【図6】プリフェッチを行った場合の連続アドレスへのアクセスのタイミングを示すタイミングチャート。
【符号の説明】
1 CPU、2 チップセット、3 メモリ、4 ネットワークI/F、5 ストレージI/F、6 その他I/O、200 メモリコントローラ、201 調停回路、202 メモリアクセス制御回路、203 アドレス変換テーブル、204 制御レジスタ、205 アドレス変換+ワードシフトテーブル、206エリア属性管理テーブル、207 プリフェッチバッファ制御回路、208 プリフェッチバッファ。
Claims (26)
- メモリと、メモリへのアクセスを行うデバイスとに接続され、デバイスのメモリアクセスを制御するメモリコントローラであって、
デバイスがメモリにアクセスする際に用いる論理アドレスを所定のブロック単位で管理してデバイスのメモリアクセスを制御することを特徴とするメモリコントローラ。 - 前記メモリコントローラは、
所定のブロック単位で論理アドレスとメモリ上の物理アドレスとを管理し、論理アドレスのブロックである論理アドレスブロックと物理アドレスのブロックである物理アドレスブロックとを対応づけ、デバイスより論理アドレスが供給された場合に、供給された論理アドレスに対応する物理アドレスブロックを特定し、供給された論理アドレスを物理アドレスに変換するアドレス管理部と、
前記アドレス管理部により変換された物理アドレスに従ってメモリへのアクセスを行うメモリアクセス制御部とを有することを特徴とする請求項1に記載のメモリコントローラ。 - 前記アドレス管理部は、
所定の場合に、論理アドレスブロックに対応づけられている特定の物理アドレスブロックについて、対応づけの対象となる論理アドレスブロックを別の論理アドレスブロックに変更することにより、前記特定の物理アドレスブロックを論理アドレス上で移動させることを特徴とする請求項2に記載のメモリコントローラ。 - 前記メモリコントローラは、更に、
対応づけの変更前の論理アドレスブロックを設定するソースアドレス・レジスタと、
対応づけの変更後の論理アドレスブロックを設定するディスティネーションアドレス・レジスタと、
対応づけの変更を行うブロックサイズを設定するブロックサイズ・レジスタとを有し、
前記アドレス管理部は、
前記ソースアドレス・レジスタ、前記ディスティネーションアドレス・レジスタ、及び前記ブロックサイズ・レジスタの設定内容に従い、論理アドレスブロックと物理アドレスブロックの対応づけを変更することを特徴とする請求項3に記載のメモリコントローラ。 - 前記メモリコントローラは、
所定のブロック単位で論理アドレスとメモリ上の物理アドレスとを管理し、論理アドレスのブロックである論理アドレスブロックと物理アドレスのブロックである物理アドレスブロックとを対応づけるとともに、論理アドレスブロックごとにアドレスシフトのためのシフト量を設定し、デバイスより論理アドレスが供給された場合に、供給された論理アドレスに対応する物理アドレスブロックを特定するとともに、供給された論理アドレスが属する論理アドレスブロックのシフト量に従ってアドレスシフトを行い、供給された論理アドレスを物理アドレスに変換するアドレス管理部と、
前記アドレス管理部により変換された物理アドレスに従ってメモリへのアクセスを行うメモリアクセス制御部とを有することを特徴とする請求項1に記載のメモリコントローラ。 - 前記アドレス管理部は、
所定の場合に、特定の論理アドレスブロックについてシフト量を変更することにより、前記特定の論理アドレスブロックに対応づけられている物理アドレスブロックを論理アドレス上で移動させることを特徴とする請求項5に記載のメモリコントローラ。 - 前記メモリコントローラは、更に、
シフト量の変更量を設定するシフト量設定レジスタを有し、
前記アドレス管理部は、
前記シフト量設定レジスタに設定されたシフト量の変更量に従って、前記特定の論理アドレスブロックのシフト量を変更することを特徴とする請求項6に記載のメモリコントローラ。 - 前記アドレス管理部は、
所定の場合に、論理アドレスブロックに対応づけられている特定の物理アドレスブロックについて、対応づけの対象となる論理アドレスブロックを別の論理アドレスブロックに変更するとともに、前記特定の物理アドレスブロックに新たに対応づけられた論理アドレスブロックのシフト量を変更することにより、前記特定の物理アドレスブロックを論理アドレス上で移動させることを特徴とする請求項5に記載のメモリコントローラ。 - 前記メモリコントローラは、プリフェッチに用いられるプリフェッチバッファを管理し、
論理アドレスのブロックである論理アドレスブロックごとにプリフェッチの対象となるか否かを特定するとともに、デバイスより論理アドレスが供給された場合に、供給された論理アドレスがプリフェッチの対象であるか否かを示すプリフェッチ属性情報を出力するプリフェッチ属性管理部と、
前記プリフェッチ属性管理部より出力されたプリフェッチ属性情報に基づき、メモリ及びプリフェッチバッファの少なくともいずれかにアクセスするメモリアクセス制御部とを有することを特徴とする請求項1に記載のメモリコントローラ。 - 前記プリフェッチ属性管理部は、
プリフェッチの対象となる論理アドレスブロックごとに、プリフェッチを行う場合のプリフェッチサイズを特定するとともに、デバイスより供給された論理アドレスがプリフェッチの対象である場合に、供給された論理アドレスの属する論理アドレスブロックのプリフェッチサイズを示すプリフェッチ属性情報を出力し、
前記メモリアクセス制御部は、
前記プリフェッチ属性情報に示されたプリフェッチサイズに従ってメモリ及びプリフェッチバッファの少なくともいずれかにアクセスすることを特徴とする請求項9に記載のメモリコントローラ。 - 前記メモリアクセス制御部は、
デバイスよりプリフェッチの対象となる論理アドレスブロックに対するライトアクセスがあり、当該論理アドレスブロックについてプリフェッチデータがプリフェッチバッファに存在している場合に、当該ライトアクセスのライトデータをメモリ及びプリフェッチバッファの双方に書き込むことを特徴とする請求項9に記載のメモリコントローラ。 - 前記メモリコントローラは、複数のプリフェッチバッファを管理し、
前記メモリアクセス制御部は、
いずれかのプリフェッチバッファへのアクセス中に他のプリフェッチバッファへのアクセスが必要になった場合に、アクセス中のプリフェッチバッファにプリフェッチデータを保持させたまま当該プリフェッチバッファへのアクセスを中断し、アクセスが必要になった他のプリフェッチバッファへのアクセスを開始することを特徴とする請求項9に記載のメモリコントローラ。 - 前記メモリアクセス制御部は、
他のプリフェッチバッファへのアクセスが終了した際に、アクセスが中断したプリフェッチバッファへのアクセスを再開することを特徴とする請求項12に記載のメモリコントローラ。 - 前記メモリコントローラは、更に、
プリフェッチ対象の論理アドレスブロックについてプリフェッチデータがプリフェッチバッファに存在しないために当該論理アドレスブロックに対するライトデータがプリフェッチバッファに書き込めない状態にある場合に、当該論理アドレスブロックに対するライトアクセスの発生前に当該論理アドレスブロックについて擬似プリフェッチを行って当該論理アドレスブロックに対するライトデータをプリフェッチバッファに書込める状態にするプリフェッチバッファ制御部を有し、
前記メモリアクセス制御部は、
前記プリフェッチバッファ制御部による擬似プリフェッチの後に当該論理アドレスブロックに対するライトアクセスがあった場合に、当該ライトアクセスのライトデータをプリフェッチバッファに書き込むことを特徴とする請求項9に記載のメモリコントローラ。 - 前記メモリコントローラは、プリフェッチに用いられるプリフェッチバッファを管理し、
所定のブロック単位で論理アドレスとプリフェッチバッファ上の物理アドレスとを管理し、論理アドレスのブロックである論理アドレスブロックとプリフェッチバッファ上の物理アドレスのブロックであるプリフェッチバッファ上の物理アドレスブロックとを対応づけ、所定の場合に、論理アドレスブロックに対応づけられているプリフェッチバッファ上の特定の物理アドレスブロックについて、対応づけの対象となる論理アドレスブロックを別の論理アドレスブロックに変更することにより、前記プリフェッチバッファ上の特定の物理アドレスブロックを論理アドレス上で移動させるアドレス管理部を有することを特徴とする請求項1に記載のメモリコントローラ。 - 前記メモリコントローラは、プリフェッチに用いられるプリフェッチバッファを管理し、
所定のブロック単位で論理アドレスとプリフェッチバッファ上の物理アドレスとを管理し、論理アドレスのブロックである論理アドレスブロックとプリフェッチバッファ上の物理アドレスのブロックであるプリフェッチバッファ上の物理アドレスブロックとを対応づけるとともに、論理アドレスブロックごとにアドレスシフトのためのシフト量を設定し、所定の場合に、論理アドレスブロックに対応づけられているプリフェッチバッファ上の特定の物理アドレスブロックについて、対応づけの対象となる論理アドレスブロックを別の論理アドレスブロックに変更するとともに、前記プリフェッチバッファ上の特定の物理アドレスブロックに新たに対応づけられた論理アドレスブロックのシフト量を変更することにより、前記プリフェッチバッファ上の特定の物理アドレスブロックを論理アドレス上で移動させるアドレス管理部を有することを特徴とする請求項1に記載のメモリコントローラ。 - メモリと、メモリへのアクセスを行うデバイスとの間で、デバイスのメモリアクセスを制御するメモリアクセス制御方法であって、
デバイスがメモリにアクセスする際に用いる論理アドレスを所定のブロック単位で管理してデバイスのメモリアクセスを制御することを特徴とするメモリアクセス制御方法。 - 前記メモリアクセス制御方法は、
所定のブロック単位で論理アドレスとメモリ上の物理アドレスとを管理し、論理アドレスのブロックである論理アドレスブロックと物理アドレスのブロックである物理アドレスブロックとを対応づけ、デバイスより論理アドレスが供給された場合に、供給された論理アドレスに対応する物理アドレスブロックを特定し、供給された論理アドレスを物理アドレスに変換するアドレス管理ステップと、
前記アドレス管理ステップで変換された物理アドレスに従ってメモリへのアクセスを行うメモリアクセス制御ステップとを有することを特徴とする請求項17に記載のメモリアクセス制御方法。 - 前記アドレス管理ステップは、
所定の場合に、論理アドレスブロックに対応づけられている特定の物理アドレスブロックについて、対応づけの対象となる論理アドレスブロックを別の論理アドレスブロックに変更することにより、前記特定の物理アドレスブロックを論理アドレス上で移動させることを特徴とする請求項18に記載のメモリアクセス制御方法。 - 前記メモリアクセス制御方法は、
所定のブロック単位で論理アドレスとメモリ上の物理アドレスとを管理し、論理アドレスのブロックである論理アドレスブロックと物理アドレスのブロックである物理アドレスブロックとを対応づけるとともに、論理アドレスブロックごとにアドレスシフトのためのシフト量を設定し、デバイスより論理アドレスが供給された場合に、供給された論理アドレスに対応する物理アドレスブロックを特定するとともに、供給された論理アドレスが属する論理アドレスブロックのシフト量に従ってアドレスシフトを行い、供給された論理アドレスを物理アドレスに変換するアドレス管理ステップと、
前記アドレス管理ステップにより変換された物理アドレスに従ってメモリへのアクセスを行うメモリアクセス制御ステップとを有することを特徴とする請求項17に記載のメモリアクセス制御方法。 - 前記アドレス管理ステップは、
所定の場合に、特定の論理アドレスブロックについてシフト量を変更することにより、前記特定の論理アドレスブロックに対応づけられている物理アドレスブロックを論理アドレス上で移動させることを特徴とする請求項20に記載のメモリアクセス制御方法。 - 前記アドレス管理ステップは、
所定の場合に、論理アドレスブロックに対応づけられている特定の物理アドレスブロックについて、対応づけの対象となる論理アドレスブロックを別の論理アドレスブロックに変更するとともに、前記特定の物理アドレスブロックに新たに対応づけられた論理アドレスブロックのシフト量を変更することにより、前記特定の物理アドレスブロックを論理アドレス上で移動させることを特徴とする請求項20に記載のメモリアクセス制御方法。 - 前記メモリアクセス制御方法は、プリフェッチに用いられるプリフェッチバッファを管理し、
論理アドレスのブロックである論理アドレスブロックごとにプリフェッチの対象となるか否かを特定するとともに、デバイスより論理アドレスが供給された場合に、供給された論理アドレスがプリフェッチの対象であるか否かを示すプリフェッチ属性情報を出力するプリフェッチ属性管理ステップと、
前記プリフェッチ属性管理ステップより出力されたプリフェッチ属性情報に基づき、メモリ及びプリフェッチバッファの少なくともいずれかにアクセスするメモリアクセス制御ステップとを有することを特徴とする請求項17に記載のメモリアクセス制御方法。 - 前記プリフェッチ属性管理ステップは、
プリフェッチの対象となる論理アドレスブロックごとに、プリフェッチを行う場合のプリフェッチサイズを特定するとともに、デバイスより供給された論理アドレスがプリフェッチの対象である場合に、供給された論理アドレスの属する論理アドレスブロックのプリフェッチサイズを示すプリフェッチ属性情報を出力し、
前記メモリアクセス制御ステップは、
前記プリフェッチ属性情報に示されたプリフェッチサイズに従ってメモリ及びプリフェッチバッファの少なくともいずれかにアクセスすることを特徴とする請求項23に記載のメモリアクセス制御方法。 - 前記メモリアクセス制御方法は、プリフェッチに用いられるプリフェッチバッファを管理し、
所定のブロック単位で論理アドレスとプリフェッチバッファ上の物理アドレスとを管理し、論理アドレスのブロックである論理アドレスブロックとプリフェッチバッファ上の物理アドレスのブロックであるプリフェッチバッファ上の物理アドレスブロックとを対応づけ、所定の場合に、論理アドレスブロックに対応づけられているプリフェッチバッファ上の特定の物理アドレスブロックについて、対応づけの対象となる論理アドレスブロックを別の論理アドレスブロックに変更することにより、前記プリフェッチバッファ上の特定の物理アドレスブロックを論理アドレス上で移動させるアドレス管理ステップを有することを特徴とする請求項17に記載のメモリアクセス制御方法。 - 前記メモリアクセス制御方法は、プリフェッチに用いられるプリフェッチバッファを管理し、
所定のブロック単位で論理アドレスとプリフェッチバッファ上の物理アドレスとを管理し、論理アドレスのブロックである論理アドレスブロックとプリフェッチバッファ上の物理アドレスのブロックであるプリフェッチバッファ上の物理アドレスブロックとを対応づけるとともに、論理アドレスブロックごとにアドレスシフトのためのシフト量を設定し、所定の場合に、論理アドレスブロックに対応づけられているプリフェッチバッファ上の特定の物理アドレスブロックについて、対応づけの対象となる論理アドレスブロックを別の論理アドレスブロックに変更するとともに、前記プリフェッチバッファ上の特定の物理アドレスブロックに新たに対応づけられた論理アドレスブロックのシフト量を変更することにより、前記プリフェッチバッファ上の特定の物理アドレスブロックを論理アドレス上で移動させるアドレス管理ステップを有することを特徴とする請求項17に記載のメモリアクセス制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003027940A JP2004240616A (ja) | 2003-02-05 | 2003-02-05 | メモリコントローラ及びメモリアクセス制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003027940A JP2004240616A (ja) | 2003-02-05 | 2003-02-05 | メモリコントローラ及びメモリアクセス制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004240616A true JP2004240616A (ja) | 2004-08-26 |
Family
ID=32955529
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003027940A Pending JP2004240616A (ja) | 2003-02-05 | 2003-02-05 | メモリコントローラ及びメモリアクセス制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004240616A (ja) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006313422A (ja) * | 2005-05-06 | 2006-11-16 | Nec Electronics Corp | 演算処理装置及びデータ転送処理の実行方法 |
WO2008111209A1 (ja) * | 2007-03-15 | 2008-09-18 | Fujitsu Microelectronics Limited | 半導体集積回路 |
WO2012121559A2 (ko) * | 2011-03-09 | 2012-09-13 | (주)인디링스 | 복사 명령 및 이동 명령을 지원하는 스토리지 시스템 및 상기 스토리지 시스템의 동작 방법 |
JP2014164358A (ja) * | 2013-02-21 | 2014-09-08 | Kyocera Document Solutions Inc | 画像処理装置 |
KR101515617B1 (ko) | 2008-07-18 | 2015-05-04 | 에이-데이타 테크놀로지 캄파니 리미티드 | 메모리 스토리지 장치 및 그 제어 방법 |
JP2016157371A (ja) * | 2015-02-26 | 2016-09-01 | ルネサスエレクトロニクス株式会社 | プロセッサおよび命令コード生成装置 |
JP7536483B2 (ja) | 2020-03-17 | 2024-08-20 | キオクシア株式会社 | メモリシステムおよび制御方法 |
-
2003
- 2003-02-05 JP JP2003027940A patent/JP2004240616A/ja active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006313422A (ja) * | 2005-05-06 | 2006-11-16 | Nec Electronics Corp | 演算処理装置及びデータ転送処理の実行方法 |
US7979637B2 (en) | 2005-05-06 | 2011-07-12 | Renesas Electronics Corporation | Processor and method for executing data transfer process |
WO2008111209A1 (ja) * | 2007-03-15 | 2008-09-18 | Fujitsu Microelectronics Limited | 半導体集積回路 |
KR101515617B1 (ko) | 2008-07-18 | 2015-05-04 | 에이-데이타 테크놀로지 캄파니 리미티드 | 메모리 스토리지 장치 및 그 제어 방법 |
WO2012121559A2 (ko) * | 2011-03-09 | 2012-09-13 | (주)인디링스 | 복사 명령 및 이동 명령을 지원하는 스토리지 시스템 및 상기 스토리지 시스템의 동작 방법 |
WO2012121559A3 (ko) * | 2011-03-09 | 2012-12-20 | (주)인디링스 | 복사 명령 및 이동 명령을 지원하는 스토리지 시스템 및 상기 스토리지 시스템의 동작 방법 |
JP2014164358A (ja) * | 2013-02-21 | 2014-09-08 | Kyocera Document Solutions Inc | 画像処理装置 |
JP2016157371A (ja) * | 2015-02-26 | 2016-09-01 | ルネサスエレクトロニクス株式会社 | プロセッサおよび命令コード生成装置 |
JP7536483B2 (ja) | 2020-03-17 | 2024-08-20 | キオクシア株式会社 | メモリシステムおよび制御方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8725987B2 (en) | Cache memory system including selectively accessible pre-fetch memory for pre-fetch of variable size data | |
JP3888508B2 (ja) | キャッシュ・データ管理方法 | |
US6665749B1 (en) | Bus protocol for efficiently transferring vector data | |
US7228389B2 (en) | System and method for maintaining cache coherency in a shared memory system | |
JP3281893B2 (ja) | キャッシュ・メモリ階層内で利用するキャッシュ・コヒーレンシ機構を実施するための方法およびシステム | |
US6728839B1 (en) | Attribute based memory pre-fetching technique | |
US6813701B1 (en) | Method and apparatus for transferring vector data between memory and a register file | |
US6513107B1 (en) | Vector transfer system generating address error exception when vector to be transferred does not start and end on same memory page | |
JP2010191638A (ja) | キャッシュ装置 | |
JP2000250813A (ja) | I/oキャッシュ・メモリにおけるデータ管理方法 | |
KR20010101695A (ko) | 가상 메모리 시스템에서의 메모리 접근 개선 기술 | |
JP2005276199A (ja) | Dmaコントローラにキャッシュ管理コマンドを提供する方法 | |
KR100348099B1 (ko) | 단일의캐쉬액세스파이프단을이용하여파이프라인저장명령을실행하기위한장치및방법과,파이프라인프로세서및,컴퓨터시스템 | |
EP0926600B1 (en) | Computer system with processor and memory hierarchy and its operating method | |
JPWO2004031943A1 (ja) | データプロセッサ | |
KR100505695B1 (ko) | 동적으로 할당 또는 해제되는 버퍼를 가지는 캐쉬 메모리장치, 이를 구비한 디지털 데이터 처리 시스템 및 그 방법 | |
JPH09179779A (ja) | コンピュータシステムおよびデータ転送方法 | |
JP2000172562A (ja) | 情報処理装置 | |
JP2004240616A (ja) | メモリコントローラ及びメモリアクセス制御方法 | |
US6976130B2 (en) | Cache controller unit architecture and applied method | |
JP2002108705A (ja) | キャッシュ汚染減少方法および装置 | |
JP2006072832A (ja) | 画像処理システム | |
US6625720B1 (en) | System for posting vector synchronization instructions to vector instruction queue to separate vector instructions from different application programs | |
JP2000148478A (ja) | 中央処理装置及び中央処理システム | |
KR20040047398A (ko) | 캐쉬 메모리를 이용한 데이터 억세스 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20040519 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20041026 |