JP3938580B2 - 情報処理装置、情報処理方法、半導体装置、コンピュータプログラム - Google Patents

情報処理装置、情報処理方法、半導体装置、コンピュータプログラム Download PDF

Info

Publication number
JP3938580B2
JP3938580B2 JP2004369637A JP2004369637A JP3938580B2 JP 3938580 B2 JP3938580 B2 JP 3938580B2 JP 2004369637 A JP2004369637 A JP 2004369637A JP 2004369637 A JP2004369637 A JP 2004369637A JP 3938580 B2 JP3938580 B2 JP 3938580B2
Authority
JP
Japan
Prior art keywords
processor
processing
instruction
predetermined
emulation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2004369637A
Other languages
English (en)
Other versions
JP2006178646A (ja
Inventor
彰彦 菅原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Priority to JP2004369637A priority Critical patent/JP3938580B2/ja
Priority to EP05027750A priority patent/EP1674989B1/en
Priority to US11/305,114 priority patent/US7818162B2/en
Priority to DE602005019019T priority patent/DE602005019019D1/de
Priority to CNA2005101338073A priority patent/CN1794168A/zh
Priority to KR1020050126663A priority patent/KR20060071344A/ko
Publication of JP2006178646A publication Critical patent/JP2006178646A/ja
Application granted granted Critical
Publication of JP3938580B2 publication Critical patent/JP3938580B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は、情報処理装置に関し、特に、複数のプロセッサを用いてエミュレーション等の処理を実行するための情報処理装置に関する。
汎用のサーバ装置や高性能のパーソナルコンピュータ等の情報処理装置には、複数のプロセッサを有するマルチプロセッサシステムのものがある。マルチプロセッサシステムの情報処理装置では、通常、複数のプロセッサによる分散処理が行われる。分散処理では、各プロセッサが、最適化されて動作するように構成される。
また例えば、ホストプロセッサとコプロセッサとを備えたコプロセッサシステムも、複数のプロセッサを用いるという意味では、広義のマルチプロセッサといえる。コプロセッサは、通常、特定の処理に特化して構成されており、ホストプロセッサの性能を強化するために用いられる。ホストプロセッサとコプロセッサとは、短時間で大量のデータの送受信が可能な専用のバスで接続(コプロセッサ接続)されているので、コプロセッサシステムは、細かなタイミング制御を必要とするようなデータ処理に向いている。
このようなマルチプロセッサを用いてエミュレーションを行うことがある。エミュレーションを行うエミュレータの基本的な機能は、アプリケーションソフトウエアの実行が本来的に予定された情報処理装置の実行環境を他の情報処理装置上に形成するものであり、ソフトウエア、ハードウエア、あるいはこれらの組合せによって実現される。エミュレーションを行う情報処理装置のプロセッサは、エミュレーション時に、アプリケーションソフトウエアが本来実行される情報処理装置のプロセッサ(以下、「ターゲットプロセッサ」という。)と同等の機能が形成され、当該アプリケーションソフトウエアを実行することになる。この場合、プロセッサはエミュレータとなる。
マルチプロセッサによりエミュレーションを行う場合には、エミュレーション専用のプロセッサをエミュレータとして情報処理装置内に設けることがある。しかしこの場合、エミュレーション専用のプロセッサを新たに開発しなければならず、コスト的にも、また開発期間がかかるという点においても、あまり現実的ではない。さらに、情報処理装置に接続される周辺機器についてもエミュレーションが必要となり、どの程度のプロセッサの能力が必要かを開発段階で知ることが困難である。
一般に、エミュレーションの方式は、アプリケーションソフトウエアを構成する命令(以下、「ターゲットプロセッサ命令」という。)についての処理を、複数まとめて実行するか、1つずつ順次実行するかにより、コンパイル方式とインタプリタ方式とに分けられる。
コンパイル方式は、複数の命令からなる命令ブロックを1つの単位として変換し、命令ブロック単位で処理を実行することで、繰り返し実行することが多い処理に対して高い性能を実現できる。しかしコンパイル方式では、エミュレータが必要とするメモリ容量が大きくなり、また自己書き換えコードへの対処が難しい。さらに、繰り返し実行の頻度によって性能のばらつきが大きいためタイミング制御が難しい、等の問題がある。
インタプリタ方式は、1つの命令毎に変換するため、自己書き換えコードへの対応がコンパイル方式よりも容易であり、性能のバラツキも少なくタイミング制御も容易である。そのために、インタプリタ方式は、リアルタイムシステム用のプロセッサのエミュレーションに向いており、高い互換性を期待できる。またエミュレータが必要とするメモリ容量がコンパイル方式と比較して少なくすむ。しかしインタプリタ方式は、コンパイル方式と比較して、処理速度等の性能が、経験的に1/2〜1/3程度であるという問題がある。
インタプリタ方式のこのような問題を解決するためには、エミュレーションを行うプロセッサをコンパイル方式で用いるものよりも2〜3倍高速にする必要がある。しかし、実際にはそれほど高速のプロセッサが存在しなかったり、存在する場合でもコストが高かったり、消費電力が大きかったり等の問題を伴うことが多い。
また、リアルタイムシステム用のプロセッサエミュレーションで実現する場合には、論理的に正しい結果を得るのみならず、処理のタイミングを合わせなければ高い互換性を保証することができない。
本発明は、複数のプロセッサにより協働で処理を行う情報処理装置、例えば複数のプロセッサにより協働でエミュレーションを行う情報処理装置を提供することを課題とする。
本発明は、他に、インタプリタ方式によるエミュレーションの上記のような問題を解決するものであり、コンパイル方式のエミュレーションで要求される程度の性能を持つプロセッサを用いて、要求される性能のインタプリタ方式のエミュレーションを可能にする情報処理装置を提供することを課題とする。
以上の課題を解決する本発明の情報処理装置は、所定の命令を取り込む第1プロセッサと、前記第1プロセッサからの指示により所定の処理を実行する第2プロセッサと、を備えている。前記第1プロセッサは、前記所定の命令に応じて前記第2プロセッサに前記所定の処理の実行を指示するように構成されている。前記第2プロセッサは、前記第1プロセッサから指示された前記所定の処理が実行可能であるか否かを判断して、実行不可能である場合に、その旨を前記第1プロセッサに通知する判断手段と、実行可能である場合に、前記所定の処理を実行する第2処理手段と、を有している。前記第1プロセッサは、前記第2プロセッサから前記通知があると前記所定の処理を実行するように構成される。この情報処理装置は、前記第1プロセッサと前記第2プロセッサとにより協働で前記命令に応じた処理を実行するように構成されている。
このような本発明の情報処理装置は、第1プロセッサと第2プロセッサとが協働で処理(例えば、エミュレーション)を行うようになっている。そのために、例えば第1プロセッサがコンパイル方式のエミュレーションで要求される程度の性能しか持たない場合でも、インタプリタ方式のエミュレーションを行うことができる。
前記第1プロセッサは、例えば、前記所定の命令に応じた処理を実行可能な第1処理手段と、前記所定の命令が前記第2プロセッサで処理すべき命令であるか否かを判断して、前記所定の命令が前記第2プロセッサで処理すべき命令でない場合に、前記第1処理手段にこの命令に応じた処理を実行させるとともに、前記所定の命令が前記第2プロセッサで処理すべき命令である場合に、前記第2プロセッサに前記所定の処理の実行を指示する制御手段と、を備えて構成すればよい。このような構成において前記制御手段は、前記第2プロセッサから前記通知があると、前記第1処理手段に、前記所定の処理を実行させる。
第2プロセッサで処理が実行可能か否かは、例えば以下のような構成により判断できるようになる。この構成では、前記第2プロセッサが、前記第2プロセッサで実行可能な処理を表すテーブルを保持している。前記判断手段は、このテーブルを参照することで、前記第1プロセッサから指示された前記所定の処理が前記第2プロセッサで実行可能か否かを判断可能になる。
テーブルを書き換え可能にすると、第1プロセッサとの関係で処理の割り振りを変えることができ、第1プロセッサ及び第2プロセッサの処理を最適化することができる。
このような情報処理装置では、例えば、前記第1プロセッサから指示される前記所定の処理がエミュレーションによるものであり、前記第1プロセッサまたは前記第2プロセッサがエミュレーションにより前記所定の処理を実行するように構成される。エミュレーションを行う場合には、より具体的には、例えば以下のような構成になる。
エミュレーションを行う場合には、例えば、前記第1プロセッサが、前記所定の命令に応じた処理に用いられるデータを取り込むようになる。前記所定の命令は、前記第1プロセッサによる処理の実行、及びエミュレーションの実行を含む前記第2プロセッサによる処理の実行、のいずれかを指示するものであり、前記データは、前記所定の命令が前記第1プロセッサによる処理の実行または前記第2プロセッサによるエミュレーションを除く処理の実行を指示するものである場合には、これらの処理に用いられるものであるとともに、前記所定の命令が前記エミュレーションの実行を指示するものである場合には、当該エミュレーションにより実行される処理を指示するものである。前記第1プロセッサの前記制御手段は、前記所定の命令が前記第1プロセッサによる処理の実行を指示するものである場合に、前記第1処理手段にこの命令に応じた処理を前記データを用いて実行させるとともに、前記所定の命令が前記第2プロセッサによる処理の実行を指示するものである場合に、前記第2プロセッサに前記所定の命令及び前記データを送るように構成される。前記第2プロセッサは、前記制御手段から送られる前記所定の命令が、前記第2プロセッサによるエミュレーションを除く処理の実行を指示する場合に、この命令に応じた処理を前記データを用いて実行する第3処理手段を更に備える。第2プロセッサの前記判断手段は、前記制御手段から送られる前記所定の命令がエミュレーションの実行を指示する場合に、前記第2プロセッサで当該エミュレーションにより前記データが指示する処理を実行可能であるか否かを判断するように構成されており、前記第2処理手段は、前記第2プロセッサで当該エミュレーションにより前記データが指示する処理が実行可能である場合に、前記エミュレーションにより当該処理を実行するように構成される。前記第1プロセッサの前記制御手段は、前記判断手段からの通知に応じて、前記第1処理手段に、前記エミュレーションにより前記データが指示する前記処理を実行させるように構成され、前記第1プロセッサと前記第2プロセッサとにより協働で前記エミュレーションを実行する。
前記第1プロセッサが、所定の時間間隔で、所定の時間内にエミュレーションにより実行すべき処理の数を所要時間で表した設定値を、前記第2プロセッサに設定するように構成されている場合には、前記第2プロセッサを、前記第2処理手段がエミュレーションにより実行可能な処理を、当該処理を本来実行するターゲットプロセッサが実行した場合に要する所要時間を表す実行クロックテーブルと、前記第2処理手段で前記エミュレーションにより実行する処理の所要時間を前記実行クロックテーブルから読み出して、前記第1プロセッサにより設定された前記設定値から順次減算し、減算結果が0以下になった場合に、その旨を前記第1プロセッサに通知するクロックカウンタと、を更に備えて構成してもよい。このような構成では、前記第1プロセッサが、前記設定値を前記第2プロセッサに設定してから、前記クロックカウンタから通知を受けるまでの時間を計測することで、前記第2プロセッサによるエミュレーションの処理時間を測定できるようになる。
これらの情報処理装置において、例えば前記第2プロセッサが前記第1プロセッサのコプロセッサであり、前記第1プロセッサと前記第2プロセッサとはコプロセッサ接続されていてもよい。このような構成では、短時間で大量のデータの送受信が可能になるので、第1プロセッサ及び第2プロセッサにより、より高速で複雑な処理が可能となる。
本発明の情報処理方法は、所定の命令を取り込む第1プロセッサと、前記第1プロセッサからの指示により所定の処理を実行する第2プロセッサとを備え、前記第1プロセッサ及び前記第2プロセッサにより協働して前記命令に応じた処理を実行する情報処理装置により実行される方法である。
この方法は、前記第1プロセッサが、前記所定の命令に応じて前記第2プロセッサに前記所定の処理の実行を指示する段階と、前記第2プロセッサが、前記第1プロセッサから指示された前記所定の処理が前記第2プロセッサで実行可能であるか否かを判断する段階と、前記第2プロセッサで実行可能である場合には、前記所定の処理を実行する段階と、前記第2プロセッサで実行不可能である場合には、その旨を前記第1プロセッサに通知する段階と、前記第1プロセッサが、前記第2プロセッサから前記所定の処理を実行不可能である旨の前記通知を受け取ると当該処理を実行する段階と、を含む。
本発明の半導体装置は、所定の命令を取り込む第1プロセッサと、前記第1プロセッサからの指示により所定の処理を実行する第2プロセッサと、を備えており、前記第1プロセッサは、前記所定の命令に応じて前記第2プロセッサに前記所定の処理の実行を指示するように構成されており、前記第2プロセッサは、前記第1プロセッサから指示された前記所定の処理が実行可能であるか否かを判断して、実行不可能である場合に、その旨を前記第1プロセッサに通知する判断手段と、実行可能である場合に、前記所定の処理を実行する第2処理手段と、を有し、前記第1プロセッサは、前記第2プロセッサから前記通知があると前記所定の処理を実行するように構成されており、前記第1プロセッサと前記第2プロセッサとにより協働で前記所定の命令に応じた処理を実行するように構成されている。
本発明のコンピュータプログラムは、所定の命令を取り込む第1プロセッサと、前記第1プロセッサからの指示により所定の処理を実行する第2プロセッサとを備え、前記第1プロセッサ及び前記第2プロセッサにより協働して前記命令に応じた処理を実行するコンピュータシステムに、前記第1プロセッサが、前記所定の命令に応じて前記第2プロセッサに前記所定の処理の実行を指示する処理、前記第2プロセッサが、前記第1プロセッサから指示された前記所定の処理が前記第2プロセッサで実行可能であるか否かを判断する処理、前記第2プロセッサで実行可能である場合には、前記所定の処理を実行する処理、前記第2プロセッサで実行不可能である場合には、その旨を前記第1プロセッサに通知する処理、前記第1プロセッサが、前記第2プロセッサから前記所定の処理を実行不可能である旨の前記通知を受け取ると当該処理を実行する処理、を実行させるためのコンピュータプログラムである。
このコンピュータプログラムは、例えばコンピュータ読み取り可能な記録媒体に記録される。
以下、本発明の実施形態を詳細に説明する。
図1は、本実施形態の情報処理装置の構成図である。
この情報処理装置は、ホストプロセッサ1及びコプロセッサ2を有し情報処理装置内の他の構成要素の動作を制御するためのプロセッサ3と、キーボード、マウス等の入力装置との間のインタフェースを制御して、入力装置からの入力データを受け付けるための入力インタフェース4と、ディスプレイ、スピーカ等の出力装置との間のインタフェースを制御して、処理結果等の出力データを出力装置から出力させるための出力インタフェース5と、情報処理装置による処理の実行の際に用いられる各種データ、命令が記憶されるRAM(Random Access Memory)6と、BIOS等の基本プログラム、エミュレーションを行うためのプログラム等が記憶されるROM(Read Only Memory)7と、を備えている。各構成要素は、バスBを介してデータの送受信が可能に接続されている。
情報処理装置には、電源投入時に、プロセッサ3がROM7から必要な基本プログラムを読み込んで実行することで、所定の処理環境が構築されるようになっている。情報処理装置は、所定の処理環境が実現されると、例えば入力装置から入力される入力データに応じて、プロセッサ3が処理を実行し、その処理結果を出力インタフェース5を介して出力装置へ出力するようになっている。
情報処理装置は、本発明の特徴的な構成として、プロセッサ3によりエミュレータが構築される。プロセッサ3は、ホストプロセッサ1及びコプロセッサ2により、例えばROM7に記憶されたエミュレーションを行うためのプログラムを実行して、エミュレータを構築する。プロセッサ3内のホストプロセッサ1とコプロセッサ2とは、通常のIO接続よりも高速で大量のデータを送受信が可能なコプロセッサ接続される。なお、ホストプロセッサ1及びコプロセッサ2を、通常のIO接続で接続してもよい。この場合、コプロセッサを用いたシステムではなく、通常のマルチプロセッサシステムとしてもよい。
ホストプロセッサ1は、入力インタフェース4を介して、外部から、或いはRAM6から命令を取得すると、この命令に応じた処理を実行するようになっている。命令には、ホストプロセッサ1で実行されるものとコプロセッサ2で実行されるものとがある。命令がホストプロセッサ1で実行されるものである場合には、ホストプロセッサ1がそのまま実行する。コプロセッサ2で実行されるものである場合には、命令がホストプロセッサ1からコプロセッサ2へ送られるようになっている。
コプロセッサ2は、ホストプロセッサ1からのみ命令が入力されるようになっており、ホストプロセッサ1を除いた他の構成要素から、直接命令が入力されることはない。コプロセッサ2は、ホストプロセッサ1から入力された命令に応じた処理を実行するようになっており、処理結果ホストプロセッサ1に返すようになっている。なおコプロセッサ2は、通常のマルチプロセッサシステムのように設けられている場合にも、ホストプロセッサ1を除いた他の構成要素から命令が入力されることはない。
図2は、エミュレータが構築されたときの、プロセッサ3の詳細な構成図である。エミュレータは、上記のようにプログラムを実行することで構築されるようにしてもよいが、ホストプロセッサ1及びコプロセッサ2内の各構成要素を、ハードウエアを用いて、例えば半導体チップにより構成するようにしてもよい。例えば、ホストプロセッサ1用の半導体チップとコプロセッサ2用の半導体チップを用いて、或いはホストプロセッサ1及びコプロセッサ2を1つの半導体チップとして構成してもよい。以下に、プロセッサ3により構築されるエミュレータついて詳細に説明する。
プロセッサ3は、コンパイル方式のエミュレーションで要求される程度の処理能力を有するホストプロセッサ1と、コプロセッサ2とにより、エミュレーションによる処理を協働で実行することで、インタプリタ方式のエミュレーションを行うように構成されている。このような構成により、インタプリタ方式のエミュレーションを、高性能のプロセッサを用いることなく実現することが可能になる。プロセッサ3では、実行頻度の高い基本演算命令をコプロセッサ2で実行し、その他の命令、すなわち他の構成要素との入出力命令、分岐命令、実行時間の長い命令、複雑な命令をホストプロセッサ1で実行する。
ホストプロセッサ1は、入力部10、処理部11、コプロセッサインタフェース部12、出力部13、制御部14、及びレジスタ15を備えている。
入力部10はバスBに接続されており、バスBを介してRAM6、ROM7等の他の構成要素からデータ、命令、プログラム等を取得するようになっている。
処理部11は、入力部10により取得されたデータ、命令、プログラム等に応じた処理を実行するようになっている。特に処理部11は、ホストプロセッサ側でエミュレーションによる処理を実行する際に、ターゲットプロセッサ命令に応じた処理を実行するように構成されている。
コプロセッサインタフェース部12は、コプロセッサ2との間で、データ、命令等を送受信するためのものである。出力部13はバスBに接続されており、バスBを介して他の構成要素に対して処理結果等を出力するようになっている。
制御部14は、ホストプロセッサ1内の各構成要素の動作を制御するものである。制御部14は、入力部10により取得した命令から、ホストプロセッサ1内で処理を実行するものかコプロセッサ2内で処理を実行するものかを判断する判断部と、判断部の判断結果によって処理部11又はコプロセッサ2のいずれかに処理を実行させる指示部とを有する。判断部による判断の結果、ホストプロセッサ1内で処理を実行するものである場合には、指示部から処理部11に当該命令による処理の実行を指示し、コプロセッサ2内で処理を実行するものである場合には、指示部からコプロセッサインタフェース部12を介して当該命令及び関連するデータを送るようになっている。命令が、ホストプロセッサ1で処理を実行するものか、或いはコプロセッサ2で処理を実行するものであるかは、例えば、命令にどちらで処理されるかを表す情報を含ませておけばよい。また、命令の種類により制御部14が判断するようにしてもよい。
レジスタ15は、従来のプロセッサにおけるレジスタとして機能する他に、コプロセッサ2が処理を実行する際に用いるデータを記憶するものである。入力部10で取得されたデータ、命令、プログラム等は、レジスタ15に記憶される。
このような構成のホストプロセッサ1は、コプロセッサ2に所定の処理を実行させる際に、コプロセッサインタフェース部12から、処理を実行させるための命令(以下、「コプロセッサ命令」という。)、及び処理を実行する際に用いるデータ(以下、「コプロセッサデータ」という。)等を送る。コプロセッサ命令、コプロセッサデータ等は、コプロセッサ2で実行される通常の処理の他に、コプロセッサ2にインタプリタ方式のエミュレーションを実行させるためのものである。コプロセッサ2にエミュレーションを実行させる場合に、ホストプロセッサ1は、コプロセッサ命令により、コプロセッサ2にエミュレーションの実行を指示し、コプロセッサデータにより、エミュレーションにより実行される処理を指示する。コプロセッサ2にエミュレーションを実行させる場合のコプロセッサデータを、特にターゲットプロセッサ命令という。
ホストプロセッサ1は制御部14により、コプロセッサ2によるエミュレーションに実際にかかった時間を測定して、平均のエミュレーション実行時間を把握し、コプロセッサ2によるエミュレーションのタイミングを調整するようになっている。
そのためにホストプロセッサ1は、コプロセッサ2に、所定の時間内にエミュレーションにより実行すべき処理の数を所要時間で表した値(以下、「設定値」という。)を設定する。コプロセッサインタフェース部12から、この設定値を含むデータ(以下、「タイミングデータ」という。)をコプロセッサ2に送ることで、コプロセッサ2に設定値が設定される。タイミングデータを入力し、コプロセッサ2からエミュレーションの終了の通知を受けるまでの時間が、コプロセッサ2によるエミュレーションにかかった実際の時間になる。
コプロセッサ2は、ホストプロセッサ1から入力されるコプロセッサ命令に応じた処理を実行するものである。この実施形態では、コプロセッサ2は、エミュレーションによる処理と、エミュレーションを除く他の処理とを実行するように構成されている。コプロセッサ2は、コプロセッサパイプライン20、ターゲットプロセッサパイプライン21、実行命令テーブル22、パイプラインコントローラ23、実行クロックテーブル24、クロックカウンタ25、及びレジスタ26を備えている。
コプロセッサパイプライン20は、コプロセッサ2で実行されるエミュレーションを除く他の処理全般を行うものであり、コプロセッサ命令デコーダ201、データ読出部202、データ処理部203、及びデータ書込部204を備えている。
コプロセッサ命令デコーダ201は、ホストプロセッサ1から送られてくるコプロセッサ命令をデコードして、コプロセッサ命令がどのような処理を指示しているかを判別する。判別結果は、パイプラインコントローラ23に通知される。特に、コプロセッサ命令がエミュレーションを指示するものである場合には、パイプラインコントローラ23にその旨を通知することで、ターゲットプロセッサパイプライン21でエミュレーションが行われる。
図3は、コプロセッサ命令のフォーマットの一例を示す図である。コプロセッサ命令には、コプロセッサ2で実行可能な処理あるいはエミュレーションを行うことを指示する特定コードが含まれている。これによりコプロセッサ命令デコーダ201は、コプロセッサ命令がエミュレーションを指示するものであるか否かを判別できるようになっている。コプロセッサ命令には、この他に、コプロセッサパイプライン20で実際に実行される処理の内容を示す情報(処理内容)が含まれている。処理内容には、処理に用いるデータの取得先、処理結果の出力先、処理の種類等が含まれる。
データ取得部202は、エミュレーション以外の処理を実行する際に、ホストコンピュータ1から送られるコプロセッサデータを取得して、あるいはレジスタ26から処理に必要なデータを取得して、データ処理部203へ送る。処理に必要なデータの取得先は、コプロセッサ命令デコーダ201によりデコードされたコプロセッサ命令により指示される。
データ処理部203は、データ取得部202により取得されたデータを用いて所定の処理を実行する。処理内容は、コプロセッサ命令デコーダ201によりデコードされたコプロセッサ命令により指示される。
データ書込部204は、データ処理部203による処理結果をレジスタ26に書き込むか、あるいはホストプロセッサ1に返す。処理結果をレジスタ26に書き込むか、あるいはホストプロセッサ1に返すかは、予めコプロセッサ命令により指示されている。なお、データ書込部204は、処理結果をレジスタ26に書き込むとともに、ホストプロセッサ1に返すようにしてもよい。
ターゲットプロセッサパイプライン21は、パイプラインコントローラ23からエミュレーションの指示があると、エミュレーションを行ってターゲットプロセッサと同等の機能を実現するものである。そのためにターゲットプロセッサパイプライン21は、ターゲットプロセッサ命令デコーダ211、データ読出部212、データ処理部213、及びデータ書込部214を備えている。
ターゲットプロセッサ命令デコーダ211は、パイプラインコントローラ23からエミュレーションを指示されると、ホストプロセッサ1から送られてくるコプロセッサデータをターゲットプロセッサ命令として取得し、デコードする。ターゲットプロセッサ命令デコーダ211は、デコードの結果、実際の処理内容とデコード結果値を得る。デコード結果値は、ターゲットプロセッサ命令により指示される処理がどのような処理(処理種)であるかを表す値であり、例えば、基本算術演算(加算、減算等)では「00」〜「31」、論理演算(論理、シフト演算等)では「32」〜「63」、複雑演算(除算、乗算等)では「64」〜「67」、ロード・ストアでは「68」〜「77」、分岐(ジャンプ、条件分岐、リンク付き分岐等)では「78」〜「91」、その他の命令では「92」〜「98」、未定義な命令では「99」の値を取るようになっている。
ターゲットプロセッサ命令デコーダ211は、このデコード結果値を実行命令テーブル22と比較することで、当該命令が、ターゲットプロセッサパイプライン21で実行可能な処理を指示している否かを判断し、その判断結果をパイプラインコントローラ23に通知する。また、デコード結果値はパイプラインコントローラ23を介して、あるいは直接クロックカウンタ25に送られる。
図4は、ターゲットプロセッサ命令のフォーマットの一例を示す図である。ターゲットプロセッサ命令には、処理種を表す処理コードとその処理内容が含まれている。ターゲットプロセッサ命令デコーダ211は、コプロセッサデータに含まれる処理コードをデコードすることで、デコード結果値を得るようになっている。処理内容には、処理に用いるデータの取得先、処理結果の出力先、処理の種類等が含まれている。
データ読出部212は、レジスタ26から処理に必要なデータを読み出して、データ処理部213へ送る。処理に必要なデータの取得先は、予めターゲットプロセッサ命令により指示される。
データ処理部213は、データ読出部212により読み出されたデータを用いて所定の処理を実行するものである。処理内容は、ターゲットプロセッサ命令デコーダ211でデコードされたターゲットプロセッサ命令により指示される。
データ書込部214は、データ処理部213による処理結果をレジスタ26に書き込むか、あるいはホストプロセッサ1に返す。処理結果をレジスタ26に書き込むか、あるいはホストプロセッサ1に返すかは、ターゲットプロセッサ命令により指示される。なお、データ書込部214は、処理結果をレジスタ26に書き込むとともに、ホストプロセッサ1に返すようにしてもよい。
実行命令テーブル22は、ターゲットプロセッサパイプライン21で実行可能な命令を表すテーブルである。実行命令テーブル22は、ターゲットプロセッサ命令デコーダ211により参照されて、ターゲットプロセッサ命令デコーダ211により得られるデコード結果値が、ターゲットプロセッサパイプライン21で実行可能な命令であることを示しているか否かがわかるようになっている。このような実行命令テーブル22は、書き換え可能なメモリに設けることが好ましい。書き換え可能なメモリに設けることで、ターゲットプロセッサパイプライン21で実行する命令の種類を変更してホストプロセッサ1との処理量の配分調整を図って最適化したり、コプロセッサ2の一部の命令処理に設計ミスがあった場合等に、実行命令テーブル22の対応する命令の値を書き換えることで対処できるようになる。
図5は、実行命令テーブル23の例示図である。このテーブルで“値”は、該当するデコード結果値がターゲットプロセッサパイプライン21で実行可能な処理であるか否かを示している。図5では、“値”が、「0」の場合、コプロセッサ2で処理を完全に実行できることを表す。「1」の場合、コプロセッサ2はメモリアドレスを計算できるが、バスBを介してホストプロセッサ1に接続されるRAM6へのアクセスは実行できないので、ホストプロセッサ1にRAM6へのアクセスを代行してもらう必要があることを表す。「2」の場合、コプロセッサ2は分岐先アドレスの計算と分岐するか否かの判断まではできるが、分岐先の命令の取得はコプロセッサ2では行えないことを表す。「3」の場合、すべての処理をコプロセッサ2では行えないことを表す。図5の例では、ターゲットプロセッサパイプライン21が、基本算術演算、論理演算を完全に実行でき、ロード・ストアのメモリアクセス以外の処理を実行でき、分岐の分岐先の命令取得以外の処理を実行できるようになっている。複雑演算、その他の命令、未定義な命令、による処理はホストプロセッサ1が行う。
パイプラインコントローラ23は、コプロセッサ命令デコーダ201からの通知に応じて、コプロセッサ2内のどの構成要素を用いた処理を行うかを制御するものである。
パイプラインコントローラ23は、コプロセッサ命令デコーダ201からエミュレーションを行う旨の通知があると、ターゲットプロセッサパイプライン21のターゲットプロセッサ命令デコーダ211に対して、エミュレーションの実行を指示する。これにより、ターゲットプロセッサパイプライン21は、エミュレータとして機能するようになる。エミュレーションを除く他の処理を行う旨の通知があると、コプロセッサパイプライン20のコプロセッサ命令デコーダ201に対して、当該処理の実行を指示する。
また、パイプラインコントローラ23は、ターゲットプロセッサ命令デコーダ211からターゲットプロセッサパイプライン21で実行可能な処理か否かの判断結果の通知を受け取ると、その通知に応じた状態データをホストプロセッサ1に送る。ホストプロセッサ1は、状態データにより、ターゲットプロセッサ命令をコプロセッサ2が実行できるか否かを知ることができる。
実行クロックテーブル24は、ターゲットプロセッサパイプライン21がエミュレーションにより実行する処理を、ターゲットプロセッサが実行した場合に要する所用時間を表しており、クロックカウンタ25によって参照される。図6は、このような実行クロックテーブル24の例示図である。このテーブルで「所要時間」は、例えば動作クロックの1サイクルを単位としており、基本算術演算、論理演算等は、1サイクルかかる。
クロックカウンタ25は、エミュレーションの実行のタイミングを調整するためのものである。
クロックカウンタ25には、ホストプロセッサ1からのタイミングデータにより、設定値が設定される。クロックカウンタ25は、例えば、パイプラインコントローラ23を介して得たデコード結果値と実行クロックテーブル24とから、デコード結果値に対応する処理をターゲットプロセッサが実行した場合に要する所要時間を得る。或いは、クロックカウンタは、ターゲットプロセッサ命令デコーダ211から直接、当該所要時間を得る。クロックカウンタ25は、設定値から、実行クロックテーブル24から得られた所要時間を順次減算して、所定の所要時間が「0」または負になった場合に、このことをパイプラインコントローラ23を介してホストプロセッサ1に通知する。
レジスタ26は、コプロセッサパイプライン20による処理結果及びターゲットプロセッサパイプライン21によるエミュレーションの処理結果を記憶するものである。レジスタ26に記憶される処理結果は、コプロセッサパイプライン20、ターゲットプロセッサパイプライン21で実行される他の処理の、処理対象のデータとなる。また、ホストプロセッサ1に処理結果を直接出力することもできるようになっている。
以上のような構成を持つ情報処理装置は、以下のような動作を行う。図7は、プロセッサ3によるエミュレーションの処理の流れを示す図である。
ホストプロセッサ1は、入力部10により情報処理装置内の他の構成要素から命令を取得する(ステップS10)。ホストプロセッサ1は、制御部14により取得した命令がコプロセッサ2を用いるものであるか否かを判断する(ステップS20)。ホストプロセッサ1は、命令がコプロセッサ2を用いないものである場合に、処理部11によりこの命令に応じた処理を実行する(ステップS20:N、ステップS30)。
ホストプロセッサ1は、命令がコプロセッサ2を用いるものである場合にコプロセッサ2に対してコプロセッサ命令、コプロセッサデータ、及びタイミングデータを入力する(ステップS20:Y、ステップS40)。コプロセッサ命令はコプロセッサパイプライン20に入力され、コプロセッサデータはコプロセッサパイプライン20及びターゲットプロセッサパイプライン21に入力され、タイミングデータはパイプラインコントローラ23を介して、あるいは直接クロックカウンタ25に入力される。なお、タイミングデータは、コプロセッサ命令、コプロセッサデータと常に同じタイミングで入力されるわけではなく、所定の時間間隔で入力される。
コプロセッサパイプライン20のコプロセッサ命令デコーダ201は、ホストプロセッサ1から入力されたコプロセッサ命令が、エミュレーションの実行を指示しているか否かを判断する(ステップS50)。コプロセッサ命令は、図3に示すようなフォーマットであるので、コプロセッサ命令デコーダ201は、コプロセッサ命令の特定コードを確認することで、エミュレーションの実行を指示されているか否かを確認する。
コプロセッサ命令がエミュレーションの実行を指示していない場合には、コプロセッサ2で実行できるエミュレーションを除く処理の実行を指示していることになる。この場合、コプロセッサパイプライン20で該当する処理を実行することになる(ステップS50:N、ステップS60)。コプロセッサ命令がエミュレーションの実行を指示していない場合のコプロセッサ2内におけるデータの流れは、例えば図8のようになる。
コプロセッサ命令デコーダ201でコプロセッサ命令がエミュレーションの実行を指示していないことを確認すると、その旨をデータ取得部202に通知する。また、コプロセッサ命令デコーダ201は、コプロセッサ命令をデコードして得られる処理内容をデータ取得部202に送る。データ取得部202は、コプロセッサ命令デコーダ201から送られる処理内容に応じて、ホストプロセッサ1及び/又はレジスタ26から処理に必要なデータを取得する。取得したデータはデータ処理部203に処理内容とともに送られる。データ処理部203では送られてきたデータを処理内容に応じて処理し、その結果得られたデータをデータ書込部204に送る。データ書込部204は、処理内容の指示に応じてレジスタ26に処理の結果得られたデータを書き込む。処理内容によっては、処理結果をホストプロセッサ1に戻すようにしてもよい。
コプロセッサ命令がエミュレーションの実行を指示している場合には(ステップS50:Y)、コプロセッサ命令デコーダ201は、エミュレーションの実行が指示されていることをパイプラインコントローラ23に通知する。パイプラインコントローラ23は、エミュレーションの実行の指示が通知されると、ターゲットプロセッサパイプライン21のターゲットプロセッサ命令デコーダ211にエミュレーションの実行を指示する。
ターゲットプロセッサ命令デコーダ211は、エミュレーションの実行の指示があると、ホストプロセッサ1から供給されるコプロセッサデータをターゲットプロセッサ命令として受け取る。ターゲットプロセッサ命令デコーダ211は、受け取ったターゲットプロセッサ命令が、ターゲットプロセッサパイプライン21のエミュレーションにより実行可能な処理を指示しているか否かを判断する(ステップS70)。ターゲットプロセッサ命令デコーダ211は、図4に示すフォーマットのターゲットプロセッサ命令をデコードして、デコード結果値を得る。デコード結果値と実行命令テーブル22とを比較して、ターゲットプロセッサ命令による処理内容がコプロセッサ2で実行可能であるか否かを確認することができる。
ターゲットプロセッサ命令が、ターゲットプロセッサパイプライン21のエミュレーションにより実行可能な処理を指示していない場合に(ステップS70:N)、ターゲットプロセッサ命令デコーダ211は、パイプラインコントローラ23を介してホストプロセッサ1に、その旨を通知する(ステップS80)。ホストプロセッサ1は、コプロセッサ2からの通知に応じてエミュレーションにより処理を実行する(ステップS90)。
図9は、この場合のデータの流れを表す図である。ホストプロセッサ1への通知には、図5の「値」に応じた内容が含まれる。つまり、ホストプロセッサ1に、処理のすべてを任せるのか、あるいは一部を任せるのかを含んだ内容となる。なお、ホストプロセッサ1に通知する際に、デコードしたターゲットプロセッサ命令に関する情報もホストプロセッサ1に送るようにしてもよい。デコード結果をそのまま送ったり、ホストプロセッサ1によるデコードの負荷が軽くなるように、ターゲットプロセッサ命令を切り分けて送るようにしてもよい。これにより、ターゲットプロセッサ命令を再びホストプロセッサ1でデコードする必要がなくなる。
ターゲットプロセッサ命令が、ターゲットプロセッサパイプライン21のエミュレーションにより実行可能な処理を指示している場合には、ターゲットプロセッサパイプライン21が、ターゲットプロセッサ命令が指示する処理を実行する(ステップS70:Y、ステップS100)。図10は、その場合のデータの流れを表す図である。
ターゲットプロセッサ命令をコプロセッサ2で実行できることを確認すると、ターゲットプロセッサ命令デコーダ211は、ターゲットプロセッサ命令をデコードして得られる処理内容をデータ読出部212に送る。データ読出部212は、ターゲットプロセッサ命令デコーダ201から送られた処理内容に応じて、レジスタ26から処理に必要なデータを取得する。取得したデータは、データ処理部213に処理内容とともに送られる。データ処理部213では、送られてきたデータを処理内容に応じて処理し、その結果得られたデータをデータ書込部214に送る。データ書込部214は、処理内容の指示に応じてレジスタ26に処理結果を書き込む。処理内容によっては、処理結果をホストプロセッサ1に戻すようにしてもよい。
コプロセッサ2でターゲットプロセッサ命令を実行する場合、クロックカウンタ25には、ターゲットプロセッサ命令デコーダ211からデコード結果値が通知される。クロックカウンタ25は、デコード結果値により、ターゲットプロセッサ命令による処理種及びその所要時間を、実行クロックテーブル24を参照して確認する。クロックカウンタ25は、タイミングデータにより設定された所要時間から、実行クロックテーブル24によって確認した所要時間を減算する。減算結果が0又は負になると、クロックカウンタ25は、その旨を、パイプラインコントローラ23を介して、あるいは直接、ホストプロセッサ1に通知する。
ホストプロセッサ1は、タイミングデータの出力から、クロックカウンタ25からの通知までの時間を測定することで、実際のコプロセッサ2によるエミュレーション時間を知ることができる。
以上のような処理手順により、エミュレーションを行う。
ホストプロセッサ1は、コプロセッサ2に対して、コプロセッサ命令が終了するたびに次のコプロセッサ命令を一つずつ送るようにしてもよい。例えば、ホストプロセッサ1は、パイプラインコントローラ23からコプロセッサ命令の終了が通知されるのを待って、次のコプロセッサ命令をコプロセッサ2に送る。
また、ターゲットプロセッサパイプライン21によりエミュレーションが行われているときに、ホストプロセッサ1は、次のコプロセッサ命令をコプロセッサ2に送るようにしてもよい。コプロセッサ2は、コプロセッサ命令のデコードをエミュレーションとは別に行うことができるために、このタイミングでコプロセッサ命令が送られても問題なく処理が可能である。
本発明では、ホストプロセッサ1とコプロセッサ2とが協働でエミュレーションを行う。そのために、ホストプロセッサ1がコンパイル方式のエミュレーションで用いられる程度の性能しか持たなくとも、全体としてはインタプリタ方式のエミュレーションを行うことができるようになる。例えば、実行命令テーブル22の内容を改変して、コプロセッサ2で実行可能なエミュレーションに関する命令を増やせば、それだけホストプロセッサ1のエミュレーションによる負荷を低減できる。
本実施形態の情報処理装置の構成図。 本実施形態によるエミュレータの全体構成図。 コプロセッサ命令のフォーマットの例示図。 ターゲットプロセッサ命令のフォーマットの例示図。 実行命令テーブルの例示図。 実行クロックテーブルの例示図。 本実施形態によるエミュレーションの処理の流れを示す図。 コプロセッサ命令がエミュレーションの実行を指示していない場合のデータの流れを説明する図。 コプロセッサで実行できないエミュレーションの実行が指示された場合のデータの流れを説明する図。 コプロセッサでエミュレーションを実行する場合のデータの流れを説明する図。
符号の説明
1 ホストプロセッサ
10 入力部
11 処理部
12 コプロセッサインタフェース部
13 出力部
14 制御部
15 レジスタ
2 コプロセッサ
20 コプロセッサパイプライン
201 コプロセッサ命令デコーダ
202 データ取得部
203 データ処理部
204 データ書込部
21 ターゲットプロセッサパイプライン
211 ターゲットプロセッサ命令デコーダ
212 データ読出部
213 データ処理部
214 データ書込部
22 実行命令テーブル
23 パイプラインコントローラ
24 実行クロックテーブル
25 クロックカウンタ
26 レジスタ
3 プロセッサ
4 入力インタフェース
5 出力インタフェース
6 RAM
7 ROM
B バス

Claims (14)

  1. 所定の命令及び前記所定の命令に応じた処理に用いられるデータを取り込む第1プロセッサと、前記第1プロセッサからの指示により所定の処理を実行する第2プロセッサと、を備え、前記第1プロセッサによる処理の実行及びエミュレーションの実行を含む前記第2プロセッサによる処理の実行のいずれかを指示する前記所定の命令、及び、前記所定の命令が前記第1プロセッサによる処理の実行または前記第2プロセッサによるエミュレーションを除く処理の実行を指示するものである場合に、これらの処理に用いられるものであるとともに、前記所定の命令が前記エミュレーションの実行を指示するものである場合に、当該エミュレーションにより実行される処理を指示する前記データ、による処理を前記第1プロセッサと前記第2プロセッサとにより協働で実行する情報処理装置であり、
    前記第1プロセッサは、
    前記所定の命令に応じた処理を実行可能な第1処理手段と、
    前記所定の命令が前記第2プロセッサで処理すべき命令であるか否かを判断して、前記所定の命令が前記第1プロセッサによる処理の実行を指示するものである場合に前記第1処理手段にこの命令に応じた処理を前記データを用いて実行させ、前記所定の命令が前記第2プロセッサによる処理の実行を指示するものである場合に前記第2プロセッサに前記所定の命令及び前記データを送ることで前記第2プロセッサに前記所定の処理の実行を指示する制御手段と、を備えており、
    前記第2プロセッサは、
    前記第1プロセッサの前記制御手段から送られる前記所定の命令がエミュレーションの実行を指示する場合に、前記第2プロセッサで当該エミュレーションにより前記データが指示する処理を実行可能であるか否かを判断して、実行不可能である場合に、その旨を前記第1プロセッサに通知する判断手段と、
    前記第2プロセッサで当該エミュレーションにより前記データが指示する処理が実行可能である場合に、前記エミュレーションにより当該処理を実行する第2処理手段と、
    前記第1プロセッサの前記制御手段から送られる前記所定の命令が、前記第2プロセッサによるエミュレーションを除く処理の実行を指示する場合に、この命令に応じた処理を前記データを用いて実行する第3処理手段と、備えており
    前記第1プロセッサの前記制御手段は、前記第2プロセッサの前記判断手段から前記通知があると、前記第1処理手段に、前記エミュレーションにより前記データが指示する前記処理を実行させるように構成されている、
    情報処理装置。
  2. 前記第2プロセッサは、前記第2プロセッサで実行可能な処理を表すテーブルを保持しており、
    前記判断手段は、このテーブルを参照することで、前記第1プロセッサから指示された前記所定の処理が前記第2プロセッサで実行可能か否かを判断するように構成されている、
    請求項1記載の情報処理装置。
  3. 前記第1プロセッサは、所定の時間間隔で、所定の時間内にエミュレーションにより実行すべき処理の数を所要時間で表した設定値を、前記第2プロセッサに設定するように構成されており、
    前記第2プロセッサは、
    前記第2処理手段がエミュレーションにより実行可能な処理を、当該処理を本来実行するターゲットプロセッサが実行した場合に要する所要時間を表す実行クロックテーブルと、
    前記第2処理手段で前記エミュレーションにより実行する処理の所要時間を前記実行クロックテーブルから読み出して、前記第1プロセッサにより設定された前記設定値から順次減算し、減算結果が0以下になった場合に、その旨を前記第1プロセッサに通知するクロックカウンタと、を更に備えており、
    前記第1プロセッサは、前記設定値を前記第2プロセッサに設定してから、前記クロックカウンタから通知を受けるまでの時間を計測して、前記第2プロセッサによるエミュレーションの処理時間を測定するように構成されている、
    請求項記載の情報処理装置。
  4. 前記第2プロセッサの前記判断手段は、
    前記第2プロセッサで当該エミュレーションにより前記データが指示する処理が実行不可能である場合に、前記データが指示する処理に関する情報を、前記通知とともに送る、
    請求項1記載の情報処理装置。
  5. 所定の命令を取り込む第1プロセッサと、前記第1プロセッサからの指示により所定の処理を実行する第2プロセッサと、を備えており、
    前記第1プロセッサは、
    前記所定の命令に応じて前記第2プロセッサに前記所定の処理の実行を指示するとともに、所定の時間間隔で、所定の時間内にエミュレーションにより実行すべき処理の数を所要時間で表した設定値を前記第2プロセッサに設定するように構成されており、
    前記第2プロセッサは、
    前記第2プロセッサで実行可能な処理を表すテーブルを参照することで、前記第1プロセッサから指示された前記所定の処理が実行可能であるか否かを判断して、実行不可能である場合に、その旨を前記第1プロセッサに通知する判断手段と、
    実行可能である場合に、前記所定の処理を実行する第2処理手段と、
    前記第2処理手段がエミュレーションにより実行可能な処理を本来実行するターゲットプロセッサが実行した場合に要する所要時間を表す実行クロックテーブルと、
    前記第2処理手段で前記エミュレーションにより実行する処理の所要時間を前記実行クロックテーブルから読み出して、前記第1プロセッサにより設定された前記設定値から順次減算し、減算結果が0以下になった場合に、その旨を前記第1プロセッサに通知するクロックカウンタと、を有し、
    前記第1プロセッサは、前記設定値を前記第2プロセッサに設定して前記クロックカウンタから減算結果が0以下になった旨の通知を受けるまでの時間を計測して、前記第2プロセッサによるエミュレーションの処理時間を測定するとともに、前記第2プロセッサの前記判断手段から前記所定の処理が実行不可能である旨の通知があると当該所定の処理を実行するように構成されており、
    前記第1プロセッサと前記第2プロセッサとにより協働で前記所定の命令に応じた処理を実行するように構成されている、
    情報処理装置。
  6. 前記第1プロセッサは、
    前記所定の命令に応じた処理を実行可能な第1処理手段と、
    前記所定の命令が前記第2プロセッサで処理すべき命令であるか否かを判断して、前記所定の命令が前記第2プロセッサで処理すべき命令でない場合に、前記第1処理手段にこの命令に応じた処理を実行させるとともに、前記所定の命令が前記第2プロセッサで処理すべき命令である場合に、前記第2プロセッサに前記所定の処理の実行を指示する制御手段と、を備えており、
    前記制御手段は、前記第2プロセッサから前記通知があると、前記第1処理手段に、前記所定の処理を実行させるように構成されている、
    請求項記載の情報処理装置。
  7. 前記第2プロセッサは、前記第1プロセッサのコプロセッサであり、前記第1プロセッサと前記第2プロセッサとはコプロセッサ接続されている、
    請求項1乃至のいずれかに記載の情報処理装置。
  8. 所定の命令及び前記所定の命令に応じた処理に用いられるデータを取り込む第1プロセッサと、前記第1プロセッサからの指示により所定の処理を実行する第2プロセッサとを備え、前記第1プロセッサによる処理の実行及びエミュレーションの実行を含む前記第2プロセッサによる処理の実行のいずれかを指示する前記所定の命令、及び、前記所定の命令が前記第1プロセッサによる処理の実行または前記第2プロセッサによるエミュレーションを除く処理の実行を指示するものである場合に、これらの処理に用いられるものであるとともに、前記所定の命令が前記エミュレーションの実行を指示するものである場合に、当該エミュレーションにより実行される処理を指示する前記データ、による処理を前記第1プロセッサ及び前記第2プロセッサにより協働して実行する情報処理装置により実行される方法であって、
    前記第1プロセッサが、
    前記所定の命令が前記第2プロセッサで処理すべき命令であるか否かを判断する段階と、
    前記所定の命令が前記第1プロセッサによる処理の実行を指示するものである場合に、前記第1処理手段にこの命令に応じた処理を前記データを用いて実行させる段階と、
    前記所定の命令が前記第2プロセッサによる処理の実行を指示するものである場合に、前記第2プロセッサに前記所定の命令及び前記データを送ることで前記第2プロセッサに前記所定の処理の実行を指示する段階と、
    前記第2プロセッサが、
    前記第1プロセッサから送られる前記所定の命令が、第2プロセッサによるエミュレーションの実行を指示するか否かを判断する段階と、
    前記第1プロセッサから送られる前記所定の命令が、第2プロセッサによるエミュレーションの実行を指示する場合に、前記第2プロセッサで当該エミュレーションにより前記データが指示する処理を実行可能であるか否かを判断する段階と、
    前記第2プロセッサで当該エミュレーションにより前記データが指示する処理が実行不可能である場合に、その旨を前記第1プロセッサに通知する段階と、
    前記第2プロセッサで当該エミュレーションにより前記データが指示する処理が実行可能である場合に、前記エミュレーションにより当該処理を実行する段階と、
    前記第1プロセッサから送られる前記所定の命令が、前記第2プロセッサによるエミュレーションを除く処理の実行を指示する場合に、この命令に応じた処理を前記データを用いて実行する段階と、
    前記第1プロセッサが、
    前記第2プロセッサから、当該第2プロセッサで前記エミュレーションにより前記データが指示する処理が実行不可能である旨の前記通知を受け取ると、前記エミュレーションにより前記データが指示する前記処理を実行する段階と、を含む、
    情報処理方法。
  9. 所定の命令を取り込む第1プロセッサと、前記第1プロセッサからの指示により所定の処理を実行する第2プロセッサとを備え、前記第1プロセッサ及び前記第2プロセッサにより協働して前記命令に応じた処理を実行する情報処理装置により実行される方法であって、
    前記第1プロセッサが、
    前記所定の命令に応じて前記第2プロセッサに前記所定の処理の実行を指示するとともに、所定の時間間隔で、所定の時間内にエミュレーションにより実行すべき処理の数を所要時間で表した設定値を前記第2プロセッサに設定する段階と、
    前記第2プロセッサが、
    前記第2プロセッサで実行可能な処理を表すテーブルを参照することで、前記第1プロセッサから指示された前記所定の処理が実行可能であるか否かを判断する段階と、
    前記所定の処理が前記第2プロセッサで実行不可能である場合に、その旨を前記第1プロセッサに通知する段階と、
    前記所定の処理が前記第2プロセッサで実行可能である場合に、前記所定の処理を実行する段階と、
    前記第2プロセッサでエミュレーションにより実行可能な処理を本来実行するターゲットプロセッサが実行した場合に要する所要時間を表す実行クロックテーブルから、前記第2処理手段で前記エミュレーションにより実行する処理の所要時間を読み出して、前記第1プロセッサにより設定された前記設定値から順次減算し、減算結果が0以下になった場合に、その旨を前記第1プロセッサに通知する段階と、
    前記第1プロセッサが、
    前記設定値を前記第2プロセッサに設定して前記第2プロセッサから減算結果が0以下になった旨の通知を受けるまでの時間を計測して、前記第2プロセッサによるエミュレーションの処理時間を測定する段階と、
    前記第2プロセッサから、前記所定の処理が実行不可能である旨の通知があると当該所定の処理を実行する段階と、を含む、
    情報処理方法。
  10. 所定の命令及び前記所定の命令に応じた処理に用いられるデータを取り込む第1プロセッサと、前記第1プロセッサからの指示により所定の処理を実行する第2プロセッサと、を備え、前記第1プロセッサによる処理の実行及びエミュレーションの実行を含む前記第2プロセッサによる処理の実行のいずれかを指示する前記所定の命令、及び、前記所定の命令が前記第1プロセッサによる処理の実行または前記第2プロセッサによるエミュレーションを除く処理の実行を指示するものである場合に、これらの処理に用いられるものであるとともに、前記所定の命令が前記エミュレーションの実行を指示するものである場合に、当該エミュレーションにより実行される処理を指示する前記データ、による処理を前記第1プロセッサと前記第2プロセッサとにより協働で実行する半導体装置であり、
    前記第1プロセッサは、
    前記所定の命令に応じた処理を実行可能な第1処理手段と、
    前記所定の命令が前記第2プロセッサで処理すべき命令であるか否かを判断して、前記所定の命令が前記第1プロセッサによる処理の実行を指示するものである場合に前記第1処理手段にこの命令に応じた処理を前記データを用いて実行させ、前記所定の命令が前記第2プロセッサによる処理の実行を指示するものである場合に前記第2プロセッサに前記所定の命令及び前記データを送ることで前記第2プロセッサに前記所定の処理の実行を指示する制御手段と、を備えており、
    前記第2プロセッサは、
    前記第1プロセッサの前記制御手段から送られる前記所定の命令がエミュレーションの実行を指示する場合に、前記第2プロセッサで当該エミュレーションにより前記データが指示する処理を実行可能であるか否かを判断して、実行不可能である場合に、その旨を前記第1プロセッサに通知する判断手段と、
    前記第2プロセッサで当該エミュレーションにより前記データが指示する処理が実行可能である場合に、前記エミュレーションにより当該処理を実行する第2処理手段と、
    前記第1プロセッサの前記制御手段から送られる前記所定の命令が、前記第2プロセッサによるエミュレーションを除く処理の実行を指示する場合に、この命令に応じた処理を前記データを用いて実行する第3処理手段と、備えており、
    前記第1プロセッサの前記制御手段は、前記第2プロセッサの前記判断手段から前記通知があると、前記第1処理手段に、前記エミュレーションにより前記データが指示する前記処理を実行させるように構成されている、
    半導体装置。
  11. 所定の命令を取り込む第1プロセッサと、前記第1プロセッサからの指示により所定の処理を実行する第2プロセッサと、を備えており、
    前記第1プロセッサは、
    前記所定の命令に応じて前記第2プロセッサに前記所定の処理の実行を指示するとともに、所定の時間間隔で、所定の時間内にエミュレーションにより実行すべき処理の数を所要時間で表した設定値を前記第2プロセッサに設定するように構成されており、
    前記第2プロセッサは、
    前記第2プロセッサで実行可能な処理を表すテーブルを参照することで、前記第1プロセッサから指示された前記所定の処理が実行可能であるか否かを判断して、実行不可能である場合に、その旨を前記第1プロセッサに通知する判断手段と、
    実行可能である場合に、前記所定の処理を実行する第2処理手段と、
    前記第2処理手段がエミュレーションにより実行可能な処理を本来実行するターゲットプロセッサが実行した場合に要する所要時間を表す実行クロックテーブルと、
    前記第2処理手段で前記エミュレーションにより実行する処理の所要時間を前記実行クロックテーブルから読み出して、前記第1プロセッサにより設定された前記設定値から順次減算し、減算結果が0以下になった場合に、その旨を前記第1プロセッサに通知するクロックカウンタと、を有し、
    前記第1プロセッサは、前記設定値を前記第2プロセッサに設定して前記クロックカウンタから減算結果が0以下になった旨の通知を受けるまでの時間を計測して、前記第2プロセッサによるエミュレーションの処理時間を測定するとともに、前記第2プロセッサの前記判断手段から前記所定の処理が実行不可能である旨の通知があると当該所定の処理を実行するように構成されており、
    前記第1プロセッサと前記第2プロセッサとにより協働で前記所定の命令に応じた処理を実行するように構成されている、
    半導体装置。
  12. 所定の命令及び前記所定の命令に応じた処理に用いられるデータを取り込む第1プロセッサと、前記第1プロセッサからの指示により所定の処理を実行する第2プロセッサとを備え、前記第1プロセッサによる処理の実行及びエミュレーションの実行を含む前記第2プロセッサによる処理の実行のいずれかを指示する前記所定の命令、及び、前記所定の命令が前記第1プロセッサによる処理の実行または前記第2プロセッサによるエミュレーションを除く処理の実行を指示するものである場合に、これらの処理に用いられるものであるとともに、前記所定の命令が前記エミュレーションの実行を指示するものである場合に、当該エミュレーションにより実行される処理を指示する前記データ、による処理を前記第1プロセッサ及び前記第2プロセッサにより協働して実行するコンピュータシステムに、
    前記第1プロセッサが、
    前記所定の命令が前記第2プロセッサで処理すべき命令であるか否かを判断する処理、
    前記所定の命令が前記第1プロセッサによる処理の実行を指示するものである場合に、前記第1処理手段にこの命令に応じた処理を前記データを用いて実行させる処理、
    前記所定の命令が前記第2プロセッサによる処理の実行を指示するものである場合に、前記第2プロセッサに前記所定の命令及び前記データを送ることで前記第2プロセッサに前記所定の処理の実行を指示する処理、
    前記第2プロセッサが、
    前記第1プロセッサから送られる前記所定の命令が、第2プロセッサによるエミュレーションの実行を指示するか否かを判断する処理、
    前記第1プロセッサから送られる前記所定の命令が、第2プロセッサによるエミュレーションの実行を指示する場合に、前記第2プロセッサで当該エミュレーションにより前記データが指示する処理を実行可能であるか否かを判断する処理、
    前記第2プロセッサで当該エミュレーションにより前記データが指示する処理が実行不可能である場合に、その旨を前記第1プロセッサに通知する処理、
    前記第2プロセッサで当該エミュレーションにより前記データが指示する処理が実行可能である場合に、前記エミュレーションにより当該処理を実行する処理、
    前記第1プロセッサから送られる前記所定の命令が、前記第2プロセッサによるエミュレーションを除く処理の実行を指示する場合に、この命令に応じた処理を前記データを用いて実行する処理、
    前記第1プロセッサが、
    前記第2プロセッサから、当該第2プロセッサで前記エミュレーションにより前記データが指示する処理が実行不可能である旨の前記通知を受け取ると、前記エミュレーションにより前記データが指示する前記処理を実行する処理、
    を実行させるためのコンピュータプログラム。
  13. 所定の命令を取り込む第1プロセッサと、前記第1プロセッサからの指示により所定の処理を実行する第2プロセッサとを備え、前記第1プロセッサ及び前記第2プロセッサにより協働して前記命令に応じた処理を実行するコンピュータシステムに、
    前記第1プロセッサが、
    前記所定の命令に応じて前記第2プロセッサに前記所定の処理の実行を指示するとともに、所定の時間間隔で、所定の時間内にエミュレーションにより実行すべき処理の数を所要時間で表した設定値を前記第2プロセッサに設定する処理、
    前記第2プロセッサが、
    前記第2プロセッサで実行可能な処理を表すテーブルを参照することで、前記第1プロセッサから指示された前記所定の処理が実行可能であるか否かを判断する処理、
    前記所定の処理が前記第2プロセッサで実行不可能である場合に、その旨を前記第1プロセッサに通知する処理、
    前記所定の処理が前記第2プロセッサで実行可能である場合に、前記所定の処理を実行する処理、
    前記第2プロセッサでエミュレーションにより実行可能な処理を本来実行するターゲットプロセッサが実行した場合に要する所要時間を表す実行クロックテーブルから、前記第2処理手段で前記エミュレーションにより実行する処理の所要時間を読み出して、前記第1プロセッサにより設定された前記設定値から順次減算し、減算結果が0以下になった場合に、その旨を前記第1プロセッサに通知する処理、
    前記第1プロセッサが、
    前記設定値を前記第2プロセッサに設定して前記第2プロセッサから減算結果が0以下になった旨の通知を受けるまでの時間を計測して、前記第2プロセッサによるエミュレーションの処理時間を測定する処理と、
    前記第2プロセッサから、前記所定の処理が実行不可能である旨の通知があると当該所定の処理を実行する処理、
    を実行させるためのコンピュータプログラム。
  14. 請求項12または請求項13に記載のコンピュータプログラムが記録された、コンピュータ読み取り可能な記録媒体。
JP2004369637A 2004-12-21 2004-12-21 情報処理装置、情報処理方法、半導体装置、コンピュータプログラム Active JP3938580B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2004369637A JP3938580B2 (ja) 2004-12-21 2004-12-21 情報処理装置、情報処理方法、半導体装置、コンピュータプログラム
EP05027750A EP1674989B1 (en) 2004-12-21 2005-12-19 Information processing device, information processing method, semiconductor device, and computer program
US11/305,114 US7818162B2 (en) 2004-12-21 2005-12-19 Information processing device, information processing method, semiconductor device, and computer program for executing instructions by using a plurality of processors
DE602005019019T DE602005019019D1 (de) 2004-12-21 2005-12-19 Informationsverarbeitungsvorrichtung, Informationsverarbeitungsverfahren, Halbleiterbauelement und Computerprogramm
CNA2005101338073A CN1794168A (zh) 2004-12-21 2005-12-21 信息处理设备、信息处理方法、半导体器件及计算机程序
KR1020050126663A KR20060071344A (ko) 2004-12-21 2005-12-21 정보처리장치, 정보처리방법, 반도체장치 및 컴퓨터프로그램

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004369637A JP3938580B2 (ja) 2004-12-21 2004-12-21 情報処理装置、情報処理方法、半導体装置、コンピュータプログラム

Publications (2)

Publication Number Publication Date
JP2006178646A JP2006178646A (ja) 2006-07-06
JP3938580B2 true JP3938580B2 (ja) 2007-06-27

Family

ID=35583337

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004369637A Active JP3938580B2 (ja) 2004-12-21 2004-12-21 情報処理装置、情報処理方法、半導体装置、コンピュータプログラム

Country Status (6)

Country Link
US (1) US7818162B2 (ja)
EP (1) EP1674989B1 (ja)
JP (1) JP3938580B2 (ja)
KR (1) KR20060071344A (ja)
CN (1) CN1794168A (ja)
DE (1) DE602005019019D1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7490223B2 (en) * 2005-10-31 2009-02-10 Sun Microsystems, Inc. Dynamic resource allocation among master processors that require service from a coprocessor
US7702885B2 (en) * 2006-03-02 2010-04-20 Atmel Corporation Firmware extendable commands including a test mode command for a microcontroller-based flash memory controller
KR20080048291A (ko) * 2006-11-28 2008-06-02 (주)엠텍소프트 복수의 프로세서를 포함하는 디지털 처리 장치 및 복수의프로세서의 연결 방법
US8433777B1 (en) 2007-09-26 2013-04-30 Emc Corporation Communication with multiple storage processors via direct connections
US8819104B1 (en) * 2007-09-26 2014-08-26 Emc Corporation Communication with multiple storage processors using network infrastructure
WO2012035699A1 (ja) * 2010-09-15 2012-03-22 日本電気株式会社 情報処理装置、情報処理方法、設計支援システム、及びプログラムが格納された非一時的なコンピュータ可読媒体
US9329870B2 (en) 2013-02-13 2016-05-03 International Business Machines Corporation Extensible execution unit interface architecture with multiple decode logic and multiple execution units
US9703562B2 (en) 2013-03-16 2017-07-11 Intel Corporation Instruction emulation processors, methods, and systems
US20140281398A1 (en) * 2013-03-16 2014-09-18 William C. Rash Instruction emulation processors, methods, and systems
CN103257884A (zh) * 2013-05-20 2013-08-21 深圳市京华科讯科技有限公司 设备虚拟化处理方法
CN103281365B (zh) * 2013-05-20 2016-12-28 深圳市京华科讯科技有限公司 分布式虚拟化架构
CN103309725A (zh) * 2013-05-20 2013-09-18 深圳市京华科讯科技有限公司 网络虚拟化处理方法
CN103257885A (zh) * 2013-05-20 2013-08-21 深圳市京华科讯科技有限公司 媒体虚拟化处理方法
JP6103541B2 (ja) 2014-03-18 2017-03-29 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation バイナリコードの実行を制御する装置及び方法
JP6529588B2 (ja) * 2015-07-16 2019-06-12 三菱電機株式会社 情報処理装置、情報処理方法及びプログラム
CN108647009A (zh) * 2018-03-22 2018-10-12 中钞信用卡产业发展有限公司杭州区块链技术研究院 区块链信息交互的装置、方法和存储介质
US10776125B2 (en) 2018-12-05 2020-09-15 Apple Inc. Coprocessor memory ordering table

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4638427A (en) * 1984-04-16 1987-01-20 International Business Machines Corporation Performance evaluation for an asymmetric multiprocessor system
US5077657A (en) * 1989-06-15 1991-12-31 Unisys Emulator Assist unit which forms addresses of user instruction operands in response to emulator assist unit commands from host processor
US6018797A (en) * 1996-12-09 2000-01-25 Allen-Bradley Company, Llc Integrated relay ladder language, reduced instruction set computer
US6480952B2 (en) * 1998-05-26 2002-11-12 Advanced Micro Devices, Inc. Emulation coprocessor
US6247113B1 (en) * 1998-05-27 2001-06-12 Arm Limited Coprocessor opcode division by data type
US6882968B1 (en) * 1999-10-25 2005-04-19 Sony Computer Entertainment Inc. Method of measuring performance of an emulator and for adjusting emulator operation in response thereto
US7222064B1 (en) * 2003-10-10 2007-05-22 Unisys Corporation Instruction processor emulation having inter-processor messaging accounting
US7200723B1 (en) * 2004-08-06 2007-04-03 Xilinx, Inc. Access to a bank of registers of a device control register interface using a single address

Also Published As

Publication number Publication date
CN1794168A (zh) 2006-06-28
EP1674989A1 (en) 2006-06-28
JP2006178646A (ja) 2006-07-06
US20060161420A1 (en) 2006-07-20
DE602005019019D1 (de) 2010-03-11
KR20060071344A (ko) 2006-06-26
US7818162B2 (en) 2010-10-19
EP1674989B1 (en) 2010-01-20

Similar Documents

Publication Publication Date Title
US7818162B2 (en) Information processing device, information processing method, semiconductor device, and computer program for executing instructions by using a plurality of processors
US4879646A (en) Data processing system with a pipelined structure for editing trace memory contents and tracing operations during system debugging
JP2003510682A5 (ja)
US7613912B2 (en) System and method for simulating hardware interrupts
JPH01310441A (ja) データ処理装置
US6968410B2 (en) Multi-threaded processing of system management interrupts
US10409602B2 (en) Vector operand bitsize control
JP3892873B2 (ja) プログラマブルコントローラ
JPWO2019092849A1 (ja) シミュレーション装置、シミュレーション方法およびシミュレーションプログラム
JPH03271829A (ja) 情報処理装置
JP2525492B2 (ja) プログラマブルコントロ―ラ
JP7489398B2 (ja) トレース回路、半導体装置、トレーサ、トレースシステム
JP7378254B2 (ja) マルチプロセッサデバイス
JP2009223861A (ja) 論理検証システム
KR20080044652A (ko) Cpu에서의 스택을 이용한 디버깅 방법
JP3753572B2 (ja) シミュレーションシステムおよび命令シミュレーション方法
CN116382893A (zh) 基于协处理器的运算方法、装置、存储介质及电子设备
JP2000029508A (ja) プログラマブルコントローラ
KR100195221B1 (ko) 프로그램 수행시 명령어의 실행 횟수 측정장치
JPWO2020178985A1 (ja) ボトルネック検出装置及びボトルネック検出プログラム
KR20180038875A (ko) 데이터 입출력 유닛, 전자 장치 및 그 제어 방법들
JP4013972B2 (ja) プロセッサ、プロセッサでのプログラム実行方法
JP2010085177A (ja) 半導体試験装置
JPS60193047A (ja) マイクロプログラムのロ−ドチエツク方式
JPS61131127A (ja) スキヤンイン制御方式

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060801

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060929

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070320

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070322

R150 Certificate of patent or registration of utility model

Ref document number: 3938580

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110406

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120406

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130406

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130406

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140406

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250