[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP5776688B2 - 情報処理装置及びタスク切り替え方法 - Google Patents

情報処理装置及びタスク切り替え方法 Download PDF

Info

Publication number
JP5776688B2
JP5776688B2 JP2012512625A JP2012512625A JP5776688B2 JP 5776688 B2 JP5776688 B2 JP 5776688B2 JP 2012512625 A JP2012512625 A JP 2012512625A JP 2012512625 A JP2012512625 A JP 2012512625A JP 5776688 B2 JP5776688 B2 JP 5776688B2
Authority
JP
Japan
Prior art keywords
task
coprocessor
save
processor core
switching
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.)
Expired - Fee Related
Application number
JP2012512625A
Other languages
English (en)
Other versions
JPWO2011135759A1 (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 JP2012512625A priority Critical patent/JP5776688B2/ja
Publication of JPWO2011135759A1 publication Critical patent/JPWO2011135759A1/ja
Application granted granted Critical
Publication of JP5776688B2 publication Critical patent/JP5776688B2/ja
Expired - Fee Related 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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 or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は、情報処理装置及びタスク切り替え方法に関する。特に複数のコプロセッサにおけるタスクを切り替える技術に関する。
近年、処理の柔軟性を高めるため、専用ハードウェアを用いるのではなく、組み込み用プロセッサコアに専用のコプロセッサを接続して、信号処理を行う専用LSI(Large Scale Integration)が増加している。この場合、面積効率を向上させる目的で、1つのプロセッサコアで複数のタスクを処理させる必要性が出てくる。特に、異なる性質の複数のタスクを1つのプロセッサコアで行う場合、1つのプロセッサコアに複数のコプロセッサを接続する場合が増えてくると考えられる。
通常、タスク切り替えを行う場合、そのプロセッサコア、および、コプロセッサに存在する演算レジスタのデータを一旦退避させる。そして、再び、もとのタスクに切り替えられたときに、退避させたデータを演算レジスタに復元する必要がある。
このデータの退避・復元処理はソフトウェアに記述された命令列に従って、プロセッサコアが行っているものがほとんどである。しかし、この手法では、タスク切り替えを行う度に、現在のタスクのデータの演算レジスタからの読み出し、データのメモリへの書き込み、次のタスクのデータのメモリからの読み出し、データの演算レジスタへの書き込みを演算レジスタの個数分だけ行う必要がある。また複数のコプロセッサを接続した場合、プロセッサコアが、そのコプロセッサの個数分だけの上述した処理を順次行う必要がある。その結果、タスク切り替えを高頻度で行うと、その退避、復元作業に必要な処理時間によるオーバヘッドが大きくなってしまっていた。そのため、リアルタイム処理ではタスク切り替えが困難であるという問題が生じていた。
その問題を解決するために、例えば、特許文献1や特許文献2では、コプロセッサを使用するタスクと使用しないタスクを識別し、コプロセッサコンテキストの退避及び復帰を省略することによって、タスク切り替え処理を高速化する手法が提案されている。また、特許文献3では、そのタスクで使用した演算レジスタのみを退避することにより、タスク切り替えを高速化する手法が提案されている。
ただし、このような手法を用いた場合でも、使用するコプロセッサの数が増えた場合、タスク切り替え時の演算レジスタ退避、復元には、関連するコプロセッサの個数分だけ行う必要がある。また、その退避、復元作業が終わるまで、タスク切り替えが行われないため、依然として、タスク切り替えには大きな時間がかかっていた。
特開平04−095137号公報 特開平04−051329号公報 特開平06−004305号公報
背景技術として説明したように、タスク切り替えを行う度に、プロセッサコアが、現在のタスクのデータの演算レジスタからの読み出し、データのメモリへの書き込み、次のタスクのデータのメモリからの読み出し、データの演算レジスタへの書き込みを演算レジスタの個数分だけ行う必要がある。また複数のコプロセッサを接続した場合、そのコプロセッサの個数分だけ上述した処理を順次行う必要がある。その結果、複数のコプロセッサにおいて、タスクを切り替えるための時間が大きくなってしまうという問題があった。
本発明の目的は、上述した課題を解決するために、複数のコプロセッサにおけるタスクの切り替えに要する時間を短縮することのできる情報処理装置及びタスク切り替え方法を提供することにある。
本発明の第1の態様にかかる情報処理装置は、プロセッサコアと、プロセッサコアからの要求に応じて演算を行う演算部と、前記演算部の演算内容を格納する演算記憶部と、を有する複数のコプロセッサと、前記複数のコプロセッサのそれぞれに対応し、前記演算記憶部から退避した演算内容を格納する複数の退避記憶部と、前記複数のコプロセッサのうち少なくとも1つによって演算されるタスクを、第1のタスクから第2のタスクに切り替える場合に、前記演算内容の退避・復元を要求する退避・復元要求信号を出力するタスク切替制御部と、前記複数のコプロセッサのそれぞれに対応した複数の退避・復元部と、を備え、前記複数の退避・復元部のそれぞれは、前記退避・復元要求信号に応じて、前記演算記憶部に格納された第1のタスクに関する演算内容の前記退避記憶部への退避、及び、前記退避記憶部に格納された第2のタスクに関する演算内容の前記演算記憶部への復元、のうち少なくとも1つを実行するものである。
本発明の第2の態様にかかるタスク切り替え方法は、プロセッサコアからの要求に応じてタスクの演算を行う複数のコプロセッサにおいて演算するタスクを切り替えるタスク切り替え方法であって、前記プロセッサコアが、前記複数のコプロセッサのうち少なくとも1つによって演算を行うタスクを、第1のタスクから第2のタスクに切り替える場合に、前記タスクの演算内容の退避・復元を要求する退避・復元要求信号を前記複数のコプロセッサに対して出力するステップと、前記複数のコプロセッサのそれぞれが、前記プロセッサコアから出力された退避・復元要求信号に応じて、前記第1のタスクの演算内容の退避、及び、前記第2のタスクの演算内容の復元、のうち少なくとも1つを実行するものである。
上述した本発明の各態様によれば、複数のコプロセッサにおけるタスクの切り替えに要する時間を短縮できることのできる情報処理装置及びタスク切り替え方法を提供することができる。
本発明の実施の形態にかかる情報処理装置の構成を示すブロック図である。 本発明の実施の形態にかかるタスク切り替え高速化回路の構成を示すブロック図である。 本発明の実施の形態にかかるプロセッサとコプロセッサの関係を示すブロック図である。 背景技術にかかるタスク切り替え処理の流れの例を示すフロー図である。 本発明の実施の形態にかかるタスク切り替え処理の流れの例を示すフロー図である。 本発明の実施の形態にかかるタスク切り替え高速化回路に用いられるタスク切り替え制御回路の実施例を示すブロック図である。 本発明の実施の形態にかかるタスク切り替え高速化回路に用いられる演算レジスタデータ退避・復元回路の実施例を示すブロック図である。 本発明の実施の形態にかかるタスク切り替え高速化回路に用いられるウェイト制御回路の実施例を示すブロック図である。
まず、図1を参照して、本発明の実施の形態にかかるタスク切り替え高速化回路の概要となる情報処理装置について説明する。図1は、本発明の実施の形態にかかる情報処理装置の構成を示すブロック図である。
情報処理装置30は、プロセッサコア301、コプロセッサ311〜31n及び退避記憶部351〜35nを有する。nは、任意の正整数である。プロセッサコア301は、タスク切り替え制御部302を有する。コアプロセッサ311は、演算部321、演算記憶部331及び退避・復元部341を有する。コアプロセッサ312〜コプロセッサ31nにいても、コアプロセッサ311と同様の構成であるため、説明を省略する。
プロセッサコア301は、コプロセッサ311〜31nに対して、タスクの演算を要求する。
タスク切り替え制御部302は、複数のコプロセッサ311〜31nのうち少なくとも1つによって演算されるタスクを、第1のタスクから第2のタスクに切り替える場合に、そのコプロセッサに退避・復元要求信号を出力する。退避・復元要求信号は、演算記憶部に格納された演算内容の退避・復元を要求する信号である。
コプロセッサ311〜31nのそれぞれは、タスクの演算を実行する。
演算部321〜32nのそれぞれは、プロセッサコア301からの要求に応じて演算を行う。
演算記憶部331〜33nのそれぞれは、演算部321〜32nのそれぞれの演算内容を格納する。
退避・復元部341〜34nのそれぞれは、退避・復元要求信号に応じて、演算記憶部331〜33nのそれぞれに格納された第1のタスクに関する演算内容の退避記憶部351〜35nのそれぞれへの退避、及び、退避記憶部351〜35nのそれぞれに格納された第2のタスクに関する演算内容の演算記憶部331〜33nのそれぞれへの復元、のうち少なくとも1つを実行する。つまり、退避・復元部341〜34nのそれぞれは、複数のコプロセッサ311〜31nのそれぞれに対応する。
退避記憶部351〜35nのそれぞれは、演算記憶部331〜33nのそれぞれから退避した演算内容を格納する。つまり、退避記憶部351〜35nのそれぞれは、複数のコプロセッサ311〜31nのそれぞれに対応する。
続いて、本発明の実施の形態にかかる情報処理装置の処理について説明する。
タスク切り替え制御部302は、複数のコプロセッサ311〜31nのうち少なくとも1つによって演算されるタスクを、第1のタスクから第2のタスクに切り替える場合に、そのコプロセッサに含まれる退避・復元部に退避・復元要求信号を出力する。ここで、コプロセッサ311に含まれる退避・復元部341に退避・復元要求信号が出力されたものとする。退避・復元部341は、退避・復元要求信号に応じて、演算記憶部331に格納された第1のタスクに関する演算内容の退避記憶部351への退避、及び、退避記憶部351に格納された第2のタスクに関する演算内容の演算記憶部331への復元、のうち少なくとも1つを実行する。
次に、本発明の実施の形態について図面を参照して詳細に説明する。
図2に本発明の実施の形態にかかるタスク切り替え高速化回路の構成を示すブロック図である。
タスク切り替え高速化回路10は、プロセッサコア101、コプロセッサ102、103、104、データメモリ112〜114を有する。
プロセッサコア101は、タスク切り替え制御回路105、ウェイト制御回路107、タスク毎使用コプロセッサ対応情報テーブル108及びプロセッサコア制御回路120を有する。タスク切り替え制御回路105は、使用中コプロセッサ記憶レジスタ151及びコプロセッサ状態レジスタ152を有する。
コプロセッサ102は、演算レジスタデータ退避・復元回路106、コプロセッサ演算制御回路109、コプロセッサ演算器110及び演算レジスタ111を有する。なお、コプロセッサ103、104の構成については、コプロセッサ102と同様であるため、説明を省略する。演算レジスタデータ退避・復元回路106は、タスク番号記憶レジスタ161を有する。
プロセッサコア101は、演算器(図示せず)を有する。プロセッサコア制御回路120は、実行すると決定したタスクを演算器に実行させる。また、プロセッサコア制御回路120は、タスク切り替え要求信号をタスク切り替え制御回路105に出力する。タスク切り替え要求信号は、実行すると決定したタスクへの切り替えを要求する信号である。また、プロセッサコア制御回路120は、切り替え先タスク番号信号をタスク切り替え制御回路105に出力する。切り替え先タスク番号信号は、実行すると決定した切り替え先のタスクのタスク番号を示す信号である。
コプロセッサ102〜104は、プロセッサコア101からの要求に応じて、タスクの演算を実行する。
タスク切り替え制御回路105は、プロセッサコア101内のプロセッサコア制御回路120から、タスク切り替え要求信号と切り替え先タスク番号信号が入力される。タスク切り替え制御回路105は、タスクの切り替えを要求したコプロセッサにおいて、タスクの切り替えが終了した場合、プロセッサコア制御回路120に対して、タスク切り替え終了信号を出力する。
また、タスク切り替え制御回路105からは、個々のコプロセッサ102、103、104に対して、演算レジスタ値退避・復元要求信号と切り替え先タスク番号信号が出力される。コプロセッサ102〜104のそれぞれは、演算レジスタデータ退避・復元要求信号に応じて、演算レジスタ111に格納されるデータの退避・復元を行う。これによって、コプロセッサ102〜104のそれぞれにおいて実行されるタスクが切り替わる。データの退避・復元が終了した場合、コプロセッサ102〜104のそれぞれは、演算レジスタ退避・復元終了信号をタスク切り替え制御回路105に出力する。
タスク切り替え制御回路105には、タスク毎使用コプロセッサ対応情報テーブル108も接続される。タスク切り替え制御回路105は、タスク毎使用コプロセッサ対応情報テーブル108を使用して、個々のタスク毎に使用されるコプロセッサに関する情報を取得する。タスク切り替え制御回路105は、取得した情報に基づいたコプロセッサに対して演算レジスタ値退避・復元要求信号を出力する。
さらに、タスク切り替え制御回路105は、ウェイト制御回路107に対して、コプロセッサ102〜104のそれぞれがタスク切り替え中か否かを示すコプロセッサ状態信号を出力する。タスク切り替え制御回路105は、タスク切り替え制御部302として機能する。
演算レジスタデータ退避・復元回路106は、演算レジスタ値退避・復元要求信号に応じて、演算レジスタ111に格納された切り替え前のタスクに関する演算内容のデータのメモリ112への退避、及び、データメモリ112に格納された切り替え先のタスクに関する演算内容の演算レジスタ111への復元、のうち少なくとも1つを実行する。演算レジスタデータ退避・復元回路106は、タスクの演算内容の退避・復元が終了した場合、演算レジスタ退避・復元終了信号をタスク切り替え制御回路105に出力する。コプロセッサにおいて、タスクに関する演算内容の退避・復元が終了したときに、そのコプロセッサにおけるタスクの切り替えが終了したことになる。演算レジスタデータ退避・復元回路106は、退避・復元部341〜34nとして機能する。
ウェイト制御回路107には、プロセッサコア制御回路120から演算制御信号及びコプロセッサ番号信号が入力される。演算制御信号は、コプロセッサ102〜104における演算を制御する信号である。コプロセッサ番号信号は、演算制御信号によって制御するコプロセッサの番号を示す信号である。ウェイト制御回路107は、プロセッサコア制御回路120から出力された演算制御信号と、タスク切り替え制御回路105から出力されたコプロセッサ状態信号とに基づいて、コプロセッサ演算制御信号をコプロセッサ演算制御回路109に出力する。また、ウェイト制御回路107は、コプロセッサ状態信号に基づいて、コプロセッサ102〜104のうち、プロセッサコア101がコプロセッサ演算制御信号によって演算を制御しようとしたコプロセッサがタスク切り替え中の場合、ウェイト信号をプロセッサコア制御回路120に出力する。ウェイト信号は、プロセッサコア101における処理を停止させる信号である。
タスク毎使用コプロセッサ対応情報テーブル108は、タスクと、そのタスクを実行するコプロセッサとを対応付けた対応情報を格納する。タスク毎使用コプロセッサ対応情報テーブル108は、タスク切り替え制御回路105から出力された切り替え先タスク番号信号に応じて、コプロセッサ信号をタスク切り替え制御回路105に出力する。コプロセッサ信号は、切り替え先タスク番号信号が示すタスク番号のタスクを実行するコプロセッサを示す信号である。なお、タスク毎使用コプロセッサ対応情報テーブル108は、自身に格納する対応情報に基づいて、切り替え先タスク番号信号が示すタスク番号のタスクを実行するプロセッサを特定する。タスク毎使用コプロセッサ対応情報テーブル108は、例えば、メモリ、ハードディスク等の記憶装置を含む。対応情報は、例えば、本実施の形態において実行されるタスクを含んだプログラムを起動したときに、他の記憶装置からタスク毎使用コプロセッサ対応情報テーブル108にロードされる。
コプロセッサ演算制御回路109は、コプロセッサ演算器110を制御する。コプロセッサ演算制御回路109は、ウェイト制御回路107を介してプロセッサコア101から出力されたコプロセッサ演算制御信号に応じて、コプロセッサ演算器110にタスクの演算を実行させる。
コプロセッサ演算器110は、実行するタスクの演算を行う。コプロセッサ演算器110は、タスクの演算内容を演算レジスタ111に格納する。コプロセッサ演算器110は、演算部321〜32nとして機能する。
演算レジスタ111は、コプロセッサ演算器110によって、タスクの演算内容となるデータが格納される。演算レジスタ111は、演算記憶部33n〜33nとして機能する。
データメモリ112は、コプロセッサ102が実行するタスクを切り替える場合に、演算レジスタ111に格納されたデータが退避される。データメモリ113、114のそれぞれは、コプロセッサ103、104のそれぞれが実行するタスクを切り替える場合に、それぞれの演算レジスタ(図示せず)に格納されたデータが退避される。データメモリ112〜114は、退避記憶部351〜35nとして機能する。
プロセッサコア制御回路120は、プロセッサコア101及びコプロセッサ102〜104において実行するタスクを管理する。プロセッサコア制御回路120は、タスク切り替え要求信号によって、タスク切り替え制御回路105に対してコプロセッサ102〜104におけるタスクの切り替えを要求する。プロセッサコア制御回路120は、演算制御信号によって、コプロセッサ102〜104に対してタスクの演算を要求する。
使用中コプロセッサ記憶レジスタ151は、タスクを実行するために使用しているコプロセッサを示す情報を格納する。使用中コプロセッサ記憶レジスタ151に格納される情報は、コプロセッサ102が実行するタスクを切り替えるときに、切り替え前のタスクを実行していたコプロセッサを示す情報として使用される。
コプロセッサ状態レジスタ152は、コプロセッサ102〜104がタスク切り替え中であるか否かを示す情報が格納される。
タスク番号記憶レジスタ161は、切り替え前のタスクのタスク番号を示す情報が格納される。
[動作の説明]
次に、本発明のタスク切り替え高速化回路10の動作について、図2のブロック図を用いて説明する。
タスク切り替え制御回路105は、プロセッサコア101のプロセッサコア制御回路120より、タスク切り替え要求信号と切り替え先タスク番号信号が通知されると、その切り替え先タスク番号信号をタスク毎使用コプロセッサ対応情報テーブル108に出力する。タスク毎使用コプロセッサ対応情報テーブル108は、タスク切り替え制御回路105から出力された切り替え先タスク番号信号が示すタスク番号のタスクを実行するコプロセッサを示すコプロセッサ番号信号をタスク切り替え制御回路105に出力する。このようにして、タスク切り替え制御回路105は、切り替え先のタスクを実行するコプロセッサのコプロセッサ番号を取得する。
次に、タスク切り替え制御回路105は、その内部に有する使用中コプロセッサ記憶レジスタ151に記憶されている情報に基づいて、個々のコプロセッサ102〜104に対して、切り替え前のタスクで使用していたか、と、切り替え後のタスクで使用するかを通知する信号を出力する。これは、そのまま、演算レジスタデータ退避・復元要求信号となる。使用中コプロセッサ記憶レジスタ151に記憶されている情報は、切り替え前のタスクで使用されているコプロセッサを示す情報となる。
具体的には、タスクを切り替える場合、切り替え前のタスクで使用されていたコプロセッサは、演算レジスタ111に格納された演算内容を退避する必要がある。また、タスクを切り替える場合、切り替え先のタスクで使用するコプロセッサは、退避されていた演算内容を演算レジスタ111に復元する必要がある。つまり、演算レジスタデータ退避・復元要求信号は、出力先のコプロセッサに対して、演算内容の退避を行わせるか否か、及び、演算内容の復元を行わせるか否かを示す信号である。この信号と同時に、タスク切り替え制御回路105は、個々のコプロセッサ102〜104に対して、切り替え先タスク番号も通知する。この切り替え先タスク番号は、切り替え先タスク番号信号によって通知される。
また、タスク切り替え制御回路105は、コプロセッサ102〜104毎のタスク切り替え状態を示すコプロセッサ状態レジスタ152に、現在のコプロセッサ102〜104の状態をセットする。
個々のコプロセッサ102〜104内に存在する演算レジスタデータ退避・復元回路106は、タスク切り替え制御回路105から演算レジスタデータ退避・復元要求信号、および、切り替え先タスク番号信号を受け取る。演算レジスタデータ退避・復元回路106は、所属するコプロセッサがタスク切り替え前に使用されていたら、演算レジスタ111のデータを切り替え前のタスク番号に対応するデータメモリ112のメモリ領域に退避する。また、演算レジスタデータ退避・復元回路106は、所属するコプロセッサがタスク切り替え後に使用されるなら、切り替え後のタスク番号に対応する演算レジスタ111のデータを復元する。切り替え前のタスク番号は、演算レジスタデータ退避・復元回路106内に存在するタスク番号記憶レジスタ161から読み出す。
演算レジスタデータ退避・復元回路106は、退避・復元処理が終了したときに、このタスク番号記憶レジスタ161の値を、切り替え後のタスク番号に更新する。
退避・復元処理が終了したら、演算レジスタデータ退避・復元回路106は、タスク切り替え制御回路105に演算レジスタ退避・復元終了信号を出力する。
演算レジスタデータ退避・復元回路106から演算レジスタ退避・復元終了信号が出力されると、タスク切り替え制御回路105は、コプロセッサ状態レジスタ152に格納される値のうち、演算レジスタ退避・復元終了信号を出力したコプロセッサに対応する値をクリアする。
このコプロセッサ状態レジスタ152の値は常にウェイト制御回路107に出力されている。もし、プロセッサコア101からコプロセッサ102〜104のいずれかに対してアクセスするときに、アクセス先のコプロセッサのタスク切り替え処理が終了していない場合、ウェイト制御回路107は、ウェイト信号をプロセッサコア101に出力する。ウェイト信号は、タスク切り替え処理が終了するまで、プロセッサコア101の処理を停止させる信号である。
タスク切り替え制御回路105は、コプロセッサ102〜104におけるタスク切り替え処理が終了したときに、使用中コプロセッサ記憶レジスタ151の値を更新する。
次に、図3、図4、図5を用いて複数のコプロセッサを接続したプロセッサコアにおけるタスク切り替え処理の流れの例を、背景技術にかかる手法を用いた場合と、本実施の形態にかかるタスク切り替え高速化回路10を用いた場合について説明する。具体的には、図3に示す構成において、背景技術にかかる手法を適用した場合と、本実施の形態にかかる手法を適用した場合とのそれぞれの処理について説明する。
図3には、それぞれの手法を適用する構成におけるプロセッサコアとコプロセッサの関係を示すブロック図を示す。プロセッサコア201には、複数のコプロセッサ202〜204が接続されている。プロセッサコア201およびコプロセッサ202〜204のそれぞれにはデータメモリ205〜208のそれぞれが接続されている。
タスク切り替え時には、プロセッサコア201およびコプロセッサ202〜204内にある演算レジスタ(図示せず)のそれぞれに格納されたデータの退避・復元処理は、プロセッサコア201及びコプロセッサ202〜204のそれぞれが、自身に接続されているデータメモリ205〜208のそれぞれに対して行うものとする。また、プロセッサコア201及びコプロセッサ202〜204は、バスコントローラ210を介して、データメモリ205〜208、外部メモリ(図示せず)及びI/O(Input/Output)インタフェースに相互にアクセス可能である。
図4には、図3に示す構成に、背景技術にかかる手法を適用した場合におけるタスク切り替え処理の流れの例を示している。背景技術にかかるタスク切り替え処理では、プロセッサコア201が個々のコプロセッサ202〜204に対して演算レジスタのデータの退避・復元処理を順に行なっていた。
まず、プロセッサコア201及びコプロセッサ202〜204がタスク1を実行している状態であるものとする(S200)。
例えば、この図4のように、タスク1からタスク2に切り替えるとき、まず、プロセッサコア201は、プロセッサコア201における演算レジスタのデータ退避・復元処理を行う(S210)。具体的には、プロセッサコア201は、自身が有する演算レジスタに格納されたタスク1の演算内容をデータメモリ205に退避する。そして、プロセッサコア201は、データメモリ205に格納されたタスク2の演算内容を自身が有する演算レジスタに復元する。
次に、プロセッサコア201は、コプロセッサ202における演算レジスタのデータの退避・復元処理を行う(S211)。具体的には、プロセッサコア201は、コプロセッサ202が有する演算レジスタに格納されたタスク1の演算内容をデータメモリ206に退避する。そして、プロセッサコア201は、データメモリ206に格納されたタスク2の演算内容を自身が有する演算レジスタに復元する。つまり、プロセッサコア201が、コプロセッサ202が有する演算レジスタから、タスク1の演算内容を取得して、取得したタスク1の演算内容をデータメモリ206に格納している。また、プロセッサコア201が、データメモリ206に格納されたタスク2の演算内容を取得して、取得したタスク2の演算内容をコプロセッサ202が有する演算レジスタに格納している。
次に、プロセッサコア201は、コプロセッサ203における演算レジスタのデータの退避・復元処理を行う(S212)。ここでも、ステップS211と同様に、プロセッサコア201が演算内容の退避・復元処理を行う。
最後に、プロセッサコア201は、コプロセッサ204における演算レジスタのデータの退避・復元処理を行う(S213)。ここでも、ステップS211及びS212と同様に、プロセッサコア201が演算内容の退避・復元処理を行う。
ここまでで、プロセッサコア201及びコプロセッサ202〜204において、タスク1からタスク2に切り替えるための退避・復元処理が終了する。そのため、プロセッサコア201及びコプロセッサ202〜204は、タスク2を実行する処理を開始する(S220)。
次に、タスク2からタスク3に切り換える場合、ステップS210〜S213と同様に、プロセッサコア201が演算レジスタのデータの退避・復元処理を行う(S221〜S224)。次に、プロセッサコア201及びコプロセッサ202〜204は、タスク3を実行する処理を開始する(S230)。
このように、背景技術にかかるタスク切り替え処理では、プロセッサコア201がコプロセッサ202〜204が有する演算レジスタのそれぞれに順次アクセスして、データの退避・復元を行っていた。そのため、個々のコプロセッサ202〜204の退避・復元処理を順にしか行うことができず、非常に多くの時間を要していた。
図5には、図3に示す構成に、本実施の形態にかかる手法を適用した場合におけるタスク切り替え処理の流れの例を示している。図3に示す構成に、本実施の形態にかかる手法を適用したものが、タスク切り替え高速化回路10となる。プロセッサコア201にタスク切り替え制御回路105、ウェイト制御回路107及びタスク毎使用コプロセッサ対応情報テーブル108を適用したものが、プロセッサコア101となる。コプロセッサ202〜204に演算レジスタデータ退避・復元回路106を適用したものが、コプロセッサ102〜104となる。データメモリ206は、データメモリ112に相当し、データメモリ207は、データメモリ113に相当し、データメモリ208は、データメモリ114に相当する。
この図5には、タスク切り替えの例として、タスク1、タスク2、タスク3、タスク1、タスク3の順番でタスクを切り替えるときの処理の流れを示している。ここで、タスク1はコプロセッサ102と103を使用し、タスク2はコプロセッサ103と104を使用し、タスク3はコプロセッサ104を使用すると仮定している。つまり、タスク毎使用コプロセッサ対応情報テーブル108は、タスク1とコプロセッサ102、103とを対応付けた情報と、タスク2とコプロセッサ103、104とを対応付けた情報と、タスク3とコプロセッサ104とを対応付けた情報とを含む。また、プロセッサコア101の演算レジスタに格納されたデータの退避処理、復元処理は毎回行うものとする。
まず、プロセッサコア101及びコプロセッサ102、103がタスク1を実行している(S100)。
プロセッサコア101及びコプロセッサ102〜104において実行するタスクを、タスク1からタスク2に切り替える(S110)。具体的には、プロセッサコア制御回路120は、タスク切り替え要求信号をタスク切り替え制御回路105に出力する。また、プロセッサコア制御回路120は、タスク2のタスク番号を示す切り替え先タスク番号信号をタスク切り替え制御回路105に出力する。また、プロセッサコア制御回路120は、自身が有する演算レジスタ(図示せず)に格納されたタスク1の演算内容をデータメモリ205に退避し、データメモリ205に格納されたタスク2の演算内容を自身が有する演算レジスタに復元する(S111)。
ここで、タスク1でコプロセッサ102、103を使用し、タスク2でコプロセッサ103、104を使用する。したがって、コプロセッサ102は、切り替え前のタスク1で使用されているが、切り替え先のタスク2で使用されないため、退避処理のみ実行すればよい。また、コプロセッサ103は、切り替え前のタスク1で使用されており、切り替え先のタスク2でも使用されるため、退避処理及び復元処理を実行する必要がある。また、コプロセッサ104は、切り替え前のタスク1で使用されていないが、切り替え先のタスク2で使用されるため、復元処理のみ実行すればよい。
ここでの退避・復元処理の要否判定について具体的に説明する。タスク切り替え制御回路105は、タスク毎使用コプロセッサ対応情報テーブル108を用いて、復元処理の実行の要求が必要なコプロセッサを判定する。具体的には、タスク切り替え制御回路105は、プロセッサコア制御回路120から出力された切り替え先タスク番号信号を、タスク毎使用コプロセッサ対応情報テーブル108に出力する。タスク毎使用コプロセッサ対応情報テーブル108は、タスク切り替え制御回路105から出力された切り替え先タスク番号信号に応じて、その切り替え先タスク番号信号が示すタスク番号のタスクを実行するコプロセッサを示すコプロセッサ信号をタスク切り替え制御回路105に出力する。
ここで、切り替え先タスク番号信号が示すタスク番号はタスク2であるため、タスク毎使用コプロセッサ対応情報テーブル108が出力するコプロセッサ信号は、コプロセッサ103、104を示す。したがって、タスク切り替え制御回路105は、タスク毎使用コプロセッサ対応情報テーブル108から出力されたコプロセッサ信号が示すコプロセッサ103、104に対して復元処理の実行を要求する必要があると判定する。
また、タスク切り替え制御回路105は、使用中コプロセッサ記憶レジスタ151に格納された情報に基づいて、退避処理の実行の要求が必要なコプロセッサを判定する。ここで、切り替え前に実行しているタスクはタスク1であるため、使用中コプロセッサ記憶レジスタ151にはタスク1が使用するコプロセッサ102、103を示す情報が格納されている。したがって、タスク切り替え制御回路105は、コプロセッサ102、103に対して退避処理の実行を要求する必要があると判定する。
また、タスク切り替え制御回路105は、コプロセッサ状態レジスタ152に格納される情報のうち、退避処理又は復元処理を要求するコプロセッサ102〜104に対応する値を、タスク切り替え中であることを示す値に更新する。
したがって、タスク切り替え制御回路105は、退避処理の実行を要求する演算レジスタデータ退避・復元要求信号をコプロセッサ102に出力する。コプロセッサ102の演算レジスタデータ退避・復元回路106は、タスク切り替え制御回路105から出力された演算レジスタデータ退避・復元要求信号に応じて、自身が有する演算レジスタ111に格納されたタスク1の演算内容をデータメモリ112に退避する(S112)。演算レジスタデータ退避・復元回路106は、退避処理が終了した場合、演算レジスタデータ退避・復元終了信号をタスク切り替え制御回路105に出力する。
また、タスク切り替え制御回路105は、退避処理及び復元処理の実行を要求する演算レジスタデータ退避・復元要求信号をコプロセッサ103に出力する。コプロセッサ103の演算レジスタデータ退避・復元回路は、タスク切り替え制御回路105から出力された演算レジスタデータ退避・復元要求信号に応じて、自身が有する演算レジスタ(図示せず)に格納されたタスク1の演算内容をデータメモリ113に退避し、データメモリ113に格納されたタスク2の演算内容を自身が有する演算レジスタに復元する(S113)。演算レジスタデータ退避・復元回路は、退避処理及び復元処理が終了した場合、演算レジスタデータ退避・復元終了信号をタスク切り替え制御回路105に出力する。
また、タスク切り替え制御回路105は、復元処理の実行を要求する演算レジスタデータ退避・復元要求信号をコプロセッサ104に出力する。コプロセッサ104の演算レジスタデータ退避・復元回路は、タスク切り替え制御回路105から出力された演算レジスタデータ退避・復元要求信号に応じて、データメモリ114に格納されたタスク2の演算内容を自身が有する演算レジスタ(図示せず)に復元する(S114)。演算レジスタデータ退避・復元回路は、復元処理が終了した場合、演算レジスタデータ退避・復元終了信号をタスク切り替え制御回路105に出力する。
タスク切り替え制御回路105は、コプロセッサ102〜104から演算レジスタデータ退避・復元終了信号が出力された場合、コプロセッサ状態レジスタ152に格納される情報のうち、演算レジスタデータ退避・復元終了信号を出力したコプロセッサに対応する値を、タスク切り替え中でないことを示す値に更新する。タスク切り替え制御回路105は、退避処理又は復元処理を要求した全てのコプロセッサ102〜104から演算レジスタデータ退避・復元終了信号が出力された場合、タスク切り替え終了信号をプロセッサコア制御回路120に出力する。また、タスク切り替え制御回路105は、使用中コプロセッサ記憶レジスタ151の情報を、タスク2を実行するコプロセッサ103、104を示す情報に更新する。
プロセッサコア制御回路120は、タスク切り替え制御回路105から出力されたタスク切り替え終了信号に応じて、タスク2の実行を開始する(S120)。具体的には、プロセッサコア101が有する演算器にタスク2の演算を行わせる。また、プロセッサコア制御回路120は、コプロセッサ103、104のコプロセッサ番号を示すコプロセッサ番号信号と、タスク2の演算を要求する演算制御信号とをウェイト制御回路107に出力する。これに応じて、ウェイト制御回路107は、コプロセッサ103、104に対してコプロセッサ演算制御信号を出力する。これによって、コプロセッサ103、104の演算器においてもタスク2の演算が行われる。
このように、コプロセッサ102の演算レジスタの退避処理、コプロセッサ103の演算レジスタの退避・復元処理、及び、コプロセッサ104の演算レジスタ復元処理が行なされる。ここで、タスク2では、コプロセッサ102を用いないため、コプロセッサ102の演算レジスタ111の退避処理の終了を待つ必要は無い。つまり、コプロセッサ103、104の復元処理が終了した時点でタスク2の実行が可能となるため、コプロセッサ103、104における復元処理の終了さえ待ち合わせればよい。言い換えると、タスク切り替え制御回路105は、切り替え先のタスクを実行するコプロセッサの全てにおいて、復元処理が終了した時点で、タスク切り替え終了信号をプロセッサコア制御回路120に出力するようにしてもよい。
したがって、タスク切り替え制御回路105は、コプロセッサ103及びコプロセッサ104から演算レジスタデータ退避・復元終了信号が出力された場合に、タスク切り替え終了信号をプロセッサコア制御回路120に出力するようにしてもよい。または、演算レジスタデータ退避・復元回路106は、退避処理のみ実行する場合、退避処理が終了していなくても、演算レジスタデータ退避・復元要求信号に応じて、すぐに演算レジスタデータ退避・復元終了信号を出力するようにしてもよい。このようにすることで、コプロセッサ102における退避処理がバックグラウンドで実行される。これにより、コプロセッサ102における退避処理時間が、コプロセッサ103、104における退避・復元処理時間よりも多い場合に、タスク切り替えに要する時間を短縮することができる。
他方、ウェイト制御回路107は、プロセッサコア制御回路120から演算制御信号が出力されるときにまだ退避・復元処理が終わっていないときにはプロセッサコア101にウェイトをかける。具体的には、ウェイト制御回路107は、タスク切り替え制御回路105から出力されるコプロセッサ状態信号のうち、プロセッサコア制御回路120から出力されたコプロセッサ番号信号が示すコプロセッサに対応する信号が、タスク切り替え中であることを示している場合、ウェイト信号をプロセッサコア制御回路120に出力する。
次に、タスク2からタスク3に切り替えるとき(S130)は、プロセッサコア制御回路120は、タスク切り替え要求信号と、タスク3のタスク番号を示す切り替え先タスク番号信号とをタスク切り替え制御回路105に出力する。
プロセッサコア制御回路120は、タスク2の演算内容を退避し、タスク3の演算内容を復元する(S131)。
ここで、切り替え前のタスク2でも切り替え先のタスク3でもコプロセッサ102を使用していないので、コプロセッサ102に関しては何も行なわなくていい。コプロセッサ103は、切り替え前のタスク2で使用されているが、切り替え先のタスク3で使用されないため、退避処理のみ実行する必要がある。なお、コプロセッサ103は、切り替え先のタスク3を実行しないため、演算レジスタに格納されたデータの退避処理に関してはバックグラウンドで処理できる。コプロセッサ104は、切り替え前のタスク2で使用されており、切り替え先のタスク3でも使用されるため、退避処理及び復元処理を実行する必要がある。
ここでの退避・復元処理の要否判定について具体的に説明する。タスク切り替え制御回路105は、プロセッサコア制御回路120から出力された切り替え先タスク番号信号を、タスク毎使用コプロセッサ対応情報テーブル108に出力する。タスク毎使用コプロセッサ対応情報テーブル108は、切り替え先タスク番号信号が示すタスク番号がタスク3であるため、コプロセッサ104を示すコプロセッサ信号をタスク切り替え制御回路105に出力する。よって、タスク切り替え制御回路105は、コプロセッサ信号が示すコプロセッサ104に対して復元処理の実行を要求する必要があると判定する。
また、使用中コプロセッサ記憶レジスタ151に格納された情報は、タスク2を実行するコプロセッサ103、104を示している。そのため、タスク切り替え制御回路105は、コプロセッサ103、104に対して退避処理の実行を要求する必要があると判定する。
また、タスク切り替え制御回路105は、コプロセッサ状態レジスタ152に格納される情報のうち、退避処理又は復元処理を要求するコプロセッサ103、104に対応する値を、タスク切り替え中であることを示す値に更新する。
したがって、コプロセッサ102では退避処理及び復元処理は不要であるため、タスク切り替え制御回路105は、演算レジスタデータ退避・復元要求信号をコプロセッサ102には出力しない。
また、タスク切り替え制御回路105は、退避処理の実行を要求する演算レジスタデータ退避・復元要求信号をコプロセッサ103に出力する。これによって、コプロセッサ103の演算レジスタデータ退避・復元回路は、退避処理を実行する(S133)。なお、ここでの退避処理は、上述したように、バックグラウンドで実行する。演算レジスタデータ退避・復元回路は、退避処理が終了した場合、演算レジスタデータ退避・復元終了信号をタスク切り替え制御回路105に出力する。
また、タスク切り替え制御回路105は、退避処理及び復元処理の実行を要求する演算レジスタデータ退避・復元要求信号をコプロセッサ104に出力する。これによって、コプロセッサ104の演算レジスタデータ退避・復元回路は、退避処理及び復元処理を実行する(S134)。演算レジスタデータ退避・復元回路は、退避処理及び復元処理が終了した場合、演算レジスタデータ退避・復元終了信号をタスク切り替え制御回路105に出力する。
タスク切り替え制御回路105は、コプロセッサ103、104から演算レジスタデータ退避・復元終了信号が出力された場合、コプロセッサ状態レジスタ152に格納される情報のうち、演算レジスタデータ退避・復元終了信号を出力したコプロセッサに対応する値を、タスク切り替え中でないことを示す値に更新する。タスク切り替え制御回路105は、退避処理又は復元処理を要求した全てのコプロセッサ103、104から演算レジスタデータ退避・復元終了信号が出力された場合、タスク切り替え終了信号をプロセッサコア制御回路120に出力する。また、タスク切り替え制御回路105は、使用中コプロセッサ記憶レジスタ151の情報を、タスク3を実行するコプロセッサ104を示す情報に更新する。プロセッサコア制御回路120は、タスク切り替え制御回路105から出力されたタスク切り替え終了信号に応じて、タスク3の実行を開始する(S140)。
次に、タスク3からタスク1に切り替えるとき(S150)は、プロセッサコア制御回路120は、タスク切り替え要求信号と、タスク1のタスク番号を示す切り替え先タスク番号信号とをタスク切り替え制御回路105に出力する。
プロセッサコア制御回路120は、タスク2の演算内容を退避し、タスク1の演算内容を復元する(S151)。
ここで、コプロセッサ102は、切り替え先のタスク1で使用されるが、その前のタスク1を実行したときからは使用していないので、退避処理及び復元処理を実行する必要はない。コプロセッサ103は、切り替え前のタスク3で使用されていないが、切り替え先のタスク1で使用されるため、復元処理のみ実行する必要がある。コプロセッサ104は、切り替え前のタスク3で使用されており、切り替え先のタスク1では使用されないため、退避処理のみを実行する必要がある。コプロセッサ104は、切り替え先のタスク1を実行しないため、退避処理に関してはバックグラウンドで処理できる。
ここでの退避・復元処理の要否判定について具体的に説明する。タスク切り替え制御回路105は、プロセッサコア制御回路120から出力された切り替え先タスク番号信号を、タスク毎使用コプロセッサ対応情報テーブル108に出力する。タスク毎使用コプロセッサ対応情報テーブル108は、切り替え先タスク番号信号が示すタスク番号がタスク1であるため、コプロセッサ102、103を示すコプロセッサ信号をタスク切り替え制御回路105に出力する。よって、タスク切り替え制御回路105は、コプロセッサ信号が示すコプロセッサ102、103に対して復元処理の実行を要求する必要があると判定する。
また、使用中コプロセッサ記憶レジスタ151に格納された情報は、タスク3を実行するコプロセッサ104を示している。そのため、タスク切り替え制御回路105は、コプロセッサ104に対して退避処理の実行を要求する必要があると判定する。
また、タスク切り替え制御回路105は、コプロセッサ状態レジスタ152に格納される情報のうち、退避処理又は復元処理を要求するコプロセッサ102〜104に対応する値を、タスク切り替え中であることを示す値に更新する。
したがって、タスク切り替え制御回路105は、復元処理の実行を要求する演算レジスタデータ退避・復元要求信号をコプロセッサ102に出力する。しかし、コプロセッサ102は切り替え先のタスク1で使用されるが、上述したように、復元処理は不要である。
そのため、タスク切り替え制御回路105は、演算レジスタデータ退避・復元要求信号をコプロセッサ102に出力しないようにしてもよい。この場合、タスク切り替え制御回路105は、コプロセッサ状態レジスタ152に格納される情報のうち、コプロセッサ102に対応する値は更新しない。
または、コプロセッサ102の演算レジスタデータ退避・復元回路106は、演算レジスタデータ退避・復元要求信号に応じて復元処理は実行せずに、演算レジスタデータ退避・復元終了信号をタスク切り替え制御回路105に出力するようにしてもよい。例えば、タスク切り替え制御回路105又は演算レジスタデータ退避・復元回路106が演算レジスタ111に格納されている演算内容がどのタスクのものであるかを示す情報を記憶しておくことにより、この情報に基づいて、これらのように復元処理の要否を判定可能とする。
また、タスク切り替え制御回路105は、復元処理の実行を要求する演算レジスタデータ退避・復元要求信号をコプロセッサ103に出力する。これによって、コプロセッサ103の演算レジスタデータ退避・復元回路は、復元処理を実行する(S153)。演算レジスタデータ退避・復元回路は、復元処理が終了した場合、演算レジスタデータ退避・復元終了信号をタスク切り替え制御回路105に出力する。
また、タスク切り替え制御回路105は、退避処理の実行を要求する演算レジスタデータ退避・復元要求信号をコプロセッサ104に出力する。これによって、コプロセッサ104の演算レジスタデータ退避・復元回路は、退避処理を実行する(S154)。なお、ここでの退避処理は、上述したように、バックグラウンドで実行する。演算レジスタデータ退避・復元回路は、退避処理が終了した場合、演算レジスタデータ退避・復元終了信号をタスク切り替え制御回路105に出力する。
タスク切り替え制御回路105は、退避処理又は復元処理を要求したコプロセッサから演算レジスタデータ退避・復元終了信号が出力された場合、コプロセッサ状態レジスタ152に格納される情報のうち、演算レジスタデータ退避・復元終了信号を出力したコプロセッサに対応する値を、タスク切り替え中でないことを示す値に更新する。タスク切り替え制御回路105は、退避処理又は復元処理を要求した全てのコプロセッサから演算レジスタデータ退避・復元終了信号が出力された場合、タスク切り替え終了信号をプロセッサコア制御回路120に出力する。また、タスク切り替え制御回路105は、使用中コプロセッサ記憶レジスタ151の情報を、タスク1を実行するコプロセッサ102、103を示す情報に更新する。プロセッサコア制御回路は、タスク切り替え制御回路105から出力されたタスク切り替え終了信号に応じて、タスク1の実行を開始する(S160)。
次に、タスク1からタスク3に切り替えるとき(S170)は、プロセッサコア制御回路120は、タスク切り替え要求信号と、タスク3のタスク番号を示す切り替え先タスク番号信号とをタスク切り替え制御回路105に出力する。
プロセッサコア制御回路120は、タスク1の演算内容を退避し、タスク3の演算内容を復元する(S171)。
ここで、コプロセッサ104は、切り替え先のタスク3で使用されるが、その前のタスク3を実行したときからは使用していないので、復元処理をする必要はない。コプロセッサ102、103は、切り替え前のタスク1で使用されており、切り替え先のタスク3では使用されないため、退避処理のみを実行する必要がある。コプロセッサ102とコプロセッサ103は、切り替え先のタスク3を実行しないため、退避処理はバックグラウンドで処理できる。
ここでの退避・復元処理の要否判定について具体的に説明する。タスク切り替え制御回路105は、プロセッサコア制御回路120から出力された切り替え先タスク番号信号を、タスク毎使用コプロセッサ対応情報テーブル108に出力する。タスク毎使用コプロセッサ対応情報テーブル108は、切り替え先タスク番号信号が示すタスク番号がタスク3であるため、コプロセッサ104を示すコプロセッサ信号をタスク切り替え制御回路105に出力する。よって、タスク切り替え制御回路105は、コプロセッサ信号が示すコプロセッサ104に対して復元処理の実行を要求する必要があると判定する。
また、使用中コプロセッサ記憶レジスタ151に格納された情報は、タスク1を実行するコプロセッサ102、103を示している。そのため、タスク切り替え制御回路105は、コプロセッサ102、103に対して退避処理の実行を要求する必要があると判定する。
また、タスク切り替え制御回路105は、コプロセッサ状態レジスタ152に格納される情報のうち、退避処理又は復元処理を要求するコプロセッサ102〜104に対応する値を、タスク切り替え中であることを示す値に更新する。
したがって、タスク切り替え制御回路105は、退避処理の実行を要求する演算レジスタデータ退避・復元要求信号をコプロセッサ102、103に出力する。これによって、コプロセッサ102、103の演算レジスタデータ退避・復元回路のそれぞれは、退避処理を実行する(S172、S173)。なお、ここでの退避処理は、上述したように、バックグラウンドで実行される。演算レジスタデータ退避・復元回路は、退避処理が終了した場合、演算レジスタデータ退避・復元終了信号をタスク切り替え制御回路105に出力する。
また、タスク切り替え制御回路105は、復元処理の実行を要求する演算レジスタデータ退避・復元要求信号をコプロセッサ104に出力する。しかし、コプロセッサ104は切り替え先のタスク1で使用されるが、上述したように、復元処理は不要である。そのため、ステップS150におけるコプロセッサ102のように、復元処理を行わないようにしてもよい。
タスク切り替え制御回路105は、退避処理又は復元処理を要求したコプロセッサから演算レジスタデータ退避・復元終了信号が出力された場合、コプロセッサ状態レジスタ152に格納される情報のうち、演算レジスタデータ退避・復元終了信号を出力したコプロセッサに対応する値を、タスク切り替え中でないことを示す値に更新する。タスク切り替え制御回路105は、退避処理又は復元処理を要求した全てのコプロセッサから演算レジスタデータ退避・復元終了信号が出力された場合、タスク切り替え終了信号をプロセッサコア制御回路120に出力する。また、タスク切り替え制御回路105は、使用中コプロセッサ記憶レジスタ151の情報を、タスク3を実行するコプロセッサ104を示す情報に更新する。プロセッサコア制御回路は、タスク切り替え制御回路105から出力されたタスク切り替え終了信号に応じて、タスク3の実行を開始する(S180)。
タスク切り替え高速化回路10は、以降も同様にして、実行するタスクに応じて退避・復元処理を実行する。
もし、1つのタスクのみでしか使用されていないコプロセッサがあるときは、演算レジスタに格納されたデータの退避、復元処理を全て省略するようにしてもよい。
以上に説明したように、本実施の形態では、複数のコプロセッサ102〜104のうち少なくとも1つによって演算を行うタスクを、第1のタスクから第2のタスクに切り替える場合に、そのコプロセッサが有する演算レジスタに格納された演算内容の退避・復元を要求する演算レジスタデータ退避・復元要求信号をそのコプロセッサに出力するタスク切り替え制御回路105を有している。また、演算レジスタデータ退避・復元要求信号に応じて、演算レジスタに格納された第1のタスクに関する演算内容のデータメモリへの退避、及び、データメモリに格納された第2のタスクに関する演算内容の演算レジスタへの復元、のうち少なくとも1つを実行する演算レジスタデータ退避・復元回路を、複数のコプロセッサ102〜104のそれぞれに対応して有している。
このような構成とすることで、タスク切り替え制御回路105から、演算レジスタデータ退避・復元回路に並列的に演算レジスタデータ退避・復元要求信号を出力することによって、演算内容の退避・復元処理を並列化して実行することができるようにしている。そのため、複数のコプロセッサにおけるタスクの切り替えに要する時間を短縮できることができる。
また、本実施の形態によれば、切り替え先の第2のタスクの演算を行うコプロセッサに対応する演算レジスタデータ退避・復元回路のみに演算内容の復元を要求する演算レジスタデータ退避・復元要求信号を出力するようにしている。
また、使用中コプロセッサ記憶レジスタ151に格納された情報に基づいて、切り替え前の第1のタスクの演算を行うコプロセッサに対応する演算レジスタデータ退避・復元回路のみに演算内容の退避を要求する演算レジスタデータ退避・復元要求信号を出力するようにしている。
また、演算レジスタデータ退避・復元回路106に、切り替え前のタスクを示す情報を格納するタスク番号記憶レジスタ161を有するようにしている。そして、演算レジスタデータ退避・復元回路106は、タスク番号記憶レジスタ161に格納された情報が示すタスクと、タスク切り替え制御回路105から出力された切り替え先タスク番号信号が示すタスクとが同じ場合に、演算内容の退避及び復元のうち少なくとも1つを実行しないようにしてもよい。
これらによれば、演算内容の退避・復元が必要なコプロセッサに対してのみ、演算内容の退避・復元を行うようにすることができる。つまり、余分な退避・復元処理を行わないようにすることができるため、複数のコプロセッサにおけるタスクの切り替えに要する時間をより短縮できることができる。
また、本実施の形態によれば、複数の演算レジスタデータ退避・復元回路のうち、切り替え先の第2のタスクの演算を行うプロセッサに対応する複数の演算レジスタデータ退避・復元回路における演算内容の復元が終了した場合に、タスクの切り替えの終了を通知するタスク切り替え終了信号をプロセッサコア制御回路120に出力するようにしている。
これによれば、演算内容の退避のみ必要なコプロセッサにおける退避処理をバックグラウンドで実行しつつ、切り替え先の第2のタスクの演算を実行することができる。そのため、演算内容の退避のみ必要なコプロセッサにおける退避処理を待ち合わせる必要がなくなるため、複数のコプロセッサにおけるタスクの切り替えに要する時間をより短縮することができる。
(実施例1)
図6に本発明のタスク切り替え高速化回路10に用いられるタスク切り替え制御回路105の実施例を示す。この例では、3個のコプロセッサ102〜104に対応したタスク切り替え制御回路105の例を示している。
タスク切り替え制御回路105は、使用中コプロセッサ記憶レジスタ501〜503、コプロセッサ状態レジスタ504〜506、AND回路511〜516、OR回路521〜523、NOR回路531を有する。つまり、図6は、使用中コプロセッサ記憶レジスタ151が、使用中コプロセッサ記憶レジスタ501〜503を含み、コプロセッサ状態レジスタ152が、コプロセッサ状態レジスタ504〜506を含む場合について例示している。
プロセッサコア101のプロセッサコア制御回路120は、プロセッサコア102〜104で実行するタスクを切り替える場合、切り替え先のタスク番号を示す切り替え先タスク番号信号と、タスクの切り替えを要求する値"1"を示すタスク切り替え要求信号とをタスク切り替え制御回路105に出力する。プロセッサコア制御回路120より、切り替え先タスク番号信号、および、タスク切り替え要求信号が通知されると、タスク切り替え制御回路105は、まず、切り替え先タスク番号信号をタスク毎使用コプロセッサ対応情報テーブル108に出力する。
タスク毎使用コプロセッサ対応情報テーブル108は、コプロセッサ102〜104の個数幅の信号を出力する。この信号は、切り替え先タスク番号信号が示すタスク番号のタスクで使用するコプロセッサに対応する信号が"1"となり、それ以外のコプロセッサに対応する信号が"0"となる。この信号のうち、コプロセッサ102に対応する信号が使用中コプロセッサ記憶レジスタ501及びAND回路511に出力され、コプロセッサ103に対応する信号が使用中コプロセッサ記憶レジスタ502及びAND回路513に出力され、コプロセッサ104に対応する信号が使用中コプロセッサ記憶レジスタ503及びAND回路513出力される。
AND回路511、513、515のそれぞれは、この信号とタスク切り替え要求信号をAND演算する。AND回路511、513、515のそれぞれは、AND演算によって生成した信号を、各コプロセッサ102〜104に対して、演算レジスタデータ復元要求信号として出力する。具体的には、AND回路511は、生成した信号をコプロセッサ102及びOR回路521に出力し、AND回路513は、生成した信号をコプロセッサ103及びOR回路522に出力し、AND回路515は、生成した信号をコプロセッサ104及びOR回路523に出力する。
また、使用中コプロセッサ記憶レジスタ501〜503は、コプロセッサ102〜104個数分存在する。使用中コプロセッサ記憶レジスタ501〜503は、それぞれに対応するコプロセッサ102〜104のそれぞれが、切り替え前のタスクで使用されているかどうかを示す情報が記憶されている。具体的には、使用中コプロセッサ記憶レジスタ501〜503は、自身に対応するコプロセッサが、切り替え前のタスクで使用されている場合は"1"が格納され、切り替え前のタスクで使用されていない場合は"0"が格納されている。使用中コプロセッサ記憶レジスタ501は、自身に格納されている値をAND回路512に出力し、使用中コプロセッサ記憶レジスタ502は、自身に格納される値をAND回路514に出力し、使用中コプロセッサ記憶レジスタ504は、自身に格納される値をAND回路516に出力する。
AND回路512、514、516のそれぞれは、使用中コプロセッサ記憶レジスタ501〜503のそれぞれから出力された値とタスク切り替え要求信号をAND演算する。AND回路512、514、516のそれぞれは、AND演算によって生成した信号を、各コプロセッサ102〜104に対して、演算レジスタ値退避要求信号として出力する。具体的には、AND回路512は、生成した信号をコプロセッサ102及びOR回路521に出力し、AND回路513は、生成した信号をコプロセッサ103及びOR回路522に出力し、AND回路514は、生成した信号をコプロセッサ104及びOR回路523に出力する。
OR回路521〜523のそれぞれは、コプロセッサ102〜104毎に、演算レジスタデータ復元要求信号と演算レジスタデータ退避要求信号をOR演算することによって得られる信号をコプロセッサ状態レジスタ504〜506のそれぞれに出力する。これによって、コプロセッサ状態レジスタ504〜506のうち、復元処理、もしくは、退避処理が要求されたコプロセッサに対応するコプロセッサ状態レジスタに、OR回路521〜523のそれぞれから出力された信号の値が格納される。ここで、コプロセッサ状態レジスタ504はコプロセッサ102に対応し、コプロセッサ状態レジスタ505はコプロセッサ103に対応し、コプロセッサ状態レジスタ506はコプロセッサ104に対応する。また、コプロセッサ状態レジスタ504〜506のそれぞれは、自身に格納された値を、コプロセッサ状態信号としてウェイト制御回路107及びNOR回路531に出力する。
コプロセッサ状態レジスタ504〜506のそれぞれは、自身に格納された値を、NOR回路531に出力するとともに、コプロセッサ状態信号としてウェイト制御回路107に出力する。復元処理、もしくは、退避処理が要求されたコプロセッサからタスク切り替え終了信号が返ってくると、そのコプロセッサに対応するコプロセッサ状態レジスタは、自身に格納された値をクリアする。タスク切り替え終了信号は、タスク切り替え処理が終了したことを示す信号である。つまり、切り替え処理を行なっているコプロセッサに対応するコプロセッサ状態レジスタのコプロセッサ状態信号は"1"となり、切り替え処理を行なっていないコプロセッサ状態レジスタのコプロセッサ状態信号は"0"となる。全てのコプロセッサ状態信号が0となると、NOR回路531は、タスク切り替え終了信号を"1"として、プロセッサコア制御回路120に出力する。
プロセッサコア制御回路120は、NOR回路531から"1"となったタスク切り替え終了信号が出力された場合、タスクの切り替えを要求しない値"0"を示すタスク切り替え要求信号をタスク切り替え制御回路105に出力する。プロセッサコア制御回路120から"0"となったタスク切り替え要求信号が出力された場合、使用中コプロセッサ記憶レジスタ501〜503のそれぞれは、タスク毎使用コプロセッサ対応情報テーブル108から出力された信号の値を自身に格納する。また、AND回路511〜516は、"0"となった演算レジスタデータ復元要求信号及び演算レジスタデータ退避要求信号をコプロセッサ102〜104及びOR回路521〜523に出力する。
図7に本発明のタスク切り替え高速化回路10に用いられる演算レジスタデータ退避・復元回路106の実施例を示している。この演算レジスタデータ退避・復元回路106はプロセッサコア101に接続されている個々のコプロセッサ102〜104内に存在している。
演算レジスタデータ退避・復元回路106は、タスク番号記憶レジスタ601、比較器602、レジスタ退避・復元制御回路603、レジスタアドレス生成回路604及びデータメモリアドレス生成回路605を有する。
タスク番号記憶レジスタ601には、前回、このコプロセッサを用いたタスクのタスク番号が記憶されている。タスク番号記憶レジスタ601は、タスク番号記憶レジスタ161に相当する。タスク番号記憶レジスタ601は、自身に格納されるタスク番号を示す信号を比較器602及びデータメモリアドレス生成回路605に出力する。
比較器602は、タスク切り替え制御回路105から出力された切り替え先タスク番号信号が示すタスク番号と、タスク番号記憶レジスタ601から出力された信号が示すタスク番号とを比較する。比較器602は、もし、タスク番号が一致すれば、"1"を示す信号を出力し、タスク番号が一致しない場合は、"0"を示す信号を出力する。比較器602から出力された信号は、AND回路621、622及びOR回路631に入力される。なお、AND回路621、622には、比較器602から出力された信号が反転されて入力される。
AND回路621、622のそれぞれは、タスク切り替え制御回路105から出力された演算レジスタデータ退避要求信号及び演算レジスタデータ復元要求信号と、比較器602から出力された信号を反転した信号とをAND演算する。AND回路621、622のそれぞれは、AND演算によって生成した信号を、レジスタ退避・復元制御回路603に出力する。つまり、タスク番号が一致すると、演算レジスタデータ退避要求信号、および、演算レジスタデータ復元要求信号は無視される。これは、前回のタスク番号が同じ場合は、すでに演算レジスタ111には使用する値が格納されているため、退避・復元処理を行なわなくてよいためである。また、この場合、OR回路631は、比較器602から出力された"1"を示す信号をOR演算することになる。よって、OR回路631は、退避・復元処理が終了したことを通知する値"1"を示す演算レジスタデータ退避・復元終了信号をタスク切り替え制御回路105に出力する。
レジスタ退避・復元制御回路603は、AND回路621、622を介して、演算レジスタデータ退避要求信号、および、演算レジスタデータ復元要求信号を受けると、それらの信号の値に応じて、退避処理、復元処理を開始する。具体的には、レジスタ退避・復元制御回路603は、AND回路621から出力された演算レジスタデータ退避要求信号の値が"1"を示す場合、退避処理を実行する。また、レジスタ退避・復元制御回路603は、AND回路622から出力された演算レジスタデータ復元要求信号の値が"1"を示す場合、復元処理を実行する。
レジスタ退避・復元制御回路603は、退避処理又は復元処理を実行する場合、レジスタアドレス生成回路604及びデータメモリアドレス生成回路605を起動する。レジスタアドレス生成回路604は退避・復元するときの演算レジスタ番号を生成する。データメモリアドレス生成回路605は演算レジスタ値を退避・復元するときのデータメモリのアドレスを生成する。ここで、タスク切り替え制御回路105から出力された切り替え先タスク番号信号と、タスク番号記憶レジスタ601から出力された信号は、データメモリアドレス生成回路605に入力される。つまり、データメモリのアドレス生成には、切り替え先タスク番号、および、切り替え前タスク番号も用いられる。これは、タスク番号に応じて、演算レジスタ111に対してデータの退避又は復元を行うデータメモリ112のアドレスを変える必要があるためである。
データメモリアドレス生成回路605は、切り替え前のタスク番号に基づいて、データメモリ112のうち、演算レジスタ111のデータを退避するアドレスを生成する。データメモリアドレス生成回路605は、切り替え先のタスク番号に基づいて、データメモリ112のうち、演算レジスタ111に復元するデータが格納されたアドレスを生成する。レジスタ退避・復元制御回路603は、レジスタアドレス生成回路604、データメモリアドレス生成回路605から生成されたアドレスを用いて、演算レジスタ111及びデータメモリ112間でデータを転送する。
全てのコプロセッサ102〜104において、タスク切り替え処理が終了した場合、"0"となった演算レジスタデータ復元要求信号及び演算レジスタデータ退避要求信号がOR回路611及びAND回路621、622に入力される。この場合、OR回路611は、OR演算結果である"0"を示す信号をタスク番号記憶レジスタ601に出力する。タスク番号記憶レジスタ601は、OR回路611から"0"を示す信号が出力された場合、自身に格納する値を、切り替え先タスク番号信号が示す切り替え先タスク番号に更新する。
図8に本発明のタスク切り替え高速化回路10に用いられるウェイト制御回路107の実施例を示している。
ウェイト制御回路107は、デコーダ701、セレクタ702〜704、AND回路711〜716及びOR回路721を有する。
プロセッサコア101のプロセッサコア制御回路120は、コプロセッサ102〜104に対して、演算の要求等の制御を行う場合、制御を行うコプロセッサの番号を示すコプロセッサ番号信号と、制御内容を示す演算制御信号と、をウェイト制御回路107に出力する。デコーダ701は、プロセッサコア制御回路120から出力されたプロセッサ番号信号を、プロセッサコア制御回路120が制御対象として指定するコプロセッサに対応するビットが"1"となるコプロセッサ数の幅を有する信号に変換して出力する。具体的には、デコーダ回路701は、コプロセッサ102に対応する信号をAND回路711、714に出力し、コプロセッサ103に対応する信号をAND回路712、715に出力し、コプロセッサ104に対応する信号をAND回路713、716に出力する。
AND回路711〜713のそれぞれは、デコーダ701から出力された信号と、タスク切り替え制御回路105から出力されたコプロセッサ状態信号を反転した信号とをAND演算する。AND回路711〜713のそれぞれは、AND演算によって生成した信号を、セレクタ702〜704のそれぞれにデータ選択信号として出力する。具体的には、コプロセッサ状態レジスタ504から出力されたコプロセッサ状態信号がAND回路711、714に対して入力され、コプロセッサ状態レジスタ505から出力されたコプロセッサ状態信号がAND回路712、715に対して入力され、コプロセッサ状態レジスタ506から出力されたコプロセッサ状態信号がAND回路713、716に対して入力される。また、AND回路711は、生成した信号をセレクタ702に出力し、AND回路712は、生成した信号をセレクタ703に出力し、AND回路713は、生成した信号をセレクタ704に出力する。
セレクタ702〜704のそれぞれは、プロセッサ毎に、プロセッサコア制御回路120から出力された演算制御信号か"0"を選択する。セレクタ702〜704のそれぞれは、データ選択信号が"0"のときは、"0"を対応するコプロセッサに出力し、データ選択信号が"1"のときは、演算制御信号を対応するコプロセッサに出力する。これによって、コプロセッサ番号で指定されたコプロセッサに対して、そのコプロセッサのコプロセッサ状態信号が"0"のときだけ、演算制御信号がコプロセッサ演算制御信号として出力される。このようにすることで、プロセッサコア制御回路120からタスク切り替え中のコプロセッサに対する演算の要求を抑止することができる。
他方、AND回路714〜716のそれぞれは、デコーダ701から出力された信号と、タスク切り替え制御回路105から出力されたコプロセッサ状態信号とをAND演算する。AND回路714〜716のそれぞれは、AND演算によって生成した信号を、OR回路721に出力する。OR回路721は、AND回路714〜716のそれぞれから出力された信号をOR演算する。OR回路721は、OR演算によって生成した信号をプロセッサコア制御回路120にウェイト信号として出力する。これによって、制御を行うコプロセッサ番号として指定されたコプロセッサのコプロセッサ状態信号が"1"のときは、ウェイト信号が"1"になり、プロセッサコア101の処理が停止する。つまり、これは、プロセッサコア101が演算レジスタのデータの退避処理又は復元処理が終わっていないコプロセッサにアクセスした場合に、その退避処理又は復元処理が終了するまでプロセッサコア101を停止する機能を与えるものである。このようにすることで、プロセッサコア制御回路120からタスク切り替え中のコプロセッサに対する演算の要求を抑止することができる。
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
本実施の形態では、コプロセッサ数が3つの場合について例示したが、コプロセッサの数はこれに限られない。
また、各回路105、106、107、120において入出力される信号の値が"0"又は"1"となるとして例示しているものがあるが、この値に限られない。
また、本発明は、携帯電話やAV機器に用いられる信号処理LSIにも適用することができる。
この出願は、2010年4月30日に出願された日本出願特願2010−104880を基礎とする優先権を主張し、その開示の全てをここに取り込む。
10 タスク切り替え高速化回路10
30 情報処理装置
101、201、301 プロセッサコア
102、103、104、202、203、204、311、312、31n コプロセッサ
105 タスク切り替え制御回路
106 演算レジスタデータ退避・復元回路
107 ウェイト制御回路
108 タスク毎使用コプロセッサ対応情報テーブル
109 コプロセッサ演算制御回路
110 コプロセッサ演算器
111 演算レジスタ
112、113、114、205、206、207、208 データメモリ
120 プロセッサコア制御回路
151 使用中コプロセッサ記憶レジスタ
152 コプロセッサ状態レジスタ
161 タスク番号記憶レジスタ
209 命令メモリ
210 バスコントローラ
302 タスク切り替え制御部
321、322、32n 演算部
331、332、33n 演算記憶部
341、342、34n 退避・復元部
351、352、35n 退避記憶部
501、502、503 使用中コプロセッサ記憶レジスタ
504、505、506 コプロセッサ状態レジスタ
601 タスク番号記憶レジスタ
602 比較器
603 レジスタ退避、復元制御回路
604 レジスタアドレス生成回路
605 データメモリアドレス生成回路
701 デコーダ回路
702、703、704 セレクタ

Claims (8)

  1. プロセッサコアと、
    前記プロセッサコアからの要求に応じて演算を行う演算手段と、前記演算手段の演算内容を格納する演算記憶手段と、を有する複数のコプロセッサと、
    前記複数のコプロセッサのそれぞれに対応し、前記演算記憶手段から退避した演算内容を格納する複数の退避記憶手段と、
    前記プロセッサコアと前記複数のコプロセッサの少なくとも1つによ演算されるタスクを、第1のタスクから第2のタスクに切り替える場合に、前記演算内容の退避または復元を要すると判定されたコプロセッサに対して、退避・復元要求信号を出力するタスク切替制御手段と、
    前記複数のコプロセッサのそれぞれに対応した複数の退避・復元手段と、
    前記プロセッサコアから前記コプロセッサに対する前記演算の要求を監視するウェイト制御手段と、を備え、
    前記タスク切替制御手段は、前記演算内容の退避または復元を要すると判定されたコプロセッサに対応する記退避・復元手段に前記退避・復元要求信号を出力し、
    記退避・復元要求信号前記退避・復元手段に対して、前記演算記憶手段に格納された第1のタスクに関する演算内容の前記退避記憶手段への退避、及び、前記退避記憶手段に格納された第2のタスクに関する演算内容の前記演算記憶手段への復元、のうち少なくとも1つを実行することを要求するためのものであり
    前記ウェイト制御手段は、前記複数の退避・復元手段の全てにおける前記退避及び前記復元の少なくとも1つが終了する前に、前記プロセッサコアの処理が開始され、前記退避及び前記復元の少なくとも1つが終了していない退避・復元手段に対応するコプロセッサに対して前記演算が要求されるときには、前記プロセッサコアの処理を停止し、
    前記ウェイト制御手段は、前記演算が要求されるコプロセッサに対応する前記退避・復元手段における前記退避が終了していない状態ではなく、かつ、前記復元が終了していない状態ではなくなったときに、前記プロセッサコアの処理を再開する、
    情報処理装置。
  2. 前記退避・復元手段は、切り替え前のタスクを示すタスク情報を格納するタスク情報記憶手段を有し、
    前記タスク切替制御手段は、前記退避・復元要求信号とともに、前記第2のタスクを示すタスク情報を前記退避・復元手段に出力し、
    前記退避・復元手段は、前記タスク切替制御手段から出力されたタスク情報と、前記タスク情報記憶手段に格納されたタスク情報とが同じ場合に、前記演算内容の退避及び復元を実行しないようにするものであり
    前記退避・復元手段は、対応するコプロセッサにおいて実行するタスクが切り替わり、演算内容の演算記憶手段への復元が行われる場合に、前記タスク切替制御手段から出力されたタスク情報を前記タスク情報記憶手段に格納する請求項1に記載の情報処理装置。
  3. 前記退避・復元要求信号は、切り替え前のタスクの演算内容の退避を要求する退避要求信号と、切り替え先のタスクの演算内容の復元を要求する復元要求信号と、を含み、
    前記タスク切替制御手段は、前記複数の退避・復元手段のうち、前記第2のタスクの演算を行うコプロセッサに対応する退避・復元手段のみに前記第2のタスクの演算内容の復元を要求する復元要求信号を出力する請求項1又は2に記載の情報処理装置。
  4. 前記タスク切替制御手段は、切り替え前のタスクの演算を行うコプロセッサを示すコプロセッサ情報を格納するコプロセッサ情報記憶手段を有し、
    前記タスク切替制御手段は、前記コプロセッサ情報に基づいて、前記複数の退避・復元手段のうち、前記第1のタスクの演算を行うコプロセッサに対応する退避・復元手段のみに前記退避要求信号を出力し、前記第2のタスクの演算を行うコプロセッサを示すコプロセッサ情報を前記コプロセッサ情報記憶手段に格納する請求項3に記載の情報処理装置。
  5. 前記情報処理装置は、前記タスクと、当該タスクの演算を行うコプロセッサとを対応付けた対応情報を格納する対応情報記憶手段をさらに備え、
    前記プロセッサコアは、前記複数のコプロセッサにおいて演算するタスクを管理するプロセッサコア制御手段を有し、
    前記プロセッサコア制御手段は、前記第1のタスクから第2のタスクに切り替える場合に、前記第2のタスクを示すタスク情報を前記タスク切替制御手段に出力し、
    前記タスク切替制御手段は、前記対応情報に基づいて、前記プロセッサコア制御手段から出力されたタスク情報が示す第2のタスクの演算を行うコプロセッサを特定し、特定したコプロセッサに対応する退避・復元手段に前記復元要求信号を出力するとともに、特定したコプロセッサを示すコプロセッサ情報を前記コプロセッサ情報記憶手段に格納する請求項4に記載の情報処理装置。
  6. 前記プロセッサコアは、前記複数のコプロセッサにおいて演算するタスクを管理するプロセッサコア制御手段を有し、
    前記タスク切替制御手段は、前記複数の退避・復元手段のうち、前記第2のタスクの演算を行うコプロセッサに対応する退避・復元手段における演算内容の復元が終了した場合に、前記第1のタスクから第2のタスクへの切り替えの終了を通知するタスク切り替え終了信号を前記プロセッサコア制御手段に出力し、
    前記プロセッサコア制御手段は、前記タスク切り替え終了信号に応じて、前記第2のタスクの演算を前記コプロセッサに要求する請求項1乃至4のいずれか1項に記載の情報処理装置。
  7. 前記プロセッサコアは、前記タスク切替制御手段を有し、
    前記コプロセッサは、前記退避・復元手段を有する請求項1乃至6のいずれか1項に記載の情報処理装置。
  8. プロセッサコア、前記プロセッサコアからの要求に応じてタスクの演算を行う複数のコプロセッサの少なくとも1つによ演算されるタスクを、第1のタスクから第2のタスクに切り替える場合に、前記タスクの演算内容の退避または復元を要すると判定されたコプロセッサに対して、前記プロセッサコアが退避・復元要求信号を出力するステップであって前記退避・復元要求信号は、前記コプロセッサに対して、前記第1のタスクに関する演算内容の退避、及び、前記第2のタスクに関する演算内容の復元、のうち少なくとも1つを実行することを要求するためのものである、退避・復元要求信号を出力するステップと
    前記複数のコプロセッサの全てにおける前記退避及び前記復元の少なくとも1つが終了する前に、前記プロセッサコアの処理が開始され、前記退避及び前記復元の少なくとも1つが終了していないコプロセッサに対して前記演算が要求されるときには、前記プロセッサコアの処理を停止するステップと
    前記演算が要求されるコプロセッサにおいて、前記退避が終了していない状態ではなく、かつ、前記復元が終了していない状態ではなくなったときに、前記プロセッサコアの処理を再開するステップと
    を備えたタスク切り替え方法。
JP2012512625A 2010-04-30 2011-01-21 情報処理装置及びタスク切り替え方法 Expired - Fee Related JP5776688B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012512625A JP5776688B2 (ja) 2010-04-30 2011-01-21 情報処理装置及びタスク切り替え方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2010104880 2010-04-30
JP2010104880 2010-04-30
JP2012512625A JP5776688B2 (ja) 2010-04-30 2011-01-21 情報処理装置及びタスク切り替え方法
PCT/JP2011/000328 WO2011135759A1 (ja) 2010-04-30 2011-01-21 情報処理装置及びタスク切り替え方法

Publications (2)

Publication Number Publication Date
JPWO2011135759A1 JPWO2011135759A1 (ja) 2013-07-18
JP5776688B2 true JP5776688B2 (ja) 2015-09-09

Family

ID=44861088

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012512625A Expired - Fee Related JP5776688B2 (ja) 2010-04-30 2011-01-21 情報処理装置及びタスク切り替え方法

Country Status (4)

Country Link
US (1) US9043806B2 (ja)
EP (1) EP2565786A4 (ja)
JP (1) JP5776688B2 (ja)
WO (1) WO2011135759A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9083845B2 (en) * 2010-12-23 2015-07-14 Samsung Electronics Co., Ltd. Global arming method for image processing pipeline
US10203958B2 (en) * 2013-07-15 2019-02-12 Texas Instruments Incorporated Streaming engine with stream metadata saving for context switching
US9898330B2 (en) * 2013-11-11 2018-02-20 Intel Corporation Compacted context state management
JP2016015475A (ja) * 2014-06-13 2016-01-28 株式会社半導体エネルギー研究所 半導体装置、及び電子機器
JP6281442B2 (ja) * 2014-08-14 2018-02-21 富士通株式会社 割り当て制御プログラム、割り当て制御方法及び割り当て制御装置
JP2016091076A (ja) * 2014-10-30 2016-05-23 日本電気株式会社 情報処理装置
US11449452B2 (en) 2015-05-21 2022-09-20 Goldman Sachs & Co. LLC General-purpose parallel computing architecture
CN107636638B (zh) * 2015-05-21 2021-10-26 高盛有限责任公司 通用并行计算架构
EP3607454A4 (en) * 2017-04-06 2021-03-31 Goldman Sachs & Co. LLC PARALLEL MULTIPURPOSE COMPUTER ARCHITECTURE
JP7259380B2 (ja) * 2019-02-12 2023-04-18 日本電気株式会社 情報処理実行制御装置、情報処理実行制御システム、情報処理実行制御方法、及び、情報処理実行制御プログラム

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62221732A (ja) * 1986-03-24 1987-09-29 Nec Corp 情報処理装置
JPH0495137A (ja) * 1990-08-07 1992-03-27 Nec Corp オペレーティングシステムのコンテキスト切替方式
JP2003512671A (ja) * 1999-10-20 2003-04-02 ソニー エレクトロニクス インク 並列コンテキスト切換を用いてアイソクロノス処理をサポートする方法
JP2004252983A (ja) * 2003-02-18 2004-09-09 Microsoft Corp コプロセッサの性能を強化するシステムおよび方法
JP2004272894A (ja) * 2003-02-18 2004-09-30 Microsoft Corp グラフィックス処理ユニットのマルチスレッド式カーネル
JP2006092219A (ja) * 2004-09-22 2006-04-06 Sony Computer Entertainment Inc グラフィックプロセッサ、制御用プロセッサおよび情報処理装置
WO2008114415A1 (ja) * 2007-03-20 2008-09-25 Fujitsu Limited マルチプロセッシングシステム
JP2008310693A (ja) * 2007-06-15 2008-12-25 Panasonic Corp 情報処理装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0451329A (ja) 1990-06-19 1992-02-19 Nec Corp コンテキスト切替装置
JPH064305A (ja) 1992-06-22 1994-01-14 Nec Corp プロセッサのレジスタ入替え判別回路
US7389508B2 (en) * 2003-09-25 2008-06-17 International Business Machines Corporation System and method for grouping processors and assigning shared memory space to a group in heterogeneous computer environment
JP4244028B2 (ja) 2004-09-22 2009-03-25 株式会社ソニー・コンピュータエンタテインメント グラフィックプロセッサ、制御用プロセッサおよび情報処理装置
JP2008152470A (ja) * 2006-12-15 2008-07-03 Hitachi Ltd データ処理システム及び半導体集積回路
KR101375836B1 (ko) * 2007-06-26 2014-04-01 삼성전자주식회사 멀티코어 프로세서 상에서 연관된 작업들을 수행하는 방법및 장치
US8589943B2 (en) * 2007-08-15 2013-11-19 Sony Computer Entertainment Inc. Multi-threaded processing with reduced context switching

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62221732A (ja) * 1986-03-24 1987-09-29 Nec Corp 情報処理装置
JPH0495137A (ja) * 1990-08-07 1992-03-27 Nec Corp オペレーティングシステムのコンテキスト切替方式
JP2003512671A (ja) * 1999-10-20 2003-04-02 ソニー エレクトロニクス インク 並列コンテキスト切換を用いてアイソクロノス処理をサポートする方法
JP2004252983A (ja) * 2003-02-18 2004-09-09 Microsoft Corp コプロセッサの性能を強化するシステムおよび方法
JP2004272894A (ja) * 2003-02-18 2004-09-30 Microsoft Corp グラフィックス処理ユニットのマルチスレッド式カーネル
JP2006092219A (ja) * 2004-09-22 2006-04-06 Sony Computer Entertainment Inc グラフィックプロセッサ、制御用プロセッサおよび情報処理装置
WO2008114415A1 (ja) * 2007-03-20 2008-09-25 Fujitsu Limited マルチプロセッシングシステム
JP2008310693A (ja) * 2007-06-15 2008-12-25 Panasonic Corp 情報処理装置

Also Published As

Publication number Publication date
EP2565786A4 (en) 2017-07-26
WO2011135759A1 (ja) 2011-11-03
CN102870095A (zh) 2013-01-09
US9043806B2 (en) 2015-05-26
JPWO2011135759A1 (ja) 2013-07-18
EP2565786A1 (en) 2013-03-06
US20130036426A1 (en) 2013-02-07

Similar Documents

Publication Publication Date Title
JP5776688B2 (ja) 情報処理装置及びタスク切り替え方法
JP7313381B2 (ja) ハードウェアアクセラレーションのためのハードウェアリソースの埋込みスケジューリング
JP5323828B2 (ja) 仮想計算機制御装置、仮想計算機制御プログラム及び仮想計算機制御回路
KR102466984B1 (ko) 중앙 프로세싱 유닛(cpu)과 보조 프로세서 사이의 개선된 함수 콜백 메커니즘
KR100681199B1 (ko) 코어스 그레인 어레이에서의 인터럽트 처리 방법 및 장치
JP2011118743A (ja) ベクトル型計算機及びベクトル型計算機の命令制御方法
KR101693662B1 (ko) 하드웨어 컨텍스트 복구 흐름 동안에 프로그램가능한 소프트웨어 컨텍스트 상태 실행을 지원하기 위한 방법 및 장치
JP5994679B2 (ja) 処理装置、及び処理装置の制御方法
US9164799B2 (en) Multiprocessor system
JP2017037370A (ja) 計算機、プロセス制御方法およびプロセス制御プログラム
JP2012238306A (ja) ルーティングのための方法及び装置
US10095542B2 (en) Cooperative thread array granularity context switch during trap handling
US10289418B2 (en) Cooperative thread array granularity context switch during trap handling
JP7470685B2 (ja) 集積回路中の算出ユニットをプログラムおよび制御すること
JP2008165746A (ja) アクセラレータ、情報処理装置及び情報処理方法
JP2016189049A (ja) 半導体装置及びその制御方法
JP6368452B2 (ja) 非同期のデバイスによって実行されるタスクのスケジューリングの向上
JP2011070290A (ja) データプロセッサ
US10489218B2 (en) Suppression of speculative accesses to shared memory locations at a processor
JP6726136B2 (ja) データアクセス装置及びアクセスエラーの通知方法
JP5998998B2 (ja) 演算処理装置、情報処理装置、及び演算処理装置の制御方法
US8065445B1 (en) On-demand switching between hardware and software implementations of a peripheral device
JP5949330B2 (ja) 情報処理装置、情報処理方法
JP2008046697A (ja) データ処理ユニット、およびこれを使用したデータ処理装置
JP2005259051A (ja) プロセッシングユニットおよびその制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150331

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150522

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: 20150609

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150622

R150 Certificate of patent or registration of utility model

Ref document number: 5776688

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees