JP2008299648A - プログラムおよび情報処理装置 - Google Patents

プログラムおよび情報処理装置 Download PDF

Info

Publication number
JP2008299648A
JP2008299648A JP2007145706A JP2007145706A JP2008299648A JP 2008299648 A JP2008299648 A JP 2008299648A JP 2007145706 A JP2007145706 A JP 2007145706A JP 2007145706 A JP2007145706 A JP 2007145706A JP 2008299648 A JP2008299648 A JP 2008299648A
Authority
JP
Japan
Prior art keywords
processor
memory
instruction
program
instruction set
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.)
Pending
Application number
JP2007145706A
Other languages
English (en)
Inventor
Seiji Maeda
誠司 前田
Hidenori Matsuzaki
秀則 松崎
Yusuke Shirota
祐介 城田
Kazuya Kitsunai
和也 橘内
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2007145706A priority Critical patent/JP2008299648A/ja
Priority to US12/047,835 priority patent/US7707392B2/en
Publication of JP2008299648A publication Critical patent/JP2008299648A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Multi Processors (AREA)

Abstract

【課題】一方のプロセッサ用のプログラムを、他方のプロセッサ用のプログラムへ変換する際に、正しく実行されるプログラムへ変換することができる。
【解決手段】本発明は、第1のメモリ40へアクセスする第1のプロセッサ10aと、第2のメモリ20へアクセスする第2のプロセッサ10bと、第1のメモリ40と第2のメモリ20間のデータ転送を行うデータ転送手段50とを備える情報処理装置1において、第1のプロセッサ10aに、プログラムを構成する命令について、メモリアクセス命令以外の命令を第2のプロセッサ10b用の命令へ変換させ、メモリアクセス命令を第1のメモリ40上のアクセスデータを第2のメモリ20へデータ転送手段を介して転送させるプログラムの呼び出し命令を含む命令列へ変換させる機能を実現させることを特徴とするプログラムである。
【選択図】図1

Description

本発明は、プログラムおよび情報処理装置に関するものである。
近年の情報処理装置では、様々なアプリケーションの処理に適した汎用プロセッサと、マルチメディア処理などの特定のアプリケーションに適した専用プロセッサとを同時に備える非対称マルチプロセッサ構成が採用されている。
非対称マルチプロセッサ構成では、汎用プロセッサと専用プロセッサとで、それぞれの用途に適した命令を備えることにより処理性能や実装の効率化を実現するため、一般的に、実行可能な命令の集合即ち命令セットが異なる。命令セットの異なる汎用プロセッサと専用プロセッサとの双方が同じ機能のプログラムを実行する場合には、汎用プロセッサ用の命令セットに対応したプログラムと、専用プロセッサ用の命令セットに対応したプログラムとが必要となる。
しかし、命令セットの異なるプロセッサごとにプログラムを用意する構成とすると、プログラムを記憶するために使用するメモリの記憶領域を増大するという問題点がある。
そこで、汎用プロセッサ用の命令セットに対応したプログラムを、専用プロセッサ用の命令セットに対応したプログラムへ変換するバイナリトランスレータに関する技術が開示されている(例えば、特許文献1参照。)。
特表2002―536712公報
上述したように、特許文献1には、汎用プロセッサ用の命令セットに対応したプログラムを、専用プロセッサ用の命令セットに対応したプログラムへ変換する技術が開示されている。
しかしながら、例えば、それぞれのプロセッサの負荷に応じてプログラムの実行主体を汎用プロセッサから専用プロセッサへ動的に変更する場合など、プログラムの実行を引き継いだ専用プロセッサが、そのプログラムの実行に使用するデータに対してアクセスする必要がある。そのプログラムの実行に使用するデータは、メインメモリや引継ぎ前にプログラムを実行していた汎用プロセッサが備えるローカルメモリなどへ記憶される。
一方、専用プロセッサは、メインメモリや他のプロセッサのローカルメモリ等の外部メモリに対してアクセスできない構成とされることがある。このような場合、たとえ汎用プロセッサ用の命令セットに対応したプログラムを、専用プロセッサ用の命令セットに対応したプログラムへ変換したとしても、そのプログラムの実行に使用するデータにアクセスできないため、その変換されたプログラムが専用プロセッサにより正しく実行されないという問題があった。
本発明は、上記問題点を解決するためになされたものであって、一方のプロセッサ用の命令セットに対応したプログラムを、他方のプロセッサ用の異なる命令セットに対応したプログラムへ変換する際に、他方のプロセッサで正しく実行されるプログラムへ変換することができるプログラムおよび情報処理装置を提供することを目的とする。
上記目的を達成するために、本発明の実施形態に係るプログラムは、第1の命令セットに属する命令を実行可能な第1のプロセッサと、第2の命令セットに属する命令を実行可能な第2のプロセッサと、前記第2のプロセッサからはアクセスされない、前記第1の命令セットに含まれる命令から構成された変換対象プログラムを記憶する第1のメモリと、前記第2のプロセッサからアクセスされる第2のメモリと、前記第1のメモリと前記第2のメモリとの間でデータ転送を行うデータ転送手段とを備える情報処理装置の前記第1のプロセッサに、前記変換対象プログラムを前記第1のメモリから読み出す読出機能と、前記読み出した変換対象プログラムを構成する前記命令のそれぞれがメモリアクセス命令であるか否かを判定する判定機能と、前記判定機能によってメモリアクセス命令でないと判定された前記命令を、対応する前記第2の命令セットに含まれる命令へ変換する第1の変換機能と、前記判定機能によってメモリアクセス命令であると判定された前記命令を、データ転送ライブラリの呼び出し命令を含む命令列へ変換する第2の変換機能とを実現させるプログラムであって、前記データ転送ライブラリは、前記第2のプロセッサに、前記データ転送手段を制御させることによって前記第1のメモリと前記第2のメモリとの間のデータ転送を行わせることを特徴とする。
本発明によれば、一方のプロセッサ用の命令セットに対応したプログラムを、他方のプロセッサ用の異なる命令セットに対応したプログラムへ変換する際に、他方のプロセッサで正しく実行されるプログラムへ変換することができる。
以下、本発明の実施形態について説明する。
(実施形態)
図1は、本発明の実施形態に係る情報処理装置1を示すブロック図である。
この実施形態に係る情報処理装置1は、プロセッサA10aと、プロセッサB10bと、ローカルメモリ20と、プログラムメモリA30aと、プログラムメモリB30bと、メインメモリ40と、データ転送装置50と、内部バス60と、外部バス70とを備える。
プロセッサA10aは、外部バス70を介して、プログラムメモリA30aとメインメモリ40とに接続される。プロセッサB10bは、内部バス60を介して、ローカルメモリ20とプログラムメモリB30bとに接続される。プロセッサA10aとプロセッサB10bは、演算処理などについて同期をとるために接続される。プロセッサB10bは、データ転送装置50と接続される。
プロセッサA10aは、プログラムメモリA30aおよびメインメモリ40へアクセスし、プログラムメモリA30aおよびメインメモリ40に記憶されたプログラムの実行に伴う演算処理などを行う。プロセッサA10a用の命令セットAは、プロセッサB10b用の命令セットBと異なる。
プログラムメモリA30aは、例えば、リードオンリーメモリ(ROM)により構成され、プロセッサA10aにより実行されるプログラムを記憶する。メインメモリ40は、例えば、ランダムアクセスメモリ(RAM)により構成され、プロセッサA10aにより実行されるプログラムやプロセッサA10aがプログラムを実行する際に使用するデータなどを記憶する。
プロセッサB10bは、ローカルメモリ20およびプログラムメモリB30bへアクセスし、ローカルメモリ20およびプログラムメモリB30bに記憶されたプログラムの実行に伴う演算処理などを行う。プロセッサB10bは、データ転送装置50を制御する。プロセッサB10bにより制御されるデータ転送装置50は、ローカルメモリ20とメインメモリ40との間のデータ転送を行う。
ローカルメモリ20は、例えば、RAMにより構成され、プロセッサB10bにより実行されるプログラムやプロセッサB10bがプログラムを実行する際に使用するデータを記憶する。また、ローカルメモリ20は、メインメモリ40に記憶されているデータをキャッシュ(一次記憶)する。プログラムメモリB30bは、例えば、ROMにより構成され、プロセッサB10bにより実行されるプログラムを記憶する。
データ転送装置50は、プロセッサB10bによって制御され、プロセッサB10bにより指定されたデータを、メインメモリ40からローカルメモリ20へ、あるいはローカルメモリ20からメインメモリ40へ転送する。データ転送装置50は、例えば、ダイレクトメモリアクセスコントローラ(DMAコントローラ)により構成される。
図2は、メインメモリ40およびローカルメモリ20に記憶されるデータとプログラムの一例を示す。
図2に示される一例では、メインメモリ40は、対象プログラム41と、対象プログラム用データ42と、バイナリトランスレータ43とを記憶している。ローカルメモリ20は、変換後プログラム21と、中継コード22と、一時データ23と、読み出しライブラリ24と、書き込みライブラリ25とを記憶している。
対象プログラム41は、プロセッサA10a用の命令セットAに対応しており、プロセッサA10aにより実行可能なプログラムである。対象プログラム41は、プロセッサA10aとプロセッサB10bの負荷分散などのため、プロセッサB10bにおいても実行可能となることが望ましい。しかしながら、この対象プログラム41は、プロセッサB10b用の命令セットBには対応していない。そのため、プロセッサB10bは、この対象プログラム41を実行することができない。
対象プログラム用データ42は、プロセッサA10aが対象プログラム41を実行する際に使用するデータである。
バイナリトランスレータ43は、プロセッサA10a用の命令セットAに対応しており、プロセッサA10aにより実行可能なプログラムである。バイナリトランスレータ43は、プロセッサA10aに、プロセッサA10a用の命令セットAに対応したプログラムを、プロセッサB10b用の命令セットBに対応したプログラムへ変更する機能を持つ。なお、バイナリトランスレータ43の詳細については後述する。
変換後プログラム21は、対象プログラム41と同一の機能をプロセッサに実現させるプログラムである。変換後プログラム21は、プロセッサB10b用の命令セットBに対応しており、プロセッサB10bにより実行可能なプログラムである。変換後プログラム21は、プロセッサA10aがバイナリトランスレータ43に従って対象プログラム41をプロセッサB10b用の命令セットBに対応したプログラムへ変換することにより、得られたプログラムである。
中継コード22は、プロセッサA10aがバイナリトランスレータ43に従って対象プログラム41を変換後プログラム21へ変換する際に生成する微小プログラムである。中継コード22は、後述の読み出しライブラリ24および書き込みライブラリ25をプロセッサB10bに呼び出させることにより、プロセッサB10bにメインメモリ40に記憶されたデータ(例えば、対象プログラム用データ42)へアクセスする機能を実現させる。
図2に示される一例では、変換後プログラム21と中継コード22とがローカルメモリ20にわけられて記憶されている。しかし、バイナリトランスレータ43によって対象プログラム41が変換後プログラム21へ変換される際に、変換後プログラム21に中継コード22を組み込むこととしても良い。
読み出しライブラリ24と書き込みライブラリ25はプロセッサB10bにより実行可能なプログラムであって、プロセッサB10bがデータ転送装置50を制御するために必要なプログラムが複数集められたものである。
読み出しライブラリ24は、プロセッサB10bにデータ転送装置50を制御させ、メインメモリ40に記憶されたデータをローカルメモリ20へ転送する機能を実現する。書き込みライブラリ25は、プロセッサB10bにデータ転送装置50を制御させ、ローカルメモリ20に記憶されたデータをメインメモリ40へ転送する機能を実現する。
また、読み出しライブラリ24と書き込みライブラリ25は、メインメモリ40からローカルメモリ20へ転送されたデータの一部を、プロセッサB10bに一時データ23として一時記憶(キャッシュ)させる機能を実現する。読み出しライブラリ24の開始アドレスは「0x31000」であり、書き込みライブラリ25の開始アドレスは「0x32000」である。
図3は、プロセッサA10aが、バイナリトランスレータ43に従い、プロセッサA10aの命令セットAに対応した対象プログラム41を、プロセッサB10bの命令セットBに対応した変換後プログラム21へ、変換する際のプロセッサA10aの動作を示すフローチャートである。
まず、プロセッサA10aは、プロセッサA10a用の命令セットAに対応したバイナリトランスレータ43(プログラム)を実行する。また、プロセッサA10aは、バイナリトランスレータ43に従い、対象プログラム41をメインメモリ40から読み出す。
次に、プロセッサA10aは、バイナリトランスレータ43に従い、対象プログラム41を構成するすべての命令についてプロセッサA10aで実行可能な命令からプロセッサB10bで実行可能な命令へ変換する処理を行ったか否かを判定する(ステップS101)。
対象プログラム41を構成するすべての命令についての変換処理が終了したと判定された場合(ステップS101のはい)、プロセッサA10aは、バイナリトランスレータ43の実行を終了する。
一方、対象プログラム41を構成するすべての命令についての変換処理が終了していないと判定された場合(ステップS101のいいえ)、プロセッサA10aは、バイナリトランスレータ43に従い、未変換の命令についての変換処理(ステップS102乃至S104)を逐次実行する。
以下に、プロセッサA10aが実行する変換処理を説明する。まず、プロセッサA10aは、対象プログラム41を構成する命令であって、変換処理対象の命令がメモリアクセス命令であるか否かを判定する(ステップS102)。なお、メモリアクセス命令とは、例えば、メモリロード命令、メモリストア命令などであって、プロセッサA10aにより当該命令が実行された場合にメインメモリ40へのデータ読出し処理、あるいはデータ書き込み処理を伴う命令である。
変換処理対象の命令がメモリアクセス命令でないと判定された場合(ステップS102のいいえ)、プロセッサA10aは、命令セットAの命令であって変換処理対象の命令を、命令変換テーブル(図4)に従い、命令セットBの命令(プロセッサB10b用のコード)へ変換する(ステップS104)。
図4は、プロセッサA10aが、バイナリトランスレータ43に従い、命令セットAの命令を命令セットBの命令へ変換する際(図3のステップS104)に使用する命令変換テーブルを示す。命令変換テーブルは、命令セットAの命令のそれぞれと、対応する命令セットBの1つの命令あるいは複数の命令と、が関連付けられた変換エントリを複数保持する。なお、命令変換テーブルは、バイナリトランスレータ43に組み込まれていても良く、プロセッサA10aがアクセス可能なプログラムメモリA30aやメインメモリ40に記憶されていても良い。
図4に示される例では、命令変換テーブルは、命令セットAの加算命令「add」と命令セットBの加算命令「a」との組である変換エントリと、命令セットAの減算命令「subf」と命令セットBの減算命令「sf」との組である変換エントリと、命令セットAの分岐命令「br」と命令セットBの分岐命令「b」との組である変換エントリとを有する。
例えば、図3のステップS104において、変換処理対象の命令が加算命令「add」であった場合、プロセッサA10aは、命令変換テーブルの中から命令セットAの加算命令「add」を有する変換エントリを検索し、命令セットBの加算命令「a」へ変換する。
以下同様に、プロセッサA10aは、変換処理対象の命令が減算命令「subf」であった場合は、命令セットBの減算命令「sf」へ変換する。プロセッサA10aは、変換処理対象の命令が分岐命令「b」であった場合は、命令セットBの分岐命令「br」へ変換する。
一方、変換処理対象の命令がメモリアクセス命令であると判定された場合(ステップS102のはい)、プロセッサA10aは、命令セットAの命令であって変換処理対象のメモリアクセス命令を、プロセッサB10bで実行可能な命令セットBに対応させることのみならず、プロセッサB10bによるメモリアクセスを可能とするような命令列(プロセッサB10b用の中継コード22)へ変換する。
以下に、プロセッサA10aが上述の処理を行う理由を説明する。
プロセッサA10aは、対象プログラム41を実行する際にメインメモリ40に記憶された対象プログラム用データ42などへアクセスする。しかし、プロセッサB10bはメインメモリ40と接続されておらず、メインメモリ40へアクセスすることはできない。
そのため、仮に、命令セットAのメモリアクセス命令(例えば、load命令)を対応する命令セットBのメモリアクセス命令へ変換したとしても、アクセスするデータがメインメモリ40に記憶されている場合は、プロセッサB10bは上記の命令を実行することができない。
よって、プロセッサA10aは、メモリアクセス命令をプロセッサB10bで実行可能な命令へ変換する際には、単純に命令セットBに対応させるのみならず、プロセッサB10bによってその変換処理対象の命令が実行された場合に発生するメモリアクセスを可能とするような命令列に変換する必要がある。
プロセッサB10bがメインメモリ40に記憶されているデータへアクセスする際には、プロセッサB10bは、データ転送手段を制御して、メインメモリ40に記憶されているデータをローカルメモリ20へ転送し、その次に、ローカルメモリ20に転送されたデータへアクセスする。
そこで、プロセッサA10aは、メモリアクセス命令をプロセッサB10bにとって実行可能な命令へ変換する際には、データ転送装置50によるメインメモリ40とローカルメモリ20との間のデータ転送のための読み出しライブラリ24あるいは書き込みライブラリ25を呼び出す命令を含む命令列(プロセッサB10b用の中継コード22)への変換を行う。なお、プロセッサA10aがメモリアクセス命令を中継コード22へ変換する方法については後述する(図6のステップS201乃至S204)。
次に、プロセッサA10aが、変換処理対象の命令がメモリアクセス命令か否かに応じて、その変換処理対象の命令を、プロセッサB10b用のコード(ステップS104)、あるいはプロセッサB10b用の中継コード22(ステップS103)へ変換した後、プロセッサA10aは、ステップS101の処理を再度行う。
即ち、プロセッサA10aは、対象プログラム41を構成するすべての命令について、プロセッサA10aで実行可能な命令からプロセッサB10bで実行可能な命令へ変換する処理を行ったか否かを判定する。
すべての命令の変換処理が終了したと判定された場合(ステップS101のはい)、プロセッサA10aは、バイナリトランスレータ43の実行を終了する。ここで、対象プログラム41を構成するすべての命令をプロセッサB10b用のコードあるいは中継コード22へ変換する処理が終了しているため、プロセッサA10aは、プロセッサB10b用のコードおよび中継コード22から変換後プログラム21を構成することができる。
一方、すべての命令についての変換処理が終了していないと判定された場合(ステップS101のいいえ)、プロセッサA10aは、未変換の命令についての変換処理(ステップS102乃至S104)を繰り返し実行する。
以上のように、プロセッサA10aは、バイナリトランスレータ43に従い、プロセッサA10a用の対象プログラム41を、プロセッサB10b用の変換後プログラム21へ変換する。
図5は、プロセッサA10aが、バイナリトランスレータ43に従い、変換処理対象のメモリアクセス命令を、プログラムB用の中継コード22へ変換する際(図3のステップS103)に使用するライブラリアドレステーブルを示す。
ライブラリアドレステーブルは、命令セットAのメモリアクセス命令のそれぞれと、対応するライブラリの先頭アドレスと、が関連付けられたライブラリアドレスエントリを複数保持する。なお、ライブラリアドレステーブルは、バイナリトランスレータ43に組み込まれていても良く、プロセッサA10aがアクセス可能なプログラムメモリA30aやメインメモリ40に記憶されていても良い。
図5に示される例では、ライブラリアドレステーブルは、命令セットAのメモリロード命令「load」と読み出しライブラリ24の先頭アドレス「0x31000」との組であるライブラリアドレスエントリと、命令セットAのメモリストア命令「store」と書き込みライブラリ25の先頭アドレス「0x32000」との組であるライブラリアドレスエントリとを有する。
図6は、プロセッサA10aが、バイナリトランスレータ43に従い、変換処理対象のメモリアクセス命令を、プログラムB用の中継コード22へ変換する際(図4のステップS103)のプロセッサA10aの動作を示すフローチャートである。
まず、プロセッサA10aは、読み出しライブラリ24あるいは書き込みライブラリ25がプロセッサB10bにより実行される際に使用されるレジスタ上に既に記憶されているデータをローカルメモリ20へ複製するための退避コードを生成する(ステップS201)。
この退避コードは、プロセッサB10bによる変換後プログラム21の実行時に読み出しライブラリ24あるいは書き込みライブラリ25が呼び出されることによって、プロセッサB10bのレジスタに記憶されるデータ(例えば、変換後プログラム21の処理の途中経過)が消失するのを防ぐためのものである。
次に、プロセッサA10aは、ライブラリアドレステーブル(図5)へアクセスし、命令セットAの命令であって変換処理の対象であるメモリアクセス命令を有するライブラリアドレスエントリを検索する(ステップS202)。
そして、プロセッサA10aは、ライブラリアドレステーブルから検索されたライブラリアドレスエントリを用いて、対応するライブラリの呼び出し命令(プロセッサB10b用の呼出コード)を生成する(ステップS203)。
例えば、図3のステップS103において、変換処理の対象であるメモリアクセス命令がメモリロード命令「load」であった場合、プロセッサA10aは、ライブラリアドレステーブルの中から命令セットAのメモリロード命令「load」を有するライブラリアドレスエントリを検索し(ステップS202)、読み出しライブラリ24の先頭アドレス「0x31000」を取得する。
読み出しライブラリ24は、プロセッサB10bにデータ転送装置50を制御させ、メインメモリ40上のデータをローカルメモリ20へ転送する機能を実現させるプログラムである。プロセッサA10aは、読み出しライブラリ24の先頭アドレス「0x31000」を用いて読み出しライブラリ24を呼び出す命令(プロセッサB10b用の呼出コード)を生成する。この呼出コードは、プロセッサB10bに、メモリロード命令「load」でアクセスされるメインメモリ40上のデータをローカルメモリ20へ転送させる機能を実現させる。
また、プロセッサA10aは、メインメモリ40からローカルメモリ20へ転送されたデータを、ローカルメモリ20からロードする命令をプロセッサB10b用の呼出コードの一部として組み込む。
次に、プロセッサA10aは、ステップS201において生成された退避コードが実行されることによりレジスタからローカルメモリ20へ複製されたデータを、複製される前に格納されていたレジスタへ読み込む命令(プロセッサB10b用の復元コード)を生成する(ステップS204)。
以上のように、プロセッサA10aは、バイナリトランスレータ43に従い、変換処理の対象であるメモリアクセス命令から、プロセッサB10b用の退避コード、呼出コード、および復元コードを生成し、それらのコードを順に結合して中継コード22を生成する。このようにして、プロセッサA10aは、変換処理の対象であるメモリアクセス命令を、プロセッサB10b用の中継コード22へ変換する。
このように、実施形態に係る情報処理装置1によれば、プロセッサB10bがメインメモリ40へアクセスできない場合であっても、プロセッサA10a用の命令セットAに対応した対象プログラム41を、プロセッサB10b用の異なる命令セットBに対応した変換後プログラム21へ変換する際に、プロセッサB10bで正しく実行されるプログラムへ変換することができる。
なお、バイナリトランスレータ43はメインメモリ40に記憶されていてプロセッサA10a用の命令セットAに対応したプログラムであるものとしたが、バイナリトランスレータがローカルメモリ20に記憶されていてプロセッサB10b用の命令セットBに対応したプログラムであるものとしてもよい。
その場合、プロセッサB10bは、データ転送装置50を制御し、メインメモリ40に記憶された対象プログラム41をローカルメモリ20へ転送する。そして、プロセッサB10bは、プロセッサB10b用のバイナリトランスレータに従い、ローカルメモリ20に転送されたプロセッサA10a用の命令セットAに対応した対象プログラム41を、プロセッサB10b用の命令セットBに対応した変換後プログラム21へ変換する。
このようにすることによって、プロセッサA10aの負荷が大きいと判断された場合には、プロセッサB10bが、対象プログラム41から変換後プログラム21への変換処理、および変換後プログラム21の実行処理を行うことにより、プロセッサA10aの負荷を軽減することができる。
また、プロセッサA10a用の命令セットAに対応したバイナリトランスレータ43がメインメモリ40に記憶されていて、かつ、プロセッサB10b用の命令セットBに対応したバイナリトランスレータがローカルメモリ20に記憶されているものとする構成をとることができる。
このようにすることによって、プロセッサA10aとプロセッサB10bの負荷に応じて、対象プログラム41から変換後プログラム21への変換処理を、プロセッサA10aあるいはプロセッサB10bのどちらで行うかを切り替えることができる。なお、いずれのプロセッサが対象プログラム41から変換後プログラム21への変換処理を行うかについては、例えば、外部バス70に接続された図示しないスケジューリング専用のプロセッサが決定する構成としてもよい。
さらにまた、プロセッサA10aは、メインメモリ40に記憶されたプロセッサA用の命令セットAに対応したバイナリトランスレータ43を実行することにより、そのバイナリトランスレータ43をプロセッサB10b用の命令セットBに対応したバイナリトランスレータへ変換することができる。
このようにすることによって、プロセッサA10a用およびプロセッサB10b用のバイナリトランスレータを双方用意しなくても、プロセッサA10aあるいはプロセッサB10bで、対象プログラム41から変換後プログラム21への変換処理を行うことができる。
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
本発明の実施形態に係る情報処理装置の構成を示すブロック図。 本発明の実施形態に係るメインメモリおよびローカルメモリの記憶内容の一例を示す図。 本発明の実施形態に係る情報処理装置の動作を示すフローチャート。 命令変換テーブルが保持する内容の一例を示す図。 ライブラリアドレステーブルが保持する内容の一例を示す図。 本発明の実施形態に係る情報処理装置の動作を示すフローチャート。
符号の説明
1・・・情報処理装置
10a・・・プロセッサA
10b・・・プロセッサB
20・・・ローカルメモリ
21・・・変換後プログラム
22・・・中継コード
23・・・一時データ
24・・・読み出しライブラリ
25・・・書き込みライブラリ
30a・・・プログラムメモリA
30b・・・プログラムメモリB
40・・・メインメモリ
41・・・対象プログラム
42・・・対象プログラム用データ
43・・・バイナリトランスレータ
50・・・データ転送装置
60・・・内部バス
70・・・外部バス

Claims (6)

  1. 第1の命令セットに属する命令を実行可能な第1のプロセッサと、第2の命令セットに属する命令を実行可能な第2のプロセッサと、前記第2のプロセッサからはアクセスされない、前記第1の命令セットに含まれる命令から構成された変換対象プログラムを記憶する第1のメモリと、前記第2のプロセッサからアクセスされる第2のメモリと、前記第1のメモリと前記第2のメモリとの間でデータ転送を行うデータ転送手段とを備える情報処理装置の前記第1のプロセッサに、
    前記変換対象プログラムを前記第1のメモリから読み出す読出機能と、
    前記読み出した変換対象プログラムを構成する前記命令のそれぞれがメモリアクセス命令であるか否かを判定する判定機能と、
    前記判定機能によってメモリアクセス命令でないと判定された前記命令を、対応する前記第2の命令セットに含まれる命令へ変換する第1の変換機能と、
    前記判定機能によってメモリアクセス命令であると判定された前記命令を、データ転送ライブラリの呼び出し命令を含む命令列へ変換する第2の変換機能とを実現させるプログラムであって、
    前記データ転送ライブラリは、
    前記第2のプロセッサに、前記データ転送手段を制御させることによって前記第1のメモリと前記第2のメモリとの間のデータ転送を行わせること
    を特徴とするプログラム。
  2. 第1の命令セットに属する命令を実行可能な第1のプロセッサと、第2の命令セットに属する命令を実行可能な第2のプロセッサと、前記第2のプロセッサからはアクセスされない、前記第1の命令セットに含まれる命令から構成された変換対象プログラムを記憶する第1のメモリと、前記第2のプロセッサからアクセスされる第2のメモリと、前記第1のメモリと前記第2のメモリとの間でデータ転送を行うデータ転送手段とを備える情報処理装置の前記第2のプロセッサに、
    前記データ転送手段によって前記変換対象プログラムを前記第1のメモリから前記第2のメモリへ転送させる転送機能と、
    前記変換対象プログラムを前記第2のメモリから読み出す読出機能と、
    前記読み出した変換対象プログラムを構成する前記命令のそれぞれがメモリアクセス命令であるか否かを判定する判定機能と、
    前記判定機能によってメモリアクセス命令でないと判定された前記命令を、対応する前記第2の命令セットに含まれる命令へ変換する第1の変換機能と、
    前記判定機能によってメモリアクセス命令であると判定された前記命令を、データ転送ライブラリの呼び出し命令を含む命令列へ変換する第2の変換機能とを実現させるプログラムであって、
    前記データ転送ライブラリは、
    前記第2のプロセッサに、前記データ転送手段を制御させることによって前記第1のメモリと前記第2のメモリとの間のデータ転送を行わせること
    を特徴とするプログラム。
  3. 第1の命令セットに属する命令を実行可能な第1のプロセッサと、第2の命令セットに属する命令を実行可能な第2のプロセッサと、前記第2のプロセッサからはアクセスされない、前記第1の命令セットに含まれる命令から構成された変換対象プログラムを記憶する第1のメモリと、前記第2のプロセッサからアクセスされる第2のメモリと、前記第1のメモリと前記第2のメモリとの間でデータ転送を行うデータ転送手段とを備える情報処理装置において、
    前記第1のプロセッサが、
    前記変換対象プログラムを前記第1のメモリから読み出す読出手段と、
    前記読み出した変換対象プログラムを構成する前記命令のそれぞれがメモリアクセス命令であるか否かを判定する判定手段と、
    前記判定手段によってメモリアクセス命令でないと判定された前記命令を、対応する前記第2の命令セットに含まれる命令へ変換する第1の変換手段と、
    前記判定手段によってメモリアクセス命令であると判定された前記命令を、データ転送ライブラリの呼び出し命令を含む命令列へ変換する第2の変換手段とを備え、
    前記データ転送ライブラリは、
    前記第2のプロセッサに、前記データ転送手段を制御させることによって前記第1のメモリと前記第2のメモリとの間のデータ転送を行わせること
    を特徴とする情報処理装置。
  4. 第1の命令セットに属する命令を実行可能な第1のプロセッサと、第2の命令セットに属する命令を実行可能な第2のプロセッサと、前記第2のプロセッサからはアクセスされない、前記第1の命令セットに含まれる命令から構成された変換対象プログラムを記憶する第1のメモリと、前記第2のプロセッサからアクセスされる第2のメモリと、前記第1のメモリと前記第2のメモリとの間でデータ転送を行うデータ転送手段とを備える情報処理装置において、
    前記第2のプロセッサが、
    前記データ転送手段によって前記変換対象プログラムを前記第1のメモリから前記第2のメモリへ転送させる転送手段と、
    前記変換対象プログラムを前記第2のメモリから読み出す読出手段と、
    前記読み出した変換対象プログラムを構成する前記命令のそれぞれがメモリアクセス命令であるか否かを判定する判定手段と、
    前記判定手段によってメモリアクセス命令でないと判定された前記命令を、対応する前記第2の命令セットに含まれる命令へ変換する第1の変換手段と、
    前記判定手段によってメモリアクセス命令であると判定された前記命令を、データ転送ライブラリの呼び出し命令を含む命令列へ変換する第2の変換手段とを備え、
    前記データ転送ライブラリは、
    前記第2のプロセッサに、前記データ転送手段を制御させることによって前記第1のメモリと前記第2のメモリとの間のデータ転送を行わせること
    を特徴とする情報処理装置。
  5. 第1の命令セットに属する命令を実行可能な第1のプロセッサと、第2の命令セットに属する命令を実行可能な第2のプロセッサと、前記第2のプロセッサからはアクセスされない、前記第1の命令セットに含まれる命令から構成された変換対象プログラムを記憶する第1のメモリと、前記第2のプロセッサからアクセスされる第2のメモリと、前記第1のメモリと前記第2のメモリとの間でデータ転送を行うデータ転送手段とを備える情報処理装置において、
    前記第1のプロセッサと前記第2のプロセッサの負荷に応じて、請求項1に記載のプログラムが前記第1のプロセッサによって実行され、あるいは請求項2に記載のプログラムが前記第2のプロセッサによって実行されることにより、前記第1のメモリに記憶された前記変換対象プログラムに対する変換処理が行われることを特徴とする情報処理装置。
  6. 第1の命令セットに属する命令を実行可能な第1のプロセッサと、第2の命令セットに属する命令を実行可能な第2のプロセッサと、前記第2のプロセッサからはアクセスされない、前記第1の命令セットに含まれる命令から構成された変換対象プログラムを記憶する第1のメモリと、前記第2のプロセッサからアクセスされる第2のメモリと、前記第1のメモリと前記第2のメモリとの間でデータ転送を行うデータ転送手段とを備える情報処理装置において、
    前記変換対象プログラムが、請求項1に記載のプログラムであり、
    請求項1に記載のプログラムが前記第1のプロセッサによって実行され、前記変換対象プログラムである請求項1に記載のプログラムが前記第2のプロセッサにとって実行可能なプログラムへ変換されることを特徴とする情報処理装置。
JP2007145706A 2007-05-31 2007-05-31 プログラムおよび情報処理装置 Pending JP2008299648A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007145706A JP2008299648A (ja) 2007-05-31 2007-05-31 プログラムおよび情報処理装置
US12/047,835 US7707392B2 (en) 2007-05-31 2008-03-13 Accessing data in inaccessible memory while emulating memory access instruction by executing translated instructions including call to transfer data to accessible memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007145706A JP2008299648A (ja) 2007-05-31 2007-05-31 プログラムおよび情報処理装置

Publications (1)

Publication Number Publication Date
JP2008299648A true JP2008299648A (ja) 2008-12-11

Family

ID=40089595

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007145706A Pending JP2008299648A (ja) 2007-05-31 2007-05-31 プログラムおよび情報処理装置

Country Status (2)

Country Link
US (1) US7707392B2 (ja)
JP (1) JP2008299648A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013191089A (ja) * 2012-03-14 2013-09-26 Fujitsu Ltd 例外処理方法、プログラム及び装置
JP2021040232A (ja) * 2019-09-03 2021-03-11 ヤマハ株式会社 ライブラリプログラム、リンクプログラム、及び、音処理装置

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013095513A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Packed data operation mask shift processors, methods, systems, and instructions
US10114643B2 (en) * 2013-05-23 2018-10-30 Intel Corporation Techniques for detecting return-oriented programming
CN106325819B (zh) * 2015-06-17 2019-08-02 华为技术有限公司 计算机指令处理方法、协处理器和***
US10642963B2 (en) * 2016-12-08 2020-05-05 Ati Technologies Ulc Digital rights management for a GPU

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3369580B2 (ja) * 1990-03-12 2003-01-20 ヒューレット・パッカード・カンパニー 直接メモリアクセスを行うためのインターフェース装置及び方法
CA2137488C (en) 1994-02-18 1998-09-29 Richard I. Baum Coexecuting method and means for performing parallel processing in conventional types of data processing systems
US7275246B1 (en) * 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
EP2275930B1 (en) 1999-01-28 2017-06-14 Advanced Silicon Technologies, LLC Executing programs for a first computer architecture on a computer of a second architecture
US6820254B2 (en) * 2001-03-19 2004-11-16 International Business Machines Corporation Method and system for optimizing code using an optimizing coprocessor
JP4841861B2 (ja) * 2005-05-06 2011-12-21 ルネサスエレクトロニクス株式会社 演算処理装置及びデータ転送処理の実行方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013191089A (ja) * 2012-03-14 2013-09-26 Fujitsu Ltd 例外処理方法、プログラム及び装置
JP2021040232A (ja) * 2019-09-03 2021-03-11 ヤマハ株式会社 ライブラリプログラム、リンクプログラム、及び、音処理装置
JP7408956B2 (ja) 2019-09-03 2024-01-09 ヤマハ株式会社 ライブラリプログラム、リンクプログラム、及び、音処理装置

Also Published As

Publication number Publication date
US20080301415A1 (en) 2008-12-04
US7707392B2 (en) 2010-04-27

Similar Documents

Publication Publication Date Title
US9043806B2 (en) Information processing device and task switching method
JP4520790B2 (ja) 情報処理装置およびソフトウェアプリフェッチ制御方法
JP2008299648A (ja) プログラムおよび情報処理装置
JP2007299279A (ja) 演算装置、プロセッサシステム、及び映像処理装置
JP2010108086A (ja) Cpuエミュレーションシステム、cpuエミュレーション方法及びcpuエミュレーションプログラム
JP2007233615A (ja) アドレス変換装置
TWI757244B (zh) 包含支持指示意圖呼叫或回傳的控制移轉指令的處理器和系統及使用指示意圖呼叫或回傳的控制移轉指令的方法
JP2009271606A (ja) 情報処理装置およびコンパイル方法
JP2009093513A (ja) 命令ビット長削減方法
JP5278538B2 (ja) コンパイルシステム、コンパイル方法およびコンパイルプログラム
JP2008090455A (ja) マルチプロセッサ信号処理装置
JP6701650B2 (ja) 情報処理装置および画像形成装置
KR101203157B1 (ko) 데이터 전달 시스템, 장치 및 방법
TWI660307B (zh) 二元碼轉譯裝置及方法
JP2000353092A (ja) 情報処理装置及びそのレジスタファイル切替方法
JP2007018220A (ja) 演算処理装置及び演算処理方法
JP2000122876A (ja) 情報処理装置
JP2014010661A (ja) 分岐アドレス管理プログラム、方法、及び装置
JP7346883B2 (ja) ベクトルプロセッサ装置及び生成方法
JP2006099335A (ja) コンテキスト処理装置
JP5852090B2 (ja) 命令処理装置およびその命令処理方法
JP4768214B2 (ja) コンパイル方法、及びデータ処理装置。
JP5679263B2 (ja) 情報処理装置及びマイクロ命令処理方法
JP5630352B2 (ja) レジスタ配置最適化方法、レジスタ配置最適化プログラム、及びレジスタ配置最適化装置
JP2003216443A (ja) 中間コード実行装置および方法