JP2004246694A - データ転送方法 - Google Patents
データ転送方法 Download PDFInfo
- Publication number
- JP2004246694A JP2004246694A JP2003036933A JP2003036933A JP2004246694A JP 2004246694 A JP2004246694 A JP 2004246694A JP 2003036933 A JP2003036933 A JP 2003036933A JP 2003036933 A JP2003036933 A JP 2003036933A JP 2004246694 A JP2004246694 A JP 2004246694A
- Authority
- JP
- Japan
- Prior art keywords
- data
- bus
- conversion
- transfer
- converted
- 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.)
- Withdrawn
Links
Images
Landscapes
- Information Transfer Systems (AREA)
Abstract
【課題】バスで転送されるデータを数ビット単位で圧縮することによって、特に汎用プロセッサにおいてコア部分とメモリ間のバス占有時間を減少させることを目的とするものである。
【解決手段】本発明に係るデータ転送方法では、メモリ上にマッピングされた一連のデータを抽出し、抽出されたデータを変換テーブルを用いて変換し、変換データをデータバスを用いて転送することを特徴とする。また、変換テーブルは、抽出されたデータと同じパターンのデータを、変換されたか否かを表すテーブルデータ、パターンが属するグループを示すテーブル番号データ、及びグループ内でのパターンの出現頻度に応じてビット数が変化する符号データを有する変換データに変換するものである。コアクロックより遅いバスクロックによるデータバスを用いてデータの転送を行う際に、より効率よくデータの転送を行えるように、データ転送の効率化を図ったものである。
【選択図】 図1
【解決手段】本発明に係るデータ転送方法では、メモリ上にマッピングされた一連のデータを抽出し、抽出されたデータを変換テーブルを用いて変換し、変換データをデータバスを用いて転送することを特徴とする。また、変換テーブルは、抽出されたデータと同じパターンのデータを、変換されたか否かを表すテーブルデータ、パターンが属するグループを示すテーブル番号データ、及びグループ内でのパターンの出現頻度に応じてビット数が変化する符号データを有する変換データに変換するものである。コアクロックより遅いバスクロックによるデータバスを用いてデータの転送を行う際に、より効率よくデータの転送を行えるように、データ転送の効率化を図ったものである。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、データ転送方法に関し、特にCPU等のコア部分からRAM等の周辺回路へのデータの転送レートを上げることを可能とするデータ転送方法に関する。
【0002】
近年、LSI化された汎用プロセッサ内のCPU等のコア部分やRAM等の周辺回路の性能向上は目を見張るものが、データ処理量も増加の一途をたどっており、各ブロック(又はデバイス)間のデータ転送を拠り効率良く行わなければ、LSI全体としても性能を向上させられない状況にある。
【0003】
そこで、CPU等のコア部分からRAM等の周辺回路へ、高い転送レートでデータ転送を行うことができるデータ転送方法が要望されている。
【0004】
【従来の技術】
多くのLSI化された汎用プロセッサでは、相対的に高い周波数のコアクロックで動作するCPU等のコア部分と、相対的に低い周波数のバスクロックで動作し、RAM等の周辺回路とコア部分とを接続するデータバスを有している。
【0005】
このようなプロセッサでは、バスクロックがコアクロックより遅いため、データバスによるデータの転送に時間が必要となる。したがって、転送時間の増大に応じて消費電力が増大し、さらにデータバスの使用権をLSI内の特定のブロック(又はデバイス)が持つ間は、他のブロック又はデバイスは、その間データバスの使用ができなくなるという不具合があった。
【0006】
また、データバスによって転送されるデータには、偏りがあることが多く、データの偏りはデータの規則性を表すが、従来、バスによるデータの転送は、規則性に拘わらず、全てのデータに関し同じ転送方法を用いていた。
【0007】
ところで、従来入力文字コードに応じ、出現頻度の高い文字コードについて圧縮を行い、圧縮した文字コードに転換して伝送路を高速度で伝送させるデータ転送技術等が知られている(例えば、特許文献1)。しかしながら、バスのデータ転送に同様の手法が取り入れられることはなかった。
【0008】
【特許文献1】
特開平5−100972号公報(第2〜3頁、図6)
【0009】
【発明が解決しようとする課題】
したがって、プロセッサでは、コア部分とメモリ間でのバス占有時間が長く、そのためバスにおける消費電力が増大するという不具合があった。また、プロセッサの性能をバスによって制約されてしまうという不具合もあった。
【0010】
そこで、本発明は、バスで転送されるデータを数ビット単位で圧縮することによって、特にLSI化された汎用プロセッサにおいてコア部分とメモリ間のバス占有時間を減少させることを目的とするものである。
【0011】
また、本発明は、データの出現頻度毎の変換テーブルを持ち、転送回数を減少させることで、特にLSI化された汎用プロセッサにおいてコア部分とメモリ間のバス占有時間を減少させることを目的とするものである。
【0012】
さらに、コア部分とメモリ間のバス占有時間を減少させ、バスに繋がる各種ブロック又はデバイスの待ち時間を減少させることによって、汎用プロセッサ全体の性能を向上させることを目的とするものである。
【0013】
【課題を解決するための手段】
本発明の第1の形態によれば、メモリ上にマッピングされた一連のデータを抽出し、抽出されたデータを変換テーブルを用いて変換し、変換テーブルは抽出されたデータと同じパターンのデータを、変換されたか否かを表すテーブルデータ、パターンが属するグループを示すテーブル番号データ、及びグループ内でのパターンの出現頻度に応じてビット数が変化する符号データを有する変換データに変換するためのテーブルであり、変換データをデータバスを用いて転送するデータ転送方法が提供される。
【0014】
また、本発明の第2の形態によれば、メモリ上にマッピングされた一連のデータを抽出し、抽出されたデータを変換テーブルを用いて変換し、変換テーブルは抽出されたデータと同じパターンのデータを、変換されたか否かを表すテーブルデータ、パターンが属するグループを示すテーブル番号データ、及びパターンを示す固定ビット数の符号データを有する変換データに変換するテーブルであり、変換データを前記データバスを用いて転送するデータ転送方法が提供される。
【0015】
このように本発明によれば、転送データは、変換テーブルによって、種々の変換データに変換されて、転送されるので、CPU等のコア部分からRAM等の周辺回路へ、高い転送レートでデータ転送を行うことができる。
【0016】
【発明の実施の形態】
以下、本発明に係るデータ転送方法を添付図面を参照して詳述する。
【0017】
図1に、CPU等のコア部分101とメモリ102との接続例を示す。図に示すように、コア部分101とメモリ102は、バスブロック103を介して、相互に32ビットデータバス105によって接続されている。また、バスブロック103は、I/O、RAM、ROM等の他のブロック104とも相互に32ビットデータバス105によって接続されている。なお、各ブロック間は、32ビットデータバス105の他に、後述するΔDデータのためのデータバス106によって接続されていても良い。
【0018】
以下、メモリからデータをバースト転送により読み出す場合を例にして、本発明に係るデータ転送方法について説明する。図2に、メモリからデータをバースト転送により読み出す場合のフローの一例を示す。
【0019】
最初に、CPU101が、例えばI/O104よりデータを読み込んで、メモリ102へのデータの書込みを開始する(図2のステップ201)。
【0020】
図3に、メモリ102に書き込まれるメモリマップの概念図を示す。図3において、アドレスADR1の時のデータをD1[m:n]、アドレスADR2=ADR1+4の時のデータをD2[m:n]、アドレスADR3=ADR2+4の時のデータをD3[m:n]、アドレスADRN=ADR(N−1)+4の時のデータをDN[m:n]とする。各D1[m:n]〜DN[m:n]は、32ビット(4バイト)のデータから構成されている。
【0021】
次に、CPU101は、メモリ102からメモリに書き込まれたデータをバースト転送する際に、変換データに変換するための変換テーブルを作成する(図2のステップ202)。
【0022】
図4に、変換テーブルの一例を示す。図4は、Gr1〜Gr4に分別された32通りの8ビットパターン401を、第1変換データ402又は第2変換データ403に変換するための変換テーブルである。1バイト分のバイナリデータには、256のパターンが存在するが、Gr1〜Gr4はこの全てのパターンを網羅するものではなく、そのうちの出現頻度が高いものを予めグループ化したものである。したがって、図4に示す変換テーブルのみを利用するとした場合、Gr1〜Gr4に分別された32通りの8ビットパターン以外のパターンは、変換されずにそのまま転送されることとなる。
【0023】
第1変換データ402は、Tableデータ、TableNoデータ及びCode1データから構成される。Tableデータは、データが変換テーブルを利用して変換されたデータか否かを表している。変換されたデータである場合、Tableデータ=“1”、変換されないデータである場合、Tableデータ=“0”である。TableNoデータは、Gr1〜Gr4のどのグループに属するかを示す2ビットデータである。なお、グループ数に応じて、ビット数が変更される。
【0024】
Code1データは、シャノンフォノ符号法に類似した符号であり、各グループのパターン中、さらに出現頻度の高いパターンから順に、ビット数を増やすようにして、コードを割り当てている。即ち、Gr1において最も出現頻度が高いパターンには“1”、次に出現頻度が高いパターンには“01”というようにコードを割り当てている。なお、Code1において、“0”と“1”を入れ替えて使用しても良い。
【0025】
したがって、第1変換データ402を利用する場合、例えば、データ“00000000”は、変換データ“1001”に変換され、データ“00000001”は、変換データ“10001”に変換される。したがって、最大に圧縮された場合、変換前のビット数は8ビットであるのに対し、変換後のビット数は4ビットとなり、その場合の圧縮率は、2倍(=8/4)となる。また、1ワード(4バイト)について言えば、出現頻度が高いデータのみを取り扱い、Tableデータ及びTableNoデータを固定してデータとしない場合、変換前のビット数は32ビットであるのに対し、変換後のビット数は最小で4ビットとなるので、最大圧縮率は、8倍(=32/4)となる。
【0026】
また、第2変換データ403は、Tableデータ、TableNoデータ及びCode2データから構成される。Tableデータ及びTableNoデータは、第1変換データの場合と同じである。Code2データは、各パターンを表す3ビット固定の符号である。
【0027】
したがって、第2変換データ403を利用する場合、例えば、データ“00000000”は、変換データ“100000”に変換される。したがって、常に、変換前のビット数は8ビットであるのに対し、変換後のビット数は6ビットとなり、その場合の圧縮率は、1.33倍(=8/6)となる。
【0028】
ΔDデータ404については後述する。
【0029】
なお、Gr1〜Gr4へグループ化したのは、アドレス範囲やデータの種類(例えば、JPEG、WAV及びMPEG等)によってデータを分けるためである。グループ化することによって、TableNoデータのスイッチング回数を減少させることができる。また、図4の変換テーブルでは、1つのグループを8種類のパターンから構成しているが、8つに限定することも、パターン数が固定である必要もない。
【0030】
図5に、図4に示した変換テーブルの第1変換データ402を作成するための概念図を示す。256バイト分、即ち8ビットの256パターンのデータが、順位レジスタ504に設定されている。順位レジスタ504の上位8つのレジスタのパターンには、前述したCode1の符号が対応付けられている。順位レジスタ504の各パターンが、256個の比較器502に設定されている。メモリ102に書き込まれる前の8ビット毎の入力データ501が、各比較器502に供給されて、各パターンと比較される。レジスタ移動制御部503は、入力データ501と一致したパターンを、順位レジスタ504において、一つ上の順位のパターンと入れ替える。これを入力データの全てに関して繰り返しながら、順位レジスタ504中のビットパターンの入れ替えを行う。順位レジスタ504の入れ替え終了後、順位レジスタ504の上位8パターン分505を変換テーブル506として設定する。
【0031】
図6に、入力データの頻度分布の例を示す。このように、入力データの出現頻度に特定のグループが存在する場合には、例えば、Gr1〜Gr4の4つのグループを作り、それぞれに、前述したCode1等の符号を割り当てることが効果的である。
【0032】
また、入力データの種類(例えば、画像ファイルデータ、MPEGデータ、音声ファイルデータ等)に応じて、異なった変換テーブルを作成し、入力データに応じてプログラマブルに使い分けることもできる。さらに、同じ変換テーブル中に、入力データの種類に応じて異なったグループ分けを行うようにしても良い。
【0033】
次に、メモリ102へのデータの書込みが終了すると(図2のステップ203)、例えば図5に示す方法により作成した変換テーブルをメモリ102側に転送する(図2のステップ204)。バスによるデータ転送元と転送先で同じ変換テーブルを予め有している必要がある。したがって、メモリ102へのデータ書込み中に、前述した方法で変換テーブルを作成し、入力データ書込み終了後に、変換テーブルをメモリ102等の各ブロックに転送して記憶させるものである。
【0034】
なお、転送データのグループ分けをプログラム化することも可能である。その場合、転送データのグループ分けを、転送データのどのパターンをどのくらいの頻度で転送するかという確立論的に求めることも可能である。メモリへの入力データ書込み中に、データの統計を取り、ダイナミックにグループ分けプログラムを書き換えることもできる。
【0035】
次に、メモリ102からバースト転送のためにデータを抽出する(図2のステップ205)。データの抽出には、図3に示すアドレスADR1の8ビットデータ301のようなデータ方向の抽出と、図3に示す8つのアドレスのビットスライスである8ビットデータ302のようなアドレス方向の抽出が考えられる。
【0036】
次に、抽出したデータを図4に示す変換テーブルを用いて変換データに変換して(図2のステップ206)、転送データフォーマットを作成する(図2のステップ207)。
【0037】
図7に、メモリ102からデータをバースト転送により読み出す際の、データ方向に圧縮した場合の32ビット転送データフォーマットの一例を示す。図7では、メモリ上に展開されている8ビット毎に、図4に示した変換テーブルを用いて、第1変換データ402(Code1)に変換する例を示している。
【0038】
8ビット入力データ701は、図4に示す変換テーブルによって、Code1データ702、TableNoデータ703、Tableデータ704に変換される。図中、斜線部は、有効ビットであり、それ以外のビットは無効ビットとして無視する。変換されたCode1データが32ビットになるまで、データの変換が行われ、32ビットの4バスサイクルデータ705が作成される。
【0039】
また、同時に制御信号も作成される。制御信号における斜線部は、対応する32ビットデータが圧縮データ/非圧縮データであるかを示している。同様に、斜線部以外は、無効ビットとして無視される。
【0040】
図8に、データ方向に圧縮した場合の32ビット転送データフォーマットにおいて、第1変換データ(Code1)を用い、変換データと非変換データが混在する場合の例を示す。図中、801は変換されていない8ビットデータを表している。変換されていないことから、TableNoデータ802は無効ビットとなり、Tableデータ803は、“0”で変換されていないことを表している。
【0041】
図9に、データ方向に圧縮した場合の32ビット転送データフォーマットにおいて、第1変換データ(Code1)を用い、32ビットの4バスサイクルデータの境界を跨いで転送が行われる例を示す。図中、Code1データ901(“00001”)は、32ビットの4バスサイクルデータA及びBに跨って転送される。データ方向への圧縮に伴い、Code1データがちょうど32ビット毎にならない場合に効果的である。
【0042】
図10に、データ方向に圧縮した場合の32ビット転送データフォーマットの他の例を示す。図10では、メモリ上に展開されている8ビット毎に、図4に示した変換テーブルを用いて、第2変換データ403(Code2)に変換する例を示している。
【0043】
8ビットデータ1001は、図4に示す変換テーブルによって、Code2データ1002、Tableデータ1003、TableNoデータ1004に変換される。図中、斜線部は、有効ビットであり、それ以外のビットは無効ビットとして無視する。変換されたCode2データが32ビットになるまで、データの変換が行われ、32ビットの2バスサイクルデータ1006が作成される。なお、Code2データは、全て3ビットであるため、末尾の2ビット1005は無効ビットとなる。
【0044】
また、同時に制御信号も作成される。制御信号における斜線部は、対応する32ビットデータが圧縮データ/非圧縮データであるかを示している。同様に、斜線部以外は、無効ビットとして無視される。
【0045】
図11に、データ方向に圧縮した場合の32ビット転送データフォーマットにおいて、第2変換データ403(Code2)を用い、変換データと非変換データが混在し、且つ32ビットの2バスサイクルデータの境界を跨いで転送が行われる例を示す。図中、1101は変換されていない8ビットデータを表している。変換されていないことから、Tableデータ1102は、“0”で変換されていないことを表しており、対応するTableNoデータ1103は無効ビットとなっている。さらに、変換されていない8ビットデータ1101は、32ビットの2バスサイクルデータA及びBに跨って転送される。
【0046】
図12に、メモリ102からデータをバースト転送により読み出す際の、アドレス方向に圧縮した場合の32ビット転送データフォーマットの一例を示す。図12では、メモリ上に展開されているアドレス方向の8ビット毎に、図4に示した変換テーブルを用いて、第1変換データ402(Code1)に変換する例を示している。
【0047】
8ビット入力データ1201は、図4に示す変換テーブルによって、Tableデータ1202、Code1データ1203、TableNoデータ1204、に変換される。図中、斜線部は、有効ビットであり、それ以外のビットは無効ビットとして無視する。変換されたCode1データ1203に応じて、転送時のバスサイクルが決定される。図12の場合は、1バスサイクルのTableデータ、8バスサイクルのCode1データ及び2バスサイクルのTableNoデータとなるので、全体として32ビットの11バスサイクルデータ1205となる。なお、変換されたCode1データが全て“1”の場合には、1バスサイクルのTableデータ、1バスサイクルのCode1データ及び2バスサイクルのTableNoデータとなるので、全体として32ビット4バスサイクルデータとなる。
【0048】
図13に、アドレス方向に圧縮した場合の32ビット転送データフォーマットの他の例を示す。図13では、メモリ上に展開されているアドレス方向の8ビット毎に、図4に示した変換テーブルを用いて、第2変換データ403(Code2)に変換する例を示している。
【0049】
8ビットデータ1301は、図4に示す変換テーブルによって、Tableデータ1302、Code2データ1303、TableNoデータ1304、に変換される。図中、斜線部は、有効ビットであり、それ以外のビットは無効ビットとして無視する。変換されたCode2データは常に3ビットなので、変換により、1バスサイクルのTableデータ、3バスサイクルのCode2データ及び2バスサイクルのTableNoデータとなるので、全体として32ビットの6バスサイクルデータ1305が作成される。
【0050】
次に、作成された転送データフォーマットを用いてバースト転送を行う(図2のステップ208)。
【0051】
図14に、データ方向に圧縮した場合の転送のタイミングチャートを示す。図に示す様に、ここではコア部分クロック周波数1401は、バスクロック周波数1402の2倍であるものとする。通常の32ビットデータ転送の場合は、バスクロック周波数1402と同期して、32ビット毎に転送が行われる(1403)。
【0052】
第1変換データ402を用いた場合には(図7〜9参照)、Code1データ、TableNoデータ、TableNoデータ、及びTableデータの順で4バスサイクルAをデコード単位として転送が行われる(1404)。この場合、最大圧縮では、8ビットを4バスサイクルの1ビットで転送することができるので、4バスサイクルで最大32バイト(8ワード分)の転送を行うことができる。通常の転送の場合、4バスサイクルで、16バイト分の転送しかできないので、最大圧縮率は2倍(32/16)となる。
【0053】
第2変換データ403を用いた場合には(図10参照)、Code2データ及びTableデータ/TableNoデータの順で2バスサイクルBをデコード単位として転送が行われる(1405)。この場合、8ビットを2バスサイクルの3ビット固定で転送することができるので、2バスサイクルで10バイト(2.5ワード分)の転送を行うことができる。なお、前述したように、32ビットの末尾の2ビットは利用することができない。通常の転送の場合、2バスサイクルで、8バイト分の転送しかできないので、圧縮率は1.25倍(10/8)となる。
【0054】
図15に、アドレス方向に圧縮した場合の転送のタイミングチャートを示す。図に示す様に、ここではコア部分クロック周波数1501は、バスクロック周波数1502の2倍であるものとする。通常の32ビットデータ転送の場合は、バスクロック周波数1502と同期して、32ビット毎に転送が行われる(1503)。
【0055】
第1変換データ402を用いた場合には(図12参照)、前述したように、Code1データに応じて、転送するバスサイクルが変化する。転送データ1504のCは、Code1データが全て“1”に変換できた場合を示しており、Tableデータ、Code1データ、TableNoデータ、及びTableNoデータの順で4バスサイクルをデコード単位として転送が行われる。Dは、Code1データが全て“01”に変換できた場合を示しており、Tableデータ、Code1データ、Code1データ、TableNoデータ、及びTableNoデータの順で5バスサイクルをデコード単位として転送が行われる。前述したCの場合が最大圧縮となり、8ビットを4バスサイクルの1ビットで転送することができるので、4バスサイクルで最大32バイト(8ワード分)の転送を行うことができる。通常の転送の場合、4バスサイクルで、16バイト分の転送しかできないので、この場合の最大圧縮率は2倍(32/16)となる。
【0056】
第2変換データ403を用いた場合には(図13参照)、Tableデータ、Code2データ、Code2データ、Code2データ、TableNoデータ及びTableNoデータの順で6バスサイクルEをデコード単位として転送が行われる(1505)。この場合、6バスサイクルで32バイト(8ワード分)の転送を行うことができる。通常の転送の場合、6バスサイクルで、24(6ワード分)の転送しかできないので、圧縮率は1.33倍(8/6)となる。
【0057】
このようにして転送されたデータを転送先が受信し(図2のステップ209)、図2のステップ204で別途受信していた同一の変換テーブルを用いてデコードを行って(210)、一連のメモリからバースト転送によってデータを読み出す手順を終了する。
【0058】
次に、図4に示したΔDデータ404について説明する。
【0059】
ΔDデータ404は、差分を示すデータとして利用することができる。データ方向の圧縮の場合、ΔD=“1”は先のデータとの差分を示し、ΔD=“0”は差分データでない事を示すように設定する。アドレス方向の圧縮の場合、ΔD=“1”はビットスライスの先のデータとの差分を示し、ΔD=“0”はそうでない事を示すように設定する。
【0060】
例えば、データ方向の圧縮の場合、先のデータが“00000001”で、次のデータが“11100100”とする。この場合、先のデータとの差分は、“00000001−11100100=00011101”となる。データ“11100100”は、図4の変換テーブルGr1〜Gr4には存在しないが、差分データ“00011101”は存在する。したがって、“11100100”を変換せずに転送する代わりに、差分データ“00011101”を“11101”+ΔD(“1”)として転送する(第1変換データ402利用の場合)。
【0061】
また、ΔDデータ404を、反転を示すデータとして利用することができる。この場合、ΔD=“1”は反転データであることを示し、ΔD=“0”は非反転データであることを示すように設定する。
【0062】
例えば、データが“11111110”の場合、その反転データは、“00000001”となる。データ“11111110”は、図4の変換テーブルGr1〜Gr4には存在しないが、反転データ“00000001”は存在する。したがって、データ“11111110”を変換せずに転送する代わりに、反転データ“00000001”を“10001”+ΔD(“1”)として転送する(第1変換データ402利用の場合)。
【0063】
このように第1変換データ402又は第2変換データ403に、ΔDデータ404を併用することによって、変換テーブル以外のデータも圧縮して転送することが可能となる。なお、ΔDデータ404を利用する場合には、ΔDデータ404用の32ビットデータバス用意して、通常のデータバスと並列に設けることが好ましい(図1のΔD用データバス106参照)。
【0064】
図16に、ΔDを利用し、データ方向に圧縮した場合の転送のタイミングチャートを示す。図に示す様に、ここではコア部分クロック1601は、バスクロック1602の2倍であるものとする。
【0065】
第1変換データ402を用いた場合には(図7〜9参照)、Code1データ、TableNoデータ、TableNoデータ、及びTableデータの順で4バスサイクルAをデコード単位として転送が行われる(1603)。ΔDデータ404は、Tableデータの転送タイミングに合わせて、転送される(1604)。
【0066】
第2変換データ403を用いた場合には(図10参照)、Code2データ及びTableデータ/TableNoデータの順で2バスサイクルBをデコード単位として転送が行われる(1605)。ΔDデータ404は、Tableデータ/TableNoデータの転送タイミングに合わせて、転送される(1606)。
【0067】
この場合、8ビットを2バスサイクルの3ビット固定で転送することができるので、2バスサイクルで10バイト(2.5ワード分)の転送を行うことができる。なお、前述したように、32ビットの末尾の2ビットは利用することができない。通常の転送の場合、2バスサイクルで、8バイト分の転送しかできないので、圧縮率は1.25倍(10/8)となる。
【0068】
(付記1)コアクロックで動作するコア部分とメモリとの間を前記コアクロックより遅いバスクロックで動作するデータバスを用いてデータ転送を行うデータ転送方法において、
前記メモリ上にマッピングされた一連のデータを抽出し、
前記抽出されたデータを変換テーブルを用いて変換データに変換し、前記変換テーブルは、前記抽出されたデータと同じパターンのデータを、変換されたか否かを表すテーブルデータ、前記パターンが属するグループを示すテーブル番号データ、及び前記グループ内での前記パターンの出現頻度に応じてビット数が変化する符号データを有する変換データに変換するためのテーブルであり、
前記変換データを前記データバスを用いて転送することを特徴とするデータ転送方法。
【0069】
(付記2)コアクロックで動作するコア部分とメモリとの間を前記コアクロックより遅いバスクロックで動作するデータバスを用いてデータ転送を行うデータ転送方法において、
前記メモリ上にマッピングされた一連のデータを抽出し、
前記抽出されたデータを変換テーブルを用いて変換データに変換し、前記変換テーブルは、前記抽出されたデータと同じパターンのデータを、変換されたか否かを表すテーブルデータ、前記パターンが属するグループを示すテーブル番号データ、及び前記パターンを示す固定ビット数の符号データを有する変換データに変換するためのテーブルであり、
前記変換データを前記データバスを用いて転送することを特徴とするデータ転送方法。
【0070】
(付記3)前記変換データの転送先では、前記変換テーブルと同一の変換テーブルを用いて、前記変換データをデコードする1又は2に記載のデータ転送方法。
【0071】
(付記4)前記変換データを、前記テーブルデータのみを転送するバスサイクル、前記テーブル番号データのみを転送するバスサイクル及び前記符号データのみを転送するバスサイクルに分けて前記データバスによって転送する1又は2に記載のデータ転送方法。
【0072】
(付記5)前記変換テーブルは、前記メモリ上のマッピングされているデータが前記メモリに書き込まれる際に、前記メモリ上のマッピングされているデータの出現頻度に応じて作成される1又は2に記載のデータ転送方法。
【0073】
(付記6)前記変換テーブルは、前記抽出されたデータと同じパターンのデータを、変換されたか否かを表すテーブルデータ、前記パターンが属するグループを示すテーブル番号データ、前記グループ内での前記パターンの出現頻度に応じてビット数が変化する符号データ、及び制御データを有する変換データに変換するために用いられる1又は2に記載のデータ転送方法。
【0074】
(付記7)前記制御データは、前記抽出されたデータと他のデータとの差分又は前記抽出されたデータの反転を示す6に記載のデータ転送方法。
【0075】
(付記8)前記変換テーブルは、複数種類の変換テーブルを含み、前記メモリ上のマッピングされているデータに応じて、変換テーブルの種類を切替えてデータの変換を行う1又は2に記載のデータ転送方法。
【0076】
(付記9)前記一連のデータは、前記メモリ上のデータ方向に配置されたデータから構成される1〜8の何れか一項に記載のデータ転送方法。
【0077】
(付記10)前記一連のデータは、前記メモリ上のアドレス方向に配置されたビットスライスデータから構成される1〜8の何れか一項に記載のデータ転送方法。
【0078】
【発明の効果】
このように、本発明に従った転送方法によれば、転送回数を最大で2分の1にすることができるため、物量及び消費電力を減少させることが可能となった。
【0079】
また、本発明に従った転送方法によれば、データ転送レートが飛躍的に上がるため、LSIに適用した場合には、バスによる制約を減少することができるので、LSIの性能を向上させることが可能となった。
【0080】
さらに、本発明に従った転送方法によれば、バス占有時間が減少するため、バスにつながるブロック又はデバイスがバスを使用するために待つ時間が減少し、LSI全体の性能を向上させることが可能となった。
【図面の簡単な説明】
【図1】データバスによる接続例を示す図である。
【図2】本発明に係るデータ転送の一例のフローを示す図である。
【図3】メモリマップの概念図である。
【図4】変換テーブルの一例を示す図である。
【図5】変換テーブルを作成するための概念図である。
【図6】データの出現頻度の一例を示す図である。
【図7】データ方向への圧縮の場合の転送データフォーマットの一例を示す図である。
【図8】データ方向への圧縮の場合の転送データフォーマットの一例における、非変換データ混在を示す図である。
【図9】データ方向への圧縮の場合の転送データフォーマットの一例における、データ境界にまたがった場合を示す図である。
【図10】データ方向への圧縮の場合の転送データフォーマットの他の例を示す図である。
【図11】データ方向への圧縮の場合の転送データフォーマットの他の例における、非変換データ混在及びデータ境界にまたがった場合を示す図である。
【図12】アドレス方向への圧縮の場合の転送データフォーマットの一例を示す図である。
【図13】アドレス方向への圧縮の場合の転送データフォーマットの他の例を示す図である。
【図14】データ方向への圧縮の場合のデータ転送のタイミングチャートを示す図である。
【図15】アドレス方向への圧縮の場合のデータ転送のタイミングチャートを示す図である。
【図16】ΔDデータを使用した場合のデータ転送のタイミングチャートを示す図である。
【符号の説明】
101…コア部分
102…メモリ
103…バスブロック
105…32ビットデータバス
106…ΔD用データバス
【発明の属する技術分野】
本発明は、データ転送方法に関し、特にCPU等のコア部分からRAM等の周辺回路へのデータの転送レートを上げることを可能とするデータ転送方法に関する。
【0002】
近年、LSI化された汎用プロセッサ内のCPU等のコア部分やRAM等の周辺回路の性能向上は目を見張るものが、データ処理量も増加の一途をたどっており、各ブロック(又はデバイス)間のデータ転送を拠り効率良く行わなければ、LSI全体としても性能を向上させられない状況にある。
【0003】
そこで、CPU等のコア部分からRAM等の周辺回路へ、高い転送レートでデータ転送を行うことができるデータ転送方法が要望されている。
【0004】
【従来の技術】
多くのLSI化された汎用プロセッサでは、相対的に高い周波数のコアクロックで動作するCPU等のコア部分と、相対的に低い周波数のバスクロックで動作し、RAM等の周辺回路とコア部分とを接続するデータバスを有している。
【0005】
このようなプロセッサでは、バスクロックがコアクロックより遅いため、データバスによるデータの転送に時間が必要となる。したがって、転送時間の増大に応じて消費電力が増大し、さらにデータバスの使用権をLSI内の特定のブロック(又はデバイス)が持つ間は、他のブロック又はデバイスは、その間データバスの使用ができなくなるという不具合があった。
【0006】
また、データバスによって転送されるデータには、偏りがあることが多く、データの偏りはデータの規則性を表すが、従来、バスによるデータの転送は、規則性に拘わらず、全てのデータに関し同じ転送方法を用いていた。
【0007】
ところで、従来入力文字コードに応じ、出現頻度の高い文字コードについて圧縮を行い、圧縮した文字コードに転換して伝送路を高速度で伝送させるデータ転送技術等が知られている(例えば、特許文献1)。しかしながら、バスのデータ転送に同様の手法が取り入れられることはなかった。
【0008】
【特許文献1】
特開平5−100972号公報(第2〜3頁、図6)
【0009】
【発明が解決しようとする課題】
したがって、プロセッサでは、コア部分とメモリ間でのバス占有時間が長く、そのためバスにおける消費電力が増大するという不具合があった。また、プロセッサの性能をバスによって制約されてしまうという不具合もあった。
【0010】
そこで、本発明は、バスで転送されるデータを数ビット単位で圧縮することによって、特にLSI化された汎用プロセッサにおいてコア部分とメモリ間のバス占有時間を減少させることを目的とするものである。
【0011】
また、本発明は、データの出現頻度毎の変換テーブルを持ち、転送回数を減少させることで、特にLSI化された汎用プロセッサにおいてコア部分とメモリ間のバス占有時間を減少させることを目的とするものである。
【0012】
さらに、コア部分とメモリ間のバス占有時間を減少させ、バスに繋がる各種ブロック又はデバイスの待ち時間を減少させることによって、汎用プロセッサ全体の性能を向上させることを目的とするものである。
【0013】
【課題を解決するための手段】
本発明の第1の形態によれば、メモリ上にマッピングされた一連のデータを抽出し、抽出されたデータを変換テーブルを用いて変換し、変換テーブルは抽出されたデータと同じパターンのデータを、変換されたか否かを表すテーブルデータ、パターンが属するグループを示すテーブル番号データ、及びグループ内でのパターンの出現頻度に応じてビット数が変化する符号データを有する変換データに変換するためのテーブルであり、変換データをデータバスを用いて転送するデータ転送方法が提供される。
【0014】
また、本発明の第2の形態によれば、メモリ上にマッピングされた一連のデータを抽出し、抽出されたデータを変換テーブルを用いて変換し、変換テーブルは抽出されたデータと同じパターンのデータを、変換されたか否かを表すテーブルデータ、パターンが属するグループを示すテーブル番号データ、及びパターンを示す固定ビット数の符号データを有する変換データに変換するテーブルであり、変換データを前記データバスを用いて転送するデータ転送方法が提供される。
【0015】
このように本発明によれば、転送データは、変換テーブルによって、種々の変換データに変換されて、転送されるので、CPU等のコア部分からRAM等の周辺回路へ、高い転送レートでデータ転送を行うことができる。
【0016】
【発明の実施の形態】
以下、本発明に係るデータ転送方法を添付図面を参照して詳述する。
【0017】
図1に、CPU等のコア部分101とメモリ102との接続例を示す。図に示すように、コア部分101とメモリ102は、バスブロック103を介して、相互に32ビットデータバス105によって接続されている。また、バスブロック103は、I/O、RAM、ROM等の他のブロック104とも相互に32ビットデータバス105によって接続されている。なお、各ブロック間は、32ビットデータバス105の他に、後述するΔDデータのためのデータバス106によって接続されていても良い。
【0018】
以下、メモリからデータをバースト転送により読み出す場合を例にして、本発明に係るデータ転送方法について説明する。図2に、メモリからデータをバースト転送により読み出す場合のフローの一例を示す。
【0019】
最初に、CPU101が、例えばI/O104よりデータを読み込んで、メモリ102へのデータの書込みを開始する(図2のステップ201)。
【0020】
図3に、メモリ102に書き込まれるメモリマップの概念図を示す。図3において、アドレスADR1の時のデータをD1[m:n]、アドレスADR2=ADR1+4の時のデータをD2[m:n]、アドレスADR3=ADR2+4の時のデータをD3[m:n]、アドレスADRN=ADR(N−1)+4の時のデータをDN[m:n]とする。各D1[m:n]〜DN[m:n]は、32ビット(4バイト)のデータから構成されている。
【0021】
次に、CPU101は、メモリ102からメモリに書き込まれたデータをバースト転送する際に、変換データに変換するための変換テーブルを作成する(図2のステップ202)。
【0022】
図4に、変換テーブルの一例を示す。図4は、Gr1〜Gr4に分別された32通りの8ビットパターン401を、第1変換データ402又は第2変換データ403に変換するための変換テーブルである。1バイト分のバイナリデータには、256のパターンが存在するが、Gr1〜Gr4はこの全てのパターンを網羅するものではなく、そのうちの出現頻度が高いものを予めグループ化したものである。したがって、図4に示す変換テーブルのみを利用するとした場合、Gr1〜Gr4に分別された32通りの8ビットパターン以外のパターンは、変換されずにそのまま転送されることとなる。
【0023】
第1変換データ402は、Tableデータ、TableNoデータ及びCode1データから構成される。Tableデータは、データが変換テーブルを利用して変換されたデータか否かを表している。変換されたデータである場合、Tableデータ=“1”、変換されないデータである場合、Tableデータ=“0”である。TableNoデータは、Gr1〜Gr4のどのグループに属するかを示す2ビットデータである。なお、グループ数に応じて、ビット数が変更される。
【0024】
Code1データは、シャノンフォノ符号法に類似した符号であり、各グループのパターン中、さらに出現頻度の高いパターンから順に、ビット数を増やすようにして、コードを割り当てている。即ち、Gr1において最も出現頻度が高いパターンには“1”、次に出現頻度が高いパターンには“01”というようにコードを割り当てている。なお、Code1において、“0”と“1”を入れ替えて使用しても良い。
【0025】
したがって、第1変換データ402を利用する場合、例えば、データ“00000000”は、変換データ“1001”に変換され、データ“00000001”は、変換データ“10001”に変換される。したがって、最大に圧縮された場合、変換前のビット数は8ビットであるのに対し、変換後のビット数は4ビットとなり、その場合の圧縮率は、2倍(=8/4)となる。また、1ワード(4バイト)について言えば、出現頻度が高いデータのみを取り扱い、Tableデータ及びTableNoデータを固定してデータとしない場合、変換前のビット数は32ビットであるのに対し、変換後のビット数は最小で4ビットとなるので、最大圧縮率は、8倍(=32/4)となる。
【0026】
また、第2変換データ403は、Tableデータ、TableNoデータ及びCode2データから構成される。Tableデータ及びTableNoデータは、第1変換データの場合と同じである。Code2データは、各パターンを表す3ビット固定の符号である。
【0027】
したがって、第2変換データ403を利用する場合、例えば、データ“00000000”は、変換データ“100000”に変換される。したがって、常に、変換前のビット数は8ビットであるのに対し、変換後のビット数は6ビットとなり、その場合の圧縮率は、1.33倍(=8/6)となる。
【0028】
ΔDデータ404については後述する。
【0029】
なお、Gr1〜Gr4へグループ化したのは、アドレス範囲やデータの種類(例えば、JPEG、WAV及びMPEG等)によってデータを分けるためである。グループ化することによって、TableNoデータのスイッチング回数を減少させることができる。また、図4の変換テーブルでは、1つのグループを8種類のパターンから構成しているが、8つに限定することも、パターン数が固定である必要もない。
【0030】
図5に、図4に示した変換テーブルの第1変換データ402を作成するための概念図を示す。256バイト分、即ち8ビットの256パターンのデータが、順位レジスタ504に設定されている。順位レジスタ504の上位8つのレジスタのパターンには、前述したCode1の符号が対応付けられている。順位レジスタ504の各パターンが、256個の比較器502に設定されている。メモリ102に書き込まれる前の8ビット毎の入力データ501が、各比較器502に供給されて、各パターンと比較される。レジスタ移動制御部503は、入力データ501と一致したパターンを、順位レジスタ504において、一つ上の順位のパターンと入れ替える。これを入力データの全てに関して繰り返しながら、順位レジスタ504中のビットパターンの入れ替えを行う。順位レジスタ504の入れ替え終了後、順位レジスタ504の上位8パターン分505を変換テーブル506として設定する。
【0031】
図6に、入力データの頻度分布の例を示す。このように、入力データの出現頻度に特定のグループが存在する場合には、例えば、Gr1〜Gr4の4つのグループを作り、それぞれに、前述したCode1等の符号を割り当てることが効果的である。
【0032】
また、入力データの種類(例えば、画像ファイルデータ、MPEGデータ、音声ファイルデータ等)に応じて、異なった変換テーブルを作成し、入力データに応じてプログラマブルに使い分けることもできる。さらに、同じ変換テーブル中に、入力データの種類に応じて異なったグループ分けを行うようにしても良い。
【0033】
次に、メモリ102へのデータの書込みが終了すると(図2のステップ203)、例えば図5に示す方法により作成した変換テーブルをメモリ102側に転送する(図2のステップ204)。バスによるデータ転送元と転送先で同じ変換テーブルを予め有している必要がある。したがって、メモリ102へのデータ書込み中に、前述した方法で変換テーブルを作成し、入力データ書込み終了後に、変換テーブルをメモリ102等の各ブロックに転送して記憶させるものである。
【0034】
なお、転送データのグループ分けをプログラム化することも可能である。その場合、転送データのグループ分けを、転送データのどのパターンをどのくらいの頻度で転送するかという確立論的に求めることも可能である。メモリへの入力データ書込み中に、データの統計を取り、ダイナミックにグループ分けプログラムを書き換えることもできる。
【0035】
次に、メモリ102からバースト転送のためにデータを抽出する(図2のステップ205)。データの抽出には、図3に示すアドレスADR1の8ビットデータ301のようなデータ方向の抽出と、図3に示す8つのアドレスのビットスライスである8ビットデータ302のようなアドレス方向の抽出が考えられる。
【0036】
次に、抽出したデータを図4に示す変換テーブルを用いて変換データに変換して(図2のステップ206)、転送データフォーマットを作成する(図2のステップ207)。
【0037】
図7に、メモリ102からデータをバースト転送により読み出す際の、データ方向に圧縮した場合の32ビット転送データフォーマットの一例を示す。図7では、メモリ上に展開されている8ビット毎に、図4に示した変換テーブルを用いて、第1変換データ402(Code1)に変換する例を示している。
【0038】
8ビット入力データ701は、図4に示す変換テーブルによって、Code1データ702、TableNoデータ703、Tableデータ704に変換される。図中、斜線部は、有効ビットであり、それ以外のビットは無効ビットとして無視する。変換されたCode1データが32ビットになるまで、データの変換が行われ、32ビットの4バスサイクルデータ705が作成される。
【0039】
また、同時に制御信号も作成される。制御信号における斜線部は、対応する32ビットデータが圧縮データ/非圧縮データであるかを示している。同様に、斜線部以外は、無効ビットとして無視される。
【0040】
図8に、データ方向に圧縮した場合の32ビット転送データフォーマットにおいて、第1変換データ(Code1)を用い、変換データと非変換データが混在する場合の例を示す。図中、801は変換されていない8ビットデータを表している。変換されていないことから、TableNoデータ802は無効ビットとなり、Tableデータ803は、“0”で変換されていないことを表している。
【0041】
図9に、データ方向に圧縮した場合の32ビット転送データフォーマットにおいて、第1変換データ(Code1)を用い、32ビットの4バスサイクルデータの境界を跨いで転送が行われる例を示す。図中、Code1データ901(“00001”)は、32ビットの4バスサイクルデータA及びBに跨って転送される。データ方向への圧縮に伴い、Code1データがちょうど32ビット毎にならない場合に効果的である。
【0042】
図10に、データ方向に圧縮した場合の32ビット転送データフォーマットの他の例を示す。図10では、メモリ上に展開されている8ビット毎に、図4に示した変換テーブルを用いて、第2変換データ403(Code2)に変換する例を示している。
【0043】
8ビットデータ1001は、図4に示す変換テーブルによって、Code2データ1002、Tableデータ1003、TableNoデータ1004に変換される。図中、斜線部は、有効ビットであり、それ以外のビットは無効ビットとして無視する。変換されたCode2データが32ビットになるまで、データの変換が行われ、32ビットの2バスサイクルデータ1006が作成される。なお、Code2データは、全て3ビットであるため、末尾の2ビット1005は無効ビットとなる。
【0044】
また、同時に制御信号も作成される。制御信号における斜線部は、対応する32ビットデータが圧縮データ/非圧縮データであるかを示している。同様に、斜線部以外は、無効ビットとして無視される。
【0045】
図11に、データ方向に圧縮した場合の32ビット転送データフォーマットにおいて、第2変換データ403(Code2)を用い、変換データと非変換データが混在し、且つ32ビットの2バスサイクルデータの境界を跨いで転送が行われる例を示す。図中、1101は変換されていない8ビットデータを表している。変換されていないことから、Tableデータ1102は、“0”で変換されていないことを表しており、対応するTableNoデータ1103は無効ビットとなっている。さらに、変換されていない8ビットデータ1101は、32ビットの2バスサイクルデータA及びBに跨って転送される。
【0046】
図12に、メモリ102からデータをバースト転送により読み出す際の、アドレス方向に圧縮した場合の32ビット転送データフォーマットの一例を示す。図12では、メモリ上に展開されているアドレス方向の8ビット毎に、図4に示した変換テーブルを用いて、第1変換データ402(Code1)に変換する例を示している。
【0047】
8ビット入力データ1201は、図4に示す変換テーブルによって、Tableデータ1202、Code1データ1203、TableNoデータ1204、に変換される。図中、斜線部は、有効ビットであり、それ以外のビットは無効ビットとして無視する。変換されたCode1データ1203に応じて、転送時のバスサイクルが決定される。図12の場合は、1バスサイクルのTableデータ、8バスサイクルのCode1データ及び2バスサイクルのTableNoデータとなるので、全体として32ビットの11バスサイクルデータ1205となる。なお、変換されたCode1データが全て“1”の場合には、1バスサイクルのTableデータ、1バスサイクルのCode1データ及び2バスサイクルのTableNoデータとなるので、全体として32ビット4バスサイクルデータとなる。
【0048】
図13に、アドレス方向に圧縮した場合の32ビット転送データフォーマットの他の例を示す。図13では、メモリ上に展開されているアドレス方向の8ビット毎に、図4に示した変換テーブルを用いて、第2変換データ403(Code2)に変換する例を示している。
【0049】
8ビットデータ1301は、図4に示す変換テーブルによって、Tableデータ1302、Code2データ1303、TableNoデータ1304、に変換される。図中、斜線部は、有効ビットであり、それ以外のビットは無効ビットとして無視する。変換されたCode2データは常に3ビットなので、変換により、1バスサイクルのTableデータ、3バスサイクルのCode2データ及び2バスサイクルのTableNoデータとなるので、全体として32ビットの6バスサイクルデータ1305が作成される。
【0050】
次に、作成された転送データフォーマットを用いてバースト転送を行う(図2のステップ208)。
【0051】
図14に、データ方向に圧縮した場合の転送のタイミングチャートを示す。図に示す様に、ここではコア部分クロック周波数1401は、バスクロック周波数1402の2倍であるものとする。通常の32ビットデータ転送の場合は、バスクロック周波数1402と同期して、32ビット毎に転送が行われる(1403)。
【0052】
第1変換データ402を用いた場合には(図7〜9参照)、Code1データ、TableNoデータ、TableNoデータ、及びTableデータの順で4バスサイクルAをデコード単位として転送が行われる(1404)。この場合、最大圧縮では、8ビットを4バスサイクルの1ビットで転送することができるので、4バスサイクルで最大32バイト(8ワード分)の転送を行うことができる。通常の転送の場合、4バスサイクルで、16バイト分の転送しかできないので、最大圧縮率は2倍(32/16)となる。
【0053】
第2変換データ403を用いた場合には(図10参照)、Code2データ及びTableデータ/TableNoデータの順で2バスサイクルBをデコード単位として転送が行われる(1405)。この場合、8ビットを2バスサイクルの3ビット固定で転送することができるので、2バスサイクルで10バイト(2.5ワード分)の転送を行うことができる。なお、前述したように、32ビットの末尾の2ビットは利用することができない。通常の転送の場合、2バスサイクルで、8バイト分の転送しかできないので、圧縮率は1.25倍(10/8)となる。
【0054】
図15に、アドレス方向に圧縮した場合の転送のタイミングチャートを示す。図に示す様に、ここではコア部分クロック周波数1501は、バスクロック周波数1502の2倍であるものとする。通常の32ビットデータ転送の場合は、バスクロック周波数1502と同期して、32ビット毎に転送が行われる(1503)。
【0055】
第1変換データ402を用いた場合には(図12参照)、前述したように、Code1データに応じて、転送するバスサイクルが変化する。転送データ1504のCは、Code1データが全て“1”に変換できた場合を示しており、Tableデータ、Code1データ、TableNoデータ、及びTableNoデータの順で4バスサイクルをデコード単位として転送が行われる。Dは、Code1データが全て“01”に変換できた場合を示しており、Tableデータ、Code1データ、Code1データ、TableNoデータ、及びTableNoデータの順で5バスサイクルをデコード単位として転送が行われる。前述したCの場合が最大圧縮となり、8ビットを4バスサイクルの1ビットで転送することができるので、4バスサイクルで最大32バイト(8ワード分)の転送を行うことができる。通常の転送の場合、4バスサイクルで、16バイト分の転送しかできないので、この場合の最大圧縮率は2倍(32/16)となる。
【0056】
第2変換データ403を用いた場合には(図13参照)、Tableデータ、Code2データ、Code2データ、Code2データ、TableNoデータ及びTableNoデータの順で6バスサイクルEをデコード単位として転送が行われる(1505)。この場合、6バスサイクルで32バイト(8ワード分)の転送を行うことができる。通常の転送の場合、6バスサイクルで、24(6ワード分)の転送しかできないので、圧縮率は1.33倍(8/6)となる。
【0057】
このようにして転送されたデータを転送先が受信し(図2のステップ209)、図2のステップ204で別途受信していた同一の変換テーブルを用いてデコードを行って(210)、一連のメモリからバースト転送によってデータを読み出す手順を終了する。
【0058】
次に、図4に示したΔDデータ404について説明する。
【0059】
ΔDデータ404は、差分を示すデータとして利用することができる。データ方向の圧縮の場合、ΔD=“1”は先のデータとの差分を示し、ΔD=“0”は差分データでない事を示すように設定する。アドレス方向の圧縮の場合、ΔD=“1”はビットスライスの先のデータとの差分を示し、ΔD=“0”はそうでない事を示すように設定する。
【0060】
例えば、データ方向の圧縮の場合、先のデータが“00000001”で、次のデータが“11100100”とする。この場合、先のデータとの差分は、“00000001−11100100=00011101”となる。データ“11100100”は、図4の変換テーブルGr1〜Gr4には存在しないが、差分データ“00011101”は存在する。したがって、“11100100”を変換せずに転送する代わりに、差分データ“00011101”を“11101”+ΔD(“1”)として転送する(第1変換データ402利用の場合)。
【0061】
また、ΔDデータ404を、反転を示すデータとして利用することができる。この場合、ΔD=“1”は反転データであることを示し、ΔD=“0”は非反転データであることを示すように設定する。
【0062】
例えば、データが“11111110”の場合、その反転データは、“00000001”となる。データ“11111110”は、図4の変換テーブルGr1〜Gr4には存在しないが、反転データ“00000001”は存在する。したがって、データ“11111110”を変換せずに転送する代わりに、反転データ“00000001”を“10001”+ΔD(“1”)として転送する(第1変換データ402利用の場合)。
【0063】
このように第1変換データ402又は第2変換データ403に、ΔDデータ404を併用することによって、変換テーブル以外のデータも圧縮して転送することが可能となる。なお、ΔDデータ404を利用する場合には、ΔDデータ404用の32ビットデータバス用意して、通常のデータバスと並列に設けることが好ましい(図1のΔD用データバス106参照)。
【0064】
図16に、ΔDを利用し、データ方向に圧縮した場合の転送のタイミングチャートを示す。図に示す様に、ここではコア部分クロック1601は、バスクロック1602の2倍であるものとする。
【0065】
第1変換データ402を用いた場合には(図7〜9参照)、Code1データ、TableNoデータ、TableNoデータ、及びTableデータの順で4バスサイクルAをデコード単位として転送が行われる(1603)。ΔDデータ404は、Tableデータの転送タイミングに合わせて、転送される(1604)。
【0066】
第2変換データ403を用いた場合には(図10参照)、Code2データ及びTableデータ/TableNoデータの順で2バスサイクルBをデコード単位として転送が行われる(1605)。ΔDデータ404は、Tableデータ/TableNoデータの転送タイミングに合わせて、転送される(1606)。
【0067】
この場合、8ビットを2バスサイクルの3ビット固定で転送することができるので、2バスサイクルで10バイト(2.5ワード分)の転送を行うことができる。なお、前述したように、32ビットの末尾の2ビットは利用することができない。通常の転送の場合、2バスサイクルで、8バイト分の転送しかできないので、圧縮率は1.25倍(10/8)となる。
【0068】
(付記1)コアクロックで動作するコア部分とメモリとの間を前記コアクロックより遅いバスクロックで動作するデータバスを用いてデータ転送を行うデータ転送方法において、
前記メモリ上にマッピングされた一連のデータを抽出し、
前記抽出されたデータを変換テーブルを用いて変換データに変換し、前記変換テーブルは、前記抽出されたデータと同じパターンのデータを、変換されたか否かを表すテーブルデータ、前記パターンが属するグループを示すテーブル番号データ、及び前記グループ内での前記パターンの出現頻度に応じてビット数が変化する符号データを有する変換データに変換するためのテーブルであり、
前記変換データを前記データバスを用いて転送することを特徴とするデータ転送方法。
【0069】
(付記2)コアクロックで動作するコア部分とメモリとの間を前記コアクロックより遅いバスクロックで動作するデータバスを用いてデータ転送を行うデータ転送方法において、
前記メモリ上にマッピングされた一連のデータを抽出し、
前記抽出されたデータを変換テーブルを用いて変換データに変換し、前記変換テーブルは、前記抽出されたデータと同じパターンのデータを、変換されたか否かを表すテーブルデータ、前記パターンが属するグループを示すテーブル番号データ、及び前記パターンを示す固定ビット数の符号データを有する変換データに変換するためのテーブルであり、
前記変換データを前記データバスを用いて転送することを特徴とするデータ転送方法。
【0070】
(付記3)前記変換データの転送先では、前記変換テーブルと同一の変換テーブルを用いて、前記変換データをデコードする1又は2に記載のデータ転送方法。
【0071】
(付記4)前記変換データを、前記テーブルデータのみを転送するバスサイクル、前記テーブル番号データのみを転送するバスサイクル及び前記符号データのみを転送するバスサイクルに分けて前記データバスによって転送する1又は2に記載のデータ転送方法。
【0072】
(付記5)前記変換テーブルは、前記メモリ上のマッピングされているデータが前記メモリに書き込まれる際に、前記メモリ上のマッピングされているデータの出現頻度に応じて作成される1又は2に記載のデータ転送方法。
【0073】
(付記6)前記変換テーブルは、前記抽出されたデータと同じパターンのデータを、変換されたか否かを表すテーブルデータ、前記パターンが属するグループを示すテーブル番号データ、前記グループ内での前記パターンの出現頻度に応じてビット数が変化する符号データ、及び制御データを有する変換データに変換するために用いられる1又は2に記載のデータ転送方法。
【0074】
(付記7)前記制御データは、前記抽出されたデータと他のデータとの差分又は前記抽出されたデータの反転を示す6に記載のデータ転送方法。
【0075】
(付記8)前記変換テーブルは、複数種類の変換テーブルを含み、前記メモリ上のマッピングされているデータに応じて、変換テーブルの種類を切替えてデータの変換を行う1又は2に記載のデータ転送方法。
【0076】
(付記9)前記一連のデータは、前記メモリ上のデータ方向に配置されたデータから構成される1〜8の何れか一項に記載のデータ転送方法。
【0077】
(付記10)前記一連のデータは、前記メモリ上のアドレス方向に配置されたビットスライスデータから構成される1〜8の何れか一項に記載のデータ転送方法。
【0078】
【発明の効果】
このように、本発明に従った転送方法によれば、転送回数を最大で2分の1にすることができるため、物量及び消費電力を減少させることが可能となった。
【0079】
また、本発明に従った転送方法によれば、データ転送レートが飛躍的に上がるため、LSIに適用した場合には、バスによる制約を減少することができるので、LSIの性能を向上させることが可能となった。
【0080】
さらに、本発明に従った転送方法によれば、バス占有時間が減少するため、バスにつながるブロック又はデバイスがバスを使用するために待つ時間が減少し、LSI全体の性能を向上させることが可能となった。
【図面の簡単な説明】
【図1】データバスによる接続例を示す図である。
【図2】本発明に係るデータ転送の一例のフローを示す図である。
【図3】メモリマップの概念図である。
【図4】変換テーブルの一例を示す図である。
【図5】変換テーブルを作成するための概念図である。
【図6】データの出現頻度の一例を示す図である。
【図7】データ方向への圧縮の場合の転送データフォーマットの一例を示す図である。
【図8】データ方向への圧縮の場合の転送データフォーマットの一例における、非変換データ混在を示す図である。
【図9】データ方向への圧縮の場合の転送データフォーマットの一例における、データ境界にまたがった場合を示す図である。
【図10】データ方向への圧縮の場合の転送データフォーマットの他の例を示す図である。
【図11】データ方向への圧縮の場合の転送データフォーマットの他の例における、非変換データ混在及びデータ境界にまたがった場合を示す図である。
【図12】アドレス方向への圧縮の場合の転送データフォーマットの一例を示す図である。
【図13】アドレス方向への圧縮の場合の転送データフォーマットの他の例を示す図である。
【図14】データ方向への圧縮の場合のデータ転送のタイミングチャートを示す図である。
【図15】アドレス方向への圧縮の場合のデータ転送のタイミングチャートを示す図である。
【図16】ΔDデータを使用した場合のデータ転送のタイミングチャートを示す図である。
【符号の説明】
101…コア部分
102…メモリ
103…バスブロック
105…32ビットデータバス
106…ΔD用データバス
Claims (5)
- コアクロックで動作するコア部分とメモリとの間を前記コアクロックより遅いバスクロックで動作するデータバスを用いてデータ転送を行うデータ転送方法において、
前記メモリ上にマッピングされた一連のデータを抽出し、
前記抽出されたデータを変換テーブルを用いて変換し、前記変換テーブルは、前記抽出されたデータと同じパターンのデータを、変換されたか否かを表すテーブルデータ、前記パターンが属するグループを示すテーブル番号データ、及び前記グループ内での前記パターンの出現頻度に応じてビット数が変化する符号データを有する変換データに変換するためのテーブルであり、
前記変換データを前記データバスを用いて転送することを特徴とするデータ転送方法。 - コアクロックで動作するコア部分とメモリとの間を前記コアクロックより遅いバスクロックで動作するデータバスを用いてデータ転送を行うデータ転送方法において、
前記メモリ上にマッピングされた一連のデータを抽出し、
前記抽出されたデータを変換テーブルを用いて変換し、前記変換テーブルは、前記抽出されたデータと同じパターンのデータを、変換されたか否かを表すテーブルデータ、前記パターンが属するグループを示すテーブル番号データ、及び前記パターンを示す固定ビット数の符号データを有する変換データに変換するためのテーブルであり、
前記変換データを前記データバスを用いて転送することを特徴とするデータ転送方法。 - 前記変換データの転送先では、前記変換テーブルと同一の変換テーブルを用いて、前記変換データをデコードする請求項1又は2に記載のデータ転送方法。
- 前記変換データを、前記テーブルデータのみを転送するバスサイクル、前記テーブル番号データのみを転送するバスサイクル及び前記符号データのみを転送するバスサイクルに分けて前記データバスによって転送する請求項1又は2に記載のデータ転送方法。
- 前記変換テーブルは、前記メモリ上のマッピングされているデータが前記メモリに書き込まれる際に、前記メモリ上のマッピングされているデータの出現頻度に応じて作成される請求項1又は2に記載のデータ転送方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003036933A JP2004246694A (ja) | 2003-02-14 | 2003-02-14 | データ転送方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003036933A JP2004246694A (ja) | 2003-02-14 | 2003-02-14 | データ転送方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004246694A true JP2004246694A (ja) | 2004-09-02 |
Family
ID=33021883
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003036933A Withdrawn JP2004246694A (ja) | 2003-02-14 | 2003-02-14 | データ転送方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004246694A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9112736B2 (en) | 2011-12-20 | 2015-08-18 | Canon Kabushiki Kaisha | Data transfer apparatus, data transfer method, and inter-chip communication system |
JP2016184234A (ja) * | 2015-03-25 | 2016-10-20 | アイシン・エィ・ダブリュ株式会社 | ノイズ分析装置およびメモリコントローラ |
-
2003
- 2003-02-14 JP JP2003036933A patent/JP2004246694A/ja not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9112736B2 (en) | 2011-12-20 | 2015-08-18 | Canon Kabushiki Kaisha | Data transfer apparatus, data transfer method, and inter-chip communication system |
JP2016184234A (ja) * | 2015-03-25 | 2016-10-20 | アイシン・エィ・ダブリュ株式会社 | ノイズ分析装置およびメモリコントローラ |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6885319B2 (en) | System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms | |
JP4139330B2 (ja) | 改良された可変長デコーダ | |
US6819271B2 (en) | Parallel compression and decompression system and method having multiple parallel compression and decompression engines | |
CN108292222B (zh) | 用于数据解压缩的硬件装置和方法 | |
US7965207B2 (en) | Variable length integer encoding system and method | |
US20030085822A1 (en) | High performance memory efficient variable-length coding decoder | |
JP4703730B2 (ja) | テーブル装置、可変長符号化装置、可変長復号装置及び可変長符号化復号装置 | |
US20030128140A1 (en) | Code compression algorithms and architectures for embedded systems | |
JP2004240713A (ja) | データ転送方法及びデータ転送装置 | |
JPH06348492A (ja) | データパイプライン装置及びデータエンコーディング方法 | |
US7113115B2 (en) | Variable length code table look ups | |
Xie et al. | A code decompression architecture for VLIW processors | |
CN101325418B (zh) | 一种基于概率查表的哈夫曼快速解码方法 | |
US9287893B1 (en) | ASIC block for high bandwidth LZ77 decompression | |
JP4930435B2 (ja) | 可変長符号復号装置、可変長符号復号方法およびプログラム | |
JPH05183443A (ja) | 符号変換方法 | |
JP2004246694A (ja) | データ転送方法 | |
KR20220054651A (ko) | 다중 심볼 디코더 | |
US20100225508A1 (en) | Variable-Length Code Decoding Device and Variable-Length Code Decoding Method | |
JP2006287862A (ja) | 復号化装置 | |
Sarangi et al. | Canonical huffman decoder on fine-grain many-core processor arrays | |
US20050283349A1 (en) | Design method, design program, and storage medium for semiconductor integrated device | |
JP4563300B2 (ja) | テーブル装置、可変長符号化/復号装置、可変長符号化装置及び可変長復号装置 | |
US9219496B1 (en) | Efficient lossless data compression system, data compressor, and method therefor | |
JP3863652B2 (ja) | 可変長コードの整列化装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20060509 |