(57)【要約】【課題】  プログラムコードの肥大化をなくし、データ処理を高速化することができる半導体集積回路装置を提供する。【解決手段】  外部メモリ５０からデータを読み出し、データを内蔵メモリ２０に転送する転送制御部３２と、外部メモリ５０から内蔵メモリ２０へのデータ転送の設定情報を記憶する設定レジスタ３４と、転送制御部３２での転送状態と設定レジスタ３４に記憶される設定情報を元にストール信号を出力するストール判定部３６を有するＤＭＡＣ３０と、ストール判定部３６から出力されたストール信号を入力し、ストール信号に応じてストールする機能と、内蔵メモリ２０に転送されたデータのデータ処理を行う機能を有するプロセッサコア１０を備えることを特徴としている。【選択図】  図１
2007193534.tif 000002
【特許請求の範囲】
【請求項１】
第１の記憶媒体からデータを読み出し、前記データを第２の記憶媒体に転送する転送制御部と、前記第１の記憶媒体から前記第２の記憶媒体へのデータ転送の設定情報を記憶する設定レジスタと、を有するＤＭＡＣと、
前記転送制御部での転送状態と前記設定レジスタに記憶される設定情報を元にストール信号を出力するストール判定部と、
前記ストール判定部から出力された前記ストール信号を入力し、前記ストール信号に応じてストールする機能と、前記第２の記憶媒体に転送された前記データのデータ処理を行う機能とを有するプロセッサコアと、
を備えることを特徴とする半導体集積回路装置。
【請求項２】
前記プロセッサコアは、前記ストール判定部へアドレス情報を出力する機能を備え、前記ストール判定部は、前記アドレス情報に応じた前記データが前記第２の記憶媒体に転送されていないときに、前記ストール信号を前記プロセッサコアへ出力することを特徴とする請求項１記載の半導体集積回路装置。
【請求項３】
第１の記憶媒体からデータを読み出し、前記データを第２の記憶媒体に転送する転送制御部と、前記第１の記憶媒体から前記第２の記憶媒体へのデータ転送の設定情報を記憶する設定レジスタと、を有するＤＭＡＣと、
前記転送制御部での転送状態と前記設定レジスタに記憶される設定情報を元にストール信号を出力するストール判定部と、
前記ストール信号により活性化するレジスタと、前記レジスタが活性化しているか否か判断する機能と、前記第２の記憶媒体に転送された前記データのデータ処理を行う機能とを有するプロセッサコアと、
を備えることを特徴とする半導体集積回路装置。
【請求項４】
前記プロセッサコアは、前記ストール判定部へアドレス情報を出力する機能を備え、前記ストール判定部は、前記アドレス情報に応じた前記データが前記第２の記憶媒体に転送されていないときに、前記ストール信号を前記ストールレジスタへ出力することを特徴とする請求項３記載の半導体集積回路装置。
【請求項５】
前記レジスタが活性化している場合、前記レジスタ内の状態を初期化することを特徴とする請求項３又は請求項４記載の半導体集積回路装置。
【請求項６】
前記ストール判定部が、前記ＤＭＡＣにアクセスし、前記転送情報を確認することを特徴とする請求項1乃至請求項５のいずれか1項に記載の半導体集積回路装置。
【請求項７】
第１の記憶媒体から第２の記憶媒体へのデータ転送の設定情報を設定する工程と、
前記設定情報に応じて、前記第１の記憶媒体からデータを読み出し、前記データを前記第２の記憶媒体に転送する工程と、
前記データが前記第２の記憶媒体に転送されたかどうか判定する工程と、
前記第２の記憶媒体に前記データが転送されていない場合に、プロセッサコアにストール信号を出力し、前記プロセッサコアをストールさせる工程と、
前記第２の記憶媒体に前記データが転送されている場合に、前記プロセッサコアが前記第２の記憶媒体にアクセスし、前記データのデータ処理を行う工程と、
を備えることを特徴とする半導体集積回路装置の制御方法。
【請求項８】
第１の記憶媒体から第２の記憶媒体へのデータ転送の設定情報を設定する工程と、
前記設定情報に応じて、前記第１の記憶媒体からデータを読み出し、前記データを前記第２の記憶媒体に転送する工程と、
前記データが前記第２の記憶媒体に転送されたかどうか判定する工程と、
前記第２の記憶媒体に前記データが転送されていない場合に、再度、前記データが前記第２の記憶媒体に転送されたかどうか判定する工程と、
前記第２の記憶媒体に前記データが転送されている場合に、前記プロセッサコアが前記第２の記憶媒体にアクセスし、前記データのデータ処理を行う工程と、
を備えることを特徴とする半導体集積回路装置の制御方法。
【請求項９】
前記データのデータ処理が終了した後、前記データを前記第２の記憶媒体から前記第１の記憶媒体に転送する工程を備えることを特徴とする請求項６又は請求項７記載の半導体集積回路装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路装置及びその制御方法に関する。
【背景技術】
【０００２】
一般に、組み込み機器などで用いられるプロセッサは、プロセッサコアの他に内蔵メモリとＤＭＡＣ（Direct Memory Access Controller）が搭載されている。ＤＭＡＣは、メモリ領域−メモリ領域間やメモリ領域−Ｉ／Ｏ間でのデータの転送を行う機能を有する。このＤＭＡＣは、内蔵メモリを搭載するプロセッサにおいて、外部バスに接続されたメモリとプロセッサ内の内蔵メモリ間のデータ転送に用いられる。そして、ＤＭＡＣで低速な外部メモリ上のデータを高速な内蔵メモリに転送すれば、低速な外部メモリへのアクセスに起因した待ち（プロセッサコアのストール）が発生しにくくなり、プロセッサの利用効率が向上する。
【０００３】
また、プロセッサコアで大量のデータ処理を行う際に、内蔵メモリへのデータ転送、プロセッサコアでのデータ処理を区分的に行うことにより、分割したデータを内蔵メモリに順次転送しながら、同時にプロセッサコアでデータ処理を行えるため、大幅な処理の高速化が可能となる。
【０００４】
しかしながら、データ処理を区分的に行うためには、ＤＭＡＣに予め必要となるデータ転送情報の指示を行わなければならず、処理効率のよいプログラムを実行するためには、プログラムコードが肥大化する傾向にあった。また、プログラムコードの肥大化は、データ処理の処理速度の低下を引き起こすという問題点もあった。
【０００５】
なお、この種の関連技術として、プロセッサコアとＤＭＡＣのメモリへのアクセスに関する一例が開示されている（例えば、特許文献１参照。）。
【特許文献１】特開２００２−３０４３２４号公報（第７頁、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、プログラムコードの肥大化をなくし、データ処理を高速化することができる半導体集積回路装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一態様の半導体集積回路装置は、第１の記憶媒体からデータを読み出し、前記データを第２の記憶媒体に転送する転送制御部と、前記第１の記憶媒体から前記第２の記憶媒体へのデータ転送の設定情報を記憶する設定レジスタと、を有するＤＭＡＣと、前記転送制御部での転送状態と前記設定レジスタに記憶される設定情報を元にストール信号を出力するストール判定部と、前記ストール判定部から出力された前記ストール信号を入力し、前記ストール信号に応じてストールする機能と、前記第２の記憶媒体に転送された前記データのデータ処理を行う機能とを有するプロセッサコアと、を備えることを特徴としている。
【０００８】
また、本発明の別態様の半導体集積回路装置は、第１の記憶媒体からデータを読み出し、前記データを第２の記憶媒体に転送する転送制御部と、前記第１の記憶媒体から前記第２の記憶媒体へのデータ転送の設定情報を記憶する設定レジスタと、を有するＤＭＡＣと、前記転送制御部での転送状態と前記設定レジスタに記憶される設定情報を元にストール信号を出力するストール判定部と、前記ストール信号により活性化するレジスタと、前記レジスタが活性化しているか否か判断する機能と、前記第２の記憶媒体に転送された前記データのデータ処理を行う機能とを有するプロセッサコアと、を備えることを特徴としている。
【０００９】
また、本発明の別態様の半導体集積回路装置の制御方法は、第１の記憶媒体から第２の記憶媒体へのデータ転送の設定情報を設定する工程と、前記設定情報に応じて、前記第１の記憶媒体からデータを読み出し、前記データを前記第２の記憶媒体に転送する工程と、前記データが前記第２の記憶媒体に転送されたかどうか判定する工程と、前記第２の記憶媒体に前記データが転送されていない場合に、プロセッサコアにストール信号を出力し、前記プロセッサコアをストールさせる工程と、前記第２の記憶媒体に前記データが転送されている場合に、前記プロセッサコアが前記第２の記憶媒体にアクセスし、前記データのデータ処理を行う工程と、を備えることを特徴としている。
【００１０】
また、本発明の別態様の半導体集積回路装置の制御方法は、第１の記憶媒体から第２の記憶媒体へのデータ転送の設定情報を設定する工程と、前記設定情報に応じて、前記第１の記憶媒体からデータを読み出し、前記データを前記第２の記憶媒体に転送する工程と、前記データが前記第２の記憶媒体に転送されたかどうか判定する工程と、前記第２の記憶媒体に前記データが転送されていない場合に、再度、前記データが前記第２の記憶媒体に転送されたかどうか判定する工程と、前記第２の記憶媒体に前記データが転送されている場合に、前記プロセッサコアが前記第２の記憶媒体にアクセスし、前記データのデータ処理を行う工程と、を備えることを特徴としている。
【発明の効果】
【００１１】
本発明によれば、プログラムコードの肥大化をなくし、データ処理を高速化することができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施例について、図面を参照して説明する。
【実施例１】
【００１３】
図１は、本発明の実施例１に係る半導体集積回路装置の構造を示す回路図である。
【００１４】
図１に示すように、本実施例の半導体集積回路装置は、プロセッサコア１０と内蔵メモリ２０、ＤＭＡＣ（Direct Memory Access Controller）３０とから構成され、ＤＭＡＣ３０は外部バス４０である外部アドレスバス４２や外部データバス４４を介して外部メモリ５０やＩ／Ｏデバイス６０に接続される。また、プロセッサコア１０とＤＭＡＣ３０は、内部アドレスバス７２や内部データバス７４などの内部バス７０を介してお互い接続され、プロセッサコア１０と内蔵メモリ２０も内部アドレスバス７２及び内部データバス７４を介して接続される。
【００１５】
プロセッサコア１０は、一般的に、プロセッサが有する内蔵メモリ２０にアクセスを行う機能やアクセスした内蔵メモリ２０のデータ処理を行う機能などだけでなく、内蔵メモリ２０にアクセスを行うロード命令が実行された際のメモリアクセス処理が行われる前にＤＭＡＣ３０にアドレス情報を出力する機能と、ＤＭＡＣ３０から出力されたストール信号を入力し、そのストール信号に応じてメモリアクセスを停止（ストール）する機能を有している。
【００１６】
また、ＤＭＡＣ３０は、内蔵メモリ２０−外部メモリ５０間や内蔵メモリ２０−Ｉ／Ｏデバイス６０間でデータ転送を行う機能を有する。
【００１７】
このＤＭＡＣ３０は、外部バス４０上の外部メモリ５０やＩ／Ｏデバイス６０と内蔵メモリ２０間のデータ転送を行う転送制御部３２と、プロセッサコア１０が設定した転送元アドレスや転送サイズ等の転送設定情報を保持する設定レジスタ３４と、プロセッサコア１０にストール信号を出力する機能を有するストール判定部３６を備えている。
【００１８】
転送制御部３２は、外部メモリ５０−内蔵メモリ２０間のデータ転送の転送情報を設定レジスタ３４に設定されている転送設定情報から得ることにより、内蔵メモリ２０−外部メモリ５０間のデータ転送を行う。また、この転送制御部３２は、ストール判定部３６に外部メモリ５０−内蔵メモリ２０間のデータ転送情報（転送済みサイズ）を出力する機能を有している。
【００１９】
また、設定レジスタ３４は、転送制御部３２で行われている外部メモリ５０−内蔵メモリ２０間の現在の転送状態を保持する機能も有している。
【００２０】
また、ストール判定部３６は、プロセッサコア１０からデータ処理を行うアドレス情報が入力されると、転送制御部３２から出力される転送状態（転送済みサイズ）と、設定レジスタ３４に保持されている転送設定情報（内蔵メモリ転送開始アドレス、転送サイズ）とからプロセッサコア１０をストールさせるかどうかを判定する機能を備えている。そして、このストール判定部３６は、データ処理を行うアドレス情報、転送状態（転送済みサイズ）、転送設定情報（内蔵メモリ転送開始アドレス、転送サイズ）から以下の条件でプロセッサコア１０をストールさせる否かの判定を行う。
【００２１】
アドレス情報  ＞  内蔵メモリ転送開始アドレス  ＋  転送済みサイズ
アドレス情報  ＜  内蔵メモリ転送開始アドレス  ＋  転送サイズ
ここで、プロセッサコア１０から出力されるアドレス情報は、プロセッサコア１０が内蔵メモリ２０にアクセスし、データ処理を行うアドレス情報を指す。
【００２２】
つまり、アドレス情報が上記ストール判定条件を満さないときは、プロセッサコア１０がデータ処理を行うアドレス情報のデータは、外部メモリ５０から内臓メモリへ転送が完了しており、プロセッサコア１０は、内蔵メモリ２０にアクセスし、データ処理を行うことが可能になる。
【００２３】
逆に、アドレス情報が上記ストール判定条件を満たすときは、プロセッサコア１０がデータ処理を行うアドレス情報のデータは、外部メモリ５０から内臓メモリへ転送が完了しておらず、プロセッサコア１０は、内蔵メモリ２０にアクセスしても、データ処理を行うことができない。その場合、ストール判定部３６は、プロセッサコア１０にストール信号を出力し、プロセッサコア１０をストールさせる。
【００２４】
ここで、図１に示すように、ストール信号は、内部バスを介してプロセッサコアにストール信号を送っているが、ストール信号をプロセッサコアに直接送る専用線をストール判定部−プロセッサコア間に設けて、直接、ストール判定部からプロセッサコアにストール信号を出力してもかまわない。
【００２５】
以上のように構成される本実施例の半導体集積回路装置は、以下のように動作する。図２にその半導体集積回路装置のデータ処理動作を表すフローチャートを示し、図１を参照にしながら説明する。
【００２６】
まず、プロセッサコア１０の初期化処理を行う（Ｓ１０１）。このときの初期化処理により、ＤＭＡＣ３０起動の命令が送られ、ＤＭＡＣ３０は起動する。そして、プロセッサコア１０からＤＭＡＣ３０の設定レジスタ３４へ外部メモリ５０から内部メモリへ転送するデータの転送設定情報が送信され、設定レジスタ３４内に保持される。
【００２７】
次に、ＤＭＡＣ３０は、この設定レジスタ３４の転送設定情報に応じて、転送制御部３２が外部メモリ５０から内蔵メモリ２０へデータの転送を開始する（Ｓ１０２）。このとき、ＤＭＡＣ３０内の転送制御部３２は、設定レジスタ３４に保持されている転送設定情報に基づいて転送動作を行う一方、他方で、現在の転送状態を設定レジスタ３４及びストール判定部３６に送信し、設定レジスタ３４内に現在の転送状態を保持する。
【００２８】
次に、プロセッサコア１０は、ＤＭＡＣ３０の外部メモリ５０から内蔵メモリ２０へのデータ転送に平行して、内蔵メモリ２０に転送されたデータのデータ処理を開始する（Ｓ１０３）。
【００２９】
このとき、プロセッサコア１０は、データ処理を行う前に、まず、データ処理を行うデータのアドレス情報をストール判定部３６に出力する（Ｓ１０４）。
【００３０】
そして、ストール判定部３６は、このアドレス情報と転送制御部３２から出力される現在の転送状態（転送済みサイズ）、設定レジスタ３４から出力される転送設定情報（内蔵メモリ転送開始アドレス、転送サイズ）を用いて、外部メモリ５０から内蔵メモリ２０へデータ処理を行うアドレス情報のデータ転送が完了しているか否かの判定を行う（Ｓ１０５）。ここで、このストール判定条件は、上述したような条件で判定される。
【００３１】
このとき、このストール判定部３６により、ストール判定条件を満たすとき、つまり、データ処理を行うアドレス情報のデータが、外部メモリ５０から内蔵メモリ２０へ転送が完了していないと判定されたときは、ストール判定部３６は、プロセッサコア１０にストール信号を出力する（Ｓ１０６）。
【００３２】
そして、ストール信号が入力されたプロセッサコア１０は、ストールする（Ｓ１０７）。
【００３３】
ストールしたプロセッサコア１０は、再度、ストール判定部３６にアドレス情報を出力し（Ｓ１０４）、内蔵メモリ２０に所望のアドレス情報のデータが転送を完了しているかストール判定を行うことになる（Ｓ１０５、Ｓ１０６）。
【００３４】
それに対して、アドレス情報がストール判定条件を満たさないとき、つまり、データ処理を行うアドレス情報のデータが、外部メモリ５０から内蔵メモリ２０へ転送が完了していると判定されたときは、プロセッサコア１０へのストール信号の出力は行わず、プロセッサコア１０は、内蔵メモリ２０にアクセスを開始する（Ｓ１０８）。
【００３５】
そして、プロセッサコア１０は、所望のアドレス情報にアクセスしたデータのデータ処理を行う（Ｓ１０９）。
【００３６】
以上、所望のアドレス情報のデータ処理が終了すると、データ処理を終えた内蔵メモリ２０内の所望のアドレス情報のデータは、転送制御部３２により内蔵メモリ２０から外部メモリ５０へ転送が行われる（Ｓ１１０）。
【００３７】
そして、データ処理を終えたデータの内蔵メモリ２０から外部メモリ５０への転送が終了すると、プロセッサコア１０は次のアドレス情報のデータ処理を行うために、内蔵メモリ２０へのアクセスを行うが、上記したように、内蔵メモリ２０へのアクセスを行う前に、Ｓ１０２に戻り、再度、外部メモリ５０から内蔵メモリ２０へデータ転送を開始し、Ｓ１０２からＳ１１０までの動作を繰り返し、所望のデータのメモリアクセス及びデータ処理を行うことになる。
【００３８】
このようにして、すべての内蔵メモリ２０内のデータのデータ処理が終了すると、内蔵メモリ２０内にあるデータ処理の行われたデータを外部メモリ５０へ転送を行い、それと平行して、プロセッサコア１０は、終了処理を開始し（Ｓ１１１）、一連のプロセッサの動作は終了する。
【００３９】
ここで、ＤＭＡＣ３０がプロセッサコア１０をストールさせるか否かを自ら判定することができるので、内蔵メモリ２０から外部メモリ５０へのデータ転送の終了を待つことなく、プロセッサコア１０の終了処理を終えることができる。
【００４０】
再度、プロセッサコア１０により、新たにロード動作を行うときは、Ｓ１０１へ戻り、プロセッサコア１０の初期化処理を行い、Ｓ１０１からＳ１１１までの動作を繰り返すことになる。このとき、内蔵メモリ２０から外部メモリ５０へのデータ転送が終了するまでにプロセッサコア１０の終了処理を終えることができるので、内蔵メモリ２０から外部メモリ５０へのデータ転送中にプロセッサコア１０の初期化動作（Ｓ１０１）を開始することができる。
【００４１】
以上より構成される本発明の実施例１に係る半導体集積回路装置は、ＤＭＡＣにストール判定部を設け、ＤＭＡＣに外部メモリから内蔵メモリへのデータ転送の待ちを判定させることができるので、従来、プロセッサコアが行っていた、外部メモリから内蔵メモリへのデータ転送の待ちによるプロセッサコアのメモリアクセスの待ちをプログラムコードに設定する必要が無く、プログラムコードに肥大化を抑えることができる。また、プログラムコードの肥大化を抑えることができるので、この半導体集積回路装置の動作速度を高速化することができる。また、メモリアクセスの待ちをなくすことができ、内蔵メモリの外部メモリへのデータ転送が終了するまでに、次のプロセッサコアのデータ処理動作を開始することができることから、半導体集積回路装置の動作速度を高速化することができる。
【００４２】
ここで、ストール判定部をＤＭＡＣ内ではなく、プロセッサコア内に設けてもかまわない。その場合、ＤＭＡＣの転送設定情報（内蔵メモリ転送開始アドレス、転送サイズ）は、予めプロセッサコア内に格納しておき、ストール判定時には、ＤＭＡＣ内の設定レジスタから転送設定情報を読み出さずに、プロセッサコア内に格納されている転送設定情報とＤＭＡＣの転送制御部から出力されてくる転送情報を元にストール判定を行う。なお、ストール判定部で判定に用いるＤＭＡＣの転送状態である転送情報は、転送情報をＤＭＡＣの転送制御部から受け取るのではなく、プロセッサコア内のストール判定部が、ＤＭＡＣがアクセスした内蔵メモリ領域をプロセッサ内の内部アドレスバスを監視することで得るようにしても良い。
【実施例２】
【００４３】
図３は、本発明の実施例２に係る半導体集積回路装置の構造を示す回路図である。
【００４４】
本発明の実施例２に係る半導体集積回路装置の実施例１との違いは、図３に示すように、プロセッサコア１０にストールレジスタ８０が設けられていることである。それ以外の実施例１と同様の構成については、同一符号を附して説明は省略する。
【００４５】
ストールレジスタ８０は、ストール判定部３６から出力されるストール信号に応じて状態が変化する。つまり、ストール判定部３６からストール信号が出力されると、ストールレジスタ８０は、「１」の状態になる。
【００４６】
また、プロセッサコア１０は、このストールレジスタ８０に格納されているストール情報を検査し、ストール信号が入力されているときには、ストールレジスタ８０の状態を「０」にし、再度、同じロード命令を実行させる機能を備えている。
【００４７】
以上のように構成される本実施例の半導体集積回路装置は、以下のように動作する。図４にその半導体集積回路装置のデータ処理動作を表すフローチャートを示し、図３を参照にしながら説明する。実施例１と同様のステップについては、同一符号を附している。
【００４８】
まず、プロセッサコア１０の初期化処理を行う（Ｓ１０１）。このときの初期化処理により、ＤＭＡＣ３０起動の命令が送られ、ＤＭＡＣ３０は起動する。そして、プロセッサコア１０からＤＭＡＣ３０の設定レジスタ３４へ外部メモリ５０から内蔵メモリ２０へ転送されるデータの転送設定情報が送信され、設定レジスタ３４内に保持させる。
【００４９】
次に、ＤＭＡＣ３０は、この設定レジスタ３４の転送設定情報に応じて、転送制御部３２が外部メモリ５０から内蔵メモリ２０へデータの転送を開始する（Ｓ１０２）。このとき、ＤＭＡＣ３０内の転送制御部３２は、設定レジスタ３４に保持されている転送設定情報に基づいて転送動作を行う一方、他方で、現在の転送状態を設定レジスタ３４及びストール判定部３６に送信し、設定レジスタ３４内に現在の転送状態を保持する。
【００５０】
次に、プロセッサコア１０は、ＤＭＡＣ３０の外部メモリ５０から内蔵メモリ２０へのデータ転送に平行して、内蔵メモリ２０に転送されたデータのデータ処理を開始する（Ｓ１０３）。
【００５１】
このとき、プロセッサコア１０は、データのデータ処理を行う前に、まず、データ処理を行うデータのアドレス情報をストール判定部３６に出力する（Ｓ１０４）。
【００５２】
そして、ストール判定部３６は、このアドレス情報と転送制御部３２から出力される現在の転送状態（転送済みサイズ）、設定レジスタ３４から出力される転送設定情報（内蔵メモリ転送開始アドレス、転送サイズ）から、外部メモリ５０から内蔵メモリ２０へデータ処理を行うアドレス情報のデータが転送を完了しているか否かの判定を行う（Ｓ１０５）。ここで、このストール判定条件は、実施例１で示したような条件でストール判定される。
【００５３】
このとき、このストール判定部３６により、ストール判定条件を満たす、つまり、データ処理を行うアドレス情報のデータが、外部メモリ５０から内蔵メモリ２０への転送を完了していないと判定されたときは、ストール判定部３６は、プロセッサコア１０のストールレジスタ８０にストール信号を出力し、ストールレジスタ８０は、「１」の状態になる（Ｓ２０１）。
【００５４】
そして、プロセッサコア１０は、ストールレジスタ８０の状態を判断する（Ｓ２０２）。このとき、ストールレジスタ８０の状態は、「１」であるので、プロセッサコアは、メモリアクセスを行わず、ロード命令が実行されたことにする。
【００５５】
そして、プロセッサコアは、ストールレジスタ８０内の状態を「０」に戻し、再度、Ｓ１０３から指定アドレスのデータ処理を開始する。このとき、ストール判定部３６にアドレス情報を出力し（Ｓ１０４）、内蔵メモリ２０に所望のアドレス情報のデータが転送を完了しているかストール判定を行うことになる（Ｓ１０５）。
【００５６】
そして、アドレス情報がストール判定条件を満たさない、つまり、データ処理を行うアドレス情報のデータが、外部メモリ５０から内蔵メモリ２０への転送を完了していると判定されたときは、ストール判定部３６は、ストールレジスタ８０にストール信号を出力しない。
【００５７】
そして、プロセッサコア１０は、ストールレジスタ８０の状態を判断する（Ｓ２０２）。このとき、ストールレジスタ８０の状態は「０」であるので、プロセッサコアは、その所望のアドレスのメモリにアクセスを開始する（Ｓ１０８）。そして、所望のアドレス内のデータのデータ処理を行う（Ｓ１０９）。
【００５８】
以上、所望のアドレスのデータ処理が終了すると、データ処理を終えた内蔵メモリ２０内の所望のアドレス情報のデータは、転送制御部３２により内蔵メモリ２０から外部メモリ５０へ転送が行われる（Ｓ１１０）。
【００５９】
そして、データ処理を終えたデータの内蔵メモリ２０から外部メモリ５０への転送が終了すると、プロセッサコア１０は次のアドレス情報のデータ処理を行うために、内部メモリへのアクセスを行うが、上記したように、内蔵メモリ２０へのアクセスを行う前に、Ｓ１０２に戻り、再度、外部メモリ５０から内蔵メモリ２０へデータ転送を開始し、Ｓ１０２−Ｓ１０５、Ｓ２０１、Ｓ２０２、Ｓ１０８−Ｓ１１０までの動作を繰り返し、所望のデータのメモリアクセス及びデータ処理を行うことになる。
【００６０】
このようにして、すべての内蔵メモリ２０内のデータのデータ処理が終了すると、プロセッサコア１０は、終了処理を開始する。それと同時に、内蔵メモリ２０内にあるデータ処理の行われたデータを外部メモリ５０へ転送し（Ｓ１１１）、一連のプロセッサの動作は終了する。
【００６１】
ここで、ＤＭＡＣ３０が自らプロセッサコア１０をストールさせるか否かを自ら判定することができるので、内蔵メモリ２０内の外部メモリ５０へのデータ転送の終了を待つことなく、プロセッサコア１０の終了処理を終えることができる。
【００６２】
再度、プロセッサコア１０により、新たにロード動作を行うときは、Ｓ１０１へ戻り、プロセッサコア１０の初期化処理を行い、Ｓ１０１からＳ１１１まで（Ｓ２０１、Ｓ２０２含む）の動作を繰り返すことになる。このとき、内蔵メモリ２０の外部メモリ５０へのデータ転送が終了するまでにプロセッサコア１０の終了処理を終えることができるので、内蔵メモリ２０の外部メモリ５０へのデータ転送中にプロセッサコア１０の初期化動作を開始することができる。
【００６３】
以上より構成される本発明の実施例２に係る半導体集積回路装置は、ＤＭＡＣにストール判定部を設け、ＤＭＡＣに外部メモリから内蔵メモリへのデータ転送の待ちを判定させることができるので、従来、プロセッサコアが行っていた、外部メモリから内蔵メモリへのデータ転送の待ちによるプロセッサコアのメモリアクセスの待ちをプログラムコードに設定する必要が無く、プログラムコードに肥大化を抑えることができる。また、プログラムコードの肥大化を抑えることができるので、この半導体集積回路装置の動作速度を高速化することができる。また、このメモリアクセスの待ちをなくすことができ、内蔵メモリの外部メモリへのデータ転送が終了するまでに、次のプロセッサコアのデータ処理動作を開始することができることから、半導体集積回路装置の動作速度を高速化することができる。
【００６４】
ここで、ストール判定部をＤＭＡＣ内ではなく、プロセッサコア内に設けてもかまわない。その場合、ＤＭＡＣの転送設定情報（内蔵メモリ転送開始アドレス、転送サイズ）は、予めプロセッサコア内に保持しておき、ストール判定時には、ＤＭＡＣ内の設定レジスタから転送設定情報を読み出さずに、プロセッサコア内に格納されている転送設定情報とＤＭＡＣの転送制御部から出力されてくる転送情報を元にストール判定を行う。
【実施例３】
【００６５】
図５は、本発明の実施例３に係る半導体集積回路装置の構造を示す回路図である。
【００６６】
本発明の実施例３に係る半導体集積回路装置の上記各実施例との違いは、図５に示すように、プロセッサコア１０内にストール判定部３６が設けられていることと、プロセッサコア１０内のストール判定部３６自身がＤＭＡＣ３０の外部メモリ５０−内蔵メモリ２０間の転送情報を内部バス７０を介して確認、監視し、プロセッサコア１０をストールするか判定することである。それ以外の実施例１と同様の構成については、同一符号を附して説明は省略する。
【００６７】
ストール判定部３６は、プロセッサコア１０が内蔵メモリ２０のデータにアクセスし、データ処理を行っている以外は、外部メモリ５０−内蔵メモリ２０間の転送情報を内部バス７０を介して監視している。そのため、プロセッサコア１０をストールさせるか否かの判定は、プロセッサコア１０に予めＤＭＡＣ３０の設定レジスタに設定する転送設定情報を保持しておき、この転送設定情報とストール判定部自ら確認したＤＭＡＣ３０の転送情報を元に、プロセッサコア１０をストールさせるか否かの判定を行う。
【００６８】
以上のように構成される本実施例の半導体集積回路装置は、以下のように動作する。図６にその半導体集積回路装置のデータ処理動作を表すフローチャートを示し、図５を参照にしながら説明する。実施例１と同様のステップについては、同一符号を附している。
【００６９】
まず、プロセッサコア１０の初期化処理を行う（Ｓ１０１）。このときの初期化処理により、ＤＭＡＣ３０起動の命令が送られ、ＤＭＡＣ３０は起動する。そして、プロセッサコア１０からＤＭＡＣ３０の設定レジスタ３４へ外部メモリ５０から内部メモリへ転送するデータの転送設定情報が送信され、設定レジスタ３４内に保持される。さらに、この転送設定情報は、プロセッサコア１０内に保持され、プロセッサコア１０のストール判定に用いられる。
【００７０】
次に、ＤＭＡＣ３０は、この設定レジスタ３４の転送設定情報に応じて、転送制御部３２が外部メモリ５０から内蔵メモリ２０へデータの転送を開始する（Ｓ３０１）。このとき、ＤＭＡＣ３０内の転送制御部３２は、設定レジスタ３４に保持されている転送設定情報に基づいて転送動作を行う一方、他方で、現在の転送状態を設定レジスタ３４に現在の転送状態を保持する。また、ストール判定部３６は、ＤＭＡＣ３０のデータ転送処理が始まると、内部バス７０を介してＤＭＡＣ３０の転送状態の監視を始める。つまり、ストール判定部３６は、ＤＭＡＣ３０の現在の転送情報を把握していることになる。
【００７１】
次に、プロセッサコア１０は、ＤＭＡＣ３０の外部メモリ５０から内蔵メモリ２０へのデータ転送に平行して、内蔵メモリ２０に転送されたデータのデータ処理を開始する（Ｓ１０３）。
【００７２】
このとき、ストール判定部３６は、プロセッサコア１０のデータ処理前に、まず、データ処理を行うアドレス情報と、現在のデータ転送情報を確認する（Ｓ３０２）。
【００７３】
そして、ストール判定部３６は、このアドレス情報と現在の転送状態（転送済みサイズ）、プロセッサコア１０に保持していた転送設定情報（内蔵メモリ転送開始アドレス、転送サイズ）を用いて、外部メモリ５０から内蔵メモリ２０へデータ処理を行うアドレス情報のデータ転送が完了しているか否かの判定を行う（Ｓ１０５）。ここで、このストール判定条件は、上述したような条件で判定される。
【００７４】
このとき、このストール判定部３６により、ストール判定条件を満たすとき、つまり、データ処理を行うアドレス情報のデータが、外部メモリ５０から内蔵メモリ２０へ転送が完了していないと判定されたときは、ストール判定部３６は、プロセッサコア１０にストール信号を出力する（Ｓ１０６）。
【００７５】
そして、ストール信号が入力されたプロセッサコア１０は、ストールする（Ｓ１０７）。
【００７６】
ストールしたプロセッサコア１０は、再度、ストール判定部３６にＤＭＡＣ３０の転送状態を確認させ（Ｓ１０４）、内蔵メモリ２０に所望のアドレス情報のデータが転送を完了しているかストール判定を行うことになる（Ｓ１０５、Ｓ１０６）。
【００７７】
それに対して、アドレス情報がストール判定条件を満たさないとき、つまり、データ処理を行うアドレス情報のデータが、外部メモリ５０から内蔵メモリ２０へ転送が完了していると判定されたときは、まず、ストール判定部３６によるＤＭＡＣ３０の監視を停止させ（Ｓ３０３）、プロセッサコア１０は、内蔵メモリ２０にアクセスを開始する（Ｓ１０８）。
【００７８】
そして、プロセッサコア１０は、所望のアドレス情報にアクセスしたデータのデータ処理を行う（Ｓ１０９）。
【００７９】
以上、所望のアドレス情報のデータ処理が終了すると、データ処理を終えた内蔵メモリ２０内の所望のアドレス情報のデータは、転送制御部３２により内蔵メモリ２０から外部メモリ５０へ転送が行われる（Ｓ１１０）。
【００８０】
そして、データ処理を終えたデータの内蔵メモリ２０から外部メモリ５０への転送が終了すると、プロセッサコア１０は次のアドレス情報のデータ処理を行うために、内蔵メモリ２０へのアクセスを行うが、上記したように、内蔵メモリ２０へのアクセスを行う前に、Ｓ３０１に戻り、再度、外部メモリ５０から内蔵メモリ２０へデータ転送を開始し、Ｓ３０１からＳ１１０までの動作を繰り返し、所望のデータのメモリアクセス及びデータ処理を行うことになる。
【００８１】
このようにして、すべての内蔵メモリ２０内のデータのデータ処理が終了すると、内蔵メモリ２０内にあるデータ処理の行われたデータを外部メモリ５０へ転送を行い、それと平行して、プロセッサコア１０は、終了処理を開始し（Ｓ１１１）、一連のプロセッサの動作は終了する。
【００８２】
ここで、ストール判定部がプロセッサコア１０をストールさせるか否かを自ら判定することができるので、内蔵メモリ２０から外部メモリ５０へのデータ転送の終了を待つことなく、プロセッサコア１０の終了処理を終えることができる。
【００８３】
再度、プロセッサコア１０により、新たにロード動作を行うときは、Ｓ１０１へ戻り、プロセッサコア１０の初期化処理を行い、Ｓ１０１からＳ１１１（Ｓ３０１−Ｓ３０３含む）までの動作を繰り返すことになる。このとき、内蔵メモリ２０から外部メモリ５０へのデータ転送が終了するまでにプロセッサコア１０の終了処理を終えることができるので、内蔵メモリ２０から外部メモリ５０へのデータ転送中にプロセッサコア１０の初期化動作（Ｓ１０１）を開始することができる。
【００８４】
以上より構成される本発明の実施例３に係る半導体集積回路装置は、ストール判定部を設け、ストール判定部にＤＭＡＣの外部メモリから内蔵メモリへのデータ転送の状態を判定させることにより、外部メモリから内蔵メモリへのデータ転送の待ちによるプロセッサコアのメモリアクセスの待ちをプログラムコードに設定する必要が無く、プログラムコードに肥大化を抑えることができる。また、プログラムコードの肥大化を抑えることができるので、この半導体集積回路装置の動作速度を高速化することができる。また、このメモリアクセスの待ちをなくすことができ、内蔵メモリの外部メモリへのデータ転送が終了するまでに、次のプロセッサコアのデータ処理動作を開始することができることから、半導体集積回路装置の動作速度を高速化することができる。
【００８５】
ここで、実施例３のプロセッサコアのストールの行い方として、実施例1と同じように、ストール判定部からストール信号を出力し、プロセッサコアをストールさせていたが、実施例2のように、プロセッサコア内にストールレジスタを設け、ストールするときにストールレジスタの状態を変化させ、プロセッサコアのデータ転送処理を制御してもかまわない。
【００８６】
なお、本発明は、上述したような実施例に何ら限定されるものではなく、本発明の主旨を逸脱しない範囲内で種々変形して実施することができる。例えば、上記各実施例では、ストール判定部は、ＤＭＡＣ内若しくはプロセッサコア内に設けられていたが、ＤＡＭＣ及びプロセッサコアから独立した位置にストール判定部を設けてもかまわない。
【図面の簡単な説明】
【００８７】
【図１】本発明の実施例１に係る半導体集積回路装置の構造を示す回路図。
【図２】本発明の実施例１に係る半導体集積回路装置の制御方法を示すフローチャート。
【図３】本発明の実施例２に係る半導体集積回路装置の構造を示す回路図。
【図４】本発明の実施例２に係る半導体集積回路装置の制御方法を示すフローチャート。
【図５】本発明の実施例３に係る半導体集積回路装置の構造を示す回路図。
【図６】本発明の実施例３に係る半導体集積回路装置の制御方法を示すフローチャート。
【符号の説明】
【００８８】
１０  プロセッサコア
２０  内蔵メモリ
３０  ＤＭＡＣ（Direct Memory Access Controller）
３２  転送制御部
３４  設定レジスタ
３６  ストール判定部
４０  外部バス
４２  外部アドレスバス
４４  外部データバス
５０  外部メモリ
６０  Ｉ／Ｏデバイス
７０  内部バス
７２  内部アドレスバス
７４  内部データバス
８０  ストールレジスタ
【図１】
2007193534.tif 000003
【図２】
2007193534.tif 000004
【図３】
2007193534.tif 000005
【図４】
2007193534.tif 000006
【図５】
2007193534.tif 000007
【図６】
2007193534.tif 000008