特許第6245820号(P6245820)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ 三星電子株式会社の特許一覧

特許6245820再構成可能プロセッサの検証支援装置及び方法並びに再構成可能プロセッサ
<>
  • 特許6245820-再構成可能プロセッサの検証支援装置及び方法並びに再構成可能プロセッサ 図000002
  • 特許6245820-再構成可能プロセッサの検証支援装置及び方法並びに再構成可能プロセッサ 図000003
  • 特許6245820-再構成可能プロセッサの検証支援装置及び方法並びに再構成可能プロセッサ 図000004
  • 特許6245820-再構成可能プロセッサの検証支援装置及び方法並びに再構成可能プロセッサ 図000005
  • 特許6245820-再構成可能プロセッサの検証支援装置及び方法並びに再構成可能プロセッサ 図000006
  • 特許6245820-再構成可能プロセッサの検証支援装置及び方法並びに再構成可能プロセッサ 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6245820
(24)【登録日】2017年11月24日
(45)【発行日】2017年12月13日
(54)【発明の名称】再構成可能プロセッサの検証支援装置及び方法並びに再構成可能プロセッサ
(51)【国際特許分類】
   G06F 11/36 20060101AFI20171204BHJP
【FI】
   G06F11/36 104
【請求項の数】12
【全頁数】11
(21)【出願番号】特願2013-53533(P2013-53533)
(22)【出願日】2013年3月15日
(65)【公開番号】特開2013-196702(P2013-196702A)
(43)【公開日】2013年9月30日
【審査請求日】2016年2月25日
(31)【優先権主張番号】10-2012-0027401
(32)【優先日】2012年3月16日
(33)【優先権主張国】KR
(73)【特許権者】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】▲ちょう▼ 暎 ▲ちょる▼
(72)【発明者】
【氏名】金 泰 松
(72)【発明者】
【氏名】徐 東 寛
(72)【発明者】
【氏名】韓 淵 照
【審査官】 大塚 俊範
(56)【参考文献】
【文献】 米国特許出願公開第2005/0177775(US,A1)
【文献】 特開平03−063838(JP,A)
【文献】 特開2007−207119(JP,A)
【文献】 特開2009−282847(JP,A)
【文献】 特開2008−130078(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/28−11/36
G06F 11/07
(57)【特許請求の範囲】
【請求項1】
ソースコードのスケジューリング結果から無効な演算を判断する無効演算判断部と、
前記無効な演算が存在するサイクル番号及び前記無効な演算がマッピングされた機能ユニットのID情報を含むマスキングヒントを生成させるマスキングヒント生成部と、
を含み、前記無効な演算は、
機能シミュレーター(Funtional Simulator)では行われず、レジスタトランスファレベル(Register Transfer Level:RTL)のシミュレーターでは行われる演算である再構成可能プロセッサの検証支援装置。
【請求項2】
前記再構成可能プロセッサは、コースグレインアレイ(CGA:Coarse Grained Array)に基づくプロセッサを含む、
請求項1に記載の再構成可能プロセッサの検証支援装置。
【請求項3】
前記無効な演算は、コンパイラのモジュロスケジューリングによってループのプロローグまたはエピローグにマッピングされる演算を含む、
請求項1又は2に記載の再構成可能プロセッサの検証支援装置。
【請求項4】
前記マスキングヒントは、前記機能シミュレーターとレジスタ転送レベルのシミュレーターとのシミュレーション結果のうち、その無効な演算に対するシミュレーション結果を比較しないようにするマスキング情報の生成に使われる、
請求項1乃至3の何れか一項に記載の再構成可能プロセッサの検証支援装置。
【請求項5】
再構成可能なプロセッサの検証支援装置において、
ソースコードのスケジューリング結果から無効な演算を判断する段階と、
前記無効な演算が存在するサイクル番号及び前記無効な演算がマッピングされた機能ユニットのID情報を含むマスキングヒントを生成させる段階と、
を含み、前記無効な演算は、
機能シミュレーターでは行われず、レジスタトランスファレベルのシミュレーターでは行われる演算である再構成可能プロセッサの検証支援方法。
【請求項6】
前記再構成可能プロセッサは、コースグレインアレイ(CGA:Coarse Grained Array)に基づくプロセッサを含む、
請求項5に記載の再構成可能プロセッサの検証支援方法。
【請求項7】
前記無効な演算は、コンパイラのモジュロスケジューリングによってループのプロローグまたはエピローグにマッピングされる演算を含む、
請求項5又は6に記載の再構成可能プロセッサの検証支援方法。
【請求項8】
前記マスキングヒントは、機能シミュレーターとレジスタ転送レベルのシミュレーターとのシミュレーション結果のうち、その無効な演算に対するシミュレーション結果を比較しないようにするマスキング情報の生成に使われる、
請求項5乃至7の何れか一項に記載の再構成可能プロセッサの検証支援方法。
【請求項9】
無効演算判断部と、マスキングヒント生成部とを含み、前記無効演算判断部は、ソースコードのスケジューリング結果から無効な演算を判断し、前記マスキングヒント生成部は、前記判断された無効な演算が存在するサイクル番号及び前記無効な演算がマッピングされた機能ユニットのID情報を含むマスキングヒントを生成させる検証支援装置と、
前記マスキングヒントに基づいて、機能シミュレーターのシミュレーション結果及びレジスタトランスファレベルのシミュレーターのシミュレーション結果のうち、前記無効な演算と関連したシミュレーション結果を比較しないようにするマスキング情報を生成させる検証装置と、
を含み、
前記無効な演算は、
前記機能シミュレーターでは行われず、前記レジスタトランスファレベルのシミュレーターでは行われる演算である再構成可能プロセッサ。
【請求項10】
前記無効な演算は、コンパイラのモジュロスケジューリングによってループのプロローグまたはエピローグにマッピングされた演算のうちの何れか1つを含む、
請求項9に記載の再構成可能プロセッサ。
【請求項11】
前記マスキング情報は、前記機能シミュレーターとレジスタ転送レベルのシミュレーターとのシミュレーション結果を比較するか否かを指示するマスキングビットを含む、
請求項9又は10に記載の再構成可能プロセッサ。
【請求項12】
コンピュータに、請求項5乃至8の何れか一項記載の方法を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コースグレインアレイ(CGA:Coarse Grained Array)に基づいた再構成可能プロセッサの検証支援装置及び方法に関する。
【背景技術】
【0002】
CGAに基づく再構成可能プロセッサは、多数の機能ユニット、グローバルレジスタファイル(Global Register File)、ローカルレジスタファイル(Local Register File)等の非常に複雑な構造を有する。したがって、CGAで誤った計算を行っていれば、誤った位置及び時点を探すのは、非常に難しく、かつ長時間がかかる。
【0003】
プロセッサの誤り検証装置は、このようにプロセッサで誤って行われる位置及び時点を探して知らせる装置である。CGAプロセッサの場合、モジュロスケジューリング(modulo scheduling)を使うことによって、ループのプロローグ、ボディー及びエピローグが同じ設定(configuration)を使い、これにより、プロローグ及びエピローグで無効な演算(invalid operation)、すなわち、計算結果に悪影響を与える演算が行われる。これは、プロセッサの誤り検証装置が誤った検証結果を出力する原因となる。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明は、再構成可能プロセッサの検証支援装置及び方法を提供することである。
【課題を解決するための手段】
【0005】
本発明の一態様によるプロセッサコアの検証支援装置は、ソースコードスケジューリングの結果から無効な演算を判断する無効演算判断部と、その判断された無効な演算に対するマスキングヒント(masking hint)を生成させるマスキングヒント生成部と、を含みうる。
【0006】
この際、その再構成可能プロセッサは、CGAに基づくプロセッサを含みうる。また、無効な演算は、コンパイラのモジュロスケジューリングによってループのプロローグまたはエピローグにマッピングされる演算を含みうる。
【0007】
この際、マスキングヒントは、ループのプロローグまたはエピローグで無効な演算が存在するサイクル番号とその無効な演算がマッピングされた機能ユニットのID情報とを含みうる。また、無効な演算は、機能シミュレーターでは行われず、レジスタ転送レベル(RTL:Register Transfer Level)のシミュレーターで行われる演算であり得る。
【0008】
また、マスキングヒントは、機能シミュレーターのシミュレーション結果とレジスタ転送レベルのシミュレーターのシミュレーション結果とのうち、その無効な演算に対する結果を比較しないようにするマスキング情報の生成に使われる。
【0009】
本発明の一態様によるプロセッサコアの検証支援方法は、ソースコードのスケジューリング結果から無効な演算を判断する段階と、その判断された無効な演算に対するマスキングヒントを生成させる段階と、を含みうる。
【0010】
この際、その再構成可能プロセッサは、CGAに基づくプロセッサを含みうる。また、その無効な演算は、コンパイラのモジュロスケジューリングによってループのプロローグまたはエピローグにマッピングされる演算を含みうる。
【0011】
この際、マスキングヒントは、ループのプロローグまたはエピローグで無効な演算が存在するサイクル番号とその無効な演算がマッピングされる機能ユニットのID情報とを含みうる。また、その無効な演算は、機能シミュレーターでは行われず、レジスタ転送レベル(RTL)のシミュレーターで行われる演算であり得る。
【0012】
また、マスキングヒントは、機能シミュレーターのシミュレーション結果とレジスタ転送レベルのシミュレーターのシミュレーション結果とのうち、その無効な演算に対する結果を比較しないようにするマスキング情報の生成に使われる。
【0013】
本発明の一態様によれば、再構成可能プロセッサは、無効演算判断部と、マスキングヒント生成部とを含み、無効演算判断部は、ソースコードのスケジューリング結果から無効な演算を判断し、マスキングヒント生成部は、判断された無効な演算に対するマスキングヒントを生成させる検証支援装置と、エラーが発生したとき、機能シミュレーターのミュレーション結果とレジスタ転送レベルのシミュレーターのシミュレーション結果とを比較し、マスキングヒントに基づいて、無効な演算と関連したシミュレーション結果を比較しないようにするマスキング情報を生成させる検証装置と、を含みうる。
【0014】
この際、無効な演算は、コンパイラのモジュロスケジューリングによってループのプロローグまたはエピローグにマッピングされる演算のうちの何れか1つを含みうる。また、マスキングヒントは、ループのプロローグまたはエピローグで無効な演算が存在するサイクル番号とその無効な演算がマッピングされる機能ユニットのID情報とを含みうる。無効な演算は、機能シミュレーターでは行われない。
【0015】
マスキング情報は、機能シミュレーターとレジスタ転送レベルのシミュレーターとのシミュレーション結果を比較するか否かを指示するマスキングビットを含みうる。
【図面の簡単な説明】
【0016】
図1】本発明の一実施形態による再構成可能プロセッサの検証環境のブロック図である。
図2】本発明の一実施形態による検証支援装置のブロック図である。
図3】本発明の一実施形態によってCGAにマッピングされる例示的なCコードである。
図4図3の例示的なCコードがCGAにスケジューリングされた結果である。
図5図4のスケジューリング結果に対するヒントファイルの例である。
図6】本発明の一実施形態による検証支援方法のフローチャートである。
【発明を実施するための形態】
【0017】
その他の実施形態の具体的な事項は、詳細な説明及び図面に含まれている。本発明の利点及び特徴、そして、それらを果たす方法は、添付される図面と共に詳細に後述されている実施形態を参照すると、明確になる。しかし、本発明は、以下で開示される実施形態に限定されるものではなく、互いに異なる多様な形態で具現され、単に本実施形態は、本発明の開示を完全にし、当業者に発明の範疇を完全に知らせるために提供されるものであり、本発明は、請求項の範疇によって定義されるだけである。明細書の全体に亘って同じ参照符号は、同じ構成要素を指称する。
【0018】
以下、本発明の実施形態による再構成可能プロセッサの検証支援装置及び方法を、図面を参考にして詳しく説明する。
【0019】
図1は、本発明の一実施形態による再構成可能プロセッサの検証環境のブロック図である。図1を参照すると、検証装置400は、機能シミュレーター310とレジスタ転送レベル(RTL)のシミュレーター320とのシミュレーション結果を比較して、エラーの時点及び位置を知らせる。検証装置400は、機能シミュレーター310とRTLシミュレーター320とのシミュレーション結果が出力される信号を受信し、両出力信号を比較する。この比較の結果、一致しなければ、誤りと判断し、誤りが発生した時点及び位置を知らせる。
【0020】
検証装置400は、超長命令語(VLIW:Very Long Instruction Word)モードでプログラムカウンタ(PC)及び命令を検証する装置であるか、またはCGAモードで機能ユニットの入力(src)/出力(dst)オペランドを検証する装置であり得る。
【0021】
機能シミュレーター310は、コンパイラ200からスケジューリング情報を入力して、ターゲットマシン、すなわち、プロセッサコアの機能ユニットに対応する動作に対してシミュレーションを行い、シミュレーション過程を表わすトレースを生成することができる。
【0022】
CGAモードの場合、コンパイラ200のモジュロスケジューリングを通じて生成されたループのプロローグ、ボディー、エピローグは、同じ設定情報を使う。その結果、モジュロスケジューリングによってプロローグまたはエピローグにマッピングされる実際行われない無効な演算は、RTLシミュレーションにおいて行われる。すなわち、その無効な演算が、機能シミュレーター310では実際に行われないが、RTLシミュレーター320ではシミュレーションされるために、検証装置400の比較結果は一致しなくなる。検証装置400は、このような無効な演算に対しても誤りと検出するために、検証装置400の性能が低下し、正確性に問題が発生する恐れがある。
【0023】
これを解決する方案のうちの一つとして、機能シミュレーター310をRTLシミュレーター320のようなレベルに設計して、無効な演算の場合にも行わせることによって、両シミュレーター310、320の出力結果を同じにする。しかし、この場合には、機能シミュレーター310のシミュレーション速度が低下し、機能シミュレーター310の設計変更が必要である。
【0024】
以下、このような問題を解決するために、本発明の一実施形態によれば、検証装置400を支援する検証支援装置100が提示される。検証支援装置100は、再構成可能プロセッサ、例えば、CGAに基づくプロセッサの検証装置400を支援するために活用されうる。検証支援装置100は、検証装置400を支援するための別途のソフトウェアで製作することができる。一方、本発明の他の実施形態によれば、検証支援装置100は、検証装置400の1つのソフトウェアモジュールとして構成され、本発明のさらに他の実施形態によれば、ソースコードをコンパイルし、スケジューリングするコンパイラ200の一モジュールとして構成することもできる。
【0025】
図2は、本発明の一実施形態による検証支援装置のブロック図である。図2を参照すると、検証支援装置100は、無効演算判断部110、及びマスキングヒント生成部120を含みうる。
【0026】
無効演算判断部110は、コンパイラ200によってスケジューリングされた結果201から無効な演算を判断する。無効演算判断部110は、コンパイラ200からスケジューリング結果を入力する。スケジューリング結果201は、メモリに保存され、無効演算判断部110は、そのメモリでスケジューリング結果201を読める。無効演算判断部110は、コンパイラ200のモジュロスケジューリング結果201の情報に基づいて、毎サイクルごとにループのプロローグ及びエピローグにマッピングされている各演算のうち、実際に行われない無効な演算を判断することができる。
【0027】
マスキングヒント生成部120は、無効演算判断部110によって判断された無効演算に対してマスキングヒント121を生成することができる。マスキングヒント121は、ファイル形式またはテーブル形式に生成されうるが、これに限定されるものではない。マスキングヒント121は、プロローグまたはエピローグで無効な演算が存在するサイクル番号とその無効な演算がマッピングされた機能ユニットのIDとについての情報を含みうる。生成されたマスキングヒント121は、検証装置400に入力されて、その検証装置400にマスキング情報の生成のためのヒントを提供することができる。そのヒント121は、検証装置400が両シミュレーター310、320のシミュレーション結果のうち、その無効な演算に対する結果を比較しないためのマスキング情報を生成させるものである。
【0028】
検証装置400は、毎サイクルごとに入力及び出力オペランドを比較して、エラーを検証する。但し、毎サイクルごとにあらゆる入力及び出力オペランドの比較を行うものではない。演算の種類によって、入力及び出力オペランドの個数が異なりうる。このような場合には、検証装置400は、特定の演算に対してマスキングビットを生成して、必要な入力及び出力オペランドの比較を行うことができる。例えば、比較を行わない特定の演算に対してマスキングビットを‘1’と設定すれば、その演算に対しては比較しない。
【0029】
このように、検証装置400は、検証支援装置100からマスキングヒント121を入力し、そのヒント121を用いて比較を行わない無効な演算についてのマスキング情報を生成することができる。すなわち、プロローグまたはエピローグ動作の遂行時に、毎サイクルごとにその無効な演算に対してマスキングビットを‘1’と設定することによって、その無効な演算に対する両シミュレーター310、320のシミュレーション結果を比較しなくても良い。
【0030】
図3は、本発明の一実施形態によってCGAにマッピングされる例示的なCコードである。図4は、図3の例示的なCコードがCGAにスケジューリングされた結果201である。図5は、図4のスケジューリング結果に対するヒントファイル121の例である。図3の例示的なコードは、整数iを0からN−1まで1ずつ増加させながら、そのiに10を乗算し、その結果を合わせ続けながら、各結果をメモリに保存するソースコードである。このソースコードは、N回の反復を行うループである。このソースコードをコンパイラがCGAプロセッサにモジュロスケジューリングした結果201を図4に表わした。
【0031】
図4を参照すると、本実施形態のCGAプロセッサは、10個の機能ユニットFu00〜Fu09を含んでおり、コンパイラ200は、このソースコードをモジュロスケジューリングを通じてCGAプロセッサの各機能ユニットにマッピングすることができる。図4で、サイクル0から6までは、プロローグを表し、サイクル7から14は、ループボディーを表し、サイクル15から18は、エピローグを表す。
【0032】
図4に示されたスケジューリング結果201でプロローグ(サイクル0〜6)とエピローグ(サイクル15〜18)のイタリック体で表わした演算が無効な演算を意味する。プロローグで9個の演算と、エピローグで5個の演算とが無効な演算であることが分かる。
【0033】
無効演算判断部110は、図4に示されたようなコンパイラ200のスケジューリング結果201を入力されて、無効な演算を判断する。無効演算判断部110は、このスケジューリング結果201でプロローグとエピローグとの毎サイクルごとにイタリック体で表わした無効な演算に対するサイクル番号とマッピングされる機能ユニットのIDとを確認する。
【0034】
マスキングヒント生成部120は、無効演算判断部110によって毎サイクルごとに判断された無効な演算についての情報をファイルまたはテーブル形式に記録して、ヒント121を生成することができる。
【0035】
図5には、図4のスケジューリング結果201を用いてマスキングヒント生成部120が生成したヒントファイル121の一例である。図5に示されたように、生成されたマスキングヒント121には、検証装置400がマスキング情報を生成しなければならないサイクル番号及び機能ユニットのIDが記録されている。すなわち、プロローグ9個の演算とエピローグ5個の演算とに対するマスキングヒントが生成されているということが分かる。
【0036】
検証装置400は、このヒント121を入力されて、無効な演算に対するマスキングビットを‘1’と設定して、マスキング情報を生成させる。例えば、プロローグサイクル0の機能ユニット1(Fu01)に対する演算‘add’に対しては、マスキングビットを‘1’と設定する。機能シミュレーター310では、この演算を行わないが、RTLシミュレーター320では、この演算をそのまま行うために、両シミュレーターの出力結果は変わる。しかし、検証装置400は、この演算に対してはマスキングビットが‘1’と設定されているので、その結果に対する比較を行わない。
【0037】
図6は、本発明の一実施形態による検証支援方法のフローチャートである。図6を参照して検証支援方法を説明すれば、無効演算判断部110は、コンパイラ200によってスケジューリングされた結果201から無効な演算を判断する(段階510)。無効演算判断部110は、コンパイラ200からスケジューリング結果201を入力され、そのスケジューリング結果201の情報に基づいて、毎サイクルごとにループのプロローグ及びエピローグにマッピングされている各演算のうち、実際に行われない無効な演算を判断することができる。
【0038】
次いで、マスキングヒント生成部120は、無効演算判断部110によって判断された無効な演算に対してマスキングヒント121を生成することができる(段階520)。マスキングヒント121は、プロローグまたはエピローグで無効な演算のサイクル番号とその無効な演算がマッピングされる機能ユニットのIDとについての情報を含みうる。また、そのマスキングヒント121は、検証装置400が両シミュレーター310、320のシミュレーション結果のうち、その無効な演算に対する結果を比較しないようにするマスキング情報の生成に使われる。
【0039】
検証装置400は、検証支援装置100から図5に示されたようなマスキングヒント121を入力する。そのマスキングヒント121を用いて比較を行わない無効な演算についてのマスキング情報を生成することができる。マスキング情報は、検証装置400が各演算に対する比較を行うか否かを決定することができる情報であって、マスキングビットを生成して、その比較如何を設定する。
【0040】
例えば、マスキングビットが‘0’に設定された場合、検証装置400は、対応する演算に対するシミュレーション結果を比較し、マスキングビットが‘1’に設定された場合、検証装置400は、対応する演算に対するシミュレーション結果を比較しない。このように、検証装置400は、マスキングヒント121を用いてプロローグまたはエピローグ動作の遂行時に、毎サイクルごとにそのヒントファイルに記録された無効な演算に対してマスキングビットを‘1’と設定することができる。そして、その無効な演算に対する両シミュレーター310、320のシミュレーション結果を比較しなくても良い。
【0041】
開示された実施形態によれば、機能シミュレーター310またはRTLシミュレーター320の設計変更などを要せず、既存のシミュレーターをそのまま用いて無効な演算に対する不要な検証を行わないようにすることによって、検証速度及び性能を向上することができる。
【0042】
一方、本発明の実施形態は、コンピュータで読み取り可能な記録媒体に記録されるコンピュータで読み取り可能なコードとして具現しうる。コンピュータで読み取り可能な記録媒体は、コンピュータシステムによって読み取れるデータが保存されるあらゆる種類の記録装置を含む。
【0043】
コンピュータで読み取り可能な記録媒体の例としては、ROM、RAM、CD−ROM、磁気テープ、フロッピー(登録商標)ディスク、光データ保存装置などがあり、また、伝送波(例えば、Internetを介した伝送)の形態で具現するものを含む。また、コンピュータで読み取り可能な記録媒体は、ネットワークで連結されたコンピュータシステムに分散されて、分散方式でコンピュータで読み取り可能なコードとして保存されて実行可能である。そして、本発明を具現するための機能的プログラム、コード及びコードセグメントは、本発明が属する技術分野のプログラマーによって容易に推論されうる。
【0044】
当業者なら、本発明が、その技術的思想や必須的な特徴を変更せずとも、他の具体的な形態で実施されることを理解できるであろう。したがって、前述した実施形態は、あらゆる面で例示的なものであり、限定的ではないということを理解しなければならない。本発明の範囲は、前記詳細な説明よりは後述する特許請求の範囲によって表われ、特許請求の範囲の意味及び範囲、そして、その均等概念から導出されるあらゆる変更または変形された形態が、本発明の範囲に含まれると解析しなければならない。
【産業上の利用可能性】
【0045】
本発明は、再構成可能プロセッサの検証支援装置及び方法関連の技術分野に適用可能である。
【符号の説明】
【0046】
100 検証支援装置
200 コンパイラ
310 機能シミュレータ
320 RTLシミュレータ
400 検証装置
図1
図2
図3
図4
図5
図6