(57)【要約】【課題】複数の多種案アドレシングモードを設定できるようにすることで、効率的なメモリアクセスをサポートできるようにしたデータ転送システム及び方法を提供する。【解決手段】アドレシングモードとして、リニアモードと、２Ｄモードと、サーキュラモードとが設定できる。リニアモードは、バイトカウントで指定されるアクセス数のデータをスタートアドレスで指定された位置から順にアクセスする。ジャンプのパラメータは、ＭＰＥＧの画像処理においてマクロブロック単位のデータをアクセスするときに、ブロックベースのマッピングをするのに利用できる。２Ｄモードでは、二次元ブロックベースのアクセスが可能となる。サーキュラモードでは、バイトカウントで指定されるアクセス数のデータを、巡回的にアクセスできる。サーキュラモードは、ライン毎のデータをアクセスするのに用いられる。【選択図】　　　　図４
2004013389.tif 000002
【特許請求の範囲】
【請求項１】
複数のクライアントデバイスと、
上記複数のクライアントデバイスで共用されるメモリと、
上記メモリを制御するメモリ制御手段と、
上記複数のクライアントデバイスと上記メモリ制御手段との間を結ぶバスとを有し、
上記複数のクライアントデバイスは、上記メモリをアクセスする際には、上記バスを介して上記リソース制御手段にリクエストを送信し、
上記リクエストにはアドレスモードが含められ、複数のアドレスモードが設定できるようにしたデータ転送システム。
【請求項２】
上記メモリは、所定のデータ長のワードを単位としてリード／ライトされるようにした請求項１に記載のデータ転送システム。
【請求項３】
上記メモリは、ＳＤＲ又はＤＤＲのＳＤＲＡＭである請求項２に記載のデータ転送システム。
【請求項４】
上記リクエストは、パケット化されており、上記パケットのヘッダのワードに、上記スタートアドレスと、アドレシングモードと、パラメータが含められるようにした請求項１に記載のデータ転送システム。
【請求項５】
上記アドレスモードはリニアモードであり、上記リニアモードでは、スタートアドレスと、アクセスカウントのパラメータとが指定され、上記スタートアドレスからアクセスカウントに達するまで、アドレスが順にアクセスされるようにした請求項１に記載のデータ転送システム。
【請求項６】
上記リニアモードでは、更に、ジャンプのパラメータが指定され、ワードの境界で上記ジャンプで指定されるアドレスだけジャンプしてアクセスされるようにした請求項５に記載のデータ転送システム。
【請求項７】
上記ジャンプのパラメータは、正負の方向に設定できるようにした請求項６に記載のデータ転送システム。
【請求項８】
上記アドレスモードは２次元モードであり、上記二次元モードでは、スタートアドレスと、ロウ方向のパラメータと、カラム方向のパラメータとが指定され、二次元のアドレスがアクセスされるようにした請求項１に記載のデータ転送システム。
【請求項９】
上記二次元モードでは、更に、ジャンプのパラメータが指定され、ワードの境界で上記ジャンプで指定されるアドレスだけジャンプしてアクセスされるようにした請求項８に記載のデータ転送システム。
【請求項１０】
上記アドレスモードはサーキュラモードであり、上記サーキュラモードでは、スタートアドレスと、アクセスカウントのパラメータとが指定され、上記スタートアドレスからアクセスカウントに達するまで、エンドアドレスがスタートアドレスに戻るように、アドレスが巡回的にアクセスされるようにした請求項１に記載のデータ転送システム。
【請求項１１】
複数のクライアントデバイスと、上記複数のクライアントデバイスで共用されるメモリと、上記メモリを制御するメモリ制御手段と、上記複数のクライアントデバイスと上記メモリ制御手段との間を結ぶバスとの間のデータ転送方法であって、
上記複数のクライアントデバイスは、上記メモリをアクセスする際には、上記バスを介して上記リソース制御手段にリクエストを送信し、
上記リクエストにはアドレスモードが含められ、複数のアドレスモードが設定できるようにしたデータ転送方法。
【請求項１２】
上記リクエストは、パケット化されており、上記パケットのヘッダのワードに、上記スタートアドレスと、アドレシングモードと、パラメータが含められるようにした請求項１１に記載のデータ転送方法。
【請求項１３】
上記アドレスモードはリニアモードであり、上記リニアモードでは、スタートアドレスと、アクセスカウントのパラメータとが指定され、上記スタートアドレスからアクセスカウントに達するまで、アドレスが順にアクセスされるようにした請求項１１に記載のデータ転送方法。
【請求項１４】
上記リニアモードでは、更に、ジャンプのパラメータが指定され、ワードの境界で上記ジャンプで指定されるアドレスだけジャンプしてアクセスされるようにした請求項１３に記載のデータ転送方法。
【請求項１５】
上記ジャンプのパラメータは、正負の方向に設定できるようにした請求項１４に記載のデータ転送方法。
【請求項１６】
上記アドレスモードは２次元モードであり、上記二次元モードでは、スタートアドレスと、ロウ方向のパラメータと、カラム方向のパラメータとが指定され、二次元のアドレスがアクセスされるようにした請求項１１に記載のデータ転送方法。
【請求項１７】
上記二次元モードでは、更に、ジャンプのパラメータが指定され、ワードの境界で上記ジャンプで指定されるアドレスだけジャンプしてアクセスされるようにした請求項１６に記載のデータ転送方法。
【請求項１８】
上記アドレスモードはサーキュラモードであり、上記サーキュラモードでは、スタートアドレスと、アクセスカウントのパラメータとが指定され、上記スタートアドレスからアクセスカウントに達するまで、エンドアドレスがスタートアドレスに戻るように、アドレスが巡回的にアクセスされるようにした請求項１１に記載のデータ転送方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、複数のクライアントデバイスで１つのメモリを共用するようにしたデータ転送システム及びデータ転送システムのデータ転送方法に関するもので、特に、メモリアクセスの効率化に係わる。
【０００２】
【従来の技術】
例えば、ディジタル衛星放送等で使われているＭＰＥＧ（Ｍｏｖｉｎｇ　Ｐｉｃｔｕｒｅ　Ｃｏｄｉｎｇ　Ｅｘｐｅｒｔｓ　Ｇｒｏｕｐ）２のトランスポートストリームを処理し、このトランスポートストリームからビデオパケットやオーディオパケットを分離し、デコードされたビデオデータに対して、画像処理を行ったり、ＯＳＤ（Ｏｎ　Ｓｃｒｅｅｎ　Ｄｉｓｐｌａｙ）画像を重畳したりするような画像処理チップの開発が進められている。このような画像処理チップには、種々の画像処理を行うためのグラフィックスエンジン、任意のソース矩形領域の画像をデスティネーション領域にコピーするためのＢｉｔＢＬＴ（Ｂｉｔ　Ｂｌｏｃｋ　Ｔｒａｎｓｆｅｒ）エンジン、静止画処理をするためのＪＰＥＧ（Ｊｏｉｎｔ　Ｐｈｏｔｏｇｒａｐｈｉｃ　Ｅｘｐｅｒｔｓ　Ｇｒｏｕｐ）エンジン、ＯＳＤ画面を生成して重畳したり、画面の拡大、縮小を行うディスプレイプロセッサ等が配される。これらのプロセッサは、メモリバスを介してメモリコントローラと接続されており、これらのプロセッサで、メモリが共用されている。
【０００３】
各プロセッサがメモリバスを介してメモリコントローラにトランザクションを要求する場合、従来では、指定されたアドレスから連続的なアドレスへのアクセスしかサポートされていない。すなわち、各プロセッサからメモリコントローラに対するリクエストは、ライトかリードの何れかである。従来のライトのリクエストのプロトコルは、スタートアドレスから指定されたカウントだけメモリにデータを書き込めというものであり、また、リードのプロトコルは、スタートアドレスから指定されたカウントだけメモリからデータを読み出せというものである。このプロトコルでは、スタートアドレスから指定されたアクセスカウントだけ連続的なアドレスにアクセスするものである。
【０００４】
【発明が解決しようとする課題】
メモリバスプロトコルの概念を、多数の異なるパラメータとされた非連続的なアクセスパターンのサポートを含むように、メモリバスプロトコルの概念を拡張することにより、バスプロトコルの利用性を強化できる。
【０００５】
多彩なアクセスパターンをサポートすることは、バスとメモリコントローラとの双方を含めて、メモリバス全体の効率を増加させる。また、マルチクライアントシステムでは、アービトレーションの作業が単純化される。なぜなら、クライアントが必要とされるアービトレーションの巡回の数が著しく削減されるからである。
【０００６】
更に、非連続なデータのアクセスを行うクライアントについては、クライアントの設計の複雑さは、削減される。なぜなら、データオブジェクトは、自然な単位で要求できるからである。これに対して、従来のメモリプロトコル上では、非連続のデータアクセスの場合に、一回に１つのデータワードのデータアクセスであり、非効率的である。
【０００７】
そして、１以上のクライアントが同じコマンドを使う場合に、メモリ中で、シングルインスタンスのクライアントから、同じアドレス計算ロジックのマルチインスタンスに置き換えることにより、チップの全体領域が削減される
【０００８】
したがって、この発明の目的は、上述の課題を解決することであり、複数の多種案アドレシングモードを設定できるようにすることで、効率的なメモリアクセスをサポートできるようにしたデータ転送システム及び方法を提供することにある。
【０００９】
【課題を解決するための手段】
この発明は、複数のクライアントデバイスと、
複数のクライアントデバイスで共用されるメモリと、
メモリを制御するメモリ制御手段と、
複数のクライアントデバイスとメモリ制御手段との間を結ぶバスとを有し、
複数のクライアントデバイスは、メモリをアクセスする際には、バスを介してリソース制御手段にリクエストを送信し、
リクエストにはアドレスモードが含められ、複数のアドレスモードが設定できるようにしたデータ転送システムである。
【００１０】
この発明は、複数のクライアントデバイスと、複数のクライアントデバイスで共用されるメモリと、メモリを制御するメモリ制御手段と、複数のクライアントデバイスとメモリ制御手段との間を結ぶバスとの間のデータ転送方法であって、
複数のクライアントデバイスは、メモリをアクセスする際には、バスを介してリソース制御手段にリクエストを送信し、
リクエストにはアドレスモードが含められ、複数のアドレスモードが設定できるようにしたデータ転送方法である。
【００１１】
この発明では、アドレシングモードとして、リニアモードと、２Ｄモードと、サーキュラモードとが設定できる。
【００１２】
リニアモードでは、パラメータとして、ジャンプ（Ｊｕｍｐ）とバイトカウント（Ｂｙｔｅ　Ｃｏｕｎｔ）が指定される。リニアモードは、バイトカウント（Ｂｙｔｅ　Ｃｏｕｎｔ）で指定されるアクセス数のデータを、スタートアドレスで指定された位置から順にアクセスするもので、最も標準的なアドレッシングモードである。
【００１３】
ジャンプ（Ｊｕｍｐ）は、２の補数の数値でジャンプするワード（６４ビット）を指定するものである。ジャンプは、ワードの境界で行われる。例えば、ジャンプ（Ｊｕｍｐ＝２ワード）にセットすると、ワードの境界で、２ワードジャンプしてアドレスが進められる。負の値を指定することで、逆方法のアドレシングも可能である。ジャンプのパラメータは、例えば、ＭＰＥＧの画像処理においてマクロブロック単位のデータをアクセスするときに、ブロックベースのマッピングをするのに利用できる。
【００１４】
２Ｄモードでは、パラメータとして、ジャンプ（Ｊｕｍｐ）と、高さ（Ｈｉｇｈｔ）と、カラム（Ｃｏｌ）と、ロウ（Ｒｏｗ）とが指定できる。２Ｄモードは、二次元ブロックベースのアクセスを可能としたもので、ロウとカラムとで二次元にアドレスを指定できる。２Ｄモードは、ＭＰＥＧで動きベクトルを求める際に、サーチブロックやリファレンスブロックを設定するのに利用できる。
【００１５】
サーキュラモードは、パラメータとして、バイトカウント（Ｂｙｔｅ　Ｃｏｕｎｔ）が指定される。サーキュラモードでは、バイトカウント（Ｂｙｔｅ　Ｃｏｕｎｔ）で指定されるアクセス数のデータを、巡回的にアクセスするものである。すなわち、サーキュラモードでは、バイトカウント（Ｂｙｔｅ　Ｃｏｕｎｔ）が指定される範囲内で、エンドアドレスがスタートアドレスに戻ってくるような巡回的なアドレシングが行われる。サーキュラモードは、例えば、ライン毎のデータをアクセスするのに用いることができる。
【００１６】
【発明の実施の形態】
以下、この発明の実施の形態について図面を参照しながら説明する。図１は、この発明が適用されたシステムの全体構成を説明するものである。
【００１７】
図１において、クライアントデバイス１１、１２、１３は、共用のリソースであるメモリ１５をアクセスするデバイスである。例えば、信号処理チップを構成するシステムにおいては、クライアントデバイス１１、１２、１３は、ＢｉｔＢＬＴ（Ｂｉｔ　Ｂｌｏｃｋ　Ｔｒａｎｓｆｅｒ）エンジン、ＪＰＥＧ（Ｊｏｉｎｔ　Ｐｈｏｔｏｇｒａｐｈｉｃ　Ｅｘｐｅｒｔｓ　Ｇｒｏｕｐ）エンジン等のプロセッサである。これらのクライアントデバイス１１、１２、１３は、ＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ　Ｆｉｒｓｔ−Ｏｕｔ）メモリ２１Ａ、２１Ｂ、２１Ｃ及びＦＩＦＯメモリ２２Ａ、２２Ｂ、２２Ｃをそれぞれ介して、メモリバス１０に接続される。また、メモリバス１０には、ＦＩＦＯメモリ２３及び２４を介して、メモリコントローラ１４が接続される。メモリコントローラ１４は、メモリ１５のリード／ライトを制御するものである。
【００１８】
メモリ１５は、複数のクライアントデバイス１１、１２、１３で共通に利用可能なリソースである。メモリ１５としては、例えば、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ　Ｄｙｎａｍｉｃ　Ｒａｎｄｏｍ　Ａｃｃｅｓｓ　Ｍｅｍｏｒｙ）が用いられる。ＳＤＲＡＭは、クロックに同期した連続的なデータ転送が可能であり、バースト転送を指定すると、指定したデータ数のデータ転送を１クロック単位で連続して行うことができる。ここでは、ＳＤＲＡＭの構成とされたメモリ１５は、１クロックで６４ビットのデータを転送することができる。ＳＤＲＡＭは、ＳＤＲ（Ｄｉｎｇｌｅ　Ｄａｔａ　Ｒａｔｅ）でも、ＤＤＲ（Ｄｏｕｂｌｅ　Ｄａｔａ　Ｒａｔｅ）でも良い。また、メモリ１５としては、ＤｉｒｅｃｔＲＤＲＡＭを用いるようにしても良い。
【００１９】
メモリバス１０は、クライアントデバイス１１、１２、１３と、メモリコントローラ１４との間で、データの転送を行うバスである。メモリバス１０は、クライアントデバイス１１、１２、１３側からメモリコントローラ１４側にデータを送る送信バス１０Ａと、メモリコントローラ１４側からのデータをクライアントデバイス１１、１２、１３側で受信する受信バス１０Ｂとからなる。
【００２０】
各クライアントデバイス１１、１２、１３とメモリバス１０との間には、ＦＩＦＯメモリ２１Ａ、２１Ｂ、２１Ｃ及びＦＩＦＯメモリ２２Ａ、２２Ｂ、２２Ｃが設けられる。これらのＦＩＦＯメモリ２１Ａ、２１Ｂ、２１Ｃ、ＦＩＦＯメモリ２２Ａ、２２Ｂ、２２Ｃは、バッファとして設けられる。各クライアントデバイス１１、１２、１３とメモリバス１０との間には、ＦＩＦＯメモリ２１Ａ、２１Ｂ、２１Ｃ及びＦＩＦＯメモリ２２Ａ、２２Ｂ、２２Ｃが設けられているため、各クライアントデバイス１１、１２、１３は、メモリバス１０の転送クロックとは非同期で、リクエストの送信やデータの受信が行える。
【００２１】
また、メモリコントローラ１４とメモリバス１０との間には、ＦＩＦＯメモリ２３及びＦＩＦＯメモリ２４が設けられる。メモリコントローラ１４とメモリバス１０との間には、ＦＩＦＯメモリ２３及びＦＩＦＯメモリ２４が設けられているため、メモリコントローラ１４は、メモリバス１０の転送クロックとは非同期で、リクエストの受信やデータの送信が行える。
【００２２】
各クライアントデバイス１１、１２、１３には、ユニークなデバイスＩＤが割り振られている。各クライアントデバイス１１、１２、１３は、メモリ１５をアクセスする場合には、メモリバス１０の送信バス１０Ａを介して、リクエストを送信する。このリクエストは、パケット構造となっている。
【００２３】
クライアントデバイス１１、１２、１３は、全て、共通のメモリ１５にアクセスすることが可能である。このため、複数のクライアントデバイス１１、１２、１３で、メモリ１５へのリクエストが同時に起こるようなことがあり得る。そこで、クライアントデバイス１１、１２、１３からのリクエストの競合を防ぐために、アービタ１６が設けられる。
【００２４】
クライアントデバイス１１、１２、１３がメモリ１５をアクセスする場合には、まず、アービタ１６にバスの使用権を得るためのリクエストが送られる。アービタ１６は、複数のクライアントデバイスからのリクエストがあった場合には、そのリクエストを調停し、メモリバス１０の使用を許可する１つのクライアントデバイスにのみ、グラントを返す。複数のクライアントデバイス１１、１２、１３のうち、グラントが返されてきたクライアントデバイスのみがメモリ１５をアクセスすることができる。
【００２５】
メモリのライトのリクエストの場合には、クライアントデバイス１１、１２、１３から、ライトのリクエストが送信される。このライトのリクエストが送信バス１０Ａを介して、メモリコントローラ１４に送られる。メモリコントローラ１４により、ライトのリクエストに応じて、クライアントデバイス１１、１２、１３から送られたライトデータがメモリ１５の所望のアドレスに書き込まれる。
【００２６】
メモリのリードのリクエストの場合には、クライアントデバイス１１、１２、１３から、リードのリクエストが送信される。このリードのリクエストが送信バス１０Ａを介して、メモリコントローラ１４に送られる。メモリコントローラ１４で、リードのリクエストに応じて、メモリ１５の所望のアドレスからデータが読み出される。このリードデータがメモリコントローラ１４から、受信バス１０Ｂを介して転送され、リードのリクエストを送信したクライアントデバイス１１、１２、１３で受信される。
【００２７】
図２は、メモリバス１０に転送されるパケットの構成を示すものである。図２に示すように、メモリバス１０に転送されるデータは、ヘッダワードと、データワードと、エンドオブパケットワードとからなるパケット構成とされる。これら、ヘッダと、データと、エンドオブパケットのワードは、６４ビットのデータにフラグ等の制御信号を加えた７２ビットとなっている。
【００２８】
図２Ａ、図２Ｂ、及び図２Ｃは、それぞれ、ヘッダと、データと、エンドオブパケットの各ワードのビットアサインを示すものである。
【００２９】
図２Ａ〜図２Ｃに示すように、各ワードの先頭には、２ビットのフラグが設けられる。フラグは、そのワードが、ヘッダか、データか、エンドオブパケットかを識別するものである。このフラグが例えば、「０１」ならヘッダであり、「１０」ならデータであり、「１１」ならエンドオブパケットである。
【００３０】
図２Ａのヘッダのワードにおいて、フラグの２ビットの次の６ビットは、クライアント側で定義可能とされている。
【００３１】
次の６ビットは、デバイスＩＤである。各クライアントデバイス毎にユニークなデバイス番号が割り振られており、このデバイスＩＤは、ターゲットクライアントデバイスのＩＤを示している。
【００３２】
次の６ビットはモードとなっている。モードは、アドレシングフォーマットと共に、アドレスモードを示している。アドレスモードとしては、リニアモード、２Ｄ（二次元）モード、サーキュラモード等が用意されている。
【００３３】
モードの次の１ビットは、リードかライトかを示している。このビットが例えば「１」ならライトであり、「０」ならリードである。
【００３４】
アドレシングフォーマットの次の２ビットは、将来の拡張のためにリザーブされている。
【００３５】
その次の３０ビットは、スタートアドレスとなっている。スタートアドレスは、リード又はライトするメモリの開始アドレスであり、このアドレスはバイト単位に設定される。
【００３６】
図２Ｂ及び図２Ｃに示すように、データワード及びエンドオブパケットワードでは、２ビットのフラグの次に、８ビットのバイトイネーブルが配置され、次に、６４ビットのデータが配置される。バイトイネーブルは、対応するデータが有効か無効かを示している。
【００３７】
すなわち、１ワードの転送データが６４ビットに満たない場合がある。１ワードの転送データが６４ビットに満たない場合には、１ワードのデータが６４ビットとなるように、図３に示すように、スタッフィングバイトが挿入される。
【００３８】
図３Ａは、６４ビット（８バイト）のうちの下位３バイトがデータで、上位５バイトがスタッフィングバイトの場合を示している。この場合には、図３Ａに示すように、バイトイネーブルの８ビットのうち、下位３ビットは有効であることを示す「１」となり、上位５ビットは、無効データであることを示す「０」となる。
【００３９】
図３Ｂは、６４ビット（８バイト）のうちの上位２バイトがデータで、下位６バイトがスタッフィングバイトの場合を示している。この場合には、図３Ｂに示すように、バイトイネーブルの８ビットのうち、上位２ビットは有効であることを示す「１」となり、下位６ビットは、無効データであることを示す「０」となる。
【００４０】
図４Ａに示すように、ヘッダワード（図２Ａ）には、モードと、アドレシングフォーマットとが設けられ、このモードとアドレシングフォーマットは、アドレスモードを示している。アドレスモードとしては、リニアモード、２Ｄモード、サーキュラモード等が用意されている。
【００４１】
図４Ｂから図４Ｄは、各アドレスモードを示すものである。リニアモードでは、図４Ｂに示すように、モードの４ビットが「００００」となる。
【００４２】
リニアモードでは、パラメータとして、ジャンプ（Ｊｕｍｐ）とバイトカウント（Ｂｙｔｅ　Ｃｏｕｎｔ）が指定される。リニアモードは、バイトカウント（Ｂｙｔｅ　Ｃｏｕｎｔ）で指定されるアクセス数のデータを、スタートアドレスで指定された位置から順にアクセスするもので、最も標準的なアドレッシングモードである。
【００４３】
ジャンプ（Ｊｕｍｐ）は、２の補数の数値でジャンプするワード（６４ビット）を指定するものである。ジャンプは、ワードの境界で行われる。例えば、ジャンプ（Ｊｕｍｐ＝２ワード）にセットすると、ワードの境界で、２ワードジャンプしてアドレスが進められる。負の値を指定することで、逆方法のアドレシングも可能である。バイトカウント（Ｂｙｔｅ　Ｃｏｕｎｔ）は、必要なバイト数をセットするものである。
【００４４】
２Ｄモードでは、図４Ｃに示すように、モードの４ビットが「０００１」となる。２Ｄモードでは、パラメータとして、ジャンプ（Ｊｕｍｐ）と、高さ（Ｈｅｉｇｈｔ）と、カラム（Ｃｏｌ）と、ロウ（Ｒｏｗ）とが指定できる。２Ｄモードは、二次元ブロックベースのアクセスを可能としたもので、ロウとカラムとで二次元にアドレスを指定できる。
【００４５】
サーキュラモードでは、図４Ｄに示すように、モードの４ビットが「００１０」となる。サーキュラモードでは、パラメータとして、バイトカウント（Ｂｙｔｅ　Ｃｏｕｎｔ）が指定される。サーキュラモードは、バイトカウント（Ｂｙｔｅ　Ｃｏｕｎｔ）で指定されるアクセス数のデータを、巡回的にアクセスするものである。すなわち、サーキュラモードでは、バイトカウント（Ｂｙｔｅ　Ｃｏｕｎｔ）が指定される範囲内で、エンドアドレスがスタートアドレスに戻ってくるような巡回的なアドレシングが行われる。
【００４６】
図５は、リニアモードで、スタートアドレスが「０５ｈ（ｈは１６進数）」（Ｓｔａｒｔ　Ａｄｄｒｅｓｓ＝５ｈ）、ジャンプが「２ワード」（Ｊｕｍｐ＝２ｗｏｒｄ）、バイトカウントが「３１」（Ｂｙｔｅ　Ｃｏｕｎｔ＝１Ｆｈ）が指定されたときのアクセスを示すものである。これは、メモリ上のアドレス「５ｈ」から３１バイト分をアクセスし、ワードとワードの境界で、２ワード分ジャンプするようなアクセスを示している。
【００４７】
図５に示すように、最初に、「０５ｈ」から「０７ｈ」の３バイトのデータが順にアクセスされる。ワードとワードの境界となる「０７ｈ」からは、２ワードジャンプされ、「１０ｈ」から「１７ｈ」の１ワードがアクセスされ、ワードの境界で２ワードジャンプされ、「２０ｈ」から「２７ｈ」の１ワードがアクセスされ、ワードの境界で２ワードジャンプされ、「３０ｈ」から「３７ｈ」の１ワードがアクセスされ、ワードの境界で２ワードジャンプされ、「４０ｈ」から「４３ｈ」の４バイトのデータがアクセスされる。これにより、アドレス「０５ｈ」から順に、３１バイト分のデータがアクセスされたことになる。
【００４８】
このようにしてアクセスされたデータを読み出すと、図６に示すように、ヘッダのワードＨ１と、データのワードＤ１からＤ４と、エンドオブパケットのワードＤ５とからなるパケットとなる。
【００４９】
図７Ａに示すように、ヘッダのワードＨ１には、ヘッダであることを示すフラグ「０１」が付加される。ヘッダには、図２Ａに示したような各種の情報が記述される。
【００５０】
図７Ｂから図７Ｅに示すように、ワードＤ１からＤ４には、データであることを示すフラグ「１０」が付加される。ワードＤ１には、アドレス「０５ｈ」から「０７ｈ」の３バイトのデータが配置される。なお、３バイトのデータは６４ビットに満たないので、ここには、スタッフィングバイトが挿入される。ワードＤ２には、アドレス「１０ｈ」から「１７ｈ」の６４ビットのデータが配置される。ワードＤ３には、アドレス「２０ｈ」から「２７ｈ」の６４ビットのデータが配置される。ワードＤ４には、アドレス「３０ｈ」から「３７ｈ」の６４ビットのデータが配置される。ワードＤ５には、エンドオブパケットであることを示すフラグ「１１」が付加される。ワードＤ５には、アドレス「４０ｈ」から「４７ｈ」の４バイトのデータが配置される。なお、４バイトのデータは６４ビットに満たないので、ここには、スタッフィングバイトが挿入される。
【００５１】
図８は、リニアモードで、スタートアドレスが「５２ｈ」（Ｓｔａｒｔ　Ａｄｄｒｅｓｓ＝５２ｈ）、ジャンプが「−３ワード」（Ｊｕｍｐ＝−３ｗｏｒｄ）、バイトカウントが「２７」（Ｂｙｔｅ　Ｃｏｕｎｔ＝１Ｂｈ）が指定されたときのアクセスを示すものである。これは、メモリ上のアドレス「５２ｈ」から２７バイト分をアクセスし、ワードとワードの境界で、３ワード分マイナス方向にジャンプするようなアクセスを示している。
【００５２】
図８に示すように、最初に、「５２ｈ」から「５７ｈ」の６バイトのデータが順にアクセスされる。ワードとワードの境界で、３ワードマイナス方向にジャンプされ、「３８ｈ」から「３Ｆｈ」の１ワードがアクセスされ、ワードの境界で３ワードマイナス方向にジャンプされ、「２０ｈ」から「２７ｈ」の１ワードがアクセスされ、ワードの境界で３ワードマイナス方向にジャンプされ、「０８ｈ」から「０Ｃｈ」の５バイトのデータがアクセスされる。これにより、アドレス「５２ｈ」から順に、２７バイト分のデータがアクセスされたことになる。
【００５３】
このようにしてアクセスされたデータを読み出すと、図９に示すように、ヘッダのワードＨ１１と、データのワードＤ１１からＤ１３と、エンドオブパケットのワードＤ１４とからなるパケットとなる。
【００５４】
図１０Ａに示すように、ヘッダのワードＨ１１には、ヘッダワードであることを示すフラグ「０１」が付加される。フラグには、図２Ａに示したような各種の情報が記述される。
【００５５】
図１０Ｂから図１０Ｄに示すように、ワードＤ１１からＤ１３には、データワードであることを示すフラグ「１０」が付加される。ワードＤ１１には、アドレス「８２ｈ」から「８７ｈ」の６バイトのデータが配置される。なお、６バイトのデータは６４ビットに満たないので、ここには、スタッフィングバイトが挿入される。ワードＤ１２には、アドレス「３８ｈ」から「３Ｆｈ」の６４ビットのデータが配置される。ワードＤ１３には、アドレス「２０ｈ」から「２７ｈ」の６４ビットのデータが配置される。ワードＤ１４には、エンドオブパケットのワードであることを示すフラグ「１１」が付加される。ワードＤ１４には、アドレス「０８ｈ」から「０Ｃｈ」の４バイトのデータが配置される。なお、４バイトのデータは６４ビットに満たないので、ここには、スタッフィングバイトが挿入される。
【００５６】
このように、リニアモードでは、バイトカウント（Ｂｙｔｅ　Ｃｏｕｎｔ）で示されるアクセス数だけ、スタートアドレスから順にアドレスがアクセスされる。また、この例では、ジャンプ（Ｊｕｍｐ）のパラメータが正負の方向に設定できる。ジャンプ（Ｊｕｍｐ）のパラメータは、例えば、ＭＰＥＧの画像処理においてマクロブロック単位のデータをアクセスするときに、ブロックベースのマッピングをするのに利用できる。
【００５７】
すなわち、図１１に示すように、マクロブロック（ＭＢ）の高さは「１６」である。ジャンプ（Ｊｕｍｐ）に「１６」という値をセットすると、ワードの境界で、（８×１６）バイトアドレスだけジャンプされ、結果的に、ライン方向に連続的なイメージをアクセスすることができる。
【００５８】
図１２は、２Ｄモードでのアクセスを示すものである。２Ｄモードは、ブロックベースマッピングのメモリアクセスを行うためのアドレスモードである。２Ｄモードでは、図１２に示すように、（Ｒｏｗ×Ｃｏｌ）で表されるバイト数だけアクセスされる。２Ｄモードは、ＭＰＥＧで動きベクトルを求める際に、サーチブロックやリファレンスブロックを設定するのに利用できる。
【００５９】
図１３は、サーキュラモードのアクセスを示すものである。サーキュラモードは、スタートアドレス（Ｓｔａｒｔ　Ａｄｄｒｅｓｓ）で指定された位置から、バイトカウント（Ｂｙｔｅ　Ｃｏｕｎｔ）で指定されるデータ量のデータを、巡回的にアクセスするものである。
【００６０】
すなわち、サーキュラモードは、バイトカウント（Ｂｙｔｅ　Ｃｏｕｎｔ）で指定される範囲を次の式で表される順番でアクセスするものである。
ｆｏｒ（ｉ＝０；ｉ＜ＢｙｔｅＣｏｕｎｔ；ｉ＋＋）
Ａｄｄｒｅｓｓ＿ｉ＝ｔｒｕｎｃ（ＳｔａｒｔＡｄｄｒｅｓｓ，ＢｙｔｅＣｏｕｎｔ）＋ｍｏｄ（ＳｔａｒｔＡｄｄｒｅｓｓ＋ｉ，ＢｙｔｅＣｏｕｎｔ）ｔｒｕｎｃ（Ａ，Ｂ）：Ａに最も近いＢの倍数
ｍｏｄ（Ａ，Ｂ）：ＡをＢで割ったときの剰余
ｉはバイト単位
【００６１】
つまり、スタートアドレスに最も近いバイトカウントの倍数の位置を起点として、バイトカウントのアクセス数だけ、バイトカウントの剰余算で回りながら、スタートアドレスから順に、アクセスするものである。したがって、エンドアドレスは、スタートアドレスに戻るようになる。
【００６２】
例えば、図１３に示すように、バイトカウントを「３２」バイト（Ｂｙｔｅ　Ｃｏｕｎｔ＝２０ｈ）とし、スタートアドレスを「３４ｈ」とすると、
Ｂｙｔｅ　Ｃｏｕｎｔ＝２０ｈ
Ｓｔａｒｔ　Ａｄｄｒｅｓｓ＝３４ｈ
スタートアドレス（Ｓｔａｒｔ　Ａｄｄｒｅｓｓ）では、
2004013389.tif 000003
となり、アドレス「３４ｈ」からアクセスが開始される。
【００６３】
１バイト進むと
2004013389.tif 000004
となり、以下、
2004013389.tif 000005
となり、アドレス「３５ｈ」、「３６ｈ」、「３７ｈ」がアクセスされる。
【００６４】
アドレス「３７ｈ」がアクセスされると、次のワードに移り、
2004013389.tif 000006
となり、アドレス「３８ｈ」、「３９ｈ」、「３Ａｈ」、「３Ｂｈ」、「３Ｃｈ」、「３Ｄｈ」、「３Ｅｈ」、「３Ｆｈ」がアクセスされる。アドレス「３８ｈ」から「３Ｆｈ」の６４ビットがアクセスされると、次のワードに移る。
【００６５】
次のアドレスでは、
2004013389.tif 000007
＝２０ｈ＋０＝２０ｈとなり、アドレス「２０ｈ」に戻る。それから、
【００６６】
2004013389.tif 000008
となり、アドレス「２１ｈ」、「２２ｈ」、「２３ｈ」、「２４ｈ」、「２５ｈ」、「２６ｈ」「２７ｈ」がアクセスされる。アドレス「２０ｈ」から「２７ｈ」の６４ビットがアクセスされると、次のワードに移る。
【００６７】
次からのアドレスでは、
2004013389.tif 000009
となり、アドレス「２８ｈ」、「２９ｈ」、「２Ａｈ」、「２Ｂｈ」、「２Ｃｈ」、「２Ｄｈ」「２Ｅｈ」、「２Ｆｈ」がアクセスされる。アドレス「２８ｈ」から「２Ｆｈ」の６４ビットがアクセスされると、次のワードに移る。
【００６８】
次からのアドレスでは、
2004013389.tif 000010
となり、アドレス「３０ｈ」、「３１ｈ」、「３２ｈ」、「３３ｈ」がアクセスされる。
【００６９】
このようにしてアクセスされたデータを読み出すと、図１４に示すように、ヘッダのワードＨ２１と、データのワードＤ２１からＤ２４と、エンドオブパケットのワードＤ２５とからなるパケットとなる。
【００７０】
図１５Ａに示すように、ヘッダには、ヘッダのワードであることを示すフラグ「０１」が付加される。ヘッダには、図２Ａに示したような各種の情報が記述される。
【００７１】
図１５Ｂから図１５Ｅに示すように、ワードＤ１１からＤ１３には、データのワードであることを示すフラグ「１０」が付加される。ワードＤ２１には、アドレス「３４ｈ」から「３７ｈ」の４バイトのデータが配置される。なお、４バイトのデータは６４ビットに満たないので、ここには、スタッフィングバイトが挿入される。ワードＤ２２には、アドレス「３８ｈ」から「３Ｆｈ」の６４ビットのデータが配置される。ワードＤ２３には、アドレス「２０ｈ」から「２７ｈ」の６４ビットのデータが配置される。ワードＤ２４には、アドレス「２８ｈ」から「２Ｆｈ」の６４ビットのデータが配置される。ワードＤ２５には、エンドオブパケットのワードであることを示すフラグ「１１」が付加される。ワードＤ２５には、アドレス「３０ｈ」から「３３ｈ」の４バイトのデータが配置される。なお、４バイトのデータは６４ビットに満たないので、ここには、スタッフィングバイトが挿入される。
【００７２】
このサーキュラモードは、例えば、ライン毎のデータをアクセスするのに用いることができる。例えば、図１６に示すように、１ラインのデータをバイトカウントのデータとすると、そのラインのデータを一度にアクセスすることができる。これは、各ラインのデータをキャッシュレジスタに取り込みようなときに利用できる。
【００７３】
このように、メモリバス１０に転送されるデータは、パケット構造となっている。クライアントデバイス１１、１２、１３からメモリコントローラ１４側に送るパケットの種類は、図１７に示すように、ライトリクエストのパケット（図１７Ａ）と、リードリクエストのパケット（図１７Ｂ）との２つに分けられる。
【００７４】
ライトリクエストのパケットは、図１７Ａに示すように、ヘッダのワードと、数ワードの書き込みデータとからなり、最後に、エンドオブパケットのワードが来る。
【００７５】
リードリクエストのパケットは、図１７Ｂに示すように、リードヘッダの１ワードであり、データワードやエンドオブパケットのワードは存在しない。
【００７６】
リードリクエストかライトリクエストかは、パケットの先頭に付加されたヘッダのワードのＲ／Ｗビットにより識別できる（図２Ａ参照）。
【００７７】
メモリコントローラ１４からクライアントデバイス１１、１２、１３側に送られてくるパケットは、クライアントデバイス１１、１２、１３からのリードリクエストに対応してメモリ１５から読み出されてきたリードデータのパケットである。このリードデータのパケットは、図１８に示すように、ヘッダのワードと、数ワードの書き込みデータとからなり、最後に、エンドオブパケットのワードが来ることになる。
【００７８】
図１９に示すように、各クライアントデバイス１１、１２、１３には、ユニークなデバイスＩＤが割り振られる。例えば、図１９に示すように、クライアントデバイス１１には、デバイスＩＤとして（ＩＤ＝０１ｈ）が割り当てられ、クライアントデバイス１２には、デバイスＩＤとして（ＩＤ＝０２ｈ）が割り当てられ、クライアントデバイス１３には、デバイスＩＤとして（ＩＤ＝０３ｈ）が割り当てられる。
【００７９】
図１９Ａは送信バス１０Ａに転送されるワードを示し、図１９Ｂは受信バス１０Ｂに転送されるワードを示す。図１９Ａに示すように、例えば、クライアントデバイス１１が１６バイトのデータをメモリ１５から読み出す要求をしたとすると、クライアントデバイス１１から送信バス１０Ａを介して、リードリクエストのパケットＰ１が送られる。このリードリクエストのパケットＰ１はヘッダのみであり、このヘッダには、デバイスＩＤ（ＩＤ＝０１ｈ）で、バイトカウント（Ｂｙｔｅ　Ｃｏｕｎｔ＝１６）が記述される。
【００８０】
次に、クライアントデバイス１２が８バイトのデータをメモリ１５から読み出す要求をしたとすると、クライアントデバイス１２から送信バス１０Ａを介して、リードリクエストのパケットＰ２が送られる。このリードリクエストのパケットはヘッダのみであり、このヘッダには、デバイスＩＤ（ＩＤ＝０２ｈ）で、バイトカウント（Ｂｙｔｅ　Ｃｏｕｎｔ＝８）が記述される。
【００８１】
次に、クライアントデバイス１３が２４バイトのデータをメモリ１５に書き込む要求をしたとすると、クライアントデバイス１３から送信バス１０Ａを介して、ライトリクエストのパケットＰ３が送られる。このライトリクエストのパケットＰ３は、ヘッダのワードと、これに続く２バイト分のデータのワードと、１ワードのエンドオブパケットのワードからなる。このヘッダには、デバイスＩＤ（ＩＤ＝０３ｈ）で、バイトカウントが（Ｂｙｔｅ　Ｃｏｕｎｔ＝２４）が記述される。
【００８２】
このように、メモリバス１０の送信バス１０Ａには、クライアントデバイス１１、１２、１３から、リード又はライトのリクエストがパケット構造で次々に送られてくる。このリード又はライトのリクエストの各ワードは、送信バス１０Ａから、ＦＩＦＯメモリ２３に一旦読み込まれる。
【００８３】
ＦＩＦＯメモリ２３に読み込まれたワードは、順に、メモリコントローラ１４に送られる。メモリコントローラ１４で、各リクエストに応じて、メモリ１５がアクセスされる。
【００８４】
すなわち、クライアントデバイス１１からのリードリクエストのパケットＰ１に応答して、メモリ１５から所望のアドレスのデータが１６バイト分読み出される。このリードデータは、ヘッダと、それに続く１ワードのデータワードと、１ワードのエンドオブパケットからなるパケットＰ１１にパケット化される。このリードデータのパケットＰ１１は、図２０Ｂに示すように、メモリコントローラ１４から、受信バス１０Ｂを介して送られる。このリードデータのパケットのヘッダには、デバイスＩＤとして（ＩＤ＝０１）が記述される。クライアントデバイス１１では、デバイスＩＤが（ＩＤ＝０１）であることから、自分宛のリードデータであることがわかり、このリードデータのパケットＰ１１がクライアントデバイス１１で受信される。
【００８５】
クライアントデバイス１２からのリードリクエストのパケットＰ２に応答して、メモリ１５から所望のアドレスのデータが８バイト分読み出される。このリードデータは、ヘッダと、それに続く１ワードのエンドオブパケットからなるパケットＰ１２にパケット化される。このリードデータのパケットＰ１２は、図２０Ｂに示すように、メモリコントローラ１４から、受信バス１０Ｂを介して、送られる。このリードデータのパケットのヘッダには、デバイスＩＤとして（ＩＤ＝０２）が記述される。クライアントデバイス１２では、デバイスＩＤが（ＩＤ＝０２）であることから、自分宛のリードデータであることがわかり、このリードデータのパケットＰ１２がクライアントデバイス１２で受信される。
【００８６】
クライアントデバイス１３からのリードリクエストのパケットＰ３に応答して、メモリ１５の所望のアドレスに、ライトデータとしてクライアントデバイス１３から転送されてきた２４バイト分のデータが書き込まれる。
【００８７】
なお、上述の例では、画像信号処理チップを構成する場合について説明したが、この発明は、複数のクライアントで１つのリソースを共用するようなシステムでは、同様に適用することが可能である。
【００８８】
【発明の効果】
マルチアクセスパターンをサポートすることは、バスとメモリコントローラとの双方を含めて、メモリバス全体の効率を増加させる。また、マルチクライアントシステムでは、アービトレーションの作業が単純化される。なぜなら、クライアントが非隣接データ構成をアクセスするのに必要とされるアービトレーションの巡回の数が著しく削減されるからである。そして、１以上のクライアントが同じコマンドを使う場合に、メモリ中で、シングルインスタンスのクライアントから、同じアドレス計算ロジックのマルチインスタンスに置き換えることにより、チップの全体領域が削減される
【図面の簡単な説明】
【図１】この発明が適用された複数のクライアントデバイスとリソースとからなるシステムの一例のブロック図である。
【図２】バスに転送されるパケットの各ワードの説明に用いる略線図である。
【図３】バスに転送されるパケットのデータの説明に用いる略線図である。
【図４】バスに転送されるパケットのヘッダの説明に用いる略線図である。
【図５】リニアモードのプラス方向ジャンプの説明に用いる略線図である。
【図６】リニアモードのプラス方向ジャンプの説明に用いるタイミング図である。
【図７】リニアモードのプラス方向ジャンプの説明に用いる略線図である。
【図８】リニアモードのマイナス方向ジャンプの説明に用いる略線図である。
【図９】リニアモードのマイナス方向ジャンプの説明に用いるタイミング図である。
【図１０】リニアモードのマイナス方向ジャンプの説明に用いる略線図である。
【図１１】リニアモードのジャンプの説明に用いる略線図である。
【図１２】２Ｄモードの説明に用いる略線図である。
【図１３】サーキュラモードの説明に用いる略線図である。
【図１４】サーキュラモードの説明に用いるタイミング図である。
【図１５】サーキュラモードの説明に用いる略線図である。
【図１６】サーキュラモードの説明に用いる略線図である。
【図１７】送信バスに送られるパケットの説明に用いる略線図である。
【図１８】受信バスに送られるパケットの説明に用いる略線図である。
【図１９】この発明が適用された複数のクライアントデバイスとリソースとからなるシステムの一例の説明に用いるブロック図である。
【図２０】この発明が適用された複数のクライアントデバイスとリソースとからなるシステムの一例の説明に用いるタイミング図である。
【符号の説明】
１０・・・メモリバス、１１、１２、１３・・・クライアントデバイス、１４・・・メモリコントローラ、１５・・・メモリ、１６・・・アービタ
【図１】
2004013389.tif 000011
【図２】
2004013389.tif 000012
【図３】
2004013389.tif 000013
【図４】
2004013389.tif 000014
【図５】
2004013389.tif 000015
【図６】
2004013389.tif 000016
【図７】
2004013389.tif 000017
【図８】
2004013389.tif 000018
【図９】
2004013389.tif 000019
【図１０】
2004013389.tif 000020
【図１１】
2004013389.tif 000021
【図１２】
2004013389.tif 000022
【図１３】
2004013389.tif 000023
【図１４】
2004013389.tif 000024
【図１５】
2004013389.tif 000025
【図１６】
2004013389.tif 000026
【図１７】
2004013389.tif 000027
【図１８】
2004013389.tif 000028
【図１９】
2004013389.tif 000029
【図２０】
2004013389.tif 000030