JP2013196061A - データ作成装置、データ作成方法、およびデータ作成プログラム - Google Patents

データ作成装置、データ作成方法、およびデータ作成プログラム Download PDF

Info

Publication number
JP2013196061A
JP2013196061A JP2012059493A JP2012059493A JP2013196061A JP 2013196061 A JP2013196061 A JP 2013196061A JP 2012059493 A JP2012059493 A JP 2012059493A JP 2012059493 A JP2012059493 A JP 2012059493A JP 2013196061 A JP2013196061 A JP 2013196061A
Authority
JP
Japan
Prior art keywords
instruction
data
compressed
program
bit string
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.)
Granted
Application number
JP2012059493A
Other languages
English (en)
Other versions
JP5817603B2 (ja
Inventor
Kiyonori Morioka
清訓 森岡
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012059493A priority Critical patent/JP5817603B2/ja
Publication of JP2013196061A publication Critical patent/JP2013196061A/ja
Application granted granted Critical
Publication of JP5817603B2 publication Critical patent/JP5817603B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

【課題】命令の送信を阻害せずにデータの送信を行えるようにすること。
【解決手段】データ作成装置102は、GP命令群とRCプログラムとの取得要求を受け付けた場合、GP命令群の各々のGP命令が圧縮された各々の圧縮GP命令111−1〜111−8を取得する。次に、データ作成装置102は、圧縮GP命令111−1〜111−8について、RCプログラム112のビット列の中から、各々のGP命令のデータサイズから各々の圧縮GP命令のデータサイズを減じたサイズ分のビット列を抽出する。次に、データ作成装置102は、圧縮GP命令111−1〜111−8と抽出されたビット列112−1〜112−8とを結合した結合データ113−1〜113〜8を、CPU101での格納順にしたがって連結する。続けて、データ作成装置102は、取得要求に対する応答データ114を作成して出力する。
【選択図】図1

Description

本発明は、データ作成装置、データ作成方法、およびデータ作成プログラムに関する。
従来、データの情報量を失うことなくデータ量を縮小するデータ圧縮技術がある。データを圧縮することにより、記憶容量の減少を図ることができたり、データの通信にかかる時間を短くしたりすることができる。
関連する先行技術に関して、たとえば、非圧縮データと圧縮データを送信する技術が開示されている。また、CPU(Central Processing Unit)が実行する命令を圧縮してメモリから送信する技術にて、ジャンプ先命令の前にパディングを付与することにより、無関係な命令が実行されることを避けつつ、命令を圧縮したことにより同時に読める命令を増加することができる技術が開示されている。(たとえば、下記特許文献1、2を参照。)
特開平6−242923号公報 特開平8−328817号公報
しかしながら、上述した従来技術において、CPUからの命令群と、実行した命令により指定されるデータとの取得要求が発生した場合、CPUへのデータの送信によって命令群の送信が阻害され、CPUの命令実行が遅延する場合がある。たとえば、圧縮した命令とデータとは、時分割にて交互にCPUへ送信されることになるため、データの送信が行われている間は命令が送信されず、結果、CPUが実行しようとする命令が送信できていない場合、CPUの命令実行が遅延してしまう。
本発明は、上述した従来技術による問題点を解消するため、命令の送信を阻害せずにデータを送信できるデータ作成装置、データ作成方法、およびデータ作成プログラムを提供することを目的とする。
上述した課題を解決し、目的を達成するため、本発明の一側面によれば、要求元装置における格納順にしたがって連続する命令群と、要求元装置が実行した命令により指定される記憶領域に格納されているデータとの取得要求を受け付けた場合、命令群の各々の命令が圧縮された各々の圧縮命令を取得し、取得した各々の圧縮命令について、記憶領域に格納されているデータのビット列の中から、各々の命令のデータサイズから各々の圧縮命令のデータサイズを減じたサイズ分のビット列を抽出し、各々の圧縮命令と各々の圧縮命令について抽出したビット列とを結合した各々の結合データを、格納順にしたがって連結することにより、命令群とデータとの取得要求に対する応答データを作成し、作成した応答データを要求元装置に出力するデータ作成装置、データ作成方法、およびデータ作成プログラムが提案される。
本発明の一側面によれば、命令の送信を阻害せずにデータを送信できるという効果を奏する。
図1は、データ作成装置の動作例を示す説明図である。 図2は、コンピュータシステムのハードウェア構成例を示すブロック図である。 図3は、CPU内部のハードウェア構成例を示す説明図である。 図4は、GP命令群を圧縮せずにGP命令群とRCプログラムとを転送する例を示す説明図である。 図5は、GP命令群を圧縮した圧縮GP命令群とRCプログラムとを転送する例を示す説明図である。 図6は、結合データの記憶内容の一例を示す説明図である。 図7は、コンピュータシステムの機能構成例を示すブロック図である。 図8は、命令を圧縮する際の動作例を示す説明図である。 図9は、転送後の動作例を示す説明図である。 図10は、RCプログラム指示処理手順の一例を示すフローチャートである。 図11は、RC実行指示処理手順の一例を示すフローチャートである。 図12は、取得要求処理手順の一例を示すフローチャートである。 図13は、データ作成装置の処理手順の一例を示すフローチャートである。 図14は、伸長装置の処理手順の一例を示すフローチャートである。 図15は、本実施の形態にかかるコンピュータを用いたシステムの適用例を示す説明図である。
以下に添付図面を参照して、開示のデータ作成装置、データ作成方法、およびデータ作成プログラムの実施の形態を詳細に説明する。
図1は、データ作成装置の動作例を示す説明図である。図1において、コンピュータシステム100は、CPU101と、CPU101からの取得要求に応答するデータ作成装置102と、を含む。CPU101は、CPU101の記憶領域の格納順にしたがってこれから実行する命令群と、CPU101が実行した命令により指定される記憶領域に格納されているデータとの取得要求を、データ作成装置102に通知する。ここで、記憶領域に格納されているデータは、たとえば、アドレスによって指定されている。また、記憶領域に格納されているデータは、ファイル名によって指定されてもよい。データは、たとえば、画像ソフトウェアが用いる画像データ、動画像ソフトウェアが用いる動画像データであってもよい。また、CPU101にプログラムによって再構成可能な演算回路が含まれる場合、データは、演算回路の再構成を行うプログラムであってもよい。
以下、CPU101のうちの、再構成可能な演算回路以外の、再構成可能でない通常の演算回路を、「GPP(General Purpose Processor)」と呼称する。また、再構成可能な演算回路を「RC(ReConfigurable)エンジン」と呼称する。また、GPPが実行する命令を、「GP命令」と呼称する。また、RCエンジンが実行するプログラムを、「RCプログラム」と呼称する。
また、GP命令のうちの、RCエンジンが実行するRCプログラムを実行できる状態にする命令を「RCプログラム指示命令」と呼称する。RCプログラム指示命令により、GPPは、RCプログラムの取得要求を、データ作成装置102に通知する。なお、RCプログラムを実行できる状態については、図3にて後述する。また、GP命令のうちの、RCエンジンへのRCプログラムの実行指示命令を「RC実行指示命令」と呼称する。また、RCプログラム指示命令とRC実行指示命令とを、「RC命令」と総称する。また、以下の説明では、CPU101が実行した命令により指定される記憶領域に格納されているデータが、RCプログラムであるとして説明する。
たとえば、GP命令が固定長命令であって、1命令のデータサイズが32[ビット]であるとし、CPU101が、「0x80〜0x9F番地に格納されたRCプログラムを読み込め」という0x0C番地のRCプログラム指示命令を実行したとする。このとき、CPU101は、これから実行する命令群として、たとえば、0x10〜0x2F番地のGP命令群と、0x80〜0x9F番地に格納されているRCプログラム112との取得要求を、データ作成装置102に通知する。データ作成装置102は、GP命令群とRCプログラムとの取得要求に対する応答データを効率よく送信する。
具体的に、データ作成装置102は、GP命令群とRCプログラムとの取得要求を受け付けた場合、GP命令群の各々のGP命令が圧縮された各々の圧縮GP命令を取得する。図1の例では、0x10〜0x2F番地には、圧縮GP命令群111が格納されているとする。なお、コンピュータシステム100は、0x10〜0x2F番地に各々のGP命令を記憶しておき、データ作成装置102は、各々のGP命令を圧縮してもよい。データ作成装置102は、たとえば、0x10番地のGP命令が圧縮された圧縮GP命令111−1を取得する。さらに、データ作成装置102は、0x14番地のGP命令が圧縮された圧縮GP命令111−2と、…、0x2C番地のGP命令が圧縮された圧縮GP命令111−8と、を取得する。
次に、データ作成装置102は、圧縮GP命令111−1〜111−8について、RCプログラム112のビット列の中から、各々のGP命令のデータサイズから各々の圧縮GP命令のデータサイズを減じたサイズ分のビット列を抽出する。たとえば、圧縮GP命令111−1のデータサイズが14[ビット]であれば、データ作成装置102は、RCプログラム112のビット列の中から、32[ビット]から14[ビット]を減じた18[ビット]分のビット列112−1を抽出する。
続けて、データ作成装置102は、圧縮GP命令111−2のデータサイズが30[ビット]であれば、RCプログラム112のビット列の中から、32[ビット]から30[ビット]を減じた2[ビット]分のビット列112−2を抽出する。このように、データ作成装置102は、圧縮GP命令群111について抽出を行う。最後の抽出として、データ作成装置102は、圧縮GP命令111−8のデータサイズが24[ビット]であれば、RCプログラム112のビット列の中から、32[ビット]から24[ビット]を減じた8[ビット]分のビット列112−8を抽出する。
次に、データ作成装置102は、各々の圧縮GP命令と抽出されたビット列とを結合した各々の結合データを、CPU101での格納順にしたがって連結することにより、取得要求に対する応答データを作成する。たとえば、データ作成装置102は、圧縮GP命令111−1とビット列112−1とを結合した結合データ113−1を作成する。同様に、データ作成装置102は、圧縮GP命令111−2とビット列112−2とを結合した結合データ113−2と、…、圧縮GP命令111−8とビット列112−8とを結合した結合データ113−8とを作成する。続けて、データ作成装置102は、結合データ113−1〜結合データ113−8を格納順にしたがって連結することにより、応答データ114を作成する。
応答データ114の作成後、データ作成装置102は、応答データ114をCPU101に出力する。このように、データ作成装置102は、GP命令群とRCプログラムが要求された場合、GP命令と圧縮GP命令との差分サイズ分のRCプログラムを圧縮命令の後に埋め込んだビット列を、各命令の格納順にしたがって連結して出力する。これにより、データ作成装置102は、GP命令群の送信を阻害せずに、RCプログラムを送信することができる。以下、図2〜図15を用いて、コンピュータシステム100について詳細に説明する。
(コンピュータシステム100のハードウェア)
図2は、コンピュータシステムのハードウェア構成例を示すブロック図である。コンピュータシステム100は、CPU101と、ROM(Read Only Memory)201と、RAM(Random Access Memory)202と、フラッシュROM203と、フラッシュROMコントローラ204と、フラッシュROM205を有する。コンピュータシステム100は、さらに、ディスプレイ206と、IF207と、キーボード208と、を有する。CPU101、ROM201〜キーボード208は、それぞれバス209にて接続されている。
また、データ作成装置102は、ROM201〜フラッシュROMコントローラ204と、バス209の間に存在する。さらに、GP命令群または圧縮GP命令群111とRCプログラム112とは、ROM201〜フラッシュROM203、フラッシュROM205のいずれかに記憶されている。
ここで、CPU101は、コンピュータシステム100の全体の制御を司る制御装置である。また、コンピュータシステム100は、N個のCPUを含んでいてもよい。Nは、2以上の整数である。
ROM201は、ブートプログラムなどのプログラムを記憶している不揮発性メモリである。RAM202は、CPU101のワークエリアとして使用される揮発性メモリである。フラッシュROM203は、書き換え可能な不揮発性メモリであり、たとえば、読出し速度が高速なNOR型フラッシュメモリである。フラッシュROM203は、OS(Operating System)などのシステムソフトウェアやアプリなどを記憶している。たとえば、OSを更新する場合、コンピュータシステム100は、IF207によって新しいOSを受信し、フラッシュROM203に格納されている古いOSを、受信した新しいOSに更新する。
フラッシュROMコントローラ204は、CPU101の制御にしたがってフラッシュROM205に対するデータのリード/ライトを制御する制御装置である。フラッシュROM205は、書き換え可能な不揮発性メモリであり、たとえば、データの保存、運搬を主に目的とした、NAND型フラッシュメモリである。フラッシュROM205は、フラッシュROMコントローラ204の制御で書き込まれたデータを記憶する。データの具体例としては、コンピュータシステム100を使用するユーザがIF207を通して取得した画像データ、映像データなどを記憶してもよい。フラッシュROM205は、たとえば、メモリカード、SDカードなどを採用することができる。
ディスプレイ206は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。ディスプレイ206は、たとえば、TFT液晶ディスプレイなどを採用することができる。
IF207は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク210に接続され、ネットワーク210を介して他の装置に接続される。そして、IF207は、ネットワーク210と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。IF207には、たとえばモデムやLANアダプタなどを採用することができる。
キーボード208は、数字、各種指示などの入力のためのキーを有し、データの入力を行う。また、キーボード208は、タッチパネル式の入力パッドやテンキーなどであってもよい。
図3は、CPU内部のハードウェア構成例を示す説明図である。図3では、コンピュータシステム100にCPU101と、CPU300という複数のCPUがある例を示している。CPU101は、GPP301と、RCエンジン302と、伸長装置303と、RCプログラム制御部304と、を含む。さらに、CPU101は、共有レジスタ311と、インストラクションキャッシュメモリ312と、RCプログラム指示命令キュー313と、RCプログラムバッファ314とを含む。
GPP301は、再構成可能でない通常の演算回路である。GPP301は、GP命令を実行可能である。RCエンジン302は、再構成可能な演算回路である。RCエンジン302の具体例として、PLD(Programmable Logic Device)、FPGA(Field Programmable Gate Array)がある。コンピュータシステム100は、RCプログラムを2つ以上記憶している。ここで、RCエンジン302がPLD、FPGAであれば、たとえば、第1のRCプログラムは、特定の関数を計算し、計算結果が第1の閾値以上なら第1の閾値を出力するというプログラムである。さらに、第2のRCプログラムは、たとえば、第1のRCプログラムにおいて第1の閾値が第2の閾値に変更されたプログラムである。この場合、RCプログラムの内容は、処理内容すべてを記載していてもよいし、第1の閾値、第2の閾値のみが記載されていてもよい。
また、RCエンジン302の他の例としては、動作モードを変更可能なSIMD(Single Instruction Multiple Data)演算器等がある。具体的な動作モードは、たとえば、8ビット乗算を4つ独自に扱うモードと、下位30ビットを使って、10ビット乗算を3つ独自に扱うモードと、16ビット乗算を2つ独自に扱うモードと、32ビット乗算を1つ扱うモードと、という4つのモードがある。
伸長装置303は、データ作成装置102から出力されてきた応答データ114を伸長する。具体的に、伸長装置303は、応答データ114のビット列を伸長して、伸長されたGP命令群をインストラクションキャッシュメモリ312に出力するとともに、伸長されなかった残余のビット列をRCプログラム112としてRCプログラム制御部304に出力する。
RCプログラム制御部304は、RCプログラムに関する制御を行う。具体的に、RCプログラム制御部304は、GPP301がRCプログラム指示命令を実行したことを受け付けると、RCプログラムの取得要求を伸長装置303に通知する。また、RCプログラム制御部304は、伸長装置303からRCプログラムを受け付けた場合、RCプログラムをRCプログラムバッファ314に格納する。なお、RCプログラムを実行できる状態とは、RCプログラムがRCプログラムバッファ314に格納済みの状態である。
さらに、RCプログラム制御部304は、GPP301がRC実行指示命令を実行したことを受け付けると、RCプログラムを実行できる状態にあるか否かを判断する。RCプログラムを実行できる状態にない場合、RCプログラム制御部304は、GPP301にパイプライン動作の停止を指示して、RCプログラムの取得要求を伸長装置303に通知する。RCプログラムを実行できる状態にある場合、RCプログラム制御部304は、GPP301にRCプログラムの実行を許可する。
共有レジスタ311は、GPP301とRCエンジン302とが共有してアクセス可能な記憶領域である。共有レジスタ311を用いて、たとえば、GPP301は、RCエンジン302に実行させる処理の引数を与え、RCエンジン302は、処理結果をGPP301に通知する。インストラクションキャッシュメモリ312は、GP命令を一時的に記憶する記憶領域である。
RCプログラム指示命令キュー313は、RCプログラム指示命令を先入れ先出しにて記憶する記憶領域である。たとえば、伸長装置303がRCプログラムを取得している途中に、GPP301が新たなRCプログラム指示命令を実行した場合、RCプログラム制御部304は、新たなRCプログラム指示命令をRCプログラム指示命令キュー313に格納する。伸長装置303がRCプログラムの取得を完了した後、RCプログラム制御部304は、RCプログラム指示命令キュー313から新たなRCプログラム指示命令を取得し、新たなRCプログラムの取得要求を伸長装置303に通知する。
RCプログラムバッファ314は、RCプログラムを格納する記憶領域である。RCプログラムバッファ314は、RCプログラム1つ分を記憶可能な記憶領域でもよいし、RCプログラム複数分を記憶可能な記憶領域でもよい。
なお、RCエンジン302〜RCプログラム制御部304と、インストラクションキャッシュメモリ312〜RCプログラムバッファ314は、すべてのCPUに含まれていてもよいし、一部のCPUに含まれていてもよい。たとえば、CPU300に、RCエンジン302〜RCプログラム制御部304と、インストラクションキャッシュメモリ312〜RCプログラムバッファ314があってもなくてもよい。
続けて、図4と図5にて、GP命令群とRCプログラム112との取得要求に対する応答について説明を行う。図4では、GP命令群を圧縮せずに転送する例について説明し、図5では、GP命令群を圧縮して転送する例について説明する。
図4は、GP命令群を圧縮せずにGP命令群とRCプログラムとを転送する例を示す説明図である。図4では、GP命令群とRCプログラム112との取得要求と、に対して、データ作成装置102が、GP命令群を圧縮せずに時分割にて調停して転送する例を示している。図4の(A)は、転送すべきGP命令群と転送すべきRCプログラム112を表示している。以下、GP命令群とRCプログラム112とを順に説明する。また、図4の(A)と図4の(B)では、RCプログラム112に対して網掛けしている。
初めに、1番目に転送する命令は、GP命令群401である。次に、2番目に転送する命令は、RCプログラム指示命令402である。具体的に、RCプログラム指示命令402の更新対象となるプログラムは、RCプログラム(#A)となる。続けて、3番目に転送する命令は、GP命令群403である。また、RCプログラム指示命令402の実行によって発生した、1番目に転送するRCプログラム112は、RCプログラム(#A)411となる。次に、4番目に転送する命令は、RC実行指示命令404である。RC実行指示命令404により、RCエンジン302は、RCプログラム(#A)を実行する。
続けて、5番目に転送する命令は、GP命令群405である。次に、6番目に転送する命令は、RCプログラム指示命令406である。具体的に、RCプログラム指示命令406の更新対象となるプログラムは、RCプログラム(#B)となる。続けて、7番目に転送する命令は、GP命令群407である。また、RCプログラム指示命令406の実行によって発生した、2番目に転送するRCプログラム112は、RCプログラム(#B)412となる。次に、8番目に転送する命令は、RC実行指示命令408である。RC実行指示命令408により、RCエンジン302は、RCプログラム(#B)を実行する。
続けて、9番目に転送する命令は、RC実行指示命令409である。RC実行指示命令409により、RCエンジン302は、RCプログラム(#A)を実行する。なお、RC実行指示命令409の時点にて、RCプログラム(#A)が、RCプログラムバッファ314に既に格納されているため、RCプログラム指示命令を行わなくてもよい。
図4の(B)は、GP命令群とRCプログラム112とを転送した例を示している。データ作成装置102は、GP命令群403とRCプログラム(#A)411とを時分割にて重畳してバス幅ごとに転送する。たとえば、データ作成装置102がRCプログラム(#A)411を転送中の場合、GPP301は、実行すべきGP命令群403がまだ転送できていないため、実行を一旦停止することになる。
図5は、GP命令群を圧縮した圧縮GP命令群とRCプログラムとを転送する例を示す説明図である。図5では、GP命令群とRCプログラム112との取得要求と、に対して、データ作成装置102が、GP命令群を圧縮して転送する例を示している。図5の(A)は、転送すべきGP命令群と転送すべきRCプログラム112を表示している。以下、GP命令群とRCプログラム112とを順に説明する。また、図5の(A)と図5の(B)では、RCプログラム112に対して網掛けしている。
GP命令群には、GP命令群が圧縮されているか否かを表す1ビットの圧縮フラグ501が先頭に付与されている。圧縮フラグは、たとえば、後続のGP命令が圧縮されている場合、“1”が設定されており、後続のGP命令が圧縮されていない場合、“0”が設定される。また、圧縮フラグ501を付与する前のGP命令のデータサイズがバス幅と一致していた場合、圧縮フラグ501を付与することになった場合のGP命令のデータサイズは、バス幅から1ビット減じた値となる。また、圧縮フラグ501は、GP命令に含まれ、GP命令の先頭ビットが圧縮フラグ501としてもよい。また、圧縮フラグ501は、GP命令群に付与されずに、他の記憶領域にあってもよい。
1番目に転送する命令と、2番目に転送する命令は、図4と同一である。続けて、3番目に転送する命令は、GP命令群403が圧縮された圧縮GP命令群502である。また、RCプログラム指示命令402の実行によって発生した、1番目に転送するRCプログラム112は、RCプログラム(#A)411となる。
続けて、4番目に転送する命令から、6番目に転送する命令までは、図4と同一である。次に、7番目に転送する命令は、GP命令群407が圧縮された圧縮GP命令群503である。また、RCプログラム指示命令406の実行によって発生した、2番目に転送するRCプログラム112は、RCプログラム(#B)412となる。続けて、8番目に転送する命令から、10番目に転送する命令までは、図4と同一である。
図5(B)は、圧縮GP命令群とRCプログラム112と重畳して転送した例を示している。データ作成装置102は、圧縮GP命令群502の各々の圧縮GP命令とRCプログラム(#A)411のビット列の中から抽出したビット列とを結合した結合データを、CPU101での格納順にしたがって連結した応答データ511としてバス幅ごとに転送する。このように、応答データ511の作成について、データ作成装置102は、GP命令群403を圧縮によって発生した空き領域に、RCプログラム(#A)411のビット列を格納順にしたがって詰めて挿入している。また、応答データ511は、RCプログラム(#A)411のビット列すべてを詰めることができた場合を示している。
また、応答データ512の作成について、データ作成装置102は、GP命令群407を圧縮によって発生した空き領域に、RCプログラム(#B)412のビット列を格納順にしたがって詰めて挿入している。また、応答データ512は、RCプログラム(#B)412のビット列すべてを詰めることができなかった場合を示している。このとき、データ作成装置102は、RC実行指示命令408を転送する前に、詰め切れなかった残余のビット列513を転送する。なお、結合データの記憶内容について、図6にて後述する。
図6は、結合データの記憶内容の一例を示す説明図である。図6の(A1)と図6の(A2)は、命令フェッチのバス幅と、OSの使用する標準的なデータサイズとなる幅となるワード幅とが一致する場合における、結合データの記憶内容の一例を示している。図6の(B1)と図6の(B2)は、命令フェッチのバス幅と、ワード幅とが異なる場合における、結合データの記憶内容の一例を示している。
データ作成装置102は、バス幅とワード幅とが同一である場合、図6の(A1)にて示す結合データ601を作成してもよいし、図6の(A2)にて示す結合データ602を作成してもよい。また、データ作成装置102は、バス幅とワード幅とが異なる場合、図6の(B1)にて示す結合データ603を作成してもよいし、図6の(B2)にて示す結合データ604を作成してもよい。
図6の(A1)で示す結合データ601は、最上位ビットを含むビット列に圧縮GP命令611を有する。さらに、結合データ601は、圧縮GP命令611の後に、RCプログラムのビット列から抽出した、ワード幅から圧縮GP命令611を減じたサイズ分のビット列612を有する。また、図6の(A2)で示す結合データ602は、最下位ビットを含むビット列に圧縮GP命令611を有する。さらに、結合データ602は、圧縮GP命令611の前に、ワード幅から圧縮GP命令611を減じたサイズ分、RCプログラムのビット列から抽出したビット列612を有する。
また、図6の(B1)で示す結合データ603は、ワード幅ごとに、各ワード幅の最上位ビットを含むビット列に、圧縮GP命令621、圧縮GP命令622、圧縮GP命令623、圧縮GP命令624を有する。さらに、結合データ603は、圧縮GP命令621〜圧縮GP命令624の後に、それぞれ、ビット列631、ビット列632、ビット列633、ビット列634を有する。
また、図6の(B2)で示す結合データ604は、最上位ビットを含むビット列に、圧縮GP命令621、圧縮GP命令622、圧縮GP命令623、圧縮GP命令624を順に有する。さらに、結合データ604は、圧縮GP命令623の後に、バス幅から圧縮GP命令621〜圧縮GP命令624のデータサイズを減じたサイズ分、RCプログラムのビット列から抽出したビット列635を有する。
なお、図6では図示していないが、データ作成装置102は、各ワード幅の最下位ビットを含むビット列に圧縮GP命令621〜624を有し、圧縮GP命令621〜624の前に、それぞれ、ビット列631〜634を有する結合データを作成してもよい。また、データ作成装置102は、最下位ビットを含むビット列に、圧縮GP命令621〜624を有し、圧縮GP621の前に、バス幅から圧縮GP命令621〜624のデータサイズを減じたサイズ分のビット列635を格納した結合データを作成してもよい。続いて、図7にて、図5にて示した動作を行う機能例と、図6に示した記憶内容を作成する機能例について説明する。
(コンピュータシステムの機能構成)
次に、コンピュータシステム100の機能構成例について説明する。図7は、コンピュータシステムの機能構成例を示すブロック図である。コンピュータシステム100は、受付部701と、取得部702と、抽出部703と、作成部704と、出力部705と、実行部710と、送信部711と、受信部712と、格納部713と、伸長部714と、出力部715とを含む。受付部701〜出力部705は、データ作成装置102が有する機能群である。実行部710は、GPP301が有する機能群である。送信部711〜出力部715は、伸長装置303が有する機能群である。また、伸長装置303は、記憶領域720にアクセス可能である。
受付部701は、要求元装置における格納順にしたがって連続するGP命令群と、要求元装置が実行したGP命令により指定される記憶領域に格納されているRCプログラムとの取得要求を受け付ける。ここで、要求元装置とは、たとえば、CPU101である。たとえば、受付部701は、0x10〜0x2F番地の連続するGP命令群と、CPU101が実行した0x0C番地のGP命令により指定される0x80〜0x9F番地に格納されているRCプログラムとの取得要求を受け付ける。
また、受付部701は、GP命令群の取得要求と、RCプログラムの取得要求とを、別々に受け付けてもよい。2つの取得要求を別々に受け付けた場合、たとえば、数クロックの時間差内といった特定の時間以内に受け付けた場合、受付部701は、GP命令群とRCプログラムの取得要求として受け付けたことにしてもよい。また、RCプログラムの取得要求を受け付けた場合に一定時間待機し、待機中にGP命令群の取得要求を受け付けた場合、受付部701は、GP命令群とRCプログラムの取得要求として受け付けたことにしてもよい。なお、受け付けた取得要求は、データ作成装置102内のレジスタ等の記憶領域に記憶される。
取得部702は、受付部701によって、GP命令群とRCプログラムとの取得要求を受け付けた場合、GP命令群の各々のGP命令が圧縮された各々の圧縮GP命令を取得する。たとえば、取得部702は、ROM201〜フラッシュROM203、フラッシュROM205等の記憶領域に記憶されたGP命令群の各々の命令を圧縮して、圧縮した命令を取得する。また、取得部702は、GP命令群とデータとの取得要求を受け付けた場合、各々の圧縮GP命令を、各々の圧縮GP命令が記憶された記憶領域から取得してもよい。
また、取得部702は、GP命令群とデータとの取得要求を受け付けた場合、GP命令群の格納順に連続する所定数のGP命令ごとに圧縮された所定数のGP命令ごとの圧縮GP命令を取得してもよい。所定数は、どのような値でもよいが、たとえば、バス幅/GP命令のデータサイズや、インストラクションキャッシュメモリ312のキャッシュライン幅/GP命令のデータサイズが好ましい。たとえば、バス幅が128[ビット]であり、GP命令のデータサイズが32[ビット]であれば、所定数は、128/32=4となる。
たとえば、取得部702は、GP命令群とデータとの取得要求を受け付けた場合、連続する4つのGP命令ごとに圧縮された4つのGP命令ごとの圧縮GP命令を取得する。なお、取得した圧縮GP命令は、データ作成装置102内のレジスタ等の記憶領域に記憶される。または、ROM201〜フラッシュROM203、フラッシュROM205等の記憶領域内の圧縮GP命令が格納されたアドレスが、データ作成装置102内のレジスタ等の記憶領域に記憶されてもよい。
抽出部703は、取得部702によって取得された各々の圧縮GP命令について、記憶領域に格納されているRCプログラムのビット列の中から、各々のGP命令のデータサイズから各々の圧縮GP命令のデータサイズを減じたサイズ分のビット列を抽出する。また、RCプログラムのビット列から抽出される順序として、抽出部703は、ビット列の先頭から抽出してもよいし、ビット列の末尾から抽出してもよい。
たとえば、GP命令のデータサイズが32[ビット]であり、圧縮GP命令のデータサイズが14[ビット]である場合、抽出部703は、32−14=18[ビット]分のビット列を抽出する。なお、記憶領域にGP命令が格納されており、圧縮GP命令が格納されていない場合、圧縮GP命令のデータサイズは、実際に圧縮することにより取得することができる。また、記憶領域に、GP命令が格納されていなく、圧縮GP命令が格納されている場合、圧縮GP命令を伸長することにより、圧縮GP命令のデータサイズとGP命令のデータサイズを取得することができる。
また、抽出部703は、各々の圧縮GP命令に対応する各々のGP命令のデータサイズを記憶する記憶領域を参照して、各々のGP命令のデータサイズから各々の圧縮GP命令のデータサイズを減じたサイズ分のビット列を抽出してもよい。各々の圧縮GP命令に対応する各々のGP命令のデータサイズを記憶する記憶領域は、たとえば、GP命令が固定長命令であれば、各々の圧縮GP命令のサイズを記憶する。GP命令が固定長命令であれば、GP命令のデータサイズは記憶してなくてもよい。図1に示した、圧縮GP命令111−1〜111−8を用いると、前述の記憶領域は、14、30、…、24を記憶している。前述の記憶領域を参照することにより、抽出部703は、伸長せずとも圧縮GP命令とGP命令のデータサイズを取得することができる。
また、抽出部703は、RCプログラムのビット列すべてを抽出した場合、RCプログラムのビット列すべてを抽出したことを表すビット列の中からビット列を抽出してもよい。RCプログラムのビット列すべてを抽出したことを表すビット列は、どのようなビット列でもよいが、RCプログラム中に出現しないビット列が好ましい。以下、RCプログラムのビット列すべてを抽出したことを表す情報を終端情報とする。RCプログラム中に出現する可能性のあるビット列であれば、たとえば、任意のユニークなエスケープコードを定義し、終端と通常のビット列を区別する。
また、抽出部703は、取得部702によって取得された各々の圧縮GP命令について、RCプログラムのサイズを表すビット列の中から、各々のGP命令のデータサイズから各々の圧縮GP命令のデータサイズを減じたサイズ分のビット列を抽出する。さらに、抽出部703は、RCプログラムのビット列の中から、各々のGP命令のデータサイズから各々の圧縮GP命令のデータサイズを減じたサイズ分のビット列を抽出してもよい。RCプログラムのサイズを表すビット列は、バイト単位にて示したデータのサイズでもよいし、ビット単位にて示したデータのサイズでもよい。
また、抽出部703は、RCプログラムのビット列のうち抽出されていない残余のビット列があり、かつ、要求元装置からデータの取得要求を受け付けた場合、残余のビット列を抽出してもよい。
また、抽出部703は、所定数のGP命令ごとの圧縮GP命令について、RCプログラムのビット列の中から、所定数のGP命令のデータサイズから所定数のGP命令ごとの圧縮GP命令のデータサイズを減じたサイズ分のビット列を抽出してもよい。
たとえば、所定数が4であって、所定数のGP命令の合計のデータサイズが、4×32=128[ビット]であり、所定数のGP命令ごとの圧縮GP命令のデータサイズが、56[ビット]であるとする。この場合、抽出部703は、RCプログラムのビット列の中から、128−56=72[ビット]分のデータ列を抽出する。なお、抽出したビット列は、データ作成装置102内のレジスタ等の記憶領域に記憶される。または、ROM201〜フラッシュROM203、フラッシュROM205等の記憶領域内のRCプログラムが格納されたアドレスのうち、抽出された範囲を示すアドレスが、データ作成装置102内のレジスタ等の記憶領域に記憶されてもよい。
作成部704は、各々の圧縮GP命令と抽出部703によって各々の圧縮GP命令について抽出されたビット列とを結合した各々の結合データを、格納順にしたがって連結することにより、GP命令群とRCプログラムとの取得要求に対する応答データを作成する。たとえば、図1の例であれば、作成部704は、圧縮GP命令111−1とビット列112−1とを結合した結合データ113−1と、…、圧縮GP命令111−8とビット列112−8とを結合した結合データ113−8とを作成する。
また、作成部704は、抽出部703によって抽出された残余のビット列を、RCプログラムの取得要求に対する応答データとして作成してもよい。たとえば、GP命令群とRCプログラムとの取得要求に対する応答データの出力後、RCプログラムのビット列の中に抽出されなかったビット列があれば、作成部704は、残余のビット列を、RCプログラムの取得要求に対する応答データとして作成する。また、作成部704は、所定数のGP命令ごとの圧縮GP命令と抽出部703によって所定数のGP命令ごとの圧縮GP命令について抽出されたビット列とを結合した所定数のGP命令ごとの結合データを、格納順にしたがって連結してもよい。
出力部705は、作成部704によって作成された応答データを要求元装置に出力する。たとえば、図1の例を用いると、出力部705は、応答データ114を出力する。
実行部710は、GP命令を実行する。たとえば、実行部710は、AND命令、OR命令、ロード命令やストア命令といった命令を実行する。送信部711は、格納順にしたがって連続するGP命令群と、実行部710が実行したGP命令により指定されたRCプログラムとの取得要求をデータ作成装置102に送信する。
受信部712は、応答データをデータ作成装置102から受信する。応答データは、各々の圧縮GP命令と、RCプログラムのビット列の中から抽出された、各々のGP命令のデータサイズから各々の圧縮GP命令のデータサイズを減じたサイズ分のビット列とを結合した結合データを格納順にしたがって連結したデータである。
格納部713は、応答データを受け付けた場合、応答データを記憶領域720に格納する。伸長部714は、格納部713によって記憶領域720に格納された応答データから、各々の圧縮GP命令を伸長する。出力部715は、伸長部714によって伸長されたGP命令と、応答データのビット列から、伸長されたGP命令を除いた残余のビット列とを出力する。
図8は、命令を圧縮する際の動作例を示す説明図である。図8では、GP命令群403が圧縮される場合の動作について説明する。なお、圧縮を行う装置としては、コンピュータシステム100用のソフトウェアを生成するコンパイラを実行する装置でもよいし、データ作成装置102でもよい。図8では、コンパイラを実行する装置が圧縮を行うとし、実行主体を、説明の簡略化のため、コンパイラとして説明を行う。
コンパイラは、GP命令を、所定のサイズを1単位として圧縮する。所定のサイズは、たとえば、1命令のサイズ、ワードアラインメントのサイズ、バス幅、キャッシュラインのサイズ等である。所定のサイズが1命令のサイズであれば、たとえば1ワード=32[ビット]である。所定のサイズがキャッシュラインのサイズであれば、たとえば、1ラインに4命令が格納できる場合、32[ビット]×4=128[ビット]が所定のサイズとなる。
図8の例では、コンパイラが、GP命令群403を、バス幅ごとに圧縮するとする。コンパイラは、GP命令群403の先頭から、バス幅に含まれる圧縮前となるGP命令801を抽出し、圧縮する。次に、コンパイラは、GP命令801と圧縮GP命令811とのデータサイズを比較し、GP命令801より圧縮GP命令811のデータサイズが小さければ、コンパイラは、圧縮フラグを有効に設定し、圧縮GP命令811に圧縮フラグを付与する。また、圧縮GP命令811が圧縮前のGP命令801以上のデータサイズとなる場合、コンパイラは、圧縮フラグを無効に設定し、GP命令801に圧縮フラグを付与してデータを作成する。図8の例では、GP命令801より圧縮GP命令811が小さかった場合を示している。
続けて、コンパイラは、GP命令群403のうち、バス幅に含まれる次の圧縮前のGP命令802を抽出し、圧縮する。圧縮前となるGP命令802より圧縮GP命令812が小さかったとして、コンパイラは、圧縮GP命令812に、有効に設定した圧縮フラグを付与する。このように、コンパイラは、バス幅に含まれる命令を順次圧縮していく。
また、具体的なデータ作成方法は、たとえば、命令の出現頻度を記憶した辞書を用いて、圧縮前の符号より短い符号へ置換する。圧縮のアルゴリズムとしては、たとえば、ハフマン符号等がある。また、辞書に相当するデータは、圧縮を行うコンパイラと、伸長装置303が有する。辞書の作成タイミングとしては、コンパイラがGP命令を圧縮するタイミングでもよいし、データ作成装置102がGP命令を圧縮するタイミングでもよい。また、コンパイラが辞書だけを作成しておき、データ作成装置102が、既に作成されている辞書を参照して、GP命令を圧縮してもよい。
また、圧縮が行われる、RCプログラム指示命令と、RC実行指示命令までのコードブロックを1つの辞書を用いる単位としてもよい。たとえば、GP命令群403を圧縮するのに用いる辞書と、GP命令群407を圧縮するのに用いる辞書と、が異なってもよい。GP命令群403とGP命令群407にて命令の出現頻度が異なる場合、異なる辞書を用いることにより、コンピュータシステム100は、圧縮率を向上することができる。
また、辞書の参照方法としては、たとえば、コンパイラは、コードブロックの先頭に、辞書データを挿入してもよいし、辞書データへのアドレス位置を挿入してもよい。また、複数の辞書を用いる場合、コンパイラは、コードブロックの特定のため、アドレス、またはプログラム先頭からのオフセット、をキーとするテーブルを各コードブロックの先頭に挿入する。
また、GP命令が可変長命令であってもよい。この場合、コンパイラは、可変長命令のうち命令長が長い命令がコードブロックをまたがないように、NOP(No OPeration)命令を挿入してもよい。
また、圧縮するか否かの判断方法は、ソースコードに記述された指示にしたがってもよい。たとえば、ソースコードに、コンパイラ固有の指定を行う“#pragma”命令がある場合、コンパイラは、“#pragma”命令の引数にしたがって、圧縮するか否かを判断する。次に、応答データの転送後の動作例について、図9を用いて説明する。
図9は、転送後の動作例を示す説明図である。図9では、データ作成装置102が図6の(B2)にて説明した結合データを連結して出力した後の動作を説明する。また、結合データが0x10バイトごとに作成されているとする。伸長装置303は、記憶領域720に、データ作成装置102が出力した応答データを記憶する。
具体的に、記憶領域720のうち、0x00〜0x0F番地の記憶領域は、最上位ビットから、圧縮フラグ901と、圧縮GP命令911と、圧縮GP命令912と、圧縮GP命令913と、圧縮GP命令914とを格納している。さらに、0x00〜0x0F番地の記憶領域は、空き領域に、RCプログラム112のビット列の一部のビット列931を格納している。圧縮フラグ901は、後続のGP命令が圧縮されていることを示す“1”が設定されているとする。
また、0x10〜0x1F番地の記憶領域は、最上位ビットから、圧縮フラグ902と、GP命令915と、GP命令916と、GP命令917と、GP命令918とを格納している。圧縮フラグ902は、後続のGP命令が圧縮されていないことを示す“0”が設定されているとする。
また、0x20〜0x2F番地の記憶領域は、最上位ビットから、圧縮フラグ903と、圧縮GP命令919と、圧縮GP命令920と、圧縮GP命令921と、圧縮GP命令922とを格納している。さらに、0x20〜0x2F番地の記憶領域は、空き領域に、RCプログラム112のビット列の一部のビット列932を格納している。圧縮フラグ903は、後続のGP命令が圧縮されていることを示す“1”が設定されているとする。
このような記憶内容となる状態において、伸長装置303は、圧縮フラグ901を参照して、圧縮GP命令911〜圧縮GP命令914を順に伸長して、伸長したデータを、インストラクションキャッシュメモリ312に出力する。また、伸長装置303は、4つ分の圧縮GP命令を伸長した残りのデータを、RCプログラム112のビット列であるとして、RCプログラム制御部304に出力する。
また、伸長装置303は、GPP301から0x28のGP命令取得要求を受け付けたとする。このとき、伸長装置303は、0x28の上位8ビットとなる0x20〜0x2Fの記憶領域をGPP301に出力する。または、伸長装置303は、0x20〜0x2Fの記憶領域に含まれるGP命令を順に伸長していき、0x28の位置にあるGP命令をGPP301に出力してもよい。このように、アドレス位置を維持して圧縮GP命令が格納されているため、伸長装置303は、取得要求に対する命令が格納された位置を容易に特定することができる。
次に、図10〜図14を用いて、コンピュータシステム100が実行するフローチャートについて説明を行う。図10、図11では、それぞれ、GPP301が、RCプログラム指示命令と、RC実行指示命令を実行した場合のフローチャートを示している。図12では、GPP301から、命令の取得要求が発生した場合のフローチャートを示している。図13、図14では、それぞれ、データ作成装置102と伸長装置303の処理手順のフローチャートを示している。
図10は、RCプログラム指示処理手順の一例を示すフローチャートである。RCプログラム指示は、GPP301がRCプログラム指示命令を実行した場合の処理である。GPP301がRCプログラム指示命令を実行した場合、RCプログラム制御部304は、RCプログラム指示命令キュー313にRCプログラム指示命令を追加する(ステップS1001)。次に、RCプログラム制御部304は、データ作成装置102と伸長装置303の動作状態がともに終了状態か否かを判断する(ステップS1002)。どちらかの動作状態が終了状態でない場合(ステップS1002:No)、RCプログラム制御部304は、一定時間経過後、ステップS1002の処理を再び実行する。
どちらも動作状態が終了状態である場合(ステップS1002:Yes)、RCプログラム制御部304は、RCプログラム指示命令キュー313から、RCプログラム指示命令を取り出す(ステップS1003)。次に、RCプログラム制御部304は、データ作成装置102と伸長装置303とRCプログラムバッファ314とを初期化する(ステップS1004)。ステップS1004の処理は、具体的には、データ作成装置102は、RCプログラムの転送を終了していない状態に設定する。また、伸長装置303は、たとえば、終端情報を受け付けていない状態に設定する。また、RCプログラム制御部304は、RCプログラムバッファ314を、たとえば、すべて0埋めする。
続けて、RCプログラム制御部304は、伸長装置303が終端情報を受け付けたか否かを判断する(ステップS1005)。終端情報を受け付けていない場合(ステップS1005:No)、RCプログラム制御部304は、一定時間経過後、ステップS1005の処理を再び実行する。終端情報を受け付けた場合(ステップS1005:Yes)、RCプログラム制御部304は、RCプログラムバッファ314に空きがあるか否かを判断する(ステップS1006)。
空きがない場合(ステップS1006:No)、RCプログラム制御部304は、最も古いRCプログラムを破棄する(ステップS1007)。空きがある場合(ステップS1006:Yes)、RCプログラム制御部304は、RCプログラムをRCプログラムバッファ314に書き込む(ステップS1008)。次に、RCプログラム制御部304は、書き込んだRCプログラムをRCエンジン302に設定する(ステップS1009)。ステップS1009の実行終了後、RCプログラム制御部304は、RCプログラム指示処理を終了する。RCプログラム指示処理を実行することにより、RCプログラム制御部304は、RCプログラムを実行できる状態に設定することができる。
図11は、RC実行指示処理手順の一例を示すフローチャートである。RC実行指示処理は、GPP301がRC実行指示命令を実行した場合の処理である。GPP301がRC実行指示命令を実行した場合、RCプログラム制御部304は、該当のRCプログラムが実行可能か否かを判断する(ステップS1101)。実行可能でない場合(ステップS1101:No)、RCプログラム制御部304は、GPP301のパイプラインを停止させる(ステップS1102)。次に、RCプログラム制御部304は、残余のRCプログラムのDMA転送要求を、伸長装置303に指示する(ステップS1103)。
転送完了後、RCプログラム制御部304は、GPP301のパイプラインの停止を解除させる(ステップS1104)。停止の解除後、または実行可能である場合(ステップS1101:Yes)、RCプログラム制御部304は、RCエンジン302にRCプログラムを実行させる(ステップS1105)。ステップS1105の実行終了後、RCプログラム制御部304は、RCプログラム実行処理を終了する。RCプログラム実行処理を実行することにより、RCプログラム制御部304は、該当のRCプログラムをRCエンジン302に実行させることができる。
図12は、取得要求処理手順の一例を示すフローチャートである。取得要求処理は、GPP301が、GP命令を取得する時に実行する処理である。GPP301は、RCプログラム指示中か否かを判断する(ステップS1201)。RCプログラム指示中である場合(ステップS1201:Yes)、GPP301は、圧縮GP命令群とRCプログラムとのDMA転送要求を伸長装置303に通知する(ステップS1202)。RCプログラム指示中でない場合(ステップS1201:No)、GPP301は、GP命令のDMA転送要求を通知する(ステップS1203)。ステップS1202、またはステップS1203の処理実行後、GPP301は取得要求処理を終了する。取得要求処理を実行することにより、GPP301は、これから読み込むGP命令群とGP命令の実行により要求されるデータの取得要求を発行できる。
図13は、データ作成装置の処理手順の一例を示すフローチャートである。データ作成装置102は、動作状態を実行中状態に設定する(ステップS1301)。データ作成装置102は、いずれかのDMA転送要求を受け付けたか否かを判断する(ステップS1302)。圧縮GP命令群とRCプログラムとのDMA転送要求を受け付けた場合(ステップS1302:圧縮GP命令群とRCプログラム)、データ作成装置102は、結合データの圧縮フラグを有効に設定する(ステップS1303)。次に、データ作成装置102は、圧縮GP命令を取得する(ステップS1304)。
続けて、データ作成装置102は、RCプログラムの転送が終了したか否かを判断する(ステップS1305)。RCプログラムの転送が終了した場合(ステップS1305:Yes)、データ作成装置102は、圧縮GP命令と終端情報を結合する(ステップS1306)。RCプログラムの転送が終了していない場合(ステップS1305:No)、データ作成装置102は、RCプログラムのビット列の中から、圧縮GP命令のデータサイズからGP命令のサイズを減じたサイズ分のビット列を抽出する(ステップS1307)。次に、データ作成装置102は、圧縮GP命令と抽出したビット列を結合する(ステップS1308)。ステップS1306、またはステップS1308の実行後、データ作成装置102は、格納順にしたがって応答データを作成する(ステップS1309)。
また、GP命令のDMA転送要求を受け付けた場合(ステップS1302:GP命令)、データ作成装置102は、応答データの圧縮フラグを無効に設定する(ステップS1310)。次に、データ作成装置102は、応答データにGP命令を格納する(ステップS1311)。残余のRCプログラムのDMA転送要求を受け付けた場合(ステップS1302:残余のRCプログラム)、データ作成装置102は、RCプログラムのビット列の中から、抽出されていない残余のビット列を抽出する(ステップS1312)。続けて、データ作成装置102は、抽出したビット列を応答データに格納する(ステップS1313)。
ステップS1309、ステップS1311、またはステップS1313の実行終了後、データ作成装置102は、応答データを出力する(ステップS1314)。続けて、データ作成装置102は、要求されたDMA転送が終了したか否かを判断する(ステップS1315)。DMA転送が終了していない場合(ステップS1315:No)、データ作成装置102は、ステップS1302の処理に移行する。DMA転送が終了した場合(ステップS1315:Yes)、データ作成装置102は、動作状態を終了状態に設定する(ステップS1316)。ステップS1316の実行終了後、データ作成装置102は、処理を終了する。
また、応答データにRCプログラムのデータサイズを含めるときは、データ作成装置102は、ステップS1305の処理にて、RCプログラムの転送を開始するか否かを判断し、開始する場合、圧縮GP命令とRCプログラムのサイズを表すビット列とを結合する。図13のフローチャートにて示す処理により、データ作成装置102は、GP命令群の送信を阻害せずに、RCプログラムを送信することができる。
図14は、伸長装置の処理手順の一例を示すフローチャートである。伸長装置303は、動作状態を実行中状態に設定する(ステップS1401)。次に、伸長装置303は、応答データを受け付ける(ステップS1402)。続けて、伸長装置303は、応答データの圧縮フラグが有効か否かを判断する(ステップS1403)。圧縮フラグが有効である場合(ステップS1403:Yes)、伸長装置303は、応答データ内の圧縮GP命令を伸長する(ステップS1404)。次に、伸長装置303は、応答データ内の圧縮GP命令以降のビット列をRCプログラムの一部のビット列として抽出する(ステップS1405)。なお、ステップS1405の処理にて、伸長装置303は、応答データ内の圧縮GP命令以降のビット列に終端情報が含まれていた場合、終端情報以降の応答データ内の圧縮GP命令以降のビット列を破棄する。続けて、伸長装置303は、GP命令と一部のビット列とを出力する(ステップS1406)。
圧縮フラグが無効である場合(ステップS1403:No)、伸長装置303は、応答データを出力する(ステップS1407)。ステップS1406、またはステップS1407の実行終了後、伸長装置303は、DMA転送が終了したか否かを判断する(ステップS1408)。DMA転送が終了していない場合(ステップS1408:No)、伸長装置303は、ステップS1402の処理に移行する。DMA転送が終了している場合(ステップS1408:Yes)、伸長装置303は、動作状態を終了状態に設定する(ステップS1409)。ステップS1409の実行終了後、伸長装置303は、処理を終了する。
また、応答データにRCプログラムのデータサイズが含まれているときは、伸長装置303は、ステップS1405の1回目の処理にて、RCプログラムのデータサイズを取得する。次に、伸長装置303は、ステップS1405の2回目以降の処理にて、抽出したRCプログラムのビット列の合計のサイズを算出し、算出した値がRCプログラムのデータサイズとなった場合、応答データ内の圧縮GP命令以降のビット列を破棄する。図14のフローチャートにて示す処理により、伸長装置303は、圧縮GP命令とRCプログラムを分離して出力することができる。
図15は、本実施の形態にかかるコンピュータを用いたシステムの適用例を示す説明図である。図15において、ネットワーク210は、サーバ1501とクライアント1511〜クライアント1514とが通信可能なネットワークであり、たとえば、LAN、WAN、インターネット、携帯電話網などを含む。
クライアント1511はノート型PC(Personal Computer)である。クライアント1512はデスクトップ型PC、クライアント1513は携帯電話機である。携帯電話機として、クライアント1513は、スマートフォンであってもよいし、PHS(Personal Handyphone System)であってもよい。クライアント1514はタブレット型端末である。
図15のサーバ1501、クライアント1511〜クライアント1514が、実施の形態で説明したコンピュータシステムとなる。たとえば、サーバ1501は、データ作成装置102を有し、さらにサーバ1501内のCPUに、GPP301〜RCプログラム制御部304と、共有レジスタ311〜RCプログラムバッファ314を含んで、本実施の形態で示した動作を行う。
以上説明したように、データ作成装置102によれば、GP命令群とRCプログラムが要求された場合、GP命令と圧縮GP命令との差分サイズ分のデータを圧縮命令の後に埋め込んだビット列を、各GP命令の格納順にしたがって連結して出力する。これにより、データ作成装置102は、GP命令の送信を阻害せずにRCプログラムを送信できる。したがって、データ作成装置102は、RCプログラムを効率よく送信できるようになり、GPP301の実効パフォーマンスを向上させることができる。
また、データ作成装置102は、圧縮GP命令をROM201等に記憶している場合に、各々の圧縮GP命令に対応する各々のGP命令のデータサイズを記憶する記憶領域を参照して、圧縮GP命令のデータサイズとGP命令のデータサイズを取得してもよい。これにより、コンピュータシステム100は、GP命令を圧縮しておくことができ、データ量の削減を行うことができる。また、データ作成装置102は、圧縮GP命令を伸長しなくとも圧縮GP命令のデータサイズとGP命令のデータサイズを取得することができるため、伸長にかかる処理分、処理量を削減することができる。
また、データ作成装置102は、RCプログラムをすべて出力した場合、終端情報を付与してもよい。これにより、RCプログラムを受信する伸長装置303は、RCプログラムをすべて取得した状態になったことが判断できるようにできる。
また、データ作成装置102は、RCプログラムのサイズを表すビット列を出力した後に、RCプログラムを出力してもよい。これにより、RCプログラムを受信する伸長装置303は、RCプログラムをすべて取得した状態になったことが判断できるようにできる。
また、データ作成装置102は、GP命令群とRCプログラムとの取得要求に対する応答データに、RCプログラムすべてが送信できなかった後に、RCプログラムの取得要求を受け付けた場合、RCプログラムのうち残余のビット列を出力してもよい。これにより、データ作成装置102は、RCプログラム112を実行できる状態を担保することができる。
また、データ作成装置102は、所定数のGP命令ごとに圧縮された圧縮GP命令と、所定数のGP命令のデータサイズから所定数のGP命令ごとの圧縮命令のデータサイズを減じたサイズ分抽出されたRCプログラムのビット列と、を連結してもよい。所定数のGP命令ごとに圧縮された圧縮GP命令には、圧縮フラグを1つ付与すればよく、所定数分の圧縮フラグを付与しなくてよいため、所定数−1のビット分、データ量を減少することができる。
また、可逆圧縮を行うアルゴリズムは、データの規則性、冗長性を検出して、出現頻度の高いものに短い符号を、出現頻度の低いものに長い符号を与えることで、圧縮率を高くする方法をとっているものがある。したがって、データ作成装置102は、圧縮対象となるデータサイズが大きくなることにより、圧縮率が高くなる可能性が増え、より多くのRCプログラムを転送することができる。
圧縮対象となるデータサイズが大きくなると圧縮率が高くなる理由として、たとえば、命令長が32[ビット]のGP命令群のうち、AND命令が最頻出であり、AND命令が4箇所連続している箇所があったとする。1つのGP命令を1つの圧縮GP命令へ圧縮する場合、圧縮を行う装置は、1つのGP命令32[ビット]を1[ビット]の符号に置き換える。次に、4つのGP命令を1つの圧縮GP命令へ圧縮する場合、GP命令群を4つの命令ごとに分け、その中で、連続する4つのAND命令が最頻出となったとする。このとき、圧縮を行う装置は、32×4[ビット]を1[ビット]の符号に置き換える。このように、圧縮対象となるデータサイズが大きくなった場合、より大きいデータを短い符号に置き換えられる可能性が高まり、圧縮率が高くなる可能性が増える。
また、本実施の形態では、RC命令と、RCプログラムがGP命令のある範囲と対応するという性質を用いて、RCプログラム指示命令とRC実行指示命令の間のGP命令を圧縮して、圧縮により生まれた隙間にRCプログラムを充填している。これにより、GPP301やインストラクションキャッシュメモリ312を制御するシステムからのGP命令転送を阻害することなく、RCプログラムの転送を実現することができる。
なお、本実施の形態で説明したデータ作成方法は、予め用意されたプログラムをコンピュータで実行することにより実現してもよい。また、本データ作成プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本データ作成プログラムは、インターネット等のネットワークを介して配布してもよい。
また、本実施の形態で説明したデータ作成装置102と伸長装置303とは、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けIC(以下、単に「ASIC」と称す。)やFPGAなどのPLDによっても実現することができる。具体的には、たとえば、上述したデータ作成装置102の受付部701〜出力部705をHDL記述によって機能定義し、HDL記述を論理合成してASICやPLDに与えることにより、データ作成装置102を製造することができる。同様に、伸長装置303の送信部711〜出力部715、記憶領域720をHDL記述によって機能定義し、HDL記述を論理合成してASICやPLDに与えることにより、伸長装置303を製造することができる。
100 コンピュータシステム
102 データ作成装置
701 受付部
702 取得部
703 抽出部
704 作成部
705 出力部

Claims (8)

  1. 要求元装置における格納順にしたがって連続する命令群と、前記要求元装置が実行した命令により指定される記憶領域に格納されているデータとの取得要求を受け付けた場合、前記命令群の各々の命令が圧縮された各々の圧縮命令を取得する取得部と、
    前記取得部によって取得された各々の圧縮命令について、前記記憶領域に格納されている前記データのビット列の中から、前記各々の命令のデータサイズから前記各々の圧縮命令のデータサイズを減じたサイズ分のビット列を抽出する抽出部と、
    前記各々の圧縮命令と前記抽出部によって前記各々の圧縮命令について抽出されたビット列とを結合した各々の結合データを、前記格納順にしたがって連結することにより、前記命令群と前記データとの取得要求に対する応答データを作成する作成部と、
    前記作成部によって作成された応答データを前記要求元装置に出力する出力部と、
    を有することを特徴とするデータ作成装置。
  2. 前記取得部は、
    前記命令群と前記データとの取得要求を受け付けた場合、前記各々の圧縮命令を、前記各々の圧縮命令が記憶された記憶領域から取得し、
    前記抽出部は、
    前記取得部によって取得された各々の圧縮命令について、前記指定される記憶領域に格納されている前記データのビット列の中から、前記各々の圧縮命令に対応する前記各々の命令のデータサイズを記憶する記憶領域を参照して、前記各々の命令のデータサイズから前記各々の圧縮命令のデータサイズを減じたサイズ分のビット列を抽出することを特徴とする請求項1に記載のデータ作成装置。
  3. 前記抽出部は、
    前記データのビット列すべてを抽出した場合、前記データのビット列すべてを抽出したことを表すビット列の中から、前記各々の命令のデータサイズから前記各々の圧縮命令のデータサイズを減じたサイズ分のビット列を抽出することを特徴とする請求項1または2に記載のデータ作成装置。
  4. 前記抽出部は、
    前記取得部によって取得された各々の圧縮命令について、前記データのサイズを表すビット列の中から、前記各々の命令のデータサイズから前記各々の圧縮命令のデータサイズを減じたサイズ分のビット列を抽出するとともに、前記記憶領域に格納されている前記データのビット列の中から、前記各々の命令のデータサイズから前記各々の圧縮命令のデータサイズを減じたサイズ分のビット列を抽出することを特徴とする請求項1または2に記載のデータ作成装置。
  5. 前記抽出部は、
    前記データのビット列のうち抽出されていない残余のビット列があり、かつ、前記要求元装置から前記データの取得要求を受け付けた場合、前記残余のビット列を抽出し、
    前記作成部は、
    前記抽出部によって抽出された前記残余のビット列を、前記データの取得要求に対する応答データとして作成することを特徴とする請求項1〜4のいずれか一つに記載のデータ作成装置。
  6. 前記取得部は、
    前記命令群と前記データとの取得要求を受け付けた場合、前記命令群の前記格納順に連続する所定数の命令ごとに圧縮された前記所定数の命令ごとの圧縮命令を取得し、
    前記抽出部は、
    前記取得部によって取得された前記所定数の命令ごとの圧縮命令について、前記指定される記憶領域に格納されている前記データのビット列の中から、前記所定数の命令のデータサイズから前記所定数の命令ごとの圧縮命令のデータサイズを減じたサイズ分のビット列を抽出し、
    前記作成部は、
    前記所定数の命令ごとの圧縮命令と前記抽出部によって前記所定数の命令ごとの圧縮命令について抽出されたビット列とを結合した前記所定数の命令ごとの結合データを、前記格納順にしたがって連結することにより、前記命令群とデータとの取得要求に対する応答データを作成することを特徴とする請求項1〜5のいずれか一つに記載のデータ作成装置。
  7. コンピュータが、
    要求元装置における格納順にしたがって連続する命令群と、前記要求元装置が実行した命令により指定される記憶領域に格納されているデータとの取得要求を受け付けた場合、前記命令群の各々の命令が圧縮された各々の圧縮命令を取得し、
    取得した各々の圧縮命令について、前記記憶領域に格納されている前記データのビット列の中から、前記各々の命令のデータサイズから前記各々の圧縮命令のデータサイズを減じたサイズ分のビット列を抽出し、
    前記各々の圧縮命令と前記各々の圧縮命令について抽出したビット列とを結合した各々の結合データを、前記格納順にしたがって連結することにより、前記命令群と前記データとの取得要求に対する応答データを作成し、
    作成した応答データを前記要求元装置に出力する、
    処理を実行することを特徴とするデータ作成方法。
  8. コンピュータに、
    要求元装置における格納順にしたがって連続する命令群と、前記要求元装置が実行した命令により指定される記憶領域に格納されているデータとの取得要求を受け付けた場合、前記命令群の各々の命令が圧縮された各々の圧縮命令を取得し、
    取得した各々の圧縮命令について、前記記憶領域に格納されている前記データのビット列の中から、前記各々の命令のデータサイズから前記各々の圧縮命令のデータサイズを減じたサイズ分のビット列を抽出し、
    前記各々の圧縮命令と前記各々の圧縮命令について抽出したビット列とを結合した各々の結合データを、前記格納順にしたがって連結することにより、前記命令群と前記データとの取得要求に対する応答データを作成し、
    作成した応答データを前記要求元装置に出力する、
    処理を実行させることを特徴とするデータ作成プログラム。
JP2012059493A 2012-03-15 2012-03-15 データ作成装置、データ作成方法、およびデータ作成プログラム Expired - Fee Related JP5817603B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012059493A JP5817603B2 (ja) 2012-03-15 2012-03-15 データ作成装置、データ作成方法、およびデータ作成プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012059493A JP5817603B2 (ja) 2012-03-15 2012-03-15 データ作成装置、データ作成方法、およびデータ作成プログラム

Publications (2)

Publication Number Publication Date
JP2013196061A true JP2013196061A (ja) 2013-09-30
JP5817603B2 JP5817603B2 (ja) 2015-11-18

Family

ID=49394994

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012059493A Expired - Fee Related JP5817603B2 (ja) 2012-03-15 2012-03-15 データ作成装置、データ作成方法、およびデータ作成プログラム

Country Status (1)

Country Link
JP (1) JP5817603B2 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05506323A (ja) * 1990-03-15 1993-09-16 サン・マイクロシステムズ・インコーポレーテッド 機能停止キャッシュを提供する装置と方法
JPH06342346A (ja) * 1993-05-31 1994-12-13 Sony Corp Icカードのデータ記憶方法及びicカード装置
JP2000081982A (ja) * 1998-09-04 2000-03-21 Matsushita Electric Ind Co Ltd コンパイラ、プロセッサおよび記録媒体
JP2009093513A (ja) * 2007-10-11 2009-04-30 Oki Semiconductor Co Ltd 命令ビット長削減方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05506323A (ja) * 1990-03-15 1993-09-16 サン・マイクロシステムズ・インコーポレーテッド 機能停止キャッシュを提供する装置と方法
JPH06342346A (ja) * 1993-05-31 1994-12-13 Sony Corp Icカードのデータ記憶方法及びicカード装置
JP2000081982A (ja) * 1998-09-04 2000-03-21 Matsushita Electric Ind Co Ltd コンパイラ、プロセッサおよび記録媒体
JP2009093513A (ja) * 2007-10-11 2009-04-30 Oki Semiconductor Co Ltd 命令ビット長削減方法

Also Published As

Publication number Publication date
JP5817603B2 (ja) 2015-11-18

Similar Documents

Publication Publication Date Title
KR102596644B1 (ko) 메모리 대역폭 활용을 감소시키기 위해 활성화 데이터의 압축 및 압축 해제를 사용하는 신경망 프로세서
US10437781B2 (en) OZIP compression and decompression
JP2002536863A (ja) 拡張可能な埋込み型のパラレルデータを圧縮及び圧縮解除するためのシステムと方法
JP6425709B2 (ja) 復元中に予備拡張辞書を利用するデータ復元
US10044370B1 (en) Lossless binary compression in a memory constrained environment
US10374628B2 (en) In-place data compression with small working memory
WO2007107457A1 (en) Memory compression in information handling systems
JP5733385B2 (ja) エンディアン変換方法、およびシステム
GB2450336A (en) Compressing and decompressing data using multiple processing units
US11817886B2 (en) Parallel decompression of compressed data streams
US7728742B2 (en) Method and apparatus for compressing and decompressing data
CN109937537B (zh) 编码可变长度符号以实现并行解码
JP6048251B2 (ja) データ圧縮装置、データ圧縮方法、およびデータ圧縮プログラム、並びにデータ復元装置、データ復元方法、およびデータ復元プログラム
US11842151B2 (en) Efficient storage and retrieval of resource data
Lenhardt et al. Gipfeli-high speed compression algorithm
Kim et al. Data dependency reduction for high-performance FPGA implementation of DEFLATE compression algorithm
US9998143B2 (en) System, apparatus, and method for decompressing data
JP6613669B2 (ja) 圧縮プログラム、圧縮方法、情報処理装置、置換プログラムおよび置換方法
US10103747B1 (en) Lossless binary compression in a memory constrained environment
JP5817603B2 (ja) データ作成装置、データ作成方法、およびデータ作成プログラム
Jun et al. Zip-io: Architecture for application-specific compression of big data
JP2022544763A (ja) 複数のデータのストリームを含む圧縮済み入力データを展開する展開エンジン
CN108932315A (zh) 一种数据解压的方法以及相关装置
CN113127028A (zh) 固件更新方法和固件更新系统
CN104518850B (zh) 将参考模板同步到数据流的方法和信息处理系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141112

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150608

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150623

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150821

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: 20150901

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150914

R150 Certificate of patent or registration of utility model

Ref document number: 5817603

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees