JP4409568B2 - Band control program and multiprocessor system - Google Patents
Band control program and multiprocessor system Download PDFInfo
- Publication number
- JP4409568B2 JP4409568B2 JP2006344849A JP2006344849A JP4409568B2 JP 4409568 B2 JP4409568 B2 JP 4409568B2 JP 2006344849 A JP2006344849 A JP 2006344849A JP 2006344849 A JP2006344849 A JP 2006344849A JP 4409568 B2 JP4409568 B2 JP 4409568B2
- Authority
- JP
- Japan
- Prior art keywords
- task
- group
- memory
- processor element
- priority value
- 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
Links
Images
Description
本発明は、複数のプロセッサ・エレメントの各々がメモリにアクセスできるメモリ帯域幅を制御する帯域制御プログラム及びマルチプロセッサシステムに関する。 The present invention relates to a bandwidth control program and a multiprocessor system for controlling a memory bandwidth in which each of a plurality of processor elements can access a memory.
昨今、複数のプロセッサ・エレメント(Processor Element:PE)を有し、当該複数のPEが例えば1つのメモリユニット(以下、単にメモリと表記)を共有して利用するコンピュータハードウェア(以下、マルチプロセッサシステムと表記)が存在する。 Recently, computer hardware (hereinafter referred to as a multiprocessor system) that has a plurality of processor elements (PE) and that the PEs share and use, for example, one memory unit (hereinafter simply referred to as memory). Is written).
このようなマルチプロセッサシステム上では、少なくとも1つのPE上でオペレーティングシステム(以下、OSと表記)が動作する。 On such a multiprocessor system, an operating system (hereinafter referred to as OS) operates on at least one PE.
OSには、スケジューラが含まれる。スケジューラは、当該OS自身やユーザアプリケーションによって発生する多数のタスクを各PEに割り当てる処理を実行する。これにより、マルチプロセッサシステム全体が動作する。ここで、タスクは、各PEに実行されるべき処理単位である。 The OS includes a scheduler. The scheduler executes a process of assigning a number of tasks generated by the OS itself or user applications to each PE. As a result, the entire multiprocessor system operates. Here, a task is a processing unit to be executed by each PE.
通常、実行すべきタスクの数はPEの数よりも多いため、例えばPEの実行時間を分割してタスク毎に割り当てるようなスケジューリングを行う必要がある。更に、複数のタスクには、例えば比較的早く実行完了すべきもの、実行完了が遅れてもよいもの、またはそれらの中間的なもの等が存在する。複数のタスクのうち、早く実行完了すべきタスクには多くのPEの実行時間を、実行完了が遅れてもよいタスクには少ないPEの実行時間を、またはそれらの中間的なタスクには中間的なPEの実行時間を与えるようなスケジューリングが望ましい。 Usually, since the number of tasks to be executed is larger than the number of PEs, it is necessary to perform scheduling such that the execution time of PEs is divided and assigned to each task. Further, the plurality of tasks include, for example, a task that should be completed relatively quickly, a task whose execution may be delayed, or an intermediate task between them. Of the multiple tasks, execute many PEs for tasks that should be completed early, use less PEs for tasks that may be delayed in execution, or intermediate for those intermediate tasks Scheduling that gives the PE execution time is desirable.
そこで、複数のタスクの各々には、プライオリティ値(処理優先度)が設定されている。このプライオリティ値は、例えば値が小さい程より多くのPEの実行時間が与えられる。例えばプライオリティ値が0または1のいずれかの場合では、プライオリティ値が1であるタスクよりプライオリティ値が0であるタスクの方が、より多くのPEの実行時間で実行される。以下、より多くのPEの実行時間が与えられるタスク(例えばプライオリティ値が0)を高いプライオリティ値のタスク、より少ないPEの実行時間が与えられるタスク(例えばプライオリティ値が1)を低いプライオリティ値のタスクと称する。 Therefore, a priority value (processing priority) is set for each of the plurality of tasks. For example, the smaller the value of the priority value, the more PE execution time is given. For example, in the case where the priority value is either 0 or 1, a task with a priority value of 0 is executed with more PE execution time than a task with a priority value of 1. Hereinafter, a task with a higher PE execution time (for example, a priority value of 0) is a task with a higher priority value, and a task with a lower PE execution time (for example, a priority value of 1) is a task with a lower priority value. Called.
PEの各々は、自身に割り当てられたタスクのうち、例えば高いプライオリティ値のタスクには多くの実行時間、低いプライオリティ値のタスクには少ない実行時間で動作する。 Each of the PEs operates with a large execution time for a task with a high priority value and with a short execution time for a task with a low priority value, for example, among the tasks assigned to the PE.
例えば予め固定された優先順位を用い、かつ当該優先順位の他には資源要求装置間の関係を関知することなく、各資源要求装置へのサービス品質を管理する技術が開示されている(例えば、特許文献1を参照)。
しかしながら、上記したようにタスク毎のプライオリティ値に応じてPEの実行時間を割り当てる場合であっても、現実にはPEの実行時間を多くまたは少なくするだけではシステム全体の効率を向上させることができない要因が存在する。その要因の1つとして、メモリアクセス時の処理遅延がある。 However, even when the PE execution time is assigned according to the priority value for each task as described above, the efficiency of the entire system cannot be improved by simply increasing or decreasing the PE execution time. There are factors. One of the factors is a processing delay during memory access.
上記したような複数のPEが同じメモリにアクセスするハードウェア構成では、当該PE同士のメモリアクセスが競合することによって大幅な処理遅延が発生する場合がある。例えば低いプライオリティ値のタスクを実行しているPEからメモリアクセスが集中することによって、高いプライオリティ値のタスクを実行しているPEのメモリアクセスが低速になる。これにより、各タスクに与えられたPEの実行時間に見合うだけの実質的な処理ができなくなるという非効率的な状態が生じる。 In a hardware configuration in which a plurality of PEs access the same memory as described above, a significant processing delay may occur due to contention between the memory accesses of the PEs. For example, when memory accesses are concentrated from PEs that are executing tasks with low priority values, the memory accesses of PEs that are executing tasks with high priority values are slowed down. As a result, an inefficient state in which substantial processing corresponding to the execution time of the PE given to each task cannot be performed occurs.
そこで、各PEが例えばメモリ(またはバス)にアクセスできる帯域幅の制限値(最大値)または保証値(最小値)を設定可能なハードウェアが存在する。このようなハードウェア上では、PEが低いプライオリティ値のタスクを実行する際には、OSは当該PEがメモリにアクセスできる帯域幅を狭く制限する。逆に、PEが高いプライオリティ値のタスクを実行する際には、OSは当該PEがメモリにアクセスできる帯域幅を広く保証し、制限はしない。これにより、各PEからのメモリアクセスの競合による非効率な状態を回避することができる。 Therefore, there is hardware that can set a limit value (maximum value) or a guaranteed value (minimum value) of the bandwidth at which each PE can access a memory (or bus), for example. On such hardware, when a PE executes a task with a low priority value, the OS narrowly limits the bandwidth with which the PE can access the memory. Conversely, when a PE executes a task with a high priority value, the OS guarantees a wide bandwidth for the PE to access the memory, and does not limit it. Thereby, it is possible to avoid an inefficient state due to competition of memory access from each PE.
しかしながら、タスク実行時に当該タスク(のプライオリティ値)に応じてPE毎にメモリ帯域幅が設定される場合、プライオリティ値が最低ではないタスクが複数あるときに、それぞれのタスクを実行するPE毎に適切な帯域幅を判別することは非常に複雑な処理を要する。すなわち、各PEがタスクの実行を開始するときに、システム全体のPE毎の帯域幅及び各PEによって実行されるタスクのプライオリティ値を把握した上で、各PEがメモリにアクセスできる帯域幅を決定し、必要ならば他のPEの帯域幅の変更を行う必要が生じる。このような複雑な処理を行うこと自体も当然PEの実行時間を消費し、さらに、各PEが実行するタスクのプライオリティ値が変化する度に当該各PEの帯域幅を調整する必要が生じる。このため、システム全体のタスクの実行効率が低下するおそれがある。 However, when the memory bandwidth is set for each PE according to the task (priority value) at the time of task execution, when there are multiple tasks whose priority value is not the lowest, it is appropriate for each PE that executes each task. Discriminating a large bandwidth requires a very complicated process. In other words, when each PE starts executing a task, the bandwidth for each PE in the entire system and the priority value of the task executed by each PE are determined, and the bandwidth that allows each PE to access the memory is determined. However, if necessary, it is necessary to change the bandwidth of another PE. Performing such complicated processing itself naturally consumes the execution time of the PE, and further, the bandwidth of each PE needs to be adjusted each time the priority value of the task executed by each PE changes. For this reason, there is a possibility that the execution efficiency of the task of the entire system is lowered.
一方、複数のPEをグループ化してメモリ帯域幅を管理できるハードウェアが存在する。これは、例えば1つのハードウェアを仮想的に複数のコンピュータに分割して使用する際などに、メモリを仮想的に分割する目的で使用されている。 On the other hand, there is hardware that can manage a memory bandwidth by grouping a plurality of PEs. This is used for the purpose of virtually dividing the memory when, for example, one piece of hardware is virtually divided into a plurality of computers.
本発明の目的は、複数のPEをグループ化することで、高速かつ簡単に各PEのメモリ帯域幅を設定することが可能な帯域制御プログラム及びマルチプロセッサシステムを提供することにある。 An object of the present invention is to provide a bandwidth control program and a multiprocessor system that can set a memory bandwidth of each PE at high speed and easily by grouping a plurality of PEs.
本発明の1つの態様によれば、複数のプロセッサ要素と、当該複数のプロセッサ要素の各々にアクセスされるメモリと、当該複数のプロセッサ要素の各々が前記メモリにアクセス可能なメモリ帯域幅を制限するメモリコントローラとから構成されるマルチプロセッサシステムにおいて、前記複数のプロセッサ要素のうち、少なくとも1つのプロセッサ要素によって実行される帯域制御プログラムが提供される。この帯域制御プログラムは、前記1つのプロセッサ要素に、前記複数のプロセッサ要素の各々が属するプロセッサ要素グループ毎のメモリ帯域幅を、前記メモリコントローラに設定するステップと、実行されるべきタスクが発生した際に、当該発生されたタスクを実行させるために、当該タスクを前記複数のプロセッサ要素のうちの1つに割り当てるステップと、前記割り当てられたプロセッサ要素に前記発生されたタスクを実行させる際に、当該発生されたタスクの動作条件または動作状態に応じて、当該割り当てられたプロセッサ要素が属すべきプロセッサ要素グループを決定するステップと、前記決定されたプロセッサ要素グループに属すべき前記割り当てられたプロセッサ要素に、前記メモリコントローラに設定された当該プロセッサ要素グループのメモリ帯域幅で前記発生されたタスクを実行させるステップとを実行させる。 According to one aspect of the present invention, a plurality of processor elements, a memory accessed to each of the plurality of processor elements, and a memory bandwidth that each of the plurality of processor elements can access the memory are limited. In a multiprocessor system including a memory controller, a bandwidth control program executed by at least one of the plurality of processor elements is provided. The bandwidth control program sets, in the memory controller, a memory bandwidth for each processor element group to which each of the plurality of processor elements belongs, and a task to be executed. Assigning the task to one of the plurality of processor elements to execute the generated task, and causing the assigned processor element to execute the generated task. Determining a processor element group to which the assigned processor element should belong according to an operating condition or an operating state of the generated task; and to the assigned processor element to belong to the determined processor element group, The processor set in the memory controller. In memory bandwidth element group and a step of executing the generation task.
本発明によれば、複数のPEをグループ化することで、高速かつ簡単に各PEのメモリ帯域幅を設定することができる。 According to the present invention, the memory bandwidth of each PE can be set quickly and easily by grouping a plurality of PEs.
以下、図面を参照して、本発明の実施形態について説明する。 Embodiments of the present invention will be described below with reference to the drawings.
図1は、本実施形態に係るマルチプロセッサシステムのハードウェア構成を示すブロック図である。 FIG. 1 is a block diagram showing a hardware configuration of a multiprocessor system according to this embodiment.
図1のマルチプロセッサシステムは、主として、複数のプロセッサ要素(プロセッサ・エレメント:Processor Element)10、メモリコントローラ20、メモリ30、I/Oコントローラ40及び外部記憶装置50から構成される。以下、プロセッサ要素は、単にPEと表記する。
The multiprocessor system of FIG. 1 mainly includes a plurality of processor elements (processor elements) 10, a
複数のPE10の各々は、マルチプロセッサシステムの動作を制御するために設けられた例えばメインプロセッサまたはサブプロセッサである。複数のPE10は、PE(0)、PE(1)、PE(2)及びPE(3)を含む。複数のPE10は、例えば外部記憶装置50に格納されているオペレーティングシステム(以下、OSと表記)51及びユーザアプリケーションプログラムのような各種アプリケーションプログラムを実行する。また、複数のPE10は、メモリのアクセス制御を行うメモリコントローラ20を介してメモリ30と接続されている。複数のPE10は、例えば1つのメモリ30を共有して利用する。
Each of the plurality of
メモリコントローラ20は、帯域制御部21を含む。帯域制御部21は、各PEがメモリ30にアクセスできる帯域幅の制限値(最大値)または保証値(最小値)を設定する。また、メモリコントローラ20は、複数のPE10の各々をグループ化して、メモリ帯域幅を管理する。
The
また、複数のPE10は、各種デバイスとのやり取りを制御するI/Oコントローラ40を介して、例えば外部記憶装置50またはその他のデバイスと接続されている。
The plurality of
この外部記憶装置50には、複数のPE10によって実行されるOS51が格納されている。OS51は、例えばマルチプロセッサシステムのハードウェア資源およびソフトウェア資源の割り当て等を統合的に管理するためのプログラムである。また、OS51は、複数のPE10のうち、少なくとも1つのPE、例えばPE(0)上で動作する。
The
ここで、例えば複数のPE10のうちの少なくとも1つのPE上でOS51が実行されることによって、マルチプロセッサシステムのハードウェア資源およびソフトウェア資源の割り当て等の処理が実行される。しかし、以下の説明では、煩雑さを避けるために、OS51が各種処理を行うものとする。
Here, for example, by executing the OS 51 on at least one of the plurality of
OS51は、例えば複数のPE10に実行(処理)されるべきタスクを複数のPE10のうちの1つに割り当てる処理を実行する。このタスクは、OS51やユーザアプリケーションによって多数発生する。発生されたタスクの各々は、OS51によって複数のPE10の各々に割り当てられる。タスクの各々には、例えば動作条件が予め定められている。タスクは、動作条件として、例えば予め定められている当該タスクが実行される優先度を示す実行プライオリティ(Priority)値を有する。この実行プライオリティ値は小さいほど、実行プライオリティ値(優先度)が高いと表現する。例えば、実行プライオリティ値が0である場合には、実行プライオリティ値は最高となる。また、OS51は、上記したメモリコントローラ20の帯域制御部21によって設定されるメモリ帯域幅の制御を行う。
For example, the
なお、上記した複数のPE10、メモリコントローラ20、メモリ30、I/Oコントローラ40及び外部記憶装置50等は、それぞれ例えばバスを介して接続されている。
The plurality of
次に、図2は、図1に示すOS51の主として機能構成を示すブロック図である。OS51は、帯域設定部511、スケジューラ512及びグループ設定部513を含む。これらの各部511乃至513は、図1に示される複数のPE10のうち、少なくとも1つのPEが外部記憶装置50に格納されているOS51を実行することにより実現されるものとする。このOS51は、コンピュータ読み取り可能な記憶媒体に予め格納して頒布可能である。
Next, FIG. 2 is a block diagram mainly showing a functional configuration of the
また、図1に示す外部記憶装置50には、グループ・帯域テーブル52、グループ・プライオリティテーブル53及びタスクテーブル54が格納されている。
Further, the
帯域設定部511は、例えばユーザによって入力された値に応じて、複数のPE10の各々が属する複数のPEグループの各々を識別するグループ識別情報及び当該グループ識別情報によって示されるPEグループに属するPEがメモリ30にアクセス可能なメモリ帯域幅を示す帯域幅情報を対応付けて、グループ・帯域テーブル52に登録する。帯域設定部511は、グループ・帯域テーブル52を参照して、PEグループ毎のメモリ帯域幅をメモリコントローラ20(の帯域制御部21)に設定する。なお、グループ・帯域テーブル52には、システムの設定として、グループ識別情報及び帯域幅情報が予め登録されている構成であっても良い。
The
グループ・プライオリティテーブル53には、上記したタスクの各々が実行される優先度を示す実行プライオリティ値及び当該タスクを実行するPEが属するPEグループを示すグループ識別情報が対応付けて予め保持されている。 In the group priority table 53, an execution priority value indicating the priority at which each of the tasks described above is executed and group identification information indicating the PE group to which the PE executing the task belongs are stored in advance.
タスクテーブル54には、例えば発生されたタスク(に係わる情報)が登録される。このタスクテーブル54には、例えばタスク毎に実行プライオリティ値が対応付けて保持される。 In the task table 54, for example, generated tasks (information relating to) are registered. In the task table 54, for example, an execution priority value is stored in association with each task.
スケジューラ512は、例えばOS51の起動時に、タスクテーブル54を作成する処理を実行する。スケジューラ512は、タスクが発生すると、タスクテーブル54に当該タスクを登録する。スケジューラ512は、タスクテーブル54に登録されているタスクを各PEに割り当てる処理を実行する。これにより、スケジューラ512は、複数のPE10を利用して、複数のタスクを実行しようとする。スケジューラ512は、例えばPEの実行時間を分割してタスクに割り当てる。スケジューラ512は、例えば上記した実行プライオリティ値が高いタスクには多くの実行時間を、実行プライオリティ値が低いタスクには少ない実行時間を割り当てる。
For example, the
また、スケジューラ512は、後述するグループ識別情報が設定されたPEに対して、当該グループ識別情報に対応付けてグループ・帯域テーブル52に保持されている帯域幅情報によって示されるメモリ帯域幅でタスクを実行させる。つまり、スケジューラ512は、各PEに対して、メモリコントローラ20に設定されたPEグループ毎のメモリ帯域幅でタスクを実行させる。
In addition, the
スケジューラ512は、タスクテーブル54に登録されているタスクを各PEのタスクキュー(図示しない)に追加することで、タスクを各PEに割り当てる。各PEにタスクが割り当てられると、タスクテーブル54には、当該タスクを実行するPEの識別子が当該タスク毎に対応付けて登録される。スケジューラ512は、例えば実行プライオリティが高い順に各PEのタスクキューにタスクを追加する。このタスクキューは、外部記憶装置50に格納されている。
The
複数のPE10の各々は、自身のタスクキューを参照して、例えば実行プライオリティが高いタスクには多くの実行時間を、実行プライオリティが低いタスクには少ない実行時間を与えながら動作(処理)する。
Each of the plurality of
スケジューラ512は、グループ決定部514を含む。グループ決定部514は、各PEが実行するタスクの例えば動作条件に応じて、各PEが属すべきPEグループを決定する。グループ決定部514は、グループ・プライオリティテーブル53及びタスクテーブル54を参照して、各PEが実行するタスクの実行プライオリティ値から当該各PEのPEグループを決定する。グループ決定部514は、各PEが実行するタスクに対応付けてタスクテーブル54に保持されている実行プライオリティ値を取得する。また、グループ決定部514は、取得された実行プライオリティ値に対応付けてグループ・プライオリティテーブル53に保持されているグループ識別情報によって示されるPEグループを、各PEが属すべきPEグループとして決定する。
The
グループ設定部513は、グループ決定部514によって決定された各PEのPEグループを示すグループ識別情報(PEグループ番号)を、各PEのPEグループレジスタに設定する。このPEグループレジスタは、各PEに存在し、当該各PEが属するPEグループのグループ識別情報(識別子)を設定する記憶領域である。
The
各PEは、グループ識別情報が各PEのPEグループレジスタに設定されることにより、帯域設定部511によってメモリコントローラ30に設定された当該グループ識別情報によって示されるPEグループのメモリ帯域幅でタスクを実行する。
Each PE executes a task with the memory bandwidth of the PE group indicated by the group identification information set in the
次に、図3のフローチャートを参照して、OS51の帯域設定部511がグループ・帯域テーブル52を作成(登録)する処理手順について説明する。なお、この処理は、例えばシステムの運用開始時または運用形態変更時に実行される。
Next, a processing procedure in which the
まず、帯域設定部511は、例えばユーザによって入力されるPEグループ数の入力を受付ける(ステップS1)。ここで、ユーザによって入力されたPEグループ数は、N(Nは2以上の整数)であるものとする。
First, the
次に、帯域設定部511は、例えばグループn(n=0、1、2、…、N−1)の初期値として「0」を設定する(ステップS2)。
Next, the
帯域設定部511は、例えばユーザによって入力されるPEグループnに属するPEがメモリにアクセスするメモリ帯域幅の入力を受付ける(ステップS3)。ここで、ユーザによって入力されたメモリ帯域幅は、Bn%であるものとする。なお、Bnは、1〜100%であるものとする。
The
帯域設定部511は、PEグループnを示すグループ識別情報及びステップS3で入力されたメモリ帯域幅Bnを示す帯域幅情報を外部記憶装置50上のグループ・帯域テーブル52に登録(設定)する(ステップS4)。ここでは、PEグループ0を示すグループ識別情報及びメモリ帯域幅B0を示す帯域幅情報が対応付けて登録される。
The
帯域設定部511は、PEグループnの値に、1を加える(ステップS5)。帯域制御部511は、PEグループnの値がN−1であるか否かを判定する(ステップS6)。帯域制御部511は、PEグループnの値がN−1でないと判定した場合(ステップS6のNO)、ステップS3に戻って、ステップS1で入力された全てのPEグループに対してメモリ帯域幅を登録する(ステップS6においてPEグループn=N−1と判定される)まで処理が繰り返される。この場合、ステップS3に戻って、PEグループ1のメモリ帯域幅B1をグループ・帯域幅テーブル52に登録する処理が実行される。
The
なお、例えばPEグループ毎に登録されるメモリ帯域幅は、その合計が100%となるように登録される。 For example, the memory bandwidth registered for each PE group is registered such that the total is 100%.
一方、ステップS6において、PEグループnの値がN−1であると判定された場合、グループ・帯域テーブル52の作成処理は終了される。 On the other hand, when it is determined in step S6 that the value of the PE group n is N-1, the process of creating the group / band table 52 is terminated.
なお、上記したようにPEグループの初期値は0としているため、上記したようにPEグループN−1まで処理されると、実際にはグループ・帯域テーブル52に登録されるPEグループ数は、Nとなる。 Since the initial value of the PE group is 0 as described above, when processing up to PE group N-1 as described above, the number of PE groups registered in the group / band table 52 is actually N It becomes.
図4は、帯域設定部511によって作成(登録)されたグループ・帯域テーブル52のデータ構造の一例を示す。
FIG. 4 shows an example of the data structure of the group / band table 52 created (registered) by the
図4に示すように、グループ・帯域テーブル52には、PEグループを示すグループ識別情報及び当該PEグループに対して設定されるメモリ帯域幅情報が対応付けて保持されている。図4の例では、PEグループ0を示すグループ識別情報「0」に対応付けて保持されているメモリ帯域幅情報によって示されるメモリ帯域幅B0は、「90%」である。また、PEグループ1を示すグループ識別情報「1」に対応付けて保持されているメモリ帯域幅情報によって示されるメモリ帯域幅B1は、「10%」である。この例では、ユーザによってPEグループ数として2(PEグループ0及びPEグループ1)が入力されている。また、グループ識別情報「0」及び「1」に対応付けられているメモリ帯域幅の合計は100%となっている。
As shown in FIG. 4, the group / bandwidth table 52 holds group identification information indicating a PE group and memory bandwidth information set for the PE group in association with each other. In the example of FIG. 4, the memory bandwidth B0 indicated by the memory bandwidth information held in association with the group identification information “0” indicating the
次に、図5のフローチャートを参照して、帯域設定部511がメモリコントローラ20にPEグループ毎のメモリ帯域幅を設定する処理手順について説明する。なお、このPEグループ毎のメモリ帯域幅を設定する処理は、例えばOS51のスケジューラが起動する際に実行される。
Next, a processing procedure in which the
まず、帯域設定部511は、外部記憶装置50からグループ・帯域テーブル52を読み込む(ステップS11)。
First, the
次に、帯域設定部511は、例えばPEグループn(n=0、1、2、…、N)の初期値として「0」を設定する(ステップS2)。
Next, the
帯域設定部511は、グループ・帯域テーブル52を参照して、PEグループ0のメモリ帯域幅B0をメモリコントローラ20に設定する(ステップS13)。帯域設定部511は、PEグループ0を示すグループ識別情報に対応付けてグループ・帯域テーブル52に保持されているメモリ帯域情報によって示されるメモリ帯域幅B0を設定する。
The
帯域設定部511は、PEグループnの値に、1を加える(ステップS14)。帯域制御部511は、PEグループnの値がN−1であるか否かを判定する(ステップS15)。帯域制御部511は、PEグループnの値がN−1でないと判定した場合(ステップS15のNO)、ステップS13に戻って、グループ・帯域テーブル52に保持されている全てのPEグループに対してメモリ帯域幅を設定するまで処理が繰り返される。この場合、ステップS3に戻って、グループ1のメモリ帯域幅B1をメモリコントローラ20に設定する処理が実行される。
The
一方、ステップS15において、PEグループnの値がN−1であると判定された場合、PEグループのメモリ帯域を設定する処理は終了され、初期タスクテーブル及びタスクキューを作成する処理が実行される。これにより、タスクテーブル54に保持されている複数のタスクを各PEに割り当てる処理(タスクディスパッチ)が実行される。 On the other hand, if it is determined in step S15 that the value of PE group n is N-1, the process of setting the PE group memory bandwidth is terminated, and the process of creating the initial task table and task queue is executed. . As a result, processing (task dispatch) for allocating a plurality of tasks held in the task table 54 to each PE is executed.
図6は、グループ・プライオリティテーブル53のデータ構造の一例を示す。 FIG. 6 shows an example of the data structure of the group / priority table 53.
図6に示すように、グループ・プライオリティテーブル53には、実行プライオリティ値及びグループ識別情報が保持されている。なお、実行プライオリティ値の段階数は2(実行プライオリティ値0または1)、PEグループ数は2(PEグループ0または1)であるものとする。図6の例では、実行プライオリティ値「0」に対応付けて、PEグループ0を示すグループ識別情報「0」が保持されている。また、実行プライオリティ値「1」に対応付けて、PEグループ1を示すグループ識別情報「1」が保持されている。このグループ・プライオリティテーブル53に保持されている実行プライオリティ値及びグループ識別情報は、例えばシステム運用開始時または運用形態変更時等に予め定められている。
As shown in FIG. 6, the group priority table 53 holds execution priority values and group identification information. It is assumed that the number of stages of the execution priority value is 2 (
図7は、タスクテーブル54及び各PEのタスクキュー(task queue)のデータ構造の一例を示す。図7に示すように、タスクテーブル54には、タスク毎に、当該タスクの実行プライオリティ値が保持されている。また、タスクテーブル54には、タスク毎に、スケジューラ512によって当該タスクが割り当てられたPEを示すPE識別情報が保持されている。
FIG. 7 shows an example of the data structure of the task table 54 and the task queue of each PE. As shown in FIG. 7, the task table 54 holds the execution priority value of the task for each task. The task table 54 holds PE identification information indicating the PE to which the task is assigned by the
図7の例では、タスクテーブル54には、タスクA〜C、及びタスク1〜10が保持されている。また、タスクA〜Cの実行プライオリティ値は0であり、タスク1〜10の実行プライオリティ値は1である。なお、実行プライオリティ値は1よりも0の方がプライオリティ(処理優先度)が高いものとする。つまり、各PEは、タスクA〜Cには、多い実行時間で動作し、タスク1〜10には少ない実行時間で動作することになる。
In the example of FIG. 7, tasks A to C and
また、各PEのタスクキューには、スケジューラ512によって割り当てられたタスクが実行プライオリティ毎に登録されている。各PEのタスクキューに登録されている複数のタスクは、例えば登録されている順に各PEによって処理されることになる。
Further, tasks assigned by the
図7に示すように、PE(0)のタスクキューには、実行プライオリティ値「0」のタスクとしてタスクAが割り当てられている。また、PE(0)のタスクキューには、実行プライオリティ値「1」のタスクとしてタスク3及び7が登録されている。
As shown in FIG. 7, task A is assigned to the task queue of PE (0) as a task with an execution priority value “0”. In addition,
同様に、PE(1)のタスクキューには、実行プライオリティ値「0」のタスクとしてタスクBが割り当てられている。また、PE(1)のタスクキューには、実行プライオリティ値「1」のタスクとしてタスク4及び8が登録されている。 Similarly, task B is assigned to the task queue of PE (1) as a task with an execution priority value “0”. In addition, tasks 4 and 8 are registered in the task queue of PE (1) as tasks having an execution priority value “1”.
同様に、PE(2)のタスクキューには、実行プライオリティ値「0」のタスクとしてタスクCが割り当てられている。また、PE(2)のタスクキューには、実行プライオリティ値「1」のタスクとしてタスク5及び9が登録されている。 Similarly, task C is assigned to the task queue of PE (2) as a task with an execution priority value “0”. In addition, tasks 5 and 9 are registered in the task queue of PE (2) as tasks having an execution priority value “1”.
同様に、PE(3)のタスクキューには、実行プライオリティ値「1」のタスクとしてタスク1、2、6及び10が登録されている。
Similarly,
なお、タスクテーブル54に保持されている複数のタスクは、例えば実行プライオリティ値が高い順に各PEに割り当てられる。 A plurality of tasks held in the task table 54 are assigned to each PE in descending order of execution priority value, for example.
また、図7のタスクテーブル54には、タスク毎に上記したように各タスクが割り当てられた各PEを示すPE識別情報が示されている。ここでは、PE(0)を示すPE識別情報を「0」、PE(1)を示すPE識別情報を「1」、PE(2)を示すPE識別情報を「2」及びPE(3)を示すPE識別情報を「3」とする。 Also, the task table 54 of FIG. 7 shows PE identification information indicating each PE to which each task is assigned as described above for each task. Here, the PE identification information indicating PE (0) is “0”, the PE identification information indicating PE (1) is “1”, the PE identification information indicating PE (2) is “2”, and PE (3). The indicated PE identification information is “3”.
次に、図8のフローチャートを参照して、各PEがタスクを実行する際に当該PEが属すべきPEグループを設定する処理手順について説明する。ここでは、PE(0)がタスクAを実行する際の処理について説明する。なお、他のPEについても同様であり、他のタスクを実行する際についても同様である。また、必要に応じて図4、図6及び図7を用いて説明する。 Next, a processing procedure for setting a PE group to which the PE belongs when each PE executes a task will be described with reference to a flowchart of FIG. Here, processing when PE (0) executes task A will be described. The same applies to other PEs, and the same applies to the execution of other tasks. Moreover, it demonstrates using FIG.4, FIG.6 and FIG.7 as needed.
まず、スケジューラ512のグループ決定部514は、PE(0)がタスクAを実行する際、図7に示すタスクテーブル54を参照して、当該タスクAに対応付けて保持されている実行プライオリティ値(ここでは、「0」)を取得する(ステップS21)。
First, when the PE (0) executes the task A, the
次に、グループ決定部514は、グループ・プライオリティテーブル53を参照して、取得された実行プライオリティ値からPEグループを決定する(ステップS22)。グループ決定部514は、取得された実行プライオリティ値に対応付けてグループ・プライオリティテーブル53に保持されているグループ識別情報によって示されるPEグループを、PE(0)が属すべきPEグループとして決定する。例えば、グループ決定部514は、図6に示すグループ・プライオリティテーブル53には実行プライオリティ値「0」に対応付けてグループ識別情報「0」が保持されているので、PE(0)のPEグループはPEグループ0であると決定する。
Next, the
グループ設定部513は、グループ決定部514によって決定されたPEグループのPEグループ番号(グループ識別情報)をPE(0)のPEグループレジスタに設定する(ステップS23)。この場合、PE(0)のPEグループレジスタには、「0」が設定される。
The
PE(0)のPEグループレジスタに「0」が設定された場合、PE(0)は、グループ識別情報「0」に対応付けてグループ・帯域テーブル52に保持されている帯域情報によって示されるメモリ帯域幅で、タスクAを実行する。図4に示すグループ・帯域テーブル52の例では、PE(0)は、メモリ帯域幅90%でタスクAを処理可能である。 When “0” is set in the PE group register of PE (0), PE (0) is associated with the group identification information “0” and is indicated by the band information held in the group / band table 52. Task A is executed with bandwidth. In the example of the group / bandwidth table 52 shown in FIG. 4, PE (0) can process task A with a memory bandwidth of 90%.
図9は、PE(0)〜PE(3)が、割り当てられた複数のタスクを実時間tで実行する処理の流れを示す。なお、PE(0)〜PE(3)には、上記した図7に示すように複数のタスクが割り当てられている。図9に示すように、PE(0)〜PE(2)は、実行プライオリティ値「1」のタスク(タスク3〜5、タスク7〜9)に比べて、実行プライオリティ値「0」のタスク(タスクA〜C)の実行時間を多くし、かつ、実行回数も多く動作している。また、PE(3)は、実行すべきタスク(タスク1、2、6及び10)が全て実行プライオリティ値「1」であるため、実行時間及び実行回数を均一的に各タスクを実行している。
FIG. 9 shows a flow of processing in which PE (0) to PE (3) execute a plurality of assigned tasks in real time t. A plurality of tasks are assigned to PE (0) to PE (3) as shown in FIG. As shown in FIG. 9, PE (0) to PE (2) have tasks (0-3) with an execution priority value “0” compared to tasks (tasks 3-5, 7-9) with an execution priority value “1”. The execution time of tasks A to C) is increased, and the number of executions is increased. In addition, since all the tasks to be executed (
図10は、図9に示す実時間tがt0のときのPE(0)〜PE(3)の各々が属するPEグループ及び当該PE(0)〜PE(3)の各々がメモリ30にアクセスできるメモリ帯域幅の関係を示す。
10 shows that the PE group to which each of PE (0) to PE (3) belongs when the real time t shown in FIG. 9 is t0 and each of the PE (0) to PE (3) can access the
図9の例では、実時間t0のとき、PE(0)は、実行プライオリティ値「1」のタスク3を実行している。また、PE(1)は実行プライオリティ値「1」のタスク4を、PE(2)は実行プライオリティ値「1」のタスク5を、PE(3)は実行プライオリティ値「1」のタスク2を実行している。つまり、PE(0)〜PE(3)は、全て実行プライオリティ値「1」のタスクを実行している。
In the example of FIG. 9, at the actual time t0, PE (0) is executing the
この場合、図10に示すように、PE(0)〜PE(3)の各々が属すべきPEグループは、PEグループ1であると決定されている。よって、PE(0)〜PE(3)のそれぞれのPEグループレジスタには、グループ識別情報(G)「1」が設定されている。これにより、図10の例では、PE(0)〜PE(3)は、グループ識別情報「1」に対応付けてグループ・帯域テーブル52に保持されている帯域幅情報によって示されるメモリ帯域幅でメモリ30にアクセスすることが可能となる。つまり、図4に示すグループ・帯域テーブル52の例では、PE(0)〜PE(3)は、メモリ帯域幅10%でメモリ30にアクセスできる。
ここで、図9に示す実時間tがt0からt1に経過した場合を想定する。この場合、PE(2)で実行されるタスクは、タスク5からタスクCに切り替えられる。また、PE(3)で実行されるタスクは、タスク2からタスク6に切り替えられる。
In this case, as shown in FIG. 10, the PE group to which each of PE (0) to PE (3) should belong is
Here, it is assumed that the real time t shown in FIG. 9 has elapsed from t0 to t1. In this case, the task executed in PE (2) is switched from task 5 to task C. Also, the task executed in PE (3) is switched from
図11のフローチャートを参照して、例えばPE(2)で実行されるタスクが、タスク5からタスクCに切り替えられる際のPE(2)が属すべきPEグループを設定する処理手順について説明する。なお、必要に応じて、図4、図6及び図7を用いて説明する。 With reference to the flowchart of FIG. 11, for example, a processing procedure for setting a PE group to which PE (2) should belong when a task executed in PE (2) is switched from task 5 to task C will be described. In addition, it demonstrates using FIG.4, FIG6 and FIG.7 as needed.
まず、PE(2)がタスク5を実行中に、タスクCによるタスク切り替え割込が発生したものとする(ステップS31)。 First, it is assumed that a task switching interrupt by task C occurs while PE (2) is executing task 5 (step S31).
タスク切り替え割り込みが発生すると、現在PE(2)が実行中のタスク5(前タスク)の停止(終了)処理が実行される(ステップS32)。 When a task switching interrupt occurs, stop (end) processing of task 5 (previous task) currently being executed by PE (2) is executed (step S32).
次に、グループ決定部514は、PE(2)がタスク5の次に実行されるタスクA(新タスク)に対応付けてタスクテーブル54に保持されている実行プライオリティ値を取得する(ステップS33)。図7に示すタスクテーブル54の場合、グループ決定部514は、実行プライオリティ値「0」を取得する。
Next, the
グループ決定部514は、グループ・プライオリティテーブル53を参照して、取得された実行プライオリティ値からPEグループを決定する(ステップS34)。例えば、グループ決定部514は、図6に示すグループ・プライオリティテーブル53には実行プライオリティ値「0」に対応付けてグループ識別情報「0」が保持されているので、PE(2)が属すべきPEグループはPEグループ0であると決定する。
The
グループ設定部513は、グループ決定部514によって決定されたPEグループのPEグループ番号(グループ識別情報)をPE(2)のPEグループレジスタに設定する(ステップS35)。この場合、PE(2)のPEグループレジスタには、「0」が設定される。
The
これにより、PE(2)がタスク5を実行している際には、グループ識別情報「1」が設定されていたPE(2)のPEグループレジスタに、タスクCを実行する際にはグループ識別情報「0」が設定される。このように、各PEが実行するタスクのプライオリティ値に応じて、PEグループレジスタのグループ識別情報を設定する(書き換える)ことができる。 As a result, when PE (2) is executing task 5, the group identification information is set in the PE group register of PE (2) for which group identification information “1” has been set. Information “0” is set. Thus, the group identification information of the PE group register can be set (rewritten) according to the priority value of the task executed by each PE.
PE(2)のPEグループレジスタに「0」が設定された場合、PE(2)はグループ識別情報「0」に対応付けてグループ・帯域テーブル52に保持されている帯域情報によって示されるメモリ帯域幅で、タスクCを実行する。図4に示すグループ・帯域テーブル52の例では、PE(2)は、メモリ帯域幅90%でタスクCを処理可能である。 When “0” is set in the PE group register of PE (2), PE (2) is associated with the group identification information “0” and the memory band indicated by the band information held in the group / band table 52 Task C is executed with the width. In the example of the group / bandwidth table 52 shown in FIG. 4, PE (2) can process task C with a memory bandwidth of 90%.
PE(2)のPEグループレジスタに、グループ識別情報「0」が設定されると、タスクC(新タスク)の実行を再開(起動)する処理が実行される(ステップS36)。ここでは、例えば切替後のタスク(タスクC)のコンテキストリストア処理が実行される。具体的には、例えば主記憶上に保存されたタスクの実行状態(プログラムのアドレス、汎用レジスタの値等)をPEに設定する。これにより、切り替え後のタスクをPEに実行させるための準備を整える。 When group identification information “0” is set in the PE group register of PE (2), a process for resuming (starting up) the execution of task C (new task) is executed (step S36). Here, for example, context restoration processing of the task after switching (task C) is executed. Specifically, for example, the task execution state (program address, general-purpose register value, etc.) stored in the main memory is set in the PE. This prepares for the PE to execute the task after switching.
なお、上記したステップS32からS36の処理がタスク切替処理となる。タスク切替処理が終了すると、割込処理が完了する(ステップS37)。割込処理が完了すると、PE(2)は、与えられた帯域幅(ここでは、メモリ帯域幅90%)で切替後のタスク(ここでは、タスクC)を実行する。
Note that the processing from step S32 to S36 described above is task switching processing. When the task switching process is completed, the interrupt process is completed (step S37). When the interrupt process is completed, PE (2) executes the switched task (here, task C) with the given bandwidth (here,
また、図9に示す実時間tがt0からt1に経過した場合、PE(3)で実行されるタスクは、タスク2からタスク6に切り替えられる。この場合においても同様に、PE(3)のPEグループレジスタのグループ識別情報が設定される。なお、この場合では、タスク2及びタスク6の実行プライオリティ値は共に「1」であるため、結果的には、PE(3)のPEグループレジスタに設定されるグループ識別情報は変化しない。
When the real time t shown in FIG. 9 has elapsed from t0 to t1, the task executed in PE (3) is switched from
図12は、図9に示す実時間tがt1のときのPE(0)〜PE(3)の各々が属するPEグループ及び当該PE(0)〜PE(3)の各々がメモリ30にアクセスできるメモリ帯域幅の関係を示す。
12 shows that the PE group to which each of PE (0) to PE (3) when the real time t shown in FIG. 9 is t1 and each of the PE (0) to PE (3) can access the
図9の例では、実時間t1のとき、PE(0)は、実行プライオリティ値「1」のタスク3を実行している。また、PE(1)は実行プライオリティ値「1」のタスク4を、PE(2)は実行プライオリティ値「0」のタスクCを、PE(3)は実行プライオリティ値「1」のタスク6を実行している。
In the example of FIG. 9, at the actual time t1, PE (0) is executing the
この場合、図12に示すように、PE(0)、PE(1)及びPE(3)の各々が属すべきPEグループは、PEグループ1であると決定されている。また、PE(2)が属すべきPEグループは、PEグループ0であると決定されている。よって、PE(0)、PE(1)及びPE(3)のそれぞれのPEグループレジスタには、グループ識別情報「1」が設定されている。また、PE(2)のPEグループレジスタには、グループ識別情報「0」が設定されている。これにより、図12の例では、PE(0)、PE(1)及びPE(3)は、グループ識別情報「1」に対応付けてグループ・帯域テーブル52に保持されている帯域幅情報によって示されるメモリ帯域幅でメモリ30にアクセスすることが可能となる。また、PE(2)は、グループ識別情報「0」に対応付けてグループ・帯域テーブル52に保持されている帯域幅情報によって示されるメモリ帯域幅でメモリ30にアクセスすることが可能となる。つまり、図4に示すグループ・帯域テーブル52の例では、PE(0)、PE(1)及びPE(3)はメモリ帯域幅10%、PE(2)はメモリ帯域幅90%でメモリ30にアクセスできる。
In this case, as shown in FIG. 12, the PE group to which each of PE (0), PE (1), and PE (3) belongs is determined to be
図13は、図9に示す実時間tがt2のときのPE(0)〜PE(3)の各々が属するPEグループ及び当該PE(0)〜PE(3)の各々がメモリ30にアクセスできるメモリ帯域幅の関係を示す。なお、各PEにおいて、タスク切り替え割込が発生した場合には、上記した図11のような処理で各PEのPEグループレジスタのグループ識別情報は設定される。
13 shows that the PE group to which each of PE (0) to PE (3) when the real time t shown in FIG. 9 is t2 and each of the PE (0) to PE (3) can access the
図9の例では、実時間t2のとき、PE(0)は、実行プライオリティ値「0」のタスクAを実行している。また、PE(1)は実行プライオリティ値「0」のタスクBを、PE(2)は実行プライオリティ値「0」のタスクCを、PE(3)は実行プライオリティ値「1」のタスク10を実行している。
In the example of FIG. 9, at the actual time t2, PE (0) is executing the task A with the execution priority value “0”. PE (1) executes task B with an execution priority value “0”, PE (2) executes task C with an execution priority value “0”, and PE (3) executes
この場合、図13に示すように、PE(0)〜PE(2)の各々が属すべきPEグループは、PEグループ0であると決定されている。また、PE(3)が属すべきPEグループは、PEグループ1であると決定されている。よって、PE(0)〜PE(2)のそれぞれのPEグループレジスタには、グループ識別情報「0」が設定されている。また、PE(3)のPEグループレジスタには、グループ識別情報「1」が設定されている。これにより、図13の例では、PE(0)〜PE(2)はメモリ帯域幅90%、PE(3)はメモリ帯域幅10%でメモリ30にアクセスできる。
In this case, as shown in FIG. 13, the PE group to which each of PE (0) to PE (2) should belong is determined to be
図14は、図9に示す実時間tがt3のときのPE(0)〜PE(3)の各々が属するPEグループ及び当該PE(0)〜PE(3)の各々がメモリ30にアクセスできるメモリ帯域幅の関係を示す。
FIG. 14 shows that the PE group to which each of PE (0) to PE (3) when the real time t shown in FIG. 9 is t3 and each of the PE (0) to PE (3) can access the
図9の例では、実時間t3のとき、PE(0)は、実行プライオリティ値「0」のタスクAを実行している。また、PE(1)は実行プライオリティ値「0」のタスクBを、PE(2)は実行プライオリティ値「1」のタスク9を、PE(3)は実行プライオリティ値「1」のタスク10を実行している。
In the example of FIG. 9, at the actual time t3, PE (0) is executing the task A with the execution priority value “0”. PE (1) executes task B with an execution priority value “0”, PE (2) executes task 9 with an execution priority value “1”, and PE (3) executes
この場合、図14に示すように、PE(0)及びPE(1)の各々が属すべきPEグループは、PEグループ0であると決定されている。また、PE(2)及びPE(3)が属すべきPEグループは、PEグループ1であると決定されている。よって、PE(0)PE(1)のそれぞれのPEグループレジスタには、グループ識別情報「0」が設定されている。また、PE(2)及びPE(3)のPEグループレジスタには、グループ識別情報「1」が設定されている。これにより、図14の例では、PE(0)及びPE(1)はメモリ帯域幅90%、PE(2)及びPE(3)はメモリ帯域幅10%でメモリ30にアクセスできる。
In this case, as shown in FIG. 14, the PE group to which each of PE (0) and PE (1) should belong is determined to be
上記したように本実施形態においては、複数のPE10をグループ化することで、タスクを実行する際に、当該タスクの実行プライオリティ値に応じて、当該タスクを実行するPEのPEグループレジスタにグループ識別情報を設定するという簡単な手順で、各PEのメモリ帯域幅を設定することが可能となる。また、グループ毎にメモリ帯域幅をメモリコントローラに設定しているため、高い実行プライオリティのタスクを実行するPEは、低い実行プライオリティの男タスクを実行するPEとメモリ30へのアクセスが競合することなく、タスクを実行することができる。
As described above, in the present embodiment, when a plurality of
なお、上記した本実施形態においては、帯域制御部21はメモリコントローラ20に含まれるものとして説明したが、独立したハードウェアモジュールとして設けられる構成であっても構わない。
In the above-described embodiment, the
また、上記した本実施形態においては、帯域制御部21はメモリ帯域幅を制御するものとして説明したが、例えば帯域制御部21がバスコントローラに含まれており、当該帯域制御部21が各PE及びメモリ30間におけるバス帯域幅を制御する構成でも構わない。
In the above-described embodiment, the
[変形例]
次に、本実施形態の変形例について説明する。本変形例では、複数のタスクの各々には、予め動作状態が設定されている。各タスクは、上記した本実施形態で説明した実行プライオリティ値に加えて、当該タスクの動作状態として、メモリ30へのアクセスの頻度を示すアクセスプライオリティ(Access Priority)値を有する。このアクセスプライオリティ値は、小さいほどアクセスプライオリティ値(アクセス頻度)が高いと表現する。例えば、アクセスプライオリティ値が0の場合は、アクセスプライオリティ値は最高である。
[Modification]
Next, a modification of this embodiment will be described. In this modification, an operation state is set in advance for each of the plurality of tasks. In addition to the execution priority value described in the present embodiment, each task has an access priority (Access Priority) value indicating the frequency of access to the
スケジューラ512のグループ決定部514は、各PEが実行するタスクの実行プライオリティ値及びアクセスプライオリティ値から当該PEが属すべきPEグループを決定する。
The
なお、本変形例においては、本実施形態と異なり、便宜的にPEグループ数を3として設定されているものとして説明する。また、本変形例においては、実行プライオリティ値及びアクセスプライオリティ値から直接PEグループを決定するため、本実施形態と異なり、グループ・プライオリティテーブル53は存在しない。 In this modification, unlike the present embodiment, it is assumed that the number of PE groups is set to 3 for convenience. Further, in this modification, since the PE group is directly determined from the execution priority value and the access priority value, the group priority table 53 does not exist unlike the present embodiment.
図15は、本変形例のグループ・帯域テーブル52のデータ構造の一例を示す。図15に示すように、グループ・帯域テーブル52には、PEグループを示すグループ識別情報及びメモリ帯域幅情報が対応付けて保持されている。図15の例では、PEグループ0を示すグループ識別情報「0」に対応付けて保持されているメモリ帯域幅情報によって示されるメモリ帯域幅B0は、「60%」である。また、PEグループ1を示すグループ識別情報「1」に対応付けて保持されているメモリ帯域幅情報によって示されるメモリ帯域幅B1は、「30%」である。また、PEグループ2を示すグループ識別情報「2」に対応付けて保持されているメモリ帯域幅情報によって示されるメモリ帯域幅B2は、「10%」である。
FIG. 15 shows an example of the data structure of the group / band table 52 of this modification. As shown in FIG. 15, the group / bandwidth table 52 holds group identification information and memory bandwidth information indicating PE groups in association with each other. In the example of FIG. 15, the memory bandwidth B0 indicated by the memory bandwidth information held in association with the group identification information “0” indicating the
図16は、本変形例のタスクテーブル54のデータ構造の一例を示す。図16に示すように、タスクテーブル54には、タスク毎に、当該タスクの実行プライオリティ値が及びアクセスプライオリティ値が保持されている。また、タスクテーブル54には、タスク毎に、スケジューラ512によって当該タスクが割り当てられたPEを示すPE識別情報が保持されている。なお、タスクテーブル54に保持されている各タスク及び当該タスクに対応付けられている実行プライオリティ値は、図7に示すタスクテーブル54と同様であるので、その詳しい説明は省略する。また、各タスクは、図7と同様に、各PEに割り当てられたものとする。
FIG. 16 shows an example of the data structure of the task table 54 of this modification. As shown in FIG. 16, the task table 54 holds an execution priority value and an access priority value for each task. The task table 54 holds PE identification information indicating the PE to which the task is assigned by the
図16の例では、タスクA、B、1〜4のアクセスプライオリティ値は0であり、タスクC、5〜10のアクセスプライオリティ値は1である。なお、アクセスプライオリティ値は、1よりも0の方がメモリ30へのアクセス頻度が高いものとする。
In the example of FIG. 16, the access priority values of tasks A, B, and 1 to 4 are 0, and the access priority values of tasks C and 5 to 10 are 1. It is assumed that the access priority value of 0 is higher than 1 and the access frequency to the
また、タスクテーブル54には、タスクの実行プライオリティ値及びアクセスプライオリティ値からPEグループが決定された場合、当該タスク毎に、当該決定されたPEグループを示すグループ識別情報が保持される。なお、実行プライオリティ値及びアクセスプライオリティ値からPEグループを決定する処理の詳細については、後述する。 Further, when the PE group is determined from the task execution priority value and the access priority value, the task table 54 stores group identification information indicating the determined PE group for each task. Details of processing for determining the PE group from the execution priority value and the access priority value will be described later.
次に、図17を参照して、各PEがタスクを実行する際に当該PEが属すべきPEグループを設定する処理手順について説明する。 Next, a processing procedure for setting a PE group to which the PE belongs when each PE executes a task will be described with reference to FIG.
まず、スケジューラ512のグループ決定部514は、PEがタスクを実行する際、タスクテーブル54を参照して、当該タスクに対応付けて保持されている実行プライオリティ値及びアクセスプライオリティ値を取得する(ステップS41)。
First, when the PE executes a task, the
次に、グループ決定部514は、取得された実行プライオリティ値及びアクセスプライオリティ値に基づいて、タスクを実行するPEが属すべきPEグループを決定(算出)する(ステップS42)。
Next, the
ここで、実行プライオリティ値及びアクセスプライオリティ値の組合せからPEグループを決定する処理の具体例について説明する。なお、上記したように、実行プライオリティ値は0が最も優先度が高いものとし、アクセスプライオリティ値は0が最もメモリ30にアクセスする頻度が高いものとする。また、実行プライオリティ値が大きいほど、実行プライオリティ値が低いとし、アクセスプライオリティ値についても同様とする。
Here, a specific example of processing for determining the PE group from the combination of the execution priority value and the access priority value will be described. As described above, it is assumed that the execution priority value is 0 when the priority is highest, and the access priority value is 0 when the frequency of accessing the
以下、タスクに対応付けてタスクテーブル54に保持されている実行プライオリティ値をP、アクセスプライオリティ値をA、実行プライオリティ値の最大値(優先度が最低)をPmax、アクセスプライオリティ値の最大値(アクセス頻度が最低)をAmaxとする。また、決定されるPEグループを示すグループ番号(グループ識別情報)をGまたはG(P、A)と表記する。また、PEグループにおいては、PEグループ番号0によって示されるPEグループが最も広いメモリ帯域幅を有し、PEグループ番号の最大値Gmaxによって示されるPEグループが最も狭いメモリ帯域幅を有するものとする。
Hereinafter, the execution priority value held in the task table 54 in association with the task is P, the access priority value is A, the maximum execution priority value (lowest priority) is Pmax, and the maximum access priority value (access) Let Amax be the lowest frequency. A group number (group identification information) indicating the PE group to be determined is denoted as G or G (P, A). In the PE group, the PE group indicated by the
まず、第1の具体例(加算方式)について説明する。第1の具体例では、PとAに予め定めた係数を乗じた上で加算することによってGを決定することを特徴とする。一般式の例としては、G=αP+βA(α、βは予め定めた正の実数)となる。この式を用いた最も簡単な単純加算方式は、G=P+Aである。 First, a first specific example (addition method) will be described. The first specific example is characterized in that G is determined by multiplying P and A after multiplying them by a predetermined coefficient. As an example of the general formula, G = αP + βA (α and β are positive real numbers determined in advance). The simplest simple addition method using this equation is G = P + A.
具体的には、例えばGmax=2、Pmax=Amax=1(グループ数は3、プライオリティ値の段階数はそれぞれ2)である場合、例えば処理優先度が高く、メモリ30へのアクセス頻度が高いタスクにはP=0、A=0を設定することで、当該タスクを実行するPEが属すべきPEグループのPEグループ番号はG(0、0)=0となり、当該PEは、最も広い帯域幅を有するPEグループ0に割り当てられる。
Specifically, for example, when Gmax = 2 and Pmax = Amax = 1 (the number of groups is 3 and the number of priority value stages is 2), for example, a task with a high processing priority and a high access frequency to the
同様にG(0、1)=1、G(1、0)=1、G(1、1)=2となる。このように、G=0のPEグループに属するPEは、他のPまたはAが低いタスクを実行するPEに帯域を奪われることなく、タスクを実行できる。また、G=2のPEグループに属するPEは、決してG=1のPEグループに属するPEの帯域を妨害することなくタスクを実行する。 Similarly, G (0, 1) = 1, G (1, 0) = 1, and G (1, 1) = 2. In this manner, PEs belonging to the PE group with G = 0 can execute the task without depriving the bandwidth of other PEs that execute tasks with low P or A. The PE belonging to the PE group with G = 2 executes the task without disturbing the bandwidth of the PE belonging to the PE group with G = 1.
また、上記したような単純加算方式は、例えばGmax=4、Pmax=Amax=2(グループ数5、プライオリティ値の段階数はそれぞれ3)のような多階層のグループ分けにも適用できる。 The simple addition method as described above can also be applied to multi-level grouping such as Gmax = 4, Pmax = Amax = 2 (5 groups, each having 3 priority levels).
また、実行プライオリティ値及びアクセスプライオリティ値の段階数が異なる場合、またはグループ数に対して実行プライオリティ値及びアクセスプライオリティ値の段階数が大きい場合等には、例えばG=(P/Pmax+A/Amax)×Gmax/2のような正規化加算方式を用いることで対応することができる。 Further, when the number of stages of the execution priority value and the access priority value is different, or when the number of stages of the execution priority value and the access priority value is larger than the number of groups, for example, G = (P / Pmax + A / Amax) × This can be dealt with by using a normalized addition method such as Gmax / 2.
また、特にシステム要件等によって実行プライオリティ値及びアクセスプライオリティ値に更に重みをつけたい場合には、正規化加算方式のPまたはAに更に重み係数を乗ずる等、適宜対応することができる。 Further, in particular, when it is desired to further weight the execution priority value and the access priority value due to system requirements or the like, it is possible to appropriately cope with such as multiplying the normalized addition method P or A by a weighting factor.
なお、上記したような計算式によって例えばG(P、A)が0未満またはGmaxを超えるような場合には、それぞれ0またはGmaxとする。また、計算式によって例えばG(P、A)が小数部分を含む場合は、当該小数部分を切り捨てるか切り上げるかを適宜決定するものとする。 For example, when G (P, A) is less than 0 or exceeds Gmax according to the above-described calculation formula, it is set to 0 or Gmax, respectively. For example, when G (P, A) includes a decimal part according to a calculation formula, it is determined as appropriate whether the decimal part is rounded down or rounded up.
上記したような加算方式によると、最高の実行プライオリティ値(実行プライオリティ値が0)及びアクセスプライオリティ値が最高(アクセスプライオリティ値が0)のタスクは、当該タスクより低い実行プライオリティ値のタスクを実行するPEには決してメモリ帯域を妨害されずに実行される。また、実行プライオリティ値及びアクセスプライオリティ値のどちらかが最高でないタスクについてはバランスよくメモリ帯域が配分できるという利点がある。 According to the addition method as described above, a task having the highest execution priority value (execution priority value is 0) and the highest access priority value (access priority value is 0) executes a task having an execution priority value lower than that task. The PE is executed without disturbing the memory bandwidth. In addition, there is an advantage that the memory bandwidth can be distributed in a well-balanced manner for a task whose execution priority value or access priority value is not the highest.
次に、第2の具体例(実行プライオリティ分離方式)について説明する。第2の具体例では、Pがより高いタスクを実行するPEほど、Pがより低いタスクを実行するPEに対して必ずメモリ帯域のより広い、もしくは同じPEグループに割り当てられるように、G(P、A)が決定されることを特徴とする。 Next, a second specific example (execution priority separation method) will be described. In the second specific example, G (P) is such that a PE that executes a task with a higher P always has a wider memory bandwidth or is assigned to the same PE group for a PE that executes a task with a lower P. , A) is determined.
具体的には、例えばGmax=3、Pmax=Amax=1(グループ数は4、プライオリティ値の段階数はそれぞれ2)である場合には、G(0、0)=0、G(0、1)=1、G(1、0)=2、G(1、1)=3のように配置する。このような線形な配置を行う場合は計算式でも表現可能であるが、実行プライオリティ分離方式は必ずしも線形式に配置する必要はない。例えばGmax=2、Pmax=Amax=1の場合に、G(0、0)=0、G(0、1)=1、G(1、0)=G(1、1)=2等の配置であっても構わない。 Specifically, for example, when Gmax = 3 and Pmax = Amax = 1 (the number of groups is 4 and the number of priority value stages is 2), G (0, 0) = 0, G (0, 1 ) = 1, G (1, 0) = 2, G (1, 1) = 3. Such a linear arrangement can be expressed by a calculation formula, but the execution priority separation method does not necessarily have to be arranged in a linear form. For example, when Gmax = 2 and Pmax = Amax = 1, an arrangement such as G (0, 0) = 0, G (0, 1) = 1, G (1, 0) = G (1, 1) = 2, etc. It does not matter.
このような実行プライオリティ分離方式によれば、Pを持つタスクの実行が、P+1等のより低い実行プライオリティ値のタスクの実行によってメモリ帯域を妨害されることがないことを保証できる。更に、同じPを持つタスク群を異なるAによって細分化できるため、高いPかつ低いAのタスクが実行される際に、無駄なメモリ帯域が独占されることを軽減できる。 According to such an execution priority separation method, it can be ensured that the execution of a task having P is not disturbed by the execution of a task having a lower execution priority value such as P + 1. Furthermore, since a task group having the same P can be subdivided by different A, it is possible to reduce the use of a useless memory bandwidth when a task with a high P and a low A is executed.
なお、PmaxがGmaxより大きい場合等に、連続するPmaxの値をひとまとめとする方法も実行プライオリティ分離方式の拡張として実装可能である。例えばGmax=2、Pmax=3、Amax=1の場合に、G(0、0)=0、G(0、1)=1、G(1、0)=2、G(1、1)=2、G(2、0)=2、G(2、1)=2と配置すること等が考えられる。 It should be noted that when Pmax is larger than Gmax, a method of grouping consecutive Pmax values together can be implemented as an extension of the execution priority separation method. For example, when Gmax = 2, Pmax = 3, and Amax = 1, G (0, 0) = 0, G (0, 1) = 1, G (1, 0) = 2, G (1, 1) = 2, G (2, 0) = 2, G (2, 1) = 2, etc. can be considered.
なお、上記したいずれの方式においても、同一のPEグループに異なる実行プライオリティ値またはアクセスプライオリティ値のタスクが存在する場合には、実行プライオリティ値またはアクセスプライオリティ値が高い方に長いPE実行時間を与えるという方法を同時に適用するとしても良い。 In any of the above-described methods, when tasks with different execution priority values or access priority values exist in the same PE group, a longer PE execution time is given to the higher execution priority value or access priority value. The methods may be applied simultaneously.
グループ決定部514は、上記したような方式に基づいて、タスクを実行するPEが属すべきPEグループを決定する。なお、決定されたPEグループは、タスク毎に対応付けてタスクテーブル54に登録される。
The
次に、グループ設定部513は、グループ決定部514によって決定されたPEグループのPEグループ番号(グループ識別情報)をPEグループレジスタに設定する(ステップS43)。
Next, the
図18は、PE(0)〜PE(3)が割り当てられた複数のタスクを実時間tで実行する処理の流れを示す。なお、PE(0)〜PE(3)には、上記した図16に示すように複数のタスクが割り当てられている。なお、各タスクの実行時間については、例えば実行プライオリティ値に応じて定められており、上記した図9の説明と同様であるのでその説明は省略する。 FIG. 18 shows a flow of processing for executing a plurality of tasks to which PE (0) to PE (3) are assigned in real time t. A plurality of tasks are assigned to PE (0) to PE (3) as shown in FIG. Note that the execution time of each task is determined in accordance with, for example, the execution priority value and is the same as that described above with reference to FIG.
図19は、図18に示す実時間tがt0のときのPE(0)からPE(3)の各々が属するPEグループ及び当該PE(0)〜PE(3)の各々がメモリ30にアクセスできるメモリ帯域幅の関係を示す。
In FIG. 19, the PE group to which each of PE (0) to PE (3) when the real time t shown in FIG. 18 is t0 and each of the PE (0) to PE (3) can access the
図18の例では、実時間t0のとき、PE(0)は、タスク3を実行しているので、PEグループ1に属している。なお、このPEグループは、上記した図16に示すタスクテーブル54のタスク毎の実行プライオリティ値及びアクセスプライオリティ値から単純加算方式によって決定されたものとする。また、PE(1)は、タスク4を実行しているので、PEグループ1に属している。また、PE(2)は、タスクCを実行しているので、PEグループ1に属している。また、PE(3)は、タスク6を実行しているので、PEグループ2に属している。また、各PEのPEグループレジスタには、各PEが属するPEグループのグループ番号が設定されている。
In the example of FIG. 18, PE (0) belongs to
この場合、図19に示すように、PE(0)〜PE(2)は、グループ番号(識別情報)1に対応付けてグループ・帯域テーブル52に保持されている帯域幅情報によって示されるメモリ帯域幅でメモリ30にアクセスすることが可能となる。また、PE(3)は、グループ番号2に対応付けてグループ・帯域テーブル52に保持されている帯域幅情報によって示されるメモリ帯域幅でメモリ30にアクセスすることが可能となる。つまり、図15に示すグループ・帯域テーブル52の例では、PE(0)〜PE(2)は、メモリ帯域幅30%でメモリ30にアクセスできる。また、PE(3)は、メモリ帯域10%でメモリ30にアクセスできる。
In this case, as shown in FIG. 19, PE (0) to PE (2) are memory bandwidths indicated by the bandwidth information held in the group / band table 52 in association with the group number (identification information) 1. The
図20は、図18に示す実時間tがt1のときのPE(0)〜PE(3)の各々が属するPEグループ及び当該PE(0)〜PE(3)の各々がメモリ30にアクセスできるメモリ帯域幅の関係を示す。なお、各PEが実行するタスクが切り替えられる場合は、上述した本実施形態と同様にして、新タスクを実行する各PEが属するPEグループのPEグループ番号を、当該PEのPEグループレジスタに設定する処理が実行される。
In FIG. 20, the PE group to which each of PE (0) to PE (3) when the real time t shown in FIG. 18 is t1 and each of the PE (0) to PE (3) can access the
図18の例では、実時間t1のとき、PE(0)は、タスクAを実行しているので、PEグループ0に属している。また、PE(1)は、タスクBを実行しているので、PEグループ0に属している。また、PE(2)は、タスクCを実行しているので、PEグループ1に属している。また、PE(3)は、タスク6を実行しているので、PEグループ2に属している。また、各PEのPEグループレジスタには、各PEが属するPEグループのグループ番号が設定されている。
In the example of FIG. 18, PE (0) belongs to
この場合、図20に示すように、PE(0)及びPE(1)は、グループ番号0に対応付けてグループ・帯域テーブル52に保持されている帯域幅情報によって示されるメモリ帯域幅でメモリ30にアクセスすることが可能となる。また、PE(2)は、グループ番号1に対応付けてグループ・帯域テーブル52に保持されている帯域幅情報によって示されるメモリ帯域幅でメモリ30にアクセスすることが可能となる。また、PE(3)は、グループ番号2に対応付けてグループ・帯域テーブル52に保持されている帯域幅情報によって示されるメモリ帯域幅でメモリ30にアクセスすることが可能となる。つまり、図15に示すグループ・帯域テーブル52の例では、PE(0)及びPE(1)は、メモリ帯域幅60%でメモリ30にアクセスできる。また、PE(2)は、メモリ帯域幅30%でメモリ30にアクセスできる。また、PE(3)は、メモリ帯域10%でメモリ30にアクセスできる。
In this case, as shown in FIG. 20, PE (0) and PE (1) are stored in the
上記したように本変形例においては、複数のPE10をグループ化することで、タスクを実行する際に、当該タスクの実行プライオリティ値及びアクセスプライオリティ値に応じて、当該タスクを実行するPEのPEグループレジスタにグループ識別情報(番号)を設定するという簡単な手順で、各PEのメモリ帯域幅を設定することが可能となる。
As described above, in this modification, when a task is executed by grouping a plurality of
また、前述した本実施形態では、実行プライオリティ値のみに基づいてPEグループを決定するため、実行プライオリティ値が高いがメモリ30にアクセスする頻度があまり高くないタスクを実行するPEと、実行プライオリティ値が高くメモリ30にアクセスする頻度が高いタスクを実行するPEとが同一のPEグループに属することがあるため、かえって実行時間が長くなる場合が考えられる。しかしながら、本変形例では、実行プライオリティ値及びアクセスプライオリティ値に基づいてPEグループを決定するため、実行プライオリティ値及びアクセスプライオリティ値が共に高いタスクを実行するPEは、実行プライオリティ値は他界がアクセスプライオリティ値は低いタスクを実行するPEと異なるPEグループに属する。これにより、上記したような本実施形態において発生し得る非効率な状態を回避することができる。
In the above-described embodiment, since the PE group is determined based on only the execution priority value, the PE that executes a task that has a high execution priority value but does not access the
なお、前述した本実施形態では、各タスクの実行プライオリティ値のみを用いて当該タスクを実行するPEが属すべきPEグループを決定する構成を説明したが、同様に、本変形例で説明した各タスクのアクセスプライオリティ値のみを用いて当該タスクを実行するPEが属すべきPEグループを決定する構成としても構わない。この場合では、前述したグループ・プライオリティテーブル53にアクセスプライオリティ値及びグループ識別情報が保持される構成とすると良い。 In the above-described embodiment, the configuration for determining the PE group to which the PE executing the task belongs using only the execution priority value of each task has been described. Similarly, each task described in the present modification is described. The PE group to which the PE executing the task should belong may be determined using only the access priority value. In this case, the access priority value and the group identification information may be held in the group priority table 53 described above.
また、本願発明は、上記実施形態または変形例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態または変形例に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、実施形態または変形例に亘る構成要素を適宜組合せてもよい。 The present invention is not limited to the above-described embodiment or modification as it is, and can be embodied by modifying the constituent elements without departing from the spirit of the invention in the implementation stage. In addition, various inventions can be formed by appropriately combining a plurality of constituent elements disclosed in the embodiment or the modification. For example, some components may be deleted from all the components shown in the embodiment. Furthermore, you may combine suitably the component covering embodiment or a modification.
10…複数のPE(プロセッサ要素)、20…メモリコントローラ、21…帯域制御部、30…メモリ、40…I/Oコントローラ、50…外部記憶装置、51…OS(オペレーティングシステム)、52…グループ・帯域テーブル、53…グループ・プライオリティテーブル、54…タスクテーブル、511…帯域設定部、512…スケジューラ、513…グループ設定部、514…グループ決定部。
DESCRIPTION OF
Claims (5)
前記1つのプロセッサ要素に、
前記複数のプロセッサ要素の各々が属するプロセッサ要素グループ毎のメモリ帯域幅を、前記メモリコントローラに設定するステップと、
実行されるべきタスクが発生した際に、当該発生されたタスクを実行させるために、当該タスクを前記複数のプロセッサ要素のうちの1つに割り当てるステップと、
前記割り当てられたプロセッサ要素に前記発生されたタスクを実行させる際に、当該発生されたタスクの動作条件または動作状態に応じて、当該割り当てられたプロセッサ要素が属すべきプロセッサ要素グループを決定するステップと、
前記決定されたプロセッサ要素グループに属すべき前記割り当てられたプロセッサ要素に、前記メモリコントローラに設定された当該プロセッサ要素グループのメモリ帯域幅で前記発生されたタスクを実行させるステップと
を実行させることを特徴とする帯域制御プログラム。 In a multiprocessor system comprising a plurality of processor elements, a memory, and a memory controller that limits a memory bandwidth in which each of the plurality of processor elements can access the memory, at least of the plurality of processor elements A bandwidth control program executed by one processor element,
In the one processor element,
Setting a memory bandwidth for each processor element group to which each of the plurality of processor elements belongs to the memory controller;
Assigning the task to one of the plurality of processor elements to cause the generated task to be executed when a task to be executed occurs;
Determining a processor element group to which the assigned processor element should belong, in accordance with an operating condition or an operating state of the generated task, when causing the assigned processor element to execute the generated task; ,
Causing the assigned processor element to belong to the determined processor element group to execute the generated task with the memory bandwidth of the processor element group set in the memory controller. Bandwidth control program.
前記実行されるべきタスクが発生した際に、予め定められている当該発生されたタスクが実行される優先度を示す実行プライオリティ値を当該タスクの動作条件として当該タスクに対応付けてタスク保持手段に保持するステップを前記1つのプロセッサ要素に更に実行させ、
前記決定するステップは、
前記割り当てられたプロセッサ要素が前記発生されたタスクを実行する際に、当該発生されたタスクに対応付けて前記タスク保持手段に保持されている実行プライオリティ値を取得するステップと、
取得された実行プライオリティ値に対応付けて前記グループ・プライオリティ保持手段に保持されているグループ識別情報によって示されるプロセッサ要素グループを、当該割り当てられたプロセッサ要素が属すべきプロセッサ要素グループとして決定するステップとを含む
ことを特徴とする請求項1記載の帯域制御プログラム。 The multiprocessor system corresponds to an execution priority value indicating a priority at which each of a plurality of tasks generated in the multiprocessor system is executed and the group identification information indicating a processor element group to which the processor element executing the task belongs. Group priority holding means to hold in advance,
When a task to be executed is generated, a predetermined execution priority value indicating the priority of execution of the generated task is associated with the task as an operation condition of the task and stored in the task holding unit. Further causing the one processor element to perform a holding step;
The determining step includes:
Obtaining an execution priority value held in the task holding means in association with the generated task when the assigned processor element executes the generated task;
Determining a processor element group indicated by the group identification information held in the group priority holding means in association with the acquired execution priority value as a processor element group to which the assigned processor element belongs. The bandwidth control program according to claim 1, further comprising:
前記実行されるべきタスクが発生した際に、予め定められている当該発生されたタスクが実行される際の前記メモリへのアクセスの頻度を示すアクセスプライオリティ値を当該タスクの動作状態として当該タスクに対応付けてタスク保持手段に保持するステップを前記1つのプロセッサ要素に更に実行させ、
前記決定するステップは、
前記割り当てられたプロセッサ要素が前記発生されたタスクを実行する際に、当該発生されたタスクに対応付けて前記タスク保持手段に保持されているアクセスプライオリティ値を取得するステップと、
前記取得されたアクセスプライオリティ値に対応付けて前記グループ・プライオリティ保持手段に保持されているグループ識別情報によって示されるプロセッサ要素グループを、当該割り当てられたプロセッサ要素が属すべきプロセッサ要素グループとして決定するステップとを含む
ことを特徴とする請求項1記載の帯域制御プログラム。 The multiprocessor system includes an access priority value indicating a frequency of access to the memory when each of a plurality of tasks generated in the multiprocessor system is executed, and a processor element group to which a processor element executing the task belongs. Group priority holding means for previously holding the group identification information in association with each other,
When the task to be executed occurs, a predetermined access priority value indicating the frequency of access to the memory when the generated task is executed is set as the task operating state in the task. Causing the one processor element to further execute a step of associating and holding the task in the task holding unit;
The determining step includes:
Obtaining an access priority value held in the task holding means in association with the generated task when the assigned processor element executes the generated task;
Determining a processor element group indicated by group identification information held in the group priority holding means in association with the acquired access priority value as a processor element group to which the assigned processor element should belong; The bandwidth control program according to claim 1, comprising:
前記決定するステップにおいて、前記割り当てられたプロセッサ要素が前記発生されたタスクを実行する際に、当該発生されたタスクに対応付けて前記タスク保持手段に保持されている実行プライオリティ値及びアクセスプライオリティ値に基づいて、前記割り当てられたプロセッサ要素が属すべきプロセッサ要素グループを決定する
ことを特徴とする請求項1記載の帯域制御プログラム。 When the task to be executed occurs, a predetermined execution priority value indicating the priority of the generated task to be executed and the predetermined memory to the memory when the predetermined task is executed Causing the one processor element to further execute a step of holding an access priority value indicating an access frequency in a task holding unit in association with the task,
In the determining step, when the assigned processor element executes the generated task, the execution priority value and the access priority value held in the task holding unit in association with the generated task are set. The bandwidth control program according to claim 1, wherein a processor element group to which the allocated processor element should belong is determined based on.
前記複数のプロセッサ要素の各々によってアクセスされるメモリと、
前記複数のプロセッサ要素の各々が前記メモリにアクセス可能なメモリ帯域幅を制限するメモリコントローラと、
前記複数のプロセッサ要素の各々が属するプロセッサ要素グループ毎のメモリ帯域幅を、前記メモリコントローラに設定する設定手段と、
実行されるべきタスクが発生した際に、当該発生されたタスクを実行させるために、当該タスクを前記複数のプロセッサ要素のうちの1つに割り当てる割当手段と、
前記割当手段によって前記発生されたタスクが割り当てられたプロセッサ要素に前記発生されたタスクを実行させる際に、当該発生されたタスクの動作条件または動作状態に応じて、当該割り当てられたプロセッサ要素が属すべきプロセッサ要素グループを決定する決定手段と、
前記決定手段によって決定されたプロセッサ要素グループに属すべき前記割り当てられたプロセッサ要素に、前記設定手段によって前記メモリコントローラに設定された当該プロセッサ要素グループのメモリ帯域幅で前記発生されたタスクを実行させる実行手段と
を具備することを特徴とするマルチプロセッサシステム。 Multiple processor elements;
Memory accessed by each of the plurality of processor elements;
A memory controller that limits a memory bandwidth at which each of the plurality of processor elements can access the memory;
Setting means for setting, in the memory controller, a memory bandwidth for each processor element group to which each of the plurality of processor elements belongs;
Assigning means for assigning the task to one of the plurality of processor elements in order to cause the generated task to be executed when a task to be executed occurs;
When causing the processor element to which the generated task is assigned by the assigning means to execute the generated task, the assigned processor element belongs according to an operation condition or an operation state of the generated task. A determination means for determining a processor element group to be
Execution for causing the assigned processor element to belong to the processor element group determined by the determining means to execute the generated task with the memory bandwidth of the processor element group set in the memory controller by the setting means. And a multiprocessor system.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006344849A JP4409568B2 (en) | 2006-12-21 | 2006-12-21 | Band control program and multiprocessor system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006344849A JP4409568B2 (en) | 2006-12-21 | 2006-12-21 | Band control program and multiprocessor system |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2008158687A JP2008158687A (en) | 2008-07-10 |
JP4409568B2 true JP4409568B2 (en) | 2010-02-03 |
Family
ID=39659537
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006344849A Expired - Fee Related JP4409568B2 (en) | 2006-12-21 | 2006-12-21 | Band control program and multiprocessor system |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4409568B2 (en) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011114533A1 (en) * | 2010-03-19 | 2011-09-22 | 富士通株式会社 | Multi-core processor system, control program, and control method |
JP5429363B2 (en) * | 2010-03-25 | 2014-02-26 | 富士通株式会社 | Multi-core processor system, control program, and control method |
JP5692381B2 (en) * | 2011-07-13 | 2015-04-01 | 富士通株式会社 | Multi-core processor system and control method |
JP5713091B2 (en) * | 2013-12-05 | 2015-05-07 | 富士通株式会社 | Multi-core processor system, control method, and control program |
CN116414723A (en) * | 2021-12-30 | 2023-07-11 | 中兴通讯股份有限公司 | Memory bandwidth control method and device, electronic equipment and storage medium |
-
2006
- 2006-12-21 JP JP2006344849A patent/JP4409568B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2008158687A (en) | 2008-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190324819A1 (en) | Distributed-system task assignment method and apparatus | |
JP5040773B2 (en) | Memory buffer allocation device and program | |
US7467385B2 (en) | Interrupt and exception handling for multi-streaming digital processors | |
JP6246603B2 (en) | Task scheduler mechanism, operating system, and multiprocessor system | |
JP5354108B2 (en) | Information processing program, information processing apparatus, and information processing method | |
JP5841142B2 (en) | System and method for allocating parts of a shared stack | |
JP4185103B2 (en) | System and method for scheduling executable programs | |
US20110320680A1 (en) | Method and Apparatus for Efficient Memory Bank Utilization in Multi-Threaded Packet Processors | |
US10545892B2 (en) | Multi-thread processor and its interrupt processing method | |
US20150121388A1 (en) | Task scheduling method for dispatching tasks based on computing power of different processor cores in heterogeneous multi-core processor system and related non-transitory computer readable medium | |
US20150121387A1 (en) | Task scheduling method for dispatching tasks based on computing power of different processor cores in heterogeneous multi-core system and related non-transitory computer readable medium | |
JP2009110404A (en) | Virtual machine system and guest os scheduling method in the same system | |
JP7109549B2 (en) | Scheduling memory bandwidth based on service floor quality | |
JP4409568B2 (en) | Band control program and multiprocessor system | |
JP2010044784A (en) | Scheduling request in system | |
KR101392584B1 (en) | Apparatus for dynamic data processing using resource monitoring and method thereof | |
US8589942B2 (en) | Non-real time thread scheduling | |
JP2007316710A (en) | Multiprocessor system, workload management method | |
CN110795323A (en) | Load statistical method, device, storage medium and electronic equipment | |
JP2019021185A (en) | Information processing device, information processing system, information processing device control method and information processing device control program | |
JP2012181578A (en) | Update control device and program | |
US9170839B2 (en) | Method for job scheduling with prediction of upcoming job combinations | |
JPWO2011118424A1 (en) | Machine operation plan creation device, machine operation plan creation method, and machine operation plan creation program | |
WO2020213397A1 (en) | Processor and register inheritance method | |
JP2009211649A (en) | Cache system, control method thereof, and program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090708 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090714 |
|
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: 20091020 |
|
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: 20091111 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121120 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131120 Year of fee payment: 4 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |