(57)【特許請求の範囲】
【請求項１】
要求元装置における格納順にしたがって連続する命令群と、前記要求元装置が実行した命令により指定される記憶領域に格納されているデータとの取得要求を受け付けた場合、前記命令群の各々の命令が圧縮された各々の圧縮命令を取得する取得部と、
前記取得部によって取得された各々の圧縮命令について、前記記憶領域に格納されている前記データのビット列の中から、前記各々の命令のデータサイズから前記各々の圧縮命令のデータサイズを減じたサイズ分のビット列を抽出する抽出部と、
前記各々の圧縮命令と前記抽出部によって前記各々の圧縮命令について抽出されたビット列とを結合した各々の結合データを、前記格納順にしたがって連結することにより、前記命令群と前記データとの取得要求に対する応答データを作成する作成部と、
前記作成部によって作成された応答データを前記要求元装置に出力する出力部と、
を有することを特徴とするデータ作成装置。
【請求項２】
前記取得部は、
前記命令群と前記データとの取得要求を受け付けた場合、前記各々の圧縮命令を、前記各々の圧縮命令が記憶された記憶領域から取得し、
前記抽出部は、
前記取得部によって取得された各々の圧縮命令について、前記指定される記憶領域に格納されている前記データのビット列の中から、前記各々の圧縮命令に対応する前記各々の命令のデータサイズを記憶する記憶領域を参照して、前記各々の命令のデータサイズから前記各々の圧縮命令のデータサイズを減じたサイズ分のビット列を抽出することを特徴とする請求項１に記載のデータ作成装置。
【請求項３】
前記抽出部は、
前記データのビット列すべてを抽出した場合、前記データのビット列すべてを抽出したことを表すビット列の中から、前記各々の命令のデータサイズから前記各々の圧縮命令のデータサイズを減じたサイズ分のビット列を抽出することを特徴とする請求項１または２に記載のデータ作成装置。
【請求項４】
前記抽出部は、
前記取得部によって取得された各々の圧縮命令について、前記データのサイズを表すビット列の中から、前記各々の命令のデータサイズから前記各々の圧縮命令のデータサイズを減じたサイズ分のビット列を抽出するとともに、前記記憶領域に格納されている前記データのビット列の中から、前記各々の命令のデータサイズから前記各々の圧縮命令のデータサイズを減じたサイズ分のビット列を抽出することを特徴とする請求項１または２に記載のデータ作成装置。
【請求項５】
要求元装置における格納順にしたがって連続する命令群と、前記要求元装置が実行した命令により指定される記憶領域に格納されているデータとの取得要求を受け付けた場合、前記命令群の前記格納順に連続する所定数の命令ごとに圧縮された前記所定数の命令ごとの圧縮命令を取得する取得部と、
前記取得部によって取得された前記所定数の命令ごとの圧縮命令について、前記指定される記憶領域に格納されている前記データのビット列の中から、前記所定数の命令のデータサイズから前記所定数の命令ごとの圧縮命令のデータサイズを減じたサイズ分のビット列を抽出する抽出部と、
前記所定数の命令ごとの圧縮命令と前記抽出部によって前記所定数の命令ごとの圧縮命令について抽出されたビット列とを結合した前記所定数の命令ごとの結合データを、前記格納順にしたがって連結することにより、前記命令群とデータとの取得要求に対する応答データを作成する作成部と、
前記作成部によって作成された応答データを前記要求元装置に出力する出力部と、
を有することを特徴とするデータ作成装置。
【請求項６】
前記抽出部は、
前記データのビット列のうち抽出されていない残余のビット列があり、かつ、前記要求元装置から前記データの取得要求を受け付けた場合、前記残余のビット列を抽出し、
前記作成部は、
前記抽出部によって抽出された前記残余のビット列を、前記データの取得要求に対する応答データとして作成することを特徴とする請求項１〜５のいずれか一つに記載のデータ作成装置。
【請求項７】
コンピュータが、
要求元装置における格納順にしたがって連続する命令群と、前記要求元装置が実行した命令により指定される記憶領域に格納されているデータとの取得要求を受け付けた場合、前記命令群の各々の命令が圧縮された各々の圧縮命令を取得し、
取得した各々の圧縮命令について、前記記憶領域に格納されている前記データのビット列の中から、前記各々の命令のデータサイズから前記各々の圧縮命令のデータサイズを減じたサイズ分のビット列を抽出し、
前記各々の圧縮命令と前記各々の圧縮命令について抽出したビット列とを結合した各々の結合データを、前記格納順にしたがって連結することにより、前記命令群と前記データとの取得要求に対する応答データを作成し、
作成した応答データを前記要求元装置に出力する、
処理を実行することを特徴とするデータ作成方法。
【請求項８】
コンピュータに、
要求元装置における格納順にしたがって連続する命令群と、前記要求元装置が実行した命令により指定される記憶領域に格納されているデータとの取得要求を受け付けた場合、前記命令群の各々の命令が圧縮された各々の圧縮命令を取得し、
取得した各々の圧縮命令について、前記記憶領域に格納されている前記データのビット列の中から、前記各々の命令のデータサイズから前記各々の圧縮命令のデータサイズを減じたサイズ分のビット列を抽出し、
前記各々の圧縮命令と前記各々の圧縮命令について抽出したビット列とを結合した各々の結合データを、前記格納順にしたがって連結することにより、前記命令群と前記データとの取得要求に対する応答データを作成し、
作成した応答データを前記要求元装置に出力する、
処理を実行させることを特徴とするデータ作成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ作成装置、データ作成方法、およびデータ作成プログラムに関する。
【背景技術】
【０００２】
従来、データの情報量を失うことなくデータ量を縮小するデータ圧縮技術がある。データを圧縮することにより、記憶容量の減少を図ることができたり、データの通信にかかる時間を短くしたりすることができる。
【０００３】
関連する先行技術に関して、たとえば、非圧縮データと圧縮データを送信する技術が開示されている。また、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）が実行する命令を圧縮してメモリから送信する技術にて、ジャンプ先命令の前にパディングを付与することにより、無関係な命令が実行されることを避けつつ、命令を圧縮したことにより同時に読める命令を増加することができる技術が開示されている。（たとえば、下記特許文献１、２を参照。）
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平６−２４２９２３号公報
【特許文献２】特開平８−３２８８１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来技術において、ＣＰＵからの命令群と、実行した命令により指定されるデータとの取得要求が発生した場合、ＣＰＵへのデータの送信によって命令群の送信が阻害され、ＣＰＵの命令実行が遅延する場合がある。たとえば、圧縮した命令とデータとは、時分割にて交互にＣＰＵへ送信されることになるため、データの送信が行われている間は命令が送信されず、結果、ＣＰＵが実行しようとする命令が送信できていない場合、ＣＰＵの命令実行が遅延してしまう。
【０００６】
本発明は、上述した従来技術による問題点を解消するため、命令の送信を阻害せずにデータを送信できるデータ作成装置、データ作成方法、およびデータ作成プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するため、本発明の一側面によれば、要求元装置における格納順にしたがって連続する命令群と、要求元装置が実行した命令により指定される記憶領域に格納されているデータとの取得要求を受け付けた場合、命令群の各々の命令が圧縮された各々の圧縮命令を取得し、取得した各々の圧縮命令について、記憶領域に格納されているデータのビット列の中から、各々の命令のデータサイズから各々の圧縮命令のデータサイズを減じたサイズ分のビット列を抽出し、各々の圧縮命令と各々の圧縮命令について抽出したビット列とを結合した各々の結合データを、格納順にしたがって連結することにより、命令群とデータとの取得要求に対する応答データを作成し、作成した応答データを要求元装置に出力するデータ作成装置、データ作成方法、およびデータ作成プログラムが提案される。
【発明の効果】
【０００８】
本発明の一側面によれば、命令の送信を阻害せずにデータを送信できるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、データ作成装置の動作例を示す説明図である。
【図２】図２は、コンピュータシステムのハードウェア構成例を示すブロック図である。
【図３】図３は、ＣＰＵ内部のハードウェア構成例を示す説明図である。
【図４】図４は、ＧＰ命令群を圧縮せずにＧＰ命令群とＲＣプログラムとを転送する例を示す説明図である。
【図５】図５は、ＧＰ命令群を圧縮した圧縮ＧＰ命令群とＲＣプログラムとを転送する例を示す説明図である。
【図６】図６は、結合データの記憶内容の一例を示す説明図である。
【図７】図７は、コンピュータシステムの機能構成例を示すブロック図である。
【図８】図８は、命令を圧縮する際の動作例を示す説明図である。
【図９】図９は、転送後の動作例を示す説明図である。
【図１０】図１０は、ＲＣプログラム指示処理手順の一例を示すフローチャートである。
【図１１】図１１は、ＲＣ実行指示処理手順の一例を示すフローチャートである。
【図１２】図１２は、取得要求処理手順の一例を示すフローチャートである。
【図１３】図１３は、データ作成装置の処理手順の一例を示すフローチャートである。
【図１４】図１４は、伸長装置の処理手順の一例を示すフローチャートである。
【図１５】図１５は、本実施の形態にかかるコンピュータを用いたシステムの適用例を示す説明図である。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、開示のデータ作成装置、データ作成方法、およびデータ作成プログラムの実施の形態を詳細に説明する。
【００１１】
図１は、データ作成装置の動作例を示す説明図である。図１において、コンピュータシステム１００は、ＣＰＵ１０１と、ＣＰＵ１０１からの取得要求に応答するデータ作成装置１０２と、を含む。ＣＰＵ１０１は、ＣＰＵ１０１の記憶領域の格納順にしたがってこれから実行する命令群と、ＣＰＵ１０１が実行した命令により指定される記憶領域に格納されているデータとの取得要求を、データ作成装置１０２に通知する。ここで、記憶領域に格納されているデータは、たとえば、アドレスによって指定されている。また、記憶領域に格納されているデータは、ファイル名によって指定されてもよい。データは、たとえば、画像ソフトウェアが用いる画像データ、動画像ソフトウェアが用いる動画像データであってもよい。また、ＣＰＵ１０１にプログラムによって再構成可能な演算回路が含まれる場合、データは、演算回路の再構成を行うプログラムであってもよい。
【００１２】
以下、ＣＰＵ１０１のうちの、再構成可能な演算回路以外の、再構成可能でない通常の演算回路を、「ＧＰＰ（Ｇｅｎｅｒａｌ  Ｐｕｒｐｏｓｅ  Ｐｒｏｃｅｓｓｏｒ）」と呼称する。また、再構成可能な演算回路を「ＲＣ（ＲｅＣｏｎｆｉｇｕｒａｂｌｅ）エンジン」と呼称する。また、ＧＰＰが実行する命令を、「ＧＰ命令」と呼称する。また、ＲＣエンジンが実行するプログラムを、「ＲＣプログラム」と呼称する。
【００１３】
また、ＧＰ命令のうちの、ＲＣエンジンが実行するＲＣプログラムを実行できる状態にする命令を「ＲＣプログラム指示命令」と呼称する。ＲＣプログラム指示命令により、ＧＰＰは、ＲＣプログラムの取得要求を、データ作成装置１０２に通知する。なお、ＲＣプログラムを実行できる状態については、図３にて後述する。また、ＧＰ命令のうちの、ＲＣエンジンへのＲＣプログラムの実行指示命令を「ＲＣ実行指示命令」と呼称する。また、ＲＣプログラム指示命令とＲＣ実行指示命令とを、「ＲＣ命令」と総称する。また、以下の説明では、ＣＰＵ１０１が実行した命令により指定される記憶領域に格納されているデータが、ＲＣプログラムであるとして説明する。
【００１４】
たとえば、ＧＰ命令が固定長命令であって、１命令のデータサイズが３２［ビット］であるとし、ＣＰＵ１０１が、「０ｘ８０〜０ｘ９Ｆ番地に格納されたＲＣプログラムを読み込め」という０ｘ０Ｃ番地のＲＣプログラム指示命令を実行したとする。このとき、ＣＰＵ１０１は、これから実行する命令群として、たとえば、０ｘ１０〜０ｘ２Ｆ番地のＧＰ命令群と、０ｘ８０〜０ｘ９Ｆ番地に格納されているＲＣプログラム１１２との取得要求を、データ作成装置１０２に通知する。データ作成装置１０２は、ＧＰ命令群とＲＣプログラムとの取得要求に対する応答データを効率よく送信する。
【００１５】
具体的に、データ作成装置１０２は、ＧＰ命令群とＲＣプログラムとの取得要求を受け付けた場合、ＧＰ命令群の各々のＧＰ命令が圧縮された各々の圧縮ＧＰ命令を取得する。図１の例では、０ｘ１０〜０ｘ２Ｆ番地には、圧縮ＧＰ命令群１１１が格納されているとする。なお、コンピュータシステム１００は、０ｘ１０〜０ｘ２Ｆ番地に各々のＧＰ命令を記憶しておき、データ作成装置１０２は、各々のＧＰ命令を圧縮してもよい。データ作成装置１０２は、たとえば、０ｘ１０番地のＧＰ命令が圧縮された圧縮ＧＰ命令１１１−１を取得する。さらに、データ作成装置１０２は、０ｘ１４番地のＧＰ命令が圧縮された圧縮ＧＰ命令１１１−２と、…、０ｘ２Ｃ番地のＧＰ命令が圧縮された圧縮ＧＰ命令１１１−８と、を取得する。
【００１６】
次に、データ作成装置１０２は、圧縮ＧＰ命令１１１−１〜１１１−８について、ＲＣプログラム１１２のビット列の中から、各々のＧＰ命令のデータサイズから各々の圧縮ＧＰ命令のデータサイズを減じたサイズ分のビット列を抽出する。たとえば、圧縮ＧＰ命令１１１−１のデータサイズが１４［ビット］であれば、データ作成装置１０２は、ＲＣプログラム１１２のビット列の中から、３２［ビット］から１４［ビット］を減じた１８［ビット］分のビット列１１２−１を抽出する。
【００１７】
続けて、データ作成装置１０２は、圧縮ＧＰ命令１１１−２のデータサイズが３０［ビット］であれば、ＲＣプログラム１１２のビット列の中から、３２［ビット］から３０［ビット］を減じた２［ビット］分のビット列１１２−２を抽出する。このように、データ作成装置１０２は、圧縮ＧＰ命令群１１１について抽出を行う。最後の抽出として、データ作成装置１０２は、圧縮ＧＰ命令１１１−８のデータサイズが２４［ビット］であれば、ＲＣプログラム１１２のビット列の中から、３２［ビット］から２４［ビット］を減じた８［ビット］分のビット列１１２−８を抽出する。
【００１８】
次に、データ作成装置１０２は、各々の圧縮ＧＰ命令と抽出されたビット列とを結合した各々の結合データを、ＣＰＵ１０１での格納順にしたがって連結することにより、取得要求に対する応答データを作成する。たとえば、データ作成装置１０２は、圧縮ＧＰ命令１１１−１とビット列１１２−１とを結合した結合データ１１３−１を作成する。同様に、データ作成装置１０２は、圧縮ＧＰ命令１１１−２とビット列１１２−２とを結合した結合データ１１３−２と、…、圧縮ＧＰ命令１１１−８とビット列１１２−８とを結合した結合データ１１３−８とを作成する。続けて、データ作成装置１０２は、結合データ１１３−１〜結合データ１１３−８を格納順にしたがって連結することにより、応答データ１１４を作成する。
【００１９】
応答データ１１４の作成後、データ作成装置１０２は、応答データ１１４をＣＰＵ１０１に出力する。このように、データ作成装置１０２は、ＧＰ命令群とＲＣプログラムが要求された場合、ＧＰ命令と圧縮ＧＰ命令との差分サイズ分のＲＣプログラムを圧縮命令の後に埋め込んだビット列を、各命令の格納順にしたがって連結して出力する。これにより、データ作成装置１０２は、ＧＰ命令群の送信を阻害せずに、ＲＣプログラムを送信することができる。以下、図２〜図１５を用いて、コンピュータシステム１００について詳細に説明する。
【００２０】
（コンピュータシステム１００のハードウェア）
図２は、コンピュータシステムのハードウェア構成例を示すブロック図である。コンピュータシステム１００は、ＣＰＵ１０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０１と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０２と、フラッシュＲＯＭ２０３と、フラッシュＲＯＭコントローラ２０４と、フラッシュＲＯＭ２０５を有する。コンピュータシステム１００は、さらに、ディスプレイ２０６と、ＩＦ２０７と、キーボード２０８と、を有する。ＣＰＵ１０１、ＲＯＭ２０１〜キーボード２０８は、それぞれバス２０９にて接続されている。
【００２１】
また、データ作成装置１０２は、ＲＯＭ２０１〜フラッシュＲＯＭコントローラ２０４と、バス２０９の間に存在する。さらに、ＧＰ命令群または圧縮ＧＰ命令群１１１とＲＣプログラム１１２とは、ＲＯＭ２０１〜フラッシュＲＯＭ２０３、フラッシュＲＯＭ２０５のいずれかに記憶されている。
【００２２】
ここで、ＣＰＵ１０１は、コンピュータシステム１００の全体の制御を司る制御装置である。また、コンピュータシステム１００は、Ｎ個のＣＰＵを含んでいてもよい。Ｎは、２以上の整数である。
【００２３】
ＲＯＭ２０１は、ブートプログラムなどのプログラムを記憶している不揮発性メモリである。ＲＡＭ２０２は、ＣＰＵ１０１のワークエリアとして使用される揮発性メモリである。フラッシュＲＯＭ２０３は、書き換え可能な不揮発性メモリであり、たとえば、読出し速度が高速なＮＯＲ型フラッシュメモリである。フラッシュＲＯＭ２０３は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）などのシステムソフトウェアやアプリなどを記憶している。たとえば、ＯＳを更新する場合、コンピュータシステム１００は、ＩＦ２０７によって新しいＯＳを受信し、フラッシュＲＯＭ２０３に格納されている古いＯＳを、受信した新しいＯＳに更新する。
【００２４】
フラッシュＲＯＭコントローラ２０４は、ＣＰＵ１０１の制御にしたがってフラッシュＲＯＭ２０５に対するデータのリード／ライトを制御する制御装置である。フラッシュＲＯＭ２０５は、書き換え可能な不揮発性メモリであり、たとえば、データの保存、運搬を主に目的とした、ＮＡＮＤ型フラッシュメモリである。フラッシュＲＯＭ２０５は、フラッシュＲＯＭコントローラ２０４の制御で書き込まれたデータを記憶する。データの具体例としては、コンピュータシステム１００を使用するユーザがＩＦ２０７を通して取得した画像データ、映像データなどを記憶してもよい。フラッシュＲＯＭ２０５は、たとえば、メモリカード、ＳＤカードなどを採用することができる。
【００２５】
ディスプレイ２０６は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。ディスプレイ２０６は、たとえば、ＴＦＴ液晶ディスプレイなどを採用することができる。
【００２６】
ＩＦ２０７は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク２１０に接続され、ネットワーク２１０を介して他の装置に接続される。そして、ＩＦ２０７は、ネットワーク２１０と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。ＩＦ２０７には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００２７】
キーボード２０８は、数字、各種指示などの入力のためのキーを有し、データの入力を行う。また、キーボード２０８は、タッチパネル式の入力パッドやテンキーなどであってもよい。
【００２８】
図３は、ＣＰＵ内部のハードウェア構成例を示す説明図である。図３では、コンピュータシステム１００にＣＰＵ１０１と、ＣＰＵ３００という複数のＣＰＵがある例を示している。ＣＰＵ１０１は、ＧＰＰ３０１と、ＲＣエンジン３０２と、伸長装置３０３と、ＲＣプログラム制御部３０４と、を含む。さらに、ＣＰＵ１０１は、共有レジスタ３１１と、インストラクションキャッシュメモリ３１２と、ＲＣプログラム指示命令キュー３１３と、ＲＣプログラムバッファ３１４とを含む。
【００２９】
ＧＰＰ３０１は、再構成可能でない通常の演算回路である。ＧＰＰ３０１は、ＧＰ命令を実行可能である。ＲＣエンジン３０２は、再構成可能な演算回路である。ＲＣエンジン３０２の具体例として、ＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）がある。コンピュータシステム１００は、ＲＣプログラムを２つ以上記憶している。ここで、ＲＣエンジン３０２がＰＬＤ、ＦＰＧＡであれば、たとえば、第１のＲＣプログラムは、特定の関数を計算し、計算結果が第１の閾値以上なら第１の閾値を出力するというプログラムである。さらに、第２のＲＣプログラムは、たとえば、第１のＲＣプログラムにおいて第１の閾値が第２の閾値に変更されたプログラムである。この場合、ＲＣプログラムの内容は、処理内容すべてを記載していてもよいし、第１の閾値、第２の閾値のみが記載されていてもよい。
【００３０】
また、ＲＣエンジン３０２の他の例としては、動作モードを変更可能なＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）演算器等がある。具体的な動作モードは、たとえば、８ビット乗算を４つ独自に扱うモードと、下位３０ビットを使って、１０ビット乗算を３つ独自に扱うモードと、１６ビット乗算を２つ独自に扱うモードと、３２ビット乗算を１つ扱うモードと、という４つのモードがある。
【００３１】
伸長装置３０３は、データ作成装置１０２から出力されてきた応答データ１１４を伸長する。具体的に、伸長装置３０３は、応答データ１１４のビット列を伸長して、伸長されたＧＰ命令群をインストラクションキャッシュメモリ３１２に出力するとともに、伸長されなかった残余のビット列をＲＣプログラム１１２としてＲＣプログラム制御部３０４に出力する。
【００３２】
ＲＣプログラム制御部３０４は、ＲＣプログラムに関する制御を行う。具体的に、ＲＣプログラム制御部３０４は、ＧＰＰ３０１がＲＣプログラム指示命令を実行したことを受け付けると、ＲＣプログラムの取得要求を伸長装置３０３に通知する。また、ＲＣプログラム制御部３０４は、伸長装置３０３からＲＣプログラムを受け付けた場合、ＲＣプログラムをＲＣプログラムバッファ３１４に格納する。なお、ＲＣプログラムを実行できる状態とは、ＲＣプログラムがＲＣプログラムバッファ３１４に格納済みの状態である。
【００３３】
さらに、ＲＣプログラム制御部３０４は、ＧＰＰ３０１がＲＣ実行指示命令を実行したことを受け付けると、ＲＣプログラムを実行できる状態にあるか否かを判断する。ＲＣプログラムを実行できる状態にない場合、ＲＣプログラム制御部３０４は、ＧＰＰ３０１にパイプライン動作の停止を指示して、ＲＣプログラムの取得要求を伸長装置３０３に通知する。ＲＣプログラムを実行できる状態にある場合、ＲＣプログラム制御部３０４は、ＧＰＰ３０１にＲＣプログラムの実行を許可する。
【００３４】
共有レジスタ３１１は、ＧＰＰ３０１とＲＣエンジン３０２とが共有してアクセス可能な記憶領域である。共有レジスタ３１１を用いて、たとえば、ＧＰＰ３０１は、ＲＣエンジン３０２に実行させる処理の引数を与え、ＲＣエンジン３０２は、処理結果をＧＰＰ３０１に通知する。インストラクションキャッシュメモリ３１２は、ＧＰ命令を一時的に記憶する記憶領域である。
【００３５】
ＲＣプログラム指示命令キュー３１３は、ＲＣプログラム指示命令を先入れ先出しにて記憶する記憶領域である。たとえば、伸長装置３０３がＲＣプログラムを取得している途中に、ＧＰＰ３０１が新たなＲＣプログラム指示命令を実行した場合、ＲＣプログラム制御部３０４は、新たなＲＣプログラム指示命令をＲＣプログラム指示命令キュー３１３に格納する。伸長装置３０３がＲＣプログラムの取得を完了した後、ＲＣプログラム制御部３０４は、ＲＣプログラム指示命令キュー３１３から新たなＲＣプログラム指示命令を取得し、新たなＲＣプログラムの取得要求を伸長装置３０３に通知する。
【００３６】
ＲＣプログラムバッファ３１４は、ＲＣプログラムを格納する記憶領域である。ＲＣプログラムバッファ３１４は、ＲＣプログラム１つ分を記憶可能な記憶領域でもよいし、ＲＣプログラム複数分を記憶可能な記憶領域でもよい。
【００３７】
なお、ＲＣエンジン３０２〜ＲＣプログラム制御部３０４と、インストラクションキャッシュメモリ３１２〜ＲＣプログラムバッファ３１４は、すべてのＣＰＵに含まれていてもよいし、一部のＣＰＵに含まれていてもよい。たとえば、ＣＰＵ３００に、ＲＣエンジン３０２〜ＲＣプログラム制御部３０４と、インストラクションキャッシュメモリ３１２〜ＲＣプログラムバッファ３１４があってもなくてもよい。
【００３８】
続けて、図４と図５にて、ＧＰ命令群とＲＣプログラム１１２との取得要求に対する応答について説明を行う。図４では、ＧＰ命令群を圧縮せずに転送する例について説明し、図５では、ＧＰ命令群を圧縮して転送する例について説明する。
【００３９】
図４は、ＧＰ命令群を圧縮せずにＧＰ命令群とＲＣプログラムとを転送する例を示す説明図である。図４では、ＧＰ命令群とＲＣプログラム１１２との取得要求と、に対して、データ作成装置１０２が、ＧＰ命令群を圧縮せずに時分割にて調停して転送する例を示している。図４の（Ａ）は、転送すべきＧＰ命令群と転送すべきＲＣプログラム１１２を表示している。以下、ＧＰ命令群とＲＣプログラム１１２とを順に説明する。また、図４の（Ａ）と図４の（Ｂ）では、ＲＣプログラム１１２に対して網掛けしている。
【００４０】
初めに、１番目に転送する命令は、ＧＰ命令群４０１である。次に、２番目に転送する命令は、ＲＣプログラム指示命令４０２である。具体的に、ＲＣプログラム指示命令４０２の更新対象となるプログラムは、ＲＣプログラム（＃Ａ）となる。続けて、３番目に転送する命令は、ＧＰ命令群４０３である。また、ＲＣプログラム指示命令４０２の実行によって発生した、１番目に転送するＲＣプログラム１１２は、ＲＣプログラム（＃Ａ）４１１となる。次に、４番目に転送する命令は、ＲＣ実行指示命令４０４である。ＲＣ実行指示命令４０４により、ＲＣエンジン３０２は、ＲＣプログラム（＃Ａ）を実行する。
【００４１】
続けて、５番目に転送する命令は、ＧＰ命令群４０５である。次に、６番目に転送する命令は、ＲＣプログラム指示命令４０６である。具体的に、ＲＣプログラム指示命令４０６の更新対象となるプログラムは、ＲＣプログラム（＃Ｂ）となる。続けて、７番目に転送する命令は、ＧＰ命令群４０７である。また、ＲＣプログラム指示命令４０６の実行によって発生した、２番目に転送するＲＣプログラム１１２は、ＲＣプログラム（＃Ｂ）４１２となる。次に、８番目に転送する命令は、ＲＣ実行指示命令４０８である。ＲＣ実行指示命令４０８により、ＲＣエンジン３０２は、ＲＣプログラム（＃Ｂ）を実行する。
【００４２】
続けて、９番目に転送する命令は、ＲＣ実行指示命令４０９である。ＲＣ実行指示命令４０９により、ＲＣエンジン３０２は、ＲＣプログラム（＃Ａ）を実行する。なお、ＲＣ実行指示命令４０９の時点にて、ＲＣプログラム（＃Ａ）が、ＲＣプログラムバッファ３１４に既に格納されているため、ＲＣプログラム指示命令を行わなくてもよい。
【００４３】
図４の（Ｂ）は、ＧＰ命令群とＲＣプログラム１１２とを転送した例を示している。データ作成装置１０２は、ＧＰ命令群４０３とＲＣプログラム（＃Ａ）４１１とを時分割にて重畳してバス幅ごとに転送する。たとえば、データ作成装置１０２がＲＣプログラム（＃Ａ）４１１を転送中の場合、ＧＰＰ３０１は、実行すべきＧＰ命令群４０３がまだ転送できていないため、実行を一旦停止することになる。
【００４４】
図５は、ＧＰ命令群を圧縮した圧縮ＧＰ命令群とＲＣプログラムとを転送する例を示す説明図である。図５では、ＧＰ命令群とＲＣプログラム１１２との取得要求と、に対して、データ作成装置１０２が、ＧＰ命令群を圧縮して転送する例を示している。図５の（Ａ）は、転送すべきＧＰ命令群と転送すべきＲＣプログラム１１２を表示している。以下、ＧＰ命令群とＲＣプログラム１１２とを順に説明する。また、図５の（Ａ）と図５の（Ｂ）では、ＲＣプログラム１１２に対して網掛けしている。
【００４５】
ＧＰ命令群には、ＧＰ命令群が圧縮されているか否かを表す１ビットの圧縮フラグ５０１が先頭に付与されている。圧縮フラグは、たとえば、後続のＧＰ命令が圧縮されている場合、“１”が設定されており、後続のＧＰ命令が圧縮されていない場合、“０”が設定される。また、圧縮フラグ５０１を付与する前のＧＰ命令のデータサイズがバス幅と一致していた場合、圧縮フラグ５０１を付与することになった場合のＧＰ命令のデータサイズは、バス幅から１ビット減じた値となる。また、圧縮フラグ５０１は、ＧＰ命令に含まれ、ＧＰ命令の先頭ビットが圧縮フラグ５０１としてもよい。また、圧縮フラグ５０１は、ＧＰ命令群に付与されずに、他の記憶領域にあってもよい。
【００４６】
１番目に転送する命令と、２番目に転送する命令は、図４と同一である。続けて、３番目に転送する命令は、ＧＰ命令群４０３が圧縮された圧縮ＧＰ命令群５０２である。また、ＲＣプログラム指示命令４０２の実行によって発生した、１番目に転送するＲＣプログラム１１２は、ＲＣプログラム（＃Ａ）４１１となる。
【００４７】
続けて、４番目に転送する命令から、６番目に転送する命令までは、図４と同一である。次に、７番目に転送する命令は、ＧＰ命令群４０７が圧縮された圧縮ＧＰ命令群５０３である。また、ＲＣプログラム指示命令４０６の実行によって発生した、２番目に転送するＲＣプログラム１１２は、ＲＣプログラム（＃Ｂ）４１２となる。続けて、８番目に転送する命令から、１０番目に転送する命令までは、図４と同一である。
【００４８】
図５（Ｂ）は、圧縮ＧＰ命令群とＲＣプログラム１１２と重畳して転送した例を示している。データ作成装置１０２は、圧縮ＧＰ命令群５０２の各々の圧縮ＧＰ命令とＲＣプログラム（＃Ａ）４１１のビット列の中から抽出したビット列とを結合した結合データを、ＣＰＵ１０１での格納順にしたがって連結した応答データ５１１としてバス幅ごとに転送する。このように、応答データ５１１の作成について、データ作成装置１０２は、ＧＰ命令群４０３を圧縮によって発生した空き領域に、ＲＣプログラム（＃Ａ）４１１のビット列を格納順にしたがって詰めて挿入している。また、応答データ５１１は、ＲＣプログラム（＃Ａ）４１１のビット列すべてを詰めることができた場合を示している。
【００４９】
また、応答データ５１２の作成について、データ作成装置１０２は、ＧＰ命令群４０７を圧縮によって発生した空き領域に、ＲＣプログラム（＃Ｂ）４１２のビット列を格納順にしたがって詰めて挿入している。また、応答データ５１２は、ＲＣプログラム（＃Ｂ）４１２のビット列すべてを詰めることができなかった場合を示している。このとき、データ作成装置１０２は、ＲＣ実行指示命令４０８を転送する前に、詰め切れなかった残余のビット列５１３を転送する。なお、結合データの記憶内容について、図６にて後述する。
【００５０】
図６は、結合データの記憶内容の一例を示す説明図である。図６の（Ａ１）と図６の（Ａ２）は、命令フェッチのバス幅と、ＯＳの使用する標準的なデータサイズとなる幅となるワード幅とが一致する場合における、結合データの記憶内容の一例を示している。図６の（Ｂ１）と図６の（Ｂ２）は、命令フェッチのバス幅と、ワード幅とが異なる場合における、結合データの記憶内容の一例を示している。
【００５１】
データ作成装置１０２は、バス幅とワード幅とが同一である場合、図６の（Ａ１）にて示す結合データ６０１を作成してもよいし、図６の（Ａ２）にて示す結合データ６０２を作成してもよい。また、データ作成装置１０２は、バス幅とワード幅とが異なる場合、図６の（Ｂ１）にて示す結合データ６０３を作成してもよいし、図６の（Ｂ２）にて示す結合データ６０４を作成してもよい。
【００５２】
図６の（Ａ１）で示す結合データ６０１は、最上位ビットを含むビット列に圧縮ＧＰ命令６１１を有する。さらに、結合データ６０１は、圧縮ＧＰ命令６１１の後に、ＲＣプログラムのビット列から抽出した、ワード幅から圧縮ＧＰ命令６１１を減じたサイズ分のビット列６１２を有する。また、図６の（Ａ２）で示す結合データ６０２は、最下位ビットを含むビット列に圧縮ＧＰ命令６１１を有する。さらに、結合データ６０２は、圧縮ＧＰ命令６１１の前に、ワード幅から圧縮ＧＰ命令６１１を減じたサイズ分、ＲＣプログラムのビット列から抽出したビット列６１２を有する。
【００５３】
また、図６の（Ｂ１）で示す結合データ６０３は、ワード幅ごとに、各ワード幅の最上位ビットを含むビット列に、圧縮ＧＰ命令６２１、圧縮ＧＰ命令６２２、圧縮ＧＰ命令６２３、圧縮ＧＰ命令６２４を有する。さらに、結合データ６０３は、圧縮ＧＰ命令６２１〜圧縮ＧＰ命令６２４の後に、それぞれ、ビット列６３１、ビット列６３２、ビット列６３３、ビット列６３４を有する。
【００５４】
また、図６の（Ｂ２）で示す結合データ６０４は、最上位ビットを含むビット列に、圧縮ＧＰ命令６２１、圧縮ＧＰ命令６２２、圧縮ＧＰ命令６２３、圧縮ＧＰ命令６２４を順に有する。さらに、結合データ６０４は、圧縮ＧＰ命令６２３の後に、バス幅から圧縮ＧＰ命令６２１〜圧縮ＧＰ命令６２４のデータサイズを減じたサイズ分、ＲＣプログラムのビット列から抽出したビット列６３５を有する。
【００５５】
なお、図６では図示していないが、データ作成装置１０２は、各ワード幅の最下位ビットを含むビット列に圧縮ＧＰ命令６２１〜６２４を有し、圧縮ＧＰ命令６２１〜６２４の前に、それぞれ、ビット列６３１〜６３４を有する結合データを作成してもよい。また、データ作成装置１０２は、最下位ビットを含むビット列に、圧縮ＧＰ命令６２１〜６２４を有し、圧縮ＧＰ６２１の前に、バス幅から圧縮ＧＰ命令６２１〜６２４のデータサイズを減じたサイズ分のビット列６３５を格納した結合データを作成してもよい。続いて、図７にて、図５にて示した動作を行う機能例と、図６に示した記憶内容を作成する機能例について説明する。
【００５６】
（コンピュータシステムの機能構成）
次に、コンピュータシステム１００の機能構成例について説明する。図７は、コンピュータシステムの機能構成例を示すブロック図である。コンピュータシステム１００は、受付部７０１と、取得部７０２と、抽出部７０３と、作成部７０４と、出力部７０５と、実行部７１０と、送信部７１１と、受信部７１２と、格納部７１３と、伸長部７１４と、出力部７１５とを含む。受付部７０１〜出力部７０５は、データ作成装置１０２が有する機能群である。実行部７１０は、ＧＰＰ３０１が有する機能群である。送信部７１１〜出力部７１５は、伸長装置３０３が有する機能群である。また、伸長装置３０３は、記憶領域７２０にアクセス可能である。
【００５７】
受付部７０１は、要求元装置における格納順にしたがって連続するＧＰ命令群と、要求元装置が実行したＧＰ命令により指定される記憶領域に格納されているＲＣプログラムとの取得要求を受け付ける。ここで、要求元装置とは、たとえば、ＣＰＵ１０１である。たとえば、受付部７０１は、０ｘ１０〜０ｘ２Ｆ番地の連続するＧＰ命令群と、ＣＰＵ１０１が実行した０ｘ０Ｃ番地のＧＰ命令により指定される０ｘ８０〜０ｘ９Ｆ番地に格納されているＲＣプログラムとの取得要求を受け付ける。
【００５８】
また、受付部７０１は、ＧＰ命令群の取得要求と、ＲＣプログラムの取得要求とを、別々に受け付けてもよい。２つの取得要求を別々に受け付けた場合、たとえば、数クロックの時間差内といった特定の時間以内に受け付けた場合、受付部７０１は、ＧＰ命令群とＲＣプログラムの取得要求として受け付けたことにしてもよい。また、ＲＣプログラムの取得要求を受け付けた場合に一定時間待機し、待機中にＧＰ命令群の取得要求を受け付けた場合、受付部７０１は、ＧＰ命令群とＲＣプログラムの取得要求として受け付けたことにしてもよい。なお、受け付けた取得要求は、データ作成装置１０２内のレジスタ等の記憶領域に記憶される。
【００５９】
取得部７０２は、受付部７０１によって、ＧＰ命令群とＲＣプログラムとの取得要求を受け付けた場合、ＧＰ命令群の各々のＧＰ命令が圧縮された各々の圧縮ＧＰ命令を取得する。たとえば、取得部７０２は、ＲＯＭ２０１〜フラッシュＲＯＭ２０３、フラッシュＲＯＭ２０５等の記憶領域に記憶されたＧＰ命令群の各々の命令を圧縮して、圧縮した命令を取得する。また、取得部７０２は、ＧＰ命令群とデータとの取得要求を受け付けた場合、各々の圧縮ＧＰ命令を、各々の圧縮ＧＰ命令が記憶された記憶領域から取得してもよい。
【００６０】
また、取得部７０２は、ＧＰ命令群とデータとの取得要求を受け付けた場合、ＧＰ命令群の格納順に連続する所定数のＧＰ命令ごとに圧縮された所定数のＧＰ命令ごとの圧縮ＧＰ命令を取得してもよい。所定数は、どのような値でもよいが、たとえば、バス幅／ＧＰ命令のデータサイズや、インストラクションキャッシュメモリ３１２のキャッシュライン幅／ＧＰ命令のデータサイズが好ましい。たとえば、バス幅が１２８［ビット］であり、ＧＰ命令のデータサイズが３２［ビット］であれば、所定数は、１２８／３２＝４となる。
【００６１】
たとえば、取得部７０２は、ＧＰ命令群とデータとの取得要求を受け付けた場合、連続する４つのＧＰ命令ごとに圧縮された４つのＧＰ命令ごとの圧縮ＧＰ命令を取得する。なお、取得した圧縮ＧＰ命令は、データ作成装置１０２内のレジスタ等の記憶領域に記憶される。または、ＲＯＭ２０１〜フラッシュＲＯＭ２０３、フラッシュＲＯＭ２０５等の記憶領域内の圧縮ＧＰ命令が格納されたアドレスが、データ作成装置１０２内のレジスタ等の記憶領域に記憶されてもよい。
【００６２】
抽出部７０３は、取得部７０２によって取得された各々の圧縮ＧＰ命令について、記憶領域に格納されているＲＣプログラムのビット列の中から、各々のＧＰ命令のデータサイズから各々の圧縮ＧＰ命令のデータサイズを減じたサイズ分のビット列を抽出する。また、ＲＣプログラムのビット列から抽出される順序として、抽出部７０３は、ビット列の先頭から抽出してもよいし、ビット列の末尾から抽出してもよい。
【００６３】
たとえば、ＧＰ命令のデータサイズが３２［ビット］であり、圧縮ＧＰ命令のデータサイズが１４［ビット］である場合、抽出部７０３は、３２−１４＝１８［ビット］分のビット列を抽出する。なお、記憶領域にＧＰ命令が格納されており、圧縮ＧＰ命令が格納されていない場合、圧縮ＧＰ命令のデータサイズは、実際に圧縮することにより取得することができる。また、記憶領域に、ＧＰ命令が格納されていなく、圧縮ＧＰ命令が格納されている場合、圧縮ＧＰ命令を伸長することにより、圧縮ＧＰ命令のデータサイズとＧＰ命令のデータサイズを取得することができる。
【００６４】
また、抽出部７０３は、各々の圧縮ＧＰ命令に対応する各々のＧＰ命令のデータサイズを記憶する記憶領域を参照して、各々のＧＰ命令のデータサイズから各々の圧縮ＧＰ命令のデータサイズを減じたサイズ分のビット列を抽出してもよい。各々の圧縮ＧＰ命令に対応する各々のＧＰ命令のデータサイズを記憶する記憶領域は、たとえば、ＧＰ命令が固定長命令であれば、各々の圧縮ＧＰ命令のサイズを記憶する。ＧＰ命令が固定長命令であれば、ＧＰ命令のデータサイズは記憶してなくてもよい。図１に示した、圧縮ＧＰ命令１１１−１〜１１１−８を用いると、前述の記憶領域は、１４、３０、…、２４を記憶している。前述の記憶領域を参照することにより、抽出部７０３は、伸長せずとも圧縮ＧＰ命令とＧＰ命令のデータサイズを取得することができる。
【００６５】
また、抽出部７０３は、ＲＣプログラムのビット列すべてを抽出した場合、ＲＣプログラムのビット列すべてを抽出したことを表すビット列の中からビット列を抽出してもよい。ＲＣプログラムのビット列すべてを抽出したことを表すビット列は、どのようなビット列でもよいが、ＲＣプログラム中に出現しないビット列が好ましい。以下、ＲＣプログラムのビット列すべてを抽出したことを表す情報を終端情報とする。ＲＣプログラム中に出現する可能性のあるビット列であれば、たとえば、任意のユニークなエスケープコードを定義し、終端と通常のビット列を区別する。
【００６６】
また、抽出部７０３は、取得部７０２によって取得された各々の圧縮ＧＰ命令について、ＲＣプログラムのサイズを表すビット列の中から、各々のＧＰ命令のデータサイズから各々の圧縮ＧＰ命令のデータサイズを減じたサイズ分のビット列を抽出する。さらに、抽出部７０３は、ＲＣプログラムのビット列の中から、各々のＧＰ命令のデータサイズから各々の圧縮ＧＰ命令のデータサイズを減じたサイズ分のビット列を抽出してもよい。ＲＣプログラムのサイズを表すビット列は、バイト単位にて示したデータのサイズでもよいし、ビット単位にて示したデータのサイズでもよい。
【００６７】
また、抽出部７０３は、ＲＣプログラムのビット列のうち抽出されていない残余のビット列があり、かつ、要求元装置からデータの取得要求を受け付けた場合、残余のビット列を抽出してもよい。
【００６８】
また、抽出部７０３は、所定数のＧＰ命令ごとの圧縮ＧＰ命令について、ＲＣプログラムのビット列の中から、所定数のＧＰ命令のデータサイズから所定数のＧＰ命令ごとの圧縮ＧＰ命令のデータサイズを減じたサイズ分のビット列を抽出してもよい。
【００６９】
たとえば、所定数が４であって、所定数のＧＰ命令の合計のデータサイズが、４×３２＝１２８［ビット］であり、所定数のＧＰ命令ごとの圧縮ＧＰ命令のデータサイズが、５６［ビット］であるとする。この場合、抽出部７０３は、ＲＣプログラムのビット列の中から、１２８−５６＝７２［ビット］分のデータ列を抽出する。なお、抽出したビット列は、データ作成装置１０２内のレジスタ等の記憶領域に記憶される。または、ＲＯＭ２０１〜フラッシュＲＯＭ２０３、フラッシュＲＯＭ２０５等の記憶領域内のＲＣプログラムが格納されたアドレスのうち、抽出された範囲を示すアドレスが、データ作成装置１０２内のレジスタ等の記憶領域に記憶されてもよい。
【００７０】
作成部７０４は、各々の圧縮ＧＰ命令と抽出部７０３によって各々の圧縮ＧＰ命令について抽出されたビット列とを結合した各々の結合データを、格納順にしたがって連結することにより、ＧＰ命令群とＲＣプログラムとの取得要求に対する応答データを作成する。たとえば、図１の例であれば、作成部７０４は、圧縮ＧＰ命令１１１−１とビット列１１２−１とを結合した結合データ１１３−１と、…、圧縮ＧＰ命令１１１−８とビット列１１２−８とを結合した結合データ１１３−８とを作成する。
【００７１】
また、作成部７０４は、抽出部７０３によって抽出された残余のビット列を、ＲＣプログラムの取得要求に対する応答データとして作成してもよい。たとえば、ＧＰ命令群とＲＣプログラムとの取得要求に対する応答データの出力後、ＲＣプログラムのビット列の中に抽出されなかったビット列があれば、作成部７０４は、残余のビット列を、ＲＣプログラムの取得要求に対する応答データとして作成する。また、作成部７０４は、所定数のＧＰ命令ごとの圧縮ＧＰ命令と抽出部７０３によって所定数のＧＰ命令ごとの圧縮ＧＰ命令について抽出されたビット列とを結合した所定数のＧＰ命令ごとの結合データを、格納順にしたがって連結してもよい。
【００７２】
出力部７０５は、作成部７０４によって作成された応答データを要求元装置に出力する。たとえば、図１の例を用いると、出力部７０５は、応答データ１１４を出力する。
【００７３】
実行部７１０は、ＧＰ命令を実行する。たとえば、実行部７１０は、ＡＮＤ命令、ＯＲ命令、ロード命令やストア命令といった命令を実行する。送信部７１１は、格納順にしたがって連続するＧＰ命令群と、実行部７１０が実行したＧＰ命令により指定されたＲＣプログラムとの取得要求をデータ作成装置１０２に送信する。
【００７４】
受信部７１２は、応答データをデータ作成装置１０２から受信する。応答データは、各々の圧縮ＧＰ命令と、ＲＣプログラムのビット列の中から抽出された、各々のＧＰ命令のデータサイズから各々の圧縮ＧＰ命令のデータサイズを減じたサイズ分のビット列とを結合した結合データを格納順にしたがって連結したデータである。
【００７５】
格納部７１３は、応答データを受け付けた場合、応答データを記憶領域７２０に格納する。伸長部７１４は、格納部７１３によって記憶領域７２０に格納された応答データから、各々の圧縮ＧＰ命令を伸長する。出力部７１５は、伸長部７１４によって伸長されたＧＰ命令と、応答データのビット列から、伸長されたＧＰ命令を除いた残余のビット列とを出力する。
【００７６】
図８は、命令を圧縮する際の動作例を示す説明図である。図８では、ＧＰ命令群４０３が圧縮される場合の動作について説明する。なお、圧縮を行う装置としては、コンピュータシステム１００用のソフトウェアを生成するコンパイラを実行する装置でもよいし、データ作成装置１０２でもよい。図８では、コンパイラを実行する装置が圧縮を行うとし、実行主体を、説明の簡略化のため、コンパイラとして説明を行う。
【００７７】
コンパイラは、ＧＰ命令を、所定のサイズを１単位として圧縮する。所定のサイズは、たとえば、１命令のサイズ、ワードアラインメントのサイズ、バス幅、キャッシュラインのサイズ等である。所定のサイズが１命令のサイズであれば、たとえば１ワード＝３２［ビット］である。所定のサイズがキャッシュラインのサイズであれば、たとえば、１ラインに４命令が格納できる場合、３２［ビット］×４＝１２８［ビット］が所定のサイズとなる。
【００７８】
図８の例では、コンパイラが、ＧＰ命令群４０３を、バス幅ごとに圧縮するとする。コンパイラは、ＧＰ命令群４０３の先頭から、バス幅に含まれる圧縮前となるＧＰ命令８０１を抽出し、圧縮する。次に、コンパイラは、ＧＰ命令８０１と圧縮ＧＰ命令８１１とのデータサイズを比較し、ＧＰ命令８０１より圧縮ＧＰ命令８１１のデータサイズが小さければ、コンパイラは、圧縮フラグを有効に設定し、圧縮ＧＰ命令８１１に圧縮フラグを付与する。また、圧縮ＧＰ命令８１１が圧縮前のＧＰ命令８０１以上のデータサイズとなる場合、コンパイラは、圧縮フラグを無効に設定し、ＧＰ命令８０１に圧縮フラグを付与してデータを作成する。図８の例では、ＧＰ命令８０１より圧縮ＧＰ命令８１１が小さかった場合を示している。
【００７９】
続けて、コンパイラは、ＧＰ命令群４０３のうち、バス幅に含まれる次の圧縮前のＧＰ命令８０２を抽出し、圧縮する。圧縮前となるＧＰ命令８０２より圧縮ＧＰ命令８１２が小さかったとして、コンパイラは、圧縮ＧＰ命令８１２に、有効に設定した圧縮フラグを付与する。このように、コンパイラは、バス幅に含まれる命令を順次圧縮していく。
【００８０】
また、具体的なデータ作成方法は、たとえば、命令の出現頻度を記憶した辞書を用いて、圧縮前の符号より短い符号へ置換する。圧縮のアルゴリズムとしては、たとえば、ハフマン符号等がある。また、辞書に相当するデータは、圧縮を行うコンパイラと、伸長装置３０３が有する。辞書の作成タイミングとしては、コンパイラがＧＰ命令を圧縮するタイミングでもよいし、データ作成装置１０２がＧＰ命令を圧縮するタイミングでもよい。また、コンパイラが辞書だけを作成しておき、データ作成装置１０２が、既に作成されている辞書を参照して、ＧＰ命令を圧縮してもよい。
【００８１】
また、圧縮が行われる、ＲＣプログラム指示命令と、ＲＣ実行指示命令までのコードブロックを１つの辞書を用いる単位としてもよい。たとえば、ＧＰ命令群４０３を圧縮するのに用いる辞書と、ＧＰ命令群４０７を圧縮するのに用いる辞書と、が異なってもよい。ＧＰ命令群４０３とＧＰ命令群４０７にて命令の出現頻度が異なる場合、異なる辞書を用いることにより、コンピュータシステム１００は、圧縮率を向上することができる。
【００８２】
また、辞書の参照方法としては、たとえば、コンパイラは、コードブロックの先頭に、辞書データを挿入してもよいし、辞書データへのアドレス位置を挿入してもよい。また、複数の辞書を用いる場合、コンパイラは、コードブロックの特定のため、アドレス、またはプログラム先頭からのオフセット、をキーとするテーブルを各コードブロックの先頭に挿入する。
【００８３】
また、ＧＰ命令が可変長命令であってもよい。この場合、コンパイラは、可変長命令のうち命令長が長い命令がコードブロックをまたがないように、ＮＯＰ（Ｎｏ  ＯＰｅｒａｔｉｏｎ）命令を挿入してもよい。
【００８４】
また、圧縮するか否かの判断方法は、ソースコードに記述された指示にしたがってもよい。たとえば、ソースコードに、コンパイラ固有の指定を行う“＃ｐｒａｇｍａ”命令がある場合、コンパイラは、“＃ｐｒａｇｍａ”命令の引数にしたがって、圧縮するか否かを判断する。次に、応答データの転送後の動作例について、図９を用いて説明する。
【００８５】
図９は、転送後の動作例を示す説明図である。図９では、データ作成装置１０２が図６の（Ｂ２）にて説明した結合データを連結して出力した後の動作を説明する。また、結合データが０ｘ１０バイトごとに作成されているとする。伸長装置３０３は、記憶領域７２０に、データ作成装置１０２が出力した応答データを記憶する。
【００８６】
具体的に、記憶領域７２０のうち、０ｘ００〜０ｘ０Ｆ番地の記憶領域は、最上位ビットから、圧縮フラグ９０１と、圧縮ＧＰ命令９１１と、圧縮ＧＰ命令９１２と、圧縮ＧＰ命令９１３と、圧縮ＧＰ命令９１４とを格納している。さらに、０ｘ００〜０ｘ０Ｆ番地の記憶領域は、空き領域に、ＲＣプログラム１１２のビット列の一部のビット列９３１を格納している。圧縮フラグ９０１は、後続のＧＰ命令が圧縮されていることを示す“１”が設定されているとする。
【００８７】
また、０ｘ１０〜０ｘ１Ｆ番地の記憶領域は、最上位ビットから、圧縮フラグ９０２と、ＧＰ命令９１５と、ＧＰ命令９１６と、ＧＰ命令９１７と、ＧＰ命令９１８とを格納している。圧縮フラグ９０２は、後続のＧＰ命令が圧縮されていないことを示す“０”が設定されているとする。
【００８８】
また、０ｘ２０〜０ｘ２Ｆ番地の記憶領域は、最上位ビットから、圧縮フラグ９０３と、圧縮ＧＰ命令９１９と、圧縮ＧＰ命令９２０と、圧縮ＧＰ命令９２１と、圧縮ＧＰ命令９２２とを格納している。さらに、０ｘ２０〜０ｘ２Ｆ番地の記憶領域は、空き領域に、ＲＣプログラム１１２のビット列の一部のビット列９３２を格納している。圧縮フラグ９０３は、後続のＧＰ命令が圧縮されていることを示す“１”が設定されているとする。
【００８９】
このような記憶内容となる状態において、伸長装置３０３は、圧縮フラグ９０１を参照して、圧縮ＧＰ命令９１１〜圧縮ＧＰ命令９１４を順に伸長して、伸長したデータを、インストラクションキャッシュメモリ３１２に出力する。また、伸長装置３０３は、４つ分の圧縮ＧＰ命令を伸長した残りのデータを、ＲＣプログラム１１２のビット列であるとして、ＲＣプログラム制御部３０４に出力する。
【００９０】
また、伸長装置３０３は、ＧＰＰ３０１から０ｘ２８のＧＰ命令取得要求を受け付けたとする。このとき、伸長装置３０３は、０ｘ２８の上位８ビットとなる０ｘ２０〜０ｘ２Ｆの記憶領域をＧＰＰ３０１に出力する。または、伸長装置３０３は、０ｘ２０〜０ｘ２Ｆの記憶領域に含まれるＧＰ命令を順に伸長していき、０ｘ２８の位置にあるＧＰ命令をＧＰＰ３０１に出力してもよい。このように、アドレス位置を維持して圧縮ＧＰ命令が格納されているため、伸長装置３０３は、取得要求に対する命令が格納された位置を容易に特定することができる。
【００９１】
次に、図１０〜図１４を用いて、コンピュータシステム１００が実行するフローチャートについて説明を行う。図１０、図１１では、それぞれ、ＧＰＰ３０１が、ＲＣプログラム指示命令と、ＲＣ実行指示命令を実行した場合のフローチャートを示している。図１２では、ＧＰＰ３０１から、命令の取得要求が発生した場合のフローチャートを示している。図１３、図１４では、それぞれ、データ作成装置１０２と伸長装置３０３の処理手順のフローチャートを示している。
【００９２】
図１０は、ＲＣプログラム指示処理手順の一例を示すフローチャートである。ＲＣプログラム指示は、ＧＰＰ３０１がＲＣプログラム指示命令を実行した場合の処理である。ＧＰＰ３０１がＲＣプログラム指示命令を実行した場合、ＲＣプログラム制御部３０４は、ＲＣプログラム指示命令キュー３１３にＲＣプログラム指示命令を追加する（ステップＳ１００１）。次に、ＲＣプログラム制御部３０４は、データ作成装置１０２と伸長装置３０３の動作状態がともに終了状態か否かを判断する（ステップＳ１００２）。どちらかの動作状態が終了状態でない場合（ステップＳ１００２：Ｎｏ）、ＲＣプログラム制御部３０４は、一定時間経過後、ステップＳ１００２の処理を再び実行する。
【００９３】
どちらも動作状態が終了状態である場合（ステップＳ１００２：Ｙｅｓ）、ＲＣプログラム制御部３０４は、ＲＣプログラム指示命令キュー３１３から、ＲＣプログラム指示命令を取り出す（ステップＳ１００３）。次に、ＲＣプログラム制御部３０４は、データ作成装置１０２と伸長装置３０３とＲＣプログラムバッファ３１４とを初期化する（ステップＳ１００４）。ステップＳ１００４の処理は、具体的には、データ作成装置１０２は、ＲＣプログラムの転送を終了していない状態に設定する。また、伸長装置３０３は、たとえば、終端情報を受け付けていない状態に設定する。また、ＲＣプログラム制御部３０４は、ＲＣプログラムバッファ３１４を、たとえば、すべて０埋めする。
【００９４】
続けて、ＲＣプログラム制御部３０４は、伸長装置３０３が終端情報を受け付けたか否かを判断する（ステップＳ１００５）。終端情報を受け付けていない場合（ステップＳ１００５：Ｎｏ）、ＲＣプログラム制御部３０４は、一定時間経過後、ステップＳ１００５の処理を再び実行する。終端情報を受け付けた場合（ステップＳ１００５：Ｙｅｓ）、ＲＣプログラム制御部３０４は、ＲＣプログラムバッファ３１４に空きがあるか否かを判断する（ステップＳ１００６）。
【００９５】
空きがない場合（ステップＳ１００６：Ｎｏ）、ＲＣプログラム制御部３０４は、最も古いＲＣプログラムを破棄する（ステップＳ１００７）。空きがある場合（ステップＳ１００６：Ｙｅｓ）、ＲＣプログラム制御部３０４は、ＲＣプログラムをＲＣプログラムバッファ３１４に書き込む（ステップＳ１００８）。次に、ＲＣプログラム制御部３０４は、書き込んだＲＣプログラムをＲＣエンジン３０２に設定する（ステップＳ１００９）。ステップＳ１００９の実行終了後、ＲＣプログラム制御部３０４は、ＲＣプログラム指示処理を終了する。ＲＣプログラム指示処理を実行することにより、ＲＣプログラム制御部３０４は、ＲＣプログラムを実行できる状態に設定することができる。
【００９６】
図１１は、ＲＣ実行指示処理手順の一例を示すフローチャートである。ＲＣ実行指示処理は、ＧＰＰ３０１がＲＣ実行指示命令を実行した場合の処理である。ＧＰＰ３０１がＲＣ実行指示命令を実行した場合、ＲＣプログラム制御部３０４は、該当のＲＣプログラムが実行可能か否かを判断する（ステップＳ１１０１）。実行可能でない場合（ステップＳ１１０１：Ｎｏ）、ＲＣプログラム制御部３０４は、ＧＰＰ３０１のパイプラインを停止させる（ステップＳ１１０２）。次に、ＲＣプログラム制御部３０４は、残余のＲＣプログラムのＤＭＡ転送要求を、伸長装置３０３に指示する（ステップＳ１１０３）。
【００９７】
転送完了後、ＲＣプログラム制御部３０４は、ＧＰＰ３０１のパイプラインの停止を解除させる（ステップＳ１１０４）。停止の解除後、または実行可能である場合（ステップＳ１１０１：Ｙｅｓ）、ＲＣプログラム制御部３０４は、ＲＣエンジン３０２にＲＣプログラムを実行させる（ステップＳ１１０５）。ステップＳ１１０５の実行終了後、ＲＣプログラム制御部３０４は、ＲＣプログラム実行処理を終了する。ＲＣプログラム実行処理を実行することにより、ＲＣプログラム制御部３０４は、該当のＲＣプログラムをＲＣエンジン３０２に実行させることができる。
【００９８】
図１２は、取得要求処理手順の一例を示すフローチャートである。取得要求処理は、ＧＰＰ３０１が、ＧＰ命令を取得する時に実行する処理である。ＧＰＰ３０１は、ＲＣプログラム指示中か否かを判断する（ステップＳ１２０１）。ＲＣプログラム指示中である場合（ステップＳ１２０１：Ｙｅｓ）、ＧＰＰ３０１は、圧縮ＧＰ命令群とＲＣプログラムとのＤＭＡ転送要求を伸長装置３０３に通知する（ステップＳ１２０２）。ＲＣプログラム指示中でない場合（ステップＳ１２０１：Ｎｏ）、ＧＰＰ３０１は、ＧＰ命令のＤＭＡ転送要求を通知する（ステップＳ１２０３）。ステップＳ１２０２、またはステップＳ１２０３の処理実行後、ＧＰＰ３０１は取得要求処理を終了する。取得要求処理を実行することにより、ＧＰＰ３０１は、これから読み込むＧＰ命令群とＧＰ命令の実行により要求されるデータの取得要求を発行できる。
【００９９】
図１３は、データ作成装置の処理手順の一例を示すフローチャートである。データ作成装置１０２は、動作状態を実行中状態に設定する（ステップＳ１３０１）。データ作成装置１０２は、いずれかのＤＭＡ転送要求を受け付けたか否かを判断する（ステップＳ１３０２）。圧縮ＧＰ命令群とＲＣプログラムとのＤＭＡ転送要求を受け付けた場合（ステップＳ１３０２：圧縮ＧＰ命令群とＲＣプログラム）、データ作成装置１０２は、結合データの圧縮フラグを有効に設定する（ステップＳ１３０３）。次に、データ作成装置１０２は、圧縮ＧＰ命令を取得する（ステップＳ１３０４）。
【０１００】
続けて、データ作成装置１０２は、ＲＣプログラムの転送が終了したか否かを判断する（ステップＳ１３０５）。ＲＣプログラムの転送が終了した場合（ステップＳ１３０５：Ｙｅｓ）、データ作成装置１０２は、圧縮ＧＰ命令と終端情報を結合する（ステップＳ１３０６）。ＲＣプログラムの転送が終了していない場合（ステップＳ１３０５：Ｎｏ）、データ作成装置１０２は、ＲＣプログラムのビット列の中から、圧縮ＧＰ命令のデータサイズからＧＰ命令のサイズを減じたサイズ分のビット列を抽出する（ステップＳ１３０７）。次に、データ作成装置１０２は、圧縮ＧＰ命令と抽出したビット列を結合する（ステップＳ１３０８）。ステップＳ１３０６、またはステップＳ１３０８の実行後、データ作成装置１０２は、格納順にしたがって応答データを作成する（ステップＳ１３０９）。
【０１０１】
また、ＧＰ命令のＤＭＡ転送要求を受け付けた場合（ステップＳ１３０２：ＧＰ命令）、データ作成装置１０２は、応答データの圧縮フラグを無効に設定する（ステップＳ１３１０）。次に、データ作成装置１０２は、応答データにＧＰ命令を格納する（ステップＳ１３１１）。残余のＲＣプログラムのＤＭＡ転送要求を受け付けた場合（ステップＳ１３０２：残余のＲＣプログラム）、データ作成装置１０２は、ＲＣプログラムのビット列の中から、抽出されていない残余のビット列を抽出する（ステップＳ１３１２）。続けて、データ作成装置１０２は、抽出したビット列を応答データに格納する（ステップＳ１３１３）。
【０１０２】
ステップＳ１３０９、ステップＳ１３１１、またはステップＳ１３１３の実行終了後、データ作成装置１０２は、応答データを出力する（ステップＳ１３１４）。続けて、データ作成装置１０２は、要求されたＤＭＡ転送が終了したか否かを判断する（ステップＳ１３１５）。ＤＭＡ転送が終了していない場合（ステップＳ１３１５：Ｎｏ）、データ作成装置１０２は、ステップＳ１３０２の処理に移行する。ＤＭＡ転送が終了した場合（ステップＳ１３１５：Ｙｅｓ）、データ作成装置１０２は、動作状態を終了状態に設定する（ステップＳ１３１６）。ステップＳ１３１６の実行終了後、データ作成装置１０２は、処理を終了する。
【０１０３】
また、応答データにＲＣプログラムのデータサイズを含めるときは、データ作成装置１０２は、ステップＳ１３０５の処理にて、ＲＣプログラムの転送を開始するか否かを判断し、開始する場合、圧縮ＧＰ命令とＲＣプログラムのサイズを表すビット列とを結合する。図１３のフローチャートにて示す処理により、データ作成装置１０２は、ＧＰ命令群の送信を阻害せずに、ＲＣプログラムを送信することができる。
【０１０４】
図１４は、伸長装置の処理手順の一例を示すフローチャートである。伸長装置３０３は、動作状態を実行中状態に設定する（ステップＳ１４０１）。次に、伸長装置３０３は、応答データを受け付ける（ステップＳ１４０２）。続けて、伸長装置３０３は、応答データの圧縮フラグが有効か否かを判断する（ステップＳ１４０３）。圧縮フラグが有効である場合（ステップＳ１４０３：Ｙｅｓ）、伸長装置３０３は、応答データ内の圧縮ＧＰ命令を伸長する（ステップＳ１４０４）。次に、伸長装置３０３は、応答データ内の圧縮ＧＰ命令以降のビット列をＲＣプログラムの一部のビット列として抽出する（ステップＳ１４０５）。なお、ステップＳ１４０５の処理にて、伸長装置３０３は、応答データ内の圧縮ＧＰ命令以降のビット列に終端情報が含まれていた場合、終端情報以降の応答データ内の圧縮ＧＰ命令以降のビット列を破棄する。続けて、伸長装置３０３は、ＧＰ命令と一部のビット列とを出力する（ステップＳ１４０６）。
【０１０５】
圧縮フラグが無効である場合（ステップＳ１４０３：Ｎｏ）、伸長装置３０３は、応答データを出力する（ステップＳ１４０７）。ステップＳ１４０６、またはステップＳ１４０７の実行終了後、伸長装置３０３は、ＤＭＡ転送が終了したか否かを判断する（ステップＳ１４０８）。ＤＭＡ転送が終了していない場合（ステップＳ１４０８：Ｎｏ）、伸長装置３０３は、ステップＳ１４０２の処理に移行する。ＤＭＡ転送が終了している場合（ステップＳ１４０８：Ｙｅｓ）、伸長装置３０３は、動作状態を終了状態に設定する（ステップＳ１４０９）。ステップＳ１４０９の実行終了後、伸長装置３０３は、処理を終了する。
【０１０６】
また、応答データにＲＣプログラムのデータサイズが含まれているときは、伸長装置３０３は、ステップＳ１４０５の１回目の処理にて、ＲＣプログラムのデータサイズを取得する。次に、伸長装置３０３は、ステップＳ１４０５の２回目以降の処理にて、抽出したＲＣプログラムのビット列の合計のサイズを算出し、算出した値がＲＣプログラムのデータサイズとなった場合、応答データ内の圧縮ＧＰ命令以降のビット列を破棄する。図１４のフローチャートにて示す処理により、伸長装置３０３は、圧縮ＧＰ命令とＲＣプログラムを分離して出力することができる。
【０１０７】
図１５は、本実施の形態にかかるコンピュータを用いたシステムの適用例を示す説明図である。図１５において、ネットワーク２１０は、サーバ１５０１とクライアント１５１１〜クライアント１５１４とが通信可能なネットワークであり、たとえば、ＬＡＮ、ＷＡＮ、インターネット、携帯電話網などを含む。
【０１０８】
クライアント１５１１はノート型ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）である。クライアント１５１２はデスクトップ型ＰＣ、クライアント１５１３は携帯電話機である。携帯電話機として、クライアント１５１３は、スマートフォンであってもよいし、ＰＨＳ（Ｐｅｒｓｏｎａｌ  Ｈａｎｄｙｐｈｏｎｅ  Ｓｙｓｔｅｍ）であってもよい。クライアント１５１４はタブレット型端末である。
【０１０９】
図１５のサーバ１５０１、クライアント１５１１〜クライアント１５１４が、実施の形態で説明したコンピュータシステムとなる。たとえば、サーバ１５０１は、データ作成装置１０２を有し、さらにサーバ１５０１内のＣＰＵに、ＧＰＰ３０１〜ＲＣプログラム制御部３０４と、共有レジスタ３１１〜ＲＣプログラムバッファ３１４を含んで、本実施の形態で示した動作を行う。
【０１１０】
以上説明したように、データ作成装置１０２によれば、ＧＰ命令群とＲＣプログラムが要求された場合、ＧＰ命令と圧縮ＧＰ命令との差分サイズ分のデータを圧縮命令の後に埋め込んだビット列を、各ＧＰ命令の格納順にしたがって連結して出力する。これにより、データ作成装置１０２は、ＧＰ命令の送信を阻害せずにＲＣプログラムを送信できる。したがって、データ作成装置１０２は、ＲＣプログラムを効率よく送信できるようになり、ＧＰＰ３０１の実効パフォーマンスを向上させることができる。
【０１１１】
また、データ作成装置１０２は、圧縮ＧＰ命令をＲＯＭ２０１等に記憶している場合に、各々の圧縮ＧＰ命令に対応する各々のＧＰ命令のデータサイズを記憶する記憶領域を参照して、圧縮ＧＰ命令のデータサイズとＧＰ命令のデータサイズを取得してもよい。これにより、コンピュータシステム１００は、ＧＰ命令を圧縮しておくことができ、データ量の削減を行うことができる。また、データ作成装置１０２は、圧縮ＧＰ命令を伸長しなくとも圧縮ＧＰ命令のデータサイズとＧＰ命令のデータサイズを取得することができるため、伸長にかかる処理分、処理量を削減することができる。
【０１１２】
また、データ作成装置１０２は、ＲＣプログラムをすべて出力した場合、終端情報を付与してもよい。これにより、ＲＣプログラムを受信する伸長装置３０３は、ＲＣプログラムをすべて取得した状態になったことが判断できるようにできる。
【０１１３】
また、データ作成装置１０２は、ＲＣプログラムのサイズを表すビット列を出力した後に、ＲＣプログラムを出力してもよい。これにより、ＲＣプログラムを受信する伸長装置３０３は、ＲＣプログラムをすべて取得した状態になったことが判断できるようにできる。
【０１１４】
また、データ作成装置１０２は、ＧＰ命令群とＲＣプログラムとの取得要求に対する応答データに、ＲＣプログラムすべてが送信できなかった後に、ＲＣプログラムの取得要求を受け付けた場合、ＲＣプログラムのうち残余のビット列を出力してもよい。これにより、データ作成装置１０２は、ＲＣプログラム１１２を実行できる状態を担保することができる。
【０１１５】
また、データ作成装置１０２は、所定数のＧＰ命令ごとに圧縮された圧縮ＧＰ命令と、所定数のＧＰ命令のデータサイズから所定数のＧＰ命令ごとの圧縮命令のデータサイズを減じたサイズ分抽出されたＲＣプログラムのビット列と、を連結してもよい。所定数のＧＰ命令ごとに圧縮された圧縮ＧＰ命令には、圧縮フラグを１つ付与すればよく、所定数分の圧縮フラグを付与しなくてよいため、所定数−１のビット分、データ量を減少することができる。
【０１１６】
また、可逆圧縮を行うアルゴリズムは、データの規則性、冗長性を検出して、出現頻度の高いものに短い符号を、出現頻度の低いものに長い符号を与えることで、圧縮率を高くする方法をとっているものがある。したがって、データ作成装置１０２は、圧縮対象となるデータサイズが大きくなることにより、圧縮率が高くなる可能性が増え、より多くのＲＣプログラムを転送することができる。
【０１１７】
圧縮対象となるデータサイズが大きくなると圧縮率が高くなる理由として、たとえば、命令長が３２［ビット］のＧＰ命令群のうち、ＡＮＤ命令が最頻出であり、ＡＮＤ命令が４箇所連続している箇所があったとする。１つのＧＰ命令を１つの圧縮ＧＰ命令へ圧縮する場合、圧縮を行う装置は、１つのＧＰ命令３２［ビット］を１［ビット］の符号に置き換える。次に、４つのＧＰ命令を１つの圧縮ＧＰ命令へ圧縮する場合、ＧＰ命令群を４つの命令ごとに分け、その中で、連続する４つのＡＮＤ命令が最頻出となったとする。このとき、圧縮を行う装置は、３２×４［ビット］を１［ビット］の符号に置き換える。このように、圧縮対象となるデータサイズが大きくなった場合、より大きいデータを短い符号に置き換えられる可能性が高まり、圧縮率が高くなる可能性が増える。
【０１１８】
また、本実施の形態では、ＲＣ命令と、ＲＣプログラムがＧＰ命令のある範囲と対応するという性質を用いて、ＲＣプログラム指示命令とＲＣ実行指示命令の間のＧＰ命令を圧縮して、圧縮により生まれた隙間にＲＣプログラムを充填している。これにより、ＧＰＰ３０１やインストラクションキャッシュメモリ３１２を制御するシステムからのＧＰ命令転送を阻害することなく、ＲＣプログラムの転送を実現することができる。
【０１１９】
なお、本実施の形態で説明したデータ作成方法は、予め用意されたプログラムをコンピュータで実行することにより実現してもよい。また、本データ作成プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本データ作成プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１２０】
また、本実施の形態で説明したデータ作成装置１０２と伸長装置３０３とは、スタンダードセルやストラクチャードＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などの特定用途向けＩＣ（以下、単に「ＡＳＩＣ」と称す。）やＦＰＧＡなどのＰＬＤによっても実現することができる。具体的には、たとえば、上述したデータ作成装置１０２の受付部７０１〜出力部７０５をＨＤＬ記述によって機能定義し、ＨＤＬ記述を論理合成してＡＳＩＣやＰＬＤに与えることにより、データ作成装置１０２を製造することができる。同様に、伸長装置３０３の送信部７１１〜出力部７１５、記憶領域７２０をＨＤＬ記述によって機能定義し、ＨＤＬ記述を論理合成してＡＳＩＣやＰＬＤに与えることにより、伸長装置３０３を製造することができる。
【符号の説明】
【０１２１】
１００  コンピュータシステム
１０２  データ作成装置
７０１  受付部
７０２  取得部
７０３  抽出部
７０４  作成部
７０５  出力部
【図１】
0005817603.tif 000002
【図２】
0005817603.tif 000003
【図３】
0005817603.tif 000004
【図４】
0005817603.tif 000005
【図５】
0005817603.tif 000006
【図６】
0005817603.tif 000007
【図７】
0005817603.tif 000008
【図８】
0005817603.tif 000009
【図９】
0005817603.tif 000010
【図１０】
0005817603.tif 000011
【図１１】
0005817603.tif 000012
【図１２】
0005817603.tif 000013
【図１３】
0005817603.tif 000014
【図１４】
0005817603.tif 000015
【図１５】
0005817603.tif 000016