JP5345990B2 - Method and computer for processing a specific process in a short time - Google Patents

Method and computer for processing a specific process in a short time Download PDF

Info

Publication number
JP5345990B2
JP5345990B2 JP2010190752A JP2010190752A JP5345990B2 JP 5345990 B2 JP5345990 B2 JP 5345990B2 JP 2010190752 A JP2010190752 A JP 2010190752A JP 2010190752 A JP2010190752 A JP 2010190752A JP 5345990 B2 JP5345990 B2 JP 5345990B2
Authority
JP
Japan
Prior art keywords
logical
priority
clock
boost
cpu
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2010190752A
Other languages
Japanese (ja)
Other versions
JP2012048545A (en
Inventor
拓水 今井
宏幸 内田
景子 遠藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Lenovo Singapore Pte Ltd
Original Assignee
Lenovo Singapore Pte 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 Lenovo Singapore Pte Ltd filed Critical Lenovo Singapore Pte Ltd
Priority to JP2010190752A priority Critical patent/JP5345990B2/en
Publication of JP2012048545A publication Critical patent/JP2012048545A/en
Application granted granted Critical
Publication of JP5345990B2 publication Critical patent/JP5345990B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Power Sources (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To process a specific process in a short time. <P>SOLUTION: A CPU package 11 includes a plurality of logical processors 61, 63, 65, and 67 capable of performing clock boosting temporarily under predetermined conditions. A control program 101 sets one of the plurality of logical processors through an ACPI interface 170 so as to perform the clock boosting when the predetermined conditions are met. The control program selects a priority process to be performed in a short time out of a plurality of processes. The control program schedules the priority process to be executed only by the logical processor for which the clock boosting is set. <P>COPYRIGHT: (C)2012,JPO&amp;INPIT

Description

本発明は、特定のプロセスを短時間に処理する技術に関し、さらに詳細には、クロック・ブーストの可能なマルチ・プロセッサ環境で特定のプロセスを短時間に処理する技術に関する。   The present invention relates to a technique for processing a specific process in a short time, and more particularly to a technique for processing a specific process in a short time in a multi-processor environment capable of clock boosting.

マルチ・タスクのオペレーティング・システム(OS)は、スレッドに一度に連続して中央演算処理装置(CPU)を利用できる時間であるクォンタム(タイムスライス)を付与する。CPUにディスパッチされたスレッドは与えられたクォンタムからクロック・サイクルごとに一定の値を減算し、与えられたクォンタムが0になると実行可能キューの最後に配置され、それに代わって実行可能キューに登録された他のスレッドがディスパッチされる。このときスケジューラは各スレッドの優先度レベルを比較してディスパッチするスレッドを決定する。したがって優先度レベルが高いスレッドほど所定時間内におけるCPUの割り当て時間が長くなり早期に処理が完了する。   A multi-task operating system (OS) gives a thread a quantum (time slice) that is a time during which a central processing unit (CPU) can be used continuously at a time. The thread dispatched to the CPU subtracts a certain value from the given quantum every clock cycle, and when the given quantum reaches 0, it is placed at the end of the runnable queue and registered in the runnable queue instead. Other threads are dispatched. At this time, the scheduler compares the priority level of each thread to determine a thread to be dispatched. Therefore, the higher the priority level, the longer the CPU allocation time within a predetermined time and the earlier the processing is completed.

プロセスは、ユーザが操作しているウインドウを生成するフォアグラウンドのプロセスとその他のすべてのプロセスであるバックグラウンドのプロセスに分けることができる。ユーザは、システムがバックグラウンドのプロセスよりもフォアグラウンドのプロセスに対してすばやく応答することを望んでいる。OSは、フォアグラウンドのプロセスの優先度レベルを上げてバックグラウンドのプロセスよりも短時間で処理できるようにスケジューラを操作することができる。また、プロセスを生成するプログラムがスケジューラを操作して特定のプロセスの優先度レベルを上げることもできる。   The process can be divided into a foreground process that creates the window that the user is operating on and a background process that is all other processes. Users want the system to respond more quickly to foreground processes than to background processes. The OS can operate the scheduler so that the priority level of the foreground process can be increased and processing can be performed in a shorter time than the background process. In addition, a program for generating a process can operate the scheduler to increase the priority level of a specific process.

しかし、優先度レベルが上昇したプロセスは、他のプロセスの優先度レベルとの関係で相対的にCPUの割り当て時間が増加するだけであり、実行可能キューに登録されたバックグラウンドのプロセスの優先度レベルが同等またはそれ以上の場合はフォアグラウンドのプロセスの割り当て時間は増加しない。また、他のプロセスの優先度レベルが低い場合は、優先度レベルを上げたフォアグラウンドのプロセスによってCPUが独占されてしまい、他のプロセスにCPUが割り当てられるまでの時間が長くなってしまうといういわゆる飢餓状態の問題が発生する。プロセスの優先度レベルの操作による処理時間の短縮は、あくまで他のプロセスとの相対的な関係で有効になるためフォアグラウンドのプロセスをシステムに障害を与えないで確実に短時間で処理する方法としては十分ではない。   However, a process whose priority level has been increased only increases the CPU allocation time relative to the priority level of other processes, and the priority of background processes registered in the executable queue. If the level is equal or higher, the foreground process allocation time does not increase. In addition, when the priority level of other processes is low, the CPU is monopolized by the foreground process whose priority level has been raised, and so-called starvation that the time until the CPU is assigned to another process becomes longer. A state problem occurs. The reduction in processing time due to the operation of the process priority level is effective only in relation to other processes, so there is no way to ensure that foreground processes are processed in a short time without damaging the system. Not enough.

フォアグラウンドのプロセスにバックグラウンドのプロセスより多くのクォンタムを与えて短時間で処理する方法として、タイムスライス・ブーストまたはクォンタム・ブーストという手法がある。タイムスライス・ブーストでは、プロセスが保有するウインドウがフォアグラウンドに切り換わったときに当該プロセスの優先度レベルを上げてタイムスライスを増加させる。しかし、タイムスライス・ブーストは、当該CPUにおける他のプロセスより多くのクォンタムが与えられるというだけのもので、バックグラウンドのプロセスに対する相対的なレスポンス・タイムの改善であり、フォアグラウンドのプロセスの絶対的なレスポンス・タイムの改善につながるものではない。たとえば、実行可能キューにスレッドが1つしかない場合は、処理時間はそのスレッドを実行するCPUの動作周波数で決まり、それ以上は短縮することができない。   There is a technique called time slice boost or quantum boost as a method of giving a foreground process more quantum than a background process and processing in a short time. In time slice boost, when a window held by a process is switched to the foreground, the priority level of the process is increased to increase the time slice. However, time-slice boost is only given more quantum than other processes on the CPU, is an improvement in response time relative to background processes, and is an absolute foreground process. It does not lead to improved response time. For example, if there is only one thread in the executable queue, the processing time is determined by the operating frequency of the CPU that executes the thread and cannot be shortened beyond that.

特許文献1は、マルチプロセッシングの環境において、一層のパフォーマンスの向上および消費電力の低減を図る技術を開示する。同文献には、いずれのスレッド・ユニットが復帰時間の短いパワー・ステートに遷移しているかを示すシステム・パワー・ステート・フィルターを利用して所定のタスクに関するCPUアフィニティ・マスクを書き換え、スケジューラが当該所定のタスクをより復帰時間の短いパワー・ステートに遷移しているスレッド・ユニットに割り当てるようにしている。   Patent Document 1 discloses a technique for further improving performance and reducing power consumption in a multiprocessing environment. The document rewrites the CPU affinity mask for a given task using a system power state filter that indicates which thread unit has transitioned to a power state with a short recovery time, and the scheduler A predetermined task is assigned to a thread unit that has transitioned to a power state with a shorter return time.

特許文献2は、マルチ・コア・プロセッサにおいて、コア全部で集団的に走っているスレッドの統計的な予測に基づいてプロセッサの電圧および周波数の動作点を選択して、パフォーマンスを向上させる技術を開示する。具体的には、同時にアクティブになるコアの数を制限して全体としては電力制約条件に従いながら動作するコアの動作周波数を向上させている。   Patent Document 2 discloses a technique for improving performance by selecting operating points of processor voltage and frequency based on statistical prediction of threads collectively running in all cores in a multi-core processor. To do. Specifically, the number of cores that are simultaneously active is limited to improve the operating frequency of the core that operates while complying with the power constraint conditions as a whole.

非特許文献1は、マルチ・コア・プロセッサのいずれかのコアがアイドル状態のときであって、かつ電力、電流および温度に関する仕様の限界未満で動作している場合には、自動的に定格の動作周波数より高い周波数で動作させる技術を開示する。非特許文献2は、特定のプロセスを特定のプロセッサに割り当てることによりパフォーマンスを最適化するハード・アフィニティの手法を開示する。   Non-Patent Document 1 states that when any core of a multi-core processor is in an idle state and is operating below the power, current and temperature specification limits, A technique for operating at a frequency higher than the operating frequency is disclosed. Non-Patent Document 2 discloses a hard affinity technique for optimizing performance by assigning a specific process to a specific processor.

米国特許出願公開第2009/0320031号明細書US Patent Application Publication No. 2009/0320031 特表2007−535721号公報Special table 2007-535721 gazette

"Intel Turbo Boost Technology in Intel Core Microarchitecture(Nehalem) Based Processors"、[online]、November 2008、[平成22年8月10日検索]、インターネット〈URL:http://www.intel.co.jp/jp/technology/turboboost/〉"Intel Turbo Boost Technology in Intel Core Microarchitecture (Nehalem) Based Processors", [online], November 2008, [searched on August 10, 2010], Internet <URL: http://www.intel.co.jp/ jp / technology / turboboost /〉 Eli Dow、"プロセッサ・アフィニティの管理"、[online]、2005年9月29日、[平成22年8月10日検索]、インターネット〈URL:http://www.ibm.com/developerworks/jp/linux/library/l-affinity/〉Eli Dow, “Managing Processor Affinity”, [online], September 29, 2005, [Search August 10, 2010], Internet <URL: http://www.ibm.com/developerworks/jp / linux / library / l-affinity />

マルチ・プロセッサ・システムに対応するOSでは、複数のCPUを使用して同時に複数のプロセスを実行することができる。対象型マルチ・プロセッサ・システムでは、OSは各論理CPUを各プロセスに対して等価に扱う。OSはスケジューリングの際に全体として最も効率が高くなるようにプロセスを各CPUに関連付ける。このような特定のプロセスとCPUの関連性をプロセッサ・アフィニティまたはプロセッサ親和性という。プロセッサ・アフィニティには、同一条件のスレッドやプロセスをなるべく同じCPUに割り当てるようにスケジューリングするソフト・アフィニティという手法と能動的に特定のCPUに割り当てるハード・アフィニティという手法が存在する。   In an OS corresponding to a multiprocessor system, a plurality of processes can be executed simultaneously using a plurality of CPUs. In the target multiprocessor system, the OS treats each logical CPU equivalently for each process. The OS associates a process with each CPU so that the overall efficiency is highest during scheduling. Such an association between a specific process and the CPU is called processor affinity or processor affinity. There are two methods for processor affinity: soft affinity, which schedules threads and processes with the same condition to be assigned to the same CPU as much as possible, and hard affinity, which is actively assigned to a specific CPU.

ソフト・アフィニティによれば、L2キャッシュのデータやNUMA(Non-Uniform Memory Access )というアーキテクチャで使用するメモリのデータなどを有効に活用できるので、OSは一般的にスレッドにソフト・アフィニティを採用して最後に実行したのと同じCPUを割り当てるようにしている。これに対しハード・アフィニティの採用は、システムの性能をテストする場合やキャッシュのヒット率を特に高めた処理をする必要があるアプリケーションを実行する場合などのように、明らかにソフト・アフィニティを採用したOSのアルゴリズムよりも優れたパフォーマンスが期待できることが判明している場合に限定される。   According to soft affinity, L2 cache data and memory data used in the NUMA (Non-Uniform Memory Access) architecture can be used effectively, so the OS generally adopts soft affinity for threads. The same CPU as that executed last is assigned. On the other hand, adopting hard affinity obviously adopted soft affinity, such as when testing system performance or executing an application that requires processing with a particularly high cache hit rate. This is limited to cases where it is known that a performance superior to that of the OS algorithm can be expected.

ところで、インテル社ではマルチ・コアCPUにおいて、アイドルのコアCPUが存在する場合に他のコアCPUを基準動作周波数よりも高い周波数で動作させるターボ・ブースト・テクノロジーを導入している。ターボ・ブースト・テクノロジーでは、CPUは温度または消費電力などの条件が成立したときに一部のCPUコアの動作周波数が上昇するが、スケジューラはCPUコアの動作周波数を認識することなく所定のアルゴリズムでプロセスをスケジューリングする。よって、ターボ・ブースト・テクノロジーを採用したときには、動作周波数が上昇するCPUコアには任意のプロセスが割り当てられ、スケジューラにより偶然にそのCPUに割り当てられたプロセスだけが高い動作周波数で実行される。したがって、ターボ・ブースト・テクノロジーを採用しただけでは、フォアグラウンドのプロセスの処理時間を確実に短縮することができない。   By the way, in the multi-core CPU, Intel has introduced turbo boost technology that operates other core CPUs at a frequency higher than the reference operating frequency when an idle core CPU exists. In Turbo Boost Technology, the operating frequency of some CPU cores rises when conditions such as temperature or power consumption are met, but the scheduler uses a predetermined algorithm without recognizing the operating frequency of the CPU core. Schedule the process. Therefore, when the turbo boost technology is adopted, an arbitrary process is assigned to the CPU core whose operating frequency increases, and only the process that is accidentally assigned to the CPU by the scheduler is executed at a high operating frequency. Therefore, the processing time of the foreground process cannot be reliably shortened only by adopting the turbo boost technology.

そこで本発明の目的は、マルチ・プロセッサ環境で特定のプロセスの処理時間を短縮する方法を提供することにある。さらに本発明の目的はフォアグラウインドのプロセスをバックグラウンドのプロセスよりも高い動作周波数の論理CPUで実行する機会を増大する方法を提供することにある。さらに本発明の目的は、そのような方法を実現するコンピュータ・プログラムおよびコンピュータを提供することにある。   Therefore, an object of the present invention is to provide a method for reducing the processing time of a specific process in a multi-processor environment. It is a further object of the present invention to provide a method that increases the chances of executing a foreground process on a logical CPU having a higher operating frequency than a background process. A further object of the present invention is to provide a computer program and a computer that realize such a method.

本発明にかかるコンピュータは、所定の条件が成立したときに一時的に動作周波数を上昇させるクロック・ブーストが可能な複数の論理プロセッサを備える。制御プログラムは複数の論理プロセッサのいずれかにクロック・ブーストの設定をする。クロック・ブーストの設定をする論理プロセッサは、単数であっても複数であってもよい。また、複数の論理プロセッサは複数のプロセッサで実現してもよいし、1つのプロセッサをソフトウエアで仮想化することで実現してもよい。クロック・ブーストの設定がされた論理プロセッサは、所定の条件が成立している間に限り基本動作周波数よりも高い動作周波数で動作し、所定の条件が成立しない状態になると基本動作周波数に戻る。基本動作周波数よりも高い動作周波数は、段階的に設定することができる。   The computer according to the present invention includes a plurality of logical processors capable of clock boosting that temporarily increases the operating frequency when a predetermined condition is satisfied. The control program sets the clock boost to one of the plurality of logical processors. There may be one or more logical processors for setting the clock boost. The plurality of logical processors may be realized by a plurality of processors, or may be realized by virtualizing one processor with software. The logic processor for which the clock boost is set operates at an operating frequency higher than the basic operating frequency only while the predetermined condition is satisfied, and returns to the basic operating frequency when the predetermined condition is not satisfied. An operating frequency higher than the basic operating frequency can be set in stages.

所定の条件は、アイドル状態の論理プロセッサの存在、消費電力、消費電流、および温度に基づいて設定することができる。さらに複数の論理プロセッサは、消費電力が小さい状態が継続するような場合は、アイドル状態の論理プロセッサが存在しない状態、電流が基準値を超えた状態、または消費電力が基準値を超えた状態であっても、温度が基準値を超えない限り高い動作周波数で動作するものであってもよい。このように消費電力が一時的に消費電力の基準値を超えた状態でプロセッサを動作させると、動作周波数を一層高くすることができるため、より短時間でプロセスを処理することができる。   The predetermined condition can be set based on the presence of an idle logical processor, power consumption, current consumption, and temperature. In addition, if multiple logic processors continue to have low power consumption, there are no idle logical processors, current exceeds the reference value, or power consumption exceeds the reference value. Even if it exists, it may operate at a high operating frequency as long as the temperature does not exceed the reference value. When the processor is operated in a state where the power consumption temporarily exceeds the power consumption reference value in this way, the operating frequency can be further increased, so that the process can be processed in a shorter time.

制御プログラムは、コンピュータに生成された複数のプロセスの中から短時間で処理することが要求されているプロセスを優先プロセスとして選択する。優先プロセスは、ウインドウを生成するプロセス、高いスケジューリングの優先度が設定されているプロセス、高いディスクI/O処理の優先度が設定されているプロセスとすることができる。制御プログラムはOSと協働して、優先プロセスをクロック・ブーストの設定がされた単数または複数の論理プロセッサだけにディスパッチして優先実行する。   The control program selects, as a priority process, a process that is required to be processed in a short time from among a plurality of processes generated by the computer. The priority process may be a process for generating a window, a process for which high scheduling priority is set, or a process for which high disk I / O processing priority is set. In cooperation with the OS, the control program dispatches the priority process to only one or a plurality of logical processors for which clock boost is set and executes the priority process.

クロック・ブーストの設定がされた論理プロセッサは、条件が成立したときには動作周波数が増大するため、そこで実行されるいかなるプロセスも未設定の論理プロセッサよりも処理時間が短縮されるので優先プロセスがディスパッチされるまでの待ち時間が短縮される。さらに優先プロセスは、クロック・ブーストの設定がされた論理プロセッサだけにスケジューリングされるため、実際にクロック・ブーストされた状態の論理プロセッサで実行される確率が高くなり一層処理時間が短縮される。本発明の手法はプロセスの優先度レベルを変える手法とは異なり、論理プロセッサが一時的に高い動作周波数で動作する特性を利用するものであるため、優先プロセスの絶対的な処理時間を短縮することができる。また、優先度レベルの低い他のプロセスを飢餓状態に陥らせることがない。   A logical processor with a clock boost setting will increase its operating frequency when the condition is met, so any process executed there will have a shorter processing time than an unconfigured logical processor, and a priority process will be dispatched. Waiting time is shortened. Furthermore, since the priority process is scheduled only to the logical processor set with the clock boost, the probability that it is executed by the logical processor in the actual clock boosted state is increased, and the processing time is further reduced. Unlike the method of changing the priority level of the process, the method of the present invention uses the characteristic that the logical processor temporarily operates at a high operating frequency, so that the absolute processing time of the priority process is shortened. Can do. Also, other processes with lower priority levels are not starved.

クロック・ブーストの設定がされた論理プロセッサとのアフィニティに基づいてスケジューリングするために、制御プログラムはOSがディフォルトで作成したアフィニティ・マスクまたはプロセスを生成するプログラムが書き換えたアフィニティ・マスクのようなオリジナルのアフィニティ・マスクのビット・パターンを、クロック・ブーストの設定状態に基づいて書き換えることができる。具体的には、アフィニティ・マスクは、オリジナルのアフィニティ・マスクと複数の論理プロセッサのそれぞれに対するクロック・ブーストの設定状態を示すマスク・ビットを論理積演算して書き換えることができる。   In order to schedule based on the affinity with the logical processor with the clock boost setting, the control program can create an original mask such as an affinity mask created by the OS or an affinity mask rewritten by the program that generates the process. The bit pattern of the affinity mask can be rewritten based on the setting state of the clock boost. Specifically, the affinity mask can be rewritten by performing an AND operation on the original affinity mask and a mask bit indicating the setting state of the clock boost for each of the plurality of logical processors.

論理積演算をすることで、優先プロセスをプログラムが指定した論理プロセッサ以外の論理プロセッサで優先実行するような事態を排除することができる。また、いずれの論理プロセッサも当該プロセスに対して等価であることが判明しているような場合は、アフィニティ・マスクを、クロック・ブーストの設定がされた論理プロセッサだけを指定するように書き換えてもよい。このように書き換えることで、優先プロセスを確実にクロック・ブーストの設定がされた論理プロセッサだけで実行することができるようになる。   By performing an AND operation, it is possible to eliminate a situation in which the priority process is preferentially executed by a logical processor other than the logical processor designated by the program. If any logical processor is found to be equivalent to the process, the affinity mask can be rewritten to specify only the logical processor with the clock boost setting. Good. By rewriting in this way, the priority process can be executed only by the logical processor in which the clock boost is set reliably.

本発明の手法は、新たに生成されるプロセスに対してその都度適用することができる。制御プログラムは、クロック・ブーストの設定がされた論理プロセッサの使用率を取得し、新たに生成された優先プロセスについては、使用率が所定値未満のときにだけ優先実行されるようにアフィニティ・マスクを書き換えることができる。使用率が所定値以上のときは、プロセス・スケジューラが、クロック・ブーストの設定がされた論理プロセッサだけでなく、未設定の論理プロセッサも含めてディスパッチするようにアフィニティを緩和した方が短時間で処理できる確率が高くなる場合があるからである。   The method of the present invention can be applied to a newly generated process each time. The control program obtains the usage rate of the logical processor for which clock boost is set, and the affinity mask is set so that the newly generated priority process is preferentially executed only when the usage rate is less than the predetermined value. Can be rewritten. When the usage rate is equal to or higher than the specified value, it is faster to relax the affinity so that the process scheduler dispatches not only logical processors with clock boost settings but also unconfigured logical processors. This is because the probability of being able to be processed may increase.

さらに制御プログラムは、論理プロセッサの温度を取得し、新たに生成された優先プロセスについては、温度が所定値未満のときにだけ優先実行されるようにアフィニティ・マスクを書き換えることができる。論理プロセッサの温度が高いときは、クロック・ブーストの設定がされていても実際に高い動作周波数で動作する確率が低いので、プロセス・スケジューラがクロック・ブーストの設定がされた論理プロセッサだけで実行するよりも他の論理プロセッサも含めて実行する論理プロセッサを選択した方が短時間で処理できる確率が高くなる場合があるからである。   Further, the control program can acquire the temperature of the logical processor, and the affinity mask can be rewritten so that the newly generated priority process is preferentially executed only when the temperature is lower than a predetermined value. When the logic processor is hot, the process scheduler runs only on the logic processor with the clock boost setting because the probability of actually operating at a high operating frequency is low even if the clock boost setting is set. This is because the probability of processing in a shorter time may be higher when a logical processor to be executed including other logical processors is selected.

クロック・ブーストの設定がされている論理プロセッサは非優先プロセスも実行し、また、各プロセスが論理プロセッサに与える負荷も時間的に変化する。クロック・ブーストの設定がされている論理プロセッサの使用率が所定値以上のときは、さらにクロック・ブーストの設定が可能な論理プロセッサが存在するか否かを判断することができる。そして、クロック・ブーストの設定がされている論理プロセッサの使用率が所定値以上でかつクロック・ブーストの設定が可能な論理プロセッサが存在するときに、新たな論理プロセッサにクロック・ブーストの追加的な設定をすることで、負荷の分散を図ることができる。   A logical processor in which clock boost is set also executes a non-priority process, and a load applied to the logical processor by each process also changes with time. When the usage rate of the logical processor for which clock boost is set is greater than or equal to a predetermined value, it can be determined whether or not there is a logical processor that can be further set for clock boost. Then, when the usage rate of the logical processor with the clock boost setting exceeds a predetermined value and there is a logical processor capable of setting the clock boost, an additional clock boost is added to the new logical processor. The load can be distributed by setting.

このとき優先実行されている優先プロセスおよび優先実行されていない優先プロセスまたはいずれか一方について、追加的にクロック・ブーストの設定がされた論理プロセッサも含めてディスパッチされるようにアフィニティ・マスクを書き換えることができる。優先プロセスの中には、生成されたときの論理プロセッサの使用率または論理プロセッサの温度などの条件により、優先実行されないものが存在する。クロック・ブーストの設定がされた論理プロセッサの使用率が所定値未満になったときに優先実行されない優先プロセスが存在する場合には、当該優先プロセスが優先実行されるようにアフィニティ・マスクを書き換えることができる。したがって、プロセスが生成されたときの使用率や温度の条件で一旦は優先実行されないことになった優先プロセスをその後の論理プロセッサの動作状態に基づいて優先実行されるようにすることができる。   At this time, rewrite the affinity mask so that the priority process that is preferentially executed and / or the priority process that is not preferentially executed are dispatched including the logical processor that is additionally set with clock boost. Can do. Some priority processes are not preferentially executed due to conditions such as the usage rate of the logical processor or the temperature of the logical processor when it is created. If there is a priority process that is not preferentially executed when the usage rate of a logical processor for which clock boost is set falls below a predetermined value, the affinity mask is rewritten so that the priority process is preferentially executed. Can do. Therefore, it is possible to preferentially execute a priority process that has not been preferentially executed once under the conditions of use rate and temperature when the process is generated, based on the subsequent operation state of the logical processor.

クロック・ブーストの設定をする論理プロセッサの数を増大させると、現実にクロック・ブーストする論理プロセッサに対する優先プロセスのアフィニティが薄れてしまい非優先プロセスとの差が少なくなっていく。したがって、全体の論理プロセッサの中でクロック・ブーストの設定ができる論理プロセッサの数には実質的な限界がある。よって、クロック・ブーストの設定がされた論理プロセッサの使用率が所定値以上まで上昇したときに、クロック・ブーストの追加的な設定が可能な論理プロセッサが存在しない場合がある。このとき、クロック・ブーストが未設定の論理プロセッサの使用率が所定値未満のときには、制御プログラムはクロック・ブーストが未設定の論理プロセッサでも優先プロセスが実行されるようにアフィニティ・マスクを書き換えて優先プロセスのアフィニティを緩和することができる。   When the number of logical processors for setting clock boost is increased, the affinity of the priority process with respect to the logical processor that actually performs the clock boost is reduced, and the difference from the non-priority process is reduced. Thus, there is a substantial limit to the number of logical processors that can be set for clock boost among the overall logical processors. Therefore, when the usage rate of the logical processor for which the clock boost is set increases to a predetermined value or more, there may be no logical processor that can additionally set the clock boost. At this time, if the usage rate of the logical processor for which clock boost is not set is less than the predetermined value, the control program rewrites the affinity mask so that the priority process is executed even for the logical processor for which clock boost is not set. Process affinity can be relaxed.

本発明により、マルチ・プロセッサ環境で特定のプロセスの処理時間を短縮する方法を提供することができた。さらに本発明によりフォアグラウンドのプロセスをバックグラウンドのプロセスよりも高い動作周波数の論理CPUで実行する機会を増大する方法を提供することができた。さらに本発明により、そのような方法を実現するコンピュータ・プログラムおよびコンピュータを提供することができた。   The present invention has provided a method for reducing the processing time of a specific process in a multi-processor environment. Furthermore, the present invention can provide a method for increasing the chance that a foreground process is executed by a logical CPU having a higher operating frequency than a background process. Further, according to the present invention, it is possible to provide a computer program and a computer that realize such a method.

本実施の形態にかかるコンピュータ・システムの主要なハードウエア構成を示す機能ブロック図である。It is a functional block diagram which shows the main hardware constitutions of the computer system concerning this Embodiment. コンピュータにおいて実現する優先プロセス処理システムのハードウエアおよびソフトウエアの構成を示す機能ブロック図である。It is a functional block diagram which shows the structure of the hardware and software of the priority process processing system implement | achieved in a computer. 優先プロセス処理システムで優先プロセスを実行する手順を示すフローチャートである。It is a flowchart which shows the procedure which performs a priority process in a priority process processing system. 優先プロセス処理システムで優先プロセスを実行する手順を示すフローチャートである。It is a flowchart which shows the procedure which performs a priority process in a priority process processing system. 優先プロセス処理システムで優先プロセスを実行する手順を示すフローチャートである。It is a flowchart which shows the procedure which performs a priority process in a priority process processing system. 優先プロセス処理システムで優先プロセスを実行する手順を示すフローチャートである。It is a flowchart which shows the procedure which performs a priority process in a priority process processing system. アフィニティ・マスクとパフォーマンス・フィルタのデータ構造および論理積演算の方法を説明する図である。It is a figure explaining the data structure of an affinity mask and a performance filter, and the method of an AND operation. プロセス・リストのデータ構造の一例を示す図である。It is a figure which shows an example of the data structure of a process list.

[コンピュータ・システムの構成]
図1は、本実施の形態にかかるコンピュータ・システム10の主要なハードウエア構成を示す機能ブロック図である。コンピュータ・システム10は、それぞれバス23に接続されたCPUパッケージ11、メイン・メモリ13、入力デバイス15、ハード・ディスク・ドライブ(HDD)17、液晶表示装置(LCD)19、およびBIOS_ROM21などを含んでいる。CPUパッケージ11は、複数のCPUコアを1つのパッケージに収めたマルチ・コア・プロセッサで、一例としてインテル社のターボ・ブースト・テクノロジーをサポートしている。
[Computer system configuration]
FIG. 1 is a functional block diagram showing a main hardware configuration of a computer system 10 according to the present embodiment. The computer system 10 includes a CPU package 11, a main memory 13, an input device 15, a hard disk drive (HDD) 17, a liquid crystal display (LCD) 19, a BIOS_ROM 21, and the like connected to the bus 23. Yes. The CPU package 11 is a multi-core processor in which a plurality of CPU cores are housed in one package, and supports Intel's turbo boost technology as an example.

ターボ・ブースト・テクノロジーは、CPUパッケージ11に熱的な余裕があるときにいずれかのCPUコアの動作周波数を一時的に上昇させてパフォーマンスを向上させながら、熱設計消費電力(TDP)の範囲に収めるという手法である。CPUパッケージ11は、OSが一時的なパフォーマンスの増大を要求し、さらに直近の所定時間の間測定した消費電力および電流の平均値がTDPなどの所定値以下ならびにCPUパッケージの温度が所定値以下の場合に、何らかの契機を捕らえていずれかのCPUコアの動作周波数を上昇させる。また条件が満たされなくなったときには、CPUコアの動作周波数を基本動作周波数に戻す。   Turbo Boost Technology is within the range of thermal design power consumption (TDP) while improving the performance by temporarily increasing the operating frequency of any CPU core when CPU package 11 has thermal margin. It is a method of storing. In the CPU package 11, the OS requires a temporary increase in performance, and the average value of power consumption and current measured during the most recent predetermined time is below a predetermined value such as TDP, and the temperature of the CPU package is below a predetermined value. In some cases, the operating frequency of any of the CPU cores is increased by capturing some opportunity. When the condition is not satisfied, the operating frequency of the CPU core is returned to the basic operating frequency.

このように一時的にCPUコアの動作周波数が上昇することをクロック・ブーストといい、クロック・ブーストするための消費電力、消費電流、および温度をブースト条件ということにする。クロック・ブーストする際には、特定のCPUコアが段階的に動作周波数を上昇させたり、クロック・ブーストするCPUコアを追加的に増やしたりすることができる。クロック・ブーストした高い動作周波数から基本動作周波数に戻るときはその逆の手順で行うことができる。   Such a temporary increase in the operating frequency of the CPU core is referred to as clock boost, and power consumption, current consumption, and temperature for clock boost are referred to as boost conditions. When performing clock boost, a specific CPU core can gradually increase the operating frequency, or the number of CPU cores to be clock boosted can be increased. When returning to the basic operating frequency from the clock-boosted high operating frequency, the reverse procedure can be used.

クロック・ブーストをさせる契機としては、一部のCPUコアのアイドル状態を検知する方法、環境温度の変化を利用する方法、およびプラットフォーム温度の変化を利用する方法などがある。またインテル社の新世代のターボ・ブースト・テクノロジーでは、CPUパッケージの周囲のプラットフォームまたはCPUパッケージの消費電力や温度が低下しているときに、消費電力や温度が上限に到達しない限り一時的にTDPを越えて動作周波数を上昇させる。   The trigger for clock boost includes a method of detecting an idle state of some CPU cores, a method of using a change in environmental temperature, and a method of using a change in platform temperature. In addition, Intel's new generation of turbo-boost technology will temporarily make TDP when the power consumption or temperature of the platform surrounding the CPU package or the CPU package is low, unless the power consumption or temperature reaches the upper limit. Increase the operating frequency beyond.

このような新世代のターボ・ブースト・テクノロジーでは、プラットフォームの消費電力や温度が低い状態のときに高負荷のアプリケーションを実行すると、それまでのヘッドルームを利用して実際の消費電力や温度が基準値に上昇するまでの短時間だけ以前のターボ・ブースト・テクノロジーよりも一層高い動作周波数で動作させることができるのでレスポンス・タイムを大幅に短縮できるという利点がある。旧世代および新世代のいずれのターボ・ブースト・テクノロジーでも、特定のプロセスを短時間で処理する目的で利用するためには、特定のプロセスが常にクロック・ブーストするCPUコアにスケジューリングされる必要がある。   With these new generations of turbo boost technology, if you run high-load applications when the platform power consumption and temperature are low, the actual power consumption and temperature will be used as a reference using the previous headroom. Since it can be operated at a higher operating frequency than the previous turbo boost technology only for a short time until it rises to the value, there is an advantage that the response time can be greatly shortened. Both old and new generation turbo boost technologies require a specific process to be scheduled on a CPU core that always clock boosts in order to use that specific process for a short time. .

なお、本発明はインテル社のターボ・ブースト・テクノロジーをサポートするマルチ・プロセッサ・システムに限定するものではなく、同等のクロック・ブーストを実行できる他のマルチ・プロセッサ・システムに適用することも可能である。さらに、本発明は1つのコンピュータ・システムにシングル・コアのCPUパッケージを複数設けて、その一部のCPUパッケージだけをクロック・ブーストするような場合にも適用できる。また、インテル社のハイパー・スレッディング(商標)という技術では、1つのプロセッサ・コアをOSに対して複数のプロセッサ・コアのように動作させる。本発明は、このような仮想化されたマルチ・プロセッサに適用することもできる。   Note that the present invention is not limited to multi-processor systems that support Intel's turbo boost technology, but can be applied to other multi-processor systems that can perform equivalent clock boost. is there. Further, the present invention can be applied to a case where a plurality of single core CPU packages are provided in one computer system and only a part of the CPU packages are clock boosted. In addition, in the technology called Intel's Hyper-Threading (trademark), one processor core is caused to operate like a plurality of processor cores with respect to the OS. The present invention can also be applied to such virtualized multiprocessors.

さらに、インテル社のインテル(登録商標)VTやAMD社のAMD−Vなどのようなソフトウエアで仮想化することでマルチ・プロセッサ環境を実現するシステムに適用することもできる。したがって、以後、クロック・ブーストの対象となるマルチ・プロセッサの単位を、ハードウエアおよびソフトウエアのいずれで実現する場合も含める意味で論理CPUということにする。BIOS_ROM21は、ACPI規格に適合するBIOSを格納している。   Furthermore, the present invention can be applied to a system that realizes a multi-processor environment by virtualizing with software such as Intel (registered trademark) VT of Intel Corporation or AMD-V of AMD Corporation. Therefore, hereinafter, the multi-processor unit that is the target of clock boosting will be referred to as a logical CPU in the sense that it includes both hardware and software. The BIOS_ROM 21 stores a BIOS that conforms to the ACPI standard.

[優先プロセス]
本実施の形態では、プロセスまたはその実行単位であるスレッドを優先順位が高く高速処理が要求されるフォアグラウンドのプロセス(以下、優先プロセスという。)をそれ以外のバックグラウンドのプロセス(以下、非優先プロセスという。)から区分する。すべてのプロセスは最低1つのスレッドを保有しており1つまたは複数のスレッドがCPUパッケージ11に対するスケジューリングの対象となって実行される。したがって、プロセスの実行といった場合はそのプロセスに含まれるスレッドを実行することを意味し、プロセスに対する設定はそれがスレッドに引き継がれる場合はスレッドに対する設定をも意味する。
[Priority process]
In this embodiment, a foreground process (hereinafter referred to as a priority process) in which a process or a thread that is an execution unit of the process has a high priority and a high-speed process is required is referred to as another background process (hereinafter referred to as a non-priority process). And so on. All processes have at least one thread, and one or more threads are executed as scheduling targets for the CPU package 11. Therefore, in the case of execution of a process, it means that a thread included in the process is executed, and a setting for a process also means a setting for a thread when it is inherited by a thread.

コンピュータ・システムを利用するユーザにとってユーザ・インターフェースのプロセスには短いレスポンス・タイムを期待するのが一般的である。したがって、優先プロセスの第1のグループは、ウインドウを作成しかつ実際にそれをLCD19に表示させるユーザ・インターフェースのプロセスとして定義する。なお、ユーザ・インターフェースのプロセスの中で、ウインドウを一番手前に表示しているフォアグラウンドのウインドウを表示しているプロセスをさらに優先度が高い優先プロセスとして定義することもできる。   It is common for a user using a computer system to expect a short response time for the user interface process. Thus, the first group of priority processes is defined as the user interface process that creates the window and actually displays it on the LCD 19. Of the user interface processes, the process displaying the foreground window displaying the window in the foreground can be defined as a priority process having a higher priority.

OSのスケジューラは、スレッドの優先度レベルを基準にして論理CPUにディスパッチするスレッドを選択する。スレッドの優先度レベルは、プロセスの優先度クラスと当該プロセス内のスレッドに割り当てられた相対優先度によって決まる。プログラムは、プロセスを生成するときに優先度クラスを設定し、スレッドを生成するときに相対優先度を設定することができる。優先度レベルの高いスレッドは、優先度レベルの低いスレッドよりも優先的にディスパッチされるので所定時間における論理CPUの割り当て時間が長くなり短い時間で処理することができる。ユーザは優先度クラスの高いスレッドが短時間で処理されることを期待しているので、優先プロセスの第2のグループは優先度クラスまたは優先度レベルの高いプロセスとして定義する。   The OS scheduler selects a thread to be dispatched to the logical CPU based on the priority level of the thread. The priority level of a thread is determined by the priority class of the process and the relative priority assigned to the threads in the process. A program can set a priority class when creating a process and set a relative priority when creating a thread. Since a thread with a high priority level is dispatched with a higher priority than a thread with a low priority level, the allocation time of a logical CPU in a predetermined time becomes longer and can be processed in a shorter time. Since the user expects a thread with a high priority class to be processed in a short time, the second group of priority processes is defined as a priority class or a process with a high priority level.

プロセッサの動作周波数が上昇することに伴いディスクI/Oがボトルネックになる場合が生じてくる。これを解決するために、たとえば、Windows Vista(登録商標)では、バックグラウンドで実行するウイルス対策プログラム、デフラグメンテーションのプログラム、またはメールの送受信プログラムなどのプロセスがフォアグラウンドのプロセスに影響を与えないように、バックグラウンドのプロセスのI/O処理優先度を下げることができる。したがって、優先プロセスの第3のグループはディスクI/O優先度の高いスレッドとして定義する。さらに、第1のグループから第3のグループのいずれにも属さないがユーザの個別の事情で優先プロセスの対象にする必要があるコンパイラやウイルス対策プログラムなどのプロセスを第4のグループの優先プロセスとして定義する。   As the operating frequency of the processor increases, the disk I / O may become a bottleneck. In order to solve this problem, for example, in Windows Vista (registered trademark), a process such as an anti-virus program, a defragmentation program, or a mail sending / receiving program running in the background is not affected. The I / O processing priority of the background process can be lowered. Therefore, the third group of priority processes is defined as a thread with a high disk I / O priority. Furthermore, a process such as a compiler or an anti-virus program that does not belong to any of the first group to the third group but needs to be a target of a priority process due to individual circumstances of the user is set as a priority process of the fourth group Define.

[優先プロセス処理システムの構成]
図2は、コンピュータ10において実現する優先プロセス処理システムのハードウエアおよびソフトウエアの構成を示す機能ブロック図である。優先プロセス処理システム100は、主として制御プログラム101、OS150、ACPIインターフェース170およびCPUパッケージ11で構成することができる。ただし、ソフトウエアがCPUパッケージ11で実行されて機能を発揮するためにはメイン・メモリ13およびバス23などの他のデバイスを利用する必要があるが、本発明の説明には特に必要がないので図2からは除いている。
[Configuration of priority process processing system]
FIG. 2 is a functional block diagram showing a hardware and software configuration of the priority process processing system realized in the computer 10. The priority process processing system 100 can be mainly composed of a control program 101, an OS 150, an ACPI interface 170, and a CPU package 11. However, it is necessary to use other devices such as the main memory 13 and the bus 23 in order for the software to be executed by the CPU package 11 and exhibit functions, but is not particularly necessary for the description of the present invention. Excluded from FIG.

CPUパッケージ11は、4つの論理CPU61、63、65、67とダイの温度を検出する温度センサ(図示せず)を含んでいる。CPUパッケージ11は、ACPIインターフェース170からCPUパッケージ11のブースト条件に関するデータおよびPステートを受け取って所定のアルゴリズムで1つまたは複数の論理CPUに対して自律的にクロック・ブーストの制御をすることができる。すなわち、CPUパッケージ11によるクロック・ブーストの制御は、OS150によるスケジューリングからは独立して行われる。また、OS150はCPUパッケージ11の中でいずれがクロック・ブーストの設定がされた論理CPUであるか、および現在実際にクロック・ブーストしているか否かを認識しない。   The CPU package 11 includes four logical CPUs 61, 63, 65, 67 and a temperature sensor (not shown) for detecting the temperature of the die. The CPU package 11 can receive data and a P state regarding the boost condition of the CPU package 11 from the ACPI interface 170, and can autonomously control clock boost for one or more logical CPUs with a predetermined algorithm. . That is, the clock boost control by the CPU package 11 is performed independently from the scheduling by the OS 150. Further, the OS 150 does not recognize which of the CPU packages 11 is a logical CPU for which clock boost is set and whether or not the clock boost is currently actually performed.

制御プログラム101は、優先プロセスをCPUパッケージ11において短時間で処理するためにOS150と協働して主体的な処理をする。具体的な処理の内容は、図3〜図6のフローチャートによる優先処理の手順において説明する。ホワイト・リスト103は、制御プログラム101が特定することができない第4のグループの優先プロセスを生成するプログラムの識別子を記録する。あるいは第1のグループから第3のグループの優先プロセスを制御プログラム101が特定しないで、ホワイト・リストにすべての優先プロセスを生成するプログラムの識別子を登録してもよい。ユーザはあらかじめ制御プログラム101が提供するインターフェースを通じてホワイト・リスト103にそのようなプログラムの識別子を登録することができる。   The control program 101 performs independent processing in cooperation with the OS 150 in order to process the priority process in the CPU package 11 in a short time. Details of the processing will be described in the priority processing procedure according to the flowcharts of FIGS. The white list 103 records an identifier of a program that generates a fourth group priority process that cannot be specified by the control program 101. Alternatively, the control program 101 does not specify the priority processes of the first group to the third group, and the identifiers of programs that generate all priority processes may be registered in the white list. The user can register such program identifiers in the white list 103 in advance through an interface provided by the control program 101.

パフォーマンス・フィルタ105は、論理CPU61、63、65、67の数に対応する4ビットのマスク・ビットで、ブースト条件が成立したときにクロック・ブーストする論理CPUの識別子を登録する。制御プログラム101は、動作を開始したときにシステム・コール関数を呼び出してOS150またはACPIインターフェース170から有効な論理CPUの識別子を取得し、その中の一部の論理CPUをクロック・ブーストの対象として選択してパフォーマンス・フィルタ105にビット・パターンを設定する。制御プログラム101がパフォーマンス・フィルタ105にクロック・ブーストの対象として設定した論理CPUに対応するACPIレジスタにPステートを設定することで、当該論理CPUに対するクロック・ブーストの設定が有効になる。   The performance filter 105 is a 4-bit mask bit corresponding to the number of logical CPUs 61, 63, 65, and 67, and registers the identifier of the logical CPU to be clock-boosted when the boost condition is satisfied. When starting the operation, the control program 101 calls a system call function to obtain a valid logical CPU identifier from the OS 150 or the ACPI interface 170, and selects some of the logical CPUs as targets for clock boosting. Then, a bit pattern is set in the performance filter 105. By setting the P state in the ACPI register corresponding to the logical CPU set as the clock boost target in the performance filter 105 by the control program 101, the clock boost setting for the logical CPU becomes valid.

クロック・ブーストの対象になった論理CPUは、ブースト条件が成立したときに限り一時的に動作周波数が増大するが、クロック・ブーストの設定がされた複数の論理CPUが実際にすべて同時にクロック・ブーストすることが保証されているわけではない。クロック・ブーストの設定をした論理CPUの数が増えるほど、実際にクロック・ブーストする時間的な割合が低下する論理CPUが増加する。そのような論理CPUが割り当てられた優先プロセスは、クロック・ブーストの恩恵を受けることができない。すべての論理CPUにクロック・ブーストの設定をすれば、優先プロセスと非優先プロセスのプロセッサ・アフィニティには差がなくなる。   The logical CPU that is the target of clock boosting temporarily increases its operating frequency only when the boost condition is satisfied, but the multiple logical CPUs that are set to clock boost are actually all at the same time. It is not guaranteed to do. As the number of logical CPUs for which clock boost is set increases, the number of logical CPUs for which the time ratio for actual clock boosting decreases increases. A priority process that is assigned such a logical CPU cannot benefit from clock boost. If clock boost is set for all logical CPUs, there is no difference in processor affinity between the priority process and the non-priority process.

したがって、全体の論理CPUの数に対してクロック・ブーストを設定する論理CPUの数の割合は適切に選定する必要がある。制御プログラム101は、一例として最初にディフォルトとして全体の50%の数の論理CPUまたは最低の数の論理CPUをクロック・ブーストの対象に選定し、その後、クロック・ブーストの対象になった論理CPUのCPU使用率が所定値以上のときに追加したり、所定値未満になったときに減らしたりして最適なクロック・ブーストの設定をすることができる。   Accordingly, it is necessary to appropriately select the ratio of the number of logical CPUs for setting the clock boost to the total number of logical CPUs. As an example, the control program 101 first selects 50% of the total number of logical CPUs or the minimum number of logical CPUs as the target of clock boosting as a default, and then selects the logical CPUs targeted for clock boosting. It is possible to set an optimum clock boost by adding when the CPU usage rate is equal to or higher than a predetermined value or decreasing when the CPU usage rate is lower than the predetermined value.

プロセス・リスト107は、優先プロセスについて作成されたアフィニティ・マスクのビット・パターンを登録する。制御プログラム101はシステム・コール関数を呼び出して、その時点で生成されているプロセスをエニュメレーションしたりあるいは新たに生成されるプロセスをフックしたりして、各プロセスが優先プロセスであるか否かを判断し、さらにそのアフィニティ・マスクのビット・パターンをプロセス・リスト107に登録する。   The process list 107 registers the bit pattern of the affinity mask created for the priority process. The control program 101 calls a system call function to enumerate a process created at that time or hook a newly created process to determine whether each process is a priority process. Further, the bit pattern of the affinity mask is registered in the process list 107.

制御プログラム101は、プロセス・リスト107に、優先プロセスについてOS150がディフォルトで設定したアフィニティ・マスクのビット・パターン、および当該プロセスを生成したプログラムがディフォルトのアフィニティ・マスクを書き換えた後のビット・パターンを登録する。以後、この2種類のアフィニティ・マスクをオリジナルのアフィニティ・マスクという。プロセス・リスト107にはさらに、制御プログラム101がオリジナルのアフィニティ・マスクを書き換えたあとのビット・パターンも登録する。   The control program 101 stores, in the process list 107, the bit pattern of the affinity mask set by default by the OS 150 for the priority process and the bit pattern after the program that generated the process rewrites the default affinity mask. sign up. Hereinafter, these two types of affinity masks are referred to as original affinity masks. Furthermore, a bit pattern after the control program 101 rewrites the original affinity mask is also registered in the process list 107.

CPU使用率メータ151は、各論理CPU61、63、65、67のCPU使用率を測定する。CPU使用率Yは、アイドル・プロセスのユーザ・モード時間をUi、アイドル・プロセスのカーネル・モード時間をKi、経過時間をEtとしたときに次の式で所定のプログラムが計算することができる。
Y=(1−(Ui+Ki)/Et)×100%
The CPU usage rate meter 151 measures the CPU usage rates of the logical CPUs 61, 63, 65, and 67. The CPU usage rate Y can be calculated by the following program using the following equation, where Ui is the user mode time of the idle process, Ki is the kernel mode time of the idle process, and Et is the elapsed time.
Y = (1− (Ui + Ki) / Et) × 100%

プロセス・スケジューラ153は、アフィニティ・マスク155に基づいて所定のアルゴリズムでスレッドを割り当てる論理CPU61、63、65、67を決定し実行可能キュー161、163、165、167からディスパッチする。プログラムは、プロセスを生成する際にプロセスの優先度クラスを設定し、さらに、スレッドの相対優先度を設定することができる。OS150は優先度クラスと相対優先度に基づいて、スレッドの優先度レベルを決定する。プロセス・スケジューラ153は、各スレッドの優先度レベルに基づいてスレッドをディスパッチする順序を決定する。   The process scheduler 153 determines logical CPUs 61, 63, 65 and 67 to which threads are assigned with a predetermined algorithm based on the affinity mask 155 and dispatches them from the executable queues 161, 163, 165 and 167. When creating a process, the program can set the priority class of the process, and can further set the relative priority of the threads. The OS 150 determines the priority level of the thread based on the priority class and the relative priority. The process scheduler 153 determines the order in which threads are dispatched based on the priority level of each thread.

アフィニティ・マスク155は、OS150がプロセスごとに生成するマスク・ビットで、ビット数は論理CPU61、63、65、67の数に対応する。アフィニティ・マスク155はオリジナルが維持されたものであったり、制御プログラム101によって書き換えられたものであったりする。アフィニティ・マスク155のビット・パターンは当該プロセスのプロセッサ・アフィニティを示し、当該プロセスが実行される論理CPUを指定する。あるプロセスについて生成されたアフィニティ・マスク155のビット・パターンは、そのプロセスに帰属するスレッドにも引き継がれる。したがって、アフィニティ・マスク155はプロセスに対応すると同時に配下のスレッドにも対応する。アフィニティ・マスク155および優先度レベルは、プロセス・スケジューラ153が実行可能キューに登録してスケジューリングをする対象となるデータ構造体の一部となる。   The affinity mask 155 is a mask bit generated by the OS 150 for each process, and the number of bits corresponds to the number of logical CPUs 61, 63, 65, and 67. The affinity mask 155 may be an original one or may be rewritten by the control program 101. The bit pattern of the affinity mask 155 indicates the processor affinity of the process and specifies the logical CPU on which the process is executed. The bit pattern of affinity mask 155 generated for a process is inherited by threads belonging to that process. Therefore, the affinity mask 155 corresponds to a process and a subordinate thread at the same time. The affinity mask 155 and priority level become part of the data structure that is to be scheduled by the process scheduler 153 registering in the executable queue.

プロセス・スケジューラ153は、アフィニティ・マスク155のビット・パターンに基づいて各スレッドについてディスパッチする論理CPUを決める。アフィニティ・マスク155に複数のビットが設定されている場合は、プロセス・スケジューラ153は設定されている論理CPUのいずれかにラウンド・ロビン方式などの所定のアルゴリズムに基づいてディスパッチする。実行可能キュー157には、実行可能状態になったスレッドのデータ構造体が登録される。各実行可能キュー161、163、165、167は、各論理CPU61、63、65、67に対応する。   The process scheduler 153 determines a logical CPU to dispatch for each thread based on the bit pattern of the affinity mask 155. When a plurality of bits are set in the affinity mask 155, the process scheduler 153 dispatches to any of the set logical CPUs based on a predetermined algorithm such as a round robin method. In the executable queue 157, a data structure of a thread that is in an executable state is registered. Each executable queue 161, 163, 165, 167 corresponds to each logical CPU 61, 63, 65, 67.

プロセス・スケジューラ153は、ディフォルトで用意した所定のクォンタムを付与したスレッドのデータ構造体を実行可能キュー157に登録する。さらに、アフィニティ・マスク155のビット・パターンにより指定された論理CPUに対応する実行可能キュー161、163、165、167のいずれかに登録する。実行可能キュー161、163、165、167のいずれかに登録されたスレッドは、他のスレッドとの優先度レベルに応じてやがて対応する論理CPU61、63、65、67にディスパッチされる。   The process scheduler 153 registers the data structure of the thread to which a predetermined quantum prepared by default is added in the executable queue 157. Further, it is registered in one of the executable queues 161, 163, 165, and 167 corresponding to the logical CPU designated by the bit pattern of the affinity mask 155. The thread registered in one of the executable queues 161, 163, 165, and 167 is eventually dispatched to the corresponding logical CPUs 61, 63, 65, and 67 according to the priority level with other threads.

たとえば、論理CPU61にディスパッチされたスレッドは与えられたクォンタムを消費すると対応する実行可能キュー161の最後に登録される。また、実行の途中で実行可能キュー161により優先度レベルの高いスレッドが登録されるとクォンタムをすべて消費する前であってもプリエンプトされて実行可能キュー161の先頭に登録される。I/O待ちなどのために待機状態に入ったスレッドは、再度実行可能キュー157に登録されその後実行可能キュー161、163、165、167を経由していずれかの論理CPU61、63、65、67にディスパッチされる。   For example, when a thread dispatched to the logical CPU 61 consumes a given quantum, it is registered at the end of the corresponding executable queue 161. Further, when a thread having a high priority level is registered in the executable queue 161 in the middle of execution, it is preempted and registered at the head of the executable queue 161 even before all the quantum is consumed. A thread that has entered a standby state due to I / O waiting or the like is registered again in the executable queue 157, and then passes through the executable queues 161, 163, 165, 167, and any one of the logical CPUs 61, 63, 65, 67. To be dispatched.

ACPIインターフェース170は、BIOSおよびACPIレジスタ(図示せず。)で構成される。BIOSは、ACPIレジスタにPステートを設定することでCPUパッケージ11のクロック・ブーストを制御することができる。BIOSは、ACPIレジスタに_PSS(Performance Supported States)、_PSD(P-State Dependency)、および_PPC(Performance Present Capabilities)という3つのオブジェクトを設定することで、所定の論理CPUを所定の動作周波数にクロック・ブーストすることができる。   The ACPI interface 170 includes a BIOS and an ACPI register (not shown). The BIOS can control the clock boost of the CPU package 11 by setting the P state in the ACPI register. The BIOS sets the three objects of _PSS (Performance Supported States), _PSD (P-State Dependency), and _PPC (Performance Present Capabilities) in the ACPI register, thereby setting a predetermined logical CPU to a predetermined operating frequency. You can boost it.

一例では_PPCに0を設定されたP0ステートの論理CPUはブースト条件が成立したときにクロック・ブーストして_PSSに設定された動作周波数を上限の動作周波数として動作する。_PPCに1が設定されたP1ステートの論理CPUはブースト条件が成立してもクロック・ブーストしないで基本動作周波数を上限の動作周波数として動作する。制御プログラム101は、パフォーマンス・フィルタ105のビット・パターンをACPIインターフェース170のACPIレジスタを通じてクロック・ブーストの対象となる論理CPUにPステートとして設定する。ACPIインターフェース170は、さらにCPUパッケージ11にブースト条件の判断に必要な消費電力、電流、および温度などのデータを提供する。   In one example, a logical CPU in the P0 state in which _PPC is set to 0 operates with the operating frequency set to _PSS as the upper limit operating frequency by clock boosting when the boost condition is satisfied. A logical CPU in the P1 state in which 1 is set to _PPC operates with the basic operating frequency as the upper limit operating frequency without clock boosting even if the boost condition is satisfied. The control program 101 sets the bit pattern of the performance filter 105 as the P state in the logical CPU to be clock boosted through the ACPI register of the ACPI interface 170. The ACPI interface 170 further provides the CPU package 11 with data such as power consumption, current, and temperature necessary for determining the boost condition.

図2に示した、各ソフトウエアはHDD17に格納され、ブート段階でメイン・メモリ13にロードされる。各ソフトウエアは、主としてCPUパッケージ11およびメイン・メモリ13で実行されたときに、ハードウエアと協働してコンピュータ10に所定の機能を発揮させるハードウエアとして捕らえることもできる。また、OS150はマルチ・プロセッサ・システムおよびマルチ・タスクに対応するものであれば、特に限定する必要はない。また、本発明は、既存のOSおよびクロック・ブーストのアルゴリズムを修正しないでも実現することができる。   Each software shown in FIG. 2 is stored in the HDD 17 and loaded into the main memory 13 at the boot stage. Each software can be regarded as hardware that, when executed mainly by the CPU package 11 and the main memory 13, causes the computer 10 to perform a predetermined function in cooperation with the hardware. The OS 150 is not particularly limited as long as it corresponds to a multi-processor system and a multi-task. The present invention can also be realized without modifying existing OS and clock boost algorithms.

[優先プロセスを処理する手順]
図3、図4、図5、図6は、優先プロセス処理システム100で優先プロセスを実行する手順を示すフローチャートである。図3は、制御プログラム101が動作を開始するまでに生成されているプロセスおよび新たに生成されるプロセスを処理する手順を示す。図4は、クロック・ブーストの設定がされた論理CPUのCPU使用率に応じて、ダイナミックにクロック・ブーストの設定を変更する手順を示す。
[Procedure for processing priority processes]
3, 4, 5, and 6 are flowcharts illustrating a procedure for executing a priority process in the priority process processing system 100. FIG. 3 shows a procedure for processing a process generated until the control program 101 starts an operation and a newly generated process. FIG. 4 shows a procedure for dynamically changing the clock boost setting in accordance with the CPU usage rate of the logical CPU for which the clock boost setting is set.

図5は、プロセスを生成したときのCPU使用率と温度の条件で、優先実行されない優先プロセスをその後のCPU使用率の低下に応じて優先実行する手順を示す。図6はクロック・ブーストの設定をした論理CPUのCPU使用率が上昇したときに優先プロセスのプロセッサ・アフィニティを緩和する手順を示す。図7はアフィニティ・マスク155とパフォーマンス・フィルタ105のデータ構造および論理積演算の方法を説明する図である。   FIG. 5 shows a procedure for preferentially executing a priority process that is not preferentially executed according to a subsequent decrease in the CPU usage rate under the conditions of the CPU usage rate and temperature when the process is generated. FIG. 6 shows a procedure for relaxing the processor affinity of the priority process when the CPU usage rate of the logical CPU for which the clock boost is set increases. FIG. 7 is a diagram for explaining the data structure of the affinity mask 155 and the performance filter 105 and the logical product operation method.

ブロック201でコンピュータ10が起動しHDD17に格納されたプログラムがブートを開始する。ブート・ファイルが順番にメイン・メモリ13にロードされて実行を開始するとブロック203でそれぞれのプログラムがプロセスを生成する。OS150またはACPIインターフェース170は、CPUパッケージ11に実装されている有効な論理CPUを調べる。ここでは、4つの論理CPU61、63、65、67がすべて有効になっているものとする。OS150はACPIインターフェース170を通じて論理CPU61、63、65、67にディフォルトで保有している_PSS、_PSD、_PPCのメソッドを設定する。   In block 201, the computer 10 is activated and the program stored in the HDD 17 starts to boot. When the boot file is sequentially loaded into the main memory 13 and execution is started, each program generates a process at block 203. The OS 150 or the ACPI interface 170 checks a valid logical CPU mounted on the CPU package 11. Here, it is assumed that all four logical CPUs 61, 63, 65, and 67 are enabled. The OS 150 sets the _PSS, _PSD, and _PPC methods held by default in the logical CPUs 61, 63, 65, and 67 through the ACPI interface 170.

ディフォルトのPステートでは、OS150は一例として論理CPU61だけをP0ステートに設定し、その他の論理CPU63、65、67をP1ステートに設定する。この場合、CPUパッケージ11は、ブースト条件が成立すれば論理CPU61の動作周波数だけを基本動作周波数よりも上昇させ、ブースト条件が成立しなくなったときには基本動作周波数に戻す。OS150は、生成されたプロセスのそれぞれに対してディフォルトのアフィニティ・マスク155を作成する。   In the default P state, for example, the OS 150 sets only the logical CPU 61 to the P0 state, and sets the other logical CPUs 63, 65, and 67 to the P1 state. In this case, the CPU package 11 raises only the operating frequency of the logical CPU 61 above the basic operating frequency if the boost condition is satisfied, and returns to the basic operating frequency when the boost condition is not satisfied. The OS 150 creates a default affinity mask 155 for each of the generated processes.

ディフォルトのアフィニティ・マスク155は、有効な論理CPU61、63、65、67のいずれにもディスパッチできるようにアフィニティ・マスク155の各ビットが1になっている。この様子を図7(A)のアフィニティ・マスク155aとして示す。また、プロセスを生成するプログラムはシステム・コール関数を呼び出してディフォルトで設定されたアフィニティ・マスク155を書き換えることができる。   Each bit of the affinity mask 155 is set to 1 so that the default affinity mask 155 can be dispatched to any valid logical CPU 61, 63, 65, 67. This state is shown as an affinity mask 155a in FIG. Further, a program for generating a process can rewrite the affinity mask 155 set by default by calling a system call function.

一例として論理CPU65、67だけが割り当てられるようにプログラムがディフォルトのアフィニティ・マスク155を書き換えた様子を、図7(B)のアフィニティ・マスク155cとして示す。アフィニティ・マスク155a、155cは、いずれもオリジナルのアフィニティ・マスクに相当する。プロセス・スケジューラ153がスケジューリングするのはプロセスではなくプログラムによりプロセスの実行単位として生成されたスレッドである。プロセスのアフィニティ・マスク155aは当該プロセスの内部で生成されるスレッドのアフィニティ・マスクに引き継がれている。なお、スレッドを生成するプログラムおよび制御プログラム101は、スレッドのアフィニティ・マスクを書き換えることもできる。   As an example, a state where the program rewrites the default affinity mask 155 so that only the logical CPUs 65 and 67 are assigned is shown as an affinity mask 155c in FIG. The affinity masks 155a and 155c all correspond to the original affinity mask. The process scheduler 153 schedules not a process but a thread generated as a process execution unit by a program. The process affinity mask 155a is inherited by the thread affinity mask generated inside the process. The thread generating program and the control program 101 can also rewrite the thread affinity mask.

プロセス・スケジューラ153は、アフィニティ・マスク155aに基づいて任意の論理CPU61、63、65、67にスレッドを自由に割り当てることができる。プロセス・スケジューラ153はまたアフィニティ・マスク155cに基づいて論理CPU65または論理CPU67のいずれかにスレッドを割り当てることができる。ただし、スケジューラ153はいわゆるソフト・アフィニティという手法に基づいてスレッドが論理CPU間を頻繁に移動しないように同一条件のスレッドを最後に実行した論理CPUに割り当てるようにスケジューリングすることもできる。   The process scheduler 153 can freely assign threads to any logical CPU 61, 63, 65, 67 based on the affinity mask 155a. Process scheduler 153 can also assign threads to either logical CPU 65 or logical CPU 67 based on affinity mask 155c. However, the scheduler 153 can also schedule based on a so-called soft affinity method so that a thread having the same condition is assigned to the last executed logical CPU so that the thread does not frequently move between logical CPUs.

CPUパッケージ11は、プロセス・スケジューラ153からは独立して論理CPU61の動作周波数を制御する。そして論理CPU61が割り当てられたスレッドは実行可能キュー161に登録されている間に当該論理CPU61が偶然にもクロック・ブーストすれば、実行可能キュー163、165、167に登録されたスレッドよりも短い待ち時間でディスパッチされる。また、論理CPU61にディスパッチされたスレッドは、当該論理CPU61が偶然にもそのときにクロック・ブーストすれば、実行可能キュー161に登録された他のスレッドよりも短い時間で処理される。アフィニティ・マスク155aを備えるいずれのスレッドも、クロック・ブーストした論理CPU61にディスパッチされる機会はあるがその確率は1/4で、さらに、論理CPU61にディスパッチされた時点で、論理CPU61がクロック・ブーストするとは限らない。ここまでは、従来の方法によるプロセスの制御手順である。   The CPU package 11 controls the operating frequency of the logical CPU 61 independently of the process scheduler 153. If the logical CPU 61 is accidentally clock boosted while the thread to which the logical CPU 61 is assigned is registered in the executable queue 161, the thread waits shorter than the threads registered in the executable queues 163, 165, and 167. Dispatched on time. Further, the thread dispatched to the logical CPU 61 is processed in a shorter time than other threads registered in the executable queue 161 if the logical CPU 61 happens to be clock-boosted at that time. Any thread that has an affinity mask 155a has an opportunity to be dispatched to the clock-boosted logical CPU 61, but the probability is 1/4, and when dispatched to the logical CPU 61, the logical CPU 61 is clock-boosted. Not always. Up to this point, the process control procedure is based on the conventional method.

制御プログラム101もブート・ファイルの一部を構成しておりブロック205で制御プログラム101が動作を開始する。制御プログラム101が、ブートの初期段階で動作を開始することによりそれ以後のブート段階でブート・ファイルの優先プロセスを短時間で処理することができるようになる。たとえば、メールに関するアプリケーションを起動後できるだけ早く動作させてメールを受信したいという場合は、そのアプリケーションが生成するプロセスを優先プロセスに選定してブート中にできるだけ早く実行させることができる。あるいは、制御プログラム101はブートの最終段階またはブートが完了した後に動作を開始するようにしてもよい。   The control program 101 also constitutes a part of the boot file, and the control program 101 starts operation at block 205. Since the control program 101 starts its operation at the initial stage of booting, the priority process of the boot file can be processed in a short time in the subsequent boot stage. For example, if it is desired to operate an application relating to mail as soon as possible after activation to receive mail, the process generated by the application can be selected as a priority process and executed as soon as possible during booting. Alternatively, the control program 101 may start operation after the final stage of booting or after booting is completed.

制御プログラム101は、パフォーマンス・フィルタ105に、論理CPU61、63に対応するビットを1に設定し、論理CPU65、67に対応するビットを0に設定する。制御プログラム101は、ブロック207でパフォーマンス・フィルタ105に基づいてACPIインターフェース170にPステートを設定する。BIOSは論理CPU61、63をP0ステートに設定し、論理CPU65、67をP1ステートに設定する。このときのパフォーマンス・フィルタ105を、図7(A)、図7(B)のパフォーマンス・フィルタ105aとして示す。 The control program 101 sets bits corresponding to the logical CPUs 61 and 63 to 1 and sets bits corresponding to the logical CPUs 65 and 67 to 0 in the performance filter 105. The control program 101 sets the P state in the ACPI interface 170 based on the performance filter 105 in block 207. The BIOS sets the logical CPUs 61 and 63 to the P0 state, and sets the logical CPUs 65 and 67 to the P1 state. The performance filter 105 at this time is shown as the performance filter 105a in FIGS. 7A and 7B.

その結果、CPUパッケージ11は論理CPU65、67が基本動作周波数を最大の動作周波数として動作し、論理CPU61、63はブースト条件が成立したときには基本動作周波数よりも高い動作周波数で動作し、ブースト条件が成立しないときは基本動作周波数を最大の動作周波数として動作する。CPUパッケージ11はブースト条件が成立したときは、同時に論理CPU61、63をクロック・ブーストしてもよいし、先に論理CPU61だけをクロック・ブーストし、さらに熱的な余裕がある場合には論理CPU63を追加的にクロック・ブーストするように動作周波数を制御してもよい。なお、各論理CPU61、63、65、67は、アイドル状態のときに基本動作周波数よりも低い動作周波数で動作してもよい。   As a result, in the CPU package 11, the logical CPUs 65 and 67 operate with the basic operating frequency as the maximum operating frequency, and the logical CPUs 61 and 63 operate at an operating frequency higher than the basic operating frequency when the boost condition is satisfied. When not established, the basic operating frequency is set to the maximum operating frequency. When the boost condition is satisfied, the CPU package 11 may clock-boost the logical CPUs 61 and 63 at the same time, or clock-boost only the logical CPU 61 first, and if there is a thermal margin, the logical CPU 63 The operating frequency may be controlled to additionally boost the clock. Each logical CPU 61, 63, 65, 67 may operate at an operating frequency lower than the basic operating frequency when in an idle state.

ブロック209で、制御プログラム101はシステム・コール関数を呼び出してその時点で生成されているプロセスの中から優先プロセスを特定する。最初に現時点で生成されているすべてのプロセスをエニュメレーションしてプロセス・ハンドルを取得し、その中でウインドウを生成しかつ実際に表示しているプロセスを第1のグループに分類される優先プロセスとして特定する。つぎに制御プログラム101は、システム・コール関数を呼び出して第1のグループの優先プロセスを除いた残りのプロセスのそれぞれの優先度クラスまたは優先度レベルを取得して優先度クラスまたは優先度レベルが所定レベル以上のプロセスを第2のグループに分類される優先プロセスとして特定する。   In block 209, the control program 101 calls a system call function to identify a priority process from among the processes created at that time. A priority process that initially enumerates all currently created processes to obtain process handles, and in which the process that creates the window and actually displays it is classified in the first group As specified. Next, the control program 101 calls a system call function to acquire each priority class or priority level of the remaining processes excluding the priority process of the first group, and the priority class or priority level is predetermined. Processes above the level are identified as priority processes that are classified into the second group.

たとえば、Windows(登録商標)では、アプリケーションはプロセスを生成するときにシステム・コール関数を呼び出してReal-time、High、Above Normal、Normal、Below Normal、Idleのいずれかの優先度クラスを指定することができる。アプリケーションはスレッドを生成するときにシステム・コール関数を呼び出してスレッドの相対優先度を設定することができる。Windows(登録商標)は指定された優先度クラスと相対優先度に基づいて、スレッドの優先度レベルを決定する。このとき制御プログラム101は、Above Normal以上の優先度クラスを指定したプロセスを第2のグループに分類される優先プロセスとすることができる。   For example, in Windows (registered trademark), when a process is created, an application calls a system call function to specify a priority class of Real-time, High, Above Normal, Normal, Below Normal, or Idle. Can do. When an application creates a thread, it can call a system call function to set the relative priority of the thread. Windows (registered trademark) determines the priority level of the thread based on the specified priority class and relative priority. At this time, the control program 101 can set a process in which a priority class of Above Normal or higher is designated as a priority process classified into the second group.

さらに制御プログラム101は、システム・コール関数を呼び出して第1のグループと第2のグループの優先プロセスを除いた残りのプロセスのそれぞれのディスクのI/O処理の優先度を取得し、I/O処理の優先度が所定レベル以上のプロセスを第3のグループに分類される優先プロセスとして特定する。具体的にはアプリケーションは、ディスクに対するI/O処理優先度をCritical、High、Normal、Low、Very Lowの5段階に設定することが可能でこれらのデータは、OSのI/OマネージャがI/Oドライバと通信するIRP(I/O Request Packet)にフラグとして設定される。このとき制御プログラム101は、High以上のI/O処理優先度を指定したプロセスを第3のグループに分類される優先プロセスとすることができる。   Further, the control program 101 calls the system call function to obtain the I / O processing priority of each disk of the remaining processes except the priority processes of the first group and the second group, and the I / O. A process having a processing priority of a predetermined level or higher is specified as a priority process classified into the third group. Specifically, the application can set the I / O processing priority for the disk in five stages: Critical, High, Normal, Low, and Very Low, and these data are stored in the I / O manager of the OS by the I / O manager. It is set as a flag in an IRP (I / O Request Packet) communicating with the O driver. At this time, the control program 101 can set a process specifying an I / O processing priority higher than High as a priority process classified into the third group.

最後に制御プログラム101はシステム・コール関数を呼び出して第1のグループから第3のグループの優先プロセスを除いた残りのプロセスの中で、ホワイト・リストに登録されているプログラムが生成する優先プロセスがあればそれを第4のグループの優先プロセスとして特定する。制御プログラム101は、優先プロセスを特定するたびにシステム・コール関数を呼び出して当該プロセスまたはスレッドに対応するオリジナルのアフィニティ・マスク155a、155cを書き換える。   Finally, the control program 101 calls the system call function and, among the remaining processes excluding the priority processes of the third group from the first group, the priority process generated by the program registered in the white list is If so, it is identified as the fourth group priority process. Each time the control program 101 specifies a priority process, it calls a system call function to rewrite the original affinity masks 155a and 155c corresponding to the process or thread.

制御プログラム101は各プロセスについて、ブロック203において作成されたオリジナルのアフィニティ・マスク155a、155cのビット・パターンを取得し、パフォーマンス・フィルタ105aのビット・パターンと論理積演算を行い、図7(A)、図7(B)に示すマスク・ビット171a、171bを計算する。そして図7(A)の場合は、オリジナルのアフィニティ・マスク155aのビット・パターンをマスク・ビット171aのビット・パターンで書き換えてアフィニティ・マスク155bを作成する。   For each process, the control program 101 acquires the bit pattern of the original affinity masks 155a and 155c created in the block 203, performs a logical AND operation with the bit pattern of the performance filter 105a, and FIG. , Mask bits 171a and 171b shown in FIG. 7B are calculated. In the case of FIG. 7A, the affinity mask 155b is created by rewriting the bit pattern of the original affinity mask 155a with the bit pattern of the mask bit 171a.

その結果、プロセス・スケジューラ153は当該プロセスが生成したスレッドをアフィニティ・マスク155bに基づいてスケジューリングするため、スレッドは論理CPU61または論理CPU63にだけディスパッチされ、論理CPU65、67では実行されないようになる。このときプロセス・スケジューラ153は、アフィニティ・マスク155bを有するスレッドを論理CPU61と論理CPU63の間でラウンド・ロビン方式によりスケジューリングすることができる。このようにクロック・ブーストの設定がされた論理CPU61、63だけで実行される優先プロセスを、優先実行される優先プロセスということにする。   As a result, since the process scheduler 153 schedules the thread generated by the process based on the affinity mask 155b, the thread is dispatched only to the logical CPU 61 or the logical CPU 63 and is not executed by the logical CPUs 65 and 67. At this time, the process scheduler 153 can schedule a thread having the affinity mask 155b between the logical CPU 61 and the logical CPU 63 by a round robin method. A priority process that is executed only by the logical CPUs 61 and 63 for which clock boost is set in this way is referred to as a priority process that is preferentially executed.

論理CPU61、63には、オリジナルのアフィニティ・マスク155aを備える非優先プロセスのスレッドもディスパッチされる。書き換えられたアフィニティ・マスク155bを備える優先プロセスのスレッドは、他の優先プロセスおよび非優先プロセスとの優先度レベルの上下関係に基づいて、実行可能キュー161、163から論理CPU61、63にディスパッチされる順序が決定される。しかし、論理CPU61、63は、クロック・ブーストするといずれのスレッドがディスパッチされていても論理CPU65、67よりも短時間で処理することができるので、優先プロセスの実行可能キュー161、163におけるディスパッチまでの待ち時間は短くなる。   The logical CPUs 61 and 63 are also dispatched with non-priority process threads that have the original affinity mask 155a. The thread of the priority process having the rewritten affinity mask 155b is dispatched from the executable queues 161 and 163 to the logical CPUs 61 and 63 on the basis of the priority level relationship with other priority processes and non-priority processes. The order is determined. However, since the logical CPUs 61 and 63 can process in a shorter time than the logical CPUs 65 and 67 when any thread is dispatched when the clock is boosted, the process up to the dispatch in the priority process executable queues 161 and 163 can be performed. The waiting time is shortened.

しかも、優先実行される優先プロセスのスレッドは、クロック・ブーストされる論理CPU61、63にだけディスパッチされるため、当該スレッドが実行されるときに実際にクロック・ブーストされる確率は高くなる。この2つの理由で論理CPU61、63だけにプロセッサ・アフィニティを有する優先プロセスは、非優先プロセスよりも短時間で処理されるようになる。   In addition, since the priority process thread that is preferentially executed is dispatched only to the logical CPUs 61 and 63 that are clock-boosted, there is a high probability that the thread is actually clock-boosted when the thread is executed. For these two reasons, a priority process having processor affinity only for the logical CPUs 61 and 63 is processed in a shorter time than a non-priority process.

図7(B)の場合は、オリジナルのアフィニティ・マスク155cのビット・パターンとパフォーマンス・フィルタ105aのビット・パターンを論理積演算すると、マスク・ビット・171bのようにすべてのビットが0になる。この場合は、制御プログラム101はディフォルトで設定されたアフィニティ・マスク155cを書き換えない。したがって、そのような優先プロセスは、クロック・ブーストしない論理CPU65、67にだけディスパッチされることになる。このようにクロック・ブーストの設定がされていない論理CPU65、67だけで実行される優先プロセスを、優先実行されない優先プロセスということにする。   In the case of FIG. 7B, if the bit pattern of the original affinity mask 155c and the bit pattern of the performance filter 105a are ANDed, all bits become 0 as in the mask bit 171b. In this case, the control program 101 does not rewrite the affinity mask 155c set by default. Therefore, such priority processes will only be dispatched to logical CPUs 65, 67 that do not clock boost. A priority process executed only by the logical CPUs 65 and 67 for which clock boost is not set as described above is referred to as a priority process that is not preferentially executed.

上記のように、優先プロセスであっても強制的にクロック・ブーストの設定がされた論理CPU61、63だけで実行しないのは、プログラムが指定した論理CPUを変更しないようにするためである。なお、当該プログラムにとっていずれの論理CPU61、63、65、67も等価であることが明らかな場合は、制御プログラム101は、パフォーマンス・フィルタ105aのビット・パターンで直接アフィニティ・マスク155cを書き換えることもできる。その場合は、オリジナルのアフィニティ・マスク155cのビット・パターンがいかなるものであっても、そのスレッドを必ずクロック・ブーストする論理CPU61、63だけにディスパッチすることができる。   As described above, the reason why the logical CPUs 61 and 63 forcibly set the clock boost is not executed even in the priority process is to prevent the logical CPU designated by the program from being changed. When it is clear that any logical CPU 61, 63, 65, 67 is equivalent to the program, the control program 101 can directly rewrite the affinity mask 155c with the bit pattern of the performance filter 105a. . In that case, whatever the bit pattern of the original affinity mask 155c, it can be dispatched only to the logical CPUs 61, 63 that always clock-boost that thread.

ブロック211では、制御プログラム101は、プロセス・リスト107に優先プロセスの識別子とそれに対応するアフィニティ・マスク155のビット・パターンを登録する。制御プログラム101は、オリジナルのアフィニティ・マスクと制御プログラム101により書き換えられたアフィニティ・マスクのそれぞれのビット・パターンを登録する。図8にプロセス・リスト107のデータ構造の一例を示す。図8では、制御プログラム101により書き換えられたアフィニティ・マスク155aのオリジナルのビット・パターンは省略している。   In block 211, the control program 101 registers the priority process identifier and the corresponding bit pattern of the affinity mask 155 in the process list 107. The control program 101 registers each bit pattern of the original affinity mask and the affinity mask rewritten by the control program 101. FIG. 8 shows an example of the data structure of the process list 107. In FIG. 8, the original bit pattern of the affinity mask 155a rewritten by the control program 101 is omitted.

優先プロセス1、2、3、4は、優先実行される優先プロセスのアフィニティ・マスクのビット・パターンを示す。優先プロセス1、2は、OS150がすべてのビットを1にするようにディフォルトで作成したオリジナルのアフィニティ・マスクを書き換えたビット・パターンを示し、優先プロセス3、4はプロセスを生成するプログラムが、OS150がディフォルトで作成したアフィニティ・マスクを書き換えたビット・パターンを示している。優先プロセス1、2の配下にあるスレッドは論理CPU61または論理CPU63にだけディスパッチされる。優先プロセス3の配下にあるスレッドは論理CPU61にだけディスパッチされ、優先プロセス4の配下にあるスレッドは論理CPU63にだけディスパッチされる。   The priority processes 1, 2, 3, and 4 indicate the bit pattern of the affinity mask of the priority process to be preferentially executed. The priority processes 1 and 2 indicate a bit pattern in which the original affinity mask created by default so that all bits are set to 1 by the OS 150, and the priority processes 3 and 4 are programs that generate processes. Shows a bit pattern in which the affinity mask created by default is rewritten. Threads under the priority processes 1 and 2 are dispatched only to the logical CPU 61 or the logical CPU 63. Threads under the priority process 3 are dispatched only to the logical CPU 61, and threads under the priority process 4 are dispatched only to the logical CPU 63.

したがって、優先プロセス1、2、3、4は、常にクロック・ブーストする論理CPU61、63だけで実行される。優先プロセス11、12、13は、プロセスを生成するプログラムが、OS150がディフォルトで作成したアフィニティ・マスクを書き換えたアフィニティ・マスクのビット・パターンを示しており、優先プロセス11、12、13の配下にあるスレッドは、クロック・ブーストしない論理CPU65または論理CPU67にだけディスパッチされるため優先実行されない。   Therefore, the priority processes 1, 2, 3, and 4 are always executed only by the logical CPUs 61 and 63 that perform clock boosting. The priority processes 11, 12, and 13 indicate the affinity mask bit pattern in which the process generation program rewrites the affinity mask created by the OS 150 by default, and the priority processes 11, 12, and 13 are under the priority processes 11, 12, and 13. A certain thread is not preferentially executed because it is dispatched only to the logical CPU 65 or the logical CPU 67 that does not clock-boost.

ブロック213では、新たなプロセスが生成される。制御プログラム101はDLLインジェクションを利用して、新たに生成されるプロセスをフックする。制御プログラム101は、システム・コール関数を呼び出して、ブロック209と同じ手順で当該プロセスが優先プロセスであるか否かを判断する。優先プロセスでないと判断した場合は、プロセス・スケジューラ153は当該非優先プロセスをオリジナルのアフィニティ・マスク155a、155cに基づいてディスパッチし、ブロック213に戻ってつぎの新たなプロセスを処理する。   At block 213, a new process is created. The control program 101 hooks a newly generated process using DLL injection. The control program 101 calls a system call function to determine whether the process is a priority process in the same procedure as in block 209. If it is determined that the process is not a priority process, the process scheduler 153 dispatches the non-priority process based on the original affinity masks 155a and 155c, and returns to block 213 to process the next new process.

ブロック215で制御プログラム101が新たなプロセスが優先プロセスであると判断した場合はブロック217に移行する。制御プログラム101は、ACPIインターフェース170を通じてCPUパッケージ11または各論理CPU61、63、65、67の温度を取得し、CPUパッケージ11の温度が所定値未満かまたはすべての論理CPU61、63、65、67の温度が所定値未満か否かを調べ、所定値未満の場合は温度条件が成立したと判断する。   If the control program 101 determines in block 215 that the new process is a priority process, the process proceeds to block 217. The control program 101 acquires the temperature of the CPU package 11 or each of the logical CPUs 61, 63, 65, 67 through the ACPI interface 170, and the temperature of the CPU package 11 is less than a predetermined value or all of the logical CPUs 61, 63, 65, 67. It is checked whether the temperature is lower than a predetermined value. If the temperature is lower than the predetermined value, it is determined that the temperature condition is satisfied.

さらに、制御プログラム101はCPU使用率メータ151からクロック・ブーストの対象となっている論理CPU61および論理CPU63のCPU使用率を取得して所定値未満か否かを調べ、いずれも所定値未満の場合は使用率条件が成立したと判断する。温度条件または使用率条件のいずれかが成立しない場合は、制御プログラム101はブロック221に移行して新たに生成されたプロセスを優先プロセスとして登録し、オリジナルのアフィニティ・マスク155a、155cは書き換えない。   Further, the control program 101 acquires the CPU usage rates of the logical CPU 61 and the logical CPU 63 that are the targets of clock boost from the CPU usage rate meter 151 and checks whether or not they are less than the predetermined value. Determines that the usage rate condition is satisfied. If either the temperature condition or the usage rate condition is not satisfied, the control program 101 proceeds to block 221 to register the newly generated process as a priority process, and the original affinity masks 155a and 155c are not rewritten.

スケジューラ153は当該優先プロセスに帰属するスレッドを、オリジナルのアフィニティ・マスク155a、155cに基づいてディスパッチする。この場合の優先プロセスの一例を図8の優先プロセス21、22、23として示している。このように、温度条件または使用率条件によりクロック・ブーストの設定がされた論理CPU61、63とクロック・ブーストの設定がされていない論理CPU65、67のいずれでも実行される可能性がある優先プロセス21、22、23も優先実行されない優先プロセスということにする。   The scheduler 153 dispatches threads belonging to the priority process based on the original affinity masks 155a and 155c. An example of the priority process in this case is shown as priority processes 21, 22, and 23 in FIG. As described above, the priority process 21 that can be executed by either the logical CPUs 61 and 63 in which the clock boost is set according to the temperature condition or the usage rate condition and the logical CPUs 65 and 67 in which the clock boost is not set. , 22 and 23 are also priority processes that are not preferentially executed.

なお、温度条件または使用率条件が成立しない場合でも、プロセスを生成するプログラムが論理CPU61、63だけを指定するようにアフィニティ・マスクを書き換えた場合は、オリジナルのアフィニティ・マスクとして採用されて優先実行される優先プロセスとなるが、そのような状態は本発明のプロセス制御の範囲から外れる。プロセス・スケジューラ153は、優先プロセス21、22、23の配下にあるスレッドを論理CPU61、63、65、67のいずれかにディスパッチする。ブロック221でプロセス・リスト107への登録が終了すると制御プログラム101はブロック213に戻って新たなプロセスの生成を待つ。   Even if the temperature condition or usage rate condition is not satisfied, if the affinity mask is rewritten so that the process generation program specifies only the logical CPUs 61 and 63, it is adopted as the original affinity mask and preferentially executed. Such a state is outside the scope of the process control of the present invention. The process scheduler 153 dispatches the threads under the priority processes 21, 22, and 23 to any of the logical CPUs 61, 63, 65, and 67. When the registration to the process list 107 is completed in block 221, the control program 101 returns to block 213 and waits for the generation of a new process.

ブロック217の手順では、優先プロセスであっても、クロック・ブーストの対象となる論理CPU61、63のその時点でのCPU使用率が高い場合は優先実行されない。その理由は論理CPU61、63のCPU使用率が高い場合は、多くの優先プロセスおよび非優先プロセスまたは負荷の大きなプロセスがそこで実行されているため、新たな優先プロセスは他の論理CPU65、67も実行先に含めた方が短時間で処理できる可能性が高い場合があるからである。   In the procedure of block 217, even if it is a priority process, if the CPU usage rate at that time of the logical CPUs 61 and 63 to be clock boosted is high, the priority process is not executed. The reason is that when the CPU usage rate of the logical CPUs 61 and 63 is high, many priority processes and non-priority processes or processes with a large load are executed there, so that the new priority process also executes the other logical CPUs 65 and 67. This is because the possibility of processing in a shorter time is higher in the case of inclusion first.

また、温度が高い場合は、論理CPU61、63が実際にクロック・ブーストする頻度が少ないと考えられ、同様に他の論理CPU65、67も実行先に含めた方が短時間で処理できる可能性が高い場合があるからである。なお、クロック・ブーストの設定がされた論理CPU61のCPU使用率が高く論理CPU63のCPU使用率が低い場合は、制御プログラム101が新たな優先プロセスに論理CPU63だけを割り当てるようにアフィニティ・マスク155を書き換えてもよい。   Also, when the temperature is high, it is considered that the frequency of the logical CPUs 61 and 63 actually performing the clock boost is low, and similarly, the other logical CPUs 65 and 67 may be processed in a shorter time if they are included in the execution destination. Because it may be expensive. When the CPU usage rate of the logical CPU 61 for which the clock boost is set is high and the CPU usage rate of the logical CPU 63 is low, the affinity mask 155 is set so that the control program 101 assigns only the logical CPU 63 to the new priority process. You may rewrite it.

ブロック217で温度条件と使用率条件のいずれも成立した場合には、ブロック219に移行してブロック209で説明した方法で制御プログラム101は当該プロセスに対するアフィニティ・マスク155を書き換える。さらに、当該プロセスをプロセス・リスト107に登録する。ブロック217〜221の手順では、新たなプロセスが生成されるたびにCPUパッケージ11の温度条件と使用率条件に基づいて優先プロセスを優先実行するか否かを制御した。   When both the temperature condition and the usage rate condition are satisfied in block 217, the process proceeds to block 219, and the control program 101 rewrites the affinity mask 155 for the process by the method described in block 209. Further, the process is registered in the process list 107. In the procedure of blocks 217 to 221, whether or not the priority process is preferentially executed is controlled based on the temperature condition and usage rate condition of the CPU package 11 every time a new process is generated.

論理CPU61、63には非優先プロセスもディスパッチされ、また、それらの負荷も時間的に変化する。本実施の形態では優先プロセスの優先度クラスおよびスレッドの優先度レベルは変更しないため、論理CPU61、63の実行可能キュー161、162に登録されるスレッドの数が多くなると論理CPU61、63のCPU使用率が大きくなって優先プロセスがディスパッチされるまでの待ち時間が長くなる可能性がある。   Non-priority processes are also dispatched to the logical CPUs 61 and 63, and their loads also change over time. In this embodiment, since the priority class of the priority process and the priority level of the thread are not changed, if the number of threads registered in the executable queues 161 and 162 of the logical CPUs 61 and 63 increases, the CPU usage of the logical CPUs 61 and 63 is increased. There is a possibility that the waiting time until the rate is increased and the priority process is dispatched becomes long.

この状態を解消するために図3のブロック219に続く図4のブロック301では、制御プログラム101は定期的にCPU使用率メータ151から各論理CPU61、63、65、67のCPU使用率を取得する。ブロック303では、クロック・ブーストの設定がされた論理CPU61、63のCPU使用率がいずれも所定値以上であるか否かを判断する。いずれかの論理CPUのCPU使用率が所定値未満の場合は図5のブロック401に移行し、いずれの論理CPU61、63のCPU使用率も所定値以上の場合はブロック305に移行する。なお、ブロック303のCPU使用率の閾値はブロック217のCPU使用率の閾値よりも大きくすることができる。   In order to eliminate this state, in block 301 of FIG. 4 following block 219 of FIG. 3, the control program 101 periodically acquires the CPU usage rate of each logical CPU 61, 63, 65, 67 from the CPU usage rate meter 151. . In block 303, it is determined whether or not the CPU usage rates of the logical CPUs 61 and 63 for which clock boost is set are equal to or greater than a predetermined value. If the CPU usage rate of any of the logical CPUs is less than the predetermined value, the process proceeds to block 401 in FIG. 5, and if the CPU usage rate of any of the logical CPUs 61 and 63 is greater than or equal to the predetermined value, the process proceeds to block 305. Note that the CPU usage rate threshold of the block 303 can be made larger than the CPU usage rate threshold of the block 217.

ブロック305では、制御プログラム101は、パフォーマンス・フィルタ105を参照してさらにクロック・ブーストの設定が可能な論理CPUが存在するか否かを判断する。すでに全体の論理CPUの数に対するクロック・ブーストの設定を許容する論理CPUの数の割合が所定値を越えている場合は、それ以上他の論理CPUにクロック・ブーストの設定をすることができないので、図6のブロック421に移行する。   In block 305, the control program 101 refers to the performance filter 105 to determine whether there is a logical CPU that can be further set for clock boost. If the ratio of the number of logical CPUs that allow the setting of the clock boost to the total number of logical CPUs already exceeds the predetermined value, the clock boost cannot be set for other logical CPUs. The process proceeds to block 421 in FIG.

たとえば、論理CPU65に対して追加的にクロック・ブーストの設定が可能な場合はブロック307に移行する。ブロック307では制御プログラム101はパフォーマンス・フィルタ105のビット・パターンを論理CPU65に対応するビットが1になるように追加的に書き換える。さらに書き換えたビット・パターンに基づいてACPIインターフェース170を通じて論理CPU65を追加的にP0ステートに変更する。   For example, when the clock boost can be additionally set for the logical CPU 65, the process proceeds to block 307. In block 307, the control program 101 additionally rewrites the bit pattern of the performance filter 105 so that the bit corresponding to the logical CPU 65 becomes 1. Further, the logical CPU 65 is additionally changed to the P0 state through the ACPI interface 170 based on the rewritten bit pattern.

ブロック309では、制御プログラム101はシステム・コール関数を呼び出して、図8のプロセス・リスト107から選択した優先プロセスのアフィニティ・マスク155のビット・パターンを書き換える。書き換えの対象として選択する優先プロセスは、優先実行される優先プロセス1、2、3、4のグループ、プログラムが指定したアフィニティの条件で優先実行されない優先プロセス11、12、13、14のグループまたは使用率条件または温度条件により優先実行されない優先プロセス21、22、23のグループのいずれかとすることができる。   In block 309, the control program 101 calls a system call function to rewrite the bit pattern of the affinity mask 155 of the priority process selected from the process list 107 of FIG. The priority process selected as the target of rewriting is a group of priority processes 1, 2, 3, and 4 that are preferentially executed, a group of priority processes 11, 12, 13, and 14 that are not preferentially executed under the affinity conditions specified by the program It can be any of the groups of priority processes 21, 22, and 23 that are not preferentially executed due to a rate condition or a temperature condition.

あるいは制御プログラム101は、プロセス・リスト107に登録されたすべての優先プロセスを書き換えの対象として選択することができる。制御プログラム101は、選択した優先プロセスのアフィニティ・マスク155を、図3のブロック209で行ったようにパフォーマンス・フィルタ105と、オリジナルのアフィニティ・マスク155a、155cとの論理積演算を行う方法で書き換えることができる。   Alternatively, the control program 101 can select all priority processes registered in the process list 107 as rewrite targets. The control program 101 rewrites the affinity mask 155 of the selected priority process by a method of performing an AND operation between the performance filter 105 and the original affinity masks 155a and 155c as performed in the block 209 of FIG. be able to.

その結果、論理CPU65に対応するビットが1のオリジナルのアフィニティ・マスクを有する優先プロセス1、2のような優先プロセスは、論理CPU65でも優先実行されるようにアフィニティ・マスクが書き換えられる。オリジナルのアフィニティ・マスクが論理CPU61、63を指定していないが論理CPU65を指定していた優先プロセス11、13のような優先プロセスは、始めて優先実行されるようになる。さらに、ブロック217の使用率条件または温度条件で優先実行されない優先プロセス21、22、23も優先実行されるようになる。ブロック311では、アフィニティ・マスク155を書き換えたプロセスについてプロセス・リスト107を更新する。   As a result, the affinity mask is rewritten so that the priority processes such as priority processes 1 and 2 having the original affinity mask whose bit corresponding to the logical CPU 65 is 1 are also preferentially executed by the logical CPU 65. A priority process such as the priority processes 11 and 13 in which the original affinity mask does not specify the logical CPUs 61 and 63 but specifies the logical CPU 65 is preferentially executed for the first time. Furthermore, priority processes 21, 22, and 23 that are not preferentially executed under the usage rate condition or temperature condition of block 217 are also preferentially executed. In block 311, the process list 107 is updated for the process in which the affinity mask 155 is rewritten.

前述のようにプロセス・スケジューラ153のスケジュール制御とCPUパッケージ101のクロック・ブースト制御は非同期で行われ、クロック・ブーストの設定をしても実際にクロック・ブーストする頻度はそのときのシステムの状態により変化する。そして、クロック・ブーストする論理プロセッサの数を増加するほど、優先プロセスと非優先プロセスの差が少なくなる。クロック・ブーストする論理プロセッサの最適な数は、すべての優先プロセスの平均的な処理時間が最小になるときの数であるといえる。   As described above, the schedule control of the process scheduler 153 and the clock boost control of the CPU package 101 are performed asynchronously. Even if the clock boost is set, the frequency of the actual clock boost depends on the state of the system at that time. Change. As the number of logical processors to be clock boosted is increased, the difference between the priority process and the non-priority process is reduced. The optimal number of logical processors for clock boosting is the number at which the average processing time of all priority processes is minimized.

したがって、クロック・ブーストした論理プロセッサのCPU使用率が低下したような場合は、クロック・ブーストする論理プロセッサの数を減らして、優先プロセスがディスパッチされる論理プロセッサがクロック・ブーストする頻度を増大させたほうが効果的である。ブロック313では、制御プログラム101はクロック・ブーストの設定をした論理プロセッサのCPU使用率が所定値よりも低下したときには、ブロック307に戻って、Pステートを変更してクロック・ブーストする論理プロセッサの数を減らすことができる。そしてブロック309で図3のブロック209の手順に基づいてアフィニティ・マスク155を書き換えブロック311でプロセス・リスト107を更新する。ブロック313でCPU使用率が所定値以上の場合は図3のブロック213に戻る。   Therefore, in cases where the CPU utilization of a clock-boosted logical processor has decreased, the number of logical processors to be clock-boosted has been reduced to increase the frequency with which the logical processor to which the priority process is dispatched is clock-boosted. Is more effective. In block 313, when the CPU usage rate of the logical processor for which the clock boost setting has been set falls below a predetermined value, the control program 101 returns to block 307 to change the P state and the number of logical processors to be clock boosted. Can be reduced. In block 309, the affinity mask 155 is rewritten based on the procedure in block 209 in FIG. 3, and the process list 107 is updated in block 311. If the CPU usage rate is greater than or equal to the predetermined value in block 313, the process returns to block 213 in FIG.

図3のブロック217で論理CPU61、63のCPU使用率が一旦は所定値を越えても、その後のプロセスの状態が変化して、それらのCPU使用率が下がる可能性がある。一方、ブロック217では、温度条件または使用率条件により優先実行されない優先プロセスが発生している。論理CPU61、63に余裕がでた場合には、優先実行されない状態の優先プロセスをいち早く優先実行される状態に移行させることが望ましい。   Even if the CPU usage rates of the logical CPUs 61 and 63 once exceed a predetermined value in the block 217 of FIG. 3, the state of the subsequent processes may change and the CPU usage rates may decrease. On the other hand, in block 217, a priority process that is not preferentially executed due to a temperature condition or a usage rate condition occurs. When there is a margin in the logical CPUs 61 and 63, it is desirable to shift the priority process that is not preferentially executed to a state that is preferentially executed.

ブロック303に続く図5のブロック401では、制御プログラム101はクロック・ブーストの対象となる論理CPU61、63のCPU使用率がいずれも所定値未満であるか否かを判断する。ブロック401の所定値はブロック303の所定値よりも小さい。いずれかの論理CPUのCPU使用率が所定値以上の場合は図3のブロック213に戻る。いずれの論理CPUもCPU使用率が所定値未満の場合は、ブロック403に移行する。   In block 401 of FIG. 5 following block 303, the control program 101 determines whether or not the CPU usage rates of the logical CPUs 61 and 63 to be clock-boosted are less than a predetermined value. The predetermined value in block 401 is smaller than the predetermined value in block 303. If the CPU usage rate of any logical CPU is equal to or greater than the predetermined value, the process returns to block 213 in FIG. In any logical CPU, if the CPU usage rate is less than the predetermined value, the process proceeds to block 403.

ブロック403では制御プログラム101はプロセス・リスト107を参照し、クロック・ブーストの対象となる論理CPU61、63とともに対象外の論理CPU65、67も割り当てられていることで優先実行されない優先プロセス21、23、25があるか否かを判断する。なお、クロック・ブーストの対象とならない論理CPU65、67だけが割り当てられていることで優先実行されない優先プロセス11、12、13は、プロセスを生成するプログラムが論理CPU61、63での実行を指定していないので移行の対象から除外する。

In block 403, the control program 101 refers to the process list 107, and the priority processes 21, 23, which are not preferentially executed because the logical CPUs 61, 63 that are the targets of the clock boost and the logical CPUs 65, 67 that are not the targets are assigned. Whether or not there is 25 is determined. Note that the priority processes 11, 12, and 13 that are not preferentially executed because only the logical CPUs 65 and 67 that are not subject to clock boost are assigned are designated to be executed by the logical CPUs 61 and 63. Since it is not, exclude it from the target of migration.

対象となる優先実行されない優先プロセスがない場合はブロック213に戻る。対象となる優先プロセスがある場合は、ブロック405に移行して制御プログラム101は図3のブロック209で採用したオリジナルのアフィニティ・マスク155aとパフォーマンス・フィルタ105の論理積演算を行う方法を用いて、オリジナルのアフィニティ・マスク155を書き換える。ブロック427では制御プログラム101は、アフィニティ・マスク155を書き換えたプロセスについて、プロセス・リスト107を更新する。   If there is no priority process that is not subject to priority execution, the process returns to block 213. If there is a target priority process, the process proceeds to block 405, and the control program 101 uses the original affinity mask 155a adopted in block 209 in FIG. Rewrite the original affinity mask 155. In block 427, the control program 101 updates the process list 107 for the process in which the affinity mask 155 is rewritten.

クロック・ブーストの設定がされた論理CPU61、63のCPU使用率が上昇したときに、追加的にクロック・ブーストの設定ができる論理CPUが存在しない場合でも、クロック・ブーストの設定がされていない論理CPU65、67のCPU使用率が低い場合は、プロセッサ・アフィニティを緩和して優先プロセスを優先実行しないようにした方が早く処理できる場合がある。図4のブロック305に続く図6のブロック421では、制御プログラム101はクロック・ブーストの対象でない論理CPU65、67のCPU使用率が所定値未満であるかどうかを調べる。   When the CPU usage rate of the logic CPUs 61 and 63 for which the clock boost is set increases, even if there is no logic CPU that can additionally set the clock boost, the logic for which the clock boost is not set If the CPU usage rates of the CPUs 65 and 67 are low, processing may be faster if the processor affinity is relaxed and the priority process is not preferentially executed. In block 421 in FIG. 6 following block 305 in FIG. 4, the control program 101 checks whether the CPU usage rates of the logical CPUs 65 and 67 that are not the target of clock boost are less than a predetermined value.

論理CPU65、67のいずれかのCPU使用率が所定値以上の場合は、クロック・ブーストの対象となる論理CPU61、63の負荷を他の論理CPU65、67に分散することはできないと判断して図3のブロック213に戻る。論理CPU65、67の両方のCPU使用率が所定値未満の場合はブロック423に移行して、制御プログラム101はプロセス・リスト107を参照し、優先実行されている優先プロセスの中から所定数のプロセスを抽出して、オリジナルのアフィニティ・マスクのビット・パターンに戻す。   When the CPU usage rate of either of the logical CPUs 65 and 67 is equal to or greater than a predetermined value, it is determined that the load of the logical CPUs 61 and 63 that are the targets of clock boost cannot be distributed to the other logical CPUs 65 and 67. Return to block 213 of FIG. When the CPU usage rates of both the logical CPUs 65 and 67 are less than the predetermined value, the process shifts to block 423, and the control program 101 refers to the process list 107, and a predetermined number of processes among the priority processes that are preferentially executed. To the original affinity mask bit pattern.

あるいは当該プロセスにとってすべての論理CPU61、63、65、67が等価であることが明らかな場合は、制御プログラム101はそのような優先プロセスが論理CPU61、63、65、67に分散してディスパッチされるように、アフィニティ・マスク155を図7(A)のオリジナルのアフィニティ・マスク155aのように書き換える。あるいは制御プログラム101は、それらのプロセスが論理CPU65、67だけにディスパッチされるようにアフィニティ・マスク155を書き換える。ブロック425では、制御プログラム101はアフィニティ・マスク155を書き換えた優先プロセスについてプロセス・リスト107を更新し、ブロック213に戻る。   Alternatively, when it is clear that all the logical CPUs 61, 63, 65, and 67 are equivalent to the process, the control program 101 dispatches such priority processes in a distributed manner to the logical CPUs 61, 63, 65, and 67. Thus, the affinity mask 155 is rewritten like the original affinity mask 155a of FIG. Alternatively, the control program 101 rewrites the affinity mask 155 so that these processes are dispatched only to the logical CPUs 65 and 67. In block 425, the control program 101 updates the process list 107 for the priority process for which the affinity mask 155 has been rewritten, and returns to block 213.

これまで、優先プロセスは4つのグループのいずれかに属していればすべて同等に扱ってきた。優先プロセスの中には他の優先プロセスより短時間で処理したいものがある。たとえば、ウインドウを有するプロセスの中でもフォアグラウンドのウインドウについては、ユーザはより短時間で応答を得ることを期待する。また、ACPIインターフェースは論理CPUを、同じPステートであっても異なる動作周波数に設定することができる。この特質を利用すれば、優先プロセスの中でより短時間で処理する必要のある最優先プロセスがより高い動作周波数の論理CPUだけで動作するようにアフィニティ・マスクを書き換えることができる。   So far, priority processes have been treated equally if they belong to one of four groups. Some priority processes want to be processed in a shorter time than other priority processes. For example, for a foreground window among processes with windows, the user expects to get a response in a shorter time. The ACPI interface can set the logical CPU to different operating frequencies even in the same P state. By using this characteristic, the affinity mask can be rewritten so that the highest priority process that needs to be processed in a shorter time in the priority process operates only with a logical CPU having a higher operating frequency.

すべての優先プロセスの平均的な処理時間を最短にするために、最適なクロック・ブーストの設定をする論理CPUの数は、システムの動作状態で常に変化する。図4ではCPU使用率に基づいてダイナミックにPステートおよびアフィニティ・マスクを変更する方法を説明したが、論理CPUの数を制御するために、各論理CPUだけにディスパッチされるダミー・プロセスを生成してその処理時間を測定する方法もある。   In order to minimize the average processing time of all priority processes, the number of logical CPUs with optimal clock boost settings always changes with the operating state of the system. In FIG. 4, the method of dynamically changing the P-state and the affinity mask based on the CPU usage rate has been described. However, in order to control the number of logical CPUs, a dummy process that is dispatched only to each logical CPU is generated. There is also a method for measuring the processing time.

たとえば、各論理CPU61、63、65、67でそれぞれ中間的な優先度レベルのダミー・プロセスを実行させ、その処理時間に基づいて実際のクロック・ブーストの状況を把握して、Pステートを変更することもできる。あるいは、ACPIインターフェース170から直接各論理CPUがクロック・ブーストした頻度またはクロック・ブーストしている時間を取得してPステートを変更することもできる。さらに、ACPIインターフェース170測定した各論理CPUの温度や平均消費電力に基づいて制御プログラム101がダイナミックにPステートの変更をすることも可能である。   For example, each logical CPU 61, 63, 65, 67 executes a dummy process with an intermediate priority level, grasps the actual clock boost status based on the processing time, and changes the P state. You can also. Alternatively, it is also possible to change the P-state by obtaining the frequency or time during which each logical CPU is clock boosted directly from the ACPI interface 170. Further, the control program 101 can dynamically change the P state based on the temperature and average power consumption of each logical CPU measured by the ACPI interface 170.

これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。   Although the present invention has been described with the specific embodiments shown in the drawings, the present invention is not limited to the embodiments shown in the drawings, and is known so far as long as the effects of the present invention are achieved. It goes without saying that any configuration can be adopted.

10…コンピュータ
11…CPUパッケージ
100…優先プロセス処理システム
101…制御プログラム
150…オペレーティング・システム
DESCRIPTION OF SYMBOLS 10 ... Computer 11 ... CPU package 100 ... Priority process processing system 101 ... Control program 150 ... Operating system

Claims (14)

負荷の大きさに関連する条件に基づいて一時的に一部の論理プロセッサの動作周波数を上昇させるクロック・ブーストが可能な複数の論理プロセッサを備えるコンピュータに、
前記複数の論理プロセッサのいずれかに前記クロック・ブーストの設定をするステップと、
新たに生成されるプロセスがフォアグラウンドのウインドウを表示する優先プロセスか否かを判断するステップと、
前記クロック・ブーストの設定がされた論理プロセッサの使用率を取得するステップと、
前記使用率が所定値未満のときに前記優先プロセスのアフィニティ・マスクを書き換え、前記優先プロセスを前記クロック・ブーストの設定がされた論理プロセッサだけにディスパッチして優先実行するステップと
を有する処理を実行させるコンピュータ・プログラム。
In a computer comprising a plurality of logical processors capable of clock boosting that temporarily increases the operating frequency of some logical processors based on conditions related to the magnitude of the load ,
Setting the clock boost to any of the plurality of logical processors;
Determining whether the newly created process is a preferred process that displays a foreground window;
Obtaining a usage rate of a logical processor in which the clock boost is set;
Rewriting the affinity mask of the priority process when the usage rate is less than a predetermined value, and dispatching the priority process only to the logical processor for which the clock boost is set to execute the processing. Computer program to let you.
前記優先実行するステップが、オリジナルのアフィニティ・マスクと前記複数の論理プロセッサのそれぞれに対する前記クロック・ブーストの設定状態を示すマスク・ビットを論理積演算するステップを含む請求項に記載のコンピュータ・プログラム。 The computer program according to claim 1 , wherein the step of preferentially executing includes ANDing a mask bit indicating an original affinity mask and a setting state of the clock boost for each of the plurality of logical processors. . 前記優先実行するステップが、前記クロック・ブーストの設定がされた論理プロセッサだけを指定するように前記アフィニティ・マスクを書き換えるステップを含む請求項1または請求項2に記載のコンピュータ・プログラム。 3. The computer program according to claim 1 , wherein the step of preferential execution includes a step of rewriting the affinity mask so as to specify only a logical processor for which the clock boost is set. 前記論理プロセッサの温度を取得するステップを有し、
前記アフィニティ・マスクをさらに前記温度が所定値未満のときに書き換える請求項1から請求項3のいずれかに記載のコンピュータ・プログラム。
Obtaining a temperature of the logical processor;
The computer program according to any one of claims 1 to claim 3 wherein the temperature is al the affinity mask rewrites when less than the predetermined value.
前記クロック・ブーストが未設定の論理プロセッサが存在するか否かを判断するステップと、
前記クロック・ブーストが未設定の論理プロセッサが存在しかつ前記クロック・ブーストの設定がされた論理プロセッサの使用率が所定値以上のときに、前記未設定の論理プロセッサに前記クロック・ブーストの追加的な設定をするステップと
を有する請求項1から請求項4のいずれかに記載のコンピュータ・プログラム。
Determining whether there is a logical processor for which the clock boost is not set;
When there is a logical processor for which the clock boost is not set and the usage rate of the logical processor for which the clock boost is set is equal to or higher than a predetermined value, the clock boost is added to the non-set logical processor. The computer program according to any one of claims 1 to 4 , further comprising a step of making an appropriate setting.
アフィニティ・マスクが書き換えられた前記優先プロセスが前記クロック・ブーストの設定がされた論理プロセッサだけで実行されるように前記優先プロセスのアフィニティ・マスクを書き換えるステップを有する請求項に記載のコンピュータ・プログラム。 6. The computer program according to claim 5 , further comprising the step of rewriting the affinity mask of the priority process so that the priority process with the rewritten affinity mask is executed only by the logical processor set with the clock boost. . 前記クロック・ブーストの設定がされた論理プロセッサの使用率が所定値未満のときに前記クロック・ブーストが未設定の論理プロセッサにもディスパッチされて優先実行されない優先プロセスが存在するか否かを判断するステップと、
前記優先実行されない優先プロセスが優先実行されるように前記アフィニティ・マスクを書き換えるステップと
を有する請求項1から請求項6のいずれかに記載のコンピュータ・プログラム。
When the usage rate of the logical processor for which the clock boost is set is less than a predetermined value, it is determined whether there is a priority process that is dispatched to the logical processor for which the clock boost is not set and is not preferentially executed. Steps,
The computer program according to claim 1 , further comprising a step of rewriting the affinity mask so that the priority process that is not preferentially executed is preferentially executed.
前記クロック・ブーストが未設定の論理プロセッサの使用率を取得するステップと、
前記クロック・ブーストの設定がされた論理プロセッサの使用率が所定値以上でかつ前記クロック・ブーストが未設定の論理プロセッサの使用率が所定値未満のときに前記優先プロセスが前記クロック・ブーストが未設定の論理プロセッサでも実行されるように前記アフィニティ・マスクを書き換えるステップと
を有する請求項1から請求項7のいずれかに記載のコンピュータ・プログラム。
Obtaining a utilization of a logical processor for which the clock boost is not set ;
When the usage rate of the logical processor to which the clock boost is set is equal to or higher than a predetermined value and the usage rate of the logical processor to which the clock boost is not set is less than the predetermined value, the priority process is not set to the clock boost. The computer program according to claim 1 , further comprising a step of rewriting the affinity mask so as to be executed by a setting logical processor.
前記優先プロセスを、スレッドの優先度に基づいて決定する請求項1から請求項のいずれかに記載のコンピュータ・プログラム。 The priority process, the computer program as claimed in any one of claims 8 to determine based on thread priority. 前記優先プロセスが、ディスクI/O処理の優先度に基づいて決定される請求項1から請求項のいずれかに記載のコンピュータ・プログラム。 The priority process, the computer program according to any one of claims 1 to 9, which is determined based on the priority of the disk I / O processing. 請求項1から請求項10のいずれかに記載のコンピュータ・プログラムを記憶したコンピュータによる読み取り可能な記録媒体を備えるコンピュータ。A computer comprising a computer-readable recording medium storing the computer program according to any one of claims 1 to 10. マルチ・プロセッサ・システムを搭載するコンピュータであって、
負荷の大きさに関連する条件に基づいて一時的に一部の論理プロセッサの動作周波数を上昇させるクロック・ブーストが可能な複数の論理プロセッサと、
前記複数の論理プロセッサのいずれかに前記クロック・ブーストの設定をする設定手段と、
新たに生成されるプロセスがフォアグラウンドのウインドウを表示する優先プロセスか否かを判断する判定手段と、
前記クロック・ブーストの設定がされた論理プロセッサの使用率を取得する使用率取得手段と、
前記使用率が所定値未満のときに前記優先プロセスのアフィニティ・マスクを書き換え、前記優先プロセスを前記クロック・ブーストの設定がされた論理プロセッサだけにディスパッチして優先実行する実行手段と
を有するコンピュータ。
A computer with a multi-processor system,
A plurality of logical processors capable of clock boosting to temporarily increase the operating frequency of some logical processors based on conditions associated with the magnitude of the load ;
Setting means for setting the clock boost to any of the plurality of logical processors;
Determining means for determining whether or not the newly generated process is a priority process for displaying a foreground window;
Usage rate acquisition means for acquiring a usage rate of a logical processor in which the clock boost is set;
Execution means for rewriting the affinity mask of the priority process when the usage rate is less than a predetermined value, and dispatching the priority process only to the logical processor for which the clock boost is set to execute the priority process. Having a computer.
前記負荷の大きさに関連する条件が、前記論理プロセッサの温度が基準値未満でかつ消費電力が熱設計消費電力を越えている範囲に設定されている請求項12に記載のコンピュータ。 The computer according to claim 12 , wherein the condition related to the magnitude of the load is set in a range in which the temperature of the logical processor is less than a reference value and the power consumption exceeds the thermal design power consumption. 前記複数の論理プロセッサが1つのパッケージに複数のプロセッサ・コアが実装されたマルチ・コア・プロセッサで構成されている請求項12または請求項13に記載のコンピュータ。 The computer according to claim 12 or 13 , wherein the plurality of logical processors are configured by a multi-core processor in which a plurality of processor cores are mounted in one package.
JP2010190752A 2010-08-27 2010-08-27 Method and computer for processing a specific process in a short time Active JP5345990B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010190752A JP5345990B2 (en) 2010-08-27 2010-08-27 Method and computer for processing a specific process in a short time

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010190752A JP5345990B2 (en) 2010-08-27 2010-08-27 Method and computer for processing a specific process in a short time

Publications (2)

Publication Number Publication Date
JP2012048545A JP2012048545A (en) 2012-03-08
JP5345990B2 true JP5345990B2 (en) 2013-11-20

Family

ID=45903322

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010190752A Active JP5345990B2 (en) 2010-08-27 2010-08-27 Method and computer for processing a specific process in a short time

Country Status (1)

Country Link
JP (1) JP5345990B2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11768702B2 (en) 2020-02-07 2023-09-26 Samsung Electronics Co., Ltd. Electronic device for scheduling based on heterogeneous multi-processor and operating method thereof

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8910177B2 (en) * 2011-04-14 2014-12-09 Advanced Micro Devices, Inc. Dynamic mapping of logical cores
US8793515B2 (en) * 2011-06-27 2014-07-29 Intel Corporation Increasing power efficiency of turbo mode operation in a processor
JP5915406B2 (en) * 2012-06-22 2016-05-11 富士通株式会社 Control method of portable terminal device, control program, and portable terminal device
WO2015196343A1 (en) * 2014-06-24 2015-12-30 Intel Corporation Virtual machine power management
US9779058B2 (en) * 2015-07-13 2017-10-03 Google Inc. Modulating processsor core operations
JP6569185B1 (en) 2018-06-14 2019-09-04 レノボ・シンガポール・プライベート・リミテッド Information processing apparatus, information processing apparatus control method, and program
JP6767548B1 (en) * 2019-07-26 2020-10-14 レノボ・シンガポール・プライベート・リミテッド Information processing equipment, control methods and programs
CN113009999A (en) * 2019-12-20 2021-06-22 华为技术有限公司 Power adjustment method and device for processor

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4809157A (en) * 1985-09-30 1989-02-28 International Business Machines Corp. Dynamic assignment of affinity for vector tasks
JPH10143380A (en) * 1996-11-07 1998-05-29 Hitachi Ltd Multiprocessor system
US7412353B2 (en) * 2005-09-28 2008-08-12 Intel Corporation Reliable computing with a many-core processor
WO2007098424A2 (en) * 2006-02-17 2007-08-30 Qualcomm Incorporated System and method for multi-processor application support
JP2009069921A (en) * 2007-09-11 2009-04-02 Hitachi Ltd Multiprocessor system
JP5053964B2 (en) * 2008-09-12 2012-10-24 レノボ・シンガポール・プライベート・リミテッド Information processing apparatus, window processing method thereof, and computer-executable program

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11768702B2 (en) 2020-02-07 2023-09-26 Samsung Electronics Co., Ltd. Electronic device for scheduling based on heterogeneous multi-processor and operating method thereof

Also Published As

Publication number Publication date
JP2012048545A (en) 2012-03-08

Similar Documents

Publication Publication Date Title
JP5345990B2 (en) Method and computer for processing a specific process in a short time
JP6646114B2 (en) Dynamic virtual machine sizing
JP5433837B2 (en) Virtual computer system, virtual computer control method, and program
Sridharan et al. Adaptive, efficient, parallel execution of parallel programs
US11181970B2 (en) System and method for performing distributed power management without power cycling hosts
US8296773B2 (en) Systems and methods for thread assignment and core turn-off for integrated circuit energy efficiency and high-performance
CN108549574B (en) Thread scheduling management method and device, computer equipment and storage medium
EP2885707B1 (en) Latency sensitive software interrupt and thread scheduling
US20090172428A1 (en) Apparatus and method for controlling power management
JP5385347B2 (en) Method and computer for enlarging free memory in main memory
TWI489266B (en) Instruction that specifies an application thread performance state
US20090320031A1 (en) Power state-aware thread scheduling mechanism
JP2009093665A (en) Apparatus and method for multi-threaded processors performance control
JP5200085B2 (en) Method and computer for starting computer in a short time
US20120284720A1 (en) Hardware assisted scheduling in computer system
US12079612B2 (en) Firmware boot task distribution to enable low latency boot performance
US20130191839A1 (en) Information processing apparatus, control method therefor, and computer-readable storage medium
KR20240150909A (en) Electronic system and method for task scheduling
TW201243618A (en) Load balancing in heterogeneous computing environments
Polanczyk Extending the semantics of scheduling priorities

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120106

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130424

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130612

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130815

R150 Certificate of patent or registration of utility model

Ref document number: 5345990

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250