(57)【要約】本発明は、例えばランタイムオペレーティングシステムのような、実行時のビットシャフリングコードを含む処理システムにおける実行可能コードの復号化に用いる方法、関連する装置、および制御プログラムを提供するものであって、その複合化方法は、前記コードを複数のサブ部分に分割するステップと、前記実行時の前にビットシャッフルできる前記コードのサブ部分を識別するステップと、実行時に要するビットシャフリングを削減するように、実行前に前記識別したサブ部分をビットシャッフルするステップとを含む。
2007520811.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサシステムにおけるビットシャフリングコードを含む実行可能コードの復号化に用いる方法であって：
‐前記コードを複数のサブ部分に分割するステップと；
‐処理する前にビットシャッフルすることができる前記コードのサブ部分を識別するステップと；
‐必要なビットシャフリング処理を削減するように、処理前に前記識別したサブ部分をビットシャッフルするステップと；
を含む、実行可能コード複合化方法。
【請求項２】
前記システムがランタイムオペレーティングシステムを含み、かつ、前記識別したサブ部分を実行時前にビットシャッフルする、請求項１に記載の方法。
【請求項３】
リンク時に、前記コードのローディングおよび再配置用の再配置パッチアップテーブルを生成するステップを含む、請求項２に記載の方法。
【請求項４】
前記リンクの終了時に前記コードのどのアドレスをパッチするかを決定するように、前記再配置パッチアップテーブルを検査するステップを含む、請求項３に記載の方法。
【請求項５】
前記識別したサブ部分をリンク時にビットシャッフルする、請求項２、３または４のいずれかに記載の方法。
【請求項６】
実行時にパッチおよびシャッフルすべきサブ部分の記録をビットマップ形式で生成するステップを含む、請求項２〜５のいずれかに記載の方法。
【請求項７】
前記ビットマップを前記実行可能コードに付加するステップを含む、請求項６に記載の方法。
【請求項８】
予めシャッフルすべきサブ部分を識別するために、実行時にパッチングを要しない前記コードのサブ部分を識別するステップを含む、請求項２〜７のいずれかに記載の方法。
【請求項９】
プログラムを実行するために、プログラムローダ内のプログラム実行用のコードエレメントを読取るステップを含む、請求項２〜８のいずれかに方法。
【請求項１０】
前記プログラムローダが前記再配置パッチアップテーブルおよび実行可能コードを読取り、かつ、その結果を実行可能コード内に書き戻す、請求項９に記載の方法。
【請求項１１】
前記実行可能コードが、ＴｒｉＭｅｄｉａ実行可能コードを包含するテキストセグメントを有するＴｒｉＭｅｄｉａプログラムを含む、請求項２〜１０のいずれかに記載の方法。
【請求項１２】
コードの各サブ部分がキャッシュサイズのブロックからなる、請求項２〜１１のいずれかに記載の方法。
【請求項１３】
各キャッシュサイズのブロックが６４バイトブロックからなる、請求項１２に記載の方法。
【請求項１４】
実行前にローディングおよび再配置を要する任意形式のＴｒｉＭｅｄｉａ実行可能イメージとともに使用する、請求項２〜１３のいずれかに記載の方法。
【請求項１５】
最後のリンク時の段階中に、予めシャッフルしたコードをリンクするステップを含む、請求項１に記載の方法。
【請求項１６】
プロセッサにおける実行可能コードを復号化する装置で、コードをビットシャッフルする手段を有する復号化装置であって、当該装置がさらに：
‐前記コードを複数のサブ部分に分割する手段と；
‐処理前にビットシャッフルすることができる前記コードのサブ部分を識別する手段と；
‐必要なビットシャフリング処理を削減するように、処理前に前記識別したサブ部分をビットシャッフルする手段と；
を有する、実行可能コード複合化装置。
【請求項１７】
前記プロセッサがランタイムオペレーティングシステムを有し、かつ、
前記識別したサブ部分を実行時前にビットシャッフルし得る部分とする請求項１６に記載の装置。
【請求項１８】
前記コードのローディングおよび再配置用の再配置パッチアップテーブルをリンク時に生成する手段を有する、請求項１７に記載の装置。
【請求項１９】
前記識別したサブ部分をリンク時にビットシャフリングする手段を有する、請求項１７または１８に記載の装置。
【請求項２０】
実行時にパッチおよびシャッフルすべきサブ部分の記録をビットマップ形式で生成する手段を有する、請求項１７、１８または１９のいずれかに記載の装置。
【請求項２１】
プログラムを実行するために、コードエレメントを読み込むプログラムローダを有する請求項１７、１８、１９または２０のいずれかに記載の装置。
【請求項２２】
前記プログラムローダが前記再配置パッチアップテーブルおよび実行可能コードを読取り、かつ、その結果を実行可能コード内に書き戻す、請求項２１に記載の装置。
【請求項２３】
コードの各サブ部分がキャッシュサイズのブロックからなる、請求項１７に記載の装置。
【請求項２４】
各キャッシュサイズブロックが６４バイトブロックからなる、請求項１７に記載の装置。
【請求項２５】
最後のリンク時の段階中に予めシャッフルしたコードをリンクする、請求項１６に記載の装置。
【請求項２６】
プロセッサにおけるビットシャフリングコードを含む実行可能コードを復号化するためにコンピュータに処理手順を実行させるコンピュータプログラムコード手段を有するコンピュータプログラムエレメントであって：
‐前記コードを複数のサブ部分に分割し；
‐処理する前にビットシャッフルすることができる前記コードのサブ部分を識別し；かつ、
‐必要なビットシャフリング処理を削減するように、処理前に前記識別したサブ部分をビットシャッフルする；
コンピュータプログラムエレメント。
【請求項２７】
ランタイムオペレーティングシステムにて復号化を制御する、請求項２６に記載のコンピュータプログラムエレメント。
【請求項２８】
最後のリンク時の段階中に、予めシャッフルしたコードのリンキングを制御する、請求項２６に記載のコンピュータプログラムエレメント。
【請求項２９】
コンピュータ可読媒体を有し、かつ、
請求項２６、２７または２８のいずれかに記載のプログラムエレメントを含むコンピュータプログラム製品。
【請求項３０】
請求項２６、２７または２８のいずれかに記載のコンピュータプログラムエレメントを含むコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＶＬＩＷプロセッサのようなプロセッサ、特にメモリにプロセッサの実行可能ファイルをロードし、かつ、再配置するのに使用する、特にランタイムオペレーティングシステムにおける実行可能コードを複合化するのに用いる方法およびこれに関連する装置に関する。
【背景技術】
【０００２】
マルチメディア処理の採用の増加に伴い、大形で複雑なマルチメディアアプリケーションをサポートできる強力なプロセッサが開発されてきている。
【０００３】
このようなアプリケーションに関連する実行可能ファイルを実行できるようにするには、メモリ内へ実行可能イメージをロードし、続いて再配置する必要がある。このような再配置は、実行可能ファイルにおけるアドレスへのリファレンスを、実際にロードするアドレススペースに整合させるようなバイナリ‐パッチング処理である。このようなアドレスへのリファレンスは通常、実行可能なテキストセグメントにおける決定ツリーの開始アドレス、もしくはデータセグメントや、日付セグメントや、ｂｓｓセグメントにおけるデータアドレスで構成することができる。
【０００４】
フィリップス社から市販されているＴｒｉＭｅｄｉａプロセッサはＶＬＩＷプロセッサの一例である。ＴｒｉＭｅｄｉａ実行可能ファイルは前述したようなコードの例であり、実行可能ファイルのパッチングの後には、特に実行時にプロセッサにキャッシュ効率のよい方法で前記実行可能ファイルを復号化させるために、ＴｒｉＭｅｄｉａ実行可能コードを包含しているテキストセグメントをビットシャッフルしなければならない。しかしながら、このようなビットシャフリングはメモリ集約的（memory-intensive）で、計算上費用のかかる演算を含み、またそれがロードするプログラムのサイズに比例することも分かっている。
【０００５】
例えばキャッシュファイルシステムからのようなメモリからの実行可能ファイルをロードする際には、前述のビットシャフリングオペレーションが実ロード時間の主要部を占めることが分かっている。
【０００６】
実行可能ファイルを頻繁にロードする必要があるような、または静的にリンクさせた大きなプログラムをロードすべきようなランタイムオペレーティングシステムでは、そのようなビットシャフリングオペレーションは性能を大幅に制約することになると考えられる。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、ランタイムオペレーティングシステムにおける実行可能コードの復号化に用いる方法及び関連する装置であって、既知のこのような方法や装置よりも優れた利点を呈するものを提供することにある。
【課題を解決するための手段】
【０００８】
本発明の第１の見地では、ビットシャフリングコードを有する処理システムにおける実行可能コードの復号化に用いる方法であって、前記コードを複数のサブ部分に分割するステップと；処理する前にビットシャッフルすることができる前記コードのサブ部分を識別するステップと；必要なビットシャフリング処理を削減するように、処理する前に前記識別したサブ部分をビットシャッフルするステップとを含む複合化方法を提供する。
【０００９】
本発明は、予めシャッフルしたバイナリコードに対して、例えば最後のリンク時の段階中における予めシャッフルしたバイナリオブジェクトコードをリンクするような処理段階に有利に適用することができる。
【００１０】
本発明の好適例では、処理システムが実行前にビットシャフリングを伴うランタイムオペレーティングシステムを含み、前記識別したサブ部分を実行時前にビットシャッフルし得るようにする。
【００１１】
前記コードのサブ部分の事前のシャフリングによってランタイムシャフリング遅延を２０−２５％程度内に削減することができ、これにより実行可能ファイルのロードおよび再配置時間を増やせるので有利である。
【００１２】
したがってランタイムパフォーマンスを改善でき、本発明はＴｒｉＭｅｄｉａプログラムおよび実行可能ファイルを扱う際に特に有利であることが明らかである。
【００１３】
本発明による方法は、リンク時に、コードのローディングおよび再配置用の再配置パッチアップテーブルを生成するステップを含むようにするのが有利である。
【００１４】
さらに、再配置パッチアップテーブルは、前記リンク時間の終了時に、前記コードのどのアドレスをパッチするのかを決定するように検査する。
【００１５】
本発明による方法は、実行時にパッチおよびシャッフルすべきサブ部分の記録をビットマップ形式で生成するステップを含むようにするのが好適である。
【００１６】
本発明はまた、プログラムローダ内にプログラム実行用のコードエレメントを読取るステップを含むこともできる。
【００１７】
この場合、前記プログラムローダは、前記再配置パッチアップテーブルおよび実行可能コードを読取り、かつ、その結果を実行可能コード内に書き戻すべく配置することができる。
【００１８】
本発明の他の見地では、プロセッサにおける実行可能ファイルを復号化する装置で、コードをビットシャッフルする手段を有する復号化装置であって、前記コードを複数のサブ部分に分割する手段と；処理前にビットシャッフルすることができる前記コードのサブ部分を識別する手段と；必要なビットシャフリング処理を削減するように、処理する前に前記識別したサブ部分をビットシャッフルする手段とをさらに有している複合化装置を提供する。
【００１９】
前記プロセッサは、ランタイムオペレーティングシステムを有するのが有利である。
【００２０】
本発明の複合化装置は、前記コードのローディングおよび再配置用の再配置パッチアップテーブルをリンク時に生成する手段を有するのが好適である。
【００２１】
さらに本発明の複合化装置は、前記識別したサブ部分をリンク時にビットシャッフルする手段を有することができる。
【００２２】
本発明の複合化装置には、実行時にパッチおよびシャッフルすべきサブ部分の記録をビットマップ形式で生成する手段を設けるのが好適である。
【００２３】
本発明の好適例では、プログラムローダを設け、このプログラムローダを、前記再配置パッチアップテーブルおよび実行可能コードを読取り、かつ、その結果を実行可能コード内に書き戻すべく配置する。
【００２４】
本発明はまた、上述したような復号化を制御するコンピュータプログラムエレメントおよび、上述で概説したステップを踏むようなコンピュータプログラム製品も提供する。
【発明を実施するための最良の形態】
【００２５】
以下、本発明を添付の図面を参照して説明する。
【００２６】
本発明の上述した記述から明らかなように、ビットシャフリング操作は、その操作をコードのサブ部分であって、キャッシュサイズのブロックを含むのが有利であるサブ部分に対して行うように処理するのが有利である。例えば、ＴｒｉＭｅｄｉａプロセッサ用のコード、特に、ＴｒｉＭｅｄｉａ  １３００では、コードを６４バイトのブロック形式の命令キャッシュサイズブロックに分割することができる。
【００２７】
本発明を採用することにより、実行時にパッチングおよびビットシャッフルするのには、実行可能イメージにおけるキャッシュサイズのブロックのほぼ７５−８０％程度を要することが分かる。これから明らかなように、残りの２０−２５％はパッチしないので、本発明によれば、実行時の前、特に、プログラムをリンクさせて実行可能イメージを形成する際にビットをシャフルすることができる。
【００２８】
したがって、前述したように、このような未パッチの６４バイトブロックを予めシャフリングすることによって、通常直面する２０−２５％までのランタイムシャフリングのオーバーヘッドを有利に低減させて、実行可能ファイルのローディングおよび再配置時間を有利に増やすことができる。
【００２９】
前述したように、本発明は実行時の前で、しかもプログラムをリンクさせる際にビットシャフリングするのが有利である。したがってリンカーはリンク時に、実行時における実行可能ファイルのローディングおよび再配置用の、再配置パッチアップテーブルを生成すべく構成配置するのが有利である。
【００３０】
そのようなリンキングの終了時には、リンカーが再配置パッチアップテーブルを検査して、テキストセグメントにおけるどのアドレスをパッチするかを決定する。このようなパッチセグメントの識別により、実行時に６４バイトブロックのうちどのブロックをパッチし、且つシャッフルする必要があるかを容易に識別できる。
【００３１】
この場合、パッチ処理しない６４バイトのブロックはリンク時に予めシャッフルし、リンカーによって実行時にどのブロックをパッチし、且つシャッフルすべきかの記録を、実行可能ファイルイメージに都合よく付加するビットマップ形式で生成する。
【００３２】
このようなビットマップは、各単独のビットが実行可能なテキストセグメントにおける６４バイトのブロックを表すように配置するのが有利である。この場合、ビットマップにおける各ビットは、そのビットが関連付けられている特定の６４バイトブロックをビットシャッフルするかどうかをローダに識別し易くするフラグとして作用する。したがって、ビットマップにおけるＮ番目のビットは実行可能なテキストセグメントにおけるＮ番目の６４バイトブロックを表す。
【００３３】
従って、Ｎバイトの実行可能なテキストセグメントに対しては、ビットマップにおける（Ｎ＋６３）／６４ビットを要する。８ビットバイトでは、これは（Ｎ＋６３）／５１２バイトを実行可能ファイル全体に付加することになる。
【００３４】
図１は、コードを予めシャッフルした部分を有するプログラム実行可能イメージを生成するための本発明による装置の概略ブロック図である。
【００３５】
図１に示した装置１０は、オブジェクトファイルを一緒にリンクして、必要なプログラム実行可能イメージを形成するように、オブジェクトファイル１４Ａ、１４Ｂを読み取るべく配置したプログラムリンカー１２を具えている。
【００３６】
この例示した本発明の実施例によれば、リンキング処理中に、パッチすべきテキストセグメントのアドレスのテーブル１６をリンカー１２内にて作成し、次いでテキストセグメントプレシャッフラー２０によって、テキストセグメントパッチアドレス１８のテーブル１６を参照して、ランタイム時にパッチ処理を要しないテキストセグメントにおける６４バイトのブロックを予めシャッフルする。
【００３７】
この処理の完了時に、実行可能ファイル２２を矢印Ｂの方向で読出すことができ、実行可能ファイルには例えばａ．ｏｕｔまたはＥＬＦヘッダのような実行可能ヘッダ２４、テキストセグメントのどの６４バイトブロックが実行時にシャッフルを要するかを示すシャッフルビットマップ２６、実行時にテキストおよびデータのセグメントをパッチすべく配置した再配置パッチアップテーブル２８、テキストセグメント３０、データセグメント３２、ｂｓｓセグメント３４が含まれる。
【００３８】
次に図２を見ると、図１に示した実行可能ファイル２２が必要に応じて如何に有利にロードされるかが明らかになる。
【００３９】
実行可能ファイル２２は前述したと同様のセグメントを含んでいるが、特にシャッフルビットマップ２６、再配置パッチアップテーブル２８、テキストセグメント３０を、便宜上特定している。
【００４０】
ＴｒｉＭｅｄｉａ実行可能なテキストセグメントのローディングおよび再配置は以下のように進行する。
【００４１】
プログラムローダ３６は、再配置パッチアップテーブル、および実行可能なテキストコードを、矢印ＢとＣで示すように実行可能ファイルイメージ２２から読取り、イメージを再配置し、それを再配置したテキストセグメント３０として矢印Ｄで示すように書き戻すべく再配置する。
【００４２】
次に、プログラムローダ３６はシャッフルビットマップをビットごとに矢印Ａで示したように読取り、これにより、テキストセグメントにおける各６４バイトのブロックをプログラムローダ３５内のテキストセグメントシャフラー３８によりシャッフルする必要があるかどうかを決定する。当面のセグメントがシャフリングを要すると識別した場合に、テキストセグメントシャフラー３８は６４バイトのブロックをテキストセグメントから矢印Ｃで示すように読取り、そして、それをシャッフルし、矢印Ｄで示すように書き戻すことができる。
【００４３】
本発明による利点は、実行前にロードおよび再配置しなければならないＴｒｉＭｅｄｉａ実行可能コードのような、ランタイムオペレーティングシステム内で必要とされる任意の実行可能コードと共に使用するのに適用できる点にあることは明らかである。
【００４４】
本発明はプログラムの実行可能ファイルのみならず、ＴｒｉＭｅｄｉａダイナミックリンクライブラリ（ＤＬＬ’ｓ）のような実行可能なライブラリにも適用できる。
【００４５】
プログラムおよびライブラリのローディングは一般に、例えばｐＳＯＳのようなリアルタイムオペレーティングシステムと言ったローダライブラリか、またはＬｉｎｕｘのようなＵＮＩＫ的オペレーティングシステムまたはリアルタイムオペレーティングシステムにおけるモノリシックカーネルと言ったバイナリローダ機能により行われることは明らかである。したがって、本発明は、ＴｒｉＭｅｄｉａ実行可能コードをロードおよび再配置しなければならないオペレーティングシステムに用いる場合に特に有利であることは明らかである。
【００４６】
本発明は上述した実施例の詳細な記述に限定されるものでなく、特に、本発明の概念はランタイムオペレーションシステム用に限らず、例えば、最後のリンク時の段階中に、予めシャッフルしたバイナリオブジェクトコードのリストをとるような予めシャッフルしたバイナリコードを処理する処理段階にも同様に適用することができる。
【図面の簡単な説明】
【００４７】
【図１】本発明の実施形態による、プログラム実行可能イメージの生成を例示する概略ブロック図である。
【図２】図１のプログラム実行可能イメージのローディングおよび再配置を例示する概略ブロック図である。
【図１】
2007520811.tif 000003
【図２】
2007520811.tif 000004
【国際調査報告】
2007520811.tif 000005
2007520811.tif 000006
2007520811.tif 000007