JP6070150B2 - 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム - Google Patents

情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム Download PDF

Info

Publication number
JP6070150B2
JP6070150B2 JP2012273986A JP2012273986A JP6070150B2 JP 6070150 B2 JP6070150 B2 JP 6070150B2 JP 2012273986 A JP2012273986 A JP 2012273986A JP 2012273986 A JP2012273986 A JP 2012273986A JP 6070150 B2 JP6070150 B2 JP 6070150B2
Authority
JP
Japan
Prior art keywords
thread
communication control
executes
mode
execution unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012273986A
Other languages
English (en)
Other versions
JP2014119918A (ja
Inventor
耕太 中島
耕太 中島
彰 成瀬
彰 成瀬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012273986A priority Critical patent/JP6070150B2/ja
Priority to US14/066,737 priority patent/US9389923B2/en
Publication of JP2014119918A publication Critical patent/JP2014119918A/ja
Application granted granted Critical
Publication of JP6070150B2 publication Critical patent/JP6070150B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/458Synchronisation, e.g. post-wait, barriers, locks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Power Sources (AREA)

Description

本発明は、情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラムに関する。
近年、ビジネスアプリケーションの分野において、レスポンスの速度の向上などが求められることが増えてきている。ビジネスアプリケーションとしては、証券取引、データベース処理又はゲームなどのアプリケーションがある。例えば、証券取引システムでは、取引が成立するまでの時間の許容範囲が、従来はmsec単位であったものが、近年ではμsec単位になってきている。また、データベース処理では、高いIOPS(Input/Output Per Second)が求められてきている。さらに、最近のゲームでは、実時間性が重要になってきており、高速な処理が求められている。
このようなことから、ビジネスアプリケーションの分野では、各サーバ間の通信時間を短縮するために低遅延サーバ間通信技術が用いられることが増えてきている。
低遅延サーバ間通信技術としては、スーパーコンピュータといったHigh Performance Computing(HPC)の分野において、例えば、片道1μsec以下の通信を行うInfiniBand(インフィニバンド)などの技術が提供されている。
このような低遅延サーバ間通信技術におけるデータの受信を検知するための受信検知方式として、割り込み方式又はポーリング方式といった方式が用いられることがある。
割り込み方式は、データを受信した場合に割り込みが発生し、割り込みの発生を契機にデータの受信処理が実行される方法である。一方、ポーリング方式は、データの受信処理を起動させた状態で、データを受信したか否かを定期的に確認するポーリングを行い、データを受信していれば受信処理を進ませる方法である。割り込み方式では、割り込みが発生してから受信処理が動作するため、遅延が2〜3μsecとなる場合がある。これに対して、ポーリング方式では、受信処理は最初から起動しているため、遅延は1μsec以下というように割り込み方式よりも短く抑えることができる。ただし、ポーリング方式は、ポーリングを実行している間、その処理を行う部位を占有してしまう。例えば、演算処理部であるCPU(Central Processing Unit)コアの単位で処理が割り振られる場合、ポーリング方式ではポーリングの間、データ受信処理が1つのCPUコアを占有してしまう。
この点、従来のHPCアプリケーションの場合、実施される処理の数がCPUコアの数以下であったため、ポーリング方式による受信検出を行った場合でも、データの受信処理がCPUコアを占有することの弊害は少なかった。しかし、ビジネスアプリケーションの場合、実施する処理の数が多くCPUコアの数を超えてしまう。この場合、データ受信処理によるCPUコアの占有が他の処理に影響を与えてしまうおそれがある。
さらに、CPUコアの占有を回避するため、SMT(Simultaneous Multi-Threading)を利用したポーリングが提案されている。SMTとは、演算処理部としてのCPUコア又はCPUコアに含まれる実行部がそれぞれ別個に処理を行うスレッドという単位にプログラムを分け、各スレッドの処理を複数のCPUコア又は実行部により同時に実行させるCPUの機能である。SMTを用いてポーリングを行う場合、例えば、1つのスレッドはアプリケーションの実行用とし、他の1つのスレッドをポーリング用としてCPUコア又は実行部を動作させる。このポーリングを行うスレッドを、以下では「通信制御スレッド」と呼ぶ。これにより、ポーリングを行うデータ受信処理は通信制御スレッドのみを占有することとなり、ポーリングを行っている場合でも CPUコア又は実行部は、他のスレッドでアプリケーションを実行することができる。
ここで、複数のCPUコアがそれぞれ別の処理を実行するマルチタスクの技術として、各CPUコアが周辺機器に処理依頼を行い、あるCPUコアが処理結果を待つ状態のタスクは優先度を下げる従来技術がある(例えば、特許文献1参照)。また、I/Oドライバに対して処理要求を行った後、Operation System(OS)の負荷が所定値以下であれば、割り込み要求を禁止した上で、I/Oデバイスにポーリングを行い、所定時間経過後割り込み要求の禁止を解除する従来技術がある(例えば、特許文献2参照)。
また、メイン処理装置の代わりにタスクを実行する補助処理装置を有し、補助処理装置の動作に基づいてメイン処理装置を省電力モードに移行させる従来技術もある(例えば、特許文献3参照)。
特開2006−260377号公報 特開2001−216170号公報 特開2005−346708号公報
しかしながら、SMTを用いた場合にも、各スレッドが共通で利用するCPUコアの資源が存在する。そのため、通信制御スレッドがポーリングを行っている場合のCPUコアの資源の消費により、アプリケーションを実行しているスレッドの性能の低下を招いてしまうおそれがある。
また、補助処理装置にタスクを実行させる技術は、ポーリングの状態に対応させて省電力モードの動作を制御する技術であり、アプリケーションの実行に対するポーリングの影響は考慮されていない。そのため、この技術を用いても、ポーリングによるアプリケーションの処理への影響を軽減することは困難である。また、複数のCPUコアが個別に周辺機器に処理依頼を行う従来技術やOSの負荷が所定値以下の場合にポーリングを行う従来技術では、CPUコア毎に処理が行われているマルチタスクを対象としており、SMTを用いた場合については考慮されていない。したがって、このような従来技術を用いても、SMTのように1つのCPUコアの中で複数のスレッドを動作させる状況で、高い通信性能とアプリケーションの処理能力の維持とを両立させることは困難である。
開示の技術は、上記に鑑みてなされたものであって、高い通信性能を維持しつつアプリケーションの処理性能の低下を抑制する情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラムを提供することを目的とする。
本願の開示する情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラムは、一つの態様において、ポーリングによる受信処理が割り当てられた通信制御スレッドを含む複数のスレッドをそれぞれ実行する演算処理部を備える。前記演算処理部は、自己において実行される複数の前記スレッドの中の何れかが各々に割り当てられ、且つ、割り当てられたスレッドを実行する複数のスレッド実行部を有する。前記スレッド実行部のうち、前記通信制御スレッドを実行するスレッド実行部は、データの到着の通知を示すメモリ領域に対してポーリングを行いデータの到着まで受信処理の実行を待機し、且つ、他のスレッドを実行するスレッド実行部が、前記他のスレッドに割り当てられた処理を実行している場合、物理資源の使用を抑制する省消費資源モードに遷移することを特徴とする。
本願の開示する情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラムの一つの態様によれば、高い通信性能を維持しつつアプリケーションの処理性能の低下を抑制することができるという効果を奏する。
図1は、実施例1に係る情報処理システムの構成を示す構成図である。 図2は、スレッドを説明するための図である。 図3は、スレッドが使用するCPUコアの資源を説明するための図である。 図4は、消費資源モードとCPUコアの省電力モードとの関係を示す図である。 図5は、各消費資源モードでの受信処理及びアプリケーション処理の関係を説明するための図である。 図6は、実施例1に係る各スレッドの消費資源モードの設定の一例を説明するための図である。 図7は、実施例1に係るアプリスレッドのIdleルーチンにおける動作のフローチャートである。 図8は、実施例1に係る通信制御スレッドのIdleルーチンにおける動作のフローチャートである。 図9は、実施例1に係る通信制御スレッドのmpollルーチンにおける動作のフローチャートである。 図10は、実施例1に係る各スレッドの動作モード及び消費資源モードの遷移の一例を示すタイムチャートである。 図11は、ポーリングによるアプリケーション処理への影響を説明するための図である。 図12は、実施例2に係る各スレッドの消費資源モードの設定の一例を説明するための図である。 図13は、実施例2に係るアプリスレッドのIdleルーチンにおける動作のフローチャートである。 図14は、実施例2に係る通信制御スレッドのIdleルーチンにおける動作のフローチャートである。 図15は、実施例2に係る通信制御スレッドのmpollルーチンにおける動作のフローチャートである。 図16は、実施例2に係る各スレッドの動作モード及び消費資源モードの遷移の一例を示すタイムチャートである。 図17は、情報処理システムの他の構成を示す構成図である。
以下に、本願の開示する情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラムの実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラムが限定されるものではない。
図1は、実施例1に係る情報処理システムの構成を示す構成図である。図1に示すように、本実施例に係る情報処理システムは情報処理装置であるサーバ1及びサーバ2を有している。
サーバ1は、CPUコア10及び11、メモリ12、I/O(Input/Output)13、I/O14、メモリコントローラ15、並びにI/Oブリッジ16を有している。そして、CPUコア10及び11とメモリコントローラ15とはバスで接続されており、メモリコントローラ15とメモリ12とはバスで接続されている。また、メモリコントローラ15とI/Oブリッジ16とはバスで接続されており、I/Oブリッジ16とI/O13及びI/O14とはバスで接続されている。ここで、I/O13は、ディスクなどである。
I/O14は、ホスト チャネル アダプタ(Host Channel Adapter:HCA)などのインフィニバンド用の通信路である。
サーバ2も同様に、CPUコア20及び21、メモリ22、I/O23、I/O24、メモリコントローラ25、並びにI/Oブリッジ26を有している。また、サーバ2における各部の接続もサーバ1と同様である。
サーバ1とサーバ2とは、例えば、インフィニバンド用のバス3で接続されている。ここで、説明の便宜上、図1ではサーバ1及びサーバ2はバス3により互いに接続されているが、実際には、サーバ1とサーバ2とはスイッチを経由して接続されている。また、本実施例では、説明の便宜上、サーバ1及びサーバ2という2台のサーバのみを記載しているが、複数であればサーバの台数に特に制限はなく、それぞれがインフィニバンド用のケーブルを用いたバス3で接続されていればよい。
そして、バス3には、ネットワークスイッチ4が接続されている。ネットワークスイッチ4は、バス3を介して送受信されるデータの伝送経路を制御する。
次に、サーバ1及びサーバ2の各部について詳細に説明する。サーバ1及びサーバ2は、同様の構成を有するため、ここでは、サーバ1を例に説明する。
CPUコア10及びCPUコア11は、上述したようにメモリコントローラ15に接続される演算処理部である。ここで、本実施例では、サーバ1は、CPUコア10及びCPUコア11という2つのCPUコアを有するように説明しているが、CPUコアの数には特に制限は無い。また、CPUコア10及び11は、内部に論理的なハードウェアの単位としてのスレッドを有している。本実施例では、CPUコア10及び11は、後述するように、2つのスレッドを有している。スレッドについては後で詳細に説明する。
メモリ12は、後述するCPUコア10の各スレッドに割り当てられたメモリ領域を有している。例えば、CPUコア10の2つのスレッドに、メモリ領域121及び領域122がそれぞれ割り当てられている。
メモリコントローラ15は、CPUコア10及び11からの指示を受けて、メモリ12に対するデータの書き込み及びメモリ12からのデータの読み出しを行う。
I/O13は、例えばハードディスクや入出力装置などを有している。入出力装置としては、例えば、キーボードやモニタなどがある。I/O13のキーボード及びモニタなどをユーザインタフェースとして、操作者は、データの入力などを行う。また、CPUコア10及び11は、メモリコントローラ15及びI/Oブリッジ16を介してI/O13のハードディスク等にデータを格納する。
また、CPUコア10及び11は、メモリコントローラ15、I/Oブリッジ16、I/O13及びバス3を介して、サーバ2のCPUコア20及び21などと通信を行い、データの送受信を行う。このように、CPU10及び11は、メモリコントローラ15やI/Oブリッジ16を経由してCPU20及び21とデータの送受信を行うが、以下では説明の都合上、メモリコントローラ15やI/Oブリッジ16を省いてデータの送受信を説明する場合がある。
図2は、スレッドを説明するための図である。本実施例では、CPUコア10は、アプリスレッド200及び通信制御スレッド201という2つのスレッドを有する。また、CPUコア20は、アプリスレッド202及び通信制御スレッド203という2つのスレッドを有する。スレッドとは、単一のCPUコアにおいて別個に処理を行う論理的な単位である。そして、CPU10及びCPU20は、自己が有する各スレッドのそれぞれに処理を同時に実行させる機能、すなわちSMTの機能を有している。CPUコア10及び11は、同様の構成を有し同様の機能を有するため、ここでは、CPUコア10を例に説明する。また、以下の説明では、説明の便宜上、各スレッドが処理を実行しているように説明する場合があるが、実際には各スレッドを実行する演算処理部がそれらの処理を実行している。この演算処理部とは、例えば、各スレッドを実行するCPUコア又はCPUコアの中の実行部がその一例にあたる。
アプリスレッド200は、アプリケーションにおける通信制御処理以外の処理を行うスレッドである。例えば、サーバ1で実行されるアプリケーションが証券取引のアプリケーションであれば、アプリスレッド200を実行するCPUコア10又は実行部は、証券の売買を成立させるための処理などを実施する。アプリスレッド200が実施する処理を、以下では「アプリケーション処理」と言う場合がある。図2におけるアプリケーション210が、アプリスレッド200を実行するCPUコア10又は実行部が実施しているアプリケーション処理を表している。また、アプリケーション214が、アプリスレッド202を実行するCPUコア10又は実行部が実施しているアプリケーション処理を表している。
アプリスレッド200を実行するCPUコア10又は実行部は、アプリケーション処理を実行しているモードと、アプリケーション処理を実行していないモードという2つの動作モードを有している。以下では、アプリケーション処理を実行していないモードを「Idle」という。以下では、アプリスレッド200を実行するCPUコア10又は実行部における動作モードを、単にアプリスレッド200の動作モードと言う場合がある。
また、アプリスレッド200は、メモリの中の領域が割り当てられている。本実施例では、アプリスレッド200は、例えば、図1に示すメモリ12のメモリ領域121が割り当てられている。そして、アプリスレッド200を実行するCPUコア10又は実行部は、メモリ領域121が更新されたか否かを監視している。
通信制御スレッド201を実行するCPUコア10又は実行部は、サーバ2のCPU20などからデータの受信処理などを行うスレッドである。例えば、通信制御スレッド201を実行するCPUコア10又は実行部は、通信制御スレッド203が送信したデータを受信する。通信制御スレッド201が実施するデータの受信処理などを含む処理を、以下では「通信制御処理」という場合がある。図2における通信制御211が、通信制御スレッド201が実施している通信制御処理を表している。また、通信制御213が、通信制御スレッド201が実施している通信制御処理を表している。さらに、通信制御処理の中の受信処理には、データが送信されてきたか否かを判定するポーリングの処理が含まれている。ポーリングを実行している状態では、通信制御スレッド201は、単にメモリ領域が更新されたか否かを判定するだけなので、他の通信制御処理とは異なりCPUコア10の資源の使用を制限することができる。
通信制御スレッド201を実行するCPUコア10又は実行部は、受信処理などのポーリング以外の通信制御処理を実行しているモードと、ポーリングを実行しており受信待ちのモードと、通信制御処理を実行していないモードという3つの動作モードを有している。以下では、ポーリングを実行しており受信待ちの動作モードを、「mpoll」と言い、通信制御処理を実行していないモードを、「Idle」という。以下では、通信制御スレッド201を実行するCPUコア10又は実行部における動作モードを、単に通信制御スレッド201の動作モードと言う場合がある。
また、通信制御スレッド201は、メモリの中の領域が割り当てられている。本実施例では、通信制御スレッド201は、例えば、図1に示すメモリ12のメモリ領域122が割り当てられている。そして、通信制御スレッド201を実行するCPUコア10又は実行部は、メモリ領域122が更新されたか否かを監視している。
例えば、インテル(登録商標)製のCPUの場合であれば、通信制御スレッド201は、mpollの状態では、mwait命令によるポーリング処理を行う。mwait命令は、指定したアドレスのメモリ領域が更新されるまでスレッドの動作を停止する命令である。指定したアドレスのメモリ領域とは、例えば、図1における通信制御スレッド201に割り当てられたメモリ領域122である。すなわち、通信制御スレッド201は、mpollの場合、メモリコントローラ15によりメモリ領域122が更新されると動作の停止を解除し通信制御処理を実行するモードに復帰する。また、メモリ領域122の更新の他、割り込み発生時にも、通信制御スレッド201は、通信制御処理を実行するモードに復帰する。
ここで、本実施例では、説明の都合上、CPU10及び20がそれぞれ2つのスレッドを有しているとして説明したが、複数であればスレッドの数に特に制限は無い。
図3は、スレッドが使用するCPUコアの資源を説明するための図である。図3に示すように、アプリスレッド200及び通信制御スレッド201のそれぞれが処理を行う場合に使用する資源である共通資源320が存在する。共通資源320には、演算器322を含む命令パイプライン321及びキャッシュ323などが含まれる。
アプリスレッド200は、CPUコア10の資源として、例えば、プログラムカウンタ301、命令フェッチ302、レジスタセット303、命令パイプライン321及びキャッシュ323を使用する。また、通信制御スレッド201は、CPUコア10の資源として、例えば、プログラムカウンタ311、命令フェッチ312、レジスタセット313、命令パイプライン321及びキャッシュ323を使用する。
共通資源320は、アプリスレッド200及び通信制御スレッド201のいずれのスレッドでも用いられ、一方のスレッドが使用している共通資源320は、他方のスレッドは使用できない。例えば、アプリスレッド200が演算器322を使用している場合には、通信制御スレッド201は演算器322を使用することはできない。
そして、アプリスレッド200及び通信制御スレッド201を実行するCPUコア10又は実行部は、CPUコア10の資源の使用状態を決定する消費資源モードとして、通常モードと省消費資源モードという2つの消費資源モードを有している。省消費資源モードとは、CPUコア10の資源の使用を抑制するモードである。通常モードは、CPUコア10の資源の使用を抑制しないモードである。特に、省消費資源モードの場合、アプリスレッド200及び通信制御スレッド201による共通資源320の使用も軽減される。そのため、一方のスレッドが省消費資源モードで動作している場合、その一方のスレッドによる共通資源320の利用が減るため、他方のスレッドは共通資源320をほぼいつでも利用可能であり、処理を迅速に行うことができる。以下では、アプリスレッド200及び通信制御スレッド201を実行するCPUコア10又は実行部における消費資源モードを、単に各スレッドの消費資源モードと言う場合がある。
消費資源モードは、例えば、インテル(登録商標)製のCPUの場合であれば、省電力モードを用いることで実現できる。具体的には、インテル製のCPUには、C0〜C6という消費電力に関するモードが設けられている。C0は、処理を実行しているときのモードである。C1〜C6は、消費電力を抑えるための省電力モードである。そして、C1〜C6は、数字が大きいほどより消費電力が抑えられるモードである。この省電力モードでは、消費電力を下げるためにCPUコア10の資源の使用が抑制される。そのため、インテルから提供されている省電力モードを、本実施例における「省消費資源モード」として用いることができる。特に、C2〜C6を本実施例における省消費資源モードとして用いた場合、処理を実行するためにC0のモードに移行する復帰時間が増大してしまう。そのため、C2〜C6では通信遅延時間が増大するので、通信遅延を短くするために「省消費資源モード」としてC1を利用することが好ましい。また、インテルから提供されているC0の省電力モードが、本実施例に係る通常モードの消費資源モードにあたる。
そして、通信制御スレッド201を実行するCPUコア10又は実行部は、動作モードがIdleの場合、消費資源モードに遷移できる。また、通信制御スレッド201は、動作モードがmpollの場合、waite命令による指示を受けることで、停止時に省消費資源モードか否かのいずれかの消費資源モードを選択することができる。
図4は、消費資源モードとCPUコアの省電力モードとの関係を示す図である。図4の欄400に示すように、アプリスレッド200及び通信制御スレッド201の両方が省消費資源モードで動作している場合、CPUコア10は省電力モードに移行してしまう。これに対して、欄400以外の欄で示されるように、アプリスレッド200又は通信制御スレッド201のいずれか一方が通常モードで動作していれば、CPUコア10は、アクティブになっており省電力モードには移行しない。CPUコア10が省電力モードに移行した場合、CPUコア10が有する演算器などの動作が抑制されてしまう。つまり、アプリスレッド200及び通信制御スレッド201が使用する共通資源の動作が抑制されてしまう場合がある。そのため、CPUコア10が省電力モードに移行した場合、通信制御スレッド201の起動までに時間が掛かってしまい、受信処理の遅延が大きくなってしまう。
図5は、各消費資源モードでの受信処理及びアプリケーション処理の関係を説明するための図である。
アプリスレッド200及び通信制御スレッド201のいずれも通常モードの場合、通信制御スレッド201による受信処理の遅延は0.77μsecとなる。この場合、通信制御スレッド201が共通資源などを用いて処理を行うため、アプリスレッド200によるアプリケーション処理の性能が低下する。
また、通信制御スレッド201が通常モードでアプリスレッド200が省消費資源モードの場合、通信制御スレッドによる受信処理の遅延は0.73μsecである。すなわち、両方のスレッドが通常モードである場合に比べて、アプリスレッド200を省消費資源モードにすると、受信処理の遅延が短くなる。このことから、アプリスレッド200が処理を実行中で無いのであれば、省消費資源モードに遷移させた方が、通信制御スレッド201による受信処理は速くなる。
通信制御スレッド201が省消費資源モードであり、アプリスレッド200が通常モードの場合、受信処理の遅延は1.03μsecとなる。この場合、通信制御スレッド201が通常モードに遷移した後に受信処理が行われるため、受信処理は遅延する。ただし、通信制御スレッド201による資源の消費が軽減されるため、アプリスレッド200によるアプリケーションの処理性能を維持できる。
通信制御スレッド201及びアプリスレッド200が共に省消費資源モードの場合、欄401に示すように、CPUコア10が省電力モードに入ってしまう。この場合、受信処理の遅延は、1.89μsecとなる。この場合、CPUコア10の省電力モードを解除した後、通信制御スレッド201が通常モードになって受信処理を開始するため、受信処理の遅延が大きくなってしまう。特に通信制御スレッド201が省消費資源モードでアプリスレッド200が通常モードの場合と比較しても、受信処理の遅延は非常に大きい。そこで、通信制御スレッド201による受信処理の遅延を軽減するために、通信制御スレッド201又はアプリスレッド200の少なくとも一方は省消費資源モードに遷移しないようにしておくことが望ましい。
そこで、図5に示す各省消費資源モードにおけるアプリケーション処理及び受信処理の関係から、例えば、アプリスレッド200及び通信制御スレッド201は、図6のテーブル500を満たすように、それぞれの動作モードに応じて消費資源モードを変更する。図6は、実施例1に係る各スレッドの消費資源モードの設定の一例を説明するための図である。
まず、テーブル500におけるグレーアウトされている欄501〜505は、対応するスレッドが処理を行っている状態であるため、そのスレッドの消費資源モードが通常モードに設定される場合を表している。例えば、アプリスレッド200がアプリケーション処理を実行している場合、欄501〜503で示されるように、アプリスレッド200は、通常モードに設定される。また、通信制御スレッド201が通信制御処理を行っている場合、欄504及び505で示されるように、通信制御スレッド201は、通常モードに設定される。
そして、アプリスレッド200又は通信制御スレッド201のいずれか一方が通常モードの場合、他方が省消費資源モードに遷移できるならば、他方を省消費資源モードに設定することが好ましい。まず、欄503及び504の場合、いずれのスレッドも省消費資源モードに遷移できないので、この場合は、両方のスレッドを通常モードで動作させる。一方、通信制御スレッド201は、通信制御処理を実行していない場合(以下では、「Idle」という。)及びポーリングをしている場合(以下では、「mpoll」という。)には、省消費資源モードへ遷移することができる。そこで、アプリスレッド200がアプリケーション処理を行っている場合で、通信制御スレッド201がmpoll又はIdelの場合には、通信制御スレッド201は、省消費資源モードに設定される。
また、アプリスレッド200がアプリケーション処理を実行していない場合(以下では、「Idle」という。)、アプリスレッド200は、省消費資源モードに遷移できる。そこで、通信制御スレッド201が通信制御処理を行っており、アプリスレッド200がIdleの場合、アプリスレッド200は省消費資源モードに設定される。
また、アプリスレッド200がIdleで、通信制御スレッド201がIdleの場合、アプリスレッド200は通常モードに設定され、通信制御スレッド201は省消費資源モードに設定される。この場合、通信制御スレッド201は、Idleであり、通信制御処理を行わないので、省消費資源モードであっても問題はない。一方、アプリスレッド200もIdleであるので、本来であれば、消費資源モードであってもよい。しかし、アプリスレッド200も省消費資源モードに遷移してしまうと、CPUコア10が省電力モードに入ってしまう。それを避けるために、アプリスレッド200は、通常モードに設定されている。このように、アプリスレッド200が通常モードであるので、CPUコア10は、アクティブの状態を維持できる。
次に、アプリスレッド200がIdleで、通信制御スレッド201がmpollの場合、アプリスレッド200は省消費資源モードに設定され、通信制御スレッド201は通常モードに設定される。この場合、アプリスレッド200は、Idleであり、アプリケーション処理を行わないので、省消費資源モードであっても問題はない。一方、通信制御スレッド201は、mpollの状態であるので、通常モード及び省消費資源モードのいずれでもよい。ただし、通信制御スレッド201が省消費資源モードに遷移してしまうと、CPUコア10が省電力モードに入ってしまう。それを避けるために、通信制御スレッド201は、通常モードに設定されている。このように、通信制御スレッド201が通常モードであるので、CPUコア10は、アクティブの状態を維持できる。
そして、図6で表される消費資源モードの状態を実現するため、アプリスレッド200及び通信制御スレッド201を実行するCPUコア10又は実行部は、以下のような処理を行う。すなわち、アプリスレッド200及び通信制御スレッド201を実行するCPUコア10又は実行部は、動作モードが通信制御処理を実行するモード又はmpollからIdleの状態に遷移した場合、OSを利用してIdleルーチンを走らせて、消費資源モードの切替えを行う。また、通信制御スレッド201を実行するCPUコア10又は実行部は、動作モードが通信制御処理を実行するモード又はIdleの状態からmpollの状態に遷移した場合、OSを利用してmpollルーチンを走らせて、消費資源モードの切替えを行う。
ここで、Idleルーチン実行時のアプリスレッド200を実行するCPUコア10又は実行部の動作を説明する。アプリスレッド200を実行するCPUコア10又は実行部は、Ready状態のアプリケーション処理のプロセスがあるか否かを判定する。これは、Idleに切り替わりIdleルーチンを走らせる間に、アプリケーション処理のプロセスがReady状態になることが考えられるからである。そして、Ready状態のプロセスがある場合、アプリスレッド200を実行するCPUコア10又は実行部は、通信制御スレッド201に割り当てられたメモリ領域122を更新する。これにより、アプリスレッド200を実行するCPUコア10又は実行部は、動作モードのIdleからアプリケーション処理を実行するモードへの切り替わりを、通信制御スレッド201を実行するCPUコア10又は実行部に対して通知する。その後、アプリスレッド200を実行するCPUコア10又は実行部は、スケジューラを呼び出し、アプリケーション処理のプロセスの実行を待つ。
一方、Ready状態のプロセスがない場合、アプリスレッド200を実行するCPUコア10又は実行部は、Idleルーチン以前に、自己の動作モードがIdleであったか否かを判定する。これは、後述するように、Idleの状態のアプリスレッド200が、割り込み又は通信制御スレッド201の動作モードの変化が発生することによりIdleルーチンを繰り返すためである。そして、以前の動作モードがIdleでなかった場合、アプリスレッド200を実行するCPUコア10又は実行部は、通信制御スレッド201に割り当てられたメモリ領域122を更新し、通信制御スレッド201を実行するCPUコア10又は実行部に対して、自己の動作モードが変化したことを通知する。その後、アプリスレッド200を実行するCPUコア10又は実行部は、通信制御スレッド201の動作モードがIdleか否かを判定する。通信制御スレッド201の動作モードがIdleの場合、アプリスレッド200を実行するCPUコア10又は実行部は、自己の消費資源モードを通常モードに設定する。これに対して、通信制御スレッド201の動作モードがIdleでない、アプリスレッド200を実行するCPUコア10又は実行部は、自己の消費資源モードを省消費資源モードに設定する。
その後、アプリスレッド200を実行するCPUコア10又は実行部は、通信制御スレッド201の動作モードの変化により自己に割り当てられたメモリ領域121が更新される又は割り込みが発生するまで待機する。メモリ領域121が更新される又は割り込みが発生すると、アプリスレッド200を実行するCPUコア10又は実行部は、Idleルーチンを繰り返す。
また、アプリスレッド200を実行するCPUコア10又は実行部は、アプリケーション処理を実行するモードに遷移した場合、消費資源モードを通常モードに設定する。
次に、Idleルーチン実行時の通信制御スレッド201を実行するCPUコア10又は実行部の動作を説明する。通信制御スレッド201を実行するCPUコア10又は実行部は、Ready状態の通信制御処理のプロセスがあるか否かを判定する。これは、Idleに切り替わりIdleルーチンを走らせる間に、通信制御処理のプロセスがReady状態になることが考えられるからである。そして、Ready状態のプロセスがある場合、通信制御スレッド201を実行するCPUコア10又は実行部は、アプリスレッド200に割り当てられたメモリ領域121を更新する。これにより、通信制御スレッド201を実行するCPUコア10又は実行部は、動作モードのIdleからアプリケーション処理を実行するモードへの切り替わりを、アプリスレッド200を実行するCPUコア10又は実行部へ通知する。その後、通信制御スレッド201を実行するCPUコア10又は実行部は、スケジューラを呼び出し、通信制御処理のプロセスの実行を待つ。
一方、Ready状態のプロセスがない場合、通信制御スレッド201を実行するCPUコア10又は実行部は、Idleルーチン以前に、自己の動作モードがIdleであったか否かを判定する。これは、Idleの状態の通信制御スレッド201が、割り込み又はアプリスレッド200の動作モードの変化が発生することによりIdleルーチンを繰り返すためである。そして、以前の動作モードがIdleでなかった場合、通信制御スレッド201を実行するCPUコア10又は実行部は、アプリスレッド200に割り当てられたメモリ領域121を更新し、アプリスレッド200を実行するCPUコア10又は実行部に対して、自己の動作モードが変化したことを通知する。その後、通信制御スレッド201を実行するCPUコア10又は実行部は、自己の消費資源モードを省消費資源モードに設定する。
その後、通信制御スレッド201を実行するCPUコア10又は実行部は、アプリスレッド200の動作モードの変化により自己に割り当てられたメモリ領域122が更新される又は割り込みが発生するまで待機する。メモリ領域122が更新される又は割り込みが発生すると、通信制御スレッド201を実行するCPUコア10又は実行部は、Idleルーチンを繰り返す。
次に、mpollルーチン実行時の通信制御スレッド201を実行するCPUコア10又は実行部の動作を説明する。通信制御スレッド201を実行するCPUコア10又は実行部は、CPUコア20又は21からデータが到着したか否かを判定する。これは、mpollに切り替わりmpollルーチンを走らせる間に、データを受信することが考えられるからである。そして、データが到着している場合、通信制御スレッド201を実行するCPUコア10又は実行部は、アプリスレッド200に割り当てられたメモリ領域121を更新して、動作モードがmpollから通信制御処理を実行するモードに切り替わったことを、アプリスレッド200を実行するCPUコア10又は実行部へ通知する。その後、通信制御スレッド201を実行するCPUコア10又は実行部は、データの受信処理を実施する。
一方、データが到着していない場合、通信制御スレッド201を実行するCPUコア10又は実行部は、mpollルーチン以前に、自己の動作モードがmpollであったか否かを判定する。これは、mpollの状態の通信制御スレッド201が、割り込み又はアプリスレッド200の動作モードの変化が発生することによりmpollルーチンを繰り返すためである。そして、以前の動作モードがmpollでなかった場合、通信制御スレッド201を実行するCPUコア10又は実行部は、アプリスレッド200に割り当てられたメモリ領域121を更新し、アプリスレッド200を実行するCPUコア10又は実行部に対して、自己の動作モードが変化したことを通知する。その後、通信制御スレッド201を実行するCPUコア10又は実行部は、自己の消費資源モードを省消費資源モードに設定する。
その後、通信制御スレッド201を実行するCPUコア10又は実行部は、アプリスレッド200の動作モードの変化により自己に割り当てられたメモリ領域121が更新される又は割り込みが発生するまで待機する。メモリ領域121が更新される又は割り込みが発生すると、通信制御スレッド201を実行するCPUコア10又は実行部は、Idleルーチンを繰り返す。
また、通信制御スレッド201を実行するCPUコア10又は実行部は、通信制御処理を実行するモードに遷移した場合、消費資源モードを通常モードに設定する。
メモリコントローラ15は、メモリ12に対するデータの書き込み及び読み出しを行う。例えば、CPUコア20からデータがCPU10に向けて送られてくると、メモリコントローラ15は、メモリ12の通信制御スレッド201に割り当てられたメモリ領域122を更新する。メモリコントローラ15によるメモリ領域122の更新により、ポーリング中の通信制御スレッド201は、データの受信を検知し、データの受信処理を開始する。さらに、メモリコントローラ15は、通信制御スレッド201からの指示を受けて、アプリスレッド200に割り当てられたメモリ領域121を更新する。また、メモリコントローラ15は、アプリスレッド200からの指示を受けて、通信制御スレッド201に割り当てられたメモリ領域122を更新する。
次に、図7を参照し、本実施例に係るアプリスレッド200のIdleルーチンにおける動作について説明する。図7は、実施例1に係るアプリスレッドのIdleルーチンにおける動作のフローチャートである。ここでは、説明を分かり易くするために、各スレッドが処理を行っているように説明する。
アプリスレッド200は、Ready状態のアプリケーション処理のプロセスがあるか否かを判定する(ステップS101)。
Ready状態のプロセスがない場合(ステップS101:否定)、アプリスレッド200は、今回のIdleルーチン以前に、自己の動作モードがIdleであったか否かを判定する(ステップS102)。そして、以前の動作モードがIdleでなかった場合(ステップS102:否定)、アプリスレッド200は、通信制御スレッド201に対して、自己の動作モードが変化したことを通知する(ステップS103)。具体的には、アプリスレッド200は、メモリ領域121を更新することで通信制御スレッド201への通知を行う。これに対して、以前の動作モードがIdleであった場合(ステップS102:肯定)、アプリスレッド200は、ステップS104へ進む。
アプリスレッド200は、通信制御スレッド201の動作モードがIdleか否かを判定する(ステップS104)。通信制御スレッド201の動作モードがIdleの場合(ステップS104:肯定)、アプリスレッド200は、自己の消費資源モードを通常モードに設定する(ステップS105)。これに対して、通信制御スレッド201の動作モードがIdleでない場合(ステップS104:否定)、アプリスレッド200は、自己の消費資源モードを省消費資源モードに設定する(ステップS106)。
その後、アプリスレッド200は、通信制御スレッド201の動作モードの変化により自己に割り当てられたメモリ領域121が更新されたか又は割り込みが発生したかを判定する(ステップS107)。メモリ領域121の更新及び割り込みのいずれも発生していない場合(ステップS107:否定)、アプリスレッド200は、メモリ領域121が更新される又は割り込みが発生するまで待機する。これに対して、メモリ領域121の更新又は割り込みが発生した場合(ステップS107:肯定)、アプリスレッド200は、ステップS101に戻る。
一方、Ready状態のプロセスがある場合(ステップS101:肯定)、アプリスレッド200は、動作モードがIdleからアプリケーション処理を実行するモードに切り替わったことを通信制御スレッド201へ通知する(ステップS108)。具体的には、アプリスレッド200は、メモリ領域122を更新することで通信制御スレッド201への通知を行う。その後、アプリスレッド200は、スケジューラを呼び出し(ステップS109)、アプリケーション処理のプロセスの実行を待つ。
次に、図8を参照し、本実施例に係る通信制御スレッド201のIdleルーチンにおける動作について説明する。図8は、実施例1に係る通信制御スレッドのIdleルーチンにおける動作のフローチャートである。ここでは、説明を分かり易くするために、各スレッドが処理を行っているように説明する。
通信制御スレッド201は、Ready状態の通信制御処理のプロセスがあるか否かを判定する(ステップS201)。
Ready状態のプロセスがない場合(ステップS201:否定)、通信制御スレッド201は、今回のIdleルーチン以前に、自己の動作モードがIdleであったか否かを判定する(ステップS202)。そして、以前の動作モードがIdleでなかった場合(ステップS202:否定)、通信制御スレッド201は、メモリ領域121を更新し、アプリスレッド200に対して自己の動作モードが変化したことを通知する(ステップS203)。これに対して、以前の動作モードがIdleであった場合(ステップS202:肯定)、通信制御スレッド201は、ステップS204へ進む。
通信制御スレッド201は、自己の消費資源モードを省消費資源モードに設定する(ステップS204)。
その後、通信制御スレッド201は、アプリスレッド200の動作モードの変化により自己に割り当てられたメモリ領域122が更新されたか又は割り込みが発生したかを判定する(ステップS205)。メモリ領域122の更新及び割り込みのいずれも発生していない場合(ステップS205:否定)、通信制御スレッド201は、メモリ領域122が更新される又は割り込みが発生するまで待機する。これに対して、メモリ領域122の更新又は割り込みが発生した場合(ステップS205:肯定)、通信制御スレッド201は、ステップS201に戻る。
一方、Ready状態のプロセスがある場合(ステップS201:肯定)、通信制御スレッド201は、動作モードがIdleから通信制御処理を実行するモードに切り替わったことをアプリスレッド200へ通知する(ステップS206)。具体的には、通信制御スレッド201は、メモリ領域121を更新することでアプリスレッド200への通知を行う。その後、通信制御スレッド201は、スケジューラを呼び出し(ステップS207)、通信制御処理のプロセスの実行を待つ。
次に、図9を参照し、本実施例に係る通信制御スレッド201のmpollルーチンにおける動作について説明する。図9は、実施例1に係る通信制御スレッドのmpollルーチンにおける動作のフローチャートである。ここでは、説明を分かり易くするために、各スレッドが処理を行っているように説明する。
通信制御スレッド201は、CPUコア20又は21からのデータが到着しているか否かを判定する(ステップS301)。
データが到着していない場合(ステップS301:否定)、通信制御スレッド201は、今回のmpollルーチン以前に、自己の動作モードがmpollであったか否かを判定する(ステップS302)。そして、以前の動作モードがmpollでなかった場合(ステップS302:否定)、通信制御スレッド201は、メモリ領域121を更新し、アプリスレッド200に対して自己の動作モードが変化したことを通知する(ステップS303)。これに対して、以前の動作モードがmpollであった場合(ステップS302:肯定)、通信制御スレッド201は、ステップS304へ進む。
通信制御スレッド201は、アプリスレッド200の動作モードがIdleか否かを判定する(ステップS304)。アプリスレッド200の動作モードがIdleの場合(ステップS304:肯定)、通信制御スレッド201は、自己の消費資源モードを通常モードに設定する(ステップS305)。これに対して、アプリスレッド200の動作モードがIdleでない場合(ステップS304:否定)、通信制御スレッド201は、自己の消費資源モードを省消費資源モードに設定する(ステップS306)。
その後、通信制御スレッド201は、アプリスレッド200の動作モードの変化により自己に割り当てられたメモリ領域122が更新されたか又は割り込みが発生したかを判定する(ステップS307)。メモリ領域122の更新及び割り込みのいずれも発生していない場合(ステップS307:否定)、通信制御スレッド201は、メモリ領域122が更新される又は割り込みが発生するまで待機する。これに対して、メモリ領域122の更新又は割り込みが発生した場合(ステップS307:肯定)、通信制御スレッド201は、ステップS301に戻る。
一方、Ready状態のプロセスがある場合(ステップS301:肯定)、通信制御スレッド201は、動作モードがIdleから通信制御処理を実行するモードに切り替わったことをアプリスレッド200へ通知する(ステップS308)。具体的には、通信制御スレッド201は、メモリ領域121を更新することでアプリスレッド200への通知を行う。その後、通信制御スレッド201は、受信処理を実施する(ステップS309)。
次に、図10を参照して、各スレッドの動作モード及び消費資源モードの遷移の一例について説明する。図10は、実施例1に係る各スレッドの動作モード及び消費資源モードの遷移の一例を示すタイムチャートである。図10の帯グラフ601はアプリスレッド200の動作モードの遷移を表している。また、図10の帯グラフ602は通信制御スレッド201の動作モードの遷移を表している。また、図10の帯グラフ603はCPUコア10の省電力モードの遷移を表している。さらに、図10の最下部の矢印は時間経過を表している。そして、帯グラフ601及び602におけるグレーアウトしている部分は、それぞれのスレッドの消費資源モードが通常モードであることを表している。また、帯グラフ603におけるグレーアウトしている部分は、CPUコア10が省電力モードに入っていない状態、すなわちアクティブな状態を表している。ここでは、説明を分かり易くするために、各スレッドが処理を行っているように説明する。
時刻t1までは、アプリスレッド200の動作モードは、アプリケーション処理を行っている状態である。この状態では、アプリスレッド200の省電力モードは、通常モードである。また、通信制御スレッド201の動作モードは、mpollの状態である。この状態では、通信制御スレッド201の省電力モードは、省消費資源モードである。この場合、アプリスレッド200が通常モードであるので、CPUコア10の省電力モードはアクティブである。
そして、時刻t1でアプリスレッド200におけるアプリケーション処理が終了する。これにより、アプリスレッド200の動作モードはIdleに遷移する。そして、アプリスレッド200は、通信制御スレッド201がmpollなので、自己の消費資源モードを省消費資源モードに設定する。通信制御スレッド201は、アプリスレッド200がIdleであり、自己がmpollなので、自己の消費資源モードを通常モードに設定する。この場合、通信制御スレッド201が通常モードであるので、CPUコア10の省電力モードはアクティブである。
次に、時刻t2でCPUコア20又は21からデータが到着する。これにより、通信制御スレッド201の動作モードは、受信処理などの通信制御処理を実行するモードへ遷移する。通信制御スレッド201の消費資源モードは既に通常モードであるので変化しない。また、アプリスレッド200の消費資源モードも、省消費資源モードから変化しない。この場合、通信制御スレッド201が通常モードであるので、CPUコア10の省電力モードはアクティブである。
次に、時刻t3で通信制御処理が終了する、データ到着を待つため通信制御スレッド201の動作モードはmpollに遷移する。ここで、アプリスレッド200の動作モードがIdleであるので、通信制御スレッド201は、省消費資源モードを通常モードのまま維持する。また、アプリスレッド200も、消費資源モードを省消費資源モードのまま維持する。この場合、通信制御スレッド201が通常モードであるので、CPUコア10の省電力モードはアクティブである。
次に、時刻t4でアプリスレッド200がアプリケーション処理を開始する。これにより、アプリスレッド200は、消費資源モードを通常モードに設定する。これを受けて、動作モードがmpollである通信制御スレッド201は、消費資源モードを省消費資源モードに設定する。この場合、アプリスレッド200が通常モードであるので、CPUコア10の省電力モードはアクティブである。
次に、時刻t5でCPUコア20又は21からデータが到着する。これにより、通信制御スレッド201の動作モードは、受信処理などの通信制御処理を実行するモードへ遷移する。そして、通信制御スレッド201は、消費資源モードを通常モードに設定する。この時、アプリスレッド200は、アプリケーション処理を実行しているので、消費資源モードを通常モードのまま維持する。この場合、アプリスレッド200及び通信制御スレッドともに通常モードであるので、CPUコア10の省電力モードはアクティブである。
次に、時刻t6でアプリケーション処理が終了し、アプリスレッド200の動作モードはIdleに遷移する。この時、通信制御スレッド201が通信制御処理を実行中であるので、アプリスレッド200は、消費資源モードを省消費資源モードに設定する。通信制御スレッド201は、消費資源モードを通常モードのまま維持する。この場合、通信制御スレッド201が通常モードであるので、CPUコア10の省電力モードはアクティブである。
そして、時刻t7で通信制御処理が終了し、通信制御スレッド201の動作モードはIdleに遷移する。通信制御スレッド201は、アプリスレッド200の動作モードがIdleであるので、消費資源モードを省消費資源モードに設定する。アプリスレッド200は、通信制御スレッド201の動作モードがIdleであるので、消費資源モードを通常モードに設定する。この場合、アプリスレッド200が通常モードであるので、CPUコア10の省電力モードはアクティブである。
このように、アプリスレッド200及び通信制御スレッド201のいずれか片方をなるべく省消費資源モードにすることで、通信制御処理又はアプリケーション処理における処理速度を向上させることができる。また、CPUコア10は、常にアクティブとなり、省電力モードに遷移しないため、通信制御スレッド201の受信処理の遅延を軽減することができる。
図11は、ポーリングによるアプリケーション処理への影響を説明するための図である。図11は縦軸で時間を表し、横軸でアプリケーション処理に対応するベンチマークの種類を表している。横軸の各ベンチマークにおける左端のグラフがポーリング処理を行わない場合の各ベンチマークの処理時間を表している。また、横軸の各ベンチマークにおける中央のグラフが単純なビジーポーリングを行った場合の、各ベンチマークの処理時間を表している。単純なビジーポーリングとは、アプリケーション処理が実行されている場合にポーリングを数クロック停止するポーズ命令を使用してポーリングを行った場合である。また、横軸の各ベンチマークにおける右端のグラフが省消費資源モードでポーリング処理を行った場合の、各ベンチマークの処理時間を表している。そして、縦軸の時間は、ポーリング処理を行わない場合の各ベンチマークの処理時間により各処理時間を正規化した値である。
図11に示すように、単純なビジーポーリングを行った場合には、アプリケーション処理の処理時間が非常に長くなり、アプリケーション処理の性能が低下している。これに対して、省消費資源モードでポーリングを行った場合には、単純なビジーポーリングを行った場合に比較していずれのベンチマークにおいても処理時間が短くなっている。すなわち、本実施例のように、アプリスレッド200がアプリケーション処理を実行している場合にポーリングを行うのであれば、通信制御スレッド201を省消費資源モードにすることで、アプリケーション処理の性能低下を軽減することができる。
以上に説明したように、本実施例に係る情報処理装置は、他のスレッドが処理を実行している場合、ポーリングを行うスレッドを実行するCPUコア又は実行部は省消費電力モードに遷移する。これにより、あるスレッドがポーリングを行っている場合に、他のスレッドが実行している処理の速度を向上させることができる。
また、常にいずれかのスレッドを実行するCPUコア又は実行部の消費資源モードを通常モードにしておくことで、CPUコアが省電力モードに遷移することを防止でき、受信処理における遅延を軽減することができる。
さらに、あるスレッドを実行するCPUコア又は実行部が処理を実行している場合、なるべく他のスレッドを実行するCPUコア又は実行部を省消費資源モードに遷移させることで、その処理の実行速度を向上させることができる。例えば、通信制御スレッドを実行するCPUコア又は実行部がポーリングを行っている場合に、アプリスレッドを実行するCPUコア又は実行部をなるべく省消費資源モードに遷移させることで、受信処理の遅延を軽減できる。
このように、本実施例に係る情報処理装置は、高い通信性能を維持しつつアプリケーションの処理性能の低下を抑制することができる。
次に、実施例2について説明する。本実施例に係る情報処理装置は、アプリスレッドを実行するCPUコア又は実行部の消費資源モードを常に通常モードにしておくことが実施例1と異なる。そこで、以下では、アプリスレッド及び通信制御スレッドを実行するCPUコア又は実行部の消費資源モードの遷移について主に説明する。ここでは、実施例1と同じ機能を有する各部については説明を省略する。
図12は、実施例2に係る各スレッドの消費資源モードの設定の一例を説明するための図である。アプリスレッド200及び通信制御スレッド201を実行するCPUコア又は実行部は、図12のテーブル510を満たすように、それぞれの動作モードに応じて消費資源モードを変更する。
まず、テーブル510におけるグレーアウトされている欄511〜515は、対応するスレッドが処理を行っている状態であるため、そのスレッドの消費資源モードが通常モードに設定される場合を表している。
さらに、本実施例の場合、欄516〜518に示すように、アプリスレッド200がIdleであっても、通信制御スレッド201の動作モードにかかわらず、アプリスレッド200を実行するCPUコア又は実行部は、消費資源モードを通常モードに設定する。このように、アプリスレッド200を実行するCPUコア又は実行部を常に通常動作モードにすることで、CPUコア10は、省電力モードに遷移することはなくなり、常にアクティブとなる。
そこで、通信制御スレッド201を実行するCPUコア又は実行部は、CPUコア10の省電力モードへの遷移を気にせずに、省消費資源モードに遷移できる場合には、消費資源モードを省消費資源モードに設定することができる。すなわち、通信制御スレッド201を実行するCPUコア又は実行部は、動作モードがIdle又はmpollの場合には、消費資源モードを省消費資源モードに設定する。
そして、アプリスレッド200及び通信制御スレッド201を実行するCPUコア又は実行部は、動作モードが通信制御処理を実行するモード又はmpollからIdleの状態に遷移した場合、OSを利用してIdleルーチンを走らせて、消費資源モードの切替えを行う。また、通信制御スレッド201を実行するCPUコア又は実行部は、動作モードが通信制御処理を実行するモード又はIdleの状態からmpollの状態に遷移した場合、OSを利用してmpollルーチンを走らせて、消費資源モードの切替えを行う。これにより、図12で表される消費資源モードの状態が実現される。
次に、図13を参照し、本実施例に係るアプリスレッド200のIdleルーチンにおける動作について説明する。図13は、実施例2に係るアプリスレッドのIdleルーチンにおける動作のフローチャートである。ここでは、説明を分かり易くするために、各スレッドが処理を行っているように説明する。
アプリスレッド200は、Ready状態のアプリケーション処理のプロセスがあるか否かを判定する(ステップS401)。
Ready状態のプロセスがない場合(ステップS401:否定)、アプリスレッド200は、割り込みが発生したか否かを判定する(ステップS402)。割り込みのいずれも発生していない場合(ステップS402:否定)、アプリスレッド200は、割り込みが発生するまで待機する。これに対して、割り込みが発生した場合(ステップS402:肯定)、アプリスレッド200は、ステップS401に戻る。
一方、Ready状態のプロセスがある場合(ステップS401:肯定)、アプリスレッド200は、スケジューラを呼び出し(ステップS403)、アプリケーション処理のプロセスの実行を待つ。
次に、図14を参照し、本実施例に係る通信制御スレッド201のIdleルーチンにおける動作について説明する。図14は、実施例2に係る通信制御スレッドのIdleルーチンにおける動作のフローチャートである。
通信制御スレッド201は、Ready状態の通信制御処理のプロセスがあるか否かを判定する(ステップS501)。
Ready状態のプロセスがない場合(ステップS501:否定)、通信制御スレッド201は、自己の消費資源モードを省消費資源モードに設定する(ステップS502)。
その後、通信制御スレッド201は、自己に割り当てられたメモリ領域122が更新されたか又は割り込みが発生したかを判定する(ステップS503)。メモリ領域122の更新及び割り込みのいずれも発生していない場合(ステップS503:否定)、通信制御スレッド201は、メモリ領域122が更新される又は割り込みが発生するまで待機する。これに対して、メモリ領域122の更新又は割り込みが発生した場合(ステップS503:肯定)、通信制御スレッド201は、ステップS501に戻る。
一方、Ready状態のプロセスがある場合(ステップS501:肯定)、通信制御スレッド201は、スケジューラを呼び出し(ステップS504)、通信制御処理のプロセスの実行を待つ。
次に、図15を参照し、本実施例に係る通信制御スレッド201のmpollルーチンにおける動作について説明する。図15は、実施例2に係る通信制御スレッドのmpollルーチンにおける動作のフローチャートである。
通信制御スレッド201は、CPUコア20又は21からのデータが到着しているか否かを判定する(ステップS601)。
データが到着していない場合(ステップS601:否定)、通信制御スレッド201は、消費資源モードを省消費資源モードに設定する(ステップS602)。
その後、通信制御スレッド201は、メモリ領域122が更新されたか又は割り込みが発生したかを判定する(ステップS603)。メモリ領域122の更新及び割り込みのいずれも発生していない場合(ステップS603:否定)、通信制御スレッド201は、メモリ領域122が更新される又は割り込みが発生するまで待機する。これに対して、メモリ領域122の更新又は割り込みが発生した場合(ステップS603:肯定)、通信制御スレッド201は、ステップS601に戻る。
一方、Ready状態のプロセスがある場合(ステップS601:肯定)、通信制御スレッド201は、受信処理を実施する(ステップS604)。
次に、図16を参照して、各スレッドの動作モード及び消費資源モードの遷移の一例について説明する。図16は、実施例2に係る各スレッドの動作モード及び消費資源モードの遷移の一例を示すタイムチャートである。図16の帯グラフ611はアプリスレッド200の動作モードの遷移を表している。また、図16の帯グラフ612は通信制御スレッド201の動作モードの遷移を表している。また、図16の帯グラフ613はCPUコア10の省電力モードの遷移を表している。さらに、図16の最下部の矢印は時間経過を表している。そして、帯グラフ611及び612におけるグレーアウトしている部分は、それぞれのスレッドの消費資源モードが通常モードであることを表している。また、帯グラフ613におけるグレーアウトしている部分は、CPUコア10が省電力モードに入っていない状態、すなわちアクティブな状態を表している。ここでは、説明を分かり易くするために、各スレッドが処理を行っているように説明する。
アプリスレッド200は、動作モードがどのモードに遷移しても、帯グラフ611に示すように消費資源モードを通常モードに維持する。そのため、CPUコア10は、帯グラフ613に示されるように常にアクティブの状態になっている。
一方、時刻T1までは、通信制御スレッド201の動作モードは、mpollの状態である。この状態では、通信制御スレッド201の省電力モードは、省消費資源モードである。
そして、時刻T1でアプリスレッド200におけるアプリケーション処理が終了する。これにより、アプリスレッド200の動作モードはIdleに遷移する。これに対して、通信制御スレッド201は、アプリスレッド200の動作モードに関らず、自己がmpollなので、自己の消費資源モードを省消費資源モードに維持する。
次に、時刻T2でCPUコア20又は21からデータが到着する。これにより、通信制御スレッド201の動作モードは、受信処理などの通信制御処理を実行するモードへ遷移する。これにより、通信制御スレッド201は、消費資源モードを通常モードに設定する。
次に、時刻T3で通信制御処理が終了し、データ到着を待つため通信制御スレッド201の動作モードはmpollに遷移する。これにより、通信制御スレッド201は、消費資源モードを省消費資源モードに設定する。
次に、時刻T4でアプリスレッド200がアプリケーション処理を開始する。このときも、動作モードがmpollである通信制御スレッド201は、消費資源モードを省消費資源モードのまま維持する。
次に、時刻T5でCPUコア20又は21からデータが到着する。これにより、通信制御スレッド201の動作モードは、受信処理などの通信制御処理を実行するモードへ遷移する。そして、通信制御スレッド201は、消費資源モードを通常モードに設定する。
次に、時刻T6でアプリケーション処理が終了し、アプリスレッド200の動作モードはIdleに遷移する。これに対して、通信制御スレッド201は、通信制御処理を実行中であるので、消費資源モードを通常モードのまま維持する。
そして、時刻T7で通信制御処理が終了し、通信制御スレッド201の動作モードはIdleに遷移する。通信制御スレッド201は、アプリスレッド200の動作モードに関らず、消費資源モードを省消費資源モードに設定する。
以上に説明したように、本実施例に係る情報処理装置においても、他のスレッドを実行するCPUコア又は実行部が処理を実行している場合、ポーリングを行うスレッドは省消費電力モードに遷移する。これにより、あるスレッドを実行するCPUコア又は実行部がポーリングを行っている場合に、他のスレッドが実行している処理の速度を向上させることができる。また、常にアプリスレッドを実行するCPUコア又は実行部の消費資源モードを通常モードにしておくことで、CPUコアが省電力モードに遷移することを防止でき、受信処理における遅延を軽減することができる。
また、アプリスレッドを常に通常モードにし、通信制御スレッドが省消費資源モードに遷移できる場合には、通信制御スレッドを省消費資源モードに設定するので、実施例1に比べて制御が容易になる。
さらに、以上の実施例では、受信処理の遅延をなるべく軽減するため、CPUコアを常にアクティブの状態にするように、いずれかのスレッドを実行するCPUコア又は実行部の消費資源モードが通常モードとなるように設定した。ただし、受信処理の遅延の許容できる程度によっては、全てのスレッドを実行するCPUコア又は実行部が省消費資源モードになることを許容して制御してもよい。その場合も、他のスレッドを実行するCPUコア又は実行部が処理を実行している場合、ポーリングを行うスレッドを実行するCPUコア又は実行部は省消費電力モードに遷移する。これにより、あるスレッドを実行するCPUコア又は実行部がポーリングを行っている場合に、他のスレッドを実行するCPUコア又は実行部が実行している処理の速度を向上させるという効果を得ることはできる。
また、以上では、図1に示すシステム構成を有する情報処理システムを例に説明したが、システム構成はこれ以外の構成を用いることもできる。図17は、情報処理システムの他の構成を示す構成図である。図17では、図1におけるメモリコントローラ15及びI/Oブリッジ16が、CPUコア10及び11に内蔵されている。また、メモリコントローラ25及びI/Oブリッジ26が、CPUコア20及び21に内蔵されている。
この場合、CPUコア10には、メモリ12aが接続されている。そして、CPUコア10に内蔵されたメモリコントローラによりメモリ12aに対するデータの読み書きが行われる。また、CPUコア11には、メモリ12bが接続されている。そして、CPUコア11に内蔵されたメモリコントローラによりメモリ12bに対するデータの読み書きが行われる。
また、CPUコア10及び11は、内蔵されているI/OバスによりI/O13及びI/O14と接続されており、CPUコア10及び11は、内蔵されているI/OバスによりI/O13及びI/O14との通信を行う。
このように、CPUコアにメモリコントローラやI/Oバスが内蔵されているシステム構成の場合でも、上述した各機能を有することができ、同様の効果を発揮することができる。
1,2 サーバ
3 バス
4 ネットワークスイッチ
10,11 CPUコア
12 メモリ
13,14 I/O
15 メモリコントローラ
16 I/Oブリッジ
20,21 CPUコア
22 メモリ
23,24 I/O
25 メモリコントローラ
26 I/Oブリッジ
200,202 アプリスレッド
201,203 通信制御スレッド

Claims (8)

  1. ポーリングによる受信処理が割り当てられた通信制御スレッドを含む複数のスレッドをそれぞれ実行する演算処理部を備え、
    前記演算処理部は、自己において実行される複数の前記スレッドの中の何れかが各々に割り当てられ、且つ、割り当てられたスレッドを実行する複数のスレッド実行部を有し、
    前記スレッド実行部のうち、前記通信制御スレッドを実行するスレッド実行部は、データの到着の通知を示すメモリ領域に対してポーリングを行いデータの到着まで受信処理の実行を待機し、且つ、他のスレッドを実行するスレッド実行部が、前記他のスレッドに割り当てられた処理を実行している場合、物理資源の使用を抑制する省消費資源モードに遷移する
    ことを特徴とする情報処理装置。
  2. 前記他のスレッドは、前記受信処理以外のアプリケーションの実行処理が割り当てられたアプリスレッドを含み、
    前記複数のスレッド実行部のうち、前記通信制御スレッドを実行するスレッド実行部は、ポーリングを行いデータの到着まで受信処理の実行を待機し、且つ、前記アプリスレッドを実行するスレッド実行部が割り当てられた処理を実施している場合、前記演算処理部が有する物理資源の使用を抑制する省消費資源モードに遷移する
    ことを特徴とする請求項1に記載の情報処理装置。
  3. 前記複数のスレッド実行部のうち、前記通信制御スレッドを実行するスレッド実行部は、メモリの所定領域が割り当てられており、前記所定領域が更新された場合に、データが到着したと判定し、受信処理を開始することを特徴とする請求項1又は請求項2に記載の情報処理装置。
  4. 前記スレッドを実行する複数の前記スレッド実行部のうちいずれか一つは、省消費資源モードに遷移していないことを特徴とする請求項1〜3のいずれか一つに記載の情報処理装置。
  5. 前記通信制御スレッドは、前記通信制御スレッドを実行するスレッド実行部の動作状態として、停止状態と、ポーリングを行いデータの到着まで受信処理の実行を待機している受信待ち状態と、データが到着し受信処理を実施している処理実行状態とを有し、
    前記アプリスレッドは、前記アプリスレッドを実行するスレッド実行部の動作状態として、待機状態と、割り当てられた処理を実施しているアプリ実行状態とを有し、
    前記通信制御スレッドを実行するスレッド実行部が前記処理実行状態であり、前記アプリスレッドを実行するスレッド実行部が前記アプリ実行状態でない場合、前記アプリスレッドを実行するスレッド実行部は前記省消費資源モードに遷移し、
    前記アプリスレッドを実行するスレッド実行部が前記アプリ実行状態であり、前記通信制御スレッドを実行するスレッド実行部が前記処理実行状態でない場合、前記通信制御スレッドを実行するスレッド実行部は前記省消費資源モードに遷移し、
    前記アプリスレッドを実行するスレッド実行部が前記待機状態で、前記通信制御スレッドを実行するスレッド実行部が前記停止状態の場合、前記通信制御スレッドを実行するスレッド実行部は前記省消費資源モードに遷移し、
    前記アプリスレッドを実行するスレッド実行部が前記待機状態で、前記通信制御スレッドを実行するスレッド実行部が前記受信待ち状態の場合、前記アプリスレッドを実行するスレッド実行部は前記省消費資源モードに遷移する
    ことを特徴とする請求項2に記載の情報処理装置。
  6. 前記通信制御スレッドを実行するスレッド実行部は、動作状態として、データが到着し受信処理を実施している処理実行状態を有し、
    前記アプリスレッドを実行するスレッド実行部は、前記省消費資源モードへの遷移は行わず、
    前記通信制御スレッドを実行するスレッド実行部は、自己が前記処理実行状態以外の場合、前記省消費資源モードに遷移する
    ことを特徴とする請求項2に記載の情報処理装置。
  7. 情報処理装置が有する演算処理部が、
    ポーリングによる受信処理が割り当てられた通信制御スレッドを含む前記演算処理部において実行される複数のスレッドが各々に割り当てられ、且つ、割り当てられたスレッドをそれぞれ実行する複数のスレッド実行部のうち、データの到着の通知を示すメモリ領域に対するポーリングによる受信処理が割り当てられた通信制御スレッドを実行するスレッド実行部を決定し、
    決定された前記通信制御スレッドを実行するスレッド実行部を、前記メモリ領域に対してポーリングを行いデータの到着まで受信処理の実行を待機させ、且つ、他のスレッドを実行するスレッド実行部が、前記他のスレッドに割り当てられた処理を実行している場合、物理資源の使用を抑制する省資源モードに遷移させる
    ことを特徴とする情報処理装置の制御方法。
  8. 情報処理装置が有する演算処理部に、
    ポーリングによる受信処理が割り当てられた通信制御スレッドを含む前記演算処理部において実行される複数のスレッドが各々に割り当てられ、且つ、割り当てられたスレッドをそれぞれ実行する複数のスレッド実行部のうち、データの到着の通知を示すメモリ領域に対するポーリングによる受信処理が割り当てられた通信制御スレッドを実行するスレッド実行部を決定させ、
    決定された前記通信制御スレッドを実行するスレッド実行部を、前記メモリ領域に対してポーリングを行いデータの到着まで受信処理の実行を待機させ、且つ、他のスレッドを実行するスレッド実行部が、前記他のスレッドに割り当てられた処理を実行している場合、物理資源の使用を抑制する省資源モードに遷移させる
    処理を行わせることを特徴とする情報処理装置の制御プログラム。
JP2012273986A 2012-12-14 2012-12-14 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム Expired - Fee Related JP6070150B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012273986A JP6070150B2 (ja) 2012-12-14 2012-12-14 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム
US14/066,737 US9389923B2 (en) 2012-12-14 2013-10-30 Information processing device and method for controlling information processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012273986A JP6070150B2 (ja) 2012-12-14 2012-12-14 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム

Publications (2)

Publication Number Publication Date
JP2014119918A JP2014119918A (ja) 2014-06-30
JP6070150B2 true JP6070150B2 (ja) 2017-02-01

Family

ID=50932577

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012273986A Expired - Fee Related JP6070150B2 (ja) 2012-12-14 2012-12-14 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム

Country Status (2)

Country Link
US (1) US9389923B2 (ja)
JP (1) JP6070150B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6000685B2 (ja) 2012-06-25 2016-10-05 京セラ株式会社 通信端末、通信制御プログラムおよび通信制御方法
JP6468066B2 (ja) * 2015-05-13 2019-02-13 富士通株式会社 並列演算装置、並列演算システム、集合通信方法及び集合通信プログラム
US9804666B2 (en) * 2015-05-26 2017-10-31 Samsung Electronics Co., Ltd. Warp clustering
US9753776B2 (en) * 2015-12-01 2017-09-05 International Business Machines Corporation Simultaneous multithreading resource sharing
DE112016007521T5 (de) * 2016-12-16 2019-09-26 Intel Corporation Ausführung einer anwendung mit mehreren prozessoren
US10459771B2 (en) * 2017-02-22 2019-10-29 Red Hat Israel, Ltd. Lightweight thread synchronization using shared memory state
JP6955163B2 (ja) * 2017-12-26 2021-10-27 富士通株式会社 情報処理装置、情報処理方法及びプログラム
US11941442B1 (en) * 2022-09-29 2024-03-26 International Business Machines Corporation Operating system based on dual system paradigm
US12284272B2 (en) * 2022-09-30 2025-04-22 General Electric Company Methods and systems for starting secure communication in systems with high availability

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001216170A (ja) 2000-01-31 2001-08-10 Mitsubishi Electric Corp 専用ポーリング処理組み込みオペレーティング方法及び専用ポーリング処理組み込みオペレーティングシステム
JP4253796B2 (ja) * 2001-11-08 2009-04-15 富士通株式会社 コンピュータ及び制御方法
US20040216101A1 (en) * 2003-04-24 2004-10-28 International Business Machines Corporation Method and logical apparatus for managing resource redistribution in a simultaneous multi-threaded (SMT) processor
GB2414575B (en) 2004-05-26 2007-06-06 Advanced Risc Mach Ltd Management of polling loops in a data processing apparatus
JP2006260377A (ja) 2005-03-18 2006-09-28 Seiko Epson Corp 並列処理装置および情報処理方法
US8726279B2 (en) * 2006-05-06 2014-05-13 Nvidia Corporation System for multi threaded multi processor sharing of asynchronous hardware units
US20080024489A1 (en) * 2006-07-28 2008-01-31 Robert Allen Shearer Cache Utilization Optimized Ray Traversal Algorithm with Minimized Memory Bandwidth Requirements
JP2008129767A (ja) * 2006-11-20 2008-06-05 Mitsubishi Electric Corp ネットワーク装置
US8799902B2 (en) * 2007-04-09 2014-08-05 Intel Corporation Priority based throttling for power/performance quality of service
US9104476B2 (en) * 2010-04-07 2015-08-11 Apple Inc. Opportunistic multitasking of VOIP applications

Also Published As

Publication number Publication date
US9389923B2 (en) 2016-07-12
JP2014119918A (ja) 2014-06-30
US20140173619A1 (en) 2014-06-19

Similar Documents

Publication Publication Date Title
JP6070150B2 (ja) 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム
JP4938080B2 (ja) マルチプロセッサ制御装置、マルチプロセッサ制御方法及びマルチプロセッサ制御回路
JP5323828B2 (ja) 仮想計算機制御装置、仮想計算機制御プログラム及び仮想計算機制御回路
CN111566592B (zh) 计算系统中的动态中断速率控制
JPWO2009022371A1 (ja) タスク処理装置
JP4119945B2 (ja) タスク処理装置
US20160179429A1 (en) Controlling memory access conflict of threads on multi-core processor with set of highest priority processor cores based on a threshold value of issued-instruction efficiency
JPWO2009150815A1 (ja) マルチプロセッサシステム
WO2016182683A1 (en) System and method for dynamic granularity control of parallelized work in a portable computing device (pcd)
JP6151465B1 (ja) プロセッサコアの電力モードを制御するためのレイテンシベースの電力モードユニット、ならびに関連する方法およびシステム
WO2011161782A1 (ja) マルチコアシステムおよび外部入出力バス制御方法
US20140310723A1 (en) Data processing apparatus, transmitting apparatus, transmission control method, scheduling method, and computer product
CN100382033C (zh) 计算机系统
JP5294449B2 (ja) ネットワークシステムおよびネットワークシステムにおける電源制御方法
JP5783348B2 (ja) 制御装置、制御プログラム、画像形成装置
WO2012101759A1 (ja) プロセッサ処理方法、およびプロセッサシステム
US20240403126A1 (en) Smart interrupt controller
JP5561374B2 (ja) 情報処理システム
JP2017016219A (ja) 電子機器および給電制御プログラム
CN107408061B (zh) 并行处理系统
JP7271973B2 (ja) 車両制御装置、動作クロック切換方法
JP4363417B2 (ja) コンピュータ装置およびコンピュータ制御方法
JP5204740B2 (ja) タスク処理装置
JP5017784B2 (ja) プロセッサ及びこのプロセッサ適用される割込み処理制御方法
JP2008269597A (ja) タスク処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150804

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160524

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160628

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160819

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161004

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161024

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161219

R150 Certificate of patent or registration of utility model

Ref document number: 6070150

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees