(57)【要約】  複数のコプロセッサにおけるタスクの切り替えに要する時間を短縮することのできる情報処理装置及びタスク切り替え方法を提供すること。本発明にかかる情報処理装置３０は、プロセッサコア３０１と、プロセッサコア３０１からの要求に応じて演算を行う演算部３２１〜３２ｎと演算部３２１〜３２ｎの演算内容を格納する演算記憶部３３１〜３３ｎとを有するコプロセッサ３１１〜３１ｎと、退避した演算内容を格納する退避記憶部３５１〜３５ｎと、コプロセッサ３１１〜３１ｎによって演算を行うタスクを切り替える場合、退避・復元要求信号を出力するタスク切替制御部３０２と、退避・復元要求信号に応じて、演算記憶部３３１〜３３ｎの演算内容の退避記憶部３５１〜３５ｎへの退避、及び、退避記憶部３５１〜３５ｎの演算内容の演算記憶部３３１〜３３ｎへの復元、のうち少なくとも１つを実行する退避・復元部３４１〜３４ｎとを備える。
2011135759.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサコアと、
前記プロセッサコアからの要求に応じて演算を行う演算手段と、前記演算手段の演算内容を格納する演算記憶手段と、を有する複数のコプロセッサと、
前記複数のコプロセッサのそれぞれに対応し、前記演算記憶手段から退避した演算内容を格納する複数の退避記憶手段と、
前記複数のコプロセッサのうち少なくとも１つによって演算されるタスクを、第１のタスクから第２のタスクに切り替える場合に、前記演算内容の退避・復元を要求する退避・復元要求信号を出力するタスク切替制御手段と、
前記複数のコプロセッサのそれぞれに対応した複数の退避・復元手段と、を備え、
前記複数の退避・復元手段のそれぞれは、前記退避・復元要求信号に応じて、前記演算記憶手段に格納された第１のタスクに関する演算内容の前記退避記憶手段への退避、及び、前記退避記憶手段に格納された第２のタスクに関する演算内容の前記演算記憶手段への復元、のうち少なくとも１つを実行する情報処理装置。
【請求項２】
前記退避・復元手段は、切り替え前のタスクを示すタスク情報を格納するタスク情報記憶手段を有し、
前記タスク切替制御手段は、前記復元・退避要求信号とともに、前記第２のタスクを示すタスク情報を前記退避・復元手段に出力し、
前記退避・復元手段は、前記タスク切替制御手段から出力されたタスク情報と、前記タスク情報記憶手段に格納されたタスク情報とが同じ場合に、前記演算内容の退避及び復元を実行しないようにするとともに、前記タスク切替制御手段から出力されたタスク情報を前記タスク情報記憶手段に格納する請求項１に記載の情報処理装置。
【請求項３】
前記退避・復元要求信号は、切り替え前のタスクの演算内容の退避を要求する退避要求信号と、切り替え先のタスクの演算内容の復元を要求する復元要求信号と、を含み、
前記タスク切替制御手段は、前記複数の退避・復元手段のうち、前記第２のタスクの演算を行うコプロセッサに対応する退避・復元手段のみに前記第２のタスクの演算内容の復元を要求する復元要求信号を出力する請求項１又は２に記載の情報処理装置。
【請求項４】
前記タスク切替制御手段は、切り替え前のタスクの演算を行うコプロセッサを示すコプロセッサ情報を格納するコプロセッサ情報記憶手段を有し、
前記タスク切替制御手段は、前記コプロセッサ情報に基づいて、前記複数の退避・復元手段のうち、前記第１のタスクの演算を行うコプロセッサに対応する退避・復元手段のみに前記退避要求信号を出力し、前記第２のタスクの演算を行うコプロセッサを示すプロセッサ情報を前記コプロセッサ情報記憶手段に格納する請求項３に記載の情報処理装置。
【請求項５】
前記情報処理装置は、前記タスクと、当該タスクの演算を行うコプロセッサとを対応付けた対応情報を格納する対応情報記憶手段をさらに備え、
前記プロセッサコアは、前記複数のコプロセッサにおいて演算するタスクを管理するプロセッサコア制御手段を有し、
前記プロセッサコア制御手段は、前記第１のタスクから第２のタスクに切り替える場合に、前記第２のタスクを示すタスク情報を前記タスク切替制御手段に出力し、
前記タスク切替制御手段は、前記対応情報に基づいて、前記プロセッサコア制御手段から出力されたタスク情報が示す第２のタスクの演算を行うコプロセッサを特定し、特定したコプロセッサに対応する退避・復元手段に前記復元要求信号を出力するとともに、特定したコプロセッサを示すプロセッサ情報を前記コプロセッサ情報記憶手段に格納する請求項４に記載の情報処理装置。
【請求項６】
前記プロセッサコアは、前記複数のコプロセッサにおいて演算するタスクを管理するプロセッサコア制御手段を有し、
前記タスク切替制御手段は、前記複数の退避・復元手段のうち、前記第２のタスクの演算を行うコプロセッサに対応する退避・復元手段における演算内容の復元が終了した場合に、前記第１のタスクから第２のタスクへの切り替えの終了を通知するタスク切り替え終了信号を前記プロセッサコア制御手段に出力し、
前記プロセッサコア制御手段は、前記タスク切り替え終了信号に応じて、前記第２のタスクの演算を前記コプロセッサに要求する請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項７】
前記情報処理装置は、前記第２のタスクの演算を行うコプロセッサに対応する退避・復元手段における演算内容の復元が終了していない場合、前記プロセッサコアからの前記第２のタスクの演算を行うコプロセッサに対する前記第２のタスクの演算の要求を抑止する請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
前記プロセッサコアは、前記タスク切替制御手段を有し、
前記コプロセッサは、前記退避・復元手段を有する請求項１乃至７のいずれか１項に記載の情報処理装置。
【請求項９】
プロセッサコアが、前記プロセッサコアからの要求に応じてタスクの演算を行う複数のコプロセッサのうち少なくとも１つによって演算を行うタスクを、第１のタスクから第２のタスクに切り替える場合に、前記タスクの演算内容の退避・復元を要求する退避・復元要求信号を前記複数のコプロセッサに対して出力し、
前記複数のコプロセッサのそれぞれが、前記プロセッサコアから出力された退避・復元要求信号に応じて、前記第１のタスクの演算内容の退避、及び、前記第２のタスクの演算内容の復元、のうち少なくとも１つを実行する、
を備えたタスク切り替え方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及びタスク切り替え方法に関する。特に複数のコプロセッサにおけるタスクを切り替える技術に関する。
【背景技術】
【０００２】
近年、処理の柔軟性を高めるため、専用ハードウェアを用いるのではなく、組み込み用プロセッサコアに専用のコプロセッサを接続して、信号処理を行う専用ＬＳＩ(Large Scale Integration)が増加している。この場合、面積効率を向上させる目的で、１つのプロセッサコアで複数のタスクを処理させる必要性が出てくる。特に、異なる性質の複数のタスクを１つのプロセッサコアで行う場合、１つのプロセッサコアに複数のコプロセッサを接続する場合が増えてくると考えられる。【０００３】
通常、タスク切り替えを行う場合、そのプロセッサコア、および、コプロセッサに存在する演算レジスタのデータを一旦退避させる。そして、再び、もとのタスクに切り替えられたときに、退避させたデータを演算レジスタに復元する必要がある。【０００４】
このデータの退避・復元処理はソフトウェアに記述された命令列に従って、プロセッサコアが行っているものがほとんどである。しかし、この手法では、タスク切り替えを行う度に、現在のタスクのデータの演算レジスタからの読み出し、データのメモリへの書き込み、次のタスクのデータのメモリからの読み出し、データの演算レジスタへの書き込みを演算レジスタの個数分だけ行う必要がある。また複数のコプロセッサを接続した場合、プロセッサコアが、そのコプロセッサの個数分だけの上述した処理を順次行う必要がある。その結果、タスク切り替えを高頻度で行うと、その退避、復元作業に必要な処理時間によるオーバヘッドが大きくなってしまっていた。そのため、リアルタイム処理ではタスク切り替えが困難であるという問題が生じていた。【０００５】
その問題を解決するために、例えば、特許文献１や特許文献２では、コプロセッサを使用するタスクと使用しないタスクを識別し、コプロセッサコンテキストの退避及び復帰を省略することによって、タスク切り替え処理を高速化する手法が提案されている。また、特許文献３では、そのタスクで使用した演算レジスタのみを退避することにより、タスク切り替えを高速化する手法が提案されている。【０００６】
ただし、このような手法を用いた場合でも、使用するコプロセッサの数が増えた場合、タスク切り替え時の演算レジスタ退避、復元には、関連するコプロセッサの個数分だけ行う必要がある。また、その退避、復元作業が終わるまで、タスク切り替えが行われないため、依然として、タスク切り替えには大きな時間がかかっていた。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平０４−０９５１３７号公報
【特許文献２】特開平０４−０５１３２９号公報
【特許文献３】特開平０６−００４３０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
背景技術として説明したように、タスク切り替えを行う度に、プロセッサコアが、現在のタスクのデータの演算レジスタからの読み出し、データのメモリへの書き込み、次のタスクのデータのメモリからの読み出し、データの演算レジスタへの書き込みを演算レジスタの個数分だけ行う必要がある。また複数のコプロセッサを接続した場合、そのコプロセッサの個数分だけ上述した処理を順次行う必要がある。その結果、複数のコプロセッサにおいて、タスクを切り替えるための時間が大きくなってしまうという問題があった。【０００９】
本発明の目的は、上述した課題を解決するために、複数のコプロセッサにおけるタスクの切り替えに要する時間を短縮することのできる情報処理装置及びタスク切り替え方法を提供することにある。
【課題を解決するための手段】
【００１０】
本発明の第１の態様にかかる情報処理装置は、プロセッサコアと、プロセッサコアからの要求に応じて演算を行う演算部と、前記演算部の演算内容を格納する演算記憶部と、を有する複数のコプロセッサと、前記複数のコプロセッサのそれぞれに対応し、前記演算記憶部から退避した演算内容を格納する複数の退避記憶部と、前記複数のコプロセッサのうち少なくとも１つによって演算されるタスクを、第１のタスクから第２のタスクに切り替える場合に、前記演算内容の退避・復元を要求する退避・復元要求信号を出力するタスク切替制御部と、前記複数のコプロセッサのそれぞれに対応した複数の退避・復元部と、を備え、前記複数の退避・復元部のそれぞれは、前記退避・復元要求信号に応じて、前記演算記憶部に格納された第１のタスクに関する演算内容の前記退避記憶部への退避、及び、前記退避記憶部に格納された第２のタスクに関する演算内容の前記演算記憶部への復元、のうち少なくとも１つを実行するものである。【００１１】
本発明の第２の態様にかかるタスク切り替え方法は、プロセッサコアからの要求に応じてタスクの演算を行う複数のコプロセッサにおいて演算するタスクを切り替えるタスク切り替え方法であって、前記プロセッサコアが、前記複数のコプロセッサのうち少なくとも１つによって演算を行うタスクを、第１のタスクから第２のタスクに切り替える場合に、前記タスクの演算内容の退避・復元を要求する退避・復元要求信号を前記複数のコプロセッサに対して出力するステップと、前記複数のコプロセッサのそれぞれが、前記プロセッサコアから出力された退避・復元要求信号に応じて、前記第１のタスクの演算内容の退避、及び、前記第２のタスクの演算内容の復元、のうち少なくとも１つを実行するものである。
【発明の効果】
【００１２】
上述した本発明の各態様によれば、複数のコプロセッサにおけるタスクの切り替えに要する時間を短縮できることのできる情報処理装置及びタスク切り替え方法を提供することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態にかかる情報処理装置の構成を示すブロック図である。
【図２】本発明の実施の形態にかかるタスク切り替え高速化回路の構成を示すブロック図である。
【図３】本発明の実施の形態にかかるプロセッサとコプロセッサの関係を示すブロック図である。
【図４】背景技術にかかるタスク切り替え処理の流れの例を示すフロー図である。
【図５】本発明の実施の形態にかかるタスク切り替え処理の流れの例を示すフロー図である。
【図６】本発明の実施の形態にかかるタスク切り替え高速化回路に用いられるタスク切り替え制御回路の実施例を示すブロック図である。
【図７】本発明の実施の形態にかかるタスク切り替え高速化回路に用いられる演算レジスタデータ退避・復元回路の実施例を示すブロック図である。
【図８】本発明の実施の形態にかかるタスク切り替え高速化回路に用いられるウェイト制御回路の実施例を示すブロック図である。
【発明を実施するための形態】
【００１４】
まず、図１を参照して、本発明の実施の形態にかかるタスク切り替え高速化回路の概要となる情報処理装置について説明する。図１は、本発明の実施の形態にかかる情報処理装置の構成を示すブロック図である。
【００１５】
情報処理装置３０は、プロセッサコア３０１、コプロセッサ３１１〜３１ｎ及び退避記憶部３５１〜３５ｎを有する。ｎは、任意の正整数である。プロセッサコア３０１は、タスク切り替え制御部３０２を有する。コアプロセッサ３１１は、演算部３２１、演算記憶部３３１及び退避・復元部３４１を有する。コアプロセッサ３１２〜コプロセッサ３１ｎにいても、コアプロセッサ３１１と同様の構成であるため、説明を省略する。
【００１６】
プロセッサコア３０１は、コプロセッサ３１１〜３１ｎに対して、タスクの演算を要求する。
タスク切り替え制御部３０２は、複数のコプロセッサ３１１〜３１ｎのうち少なくとも１つによって演算されるタスクを、第１のタスクから第２のタスクに切り替える場合に、そのコプロセッサに退避・復元要求信号を出力する。退避・復元要求信号は、演算記憶部に格納された演算内容の退避・復元を要求する信号である。
【００１７】
コプロセッサ３１１〜３１ｎのそれぞれは、タスクの演算を実行する。
演算部３２１〜３２ｎのそれぞれは、プロセッサコア３０１からの要求に応じて演算を行う。
演算記憶部３３１〜３３ｎのそれぞれは、演算部３２１〜３２ｎのそれぞれの演算内容を格納する。
退避・復元部３４１〜３４ｎのそれぞれは、退避・復元要求信号に応じて、演算記憶部３３１〜３３ｎのそれぞれに格納された第１のタスクに関する演算内容の退避記憶部３５１〜３５ｎのそれぞれへの退避、及び、退避記憶部３５１〜３５ｎのそれぞれに格納された第２のタスクに関する演算内容の演算記憶部３３１〜３３ｎのそれぞれへの復元、のうち少なくとも１つを実行する。つまり、退避・復元部３４１〜３４ｎのそれぞれは、複数のコプロセッサ３１１〜３１ｎのそれぞれに対応する。
退避記憶部３５１〜３５ｎのそれぞれは、演算記憶部３３１〜３３ｎのそれぞれから退避した演算内容を格納する。つまり、退避記憶部３５１〜３５ｎのそれぞれは、複数のコプロセッサ３１１〜３１ｎのそれぞれに対応する。
【００１８】
続いて、本発明の実施の形態にかかる情報処理装置の処理について説明する。
タスク切り替え制御部３０２は、複数のコプロセッサ３１１〜３１ｎのうち少なくとも１つによって演算されるタスクを、第１のタスクから第２のタスクに切り替える場合に、そのコプロセッサに含まれる退避・復元部に退避・復元要求信号を出力する。ここで、コプロセッサ３１１に含まれる退避・復元部３４１に退避・復元要求信号が出力されたものとする。退避・復元部３４１は、退避・復元要求信号に応じて、演算記憶部３３１に格納された第１のタスクに関する演算内容の退避記憶部３５１への退避、及び、退避記憶部３５１に格納された第２のタスクに関する演算内容の演算記憶部３３１への復元、のうち少なくとも１つを実行する。
【００１９】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
図２に本発明の実施の形態にかかるタスク切り替え高速化回路の構成を示すブロック図である。
タスク切り替え高速化回路１０は、プロセッサコア１０１、コプロセッサ１０２、１０３、１０４、データメモリ１１２〜１１４を有する。
【００２０】
プロセッサコア１０１は、タスク切り替え制御回路１０５、ウェイト制御回路１０７、タスク毎使用コプロセッサ対応情報テーブル１０８及びプロセッサコア制御回路１２０を有する。タスク切り替え制御回路１０５は、使用中コプロセッサ記憶レジスタ１５１及びコプロセッサ状態レジスタ１５２を有する。
【００２１】
コプロセッサ１０２は、演算レジスタデータ退避・復元回路１０６、コプロセッサ演算制御回路１０９、コプロセッサ演算器１１０及び演算レジスタ１１１を有する。なお、コプロセッサ１０３、１０４の構成については、コプロセッサ１０２と同様であるため、説明を省略する。演算レジスタデータ退避・復元回路１０６は、タスク番号記憶レジスタ１６１を有する。
【００２２】
プロセッサコア１０１は、演算器(図示せず)を有する。プロセッサコア制御回路１２０は、実行すると決定したタスクを演算器に実行させる。また、プロセッサコア制御回路１２０は、タスク切り替え要求信号をタスク切り替え制御回路１０５に出力する。タスク切り替え要求信号は、実行すると決定したタスクへの切り替えを要求する信号である。また、プロセッサコア制御回路１２０は、切り替え先タスク番号信号をタスク切り替え制御回路１０５に出力する。切り替え先タスク番号信号は、実行すると決定した切り替え先のタスクのタスク番号を示す信号である。
コプロセッサ１０２〜１０４は、プロセッサコア１０１からの要求に応じて、タスクの演算を実行する。
【００２３】
タスク切り替え制御回路１０５は、プロセッサコア１０１内のプロセッサコア制御回路１２０から、タスク切り替え要求信号と切り替え先タスク番号信号が入力される。タスク切り替え制御回路１０５は、タスクの切り替えを要求したコプロセッサにおいて、タスクの切り替えが終了した場合、プロセッサコア制御回路１２０に対して、タスク切り替え終了信号を出力する。
【００２４】
また、タスク切り替え制御回路１０５からは、個々のコプロセッサ１０２、１０３、１０４に対して、演算レジスタ値退避・復元要求信号と切り替え先タスク番号信号が出力される。コプロセッサ１０２〜１０４のそれぞれは、演算レジスタデータ退避・復元要求信号に応じて、演算レジスタ１１１に格納されるデータの退避・復元を行う。これによって、コプロセッサ１０２〜１０４のそれぞれにおいて実行されるタスクが切り替わる。データの退避・復元が終了した場合、コプロセッサ１０２〜１０４のそれぞれは、演算レジスタ退避・復元終了信号をタスク切り替え制御回路１０５に出力する。
【００２５】
タスク切り替え制御回路１０５には、タスク毎使用コプロセッサ対応情報テーブル１０８も接続される。タスク切り替え制御回路１０５は、タスク毎使用コプロセッサ対応情報テーブル１０８を使用して、個々のタスク毎に使用されるコプロセッサに関する情報を取得する。タスク切り替え制御回路１０５は、取得した情報に基づいたコプロセッサに対して演算レジスタ値退避・復元要求信号を出力する。
さらに、タスク切り替え制御回路１０５は、ウェイト制御回路１０７に対して、コプロセッサ１０２〜１０４のそれぞれがタスク切り替え中か否かを示すコプロセッサ状態信号を出力する。タスク切り替え制御回路１０５は、タスク切り替え制御部３０２として機能する。
【００２６】
演算レジスタデータ退避・復元回路１０６は、演算レジスタ値退避・復元要求信号に応じて、演算レジスタ１１１に格納された切り替え前のタスクに関する演算内容のデータのメモリ１１２への退避、及び、データメモリ１１２に格納された切り替え先のタスクに関する演算内容の演算レジスタ１１１への復元、のうち少なくとも１つを実行する。演算レジスタデータ退避・復元回路１０６は、タスクの演算内容の退避・復元が終了した場合、演算レジスタ退避・復元終了信号をタスク切り替え制御回路１０５に出力する。コプロセッサにおいて、タスクに関する演算内容の退避・復元が終了したときに、そのコプロセッサにおけるタスクの切り替えが終了したことになる。演算レジスタデータ退避・復元回路１０６は、退避・復元部３４１〜３４ｎとして機能する。
【００２７】
ウェイト制御回路１０７には、プロセッサコア制御回路１２０から演算制御信号及びコプロセッサ番号信号が入力される。演算制御信号は、コプロセッサ１０２〜１０４における演算を制御する信号である。コプロセッサ番号信号は、演算制御信号によって制御するコプロセッサの番号を示す信号である。ウェイト制御回路１０７は、プロセッサコア制御回路１２０から出力された演算制御信号と、タスク切り替え制御回路１０５から出力されたコプロセッサ状態信号とに基づいて、コプロセッサ演算制御信号をコプロセッサ演算制御回路１０９に出力する。また、ウェイト制御回路１０７は、コプロセッサ状態信号に基づいて、コプロセッサ１０２〜１０４のうち、プロセッサコア１０１がコプロセッサ演算制御信号によって演算を制御しようとしたコプロセッサがタスク切り替え中の場合、ウェイト信号をプロセッサコア制御回路１２０に出力する。ウェイト信号は、プロセッサコア１０１における処理を停止させる信号である。
【００２８】
タスク毎使用コプロセッサ対応情報テーブル１０８は、タスクと、そのタスクを実行するコプロセッサとを対応付けた対応情報を格納する。タスク毎使用コプロセッサ対応情報テーブル１０８は、タスク切り替え制御回路１０５から出力された切り替え先タスク番号信号に応じて、コプロセッサ信号をタスク切り替え制御回路１０５に出力する。コプロセッサ信号は、切り替え先タスク番号信号が示すタスク番号のタスクを実行するコプロセッサを示す信号である。なお、タスク毎使用コプロセッサ対応情報テーブル１０８は、自身に格納する対応情報に基づいて、切り替え先タスク番号信号が示すタスク番号のタスクを実行するプロセッサを特定する。タスク毎使用コプロセッサ対応情報テーブル１０８は、例えば、メモリ、ハードディスク等の記憶装置を含む。対応情報は、例えば、本実施の形態において実行されるタスクを含んだプログラムを起動したときに、他の記憶装置からタスク毎使用コプロセッサ対応情報テーブル１０８にロードされる。
【００２９】
コプロセッサ演算制御回路１０９は、コプロセッサ演算器１１０を制御する。コプロセッサ演算制御回路１０９は、ウェイト制御回路１０７を介してプロセッサコア１０１から出力されたコプロセッサ演算制御信号に応じて、コプロセッサ演算器１１０にタスクの演算を実行させる。
コプロセッサ演算器１１０は、実行するタスクの演算を行う。コプロセッサ演算器１１０は、タスクの演算内容を演算レジスタ１１１に格納する。コプロセッサ演算器１１０は、演算部３２１〜３２ｎとして機能する。
演算レジスタ１１１は、コプロセッサ演算器１１０によって、タスクの演算内容となるデータが格納される。演算レジスタ１１１は、演算記憶部３３ｎ〜３３ｎとして機能する。
【００３０】
データメモリ１１２は、コプロセッサ１０２が実行するタスクを切り替える場合に、演算レジスタ１１１に格納されたデータが退避される。データメモリ１１３、１１４のそれぞれは、コプロセッサ１０３、１０４のそれぞれが実行するタスクを切り替える場合に、それぞれの演算レジスタ(図示せず)に格納されたデータが退避される。データメモリ１１２〜１１４は、退避記憶部３５１〜３５ｎとして機能する。
プロセッサコア制御回路１２０は、プロセッサコア１０１及びコプロセッサ１０２〜１０４において実行するタスクを管理する。プロセッサコア制御回路１２０は、タスク切り替え要求信号によって、タスク切り替え制御回路１０５に対してコプロセッサ１０２〜１０４におけるタスクの切り替えを要求する。プロセッサコア制御回路１２０は、演算制御信号によって、コプロセッサ１０２〜１０４に対してタスクの演算を要求する。
【００３１】
使用中コプロセッサ記憶レジスタ１５１は、タスクを実行するために使用しているコプロセッサを示す情報を格納する。使用中コプロセッサ記憶レジスタ１５１に格納される情報は、コプロセッサ１０２が実行するタスクを切り替えるときに、切り替え前のタスクを実行していたコプロセッサを示す情報として使用される。
コプロセッサ状態レジスタ１５２は、コプロセッサ１０２〜１０４がタスク切り替え中であるか否かを示す情報が格納される。
タスク番号記憶レジスタ１６１は、切り替え前のタスクのタスク番号を示す情報が格納される。
【００３２】
［動作の説明］ 
次に、本発明のタスク切り替え高速化回路１０の動作について、図２のブロック図を用いて説明する。
【００３３】
タスク切り替え制御回路１０５は、プロセッサコア１０１のプロセッサコア制御回路１２０より、タスク切り替え要求信号と切り替え先タスク番号信号が通知されると、その切り替え先タスク番号信号をタスク毎使用コプロセッサ対応情報テーブル１０８に出力する。タスク毎使用コプロセッサ対応情報テーブル１０８は、タスク切り替え制御回路１０５から出力された切り替え先タスク番号信号が示すタスク番号のタスクを実行するコプロセッサを示すコプロセッサ番号信号をタスク切り替え制御回路１０５に出力する。このようにして、タスク切り替え制御回路１０５は、切り替え先のタスクを実行するコプロセッサのコプロセッサ番号を取得する。
【００３４】
次に、タスク切り替え制御回路１０５は、その内部に有する使用中コプロセッサ記憶レジスタ１５１に記憶されている情報に基づいて、個々のコプロセッサ１０２〜１０４に対して、切り替え前のタスクで使用していたか、と、切り替え後のタスクで使用するかを通知する信号を出力する。これは、そのまま、演算レジスタデータ退避・復元要求信号となる。使用中コプロセッサ記憶レジスタ１５１に記憶されている情報は、切り替え前のタスクで使用されているコプロセッサを示す情報となる。
【００３５】
具体的には、タスクを切り替える場合、切り替え前のタスクで使用されていたコプロセッサは、演算レジスタ１１１に格納された演算内容を退避する必要がある。また、タスクを切り替える場合、切り替え先のタスクで使用するコプロセッサは、退避されていた演算内容を演算レジスタ１１１に復元する必要がある。つまり、演算レジスタデータ退避・復元要求信号は、出力先のコプロセッサに対して、演算内容の退避を行わせるか否か、及び、演算内容の復元を行わせるか否かを示す信号である。この信号と同時に、タスク切り替え制御回路１０５は、個々のコプロセッサ１０２〜１０４に対して、切り替え先タスク番号も通知する。この切り替え先タスク番号は、切り替え先タスク番号信号によって通知される。
【００３６】
また、タスク切り替え制御回路１０５は、コプロセッサ１０２〜１０４毎のタスク切り替え状態を示すコプロセッサ状態レジスタ１５２に、現在のコプロセッサ１０２〜１０４の状態をセットする。
個々のコプロセッサ１０２〜１０４内に存在する演算レジスタデータ退避・復元回路１０６は、タスク切り替え制御回路１０５から演算レジスタデータ退避・復元要求信号、および、切り替え先タスク番号信号を受け取る。演算レジスタデータ退避・復元回路１０６は、所属するコプロセッサがタスク切り替え前に使用されていたら、演算レジスタ１１１のデータを切り替え前のタスク番号に対応するデータメモリ１１２のメモリ領域に退避する。また、演算レジスタデータ退避・復元回路１０６は、所属するコプロセッサがタスク切り替え後に使用されるなら、切り替え後のタスク番号に対応する演算レジスタ１１１のデータを復元する。切り替え前のタスク番号は、演算レジスタデータ退避・復元回路１０６内に存在するタスク番号記憶レジスタ１６１から読み出す。
【００３７】
演算レジスタデータ退避・復元回路１０６は、退避・復元処理が終了したときに、このタスク番号記憶レジスタ１６１の値を、切り替え後のタスク番号に更新する。
退避・復元処理が終了したら、演算レジスタデータ退避・復元回路１０６は、タスク切り替え制御回路１０５に演算レジスタ退避・復元終了信号を出力する。
演算レジスタデータ退避・復元回路１０６から演算レジスタ退避・復元終了信号が出力されると、タスク切り替え制御回路１０５は、コプロセッサ状態レジスタ１５２に格納される値のうち、演算レジスタ退避・復元終了信号を出力したコプロセッサに対応する値をクリアする。
【００３８】
このコプロセッサ状態レジスタ１５２の値は常にウェイト制御回路１０７に出力されている。もし、プロセッサコア１０１からコプロセッサ１０２〜１０４のいずれかに対してアクセスするときに、アクセス先のコプロセッサのタスク切り替え処理が終了していない場合、ウェイト制御回路１０７は、ウェイト信号をプロセッサコア１０１に出力する。ウェイト信号は、タスク切り替え処理が終了するまで、プロセッサコア１０１の処理を停止させる信号である。
タスク切り替え制御回路１０５は、コプロセッサ１０２〜１０４におけるタスク切り替え処理が終了したときに、使用中コプロセッサ記憶レジスタ１５１の値を更新する。
【００３９】
次に、図３、図４、図５を用いて複数のコプロセッサを接続したプロセッサコアにおけるタスク切り替え処理の流れの例を、背景技術にかかる手法を用いた場合と、本実施の形態にかかるタスク切り替え高速化回路１０を用いた場合について説明する。具体的には、図３に示す構成において、背景技術にかかる手法を適用した場合と、本実施の形態にかかる手法を適用した場合とのそれぞれの処理について説明する。
【００４０】
図３には、それぞれの手法を適用する構成におけるプロセッサコアとコプロセッサの関係を示すブロック図を示す。プロセッサコア２０１には、複数のコプロセッサ２０２〜２０４が接続されている。プロセッサコア２０１およびコプロセッサ２０２〜２０４のそれぞれにはデータメモリ２０５〜２０８のそれぞれが接続されている。
【００４１】
タスク切り替え時には、プロセッサコア２０１およびコプロセッサ２０２〜２０４内にある演算レジスタ(図示せず)のそれぞれに格納されたデータの退避・復元処理は、プロセッサコア２０１及びコプロセッサ２０２〜２０４のそれぞれが、自身に接続されているデータメモリ２０５〜２０８のそれぞれに対して行うものとする。また、プロセッサコア２０１及びコプロセッサ２０２〜２０４は、バスコントローラ２１０を介して、データメモリ２０５〜２０８、外部メモリ(図示せず)及びＩ／Ｏ(Input/Output)インタフェースに相互にアクセス可能である。
【００４２】
図４には、図３に示す構成に、背景技術にかかる手法を適用した場合におけるタスク切り替え処理の流れの例を示している。背景技術にかかるタスク切り替え処理では、プロセッサコア２０１が個々のコプロセッサ２０２〜２０４に対して演算レジスタのデータの退避・復元処理を順に行なっていた。
【００４３】
まず、プロセッサコア２０１及びコプロセッサ２０２〜２０４がタスク１を実行している状態であるものとする(Ｓ２００)。
例えば、この図４のように、タスク１からタスク２に切り替えるとき、まず、プロセッサコア２０１は、プロセッサコア２０１における演算レジスタのデータ退避・復元処理を行う(Ｓ２１０)。具体的には、プロセッサコア２０１は、自身が有する演算レジスタに格納されたタスク１の演算内容をデータメモリ２０５に退避する。そして、プロセッサコア２０１は、データメモリ２０５に格納されたタスク２の演算内容を自身が有する演算レジスタに復元する。
【００４４】
次に、プロセッサコア２０１は、コプロセッサ２０２における演算レジスタのデータの退避・復元処理を行う(Ｓ２１１)。具体的には、プロセッサコア２０１は、コプロセッサ２０２が有する演算レジスタに格納されたタスク１の演算内容をデータメモリ２０６に退避する。そして、プロセッサコア２０１は、データメモリ２０６に格納されたタスク２の演算内容を自身が有する演算レジスタに復元する。つまり、プロセッサコア２０１が、コプロセッサ２０２が有する演算レジスタから、タスク１の演算内容を取得して、取得したタスク１の演算内容をデータメモリ２０６に格納している。また、プロセッサコア２０１が、データメモリ２０６に格納されたタスク２の演算内容を取得して、取得したタスク２の演算内容をコプロセッサ２０２が有する演算レジスタに格納している。
【００４５】
次に、プロセッサコア２０１は、コプロセッサ２０３における演算レジスタのデータの退避・復元処理を行う(Ｓ２１２)。ここでも、ステップＳ２１１と同様に、プロセッサコア２０１が演算内容の退避・復元処理を行う。
最後に、プロセッサコア２０１は、コプロセッサ２０４における演算レジスタのデータの退避・復元処理を行う(Ｓ２１３)。ここでも、ステップＳ２１１及びＳ２１２と同様に、プロセッサコア２０１が演算内容の退避・復元処理を行う。
【００４６】
ここまでで、プロセッサコア２０１及びコプロセッサ２０２〜２０４において、タスク１からタスク２に切り替えるための退避・復元処理が終了する。そのため、プロセッサコア２０１及びコプロセッサ２０２〜２０４は、タスク２を実行する処理を開始する(Ｓ２２０)。
次に、タスク２からタスク３に切り換える場合、ステップＳ２１０〜Ｓ２１３と同様に、プロセッサコア２０１が演算レジスタのデータの退避・復元処理を行う(Ｓ２２１〜Ｓ２２４)。次に、プロセッサコア２０１及びコプロセッサ２０２〜２０４は、タスク３を実行する処理を開始する(Ｓ２３０)。
【００４７】
このように、背景技術にかかるタスク切り替え処理では、プロセッサコア２０１がコプロセッサ２０２〜２０４が有する演算レジスタのそれぞれに順次アクセスして、データの退避・復元を行っていた。そのため、個々のコプロセッサ２０２〜２０４の退避・復元処理を順にしか行うことができず、非常に多くの時間を要していた。
【００４８】
図５には、図３に示す構成に、本実施の形態にかかる手法を適用した場合におけるタスク切り替え処理の流れの例を示している。図３に示す構成に、本実施の形態にかかる手法を適用したものが、タスク切り替え高速化回路１０となる。プロセッサコア２０１にタスク切り替え制御回路１０５、ウェイト制御回路１０７及びタスク毎使用コプロセッサ対応情報テーブル１０８を適用したものが、プロセッサコア１０１となる。コプロセッサ２０２〜２０４に演算レジスタデータ退避・復元回路１０６を適用したものが、コプロセッサ１０２〜１０４となる。データメモリ２０６は、データメモリ１１２に相当し、データメモリ２０７は、データメモリ１１３に相当し、データメモリ２０８は、データメモリ１１４に相当する。
【００４９】
この図５には、タスク切り替えの例として、タスク１、タスク２、タスク３、タスク１、タスク３の順番でタスクを切り替えるときの処理の流れを示している。ここで、タスク１はコプロセッサ１０２と１０３を使用し、タスク２はコプロセッサ１０３と１０４を使用し、タスク３はコプロセッサ１０４を使用すると仮定している。つまり、タスク毎使用コプロセッサ対応情報テーブル１０８は、タスク１とコプロセッサ１０２、１０３とを対応付けた情報と、タスク２とコプロセッサ１０３、１０４とを対応付けた情報と、タスク３とコプロセッサ１０４とを対応付けた情報とを含む。また、プロセッサコア１０１の演算レジスタに格納されたデータの退避処理、復元処理は毎回行うものとする。
【００５０】
まず、プロセッサコア１０１及びコプロセッサ１０２、１０３がタスク１を実行している(Ｓ１００)。
プロセッサコア１０１及びコプロセッサ１０２〜１０４において実行するタスクを、タスク１からタスク２に切り替える(Ｓ１１０)。具体的には、プロセッサコア制御回路１２０は、タスク切り替え要求信号をタスク切り替え制御回路１０５に出力する。また、プロセッサコア制御回路１２０は、タスク２のタスク番号を示す切り替え先タスク番号信号をタスク切り替え制御回路１０５に出力する。また、プロセッサコア制御回路１２０は、自身が有する演算レジスタ(図示せず)に格納されたタスク１の演算内容をデータメモリ２０５に退避し、データメモリ２０５に格納されたタスク２の演算内容を自身が有する演算レジスタに復元する(Ｓ１１１）。
【００５１】
ここで、タスク１でコプロセッサ１０２、１０３を使用し、タスク２でコプロセッサ１０３、１０４を使用する。したがって、コプロセッサ１０２は、切り替え前のタスク１で使用されているが、切り替え先のタスク２で使用されないため、退避処理のみ実行すればよい。また、コプロセッサ１０３は、切り替え前のタスク１で使用されており、切り替え先のタスク２でも使用されるため、退避処理及び復元処理を実行する必要がある。また、コプロセッサ１０４は、切り替え前のタスク１で使用されていないが、切り替え先のタスク２で使用されるため、復元処理のみ実行すればよい。
【００５２】
ここでの退避・復元処理の要否判定について具体的に説明する。タスク切り替え制御回路１０５は、タスク毎使用コプロセッサ対応情報テーブル１０８を用いて、復元処理の実行の要求が必要なコプロセッサを判定する。具体的には、タスク切り替え制御回路１０５は、プロセッサコア制御回路１２０から出力された切り替え先タスク番号信号を、タスク毎使用コプロセッサ対応情報テーブル１０８に出力する。タスク毎使用コプロセッサ対応情報テーブル１０８は、タスク切り替え制御回路１０５から出力された切り替え先タスク番号信号に応じて、その切り替え先タスク番号信号が示すタスク番号のタスクを実行するコプロセッサを示すコプロセッサ信号をタスク切り替え制御回路１０５に出力する。
【００５３】
ここで、切り替え先タスク番号信号が示すタスク番号はタスク２であるため、タスク毎使用コプロセッサ対応情報テーブル１０８が出力するコプロセッサ信号は、コプロセッサ１０３、１０４を示す。したがって、タスク切り替え制御回路１０５は、タスク毎使用コプロセッサ対応情報テーブル１０８から出力されたコプロセッサ信号が示すコプロセッサ１０３、１０４に対して復元処理の実行を要求する必要があると判定する。
【００５４】
また、タスク切り替え制御回路１０５は、使用中コプロセッサ記憶レジスタ１５１に格納された情報に基づいて、退避処理の実行の要求が必要なコプロセッサを判定する。ここで、切り替え前に実行しているタスクはタスク１であるため、使用中コプロセッサ記憶レジスタ１５１にはタスク１が使用するコプロセッサ１０２、１０３を示す情報が格納されている。したがって、タスク切り替え制御回路１０５は、コプロセッサ１０２、１０３に対して退避処理の実行を要求する必要があると判定する。
また、タスク切り替え制御回路１０５は、コプロセッサ状態レジスタ１５２に格納される情報のうち、退避処理又は復元処理を要求するコプロセッサ１０２〜１０４に対応する値を、タスク切り替え中であることを示す値に更新する。
【００５５】
したがって、タスク切り替え制御回路１０５は、退避処理の実行を要求する演算レジスタデータ退避・復元要求信号をコプロセッサ１０２に出力する。コプロセッサ１０２の演算レジスタデータ退避・復元回路１０６は、タスク切り替え制御回路１０５から出力された演算レジスタデータ退避・復元要求信号に応じて、自身が有する演算レジスタ１１１に格納されたタスク１の演算内容をデータメモリ１１２に退避する(Ｓ１１２)。演算レジスタデータ退避・復元回路１０６は、退避処理が終了した場合、演算レジスタデータ退避・復元終了信号をタスク切り替え制御回路１０５に出力する。
【００５６】
また、タスク切り替え制御回路１０５は、退避処理及び復元処理の実行を要求する演算レジスタデータ退避・復元要求信号をコプロセッサ１０３に出力する。コプロセッサ１０３の演算レジスタデータ退避・復元回路は、タスク切り替え制御回路１０５から出力された演算レジスタデータ退避・復元要求信号に応じて、自身が有する演算レジスタ(図示せず)に格納されたタスク１の演算内容をデータメモリ１１３に退避し、データメモリ１１３に格納されたタスク２の演算内容を自身が有する演算レジスタに復元する(Ｓ１１３)。演算レジスタデータ退避・復元回路は、退避処理及び復元処理が終了した場合、演算レジスタデータ退避・復元終了信号をタスク切り替え制御回路１０５に出力する。
【００５７】
また、タスク切り替え制御回路１０５は、復元処理の実行を要求する演算レジスタデータ退避・復元要求信号をコプロセッサ１０４に出力する。コプロセッサ１０４の演算レジスタデータ退避・復元回路は、タスク切り替え制御回路１０５から出力された演算レジスタデータ退避・復元要求信号に応じて、データメモリ１１４に格納されたタスク２の演算内容を自身が有する演算レジスタ(図示せず)に復元する(Ｓ１１４)。演算レジスタデータ退避・復元回路は、復元処理が終了した場合、演算レジスタデータ退避・復元終了信号をタスク切り替え制御回路１０５に出力する。
【００５８】
タスク切り替え制御回路１０５は、コプロセッサ１０２〜１０４から演算レジスタデータ退避・復元終了信号が出力された場合、コプロセッサ状態レジスタ１５２に格納される情報のうち、演算レジスタデータ退避・復元終了信号を出力したコプロセッサに対応する値を、タスク切り替え中でないことを示す値に更新する。タスク切り替え制御回路１０５は、退避処理又は復元処理を要求した全てのコプロセッサ１０２〜１０４から演算レジスタデータ退避・復元終了信号が出力された場合、タスク切り替え終了信号をプロセッサコア制御回路１２０に出力する。また、タスク切り替え制御回路１０５は、使用中コプロセッサ記憶レジスタ１５１の情報を、タスク２を実行するコプロセッサ１０３、１０４を示す情報に更新する。
【００５９】
プロセッサコア制御回路１２０は、タスク切り替え制御回路１０５から出力されたタスク切り替え終了信号に応じて、タスク２の実行を開始する(Ｓ１２０)。具体的には、プロセッサコア１０１が有する演算器にタスク２の演算を行わせる。また、プロセッサコア制御回路１２０は、コプロセッサ１０３、１０４のコプロセッサ番号を示すコプロセッサ番号信号と、タスク２の演算を要求する演算制御信号とをウェイト制御回路１０７に出力する。これに応じて、ウェイト制御回路１０７は、コプロセッサ１０３、１０４に対してコプロセッサ演算制御信号を出力する。これによって、コプロセッサ１０３、１０４の演算器においてもタスク２の演算が行われる。
【００６０】
このように、コプロセッサ１０２の演算レジスタの退避処理、コプロセッサ１０３の演算レジスタの退避・復元処理、及び、コプロセッサ１０４の演算レジスタ復元処理が行なされる。ここで、タスク２では、コプロセッサ１０２を用いないため、コプロセッサ１０２の演算レジスタ１１１の退避処理の終了を待つ必要は無い。つまり、コプロセッサ１０３、１０４の復元処理が終了した時点でタスク２の実行が可能となるため、コプロセッサ１０３、１０４における復元処理の終了さえ待ち合わせればよい。言い換えると、タスク切り替え制御回路１０５は、切り替え先のタスクを実行するコプロセッサの全てにおいて、復元処理が終了した時点で、タスク切り替え終了信号をプロセッサコア制御回路１２０に出力するようにしてもよい。
【００６１】
したがって、タスク切り替え制御回路１０５は、コプロセッサ１０３及びコプロセッサ１０４から演算レジスタデータ退避・復元終了信号が出力された場合に、タスク切り替え終了信号をプロセッサコア制御回路１２０に出力するようにしてもよい。または、演算レジスタデータ退避・復元回路１０６は、退避処理のみ実行する場合、退避処理が終了していなくても、演算レジスタデータ退避・復元要求信号に応じて、すぐに演算レジスタデータ退避・復元終了信号を出力するようにしてもよい。このようにすることで、コプロセッサ１０２における退避処理がバックグラウンドで実行される。これにより、コプロセッサ１０２における退避処理時間が、コプロセッサ１０３、１０４における退避・復元処理時間よりも多い場合に、タスク切り替えに要する時間を短縮することができる。
【００６２】
他方、ウェイト制御回路１０７は、プロセッサコア制御回路１２０から演算制御信号が出力されるときにまだ退避・復元処理が終わっていないときにはプロセッサコア１０１にウェイトをかける。具体的には、ウェイト制御回路１０７は、タスク切り替え制御回路１０５から出力されるコプロセッサ状態信号のうち、プロセッサコア制御回路１２０から出力されたコプロセッサ番号信号が示すコプロセッサに対応する信号が、タスク切り替え中であることを示している場合、ウェイト信号をプロセッサコア制御回路１２０に出力する。
【００６３】
次に、タスク２からタスク３に切り替えるとき(Ｓ１３０)は、プロセッサコア制御回路１２０は、タスク切り替え要求信号と、タスク３のタスク番号を示す切り替え先タスク番号信号とをタスク切り替え制御回路１０５に出力する。
プロセッサコア制御回路１２０は、タスク２の演算内容を退避し、タスク３の演算内容を復元する(Ｓ１３１）。
【００６４】
ここで、切り替え前のタスク２でも切り替え先のタスク３でもコプロセッサ１０２を使用していないので、コプロセッサ１０２に関しては何も行なわなくていい。コプロセッサ１０３は、切り替え前のタスク２で使用されているが、切り替え先のタスク３で使用されないため、退避処理のみ実行する必要がある。なお、コプロセッサ１０３は、切り替え先のタスク３を実行しないため、演算レジスタに格納されたデータの退避処理に関してはバックグラウンドで処理できる。コプロセッサ１０４は、切り替え前のタスク２で使用されており、切り替え先のタスク３でも使用されるため、退避処理及び復元処理を実行する必要がある。
【００６５】
ここでの退避・復元処理の要否判定について具体的に説明する。タスク切り替え制御回路１０５は、プロセッサコア制御回路１２０から出力された切り替え先タスク番号信号を、タスク毎使用コプロセッサ対応情報テーブル１０８に出力する。タスク毎使用コプロセッサ対応情報テーブル１０８は、切り替え先タスク番号信号が示すタスク番号がタスク３であるため、コプロセッサ１０４を示すコプロセッサ信号をタスク切り替え制御回路１０５に出力する。よって、タスク切り替え制御回路１０５は、コプロセッサ信号が示すコプロセッサ１０４に対して復元処理の実行を要求する必要があると判定する。
【００６６】
また、使用中コプロセッサ記憶レジスタ１５１に格納された情報は、タスク２を実行するコプロセッサ１０３、１０４を示している。そのため、タスク切り替え制御回路１０５は、コプロセッサ１０３、１０４に対して退避処理の実行を要求する必要があると判定する。
また、タスク切り替え制御回路１０５は、コプロセッサ状態レジスタ１５２に格納される情報のうち、退避処理又は復元処理を要求するコプロセッサ１０３、１０４に対応する値を、タスク切り替え中であることを示す値に更新する。
【００６７】
したがって、コプロセッサ１０２では退避処理及び復元処理は不要であるため、タスク切り替え制御回路１０５は、演算レジスタデータ退避・復元要求信号をコプロセッサ１０２には出力しない。
また、タスク切り替え制御回路１０５は、退避処理の実行を要求する演算レジスタデータ退避・復元要求信号をコプロセッサ１０３に出力する。これによって、コプロセッサ１０３の演算レジスタデータ退避・復元回路は、退避処理を実行する(Ｓ１３３)。なお、ここでの退避処理は、上述したように、バックグラウンドで実行する。演算レジスタデータ退避・復元回路は、退避処理が終了した場合、演算レジスタデータ退避・復元終了信号をタスク切り替え制御回路１０５に出力する。
【００６８】
また、タスク切り替え制御回路１０５は、退避処理及び復元処理の実行を要求する演算レジスタデータ退避・復元要求信号をコプロセッサ１０４に出力する。これによって、コプロセッサ１０４の演算レジスタデータ退避・復元回路は、退避処理及び復元処理を実行する(Ｓ１３４)。演算レジスタデータ退避・復元回路は、退避処理及び復元処理が終了した場合、演算レジスタデータ退避・復元終了信号をタスク切り替え制御回路１０５に出力する。
【００６９】
タスク切り替え制御回路１０５は、コプロセッサ１０３、１０４から演算レジスタデータ退避・復元終了信号が出力された場合、コプロセッサ状態レジスタ１５２に格納される情報のうち、演算レジスタデータ退避・復元終了信号を出力したコプロセッサに対応する値を、タスク切り替え中でないことを示す値に更新する。タスク切り替え制御回路１０５は、退避処理又は復元処理を要求した全てのコプロセッサ１０３、１０４から演算レジスタデータ退避・復元終了信号が出力された場合、タスク切り替え終了信号をプロセッサコア制御回路１２０に出力する。また、タスク切り替え制御回路１０５は、使用中コプロセッサ記憶レジスタ１５１の情報を、タスク３を実行するコプロセッサ１０４を示す情報に更新する。プロセッサコア制御回路１２０は、タスク切り替え制御回路１０５から出力されたタスク切り替え終了信号に応じて、タスク３の実行を開始する(Ｓ１４０)。
【００７０】
次に、タスク３からタスク１に切り替えるとき(Ｓ１５０)は、プロセッサコア制御回路１２０は、タスク切り替え要求信号と、タスク１のタスク番号を示す切り替え先タスク番号信号とをタスク切り替え制御回路１０５に出力する。
プロセッサコア制御回路１２０は、タスク２の演算内容を退避し、タスク１の演算内容を復元する(Ｓ１５１）。
【００７１】
ここで、コプロセッサ１０２は、切り替え先のタスク１で使用されるが、その前のタスク１を実行したときからは使用していないので、退避処理及び復元処理を実行する必要はない。コプロセッサ１０３は、切り替え前のタスク３で使用されていないが、切り替え先のタスク１で使用されるため、復元処理のみ実行する必要がある。コプロセッサ１０４は、切り替え前のタスク３で使用されており、切り替え先のタスク１では使用されないため、退避処理のみを実行する必要がある。コプロセッサ１０４は、切り替え先のタスク１を実行しないため、退避処理に関してはバックグラウンドで処理できる。
【００７２】
ここでの退避・復元処理の要否判定について具体的に説明する。タスク切り替え制御回路１０５は、プロセッサコア制御回路１２０から出力された切り替え先タスク番号信号を、タスク毎使用コプロセッサ対応情報テーブル１０８に出力する。タスク毎使用コプロセッサ対応情報テーブル１０８は、切り替え先タスク番号信号が示すタスク番号がタスク１であるため、コプロセッサ１０２、１０３を示すコプロセッサ信号をタスク切り替え制御回路１０５に出力する。よって、タスク切り替え制御回路１０５は、コプロセッサ信号が示すコプロセッサ１０２、１０３に対して復元処理の実行を要求する必要があると判定する。
【００７３】
また、使用中コプロセッサ記憶レジスタ１５１に格納された情報は、タスク３を実行するコプロセッサ１０４を示している。そのため、タスク切り替え制御回路１０５は、コプロセッサ１０４に対して退避処理の実行を要求する必要があると判定する。
また、タスク切り替え制御回路１０５は、コプロセッサ状態レジスタ１５２に格納される情報のうち、退避処理又は復元処理を要求するコプロセッサ１０２〜１０４に対応する値を、タスク切り替え中であることを示す値に更新する。
【００７４】
したがって、タスク切り替え制御回路１０５は、復元処理の実行を要求する演算レジスタデータ退避・復元要求信号をコプロセッサ１０２に出力する。しかし、コプロセッサ１０２は切り替え先のタスク１で使用されるが、上述したように、復元処理は不要である。
そのため、タスク切り替え制御回路１０５は、演算レジスタデータ退避・復元要求信号をコプロセッサ１０２に出力しないようにしてもよい。この場合、タスク切り替え制御回路１０５は、コプロセッサ状態レジスタ１５２に格納される情報のうち、コプロセッサ１０２に対応する値は更新しない。
【００７５】
または、コプロセッサ１０２の演算レジスタデータ退避・復元回路１０６は、演算レジスタデータ退避・復元要求信号に応じて復元処理は実行せずに、演算レジスタデータ退避・復元終了信号をタスク切り替え制御回路１０５に出力するようにしてもよい。例えば、タスク切り替え制御回路１０５又は演算レジスタデータ退避・復元回路１０６が演算レジスタ１１１に格納されている演算内容がどのタスクのものであるかを示す情報を記憶しておくことにより、この情報に基づいて、これらのように復元処理の要否を判定可能とする。
【００７６】
また、タスク切り替え制御回路１０５は、復元処理の実行を要求する演算レジスタデータ退避・復元要求信号をコプロセッサ１０３に出力する。これによって、コプロセッサ１０３の演算レジスタデータ退避・復元回路は、復元処理を実行する(Ｓ１５３)。演算レジスタデータ退避・復元回路は、復元処理が終了した場合、演算レジスタデータ退避・復元終了信号をタスク切り替え制御回路１０５に出力する。
【００７７】
また、タスク切り替え制御回路１０５は、退避処理の実行を要求する演算レジスタデータ退避・復元要求信号をコプロセッサ１０４に出力する。これによって、コプロセッサ１０４の演算レジスタデータ退避・復元回路は、退避処理を実行する(Ｓ１５４)。なお、ここでの退避処理は、上述したように、バックグラウンドで実行する。演算レジスタデータ退避・復元回路は、退避処理が終了した場合、演算レジスタデータ退避・復元終了信号をタスク切り替え制御回路１０５に出力する。
【００７８】
タスク切り替え制御回路１０５は、退避処理又は復元処理を要求したコプロセッサから演算レジスタデータ退避・復元終了信号が出力された場合、コプロセッサ状態レジスタ１５２に格納される情報のうち、演算レジスタデータ退避・復元終了信号を出力したコプロセッサに対応する値を、タスク切り替え中でないことを示す値に更新する。タスク切り替え制御回路１０５は、退避処理又は復元処理を要求した全てのコプロセッサから演算レジスタデータ退避・復元終了信号が出力された場合、タスク切り替え終了信号をプロセッサコア制御回路１２０に出力する。また、タスク切り替え制御回路１０５は、使用中コプロセッサ記憶レジスタ１５１の情報を、タスク１を実行するコプロセッサ１０２、１０３を示す情報に更新する。プロセッサコア制御回路は、タスク切り替え制御回路１０５から出力されたタスク切り替え終了信号に応じて、タスク１の実行を開始する(Ｓ１６０)。
【００７９】
次に、タスク１からタスク３に切り替えるとき(Ｓ１７０)は、プロセッサコア制御回路１２０は、タスク切り替え要求信号と、タスク３のタスク番号を示す切り替え先タスク番号信号とをタスク切り替え制御回路１０５に出力する。
プロセッサコア制御回路１２０は、タスク１の演算内容を退避し、タスク３の演算内容を復元する(Ｓ１７１）。
【００８０】
ここで、コプロセッサ１０４は、切り替え先のタスク３で使用されるが、その前のタスク３を実行したときからは使用していないので、復元処理をする必要はない。コプロセッサ１０２、１０３は、切り替え前のタスク１で使用されており、切り替え先のタスク３では使用されないため、退避処理のみを実行する必要がある。コプロセッサ１０２とコプロセッサ１０３は、切り替え先のタスク３を実行しないため、退避処理はバックグラウンドで処理できる。
【００８１】
ここでの退避・復元処理の要否判定について具体的に説明する。タスク切り替え制御回路１０５は、プロセッサコア制御回路１２０から出力された切り替え先タスク番号信号を、タスク毎使用コプロセッサ対応情報テーブル１０８に出力する。タスク毎使用コプロセッサ対応情報テーブル１０８は、切り替え先タスク番号信号が示すタスク番号がタスク３であるため、コプロセッサ１０４を示すコプロセッサ信号をタスク切り替え制御回路１０５に出力する。よって、タスク切り替え制御回路１０５は、コプロセッサ信号が示すコプロセッサ１０４に対して復元処理の実行を要求する必要があると判定する。
【００８２】
また、使用中コプロセッサ記憶レジスタ１５１に格納された情報は、タスク１を実行するコプロセッサ１０２、１０３を示している。そのため、タスク切り替え制御回路１０５は、コプロセッサ１０２、１０３に対して退避処理の実行を要求する必要があると判定する。
また、タスク切り替え制御回路１０５は、コプロセッサ状態レジスタ１５２に格納される情報のうち、退避処理又は復元処理を要求するコプロセッサ１０２〜１０４に対応する値を、タスク切り替え中であることを示す値に更新する。
【００８３】
したがって、タスク切り替え制御回路１０５は、退避処理の実行を要求する演算レジスタデータ退避・復元要求信号をコプロセッサ１０２、１０３に出力する。これによって、コプロセッサ１０２、１０３の演算レジスタデータ退避・復元回路のそれぞれは、退避処理を実行する(Ｓ１７２、Ｓ１７３)。なお、ここでの退避処理は、上述したように、バックグラウンドで実行される。演算レジスタデータ退避・復元回路は、退避処理が終了した場合、演算レジスタデータ退避・復元終了信号をタスク切り替え制御回路１０５に出力する。
【００８４】
また、タスク切り替え制御回路１０５は、復元処理の実行を要求する演算レジスタデータ退避・復元要求信号をコプロセッサ１０４に出力する。しかし、コプロセッサ１０４は切り替え先のタスク１で使用されるが、上述したように、復元処理は不要である。そのため、ステップＳ１５０におけるコプロセッサ１０２のように、復元処理を行わないようにしてもよい。
【００８５】
タスク切り替え制御回路１０５は、退避処理又は復元処理を要求したコプロセッサから演算レジスタデータ退避・復元終了信号が出力された場合、コプロセッサ状態レジスタ１５２に格納される情報のうち、演算レジスタデータ退避・復元終了信号を出力したコプロセッサに対応する値を、タスク切り替え中でないことを示す値に更新する。タスク切り替え制御回路１０５は、退避処理又は復元処理を要求した全てのコプロセッサから演算レジスタデータ退避・復元終了信号が出力された場合、タスク切り替え終了信号をプロセッサコア制御回路１２０に出力する。また、タスク切り替え制御回路１０５は、使用中コプロセッサ記憶レジスタ１５１の情報を、タスク３を実行するコプロセッサ１０４を示す情報に更新する。プロセッサコア制御回路は、タスク切り替え制御回路１０５から出力されたタスク切り替え終了信号に応じて、タスク３の実行を開始する(Ｓ１８０)。
【００８６】
タスク切り替え高速化回路１０は、以降も同様にして、実行するタスクに応じて退避・復元処理を実行する。
もし、１つのタスクのみでしか使用されていないコプロセッサがあるときは、演算レジスタに格納されたデータの退避、復元処理を全て省略するようにしてもよい。
【００８７】
以上に説明したように、本実施の形態では、複数のコプロセッサ１０２〜１０４のうち少なくとも１つによって演算を行うタスクを、第１のタスクから第２のタスクに切り替える場合に、そのコプロセッサが有する演算レジスタに格納された演算内容の退避・復元を要求する演算レジスタデータ退避・復元要求信号をそのコプロセッサに出力するタスク切り替え制御回路１０５を有している。また、演算レジスタデータ退避・復元要求信号に応じて、演算レジスタに格納された第１のタスクに関する演算内容のデータメモリへの退避、及び、データメモリに格納された第２のタスクに関する演算内容の演算レジスタへの復元、のうち少なくとも１つを実行する演算レジスタデータ退避・復元回路を、複数のコプロセッサ１０２〜１０４のそれぞれに対応して有している。
【００８８】
このような構成とすることで、タスク切り替え制御回路１０５から、演算レジスタデータ退避・復元回路に並列的に演算レジスタデータ退避・復元要求信号を出力することによって、演算内容の退避・復元処理を並列化して実行することができるようにしている。そのため、複数のコプロセッサにおけるタスクの切り替えに要する時間を短縮できることができる。
【００８９】
また、本実施の形態によれば、切り替え先の第２のタスクの演算を行うコプロセッサに対応する演算レジスタデータ退避・復元回路のみに演算内容の復元を要求する演算レジスタデータ退避・復元要求信号を出力するようにしている。
また、使用中コプロセッサ記憶レジスタ１５１に格納された情報に基づいて、切り替え前の第１のタスクの演算を行うコプロセッサに対応する演算レジスタデータ退避・復元回路のみに演算内容の退避を要求する演算レジスタデータ退避・復元要求信号を出力するようにしている。
また、演算レジスタデータ退避・復元回路１０６に、切り替え前のタスクを示す情報を格納するタスク番号記憶レジスタ１６１を有するようにしている。そして、演算レジスタデータ退避・復元回路１０６は、タスク番号記憶レジスタ１６１に格納された情報が示すタスクと、タスク切り替え制御回路１０５から出力された切り替え先タスク番号信号が示すタスクとが同じ場合に、演算内容の退避及び復元のうち少なくとも１つを実行しないようにしてもよい。
【００９０】
これらによれば、演算内容の退避・復元が必要なコプロセッサに対してのみ、演算内容の退避・復元を行うようにすることができる。つまり、余分な退避・復元処理を行わないようにすることができるため、複数のコプロセッサにおけるタスクの切り替えに要する時間をより短縮できることができる。
【００９１】
また、本実施の形態によれば、複数の演算レジスタデータ退避・復元回路のうち、切り替え先の第２のタスクの演算を行うプロセッサに対応する複数の演算レジスタデータ退避・復元回路における演算内容の復元が終了した場合に、タスクの切り替えの終了を通知するタスク切り替え終了信号をプロセッサコア制御回路１２０に出力するようにしている。
【００９２】
これによれば、演算内容の退避のみ必要なコプロセッサにおける退避処理をバックグラウンドで実行しつつ、切り替え先の第２のタスクの演算を実行することができる。そのため、演算内容の退避のみ必要なコプロセッサにおける退避処理を待ち合わせる必要がなくなるため、複数のコプロセッサにおけるタスクの切り替えに要する時間をより短縮することができる。
【００９３】
（実施例１）
図６に本発明のタスク切り替え高速化回路１０に用いられるタスク切り替え制御回路１０５の実施例を示す。この例では、３個のコプロセッサ１０２〜１０４に対応したタスク切り替え制御回路１０５の例を示している。
【００９４】
タスク切り替え制御回路１０５は、使用中コプロセッサ記憶レジスタ５０１〜５０３、コプロセッサ状態レジスタ５０４〜５０６、ＡＮＤ回路５１１〜５１６、ＯＲ回路５２１〜５２３、ＮＯＲ回路５３１を有する。つまり、図６は、使用中コプロセッサ記憶レジスタ１５１が、使用中コプロセッサ記憶レジスタ５０１〜５０３を含み、コプロセッサ状態レジスタ１５２が、コプロセッサ状態レジスタ５０４〜５０６を含む場合について例示している。
【００９５】
プロセッサコア１０１のプロセッサコア制御回路１２０は、プロセッサコア１０２〜１０４で実行するタスクを切り替える場合、切り替え先のタスク番号を示す切り替え先タスク番号信号と、タスクの切り替えを要求する値"１"を示すタスク切り替え要求信号とをタスク切り替え制御回路１０５に出力する。プロセッサコア制御回路１２０より、切り替え先タスク番号信号、および、タスク切り替え要求信号が通知されると、タスク切り替え制御回路１０５は、まず、切り替え先タスク番号信号をタスク毎使用コプロセッサ対応情報テーブル１０８に出力する。
【００９６】
タスク毎使用コプロセッサ対応情報テーブル１０８は、コプロセッサ１０２〜１０４の個数幅の信号を出力する。この信号は、切り替え先タスク番号信号が示すタスク番号のタスクで使用するコプロセッサに対応する信号が"１"となり、それ以外のコプロセッサに対応する信号が"０"となる。この信号のうち、コプロセッサ１０２に対応する信号が使用中コプロセッサ記憶レジスタ５０１及びＡＮＤ回路５１１に出力され、コプロセッサ１０３に対応する信号が使用中コプロセッサ記憶レジスタ５０２及びＡＮＤ回路５１３に出力され、コプロセッサ１０４に対応する信号が使用中コプロセッサ記憶レジスタ５０３及びＡＮＤ回路５１３出力される。
【００９７】
ＡＮＤ回路５１１、５１３、５１５のそれぞれは、この信号とタスク切り替え要求信号をＡＮＤ演算する。ＡＮＤ回路５１１、５１３、５１５のそれぞれは、ＡＮＤ演算によって生成した信号を、各コプロセッサ１０２〜１０４に対して、演算レジスタデータ復元要求信号として出力する。具体的には、ＡＮＤ回路５１１は、生成した信号をコプロセッサ１０２及びＯＲ回路５２１に出力し、ＡＮＤ回路５１３は、生成した信号をコプロセッサ１０３及びＯＲ回路５２２に出力し、ＡＮＤ回路５１５は、生成した信号をコプロセッサ１０４及びＯＲ回路５２３に出力する。
【００９８】
また、使用中コプロセッサ記憶レジスタ５０１〜５０３は、コプロセッサ１０２〜１０４個数分存在する。使用中コプロセッサ記憶レジスタ５０１〜５０３は、それぞれに対応するコプロセッサ１０２〜１０４のそれぞれが、切り替え前のタスクで使用されているかどうかを示す情報が記憶されている。具体的には、使用中コプロセッサ記憶レジスタ５０１〜５０３は、自身に対応するコプロセッサが、切り替え前のタスクで使用されている場合は"１"が格納され、切り替え前のタスクで使用されていない場合は"０"が格納されている。使用中コプロセッサ記憶レジスタ５０１は、自身に格納されている値をＡＮＤ回路５１２に出力し、使用中コプロセッサ記憶レジスタ５０２は、自身に格納される値をＡＮＤ回路５１４に出力し、使用中コプロセッサ記憶レジスタ５０４は、自身に格納される値をＡＮＤ回路５１６に出力する。
【００９９】
ＡＮＤ回路５１２、５１４、５１６のそれぞれは、使用中コプロセッサ記憶レジスタ５０１〜５０３のそれぞれから出力された値とタスク切り替え要求信号をＡＮＤ演算する。ＡＮＤ回路５１２、５１４、５１６のそれぞれは、ＡＮＤ演算によって生成した信号を、各コプロセッサ１０２〜１０４に対して、演算レジスタ値退避要求信号として出力する。具体的には、ＡＮＤ回路５１２は、生成した信号をコプロセッサ１０２及びＯＲ回路５２１に出力し、ＡＮＤ回路５１３は、生成した信号をコプロセッサ１０３及びＯＲ回路５２２に出力し、ＡＮＤ回路５１４は、生成した信号をコプロセッサ１０４及びＯＲ回路５２３に出力する。
【０１００】
ＯＲ回路５２１〜５２３のそれぞれは、コプロセッサ１０２〜１０４毎に、演算レジスタデータ復元要求信号と演算レジスタデータ退避要求信号をＯＲ演算することによって得られる信号をコプロセッサ状態レジスタ５０４〜５０６のそれぞれに出力する。これによって、コプロセッサ状態レジスタ５０４〜５０６のうち、復元処理、もしくは、退避処理が要求されたコプロセッサに対応するコプロセッサ状態レジスタに、ＯＲ回路５２１〜５２３のそれぞれから出力された信号の値が格納される。ここで、コプロセッサ状態レジスタ５０４はコプロセッサ１０２に対応し、コプロセッサ状態レジスタ５０５はコプロセッサ１０３に対応し、コプロセッサ状態レジスタ５０６はコプロセッサ１０４に対応する。また、コプロセッサ状態レジスタ５０４〜５０６のそれぞれは、自身に格納された値を、コプロセッサ状態信号としてウェイト制御回路１０７及びＮＯＲ回路５３１に出力する。
【０１０１】
コプロセッサ状態レジスタ５０４〜５０６のそれぞれは、自身に格納された値を、ＮＯＲ回路５３１に出力するとともに、コプロセッサ状態信号としてウェイト制御回路１０７に出力する。復元処理、もしくは、退避処理が要求されたコプロセッサからタスク切り替え終了信号が返ってくると、そのコプロセッサに対応するコプロセッサ状態レジスタは、自身に格納された値をクリアする。タスク切り替え終了信号は、タスク切り替え処理が終了したことを示す信号である。つまり、切り替え処理を行なっているコプロセッサに対応するコプロセッサ状態レジスタのコプロセッサ状態信号は"１"となり、切り替え処理を行なっていないコプロセッサ状態レジスタのコプロセッサ状態信号は"０"となる。全てのコプロセッサ状態信号が０となると、ＮＯＲ回路５３１は、タスク切り替え終了信号を"１"として、プロセッサコア制御回路１２０に出力する。
【０１０２】
プロセッサコア制御回路１２０は、ＮＯＲ回路５３１から"１"となったタスク切り替え終了信号が出力された場合、タスクの切り替えを要求しない値"０"を示すタスク切り替え要求信号をタスク切り替え制御回路１０５に出力する。プロセッサコア制御回路１２０から"０"となったタスク切り替え要求信号が出力された場合、使用中コプロセッサ記憶レジスタ５０１〜５０３のそれぞれは、タスク毎使用コプロセッサ対応情報テーブル１０８から出力された信号の値を自身に格納する。また、ＡＮＤ回路５１１〜５１６は、"０"となった演算レジスタデータ復元要求信号及び演算レジスタデータ退避要求信号をコプロセッサ１０２〜１０４及びＯＲ回路５２１〜５２３に出力する。
【０１０３】
図７に本発明のタスク切り替え高速化回路１０に用いられる演算レジスタデータ退避・復元回路１０６の実施例を示している。この演算レジスタデータ退避・復元回路１０６はプロセッサコア１０１に接続されている個々のコプロセッサ１０２〜１０４内に存在している。
演算レジスタデータ退避・復元回路１０６は、タスク番号記憶レジスタ６０１、比較器６０２、レジスタ退避・復元制御回路６０３、レジスタアドレス生成回路６０４及びデータメモリアドレス生成回路６０５を有する。
【０１０４】
タスク番号記憶レジスタ６０１には、前回、このコプロセッサを用いたタスクのタスク番号が記憶されている。タスク番号記憶レジスタ６０１は、タスク番号記憶レジスタ１６１に相当する。タスク番号記憶レジスタ６０１は、自身に格納されるタスク番号を示す信号を比較器６０２及びデータメモリアドレス生成回路６０５に出力する。
比較器６０２は、タスク切り替え制御回路１０５から出力された切り替え先タスク番号信号が示すタスク番号と、タスク番号記憶レジスタ６０１から出力された信号が示すタスク番号とを比較する。比較器６０２は、もし、タスク番号が一致すれば、"１"を示す信号を出力し、タスク番号が一致しない場合は、"０"を示す信号を出力する。比較器６０２から出力された信号は、ＡＮＤ回路６２１、６２２及びＯＲ回路６３１に入力される。なお、ＡＮＤ回路６２１、６２２には、比較器６０２から出力された信号が反転されて入力される。
【０１０５】
ＡＮＤ回路６２１、６２２のそれぞれは、タスク切り替え制御回路１０５から出力された演算レジスタデータ退避要求信号及び演算レジスタデータ復元要求信号と、比較器６０２から出力された信号を反転した信号とをＡＮＤ演算する。ＡＮＤ回路６２１、６２２のそれぞれは、ＡＮＤ演算によって生成した信号を、レジスタ退避・復元制御回路６０３に出力する。つまり、タスク番号が一致すると、演算レジスタデータ退避要求信号、および、演算レジスタデータ復元要求信号は無視される。これは、前回のタスク番号が同じ場合は、すでに演算レジスタ１１１には使用する値が格納されているため、退避・復元処理を行なわなくてよいためである。また、この場合、ＯＲ回路６３１は、比較器６０２から出力された"１"を示す信号をＯＲ演算することになる。よって、ＯＲ回路６３１は、退避・復元処理が終了したことを通知する値"１"を示す演算レジスタデータ退避・復元終了信号をタスク切り替え制御回路１０５に出力する。
【０１０６】
レジスタ退避・復元制御回路６０３は、ＡＮＤ回路６２１、６２２を介して、演算レジスタデータ退避要求信号、および、演算レジスタデータ復元要求信号を受けると、それらの信号の値に応じて、退避処理、復元処理を開始する。具体的には、レジスタ退避・復元制御回路６０３は、ＡＮＤ回路６２１から出力された演算レジスタデータ退避要求信号の値が"１"を示す場合、退避処理を実行する。また、レジスタ退避・復元制御回路６０３は、ＡＮＤ回路６２２から出力された演算レジスタデータ復元要求信号の値が"１"を示す場合、復元処理を実行する。
【０１０７】
レジスタ退避・復元制御回路６０３は、退避処理又は復元処理を実行する場合、レジスタアドレス生成回路６０４及びデータメモリアドレス生成回路６０５を起動する。レジスタアドレス生成回路６０４は退避・復元するときの演算レジスタ番号を生成する。データメモリアドレス生成回路６０５は演算レジスタ値を退避・復元するときのデータメモリのアドレスを生成する。ここで、タスク切り替え制御回路１０５から出力された切り替え先タスク番号信号と、タスク番号記憶レジスタ６０１から出力された信号は、データメモリアドレス生成回路６０５に入力される。つまり、データメモリのアドレス生成には、切り替え先タスク番号、および、切り替え前タスク番号も用いられる。これは、タスク番号に応じて、演算レジスタ１１１に対してデータの退避又は復元を行うデータメモリ１１２のアドレスを変える必要があるためである。
【０１０８】
データメモリアドレス生成回路６０５は、切り替え前のタスク番号に基づいて、データメモリ１１２のうち、演算レジスタ１１１のデータを退避するアドレスを生成する。データメモリアドレス生成回路６０５は、切り替え先のタスク番号に基づいて、データメモリ１１２のうち、演算レジスタ１１１に復元するデータが格納されたアドレスを生成する。レジスタ退避・復元制御回路６０３は、レジスタアドレス生成回路６０４、データメモリアドレス生成回路６０５から生成されたアドレスを用いて、演算レジスタ１１１及びデータメモリ１１２間でデータを転送する。
【０１０９】
全てのコプロセッサ１０２〜１０４において、タスク切り替え処理が終了した場合、"０"となった演算レジスタデータ復元要求信号及び演算レジスタデータ退避要求信号がＯＲ回路６１１及びＡＮＤ回路６２１、６２２に入力される。この場合、ＯＲ回路６１１は、ＯＲ演算結果である"０"を示す信号をタスク番号記憶レジスタ６０１に出力する。タスク番号記憶レジスタ６０１は、ＯＲ回路６１１から"０"を示す信号が出力された場合、自身に格納する値を、切り替え先タスク番号信号が示す切り替え先タスク番号に更新する。
【０１１０】
図８に本発明のタスク切り替え高速化回路１０に用いられるウェイト制御回路１０７の実施例を示している。
ウェイト制御回路１０７は、デコーダ７０１、セレクタ７０２〜７０４、ＡＮＤ回路７１１〜７１６及びＯＲ回路７２１を有する。
【０１１１】
プロセッサコア１０１のプロセッサコア制御回路１２０は、コプロセッサ１０２〜１０４に対して、演算の要求等の制御を行う場合、制御を行うコプロセッサの番号を示すコプロセッサ番号信号と、制御内容を示す演算制御信号と、をウェイト制御回路１０７に出力する。デコーダ７０１は、プロセッサコア制御回路１２０から出力されたプロセッサ番号信号を、プロセッサコア制御回路１２０が制御対象として指定するコプロセッサに対応するビットが"１"となるコプロセッサ数の幅を有する信号に変換して出力する。具体的には、デコーダ回路７０１は、コプロセッサ１０２に対応する信号をＡＮＤ回路７１１、７１４に出力し、コプロセッサ１０３に対応する信号をＡＮＤ回路７１２、７１５に出力し、コプロセッサ１０４に対応する信号をＡＮＤ回路７１３、７１６に出力する。
【０１１２】
ＡＮＤ回路７１１〜７１３のそれぞれは、デコーダ７０１から出力された信号と、タスク切り替え制御回路１０５から出力されたコプロセッサ状態信号を反転した信号とをＡＮＤ演算する。ＡＮＤ回路７１１〜７１３のそれぞれは、ＡＮＤ演算によって生成した信号を、セレクタ７０２〜７０４のそれぞれにデータ選択信号として出力する。具体的には、コプロセッサ状態レジスタ５０４から出力されたコプロセッサ状態信号がＡＮＤ回路７１１、７１４に対して入力され、コプロセッサ状態レジスタ５０５から出力されたコプロセッサ状態信号がＡＮＤ回路７１２、７１５に対して入力され、コプロセッサ状態レジスタ５０６から出力されたコプロセッサ状態信号がＡＮＤ回路７１３、７１６に対して入力される。また、ＡＮＤ回路７１１は、生成した信号をセレクタ７０２に出力し、ＡＮＤ回路７１２は、生成した信号をセレクタ７０３に出力し、ＡＮＤ回路７１３は、生成した信号をセレクタ７０４に出力する。
【０１１３】
セレクタ７０２〜７０４のそれぞれは、プロセッサ毎に、プロセッサコア制御回路１２０から出力された演算制御信号か"０"を選択する。セレクタ７０２〜７０４のそれぞれは、データ選択信号が"０"のときは、"０"を対応するコプロセッサに出力し、データ選択信号が"１"のときは、演算制御信号を対応するコプロセッサに出力する。これによって、コプロセッサ番号で指定されたコプロセッサに対して、そのコプロセッサのコプロセッサ状態信号が"０"のときだけ、演算制御信号がコプロセッサ演算制御信号として出力される。このようにすることで、プロセッサコア制御回路１２０からタスク切り替え中のコプロセッサに対する演算の要求を抑止することができる。
【０１１４】
他方、ＡＮＤ回路７１４〜７１６のそれぞれは、デコーダ７０１から出力された信号と、タスク切り替え制御回路１０５から出力されたコプロセッサ状態信号とをＡＮＤ演算する。ＡＮＤ回路７１４〜７１６のそれぞれは、ＡＮＤ演算によって生成した信号を、ＯＲ回路７２１に出力する。ＯＲ回路７２１は、ＡＮＤ回路７１４〜７１６のそれぞれから出力された信号をＯＲ演算する。ＯＲ回路７２１は、ＯＲ演算によって生成した信号をプロセッサコア制御回路１２０にウェイト信号として出力する。これによって、制御を行うコプロセッサ番号として指定されたコプロセッサのコプロセッサ状態信号が"１"のときは、ウェイト信号が"１"になり、プロセッサコア１０１の処理が停止する。つまり、これは、プロセッサコア１０１が演算レジスタのデータの退避処理又は復元処理が終わっていないコプロセッサにアクセスした場合に、その退避処理又は復元処理が終了するまでプロセッサコア１０１を停止する機能を与えるものである。このようにすることで、プロセッサコア制御回路１２０からタスク切り替え中のコプロセッサに対する演算の要求を抑止することができる。
【０１１５】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【０１１６】
本実施の形態では、コプロセッサ数が３つの場合について例示したが、コプロセッサの数はこれに限られない。
また、各回路１０５、１０６、１０７、１２０において入出力される信号の値が"０"又は"１"となるとして例示しているものがあるが、この値に限られない。
また、本発明は、携帯電話やＡＶ機器に用いられる信号処理ＬＳＩにも適用することができる。
【０１１７】
この出願は、２０１０年４月３０日に出願された日本出願特願２０１０−１０４８８０を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０１１８】
１０    タスク切り替え高速化回路１０
３０    情報処理装置
１０１、２０１、３０１    プロセッサコア
１０２、１０３、１０４、２０２、２０３、２０４、３１１、３１２、３１ｎ    コプロセッサ
１０５    タスク切り替え制御回路
１０６    演算レジスタデータ退避・復元回路
１０７    ウェイト制御回路
１０８    タスク毎使用コプロセッサ対応情報テーブル
１０９    コプロセッサ演算制御回路
１１０    コプロセッサ演算器
１１１    演算レジスタ
１１２、１１３、１１４、２０５、２０６、２０７、２０８    データメモリ
１２０    プロセッサコア制御回路
１５１    使用中コプロセッサ記憶レジスタ
１５２    コプロセッサ状態レジスタ
１６１    タスク番号記憶レジスタ
２０９    命令メモリ
２１０    バスコントローラ
３０２    タスク切り替え制御部
３２１、３２２、３２ｎ    演算部
３３１、３３２、３３ｎ    演算記憶部
３４１、３４２、３４ｎ    退避・復元部
３５１、３５２、３５ｎ    退避記憶部
５０１、５０２、５０３    使用中コプロセッサ記憶レジスタ
５０４、５０５、５０６    コプロセッサ状態レジスタ
６０１    タスク番号記憶レジスタ
６０２    比較器
６０３    レジスタ退避、復元制御回路
６０４    レジスタアドレス生成回路
６０５    データメモリアドレス生成回路
７０１    デコーダ回路
７０２、７０３、７０４    セレクタ
【図１】
2011135759.tif 000003
【図２】
2011135759.tif 000004
【図３】
2011135759.tif 000005
【図４】
2011135759.tif 000006
【図５】
2011135759.tif 000007
【図６】
2011135759.tif 000008
【図７】
2011135759.tif 000009
【図８】
2011135759.tif 000010
【手続補正書】
【提出日】平成24年10月25日(2012.10.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサコアと、
前記プロセッサコアからの要求に応じて演算を行う演算手段と、前記演算手段の演算内容を格納する演算記憶手段と、を有する複数のコプロセッサと、
前記複数のコプロセッサのそれぞれに対応し、前記演算記憶手段から退避した演算内容を格納する複数の退避記憶手段と、
前記複数のコプロセッサのうち少なくとも１つによって演算されるタスクを、第１のタスクから第２のタスクに切り替える場合に、前記演算内容の退避・復元を要求する退避・復元要求信号を出力するタスク切替制御手段と、
前記複数のコプロセッサのそれぞれに対応した複数の退避・復元手段と、
前記プロセッサコアから前記コプロセッサに対する前記演算の要求を監視するウェイト制御手段と、を備え、
前記タスク切替制御手段は、前記複数の退避・復元手段に並列的に前記退避・復元要求信号を出力し、
前記複数の退避・復元手段のそれぞれは、前記退避・復元要求信号に応じて、前記演算記憶手段に格納された第１のタスクに関する演算内容の前記退避記憶手段への退避、及び、前記退避記憶手段に格納された第２のタスクに関する演算内容の前記演算記憶手段への復元、のうち少なくとも１つを実行し、
前記ウェイト制御手段は、前記複数の退避・復元手段の全てにおける前記退避及び前記復元の少なくとも１つが終了する前に、前記プロセッサコアの処理が開始され、前記退避及び前記復元の少なくとも１つが終了していない退避・復元手段に対応するコプロセッサに対して前記演算が要求されるときには、前記プロセッサコアの処理を停止し、
前記ウェイト制御手段は、前記演算が要求されるコプロセッサに対応する退避・復元手段における前記退避及び前記復元の少なくとも１つが終了したときに、前記プロセッサコアの処理を再開する、
情報処理装置。
【請求項２】
前記退避・復元手段は、切り替え前のタスクを示すタスク情報を格納するタスク情報記憶手段を有し、
前記タスク切替制御手段は、前記退避・復元要求信号とともに、前記第２のタスクを示すタスク情報を前記退避・復元手段に出力し、
前記退避・復元手段は、前記タスク切替制御手段から出力されたタスク情報と、前記タスク情報記憶手段に格納されたタスク情報とが同じ場合に、前記演算内容の退避及び復元を実行しないようにするとともに、前記タスク切替制御手段から出力されたタスク情報を前記タスク情報記憶手段に格納する請求項１に記載の情報処理装置。
【請求項３】
前記退避・復元要求信号は、切り替え前のタスクの演算内容の退避を要求する退避要求信号と、切り替え先のタスクの演算内容の復元を要求する復元要求信号と、を含み、
前記タスク切替制御手段は、前記複数の退避・復元手段のうち、前記第２のタスクの演算を行うコプロセッサに対応する退避・復元手段のみに前記第２のタスクの演算内容の復元を要求する復元要求信号を出力する請求項１又は２に記載の情報処理装置。
【請求項４】
前記タスク切替制御手段は、切り替え前のタスクの演算を行うコプロセッサを示すコプロセッサ情報を格納するコプロセッサ情報記憶手段を有し、
前記タスク切替制御手段は、前記コプロセッサ情報に基づいて、前記複数の退避・復元手段のうち、前記第１のタスクの演算を行うコプロセッサに対応する退避・復元手段のみに前記退避要求信号を出力し、前記第２のタスクの演算を行うコプロセッサを示すコプロセッサ情報を前記コプロセッサ情報記憶手段に格納する請求項３に記載の情報処理装置。
【請求項５】
前記情報処理装置は、前記タスクと、当該タスクの演算を行うコプロセッサとを対応付けた対応情報を格納する対応情報記憶手段をさらに備え、
前記プロセッサコアは、前記複数のコプロセッサにおいて演算するタスクを管理するプロセッサコア制御手段を有し、
前記プロセッサコア制御手段は、前記第１のタスクから第２のタスクに切り替える場合に、前記第２のタスクを示すタスク情報を前記タスク切替制御手段に出力し、
前記タスク切替制御手段は、前記対応情報に基づいて、前記プロセッサコア制御手段から出力されたタスク情報が示す第２のタスクの演算を行うコプロセッサを特定し、特定したコプロセッサに対応する退避・復元手段に前記復元要求信号を出力するとともに、特定したコプロセッサを示すコプロセッサ情報を前記コプロセッサ情報記憶手段に格納する請求項４に記載の情報処理装置。
【請求項６】
前記プロセッサコアは、前記複数のコプロセッサにおいて演算するタスクを管理するプロセッサコア制御手段を有し、
前記タスク切替制御手段は、前記複数の退避・復元手段のうち、前記第２のタスクの演算を行うコプロセッサに対応する退避・復元手段における演算内容の復元が終了した場合に、前記第１のタスクから第２のタスクへの切り替えの終了を通知するタスク切り替え終了信号を前記プロセッサコア制御手段に出力し、
前記プロセッサコア制御手段は、前記タスク切り替え終了信号に応じて、前記第２のタスクの演算を前記コプロセッサに要求する請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項７】
前記プロセッサコアは、前記タスク切替制御手段を有し、
前記コプロセッサは、前記退避・復元手段を有する請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
プロセッサコアが、前記プロセッサコアからの要求に応じてタスクの演算を行う複数のコプロセッサのうち少なくとも１つによって演算を行うタスクを、第１のタスクから第２のタスクに切り替える場合に、前記タスクの演算内容の退避・復元を要求する退避・復元要求信号を前記複数のコプロセッサに対して並列的に出力し、
前記複数のコプロセッサのそれぞれが、前記プロセッサコアから出力された退避・復元要求信号に応じて、前記第１のタスクの演算内容の退避、及び、前記第２のタスクの演算内容の復元、のうち少なくとも１つを実行し、
前記複数のコプロセッサの全てにおける前記退避及び前記復元の少なくとも１つが終了する前に、前記プロセッサコアの処理が開始され、前記退避及び前記復元の少なくとも１つが終了していないコプロセッサに対して前記演算が要求されるときには、前記プロセッサコアの処理を停止し、
前記演算が要求されるコプロセッサにおける前記退避及び前記復元の少なくとも１つが終了したときに、前記プロセッサコアの処理を再開する、
を備えたタスク切り替え方法。
【国際調査報告】
2011135759.tif 000011
2011135759.tif 000012
2011135759.tif 000013
2011135759.tif 000014