(57)【要約】【課題】エミュレーションの走行時間を短縮させる。【解決手段】エミュレーション装置は、初期設定処理部１９２１，１９２２，１５と験実行処理部１９２１，１９２２，１５と削除処理部１９２３とを備える。初期設定処理部１９２１，１９２２，１５は、記憶部１９３２に書き込んだ初期設定プログラムの識別情報を使用して初期設定プログラムを実行する。試験実行処理部１９２１，１９２２，１５は、記憶部１９３２に書き込んだ第１の試験実行プログラムの識別情報を使用して第１の試験実行プログラムを実行する。削除処理部１９２３は、第１の試験実行プログラムの識別情報を記憶部１９３２から削除する。試験実行処理部１９２１，１９２２，１５は、削除処理部が削除した第１の試験実行プログラムの識別情報の領域に、第２の試験実行プログラムの識別情報を書き込み、第２の試験実行プログラムの識別情報を使用して第２の試験実行プログラムを実行する。【選択図】図５
2019160025.tif 000002
【特許請求の範囲】
【請求項１】
第１の記憶部に書き込んだ初期設定プログラムの識別情報を使用して初期設定プログラムを実行する初期設定処理部と、
前記第１の記憶部に書き込んだ第１の試験実行プログラムの識別情報を使用して第１の試験実行プログラムを実行する試験実行処理部と、
前記第１の記憶部に書き込まれた識別情報のうち、前記第１の試験実行プログラムの識別情報を前記第１の記憶部から削除する削除処理部と、
を備え、
前記試験実行処理部は、前記削除処理部が削除した前記第１の試験実行プログラムの識別情報の領域に、第２の試験実行プログラムの識別情報を書き込み、前記第２の試験実行プログラムの識別情報を使用して第２の試験実行プログラムを実行する、
エミュレーション装置。
【請求項２】
前記第１の記憶部におけるデータのあふれを検知して、前記試験実行処理部による、前記第１の試験実行プログラムの実行又は前記第２の試験実行プログラムの実行を停止させるあふれ検知部
を更に備える、請求項１に記載のエミュレーション装置。
【請求項３】
前記第１の記憶部よりも小さい記憶領域を有する第２の記憶部を更に備え、
前記試験実行処理部は、前記第２の記憶部において第３の試験実行プログラムの識別情報が記憶されている場合、前記第３の試験実行プログラムの識別情報を使用して第３の試験実行プログラムを実行する、
請求項１又は２に記載のエミュレーション装置。
【請求項４】
前記試験実行処理部は、前記第２の記憶部において前記第３の試験実行プログラムの識別情報が記憶されていない場合、前記第３の試験実行プログラムの識別情報を前記第１の記憶部から抽出して前記第２の記憶部に書き込み、前記第３の試験実行プログラムの識別情報を使用して前記第３の試験実行プログラムを実行する、
請求項３に記載のエミュレーション装置。
【請求項５】
コンピュータが、
第１の記憶部に書き込んだ初期設定プログラムの識別情報を使用して初期設定プログラムを実行し、
前記第１の記憶部に書き込んだ第１の試験実行プログラムの識別情報を使用して第１の試験実行プログラムを実行し、
前記第１の記憶部に書き込まれた識別情報のうち、前記第１の試験実行プログラムの識別情報を前記第１の記憶部から削除し、
削除された前記第１の試験実行プログラムの識別情報の領域に、第２の試験実行プログラムの識別情報を書き込み、前記第２の試験実行プログラムの識別情報を使用して第２の試験実行プログラムを実行する、
エミュレーション方法。
【請求項６】
コンピュータに、
第１の記憶部に書き込んだ初期設定プログラムの識別情報を使用して初期設定プログラムを実行させ、
前記第１の記憶部に書き込んだ第１の試験実行プログラムの識別情報を使用して第１の試験実行プログラムを実行させ、
前記第１の記憶部に書き込まれた識別情報のうち、前記第１の試験実行プログラムの識別情報を前記第１の記憶部から削除させ、
削除された前記第１の試験実行プログラムの識別情報の領域に、第２の試験実行プログラムの識別情報を書き込み、前記第２の試験実行プログラムの識別情報を使用して第２の試験実行プログラムを実行させる、
エミュレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エミュレーション装置，エミュレーション方法及びエミュレーションプログラムに関する。
【背景技術】
【０００２】
従来、サーバやＨＰＣ向けのＳｏＣ全体をシステマティックに検証する手段の１つとして、ＳｏＣやＳｏＣと接続されるデバイスを内部にモデル化し、テストプログラムを走行させることによってロジック半導体の論理的な検証を行なうエミュレーションが利用されている。なお、ＨＰＣはHigh Performance Computerの略称であり、ＳｏＣはSystem-on-a-chipの略称である。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１−２４３１３６号公報
【特許文献２】特開２００２−７５０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
テストプログラムを走行させることでロジック半導体の試験を行なうエミュレーションにおいて、システム物理アドレスからメモリアドレスへのアドレストランスレーション機構を備える場合がある。しかしながら、アドレストランスレーション機構を備えていたとしても、メモリ本体の容量を超える試験を行なう場合には、テストプログラムが使用するメモリ領域を一定範囲内に収めるために、テストプログラムは複数に分割される。そして、それぞれの試験毎に初期設定の走行が実行されるため、テストプログラムを分割した数から１を減じた回数だけ初期設定の走行回数が増加し、エミュレーションの走行時間が増加するおそれがある。
【０００５】
１つの側面では、エミュレーションの走行時間を短縮させることを目的とする。
【課題を解決するための手段】
【０００６】
エミュレーション装置は、第１の記憶部に書き込んだ初期設定プログラムの識別情報を使用して初期設定プログラムを実行する初期設定処理部と、前記第１の記憶部に書き込んだ第１の試験実行プログラムの識別情報を使用して第１の試験実行プログラムを実行する試験実行処理部と、前記第１の記憶部に書き込まれた識別情報のうち、前記第１の試験実行プログラムの識別情報を前記第１の記憶部から削除する削除処理部と、を備え、前記試験実行処理部は、前記削除処理部が削除した前記第１の試験実行プログラムの識別情報の領域に、第２の試験実行プログラムの識別情報を書き込み、前記第２の試験実行プログラムの識別情報を使用して第２の試験実行プログラムを実行する。
【発明の効果】
【０００７】
１つの側面では、エミュレーションの走行時間を短縮させることができる。
【図面の簡単な説明】
【０００８】
【図１】関連例における疑似メモリへのアクセス分布を説明する図である。
【図２】関連例においてテストプログラムを分割した場合の走行時間の増加を説明する図である。
【図３】実施形態の一例としてのエミュレーション装置の構成例を模式的に示すブロック図である。
【図４】図３に示したエミュレーション装置におけるロジック半導体の構成例を模式的に示すブロック図である。
【図５】図４に示したロジック半導体における疑似メモリの機能を模式的に示すブロック図である。
【図６】図５に示した疑似メモリにおけるトランスレーションテーブル，テストナンバーテーブル，テストナンバーアドレスレジスタ及びトランスレーションクリアレジスタの構成を模式的に示す図である。
【図７】図５に示した疑似メモリにおけるエンティティカウンタ，トランスレーショングラニュールレジスタ及びメモリアドレスの構成を模式的に示す図である。
【図８】図３に示したエミュレーション装置におけるテストプログラムの走行時間の短縮を説明する図である。
【図９】図３に示したエミュレーション装置におけるトランスレーションテーブルの試験領域のクリア処理の概略を説明するフローチャートである。
【図１０】図３に示したエミュレーション装置におけるトランスレーションテーブルの試験領域のクリア処理の詳細を説明するフローチャートである。
【図１１】図３に示したエミュレーション装置におけるトランスレーションテーブルの試験領域のクリア処理の詳細を説明するフローチャートである。
【図１２】図３に示したエミュレーション装置におけるトランスレーションバッファによるアドレスのトランスレーション処理を説明するフローチャートである。
【図１３】図３に示したエミュレーション装置におけるあふれ検知処理を説明するフローチャートである。
【発明を実施するための形態】
【０００９】
以下、図面を参照して一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。
【００１０】
また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【００１１】
以下、図中において、同一の各符号は同様の部分を示しているので、その説明は省略する。
【００１２】
〔Ａ〕関連例
図１は、関連例における疑似メモリへのアクセス分布を説明する図である。
【００１３】
エミュレーションによる論理検証では、テストプログラムによる疑似メモリへのアクセスのうち、多くはメモリアドレスに対して離散的なアクセスである（符号Ａ１及びＡ２参照）。また、連続的なアクセスであっても、疑似メモリ内において使用されるアドレス領域は限られることがある（符号Ａ３参照）。すなわち、疑似メモリにおけるアドレス領域のうち大部分の領域が使用されず、疑似メモリの使用効率が低くなる場合がある。
【００１４】
図２は、関連例においてテストプログラムを分割した場合の走行時間の増加を説明する図である。具体的には、図２の（１）はテストプログラムを分割しなかった場合の走行時間を示し、図２の（２）は分割したテストプログラムを走行した場合の合計時間を示す。
【００１５】
図２の（１）に示すようなテストプログラムを走行させることでロジック半導体の試験を行なうエミュレーションにおいて、システム物理アドレスからメモリアドレスへのアドレストランスレーション機構を備える場合がある。
【００１６】
図２の（１）に例示するテストプログラムは、初期設定，試験＃１，試験＃２，試験＃３及び試験＃４を順に走行させる。そして、図示するテストプログラムの走行時間は、初期設定の走行時間と試験＃１〜＃４の走行時間との和で表わされる。
【００１７】
しかしながら、アドレストランスレーション機構を備えていたとしても、メモリ本体の容量を超える試験を行なう場合には、テストプログラムが使用するメモリ領域を一定範囲内に収めるために、図２の（２）に示すようにテストプログラムは複数に分割される。
【００１８】
図２の（２）に例示する分割したテストプログラムは、初期設定，試験＃１，初期設定，試験＃２，初期設定，試験＃３，初期設定及び試験＃４を順に走行させる。そして、図示するテストプログラムの走行時間は、４つの初期設定の走行時間と試験＃１〜＃４の走行時間との和で表わされる。
【００１９】
図２の（２）に示すように、それぞれの試験毎の初期設定の走行が実行されるため、テストプログラムを分割した数から１を減じた回数だけ初期設定の走行回数が増加し、エミュレーションの走行時間が増加するおそれがある。
【００２０】
〔Ｂ〕実施形態の一例
〔Ｂ−１〕システム構成例
図３は、実施形態の一例としてのエミュレーション装置１の構成例を模式的に示すブロック図である。
【００２１】
図３に示すエミュレーション装置１は、例示的に、ＳｏＣ２，メモリ３，メモリ４及びディスク／Peripheral Component Interconnect（ＰＣＩ）スイッチ５を備える。
【００２２】
ＳｏＣ２は、集積回路であり、例示的に、Central Processing Unit（ＣＰＵ）サブシステム１０，アプリケーション固有コンポーネント２０，モデム３０及びＳｏＣ相互接続ファブリック４０を備える。
【００２３】
また、ＳｏＣ２は、例示的に、ＤＤＲ３  ５０１，ＵＳＢ３．０  ５０２，ＰＣＩｅ  Ｇｅｎ  ２／３  ５０３及びＥｔｈｅｒｎｅｔ（登録商標）５０４の各インタフェースを備える。なお、ＤＤＲ３はDouble-Data-Rate 3の略称であり、ＵＳＢはUniversal Serial Busの略称であり、ＰＣＩｅ  Ｇｅｎ  ２／３はPCI Express Generation 2/3の略称である。ＤＤＲ３  ５０１，ＵＳＢ３．０  ５０２，ＰＣＩｅ  Ｇｅｎ  ２／３  ５０３及びＥｔｈｅｒｎｅｔ５０４は、高速度の有線インタフェースの一例であり、それぞれ１又は複数のファイ（ＰＨＹ）５０５が接続されている。
【００２４】
更に、ＳｏＣ２は、例示的に、ＨＤＭＩ（登録商標）６０１，ＳＡＴＡ６０２，ＭＩＰＩ６０３，ＷＬＡＮ６０４及びＬＴＥ６０５の各インタフェースを備える。なお、ＨＤＭＩはHigh-Definition Multimedia Interfaceの略称であり、ＳＡＴＡはSerial Advanced Technology Attachmentの略称であり、ＭＩＰＩはMobile Industry Processor Interfaceの略称である。ＷＬＡＮはWireless Local Area Networkの略称であり、ＬＴＥはLong Term Evolutionの略称である。ＨＤＭＩ６０１，ＳＡＴＡ６０２，ＭＩＰＩ６０３，ＷＬＡＮ６０４及びＬＴＥ６０５は、中速度のインタフェースの一例である。
【００２５】
また、ＳｏＣ２は、例示的に、ＧＰＩＯ７０１，ディスプレイ７０２，ＰＭＵ７０３，ＭＩＰＩ７０４，ＪＴＡＧ７０５，ＵＡＲＴ７０６，ＩＮＴＣ７０７，Ｉ２Ｃ７０８，ＳＰＩ７０９，タイマ７１０及びサウスブリッジコントローラ７１１の各インタフェースを備える。なお、ＧＰＩＯはGeneral-purpose input/outputの略称であり、ＰＭＵはPower Management Unitの略称であり、ＪＴＡＧはJoint Test Action Groupの略称であり、ＵＡＲＴはUniversal Asynchronous Receiver/Transmitterの略称である。ＩＮＴＣはInterrupt Controllerの略称であり、Ｉ２ＣはInter-Integrated Circuitの略称であり、ＳＰＩはSerial Peripheral Interfaceの略称である。ＧＰＩＯ７０１，ディスプレイ７０２，ＰＭＵ７０３，ＭＩＰＩ７０４，ＪＴＡＧ７０５，ＵＡＲＴ７０６，ＩＮＴＣ７０７，Ｉ２Ｃ７０８，ＳＰＩ７０９，タイマ７１０及びサウスブリッジコントローラ７１１は、低速度のインタフェースの一例である。
【００２６】
ＳｏＣ相互接続ファブリック４０は、ＣＰＵサブシステム１０とアプリケーション固有コンポーネント２０とモデム３０と各周辺機器５０１〜５０４，６０１〜６０５及び７０１〜７１１とを相互に接続する。
【００２７】
アプリケーション固有コンポーネント２０は、エミュレーション装置１におけるアプリケーションを実行するための種々の機能を備える。
【００２８】
モデム３０は、外部装置との通信を可能にするためのインタフェースである。
【００２９】
ＣＰＵサブシステム１０は、複数（図示する例では、２つ）のＣＰＵ１００（「ＣＰＵ＃１又は＃２」と称してもよい。）及びキャッシュコヒーレントファブリック１０３を備える。
【００３０】
各ＣＰＵ１００は、複数（図示する例では、２つ）のコア１０１及びLevel2（Ｌ２）キャッシュ１０２を備える。
【００３１】
コア１０１は、種々の制御や演算を行なう処理装置であり、Ｌ２キャッシュ１０２に格納されたデータを演算することにより、種々の機能を実現する。
【００３２】
Ｌ２キャッシュ１０２は、メモリ３よりも高速な記憶装置であり、メモリ３に格納されているデータを一時的に記憶する。
【００３３】
キャッシュコヒーレントファブリック１０３は、ＣＰＵ＃１のＬ２キャッシュ１０２とＣＰＵ＃２のＬ２キャッシュ１０２との間で、キャッシュされるデータの一貫性を保持する。また、キャッシュコヒーレントファブリック１０３は、各ＣＰＵ１００とＳｏＣ相互接続ファブリック４０との間、及び、各ＣＰＵ１００とＤＤＲ３  ５０１との間における、データ転送を中継する。
【００３４】
メモリ３及び４は、例示的に、Read Only Memory（ＲＯＭ）及びRandom Access Memory（ＲＡＭ）を含む記憶装置である。メモリ３は、ＰＨＹ５０５を介して、ＤＤＲ３  ５０１と通信可能に接続される。また、メモリ４は、サウスブリッジコントローラ７１１と通信可能に接続される。
【００３５】
ディスク／ＰＣＩスイッチ５は、ＰＣＩｅ  Ｇｅｎ２又はＰＣＩｅ  Ｇｅｎ３の通信規格を有する種々の装置である。ディスク／ＰＣＩスイッチ５は、ＰＨＹ５０５を介して、ＰＣＩｅ  Ｇｅｎ  ２／３  ５０３と通信可能に接続される。
【００３６】
図４は、図３に示したエミュレーション装置１におけるロジック半導体の構成例を模式的に示すブロック図である。
【００３７】
図４に示すロジック半導体は、ＣＰＵ１１，システムコントローラ１２，メモリコントローラ１３，疑似メモリ１４，エミュレーション環境１５，ＩＯコントローラ１６，ＩＯデバイス１７，サウスブリッジコントローラ１８及び疑似メモリ１９を備える。なお、ＩＯは、Input Outputの略称である。
【００３８】
ＣＰＵ１１は、図３に示したＣＰＵ１００のコア１０１に対応する。ＣＰＵ１１は、命令をフェッチ／デコードして、リクエストとしてシステムコントローラ１２へ出力する（符号Ｂ１参照）。
【００３９】
システムコントローラ１２は、図３に示したＣＰＵ１００のＬ２キャッシュ１０２及びＳｏＣ相互接続ファブリック４０に相当する。システムコントローラ１２は、内部にキャッシュ領域を有し、キャッシュの制御を実施する。また、システムコントローラ１２は、ＣＰＵ１１，メモリコントローラ１３，ＩＯコントローラ１６及びサウスブリッジコントローラ１８を、通信可能に接続する。システムコントローラ１２は、ＣＰＵ１１からのリクエストを、メモリコントローラ１３へ転送する（符号Ｂ２参照）。
【００４０】
メモリコントローラ１３は、図３に示したＤＤＲ３  ５０１に対応する。メモリコントローラ１３は、疑似メモリ１４に接続され、疑似メモリ１４を制御する。メモリコントローラ１３は、システムコントローラ１２からのリクエストを、疑似メモリ１４へ転送する（符号Ｂ３参照）。
【００４１】
疑似メモリ１４は、図３に示した、ＰＨＹ５０５を介してＤＤＲ３  ５０１に接続されるメモリ３に対応する。疑似メモリ１４は、メモリコントローラ１３からのリクエストに対応するデータをコンプリーションとしてメモリコントローラ１３へ返す（符号Ｂ４参照）。
【００４２】
メモリコントローラ１３は、疑似メモリ１４からのコンプリーションをシステムコントローラ１２へ転送する（符号Ｂ５参照）。また、システムコントローラ１２は、メモリコントローラ１３からのコンプリーションをＣＰＵ１１へ転送する（符号Ｂ６参照）。
【００４３】
システムコントローラ１２は、ＩＯコントローラ１６に対して、Programmed Input/Output（ＰＩＯ）リクエスト及びDirect Memory Access（ＤＭＡ）コンプリーションを発行する（符号Ｂ７参照）。なお、ＰＩＯ及びＤＡＭは、パラレルAdvanced Technology Attachment（ＡＴＡ）における転送モードの一種である。
【００４４】
ＩＯコントローラ１６は、図３に示したＰＣＩｅ  Ｇｅｎ  ２／３  ５０３に対応する。ＩＯコントローラ１６は、ＩＯデバイス１７に接続され、システムコントローラ１２からのＰＩＯリクエスト及びＤＭＡコンプリーションをＩＯデバイス１７へ転送する（符号Ｂ８参照）。
【００４５】
ＩＯデバイス１７は、図３に示したディスク／ＰＣＩスイッチ５に対応する。ＩＯデバイス１７は、ＩＯコントローラ１６からのＰＩＯリクエスト及びＤＭＡコンプリーションにそれぞれ対応する、ＰＩＯコンプリーション及びＤＭＡリクエストをＩＯコントローラ１６へ返す（符号Ｂ９参照）。
【００４６】
ＩＯコントローラ１６は、ＩＯデバイス１７からのＰＩＯコンプリーション及びＤＭＡリクエストをシステムコントローラ１２へ転送する（符号Ｂ１０参照）。
【００４７】
システムコントローラ１２は、サウスブリッジコントローラ１８へリクエストを発行する（符号Ｂ１１参照）。
【００４８】
サウスブリッジコントローラ１８は、図３に示したサウスブリッジコントローラ７１１に対応する。サウスブリッジコントローラ１８は、シリアルバスでシステムコントローラ１２に接続される。システムコントローラ１２とサウスブリッジコントローラ１８との間のシリアルバスでは、数十バイト〜千バイト超のパケットを送受信するために、数百サイクルの通信が行なわれる。また、サウスブリッジコントローラ１８は、配下に有する疑似メモリ１９へアクセスする。サウスブリッジコントローラ１８は、システムコントローラ１２からのリクエストを疑似メモリ１９へ転送する（符号Ｂ１２参照）。
【００４９】
サウスブリッジコントローラ１８が配下の疑似メモリ１９へ送信するリクエストは、コマンド及びシステム物理アドレスを有する。また、リクエストがライトリクエストである場合には、サウスブリッジコントローラ１８が配下の疑似メモリ１９へ送信するリクエストは、コマンド及びシステム物理アドレスに加えて、ライトデータを有する。
【００５０】
疑似メモリ１９は、図３に示した、サウスブリッジコントローラ７１１に接続されるメモリ４に対応する。疑似メモリ１９は、ファームウェアやOperating System（ＯＳ）のブートローダ等を記憶する。疑似メモリ１９は、サウスブリッジコントローラ１８からのリクエストに対応する、コンプリーションをサウスブリッジコントローラ１８へ返す（符号Ｂ１３参照）。
【００５１】
疑似メモリ１９からサウスブリッジコントローラ１８へ送信されるコンプリーションは、コマンドを有し、リードコンプリーションの場合には更にリードデータを有する。
【００５２】
サウスブリッジコントローラ１８は、疑似メモリ１９からのコンプリーションをシステムコントローラ１２へ転送する（符号Ｂ１４参照）。
【００５３】
エミュレーション装置１において使用する疑似メモリ１４及び１９は、検証対象のサーバ／High Performance Computing（ＨＰＣ）向けのロジック半導体が使用するメモリ３及び４を疑似的に実現する。疑似メモリ１４及び１９は例えば数ギガバイト単位のオーダの大きさのメモリであり、エミュレーション装置１は疑似メモリ１４及び１９をそれぞれ複数備える場合もある。
【００５４】
論理検証に使用するテストプログラムは、メモリコントローラ１３に接続されている疑似メモリ１４に一旦ロードされる。ＣＰＵ１１は、疑似メモリ１４にロードされたテストプログラム中に記述されている命令列をフェッチした後に、順次命令を実行していく。ＣＰＵ１１において単一の命令が完了する毎に、プログラムカウンタ（不図示）がインクリメントされる。テストプログラムは、期待値と結果値との比較等のロジック半導体が正しく動作しているかを試験する機能を備えている。テストプログラムに記述されている全ての試験が完了すると、プログラムカウンタが終了を示す所定の値となり、テストプログラムが終了する。このようにテストプログラムを走行することによって、サーバ／ＨＰＣ向けのロジック半導体のエミュレーションによる論理検証が実施される。
【００５５】
テストプログラムは、初期設定を行なう部分と、試験を行なう部分とを有する。初期設定では、テストプログラムの試験部分を走行する前に、ＣＰＵ１１からのストアにより、システムコントローラ１２やメモリコントローラ１３，ＩＯコントローラ１６，ＩＯデバイス１７等の各種ユニットに対するレジスタ設定を行なう。また、初期設定では、ＣＰＵ１１からのストアにより、メモリコントローラ１３配下の疑似メモリ１４に対して、サーバ／ＨＰＣにおけるＣＰＵ及びメモリの構成を示す情報や割り込みを定義するテーブル，アドレス変換テーブル等を作成して格納する。これにより、各ユニットが試験可能な状態になる。初期設定は、テストプログラムの初期設定部分を走行することにより実施され、テストプログラムの試験部分を走行する時間と同程度の時間がかかる。
【００５６】
テストプログラムは、テストナンバーによって現時点で行なっている試験を認識し、各試験が終わる度に次のテストナンバーを指定する。テストナンバーが試験毎に一意の番号となっていれば、テストプログラムは、任意のテストナンバーを指定できる。テストナンバーは、図３に示したメモリ４のシステム物理アドレス上に格納され、別言すれば、図４におけるサウスブリッジコントローラ１８配下の疑似メモリ１９に格納される。システム物理アドレスは、全テストプログラムにおいて、共通に定義されてよい。
【００５７】
エミュレーション環境１５は、図３に示したＤＤＲ３  ５０１やＰＣＩｅ  Ｇｅｎ２／３  ５０３，サウスブリッジコントローラ１８等を制御する。図４に示す例において、エミュレーション環境１５は、ＣＰＵ１１，サウスブリッジコントローラ１８及び疑似メモリ１９と、信号線を介して接続されている（符号Ｂ１５〜Ｂ１７参照）。エミュレーション環境１５は、信号線で接続される各ユニットの制御及び監視を実施する。エミュレーション環境１５は、或るユニットから異常を通知された場合に、エミュレーションを停止させることができる。
【００５８】
図５は、図４に示したロジック半導体における疑似メモリ１９の機能を模式的に示すブロック図である。
【００５９】
図５に示す例では、システム物理アドレスとメモリ本体１９５のメモリアドレスとを対応付けさせるトランスレーションテーブル１９１３が疑似メモリ１９内部に備えられることで、アクセスされるアドレスの領域に限って疑似メモリ１９にデータを保持させる。これにより、疑似メモリ１９の容量を縮小させることができる。
【００６０】
図５に示すように、疑似メモリ１９は、トランスレーションバッファ１９１，テーブルマネージャ１９２，テーブルメモリ１９３，アクセスコントローラ１９４，メモリ本体１９５及びレジスタ部１９６を備える。
【００６１】
トランスレーションバッファ１９１は、サウスブリッジコントローラ１８からリード／ライトリクエストを受信した際に、内部に有するトランスレーションテーブル１９１３（後述）からエンティティを抽出しようと試みる。当該リクエストが有するシステム物理アドレスに対応するメモリ本体１９５のメモリアドレスがトランスレーションテーブル１９１３に登録されていない場合には、テーブルマネージャ１９２は、テーブルメモリ１９３のトランスレーションテーブル１９３２からエンティティを抽出する。また、テーブルマネージャ１９２は、当該リクエスト用のメモリ本体１９５のメモリアドレスをテーブルメモリ１９３から取得する。そして、アクセスコントローラ１９４は、メモリアドレスを使用してメモリ本体１９５にリード／ライトアクセスし、リードライトコンプリーションをサウスブリッジコントローラ１８へ返す。
【００６２】
トランスレーションバッファ１９１は、エンティティ抽出部１９１１，エンティティ登録部１９１２及びトランスレーションテーブル１９１３を備える。
【００６３】
トランスレーションバッファ１９１は、トランスレーションテーブル１９１３において所定数のエントリを格納できる。トランスレーションバッファ１９１は、サウスブリッジコントローラ１８からリード／ライトリクエストを受信する（図５の符号Ｃ１参照）。
【００６４】
トランスレーションバッファ１９１のエンティティ抽出部１９１１は、受信したリクエストのシステム物理アドレスの上位ビットと、トランスレーションテーブル１９１３に登録されているエンティティにおけるシステム物理アドレスの上位ビットとを比較する。エンティティ抽出部１９１１は、比較の結果、一致するシステム物理アドレスの上位ビットのエンティティをトランスレーションテーブル１９１３のエントリを発見した場合に、メモリアドレスをリクエストとしてアクセスコントローラ１９４へ送る（図５の符号Ｃ２参照）。アクセスコントローラ１９４へ送られるメモリアドレスは、トランスレーションテーブル１９１３に登録されているエンティティにおけるシステム物理アドレスの上位ビットと、システム物理アドレスの下位ビットとを組み合わせることにより、生成される。
【００６５】
すなわち、エンティティ抽出部１９１１は、トランスレーションテーブル１９１３において所定の試験実行プログラムのエンティティが記憶されているかを判定する。そして、エンティティ抽出部１９１１は、所定の試験実行プログラムのエンティティが記憶されている場合には、トランスレーションテーブル１９１３に記憶されている所定の試験実行プログラムのエンティティを抽出する試験実行処理部の一例として機能する。
【００６６】
トランスレーションバッファ１９１のエンティティ抽出部１９１１は、システム物理アドレスの上位ビットのエンティティがトランスレーションテーブル１９１３に無かった場合には、テーブルマネージャ１９２に抽出リクエストを送る（図５の符号Ｃ３参照）。
【００６７】
すなわち、エンティティ抽出部１９１１は、トランスレーションバッファ１９１のトランスレーションテーブル１９１３において所定の試験実行プログラムのエンティティが記憶されているかを判定する。そして、エンティティ抽出部１９１１は、所定の試験実行プログラムのエンティティが記憶されていない場合には、所定の試験実行プログラムのエンティティをテーブルメモリ１９３から抽出する試験実行処理部の一例として機能する。
【００６８】
トランスレーションバッファ１９１のエンティティ登録部１９１２は、テーブルマネージャ１９２からエンティティの登録要求が返ってきた際に、トランスレーションテーブル１９１３へのエンティティの登録処理を実施する（図５の符号Ｃ４参照）。登録処理では、登録要求が有するシステム物理アドレスの上位ビットと、対応するメモリ本体１９５のメモリアドレスとを、トランスレーションテーブル１９１３のエントリに格納する。なお。トランスレーションテーブル１９１３に空きがない場合には、エンティティ登録部１９１２は、トランスレーションテーブル１９１３において最も古いエンティティを消去する。
【００６９】
すなわち、エンティティ登録部１９１２は、テーブルメモリ１９３から抽出した所定の試験実行プログラムのエンティティをトランスレーションテーブル１９１３に書き込む試験実行処理部の一例として機能する。
【００７０】
エンティティ抽出部１９１１は、エンティティ登録部１９１２によってトランスレーションテーブル１９１３に格納されたメモリアドレスをリクエストとしてアクセスコントローラ１９４へ送る（図５の符号Ｃ２参照）。
【００７１】
図６の（１）は、トランスレーションテーブル１９１３のエントリを例示する図である。
【００７２】
トランスレーションテーブル１９１３は、「リザーブ」，「システム物理アドレス上位ビット」，「メモリアドレス上位ビット」，「ＩＤ」及び「Ｖａｌｉｄ」の各領域を有する。なお、「ＩＤ」は、Identificationの略であり、トランスレーションＩＤと称してもよい。
【００７３】
トランスレーションテーブル１９１３は、システム物理アドレスの上位ビットと、メモリアドレスの上位ビットとを対応付ける。また、トランスレーションテーブル１９１３のＩＤは、トランスレーションを識別するための識別子である。
【００７４】
例えば、グラニュールを４キロバイトとし、１回のアクセスサイズを８バイトとし、サウスブリッジコントローラ１８から、システム物理アドレスに間隔なく、リード／ライトリクエストが送信された場合を想定する。この場合には、リード／ライトリクエストに対応するトランスレーションテーブル１９１３のエンティティをトランスレーションバッファ１９１に格納しておくと、５１２回のアクセスで１個のエンティティが使用できる。
【００７５】
テーブルマネージャ１９２は、エンティティ抽出部１９２１，エンティティ登録部１９２２，テーブルクリア部１９２３及びアクセス検知部１９２４を備える。
【００７６】
テーブルマネージャ１９２のエンティティ抽出部１９２１は、トランスレーションバッファ１９１から抽出リクエストを受け取ると、テーブルメモリ１９３からエンティティを抽出する（図５の符号Ｃ５参照）。
【００７７】
すなわち、エンティティ抽出部１９２１は、トランスレーションテーブル１９３２に書き込まれた初期設定プログラムのエンティティを抽出する初期設定処理部の一例として機能する。また、エンティティ抽出部１９２１は、トランスレーションテーブル１９３２に書き込まれた第１の試験実行プログラムエンティティを抽出する試験実行処理部の一例としても機能する。
【００７８】
エンティティ抽出部１９２１は、テーブルメモリ１９３からリード応答のリードデータを受け取った際に、該当するエンティティが有するシステム物理アドレスの上位ビットと、当該リクエストのシステム物理アドレスの上位ビットとの比較を行なう。
【００７９】
エンティティ抽出部１９２１は、リクエストのシステム物理アドレスの上位ビットを有するテーブルエンティティがテーブルメモリ１９３において存在している場合には、トランスレーションバッファ１９１に対して、登録リクエストを送信する（図５の符号Ｃ４参照）。すなわち、エンティティ抽出部１９２１は、当該リクエストのシステム物理アドレスと、対応するメモリ本体１９５のメモリアドレスの上位ビットとを送る。
【００８０】
エンティティ登録部１９２２は、リクエストに対応するテーブルエンティティが存在しない場合には、テーブルメモリ１９３に対して、登録ライト処理を実行する（図５の符号Ｃ５参照）。すなわち、エンティティ登録部１９２２は、テーブルメモリ１９３に対して、新規のエンティティテーブルを登録する。また、エンティティ登録部１９２２は、登録リクエストとして、トランスレーションバッファ１９１に対してリクエストのシステム物理アドレスと対応するメモリ本体１９５のメモリアドレスの上位ビットとを送る（図５の符号Ｃ４参照）。
【００８１】
すなわち、エンティティ登録部１９２２は、初期設定プログラムのエンティティをテーブルメモリ１９３に書き込む初期設定処理部の一例として機能する。また、エンティティ登録部１９２２は、第１の試験実行プログラムのエンティティをテーブルメモリ１９３に書き込む試験実行処理部の一例としても機能する。
【００８２】
エンティティを登録及び抽出する際のメモリ本体１９５のメモリアドレスの上位ビットと、テーブルメモリ１９３のアドレスの決定及び使用方法とは、下記の（１）及び（２）の通りである。なお、テーブルメモリ１９３のアドレスには、レジスタ部１９６のエンティティカウンタ１９６１（後述）が使用される。
【００８３】
（１）エンティティの登録の際には、トランスレーションテーブル１９１３におけるメモリ本体１９５のメモリアドレスの上位ビットには、レジスタ部１９６のエンティティカウンタ１９６１（後述）の値が登録される。エンティティ登録部１９２２は、エンティティの登録が完了すると、レジスタ部１９６に対してエンティティカウンタ１９６１の値のインクリメントを指示する（図５の符号Ｃ６参照）。
【００８４】
（２）エンティティの抽出の際には、テーブルメモリ１９３のうち、使用されている領域の最大値がレジスタ部１９６のエンティティカウンタ１９６１（後述）の値となる。エンティティサイズは、１つのエンティティのバイト数であり、テーブルメモリ１９３の１ワードのバイト数が一致する。
【００８５】
テーブルマネージャ１９２における、テーブルクリア部１９２３の機能については図６の（４）等を用いて後述すると共に、アクセス検知部１９２４の機能については図６の（３）等を用いて後述する。
【００８６】
テーブルメモリ１９３は、テストナンバーテーブル１９３１及びトランスレーションテーブル１９３２を備える。テーブルメモリ１９３は、テーブルマネージャ１９２から登録ライトリクエストがあった場合に、テーブルエンティティをトランスレーションテーブル１９３２において当該ライトリクエストで指定されたライトアドレスに格納する。また、テーブルメモリ１９３は、テーブルマネージャ１９２から抽出リードリクエストがあった場合に、テーブルマネージャ１９２に対して、システム物理アドレス及びメモリアドレスにより、抽出リード応答を返す（図５の符号Ｃ７及びＣ８参照）。すなわち、テーブルメモリ１９３は、トランスレーションテーブル１９３２において当該抽出リードリクエストで指定されたリードアドレスのテーブルエンティティをテーブルマネージャ１９２へ返す。
【００８７】
テーブルメモリ１９３のトランスレーションテーブル１９３２は、トランスレーションバッファ１９１のトランスレーションテーブル１９１３と同様に、図６の（１）に示す構成を有する。すなわち、テーブルメモリ１９３のトランスレーションテーブル１９３２は、「リザーブ」，「システム物理アドレス上位ビット」，「メモリアドレス上位ビット」，「ＩＤ」及び「Ｖａｌｉｄ」の各領域を有する。
【００８８】
テーブルメモリ１９３のトランスレーションテーブル１９３２は、トランスレーションバッファ１９１のトランスレーションテーブル１９１３よりも記憶容量が大きい。
【００８９】
疑似メモリ１９がサウスブリッジコントローラ１８からリクエストを受信した際に、当該リクエストから抽出されたエンティティがトランスレーションバッファ１９１のトランスレーションテーブル１９１３において見つからなかった場合に、テーブルエンティティが登録されてよい。また、テストプログラムから、テーブルメモリ１９３のテストナンバーテーブル１９３１及びトランスレーションテーブル１９３２のエントリに対して直接にライトしてテーブルエンティティが作成されてもよい。
【００９０】
図６の（２）は、テストナンバーテーブル１９３１のエントリを例示する図である。
【００９１】
テストナンバーテーブル１９３１は、「リザーブ」，「テストナンバー」，「ＩＤ」及び「Ｖａｌｉｄ」の各領域を有する。テストナンバーテーブル１９３１は、テストナンバーとトランスレーションＩＤとを対応付ける。
【００９２】
トランスレーションＩＤは、テストプログラムの走行前に、テーブルマネージャ１９２によって、テストナンバーテーブル１９３１に対して、各テストナンバーに対応づけられて登録される。トランスレーションＩＤは、ユニークに設定されていればよく、任意の番号が割り当てられてよい。
【００９３】
アクセスコントローラ１９４は、トランスレーションバッファ１９１又はテーブルマネージャ１９２からリード／ライトリクエストを受け付け、当該リクエストが有するメモリ本体１９５のメモリアドレスに対して、リード／ライトアクセスを行なう（図５の符号Ｃ９参照）。
【００９４】
アクセスコントローラ１９４は、メモリ本体１９５からコンプリーションを受け取ると（符号Ｃ１０参照）、サウスブリッジコントローラ１８へコンプリーションを送信する（図５の符号Ｃ１１参照）。
【００９５】
アクセスコントローラ１９４とメモリ本体１９５とは、メモリアドレスによってアクセスが行なわれる（符号Ｃ１２参照）。メモリアドレスの上位ビット及びシステム物理アドレスの下位ビットのビット位置については、システムが有するアドレス範囲と、メモリ本体１９５が有するアドレス範囲と、グラニュールとに基づいて決定されてよい。
【００９６】
メモリ本体１９５は、メモリ領域１９５１を有する。図５に示す例において、メモリ領域１９５１は、「初期設定」，「テストナンバー」，「試験領域＃０」，「試験領域＃１」及び「試験領域＃２」に分けられる。
【００９７】
メモリ本体１９５は、アクセスコントローラ１９４からライトリクエストを受け付けた場合には、ライトデータを指定されたアドレスに格納してコンプリーションをアクセスコントローラ１９４へ返す（図５の符号Ｃ１０参照）。また、メモリ本体１９５は、リードリクエストを受け付けた場合には、アドレスのリードデータと共に、コンプリーションをアクセスコントローラ１９４へ返す（図５の符号Ｃ１０参照）。
【００９８】
レジスタ部１９６は、エンティティカウンタ１９６１，テストナンバーアドレスレジスタ１９６２，トランスレーションクリアレジスタ１９６３及びあふれ検知部１９６４を備える。
【００９９】
図６の（３）は、テストナンバーアドレスレジスタ１９６２の構成を例示する図である。
【０１００】
テストナンバーアドレスレジスタ１９６２は、「リザーブ」及び「システム物理アドレス」の各領域を有する。
【０１０１】
予めテストナンバーを格納するシステム物理アドレスが、エミュレーション環境１５により、テストナンバーアドレスレジスタ１９６２に設定されている（図５の符号Ｃ１３参照）。設定後に、テストプログラムがテストナンバーを疑似メモリ１９に格納した際に、対応するアドレスをテーブルマネージャ１９２のアクセス検知部１９２４が監視することでテストナンバーが更新されたことが検知される（図５の符号Ｃ１４参照）。
【０１０２】
また、テーブルマネージャ１９２のアクセス検知部１９２４は、テストナンバーとトランスレーションテーブル１９３２のＩＤとを対応付けさせるテストナンバーテーブル１９３１によって、更新前のテストナンバーからトランスレーションのＩＤを取得する。アクセス検知部１９２４は、更新前のテストナンバーと対応するトランスレーションのＩＤを保持する。そして、アクセス検知部１９２４は、テストナンバーの更新があったことをテーブルマネージャ１９２のテーブルクリア部１９２３に通知する。
【０１０３】
テーブルマネージャ１９２のテーブルクリア部１９２３は、該当するトランスレーションのＩＤに対して、トランスレーションテーブル１９３２のクリアを実行することにより、実施した試験で使用した領域に限ってクリアすることができる。
【０１０４】
図６の（４）は、トランスレーションクリアレジスタ１９６３の構成を例示する図である。
【０１０５】
トランスレーションクリアレジスタ１９６３は、「リザーブ」及び「テストナンバー」の各領域を有する。
【０１０６】
テストプログラムからトランスレーションクリアレジスタ１９６３に対してクリアするテストナンバーを指定してライトすることによって、トランスレーションテーブル１９３２がクリアされてもよい（図５の符号Ｃ１５参照）。
【０１０７】
テーブルマネージャ１９２のテーブルクリア部１９２３は、テーブルメモリ１９３におけるアドレスのうち０から最大値までの領域をリードする。そして、テーブルクリア部１９２３は、リードした領域のうち、エントリのＩＤがクリアで指定されたＩＤとなっているアドレスに対して全フィールドを０ｘ０の値でライトすることにより、クリアライトを実行する（図５の符号Ｃ５参照）。
【０１０８】
すなわち、テーブルクリア部１９２３は、テーブルメモリ１９３のトランスレーションテーブル１９３２に書き込まれたエンティティのうち、第１の試験実行プログラムのエンティティをトランスレーションテーブル１９３２から削除する削除処理部の一例として機能する。
【０１０９】
クリアライトが実行されたアドレスの領域では、ｖａｌｉｄ＝０に設定される。
【０１１０】
図７の（１）は、エンティティカウンタ１９６１の構成を例示する図である。
【０１１１】
エンティティカウンタ１９６１は、「リザーブ」及び「エンティティカウンタ」の各領域を有する。エンティティカウンタ１９６１は、テーブルメモリ１９３に保持されているエンティティの総数を示し、テーブルマネージャ１９２によってテーブルメモリ１９３にエンティティを登録した際にインクリメントされる。また、エンティティカウンタ１９６１は、トランスレーションクリアレジスタ１９６３によって値が変更される。
【０１１２】
エンティティカウンタ１９６１には、トランスレーションテーブル１９３２をクリアする際に指定されたＩＤのエンティティを格納しているテーブルメモリ１９３の領域のうち、最小のアドレスが保持されてよい。最小のアドレスがエンティティカウンタ１９６１の値よりも小さい場合に、エンティティカウンタ１９６１の値が最小のアドレスに変更される。
【０１１３】
トランスレーションバッファ１９１については、クリアが実行された際に、トランスレーションバッファ１９１のトランスレーションテーブル１９１３における全エントリについて、全フィールドを０ｘ０の値でライトして、ｖａｌｉｄ＝０に設定される。
【０１１４】
以上により、トランスレーションテーブル１９１３及び１９３２において指定された領域のクリアを実行できる。
【０１１５】
テーブルマネージャ１９２のエンティティ登録部１９２２は、テーブルメモリ１９３のトランスレーションテーブル１９３２において第１の試験実行プログラムのエンティティが削除された領域に、第２の試験実行プログラムのエンティティを書き込む。テーブルマネージャ１９２のエンティティ抽出部１９２１は、トランスレーションテーブル１９３２に書き込まれた第２の試験実行プログラムのエンティティを抽出する。
【０１１６】
あふれ検知部１９６４は、エンティティカウンタ１９６１の値を監視し、エンティティカウンタ１９６１の値がテーブルメモリ１９３のエントリ数を超えた場合に、メモリ容量のあふれを検知する。あふれ検知部１９６４は、あふれを検知した場合に、エミュレーション環境１５に対して、信号線又はパケットにより、あふれの発生を通知する（図５の符号Ｃ１６参照）。
【０１１７】
すなわち、あふれ検知部１９６４は、テーブルメモリ１９３のトランスレーションテーブル１９３２におけるあふれを検知して、第１の試験実行プログラム及び第２の試験実行プログラムの実行を停止させる。
【０１１８】
図７の（２）は、トランスレーショングラニュールレジスタの構成を例示する図である。
【０１１９】
レジスタ部１９６は、トランスレーショングラニュールレジスタを更に備えてよい（図５には不図示）。
【０１２０】
図７の（２）に示すように、トランスレーショングラニュールレジスタは、「リザーブ」及び「ｇｒａｎｕｌｅ」の各領域を有する。
【０１２１】
トランスレーショングラニュールレジスタは、１つのエンティティでアクセスできるアドレス範囲を示す。トランスレーショングラニュールレジスタの「ｇｒａｎｕｌｅ」に値がライトされることによって、グラニュールが指定される。
【０１２２】
例えば、「ｇｒａｎｕｌｅ」の値が、０ｘ０の場合は４ＫＢを示し、０ｘ１の場合は１６ＫＢを示し、０ｘ２の場合は６４ＫＢを示す。
【０１２３】
図７の（３）は、メモリアドレスの構成を示す図である。
【０１２４】
図７の（３）に示すように、メモリアドレスは、「メモリアドレス上位ビット」及び「システム物理アドレス下位ビット」の各領域を含む。
【０１２５】
前述したアクセスコントローラ１９４とメモリ本体１９５との間のアクセスは、図７の（３）に示すメモリアドレスを指定することによって実施される。
【０１２６】
図８は、図３に示したエミュレーション装置１におけるテストプログラムの走行時間の短縮を説明する図である。具体的には、図８の（１）は、分割したテストプログラムを走行した場合の合計時間を例示する図である。また、図８の（２）はトランスレーションテーブル１９１３及び１９３２の試験領域に限ってクリアした場合の走行時間を例示する図である。
【０１２７】
疑似メモリ１９の或る領域に試験のための初期設定を行ない、複数の試験で別々のメモリ領域を使用する場合において、試験に使用した領域に限ってトランスレーションテーブル１９１３及び１９３２をクリアする。これにより、初期設定が完了した直後の状態から再度別の試験を行なうことができる。このため、図８の（１）及び（２）に示すように、初期設定の走行を繰り返さないようにすることにより、初期設定と各試験とを合計した走行時間を短縮できる。
【０１２８】
〔Ｂ−２〕動作例
図３に示したエミュレーション装置１におけるトランスレーションテーブル１９３２の試験領域のクリア処理の概略を、図９に示すフローチャート（ステップＳ１〜Ｓ５）に従って説明する。
【０１２９】
テーブルマネージャ１９２は、テストナンバーテーブル１９３１の全エンティティを登録する（ステップＳ１）。
【０１３０】
テーブルマネージャ１９２のアクセス検知部１９２４は、所定のシステム物理アドレスに対して、テストナンバーのライト発生を検知する（ステップＳ２）。
【０１３１】
テーブルマネージャ１９２は、テストナンバーテーブル１９３１からテストナンバーに対応するトランスレーションＩＤを抽出する（ステップＳ３）。
【０１３２】
テーブルマネージャ１９２のテーブルクリア部１９２３は、前回まで保持していたテストナンバーに対応するトランスレーションＩＤについて、テーブルメモリ１９３のトランスレーションテーブル１９３２のクリアを実行する（ステップＳ４）。
【０１３３】
エミュレーション環境１５によってテストプログラムを走行させ、ユーザは試験結果を確認する（ステップＳ５）。そして、処理は終了する。
【０１３４】
なお、ステップＳ２〜Ｓ５の処理は、全ての試験実行プログラムが完了するまで、繰り返し実行される。
【０１３５】
次に、図３に示したエミュレーション装置１におけるトランスレーションテーブル１９３２の試験領域のクリア処理の詳細を、図１０及び図１１に示すフローチャート（ステップＳ１１〜Ｓ２５）に従って説明する。なお、図１０にはステップＳ１１〜Ｓ１８における処理を示し、図１１にはステップＳ１９〜Ｓ２５における処理を示す。
【０１３６】
エミュレーション環境１５によって、テストナンバーアドレスレジスタ１９６２に所定のシステム物理アドレスを設定する（図１０のステップＳ１１）。
【０１３７】
テーブルマネージャ１９２は、テストナンバーテーブル１９３１の全エンティティを登録する（図１０のステップＳ１２）。
【０１３８】
エミュレーション環境１５において、テストプログラムのうち、最初の初期設定部分を走行し、メモリ本体１９５に対する初期設定を行なう（図１０のステップＳ１３）。
【０１３９】
疑似メモリ１９は、テストナンバーＮを所定のシステム物理アドレスにライトするリクエストを、サウスブリッジコントローラ１８から受信する（図１０のステップＳ１４）。
【０１４０】
テーブルマネージャ１９２のアクセス検知部１９２４は、所定のシステム物理アドレスに対してテストナンバーのライト発生を検知する（図１０のステップＳ１５）。
【０１４１】
テーブルマネージャ１９２は、テストナンバーテーブル１９３１からテストナンバーに対応するトランスレーションＩＤを抽出する（図１０のステップＳ１６）。
【０１４２】
テーブルマネージャ１９２のテーブルクリア部１９２３は、走行させようとしている試験が最初の試験であるかを判定する（図１０のステップＳ１７）。
【０１４３】
最初の試験である場合には（図１０のステップＳ１７のＹｅｓルート参照）、処理は図１１のステップＳ１９へ進む。
【０１４４】
一方、最初の試験でない場合には（図１０のステップＳ１７のＮｏルート参照）、図１０のステップＳ１８へ進む。すなわち、テーブルクリア部１９２３は、前回まで保持していたテストナンバーに対応するトランスレーションＩＤについて、テーブルメモリ１９３のトランスレーションテーブル１９３２のクリアを実行する（図１０のステップＳ１８）。
【０１４５】
テーブルマネージャ１９２は、トランスレーションテーブル１９３２からテストナンバーＮに対するメモリアドレスを抽出する（図１１のステップＳ１９）。
【０１４６】
テーブルマネージャ１９２のエンティティ登録部１９２２は、トランスレーションテーブル１９３２においてテストナンバーＮのエンティティが存在するかを判定する（図１１のステップＳ２０）。
【０１４７】
エンティティが存在する場合には（図１１のステップＳ２０のＹｅｓルート参照）、処理は図１１のステップＳ２２へ進む。
【０１４８】
一方、エンティティが存在しない場合には（図１１のステップＳ２０のＮｏルート参照）、エンティティ登録部１９２２は、トランスレーションテーブル１９３２に新規エンティティを登録する（図１１のステップＳ２１）。
【０１４９】
アクセスコントローラ１９４は、テストナンバーＮを変換後のメモリアドレスでメモリ本体１９５にライトする（図１１のステップＳ２２）。
【０１５０】
疑似メモリ１９は、メモリ本体１９５にアクセスする試験用リクエストを、サウスブリッジコントローラ１８から受信する（図１１のステップＳ２３）。
【０１５１】
テーブルマネージャ１９２は、トランスレーションバッファ１９１のテーブルマネージャ１９２からエンティティを抽出し、システム物理アドレスからメモリアドレスに変換してメモリ本体１９５にアクセスする（図１１のステップＳ２４）。
【０１５２】
なお、図１０のステップＳ１４から図１１のステップＳ２４までの処理は、テストナンバーＮをインクリメントして、全ての試験が完了するまで繰り返し実行される。
【０１５３】
ユーザは、期待値と結果値との比較、及び、各ユニットやエミュレーション環境１５が正常であること等を確認し、プログラムカウンタ（ＰＣ）が所定の値となり、テストプログラムが終了する（図１１のステップＳ２５）。そして、処理は終了する。
【０１５４】
次に、図３に示したエミュレーション装置１におけるトランスレーションバッファ１９１によるアドレスのトランスレーション処理を、図１２に示すフローチャート（ステップＳ３１〜Ｓ３６）に従って説明する。
【０１５５】
疑似メモリ１９は、メモリ本体１９５にアクセスする試験用リクエストをサウスブリッジコントローラ１８から受信する（ステップＳ３１）。
【０１５６】
トランスレーションバッファ１９１のエンティティ抽出部１９１１は、トランスレーションバッファ１９１が内部に有する小容量のトランスレーションテーブル１９１３から、対応するエンティティを抽出する（ステップＳ３２）。
【０１５７】
エンティティ抽出部１９１１は、対応するエンティティが存在するかを判定する（ステップＳ３３）。
【０１５８】
対応するエンティティが存在する場合には（ステップＳ３３のＹｅｓルート参照）、アクセスコントローラ１９４は、変換後のメモリアドレスでメモリ本体１９５にアクセスする（ステップＳ３４）。そして、処理は終了する。
【０１５９】
一方、エンティティが存在しない場合には（ステップＳ３３のＮｏルート参照）、テーブルマネージャ１９２は、テーブルメモリ１９３のトランスレーションテーブル１９３２からエンティティを抽出する（ステップＳ３５）。
【０１６０】
テーブルマネージャ１９２は、エンティティをトランスレーションバッファ１９１のエントリに登録することを要求する（ステップＳ３６）。そして、処理はステップＳ３４へ移行する。
【０１６１】
次に、図３に示したエミュレーション装置１におけるあふれ検知処理を、図１３に示すフローチャート（ステップＳ４１〜Ｓ４３）に従って説明する。
【０１６２】
レジスタ部１９６のあふれ検知部１９６４は、エンティティカウンタ１９６１の値が上限を超えたことを検出し、トランスレーションテーブル１９３２のあふれを検知する（ステップＳ４１）。
【０１６３】
あふれ検知部１９６４は、エミュレーション環境１５にあふれの検知を通知する（ステップＳ４２）。
【０１６４】
エミュレーション環境１５において、エミュレーションを終了させる（ステップＳ４３）。そして、処理は終了する。
【０１６５】
〔Ｂ−３〕効果
上述した実施形態の一例におけるエミュレーション装置１によれば、例えば、以下の作用効果を奏することができる。
【０１６６】
テーブルマネージャ１９２のエンティティ抽出部１９２１は、トランスレーションテーブル１９３２に書き込まれた初期設定プログラムのエンティティを抽出する。そして、エミュレーション環境１５において、トランスレーションテーブル１９３２から抽出された初期設定プログラムのエンティティを使用して初期設定プログラムを実行する。
【０１６７】
テーブルマネージャ１９２のエンティティ抽出部１９２１は、トランスレーションテーブル１９３２に書き込まれた第１の試験実行プログラムエンティティを抽出する。そして、エミュレーション環境１５において、トランスレーションテーブル１９３２から抽出された第１の試験実行プログラムのエンティティを使用して第１の試験実行プログラムを実行する。
【０１６８】
テーブルマネージャ１９２のテーブルクリア部１９２３は、テーブルメモリ１９３のトランスレーションテーブル１９３２に書き込まれたエンティティのうち、第１の試験実行プログラムのエンティティをトランスレーションテーブル１９３２から削除する。
【０１６９】
テーブルマネージャ１９２のエンティティ登録部１９２２は、テーブルメモリ１９３のトランスレーションテーブル１９３２において第１の試験実行プログラムのエンティティが削除された領域に、第２の試験実行プログラムのエンティティを書き込む。テーブルマネージャ１９２のエンティティ抽出部１９２１は、トランスレーションテーブル１９３２に書き込まれた第２の試験実行プログラムのエンティティを抽出する。そして、エミュレーション環境１５において、トランスレーションテーブル１９３２から抽出された第２の試験実行プログラムのエンティティを使用して第２の試験実行プログラムを実行する。
【０１７０】
これらにより、エミュレーションの走行時間を短縮させることができる。
【０１７１】
具体的には、初期設定領域と複数の試験領域とが使用するメモリ領域がメモリ本体１９５の容量を超える場合において、初期設定領域と最初の試験領域とを走行した後に、走行した試験領域のエンティティをトランスレーションテーブル１９３２からクリアする。このため、テストプログラムを分割することなく、且つ、テストプログラムにクリアを起動する機能追加する等の修正を行なうことなく、次の試験領域を走行できる。
【０１７２】
また、走行した試験領域に限ってトランスレーションテーブル１９３２のエンティティをクリアすることにより、初期設定が完了した直後の状態から次の試験を走行することができる。このため、初期設定の走行を繰り返さないようにすることにより、初期設定の各試験との合計走行時間を短縮できる。
【０１７３】
更に、テストプログラムに含まれる試験毎に、分割した単位でＩＤを割り当てて、単一の試験が完了する毎にトランスレーションテーブル１９３２のエンティティをクリアしているため、メモリ本体１９５の容量のあふれを防止できる。このため、メモリ本体１９５の容量を超えないようにテストプログラムを複数に分割することなく、テストプログラムを走行できる。
【０１７４】
レジスタ部１９６のあふれ検知部１９６４は、テーブルメモリ１９３のトランスレーションテーブル１９３２におけるあふれを検知して、第１の試験実行プログラム及び第２の試験実行プログラムの実行を停止させる。
【０１７５】
これにより、メモリ本体１９５の容量のあふれの発生を防止できる。
【０１７６】
トランスレーションバッファ１９１において、テーブルメモリ１９３のトランスレーションテーブル１９３２よりも小さい記憶領域を有するトランスレーションテーブル１９１３を備える。トランスレーションバッファ１９１のエンティティ抽出部１９１１は、トランスレーションテーブル１９１３において第３の試験実行プログラムのエンティティが記憶されているかを判定する。そして、エンティティ抽出部１９１１は、第３の試験実行プログラムのエンティティが記憶されている場合には、トランスレーションテーブル１９１３に記憶されている第３の試験実行プログラムのエンティティを抽出する。そして、エミュレーション環境１５において、抽出された第３の試験実行プログラムのエンティティを使用して第３の試験実行プログラムを実行する。
【０１７７】
これにより、トランスレーションバッファ１９１にエンティティが登録されている試験実行プログラムのメモリ本体１９５からの読み出し時間を短縮できる。
【０１７８】
トランスレーションバッファ１９１のエンティティ抽出部１９１１は、トランスレーションバッファ１９１のトランスレーションテーブル１９１３において第３の試験実行プログラムのエンティティが記憶されているかを判定する。エンティティ抽出部１９１１は、第３の試験実行プログラムのエンティティが記憶されていない場合には、第３の試験実行プログラムのエンティティをテーブルメモリ１９３のトランスレーションテーブル１９３２から抽出する。トランスレーションバッファ１９１のエンティティ登録部１９１２は、抽出した第３の試験実行プログラムのエンティティをトランスレーションテーブル１９１３に書き込む。エンティティ抽出部１９１１は、トランスレーションテーブル１９１３に書き込まれた第３の試験実行プログラムのエンティティを抽出する。そして、エミュレーション環境１５において、抽出された第３の試験実行プログラムのエンティティを使用して第３の試験実行プログラムを実行する。
【０１７９】
これにより、トランスレーションバッファ１９１において次に走行する試験実行プログラムのエンティティが登録されていない場合でも、テーブルメモリ１９３から次に走行する試験実行プログラムのエンティティを抽出できる。
【０１８０】
〔Ｃ〕その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
上述した実施形態の一例では図４においてサウスブリッジコントローラ１８に接続される疑似メモリ１９のエミュレーションについて説明したが、これに限定されるものではない。図４においてメモリコントローラ１３に接続される疑似メモリ１４についても、上述した実施形態の一例と同様のエミュレーションを実施でき、上述した実施形態の一例と同様の効果を奏することができる。
【０１８１】
〔Ｄ〕付記
以上の実施形態及び変形例に関し、さらに以下の付記を開示する。
【０１８２】
（付記１）
第１の記憶部に書き込んだ初期設定プログラムの識別情報を使用して初期設定プログラムを実行する初期設定処理部と、
前記第１の記憶部に書き込んだ第１の試験実行プログラムの識別情報を使用して第１の試験実行プログラムを実行する試験実行処理部と、
前記第１の記憶部に書き込まれた識別情報のうち、前記第１の試験実行プログラムの識別情報を前記第１の記憶部から削除する削除処理部と、
を備え、
前記試験実行処理部は、前記削除処理部が削除した前記第１の試験実行プログラムの識別情報の領域に、第２の試験実行プログラムの識別情報を書き込み、前記第２の試験実行プログラムの識別情報を使用して第２の試験実行プログラムを実行する、
エミュレーション装置。
【０１８３】
（付記２）
前記第１の記憶部におけるデータのあふれを検知して、前記試験実行処理部による、前記第１の試験実行プログラムの実行又は前記第２の試験実行プログラムの実行を停止させるあふれ検知部
を更に備える、付記１に記載のエミュレーション装置。
【０１８４】
（付記３）
前記第１の記憶部よりも小さい記憶領域を有する第２の記憶部を更に備え、
前記試験実行処理部は、前記第２の記憶部において第３の試験実行プログラムの識別情報が記憶されている場合、前記第３の試験実行プログラムの識別情報を使用して第３の試験実行プログラムを実行する、
付記１又は２に記載のエミュレーション装置。
【０１８５】
（付記４）
前記試験実行処理部は、前記第２の記憶部において前記第３の試験実行プログラムの識別情報が記憶されていない場合、前記第３の試験実行プログラムの識別情報を前記第１の記憶部から抽出して前記第２の記憶部に書き込み、前記第３の試験実行プログラムの識別情報を使用して前記第３の試験実行プログラムを実行する、
付記３に記載のエミュレーション装置。
【０１８６】
（付記５）
コンピュータが、
第１の記憶部に書き込んだ初期設定プログラムの識別情報を使用して初期設定プログラムを実行し、
前記第１の記憶部に書き込んだ第１の試験実行プログラムの識別情報を使用して第１の試験実行プログラムを実行し、
前記第１の記憶部に書き込まれた識別情報のうち、前記第１の試験実行プログラムの識別情報を前記第１の記憶部から削除し、
削除された前記第１の試験実行プログラムの識別情報の領域に、第２の試験実行プログラムの識別情報を書き込み、前記第２の試験実行プログラムの識別情報を使用して第２の試験実行プログラムを実行する、
エミュレーション方法。
【０１８７】
（付記６）
前記コンピュータが、
前記第１の記憶部におけるデータのあふれを検知して、前記試験実行処理部による、前記第１の試験実行プログラムの実行又は前記第２の試験実行プログラムの実行を停止させる、
付記５に記載のエミュレーション方法。
【０１８８】
（付記７）
前記コンピュータが、
前記第１の記憶部よりも小さい記憶領域を有する第２の記憶部において第３の試験実行プログラムの識別情報が記憶されている場合、前記第３の試験実行プログラムの識別情報を使用して第３の試験実行プログラムを実行する、
付記５又は６に記載のエミュレーション方法。
【０１８９】
（付記８）
前記コンピュータが、
前記第２の記憶部において前記第３の試験実行プログラムの識別情報が記憶されていない場合、前記第３の試験実行プログラムの識別情報を前記第１の記憶部から抽出して前記第２の記憶部に書き込み、前記第３の試験実行プログラムの識別情報を使用して前記第３の試験実行プログラムを実行する、
付記７に記載のエミュレーション方法。
【０１９０】
（付記９）
コンピュータに、
第１の記憶部に書き込んだ初期設定プログラムの識別情報を使用して初期設定プログラムを実行させ、
前記第１の記憶部に書き込んだ第１の試験実行プログラムの識別情報を使用して第１の試験実行プログラムを実行させ、
前記第１の記憶部に書き込まれた識別情報のうち、前記第１の試験実行プログラムの識別情報を前記第１の記憶部から削除させ、
削除された前記第１の試験実行プログラムの識別情報の領域に、第２の試験実行プログラムの識別情報を書き込み、前記第２の試験実行プログラムの識別情報を使用して第２の試験実行プログラムを実行させる、
エミュレーションプログラム。
【０１９１】
（付記１０）
前記コンピュータに、
前記第１の記憶部におけるデータのあふれを検知して、前記試験実行処理部による、前記第１の試験実行プログラムの実行又は前記第２の試験実行プログラムの実行を停止させる、
付記９に記載のエミュレーションプログラム。
【０１９２】
（付記１１）
前記コンピュータに、
前記第１の記憶部よりも小さい記憶領域を有する第２の記憶部において第３の試験実行プログラムの識別情報が記憶されている場合、前記第３の試験実行プログラムの識別情報を使用して第３の試験実行プログラムを実行させる、
付記９又は１０に記載のエミュレーションプログラム。
【０１９３】
（付記１２）
前記コンピュータに、
前記第２の記憶部において前記第３の試験実行プログラムの識別情報が記憶されていない場合、前記第３の試験実行プログラムの識別情報を前記第１の記憶部から抽出して前記第２の記憶部に書き込み、前記第３の試験実行プログラムの識別情報を使用して前記第３の試験実行プログラムを実行させる、
付記１１に記載のエミュレーションプログラム。
【符号の説明】
【０１９４】
１        ：エミュレーション装置
２        ：ＳｏＣ
３，４    ：メモリ
５        ：ディスク／ＰＣＩスイッチ
１０      ：ＣＰＵサブシステム
１１      ：ＣＰＵ
１２      ：システムコントローラ
１３      ：メモリコントローラ
１４，１９：疑似メモリ
１５      ：エミュレーション環境
１６      ：ＩＯコントローラ
１７      ：ＩＯデバイス
１８      ：サウスブリッジコントローラ
２０      ：アプリケーション固有コンポーネント
３０      ：モデム
４０      ：ＳｏＣ相互接続ファブリック
１００    ：ＣＰＵ
１０１    ：コア
１０２    ：Ｌ２キャッシュ
１０３    ：キャッシュコヒーレントファブリック
１９１    ：トランスレーションバッファ
１９２    ：テーブルマネージャ
１９３    ：テーブルメモリ
１９４    ：アクセスコントローラ
１９５    ：メモリ本体
１９６    ：レジスタ部
５０１    ：ＤＤＲ３
５０２    ：ＵＳＢ３．０
５０３    ：ＰＣＩｅ  Ｇｅｎ  ２／３
５０４    ：Ｅｔｈｅｒｎｅｔ
５０５    ：ＰＨＹ
６０１    ：ＨＤＭＩ
６０２    ：ＳＡＴＡ
６０３    ：ＭＩＰＩ
６０４    ：ＷＬＡＮ
６０５    ：ＬＴＥ
７０１    ：ＧＰＩＯ
７０２    ：ディスプレイ
７０３    ：ＰＭＵ
７０４    ：ＭＩＰＩ
７０５    ：ＪＴＡＧ
７０６    ：ＵＡＲＴ
７０７    ：ＩＮＴＣ
７０８    ：Ｉ２Ｃ
７０９    ：ＳＰＩ
７１０    ：タイマ
７１１    ：サウスブリッジコントローラ
１９１１，１９２１  ：エンティティ抽出部
１９１２，１９２２  ：エンティティ登録部
１９１３，１９３２  ：トランスレーションテーブル
１９２３  ：テーブルクリア部
１９２４  ：アクセス検知部
１９３１  ：テストナンバーテーブル
１９５１  ：メモリ領域
１９６１  ：エンティティカウンタ
１９６２  ：テストナンバーアドレスレジスタ
１９６３  ：トランスレーションクリアレジスタ
１９６４  ：あふれ検知部
【図１】
2019160025.tif 000003
【図２】
2019160025.tif 000004
【図３】
2019160025.tif 000005
【図４】
2019160025.tif 000006
【図５】
2019160025.tif 000007
【図６】
2019160025.tif 000008
【図７】
2019160025.tif 000009
【図８】
2019160025.tif 000010
【図９】
2019160025.tif 000011
【図１０】
2019160025.tif 000012
【図１１】
2019160025.tif 000013
【図１２】
2019160025.tif 000014
【図１３】
2019160025.tif 000015