(57)【要約】【課題】この発明は、ユーザープログラムに合わせた動作電圧の変更が負担となりにくいプログラム生成部、情報処理装置、プログラム生成方法、及びプログラムを提供する。【解決手段】プログラム生成部１０は、ＬＳＩ３０９を電圧コンテキストに基づく動作電圧で実行させる電圧情報を生成する。プログラム生成部１０は、第一コンパイラ１０１と、第二コンパイラ１０２と、リンカ１０３と、を備える。第一コンパイラ１０１は、ソースプログラムのコンパイルを行い、命令列を含むオブジェクトを生成する。第二コンパイラ１０２は、命令列の命令密度を分析し、電圧情報を生成する。リンカ１０３は、オブジェクトと電圧情報とを結合して、ユーザープログラムを生成する。【選択図】図１
2019164527.tif 000002
【特許請求の範囲】
【請求項１】
ＬＳＩを電圧コンテキストに基づく動作電圧で実行させる電圧情報を生成するプログラム生成部であって、
ソースプログラムのコンパイルを行い、命令列を含むオブジェクトを生成する第一コンパイラと、
前記命令列の命令密度を分析し、前記電圧情報を生成する第二コンパイラと、
前記オブジェクトと前記電圧情報とを結合して、ユーザープログラムを生成するリンカと、
を備えるプログラム生成部。
【請求項２】
前記第二コンパイラが、前記命令列に含まれる各命令を、複数の命令種に分類し、最も分類された比率の高い命令種を判断する請求項１に記載のプログラム生成部。
【請求項３】
前記第二コンパイラが、ＬＤＳＴ命令、論理演算命令、シフト演算命令、固定小数点命令、浮動小数点命令のうち、少なくとも２以上の命令種に分類する請求項２に記載のプログラム生成部。
【請求項４】
請求項１から請求項３のいずれか一項に記載されるプログラム生成部と、
前記電圧情報に基づき電圧値を生成する電圧送信部を有するホスト部と、
前記ユーザープログラムを処理するコアを有し、前記ユーザープログラムを実行する前に、前記コアの動作電圧を前記電圧値に設定するシステムユニットと、
を備える情報処理装置。
【請求項５】
前記電圧送信部が、前記電圧値を複数生成し、生成した前記電圧値を合算する請求項４に記載の情報処理装置。
【請求項６】
ＬＳＩを電圧コンテキストに基づく動作電圧で実行させる電圧情報を生成するプログラム生成方法であって、
ソースプログラムのコンパイルを行い、命令列を含むオブジェクトを生成するステップと、
前記命令列の命令密度を分析し、前記電圧情報を生成するステップと、
前記オブジェクトと前記電圧情報とを結合して、ユーザープログラムを生成するステップと、
を含むプログラム生成方法。
【請求項７】
コンピュータに、ＬＳＩを電圧コンテキストに基づく動作電圧で実行させる電圧情報を生成させるプログラムであって、
ソースプログラムのコンパイルを行い、命令列を含むオブジェクトを生成するステップと、
前記命令列の命令密度を分析し、前記電圧情報を生成するステップと、
前記オブジェクトと前記電圧情報とを結合して、ユーザープログラムを生成するステップと、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム生成部、情報処理装置、プログラム生成方法、及びプログラムに関する。
【背景技術】
【０００２】
情報処理装置では、消費電力を削除するように制御することが知られている。
例えば、特許文献１及び特許文献２では、消費電力を削減するように制御するために、動作電圧を変更することが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−２５０８５８号公報
【特許文献２】特開２００３−２０２９４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、特許文献１には、プログラム毎の電力制御情報を格納する電力コンテキストに基づき、動作電圧を変更することが開示されている。
特許文献１の情報処理装置は、電力コンテキストである電力制御情報の成功率あるいは失敗率に基づいて、プログラムを実行する際の動作電圧の変更を行っている。しかし、特許文献１では、電力コンテキストを生成するために、少なくとも一度プログラムを実行させて成功率あるいは失敗率を事前に確認する必要があり、ユーザープログラムに合わせた動作電圧の変更が負担となっている。
【０００５】
また、特許文献２では、同じ最低動作電圧の命令が連続している命令群を検出した場合、プログラムを実行する際の動作電圧の変更を行っている。
しかし、特許文献２では、同じ最低動作電圧の命令が連続しない限り動作電圧が変更されないため、事前にプログラムに合った動作電圧を確認する必要があり、ユーザープログラムに合わせた動作電圧の変更が負担となっている。
【０００６】
この発明の目的は、上述した課題を鑑みて、ユーザープログラムに合わせた動作電圧の変更が負担となりにくいプログラム生成部、情報処理装置、プログラム生成方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【０００７】
本発明に係る一態様のプログラム生成部は、ＬＳＩを電圧コンテキストに基づく動作電圧で実行させる電圧情報を生成するプログラム生成部であって、ソースプログラムのコンパイルを行い、命令列を含むオブジェクトを生成する第一コンパイラと、前記命令列の命令密度を分析し、前記電圧情報を生成する第二コンパイラと、前記オブジェクトと前記電圧情報とを結合して、ユーザープログラムを生成するリンカと、を備える。
【０００８】
本発明に係る一態様のプログラム生成方法は、ＬＳＩを電圧コンテキストに基づく動作電圧で実行させる電圧情報を生成するプログラム生成方法であって、ソースプログラムのコンパイルを行い、命令列を含むオブジェクトを生成するステップと、前記命令列の命令密度を分析し、前記電圧情報を生成するステップと、前記オブジェクトと前記電圧情報とを結合して、ユーザープログラムを生成するステップと、を含む。
【０００９】
本発明に係る一態様のプログラムは、コンピュータに、ＬＳＩを電圧コンテキストに基づく動作電圧で実行させる電圧情報を生成させるプログラムであって、ソースプログラムのコンパイルを行い、命令列を含むオブジェクトを生成するステップと、前記命令列の命令密度を分析し、前記電圧情報を生成するステップと、前記オブジェクトと前記電圧情報とを結合して、ユーザープログラムを生成するステップと、を実行させる。
【発明の効果】
【００１０】
本発明によれば、ユーザープログラムに合わせた動作電圧の変更が負担となりにくい。
【図面の簡単な説明】
【００１１】
【図１】第一実施形態に係る情報処理装置のブロック図である。
【図２】第一実施形態に係るプログラム生成部の機能を示す図である。
【図３】第一実施形態に係る情報処理装置の動作のタイムチャートである。
【図４】第二実施形態に係る情報処理装置のブロック図である。
【図５】第二実施形態に係る情報処理装置の動作のタイムチャートである。
【図６】各実施形態に係るプログラム生成方法のフローチャートである。
【図７】各実施形態に係るプログラム生成部のハードウェア構成図である。
【図８】各実施形態に係るプログラム生成部の最小構成図である。
【発明を実施するための形態】
【００１２】
以下、本発明に係る各種実施形態について、図面を用いて説明する。
【００１３】
＜第一実施形態＞
第一実施形態の情報処理装置について図１〜図３を参照して説明する。
図１に示すように、情報処理装置１は、プログラム生成部１０と、ホスト部２０と、システムユニット３０と、を備える。
【００１４】
（構成）
プログラム生成部１０は、第一コンパイラ１０１と、第二コンパイラ１０２と、リンカ１０３と、を備える。
ホスト部２０は、ＯＳデスパッチャ２０１と、電圧送信部２０２と、を備える。
システムユニット３０は、電圧制御回路３０１と、メモリ３０７と、ＬＳＩ３０９と、を備える。
システムユニット３０は、第一コア電源３０３Ａと、第二コア電源３０３Ｂと、第三コア電源３０３Ｃと、第四コア電源３０３Ｄと、メモリ制御電源３０３Ｅと、ＩＯ電源３０３Ｆと、をさらに備える。本実施形態において、これら各電源は、ＤＣ／ＤＣコンバータであって、電圧制御回路３０１の制御によって、出力電圧が制御される。
【００１５】
ＬＳＩ３０９は、第一コア３０９Ａと、第二コア３０９Ｂと、第三コア３０９Ｃと、第四コア３０９Ｄと、ホストＩＦ３０６と、メモリ制御部３１０と、を備える。
【００１６】
（プログラム生成部）
第一コンパイラ１０１は、ユーザーが作成したソースプログラムを受け付ける。
第一コンパイラ１０１は、受け付けたソースプログラムのコンパイルを行い、命令列を含むオブジェクトＯＪＴを生成する。
第一コンパイラ１０１は、生成したオブジェクトＯＪＴを第二コンパイラ１０２及びリンカ１０３のそれぞれに送る。
【００１７】
第二コンパイラ１０２は、第一コンパイラ１０１からオブジェクトＯＪＴを受け付ける。
第二コンパイラ１０２は、受け付けたオブジェクトＯＪＴの命令密度を分析して電圧情報ＶＩＦを生成する。
第二コンパイラ１０２は、生成した電圧情報ＶＩＦをリンカ１０３に送る。
【００１８】
リンカ１０３は、第一コンパイラ１０１からオブジェクトＯＪＴを受け付ける。また、リンカ１０３は、第二コンパイラ１０２から電圧情報ＶＩＦを受け付ける。
リンカ１０３は、オブジェクトＯＪＴと電圧情報ＶＩＦとを結合して、ユーザープログラムＰＧＭ（プログラム）を順次生成する。
リンカ１０３は、生成したユーザープログラムＰＧＭをホスト部２０に順次送る。
【００１９】
（ホスト部）
ＯＳデスパッチャ２０１は、リンカ１０３が生成したユーザープログラムＰＧＭを順次受け付ける。
ＯＳデスパッチャ２０１は、順次受け付けた各ユーザープログラムＰＧＭの割付けを行う。ＯＳデスパッチャ２０１は、第一コア３０９Ａと、第二コア３０９Ｂと、第三コア３０９Ｃと、第四コア３０９Ｄの各コアの空き具合を見て、各ユーザープログラムＰＧＭをどのコアに割り付けるかを決定する。
ＯＳデスパッチャ２０１は、電圧送信部２０２に各ユーザープログラムＰＧＭの電圧情報ＶＩＦを順次送る。
【００２０】
電圧送信部２０２は、ＯＳデスパッチャ２０１から各ユーザープログラムＰＧＭの電圧情報ＶＩＦを順次受け付ける。
電圧送信部２０２は、各ユーザープログラムＰＧＭの電圧情報ＶＩＦに基づき設定電圧を生成し、電圧制御回路３０１に設定電圧を送る。
【００２１】
（システムユニット）
システムユニット３０は、各ユーザープログラムＰＧＭを実行する前に、各コア及びホストＩＦ３０６の動作電圧を電圧送信部２０２から送信された設定電圧に設定する。
以下、各ユーザープログラムＰＧＭを実行する前とは、各コアでユーザープログラムＰＧＭの実行を開始する前のコンテキストスイッチ（ＣＳＷ）時間のことを言う。
【００２２】
電圧制御回路３０１は、電圧送信部２０２から設定電圧を受け付ける。電圧制御回路３０１は受け付けた設定電圧に基づき、第一コア電源３０３Ａと、第二コア電源３０３Ｂ、第三コア電源３０３Ｃ、第四コア電源３０３Ｄ、ＩＯ電源３０３Ｆの各出力電圧をそれぞれ制御する。
第一コア電源３０３Ａは、電圧制御回路３０１に制御に応じて、所定の直流電圧である第一コア動作電圧Ｖｃ１を出力し、第一コア３０９Ａに電力を供給する。
第二コア電源３０３Ｂは、電圧制御回路３０１に制御に応じて、所定の直流電圧である第二コア動作電圧Ｖｃ２を出力し、第二コア３０９Ｂに電力を供給する。
第三コア電源３０３Ｃは、電圧制御回路３０１に制御に応じて、所定の直流電圧である第三コア動作電圧Ｖｃ３を出力し、第三コア３０９Ｃに電力を供給する。
第四コア電源３０３Ｄは、電圧制御回路３０１に制御に応じて、所定の直流電圧である第四コア動作電圧Ｖｃ４を出力し、第四コア３０９Ｄに電力を供給する。
メモリ制御電源３０３Ｅは、電圧制御回路３０１に制御に応じて、所定の直流電圧であるメモリ制御動作電圧Ｖｃｍを出力し、メモリ制御部３１０に電力を供給する。
ＩＯ電源３０３Ｆは、電圧制御回路３０１に制御に応じて、所定の直流電圧であるＩＯ動作電圧Ｖｃｉを出力し、ホストＩＦ３０６に電力を供給する。
メモリ３０７は、各コアがいずれもアクセスしてデータの読み書きができる共通のメモリである。
【００２３】
（ＬＳＩ）
第一コア３０９Ａ、第二コア３０９Ｂと、第三コア３０９Ｃと、第四コア３０９Ｄはそれぞれ、ＯＳデスパッチャ２０１から割り当てられたユーザープログラムＰＧＭを処理する。
ホストＩＦ３０６は、ＯＳデスパッチャ２０１との間で通信を行い、ユーザープログラムＰＧＭを各コアのうち、割り当てられたコアに供給する。
メモリ制御部３１０は、第一コア３０９Ａと、第二コア３０９Ｂと、第三コア３０９Ｃと、第四コア３０９Ｄの各コアによるメモリ３０７へのアクセスを制御する。
【００２４】
（第一コンパイラ及び第二コンパイラ）
第一コンパイラ１０１及び第二コンパイラ１０２の機能について詳しく説明する。
第一コンパイラ１０１は、オブジェクトＯＪＴとして、システムユニット３０で処理できる命令列ＳＱＣを生成する。
本実施形態の場合、図２に示すように命令列ＳＱＣの命令Ａ、命令Ｂ、命令Ｃ・・・命令ＸＸは、それぞれ、固定小数点命令、論理演算命令、シフト演算命令、浮動小数点命令、ＬＤＳＴ命令（ロードおよびストア命令）のいずれかに分類される。
第二コンパイラ１０２は、以下のように命令列の命令密度を分析し、以下のように電圧情報ＶＩＦを作成する。
【００２５】
（命令密度分析）
第二コンパイラ１０２は、命令列ＳＱＣの命令Ａ、命令Ｂ、命令Ｃ・・・命令ＸＸの各命令を、それぞれ、固定小数点命令、論理演算命令、シフト演算命令、浮動小数点命令、ＬＤＳＴ命令（ロードおよびストア命令）の命令種のうち、いずれかの命令種に分類する。
第二コンパイラ１０２は、命令密度分析の結果として、命令種のうち、命令列ＳＱＣに含まれる各命令が分類された比率の最も高い命令種を判断する。
【００２６】
（電圧情報生成）
電圧情報ＶＩＦは、ＬＳＩを電圧コンテキストに基づく動作電圧で実行させるための情報である。
第二コンパイラ１０２は、命令密度分析の結果に応じて、以下（ケース１）〜（ケース５）のいずれかを実施して電圧情報ＶＩＦを生成し、生成した電圧情報ＶＩＦをリンカ１０３に送る。
（ケース１）ＬＤＳＴ命令の比率が最も高い場合、電圧情報ＶＩＦとして、「ＩＯ動作電圧を上げる旨の設定情報」を生成する。
（ケース２）論理演算命令の比率が最も高い場合、電圧情報ＶＩＦとして、「コア動作電圧を下げる旨の設定情報」を生成する。
（ケース３）シフト演算命令の比率が最も高い場合、電圧情報ＶＩＦとして、「コア動作設定電圧を中間の電圧に設定する旨の設定情報」を生成する。
（ケース４）固定小数点命令の比率が最も高い場合、電圧情報ＶＩＦとして、「コア動作電圧を中間の電圧に設定する旨の設定情報」を生成する。
（ケース５）浮動小数点命令の比率が高い場合、電圧情報ＶＩＦとして、「コア動作電圧を最大にするように設定する旨の設定情報」を生成する。
【００２７】
（電圧送信部）
電圧送信部２０２の機能について詳しく説明する。
図３には、ＯＳデスパッチャ２０１により、各コアに割り付けられた各ユーザープログラムＰＧＭが実行される状況が示される。図３には、実行される各ユーザープログラムＰＧＭが、それぞれＪＯＢ０１，ＪＯＢ０２，ＪＯＢ０３，ＪＯＢ１１・・・と示されている。
【００２８】
まず、タイミング０において、ＯＳデスパッチャ２０１により、第一コア３０９ＡにＪＯＢ０１、第二コア３０９ＢにＪＯＢ１１、第三コア３０９ＣにＪＯＢ２１、第四コア３０９ＤにＪＯＢ３１が割り当てられる。
このとき、タイミング０において、電圧送信部２０２は、第一コア設定電圧Ｖｓ１として、電圧情報ＶＩＦに基づき第一コア３０９Ａに適した電圧値を生成する。
なお、ケース１の場合、電圧送信部２０２は、所定の初期設定の電圧値をそのまま第一コア設定電圧Ｖｓ１として設定する。
ケース２の場合、電圧送信部２０２は、所定の初期設定の電圧値に対し、初期設定の電圧値を下げた電圧値を新たな第一コア設定電圧Ｖｓ１として設定する。
ケース３〜５の場合、電圧送信部２０２は、電圧情報ＶＩＦに基づく電圧値を新たな第一コア設定電圧Ｖｓ１として設定する。
【００２９】
同様に、タイミング０において、電圧送信部２０２は、第二コア設定電圧Ｖｓ２として、電圧情報ＶＩＦに基づき第二コア３０９Ｂに適した電圧値、第三コア設定電圧Ｖｓ３として、電圧情報ＶＩＦに基づき第三コア３０９Ｃに適した電圧値、第四コア設定電圧Ｖｓ４として、電圧情報ＶＩＦに基づき第四コア３０９Ｄに適した電圧値を生成する。
本実施形態では、タイミング０において、電圧送信部２０２は、生成した第一コア設定電圧Ｖｓ１、第二コア設定電圧Ｖｓ２、第三コア設定電圧Ｖｓ３、第四コア設定電圧Ｖｓ４を、電圧制御回路３０１に送る。
【００３０】
電圧制御回路３０１は、電圧送信部２０２から各設定電圧を受け付けると、タイミング０において、各コアの動作電圧がそれぞれ設定電圧になるように制御する。
具体的には、電圧制御回路３０１は、第一コア３０９Ａに供給される第一コア動作電圧Ｖｃ１が第一コア設定電圧Ｖｓ１となるように、第一コア電源３０３Ａを制御する。
同様に、電圧制御回路３０１は、第二コア３０９Ｂに供給される第二コア動作電圧Ｖｃ２が第二コア設定電圧Ｖｓ２となるように、第二コア電源３０３Ｂを制御する。
同様に、電圧制御回路３０１は、第三コア３０９Ｃに供給される第三コア動作電圧Ｖｃ３が第三コア設定電圧Ｖｓ３となるように、第三コア電源３０３Ｃを制御する。
同様に、電圧制御回路３０１は、第四コア３０９Ｄに供給される第四コア動作電圧Ｖｃ４が第四コア設定電圧Ｖｓ４となるように、第四コア電源３０３Ｄを制御する。
【００３１】
図３には示さないが、情報処理装置１は、ホストＩＦ動作電圧Ｖｃｉも同様に設定する。
すなわち、タイミング０において、電圧送信部２０２は、ホストＩＦ設定電圧Ｖｓｉとして、電圧情報ＶＩＦに基づきホストＩＦ３０６に適した電圧値を生成し、生成したホストＩＦ設定電圧Ｖｓｉを、電圧制御回路３０１に送る。さらに、電圧制御回路３０１は、ホストＩＦ３０６に供給されるホストＩＦ動作電圧ＶｃｉがホストＩＦ設定電圧Ｖｓｉとなるように、ＩＯ電源３０３Ｆを制御する。
なお、ケース１の場合、電圧送信部２０２は、所定の初期設定の電圧値に対し、初期設定の電圧値を上げた電圧値を新たなホストＩＦ設定電圧Ｖｓｉとして設定する。
また、本実施形態では、電圧制御回路３０１は、メモリ制御動作電圧Ｖｃｍを所定の初期設定の電圧値となるように制御する。
【００３２】
続いて、タイミング１において、第一コア３０９ＡでＪＯＢ０１、第二コア３０９ＢでＪＯＢ１１、第三コア３０９ＣでＪＯＢ２１、第四コア３０９ＤでＪＯＢ３１の実行がそれぞれ開始される。
【００３３】
続いて、タイミング８においてＪＯＢ０２の実行が第一コア３０９Ａで開始される。このとき、ＪＯＢ０２の実行を開始するタイミングの１タイミング前において、電圧送信部２０２は、第一コア設定電圧Ｖｓ１として、電圧情報ＶＩＦに基づき第一コア３０９Ａに適した電圧値を生成する。
本実施形態では、情報処理装置１は、ＪＯＢ０２の実行を開始するタイミングの１タイミング前において、第一コア３０９Ａに供給する電圧を下げている。
例えば、ＪＯＢ０２の電圧情報ＶＩＦが「コア動作電圧を下げる旨の設定情報」であれば、電圧送信部２０２は、タイミング１において設定された第一コア設定電圧Ｖｓ１より電圧を低い電圧を新たな第一コア設定電圧Ｖｓ１として生成し、電圧制御回路３０１に送る。これにより、情報処理装置１は、ＪＯＢ０２の実行を開始するタイミングの１タイミング前において、第一コア３０９Ａに供給する電圧を下げる。
【００３４】
同様に、タイミング１５においてＪＯＢ０３の実行が第一コア３０９Ａで開始される。このとき、ＪＯＢ３の実行を開始するタイミングの１タイミング前において、電圧送信部２０２は、新たな第一コア設定電圧Ｖｓ１として、電圧情報ＶＩＦに基づき第一コア３０９Ａに適した電圧値を生成する。
本実施形態では、情報処理装置１は、ＪＯＢ０３の実行を開始するタイミングの１タイミング前において、第一コア３０９Ａに供給する電圧を上げている。
【００３５】
同様に、タイミング１０においてＪＯＢ１２、タイミング１８においてJＯＢ１３の実行が第二コア３０９Ｂでそれぞれ開始される。このとき、各ＪＯＢの実行を開始するタイミングの１タイミング前において、電圧送信部２０２は、新たな第二コア設定電圧Ｖｓ２として、電圧情報ＶＩＦに基づき第二コア３０９Ｂに適した電圧値をそれぞれ生成する。
【００３６】
同様に、タイミング７においてＪＯＢ２２、タイミング１３においてＪＯＢ２３の実行が第三コア３０９Ｃでそれぞれ開始される。このとき、各ＪＯＢの実行を開始するタイミングの１タイミング前において、電圧送信部２０２は、新たな第三コア設定電圧Ｖｓ３として、電圧情報ＶＩＦに基づき第三コア３０９Ｃに適した電圧値をそれぞれ生成する。
ただし、本実施形態の場合、ＪＯＢ２２とＪＯＢ２３とは、適した電圧値が同じなので、ＪＯＢ２２に対して生成される第三コア設定電圧Ｖｓ３と、ＪＯＢ２３に対して生成される第三コア設定電圧Ｖｓ３とは、同じ電圧である。
【００３７】
同様に、タイミング７でＪＯＢ３２、タイミング１２でＪＯＢ３３、タイミング１７でＪＯＢ３４の実行が第四コア３０９Ｄでそれぞれ開始される。このとき、各ＪＯＢの実行を開始するタイミングの１タイミング前において、電圧送信部２０２は、第四コア設定電圧Ｖｓ４として、電圧情報ＶＩＦに基づき第四コア３０９Ｄに適した電圧値をそれぞれ生成する。
ただし、本実施形態の場合、ＪＯＢ３３とＪＯＢ３４とは適した電圧値が同じなので、ＪＯＢ３３に対して生成される第四コア設定電圧Ｖｓ４と、ＪＯＢ３４に対して生成される第四コア設定電圧Ｖｓ４とは、同じ電圧である。
【００３８】
（作用及び効果）
本実施形態の情報処理装置１は、第二コンパイラ１０２が、命令列の命令密度を分析している。このため、事前に各ユーザープログラムＰＧＭに合った動作電圧を確認することなく、各ユーザープログラムＰＧＭに適した電圧を各コア及びホストＩＦに供給することができるので、無駄な消費電力を削除する事が可能となる。
したがって、情報処理装置１は、各ユーザープログラムＰＧＭに合わせた動作電圧の変更が負担となりにくい。
また、本実施形態では、各ユーザープログラムＰＧＭに必要な電圧値が供給されるので、情報処理装置１は、無駄な電力を抑制でき、低消費電力を実現できる。
さらに、本実施形態では、各コアの電源が分離されており、各コア及びホストＩＦ別に動作電圧を制御することができる。このため、情報処理装置１は、割り付けられたユーザープログラムＰＧＭに適した電圧をコア別及びホストＩＦに動作電圧を設定し、コア別及びホストＩＦに電力を供給することができる。
したがって、情報処理装置１は、より無駄がなく最適な電力を供給することができる。
【００３９】
動作電圧を変更しない情報処理装置は、最大電流が流れるプログラムでも動作する電圧値が設定されているので、プログラムによっては過剰な電力を供給している場合がある。
特許文献１の情報処理装置では、このような過剰な電力を削減するため、プログラム毎の電力制御情報を使用しているが、プログラムを一度走行させて成功するかの確認を実施してから電圧制御を実施している。このため、特許文献１のような情報処理装置は、プログラムの１回目の実行から、プログラムを実行するのに適した動作電圧をコアに供給することができない。さらに、プログラムが更新されると適した動作電圧をコアに供給することができない。
これに対し、本実施形態の情報処理装置１は、上述のとおり、命令列の命令密度を分析しているため、事前に各ユーザープログラムＰＧＭに合った動作電圧を確認する必要がない。
したがって、ユーザープログラムＰＧＭの１回目の実行から、ユーザープログラムＰＧＭを実行するのに適した動作電圧をコアに供給することができる。さらに、ユーザープログラムＰＧＭが更新されても、適した動作電圧をコアに供給することができる。
【００４０】
加えて、特許文献２の情報処理装置でも、過剰な電力を削減するため、命令列に合わせて動作電圧を変更しているが、命令列のうち、連続する命令の先頭に動作電圧制御命令を追加し、動作電圧の変更指示を出している。通常、電圧制御が行われる場合、動作電圧の変更指示が出されてから動作電圧が実際に変更されるまで、タイムラグが発生する。このため、特許文献２の情報処理装置では、動作電圧の変更指示が出してから、実際にコアの動作電圧が変更されるまでにタイムラグが発生する。
これに対し、本実施形態の情報処理装置１は、各ユーザープログラムＰＧＭ実行前のＣＳＷ時間に、各コアに供給する電圧を変更している。
したがって、本実施形態の情報処理装置１は、特許文献２のような電圧変更のタイムラグの発生を抑制することができる。
【００４１】
＜第二実施形態＞
第二実施形態の情報処理装置について図４及び図５を参照して説明する。
本実施形態に係る情報処理装置１’は、各コアで電源を共有している点が異なる。以下説明する点を除いて情報処理装置１’の構成は、第一実施形態に係る情報処理装置１と同様である。
【００４２】
（構成）
図４に示すように、情報処理装置１’は、プログラム生成部１０と、ホスト部２０’と、システムユニット３０’と、を備える。
ホスト部２０’は、ＯＳデスパッチャ２０１と、電圧送信部２０２’と、を備える。
システムユニット３０’は、電圧制御回路３０１’と、メモリ３０７と、ＬＳＩ３０９’と、を備える。
システムユニット３０’は、内部電源３０３Ａ’と、ＩＯ電源３０３Ｆと、をさらに備える。本実施形態において、これら各電源は、ＤＣ／ＤＣコンバータであって、電圧制御回路３０１’の制御によって、出力電圧が制御される。
【００４３】
電圧送信部２０２’は、ＯＳデスパッチャ２０１から各ユーザープログラムＰＧＭの電圧情報ＶＩＦを順次受け付ける。
電圧送信部２０２’は、各ユーザープログラムＰＧＭの電圧情報ＶＩＦに基づき設定電圧を生成し、電圧制御回路３０１’に設定電圧を送る。
【００４４】
（システムユニット）
システムユニット３０’は、各ユーザープログラムＰＧＭを実行する前に、各コアの動作電圧を電圧送信部２０２’から送信された設定電圧に設定する。
【００４５】
電圧制御回路３０１’は、電圧送信部２０２’から設定電圧を受け付ける。電圧制御回路３０１’は受け付けた設定電圧に基づき、内部電源３０３Ａ’、ＩＯ電源３０３Ｆの各出力電圧をそれぞれ制御する。
内部電源３０３Ａ’は、第一コア３０９Ａ、第二コア３０９Ｂ、第三コア３０９Ｃ、第四コア３０９Ｄ、及びメモリ制御部３１０の共通の電源である。
内部電源３０３Ａ’は、電圧制御回路３０１’に制御に応じて、所定の直流電圧である共通動作電圧Ｖｃｃを出力し、第一コア３０９Ａ、第二コア３０９Ｂ、第三コア３０９Ｃ、第四コア３０９Ｄ、及びメモリ制御部３１０に電力を供給する。
【００４６】
（電圧送信部）
電圧送信部２０２’の機能について詳しく説明する。
図５に示すように、まず、タイミング０において、第一コア設定電圧Ｖｓ１、第二コア設定電圧Ｖｓ２、第三コア設定電圧Ｖｓ３、第四コア設定電圧Ｖｓ４を生成する。
続いて、タイミング０において、生成した第一コア設定電圧Ｖｓ１、第二コア設定電圧Ｖｓ２、第三コア設定電圧Ｖｓ３、及び第四コア設定電圧Ｖｓ４を合算して、共通設定電圧Ｖｓｃを算出する。
【００４７】
続いて、タイミング０において、電圧送信部２０２’は、生成した共通設定電圧Ｖｓｃを、電圧制御回路３０１’に送る。
電圧制御回路３０１’は、電圧送信部２０２’から共通設定電圧Ｖｓｃを受け付けると、タイミング０において、共通動作電圧Ｖｃｃが共通設定電圧Ｖｓｃになるように、内部電源３０３Ａ’を制御する。
【００４８】
図５には示さないが、情報処理装置１’は、ホストＩＦ動作電圧Ｖｃｉも同様に、共通動作電圧Ｖｃｃとは別に設定する。
すなわち、タイミング０において、電圧送信部２０２’は、ホストＩＦ設定電圧Ｖｓｉとして、電圧情報ＶＩＦに基づきホストＩＦ３０６に適した電圧値を生成し、生成したホストＩＦ設定電圧Ｖｓｉを、電圧制御回路３０１’に送る。さらに、電圧制御回路３０１’は、ホストＩＦ３０６に供給されるホストＩＦ動作電圧ＶｃｉがホストＩＦ設定電圧Ｖｓｉとなるように、ＩＯ電源３０３Ｆを制御する。
【００４９】
（共通設定電圧算出）
本実施形態では、電圧送信部２０２’は、各ユーザープログラムＰＧＭを実行する前（ユーザープログラムＰＧＭ実行前のＣＳＷ時間）に、共通設定電圧Ｖｓｃを算出する。電圧送信部２０２’は、各タイミングの第一コア設定電圧Ｖｓ１、第二コア設定電圧Ｖｓ２、第三コア設定電圧Ｖｓ３、第四コア設定電圧Ｖｓ４の４コア分の各設定電圧を合算して、共通設定電圧Ｖｓｃを算出する。
【００５０】
ここで各設定電圧の合算の例を説明する。
まず、電圧送信部２０２’は、４コア分の各設定電圧について、図５に示すように、設定電圧を低下する指示の個数（電圧値低下指示個数）を数える。電圧送信部２０２’は、電圧値低下指示個数が３個以上（電圧値低下指示個数≧３）になったら、設定された共通設定電圧Ｖｓｃより低い電圧を新たな共通設定電圧Ｖｓｃとして生成し、新たな共通設定電圧Ｖｓｃを、電圧制御回路３０１’に送る。
電圧制御回路３０１’は、電圧送信部２０２’から新たな共通設定電圧Ｖｓｃを受け付けると、共通動作電圧Ｖｃｃが新たな共通設定電圧Ｖｓｃになるように、各ユーザープログラムを実行する前（ユーザープログラムＰＧＭ実行前のＣＳＷ時間）に、内部電源３０３Ａ’を制御する。
情報処理装置１’において、元の共通動作電圧Ｖｃｃは、最大電流が流れるユーザープログラムＰＧＭでも動作するように設定されている。このため、「４コア分の電圧値低下指示個数≧３」の判断基準で共通動作電圧Ｖｃｃを低下させれば、ユーザープログラムＰＧＭの動作を妨げることなく、ユーザープログラムＰＧＭを実行することができる。
【００５１】
逆に、電圧値低下指示個数が再び３個未満（電圧値低下指示個数＜３）になったら、図５のタイミング１５に示すように、情報処理装置１’は、共通動作電圧Ｖｃｃを高くする。
【００５２】
（作用及び効果）
本実施形態の情報処理装置１’は、情報処理装置１と同様、第二コンパイラ１０２が、命令列の命令密度を分析している。このため、事前に各ユーザープログラムＰＧＭに合った動作電圧を確認することなく、各ユーザープログラムＰＧＭに適した電圧を各コア及びホストＩＦに供給することができるので、無駄な消費電力を削除する事が可能となる。
したがって、情報処理装置１’は、各ユーザープログラムＰＧＭに合わせた動作電圧の変更が負担となりにくい。
また、本実施形態の情報処理装置１’は、情報処理装置１と同様、各ユーザープログラムＰＧＭ実行前のＣＳＷ時間に、共通動作電圧を変更している。
【００５３】
＜プログラム生成方法＞
上述の各実施形態におけるプログラム生成方法を、図６を参照して説明する。
本プログラム生成方法では、電圧情報ＶＩＦに基づく動作電圧でＬＳＩを実行させるユーザープログラムＰＧＭを生成する。
最初に、ユーザーが作成したソースプログラムのコンパイルを行い、命令列を含むオブジェクトを生成する（ＳＴ１０：オブジェクトを生成するステップ）。
ＳＴ１０におけるオブジェクトの生成に続いて、命令列の命令密度を分析し、電圧情報ＶＩＦを生成する（ＳＴ２０：電圧情報を生成するステップ）。
ＳＴ２０における電圧情報の生成に続いて、オブジェクトＯＪＴと電圧情報ＶＩＦとを結合して、ユーザープログラムＰＧＭを生成する（ＳＴ３０：プログラムを生成するステップ）。
ＳＴ３０における電圧情報の生成が終わると、処理を終了して、次のソースプログラムが提供されると再び処理を開始する。
【００５４】
＜ハードウェア構成＞
図７には、上述の各実施形態において、プログラム生成部１０を実現するためのハードウェア構成の一例が示されている。この図が示すようにプログラム生成部１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０５、メモリ１０６、記憶／再生装置１０７、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１０８、ＩＯ  Ｉ／Ｆ（Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｉｎｔｅｒｆａｃｅ）１０９等の各ハードウェアを備えたコンピュータである。
【００５５】
メモリ１０６は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）等の記憶媒体である。
記憶／再生装置１０７は、ＣＤ−ＲＯＭ、ＤＶＤ、フラッシュメモリ等の外部メディアへプログラム、データ等を記憶したり、外部メディアのプログラム、データ等を再生したりするための装置である。
ＩＯ  Ｉ／Ｆ１０９は、ソースプログラムの入力、ホスト部２０（２０’）との間で情報等の入出力等を行うためのインターフェースである。
【００５６】
＜コンピュータプログラム＞
上述の各実施形態において、プログラム生成部の全部または一部の機能を実現するためのプログラムをコンピュータ読み取り可能な記憶媒体に記憶して、この記憶媒体に記憶されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。
また、「コンピュータ読み取り可能な記憶媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記憶媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記憶されているプログラムとの組み合わせで実現できるものであってもよい。
【００５７】
＜各実施形態の最小構成＞
図８には、上述の各実施形態のプログラム生成部１０の最小構成が示されている。
プログラム生成部１０は、ＬＳＩを電圧コンテキストに基づく動作電圧で実行させる電圧情報を生成する。
プログラム生成部１０は、第一コンパイラ１０１と、第二コンパイラ１０２と、リンカ１０３と、を備える。
第一コンパイラ１０１は、ソースプログラムのコンパイルを行い、命令列を含むオブジェクトを生成する。第二コンパイラ１０２は、命令列の命令密度を分析し、電圧情報を生成する。リンカ１０３は、オブジェクトと電圧情報とを結合して、ユーザープログラムを生成する。
【００５８】
＜変形例＞
上述の各実施形態において、ＬＳＩは、４個のコアで構成されているが、何個のコアで構成されていてもよい。変形例として、５個以上のコアで構成されていてもよい。他の変形例として、３個以下のコアで構成されていてもよい。
【００５９】
上述の各実施形態では、第二コンパイラ１０２が、命令列に含まれる各命令を、ＬＤＳＴ命令、論理演算命令、シフト演算命令、固定小数点命令、及び浮動小数点命令の命令種に分類している。変形例として、第二コンパイラ１０２が、命令列に含まれる各命令を、ＬＤＳＴ命令、論理演算命令、シフト演算命令、固定小数点命令、浮動小数点命令のうち、少なくとも２以上の命令種に分類するものであってもよい。
【００６０】
上述の第一実施形態において、情報処理装置は、メモリ制御動作電圧Ｖｃｍを、所定の初期設定の電圧値となるように制御している。変形例として、情報処理装置は、電圧情報ＶＩＦに基づき、メモリ制御部に適したメモリ制御設定電圧を生成し、メモリ制御設定電圧となるように、メモリ制御動作電圧Ｖｃｍを制御してもよい。
【００６１】
上述の第二実施形態では、４コア分の各設定電圧を合算して、共通設定電圧Ｖｓｃを算出している。変形例として、４コア分の各設定電圧に加えて、ホストＩＦ設定電圧Ｖｓｉも合算してもよい。
【００６２】
以上、本発明の実施形態を説明したが、この実施形態は、例として示したものであり、発明の範囲を限定することは意図していない。この実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で種々の省略、置き換え、変更を行うことができる。この実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものとする。
【符号の説明】
【００６３】
１  情報処理装置
１’  情報処理装置
１０  プログラム生成部
２０  ホスト部
２０’  ホスト部
３０  システムユニット
３０’  システムユニット
１０１  第一コンパイラ
１０２  第二コンパイラ
１０３  リンカ
１０６  メモリ
１０７  記憶／再生装置
１０８  ＨＤＤ
１０９  ＩＯ  Ｉ／Ｆ
２０１  ＯＳデスパッチャ
２０２  電圧送信部
２０２’  電圧送信部
３０１  電圧制御回路
３０１’  電圧制御回路
３０３Ａ  第一コア電源
３０３Ａ’  内部電源
３０３Ｂ  第二コア電源
３０３Ｃ  第三コア電源
３０３Ｄ  第四コア電源
３０３Ｅ  メモリ制御電源
３０３Ｆ  ＩＯ電源
３０６  ホストＩＦ
３０７  メモリ
３０９  ＬＳＩ
３０９’  ＬＳＩ
３０９Ａ  第一コア
３０９Ｂ  第二コア
３０９Ｃ  第三コア
３０９Ｄ  第四コア
３１０  メモリ制御部
ＳＱＣ  命令列
Ｖｃ１  第一コア動作電圧
Ｖｃ２  第二コア動作電圧
Ｖｃ３  第三コア動作電圧
Ｖｃ４  第四コア動作電圧
Ｖｃｃ  共通動作電圧
Ｖｃｉ  ホストＩＦ動作電圧
Ｖｃｍ  メモリ制御動作電圧
Ｖｓ１  第一コア設定電圧
Ｖｓ２  第二コア設定電圧
Ｖｓ３  第三コア設定電圧
Ｖｓ４  第四コア設定電圧
Ｖｓｃ  共通設定電圧
Ｖｓｉ  ホストＩＦ設定電圧
【図１】
2019164527.tif 000003
【図２】
2019164527.tif 000004
【図３】
2019164527.tif 000005
【図４】
2019164527.tif 000006
【図５】
2019164527.tif 000007
【図６】
2019164527.tif 000008
【図７】
2019164527.tif 000009
【図８】
2019164527.tif 000010