JP5018480B2 - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP5018480B2
JP5018480B2 JP2007534278A JP2007534278A JP5018480B2 JP 5018480 B2 JP5018480 B2 JP 5018480B2 JP 2007534278 A JP2007534278 A JP 2007534278A JP 2007534278 A JP2007534278 A JP 2007534278A JP 5018480 B2 JP5018480 B2 JP 5018480B2
Authority
JP
Japan
Prior art keywords
task
program
unit
information
reconfigurable hardware
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.)
Active
Application number
JP2007534278A
Other languages
English (en)
Other versions
JPWO2007029421A1 (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 JP2007534278A priority Critical patent/JP5018480B2/ja
Publication of JPWO2007029421A1 publication Critical patent/JPWO2007029421A1/ja
Application granted granted Critical
Publication of JP5018480B2 publication Critical patent/JP5018480B2/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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence

Description

本発明は、多様な処理を少ないハードウェア資源で効率的に処理することのできる再構成可能ハードウェアを用いた情報処理装置に関する。
FPGA(Field Programmable Gate Array)やPLD(Programmable Logic Device)等に代表される再構成可能ハードウェアを用いた情報処理装置では、CPUやDSP等のプロセッサ処理に比べて高速な処理が可能である。また処理内容に応じて再構成可能ハードウェアのプログラムを順次に書き換えることのできるプログラマブルデバイスを用いることにより少ないハードウェア資源で多様な処理を実行することが可能である。このような再構成可能なハードウェアを用いた情報処理装置では、プログラムの書き換えは、処理の進捗に応じて必要になった時点で行われていた。また、予め処理全体を静的に解析した情報に基づいて書き換えが行われていた(例えば、特開平10−256383号公報参照)。
しかし、このような従来の情報処理装置では下記のような問題点を有していた。
先ず、第1の問題点は、再構成可能ハードウェアのプログラムを処理すべきタスク毎に変更する場合、一般的にプログラムロードに要する時間がタスクの処理に要する時間に比べて無視できない程度に大きいことである。通信、ネットワーク処理、メディア等の処理では一連の入力データに対して、幾つかの処理を次々に行なってゆく。例えばJPEG(Joint Photographic Experts Group)のエンコーダでは、色変換、サンプリング、DCT(Discrete Cosine Transform)変換、量子化、エントロピー符号化という一連の処理(タスクと呼ぶ)を行なう必要がある。これらの一連のタスクで構成される一まとまりの処理(この場合はJPEGエンコーダ)をジョブと呼ぶ。これらの処理を再構成可能ハードウェアで実行する場合は、従来技術では、ジョブをあらかじめ幾つかのタスクに分割し、それぞれタスクに応じて再構成可能ハードウェア用のプログラムを用意し、タスクの切替えに応じて再構成可能ハードウェアへプログラムをロードしていた。
しかし、一般に再構成可能ハードウェアへのプログラムのロードは、外部の記憶媒体に格納されているプログラムを再構成可能ハードウェアに転送することにより行なわれる。このため、再構成可能ハードウェアへのプログラムのロードは、CPUやDSP等のプロセッサに比べて長時間を要する。従って、個々のタスクの処理に比べて、プログラムロード時間の方が長い場合は、プログラムロード時間でシステムの性能が制限されるため、多くの場合には実用的ではなかった。
あらかじめ複数のプログラムを格納可能で、短時間で処理を切替えることのできる再構成可能ハードウェアもあるが、格納可能なプログラムの数に制限があり、その制限を越えた場合は、外部の記憶媒体からプログラムを転送をすることが必要となるため、同様の問題が生ずる。
第2の問題点は、処理すべきジョブがあらかじめ定まっていない場合は、静的なタスクのスケジュール方式では効率的な処理が困難または不可能なことである。あらかじめ処理全体を解析することにより、処理すべきタスクやタスク間の依存関係、実行順序等のジョブ構造が静的に分かっている場合は、ジョブの処理の進捗に応じてタスクの実行をスケジュール管理することが可能である。しかし、例えば、ネットワーク処理のように、到着データに応じてそのデータに施す処理(ジョブの構造)が異なる場合は、静的なスケジュールでは対応できない。到着データに応じて動的にジョブを生成し、実行可能なタスクを選択、実行し、タスクの実行に応じてジョブの進捗を管理する必要がある。
整理すると、従来の情報処理装置では下記のような2つの問題点があった。
(1)再構成可能ハードウェアのプログラムを処理すべきタスク毎に変更する場合、一般的にプログラムロードに要する時間がタスクの処理に要する時間に比べて無視できない程度に大きい。
(2)処理すべきジョブがあらかじめ定まっていない場合は、静的なタスクのスケジュール方式では効率的な処理が困難、または不可能である。
本発明の目的は、再構成可能ハードウェアを用いた情報処理装置において、再構成可能ハードウェアのプログラムを処理に応じてロードする場合の、プログラムロード時間のオーバーヘッドを小さくし、限られたハードウェア規模の再構成可能ハードウェアにおいても大規模な処理を効率的に処理できるシステムを提供することにある。
本発明の他の目的は、再構成可能ハードウェアを用いた情報処理装置において、プログラムロードや実行等のスケジュールをあらかじめ静的に決めることができない場合にも処理の進捗管理を動的に行なうことにより、効率的に処理できるシステムを提供することにある。
上記目的を達成するために、本発明の情報処理装置は、再構成可能ハードウェア部と入出力データ格納部と制御部とを備えている。
再構成可能ハードウェア部は、実行すべきタスクの処理内容に応じた1つ以上のプログラムをロード可能で、ロードされた1つ以上のプログラムのうち同時に1つ以上のプログラムを実行可能である。入出力データ格納部は、再構成可能ハードウェア部での処理の対象となる入出力データを格納する。制御部は、再構成可能ハードウェア部へのプログラムのロードとプログラムの実行を制御する。
そして、制御部はプログラム格納部とタスク情報格納部とジョブ情報格納部とジョブ管理部とスケジュール部とから構成されている。
プログラム格納部は、再構成可能ハードウェア部にロードするための複数のプログラムを格納する。
タスク情報格納部は、同一のプログラムで実行可能な複数のタスクを示すタスク情報が、プログラム格納部に格納された各プログラム毎に格納されている。
ジョブ情報格納部は、複数のタスクから構成される一まとまりの処理単位であるジョブを構成する各タスク間の依存関係を示すジョブ情報を格納する。
ジョブ管理部は、ジョブ情報に応じて実行可能なタスクを選択して、選択したタスクのタスク情報をタスク情報格納部に格納し、タスクの実行の進捗に応じてジョブ情報を更新する。
スケジュール部は、タスク情報格納部から、プログラムで実行可能な1つ以上のタスクを選択し、プログラム格納部から、選択されたタスクの実行に必要なプログラムを選択する。そして、スケジュール部は、選択したプログラムの再構成可能ハードウェア部へのロードとそのスケジュール管理、及び再構成可能ハードウェア部におけるタスクの実行制御とそのスケジュール管理とを行なう。更に、スケジュール部は、タスクの実行の進捗状況をジョブ管理部に通知する。
本発明の第1の実施形態の情報処理装置の構成を示すブロック図である。 図1のタスク情報格納部42に格納されるタスク情報60の構成例を示す図である。 図1のタスク情報格納部42においてプログラム20毎に複数のタスク情報を管理する様子を示す図である。 タスクキュー70の構成例を示す図である。 図1のジョブ情報格納部43に格納される1つのジョブ情報50の構成例を示す図である。 図1の再構成可能ハードウェア部30の構成例を示す図である。 図5の処理部32の別の構成例を示す図である。 図1のジョブ管理部44の動作例を示すフローチャートである。 図1のスケジュール部45の動作例を示すフローチャートである。 本発明の第2の実施形態の情報処理装置の構成を示すブロック図である。
次に、本発明の実施の形態について図面を参照して詳細に説明する。
(第1の実施形態)
図1に、本発明の第1の実施形態の情報処理装置の構成例を示す。本実施形態の情報処理装置10は、図1に示されるように、再構成可能ハードウェア部30と、入出力データ格納部110と、制御部40とから構成されている。
また、制御部40は、プログラム格納部41と、タスク情報格納部42と、ジョブ情報格納部43と、ジョブ管理部44と、スケジュール部45とから構成される。
再構成可能ハードウェア部30は、1つ以上のプログラム20をロード可能で、ロードされたプログラム20に応じてハードウェア構成を変更し、所定の処理を実行する。また、再構成可能ハードウェア部30は、同時に1つ以上のプログラム20を実行可能である。1つのプログラム20のロードと1つのプログラム20の実行で十分な場合は、再構成可能ハードウェア部30はFPGA(Field Programmable Gate Array)を用いて実現可能である。
入出力データ格納部110は、再構成可能ハードウェア部30での処理の対象となる入出力データを格納する。
プログラム格納部41は、再構成可能ハードウェア部30にロードする複数のプログラム20を格納する。格納されたプログラム20はプログラム識別子等により一意に識別される。
タスク情報格納部42は、同一のプログラムで実行可能な複数のタスクを示すタスク情報が、プログラム格納部41に格納された各プログラム20毎に格納されている。また、タスク情報60には、タスクを再構成可能ハードウェア部30で実行するために必要な情報が保持されている。
次に、図1のタスク情報格納部42に格納されるタスク情報60の構成例を図2に示す。タスク情報60は、図2に示されるように、入力データセット61と、出力データセット63と、プログラム識別子65と、所要処理時間66と、デッドライン67とから構成されている。
プログラム識別子65は、タスクを実行するときに再構成可能ハードウェア部30にロードすべきプログラム20を識別するための識別子である。
入力データセット61は、タスク処理の対象となる1個以上の入力データ62から構成される。それぞれの入力データ62は実際のデータであってもよいし、または、入出力データ格納部110に格納されている入出力データ領域を識別するアドレス等のポインタ情報であってもよい。
出力データセット63は、タスク処理の結果の出力を格納する1個以上の出力データ64からなる。出力データ64はタスク情報60内にデータ領域として確保しておいてもよいし、入出力データ格納部110のデータを格納すべき入出力データ領域を識別するアドレス等のポインタ情報であってもよい。
所要処理時間66は、このタスク情報60で指定されるタスクを再構成可能ハードウェア部30で実行するときに必要な処理時間の見積り値である。また、デッドライン67は、タスクの実行を完了すべき期限の時刻を格納する。
次に、図1のタスク情報格納部42においてプログラム20毎に複数のタスク情報60を管理するためのタスクキュー70の構成例を図3Aおよび図3Bに示す。
タスク情報格納部42には、図3Aに示されるように、図1に示したプログラム格納部41に格納されているプログラム20毎にタスクキュー70が格納される。
そして、タスクキュー70は、図3Bに示されるように、タスクバッファ71と、プログラム識別子72と、タスクキュー所要処理時間73と、タスクキューデッドライン74とから構成されている。
タスクバッファ71は、タスクキュー70に含まれる複数のタスクのタスク情報60を格納している。
プログラム識別子72は、このタスクバッファ71に格納されているタスク情報60の指定するタスクの実行のために再構成可能ハードウェア部30にロードしなければならないプログラム20の識別子を格納する。
タスクキュー所要処理時間73は、このタスクキュー70のタスクバッファ71に格納されている全てのタスク情報60の指定するタスクの実行に必要な所要時間を格納する。例えば、タスクキュー所要処理時間73は、タスクバッファ71に格納されている全てのタスク情報60の所要処理時間66の合計の値を格納する。
タスクキューデッドライン74は、このタスクキュー70のタスクバッファ71に格納されている全てのタスク情報60の指定するタスクの実行を完了すべき期限の時刻を格納する。例えば、タスクキューデッドライン74は、タスクバッファ71に格納されている全てのタスク情報60のデッドライン67の中で最小の値を格納する。
図1に示したスケジュール部45は、タスク情報格納部42に格納されている複数のタスク情報60を参照しながら、再構成可能ハードウェア部30へのプログラム20のロード及び実行を管理する。具体的には、スケジュール部45は、タスク情報格納部42から同一のプログラムで実行可能な複数のタスクを選択し、必要なプログラムをプログラム格納部41から選択して、再構成可能ハードウェア部30へのプログラムのロードと、複数タスクの実行を制御する。
つまり、スケジュール部45は、タスク情報格納部42に格納されている複数のタスク情報60を参照しつつ、次にどのプログラム20をロードし、どのタスクを実行するかを決定する。
タスク情報格納部42が、例えば、図3で示したようにプログラム20毎の複数のタスクキュー70でタスク情報60を管理している場合の動作を説明する。スケジュール部45は現在時刻と各タスクキュー70のタスクキュー所要処理時間73を加算して、現在時刻にタスクキュー70に含まれるタスクの処理を開始した場合の予定終了時刻を計算する。スケジュール部45は、タスクキュー70のタスクキューデッドライン74とこの予定終了時刻との差を計算し、差が一番小さいタスクキュー70の緊急度が一番高いと判断する。スケジュール部45はこのようにして緊急度の高いタスクキュー70を選択し、そのタスクキュー70に含まれる複数のタスクを実行するために必要なプログラム20を再構成可能ハードウェア部30にロードした後、再構成可能ハードウェア部30においてタスクの実行を行なう。
以上により再構成可能ハードウェア部30への1回のプログラムロードに対して複数のタスクを実行するため相対的にプログラムロードの時間を削減することができる。また、本実施形態の情報処理装置10によれば、プログラムロード回数を減らしつつ、緊急度の高い複数タスクを優先的に実行することも可能で、実時間性の高い処理にも適用することができる。
図1においてジョブ情報格納部43は、複数のジョブ情報50を格納する。大規模な処理は、現実のハードウェア量の制限等で、再構成可能ハードウェア部30で1つのタスクとしては実行できない場合がある。このような場合は処理全体を複数の小さなタスクに分割して、それぞれのタスクを再構成可能ハードウェア部30で順次処理することが行われる。大規模な処理を分割して複数のタスクとして構成した処理単位をジョブと呼ぶ。ジョブは複数のタスクから構成されるが、それぞれのタスクは独立ではなく、依存関係を持っている。そのため、各タスクの実行はこの依存関係を守りながら行なう必要がある。依存関係には、あるタスクの出力を別のタスクの入力として使うというデータ依存と、あるタスクの実行が完了してから別のタスクの実行をしなければならないというような制御依存の2種類がある。このようなジョブを構成する各タスク間の依存関係を示す情報がジョブ情報50である。
次に、図1のジョブ情報格納部43に格納される1つのジョブ情報50の構成例を図4に示す。このジョブ情報50には、ジョブを構成する複数のタスク情報60とその依存関係68がグラフとして格納される。各タスク情報60には依存数カウンタ69が付加されている。依存数カウンタ69はジョブの生成時に初期値が設定される。例えば、タスク60が他の2つのタスク60の完了に依存している場合は、依存数カウンタ69の初期値は2が設定される。あるタスク60の実行が完了するとタスク依存関係68を辿り、その先にあるタスク情報60に付加されている依存数カウンタ69を1だけ減ずる。依存数カウンタ69の値が0になったタスク情報60が実行可能タスクである。依存関係68にはデータ依存、制御依存があるが、依存数カウンタ69で統一的に管理することが可能である。
図1においてジョブ管理部44は、ジョブ情報格納部43に格納されている複数のジョブ情報50を参照しつつ、実行可能となったタスクのタスク情報60を選択する。具体的には、ジョブ管理部44は、複数のジョブ内のタスクの実行状況に応じて、次に実行すべきタスクを選択して、選択したタスクのタスク情報をタスク情報格納部42に格納し、またタスクの実行の進捗に応じてジョブ情報を更新、管理する。
図4に示したようなジョブ情報50の構成例の場合、ジョブ管理部44は依存カウンタ69の値が0となっているタスク情報60を選択し、タスク情報格納部42に格納する。選択したタスク情報60のタスク情報格納部43への格納は、ジョブ管理部44が直接行なってもよいし、または、スケジュール部45へ選択したタスク情報60を通知し、スケジュール部45を介して行なってもよい。
タスク情報格納部42が、図3Aに示されるように、プログラム20毎のタスクキュー70で構成されている場合は、ジョブ管理部44は、選択したタスク情報60のプログラム識別子65に従い、同じプログラム識別子72を持つタスクキュー70のタスクバッファ71にタスク情報60を格納する。タスク情報格納部42に格納されたタスク情報60はスケジュール部45によりプログラムロード、実行がスケジュール管理され再構成可能ハードウェア部30で実行される。実行が完了したタスクのタスク情報60はスケジュール部45からジョブ管理部44に通知される。ジョブ管理部44は、スケジュール部45からの完了通知に基づきジョブ情報50を変更する。ジョブ情報50の中で、実行が完了したタスクのタスク情報60から依存関係68を辿り、完了したタスクに依存していたタスクのタスク情報60の依存数カウンタ69を減ずる。完了したタスクのタスク情報60がジョブ情報格納部43に格納されている複数のジョブ情報50のどのタスク情報60と対応するかは、タスク識別子等の情報を用いて管理することができる。
以上により、異なる構造のジョブが複数存在し、それらが動的に生成されるような場合にもジョブを構成するタスクの依存関係を守りつつ処理が可能となる。
図1の再構成可能ハードウェア部30の構成例を図5に示す。再構成可能ハードウェア部30は、図5に示されるように、入出力制御部31と、1つ以上の処理部32とから構成される。処理部32は、それぞれ、再構成部33とプログラムメモリ35とから構成される。プログラムメモリ35にロードされたプログラム20の内容に応じて再構成部32のハードウェア構成が変更され所定の処理が行なわれる。入出力部31は外部とのインタフェースのためのもので、入出力部31を介して再構成可能ハードウェア部30の外部からプログラムメモリ35へのプログラム20のロード、処理部32での処理の実行を制御できる。
入出力制御部31はタスク情報60を受けとりその情報に応じて入出力データ格納部110に格納されている入力データを処理部32に供給し、処理部32での処理の結果を出力データとして入出力データ格納部110へ出力する。処理部32が複数ある場合は、1つ以上の処理部32でプログラム20の実行をしつつ、実行中でない他の処理部32にプログラム20のロードをすることができる。このように再構成可能ハードウェア部30として複数のプログラム20をロード可能で、プログラム20の実行と、プログラム20のロードを同時に行なえる場合は、あるプログラム20で実行可能な複数のタスクを実行しつつ、別のプログラム20のロードが可能なため、プログラムロード時間を完全に隠蔽することも可能である。
次に、図5の処理部32の別の構成例を図6に示す。この場合処理部32は、図6に示されるように、再構成部33と、複数のプログラムメモリ35と、プログラム選択部34とから構成される。プログラム選択部34は複数のプログラムメモリ35から1つを選択し、そのプログラム20に応じて再構成部33のハードウェア構成が変更される。プログラム選択部34によるプログラムメモリ35の選択はプログラムメモリ35へのプログラムのロードに比べて短時間に行なうことができる。あらかじめプログラムメモリ35に必要なプログラム20を全てロードしておけば、その後はプログラムロードのオーバーヘッドなしにプログラム20の切替が可能である。また、あるプログラムメモリ35が選択されて再構成部33で実行されている時、選択されていない他のプログラムメモリ35へプログラムロードすることが可能である。従って、複数のプログラムメモリ35よりも多くのプログラム20をロードしなければならないような場合でも、プログラムロード時間を隠蔽することが可能である。
次に、本実施形態の情報処理装置の動作について図面を参照して詳細に説明する。
先ず、図1に示したジョブ管理部44の動作例を図7のフローチャートに示す。ジョブ管理部44は外部からのデータの到着に応じてあらかじめ指定された処理をそのデータに施し、その結果を出力するものとする。またジョブ管理部44は外部からのデータの到着とスケジュール部45からのタスク実行完了通知という2つのイベントを受け取るものとする。
ジョブ管理部44はまずイベントの到着を待つ(ステップJ10)。イベントが外部からのデータの到着の場合(ステップJ20)、ジョブ管理部44は、そのデータの処理に必要なジョブ情報50を新たに生成してジョブ情報格納部43に格納する(ステップJ40)。
次に、ジョブ管理部44は、そのジョブを構成するタスクの実行に必要なプログラム20をスケジュール部45に通知することにより、プログラム格納部41に必要なプログラム20を格納する(ステップJ50)。以上でジョブを構成するタスクの実行に必要な準備ができる。ジョブ管理部44は、ジョブ情報格納部43に格納されている複数のジョブ情報50を参照し、タスク情報60の依存カウントが0になっているタスク情報60を選択し、スケジュール部45に通知する(ステップJ60)。これにより選択されたタスク情報60がタスク情報格納部42に格納される。
イベントがスケジュール部45からのタスク実行完了通知の場合は(ステップJ30)、ジョブ管理部44は、実行が完了したタスクのタスク情報60に応じて、対応するジョブ情報50を更新する(ステップJ70)。ジョブ情報50の更新により、新たに実行可能となるタスクが生成される可能性があるので、ジョブ管理部44は、実行可能なタスクを選択しスケジュール部45に通知する(ステップJ60)。
以上のジョブ管理部44の動作例では、ジョブは、それぞれ再構成可能ハードウェア部30で単独に実行できるタスクという単位に分割され、タスク間の依存関係をタスクの実行の進捗に応じて動的に管理しているので、データの到着に応じて動的に複数のジョブが生成されるような処理であっても再構成可能ハードウェア部30による効率的な処理が可能となる。
次に、図1のスケジュール部45の動作例を図8のフローチャートに示す。スケジュール部45は、ジョブ管理部44からのプログラム登録の通知(図7のステップJ50)、タスク登録の通知(図7のステップJ60)、及び再構成可能ハードウェア部30からのタスク実行完了通知というイベントを受け取るものとする。スケジュール部45は動作を行なうにあたって、再構成可能ハードウェア部30の動作状態を確認することができるものとする。これは再構成可能ハードウェア部30に動作状態を示すレジスタを設けることや、または、スケジュール部45自体に、再構成可能ハードウェア30への実行制御状態を示す状態変数を設け、再構成可能ハードウェア部30への制御、再構成可能ハードウェア部30からの状態の通知に応じて状態変数を変更することにより可能である。
スケジュール部45はプログラム20のロードや、実行をタスクキュー70単位に行なう。タスクキュー70はスケジュール部45の管理のもと、幾つかの状態を遷移する。主要な状態は、再構成可能ハードウェア部30での実行に必要なプログラムのロードを待っているプログラムロード待ち状態、再構成可能ハードウェア部30での実行を待っている実行待ち状態である。
スケジュール部45はまずイベントの到着を待つ(ステップS10)。次に、イベントがジョブ管理部44からのプログラム登録の通知の場合(ステップS20)、スケジュール部45は、指定されたプログラム20をプログラム格納部41に格納し、そのプログラム20を管理するためのプログラム識別子を生成する(ステップS60)。次に、スケジュール部45は、登録したプログラム20で実行可能なタスク情報60を管理するためのタスクキュー70をタスク情報格納部42に生成し、ステップS60で生成されたプログラム識別子で一意に識別できるようにする(ステップS70)。
イベントがジョブ管理部44からのタスク登録の通知の場合(ステップS30)、スケジュール部45は、指定されたタスク情報60のプログラム識別子65を参照しタスク情報格納部41の対応するタスクキュー70にそのタスク情報60を格納する。スケジュール部45は、タスク情報60の格納に応じてタスクキュー70のタスクキュー所要処理時間73、タスクキューデッドライン74等タスクキュー70の状態も更新する(ステップS80)。
以上によりタスク情報格納部42のタスクキュー70の状態が変化する。このため、スケジュール部45は、各タスクキュー70のタスクキュー所要処理時間73、タスクキューデッドライン74等のタスクキュー70の状態の値を比較し、緊急度の高いタスクキュー70を選択する(ステップS90)。次に、スケジュール部45は、再構成可能ハードウェア部30の動作状況を確認し(ステップS100)、もしプログラムロードが可能な状態であれば、選択したタスクキュー70の実行に必要なプログラム20のロードを再構成可能ハードウェア部30に指示し、選択したタスクキュー70はプログラムロードを待っている状態を現すプログラムロード待の状態にする(ステップS110)。次に、スケジュール部45は、再構成可能ハードウェア部30の動作状態を確認し(ステップS120)、タスクの実行が可能な状態であれば、実行待ち状態となっているタスクキュー70の実行を再構成可能ハードウェア部30に指示する。再構成可能ハードウェア部30で同時に複数の実行が可能な場合でかつ、実行待ちのタスクキュー70も複数ある場合は、複数のタスクキュー70の実行を指示することでより効率的な実行が行なえる(ステップS130)。ステップS90、S100、S110、S120、S130がスケジュール部45によるスケジューリングの主要部分である。
イベントが再構成可能ハードウェア部30からのタスク実行完了の通知の場合(ステップS40)、スケジュール部45は、終了したタスクのタスク情報60をジョブ管理部44に通知する。再構成可能ハードウェア部30からのタスク実行完了の通知が、タスクキュー70単位の場合は、スケジュール部45は、ジョブ管理部44への通知をタスクキュー70単位で行なうことも可能である(ステップS140)。タスクキュー70の実行が完了することにより、再構成可能ハードウェア部30の状態、タスクキュー70の状態が変化する、このためスケジュール部45は、スケジューリングの主要部分のステップS90、S100、S110、S120、S130の動作を行なう。
イベントが再構成可能ハードウェア部30からのプログラムロード完了の通知の場合(ステップS50)、スケジュール部45は、プログラムロードが完了したプログラム20に対応するタスクキュー70の状態をプログラムロード待ちから実行待ちに変更する(ステップS150)。そして、スケジュール部45は、再構成可能ハードウェア部30の状態、タスクキュー70の状態が変化しているのでスケジューリングの主要部分のステップS90、S100、S110、S120、S130の動作を行なう。
以上のスケジュール部45の動作例では、同じプログラム20で実行可能な複数のタスクをタスクキュー70という単位で管理することにより、プログラムロードに要する時間を、タスクの実行に要する時間に比べて相対的に小さくしているため再構成可能ハードウェア部30で複数のプログラムを実行する場合のプログラムロード時間のオーバーヘッドを削減できる。また再構成可能ハードウェア部30が図5、図6のようにプログラム20の実行とプログラム20のロードが同時にできる場合には、プログラムロードを他のプログラム20と並列に行なえるためプログラムロードのオーバーヘッドを実質的に無くすことも可能となる。
本実施形態の情報処理装置10では、同一のプログラムで処理可能な複数のタスクをまとめて再構成可能ハードウェア部30で実行することにより、プログラムロードに要する時間を実行時間に比べて相対的に小さくできる。そのため、再構成可能ハードウェア部30を用いた情報処理装置10において、再構成可能ハードウェア部30のプログラムを処理に応じてロードする場合の、プログラムロード時間のオーバーヘッドを小さくし、限られたハードウェア規模の再構成可能ハードウェア部においても大規模な処理を効率的に処理できる。
さらに、本実施形態の情報処理装置10では、処理全体を複数のタスクからなるジョブという構造で管理し、ジョブ内のタスクの実行状況に応じて、次に実行すべきタスクを動的に選択し、タスクの実行と、タスクの実行に必要なプログラムロードのスケジュール管理を動的に行うことができる。そのため、再構成可能ハードウェア部30を用いた情報処理装置10において、プログラムロードや実行等のスケジュールをあらかじめ静的に決めることができない場合にも処理の進捗管理を動的に行なうことにより、効率的に処理できる。
そして、本実施形態の情報処理装置によれば、再構成可能ハードウェア部30のプログラムロードに要する時間を実質上なくすことができるので、外部からのデータの到着に応じて、必要な処理が変わり、また処理結果の送出に時間制限があるような通信、ネットワーク処理、マルチメディア処理等の効率化を図る用途に適用することができる。
(第2の実施形態)
次に、本発明の第2の実施形態の情報処理装置について説明する。
本発明の第2の実施形態として、その基本的構成は上記で説明した第1の実施形態と同様であるが、ジョブ管理部44、スケジュール部45をプロセッサ80上で実行するソフトウェアとして実現した構成を図9に示す。この構成の場合は、ジョブ情報格納部43、タスク情報格納部42、プログラム格納部41、入出力データ格納部110はそれぞれメモリ100上の領域として実現できる。プロセッサ80、再構成可能ハードウェア部30及び、メモリ100は通信路90を介して情報のやりとりや制御が可能である。例えば再構成可能ハードウェア部30からのイベントの通知はプロセッサ80への割り込みとして実現できる。ジョブ管理部44やスケジュール部45は1つのプログラムとして実現しても良いし、マルチスレッド等の並列プログラムとして実現してもよい。

Claims (8)

  1. 実行すべきタスクの処理内容に応じた1つ以上のプログラムをロード可能で、ロードされた1つ以上の前記プログラムのうち同時に1つ以上のプログラムを実行可能な再構成可能ハードウェア部と、
    前記再構成可能ハードウェア部での処理の対象となる入出力データを格納する入出力データ格納部と、
    前記再構成可能ハードウェア部へのプログラムのロードとプログラムの実行を制御するための制御部とを備え、
    前記制御部が、
    前記再構成可能ハードウェア部にロードするための複数のプログラムを格納するプログラム格納部と、
    同一のプログラムで実行可能な複数のタスクを示すタスク情報が、前記プログラム格納部に格納された各プログラム毎に格納されているタスク情報格納部と、
    複数のタスクから構成される一まとまりの処理単位であるジョブを構成する各タスク間の依存関係を示すジョブ情報を格納するジョブ情報格納部と、
    前記ジョブ情報に応じて実行可能なタスクを選択して、選択したタスクのタスク情報を前記タスク情報格納部に格納し、タスクの実行の進捗に応じて前記ジョブ情報を更新するジョブ管理部と、
    前記タスク情報格納部から、前記プログラムで実行可能な1つ以上のタスクを選択し、前記プログラム格納部から選択されたタスクの実行に必要なプログラムを選択し、選択したプログラムの前記再構成可能ハードウェア部へのロードとそのスケジュール管理、及び前記再構成可能ハードウェア部における前記タスクの実行制御とそのスケジュール管理とを行ない、前記タスクの実行の進捗状況を前記ジョブ管理部に通知するスケジュール部と、から構成される情報処理装置。
  2. 前記ジョブ管理部は、前記ジョブ情報格納部に格納されているジョブ情報により示される各タスク間の依存関係を守りながら、次に実行すべきタスクを選択する請求項1に記載の情報処理装置。
  3. 前記タスク情報には、
    前記タスクの入力データを指定する1個以上の入力データからなる入力データセットと、
    前記タスクの出力結果の格納領域を指定する1個以上の出力データからなる出力データセットと、
    前記タスクの実行に必要な前記プログラムを識別するためのプログラム識別子と、前記再構成可能ハードウェア部における前記タスクの実行に必要な所要処理時間と、
    前記タスクの処理を完了しなければならない時刻を現すデッドラインとが含まれる請求項1に記載の情報処理装置。
  4. 前記タスク情報格納部は、前記複数のプログラムのそれぞれに応じた複数のタスクキューから構成され、前記タスクキューには対応する前記プログラムで処理可能な複数の前記タスクを格納し、
    前記スケジュール部は、タスクキュー単位で前記再構成可能ハードウェア部への前記プログラムのロードとそのスケジュール管理、及び前記再構成可能ハードウェア部での前記複数のタスクの実行制御とそのスケジュール管理とを行なう請求項1に記載の情報処理装置。
  5. 前記タスクキューは、
    複数の前記タスク情報を格納するタスク情報バッファと、
    前記プログラム識別子と、
    前記タスク情報バッファに格納されている複数のタスク情報の処理に必要なタスクキュー所要処理時間と、
    前記タスク情報バッファに格納されている複数のタスクの処理を完了しなければならないタスクキューデッドラインとを保持し、
    前記スケジュール部は、前記タスクキュー処理所要時間、及び、前記タスクキューデッドラインに基づきタスクキュー単位で前記再構成可能ハードウェア部へのプログラムのロードとそのスケジュール管理、及び前記再構成可能ハードウェア部での複数のタスクの実行制御とそのスケジュール管理とを行う請求項4記載の情報処理装置。
  6. 前記再構成可能ハードウェア部は、
    前記プログラムのロード、実行制御、前記タスク情報の入力、前記入力データセットの入力、前記出力データセットへの出力を制御する入出力制御部と、
    前記プログラムと前記タスク情報に応じて前記タスクの処理を実行する1つ以上の処理部と、
    から構成されている請求項1に記載の情報処理装置。
  7. 前記処理部が、
    前記プログラムを格納するプログラムメモリと、
    前記プログラムメモリにロードされたプログラムに応じてハードウェア構成を変更可能な再構成部と、から構成された請求項6記載の情報処理装置。
  8. 前記処理部が、
    複数の前記プログラムを格納する複数のプログラムメモリと、
    前記複数のプログラムメモリから1つを選択するプログラム選択部と、
    選択された前記プログラムメモリに格納されたプログラムに応じてハードウェア構成を変更可能な再構成部と、
    選択された1つの前記プログラムメモリによる前記再構成部での実行と同時に、他の前記プログラムメモリへプログラムをロードする手段と、から構成された請求項6記載の情報処理装置。
JP2007534278A 2005-09-05 2006-07-13 情報処理装置 Active JP5018480B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007534278A JP5018480B2 (ja) 2005-09-05 2006-07-13 情報処理装置

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2005256324 2005-09-05
JP2005256324 2005-09-05
PCT/JP2006/313957 WO2007029421A1 (ja) 2005-09-05 2006-07-13 情報処理装置
JP2007534278A JP5018480B2 (ja) 2005-09-05 2006-07-13 情報処理装置

Publications (2)

Publication Number Publication Date
JPWO2007029421A1 JPWO2007029421A1 (ja) 2009-03-12
JP5018480B2 true JP5018480B2 (ja) 2012-09-05

Family

ID=37835549

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007534278A Active JP5018480B2 (ja) 2005-09-05 2006-07-13 情報処理装置

Country Status (4)

Country Link
US (1) US20090158293A1 (ja)
JP (1) JP5018480B2 (ja)
CN (1) CN101258469B (ja)
WO (1) WO2007029421A1 (ja)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0519981D0 (en) 2005-09-30 2005-11-09 Ignios Ltd Scheduling in a multicore architecture
JP5049683B2 (ja) * 2007-07-18 2012-10-17 キヤノン株式会社 デバイス管理装置及びジョブフロー処理方法とタスク連携処理システム
US20100223596A1 (en) * 2007-10-03 2010-09-02 Takeshi Inuo Data processing device and method
JP2009187478A (ja) * 2008-02-08 2009-08-20 Sanyo Electric Co Ltd 情報処理装置、情報処理方法およびプロセッサ
US8850438B2 (en) * 2009-02-05 2014-09-30 International Business Machines Corporation Managing the processing of processing requests in a data processing system comprising a plurality of processing environments
JP5504985B2 (ja) * 2010-03-11 2014-05-28 富士ゼロックス株式会社 データ処理装置
WO2011121709A1 (ja) * 2010-03-29 2011-10-06 株式会社東芝 半導体装置
US8640137B1 (en) * 2010-08-30 2014-01-28 Adobe Systems Incorporated Methods and apparatus for resource management in cluster computing
JP5825261B2 (ja) * 2010-09-24 2015-12-02 日本電気株式会社 情報処理装置、その方法及びそのプログラム
WO2012056609A1 (ja) * 2010-10-28 2012-05-03 日本電気株式会社 タスク配置最適化システム、タスク配置最適化方法、及びタスク配置最適化プログラムが格納された非一時的なコンピュータ可読媒体
WO2013094156A1 (ja) * 2011-12-19 2013-06-27 日本電気株式会社 タスク配置最適化システム、タスク配置最適化方法、及びタスク配置最適化プログラム
JP5994679B2 (ja) 2013-02-26 2016-09-21 株式会社ソシオネクスト 処理装置、及び処理装置の制御方法
US9400653B2 (en) 2013-03-14 2016-07-26 Samsung Electronics Co., Ltd. System and method to clear and rebuild dependencies
US20140282572A1 (en) * 2013-03-14 2014-09-18 Samsung Electronics Co., Ltd. Task scheduling with precedence relationships in multicore systems
US9336502B2 (en) * 2013-04-30 2016-05-10 Oracle International Corporation Showing relationships between tasks in a Gantt chart
NL2011315C2 (en) * 2013-08-19 2015-02-23 Topic Embedded Systems B V A computing platform, a reconfigurable hardware device and a method for simultaneously executing processes on dynamically reconfigurable hardware device, such as an fpga, as well as instruction set processors, such as a cpu, and a related computer readable medium.
US20150356518A1 (en) * 2014-06-10 2015-12-10 Oracle International Corporation Aggregate task system
US10643157B2 (en) 2015-02-03 2020-05-05 Oracle International Corporation Task progress update history visualization system
US10496943B2 (en) 2015-03-30 2019-12-03 Oracle International Corporation Visual task assignment system
US9552229B2 (en) * 2015-05-14 2017-01-24 Atlassian Pty Ltd Systems and methods for task scheduling
CN105677469B (zh) * 2016-01-06 2019-12-27 北京京东世纪贸易有限公司 定时任务执行方法及装置
US20180081834A1 (en) * 2016-09-16 2018-03-22 Futurewei Technologies, Inc. Apparatus and method for configuring hardware to operate in multiple modes during runtime
GB2554392B (en) 2016-09-23 2019-10-30 Imagination Tech Ltd Task scheduling in a GPU
US10318348B2 (en) 2016-09-23 2019-06-11 Imagination Technologies Limited Task scheduling in a GPU
EP3376441B1 (en) * 2017-03-15 2021-07-14 Siemens Aktiengesellschaft A method for execution of a machine learning model on memory restricted industrial device
JP7273383B2 (ja) * 2020-03-26 2023-05-15 Kddi株式会社 スケジューリング方法、およびスケジューリング装置
US11263025B2 (en) * 2020-05-26 2022-03-01 International Business Machines Corporation Proactively performing tasks based on estimating hardware reconfiguration times

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63150735A (ja) * 1986-12-16 1988-06-23 Nec Corp タスクの生成/削除制御方式
JPH04205231A (ja) * 1990-11-30 1992-07-27 Fujitsu Ltd プログラム実行制御方式
JPH10228385A (ja) * 1997-02-17 1998-08-25 Nec Corp リアルタイムos及びそのタスク管理方式
JPH11184718A (ja) * 1997-12-19 1999-07-09 Matsushita Electric Ind Co Ltd プログラマブルなデータ処理装置
JP2001068993A (ja) * 1999-08-25 2001-03-16 Fuji Xerox Co Ltd 情報処理システム
US20040049672A1 (en) * 2002-05-31 2004-03-11 Vincent Nollet System and method for hardware-software multitasking on a reconfigurable computing platform

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5640563A (en) * 1992-01-31 1997-06-17 International Business Machines Corporation Multi-media computer operating system and method
US6003061A (en) * 1995-12-07 1999-12-14 Microsoft Corporation Method and system for scheduling the use of a computer system resource using a resource planner and a resource provider
US6408277B1 (en) * 2000-06-21 2002-06-18 Banter Limited System and method for automatic task prioritization
US7299466B2 (en) * 2001-12-20 2007-11-20 Cadence Design Systems, Inc. Mechanism for managing execution environments for aggregated processes
JP2003263331A (ja) * 2002-03-07 2003-09-19 Toshiba Corp マルチプロセッサシステム

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63150735A (ja) * 1986-12-16 1988-06-23 Nec Corp タスクの生成/削除制御方式
JPH04205231A (ja) * 1990-11-30 1992-07-27 Fujitsu Ltd プログラム実行制御方式
JPH10228385A (ja) * 1997-02-17 1998-08-25 Nec Corp リアルタイムos及びそのタスク管理方式
JPH11184718A (ja) * 1997-12-19 1999-07-09 Matsushita Electric Ind Co Ltd プログラマブルなデータ処理装置
JP2001068993A (ja) * 1999-08-25 2001-03-16 Fuji Xerox Co Ltd 情報処理システム
US20040049672A1 (en) * 2002-05-31 2004-03-11 Vincent Nollet System and method for hardware-software multitasking on a reconfigurable computing platform

Also Published As

Publication number Publication date
WO2007029421A1 (ja) 2007-03-15
CN101258469B (zh) 2010-09-15
CN101258469A (zh) 2008-09-03
US20090158293A1 (en) 2009-06-18
JPWO2007029421A1 (ja) 2009-03-12

Similar Documents

Publication Publication Date Title
JP5018480B2 (ja) 情報処理装置
US7302686B2 (en) Task management system
US7836291B2 (en) Method, medium, and apparatus with interrupt handling in a reconfigurable array
US9870252B2 (en) Multi-threaded processing with reduced context switching
US7441240B2 (en) Process scheduling apparatus, process scheduling method, program for process scheduling, and storage medium recording a program for process scheduling
US20080235695A1 (en) Resource allocation system for jobs, resource allocation method and resource allocation program for jobs
US20090019449A1 (en) Load balancing method and apparatus in symmetric multi-processor system
JP2561801B2 (ja) プロセス・スケジューリングの管理方法およびシステム
JP4199444B2 (ja) パーティション構成変更方式、パーティション構成変更方法およびパーティション構成変更用プログラム
JP5825261B2 (ja) 情報処理装置、その方法及びそのプログラム
US20210232430A1 (en) Processor zero overhead task scheduling
CN112540854B (zh) 在限定硬件资源条件下的深度学习模型调度部署方法及系统
CN106843890B (zh) 基于智能决策的传感器网络、节点及其运行方法
JP3644042B2 (ja) マルチタスク処理装置
JP2002163117A (ja) タスクスケジューリング装置
Aridor et al. Open job management architecture for the Blue Gene/L supercomputer
WO2006011189A1 (ja) 並列計算機
JP2010186347A (ja) ジョブスケジューリングシステム、ジョブスケジューリング方法及びプログラム
JP5003673B2 (ja) マルチプロセッシング方法及びマルチプロセッサシステム
US11256511B2 (en) Instruction scheduling during execution in a processor
JP3043748B1 (ja) タスクスケジュ―リング方法及び装置
US20230418667A1 (en) Computing device for handling tasks in a multi-core processor, and method for operating computing device
JP3931883B2 (ja) ジョブスケジューリング方法、計算機システムおよびジョブスケジューリングプログラム
JP4618647B2 (ja) リアルタイムosシステム
CN116737331A (zh) 一种智能化任务流编排方法和平台

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090612

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120528

R150 Certificate of patent or registration of utility model

Ref document number: 5018480

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150622

Year of fee payment: 3