WO2007029421A1 - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
WO2007029421A1
WO2007029421A1 PCT/JP2006/313957 JP2006313957W WO2007029421A1 WO 2007029421 A1 WO2007029421 A1 WO 2007029421A1 JP 2006313957 W JP2006313957 W JP 2006313957W WO 2007029421 A1 WO2007029421 A1 WO 2007029421A1
Authority
WO
WIPO (PCT)
Prior art keywords
task
program
unit
information
reconfigurable hardware
Prior art date
Application number
PCT/JP2006/313957
Other languages
English (en)
French (fr)
Inventor
Nobuki Kajihara
Original Assignee
Nec Corporation
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 Corporation filed Critical Nec Corporation
Priority to US11/991,372 priority Critical patent/US20090158293A1/en
Priority to JP2007534278A priority patent/JP5018480B2/ja
Priority to CN200680032551.XA priority patent/CN101258469B/zh
Publication of WO2007029421A1 publication Critical patent/WO2007029421A1/ja

Links

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

Definitions

  • the present invention relates to an information processing apparatus using reconfigurable hardware that can efficiently process various processes with less hardware resources.
  • FPGA Field Programmable Gate Array
  • PLD Protein Deformation Deformation
  • An information processing apparatus using reconfigurable hardware can perform high-speed processing compared to processor processing such as CPU and DSP.
  • processor processing such as CPU and DSP.
  • a programmable device that can rewrite the reconfigurable hardware program in accordance with the processing contents, it is possible to execute various processes with few hardware resources.
  • the rewriting of the program is performed when it becomes necessary according to the progress of the process.
  • rewriting was performed based on information obtained by statically analyzing the entire process in advance (see, for example, JP-A-10-256383).
  • a second problem is that when a job to be processed is not fixed, efficient processing is difficult or impossible with a static task scheduling method. If the job structure such as tasks to be processed, dependencies between tasks, execution order, etc. is statically divided by analyzing the entire process in advance, the task will be processed according to the progress of job processing. Can be scheduled. However, if the processing (job structure) applied to the data differs depending on the arrival data, such as network processing, a static schedule cannot be used. It is necessary to generate a job dynamically according to the arrival data, select and execute an executable task, and manage the progress of the job according to the execution of the task.
  • the conventional information processing apparatus has the following two problems.
  • An object of the present invention is to provide a reconfiguration in an information processing apparatus using reconfigurable hardware.
  • the overhead of program loading time is reduced, and large-scale processing can be efficiently processed even with limited hardware and reconfigurable hardware of one software scale It is to provide a system that can.
  • Another object of the present invention is to allow the information processing apparatus using reconfigurable hardware to proceed with processing even when the schedule for program loading and execution cannot be determined statically. ⁇ It is to provide a system that can handle efficiently by managing dynamically.
  • an information processing apparatus of the present invention includes a reconfigurable hardware unit, an input / output data storage unit, and a control unit.
  • the reconfigurable hardware section can load one or more programs according to the processing content of the task to be executed, and simultaneously executes one or more programs out of the loaded one or more programs Is possible.
  • the input / output data storage unit stores the input / output data to be processed by the reconfigurable hardware unit.
  • the control unit controls the loading of the program to the reconfigurable hardware unit and the execution of the program.
  • the control unit includes a program storage unit, a task information storage unit, a job information storage unit, a job management unit, and a schedule unit.
  • the program storage unit stores a plurality of programs to be loaded into the reconfigurable hardware unit.
  • the task information storage unit is stored for each program stored in the task information program storage unit indicating a plurality of tasks that can be executed by the same program.
  • the job information storage unit stores job information indicating a dependency relationship between each task constituting a job which is a unit of processing composed of a plurality of task forces.
  • the job management unit selects a task that can be executed according to the job information, stores the task information of the selected task in the task information storage unit, and updates the job information according to the progress of the task execution. To do.
  • the schedule unit selects one or more tasks that can be executed by the program from the task information storage unit, and selects a program necessary for execution of the selected task from the program storage unit.
  • the schedule part is the reconfigurable hardware part of the selected program Load and schedule management, and task execution control and schedule management in the reconfigurable hardware section. Furthermore, the schedule unit notifies the job management unit of the progress of task execution.
  • FIG. 1 is a block diagram showing a configuration of an information processing apparatus according to a first embodiment of this invention.
  • FIG. 2 is a diagram showing a configuration example of task information 60 stored in the task information storage unit 42 of FIG.
  • FIG. 3A is a diagram showing a state in which a plurality of pieces of task information are managed for each program 20 in the task information storage unit 42 of FIG.
  • FIG. 3B is a diagram showing a configuration example of a task queue 70.
  • FIG. 4 is a diagram showing a configuration example of one job information 50 stored in the job information storage unit 43 in FIG. 1.
  • FIG. 5 is a diagram illustrating a configuration example of the reconfigurable hardware unit 30 in FIG.
  • FIG. 6 is a diagram showing another configuration example of the processing unit 32 in FIG.
  • FIG. 7 is a flowchart showing an operation example of the job management unit 44 in FIG.
  • FIG. 8 is a flowchart showing an operation example of the schedule unit 45 of FIG.
  • FIG. 9 is a block diagram showing a configuration of an information processing apparatus according to a second embodiment of the present invention.
  • FIG. 1 shows an example of the configuration of the information processing apparatus according to the first embodiment of the present invention.
  • the information processing apparatus 10 of the present embodiment includes a reconfigurable hardware unit 30, an input / output data storage unit 110, and a control unit 40.
  • the control unit 40 includes a program storage unit 41, a task information storage unit 42, a job information storage unit 43, a job management unit 44, and a schedule unit 45.
  • the reconfigurable hardware unit 30 can load one or more programs 20, changes the hardware configuration in accordance with the loaded program 20, and executes predetermined processing.
  • the reconfigurable hardware section 30 can execute one or more programs 20 at the same time. is there. If loading of one program 20 and execution of one program 20 are sufficient, the reconfigurable hardware unit 30 can be implemented using an FPGA (Field Programmable Gate Array).
  • FPGA Field Programmable Gate Array
  • the input / output data storage unit 110 stores input / output data to be processed by the reconfigurable hardware unit 30.
  • the program storage unit 41 stores a plurality of programs 20 to be loaded into the reconfigurable hardware unit 30.
  • the stored program 20 is uniquely identified by a program identifier or the like.
  • task information storage unit 42 task information indicating a plurality of tasks that can be executed by the same program is stored for each program 20 stored in the program storage unit 41.
  • the task information 60 holds information necessary for executing the task by the reconfigurable hardware unit 30.
  • FIG. 2 shows a configuration example of the task information 60 stored in the task information storage unit 42 of FIG.
  • the task information 60 includes an input data set 61, an output data set 63, a program identifier 65, a required processing time 66, and a deadline 67.
  • the program identifier 65 is an identifier for identifying the program 20 to be loaded into the reconfigurable hardware unit 30 when executing a task.
  • the input data set 61 is composed of one or more input data 62 to be subjected to task processing.
  • Each input data 62 may be actual data, or may be pointer information such as an address for identifying an input / output data area stored in the input / output data storage unit 110.
  • the output data set 63 also includes one or more output data 64 for storing the output of the task processing result.
  • the output data 64 may be reserved as a data area in the task information 60, or may be pointer information such as an address for identifying the input / output data area where the data in the input / output data storage unit 110 is to be stored. Yo ...
  • the required processing time 66 is an estimated value of the processing time required when the task specified by the task information 60 is executed by the reconfigurable hardware section 30.
  • Deadline 67 is Stores the deadline time at which task execution should be completed.
  • FIG. 3A and FIG. 3B show a configuration example of a task queue 70 for managing a plurality of task information 60 for each program 20 in the task information storage unit 42 of FIG.
  • the task information storage unit 42 includes the program storage unit 4 shown in FIG.
  • a task queue 70 is stored for each program 20 stored in 1.
  • the task queue 70 includes a task buffer 71, a program identifier 72, a task queue required processing time 73, and a task queue deadline 74.
  • the task buffer 71 stores task information 60 of a plurality of tasks included in the task queue 70.
  • the program identifier 72 is an identifier of the V program 20 that must be loaded into the reconfigurable hardware unit 30 in order to execute the task specified by the task information 60 stored in the task buffer 71. Is stored.
  • the task queue required processing time 73 stores the time required to execute the task specified by all the task information 60 stored in the task buffer 71 of the task queue 70.
  • the task queue required processing time 73 stores the total value of the required processing times 66 of all the task information 60 stored in the task buffer 71.
  • the task queue deadline 74 stores a time limit for completing execution of tasks specified by all the task information 60 stored in the task buffer 71 of the task queue 70. For example, the task queue deadline 74 stores the smallest value among the deadlines 67 of all the task information 60 stored in the task buffer 71.
  • the schedule unit 45 shown in FIG. 1 loads and executes the program 20 to the reconfigurable hardware unit 30 while referring to a plurality of pieces of task information 60 stored in the task information storage unit 42. Manage. Specifically, the schedule unit 45 selects a plurality of tasks that can be executed by the same program from the task information storage unit 42, selects a necessary program from the program storage unit 41, and reconfigurable hardware. Controls loading of programs to section 30 and execution of multiple tasks.
  • the schedule unit 45 includes a plurality of tasks stored in the task information storage unit 42. Referring to information 60, determine which program 20 will be loaded next and which task will be executed.
  • the schedule unit 45 adds the current time and the task queue required processing time 73 of each task queue 70 to calculate the scheduled end time when the processing of the task included in the task queue 70 is started at the current time.
  • the schedule unit 45 calculates the difference between the task queue deadline 74 of the task queue 70 and the scheduled end time, and determines that the task queue 70 having the smallest difference has the highest urgency. In this way, the schedule unit 45 selects the task queue 70 having a high degree of urgency, and loads the program 20 necessary to execute a plurality of tasks included in the task queue 70 into the reconfigurable hardware unit 30. After that, the task is executed in the reconfigurable hardware unit 30.
  • the program load time can be relatively reduced. Furthermore, according to the information processing apparatus 10 of the present embodiment, it is possible to preferentially execute a plurality of tasks with high urgency while reducing the number of program loads. Can be applied.
  • the job information storage unit 43 stores a plurality of job information 50.
  • Large-scale processing may not be executed as one task by the reconfigurable hardware unit 30 due to limitations on the actual amount of hardware. In such a case, the entire process is divided into a plurality of small tasks, and each task is sequentially processed by the reconfigurable hardware unit 30.
  • a processing unit that consists of multiple tasks divided into large-scale processes is called a job. Jobs have multiple task forces.
  • Each task is not independent and has a dependency. Therefore, it is necessary to execute each task while keeping this dependency.
  • FIG. 4 shows a configuration example of one job information 50 stored in the job information storage unit 43 in FIG.
  • a plurality of task information 60 constituting the job and its dependency relation 68 are stored as a graph.
  • Each task information 60 has a dependency counter 69 added thereto.
  • the dependency number counter 69 is set to an initial value when a job is generated. For example, if the task 60 depends on completion of the other two tasks 60, the initial value of the dependency counter 69 is set to 2.
  • the task dependency 68 is given, and the dependency counter 69 added to the task information 60 ahead is decreased by one.
  • the task information 60 in which the value of the dependency number counter 69 is 0 is an executable task.
  • Dependency 68 has data dependency and control dependency, but can be managed in a unified manner by dependency counter 69.
  • the job management unit 44 selects task information 60 of a task that can be executed while referring to the plurality of job information 50 stored in the job information storage unit 43. . Specifically, the job management unit 44 selects a task to be executed next according to the execution status of tasks in a plurality of jobs, and stores the task information of the selected task in the task information storage unit 42. In addition, job information is updated and managed according to the progress of task execution.
  • the job management unit 44 selects the task information 60 whose dependency counter 69 is 0 and stores it in the task information storage unit 42. .
  • the selected task information 60 may be stored in the task information storage unit 43 directly by the job management unit 44, or the selected task information 60 is notified to the schedule unit 45, and the schedule unit 45 You can do it through! /
  • the job management unit 44 sets the program identifier 65 of the selected task information 60. Accordingly, the task information 60 is stored in the task buffer 71 of the task queue 70 having the same program identifier 72.
  • the task information 60 stored in the task information storage unit 42 is scheduled by the schedule unit 45 for program loading and execution, and is executed by the reconfigurable hardware unit 30.
  • the task information 60 of the completed task is notified from the schedule unit 45 to the job management unit 44.
  • the job management unit 44 changes the job information 50 based on the completion notification from the schedule unit 45.
  • Execution completed in job information 50 The dependency 68 is obtained from the task information 60 of the task, and the dependency counter 69 of the task information 60 of the task that was dependent on the completed task is decreased.
  • Which task information 60 of the plurality of job information 50 stored in the job information storage unit 43 corresponds to the task information 60 of the completed task can be managed using information such as a task identifier.
  • FIG. 5 shows a configuration example of the reconfigurable hardware unit 30 in FIG.
  • the reconfigurable hardware unit 30 includes an input / output control unit 31 and one or more processing units 32.
  • the processing unit 32 includes a reconfiguration unit 33 and a program memory 35, respectively. Depending on the contents of the program 20 loaded in the program memory 35, the hardware configuration of the reconfiguration unit 32 is changed and predetermined processing is performed.
  • the input / output unit 31 is used for an external interface.
  • the program 20 is loaded from the outside of the reconfigurable hardware unit 30 to the program memory 35 via the input / output unit 31 and processed by the processing unit 32. Can be controlled.
  • the input / output control unit 31 receives the task information 60, supplies the input data stored in the input / output data storage unit 110 to the processing unit 32 according to the information, and outputs the processing result in the processing unit 32 The data is output to the input / output data storage unit 110 as data.
  • the program 20 can be loaded into another processing unit 32 that is not being executed while one or more processing units 32 execute the program 20.
  • the reconfigurable hardware unit 30 can load a plurality of programs 20 and can execute the program 20 and load the program 20 at the same time, a plurality of tasks that can be executed by the program 20 are executed. However, since another program 20 can be loaded, the program loading time can be completely hidden.
  • the processing unit 32 includes a reconfiguration unit 33, a plurality of program memories 35, and a program selection unit 34.
  • the program selection unit 34 selects one from the plurality of program memories 35, and the hardware configuration of the reconfiguration unit 33 is changed according to the program 20.
  • the selection of the program memory 35 by the program selection unit 34 is the program input to the program memory 35. Compared to a card, it can be performed in a short time. If all the necessary programs 20 are loaded in the program memory 35, the program 20 can be switched without program loading overhead. Also, when a certain program memory 35 is selected and executed by the reconfiguration unit 33, it can be selected and loaded into another program memory 35. Therefore, even when a larger number of programs 20 than a plurality of program memories 35 have to be loaded, it is possible to hide the program loading time.
  • the job management unit 44 performs processing designated in advance according to the arrival of data from the outside, and outputs the result.
  • the job management unit 44 receives two events: arrival of data from an external force and notification of task execution completion from the scheduling unit 45.
  • the job management unit 44 first waits for the arrival of an event (step J10). If the event is the arrival of data from the outside (step J20), the job management unit 44 newly generates job information 50 necessary for processing the data and stores it in the job information storage unit 43 (step J40).
  • the job management unit 44 stores the necessary program 20 in the program storage unit 41 by notifying the scheduling unit 45 of the program 20 necessary for execution of the tasks constituting the job (step S40). J50). Now you have the necessary preparations for executing the tasks that make up the job.
  • the job management unit 44 refers to the plurality of job information 50 stored in the job information storage unit 43, selects the task information 60 for which the dependency count of the task information 60 is 0, and notifies the scheduling unit 45. (Step J60). As a result, the selected task information 60 is stored in the task information storage unit 42.
  • the job management unit 44 updates the corresponding job information 50 according to the task information 60 of the task that has been executed. (Step J70). Since the job information 50 may be updated, a task that can be newly executed may be generated, so the job management unit 44 selects an executable task. The schedule part 45 is notified (step J60).
  • each job is divided into a task and a task that can be executed independently by the reconfigurable hardware unit 30, and the dependency between tasks is determined as the progress of task execution. Since it is managed dynamically according to the error, efficient processing by the reconfigurable hardware unit 30 is possible even when multiple jobs are dynamically generated according to the arrival of data It becomes.
  • the schedule unit 45 notifies the program registration from the job management unit 44 (step J50 in FIG. 7), the task registration notification (step J60 in FIG. 7), and the task execution completion from the reconfigurable hardware unit 30.
  • An event called notification is received.
  • the schedule unit 45 can confirm the operation state of the reconfigurable hardware unit 30 when performing the operation. This is because the reconfigurable hardware unit 30 is provided with a register indicating the operation state, or the schedule unit 45 itself is provided with a state variable indicating the execution control state for the reconfigurable hardware 30 and the reconfigurable hardware unit 30 is configured. This can be done by changing the state variable according to the control of the hardware unit 30 and the notification of the state from the reconfigurable hardware unit 30.
  • the schedule unit 45 loads and executes the program 20 in units of 70 task queues.
  • the task queue 70 changes several states under the management of the schedule unit 45.
  • the main states are waiting for a program to be loaded for execution in the reconfigurable hardware part 30 and waiting for execution in the reconfigurable hardware part 30 and waiting for execution in the reconfigurable hardware part 30. .
  • the schedule unit 45 first waits for the arrival of an event (step S10). Next, if the event is a notification of program registration from the job management unit 44 (step S20), the schedule unit 45 stores the designated program 20 in the program storage unit 41 and manages the program 20 A program identifier is generated (step S60). Next, the schedule unit 45 generates a task queue 70 for managing the task information 60 executable by the registered program 20 in the task information storage unit 42, and can be uniquely identified by the program identifier generated in step S60. (Step S70).
  • the schedule The task unit 45 refers to the program identifier 65 of the designated task information 60 and stores the task information 60 in the corresponding task queue 70 of the task information storage unit 41.
  • the schedule unit 45 also updates the state of the task queue 70 such as the task queue required processing time 73 of the task queue 70 and the task queue deadline 74 according to the storage of the task information 60 (step S80).
  • the schedule unit 45 compares the task queue required processing time 73 of each task queue 70 and the state values of the task queue 70 such as the task queue deadline 74 and selects the task queue 70 with a high degree of urgency. (Step S90).
  • the schedule unit 45 confirms the operation status of the reconfigurable hardware unit 30 (step S100), and if the program can be loaded, the program necessary for executing the selected task queue 70 is displayed. 20 loads can be reconfigured. The hardware unit 30 is instructed, and the selected task queue 70 enters a program load wait state that represents a state waiting for a program load (step S110).
  • the schedule unit 45 confirms the operating state of the reconfigurable hardware unit 30 (step S120), and if the task can be executed, the schedule unit 45 is in an execution waiting state and the task queue 70 Instructs the reconfigurable hardware unit 30 to execute. If the reconfigurable hardware unit 30 can execute multiple tasks at the same time and there are multiple task queues 70 waiting to be executed, more efficient execution can be performed by instructing the execution of the multiple task queues 70. Yes (step S13 0). Steps S90, S100, SI 10, SI 20, SI 30 forces S The main part of the scheduling by S scheduling.
  • the schedule unit 45 When the event is a task execution completion notification from the reconfigurable hardware unit 30 (step S40), the schedule unit 45 notifies the job management unit 44 of task information 60 of the completed task. Notification power of task execution completion from the reconfigurable hardware section 30 Task queue In the case of 70 units, the schedule section 45 can also notify the job management section 44 in 70 units of task queue (step S 140).
  • the schedule unit 45 is configured to perform steps S90, S100, SI 10 of the main part of scheduling. , SI 20 and SI 30 are operated.
  • the schedule unit 45 changes the state of the task queue 70 corresponding to the program 20 that has completed the program load from the program load waiting state to the execution waiting state (Step S150). Since the state of the reconfigurable hardware unit 30 and the state of the task queue 70 have changed, the schedule unit 45 performs the operations of steps S90, S100, SI10, SI20, SI30, which are the main parts of scheduling. Do.
  • the reconfigurable hardware unit 30 can reduce the overhead of program load time when multiple programs are executed. If the reconfigurable hardware unit 30 can execute the program 20 and load the program 20 at the same time as shown in Fig. 5 and Fig. 6, the program load can be performed in parallel with other programs 20, so It is possible to substantially eliminate overhead.
  • the time required for program loading is compared with the execution time by collectively executing a plurality of tasks that can be processed by the same program in the reconfigurable hardware unit 30.
  • the entire process is managed in a structure called a job having a plurality of task forces, and the task to be executed next is moved according to the execution status of the task in the job.
  • the task execution and the schedule management of the program load required to execute the task can be performed dynamically.
  • the information processing device 10 using the reconfigurable hardware unit 30 dynamically manages the progress of processing even when the schedule for program loading and execution cannot be determined statically. Therefore, it can be processed efficiently.
  • the reconfigurable hardware unit 30 is configured as a plug. Since the time required for program loading can be substantially eliminated, communication, network processing, and multimedia that require processing changes according to the arrival of external force data and there are time restrictions on sending processing results. It can be applied to the purpose of improving the efficiency of processing.
  • the basic configuration is the same as that of the first embodiment described above, but the job management unit 44 and the schedule unit 45 are executed on the processor 80.
  • Figure 9 shows the configuration realized as software.
  • the job information storage unit 43, the task information storage unit 42, the program storage unit 41, and the input / output data storage unit 110 can be realized as areas on the memory 100, respectively.
  • the processor 80, the reconfigurable hardware unit 30, and the memory 100 can exchange and control information via the communication path 90.
  • event notification from the reconfigurable hardware unit 30 can be realized as an interrupt to the processor 80.
  • the job management unit 44 and the schedule unit 45 can be realized as one program, or can be realized as a parallel program such as multithread! /.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

再構成可能ハードウェアのプログラムを書換えながら大規模な処理を実行する場合のプログラム書換え時間を削減する。大規模な処理を小さな処理単位に分割して処理する場合、処理内容が動的に変化しても柔軟にプログラム書換え、実行をスケジュール管理し効率的な処理を可能とする。スケジュール部45は複数タスク単位で、再構成可能ハードウェア部30へのプログラムロードと実行を制御しプログラムロード時間を削減する。ジョブ管理部44はジョブ情報格納部43に格納された複数のタスクから構成される複数のジョブ情報を参照しジョブの実行状況に応じて、タスクの実行を管理するにより効率的な処理を実現する。

Description

明 細 書
情報処理装置
技術分野
[0001] 本発明は、多様な処理を少ないハードウ ア資源で効率的に処理することのできる 再構成可能ハードウェアを用いた情報処理装置に関する。
背景技術
[0002] FPGA (Field Programmable Gate Array)や PLD (Programmable Logic
Device)等に代表される再構成可能ハードウェアを用いた情報処理装置では、 CP Uや DSP等のプロセッサ処理に比べて高速な処理が可能である。また処理内容に 応じて再構成可能ハードウェアのプログラムを順次に書き換えることのできるプロダラ マブルデバイスを用いることにより少な 、ノヽ一ドウエア資源で多様な処理を実行する ことが可能である。このような再構成可能なハードウェアを用いた情報処理装置では 、プログラムの書き換えは、処理の進拔に応じて必要になった時点で行われていた。 また、予め処理全体を静的に解析した情報に基づ!、て書き換えが行われて 、た (例 えば、特開平 10— 256383号公報参照)。
発明の開示
[0003] しかし、このような従来の情報処理装置では下記のような問題点を有していた。
[0004] 先ず、第 1の問題点は、再構成可能ハードウェアのプログラムを処理すべきタスク毎 に変更する場合、一般的にプログラムロードに要する時間がタスクの処理に要する時 間に比べて無視できない程度に大きいことである。通信、ネットワーク処理、メディア 等の処理では一連の入力データに対して、幾つかの処理を次々に行なってゆく。例 え iiJPEG (joint Photographic Experts Group)のエンコーダでは、色変換、 サンプリング、 DCT (Discrete Cosine Transform)変換、量子ィ匕、エントロピー 符号化と 、う一連の処理 (タスクと呼ぶ)を行なう必要がある。これらの一連のタスクで 構成される一まとまりの処理 (この場合 ίお PEGエンコーダ)をジョブと呼ぶ。これらの 処理を再構成可能ハードウェアで実行する場合は、従来技術では、ジョブをあらかじ め幾つかのタスクに分割し、それぞれタスクに応じて再構成可能ハードウェア用のプ ログラムを用意し、タスクの切替えに応じて再構成可能ハードウェアへプログラムを口 ードしていた。
[0005] しかし、一般に再構成可能ハードウェアへのプログラムのロードは、外部の記憶媒 体に格納されているプログラムを再構成可能ハードウェアに転送することにより行な われる。このため、再構成可能ハードウェアへのプログラムのロードは、 CPUや DSP 等のプロセッサに比べて長時間を要する。従って、個々のタスクの処理に比べて、プ ログラムロード時間の方が長 、場合は、プログラムロード時間でシステムの性能が制 限されるため、多くの場合には実用的ではな力つた。
[0006] あら力じめ複数のプログラムを格納可能で、短時間で処理を切替えることのできる 再構成可能ハードウェアもあるが、格納可能なプログラムの数に制限があり、その制 限を越えた場合は、外部の記憶媒体力 プログラムを転送をすることが必要となるた め、同様の問題が生ずる。
[0007] 第 2の問題点は、処理すべきジョブがあら力じめ定まっていない場合は、静的なタス クのスケジュール方式では効率的な処理が困難または不可能なことである。あらかじ め処理全体を解析することにより、処理すべきタスクやタスク間の依存関係、実行順 序等のジョブ構造が静的に分力つている場合は、ジョブの処理の進拔に応じてタスク の実行をスケジュール管理することが可能である。しかし、例えば、ネットワーク処理 のように、到着データに応じてそのデータに施す処理 (ジョブの構造)が異なる場合 は、静的なスケジュールでは対応できない。到着データに応じて動的にジョブを生成 し、実行可能なタスクを選択、実行し、タスクの実行に応じてジョブの進拔を管理する 必要がある。
[0008] 整理すると、従来の情報処理装置では下記のような 2つの問題点があった。
(1)再構成可能ハードウェアのプログラムを処理すべきタスク毎に変更する場合、一 般的にプログラムロードに要する時間がタスクの処理に要する時間に比べて無視で きない程度に大きい。
(2)処理すべきジョブがあらかじめ定まって!/ヽな 、場合は、静的なタスクのスケジユー ル方式では効率的な処理が困難、または不可能である。
[0009] 本発明の目的は、再構成可能ハードウェアを用いた情報処理装置において、再構 成可能ハードウェアのプログラムを処理に応じてロードする場合の、プログラムロード 時間のオーバーヘッドを小さくし、限られたノ、一ドウエア規模の再構成可能ハードウ エアにおいても大規模な処理を効率的に処理できるシステムを提供することにある。
[0010] 本発明の他の目的は、再構成可能ハードウェアを用いた情報処理装置において、 プログラムロードや実行等のスケジュールをあら力じめ静的に決めることができない場 合にも処理の進拔管理を動的に行なうことにより、効率的に処理できるシステムを提 供することにある。
[0011] 上記目的を達成するために、本発明の情報処理装置は、再構成可能ハードウェア 部と入出力データ格納部と制御部とを備えている。
[0012] 再構成可能ハードウェア部は、実行すべきタスクの処理内容に応じた 1つ以上のプ ログラムをロード可能で、ロードされた 1つ以上のプログラムのうち同時に 1つ以上の プログラムを実行可能である。入出力データ格納部は、再構成可能ハードウェア部で の処理の対象となる入出力データを格納する。制御部は、再構成可能ハードウェア 部へのプログラムのロードとプログラムの実行を制御する。
[0013] そして、制御部はプログラム格納部とタスク情報格納部とジョブ情報格納部とジョブ 管理部とスケジュール部とから構成されて 、る。
[0014] プログラム格納部は、再構成可能ハードウェア部にロードするための複数のプログ ラムを格納する。
[0015] タスク情報格納部は、同一のプログラムで実行可能な複数のタスクを示すタスク情 報力 プログラム格納部に格納された各プログラム毎に格納されて 、る。
[0016] ジョブ情報格納部は、複数のタスク力 構成される一まとまりの処理単位であるジョ ブを構成する各タスク間の依存関係を示すジョブ情報を格納する。
[0017] ジョブ管理部は、ジョブ情報に応じて実行可能なタスクを選択して、選択したタスク のタスク情報をタスク情報格納部に格納し、タスクの実行の進拔に応じてジョブ情報 を更新する。
[0018] スケジュール部は、タスク情報格納部から、プログラムで実行可能な 1つ以上のタス クを選択し、プログラム格納部から、選択されたタスクの実行に必要なプログラムを選 択する。そして、スケジュール部は、選択したプログラムの再構成可能ハードウェア部 へのロードとそのスケジュール管理、及び再構成可能ハードウェア部におけるタスク の実行制御とそのスケジュール管理とを行なう。更に、スケジュール部は、タスクの実 行の進拔状況をジョブ管理部に通知する。
図面の簡単な説明
[0019] [図 1]本発明の第 1の実施形態の情報処理装置の構成を示すブロック図である。
[図 2]図 1のタスク情報格納部 42に格納されるタスク情報 60の構成例を示す図である
[図 3A]図 1のタスク情報格納部 42においてプログラム 20毎に複数のタスク情報を管 理する様子を示す図である。
[図 3B]タスクキュー 70の構成例を示す図である。
[図 4]図 1のジョブ情報格納部 43に格納される 1つのジョブ情報 50の構成例を示す図 である。
[図 5]図 1の再構成可能ハードウェア部 30の構成例を示す図である。
[図 6]図 5の処理部 32の別の構成例を示す図である。
[図 7]図 1のジョブ管理部 44の動作例を示すフローチャートである。
[図 8]図 1のスケジュール部 45の動作例を示すフローチャートである。
[図 9]本発明の第 2の実施形態の情報処理装置の構成を示すブロック図である。 発明を実施するための最良の形態
[0020] 次に、本発明の実施の形態について図面を参照して詳細に説明する。
[0021] (第 1の実施形態)
図 1に、本発明の第 1の実施形態の情報処理装置の構成例を示す。本実施形態の 情報処理装置 10は、図 1に示されるように、再構成可能ハードウェア部 30と、入出力 データ格納部 110と、制御部 40とから構成されて 、る。
[0022] また、制御部 40は、プログラム格納部 41と、タスク情報格納部 42と、ジョブ情報格 納部 43と、ジョブ管理部 44と、スケジュール部 45とから構成される。
[0023] 再構成可能ハードウェア部 30は、 1つ以上のプログラム 20をロード可能で、ロード されたプログラム 20に応じてハードウェア構成を変更し、所定の処理を実行する。ま た、再構成可能ハードウェア部 30は、同時に 1つ以上のプログラム 20を実行可能で ある。 1つのプログラム 20のロードと 1つのプログラム 20の実行で十分な場合は、再 構成可能ハードウェア部 30は FPGA (Field Programmable Gate Array)を用 いて実現可能である。
[0024] 入出力データ格納部 110は、再構成可能ハードウェア部 30での処理の対象となる 入出力データを格納する。
[0025] プログラム格納部 41は、再構成可能ハードウェア部 30にロードする複数のプロダラ ム 20を格納する。格納されたプログラム 20はプログラム識別子等により一意に識別さ れる。
[0026] タスク情報格納部 42は、同一のプログラムで実行可能な複数のタスクを示すタスク 情報が、プログラム格納部 41に格納された各プログラム 20毎に格納されている。また 、タスク情報 60には、タスクを再構成可能ハードウェア部 30で実行するために必要な 情報が保持されている。
[0027] 次に、図 1のタスク情報格納部 42に格納されるタスク情報 60の構成例を図 2に示す 。タスク情報 60は、図 2に示されるように、入力データセット 61と、出力データセット 63 と、プログラム識別子 65と、所要処理時間 66と、デッドライン 67とから構成されている
[0028] プログラム識別子 65は、タスクを実行するときに再構成可能ハードウェア部 30に口 ードすべきプログラム 20を識別するための識別子である。
[0029] 入力データセット 61は、タスク処理の対象となる 1個以上の入力データ 62から構成 される。それぞれの入力データ 62は実際のデータであってもよいし、または、入出力 データ格納部 110に格納されている入出力データ領域を識別するアドレス等のボイ ンタ情報であってもよい。
[0030] 出力データセット 63は、タスク処理の結果の出力を格納する 1個以上の出力データ 64力もなる。出力データ 64はタスク情報 60内にデータ領域として確保しておいても よいし、入出力データ格納部 110のデータを格納すべき入出力データ領域を識別す るアドレス等のポインタ情報であってもよ 、。
[0031] 所要処理時間 66は、このタスク情報 60で指定されるタスクを再構成可能ハードゥエ ァ部 30で実行するときに必要な処理時間の見積り値である。また、デッドライン 67は 、タスクの実行を完了すべき期限の時刻を格納する。
[0032] 次に、図 1のタスク情報格納部 42においてプログラム 20毎に複数のタスク情報 60 を管理するためのタスクキュー 70の構成例を図 3Aおよび図 3Bに示す。
[0033] タスク情報格納部 42には、図 3Aに示されるように、図 1に示したプログラム格納部 4
1に格納されて 、るプログラム 20毎にタスクキュー 70が格納される。
[0034] そして、タスクキュー 70は、図 3Bに示されるように、タスクバッファ 71と、プログラム 識別子 72と、タスクキュー所要処理時間 73と、タスクキューデッドライン 74とから構成 されている。
[0035] タスクバッファ 71は、タスクキュー 70に含まれる複数のタスクのタスク情報 60を格納 している。
[0036] プログラム識別子 72は、このタスクバッファ 71に格納されているタスク情報 60の指 定するタスクの実行のために再構成可能ハードウェア部 30にロードしなければならな Vヽプログラム 20の識別子を格納する。
[0037] タスクキュー所要処理時間 73は、このタスクキュー 70のタスクバッファ 71に格納さ れている全てのタスク情報 60の指定するタスクの実行に必要な所要時間を格納する 。例えば、タスクキュー所要処理時間 73は、タスクバッファ 71に格納されている全て のタスク情報 60の所要処理時間 66の合計の値を格納する。
[0038] タスクキューデッドライン 74は、このタスクキュー 70のタスクバッファ 71に格納されて いる全てのタスク情報 60の指定するタスクの実行を完了すべき期限の時刻を格納す る。例えば、タスクキューデッドライン 74は、タスクバッファ 71に格納されている全ての タスク情報 60のデッドライン 67の中で最小の値を格納する。
[0039] 図 1に示したスケジュール部 45は、タスク情報格納部 42に格納されている複数のタ スク情報 60を参照しながら、再構成可能ハードウェア部 30へのプログラム 20のロー ド及び実行を管理する。具体的には、スケジュール部 45は、タスク情報格納部 42か ら同一のプログラムで実行可能な複数のタスクを選択し、必要なプログラムをプロダラ ム格納部 41から選択して、再構成可能ハードウェア部 30へのプログラムのロードと、 複数タスクの実行を制御する。
[0040] つまり、スケジュール部 45は、タスク情報格納部 42に格納されている複数のタスク 情報 60を参照しつつ、次にどのプログラム 20をロードし、どのタスクを実行するかを 決定する。
[0041] タスク情報格納部 42が、例えば、図 3で示したようにプログラム 20毎の複数のタスク キュー 70でタスク情報 60を管理して 、る場合の動作を説明する。スケジュール部 45 は現在時刻と各タスクキュー 70のタスクキュー所要処理時間 73を加算して、現在時 刻にタスクキュー 70に含まれるタスクの処理を開始した場合の予定終了時刻を計算 する。スケジュール部 45は、タスクキュー 70のタスクキューデッドライン 74とこの予定 終了時刻との差を計算し、差が一番小さいタスクキュー 70の緊急度が一番高いと判 断する。スケジュール部 45はこのようにして緊急度の高 、タスクキュー 70を選択し、 そのタスクキュー 70に含まれる複数のタスクを実行するために必要なプログラム 20を 再構成可能ハードウェア部 30にロードした後、再構成可能ハードウェア部 30におい てタスクの実行を行なう。
[0042] 以上により再構成可能ハードウェア部 30への 1回のプログラムロードに対して複数 のタスクを実行するため相対的にプログラムロードの時間を削減することができる。ま た、本実施形態の情報処理装置 10によれば、プログラムロード回数を減らしつつ、緊 急度の高 、複数タスクを優先的に実行することも可能で、実時間性の高 、処理にも 適用することができる。
[0043] 図 1にお 、てジョブ情報格納部 43は、複数のジョブ情報 50を格納する。大規模な 処理は、現実のハードウェア量の制限等で、再構成可能ハードウェア部 30で 1つの タスクとしては実行できな 、場合がある。このような場合は処理全体を複数の小さなタ スクに分割して、それぞれのタスクを再構成可能ハードウェア部 30で順次処理するこ とが行われる。大規模な処理を分割して複数のタスクとして構成した処理単位をジョ ブと呼ぶ。ジョブは複数のタスク力 構成される力 それぞれのタスクは独立ではなく 、依存関係を持っている。そのため、各タスクの実行はこの依存関係を守りながら行 なう必要がある。依存関係には、あるタスクの出力を別のタスクの入力として使うという データ依存と、あるタスクの実行が完了して力 別のタスクの実行をしなければならな いというような制御依存の 2種類がある。このようなジョブを構成する各タスク間の依存 関係を示す情報がジョブ情報 50である。 [0044] 次に、図 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で統一的に管理することが可能で ある。
[0045] 図 1にお 、てジョブ管理部 44は、ジョブ情報格納部 43に格納されて 、る複数のジョ ブ情報 50を参照しつつ、実行可能となったタスクのタスク情報 60を選択する。具体 的には、ジョブ管理部 44は、複数のジョブ内のタスクの実行状況に応じて、次に実行 すべきタスクを選択して、選択したタスクのタスク情報をタスク情報格納部 42に格納し 、またタスクの実行の進拔に応じてジョブ情報を更新、管理する。
[0046] 図 4に示したようなジョブ情報 50の構成例の場合、ジョブ管理部 44は依存カウンタ 69の値が 0となっているタスク情報 60を選択し、タスク情報格納部 42に格納する。選 択したタスク情報 60のタスク情報格納部 43への格納は、ジョブ管理部 44が直接行な つてもよいし、または、スケジュール部 45へ選択したタスク情報 60を通知し、スケジュ ール部 45を介して行なってもよ!/、。
[0047] タスク情報格納部 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と対応す るかは、タスク識別子等の情報を用いて管理することができる。
[0048] 以上により、異なる構造のジョブが複数存在し、それらが動的に生成されるような場 合にもジョブを構成するタスクの依存関係を守りつつ処理が可能となる。
[0049] 図 1の再構成可能ハードウェア部 30の構成例を図 5に示す。再構成可能ハードウ エア部 30は、図 5に示されるように、入出力制御部 31と、 1つ以上の処理部 32とから 構成される。処理部 32は、それぞれ、再構成部 33とプログラムメモリ 35とから構成さ れる。プログラムメモリ 35にロードされたプログラム 20の内容に応じて再構成部 32の ハードウェア構成が変更され所定の処理が行なわれる。入出力部 31は外部とのイン タフエースのためのもので、入出力部 31を介して再構成可能ハードウェア部 30の外 部からプログラムメモリ 35へのプログラム 20のロード、処理部 32での処理の実行を制 御できる。
[0050] 入出力制御部 31はタスク情報 60を受けとりその情報に応じて入出力データ格納部 110に格納されている入力データを処理部 32に供給し、処理部 32での処理の結果 を出力データとして入出力データ格納部 110へ出力する。処理部 32が複数ある場 合は、 1つ以上の処理部 32でプログラム 20の実行をしつつ、実行中でない他の処理 部 32にプログラム 20のロードをすることができる。このように再構成可能ハードウェア 部 30として複数のプログラム 20をロード可能で、プログラム 20の実行と、プログラム 2 0のロードを同時に行なえる場合は、あるプログラム 20で実行可能な複数のタスクを 実行しつつ、別のプログラム 20のロードが可能なため、プログラムロード時間を完全 に隠蔽することも可能である。
[0051] 次に、図 5の処理部 32の別の構成例を図 6に示す。この場合処理部 32は、図 6に 示されるように、再構成部 33と、複数のプログラムメモリ 35と、プログラム選択部 34と 力も構成される。プログラム選択部 34は複数のプログラムメモリ 35から 1つを選択し、 そのプログラム 20に応じて再構成部 33のハードウェア構成が変更される。プログラム 選択部 34によるプログラムメモリ 35の選択はプログラムメモリ 35へのプログラムの口 ードに比べて短時間に行なうことができる。あら力じめプログラムメモリ 35に必要なプ ログラム 20を全てロードしておけば、その後はプログラムロードのオーバーヘッドなし にプログラム 20の切替が可能である。また、あるプログラムメモリ 35が選択されて再 構成部 33で実行されて ヽる時、選択されて!、な 、他のプログラムメモリ 35ヘプログラ ムロードすることが可能である。従って、複数のプログラムメモリ 35よりも多くのプログ ラム 20をロードしなければならな 、ような場合でも、プログラムロード時間を隠蔽する ことが可能である。
[0052] 次に、本実施形態の情報処理装置の動作について図面を参照して詳細に説明す る。
[0053] 先ず、図 1に示したジョブ管理部 44の動作例を図 7のフローチャートに示す。ジョブ 管理部 44は外部からのデータの到着に応じてあら力じめ指定された処理をそのデー タに施し、その結果を出力するものとする。またジョブ管理部 44は外部力ものデータ の到着とスケジュール部 45からのタスク実行完了通知という 2つのイベントを受け取る ものとする。
[0054] ジョブ管理部 44はまずイベントの到着を待つ(ステップ J10)。イベントが外部からの データの到着の場合 (ステップ J20)、ジョブ管理部 44は、そのデータの処理に必要 なジョブ情報 50を新たに生成してジョブ情報格納部 43に格納する (ステップ J40)。
[0055] 次に、ジョブ管理部 44は、そのジョブを構成するタスクの実行に必要なプログラム 2 0をスケジュール部 45に通知することにより、プログラム格納部 41に必要なプログラム 20を格納する (ステップ J50)。以上でジョブを構成するタスクの実行に必要な準備が できる。ジョブ管理部 44は、ジョブ情報格納部 43に格納されている複数のジョブ情報 50を参照し、タスク情報 60の依存カウントが 0になっているタスク情報 60を選択し、ス ケジュール部 45に通知する (ステップ J60)。これにより選択されたタスク情報 60がタ スク情報格納部 42に格納される。
[0056] イベントがスケジュール部 45からのタスク実行完了通知の場合は(ステップ J30)、ジ ヨブ管理部 44は、実行が完了したタスクのタスク情報 60に応じて、対応するジョブ情 報 50を更新する (ステップ J70)。ジョブ情報 50の更新により、新たに実行可能となる タスクが生成される可能性があるので、ジョブ管理部 44は、実行可能なタスクを選択 しスケジュール部 45に通知する(ステップ J60)。
[0057] 以上のジョブ管理部 44の動作例では、ジョブは、それぞれ再構成可能ハードウェア 部 30で単独に実行できるタスクと ヽぅ単位に分割され、タスク間の依存関係をタスク の実行の進拔に応じて動的に管理しているので、データの到着に応じて動的に複数 のジョブが生成されるような処理であっても再構成可能ハードウェア部 30による効率 的な処理が可能となる。
[0058] 次に、図 1のスケジュール部 45の動作例を図 8のフローチャートに示す。スケジユー ル部 45は、ジョブ管理部 44からのプログラム登録の通知(図 7のステップ J50)、タス ク登録の通知(図 7のステップ J60)、及び再構成可能ハードウェア部 30からのタスク 実行完了通知というイベントを受け取るものとする。スケジュール部 45は動作を行なう にあたって、再構成可能ハードウェア部 30の動作状態を確認することができるものと する。これは再構成可能ハードウェア部 30に動作状態を示すレジスタを設けることや 、または、スケジュール部 45自体に、再構成可能ハードウェア 30への実行制御状態 を示す状態変数を設け、再構成可能ハードウェア部 30への制御、再構成可能ハー ドウエア部 30からの状態の通知に応じて状態変数を変更することにより可能である。
[0059] スケジュール部 45はプログラム 20のロードや、実行をタスクキュー 70単位に行なう 。タスクキュー 70はスケジュール部 45の管理のもと、幾つかの状態を遷移する。主要 な状態は、再構成可能ハードウェア部 30での実行に必要なプログラムのロードを待 つて 、るプログラムロード待ち状態、再構成可能ハードウェア部 30での実行を待って いる実行待ち状態である。
[0060] スケジュール部 45はまずイベントの到着を待つ(ステップ S 10)。次に、イベントがジ ヨブ管理部 44からのプログラム登録の通知の場合 (ステップ S20)、スケジュール部 4 5は、指定されたプログラム 20をプログラム格納部 41に格納し、そのプログラム 20を 管理するためのプログラム識別子を生成する (ステップ S60)。次に、スケジュール部 45は、登録したプログラム 20で実行可能なタスク情報 60を管理するためのタスクキュ 一 70をタスク情報格納部 42に生成し、ステップ S60で生成されたプログラム識別子 で一意に識別できるようにする (ステップ S70)。
[0061] イベントがジョブ管理部 44からのタスク登録の通知の場合 (ステップ S30)、スケジュ ール部 45は、指定されたタスク情報 60のプログラム識別子 65を参照しタスク情報格 納部 41の対応するタスクキュー 70にそのタスク情報 60を格納する。スケジュール部 45は、タスク情報 60の格納に応じてタスクキュー 70のタスクキュー所要処理時間 73 、タスクキューデッドライン 74等タスクキュー 70の状態も更新する (ステップ S80)。
[0062] 以上によりタスク情報格納部 42のタスクキュー 70の状態が変化する。このため、ス ケジュール部 45は、各タスクキュー 70のタスクキュー所要処理時間 73、タスクキュー デッドライン 74等のタスクキュー 70の状態の値を比較し、緊急度の高!、タスクキュー 70を選択する(ステップ S90)。次に、スケジュール部 45は、再構成可能ハードウェア 部 30の動作状況を確認し (ステップ S 100)、もしプログラムロードが可能な状態であ れば、選択したタスクキュー 70の実行に必要なプログラム 20のロードを再構成可能 ハードウェア部 30に指示し、選択したタスクキュー 70はプログラムロードを待っている 状態を現すプログラムロード待の状態にする (ステップ S110)。次に、スケジュール部 45は、再構成可能ハードウェア部 30の動作状態を確認し (ステップ S 120)、タスクの 実行が可能な状態であれば、実行待ち状態となって 、るタスクキュー 70の実行を再 構成可能ハードウェア部 30に指示する。再構成可能ハードウェア部 30で同時に複 数の実行が可能な場合でかつ、実行待ちのタスクキュー 70も複数ある場合は、複数 のタスクキュー 70の実行を指示することでより効率的な実行が行なえる (ステップ S13 0)。ステップ S90、 S100、 SI 10、 SI 20、 SI 30力 Sスケジユーノレ咅 によるスケジュ 一リングの主要部分である。
[0063] イベントが再構成可能ハードウェア部 30からのタスク実行完了の通知の場合 (ステ ップ S40)、スケジュール部 45は、終了したタスクのタスク情報 60をジョブ管理部 44 に通知する。再構成可能ハードウェア部 30からのタスク実行完了の通知力 タスクキ ユー 70単位の場合は、スケジュール部 45は、ジョブ管理部 44への通知をタスクキュ 一 70単位で行なうことも可能である (ステップ S 140)。タスクキュー 70の実行が完了 することにより、再構成可能ハードウェア部 30の状態、タスクキュー 70の状態が変化 する、このためスケジュール部 45は、スケジューリングの主要部分のステップ S90、 S 100、 SI 10、 SI 20、 SI 30の動作を行なう。
[0064] イベントが再構成可能ハードウェア部 30からのプログラムロード完了の通知の場合 (ステップ S50)、スケジュール部 45は、プログラムロードが完了したプログラム 20に 対応するタスクキュー 70の状態をプログラムロード待ちから実行待ちに変更する (ス テツプ S150)。そして、スケジュール部 45は、再構成可能ハードウェア部 30の状態、 タスクキュー 70の状態が変化しているのでスケジューリングの主要部分のステップ S9 0、 S100、 SI 10、 SI 20、 SI 30の動作を行なう。
[0065] 以上のスケジュール部 45の動作例では、同じプログラム 20で実行可能な複数のタ スクをタスクキュー 70という単位で管理することにより、プログラムロードに要する時間 を、タスクの実行に要する時間に比べて相対的に小さくしているため再構成可能ハ 一ドウエア部 30で複数のプログラムを実行する場合のプログラムロード時間のオーバ 一ヘッドを削減できる。また再構成可能ハードウェア部 30が図 5、図 6のようにプログ ラム 20の実行とプログラム 20のロードが同時にできる場合には、プログラムロードを 他のプログラム 20と並列に行なえるためプログラムロードのオーバーヘッドを実質的 に無くすことも可能となる。
[0066] 本実施形態の情報処理装置 10では、同一のプログラムで処理可能な複数のタスク をまとめて再構成可能ハードウェア部 30で実行することにより、プログラムロードに要 する時間を実行時間に比べて相対的に小さくできる。そのため、再構成可能ハードウ エア部 30を用いた情報処理装置 10において、再構成可能ハードウェア部 30のプロ グラムを処理に応じてロードする場合の、プログラムロード時間のオーバーヘッドを小 さくし、限られたノ、一ドウエア規模の再構成可能ハードウェア部においても大規模な 処理を効率的に処理できる。
[0067] さらに、本実施形態の情報処理装置 10では、処理全体を複数のタスク力 なるジョ ブという構造で管理し、ジョブ内のタスクの実行状況に応じて、次に実行すべきタスク を動的に選択し、タスクの実行と、タスクの実行に必要なプログラムロードのスケジュ ール管理を動的に行うことができる。そのため、再構成可能ハードウェア部 30を用い た情報処理装置 10において、プログラムロードや実行等のスケジュールをあら力じめ 静的に決めることができない場合にも処理の進拔管理を動的に行なうことにより、効 率的に処理できる。
[0068] そして、本実施形態の情報処理装置によれば、再構成可能ハードウェア部 30のプ ログラムロードに要する時間を実質上なくすことができるので、外部力 のデータの到 着に応じて、必要な処理が変わり、また処理結果の送出に時間制限があるような通信 、ネットワーク処理、マルチメディア処理等の効率ィ匕を図る用途に適用することができ る。
[0069] (第 2の実施形態)
次に、本発明の第 2の実施形態の情報処理装置について説明する。
[0070] 本発明の第 2の実施形態として、その基本的構成は上記で説明した第 1の実施形 態と同様であるが、ジョブ管理部 44、スケジュール部 45をプロセッサ 80上で実行す るソフトウェアとして実現した構成を図 9に示す。この構成の場合は、ジョブ情報格納 部 43、タスク情報格納部 42、プログラム格納部 41、入出力データ格納部 110はそれ ぞれメモリ 100上の領域として実現できる。プロセッサ 80、再構成可能ハードウェア 部 30及び、メモリ 100は通信路 90を介して情報のやりとりや制御が可能である。例え ば再構成可能ハードウェア部 30からのイベントの通知はプロセッサ 80への割り込み として実現できる。ジョブ管理部 44やスケジュール部 45は 1つのプログラムとして実 現しても良 、し、マルチスレッド等の並列プログラムとして実現してもよ!/、。

Claims

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

Priority Applications (3)

Application Number Priority Date Filing Date Title
US11/991,372 US20090158293A1 (en) 2005-09-05 2006-07-13 Information processing apparatus
JP2007534278A JP5018480B2 (ja) 2005-09-05 2006-07-13 情報処理装置
CN200680032551.XA CN101258469B (zh) 2005-09-05 2006-07-13 信息处理设备

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2005-256324 2005-09-05
JP2005256324 2005-09-05

Publications (1)

Publication Number Publication Date
WO2007029421A1 true WO2007029421A1 (ja) 2007-03-15

Family

ID=37835549

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2006/313957 WO2007029421A1 (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)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009044635A1 (ja) * 2007-10-03 2009-04-09 Nec Corporation データ処理装置および方法
JP2009187478A (ja) * 2008-02-08 2009-08-20 Sanyo Electric Co Ltd 情報処理装置、情報処理方法およびプロセッサ
WO2012039216A1 (ja) * 2010-09-24 2012-03-29 日本電気株式会社 情報処理装置、その方法及びそのプログラム
JP2012089154A (ja) * 2005-09-30 2012-05-10 Coware Inc マルチコアアーキテクチャにおけるスケジューリング
US8299816B2 (en) 2010-03-11 2012-10-30 Fuji Xerox Co., Ltd. Data processing apparatus
US8901957B2 (en) 2013-02-26 2014-12-02 Fujitsu Semiconductor Limited Processor and control method for processor
JP2021157482A (ja) * 2020-03-26 2021-10-07 Kddi株式会社 スケジューリング方法、およびスケジューリング装置

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5049683B2 (ja) * 2007-07-18 2012-10-17 キヤノン株式会社 デバイス管理装置及びジョブフロー処理方法とタスク連携処理システム
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
JP5580404B2 (ja) * 2010-03-29 2014-08-27 株式会社東芝 半導体装置
US8640137B1 (en) * 2010-08-30 2014-01-28 Adobe Systems Incorporated Methods and apparatus for resource management in cluster computing
JP5786863B2 (ja) * 2010-10-28 2015-09-30 日本電気株式会社 タスク配置最適化システム、タスク配置最適化方法、及びタスク配置最適化プログラム
US9535757B2 (en) * 2011-12-19 2017-01-03 Nec Corporation Task allocation optimizing system, task allocation optimizing method and task allocation optimizing program
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
US11263025B2 (en) * 2020-05-26 2022-03-01 International Business Machines Corporation Proactively performing tasks based on estimating hardware reconfiguration times

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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 情報処理システム

Family Cites Families (7)

* 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 タスクの生成/削除制御方式
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 マルチプロセッサシステム
GB0304628D0 (en) * 2003-02-28 2003-04-02 Imec Inter Uni Micro Electr Method for hardware-software multitasking on a reconfigurable computing platform

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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 情報処理システム

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9286262B2 (en) 2005-09-30 2016-03-15 Synopsys, Inc. Scheduling in a multicore architecture
US9164953B2 (en) 2005-09-30 2015-10-20 Synopsys, Inc. Scheduling in a multicore architecture
US9442886B2 (en) 2005-09-30 2016-09-13 Synopsys, Inc. Scheduling in a multicore architecture
JP2012089154A (ja) * 2005-09-30 2012-05-10 Coware Inc マルチコアアーキテクチャにおけるスケジューリング
US8751773B2 (en) 2005-09-30 2014-06-10 Synopsys, Inc. Scheduling in a multicore architecture
US8732439B2 (en) 2005-09-30 2014-05-20 Synopsys, Inc. Scheduling in a multicore processor
JP5240200B2 (ja) * 2007-10-03 2013-07-17 日本電気株式会社 データ処理装置および方法
WO2009044635A1 (ja) * 2007-10-03 2009-04-09 Nec Corporation データ処理装置および方法
JP2009187478A (ja) * 2008-02-08 2009-08-20 Sanyo Electric Co Ltd 情報処理装置、情報処理方法およびプロセッサ
US8299816B2 (en) 2010-03-11 2012-10-30 Fuji Xerox Co., Ltd. Data processing apparatus
JPWO2012039216A1 (ja) * 2010-09-24 2014-02-03 日本電気株式会社 情報処理装置、その方法及びそのプログラム
JP5825261B2 (ja) * 2010-09-24 2015-12-02 日本電気株式会社 情報処理装置、その方法及びそのプログラム
WO2012039216A1 (ja) * 2010-09-24 2012-03-29 日本電気株式会社 情報処理装置、その方法及びそのプログラム
US8901957B2 (en) 2013-02-26 2014-12-02 Fujitsu Semiconductor Limited Processor and control method for processor
JP2021157482A (ja) * 2020-03-26 2021-10-07 Kddi株式会社 スケジューリング方法、およびスケジューリング装置
JP7273383B2 (ja) 2020-03-26 2023-05-15 Kddi株式会社 スケジューリング方法、およびスケジューリング装置

Also Published As

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

Similar Documents

Publication Publication Date Title
WO2007029421A1 (ja) 情報処理装置
US9870252B2 (en) Multi-threaded processing with reduced context switching
US7302686B2 (en) Task management system
JP5405320B2 (ja) 仮想計算機制御装置、仮想計算機制御方法及び仮想計算機制御プログラム
US7441240B2 (en) Process scheduling apparatus, process scheduling method, program for process scheduling, and storage medium recording a program for process scheduling
US7836291B2 (en) Method, medium, and apparatus with interrupt handling in a reconfigurable array
US20080235695A1 (en) Resource allocation system for jobs, resource allocation method and resource allocation program for jobs
KR101622266B1 (ko) 재구성 가능 프로세서 및 이를 이용한 인터럽트 핸들링 방법
TWI426451B (zh) Work processing device
US7590990B2 (en) Computer system
JP4199444B2 (ja) パーティション構成変更方式、パーティション構成変更方法およびパーティション構成変更用プログラム
US20210232430A1 (en) Processor zero overhead task scheduling
WO2012039216A1 (ja) 情報処理装置、その方法及びそのプログラム
JP2004220093A (ja) プロセッサ、実行タスク決定装置及び演算処理方法
JP2002163117A (ja) タスクスケジューリング装置
Aridor et al. Open job management architecture for the Blue Gene/L supercomputer
JP2012203911A (ja) 非同期のデバイスによって実行されるタスクのスケジューリングの向上
WO2006011189A1 (ja) 並列計算機
CN113296846B (zh) 一种基于任务调度的芯片端口配置方法与装置
US11789773B2 (en) Computing device for handling tasks in a multi-core processor, and method for operating computing device
JP2666667B2 (ja) マルチタスク実行装置
JP2579008B2 (ja) 時分割マルチタスク実行装置
JPH0844574A (ja) ジョブ運転管理装置
CN113835903A (zh) 一种信息处理方法、装置、设备及存储介质
CN118132231A (zh) 基于虚拟双核的系统任务调度方法、装置、设备及介质

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 200680032551.X

Country of ref document: CN

121 Ep: the epo has been informed by wipo that ep was designated in this application
ENP Entry into the national phase

Ref document number: 2007534278

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 11991372

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 06768171

Country of ref document: EP

Kind code of ref document: A1