(57)【要約】【課題】マルチプロセッサによるマルチスレッディング技術を用いた情報処理において、処理異常を起こすことなく消費電力の低減を可能にしたデータ処理装置を提供する。【解決手段】情報が格納された記憶部と、複数のスレッドで情報の並行処理を行い、処理停止要求信号を受信すると、複数のスレッドの記憶部へのアクセスを停止し、複数のスレッドがアクセス停止前に取得した情報の処理を全て終了した後、電力の供給停止要求信号を送出する複数の第１のプロセッサと、記憶部に格納される情報のキューを監視し、キューに蓄積される情報のデータ量に応じて複数の第１のプロセッサの稼動数を決定し、稼動対象以外の第１のプロセッサに処理停止要求信号を送信する第２のプロセッサと、複数の第１のプロセッサへの電力供給を制御し、供給停止要求信号を受信すると、供給停止要求信号の送出元の第１のプロセッサへの電力供給を停止する電源制御部とを有する。【選択図】図１
2008129846.tif 000002
【特許請求の範囲】
【請求項１】
処理対象となる情報が格納される記憶部と、
複数のスレッドで前記情報の並行処理を行い、処理停止を要求する旨の信号である処理停止要求信号を受信すると、前記複数のスレッドの前記記憶部へのアクセスを停止し、前記複数のスレッドが前記記憶部へのアクセス停止前に取得した情報の処理を全て終了した後、電力供給の停止を要求する旨の信号である供給停止要求信号を送出する複数の第１のプロセッサと、
前記記憶部に格納される情報のキューを監視し、該キューに蓄積される情報のデータ量に応じて前記複数の第１のプロセッサの稼動数を決定し、稼動対象以外の第１のプロセッサに前記処理停止要求信号を送信する第２のプロセッサと、
前記複数の第１のプロセッサへの電力供給を制御し、前記供給停止要求信号を受信すると、該供給停止要求信号の送出元の第１のプロセッサへの電力供給を停止する電源制御部と、
を有するデータ処理装置。
【請求項２】
前記キューに蓄積される情報のデータ量が稼動中の前記第１のプロセッサの能力を超えると、
前記第２のプロセッサは、処理停止中の第１のプロセッサに対する電力供給の開始を要求する旨の信号である起動要求信号を前記電源制御部に送信し、
前記電源制御部は、前記第２のプロセッサから前記起動要求信号を受信すると、前記処理停止中の第１のプロセッサのいずれかに対して電力供給を開始する、請求項１記載のデータ処理装置。
【請求項３】
前記第２のプロセッサには前記複数の第１のプロセッサの稼働状況を示す管理表が格納され、
前記第２のプロセッサは、前記複数の第１のプロセッサの稼働状況の変更に伴って前記管理表を更新する請求項１または２記載のデータ処理装置。
【請求項４】
処理対象の情報が格納される記憶部と、複数のスレッドで前記情報の並行処理を行う複数の第１のプロセッサと、該複数の第１のプロセッサの稼動数を制御する第２のプロセッサと、前記複数の第１のプロセッサへの電力供給を制御する電源制御部とを有するデータ処理装置によるデータ処理方法であって、
前記第２のプロセッサは、前記記憶部に格納される情報のキューを監視し、該キューに蓄積される情報のデータ量に応じて前記複数の第１のプロセッサの稼動数を決定し、稼動対象以外の第１のプロセッサに処理停止を要求する旨の信号である処理停止要求信号を送信し、
前記第１のプロセッサは、前記処理停止要求信号を受信すると、前記複数のスレッドの前記記憶部へのアクセスを停止し、前記複数のスレッドが前記記憶部へのアクセス停止前に取得した情報の処理を全て終了した後、電力供給の停止を前記電源制御部に要求する、データ処理方法。
【請求項５】
前記キューに蓄積される情報のデータ量が稼動中の前記第１のプロセッサの能力を超えると、
前記第２のプロセッサは、処理停止中の第１のプロセッサに対する電力供給の開始を前記電源制御部に要求する、請求項４記載のデータ処理方法。
【請求項６】
前記第２のプロセッサは、前記複数の第１のプロセッサの稼働状況を示す管理表を格納し、前記複数の第１のプロセッサの稼働状況の変更に伴って前記管理表を更新する、請求項４または５記載のデータ処理方法。
【請求項７】
処理対象の情報が格納される記憶部と、複数のスレッドで前記情報の並行処理を行う複数の第１のプロセッサと、該複数の第１のプロセッサの稼動数を制御する第２のプロセッサと、前記複数の第１のプロセッサへの電力供給を制御する電源制御部とを有するコンピュータに実行させるためのプログラムであって、
前記第２のプロセッサに、前記記憶部に格納される情報のキューを監視させ、該キューに蓄積される情報のデータ量に応じて前記複数の第１のプロセッサの稼動数を決定させ、稼動対象以外の第１のプロセッサに処理停止を要求する旨の信号である処理停止要求信号を送信させ、
前記第１のプロセッサに、前記処理停止要求信号を受信すると、前記複数のスレッドの前記記憶部へのアクセスを停止させ、前記複数のスレッドが前記記憶部へのアクセス停止前に取得した情報の処理を全て終了した後、電力供給の停止を前記電源制御部に対して要求させる、プログラム。
【請求項８】
前記キューに蓄積される情報のデータ量が稼動中の前記第１のプロセッサの能力を超えると、
前記第２のプロセッサに、処理停止中の第１のプロセッサに対する電力供給の開始を前記電源制御部に対して要求させる、請求項７記載のプログラム。
【請求項９】
前記第２のプロセッサに、前記複数の第１のプロセッサの稼働状況を示す管理表を格納させ、前記複数の第１のプロセッサの稼働状況の変更に伴って前記管理表を更新させる、請求項７または８記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセスやデータを複数のプロセッサ、およびプロセッサ内のスレッドを用いて並列処理を行うデータ処理装置、データ処理方法およびコンピュータに実行させるためのプログラムに関する。
【背景技術】
【０００２】
データ通信において、データパケットを宛先に送り届けるための装置として、スイッチなどのパケット処理装置がある。これらのパケット処理装置はネットワークと回線で接続され、ネットワークを介して到着したパケットをその宛先に応じて、宛先に通じるネットワークへと送信する作業を行う。
【０００３】
ネットワークを利用したアプリケーションの増加により処理するデータ量は、近年、増加する傾向にある。パケットを処理するプロセッサはデータ量の増加に伴い処理能力を向上させる必要があるが、処理能力の向上に伴い消費電力量が指数関数的に増加するというデメリットが存在する。
【０００４】
この問題に対して、プロセッサ単体の処理能力を強化する代わりにプロセッサの数を増やして複数のパケットを同時に処理させることで、消費電力量の増加を制限することが可能となる。また、プロセッサの数が複数になることで並列処理が可能となる。このとき、同時に動作させるプロセッサの数を、処理するパケットの量に応じて動的に変更することができる。つまり、処理対象のパケット量が少ないとき、動作させるプロセッサの数を減少させ、パケット量が多くなるとプロセッサの数を増加させる。このようにしてプロセッサの稼動数を調節し、余剰能力分のプロセッサの電源を止められるため、消費電力量をさらに削減することが可能となる。
【０００５】
プロセッサの数を動的に変更する方式の一例として、省電力制御システムが特許文献１に開示されている。
【０００６】
特許文献１では、バスの負荷やアプリケーションのタスクキューの状態に応じてプロセッサの電源を停止／起動、またはプロセッサのクロックを増減する方式が記載されている。プロセッサで処理するタスクが少なくなるとバスの稼働率が減少したり、タスクキューのキュー長が減少したりするため、能力余剰分のプロセッサの電源を停止、またはクロックを減少させる。反対にプロセッサで処理するタスクが増えてくるとバスの稼働率が増加したり、タスクキューのキュー長が増加したりするため、停止中のプロセッサを起動させる。
【０００７】
このようにして処理量に応じて起動させるプロセッサを調節することで、消費電力を削減している。特許文献１の方式ではプロセッサへの電力供給の停止と開始をプロセッサに事前に通知することなく、電力制御装置が電力供給の停止と開始を示すイベントを検知すると行うことを特徴としている。
【特許文献１】特開平８−６６８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
近年、リソースを有効利用するためにマルチスレッディングを行うプロセッサがある。マルチスレッディングとは、複数のプロセスを並行してプロセッサに処理させるために、プロセッサで処理するプロセスを時間ごとに変更する仕組みである。通常、プロセスを実行させる時にはプロセッサ内での処理時間だけでなく、プロセッサがメモリなどの外部デバイスへのアクセス時間が存在する。そのアクセスの応答待ちの時間中はプロセッサのリソースが使用されていない状態になるため、この状態の時に他のプロセスをプロセッサに実行させることで、リソースの利用効率が向上する。マルチスレッディング技術はこうした効果を狙ったものである。
【０００９】
このマルチスレッディング技術をパケット処理に適用することも可能である。また、パケット処理を行う際、１つのパケット処理を複数のプロセッサを用いて実行する場合がある。この処理を行う複数のプロセッサの稼働数を特許文献１の方式を用いて変更させれば、プロセッサ単位で起動させたり停止させたりすることができる。
【００１０】
しかし、マルチスレッディング技術ではプロセッサ内に複数のスレッドが存在し、それらがプロセッサのリソースを利用することから、プロセッサ単位での起動と停止を行うと、処理途中の複数のプロセスを一度に停止させてしまうことになる。通常、１つのプロセッサ内では複数のパケット処理が行われることから、特許文献１の方式では、プロセッサの稼働個数が変更されるたびに複数のパケットが処理されずにパケットロスを発生させてしまうことになる。
【００１１】
本発明は上述したような従来の技術が有する問題点を解決するためになされたものであり、マルチプロセッサによるマルチスレッディング技術を用いた情報処理において、処理異常を起こすことなく消費電力の低減を可能にしたデータ処理装置、データ処理方法、およびコンピュータに実行させるためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するための本発明のデータ処理装置は、
処理対象となる情報が格納される記憶部と、
複数のスレッドで前記情報の並行処理を行い、処理停止を要求する旨の信号である処理停止要求信号を受信すると、前記複数のスレッドの前記記憶部へのアクセスを停止し、前記複数のスレッドが前記記憶部へのアクセス停止前に取得した情報の処理を全て終了した後、電力供給の停止を要求する旨の信号である供給停止要求信号を送出する複数の第１のプロセッサと、
前記記憶部に格納される情報のキューを監視し、該キューに蓄積される情報のデータ量に応じて前記複数の第１のプロセッサの稼動数を決定し、稼動対象以外の第１のプロセッサに前記処理停止要求信号を送信する第２のプロセッサと、
前記複数の第１のプロセッサへの電力供給を制御し、前記供給停止要求信号を受信すると、該供給停止要求信号の送出元の第１のプロセッサへの電力供給を停止する電源制御部と、
を有する構成である。
【００１３】
本発明では、処理対象の情報のデータ量に応じて余剰能力となるプロセッサが処理停止の対象となり、処理停止対象のプロセッサでは、全スレッドに対して新たな処理を受け付けないようにするとともに、各スレッドでの情報処理が全て終了した後に、そのプロセッサの電源がオフになる。
【発明の効果】
【００１４】
本発明では、マルチスレッディングにより情報処理を行うマルチプロセッサにおいて、プロセッサ毎に電力供給の制御を行うことが可能となり、消費電力の削減が可能となる。
【発明を実施するための最良の形態】
【００１５】
本発明のデータ処理装置は、処理対象として蓄積された情報のデータ量が少なくなり、余剰能力分のプロセッサの電力供給を停止する際、そのプロセッサ内でのスレッドによる処理が全て終了してから電源をオフすることを特徴とする。以下に、本発明のデータ処理装置の実施例として、パケットを転送するためのデータ転送装置を説明する。
【００１６】
図１は本実施例のデータ転送装置の一構成例を示すブロック図である。データ転送装置１０はパケットの送受信を行う送受信部２０と、パケットを処理するマルチプロセッサ４０と、転送対象のパケットを一時的に格納するための主記憶部６０と、マルチプロセッサ４０に供給する電力を制御する電源制御部３０とを有する構成である。マルチプロセッサ４０は複数のプロセッサ５０から構成され、それぞれのプロセッサ５０で異なるプログラムを実行させることが可能である。また、プロセッサ５０はマルチスレッディング機能を備えているため、単体のプロセッサ５０の中で複数のプログラムを同時に実行させることが可能である。なお、図１には、プロセッサ５０の数を３つ示しているが、３つの場合に限られない。
【００１７】
次に、プロセッサ５０について詳細に説明する。図２は本実施例のデータ転送装置におけるプロセッサの一構成例を示すブロック図である。
【００１８】
図２に示すように、プロセッサ５０は、プログラムを実行する演算部５３と、スレッド毎に固有のデータ（変数やプログラムなど）を格納する記憶部５４と、演算部５３で実行するスレッドの順番を決定するスレッドスケジューラ５５と、主記憶部６０とアクセスするための外部記憶アクセス部５２と、他のプロセッサや電源制御部３０と信号を送受信するシグナル送受信部５１と、電源制御部３０からの指示にしたがって電力供給を管理する電源モジュール５６とを有する。記憶部５４にはプロセッサ５０毎に異なる識別子の情報が格納されている。プロセッサ５０は、他の構成とやり取りする信号に識別子の情報を添付することで、送信先および送信元を認識可能である。
【００１９】
プロセッサ５０はプログラムにしたがって所定の処理を実行する。パケット処理用のプログラムには、外部から送受信部２０を介して受け取ったパケットを主記憶部６０に記録するＲｘ、パケットの転送タイミングを決定するスケジューラ、およびパケットを送受信部２０を介して外部に送出するＴｘなどの処理内容が記述されている。
【００２０】
複数のプロセッサ５０のうちパケット処理を実行するプロセッサの数は、処理対象となるパケットの量に応じて変化する。処理対象のパケットの量を検知するために、主記憶部６０には、パケットを一時的に蓄積するためのパケットキュー（以下では、単に「キュー」と称する）が設けられている。
【００２１】
複数のプロセッサ５０のうち、少なくとも１つのプロセッサがキュー内のパケット量を監視し、他のプロセッサがパケット処理を専門的に行う。以下では、キュー内のパケット量を監視し、かつ、パケット処理を実行するプロセッサの稼動数を管理するプロセッサをキュー監視プロセッサと称する。また、パケット処理を実行するプロセッサをパケット処理プロセッサと称する。
【００２２】
複数のプロセッサ５０は、ロードされるプログラムの種類によりキュー監視プロセッサとパケット処理プロセッサとに分けられる。そのため、プログラムをロードする前の各プロセッサ５０の構成は、図２に示すように、いずれも同一であってよい。
【００２３】
上記キュー監視プロセッサについて説明する。図３はキュー監視プロセッサの一構成例を示すブロック図である。
【００２４】
キュー監視プロセッサ５０ａの記憶部５４ａには、パケットキュー監視機能用プログラムが格納されている。演算部５３ａがそのプログラムを実行することで、パケット本体やパケットの情報を主記憶部６０のキューに書き込むキューアクセス機能と、キューに蓄積されたデータ量を監視するキュー監視機能と、パケットのデータ量に応じてパケット処理プロセッサの稼働数を管理するプロセッサ管理機能とが動作可能になる。演算部５３ａは、キューを監視し、キュー長やキューに溜まるデータ長を参照してデータ量を監視し、処理対象のパケットの量を判断する。
【００２５】
主記憶部６０のキューに格納されるパケットの量が多いほど、パケット処理プロセッサの稼動数を増やす必要がある。反対にキューに格納されるパケットの量が少なければ、稼動させるパケット処理プロセッサを最低限必要な数に抑制することが可能となる。パケット処理プロセッサの稼動数を増やすか否かの判定基準となる閾値が予め記憶部５４ａに登録されている。
【００２６】
この閾値は１つの場合に限らず、複数であってもよい。パケット処理プロセッサが４個設けられ、キューに格納可能な最大データ量の１／４、１／２、および３／４のそれぞれを第１、第２および第３の閾値のそれぞれとする場合で、プロセッサ管理機能の具体例を説明する。キューに蓄積されたパケットのデータ量が第１の閾値より小さければ、パケット処理プロセッサの稼動数を１にする。キューのデータ量が第１の閾値以上になると、パケット処理プロセッサの稼動数を１つ増やして２にする。キューのデータ量が第２の閾値以上になると、パケット処理プロセッサの稼動数をさらに１つ増やして３にする。そして、キューのデータ量が第３の閾値以上になると、パケット処理プロセッサの稼動数を４にする。
【００２７】
このように、キューに蓄積されるパケットのデータ量に対応して、稼動させるパケット処理プロセッサの数を増減する。キュー長の増減は、到着するパケットの量と、プロセッサ個数を増減させる機能の処理速度との兼ね合いで決まり、単位時間に到着するパケットの量がその処理速度よりも多ければキュー長は増加し、少なければキュー長は減少する。
【００２８】
データ量が所定の閾値以上になってパケット処理プロセッサの稼動数を１つ増やす場合、演算部５３ａは、新たに稼動させるパケット処理プロセッサに電力供給を要求する旨の起動要求信号を電源制御部３０に送信する。反対にパケット処理プロセッサの稼動数を１つ減らす場合、演算部５３ａは、停止対象となるパケット処理プロセッサに対してパケット処理の停止を要求する旨の処理停止要求信号を送信する。
【００２９】
また、各パケット処理プロセッサについて稼働中か否かの情報を示すプロセッサ管理表が記憶部５４ａに格納されている。演算部５３ａは、プロセッサ管理機能により、パケット処理プロセッサの稼動数が変わると、その変化に対応してプロセッサ管理表を更新する。キュー監視プロセッサ５０ａはプロセッサ管理表を参照することで、どのパケット処理プロセッサが稼動中であるかを調べることが可能となる。
【００３０】
次に、パケット処理プロセッサの構成について説明する。図４はパケット処理プロセッサの一構成例を示すブロック図である。
【００３１】
パケット処理プロセッサ５０ｂの演算部５３ｂは、記憶部５４ｂに格納されたパケット処理用のプログラムを実行することで、パケットの処理機能の他に、パケット本体またはパケットの情報を主記憶部６０のキューから取り出すためのキューアクセス機能と、パケットの処理が終了すると、終了したことをスレッドスケジューラ５５に通知する処理状況監視機能とが動作可能になる。
【００３２】
パケット処理プロセッサ５０ｂのキューアクセス機能には、キュー監視プロセッサ５０ａのキューアクセス機能には含まれない、次のような処理が追加されている。それは、キュー監視プロセッサ５０ａから処理停止要求信号を受信すると、主記憶部６０へのアクセスを停止し、いかなる処理も実行せずに他のスレッドにリソースを明け渡す処理である。
【００３３】
なお、パケット処理プロセッサは本発明の第１のプロセッサに相当し、キュー監視プロセッサは本発明の第２のプロセッサに相当する。
【００３４】
次に、電源制御部３０について説明する。図５は電源制御部の一構成例を示すブロック図である。
【００３５】
電源制御部３０は、キュー監視プロセッサ５０ａおよびパケット処理プロセッサ５０ｂと信号を送受信するシグナル送受信部３１と、パケット処理プロセッサ５０ｂへの電力供給状況を管理する電源管理部３２とを有する。電源管理部３２は、所定のパケット処理プロセッサ５０ｂへの電力供給を指示する旨の起動要求信号をキュー監視プロセッサ５０ａからシグナル送受信部３１を介して受信すると、対象となるパケット処理プロセッサ５０ｂの電源モジュール５６への電力供給を開始し、その後、対象のパケット処理プロセッサ５０ｂへの電力供給を開始したことを通知するための起動終了信号をキュー監視プロセッサ５０ａに送信する。
【００３６】
また、電源管理部３２は、電力供給の停止を要求する旨の供給停止要求信号をパケット処理プロセッサ５０ｂからシグナル送受信部３１を介して受信すると、そのパケット処理プロセッサ５０ｂの電源モジュール５６への電力供給を停止する。そして、電力供給を停止したパケット処理プロセッサとそのプロセッサへの電力供給を停止した旨の情報を含む供給停止通知信号をキュー監視プロセッサ５０ａに送信する。
【００３７】
次に、キュー監視プロセッサ５０ａの動作手順を説明する。
【００３８】
なお、上述したように、プロセッサの稼動数を変更するための負荷の判断用パラメータとしてキュー長やキューに蓄えられているパケットのデータ長があるが、ここでは、キュー長で負荷の大きさを判断する場合とする。また、ｎ個（ｎは２以上の整数）あるパケット処理プロセッサのｉ番目（ｉは１以上ｎ以下の任意の整数）のプロセッサが、増減対象の場合とする。
【００３９】
図６はパケットキュー監視プロセッサの動作手順を示すフローチャートである。図６（ａ）はプロセッサの稼動数を減らす場合であり、図６（ｂ）はプロセッサの稼動数を増やす場合である。
【００４０】
はじめに、パケット処理プロセッサの稼動数を減少させる場合の手順を説明する。図６（ａ）に示すように、キュー長が減少し、パケット処理プロセッサの稼動数を減少させるイベントを発生させる閾値をキュー長が下回ると（ステップ１０１）、キュー監視パケット５０ａの演算部５３ａは、ｉ番目のパケット処理プロセッサに処理停止要求信号を送信する（ステップ１０２）。
【００４１】
この処理停止要求信号は、ｉ番目のパケット処理プロセッサにおいて、パケット処理が終了する度に新たなパケットを処理していたスレッドの動作を停止させるとともに、停止中のスレッドがキューにアクセスしないようにするためのものである。ｉ番目のパケット処理プロセッサは、処理停止要求信号を受信すると、後述する手順で電源を切る。
【００４２】
ｉ番目のパケット処理プロセッサの電源が切れ、演算部５３ａは、電源制御部３０から供給停止通知信号を受信すると、プロセッサ管理表のｉ番目のパケット処理プロセッサが停止中を示すものに更新する（ステップ１０３）。なお、ｉ番目のパケット処理プロセッサの電源が切れたことをキュー監視プロセッサ５０ａが知る手段としては、電源制御部３０からの通知に限らず、キュー監視プロセッサ５０ａ自身により各パケット処理プロセッサに対して稼働中か否かを定期的にポーリングして調査するものであってもよい。
【００４３】
続いて、パケット処理プロセッサの稼動数を増加させる場合の手順を、図６（ｂ）を参照して説明する。
【００４４】
到着パケット数が増加すると、稼働中のプロセッサだけでは処理しきれないため、キュー長が増加する。このとき、ｉ番目のパケット処理プロセッサを起動させるためのトリガーとなる閾値をキュー長が上回ると（ステップ２０１）、演算部５３ａはｉ番目のパケット処理プロセッサを起動させるための起動要求信号を電源制御部３０に送信する（ステップ２０２）。電源制御部３０は、キュー監視プロセッサ５０ａから起動要求信号を受信すると、ｉ番目のパケット処理プロセッサに電力供給を開始し、そのパケット処理プロセッサの起動が終了した旨を通知するための起動終了信号をキュー監視プロセッサ５０ａに送信する。演算部５３ａは、電源制御部３０から受け取った情報を用いて、プロセッサ管理表のｉ番目のパケット処理プロセッサが起動中を示すものに更新する（ステップ２０３）。
【００４５】
次に、パケット処理プロセッサの動作手順を説明する。
【００４６】
ここでも対象となるパケット処理プロセッサをｉ番目のものとする。ｉ番目のパケット処理プロセッサは、キュー監視プロセッサ５０ａや電源制御部３０からの指示により、稼動の停止や再開を次のように行う。
【００４７】
はじめに、稼動停止時の動作を説明する。図７はパケット処理プロセッサの稼動停止時の動作手順を示すフローチャートである。
【００４８】
演算部５３ｂは、キュー監視プロセッサ５０ａから処理停止要求信号をシグナル送受信部５１を介して受信すると（ステップ３０１）、全スレッドがキューにアクセスできないようにする（ステップ３０２）。この手段としては、処理停止要求信号を受信すると、プログラムの分岐命令を用いてキューへのアクセス命令をスキップするという方法や、パケット処理を行っていないスレッド、またはパケット処理が終了したスレッドに対して計算処理を行わないようにスレッドスケジューラ５５に設定するといった方法がある。
【００４９】
演算部５３ｂは、パケット処理中のスレッド数をスレッドスケジューラ５５で管理しており、スレッド単位でパケット処理が終了する毎に処理中のスレッド数を更新する（ステップ３０３）。そして、動作中のスレッドによるパケットの処理が終了するのを待って、全てのスレッドでパケット処理が行われなくなると、電源をｏｆｆしても問題ないことを通知するために供給停止要求信号を電源制御部３０に送信する（ステップ３０４）。そして、電源制御部３０がｉ番目のパケット処理プロセッサの電源モジュール５６への電力供給を停止することで、そのパケット処理プロセッサの電源が切れる（ステップ３０５）。
【００５０】
続いて、稼動再開時の動作を説明する。図８はパケット処理プロセッサの稼動再開時の動作手順を示すフローチャートである。電源制御部３０からの電源モジュール５６への電力供給が再開すると（ステップ４０１）、演算部５３ｂは初期化プロセスを実行した後、全スレッドをキューにアクセスさせる（ステップ４０２）。
【００５１】
次に、電源制御部３０の動作を説明する。図９は電源制御部の動作手順を示すフローチャートである。図９（ａ）は電力供給を停止する場合であり、図９（ｂ）は電力供給を再開する場合である。ここでも、電力供給の停止および再開の対象となるパケット処理プロセッサをｉ番目のものとする。
【００５２】
電源管理部３２は、ｉ番目のパケット処理プロセッサから供給停止要求信号を受信すると（ステップ５０１）、ｉ番目のパケット処理プロセッサの電源モジュール５６に電力供給の停止を指示する（ステップ５０２）。一方、ｉ番目のパケット処理プロセッサへの電力供給を求める旨の起動要求信号をキュー監視プロセッサ５０ａから受信すると（ステップ６０１）、ｉ番目のパケット処理プロセッサの電源モジュール５６に電力供給の開始を指示する（ステップ６０２）。
【００５３】
なお、供給停止要求信号には、電力供給停止の要求元となるパケット処理プロセッサの識別子の情報が含まれている。供給停止通知信号には、電力供給停止対象のパケット処理プロセッサの識別子の情報が含まれている。起動要求信号および起動終了信号には、電力供給開始対象のパケット処理プロセッサの識別子の情報が含まれている。これらの信号に含まれる識別子の情報により、キュー監視プロセッサ５０ａおよび電源制御部３０は対象のパケット処理プロセッサ５０ｂを複数の中から特定することが可能となる。
【００５４】
次に、本実施例のデータ転送装置において、パケット処理プロセッサの稼動数を変更する際の全体動作を説明する。ここでは、パケット処理プロセッサがパケットヘッダの読取処理および経路検索処理を含むパケット処理を行うものとする。
【００５５】
図１０から図１３はデータ転送装置の動作を説明するための要部模式図である。
【００５６】
図１０に示すマルチプロセッサ４０に含まれるプロセッサは、機能に応じたプログラムがロードされることでそれぞれの機能を実現する。複数のプロセッサのうち１つのプロセッサをキュー監視プロセッサ５０ａとし、他のプロセッサをパケット処理プロセッサ５０ｂ１〜５０ｂｎ（ただし、ｎは２以上の整数）とする。図１０には、マルチプロセッサ４０の他に、主記憶部６０のパケットキュー６１および電源制御部３０が示されている。その他の構成については、図に示すことを省略している。
【００５７】
パケット処理プロセッサ５０ｂ１〜５０ｂｎのそれぞれは、複数のスレッドを備え、それぞれ同時にパケット処理を実行する。受信したパケットは一度パケットキュー６１に格納される。パケット処理を実行するスレッドは、自身がパケット処理を行っていなければ、独立してパケットキュー６１からパケットを取ってきて処理を行う。キュー監視プロセッサ５０ａはパケットのキュー長を監視し、キュー長に応じて稼働するプロセッサ数を変更する。
【００５８】
続いて、図１１に示すように、パケットの到着率が少なくなり、パケットのキュー長が閾値を下回ると、パケット処理プロセッサを１つ停止することが可能となる。ここでは、停止対象をパケット処理プロセッサ５０ｂ１とする。このとき、キュー監視プロセッサ５０ａはパケット処理プロセッサ５０ｂ１に対して、処理停止要求信号を送信する。
【００５９】
停止対象のパケット処理プロセッサ５０ｂ１では一部のスレッドにおいてパケットを処理している最中である。パケットロスを起こすことなくプロセッサの動作を止めるためには、全スレッドがパケットの処理を終わるまで待つ必要がある。そこで、パケット処理プロセッサ５０ｂ１の演算部は処理停止要求信号を受信すると、スレッドで動作しているプログラムに対し、パケットキュー６１にアクセスする命令部分を実行させないように割り込み指示を出す。同時にパケット処理が終了しているスレッドに対して、処理が終了していることをスレッドスケジューラに通知することを命令する。スレッドは新たにキューからパケットを読み込む命令を実行する段階になるとその命令をスキップし、まだパケット処理を行っている他のスレッドにプロセッサのリソースを明け渡す。
【００６０】
その後、図１２に示すように、パケット処理プロセッサ５０ｂ１の演算部は、全スレッドにおいてパケットの処理が終了していることを確認すると、終了時の処理を行った後、電源制御部３０に電力供給を止めることができることを通知するために供給停止要求信号を電源制御部３０に送信する。電源制御部３０は供給停止要求信号をパケット処理プロセッサ５０ｂ１から受信すると、パケット処理プロセッサ５０ｂ１への電力供給を停止する。それと同時にキュー監視プロセッサ５０ａに対して、電力供給を停止した対象となるプロセッサの情報を含む供給停止通知信号を送信する。
【００６１】
キュー監視プロセッサ５０ａは供給停止通知信号を電源制御部３０から受信すると、プロセッサ管理表の情報をパケット処理プロセッサ５０ｂ１が停止中を示すものに更新する。パケット処理プロセッサ５０ｂ１の停止後は残りの稼働中のパケット処理プロセッサ５０ｂ２〜５０ｂｎでパケット処理が実行される。
【００６２】
上述したように、転送対象のパケットのデータ量に応じて余剰能力となるプロセッサが処理停止の対象となる。そして、処理停止対象のプロセッサでは、全スレッドに対して新たな処理を受け付けないようにするとともに、各スレッドでの情報処理が全て終了した後に、そのプロセッサの電源がオフになる。これにより、処理中のスレッドが電源断によりパケットロスを起こすなど異常終了することを防止できる。
【００６３】
また、プロセッサ管理表が更新されることで、キュー監視プロセッサ５０ａは各パケット処理プロセッサの現在の稼働状況を把握し、プロセッサを新たに起動させる必要がある場合には、プロセッサ管理表を参照して起動対象のプロセッサを特定することが可能となる。
【００６４】
一方、図１３に示すように、パケットの到着率が増加し、キュー長が閾値を超えると、キュー監視プロセッサ５０ａは、その時点で停止中のパケット処理プロセッサ５０ｂ１を次のようにして起動させる。キュー監視プロセッサ５０ａはプロセッサ管理表を参照して停止しているパケット処理プロセッサを特定する。そして、パケット処理プロセッサ５０ｂ１に電力供給を要求するための起動要求信号を電源制御部３０に送信する。電源制御部３０は、キュー監視プロセッサ５０ａから起動要求信号を受信すると、パケット処理プロセッサ５０ｂ１に対して電力の供給を開始する。
【００６５】
パケット処理プロセッサ５０ｂ１は起動すると、初期化処理を実行する。初期化が終了すると、各スレッドが再度パケットキュー６１にアクセスし始め、パケットの処理を開始する。
【００６６】
パケットキュー６１に蓄積されるパケットのデータ量が稼働中のプロセッサの能力を超えると、上述のようにして、パケット処理プロセッサの稼動数を増やすので、従来と比べて処理が遅くなるのを防げる。
【００６７】
本発明のデータ処理装置は、処理対象の情報のデータ量に応じて余剰能力となるプロセッサが処理停止の対象となり、処理停止対象のプロセッサでは、全スレッドに対して新たな処理を受け付けないようにするとともに、各スレッドでの情報処理が全て終了した後に、そのプロセッサの電源がオフになる。データ処理がパケットの転送処理の場合には、処理中のスレッドが電源断によりパケットロスを起こすなど異常終了することを防止できる。したがって、本発明では、マルチスレッディングにより情報処理を行うマルチプロセッサにおいて、プロセッサ毎に電力供給の制御を行うことが可能となり、消費電力の削減が可能となる。
【００６８】
また、キューに蓄積される情報のデータ量が稼働中のプロセッサの能力を超えると、プロセッサの稼動数が増えるので、従来と比べて処理が遅くなるのを防げる。
【００６９】
なお、本発明のデータ処理装置をコンピュータに適用してもよい。
【図面の簡単な説明】
【００７０】
【図１】本実施例のデータ転送装置の一構成例を示すブロック図である。
【図２】図１に示したデータ転送装置のプロセッサの一構成例を示すブロック図である。
【図３】キュー監視プロセッサの一構成例を示すブロック図である。
【図４】パケット処理プロセッサの一構成例を示すブロック図である。
【図５】電源制御部の一構成例を示すブロック図である。
【図６】パケットキュー監視プロセッサの動作手順を示すフローチャートである。
【図７】パケット処理プロセッサの稼動停止時の動作手順を示すフローチャートである。
【図８】パケット処理プロセッサの稼動再開時の動作手順を示すフローチャートである。
【図９】電源制御部の動作手順を示すフローチャートである。
【図１０】データ転送装置の動作を説明するための要部模式図である。
【図１１】データ転送装置の動作を説明するための要部模式図である。
【図１２】データ転送装置の動作を説明するための要部模式図である。
【図１３】データ転送装置の動作を説明するための要部模式図である。
【符号の説明】
【００７１】
１０    データ転送装置
３０    電源制御部
４０    マルチプロセッサ
５０    プロセッサ
５０ａ    キュー監視プロセッサ
５０ｂ    パケット処理プロセッサ
６０    主記憶部
【図１】
2008129846.tif 000003
【図２】
2008129846.tif 000004
【図３】
2008129846.tif 000005
【図４】
2008129846.tif 000006
【図５】
2008129846.tif 000007
【図６】
2008129846.tif 000008
【図７】
2008129846.tif 000009
【図８】
2008129846.tif 000010
【図９】
2008129846.tif 000011
【図１０】
2008129846.tif 000012
【図１１】
2008129846.tif 000013
【図１２】
2008129846.tif 000014
【図１３】
2008129846.tif 000015