(57)【要約】【課題】メモリリークによる情報処理装置のメモリ枯渇を予測することを目的とする。【解決手段】本発明にかかる支援装置は、実行済みのジョブにおける設定と、実行済みのジョブが引き起こしたメモリリークのリーク量と、実行済みのジョブが使用したメモリのピーク量と、を関連付けて記憶する。情報処理装置に投入される予定のジョブ群と該ジョブ群のそれぞれを実行する際の設定とを取得する。ジョブ群に含まれるジョブに対して、記憶された設定と取得した設定とを比較して、情報処理装置でジョブが実行された場合のリーク量及びピーク量を予測する。ジョブ群に含まれるジョブであって、ジョブの予測されたピーク量とジョブに先行して実行されるジョブの予測されたリーク量との合計値が、ジョブ群の実行に許容される情報処理装置のメモリ容量を上回るようなジョブが存在するか否かを判定する。【選択図】図２
2010072854.tif 000002
【特許請求の範囲】
【請求項１】
ジョブを指定された設定に従って実行する情報処理装置を支援する支援装置であって、
実行済みのジョブにおける設定と、該実行済みのジョブが引き起こしたメモリリークのリーク量と、該実行済みのジョブが使用したメモリのピーク量と、を関連付けて記憶する記憶手段と、
前記情報処理装置に投入される予定のジョブ群と該ジョブ群のそれぞれを実行する際の設定とを取得する取得手段と、
前記ジョブ群に含まれるジョブに対して、前記記憶手段に記憶された設定と前記取得手段が取得した設定とを比較して、前記情報処理装置で該ジョブが実行された場合のリーク量及びピーク量を予測する予測手段と、
該ジョブ群に含まれるジョブであって、該ジョブの前記予測されたピーク量と該ジョブに先行して実行されるジョブの前記予測されたリーク量との合計値が、該ジョブ群の実行に許容される前記情報処理装置のメモリ容量を上回るようなジョブが存在するか否かを判定する判定手段と
を備える支援装置。
【請求項２】
前記判定手段は、前記許容されるメモリ容量を上回るようなジョブが存在する場合に、前記ジョブ群の中で最先の順番に実行される予定のジョブを前記支援装置のユーザに通知することを特徴とする請求項１に記載の支援装置。
【請求項３】
前記設定は、ジョブを実行する際のパラメータ値の組み合わせを含むことを特徴とする請求項１又は２に記載の支援装置。
【請求項４】
前記予測手段は、前記予測するリーク量及びピーク量を、前記記憶手段に記憶されたリーク量及びピーク量のそれぞれの平均値に基づいて予測することを特徴とする請求項１乃至３のいずれか１項に記載の支援装置。
【請求項５】
前記予測手段は、前記予測するリーク量及びピーク量を、前記記憶手段に記憶されたリーク量及びピーク量のそれぞれの最大値又は最小値に基づいて予測することを特徴とする請求項１乃至３のいずれか１項に記載の支援装置。
【請求項６】
ジョブを指定された設定に従って実行する情報処理装置を支援する支援方法であって、
実行済みのジョブにおける設定と、該実行済みのジョブが引き起こしたメモリリークのリーク量と、該実行済みのジョブが使用したメモリのピーク量と、を関連付けて記憶手段に記憶する記憶工程と、
取得手段が、前記情報処理装置に投入される予定のジョブ群と該ジョブ群のそれぞれを実行する際の設定とを取得する取得工程と、
前記ジョブ群に含まれるジョブに対して、前記記憶工程において記憶された設定と前記取得工程において取得した設定とを比較して、前記情報処理装置で該ジョブが実行された場合のリーク量及びピーク量を予測する予測工程と、
判定手段が、該ジョブ群に含まれるジョブであって、該ジョブの前記予測されたピーク量と該ジョブに先行して実行されるジョブの前記予測されたリーク量との合計値が、該ジョブ群の実行に許容される前記情報処理装置のメモリ容量を上回るようなジョブが存在するか否かを判定する判定工程と
を備える支援方法。
【請求項７】
コンピュータを請求項１乃至５のいずれか１項に記載の支援装置として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置の支援装置、支援方法、およびコンピュータプログラムに関する。
【背景技術】
【０００２】
情報処理装置において、ソフトウェアがメモリを利用する際に、オペレーティングシステム等のメモリ管理機構からメモリ領域を獲得し、メモリを使用した後に解放する。メモリ領域獲得／解放の手段として、Ｃ言語ではライブラリ関数のｍａｌｌｏｃ／ｆｒｅｅ、Ｃ＋＋言語ではｎｅｗ／ｄｅｌｅｔｅ演算子などが広く用いられている。ソフトウェアがメモリ使用後に使用したメモリ領域を解放し忘れた場合には、情報処理装置が終了するまで該メモリ領域は使用されることなく情報処理装置の資源を無駄に占有し続ける。この現象はメモリリーク（以下、単にリークと呼ぶ）と呼ばれ、ソフトウェアのメモリ解放忘れのバグによって発生する。一般に、プログラムの構造を静的に調べる静的解析による検査方法では、リークを検出することが難しく、誤検出率が高い。また、プログラムが実際に動いている状態を調べる動的解析に関して、単一プロセス内でのメモリリークのチェックを行う市販ツールが広く利用されている。ここでプロセスとは、オペレーティングシステムが管理するソフトウェアの実行単位である。しかし、複数のプロセスから構成され、プロセス間で共有メモリを利用してデータ共有を行うソフトウェアにおいては、あるプロセスが獲得した共有メモリ上の領域を他のプロセスが解放する場合がある。この場合には、単一プロセス内のチェックだけではメモリリークを正確に検出することは出来ない。
【０００３】
ソフトウェアは通常、出荷前のテスト工程にてバグの発見・除去がされてから製品として出荷される。しかしながら工業用製造装置ソフトの中には、出荷前のテスト工程でメモリ解放忘れのバグを完全に除去することが極めて困難なものもある。例えば半導体ウェハの焼き付けを行う半導体露光装置では、露光条件と手順とを記したレシピと、装置設定の組み合わせによって装置の動作が決定される。これらの組み合わせは多量のパラメータを持ち、工場ラインの生産計画に基づいてソフトウェア出荷後にユーザによって作成されるという特徴がある。どのような組み合わせを必要とするかはユーザにより異なるため、メモリ解放忘れのバグを完全に除去するためには、テスト工程にてすべての設定の組み合わせをチェックする必要がある。しかし、多量のパラメータを持つ場合には、このチェックを行うことは現実的でない。
【０００４】
メモリ解放忘れのバグを含むソフトウェアを連続動作させると、リークの発生により情報処理装置の利用可能なメモリ領域が徐々に減少する。その結果、情報処理装置は性能が低下すると同時に動作が不安定になる。そのような場合には、情報処理装置の性能と安定性とを回復するために、該情報処理装置を停止・再起動しメモリ領域を初期化する等の措置をとらなければならない。しかし、半導体露光装置は一旦生産計画に基づき生産を開始すると数週間に渡って稼動し続けることを前提としており、安易に情報処理装置を再起動することは出来ない。再起動すると初期化処理やハードウェアの調整処理を行う必要があり、その間工場ラインの他装置も一時停止して生産量の調整を行わなければならないためである。また、半導体露光装置には複数のウェハから成るロット単位で作業内容の指示が投入されるが、ロットを処理中に再起動を行った場合には、ロット中の一部のウェハを破棄せざるを得ないことがある。このように情報処理装置の再起動が突然発生するとユーザは大きな損害を被る。一方、再起動が必要になる時期が予め事前に予測されていれば、ユーザはその予測に基づいて生産計画の見直し、最適化を図ることが出来る。そのため、情報処理装置の再起動が必要になる時期を精度良く予測する技術が求められている。
【０００５】
図２１Ａおよび図２１Ｂを用いて、情報処理装置のメモリリークによる影響を説明する。図２１Ａは、リークを引き起こすジョブが存在しない場合のメモリ使用の状況を説明する図である。この図において、情報処理装置においてＪ１からＪ６までのジョブが実行されるとする。メモリ使用量２１０１は、ジョブＪ１を実行する際に必要となるメモリ量である。いずれのジョブもメモリ使用量がメモリ上限を超えないため、メモリが枯渇することはない。
【０００６】
一方、図２１Ｂは、リークを引き起こすジョブが存在する場合のメモリ使用の状況を説明する図である。ジョブＪ１の終了後にメモリリーク２１０２が発生する。このメモリ領域は、ジョブＪ２を実行する場合にはまったく使用できない領域となってしまうため、ジョブＪ２が必要とするメモリ容量はリークが発生しない場合と比べて、多くなってしまう。さらに、リークが累積し、ジョブＪ４に実行において、リーク量の合計値とジョブＪ４の使用するメモリ量との合計が、メモリ上限を超えてしまう。この場合には、システムが不安定になり、情報処理装置が停止してしまうおそれもある。
【０００７】
情報処理装置のメモリ枯渇の予測について、既存の有効な技術は存在しない。他の分野の技術で情報処理装置のメモリ枯渇の予測に適用可能なものとして、消耗材の消耗度の検出と寿命の予測とが考えられる。
【０００８】
特許文献１には電池の使用開始時からの使用モードと動作時間を記録し、予め出荷時に記憶された消耗度を用いて電池の残り寿命を算出する方法が記載されている。また特許文献２と特許文献３とには、プリンタに投入される印刷ジョブに必要な消耗材の見込み分量を実際の消耗品残量と比較して、該印刷ジョブを完遂可能かどうか判断する方法が記載されている。しかしこれらの方法では、消耗度を製造時の理論値や設計値に基づき定めていて、出荷後の想定外の要因による消耗を考慮していない。そのため、半導体露光装置のように出荷後に初めてリークが発生したような場合には、適用することが出来ない。また、これらの方法は、将来にわたる使用計画を考慮していないため、予め寿命を予測することが出来ない。
【０００９】
特許文献４には生産計画を考慮して工場の成形機の部品交換を自動発注する方法が記載されている。しかし、成形機の消耗度を製造時の理論値や設計値に基づき定めているため、やはり膨大な設定パラメータの組み合わせを出荷前に網羅できない場合に対応できない。
【特許文献１】特開平０８−２２０１９９号公報
【特許文献２】特開２００５−２５０３０２号公報
【特許文献３】特開２００４−１６８０６２号公報
【特許文献４】特開２００５−２５８５８５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明は、メモリリークによる情報処理装置のメモリ枯渇を予測することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題に鑑みて、本発明にかかる支援装置は、ジョブを指定された設定に従って実行する情報処理装置を支援する支援装置であって、
実行済みのジョブにおける設定と、該実行済みのジョブが引き起こしたメモリリークのリーク量と、該実行済みのジョブが使用したメモリのピーク量と、を関連付けて記憶する記憶手段と、
前記情報処理装置に投入される予定のジョブ群と該ジョブ群のそれぞれを実行する際の設定とを取得する取得手段と、
前記ジョブ群に含まれるジョブに対して、前記記憶手段に記憶された設定と前記取得手段が取得した設定とを比較して、前記情報処理装置で該ジョブが実行された場合のリーク量及びピーク量を予測する予測手段と、
該ジョブ群に含まれるジョブであって、該ジョブの前記予測されたピーク量と該ジョブに先行して実行されるジョブの前記予測されたリーク量との合計値が、該ジョブ群の実行に許容される前記情報処理装置のメモリ容量を上回るようなジョブが存在するか否かを判定する判定手段とを備える。
【発明の効果】
【００１２】
上述の手段により、メモリリークによる情報処理装置のメモリ枯渇を予測することが可能となる。
【発明を実施するための最良の形態】
【００１３】
以下、添付の図面に沿って本発明の実施形態について説明する。本発明はジョブを指定された設定に基づいて実行する情報処理装置を支援する支援装置に適用される。以下の実施形態ではこのような情報処理装置として、半導体露光装置を扱う。半導体露光装置において実行されるジョブは一つ以上の機能に細分化されるが、ジョブと機能との組み合わせを一つのジョブと扱うことで、上記のような情報処理装置とみなすことができる。
【００１４】
＜第１の実施形態＞
〔ハードウェア構成〕
図１を用いて、本実施形態における支援装置１００のハードウェア構成を説明する。図１は、本実施形態における支援装置１００のハードウェア・ブロック図の一例である。ＣＰＵ１０１は、バス１０２を介して支援装置１００の各構成要素の制御を司る。ＲＯＭ１０３は、バス１０２を介してＣＰＵ１０１からアクセス可能な読み出し専用メモリであり、後述する各種プログラム等を格納する。ＲＡＭ１０４は、読み書き可能なメモリＲＡＭであり、各種データ等を格納する。ＲＯＭ１０３に格納されるプログラムは実行時にＲＡＭ１０４に読み出されるが、ＲＯＭ１０３上に配置したまま実行することも出来る。
【００１５】
入力装置１１０はユーザからの入力を受け付けるキーボード、マウス、タブレット等であり、入力インターフェイス１０５を介してバス１０２に接続される。出力装置１２０はＣＲＴ，ＬＣＤ等のディスプレイ、更にはプリンタ、プロッタ等であり、出力インターフェイス１０６を介してバス１０２に接続される。外部記憶装置１３０はＨＤＤ、ＦＤＤ、ＣＤ−ＲＯＭドライブ、ＭＤドライブ等であり、外部記憶装置インターフェイス１０７を介してバス１０２に接続される。外部記憶装置１３０からＲＡＭ１０４に各種プログラムを読み出しても良い。通信インターフェイス１０８は、支援対象の装置である半導体露光装置１４０との通信を提供する。図１において、支援装置１００は半導体露光装置１４０と独立した装置として表現されているが、支援装置１００は半導体露光装置１４０の一部であってもかまわない。
【００１６】
〔ソフトウェア構成〕
図２を用いて、本実施形態における支援装置１００のソフトウェア構成を説明する。図２は、本実施形態における支援装置１００のソフトウェア・ブロック図の一例である。支援装置１００はプログラムとして、リークパターン解析プログラム２０１、実行予定機能算出プログラム２０２、およびメモリ枯渇判定プログラム２０３を備える。さらに、支援装置１００はデータとして、ジョブ履歴２０４、リーク履歴２０５、パターン限定情報２０６、リークパターン２０７、生産計画２０８、ジョブ定義情報２０９、実行予定機能２１０、許容メモリ量２１１、およびメモリ枯渇情報２１２を備える。本実施形態では各種プログラムと各種データとがすべて単一の支援装置１００に配置されるものとして説明を行う。しかし、これらの一部を他のコンピュータ・ノードに配置し、複数のコンピュータ・ノードを用いて一連の処理を行ってもよい。
【００１７】
リークパターン解析プログラム２０１は、半導体露光装置１４０に過去に投入されたジョブの実行結果に基づいて、半導体露光装置１４０でリークが発生する設定およびリーク量・ピーク量を算出する。具体的には、ジョブ履歴２０４、リーク履歴２０５、およびパターン限定情報２０６を入力として、リークパターン２０７を出力する。ジョブ履歴２０４は、過去に半導体露光装置に投入されたジョブの設定に関する情報である。リーク履歴２０５は、過去に半導体露光装置に投入されたジョブの実行において使用されたメモリのピーク量と引き起こされたメモリリークのリーク量に関する情報である。パターン限定情報２０６は、リークパターン２０７を作成する際に対象とする設定を限定する情報である。リークパターン２０７は、過去に実行したジョブの実行履歴から、リークの発生した機能と設定との組み合わせに関する情報を抽出したものである。
【００１８】
実行予定機能算出プログラム２０２は、ユーザが半導体露光装置１４０で実行を予定しているジョブに基づいて、実際に半導体露光装置１４０で実行される機能を算出する。具体的には、生産計画２０８およびジョブ定義情報２０９を入力として、実行予定機能２１０を出力する。生産計画２０８は、半導体露光装置１４０に投入される予定のジョブについて情報であり、例えば半導体露光装置１４０のユーザによって作成される。ジョブ定義情報２０９は、ジョブの詳細を定義した情報である。実行予定機能２１０は、実際に半導体露光装置１４０で実行される機能とその順番とを規定した情報である。
【００１９】
メモリ枯渇判定プログラム２０３は、実行を予定しているジョブを実行した場合に、半導体露光装置１４０のメモリを枯渇してしまうか否かを判定するプログラムである。具体的には、リークパターン２０７、実行予定機能２１０、および許容メモリ量２１１を入力として、メモリ枯渇情報２１２を出力する。許容メモリ量２１１は、半導体露光装置ソフトがジョブを実行する際に使用を許容されるメモリ容量である。メモリ枯渇情報２１２は、メモリの枯渇が発生するか否か、さらには発生する場合にどのジョブのどの機能においてメモリが枯渇するかについての情報である。
【００２０】
以上のように、半導体露光装置１４０で使用されるソフトウェアが出荷された後に、ユーザによる使用で蓄積された情報に基づいてメモリの枯渇を判定する。続いて、各プログラムの動作と各データの内容との詳細について説明する。
【００２１】
〔リークパターン解析プログラムとその入出力データ〕
リークパターン解析プログラム２０１は、半導体露光装置１４０に過去に投入されたジョブの実行結果に基づいて、半導体露光装置１４０でリークが発生する設定およびリーク量・ピーク量を算出する。まず、入力データであるジョブ履歴２０４、リーク履歴２０５、およびパターン限定情報２０６について説明する。
【００２２】
図３Ａ、図３Ｂを用いてジョブ履歴２０４について説明する。ジョブ履歴２０４は、過去に半導体露光装置に投入されたジョブの設定に関する情報である。ジョブ履歴２０４は半導体露光装置１４０に記憶され、支援装置１００は半導体露光装置１４０からジョブ履歴２０４を取得してもよい。また、支援装置１００がジョブ履歴２０４を記憶してもよい。ジョブ履歴２０４はパラメータ情報３００と実行機能情報３１０とを含む。
【００２３】
図３Ａはパラメータ情報３００の一例を説明する図である。パラメータ情報３００は図３Ａに示すような表で表現することができるが、この表現形式に限られない。以下に説明するその他の情報についても同様に表で表現することができるが、この表現形式に限られない。また、各情報の値が直接記載されているが、各々いくつかのファイルまたはデータベース・テーブルに分散して保持されていても良い。
【００２４】
パラメータ情報３００は、半導体露光装置１４０に投入されたジョブごとにレコードが作成される。パラメータ情報３００は、投入されたジョブが完了するごとに、そのジョブに関するレコードが追加される。パラメータ情報３００は、ジョブＩＤ３０１、ジョブ種３０２、パラメータ設定３０３、およびジョブ関連情報３０４を含む。ジョブＩＤ３０１は半導体露光装置１４０に投入されたジョブごとに一意に割り当てられた識別子である。ジョブ種３０２は実行されたジョブの種類である。同一のジョブ種３０２であっても、異なるジョブとして投入された場合には、異なるジョブＩＤ３０１が付与される。パラメータ設定３０３はジョブの実行の際に指定されたパラメータの設定値であり、多くのパラメータはセル３０６のように値が設定されるが、セル３０５のように値が設定されないこともあるパラメータもある。ジョブ関連情報３０４はジョブの作成者等のようなジョブに関連する情報である。
【００２５】
図３Ｂは実行機能情報３１０の一例を説明する図である。実行機能情報３１０は半導体露光装置１４０に記憶され、支援装置１００は半導体露光装置１４０から実行機能情報３１０を取得してもよい。また、支援装置１００が実行機能情報３１０を記憶してもよい。実行機能情報３１０は、半導体露光装置１４０に過去に投入された実行済みのジョブごとにレコードが作成される。実行機能情報３１０は、投入されたジョブが完了するごとに、そのジョブに関するレコードが追加される。ジョブＩＤ３１１およびジョブ種３１２は、図３Ａで説明したジョブＩＤ３０１およびジョブ種３０２とそれぞれ同じである。機能実行履歴３１３は、それぞれのジョブにおいて実行された機能とその実行順番との履歴である。一つのジョブに同一名の機能が複数回繰り返し含まれることがある。例えばレコード３１４のジョブにおいて、「搬送」、「計測１」、「露光」が繰り返し実行されている。これは、一つのジョブにおいて複数枚のウェハの露光を行う場合や、計測を繰り返し行う場合があるためである。
【００２６】
図４Ａ、図４Ｂを用いてリーク履歴２０５について説明する。リーク履歴２０５は、過去に半導体露光装置に投入されたジョブの実行において使用されたメモリ量と発生したリーク量に関する情報である。リーク履歴２０５は半導体露光装置１４０に記憶され、支援装置１００は半導体露光装置１４０からリーク履歴２０５を取得してもよい。また、支援装置１００がリーク履歴２０５を記憶してもよい。リーク履歴２０５は、リーク機能情報４００とリーク量情報４１０とを含む。
【００２７】
図４Ａはリーク機能情報４００の一例を説明する図である。リーク機能情報４００は、それぞれのジョブで実行された機能ごとにレコードが作成される。リーク機能情報４００は、投入されたジョブが完了するごとに、そのジョブの機能に関するレコードが追加される。
【００２８】
リーク機能情報４００は、ジョブＩＤ４０１、ジョブ種４０２、機能名４０３、実行順番４０４、リーク発生４０５、パラメータ設定４０６、およびジョブ関連情報４０７を含む。ジョブＩＤ４０１、ジョブ種４０２、パラメータ設定４０６、およびジョブ関連情報４０７は、図３Ａの対応するそれぞれと同じである。機能名４０３は、それぞれのジョブにおいて実行された機能の名称である。実行順番４０４は、それぞれのジョブにおいて機能が実行された順番である。リーク発生４０５は、それぞれの機能においてリークが発生したか否かを示すフラグである。このフラグにより、例えば、ジョブＩＤ４０１が「０００１０」のジョブの３番目に実行した「露光」でリークが発生したことがわかる。
【００２９】
図４Ｂはリーク量情報４１０の一例を説明する図である。リーク量情報４１０は、それぞれのジョブでリークが発生した機能ごとにレコードが作成される。リーク量情報４１０は、投入された機能の実行が終了するごとに、該機能に関するレコードが追加される。リーク量情報４１０は、ジョブＩＤ４１１、機能名４１２、実行順番４１３、ピーク量４１４、およびリーク量４１５を含む。ジョブＩＤ４１１、機能名４１２、および実行順番４１３は、図４Ａの対応するそれぞれと同じである。ピーク量４１４は、当該機能の実行において半導体露光装置１４０が使用したメモリの最大使用量である。リーク量４１５は、当該機能の実行によって半導体露光装置１４０に引き起こされたメモリリークのリーク量である。
【００３０】
半導体露光装置１４０はジョブに含まれるそれぞれの機能を実行する際に、各時点における使用メモリ量を追跡し、その最大値をピーク量４１４とする。また、機能の実行終了時点で解放されていないメモリ領域をメモリリークが引き起こされたメモリ領域であるとみなして、リーク量４１５として記録するとともに、リークされたメモリ領域を解放する。
【００３１】
パターン限定情報２０６は、リークパターン２０７を作成する際に対象とする設定を限定する情報である。パターン限定情報２０６はユーザが支援装置１００に対して指定してもよいし、支援装置１００が自動的に指定してもよい。例えば半導体露光装置１４０を構成するソフトウェアの一部のモジュールを更新した直後には、該モジュールが参照するパラメータをパターン限定情報２０６で指定し、運用実績のない該モジュールのリークを重点的にチェックする等のユースケースが考えられる。
【００３２】
続いて、出力データであるリークパターン２０７について説明する。図５は本実施形態におけるリークパターン２０７の一例を説明する図である。リークパターン２０７は、過去に実行したジョブの実行履歴から、リークの発生した機能と設定との組み合わせに関する情報を抽出したものである。リークパターン２０７は、リークの発生した機能と条件との組み合わせごとにレコードが作成される。ジョブ種５０１と機能名５０２とはそれぞれ、リークが発生したジョブの種類と機能との名称とである。リーク条件５０３は、リークが発生した機能を実行した際に指定した設定である。ピーク量５０４とリーク量５０５とはそれぞれ、リークの発生した機能を実行した際に使用されたメモリのピーク量と発生したリーク量とである。
【００３３】
続いて、図６、図８、および図９を用いて、リークパターン解析プログラム２０１の動作を説明する。図６は本実施形態におけるリークパターン解析プログラム２０１の動作の一例を示すフローチャートである。この動作はリークパターン解析プログラム２０１をＣＰＵ１０１が処理することによって実行される。
【００３４】
ステップＳ６０１で、図４Ａに示すリーク機能情報４００から、同一のジョブ種４０２と同一の機能名４０３との組み合わせごとにレコードを抽出してサブリーク機能情報を作成する。この結果、ジョブの種類数に機能の種類数を掛けた数のサブリーク機能情報が生成される。例として、ジョブ種４０２が「キャリブレーション」で、機能名４０３が「計測３」である組み合わせについて作成したサブリーク機能情報７００を図７に示す。図７はサブリーク機能情報の一例を説明する図である。サブリーク機能情報７００のリーク発生４０５を参照してリークが発生したレコードを特定し、該レコードをそれぞれｔ１〜ｔＭで表し、該レコード全体をＴで表す。例えば、レコード７０１がｔ１に対応する。各レコードはそれぞれＮ種類のパラメータを有するとし、それぞれのパラメータ名をｐ１〜ｐＮと表す。例えば、「パラメータＡ７０２」がｐ１に対応する。レコードｔｋのパラメータ値をｔｋ，１〜ｔｋ，Ｎとする。例えば、セル７０３のパラメータ値Ａ１がｔ１，１に対応する。
【００３５】
図６に戻り、ステップＳ６０１で生成されたすべてのサブリーク機能情報に対して、ステップＳ６０２とステップＳ６０３とを実行する。ステップＳ６０２では、リークが発生したパラメータ条件を抽出する。ステップＳ６０３では、リークの発生した機能ごとに、メモリのリーク量と使用量とを算出する。以下にこれらの処理を詳細に説明する。
【００３６】
図８を用いて、図６に示すステップＳ６０２の処理の詳細を説明する。図８は本実施形態におけるリーク条件抽出処理の動作の一例を説明するフローチャートである。本実施形態において、機能を実行した際のリークの発生の有無は、パラメータの組み合わせだけに依存するものとする。つまり、同じパラメータの組み合わせであれば、どの順番で機能を実行してもリークが発生するものとする。この場合には、パラメータの組み合わせのみがリーク条件となる。なお、リーク条件がジョブシーケンス中の機能の実行順番に依存する場合については第２の実施形態で扱う。
【００３７】
ステップＳ８０１で、リーク条件のパラメータ名の候補を表す変数Ｒに、パラメータ設定４０６のパラメータ名全体の集合｛ｐ１，…，ｐＮ｝を初期値として与える。変数Ｒにはパラメータ設定４０６のような動作ロジックに直接影響を与えるパラメータのみを指定し、ジョブ関連情報４０７のようなリーク発生とは無関係なパラメータは指定しない。
【００３８】
ステップＳ８０２で、パターン限定情報２０６に基づいて、変数Ｒを更新する。例えば、パターン限定情報２０６として、ｐα、ｐβ、…、ｐωのみにリーク条件を限定する指定が行われた場合には、Ｒ：＝Ｒ∩｛ｐα，ｐβ，…，ｐω｝とする。一方、パターン限定情報２０６として、ｐα、ｐβ、…、ｐωをリーク条件から除外するように指定された場合には、Ｒ：＝Ｒ−｛ｐα，ｐβ，…，ｐω｝とする。
【００３９】
ステップＳ８０３で、ジョブ・機能の組み合わせに対してリークが発生する条件の集合を表す変数Ｃを、空集合に初期化する。
【００４０】
リークが発生したレコードｔｋのそれぞれに対して、ステップＳ８０４を繰り返す。ステップＳ８０４で、リークが発生したレコードにおけるパラメータ値の組み合わせを変数Ｃに和集合として追加する。例えばＲ＝｛ｐα、ｐβ、‥、ｐω｝の場合、レコードｔｋについてのパラメータ値の組み合わせは、ｐα＝ｔｋ，α∧ｐβ＝ｔｋ，β∧…∧ｐω＝ｔｋ，ωとなる。以上により、図５に示すような、ジョブ種５０１と機能名５０２との組み合わせごとのリーク条件５０３が抽出される。
【００４１】
なお、上記の例では複数の候補の中からパラメータ値を択一選択しているが、あらかじめ領域分割などを行うことによって、パラメータ値が任意の数値や文字列を取り得る場合でも択一選択するケースに帰着することが出来る。
続いて、図９を用いて、図６に示すステップＳ６０３の処理の詳細を説明する。図９は本実施形態におけるリーク量・ピーク量算出処理の動作の一例を説明するフローチャートである。本実施形態では、リーク条件毎に発生するリーク量とピーク量とは略一定値であるとする。
【００４２】
ステップＳ９０１で、抽出されたリーク条件を満たすサブリーク機能情報のレコードを抽出する。
【００４３】
ステップＳ９０２で、ジョブＩＤ４０１、機能名４０３、および実行順番４０４をキーとして、リーク量情報４１０を参照して、それぞれのレコードに関連付けられたピーク量４１４およびリーク量４１５を求める。
【００４４】
ステップＳ９０３で、ピーク量４１４とリーク量４１５とのそれぞれの平均値を算出する。
【００４５】
以上により、図５に示すような、ジョブ種５０１と機能名５０２との組み合わせごとのピーク量５０４とリーク量５０５とが抽出される。上述のリークパターン解析プログラム２０１の処理により、図５に示すリークパターン２０７が生成される。なお、ステップＳ９０３において、平均値を算出する代わりに最大値または最小値利用してもよい。
【００４６】
〔実行予定機能算出プログラムとその入出力データ〕
実行予定機能算出プログラム２０２は、ユーザが半導体露光装置１４０で実行を予定しているジョブに基づいて、実際に半導体露光装置１４０で実行される機能を算出する。まず、入力データである生産計画２０８およびジョブ定義情報２０９について説明する。
【００４７】
図１０は、生産計画２０８の一例を説明する図である。生産計画２０８は、半導体露光装置１４０に投入される予定のジョブについて情報である。生産計画２０８は、投入される予定のジョブごとにレコードが作成される。生産計画２０８は、ジョブを投入するユーザが生成してもよいし、半導体露光装置１４０内のアプリケーションが自動的に生成してもよい。また、生産計画２０８は支援装置１００に直接入力されてもよいし、半導体露光装置１４０に入力された生産計画２０８を支援装置１００が取得してもよい。
生産計画２０８は、投入順番１００１、ジョブ種１００２、およびレシピＩＤ１００３を含む。投入順番１００１は、半導体露光装置に投入される予定のジョブの投入される順番である。ジョブ種１００２は、半導体露光装置に投入される予定のジョブの種類である。レシピＩＤ１００３は、投入するジョブのレシピを特定する識別子である。レシピとはジョブの実行の際の半導体露光装置の設定のことで、ジョブ定義情報２０９に詳細が定義される。
【００４８】
図１１Ａおよび図１１Ｂは、ジョブ定義情報２０９の一例を説明する図である。ジョブ定義情報２０９は、それぞれのジョブの設定の詳細についての情報である。ジョブ定義情報２０９は、それぞれの設定の詳細ごとにレコードが定義される。ジョブ定義情報２０９は半導体露光装置１４０において管理され、支援装置１００は半導体露光装置１４０からジョブ定義情報２０９を取得できる。
【００４９】
図１１Ａはレシピ情報１１００の一例を説明する図である。レシピ情報１１００は、レシピＩＤ１１０１および設定名１１０２を含む。レシピＩＤ１１０１は、レシピの種類を特定する識別子である。設定名１１０２は半導体露光装置１４０の設定の名称であり、例えば「露光照明モード」、「レクチルデータ」、「レイアウト」などがある。設定名１１０２の設定の詳細については、別の表で規定される。
【００５０】
図１１Ｂはレクチルデータ設定１１１０の一例を説明する図である。レクチルデータ設定１１１０は「レクチルデータ」についてのパラメータを規定する。レクチルデータ１１１１は「レクチルデータ」の種類を特定する識別子である。パラメータ設定１１１２は「レクチルデータ」で使用されるパラメータの設定値である。
【００５１】
これ以上の説明は省略するが、「露光照明モード」や「レイアウト」などのその他の設定についてもレクチルデータ設定１１１０と同様の表が定義される。これらの表を用いて、レシピＩＤ１００３をキーとして、ジョブ種１００２に記載されたジョブを実行する際のパラメータ設定を取得できる。
【００５２】
続いて、出力データである実行予定機能２１０について図１２を用いて説明する。実行予定機能２１０は、実際に半導体露光装置１４０で実行される機能とその順番とを規定した情報である。図１２は実行予定機能２１０の一例を説明する図である。実行予定機能２１０は、投入されるジョブの機能ごとにレコードが作成される。投入順番１２０１は、半導体露光装置１４０に投入するジョブの順番である。ジョブ種１２０２は、投入するジョブの種類である。機能名１２０３は、それぞれのジョブにおいて実行される機能の名称である。実行順番１２０４は、機能を実行する順番である。パラメータ設定１２０５は、それぞれのジョブを実行する際に使用されるパラメータの設定値である。半導体露光装置１４０は、投入順番１２０１および実行順番１２０４で与えられた順番に、パラメータ設定１２０５で与えられた設定で、機能名１２０３の機能を実行していく。
【００５３】
続いて、図１３を用いて、実行予定機能算出プログラム２０２の動作を説明する。図１３は本実施形態における実行予定機能算出プログラム２０２の動作の一例を示すフローチャートである。この動作は実行予定機能算出プログラム２０２をＣＰＵ１０１が処理することによって実行される。
【００５４】
ステップＳ１３０１で、生産計画２０８と実行予定機能２１０とに基づいて、図１４に示す実行パラメータ情報１４００を生成する。図１４は、実行パラメータ情報１４００の一例を説明する図である。実行パラメータ情報１４００は、投入される予定のジョブとそれぞれのジョブで指定されるパラメータ設定値とを対応付ける情報である。投入順番１４０１とジョブ種１４０２とは、図１０に示す生産計画２０８の投入順番１００１とジョブ種１００２とにそれぞれ対応する。パラメータ設定１４０３は、生産計画２０８のレシピＩＤ１００３をキーとして抽出したそれぞれのジョブに関するパラメータ設定値である。また、生産計画２０８に記載されていないジョブであっても、露光プロセス上の調整やメンテナンスのために必要な「キャリブレーション」のようなジョブが自動的に挿入されてもよい。
【００５５】
図１３に戻り、ステップＳ１３０２で、実行パラメータ情報１４００に基づいて、図１５に示す機能実行順番１５００を生成する。図１５は、機能実行順番１５００の一例を説明する図である。機能実行順番１５００は、投入される予定のそれぞれのジョブで実行される機能とその順番とを規定する情報である。投入順番１５０１とジョブ種１５０２とは、図１０に示す生産計画２０８の投入順番１００１とジョブ種１００２とにそれぞれ対応する。実行機能１５０３は、それぞれのジョブで実行される機能とその順番とであり、設定されたパラメータによって決定される。
【００５６】
図１３に戻り、ステップＳ１３０３で、機能実行順番１５００に基づいて、実行予定機能２１０を生成する。
【００５７】
〔メモリ枯渇判定プログラムとその入出力データ〕
メモリ枯渇判定プログラム２０３は、実行を予定しているジョブを実行した場合に、半導体露光装置１４０のメモリを枯渇してしまうか否かを判定するプログラムである。入力データであるリークパターン２０７、実行予定機能２１０、および許容メモリ量２１１のうち、まだ説明していない許容メモリ量２１１について説明する。許容メモリ量２１１は、生産計画２０８で実行を予定しているジョブを実行するために、半導体露光装置１４０で使用可能なメモリ容量である。例えば、半導体露光装置１４０全体のメモリ容量から、ジョブの実行前に半導体露光装置１４０が使用中のメモリ量を引いた値としてもよい。さらに、その値から、所定の安全定数を引くなどして、設計値を考慮した補正を行ってもよい。
【００５８】
出力データであるメモリ枯渇情報２１２は、生産計画２０８で指定されたジョブを実行する際に、許容メモリ量２１１を使い切るか否か、そして使い切る場合にはどのジョブのどの機能の実行時点で使い切るかに関する情報である。
【００５９】
続いて、図１６を用いて、メモリ枯渇判定プログラム２０３の動作を説明する。図１６はメモリ枯渇判定プログラム２０３の動作の一例を示すフローチャートである。この動作はメモリ枯渇判定プログラム２０３をＣＰＵ１０１が処理することによって実行される。
【００６０】
ステップＳ１６０１で、各時点におけるメモリリーク量の合計値を表す変数Ａを０に初期化する。
【００６１】
ステップＳ１６０２で、実行予定機能２１０から、未選択の機能のうち、最先の順番の機能を実行機能として選択する。最先の順番は、ジョブの投入順番１２０１と機能の実行順番１２０４とによって定まる。
【００６２】
ステップＳ１６０３で、選択した実行機能がリークパターン２０７のリーク条件５０３を満たすか否かを判定する。満たす場合（ステップＳ１６０３において「ＹＥＳ」）には、ステップＳ１６０４に移行する。満たさない場合（ステップＳ１６０３において「ＮＯ」）には、ステップＳ１６０６に移行する。
【００６３】
ステップＳ１６０４で、先行する機能において発生が予測されたリーク量の合計値であるＡと、実行機能のピーク量５０４との合計が、許容メモリ量２１１を上回るか否かを判定する。上回る場合（ステップＳ１６０４において「ＹＥＳ」）には、ステップＳ１６０８に移行する。この場合はメモリが枯渇することになるため、ステップＳ１６０８で、ジョブの投入順番１２０１と機能の実行順番１２０４とを支援装置１００のユーザに通知して処理を終了する。
【００６４】
上回らない場合（ステップＳ１６０４において「ＮＯ」）には、ステップＳ１６０５に移行する。ステップＳ１６０５で、Ａに実行機能のリーク量５０５を加算する。
【００６５】
ステップＳ１６０６で、実行予定機能２１０に未選択の機能があるか否かを判定する。未選択の機能がない場合（ステップＳ１６０６において「ＮＯ」）には、ステップＳ１６０７で、予定しているジョブを実行してもメモリは枯渇しない旨を支援装置１００のユーザに通知する。未選択の機能がある場合（ステップＳ１６０６において「ＹＥＳ」）には、ステップＳ１６０２に戻る。
【００６６】
以上により、過去に実行したジョブの履歴に基づいて、これから実行する予定のジョブ群を実行した場合に、半導体露光装置１４０のメモリを枯渇するか否かを判定することができる。さらに、枯渇する場合には、どのジョブのどの機能で枯渇するかも判定できるため、それにあわせて半導体露光装置１４０の再起動等の対策をユーザがとることが可能となる。
【００６７】
なお本実施形態では、リーク条件５０３の信頼度を１としているが、ノイズや反例が混じっている場合に対応するために、確率的あるいは統計的な処理を含めてもよい。また、ジョブの機能はシーケンシャルに実行されるものとしたが、部分的に並列に実行されることを考慮してメモリ枯渇情報２１２を算出しても良い。また、支援装置１００は半導体露光装置１４０を稼動させながらオンラインで同時並行に処理を行っても良いし、半導体露光装置１４０の稼動を停止した状態でバッチ処理を行っても良い。
【００６８】
＜第２の実施形態＞
第１の実施形態では、メモリリークを引き起こす設定であるリーク条件が、ジョブ種と機能名とパラメータ設定値との組み合わせから決まる場合について説明を行った。本実施形態では更に、リーク条件がジョブ中の機能の実行順番に依存する場合について説明する。第１の実施形態と重複する内容の説明は省略し、本実施形態に固有の内容を中心に説明する。
【００６９】
図１７は本実施形態におけるリーク機能情報１７００の一例を説明する図である。同一ジョブ・同一機能・同一パラメータ設定値の組み合わせでも、リークが発生している場合としていない場合とがある。そのため、機能の前後関係やジョブ内の位置をリーク条件として含めることで、より精度の高いメモリ枯渇判定を行うことを可能とする。
【００７０】
図１８は本実施形態におけるリークパターン解析プログラム２０１の動作の一例を示すフローチャートである。この動作はリークパターン解析プログラム２０１をＣＰＵ１０１が処理することによって実行される。図７との違いは、ステップＳ１８０１で、制御情報１７０１を抽出する処理を行っている点である。制御情報１７０１とは、ジョブ内の機能の繰り返しの相違や、ジョブ内における機能の登場位置に関する情報である。
【００７１】
図１９を用いて、図１８のステップＳ１８０１の詳細について説明する。図１９は、制御情報抽出処理の動作の一例を説明するフローチャートである。
【００７２】
ステップＳ１９０１で、それぞれのジョブにおいて、機能の組の繰り返しが存在するか否かを判定する。例えば、図１７において、ジョブＩＤ４０１が「０００２０」のジョブには、「搬送」、「計測１」、「計測２」、「露光」の機能の組が繰り返し登場している。また、ジョブＩＤ４０１が「０００３０」のジョブには繰り返しが存在しない。繰り返しが存在しない場合（ステップＳ１９０１において「ＮＯ」）には、ステップＳ１９０２に移行して、繰り返しがないことを制御情報１７０１とする。例えば、レコード１７０４がこれに該当する。
【００７３】
繰り返しが存在する場合（ステップＳ１９０１において「ＹＥＳ」）には、ステップＳ１９０３に移行する。ステップＳ１９０３で、他の繰り返しと相違があるか否かを判定する。例えば、図１７において、ジョブＩＤ４０１が「０００１０」のジョブの、実行順番４０４が「９」〜「１２」の機能は、「計測３」が間に含まれているので、他の繰り返し部分と相違する。相違点がある場合（ステップＳ１９０３において「ＹＥＳ」）には、ステップＳ１９０４に移行して、相違点があることを制御情報１７０１とする。例えば、レコード１７０２がこれに該当する。
【００７４】
相違点が存在しない場合（ステップＳ１９０３において「ＮＯ」）には、ステップＳ１９０５に移行する。ステップＳ１９０５で、ジョブ内で最初に登場する繰り返しであるか否かを判定する。最初に登場する繰り返しである場合（ステップＳ１９０５において「ＹＥＳ」）には、ステップＳ１９０６に移行して、最初に登場する繰り返しであることを制御情報１７０１とする。例えば、レコード１７０５がこれに該当する。この制御情報１７０１の抽出は、最初の繰り返しである場合にのみリークを発生する機能があるときに有効である。
【００７５】
最初に登場する繰り返しでない場合（ステップＳ１９０５において「ＮＯ」）には、ステップＳ１９０７に移行する。ステップＳ１９０７で、ジョブ内で最後に登場する繰り返しであるか否かを判定する。最後に登場する繰り返しである場合（ステップＳ１９０７において「ＹＥＳ」）には、ステップＳ１９０８に移行して、最後に登場する繰り返しであることを制御情報１７０１とする。例えば、レコード１７０３がこれに該当する。この制御情報１７０１の抽出は、最後の繰り返しである場合にのみリークを発生する機能があるときに有効である。最後に登場する繰り返しでない場合（ステップＳ１９０７において「ＮＯ」）には、終了する。
【００７６】
図２０は本実施形態におけるリークパターン２０００の一例を説明する図である。リーク条件２００１に制御情報１７０１が反映されていることがわかる。詳細な説明は省略するが、実行予定機能２１０についても制御情報１７０１が反映される。
【００７７】
以上のように、機能の前後関係やジョブ内の位置をリーク条件として含めることで、より精度の高いメモリ枯渇判定を行うことが可能となる。なお本実施の形態において、制御情報として繰り返しの有無、他の繰り返しとの相違点、繰り返しが最初もしくは最後であるか否か、を挙げたが、他の指針に基づく項目を付け加えても良い。また制御情報の抽出順番を入れ替えてもよい。
【００７８】
＜その他の実施形態＞
なお、本発明は、複数の機器（例えばホストコンピュータ、インターフェイス機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。
【００７９】
また、本発明の目的は、前述した機能を実現するコンピュータプログラムのコードを記録した記憶媒体を、システムに供給し、そのシステムがコンピュータプログラムのコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたコンピュータプログラムのコード自体が前述した実施形態の機能を実現し、そのコンピュータプログラムのコードを記憶した記憶媒体は本発明を構成する。また、そのプログラムのコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した機能が実現される場合も含まれる。
【００８０】
さらに、以下の形態で実現しても構わない。すなわち、記憶媒体から読み出されたコンピュータプログラムコードを、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込む。そして、そのコンピュータプログラムのコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行って、前述した機能が実現される場合も含まれる。
【００８１】
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するコンピュータプログラムのコードが格納されることになる。
【図面の簡単な説明】
【００８２】
【図１】本発明の実施形態における支援装置１００のハードウェア・ブロック図の一例である。
【図２】本発明の実施形態における支援装置１００のソフトウェア・ブロック図の一例である。
【図３Ａ】本発明の実施形態におけるパラメータ情報３００の一例を説明する図である。
【図３Ｂ】本発明の第１の実施形態における実行機能情報３１０の一例を説明する図である。
【図４Ａ】本発明の第１の実施形態におけるリーク機能情報４００の一例を説明する図である。
【図４Ｂ】本発明の第１の実施形態におけるリーク量情報４１０の一例を説明する図である。
【図５】本発明の実施形態におけるリークパターン２０７の一例を説明する図である。
【図６】本発明の第１の実施形態におけるリークパターン解析プログラム２０１の動作の一例を示すフローチャートである。
【図７】本発明の実施形態におけるサブリーク機能情報の一例を説明する図である。
【図８】本発明の実施形態におけるリーク条件抽出処理の動作の一例を説明するフローチャートである。
【図９】本発明の実施形態におけるリーク量・ピーク量算出処理の動作の一例を説明するフローチャートである。
【図１０】本発明の実施形態における生産計画２０８の一例を説明する図である。
【図１１Ａ】本発明の実施形態におけるレシピ情報１１００の一例を説明する図である。
【図１１Ｂ】本発明の実施形態におけるレクチルデータ設定１１１０の一例を説明する図である。
【図１２】本発明の第１の実施形態における実行予定機能２１０の一例を説明する図である。
【図１３】本発明の実施形態における実行予定機能算出プログラム２０２の動作の一例を示すフローチャートである。
【図１４】本発明の第１の実施形態における実行パラメータ情報１４００の一例を説明する図である。
【図１５】本発明の第１の実施形態における機能実行順番１５００の一例を説明する図である。
【図１６】本発明の実施形態におけるメモリ枯渇判定プログラム２０３の動作の一例を示すフローチャートである。
【図１７】本発明の第２の実施形態におけるリーク機能情報１７００の一例を説明する図である。
【図１８】本発明の第２の実施形態におけるリークパターン解析プログラム２０１の動作の一例を示すフローチャートである。
【図１９】本発明の第２の実施形態における制御情報抽出処理の動作の一例を説明するフローチャートである。
【図２０】本発明の第２の実施形態におけるリークパターン２０００の一例を説明する図である。
【図２１Ａ】リークを引き起こすジョブが存在しない場合のメモリ使用の状況を説明する図である。
【図２１Ｂ】リークを引き起こすジョブが存在する場合のメモリ使用の状況を説明する図である。
【符号の説明】
【００８３】
１００  支援装置
１０１  ＣＰＵ
１０２  バス
１０３  ＲＯＭ
１０４  ＲＡＭ
１０５  入力インターフェイス
１０６  出力インターフェイス
１０７  外部記憶装置インターフェイス
１０８  通信インターフェイス
１１０  入力装置
１２０  出力装置
１３０  外部記憶装置
１４０  半導体露光装置
【図１】
2010072854.tif 000003
【図２】
2010072854.tif 000004
【図３Ａ】
2010072854.tif 000005
【図３Ｂ】
2010072854.tif 000006
【図４Ａ】
2010072854.tif 000007
【図４Ｂ】
2010072854.tif 000008
【図５】
2010072854.tif 000009
【図６】
2010072854.tif 000010
【図７】
2010072854.tif 000011
【図８】
2010072854.tif 000012
【図９】
2010072854.tif 000013
【図１０】
2010072854.tif 000014
【図１１Ａ】
2010072854.tif 000015
【図１１Ｂ】
2010072854.tif 000016
【図１２】
2010072854.tif 000017
【図１３】
2010072854.tif 000018
【図１４】
2010072854.tif 000019
【図１５】
2010072854.tif 000020
【図１６】
2010072854.tif 000021
【図１７】
2010072854.tif 000022
【図１８】
2010072854.tif 000023
【図１９】
2010072854.tif 000024
【図２０】
2010072854.tif 000025
【図２１Ａ】
2010072854.tif 000026
【図２１Ｂ】
2010072854.tif 000027