図面 (/)

技術 プロセッサシステム、および制御プログラム

出願人 富士通株式会社
発明者 山下浩一郎山内宏真鈴木貴久栗原康志
出願日 2015年4月2日 (2年6ヶ月経過) 出願番号 2015-075929
公開日 2015年8月6日 (2年2ヶ月経過) 公開番号 2015-144023
状態 特許登録済
技術分野 デバッグ/監視
主要キーワード センサ閾値 フラグ条件 所定命令 状態監視回路 回避機構 読込要求 インストラクションキャッシュ 解除回路

この技術の活用可能性のある市場・分野

関連する未来課題
重要な関連分野

この技術に関連する成長市場

関連メディア astavision

  • 機械学習・深層学習(Deep Learning)

    2012年6月26日、Google Official Blog は、ネコと思しき1枚の画像とともにあ…

  • 人工知能

    米国Google社が2015年6月23日に発表した“A Neural Conversational …

  • 地下大空間・地下構造物

    周口店洞窟の北京原人、ラスコーやアルタミラの壁画洞窟に象徴されるように、人類は太古から地下空間を生活…

後で読みたい技術情報を見つけたら、ブックマークしておきましょう!

ページの右上にあるブックマークボタンからこのページをブックマークできます。
あなたがブックマークした技術情報は、いつでもマイページのリストから閲覧することが出来ます。

この項目の情報は公開日時点(2015年8月6日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (14)

課題

プログラム中に明示されてないループによって発生したスピン状態検出することを図ること。

解決手段

CPU#0は、フラグの監視による状態遷移待ちを行った結果、スピン状態となるスレッド0を実行している。スピン回避機構104#0は、CPU#0の電力と、CPU#0内のキャッシュメモリ103#0の状態を監視する。スピン回避機構104#0は、CPU#0の電力が閾値以上となり、かつ、キャッシュメモリ103#0の状態が変化なしを示すときに、CPU#0がスピン状態であることを検出する。

背景

従来から、ソフトウェアマルチスレッド動作する場合、同期処理排他制御を行いながら処理を実行することがある。同期処理や排他制御において、明示的に特定の命令を用いる方法として、CPU(Central Processing Unit)などのハード機能を利用するバリア同期命令、またはOS(Operating System)のライブラリであるスレッド一時停止解除を行うミューテックス存在する。また、明示的でない排他制御として、たとえば、フラグの監視による状態遷移待ちによる実装方法が存在する。

このような同期処理や排他制御は、ハードウェアの点からは処理を実行しているものの、ソフトウェアは同じ処理を繰り返しており処理が進まない状態であり、システムの処理能力を低下させる原因となっていた。以下、このような、同じ処理を繰り返している状態をスピン状態として定義する。また、スピン状態になったCPUは、消費電力が上昇してしまっていた。このことから、スピン状態を検出し、スピン状態を回避する技術が開示されている。

スピン状態を検出する技術として、たとえば、プログラム中にループしているというスピンウェイト命令を検出する技術が開示されている。また、スピン状態を検出する他の技術として、たとえば、統計情報を用いて命令例のループを予測して、スピン状態を検出する技術が開示されている。また、スピン状態が検出された場合のスケジューリング技術として、たとえば、スピン状態を検出した際に、動作状態退避復元する技術が開示されている。また、スピン状態となったスレッドが存在した場合、別のスレッドをCPUに割り当てる技術が存在する(たとえば、下記特許文献1〜4を参照。)。

概要

プログラム中に明示されてないループによって発生したスピン状態を検出することをること。CPU#0は、フラグの監視による状態遷移待ちを行った結果、スピン状態となるスレッド0を実行している。スピン回避機構104#0は、CPU#0の電力と、CPU#0内のキャッシュメモリ103#0の状態を監視する。スピン回避機構104#0は、CPU#0の電力が閾値以上となり、かつ、キャッシュメモリ103#0の状態が変化なしを示すときに、CPU#0がスピン状態であることを検出する。

目的

本発明は、上述した従来技術による問題点を解消するため、プログラム中に明示されてないループによって発生したスピン状態を検出できるプロセッサシステム、および制御プログラムを提供する

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

プロセッサと、前記プロセッサの電力検出結果に応じたセンサ信号出力するセンサとを有するプロセッサシステムであって、前記プロセッサは、キャッシュメモリの状態の監視結果に応じた状態信号を出力し、前記センサ信号および前記状態信号に基づいて実行中のプログラムスピン状態を検出するプロセッサシステム。

請求項2

前記センサ信号が閾値以上となり、かつ前記状態信号が前記キャッシュメモリの状態に変化が無いことを示す場合に前記スピン状態を検出する、請求項1に記載のプロセッサシステム。

請求項3

プロセッサと、前記プロセッサの電力の検出結果に応じたセンサ信号を出力するセンサとを有するプロセッサシステムの制御プログラムであって、前記プロセッサに、キャッシュメモリの状態の監視結果に応じた状態信号を出力し、前記センサ信号および前記状態信号に基づいて実行中のプログラムのスピン状態を検出する処理を実行させるプロセッサシステムの制御プログラム。

請求項4

前記センサ信号が閾値以上となり、かつ前記状態信号が前記キャッシュメモリの状態に変化が無いことを示す場合に前記スピン状態を検出する処理を実行させる、請求項3に記載のプロセッサシステムの制御プログラム。

技術分野

0001

本発明は、スピン状態検出するプロセッサシステム、および制御プログラムに関する。

背景技術

0002

従来から、ソフトウェアマルチスレッド動作する場合、同期処理排他制御を行いながら処理を実行することがある。同期処理や排他制御において、明示的に特定の命令を用いる方法として、CPU(Central Processing Unit)などのハード機能を利用するバリア同期命令、またはOS(Operating System)のライブラリであるスレッド一時停止解除を行うミューテックス存在する。また、明示的でない排他制御として、たとえば、フラグの監視による状態遷移待ちによる実装方法が存在する。

0003

このような同期処理や排他制御は、ハードウェアの点からは処理を実行しているものの、ソフトウェアは同じ処理を繰り返しており処理が進まない状態であり、システムの処理能力を低下させる原因となっていた。以下、このような、同じ処理を繰り返している状態をスピン状態として定義する。また、スピン状態になったCPUは、消費電力が上昇してしまっていた。このことから、スピン状態を検出し、スピン状態を回避する技術が開示されている。

0004

スピン状態を検出する技術として、たとえば、プログラム中にループしているというスピンウェイト命令を検出する技術が開示されている。また、スピン状態を検出する他の技術として、たとえば、統計情報を用いて命令例のループを予測して、スピン状態を検出する技術が開示されている。また、スピン状態が検出された場合のスケジューリング技術として、たとえば、スピン状態を検出した際に、動作状態退避復元する技術が開示されている。また、スピン状態となったスレッドが存在した場合、別のスレッドをCPUに割り当てる技術が存在する(たとえば、下記特許文献1〜4を参照。)。

先行技術

0005

国際公開第2003/040948号パンフレット
特開2006−40142号公報
特開2009−116885号公報
特開平5−204675号公報

発明が解決しようとする課題

0006

しかしながら、上述した従来技術において、明示的に記述されたスピンウェイト命令を参照することでスピン状態を検出しているため、プログラム中に明示されてないループによって発生したスピン状態を検出することが困難であるという問題があった。たとえば、フラグの監視による状態遷移待ちするプログラムの命令群には、CPUのハード機能を利用する命令、またはOSのライブラリを呼び出す命令が存在しないため、該当のプログラムがスピン状態を引き起こす目印になる命令が存在しないことになる。したがって、従来技術にかかる技術では、このようなプログラムがスピン状態を引き起こすことを検出することが困難であった。

0007

また、上述した従来技術において、統計情報を用いることで明示的でないスピン状態をある程度予測することは可能ではある。しかしながら、統計情報収集時に発生しなかった箇所についてはスピン状態を検出できないため、明示的でないスピン状態を全て検出することは困難であるという問題があった。

0008

本発明は、上述した従来技術による問題点を解消するため、プログラム中に明示されてないループによって発生したスピン状態を検出できるプロセッサシステム、および制御プログラムを提供することを目的とする。

課題を解決するための手段

0009

上述した課題を解決し、目的を達成するため、本発明の一側面によれば、プロセッサと、プロセッサの電力の検出結果に応じたセンサ信号出力するセンサとを有するプロセッサシステムであって、プロセッサは、キャッシュメモリの状態の監視結果に応じた状態信号を出力し、センサ信号および状態信号に基づいて実行中のプログラムのスピン状態を検出するプロセッサシステム、および制御プログラムが提案される。

発明の効果

0010

本発明の一側面によれば、プログラム中に明示されてないループによって発生したスピン状態を検出できるという効果を奏する。

図面の簡単な説明

0011

図1は、マルチコアプロセッサシステム100の動作例を示す説明図である。
図2は、マルチコアプロセッサシステム100のハードウェア例を示すブロック図である。
図3は、マルチコアプロセッサシステム100のCPU周辺のハードウェアとソフトウェア例を示すブロック図である。
図4は、スピン回避機構104のハードウェア例を示すブロック図である。
図5は、スピン判定部402によるスピン状態検出の一例を示すブロック図である。
図6は、スピン判定部402によるスピン状態解除検出の一例を示すブロック図である。
図7は、キャッシュメモリ状態監視回路403の動作例を示す説明図である。
図8は、スピン状態の消費電力状態の一例を示す説明図である。
図9は、スピン状態の解消のタイミング判定方法例を示す説明図である。
図10は、スピン状態検出判定の一例を示すシーケンス図である。
図11は、スピン状態解除判定の一例を示すシーケンス図である。
図12は、スピン回避機構ドライバ412によるスピン状態周期性判断処理の一例を示すフローチャートである。
図13は、ディスパッチスケジューラ324によるスレッド退避復帰処理の一例を示すフローチャートである。

実施例

0012

以下に添付図面を参照して、開示のプロセッサシステム、および制御プログラムの実施の形態を詳細に説明する。なお、本実施の形態にかかるシステムの例として、複数のCPUを有するマルチコアプロセッサシステムにて説明を行う。マルチコアプロセッサとは、コアが複数搭載されたプロセッサである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、本実施の形態では、説明を単純化するため、シングルコアのプロセッサが並列されているプロセッサ群を例に挙げて説明する。

0013

図1は、マルチコアプロセッサシステム100の動作例を示す説明図である。図1で示すマルチコアプロセッサシステム100は、CPU#0、CPU#1を含む。以下、接尾記号"#n"が付随された記号は、n番目のCPUに対応する記号であることを示している。マルチコアプロセッサシステム100は、携帯電話といった携帯端末を想定している。符号101で示す説明図は、CPU#0がスピン状態となった状態を示しており、符号102で示す説明図は、スピン状態となったCPU#0が解除され、非スピン状態となった場合を示している。また、CPU#0、CPU#1は、キャッシュメモリ103#0、キャッシュメモリ103#1、を含む。さらに、CPU#0、CPU#1は、それぞれ、スピン状態になったことを検出するスピン回避機構104#0、スピン回避機構104#1を有している。

0014

符号101に示す説明図にて、CPU#0は、実行コード105を含むスレッド0を実行している。実行コード105は、*yの値を書き換えるのを待ってループを抜け出すアルゴリズムとなっている。このようなアルゴリズムの場合、ミューテックスのような専用命令により排他同期を行っていれば、明示的なロック状態コンパイラ認識できる。しかし、実行コード105のようなコーディングを行っている場合、これがスピン状態を起こすかどうかをコンパイラ等が判定することはできない。

0015

スレッド0の実行によって、CPU#0がスピン状態となると、CPU#0の電力が上昇する。また、同一の処理を繰り返すため、キャッシュメモリ103#0の状態が変化しない。スピン回避機構104#0は、CPU#0の電力とキャッシュメモリ103#0の状態から、スピン状態を検出する。このように、スピン回避機構104#0は、スピン状態におけるマルチコアプロセッサシステム100の状態を用いて検出することで、排他制御用の特別な命令を用いずに実装された排他制御によって発生したスピン状態を検出することができる。

0016

符号102に示す説明図では、スピン状態検出後のマルチコアプロセッサシステム100の状態である。CPU#0は、スピン回避機構104#0によるスピン状態の検出によって、スピン状態となっており、プログラム内に排他制御の記述が明示的にないスレッド0の特定が容易となる。したがって、CPU#0は、特定できたスレッド0をディスパッチループから退避する。これにより、CPU#0の電力が下降するため、マルチコアプロセッサシステム100は、消費電力を削減することができる。

0017

(マルチコアプロセッサシステム100のハードウェア)
図2は、マルチコアプロセッサシステム100のハードウェア例を示すブロック図である。図2において、マルチコアプロセッサシステム100は、複数のCPUが含まれるCPUs201と、ROM(Read‐Only Memory)202と、RAM(Random Access Memory)203と、を含む。また、マルチコアプロセッサシステム100は、フラッシュROM204と、フラッシュROMコントローラ205と、フラッシュROM206と、を含む。また、マルチコアプロセッサシステム100は、ユーザやその他の機器との入出力装置として、ディスプレイ207と、I/F(Interface)208と、キーボード209と、を含む。また、各部はバス210によってそれぞれ接続されている。

0018

ここで、CPUs201は、マルチコアプロセッサシステム100の全体の制御を司る。CPUs201は、CPU#0〜CPU#nを含む。nは、1以上の整数である。また、CPU#0〜CPU#nには、図1で示したキャッシュメモリ103、スピン回避機構104、またその他のハードウェアが存在する。これらのハードウェアについては、図3にて後述する。

0019

ROM202は、ブートプログラムなどのプログラムを記憶している。RAM203は、CPUs201のワークエリアとして使用される。フラッシュROM204は、読出し速度高速なフラッシュROMであり、たとえば、NOR型フラッシュメモリである。たとえば、フラッシュROM204は、OSなどのシステムソフトウェアアプリケーションソフトウェアなどを記憶している。たとえば、OSを更新する場合、マルチコアプロセッサシステム100は、I/F208によって新しいOSを受信し、フラッシュROM204に格納されている古いOSを、受信した新しいOSに更新する。

0020

フラッシュROMコントローラ205は、CPUs201の制御に従ってフラッシュROM206に対するデータのリードライトを制御する。フラッシュROM206は、データの保存運搬を主に目的としたフラッシュROMであり、たとえば、NAND型フラッシュメモリである。フラッシュROM206は、フラッシュROMコントローラ205の制御で書き込まれたデータを記憶する。データの具体例としては、マルチコアプロセッサシステム100を使用するユーザがI/F208を通して取得した画像データ、映像データや、また本実施の形態にかかるスレッド処理方法を実行するプログラムなどである。フラッシュROM206は、たとえば、メモリカードSDカードなどを採用することができる。

0021

ディスプレイ207は、カーソルアイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。ディスプレイ207は、たとえば、TFT(Thin Film Transistor)液晶ディスプレイなどを採用することができる。

0022

I/F208は、通信回線を通じてLAN、WAN(Wide Area Network)、インターネットなどのネットワーク211に接続され、ネットワーク211を介して他の装置に接続される。そして、I/F208は、ネットワーク211と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F208には、たとえばモデムLANアダプタなどを採用することができる。

0023

キーボード209は、数字、各種指示などの入力のためのキーを有し、データの入力を行う。また、キーボード209は、タッチパネル式入力パッドテンキーなどであってもよい。

0024

図3は、マルチコアプロセッサシステム100のCPU周辺のハードウェアとソフトウェア例を示すブロック図である。初めに、マルチコアプロセッサシステム100は、ハードウェアとして、スヌープ機構301、サーモ電力検出部303、PMU(Power Management Unit)304、スピン回避機構104、を含む。

0025

スヌープ機構301は、CPU#0〜CPU#nがアクセスするキャッシュメモリ103の整合性を取る装置である。たとえば、キャッシュメモリ103#0が更新されると、スヌープ機構301が、キャッシュメモリ103#1に更新内容通知する。スヌープ機構301のプロトコルとしては、無効型プロトコルと更新型プロトコルが存在する。

0026

なお、キャッシュメモリ103の整合性を取る装置は、キャッシュコヒーレンシ機構に分類され、キャッシュコヒーレンシ機構の一例として、スヌープ機構が存在する。キャッシュコヒーレンシ機構は、大別してスヌープ方式を採用したスヌープ機構とディレクトリ方式とがある。本実施の形態にかかるスヌープ機構301は、ディレクトリ方式を採用したキャッシュコヒーレンシ機構であってもよい。

0027

メモリ302は、CPUs201からアクセス可能共有記憶装置である。なお、メモリ302は、RAM203の全てであってもよいし、または一部であってもよい。さらに、メモリ302は、ROM202、フラッシュROM204、フラッシュROM206を含んでいてもよい。

0028

なお、図3で説明するスヌープ機構301、メモリ302以外のハードウェア、ソフトウェアは、CPU#0〜CPU#n全てが有する。したがって、以下の図3の説明では、CPU#0に関するハードウェア、ソフトウェアについて説明を行い、さらに、接尾記号"#0"を省略する。

0029

CPU#0内のハードウェアとして、CPU#0は、プログラムカウンタ311、タイマ312、キャッシュメモリ103を含む。また、CPU#0で実行されるソフトウェアとして、CPU#0は、OS321、スレッド331〜スレッド333、アイドルスレッド334を実行する。OS321は、カーネル322、API(Application Programming Interface)323、ディスパッチスケジューラ324、排他同期API検出部325を含む。

0030

サーモ電力検出部303は、CPUに付随している、温度調節を行うサーモスタットから電力、温度を検出する機能を有する。なお、サーモ電力検出部303は、CPUと配線接続はしておらず、基盤上で物理的に接続している。PMU304は、CPUの電源電圧クロック管理する装置である。

0031

スピン回避機構104は、サーモ電力検出部303、キャッシュメモリ103、排他同期API検出部325からの入力に基づいて、スピン状態を検出する。検出結果は、ディスパッチスケジューラ324に出力される。なお、スピン回避機構104の内部については、図4にて後述する。

0032

プログラムカウンタ311は、CPUのレジスタ一つであり、CPUが現在実行中の命令が格納されているメモリ302上のアドレスを格納する記憶領域である。タイマ312は、時間経過を通知する機能を有する。なお、タイマ312は、CPUのクロックカウンタ等で実装される。

0033

キャッシュメモリ103は、CPUがメモリ302のデータに高速にアクセス可能とするため、メモリ302のデータの一部をコピーした記憶領域である。また、キャッシュメモリ103は、データを記憶するデータキャッシュと、プログラム内の命令を記憶するインストラクションキャッシュを含む。

0034

OS321は、マルチコアプロセッサシステム100を制御するプログラムである。たとえば、OS321は、メモリ302を管理したり、またはファイルシステムアプリに提供したりする。カーネル322は、OS321の中核となる機能を有する。たとえば、カーネル322は、フラッシュROMコントローラ205、キーボード209等といったハードウェアを制御するデバイスドライバを含む。

0035

API323は、スレッド331〜スレッド333がOS321の提供するライブラリにアクセスするためのインターフェースである。たとえば、API323は、ファイルシステムの制御、画像処理文字制御などを実行する関数として提供される。

0036

ディスパッチスケジューラ324は、スレッドの割当を制御する機能を有する。たとえば、ディスパッチスケジューラ324は、CPUに次に割り当てるスレッドを決定し、決定されたスレッドをCPUに割り当てる。ディスパッチスケジューラ324によって割り当てられるスレッドは、スレッド331〜スレッド333、アイドルスレッド334である。また、ディスパッチスケジューラ324は、アイドルスレッド334をCPUに割り当てる場合、PMU304にCPUへのクロックの供給を停止するよう通知する。

0037

排他同期API検出部325は、スピン回避機構104を制御するAPIである。具体的に、排他同期API検出部325は、スピン状態であると設定するAPIと、スピン状態であったのを解除するAPIとが含まれる。

0038

スレッド331〜スレッド333は、アプリケーションソフトウェア内の一機能を実行する。たとえば、アプリケーションソフトウェアが動画再生アプリであることを想定する。このとき、スレッド331がネットワーク211からダウンロードするダウンロードスレッド、スレッド332が動画コーデックに従ってデコードするデコードスレッド、スレッド333がディスプレイ207に表示する描画スレッドとなる。アイドルスレッド334は、何もしないスレッドである。たとえば、アイドルスレッドは、NOP命令を実行する。

0039

以下、図4図6にて、スピン回避機構104のハードウェア例について説明を行う。図4図6では、CPU#0に対応するスピン回避機構104#0を例にして説明を行い、スピン回避機構104#1〜スピン回避機構104#nについては、等しいハードウェアであるため、説明を省略し、接尾記号"#n"も省略する。

0040

図4は、スピン回避機構104のハードウェア例を示すブロック図である。スピン回避機構104は、記憶部401、スピン判定部402、キャッシュメモリ状態監視回路403、センサI/F404、発行命令バッファ405、を含む。また、スピン回避機構104は、センサ411からの入力を受け付ける。また、スピン回避機構104は、カーネル322内のスピン回避機構ドライバ412からの制御を受ける。

0041

記憶部401は、情報を記憶するレジスタ群であり、制御レジスタ421、スピン状態ステータスレジスタ422、センサ閾値格納レジスタ423を含む。制御レジスタ421は、スピン状態設定、スピン状態解除設定、スピン状態という3つのフィールドを含む。スピン状態設定フィールド、スピン状態解除設定フィールドは、スピン回避機構ドライバ412から設定されるフィールドである。

0042

スピン状態設定フィールドは、スピン回避機構ドライバ412からスピン状態であると指示された場合に、指示を示す識別子を格納する。たとえば、スピン状態設定フィールドは、スピン状態であると指示された場合、TRUEを格納し、指示されてないとき、FALSEを格納する。スピン状態解除設定フィールドは、スピン状態であったのを解除すると指示された場合に、指示を示す識別子を格納する。たとえば、スピン状態解除設定フィールドは、スピン状態を解除すると指示された場合、TRUEを格納し、指示されてないとき、FALSEを格納する。

0043

スピン状態フィールドは、スピン判定部402によって判定された結果に基づいて、スピン状態か否かを示す識別子を格納する。たとえば、スピン状態フィールドは、スピン判定部402によってスピン状態であると判定された場合、TRUEを格納し、非スピン状態であると判定されたとき、FALSEを格納する。また、スピン状態フィールドは、スピン回避機構ドライバ412に対してスピン状態か否かを示す割込信号を通知する。

0044

スピン状態ステータスレジスタ422は、スピン状態か、または非スピン状態かを、スピン回避機構104内部で使用するために用意されたレジスタである。具体的に、スピン状態ステータスレジスタ422は、スピン状態であればTRUEであり、非スピン状態であればFALSEを格納する。センサ閾値格納レジスタ423は、センサ411の値に対する閾値を格納する。具体的な閾値の値としては、図8にて後述する。

0045

スピン判定部402は、制御レジスタ421、センサI/F404、センサ閾値格納レジスタ423、スピン状態ステータスレジスタ422、発行命令バッファ405からの入力により、スピン状態かを判定し、制御レジスタ421に出力する。また、スピン判定部402は、スピン状態であることを検出するスピン状態検出回路431と、スピン状態が解除され、非スピン状態であることを検出するスピン状態解除回路432と、を含む。なお、スピン状態検出回路431の詳細については、図5にて後述する。また、スピン状態解除回路432の詳細については、図6にて後述する。

0046

キャッシュメモリ状態監視回路403は、キャッシュメモリ103の状態を監視する。具体的に、キャッシュメモリ状態監視回路403は、プログラムカウンタ311#0を用いて、キャッシュメモリ103内の、インストラクションキャッシュに格納されている命令を取得し、発行命令バッファ405に格納する。また、キャッシュメモリ状態監視回路403は、キャッシュメモリ103の状態を示す状態信号をスピン判定部402に出力する。キャッシュメモリ状態監視回路403の動作については、図7にて後述する。センサI/F404は、センサ411に対するインターフェースである。センサI/F404は、センサ411から電力量を取得し、センサ信号として出力する。発行命令バッファ405は、CPUが実行した命令を蓄積する。

0047

センサ411は、サーモ電力検出部303といった電力センサである。また、センサ411は、温度センサであってもよい。前述したセンサ閾値格納レジスタ423は、センサ411に対応した閾値が格納されている。

0048

スピン回避機構ドライバ412は、スピン回避機構104を制御するドライバである。具体的に、スピン回避機構ドライバ412は、スピン状態設定フィールド、スピン状態解除設定フィールドに対して書き込みを行う。また、スピン回避機構ドライバ412は、タイマ312による一定周期ごとに、スピン状態フィールドの状態に対応した割込信号を取得し、スピン状態が悪化している状態であるかを判断し、さらにスピン状態に周期性があるか否かを判断する。判断結果は、ディスパッチスケジューラ324に通知される。

0049

図5は、スピン判定部402によるスピン状態検出の一例を示すブロック図である。図5では、スピン判定部402によるスピン状態検出時に用いる回路の例を示している。スピン判定部402は、スピン状態検出回路431と、比較回路501と、判定回路502とを用いて、スピン状態を検出する。また、スピン状態検出回路431は、AND回路511と、OR回路512とを含む。また、判定回路502は、判定回路503、抽出回路504、抽出回路505、比較回路506を含む。

0050

また、スピン判定部402は、スピン状態検出のため、制御レジスタ421、センサI/F404、センサ閾値格納レジスタ423、キャッシュメモリ状態監視回路403から出力されるキャッシュ状態信号521、プログラムカウンタ311の入力を受ける。さらに、スピン判定部402は、制御レジスタ421、スピン状態ステータスレジスタ422に検出したスピン状態を出力する。キャッシュ状態信号521は、キャッシュメモリ103の状態が変化したか否かを示す信号である。なお、キャッシュ状態信号521の詳細については、図7にて後述する。

0051

比較回路501は、センサI/F404とセンサ閾値格納レジスタ423とを比較し、比較結果をスピン状態検出回路431内のAND回路511に出力する。具体的に、比較回路501は、センサI/F404からのセンサ信号がセンサ閾値格納レジスタ423の値以上である場合、比較結果としてTRUEを出力する。また、比較回路501は、センサI/F404からのセンサ信号がセンサ閾値格納レジスタ423の値より小さい場合、比較結果としてFALSEを出力する。

0052

判定回路502は、プログラムが実行する命令が所定命令であるか否かを判定し、判定結果をスピン状態検出回路431のAND回路511に出力する。ここで、所定命令とは、ジャンプ命令である。または、所定命令を実行することでジャンプ命令となる命令であってもよい。たとえば、プログラムカウンタ311に、汎用レジスタの値や、メモリの値を設定するという命令があった場合、設定を行うことで、次の命令の実行位置が、設定された値となり、ジャンプ命令と同じ動作を行う。したがって、このような動作を行う命令も、所定命令として含めてもよい。

0053

判定回路503は、キャッシュ状態信号521がキャッシュ状態変化なしか否かを判定し、判定結果を抽出回路504に出力する。具体的に、判定回路503は、キャッシュ状態信号521が、キャッシュ状態変化なしを示す状態信号の場合、判定結果としてTRUEを出力し、キャッシュ状態変化ありを示す状態信号の場合、判定結果としてFALSEを出力する。

0054

抽出回路504は、判定結果がTRUEである場合、発行命令バッファ405に蓄積されていた命令から、ジャンプ先アドレス抽出して比較回路506に出力する。たとえば、蓄積されていた命令がジャンプ命令+ジャンプ先アドレスとなっていた場合、抽出回路504は、ジャンプ先アドレスを抽出する。また、蓄積されていた命令がプログラムカウンタ311にジャンプテーブル内のオフセット値のアドレスを設定する命令であれば、抽出回路504は、ジャンプテーブル内のオフセット値のアドレスをジャンプ先アドレスとして抽出する。

0055

抽出回路505は、プログラムカウンタ311が指すアドレスから、ジャンプ先アドレスを抽出して比較回路506に出力する。具体的なジャンプ先アドレスの抽出方法は、抽出回路504と同等であるため、説明を省略する。

0056

比較回路506は、抽出回路504と抽出回路505の抽出結果を比較し、判定結果をスピン状態検出回路431のAND回路511に出力する。ここで、所定命令とは、ジャンプ命令である。具体的に、比較回路506は、抽出回路504と抽出回路505の抽出結果が同じジャンプ先アドレスであれば、比較結果としてTRUEを出力し、異なるアドレスであれば、FALSEを出力する。

0057

AND回路511は、比較回路501と比較回路506の論理積をOR回路512に出力する。OR回路512は、制御レジスタ421のスピン状態設定フィールドとAND回路511との論理和を制御レジスタ421のスピン状態フィールドとスピン状態ステータスレジスタ422に出力する。

0058

なお、判定回路502は、比較回路501の比較結果がTRUEとなった後に、判定を行ってもよい。判定回路502では、キャッシュメモリ103の監視を行うため、処理負荷が増大するが、比較回路501の比較結果がTRUEとなったときに判定回路502を動作させることで、スピン回避機構104の処理効率をよくすることができる。

0059

図6は、スピン判定部402によるスピン状態解除検出の一例を示すブロック図である。図6では、スピン判定部402によるスピン状態解除検出時に用いる回路の例を示している。スピン判定部402は、スピン状態解除回路432と、比較回路601と、判定回路602と、スピン状態ステータスレジスタ422と、AND回路603とを用いて、スピン状態の解除を検出する。また、スピン状態解除回路432は、OR回路611を含む。

0060

また、スピン判定部402は、スピン状態解除検出のため、制御レジスタ421、センサI/F404、センサ閾値格納レジスタ423、キャッシュ状態信号521の入力を受ける。さらに、スピン判定部402は、制御レジスタ421、スピン状態ステータスレジスタ422に検出したスピン状態を出力する。

0061

比較回路601は、センサI/F404とセンサ閾値格納レジスタ423とを比較し、比較結果をスピン状態解除回路432内のOR回路611に出力する。具体的に、比較回路601は、センサI/F404からのセンサ信号がセンサ閾値格納レジスタ423の値未満である場合、比較結果としてTRUEを出力する。また、比較回路601は、センサI/F404からのセンサ信号がセンサ閾値格納レジスタ423の値以上である場合、比較結果としてFALSEを出力する。

0062

判定回路602は、キャッシュ状態信号521が、キャッシュ状態変化ありか否かを判定し、判定結果をAND回路603に出力する。具体的に、判定回路602は、キャッシュ状態信号521が、キャッシュ状態変化ありを示す状態信号の場合、判定結果としてTRUEを出力し、キャッシュ状態変化なしを示す状態信号の場合、判定結果としてFALSEを出力する。

0063

AND回路603は、判定回路602とスピン状態ステータスレジスタ422の論理積をOR回路611に出力する。具体的には、AND回路603は、判定回路602からの出力信号がTRUEであり、スピン状態ステータスレジスタ422がスピン状態を意味するTRUEであった場合に、TRUEをOR回路611に出力する。OR回路611は、制御レジスタ421のスピン状態解除設定フィールドと比較回路601による比較結果とAND回路603との論理和を制御レジスタ421のスピン状態フィールドとスピン状態ステータスレジスタ422に出力する。

0064

図7は、キャッシュメモリ状態監視回路403の動作例を示す説明図である。キャッシュメモリ103は、インストラクションキャッシュ701とデータキャッシュ702を含む。スヌープ機構301が動作している場合、キャッシュメモリ状態監視回路403は、キャッシュ状態信号521としてキャッシュメモリ103の状態が変化しているという状態信号を出力する。また、スヌープ機構301が動作していない場合、キャッシュメモリ状態監視回路403は、キャッシュ状態信号521としてキャッシュメモリ103の状態が変化していないという状態信号を出力する。

0065

さらに、キャッシュメモリ103の状態が変化していない場合、キャッシュメモリ状態監視回路403は、プログラムカウンタ311から発行された命令を取得し、発行命令バッファ405に格納する。

0066

続けて、ジャンプ命令が発行される場合のキャッシュメモリ状態監視回路403の動作について図7を用いて説明する。ループ1回目におけるアドレス:0x0012のジャンプ命令を実行する場合、CPU#0は、インストラクションキャッシュ701に命令がないため、命令をメモリ302から読み出して実行する。一方で、CPU#0は、読み出した命令をインストラクションキャッシュ701に格納する。

0067

ここで、0x0012番地から0x0000番地までの短い区間であるため、CPU#0がアドレス:0x0012のジャンプ命令を実行する場合、2回目以降はインストラクションキャッシュ701にヒットする場合を想定する。

0068

ループ2回目以降におけるアドレス:0x0012のジャンプ命令を実行する場合、CPU#0は、インストラクションキャッシュ701内でヒットした命令を取得し実行する。このとき、キャッシュメモリ103の状態が変化していないため、キャッシュメモリ状態監視回路403は、プログラムカウンタ311が指すアドレス:0x0012から、該当の命令"Jump 0x0000"を取得する。取得後、キャッシュメモリ状態監視回路403は、発行命令バッファ405にジャンプ命令として"Jump"とジャンプ先アドレス"0x0000"を格納する。

0069

ループ3回目以降におけるアドレス:0x0012のジャンプ命令を実行する場合、CPU#0は、インストラクションキャッシュ701内でヒットした命令を取得し実行する。また、3回目以降において、抽出回路504がジャンプ先アドレスを抽出して比較回路506に出力し、比較回路506が、抽出回路504と抽出回路505を比較した結果、TRUEを出力する。

0070

図4図7で示したハードウェア、動作によって、スピン回避機構104は、スピン状態の検出と、スピン状態の検出の解除を行う。続けて、図8図9にて、スピン状態となった場合の電力特性と、スピン状態の解消のタイミングの判定方法について説明する。

0071

図8は、スピン状態の消費電力状態の一例を示す説明図である。符号801で示す説明図では、マルチコアプロセッサシステム100にてスピン状態となるスレッドの例を示しており、符号802で示す説明図では、電力特性の式を示しており、グラフ803は、スピン状態におけるCPUの消費電力の特性を示している。

0072

符号801の説明図に示すマルチコアプロセッサシステム100は、並列アプリに属するスレッド1およびスレッド2と、他のアプリに属するスレッド3、スレッド4を実行している。CPU#0はスレッド1とスレッド3を実行しており、CPU#1はスレッド2とスレッド4を実行している。このとき、スレッド2の指示によって、スレッド1が排他制御処理を実行することを想定する。

0073

スレッド1による排他制御処理は、フラグの監視による状態遷移待ちを実行することを想定する。このとき、スレッド1は、フラグ1を読み出し、フラグが条件に当てはまったか否かを判断し、条件に当てはまらない場合、再びフラグ1を読み出す。このような動作を行う場合、CPUは、Load、Compare、Jumpといった命令を実行し続けることになる。各命令は、キャッシュメモリ103に記憶されているため命令のフェッチ時間が最小となり、CPUの演算ユニットが動作し続けるため、CPUは、スピン状態に陥る。CPUは、膨大な演算最高の効率で高速に実行しているかのような振る舞いとなるため、消費電力が最大の状態に陥ってしまう。

0074

符号802で示す説明図では、スピン状態の電力特性の式を示している。CPUにて、N個のスレッドが動作中に、1つのスレッドがスピン状態であると、CPUがスピン状態となる確率は、1/Nとなる。単位時間当たりのCPUがスピン状態になる時間は、1/N[秒]となる。続けて、スピン状態における電力特性がp(t)である場合、CPUが消費する消費エネルギーは、下記(1)式となる。

0075

消費エネルギー=∫1/Np(t)dt[J/秒] …(1)

0076

なお、(1)式は、低周波CPUや、命令リードレイテンシの長いチップでは、値が小さくなる。逆に、演算列が長いソフトウェアによる処理を実行する場合、(1)の値が大きくなる場合がある。

0077

グラフ803は、CPUの消費電力の特性を示している。グラフ803の横軸時刻を示しており、縦軸は電力を示している。電力特性804は、CPUの演算命令ユニット動作時の電力特性を示しており、電力特性805は、CPUのJump/Compare命令発行によるスピン状態の電力特性を示している。電力特性804は、ほぼ一定となる。理由として、演算命令はメモリのロードストアなど、レイテンシのかかる処理と前後するため、常にCPU内に電気が流れているわけではなく、一つの演算処理が完結する間に、励起スタンバイを繰り返すためである。したがって、単発の消費電力が高くても、連続実行しても、加速的に電力が上昇することがない。

0078

電力特性805は、初めは電力特性804より低い電力であるが、加速的に消費電力を増加する。理由として、初めの段階では、Jump/Compare命令は、プログラムカウンタ311の書き換えや、論理比較を行うといった処理のみであるため、電力特性805は、電力特性804より低い電力となるためである。

0079

しかし、時間が経過すると、ジャンプ命令は単発の命令で1つずつ動作可能であるため、CPUは、与えられたクロック周期で、レイテンシがかかることなく、常に動作することになる。その結果、CPUは高密度命令実行がなされ、励起状態続き、温度が上昇し、温度が上昇することで、リーク電流による消費電力が上昇することになる。

0080

なお、具体的な電力特性804、電力特性805の測定方法について、電力特性804については、CPUが単純計算を行うプログラムを動作し、この時の電力値測定すればよい。あるいは、設計者がプロセッサの設計書データシートから取得してもよい。電力特性805については、0x0000番地の命令コードとして、Jump 0x0000というコードを実行し、電力値を測定すればよい。

0081

このように、スピン状態が始まって直後の段階では電力消費が低い状態であるためスピン状態を解消せず、電力特性805による消費エネルギーが、電力特性804による消費エネルギーを超えた場合にスピン状態を解消することで、消費電力を抑えることができる。具体的には、CPUは、下記(2)式による解となる時間Tにてスピン状態を解消することで、電力効率を向上させることができる。

0082

∫tp(t)dt=Pc・t …(2)

0083

なお、Pcが演算命令ユニット動作時の消費電力であり、Pc・tは電力特性804の消費エネルギーとなる。たとえば、Pc=40[mW]となる。なお、Pcの値が、センサ閾値格納レジスタ423に格納される。

0084

たとえば、本実施の形態におけるCPUの電力特性p(t)が、下記(3)式で算出できる場合を想定する。

0085

p(t)=t^2+30[mW] …(3)

0086

CPUは、(2)式に(3)式を代入し、T=5.5[m秒]を得ることができる。したがって、CPUは、スピン状態が5.5[m秒]経過した際に、スピン状態を解消することで、電力効率を向上させることができる。設計者は、(2)式を解いたのち、スピン回避機構ドライバ412の設定項目となる所定時間として設定しておく。

0087

図9は、スピン状態の解消のタイミングの判定方法例を示す説明図である。図8にて、スピン状態が(2)式の解である所定時間以上あった場合に、スピン状態を解消することで、電力効率を向上させることができることを説明した。図9ではさらに、スピン状態が繰り返し発生する状態について説明する。

0088

図9で示すCPU#0は、スピン状態であるスレッド5と、通常スレッド処理であるスレッド6と、を一定周期でディスパッチしながら実行している。このような動作を行っている場合、制御レジスタ421からの割込信号は、一定周期のパルスとなって通知される。なお、割込信号がHIGHレベルの時、スピン状態であり、LOWレベルの時、非スピン状態である場合を想定する。

0089

たとえば、CPU#0は、割込信号がHIGHレベルである時間となる励起幅が、所定時間を超え、さらに、所定回数繰り返した場合に、スピン状態を解消してもよい。これにより、CPU#0は、一過性温度上昇や、パルス1回となる単発のスピン状態に対しては、スピン状態を解消せずに済むことができる。なお、所定回数の決定方法は、CPUの電力特性や、プロファイル結果等をもとに、設計者が予め決定しておく。図9の例では、2回のパルスが発生している。1回のパルスの励起幅が所定時間以上であり、所定回数が2回である場合、CPU#0は、スピン状態を解消する。

0090

次に、図10図11で示すシーケンス図は、スピン判定部402でのスピン状態検出判定とスピン状態解除判定のシーケンスを示す。図10図11では、スピン回避機構104#0が行うことを想定し、接尾記号"#0"を省略する。

0091

図10は、スピン状態検出判定の一例を示すシーケンス図である。センサ閾値格納レジスタ423は、比較回路501に閾値を出力する(ステップS1001)。また、センサI/F404は、比較回路501にセンサ信号を出力する(ステップS1002)。比較回路501は、センサ信号が示す電力量が閾値以上となった場合、AND回路511に対する出力信号をFALSEからTRUEに変更する(ステップS1003)。また、判定回路502は、プログラムが実行する命令がジャンプ命令であると判定した場合、AND回路511に対する出力信号をFALSEからTRUEに変更する(ステップS1004)。

0092

AND回路511は、比較回路501と比較回路506の論理積をOR回路512に出力する(ステップS1005)。たとえば、比較回路501がステップS1003を実行しており、判定回路502がステップS1004を実行していた場合、AND回路511は、OR回路512に対する出力信号をFALSEからTRUEに変更する。OR回路512は、ステップS1005が実行された場合、制御レジスタ421のスピン状態フィールドに対する出力信号を、FALSEからTRUEに変更する(ステップS1006)。

0093

図11は、スピン状態解除判定の一例を示すシーケンス図である。センサ閾値格納レジスタ423は、比較回路601に閾値を出力する(ステップS1101)。また、センサI/F404は、比較回路601にセンサ信号を出力する(ステップS1102)。比較回路601は、センサ信号が示す電力量が閾値未満となった場合、OR回路611に対する出力信号を、FALSEからTRUEに変更する(ステップS1103)。

0094

判定回路602は、キャッシュ状態が変化ありの場合、AND回路603に対する出力信号をFALSEからTRUEに変更する(ステップS1104)。また、スピン状態ステータスレジスタ422は、スピン状態をAND回路603に出力する(ステップS1105)。具体的に、スピン状態ステータスレジスタ422は、スピン状態であればTRUEをAND回路603に出力し、非スピン状態であればFALSEをAND回路603に出力する。

0095

AND回路603は、判定回路602とスピン状態ステータスレジスタ422の論理積をOR回路611に出力する(ステップS1106)。たとえば、判定回路602がステップS1104を実行しており、スピン状態ステータスレジスタ422がステップS1105を実行していた場合、AND回路603は、OR回路611に対する信号をFALSEからTRUEに出力する。

0096

OR回路611は、比較回路601とAND回路603の論理和を制御レジスタ421のスピン状態フィールドに出力する(ステップS1107)。たとえば、比較回路601がステップS1103を実行しているか、またはAND回路603がステップS1106を実行している場合、OR回路611は、制御レジスタ421のスピン状態フィールドに対する出力信号をFALSEからTRUEに出力する。

0097

次に、図12図13では、CPU#0で実行するフローチャートを示す。図12では、CPU#0がスピン回避機構ドライバ412#0の機能によってスピン状態周期性判断処理を実行し、図13では、CPU#0がディスパッチスケジューラ324#0の機能によってスレッド退避復帰処理を実行する。図12図13では、CPU#0が行うことを想定し、接尾記号"#0"を省略する。

0098

図12は、スピン回避機構ドライバ412によるスピン状態周期性判断処理の一例を示すフローチャートである。スピン回避機構ドライバ412は、スピン状態周期性フラグを周期性なしに設定する(ステップS1201)。設定後、スピン回避機構ドライバ412は、反復回数を0に設定し(ステップS1202)、制御レジスタ421からの割込信号をディスパッチタイマを参照してサンプリングする(ステップS1203)。具体的に、スピン回避機構ドライバ412は、ディスパッチタイマが示す時間の数十回分、割込信号を監視し続け、割込信号の波形生成する。

0099

サンプリング後、スピン回避機構ドライバ412は、励起幅が所定時間以上であるか否かを判断する(ステップS1204)。励起幅が所定時間以上である場合(ステップS1204:Yes)、スピン回避機構ドライバ412は、反復回数をインクリメントし(ステップS1205)、反復回数が所定回数以上であるか否かを判断する(ステップS1206)。反復回数が所定回数未満である場合(ステップS1206:No)、スピン回避機構ドライバ412は、ステップS1203の処理に移行する。

0100

反復回数が所定回数以上である場合(ステップS1206:Yes)、スピン回避機構ドライバ412は、スピン状態周期性フラグが周期性ありの状態か否かを判断する(ステップS1207)。周期性ありの状態である場合(ステップS1207:Yes)、スピン回避機構ドライバ412は、ステップS1203の処理に移行する。周期性なしの状態である場合(ステップS1207:No)、スピン回避機構ドライバ412は、スピン状態周期性フラグを周期性ありに設定する(ステップS1208)。設定後、スピン回避機構ドライバ412は、周期性ありをディスパッチスケジューラ324に通知し(ステップS1209)、ステップS1203の処理に移行する。

0101

励起幅が所定時間未満である場合(ステップS1204:No)、スピン回避機構ドライバ412は、スピン状態周期性フラグが周期性なしの状態か否かを判断する(ステップS1210)。周期性なしの状態である場合(ステップS1210:Yes)、スピン回避機構ドライバ412は、ステップS1202の処理に移行する。周期性ありの状態である場合(ステップS1210:No)、スピン回避機構ドライバ412は、スピン状態周期性フラグを周期性なしに設定する(ステップS1211)。設定後、スピン回避機構ドライバ412は、周期性なしをディスパッチスケジューラ324に通知し(ステップS1212)、ステップS1202の処理に移行する。

0102

これにより、スピン回避機構ドライバ412は、励起幅が所定時間以上あり、さらに、スピン状態と非スピン状態が所定回数繰り返されたときに、周期性ありと判断することができる。

0103

図13は、ディスパッチスケジューラ324によるスレッド退避復帰処理の一例を示すフローチャートである。ディスパッチスケジューラ324は、スピン回避機構ドライバ412から通知を受け付けたか否かを判断する(ステップS1301)。通知を受け付けていない場合(ステップS1301:通知なし)、ディスパッチスケジューラ324は、一定時間経過後、ステップS1301の処理を再び実行する。

0104

周期性ありの通知を受け付けた場合(ステップS1301:周期性あり)、ディスパッチスケジューラ324は、実行中のスレッド以外に他スレッドが割り当てられているか否かを判断する(ステップS1302)。他スレッドが割り当てられている場合(ステップS1302:Yes)、ディスパッチスケジューラ324は、ディスパッチループから実行中のスレッドを退避し(ステップS1303)、ステップS1301の処理に移行する。

0105

他スレッドが割り当てられていない場合(ステップS1302:No)、ディスパッチスケジューラ324は、実行中のスレッドを退避しアイドルスレッドと入れ替える(ステップS1304)。入替後、ディスパッチスケジューラ324は、PMU304にCPUへのクロックの供給を停止するように通知し(ステップS1305)、ステップS1301の処理に移行する。

0106

周期性なしの通知を受け付けた場合(ステップS1301:周期性なし)、ディスパッチスケジューラ324は、退避していたスレッドをディスパッチループに復帰し(ステップS1306)、ステップS1301の処理に移行する。なお、退避していたスレッドが複数存在する場合、ディスパッチスケジューラ324は、退避していた全てのスレッドをディスパッチループに復帰する。

0107

これにより、ディスパッチスケジューラ324は、スピン状態となる原因となっていたスレッドを退避することができる。また、ディスパッチスケジューラ324は、非スピン状態となった場合、スレッドを復帰することで、退避されていたスレッドを続行することができる。

0108

また、上述した各フローチャートで示したステップは、具体的には、たとえば、図2に示したROM202、RAM203、フラッシュROM204、フラッシュROM206などの記憶装置に記憶された検索プログラムをCPUs201に実行させた処理である。また、実行させた実行結果は、その都度、記憶装置に書き込まれ、他の処理からの読込要求に応じて読み出される。

0109

以上説明したように、プロセッサシステム、および制御プログラムによれば、電力を検出するセンサからのセンサ信号とキャッシュメモリの状態を監視するキャッシュメモリ状態監視回路からの状態信号とによって、プログラムのスピン状態を検出する検出回路を含む。これにより、システムは、スピン状態の検出条件としてCPUの電力とキャッシュメモリの状態変化といった、スピン状態におけるシステムの状態を用いることで、排他制御用の命令を用いずに実装されたプログラムによって発生したスピン状態を検出できる。

0110

なお、スピン状態の検出には、センサからの信号とキャッシュメモリ状態監視回路からの状態信号の組合せであることが好ましい。理由として、センサからの信号のみでスピン状態を検出する場合、システムを有する携帯端末がユーザのポケット入れられると、熱がこもってしまい、非スピン状態にも関わらず消費電力が上昇することがあるためである。また、キャッシュメモリの状態信号のみでスピン状態を検出する場合については、インストラクションキャッシュを書き換えないように実装されたプログラムが実行されていれば、非スピン状態であっても状態が変化しない、という状態になるためである。

0111

また、本実施の形態にかかるシステムは、スピン状態の検出、スピン状態解除の検出を行う際にメモリアクセスを行わないため、従来技術では検出できないスピン状態を、ほぼ無負荷で検出することができる。

0112

また、システムは、スピン状態が検出された場合にプログラムのスピン状態を解除する解除回路を含んでもよい。これにより、システムは、一旦スピン状態となっても非スピン状態に遷移することができる。

0113

また、システムは、センサ信号と閾値とを比較し、比較結果を検出回路に出力してもよい。これにより、スピン状態となりCPUの演算ユニットが動作し続けて消費電力、温度が上昇した可能性があるとして、システムは、スピン状態となった可能性があることを検出回路に出力することができる。

0114

また、システムは、プログラムが実行する命令が所定命令であるかを判定し、判定結果を検出回路に出力してもよい。なお、所定命令は、ジャンプ命令であってもよいし、プログラムカウンタにジャンプテーブルのアドレスをロードする命令であってもよい。これにより、同じジャンプ命令が実行され続けていることが検出されたため、システムは、スピン状態となった可能性があることを検出回路に出力することができる。

0115

また、システムは、検出回路の検出結果に基づいてCPUが実行するプログラムを制御するための情報を制御レジスタに保持してもよい。これにより、CPUは制御レジスタを参照することで、スピン状態か非スピン状態かを取得できる。

0116

また、システムは、センサ信号が閾値以上であり、キャッシュメモリの状態に変化がない場合、スピン状態を検出してもよい。これにより、システムは、スピン状態によって消費電力が加速するところまでを検出し、さらに、スピン状態によってキャッシュメモリに変更がなく同じ命令を実行し続けていることを検出したため、スピン状態であると特定することができる。

0117

また、システムは、キャッシュメモリの状態に変化がなく、プログラムの命令が所定命令である場合、スピン状態を検出してもよい。これにより、システムは、所定命令であるジャンプ命令が繰り返し実行されていることを検出したため、スピン状態であると特定することができる。

0118

また、システムは、センサ信号が閾値未満であるとき、または、スピン状態であるときにキャッシュメモリの状態に変化があった場合、非スピン状態を検出してもよい。これにより、システムは、スピン状態の検出条件の少なくともいずれか一方が解消されたこととなるため、非スピン状態であると特定することができる。

0119

また、システムは、スピン状態が検出される場合に、スピン状態に対応する処理を所定の処理に置き換えてスピン状態を解除してもよい。なお、所定の処理とは、アイドルスレッドである。これにより、システムは、スピン状態となり、消費電力が加速的に上昇してしまっている状態を解除でき、電力効率を向上させることができる。

0120

また、システムは、スピン状態である時間が所定時間以上である場合に、スピン状態に対応する処理の割当を停止してもよい。たとえば、スピン状態となっても、すぐにフラグ条件が満たされるスレッドも存在しており、このようなスレッドを退避してしまうと、本来すぐにスピン状態が解除すべきタイミングから処理の退避および復帰の分だけ処理性能劣化することになる。また、スピン状態となった直後の消費電力は、一般的な演算ユニットより低いため、スピン状態となった直後に処理の割当を停止してしまうと、消費電力が増加してしまう。したがって、システムは、予め設定されている所定時間以上スピン状態が続いた場合に、処理の割当を停止することで、処理性能が維持でき、かつ、電力効率も向上させることができる。

0121

また、システムは、スピン状態である時間が所定時間以上であり、かつ、スピン状態と非スピン状態とを反復した回数が所定回数以上である場合、スピン状態に対応する処理の割当を停止してもよい。たとえば、反復した回数が少ない状態で処理の割当を停止すると、システムは、電力の過剰供給状態を削減することができるが、処理の割当の停止、また、割当の復帰の回数が増大するため、停止、復帰にかかるオーバーヘッドが大きくなる。したがって、システムは、予め設定されている所定回数以上であるときに処理の割当を停止することで、停止、復帰にかかるオーバーヘッドを抑えつつ、電力効率を向上させることができる。

0122

たとえば、従来例にかかるシステムが、TCP(Transmission Control Protocol)パケットバッファのI/O排他ロックを行う場合、スピン状態の反復回数は、数千回から数百万回となる。そこで、本実施の形態にかかるシステムが、所定回数を数十回として、所定回数以上スピン状態と非スピン状態を反復した場合、スピン状態に対応する処理の割当を停止することで、従来例によるシステムに比べて、電力効率を向上することができる。

0123

なお、本実施の形態で説明した検出方法は、予め用意されたプログラムをパーソナルコンピュータワークステーション等のコンピュータで実行することにより実現することができる。本検出プログラムは、ハードディスクフレキシブルディスクCD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本検出プログラムは、インターネット等のネットワークを介して配布してもよい。

0124

また、本実施の形態で説明したスピン回避機構104は、スタンダードセルストラクチャードASIC(Application Specific IntegratedCircuit)などの特定用途向けIC(以下、単に「ASIC」と称す。)やFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。具体的には、たとえば、上述したスピン回避機構104の機能(記憶部401〜発行命令バッファ405)をHDL記述によって機能定義し、そのHDL記述を論理合成してASICやPLDに与えることにより、スピン回避機構104を製造することができる。

0125

上述した実施の形態に関し、さらに以下の付記を開示する。

0126

(付記1)CPUと、
前記CPUの電力を検出するセンサと、
キャッシュメモリの状態を監視するキャッシュメモリ状態監視回路と、
前記センサからのセンサ信号と前記キャッシュメモリ状態監視回路からの状態信号とに基づいて前記CPUが実行するプログラムのスピン状態を検出する検出回路と、
を含むことを特徴とするシステム。

0127

(付記2)前記スピン状態が検出されたときに前記プログラムのスピン状態を解除する解除回路を含むこと
を特徴とする付記1に記載のシステム。

0128

(付記3)前記センサ信号と閾値とを比較し、比較結果を前記検出回路に出力する比較回路を含むこと
を特徴とする付記1または付記2に記載のシステム。

0129

(付記4)前記プログラムが実行する命令が所定命令であるか否かを判定し、判定結果を前記検出回路に出力する判定回路を含むこと
を特徴とする付記1乃至付記3の何れか一に記載のシステム。

0130

(付記5)前記所定命令は、ジャンプ命令であること
を特徴とする付記4に記載のシステム。

0131

(付記6)前記検出回路の検出結果に基づいて前記プログラムを制御するための情報を格納する制御レジスタを含むこと
を特徴とする付記1乃至付記5の何れか一に記載のシステム。

0132

(付記7)CPUと、
前記CPUの電力を検出してセンサ信号を出力するセンサと、
キャッシュメモリの状態を監視して状態信号を出力するキャッシュメモリ状態監視回路と、
を含み、
前記センサ信号が閾値以上となる場合であって前記状態信号が前記キャッシュメモリの状態に変化がないことを示すときに、前記CPUが実行するプログラムのスピン状態が検出されること
を特徴とするシステム。

0133

(付記8)前記状態信号が前記キャッシュメモリの状態に変化がないことを示す場合であって、実行する前記プログラムの命令が所定命令であるとき、前記スピン状態が検出されること
を特徴とする付記7に記載のシステム。

0134

(付記9)前記センサ信号が前記閾値未満であるとき、または、前記スピン状態である場合に前記状態信号が前記キャッシュメモリの状態に変化があることを示すときに、非スピン状態が検出されること
を特徴とする付記7または付記8に記載のシステム。

0135

(付記10)CPUの電力を検出し、
キャッシュメモリの状態を監視し、
検出された電力と前記キャッシュメモリの状態とに基づいて前記CPUが実行するプログラムのスピン状態を検出すること
を特徴とする検出方法。

0136

(付記11)前記電力が閾値以上であるか否かを検出し、
前記電力が前記閾値以上であるときは前記スピン状態を検出し、
前記電力が前記閾値未満であるときは前記スピン状態の検出を行わないこと
を特徴とする付記10に記載の検出方法。

0137

(付記12)前記スピン状態が検出される場合に、前記スピン状態に対応する処理を所定の処理に置き換えて前記スピン状態を解除すること
を特徴とする付記10または付記11に記載の検出方法。

0138

(付記13)前記スピン状態である時間が所定時間以上である場合、前記スピン状態に対応する処理の割当を停止させること
を特徴とする付記12に記載の検出方法。

0139

(付記14)前記割当を停止させる処理は、
さらに、前記スピン状態と非スピン状態とを反復した回数が所定回数以上である場合、前記スピン状態に対応する処理の割当を停止させること
を特徴とする付記13に記載の検出方法。

0140

103キャッシュメモリ
104スピン回避機構
311プログラムカウンタ
404センサI/F
421制御レジスタ
422スピン状態ステータスレジスタ
423センサ閾値格納レジスタ
431 スピン状態検出回路
432 スピン状態解除回路
501比較回路
502判定回路
521キャッシュ状態信号
601 比較回路
602 判定回路

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する未来の課題

ページトップへ

おすすめの成長市場

関連メディア astavision

  • 太陽光発電・太陽電池・人工光合成

    2015年4月30日、米国の電気自動車ベンチャーTesla Motors社や宇宙開発ベンチャーSpa…

  • 3Dプリンター医学応用

    3Dプリンタ、正しくは、積層造形(AM:Additive Manufacturing)技術は、今や家…

  • ワクチンと自然免疫制御

    2009年6月、世界保健機関(WHO)は、新型インフルエンザA(N1H1)のパンデミック(pande…

ページトップへ

新着 最近公開された関連が強い技術

この技術と関連性が強い技術

この技術と関連性が強い人物

この技術と関連する未来の課題

関連する未来の課題一覧

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ