(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 Instruction Multiple Data）型マルチコアプロセッサである。Ｎの値は特に限定されないが、３以上が好ましい。画像処理用のＳＩＭＤ型マルチコアプロセッサでは、例えばＮ＝３２、６４、１２８、２５６などが代表的である。また、演算回路１０は、アドレスレジスタ１１ａ、判定フラグレジスタ１１ｂ、データ記憶部１１ｃを含む内部メモリ１１を備えている。
【００２０】
Ｎ個の演算コアＰＥ１〜ＰＥＮは、転送サイクル毎に、それぞれの目標アドレスａ１〜ａＮをアドレスレジスタ１１ａに出力する。また、演算コアＰＥ１〜ＰＥＮは、外部メモリ２００から読み出され、データ記憶部１１ｃに格納されたデータｄａｔを用いて、各種演算を行う。
【００２１】
ここで、演算コアＰＥ１〜ＰＥＮは、転送サイクル毎に、自身の目標アドレスとアクセス順序が直前の目標アドレスとが同一のバーストアクセスでアクセス可能か否かを示す判定フラグｂ１〜ｂＮをそれぞれ判定フラグレジスタ１１ｂに出力する。例えば、演算コアＰＥＮは、転送サイクル毎に、自身の目標アドレスａＮとアクセス順序が直前の目標アドレスａＮ−１とが同一のバーストアクセスでアクセス可能か否かを示す判定フラグｂＮを出力する。判定フラグｂ１〜ｂＮの詳細については後述する。
【００２２】
アドレスレジスタ１１ａには、Ｎ個の演算コアＰＥ１〜ＰＥＮから出力されたそれぞれの目標アドレスａ１〜ａＮが格納されている。このＮ個の目標アドレスａ１〜ａＮがアドレスセット信号Ａを構成している。ここで、目標アドレスａ１〜ａＮは、ランダムアクセスの場合、目標アドレスａ１、ａ２、・・・ａＮ−１、ａＮの順序にアクセスされる。この目標アドレスａ１〜ａＮすなわちアドレスセット信号Ａは転送サイクル毎に書き換えられる。図２では、Ｔ（Ｔは自然数）回目の転送サイクルにおける目標アドレスセット信号ということを示すためにＡ（Ｔ）と表示している。
【００２３】
判定フラグレジスタ１１ｂには、Ｎ個の演算コアＰＥ１〜ＰＥＮのそれぞれから出力された判定フラグｂ１〜ｂＮが格納されている。このＮ個の判定フラグｂ１〜ｂＮが判定フラグセット信号Ｂを構成している。ここで、判定フラグｂ１〜ｂＮは、それぞれ目標アドレスａ１〜ａＮとアクセス順序が隣接する目標アドレスとが同一のバーストアクセスでアクセス可能か否かを示すフラグである。この判定フラグｂ１〜ｂＮすなわち判定フラグセット信号Ｂも、アドレスセット信号Ａと同様に、転送サイクル毎に書き換えられる。図２では、Ｔ回目の転送サイクルにおける判定フラグセット信号ということを示すためにＢ（Ｔ）と表示している。
【００２４】
本実施形態では、判定フラグｂ１〜ｂＮは、各目標アドレスとアクセス順序が直前の目標アドレスとが同一のバーストアクセスでアクセス可能か否かを示す０又は１の信号である。本実施形態では、同一のバーストアクセスでアクセス可能であれば１とし、アクセス不可能であれば０とする。なお、同一のバーストアクセスでアクセス不可能であれば１とし、アクセス可能であれば０としてもよい。
【００２５】
＜演算回路１０における判定フラグｂ１〜ｂＮの生成方法＞
次に、判定フラグｂ１〜ｂＮの生成方法すなわち目標アドレスとアクセス順序が直前の目標アドレスとが同一のバーストアクセスでアクセス可能か否かを判定する方法について説明する。
まず、先頭の目標アドレスａ１には直前にアクセスされる目標アドレスが存在しないため、演算コアＰＥ１が出力する判定フラグｂ１の値は転送サイクルによらず０となる。そのため、以下では判定フラグｂ２〜ｂＮの生成方法について説明する。
【００２６】
一般的に、バースト長Ｌのバーストアクセスでは、１回のバーストアクセスで連続するＬ個のアドレスにアクセスする。具体的には、バースト長Ｌ＝４のバーストアクセスの場合、１度にアクセスされる４つのアドレス値は、例えば（０、１、２、３）、（４、５、６、７）、（８、９、１０、１１）などとなる。また、バースト長Ｌ＝８のバーストアクセスの場合、１度にアクセスされる８つのアドレス値は、例えば（０、１、２、３、４、５、６、７）、（８、９、１０、１１、１２、１３、１４、１５）などとなる。このように、１回のバーストアクセスでアクセスされるＬ個のアドレス値の最小値は、０もしくはバースト長Ｌの倍数であって、これらＬ個のアドレス値をバースト長Ｌで除した商の整数部の値は全て同じ値になる。
【００２７】
そのため、目標アドレスａｎ（ｎは２〜Ｎの自然数）とアクセス順序が直前の目標アドレスａｎ−１をそれぞれバースト長Ｌで除したａｎ／Ｌ及びａｎ−１／Ｌの整数部が同じ値であれば、目標アドレスａｎ、ａｎ−１は同一のバーストアクセスでアクセス可能ということになる。すわなち、判定フラグｂｎ＝１となる。一方、ａｎ／Ｌ及びａｎ−１／Ｌの整数部が異なる値であれば、目標アドレスａｎ、ａｎ−１は同一のバーストアクセスでアクセス不可能ということになる。すわなち、判定フラグｂｎ＝０となる。数式化すると、次式で表すことができる。
ＩＮＴ（ａｎ／Ｌ）＝ＩＮＴ（ａｎ−１／Ｌ）ならばｂｎ＝１
ＩＮＴ（ａｎ／Ｌ）≠ＩＮＴ（ａｎ−１／Ｌ）ならばｂｎ＝０
ここで、関数ＩＮＴ（ｘ）はｘの整数部を意味する。
【００２８】
以上のように、各演算コアＰＥｎは、自身の目標アドレスａｎ及び演算コアＰＥｎ−１が出力する目標アドレスａｎ−１から、ＩＮＴ（ａｎ／Ｌ）及びＩＮＴ（ａｎ−１／Ｌ）を算出して比較する。そして、各演算コアＰＥｎは、その比較結果を判定フラグｂｎとして出力する。この各演算コアＰＥｎにおける判定フラグｂｎの生成はプログラム処理で実行可能である。ここで、バースト長Ｌの値は、通常４、８、１６など２のべき乗数である。そのため、演算コアＰＥｎにおける除算ａｎ／Ｌは、シフト演算によって代用可能であって、通常１ステップのプログラム処理で実行可能である。また、ａｎ／Ｌの整数部の抽出、及び演算コアＰＥｎ−１が生成したａｎ−１／Ｌの整数部との比較も、簡易なプログラム処理で実行可能である。すなわち、演算コアＰＥ１〜ＰＥＮは、目標アドレスａ１〜ａＮを生成後、直ちに判定フラグｂ１〜ｂＮを生成することができる。
【００２９】
なお、本実施形態では、判定フラグｂ１〜ｂＮを演算回路１０において生成しているが、メモリアクセス制御部２０において生成してもよい。但し、この場合、メモリアクセス制御部２０に、ＩＮＴ（ａｎ／Ｌ）とＩＮＴ（ａｎ−１／Ｌ）とを比較するためのＮ個の比較回路が新たに必要になる。上述の通り、ＩＮＴ（ａｎ／Ｌ）とＩＮＴ（ａｎ−１／Ｌ）との比較は、演算コアＰＥ１〜ＰＥＮにおけるプログラム処理により容易かつ短時間で行うことができる。従って、本実施形態のように、判定フラグｂ１〜ｂＮの生成は、演算回路１０において行うことが好ましい。判定フラグｂ１〜ｂＮの具体例については後述する。
【００３０】
＜メモリアクセス制御部２０の構成＞
次に、メモリアクセス制御部２０について説明する。図２に示すように、メモリアクセス制御部２０は、開始アドレス生成部２１、アクセス方法決定部２２、制御信号保持部２３、パラメータレジスタ２４、セレクタ２５、入出力部２６を備えている。
【００３１】
開始アドレス生成部２１には、演算回路１０から出力されたアドレスセット信号Ａ（目標アドレスａ１〜ａＮ）及び判定フラグセット信号Ｂ（判定フラグｂ１〜ｂＮ）が入力される。開始アドレス生成部２１は、判定フラグｂ１〜ｂＮに基づいて、目標アドレスａ１〜ａＮから各バーストアクセス時に最初にアクセスされるアドレス（開始アドレス）を抽出する。なお、図２に示すように、演算回路１０とメモリアクセス制御部２０との間の信号の授受は、メモリバスＭＢを介さずに行われるため、アクセス方法を決定するためにメモリバスＭＢを占有することはない。
【００３２】
具体的には、アクセス順序が直前の目標アドレスと同一のバーストアクセスでアクセス不可能と判定された（つまり判定フラグｂ１〜ｂＮの値が０となる）目標アドレスａ１〜ａＮがバーストアクセスの開始アドレスｒ１〜ｒＭ（Ｍは自然数）として抽出される。これにより、Ｍ個の開始アドレスｒ１〜ｒＭから構成される開始アドレスセット信号Ｒが生成される。ここで、開始アドレスｒ１〜ｒＭの個数Ｍは、全ての目標アドレスａ１〜ａＮにアクセスするために必要なバーストアクセスの回数に相当する。この開始アドレスセット信号Ｒを生成するには、Ｎ個の判定フラグｂ１〜ｂＮを逐次読み出す必要があるため、処理時間としてＮ（クロックサイクル）を要する。
【００３３】
この開始アドレスｒ１〜ｒＭすなわち開始アドレスセット信号Ｒも、転送サイクル毎に書き換えられる。図２では、Ｔ回目の転送サイクルにおける開始アドレスセット信号ということを示すためにＲ（Ｔ）と表示している。なお、開始アドレスｒ１〜ｒＭの具体例については後述する。
【００３４】
アクセス方法決定部２２は、図２に示すように、パラメータレジスタ２４に格納されたパラメータ（アクセス遅延ｄ、バースト長Ｌ）を参照しつつ、開始アドレス生成部２１から出力された開始アドレスセット信号Ｒに基づいてアクセス方法（バーストアクセスもしくはランダムアクセス）を決定する。そして、アクセス方法決定部２２は、アクセス方法としてバーストアクセスもしくはランダムアクセスのいずれを選択したのかを示すアクセス制御信号ｃｔｒを制御信号保持部２３に出力する。
【００３５】
本実施形態では、アクセス制御信号ｃｔｒは、バーストアクセスもしくはランダムアクセスを示す０又は１の信号であって、バーストアクセスであれば１、ランダムアクセスであれば０である。当然のことながら、バーストアクセスであれば０、ランダムアクセスであれば１としてもよい。このアクセス制御信号ｃｔｒも、転送サイクル毎に書き換えられる。図２では、Ｔ回目の転送サイクルにおけるアクセス制御信号ということを示すためにｃｔｒ（Ｔ）と表示している。
【００３６】
より具体的には、アクセス方法決定部２２は、開始アドレスｒ１〜ｒＭの個数であるバーストアクセス回数Ｍからアドレスセット信号Ａにバーストアクセスした場合のバーストアクセス時間ｔｂを算出する。上述の通り、バーストアクセスを行うには、開始アドレスセット信号Ｒの生成に目標アドレス数Ｎに等しいＮ（クロックサイクル）を要する。また、１回のバーストアクセス毎に、アクセス遅延ｄ（クロックサイクル）と、バースト長Ｌ（ワード）に等しいＬ個のアドレスにアクセスするためのＬ（クロックサイクル）とを要する。従って、バーストアクセス時間ｔｂ（クロックサイクル）は、目標アドレス数Ｎ（個）、バーストアクセス回数Ｍ（回）、アクセス遅延ｄ（クロックサイクル）、バースト長Ｌ（ワード）を用いて、次式で表すことができる。
ｔｂ＝Ｎ＋Ｍ×（ｄ＋Ｌ）
ここで、バーストアクセス回数Ｍが転送サイクル毎に変化するため、バーストアクセス時間ｔｂは転送サイクル毎に変化する。
【００３７】
アクセス方法決定部２２は、算出したバーストアクセス時間ｔｂをアドレスセット信号Ａにランダムアクセスした場合のランダムアクセス時間ｔｒと比較する。ランダムアクセスの場合、Ｎ個の目標アドレスａ１〜ａＮに１個ずつアクセスする。従って、ランダムアクセス時間ｔｒ（クロックサイクル）は、目標アドレス数Ｎ（個）、アクセス遅延ｄ（クロックサイクル）を用いて、次式で表すことができる。
ｔｒ＝Ｎ×ｄ
このように、ランダムアクセス時間ｔｒは転送サイクルによらず常に一定である。
【００３８】
そして、アクセス方法決定部２２は、アクセス時間が小さい方のアクセス方法を選択する。すなわち、ｔｂ＜ｔｒの場合、アクセス方法決定部２２は、アクセス方法としてバーストアクセスを選択し、アクセス制御信号ｃｔｒ＝１を出力する。一方、ｔｂ＞ｔｒの場合、アクセス方法決定部２２は、アクセス方法としてランダムアクセスを選択し、アクセス制御信号ｃｔｒ＝０を出力する。ｔｂ＝ｔｒの場合、アクセス方法決定部２２は、バーストアクセスとランダムアクセスのいずれを選択してもよい。本実施形態では、ｔｂ＝ｔｒの場合、アクセス方法決定部２２は、バーストアクセスを選択し、アクセス制御信号ｃｔｒ＝１を出力する。
【００３９】
制御信号保持部２３は、アクセス方法決定部２２から出力されたアクセス制御信号ｃｔｒを保持する。そして、制御信号保持部２３は、所定のタイミングでアクセス制御信号ｃｔｒをセレクタ２５及び入出力部２６に対して出力する。図２に示すように、Ｔ回目の転送サイクルにおいて、制御信号保持部２３は、Ｔ回目の転送サイクルにおけるアクセス制御信号ｃｔｒ（Ｔ）を取り込み、（Ｔ−１）回目の転送サイクルにおけるアクセス制御信号ｃｔｒ（Ｔ−１）を出力する。
【００４０】
セレクタ２５には、Ｔ回目の転送サイクルにおいて、アドレスセット信号Ａ（Ｔ）と開始アドレスセット信号Ｒ（Ｔ）とが入力される。そして、セレクタ２５は、アクセス制御信号ｃｔｒ（Ｔ−１）に基づいて、アドレスセット信号Ａ（Ｔ）又は開始アドレスセット信号Ｒ（Ｔ）のいずれかを選択する。具体的には、バーストアクセス（アクセス制御信号ｃｔｒ（Ｔ−１）＝１）の場合、開始アドレスセット信号Ｒが選択される。一方、ランダムアクセス（アクセス制御信号ｃｔｒ（Ｔ−１）＝０）の場合、アドレスセット信号Ａが選択される。
【００４１】
ここで、Ｔ回目の転送サイクルにおいて、アクセス制御信号ｃｔｒ（Ｔ）ではなく、アクセス制御信号ｃｔｒ（Ｔ−１）を用いるのは、ランダムアクセスの場合、Ｎサイクルを要する開始アドレスセット信号Ｒ（Ｔ）の生成を待たずに、アドレスセット信号Ａ（Ｔ）の転送を開始するためである。また、例えば画像処理などでは、ほとんどの場合、アクセス制御信号ｃｔｒ（Ｔ）がアクセス制御信号ｃｔｒ（Ｔ−１）と同じ値になる。つまり、両者の値が異なり不適切なアクセス方法が選択されるのは、全体から見れば僅かな頻度に留まるため、全体のアクセス時間に与える影響は少ない。
【００４２】
入出力部２６は、Ｔ回目の転送サイクルにおいて、セレクタ２５によって選択されたアドレスセット信号Ａ又は開始アドレスセット信号Ｒのいずれかをアドレス信号ａｄｄとしてメモリバスＭＢに出力する。このアドレス信号ａｄｄは、メモリバスＭＢを介して外部メモリ２００に入力される。また、入出力部２６は、アクセス方法を示すアクセス制御信号ｃｔｒを、メモリバスＭＢを介して外部メモリ２００に転送する。アドレス信号ａｄｄ及びアクセス制御信号ｃｔｒに応じて外部メモリ２００から読み出されたデータｄａｔは、メモリバスＭＢを介して入出力部２６に入力される。そして、入出力部２６は、外部メモリ２００から受け取ったデータｄａｔを演算回路１０のデータ記憶部１１ｃに転送する。
【００４３】
本実施形態に係る半導体装置１００では、アドレスセット信号Ａを構成する各アドレスについて、当該アドレスとアクセス順序が隣接するアドレスとが、同一バーストアクセスでアクセスされるか否かを判定する。そして、この判定結果（判定フラグセット信号Ｂ）に基づいて、アドレスセット信号Ａにアクセスするために必要なバーストアクセスの回数を計数し、アドレスセット信号Ａにバーストアクセスした場合のアクセス時間を算出する。このように、本実施形態に係る半導体装置１００では、アドレスセットに対するバーストアクセスが複数回に及び得る場合にも、バーストアクセスによる所要時間を見積もることができ、バーストアクセスとランダムアクセスとを適切に切り換えてアクセス効率を向上させることができる。
【００４４】
また、第１の実施形態に係る半導体装置１００では、アドレスセット信号Ａを構成する各目標アドレスａ１〜ａＮについて、当該アドレスとアクセス順序が隣接する（すなわち前又は後ろの）アドレスとが、同一バーストアクセスでアクセスされるか否かを示すＮ個の判定フラグｂ１〜ｂＮを生成する。
【００４５】
ここで、仮にＮ個の目標アドレスａ１〜ａＮのそれぞれについて、自身以外の全てのアドレス（すなわち（Ｎ−１）個のアドレス）と同一バーストアクセスでアクセスされるか否かを判定する場合について考える。この場合、判定数はＮ×（Ｎ−１）個になるため、第１の実施形態に係る半導体装置１００と同じ時間で判定するには、判定に必要な回路資源を（Ｎ−１）倍にする必要がある。あるいは、第１の実施形態に係る半導体装置１００と同じ回路資源で判定した場合には、判定時間が（Ｎ−１）倍になってしまう。
【００４６】
換言すると、第１の実施形態に係る半導体装置１００は、アクセス順序が隣接するアドレス同士のみについて判定するため、少ない回路資源を用いて短時間にアクセス方法を決定することができる。アドレスセット信号Ａを構成する目標アドレスの個数Ｎが大きい程、この効果が大きくなる。上述の通り、Ｎ＝３２、６４、１２８、２５６などが代表的であるため、充分な効果が期待できる。
【００４７】
また、アクセス順序が隣接するアドレス同士のみを用いて判定するため、第１の実施形態に係る半導体装置１００は、アクセス順序が隣接するアドレス同士のアドレス値が、ある程度の区間で近接している場合に好適である。以下の具体例に示すように、アクセス順序が隣接するアドレス同士のアドレス値が、連続あるいは一定間隔で連続している場合などに特に好適である。
【００４８】
＜メモリアクセス制御部２０の動作の説明＞
次に、図３を参照して、メモリアクセス制御部２０の動作について説明する。図３は、第１の実施形態に係るメモリアクセス制御部２０の動作を説明するためのタイミングチャートである。図３には、（Ｔ−１）回目とＴ回目の転送サイクルが示されている。なお、図３では判定フラグセット信号Ｂは省略されている。
【００４９】
まず、（Ｔ−１）回目の転送サイクルについて説明する。
（Ｔ−１）回目の転送サイクルが開始されると、まず、最上段に示したように、メモリアクセス制御部２０は、アドレスセット信号Ａ（Ｔ−１）及び判定フラグセット信号Ｂ（Ｔ−１）を取り込む。
次に、２段目に示したように、開始アドレス生成部２１において、開始アドレスセット信号Ｒ（Ｔ−１）を生成する。上述の通り、開始アドレスセット信号Ｒ（Ｔ−１）の生成には、Ｎ（クロックサイクル）を要する。
【００５０】
次に、３段目に示したように、アクセス方法決定部２２において、バーストアクセス時間ｔｂ（Ｔ−１）を算出する。
続けて、４段目に示したように、アクセス方法決定部２２において、算出したバーストアクセス時間ｔｂ（Ｔ−１）をランダムアクセス時間ｔｒと比較し、アクセス制御信号ｃｔｒ（Ｔ−１）を生成する。図３の例では、ｃｔｒ（Ｔ−１）＝１すなわちバーストアクセスが選択されたものとする。これにより、Ｔ回目の転送サイクルで、アドレスセット信号Ａ（Ｔ）がバーストアクセスによって転送される。ここで、アクセス制御信号ｃｔｒ（Ｔ−１）は制御信号保持部２３に保持される。
【００５１】
他方、最下段に示したように、（Ｔ−１）回目の転送サイクルでは、取り込んだアドレスセット信号Ａ（Ｔ−１）がランダムアクセスによって転送されている。これは、制御信号保持部２３に保持されていた（Ｔ−２）回目の転送サイクルにおけるアクセス制御信号ｃｔｒ（Ｔ−２）の値が０であったためである（不図示）。（Ｔ−１）回目の転送サイクルに示すように、ランダムアクセスの場合、アドレスセット信号Ａ（Ｔ−１）を取り込んだら、開始アドレスセット信号Ｒ（Ｔ−１）の生成を待たずに、すぐに転送を開始する。
【００５２】
次に、Ｔ回目の転送サイクルについて説明する。
Ｔ回目の転送サイクルが開始されると、まず、最上段に示したように、メモリアクセス制御部２０は、アドレスセット信号Ａ（Ｔ）及び判定フラグセット信号Ｂ（Ｔ）を取り込む。
次に、２段目に示したように、開始アドレス生成部２１において、開始アドレスセット信号Ｒ（Ｔ）を生成する。開始アドレスセット信号Ｒ（Ｔ）の生成にも、Ｎ（クロックサイクル）を要する。
【００５３】
次に、３段目に示したように、アクセス方法決定部２２において、バーストアクセス時間ｔｂ（Ｔ）を算出する。
続けて、４段目に示したように、アクセス方法決定部２２において、算出したバーストアクセス時間ｔｂ（Ｔ）をランダムアクセス時間ｔｒと比較し、アクセス制御信号ｃｔｒ（Ｔ）を生成する。図３の例では、ｃｔｒ（Ｔ）＝０すなわちランダムアクセスが選択されたものとする。これにより、（Ｔ＋１）回目の転送サイクルで、アドレスセット信号Ａ（Ｔ＋１）がランダムアクセスによって転送される（不図示）。ここで、アクセス制御信号ｃｔｒ（Ｔ）は制御信号保持部２３に保持される。
【００５４】
他方、最下段に示したように、Ｔ回目の転送サイクルでは、取り込んだアドレスセット信号Ａ（Ｔ）がバーストアクセスによって転送されている。これは、上述の通り、制御信号保持部２３に保持されていたアクセス制御信号ｃｔｒ（Ｔ−１）の値が１であったためである。バーストアクセスの場合、開始アドレスセット信号Ｒ（Ｔ）を用いてアドレスセット信号Ａ（Ｔ）を転送する。そのため、Ｔ回目の転送サイクルに示すように、開始アドレスセット信号Ｒ（Ｔ）を生成した後、アドレスセット信号Ａ（Ｔ）の転送を開始する。
【００５５】
＜判定フラグｂｎ及び開始アドレスｒｍの具体例＞
次に、図４を参照して、判定フラグｂｎ及び開始アドレスｒｍの具体例について説明する。図４は、判定フラグｂｎ及び開始アドレスｒｍの具体例を示す表である。
【００５６】
図４の例では、アドレスセット信号Ａが、個数Ｎ＝１９の目標アドレスａ１〜ａ１９から構成されている。図４の最上段には、目標アドレスａ１〜ａ１９のアドレス値が示されている。具体的には、アドレス値が連続した３つの目標アドレスａ１＝１００、ａ２＝１０１、ａ３＝１０２、アドレス値が連続した２つの目標アドレスａ４＝１２、ａ５＝１３、アドレス値が連続した６つの目標アドレスａ６＝５７、ａ７＝５８、ａ８＝５９、ａ９＝６０、ａ１０＝６１、ａ１１＝６２、アドレス値が連続した２つの目標アドレスａ１２＝２７、ａ１３＝２８、アドレス値が連続した６つの目標アドレスａ１４＝８３、ａ１５＝８４、ａ１６＝８５、ａ１７＝８６、ａ１８＝８７、ａ１９＝８８から構成されている。なお、目標アドレスの個数Ｎ＝１９の値やアドレス値は、あくまでも説明上の便宜的なものである。
【００５７】
このように、図４の例では、アクセス順序が隣接する目標アドレス同士のアドレス値が、ある程度の区間（例えば目標アドレスａ１、ａ２、ａ３など）で連続している。画像データは、外部メモリ２００において、このようにアドレス値がある程度の区間で連続したアドレスに格納される場合が多い。
【００５８】
図４の２段目には、目標アドレスａｎをバースト長Ｌで除した商の整数部であるＩＮＴ（ａｎ／Ｌ）が示されている。ここで、バースト長Ｌ＝４である。
アドレス値が連続した３つの目標アドレスａ１〜ａ３では、ＩＮＴ（ａ１／４）＝ＩＮＴ（ａ２／４）＝ＩＮＴ（ａ３／４）＝２５であり、ＩＮＴ（ａｎ／Ｌ）の値がいずれも等しくなっている。そのため、目標アドレスａ１〜ａ３は、同一のバーストアクセスでアクセス可能である。
【００５９】
アドレス値が連続した２つの目標アドレスａ４〜ａ５については、ＩＮＴ（ａ４／４）＝ＩＮＴ（ａ５／４）＝３であり、ＩＮＴ（ａｎ／Ｌ）の値がいずれも等しくなっている。そのため、目標アドレスａ４〜ａ５は、同一のバーストアクセスでアクセス可能である。
【００６０】
アドレス値が連続した６つの目標アドレスａ６〜ａ１１については、ＩＮＴ（ａ６／４）＝ＩＮＴ（ａ７／４）＝ＩＮＴ（ａ８／４）＝１４、ＩＮＴ（ａ９／４）＝ＩＮＴ（ａ１０／４）＝ＩＮＴ（ａ１１／４）＝１５であり、目標アドレスａ８、ａ９の間でＩＮＴ（ａｎ／Ｌ）の値が変化している。そのため、目標アドレスａ６〜ａ１１は、２回のバーストアクセスでアクセスされる。
【００６１】
アドレス値が連続した２つの目標アドレスａ１２〜ａ１３では、ＩＮＴ（ａ１２／４）＝６、ＩＮＴ（ａ１３／４）＝７であり、丁度目標アドレスａ１２、ａ１３の間でＩＮＴ（ａｎ／Ｌ）の値が変化している。そのため、目標アドレスａ１２、ａ１３は、別々すなわち２回のバーストアクセスでアクセスされる。
【００６２】
アドレス値が連続した６つの目標アドレスａ１４〜ａ１９については、ＩＮＴ（ａ１４／４）＝２０、ＩＮＴ（ａ１５／４）＝ＩＮＴ（ａ１６／４）＝ＩＮＴ（ａ１７／４）＝ＩＮＴ（ａ１８／４）＝２１、ＩＮＴ（ａ１９／４）＝２２であり、目標アドレスａ１４、ａ１５の間及び目標アドレスａ１８、ａ１９の間でＩＮＴ（ａｎ／Ｌ）の値が変化している。そのため、目標アドレスａ１４〜ａ１９は、３回のバーストアクセスでアクセスされる。
【００６３】
図４の３段目には、アクセス順序が目標アドレスａｎの直前の目標アドレスａｎ−１をバースト長Ｌで除した商の整数部であるＩＮＴ（ａｎ−１／Ｌ）が示されている。図４に示すように、目標アドレスａ１については、直前の目標アドレスが存在しないため、ＩＮＴ（ａｎ−１／Ｌ）も存在しない。目標アドレスａ２の場合、図４に矢印で示したように、ＩＮＴ（ａｎ−１／Ｌ）はＩＮＴ（ａ１／４）＝２５となる。その他の目標アドレスａ３〜ａ１９についても目標アドレスａ２の場合と同様であるため、説明を省略する。
【００６４】
図４の４段目には、ＩＮＴ（ａｎ／Ｌ）＝ＩＮＴ（ａｎ−１／Ｌ）が成立するかを判定した判定フラグｂ１〜ｂＮが示されている。上述の通り、ＩＮＴ（ａｎ／Ｌ）＝ＩＮＴ（ａｎ−１／Ｌ）ならばｂｎ＝１、ＩＮＴ（ａｎ／Ｌ）≠ＩＮＴ（ａｎ−１／Ｌ）ならばｂｎ＝０となる。ここで、目標アドレスａ１の判定フラグｂ１は常に０となる。図４の例では、判定フラグｂ１＝ｂ４＝ｂ６＝ｂ９＝ｂ１２＝ｂ１３＝ｂ１４＝ｂ１５＝ｂ１９＝０となり、それ以外の判定フラグｂ２＝ｂ３＝ｂ５＝ｂ７＝ｂ８＝ｂ１０＝ｂ１１＝ｂ１６＝ｂ１７＝ｂ１８＝１となる。
【００６５】
図４の最下段には、開始アドレスｒｍ（ｍは１からＭの自然数）が示されている。４段目に示した判定フラグｂｎの結果は、判定フラグｂｎ＝０となる目標アドレスａｎを開始アドレスとする９回のバーストアクセスにより、全ての目標アドレスａ１〜ａ１９にアクセスできることを意味している。そのため、開始アドレス生成部２１は、判定フラグｂｎ＝０となる目標アドレスａｎをバーストアクセスの開始アドレスｒ１〜ｒＭ（Ｍは自然数）として抽出する。図４の例では、Ｍ＝９となる。
【００６６】
具体的には、図４に示すように、開始アドレスｒ１＝目標アドレスａ１＝１００、開始アドレスｒ２＝目標アドレスａ４＝１２、開始アドレスｒ３＝目標アドレスａ６＝５７、開始アドレスｒ４＝目標アドレスａ９＝６０、開始アドレスｒ５＝目標アドレスａ１２＝２７、開始アドレスｒ６＝目標アドレスａ１３＝２８、開始アドレスｒ７＝目標アドレスａ１４＝８３、開始アドレスｒ８＝目標アドレスａ１５＝８４、開始アドレスｒ９＝目標アドレスａ１９＝８８となる。
【００６７】
図５は、図４に示した目標アドレスａ１〜ａ１９に対してバーストアクセスする様子を模式的に示したタイミングチャートである。紙面の都合上、矢印で示したように左から右、上から下へ時間が経過している。
【００６８】
最初に、最上段に示した目標アドレスａ１＝１００、ａ２＝１０１、ａ３＝１０２がバーストアクセスされる。図４を参照して説明したように、目標アドレスａ１〜ａ３では、アドレス値をバースト長Ｌ（＝４）で除した商の整数部であるＩＮＴ（ａｎ／Ｌ）の値がいずれも等しい。そのため、目標アドレスａ１〜ａ３は、１回のバーストアクセスでアクセスされる。目標アドレスａ１がバーストアクセスの開始アドレスｒ１となる。
【００６９】
次に、２段目に示した目標アドレスａ４＝１２、ａ５＝１３がバーストアクセスされる。図４を参照して説明したように、目標アドレスａ４〜ａ５では、アドレス値をバースト長Ｌ（＝４）で除した商の整数部であるＩＮＴ（ａｎ／Ｌ）の値がいずれも等しい。そのため、目標アドレスａ４〜ａ５は、１回のバーストアクセスでアクセスされる。目標アドレスａ４がバーストアクセスの開始アドレスｒ２となる。
【００７０】
次に、３段目に示した目標アドレスａ６＝５７、ａ７＝５８、ａ８＝５９、ａ９＝６０、ａ１０＝６１、ａ１１＝６２がバーストアクセスされる。図４を参照して説明したように、目標アドレスａ６〜ａ１１では、目標アドレスａ８、ａ９の間でＩＮＴ（ａｎ／Ｌ）の値が変化している。そのため、目標アドレスａ６〜ａ１１は、２回のバーストアクセスでアクセスされる。目標アドレスａ６、ａ９が、それぞれバーストアクセスの開始アドレスｒ３、ｒ４となる。
【００７１】
次に、４段目に示した目標アドレスａ１２＝２７、ａ１３＝２８がバーストアクセスされる。図４を参照して説明したように、目標アドレスａ１２〜ａ１３では、丁度目標アドレスａ１２、ａ１３の間でＩＮＴ（ａｎ／Ｌ）の値が変化している。そのため、目標アドレスａ１２、ａ１３は、別々すなわち２回のバーストアクセスでアクセスされる。目標アドレスａ１２、ａ１３が、それぞれバーストアクセスの開始アドレスｒ５、ｒ６となる。
【００７２】
最後に、最下段に示した目標アドレスａ１４＝８３、ａ１５＝８４、ａ１６＝８５、ａ１７＝８６、ａ１８＝８７、ａ１９＝８８がバーストアクセスされる。図４を参照して説明したように、目標アドレスａ１４〜ａ１９では、目標アドレスａ１４、ａ１５の間及び目標アドレスａ１８、ａ１９の間でＩＮＴ（ａｎ／Ｌ）の値が変化している。そのため、目標アドレスａ１４〜ａ１９は、３回のバーストアクセスでアクセスされる。目標アドレスａ１４、ａ１５、ａ１９が、それぞれバーストアクセスの開始アドレスｒ７、ｒ８、ｒ９となる。
【００７３】
ここで、図４、図５に示した１９個の目標アドレスａ１〜ａ１９にバーストアクセスした場合のバーストアクセス時間ｔｂ（クロックサイクル）を計算する。上述の通り、バーストアクセス時間ｔｂ（クロックサイクル）は、ｔｂ＝Ｎ＋Ｍ×（ｄ＋Ｌ）で計算できる。ここで、図４、図５の具体例では、目標アドレス数Ｎ＝１９（個）、バーストアクセス回数Ｍ＝９（回）、アクセス遅延ｄ＝７（クロックサイクル）、バースト長Ｌ＝４（ワード）である。
従って、ｔｂ＝１９＋９×（７＋４）＝１１８（クロックサイクル）となる。
【００７４】
なお、図５には、バーストアクセス毎にアクセス遅延ｄ＝７（クロックサイクル）が発生することが模式的に示されている。また、図５には、バーストアクセス毎にバースト長Ｌに等しい４つのアドレスにアクセスするために、４（クロックサイクル）を要することが模式的に示されている。
【００７５】
他方、図４に示した１９個の目標アドレスａ１〜ａ１９にランダムアクセスした場合のランダムアクセス時間ｔｒ（クロックサイクル）は、ｔｒ＝Ｎ×ｄで計算できる。
従って、ｔｒ＝１９×７＝１３３（クロックサイクル）となる。
すなわち、バーストアクセス時間ｔｂ＜ランダムアクセス時間ｔｒとなるため、図４に示した１９個の目標アドレスａ１〜ａ１９の場合、バーストアクセスが選択される。
【００７６】
＜判定フラグｂｎ及び開始アドレスｒｍのその他の具体例＞
次に、図６、を参照して、判定フラグｂｎ及び開始アドレスｒｍのその他の具体例について説明する。図６は、判定フラグｂｎ及び開始アドレスｒｍのその他の具体例を示す表である。図４の例では、アクセス順序が隣接する目標アドレス同士のアドレス値がある程度の区間で連続していた。これに対し、図６の例では、アクセス順序が隣接する目標アドレス同士のアドレス値がある程度の区間で１つおきに連続している。また、図４の例ではバースト長Ｌ＝４であったのに対し、図６の例ではバースト長Ｌ＝８である。
【００７７】
上述の通り、第１の実施形態に係る半導体装置１００は、アクセス順序が隣接するアドレス同士のみを用いて判定する。そのため、以下に示す具体例のように、アクセス順序が隣接するアドレス同士のアドレス値は、ある程度の区間で近接していることが好ましいが、連続している必要はない。
【００７８】
図６の例では、アドレスセット信号Ａが、個数Ｎ＝１８の目標アドレスａ１〜ａ１８から構成されている。図６の最上段には、目標アドレスａ１〜ａ１８のアドレス値が示されている。具体的には、アドレス値が１つおきに連続した２つの目標アドレスａ１＝１０４、ａ２＝１０６、アドレス値が１つおきに連続した３つの目標アドレスａ３＝１０、ａ４＝１２、ａ５＝１４、アドレス値が１つおきに連続した６つの目標アドレスａ６＝５２、ａ７＝５４、ａ８＝５６、ａ９＝５８、ａ１０＝６０、ａ１１＝６２、アドレス値が１つおきに連続した７つの目標アドレスａ１２＝８０、ａ１３＝８２、ａ１４＝８４、ａ１５＝８６、ａ１６＝８８、ａ１７＝９０、ａ１８＝９２から構成されている。なお、目標アドレスの個数Ｎ＝１８の値やアドレス値は、あくまでも説明上の便宜的なものである。
【００７９】
図６の２段目には、目標アドレスａｎをバースト長Ｌ＝８で除した商の整数部であるＩＮＴ（ａｎ／Ｌ）が示されている。
アドレス値が１つおきに連続した２つの目標アドレスａ１〜ａ２では、ＩＮＴ（ａ１／８）＝ＩＮＴ（ａ２／８）＝１３であり、ＩＮＴ（ａｎ／Ｌ）の値がいずれも等しくなっている。そのため、目標アドレスａ１〜ａ２は、同一のバーストアクセスでアクセス可能である。
【００８０】
アドレス値が１つおきに連続した３つの目標アドレスａ３〜ａ５については、ＩＮＴ（ａ３／８）＝ＩＮＴ（ａ４／８）＝ＩＮＴ（ａ５／８）＝１であり、ＩＮＴ（ａｎ／Ｌ）の値がいずれも等しくなっている。そのため、目標アドレスａ３〜ａ５は、同一のバーストアクセスでアクセス可能である。
【００８１】
アドレス値が１つおきに連続した６つの目標アドレスａ６〜ａ１１については、ＩＮＴ（ａ６／８）＝ＩＮＴ（ａ７／８）＝６、ＩＮＴ（ａ８／８）＝ＩＮＴ（ａ９／８）＝ＩＮＴ（ａ１０／８）＝ＩＮＴ（ａ１１／８）＝７であり、目標アドレスａ７、ａ８の間でＩＮＴ（ａｎ／Ｌ）の値が変化している。そのため、目標アドレスａ６〜ａ１１は、２回のバーストアクセスでアクセスされる。
【００８２】
アドレス値が１つおきに連続した７つの目標アドレスａ１２〜ａ１８では、ＩＮＴ（ａ１２／８）＝ＩＮＴ（ａ１３／８）＝ＩＮＴ（ａ１４／８）＝ＩＮＴ（ａ１５／８）＝１０、ＩＮＴ（ａ１６／８）＝ＩＮＴ（ａ１７／８）＝ＩＮＴ（ａ１８／８）＝１１であり、目標アドレスａ１５、ａ１６の間でＩＮＴ（ａｎ／Ｌ）の値が変化している。そのため、目標アドレスａ１２〜ａ１８は、２回のバーストアクセスでアクセスされる。
【００８３】
図６の３段目には、アクセス順序が目標アドレスａｎの直前の目標アドレスａｎ−１をバースト長Ｌで除した商の整数部であるＩＮＴ（ａｎ−１／Ｌ）が示されている。図６に示すように、目標アドレスａ１については、直前の目標アドレスが存在しないため、ＩＮＴ（ａｎ−１／Ｌ）も存在しない。目標アドレスａ２の場合、図６に矢印で示したように、ＩＮＴ（ａｎ−１／Ｌ）はＩＮＴ（ａ１／４）＝１３となる。その他の目標アドレスａ３〜ａ１８についても目標アドレスａ２の場合と同様であるため、説明を省略する。
【００８４】
図６の４段目には、ＩＮＴ（ａｎ／Ｌ）＝ＩＮＴ（ａｎ−１／Ｌ）が成立するかを判定した判定フラグｂ１〜ｂＮが示されている。上述の通り、ＩＮＴ（ａｎ／Ｌ）＝ＩＮＴ（ａｎ−１／Ｌ）ならばｂｎ＝１、ＩＮＴ（ａｎ／Ｌ）≠ＩＮＴ（ａｎ−１／Ｌ）ならばｂｎ＝０となる。ここで、目標アドレスａ１の判定フラグｂ１は常に０となる。図６の例では、判定フラグｂ１＝ｂ３＝ｂ６＝ｂ８＝ｂ１２＝ｂ１６＝０となり、それ以外の判定フラグｂ２＝ｂ４＝ｂ５＝ｂ７＝ｂ９＝ｂ１０＝ｂ１１＝ｂ１３＝ｂ１４＝ｂ１５＝ｂ１７＝ｂ１８＝１となる。
【００８５】
図６の最下段には、開始アドレスｒｍ（ｍは１からＭの自然数）が示されている。４段目に示した判定フラグｂｎの結果は、判定フラグｂｎ＝０となる目標アドレスａｎを開始アドレスとする６回のバーストアクセスにより、全ての目標アドレスａ１〜ａ１８にアクセスできることを意味している。そのため、開始アドレス生成部２１は、判定フラグｂｎ＝０となる目標アドレスａｎをバーストアクセスの開始アドレスｒ１〜ｒＭ（Ｍは自然数）として抽出する。図６の例では、Ｍ＝６となる。
【００８６】
具体的には、図６に示すように、開始アドレスｒ１＝目標アドレスａ１＝１０４、開始アドレスｒ２＝目標アドレスａ３＝１０、開始アドレスｒ３＝目標アドレスａ６＝５２、開始アドレスｒ４＝目標アドレスａ８＝５６、開始アドレスｒ５＝目標アドレスａ１２＝８０、開始アドレスｒ６＝目標アドレスａ１６＝８８となる。
【００８７】
図７は、図６に示した目標アドレスａ１〜ａ１８に対してバーストアクセスする様子を模式的に示したタイミングチャートである。紙面の都合上、矢印で示したように左から右、上から下へ時間が経過している。
【００８８】
最初に、最上段に示した目標アドレスａ１＝１０４、ａ２＝１０６がバーストアクセスされる。図６を参照して説明したように、目標アドレスａ１〜ａ２では、アドレス値をバースト長Ｌ（＝８）で除した商の整数部であるＩＮＴ（ａｎ／Ｌ）の値がいずれも等しい。そのため、目標アドレスａ１〜ａ２は、１回のバーストアクセスでアクセスされる。目標アドレスａ１がバーストアクセスの開始アドレスｒ１となる。
【００８９】
次に、２段目に示した目標アドレスａ３＝１０、ａ４＝１２、ａ５＝１４がバーストアクセスされる。図６を参照して説明したように、目標アドレスａ３〜ａ５では、アドレス値をバースト長Ｌ（＝８）で除した商の整数部であるＩＮＴ（ａｎ／Ｌ）の値がいずれも等しい。そのため、目標アドレスａ３〜ａ５は、１回のバーストアクセスでアクセスされる。目標アドレスａ３がバーストアクセスの開始アドレスｒ２となる。
【００９０】
次に、３段目に示した目標アドレスａ６＝５２、ａ７＝５４、ａ８＝５６、ａ９＝５８、ａ１０＝６０、ａ１１＝６２がバーストアクセスされる。図６を参照して説明したように、目標アドレスａ６〜ａ１１では、目標アドレスａ７、ａ８の間でＩＮＴ（ａｎ／Ｌ）の値が変化している。そのため、目標アドレスａ６〜ａ１１は、２回のバーストアクセスでアクセスされる。目標アドレスａ６、ａ８が、それぞれバーストアクセスの開始アドレスｒ３、ｒ４となる。
【００９１】
最後に、最下段に示した目標アドレスａ１２＝８０、ａ１３＝８２、ａ１４＝８４、ａ１５＝８６、ａ１６＝８８、ａ１７＝９０、ａ１８＝９２がバーストアクセスされる。図６を参照して説明したように、目標アドレスａ１２〜ａ１８では、目標アドレスａ１５、ａ１６の間でＩＮＴ（ａｎ／Ｌ）の値が変化している。そのため、目標アドレスａ１２〜ａ１８は、２回のバーストアクセスでアクセスされる。目標アドレスａ１２、ａ１６が、それぞれバーストアクセスの開始アドレスｒ５、ｒ６となる。
【００９２】
ここで、図６、図７に示した１８個の目標アドレスａ１〜ａ１８にバーストアクセスした場合のバーストアクセス時間ｔｂ（クロックサイクル）を計算する。上述の通り、バーストアクセス時間ｔｂ（クロックサイクル）は、ｔｂ＝Ｎ＋Ｍ×（ｄ＋Ｌ）で計算できる。ここで、図６、図７の具体例では、目標アドレス数Ｎ＝１８（個）、バーストアクセス回数Ｍ＝６（回）、アクセス遅延ｄ＝７（クロックサイクル）、バースト長Ｌ＝８（ワード）である。
従って、ｔｂ＝１８＋６×（７＋８）＝１０８（クロックサイクル）となる。
【００９３】
なお、図７には、バーストアクセス毎にアクセス遅延ｄ＝７（クロックサイクル）が発生することが模式的に示されている。また、図７には、バーストアクセス毎にバースト長Ｌに等しい８つのアドレスにアクセスするために、８（クロックサイクル）を要することが模式的に示されている。
【００９４】
他方、図６に示した１８個の目標アドレスａ１〜ａ１８にランダムアクセスした場合のランダムアクセス時間ｔｒ（クロックサイクル）は、ｔｒ＝Ｎ×ｄで計算できる。
従って、ｔｒ＝１８×７＝１２６（クロックサイクル）となる。
すなわち、バーストアクセス時間ｔｂ＜ランダムアクセス時間ｔｒとなるため、図６に示した１８個の目標アドレスａ１〜ａ１８の場合、バーストアクセスが選択される。
【００９５】
＜メモリアクセス制御方法の説明＞
次に、図８、図９を参照して、第１の実施形態に係るメモリアクセス制御方法について説明する。図８、図９は、第１の実施形態に係るメモリアクセス制御方法を説明するためのフローチャートである。図８、図９は、紙面の都合上、１つのフローチャートを２つに分割して示したものである。具体的には、図８は、後述するステップＳＴ１４の判定結果がＹＥＳの場合を示したものである。図９は、後述するステップＳＴ１４の判定結果がＮＯの場合を示したものである。図８、図９は、いずれもＴ回目の転送サイクルにおけるメモリアクセス制御方法を示している。
【００９６】
図８に示すように、Ｔ回目の転送サイクルが開始されると、まず、演算回路１０において、演算コアＰＥ１〜ＰＥＮは、それぞれの目標アドレスａ１〜ａＮ（アドレスセット信号Ａ（Ｔ））を生成する（ステップＳＴ１１）。
続けて、演算コアＰＥ１〜ＰＥＮは、自身の目標アドレスとアクセス順序が直前の目標アドレスとが同一のバーストアクセスでアクセス可能か否かを示す判定フラグｂ１〜ｂＮ（判定フラグセット信号Ｂ（Ｔ））を生成する（ステップＳＴ１２）。
【００９７】
次に、メモリアクセス制御部２０において、制御信号保持部２３に保持された（Ｔ−１）回目の転送サイクルにおけるアクセス制御信号ｃｔｒ（Ｔ−１）を参照する（ステップＳＴ１３）。
アクセス制御信号ｃｔｒ（Ｔ−１）＝１すなわちバーストアクセスの場合（ステップＳＴ１４ＹＥＳ）、開始アドレス生成部２１においてバーストアクセス時の開始アドレスセット信号Ｒ（Ｔ）を生成する（ステップＳＴ１５）。
【００９８】
その後、メモリアクセス制御部２０は、生成した開始アドレスセット信号Ｒ（Ｔ）を用いて、アドレスセット信号Ａ（Ｔ）にバーストアクセスする（ステップＳＴ１９ａ）。ステップＳＴ１９ａが終了後、（Ｔ＋１）回目の転送サイクルに移行する。
【００９９】
図８に示すように、ステップＳＴ１９ａと並列して、アクセス方法決定部２２において、以下の処理を実行する。バーストアクセス時間ｔｂ（Ｔ）を算出し（ステップＳＴ１６）、算出したバーストアクセス時間ｔｂ（Ｔ）をランダムアクセス時間ｔｒと比較する（ステップＳＴ１７）。ｔｂ（Ｔ）≦ｔｒの場合（ステップＳＴ１７ＹＥＳ）、バーストアクセスを示すアクセス制御信号ｃｔｒ（Ｔ）＝１を制御信号保持部２３に格納する（ステップＳＴ１８ａ）。ｔｂ（Ｔ）＞ｔｒの場合（ステップＳＴ１７ＮＯ）、ランダムアクセスを示すアクセス制御信号ｃｔｒ（Ｔ）＝０を制御信号保持部２３に格納する（ステップＳＴ１８ｂ）。
【０１００】
次に、図９を参照して、ステップＳＴ１４の判定結果がＮＯの場合について説明する。同一記号のステップは図８と同じ処理であるため、説明を省略する。
図９に示すように、アクセス制御信号ｃｔｒ（Ｔ−１）＝０すなわちランダムアクセスの場合（ステップＳＴ１４ＮＯ）、開始アドレスセット信号Ｒの生成（ステップＳＴ１５）を待たずに、すぐにアドレスセット信号Ａ（Ｔ）にランダムアクセスする（ステップＳＴ１９ｂ）。ステップＳＴ１９ｂが終了後、（Ｔ＋１）回目の転送サイクルに移行する。
図９に示すように、ステップＳＴ１９ａと並列して、上述のステップＳＴ１５〜ＳＴ１７、及びステップＳＴ１８ａ、ＳＴ１８ｂを実行する。
【０１０１】
このように、図８に示したバーストアクセスの場合（ステップＳＴ１４ＹＥＳ）、開始アドレスセット信号Ｒ（Ｔ）を生成した後（ステップＳＴ１５）、生成した開始アドレスセット信号Ｒを用いて、アドレスセット信号Ａ（Ｔ）にバーストアクセスする（ステップＳＴ１９ａ）。
【０１０２】
一方、図９に示したランダムアクセスの場合（ステップＳＴ１４ＮＯ）、開始アドレスセット信号Ｒ（Ｔ）の生成（ステップＳＴ１５）を待たずに、すぐにアドレスセット信号Ａ（Ｔ）にランダムアクセスする（ステップＳＴ１９ｂ）。この場合、アドレスセット信号Ａ（Ｔ）へのランダムアクセス（ステップＳＴ１９ｂ）と並列して、開始アドレスセット信号Ｒを生成する（ステップＳＴ１５）。
【０１０３】
（第２の実施形態）
＜半導体装置１００の構成＞
次に、図１０を参照して、第２の実施形態に係る半導体装置１００の詳細について説明する。図１０は、第２の実施形態に係る半導体装置１００の構成を示すブロック図である。第２の実施形態に係る半導体装置１００は、図２に示した第１の実施形態に係る半導体装置１００に比べ、さらに目標アドレス保持部２７及び開始アドレス保持部２８を備えている。その他の構成は、第１の実施形態に係る半導体装置１００と同様である。
【０１０４】
目標アドレス保持部２７は、演算回路１０から出力されたアドレスセット信号Ａ（目標アドレスａ１〜ａＮ）を保持し、セレクタ２５に出力する。ここで、図１０に示すように、目標アドレス保持部２７は、Ｔ回目の転送サイクルにおいて、（Ｔ＋１）回目の転送サイクルにおけるアドレスセット信号Ａ（Ｔ＋１）を取り込み、Ｔ回目の転送サイクルにおけるアドレスセット信号Ａ（Ｔ）をセレクタ２５に出力する。
【０１０５】
開始アドレス保持部２８は、開始アドレス生成部２１によって生成された開始アドレスセット信号Ｒ（開始アドレスｒ１〜ｒＭ）を保持し、セレクタ２５に出力する。ここで、図１０に示すように、開始アドレス保持部２８は、Ｔ回目の転送サイクルにおいて、（Ｔ＋１）回目の転送サイクルにおける開始アドレスセット信号Ｒ（Ｔ＋１）を取り込み、Ｔ回目の転送サイクルにおける開始アドレスセット信号Ｒ（Ｔ）をセレクタ２５に出力する。
【０１０６】
＜メモリアクセス制御部２０の動作の説明＞
次に、図１１を参照して、メモリアクセス制御部２０の動作について説明する。図１１は、第２の実施形態に係るメモリアクセス制御部２０の動作を説明するためのタイミングチャートである。図１１には、（Ｔ−１）回目とＴ回目の転送サイクルが示されている。なお、図１１では判定フラグセット信号Ｂは省略されている。
【０１０７】
まず、（Ｔ−１）回目の転送サイクルについて説明する。
（Ｔ−１）回目の転送サイクルが開始されると、まず、最上段に示したように、メモリアクセス制御部２０は、次のＴ回目の転送サイクルにおけるアドレスセット信号Ａ（Ｔ）及び判定フラグセット信号Ｂ（Ｔ）を取り込む。ここで、アドレスセット信号Ａ（Ｔ）は目標アドレス保持部２７に保持される。
次に、２段目に示したように、開始アドレス生成部２１において、次のＴ回目の転送サイクルにおける開始アドレスセット信号Ｒ（Ｔ）を生成する。上述の通り、開始アドレスセット信号Ｒ（Ｔ）の生成には、Ｎ（クロックサイクル）を要する。ここで、開始アドレスセット信号Ｒ（Ｔ）は開始アドレス保持部２８に保持される。
【０１０８】
次に、３段目に示したように、アクセス方法決定部２２において、次のＴ回目の転送サイクルにおけるバーストアクセス時間ｔｂ（Ｔ）を算出する。
続けて、４段目に示したように、アクセス方法決定部２２において、算出したバーストアクセス時間ｔｂ（Ｔ）をランダムアクセス時間ｔｒと比較し、アクセス制御信号ｃｔｒ（Ｔ）を生成する。図１１の例では、ｃｔｒ（Ｔ）＝１すなわちバーストアクセスが選択されたものとする。これにより、Ｔ回目の転送サイクルで、アドレスセット信号Ａ（Ｔ）がバーストアクセスによって転送される。ここで、アクセス制御信号ｃｔｒ（Ｔ）は制御信号保持部２３に保持される。
【０１０９】
他方、最下段に示したように、（Ｔ−１）回目の転送サイクルでは、目標アドレス保持部２７に保持されていたアドレスセット信号Ａ（Ｔ−１）がランダムアクセスによって転送されている。これは、制御信号保持部２３に保持されていたアクセス制御信号ｃｔｒ（Ｔ−１）の値が０であったためである（不図示）。（Ｔ−１）回目の転送サイクルに示すように、ランダムアクセスの場合、アドレスセット信号Ａ（Ｔ−１）を取り込んだら、開始アドレスセット信号Ｒ（Ｔ−１）の生成を待たずに、すぐに転送を開始する。
【０１１０】
次に、Ｔ回目の転送サイクルについて説明する。
Ｔ回目の転送サイクルが開始されると、まず、最上段に示したように、メモリアクセス制御部２０は、次の（Ｔ＋１）回目の転送サイクルにおけるアドレスセット信号Ａ（Ｔ＋１）及び判定フラグセット信号Ｂ（Ｔ＋１）を取り込む。ここで、アドレスセット信号Ａ（Ｔ＋１）は目標アドレス保持部２７に保持される。
次に、２段目に示したように、開始アドレス生成部２１において、次のＴ回目の転送サイクルにおける開始アドレスセット信号Ｒ（Ｔ＋１）を生成する。開始アドレスセット信号Ｒ（Ｔ＋１）の生成にも、Ｎ（クロックサイクル）を要する。ここで、開始アドレスセット信号Ｒ（Ｔ＋１）は開始アドレス保持部２８に保持される。
【０１１１】
次に、３段目に示したように、アクセス方法決定部２２において、次の（Ｔ＋１）回目の転送サイクルにおけるバーストアクセス時間ｔｂ（Ｔ＋１）を算出する。
続けて、４段目に示したように、アクセス方法決定部２２において、算出したバーストアクセス時間ｔｂ（Ｔ＋１）をランダムアクセス時間ｔｒと比較し、アクセス制御信号ｃｔｒ（Ｔ＋１）を生成する。図３の例では、ｃｔｒ（Ｔ＋１）＝０すなわちランダムアクセスが選択されたものとする。これにより、（Ｔ＋１）回目の転送サイクルで、アドレスセット信号Ａ（Ｔ＋１）がランダムアクセスによって転送される（不図示）。ここで、アクセス制御信号ｃｔｒ（Ｔ＋１）は制御信号保持部２３に保持される。
【０１１２】
他方、最下段に示したように、Ｔ回目の転送サイクルでは、（Ｔ−１）回目の転送サイクルにおいて開始アドレス保持部２８に保持された開始アドレスセット信号Ｒ（Ｔ）がバーストアクセスによって転送されている。これは、上述の通り、（Ｔ−１）回目の転送サイクルにおいて制御信号保持部２３に保持されたアクセス制御信号ｃｔｒ（Ｔ）の値が１であったためである。
【０１１３】
図３に示したように、第１の実施形態では、バーストアクセスの場合、開始アドレスセット信号Ｒ（Ｔ）を生成してから、アドレスセット信号Ａ（Ｔ）の転送を開始する必要があった。これに対し、本実施形態では、事前に開始アドレスセット信号Ｒ（Ｔ）を生成するため、図１１に示すように、バーストアクセスの場合でも、Ｔ回目の転送サイクルが開始されたら、すぐに転送を開始することができる。そのため、開始アドレスセット信号Ｒの生成に要するＮ（クロックサイクル）が不要となる。
【０１１４】
従って、第２の実施形態におけるバーストアクセス時間ｔｂ（クロックサイクル）は、バーストアクセス回数Ｍ（回）、アクセス遅延ｄ（クロックサイクル）、バースト長Ｌ（ワード）を用いて、次式で表すことができる。
ｔｂ＝Ｍ×（ｄ＋Ｌ）
【０１１５】
また、第１の実施形態では、Ｔ回目の転送サイクルにおけるアドレスセット信号Ａ（Ｔ）を転送するために、（Ｔ−１）回目の転送サイクルにおけるアドレスセット信号Ａ（Ｔ−１）から生成したアクセス制御信号ｃｔｒ（Ｔ−１）を用いていた。これに対し、本実施形態では、Ｔ回目の転送サイクルにおけるアドレスセット信号Ａ（Ｔ）を転送するために、このアドレスセット信号Ａ（Ｔ）から生成したアクセス制御信号ｃｔｒ（Ｔ）を用いている。従って、バーストアクセスとランダムアクセスとを、より適切に切り換えてアクセス効率を向上させることができる。
【０１１６】
＜メモリアクセス制御方法の説明＞
次に、図１２を参照して、第２の実施形態に係るメモリアクセス制御方法について説明する。図１２は、第２の実施形態に係るメモリアクセス制御方法を説明するためのフローチャートである。図１２は、いずれもＴ回目の転送サイクルにおけるメモリアクセス制御方法を示している。
【０１１７】
図１２に示すように、Ｔ回目の転送サイクルが開始されると、左側に示したフローと右側に示したフローとが並列に処理される。まず、左側のフローから説明する。
Ｔ回目の転送サイクルが開始されると、メモリアクセス制御部２０において、制御信号保持部２３に保持されたＴ回目の転送サイクルにおけるアクセス制御信号ｃｔｒ（Ｔ）を参照する（ステップＳＴ２３）。
アクセス制御信号ｃｔｒ（Ｔ）＝１すなわちバーストアクセスの場合（ステップＳＴ２４ＹＥＳ）、開始アドレス保持部２８に保持されていた開始アドレスセット信号Ｒ（Ｔ）を用いて、アドレスセット信号Ａ（Ｔ）にバーストアクセスする（ステップＳＴ２９ａ）。アクセス制御信号ｃｔｒ（Ｔ）＝０すなわちランダムアクセスの場合（ステップＳＴ２４ＮＯ）、目標アドレス保持部２７に保持されていたアドレスセット信号Ａ（Ｔ）にランダムアクセスする（ステップＳＴ２９ｂ）。ステップＳＴ２９ａ又はステップＳＴ２９ｂが終了後、（Ｔ＋１）回目の転送サイクルに移行する。
【０１１８】
次に、右側のフローについて説明する。
Ｔ回目の転送サイクルが開始されると、演算回路１０において、演算コアＰＥ１〜ＰＥＮは、次の（Ｔ＋１）回目の転送サイクルにおけるそれぞれの目標アドレスａ１〜ａＮ（アドレスセット信号Ａ（Ｔ＋１））を生成する（ステップＳＴ２１）。
続けて、演算コアＰＥ１〜ＰＥＮは、自身の目標アドレスとアクセス順序が直前の目標アドレスとが同一のバーストアクセスでアクセス可能か否かを示す判定フラグｂ１〜ｂＮ（判定フラグセット信号Ｂ（Ｔ＋１））を生成する（ステップＳＴ２２）。
【０１１９】
次に、開始アドレス生成部２１において、次の（Ｔ＋１）回目の転送サイクルにおける開始アドレスセット信号Ｒ（Ｔ＋１）を生成する（ステップＳＴ２５）。
次に、アクセス方法決定部２２において、次の（Ｔ＋１）回目の転送サイクルにおけるバーストアクセス時間ｔｂ（Ｔ＋１）を算出し（ステップＳＴ２６）、算出したバーストアクセス時間ｔｂ（Ｔ＋１）をランダムアクセス時間ｔｒと比較する（ステップＳＴ２７）。ｔｂ（Ｔ＋１）≦ｔｒの場合（ステップＳＴ２７ＹＥＳ）、バーストアクセスを示すアクセス制御信号ｃｔｒ（Ｔ＋１）＝１を制御信号保持部２３に格納する（ステップＳＴ２８ａ）。ｔｂ（Ｔ＋１）＞ｔｒの場合（ステップＳＴ２７ＮＯ）、ランダムアクセスを示すアクセス制御信号ｃｔｒ（Ｔ＋１）＝０を制御信号保持部２３に格納する（ステップＳＴ２８ｂ）。
【０１２０】
（その他の実施形態）
図１３〜１５を参照して、その他の実施形態について説明する。
図１３は図１の変形例である。図１では演算回路１０とメモリアクセス制御部２０とが単一の半導体チップに形成されていたが、図１３に示すように、演算回路１０とメモリアクセス制御部２０とが別々の半導体チップＣＨＰ１、ＣＨＰ２に形成されていてもよい。
【０１２１】
図１４は図１３の変形例である。図１３ではメモリアクセス制御部２０と外部メモリ２００とが別々の半導体チップに形成されているが、図１４に示すように、メモリアクセス制御部２０と外部メモリ２００とが単一の半導体チップＣＨＰ２に形成されていてもよい。ここで、演算回路１０は図１３と同様に、半導体チップＣＨＰ２とは別の半導体チップＣＨＰ１に形成されている。
【０１２２】
図１５は図１の変形例である。図１では演算回路１０及びメモリアクセス制御部２０と外部メモリ２００とが別々の半導体チップに形成されていたが、図１５に示すように、演算回路１０、メモリアクセス制御部２０、及び外部メモリ２００の全てが単一の半導体チップＣＨＰ１に形成されていてもよい。
【０１２３】
以上、本発明者によってなされた発明を実施形態に基づき具体的に説明したが、本発明は既に述べた実施形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
例えば、実施形態では、読み出し動作について説明したが、当然のことながら本発明は書き込み動作に適用することも可能である。
【符号の説明】
【０１２４】
１０  演算回路
１１  内部メモリ
１１ａ  アドレスレジスタ
１１ｂ  判定フラグレジスタ
１１ｃ  データ記憶部
２０  メモリアクセス制御部
２１  開始アドレス生成部
２２  アクセス方法決定部
２３  制御信号保持部
２４  パラメータレジスタ
２５  セレクタ
２６  入出力部
２７  目標アドレス保持部
２８  開始アドレス保持部
１００  半導体装置
２００  外部メモリ
ＣＨＰ１〜ＣＨＰ２  半導体チップ
ＭＢ  メモリバス
ＰＥ１〜ＰＥＮ  演算コア
【図１】
0006314083.tif 000002
【図２】
0006314083.tif 000003
【図３】
0006314083.tif 000004
【図４】
0006314083.tif 000005
【図５】
0006314083.tif 000006
【図６】
0006314083.tif 000007
【図７】
0006314083.tif 000008
【図８】
0006314083.tif 000009
【図９】
0006314083.tif 000010
【図１０】
0006314083.tif 000011
【図１１】
0006314083.tif 000012
【図１２】
0006314083.tif 000013
【図１３】
0006314083.tif 000014
【図１４】
0006314083.tif 000015
【図１５】
0006314083.tif 000016