JPWO2012120573A1 - デッドロック回避方法、デッドロック回避機構 - Google Patents

デッドロック回避方法、デッドロック回避機構 Download PDF

Info

Publication number
JPWO2012120573A1
JPWO2012120573A1 JP2013503234A JP2013503234A JPWO2012120573A1 JP WO2012120573 A1 JPWO2012120573 A1 JP WO2012120573A1 JP 2013503234 A JP2013503234 A JP 2013503234A JP 2013503234 A JP2013503234 A JP 2013503234A JP WO2012120573 A1 JPWO2012120573 A1 JP WO2012120573A1
Authority
JP
Japan
Prior art keywords
coprocessor
control circuit
instruction
interrupt
coprocessor instruction
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.)
Granted
Application number
JP2013503234A
Other languages
English (en)
Other versions
JP5870994B2 (ja
Inventor
裕之 井倉
裕之 井倉
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2013503234A priority Critical patent/JP5870994B2/ja
Publication of JPWO2012120573A1 publication Critical patent/JPWO2012120573A1/ja
Application granted granted Critical
Publication of JP5870994B2 publication Critical patent/JP5870994B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance

Abstract

プロセッサコア割り込み制御回路12は、コプロセッサ20において実行中のコプロセッサ命令のキャンセルを要求する要求信号を発行する。プログラム制御回路11は、キャンセル要求発行後に割り込み処理を発行する。コプロセッサ演算制御回路21は、コプロセッサ命令の実行状態を保持する。コプロセッサ割り込み制御回路24は、処理キャンセル要求信号を受けた際に、コプロセッサ演算制御回路21が保持する実行状態情報に基づいてコプロセッサ命令のキャンセルまたは保留を行う。コプロセッサ割り込み制御回路24は、保留する場合にはコプロセッサ命令の実行状態を退避し、割り込み処理の終了後に退避していたコプロセッサ命令の実行状態を復元する。

Description

本発明は、デッドロック回避方法、デッドロック回避機構に関する。
近年、処理の柔軟性向上のため、専用ハードウェアに代わり、組み込み用プロセッサコアに専用のコプロセッサを接続して信号処理を行うLSI(Large Scale Integration)が増加している。
プロセッサコアとコプロセッサが接続するLSIでは、図5に示すようにコプロセッサ20とデータメモリ30とが直接接続されうる。コプロセッサ20は、データメモリ30に対してデータの読み書きを直接行う。これにより、プロセッサコア10のデータトラフィックを削減し、性能を向上できる。
例えば、特許文献1には、コプロセッサとデータメモリ間で直接データを転送する構成が開示されている。
コプロセッサと、データメモリ等と、のデータやり取りに必要となるアドレスを生成する手法には、例えば以下の方法がある。
(1−1)コプロセッサ内のデータ転送回路が自動的にアドレスを生成する方法
(1−2)コプロセッサに対して発行する命令(以下、コプロセッサ命令とする)に直接アドレス値を埋め込む方法
(1−3)コプロセッサ命令にアドレス値の更新パラメータを埋め込む方法
(1−4)プロセッサコアからアドレスを適宜供給する方法
上記した方法のうち、"(1−1)コプロセッサ内のデータ転送回路が自動的にアドレスを生成する方法"は、処理効率が高く、かつ制御プログラムの効率も高い。以下、図6を参照してこの方法を採用したLSI内のコプロセッサについて説明する。コプロセッサ20内のデータ転送回路23は、データ転送パラメータ231を用いて自動的にアドレスを生成する。データ転送回路23は、生成したアドレスを用いてデータメモリ30からデータを読み出す。データ転送回路23は、読み出したデータを、データ入力FIFO(First In First Out)25を介して演算器に書き込む。演算器22は、入力されたデータを用いた演算を行い、演算結果をデータ出力FIFO26、データ転送回路23に書き込む。
データ転送回路23内で自動的にアドレスを生成する場合、データ転送回路23に対してアドレス生成用のパラメータ(データ転送パラメータ)が設定され、その後に一連のコプロセッサ命令が発行される。このコプロセッサ命令の発行と同期して、データ転送回路23はデータ転送パラメータ231を用いてアドレスを生成する。アドレス生成の後に、データ転送回路23は、データメモリ30へのデータ書き込みまたはデータ読み出しを行う。上述の動作を行うように、LSIの各構成は実装される。
コプロセッサ20内のデータ転送回路23がアドレスを生成する場合、生成するアドレスの複雑さにより、データ転送回路23に対して複数回のデータ転送パラメータ設定が必要となる場合がある。生成するアドレスが変動せず、単純である場合、一回だけデータ転送パラメータの設定を行えばよい。しかし、例えばコプロセッサ命令の実行途中に不規則にアドレスが変更される場合、コプロセッサ命令の実行中にデータ転送パラメータの再設定が必要となる。
データ転送パラメータの再設定の方法は、例えば以下の方法がある。
(2−1)コプロセッサ命令に含まれる各処理を繰り返し実行し、アドレス変更が必要となるタイミングにおいて繰り返し処理を中断し、データ転送パラメータを設定する方法
(2−2)アドレスを変更するタイミングにおいてコプロセッサに対する割り込みを発生させ、割り込み処理内においてデータ転送パラメータを設定する方法
上述の(2−1)の方法を図7を参照して説明する。図示するように、コプロセッサは、コプロセッサ命令を繰り返し実行する(ループ処理、S22)。アドレスが変更されるタイミングにおいて、外部からデータ転送パラメータが設定される(S21)。この方法を採用する場合、アドレス変更のタイミングを考慮して制御プログラムを生成する必要がある。このため、コプロセッサ命令の実行途中に不規則にアドレスが変更する場合、制御プログラムが複雑になるという問題がある。
続いて、(2−2)の方法を図8、及び図9を参照して説明する。まず、図8を参照してコプロセッサに対して割り込み処理の実行を行う場合の一般的な動作について説明する。
コプロセッサ命令の実行中にコプロセッサに対する割り込み処理を行う場合、コプロセッサ命令の終了前にこの割り込み処理が実行されると、コプロセッサ内部のリソース不整合等の問題が生じ得る。そのため、図8に示すように、コプロセッサ命令が終了するまで、割り込み処理は保留される。
例えば、特許文献2では、ベクトル命令の処理中に外部割り込みが発生した場合、そのベクトル命令の処理が終了するまで外部割り込みの処理を保留する技術が開示されている。これにより、ベクトル命令の演算結果が不正値になることを防止している。
続いて、図9を参照して、(2−2)の方法について説明する。図示するように、アドレス生成用のパラメータを再設定する必要があるタイミングで割り込みを発生させる(S43)。これにより、LSIの制御プログラムを簡略化することができる。
しかし、この方法では、デッドロックが生じ得るという問題がある。当該問題を図10を参照して説明する。図8を参照して説明したように、一般にリソースの不整合を回避するために、割り込み処理はコプロセッサ命令の終了を待ってから実行される。このため、割り込み処理は、コプロセッサ命令の終了まで実行されない(S51)。一方、割り込み処理が実行されないため、データ転送回路のパラメータ設定は実行されない(S52)。パラメータ設定が実行されないために、実行中のコプロセッサ命令によるデータ取得(データメモリへのアクセス)が実行できない(S53)。このため、コプロセッサ命令が終了しない(S54)。このように、デッドロック状態が生じてしまう。
特許文献3には、ストリームデータを行う際に、バッファにデータが保持されるまで待ち続けてしまうことによるデッドロックを解消するための技術が開示されている。本技術では、タイムアウトが発生した場合、ストリームデータを保持するFIFOバッファに対してダミーデータを挿入することによりデッドロックを回避している。すなわち、一定時間毎に処理を強制的に実行する構成が開示されている。
特表2002−503370号公報 特開2005−092467号公報 特開2009−271610号公報
特許文献3の技術では、タイムアウト発生後、すなわち一定の待ち時間の後に処理を継続させることによりデッドロックを回避している。一定の待ち時間が生じるため、特許文献3の技術では迅速に処理を実行することができない。
そこで本発明は、主に上述の(1−1)、(2−2)のような状況を対象とする。すなわち、本発明は、コプロセッサ命令の実行中に、割り込み処理によってコプロセッサに対して処理を行う状況を対象とする。上述のように、割り込み処理は、コプロセッサ内でのリソース不整合を回避するため、コプロセッサ命令が終了するまで実行されない。そのため、一般的なLSIの構成では、コプロセッサに対して処理を行う(上述の例ではアドレス生成用のパラメータを設定する)際にデッドロックが生じ得る。
本発明は上記の問題に対してなされたものであり、コプロセッサ命令の実行中に割り込み処理によってコプロセッサに対して処理を行うプロセッサシステムにおいて、デッドロックを回避することを主たる目的とする。
本発明にかかるデッドロック回避方法の一態様は、プロセッサコアから、コプロセッサにおいて実行中のコプロセッサ命令のキャンセルを要求するキャンセル要求を発行し、前記キャンセル要求を受信した前記コプロセッサにおいて、実行中の前記コプロセッサ命令の実行状態を判定し、当該判定に応じて前記コプロセッサ命令をキャンセルまたは保留にするとともに、保留にする際に前記コプロセッサ命令の実行状態を退避し、前記コプロセッサ命令に対する処理を行う割り込み処理を実行し、当該処理の終了後に退避していた前記コプロセッサ命令の実行状態を復元する、ものである。
本発明にかかるデッドロック回避機構の一態様は、プロセッサコアと、コプロセッサと、を備え、前記プロセッサコアは、前記コプロセッサにおいて実行中のコプロセッサ命令のキャンセルを要求するキャンセル要求を発行するプロセッサコア割り込み制御回路と、前記キャンセル要求発行後に前記コプロセッサに対する処理を行う割り込み処理を開始するプログラム制御回路と、を備え、前記コプロセッサは、前記コプロセッサ命令の実行状態を保持するコプロセッサ演算制御回路と、前記キャンセル要求を受け付けた際に、前記コプロセッサ演算制御回路が保持する情報に基づいて前記コプロセッサ命令をキャンセルまたは保留し、保留する場合に前記コプロセッサ命令の実行状態を退避し、前記割り込み処理の終了後に退避していた前記コプロセッサ命令の実行状態を復元するコプロセッサ割り込み制御回路と、を備える、ものである。
本発明によれば、コプロセッサ命令の実行中に割り込み処理によってコプロセッサに対して処理を行うプロセッサシステムにおいて、デッドロックを回避することができるデッドロック回避方法及びデッドロック回避機構を提供することができる。
実施の形態1にかかるデッドロック回避機構の構成を示すブロック図である。 実施の形態1にかかるコプロセッサ割り込み制御回路24の構成を示すブロック図である。 実施の形態1にかかるデッドロック回避機構の処理を示すフローチャートである。 実施の形態1にかかるデッドロック回避機構の構成を示すブロック図である。 一般的なLSIの構成を示すブロック図である。 一般的なコプロセッサの構成を示すブロック図である。 データ転送パラメータの設定を全てメイン処理で行う場合の処理の流れを示すフローチャートである。 コプロセッサに対して割り込み処理を行う場合の動作を示すフローチャートである。 データ転送パラメータの設定を割り込み処理で行う場合の処理の流れを示すフローチャートである。 デッドロックの発生を示す概念図である。
<実施の形態1>
以下、図面を参照して本発明の実施の形態について説明する。本実施の形態にかかるデッドロック回避機構1は、プロセッサコア10と、コプロセッサ20と、データメモリ30と、を備える。デッドロック回避機構1は、携帯電話端末やAV(オーディオビジュアル)機器に用いられる信号処理用のLSI(Large Scale Integration)等に組みこまれる。
プロセッサコア10は、プログラム制御回路11と、プロセッサコア割り込み制御回路12と、を備える。
プログラム制御回路11は、コプロセッサ20に対してコプロセッサ命令、または割り込み処理をコプロセッサ演算制御信号として発行する。プログラム制御回路11は、コプロセッサ演算制御回路21からのウェイト信号の供給がない場合に、当該発行が可能である。コプロセッサ命令とは、一般に複数のサイクルを持つ命令である。割り込み処理とは、本実施の形態ではデータ転送パラメータ231を再設定する処理である。
プログラム制御回路11は、コプロセッサ命令(コプロセッサ20に対する命令)を実行中であるか、実行中ではないか、を示すステータスを保持する。なお、プログラム制御回路11は、上記の2種類のステータスに限らず、様々なステータスを保持可能である。プログラム制御回路11は、プロセッサコア割り込み制御回路12からの問い合わせに応じて、プロセッサコア割り込み制御回路12に対して保持しているステータスを通知する。
プログラム制御回路11は、プロセッサコア割り込み制御回路12から割り込み処理の開始を通知された場合に、データ転送パラメータ231を再設定するための割り込み処理の処理内容をコプロセッサ演算制御回路21に通知する。
プロセッサコア割り込み制御回路12は、データ転送パラメータ231を再設定する必要が生じた場合に、プログラム制御回路11に現在のステータス、すなわち、コプロセッサ命令を実行中であるか否かを問い合わせる。データ転送パラメータ231は、例えばデータ転送回路23から割り込み信号が供給された際に再設定される。データ転送パラメータ231の詳細は後述する。コプロセッサ命令が実行中である場合、プロセッサコア割り込み制御回路12は、コプロセッサ割り込み制御回路24に対して処理キャンセル要求信号を供給する。
プロセッサコア割り込み制御回路12は、処理キャンセル要求信号の応答として、コプロセッサ割り込み制御回路24から処理キャンセル判定信号を受け取る。処理キャンセル判定信号とは、コプロセッサ命令を保留したか、コプロセッサ命令をキャンセルしたか、のいずれかを示す判定信号である。プロセッサコア割り込み制御回路12は、受け取った判定信号を保存する。そして、プロセッサコア割り込み制御回路12は、プログラム制御回路11に対して割り込み処理の開始を通知する。
プロセッサコア割り込み制御回路12は、割り込み処理が終了した後に、コプロセッサ命令の再開指示、またはコプロセッサ命令の再発行を行う。保存した判定信号が保留に関するものである場合、プロセッサコア割り込み制御回路12は、処理再開要求信号をプロセッサ割り込み制御回路24に供給する。保存した判定信号がキャンセルに関するものである場合、プロセッサコア割り込み制御回路12は、プログラム制御回路11を介してキャンセルされたコプロセッサ命令を再発行する。
なお、プログラム制御回路11は、必ずしもキャンセルされたコプロセッサ命令を再発行する必要はなく、保持するステータスに応じて再発行を行うか否かを決定しても良い。
コプロセッサ20は、コプロセッサ演算制御回路21と、コプロセッサ演算器22と、データ転送回路23と、コプロセッサ割り込み制御回路24と、を備える。
コプロセッサ演算制御回路21は、コプロセッサ命令を実行中である場合にウェイト信号をプログラム制御回路11に供給する。コプロセッサ演算制御回路21は、コプロセッサ命令に含まれる各サイクルの処理をコプロセッサ演算器22に実行させる。
さらに、コプロセッサ演算制御回路21は、割り込み処理が通知された場合に、データ転送回路23に当該割り込み処理の処理内容を通知し、データ転送パラメータ231を再設定させる。コプロセッサ演算制御回路21は、割り込み処理の実行中にもウェイト信号をプログラム制御回路11に供給する。
コプロセッサ演算制御回路21は、コプロセッサ命令の実行中に、当該実行状況をステータス(以下、処理ステータスとも記載する。)として保持する。処理ステータスには、現在実行中のステップ数、外部の記憶部(データメモリ30または任意のレジスタ(不図示))にデータ書き込みを行ったか否か、書き込みを行った記憶部のアドレス情報と書き込んだ値とを対にした情報、等の情報が含まれる。
コプロセッサ演算制御回路21は、コプロセッサ割り込み制御回路24からの問い合わせに応じて、コプロセッサ割り込み制御回路24に処理ステータスの情報を含む処理ステータス信号を供給する。
コプロセッサ演算制御回路21は、コプロセッサ割り込み制御回路24から処理保留信号または処理キャンセル信号が入力された場合、現在実行中のコプロセッサ命令を終了する。コプロセッサ演算制御回路21は、コプロセッサ割り込み制御回路24から処理再開信号及び処理再開ステータス信号を受け取った場合、処理再開ステータス信号に応じた実行状況からコプロセッサ命令を再開する。
コプロセッサ演算器22は、コプロセッサ命令の各サイクルを実行する演算器である。コプロセッサ演算器22は、データメモリ30にアクセスする必要がある場合に、データ転送回路23を介してデータの読み出し、書き込みを行う。
データ転送回路23は、コプロセッサ演算器22の要求に応じて、データメモリ30へのアクセスを行う。データ転送回路23は、データメモリ30へのアクセスに必要となるアドレスを、データ転送パラメータ231を用いて生成する。
データ転送パラメータ231は、データメモリ30にアクセスするアドレスを生成する際に利用されるパラメータである。データ転送パラメータ231には、アドレス初期値、転送上限数、アドレス差分等の情報が含まれる。
アドレス初期値は、データメモリ30にアクセスする際の初期値を示す情報である。転送上限数は、データメモリ30に対する転送(データの読み出し、または書き込み)の最大数である。当該最大数回のデータ転送を行った場合、データ転送パラメータ231は再設定をされる必要がある。アドレス差分とは、直近にアクセスしたアドレスから次にアクセスするアドレスの差分である。
データ転送回路23は、データ転送パラメータ231の再設定の必要が生じた場合に、割り込み信号をプロセッサコア割り込み制御回路12に供給する。
コプロセッサ割り込み制御回路24は、割り込み処理の制御を行う。コプロセッサ割り込み制御回路24の構成及び動作の詳細を図2を参照して説明する。
コプロセッサ割り込み制御回路24は、制御回路241と、キャンセル判定回路242と、保留状態保存レジスタ243と、を備える。
制御回路241は、処理キャンセル要求信号が入力された場合に、キャンセル判定回路242に対してキャンセル判定の開始を指示する。制御回路241には、キャンセル判定回路242から処理キャンセル判定信号が供給される。
制御回路241は、処理キャンセル判定信号の値を参照して制御信号(処理保留信号、処理キャンセル信号)を生成し、生成した制御信号をコプロセッサ演算制御回路21に供給する。
処理キャンセル判定信号が保留を示すもの(現在実行中のコプロセッサ命令は保留すべきと判定するもの)である場合、制御回路241は、実行中のコプロセッサ命令の保留を指示する処理保留信号を生成し、処理保留信号をコプロセッサ演算制御回路21に供給する。これとともに、制御回路241は、キャンセル判定回路242から入力された処理ステータス信号の各値(例えば実行中のサイクル番号、演算の一時値、レジスタに書き込んだ値と書き込み先等)を保留状態保存レジスタ243に書き込む。
処理キャンセル判定信号がキャンセルを示すもの(現在実行中のコプロセッサ命令がキャンセルできると判定するもの)である場合、制御回路241は、実行中のコプロセッサ命令のキャンセルを指示する処理キャンセル信号を生成し、処理キャンセル信号をコプロセッサ演算制御回路21に供給する。
制御回路241には、プロセッサコア割り込み制御回路12から処理再開要求信号が入力される。これに応じて、制御回路241は、処理再開信号をコプロセッサ演算制御回路21に供給する。これとともに制御回路241は、保留状態保存レジスタ243の値を読み出し、読み出した値を再開用ステータス信号としてコプロセッサ演算制御回路21に供給する。これにより、制御回路241は、コプロセッサ命令の実行状態を復元する。
キャンセル判定回路242は、制御回路241からのキャンセル判定の開始指示に応じて、現在実行中のコプロセッサ命令をキャンセルできるか、それとも保留にすべきか、を判定する。キャンセル判定回路242は、コプロセッサ演算制御回路21から供給される処理ステータス信号に応じて、当該判定を行う。前述のように、処理ステータスには、現在実行中のステップ数、記憶部(データメモリ30または任意のレジスタ)にデータ書き込みを行ったか否か、等の情報が含まれる。キャンセル判定回路242は、例えばすでに外部にデータを書き込んでいるか否かに応じて当該判定を行う。キャンセル判定回路242は、実行済みのサイクルにおいて、記憶部に値を書き込んでいた場合、現在実行中のコプロセッサ命令を保留すべきと判定する。キャンセル判定回路242は、判定結果を処理キャンセル判定信号として、制御回路241及びプロセッサコア割り込み制御回路22に供給する。さらに、キャンセル判定回路242は、処理ステータス信号を制御回路241に供給する。
保留状態保存レジスタ243は、保留されたコプロセッサ命令を再開する際に使用するパラメータを保存する。
続いて、本実施の形態にかかるデッドロック回避機構1の動作について図1及び図3を参照して説明する。図3は、デッドロック回避機構1における割り込み信号生成から割り込み処理の終了までの処理の流れを示すフローチャートである。
コプロセッサ演算制御回路21は、コプロセッサ命令の実行を制御する(S10)。データ転送回路23は、データ転送パラメータの更新を要求する必要が生じた際に、割り込み信号を生成する。データ転送回路23は、生成した割り込み信号をプロセッサコア10内のプロセッサコア割り込み制御回路12に供給する(S11)。
割り込み信号が供給されたプロセッサコア割り込み制御回路12は、プログラム制御回路11から現在のプロセッサコアのステータスを受け取る。プロセッサコアのステータスがコプロセッサ命令の実行中を示すものである場合、プロセッサコア割り込み制御回路12は、コプロセッサ割り込み制御回路24に対して処理キャンセル要求信号を供給する(S12)。
処理キャンセル要求信号を受け取ったコプロセッサ割り込み制御回路24は、コプロセッサ演算制御回路21から現在のコプロセッサ20の処理ステータスを受け取る。コプロセッサ演算制御回路21は、この処理ステータスから現在実行中のコプロセッサ命令をキャンセルするか、キャンセルできないか(すなわち、保留するか)を決定する(S13)。
現在実行中のコプロセッサ命令をキャンセルできる場合(S13:Yes)、コプロセッサ割り込み制御回路24は、コプロセッサ演算制御回路21に対してコプロセッサ命令の実行のキャンセルを指示する(S14)。これと同時に、コプロセッサ割り込み制御回路24は、キャンセルができたことを示す処理キャンセル判定信号をプロセッサコア割り込み制御回路12に供給する。
一方、現在実行中のコプロセッサ命令をキャンセルできない場合(S13:No)、コプロセッサ割り込み制御回路24は、コプロセッサ演算制御回路21に対してコプロセッサ命令の実行の保留を指示する(S15)。さらに、コプロセッサ割り込み制御回路24は、コプロセッサ命令の実行状態を保留状態保存レジスタ243に格納する(S16)。これと同時に、コプロセッサ割り込み制御回路24は、コプロセッサ命令を保留したことを示す処理キャンセル判定信号をプロセッサコア割り込み制御回路12に供給する。
処理キャンセル判定信号を受け取ったプロセッサコア割り込み制御回路12は、当該判定の内容を保存する。そして、プロセッサコア割り込み制御回路12は、プログラム制御回路11に対して割り込み処理の開始を通知する。プログラム制御回路11は、割り込み処理の実行を開始する(S17)。すなわち、プログラム制御回路11は、コプロセッサ演算制御回路21に対して割り込み処理を通知する。コプロセッサ演算制御回路21は、受け取った割り込み処理をデータ転送回路23に通知する。これにより、割り込み処理内において、データ転送パラメータ231が設定される。
割り込み処理が終了すると、コプロセッサ演算制御回路21は、プログラム制御回路11に対するウェイト信号の供給を中止する。プログラム制御回路11は、プロセッサコア割り込み制御回路12に割り込み処理の終了を通知する。この後、プロセッサコア割り込み制御回路12は、コプロセッサ命令がキャンセルされていたか、保留されていたかを判定する(S18)。コプロセッサ命令がキャンセルされていた場合(S18:Yes)、プロセッサコア割り込み制御回路12は、キャンセルされたコプロセッサ命令の再発行をプログラム制御回路11を介して行う(S19)。コプロセッサ命令が保留されていた場合(S18:No)、プロセッサコア割り込み制御回路12は、保留されたコプロセッサ命令の再開を要求する処理再開要求信号をコプロセッサ割り込み制御回路24に発行する。
コプロセッサ割り込み制御回路24が処理再開要求信号を受け取った場合、コプロセッサ割り込み制御回路24は、保留状態保存レジスタ243に格納された実行状態を復元し、保留していたコプロセッサ命令の再開を指示する(S20)。
次に、図8及び図3を用いて、一般的な割り込み処理の実行と、本実施の形態にかかるデッドロック回避機構1の処理と、を比較し、本実施の形態にかかるデッドロック回避機構1の効果について説明する。
図8は、一般的な割り込み処理の実行の流れを示している。コプロセッサ命令の実行中に割り込み処理が発行した場合、割り込み処理はコプロセッサ命令の実行終了を待って実行される。割り込み処理の実行により、演算に使用されていたレジスタの値が退避され、データ転送回路23に転送パラメータ231が再設定される。そして、退避していたレジスタの値が復元され、コプロセッサ命令の実行に復帰する。
ここで、データ転送パラメータ231を再設定した後でなければコプロセッサ命令の実行を終了できない場合、割り込み処理を実行することができない。すなわち、デッドロック状態に陥る可能性がある。
図3は、本実施の形態にかかるデッドロック回避機構1の処理を示す。本実施の形態にかかるデッドロック回避機構1は、コプロセッサ命令の実行中に割り込み処理が発行された場合、コプロセッサ命令をキャンセルまたは保留する。この後、即座に割り込み処理が実行される。コプロセッサ命令を保留する場合には、処理ステータスは、保留状態保存レジスタ243に退避される。そして、データ転送パラメータ231が再設定される。その後、コプロセッサ命令が、保留状態保存レジスタ243に退避したデータを用いて再開される。
このように、コプロセッサ命令の実行が終了する前に、即時に割り込み処理が実行できる。これにより、デッドロックを回避することができる。
コプロセッサ命令を保留にする場合、デッドロック回避機構1は、コプロセッサ命令の実行状態を退避、換言すると保留状態保存レジスタ243に書き込む。デッドロック回避機構1は、当該退避した実行状態を復元してコプロセッサ命令を再開する。すなわち、デッドロック回避機構1は、保留とした際の実行状態からコプロセッサ命令を再開することができる。これにより、コプロセッサの内部でのリソース不整合を回避できる。コプロセッサ命令のキャンセル時には、リソース不整合は生じない。
さらに、図1を参照して説明したように、キャンセルしたコプロセッサ命令を再発行することにより、デッドロック回避機構1は、一度発行したコプロセッサ命令を確実に実行することができる。
上述の例で示したように、デッドロック回避機構1は、データメモリ30やレジスタに値の書き込みを行ったか否かに応じてコプロセッサ命令をキャンセルするか否かを判定する。これにより、コプロセッサ命令のキャンセルによって、不正な中間値がデータメモリ30やレジスタに残存することを防止できる。
ここで、本発明の概略図を図4に示し、本発明の構成について改めて説明する。プロセッサコア10は、プログラム制御回路11と、プロセッサコア割り込み制御回路12と、を備える。コプロセッサ20は、コプロセッサ演算制御回路21と、コプロセッサ割り込み制御回路24と、を備える。
プロセッサコア割り込み制御回路12は、コプロセッサ20において実行中のコプロセッサ命令のキャンセルを要求する処理キャンセル要求信号を発行する。プログラム制御回路11は、キャンセル要求発行後に割り込み処理を発行する。コプロセッサ演算制御回路21は、コプロセッサ命令の実行状態を保持する。コプロセッサ割り込み制御回路24は、処理キャンセル要求信号を受け付けた際に、コプロセッサ演算制御回路21が保持する実行状態情報に基づいてコプロセッサ命令をキャンセルまたは保留を行う。コプロセッサ割り込み制御回路24は、コプロセッサ命令を保留する場合にはコプロセッサ命令の実行状態を退避し、割り込み処理の終了後に退避していたコプロセッサ命令の実行状態を復元する。
図4の構成でも、コプロセッサ命令をキャンセルまたは保留した後に割り込み処理を速やかに実行できる。保留を行う場合、コプロセッサ20は、コプロセッサ命令の実行状態を退避し、割り込み処理の終了後に退避したコプロセッサ命令の実行状態を復元する。これにより、割り込み処理を即時に実行できるとともに、リソース不整合の問題を回避できる。
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、上述の例では、1つのコプロセッサを備える構成について説明したが、複数のコプロセッサを備える半導体装置にも本発明を適応することができる。また、上述の例では、割り込み処理によりデータ転送パラメータを設定することについて説明したが、割り込み処理により他の処理を行う場合にも本発明を適応することができる。
本発明の活用例として、携帯電話端末やAV機器に用いられる信号処理用のLSIが挙げられる。
この出願は、2011年3月4日に出願された日本出願特願2011−047907を基礎とする優先権を主張し、その開示の全てをここに取り込む。
1 デッドロック回避機構
10 プロセッサコア
11 プログラム制御回路
12 プロセッサコア割り込み制御回路
20 コプロセッサ
21 コプロセッサ演算制御回路
22 コプロセッサ演算器
23 データ転送回路
231 データ転送パラメータ
24 コプロセッサ割り込み制御回路
241 制御回路
242 キャンセル判定回路
243 保留状態保存レジスタ
30 データメモリ

Claims (9)

  1. プロセッサコアから、コプロセッサにおいて実行中のコプロセッサ命令のキャンセルを要求するキャンセル要求を発行し、
    前記キャンセル要求を受信した前記コプロセッサにおいて、実行中の前記コプロセッサ命令の実行状態を判定し、当該判定に応じて前記コプロセッサ命令をキャンセルまたは保留にするとともに、保留にする際に前記コプロセッサ命令の実行状態を退避し、その後に前記コプロセッサ命令に対する処理を行う割り込み処理を実行し、当該処理の終了後に退避していた前記コプロセッサ命令の実行状態を復元する、デッドロック回避方法。
  2. 前記プロセッサコアは、前記キャンセルがなされた前記コプロセッサ命令を前記割り込み命令の終了後に再実行する請求項1に記載のデッドロック回避方法。
  3. 前記コプロセッサは、前記コプロセッサ命令が記憶部へのデータ書き込みを実行した場合には、当該コプロセッサ命令を保留の対象とすることを特徴とする請求項1または請求項2に記載のデッドロック回避方法。
  4. プロセッサコアと、コプロセッサと、を備え、
    前記プロセッサコアは、前記コプロセッサにおいて実行中のコプロセッサ命令のキャンセルを要求するキャンセル要求を発行するプロセッサコア割り込み制御回路と、
    前記キャンセル要求発行後に前記コプロセッサに対する処理を行う割り込み処理を開始するプログラム制御回路と、を備え、
    前記コプロセッサは、前記コプロセッサ命令の実行状態を保持するコプロセッサ演算制御回路と、
    前記キャンセル要求を受け付けた際に、前記コプロセッサ演算制御回路が保持する情報に基づいて前記コプロセッサ命令をキャンセルまたは保留し、保留する場合に前記コプロセッサ命令の実行状態を退避し、前記割り込み処理の終了後に退避していた前記コプロセッサ命令の実行状態を復元するコプロセッサ割り込み制御回路と、を備える、デッドロック回避機構。
  5. 前記プログラム制御回路は、キャンセルされた前記コプロセッサ命令を再発行することを特徴とする請求項4に記載のデッドロック回避機構。
  6. 前記コプロセッサ割り込み制御回路は、前記コプロセッサ命令が記憶部へのデータ書き込みを実行した場合には、当該コプロセッサ命令を保留の対象とすることを特徴とする請求項4または請求項5に記載のデッドロック回避機構。
  7. 前記コプロセッサは、設定されたパラメータからアクセスアドレスを生成して、当該アクセスアドレスを用いてデータメモリにアクセスするデータ転送回路を備え、
    前記割り込み命令は、前記パラメータを設定する処理を含むことを特徴とする請求項4乃至請求項6のいずれか1項に記載のデッドロック回避機構。
  8. 請求項4乃至請求項7のいずれか1項に記載のデッドロック回避機構を備えた半導体集積回路。
  9. 請求項8に記載の半導体集積回路を備えた携帯電話端末またはオーディオビジュアル機器。
JP2013503234A 2011-03-04 2011-10-26 デッドロック回避方法、デッドロック回避機構 Active JP5870994B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013503234A JP5870994B2 (ja) 2011-03-04 2011-10-26 デッドロック回避方法、デッドロック回避機構

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2011047907 2011-03-04
JP2011047907 2011-03-04
PCT/JP2011/006003 WO2012120573A1 (ja) 2011-03-04 2011-10-26 デッドロック回避方法、デッドロック回避機構
JP2013503234A JP5870994B2 (ja) 2011-03-04 2011-10-26 デッドロック回避方法、デッドロック回避機構

Publications (2)

Publication Number Publication Date
JPWO2012120573A1 true JPWO2012120573A1 (ja) 2014-07-07
JP5870994B2 JP5870994B2 (ja) 2016-03-01

Family

ID=46797585

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013503234A Active JP5870994B2 (ja) 2011-03-04 2011-10-26 デッドロック回避方法、デッドロック回避機構

Country Status (3)

Country Link
US (1) US9405549B2 (ja)
JP (1) JP5870994B2 (ja)
WO (1) WO2012120573A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9582287B2 (en) 2012-09-27 2017-02-28 Intel Corporation Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
CN104981814B (zh) * 2013-03-15 2018-08-14 英特尔公司 安全协处理器引导性能
US10831503B2 (en) * 2018-11-06 2020-11-10 International Business Machines Corporation Saving and restoring machine state between multiple executions of an instruction
CN112486424B (zh) * 2019-09-12 2022-10-04 无锡江南计算技术研究所 用户透明的运算核并行打印保序代理方法
CN117112029B (zh) * 2023-10-24 2024-03-12 上海芯联芯智能科技有限公司 一种指令执行方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61233849A (ja) * 1985-04-08 1986-10-18 Hitachi Ltd デ−タベ−ス排他制御方法
JP2002073332A (ja) * 2000-08-25 2002-03-12 Sanyo Electric Co Ltd 演算実行装置及び方法
JP2004234420A (ja) * 2003-01-31 2004-08-19 Mitsubishi Electric Corp 割り込み制御方式及び割り込み制御方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5568644A (en) * 1995-05-05 1996-10-22 Apple Computer, Inc. Method and apparatus using a tree structure for the dispatching of interrupts
US6199152B1 (en) * 1996-08-22 2001-03-06 Transmeta Corporation Translated memory protection apparatus for an advanced microprocessor
GB2326253A (en) 1997-06-10 1998-12-16 Advanced Risc Mach Ltd Coprocessor data access control
US6327476B1 (en) * 1998-06-30 2001-12-04 Conexant Systems, Inc. System and method for wireless voice and computer communications using a wireless link to a public telephone network
GB2392742B (en) * 2002-09-04 2005-10-19 Advanced Risc Mach Ltd Synchronisation between pipelines in a data processing apparatus
US7765388B2 (en) * 2003-09-17 2010-07-27 Broadcom Corporation Interrupt verification support mechanism
JP4063182B2 (ja) 2003-09-16 2008-03-19 セイコーエプソン株式会社 プロセッサおよびその割り込み制御方法
JP2009271610A (ja) 2008-04-30 2009-11-19 Sony Corp バッファ制御回路、バッファ回路およびデータ処理装置
US8595468B2 (en) * 2009-12-17 2013-11-26 International Business Machines Corporation Reverse simultaneous multi-threading

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61233849A (ja) * 1985-04-08 1986-10-18 Hitachi Ltd デ−タベ−ス排他制御方法
JP2002073332A (ja) * 2000-08-25 2002-03-12 Sanyo Electric Co Ltd 演算実行装置及び方法
JP2004234420A (ja) * 2003-01-31 2004-08-19 Mitsubishi Electric Corp 割り込み制御方式及び割り込み制御方法

Also Published As

Publication number Publication date
US9405549B2 (en) 2016-08-02
US20130346732A1 (en) 2013-12-26
JP5870994B2 (ja) 2016-03-01
WO2012120573A1 (ja) 2012-09-13

Similar Documents

Publication Publication Date Title
JP4678623B2 (ja) 非対称型異種混合マルチプロセッサ環境(asymmetric heterogeneous multiprocessor environment)におけるメモリバリア要素(Primitive)
JP5870994B2 (ja) デッドロック回避方法、デッドロック回避機構
WO2009157178A1 (ja) 仮想計算機制御装置、仮想計算機制御プログラム及び仮想計算機制御回路
US9043806B2 (en) Information processing device and task switching method
JP2009187223A (ja) プロセッサ、電子機器、割込み制御方法及び割込み制御プログラム
KR20150129316A (ko) 명령 프로세싱 회로들에서의 리던던트 동기화 베리어들의 제거 및 관련 프로세서 시스템들, 방법들 및 컴퓨터-판독가능 매체
JP2006338538A (ja) ストリームプロセッサ
JP2006351013A (ja) 電子装置において保存/リストア手順を行なうための方法及びシステム
US20110173361A1 (en) Information processing apparatus and exception control circuit
JP2005275538A (ja) ダイレクトメモリアクセス制御装置および方法
WO2009098737A1 (ja) 外部デバイスアクセス装置、その制御方法及びシステムlsi
JP2006146758A (ja) コンピュータシステム
JP6354333B2 (ja) 情報処理装置及びタイマ設定方法
JP5783348B2 (ja) 制御装置、制御プログラム、画像形成装置
JP2004127163A (ja) マルチプロセッサシステム
JP2006172316A (ja) コンテキスト維持方法、情報処理装置及び割り込み発生装置
JP6161395B2 (ja) 演算装置
JPWO2018150524A1 (ja) プロセッサシステム及びマルチプロセッサシステム
JP2014203230A (ja) 計算機システム、計算機システムの割込み処理プログラム及び計算機システムの割込み処理方法
JP6217386B2 (ja) マルチプロセッサ用プログラム生成方法
JP6940283B2 (ja) Dma転送制御装置、dma転送制御方法、及び、dma転送制御プログラム
JP5555514B2 (ja) プロセッサシステム
JP6138482B2 (ja) 組み込みシステム
CN115658601A (zh) 多核处理器系统及其控制方法
JP2006285719A (ja) 情報処理装置および情報処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140911

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20151215

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151228

R150 Certificate of patent or registration of utility model

Ref document number: 5870994

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150