JP2007041771A - プロセススケジューリングシステム、プロセススケジューリング方法およびプログラム - Google Patents

プロセススケジューリングシステム、プロセススケジューリング方法およびプログラム Download PDF

Info

Publication number
JP2007041771A
JP2007041771A JP2005223982A JP2005223982A JP2007041771A JP 2007041771 A JP2007041771 A JP 2007041771A JP 2005223982 A JP2005223982 A JP 2005223982A JP 2005223982 A JP2005223982 A JP 2005223982A JP 2007041771 A JP2007041771 A JP 2007041771A
Authority
JP
Japan
Prior art keywords
bus
memory
interrupt
usage rate
unit
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.)
Pending
Application number
JP2005223982A
Other languages
English (en)
Inventor
Wataru Ogoshi
渉 大越
Kosaku Shibata
耕作 柴田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2005223982A priority Critical patent/JP2007041771A/ja
Publication of JP2007041771A publication Critical patent/JP2007041771A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Memory System (AREA)

Abstract

【課題】 バスにCPUとメモリが接続されたシステムにおいて、局所的にバスバンド幅が必要となる場合が発生し、バスバンド幅の使用効率に偏りが出る。
【解決手段】 メモリスケジューラ200において、メモリアクセス集計部203がメモリアクセスコマンドからプロセスID毎のバス使用率を集計し、バス使用率比較部205がメモリアクセス集計部203の集計結果と閾値設定部204に設定された閾値とを比較する。この比較結果に応じて、メモリスケジューラ200はプロセススケジューラ100に割り込みをかける。プロセススケジューリング変更部102は、メモリスケジューラ200からの割り込みを受け、CPUコア11のプロセススケジューリング条件を、プロセスの優先度からプロセスのバス使用率に変更する。
【選択図】 図1

Description

本発明は、システムLSIなど機器組み込み分野に関し、特にオペレーティングシステムを搭載したCPUとメモリとがバスに接続されたシステム構成における、CPUのプロセススケジューリングに関するものである。
一般に、機器組み込み分野に関し、CPUを含む複数のバスマスタと、バススレーブとなるメモリとがバスに接続されるシステムLSIの構成において、バスバンド幅は、システムのバスビット幅、バスクロックなどによって一意に決まってしまう。このため、バスを効率良く使用することは、システム全体の処理性能を最適化する意味で非常に重要となる。
従来のオペレーティングシステムを搭載したCPUにおける各プロセスの実行方法は、次のようなものである。すなわち、オペレーティングシステムカーネル内にプロセススケジューラが設けられており、プロセス毎に実行優先度を持ち、プロセススケジューラはその実行優先度の高いプロセスから順にCPUに割り当てる。
図18はオペレーティングシステムを搭載したCPUを含むプロセススケジューリング装置の従来例である。図18において、少なくとも1つ以上のCPUブロック60a,60b,…,60nがバス1に接続され、それぞれバスマスタとなっている。また、メモリブロック70がバス1に接続され、バススレーブとなっている。
CPUブロック60aは(CPUブロック60b,60nも同様)、CPU61と、LMC(Local Memory Controller)63と、BCU(Bus Control Unit)64とを備えており、CPU61はプロセススケジューラ62を備え、BCU64はメモリアクセスコマンド生成部65を備える。プロセススケジューラ62は実行優先度が最も高いプロセスを選択し、CPU61で実行させる。またCPUブロック60aはキャッシュを搭載するものとし、LMC63がそのアクセス制御を行う。キャッシュアクセスの際にキャッシュミスが発生した場合などにおいて、リフィル処理を行うために、BCU64にメモリアクセス要求を発生させる。BCU64において、メモリアクセス生成部65はメモリブロック70にメモリアクセス要求を出すためにメモリアクセスコマンドを生成し、バス1を介してメモリブロック70に発行する。
また、メモリブロック70はメモリスケジューラ71とメモリ72とを備えている。メモリスケジューラ71は各バスマスタで生成されたメモリアクセスコマンドを受け取り、各バスマスタに設定されているバスバンド幅に応じて、メモリアクセスコマンドを調停しながらメモリ72へのアクセスを制御する。
図19は従来のプロセススケジューリング方法の典型的な例である。図19において、優先度によるプロセス選択ステップS101では、READY状態であるプロセスの中から最も優先度の高いプロセスを選択する。また、選択プロセスのCPU割り当てステップS102では、ステップS101で選択されたプロセスをCPUで実行するためにコンテキストスイッチを行い、CPUに割り当てる処理を行う。
また、特許文献1では、複数CPUを有する計算機または計算機クラスタシステムにおいて、プロセス毎の動作特性を測定し、その動作特性測定値に基づきプロセススケジューリングを行うことによって、処理性能を向上させる方法が開示されている。この方法ではプロセス毎の動作特性としてメモリアクセス量を測定し、メモリアクセス量が大きいプロセスをキャッシュ容量が大きいCPUなど処理量が大きいCPUに割り当てる。
特開2003−6175号公報(頁13、図1)
しかし、上述した図18の装置や図19の方法では、バス使用の際にプロセス毎のメモリアクセスを考慮していないため、プロセスの動作特性に依存してバス使用率が局所化する恐れがあり、バス使用効率が悪くなるといった問題がある。
また、特許文献1のような、プロセス毎に動作特性を測定し、バス使用率の測定値が大きなプロセスを処理量が最も大きいCPUに割り当てる方法でも、同様に、局所的にバスを占有してしまうことによって自身の将来のバス使用効率を落としてしまう、といった問題や、他マスタのメモリアクセスに対してもアクセス負荷を大きくしてしまう、といった問題があった。
前記の問題に鑑み、本発明は、局所的なメモリアクセスを発生させることなく、平均的なメモリアクセスを発生させることにより、CPU自身に割り当てられたバスバンド幅と全体のバスバンド幅のバス使用効率を向上させることを課題とする。
本発明に係るプロセススケジューリングシステムは、バスと、オペレーティングシステムを搭載したCPUコアを有し、前記バスに接続されているバスマスタとしての1つまたは複数のCPUブロックと、前記バスに接続されているバススレーブとしてメモリブロックとを備え、前記CPUコアは、実行すべきプロセスを決定するプロセススケジューラを備え、前記メモリブロックは、バスマスタの設定バンド幅を設定するとともに、バスマスタからのメモリアクセスコマンドを制御するメモリスケジューラを備え、前記プロセススケジューラは、前記CPUコアで実行されているプロセスを示すプロセスIDを、前記メモリスケジューラに設定するプロセスID設定部と、前記CPUコアのプロセススケジューリング条件を変更する機能を有するプロセススケジューリング変更部とを備えたものであり、前記メモリスケジューラは、前記メモリアクセスコマンドから前記プロセスID毎のバス使用率を集計するメモリアクセス集計部と、前記バス使用率に対して少なくとも1つ以上の閾値を設定する閾値設定部と、前記閾値と前記メモリアクセス集計部の集計結果とを比較するバス使用率比較部とを備え、前記バス使用率比較部の比較結果に応じて、前記プロセススケジューラに割り込みをかけるものであり、前記プロセススケジューリング変更部は、前記メモリスケジューラからの割り込みを受け、前記CPUコアに割り込みを発生させ、前記CPUコアのプロセススケジューリング条件を、プロセスの優先度からプロセスのバス使用率に変更するものである。
この構成によれば、メモリスケジューラでバス使用率を集計することが可能となり、その集計結果を用いてプロセススケジューリング方法を変更することが可能となる。また、メモリスケジューラで全てのバスマスタの使用率を集計可能なため、各バスマスタ毎にバス使用率を集計することなく各バスマスタのプロセス単位のバス使用率を一元的に集計することが可能となる。
また、本発明に係るプロセススケジューリング方法は、前記本発明に係るプロセススケジューリングシステムにおいて、割り込みがあったとき、前記メモリスケジューラからの割り込みであるか否かを判定するステップと、前記割り込みが前記メモリスケジューラからの割り込みと判定したとき、READY状態のプロセスの中から、前記メモリアクセス集計部において集計されたバス使用率が最も低いプロセスを選択するステップと、選択したプロセスを、前記CPUコアに割り当てて実行するステップとを備えたものである。
この構成によれば、バス使用率が局所的に大きくなった場合にバス使用率の小さなプロセスを選択して、実行することが可能となり、バスの使用効率を平均化することが可能となる。
また、前記本発明に係るプロセススケジューリングシステムにおけるメモリアクセス集計部は、バス使用率を、バスマスタ単位と、システム全体とに分けて集計するものであるのが好ましい。
この構成によれば、システム全体のバス使用率またはバスマスタ単位のバス使用率から割り込みを発生させることが可能となり、プロセススケジューラでスケジューリング条件を変更することが可能となる。システム全体からの割り込みによりスケジューリング変更することでシステムバス幅としての局所的なアクセスを抑えることが可能となり、またバスマスタ単位で割り込みが発生することにより、バスの局所的なアクセスをバスマスタ単位で抑えることが可能となる。
また、前記本発明に係るプロセススケジューリングシステムにおいて、前記CPUコアは、メモリモードフラグと、前記メモリモードフラグの値を設定する機能を有するメモリモード変更部とを備え、前記メモリスケジューラは、前記閾値設定部が、バス使用率に対して上限閾値と下限閾値とを設定し、バス使用率が前記上限閾値を越えた場合と、バス使用率が前記下限閾値を下回った場合とにおいて、それぞれを割り込み要因として、前記プロセススケジューラに割り込みをかけるものであり、前記メモリモード変更部は、前記メモリスケジューラから割り込みを受けたとき、当該割り込み要因に応じて、前記メモリモードフラグの値を設定するものであり、前記プロセススケジューリング変更部は、前記CPUコアのプロセススケジューリング条件を、前記メモリモードフラグの値に応じて、変更するものであるのが好ましい。
この構成によれば、バス使用状況をより詳細に把握することが可能となり、上限、下限の閾値による割り込みから、メモリモードフラグを設定することにより、プロセススケジューリング条件をより柔軟に変更することが可能となる。
また、本発明に係るプロセススケジューリング方法は、前記プロセススケジューリングシステムにおいて、割り込みがあったとき、前記メモリスケジューラからの割り込みであるか否かを判定するステップと、前記割り込みが前記メモリスケジューラからの割り込みと判定したとき、割り込み要因を読み込むステップと、前記割り込み要因が、バス使用率が前記上限閾値を越えた場合であるとき、前記メモリモードフラグに第1の所定値を設定する一方、バス使用率が前記下限閾値を下回った場合であるとき、前記メモリフラグに前記第1の所定値と異なる第2の所定値を設定するステップと、前記メモリモードフラグを参照し、前記メモリモードフラグに前記第1の所定値が設定されているとき、READY状態のプロセスの中から、前記メモリアクセス集計部において集計されたバス使用率が最も低いプロセスを選択するステップと、選択したプロセスを、前記CPUコアに割り当てて実行するステップとを備えたものである。
この構成によれば、バス使用率の状況に応じて、上限閾値を越えた場合はバス使用率の低いプロセス、下限閾値を越えた場合は優先度の高いプロセスをプロセススケジューリングすることが可能となる。
そして、前記本発明に係るプロセススケジューリング方法において、前記メモリモードフラグに前記第2の所定値が設定されているとき、READY状態のプロセスの中から、非リアルタイムプロセスを選択するステップと、選択した非リアルタイムプロセスを、前記CPUコアに割り当てて実行するステップとを備えたものとするのが好ましい。
この構成によれば、バス使用率が下限閾値を下回り、バスを有効に使用できる場合に非リアルタイム性プロセスを実行することが可能となり、将来のリアルタイム性プロセスの実行を妨げることなく、バス使用率を平均化することが可能となる。
また、前記本発明に係るプロセススケジューリングシステムにおけるメモリスケジューラは、各バスマスタに対して、割り込みを許可するか否かを指定する割り込み許可指定部を備え、前記バス使用率比較部は、前記割り込み許可指定部で割り込みが許可されたバスマスタのみを比較対象とするものであるのが好ましい。
この構成によれば、割り込みを発生させるか否かを前もって設定することが可能となり、バス使用率の集計が十分でない場合や、割り込み機能を持たないバスマスタの場合や、システムの起動時の場合などに不要な割り込みを発生することなく、プロセススケジューリングを実行可能となる
また、前記本発明に係るプロセススケジューリングシステムにおいて、前記CPUブロックを複数備えており、前記メモリスケジューラは、前記バス使用率比較部の比較結果を基にして、前記複数のCPUブロックの中から、割り込みをかけるCPUブロックを選択指定する機能を有する割り込み対象指定部を備えたものであるのが好ましい。
この構成によれば、システム全体のバス使用状況からシステム内でバスバンド幅に大きな負荷を与えているバスマスタに対してプロセススケジューリング条件を変更することが可能となり、システム全体のマスタ毎の役割を考慮して割り込みを発生させることが可能となる。
本発明によれば、バスバンド幅を局所的に使用することなく、平均的に使用することが可能となり、バスマスタ自身に割り当てられたバスバンド幅とシステム全体のバスバンド幅の使用効率を向上させることが可能となる。これによりシステム全体の性能に関する最適化を行うことが可能となる。
以下、本発明の実施の形態について、図面を参照して説明する。
本発明の一実施形態に係るプロセススケジューリングシステムは、バスと、このバスに接続されており、オペレーティングシステムを搭載したバスマスタとなる少なくとも1つ以上のCPUと、バススレーブとなるメモリとを備えており、メモリスケジューラによってバスバンド幅がスケジューリングされる構成を備えたものとする。
図1は本発明の一実施形態に係るプロセススケジューリングシステムの概略構成を示すブロック図である。このシステムでは、バス1にCPUブロック10とメモリブロック20とが接続されている。CPUブロック10はバスマスタの1つであり、それ以外のバスマスタは図示を省略している。
<CPUブロック>
CPUブロック10は大きくCPUコア11、LMC12およびBCU13から構成されている。CPUコア11ではオペレーティングシステムが動作し、オペレーティングシステムはどのプロセスを実行するかを決定するプロセススケジューラ100を備えている。また、プロセススケジューラ100は、CPUコア11に割り当てられ実行されるプロセスを示すプロセスIDをメモリブロック20に設定するプロセスID設定部101と、メモリブロック20からの割り込みによりプロセスのスケジューリングを変更するプロセススケジューリング変更部102とを備えている。プロセスIDは、CPUコア11で実行されるプロセスが切り替わるタイミングで1回のみ、メモリブロック20に設定される。
LMC12はローカルメモリの制御を行い、キャッシュを搭載している。キャッシュミスなどが発生した場合はリフィル処理を行うために、メモリブロック20へのメモリアクセスコマンドを発生させるようBCU13に対して要求を出す。BCU13はLMC12からのメモリアクセス要求に従い、メモリアクセスコマンド生成部14によりメモリブロック20に対するメモリアクセスコマンドを生成する。通常、メモリアクセスコマンドには、バスマスタを識別するシステム固有のバスマスタ番号と、アクセス種別(リード/ライト)、アクセスアドレス、ライトデータ、バースト数などの情報が含まれる。
<メモリブロック>
メモリブロック20はバススレーブとしてバス1に接続されている。メモリブロック20はメモリスケジューラ200とメモリ21を備えている。またここでは、メモリブロック20のバス幅は32ビットで、1回のメモリアクセスコマンドによって64バイト転送が可能であり、バスクロックは100MHzとして、説明を行う。
メモリスケジューラ200は、バンド幅設定部201、プロセスID保存部202、メモリアクセス集計部203、閾値設定部204、およびバス使用率比較部205を備えている。メモリスケジューラ200はメモリ21へのバスマスタからのメモリアクセスを調停する役割がある。バンド幅設定部201において、各バスマスタの指定バスバンド幅をレジスタなどに設定することによって、各バスマスタのメモリアクセスを設定バスバンド幅に応じたものにすることが可能となる。
図2に示すバンド幅設定レジスタ31は、バスマスタに対して使用可能なバスバンド幅を設定するものである。具体的には、サイクル数CY1とリクエスト回数RQ1が設定されており、サイクル数CY1の範囲においてリクエスト回数RQ1のリクエストを受け付ける、という形でバスバンド幅を設定する。複数のバスマスタが存在する場合は、それぞれのバスマスタに対して、サイクル数CY1とリクエスト回数RQ1を設定するものとする。バンド幅設定レジスタ31は、バンド幅設定部201内に設けられている。
プロセスID保存部202はCPUブロック10において実行されているプロセスIDを保存するためのものである。このプロセスIDはメモリアクセス集計部203においてプロセスID毎のバスバンド幅を集計する際に用いられる。
メモリアクセス集計部203はプロセスID保存部202の内容を参照し、各バスマスタのプロセス単位のメモリアクセス回数をカウントする。ある指定サイクル数の中で、何回リクエストが発生するかによって、そのプロセスの使用バスバンド幅(すなわち、バス使用率)を求めることができる。すなわち、使用バスバンド幅は、
(アクセス回数×転送バイト数×バスクロック)/サイクル数
で求めることができる。例えば、100サイクル中に2回のメモリアクセスが発生したとき、その使用バスバンド幅は
(2×64×100)/100=128MByte/sec
となる。使用バスバンド幅を求める際のサイクル数は、レジスタ設定などにより、適時変更できるものとする。また、システムの局所的なバス使用率が問題となるようなサイクル数を考慮して、決定するものとする。
図2の実行バンド幅レジスタ32では、バスマスタ識別子MI1とプロセスID毎の使用バンド幅BW1が設定されている。バスマスタ識別子MI1はバスマスタそれぞれに対して付与されるシステム固有の識別子である。プロセスID毎の使用バンド幅BW1としては、上述の使用バスバンド幅の計算式から求めた値が設定される。実行バンド幅レジスタ32は、メモリアクセス集計部203内に設けられている。
閾値設定部204はバスマスタ単位に設定されたバスバンド幅に対し、メモリアクセス集計部203で集計したバス使用率がどの程度になった場合にCPUブロック10に対して、割り込みをかけるかの閾値を指定するためのものである。
図2のバスバンド幅閾値設定レジスタ33では、割り込みを発生させる閾値が設定されている。具体的には、サイクル数CY2とリクエスト回数RQ2が設定されており、サイクル数CY2の範囲でリクエスト回数RQ2のリクエストを受け付ける、という形によってバスバンド幅閾値を設定する。バンド幅閾値設定レジスタ33は、閾値設定部204内に設けられている。
バス使用率比較部205は閾値設定部204で設定されたバスマスタ毎の特定の閾値とメモリアクセス集計部203で集計された現在のバス使用率とを比較する。比較した結果、バス使用率が閾値を越えた場合は、メモリスケジューラ200はCPUブロック10に対して割り込みをかける。比較するタイミングは、レジスタ設定などにより、適時変更できるものとする。また、システムの局所的なバス使用率が問題となるようなサイクル数を考慮して、決定するのが好ましい。
図3は本実施形態に係るプロセススケジューリングシステムの他の構成例である。図3において、図1と共通の構成要素には図1と同一の符号を付しており、詳細な説明は省略する。図3において、メモリブロック20Aは、メモリスケジューラ200Aの内部構成が図1と異なっている。すなわち、メモリスケジューラ200Aは、図1に示された各構成要素に加えて、システム全体のバスバンド幅を設定する全体バンド幅設定部206と、システム全体のバスバンド幅に対して閾値を設定する全体閾値設定部207とを備えている。これに対して、バンド幅設定部201はバスマスタ単位のバンド幅を設定するものであり、閾値設定部204は各バスマスタのバスバンド幅に対して閾値を設定する。
図3の構成では、各バスマスタのバンド幅使用率が閾値を越えた場合は該当するバスマスタに対して割り込みが発生し、システム全体のバンド幅使用率が閾値を越えた場合は、メモリアクセス集計部203で集計されたバンド幅単位のバス使用率から、バス使用率が最も高いバスマスタに対して割り込みが発生する。
図4において、全体バンド幅設定レジスタ41は、システム全体で使用可能なバスバンド幅を、サイクル数CY8およびリクエスト回数RQ8によって、全体バスバンド幅として設定する。これは上記の例では、バス幅は32ビット、バスクロックは100MHzであるので、400MByte/secとなる。また、全体実行バンド幅レジスタ42は、メモリアクセス集計部203で求めた各バスマスタのバス使用率を合計したシステム全体のバス使用率を、全体バス使用バンド幅BW3として設定する。また、全体バンド幅閾値設定レジスタ43は割り込みを発生させる閾値を設定するためのものである。具体的には、サイクル数CY3とリクエスト回数RQ3を設定し、サイクル数CY3の範囲でリクエスト回数RQ3のリクエストを受け付ける、という形でバスバンド幅閾値を設定する。全体バンド幅設定レジスタ41は全体バンド幅設定部206内に設けられ、全体実行バンド幅レジスタ42はメモリアクセス集計部203内に設けられ、全体バンド幅閾値設定レジスタ43は全体閾値設定部207内に設けられている。
この構成によると、プロセス単位とバス幅全体とに対してそれぞれ閾値を設定し、それぞれの閾値を越えた場合に割り込みを発生させることが可能となる。各バスマスタそれぞれに対して閾値を設定することによってバス効率をより柔軟に平均化させることが可能となり、バス幅全体に対して閾値を設定することによってバス幅全体の急激な使用を抑えることが可能となる。
図5は本実施形態に係るプロセススケジューリングシステムの他の構成例である。図5において、図1および図3と共通の構成要素には図1および図3と同一の符号を付しており、詳細な説明は省略する。
図5において、まず、CPUブロック10Aは、CPUコア11Aの内部構成が図1と異なっている。すなわち、CPUブロック10Aは、プロセススケジューラ100に加えて、メモリモードフラグ103および、メモリモードフラグ103の値を設定する機能を有するメモリモード設定部104を備えている。
また、メモリブロック20Bは、メモリスケジューラ200Bの内部構成が図3の構成と異なっている。すなわち、メモリスケジューラ200Bは、閾値設定部204に代えて、バスマスタ単位のバス使用率に対する上限下限の閾値を設定する上限下限閾値設定部204Aを備えているとともに、全体閾値設定部207に代えて、システム全体のバス使用率に対する上限下限の閾値を設定する上限下限全体閾値設定部207Aを備えている。ここで、上限閾値としては、バンド幅設定部201で設定されたバスバンド幅に対して、局所的なバスアクセスが起こらないような値を設定するのが好ましく、下限閾値としては、バンド幅設定部201で設定されたバスバンド幅に対して、バス使用率がゼロに近く、ほとんど使用されていないことを表すような値を設定するのが好ましい。
図6は上述した上限下限の閾値を設定するレジスタを示す図である。図6において、マスタ上限閾値設定レジスタ51およびマスタ下限閾値設定レジスタ52は、図2のバンド幅設定レジスタ31に対してそれぞれ上限と下限の閾値を設定する。また、全体上限閾値設定レジスタ53および全体下限閾値設定レジスタ54は、図4の全体バンド幅設定レジスタ41に対してそれぞれ上限と下限の閾値を設定する。
具体的には、マスタ上限閾値設定レジスタ51では、サイクル数CY4とリクエスト回数RQ4を設定し、サイクル数CY4の範囲でリクエスト回数RQ4のリクエストを受け付ける、という形によって、上限閾値を設定する。同様に、マスタ下限閾値設定レジスタ52では、サイクル数CY5とリクエスト回数RQ5によって、下限閾値を設定し、全体上限閾値設定レジスタ53では、サイクル数CY6とリクエスト回数RQ6によって上限閾値を設定し、全体下限閾値設定レジスタ54では、サイクル数CY7とリクエスト回数RQ7によって下限閾値を設定する。閾値設定レジスタ51,52は、上限下限閾値設定部204A内に設けられており、閾値設定レジスタ53,54は、上限下限全体閾値設定部207A内に設けられている。
図7は本実施形態に係るプロセススケジューリングシステムの他の構成例である。図7において、図5と共通の構成要素には図5と同一の符号を付しており、詳細な説明は省略する。
図7では、メモリブロック20Cにおけるメモリスケジューラ200Cの内部構成が図5と異なっている。すなわち、メモリスケジューラ200Cは、図5に示された各構成要素に加えて、各バスマスタに対して、割り込みを許可するか否かを指定する割り込み許可指定部208を備えている。この構成では、バスマスタ単位で割り込みを許可するか否かを指定することが可能である。
図8は図7の構成における閾値設定レジスタ51A,52A,53A,54Aを示す図である。図8に示すように、各閾値設定レジスタ51A〜54Aには、閾値を越えた場合に割り込みを発生させるか否かを指定するビットIR1〜IR4が、それぞれ設定されている。例えば、マスタ上限閾値設定レジスタ51Aの割り込み発生許可IR1は、サイクル数CY4およびリクエスト回数RQ4によって設定した上限閾値をバス使用率が上回った場合に割り込みを発生させるか否かを指定する。割り込み許可指定部208は、各閾値設定レジスタ51A〜54Aにおける割り込み発生許可IR1〜IR4を参照して動作する。
図9は本実施形態に係るプロセススケジューリングシステムの他の構成例である。図9において、図1、図5および図7と共通の構成要素には図1、図5および図7と同一の符号を付しており、詳細な説明は省略する。
図9の構成は、図5のCPUブロック10Aと同一構成の複数(ここでは3個)のCPUブロックA10a、CPUブロックB10b、CPUブロックC10cを備えている。また、メモリブロック20Dにおけるメモリスケジューラ200Dが、図1に示された各構成要素に加えて、図7に示された割り込み許可指定部208と、割り込み対象指定部209とを備えている。割り込み対象指定部209は、バス使用率比較部205の比較結果を基にして、複数のCPUブロック10a〜10cの中から、割り込みをかけるCPUブロックを選択指定する機能を有する。この構成により、バス使用率が閾値を越えた場合に、どのバスマスタに対して割り込みを発生させるかが指定可能になる。
図10は図9の構成における閾値設定レジスタ51B,52B,53B,54Bを示す図である。図10に示すように、各閾値設定レジスタ51B〜54Bには、閾値を越えた場合にどのバスマスタに対して割り込みを発生させるかを指定するビットIM1〜IM4が、それぞれ設定されている。例えば、マスタ上限閾値設定レジスタ51Bの割り込み発生マスタIM1は、サイクル数CY4およびリクエスト回数RQ4によって設定した上限閾値をバス使用率が上回った場合にどのバスマスタに対して割り込みを発生させるか否かを指定する。割り込み対象指定部209は、各閾値設定レジスタ51B〜54Bにおける割り込み発生マスタIM1〜IM4を参照して動作する。
図11は図1のシステムにおけるプロセススケジューリング方法を示すフローチャートである。図11に示すように、プロセススケジューリングが開始されると、割り込みを受けて(S201)、この割り込みがメモリスケジューラ200からの割り込みか否かを判定する(S202)。メモリスケジューラ200からの割り込みと判定した場合は(S202でYES)、バス使用率によるプロセス選択を行う(S203)。ステップS203では、図2の実行バンド幅レジスタ32を参照し、READY状態のプロセスの中から最もバス使用率の低いプロセスを選択する。一方、メモリスケジューラ200以外からの割り込みの場合は(S202でNO)、優先度によるプロセス選択を行う(S204)。すなわち、READY状態のプロセスの中から最も優先度の高いプロセスを選択する。そしてステップS205において、ステップS203またはS204で選択したプロセスにコンテキストスイッチすることによって、CPUコア11に選択したプロセスを割り当てる。
このような方法によって、バス使用状態が局所的に大きくなった場合にバス使用率の低いプロセスを実行することができるため、バスの使用効率を平均化することが可能となる。
また、図12は図5のシステムにおけるプロセススケジューリング方法を示すフローチャートである。図5のCPUブロック10Aにおけるメモリモードフラグ103はメモリブロック20の状態を保持するものであり、メモリブロック20からの割り込みが発生したとき、メモリモードフラグ変更部104は割り込み要因を特定し、メモリモードフラグ103の設定値を変更する。
図12に示すように、メモリスケジューラ200Bからの割り込みを受けると(S300)、割り込み要因を読み込み(S301)、割り込み要因が、バス使用率が上限閾値を越えた場合であるか否かを判定する(S302)。バス使用率が上限を超えた場合と判定したときは(S302でYES)、メモリモードフラグ103に第1の所定値として「1」を設定する(S303)。一方、バス使用率が下限閾値を下回った場合と判定したときは(S302でNO)、メモリモードフラグ103に第2の所定値として「0」を設定する(S304)。次に、プロセススケジューリングを開始し(S305)、メモリモードフラグ103を参照し(S306)、メモリモードフラグ103の値が「0」か「1」かを判定する(S307)。メモリモードフラグ103が「1」の場合は(S307でYES)、図2の実行バンド幅レジスタ32を参照し、最もバス使用率の低いプロセスを選択する(S308)。一方、メモリモードフラグ103が「0」の場合は(S307でNO)、最も優先度の高いプロセスを選択する。そしてステップS310において、ステップS308またはS309で選択したプロセスをCPUコア11Aに割り当てる。
なお、図12のフローでは、メモリスケジューラ200Bからの割り込みと同時にプロセス再スケジューリングも開始される方法を示している。ところが、割り込み時でない場合にプロセススケジューリングが開始されることもある。この場合も、メモリモードフラグ103を判定することは変わらず、図12と同様のステップを行う。すなわち、プロセススケジューリング開始ステップS305から実行すればよい。
この方法では、メモリモードフラグ103によって、プロセススケジューリング方法を、優先度によるものとバス使用率によるものとに切り替えて行うことが可能となる。すなわち、バス使用率の上限、下限を考慮した、使用状態に基づいたプロセススケジューリングが可能となり、バス使用効率をより柔軟に平均化することが可能となる。
図13は図12のプロセススケジューリング方法を一部変更したものを示すフローチャートである。図13では、優先度によるプロセス選択ステップS309に代えて、非リアルタイムプロセスを選択するステップS401が実行される。それ以外のステップは、図12と同様であるため、説明を省略する。ステップS307においてメモリモードフラグが「0」と判定された場合は(NO)、ステップS401において、READY状態のプロセスの中から最もリアルタイム性が低いプロセスを選択する。
この方法では、バス使用率が低いときに非リアルタイム性プロセスを実行することが可能となり、将来のリアルタイム性プロセスの実行を妨げることなく、バス使用率を平均化することが可能となる。
なお、図11〜図13のプロセススケジューリング方法は、コンピュータにプログラムを実行させることによって、実現することができる。
<全体処理の流れ>
以下では、図1〜図10のシステム構成と、図11〜図13のフローチャートを基にして、本実施形態における全体の処理の流れについて説明する。ここでは、主として、図9のシステム構成を例にとって説明を行う。ただし、ここではバスクロックは100MHz、1回のリクエスト当たりのデータ転送量は64Byteとする。
まず、システム起動時の初期設定を行う。各CPUブロックA,B,C(10a,10b,10c)の設定バンド幅は通常、システム起動時にマスタCPUとなるCPUブロック(例えばCPUブロックA10a)からメモリスケジューラ200Dに対してレジスタ設定される。
ここでは、図14(a)に示すように、図2に示したバンド幅設定レジスタ31とバンド幅閾値設定レジスタ33を設定する。図14(a)では、バスバンド幅として、CPUブロックA10aは90MByte/sec、CPUブロックB10bは150MByte/sec、CPUブロックC10cは60MByte/secが、それぞれ設定されている。また、閾値として、ここでは簡単に説明するために、設定したバスバンド幅の0.9倍に相当する値を設定する。この閾値はバスマスタ単位で別々に設定することも可能である。
CPUブロックA10aに関しては、バンド幅設定レジスタ31の内容は、サイクル数CY1を640サイクルとすると、リクエスト回数RQ1は9回となる。また、バンド幅閾値設定レジスタ33の内容はサイクル数CY2を640サイクルとすると、リクエスト回数RQ2は8回となる。同様に、CPUブロックB10bに関しては、バンド幅設定レジスタ31ではサイクル数CY1を640サイクル、リクエスト回数RQ1を15回とし、バンド幅閾値設定レジスタ33ではサイクル数CY2を640サイクル、リクエスト回数RQ2を13回とする。CPUブロックC10cに関しては、バンド幅設定レジスタ31ではサイクル数CY1を640サイクル、リクエスト回数RQ1を6回とし、バンド幅閾値設定レジスタ33ではサイクル数CY2を640サイクル、リクエスト回数RQ2を5回とする。
また、図14(b)に示すように、全体の設定バスバンド幅は300MByte/secとなる。全体バンド幅設定レジスタ41では、サイクルCY8を640サイクル、リクエスト回数RQ8を30回とする。また、全体バンド幅閾値設定レジスタ43では、サイクル数CY3を640サイクルとすると、リクエスト回数RQ3を27回とする。
また、メモリアクセス集計部203で集計されるプロセスID毎のバス使用率を示す実行バンド幅レジスタ32も、ゼロ初期化される。
なお、これらのレジスタは、各CPUコア11a,11b,11cで実行されるプロセス数に相当する個数分だけ設けられるものとする。また、メモリモードフラグ103a,103b,103cもゼロ初期化される。
システムの初期設定が終了すると、各CPUブロックA10a,CPUブロックB10bおよびCPUブロックC10cではそれぞれ、実行すべきプロセスがプロセススケジューラ100a,100b,100cによって選択されて、実行される。ここでは、CPUブロックA10aに着目して説明するが、その他のCPUブロックB10b,CPUブロックC10cについても同様の動作を行うものとする。
CPUブロックA10aにおいて、プロセススケジューラ100aがプロセスを選択するたびに、選択されたプロセスを示すプロセスIDが、メモリブロック20DのプロセスID保存部202に設定される。メモリスケジューラ200Dにおけるメモリアクセス集計部203は、プロセスIDが設定されたときサイクル数のカウントを開始し、次にプロセスIDが設定されるまでの期間におけるサイクル数をカウントする。ここで、CPUブロックA10aとメモリブロック20Dのクロックが異なる場合は、位相を考慮してサイクル数をカウントするものとする。
選択されたプロセスがCPUコア11aで実行され、LMC12aでキャッシュミスなどが発生し、メモリ21に対するリフィル処理が発生すると、BCU13aを介してメモリアクセスコマンドがメモリブロック20Dに送られる。メモリスケジューラ200Dはこのメモリアクセスコマンドを受け取り、図14に設定したようなバスバンド幅設定に応じたメモリアクセス調停を行い、メモリアクセスを行わせる。メモリアクセス集計部203はこのときのメモリアクセスコマンドが送られてくる回数もカウントしておく。これは、プロセスIDを保存してからのサイクル数と、メモリアクセス回数とを用いて使用バスバンド幅を計算するためである。このようにして、CPUブロックA10aでプロセスが切り替わり実行されていく毎に、メモリアクセス集計部203はプロセス毎の使用バスバンド幅を集計する。
図15(a)はプロセス毎に集計したバス使用率の途中結果を示す。図15(a)を見ると、プロセス(1),(2),(3),(4)はそれぞれ、85,30,5,90MByte/secのバンド幅で実行されていることが分かる。ここで、プロセス(4)が実行されているものとする。このプロセス(4)は平均バスバンド幅が90MByte/secであるため、CPUブロックA10aに関してバンド幅設定レジスタ31に設定されているバスバンド幅と同じバンド幅を必要とする。このプロセス(4)が実行されているときにメモリアクセス集計部203は一定サイクル毎に平均バス使用率を集計する。このときの集計結果が、バンド幅閾値設定レジスタ33に設定された閾値を越えているか否かを判定する。
CPUブロックA10aに関する閾値は81MByte/secであるから、これを越えている場合、CPUブロックA10aに対して割り込みが発生する。CPUブロックA10aでは割り込みが発生する前は、プロセス(4)が実行されている。このとき、メモリスケジューラ200Dからの割り込みにより、図11に示すようなプロセススケジューリングが実行される。ここで、プロセス(1),(2),(3)がREDAY状態であったとすると、図15(a)からバス使用率が最も低いプロセスはプロセス(3)であることが分かるため、バス使用率によるプロセス選択ステップS203において、プロセス(3)が選択される。選択されたプロセス(3)がCPUコア11aに割り当てられ、プロセススケジューリングを終了する。
通常は、プロセス選択は優先度によって実行されるため、上の例では、図15(a)のプロセス優先度からプロセス(1)が選択されるはずであるが、ここでは、プロセス(1)の代わりにプロセス(3)が選択される。実行プロセスがプロセス(4)からプロセス(1)に変更されたとすると、バス使用率は85MByte/secと依然が高い状況が続くところであったが、本実施形態では、プロセス(4)からプロセス(3)に変更されたことによって、バス使用率は90MByte/secから5MByte/secに大幅に低下する。すなわち、局所的なバス使用が回避されて、平均的なバス使用が実現される。
また、図15(b)に示すように、全体平均バスバンド幅は280MByte/secになっており、全体バンド幅閾値設定レジスタ43では閾値は270MByte/secに設定されている。このため、バス使用率比較部205の比較結果により、割り込みが発生する。ここで、図15(b)に示すバスマスタ毎のバス使用率から、バス使用率が最も大きいCPU(B)に対して割り込みをかけるものとする。割り込みがかかった後のプロセススケジューリング方法は、上述したものと同様である。
次に、図5および図6に示すメモリブロック20Bが、図9のシステム構成に設けられているものとして、説明を行う。ここでは、マスタ上限閾値設定レジスタ51、マスタ下限閾値設定レジスタ52、全体上限閾値設定レジスタ53および全体下限閾値設定レジスタ54を用いて、プロセススケジューリングが行われる。
すなわち、図16に示すようなレジスタ初期設定が行われる。バンド幅設定レジスタ31および全体バンド幅設定レジスタ41の設定は、図14と同様である。上限閾値および下限閾値としてはそれぞれ、バスバンド幅設定の0.9倍、0.1倍に相当する値を設定する。マスタ上限閾値設定レジスタ51の内容は、CPUブロックA10aに関しては、サイクル数CY4は640サイクル、リクエスト回数RQ4は8回となる。同様に、CPUブロックB10bに関しては、サイクル数CY4を640サイクル、リクエスト回数RQ4を13回とし、CPUブロックC10cに関しては、サイクル数CY4を640サイクル、リクエスト回数RQ4を5回とする。また、マスタ下限閾値設定レジスタ52の内容は、CPUブロックA10aに関しては、サイクル数CY5は640サイクル、リクエスト回数RQ5は1回となる。同様に、CPUブロックB10bに関しては、サイクル数CY5を640サイクル、リクエスト回数RQ5は2回とし、CPUブロックC10cに関しては、サイクル数CY5を640サイクル、リクエスト回数RQ5は1回とする。
また、全体上限閾値設定レジスタ53では、サイクル数CY6は640サイクル、リクエスト回数RQ6は27回となる。また、全体下限閾値設定レジスタ54では、サイクル数CY7は640サイクル、リクエスト回数RQ7は3回となる。
ここで、図15(a)に示すようなバス使用率の集計結果が得られたものとし、プロセス(4)が実行されているものとする。上述の説明と同様に、CPUブロックA10aに関して、バス使用率が上限閾値を越えていると判定されるため、CPUブロックA10aに対して割り込みが発生する。このとき、図12に示すような処理およびプロセススケジューリングが実行される。このときの割り込みでは、メモリモードフラグ103に「1」が設定される。ここで、プロセス(1),(2),(3)がREDAY状態であったとすると、図15(a)からバス使用率が最も低いプロセスはプロセス(3)であるため、バス使用率によるプロセス選択ステップS308において、プロセス(3)が選択される。選択されたプロセス(3)がCPUコア11aに割り当てられ、プロセススケジューリングを終了する。
次に、プロセス(3)が実行中に平均バス使用率が5MByte/secまで減少したとすると、CPUブロックA10aの下限閾値9MByte/secを下回るため、メモリスケジューラ200Bから再度割り込みが発生する。このときの割り込みでは、メモリモードフラグ103に「0」が設定される。このため、優先度によるプロセス選択ステップS309が実行され、プロセス(1),(2),(4)がREDAY状態であったとすると、図15(a)において優先度が最も高いプロセスはプロセス(1)であるため、プロセス(1)が選択される。
この構成によると、上限閾値および下限閾値による割り込みから、メモリモードフラグを設定することにより、プロセススケジューリング条件をバス使用状況に応じてより正確に設定することが可能となる。
またこのとき、図13に示すような処理およびプロセススケジューリングが実行されるものとすると、メモリモードフラグ103に「0」が設定されているとき、非リアルタイムプロセスを選択するステップS401が実行される。プロセス(1),(2),(4)がREDAY状態であったとすると、図15(a)において最も非リアルタイムなプロセスはプロセス(4)であるため、プロセス(4)が選択される。この方法では、バス使用率が低いときに非リアルタイム性プロセスを実行することが可能となり、将来のリアルタイム性プロセスの実行を妨げることなく、バス使用率を平均化することが可能となる。
また、他の割り込み発生方法を説明する。ここでは、図10に示すような、マスタ上限閾値設定レジスタ51B、マスタ下限閾値設定レジスタ52B、全体上限閾値設定レジスタ53Bおよび全体下限閾値設定レジスタ54Bが設けられているものとする。図17は各レジスタ51B〜54Bにおける割り込み発生許可ビットIR1〜IR4と、割り込み発生マスタIM1〜IM4の設定例である。割り込み発生許可ビットIR1〜IR4は「0」のときは割り込みを発生させないようにし、「1」のときは割り込みを許可する。また、割り込み発生マスタIM1〜IM4は該当する割り込みが発生した場合にどのバスマスタに対して割り込みを発生させるかを指定するものである。
図17の例では、下限割り込み発生許可ビットIR2,IR4を「0」とし、バス使用率が下限閾値を下回っても割り込みを発生させないようにしている。これは、システム起動時などはバス使用率は少ないため、不要な割り込みが発生する恐れがあるためである。また、メモリアクセス集計部203においてプロセス毎に十分なバス使用率が集計できていない場合についても、同様に、割り込みを発生させないことで従来のプロセススケジューリング行うことが可能である。全体上限閾値設定レジスタ53B、全体下限閾値設定レジスタ54Bについても同様の効果がある。これらの許可ビットIR1〜IR4は必要なときに「1」に設定することも可能である。
また、各バスマスタそれぞれに対して、割り込み発生許可ビットを持つことで、割り込み機能を持たないバスマスタの場合には割り込みを発生させないことも可能となり、全体バスバンド幅に対する割り込み発生許可ビットを持つことで、システム全体からみたバス使用率でも各バスマスタのバス使用率からでも自由に割り込みを制御することが可能である。
また、割り込み発生マスタIM1〜IM4は割り込みを発生させるマスタを特定するものである。図17では例えば、CPUブロックA10aとCPUブロックC10cとの間に主従関係があり、CPUブロックA10aはCPUブロックC10cよりも優勢であるものとしており、CPUブロックA10aが割り込みを発生させる対象は、自分自身ではなくCPUブロックC10cに設定している。この場合、CPUブロックA10aに関して割り込みが発生すると、CPUブロックC10cに対して割り込みがかかり、上述したようなプロセススケジューリング方法がCPUブロックC10cにおいて実行される。
このような構成により、割り込みを発生させるか否かを前もって設定することが可能となり、バス使用率の集計が十分でない場合や、システムの起動時などに不要な割り込みを発生させることなく、プロセススケジューリングを実行可能となる。また、割り込み対象のマスタを指定することによって、システム全体のマスタ毎の役割を考慮して割り込みを発生させることが可能となる。
また、上述の説明において、「プロセス」を、タスク、スレッドと呼ばれるものと置き換えても、同様の効果が得られる。
また、バスバンド幅を集計、比較するためにサイクル数とリクエスト回数をレジスタに設定して用いているが、バスバンド幅を集計、比較できるものであれば、バスバンド幅性能に依存する他のパラメータ指標を用いても、同様の効果が得られる。
本発明に係るプロセススケジューリングシステムでは、システムのバス使用効率を平均化させ、向上させることができるため、システムLSIなどでのオペレーティングシステムを搭載し、メモリスケジューラによりバスの調停を行うシステムにおいてプログラムを実行させる際に、有用である。
本発明の一実施形態に係るプロセススケジューリングシステムの概略構成を示すブロック図である。 バンド幅設定レジスタ、実行バンド幅レジスタおよびバンド幅閾値設定レジスタの例である。 本発明のプロセススケジューリングシステムの他の構成例である。 全体バンド幅設定レジスタ、全体実行バンド幅レジスタおよび全体バンド幅閾値設定レジスタの例である。 本発明のプロセススケジューリングシステムの構成例であって、閾値設定に上限と下限を設けたものである。 上限閾値および下限閾値を設定するレジスタの例である。 本発明のプロセススケジューリングシステムの構成例であって、割り込みの許可/不許可の設定を可能にしたものである。 割り込み発生を許可するビットを備えた閾値設定レジスタの例である。 本発明のプロセススケジューリングシステムの構成例であって、割り込み対象となるマスタを特定可能にしたものである。 割り込み対象マスタを指定するビットを備えた閾値設定レジスタの例である。 図1のシステムにおけるプロセススケジューリング方法を示すフローチャートである。 図5のシステムにおけるプロセススケジューリング方法を示すフローチャートである。 図12の方法を一部変更したプロセススケジューリング方法を示すフローチャートである。 バスバンド幅、およびバスバンド幅閾値の設定例である。 各プロセスIDの実行バンド幅の例である。 バスバンド幅、およびバスバンド幅の上限・下限閾値の設定例である。 割り込み発生許可と、割り込み発生対象の設定例である。 従来技術におけるプロセススケジューリング装置である。 従来技術におけるプロセススケジューリング方法である。
符号の説明
1 バス
10,10A,10a,10b,10c CPUブロック
11,11A,11a,11b,11c CPUコア
20,20A,20B,20C,20D メモリブロック
100,100a,100b,100c プロセススケジューラ
101 プロセスID設定部
102 プロセススケジューリング変更部
103 メモリモードフラグ
104 メモリモード設定部
200,200A,200B,200C メモリスケジューラ
203 メモリアクセス集計部
204 閾値設定部
204A 上限下限閾値設定部
205 バス使用率比較部
207 全体閾値設定部
207A 上限下限全体閾値設定部
208 割り込み許可指定部
209 割り込み対象指定部

Claims (9)

  1. バスと、
    オペレーティングシステムを搭載したCPUコアを有し、前記バスに接続されているバスマスタとしての1つまたは複数のCPUブロックと、
    前記バスに接続されているバススレーブとしてメモリブロックとを備え、
    前記CPUコアは、実行すべきプロセスを決定するプロセススケジューラを備え、
    前記メモリブロックは、バスマスタの設定バンド幅を設定するとともに、バスマスタからのメモリアクセスコマンドを制御するメモリスケジューラを備え、
    前記プロセススケジューラは、
    前記CPUコアで実行されているプロセスを示すプロセスIDを、前記メモリスケジューラに設定するプロセスID設定部と、
    前記CPUコアのプロセススケジューリング条件を変更する機能を有するプロセススケジューリング変更部とを備えたものであり、
    前記メモリスケジューラは、
    前記メモリアクセスコマンドから、前記プロセスID毎のバス使用率を集計するメモリアクセス集計部と、
    前記バス使用率に対して少なくとも1つ以上の閾値を設定する閾値設定部と、
    前記閾値と前記メモリアクセス集計部の集計結果とを比較するバス使用率比較部とを備え、
    前記バス使用率比較部の比較結果に応じて、前記プロセススケジューラに割り込みをかけるものであり、
    前記プロセススケジューリング変更部は、
    前記メモリスケジューラからの割り込みを受け、前記CPUコアに割り込みを発生させ、前記CPUコアのプロセススケジューリング条件を、プロセスの優先度からプロセスのバス使用率に変更するものである
    ことを特徴とするプロセススケジューリングシステム。
  2. 請求項1において、
    前記メモリアクセス集計部は、バス使用率を、バスマスタ単位と、システム全体とに分けて集計するものである
    ことを特徴とするプロセススケジューリングシステム。
  3. 請求項1または2において、
    前記CPUコアは、
    メモリモードフラグと、
    前記メモリモードフラグの値を設定する機能を有するメモリモード変更部とを備え、
    前記メモリスケジューラは、
    前記閾値設定部が、バス使用率に対して、上限閾値と下限閾値とを設定し、
    バス使用率が前記上限閾値を越えた場合と、バス使用率が前記下限閾値を下回った場合とにおいて、それぞれを割り込み要因として、前記プロセススケジューラに割り込みをかけるものであり、
    前記メモリモード変更部は、前記メモリスケジューラから割り込みを受けたとき、当該割り込み要因に応じて、前記メモリモードフラグの値を設定するものであり、
    前記プロセススケジューリング変更部は、前記CPUコアのプロセススケジューリング条件を、前記メモリモードフラグの値に応じて、変更するものである
    ことを特徴とするプロセススケジューリングシステム。
  4. 請求項3において、
    前記メモリスケジューラは、
    各バスマスタに対して、割り込みを許可するか否かを指定する割り込み許可指定部を備え、
    前記バス使用率比較部は、前記割り込み許可指定部で割り込みが許可されたバスマスタのみを比較対象とするものである
    ことを特徴とするプロセススケジューリングシステム。
  5. 請求項4において、
    前記CPUブロックを複数備えており、
    前記メモリスケジューラは、
    前記バス使用率比較部の比較結果を基にして、前記複数のCPUブロックの中から、割り込みをかけるCPUブロックを選択指定する機能を有する割り込み対象指定部を備えたものである
    ことを特徴とするプロセススケジューリングシステム。
  6. 請求項1記載のプロセススケジューリングシステムにおいて、前記CPUブロックがプロセススケジューリングを行う方法であって、
    割り込みがあったとき、前記メモリスケジューラからの割り込みであるか否かを判定するステップと、
    前記割り込みが前記メモリスケジューラからの割り込みと判定したとき、READY状態のプロセスの中から、前記メモリアクセス集計部において集計されたバス使用率が最も低いプロセスを選択するステップと、
    選択したプロセスを、前記CPUコアに割り当てて実行するステップとを備えた
    ことを特徴とするプロセススケジューリング方法。
  7. 請求項3記載のプロセススケジューリングシステムにおいて、前記CPUブロックがプロセススケジューリングを行う方法であって、
    割り込みがあったとき、前記メモリスケジューラからの割り込みであるか否かを判定するステップと、
    前記割り込みが前記メモリスケジューラからの割り込みと判定したとき、割り込み要因を読み込むステップと、
    前記割り込み要因が、バス使用率が前記上限閾値を越えた場合であるとき、前記メモリモードフラグに第1の所定値を設定する一方、バス使用率が前記下限閾値を下回った場合であるとき、前記メモリフラグに前記第1の所定値と異なる第2の所定値を設定するステップと、
    前記メモリモードフラグを参照し、前記メモリモードフラグに前記第1の所定値が設定されているとき、READY状態のプロセスの中から、前記メモリアクセス集計部において集計されたバス使用率が最も低いプロセスを選択するステップと、
    選択したプロセスを、前記CPUコアに割り当てて実行するステップとを備えた
    ことを特徴とするプロセススケジューリング方法。
  8. 請求項7において、
    前記メモリモードフラグに前記第2の所定値が設定されているとき、READY状態のプロセスの中から、非リアルタイムプロセスを選択するステップと、
    選択した非リアルタイムプロセスを、前記CPUコアに割り当てて実行するステップとを備えた
    ことを特徴とするプロセススケジューリング方法。
  9. 請求項6〜8のうちのいずれか1項に記載のプロセススケジューリング方法を、コンピュータに実行させるためのプログラム。
JP2005223982A 2005-08-02 2005-08-02 プロセススケジューリングシステム、プロセススケジューリング方法およびプログラム Pending JP2007041771A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005223982A JP2007041771A (ja) 2005-08-02 2005-08-02 プロセススケジューリングシステム、プロセススケジューリング方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005223982A JP2007041771A (ja) 2005-08-02 2005-08-02 プロセススケジューリングシステム、プロセススケジューリング方法およびプログラム

Publications (1)

Publication Number Publication Date
JP2007041771A true JP2007041771A (ja) 2007-02-15

Family

ID=37799704

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005223982A Pending JP2007041771A (ja) 2005-08-02 2005-08-02 プロセススケジューリングシステム、プロセススケジューリング方法およびプログラム

Country Status (1)

Country Link
JP (1) JP2007041771A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009034730A1 (ja) * 2007-09-13 2009-03-19 Renesas Technology Corp. ホスト負荷調整機能付周辺回路
WO2012023198A1 (ja) * 2010-08-19 2012-02-23 富士通株式会社 バス制御装置及びバス制御方法
US8694705B2 (en) 2010-06-28 2014-04-08 Renesas Electronics Corporation Information processing device
JP2020530621A (ja) * 2017-08-09 2020-10-22 ザイリンクス インコーポレイテッドXilinx Incorporated 適応的なサービスの品質の制御回路
CN116680087A (zh) * 2023-08-02 2023-09-01 摩尔线程智能科技(北京)有限责任公司 指令调度方法、装置、设备及存储介质

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009034730A1 (ja) * 2007-09-13 2009-03-19 Renesas Technology Corp. ホスト負荷調整機能付周辺回路
JP2009070122A (ja) * 2007-09-13 2009-04-02 Renesas Technology Corp ホスト負荷調整機能付周辺回路
JP4659008B2 (ja) * 2007-09-13 2011-03-30 ルネサスエレクトロニクス株式会社 ホスト負荷調整機能付周辺回路
US8694705B2 (en) 2010-06-28 2014-04-08 Renesas Electronics Corporation Information processing device
WO2012023198A1 (ja) * 2010-08-19 2012-02-23 富士通株式会社 バス制御装置及びバス制御方法
JP5644859B2 (ja) * 2010-08-19 2014-12-24 富士通株式会社 バス制御装置及びバス制御方法
JP2020530621A (ja) * 2017-08-09 2020-10-22 ザイリンクス インコーポレイテッドXilinx Incorporated 適応的なサービスの品質の制御回路
JP7167130B2 (ja) 2017-08-09 2022-11-08 ザイリンクス インコーポレイテッド 適応的なサービスの品質の制御回路
CN116680087A (zh) * 2023-08-02 2023-09-01 摩尔线程智能科技(北京)有限责任公司 指令调度方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
JP6755935B2 (ja) 共有メモリコントローラおよびそれを使用する方法
JP3712842B2 (ja) データ転送制御方法、データ転送制御装置及び情報記録媒体
CN102567109B (zh) 中断分配方案
JP5681527B2 (ja) 電力制御装置及び電力制御方法
WO2011103825A2 (zh) 多处理器系统负载均衡的方法和装置
WO2016105863A1 (en) Guaranteed quality of service in system-on-a-chip uncore fabric
EP3238003A1 (en) Power management in an uncore fabric
US9971711B2 (en) Tightly-coupled distributed uncore coherent fabric
US20070239888A1 (en) Controlling transmission of data
JP2011059777A (ja) タスクスケジューリング方法及びマルチコアシステム
JP2007334564A (ja) ユニファイドメモリシステム
JP2007041771A (ja) プロセススケジューリングシステム、プロセススケジューリング方法およびプログラム
CN110059035B (zh) 半导体装置和总线发生器
WO2016105952A1 (en) Low overhead hierarchical connectivity of cache coherent agents to a coherent fabric
US11003495B2 (en) Dynamic access of task queues in a parallel processing system
CN112230757B (zh) 用于通过腾空cpu和存储器的子集来降低功率的方法和系统
JP2009251713A (ja) キャッシュメモリ制御装置
US20160196206A1 (en) Processor and memory control method
JP5932261B2 (ja) メモリ制御装置、メモリ制御方法
JP4056768B2 (ja) マイクロコンピュータ、キャッシュメモリ制御方法及びクロック制御方法
JP5704176B2 (ja) プロセッサ処理方法、およびプロセッサシステム
JP2006215621A (ja) Dma制御装置
JP2014078214A (ja) スケジュールシステム、スケジュール方法、スケジュールプログラム、及び、オペレーティングシステム
EP3238085B1 (en) Virtual legacy wire
JP6951016B2 (ja) 切り替え回路、管理システム、情報処理装置及びアクセス頻度の切り替え方法