(57)【要約】【課題】バスで転送されるデータを数ビット単位で圧縮することによって、特に汎用プロセッサにおいてコア部分とメモリ間のバス占有時間を減少させることを目的とするものである。【解決手段】本発明に係るデータ転送方法では、メモリ上にマッピングされた一連のデータを抽出し、抽出されたデータを変換テーブルを用いて変換し、変換データをデータバスを用いて転送することを特徴とする。また、変換テーブルは、抽出されたデータと同じパターンのデータを、変換されたか否かを表すテーブルデータ、パターンが属するグループを示すテーブル番号データ、及びグループ内でのパターンの出現頻度に応じてビット数が変化する符号データを有する変換データに変換するものである。コアクロックより遅いバスクロックによるデータバスを用いてデータの転送を行う際に、より効率よくデータの転送を行えるように、データ転送の効率化を図ったものである。【選択図】      図１
2004246694.tif 000002
【特許請求の範囲】
【請求項１】
コアクロックで動作するコア部分とメモリとの間を前記コアクロックより遅いバスクロックで動作するデータバスを用いてデータ転送を行うデータ転送方法において、
前記メモリ上にマッピングされた一連のデータを抽出し、
前記抽出されたデータを変換テーブルを用いて変換し、前記変換テーブルは、前記抽出されたデータと同じパターンのデータを、変換されたか否かを表すテーブルデータ、前記パターンが属するグループを示すテーブル番号データ、及び前記グループ内での前記パターンの出現頻度に応じてビット数が変化する符号データを有する変換データに変換するためのテーブルであり、
前記変換データを前記データバスを用いて転送することを特徴とするデータ転送方法。
【請求項２】
コアクロックで動作するコア部分とメモリとの間を前記コアクロックより遅いバスクロックで動作するデータバスを用いてデータ転送を行うデータ転送方法において、
前記メモリ上にマッピングされた一連のデータを抽出し、
前記抽出されたデータを変換テーブルを用いて変換し、前記変換テーブルは、前記抽出されたデータと同じパターンのデータを、変換されたか否かを表すテーブルデータ、前記パターンが属するグループを示すテーブル番号データ、及び前記パターンを示す固定ビット数の符号データを有する変換データに変換するためのテーブルであり、
前記変換データを前記データバスを用いて転送することを特徴とするデータ転送方法。
【請求項３】
前記変換データの転送先では、前記変換テーブルと同一の変換テーブルを用いて、前記変換データをデコードする請求項１又は２に記載のデータ転送方法。
【請求項４】
前記変換データを、前記テーブルデータのみを転送するバスサイクル、前記テーブル番号データのみを転送するバスサイクル及び前記符号データのみを転送するバスサイクルに分けて前記データバスによって転送する請求項１又は２に記載のデータ転送方法。
【請求項５】
前記変換テーブルは、前記メモリ上のマッピングされているデータが前記メモリに書き込まれる際に、前記メモリ上のマッピングされているデータの出現頻度に応じて作成される請求項１又は２に記載のデータ転送方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ転送方法に関し、特にＣＰＵ等のコア部分からＲＡＭ等の周辺回路へのデータの転送レートを上げることを可能とするデータ転送方法に関する。
【０００２】
近年、ＬＳＩ化された汎用プロセッサ内のＣＰＵ等のコア部分やＲＡＭ等の周辺回路の性能向上は目を見張るものが、データ処理量も増加の一途をたどっており、各ブロック（又はデバイス）間のデータ転送を拠り効率良く行わなければ、ＬＳＩ全体としても性能を向上させられない状況にある。
【０００３】
そこで、ＣＰＵ等のコア部分からＲＡＭ等の周辺回路へ、高い転送レートでデータ転送を行うことができるデータ転送方法が要望されている。
【０００４】
【従来の技術】
多くのＬＳＩ化された汎用プロセッサでは、相対的に高い周波数のコアクロックで動作するＣＰＵ等のコア部分と、相対的に低い周波数のバスクロックで動作し、ＲＡＭ等の周辺回路とコア部分とを接続するデータバスを有している。
【０００５】
このようなプロセッサでは、バスクロックがコアクロックより遅いため、データバスによるデータの転送に時間が必要となる。したがって、転送時間の増大に応じて消費電力が増大し、さらにデータバスの使用権をＬＳＩ内の特定のブロック（又はデバイス）が持つ間は、他のブロック又はデバイスは、その間データバスの使用ができなくなるという不具合があった。
【０００６】
また、データバスによって転送されるデータには、偏りがあることが多く、データの偏りはデータの規則性を表すが、従来、バスによるデータの転送は、規則性に拘わらず、全てのデータに関し同じ転送方法を用いていた。
【０００７】
ところで、従来入力文字コードに応じ、出現頻度の高い文字コードについて圧縮を行い、圧縮した文字コードに転換して伝送路を高速度で伝送させるデータ転送技術等が知られている（例えば、特許文献１）。しかしながら、バスのデータ転送に同様の手法が取り入れられることはなかった。
【０００８】
【特許文献１】
特開平５−１００９７２号公報（第２〜３頁、図６）
【０００９】
【発明が解決しようとする課題】
したがって、プロセッサでは、コア部分とメモリ間でのバス占有時間が長く、そのためバスにおける消費電力が増大するという不具合があった。また、プロセッサの性能をバスによって制約されてしまうという不具合もあった。
【００１０】
そこで、本発明は、バスで転送されるデータを数ビット単位で圧縮することによって、特にＬＳＩ化された汎用プロセッサにおいてコア部分とメモリ間のバス占有時間を減少させることを目的とするものである。
【００１１】
また、本発明は、データの出現頻度毎の変換テーブルを持ち、転送回数を減少させることで、特にＬＳＩ化された汎用プロセッサにおいてコア部分とメモリ間のバス占有時間を減少させることを目的とするものである。
【００１２】
さらに、コア部分とメモリ間のバス占有時間を減少させ、バスに繋がる各種ブロック又はデバイスの待ち時間を減少させることによって、汎用プロセッサ全体の性能を向上させることを目的とするものである。
【００１３】
【課題を解決するための手段】
本発明の第１の形態によれば、メモリ上にマッピングされた一連のデータを抽出し、抽出されたデータを変換テーブルを用いて変換し、変換テーブルは抽出されたデータと同じパターンのデータを、変換されたか否かを表すテーブルデータ、パターンが属するグループを示すテーブル番号データ、及びグループ内でのパターンの出現頻度に応じてビット数が変化する符号データを有する変換データに変換するためのテーブルであり、変換データをデータバスを用いて転送するデータ転送方法が提供される。
【００１４】
また、本発明の第２の形態によれば、メモリ上にマッピングされた一連のデータを抽出し、抽出されたデータを変換テーブルを用いて変換し、変換テーブルは抽出されたデータと同じパターンのデータを、変換されたか否かを表すテーブルデータ、パターンが属するグループを示すテーブル番号データ、及びパターンを示す固定ビット数の符号データを有する変換データに変換するテーブルであり、変換データを前記データバスを用いて転送するデータ転送方法が提供される。
【００１５】
このように本発明によれば、転送データは、変換テーブルによって、種々の変換データに変換されて、転送されるので、ＣＰＵ等のコア部分からＲＡＭ等の周辺回路へ、高い転送レートでデータ転送を行うことができる。
【００１６】
【発明の実施の形態】
以下、本発明に係るデータ転送方法を添付図面を参照して詳述する。
【００１７】
図１に、ＣＰＵ等のコア部分１０１とメモリ１０２との接続例を示す。図に示すように、コア部分１０１とメモリ１０２は、バスブロック１０３を介して、相互に３２ビットデータバス１０５によって接続されている。また、バスブロック１０３は、Ｉ／Ｏ、ＲＡＭ、ＲＯＭ等の他のブロック１０４とも相互に３２ビットデータバス１０５によって接続されている。なお、各ブロック間は、３２ビットデータバス１０５の他に、後述するΔＤデータのためのデータバス１０６によって接続されていても良い。
【００１８】
以下、メモリからデータをバースト転送により読み出す場合を例にして、本発明に係るデータ転送方法について説明する。図２に、メモリからデータをバースト転送により読み出す場合のフローの一例を示す。
【００１９】
最初に、ＣＰＵ１０１が、例えばＩ／Ｏ１０４よりデータを読み込んで、メモリ１０２へのデータの書込みを開始する（図２のステップ２０１）。
【００２０】
図３に、メモリ１０２に書き込まれるメモリマップの概念図を示す。図３において、アドレスＡＤＲ１の時のデータをＤ１［ｍ：ｎ］、アドレスＡＤＲ２＝ＡＤＲ１＋４の時のデータをＤ２［ｍ：ｎ］、アドレスＡＤＲ３＝ＡＤＲ２＋４の時のデータをＤ３［ｍ：ｎ］、アドレスＡＤＲＮ＝ＡＤＲ（Ｎ−１）＋４の時のデータをＤＮ［ｍ：ｎ］とする。各Ｄ１［ｍ：ｎ］〜ＤＮ［ｍ：ｎ］は、３２ビット（４バイト）のデータから構成されている。
【００２１】
次に、ＣＰＵ１０１は、メモリ１０２からメモリに書き込まれたデータをバースト転送する際に、変換データに変換するための変換テーブルを作成する（図２のステップ２０２）。
【００２２】
図４に、変換テーブルの一例を示す。図４は、Ｇｒ１〜Ｇｒ４に分別された３２通りの８ビットパターン４０１を、第１変換データ４０２又は第２変換データ４０３に変換するための変換テーブルである。１バイト分のバイナリデータには、２５６のパターンが存在するが、Ｇｒ１〜Ｇｒ４はこの全てのパターンを網羅するものではなく、そのうちの出現頻度が高いものを予めグループ化したものである。したがって、図４に示す変換テーブルのみを利用するとした場合、Ｇｒ１〜Ｇｒ４に分別された３２通りの８ビットパターン以外のパターンは、変換されずにそのまま転送されることとなる。
【００２３】
第１変換データ４０２は、Ｔａｂｌｅデータ、ＴａｂｌｅＮｏデータ及びＣｏｄｅ１データから構成される。Ｔａｂｌｅデータは、データが変換テーブルを利用して変換されたデータか否かを表している。変換されたデータである場合、Ｔａｂｌｅデータ＝“１”、変換されないデータである場合、Ｔａｂｌｅデータ＝“０”である。ＴａｂｌｅＮｏデータは、Ｇｒ１〜Ｇｒ４のどのグループに属するかを示す２ビットデータである。なお、グループ数に応じて、ビット数が変更される。
【００２４】
Ｃｏｄｅ１データは、シャノンフォノ符号法に類似した符号であり、各グループのパターン中、さらに出現頻度の高いパターンから順に、ビット数を増やすようにして、コードを割り当てている。即ち、Ｇｒ１において最も出現頻度が高いパターンには“１”、次に出現頻度が高いパターンには“０１”というようにコードを割り当てている。なお、Ｃｏｄｅ１において、“０”と“１”を入れ替えて使用しても良い。
【００２５】
したがって、第１変換データ４０２を利用する場合、例えば、データ“００００００００”は、変換データ“１００１”に変換され、データ“０００００００１”は、変換データ“１０００１”に変換される。したがって、最大に圧縮された場合、変換前のビット数は８ビットであるのに対し、変換後のビット数は４ビットとなり、その場合の圧縮率は、２倍（＝８／４）となる。また、１ワード（４バイト）について言えば、出現頻度が高いデータのみを取り扱い、Ｔａｂｌｅデータ及びＴａｂｌｅＮｏデータを固定してデータとしない場合、変換前のビット数は３２ビットであるのに対し、変換後のビット数は最小で４ビットとなるので、最大圧縮率は、８倍（＝３２／４）となる。
【００２６】
また、第２変換データ４０３は、Ｔａｂｌｅデータ、ＴａｂｌｅＮｏデータ及びＣｏｄｅ２データから構成される。Ｔａｂｌｅデータ及びＴａｂｌｅＮｏデータは、第１変換データの場合と同じである。Ｃｏｄｅ２データは、各パターンを表す３ビット固定の符号である。
【００２７】
したがって、第２変換データ４０３を利用する場合、例えば、データ“００００００００”は、変換データ“１０００００”に変換される。したがって、常に、変換前のビット数は８ビットであるのに対し、変換後のビット数は６ビットとなり、その場合の圧縮率は、１．３３倍（＝８／６）となる。
【００２８】
ΔＤデータ４０４については後述する。
【００２９】
なお、Ｇｒ１〜Ｇｒ４へグループ化したのは、アドレス範囲やデータの種類（例えば、ＪＰＥＧ、ＷＡＶ及びＭＰＥＧ等）によってデータを分けるためである。グループ化することによって、ＴａｂｌｅＮｏデータのスイッチング回数を減少させることができる。また、図４の変換テーブルでは、１つのグループを８種類のパターンから構成しているが、８つに限定することも、パターン数が固定である必要もない。
【００３０】
図５に、図４に示した変換テーブルの第１変換データ４０２を作成するための概念図を示す。２５６バイト分、即ち８ビットの２５６パターンのデータが、順位レジスタ５０４に設定されている。順位レジスタ５０４の上位８つのレジスタのパターンには、前述したＣｏｄｅ１の符号が対応付けられている。順位レジスタ５０４の各パターンが、２５６個の比較器５０２に設定されている。メモリ１０２に書き込まれる前の８ビット毎の入力データ５０１が、各比較器５０２に供給されて、各パターンと比較される。レジスタ移動制御部５０３は、入力データ５０１と一致したパターンを、順位レジスタ５０４において、一つ上の順位のパターンと入れ替える。これを入力データの全てに関して繰り返しながら、順位レジスタ５０４中のビットパターンの入れ替えを行う。順位レジスタ５０４の入れ替え終了後、順位レジスタ５０４の上位８パターン分５０５を変換テーブル５０６として設定する。
【００３１】
図６に、入力データの頻度分布の例を示す。このように、入力データの出現頻度に特定のグループが存在する場合には、例えば、Ｇｒ１〜Ｇｒ４の４つのグループを作り、それぞれに、前述したＣｏｄｅ１等の符号を割り当てることが効果的である。
【００３２】
また、入力データの種類（例えば、画像ファイルデータ、ＭＰＥＧデータ、音声ファイルデータ等）に応じて、異なった変換テーブルを作成し、入力データに応じてプログラマブルに使い分けることもできる。さらに、同じ変換テーブル中に、入力データの種類に応じて異なったグループ分けを行うようにしても良い。
【００３３】
次に、メモリ１０２へのデータの書込みが終了すると（図２のステップ２０３）、例えば図５に示す方法により作成した変換テーブルをメモリ１０２側に転送する（図２のステップ２０４）。バスによるデータ転送元と転送先で同じ変換テーブルを予め有している必要がある。したがって、メモリ１０２へのデータ書込み中に、前述した方法で変換テーブルを作成し、入力データ書込み終了後に、変換テーブルをメモリ１０２等の各ブロックに転送して記憶させるものである。
【００３４】
なお、転送データのグループ分けをプログラム化することも可能である。その場合、転送データのグループ分けを、転送データのどのパターンをどのくらいの頻度で転送するかという確立論的に求めることも可能である。メモリへの入力データ書込み中に、データの統計を取り、ダイナミックにグループ分けプログラムを書き換えることもできる。
【００３５】
次に、メモリ１０２からバースト転送のためにデータを抽出する（図２のステップ２０５）。データの抽出には、図３に示すアドレスＡＤＲ１の８ビットデータ３０１のようなデータ方向の抽出と、図３に示す８つのアドレスのビットスライスである８ビットデータ３０２のようなアドレス方向の抽出が考えられる。
【００３６】
次に、抽出したデータを図４に示す変換テーブルを用いて変換データに変換して（図２のステップ２０６）、転送データフォーマットを作成する（図２のステップ２０７）。
【００３７】
図７に、メモリ１０２からデータをバースト転送により読み出す際の、データ方向に圧縮した場合の３２ビット転送データフォーマットの一例を示す。図７では、メモリ上に展開されている８ビット毎に、図４に示した変換テーブルを用いて、第１変換データ４０２（Ｃｏｄｅ１）に変換する例を示している。
【００３８】
８ビット入力データ７０１は、図４に示す変換テーブルによって、Ｃｏｄｅ１データ７０２、ＴａｂｌｅＮｏデータ７０３、Ｔａｂｌｅデータ７０４に変換される。図中、斜線部は、有効ビットであり、それ以外のビットは無効ビットとして無視する。変換されたＣｏｄｅ１データが３２ビットになるまで、データの変換が行われ、３２ビットの４バスサイクルデータ７０５が作成される。
【００３９】
また、同時に制御信号も作成される。制御信号における斜線部は、対応する３２ビットデータが圧縮データ／非圧縮データであるかを示している。同様に、斜線部以外は、無効ビットとして無視される。
【００４０】
図８に、データ方向に圧縮した場合の３２ビット転送データフォーマットにおいて、第１変換データ（Ｃｏｄｅ１）を用い、変換データと非変換データが混在する場合の例を示す。図中、８０１は変換されていない８ビットデータを表している。変換されていないことから、ＴａｂｌｅＮｏデータ８０２は無効ビットとなり、Ｔａｂｌｅデータ８０３は、“０”で変換されていないことを表している。
【００４１】
図９に、データ方向に圧縮した場合の３２ビット転送データフォーマットにおいて、第１変換データ（Ｃｏｄｅ１）を用い、３２ビットの４バスサイクルデータの境界を跨いで転送が行われる例を示す。図中、Ｃｏｄｅ１データ９０１（“００００１”）は、３２ビットの４バスサイクルデータＡ及びＢに跨って転送される。データ方向への圧縮に伴い、Ｃｏｄｅ１データがちょうど３２ビット毎にならない場合に効果的である。
【００４２】
図１０に、データ方向に圧縮した場合の３２ビット転送データフォーマットの他の例を示す。図１０では、メモリ上に展開されている８ビット毎に、図４に示した変換テーブルを用いて、第２変換データ４０３（Ｃｏｄｅ２）に変換する例を示している。
【００４３】
８ビットデータ１００１は、図４に示す変換テーブルによって、Ｃｏｄｅ２データ１００２、Ｔａｂｌｅデータ１００３、ＴａｂｌｅＮｏデータ１００４に変換される。図中、斜線部は、有効ビットであり、それ以外のビットは無効ビットとして無視する。変換されたＣｏｄｅ２データが３２ビットになるまで、データの変換が行われ、３２ビットの２バスサイクルデータ１００６が作成される。なお、Ｃｏｄｅ２データは、全て３ビットであるため、末尾の２ビット１００５は無効ビットとなる。
【００４４】
また、同時に制御信号も作成される。制御信号における斜線部は、対応する３２ビットデータが圧縮データ／非圧縮データであるかを示している。同様に、斜線部以外は、無効ビットとして無視される。
【００４５】
図１１に、データ方向に圧縮した場合の３２ビット転送データフォーマットにおいて、第２変換データ４０３（Ｃｏｄｅ２）を用い、変換データと非変換データが混在し、且つ３２ビットの２バスサイクルデータの境界を跨いで転送が行われる例を示す。図中、１１０１は変換されていない８ビットデータを表している。変換されていないことから、Ｔａｂｌｅデータ１１０２は、“０”で変換されていないことを表しており、対応するＴａｂｌｅＮｏデータ１１０３は無効ビットとなっている。さらに、変換されていない８ビットデータ１１０１は、３２ビットの２バスサイクルデータＡ及びＢに跨って転送される。
【００４６】
図１２に、メモリ１０２からデータをバースト転送により読み出す際の、アドレス方向に圧縮した場合の３２ビット転送データフォーマットの一例を示す。図１２では、メモリ上に展開されているアドレス方向の８ビット毎に、図４に示した変換テーブルを用いて、第１変換データ４０２（Ｃｏｄｅ１）に変換する例を示している。
【００４７】
８ビット入力データ１２０１は、図４に示す変換テーブルによって、Ｔａｂｌｅデータ１２０２、Ｃｏｄｅ１データ１２０３、ＴａｂｌｅＮｏデータ１２０４、に変換される。図中、斜線部は、有効ビットであり、それ以外のビットは無効ビットとして無視する。変換されたＣｏｄｅ１データ１２０３に応じて、転送時のバスサイクルが決定される。図１２の場合は、１バスサイクルのＴａｂｌｅデータ、８バスサイクルのＣｏｄｅ１データ及び２バスサイクルのＴａｂｌｅＮｏデータとなるので、全体として３２ビットの１１バスサイクルデータ１２０５となる。なお、変換されたＣｏｄｅ１データが全て“１”の場合には、１バスサイクルのＴａｂｌｅデータ、１バスサイクルのＣｏｄｅ１データ及び２バスサイクルのＴａｂｌｅＮｏデータとなるので、全体として３２ビット４バスサイクルデータとなる。
【００４８】
図１３に、アドレス方向に圧縮した場合の３２ビット転送データフォーマットの他の例を示す。図１３では、メモリ上に展開されているアドレス方向の８ビット毎に、図４に示した変換テーブルを用いて、第２変換データ４０３（Ｃｏｄｅ２）に変換する例を示している。
【００４９】
８ビットデータ１３０１は、図４に示す変換テーブルによって、Ｔａｂｌｅデータ１３０２、Ｃｏｄｅ２データ１３０３、ＴａｂｌｅＮｏデータ１３０４、に変換される。図中、斜線部は、有効ビットであり、それ以外のビットは無効ビットとして無視する。変換されたＣｏｄｅ２データは常に３ビットなので、変換により、１バスサイクルのＴａｂｌｅデータ、３バスサイクルのＣｏｄｅ２データ及び２バスサイクルのＴａｂｌｅＮｏデータとなるので、全体として３２ビットの６バスサイクルデータ１３０５が作成される。
【００５０】
次に、作成された転送データフォーマットを用いてバースト転送を行う（図２のステップ２０８）。
【００５１】
図１４に、データ方向に圧縮した場合の転送のタイミングチャートを示す。図に示す様に、ここではコア部分クロック周波数１４０１は、バスクロック周波数１４０２の２倍であるものとする。通常の３２ビットデータ転送の場合は、バスクロック周波数１４０２と同期して、３２ビット毎に転送が行われる（１４０３）。
【００５２】
第１変換データ４０２を用いた場合には（図７〜９参照）、Ｃｏｄｅ１データ、ＴａｂｌｅＮｏデータ、ＴａｂｌｅＮｏデータ、及びＴａｂｌｅデータの順で４バスサイクルＡをデコード単位として転送が行われる（１４０４）。この場合、最大圧縮では、８ビットを４バスサイクルの１ビットで転送することができるので、４バスサイクルで最大３２バイト（８ワード分）の転送を行うことができる。通常の転送の場合、４バスサイクルで、１６バイト分の転送しかできないので、最大圧縮率は２倍（３２／１６）となる。
【００５３】
第２変換データ４０３を用いた場合には（図１０参照）、Ｃｏｄｅ２データ及びＴａｂｌｅデータ／ＴａｂｌｅＮｏデータの順で２バスサイクルＢをデコード単位として転送が行われる（１４０５）。この場合、８ビットを２バスサイクルの３ビット固定で転送することができるので、２バスサイクルで１０バイト（２．５ワード分）の転送を行うことができる。なお、前述したように、３２ビットの末尾の２ビットは利用することができない。通常の転送の場合、２バスサイクルで、８バイト分の転送しかできないので、圧縮率は１．２５倍（１０／８）となる。
【００５４】
図１５に、アドレス方向に圧縮した場合の転送のタイミングチャートを示す。図に示す様に、ここではコア部分クロック周波数１５０１は、バスクロック周波数１５０２の２倍であるものとする。通常の３２ビットデータ転送の場合は、バスクロック周波数１５０２と同期して、３２ビット毎に転送が行われる（１５０３）。
【００５５】
第１変換データ４０２を用いた場合には（図１２参照）、前述したように、Ｃｏｄｅ１データに応じて、転送するバスサイクルが変化する。転送データ１５０４のＣは、Ｃｏｄｅ１データが全て“１”に変換できた場合を示しており、Ｔａｂｌｅデータ、Ｃｏｄｅ１データ、ＴａｂｌｅＮｏデータ、及びＴａｂｌｅＮｏデータの順で４バスサイクルをデコード単位として転送が行われる。Ｄは、Ｃｏｄｅ１データが全て“０１”に変換できた場合を示しており、Ｔａｂｌｅデータ、Ｃｏｄｅ１データ、Ｃｏｄｅ１データ、ＴａｂｌｅＮｏデータ、及びＴａｂｌｅＮｏデータの順で５バスサイクルをデコード単位として転送が行われる。前述したＣの場合が最大圧縮となり、８ビットを４バスサイクルの１ビットで転送することができるので、４バスサイクルで最大３２バイト（８ワード分）の転送を行うことができる。通常の転送の場合、４バスサイクルで、１６バイト分の転送しかできないので、この場合の最大圧縮率は２倍（３２／１６）となる。
【００５６】
第２変換データ４０３を用いた場合には（図１３参照）、Ｔａｂｌｅデータ、Ｃｏｄｅ２データ、Ｃｏｄｅ２データ、Ｃｏｄｅ２データ、ＴａｂｌｅＮｏデータ及びＴａｂｌｅＮｏデータの順で６バスサイクルＥをデコード単位として転送が行われる（１５０５）。この場合、６バスサイクルで３２バイト（８ワード分）の転送を行うことができる。通常の転送の場合、６バスサイクルで、２４（６ワード分）の転送しかできないので、圧縮率は１．３３倍（８／６）となる。
【００５７】
このようにして転送されたデータを転送先が受信し（図２のステップ２０９）、図２のステップ２０４で別途受信していた同一の変換テーブルを用いてデコードを行って（２１０）、一連のメモリからバースト転送によってデータを読み出す手順を終了する。
【００５８】
次に、図４に示したΔＤデータ４０４について説明する。
【００５９】
ΔＤデータ４０４は、差分を示すデータとして利用することができる。データ方向の圧縮の場合、ΔＤ＝“１”は先のデータとの差分を示し、ΔＤ＝“０”は差分データでない事を示すように設定する。アドレス方向の圧縮の場合、ΔＤ＝“１”はビットスライスの先のデータとの差分を示し、ΔＤ＝“０”はそうでない事を示すように設定する。
【００６０】
例えば、データ方向の圧縮の場合、先のデータが“０００００００１”で、次のデータが“１１１００１００”とする。この場合、先のデータとの差分は、“０００００００１−１１１００１００＝０００１１１０１”となる。データ“１１１００１００”は、図４の変換テーブルＧｒ１〜Ｇｒ４には存在しないが、差分データ“０００１１１０１”は存在する。したがって、“１１１００１００”を変換せずに転送する代わりに、差分データ“０００１１１０１”を“１１１０１”＋ΔＤ（“１”）として転送する（第１変換データ４０２利用の場合）。
【００６１】
また、ΔＤデータ４０４を、反転を示すデータとして利用することができる。この場合、ΔＤ＝“１”は反転データであることを示し、ΔＤ＝“０”は非反転データであることを示すように設定する。
【００６２】
例えば、データが“１１１１１１１０”の場合、その反転データは、“０００００００１”となる。データ“１１１１１１１０”は、図４の変換テーブルＧｒ１〜Ｇｒ４には存在しないが、反転データ“０００００００１”は存在する。したがって、データ“１１１１１１１０”を変換せずに転送する代わりに、反転データ“０００００００１”を“１０００１”＋ΔＤ（“１”）として転送する（第１変換データ４０２利用の場合）。
【００６３】
このように第１変換データ４０２又は第２変換データ４０３に、ΔＤデータ４０４を併用することによって、変換テーブル以外のデータも圧縮して転送することが可能となる。なお、ΔＤデータ４０４を利用する場合には、ΔＤデータ４０４用の３２ビットデータバス用意して、通常のデータバスと並列に設けることが好ましい（図１のΔＤ用データバス１０６参照）。
【００６４】
図１６に、ΔＤを利用し、データ方向に圧縮した場合の転送のタイミングチャートを示す。図に示す様に、ここではコア部分クロック１６０１は、バスクロック１６０２の２倍であるものとする。
【００６５】
第１変換データ４０２を用いた場合には（図７〜９参照）、Ｃｏｄｅ１データ、ＴａｂｌｅＮｏデータ、ＴａｂｌｅＮｏデータ、及びＴａｂｌｅデータの順で４バスサイクルＡをデコード単位として転送が行われる（１６０３）。ΔＤデータ４０４は、Ｔａｂｌｅデータの転送タイミングに合わせて、転送される（１６０４）。
【００６６】
第２変換データ４０３を用いた場合には（図１０参照）、Ｃｏｄｅ２データ及びＴａｂｌｅデータ／ＴａｂｌｅＮｏデータの順で２バスサイクルＢをデコード単位として転送が行われる（１６０５）。ΔＤデータ４０４は、Ｔａｂｌｅデータ／ＴａｂｌｅＮｏデータの転送タイミングに合わせて、転送される（１６０６）。
【００６７】
この場合、８ビットを２バスサイクルの３ビット固定で転送することができるので、２バスサイクルで１０バイト（２．５ワード分）の転送を行うことができる。なお、前述したように、３２ビットの末尾の２ビットは利用することができない。通常の転送の場合、２バスサイクルで、８バイト分の転送しかできないので、圧縮率は１．２５倍（１０／８）となる。
【００６８】
（付記１）コアクロックで動作するコア部分とメモリとの間を前記コアクロックより遅いバスクロックで動作するデータバスを用いてデータ転送を行うデータ転送方法において、
前記メモリ上にマッピングされた一連のデータを抽出し、
前記抽出されたデータを変換テーブルを用いて変換データに変換し、前記変換テーブルは、前記抽出されたデータと同じパターンのデータを、変換されたか否かを表すテーブルデータ、前記パターンが属するグループを示すテーブル番号データ、及び前記グループ内での前記パターンの出現頻度に応じてビット数が変化する符号データを有する変換データに変換するためのテーブルであり、
前記変換データを前記データバスを用いて転送することを特徴とするデータ転送方法。
【００６９】
（付記２）コアクロックで動作するコア部分とメモリとの間を前記コアクロックより遅いバスクロックで動作するデータバスを用いてデータ転送を行うデータ転送方法において、
前記メモリ上にマッピングされた一連のデータを抽出し、
前記抽出されたデータを変換テーブルを用いて変換データに変換し、前記変換テーブルは、前記抽出されたデータと同じパターンのデータを、変換されたか否かを表すテーブルデータ、前記パターンが属するグループを示すテーブル番号データ、及び前記パターンを示す固定ビット数の符号データを有する変換データに変換するためのテーブルであり、
前記変換データを前記データバスを用いて転送することを特徴とするデータ転送方法。
【００７０】
（付記３）前記変換データの転送先では、前記変換テーブルと同一の変換テーブルを用いて、前記変換データをデコードする１又は２に記載のデータ転送方法。
【００７１】
（付記４）前記変換データを、前記テーブルデータのみを転送するバスサイクル、前記テーブル番号データのみを転送するバスサイクル及び前記符号データのみを転送するバスサイクルに分けて前記データバスによって転送する１又は２に記載のデータ転送方法。
【００７２】
（付記５）前記変換テーブルは、前記メモリ上のマッピングされているデータが前記メモリに書き込まれる際に、前記メモリ上のマッピングされているデータの出現頻度に応じて作成される１又は２に記載のデータ転送方法。
【００７３】
（付記６）前記変換テーブルは、前記抽出されたデータと同じパターンのデータを、変換されたか否かを表すテーブルデータ、前記パターンが属するグループを示すテーブル番号データ、前記グループ内での前記パターンの出現頻度に応じてビット数が変化する符号データ、及び制御データを有する変換データに変換するために用いられる１又は２に記載のデータ転送方法。
【００７４】
（付記７）前記制御データは、前記抽出されたデータと他のデータとの差分又は前記抽出されたデータの反転を示す６に記載のデータ転送方法。
【００７５】
（付記８）前記変換テーブルは、複数種類の変換テーブルを含み、前記メモリ上のマッピングされているデータに応じて、変換テーブルの種類を切替えてデータの変換を行う１又は２に記載のデータ転送方法。
【００７６】
（付記９）前記一連のデータは、前記メモリ上のデータ方向に配置されたデータから構成される１〜８の何れか一項に記載のデータ転送方法。
【００７７】
（付記１０）前記一連のデータは、前記メモリ上のアドレス方向に配置されたビットスライスデータから構成される１〜８の何れか一項に記載のデータ転送方法。
【００７８】
【発明の効果】
このように、本発明に従った転送方法によれば、転送回数を最大で２分の１にすることができるため、物量及び消費電力を減少させることが可能となった。
【００７９】
また、本発明に従った転送方法によれば、データ転送レートが飛躍的に上がるため、ＬＳＩに適用した場合には、バスによる制約を減少することができるので、ＬＳＩの性能を向上させることが可能となった。
【００８０】
さらに、本発明に従った転送方法によれば、バス占有時間が減少するため、バスにつながるブロック又はデバイスがバスを使用するために待つ時間が減少し、ＬＳＩ全体の性能を向上させることが可能となった。
【図面の簡単な説明】
【図１】データバスによる接続例を示す図である。
【図２】本発明に係るデータ転送の一例のフローを示す図である。
【図３】メモリマップの概念図である。
【図４】変換テーブルの一例を示す図である。
【図５】変換テーブルを作成するための概念図である。
【図６】データの出現頻度の一例を示す図である。
【図７】データ方向への圧縮の場合の転送データフォーマットの一例を示す図である。
【図８】データ方向への圧縮の場合の転送データフォーマットの一例における、非変換データ混在を示す図である。
【図９】データ方向への圧縮の場合の転送データフォーマットの一例における、データ境界にまたがった場合を示す図である。
【図１０】データ方向への圧縮の場合の転送データフォーマットの他の例を示す図である。
【図１１】データ方向への圧縮の場合の転送データフォーマットの他の例における、非変換データ混在及びデータ境界にまたがった場合を示す図である。
【図１２】アドレス方向への圧縮の場合の転送データフォーマットの一例を示す図である。
【図１３】アドレス方向への圧縮の場合の転送データフォーマットの他の例を示す図である。
【図１４】データ方向への圧縮の場合のデータ転送のタイミングチャートを示す図である。
【図１５】アドレス方向への圧縮の場合のデータ転送のタイミングチャートを示す図である。
【図１６】ΔＤデータを使用した場合のデータ転送のタイミングチャートを示す図である。
【符号の説明】
１０１…コア部分
１０２…メモリ
１０３…バスブロック
１０５…３２ビットデータバス
１０６…ΔＤ用データバス
【図１】
2004246694.tif 000003
【図２】
2004246694.tif 000004
【図３】
2004246694.tif 000005
【図４】
2004246694.tif 000006
【図５】
2004246694.tif 000007
【図６】
2004246694.tif 000008
【図７】
2004246694.tif 000009
【図８】
2004246694.tif 000010
【図９】
2004246694.tif 000011
【図１０】
2004246694.tif 000012
【図１１】
2004246694.tif 000013
【図１２】
2004246694.tif 000014
【図１３】
2004246694.tif 000015
【図１４】
2004246694.tif 000016
【図１５】
2004246694.tif 000017
【図１６】
2004246694.tif 000018