IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

<>
  • 特許-半導体装置及び演算器の制御方法 図1
  • 特許-半導体装置及び演算器の制御方法 図2
  • 特許-半導体装置及び演算器の制御方法 図3
  • 特許-半導体装置及び演算器の制御方法 図4
  • 特許-半導体装置及び演算器の制御方法 図5
  • 特許-半導体装置及び演算器の制御方法 図6
  • 特許-半導体装置及び演算器の制御方法 図7
  • 特許-半導体装置及び演算器の制御方法 図8
  • 特許-半導体装置及び演算器の制御方法 図9
  • 特許-半導体装置及び演算器の制御方法 図10
  • 特許-半導体装置及び演算器の制御方法 図11
  • 特許-半導体装置及び演算器の制御方法 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-26
(45)【発行日】2023-01-10
(54)【発明の名称】半導体装置及び演算器の制御方法
(51)【国際特許分類】
   G06F 9/38 20060101AFI20221227BHJP
【FI】
G06F9/38 380X
【請求項の数】 6
(21)【出願番号】P 2018108572
(22)【出願日】2018-06-06
(65)【公開番号】P2019212101
(43)【公開日】2019-12-12
【審査請求日】2021-03-10
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100079049
【弁理士】
【氏名又は名称】中島 淳
(74)【代理人】
【識別番号】100084995
【弁理士】
【氏名又は名称】加藤 和詳
(74)【代理人】
【識別番号】100099025
【弁理士】
【氏名又は名称】福田 浩志
(72)【発明者】
【氏名】大貫 祥照
【審査官】漆原 孝治
(56)【参考文献】
【文献】特開2007-189391(JP,A)
【文献】特開2014-059761(JP,A)
【文献】国際公開第2011/074059(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/38
(57)【特許請求の範囲】
【請求項1】
入力されたデータについて演算を行う演算部と、
供給される命令列に演算命令が含まれている場合、当該演算命令の演算対象である第1のデータについて前記演算部に演算を行わせ、前記命令列に演算命令が含まれておらず、前記命令列が特定の状態にある場合、前記第1のデータとは異なる第2のデータについて前記演算部に演算を行わせる制御部と、
を含む半導体装置。
【請求項2】
前記第1のデータ及び前記第2のデータのうちのいずれか一方を選択して、前記演算部に供給する選択部を更に含む
請求項1に記載の半導体装置。
【請求項3】
前記第2のデータは、複数のデータパターンを含み、
前記制御部は、前記演算部に前記複数のデータパターンを順次供給する
請求項1または請求項2に記載の半導体装置。
【請求項4】
前記複数のデータパターンは、前記演算部の出力ビットの少なくとも1ビットの値が反転している
請求項3に記載の半導体装置。
【請求項5】
複数の演算部を含み、
前記制御部は、前記第2のデータについて演算を行わせる制御を、前記複数の演算部に対して段階的に行う
請求項1から請求項4のいずれか1項に記載の半導体装置。
【請求項6】
半導体装置の制御方法において、
前記半導体装置が有する演算部が、入力されたデータについて演算を行い、
供給される命令列に演算命令が含まれている場合、前記半導体装置が有する制御部が、当該演算命令の演算対象である第1のデータについて前記演算部に演算を行わせ、前記命令列に演算命令が含まれておらず、前記命令列が特定の状態にある場合、前記制御部が、前記第1のデータとは異なる第2のデータについて前記演算部に演算を行わせる、
半導体装置の制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
開示の技術は、半導体装置及び演算器の制御方法に関する。
【背景技術】
【0002】
演算器を備えたプロセッサ等の半導体装置において、回路電流の変動に伴って発生する電源ノイズを抑制する技術として、以下の技術が知られている。
【0003】
例えば、クロック生成回路と、命令を実行する命令実行状態と命令を停止する命令停止状態との間で状態遷移可能な命令実行回路と、を備えた演算処理装置が知られている。この演算処理装置は、第1のクロック抑止指示が入力された場合、内蔵する第1の内部回路へのクロックの印加を抑止する第1の回路と、第2のクロック抑止指示が入力された場合、内蔵する第2の内部回路へのクロックの印加を抑止する第2の回路とを含む。演算処理装置は、命令実行回路が命令実行状態から命令停止状態に遷移した場合、第1の回路に第1のクロック抑止指示を出力した後に第2の回路に第2のクロック抑止指示を出力する制御回路を含む(特許文献1参照)。
【0004】
また、演算命令に対応するプリアクセス命令を受けて演算部が有する回路資源に対する省電力制御を段階的に無効化して演算部の回路資源の一部を動作させる電力制御命令制御部と、演算部に演算処理を実行させる制御部と、を備えた半導体集積回路が知られている(特許文献2参照)。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2013-205905号公報
【文献】特開2014-59761号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
プロセッサ等の演算器を備えた半導体装置において、演算器が演算処理を行うと回路電流が増加し、演算処理が停止すると回路電流が低下する。このような回路電流の増減に伴って電源電圧のレベルが一次的に上昇したり、下降したりする(図1参照)。この回路電流の変動に伴う電源電圧のレベルの変動を電源ノイズと呼ぶ。電源ノイズによって電源電圧のレベルが動作保証電圧範囲から外れると、回路が誤動作するおそれがある。
【0007】
例えば、電力が150W、そのうち回路動作に使用される電流成分であるダイナミック成分が60W、回路動作とは関係のない漏れ電流の電流成分であるリーク成分が90W、動作電圧が0.8Vである、過去のテクノロジを用いた8コアのプロセッサとして、を想定する。このプロセッサにおいて、全てのコアの演算器が、一斉に停止状態から稼働状態または稼働状態から停止状態に移行すると、75A(60W÷0.8V)の電流変動が生じる。
【0008】
次に、電力が120W、そのうちダイナミック成分が110W、リーク成分が10W、動作電圧が0.7Vである、最近のテクノロジを用いた64コアのプロセッサを想定する。近年のテクノロジでは、トランジスタサイズが小さくなり、リーク成分がダイナミック成分よりも小さくなってきている。このプロセッサにおいて、全てのコアの演算器が、一斉に停止状態から稼働状態または稼働状態から停止状態に移行すると、157A(110W÷0.7V)もの電流変動が生じる。このように、テクノロジの進歩によるトランジスタサイズの微細化、及びプロセッサ内のコア数の増加に伴って、動作状態の移行時における電流変動量が増大してきている。
【0009】
電源ノイズを抑制する方法として、回路の省電力化を実現するためにクロック信号の制御を行うクロックゲーティング技術によるクロック信号の無効化を解除し、一定量の回路電流を増加させる方法が考えられる。しかしながら、クロック信号の無効化を解除したことによる電流増加量だけでは十分な電流量を獲得することが困難な場合があり、電源ノイズを許容範囲にまで抑えることができない場合がある。
【0010】
また、電源ノイズを抑制する他の方法として、演算回路をプリアクセス命令やアクセスエンド命令を用いて制御する方法も考えられる。プリアクセス命令とは、回路資源の一部をダミーで動作させることにより、その回路資源に対する省電力制御を段階的に無効化する命令である。アクセスエンド命令とは、回路資源に対する省電力制御を段階的に有効化する命令である。演算器をプリアクセス命令やアクセスエンド命令を用いて制御する方法によれば、回路電流の大きさは、そのときに演算器に入力されるデータに依存することとなり、電源ノイズを許容範囲にまで抑えることができない場合がある。例えば、演算器が0+0=0を繰り返し演算しても回路電流は殆ど増加しない。
【0011】
開示の技術は、一つの側面として、回路電流の変動に伴って発生する電源ノイズを効果的に抑制することを目的とする。
【課題を解決するための手段】
【0012】
開示の技術に係る半導体装置は、入力されたデータについて演算を行う演算部と、制御部とを含む。前記制御部は、供給される命令列に演算命令が含まれている場合、当該演算命令の演算対象である第1のデータについて前記演算部に演算を行わせる。前記制御部は、前記命令列に演算命令が含まれておらず、前記命令列が特定の状態にある場合、前記第1のデータとは異なる第2のデータについて前記演算部に演算を行わせる。
【発明の効果】
【0013】
開示の技術は、一つの側面として、回路電流の変動に伴って発生する電源ノイズを効果的に抑制する、という効果を奏する。
【図面の簡単な説明】
【0014】
図1】回路電流の変動に伴って発生する電源ノイズを示す図である。
図2】開示の技術の実施形態に係るプロセッサの構成を示す図である。
図3】開示の技術の実施形態に係るコアの構成を示す図である。
図4】開示の技術の実施形態に係る演算回路20の詳細な構成を示すブロック図である。
図5】開示の技術の実施形態に係る電流底上げ動作の効果の一例を示す図である。
図6】開示の技術の実施形態に係る演算回路の制御態様の一例を示すフローチャートである。
図7】開示の技術の実施形態に係る演算回路の制御態様の一例を示すタイムチャートである。
図8】比較例に係る演算回路の構成を示す回路ブロック図である。
図9】比較例に係る演算回路の制御態様の一例を示すフローチャートである。
図10】比較例に係る演算回路の制御態様の他の例を示すフローチャートである。
図11】比較例に係る演算回路の制御態様の他の例を示すフローチャートである。
図12】開示の技術の第2の実施形態に係る演算回路の制御態様の一例を示すタイムチャートである。
【発明を実施するための形態】
【0015】
以下、開示の技術の実施形態の一例について図面を参照しつつ説明する。なお、各図面において同一または等価な構成要素および部分には同一の参照符号を付与している。
【0016】
[第1の実施形態]
図2は、開示の技術の実施形態に係る半導体装置の一例であるプロセッサ1の構成を示す図である。プロセッサ1は、マトリックス状に配置された複数(例えば64個)のコア100を含んで構成されている。
【0017】
図3は、コア100の構成の一例を示す図である。コア100の各々は、複数(例えば8個)の演算回路20と、主制御回路10とを含んで構成されている。演算回路20の各々は、演算器22を備えている。主制御回路10は、各種制御信号([PW_DATA[7:0]]、[RS]、[PR_ENB]、[B2_VALID]、[X_VALID]、[LX_VALID])及びクロックイネーブル信号([B2_CLK_ENB]、[X_CLK_ENB_1]、[LX_CLK_ENB_1]、[RR_CLK_ENB])を用いて、演算回路20の各々を制御する。
【0018】
図4は、演算回路20の詳細な構成を示すブロック図である。演算回路20は、演算器22、保持回路23A、23B、23C、23D、セレクタ24A、24B、ORゲート25A、25B及び副制御回路21を含んで構成されている。
【0019】
保持回路23Aの各々は、主制御回路10から供給されるクロックイネーブル信号[B2_CLK_ENB]に応じて有効化されたクロック信号CLKに同期して入力されたデータを取り込んで保持する。保持回路23Aは、保持しているデータを出力する。保持回路23Aの各々から出力されるデータD1は、セレクタ24Aの各々の一方の入力端子に入力される。保持回路23Aの各々は、例えばフリップフロップであってもよい。
【0020】
セレクタ24Aの各々は、保持回路23Aから供給されるデータD1、及び副制御回路21から供給されるダミーデータ[B2_DATA]のいずれか一方を、副制御回路21から供給される選択信号[B2_SEL]に基づいて選択し、選択したデータを出力する。セレクタ24Aの各々から出力されたデータは、保持回路23Bの各々に入力される。
【0021】
保持回路23Bの各々は、クロックイネーブル信号[X_CLK_ENB_1]または[X_CLK_ENB_2]に応じて有効化されたクロック信号CLKに同期して、入力されたデータを取り込んで保持する。保持回路23Bは、保持しているデータを出力する。保持回路23Bの各々から出力されるデータD2は、セレクタ24Bの各々の一方の入力端子に入力される。保持回路23Bの各々は、例えばフリップフロップであってもよい。
【0022】
セレクタ24Bの各々は、保持回路23Bから供給されるデータD2、及び副制御回路21から供給されるダミーデータ[X_DATA]のいずれか一方を、副制御回路21から供給される選択信号[X_SEL]に基づいて選択し、選択したデータを出力する。セレクタ24Bの各々から出力されたデータは、演算器22の各々に入力される。
【0023】
演算器22は、セレクタ24Bから供給されるデータについて演算を行って、演算結果をデータD3として出力する。演算器22から出力されるデータD3は、保持回路23Cに入力される。
【0024】
保持回路23Cは、クロックイネーブル信号[LX_CLK_ENB_1]または[LX_CLK_ENB_2]に応じて有効化されたクロック信号CLKに同期して、入力されたデータを取り込んで保持する。保持回路23Cは、保持しているデータを出力する。保持回路23Cから出力されるデータD3は、保持回路23Dに入力される。保持回路23Cは、例えばフリップフロップであってもよい。
【0025】
保持回路23Dは、主制御回路10から供給されるクロックイネーブル信号[RR_CLK_ENB]に応じて有効化されたクロック信号CLKに同期して入力されたデータを取り込んで保持する。保持回路23Dは保持しているデータを出力する。保持回路23Dは、例えばフリップフロップであってもよい。
【0026】
副制御回路21は、主制御回路10から供給される、各種制御信号([PW_DATA[7:0]]、[RS]、[PR_ENB]、[B2_VALID]、[X_VALID]、[LX_VALID])に応じて、ダミーデータ[B2_DATA]、[X_DATA]、選択信号[B2_SEL]、[X_SEL]、クロックイネーブル信号[X_CLK_ENB_2]、[LX_CLK_ENB_2]を出力する。
【0027】
制御信号[PW_DATA[7:0]]は、電流底上げ動作を、各演算回路20に行わせる場合に“1”とされ、電流底上げ動作の実行を禁止する場合に“0”とされる。電流底上げ動作とは、演算命令に基づく本来の演算を行わない演算器22が、ダミーデータ[B2_DATA]、[X_DATA]を用いて演算を行う動作である。演算命令とは、当該命令の実行に演算器22を使用する命令である。
【0028】
演算回路20において、電流底上げ動作が実行されることで、演算回路20の基底状態における回路電流が底上げされる。これにより、演算回路20において、回路電流が最も大きくなるピーク状態における回路電流の大きさと、基底状態における回路電流の大きさとの差が小さくなり、電源ノイズが抑制される。
【0029】
制御信号[PW_DATA[7:0]]は、例えば、演算回路20が停止状態から稼働状態に移行するタイミングに応じて“0”から“1”に遷移し、演算回路20が稼働状態から停止状態に移行するタイミングに応じて“1”から“0”に遷移する。制御信号[PW_DATA[7:0]]は、コア100を構成する8つの演算回路20の各々に対応する8ビットの信号であり、各ビット値が対応する演算回路20に供給される。
【0030】
制御信号[RS]は、演算回路20を停止状態(リテンションステート)にする場合“1”とされ、演算回路20を稼働状態にする場合に“0”とされる。
【0031】
制御信号[PR_ENB]は、上位システムから主制御回路10に供給される命令列が、電源ノイズを発生し得る特定の状態であると主制御回路10が判定した場合に“1”とされる。主制御回路10は、例えば、複数の演算回路20が一斉に停止状態から稼働状態または稼働状態から停止状態に移行にすることが命令列によって示されている場合、当該命令列が電源ノイズを発生し得る特定の状態であると判定する。すなわち、主制御回路10は、回路電流の変動幅が所定値よりも大きくなるおそれがあることを命令列から検出した場合に、制御信号[PR_ENB]を“1”とする。
【0032】
制御信号[B2_VALID]は、演算命令に基づいて演算回路20において行われるパイプライン処理のB2サイクルに演算器22を起動する場合に“1”とされる。制御信号[X_VALID]は、演算命令に基づいて演算回路20において行われるパイプライン処理のXサイクルに演算器22を起動する場合に“1”とされる。制御信号[LX_VALID]は、演算命令に基づいて演算回路20において行われるパイプライン処理のLXサイクルに演算器22を起動する場合に“1”とされる。
【0033】
主制御回路10は、上記の各種制御信号([PW_DATA[7:0]]、[RS]、[PR_ENB]、[B2_VALID]、[X_VALID]、[LX_VALID])を副制御回路21に供給することで、電流底上げ動作の実行/非実行を制御する。下記の表1は、各種制御信号と電流底上げ動作の実行/非実行との関係を示す表である。表1において、丸印は電流底上げ動作の実行を示し、バツ印は電流底上げ動作の非実行を示す。
【0034】
【表1】
【0035】
制御信号[PW_DATA[7:0]]が“0”のとき、その他の制御信号([RS]、[PR_ENB]、[B2_VALID]、[X_VALID]、[LX_VALID])にかかわらず、演算回路20において電流底上げ動作は実行されない。すなわち、制御信号[PW_DATA[7:0]]が“0”のとき電流底上げ動作が禁止される。制御信号[PW_DATA[7:0]]が“1”のとき、その他の制御信号([RS]、[PR_ENB]、[B2_VALID]、[X_VALID]、[LX_VALID])の状態に応じて、電流底上げ動作の実行/非実行が定められる。
【0036】
クロックイネーブル信号[B2_CLK_ENB]は、パイプライン処理のB2サイクルにおいて、保持回路23Aのクロック信号CLKの有効化/無効化を制御するための信号である。クロックイネーブル信号[B2_CLK_ENB]が“1”となることで、クロック信号CLKが有効化され、クロックイネーブル信号[B2_CLK_ENB]が“0”となることで、クロック信号CLKが無効化される。
【0037】
クロックイネーブル信号[X_CLK_ENB_1]は、パイプライン処理のXサイクルにおいて、保持回路23Bのクロック信号CLKの有効化/無効化を制御するための信号である。クロックイネーブル信号[X_CLK_ENB_1]が“1”となることで、クロック信号CLKが有効化され、クロックイネーブル信号[X_CLK_ENB_1]が“0”となることで、クロック信号CLKが無効化される。
【0038】
クロックイネーブル信号[LX_CLK_ENB_1]は、パイプライン処理のLXサイクルにおいて、保持回路23Cのクロック信号CLKの有効化/無効化を制御するための信号である。クロックイネーブル信号[LX_CLK_ENB_1]が“1”となることで、クロック信号CLKが有効化され、クロックイネーブル信号[LX_CLK_ENB_1]が“0”となることで、クロック信号CLKが無有効化される。
【0039】
クロックイネーブル信号[RR_CLK_ENB]は、パイプライン処理のRRサイクルにおいて、保持回路23Dのクロック信号CLKの有効化/無効化を制御するための信号である。クロックイネーブル信号[RR_CLK_ENB_1]が“1”となることで、クロック信号CLKが有効化され、クロックイネーブル信号[RR_CLK_ENB_1]が“0”となることで、クロック信号CLKが無有効化される。
【0040】
副制御回路21は、主制御回路10から供給される各種制御信号([PW_DATA[7:0]]、[RS]、[PR_ENB]、[B2_VALID]、[X_VALID]、[LX_VALID])に基づいて、電流底上げ動作を実行する場合、以下の処理を行う。
【0041】
電流底上げ動作を実行する副制御回路21は、ダミーデータ[B2_DATA]をセレクタ24Aに供給する。また、電流底上げ動作を実行する副制御回路21は、データD1及びダミーデータ[B2_DATA]のうち、ダミーデータ[B2_DATA]を選択すべきことを示す選択信号[B2_SEL]をセレクタ24Aに供給する。また、電流底上げ動作を実行する副制御回路21は、保持回路23Bのクロック信号CLKを有効化させるクロックイネーブル信号[X_CLK_ENB_2]を保持回路23Bに供給する。また、電流底上げ動作を実行する副制御回路21は、ダミーデータ[X_DATA]をセレクタ24Bに供給する。また、電流底上げ動作を実行する副制御回路21は、データD2及びダミーデータ[X_DATA]のうち、ダミーデータ[X_DATA]を選択すべきことを示す選択信号[X_SEL]をセレクタ24Bに供給する。また、電流底上げ動作を実行する副制御回路21は、保持回路23Cのクロック信号CLKを有効化させるクロックイネーブル信号[LX_CLK_ENB_2]を保持回路23Cに供給する。
【0042】
電流底上げ動作を実行する副制御回路21が上記の処理を行うことで、ダミーデータ[B2_DATA]がセレクタ24Aから出力され、保持回路23Bにおいてダミーデータ[B2_DATA]が保持される。また、ダミーデータ[B2_DATA]または[X_DATA]がセレクタ24Bから出力され、演算器22に供給される。
【0043】
演算回路20において電流底上げ動作が実行されることで、演算器22は、ダミーデータ[B2_DATA]または[X_DATA]について演算を行い、演算結果をデータD3として出力する。保持回路23Cは、クロックイネーブル信号[LX_CLK_ENB_2]に基づいてクロック信号CLKが有効化されることで、データD3を保持する。演算器22がダミーデータ[B2_DATA]または[X_DATA]ついて演算することによって得られたデータD3は、保持回路23Dに取り込まれることなく破棄される。
【0044】
図5は、電流底上げ動作の効果の一例を示す図である。図5の上段は、回路電流の時間推移を示すグラフであり、実線が電流底上げ動作を実行した場合に対応し、点線が電流底上げ動作を実行しない場合に対応する。図5の下段は、電源電圧の時間推移を示すグラフであり、実線が電流底上げ動作を実行した場合に対応し、点線が電流底上げ動作を実行しない場合に対応する。電流底上げ動作が実行されると、演算命令に基づく本来の演算を行わない演算器22が、ダミーデータ[B2_DATA]または[X_DATA]について演算を行う。これにより、図5の上段に示すように、演算回路20の基底状態における回路電流が底上げされ、ピーク状態における回路電流の大きさと、基底状態における回路電流の大きさとの差が小さくなる。その結果、電源ノイズが抑制される。
【0045】
ここで、例えば、演算器22に「0+0=0」の演算を繰り返し実行させたとしても、回路電流の底上げ効果は期待できない。一方、演算器22の演算結果であるデータD3の各ビットの値が“0”から“1”または“1”から“0”に反転するような演算を演算器22に行わせることで回路電流を効果的に底上げすることが可能である。副制御回路21は、ダミーデータ[B2_DATA]、[X_DATA]として、演算器22の入力ビットの各々に対応したビット列を含む、互いに異なる複数のデータパターンを保持している。副制御回路21は、ダミーデータを構成する複数のデータパターンを順次演算器22に入力する。これにより、演算器22の演算結果であるデータD3の少なくとも1つのビットの値が“0”から“1”または“1”から“0”に反転するような演算を演算器22に行わせる。すなわち、ダミーデータ[B2_DATA]、[X_DATA]をそれぞれ構成する複数のデータパターンは、これらが演算器22に順次供給されることにより、演算器22の出力ビットの少なくとも1ビットの値が反転するように構成されている。これにより、回路電流を効果的に底上げすることが可能となる。
【0046】
また、演算器22の演算結果であるデータD3の各ビットのうち、“0”から“1”または“1”から“0”に反転するビットの数(以下、反転ビット数という)制御することで、回路電流の底上げ量を調整することも可能である。例えば、64ビットの演算器22から出力されるデータD3の64個の全てのビットの値が反転する場合の回路電流の底上げ量を100とした場合、データD3の32個のビットの値が反転する場合の回路電流の底上げ量は約50である。プロセッサ1において、ダミーデータ[B2_DATA]、[X_DATA]として演算器22に順次入力するデータパターンの組み合わせを適宜選択することで、演算器22の出力における反転ビット数を制御して回路電流の底上げ量を調整してもよい。
【0047】
図6は、開示の技術の実施形態に係る演算回路20の制御態様の一例を示すフローチャートである。この例では、演算回路20が稼働状態(制御信号[PW_DATA[7:0]]が“1”且つ制御信号[RS]が“0”)にある場合を想定している。
【0048】
ステップS1において、主制御回路10は、上位システムから供給される命令列に実行すべき命令が存在するか否かを判定する。主制御回路10は、命令列に実行すべき命令が含まれていると判定した場合、処理をステップS2に移行し、命令列に実行すべき命令が含まれていないと判定した場合、処理をステップS13に移行する。
【0049】
ステップS2において、主制御回路10は、命令列に含まれる命令を解釈する。ステップS3において、主制御回路10は、実行すべき命令が演算命令であるか否かを判定する。主制御回路10は、実行すべき命令が演算命令であると判定した場合、処理をステップS4に移行し、実行すべき命令が演算命令ではないと判定した場合、処理をステップS6に移行する。
【0050】
ステップS4において、主制御回路10は、クロックイネーブル信号[B2_CLK_ENB]、[X_CLK_ENB_1]、[LX_CLK_ENB_1]、[RR_CLK_ENB]を順次“1”とすることで、保持回路23A、23B、23C、23Dのクロック信号CLKを順次有効化させる。
【0051】
ステップS5において、演算器22は、演算命令に基づく演算を実行する。すなわち、演算器22は、演算命令に係るデータ(保持回路23Bから供給されるデータD2)について演算を行う。その後、処理は、ステップS1に戻される。
【0052】
ステップS6において、主制御回路10は、命令列が、電源ノイズを発生し得る特定の状態であるか否かを判定する。主制御回路10は、例えば、複数の演算回路20が一斉に停止状態から稼働状態または稼働状態から停止状態に移行にすることを命令列が示している場合、当該命令列が電源ノイズを発生し得る特定の状態であると判定する。主制御回路10は、命令列が、電源ノイズを発生し得る特定の状態ではないと判定した場合、処理をステップS7に移行し、命令列が、電源ノイズを発生し得る特定の状態であると判定した場合、処理をステップS9に移行する。
【0053】
ステップS7において、主制御回路10は、クロックイネーブル信号[B2_CLK_ENB]、[X_CLK_ENB_1]、[LX_CLK_ENB_1]、[RR_CLK_ENB]を“0”とすることで、保持回路23A、23B、23C、23Dのクロック信号CLKを無効化させる。
【0054】
ステップS8において、主制御回路10は、演算命令ではない命令(例えばロード命令等)を実行する。その後、処理はステップS1に戻される。
【0055】
ステップS9において、主制御回路10は、制御信号[PR_ENB]を“1”とすることで、演算回路20に電流底上げ動作を実行させる。これに応じて、副制御回路21は、クロックイネーブル信号[X_CLK_ENB_2]、[LX_CLK_ENB_2]を“1”とすることで、保持回路23B、23Cのクロック信号CLKを有効化させる。
【0056】
ステップS10において、副制御回路21は、ダミーデータ[B2_DATA]をセレクタ24Aに供給するとともにダミーデータ[B2_DATA]を選択すべきことを示す選択信号[B2_SEL]をセレクタ24Aに供給する。また、副制御回路21は、ダミーデータ[X_DATA]をセレクタ24Bに供給するとともにダミーデータ[X_DATA]を選択すべきことを示す選択信号[X_SEL]をセレクタ24Bに供給する。
【0057】
ステップS11において、演算器22は、ダミーデータ[B2_DATA]、[X_DATA]について演算を実行する。このように演算命令に基づく演算を実行しない演算器22に、ダミーデータ[B2_DATA]、[X_DATA]について演算を実行させることで、電流底上げ動作が実現される。その後、処理は、ステップS1に戻される。
【0058】
ステップS12において、主制御回路10は、演算器22によるダミーデータ[B2_DATA]、[X_DATA]についての演算と並行して、演算命令ではない命令を実行する。その後、処理はステップS1に戻される。
【0059】
命令列に実行すべき命令が含まれていない場合、ステップS13において、主制御回路10は、命令列が、電源ノイズを発生し得る特定の状態であるか否かを判定する。主制御回路10は、例えば、複数の演算回路20が一斉に停止状態から稼働状態または稼働状態から停止状態に移行にすることを命令列が示している場合、当該命令列が電源ノイズを発生し得る特定の状態であると判定する。主制御回路10は、命令列が、電源ノイズを発生し得る特定の状態であると判定した場合、処理をステップS14に移行し、命令列が、電源ノイズを発生し得る特定の状態ではないと判定した場合、処理を終了させる。
【0060】
ステップS14において、主制御回路10は、制御信号[PR_ENB]を“1”とすることで、演算回路20に電流底上げ動作を実行させる。これに応じて、副制御回路21は、クロックイネーブル信号[X_CLK_ENB_2]、[LX_CLK_ENB_2]を“1”とすることで、保持回路23B、23Cのクロック信号CLKを有効化させる。
【0061】
ステップS15において、副制御回路21は、ダミーデータ[B2_DATA]をセレクタ24Aに供給するとともにダミーデータ[B2_DATA]を選択すべきことを示す選択信号[B2_SEL]をセレクタ24Aに供給する。また、副制御回路21は、ダミーデータ[X_DATA]をセレクタ24Bに供給するとともにダミーデータ[X_DATA]を選択すべきことを示す選択信号[X_SEL]をセレクタ24Bに供給する。
【0062】
ステップS16において、演算器22は、ダミーデータ[B2_DATA]、[X_DATA]について演算を実行する。このように、演算命令に基づく演算を実行しない演算器22に、ダミーデータ[B2_DATA]、[X_DATA]について演算を実行させることで、電流底上げ動作が実現される。
【0063】
以上のように、開示の技術の実施形態に係るプロセッサ1によれば、供給される命令列に演算命令が含まれている場合、演算器22は、当該演算命令に係るデータ(保持回路23Bから供給されるデータD2)について演算を行う。一方、命令列に実行すべき命令が含まれていないか、命令列に演算命令が含まれていない場合には、命令列が、電源ノイズを発生し得る特定の状態である場合に、演算器22は、ダミーデータ[B2_DATA]、[X_DATA]について演算を実行する。演算器22が、ダミーデータ[B2_DATA]、[X_DATA]について演算を実行することで、演算回路20の基底状態における回路電流が底上げされる。これにより、ピーク状態における回路電流の大きさと、基底状態における回路電流の大きさとの差が小さくなり、電源ノイズが抑制される。
【0064】
図7は、開示の技術の実施形態に係る演算回路20の制御態様の一例を示すタイムチャートである。演算回路20が停止状態(リテンションステート)にある場合、制御信号[RS]が“1”とされる。この状態において、命令列が電源ノイズを発生し得る特定の状態にあることを主制御回路10が検出すると、主制御回路10は、制御信号[PR_ENB]を“1”に遷移させる(時刻t1)。これに応じて副制御回路21は、クロックイネーブル信号[X_CLK_ENB_2]、[LX_CLK_ENB_2]及び選択信号[B2_SEL]、[X_SEL]を“1”に遷移させる。これにより、演算回路20において電流底上げ動作が開始される。電流底上げ動作時において、演算器22は、ダミーデータ[B2_DATA]、[X_DATA]について演算を行う。
【0065】
時刻t2において、主制御回路10が制御信号[RS]を“0”に遷移させると、演算回路20が稼働状態に移行する。演算回路20が稼働状態にある間、[B2_VALID]、[X_VALID]、[LX_VALID]が“1”となると、クロックイネーブル信号[X_CLK_ENB_2]、[LX_CLK_ENB_2]及び選択信号[B2_SEL]、[X_SEL]は“0”となる。すなわち、演算回路20が演算命令を実行する場合、電流底上げ動作が停止され、演算器22は、演算命令に基づく演算を行う。一方、演算回路20が演算命令を実行せず且つ制御信号[PR_ENB]が“1”とされている場合、演算回路20において電流底上げ動作が実行される。電流底上げ動作時において、演算器22は、ダミーデータ[B2_DATA]、[X_DATA]について演算を行う。
【0066】
時刻t3において、主制御回路10が制御信号[RS]を“1”に遷移させると、演算回路20が停止状態(リテンションステート)に移行する。その後、命令列が電源ノイズを発生し得る特定の状態ではない状態となると、主制御回路10は、制御信号[PR_ENB]を“0”に遷移させる(時刻t4)。これにより、クロックイネーブル信号[X_CLK_ENB_2]、[LX_CLK_ENB_2]及び選択信号[B2_SEL]、[X_SEL]は“0”となり、演算回路20において、電流底上げ動作が停止する。
【0067】
図8は、比較例に係る演算回路20Xの構成を示す回路ブロック図である。比較例に係る演算回路20Xは、開示の技術の実施形態に係る演算回路20(図4参照)が有する、副制御回路21、セレクタ24A、24B、ORゲート25A、25Bを備えていない。
【0068】
図9は、比較例に係る演算回路20Xの制御態様の一例を示すフローチャートである。この例では、開示の技術の実施形態に係るフローチャート(図6)におけるステップS6、S9~S16において実施される各処理が省略されている。すなわち、この比較例に係る制御態様によれば、演算命令が存在する場合には、保持回路23A~23Dの各クロック信号CLKが有効化され、演算命令が存在しない場合には、保持回路23A~23Dのクロック信号CLKが無効化される。この態様によれば、演算回路20Xの基底状態における回路電流の大きさと、ピーク状態における回路電流の大きさとの差が大きくなり、電源ノイズが大きくなる。
【0069】
図10は、比較例に係る演算回路20Xの制御態様の他の例を示すフローチャートである。この例では、図9に示すフローチャートに対して、ステップS21~S23が追加されている。すなわち、この比較例に係る制御態様によれば、実行すべき命令が存在しない場合、ステップS21において、命令列が、電源ノイズを発生し得る特定の状態であるか否が判定される。命令列が、電源ノイズを発生し得る特定の状態ではないと判定された場合、ステップS22において、保持回路23A~23Dの各クロック信号CLKが無効化される。一方、命令列が、電源ノイズを発生し得る特定の状態であると判定された場合、ステップS23において、保持回路23A~23Dの各クロック信号CLKが有効化される。この比較例に係る制御態様によれば、実行すべき命令が存在せず、電源ノイズが発生し得る場合に、省電力制御を実現するためのクロックゲーティング技術によるクロック信号の無効化が解除され、これによって回路電流が増加する。しかしながら、クロック信号の無効化を解除したことによる電流増加量だけでは十分な電流量を獲得することは困難な場合があり、電源ノイズを許容範囲にまで抑えることができない場合がある。
【0070】
図11は、比較例に係る演算回路20Xの制御態様の他の例を示すフローチャートである。この例では、図9に示すフローチャートに対して、ステップS31、S32が追加されている。すなわち、この比較例に係る制御態様によれば、演算命令が存在する場合に、ステップS31において、命令列が、電源ノイズを発生し得る特定の状態であるか否が判定される。命令列が、電源ノイズを発生し得る特定の状態であると判定された場合、ステップS32において、プリアクセス命令及びアクセスエンド命令が実行される。プリアクセス命令とは、回路資源の一部をダミーで動作させることにより、その回路資源に対する省電力制御を段階的に無効化する命令である。アクセスエンド命令とは、回路資源に対する省電力制御を段階的に有効化する命令である。この比較例に係る制御態様によれば、プリアクセス命令によって回路電流が増加する。しかしながら、回路電流の大きさは、そのときに演算器22に入力されるデータに依存することとなり、電源ノイズを許容範囲にまで抑えることが困難な場合がある。
【0071】
一方、開示の技術の実施形態に係る演算回路20の制御態様によれば、電源ノイズが発生し得る場合に、演算命令に基づく本来の演算を行わない演算器22が、ダミーデータ[B2_DATA]、[X_DATA]を用いて演算を行う。回路電流の底上げにダミーデータ[B2_DATA]、[X_DATA]を用いることで、演算器22の演算結果であるデータD3の各ビットの値が例えば、“0”から“1”または“1”から“0”に反転するような演算を演算器22に繰り返し行わせることが可能となる。これにより、回路電流の底上げを効果的に行うことが可能である。また、ダミーデータ[B2_DATA]、[X_DATA]を構成するデータパターンを適宜選択することで、回路電流の底上げ量を調整することも可能である。従って、開示の技術の実施形態に係るプロセッサ1によれば、回路電流の変動に伴う電源ノイズを効果的に抑制することが可能となる。
【0072】
[第2の実施形態]
図12は、開示の技術の第2の実施形態に係る演算回路20の制御態様の一例を示すタイムチャートである。本実施形態において、主制御回路10は、コア100が備える8つの演算回路20の各々に対応する8つの制御信号[PW_DATA[0]]~[PW_DATA[7]]を、対応する演算回路20に個別に供給する。
【0073】
主制御回路10は、制御信号[RS]が“1”から“0”に遷移するタイミング(すなわち、演算回路20が停止状態(リテンションステート)から稼働状態に移行するタイミング)に合わせて、制御信号[PW_DATA[0]]~[PW_DATA[7]]を段階的に“0”から“1”に遷移させる。これにより、各演算回路20が停止状態(リテンションステート)から稼働状態に移行する際に、各演算回路20において、電流底上げ動作が段階的に実行される。
【0074】
また、主制御回路10は、制御信号[RS]が“0”から“1”に遷移するタイミング(すなわち、演算回路20が稼働状態から停止状態(リテンションステート)に移行するタイミング)に合わせて、制御信号[PW_DATA[0]]~[PW_DATA[7]]を段階的に“1”から“0”に遷移させる。これにより、各演算回路20が稼働状態から停止状態(リテンションステート)に移行する際に、各演算回路20において、電流底上げ動作が段階的に解除される。
【0075】
例えば、SIMD(Single Instruction Multiple Data)動作の切り替え時のように、稼働/停止がコア単位で生じる場合、電流底上げ動作の実行及び解除を、コア100を構成する複数の演算回路20に対して一括して行うと、電源ノイズが発生するおそれがある。開示の技術の第2の実施形態に係る演算回路20の制御態様によれば、制御信号[PW_DATA[0]]~[PW_DATA[7]]が段階的に遷移するので、電流底上げ動作の実行及び解除を、コア100を構成する複数の演算回路20に対して段階的に行うことが可能となる。従って、SIMD動作の切り替え時のように、稼働/停止がコア単位で生じる場合でも電源ノイズの発生を抑制することが可能となる。
【0076】
なお、コア100は、開示の技術における半導体装置の一例である。演算器22は、開示の技術における演算部の一例である。主制御回路10及び副制御回路21は、開示の技術における制御部の一例である。データD1、D2は、開示の技術における第1のデータの一例である。ダミーデータ[B2_DATA]、[X_DATA]は、開示の技術における第2のデータの一例である。セレクタ24A、24Bは、開示の技術における選択部の一例である。
【0077】
以上の実施形態に関し、更に以下の付記を開示する。
【0078】
(付記1)
入力されたデータについて演算を行う演算部と、
供給される命令列に演算命令が含まれている場合、当該演算命令の演算対象である第1のデータについて前記演算部に演算を行わせ、前記命令列に演算命令が含まれておらず、前記命令列が特定の状態にある場合、前記第1のデータとは異なる第2のデータについて前記演算部に演算を行わせる制御部と、
を含む半導体装置。
【0079】
(付記2)
前記第1のデータ及び前記第2のデータのうちのいずれか一方を選択して、前記演算部に供給する選択部を更に含む
付記1に記載の半導体装置。
【0080】
(付記3)
前記第2のデータは、互いに異なる複数のデータパターンを含み、
前記制御部は、前記演算部に前記複数のデータパターンを順次供給する
付記1または付記2に記載の半導体装置。
【0081】
(付記4)
前記複数のデータパターンは、前記演算部の出力ビットの少なくとも1つの値が反転している
付記3に記載の半導体装置。
【0082】
(付記5)
複数の演算部を含み、
前記制御部は、前記第2のデータについて演算を行わせる制御を、前記複数の演算部に対して段階的に行う
付記1から付記4のいずれか1つに記載の半導体装置。
【0083】
(付記6)
前記制御部は、
前記命令列が前記特定の状態にあることを示す制御信号を出力する主制御回路と、
前記制御信号に基づいて、前記第1のデータ及び前記第2のデータのうち前記第2のデータを選択すべき選択信号を前記選択部に供給する副制御回路と、を含む
付記2に記載の半導体装置。
【0084】
(付記7)
半導体装置の制御方法において、
前記半導体装置が有する演算部が、入力されたデータについて演算を行い、
供給される命令列に演算命令が含まれている場合、前記半導体装置が有する制御部が、当該演算命令の演算対象である第1のデータについて前記演算部に演算を行わせ、前記命令列に演算命令が含まれておらず、前記命令列が特定の状態にある場合、前記制御部が、前記第1のデータとは異なる第2のデータについて前記演算部に演算を行わせる、
半導体装置の制御方法。
【0085】
(付記8)
前記半導体装置が有する選択部が、前記第1のデータ及び前記第2のデータのうちのいずれか一方を選択して、前記演算部に供給する
付記7に記載の制御方法。
【0086】
(付記9)
前記第2のデータは、互いに異なる複数のデータパターンを含み、
前記制御部が、前記演算部に前記複数のデータパターンを順次供給する
付記7または付記8に記載の制御方法。
【0087】
(付記10)
前記複数のデータパターンは、前記演算部の出力ビットの少なくとも1ビットの値が反転している
付記9に記載の制御方法。
【0088】
(付記11)
前記制御部が、前記第2のデータについて演算を行わせる制御を、複数の演算部に対して段階的に行う
付記7から付記10のいずれか1つに記載の制御方法。
【符号の説明】
【0089】
1 プロセッサ
10 主制御回路
20 演算回路
21 副制御回路
22 演算器
23A、23B、23C、23D 保持回路
24A、24B セレクタ
100 コア
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12