JP2008077418A - メモリアクセス装置 - Google Patents

メモリアクセス装置 Download PDF

Info

Publication number
JP2008077418A
JP2008077418A JP2006256162A JP2006256162A JP2008077418A JP 2008077418 A JP2008077418 A JP 2008077418A JP 2006256162 A JP2006256162 A JP 2006256162A JP 2006256162 A JP2006256162 A JP 2006256162A JP 2008077418 A JP2008077418 A JP 2008077418A
Authority
JP
Japan
Prior art keywords
address
data
output
read
write
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2006256162A
Other languages
English (en)
Inventor
Iwao Honda
巌 本田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sanyo Electric Co Ltd
System Solutions Co Ltd
Original Assignee
Sanyo Electric Co Ltd
Sanyo Semiconductor Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sanyo Electric Co Ltd, Sanyo Semiconductor Co Ltd filed Critical Sanyo Electric Co Ltd
Priority to JP2006256162A priority Critical patent/JP2008077418A/ja
Priority to CNB2007101366496A priority patent/CN100527109C/zh
Priority to US11/832,536 priority patent/US7702860B2/en
Priority to KR1020070095856A priority patent/KR20080027175A/ko
Publication of JP2008077418A publication Critical patent/JP2008077418A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store

Abstract

【課題】効率的なメモリアクセスを実現する。
【解決手段】メモリアクセス装置は、読み出しデータのデータサイズ及びアドレス空間におけるアドレスに基づいて、第1及び第2メモリの少なくとも一方に対する読み出しアドレスを出力するアドレス出力部と、読み出しデータのデータサイズ及びアドレス空間におけるアドレスに基づいて、第1及び第2メモリの少なくとも一方に対して読み出し要求を出力するアクセス要求出力部と、読み出しデータのデータサイズに関する情報及びアドレスに関する情報を出力するデータ情報出力部と、読み出しアドレスと、読み出し要求とに応じて第1及び第2メモリの少なくとも一方から出力されるデータから、データサイズに関する情報及びアドレスに関する情報に基づいて読み出しデータを生成して出力する読み出しデータ出力部と、を備える。
【選択図】図3

Description

本発明は、メモリアクセス装置に関する。
DSP(Digital Signal Processor)等の処理回路では、データ処理を高速に行うために、複数のメモリを内蔵する場合がある。例えば、特許文献1に開示されたDSPは、データを格納するためのメモリを2つ備えており、これら2つのメモリに同時にアクセス可能とするために、アドレスバス及びデータバスが2組設けられている。そして、このようなDSPでは、例えば乗累算器(MAC:Multiply Accumulator)に入力される2つのデータを、2つのメモリから2つのバスを経由して同時に読み出すことにより、演算処理の高速化を実現している。
特開2006−190389号公報
DSPにおける演算処理を更に高速化するための手法として、乗累算器を複数設けることが考えられる。ところが、例えば、前述したように2つのデータを同時に読み出すことが可能なDSPにおいて乗累算器を2つ設けたとしても、メモリから同時に読み出すことが可能なデータは2つである。そのため、2つの乗累算器での演算を同時に行おうとしても、一方の乗累算器の入力データの読み出しは、他方の乗累算器の入力データの読み出し完了後にしか行うことができず、DSPにおける演算処理を効果的に高速化することができない。
本発明は上記課題を鑑みてなされたものであり、効率的なメモリアクセスを実現可能なメモリアクセス装置を提供することを目的とする。
上記目的を達成するため、本発明のメモリアクセス装置は、第1及び第2メモリにアクセスするメモリアクセス装置であって、読み出しデータのデータサイズ及びアドレス空間におけるアドレスに基づいて、前記第1及び第2メモリの少なくとも一方に対する読み出しアドレスを出力するアドレス出力部と、前記読み出しデータの前記データサイズ及び前記アドレス空間における前記アドレスに基づいて、前記第1及び第2メモリの少なくとも一方に対して読み出し要求を出力するアクセス要求出力部と、前記読み出しデータの前記データサイズに関する情報及び前記アドレスに関する情報を出力するデータ情報出力部と、前記アドレス出力部から出力される前記読み出しアドレスと、前記アクセス要求出力部から出力される前記読み出し要求とに応じて前記第1及び第2メモリの少なくとも一方から出力されるデータから、前記データ情報出力部から出力される前記データサイズに関する情報及び前記アドレスに関する情報に基づいて前記読み出しデータを生成して出力する読み出しデータ出力部と、を備えることとする。
また、前記メモリアクセス装置において、前記第1メモリには、前記アドレス空間における偶数アドレスのNビット幅のデータが格納され、前記第2メモリには、前記アドレス空間における奇数アドレスのNビット幅のデータが格納され、前記アドレス出力部は、前記読み出しデータの前記データサイズがNビットである場合は、前記アドレス空間における前記アドレスに応じた前記読み出しアドレスを前記第1又は第2メモリに出力し、前記読み出しデータの前記データサイズが2Nビットである場合は、前記アドレス空間における前記アドレスに応じた前記読み出しアドレスを前記第1及び第2メモリに出力し、前記読み出しデータ出力部は、前記読み出しデータの前記データサイズがNビットである場合は、前記第1又は第2メモリから出力されるデータを、前記読み出しデータとして出力し、前記読み出しデータの前記データサイズが2Nビットであり、前記アドレス空間における前記アドレスが偶数アドレスの場合は、前記第1メモリから出力されるデータを上位ビット、前記第2メモリから出力されるデータを下位ビットとして前記読み出しデータを生成して出力し、前記読み出しデータの前記データサイズが2Nビットであり、前記アドレス空間における前記アドレスが奇数アドレスの場合は、前記第2メモリから出力されるデータを上位ビット、前記第1メモリから出力されるデータを下位ビットとして前記読み出しデータを生成して出力することとすることができる。
また、前記メモリアクセス装置において、前記アドレス出力部は、書き込みデータのデータサイズ及びアドレス空間におけるアドレスに基づいて、前記第1及び第2メモリの少なくとも一方に対する書き込みアドレスを出力し、前記アクセス要求出力部は、前記書き込みデータの前記データサイズ及び前記アドレス空間における前記アドレスに基づいて、前記第1及び第2メモリの少なくとも一方に対して書き込み要求を出力し、前記データ情報出力部は、前記書き込みデータの前記データサイズに関する情報及び前記アドレスに関する情報を出力し、前記データ情報出力部から出力される前記データサイズに関する情報及び前記アドレスに関する情報に基づいて、前記第1及び第2メモリの少なくとも一方に前記書き込みデータを出力する書き込みデータ出力部を更に備えることとすることもできる。
また、前記メモリアクセス装置において、前記第1メモリには、前記アドレス空間における偶数アドレスのNビット幅のデータが格納され、前記第2メモリには、前記アドレス空間における奇数アドレスのNビット幅のデータが格納され、前記アドレス出力部は、前記書き込みデータの前記データサイズがNビットである場合は、前記アドレス空間における前記アドレスに応じた前記書き込みアドレスを前記第1又は第2メモリに出力し、前記書き込みデータの前記データサイズが2Nビットである場合は、前記アドレス空間における前記アドレスに応じた前記書き込みアドレスを前記第1及び第2メモリに出力し、前記書き込みデータ出力部は、前記書き込みデータの前記データサイズがNビットであり、前記アドレス空間における前記アドレスが偶数アドレスの場合は、前記書き込みデータを前記第1メモリに出力し、前記書き込みデータの前記データサイズがNビットであり、前記アドレス空間における前記アドレスが奇数アドレスの場合は、前記書き込みデータを前記第2メモリに出力し、前記書き込みデータの前記データサイズが2Nビットであり、前記アドレス空間にける前記アドレスが偶数アドレスの場合は、前記書き込みデータの上位Nビットを前記第1メモリに出力し、前記書き込みデータの下位Nビットを前記第2メモリに出力し、前記書き込みデータの前記データサイズが2Nビットであり、前記アドレス空間にける前記アドレスが奇数アドレスの場合は、前記書き込みデータの上位Nビットを前記第2メモリに出力し、前記書き込みデータの下位Nビットを前記第1メモリに出力することとすることもできる。
また、前記メモリアクセス装置において、前記アドレス出力部から出力される前記書き込みアドレスが記憶される書き込みアドレス記憶部と、前記書き込みデータ出力部から出力される前記書き込みデータが前記第1又は第2メモリに書き込まれる前に記憶される書き込みデータ記憶部と、前記アドレス出力部から出力される前記読み出しアドレスと、前記書き込みアドレス記憶部に記憶されている前記書き込みアドレスとが異なる場合は、前記読み出しアドレスを前記第1又は第2メモリに出力するアドレス選択回路と、を更に備え、前記読み出しデータ出力部は、前記アドレス出力部から出力される前記読み出しアドレスと、前記書き込みアドレス記憶部に記憶されている前記書き込みアドレスとが異なる場合は、前記第1又は第2メモリの少なくとも一方から出力されるデータから前記読み出しデータを生成して出力し、前記アドレス出力部から出力される前記読み出しアドレスと、前記書き込みアドレス記憶部に記憶されている前記書き込みアドレスとが同じである場合は、前記書き込みデータ記憶部に記憶されている前記書き込みデータを出力することとすることもできる。
また、前記メモリアクセス装置において、前記アドレス出力部は、クロックが一方の論理レベルから他方の論理レベルに変化する第1のタイミングで、前記読み出しアドレスを出力し、前記アクセス要求出力部は、前記第1のタイミングの次に、前記クロックが前記一方の論理レベルから前記他方の論理レベルに変化する第2のタイミングで前記読み出し要求を出力することとすることもできる。
また、前記メモリアクセス装置において、前記アドレス出力部は、クロックが一方の論理レベルから他方の論理レベルに変化する第1のタイミングで、前記書き込みアドレスを出力し、前記アクセス要求部は、前記第1のタイミングの次に、前記クロックが前記一方の論理レベルから前記他方の論理レベルに変化する第2のタイミングで、前記アドレス出力部から出力される前記書き込みアドレスを前記アドレス記憶部に記憶させるとともに、前記書き込みデータ出力部から出力される前記書き込みデータを前記書き込みデータ記憶部に記憶させることとすることもできる。
効率的なメモリアクセスを実現可能なメモリアクセス装置を提供することができる。
==回路構成==
図1は、本発明のメモリアクセス装置の一実施形態であるデジタル信号処理回路(DSP:Digital Signal Processor)の構成例を示す図である。DSP10は、制御回路20、メモリアクセス回路21A,21B、プログラムメモリ22、データメモリ23Aa,23Ab,23Ba,23Bb、レジスタ24、演算回路25、アドレスバスBDAA,BDAB、及びデータバスBDA,BDBを含んで構成される。
制御回路20は、プログラムメモリ22に格納されたプログラムを読み出して実行することにより、デジタル信号処理回路10における様々な制御を行う。例えば、制御回路20は、デジタル信号処理回路10におけるパイプライン処理の制御や、メモリアクセス回路21A,21Bを介したデータメモリ23Aa〜23Bbへのアクセス制御、演算回路25における演算処理の実行制御等を行う。
メモリアクセス回路21Aは、制御回路20からの指示に応じて、データメモリ23Aa,23Abへのアクセスを制御する。また、メモリアクセス回路21Bは、制御回路20からの指示に応じて、データメモリ23Ba,23Bbへのアクセスを制御する。
プログラムメモリ22は、例えば、フラッシュメモリ等の不揮発性の記憶領域であり、制御回路20によって実行されるプログラムが格納される。なお、プログラムメモリ22は、デジタル信号処理回路10の外部に設けられることとしてもよい。また、プログラムメモリ22を揮発性のメモリとし、デジタル信号処理回路10の外部からプログラムを読み込むこととしてもよい。
データメモリ23Aa,23Ab,23Ba,23Bbは、例えば、SRAM(Static Random Access Memory)等の記憶領域であり、DSP10の各種処理で使用されるデータや生成されるデータが格納される。なお、データメモリ23Aa,23Ab,23Ba,23Bbは、デジタル信号処理回路10の外部に設けられることとしてもよい。
レジスタ24は、複数の汎用レジスタ等により構成される記憶領域であり、主に、データメモリ23Aa,23Ab,23Ba,23Bbから読み出されたデータや、演算回路25での処理結果等の一時的な格納領域として用いられる。
演算回路25は、レジスタ24に格納されたデータを入力データとして、乗算や加算等の演算を行う回路である。本実施形態の演算回路25には、2つの乗累算器(MAC:Multiply Accumulator)が含まれており、レジスタ24から4つのデータを同時に読み出すことにより、2つの乗累算器での演算を同時に行うことができる。
アドレスバスBDAAは、例えば24ビットのアドレスバスBDAA0,BDAA1により構成されるバスであり、データメモリ23Aa,23Abからデータを読み出す際のアドレス(読み出しアドレス)、または、データメモリ23Aa,23Abにデータを書き込む際のアドレス(書き込みアドレス)が出力される。また、データバスBDAは、例えば32ビットのデータバスであり、データメモリ23Aa,23Abから読み出されたデータ(読み出しデータ)、または、データメモリ23Aa,23Abに書き込まれるデータ(書き込みデータ)が出力される。
アドレスバスBDABは、例えば24ビットのアドレスバスBDAB0,BDAB1により構成されるバスであり、データメモリ23Ba,23Bbからデータを読み出す際のアドレス(読み出しアドレス)、または、データメモリ23Ba,23Bbにデータを書き込む際のアドレス(書き込みアドレス)が出力される。また、データバスBDBは、例えば32ビットのデータバスであり、データメモリ23Ba,23Bbから読み出されたデータ(読み出しデータ)、または、データメモリ23Ba,23Bbに書き込まれるデータ(書き込みデータ)が出力される。
図2は、DSP10におけるパイプライン制御の例を示す図である。DSP10では、制御回路20の制御により、パイプライン制御が行われる。パイプライン制御では、一連の処理が複数のステージに分割され、複数の処理の各ステージにおける動作が並行して実行される。図2に示す例では、フェッチステージ(Fステージ)、デコードステージ(Dステージ)、アドレス生成ステージ(Aステージ)、実行ステージ(E1ステージ)、実行ステージ(E2ステージ)の5つのステージに分割されている。そして、例えば、時刻(クロックサイクル)T1のFステージに処理Aのフェッチ(フェッチA)が行われると、続いて時刻T2のDステージに、フェッチされた命令のデコード(デコードA)が行われる。その後、時刻T3のAステージに、データにアクセスするためのアドレス生成(アドレスA)が行われ、時刻T4のE1ステージに例えば乗算等が実行され(実行A1)、時刻T5のE2ステージに加算等が実行される(実行A2)。そして、各ステージの動作は並行して実行可能であるため、例えば、時刻T2のFステージに処理Bのフェッチ(フェッチB)が行われ、時刻T3のDステージに処理Bのデコード(デコードB)が行われる。
図3は、DSP10における制御回路20及びメモリアクセス回路21Aの詳細な構成例を示す図である。制御回路20は、フェッチ回路31、パイプライン制御回路32、及びアドレス生成回路33を含んで構成される。また、メモリアクセス回路21Aは、アドレスレジスタ41a,41b、アドレスバッファ42a,42b、アドレス比較回路43a,43b、アドレス選択回路44a,44b、リードデータ選択回路45a,45b、リードバッファ46a,46b、リードデータ合成回路47、設定レジスタ51,52、ライトデータ選択回路53、及びライトバッファ54a,54bを含んで構成される。なお、データメモリ23Aaが本発明の第1メモリに相当し、データメモリ23Abが本発明の第2メモリに相当する。また、パイプライン制御回路32によって本発明のアクセス要求出力部が実現され、アドレス生成回路33によって本発明のアドレス出力部及びデータ情報出力部が実現される。また、リードデータ選択回路45a、リードバッファ46a、リードデータ合成回路47によって本発明の読み出しデータ出力部が実現される。また、ライトデータ選択回路53によって本発明の書き込みデータ出力部が実現され、アドレスバッファ42a,42bによって本発明の書き込みアドレス記憶部が実現され、ライトバッファ54a,54bによって本発明の書き込みデータ記憶部が実現される。また、メモリアクセス回路21Bについても、メモリアクセス回路21Aと同様の回路構成となっている。
フェッチ回路31は、プログラムカウンタによって指定されるアドレスのプログラムをプログラムメモリ22から読み出して、パイプライン制御回路32に出力する。
パイプライン制御回路32は、フェッチ回路31から出力されるプログラムをデコードし、デコードによって得られる命令に基づいて、メモリアクセス回路21A,21Bや演算回路25のパイプライン制御を行う。例えば、パイプライン制御回路32は、データメモリ23Aaに対する読み出し要求(XRD0)及び書き込み要求(XWR0)、データメモリ23Abに対する読み出し要求(XRD1)及び書き込み要求(XWR1)を適切なタイミングで出力する。なお、本実施形態においては、読み出し要求(XRD0)が“0”の場合にデータメモリ23Aaからデータが読み出され、書き込み要求(XWR0)が“0”の場合にデータメモリ23Aaに対してデータが書き込まれることとする。また、本実施形態においては、読み出し要求(XRD1)が“0”の場合にデータメモリ23Abからデータが読み出され、書き込み要求(XWR1)が“0”の場合にデータメモリ23Abに対してデータが書き込まれることとする。
アドレス生成回路33は、プログラムのデコード結果に基づいて、データメモリ23Aa及びデータメモリ23Abの少なくとも一方に対してアクセスする際のアドレスを生成してアドレスバスBDAAに出力する。本実施形態では、アドレスバスBDAA0にデータメモリ23Aaに対するアドレスが出力され、アドレスバスBDAA1にデータメモリ23Abに対するアドレスが出力される。
アドレス生成回路33におけるアドレス生成について、具体的に説明する。図4は、データメモリ23Aa,23Abのアドレス構成例を示す図である。データメモリ23Aa,23Abは、例えばデータ幅が16ビット(Nビット)であり、データメモリ23AaにはDSP10のアドレス空間における偶数アドレスのデータが格納され、データメモリ23AbにはDSP10のアドレス空間における奇数アドレスのデータが格納されている。例えば、データメモリ23Aaのn番地には、DSP10のアドレス空間における2n番地のデータが格納され、データメモリ23Abのn番地には、DSP10のアドレス空間における2n+1番地のデータが格納されている。
図5は、データメモリ23Aa,23Abへのアクセスパターンを示す図である。図5(a)は、アクセス対象のデータのDSP10のアドレス空間におけるアドレスが偶数(2n)であり、データサイズが16ビットの場合のアクセスを示す図である。この場合、アドレス生成回路33は、アドレス空間におけるアドレス(2n番地)とデータサイズ(16ビット)とに基づいて、データメモリ23Aaに対するアドレス(n番地)を生成し、アドレスバスBDAA0に出力する。図5(b)は、アクセス対象のデータのDSP10のアドレス空間におけるアドレスが奇数(2n+1)であり、データサイズが16ビットの場合のアクセスを示す図である。この場合、アドレス生成回路33は、アドレス空間におけるアドレス(2n+1番地)とデータサイズ(16ビット)とに基づいて、データメモリ23Abに対するアドレス(n番地)を生成し、アドレスバスBDAA1に出力する。図5(c)は、アクセス対象のデータのDSP10のアドレス空間におけるアドレスが偶数(2n)であり、データサイズが32ビットの場合のアクセスを示す図である。この場合、アドレス生成回路33は、アドレス空間におけるアドレス(2n番地)とデータサイズ(32ビット)とに基づいて、データメモリ23Aa,23Abに対するアドレス(n番地)を生成し、アドレスバスBDAA0,BDAA1に出力する。図5(d)は、アクセス対象のデータのDSP10のアドレス空間におけるアドレスが奇数(2n+1)であり、データサイズが32ビットの場合のアクセスを示す図である。この場合、アドレス生成回路33は、アドレス空間におけるアドレス(2n+1番地)とデータサイズ(32ビット)とに基づいて、データメモリ23Abに対するアドレス(n番地)を生成してアドレスバスBDAA1に出力するとともに、データメモリ23Aaに対するアドレス(n+1番地)を生成してアドレスバスBDAA0に出力する。
アドレスレジスタ41aには、データメモリ23Aaにデータを書き込む場合に、アドレスバスBDAA0に出力されたアドレスが格納される。また、アドレスレジスタ41bには、データメモリ23Abにデータを書き込む場合に、アドレスバスBDAA1に出力されたアドレスが格納される。具体的には、E1ステージにアドレスバスBDAA0に出力されているアドレスが、E2ステージにアドレスレジスタ41aに取り込まれ、E1ステージにアドレスバスBDAA1に出力されているアドレスが、E2ステージにアドレスレジスタ41bに取り込まれることとなる。
アドレスバッファ42aには、データメモリ23Aaにデータを書き込む場合に、アドレスレジスタ41aに記憶されているアドレスが格納される。また、アドレスバッファ42bには、データメモリ23Abにデータを書き込む場合に、アドレスレジスタ41bに記憶されているアドレスが格納される。具体的には、E2ステージにアドレスレジスタ41aに記憶されているアドレスが、次のクロックサイクルにアドレスバッファ42aに取り込まれ、E2ステージにアドレスレジスタ41bに記憶されているアドレスが、次のクロックサイクルにアドレスバッファ42bに取り込まれる。
アドレス比較回路43aは、アドレスバスBDAA0に出力されているアドレスと、アドレスバッファ42aに格納されているアドレスとの比較結果を出力する。また、アドレス比較回路43bは、アドレスバスBDAA1に出力されているアドレスと、アドレスバッファ42bに格納されているアドレスとの比較結果を出力する。
アドレス選択回路44aは、アドレス比較回路43aから出力される比較結果に基づいて、アドレスバスBDAA0に出力されているアドレス、または、アドレスバッファ42aに格納されているアドレスの何れか一方を、データメモリ23Aaのアドレス入力端子に入力する。具体的には、アドレスバスBDAA0に出力されているデータメモリ23Aaに対する読み出しアドレスと、アドレスバッファ42aに格納されているデータメモリ23Aaに対する書き込みアドレスとが同じである場合は、アドレスバッファ42aに格納されている書き込みアドレスがデータメモリ23Aaに出力され、これら2つのアドレスが異なる場合は、アドレスバスBDAA0に出力されている読み出しアドレスがデータメモリ23Aaに出力される。また、アドレス選択回路44bは、アドレス比較回路43bから出力される比較結果に基づいて、アドレスバスBDAA1に出力されているアドレス、または、アドレスバッファ42bに出力されているアドレスの何れか一方を、データメモリ23Abのアドレス入力端子に入力する。具体的には、アドレスバスBDAA1に出力されているデータメモリ23Abに対する読み出しアドレスと、アドレスバッファ42bに格納されているデータメモリ23Abに対する書き込みアドレスとが同じである場合は、アドレスバッファ42bに格納されている書き込みアドレスがデータメモリ23Abに出力され、これら2つのアドレスが異なる場合は、アドレスバスBDAA1に出力されている読み出しアドレスがデータメモリ23Abに出力される。
リードデータ選択回路45aは、アドレス比較回路43aから出力される比較結果に基づいて、データメモリ23Aaのデータ出力端子から出力されるデータ、または、ライトバッファ54aに格納されているデータメモリ23Aaに書き込まれる予定のデータの何れか一方をリードバッファ46aに出力する。具体的には、アドレスバスBDAA0に出力されているデータメモリ23Aaに対する読み出しアドレスと、アドレスバッファ42aに格納されているデータメモリ23Aaに対する書き込みアドレスとが同じである場合は、ライトバッファ54aに格納されているデータがリードバッファ46aに出力され、これら2つのアドレスが異なる場合は、データメモリ23Aaのデータ出力端子から出力されるデータがリードバッファ46aに出力される。また、リードデータ選択回路45bは、アドレス比較回路43bから出力される比較結果に基づいて、データメモリ23Abのデータ出力端子から出力されるデータ、または、ライトバッファ54bに格納されているデータメモリ23Abに書き込まれる予定のデータの何れか一方をリードバッファ46bに出力する。具体的には、アドレスバスBDAA1に出力されているデータメモリ23Abに対する読み出しアドレスと、アドレスバッファ42bに格納されているデータメモリ23Abに対する書き込みアドレスとが同じである場合は、ライトバッファ54bに格納されているデータがリードバッファ46bに出力され、これら2つのアドレスが異なる場合は、データメモリ23Abのデータ出力端子から出力されるデータがリードバッファ46bに出力される。
リードバッファ46aには、リードデータ選択回路45aから出力されるデータが格納される。具体的には、データメモリ23Aaからデータが読みだされる場合、AステージにアドレスバスBDAA0に読み出しアドレスが出力され、E1ステージにデータメモリ23Aaまたはライトバッファ54aからデータが読み出され、読み出されたデータがE2ステージにリードバッファ46aに格納される。また、リードバッファ46bには、リードデータ選択回路45bから出力されるデータが格納される。具体的には、データメモリ23Abからデータが読みだされる場合、AステージにアドレスバスBDAA1に読み出しアドレスが出力され、E1ステージにデータメモリ23Abまたはライトバッファ54bからデータが読み出され、読み出されたデータがE2ステージにリードバッファ46bに格納される。
リードデータ合成回路47は、設定レジスタ51に記憶されているデータサイズに関する情報及びアドレスに関する情報に基づいて、リードバッファ46a,46bの少なくとも一方に格納されているデータから読み出しデータを生成してデータバスBDAに出力する。具体的には、読み出しデータのデータサイズが16ビットで、読み出しデータのアドレス空間におけるアドレスが偶数である場合(図5(a)の場合)、リードバッファ46aに格納されているデータがデータバスBDAの下位16ビット[15:0]に出力される。また、読み出しデータのデータサイズが16ビットで、読み出しデータのアドレス空間におけるアドレスが奇数である場合(図5(b)の場合)、リードバッファ46bに格納されているデータがデータバスBDAの下位16ビット[15:0]に出力される。また、読み出しデータのデータサイズが32ビットで、読み出しデータのアドレス空間におけるアドレスが偶数である場合(図5(c)の場合)、リードバッファ46aに格納されているデータがデータバスBDAの上位16ビット[31:16]に出力され、リードバッファ46bに格納されているデータがデータバスBDAの下位16ビット[15:0]に出力される。また、読み出しデータのデータサイズが32ビットで、読み出しデータのアドレス空間におけるアドレスが奇数である場合(図5(d)の場合)、リードバッファ46bに格納されているデータがデータバスBDAの上位16ビット[31:16]に出力され、リードバッファ46aに格納されているデータがデータバスBDAの下位16ビット[15:0]に出力される。
設定レジスタ51には、データメモリ23Aa,23Abからの読み出しデータ、または、データメモリ23Aa,23Abへの書き込みデータについての、データサイズに関する情報及びアドレス空間におけるアドレスに関する情報が格納される。本実施形態では、データサイズに関する情報は、データサイズが16ビットの場合に“1”、データサイズが32ビットの場合に“0”で表されることとする。また、本実施形態では、アドレスに関する情報は、アドレスが偶数である場合は“0”、アドレスが奇数である場合は“1”で表されることとする。
設定レジスタ52には、データメモリ42aまたはデータメモリ42bにデータが書き込まれる場合に、設定レジスタ51に設定されたデータが格納される。具体的には、E1ステージに設定レジスタ51に設定されたデータが、E2ステージに設定レジスタ52に取り込まれる。
ライトデータ選択回路53は、設定レジスタ52に格納されているデータサイズに関する情報及びアドレスに関する情報に基づいて、データバスBDAに出力されている書き込みデータを、ライトバッファ54a,54bの少なくとも一方に出力する。具体的には、書き込みデータのデータサイズが16ビットで、書き込みデータのアドレス空間におけるアドレスが偶数である場合(図5(a)の場合)、データバスBDAの下位16ビット[15:0]に出力されているデータが、ライトバッファ54aに出力される。また、書き込みデータのデータサイズが16ビットで、書き込みデータのアドレス空間におけるアドレスが奇数である場合(図5(b)の場合)、データバスBDAの下位16ビット[15:0]に出力されているデータが、ライトバッファ54bに出力される。また、書き込みデータのデータサイズが32ビットで、書き込みデータのアドレス空間におけるアドレスが偶数である場合(図5(c)の場合)、データバスBDAの上位16ビット[31:16]に出力されているデータが、ライトバッファ54aに出力され、データバスBDAの下位16ビット[15:0]に出力されているデータが、ライトバッファ54bに出力される。また、書き込みデータのデータサイズが32ビットで、書き込みデータのアドレス空間におけるアドレスが奇数である場合(図5(d)の場合)、データバスBDAの上位16ビット[31:16]に出力されているデータが、ライトバッファ54bに出力され、データバスBDAの下位16ビット[15:0]に出力されているデータが、ライトバッファ54aに出力される。
==メモリアクセス動作==
DSP10におけるメモリアクセス動作について、図6〜図23を参照して説明する。なお、図6〜図21では、メモリアクセス動作に関連する部分を実線で示し、関連しない部分を破線で示している。
図6は、データサイズが16ビットで、アドレス空間におけるアドレスが偶数である場合のライト動作を示す図である。アドレス空間におけるアドレスが偶数であるため、Aステージに、アドレス生成回路33においてデータメモリ23Aaに対する書き込みアドレスが生成される。そして、生成された書き込みアドレスは、E1ステージに、アドレスバスBDAA0に出力される。そして、E2ステージには、アドレスバスBDAA0に出力された書き込みアドレスがアドレスレジスタ41aに取り込まれるとともに、データバスBDAの下位16ビット[15:0]に16ビットの書き込みデータが出力される。また、アドレス生成回路33は、E1ステージに、データサイズが16ビットであることを示す情報“1”と、アドレスが偶数であることを示す情報“0”とを設定レジスタ51に書き込む。そして、設定レジスタ51に書き込まれた情報は、E2ステージに、設定レジスタ52に取り込まれる。
そして、E2ステージの次のクロックサイクルになると、アドレスレジスタ41aに格納されているアドレスがアドレスバッファ42aに取り込まれる。また、ライトデータ選択回路53は、設定レジスタ52に格納された情報に従って、データバスBDAの下位16ビット[15:0]に出力されているデータを、ライトバッファ54aに出力する。
図6の場合、ライトの次にリードが続いていないため、パイプライン制御回路32の制御により、アドレス選択回路44aは、アドレスバッファ42aに格納されているアドレスをデータメモリ23Aaのアドレス入力端子に入力する。その後、パイプライン制御回路32からデータメモリ23Aaに対して書き込み要求(XWR0=“0”)が出力されることにより、ライトバッファ54aに格納されているデータが、データメモリ23Aaに書き込まれる。
図7は、データサイズが16ビットで、アドレス空間におけるアドレスが奇数である場合のライト動作を示す図である。アドレス空間におけるアドレスが奇数であるため、Aステージに、アドレス生成回路33においてデータメモリ23Abに対する書き込みアドレスが生成される。そして、生成された書き込みアドレスは、E1ステージに、アドレスバスBDAA1に出力される。そして、E2ステージには、アドレスバスBDAA1に出力された書き込みアドレスがアドレスレジスタ41bに取り込まれるとともに、データバスBDAの下位16ビット[15:0]に16ビットの書き込みデータが出力される。また、アドレス生成回路33は、E1ステージに、データサイズが16ビットであることを示す情報“1”と、アドレスが奇数であることを示す情報“1”とを設定レジスタ51に書き込む。そして、設定レジスタ51に書き込まれた情報は、E2ステージに、設定レジスタ52に取り込まれる。
そして、E2ステージの次のクロックサイクルになると、アドレスレジスタ41bに格納されているアドレスがアドレスバッファ42bに取り込まれる。また、ライトデータ選択回路53は、設定レジスタ52に格納された情報に従って、データバスBDAの下位16ビット[15:0]に出力されているデータを、ライトバッファ54bに出力する。
図7の場合、ライトの次にリードが続いていないため、パイプライン制御回路32の制御により、アドレス選択回路44bは、アドレスバッファ42bに格納されているアドレスをデータメモリ23Abのアドレス入力端子に入力する。その後、パイプライン制御回路32からデータメモリ23Abに対して書き込み要求(XWR1=“0”)が出力されることにより、ライトバッファ54bに格納されているデータが、データメモリ23Abに書き込まれる。
図8は、データサイズが32ビットで、アドレス空間におけるアドレスが偶数である場合のライト動作を示す図である。まず、Aステージに、アドレス生成回路33においてデータメモリ23Aa,23Abに対する書き込みアドレスが生成される。そして、E1ステージに、データメモリ23Aaに対する書き込みアドレスがアドレスバスBDAA0に出力され、データメモリ23Abに対する書き込みアドレスがアドレスバスBDAA1に出力される。そして、E2ステージには、アドレスバスBDAA0に出力された書き込みアドレスがアドレスレジスタ41aに取り込まれ、アドレスバスBDAA1に出力された書き込みアドレスがアドレスレジスタ41bに取り込まれる。また、E2ステージには、データバスBDA[31:0]に書き込みデータが出力される。また、アドレス生成回路33は、E1ステージに、データサイズが32ビットであることを示す情報“0”と、アドレスが偶数であることを示す情報“0”とを設定レジスタ51に書き込む。そして、設定レジスタ51に書き込まれた情報は、E2ステージに、設定レジスタ52に取り込まれる。
そして、E2ステージの次のクロックサイクルになると、アドレスレジスタ41aに格納されているアドレスがアドレスバッファ42aに取り込まれ、アドレスレジスタ41bに格納されているアドレスがアドレスバッファ42bに取り込まれる。また、ライトデータ選択回路53は、設定レジスタ52に格納された情報に従って、データバスBDAの上位16ビット[31:16]に出力されているデータをライトバッファ54aに出力し、データバスBDAの下位16ビット[15:0]に出力されているデータをライトバッファ54bに出力する。
図8の場合、ライトの次にリードが続いていないため、パイプライン制御回路32の制御により、アドレス選択回路44aは、アドレスバッファ42aに格納されているアドレスをデータメモリ23Aaのアドレス入力端子に入力する。同様に、アドレス選択回路44bは、アドレスバッファ42bに格納されているアドレスをデータメモリ23Abのアドレス入力端子に入力する。その後、パイプライン制御回路32からデータメモリ23Aaに対して書き込み要求(XWR0=“0”)が出力されることにより、ライトバッファ54aに格納されているデータが、データメモリ23Aaに書き込まれる。同様に、パイプライン制御回路32からデータメモリ23Abに対して書き込み要求(XWR1=“0”)が出力されることにより、ライトバッファ54bに格納されているデータが、データメモリ23Abに書き込まれる。
図9は、データサイズが32ビットで、アドレス空間におけるアドレスが奇数である場合のライト動作を示す図である。まず、Aステージに、アドレス生成回路33においてデータメモリ23Aa,23Abに対する書き込みアドレスが生成される。そして、E1ステージに、データメモリ23Aaに対する書き込みアドレスがアドレスバスBDAA0に出力され、データメモリ23Abに対する書き込みアドレスがアドレスバスBDAA1に出力される。そして、E2ステージには、アドレスバスBDAA0に出力された書き込みアドレスがアドレスレジスタ41aに取り込まれ、アドレスバスBDAA1に出力された書き込みアドレスがアドレスレジスタ41bに取り込まれる。また、E2ステージには、データバスBDA[31:0]に書き込みデータが出力される。また、アドレス生成回路33は、E1ステージに、データサイズが32ビットであることを示す情報“0”と、アドレスが奇数であることを示す情報“1”とを設定レジスタ51に書き込む。そして、設定レジスタ51に書き込まれた情報は、E2ステージに、設定レジスタ52に取り込まれる。
そして、E2ステージの次のクロックサイクルになると、アドレスレジスタ41aに格納されているアドレスがアドレスバッファ42aに取り込まれ、アドレスレジスタ41bに格納されているアドレスがアドレスバッファ42bに取り込まれる。また、ライトデータ選択回路53は、設定レジスタ52に格納された情報に従って、データバスBDAの上位16ビット[31:16]に出力されているデータをライトバッファ54bに出力し、データバスBDAの下位16ビット[15:0]に出力されているデータをライトバッファ54aに出力する。
図9の場合、ライトの次にリードが続いていないため、パイプライン制御回路32の制御により、アドレス選択回路44aは、アドレスバッファ42aに格納されているアドレスをデータメモリ23Aaのアドレス入力端子に入力する。同様に、アドレス選択回路44bは、アドレスバッファ42bに格納されているアドレスをデータメモリ23Abのアドレス入力端子に入力する。その後、パイプライン制御回路32からデータメモリ23Aaに対して書き込み要求(XWR0=“0”)が出力されることにより、ライトバッファ54aに格納されているデータが、データメモリ23Aaに書き込まれる。同様に、パイプライン制御回路32からデータメモリ23Abに対して書き込み要求(XWR1=“0”)が出力されることにより、ライトバッファ54bに格納されているデータが、データメモリ23Abに書き込まれる。
図10は、データサイズが16ビットで、アドレス空間におけるアドレスが偶数である場合のリード動作を示す図である。アドレス空間におけるアドレスが偶数であるため、Aステージに、アドレス生成回路33においてデータメモリ23Aaに対する読み出しアドレスが生成される。そして、生成された読み出しアドレスは、E1ステージに、アドレスバスBDAA0に出力される。また、アドレス生成回路33は、E1ステージに、データサイズが16ビットであることを示す情報“1”と、アドレスが偶数であることを示す情報“0”とを設定レジスタ51に書き込む。
図10の場合、リードの前にライトが行われていないため、パイプライン制御回路32の制御により、アドレス選択回路44aは、アドレスバスBDAA0に出力されているアドレスをデータメモリ23Aaのアドレス入力端子に入力する。そして、パイプライン制御回路32からデータメモリ23Aaに対して読み出し要求(XRD0=“0”)が出力されると、データメモリ23Aaから該当のデータが出力される。また、リードの前にライトが行われていないため、パイプライン制御回路32の制御により、リードデータ選択回路45aは、データメモリ23Aaから出力されるデータを、リードバッファ46aに出力する。そして、リードデータ合成回路47は、設定レジスタ51に格納された情報に従って、リードバッファ46aに格納されているデータを、データバスBDAの下位16ビット[15:0]に出力する。
図11は、データサイズが16ビットで、アドレス空間におけるアドレスが奇数である場合のリード動作を示す図である。アドレス空間におけるアドレスが奇数であるため、Aステージに、アドレス生成回路33においてデータメモリ23Abに対する読み出しアドレスが生成される。そして、生成された読み出しアドレスは、E1ステージに、アドレスバスBDAA1に出力される。また、アドレス生成回路33は、E1ステージに、データサイズが16ビットであることを示す情報“1”と、アドレスが奇数であることを示す情報“1”とを設定レジスタ51に書き込む。
図11の場合、リードの前にライトが行われていないため、パイプライン制御回路32の制御により、アドレス選択回路44bは、アドレスバスBDAA1に出力されているアドレスをデータメモリ23Abのアドレス入力端子に入力する。そして、パイプライン制御回路32からデータメモリ23Abに対して読み出し要求(XRD1=“0”)が出力されると、データメモリ23Abから該当のデータが出力される。また、リードの前にライトが行われていないため、パイプライン制御回路32の制御により、リードデータ選択回路45bは、データメモリ23Abから出力されるデータを、リードバッファ46bに出力する。そして、リードデータ合成回路47は、設定レジスタ51に格納された情報に従って、リードバッファ46bに格納されているデータを、データバスBDAの下位16ビット[15:0]に出力する。
図12は、データサイズが32ビットで、アドレス空間におけるアドレスが偶数である場合のリード動作を示す図である。まず、Aステージに、アドレス生成回路33においてデータメモリ23Aa,23Abに対する読み出しアドレスが生成される。そして、E1ステージに、データメモリ23Aaに対する読み出しアドレスがアドレスバスBDAA0に出力され、データメモリ23Abに対する読み出しアドレスがアドレスバスBDAA1に出力される。また、アドレス生成回路33は、E1ステージに、データサイズが32ビットであることを示す情報“0”と、アドレスが偶数であることを示す情報“0”とを設定レジスタ51に書き込む。
図12の場合、リードの前にライトが行われていないため、パイプライン制御回路32の制御により、アドレス選択回路44aは、アドレスバスBDAA0に出力されているアドレスをデータメモリ23Aaのアドレス入力端子に入力する。そして、パイプライン制御回路32からデータメモリ23Aaに対して読み出し要求(XRD0=“0”)が出力されると、データメモリ23Aaから該当のデータが出力される。同様に、アドレス選択回路44bは、アドレスバスBDAA1に出力されているアドレスをデータメモリ23Abのアドレス入力端子に入力する。そして、パイプライン制御回路32からデータメモリ23Abに対して読み出し要求(XRD1=“0”)が出力されると、データメモリ23Abから該当のデータが出力される。また、リードの前にライトが行われていないため、パイプライン制御回路32の制御により、リードデータ選択回路45aは、データメモリ23Aaから出力されるデータを、リードバッファ46aに出力する。同様に、リードデータ選択回路45bは、データメモリ23Abから出力されるデータを、リードバッファ46bに出力する。そして、リードデータ合成回路47は、設定レジスタ51に格納された情報に従って、リードバッファ46aに格納されているデータをデータバスBDAの上位16ビット[31:16]に出力し、リードバッファ46bに格納されているデータをデータバスBDAの下位16ビット[15:0]に出力する。
図13は、データサイズが32ビットで、アドレス空間におけるアドレスが奇数である場合のリード動作を示す図である。まず、Aステージに、アドレス生成回路33においてデータメモリ23Aa,23Abに対する読み出しアドレスが生成される。そして、E1ステージに、データメモリ23Aaに対する読み出しアドレスがアドレスバスBDAA0に出力され、データメモリ23Abに対する読み出しアドレスがアドレスバスBDAA1に出力される。また、アドレス生成回路33は、E1ステージに、データサイズが32ビットであることを示す情報“0”と、アドレスが奇数であることを示す情報“1”とを設定レジスタ51に書き込む。
図13の場合、リードの前にライトが行われていないため、パイプライン制御回路32の制御により、アドレス選択回路44aは、アドレスバスBDAA0に出力されているアドレスをデータメモリ23Aaのアドレス入力端子に入力する。そして、パイプライン制御回路32からデータメモリ23Aaに対して読み出し要求(XRD0=“0”)が出力されると、データメモリ23Aaから該当のデータが出力される。同様に、アドレス選択回路44bは、アドレスバスBDAA1に出力されているアドレスをデータメモリ23Abのアドレス入力端子に入力する。そして、パイプライン制御回路32からデータメモリ23Abに対して読み出し要求(XRD1=“0”)が出力されると、データメモリ23Abから該当のデータが出力される。また、リードの前にライトが行われていないため、パイプライン制御回路32の制御により、リードデータ選択回路45aは、データメモリ23Aaから出力されるデータを、リードバッファ46aに出力する。同様に、リードデータ選択回路45bは、データメモリ23Abから出力されるデータを、リードバッファ46bに出力する。そして、リードデータ合成回路47は、設定レジスタ51に格納された情報に従って、リードバッファ46bに格納されているデータをデータバスBDAの上位16ビット[31:16]に出力し、リードバッファ46aに格納されているデータをデータバスBDAの下位16ビット[15:0]に出力する。
図14は、データサイズが16ビットで、アドレス空間におけるアドレスが偶数であり、同一アドレスに対するライト動作に続くリード動作を示す図である。アドレス空間におけるアドレスが偶数であるため、Aステージに、アドレス生成回路33においてデータメモリ23Aaに対する読み出しアドレスが生成される。そして、生成された読み出しアドレスは、E1ステージに、アドレスバスBDAA0に出力される。また、アドレス生成回路33は、E1ステージに、データサイズが16ビットであることを示す情報“1”と、アドレスが偶数であることを示す情報“0”とを設定レジスタ51に書き込む。
図14の場合、リードの前にライトが行われているため、パイプライン制御回路32の制御により、アドレス比較回路43aは、アドレスバスBDAA0に出力されているアドレスと、アドレスバッファ42aに格納されているアドレスとの比較結果を出力する。図14の場合、これらのアドレスが同一であるため、アドレス選択回路44aは、アドレス比較回路43aから出力される比較結果に従って、アドレスバッファ42aに格納されているアドレスを、データメモリ23Aaのアドレス入力端子に入力する。また、リードデータ選択回路45aは、アドレス比較回路43aから出力される比較結果に従って、ライトバッファ54aに格納されているデータを、リードバッファ46aに出力する。そして、リードデータ合成回路47は、設定レジスタ51に格納された情報に従って、リードバッファ46aに格納されているデータを、データバスBDAの下位16ビット[15:0]に出力する。また、パイプライン制御回路32からデータメモリ23Aaに対して書き込み要求(XWR0=“0”)が出力されると、ライトバッファ54aに格納されているデータが、データメモリ23Aaに書き込まれる。
図15は、データサイズが16ビットで、アドレス空間におけるアドレスが偶数であり、異なるアドレスに対するライト動作に続くリード動作を示す図である。アドレス空間におけるアドレスが偶数であるため、Aステージに、アドレス生成回路33においてデータメモリ23Aaに対する読み出しアドレスが生成される。そして、生成された読み出しアドレスは、E1ステージに、アドレスバスBDAA0に出力される。また、アドレス生成回路33は、E1ステージに、データサイズが16ビットであることを示す情報“1”と、アドレスが偶数であることを示す情報“0”とを設定レジスタ51に書き込む。
図15の場合、リードの前にライトが行われているため、パイプライン制御回路32の制御により、アドレス比較回路43aは、アドレスバスBDAA0に出力されているアドレスと、アドレスバッファ42aに格納されているアドレスとの比較結果を出力する。図15の場合、これらのアドレスが異なるため、アドレス選択回路44aは、アドレス比較回路43aから出力される比較結果に従って、アドレスバスBDAA0に出力されているアドレスを、データメモリ23Aaのアドレス入力端子に入力する。また、パイプライン制御回路32からデータメモリ23Aaに対して読み出し要求(XRD0=“0”)が出力されると、データメモリ23Aaから該当のデータが出力される。そして、リードデータ選択回路45aは、アドレス比較回路43aから出力される比較結果に従って、データメモリ23Aaから出力されるデータをリードバッファ46aに出力する。また、リードデータ合成回路47は、設定レジスタ51に格納された情報に従って、リードバッファ46aに格納されているデータを、データバスBDAの下位16ビット[15:0]に出力する。なお、アドレスバッファ42aに格納されているアドレス及びライトバッファ54aに格納されているデータはクリアされずに保持される。そして、データメモリ23Aaからデータの読み出しが行われた後の適宜のタイミングで、アドレスバッファ42aに格納されているアドレスがデータメモリ23Aaのアドレス入力端子に入力され、書き込み要求(XWR0=“0”)が出力されることにより、データメモリ23Aaに対してデータの書き込みが行われる。
図16は、データサイズが16ビットで、アドレス空間におけるアドレスが奇数であり、同一アドレスに対するライト動作に続くリード動作を示す図である。アドレス空間におけるアドレスが奇数であるため、Aステージに、アドレス生成回路33においてデータメモリ23Abに対する読み出しアドレスが生成される。そして、生成された読み出しアドレスは、E1ステージに、アドレスバスBDAA1に出力される。また、アドレス生成回路33は、E1ステージに、データサイズが16ビットであることを示す情報“1”と、アドレスが奇数であることを示す情報“1”とを設定レジスタ51に書き込む。
図16の場合、リードの前にライトが行われているため、パイプライン制御回路32の制御により、アドレス比較回路43bは、アドレスバスBDAA1に出力されているアドレスと、アドレスバッファ42bに格納されているアドレスとの比較結果を出力する。図16の場合、これらのアドレスが同一であるため、アドレス選択回路44bは、アドレス比較回路43bから出力される比較結果に従って、アドレスバッファ42bに格納されているアドレスを、データメモリ23Abのアドレス入力端子に入力する。また、リードデータ選択回路45bは、アドレス比較回路43bから出力される比較結果に従って、ライトバッファ54bに格納されているデータを、リードバッファ46bに出力する。そして、リードデータ合成回路47は、設定レジスタ51に格納された情報に従って、リードバッファ46bに格納されているデータを、データバスBDAの下位16ビット[15:0]に出力する。また、パイプライン制御回路32からデータメモリ23Abに対して書き込み要求(XWR1=“0”)が出力されると、ライトバッファ54bに格納されているデータが、データメモリ23Abに書き込まれる。
図17は、データサイズが16ビットで、アドレス空間におけるアドレスが奇数であり、異なるアドレスに対するライト動作に続くリード動作を示す図である。アドレス空間におけるアドレスが奇数であるため、Aステージに、アドレス生成回路33においてデータメモリ23Abに対する読み出しアドレスが生成される。そして、生成された読み出しアドレスは、E1ステージに、アドレスバスBDAA1に出力される。また、アドレス生成回路33は、E1ステージに、データサイズが16ビットであることを示す情報“1”と、アドレスが奇数であることを示す情報“1”とを設定レジスタ51に書き込む。
図17の場合、リードの前にライトが行われているため、パイプライン制御回路32の制御により、アドレス比較回路43bは、アドレスバスBDAA1に出力されているアドレスと、アドレスバッファ42bに格納されているアドレスとの比較結果を出力する。図17の場合、これらのアドレスが異なるため、アドレス選択回路44bは、アドレス比較回路43bから出力される比較結果に従って、アドレスバスBDAA1に出力されているアドレスを、データメモリ23Abのアドレス入力端子に入力する。また、パイプライン制御回路32からデータメモリ23Abに対して読み出し要求(XRD1=“0”)が出力されると、データメモリ23Abから該当のデータが出力される。そして、リードデータ選択回路45bは、アドレス比較回路43bから出力される比較結果に従って、データメモリ23Abから出力されるデータをリードバッファ46bに出力する。また、リードデータ合成回路47は、設定レジスタ51に格納された情報に従って、リードバッファ46bに格納されているデータを、データバスBDAの下位16ビット[15:0]に出力する。なお、アドレスバッファ42bに格納されているアドレス及びライトバッファ54bに格納されているデータはクリアされずに保持される。そして、データメモリ23Abからデータの読み出しが行われた後の適宜のタイミングで、アドレスバッファ42bに格納されているアドレスがデータメモリ23Abのアドレス入力端子に入力され、書き込み要求(XWR1=“0”)が出力されることにより、データメモリ23Abに対してデータの書き込みが行われる。
図18は、データサイズが32ビットで、アドレス空間におけるアドレスが偶数であり、同一アドレスに対するライト動作に続くリード動作を示す図である。まず、Aステージに、アドレス生成回路33においてデータメモリ23Aa,23Abに対する読み出しアドレスが生成される。そして、E1ステージに、データメモリ23Aaに対する読み出しアドレスがアドレスバスBDAA0に出力され、データメモリ23Abに対する読み出しアドレスがアドレスバスBDAA1に出力される。また、アドレス生成回路33は、E1ステージに、データサイズが32ビットであることを示す情報“0”と、アドレスが偶数であることを示す情報“0”とを設定レジスタ51に書き込む。
図18の場合、リードの前にライトが行われているため、パイプライン制御回路32の制御により、アドレス比較回路43aは、アドレスバスBDAA0に出力されているアドレスと、アドレスバッファ42aに格納されているアドレスとの比較結果を出力する。図18の場合、これらのアドレスが同一であるため、アドレス選択回路44aは、アドレス比較回路43aから出力される比較結果に従って、アドレスバッファ42aに格納されているアドレスを、データメモリ23Aaのアドレス入力端子に入力する。また、リードデータ選択回路45aは、アドレス比較回路43aから出力される比較結果に従って、ライトバッファ54aに格納されているデータを、リードバッファ46aに出力する。同様に、アドレス比較回路43bは、アドレスバスBDAA1に出力されているアドレスと、アドレスバッファ42bに格納されているアドレスとの比較結果を出力する。図18の場合、これらのアドレスが同一であるため、アドレス選択回路44bは、アドレス比較回路43bから出力される比較結果に従って、アドレスバッファ42bに格納されているアドレスを、データメモリ23Abのアドレス入力端子に入力する。また、リードデータ選択回路45bは、アドレス比較回路43bから出力される比較結果に従って、ライトバッファ54bに格納されているデータを、リードバッファ46bに出力する。そして、リードデータ合成回路47は、設定レジスタ51に格納された情報に従って、リードバッファ46aに格納されているデータをデータバスBDAの上位16ビット[31:16]に出力し、リードバッファ46bに格納されているデータをデータバスBDAの下位16ビット[15:0]に出力する。また、パイプライン制御回路32からデータメモリ23Aaに対して書き込み要求(XWR0=“0”)が出力されると、ライトバッファ54aに格納されているデータが、データメモリ23Aaに書き込まれる。同様に、データメモリ23Abに対して書き込み要求(XWR1=“0”)が出力されると、ライトバッファ54bに格納されているデータが、データメモリ23Abに書き込まれる。
図19は、データサイズが32ビットで、アドレス空間におけるアドレスが偶数であり、異なるアドレスに対するライト動作に続くリード動作を示す図である。まず、Aステージに、アドレス生成回路33においてデータメモリ23Aa,23Abに対する読み出しアドレスが生成される。そして、E1ステージに、データメモリ23Aaに対する読み出しアドレスがアドレスバスBDAA0に出力され、データメモリ23Abに対する読み出しアドレスがアドレスバスBDAA1に出力される。また、アドレス生成回路33は、E1ステージに、データサイズが32ビットであることを示す情報“0”と、アドレスが偶数であることを示す情報“0”とを設定レジスタ51に書き込む。
図19の場合、リードの前にライトが行われているため、パイプライン制御回路32の制御により、アドレス比較回路43aは、アドレスバスBDAA0に出力されているアドレスと、アドレスバッファ42aに格納されているアドレスとの比較結果を出力する。図19の場合、これらのアドレスが異なるため、アドレス選択回路44aは、アドレス比較回路43aから出力される比較結果に従って、アドレスバスBDAA0に出力されているアドレスを、データメモリ23Aaのアドレス入力端子に入力する。また、パイプライン制御回路32からデータメモリ23Aaに対して読み出し要求(XRD0=“0”)が出力されると、データメモリ23Aaから該当のデータが出力される。同様に、アドレス比較回路43bは、アドレスバスBDAA1に出力されているアドレスと、アドレスバッファ42bに格納されているアドレスとの比較結果を出力する。図19の場合、これらのアドレスが異なるため、アドレス選択回路44bは、アドレス比較回路43bから出力される比較結果に従って、アドレスバスBDAA1に出力されているアドレスを、データメモリ23Abのアドレス入力端子に入力する。また、パイプライン制御回路32からデータメモリ23Abに対して読み出し要求(XRD1=“0”)が出力されると、データメモリ23Abから該当のデータが出力される。
そして、リードデータ選択回路45aは、アドレス比較回路43aから出力される比較結果に従って、データメモリ23Aaから出力されるデータをリードバッファ46aに出力する。同様に、リードデータ選択回路45bは、アドレス比較回路43bから出力される比較結果に従って、データメモリ23Abから出力されるデータをリードバッファ46bに出力する。また、リードデータ合成回路47は、設定レジスタ51に格納された情報に従って、リードバッファ46aに格納されているデータをデータバスBDAの上位16ビット[31:16]に出力し、リードバッファ46bに格納されているデータをデータバスBDAの下位16ビット[15:0]に出力する。なお、アドレスバッファ42a,42bに格納されているアドレス及びライトバッファ54a,54bに格納されているデータはクリアされずに保持される。そして、データメモリ23Aa,23Abからデータの読み出しが行われた後の適宜のタイミングで、アドレスバッファ42a,42bに格納されているアドレスが夫々データメモリ23Aa,23Abのアドレス入力端子に入力され、書き込み要求(XWR0=“0”、XWR1=“0”)が出力されることにより、データメモリ23Aa,23Abに対してデータの書き込みが行われる。
図20は、データサイズが32ビットで、アドレス空間におけるアドレスが奇数であり、同一アドレスに対するライト動作に続くリード動作を示す図である。まず、Aステージに、アドレス生成回路33においてデータメモリ23Aa,23Abに対する読み出しアドレスが生成される。そして、E1ステージに、データメモリ23Aaに対する読み出しアドレスがアドレスバスBDAA0に出力され、データメモリ23Abに対する読み出しアドレスがアドレスバスBDAA1に出力される。また、アドレス生成回路33は、E1ステージに、データサイズが32ビットであることを示す情報“0”と、アドレスが奇数であることを示す情報“1”とを設定レジスタ51に書き込む。
図20の場合、リードの前にライトが行われているため、パイプライン制御回路32の制御により、アドレス比較回路43aは、アドレスバスBDAA0に出力されているアドレスと、アドレスバッファ42aに格納されているアドレスとの比較結果を出力する。図20の場合、これらのアドレスが同一であるため、アドレス選択回路44aは、アドレス比較回路43aから出力される比較結果に従って、アドレスバッファ42aに格納されているアドレスを、データメモリ23Aaのアドレス入力端子に入力する。また、リードデータ選択回路45aは、アドレス比較回路43aから出力される比較結果に従って、ライトバッファ54aに格納されているデータを、リードバッファ46aに出力する。同様に、アドレス比較回路43bは、アドレスバスBDAA1に出力されているアドレスと、アドレスバッファ42bに格納されているアドレスとの比較結果を出力する。図20の場合、これらのアドレスが同一であるため、アドレス選択回路44bは、アドレス比較回路43bから出力される比較結果に従って、アドレスバッファ42bに格納されているアドレスを、データメモリ23Abのアドレス入力端子に入力する。また、リードデータ選択回路45bは、アドレス比較回路43bから出力される比較結果に従って、ライトバッファ54bに格納されているデータを、リードバッファ46bに出力する。そして、リードデータ合成回路47は、設定レジスタ51に格納された情報に従って、リードバッファ46bに格納されているデータをデータバスBDAの上位16ビット[31:16]に出力し、リードバッファ46aに格納されているデータをデータバスBDAの下位16ビット[15:0]に出力する。また、パイプライン制御回路32からデータメモリ23Aaに対して書き込み要求(XWR0=“0”)が出力されると、ライトバッファ54aに格納されているデータが、データメモリ23Aaに書き込まれる。同様に、データメモリ23Abに対して書き込み要求(XWR1=“0”)が出力されると、ライトバッファ54bに格納されているデータが、データメモリ23Abに書き込まれる。
図21は、データサイズが32ビットで、アドレス空間におけるアドレスが奇数であり、異なるアドレスに対するライト動作に続くリード動作を示す図である。まず、Aステージに、アドレス生成回路33においてデータメモリ23Aa,23Abに対する読み出しアドレスが生成される。そして、E1ステージに、データメモリ23Aaに対する読み出しアドレスがアドレスバスBDAA0に出力され、データメモリ23Abに対する読み出しアドレスがアドレスバスBDAA1に出力される。また、アドレス生成回路33は、E1ステージに、データサイズが32ビットであることを示す情報“0”と、アドレスが奇数であることを示す情報“1”とを設定レジスタ51に書き込む。
図21の場合、リードの前にライトが行われているため、パイプライン制御回路32の制御により、アドレス比較回路43aは、アドレスバスBDAA0に出力されているアドレスと、アドレスバッファ42aに格納されているアドレスとの比較結果を出力する。図21の場合、これらのアドレスが異なるため、アドレス選択回路44aは、アドレス比較回路43aから出力される比較結果に従って、アドレスバスBDAA0に出力されているアドレスを、データメモリ23Aaのアドレス入力端子に入力する。また、パイプライン制御回路32からデータメモリ23Aaに対して読み出し要求(XRD0=“0”)が出力されると、データメモリ23Aaから該当のデータが出力される。同様に、アドレス比較回路43bは、アドレスバスBDAA1に出力されているアドレスと、アドレスバッファ42bに格納されているアドレスとの比較結果を出力する。図21の場合、これらのアドレスが異なるため、アドレス選択回路44bは、アドレス比較回路43bから出力される比較結果に従って、アドレスバスBDAA1に出力されているアドレスを、データメモリ23Abのアドレス入力端子に入力する。また、パイプライン制御回路32からデータメモリ23Abに対して読み出し要求(XRD1=“0”)が出力されると、データメモリ23Abから該当のデータが出力される。
そして、リードデータ選択回路45aは、アドレス比較回路43aから出力される比較結果に従って、データメモリ23Aaから出力されるデータをリードバッファ46aに出力する。同様に、リードデータ選択回路45bは、アドレス比較回路43bから出力される比較結果に従って、データメモリ23Abから出力されるデータをリードバッファ46bに出力する。また、リードデータ合成回路47は、設定レジスタ51に格納された情報に従って、リードバッファ46bに格納されているデータをデータバスBDAの上位16ビット[31:16]に出力し、リードバッファ46aに格納されているデータをデータバスBDAの下位16ビット[15:0]に出力する。なお、アドレスバッファ42a,42bに格納されているアドレス及びライトバッファ54a,54bに格納されているデータはクリアされずに保持される。そして、データメモリ23Aa,23Abからデータの読み出しが行われた後の適宜のタイミングで、アドレスバッファ42a,42bに格納されているアドレスが夫々データメモリ23Aa,23Abのアドレス入力端子に入力され、書き込み要求(XWR0=“0”、XWR1=“0”)が出力されることにより、データメモリ23Aa,23Abに対してデータの書き込みが行われる。
図22は、リード動作時のタイミングを示す図である。ここでは、図6に示したようにリード動作が行われる場合を例として説明する。まず、Aステージにおけるクロックの立ち上がり(第1のタイミング)を契機として、アドレス生成回路33において読み出しアドレスが生成され、時刻t1に、アドレスバスBDAA0にアドレスが出力される。そして、時刻t2における、クロックの次の立ち上がり(第2のタイミング)を契機として、データメモリ23Aaに対して読み出し要求(XRD0=“0”)が出力され、時刻t3から、データメモリ23Aaから該当のデータの出力が開始される。さらに、時刻t4における、クロックの次の立ち上がりを契機として、データメモリ23Aaから出力されるデータがリードバッファ46aに取り込まれる。さらに、時刻t5における、クロックの次の立ち上がりを契機として、リードバッファ46aに格納されているデータがデータバスBDAの下位16ビット[15:0]に出力され、レジスタ24に格納される。そして、レジスタ24に格納されたデータは、演算回路25による演算処理に用いられる。
このように、DSP10では、E1ステージの1つ前のクロックサイクルであるAステージに、読み出しアドレスがアドレスバスBDAAに出力されている。したがって、例えば、E1ステージにおけるクロックの立ち上がりを契機として読み出しアドレスをアドレスバスBDAAに出力し、E1ステージにおけるクロックの立ち下がりを契機としてデータメモリ23Aa,23Abにデータの読み出し要求を出力する場合と比較して、読み出しアドレスをセットアップする時間に余裕を持たせることができる。また、DSP10では、データメモリ23Aa,23Abから出力されるデータが、E2ステージにリードバッファに取り込まれる。したがって、例えば、E1ステージにおけるクロックの立ち下がりを契機としてデータメモリ23Aa,23Abにデータの読み出し要求が出力され、E2ステージにおけるクロックの立ち上がりを契機としてレジスタ24にデータを取り込む場合と比較して、読み出しデータの格納をセットアップする時間に余裕を持たせることができる。そして、DSP10では、セットアップ時間に余裕が生じる結果、クロックの周波数を上げることが可能となり、DSP10における処理速度を向上させることができる。
図23は、ライト動作時のタイミングを示す図である。ここでは、図15に示したようにライト動作に続いて異なるアドレスに対するリード動作が行われる場合を例として説明する。まず、ライト動作のE2ステージ(第1のタイミング)である時刻t6に、アドレスレジスタ41aにアドレスが取り込まれ、データバスBDAの下位16ビット[15:0]に書き込みデータが出力される。そして、時刻t7における、次のクロックの立ち上がり(第2のタイミング)を契機として、アドレスレジスタ41aに格納されているアドレスがアドレスバッファ42aに取り込まれ、データバスBDAの下位16ビット[15:0]に出力されているデータがライトバッファ54aに取り込まれる。そして、図15に示した例では、書き込みアドレスと読み出しアドレスとが異なるため、時刻t8における、クロックの次の立ち上がり(リード動作のE1ステージが始まるタイミング)を契機として、データメモリ23Aaに対して読み出し要求(XRD0=“0”)が出力され、データメモリ23Aaから該当のデータが出力される。なお、アドレスバッファ42aに格納されたアドレス及びライトバッファ54aに格納されたデータはクリアされずに保持されている。そして、時刻t9における、次のクロックの立ち上がりを契機として、アドレスバッファ42aに格納されているアドレスがデータメモリ23Aaのアドレス入力端子に入力され、データメモリ23Aaに対して書き込み要求(XWR0=“0”)が出力されることにより、データメモリ23Aaにデータが書き込まれる。なお、アドレスの異なるリード動作が複数連続する場合は、そのリード動作が完了するまでの間、アドレスバッファ42aに格納されたアドレス及びライトバッファ54aに格納されたデータは保持され、リード動作完了後に、データメモリ23Aaへの書き込みが行われることとなる。
このように、DSP10では、E2ステージの次のクロックサイクルに、アドレスバッファ42a,42bにアドレスが取り込まれ、ライトバッファ54a,54bに書き込みデータが取り込まれる。そして、その後のクロックサイクルにおけるクロックの立ち上がりを契機として、データメモリ23Aa,23Abに対して書き込み要求が出力される。したがって、例えば、E2ステージにおけるクロックの立ち上がりを契機としてデータメモリ23Aa,23Abに対する書き込みアドレス及び書き込みデータの出力を開始し、E2ステージにおけるクロックの立ち下がりを契機としてデータメモリ23Aa,23Abに対する書き込み要求を出力する場合と比較して、書き込みアドレス及び書き込みデータをセットアップする時間に余裕を持たせることができる。そして、DSP10では、セットアップ時間に余裕が生じる結果、クロックの周波数を上げることが可能となり、DSP10における処理速度を向上させることができる。
また、DSP10では、ライト動作に続いて、異なるアドレスに対するリード動作が行われる場合には、データメモリ23Aaに対するリードアクセスを優先して行っている。また、DSP10では、ライト動作に続いて、同一のアドレスに対するリード動作が行われる場合には、ライトバッファ54a,54bに格納されているデータを読み出しデータとして出力するとともに、ライトバッファ54a,54bに格納されているデータをデータメモリ23Aa,23Abに書き込んでいる。つまり、DSP10では、先行するライト動作によって後続のリード動作が待たされることがなく、演算回路25でのデータ待ち時間が短くなり、処理速度を向上させることができる。
以上、本発明の実施形態について説明した。前述したように、DSP10では、2つのデータメモリ23Aa,23Abの少なくとも一方から出力されるデータから、読み出しデータのデータサイズに関する情報及び読み出しデータに対するアドレス空間におけるアドレスに関する情報に基づいて読み出しデータを生成して出力することができる。つまり、データメモリ23Aa,23Abの何れか一方のみからデータを読み出すことも可能であるし、データメモリ23Aa,23Abの両方からデータを読み出すことも可能である。そして、データメモリ23Aa,23Abの両方からデータを読み出した場合、読み出された2つのデータを、演算回路25を構成する1つの乗累算器に対する2つの入力データとして用いることができる。さらに、メモリアクセス回路21Bからも同様に2つデータが同時に読み出されることが可能となるため、DSP10全体では、4つのデータを同時に読み出すことが可能となる。したがって、演算回路25を構成する2つの乗累算器の演算を同時に行うことが可能となる。このように、DSP10では、効率的なメモリアクセスが実現されており、DSP10での演算処理が高速化される。
また、DSP10のメモリアクセス回路21Aでは、アドレス空間における偶数アドレスのデータをデータメモリ23Aaに格納し、奇数アドレスのデータをデータメモリ23Abに格納している。そして、リードデータ合成回路47は、読み出しデータのアドレスが偶数/奇数の何れであるか、また、読み出しデータのデータサイズが16ビット(Nビット)であるか32ビット(2Nビット)であるかに応じて、読み出しデータを生成している。つまり、DSP10では、メモリアクセス回路21Aを介して、16ビットのデータを1つ読み出すことも可能であるし、16ビットのデータを同時に2つ読み出すことも可能である。同様に、DSP10では、メモリアクセス回路21Bを介して、16ビットのデータを1つ読み出すことも可能であるし、16ビットのデータを同時に2つ読み出すことも可能である。つまり、DSP10では、16ビットのデータを最大で4つ同時に読み出すことが可能となる。このように、DSP10では効率的なメモリアクセスが実現することにより、処理速度を向上させることができる。
また、DSP10では、書き込みデータのデータサイズに関する情報及び書き込みデータに対するアドレス空間におけるアドレスに関する情報に基づいて、データメモリ23Aa,23Abの少なくとも一方に対してデータを書き込むことが可能である。つまり、データメモリ23Aa,23Abの何れか一方のみに対してデータを書き込むことも可能であるし、データメモリ23Aa,23Abの両方に対してデータを書き込むことも可能である。さらに、メモリアクセス回路21Bを介しても同様にデータを書き込むことが可能となるため、DSP10全体では、4つのデータを同時に書き込むことが可能となる。このように、DSP10では効率的なメモリアクセスが実現することにより、処理速度を向上させることができる。
また、DSP10のメモリアクセス回路21Aでは、アドレス空間における偶数アドレスのデータをデータメモリ23Aaに格納し、奇数アドレスのデータをデータメモリ23Abに格納している。そして、ライトデータ選択回路53は、書き込みデータのアドレスが偶数/奇数の何れであるか、また、書き込みデータのデータサイズが16ビット(Nビット)であるか32ビット(2Nビット)であるかに応じて、データバスBDAに出力されたデータをライトバッファ54a,54bに出力している。つまり、DSP10では、メモリアクセス回路21Aを介して、16ビットのデータを1つ書き込むことも可能であるし、16ビットのデータを同時に2つ書き込むことも可能である。同様に、DSP10では、メモリアクセス回路21Bを介して、16ビットのデータを1つ書き込むことも可能であるし、16ビットのデータを同時に2つ書き込むことも可能である。したがって、DSP10では、16ビットのデータを最大で4つ同時に書き込むことが可能となる。このように、DSP10では効率的なメモリアクセスが実現することにより、処理速度を向上させることができる。
また、DSP10のメモリアクセス回路21Aでは、ライト動作に続いてリード動作が行われる場合、ライト動作によって後続のリード動作が待たされることのないように制御されている。つまり、ライト動作に続いてリード動作が行われる場合、書き込みアドレスと読み出しアドレスとが異なる場合は、データメモリ23Aa,23Abへの書き込みの前に、データメモリ23Aa,23Abからの読み出しが行われる。また、書き込みアドレスと読み出しアドレスとが同一である場合は、ライトバッファ54a,54bに格納されているデータから読み出しデータが生成されるとともに、データメモリ23Aa,23Abへの書き込みが行われる。これにより、ライト動作に続いてリード動作が行われる場合に、先行するライト動作によって後続のリード動作が待たされることがなく、演算回路25でのデータ待ち時間が短くなる。つまり、DSP10では効率的なメモリアクセスが実現することにより、処理速度を向上させることができる。
また、DSP10のメモリアクセス回路21Aでは、リード動作時における読み出しアドレスのセットアップ時間に余裕がある。そのため、クロックの周波数を上げることが可能となり、DSP10の処理速度を向上させることができる。
また、DSP10のメモリアクセス回路21Aでは、ライト動作時における書き込みアドレス及び書き込みデータのセットアップ時間に余裕がある。そのため、クロックの周波数を上げることが可能となり、DSP10の処理速度を向上させることができる。
なお、上記実施形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物も含まれる。
本発明のメモリアクセス装置の一実施形態であるデジタル信号処理回路の構成例を示す図である。 DSPにおけるパイプライン制御の例を示す図である。 DSPにおける制御回路及びメモリアクセス回路の詳細な構成例を示す図である。 データメモリのアドレス構成例を示す図である。 データメモリへのアクセスパターンを示す図である。 データサイズが16ビットで、アドレス空間におけるアドレスが偶数である場合のライト動作を示す図である。 データサイズが16ビットで、アドレス空間におけるアドレスが奇数である場合のライト動作を示す図である。 データサイズが32ビットで、アドレス空間におけるアドレスが偶数である場合のライト動作を示す図である。 データサイズが32ビットで、アドレス空間におけるアドレスが奇数である場合のライト動作を示す図である。 データサイズが16ビットで、アドレス空間におけるアドレスが偶数である場合のリード動作を示す図である。 データサイズが16ビットで、アドレス空間におけるアドレスが奇数である場合のリード動作を示す図である。 データサイズが32ビットで、アドレス空間におけるアドレスが偶数である場合のリード動作を示す図である。 データサイズが32ビットで、アドレス空間におけるアドレスが奇数である場合のリード動作を示す図である。 データサイズが16ビットで、アドレス空間におけるアドレスが偶数であり、同一アドレスに対するライト動作に続くリード動作を示す図である。 データサイズが16ビットで、アドレス空間におけるアドレスが偶数であり、異なるアドレスに対するライト動作に続くリード動作を示す図である。 データサイズが16ビットで、アドレス空間におけるアドレスが奇数であり、同一アドレスに対するライト動作に続くリード動作を示す図である。 データサイズが16ビットで、アドレス空間におけるアドレスが奇数であり、異なるアドレスに対するライト動作に続くリード動作を示す図である。 データサイズが32ビットで、アドレス空間におけるアドレスが偶数であり、同一アドレスに対するライト動作に続くリード動作を示す図である。 データサイズが32ビットで、アドレス空間におけるアドレスが偶数であり、異なるアドレスに対するライト動作に続くリード動作を示す図である。 データサイズが32ビットで、アドレス空間におけるアドレスが奇数であり、同一アドレスに対するライト動作に続くリード動作を示す図である。 データサイズが32ビットで、アドレス空間におけるアドレスが奇数であり、異なるアドレスに対するライト動作に続くリード動作を示す図である。 リード動作時のタイミングを示す図である。 ライト動作時のタイミングを示す図である。
符号の説明
10 デジタル信号処理回路(DSP)
20 制御回路
21A,21B メモリアクセス回路
22 プログラムメモリ
23Aa,23Ab,23Ba,23Bb データメモリ
24 レジスタ
25 演算回路
BDAA,BDAB アドレスバス
BDA,BDB データバス
31 フェッチ回路
32 パイプライン制御回路
33 アドレス生成回路
41a,41b アドレスレジスタ
42a,42b アドレスバッファ
43a,43b アドレス比較回路
44a,44b アドレス選択回路
45a,45b リードデータ選択回路
46a,46b リードバッファ
47 リードデータ合成回路
51,52 設定レジスタ
53 ライトデータ選択回路

Claims (7)

  1. 第1及び第2メモリにアクセスするメモリアクセス装置であって、
    読み出しデータのデータサイズ及びアドレス空間におけるアドレスに基づいて、前記第1及び第2メモリの少なくとも一方に対する読み出しアドレスを出力するアドレス出力部と、
    前記読み出しデータの前記データサイズ及び前記アドレス空間における前記アドレスに基づいて、前記第1及び第2メモリの少なくとも一方に対して読み出し要求を出力するアクセス要求出力部と、
    前記読み出しデータの前記データサイズに関する情報及び前記アドレスに関する情報を出力するデータ情報出力部と、
    前記アドレス出力部から出力される前記読み出しアドレスと、前記アクセス要求出力部から出力される前記読み出し要求とに応じて前記第1及び第2メモリの少なくとも一方から出力されるデータから、前記データ情報出力部から出力される前記データサイズに関する情報及び前記アドレスに関する情報に基づいて前記読み出しデータを生成して出力する読み出しデータ出力部と、
    を備えることを特徴とするメモリアクセス装置。
  2. 請求項1に記載のメモリアクセス装置であって、
    前記第1メモリには、前記アドレス空間における偶数アドレスのNビット幅のデータが格納され、前記第2メモリには、前記アドレス空間における奇数アドレスのNビット幅のデータが格納され、
    前記アドレス出力部は、
    前記読み出しデータの前記データサイズがNビットである場合は、前記アドレス空間における前記アドレスに応じた前記読み出しアドレスを前記第1又は第2メモリに出力し、
    前記読み出しデータの前記データサイズが2Nビットである場合は、前記アドレス空間における前記アドレスに応じた前記読み出しアドレスを前記第1及び第2メモリに出力し、
    前記読み出しデータ出力部は、
    前記読み出しデータの前記データサイズがNビットである場合は、前記第1又は第2メモリから出力されるデータを、前記読み出しデータとして出力し、
    前記読み出しデータの前記データサイズが2Nビットであり、前記アドレス空間における前記アドレスが偶数アドレスの場合は、前記第1メモリから出力されるデータを上位ビット、前記第2メモリから出力されるデータを下位ビットとして前記読み出しデータを生成して出力し、
    前記読み出しデータの前記データサイズが2Nビットであり、前記アドレス空間における前記アドレスが奇数アドレスの場合は、前記第2メモリから出力されるデータを上位ビット、前記第1メモリから出力されるデータを下位ビットとして前記読み出しデータを生成して出力すること、
    を特徴とするメモリアクセス装置。
  3. 請求項1に記載のメモリアクセス装置であって、
    前記アドレス出力部は、書き込みデータのデータサイズ及びアドレス空間におけるアドレスに基づいて、前記第1及び第2メモリの少なくとも一方に対する書き込みアドレスを出力し、
    前記アクセス要求出力部は、前記書き込みデータの前記データサイズ及び前記アドレス空間における前記アドレスに基づいて、前記第1及び第2メモリの少なくとも一方に対して書き込み要求を出力し、
    前記データ情報出力部は、前記書き込みデータの前記データサイズに関する情報及び前記アドレスに関する情報を出力し、
    前記データ情報出力部から出力される前記データサイズに関する情報及び前記アドレスに関する情報に基づいて、前記第1及び第2メモリの少なくとも一方に前記書き込みデータを出力する書き込みデータ出力部を更に備えること、
    を特徴とするメモリアクセス回路。
  4. 請求項3に記載のメモリアクセス装置であって、
    前記第1メモリには、前記アドレス空間における偶数アドレスのNビット幅のデータが格納され、前記第2メモリには、前記アドレス空間における奇数アドレスのNビット幅のデータが格納され、
    前記アドレス出力部は、
    前記書き込みデータの前記データサイズがNビットである場合は、前記アドレス空間における前記アドレスに応じた前記書き込みアドレスを前記第1又は第2メモリに出力し、
    前記書き込みデータの前記データサイズが2Nビットである場合は、前記アドレス空間における前記アドレスに応じた前記書き込みアドレスを前記第1及び第2メモリに出力し、
    前記書き込みデータ出力部は、
    前記書き込みデータの前記データサイズがNビットであり、前記アドレス空間における前記アドレスが偶数アドレスの場合は、前記書き込みデータを前記第1メモリに出力し、
    前記書き込みデータの前記データサイズがNビットであり、前記アドレス空間における前記アドレスが奇数アドレスの場合は、前記書き込みデータを前記第2メモリに出力し、
    前記書き込みデータの前記データサイズが2Nビットであり、前記アドレス空間にける前記アドレスが偶数アドレスの場合は、前記書き込みデータの上位Nビットを前記第1メモリに出力し、前記書き込みデータの下位Nビットを前記第2メモリに出力し、
    前記書き込みデータの前記データサイズが2Nビットであり、前記アドレス空間にける前記アドレスが奇数アドレスの場合は、前記書き込みデータの上位Nビットを前記第2メモリに出力し、前記書き込みデータの下位Nビットを前記第1メモリに出力すること、
    を特徴とするメモリアクセス装置。
  5. 請求項3又は4に記載のメモリアクセス装置であって、
    前記アドレス出力部から出力される前記書き込みアドレスが記憶される書き込みアドレス記憶部と、
    前記書き込みデータ出力部から出力される前記書き込みデータが前記第1又は第2メモリに書き込まれる前に記憶される書き込みデータ記憶部と、
    前記アドレス出力部から出力される前記読み出しアドレスと、前記書き込みアドレス記憶部に記憶されている前記書き込みアドレスとが異なる場合は、前記読み出しアドレスを前記第1又は第2メモリに出力するアドレス選択回路と、
    を更に備え、
    前記読み出しデータ出力部は、
    前記アドレス出力部から出力される前記読み出しアドレスと、前記書き込みアドレス記憶部に記憶されている前記書き込みアドレスとが異なる場合は、前記第1又は第2メモリの少なくとも一方から出力されるデータから前記読み出しデータを生成して出力し、前記アドレス出力部から出力される前記読み出しアドレスと、前記書き込みアドレス記憶部に記憶されている前記書き込みアドレスとが同じである場合は、前記書き込みデータ記憶部に記憶されている前記書き込みデータを出力すること、
    を特徴とするメモリアクセス装置。
  6. 請求項1〜5の何れか一項に記載のメモリアクセス装置であって、
    前記アドレス出力部は、クロックが一方の論理レベルから他方の論理レベルに変化する第1のタイミングで、前記読み出しアドレスを出力し、
    前記アクセス要求出力部は、前記第1のタイミングの次に、前記クロックが前記一方の論理レベルから前記他方の論理レベルに変化する第2のタイミングで前記読み出し要求を出力すること、
    を特徴とするメモリアクセス装置。
  7. 請求項5に記載のメモリアクセス装置であって、
    前記アドレス出力部は、クロックが一方の論理レベルから他方の論理レベルに変化する第1のタイミングで、前記書き込みアドレスを出力し、
    前記アクセス要求部は、前記第1のタイミングの次に、前記クロックが前記一方の論理レベルから前記他方の論理レベルに変化する第2のタイミングで、前記アドレス出力部から出力される前記書き込みアドレスを前記アドレス記憶部に記憶させるとともに、前記書き込みデータ出力部から出力される前記書き込みデータを前記書き込みデータ記憶部に記憶させること、
    を特徴とするメモリアクセス装置。
JP2006256162A 2006-09-21 2006-09-21 メモリアクセス装置 Pending JP2008077418A (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2006256162A JP2008077418A (ja) 2006-09-21 2006-09-21 メモリアクセス装置
CNB2007101366496A CN100527109C (zh) 2006-09-21 2007-07-18 存储器访问装置
US11/832,536 US7702860B2 (en) 2006-09-21 2007-08-01 Memory access apparatus
KR1020070095856A KR20080027175A (ko) 2006-09-21 2007-09-20 메모리 액세스 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006256162A JP2008077418A (ja) 2006-09-21 2006-09-21 メモリアクセス装置

Publications (1)

Publication Number Publication Date
JP2008077418A true JP2008077418A (ja) 2008-04-03

Family

ID=39226397

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006256162A Pending JP2008077418A (ja) 2006-09-21 2006-09-21 メモリアクセス装置

Country Status (4)

Country Link
US (1) US7702860B2 (ja)
JP (1) JP2008077418A (ja)
KR (1) KR20080027175A (ja)
CN (1) CN100527109C (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102521142B (zh) * 2011-12-13 2015-05-13 曙光信息产业(北京)有限公司 一种提高大容量、多内存设备访问效率的方法
CN102523374B (zh) * 2011-12-19 2014-02-19 北京理工大学 一种实时并行的电子稳像系统设计方法
US9256384B2 (en) * 2013-02-04 2016-02-09 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for reducing write latency in a data storage system by using a command-push model
JP6239078B1 (ja) * 2016-11-04 2017-11-29 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置および読出し方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5717394A (en) * 1993-02-10 1998-02-10 Ricoh Company Ltd. Method and apparatus for encoding and decoding data
JP3479385B2 (ja) * 1995-06-29 2003-12-15 東芝マイクロエレクトロニクス株式会社 情報処理装置
JPH10143448A (ja) 1996-11-14 1998-05-29 Ricoh Co Ltd メモリシステム
EP1122734B1 (en) * 2000-01-31 2005-03-30 STMicroelectronics S.r.l. Burst interleaved memory with burst mode access in synchronous read phases wherein the two sub-arrays are independently readable with random access during asynchronous read phases
JP2006190389A (ja) 2005-01-06 2006-07-20 Sanyo Electric Co Ltd データ処理用集積回路

Also Published As

Publication number Publication date
CN101149713A (zh) 2008-03-26
KR20080027175A (ko) 2008-03-26
US7702860B2 (en) 2010-04-20
US20080077754A1 (en) 2008-03-27
CN100527109C (zh) 2009-08-12

Similar Documents

Publication Publication Date Title
US7380076B2 (en) Information processing apparatus and method of accessing memory
JP2006331408A (ja) 読み出し性能を向上させることができるメモリカード
JP2008077418A (ja) メモリアクセス装置
CN110060196B (zh) 图像处理方法及装置
JP4707017B2 (ja) 信号処理装置
JP4896839B2 (ja) マイクロプロセッサおよびデータ処理方法
US6363469B1 (en) Address generation apparatus
JP2008102599A (ja) プロセッサ
JP2006293741A (ja) プロセッサ
JP2883465B2 (ja) 電子計算機
JPH0795269B2 (ja) 命令コードのデコード装置
JP2005267362A (ja) Simdプロセッサを用いた画像処理方法及び画像処理装置
JP3888236B2 (ja) プログラムカウンタ回路
JP2013161325A (ja) Simd型マイクロプロセッサ、プロセッサシステムおよびsimd型マイクロプロセッサのデータ処理方法
JP2006092158A (ja) デジタル信号処理回路
JP2009145957A (ja) ステートマシン及びこれを用いた半導体集積回路
JP2015014934A (ja) メモリ制御装置及びメモリ制御方法
JP2005151535A5 (ja)
JP2011096339A (ja) Nand型フラッシュメモリ
JP2020173609A (ja) ベクトルプロセッサ装置、生成方法及びプログラム
JP2008299501A (ja) プロセッサ
JPH0810443B2 (ja) メモリ制御回路
JPWO2007004323A1 (ja) 情報処理装置
JP2005056033A (ja) レジスタ回路
JPH05250156A (ja) Riscプロセッサ