(57)【特許請求の範囲】
【請求項１】
演算回路と、
前記演算回路がアクセスしようとしている外部メモリのアドレスセットに基づいて、前記外部メモリに対してバーストアクセスするかランダムアクセスするかを決定するメモリアクセス制御部と、を備え、
前記メモリアクセス制御部は、
前記アドレスセットを構成する各アドレスについて、当該アドレスへのバーストアクセスによりアクセスされるアドレス数を計数し、
前記アドレス数が基準値よりも大きい場合、前記アドレスにバーストアクセスし、前記アドレス数が前記基準値よりも小さい場合、前記アドレスにランダムアクセスする、
半導体装置。
【請求項２】
前記メモリアクセス制御部は、
前記外部メモリの仕様により定まるパラメータを用いて前記基準値を算出する、
請求項１に記載の半導体装置。
【請求項３】
前記パラメータが、バースト長及びアクセス遅延を含む、
請求項２に記載の半導体装置。
【請求項４】
前記メモリアクセス制御部は、
前記アドレス数が前記基準値よりも大きい前記アドレスが複数存在する場合、前記アドレス数が最大になる前記アドレスにアクセスする、
請求項１に記載の半導体装置。
【請求項５】
前記外部メモリにアクセスする度に、
前記メモリアクセス制御部は、
前記アドレスセットからアクセス済みの前記アドレスを除外して、前記アドレス数を更新し、
当該更新されたアドレス数に基づいて、前記外部メモリに対してバーストアクセスするかランダムアクセスするかを決定する、
請求項１に記載の半導体装置。
【請求項６】
前記外部メモリが、ＳＤＲＡＭを含む、
請求項１に記載の半導体装置。
【請求項７】
アクセスしようとしている外部メモリのアドレスセットを構成する各アドレスについて、当該アドレスへのバーストアクセスによりアクセスされるアドレス数を計数し、
前記アドレス数が基準値よりも大きい場合、前記アドレスにバーストアクセスし、前記アドレス数が前記基準値よりも小さい場合、前記アドレスにランダムアクセスする、
メモリアクセス制御方法。
【請求項８】
前記外部メモリの仕様により定まるパラメータを用いて前記基準値を算出する、
請求項７に記載のメモリアクセス制御方法。
【請求項９】
前記パラメータが、バースト長及びアクセス遅延を含む、
請求項８に記載のメモリアクセス制御方法。
【請求項１０】
前記アドレス数が前記基準値よりも大きい前記アドレスが複数存在する場合、前記アドレス数が最大になる前記アドレスにアクセスする、
請求項７に記載のメモリアクセス制御方法。
【請求項１１】
前記外部メモリにアクセスする度に、
前記アドレスセットからアクセス済みの前記アドレスを除外して、前記アドレス数を更新し、
当該更新されたアドレス数に基づいて、前記外部メモリに対してバーストアクセスするかランダムアクセスするかを決定する、
請求項７に記載のメモリアクセス制御方法。
【請求項１２】
前記外部メモリが、ＳＤＲＡＭを含む、
請求項７に記載のメモリアクセス制御方法。
【請求項１３】
演算回路と、
メインメモリと、
前記演算回路がアクセスしようとしている前記メインメモリのアドレスセットに基づいて、前記メインメモリに対してバーストアクセスするかランダムアクセスするかを決定するメモリアクセス制御部と、を備え、
前記メモリアクセス制御部は、
前記アドレスセットを構成する各アドレスについて、当該アドレスへのバーストアクセスによりアクセスされるアドレス数を計数する計数部と、
前記アドレス数を基準値と比較する比較部と、
前記比較部による比較結果に基づいて、前記メインメモリに対してバーストアクセスするかランダムアクセスするかを決定する決定部と、を備える、
半導体装置システム。
【請求項１４】
前記決定部は、
前記アドレス数が基準値よりも大きい場合、前記アドレスにバーストアクセスし、前記アドレス数が前記基準値よりも小さい場合、前記アドレスにランダムアクセスする、
請求項１３に記載の半導体装置システム。
【請求項１５】
前記比較部は、
前記メインメモリの仕様により定まるパラメータを用いて前記基準値を算出する、
請求項１３に記載の半導体装置システム。
【請求項１６】
前記パラメータが、バースト長及びアクセス遅延を含む、
請求項１５に記載の半導体装置システム。
【請求項１７】
前記アドレス数が前記基準値よりも大きくなる前記アドレスが複数存在する場合、
前記決定部は、前記アドレス数が最大になる前記アドレスにアクセスすることに決定する、
請求項１４に記載の半導体装置システム。
【請求項１８】
前記メインメモリにアクセスする度に、
前記計数部は、アドレスセットからアクセス済みの前記アドレスを除外して、前記アドレス数を更新し、
前記比較部は、前記更新されたアドレス数を前記基準値と比較し、
前記決定部は、前記更新されたアドレス数の前記比較部による比較結果に基づいて、前記メインメモリに対してバーストアクセスするかランダムアクセスするかを決定する、
請求項１３に記載の半導体装置システム。
【請求項１９】
前記メインメモリが、ＳＤＲＡＭを含む、
請求項１３に記載の半導体装置システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置、メモリアクセス制御方法、及び半導体装置システムに関する。
【背景技術】
【０００２】
ＣＰＵ（Central Processing Unit）などの演算回路は、例えばＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）などの外部メモリ（メインメモリ）にアクセスし、データの読み出しもしくは書き込みを行う。ここで、外部メモリへアクセスする際には、レイテンシと呼ばれるアクセス遅延が発生する。このレイテンシは、外部メモリの性能指標の１つであって、ＣＡＳ（Column Address Strobe）レイテンシなどが代表的である。レイテンシが小さいほど高速アクセスが可能となる。
【０００３】
通常、外部メモリは、アドレスを１つずつ指定してアクセスを繰り返すランダムアクセスに加え、１つのアドレスを指定することにより複数アドレスに連続アクセスするバーストアクセスに対応している。上述のアクセス遅延は、アドレス指定毎に発生する。ここで、バーストアクセスにおいて、連続アクセスされる複数アドレスが、これから実際にアクセスしようとしているアドレス（以下、「目標アドレス」という）であれば、ランダムアクセスよりもアドレス指定の回数を減らすことができる。そのため、アクセス遅延の発生回数も減り、アクセス効率が向上する。
【０００４】
特許文献１には、アクセスしたキャッシュトラックのデータ量を測定し、当該データ量に基づいて、順次処理モードとランダムアクセス処理モードとを切り換えるキャッシュ記憶装置管理方法が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開昭６４−２３３５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
発明者は以下の問題を見出した。
上述の通り、バーストアクセスにおいて、連続アクセスされる複数アドレスにおける目標アドレスの割合が高ければ、ランダムアクセスよりもアクセス効率が向上する。一方、連続アクセスされる複数アドレスにおける目標アドレスの割合が低ければ、ランダムアクセスよりもかえってアクセス効率が低下してしまう。つまり、これから実際にアクセスする目標アドレスに基づいて、バーストアクセスとランダムアクセスとを切り換えなければ、アクセス効率を効果的に向上させることはできない。
【０００７】
特許文献１では、これから実際にアクセスする目標アドレスではなく、上述の通り、既にアクセスしたキャッシュトラックのデータ量に基づいて、バーストアクセスとランダムアクセスとを切り換えている。そのため、アクセス効率を効果的に向上させることはできなかった。
【０００８】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００９】
一実施の形態に係る半導体装置では、メモリアクセス制御部が、アクセスしようとしている外部メモリのアドレスセットを構成する各アドレスについて、当該アドレスへのバーストアクセスによりアクセスされるアドレス数を計数する。メモリアクセス制御部は、アドレス数が基準値よりも大きい場合、そのアドレスにバーストアクセスし、アドレス数が基準値よりも小さい場合、そのアドレスにランダムアクセスする。
【発明の効果】
【００１０】
前記一実施の形態によれば、アクセス効率を効果的に向上させることができる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１に係る半導体装置１００の構成を示すブロック図である。
【図２】実施の形態１に係る半導体装置１００の構成を示す詳細なブロック図である。
【図３】アクセスアドレス計数部２２の構成の一例を示す回路図である。
【図４】比較部２３の構成の一例を示す回路図である。
【図５】バーストアクセスでのアクセス時間Ｔｂ（ａ）と、ランダムアクセスでのアクセス時間Ｔｒ（ｂ）とを比較して示したイメージ図である。
【図６】アクセス方法決定部２５の構成の一例を示す回路図である。
【図７】図１の変形例である。
【図８】図９の変形例である。
【図９】図１の変形例である。
【発明を実施するための形態】
【００１２】
（実施の形態１）
まず、図１を参照して、実施の形態１に係る半導体装置１００の詳細について説明する。図１は、実施の形態１に係る半導体装置１００の構成を示すブロック図である。実施の形態１に係る半導体装置は、例えば単一の半導体チップに形成されたＬＳＩ（Large Scale Integration）であって、演算回路１０、メモリアクセス制御部２０を備えている。半導体装置１００は、図１に示すように、別の半導体チップに形成された外部メモリ（メインメモリ）２００とともに半導体装置システムを構成している。当該半導体装置システムは、例えば画像処理用途に好適である。半導体装置１００は、外部メモリ２００にアクセスし、データの読み出しもしくは書き込みを行う。以下では、リード（読み出し）を行う場合について説明する。
【００１３】
ここで、外部メモリ２００は、例えばＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）である。外部メモリ２００は、アドレスを１つずつ指定してアクセスを繰り返すランダムアクセスに加え、１つのアドレスを指定することにより複数アドレスに連続アクセスするバーストアクセスに対応している。
【００１４】
演算回路１０は、例えばＣＰＵ（Central Processing Unit）である。演算回路１０は、これから実際にアクセスしようとしている外部メモリ２００のアドレス（以下、目標アドレスという）のセットであるアドレスセット信号ａｄｓをメモリアクセス制御部２０に出力する。すなわち、アドレスセット信号ａｄｓは複数個の目標アドレスの集合であって、演算回路１０はメモリアクセス制御部２０に対して、一度に複数の目標アドレスに対するリードを要求することができる。また、演算回路１０は、外部メモリ２００から読み出され、メモリアクセス制御部２０から転送されたデータｄａｔ２を用いて、各種演算を行う。
【００１５】
メモリアクセス制御部２０は、例えばＤＭＡ（Direct Memory Access）制御部である。メモリアクセス制御部２０は、演算回路１０から入力されたアドレスセット信号ａｄｓ及び図示しないパラメータ（アクセス遅延ｄやバースト長Ｌ）に基づいて、外部メモリ２００にランダムアクセスするかバーストアクセスするかを決定する。
【００１６】
具体的には、メモリアクセス制御部２０は、アドレスセット信号ａｄｓを構成する各目標アドレスについて、その目標アドレスへのバーストアクセスによりアクセスされるアドレス数を算出する。そして、メモリアクセス制御部２０は、パラメータに基づいて計算した基準値と当該アドレス数とを比較する。メモリアクセス制御部２０は、アドレス数が基準値よりも大きい場合、そのアドレスにバーストアクセスし、アドレス数が基準値よりも小さい場合、そのアドレスにランダムアクセスする。ここで、メモリアクセス制御部２０は、バーストアクセスもしくはランダムアクセスを示すアクセス方法信号ａｍｓ及びアドレスを示すアドレス信号ａｄｄを外部メモリ２００に対して出力する。
【００１７】
メモリアクセス制御部２０は、バーストアクセスした場合、外部メモリ２００から読み出したデータｄａｔ１を演算回路１０が読み出す順に並べ替え、データｄａｔ２として演算回路１０へ転送する。一方、メモリアクセス制御部２０は、ランダムアクセスした場合、外部メモリ２００から読み出したデータｄａｔ１をそのままデータｄａｔ２として演算回路１０へ転送する。
【００１８】
次に、図２を参照して、演算回路１０とメモリアクセス制御部２０の詳細について説明する。図２は、実施の形態１に係る半導体装置１００の構成を示す詳細なブロック図である。ここで、外部メモリ２００の仕様により定まるパラメータ（アクセス遅延ｄ及びバースト長Ｌ）が、半導体装置１００に設定される。ここで、アクセス遅延ｄは、例えばＣＡＳ（Column Address Strobe）レイテンシである。レイテンシが小さいほど高速アクセスが可能となる。
演算回路１０は、図２に示すように、内部メモリ１１を備えている。内部メモリ１１には、アドレスセット信号ａｄｓが格納されている。また、内部メモリ１１には、メモリアクセス制御部２０を介して外部メモリ２００から読み出されたデータｄａｔ２が格納される。演算回路１０は、外部メモリ２００から読み出されたデータｄａｔ２を用いて、各種演算を行う。
【００１９】
メモリアクセス制御部２０は、図２に示すように、アドレスレジスタセット２１、アクセスアドレス計数部２２、比較部２３、パラメータレジスタ２４、アクセス方法決定部２５、データ整列部２６を備えている。
【００２０】
アドレスレジスタセット２１は、目標アドレスのセットであるアドレスセット信号ａｄｓを格納するアドレスレジスタのセットである。ここで、図３は、アクセスアドレス計数部２２の構成の一例を示す回路図である。図３には、アドレスレジスタセット２１の具体的構成も示されている。
【００２１】
図３に示すように、アドレスレジスタセット２１は、アドレスセット信号ａｄｓを構成するｎ（ｎは自然数）個の目標アドレスＡ１〜Ａｎのそれぞれを格納するｎ個のアドレスレジスタＡＲ１〜ＡＲｎを備えている。また、図２、図３に示すように、アドレスレジスタセット２１に格納された目標アドレスＡ１〜Ａｎは、アクセス方法決定部２５から出力されるリセット信号ｒｓｔによって、外部メモリ２００へのアクセスが完了した目標アドレスから順にリセットされる。
【００２２】
アクセスアドレス計数部２２は、図２に示すように、アドレスレジスタセット２１に格納されたアドレスセット信号ａｄｓ及びパラメータレジスタ２４に格納されたバースト長Ｌを参照して、バーストアクセスにおいてアクセスされる目標アドレス数を計数する。具体的には、全目標アドレスＡ１〜Ａｎについて、その目標アドレスにバーストアクセスした場合に、その目標アドレスともにアクセスされる他の目標アドレスの数を算出する。
【００２３】
例えば、目標アドレスＡ１にバーストアクセスした場合に、他の目標アドレスＡ２〜Ａｎがともにアクセスされるか否かを判定し、アクセスされる目標アドレスの数を算出する。この値が大きい目標アドレスほど、その目標アドレスにバーストアクセスした場合に、アクセス効率を向上させることができる。アクセスアドレス計数部２２は、全目標アドレスＡ１〜Ａｎについてのカウント値ｃｖを比較部２３及びアクセス方法決定部２５に出力する。
【００２４】
ここで、図３を参照して、アクセスアドレス計数部２２についてより詳細に説明する。図３に示すように、アクセスアドレス計数部２２は、ｎ個のアクセスアドレスカウンタＡＡＣ１〜ＡＡＣｎを備えている。まず、アクセスアドレスカウンタＡＡＣ１について説明する。図３に示すように、関数回路Ｆ２〜Ｆｎのそれぞれにパラメータレジスタ２４に格納されたバースト長Ｌが入力される。
【００２５】
アクセスアドレスカウンタＡＡＣ１は、目標アドレスＡ１を例えば先頭にしてバーストアクセスした場合に、他の目標アドレスＡ２〜Ａｎのうちでともにアクセスされる目標アドレスの数をカウントする回路である。アクセスアドレスカウンタＡＡＣ１は、ｎ−１個の関数回路Ｆ２〜Ｆｎと加算器ＡＤを備えている。関数回路Ｆ２〜Ｆｎはいずれも同じ関数ｆ（ｘ，ｙ）を備えている。ここで、関数ｆ（ｘ，ｙ）のｘ及びｙにはともに目標アドレスが入力される。関数ｆ（ｘ，ｙ）は、ｘ入力の目標アドレスを先頭にしてバーストアクセスした場合に、ｙ入力の目標アドレスがともにアクセスされるか否かをバースト長Ｌから判定する。ｙ入力の目標アドレスがアクセスされる場合には１を出力し、アクセスされない場合には０を出力する。
【００２６】
アクセスアドレスカウンタＡＡＣ１では、図３に太線で示したように、全ての関数回路Ｆ２〜Ｆｎのｘ入力に目標アドレスＡ１が入力される。一方、関数回路Ｆ２〜Ｆｎのｙ入力には、それぞれ目標アドレスＡ２〜Ａｎが入力される。図３に示すように、例えば、関数回路Ｆ２では関数ｆ（ｘ，ｙ）＝ｆ（Ａ１，Ａ２）、関数回路Ｆ３では関数ｆ（ｘ，ｙ）＝ｆ（Ａ１，Ａ３）などとなる。一般化すると、関数回路Ｆｋ（但し、ｋ＝２、３、・・・、ｎ）では関数ｆ（ｘ，ｙ）＝ｆ（Ａ１，Ａｋ）となる。なお、アクセスアドレスカウンタＡＡＣ１では、ｙ入力に目標アドレスＡ１が入力される関数回路Ｆ１は存在しないため、Ｆ１が欠番となっている。
【００２７】
このように、アクセスアドレスカウンタＡＡＣ１では、目標アドレスＡ１を先頭にしてバーストアクセスした場合に、他の目標アドレスＡ２〜Ａｎがともにアクセスされるか否かが関数回路Ｆ２〜Ｆｎにより判定される。上述の通り、関数回路Ｆｋの出力である判定信号Ｓ１ｋの値は、目標アドレスＡ１以外の目標アドレスＡｋがともにアクセスされる場合に１となり、アクセスされない場合に０となる。
【００２８】
そのため、関数回路Ｆ２〜Ｆｎから出力された判定信号Ｓ１２〜Ｓ１ｎを加算器ＡＤによって加算することにより、目標アドレスＡ１とともにアクセスされる他の目標アドレスのカウント数Ｎ１が得られる。このカウント数Ｎ１は、カウント値ｃｖとして比較部２３及びアクセス方法決定部２５に出力される。また、判定信号Ｓ１２〜Ｓ１ｎは図２に示した予備判定信号ｐｄｓとしてアクセス方法決定部２５へ出力される。
【００２９】
同様に、アクセスアドレスカウンタＡＡＣ２は、目標アドレスＡ２を先頭にしてバーストアクセスした場合に、他の目標アドレスＡ１、Ａ３〜Ａｎのうちでともにアクセスされる目標アドレスの数をカウントする回路である。アクセスアドレスカウンタＡＡＣ２は、ｎ−１個の関数回路Ｆ１、Ｆ３〜Ｆｎと加算器ＡＤを備えている。関数回路Ｆ３〜ＦｎはアクセスアドレスカウンタＡＡＣ１の関数回路Ｆ３〜Ｆｎと同じである。また、関数回路Ｆ１も、関数回路Ｆ３〜Ｆｎと同じ関数ｆ（ｘ，ｙ）を備えている。
【００３０】
アクセスアドレスカウンタＡＡＣ２では、図３に太線で示したように、全ての関数回路Ｆ１、Ｆ３〜Ｆｎのｘ入力に目標アドレスＡ２が入力される。一方、関数回路Ｆ１、Ｆ３〜Ｆｎのｙ入力には、それぞれ目標アドレスＡ１、Ａ３〜Ａｎが入力される。図３に示すように、例えば、関数回路Ｆ１では関数ｆ（ｘ，ｙ）＝ｆ（Ａ２，Ａ１）、関数回路Ｆ３では関数ｆ（ｘ，ｙ）＝ｆ（Ａ２，Ａ３）などとなる。一般化すると、関数回路Ｆｋでは関数ｆ（ｘ，ｙ）＝ｆ（Ａ２，Ａｋ）となる（但し、ｋ＝１、３、・・・、ｎ）。なお、アクセスアドレスカウンタＡＡＣ２では、ｙ入力に目標アドレスＡ２が入力される関数回路Ｆ２は存在しないため、Ｆ２が欠番となっている。
【００３１】
このように、アクセスアドレスカウンタＡＡＣ２では、目標アドレスＡ２を先頭にしてバーストアクセスした場合に、他の目標アドレスＡ１、Ａ３〜Ａｎがともにアクセスされるか否かが関数回路Ｆ１、Ｆ３〜Ｆｎにより判定される。ここで、関数回路Ｆｋの出力である判定信号Ｓ２ｋの値は、目標アドレスＡ２以外の目標アドレスＡｋがともにアクセスされる場合に１となり、アクセスされない場合に０となる。
【００３２】
そのため、関数回路Ｆ１、Ｆ３〜Ｆｎから出力された判定信号Ｓ２１、Ｓ２３〜Ｓ２ｎを加算器ＡＤによって加算することにより、目標アドレスＡ２とともにアクセスされる他の目標アドレスのカウント数Ｎ２が得られる。このカウント数Ｎ２は、カウント値ｃｖとして比較部２３及びアクセス方法決定部２５に出力される。また、判定信号Ｓ２１、Ｓ２３〜Ｓ２ｎは図２に示した予備判定信号ｐｄｓとしてアクセス方法決定部２５へ出力される。
【００３３】
同様に、アクセスアドレスカウンタＡＡＣｎは、目標アドレスＡｎを先頭にしてバーストアクセスした場合に、他の目標アドレスＡ１〜Ａｎ−１のうちでともにアクセスされる目標アドレスの数をカウントする回路である。アクセスアドレスカウンタＡＡＣｎは、ｎ−１個の関数回路Ｆ１〜Ｆｎ−１と加算器ＡＤを備えている。関数回路Ｆ１〜Ｆｎ−１はアクセスアドレスカウンタＡＡＣ１やアクセスアドレスカウンタＡＡＣ２の関数回路Ｆ１〜Ｆｎ−１と同じである。
【００３４】
アクセスアドレスカウンタＡＡＣｎでは、図３に太線で示したように、全ての関数回路Ｆ１〜Ｆｎ−１のｘ入力に目標アドレスＡｎが入力される。一方、関数回路Ｆ１〜Ｆｎ−１のｙ入力には、それぞれ目標アドレスＡ１〜Ａｎ−１が入力される。図３に示すように、例えば、関数回路Ｆ１では関数ｆ（ｘ，ｙ）＝ｆ（Ａｎ，Ａ１）、関数回路Ｆ２では関数ｆ（ｘ，ｙ）＝ｆ（Ａｎ，Ａ２）などとなる。一般化すると、関数回路Ｆｋ（但し、ｋ＝１、２、・・・、ｎ−１）では関数ｆ（ｘ，ｙ）＝ｆ（Ａｎ，Ａｋ）となる。なお、アクセスアドレスカウンタＡＡＣｎでは、ｙ入力に目標アドレスＡｎが入力される関数回路Ｆｎは存在しないため、Ｆｎが欠番となっている。
【００３５】
このように、アクセスアドレスカウンタＡＡＣｎでは、目標アドレスＡｎを先頭にしてバーストアクセスした場合に、他の目標アドレスＡ１〜Ａｎ−１がともにアクセスされるか否かが関数回路Ｆ１〜Ｆｎ−１により判定される。ここで、関数回路Ｆｋの出力である判定信号Ｓｎｋの値は、目標アドレスＡｎ以外の目標アドレスＡｋがともにアクセスされる場合に１となり、アクセスされない場合に０となる。
【００３６】
そのため、関数回路Ｆ１〜Ｆｎ−１から出力された判定信号Ｓｎ１〜Ｓｎｎ−１を加算器ＡＤによって加算することにより、目標アドレスＡｎとともにアクセスされる他の目標アドレスのカウント数Ｎｎが得られる。このカウント数Ｎｎは、カウント値ｃｖとして比較部２３及びアクセス方法決定部２５に出力される。また、判定信号Ｓｎ１〜Ｓｎｎ−１は図２に示した予備判定信号ｐｄｓとしてアクセス方法決定部２５へ出力される。
なお、図３に図示されていないアクセスアドレスカウンタＡＡＣ３〜ＡＡＣｎ−１についても同様である。
また、目標アドレスを先頭でなく２番目やその他の順番にしてバーストアクセスした場合に、他の目標アドレスがともにアクセスされるか否かを判定することも原理的には可能である。
【００３７】
図２に戻り、比較部２３について説明する。比較部２３は、パラメータレジスタ２４に格納されたパラメータ（アクセス遅延ｄ、バースト長Ｌ、バーストアクセスに要する１ワード当たりのサイクル数ｃ１、バーストアクセス後のデータ整列に要する１ワード当たりのサイクル数ｃ２）を参照して、アクセス方法（バーストアクセスもしくはランダムアクセス）を決定するための基準値を算出する。そして、比較部２３は、当該基準値とアクセスアドレス計数部２２から出力されたカウント値ｃｖ（カウント数Ｎ１〜Ｎｎ）とを比較する。比較結果が判定信号ｄｓとしてアクセス方法決定部２５へ出力される。
パラメータレジスタ２４は、上記パラメータを格納するためのレジスタである。
【００３８】
ここで、図４を参照して、比較部２３についてより詳細に説明する。図４は、比較部２３の構成の一例を示す回路図である。図４に示すように、比較部２３は、基準値算出回路ＲＣとｎ個の比較回路Ｇ１〜Ｇｎを備えている。
【００３９】
比較回路Ｇ１〜Ｇｎのｘ入力には、それぞれアクセスアドレス計数部２２から出力されたカウント数Ｎ１〜Ｎｎが入力される。比較回路Ｇ１〜Ｇｎのｙ入力には、いずれも基準値算出回路ＲＣによって算出された基準値ｒｅｆが入力される。そして、比較回路Ｇ１〜Ｇｎは、ｘ入力とｙ入力とを比較して、比較結果を判定信号Ｄ１〜Ｄｎ（判定信号ｄｓ）としてアクセス方法決定部２５へ出力する。
【００４０】
例えば、比較回路Ｇ１は、ｘ入力であるカウント数Ｎ１が、ｙ入力である基準値ｒｅｆよりも大きい場合、判定信号Ｄ１の値として１を出力する。一方、比較回路Ｇ１は、ｘ入力であるカウント数Ｎ１が、ｙ入力である基準値ｒｅｆ以下の場合、判定信号Ｄ１の値として０を出力する。
【００４１】
ここで、カウント数Ｎ１が基準値ｒｅｆよりも大きく、比較回路Ｇ１から出力される判定信号Ｄ１の値が１の場合、アクセス方法決定部２５はバーストアクセスを選択する。一方、カウント数Ｎ１が基準値ｒｅｆ以下であり、比較回路Ｇ１から出力される判定信号Ｄ１の値が０の場合、アクセス方法決定部２５はランダムアクセスを選択する。他の比較回路Ｇ２〜Ｇｎについても同様である。
【００４２】
次に、図５を参照して、基準値算出回路ＲＣが算出する基準値ｒｅｆの決定方法について説明する。図５は、バーストアクセスでのアクセス時間Ｔｂ（ａ）と、ランダムアクセスでのアクセス時間Ｔｒ（ｂ）とを比較して示したイメージ図である。図５（ａ）の例では、バースト長＝８ワードであって、アドレス４を先頭にして、アドレス５、６、７、０、１、２、３の順に連続アクセスしている。すなわち、バースト長に等しい８個のアドレスに連続アクセスする。ここで、この８個のアドレスに、３つの目標アドレス（４、６、１）が含まれている。そして、読み出した目標アドレス（４、６、１）のデータを演算回路１０が読み出す目標アドレスの順（６、１、４）に並べ替えている。
【００４３】
図５の枠内に示すように、アクセス遅延ｄ（サイクル／回）、バースト長Ｌ（ワード）、バーストアクセスに要する１ワード当たりのサイクル数ｃ１（サイクル／ワード）、バーストアクセス後のデータ整列に要する１ワード当たりのサイクル数ｃ２（サイクル／ワード）とする。図５（ａ）に示すように、１回のバーストアクセスでの総アクセス時間Ｔｂ（サイクル）は、１回のアクセス遅延ｄと、バーストアクセスに要するサイクル数と、読み出したデータの整列に要するサイクル数との和となる。
【００４４】
図５（ａ）に示すように、バーストアクセスに要するサイクル数は、バースト長Ｌ（ワード）とバーストアクセスに要する１ワード当たりのサイクル数ｃ１との積Ｌ×ｃ１で表される。また、読み出したデータの整列に要するサイクル数は、バースト長Ｌ（ワード）とデータ整列に要する１ワード当たりのサイクル数ｃ２（サイクル／ワード）との積Ｌ×ｃ２で表される。
従って、１回のバーストアクセスでの総アクセス時間Ｔｂ（サイクル）は、次式（１）で表すことができる。
Ｔｂ＝ｄ＋Ｌ×（ｃ１＋ｃ２）                    （１）
【００４５】
ここで、ＳＤＲ（Single Data Rate）型の外部メモリ２００であれば、１クロックサイクルで１ワードのデータにアクセスするから、１ワードのデータアクセスに１クロックサイクルを要する。つまり、ＳＤＲ型外部メモリ用の半導体装置１００であれば、ｃ１＝１とする。一方、ＤＤＲ（Double Data Rate）型の外部メモリ２００であれば、１クロックサイクルで２ワードのデータにアクセスするから、１ワードのデータアクセスに１／２クロックサイクルを要する。つまり、ＤＤＲ型外部メモリ用の半導体装置１００であれば、ｃ１＝１／２とする。
【００４６】
また、データ整列に要する１ワード当たりのサイクル数ｃ２は、メモリアクセス制御部２０におけるデータ整列部２６の処理速度を示している。つまり、サイクル数ｃ２は、外部メモリ２００の性能指標ではなく、メモリアクセス制御部２０の性能を示している。
【００４７】
図５（ｂ）は、図５（ａ）に示したバースト長Ｌ内に含まれる目標アドレス（６、１、４）にランダムアクセスする様子を示している。図５の枠内の最下段に示すように、バースト長Ｌ内に含まれる目標アドレスの割合ｒ（個／ワード）とする。
【００４８】
図５（ｂ）に示すように、ランダムアクセスでの総アクセス時間Ｔｒ（サイクル）は、アクセス遅延ｄとバースト長Ｌ内に含まれる目標アドレス数との積で表される。ここで、バースト長Ｌ内に含まれる目標アドレス数は、バースト長Ｌ（ワード）とバースト長Ｌ内に含まれる目標アドレスのデータ割合ｒとの積Ｌ×ｒで表される。従って、ランダムアクセスでの総アクセス時間Ｔｒ（サイクル）は、次式（２）で表すことができる。
Ｔｒ＝ｄ×Ｌ×ｒ                                （２）
【００４９】
ここで、バーストアクセスの選択によりアクセス効率が向上する条件は、Ｔｂ＜Ｔｒである。ここで、式（１）、（２）を用いてこの条件式を書き換えると、以下の条件式（３）が得られる。
ｄ＋Ｌ×（ｃ１＋ｃ２）＜ｄ×Ｌ×ｒ              （３）
【００５０】
条件式（３）を、バースト長Ｌ内に含まれる目標アドレスのデータ割合ｒについて整理すると、以下の条件式（４）が得られる。
ｒ＞１／Ｌ＋（ｃ１＋ｃ２）／ｄ                  （４）
【００５１】
そして、バースト長Ｌ内に含まれる目標アドレスのデータ数はＬ×ｒであるから、条件式（４）の両辺にＬを掛けることにより、以下の条件式（５）が得られる。
Ｌ×ｒ＞１＋Ｌ×（ｃ１＋ｃ２）／ｄ              （５）
【００５２】
ここで、アクセスアドレス計数部２２のアクセスアドレスカウンタＡＡＣ１〜ＡＡＣｎから出力されるアクセスされる目標アドレスのカウント数Ｎ１〜Ｎｎは、先頭の目標アドレスが除外されている。すなわち、カウント数Ｎ１〜Ｎｎは、バースト長Ｌ内に含まれる先頭の目標アドレス以外の目標アドレスのデータ数であって、Ｌ×ｒ−１に相当する。
そのため、条件式（５）の両辺から１を引くことにより、以下の条件式（６）が得られる。
Ｌ×ｒ−１＞Ｌ×（ｃ１＋ｃ２）／ｄ              （６）
【００５３】
この結果、図４に示した基準値算出回路ＲＣは、式（６）の右辺であるＬ×（１＋ｃ）／ｄを基準値ｒｅｆとして算出し、出力する。基準値ｒｅｆの定義式を以下に式（７）として示す。
ｒｅｆ＝Ｌ×（ｃ１＋ｃ２）／ｄ                  （７）
【００５４】
上述の通り、この基準値ｒｅｆとカウント数Ｎ１〜Ｎｎとを比較回路Ｇ１〜Ｇｎが比較し、比較結果（判定信号Ｄ１〜Ｄ２）に基づいてアクセス方法決定部２５がバーストアクセスもしくはランダムアクセスを選択する。
【００５５】
具体的には、例えばカウント数Ｎ１が基準値ｒｅｆよりも大きい場合、比較回路Ｇ１は判定信号Ｄ１の値として１を出力し、アクセス方法決定部２５はバーストアクセスを選択する。一方、カウント数Ｎ１が基準値ｒｅｆ以下の場合、比較回路Ｇ１は判定信号Ｄ１の値として０を出力し、アクセス方法決定部２５はランダムアクセスを選択する。他のカウント数Ｎ２〜Ｎｎについても同様であって、基準値ｒｅｆよりも大きければバーストアクセスが選択され、基準値ｒｅｆ以下であればランダムアクセスが選択される。
【００５６】
このように、本実施の形態に係る半導体装置１００では、全ての目標アドレスＡ１〜Ａｎについて、各アドレスへのバーストアクセスによりアクセスされるアドレス数（カウント数Ｎ１〜Ｎｎ）を事前にカウントする。そして、アドレス数が基準値ｒｅｆよりも大きい場合、そのアドレスにバーストアクセスし、アドレス数が基準値ｒｅｆよりも小さい場合、そのアドレスにランダムアクセスする。つまり、本実施の形態に係る半導体装置１００では、これから実際にアクセスする目標アドレスに基づいて、バーストアクセスとランダムアクセスとを切り換える。そのため、アクセス効率を効果的に向上させることができる。
【００５７】
また、式（７）に示すように、本実施の形態に係る半導体装置１００では、基準値ｒｅｆの値を、外部メモリ２００の仕様により定まるアクセス遅延ｄ及びバースト長Ｌに基づいて決定している。そのため、半導体装置１００に接続する外部メモリ２００を変更しても、適切なアクセス方法（バーストアクセス又はランダムアクセス）を選択し、アクセス効率を効果的に向上させることができる。
【００５８】
図２に戻り、アクセス方法決定部２５について説明する。アクセス方法決定部２５は、アドレスレジスタセット２１に格納されたアドレスセット信号ａｄｓ（目標アドレスＡ１〜Ａｎ）、アクセスアドレス計数部２２から出力されたカウント値ｃｖ（カウント数Ｎ１〜Ｎｎ）、比較部２３から出力された判定信号ｄｓ（判定信号Ｄ１〜Ｄｎ）に基づいて、アクセス方法及び目標アドレスを決定する。そして、アクセス方法決定部２５は、アクセス方法信号ａｍｓ及びアドレス信号ａｄｄ（目標アドレスＡ１〜Ａｎのいずれか１つ）を外部メモリ２００に出力し、アクセス方法信号ａｍｓをデータ整列部２６に出力する。
【００５９】
アクセス方法信号ａｍｓは、バーストアクセスもしくはランダムアクセスを示す信号である。例えば、バーストアクセスの場合にアクセス方法信号ａｍｓとして１が出力され、ランダムアクセスの場合にアクセス方法信号ａｍｓとして０が出力される。バーストアクセスの場合には、アドレス信号ａｄｄが示す目標アドレスＡｋ（但し、ｋ＝１、２、・・・、ｎ）を先頭にして、上述のバースト長Ｌ（単位：ワード）に等しいＬ個の目標アドレスにバーストアクセスする。ランダムアクセスの場合には、アドレス信号ａｄｄの目標アドレスＡｋのみにランダムアクセスする。
【００６０】
ここで、アクセス方法決定部２５は、判定信号ｄｓ（判定信号Ｄ１〜Ｄｎ）が１の場合、バーストアクセスを選択する。一方、判定信号ｄｓ（判定信号Ｄ１〜Ｄｎ）が０の場合、ランダムアクセスを選択する。バーストアクセスする場合には、常にカウント値ｃｖ（カウント数Ｎ１〜Ｎｎ）が最大のアドレスにアクセスするのが、アクセス効率の観点から好ましい。ランダムアクセスの場合には、いずれもアドレスからアクセスしても構わない。なお、ｎ個の判定信号Ｄ１〜Ｄｎから構成される判定信号ｄｓに基づいてバーストアクセスを選択する具体的な方法については図６を参照して後述する。
【００６１】
他方、アクセス方法決定部２５は、選択した目標アドレス及び予備判定信号ｐｄｓ（判定信号Ｓ１２〜Ｓ１ｎ、Ｓ２１、Ｓ２３〜Ｓ２ｎ、・・・、Ｓｎ１〜Ｓｎｎ−１）に基づいて、リセット信号ｒｓｔをアドレスレジスタセット２１に出力する。リセット信号ｒｓｔにより、選択した目標アドレスとともにバーストアクセスによってアクセスされる他の目標アドレスがリセット（例えば０にセット）され、目標アドレスから除外される。
なお、アクセス方法決定部２５については、図６を参照して、さらに詳細に説明する。その前に、データ整列部２６について説明する。
【００６２】
データ整列部２６は、アクセス方法信号ａｍｓが１すなわちバーストアクセスの場合、図５（ａ）を用いて説明したように、外部メモリ２００から読み出したデータｄａｔ１を並べ替え、演算回路１０が読み出す順に整列させる。そして、データ整列部２６は、整列させたデータｄａｔ２を演算回路１０の内部メモリ１１に格納する。一方、アクセス方法信号ａｍｓが０すなわちランダムアクセスの場合、データの整列は不要である。そのため、データ整列部２６は、外部メモリ２００から読み出したデータｄａｔ１をそのままデータｄａｔ２として演算回路１０の内部メモリ１１に格納する。
【００６３】
次に、図６を参照して、アクセス方法決定部２５についてより詳細に説明する。図６は、アクセス方法決定部２５の構成の一例を示す回路図である。図６に示すように、アクセス方法決定部２５は、選択回路ＳＥＬ、ｎ個の既読アドレス検出回路ＲＡＤ１〜ＲＡＤｎ、ｎ個のｎ入力ＯＲゲートＯＧ１〜ＯＧｎを備えている。
【００６４】
図６に示すように、選択回路ＳＥＬには、アドレスセット信号ａｄｓ（目標アドレスＡ１〜Ａｎ）、カウント値ｃｖ（カウント数Ｎ１〜Ｎｎ）、判定信号ｄｓ（判定信号Ｄ１〜Ｄｎ）から構成されるｎ個の信号セット｛Ａ１、Ｎ１、Ｄ１｝、｛Ａ２、Ｎ２、Ｄ２｝、・・・、｛Ａｎ、Ｎｎ、Ｄｎ｝が入力される。選択回路ＳＥＬは、ｎ個の信号セットの中から、判定信号Ｄｋ（但し、ｋ＝１、２、・・・、ｎ）が１かつカウント数Ｎｋが最大の信号セットを選択する。
【００６５】
例えば、判定信号Ｄ１が１かつｎ個のカウント数Ｎ１〜Ｎｎのうちカウント数Ｎ１が最大の場合、選択回路ＳＥＬは、信号セット｛Ａ１、Ｎ１、Ｄ１｝を選択する。そして、選択回路ＳＥＬは、データ整列部２６及び外部メモリ２００に対し、アクセス方法信号ａｍｓとしてバーストアクセスを示す１を出力するとともに、外部メモリ２００に対し、アドレス信号ａｄｄとして目標アドレスＡ１を出力する。つまり、メモリアクセス制御部２０は、目標アドレスＡ１を先頭にして外部メモリ２００にバーストアクセスする。
【００６６】
さらに、図６に示すように、選択回路ＳＥＬは、目標アドレスＡ１〜Ａｎが選択されたことを示す選択信号Ｓ１〜Ｓｎを出力する。選択信号Ｓ１〜Ｓｎは、それぞれ既読アドレス検出回路ＲＡＤ１〜ＲＡＤｎに入力される。例えば、目標アドレスＡ１が選択された場合、選択信号Ｓ１の値が０から１に切り換わる。この選択信号Ｓ１は、目標アドレスＡ１をリセットするためのリセット信号Ｒ１を生成するＯＲゲートＯＧ１に入力される。そのため、リセット信号Ｒ１も０から１に切り換わり、アドレスレジスタセット２１に格納された目標アドレスＡ１がリセット（例えば０にセット）され、目標アドレスから除外される。また、この選択信号Ｓ１は、既読アドレス検出回路ＲＡＤ１に入力されている。
【００６７】
既読アドレス検出回路ＲＡＤ１は、目標アドレスＡ１を先頭にしてバーストアクセスした場合に、目標アドレスＡ１とともにアクセスされる他の目標アドレスＡ２〜Ａｎを検出する回路である。既読アドレス検出回路ＲＡＤ１は、ｎ−１個の２入力ＡＮＤゲートＡＧ２〜ＡＧｎを備えている。ここで、全てのＡＮＤゲートＡＧ２〜ＡＧｎの一方の入力には、目標アドレスＡ１の選択信号Ｓ１が入力される。ＡＮＤゲートＡＧ２〜ＡＧｎの他方の入力には、それぞれアクセスアドレスカウンタＡＡＣ１から出力された判定信号Ｓ１２〜Ｓ１ｎが入力される。
【００６８】
上述の通り、判定信号Ｓ１２〜Ｓ１ｎは、目標アドレスＡ１を先頭にしてバーストアクセスした場合に、他の目標アドレスＡ２〜Ａｎがともにアクセスされるか否かを示す信号である。例えば、判定信号Ｓ１２の値は、目標アドレスＡ２が目標アドレスＡ１とともにアクセスされる場合に１であり、アクセスされない場合に０である。一般化すると、判定信号Ｓ１ｋ（但し、ｋ＝２、３、・・・、ｎ）の値は、目標アドレスＡｋが目標アドレスＡ１とともにアクセスされる場合に１であり、アクセスされない場合に０である。
【００６９】
そして、ＡＮＤゲートＡＧ２から出力される信号は、目標アドレスＡ２のリセット信号Ｒ２を生成するＯＲゲートＯＧ２に入力される。一般化すると、ＡＮＤゲートＡＧｋ（但し、ｋ＝２、３、・・・、ｎ）から出力される信号は、目標アドレスＡｋのリセット信号Ｒｋを生成するＯＲゲートＯＧｋに入力される。なお、既読アドレス検出回路ＲＡＤ１では、目標アドレスＡ１のリセット信号Ｒ１を生成するＯＲゲートＯＧ１に出力するＡＮＤゲートＡＧ１は存在しないため、ＡＧ１が欠番となっている。
【００７０】
例えば、目標アドレスＡ２が目標アドレスＡ１とともにアクセスされる場合、ＡＮＤゲートＡＧ２の一方の入力である判定信号Ｓ１２の値は１である。そのため、ＡＮＤゲートＡＧ２の他方の入力である選択信号Ｓ１の値が０から１に切り換わると、ＡＮＤゲートＡＧ２の出力も０から１に切り換わる。このＡＮＤゲートＡＧ２の出力は、目標アドレスＡ２のリセット信号Ｒ２を生成するＯＲゲートＯＧ２に入力される。
【００７１】
従って、リセット信号Ｒ２も０から１に切り換わり、アドレスレジスタセット２１に格納された目標アドレスＡ２がリセット（例えば０にセット）され、目標アドレスから除外される。このように、既読アドレス検出回路ＲＡＤ１により、目標アドレスＡ１とともにアクセスされる他の目標アドレスを検出し、目標アドレスから除外することができる。
【００７２】
同様に、既読アドレス検出回路ＲＡＤ２は、目標アドレスＡ２を先頭にしてバーストアクセスした場合に、目標アドレスＡ２とともにアクセスされる他の目標アドレスＡ１、Ａ３〜Ａｎを検出する回路である。既読アドレス検出回路ＲＡＤ２は、ｎ−１個の２入力ＡＮＤゲートＡＧ１、ＡＧ３〜ＡＧｎを備えている。ここで、全てのＡＮＤゲートＡＧ１、ＡＧ３〜ＡＧｎの一方の入力には、目標アドレスＡ２の選択信号Ｓ２が入力される。ＡＮＤゲートＡＧ１、ＡＧ３〜ＡＧｎの他方の入力には、それぞれアクセスアドレスカウンタＡＡＣ２から出力された判定信号Ｓ２１、Ｓ２３〜Ｓ２ｎが入力される。
【００７３】
上述の通り、判定信号Ｓ２１、Ｓ２３〜Ｓ２ｎは、目標アドレスＡ２を先頭にしてバーストアクセスした場合に、他の目標アドレスＡ１、Ａ３〜Ａｎがともにアクセスされるか否かを示す信号である。例えば、判定信号Ｓ２１の値は、目標アドレスＡ１が目標アドレスＡ２とともにアクセスされる場合に１であり、アクセスされない場合に０である。一般化すると、判定信号Ｓ２ｋ（但し、ｋ＝１、３、・・・、ｎ）の値は、目標アドレスＡｋが目標アドレスＡ２とともにアクセスされる場合に１であり、アクセスされない場合に０である。
【００７４】
そして、ＡＮＤゲートＡＧ１から出力される信号は、目標アドレスＡ１のリセット信号Ｒ１を生成するＯＲゲートＯＧ１に入力される。一般化すると、ＡＮＤゲートＡＧｋ（但し、ｋ＝１、３、・・・、ｎ）から出力される信号は、目標アドレスＡｋのリセット信号Ｒｋを生成するＯＲゲートＯＧｋに入力される。なお、既読アドレス検出回路ＲＡＤ２では、目標アドレスＡ２のリセット信号Ｒ２を生成するＯＲゲートＯＧ２に出力するＡＮＤゲートＡＧ２は存在しないため、ＡＧ２が欠番となっている。
【００７５】
例えば、目標アドレスＡｎが目標アドレスＡ２とともにアクセスされる場合、ＡＮＤゲートＡＧｎの一方の入力である判定信号Ｓ２ｎの値は１である。そのため、ＡＮＤゲートＡＧｎの他方の入力である選択信号Ｓ２の値が０から１に切り換わると、ＡＮＤゲートＡＧｎの出力も０から１に切り換わる。このＡＮＤゲートＡＧｎの出力は、目標アドレスＡｎのリセット信号Ｒｎを生成するＯＲゲートＯＧｎに入力される。
【００７６】
従って、リセット信号Ｒｎも０から１に切り換わり、アドレスレジスタセット２１に格納された目標アドレスＡｎがリセットされ、目標アドレスから除外される。このように、既読アドレス検出回路ＲＡＤ２により、目標アドレスＡ２とともにアクセスされる他の目標アドレスを検出し、目標アドレスから除外することができる。
【００７７】
同様に、既読アドレス検出回路ＲＡＤｎは、目標アドレスＡｎを先頭にしてバーストアクセスした場合に、目標アドレスＡｎとともにアクセスされる他の目標アドレスＡ１〜Ａｎ−１を検出する回路である。既読アドレス検出回路ＲＡＤｎは、ｎ−１個の２入力ＡＮＤゲートＡＧ１〜ＡＧｎ−１を備えている。ここで、全てのＡＮＤゲートＡＧ１〜ＡＧｎ−１の一方の入力には、目標アドレスＡｎの選択信号Ｓｎが入力される。ＡＮＤゲートＡＧ１〜ＡＧｎ−１の他方の入力には、それぞれアクセスアドレスカウンタＡＡＣｎから出力された判定信号Ｓｎ１〜Ｓｎｎ−１が入力される。
【００７８】
上述の通り、判定信号Ｓｎ１〜Ｓｎｎ−１は、目標アドレスＡｎを先頭にしてバーストアクセスした場合に、他の目標アドレスＡ１〜Ａｎ−１がともにアクセスされるか否かを示す信号である。例えば、判定信号Ｓｎ１の値は、目標アドレスＡ１が目標アドレスＡｎとともにアクセスされる場合に１であり、アクセスされない場合に０である。一般化すると、判定信号Ｓｎｋ（但し、ｋ＝１、・・・、ｎ−１）の値は、目標アドレスＡｋが目標アドレスＡｎとともにアクセスされる場合に１であり、アクセスされない場合に０である。
【００７９】
そして、ＡＮＤゲートＡＧ１から出力される信号は、目標アドレスＡ１のリセット信号Ｒ１を生成するＯＲゲートＯＧ１に入力される。一般化すると、ＡＮＤゲートＡＧｋ（但し、ｋ＝１、・・・、ｎ−１）から出力される信号は、目標アドレスＡｋのリセット信号Ｒｋを生成するＯＲゲートＯＧｋに入力される。なお、既読アドレス検出回路ＲＡＤｎでは、目標アドレスＡｎのリセット信号Ｒｎを生成するＯＲゲートＯＧｎに出力するＡＮＤゲートＡＧｎは存在しないため、ＡＧｎが欠番となっている。
【００８０】
例えば、目標アドレスＡ１が目標アドレスＡｎとともにアクセスされる場合、ＡＮＤゲートＡＧ１の一方の入力である判定信号Ｓｎ１の値は１である。そのため、ＡＮＤゲートＡＧ１の他方の入力である選択信号Ｓｎの値が０から１に切り換わると、ＡＮＤゲートＡＧ１の出力も０から１に切り換わる。このＡＮＤゲートＡＧ１の出力は、目標アドレスＡ１のリセット信号Ｒ１を生成するＯＲゲートＯＧ１に入力される。
【００８１】
従って、リセット信号Ｒ１も０から１に切り換わり、アドレスレジスタセット２１に格納された目標アドレスＡ１がリセットされ、目標アドレスから除外される。このように、既読アドレス検出回路ＲＡＤｎにより、目標アドレスＡｎとともにアクセスされる他の目標アドレスを検出し、目標アドレスから除外することができる。
なお、図６に図示されていない既読アドレス検出回路ＲＡＤ３〜ＲＡＤｎ−１についても同様である。また、当然のことながら、上記では、リセット信号Ｒ１〜Ｒｎが１の場合にアドレスレジスタセット２１に格納された目標アドレスＡ１〜Ａｎをリセットしているが、リセット信号Ｒ１〜Ｒｎが０の場合にリセットする構成でもよい。
【００８２】
このように、バーストアクセスを行う毎に、既読アドレスがアドレスレジスタセット２１においてリセットされ、目標アドレスから除外される。そのため、カウント数Ｎ１〜Ｎｎ及び判定信号Ｄ１〜Ｄｎの値が更新される。選択回路ＳＥＬは、更新された信号セットの中から、判定信号Ｄｋが１かつカウント数Ｎｋが最大の信号セットを選択し、バーストアクセスを繰り返す。そのため、アクセス効率をより効果的に向上させることができる。
【００８３】
他方、判定信号Ｄｋが１の信号セットがなくなった場合、選択回路ＳＥＬはリセットされていない目標アドレスＡｋを含む任意の信号セットを１つ選択する。そして、選択回路ＳＥＬは、データ整列部２６及び外部メモリ２００に対してアクセス方法信号ａｍｓとしてランダムアクセスを示す０を出力するとともに、外部メモリ２００に対してアドレス信号ａｄｄとして目標アドレスＡｋを出力する。つまり、メモリアクセス制御部２０は、外部メモリ２００の目標アドレスＡｋにランダムアクセスする。
【００８４】
アドレスレジスタセット２１において全ての目標アドレスがリセットされるまで、メモリアクセス制御部２０はランダムアクセスを繰り返す。全ての目標アドレスがリセットされたら、アドレスレジスタセット２１に新たな目標アドレスのセットであるアドレスセット信号ａｄｓが格納される。
【００８５】
以上に説明したように、本実施の形態に係る半導体装置１００では、全ての目標アドレスＡ１〜Ａｎについて、各アドレスへのバーストアクセスによりアクセスされるアドレス数（カウント数Ｎ１〜Ｎｎ）を事前にカウントする。そして、アドレス数が基準値ｒｅｆよりも大きい場合、そのアドレスにバーストアクセスし、アドレス数が基準値ｒｅｆよりも小さい場合、そのアドレスにランダムアクセスする。つまり、本実施の形態に係る半導体装置１００では、これから実際にアクセスする目標アドレスに基づいて、バーストアクセスとランダムアクセスとを切り換える。そのため、アクセス効率を効果的に向上させることができる。
【００８６】
（その他の実施の形態）
図７〜９を参照して、その他の実施の形態について説明する。
図７は図１の変形例である。図１では演算回路１０とメモリアクセス制御部２０とが単一の半導体チップに形成されていたが、図８に示すように、演算回路１０とメモリアクセス制御部２０とが別々の半導体チップＣＨＰ１、ＣＨＰ２に形成されていてもよい。
【００８７】
図８は図７の変形例である。図７ではメモリアクセス制御部２０と外部メモリ２００とが別々の半導体チップに形成されているが、図８に示すように、メモリアクセス制御部２０と外部メモリ２００とが単一の半導体チップＣＨＰ２に形成されていてもよい。ここで、演算回路１０は図７と同様に、半導体チップＣＨＰ２とは別の半導体チップＣＨＰ１に形成されている。
【００８８】
図９は図１の変形例である。図１では演算回路１０及びメモリアクセス制御部２０と外部メモリ２００とが別々の半導体チップに形成されていたが、図９に示すように、演算回路１０、メモリアクセス制御部２０、及び外部メモリ２００の全てが単一の半導体チップＣＨＰ１に形成されていてもよい。
【００８９】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
例えば、実施の形態では、読み出し動作について説明したが、本発明は書き込み動作に適用することも可能である。
【符号の説明】
【００９０】
１０  演算回路
１１  内部メモリ
２０  メモリアクセス制御部
２１  アドレスレジスタセット
２２  アクセスアドレス計数部
２３  比較部
２４  パラメータレジスタ
２５  アクセス方法決定部
２６  データ整列部
１００  半導体装置
２００  外部メモリ
ＡＡＣ１-ＡＡＣｎ  アクセスアドレスカウンタ
ＡＤ  加算器
ＡＧ１-ＡＧｎ  ２入力ＡＮＤゲート
ＡＲ１-ＡＲｎ  アドレスレジスタ
ＣＨＰ１、ＣＨＰ２  半導体チップ
Ｆ１-Ｆｎ  関数回路
Ｇ１-Ｇｎ  比較回路
ＯＧ１-ＯＧｎ  ｎ入力ＯＲゲート
ＲＡＤ１-ＲＡＤｎ  既読アドレス検出回路
ＲＣ  基準値算出回路
ＳＥＬ  選択回路
【図１】
0006316143.tif 000002
【図２】
0006316143.tif 000003
【図３】
0006316143.tif 000004
【図４】
0006316143.tif 000005
【図５】
0006316143.tif 000006
【図６】
0006316143.tif 000007
【図７】
0006316143.tif 000008
【図８】
0006316143.tif 000009
【図９】
0006316143.tif 000010