以下、本発明を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.第1の実施の形態(リクエスト分割手法:開始アドレスおよび転送長が指定されるリクエストを分割する例)
2.第2の実施の形態(リクエスト分割手法:1つのアドレスが指定されるリクエストを分割する例)
3.第3の実施の形態(アダプタ追加機能:アダプタに付加的機能を追加した例)
<1.第1の実施の形態>
[メモリ制御装置の構成例]
図1は、本発明の第1の実施の形態におけるメモリ制御装置の一構成例を示すブロック図である。ここでは、クライアント111乃至114と、メモリ制御装置200と、メモリインタフェース400と、メモリシステム500とを備える集積回路の基本構成が例示されている。ここでは、便宜上、クライアント111乃至114により、メモリシステム500に対してデータの書込みを行う場合のみを想定する。
この集積回路を構成するメモリ制御装置200は、アダプタ211乃至214と、アービタ310と、メモリコントローラ320と、データバスコントローラ330とを備える。さらに、メモリ制御装置200は、ライトセレクタ340と、ライトデータバッファ350と、リードデータバッファ360と、リードセレクタ370とを備える。
クライアント111乃至114は、メモリシステム500に対するデータの書込みをそれぞれ行うものである。このクライアント111乃至114は、例えば、中央演算処理装置(CPU:Central Processing Unit)または機能ブロックなどである。このクライアント111乃至114は、メモリ制御装置200およびメモリインタフェース400を介して、メモリシステム500に対するデータの書込みを行う。
この例では、クライアント111乃至114は、それぞれのリクエスト線121乃至124を介して、メモリシステム500に対して書込みを行うためのリクエストをメモリ制御装置200に発行する。このリクエストには、例えば、クライアント111乃至114ごとに与えられた仮想的な記憶領域における論理アドレス、アクセスすべきデータの長さである転送長、クライアントを識別するためのクライアント識別情報および転送方向が含まれる。ここにいう転送方向とは、データを書き込むための書込み要求、または、データを読み出すための読出し要求のいずれであるかを指し示すものである。なお、ここでは、クライアント111乃至114から発行されるリクエストには、転送方向として書込み要求が指定される。
また、このクライアント111乃至114は、アダプタ211乃至214からのデータの出力指示に従って、データ線131乃至134を介して、メモリシステム500に書込むべき書込みデータをライトセレクタ340に出力する。なお、クライアント111乃至114は、特許請求の範囲に記載の複数のクライアントの一例である。
メモリ制御装置200は、クライアント111乃至114から発行されたリクエストに基づいて、メモリシステム500に対するデータの書込み、および、メモリシステム500に記憶されているデータの読出しを制御するメモリバスシステムである。なお、メモリ制御装置200は、特許請求の範囲に記載のメモリ制御装置の一例である。
アダプタ211乃至214は、メモリシステム500に対して発行されるコマンド単位により、クライアント111乃至114からのリクエストを分割するものである。すなわち、アダプタ211は、クライアント111から発行されたリクエストをコマンド単位により分割する。アダプタ212は、クライアント112から発行されたリクエストをコマンド単位により分割する。アダプタ213は、クライアント113から発行されたリクエストをコマンド単位により分割する。アダプタ214は、クライアント114から発行されたリクエストをコマンド単位により分割する。
また、このアダプタ211乃至214は、クライアント111乃至114から発行されたリクエストをコマンド単位により分割するために、そのリクエストに含まれる論理アドレスをメモリシステム500に対応する物理アドレスに変換する。ここにいう物理アドレスとは、メモリシステム500を構成するバンク、ロウおよびカラムを指し示すアドレスであり、バンクアドレス、ロウアドレスおよびカラムアドレスのことをいう。このように、論理アドレスから物理アドレスに変換することによって、その変換されたリクエストには、メモリシステム500におけるバンクアドレス、ロウアドレスおよびカラムアドレスが示される。また、アダプタ211乃至214は、分割されたリクエストを分割リクエストとして、分割リクエスト線311乃至314を介して、アービタ310にそれぞれ出力する。
また、アダプタ211乃至214は、クライアント111乃至114からリクエストの発行要求を受け付けた場合には、リクエスト線121乃至124を介して、クライアント111乃至114に対しリクエストの発行を許可する許可信号を出力する。また、アダプタ211乃至214は、アービタ310からの分割リクエストに対する調停結果(アクセス許可)に基づいて、クライアント111乃至114に書込みデータの出力を指示する。なお、ここでは、アダプタ211乃至214からクライアント111乃至114に対して書込みデータの出力を指示する例について説明したが、これに限られるものではない。例えば、アダプタ211乃至214において、クライアント111乃至114からの書込みデータを保持して、その保持された書込みデータのうち、アービタ310からの調停結果に対応するデータをライトセレクタ340に出力するようにしてもよい。
アービタ310は、アダプタ211乃至214から出力された分割リクエストに示される物理アドレスに基づいて調停(アービトレーション)を行う調停部である。このアービタ310は、例えば、アダプタ211乃至214から同時に複数の分割リクエストを受け付けた場合には、直前に出力した出力リクエストとバンクアドレスが同一であり、かつ、出力リクエストとロウアドレスが異なる分割リクエストの出力を抑制する。すなわち、アービタ310は、複数の分割リクエストを受け付けた場合には、出力リクエストと同一のバンクアドレスであり、かつ、出力リクエストと異なるロウアドレスを示す分割リクエスト以外の分割リクエストのうち1つの分割リクエストを選択する。
また、アービタ310は、その選択された分割リクエストをメモリコントローラ320に出力するとともに、その選択された分割リクエストに含まれるクライアント識別情報および転送情報をデータバスコントローラ330に供給する。また、アービタ310は、その選択された分割リクエストに示されるクライアント識別情報によって識別されるクライアント111乃至114に対応するアダプタ211乃至214に対して、その分割リクエストに対応する書込みデータの出力を指示する。なお、アービタ310は、特許請求の範囲に記載の調停部の一例である。
メモリコントローラ320は、アービタ310から出力された分割リクエストに基づいて、メモリインタフェース400を介して、メモリシステム500に対するコマンドを発行するものである。このメモリコントローラ320は、例えば、メモリシステム500における複数のバンクに対して並列的にアクセスさせるためのバンクインタリーブ手法によりコマンドを発行する。
データバスコントローラ330は、アービタ310により選択されたクライアントと、ライトデータバッファ350またはリードデータバッファ360との間を接続するために、ライトセレクタ340またはリードセレクタ370を制御するものである。このデータバスコントローラ330は、アービタ310から供給されたクライアント情報および転送情報に基づいて、ライトセレクタ340およびリードセレクタ370を制御する。
この例では、データバスコントローラ330は、クライアント111乃至114からの書込みデータをライトデータバッファ350に出力させるようにライトセレクタ340を制御する。すなわち、データバスコントローラ330は、クライアント情報に示されたクライアント111乃至114と、ライトデータバッファ350との間でデータ転送が行えるようにライトセレクタ340の接続を切り替える。一方、読出し要求を示す分割リクエストがアービタ310から出力されたときは、データバスコントローラ330は、読出し要求を発行したクライアントに対し、リードデータバッファ360に保持されたデータを出力させるようにリードセレクタ370を制御する。
ライトセレクタ340は、データバスコントローラ330からの制御に従って、いずれか1つのクライアント111乃至114とライトデータバッファ350との間を接続するセレクタである。リードセレクタ370は、データバスコントローラ330からの制御に従って、いずれか1つのクライアントとリードデータバッファ360との間を接続するセレクタである。
ライトデータバッファ350は、クライアント111乃至114から供給される書込みデータの転送遅延による影響を吸収するためのバッファである。このライトデータバッファ350は、1つの分割リクエストに対してライトセレクタ340から供給されるデータを一時的に保持する。このライトデータバッファ350は、その保持されたデータをメモリインタフェース400に供給する。
リードデータバッファ360は、メモリインタフェース400から供給されるデータの転送遅延による影響を吸収するためのバッファである。このリードデータバッファ360は、1つの分割リクエストに対してメモリインタフェース400から供給されるデータを一時的に保持する。このリードデータバッファ360は、その保持されたデータをリードセレクタ370に供給する。
メモリインタフェース400は、メモリ制御装置200とメモリシステム500との間を接続するものである。このメモリインタフェース400は、メモリ制御装置200の動作クロックと同期して供給されるコマンドと、ライトデータバッファ350からの書込みデータとを、メモリシステム500のメモリクロックに基づいて出力する。また、このメモリインタフェース400は、メモリシステム500におけるメモリクロックに同期して読み出されたデータを、メモリ制御装置200の動作クロックに同期させてリードデータバッファ360に出力する。このメモリインタフェース400は、例えば、166MHzの動作クロックにより動作するメモリ制御装置200と、333MHzのメモリクロックにより動作するメモリシステム500との間を接続する。
また、メモリインタフェース400は、メモリ制御装置200のデータ幅によってライトデータバッファ350から出力されたデータを、メモリシステム500のデータ幅によりメモリシステム500に出力する。一方、メモリインタフェース400は、メモリシステム500のデータ幅によって読み出されたデータを、メモリ制御装置200のデータ幅によりリードデータバッファ360に出力する。メモリインタフェース400は、例えば、64ビットのデータ幅のメモリ制御装置200と、32ビットのデータ幅のメモリシステム500との間を接続する。
また、メモリインタフェース400は、メモリコントローラ320から発行されたコマンドを、コマンド線401を介してメモリシステム500に出力する。また、メモリインタフェース400は、ライトデータバッファ350から出力された書込みデータを、データ線411を介して、メモリシステム500に出力する。また、メモリインタフェース400は、データ線411を介して、メモリシステム500から読み出された読出しデータをリードデータバッファ360に出力する。
メモリシステム500は、クライアント111乃至114からのデータを記憶するものである。このメモリシステム500は、SDRAMにより実現され、X(Xは2以上の整数)個のバンクにより構成される。このバンクの各々は、Y(Yは2以上の整数)個のロウにより構成され、さらに、そのロウの各々は、Z(Zは2以上の整数)個のカラムにより構成される。すなわち、X個のバンクの各々は、Y×Z個の2次元マトリックス状に配列された記憶素子により構成される。このメモリシステム500は、例えば、一般的なパーソナルコンピュータに関しては、DDR2_SDRAM(Double Data Rate 2 SDRAM)やDDR3_SDRAMなどが考えられる。
このメモリシステム500は、メモリコントローラ320から発行されたコマンドに従って、クライアント111乃至114からのデータの書込み、および、各バンクに記憶されたデータの読出しを行う。ここでは、データの書込み、および、読出しのことをアクセスという。このメモリシステム500は、コマンドに指定されたカラムアドレスに基づいて、一定のバースト長単位により、連続してデータの転送を行う。このメモリシステム500は、例えば、4ワードまたは8ワードのデータを1つのバースト長単位として、データ転送を行う。
このメモリシステム500は、例えば、データを書き込むための書込みコマンドをメモリコントローラ320から受け付けた場合には、メモリコントローラ320から供給されたデータを書き込む。一方、このメモリシステム500は、データを読み出すための読出しコマンドをメモリコントローラ320から受け付けた場合には、記憶しているデータをメモリインタフェース400に出力する。なお、メモリシステム500は、特許請求の範囲に記載のメモリの一例である。
このように、アダプタ211乃至214を設けることによって、アービタ310においてリクエストの物理アドレスに基づいて調停を行うことができる。なお、ここでは、アダプタ211乃至214において、クライアント111乃至114からの書込みを行うための書込みリクエストを分割する例について説明したが、メモリシステム500から記憶データを読み出すための読出しリクエストに対しても同様に分割する。次に、アダプタ211乃至214の基本構成について図面を参照して詳細に説明する。
[アダプタ211の構成例]
図2は、本発明の第1の実施の形態におけるアダプタ211乃至214の一構成例を示すブロック図である。ここでは、アダプタ211乃至214のそれぞれは同一構成であるため、アダプタ211の構成例についてのみ説明する。
アダプタ211は、アドレス変換部220およびリクエスト分割部240を備える。アドレス変換部220は、リクエスト線121を介してクライアント111から発行されたリクエストに含まれる論理アドレスを、メモリシステム500における物理アドレスに変換するものである。このアドレス変換部220は、変換リクエスト線230を介して、論理アドレスから物理アドレスに変換されたリクエストを変換リクエストとしてリクエスト分割部240に出力する。なお、アドレス変換部220は、特許請求の範囲に記載のアドレス変換部の一例である。
リクエスト分割部240は、変換リクエスト線230から出力された変換リクエストの物理アドレスに基づいて、メモリシステム500に対するコマンド単位によりその変換リクエストを分割するものである。すなわち、リクエスト分割部240は、メモリシステム500における同一バンクの複数のロウに対するアクセスを指定する1つの変換リクエストを受け付けた場合には、同一バンクのロウ単位により変換リクエストを分割する。このリクエスト分割部240は、例えば、メモリシステム500におけるバースト長単位により変換リクエストを分割する。また、リクエスト分割部240は、その分割された変換リクエストを分割リクエストとして分割リクエスト線311に供給する。なお、リクエスト分割部240は、特許請求の範囲に記載のリクエスト分割部の一例である。
このように、アドレス変換部220によりリクエストに含まれる論理アドレスを物理アドレスに変換することによって、リクエスト分割部240においてメモリシステム500のコマンド単位により変換リクエストを分割することができる。また、リクエスト分割部240によって、変換リクエストをバースト長単位により分割することによって、1つのクライアント111乃至114によるメモリシステム500に対する長期間のアクセスを防止することができる。次に、アドレス変換部220によるアドレス変換に関して、以下に図面を参照して簡単に説明する。
[アドレス変換部220による物理アドレス割当の例]
図3は、本発明の第1の実施の形態におけるアドレス変換部220による物理アドレスの割当てに関する例を示す図である。図3(a)は、0乃至24ビットの論理アドレスをメモリシステム500に対応する物理アドレスに変換するためのアドレス変換表を示す図である。図3(b)は、0乃至23ビットの論理アドレスをメモリシステム500に対応する物理アドレスにアドレス変換するための変換表を示す図である。
図3(a)には、0乃至9ビットをカラムアドレス(C[9:0])221に、10乃至21ビットをロウアドレス(R[11:0])222に、22乃至24ビットをバンクアドレス(B[2:0])223に割り当てるアドレス変換表が示されている。このアドレス変換表に基づいて、アドレス変換部220は、0乃至24ビットの論理アドレスを、バンクアドレス、ロウアドレスおよびカラムアドレスを示す物理アドレスに変換する。
図3(b)には、0乃至1ビットをカラムアドレス(C[1:0])224に、2乃至3ビットをバンクアドレス(B[1:0])225に割り当てる。さらに、4乃至11ビットをカラムアドレス(C[9:2])226に、12乃至23ビットをロウアドレス(R[11:0])227に割り当てるアドレス変換表が示されている。このアドレス変換表においては、論理アドレスを4つ進めるたびに物理アドレスのバンクアドレスが変わる。このため、このアドレス変換表に基づいてアドレス変換を行うことによって、メモリシステム500に対する4ワードごとのバンクインタリーブを実現することができる。
このように、アドレス変換部220は、アドレス変換表を用いることによって、クライアント111乃至114からのリクエストに指定された論理アドレスをメモリシステム500に対応する物理アドレスに変換することができる。
[リクエスト分割部240の構成例]
図4は、本発明の第1の実施の形態におけるリクエスト分割部240の一構成例を示すブロック図である。ここでは、クライアント111から発行されるリクエストの論理アドレスには、アクセスすべきアドレス範囲の先頭位置を示す開始アドレスおよび転送長が示されていることを想定している。
この例では、アドレス変換部220とリクエスト分割部240との間を接続する変換リクエスト線230には、開始アドレス線231、転送長線232および初期化信号線239が含まる。この開始アドレス線231には、アドレス変換部220により変換された物理アドレスの開始アドレスが供給される。また、転送長線232には、クライアント111から発行されたリクエストに含まれる転送長がアドレス変換部220を介して供給される。さらに、初期化信号線239には、変換リクエストが供給されたタイミングを示す初期化信号が供給される。
リクエスト分割部240は、開始アドレス出力部241と、次開始アドレス算出部242と、次開始アドレスレジスタ243とを備える。また、リクエスト分割部240は、転送長選択部244と、分割長生成部245と、転送長出力部246と、差分転送長算出部247と差分転送長レジスタ248とを備える。
開始アドレス出力部241は、初期化信号線239からの初期化信号に基づいて、開始アドレス線231からの開始アドレスと、次開始アドレスレジスタ243から出力される次開始アドレスとのうち、いずれか一方を選択するセレクタである。ここにいう次開始アドレスとは、直前に開始アドレス出力部241から出力された分割リクエストの次の分割リクエストに示される開始アドレスのことである。
この開始アドレス出力部241は、初期化信号線239から初期化信号が供給された場合には、開始アドレス線231から供給される開始アドレスを選択する。これに対し、開始アドレス出力部241は、初期化信号線239から初期化信号が供給されない場合には、次開始アドレスレジスタ243に保持された次開始アドレスを選択する。また、開始アドレス出力部241は、その選択された開始アドレスまたは次開始アドレスのうちいずれか一方を、分割リクエスト線311に含まれる開始アドレス線251を介して、アービタ310および次開始アドレス算出部242に出力する。
開始アドレス出力部241は、さらに、開始アドレス線251に含まれるカラムアドレス線255を介して、選択されたアドレスに含まれる開始カラムアドレスを分割長生成部245に出力する。なお、開始アドレス出力部241は、特許請求の範囲に記載の開始アドレス出力部の一例である。
次開始アドレス算出部242は、開始アドレス出力部241から出力された開始アドレスと、転送長出力部246から出力された転送長とを加算するものである。すなわち、次開始アドレス算出部242は、メモリシステム500における物理アドレスの順序に従うように、開始アドレス出力部241から出力された開始アドレスに、転送長出力部246からの転送長を加える。このように、次開始アドレス算出部242は、次の分割リクエストの開始アドレスである次開始アドレスを算出する。また、次開始アドレス算出部242は、開始アドレス出力部241からの開始アドレスと、転送長出力部246からの転送長に基づいて算出された次開始アドレスを、次開始アドレスレジスタ243に出力する。
次開始アドレスレジスタ243は、次開始アドレス算出部242から出力された次開始アドレスを保持するものである。この次開始アドレスレジスタ243は、その保持された次開始アドレスを開始アドレス出力部241に出力する。
転送長選択部244は、初期化信号線239からの初期化信号に基づいて、転送長線232からの転送長と、差分転送長レジスタ248から出力される差分転送長とのうち、いずれか一方を選択するセレクタである。ここにいう差分転送長とは、変換リクエストに示された転送長から、その変換リクエストにおける過去に出力された分割リクエストの転送長の累計値を減算した転送長である。
この転送長選択部244は、初期化信号線239から初期化信号が供給された場合には、転送長線232から供給される転送長を選択する。これに対し、転送長選択部244は、初期化信号線239から初期化信号が供給されない場合には、差分転送長レジスタ248から出力された差分転送長を選択する。また、転送長選択部244は、その選択された転送長または差分転送長のうちいずれか一方を、転送長出力部246および差分転送長算出部247に出力する。
分割長生成部245は、カラムアドレス線255を介して、開始アドレス出力部241から出力される開始アドレスに含まれる開始カラムアドレスに基づいて、変換リクエストを分割するための分割長を生成するものである。この分割長生成部245は、例えば、開始アドレス出力部241からの開始アドレスに含まれる開始カラムアドレスから、開始アドレスに示されるロウの終端カラムアドレスまでの長さを分割長として算出する。この場合、分割長生成部245には、各ロウの終端カラムアドレスが予め保持されている。
ここでは、分割長生成部245は、開始アドレス出力部241からの開始アドレスに含まれる開始カラムアドレスに基づいて、メモリシステム500におけるバースト長単位により分割長を生成する。この場合において、分割長生成部245は、例えば、開始アドレス出力部241からの開始カラムアドレスの下位2ビットに基づいて、バースト長単位により分割長を生成する。すなわち、分割長生成部245は、開始カラムアドレスの下位2ビットにより定まるバースト単位におけるアクセスの開始位置からバースト長単位における終端位置までの長さを分割長とする。例えば、分割長生成部245は、開始カラムアドレスの下位2ビットの値が「3」を示す場合には、バースト長単位の終端であるため、分割長を「1」に設定する。
この例において、分割長生成部245は、開始カラムアドレスの下位2ビットの値と分割長との関係を示す分割長対応表を予め保持している。この分割長対応表は、DDRの規格に基づいて生成される。この分割長対応表は、例えば、開始カラムアドレスの下位2ビットが「0」のとき分割長「4」、下位2ビットが「1」のとき分割長「1」、下位2ビットが「2」のとき分割長「2」、下位2ビットが「3」のとき分割長「1」が示されている。なお、メモリシステム500におけるロウの単位とバースト長の単位とが一致することから、分割長生成部245は、分割長対応表に基づいてバースト長単位により分割長を生成することによって、変換リクエストをロウ単位により分割することができる。
また、分割長生成部245は、カラムアドレス線255からの開始カラムアドレスに基づいて生成された分割長を転送長出力部246に出力する。なお、分割長生成部245は、特許請求の範囲に記載の分割長生成部の一例である。
転送長出力部246は、分割長生成部245からの分割長と、転送長選択部244からの変換リクエストの転送長または差分転送長レジスタ248からの差分転送長とのうち小さい方を、分割リクエストの転送長として出力するものである。なお、転送長出力部246は、特許請求の範囲に記載の転送長出力部の一例である。
差分転送長算出部247は、転送長選択部244から出力された転送長または差分転送長と、転送長出力部246から出力された転送長とを減算するものである。この差分転送長算出部247は、転送長選択部244から出力された転送長または差分転送長から、転送長出力部246から出力された転送長を減算する。すなわち、差分転送長算出部247は、変換リクエストに示された転送長から、その変換リクエストにおける過去に出力された分割リクエストの転送長の累計値を減算することによって差分転送長を算出する。また、差分転送長算出部247は、その算出された差分転送長を差分転送長レジスタ248に供給する。
差分転送長レジスタ248は、差分転送長算出部247から出力された差分転送長を保持するものである。この差分転送長レジスタ248は、その保持された差分転送長を転送長選択部244に出力する。
このように、分割長生成部245を設けることによって、メモリシステム500におけるロウ単位により、および、バースト長単位により、変換リクエストを分割するための分割長を生成することができる。また、開始アドレス出力部241を設けることによって、変換リクエストの開始アドレスと、変換リクエストの開始アドレスが分割長の累計値に加算された次開始アドレスとのうち、いずれか一方を分割リクエストの開始アドレスとして出力することができる。
また、転送長出力部246を設けることによって、分割長生成部245において生成された分割長と、変換リクエストの転送長から分割長の累計値が減算された差分転送長とのうち、小さい方を分割リクエストの転送長として出力することができる。ここで、リクエスト分割部240による変換リクエストの分割例について以下に図面を参照して説明する。
[リクエスト分割部240による変換リクエストの分割例]
図5は、本発明の第1の実施の形態におけるリクエスト分割部240による変換リクエストの分割例を示すタイミングチャートである。ここでは、変換リクエストとして、開始アドレスにバンク「0番」、ロウ「0番」およびカラム「fc番」(0/0/fc)が示され、転送長に「8」が示された変換リクエストを想定する。この例では、ロウ0番における終端カラムアドレスをff番とする。すなわち、メモリシステム500に対するアクセスすべき範囲がロウ0番および1番に跨るリクエストを受け付けた場合を想定している。また、分割長生成部245は、図4で述べたDDRの規定による分割長対応表の例に基づいて分割長を生成することとする。なお、バンクアドレス(B)、ロウアドレス(R)およびカラムアドレス(C)を、ここではB/R/Cとして表わす。
ここでは、変換リクエスト線230に含まれる初期化信号線239と、開始アドレス線231と、転送長線232とが示されている。また、開始アドレス出力部241と、転送長選択部244と、カラムアドレス線255と、分割長生成部245と、次開始アドレスレジスタ243と、差分転送長レジスタ248とが示されている。さらに、分割リクエスト線311に含まれる開始アドレス線251および転送長線252が示されている。また、左から右に時間(時刻t0乃至t2)が経過することとする。
時刻t0において、初期化信号線239を介して初期化信号が供給されるとともに、開始アドレス線231および転送長線232から変換リクエストの開始アドレス「0/0/fc」および転送長「8」がそれぞれ供給される。
この場合において、開始アドレス出力部241には初期化信号が供給されるため、開始アドレス出力部241から、変換リクエストの開始アドレス「0/0/fc」が分割リクエスト線311の開始アドレス線251に出力される。それとともに、転送長選択部244にも初期化信号が供給されるため、転送長選択部244により、転送長線232からの変換リクエストの転送長「8」が出力される。
このとき、カラムアドレス線255からの開始カラムアドレス(fc)の下位2ビットは「0」を示すため、分割長生成部245から分割長「4」が出力される。そして、転送長出力部246により、転送長線232からの転送長「8」と、分割長生成部245からの分割長「4」とのうち、小さい値を示す分割長生成部245からの分割長「4」が分割リクエスト線311の転送長線252に出力される。
これとともに、次開始アドレスレジスタ243には、次開始アドレス算出部242において、変換リクエストの開始アドレス「0/0/fc」に分割長「4」が加算された次開始アドレス「0/1/0」が保持される。また、差分転送長レジスタ248には、差分転送長算出部247において、転送長選択部244の出力「8」から転送長出力部246の出力「4」が減算された差分転送長「4」が保持される。
時刻t1において、開始アドレス出力部241には、初期化信号が供給されないため、次開始アドレスレジスタ243に保持された次開始アドレス「0/1/0」が分割リクエスト線311の開始アドレス線251に出力される。それとともに、転送長選択部244にも初期化信号が供給されないため、転送長選択部244から、差分転送長レジスタ248に保持された差分転送長「4」が出力される。
このとき、カラムアドレス線255からの開始カラムアドレス(0)の下位2ビットは「0」を示すため、分割長生成部245から分割長「4」が出力される。そして、転送長出力部246により、転送長選択部244からの差分転送長「4」と、分割長生成部245からの分割長「4」とが同一であるため、分割リクエスト線311の転送長線252に「4」が出力される。
これとともに、次開始アドレスレジスタ243には、次開始アドレス算出部242において、変換リクエストの開始アドレス「0/1/0」に「4」が加算された次開始アドレス「0/1/4」が保持される。また、差分転送長レジスタ248には、差分転送長算出部247において、転送長選択部244の出力「4」から転送長出力部246の出力「4」が減算された差分転送長「0」が保持される。
このように、分割長生成部245により、変換リクエストの物理アドレスに含まれる開始カラムアドレスに基づいてバースト単位により分割長を生成することによって、メモリシステム500におけるロウ単位により変換リクエストを分割することができる。ここで、変換リクエストの物理アドレスに基づいて、その変換リクエストをロウ単位により分割することによって、メモリシステム500に対するアクセス期間を改善させる例について図面を参照して以下に説明する。
[アダプタ211によりリクエストが分割されない例]
図6は、アダプタ211においてリクエストがメモリシステム500のロウ単位により分割されない場合におけるメモリシステム500に対する書込み動作を例示するタイミングチャートである。ここでは、クライアント111および112と、アービタ310との出力信号が示されている。また、コマンド線401およびデータ線に供給される信号が示されている。
この例では、図5と同様に、クライアント111から、開始アドレス「0/0/fc」に対応する論理アドレスおよび転送長「8」を指定するリクエスト(X)601が発行される。そして、クライアント112から、リクエスト(X)601のバンクアドレス(0
)とは異なる開始アドレス「1/0/0」および転送長「4」を指定するリクエスト(Y)602が発行されることを想定する。
また、この例では、クライアント111および112と、メモリ制御装置200との動作クロックを166MHzとし、メモリシステム500におけるメモリクロックを333MHzとしている。このため、メモリクロックのクロック周波数が動作クロックの2倍となることから、分割リクエストの転送長が「4」を示す場合には、転送長を2倍した「8」ワードのデータが連続してメモリシステム500に転送されることになる。
まず、時刻t0において、クライアント111からリクエスト(X)601が発行される。時刻t1において、クライアント112からリクエスト(Y)602が発行されるとともに、アービタ310により、クライアント111から発行されたリクエスト(X)610がメモリコントローラ320に出力される。
その後、時刻t2において、アービタ310により、クライアント112から発行されたリクエスト(Y)620がメモリコントローラ320に出力される。そして、時刻t3の直前において、コマンド線401を介して、リクエスト(X)610に基づいて発行された、カラム「fc番」および転送長「4」を指定する書込みコマンド(W)611が、メモリインタフェース400からメモリシステム500に出力される。これにより、時刻t5の直前において、データ線411を介して、クライアント111からの書込みデータ612がメモリシステム500に転送される。なお、ここでは、時刻t0よりも前に、バンク「0番」、ロウ「0」番を指定するアクティブコマンドが既に発行されていることを想定している。
時刻t9後において、バンク「0番」を指定するプリチャージコマンド(P)613がメモリインタフェース400から出力される。そして、時刻t12直前において、コマンド線401を介して、リクエスト(X)610に基づいて発行された、バンク「0番」、ロウ「1番」を指定するアクティブコマンド(A)614がメモリインタフェース400から出力される。
そして、時刻t14の後に、コマンド線401を介して、カラム「0番」および転送長「4」を指定する書込みコマンド(W)615がメモリインタフェース400から出力される。これにより、時刻t16の後に、データ線411を介して、クライアント111からの書込みデータ616がメモリシステム500に転送される。
この後、時刻t21の直前において、バンク「0番」を指定するプリチャージコマンド(P)617がメモリインタフェース400から出力される。そして、時刻t23の直後において、コマンド線401を介して、リクエスト(Y)620に基づいて発行された、バンク「1番」、ロウ「0番」を指定するアクティブコマンド(A)621がメモリインタフェース400から出力される。
そして、時刻t26の直前において、コマンド線401を介して、カラム「0番」および転送長「4」を指定する書込みコマンド(W)622がメモリインタフェース400から出力される。これにより、時刻t28の直前において、データ線411を介して、クライアント111からの書込みデータ623がメモリシステム500に転送される。
このように、同一バンクにおける複数のロウに対するアクセスを指定する1つのリクエストを従来のメモリ制御装置が受け付けた場合には、同一バンクの異なるロウに連続してアクセスするコマンドが発行されてしまう。これにより、メモリシステム500に対するデータの転送効率が低下して、アクセス期間Aが長くなってしまう。次に、本発明の第1の実施の形態におけるメモリ制御装置200の場合について、図面を参照して以下に説明する。
[アダプタ211によりリクエストが分割される例]
図7は、本発明の第1の実施の形態におけるメモリ制御装置200によるメモリシステム500に対する書込み動作を例示するタイミングチャートである。ここでは、クライアント111および112と、アダプタ211および212と、アービタ310との出力信号が示されている。また、コマンド線401およびデータ線411に供給される信号が示されている。この例では、クライアント111および112から発行されるリクエスト(X)601およびリクエスト(Y)602については、図6に示したものと同様であるため、ここでの説明を省略する。
時刻t1において、アダプタ211により、クライアント111からのリクエスト(X)601の論理アドレスが物理アドレスに変換されて、その変換された物理アドレスに基づいて、分割リクエスト(X1)711がアービタ310に出力される。そして、時刻t2において、アダプタ211および212の両者から分割リクエスト(X2)712および分割リクエスト(Y)720がそれぞれアービタ310に出力される。
この場合おいて、リクエスト(X)601は、図5に示したとおり、開始アドレス「0/0/fc」および転送長「4」を指定する分割リクエスト(X1)711と、開始アドレス「0/1/0」および転送長「4」を指定する分割リクエスト(X2)712に分割される。また、クライアント112からのリクエスト(Y)602は、開始アドレスが物理アドレスに変換されて、開始アドレス「1/0/0」および転送長「4」を指定するリクエストが分割リクエスト(Y)720としてアダプタ212から出力される。また、時刻t2において、アービタ310により、アダプタ211からの分割リクエスト(X1)730が出力される。
その後、時刻t3において、アービタ310により、分割リクエスト(X2)712および分割リクエスト(Y)720のうち、分割リクエスト(Y)720が出力される。これは、分割リクエスト(X2)712が、直前に出力した分割リクエスト(X1)730と同一バンクであり、かつ、異なるロウアドレスを示す分割リクエストだからである。このため、アービタ310により、異なるバンク(1)を指定する分割リクエスト(Y)720が選択されて、その選択された分割リクエスト(Y)740がメモリコントローラ320に出力される。その後、時刻t4において、分割リクエスト(X2)750がアービタ310から出力される。
また、時刻t4の直前において、コマンド線401を介して、分割リクエスト(X)730に基づいて発行された、カラム「fc番」および転送長「4」を指定する書込みコマンド(W)731がメモリインタフェース400から出力される。これにより、データ線411を介して、クライアント111からの書込みデータ732がメモリシステム500に転送される。なお、ここでは、時刻t0よりも前に、バンク「0番」、ロウ「0」番を指定するアクティブコマンドが既に発行されていることを想定している。
そして、時刻t6の直前において、分割リクエスト(Y)740に基づいて発行された、カラム「0番」および転送長「4」を指定する書込みコマンド(W)741がメモリインタフェース400から出力される。これにより、データ転送732に続いて、データ線411を介して、クライアント112からの書込みデータ742がメモリシステム500に転送される。なお、ここでも、時刻t0よりも前に、バンク「1番」、ロウ「0」番を指定するアクティブコマンドが既に発行されていることを想定している。
次に、時刻t12の後に、コマンド線401を介して、バンク「0番」を指定するプリチャージコマンド(P)733が発行され、連続して、バンク「1番」を指定するプリチャージコマンド(P)743が発行される。そして、時刻t15の直前において、コマンド線401を介して、分割リクエスト(X2)750に基づいて発行された、バンク「0番」、ロウ「1番」を指定するアクティブコマンド(A)751がメモリインタフェース400から出力される。
次に、時刻t17の直後に、コマンド線401を介して、カラム「0番」および転送長「4」を指定する書込みコマンド(W)752がメモリインタフェース400から出力される。これにより、データ線411を介して、クライアント111からの書込みデータ753がメモリシステム500に転送される。
このように、アダプタ211によりリクエスト(X)601の論理アドレスを物理アドレスに変換して、その変換リクエストをロウ単位により分割することによって、アクセス期間Bを短縮させることができる。すなわち、アービタ310において、複数の分割リクエスト(X2およびY)712および720を受け付けた場合には、直前に出力した分割アドレス(X1)730の物理アドレスに基づいて、出力する分割リクエストを選択することができる。これにより、同一バンクの異なるロウアドレスを指定する分割アドレスを連続して出力することを抑制することができるため、メモリシステム500におけるアクセス期間が短縮され、データ転送効率を改善することができる。
[メモリ制御装置200の動作例]
次に本発明の実施の形態におけるメモリ制御装置200の動作について図面を参照して説明する。
図8は、本発明の第1の実施の形態におけるメモリ制御装置200のメモリ制御方法の処理手順例を示すフローチャートである。
まず、アドレス変換部220により、クライアント111乃至114から発行されたリクエストの論理アドレスが、メモリシステム500の物理アドレスに変換される(ステップS911)。なお、ステップS911は、特許請求の範囲に記載のアドレス変換手順の一例である。続いて、リクエスト分割部240により、アドレス変換部220から出力された変換リクエストの物理アドレスに基づいて、メモリシステム500に対するコマンド単位により、変換リクエストが分割される(ステップS912)。例えば、このリクエスト分割部240により、メモリシステム500におけるロウ単位またはバースト長単位により変換リクエストが分割される。なお、ステップS912は、特許請求の範囲に記載のリクエスト分割手順の一例である。
その後、アービタ310により、各クライアント111乃至114に対応するリクエスト分割部240から出力された分割リクエストの物理アドレスに基づいて、その分割リクエストの出力順番に関する調停が行われる(ステップS913)。アービタ310により、例えば、直前に出力した分割リクエストと同一のバンクアドレスであり、かつ、異なるロウアドレスを指定する分割リクエスト以外の分割リクエストが選択される。なお、ステップS913は、特許請求の範囲に記載の調停手順の一例である。続いて、メモリコントローラ320により、選択された分割リクエストに基づいて、メモリシステム500に対してコマンドが発行される(ステップS914)。
その後、データバスコントローラ330により、アービタ310により選択された分割リクエストが、書込み要求か読出し要求かが判断される(ステップS915)。そして、分割リクエストが書込み要求である場合には、データバスコントローラ330により、分割リクエストに示されたクライアント識別情報に基づいて、ライトセレクタ340の接続が切り替えられる。これにより、分割リクエストに示されたクライアント111乃至114からの書込みデータが、メモリインタフェース400を介してメモリシステム500に出力される(ステップS916)。
一方、分割リクエストが読出し要求である場合には、データバスコントローラ330により、分割リクエストに示されたクライアント識別情報に基づいて、リードセレクタ370の接続が切り替えられる。これにより、分割リクエストに示されたクライアントに対して、メモリシステム500に記憶されたデータのうち、その分割リクエストに指定された物理アドレスのデータが出力され(ステップS917)。そして、分割リクエストに対するメモリ制御処理が終了する。
このように、本発明の第1の実施の形態では、アダプタ211乃至214を設けることによって、アービタ310においてメモリシステム500におけるデータ転送の効率を低下させる分割リクエストの出力を抑制させることができる。
なお、本発明の第1の実施の形態では、開始アドレスおよび転送長を指定するリクエストがクライアント111乃至114から発行される場合について説明したが、1つのアドレスを指定するリクエストが連続して発行される場合にも適用することができる。そこで、1つのアドレスを指定するリクエストが連続して発行される場合におけるアダプタ211乃至214について第2の実施の形態として以下に説明する。
<2.第2の実施の形態>
[アダプタ211の構成例]
図9は、本発明の第2の実施の形態におけるアダプタ211の一構成例を示すブロック図である。アダプタ211は、アドレス変換部220と、リクエスト分割部640と、連続出力部680とを備える。アドレス変換部220は、図2に示したものと同様であるため、図2と同一符号を付してここでの詳細な説明を省略する。
アドレス変換部220は、クライアント111から1つの論理アドレスが指定されたリクエストを連続して発行された複数の連続リクエストに対して、その複数の連続リクエストに示される論理アドレスを物理アドレスに変換するものである。そして、アドレス変換部220は、その変換された複数の連続リクエストをリクエスト分割部640に出力する。
リクエスト分割部640は、アドレス変換部220からの複数の連続リクエストを開始アドレスおよび転送長を示すリクエストに生成して、その生成されたリクエストをメモリシステム500におけるロウ単位またはバースト長単位により分割するものである。リクエスト分割部640は、その分割されたリクエストを分割リクエストとして、分割リクエスト線670を介して連続出力部680に順次出力する。なお、リクエスト分割部640は、特許請求の範囲に記載のリクエスト分割部の一例である。
連続出力部680は、分割リクエスト線670を介してリクエスト分割部640から順次出力された分割リクエストを連続して出力するものである。この連続出力部680は、リクエスト分割部640から順次出力される分割リクエストを保持して、その保持された複数の分割リクエストに基づいて、その保持された複数の分割リクエスト同士を連続して、分割リクエスト線311を介してアービタ310に出力する。なお、連続出力部680は、特許請求の範囲に記載の連続出力部の一例である。
次に、リクエスト分割部640および連続出力部680の具体的な構成について、図面を参照して以下に説明する。
[リクエスト分割部640の構成例]
図10は、本発明の第2の実施の形態におけるリクエスト分割部640の一構成例を示すブロック図である。リクエスト分割部640は、アドレスレジスタ641と、イネーブルレジスタ642と、ラスト信号レジスタ643と、開始アドレス選択部644と、開始アドレス決定部645と、開始アドレスレジスタ646とを備える。さらに、リクエスト分割部640は、アドレス比較部647と、リクエスト取得信号生成部648と、転送長生成カウンタ649と、リクエスト出力部650とを備える。
また、リクエスト分割部640は、開始アドレス出力部661と、次開始アドレス算出部662と、次開始アドレスレジスタ663とを備える。また、リクエスト分割部640は、転送長選択部664と、分割長生成部665と、転送長出力部666と、差分転送長算出部667と差分転送長レジスタ668とを備える。なお、これらの構成は、図4に示したものと同様であるため、ここでの説明を省略する。
また、ここでは、変換リクエスト線230に含まれるアドレス線233、アドレスイネーブル線234およびラスト信号線235が示されている。このアドレス線233には、アドレス変換部220により変換された連続リクエストの物理アドレスが供給される。また、アドレスイネーブル線234には、アドレス線233に供給された物理アドレスが有効である否かを示すイネーブル信号が供給される。さらに、ラスト信号線235には、アドレス変換部により変換された複数の連続リクエストのうち終端を示すラスト信号が供給される。
アドレスレジスタ641は、アドレス線233から供給される物理アドレスを保持するものである。このアドレスレジスタ641は、その保持された物理アドレスを開始アドレス選択部644およびアドレス比較部647に出力する。
イネーブルレジスタ642は、アドレスイネーブル線234から供給されるイネーブル信号を保持するものである。このイネーブルレジスタ642は、その保持されたイネーブル信号を開始アドレス決定部645および転送長生成カウンタ649に出力する。
ラスト信号レジスタ643は、ラスト信号線235から供給されるラスト信号を保持するものである。このラスト信号レジスタ643は、その保持されたラスト信号をアドレス比較部647に出力する。
開始アドレス選択部644は、転送長生成カウンタ649のカウント値が初期値である場合に転送長生成カウンタ649から出力される初期化信号に基づいて、アドレスレジスタ641または開始アドレスレジスタ646のうち一方を選択するセレクタである。この開始アドレス選択部644は、転送長生成カウンタ649から初期値信号が出力された場合には、アドレスレジスタ641に保持されているアドレスを選択する。
一方、開始アドレス選択部644は、転送長生成カウンタ649から初期値信号が出力されていない場合には、開始アドレスレジスタ646に保持されている開始アドレスを選択する。また、開始アドレス選択部644は、その選択されたアドレスまたは開始アドレスをリクエスト出力部650および開始アドレスレジスタ646に出力する。
開始アドレス決定部645は、イネーブルレジスタ642からのイネーブル信号と、転送長生成カウンタ649からの初期値信号とに基づいて、開始アドレス選択部644からの出力を開始アドレスレジスタ646に保持させるか否かを決定するものである。この開始アドレス決定部645は、イネーブル信号および初期値信号を同時に受け付けた場合には、開始アドレス選択部644からのアドレスを、開始アドレスとして、開始アドレスレジスタ646に保持させる。これ以外の場合には、開始アドレス決定部645は、開始アドレス選択部644から出力されるアドレスを開始アドレスレジスタ646に保持させない。
また、開始アドレス決定部645は、開始アドレス選択部644からの出力を開始アドレスレジスタ646に保持させるための保持信号を開始アドレスレジスタ646に出力する。この開始アドレス決定部645は、例えば、論理積回路により実現される。この例において、転送長生成カウンタ649から初期値信号として「H(High)」が出力され、かつ、イネーブルレジスタ642からイネーブル信号として「H」が出力された場合には、開始アドレス決定部645は、保持信号として「H」を出力する。これ以外の場合には、開始アドレス決定部645は、「L(Low)」を出力する。
開始アドレスレジスタ646は、開始アドレス決定部645からの保持信号に基づいて、開始アドレス選択部644により選択されたアドレスを開始アドレスとして保持するものある。この開始アドレスレジスタ646は、その保持された開始アドレスを開始アドレス選択部644に出力する。
アドレス比較部647は、アドレスレジスタ641に保持されたアドレスと、次にアドレスレジスタ641に保持されるアドレスとを比較することによって、2つのアドレスが連続しているか否かを判断するものである。このアドレス比較部647は、アドレスイネーブル線234からのイネーブル信号と、ラスト信号レジスタ643からのラスト信号とに基づいて、アドレス線233から供給されるアドレスと、アドレスレジスタ641に保持されたアドレスとを比較する。
このアドレス比較部647は、アドレスイネーブル線234からイネーブル信号が供給されている場合において、アドレス線233から供給されるアドレスと、アドレス線233から供給された1つ前のアドレスとが連続するか否かを比較する。すなわち、アドレス比較部647は、アドレスレジスタ641に保持されたアドレスと比較して、アドレス線233からのバンクアドレスが同一であり、ロウアドレスが同一であり、かつ、カラムアドレスが1だけ大きい場合には連続であると判断する。これ以外の場合には、アドレス比較部647は、アドレス線233からのアドレスと、アドレスレジスタ641からのアドレスとが不連続であると判断する。
また、アドレス比較部647は、不連続と判断した場合には、不連続信号をリクエスト取得信号生成部648および転送長生成カウンタ649に出力する。また、アドレス比較部647は、ラスト信号レジスタ643からラスト信号が供給された場合には、アドレス比較を行うことなく、不連続信号をリクエスト取得信号生成部648および転送長生成カウンタ649に出力する。
転送長生成カウンタ649は、アドレス比較部647により連続であると判断されている場合には、イネーブルレジスタ642からのイネーブル信号に基づいて、カウント値を1ずつ増加させるカウンタである。この転送長生成カウンタ649は、その増加されたカウント値を転送長としてリクエスト出力部650に出力する。
また、転送長生成カウンタ649は、アドレス比較部647から不連続信号が供給された場合には、カウント値を初期値である「1」に設定して、初期値信号線655を介して初期値信号を開始アドレス選択部644および開始アドレス決定部645に供給する。また、転送長生成カウンタ649は、カウント値が一定の転送長閾値と一致した場合には、一致信号をリクエスト取得信号生成部648に供給した後にカウント値を初期値に設定する。
リクエスト取得信号生成部648は、開始アドレス選択部644から出力される開始アドレスと、転送長生成カウンタ649から出力される転送長とをリクエスト出力部650に取得させるためのリクエスト取得信号を生成するものである。このリクエスト取得信号生成部648は、アドレス比較部647からの不連続信号、または、転送長生成カウンタ649からの一致信号に基づいてリクエスト取得信号を生成する。また、リクエスト取得信号生成部648は、その生成されたリクエスト取得信号をリクエスト出力部650に供給する。
このリクエスト取得信号生成部648は、例えば、論理和回路により実現される。この例において、アドレス比較部647から不連続信号として「H」、または、転送長生成カウンタ649からの一致信号として「H」が供給された場合には、リクエスト取得信号生成部648は、リクエスト取得信号として「H」を出力する。
リクエスト出力部650は、リクエスト取得信号生成部648からのリクエスト取得信号に基づいて、開始アドレス選択部644から出力された開始アドレスと、転送長生成カウンタ649から出力された転送長とを取得するものである。これにより、複数の連続リクエストから、開始アドレスおよび転送長を示すリクエストが生成される。そして、このリクエスト出力部650は、その生成されたリクエストを供給するタイミングを示す初期化信号線659に初期化信号を供給するとともに、開始アドレス線651および転送長線652にそれぞれ開始アドレスおよび転送長を出力する。
[リクエスト分割部640による連続リクエストの分割例]
図11は、本発明の第2の実施の形態におけるリクエスト分割部640による連続リクエストの分割例を示すタイミングチャートである。このタイミングチャートには、リクエスト出力部650から出力されるリクエストである範囲指定リクエストの生成例が示されている。
ここでは、バンク0番、ロウ0番およびカラムfc番のアドレス(0/0/fc)から、バンク0番、ロウ1番およびカラム3番のアドレス(0/1/3)までの8つの連続リクエストがアドレス変換部220から供給されたことを想定する。この例では、ロウ0番の終端カラムアドレスがff番とする。すなわち、メモリシステム500に対するアクセスすべき範囲がロウ0番および1番に跨る場合を想定している。また、左から右に時間(時刻t0乃至t11)が経過することとする。
ここでは、変換リクエスト線230に含まれるアドレス線233、アドレスイネーブル線234およびラスト信号線235からの出力信号が示されている。また、アドレスレジスタ641、イネーブルレジスタ642、ラスト信号レジスタ643、転送長生成カウンタ649と、初期値信号線655、開始アドレス決定部645からの出力信号が示されている。さらに、開始アドレスレジスタ646、アドレス比較部647およびリクエスト取得信号生成部648からの出力信号が示されている。また、開始アドレス線651および転送長線652からの出力信号が示されている。また、ここでは、時刻t0の直前における転送長生成カウンタ649のカウンタ値は、初期値である「1」を示している。
まず、時刻t0から時刻t7において、第1の連続リクエストのアドレス「0/0/fc」から第8の連続リクエストのアドレス「0/1/3」までがアドレス線233から連続して出力される。これとともに、アドレスイネーブル線234からイネーブル信号が出力される。また、時刻t7において、ラスト信号線235からラスト信号が出力される。
この場合において、時刻t1では、アドレスレジスタ641には第1の連続リクエストのアドレス「0/0/fc」が、イネーブルレジスタ642にはイネーブル信号が保持される。これとともに、転送長生成カウンタ649のカウント値は「1」のままであるため、初期値信号線655から初期化信号が出力され、開始アドレス選択部644においてアドレスレジスタ641からの第1の連続リクエストのアドレス「0/0/fc」が出力される。
このとき、初期化信号が出力され、かつ、イネーブルレジスタ642からイネーブル信号が出力されるため、開始アドレス決定部645から保持信号が出力される。また、アドレスレジスタ641に保持された第1の連続リクエストのアドレス「0/0/fc」と、アドレス線233から出力された第2の連続リクエストのアドレス「0/0/fd」とが連続するため、アドレス比較部647から不連続信号は出力されない。
時刻t2では、アドレスレジスタ641には第2の連続リクエストのアドレス「0/0/fd」が、イネーブルレジスタ642にはイネーブル信号が保持される。これとともに、開始アドレスレジスタ646において、時刻t1における開始アドレス決定部645からの保持信号に基づいて、開始アドレス選択部644から出力された第1の連続リクエストのアドレス「0/0/fc」が保持される。
このとき、時刻t1においてアドレス比較部647から不連続信号が出力されず、かつ、イネーブルレジスタ642からイネーブル信号が出力されたことから、転送長生成カウンタ649のカウンタ値が「2」に設定される。また、アドレスレジスタ641に保持された第2の連続リクエストのアドレス「0/0/fd」と、アドレス線233から出力された第3の連続リクエストのアドレス「0/0/fe」とが連続であるため、アドレス比較部647により不連続信号は出力されない。
時刻t3では、アドレスレジスタ641には第3の連続リクエストのアドレス「0/0/fe」が、イネーブルレジスタ642にはイネーブル信号が保持される。時刻t2においてアドレス比較部647から不連続信号が出力されず、かつ、イネーブルレジスタ642からイネーブル信号が出力されるため、転送長生成カウンタ649のカウンタ値が「3」に設定される。このとき、アドレスレジスタ641に保持された第3の連続リクエストのアドレス「0/0/fe」と、アドレス線233から出力された第4の連続リクエストのアドレス「0/0/ff」とが連続であるため、アドレス比較部647から不連続信号は出力されない。
時刻t4では、アドレスレジスタ641には第4の連続リクエストのアドレス「0/0/ff」が、イネーブルレジスタ642にはイネーブル信号が保持される。時刻t3においてアドレス比較部647から不連続信号が出力されず、かつ、イネーブルレジスタ642からイネーブル信号が出力されることから、転送長生成カウンタ649のカウンタ値が「4」に設定される。
このとき、アドレスレジスタ641に保持された第4の連続リクエストのアドレス「0/0/ff」と、アドレス線233から出力された第5の連続リクエストのアドレス「0/1/0」とが連続でないため、アドレス比較部647から不連続信号が出力される。これにより、リクエスト取得信号生成部648からリクエスト取得信号が出力され、開始アドレスレジスタ646に保持された開始アドレス「0/0/fc」と、転送長生成カウンタ649のカウント値である転送長「4」がリクエスト出力部650に取得される。
時刻t5では、アドレスレジスタ641には第5の連続リクエスト(0/1/0)が、イネーブルレジスタ642にはイネーブル信号が保持される。時刻t4においてアドレス比較部647から不連続信号が出力されたため、転送長生成カウンタ649のカウンタ値が初期値の「1」に設定される。これにより、転送長生成カウンタ649から初期値信号が出力されることから、開始アドレス決定部645には、初期値信号が供給され、かつ、イネーブルレジスタ642からイネーブル信号が供給されるため、開始アドレス決定部645から保持信号が出力される。また、初期値信号に基づいて開始アドレス選択部644から、アドレスレジスタ641に保持された第5の連続リクエストのアドレス(0/1/0)が出力される。
このとき、アドレスレジスタ641に保持された第5の連続リクエストのアドレス「0/1/0」と、アドレス線233から出力された第6の連続リクエストのアドレス「0/1/1」とが連続であるため、アドレス比較部647から不連続信号は出力されない。また、リクエスト出力部650により、時刻t4において取得された開始アドレス「0/0/fc」および転送長「4」が、第1の範囲指定リクエストとして開始アドレス線651および転送長線652にそれぞれ供給される。
時刻t6では、アドレスレジスタ641には第6の連続リクエストのアドレス「0/1/1」が、イネーブルレジスタ642にはイネーブル信号が保持される。これとともに、開始アドレスレジスタ646において、時刻t5における開始アドレス決定部645からの保持信号に基づいて、開始アドレス選択部644から出力された第5の連続リクエストのアドレス「0/1/0」が保持される。また、時刻t5においてアドレス比較部647から不連続信号が出力されず、かつ、イネーブルレジスタ642からイネーブル信号が供給されるため、転送長生成カウンタ649のカウンタ値が「2」に設定される。
このとき、アドレスレジスタ641に保持された第6の連続リクエストのアドレス「0/1/1」と、アドレス線233から出力された第7の連続アリクエストのアドレス「0/1/2」とが連続するため、アドレス比較部647から不連続信号は出力されない。
時刻t7では、アドレスレジスタ641には第7の連続リクエストのアドレス「0/1/2」が、イネーブルレジスタ642にはイネーブル信号が保持される。時刻t6においてアドレス比較部647から不連続信号が出力されず、かつ、イネーブルレジスタ642からイネーブル信号が供給されたため、転送長生成カウンタ649のカウンタ値が「3」に設定される。このとき、アドレスレジスタ641に保持された第7の連続リクエストのアドレス「0/1/2」と、アドレス線233から出力された第8の連続リクエストのアドレス「0/1/3」とが連続するため、アドレス比較部647から不連続信号は出力されない。
時刻t8では、アドレスレジスタ641には第8の連続リクエストのアドレス「0/1/3」が、イネーブルレジスタ642にはイネーブル信号が、ラスト信号レジスタ643にラスト信号が保持される。また、時刻t7においてアドレス比較部647から不連続信号が出力されず、かつ、イネーブルレジスタ642からイネーブル信号が供給されるため、転送長生成カウンタ649のカウンタ値が「4」に設定される。
このとき、ラスト信号レジスタ643からラスト信号が出力されるため、アドレス比較部647から不連続信号が出力される。これにより、リクエスト取得信号生成部648からリクエスト取得信号が出力され、開始アドレスレジスタ646に保持された開始アドレス「0/1/0」と、転送長生成カウンタ649のカウント値である転送長「4」がリクエスト出力部650に取得される。
時刻t9では、リクエスト出力部650により、時刻t8において取得された開始アドレス「0/1/0」および転送長「4」が、第2の範囲指定リクエストとして開始アドレス線651および転送長線652にそれぞれ供給される。
このように、第1乃至8の連続リクエストは、開始アドレス「0/0/fc」および転送長「4」を示す第1の範囲指定リクエストと、開始アドレス「0/1/0」および転送長「4」を示す第2の範囲指定リクエストとに変換される。すなわち、リクエスト分割部640は、1つのアドレスを指定する複数の連続リクエストがアドレス変換部220から順次出力された場合には、複数の連続リクエストに基づいて、物理アドレスによる開始アドレスおよび転送長を示す範囲指定リクエストを生成する。なお、連続リクエストおよび範囲指定リクエストは、特許請求の範囲に記載の第1および第2のリクエストの一例である。
なお、このように、複数の連続リクエストを範囲指定リクエストに変換することによって、その変換された2つの範囲指定リクエスト間に空き時間(時刻t6乃至t8)が生じてしまう。次に、リクエスト出力部650により生成された2つの範囲指定リクエストが分割リクエスト線670から出力される例について図面を参照して説明する。
図12は、図11において示された第1および第2の範囲指定リクエストが分割リクエスト線670から出力される例を示すタイミングチャートである。ここでは、図11で示した開始アドレス「0/0/fc」および転送長「4」を示す第1の範囲指定リクエストと、開始アドレス「0/1/0」および転送長「4」を示す第2の範囲指定リクエストとがリクエスト出力部650から出力されることを想定している。また、分割長生成部665は、図4で述べたDDRの規定による分割長対応表の例に基づいて分割長を生成することとする。
ここでは、初期化信号線659と、開始アドレス線651と、転送長線652とが示されている。また、開始アドレス出力部661と、転送長選択部664と、カラムアドレス線675と、分割長生成部665と、次開始アドレスレジスタ663と、差分転送長レジスタ668とが示されている。さらに、分割リクエスト線670に含まれる開始アドレス線671および転送長線672が示されている。また、左から右に時間(時刻t0乃至t5)が経過することとする。
時刻t0において、初期化信号線659を介して初期化信号が供給されるとともに、開始アドレス線651および転送長線652から第1の範囲指定リクエストの開始アドレス「0/0/fc」および転送長「4」がそれぞれ供給される。
この場合において、開始アドレス出力部661には初期化信号が供給されるため、開始アドレス出力部661から、第1の範囲指定リクエストの開始アドレス「0/0/fc」が分割リクエスト線670の開始アドレス線671に出力される。それとともに、転送長選択部664にも初期化信号が供給されるため、転送長選択部664から、転送長線652からの第1の範囲指定リクエストの転送長「4」が出力される。
このとき、カラムアドレス線675からの開始カラムアドレス(fc)の下位2ビットは「0」を示すため、分割長生成部665から分割長「4」が出力される。そして、転送長出力部666により、転送長線652からの転送長「4」と、分割長生成部665からの分割長「4」とが等しいため、分割長として「4」が分割リクエスト線670の転送長線672に出力される。なお、転送長出力部666により、転送長線672に対する出力タイミングに合わせてイネーブル信号がリクエストイネーブル線673に出力される。
これにより、第1の分割リクエストとして、開始アドレス「0/0/fc」および転送長「4」が分割リクエスト線670に出力され、第1の指定範囲リクエストに対する分割処理が終了する。
それとともに、次開始アドレスレジスタ663には、次開始アドレス算出部662において、変換リクエストの開始アドレス「0/0/fc」に分割長「4」が加算された次開始アドレス「0/1/0」が保持される。また、差分転送長レジスタ668には、差分転送長算出部667において、転送長選択部664の出力「4」から転送長出力部666の出力「4」が減算された差分転送長「0」が保持される。
次に、時刻t4において、初期化信号線659を介して初期化信号が供給されるとともに、開始アドレス線651および転送長線652から第2の範囲指定リクエストの開始アドレス「0/1/0」および転送長「4」がそれぞれ供給される。
この場合において、開始アドレス出力部661には初期化信号が供給されるため、開始アドレス出力部661から、第2の範囲指定リクエストの開始アドレス「0/1/0」が分割リクエスト線670の開始アドレス線671に出力される。それとともに、転送長選択部664にも初期化信号が供給されるため、転送長選択部664から、転送長線652からの第2の範囲指定リクエストの転送長「4」が出力される。
このとき、カラムアドレス線675からの開始カラムアドレス(0)の下位2ビットは「0」を示すため、分割長生成部665から分割長「4」が出力される。そして、転送長出力部666により、転送長線652からの転送長「4」と、分割長生成部665からの分割長「4」とが等しいため、分割長として「4」が分割リクエスト線670の転送長線672に出力される。
これにより、第2の分割リクエストとして、開始アドレス「0/1/0」および転送長「4」が分割リクエスト線670に出力され、第2の指定範囲リクエストに対する分割処理が終了する。
このように、リクエスト出力部650から出力された第1および第2の指定範囲リクエストの出力間隔(時刻t1乃至t3)は、分割リクエスト線670に出力されるときにおいても維持される。ここでは、リクエスト出力部650から出力される指定範囲リクエストの出力間隔は、メモリシステム500におけるロウの切り目により生じたものであるが、転送長生成カウンタ649に設定されるカウント値が転送長閾値となったときにおいても生じる。このときには、同一バンクの同一ロウアドレスを指定する複数の分割リクエスト間に空き時間が生じることになり、この空き時間によってメモリシステム500のデータ転送効率が低下してしまう場合がある。
例えば、空き時間が生じた同一バンクの同一ロウアドレスを指定する複数の分割リクエストの間に、これらの分割リクエストと同一のバンクアドレスであり、かつ、異なるロウアドレスを指定する他の分割リクエストがアービタ310に供給される場合である。この場合には、同一バンクの異なるロウアドレスを指定する分割リクエストがアービタ310から連続して出力されることになるため、著しくメモリシステム500のデータ転送効率が低下する。
このため、アダプタ211に連続出力部680を設けて、リクエスト分割部640から出力される分割リクエストを連続して出力させることによって、メモリシステム500におけるデータ転送効率の低下を抑制させることができる。ここで、連続出力部680の構成例について図面を参照して以下に説明する。
[連続出力部680の一構成例]
図13は、本発明の第2の実施の形態における連続出力部680の一構成例を示すブロック図である。
連続出力部680は、リクエスト出力部681と、転送長加算部682と、転送長累計比較部683と、転送長累計値レジスタ684と、リクエストカウンタ685と、出力信号生成部686とを備える。
リクエスト出力部681は、リクエスト分割部640により分割された複数の分割リクエスト同士を連続して出力するものである。このリクエスト出力部681は、開始アドレス線671および転送長線672から供給される開始アドレスおよび転送長を示す分割リクエストを順次保持する。そして、リクエスト出力部681は、出力信号生成部686により生成された出力信号に基づいて、その保持された複数の分割リクエスト同士を連続して出力する。すなわち、リクエスト出力部681は、リクエスト分割部640から順次出力された分割リクエストを保持して、その保持された複数の分割リクエストに基づいて、複数の分割リクエスト同士を連続して出力する。
また、リクエスト出力部681は、その保持された複数の分割リクエストの開始アドレスと、その開始アドレスに対応する転送長とを、分割リクエスト線311に含まれる開始アドレス線691および転送長線692に順次出力する。なお、リクエスト出力部681は、特許請求の範囲に記載の連続出力部の一例である。
転送長加算部682は、転送長線672を介してリクエスト分割部640から供給された転送長と、転送長累計値レジスタ684に保持された転送長累計値とを加算するものである。この転送長加算部682は、その加算結果を転送長累計値として転送長累計比較部683および転送長累計値レジスタ684に出力する。
転送長累計比較部683は、転送長加算部682により算出された転送長累計値と、一定の累計閾値とを比較するものである。この転送長累計比較部683は、転送長加算部682により算出された転送長累計値が累計閾値以上になった場合には、転送長信号を出力信号生成部686に出力する。
転送長累計値レジスタ684は、転送長加算部682により算出された転送長累計値を保持するものである。この転送長累計値レジスタ684は、リクエスト出力部681に保持された複数の分割リクエストを出力させるための出力信号に基づいて、転送長累計値レジスタに保持された値を初期値である「0」に設定する。
リクエストカウンタ685は、リクエストイネーブル線673を介してリクエスト分割部640から出力された分割リクエストを示すイネーブル信号に基づいて、リクエストカウンタ685のカウント値を1ずつ増加させるカウンタである。このリクエストカウンタ685は、カウント値が一定のカウント閾値になった場合には、信号線687を介して、カウント信号を出力信号生成部686に出力する。このリクエストカウンタ685は、出力信号生成部686からの出力信号に基づいてカウント値を初期値である「0」に設定する。
出力信号生成部686は、転送長累計比較部683からの転送長信号、または、リクエストカウンタ685からのカウント信号を受け付けた場合には、出力信号を生成するものである。この出力信号生成部686は、その生成された出力信号をリクエスト出力部681、転送長累計値レジスタ684およびリクエストカウンタ685に出力する。
この出力信号生成部686は、例えば、論理和回路により実現される。この例において、転送長累計比較部683から転送長信号として「H」、または、リクエストカウンタ685からのカウント信号として「H」が供給された場合には、出力信号生成部686は、出力信号として「H」を出力する。
このように、連続出力部680は、転送長累計比較部683を設けることによって、複数の分割リクエストに示された転送長の累計に関する累計閾値に基づいて、複数の分割リクエスト同士を連続して出力することができる。これにより、分割リクエストを保持することによって生じるアクセス遅延を軽減することができる。
また、連続出力部680は、リクエストカウンタ685を設けることによって、複数の分割リクエストの数に関するカウンタ閾値に基づいて、複数の分割リクエスト同士を連続して出力することができる。これにより、転送長累計比較部683と同様に、分割リクエストを保持することによって生じるアクセス遅延を軽減することができる。次に、連続出力部680により出力される分割リクエストの出力例について、図面を参照して以下に説明する。
[連続出力部680による分割リクエストの出力例]
図14は、本発明の第2の実施の形態における連続出力部680による分割リクエストの出力例を示すタイミングチャートである。ここでは、分割リクエスト線670に含まれる開始アドレス線671、転送長線672およびリクエストイネーブル線673の出力信号が示されている。また、転送長加算部682、転送長累計値レジスタ684、転送長累計比較部683、リクエストカウンタ685および出力信号生成部686の出力信号が示されている。さらに、分割リクエスト線311に含まれる開始アドレス線691および転送長線692の出力信号が示されている。
ここでは、開始アドレス「0/0/fc」および転送長「4」を指定する第1の分割リクエストと、開始アドレス「0/1/0」および転送長「4」を指定する第2の分割リクエストとがリクエスト分割部640から供給されることを想定する。また、時刻t0の直前では、転送長累計値レジスタ684およびリクエストカウンタ685は、初期値である「0」にそれぞれ設定されていることとする。また、転送長累計比較部683に設定された累計閾値を「8」とする。ここでは、左から右に時間(時刻t0乃至t7)が経過することとする。
まず、時刻t0では、開始アドレス線671および転送長線672から第1の分割リクエストの開始アドレス「0/0/fc」および転送長「4」が供給されるとともに、リクエストイネーブル線673からイネーブル信号が供給される。このとき、転送長加算部682により、転送長線672からの転送長「4」と、転送長累計値レジスタ684の初期値である「0」とが加算された転送長累計値「4」が転送長累計比較部683および転送長累計値レジスタ684に出力される。
時刻t1では、転送長累計値レジスタ684に、転送長加算部682からの転送長累積値「4」が保持される。そして、リクエストカウンタ685のカウント値が、リクエストイネーブル線673からのイネーブル信号に基づいて「1」に設定される。
次に、時刻t4では、開始アドレス線671および転送長線672から第2の分割リクエストの開始アドレス「0/1/0」および転送長「4」が供給されるとともに、リクエストイネーブル線673からイネーブル信号が供給される。このとき、転送長加算部682により、転送長線672からの転送長「4」と、転送長累計値レジスタ684に保持された転送長累計値「4」とが加算されて、新たな転送長累計値として「8」が出力される。そして、転送長加算部682から出力された転送長累積値「8」が累計閾値「8」と等しいため、転送長累計比較部683から転送長信号が出力信号生成部686に出力される。
これにより、出力信号生成部686からの出力信号に基づいて、リクエスト出力部681に保持された第1の分割リクエストの開始アドレス「0/0/fc」および転送長「4」が開始アドレス線691および転送長線692にそれぞれ出力される。続いて、時刻t5において、リクエスト出力部681に保持された第2の分割リクエストの開始アドレス「0/1/0」および転送長「4」が開始アドレス線691および転送長線692にそれぞれ出力される。また、出力信号生成部686からの出力信号に基づいて転送長累計値レジスタ684およびリクエストカウンタ685が初期値「0」にそれぞれ設定される。
このように、連続出力部680を設けることによって、リクエスト分割部640から出力された第1および第2の分割リクエストを連続してアービタ310に出力することができる。このため、アービタ310において、第1および第2の分割リクエストの間に、他のクライアントからの分割リクエストが選択されることによって生じるメモリシステム500における転送効率の低下を抑制することができる。
次に、複数の連続リクエストの順番を入れ替えることによって、分割リクエストを1つに結合できる場合があることから、本発明の第2の実施の形態におけるアダプタ211の変形例として以下に図面を参照して説明する。
[アダプタ211の構成の変形例]
図15は、本発明の第2の実施の形態におけるアダプタ211の構成の変形例を示すブロック図である。このアダプタ211は、図9に示した構成に加えてリクエスト入替部630およびデータ管理部635を備えている。ここでは、リクエスト入替部630およびデータ管理部635以外の構成は、図9と同様のものであるため、図9と同一符号を付してここでの説明を省略する。
リクエスト入替部630は、アドレス変換部220により物理アドレスに変換された複数の連続リクエストの順番を入れ替えるものである。このリクエスト入替部630は、例えば、アドレスが不連続である複数の連続リクエストを受け付けた場合には、リクエストに示されるアドレスが連続になるように、リクエストを並び替える。また、このリクエスト入替部630は、例えば、メモリシステム500におけるカラムに対する一定のアクセス順序に従って、連続リクエストを入れ替える。また、リクエスト入替部630は、その入れ替えた連続リクエストの順序に関するリクエスト入替情報をデータ管理部635に供給する。また、リクエスト入替部630は、その入れ替えた連続リクエストをリクエスト分割部640に供給する。
データ管理部635は、リクエスト入替部630から供給されたリクエスト入替情報に基づいて、データ線131を介してクライアント111からの書込みデータを入れ替えるものである。このデータ管理部635は、クライアント111から出力された書込みデータを保持して、その保持された書込みデータのうち、入れ替えられた連続リクエストに対応する書込みデータをリクエスト入替情報に基づいて入れ替える。また、データ管理部635は、信号線319を介してアービタ310から通知された調停結果に基づいて、メモリシステム500に対するアクセスが許可された分割リクエストに対応する書込みデータを、データ線341を介してライトセレクタ340に出力する。
次に、このリクエスト入替部630による複数の連続リクエストを入れ替える例について図面を参照して以下に説明する。
[リクエスト入替部630によるリクエスト順の入れ替え例]
図16は、リクエスト入替部630による連続リクエストの入れ替えによって生成される分割リクエストの生成例を示すタイミングチャートである。図16(a)は、リクエスト入替部630により連続リクエストの入替を行わない場合における分割リクエストの例を示すタイミングチャートである。図16(b)は、リクエスト入替部630により連続リクエストの入替を行った場合における分割リクエストの例を示すタイミングチャートである。
図16(a)および(b)では、クライアント111から、物理アドレス「0/0/3」に対応する論理アドレス「3」を示す第1の連続リクエストと、物理アドレス「0/0/0」に対応する論理アドレス「0」を示す第2の連続リクエストとが出力される。続いて、物理アドレス「0/0/1」に対応する論理アドレス「1」を示す第3の連続リクエストと、物理アドレス「0/0/2」に対応する論理アドレス「2」を示す第4の連続リクエストとが出力されることを想定する。
図16(a)には、リクエスト線121に含まれるリクエスト信号線125、許可信号線126、アドレスイネーブル線127および論理アドレス線128からの出力信号が示されている。また、分割リクエスト線670に含まれるリクエストイネーブル線673、開始アドレス線671および転送長線672の出力信号が示されている。
時刻t0において、クライアント111からリクエスト信号線125を介してメモリシステム500に対するリクエストの発行を要求するリクエスト信号が出力される。時刻t1において、許可信号線126を介して、アダプタ211から許可信号がクライアント111に出力される。これにより、リクエスト信号および許可信号が解除され、時刻t2において、アドレスイネーブル線127および論理アドレス線128を介して、イネーブル信号および論理アドレス「3」が、第1の連続リクエストとしてクライアント111から出力される。
続いて、時刻t3において、アドレスイネーブル線127および論理アドレス線128を介してイネーブル信号および論理アドレス「0」が、第2の連続リクエストとしてクライアント111から出力される。次に、時刻t4において、アドレスイネーブル線127および論理アドレス線128を介して、イネーブル信号および論理アドレス「1」が、第3の連続リクエストとしてクライアント111から出力される。時刻t5において、アドレスイネーブル線127および論理アドレス線128を介して、イネーブル信号および論理アドレス「2」が、第4の連続リクエストとしてクライアント111から出力される。
次に、時刻t7において、リクエストイネーブル線673、開始アドレス線671および転送長線672を介して、イネーブル信号、開始アドレス「0/0/3」および転送長「1」が、第1の分割リクエストとしてリクエスト分割部640から出力される。その後、時刻t9において、リクエストイネーブル線673、開始アドレス線671および転送長線672を介して、イネーブル信号、開始アドレス「0/0/0」および転送長「3」が、第2の分割リクエストとしてリクエスト分割部640から出力される。
このように、4つの第1乃至4の連続リクエストがクライアント111から発行された場合には、リクエスト分割部640から第1および第2の分割リクエストが出力される。
図16(b)には、物理アドレスを出力するための物理アドレス線631を介してリクエスト入替部630から出力される物理アドレス信号が示されている。ここでは、便宜上、カラムアドレスのみを示している。また、分割リクエスト線670に含まれるリクエストイネーブル線673、開始アドレス線671および転送長線672の出力信号が示されている。
時刻t0乃至t4において、物理アドレス線631を介して、第1の物理アドレス「0/0/0」、第2の物理アドレス「0/0/1」、第3の物理アドレス「0/0/2」、第4の物理アドレス「0/0/3」がリクエスト入替部630から順次出力される。
そして、時刻t5において、リクエストイネーブル線673、開始アドレス線671および転送長線672を介して、イネーブル信号、開始アドレス「0/0/0」および転送長「4」が、第3の分割リクエストとしてリクエスト分割部640から出力される。
このように、リクエスト入替部630を設けることによって、第1乃至第4の連続リクエストを1つの分割リクエストに生成することができるため、メモリシステム500に対するコマンドの発行を低減することができる。
このように、本発明の第2の実施の形態では、1つのアドレスを指定する複数の連続リクエストがクライアント111乃至114から発行される場合であっても、コマンド単位により分割リクエストを生成することができる。これにより、メモリシステム500に対するアクセス効率を改善することができる。
このように、本発明の実施の形態によれば、アダプタ211乃至214を設けることによって、アービタ310においてメモリシステム500におけるデータ転送効率の良い調停を行うことができる。これにより、データ転送効率を考慮したリクエストの順序制御をアービタ310のみによって行うことができる。
なお、本発明の第1および第2実施の形態では、アダプタ211および214における基本的な機能について説明したが、アダプタ211乃至214に対して付加的機能を追加することができる。そこで、アダプタ211乃至214に対する付加的機能を追加した場合における構成例について第3の実施の形態として以下に図面を参照して簡単に説明する。
<3.第3の実施の形態>
[アダプタ211にゲート機能を設けた例]
図17は、本発明の第3の実施の形態におけるゲート機能を備えるアダプタ211の構成例を示すブロック図である。このアダプタ211は、図2に示した構成に加えてゲート部810を備えている。ここでは、ゲート部810以外の構成は、図2に示したものと同様であるため、図2と同一符号を付してここでの説明を省略する。
ゲート部810は、アダプタ211に対して、メモリ制御装置200からのリクエスト発行の許可なく発行されたリクエストを遮断するものである。このゲート部810は、例えば、メモリ制御装置200の起動時において、クライアント111から発行されたリクエストを破棄する。これは、メモリ制御装置200において初期動作が完了する前にクライアント111からリクエストを受け付けると、クライアント111との正常な通信を行えない場合があるため、そのための誤動作防止機能である。
このように、ゲート部810を設けることによって、メモリ制御装置200の起動時において許可なく発行されたリクエストが遮断されるため、クライアント111との通信時における誤動作を防止することができる。また、アダプタ211にゲート部810を設けることによって、クライアント111側にゲート部を設ける必要がなくなる。
[アダプタ211に周波数変換機能を設けた例]
図18は、本発明の第3の実施の形態における周波数変換機能を備えるアダプタ211の構成例を示すブロック図である。このアダプタ211は、図2に示した構成に加えて周波数変換部820を備えている。ここでは、周波数変換部820以外の構成は、図2に示したものと同様であるため、図2と同一符号を付してここでの説明を省略する。
周波数変換部820は、互いに異なるクロック周波数により動作するクライアント111およびメモリ制御装置200の間を接続するものである。この周波数変換部820は、クライアント111におけるクロック周波数(fa)に同期して生成された信号を、メモリ制御装置200におけるクロック周波数(fb)に同期する信号に変換する。また、周波数変換部820は、その変換された信号であるリクエストをアドレス変換部220に出力する。
このように、アダプタ211に周波数変換部820を設けることによって、メモリ制御装置200は、クロック周波数が互いに異なるクライアント111との間でメモリシステム500に対するアクセス制御を行うことができる。また、アダプタ211に周波数変換部820を設けることによって、メモリ制御装置200のクロック周波数をクライアント111のクロック周波数に合わせる必要がなくなるため、メモリ制御装置200を設計上の制約が緩和される。
[アダプタ211にデータ幅変換機能を設けた例]
図19は、本発明の第3の実施の形態におけるデータ幅変換機能を備えるアダプタ211の構成例を示すブロック図である。このアダプタ211は、図2に示した構成に加えてデータ幅変換部を備えている。図19(a)は、アドレス変換部220の前段にデータ幅変換部830を設けた例を示すブロック図である。図19(b)は、リクエスト分割部240の後段にデータ幅変換部840を設けた例を示すブロック図である。また、図19(a)および(b)に示されたデータ幅変換部830および840以外の構成は、図2と同様のものであるため、図2と同一の符号を付してここでの説明を省略する。
図19(a)に示されたデータ幅変換部830は、互いに異なるデータ幅により転送を行なうクライアント111およびメモリ制御装置200の間を接続するものである。このデータ幅変換部830は、例えば、クライアント111から32ビットのデータ幅により供給されたデータを保持する。そして、データ幅変換部830は、メモリ制御装置200の64ビットのデータ幅により、データ線341を介して、その保持されたデータをライトセレクタ340に転送することによってデータ幅を変換する。また、データ幅変換部830は、データ線131を介してクライアント111から発行されるリクエストをアドレス変換部220に出力する。
図19(b)に示されたデータ幅変換部840は、互いに異なるデータ幅により転送を行なうクライアント111およびメモリ制御装置200の間を接続するものである。このデータ幅変換部840は、例えば、クライアント111から32ビットのデータ幅により供給されたデータを保持する。そして、データ幅変換部840は、メモリ制御装置200の64ビットのデータ幅により、データ線341を介してその保持されたデータをライトセレクタ340に転送することによって、データ幅を変換する。また、データ幅変換部840は、リクエスト分割部240からの分割リクエストを、分割リクエスト線311を介してアービタ310に出力する。
このように、データ幅変換部830または840を設けることによって、メモリ制御装置200は、データ幅が互いに異なるクライアント111との間でメモリシステム500に対するデータ転送を行うことができる。また、アダプタ211にデータ幅変換部830または840を設けることによって、クライアント111からのデータ転送におけるデータ幅を考慮することなく、メモリ制御装置200の設計を行うことができる。
[アダプタ211にコヒーレント機能を設けた例]
図20は、本発明の第3の実施の形態におけるアダプタ850の構成例を示すブロック図である。このアダプタ850は、図2に示したアダプタ211に対応し、コヒーレント管理機能を備えている。ここでは、アービタ310から書込みまたは読出し動作が完了した場合には完了信号が出力されることを想定する。また、ここでは、分割リクエスト線311および313と、完了信号線312および314とがアービタ310に接続され、データ線341および371がライトセレクタ340およびリードセレクタ370に接続される。また、読出しリクエスト線141から読出しリクエストが供給され、読出しリクエストの発行元のクライアントに対してメモリシステム500に記憶されたデータがデータ線151から供給される。
アダプタ850は、コヒーレント管理部860と、書込みアダプタ870と、読出しアダプタ880とを備える。書込みアダプタ870は、図2に示したアダプタ211に対応する。読出しアダプタ880は、図2に示したアダプタ211を読出し用に対応させたものである。このため、書込みアダプタ870および読出しアダプタ880についての説明をここでは省略する。
コヒーレント管理部860は、書込みリクエストおよび読出しリクエストの発行順番を維持するためのものである。このコヒーレント管理部860は、完了信号線312および314を介して、アービタ310から供給される完了信号に基づいて、メモリシステム500に対するコヒーレント管理を行う。
このように、コヒーレント管理部860を設けることによって、書込みリクエストと読出しリクエストとの発行順番を維持しつつ、メモリシステム500に対して分割リクエストによる効率の良いアクセスを行うことができる。
なお、本発明の実施の形態は本発明を具現化するための一例を示したものであり、本発明の実施の形態において明示したように、本発明の実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本発明の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本発明は実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
また、本発明の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disk)、メモリカード、ブルーレイディスク(Blu-ray Disc(登録商標))等を用いることができる。