(57)【要約】【課題】バスマスタによる複雑なアドレス計算を必要とすることなく、システム全体のパフォーマンスの低下を抑える。【解決手段】ＲＯＭ２０のアドレス空間情報を記憶する第１アドレス空間情報記憶部３００と、ＤＤＲメモリ４０のアドレス空間情報を記憶する第２アドレス空間情報記憶部３０２と、ＲＯＭのバンク選択情報記憶部３０１と、ＲＯＭとＤＤＲからの読出しデータの一部を蓄積する一時記憶部３０６と、バンクメモリ空間へのアクセスを受付け可能な第１インターフェース３０８と、バンクメモリ空間のアドレスをＤＤＲのアドレスに変換するアドレス変換部３０３と、ＲＯＭのバンク切替え又はバンクメモリ空間へのアクセス検出時にＲＯＭのアドレス空間からＤＤＲのアドレス空間へＤＭＡ転送する転送部３０４と、ＲＯＭからデータを読出す第２インターフェース３０５と、ＤＤＲに対するデータの書込みと読出しを行う第３インターフェース３０７とを備える。【選択図】図１
2016181216.tif 000002
【特許請求の範囲】
【請求項１】
同じ大きさの第１、第２及び第３バンクメモリ空間が配置されたアドレス空間にアクセス可能であり、
前記第１バンクメモリ空間に配置された第１記憶装置と、前記第２バンクメモリ空間に配置された第２記憶装置とに接続され、
前記第１バンクメモリ空間に属する前記第１記憶装置内のデータを、前記第２バンクメモリ空間内の前記第２記憶装置へＤＭＡ転送する転送部と、
外部から前記第３バンクメモリ空間内の一のアドレスにアクセスがあった場合、当該一のアドレスを前記第２バンクメモリ空間内の一のアドレスに変換し、前記第２記憶装置の当該一のアドレスのデータを出力するインターフェース部と、
を具備することを特徴とするＤＭＡコントローラ。
【請求項２】
前記インターフェース部は、
外部からの指示により、前記第１バンクメモリ空間の配置を変更した場合、または外部から前記第３バンクメモリ空間へのアクセスが発生した場合、前記転送部にＤＭＡ転送を実行させることを特徴とする請求項１に記載のＤＭＡコントローラ。
【請求項３】
外部から前記第３バンクメモリ空間がアクセス可能な状態である場合、外部に割り込みを通知する通知部を具備する、
ことを特徴とする請求項１または請求項２に記載のＤＭＡコントローラ。
【請求項４】
外部から前記インターフェース部を介して、前記第３バンクメモリ空間へのアクセスが発生した場合、
前記第３バンクメモリ空間がアクセス可能になるまで外部にウェイトを返す、
ことを特徴とする請求項１または請求項２に記載のＤＭＡコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＤＭＡコントローラの技術に関する。
【背景技術】
【０００２】
一般的な３２ビットＣＰＵは、アドレスバスが３２ビットであるため、４Ｇバイト空間までしか直接アクセスできない。したがって、４Ｇバイトを超える空間に配置されたＲＯＭやＤＤＲメモリは、アクセス可能な４Ｇバイト空間内にバンクメモリとして配置して間接的にアクセスするしか方法がない。
【０００３】
例えば、３２ビットＣＰＵが直接アクセス可能なメモリ空間が、０００＿００００＿００００ｈから０００＿ＦＦＦＦ＿ＦＦＦＦｈまでの４Ｇバイト空間に割り当てられ、ＲＯＭが１００＿００００＿００００ｈから１ＦＦ＿ＦＦＦＦ＿ＦＦＦＦｈまでの１Ｔバイト空間に割り当てられていたとする。そして、バンクメモリは、前記４Ｇバイト空間内の０００＿Ｃ０００＿００００ｈから０００＿ＦＦＦＦ＿ＦＦＦＦｈまでの１Ｇバイト空間に設定されていたとする。この場合には、１ＴバイトのＲＯＭを１Ｇバイト単位に連続する１０２４個の領域に分け、この領域ごとにアクセスする必要がある。
【０００４】
例えば、ＣＰＵがバンクを０に設定し、バンクメモリのＣ０００＿００００ｈからＦＦＦＦ＿ＦＦＦＦｈまで（上位９ビットである０００ｈを省略して記載する）にアクセスする場合には、ＣＰＵは、Ｃ０００＿００００ｈからＦＦＦＦ＿ＦＦＦＦｈの３２ビットのうちの上位２ビットを除く３０ビットで表されるアドレスと、バンクレジスタとして用いる上位１１ビット（１００ｈ＋下位２ビット）とを組み合わせて、１００＿００００＿００００ｈから１００＿３ＦＦＦ＿ＦＦＦＦｈまでのアドレスに変換し、１ＴバイトのＲＯＭにアクセスを行う。同様に、ＣＰＵがバンクを１に設定し、バンクメモリのＣ０００＿００００ｈからＦＦＦＦ＿ＦＦＦＦｈまでにアクセスする場合は、１００＿４０００＿００００ｈから１００＿７ＦＦＦ＿ＦＦＦＦｈまでのアドレスに変換し、１ＴバイトのＲＯＭにアクセスを行う。このようにして、バンクメモリを切り替えながらアクセスすることにより、３２ビットＣＰＵであっても、１ＴバイトのＲＯＭにアクセスすることが可能になる。
【０００５】
一方、ＤＤＲメモリを用いる場合には次のような処理が行われる。ＤＤＲメモリを用いる場合も、３２ビットＣＰＵが直接アクセス可能なメモリ空間が、０００＿００００＿００００ｈから０００＿ＦＦＦＦ＿ＦＦＦＦｈまでの４Ｇバイト空間に割り当てられ、ＲＯＭが１００＿００００＿００００ｈから１ＦＦ＿ＦＦＦＦ＿ＦＦＦＦｈまでの１Ｔバイト空間に割り当てられていたとする。また、ＤＤＲメモリが００４＿００００＿００００ｈから００５＿ＦＦＦＦ＿ＦＦＦＦｈまでの８Ｇバイト空間に割り当てられ、ＣＰＵのＲＯＭに対応バンクメモリが、０００＿Ｃ０００＿００００ｈから０００＿ＦＦＦＦ＿ＦＦＦＦｈまでの１Ｇバイト空間に設定されていたとする。さらに、ＣＰＵのＤＤＲメモリに対応するバンクメモリが、０００＿８０００＿００００ｈから０００＿ＢＦＦＦ＿ＦＦＦＦｈまでの１Ｇバイト空間に設定されていたとする。
【０００６】
１ＴバイトのＲＯＭは１Ｇバイト単位に連続する１０２４個の領域に分け、この領域ごとにアクセスする必要がある。この領域を仮想化元のバンクメモリとする。また、ＤＤＲメモリの８Ｇバイト空間は１Ｇバイト単位に連続する８個の領域に分け、この領域ごとにアクセスする必要がある。この領域を仮想化先のバンクメモリとする。この例では、ＲＯＭにおける仮想化元のバンクメモリにアクセスがあった場合、この仮想化元のバンクメモリから８Ｇバイト分の空間のデータを、仮想化先のＤＤＲメモリのバンクメモリにＤＭＡコントローラによりＤＭＡ転送する。そして、ＣＰＵのバンクメモリを切り替えながら、８Ｇバイト分の仮想化先のＤＤＲメモリのバンクメモリにアクセスする。ＣＰＵがアクセスしようとする仮想化元のＲＯＭのバンクメモリのアドレス空間が、仮想化先のＤＤＲメモリのバンクメモリに対応していない場合には、当該アドレス空間から８Ｇバイト分の空間のデータを、仮想化元のＲＯＭのバンクメモリから仮想化先のＤＤＲメモリのバンクメモリにＤＭＡ転送し、ＣＰＵのバンクメモリを切り替えながら、８Ｇバイト分の仮想化先のＤＤＲメモリのバンクメモリにアクセスする。
【０００７】
例えば、ＣＰＵがバンクを０に設定し、ＣＰＵのＲＯＭに対応するバンクメモリのＣ０００＿００００ｈからＦＦＦＦ＿ＦＦＦＦｈまで（上位９ビットである０００ｈを省略して記載する）にアクセスする場合には、ＣＰＵは、Ｃ０００＿００００ｈの３２ビットのうちの上位２ビットを除く３０ビットで表されるアドレスと、バンクレジスタとして用いる上位１１ビット（１００ｈ＋下位２ビット）とを組み合わせて、１００＿００００＿００００ｈを仮想化元のバンクメモリの読み取り開始アドレスとする。また、ＣＰＵは、１００＿００００＿００００ｈから８Ｇバイト分のメモリ空間のエンドアドレスとして１０１＿ＦＦＦＦ＿ＦＦＦＦｈを算出し、仮想化元のバンクメモリの読み取り終了アドレスとする。さらにＣＰＵは、仮想化先のＤＤＲメモリのバンクメモリの書き込み開始アドレスとして、００４＿００００＿００００ｈを設定する。そして、ＣＰＵは、仮想化元のバンクメモリの読み取り開始アドレス、仮想化元のバンクメモリの読み取り終了アドレス、及び仮想化先のＤＤＲメモリのバンクメモリの書き込み開始アドレスをＤＭＡコントローラに受け渡し、ＤＭＡコントローラによるＤＭＡ転送を実行させる。その結果、１００＿００００＿００００ｈから１０１＿ＦＦＦＦ＿ＦＦＦＦｈまでの仮想化元のＲＯＭのバンクメモリにおける８Ｇバイト空間分のデータが、００４＿００００＿００００ｈから００５＿ＦＦＦＦ＿ＦＦＦＦｈまでの仮想化先のＤＤＲメモリにおけるバンクメモリの８Ｇバイト空間に転送される。
【０００８】
仮想化先のＤＤＲメモリにおけるバンクメモリへのＤＭＡ転送が終了すると、ＣＰＵは、ＣＰＵのＲＯＭに対応するバンクメモリのＣ０００＿００００ｈからＦＦＦＦ＿ＦＦＦＦｈまでのアドレスを、ＣＰＵのＤＤＲメモリに対応するバンクメモリの８０００＿００００ｈから０００＿ＢＦＦＦ＿ＦＦＦＦまでのアドレスに変換し、ＣＰＵのＤＤＲメモリに対応するバンクメモリを切り替えながら、８Ｇバイトの仮想化先のＤＤＲメモリのバンクメモリにアクセスを行う。このようにすれば、ＣＰＵのＲＯＭに対応するバンクメモリを切り替える場合でも、該当するアドレス空間のデータが仮想化先のＤＤＲメモリのバンクメモリに既に転送済みならば、ＣＰＵのＤＤＲメモリに対応するバンクメモリを切り替えるだけで、高速なＤＤＲメモリから必要なデータを読み取ることが可能となる。
【０００９】
ＣＰＵがアクセスしようとする仮想化元のＲＯＭのバンクメモリのアドレス空間が、仮想化先のＤＤＲメモリのバンクメモリに転送したアドレス空間に対応していない場合には、仮想化元のＲＯＭのバンクメモリから仮想化先のＤＤＲメモリのバンクメモリへのＤＭＡ転送を行い、転送が完了した後に、ＣＰＵのＤＤＲメモリに対応するバンクメモリを切り替えながら、８Ｇバイトの仮想化先のＤＤＲメモリのバンクメモリにアクセスを行う。このような方法は、例えば、特許文献１に記載されている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開昭５７−１０５０５８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、バンクメモリを切り替えながらＲＯＭに直接アクセスする方式では、ＲＯＭが低速な上に、バンクメモリを切り替えながらアクセスするために、システム全体のパフォーマンスが低下することがあった。
【００１２】
また、ＤＭＡ転送で低速なＲＯＭの仮想化元のバンクメモリから高速なＤＤＲメモリの仮想化先のバンクメモリにデータをコピーして、高速なＤＤＲメモリのバンクメモリを切り替えながらアクセスする方式では、ＲＯＭに比べてＤＤＲメモリは高速なので、アクセス速度は改善されるが、バスマスタであるＣＰＵが、バンクメモリ切り替えによる複雑なアドレス計算を行う必要があった。
【００１３】
本発明は、上述した事情に鑑みてなされたもので、その目的の一つは、バスマスタによる複雑なアドレス計算を必要とすることなく、システム全体のパフォーマンスの低下を抑えるＤＭＡコントローラを提供することにある。
【課題を解決するための手段】
【００１４】
上記目的を達成するために本発明の一態様に係るＤＭＡコントローラは、同じ大きさの第１、第２及び第３バンクメモリ空間が配置されたアドレス空間にアクセス可能であり、前記第１バンクメモリ空間に配置された第１記憶装置と、前記第２バンクメモリ空間に配置された第２記憶装置とに接続され、前記第１バンクメモリ空間に属する前記第１記憶装置内のデータを、前記第２バンクメモリ空間内の前記第２記憶装置へＤＭＡ転送する転送部と、外部から前記第３バンクメモリ空間内の一のアドレスにアクセスがあった場合、当該一のアドレスを前記第２バンクメモリ空間内の一のアドレスに変換し、前記第２記憶装置の当該一のアドレスのデータを出力するインターフェース部と、を具備することを特徴とする。
【００１５】
本発明によれば、転送部は、第１バンクメモリ空間に属する第１記憶装置内のデータを、第２バンクメモリ空間内の第２記憶装置へＤＭＡ転送する。外部から第３バンクメモリ空間内の一のアドレスにアクセスがあった場合、インターフェース部は、当該一のアドレスを第２バンクメモリ空間内の一のアドレスに変換し、第２記憶装置の当該一のアドレスのデータを出力する。したがって、第３バンクメモリ空間へのアクセスを行う場合に、外部において、アドレス変換のための複雑な計算を行うことなく、第１記憶装置の第１バンクメモリ空間から、第２記憶装置の第２バンクメモリ空間へＤＭＡ転送が行われる。その結果、メモリの読み出しにおけるパフォーマンスの低下が防止される。
【００１６】
前記本発明の一態様において、前記インターフェース部は、外部からの指示により、前記第１バンクメモリ空間の配置を変更した場合、または外部から前記第３バンクメモリ空間へのアクセスが発生した場合、前記転送部にＤＭＡ転送を実行させることが好ましい。この場合には、外部からアクセスしようとする範囲のデータが的確に第２バンクメモリから読み出される。
【００１７】
前記本発明の一態様において、外部から前記第３バンクメモリ空間がアクセス可能な状態である場合、外部に割り込みを通知する通知部とを備えていてもよい。この場合には、外部から第３バンクメモリ空間へのアクセスを行う場合に、第３バンクメモリ空間がアクセス可能な状態であることを適宜のタイミングで検知することができる。
【００１８】
また、前記本発明の一態様において、外部から前記インターフェース部を介して、前記第３バンクメモリ空間へのアクセスが発生した場合、前記第３バンクメモリ空間がアクセス可能になるまで外部にウェイトを返すようにしてもよい。この場合には、外部から第３バンクメモリ空間へのアクセスを行う場合に、第３バンクメモリがアクセス可能な状態であることを適宜のタイミングで検知することができる。
【図面の簡単な説明】
【００１９】
【図１】第１実施形態に係るメモリシステムの構成を示すブロック図である。
【図２】同システムにおけるＣＰＵから見たメモリ空間を示す図である。
【図３】同システムにおける動作を示すシーケンス図である。
【図４】第２実施形態に係るメモリシステムの構成を示すブロック図である。
【図５】比較例に係るメモリシステムの構成を示すブロック図である。
【図６】比較例に係るＣＰＵから見たメモリ空間を示す図である。
【発明を実施するための形態】
【００２０】
以下、本発明の実施形態について図面を参照して説明する。
図１は、第１実施形態に係るメモリシステム１ａの概略構成を示すブロック図である。
この図に示されるように、メモリシステム１ａは、バスマスタの一例としての３２ビットのＣＰＵ１０と、バンクメモリの対象となる第１記憶装置としてのＲＯＭ２０と、ＤＭＡコントローラ３０と、バンクメモリを仮想化するための第２記憶装置としてのＤＤＲ（Double Date Rate）メモリ４０を備えている。
【００２１】
図２に示すように、メモリシステム１ａの全領域は２Ｔバイトのメモリ空間を有しており、ＲＯＭ２０は、１００＿００００＿００００ｈから１ＦＦ＿ＦＦＦＦ＿ＦＦＦＦｈまでの１Ｔバイトのメモリ空間に割り当てられている。また、ＤＤＲメモリ４０は、００５＿００００＿００００ｈから００６＿ＦＦＦＦ＿ＦＦＦＦｈまでの８Ｇバイトのメモリ空間に割り当てられている。さらに、ＣＰＵ１０は、０００＿００００＿００００ｈから０００＿ＦＦＦＦ＿ＦＦＦＦｈまでの４Ｇバイトのメモリ空間に直接アクセスが可能となっている。
【００２２】
本実施形態においては、図２に示すように、ＣＰＵ１０がアクセス可能なＣ０００＿００００ｈからＦＦＦＦ＿ＦＦＦＦｈの１Ｇバイトを、ＣＰＵのバンクメモリとして使用する。当該ＣＰＵのバンクメモリの仮想化先は、８ＧバイトのＤＤＲメモリ４０中の１Ｇバイトの領域である。なお、当該１Ｇバイトの領域は、ＣＰＵ１０が設定する。詳しくは後述する。以下、ＤＤＲメモリ４０における前記１Ｇバイト領域を仮想化先のバンクメモリとする。
【００２３】
３２ビットのＣＰＵ１０が１ＴバイトのＲＯＭ２０にアクセスするには、１Ｔバイト÷１Ｇバイト＝１０２４より、１ＴバイトのＲＯＭ２０を１Ｇバイト単位に連続する１０２４個の領域に分け、当該領域ごとにアクセスする必要がある。前記１０２４個の領域はＣＰＵ１０が設定する。詳しくは後述する。以下、ＲＯＭ２０における前記１０２４個の領域を仮想化元のバンクメモリと以下称する。
【００２４】
本実施形態では、ＣＰＵ１０は、０〜３ＦＦｈまでの１０２４の仮想化元のバンクメモリを切り替えながら、ＲＯＭ２０へのアクセスを行う。
【００２５】
ＤＭＡコントローラ３０は、第１アドレス空間情報記憶部３００と、バンク選択情報記憶部３０１と、第２アドレス空間情報記憶部３０２と、アドレス変換部３０３と、転送部３０４と、第１インターフェース３０８とを備えている。
【００２６】
第１アドレス空間情報記憶部３００は、仮想化元のバンクメモリの先頭アドレスと、仮想化元のバンクメモリのアドレス空間の大きさとを含む仮想化元のバンクメモリのアドレス空間情報を記憶する記憶部である。本実施形態では、一例として、仮想化元のバンクメモリの先頭アドレスとしての１００＿００００＿００００ｈと、１Ｔバイトのアドレス空間の大きさとがＣＰＵ１０の指示により第１アドレス空間情報記憶部３００に記憶される。
【００２７】
バンク選択情報記憶部３０１は、バンク選択情報を記憶する記憶部である。本実施形態では、上述したように、０〜３ＦＦｈまでの１０２４の仮想化元のバンクメモリのうちのいずれかがＣＰＵ１０の指示でバンク選択情報記憶部３０１に記憶される。
【００２８】
第２アドレス空間情報記憶部３０２は、仮想化先のバンクメモリの先頭アドレスと、仮想化先のバンクメモリのアドレス空間の大きさとを含む仮想化先のバンクメモリのアドレス空間情報を記憶する記憶部である。本実施形態では、一例として、仮想化先のバンクメモリの先頭アドレスとしての００５＿００００＿００００ｈと、１Ｇバイトの仮想化先のバンクメモリのアドレス空間の大きさとがＣＰＵ１０の指示で第２アドレス空間情報記憶部３０２に記憶される。
【００２９】
アドレス変換部３０３は、第１アドレス空間情報記憶部３００に記憶された仮想化元のバンクメモリのアドレス空間情報と、バンク選択情報記憶部３０１に記憶されたバンク選択情報と、第２アドレス空間情報記憶部３０２に記憶された仮想化先のバンクメモリのアドレス空間情報に基づいてアドレス変換を行い、仮想化元のバンクメモリ及び仮想化先のバンクメモリにアクセスするためのアドレスを出力する。
【００３０】
転送部３０４は、仮想化元のバンクメモリから読み出したデータを仮想化先のバンクメモリに転送して書き込むと共に、仮想化先のバンクメモリから読み出したデータを第１インターフェース３０８に転送する。第１インターフェース３０８は、メモリシステム１ａの全アドレス空間へのＣＰＵ１０からのアクセスを受け付けることが可能なインターフェースである。ＣＰＵ１０がいずれかの仮想化元のバンクメモリを選択し、０００＿Ｃ０００＿００００ｈから０００＿ＦＦＦＦ＿ＦＦＦＦｈまでの１ＧバイトのＣＰＵ１０のバンクメモリ空間にアクセスすると、対応する仮想化元のバンクメモリの１Ｇバイトのメモリ空間に記憶されたデータが、転送部３０４によって仮想化先のバンクメモリの１Ｇバイトのメモリ空間に転送される。さらに、転送部３０４によって仮想化先のバンクメモリの１Ｇバイトのメモリ空間からデータが読み取られ、第１インターフェース３０８を介して、ＣＰＵ１０に出力される。したがって、ＣＰＵ１０は仮想化元のバンクメモリである低速なＲＯＭ２０にアクセスを行うが、実際には仮想化先のバンクメモリである高速なＤＤＲメモリ４０からデータを読み出すことが可能となる。
【００３１】
転送部３０４は、第２インターフェース３０５、一時記憶部３０６、及び第３インターフェース３０７を含む。第２インターフェース３０５は、メモリシステム１ａの全アドレス空間にアクセスすることができ、ＲＯＭ２０からデータを読み出すインターフェースである。本実施形態では、第２インターフェース３０５は、０〜３ＦＦｈまでの仮想化元のバンクメモリを記憶するレジスタを含んでいる。
【００３２】
一時記憶部３０６は、第２インターフェース３０５を介してＲＯＭ２０から読み出したデータを一時的に記憶する。また、一時記憶部３０６に一時的に記憶されたデータは、第３インターフェース３０７によって読み出され、ＤＤＲメモリ４０に書き込まれる。また、第３インターフェース３０７によってＤＤＲメモリ４０から読み出されたデータは、一時記憶部３０６に一時的に記憶される。ＤＤＲメモリ４０から読み出され、一時記憶部３０６に一時的に記憶されたデータは、第１インターフェース３０８を介してＣＰＵ１０によって読み取られる。本実施形態では、一時記憶部３０６の容量は１Ｋバイトに設定されており、仮想化元のバンクメモリであるＲＯＭ２０から仮想化先のバンクメモリであるＤＤＲメモリ４０へのデータ転送は一時記憶部３０６の１Ｋバイトのメモリを使用して複数回ＤＭＡ転送することで実現される。なお、一時記憶部３０６のメモリ容量が大きいほどＤＭＡ転送の回数が減るため、メモリシステム１ａのメモリアクセスにおけるパフォーマンスを向上させることができる。
【００３３】
第３インターフェース３０７は、メモリシステム１ａの全アドレス空間にアクセスすることができ、ＤＤＲメモリ４０に対してデータを書き込むと共に、ＤＤＲメモリ４０からデータを読み出すインターフェースである。
【００３４】
次に、本実施形態のメモリシステム１ａにおけるデータ処理の一例として、ＣＰＵ１０が１００＿００００＿００００ｈ番地のデータを受け取る処理について、図２のメモリ空間図及び図３のシーケンス図を参照しつつ説明する。
図３に示すように、ＣＰＵ１０は、仮想化元のバンクメモリのアドレス空間情報として、ＲＯＭ２０の先頭アドレスである１００＿００００＿００００ｈと、ＲＯＭ２０のアドレス空間の大きさである１ＴバイトをＤＭＡコントローラ３０に設定する（ステップＳ１０）。ＤＭＡコントローラ３０においては、ＲＯＭ２０の先頭アドレスである１００＿００００＿００００ｈと、ＲＯＭ２０のアドレス空間の大きさである１Ｔバイトは、仮想化元のバンクメモリのアドレス空間情報として第１アドレス空間情報記憶部３００に記憶される。
【００３５】
次に、ＣＰＵ１０は、仮想化先のバンクメモリのアドレス空間情報として、ＤＤＲメモリ４０の先頭アドレスである００５＿００００＿００００ｈと、仮想化先のバンクメモリのアドレス空間の大きさである１ＧバイトをＤＭＡコントローラ３０に設定する（ステップＳ１１）。ＤＭＡコントローラ３０においては、ＤＤＲメモリ４０の先頭アドレスである００５＿００００＿００００ｈと、仮想化先のバンクメモリのアドレス空間の大きさである１Ｇバイトは、仮想化先のバンクメモリのアドレス空間情報として第２アドレス空間情報記憶部３０２に記憶される。
【００３６】
ＤＭＡコントローラ３０のアドレス変換部３０３は、仮想化元のバンクメモリであるＲＯＭ２０の全アドレス空間の大きさである１Ｔバイトを、仮想化先のバンクメモリのアドレス空間の大きさである１Ｇバイトで除算し、その結果を転送部３０４に出力する。したがって、転送部３０４は、仮想化元のバンクメモリのバンク数が１０２４であることを認識する（ステップＳ２０）。
【００３７】
ＣＰＵ１０は、仮想化元のバンクメモリのバンク選択情報として、バンク「０」をＤＭＡコントローラ３０に設定する（ステップＳ１２）。ＤＭＡコントローラ３０においては、バンク選択情報としてのバンク「０」は、バンク選択情報記憶部３０１に記憶される。
【００３８】
ＣＰＵ１０が、ＣＰＵ１０のバンクメモリであるＣ０００_００００ｈにアクセスすると、ＤＭＡコントローラ３０のアドレス変換部３０３は、Ｃ０００＿００００ｈからＦＦＦＦ＿ＦＦＦＦｈの３２ビットのうちの上位２ビットを除く３０ビットで表されるアドレスと、バンク選択情報記憶部３０１に記憶されたバンクの番号である「０」に対応する上位１１ビット（１００ｈ＋下位２ビット）とを組み合わせて、１００＿００００＿００００ｈから１００＿３ＦＦＦ＿ＦＦＦＦｈまでのアドレスに変換し、転送部３０４に出力する。したがって、転送部３０４は、１００＿００００＿００００ｈ番地から１Ｇバイトの領域がアクセスする仮想化元のバンクメモリであることを認識する（ステップＳ２１）。
【００３９】
ＤＭＡコントローラ３０は、ＤＭＡ転送を制御するレジスタを内部に有している。ＣＰＵ１０は、ＤＭＡコントローラ３０内のレジスタであるバンクメモリイネーブルに１をセットする（ステップＳ１３）。ＤＭＡコントローラ３０の転送部３０４は、ＲＯＭ２０の１００＿００００＿００００ｈから１Ｇバイトの仮想化元のバンクメモリ領域のデータを第２インターフェース３０５によって読み出す。第２インターフェース３０５によって読み出したデータは一時記憶部３０６に一時的に記憶され、第３インターフェース３０７によってＤＤＲメモリ４０の００５＿００００＿００００ｈ番地から１Ｇバイトの仮想化先のバンクメモリ領域にＤＭＡ転送する（ステップＳ２２）。
【００４０】
ＤＭＡコントローラ３０は、ＤＭＡ転送が完了すると、ＤＭＡコントローラ３０の内部にあるレジスタであるバンクメモリレディフラグを１にセットし、ＣＰＵ１０に対して割り込みを発生する。したがって、ＤＭＡコントローラ３０は通知部としても機能する。ＣＰＵ１０は、バンクメモリイネーブルを１にセットした後は、バンクメモリレディフラグが１にセットされるまで待機している（ステップＳ１４：ＮＯ）。そして、ＣＰＵ１０は、割り込みによってバンクメモリレディフラグが１にセットされたことを検知すると（ステップＳ１４：ＹＥＳ）、ＲＯＭ２０の仮想化元のバンクメモリにおけるバンク「０」の先頭番地に対応する０００＿Ｃ０００＿００００ｈ番地にアクセスする（ステップＳ１５）。
【００４１】
ＤＭＡコントローラ３０の転送部３０４は、第１インターフェース３０８を介して、０００＿Ｃ０００＿００００ｈ番地へのアクセスがあったことを検出すると、一時記憶部３０６にＣＰＵ１０のアクセス対象のデータが記憶されているかどうかを判断する（ステップＳ２４）。
【００４２】
一時記憶部３０６にＣＰＵ１０のアクセス対象のデータが記憶されていない場合には（ステップＳ２４：ＹＥＳ）、転送部３０４は、ＤＤＲメモリ４０の００５＿００００＿００００ｈ番地から、一時記憶部３０６のサイズである１Ｋバイト分のデータを読み出し、一時記憶部３０６に格納する（ステップＳ２５）。転送部３０４は、一時記憶部３０６に格納したデータを第１インターフェース３０８を介してＣＰＵ１０に返す（ステップＳ２６）。その結果、ＣＰＵ１０は０００＿Ｃ０００＿００００ｈ番地にアクセスすることにより、仮想化元のバンクメモリである低速なＲＯＭ２０の１００＿００００＿００００ｈ番地におけるデータを、仮想化先のバンクメモリである高速なＤＤＲメモリ４０の００５＿００００＿００００ｈ番地のデータとして受け取る（ステップＳ１６）。
【００４３】
一時記憶部３０６にデータが格納されている場合には（ステップＳ２４：ＮＯ）、転送部３０４は、一時記憶部３０６に格納したデータを第１インターフェース３０８を介してＣＰＵ１０に返す（ステップＳ２６）。その結果、ＣＰＵ１０は０００＿Ｃ０００＿００００ｈ番地からデータを受け取る（ステップＳ１６）。つまり、ＣＰＵ１０は０００＿Ｃ０００＿００００ｈ番地にアクセスすることにより、仮想化元のバンクメモリである低速なＲＯＭ２０の１００＿００００＿００００ｈ番地におけるデータを受け取る。
【００４４】
以下、同様の処理を繰り返すことにより、ＣＰＵ１０は、仮想化元のバンクメモリを切り替えながらＣＰＵ１０のバンクメモリ空間にアクセスすることにより、低速なＲＯＭ２０に記憶されたデータを、高速なＤＤＲメモリ４０から読み出すことができる。ＲＯＭ２０からデータを読み出す際のアドレスの変換処理と、ＤＤＲメモリ４０にデータを書き込む際のアドレスの変換処理は、ＤＭＡコントローラ３０により行われるので、ＣＰＵ１０は、複雑な計算を行うことなく、メモリアクセスにおけるパフォーマンスを向上させることができる。
【００４５】
特に、一時記憶部３０６に蓄積されたデータがＣＰＵ１０のアクセス対象である場合には、ＤＭＡコントローラ３０の転送部３０４は、ＤＤＲメモリ４０にアクセスすることなく、一時記憶部３０６に蓄積されたデータをＣＰＵ１０に返すので、さらに高速なアクセスが可能になっている。
【００４６】
次に、図５及び図６を参照しつつ、比較例について説明する。図５は比較例におけるメモリシステム１００の構成を示すブロック図である。図６は比較例におけるメモリ空間を示す図である。
図５に示すように、比較例のメモリシステム１００は、バスマスタとしての３２ビットのＣＰＵ１０と、ＲＯＭ２０と、ＤＤＲメモリ４０と、ＤＭＡコントローラ４００とを備えている。３２ビットのＣＰＵ１０は、アドレスバスが３２ビットであるため、４Ｇバイト空間までしか直接にアクセスすることはできない。したがって、４Ｇバイトを超える空間にアクセスするためには、例えば、４Ｇバイト空間の中の０００＿Ｃ０００＿００００ｈから０００＿ＦＦＦＦ＿ＦＦＦＦｈの１ＧバイトをＲＯＭ２０のバンクメモリの空間に割り当て、バンクを切り替えながら、ＲＯＭ２０にアクセスを行う。
【００４７】
例えば、３２ビットＣＰＵが直接アクセス可能なメモリ空間が、０００＿００００＿００００ｈから０００＿ＦＦＦＦ＿ＦＦＦＦｈまでの４Ｇバイト空間に割り当てられ、ＲＯＭが１００＿００００＿００００ｈから１ＦＦ＿ＦＦＦＦ＿ＦＦＦＦｈまでの１Ｔバイト空間に割り当てられていたとする。そして、バンクメモリは、前記４Ｇバイト空間内の０００＿Ｃ０００＿００００ｈから０００＿ＦＦＦＦ＿ＦＦＦＦｈまでの１Ｇバイト空間に設定されていたとする。この場合には、１ＴバイトのＲＯＭを１Ｇバイト単位に連続する１０２４個の領域に分け、この領域ごとにアクセスする必要がある。
【００４８】
例えば、ＣＰＵがバンクを０に設定し、バンクメモリのＣ０００＿００００ｈからＦＦＦＦ＿ＦＦＦＦｈまで（上位９ビットである０００ｈを省略して記載する）にアクセスする場合には、ＣＰＵは、Ｃ０００＿００００ｈからＦＦＦＦ＿ＦＦＦＦｈの３２ビットのうちの上位２ビットを除く３０ビットで表されるアドレスと、バンクレジスタとして用いる上位１１ビット（１００ｈ＋下位２ビット）とを組み合わせて、１００＿００００＿００００ｈから１００＿３ＦＦＦ＿ＦＦＦＦｈまでのアドレスに変換し、１ＴバイトのＲＯＭにアクセスを行う。同様に、ＣＰＵがバンクを１に設定し、バンクメモリのＣ０００＿００００ｈからＦＦＦＦ＿ＦＦＦＦｈまでにアクセスする場合は、１００＿４０００＿００００ｈから１００＿７ＦＦＦ＿ＦＦＦＦｈまでのアドレスに変換し、１ＴバイトのＲＯＭにアクセスを行う。このようにして、バンクメモリを切り替えながらアクセスすることにより、３２ビットＣＰＵであっても、１ＴバイトのＲＯＭにアクセスすることが可能になる。
したがって、この例では、ＲＯＭ２０にアクセスするための複雑なアドレス計算をＣＰＵ１０が行う必要があるだけでなく、低速なＲＯＭ２０からデータを読み出すので、メモリシステムにおけるパフォーマンスが低下してしまう。
【００４９】
また、別な方法としては、００４＿００００＿００００ｈから００５＿ＦＦＦＦ＿ＦＦＦＦｈまでの８Ｇバイト空間をＤＤＲメモリ４０に割り当て、仮想化先のバンクメモリとして用いる。また、ＣＰＵ１０のＤＤＲメモリに対応するバンクメモリは、０００＿８０００＿００００ｈから０００＿ＢＦＦＦ＿ＦＦＦＦｈまでの１Ｇバイト空間に割り当てる。
【００５０】
１ＴバイトのＲＯＭ２０は１Ｇバイト単位に連続する１０２４個の領域に分け、この領域ごとにアクセスする必要がある。この領域を仮想化元のバンクメモリとする。また、ＤＤＲメモリ４０の８Ｇバイト空間は１Ｇバイト単位に連続する８個の領域に分け、この領域ごとにアクセスする必要がある。この領域を仮想化先のバンクメモリとする。この例では、ＲＯＭ２０における仮想化元のバンクメモリにアクセスがあった場合、この仮想化元のバンクメモリから８Ｇバイト分の空間のデータを、仮想化先のＤＤＲメモリ４０のバンクメモリにＤＭＡコントローラ４００によりＤＭＡ転送する。そして、ＣＰＵ１０のＤＤＲメモリに対応するバンクメモリを切り替えながら、８Ｇバイト分の仮想化先のＤＤＲメモリ４０のバンクメモリにアクセスする。ＣＰＵ１０がアクセスしようとするＲＯＭ２０の仮想化元のバンクメモリのアドレス空間が、ＤＤＲメモリの仮想化先のバンクメモリに対応していない場合には、当該アドレス空間から８Ｇバイト分の空間のデータを、ＲＯＭ２０の仮想化元のバンクメモリからＤＤＲメモリ４０の仮想化先のバンクメモリにＤＭＡ転送し、ＣＰＵ１０のＤＤＲメモリに対応するバンクメモリを切り替えながら、８Ｇバイト分のＤＤＲメモリ４０の仮想化先のバンクメモリにアクセスする。
【００５１】
この例では、ＣＰＵ１０は、複雑なアドレス計算を行ってバンクを切り替えながら低速なＲＯＭ２０に対する読み出しアドレスを決定し、ＤＭＡコントローラ４００は、決定されたアドレスにアクセスしてデータを読み取ってＤＤＲメモリ４０にコピーする。そして、ＣＰＵ１０は、再び複雑なアドレス計算を行ってバンクを切り替えながら高速なＤＤＲメモリ４０からデータを読み出す。この例では、ＲＯＭ２０からＤＤＲメモリ４０にＤＭＡ転送し、高速なＤＤＲメモリ４０からデータを読み出すので、パフォーマンスは向上するが、ＲＯＭ２０に対する読み出しアドレスの計算と、ＤＤＲメモリ４０に対する書き込みアドレスおよび読み出しアドレスの計算をＣＰＵ１０が実行する必要があり、ＣＰＵ１０に対する負荷が大きくなってしまう。
【００５２】
以上のように、前記比較例と比較すると明らかなように、本実施形態によれば、ＤＭＡコントローラ３０が、仮想化元のバンクメモリの切り替え、または、ＣＰＵ１０のバンクメモリへのアクセスを検出すると、ＲＯＭ２０のアドレス空間から、ＤＤＲメモリ４０のアドレス空間へＤＭＡ転送を行うので、ＣＰＵ１０による複雑なアドレス計算を行うことなく、メモリアクセスにおけるパフォーマンスを向上させることができる。
【００５３】
次に、本発明の第２実施形態に係るメモリシステム１ｂについて説明する。第１実施形態に係るメモリシステム１ａでは、バスマスタとしてＣＰＵ１０のみを用いる場合について説明した。しかし、本実施形態では、ＤＭＡコントローラ３０が複数のＤＭＡチャネルを備えており、複数のバスマスタに対応可能となっている。
【００５４】
図４は、第２実施形態に係るメモリシステム１ｂの概略構成を示すブロック図である。図４に示すように、本実施形態のＤＭＡコントローラ３０は、第１チャネル３０−１〜第ｎチャネル３０−ｎの複数のチャネルを備えている。第１チャネル３０−１〜第ｎチャネル３０−ｎは、ＣＰＵなどの複数のバスマスタ１０−１〜１０−ｎと接続されている。なお、ＲＯＭ２０とＤＤＲメモリ４０については、ＤＭＡコントローラ３０の各チャネルについて共通となっている。
【００５５】
ＤＭＡコントローラ３０における第１チャネル３０−１〜第ｎチャネル３０−ｎの動作は、第１実施形態で説明したＤＭＡコントローラ３０の動作と同様である。また、ＤＭＡコントローラ３０における第１チャネル３０−１〜第ｎチャネル３０−ｎは、同時に独立したバンクメモリ空間にアクセス可能である。したがって、ＤＭＡコントローラ３０における第１チャネル３０−１〜第ｎチャネル３０−ｎは、仮想化元のバンクメモリの切り替え、または、バスマスタ１０−１〜１０−ｎの各々のバンクメモリ空間へのアクセスを検出すると、ＲＯＭ２０のアドレス空間から、ＤＤＲメモリ４０のアドレス空間へＤＭＡ転送を行う。したがって、ＣＰＵなどの複数のバスマスタ１０−１〜１０−ｎは、複雑なアドレス計算を行うことなく、メモリアクセスにおけるパフォーマンスを向上させることができる。
【００５６】
なお、本実施形態においては、転送部３０４がチャネルごとに設けられている場合について説明したが、転送部３０４については、第１チャネル３０−１〜第ｎチャネル３０−ｎに対して共通に用いるようにしてもよい。
【００５７】
上述した各実施形態においては、ＣＰＵのバンクメモリがアクセス可能であることを示すバンクメモリレディフラグが１にセットされたことを割り込みにより通知する場合について説明したが、本発明はこのような態様に限定されるものではない。例えば、ＣＰＵのバンクメモリがアクセス可能な状態ではない間にＣＰＵからＣＰＵのバンクメモリへのアクセスが発生した時に、アクセス可能になるまでウェイトをＣＰＵに返すようにしてもよい。
【００５８】
なお、上述した各実施形態においては、第１記憶装置として読み取り専用のＲＯＭを用いた場合について説明したが、第１記憶装置として読み取り及び書き込みが可能なメモリを用いてもよい。この場合には、第１記憶装置として読み取り及び書き込みが可能なメモリの状態を、仮想化先のバンクメモリに随時反映させるようにすればよい。
【符号の説明】
【００５９】
１ａ、１ｂ…メモリシステム、１０…ＣＰＵ、２０…ＲＯＭ、３０…ＤＭＡコントローラ、３０−１〜３０−ｎ…チャネル、４０…ＤＤＲメモリ、１００…メモリシステム、３００…第１アドレス空間情報記憶部、３０１…バンク選択情報記憶部、３０２…第２アドレス空間情報記憶部、３０３…アドレス変換部、３０４…転送部、３０５…第２インターフェース、３０６…一時記憶部、３０７…第３インターフェース、３０８…第１インターフェース。
【図１】
2016181216.tif 000003
【図２】
2016181216.tif 000004
【図３】
2016181216.tif 000005
【図４】
2016181216.tif 000006
【図５】
2016181216.tif 000007
【図６】
2016181216.tif 000008