(57)【要約】【課題】効率的なメモリアクセスを実現する。【解決手段】メモリアクセス装置は、読み出しデータのデータサイズ及びアドレス空間におけるアドレスに基づいて、第１及び第２メモリの少なくとも一方に対する読み出しアドレスを出力するアドレス出力部と、読み出しデータのデータサイズ及びアドレス空間におけるアドレスに基づいて、第１及び第２メモリの少なくとも一方に対して読み出し要求を出力するアクセス要求出力部と、読み出しデータのデータサイズに関する情報及びアドレスに関する情報を出力するデータ情報出力部と、読み出しアドレスと、読み出し要求とに応じて第１及び第２メモリの少なくとも一方から出力されるデータから、データサイズに関する情報及びアドレスに関する情報に基づいて読み出しデータを生成して出力する読み出しデータ出力部と、を備える。【選択図】図３
2008077418.tif 000002
【特許請求の範囲】
【請求項１】
第１及び第２メモリにアクセスするメモリアクセス装置であって、
読み出しデータのデータサイズ及びアドレス空間におけるアドレスに基づいて、前記第１及び第２メモリの少なくとも一方に対する読み出しアドレスを出力するアドレス出力部と、
前記読み出しデータの前記データサイズ及び前記アドレス空間における前記アドレスに基づいて、前記第１及び第２メモリの少なくとも一方に対して読み出し要求を出力するアクセス要求出力部と、
前記読み出しデータの前記データサイズに関する情報及び前記アドレスに関する情報を出力するデータ情報出力部と、
前記アドレス出力部から出力される前記読み出しアドレスと、前記アクセス要求出力部から出力される前記読み出し要求とに応じて前記第１及び第２メモリの少なくとも一方から出力されるデータから、前記データ情報出力部から出力される前記データサイズに関する情報及び前記アドレスに関する情報に基づいて前記読み出しデータを生成して出力する読み出しデータ出力部と、
を備えることを特徴とするメモリアクセス装置。
【請求項２】
請求項１に記載のメモリアクセス装置であって、
前記第１メモリには、前記アドレス空間における偶数アドレスのＮビット幅のデータが格納され、前記第２メモリには、前記アドレス空間における奇数アドレスのＮビット幅のデータが格納され、
前記アドレス出力部は、
前記読み出しデータの前記データサイズがＮビットである場合は、前記アドレス空間における前記アドレスに応じた前記読み出しアドレスを前記第１又は第２メモリに出力し、
前記読み出しデータの前記データサイズが２Ｎビットである場合は、前記アドレス空間における前記アドレスに応じた前記読み出しアドレスを前記第１及び第２メモリに出力し、
前記読み出しデータ出力部は、
前記読み出しデータの前記データサイズがＮビットである場合は、前記第１又は第２メモリから出力されるデータを、前記読み出しデータとして出力し、
前記読み出しデータの前記データサイズが２Ｎビットであり、前記アドレス空間における前記アドレスが偶数アドレスの場合は、前記第１メモリから出力されるデータを上位ビット、前記第２メモリから出力されるデータを下位ビットとして前記読み出しデータを生成して出力し、
前記読み出しデータの前記データサイズが２Ｎビットであり、前記アドレス空間における前記アドレスが奇数アドレスの場合は、前記第２メモリから出力されるデータを上位ビット、前記第１メモリから出力されるデータを下位ビットとして前記読み出しデータを生成して出力すること、
を特徴とするメモリアクセス装置。
【請求項３】
請求項１に記載のメモリアクセス装置であって、
前記アドレス出力部は、書き込みデータのデータサイズ及びアドレス空間におけるアドレスに基づいて、前記第１及び第２メモリの少なくとも一方に対する書き込みアドレスを出力し、
前記アクセス要求出力部は、前記書き込みデータの前記データサイズ及び前記アドレス空間における前記アドレスに基づいて、前記第１及び第２メモリの少なくとも一方に対して書き込み要求を出力し、
前記データ情報出力部は、前記書き込みデータの前記データサイズに関する情報及び前記アドレスに関する情報を出力し、
前記データ情報出力部から出力される前記データサイズに関する情報及び前記アドレスに関する情報に基づいて、前記第１及び第２メモリの少なくとも一方に前記書き込みデータを出力する書き込みデータ出力部を更に備えること、
を特徴とするメモリアクセス回路。
【請求項４】
請求項３に記載のメモリアクセス装置であって、
前記第１メモリには、前記アドレス空間における偶数アドレスのＮビット幅のデータが格納され、前記第２メモリには、前記アドレス空間における奇数アドレスのＮビット幅のデータが格納され、
前記アドレス出力部は、
前記書き込みデータの前記データサイズがＮビットである場合は、前記アドレス空間における前記アドレスに応じた前記書き込みアドレスを前記第１又は第２メモリに出力し、
前記書き込みデータの前記データサイズが２Ｎビットである場合は、前記アドレス空間における前記アドレスに応じた前記書き込みアドレスを前記第１及び第２メモリに出力し、
前記書き込みデータ出力部は、
前記書き込みデータの前記データサイズがＮビットであり、前記アドレス空間における前記アドレスが偶数アドレスの場合は、前記書き込みデータを前記第１メモリに出力し、
前記書き込みデータの前記データサイズがＮビットであり、前記アドレス空間における前記アドレスが奇数アドレスの場合は、前記書き込みデータを前記第２メモリに出力し、
前記書き込みデータの前記データサイズが２Ｎビットであり、前記アドレス空間にける前記アドレスが偶数アドレスの場合は、前記書き込みデータの上位Ｎビットを前記第１メモリに出力し、前記書き込みデータの下位Ｎビットを前記第２メモリに出力し、
前記書き込みデータの前記データサイズが２Ｎビットであり、前記アドレス空間にける前記アドレスが奇数アドレスの場合は、前記書き込みデータの上位Ｎビットを前記第２メモリに出力し、前記書き込みデータの下位Ｎビットを前記第１メモリに出力すること、
を特徴とするメモリアクセス装置。
【請求項５】
請求項３又は４に記載のメモリアクセス装置であって、
前記アドレス出力部から出力される前記書き込みアドレスが記憶される書き込みアドレス記憶部と、
前記書き込みデータ出力部から出力される前記書き込みデータが前記第１又は第２メモリに書き込まれる前に記憶される書き込みデータ記憶部と、
前記アドレス出力部から出力される前記読み出しアドレスと、前記書き込みアドレス記憶部に記憶されている前記書き込みアドレスとが異なる場合は、前記読み出しアドレスを前記第１又は第２メモリに出力するアドレス選択回路と、
を更に備え、
前記読み出しデータ出力部は、
前記アドレス出力部から出力される前記読み出しアドレスと、前記書き込みアドレス記憶部に記憶されている前記書き込みアドレスとが異なる場合は、前記第１又は第２メモリの少なくとも一方から出力されるデータから前記読み出しデータを生成して出力し、前記アドレス出力部から出力される前記読み出しアドレスと、前記書き込みアドレス記憶部に記憶されている前記書き込みアドレスとが同じである場合は、前記書き込みデータ記憶部に記憶されている前記書き込みデータを出力すること、
を特徴とするメモリアクセス装置。
【請求項６】
請求項１〜５の何れか一項に記載のメモリアクセス装置であって、
前記アドレス出力部は、クロックが一方の論理レベルから他方の論理レベルに変化する第１のタイミングで、前記読み出しアドレスを出力し、
前記アクセス要求出力部は、前記第１のタイミングの次に、前記クロックが前記一方の論理レベルから前記他方の論理レベルに変化する第２のタイミングで前記読み出し要求を出力すること、
を特徴とするメモリアクセス装置。
【請求項７】
請求項５に記載のメモリアクセス装置であって、
前記アドレス出力部は、クロックが一方の論理レベルから他方の論理レベルに変化する第１のタイミングで、前記書き込みアドレスを出力し、
前記アクセス要求部は、前記第１のタイミングの次に、前記クロックが前記一方の論理レベルから前記他方の論理レベルに変化する第２のタイミングで、前記アドレス出力部から出力される前記書き込みアドレスを前記アドレス記憶部に記憶させるとともに、前記書き込みデータ出力部から出力される前記書き込みデータを前記書き込みデータ記憶部に記憶させること、
を特徴とするメモリアクセス装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリアクセス装置に関する。
【背景技術】
【０００２】
ＤＳＰ（Digital Signal Processor）等の処理回路では、データ処理を高速に行うために、複数のメモリを内蔵する場合がある。例えば、特許文献１に開示されたＤＳＰは、データを格納するためのメモリを２つ備えており、これら２つのメモリに同時にアクセス可能とするために、アドレスバス及びデータバスが２組設けられている。そして、このようなＤＳＰでは、例えば乗累算器（ＭＡＣ：Multiply Accumulator）に入力される２つのデータを、２つのメモリから２つのバスを経由して同時に読み出すことにより、演算処理の高速化を実現している。
【特許文献１】特開２００６−１９０３８９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ＤＳＰにおける演算処理を更に高速化するための手法として、乗累算器を複数設けることが考えられる。ところが、例えば、前述したように２つのデータを同時に読み出すことが可能なＤＳＰにおいて乗累算器を２つ設けたとしても、メモリから同時に読み出すことが可能なデータは２つである。そのため、２つの乗累算器での演算を同時に行おうとしても、一方の乗累算器の入力データの読み出しは、他方の乗累算器の入力データの読み出し完了後にしか行うことができず、ＤＳＰにおける演算処理を効果的に高速化することができない。
【０００４】
本発明は上記課題を鑑みてなされたものであり、効率的なメモリアクセスを実現可能なメモリアクセス装置を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成するため、本発明のメモリアクセス装置は、第１及び第２メモリにアクセスするメモリアクセス装置であって、読み出しデータのデータサイズ及びアドレス空間におけるアドレスに基づいて、前記第１及び第２メモリの少なくとも一方に対する読み出しアドレスを出力するアドレス出力部と、前記読み出しデータの前記データサイズ及び前記アドレス空間における前記アドレスに基づいて、前記第１及び第２メモリの少なくとも一方に対して読み出し要求を出力するアクセス要求出力部と、前記読み出しデータの前記データサイズに関する情報及び前記アドレスに関する情報を出力するデータ情報出力部と、前記アドレス出力部から出力される前記読み出しアドレスと、前記アクセス要求出力部から出力される前記読み出し要求とに応じて前記第１及び第２メモリの少なくとも一方から出力されるデータから、前記データ情報出力部から出力される前記データサイズに関する情報及び前記アドレスに関する情報に基づいて前記読み出しデータを生成して出力する読み出しデータ出力部と、を備えることとする。
【０００６】
また、前記メモリアクセス装置において、前記第１メモリには、前記アドレス空間における偶数アドレスのＮビット幅のデータが格納され、前記第２メモリには、前記アドレス空間における奇数アドレスのＮビット幅のデータが格納され、前記アドレス出力部は、前記読み出しデータの前記データサイズがＮビットである場合は、前記アドレス空間における前記アドレスに応じた前記読み出しアドレスを前記第１又は第２メモリに出力し、前記読み出しデータの前記データサイズが２Ｎビットである場合は、前記アドレス空間における前記アドレスに応じた前記読み出しアドレスを前記第１及び第２メモリに出力し、前記読み出しデータ出力部は、前記読み出しデータの前記データサイズがＮビットである場合は、前記第１又は第２メモリから出力されるデータを、前記読み出しデータとして出力し、前記読み出しデータの前記データサイズが２Ｎビットであり、前記アドレス空間における前記アドレスが偶数アドレスの場合は、前記第１メモリから出力されるデータを上位ビット、前記第２メモリから出力されるデータを下位ビットとして前記読み出しデータを生成して出力し、前記読み出しデータの前記データサイズが２Ｎビットであり、前記アドレス空間における前記アドレスが奇数アドレスの場合は、前記第２メモリから出力されるデータを上位ビット、前記第１メモリから出力されるデータを下位ビットとして前記読み出しデータを生成して出力することとすることができる。
【０００７】
また、前記メモリアクセス装置において、前記アドレス出力部は、書き込みデータのデータサイズ及びアドレス空間におけるアドレスに基づいて、前記第１及び第２メモリの少なくとも一方に対する書き込みアドレスを出力し、前記アクセス要求出力部は、前記書き込みデータの前記データサイズ及び前記アドレス空間における前記アドレスに基づいて、前記第１及び第２メモリの少なくとも一方に対して書き込み要求を出力し、前記データ情報出力部は、前記書き込みデータの前記データサイズに関する情報及び前記アドレスに関する情報を出力し、前記データ情報出力部から出力される前記データサイズに関する情報及び前記アドレスに関する情報に基づいて、前記第１及び第２メモリの少なくとも一方に前記書き込みデータを出力する書き込みデータ出力部を更に備えることとすることもできる。
【０００８】
また、前記メモリアクセス装置において、前記第１メモリには、前記アドレス空間における偶数アドレスのＮビット幅のデータが格納され、前記第２メモリには、前記アドレス空間における奇数アドレスのＮビット幅のデータが格納され、前記アドレス出力部は、前記書き込みデータの前記データサイズがＮビットである場合は、前記アドレス空間における前記アドレスに応じた前記書き込みアドレスを前記第１又は第２メモリに出力し、前記書き込みデータの前記データサイズが２Ｎビットである場合は、前記アドレス空間における前記アドレスに応じた前記書き込みアドレスを前記第１及び第２メモリに出力し、前記書き込みデータ出力部は、前記書き込みデータの前記データサイズがＮビットであり、前記アドレス空間における前記アドレスが偶数アドレスの場合は、前記書き込みデータを前記第１メモリに出力し、前記書き込みデータの前記データサイズがＮビットであり、前記アドレス空間における前記アドレスが奇数アドレスの場合は、前記書き込みデータを前記第２メモリに出力し、前記書き込みデータの前記データサイズが２Ｎビットであり、前記アドレス空間にける前記アドレスが偶数アドレスの場合は、前記書き込みデータの上位Ｎビットを前記第１メモリに出力し、前記書き込みデータの下位Ｎビットを前記第２メモリに出力し、前記書き込みデータの前記データサイズが２Ｎビットであり、前記アドレス空間にける前記アドレスが奇数アドレスの場合は、前記書き込みデータの上位Ｎビットを前記第２メモリに出力し、前記書き込みデータの下位Ｎビットを前記第１メモリに出力することとすることもできる。
【０００９】
また、前記メモリアクセス装置において、前記アドレス出力部から出力される前記書き込みアドレスが記憶される書き込みアドレス記憶部と、前記書き込みデータ出力部から出力される前記書き込みデータが前記第１又は第２メモリに書き込まれる前に記憶される書き込みデータ記憶部と、前記アドレス出力部から出力される前記読み出しアドレスと、前記書き込みアドレス記憶部に記憶されている前記書き込みアドレスとが異なる場合は、前記読み出しアドレスを前記第１又は第２メモリに出力するアドレス選択回路と、を更に備え、前記読み出しデータ出力部は、前記アドレス出力部から出力される前記読み出しアドレスと、前記書き込みアドレス記憶部に記憶されている前記書き込みアドレスとが異なる場合は、前記第１又は第２メモリの少なくとも一方から出力されるデータから前記読み出しデータを生成して出力し、前記アドレス出力部から出力される前記読み出しアドレスと、前記書き込みアドレス記憶部に記憶されている前記書き込みアドレスとが同じである場合は、前記書き込みデータ記憶部に記憶されている前記書き込みデータを出力することとすることもできる。
【００１０】
また、前記メモリアクセス装置において、前記アドレス出力部は、クロックが一方の論理レベルから他方の論理レベルに変化する第１のタイミングで、前記読み出しアドレスを出力し、前記アクセス要求出力部は、前記第１のタイミングの次に、前記クロックが前記一方の論理レベルから前記他方の論理レベルに変化する第２のタイミングで前記読み出し要求を出力することとすることもできる。
【００１１】
また、前記メモリアクセス装置において、前記アドレス出力部は、クロックが一方の論理レベルから他方の論理レベルに変化する第１のタイミングで、前記書き込みアドレスを出力し、前記アクセス要求部は、前記第１のタイミングの次に、前記クロックが前記一方の論理レベルから前記他方の論理レベルに変化する第２のタイミングで、前記アドレス出力部から出力される前記書き込みアドレスを前記アドレス記憶部に記憶させるとともに、前記書き込みデータ出力部から出力される前記書き込みデータを前記書き込みデータ記憶部に記憶させることとすることもできる。
【発明の効果】
【００１２】
効率的なメモリアクセスを実現可能なメモリアクセス装置を提供することができる。
【発明を実施するための最良の形態】
【００１３】
＝＝回路構成＝＝
図１は、本発明のメモリアクセス装置の一実施形態であるデジタル信号処理回路（ＤＳＰ：Digital Signal Processor）の構成例を示す図である。ＤＳＰ１０は、制御回路２０、メモリアクセス回路２１Ａ，２１Ｂ、プログラムメモリ２２、データメモリ２３Ａａ，２３Ａｂ，２３Ｂａ，２３Ｂｂ、レジスタ２４、演算回路２５、アドレスバスＢＤＡＡ，ＢＤＡＢ、及びデータバスＢＤＡ，ＢＤＢを含んで構成される。
【００１４】
制御回路２０は、プログラムメモリ２２に格納されたプログラムを読み出して実行することにより、デジタル信号処理回路１０における様々な制御を行う。例えば、制御回路２０は、デジタル信号処理回路１０におけるパイプライン処理の制御や、メモリアクセス回路２１Ａ，２１Ｂを介したデータメモリ２３Ａａ〜２３Ｂｂへのアクセス制御、演算回路２５における演算処理の実行制御等を行う。
【００１５】
メモリアクセス回路２１Ａは、制御回路２０からの指示に応じて、データメモリ２３Ａａ，２３Ａｂへのアクセスを制御する。また、メモリアクセス回路２１Ｂは、制御回路２０からの指示に応じて、データメモリ２３Ｂａ，２３Ｂｂへのアクセスを制御する。
【００１６】
プログラムメモリ２２は、例えば、フラッシュメモリ等の不揮発性の記憶領域であり、制御回路２０によって実行されるプログラムが格納される。なお、プログラムメモリ２２は、デジタル信号処理回路１０の外部に設けられることとしてもよい。また、プログラムメモリ２２を揮発性のメモリとし、デジタル信号処理回路１０の外部からプログラムを読み込むこととしてもよい。
【００１７】
データメモリ２３Ａａ，２３Ａｂ，２３Ｂａ，２３Ｂｂは、例えば、ＳＲＡＭ（Static Random Access Memory）等の記憶領域であり、ＤＳＰ１０の各種処理で使用されるデータや生成されるデータが格納される。なお、データメモリ２３Ａａ，２３Ａｂ，２３Ｂａ，２３Ｂｂは、デジタル信号処理回路１０の外部に設けられることとしてもよい。
【００１８】
レジスタ２４は、複数の汎用レジスタ等により構成される記憶領域であり、主に、データメモリ２３Ａａ，２３Ａｂ，２３Ｂａ，２３Ｂｂから読み出されたデータや、演算回路２５での処理結果等の一時的な格納領域として用いられる。
【００１９】
演算回路２５は、レジスタ２４に格納されたデータを入力データとして、乗算や加算等の演算を行う回路である。本実施形態の演算回路２５には、２つの乗累算器（ＭＡＣ：Multiply Accumulator）が含まれており、レジスタ２４から４つのデータを同時に読み出すことにより、２つの乗累算器での演算を同時に行うことができる。
【００２０】
アドレスバスＢＤＡＡは、例えば２４ビットのアドレスバスＢＤＡＡ０，ＢＤＡＡ１により構成されるバスであり、データメモリ２３Ａａ，２３Ａｂからデータを読み出す際のアドレス（読み出しアドレス）、または、データメモリ２３Ａａ，２３Ａｂにデータを書き込む際のアドレス（書き込みアドレス）が出力される。また、データバスＢＤＡは、例えば３２ビットのデータバスであり、データメモリ２３Ａａ，２３Ａｂから読み出されたデータ（読み出しデータ）、または、データメモリ２３Ａａ，２３Ａｂに書き込まれるデータ（書き込みデータ）が出力される。
【００２１】
アドレスバスＢＤＡＢは、例えば２４ビットのアドレスバスＢＤＡＢ０，ＢＤＡＢ１により構成されるバスであり、データメモリ２３Ｂａ，２３Ｂｂからデータを読み出す際のアドレス（読み出しアドレス）、または、データメモリ２３Ｂａ，２３Ｂｂにデータを書き込む際のアドレス（書き込みアドレス）が出力される。また、データバスＢＤＢは、例えば３２ビットのデータバスであり、データメモリ２３Ｂａ，２３Ｂｂから読み出されたデータ（読み出しデータ）、または、データメモリ２３Ｂａ，２３Ｂｂに書き込まれるデータ（書き込みデータ）が出力される。
【００２２】
図２は、ＤＳＰ１０におけるパイプライン制御の例を示す図である。ＤＳＰ１０では、制御回路２０の制御により、パイプライン制御が行われる。パイプライン制御では、一連の処理が複数のステージに分割され、複数の処理の各ステージにおける動作が並行して実行される。図２に示す例では、フェッチステージ（Ｆステージ）、デコードステージ（Ｄステージ）、アドレス生成ステージ（Ａステージ）、実行ステージ（Ｅ１ステージ）、実行ステージ（Ｅ２ステージ）の５つのステージに分割されている。そして、例えば、時刻（クロックサイクル）Ｔ１のＦステージに処理Ａのフェッチ（フェッチＡ）が行われると、続いて時刻Ｔ２のＤステージに、フェッチされた命令のデコード（デコードＡ）が行われる。その後、時刻Ｔ３のＡステージに、データにアクセスするためのアドレス生成（アドレスＡ）が行われ、時刻Ｔ４のＥ１ステージに例えば乗算等が実行され（実行Ａ１）、時刻Ｔ５のＥ２ステージに加算等が実行される（実行Ａ２）。そして、各ステージの動作は並行して実行可能であるため、例えば、時刻Ｔ２のＦステージに処理Ｂのフェッチ（フェッチＢ）が行われ、時刻Ｔ３のＤステージに処理Ｂのデコード（デコードＢ）が行われる。
【００２３】
図３は、ＤＳＰ１０における制御回路２０及びメモリアクセス回路２１Ａの詳細な構成例を示す図である。制御回路２０は、フェッチ回路３１、パイプライン制御回路３２、及びアドレス生成回路３３を含んで構成される。また、メモリアクセス回路２１Ａは、アドレスレジスタ４１ａ，４１ｂ、アドレスバッファ４２ａ，４２ｂ、アドレス比較回路４３ａ，４３ｂ、アドレス選択回路４４ａ，４４ｂ、リードデータ選択回路４５ａ，４５ｂ、リードバッファ４６ａ，４６ｂ、リードデータ合成回路４７、設定レジスタ５１，５２、ライトデータ選択回路５３、及びライトバッファ５４ａ，５４ｂを含んで構成される。なお、データメモリ２３Ａａが本発明の第１メモリに相当し、データメモリ２３Ａｂが本発明の第２メモリに相当する。また、パイプライン制御回路３２によって本発明のアクセス要求出力部が実現され、アドレス生成回路３３によって本発明のアドレス出力部及びデータ情報出力部が実現される。また、リードデータ選択回路４５ａ、リードバッファ４６ａ、リードデータ合成回路４７によって本発明の読み出しデータ出力部が実現される。また、ライトデータ選択回路５３によって本発明の書き込みデータ出力部が実現され、アドレスバッファ４２ａ，４２ｂによって本発明の書き込みアドレス記憶部が実現され、ライトバッファ５４ａ，５４ｂによって本発明の書き込みデータ記憶部が実現される。また、メモリアクセス回路２１Ｂについても、メモリアクセス回路２１Ａと同様の回路構成となっている。
【００２４】
フェッチ回路３１は、プログラムカウンタによって指定されるアドレスのプログラムをプログラムメモリ２２から読み出して、パイプライン制御回路３２に出力する。
【００２５】
パイプライン制御回路３２は、フェッチ回路３１から出力されるプログラムをデコードし、デコードによって得られる命令に基づいて、メモリアクセス回路２１Ａ，２１Ｂや演算回路２５のパイプライン制御を行う。例えば、パイプライン制御回路３２は、データメモリ２３Ａａに対する読み出し要求（ＸＲＤ０）及び書き込み要求（ＸＷＲ０）、データメモリ２３Ａｂに対する読み出し要求（ＸＲＤ１）及び書き込み要求（ＸＷＲ１）を適切なタイミングで出力する。なお、本実施形態においては、読み出し要求（ＸＲＤ０）が“０”の場合にデータメモリ２３Ａａからデータが読み出され、書き込み要求（ＸＷＲ０）が“０”の場合にデータメモリ２３Ａａに対してデータが書き込まれることとする。また、本実施形態においては、読み出し要求（ＸＲＤ１）が“０”の場合にデータメモリ２３Ａｂからデータが読み出され、書き込み要求（ＸＷＲ１）が“０”の場合にデータメモリ２３Ａｂに対してデータが書き込まれることとする。
【００２６】
アドレス生成回路３３は、プログラムのデコード結果に基づいて、データメモリ２３Ａａ及びデータメモリ２３Ａｂの少なくとも一方に対してアクセスする際のアドレスを生成してアドレスバスＢＤＡＡに出力する。本実施形態では、アドレスバスＢＤＡＡ０にデータメモリ２３Ａａに対するアドレスが出力され、アドレスバスＢＤＡＡ１にデータメモリ２３Ａｂに対するアドレスが出力される。
【００２７】
アドレス生成回路３３におけるアドレス生成について、具体的に説明する。図４は、データメモリ２３Ａａ，２３Ａｂのアドレス構成例を示す図である。データメモリ２３Ａａ，２３Ａｂは、例えばデータ幅が１６ビット（Ｎビット）であり、データメモリ２３ＡａにはＤＳＰ１０のアドレス空間における偶数アドレスのデータが格納され、データメモリ２３ＡｂにはＤＳＰ１０のアドレス空間における奇数アドレスのデータが格納されている。例えば、データメモリ２３Ａａのｎ番地には、ＤＳＰ１０のアドレス空間における２ｎ番地のデータが格納され、データメモリ２３Ａｂのｎ番地には、ＤＳＰ１０のアドレス空間における２ｎ＋１番地のデータが格納されている。
【００２８】
図５は、データメモリ２３Ａａ，２３Ａｂへのアクセスパターンを示す図である。図５（ａ）は、アクセス対象のデータのＤＳＰ１０のアドレス空間におけるアドレスが偶数（２ｎ）であり、データサイズが１６ビットの場合のアクセスを示す図である。この場合、アドレス生成回路３３は、アドレス空間におけるアドレス（２ｎ番地）とデータサイズ（１６ビット）とに基づいて、データメモリ２３Ａａに対するアドレス（ｎ番地）を生成し、アドレスバスＢＤＡＡ０に出力する。図５（ｂ）は、アクセス対象のデータのＤＳＰ１０のアドレス空間におけるアドレスが奇数（２ｎ＋１）であり、データサイズが１６ビットの場合のアクセスを示す図である。この場合、アドレス生成回路３３は、アドレス空間におけるアドレス（２ｎ＋１番地）とデータサイズ（１６ビット）とに基づいて、データメモリ２３Ａｂに対するアドレス（ｎ番地）を生成し、アドレスバスＢＤＡＡ１に出力する。図５（ｃ）は、アクセス対象のデータのＤＳＰ１０のアドレス空間におけるアドレスが偶数（２ｎ）であり、データサイズが３２ビットの場合のアクセスを示す図である。この場合、アドレス生成回路３３は、アドレス空間におけるアドレス（２ｎ番地）とデータサイズ（３２ビット）とに基づいて、データメモリ２３Ａａ，２３Ａｂに対するアドレス（ｎ番地）を生成し、アドレスバスＢＤＡＡ０，ＢＤＡＡ１に出力する。図５（ｄ）は、アクセス対象のデータのＤＳＰ１０のアドレス空間におけるアドレスが奇数（２ｎ＋１）であり、データサイズが３２ビットの場合のアクセスを示す図である。この場合、アドレス生成回路３３は、アドレス空間におけるアドレス（２ｎ＋１番地）とデータサイズ（３２ビット）とに基づいて、データメモリ２３Ａｂに対するアドレス（ｎ番地）を生成してアドレスバスＢＤＡＡ１に出力するとともに、データメモリ２３Ａａに対するアドレス（ｎ＋１番地）を生成してアドレスバスＢＤＡＡ０に出力する。
【００２９】
アドレスレジスタ４１ａには、データメモリ２３Ａａにデータを書き込む場合に、アドレスバスＢＤＡＡ０に出力されたアドレスが格納される。また、アドレスレジスタ４１ｂには、データメモリ２３Ａｂにデータを書き込む場合に、アドレスバスＢＤＡＡ１に出力されたアドレスが格納される。具体的には、Ｅ１ステージにアドレスバスＢＤＡＡ０に出力されているアドレスが、Ｅ２ステージにアドレスレジスタ４１ａに取り込まれ、Ｅ１ステージにアドレスバスＢＤＡＡ１に出力されているアドレスが、Ｅ２ステージにアドレスレジスタ４１ｂに取り込まれることとなる。
【００３０】
アドレスバッファ４２ａには、データメモリ２３Ａａにデータを書き込む場合に、アドレスレジスタ４１ａに記憶されているアドレスが格納される。また、アドレスバッファ４２ｂには、データメモリ２３Ａｂにデータを書き込む場合に、アドレスレジスタ４１ｂに記憶されているアドレスが格納される。具体的には、Ｅ２ステージにアドレスレジスタ４１ａに記憶されているアドレスが、次のクロックサイクルにアドレスバッファ４２ａに取り込まれ、Ｅ２ステージにアドレスレジスタ４１ｂに記憶されているアドレスが、次のクロックサイクルにアドレスバッファ４２ｂに取り込まれる。
【００３１】
アドレス比較回路４３ａは、アドレスバスＢＤＡＡ０に出力されているアドレスと、アドレスバッファ４２ａに格納されているアドレスとの比較結果を出力する。また、アドレス比較回路４３ｂは、アドレスバスＢＤＡＡ１に出力されているアドレスと、アドレスバッファ４２ｂに格納されているアドレスとの比較結果を出力する。
【００３２】
アドレス選択回路４４ａは、アドレス比較回路４３ａから出力される比較結果に基づいて、アドレスバスＢＤＡＡ０に出力されているアドレス、または、アドレスバッファ４２ａに格納されているアドレスの何れか一方を、データメモリ２３Ａａのアドレス入力端子に入力する。具体的には、アドレスバスＢＤＡＡ０に出力されているデータメモリ２３Ａａに対する読み出しアドレスと、アドレスバッファ４２ａに格納されているデータメモリ２３Ａａに対する書き込みアドレスとが同じである場合は、アドレスバッファ４２ａに格納されている書き込みアドレスがデータメモリ２３Ａａに出力され、これら２つのアドレスが異なる場合は、アドレスバスＢＤＡＡ０に出力されている読み出しアドレスがデータメモリ２３Ａａに出力される。また、アドレス選択回路４４ｂは、アドレス比較回路４３ｂから出力される比較結果に基づいて、アドレスバスＢＤＡＡ１に出力されているアドレス、または、アドレスバッファ４２ｂに出力されているアドレスの何れか一方を、データメモリ２３Ａｂのアドレス入力端子に入力する。具体的には、アドレスバスＢＤＡＡ１に出力されているデータメモリ２３Ａｂに対する読み出しアドレスと、アドレスバッファ４２ｂに格納されているデータメモリ２３Ａｂに対する書き込みアドレスとが同じである場合は、アドレスバッファ４２ｂに格納されている書き込みアドレスがデータメモリ２３Ａｂに出力され、これら２つのアドレスが異なる場合は、アドレスバスＢＤＡＡ１に出力されている読み出しアドレスがデータメモリ２３Ａｂに出力される。
【００３３】
リードデータ選択回路４５ａは、アドレス比較回路４３ａから出力される比較結果に基づいて、データメモリ２３Ａａのデータ出力端子から出力されるデータ、または、ライトバッファ５４ａに格納されているデータメモリ２３Ａａに書き込まれる予定のデータの何れか一方をリードバッファ４６ａに出力する。具体的には、アドレスバスＢＤＡＡ０に出力されているデータメモリ２３Ａａに対する読み出しアドレスと、アドレスバッファ４２ａに格納されているデータメモリ２３Ａａに対する書き込みアドレスとが同じである場合は、ライトバッファ５４ａに格納されているデータがリードバッファ４６ａに出力され、これら２つのアドレスが異なる場合は、データメモリ２３Ａａのデータ出力端子から出力されるデータがリードバッファ４６ａに出力される。また、リードデータ選択回路４５ｂは、アドレス比較回路４３ｂから出力される比較結果に基づいて、データメモリ２３Ａｂのデータ出力端子から出力されるデータ、または、ライトバッファ５４ｂに格納されているデータメモリ２３Ａｂに書き込まれる予定のデータの何れか一方をリードバッファ４６ｂに出力する。具体的には、アドレスバスＢＤＡＡ１に出力されているデータメモリ２３Ａｂに対する読み出しアドレスと、アドレスバッファ４２ｂに格納されているデータメモリ２３Ａｂに対する書き込みアドレスとが同じである場合は、ライトバッファ５４ｂに格納されているデータがリードバッファ４６ｂに出力され、これら２つのアドレスが異なる場合は、データメモリ２３Ａｂのデータ出力端子から出力されるデータがリードバッファ４６ｂに出力される。
【００３４】
リードバッファ４６ａには、リードデータ選択回路４５ａから出力されるデータが格納される。具体的には、データメモリ２３Ａａからデータが読みだされる場合、ＡステージにアドレスバスＢＤＡＡ０に読み出しアドレスが出力され、Ｅ１ステージにデータメモリ２３Ａａまたはライトバッファ５４ａからデータが読み出され、読み出されたデータがＥ２ステージにリードバッファ４６ａに格納される。また、リードバッファ４６ｂには、リードデータ選択回路４５ｂから出力されるデータが格納される。具体的には、データメモリ２３Ａｂからデータが読みだされる場合、ＡステージにアドレスバスＢＤＡＡ１に読み出しアドレスが出力され、Ｅ１ステージにデータメモリ２３Ａｂまたはライトバッファ５４ｂからデータが読み出され、読み出されたデータがＥ２ステージにリードバッファ４６ｂに格納される。
【００３５】
リードデータ合成回路４７は、設定レジスタ５１に記憶されているデータサイズに関する情報及びアドレスに関する情報に基づいて、リードバッファ４６ａ，４６ｂの少なくとも一方に格納されているデータから読み出しデータを生成してデータバスＢＤＡに出力する。具体的には、読み出しデータのデータサイズが１６ビットで、読み出しデータのアドレス空間におけるアドレスが偶数である場合（図５（ａ）の場合）、リードバッファ４６ａに格納されているデータがデータバスＢＤＡの下位１６ビット［１５：０］に出力される。また、読み出しデータのデータサイズが１６ビットで、読み出しデータのアドレス空間におけるアドレスが奇数である場合（図５（ｂ）の場合）、リードバッファ４６ｂに格納されているデータがデータバスＢＤＡの下位１６ビット［１５：０］に出力される。また、読み出しデータのデータサイズが３２ビットで、読み出しデータのアドレス空間におけるアドレスが偶数である場合（図５（ｃ）の場合）、リードバッファ４６ａに格納されているデータがデータバスＢＤＡの上位１６ビット［３１：１６］に出力され、リードバッファ４６ｂに格納されているデータがデータバスＢＤＡの下位１６ビット［１５：０］に出力される。また、読み出しデータのデータサイズが３２ビットで、読み出しデータのアドレス空間におけるアドレスが奇数である場合（図５（ｄ）の場合）、リードバッファ４６ｂに格納されているデータがデータバスＢＤＡの上位１６ビット［３１：１６］に出力され、リードバッファ４６ａに格納されているデータがデータバスＢＤＡの下位１６ビット［１５：０］に出力される。
【００３６】
設定レジスタ５１には、データメモリ２３Ａａ，２３Ａｂからの読み出しデータ、または、データメモリ２３Ａａ，２３Ａｂへの書き込みデータについての、データサイズに関する情報及びアドレス空間におけるアドレスに関する情報が格納される。本実施形態では、データサイズに関する情報は、データサイズが１６ビットの場合に“１”、データサイズが３２ビットの場合に“０”で表されることとする。また、本実施形態では、アドレスに関する情報は、アドレスが偶数である場合は“０”、アドレスが奇数である場合は“１”で表されることとする。
【００３７】
設定レジスタ５２には、データメモリ４２ａまたはデータメモリ４２ｂにデータが書き込まれる場合に、設定レジスタ５１に設定されたデータが格納される。具体的には、Ｅ１ステージに設定レジスタ５１に設定されたデータが、Ｅ２ステージに設定レジスタ５２に取り込まれる。
【００３８】
ライトデータ選択回路５３は、設定レジスタ５２に格納されているデータサイズに関する情報及びアドレスに関する情報に基づいて、データバスＢＤＡに出力されている書き込みデータを、ライトバッファ５４ａ，５４ｂの少なくとも一方に出力する。具体的には、書き込みデータのデータサイズが１６ビットで、書き込みデータのアドレス空間におけるアドレスが偶数である場合（図５（ａ）の場合）、データバスＢＤＡの下位１６ビット［１５：０］に出力されているデータが、ライトバッファ５４ａに出力される。また、書き込みデータのデータサイズが１６ビットで、書き込みデータのアドレス空間におけるアドレスが奇数である場合（図５（ｂ）の場合）、データバスＢＤＡの下位１６ビット［１５：０］に出力されているデータが、ライトバッファ５４ｂに出力される。また、書き込みデータのデータサイズが３２ビットで、書き込みデータのアドレス空間におけるアドレスが偶数である場合（図５（ｃ）の場合）、データバスＢＤＡの上位１６ビット［３１：１６］に出力されているデータが、ライトバッファ５４ａに出力され、データバスＢＤＡの下位１６ビット［１５：０］に出力されているデータが、ライトバッファ５４ｂに出力される。また、書き込みデータのデータサイズが３２ビットで、書き込みデータのアドレス空間におけるアドレスが奇数である場合（図５（ｄ）の場合）、データバスＢＤＡの上位１６ビット［３１：１６］に出力されているデータが、ライトバッファ５４ｂに出力され、データバスＢＤＡの下位１６ビット［１５：０］に出力されているデータが、ライトバッファ５４ａに出力される。
【００３９】
＝＝メモリアクセス動作＝＝
ＤＳＰ１０におけるメモリアクセス動作について、図６〜図２３を参照して説明する。なお、図６〜図２１では、メモリアクセス動作に関連する部分を実線で示し、関連しない部分を破線で示している。
【００４０】
図６は、データサイズが１６ビットで、アドレス空間におけるアドレスが偶数である場合のライト動作を示す図である。アドレス空間におけるアドレスが偶数であるため、Ａステージに、アドレス生成回路３３においてデータメモリ２３Ａａに対する書き込みアドレスが生成される。そして、生成された書き込みアドレスは、Ｅ１ステージに、アドレスバスＢＤＡＡ０に出力される。そして、Ｅ２ステージには、アドレスバスＢＤＡＡ０に出力された書き込みアドレスがアドレスレジスタ４１ａに取り込まれるとともに、データバスＢＤＡの下位１６ビット［１５：０］に１６ビットの書き込みデータが出力される。また、アドレス生成回路３３は、Ｅ１ステージに、データサイズが１６ビットであることを示す情報“１”と、アドレスが偶数であることを示す情報“０”とを設定レジスタ５１に書き込む。そして、設定レジスタ５１に書き込まれた情報は、Ｅ２ステージに、設定レジスタ５２に取り込まれる。
【００４１】
そして、Ｅ２ステージの次のクロックサイクルになると、アドレスレジスタ４１ａに格納されているアドレスがアドレスバッファ４２ａに取り込まれる。また、ライトデータ選択回路５３は、設定レジスタ５２に格納された情報に従って、データバスＢＤＡの下位１６ビット［１５：０］に出力されているデータを、ライトバッファ５４ａに出力する。
【００４２】
図６の場合、ライトの次にリードが続いていないため、パイプライン制御回路３２の制御により、アドレス選択回路４４ａは、アドレスバッファ４２ａに格納されているアドレスをデータメモリ２３Ａａのアドレス入力端子に入力する。その後、パイプライン制御回路３２からデータメモリ２３Ａａに対して書き込み要求（ＸＷＲ０＝“０”）が出力されることにより、ライトバッファ５４ａに格納されているデータが、データメモリ２３Ａａに書き込まれる。
【００４３】
図７は、データサイズが１６ビットで、アドレス空間におけるアドレスが奇数である場合のライト動作を示す図である。アドレス空間におけるアドレスが奇数であるため、Ａステージに、アドレス生成回路３３においてデータメモリ２３Ａｂに対する書き込みアドレスが生成される。そして、生成された書き込みアドレスは、Ｅ１ステージに、アドレスバスＢＤＡＡ１に出力される。そして、Ｅ２ステージには、アドレスバスＢＤＡＡ１に出力された書き込みアドレスがアドレスレジスタ４１ｂに取り込まれるとともに、データバスＢＤＡの下位１６ビット［１５：０］に１６ビットの書き込みデータが出力される。また、アドレス生成回路３３は、Ｅ１ステージに、データサイズが１６ビットであることを示す情報“１”と、アドレスが奇数であることを示す情報“１”とを設定レジスタ５１に書き込む。そして、設定レジスタ５１に書き込まれた情報は、Ｅ２ステージに、設定レジスタ５２に取り込まれる。
【００４４】
そして、Ｅ２ステージの次のクロックサイクルになると、アドレスレジスタ４１ｂに格納されているアドレスがアドレスバッファ４２ｂに取り込まれる。また、ライトデータ選択回路５３は、設定レジスタ５２に格納された情報に従って、データバスＢＤＡの下位１６ビット［１５：０］に出力されているデータを、ライトバッファ５４ｂに出力する。
【００４５】
図７の場合、ライトの次にリードが続いていないため、パイプライン制御回路３２の制御により、アドレス選択回路４４ｂは、アドレスバッファ４２ｂに格納されているアドレスをデータメモリ２３Ａｂのアドレス入力端子に入力する。その後、パイプライン制御回路３２からデータメモリ２３Ａｂに対して書き込み要求（ＸＷＲ１＝“０”）が出力されることにより、ライトバッファ５４ｂに格納されているデータが、データメモリ２３Ａｂに書き込まれる。
【００４６】
図８は、データサイズが３２ビットで、アドレス空間におけるアドレスが偶数である場合のライト動作を示す図である。まず、Ａステージに、アドレス生成回路３３においてデータメモリ２３Ａａ，２３Ａｂに対する書き込みアドレスが生成される。そして、Ｅ１ステージに、データメモリ２３Ａａに対する書き込みアドレスがアドレスバスＢＤＡＡ０に出力され、データメモリ２３Ａｂに対する書き込みアドレスがアドレスバスＢＤＡＡ１に出力される。そして、Ｅ２ステージには、アドレスバスＢＤＡＡ０に出力された書き込みアドレスがアドレスレジスタ４１ａに取り込まれ、アドレスバスＢＤＡＡ１に出力された書き込みアドレスがアドレスレジスタ４１ｂに取り込まれる。また、Ｅ２ステージには、データバスＢＤＡ［３１：０］に書き込みデータが出力される。また、アドレス生成回路３３は、Ｅ１ステージに、データサイズが３２ビットであることを示す情報“０”と、アドレスが偶数であることを示す情報“０”とを設定レジスタ５１に書き込む。そして、設定レジスタ５１に書き込まれた情報は、Ｅ２ステージに、設定レジスタ５２に取り込まれる。
【００４７】
そして、Ｅ２ステージの次のクロックサイクルになると、アドレスレジスタ４１ａに格納されているアドレスがアドレスバッファ４２ａに取り込まれ、アドレスレジスタ４１ｂに格納されているアドレスがアドレスバッファ４２ｂに取り込まれる。また、ライトデータ選択回路５３は、設定レジスタ５２に格納された情報に従って、データバスＢＤＡの上位１６ビット［３１：１６］に出力されているデータをライトバッファ５４ａに出力し、データバスＢＤＡの下位１６ビット［１５：０］に出力されているデータをライトバッファ５４ｂに出力する。
【００４８】
図８の場合、ライトの次にリードが続いていないため、パイプライン制御回路３２の制御により、アドレス選択回路４４ａは、アドレスバッファ４２ａに格納されているアドレスをデータメモリ２３Ａａのアドレス入力端子に入力する。同様に、アドレス選択回路４４ｂは、アドレスバッファ４２ｂに格納されているアドレスをデータメモリ２３Ａｂのアドレス入力端子に入力する。その後、パイプライン制御回路３２からデータメモリ２３Ａａに対して書き込み要求（ＸＷＲ０＝“０”）が出力されることにより、ライトバッファ５４ａに格納されているデータが、データメモリ２３Ａａに書き込まれる。同様に、パイプライン制御回路３２からデータメモリ２３Ａｂに対して書き込み要求（ＸＷＲ１＝“０”）が出力されることにより、ライトバッファ５４ｂに格納されているデータが、データメモリ２３Ａｂに書き込まれる。
【００４９】
図９は、データサイズが３２ビットで、アドレス空間におけるアドレスが奇数である場合のライト動作を示す図である。まず、Ａステージに、アドレス生成回路３３においてデータメモリ２３Ａａ，２３Ａｂに対する書き込みアドレスが生成される。そして、Ｅ１ステージに、データメモリ２３Ａａに対する書き込みアドレスがアドレスバスＢＤＡＡ０に出力され、データメモリ２３Ａｂに対する書き込みアドレスがアドレスバスＢＤＡＡ１に出力される。そして、Ｅ２ステージには、アドレスバスＢＤＡＡ０に出力された書き込みアドレスがアドレスレジスタ４１ａに取り込まれ、アドレスバスＢＤＡＡ１に出力された書き込みアドレスがアドレスレジスタ４１ｂに取り込まれる。また、Ｅ２ステージには、データバスＢＤＡ［３１：０］に書き込みデータが出力される。また、アドレス生成回路３３は、Ｅ１ステージに、データサイズが３２ビットであることを示す情報“０”と、アドレスが奇数であることを示す情報“１”とを設定レジスタ５１に書き込む。そして、設定レジスタ５１に書き込まれた情報は、Ｅ２ステージに、設定レジスタ５２に取り込まれる。
【００５０】
そして、Ｅ２ステージの次のクロックサイクルになると、アドレスレジスタ４１ａに格納されているアドレスがアドレスバッファ４２ａに取り込まれ、アドレスレジスタ４１ｂに格納されているアドレスがアドレスバッファ４２ｂに取り込まれる。また、ライトデータ選択回路５３は、設定レジスタ５２に格納された情報に従って、データバスＢＤＡの上位１６ビット［３１：１６］に出力されているデータをライトバッファ５４ｂに出力し、データバスＢＤＡの下位１６ビット［１５：０］に出力されているデータをライトバッファ５４ａに出力する。
【００５１】
図９の場合、ライトの次にリードが続いていないため、パイプライン制御回路３２の制御により、アドレス選択回路４４ａは、アドレスバッファ４２ａに格納されているアドレスをデータメモリ２３Ａａのアドレス入力端子に入力する。同様に、アドレス選択回路４４ｂは、アドレスバッファ４２ｂに格納されているアドレスをデータメモリ２３Ａｂのアドレス入力端子に入力する。その後、パイプライン制御回路３２からデータメモリ２３Ａａに対して書き込み要求（ＸＷＲ０＝“０”）が出力されることにより、ライトバッファ５４ａに格納されているデータが、データメモリ２３Ａａに書き込まれる。同様に、パイプライン制御回路３２からデータメモリ２３Ａｂに対して書き込み要求（ＸＷＲ１＝“０”）が出力されることにより、ライトバッファ５４ｂに格納されているデータが、データメモリ２３Ａｂに書き込まれる。
【００５２】
図１０は、データサイズが１６ビットで、アドレス空間におけるアドレスが偶数である場合のリード動作を示す図である。アドレス空間におけるアドレスが偶数であるため、Ａステージに、アドレス生成回路３３においてデータメモリ２３Ａａに対する読み出しアドレスが生成される。そして、生成された読み出しアドレスは、Ｅ１ステージに、アドレスバスＢＤＡＡ０に出力される。また、アドレス生成回路３３は、Ｅ１ステージに、データサイズが１６ビットであることを示す情報“１”と、アドレスが偶数であることを示す情報“０”とを設定レジスタ５１に書き込む。
【００５３】
図１０の場合、リードの前にライトが行われていないため、パイプライン制御回路３２の制御により、アドレス選択回路４４ａは、アドレスバスＢＤＡＡ０に出力されているアドレスをデータメモリ２３Ａａのアドレス入力端子に入力する。そして、パイプライン制御回路３２からデータメモリ２３Ａａに対して読み出し要求（ＸＲＤ０＝“０”）が出力されると、データメモリ２３Ａａから該当のデータが出力される。また、リードの前にライトが行われていないため、パイプライン制御回路３２の制御により、リードデータ選択回路４５ａは、データメモリ２３Ａａから出力されるデータを、リードバッファ４６ａに出力する。そして、リードデータ合成回路４７は、設定レジスタ５１に格納された情報に従って、リードバッファ４６ａに格納されているデータを、データバスＢＤＡの下位１６ビット［１５：０］に出力する。
【００５４】
図１１は、データサイズが１６ビットで、アドレス空間におけるアドレスが奇数である場合のリード動作を示す図である。アドレス空間におけるアドレスが奇数であるため、Ａステージに、アドレス生成回路３３においてデータメモリ２３Ａｂに対する読み出しアドレスが生成される。そして、生成された読み出しアドレスは、Ｅ１ステージに、アドレスバスＢＤＡＡ１に出力される。また、アドレス生成回路３３は、Ｅ１ステージに、データサイズが１６ビットであることを示す情報“１”と、アドレスが奇数であることを示す情報“１”とを設定レジスタ５１に書き込む。
【００５５】
図１１の場合、リードの前にライトが行われていないため、パイプライン制御回路３２の制御により、アドレス選択回路４４ｂは、アドレスバスＢＤＡＡ１に出力されているアドレスをデータメモリ２３Ａｂのアドレス入力端子に入力する。そして、パイプライン制御回路３２からデータメモリ２３Ａｂに対して読み出し要求（ＸＲＤ１＝“０”）が出力されると、データメモリ２３Ａｂから該当のデータが出力される。また、リードの前にライトが行われていないため、パイプライン制御回路３２の制御により、リードデータ選択回路４５ｂは、データメモリ２３Ａｂから出力されるデータを、リードバッファ４６ｂに出力する。そして、リードデータ合成回路４７は、設定レジスタ５１に格納された情報に従って、リードバッファ４６ｂに格納されているデータを、データバスＢＤＡの下位１６ビット［１５：０］に出力する。
【００５６】
図１２は、データサイズが３２ビットで、アドレス空間におけるアドレスが偶数である場合のリード動作を示す図である。まず、Ａステージに、アドレス生成回路３３においてデータメモリ２３Ａａ，２３Ａｂに対する読み出しアドレスが生成される。そして、Ｅ１ステージに、データメモリ２３Ａａに対する読み出しアドレスがアドレスバスＢＤＡＡ０に出力され、データメモリ２３Ａｂに対する読み出しアドレスがアドレスバスＢＤＡＡ１に出力される。また、アドレス生成回路３３は、Ｅ１ステージに、データサイズが３２ビットであることを示す情報“０”と、アドレスが偶数であることを示す情報“０”とを設定レジスタ５１に書き込む。
【００５７】
図１２の場合、リードの前にライトが行われていないため、パイプライン制御回路３２の制御により、アドレス選択回路４４ａは、アドレスバスＢＤＡＡ０に出力されているアドレスをデータメモリ２３Ａａのアドレス入力端子に入力する。そして、パイプライン制御回路３２からデータメモリ２３Ａａに対して読み出し要求（ＸＲＤ０＝“０”）が出力されると、データメモリ２３Ａａから該当のデータが出力される。同様に、アドレス選択回路４４ｂは、アドレスバスＢＤＡＡ１に出力されているアドレスをデータメモリ２３Ａｂのアドレス入力端子に入力する。そして、パイプライン制御回路３２からデータメモリ２３Ａｂに対して読み出し要求（ＸＲＤ１＝“０”）が出力されると、データメモリ２３Ａｂから該当のデータが出力される。また、リードの前にライトが行われていないため、パイプライン制御回路３２の制御により、リードデータ選択回路４５ａは、データメモリ２３Ａａから出力されるデータを、リードバッファ４６ａに出力する。同様に、リードデータ選択回路４５ｂは、データメモリ２３Ａｂから出力されるデータを、リードバッファ４６ｂに出力する。そして、リードデータ合成回路４７は、設定レジスタ５１に格納された情報に従って、リードバッファ４６ａに格納されているデータをデータバスＢＤＡの上位１６ビット［３１：１６］に出力し、リードバッファ４６ｂに格納されているデータをデータバスＢＤＡの下位１６ビット［１５：０］に出力する。
【００５８】
図１３は、データサイズが３２ビットで、アドレス空間におけるアドレスが奇数である場合のリード動作を示す図である。まず、Ａステージに、アドレス生成回路３３においてデータメモリ２３Ａａ，２３Ａｂに対する読み出しアドレスが生成される。そして、Ｅ１ステージに、データメモリ２３Ａａに対する読み出しアドレスがアドレスバスＢＤＡＡ０に出力され、データメモリ２３Ａｂに対する読み出しアドレスがアドレスバスＢＤＡＡ１に出力される。また、アドレス生成回路３３は、Ｅ１ステージに、データサイズが３２ビットであることを示す情報“０”と、アドレスが奇数であることを示す情報“１”とを設定レジスタ５１に書き込む。
【００５９】
図１３の場合、リードの前にライトが行われていないため、パイプライン制御回路３２の制御により、アドレス選択回路４４ａは、アドレスバスＢＤＡＡ０に出力されているアドレスをデータメモリ２３Ａａのアドレス入力端子に入力する。そして、パイプライン制御回路３２からデータメモリ２３Ａａに対して読み出し要求（ＸＲＤ０＝“０”）が出力されると、データメモリ２３Ａａから該当のデータが出力される。同様に、アドレス選択回路４４ｂは、アドレスバスＢＤＡＡ１に出力されているアドレスをデータメモリ２３Ａｂのアドレス入力端子に入力する。そして、パイプライン制御回路３２からデータメモリ２３Ａｂに対して読み出し要求（ＸＲＤ１＝“０”）が出力されると、データメモリ２３Ａｂから該当のデータが出力される。また、リードの前にライトが行われていないため、パイプライン制御回路３２の制御により、リードデータ選択回路４５ａは、データメモリ２３Ａａから出力されるデータを、リードバッファ４６ａに出力する。同様に、リードデータ選択回路４５ｂは、データメモリ２３Ａｂから出力されるデータを、リードバッファ４６ｂに出力する。そして、リードデータ合成回路４７は、設定レジスタ５１に格納された情報に従って、リードバッファ４６ｂに格納されているデータをデータバスＢＤＡの上位１６ビット［３１：１６］に出力し、リードバッファ４６ａに格納されているデータをデータバスＢＤＡの下位１６ビット［１５：０］に出力する。
【００６０】
図１４は、データサイズが１６ビットで、アドレス空間におけるアドレスが偶数であり、同一アドレスに対するライト動作に続くリード動作を示す図である。アドレス空間におけるアドレスが偶数であるため、Ａステージに、アドレス生成回路３３においてデータメモリ２３Ａａに対する読み出しアドレスが生成される。そして、生成された読み出しアドレスは、Ｅ１ステージに、アドレスバスＢＤＡＡ０に出力される。また、アドレス生成回路３３は、Ｅ１ステージに、データサイズが１６ビットであることを示す情報“１”と、アドレスが偶数であることを示す情報“０”とを設定レジスタ５１に書き込む。
【００６１】
図１４の場合、リードの前にライトが行われているため、パイプライン制御回路３２の制御により、アドレス比較回路４３ａは、アドレスバスＢＤＡＡ０に出力されているアドレスと、アドレスバッファ４２ａに格納されているアドレスとの比較結果を出力する。図１４の場合、これらのアドレスが同一であるため、アドレス選択回路４４ａは、アドレス比較回路４３ａから出力される比較結果に従って、アドレスバッファ４２ａに格納されているアドレスを、データメモリ２３Ａａのアドレス入力端子に入力する。また、リードデータ選択回路４５ａは、アドレス比較回路４３ａから出力される比較結果に従って、ライトバッファ５４ａに格納されているデータを、リードバッファ４６ａに出力する。そして、リードデータ合成回路４７は、設定レジスタ５１に格納された情報に従って、リードバッファ４６ａに格納されているデータを、データバスＢＤＡの下位１６ビット［１５：０］に出力する。また、パイプライン制御回路３２からデータメモリ２３Ａａに対して書き込み要求（ＸＷＲ０＝“０”）が出力されると、ライトバッファ５４ａに格納されているデータが、データメモリ２３Ａａに書き込まれる。
【００６２】
図１５は、データサイズが１６ビットで、アドレス空間におけるアドレスが偶数であり、異なるアドレスに対するライト動作に続くリード動作を示す図である。アドレス空間におけるアドレスが偶数であるため、Ａステージに、アドレス生成回路３３においてデータメモリ２３Ａａに対する読み出しアドレスが生成される。そして、生成された読み出しアドレスは、Ｅ１ステージに、アドレスバスＢＤＡＡ０に出力される。また、アドレス生成回路３３は、Ｅ１ステージに、データサイズが１６ビットであることを示す情報“１”と、アドレスが偶数であることを示す情報“０”とを設定レジスタ５１に書き込む。
【００６３】
図１５の場合、リードの前にライトが行われているため、パイプライン制御回路３２の制御により、アドレス比較回路４３ａは、アドレスバスＢＤＡＡ０に出力されているアドレスと、アドレスバッファ４２ａに格納されているアドレスとの比較結果を出力する。図１５の場合、これらのアドレスが異なるため、アドレス選択回路４４ａは、アドレス比較回路４３ａから出力される比較結果に従って、アドレスバスＢＤＡＡ０に出力されているアドレスを、データメモリ２３Ａａのアドレス入力端子に入力する。また、パイプライン制御回路３２からデータメモリ２３Ａａに対して読み出し要求（ＸＲＤ０＝“０”）が出力されると、データメモリ２３Ａａから該当のデータが出力される。そして、リードデータ選択回路４５ａは、アドレス比較回路４３ａから出力される比較結果に従って、データメモリ２３Ａａから出力されるデータをリードバッファ４６ａに出力する。また、リードデータ合成回路４７は、設定レジスタ５１に格納された情報に従って、リードバッファ４６ａに格納されているデータを、データバスＢＤＡの下位１６ビット［１５：０］に出力する。なお、アドレスバッファ４２ａに格納されているアドレス及びライトバッファ５４ａに格納されているデータはクリアされずに保持される。そして、データメモリ２３Ａａからデータの読み出しが行われた後の適宜のタイミングで、アドレスバッファ４２ａに格納されているアドレスがデータメモリ２３Ａａのアドレス入力端子に入力され、書き込み要求（ＸＷＲ０＝“０”）が出力されることにより、データメモリ２３Ａａに対してデータの書き込みが行われる。
【００６４】
図１６は、データサイズが１６ビットで、アドレス空間におけるアドレスが奇数であり、同一アドレスに対するライト動作に続くリード動作を示す図である。アドレス空間におけるアドレスが奇数であるため、Ａステージに、アドレス生成回路３３においてデータメモリ２３Ａｂに対する読み出しアドレスが生成される。そして、生成された読み出しアドレスは、Ｅ１ステージに、アドレスバスＢＤＡＡ１に出力される。また、アドレス生成回路３３は、Ｅ１ステージに、データサイズが１６ビットであることを示す情報“１”と、アドレスが奇数であることを示す情報“１”とを設定レジスタ５１に書き込む。
【００６５】
図１６の場合、リードの前にライトが行われているため、パイプライン制御回路３２の制御により、アドレス比較回路４３ｂは、アドレスバスＢＤＡＡ１に出力されているアドレスと、アドレスバッファ４２ｂに格納されているアドレスとの比較結果を出力する。図１６の場合、これらのアドレスが同一であるため、アドレス選択回路４４ｂは、アドレス比較回路４３ｂから出力される比較結果に従って、アドレスバッファ４２ｂに格納されているアドレスを、データメモリ２３Ａｂのアドレス入力端子に入力する。また、リードデータ選択回路４５ｂは、アドレス比較回路４３ｂから出力される比較結果に従って、ライトバッファ５４ｂに格納されているデータを、リードバッファ４６ｂに出力する。そして、リードデータ合成回路４７は、設定レジスタ５１に格納された情報に従って、リードバッファ４６ｂに格納されているデータを、データバスＢＤＡの下位１６ビット［１５：０］に出力する。また、パイプライン制御回路３２からデータメモリ２３Ａｂに対して書き込み要求（ＸＷＲ１＝“０”）が出力されると、ライトバッファ５４ｂに格納されているデータが、データメモリ２３Ａｂに書き込まれる。
【００６６】
図１７は、データサイズが１６ビットで、アドレス空間におけるアドレスが奇数であり、異なるアドレスに対するライト動作に続くリード動作を示す図である。アドレス空間におけるアドレスが奇数であるため、Ａステージに、アドレス生成回路３３においてデータメモリ２３Ａｂに対する読み出しアドレスが生成される。そして、生成された読み出しアドレスは、Ｅ１ステージに、アドレスバスＢＤＡＡ１に出力される。また、アドレス生成回路３３は、Ｅ１ステージに、データサイズが１６ビットであることを示す情報“１”と、アドレスが奇数であることを示す情報“１”とを設定レジスタ５１に書き込む。
【００６７】
図１７の場合、リードの前にライトが行われているため、パイプライン制御回路３２の制御により、アドレス比較回路４３ｂは、アドレスバスＢＤＡＡ１に出力されているアドレスと、アドレスバッファ４２ｂに格納されているアドレスとの比較結果を出力する。図１７の場合、これらのアドレスが異なるため、アドレス選択回路４４ｂは、アドレス比較回路４３ｂから出力される比較結果に従って、アドレスバスＢＤＡＡ１に出力されているアドレスを、データメモリ２３Ａｂのアドレス入力端子に入力する。また、パイプライン制御回路３２からデータメモリ２３Ａｂに対して読み出し要求（ＸＲＤ１＝“０”）が出力されると、データメモリ２３Ａｂから該当のデータが出力される。そして、リードデータ選択回路４５ｂは、アドレス比較回路４３ｂから出力される比較結果に従って、データメモリ２３Ａｂから出力されるデータをリードバッファ４６ｂに出力する。また、リードデータ合成回路４７は、設定レジスタ５１に格納された情報に従って、リードバッファ４６ｂに格納されているデータを、データバスＢＤＡの下位１６ビット［１５：０］に出力する。なお、アドレスバッファ４２ｂに格納されているアドレス及びライトバッファ５４ｂに格納されているデータはクリアされずに保持される。そして、データメモリ２３Ａｂからデータの読み出しが行われた後の適宜のタイミングで、アドレスバッファ４２ｂに格納されているアドレスがデータメモリ２３Ａｂのアドレス入力端子に入力され、書き込み要求（ＸＷＲ１＝“０”）が出力されることにより、データメモリ２３Ａｂに対してデータの書き込みが行われる。
【００６８】
図１８は、データサイズが３２ビットで、アドレス空間におけるアドレスが偶数であり、同一アドレスに対するライト動作に続くリード動作を示す図である。まず、Ａステージに、アドレス生成回路３３においてデータメモリ２３Ａａ，２３Ａｂに対する読み出しアドレスが生成される。そして、Ｅ１ステージに、データメモリ２３Ａａに対する読み出しアドレスがアドレスバスＢＤＡＡ０に出力され、データメモリ２３Ａｂに対する読み出しアドレスがアドレスバスＢＤＡＡ１に出力される。また、アドレス生成回路３３は、Ｅ１ステージに、データサイズが３２ビットであることを示す情報“０”と、アドレスが偶数であることを示す情報“０”とを設定レジスタ５１に書き込む。
【００６９】
図１８の場合、リードの前にライトが行われているため、パイプライン制御回路３２の制御により、アドレス比較回路４３ａは、アドレスバスＢＤＡＡ０に出力されているアドレスと、アドレスバッファ４２ａに格納されているアドレスとの比較結果を出力する。図１８の場合、これらのアドレスが同一であるため、アドレス選択回路４４ａは、アドレス比較回路４３ａから出力される比較結果に従って、アドレスバッファ４２ａに格納されているアドレスを、データメモリ２３Ａａのアドレス入力端子に入力する。また、リードデータ選択回路４５ａは、アドレス比較回路４３ａから出力される比較結果に従って、ライトバッファ５４ａに格納されているデータを、リードバッファ４６ａに出力する。同様に、アドレス比較回路４３ｂは、アドレスバスＢＤＡＡ１に出力されているアドレスと、アドレスバッファ４２ｂに格納されているアドレスとの比較結果を出力する。図１８の場合、これらのアドレスが同一であるため、アドレス選択回路４４ｂは、アドレス比較回路４３ｂから出力される比較結果に従って、アドレスバッファ４２ｂに格納されているアドレスを、データメモリ２３Ａｂのアドレス入力端子に入力する。また、リードデータ選択回路４５ｂは、アドレス比較回路４３ｂから出力される比較結果に従って、ライトバッファ５４ｂに格納されているデータを、リードバッファ４６ｂに出力する。そして、リードデータ合成回路４７は、設定レジスタ５１に格納された情報に従って、リードバッファ４６ａに格納されているデータをデータバスＢＤＡの上位１６ビット［３１：１６］に出力し、リードバッファ４６ｂに格納されているデータをデータバスＢＤＡの下位１６ビット［１５：０］に出力する。また、パイプライン制御回路３２からデータメモリ２３Ａａに対して書き込み要求（ＸＷＲ０＝“０”）が出力されると、ライトバッファ５４ａに格納されているデータが、データメモリ２３Ａａに書き込まれる。同様に、データメモリ２３Ａｂに対して書き込み要求（ＸＷＲ１＝“０”）が出力されると、ライトバッファ５４ｂに格納されているデータが、データメモリ２３Ａｂに書き込まれる。
【００７０】
図１９は、データサイズが３２ビットで、アドレス空間におけるアドレスが偶数であり、異なるアドレスに対するライト動作に続くリード動作を示す図である。まず、Ａステージに、アドレス生成回路３３においてデータメモリ２３Ａａ，２３Ａｂに対する読み出しアドレスが生成される。そして、Ｅ１ステージに、データメモリ２３Ａａに対する読み出しアドレスがアドレスバスＢＤＡＡ０に出力され、データメモリ２３Ａｂに対する読み出しアドレスがアドレスバスＢＤＡＡ１に出力される。また、アドレス生成回路３３は、Ｅ１ステージに、データサイズが３２ビットであることを示す情報“０”と、アドレスが偶数であることを示す情報“０”とを設定レジスタ５１に書き込む。
【００７１】
図１９の場合、リードの前にライトが行われているため、パイプライン制御回路３２の制御により、アドレス比較回路４３ａは、アドレスバスＢＤＡＡ０に出力されているアドレスと、アドレスバッファ４２ａに格納されているアドレスとの比較結果を出力する。図１９の場合、これらのアドレスが異なるため、アドレス選択回路４４ａは、アドレス比較回路４３ａから出力される比較結果に従って、アドレスバスＢＤＡＡ０に出力されているアドレスを、データメモリ２３Ａａのアドレス入力端子に入力する。また、パイプライン制御回路３２からデータメモリ２３Ａａに対して読み出し要求（ＸＲＤ０＝“０”）が出力されると、データメモリ２３Ａａから該当のデータが出力される。同様に、アドレス比較回路４３ｂは、アドレスバスＢＤＡＡ１に出力されているアドレスと、アドレスバッファ４２ｂに格納されているアドレスとの比較結果を出力する。図１９の場合、これらのアドレスが異なるため、アドレス選択回路４４ｂは、アドレス比較回路４３ｂから出力される比較結果に従って、アドレスバスＢＤＡＡ１に出力されているアドレスを、データメモリ２３Ａｂのアドレス入力端子に入力する。また、パイプライン制御回路３２からデータメモリ２３Ａｂに対して読み出し要求（ＸＲＤ１＝“０”）が出力されると、データメモリ２３Ａｂから該当のデータが出力される。
【００７２】
そして、リードデータ選択回路４５ａは、アドレス比較回路４３ａから出力される比較結果に従って、データメモリ２３Ａａから出力されるデータをリードバッファ４６ａに出力する。同様に、リードデータ選択回路４５ｂは、アドレス比較回路４３ｂから出力される比較結果に従って、データメモリ２３Ａｂから出力されるデータをリードバッファ４６ｂに出力する。また、リードデータ合成回路４７は、設定レジスタ５１に格納された情報に従って、リードバッファ４６ａに格納されているデータをデータバスＢＤＡの上位１６ビット［３１：１６］に出力し、リードバッファ４６ｂに格納されているデータをデータバスＢＤＡの下位１６ビット［１５：０］に出力する。なお、アドレスバッファ４２ａ，４２ｂに格納されているアドレス及びライトバッファ５４ａ，５４ｂに格納されているデータはクリアされずに保持される。そして、データメモリ２３Ａａ，２３Ａｂからデータの読み出しが行われた後の適宜のタイミングで、アドレスバッファ４２ａ，４２ｂに格納されているアドレスが夫々データメモリ２３Ａａ，２３Ａｂのアドレス入力端子に入力され、書き込み要求（ＸＷＲ０＝“０”、ＸＷＲ１＝“０”）が出力されることにより、データメモリ２３Ａａ，２３Ａｂに対してデータの書き込みが行われる。
【００７３】
図２０は、データサイズが３２ビットで、アドレス空間におけるアドレスが奇数であり、同一アドレスに対するライト動作に続くリード動作を示す図である。まず、Ａステージに、アドレス生成回路３３においてデータメモリ２３Ａａ，２３Ａｂに対する読み出しアドレスが生成される。そして、Ｅ１ステージに、データメモリ２３Ａａに対する読み出しアドレスがアドレスバスＢＤＡＡ０に出力され、データメモリ２３Ａｂに対する読み出しアドレスがアドレスバスＢＤＡＡ１に出力される。また、アドレス生成回路３３は、Ｅ１ステージに、データサイズが３２ビットであることを示す情報“０”と、アドレスが奇数であることを示す情報“１”とを設定レジスタ５１に書き込む。
【００７４】
図２０の場合、リードの前にライトが行われているため、パイプライン制御回路３２の制御により、アドレス比較回路４３ａは、アドレスバスＢＤＡＡ０に出力されているアドレスと、アドレスバッファ４２ａに格納されているアドレスとの比較結果を出力する。図２０の場合、これらのアドレスが同一であるため、アドレス選択回路４４ａは、アドレス比較回路４３ａから出力される比較結果に従って、アドレスバッファ４２ａに格納されているアドレスを、データメモリ２３Ａａのアドレス入力端子に入力する。また、リードデータ選択回路４５ａは、アドレス比較回路４３ａから出力される比較結果に従って、ライトバッファ５４ａに格納されているデータを、リードバッファ４６ａに出力する。同様に、アドレス比較回路４３ｂは、アドレスバスＢＤＡＡ１に出力されているアドレスと、アドレスバッファ４２ｂに格納されているアドレスとの比較結果を出力する。図２０の場合、これらのアドレスが同一であるため、アドレス選択回路４４ｂは、アドレス比較回路４３ｂから出力される比較結果に従って、アドレスバッファ４２ｂに格納されているアドレスを、データメモリ２３Ａｂのアドレス入力端子に入力する。また、リードデータ選択回路４５ｂは、アドレス比較回路４３ｂから出力される比較結果に従って、ライトバッファ５４ｂに格納されているデータを、リードバッファ４６ｂに出力する。そして、リードデータ合成回路４７は、設定レジスタ５１に格納された情報に従って、リードバッファ４６ｂに格納されているデータをデータバスＢＤＡの上位１６ビット［３１：１６］に出力し、リードバッファ４６ａに格納されているデータをデータバスＢＤＡの下位１６ビット［１５：０］に出力する。また、パイプライン制御回路３２からデータメモリ２３Ａａに対して書き込み要求（ＸＷＲ０＝“０”）が出力されると、ライトバッファ５４ａに格納されているデータが、データメモリ２３Ａａに書き込まれる。同様に、データメモリ２３Ａｂに対して書き込み要求（ＸＷＲ１＝“０”）が出力されると、ライトバッファ５４ｂに格納されているデータが、データメモリ２３Ａｂに書き込まれる。
【００７５】
図２１は、データサイズが３２ビットで、アドレス空間におけるアドレスが奇数であり、異なるアドレスに対するライト動作に続くリード動作を示す図である。まず、Ａステージに、アドレス生成回路３３においてデータメモリ２３Ａａ，２３Ａｂに対する読み出しアドレスが生成される。そして、Ｅ１ステージに、データメモリ２３Ａａに対する読み出しアドレスがアドレスバスＢＤＡＡ０に出力され、データメモリ２３Ａｂに対する読み出しアドレスがアドレスバスＢＤＡＡ１に出力される。また、アドレス生成回路３３は、Ｅ１ステージに、データサイズが３２ビットであることを示す情報“０”と、アドレスが奇数であることを示す情報“１”とを設定レジスタ５１に書き込む。
【００７６】
図２１の場合、リードの前にライトが行われているため、パイプライン制御回路３２の制御により、アドレス比較回路４３ａは、アドレスバスＢＤＡＡ０に出力されているアドレスと、アドレスバッファ４２ａに格納されているアドレスとの比較結果を出力する。図２１の場合、これらのアドレスが異なるため、アドレス選択回路４４ａは、アドレス比較回路４３ａから出力される比較結果に従って、アドレスバスＢＤＡＡ０に出力されているアドレスを、データメモリ２３Ａａのアドレス入力端子に入力する。また、パイプライン制御回路３２からデータメモリ２３Ａａに対して読み出し要求（ＸＲＤ０＝“０”）が出力されると、データメモリ２３Ａａから該当のデータが出力される。同様に、アドレス比較回路４３ｂは、アドレスバスＢＤＡＡ１に出力されているアドレスと、アドレスバッファ４２ｂに格納されているアドレスとの比較結果を出力する。図２１の場合、これらのアドレスが異なるため、アドレス選択回路４４ｂは、アドレス比較回路４３ｂから出力される比較結果に従って、アドレスバスＢＤＡＡ１に出力されているアドレスを、データメモリ２３Ａｂのアドレス入力端子に入力する。また、パイプライン制御回路３２からデータメモリ２３Ａｂに対して読み出し要求（ＸＲＤ１＝“０”）が出力されると、データメモリ２３Ａｂから該当のデータが出力される。
【００７７】
そして、リードデータ選択回路４５ａは、アドレス比較回路４３ａから出力される比較結果に従って、データメモリ２３Ａａから出力されるデータをリードバッファ４６ａに出力する。同様に、リードデータ選択回路４５ｂは、アドレス比較回路４３ｂから出力される比較結果に従って、データメモリ２３Ａｂから出力されるデータをリードバッファ４６ｂに出力する。また、リードデータ合成回路４７は、設定レジスタ５１に格納された情報に従って、リードバッファ４６ｂに格納されているデータをデータバスＢＤＡの上位１６ビット［３１：１６］に出力し、リードバッファ４６ａに格納されているデータをデータバスＢＤＡの下位１６ビット［１５：０］に出力する。なお、アドレスバッファ４２ａ，４２ｂに格納されているアドレス及びライトバッファ５４ａ，５４ｂに格納されているデータはクリアされずに保持される。そして、データメモリ２３Ａａ，２３Ａｂからデータの読み出しが行われた後の適宜のタイミングで、アドレスバッファ４２ａ，４２ｂに格納されているアドレスが夫々データメモリ２３Ａａ，２３Ａｂのアドレス入力端子に入力され、書き込み要求（ＸＷＲ０＝“０”、ＸＷＲ１＝“０”）が出力されることにより、データメモリ２３Ａａ，２３Ａｂに対してデータの書き込みが行われる。
【００７８】
図２２は、リード動作時のタイミングを示す図である。ここでは、図６に示したようにリード動作が行われる場合を例として説明する。まず、Ａステージにおけるクロックの立ち上がり（第１のタイミング）を契機として、アドレス生成回路３３において読み出しアドレスが生成され、時刻ｔ１に、アドレスバスＢＤＡＡ０にアドレスが出力される。そして、時刻ｔ２における、クロックの次の立ち上がり（第２のタイミング）を契機として、データメモリ２３Ａａに対して読み出し要求（ＸＲＤ０＝“０”）が出力され、時刻ｔ３から、データメモリ２３Ａａから該当のデータの出力が開始される。さらに、時刻ｔ４における、クロックの次の立ち上がりを契機として、データメモリ２３Ａａから出力されるデータがリードバッファ４６ａに取り込まれる。さらに、時刻ｔ５における、クロックの次の立ち上がりを契機として、リードバッファ４６ａに格納されているデータがデータバスＢＤＡの下位１６ビット［１５：０］に出力され、レジスタ２４に格納される。そして、レジスタ２４に格納されたデータは、演算回路２５による演算処理に用いられる。
【００７９】
このように、ＤＳＰ１０では、Ｅ１ステージの１つ前のクロックサイクルであるＡステージに、読み出しアドレスがアドレスバスＢＤＡＡに出力されている。したがって、例えば、Ｅ１ステージにおけるクロックの立ち上がりを契機として読み出しアドレスをアドレスバスＢＤＡＡに出力し、Ｅ１ステージにおけるクロックの立ち下がりを契機としてデータメモリ２３Ａａ，２３Ａｂにデータの読み出し要求を出力する場合と比較して、読み出しアドレスをセットアップする時間に余裕を持たせることができる。また、ＤＳＰ１０では、データメモリ２３Ａａ，２３Ａｂから出力されるデータが、Ｅ２ステージにリードバッファに取り込まれる。したがって、例えば、Ｅ１ステージにおけるクロックの立ち下がりを契機としてデータメモリ２３Ａａ，２３Ａｂにデータの読み出し要求が出力され、Ｅ２ステージにおけるクロックの立ち上がりを契機としてレジスタ２４にデータを取り込む場合と比較して、読み出しデータの格納をセットアップする時間に余裕を持たせることができる。そして、ＤＳＰ１０では、セットアップ時間に余裕が生じる結果、クロックの周波数を上げることが可能となり、ＤＳＰ１０における処理速度を向上させることができる。
【００８０】
図２３は、ライト動作時のタイミングを示す図である。ここでは、図１５に示したようにライト動作に続いて異なるアドレスに対するリード動作が行われる場合を例として説明する。まず、ライト動作のＥ２ステージ（第１のタイミング）である時刻ｔ６に、アドレスレジスタ４１ａにアドレスが取り込まれ、データバスＢＤＡの下位１６ビット［１５：０］に書き込みデータが出力される。そして、時刻ｔ７における、次のクロックの立ち上がり（第２のタイミング）を契機として、アドレスレジスタ４１ａに格納されているアドレスがアドレスバッファ４２ａに取り込まれ、データバスＢＤＡの下位１６ビット［１５：０］に出力されているデータがライトバッファ５４ａに取り込まれる。そして、図１５に示した例では、書き込みアドレスと読み出しアドレスとが異なるため、時刻ｔ８における、クロックの次の立ち上がり（リード動作のＥ１ステージが始まるタイミング）を契機として、データメモリ２３Ａａに対して読み出し要求（ＸＲＤ０＝“０”）が出力され、データメモリ２３Ａａから該当のデータが出力される。なお、アドレスバッファ４２ａに格納されたアドレス及びライトバッファ５４ａに格納されたデータはクリアされずに保持されている。そして、時刻ｔ９における、次のクロックの立ち上がりを契機として、アドレスバッファ４２ａに格納されているアドレスがデータメモリ２３Ａａのアドレス入力端子に入力され、データメモリ２３Ａａに対して書き込み要求（ＸＷＲ０＝“０”）が出力されることにより、データメモリ２３Ａａにデータが書き込まれる。なお、アドレスの異なるリード動作が複数連続する場合は、そのリード動作が完了するまでの間、アドレスバッファ４２ａに格納されたアドレス及びライトバッファ５４ａに格納されたデータは保持され、リード動作完了後に、データメモリ２３Ａａへの書き込みが行われることとなる。
【００８１】
このように、ＤＳＰ１０では、Ｅ２ステージの次のクロックサイクルに、アドレスバッファ４２ａ，４２ｂにアドレスが取り込まれ、ライトバッファ５４ａ，５４ｂに書き込みデータが取り込まれる。そして、その後のクロックサイクルにおけるクロックの立ち上がりを契機として、データメモリ２３Ａａ，２３Ａｂに対して書き込み要求が出力される。したがって、例えば、Ｅ２ステージにおけるクロックの立ち上がりを契機としてデータメモリ２３Ａａ，２３Ａｂに対する書き込みアドレス及び書き込みデータの出力を開始し、Ｅ２ステージにおけるクロックの立ち下がりを契機としてデータメモリ２３Ａａ，２３Ａｂに対する書き込み要求を出力する場合と比較して、書き込みアドレス及び書き込みデータをセットアップする時間に余裕を持たせることができる。そして、ＤＳＰ１０では、セットアップ時間に余裕が生じる結果、クロックの周波数を上げることが可能となり、ＤＳＰ１０における処理速度を向上させることができる。
【００８２】
また、ＤＳＰ１０では、ライト動作に続いて、異なるアドレスに対するリード動作が行われる場合には、データメモリ２３Ａａに対するリードアクセスを優先して行っている。また、ＤＳＰ１０では、ライト動作に続いて、同一のアドレスに対するリード動作が行われる場合には、ライトバッファ５４ａ，５４ｂに格納されているデータを読み出しデータとして出力するとともに、ライトバッファ５４ａ，５４ｂに格納されているデータをデータメモリ２３Ａａ，２３Ａｂに書き込んでいる。つまり、ＤＳＰ１０では、先行するライト動作によって後続のリード動作が待たされることがなく、演算回路２５でのデータ待ち時間が短くなり、処理速度を向上させることができる。
【００８３】
以上、本発明の実施形態について説明した。前述したように、ＤＳＰ１０では、２つのデータメモリ２３Ａａ，２３Ａｂの少なくとも一方から出力されるデータから、読み出しデータのデータサイズに関する情報及び読み出しデータに対するアドレス空間におけるアドレスに関する情報に基づいて読み出しデータを生成して出力することができる。つまり、データメモリ２３Ａａ，２３Ａｂの何れか一方のみからデータを読み出すことも可能であるし、データメモリ２３Ａａ，２３Ａｂの両方からデータを読み出すことも可能である。そして、データメモリ２３Ａａ，２３Ａｂの両方からデータを読み出した場合、読み出された２つのデータを、演算回路２５を構成する１つの乗累算器に対する２つの入力データとして用いることができる。さらに、メモリアクセス回路２１Ｂからも同様に２つデータが同時に読み出されることが可能となるため、ＤＳＰ１０全体では、４つのデータを同時に読み出すことが可能となる。したがって、演算回路２５を構成する２つの乗累算器の演算を同時に行うことが可能となる。このように、ＤＳＰ１０では、効率的なメモリアクセスが実現されており、ＤＳＰ１０での演算処理が高速化される。
【００８４】
また、ＤＳＰ１０のメモリアクセス回路２１Ａでは、アドレス空間における偶数アドレスのデータをデータメモリ２３Ａａに格納し、奇数アドレスのデータをデータメモリ２３Ａｂに格納している。そして、リードデータ合成回路４７は、読み出しデータのアドレスが偶数／奇数の何れであるか、また、読み出しデータのデータサイズが１６ビット（Ｎビット）であるか３２ビット（２Ｎビット）であるかに応じて、読み出しデータを生成している。つまり、ＤＳＰ１０では、メモリアクセス回路２１Ａを介して、１６ビットのデータを１つ読み出すことも可能であるし、１６ビットのデータを同時に２つ読み出すことも可能である。同様に、ＤＳＰ１０では、メモリアクセス回路２１Ｂを介して、１６ビットのデータを１つ読み出すことも可能であるし、１６ビットのデータを同時に２つ読み出すことも可能である。つまり、ＤＳＰ１０では、１６ビットのデータを最大で４つ同時に読み出すことが可能となる。このように、ＤＳＰ１０では効率的なメモリアクセスが実現することにより、処理速度を向上させることができる。
【００８５】
また、ＤＳＰ１０では、書き込みデータのデータサイズに関する情報及び書き込みデータに対するアドレス空間におけるアドレスに関する情報に基づいて、データメモリ２３Ａａ，２３Ａｂの少なくとも一方に対してデータを書き込むことが可能である。つまり、データメモリ２３Ａａ，２３Ａｂの何れか一方のみに対してデータを書き込むことも可能であるし、データメモリ２３Ａａ，２３Ａｂの両方に対してデータを書き込むことも可能である。さらに、メモリアクセス回路２１Ｂを介しても同様にデータを書き込むことが可能となるため、ＤＳＰ１０全体では、４つのデータを同時に書き込むことが可能となる。このように、ＤＳＰ１０では効率的なメモリアクセスが実現することにより、処理速度を向上させることができる。
【００８６】
また、ＤＳＰ１０のメモリアクセス回路２１Ａでは、アドレス空間における偶数アドレスのデータをデータメモリ２３Ａａに格納し、奇数アドレスのデータをデータメモリ２３Ａｂに格納している。そして、ライトデータ選択回路５３は、書き込みデータのアドレスが偶数／奇数の何れであるか、また、書き込みデータのデータサイズが１６ビット（Ｎビット）であるか３２ビット（２Ｎビット）であるかに応じて、データバスＢＤＡに出力されたデータをライトバッファ５４ａ，５４ｂに出力している。つまり、ＤＳＰ１０では、メモリアクセス回路２１Ａを介して、１６ビットのデータを１つ書き込むことも可能であるし、１６ビットのデータを同時に２つ書き込むことも可能である。同様に、ＤＳＰ１０では、メモリアクセス回路２１Ｂを介して、１６ビットのデータを１つ書き込むことも可能であるし、１６ビットのデータを同時に２つ書き込むことも可能である。したがって、ＤＳＰ１０では、１６ビットのデータを最大で４つ同時に書き込むことが可能となる。このように、ＤＳＰ１０では効率的なメモリアクセスが実現することにより、処理速度を向上させることができる。
【００８７】
また、ＤＳＰ１０のメモリアクセス回路２１Ａでは、ライト動作に続いてリード動作が行われる場合、ライト動作によって後続のリード動作が待たされることのないように制御されている。つまり、ライト動作に続いてリード動作が行われる場合、書き込みアドレスと読み出しアドレスとが異なる場合は、データメモリ２３Ａａ，２３Ａｂへの書き込みの前に、データメモリ２３Ａａ，２３Ａｂからの読み出しが行われる。また、書き込みアドレスと読み出しアドレスとが同一である場合は、ライトバッファ５４ａ，５４ｂに格納されているデータから読み出しデータが生成されるとともに、データメモリ２３Ａａ，２３Ａｂへの書き込みが行われる。これにより、ライト動作に続いてリード動作が行われる場合に、先行するライト動作によって後続のリード動作が待たされることがなく、演算回路２５でのデータ待ち時間が短くなる。つまり、ＤＳＰ１０では効率的なメモリアクセスが実現することにより、処理速度を向上させることができる。
【００８８】
また、ＤＳＰ１０のメモリアクセス回路２１Ａでは、リード動作時における読み出しアドレスのセットアップ時間に余裕がある。そのため、クロックの周波数を上げることが可能となり、ＤＳＰ１０の処理速度を向上させることができる。
【００８９】
また、ＤＳＰ１０のメモリアクセス回路２１Ａでは、ライト動作時における書き込みアドレス及び書き込みデータのセットアップ時間に余裕がある。そのため、クロックの周波数を上げることが可能となり、ＤＳＰ１０の処理速度を向上させることができる。
【００９０】
なお、上記実施形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物も含まれる。
【図面の簡単な説明】
【００９１】
【図１】本発明のメモリアクセス装置の一実施形態であるデジタル信号処理回路の構成例を示す図である。
【図２】ＤＳＰにおけるパイプライン制御の例を示す図である。
【図３】ＤＳＰにおける制御回路及びメモリアクセス回路の詳細な構成例を示す図である。
【図４】データメモリのアドレス構成例を示す図である。
【図５】データメモリへのアクセスパターンを示す図である。
【図６】データサイズが１６ビットで、アドレス空間におけるアドレスが偶数である場合のライト動作を示す図である。
【図７】データサイズが１６ビットで、アドレス空間におけるアドレスが奇数である場合のライト動作を示す図である。
【図８】データサイズが３２ビットで、アドレス空間におけるアドレスが偶数である場合のライト動作を示す図である。
【図９】データサイズが３２ビットで、アドレス空間におけるアドレスが奇数である場合のライト動作を示す図である。
【図１０】データサイズが１６ビットで、アドレス空間におけるアドレスが偶数である場合のリード動作を示す図である。
【図１１】データサイズが１６ビットで、アドレス空間におけるアドレスが奇数である場合のリード動作を示す図である。
【図１２】データサイズが３２ビットで、アドレス空間におけるアドレスが偶数である場合のリード動作を示す図である。
【図１３】データサイズが３２ビットで、アドレス空間におけるアドレスが奇数である場合のリード動作を示す図である。
【図１４】データサイズが１６ビットで、アドレス空間におけるアドレスが偶数であり、同一アドレスに対するライト動作に続くリード動作を示す図である。
【図１５】データサイズが１６ビットで、アドレス空間におけるアドレスが偶数であり、異なるアドレスに対するライト動作に続くリード動作を示す図である。
【図１６】データサイズが１６ビットで、アドレス空間におけるアドレスが奇数であり、同一アドレスに対するライト動作に続くリード動作を示す図である。
【図１７】データサイズが１６ビットで、アドレス空間におけるアドレスが奇数であり、異なるアドレスに対するライト動作に続くリード動作を示す図である。
【図１８】データサイズが３２ビットで、アドレス空間におけるアドレスが偶数であり、同一アドレスに対するライト動作に続くリード動作を示す図である。
【図１９】データサイズが３２ビットで、アドレス空間におけるアドレスが偶数であり、異なるアドレスに対するライト動作に続くリード動作を示す図である。
【図２０】データサイズが３２ビットで、アドレス空間におけるアドレスが奇数であり、同一アドレスに対するライト動作に続くリード動作を示す図である。
【図２１】データサイズが３２ビットで、アドレス空間におけるアドレスが奇数であり、異なるアドレスに対するライト動作に続くリード動作を示す図である。
【図２２】リード動作時のタイミングを示す図である。
【図２３】ライト動作時のタイミングを示す図である。
【符号の説明】
【００９２】
１０  デジタル信号処理回路（ＤＳＰ）
２０  制御回路
２１Ａ，２１Ｂ  メモリアクセス回路
２２  プログラムメモリ
２３Ａａ，２３Ａｂ，２３Ｂａ，２３Ｂｂ  データメモリ
２４  レジスタ
２５  演算回路
ＢＤＡＡ，ＢＤＡＢ  アドレスバス
ＢＤＡ，ＢＤＢ  データバス
３１  フェッチ回路
３２  パイプライン制御回路
３３  アドレス生成回路
４１ａ，４１ｂ  アドレスレジスタ
４２ａ，４２ｂ  アドレスバッファ
４３ａ，４３ｂ  アドレス比較回路
４４ａ，４４ｂ  アドレス選択回路
４５ａ，４５ｂ  リードデータ選択回路
４６ａ，４６ｂ  リードバッファ
４７  リードデータ合成回路
５１，５２  設定レジスタ
５３  ライトデータ選択回路
【図１】
2008077418.tif 000003
【図２】
2008077418.tif 000004
【図３】
2008077418.tif 000005
【図４】
2008077418.tif 000006
【図５】
2008077418.tif 000007
【図６】
2008077418.tif 000008
【図７】
2008077418.tif 000009
【図８】
2008077418.tif 000010
【図９】
2008077418.tif 000011
【図１０】
2008077418.tif 000012
【図１１】
2008077418.tif 000013
【図１２】
2008077418.tif 000014
【図１３】
2008077418.tif 000015
【図１４】
2008077418.tif 000016
【図１５】
2008077418.tif 000017
【図１６】
2008077418.tif 000018
【図１７】
2008077418.tif 000019
【図１８】
2008077418.tif 000020
【図１９】
2008077418.tif 000021
【図２０】
2008077418.tif 000022
【図２１】
2008077418.tif 000023
【図２２】
2008077418.tif 000024
【図２３】
2008077418.tif 000025