(57)【要約】【課題】停止対象のＣＰＵの切り離しを短時間で行なうことが可能な情報処理装置を提供すること。【解決手段】複数のランキュー＃０〜＃２（９〜１１）は、複数のＣＰＵ＃０〜＃２（１〜３）のそれぞれに対応して設けられ、複数のＣＰＵ＃０〜＃２（１〜３）のそれぞれに割当てられた実行待ちアプリケーションが登録される。停止対象のＣＰＵに割当てられた処理が停止対象のＣＰＵ以外のＣＰＵに割当てられる。ディスパッチ処理部＃０〜＃２（１２〜１４）は、停止対象のＣＰＵ以外のＣＰＵに対応するランキューおよび当該ＣＰＵに割当てられた停止対象のＣＰＵに対応するランキューに登録されるアプリケーションの中からアプリケーションを選択してディスパッチ処理を行なう。そして、ＣＰＵ停止処理部＃０〜＃２（２１〜２３）は、停止対象のプロセッサの動作を停止させる。したがって、停止対象のＣＰＵの切り離しを短時間で行なうことが可能となる。【選択図】図１
2010113667.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサを搭載した情報処理装置であって、
前記複数のプロセッサのそれぞれに対応して設けられ、前記複数のプロセッサのそれぞれに割当てられた実行待ちアプリケーションが登録される複数のランキューと、
停止対象のプロセッサに割当てられた処理を前記停止対象のプロセッサ以外のプロセッサに割当てる割当手段と、
前記停止対象のプロセッサ以外のプロセッサに対応するランキューおよび前記割当手段によって当該プロセッサに割当てられた前記停止対象のプロセッサに対応するランキューに登録されるアプリケーションの中からアプリケーションを選択してディスパッチ処理を行なうディスパッチ手段と、
前記停止対象のプロセッサの動作を停止させる停止手段とを含む、情報処理装置。
【請求項２】
前記情報処理装置はさらに、前記複数のプロセッサのそれぞれに割当てられたプロセッサの仮想識別子を記憶するテーブル手段を含み、
前記ディスパッチ手段は、前記テーブル手段に記憶された仮想識別子に対応するプロセッサのランキューを参照してアプリケーションを選択する、請求項１記載の情報処理装置。
【請求項３】
前記情報処理装置はさらに、前記複数のプロセッサ間で割込みの入出力を行なう際、前記テーブル手段に記憶される仮想識別子を参照して割込みを出力するプロセッサを決定する割込み処理手段を含む、請求項１または２記載の情報処理装置。
【請求項４】
前記割当手段は、前記停止対象のプロセッサの処理を割当てるプロセッサを固定的に選択する、請求項１〜３のいずれかに記載の情報処理装置。
【請求項５】
前記割当手段は、前記停止対象のプロセッサの処理を割当てるプロセッサを任意に選択する、請求項１〜３のいずれかに記載の情報処理装置。
【請求項６】
前記割当手段は、前記停止対象のプロセッサの処理を割当てる際、既に他の停止対象のプロセッサの処理が割当てられているプロセッサを除外してプロセッサを選択する、請求項１〜３のいずれかに記載の情報処理装置。
【請求項７】
前記割当手段は、前記停止対象のプロセッサの処理を割当てる際、前記停止対象のプロセッサ以外のプロセッサが実行するアプリケーション数が平準化されるようにプロセッサを選択する、請求項１〜３のいずれかに記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のＣＰＵ（Central Processing Unit）を搭載した情報処理装置に関し、特に、稼動状態にあるＣＰＵの切り離しを高速に行なうことが可能な情報処理装置に関する。
【背景技術】
【０００２】
近年、情報処理装置の高速化、高機能化が進んでおり、それに伴って高信頼システムの構築が不可欠となってきている。このような高信頼システムを構築するために使用される機能の１つとして、ＣＰＵボードのオンライン交換などの対応を可能にしたＣＰＵ  Ｈｏｔ  Ｐｌｕｇ機能を挙げることができる。
【０００３】
Ｈｏｔ  Ｐｌｕｇとは、システムを停止させることなくシステムの構成デバイスを追加・削除する機能であり、特に、稼動中のＣＰＵをＯＳ（Operating System）から切り離す機能をＣＰＵ  Ｈｏｔ  Ｒｅｍｏｖｅ、停止中のＣＰＵをＯＳ配下に追加する機能をＣＰＵ  Ｈｏｔ  Ａｄｄと呼ぶ。
【０００４】
一方、システムの消費電力を削減する技術の開発も進んでいる。システムの消費電力を削減する方法の１つとして、動作することにより電力を消費しているハードウェアモジュールを省電力モードに状態遷移させる方法を挙げることができる。ハードウェアモジュールが電源オフ状態になっている時間が長いほど、より消費電力を削減することができる。動作中のＣＰＵを省電力モードである電源オフ状態に遷移させるために、上述のＣＰＵ  Ｈｏｔ  Ｒｅｍｏｖｅ機能を使用することができる。これに関連する技術として、下記の非特許文献１に開示された技術がある。
【０００５】
非特許文献１においては、ＣＰＵ  Ｈｏｔ  Ｒｅｍｏｖｅを実現するために、ＣＰＵ毎に所持する構造体・変数の開放、ｉｄｌｅ，Ｋｓｏｆｔｉｒｑｄ，ｍｉｇｒａｔｉｏｎ＿ｔｈｒｅａｄなどのカーネルスレッドの停止、ＣＰＵ停止に伴うＩＲＱの設定変更、対象ＣＰＵのｒｕｎｑｕｅｕｅ上のプロセスを他のｒｕｎｑｕｅｕｅへ移動、ＣＰＵ停止時のキャッシュのｆｌｕｓｈとＣＰＵのＨＡＬＴ処理、同期処理などの機能が必要であることが記載されている。
【非特許文献１】菅沼公夫他、「LinuxにおけるCPU/Memory/IOのHot Plugサポート」、Linux Conference 2002、PP. 4-7、２００２年９月１９日
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来の高信頼システムにおいては、ＣＰＵの切り離し、追加をより安全に行なうために、その実行速度よりも確実性により重点が置かれており、これがＣＰＵ  Ｈｏｔ  Ｐｌｕｇの処理時間が長くなる原因となっている。また、システムのスループット性能を向上させるためにＣＰＵ間同期の後処理などを遅延実行しており、ＣＰＵ  Ｈｏｔ  Ｐｌｕｇ実行時にこの遅延実行の完了を待たなければならず、ＣＰＵ  Ｈｏｔ  Ｐｌｕｇの処理時間がさらに延長される原因となっている。
【０００７】
本発明は、上記問題点を解決するためになされたものであり、その目的は、停止対象のＣＰＵの切り離しを短時間で行なうことが可能な情報処理装置を提供することである。
【課題を解決するための手段】
【０００８】
本発明の一実施例によれば、複数のＣＰＵを搭載した情報処理装置が提供される。複数のランキューは、複数のＣＰＵのそれぞれに対応して設けられ、複数のＣＰＵのそれぞれに割当てられた実行待ちアプリケーションが登録される。停止対象のＣＰＵに割当てられた処理が停止対象のＣＰＵ以外のＣＰＵに割当てられる。ディスパッチ処理部は、停止対象のＣＰＵ以外のＣＰＵに対応するランキューおよび当該ＣＰＵに割当てられた停止対象のＣＰＵに対応するランキューに登録されるアプリケーションの中からアプリケーションを選択してディスパッチ処理を行なう。そして、ＣＰＵ停止処理部は、停止対象のプロセッサの動作を停止させる。
【発明の効果】
【０００９】
この実施例によれば、停止対象のＣＰＵに割当てられた処理が停止対象のＣＰＵ以外のＣＰＵに割当てられるので、停止対象のＣＰＵの切り離しを短時間で行なうことが可能となる。
【発明を実施するための最良の形態】
【００１０】
図１は、本発明の実施の形態における情報処理装置の機能的構成を示すブロック図である。この情報処理装置は、ＣＰＵ＃０〜＃２（１〜３）と、記憶装置４と、ディスパッチ処理部＃０〜＃２（１２〜１４）と、ディスパッチ選択処理部＃０〜＃２（１５〜１７）と、ＣＰＵ識別子選択処理部＃０〜＃２（１８〜２０）と、ＣＰＵ停止処理部＃０〜＃２（２１〜２３）と、ＣＰＵ間割込み処理部＃０〜＃２（２４〜２６）と、タイマ＃０〜＃２（２７〜２９）とを含む。なお、図１は、ＣＰＵが３個搭載される場合の構成例であるが、ＣＰＵの数はこれに限定されるものではない。
【００１１】
また、記憶装置４は、ＣＰＵ識別子変換テーブル５と、アプリケーション（ＡＰ）群＃０〜＃２（６〜８）と、ランキュー＃０〜＃２（９〜１１）とを含む。なお、記憶装置４は、ＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）、フラッシュメモリ、ハードディスクなどによって構成されるが、アプリケーションプログラム、データなどを記憶できる装置であればどのようなものでも構わない。
【００１２】
ＣＰＵ識別子変換テーブル５は、ＣＰＵ識別子（ＣＰＵＩＤ）と仮想ＣＰＵ識別子（ＶＩＤ）との対応を示すテーブルである。このＣＰＵ識別子変換テーブル５の詳細については後述する。
【００１３】
ＡＰ群＃０〜＃２（６〜８）は、対応するＣＰＵ＃０〜＃２（１〜３）のそれぞれによって実行されるアプリケーションプログラム群であるが、後述のようにＣＰＵのいずれかを停止させる場合には、そのＡＰ群が他の動作中のＣＰＵに割り当てられる。
【００１４】
ランキュー＃０〜＃２（９〜１１）は、実行可能な状態にあるアプリケーションのリストを記憶しており、それぞれがＣＰＵ＃０〜＃２（１〜３）に対応している。したがって、たとえば、ランキュー＃０（９）にはＣＰＵ＃０（１）によって実行されるＡＰ群＃０（６）の中で実行可能なアプリケーションのリストが記憶されている。
【００１５】
ディスパッチ処理部＃０〜＃２（１２〜１４）は、対応するランキュー＃０〜＃２（９〜１１）を参照してＣＰＵ＃０〜２（１〜３）によって実行されるアプリケーションを選択してディスパッチ処理を行なう。
【００１６】
たとえば、ディスパッチ処理部＃０〜＃２（１〜３）は、アプリケーション個別に設定されている優先度の情報に基づいて、どのアプリケーションをどのような頻度で実行するかを決定する。基本的には、優先度が高いアプリケーションにはより多くのプロセッサ時間を割り当て、また優先度が高いアプリケーションから順に実行されるように制御を行なう。
【００１７】
また、各アプリケーションにはプロセッサを利用できる時間（タイム・スライス）が設定されており、優先度が高いアプリケーションであっても、タイムスライスを使い切ってしまえばそのアプリケーションが実行されなくなり、より優先度が低いアプリケーションが実行されるようになる。
【００１８】
ディスパッチ選択処理部＃０〜＃２（１５〜１７）はそれぞれが互いに接続されており、ディスパッチ処理部＃０〜＃２（１２〜１４）によって選択されたアプリケーションをいずれのＣＰＵにも送ることが可能である。たとえば、ＣＰＵ＃０（１）が、ディスパッチ選択処理部＃０（１５）およびディスパッチ選択処理部＃２（１７）を介してディスパッチ処理部＃２（１４）によって選択されたＡＰ群＃２（８）内のアプリケーションを受け、それを実行することが可能である。
【００１９】
ＣＰＵ識別子選択処理部＃０〜＃２（１８〜２０）は、対応するＣＰＵ＃０〜２（１〜３）のそれぞれに割り当てられたＣＰＵ識別子を選択する。このＣＰＵ識別子選択処理部＃０〜＃２（１８〜２０）の詳細については後述する。
【００２０】
ＣＰＵ停止処理部＃０〜＃２（２１〜２３）は、対応するＣＰＵ＃０〜＃２（１〜３）を稼動状態から停止状態に遷移させる。たとえば、ＣＰＵ停止処理部＃０〜＃２（２１〜２３）は、対応するＣＰＵ＃０〜＃２（１〜３）にＨＡＬＴ命令を実行させることによってＣＰＵを停止させる。
【００２１】
ＣＰＵ間割込み処理部＃０〜＃２（２４〜２６）は、対応するＣＰＵ＃０〜＃２（１〜３）によって指定されたＣＰＵ識別子に基づいて他のＣＰＵに対するＣＰＵ間割込みを発生させる。
【００２２】
タイマ＃０〜＃２（２７〜２９）は、設定された時間が経過したときにタイマ割込みを発生させ、対応するＣＰＵ＃０〜＃２（１〜３）に出力する。ＣＰＵ＃０〜＃２（１〜３）は、対応するタイマ＃０〜＃２（２７〜２９）からタイマ割込みを受けると、対応するディスパッチ処理部＃０〜＃２（１２〜１４）に対してディスパッチ処理を行なわせる。
【００２３】
なお、ディスパッチ処理部＃０〜＃２（１２〜１４）、ディスパッチ選択処理部＃０〜＃２（１５〜１７）、ＣＰＵ識別子選択処理部＃０〜＃２（１８〜２０）、ＣＰＵ停止処理部＃０〜＃２（２１〜２３）およびＣＰＵ間割込み処理部＃０〜＃２（２４〜２６）を、ハードウェアによって構成するようにしてもよいし、ＣＰＵ＃０〜＃２（１〜３）がソフトウェアを実行することによって実現するようにしてもよい。
【００２４】
図２は、ＣＰＵ識別子変換テーブル５の一例を示す図である。このＣＰＵ識別子変換テーブル５は、ＣＰＵ識別子（実ＣＰＵの識別子）と仮想ＣＰＵ識別子とを対応付けて記憶しており、ＣＰＵ＃０〜＃２（１〜３）はこのＣＰＵ識別子変換テーブル５を参照することにより自ＣＰＵに割り付けられている停止中のＣＰＵのＣＰＵ識別子を知ることができる。図２においては、ＣＰＵ識別子“２”のＣＰＵが停止中であり、そのＣＰＵの識別子“２”が仮想ＣＰＵ識別子“２”として、ＣＰＵ識別子“０”のＣＰＵに割り付けられていることを示している。
【００２５】
図３は、ＣＰＵ停止処理部＃０〜＃２（２１〜２３）によるＣＰＵ停止の処理手順を説明するためのフローチャートである。まず、停止対象のＣＰＵのＣＰＵ識別子が、ＣＰＵ識別子変換テーブル５内の他のＣＰＵの仮想ＣＰＵ識別子リストに登録される（Ｓ３０１）。この処理は、停止対象のＣＰＵ自身が行なうようにしてもよいし、他のＣＰＵが停止対象のＣＰＵから通知を受けて行なうようにしてもよい。
【００２６】
次に、停止対象のＣＰＵが対応するＣＰＵ停止処理部＃０〜＃２（２１〜２３）にＣＰＵ動作の停止を行なわせ（Ｓ３０２）、処理を終了する。
【００２７】
図４は、ＣＰＵ＃０〜＃２（１〜３）によるアプリケーション実行開始の処理手順を説明するためのフローチャートである。まず、ＣＰＵ＃０〜＃２（１〜３）は、対応するタイマ＃０〜＃２（２７〜２９）からタイマ割込みを受けると（Ｓ４０１）、対応するＣＰＵ識別子選択処理部＃０〜＃２（１８〜２０）に対して、ＣＰＵ識別子変換テーブル５内の仮想ＣＰＵ識別子リストから自ＣＰＵに割り当てられたＣＰＵ識別子を選択させる（Ｓ４０２）。
【００２８】
次に、ＣＰＵ＃０〜＃２（１〜３）は、ＣＰＵ識別子選択処理部＃０〜＃２（１８〜２０）によって選択されたＣＰＵ識別子を、対応するディスパッチ選択処理部＃０〜＃２（１５〜１７）に送ることにより、ディスパッチ処理を行なわせるディスパッチ処理部＃０〜＃２（１２〜１４）を選択させる（Ｓ４０３）。
【００２９】
次に、選択されたディスパッチ処理部＃０〜＃２（１２〜１４）が対応するＡＰ群＃０〜＃２（６〜８）の中からアプリケーションを選択する（Ｓ４０４）。最後に、ＣＰＵ＃０〜＃２（１〜３）は、選択されたアプリケーションを実行する（Ｓ４０５）。
【００３０】
ここで、ＣＰＵ識別子変換テーブル５が図２に示す内容の場合における処理について具体的に説明する。図２に示すように、ＣＰＵ識別子“２”のＣＰＵ（ＣＰＵ＃２（３））が停止中であり、仮想ＣＰＵ識別子“２”がＣＰＵ識別子“０”のＣＰＵ（ＣＰＵ＃０（１））に割り当てられている。
【００３１】
ＣＰＵ＃０（１）がタイマ＃０（２７）からタイマ割込みを受けると（Ｓ４０１）、ＣＰＵ識別子選択処理部＃０（１８）にＣＰＵ識別子変換テーブル５内の仮想ＣＰＵ識別子リストから自ＣＰＵに割り当てられたＣＰＵ識別子を選択させる（Ｓ４０２）。このとき、ＣＰＵ識別子“０”および“２”が選択される。
【００３２】
次に、ＣＰＵ＃０（１）は、ＣＰＵ識別子“０”および“２”のいずれかを選択する。この選択方法としては、たとえば、予めＣＰＵ識別子に優先度を付けておき、その優先度に応じてＣＰＵ識別子を選択するようにしてもよいし、ＣＰＵ識別子“０”に対応するアプリケーションの処理時間と、ＣＰＵ識別子“２”に対応するアプリケーションの処理時間とが同じになるようにＣＰＵ識別子を選択するようにしてもよい。
【００３３】
ＣＰＵ＃０（１）は、選択したＣＰＵ識別子をディスパッチ選択処理部＃０（１５）に通知する。たとえば、ディスパッチ選択処理部＃０（１５）にＣＰＵ識別子“２”が通知されると、ディスパッチ選択処理部＃０（１５）は、ディスパッチ選択処理部＃２（１７）を介してディスパッチ処理部＃２（１４）を選択し、ディスパッチ処理を行なわせる（Ｓ４０３）。
【００３４】
このとき、ディスパッチ処理部＃２（１４）は、ＡＰ群＃２（８）の中からアプリケーションを選択する（Ｓ４０４）。そして、ＣＰＵ＃０（１）は、ディスパッチ処理部＃２（１４）によって選択されたアプリケーションを実行する（Ｓ４０５）。
【００３５】
図５は、ＣＰＵ間割込み処理部＃０〜＃２（２４〜２６）によるＣＰＵ間割込みの処理手順を説明するためのフローチャートである。この処理は、停止中の割込み処理を、そのＣＰＵ識別子が割り当てられたＣＰＵに行わせるものである。まず、ＣＰＵ＃０〜＃２（１〜３）は、ＣＰＵ識別子変換テーブル５内の仮想識別子リストを参照して、割込みを送るＣＰＵ識別子がどのＣＰＵに割当てられているかを判定し、そのＣＰＵのＣＰＵ識別子を宛先ＣＰＵ識別子とする（Ｓ５０１）。
【００３６】
そして、ＣＰＵ＃０〜＃２（１〜３）は、対応するＣＰＵ間割込み処理部＃０〜＃２（２４〜２６）に対して宛先ＣＰＵ識別子を指定する。このとき、対応のＣＰＵ間割込み処理部＃０〜＃２（２４〜２６）は、指定された宛先ＣＰＵ識別子に対応するＣＰＵ間割込み処理部＃０〜＃２（２４〜２６）にＣＰＵ間割込みを送信する（Ｓ５０２）。ＣＰＵ間割込みを受けたＣＰＵ間割込み処理部＃０〜＃２（２４〜２６）は、対応のＣＰＵ＃０〜＃２（１〜３）に対して割込みを出力する。
【００３７】
なお、停止対象のＣＰＵ識別子をどのＣＰＵに割当てるかを決定する方法は複数存在する。第１の方法として、停止対象のＣＰＵの処理を割当てるＣＰＵを固定的に選択する方法が挙げられる。たとえば、ＣＰＵ＃２（３）が停止対象のとき、ＣＰＵ＃０（１）に割当てられることが予め決められている場合である。
【００３８】
第２の方法として、停止対象のＣＰＵの処理を割当てるＣＰＵを無作為（任意）に選択する方法が挙げられる。
【００３９】
第３の方法として、停止対象のＣＰＵの処理を割当てるＣＰＵを選択する際、既に他のＣＰＵの仮想ＣＰＵ識別子が割当てられているＣＰＵを除外し、他のＣＰＵの仮想ＣＰＵ識別子が割当てられていないＣＰＵの中から選択する方法が挙げられる。
【００４０】
第４の方法として、停止対象のＣＰＵの処理を割当てるＣＰＵを選択する際、稼動中のＣＰＵが実行するアプリケーション数が平準化されるようにＣＰＵを割当てる方法が挙げられる。たとえば、停止対象のＣＰＵに対応するランキューを参照して割当てるアプリケーション数を抽出すると共に、稼動中のＣＰＵに対応するランキューを参照することにより稼動中のＣＰＵが実行するアプリケーション数を抽出する。そして、稼動中のＣＰＵが実行するアプリケーション数が同じ程度になるように停止対象のＣＰＵの仮想ＣＰＵ識別子を割当てる。
【００４１】
以上説明したように、本実施の形態における情報処理装置によれば、ＣＰＵ識別子変換テーブル５の仮想ＣＰＵ識別子リストを変更することにより、停止対象のＣＰＵに割り当てられているアプリケーション群を他のＣＰＵに割当てるようにしたので、停止対象のＣＰＵの切り離しを短時間で行なうことが可能となった。
【００４２】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【００４３】
【図１】本発明の実施の形態における情報処理装置の機能的構成を示すブロック図である。
【図２】ＣＰＵ識別子変換テーブル５の一例を示す図である。
【図３】ＣＰＵ停止処理部＃０〜＃２（２１〜２３）によるＣＰＵ停止の処理手順を説明するためのフローチャートである。
【図４】ＣＰＵ＃０〜＃２（１〜３）によるアプリケーション実行開始の処理手順を説明するためのフローチャートである。
【図５】ＣＰＵ間割込み処理部＃０〜＃２（２４〜２６）による割込みの処理手順を説明するためのフローチャートである。
【符号の説明】
【００４４】
１〜３  ＣＰＵ、４  記憶装置、５  ＣＰＵ識別子変換テーブル、６〜８  ＡＰ群、９〜１１  ランキュー、１２〜１４  ディスパッチ処理部、１５〜１７  ディスパッチ選択処理部、１８〜２０  ＣＰＵ識別子選択処理部、２１〜２３  ＣＰＵ停止処理部、２４〜２６  ＣＰＵ間割込み処理部、２７〜２９  タイマ。
【図１】
2010113667.tif 000003
【図２】
2010113667.tif 000004
【図３】
2010113667.tif 000005
【図４】
2010113667.tif 000006
【図５】
2010113667.tif 000007