(57)【要約】プロセッサコア割り込み制御回路１２は、コプロセッサ２０において実行中のコプロセッサ命令のキャンセルを要求する要求信号を発行する。プログラム制御回路１１は、キャンセル要求発行後に割り込み処理を発行する。コプロセッサ演算制御回路２１は、コプロセッサ命令の実行状態を保持する。コプロセッサ割り込み制御回路２４は、処理キャンセル要求信号を受けた際に、コプロセッサ演算制御回路２１が保持する実行状態情報に基づいてコプロセッサ命令のキャンセルまたは保留を行う。コプロセッサ割り込み制御回路２４は、保留する場合にはコプロセッサ命令の実行状態を退避し、割り込み処理の終了後に退避していたコプロセッサ命令の実行状態を復元する。
2012120573.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサコアから、コプロセッサにおいて実行中のコプロセッサ命令のキャンセルを要求するキャンセル要求を発行し、
前記キャンセル要求を受信した前記コプロセッサにおいて、実行中の前記コプロセッサ命令の実行状態を判定し、当該判定に応じて前記コプロセッサ命令をキャンセルまたは保留にするとともに、保留にする際に前記コプロセッサ命令の実行状態を退避し、その後に前記コプロセッサ命令に対する処理を行う割り込み処理を実行し、当該処理の終了後に退避していた前記コプロセッサ命令の実行状態を復元する、デッドロック回避方法。
【請求項２】
前記プロセッサコアは、前記キャンセルがなされた前記コプロセッサ命令を前記割り込み命令の終了後に再実行する請求項１に記載のデッドロック回避方法。
【請求項３】
前記コプロセッサは、前記コプロセッサ命令が記憶部へのデータ書き込みを実行した場合には、当該コプロセッサ命令を保留の対象とすることを特徴とする請求項１または請求項２に記載のデッドロック回避方法。
【請求項４】
プロセッサコアと、コプロセッサと、を備え、
前記プロセッサコアは、前記コプロセッサにおいて実行中のコプロセッサ命令のキャンセルを要求するキャンセル要求を発行するプロセッサコア割り込み制御回路と、
前記キャンセル要求発行後に前記コプロセッサに対する処理を行う割り込み処理を開始するプログラム制御回路と、を備え、
前記コプロセッサは、前記コプロセッサ命令の実行状態を保持するコプロセッサ演算制御回路と、
前記キャンセル要求を受け付けた際に、前記コプロセッサ演算制御回路が保持する情報に基づいて前記コプロセッサ命令をキャンセルまたは保留し、保留する場合に前記コプロセッサ命令の実行状態を退避し、前記割り込み処理の終了後に退避していた前記コプロセッサ命令の実行状態を復元するコプロセッサ割り込み制御回路と、を備える、デッドロック回避機構。
【請求項５】
前記プログラム制御回路は、キャンセルされた前記コプロセッサ命令を再発行することを特徴とする請求項４に記載のデッドロック回避機構。
【請求項６】
前記コプロセッサ割り込み制御回路は、前記コプロセッサ命令が記憶部へのデータ書き込みを実行した場合には、当該コプロセッサ命令を保留の対象とすることを特徴とする請求項４または請求項５に記載のデッドロック回避機構。
【請求項７】
前記コプロセッサは、設定されたパラメータからアクセスアドレスを生成して、当該アクセスアドレスを用いてデータメモリにアクセスするデータ転送回路を備え、
前記割り込み命令は、前記パラメータを設定する処理を含むことを特徴とする請求項４乃至請求項６のいずれか１項に記載のデッドロック回避機構。
【請求項８】
請求項４乃至請求項７のいずれか１項に記載のデッドロック回避機構を備えた半導体集積回路。
【請求項９】
請求項８に記載の半導体集積回路を備えた携帯電話端末またはオーディオビジュアル機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デッドロック回避方法、デッドロック回避機構に関する。
【背景技術】
【０００２】
近年、処理の柔軟性向上のため、専用ハードウェアに代わり、組み込み用プロセッサコアに専用のコプロセッサを接続して信号処理を行うＬＳＩ（Large Scale Integration）が増加している。【０００３】
プロセッサコアとコプロセッサが接続するＬＳＩでは、図５に示すようにコプロセッサ２０とデータメモリ３０とが直接接続されうる。コプロセッサ２０は、データメモリ３０に対してデータの読み書きを直接行う。これにより、プロセッサコア１０のデータトラフィックを削減し、性能を向上できる。【０００４】
例えば、特許文献１には、コプロセッサとデータメモリ間で直接データを転送する構成が開示されている。【０００５】
コプロセッサと、データメモリ等と、のデータやり取りに必要となるアドレスを生成する手法には、例えば以下の方法がある。
（１−１）コプロセッサ内のデータ転送回路が自動的にアドレスを生成する方法
（１−２）コプロセッサに対して発行する命令（以下、コプロセッサ命令とする）に直接アドレス値を埋め込む方法
（１−３）コプロセッサ命令にアドレス値の更新パラメータを埋め込む方法
（１−４）プロセッサコアからアドレスを適宜供給する方法【０００６】
上記した方法のうち、"（１−１）コプロセッサ内のデータ転送回路が自動的にアドレスを生成する方法"は、処理効率が高く、かつ制御プログラムの効率も高い。以下、図６を参照してこの方法を採用したＬＳＩ内のコプロセッサについて説明する。コプロセッサ２０内のデータ転送回路２３は、データ転送パラメータ２３１を用いて自動的にアドレスを生成する。データ転送回路２３は、生成したアドレスを用いてデータメモリ３０からデータを読み出す。データ転送回路２３は、読み出したデータを、データ入力ＦＩＦＯ（First In First Out）２５を介して演算器に書き込む。演算器２２は、入力されたデータを用いた演算を行い、演算結果をデータ出力ＦＩＦＯ２６、データ転送回路２３に書き込む。【０００７】
データ転送回路２３内で自動的にアドレスを生成する場合、データ転送回路２３に対してアドレス生成用のパラメータ（データ転送パラメータ）が設定され、その後に一連のコプロセッサ命令が発行される。このコプロセッサ命令の発行と同期して、データ転送回路２３はデータ転送パラメータ２３１を用いてアドレスを生成する。アドレス生成の後に、データ転送回路２３は、データメモリ３０へのデータ書き込みまたはデータ読み出しを行う。上述の動作を行うように、ＬＳＩの各構成は実装される。【０００８】
コプロセッサ２０内のデータ転送回路２３がアドレスを生成する場合、生成するアドレスの複雑さにより、データ転送回路２３に対して複数回のデータ転送パラメータ設定が必要となる場合がある。生成するアドレスが変動せず、単純である場合、一回だけデータ転送パラメータの設定を行えばよい。しかし、例えばコプロセッサ命令の実行途中に不規則にアドレスが変更される場合、コプロセッサ命令の実行中にデータ転送パラメータの再設定が必要となる。【０００９】
データ転送パラメータの再設定の方法は、例えば以下の方法がある。
（２−１）コプロセッサ命令に含まれる各処理を繰り返し実行し、アドレス変更が必要となるタイミングにおいて繰り返し処理を中断し、データ転送パラメータを設定する方法
（２−２）アドレスを変更するタイミングにおいてコプロセッサに対する割り込みを発生させ、割り込み処理内においてデータ転送パラメータを設定する方法【００１０】
上述の（２−１）の方法を図７を参照して説明する。図示するように、コプロセッサは、コプロセッサ命令を繰り返し実行する（ループ処理、Ｓ２２）。アドレスが変更されるタイミングにおいて、外部からデータ転送パラメータが設定される（Ｓ２１）。この方法を採用する場合、アドレス変更のタイミングを考慮して制御プログラムを生成する必要がある。このため、コプロセッサ命令の実行途中に不規則にアドレスが変更する場合、制御プログラムが複雑になるという問題がある。【００１１】
続いて、（２−２）の方法を図８、及び図９を参照して説明する。まず、図８を参照してコプロセッサに対して割り込み処理の実行を行う場合の一般的な動作について説明する。【００１２】
コプロセッサ命令の実行中にコプロセッサに対する割り込み処理を行う場合、コプロセッサ命令の終了前にこの割り込み処理が実行されると、コプロセッサ内部のリソース不整合等の問題が生じ得る。そのため、図８に示すように、コプロセッサ命令が終了するまで、割り込み処理は保留される。【００１３】
例えば、特許文献２では、ベクトル命令の処理中に外部割り込みが発生した場合、そのベクトル命令の処理が終了するまで外部割り込みの処理を保留する技術が開示されている。これにより、ベクトル命令の演算結果が不正値になることを防止している。【００１４】
続いて、図９を参照して、（２−２）の方法について説明する。図示するように、アドレス生成用のパラメータを再設定する必要があるタイミングで割り込みを発生させる（Ｓ４３）。これにより、ＬＳＩの制御プログラムを簡略化することができる。【００１５】
しかし、この方法では、デッドロックが生じ得るという問題がある。当該問題を図１０を参照して説明する。図８を参照して説明したように、一般にリソースの不整合を回避するために、割り込み処理はコプロセッサ命令の終了を待ってから実行される。このため、割り込み処理は、コプロセッサ命令の終了まで実行されない（Ｓ５１）。一方、割り込み処理が実行されないため、データ転送回路のパラメータ設定は実行されない（Ｓ５２）。パラメータ設定が実行されないために、実行中のコプロセッサ命令によるデータ取得（データメモリへのアクセス）が実行できない（Ｓ５３）。このため、コプロセッサ命令が終了しない（Ｓ５４）。このように、デッドロック状態が生じてしまう。【００１６】
特許文献３には、ストリームデータを行う際に、バッファにデータが保持されるまで待ち続けてしまうことによるデッドロックを解消するための技術が開示されている。本技術では、タイムアウトが発生した場合、ストリームデータを保持するＦＩＦＯバッファに対してダミーデータを挿入することによりデッドロックを回避している。すなわち、一定時間毎に処理を強制的に実行する構成が開示されている。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】特表２００２−５０３３７０号公報
【特許文献２】特開２００５−０９２４６７号公報
【特許文献３】特開２００９−２７１６１０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１８】
特許文献３の技術では、タイムアウト発生後、すなわち一定の待ち時間の後に処理を継続させることによりデッドロックを回避している。一定の待ち時間が生じるため、特許文献３の技術では迅速に処理を実行することができない。【００１９】
そこで本発明は、主に上述の（１−１）、（２−２）のような状況を対象とする。すなわち、本発明は、コプロセッサ命令の実行中に、割り込み処理によってコプロセッサに対して処理を行う状況を対象とする。上述のように、割り込み処理は、コプロセッサ内でのリソース不整合を回避するため、コプロセッサ命令が終了するまで実行されない。そのため、一般的なＬＳＩの構成では、コプロセッサに対して処理を行う（上述の例ではアドレス生成用のパラメータを設定する）際にデッドロックが生じ得る。【００２０】
本発明は上記の問題に対してなされたものであり、コプロセッサ命令の実行中に割り込み処理によってコプロセッサに対して処理を行うプロセッサシステムにおいて、デッドロックを回避することを主たる目的とする。
【課題を解決するための手段】
【００２１】
本発明にかかるデッドロック回避方法の一態様は、プロセッサコアから、コプロセッサにおいて実行中のコプロセッサ命令のキャンセルを要求するキャンセル要求を発行し、前記キャンセル要求を受信した前記コプロセッサにおいて、実行中の前記コプロセッサ命令の実行状態を判定し、当該判定に応じて前記コプロセッサ命令をキャンセルまたは保留にするとともに、保留にする際に前記コプロセッサ命令の実行状態を退避し、前記コプロセッサ命令に対する処理を行う割り込み処理を実行し、当該処理の終了後に退避していた前記コプロセッサ命令の実行状態を復元する、ものである。【００２２】
本発明にかかるデッドロック回避機構の一態様は、プロセッサコアと、コプロセッサと、を備え、前記プロセッサコアは、前記コプロセッサにおいて実行中のコプロセッサ命令のキャンセルを要求するキャンセル要求を発行するプロセッサコア割り込み制御回路と、前記キャンセル要求発行後に前記コプロセッサに対する処理を行う割り込み処理を開始するプログラム制御回路と、を備え、前記コプロセッサは、前記コプロセッサ命令の実行状態を保持するコプロセッサ演算制御回路と、前記キャンセル要求を受け付けた際に、前記コプロセッサ演算制御回路が保持する情報に基づいて前記コプロセッサ命令をキャンセルまたは保留し、保留する場合に前記コプロセッサ命令の実行状態を退避し、前記割り込み処理の終了後に退避していた前記コプロセッサ命令の実行状態を復元するコプロセッサ割り込み制御回路と、を備える、ものである。
【発明の効果】
【００２３】
本発明によれば、コプロセッサ命令の実行中に割り込み処理によってコプロセッサに対して処理を行うプロセッサシステムにおいて、デッドロックを回避することができるデッドロック回避方法及びデッドロック回避機構を提供することができる。
【図面の簡単な説明】
【００２４】
【図１】実施の形態１にかかるデッドロック回避機構の構成を示すブロック図である。
【図２】実施の形態１にかかるコプロセッサ割り込み制御回路２４の構成を示すブロック図である。
【図３】実施の形態１にかかるデッドロック回避機構の処理を示すフローチャートである。
【図４】実施の形態１にかかるデッドロック回避機構の構成を示すブロック図である。
【図５】一般的なＬＳＩの構成を示すブロック図である。
【図６】一般的なコプロセッサの構成を示すブロック図である。
【図７】データ転送パラメータの設定を全てメイン処理で行う場合の処理の流れを示すフローチャートである。
【図８】コプロセッサに対して割り込み処理を行う場合の動作を示すフローチャートである。
【図９】データ転送パラメータの設定を割り込み処理で行う場合の処理の流れを示すフローチャートである。
【図１０】デッドロックの発生を示す概念図である。
【発明を実施するための形態】
【００２５】
＜実施の形態１＞
以下、図面を参照して本発明の実施の形態について説明する。本実施の形態にかかるデッドロック回避機構１は、プロセッサコア１０と、コプロセッサ２０と、データメモリ３０と、を備える。デッドロック回避機構１は、携帯電話端末やＡＶ（オーディオビジュアル）機器に用いられる信号処理用のＬＳＩ（Large Scale Integration）等に組みこまれる。
【００２６】
プロセッサコア１０は、プログラム制御回路１１と、プロセッサコア割り込み制御回路１２と、を備える。
【００２７】
プログラム制御回路１１は、コプロセッサ２０に対してコプロセッサ命令、または割り込み処理をコプロセッサ演算制御信号として発行する。プログラム制御回路１１は、コプロセッサ演算制御回路２１からのウェイト信号の供給がない場合に、当該発行が可能である。コプロセッサ命令とは、一般に複数のサイクルを持つ命令である。割り込み処理とは、本実施の形態ではデータ転送パラメータ２３１を再設定する処理である。
【００２８】
プログラム制御回路１１は、コプロセッサ命令（コプロセッサ２０に対する命令）を実行中であるか、実行中ではないか、を示すステータスを保持する。なお、プログラム制御回路１１は、上記の２種類のステータスに限らず、様々なステータスを保持可能である。プログラム制御回路１１は、プロセッサコア割り込み制御回路１２からの問い合わせに応じて、プロセッサコア割り込み制御回路１２に対して保持しているステータスを通知する。
【００２９】
プログラム制御回路１１は、プロセッサコア割り込み制御回路１２から割り込み処理の開始を通知された場合に、データ転送パラメータ２３１を再設定するための割り込み処理の処理内容をコプロセッサ演算制御回路２１に通知する。
【００３０】
プロセッサコア割り込み制御回路１２は、データ転送パラメータ２３１を再設定する必要が生じた場合に、プログラム制御回路１１に現在のステータス、すなわち、コプロセッサ命令を実行中であるか否かを問い合わせる。データ転送パラメータ２３１は、例えばデータ転送回路２３から割り込み信号が供給された際に再設定される。データ転送パラメータ２３１の詳細は後述する。コプロセッサ命令が実行中である場合、プロセッサコア割り込み制御回路１２は、コプロセッサ割り込み制御回路２４に対して処理キャンセル要求信号を供給する。
【００３１】
プロセッサコア割り込み制御回路１２は、処理キャンセル要求信号の応答として、コプロセッサ割り込み制御回路２４から処理キャンセル判定信号を受け取る。処理キャンセル判定信号とは、コプロセッサ命令を保留したか、コプロセッサ命令をキャンセルしたか、のいずれかを示す判定信号である。プロセッサコア割り込み制御回路１２は、受け取った判定信号を保存する。そして、プロセッサコア割り込み制御回路１２は、プログラム制御回路１１に対して割り込み処理の開始を通知する。
【００３２】
プロセッサコア割り込み制御回路１２は、割り込み処理が終了した後に、コプロセッサ命令の再開指示、またはコプロセッサ命令の再発行を行う。保存した判定信号が保留に関するものである場合、プロセッサコア割り込み制御回路１２は、処理再開要求信号をプロセッサ割り込み制御回路２４に供給する。保存した判定信号がキャンセルに関するものである場合、プロセッサコア割り込み制御回路１２は、プログラム制御回路１１を介してキャンセルされたコプロセッサ命令を再発行する。
【００３３】
なお、プログラム制御回路１１は、必ずしもキャンセルされたコプロセッサ命令を再発行する必要はなく、保持するステータスに応じて再発行を行うか否かを決定しても良い。
【００３４】
コプロセッサ２０は、コプロセッサ演算制御回路２１と、コプロセッサ演算器２２と、データ転送回路２３と、コプロセッサ割り込み制御回路２４と、を備える。
【００３５】
コプロセッサ演算制御回路２１は、コプロセッサ命令を実行中である場合にウェイト信号をプログラム制御回路１１に供給する。コプロセッサ演算制御回路２１は、コプロセッサ命令に含まれる各サイクルの処理をコプロセッサ演算器２２に実行させる。
【００３６】
さらに、コプロセッサ演算制御回路２１は、割り込み処理が通知された場合に、データ転送回路２３に当該割り込み処理の処理内容を通知し、データ転送パラメータ２３１を再設定させる。コプロセッサ演算制御回路２１は、割り込み処理の実行中にもウェイト信号をプログラム制御回路１１に供給する。
【００３７】
コプロセッサ演算制御回路２１は、コプロセッサ命令の実行中に、当該実行状況をステータス（以下、処理ステータスとも記載する。）として保持する。処理ステータスには、現在実行中のステップ数、外部の記憶部（データメモリ３０または任意のレジスタ（不図示））にデータ書き込みを行ったか否か、書き込みを行った記憶部のアドレス情報と書き込んだ値とを対にした情報、等の情報が含まれる。
【００３８】
コプロセッサ演算制御回路２１は、コプロセッサ割り込み制御回路２４からの問い合わせに応じて、コプロセッサ割り込み制御回路２４に処理ステータスの情報を含む処理ステータス信号を供給する。
【００３９】
コプロセッサ演算制御回路２１は、コプロセッサ割り込み制御回路２４から処理保留信号または処理キャンセル信号が入力された場合、現在実行中のコプロセッサ命令を終了する。コプロセッサ演算制御回路２１は、コプロセッサ割り込み制御回路２４から処理再開信号及び処理再開ステータス信号を受け取った場合、処理再開ステータス信号に応じた実行状況からコプロセッサ命令を再開する。
【００４０】
コプロセッサ演算器２２は、コプロセッサ命令の各サイクルを実行する演算器である。コプロセッサ演算器２２は、データメモリ３０にアクセスする必要がある場合に、データ転送回路２３を介してデータの読み出し、書き込みを行う。
【００４１】
データ転送回路２３は、コプロセッサ演算器２２の要求に応じて、データメモリ３０へのアクセスを行う。データ転送回路２３は、データメモリ３０へのアクセスに必要となるアドレスを、データ転送パラメータ２３１を用いて生成する。
【００４２】
データ転送パラメータ２３１は、データメモリ３０にアクセスするアドレスを生成する際に利用されるパラメータである。データ転送パラメータ２３１には、アドレス初期値、転送上限数、アドレス差分等の情報が含まれる。
【００４３】
アドレス初期値は、データメモリ３０にアクセスする際の初期値を示す情報である。転送上限数は、データメモリ３０に対する転送（データの読み出し、または書き込み）の最大数である。当該最大数回のデータ転送を行った場合、データ転送パラメータ２３１は再設定をされる必要がある。アドレス差分とは、直近にアクセスしたアドレスから次にアクセスするアドレスの差分である。
【００４４】
データ転送回路２３は、データ転送パラメータ２３１の再設定の必要が生じた場合に、割り込み信号をプロセッサコア割り込み制御回路１２に供給する。
【００４５】
コプロセッサ割り込み制御回路２４は、割り込み処理の制御を行う。コプロセッサ割り込み制御回路２４の構成及び動作の詳細を図２を参照して説明する。
【００４６】
コプロセッサ割り込み制御回路２４は、制御回路２４１と、キャンセル判定回路２４２と、保留状態保存レジスタ２４３と、を備える。
【００４７】
制御回路２４１は、処理キャンセル要求信号が入力された場合に、キャンセル判定回路２４２に対してキャンセル判定の開始を指示する。制御回路２４１には、キャンセル判定回路２４２から処理キャンセル判定信号が供給される。
【００４８】
制御回路２４１は、処理キャンセル判定信号の値を参照して制御信号（処理保留信号、処理キャンセル信号）を生成し、生成した制御信号をコプロセッサ演算制御回路２１に供給する。
【００４９】
処理キャンセル判定信号が保留を示すもの（現在実行中のコプロセッサ命令は保留すべきと判定するもの）である場合、制御回路２４１は、実行中のコプロセッサ命令の保留を指示する処理保留信号を生成し、処理保留信号をコプロセッサ演算制御回路２１に供給する。これとともに、制御回路２４１は、キャンセル判定回路２４２から入力された処理ステータス信号の各値（例えば実行中のサイクル番号、演算の一時値、レジスタに書き込んだ値と書き込み先等）を保留状態保存レジスタ２４３に書き込む。
【００５０】
処理キャンセル判定信号がキャンセルを示すもの（現在実行中のコプロセッサ命令がキャンセルできると判定するもの）である場合、制御回路２４１は、実行中のコプロセッサ命令のキャンセルを指示する処理キャンセル信号を生成し、処理キャンセル信号をコプロセッサ演算制御回路２１に供給する。
【００５１】
制御回路２４１には、プロセッサコア割り込み制御回路１２から処理再開要求信号が入力される。これに応じて、制御回路２４１は、処理再開信号をコプロセッサ演算制御回路２１に供給する。これとともに制御回路２４１は、保留状態保存レジスタ２４３の値を読み出し、読み出した値を再開用ステータス信号としてコプロセッサ演算制御回路２１に供給する。これにより、制御回路２４１は、コプロセッサ命令の実行状態を復元する。
【００５２】
キャンセル判定回路２４２は、制御回路２４１からのキャンセル判定の開始指示に応じて、現在実行中のコプロセッサ命令をキャンセルできるか、それとも保留にすべきか、を判定する。キャンセル判定回路２４２は、コプロセッサ演算制御回路２１から供給される処理ステータス信号に応じて、当該判定を行う。前述のように、処理ステータスには、現在実行中のステップ数、記憶部（データメモリ３０または任意のレジスタ）にデータ書き込みを行ったか否か、等の情報が含まれる。キャンセル判定回路２４２は、例えばすでに外部にデータを書き込んでいるか否かに応じて当該判定を行う。キャンセル判定回路２４２は、実行済みのサイクルにおいて、記憶部に値を書き込んでいた場合、現在実行中のコプロセッサ命令を保留すべきと判定する。キャンセル判定回路２４２は、判定結果を処理キャンセル判定信号として、制御回路２４１及びプロセッサコア割り込み制御回路２２に供給する。さらに、キャンセル判定回路２４２は、処理ステータス信号を制御回路２４１に供給する。
【００５３】
保留状態保存レジスタ２４３は、保留されたコプロセッサ命令を再開する際に使用するパラメータを保存する。
【００５４】
続いて、本実施の形態にかかるデッドロック回避機構１の動作について図１及び図３を参照して説明する。図３は、デッドロック回避機構１における割り込み信号生成から割り込み処理の終了までの処理の流れを示すフローチャートである。
【００５５】
コプロセッサ演算制御回路２１は、コプロセッサ命令の実行を制御する（Ｓ１０）。データ転送回路２３は、データ転送パラメータの更新を要求する必要が生じた際に、割り込み信号を生成する。データ転送回路２３は、生成した割り込み信号をプロセッサコア１０内のプロセッサコア割り込み制御回路１２に供給する（Ｓ１１）。
【００５６】
割り込み信号が供給されたプロセッサコア割り込み制御回路１２は、プログラム制御回路１１から現在のプロセッサコアのステータスを受け取る。プロセッサコアのステータスがコプロセッサ命令の実行中を示すものである場合、プロセッサコア割り込み制御回路１２は、コプロセッサ割り込み制御回路２４に対して処理キャンセル要求信号を供給する（Ｓ１２）。
【００５７】
処理キャンセル要求信号を受け取ったコプロセッサ割り込み制御回路２４は、コプロセッサ演算制御回路２１から現在のコプロセッサ２０の処理ステータスを受け取る。コプロセッサ演算制御回路２１は、この処理ステータスから現在実行中のコプロセッサ命令をキャンセルするか、キャンセルできないか（すなわち、保留するか）を決定する（Ｓ１３）。
【００５８】
現在実行中のコプロセッサ命令をキャンセルできる場合（Ｓ１３：Ｙｅｓ）、コプロセッサ割り込み制御回路２４は、コプロセッサ演算制御回路２１に対してコプロセッサ命令の実行のキャンセルを指示する（Ｓ１４）。これと同時に、コプロセッサ割り込み制御回路２４は、キャンセルができたことを示す処理キャンセル判定信号をプロセッサコア割り込み制御回路１２に供給する。
【００５９】
一方、現在実行中のコプロセッサ命令をキャンセルできない場合（Ｓ１３：Ｎｏ）、コプロセッサ割り込み制御回路２４は、コプロセッサ演算制御回路２１に対してコプロセッサ命令の実行の保留を指示する（Ｓ１５）。さらに、コプロセッサ割り込み制御回路２４は、コプロセッサ命令の実行状態を保留状態保存レジスタ２４３に格納する（Ｓ１６）。これと同時に、コプロセッサ割り込み制御回路２４は、コプロセッサ命令を保留したことを示す処理キャンセル判定信号をプロセッサコア割り込み制御回路１２に供給する。
【００６０】
処理キャンセル判定信号を受け取ったプロセッサコア割り込み制御回路１２は、当該判定の内容を保存する。そして、プロセッサコア割り込み制御回路１２は、プログラム制御回路１１に対して割り込み処理の開始を通知する。プログラム制御回路１１は、割り込み処理の実行を開始する（Ｓ１７）。すなわち、プログラム制御回路１１は、コプロセッサ演算制御回路２１に対して割り込み処理を通知する。コプロセッサ演算制御回路２１は、受け取った割り込み処理をデータ転送回路２３に通知する。これにより、割り込み処理内において、データ転送パラメータ２３１が設定される。
【００６１】
割り込み処理が終了すると、コプロセッサ演算制御回路２１は、プログラム制御回路１１に対するウェイト信号の供給を中止する。プログラム制御回路１１は、プロセッサコア割り込み制御回路１２に割り込み処理の終了を通知する。この後、プロセッサコア割り込み制御回路１２は、コプロセッサ命令がキャンセルされていたか、保留されていたかを判定する（Ｓ１８）。コプロセッサ命令がキャンセルされていた場合（Ｓ１８：Ｙｅｓ）、プロセッサコア割り込み制御回路１２は、キャンセルされたコプロセッサ命令の再発行をプログラム制御回路１１を介して行う（Ｓ１９）。コプロセッサ命令が保留されていた場合（Ｓ１８：Ｎｏ）、プロセッサコア割り込み制御回路１２は、保留されたコプロセッサ命令の再開を要求する処理再開要求信号をコプロセッサ割り込み制御回路２４に発行する。
【００６２】
コプロセッサ割り込み制御回路２４が処理再開要求信号を受け取った場合、コプロセッサ割り込み制御回路２４は、保留状態保存レジスタ２４３に格納された実行状態を復元し、保留していたコプロセッサ命令の再開を指示する（Ｓ２０）。
【００６３】
次に、図８及び図３を用いて、一般的な割り込み処理の実行と、本実施の形態にかかるデッドロック回避機構１の処理と、を比較し、本実施の形態にかかるデッドロック回避機構１の効果について説明する。
【００６４】
図８は、一般的な割り込み処理の実行の流れを示している。コプロセッサ命令の実行中に割り込み処理が発行した場合、割り込み処理はコプロセッサ命令の実行終了を待って実行される。割り込み処理の実行により、演算に使用されていたレジスタの値が退避され、データ転送回路２３に転送パラメータ２３１が再設定される。そして、退避していたレジスタの値が復元され、コプロセッサ命令の実行に復帰する。
【００６５】
ここで、データ転送パラメータ２３１を再設定した後でなければコプロセッサ命令の実行を終了できない場合、割り込み処理を実行することができない。すなわち、デッドロック状態に陥る可能性がある。
【００６６】
図３は、本実施の形態にかかるデッドロック回避機構１の処理を示す。本実施の形態にかかるデッドロック回避機構１は、コプロセッサ命令の実行中に割り込み処理が発行された場合、コプロセッサ命令をキャンセルまたは保留する。この後、即座に割り込み処理が実行される。コプロセッサ命令を保留する場合には、処理ステータスは、保留状態保存レジスタ２４３に退避される。そして、データ転送パラメータ２３１が再設定される。その後、コプロセッサ命令が、保留状態保存レジスタ２４３に退避したデータを用いて再開される。
【００６７】
このように、コプロセッサ命令の実行が終了する前に、即時に割り込み処理が実行できる。これにより、デッドロックを回避することができる。
【００６８】
コプロセッサ命令を保留にする場合、デッドロック回避機構１は、コプロセッサ命令の実行状態を退避、換言すると保留状態保存レジスタ２４３に書き込む。デッドロック回避機構１は、当該退避した実行状態を復元してコプロセッサ命令を再開する。すなわち、デッドロック回避機構１は、保留とした際の実行状態からコプロセッサ命令を再開することができる。これにより、コプロセッサの内部でのリソース不整合を回避できる。コプロセッサ命令のキャンセル時には、リソース不整合は生じない。
【００６９】
さらに、図１を参照して説明したように、キャンセルしたコプロセッサ命令を再発行することにより、デッドロック回避機構１は、一度発行したコプロセッサ命令を確実に実行することができる。
【００７０】
上述の例で示したように、デッドロック回避機構１は、データメモリ３０やレジスタに値の書き込みを行ったか否かに応じてコプロセッサ命令をキャンセルするか否かを判定する。これにより、コプロセッサ命令のキャンセルによって、不正な中間値がデータメモリ３０やレジスタに残存することを防止できる。
【００７１】
ここで、本発明の概略図を図４に示し、本発明の構成について改めて説明する。プロセッサコア１０は、プログラム制御回路１１と、プロセッサコア割り込み制御回路１２と、を備える。コプロセッサ２０は、コプロセッサ演算制御回路２１と、コプロセッサ割り込み制御回路２４と、を備える。
【００７２】
プロセッサコア割り込み制御回路１２は、コプロセッサ２０において実行中のコプロセッサ命令のキャンセルを要求する処理キャンセル要求信号を発行する。プログラム制御回路１１は、キャンセル要求発行後に割り込み処理を発行する。コプロセッサ演算制御回路２１は、コプロセッサ命令の実行状態を保持する。コプロセッサ割り込み制御回路２４は、処理キャンセル要求信号を受け付けた際に、コプロセッサ演算制御回路２１が保持する実行状態情報に基づいてコプロセッサ命令をキャンセルまたは保留を行う。コプロセッサ割り込み制御回路２４は、コプロセッサ命令を保留する場合にはコプロセッサ命令の実行状態を退避し、割り込み処理の終了後に退避していたコプロセッサ命令の実行状態を復元する。
【００７３】
図４の構成でも、コプロセッサ命令をキャンセルまたは保留した後に割り込み処理を速やかに実行できる。保留を行う場合、コプロセッサ２０は、コプロセッサ命令の実行状態を退避し、割り込み処理の終了後に退避したコプロセッサ命令の実行状態を復元する。これにより、割り込み処理を即時に実行できるとともに、リソース不整合の問題を回避できる。
【００７４】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、上述の例では、１つのコプロセッサを備える構成について説明したが、複数のコプロセッサを備える半導体装置にも本発明を適応することができる。また、上述の例では、割り込み処理によりデータ転送パラメータを設定することについて説明したが、割り込み処理により他の処理を行う場合にも本発明を適応することができる。
【産業上の利用可能性】
【００７５】
本発明の活用例として、携帯電話端末やＡＶ機器に用いられる信号処理用のＬＳＩが挙げられる。【００７６】
この出願は、２０１１年３月４日に出願された日本出願特願２０１１−０４７９０７を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【００７７】
１  デッドロック回避機構
１０  プロセッサコア
１１  プログラム制御回路
１２  プロセッサコア割り込み制御回路
２０  コプロセッサ
２１  コプロセッサ演算制御回路
２２  コプロセッサ演算器
２３  データ転送回路
２３１  データ転送パラメータ
２４  コプロセッサ割り込み制御回路
２４１  制御回路
２４２  キャンセル判定回路
２４３  保留状態保存レジスタ
３０  データメモリ
【図１】
2012120573.tif 000003
【図２】
2012120573.tif 000004
【図３】
2012120573.tif 000005
【図４】
2012120573.tif 000006
【図５】
2012120573.tif 000007
【図６】
2012120573.tif 000008
【図７】
2012120573.tif 000009
【図８】
2012120573.tif 000010
【図９】
2012120573.tif 000011
【図１０】
2012120573.tif 000012
【国際調査報告】
2012120573.tif 000013
2012120573.tif 000014