(57)【要約】【課題】  異なるデータ及び／又はアドレス・フォーマットを有する、又は、異なる通信機構を用いるプロセッサの間での通信を可能にするマルチコアＳＯＣを提供する。【解決手段】  アドレス・テーブル（１４８）を用いて、ＦＩＦＯなどのメモリ・スペースのアドレスをデータ・プロセッサのアドレスと関連付ける。ＦＩＦＯに結合されたカウンタ（１５０、１５２）が、ＦＩＦＯの状態が一杯であるのか空であるのかを示すフラグ又は用意信号を、データをＦＩＦＯに書き込んでいる又はＦＩＦＯから読み出しているマスタ・デバイス（１０４）に与える。これにより、マスタ・デバイスは、ＦＩＦＯが一杯ではないときにだけ書き込み、ＦＩＦＯが空ではないときにだけ読み出すことになる。【選択図】  図１
2004178570.tif 000002
【特許請求の範囲】
【請求項１】
データ通信システムであって、
第１のデータ通信バスと、前記第１のデータ通信バスに結合された複数の第１のスレーブ・デバイスと、前記第１のデータ通信バスに結合された複数の第１のマスタ・デバイスであって対応する第１のマスタ・デバイスと選択された第１のスレーブ・デバイスとの間のデータ通信を開始する複数の第１のマスタ・デバイスと、
第２のデータ通信バスと、前記第２のデータ通信バスに結合された複数の第２のスレーブ・デバイスと、前記第２のデータ通信バスに結合された複数の第２のマスタ・デバイスであって対応する第２のマスタ・デバイスと選択された第２のスレーブ・デバイスとの間のデータ通信を開始する複数の第２のマスタ・デバイスと、
前記第１及び第２のデータ通信バスに結合された通信モジュールであって、
データを記憶する複数のアドレシング可能な位置を有するメモリ・デバイスであって、前記アドレシング可能な位置は前記第１及び第２のマスタ・デバイスのそれぞれによってアドレシング可能であるメモリ・デバイスと、
第１又は第２のマスタ・デバイスによってアドレシングされた前記メモリ・デバイスの中の位置と対応する第１又は第２のデータ通信バスとの間でデータを伝送するマルチプレクサと、
を備えている通信モジュールと、
を備えていることを特徴とするデータ通信システム。
【請求項２】
請求項１記載のデータ通信システムにおいて、前記メモリ・デバイスはランダム・アクセス・メモリを含むことを特徴とするデータ通信システム。
【請求項３】
請求項１記載のデータ通信システムにおいて、前記メモリ・デバイスは、
複数のアドレシング可能な先入れ先出し（ＦＩＦＯ）メモリと、
前記ＦＩＦＯのそれぞれと関連付けられており、対応するＦＩＦＯのアドレスを前記第１及び第２のマスタ・デバイスのアドレスと関連付けるアドレス・テーブルと、
を含むことを特徴とするデータ通信システム。
【請求項４】
請求項３記載のデータ通信システムにおいて、
それぞれのＦＩＦＯに結合され、対応するＦＩＦＯが一杯でないことに応答して、一杯でない状態フラグを提供する第１のカウンタを更に含んでおり、
前記通信モジュールは、前記一杯でない状態フラグに応答し、マスタ・デバイスをイネーブルしてデータを対応するデータ通信バスを介して前記通信モジュールまで伝送させ、対応するＦＩＦＯに記憶することを特徴とするデータ通信システム。
【請求項５】
請求項４記載のデータ通信システムにおいて、
それぞれのＦＩＦＯに結合され、対応するＦＩＦＯが空でないことに応答して、空でない状態フラグを提供する第２のカウンタを更に含んでおり、
前記通信モジュールは、前記空でない状態フラグに応答し、マスタ・デバイスをイネーブルしてデータを対応するデータ通信バスを介して対応するＦＩＦＯから受信させることを特徴とするデータ通信システム。
【請求項６】
請求項３記載のデータ通信システムにおいて、
それぞれのＦＩＦＯに結合され、対応するＦＩＦＯが空でないことに応答して、空でない状態フラグを提供する第２のカウンタを更に含んでおり、
前記通信モジュールは、前記空でない状態フラグに応答し、マスタ・デバイスをイネーブルしてデータを対応するデータ通信バスを介して対応するＦＩＦＯから受信させることを特徴とするデータ通信システム。
【請求項７】
請求項１記載のデータ通信システムにおいて、
前記マルチプレクサに結合され前記第１及び第２のデータ通信バスによる前記メモリ・デバイスへのアクセスのアービトレーションを行うアービタを更に含むことを特徴とするデータ通信システム。
【請求項８】
請求項１記載のデータ通信システムにおいて、前記第１及び第２のデータ通信バスは異なるデータ・フォーマットで動作し、前記データ通信バスの少なくとも１つは前記通信モジュールの動作データ・フォーマットとは異なるフォーマットで動作し、前記通信モジュールは前記第１のデータ通信バスに結合された第１のポートと前記第２のデータ通信バスに結合された第２のポートとを更に含み、前記ポートは、それぞれが、前記通信モジュールとは異なるフォーマットで動作するデータ通信バスに結合されており、対応するデータ通信バスのフォーマットと前記通信モジュールのフォーマットとの間でデータを変換するように動作可能であることを特徴とするデータ通信システム。
【請求項９】
データ通信能力を備えた複数のデータ・プロセッサを有するデータ通信システムのための通信モジュールであって、
それぞれが前記データ・プロセッサの少なくとも対応する１つに結合されるように構成されている複数のポートと、
データを記憶する複数のアドレシング可能な位置を有するメモリ・デバイスであって、前記アドレシング可能な位置はそれぞれが前記データ・プロセッサの少なくとも２つによってアドレシング可能であるメモリ・デバイスと、
前記メモリ・デバイスにおけるアドレシング可能な位置と対応するデータ・プロセッサとの間でデータを伝送するマルチプレクサと、
を備えていることを特徴とする通信モジュール。
【請求項１０】
請求項９記載の通信モジュールにおいて、前記メモリ・デバイスは、
複数のアドレシング可能な先入れ先出し（ＦＩＦＯ）メモリと、
前記ＦＩＦＯのそれぞれと関連付けられており、対応するＦＩＦＯのアドレスを前記データ・プロセッサのアドレスと関連付けるアドレス・テーブルと、
を含むことを特徴とする通信モジュール。
【請求項１１】
請求項１０記載の通信モジュールにおいて、前記複数のデータ・プロセッサの第１のものはデータをこのモジュールまで通信し対応するＦＩＦＯに記憶するように動作可能であり、このモジュールは、
それぞれのＦＩＦＯに結合されており、対応するＦＩＦＯが一杯ではないことに応答して一杯でない状態フラグを提供する第１のカウンタを更に含み、
前記第１のデータ・プロセッサに結合されたポートは、前記一杯でない状態フラグに応答し、前記第１のデータ・プロセッサをイネーブルしてデータを伝送し対応するＦＩＦＯに記憶させることを特徴とする通信モジュール。
【請求項１２】
請求項１１記載の通信モジュールにおいて、前記複数のデータ・プロセッサの第２のものは対応するＦＩＦＯに記憶されているデータを受信するように動作可能であり、このモジュールは、
それぞれのＦＩＦＯに結合されており、対応するＦＩＦＯが空ではないことに応答して空でない状態フラグを提供する第２のカウンタを更に含み、
前記第２のデータ・プロセッサに結合されたポートは、前記空でない状態フラグに応答し、前記第２のデータ・プロセッサをイネーブルして前記対応するＦＩＦＯからデータを受信させることを特徴とする通信モジュール。
【請求項１３】
請求項１０記載の通信モジュールにおいて、前記複数のデータ・プロセッサの第２のものは対応するＦＩＦＯに記憶されているデータを受信するように動作可能であり、このモジュールは、
それぞれのＦＩＦＯに結合されており、対応するＦＩＦＯが空ではないことに応答して空でない状態フラグを提供する第２のカウンタを更に含み、
前記第２のデータ・プロセッサに結合されたポートは、前記空でない状態フラグに応答し、前記第２のデータ・プロセッサをイネーブルして前記対応するＦＩＦＯからデータを受信させることを特徴とする通信モジュール。
【請求項１４】
請求項１０記載の通信モジュールにおいて、前記メモリ・デバイスはランダム・アクセス・メモリとフラグ・レジスタとを含むことを特徴とする通信モジュール。
【請求項１５】
請求項９記載の通信モジュールにおいて、
前記マルチプレクサに結合されており前記データ・プロセッサによる前記メモリ・デバイスへのアクセスのアービトレーションを行うアービタを更に含むことを特徴とする通信モジュール。
【請求項１６】
請求項１３記載の通信モジュールにおいて、前記第１及び第２のデータ・プロセッサは異なるデータ・フォーマットで動作し、前記データ・プロセッサの少なくとも１つはこのモジュールの動作データ・フォーマットとは異なるフォーマットで動作し、前記ポートは、それぞれが、このモジュールとは異なるフォーマットで動作するデータ・プロセッサに結合されており、対応するデータ・プロセッサのフォーマットとこのモジュールのフォーマットとの間でデータを変換するように動作可能であることを特徴とする通信モジュール。
【請求項１７】
第１のフォーマットで通信するように動作可能な第１のデータ通信デバイスと前記第１のフォーマットとは互換性のない第２のフォーマットで通信するように動作可能な第２のデータ通信デバイスとの間でデータを通信する方法であって、
ａ）前記第１のデータ通信デバイスを、前記第１のフォーマットを用いてデータを通信モジュールまで伝送するように動作させるステップと、
ｂ）前記データを前記通信モジュールにおけるアドレシング可能な位置に記憶するステップと、
ｃ）前記第２のデータ通信デバイスを、前記第２のフォーマットを用いて前記通信モジュールから前記データを受信するように動作させるステップと、
を含むことを特徴とする方法。
【請求項１８】
請求項１７記載の方法において、ステップａ）は、
ａ１）前記第１のフォーマットを有する第１のアドレスを前記通信モジュールまで伝送するように前記第１のデータ通信デバイスを動作させるステップと、
ａ２）データを前記通信モジュールまで伝送するように前記第１のデータ通信デバイスを動作させるステップと、
によって実行され、ステップｂ）は、
ｂ１）前記第１のアドレスを、前記通信モジュールにおいてアドレシング可能な位置を識別する第２のアドレスに関連付けるステップと、
ｂ２）前記データを前記第２のアドレスによって識別された位置に記憶するステップと、
によって実行され、ステップｃ）は、
ｃ１）前記第３のアドレスを前記通信モジュールまで伝送するように前記第２のデータ通信デバイスを動作させるステップと、
ｃ２）前記第３のアドレスの受信に応答して前記第２のアドレスによって識別された位置から前記第２のデータ通信デバイスまでデータを伝送するように前記通信モジュールを動作させるステップと、
によって実行されることを特徴とする方法。
【請求項１９】
請求項１７記載の方法において、
ｄ）前記第１及び第２のデータ通信デバイスによる前記通信モジュールの使用のアービトレーションを行うステップを更に含むことを特徴とする方法。
【請求項２０】
請求項１９記載の方法において、前記第１及び第２のデータ通信デバイスは、それぞれが、複数のマスタ・デバイスと前記複数のマスタ・デバイスに接続された複数のスレーブ・デバイスとを有するバスを含むことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ通信に関し、更に詳しくは、マルチコア・システムオンチップにおけるサブシステムの間のデータ通信をサポートするデータ通信モジュールやそのようなモジュールを用いるシステムと、対応するデータ通信プロセスとに関する。
【背景技術】
【０００２】
データ・バスは、集積回路（ＩＣ）において用いられ、ユーザ制御のマイクロプロセッサなどのマスタ・デバイスとメモリなど周辺デバイスを制御するスレーブ・デバイスとの間でデータを転送する。そのようなＩＣは、システム・オン・チップ（ＳＯＣ）と称されることが多い。ＳＯＣの中には、複数のプロセッサをサポートするものもあり、それらは、マルチコアＳＯＣと称される。
【０００３】
多くの場合、マルチコアＳＯＣのプロセッサは、相互に通信することがないか、又は、単一で非常に単純な通信機構を用いるか、のいずれかである。しかし、場合によっては、マルチコアＳＯＣは、異なるフォーマットで動作するか相互に様々な通信機構を用いるかのいずれかである２以上のプロセッサを用いて構成されうる。そのような場合には、ＳＯＣは、そのＳＯＣによって結合されるそれぞれのプロセッサの要求事項をサポートするように設計される。例えば、プロセッサが異なるハードウェア資源を要求する、又は、それらを異なる態様で用いる場合には、ＳＯＣは、そのようなすべての要求や使用に対応するように設計されなければならない。従って、ＳＯＣは、先入れ先出し（ファーストイン・ファーストアウト・メモリ、ＦＩＦＯ）、フラグ及び割込レジスタ、集中ランダム・アクセス・メモリ（ＲＡＭ）の数や深度など様々な通信ハードウェアの要求事項や、バス・プロトコル、データ・フォーマット（エンディアン性を含む）、データパスの幅、バス周波数、同期／非同期通信などそれ以外の要求事項に対応するように設計される。
【０００４】
結果的に、マルチコアＳＯＣは、プロセッサの選択されたハードウェア及びソフトウェアの要求事項に対応するように設計及び製造され、それ以外のハードウェア又はソフトウェアの要求事項には容易に適応できない。マルチコアＳＯＣは、異なる要求事項を有するプロセッサを受け入れるように再構成したりプログラミングすることは困難である。
【発明の開示】
【０００５】
本発明は、マルチプロセッサ・システムのためのユーザによる構成可能かつプログラミング可能な通信モジュールに関するものであり、更に詳しくは、異なるデータ及び／又はアドレス・フォーマットを有する、又は、異なる通信機構を用いるプロセッサの間での通信を許容するマルチコアＳＯＣに関する。更に詳しくは、本発明は、複数のバスのそれぞれに対するスレーブ・デバイスとして機能する通信モジュールに関し、それにより、１つのバスの上のプロセッサが、メッセージを交換し、データを共有し、他のバスの上のプロセッサに事象を告知することが可能になる。本発明の通信モジュールは、それぞれのバスのアドレス・フォーマットにおいてアドレシング（アドレス指定）可能なメモリを含み、データをそれぞれのバスからそのメモリに書き込み、あるバスからのコマンドに応答してそれぞれのバスへデータを読み込む。
【０００６】
ある実施例では、通信モジュールは、複数のデータ・プロセッサを有するデータ通信システムに対して提供される。このモジュールは、複数のポートを含み、それぞれのポートは、対応するデータ・プロセッサの少なくとも１つにそれぞれが結合されるように構成されている。メモリ・デバイスは、データ・プロセッサによってアドレシング可能なデータを記憶する複数の位置を有している。マルチプレクサは、メモリにおけるアドレシング可能な位置と対応するデータ・プロセッサとの間で、データを伝送する。
【０００７】
ある実施例では、メモリ・デバイスは、複数のアドレシング可能なＦＩＦＯを含み、これらのＦＩＦＯのそれぞれと関連付けられたアドレス・テーブルが、当該ＦＩＦＯのアドレスをマスタ・デバイスのアドレスと関連付ける。それぞれのＦＩＦＯに結合されたカウンタは、ＦＩＦＯコンテンツに応答して、当該ＦＩＦＯが一杯ではない又は空ではないという状態を示すフラグ又は準備信号を供給する。このフラグ又は準備信号は、データを当該ＦＩＦＯに書き込んている（ライト、Ｗ）又はデータを当該ＦＩＦＯから読み出している（リード、Ｒ）データ・プロセッサに供給され、それによって、書込みをしているデータ・プロセッサはＦＩＦＯがいっぱいではないときにのみ書き込みを行い、読出しをしているデータ・プロセッサはＦＩＦＯが空ではないときにのみ読出しを行う。
【０００８】
ある実施例では、本発明のモジュールは、データ通信バスによるメモリ・デバイスへのアクセスのアービトレーション（仲裁）を行うアービタを含む。
別の実施例では、データ・プロセッサは、対応するデータ・バスに結合されたマスタ・デバイスである。それぞれのバスは、複数のマスタ・デバイスを複数のスレーブ・デバイスに結合して、それぞれのマスタ・デバイスが対応するデータ通信バスを介してスレーブ・デバイスとの間でデータを転送できるようにしている。通信モジュールは、スレーブ・デバイスに対するのと類似の態様でそれぞれのバスに結合されている。
【０００９】
更に別の実施例では、データが、互換ではないフォーマットで動作している第１及び第２のデータ・プロセッサの間で転送される。一方のデータ・プロセッサは、そのネイティブなフォーマットを用いてデータを通信モジュールに送る。そのデータは、通信モジュールに記憶され、他方のデータ・プロセッサは、そのネイティブなフォーマットを用いてモジュール・デバイスからデータを受け取るように動作する。第１のデータ・プロセッサは、第１のアドレスを第１のフォーマットで通信モジュールに送るように動作される。通信モジュールは、この第１のアドレスを、データが記憶されている通信モジュールにおけるアドレシング可能な位置を識別する第２のアドレスと関連付ける。このアドレスは、第２のフォーマットの第３のアドレスと関連付けられ、第２のデータ・プロセッサは、第３のアドレスを通信モジュールに送るように動作される。モジュールは、第３のアドレスに応答して、第２のアドレスによって識別される位置からのデータを第２のデータ・プロセッサに送る。
【発明を実施するための最良の形態】
【００１０】
図１は、マルチコア通信モジュールなどの通信モジュール１０２に結合された複数のバス１００／１、１００／２などを図解するブロック図である。バス・システム１００／１は、複数のマスタ・デバイス１０４／１−１、・・・、１０４／１−ｎと複数のスレーブ・デバイス１０６／１−１、・・・、１０６／１−ｍとを含んでいる。データ・バス１０８／１は、マスタ・デバイス１０４／１をスレーブ・デバイス１０６／１とモジュール１０２の第１のポートＰ−１とに結合する。制御バス１１０／１は、マスタ・デバイス１０４／１のそれぞれをスレーブ・デバイス１０６／１とモジュール１０２のポートＰ−１とバス・システム１０１／１のアービタ１１２／１とのそれぞれに結合する。
【００１１】
同様に、バス・システム１００／２は、複数のマスタ・デバイス１０４／２−１、・・・、１０４／２−ｎと複数のスレーブ・デバイス１０６／２−１、・・・、１０６／２−ｍとを含んでいる。データ・バス１０８／２は、マスタ・デバイス１０４／２をスレーブ・デバイス１０６／２とモジュール１０２の第２のポートＰ−２とに結合する。制御バス１１０／２は、マスタ・デバイス１０４／２のそれぞれをスレーブ・デバイス１０６／２とモジュール１０２のポートＰ−２とバス・システム１０１／２のアービタ１１２／２とのそれぞれに結合する。
【００１２】
バス・システム１００は、マスタ・デバイス１０４とスレーブ・デバイス１０６との間で、アービタ１１２の制御の下でデータを転送するデータ・バス・システムである。バス・システム１００の１つの例としては、英国ケンブリッジ所在のＡＲＭリミテッド社のデザインに基づくアドバンスト・ハイパフォーマンス・バス（ＡＨＢ）がある。ＡＨＢバスは、複数のバス・マスタ・デバイスと複数のバス・スレーブ・デバイスとの間でのアービタを用いた、高いパフォーマンスで高いクロック周波数のデータ転送を提供するアドバンスト・マイクロコントローラ・バス・アーキテクチャ（ＡＭＢＡ）の１つの形式である。ＡＨＢバスは、プロセッサをオンチップ・メモリやオフチップ外部メモリ・インターフェースに結合するシングルチップ・プロセッサを含む集積回路チップにおいて、特に有用である。
【００１３】
ＡＨＢバスは、コマンド・フェーズとそれに続くデータ転送フェーズという１つのフェーズで動作する同期パイプライン・バスである。マスタ・デバイス１０４は、このマスタ・デバイスがデータをスレーブ・デバイスのメモリに書き込むことを望んでいることをスレーブ・デバイス１０６に命令することによって、又は、このマスタ・デバイスがデータをスレーブ・デバイスのメモリから読み出すことを望んでいることをスレーブ・デバイスに命令することによって、コマンド・フェーズを開始する。スレーブ・デバイス１０６は、記憶するためのデータを受け取る用意ができている、又は、回復されたデータをマスタ・デバイスに送る用意ができているときには、アービタ１１２とマスタ・デバイス１０４とに、データを受け取る又は送る用意ができていることを告知する。それから、データ転送が実行される。
【００１４】
ＡＨＢのバス・コンフィギュレーションに応じて、データ転送は、通常、複数の８ビット・バイトのデータを転送することができる３２又は６４ビットのデータ・バス上で実行される（３２ビット・バスの場合には４バイト、６４ビット・バスの場合は８バイト）。データ転送の性質及びフォーマットを定義する制御信号は、マスタ及びスレーブ・デバイスとアービタとの間を制御ラインを介して転送される。ＡＨＢバスのデザインに関するより詳細な説明は、ＡＲＭリミテッド社によって出版された（１９９９年）ＡＭＢＡ仕様書の第２版において、そして特にその第３章（ページ３−１からページ３−５８まで）において見ることができる。この説明は、この出願において援用する。
【００１５】
ＡＨＢバス・デザインには、それぞれが異なるフォーマットを有する複数のコンフィギュレーションが存在する。３２ビットのデータ・バスを用いるＡＨＢバスもあれば、６４ビットのバスを用いるものもあり、「ビッグ・エンディアン」のアドレス・フォーマットを用いるＡＨＢバスもあれば、「リトル・エンディアン」のアドレス・フォーマットを用いるものもある。ＡＨＢバスは、通常、１６を超えるマスタ・デバイスを扱うことはできない。更に、与えられたＡＨＢバス・システム１００は、普通、ビッグ・エンディアン又はリトル・エンディアンのアドレス・フォーマットで、３２ビット又は６４ビットのデータ転送など単一のフォーマットで動作する。モジュール１０２は、それぞれのバスに対する追加的なスレーブ・デバイスとして機能する。
【００１６】
図２は、本発明のある実施例による通信モジュール１０２のブロック図である。モジュール１０２は、複数のデータ・ポート１２０／１、１２０／２、１２０／３、・・・、１２０／ｘを含み、これらはそれぞれが、対応するバス・システム１００／１、１００／２、１００／３、・・・、１００／ｘのデータ・バス１０８／１、１０８／２、１０８／３、・・・、１０８／ｘと制御バス１０６／１、１０６／２、１０６／３、・・・、１０６／ｘとの対応するものに結合される。それぞれのポート１２０は、対応するバス１０８からデータと制御信号とを受け取り、それらを、対応するバス１２４／１、１２４／２、・・・、１２４／ｘを介してマルチプレクサ１２２に供給する。マルチプレクサ１２２は、データを、先入れ先出し（ＦＩＦＯ）メモリ１２６とフラグ・レジスタ１２８とランダム・アクセス・メモリ１３０（ＳＲＡＭ）とに供給する。アービタ１３２は、マルチプレクサ１２２の使用のアービトレーションを行い、特に、マルチプレクサ１２２と、ＦＩＦＯ１２６とレジスタ１２８とＳＲＡＭ１３０とのメモリ・スペースとへのアクセスのアービトレーションを行う。ＦＩＦＯ１２６とＳＲＡＭ１３０とは、ローカル・バス１３４を介してそれぞれのポート１２０へデータ出力を提供し、ＦＩＦＯ１２６とフラグ・レジスタ１２８とは、バス１３６を介してポート１２０に状態出力を提供し、制御バス１０６を介して対応するデータ・バス１００に制御データを供給する。コンフィギュレーション・レジスタ１３８は、アービタ１３２とＦＩＦＯ１２６とフラグ・レジスタ１２８とに結合され、ユーザが調節可能なコンフィギュレーションをアービタとＦＩＦＯとフラグ・レジスタとに提供する。
【００１７】
モジュール１０２は、複数のデータ・バスを扱うように構成され、ユーザは、このコンフィギュレーションを変更することができる。メッセージ通過機構は、ＦＩＦＯ１２６とＳＲＡＭ１３０とによって提供されたモジュール・メモリ・スペースにおけるメモリ・マップされた機能の外観を呈する。モジュール１０２のタイミングは、局所的に提供され、その結果、モジュール１０２は、任意の与えられたデータ・バス１００の周波数とは独立の周波数で動作する。
【００１８】
ＦＩＦＯ１２６は、ポート１２０の１又は複数に結合された複数の先入れ先出しメモリを含む。実際には、ＦＩＦＯ１２６のデータ記憶部分は、物理的には、ＳＲＡＭ１３０の一部でありうる。ＦＩＦＯ１２６は、後述するレジスタとカウンタとを含みＳＲＡＭ１３０とは別個でありうる制御部分を含む。ＦＩＦＯ１２６は、２つのポート１２０の間の交差結合されたデータ通信を提供することにより、一方のポートはデータをＦＩＦＯに書き込むことができ、他方で、他方のポートはそのＦＩＦＯからデータを読み出すことができる。一杯／空の状態フラグは、ＦＩＦＯによってデータ転送目的のためにこれらのポートに提供される。
【００１９】
バス１００からトランザクションを実行してほしいというリクエストを受け取ると、そのバスに結合されているポート１２０は、リクエストに伴うアドレスがモジュール１０２に対するものであるかどうかを判断する。与えられたバスの上のマスタ・デバイスによって出力されたアドレスは、特定のスレーブ・デバイス１０６又は通信モジュール１０２のアドレシングを行う。それぞれのポートは、対応するバス１００に割り当てられたモジュールのアドレス又はアドレス範囲に応答する。モジュール１０２がそれぞれのバスに対して同一のアドレス又はアドレス範囲を有することは必要ではなく、モジュールのアドレスは、それぞれのバス１００に対して異なっていてもかまわない。
【００２０】
あるポートにおいて受け取られたアドレスがそのバスに対するそのモジュールのアドレスと一致する場合には、マルチプレクサ１２２とＦＩＦＯ１２６及びＳＲＡＭ１３０のメモリ・スペースとへのアクセスは、アービタ１３２によるアービトレーションが行われる。アービタ１３２は、ある与えられた時点におけるマルチプレクサ１２２とメモリ・スペースとの使用をどのポートが有するのかに関するアービトレーションを行う。アービトレーションのプロトコルは、このシステムに適した任意のプロトコルでよく、ポートの間での優先順位のローテーションや、特定のポートにそれ以外のポートよりも高い優先順位を割り当てる方法や、その両者の組合せを含んでいる。任意の与えられたアービトレーション・サイクルがポート１２０を優先することにより、最も高い優先順位を有するポートが現時点でのリクエストを有していない場合には、その次に高い優先順位を有するポートに対してサービスが与えられるというのが好ましい。
【００２１】
図３は、複数のポート１２０−１、１２０−２、１２０−３に結合されたＦＩＦＯ１２６の機能ブロック図である。ＦＩＦＯ１２６は、複数の先入れ先出しメモリ１４０、１４２、１４４、１４６で構成され、これらは、それぞれが、対応するＦＩＦＯのベース・アドレスを識別するベース・アドレス・テーブル１４８、１５０、１５２、１５４と他のバスの上のマスタ・デバイスへのアドレスのテーブルとを有している。
【００２２】
与えられたＦＩＦＯは、１つの特定のバスから別のバスへの、又は、特定のバス群の間でのデータの転送の専用でありうる。バス１００／１の上のマスタ・デバイス１０４／１がＦＩＦＯ１２６を介してメッセージをバス１００／２の上のマスタ・デバイス１０４／２に送ることを望んでいる場合には、このメッセージは、例えばＦＩＦＯ１４０であるＦＩＦＯに対してアドレシングされ、バス１００／１のフォーマットでマスタ・デバイス１０４／２へのアドレスを含む。アドレス１４８は、バス１００／２のフォーマットを有するマスタ・デバイス１０４／２のアドレスを識別するテーブルを含む。データがＦＩＦＯ１４０で受け取られると、ＦＩＦＯは、マスタ・デバイス１０４／２の関連付けられたアドレスと、ＦＩＦＯ１４０がマスタ・デバイス１０４／２（図１）に転送するデータを有していることを識別するポート１２０／２を介してバス１００／２へのフラグとを出力する。ＦＩＦＯによって出力されたフラグは、標準的なＡＨＢバスにおけるスレーブ・デバイス空の応答信号を表し、バス・アービタ１１２／２（図１）に供給されて、スレーブ・デバイスとして機能しているモジュール１０２がデータをＦＩＦＯによって識別されたマスタに転送する用意ができていることを、バス・アービタに告知する。アービタ１１２／２は、バス１００／２の使用のアービトレーションを行い、バスの使用を適切なマスタ・デバイス１０４／２に配分する。すると、マスタ・デバイスは、この時点ではバス１００／２に対するスレーブ・デバイスとして機能しているモジュール１０２へのバス１００／２のフォーマットで、リクエストとＦＩＦＯ１４０に対するそのアドレスとを送る。ＦＩＦＯ１４０は、データを、読出関数として、ポート１２０／２を介してバス１００／２の上に、そして、その上の適切なマスタ・デバイス１０４／２に転送する。
【００２３】
図３に示されているように、ＨＳＥＬＦＩＦＯｘとして識別されている選択信号は、それぞれのデータ・バス１００／１、１００／２、・・・から受け取られる。これらの選択信号は、対応するマスタ・デバイス１０４／１、１０４／２、・・・によって出力されたアドレス・コードからマルチプレクサ１２２によって復号化され、アドレシングされている特定のＦＩＦＯ１４０。１４２、１４４、１４６に対するアドレス・オフセットを識別する。選択信号は、対応するＡＨＢバスと互換性のあるＨＳＥＬｘ信号の形式で発生される。
【００２４】
例えば、ＡＨＢバスのコンテキストでは、典型的なアドレス・コードは３２ビットを含み、対応するバスのスレーブ・デバイスにおける特定の位置をアドレシングする。典型的には、最上位ビットがこの特定のスレーブ・デバイスをアドレシングし、最下位ビットがデータの転送に用いるスレーブ・デバイスにおける特定の位置をアドレシングする。
【００２５】
図４は、ＦＩＦＯ１４０、１４２、１４４、１４６のいくつかの制御の側面を図解している。それぞれのＦＩＦＯ１４０、１４２、１４４、１４６は、書込カウンタ１５０と読出カウンタ１５２とを含む。１ワード又は１ワードの一部（１バイトなど）が（この例におけるバス１００／１の上のマスタ・デバイス１０４／１などの）マスタ・デバイスによってＦＩＦＯに書き込まれる度に、書込カウンタ１５０のカウントはそのバイト・カウントの分だけインクリメントされる。同様に、１ワードが（この例におけるバス１００／２に上のマスタ・デバイス１０４／２によって）ＦＩＦＯから読み出される度に、読出カウンタ１５２はインクリメントされる。カウンタ１５０及び１５２は、ＦＩＦＯの一杯及び一杯でない、そして、空及び空でない状態のインクリメント方向のカウントを維持するように動作する再循環カウンタである。データが一方のマスタ・デバイス（マスタ・デバイス１０４／１）によってＦＩＦＯに書き込まれるとカウントの差分がインクリメントされ、データが他方のマスタ・デバイス（マスタ・デバイス１０４／２）によってＦＩＦＯから読み出されるとカウントの差分がデクリメントされる。コントローラ１５４は、カウンタ１５０及び１５２に応答してカウントの差分をインクリメント及びデクリメントして、ＦＩＦＯが一杯でないフラグとＦＩＦＯが空でないフラグとをこれらのマスタ・デバイスに与える。
【００２６】
ＡＨＢ環境では、選択されたスレーブ・デバイスが読出又は書込トランザクションなどのトランザクションを完了する用意ができているときには、用意（ができていることを示す）信号が出力される。この例では、通信モジュール１０２は両方のマスタ・デバイス１０４／１及び１０４／２に対してスレーブ・デバイスとして機能しており、マスタ・デバイス１０４／１空のデータを書き込み、マスタ・デバイス１０４／２へのデータを読み出す。従って、モジュール１０２は、ＦＩＦＯ１４０が一杯でないときに、書き込みをしているマスタ・デバイス１０４／１に対して用意信号を出力し、ＦＩＦＯ１４０が空でないときに、読み出しをしているマスタ・デバイス１０４／２に対して用意信号を出力する。書き込みをしているマスタ・デバイス１０４／１への用意信号により、マスタ・デバイス１０４／１がデータをＦＩＦＯに転送することが可能となる。同様に、読み出しをしているマスタ・デバイス１０４／２への用意信号により、マスタ・デバイス１０４／２がデータをＦＩＦＯから読み出すことが可能となる。従って、ＦＩＦＯが一杯ではないときにだけ、書込マスタはイネーブルされてＦＩＦＯに書き込みし、ＦＩＦＯが空ではないときだけ、読出マスタはイネーブルされてＦＩＦＯからデータを読み出す。
【００２７】
ＳＲＡＭ１３０は、２つのデータ・バスの間でデータの大きなブロックを転送するのに用いられる汎用のシングルポートＳＲＡＭである。ＳＲＡＭ１３０は、ＡＨＢバスの任意の他のスレーブ・デバイストルイメージの態様でアドレシングがなされる。更に詳しく説明するならば、ある与えられたバス１００の上のそれぞれのマスタ・デバイス１０４は、そのバスに関して当該モジュールに割り当てられたアドレス（これは、それぞれのバスごとに異なりうる）とこのマスタ・デバイスがアクセスを望んでいるＳＲＡＭの中のアドレシング可能な位置に対するオフセット・アドレスとを用いてＳＲＡＭのアドレシングを行う。例えば、モジュール１０２がバス１００／１に対してアドレス４０ｘｘ＿ｘｘｘｘを有している場合には、バス１００／１の上のマスタ・デバイス１０４／１は、アドレス４０ｘｘ＿ｘｘｘｘを用いてモジュール１０２のメモリ・スペースのアドレシングを行う。通信モジュールの内部では、ＳＲＡＭ１３０はアドレスｘｘ００＿ｘｘｘｘを有する可能性があり、従って、マスタ・デバイスは、アドレス４０００＿ｘｘｘｘを用いてＳＲＡＭのアドレシングを行う。ただし、ここでｘｘｘｘというのは、ＳＲＡＭの内部における特定のアドレシング可能な位置を意味する。同様に、モジュール１０２がバス１００／２に対してアドレス３０ｘｘ＿ｘｘｘｘを有している場合には、バス１００／２の上のマスタ・デバイス１０４／２は、アドレス３０００＿ｘｘｘｘを用いてＳＲＡＭ１３０のアドレシングを行う。
【００２８】
フラグ・レジスタ１２８は、それぞれのマスタ・デバイス１０４によって、ＦＩＦＯのアドレシングと類似する態様でアドレシングされる。更に詳しくは、好適実施例では、ある１つのポート１２０から別のポート１２０へのアドレシングには、フラグ・レジスタが用いられる。フラグ・レジスタは、ＳＲＡＭ１３０におけるデータの存在を指示するのに用いることができ、それによって、１つのマスタ・デバイスの伝送により、別のバスの上のマスタ・デバイスに対してそれに向けたデータが存在していることが告知される。
【００２９】
図５は、バス１００上のプロセッサなど複数のデータ・プロセッサを備えたマルチコア通信モジュール１０２の動作を図解する論理図である。図解の目的で、図５には制御は示されていない。その代わり、それぞれのバスを表すデータ・プロセッサ１６０、１６２及び１６４は、双方向の通信を介して、ＳＲＡＭメモリ１３０（図２）を表すランダム・アクセス領域１６６での位置をアドレシングするように動作可能である。従って、それぞれのプロセッサは、マルチプレクサ１２２（図２）を介して、ランダム・アクセス領域１６６にデータを書き込むこと及びそこからデータを読み出すことができる。ＦＩＦＯは、好ましくは、１つのプロセッサ（又は、バス）から別のプロセッサ（又は、バス）への一方向の通信に向くように構成されている。従って、それぞれのプロセッサは、ＦＩＦＯとマルチプレクサ１２２（図２）とを介して別のプロセッサにデータ又はメッセージを送ることができる。例えば、プロセッサ１６０は、マルチプレクサ１２２を介してプロセッサ１６２にアクセスするために、マルチプレクサ１２２を介して、データ又はメッセージをＦＩＦＯ１６８に送ることができる。同様に、プロセッサ（又は、バス）１６２はＦＩＦＯ１７０を介してプロセッサ（又は、バス）１６０にメッセージを送ることができ、プロセッサ（又は、バス）１６０及び１６４はＦＩＦＯ１７２及び１７４を介してデータ及びメッセージを交換することができ、プロセッサ（又は、バス）１６２及び１６４はＦＩＦＯ１７６及び１７８を介してデータ及びメッセージを交換することができる。同じようにして、プロセッサ（又は、バス）１６０及び１６２はフラグ・レジスタ１８０及び１８２を介して相互にフラグを送ることができ、プロセッサ（又は、バス）１６２及び１６４はフラグ・レジスタ１８４及び１８６を介して相互にフラグを送ることができ、プロセッサ（又は、バス）１６０及び１６４はフラグ・レジスタ１８８及び１９０を介して相互にフラグを送ることができる。
【００３０】
ＳＲＡＭ、ＦＩＦＯ及びフラグ・レジスタのメモリ・スペースのアドレスは、それぞれのバスを介し当該バスのネイティブなフォーマットを用いてアドレシングされ、メモリ・スペースへのアクセスを獲得する、ということが理解されよう。他のバス上のマスタ・デバイスは、メモリ・スペースにおけるそれに対するデータの存在が告知され、そのメモリ・スペースにアクセスして通常のＡＨＢバスの態様でデータを読み出す。
【００３１】
メモリは、どのプロセッサがアクセスを獲得する科を識別するのにアービトレーションが行われたフロント・エンドを用いる単一ポート型のメモリとして実現される。あるいは、メモリを、マルチポート・メモリとして実現することもできる。単一ポート型のメモリの長所には、それが小型であり、より高い周波数でも動作することができ、２つのプロセッサが同じメモリ位置に同時にアクセスすることが回避されるようにハードウェアによっってより容易に管理することができる。
【００３２】
通信モジュール１０２は、コンフィギュレーション・レジスタ１３８を用いて構成可能（プログラミング可能）である。レジスタ１３８は、アービタ１３２のアービトレーション規則とフラグ・レジスタ１２８の設定とＦＩＦＯ１２６の制御とを変更するユーザが修正可能なコードを含んでいる。ある実施例では、ＦＩＦＯ１４０、・・・を、２又はそれ以上の特定のバス１００の間でデータを転送するようにプログラミングすることも可能である。別の実施例では、与えられたＦＩＦＯは、バス１００／１上のマスタ・デバイスからのデータだけを書き込みしてバス１００／２へのデータだけを読み出す、又は、バス１００／１及び１００／２の間の双方向でデータを転送する（書き込む及び読み出す）、又は、複数のバスの任意のものの間でデータを転送する、などのように構成することができるし、又は、ユーザが希望するそれ以外の任意の有用なコンフィギュレーションに構成することができる。
【００３３】
本発明の１つの特徴は、モジュール１０２がそれぞれのバスのネイティブなフォーマットでコマンドを受け取りかつ生じることができる点にある。更に詳しくは、ＦＩＦＯのためのアドレス・マッピングは、アドレス・テーブルを用いて達成される。マルチプレクサ１２２は、モジュールの使用を、アービタ１３２によるアービトレーションに従って配分する。通信モジュール１０２は、ビッグ・エンディアンやリトル・エンディアンのアドレス・フォーマットなど、様々なバス・フォーマットをサポートする。モジュール１０２自体は、リトル・エンディアン・フォーマットで動作するのが好ましい。なお、ビッグ・エンディアン・フォーマットでは、バイトは左から右に向かって番号が付され、従って、最も大きなアドレスがワードの中の最下位バイト位置にある。リトル・エンディアン・フォーマットでは、バイトは右から左に向かって番号が付され、従って、最も大きなアドレスはワードの中の最上位バイト位置にある。
【００３４】
モジュール１０２のポート１２０は、アドレス・フォーマットを、リトル・エンディアンなど、そのモジュールの特定のフォーマットに変換する。ポートに結合されたバスが既にリトル・エンディアン・フォーマットで実行している場合には、ポートは、そのアドレスを単純に通過させる。ポートに結合されたバスがビッグ・エンディアン・フォーマットで動作する場合には、対応するポートは、アドレス・フォーマットをビッグ・エンディアンからリトル・エンディアンに変換して制御をモジュールに転送し、バスによる使用のためにはリトル・エンディアンにフォーマットされているアドレスをビッグ・エンディアンに変換する。
【００３５】
以上で本発明を好適実施例を参照しながら説明してきたが、この技術分野の当業者であれば、本発明の精神と範囲とから逸脱することなく形式及び詳細において変更が可能であることを理解するはずである。従って、ここではバス１００をアービタを含むＡＨＢバスとして説明したが、本発明は、アービタを含む含まないを問わず、任意のタイプのバスを用いて実現が可能である。更に、マルチコア通信モジュール１０２は、バスを介してスレーブ・デバイスに結合されていない複数のデータ・プロセッサの間でのデータ通信であっても、それらのプロセッサを直接にモジュール１０２のポートに結合することによって、処理が可能である。
【図面の簡単な説明】
【００３６】
【図１】図１は、本発明のある実施例による通信モジュールを用いたマルチバス・システムのブロック図である。
【図２】図１に図解されているマルチバス・システムにおいて用いられる本発明による通信モジュールのブロック図である。
【図３】図３は、図２のモジュールにおいて用いられる先入れ先出しメモリの機能ブロック図である。
【図４】図３に図解されているメモリのある制御の側面の機能ブロック図である。
【図５】本発明のマルチコア通信モジュールの動作を図解している機能ブロック図である。
【図１】
2004178570.tif 000003
【図２】
2004178570.tif 000004
【図３】
2004178570.tif 000005
【図４】
2004178570.tif 000006
【図５】
2004178570.tif 000007