(57)【特許請求の範囲】
【請求項１】
高速データ・ストリームを受信，送信，および処理するための高速通信コントローラ（１１１）であって、前記データ・ストリームはフレームからなり、前記通信コントローラは複数の通信チャネルに結合するように対応しており、前記通信コントローラは、
データ・ストリーム・トランザクションを制御する第１プロセッサであって、前記第１プロセッサは、タスクを実行することにより、フレームのトランザクションを制御する、第１プロセッサ（９０）と、
前記第１プロセッサ（９０）を初期化し、および通信プロトコル機能を処理するための第２プロセッサ（１００）と、
前記第１プロセッサに結合され、タスクを実行する必要性があるかどうかを検出するため、かつ前記第１プロセッサにより実行される被選択タスクを選択するためのスケジューラ（５０）と、を含み、
前記通信コントローラ（１１１）は、第１および第２外部バス（１１３，１１４）に結合されるように対応付けられ、および前記第１プロセッサ（９０）を前記第２外部バス（１１４）を介して前記第２プロセッサ（１００）に結合するためのインターフェイス（１６０）を有しており、かつ、
前記第１プロセッサ（９０）は、タスクの実行が前記第１または第２外部バス（１１３，１１４）に結合された外部メモリ・バンク（１１０）から情報をフェッチすることを含む場合、前記タスクを実行するために停止するように配置されている、
ことを特徴とする高速通信コントローラ（１１１）。
【請求項２】
前記第１プロセッサに結合され、タスクを格納するための命令メモリ・バンク（１３０）と、
前記第１プロセッサに結合され、前記第１プロセッサにより処理されるデータを格納するための第１メモリ・バンク（７０）と、
前記第１プロセッサおよび前記第１外部バスに結合され、前記第１外部バスに結合される外部メモリ・バンク内に格納された情報を取り出すための第１直接メモリ・アクセス・コントローラ（６０）と、
前記第１プロセッサおよび前記第２外部バスに結合され、前記第２外部バスに結合される外部メモリ・バンク内に格納された情報を取り出すための第２直接メモリ・アクセス・コントローラ（１６０）と、
前記スケジューラおよび前記第１メモリ・バンクに結合され、前記複数の通信チャネルと前記第１メモリ・バンクとの間でバッファリングするための複数の周辺装置（１４０）と、
をさらに含むことを特徴とする請求項１記載の通信コントローラ（１１１）。
【請求項３】
前記スケジューラ（５０）は、複数のスタック・ポインタを格納し、
スタック・ポインタは、タスクと関連し、
前記スケジューラは、前記第１プロセッサに被選択スタック・ポインタを送出し、前記被選択スタック・ポインタは、前記被選択タスクと関連し、
タスクの実行は、前記被選択スタック・ポインタの更新を含み、
前記第１プロセッサは、前記第１プロセッサが前記被選択タスクの実行を停止するときに、前記更新された被選択スタック・ポインタを前記スケジューラに送出する、
ことを特徴とする請求項２記載の通信コントローラ（１１１）。
【請求項４】
周辺装置（１４０）と、
前記スケジューラ（５０）および前記周辺装置（１４０）に結合された周辺バス（１１２）と、
をさらに含むことを特徴とする請求項３記載の通信コントローラ（１１１）。
【請求項５】
周辺装置（１４０）は、２つの要求チャネルを有し、
第１要求チャネルは、前記通信コントローラから通信チャネルに送られた前記データの送信を処理し、
第２要求チャネルは、通信チャネルから前記通信コントローラに送られる前記データの受信を処理し、
前記第１要求チャネルが前記通信チャネルに送られるデータを受信できるとき、前記第１要求チャネルは、前記スケジューラに送信要求を送出し、
前記第２要求チャネルが通信チャネルからデータを受信したとき、前記第２要求チャネルは、前記スケジューラに受信要求を送出する、
ことを特徴とする請求項４記載の通信コントローラ（１１１）。
【請求項６】
前記スケジューラ（５０）は、
前記周辺装置に結合され、送信要求および受信要求を受け取り、かつ被選択要求を選択するための要求セレクタ（５６）と、
複数のスタック・ポインタを格納するための複数のスタック・ポインタ・レジスタ（５４１−５４８）と、
前記複数のスタック・ポインタ・レジスタおよび前記第１プロセッサに結合され、前記複数のスタック・ポインタ・レジスタにスタック・ポインタを書き込むためのスタック・ポインタ入力マルチプレクサ（５２）と、
前記複数のスタック・ポインタ・レジスタ，前記第１プロセッサ、および前記要求セレクタに結合され、前記被選択スタック・ポインタを前記第１プロセッサに送出するためのスタック・ポインタ出力マルチプレクサ（５８）と、
を含むことを特徴とする請求項５記載の通信コントローラ（１１１）。
【請求項７】
前記第１直接メモリ・アクセス・コントローラ（６０）は、
前記第１プロセッサに結合され、複数の直接メモリ・アクセス要求を格納するための直接メモリ・アクセス要求待ち行列（６２）と、
前記第１直接メモリ・アクセス要求待ち行列および前記スケジューラに結合され、前記第１直接メモリ・アクセス・メモリ・コントローラ内に格納された前記直接メモリ・アクセス要求に関連する第１要求チャネルからの送信要求をマスクするため、かつ前記第１直接メモリ・アクセス・メモリ・コントローラ内に格納された前記直接メモリ・アクセス要求に関連する第２要求チャネルからの受信要求をマスクするためのイネーブル装置（６４）と、
を含むことを特徴とする請求項６記載の通信コントローラ（１１１）。
【請求項８】
前記第１直接メモリ・アクセス・コントローラは、
直接メモリ・アクセス要求を格納するための要求バイパス・レジスタ（６８）と、
前記直接メモリ・アクセス要求待ち行列内または前記要求バイパス・レジスタ内に、直接メモリ・アクセス要求を格納すべきか否かを決定するための入力マルチプレクサ（６６）と、
前記第１メモリ・バンク，前記直接メモリ・アクセス要求待ち行列、および前記バイパス要求レジスタに結合され、前記要求バイパス・レジスタが有効な直接メモリ・アクセス要求を格納する場合には、前記要求バイパス・レジスタ内に格納される前記直接メモリ・アクセス要求を選択するための出力マルチプレクサ（６９）と、
をさらに含むことを特徴とする請求項７記載の通信コントローラ（１１１）。
【請求項９】
前記直接メモリ・アクセス要求待ち行列（６２）は、複数のメモリ・ワードを有し、
各メモリ・ワードは、第１部分と第２部分とを有し、
前記第２部分は、直接メモリ・アクセス要求を格納するためにあり、
前記第１部分は、ラベルを格納するためにあり、前記ラベルは、前記第２部分内に格納された前記直接メモリ・アクセス要求に関連する前記要求チャネルを示す、
ことを特徴とする請求項８記載の通信コントローラ（１１１）。
【請求項１０】
第１直接メモリ・アクセス・コントローラ（６０）内の前記イネーブル装置（６４）が第１要求チャネルからの送信要求をマスクするとき、前記第１要求チャネルからの送信要求がマスクされ、
前記第１直接メモリ・アクセス・コントローラ（６０）内のイネーブル装置が第２要求チャネルからの受信要求をマスクするとき、前記第２要求チャネルからの受信要求がマスクされる、
ことを特徴とする請求項７記載の通信コントローラ（１１１）。
【請求項１１】
前記周辺装置から前記第１メモリ・バンクに、かつ前記第１メモリ・バンクから前記周辺装置にデータを転送するためのブロック転送マシン（４０）をさらに有する通信コントローラ（１１１）において、
前記ブロック転送マシンは、
前記周辺装置に結合され、データを操作するためのデータ・マニピュレータ（４４）と、
前記周辺装置に結合され、ＣＲＣチェックを実行するためのＣＲＣマシン（４８）と、
前記ＣＲＣマシン，前記データ・マニピュレータ，および前記第１メモリ・バンクに結合され、前記第１メモリ・バンクから前記周辺装置に送られるデータを格納し、前記第１メモリ・バンクに書き込まれるデータを格納するためのブロック転送マシン・データ・レジスタ（４１）と、
前記ＣＲＣマシン，前記データ・マニピュレータ，および前記ブロック転送マシン・データ・レジスタに結合され、前記ブロック転送マシンを制御するためのブロック転送マシン制御装置（４６）と、
を含むことを特徴とする請求項１０記載の通信コントローラ（１１１）。
【請求項１２】
前記第１メモリ・バンクは、複数のセクション（７０１−７０８）を有し、各セクションは、前記第１プロセッサ，前記第２プロセッサ，前記直接メモリ・アクセス・コントローラ，前記第２直接メモリ・アクセス・コントローラ，および前記ブロック転送マシンに結合され、各セクションは、
情報を格納するためのメモリ・アレイと、
前記第１プロセッサ，前記第２プロセッサ，前記直接メモリ・アクセス・コントローラ，前記第２直接メモリ・アクセス・コントローラ，および前記ブロック転送マシンから、被選択装置を選択するためのメモリ・セレクタと、
前記被選択装置と前記メモリ・アレイとの間で前記データの送信を可能にするためのデータ・マルチプレクサと、
前記被選択装置が前記メモリ・アレイにアドレス・ワードを送出できるようにするためのアドレス・マルチプレクサと、
を含むことを特徴とする請求項１１記載の通信コントローラ（１１１）。
【請求項１３】
外部メモリ・バンク内のバッファに格納されたデータを処理するためにさらに対応する通信コントローラ（１１１）において、
前記通信コントローラ（１１１）は、ポインタ，状態および制御フィールド，および長さフィールドからなる少なくとも１つのバッファ記述子を前記外部メモリ・バンクから取り出し、かつ処理するために対応しており、
前記ポインタは、前記外部メモリ・バンク内のバッファを指し、
前記長さフィールドは、前記ポインタによって参照される前記バッファの長さを定義し、
前記状態および制御ワードは、Ｆ／Ｓフィールドを有し、前記第１プロセッサと前記第２プロセッサのうちどちらが前記ポインタにより参照される前記バッファにアクセスできるかを示す、
ことを特徴とする請求項５記載の通信コントローラ（１１１）。
【請求項１４】
前記通信コントローラ（１１１）は、ラップ・フィールドを有する前記バッファ記述子により参照される前記バッファが要求チャネルと関連する一組のバッファ中の最終バッファであるかどうかを示すために、前記ラップ・フィールドを取り出し、かつ循環待ち行列を形成するために対応しており、
前記第１メモリ・バンクは、一時ポインタを格納し、
一時ポインタは、前記第１プロセッサにより処理される次のメモリ・ワードを指し、
バッファは、単一のデータ・フレームからのデータを格納し、
各バッファは、複数のメモリ・ワードからなる、
ことを特徴とする請求項１３記載の通信コントローラ（１１１）。
【請求項１５】
前記第１プロセッサ（９０）は、前記バッファ記述子により参照される前記バッファが前記第１プロセッサによって処理された後、前記Ｆ／Ｓフィールドを設定し、
前記第２プロセッサ（１００）は、前記バッファ記述子により参照される前記バッファが前記第２プロセッサにより処理された後、前記Ｆ／Ｓフィールドをリセットする、
ことを特徴とする請求項１４記載の通信コントローラ（１１１）。
【請求項１６】
前記第１プロセッサがタスク・スイッチを実行するとき、前記第１メモリ・バンク内に前記更新された一時ポインタを保存し、
前記第１プロセッサがタスクからの命令の実行を開始するとき、前記第１プロセッサは、前記一時ポインタを取り出す、
ことを特徴とする請求項１４記載の通信コントローラ（１１１）。
【請求項１７】
通信コントローラによってデータ・ストリームのトランザクションを処理するための方法（９００）において、前記データ・ストリームはフレームからなり、フレームのトランザクションはタスクの実行によって処理され、タスクの実行は外部装置から情報を取り出す段階を含み、前記方法は、
トランザクションを処理する必要があるかどうかチェックする段階（９１０）と、
トランザクションを処理する必要がある場合には、前記タスクが終了するまで、または外部装置から情報を取り出す必要があるまで、タスクを実行する段階（９２０）と、
前記タスクが終了する場合には、前記トランザクションを処理する必要があるかどうかチェックする段階にジャンプする段階と、
外部装置から情報を取り出す必要がある場合には、外部装置から情報を取り出す段階を含む前記タスクの実行を停止する段階と、前記外部装置からの前記情報を取り出し（９７０）、および前記トランザクションを処理する必要があるかどうかチェックする段階にジャンプするプロセスを開始する段階と、
を含むことを特徴とする方法（９００）。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は一般に通信コントローラに関し、さらに詳しくは高性能通信コントローラに関する。
【０００２】
【従来の技術】
通信コントローラは通常、ネットワーク製品や通信製品に見出される。通信コントローラは、種々の多層通信プロトコルに従ってデータ・ストリームを処理し、１つの通信層に関連するデータ・パケットを、別の通信層に関連するデータ・パケットに変換する。
【０００３】
通信プロセッサが、種々の通信プロトコルに関連するデータ・ストリームを処理するとき、通信コントローラは、各通信プロトコルを別個のモードで処理し、種々のモード間をスキップする。
【０００４】
通信コントローラは、高速データ・ストリームを処理する必要がある。通信コントローラはさらに、種々の多層通信プロトコルに従って、データ・ストリームを処理する必要がある。高速データ・ストリームを処理するため、通信コントローラは、百ＭＩＰＳ単位以上など、極めて大きな帯域幅を有する必要がある。種々の通信プロトコルに従って、データを特に極めて高速で受信、送信および処理するためには、通信コントローラは、種々のモード間を極めて高速にスキップする必要がある。
【０００５】
図１は、先行技術に基づく旧通信チャネル１１８０，旧外部メモリ・バンク１１００および旧通信コントローラ１０１の簡易概略図である。旧通信コントローラ１０１は、モトローラのＭＣ６８３６０チップと類似する。旧通信コントローラ１０１は、旧スケジューラ１０５０，旧直接メモリ・アクセス・コントローラ（旧第１ＤＭＡ）１０６０，旧第１メモリ・バンク１０７０，旧第１プロセッサ１０９０，旧命令メモリ・バンク１１３０，旧第２プロセッサ１１００および旧インタフェース１１６０からなる。旧通信コントローラ１０１は、旧外部メモリ・バンク１１１０と結合される。旧通信コントローラ１０１はまた、別の外部メモリ・バンク，ホスト・システムおよび他のプロセッサなど（これらに限定されない）、他の外部装置とも結合できる。旧通信コントローラ１０１は、複数の外部メモリ・バンクと結合できる。説明の便宜上、複数のメモリ・バンクを、旧外部メモリ１１１０という。
【０００６】
旧スケジューラ１０５０は、入力１０５４，１０５６および入出力（Ｉ／Ｏ）１０５２を有する。旧第１ＤＭＡ１０６０は、入力１０６６，出力１０６８およびＩ／Ｏ１０６２，１０６４を有する。旧第１メモリ・バンク１０７０は、Ｉ／Ｏ１０７２，１０７４，１０７６を有する。旧第１プロセッサ１０９０は、入力１０９５，出力１０９６およびＩ／Ｏ１０９２，１０９４，１０９８を有する。旧第２プロセッサ１１００は、Ｉ／Ｏ１１０２を有する。旧外部メモリ・バンク１１１０は、Ｉ／Ｏ１１１６を有する。旧インタフェース１０６０は、Ｉ／Ｏ１１６２，１１６５を有する。
【０００７】
Ｎ個の旧周辺装置ＰＲ（Ｉ）からＰＲ（Ｎ）１１４１から１１７８は、一括して１１４０とされ、旧周辺バス１１１２と結合される。Ｎ個の旧周辺装置１１４０は、旧通信コントローラ１０１内に配置される。Ｎ個の周辺装置１１４０は、旧通信コントローラ１０１を、複数の旧通信チャネルＣＣ（Ｉ）からＣＣ（Ｋ）１１８１から１１８８（１１８０と一括表記）と結合する。旧通信チャネル１１８０は、Ｉ／Ｏ（１１８２と一括表記）を有する。旧周辺装置は、Ｉ／Ｏ（１１４４と一括表記）を有する。Ｉ／Ｏ１１８２は、Ｉ／Ｏ１１４４と結合される。
【０００８】
旧周辺装置１１４０のＩ／Ｏ１１４２，旧第１メモリ・バンク１０７０のＩ／Ｏ１０７２および旧スケジューラ１１５０の入力１０５４は、旧周辺バス１１１２と結合される。旧第１ＤＭＡ１０６０のＩ／Ｏ１０６２，旧外部メモリ・バンク１１１６のＩ／Ｏ１１１６，旧第２プロセッサ１１１０のＩ／Ｏ１１０２，および旧インタフェース１１６０のＩ／Ｏ１１６２は、単一バス１１１３と結合される。単一バス１１１３は、旧通信コントローラ１０１を種々の外部装置と結合する外部バスである。旧スケジューラ１０５０のＩ／Ｏ１０５２は、旧第１プロセッサ１０９０のＩ／Ｏ１０９２と結合される。旧第１プロセッサ１０９０のＩ／Ｏ１０９４は、旧命令メモリ・バンク１１３０のＩ／Ｏ１１３２と結合される。旧第１プロセッサ９０のＩ／Ｏ１０９５は、旧インタフェース１１６０のＩ／Ｏ１１６５と結合される。旧第１プロセッサ９０のＩ／Ｏ１０９８は、旧第１メモリ・バンク１０７０のＩ／Ｏ１０７６と結合される。旧第１プロセッサ９０の出力１０９６は、旧第１ＤＭＡ１００の入力１０６６と結合される。旧第１ＤＭＡ１０６０のＩ／Ｏ１０６４は、旧第１メモリ・バンク１０７０のＩ／Ｏ１０７４と結合される。
【０００９】
旧インタフェース１０６０は、旧第１プロセッサ１０９０によって、および単一バス１１１３へのアクセスを有するいずれの装置によってもアクセス可能な１組のレジスタである。
【００１０】
旧周辺装置は通常、１つまたは複数の通信プロトコルを処理するように特化される。一部の旧周辺装置は、単一通信チャネルと結合でき、一部は、複数の通信チャネルと結合できる。周辺装置の１つは、シリアル通信コントローラ（ＳＣＣ）であり、これは、ＩＥＥＥ８０２．３／イーサネット（登録商標），高水準／同期データ・リンク制御（ＨＤＬＣ／ＳＤＬＣ），汎用非同期送受信機（ＵＡＲＴ）など、種々の通信プロトコルを処理する。もう１つの周辺装置は逐次管理コントローラ（ＳＭＣ）であり、ＵＡＲＴを処理し、全体的にトランスペアレントな機能性を提供する。もう１つの周辺装置は、逐次周辺装置インタフェース（ＳＰＩ）であり、旧通信コントローラ１０１が、他の通信コントローラ、およびＩＳＤＮ装置やＡＤ変換装置などいくつかの周辺装置との間で、データを交換できるようにする。シリアル通信プロトコルを処理する周辺装置は通常、シフト・レジスタなど、並直列変換器からなり、これらの変換器は、通信チャネルから、直列データ・ビット・ストリームを受信し、当該ビット・ストリームを、複数のビット・ワードのセットに変換し、これが旧第１プロセッサ１０９０に送出される。これらの周辺装置はまた、シフト・レジスタなどの並直列変換器からなり、旧第１プロセッサ１０９０から複数のビット・ワードを受信して、各ワードを、単一ビットのストリームに変換する。適切には、旧周辺装置は、ステート・マシン（state machine）である。
【００１１】
旧通信コントローラ１０１は、多岐にわたる通信プロトコルに従ってデータを処理できた。旧通信コントローラ１０１は、旧命令メモリ・バンク１１３０，旧第１メモリ・バンク１０７０，または他の任意のメモリ・バンク内に格納できるプログラム可能なルーチンに従って、種々の通信プロトコルを処理できる旧第１プロセッサ１０９０を有する。データを処理するとき、旧第１プロセッサ１０９０は、旧第１メモリ・バンク１０７０または旧外部メモリ・バンク１１１０内に格納されるパラメータのセット（要求チャネル・パラメータ，通信チャネル・パラメータ）を使用する。適切には、パラメータは、各通信プロトコル（プロトコル）の一部である。通常、パラメータは技術上周知である。例えば、イーサネット（登録商標）・プロトコルに固有のパラメータは、モトローラのＭＣ６８３０ユーザーズマニュアルの７−２４７頁から７−２４８頁に、ＵＡＲＴプロトコルに固有のパラメータは、７−１４５頁に、ＨＤＬＣプロトコルに固有のパラメータは７−１７３頁に、ＢＩＳＹＮＣプロトコルに固有のパラメータは７−２０３頁に、トランスペアレント・プロトコルに固有のパラメータは７−２２５頁に記載される。要求チャネルの状態を定義する要求チャネル・パラメータ，および１つの通信チャネルの状態を定義する通信チャネル・パラメータなど、種々のパラメータがある。例えば、ＳＣＣと類似する要求チャネルの要求チャネル・パラメータは、モトローラのＭＣ６８２６０のユーザーズマニュアルの７−１２５頁、および種々の通信プロトコルの通信チャネル・パラメータは、モトローラのユーザーズマニュアルの７−１４５頁，７−１７３頁，７−２０３頁，７−２２５頁および７−２４７から７−２４８頁に記載された。
【００１２】
旧第２プロセッサ１１００は、旧第１プロセッサ１０９０を初期化して、バイト・スワッピング（byte-swapping），フレーム生成（encapsulation）および経路設定などの高水準の管理およびプロトコル機能を処理する。旧第１プロセッサ１０９０は、すべてのデータ・ストリーム・トランザクションを制御する。旧第１プロセッサ１０９０は、旧スケジューラ１１５０が、かかるトランザクションの処理要求を受け取り、旧第１プロセッサに、トランザクションを処理する必要性を知らせた後、トランザクションを処理する。いくつかの旧周辺装置からの複数の要求が存在する場合には、旧スケジューラ１０５０は、最高優先要求を選択する。
【００１３】
「タスク」は、データ・フレームの１つのトランザクションを制御するために、旧第１プロセッサ１０９０によって実行される命令セットとして定義される。通常、データのトランザクションは、周辺装置の１つからの受信または送信要求によって開始される。
【００１４】
図２は、旧第１メモリ・バンクの一部分および旧外部メモリ・バンクの一部分の概略図である。
【００１５】
通信チャネルに関連するデータ・フレームは、バッファＢＦ（ｋ）８１４内に格納され、このバッファＢＦ（ｋ）８１４のサイズはプログラムできる。データ・フレーム（各通信プロトコル内で定義）は、１つまたは複数のバッファ内に格納され、１つのバッファは、複数のデータ・フレームからのデータを格納しない。少なくとも１つのデータ・フレームは、１つの通信チャネルに関連する。１つの通信チャネルに関連するデータを格納するバッファのセットは、循環待ち行列を形成する。ほとんどのバッファは、旧外部メモリ・バンク１１１０内に配置される。バッファＢＦ（ｋ）８１４は、バッファ記述子ＢＤ（ｋ）８１２によって参照され、バッファ記述子は２８８と一括表記される。バッファ記述子のほとんどは、旧第１メモリ・バンク１０７０内に格納され、一部は、旧外部メモリ・バンク１１１０内に格納される。
【００１６】
適切には、バッファ記述子ＢＤ（ｋ）８１２は、ポインタ・フィールド（ＰＴ（ｋ））８１０，状態および制御フィールド（ＳＷ（ｋ））８０６および長さフィールド（ＬＷ（ｋ））８０８からなる。バッファＢＦ（ｋ）８１４の始まりは、ＰＴ（ｋ）８１０によって参照される。ＬＷ（ｋ）８０８は、バッファＢＦ（ｋ）８１４の長さを決定する。ＳＷ（ｋ）８０６は、Ｆ／ＳビットＦＳＢ（ｋ）８０２からなり、これは、旧第１および第２プロセッサ１０９０，１１００のうちどちらが、バッファＢＦ（ｋ）８１２を処理できるか、および／またはこれにアクセスできるか決定する。旧第１プロセッサ１０９０がＦＳＢ（ｋ）をセットするのは、ＢＦ（ｋ）８１２内に格納されるすべてのデータの送信を終了したとき、またはデータ・フレームの受信を終了したとき、または被受信データがＢＦ（ｋ）８１２を満たしたときである。旧第２プロセッサ１１００がＦＳＢ（ｋ）８０２をリセットするのは、ＢＦ（ｋ）８１４を、通信チャネルに送信されるデータで満たしたとき、またはＢＦ（ｋ）８１４内に格納されたデータの読取りを終了したときであって、当該データは、通信チャネルから受信されたものである。ＳＷ（ｋ）８０６はまた、ラップ・フィールド（wrap field）（ＷＢ（ｋ））からなり、これは、ＢＤ(ｋ)８１４が、通信チャネルに関連する最後のバッファ記述子であるかどうかを示した。ＰＴ(ｋ)８１０は、ＢＦ(ｋ)８１４の開始を指す。バッファは、複数のメモリ・ワードからなるので、一時カウンタＴＭＰ(ｋ)８１６は、ＣＣ(ｋ)から受信された新しいデータ・ワードが格納されるアドレスか、またはＣＣ(ｋ)に送出されるデータ・ワードが格納されるアドレスを指す。データ・ワードが格納／送信された後、ＴＭＰ(ｋ)８１６は更新される。
【００１７】
各バッファ記述子ＢＤ(ｋ)８１４は、記述子ポインタＤＰ(ｋ)８１８によって参照される。記述子ポインタは、旧第１メモリ・バンク１０７０内に格納される。
【００１８】
旧第１プロセッサ１０９０は、バッファＢＦ(ｋ)８１４の処理を終了するまでは、新しいバッファ記述子ＢＤ（ｋ＋１）を取り出さず、このバッファ記述子に関連してバッファＢＦ（ｋ＋１）内に格納されたデータを処理しない。
【００１９】
データの送受信は、要求通信パラメータ，通信チャネル・パラメータ，ＴＭＰ(ｋ)８１６，ＤＰ(ｋ)８１８，ＢＤ(ｋ)８１２，およびＢＦ(ｋ)８１４内に格納されたデータ（情報）を取り出す段階を含む。外部メモリから情報を取り出す必要がある場合には、旧第１プロセッサ１０９０は、旧第１ＤＭＡ１０６０を起動し、当該情報が取り出されるまで待機する。当該情報が取り出された後、旧第１プロセッサ１０９０は、旧外部メモリ１１００からの情報の取り出しを含んだタスクを実施し続ける。
【００２０】
旧第１プロセッサ１０９０と旧第２プロセッサ１０１０は、１つの外部バスを共用し、これにより、旧通信コントローラ１０１の周波数および利用可能な帯域幅を制限する。
【００２１】
外部メモリからの情報取り出しなど時間のかかる動作が終了する間、旧第１プロセッサ１０９０はアイドル状態となり、周波数を低減した。
【００２２】
旧通信コントローラ１０１は、必要な帯域幅を持たず、タスク間のスキップができず、高速データ・ストリーム、特に、種々の通信プロトコルに関連する高速データ・ストリームを処理することができなかった。
【００２３】
高速データ・ストリーム、特に種々の通信プロトコルに関連した高速データ・ストリームを処理することができる改良された高性能通信コントローラに対する必要性が存在する。
【００２４】
【好適な実施例の説明】
一般に、本発明の１側面は、高速データ・ストリーム、および特に種々の通信プロトコルに関連する高速データ・ストリームを処理する能力である。
【００２５】
使用された個々の語と表現、詳細な説明と添付図面に開示される個々の構造と動作面の詳細は、説明のためだけであって、いかなる方法でも添付請求の範囲に記載される本発明の範囲を制限することを意図するものではないことに注意されたい。
【００２６】
図３は、本発明の好適な実施例による通信チャネル１８０，外部メモリ・バンク１１０および通信コントローラ１１１の概略図である。破線１１９に示されるように、通信コントローラ１１１は、スケジューラ５０，第１ＤＭＡ６０，第２ＤＭＡ１６０，第１メモリ・バンク７０，第１プロセッサ９０，命令メモリ・バンク１３０，第２プロセッサ１００および複数の周辺装置（１４０と一括表記）からなる。通信コントローラ１１１は、２つの外部バス、すなわち第１バス１１３と第２バス１１４とに結合される。通信コントローラはまた、外部メモリ・バンク１１０、および複数の通信チャネル（１８０と一括表記）と結合される。適切には、複数の通信チャネル１８０は、複数の周辺装置１４０と結合される。通信コントローラ１１１はまた、別の外部メモリ・バンク，ホスト・システムおよびその他のプロセッサなど他の外部装置（これらに限定されない）と結合できる。通信コントローラはまた、ブリッジ１２０，インタフェース１６０およびブロック転送マシン（ＢＴＭ）４０から構成できる。通信コントローラ１１１は、複数の外部メモリ・バンクと結合できる。説明の便宜上、複数のメモリ・バンクは、外部メモリ・バンク１１０と称される。
【００２７】
スケジューラ５０は、入力５６１から５６８とＩ／Ｏ５２とを有する。第１ＤＭＡは、出力６７とＩ／Ｏ６２，６４，６５とを有する。第２ＤＭＡ１６０は、第１ＤＭＡ６０と類似し、出力１６７とＩ／Ｏ１６２，１６４，１６５とを有する。第１メモリ・バンクは、Ｉ／Ｏ７２，７４，７６，７８を有する。第１プロセッサ９０は、Ｉ／Ｏ９２，９３，９４，９５，９６，９７，９８（説明の便宜上、Ｉ／Ｏ９７は図８に記載）を有する。第２プロセッサ１００はＩ／Ｏ１０２，１０４を有する。外部メモリ・バンク１１０は、Ｉ／Ｏ１１６，１１８を有する。命令メモリ・バンク１３０は、Ｉ／Ｏ１３２を有する。ＢＴＭ４０は、Ｉ／Ｏ４３，４５，４７（説明の便宜上、Ｉ／Ｏ４６は図８に記載）。ブリッジ１２０は、Ｉ／Ｏ１２４，１２２を有する。インタフェース１６０は、Ｉ／Ｏ１６２，１６４を有する。Ｍ個の周辺装置ＰＲ（１）からＰＲ（Ｍ）１４０１から１４０８（１４０と一括表記）は、Ｍ個のＩ／Ｏ（１４４と一括表記）と、Ｍ個のＩ／Ｏ（１４２と一括表記）を有する。Ｍ個の周辺装置１４０は、通信コントローラ１１１内に配置されるのが望ましい。複数の（Ｍ）周辺装置１４０は、Ｉ／Ｏ１４４，１８２を介して、通信コントローラ１１１を、複数の（Ｋ）通信チャネルＣＣ（１）からＣＣ（Ｋ）１８０１から１８０８（１８０と一括表記）と結合する。
【００２８】
周辺装置１４０のＩ／Ｏ１４２，ＢＴＭ４０のＩ／Ｏ４３およびスケジューラ５０の入力５６１から５６８は、周辺バス１１２と結合される。第２ＤＭＡ１６０のＩ／Ｏ１６２，外部メモリ・バンク１１０のＩ／Ｏ１１８，第２プロセッサ１１０のＩ／Ｏ１０４およびブリッジのＩ／Ｏ１６２は、第２バス１１４と結合される。第１ＤＭＡ６０のＩ／Ｏ６２，外部メモリ・バンク１１０のＩ／Ｏ１１６およびブリッジ１２０のＩ／Ｏ１２２は、第１バス１１３と結合される。第１メモリ・バンク７０のＩ／Ｏ７２は、ＢＴＭ４０のＩ／Ｏ４５と結合される。第１メモリ・バンク７０のＩ／Ｏ７４は、第２ＤＭＡ１６０のＩ／Ｏ１６４と結合される。第１メモリ・バンク７０のＩ／Ｏ７８は、第１ＤＭＡ６０のＩ／Ｏ６４と結合される。第１メモリ・バンク７０のＩ／Ｏ７６は、第１プロセッサ９０のＩ／Ｏ９８と結合される。第１プロセッサ９０のＩ／Ｏ９３は、第２ＤＭＡ１６０のＩ／Ｏ１６５と結合される。第１プロセッサ９０のＩ／Ｏ９６は、第１ＤＭＡ６０のＩ／Ｏ６５と結合される。第１プロセッサ９０のＩ／Ｏ９４は、命令メモリ・バンク１３０のＩ／Ｏ１３２と結合される。第１プロセッサ９０のＩ／Ｏ９５は、インタフェース１６０のＩ／Ｏ１６４と結合される。第１プロセッサ９０のＩ／Ｏ９２は、スケジューラ５０のＩ／Ｏ５２と結合される。第２プロセッサ１００のＩ／Ｏ１０２は、ブリッジ１２０のＩ／Ｏ１２４と結合される。第２ＤＭＡ１６０のＩ／Ｏ１６７および第１ＤＭＡ６０のＩ／Ｏ６７は、マスキング論理（図６に示される）を介して、スケジューラの入力５６１から５６８と結合される。
【００２９】
ブリッジ１２０は、第２プロセッサ１００を第１バス１１３とインタフェースさせるために使用される。インタフェース１６０は、レジスタからなり、第１プロセッサ９０を、第１バス１１３を介して、第２プロセッサ１００など種々の装置と結合するのに使用される。インタフェース１６０は、第１プロセッサ９０に命令を書き込むのに用いることができる。
【００３０】
周辺装置１４０の中の一部の周辺装置は、バッファまたは待ち行列からなり、これは、通信チャネル１８０の中の１つまたは複数の通信チャネルと結合される。適切には、周辺装置は、より複雑化され、通常、各周辺装置は、１つまたは複数の通信プロトコルの処理に特化される。一部の周辺装置は、１つの通信チャネルと結合でき、一部は、複数の通信チャネルと結合できる。例えば、本発明の範囲を制限せずに、ＨＤＬＣプロトコルを処理する周辺装置は、２５６の通信チャネルと結合できる。
【００３１】
例えば、本発明の範囲を制限せずに、１つの周辺装置は、モトローラのＭＣ６８３６０  ＳＣＣと類似するが、非同期転送モード通信プロトコルも処理できる。もう１つの周辺装置は、モトローラのＭＣ６８３６０ＳＭＣと類似する。別の周辺装置は、モトローラのＭＣ６８３６０ＳＰＩと類似する。別の周辺装置は、通信コントローラ１１１が、ＡＴＭプロトコルを処理できるようにし、別の周辺装置は、通信コントローラ１１１が、高速イーサネット（登録商標）・プロトコルを処理できるようにする。シリアル通信プロトコルを処理する周辺装置は通常、シフト・レジスタなどの並直列変換器からなり、これは、通信チャネルから、直列データ・ビット・ストリームを受信し、当該ビット・ストリームを、複数のビット・ワードのセットに変換して、これが第１プロセッサ９０に送られる。これらの周辺装置はさらに、シフト・レジスタなどの並直列変換器からなり、第１プロセッサ９０から複数のビット・ワードを受け取って、各ワードを単一ビットのストリームに変換する。適切には、各周辺装置は、少なくとも１つの通信プロトコルに特化されるステート・マシンからなる。ステート・マシンは、生データ・ビット・ストリームを、通信プロトコルと適合性のあるビット・ストリームに変換する。
【００３２】
通信コントローラ１１１は、多岐にわたる通信プロトコルに従ってデータを処理する。通信コントローラ１１１は、第１プロセッサ９０を有し、これは命令メモリ・バンク１３０，第１メモリ・バンク７０または他のメモリ・バンク内に格納できるプログラム可能ルーチンに従って、種々の通信プロトコルを処理できる。データを処理するとき、第１プロセッサ９０は、第１メモリ・バンク７０または外部メモリ・バンク１１０内に格納されるパラメータのセット（要求チャネル・パラメータ，通信チャネル・パラメータ）を使用する。適切には、パラメータは、各通信プロトコル（プロトコル）の一部である。通常、パラメータは、技術上周知である。例えば、本発明の範囲を制限せずに、イーサネット・プロトコルに固有のパラメータは、モトローラのＭＣ６８３６０ユーザーズマニュアルの７−２４７頁から７−２４８頁に、ＵＡＲＴプロトコルに固有のパラメータは７−１４５頁に、ＨＤＬＣプロトコルに固有のパラメータは７−１７３頁に、ＢＩＳＹＮＣプロトコルに固有のパラメータは７−２０３頁に、トランスペアレント・プロトコルに固有のパラメータは７−２２５頁に記載された。要求チャネルの状態を定義する要求チャネル・パラメータ，および１つの通信チャネルの状態を定義する通信チャネル・パラメータなど、種々のタイプのパラメータが存在する。例えば、ＳＣＣと類似する要求チャネルの要求チャネル・パラメータは、モトローラのＭＣ６８２６０ユーザーズマニュアルの７−１２５頁に、種々の通信プロトコルの通信チャネル・パラメータは、モトローラのユーザーズマニュアルの７−１４５頁，７−１７３頁，７−２０３頁，７−２２５頁および７−２４７頁から７−２４８頁に記載された。
【００３３】
第２プロセッサ１００は、第１プロセッサ９０を初期化し、バイト・スワッピング, フレーム生成および経路設定など、高水準の管理とプロトコル機能を処理する。適切には第２プロセッサは、モトローラのＭＣ６８３６０チップ（モトローラのＭＣ６８３６０チップのユーザーズマニュアルに記載）のＣＰＵ３２＋に類似する。第１プロセッサ９０は、データ・ストリーム・トランザクションを制御する。
【００３４】
「タスク」とは、フレームのトランザクションを制御するために、第１プロセッサ９０によって実行される命令セットとして定義される。通常、フレームのトランザクションは、周辺装置の１つからの受信または送信要求によって開始される。
【００３５】
適切には、周辺装置は、データを受信するか、または送信することができる。説明の便宜上、各周辺装置１４０は、２つの要求チャネル、すなわち、データを送信して、送信要求を送るための送信要求チャネルと、データを受信して、受信要求を送るための受信要求チャネルからなるものと見なされる。説明の便宜上、ｚ番目のチャネルはＲＣ（ｚ）と表され、ｚ５５５は、１から２Ｍの値を有する指標である。Ｚ５５５は、ｚ番目の要求チャネルが、受信または送信要求を送ったことを示す。
【００３６】
適切には、通信コントローラ１１１によって処理されるデータは、外部メモリ・バンク１１０内に格納され、このプロセスは、バッファＢＦ（ｋ），バッファ記述子ＢＤ（ｋ），記述子ポインタＤＰ（ｋ），ポインタ・フィールドＰＴ（ｋ），一時ポインタＴＭＰ（ｋ），状態および制御フィールドＳＣＷ（ｋ），長さフィールドＬＷ（ｋ），第１と第２のプロセッサ９０，１００のうちどちらがバッファＢＦ（ｋ）を処理できるか、および／またはアクセスできるか決定するＦ／ＳビットＦＳＢ（ｋ）の使用を含む。これらＢＦ（ｋ），ＢＤ（ｋ），ＤＰ（ｋ），ＰＴ（ｋ），ＴＭＰ（ｋ），ＳＣＷ（ｋ），ＬＷ（ｋ）およびＦＳＢ（ｋ）は、旧通信プロセッサ１０１のバッファＢＦ（ｋ），バッファ記述子ＢＤ（ｋ），記述子ポインタＤＰ（ｋ），ポインタ・フィールドＰＴ（ｋ），状態および制御フィールドＳＣＷ（ｋ），ラップ・フィールドＷＢ（ｋ），長さフィールドＬＷ（ｋ）およびＦ／ＳビットＦＳＢ（ｋ）と類似する。第１プロセッサ９０がＦＳＢ（ｋ）をセットするのは、ＢＦ（ｋ）内に格納されたすべてのデータの送信を終了したとき、またはデータ・フレームの受信を終了したとき、または被受信データがＢＦ（ｋ）を満たしたときである。第２プロセッサ１００がＦＳＢ（ｋ）をリセットするのは、ＢＦ（ｋ）が通信チャネルに送信されるデータで満たされたとき、またはＢＫ（ｋ）内に格納されたデータの読取りを終了したときであって、当該データは、通信チャネルから受信されたものである。ＰＴ（ｋ）は、ＢＦ（ｋ）の始まりを指す。
【００３７】
データ・ワードが格納／送信された後、ＴＭＰ（ｋ）は更新される。更新されたＴＭＰ（ｋ）は、第１プロセッサ９０がタスク・スイッチを実行するか、および／またはこれに従ってタスクの実施を開始するときに、第１メモリ・バンクに送出される、および／または第１メモリ・バンクから送出される。
【００３８】
第１プロセッサ９０は通常、現在バッファＢＦ（ｋ）全体の処理を終了するまでは、新しいバッファ記述子ＢＤ（ｋ＋１）を取り出さず、バッファＢＦ（ｋ＋１）内に格納されたデータを処理しない。
【００３９】
後に図１０に関して詳細に説明されるように、データの送受信は、要求チャネル・パラメータ，通信チャネル・パラメータ，ＴＭＰ（ｋ），ＤＰ（ｋ），ＢＤ（ｋ）と，ＢＦ（ｋ）内に格納されたデータの取り出しを含む。上記の取り出しの間、ＤＭＰ動作を実施することが必要な場合であって、ＤＭＡ要求が第１バス１１３もしくは第２ＤＭＡ１６０へのアクセスを要求する場合には、第１プロセッサは第１ＤＭＡ６０をアクティブにし、またはＤＭＡ要求が第２バス１１４へのアクセスを要求する場合には、第１プロセッサ９０は第２ＤＭＡ６０をアクティブにした。
【００４０】
図４は、本発明の好適な実施例による第１ＤＭＡ６０の制御セクションの概略図である。第１ＤＭＡ６０の制御セクションは、第２ＤＭＡの制御セクションと類似する。適切には、第１ＤＭＡ６０の制御セクションは、ＤＭＡ要求待ち行列（待ち行列）６２およびイネーブル装置（enable unit１）６４からなる。後に詳細に説明するように、待ち行列６２は、複数のＤＭＡ要求とイネーブル装置６４とを格納できる。イネーブル装置６４は、要求チャネルからスケジューラ５０に送られる送信要求または受信要求をマスクする。第１ＤＭＡ６０の制御セクションは、待ち行列６２，イネーブル装置６４，要求バイパス・レジスタ（バイパス・レジ）６８，入力マルチプレクサ（ＤＩ＿ＭＵＸ），出力マルチプレクサ（ＤＯ＿ＭＵＸ）６９からなることが望ましい。ＤＩ＿ＭＵＸ６６は、入力６６２，６６８と出力６６６とを有する。待ち行列６２は、入力６２６，出力６２８，および複数のＮ個の出力（６２４と一括表記）を有する。パイパス・レジ６８は、入力６８２と出力６８４，６８６とを有する。ＤＯ＿ＭＵＸ６９は、入力６９２，６９４，６９６と出力６９８とを有する。イネーブル装置６４は、複数のＮ入力（６４６と表記），入力６４２、および第１ＤＭＡ６０の出力６７と結合される２Ｍビット出力６７６を有する。ＤＩ＿ＭＵＸ６６の入力６６２，６６８は、第１ＤＭＡ６０の入力６５と結合される。
【００４１】
待ち行列６２は、Ｎ個のメモリ・ワード６２１から６２８を有する。適切には、メモリ・ワード６２１から６２８はそれぞれ、２つの部分６２（１，１）から６２（Ｎ，１）と、６２（１，２）から６２（Ｎ，２）とを有する。ｚ５５５を格納するための第１部分６２（１，１）から６２（Ｎ，１）は、どの要求チャネルが、直接アクセス・メモリ要求（ＤＭＡ要求）に関連するかを示す。第２部分６２（１，２）から６２（Ｎ，２）は、ＤＭＡ要求を格納するためのものである。ＤＭＡ６０は、メモリ内の第１位置から、メモリ内の第２位置に、情報ブロックを移動する、および／またはコピーする。適切には、ＤＭＡ要求は、ブロックの送信元，宛先およびサイズを含み、これらは、第１ＤＭＡ６０によって転送される。
【００４２】
バイパス・レジ６８は、２つの部分を有する。第１部分６８１は、ｚ５５５を格納するためのもので、第２部分６８２は、ＤＭＡ要求を格納するためのものである。
【００４３】
ＤＩ＿ＭＵＸ６６は、入力６６４を介して、ＤＭＡ要求とｚ５５５とを受信する。ＤＩ＿ＭＵＸ６６は、入力６６８を介して、ＢＹＱ信号６６８を受信し、この信号は、ＤＭＡ要求とｚ５５５をバイパス・レジ６８または待ち行列６２に書き込むかどうか決定する。
【００４４】
バイパス・レジ６８が空でない場合には、ＤＯ＿ＭＵＸ６９は入力６９２を介して、制御信号を受信し、この信号は、入力６９６を選択させ、バイパス・レジ６８内に格納されるＤＭＡ要求を出力させる。空である場合には、ＤＯ＿ＭＵＸ６９は、入力６９４を選択し、第２部分６２１２に格納されるＤＭＡ要求を出力する。
【００４５】
送信要求はタスクを開始する。受信要求はタスクを開始する。
【００４６】
第１部分６２（１，１）から６２（Ｎ，１）は、待ち行列６２の出力６２４を介して、イネーブル装置６４の入力６４６と結合される。第１プロセッサ９０が、ＲＣ（ｚ）に関連するＤＭＡ要求を第１ＤＭＡ６０に送出するとき、ＲＣ（ｚ）の送信要求または受信要求は非アクティブとなる。ＲＣ（ｚ）に関連するすべてのＤＭＡ要求が実施された後、その受信または送信要求はアクティブとなる。通常、受信または送信要求は、当該要求に関連するタスクが終了するときに、非アクティブとなる。
【００４７】
イネーブル装置６４は、ＤＭＡ待ち行列６２内に格納されるＤＭＡ要求に関連する要求チャネルの送信または受信要求をマスクする。イネーブル装置６４は、出力６４８を介して、対応するｚ５５５を有するイネーブル信号を、スケジューラ５０に送出することができる。適切には、出力６４８は２Ｍビット，すなわち２Ｍ個の要求チャネルそれぞれにつき１ビットを有し、イネーブル装置６４は、１ビット信号を、ＲＣ（ｚ）に関連する出力６４８のｚ番目のビットに送出する。
【００４８】
図５は、本発明の好適な実施例による第１ＤＭＡ６０のバッファ・セクションの概略図である。第１ＤＭＡ６０のバッファ・セクションは、第２ＤＭＡ１６０のバッファ・セクションと類似する。バッファ・セクションは、第１送信（ｔｘ）バッファ６１２，第２送信（ｔｘ）バッファ６１４，第１受信（ｒｘ）バッファ６１６，第２受信（ｒｘ）バッファ６１８，送信制御装置６１０，受信制御装置６１５からなる。
【００４９】
第１ｔｘバッファ６１２は、入力６１２６，６１２４と出力６１２２とを有する。第２ｔｘバッファ６１４は、入力６１４６，６１４４と出力６１４２とを有する。送信制御装置６１０は、入力６１０８と出力６１０４，６１０２とを有する。受信制御装置６１５は、入力６１５８と出力６１５４，６１０５とを有する。第１ｒｘバッファ６１６は、入力６１６２，６１６４と出力６１６６とを有する。第２ｒｘバッファ６１８は、入力６１８２，６１８４と出力６１８６とを有する。
【００５０】
第１ｔｘバッファ６１２の出力６１２２と第１ｒｘバッファ６１６の入力６１６２は、第１ＤＭＡ６０のＩ／Ｏ６４，６２と結合される。第２ｔｘバッファ６１４の入力６１４６と第２ｒｘバッファ６１８の出力６１８６とは、第１バス１１３と結合される。第１ｔｘバッファ６１２の入力６１２６は、第２ｔｘバッファ６１４の出力６１４２と結合される。第１ｒｘバッファ６１６の出力６１６６は、第２ｒｘバッファ６１８の入力６１８２と結合される。ＤＯ＿ＭＵＸ６９の出力８９８は、受信制御装置６１５および送信制御装置６１０それぞれの入力６１５８，６１０８と結合される。送信制御装置６１０の出力６１０２は、第１ｔｘバッファ６１２の入力６１２４と結合される。受信制御装置６１５の出力６１５２は、第１ｒｘバッファ６１６の入力６１６４と結合される。送信制御装置６１０の出力６１０４は、第２ｔｘバッファ６１４の入力６１４４と結合される。受信制御装置６１５の出力６１５４は、第２ｒｘバッファ６１８の入力６１８４と結合される。
【００５１】
送信制御装置６１０は、ＤＯ＿ＭＵＸ６９から送出されるＤＭＡ命令を格納するレジスタを有し、これは、第１メモリ・バンク７０のＩ／Ｏ７８，第１プロセッサ９０のＩ／Ｏ９６のいずれかから、Ｉ／Ｏ６４，９６を介して、第１バス１１３にデータを送信する段階を含む。送信制御装置６１０は、第１ｔｘバッファ６１２を起動して、データをＩ／Ｏ６４または９６に送信し、第２ｔｘバッファ６１４を起動して、第１バス１１３からのデータを第２ｔｘバッファ６１４に読み出す。送信制御装置は、制御信号を第１および第２ｔｘバッファ６１２，６１４に送出して、第２ｔｘバッファ６１４から第１ｔｘバッファ６１２へとデータを送信する。送信制御装置は、ｚ５５５を格納するためのフィールド６１０２を有する。第１および第２ｔｘバッファは、独立して動作可能であることが望ましい。
【００５２】
受信制御装置６１５は、ＤＯ＿ＭＵＸ６９に送られるＤＭＡ命令を格納するレジスタを有し、これは、Ｉ／Ｏ６４，９６を介して、第１メモリ・バンク７０のＩ／０７８または第１プロセッサ９０のＩ／Ｏ９６のいずれかに、第１バス１１３からデータを送信する段階を含む。受信制御装置６１５は、第１ｒｘバッファ６１６を起動して、Ｉ／Ｏ６４または９６からデータを送信し、第２ｒｘバッファ６１８を起動して、第２ｒｘバッファ６１８から第１バス１１３にデータを送信する。受信制御装置６１５は、制御信号を、第１および第２ｒｘバッファ６１６，６１８に送出して、第１ｒｘバッファ６１６から第２ｒｘバッファ６１８にデータを送出する。受信制御装置６１５は、ｚ５５５を格納するためのフィールド６５０２を有する。第１および第２ｒｘバッファ６１６，６１８は、独立して動作可能であることが望ましい。
【００５３】
適切には、イネーブル装置６４は、待ち行列６２の第１部分６２１１から６２８１と６８１およびバイパス・レジスタ６８２の内容をチェックしない。受信制御装置および送信制御装置６１５，６１０のフィールド６５０２と６１０２の内容は、第１部分６２１１から６２８１と６２８の内容と比較され、符合しない場合には、フィールド６５０２，６１０２の内容は、イネーブル装置６４に送られる。
【００５４】
図６は、イネーブル装置６４，スケジューラ５０およびマスキング論理８０の概略図である。マスキング論理は、複数のＡＮＤ論理ゲートからなる。説明の便宜上、この図は、複数のＡＮＤ論理ゲート（ゲート）のうち４つの３入力論理ＡＮＤゲート８１から８４に関する。第１ゲート８１は、入力８１２，８１４，８１８と出力８１６とを有する。第２ゲート８２は、入力８２２，８２４，８２８と出力８２６とを有する。第３ゲート８３は、入力８３２，８３４，８３８と出力８３６とを有する。第４ゲート８４は、入力８４２，８４４，８４８と出力８４６とを有する。
【００５５】
イネーブル装置６４の出力６７１は、第１ゲート８１の入力８１２と結合される。イネーブル装置６４の出力６７２は、第２ゲート８２の入力８２２と結合される。イネーブル装置６４の出力６７３は、ゲート８３の入力８３２と結合される。イネーブル装置６４の出力６７４は、第４ゲート８４の入力８４２と結合される。イネーブル装置１６４の出力１６７１は、第１ゲート８１の入力８１８と結合される。イネーブル装置１６４の出力１６７２は、第２ゲート８２の入力８２８と結合される。イネーブル装置１６４の出力１６７３は、ゲート８３の入力８３８と結合される。イネーブル装置１６４の出力１６７４は、第４ゲート８４の入力８４８と結合される。第４ゲート８４の出力８４６は、スケジューラ５０の入力５６４と結合される。第３ゲート８３の出力８３６は、スケジューラ５０の入力５６３と結合される。第２ゲート８２の出力８２６は、スケジューラ５０の入力５６２と結合される。第１ゲート８１の出力８１６は、スケジューラ５０の入力５６１と結合される。第４ゲート８４の入力８４４は、回線１４０２と結合されて、要求チャネルから受信または送信要求を受け取る。第３ゲート８３の入力８３４は、回線１４０２２と結合されて、別の要求チャネルから、受信または送信要求を受け取る。第２ゲート８２の入力８２４は、回線１４０３２と結合されて、要求チャネルから受信または送信要求を受け取る。第１ゲート８１の入力８１４は、回線１４０４２と結合されて、要求チャネルから、受信または送信要求を受け取る。
【００５６】
第１ＤＭＡ６０または第２ＤＭＡ１６０が、受信チャネルに関連するＤＭＡ要求を受け取るとき、ディスエーブル信号（低水準信号）をゲートに送出し、ゲートは、当該要求チャネルから受信または送信要求を受け取り、イネーブル信号は、当該チャネルから来る要求をマスクする。第１ＤＭＡ６０または第２ＤＭＡが、要求チャネルに関連する要求がないときには、それらはイネーブル信号を、要求チャネルと結合されるゲートに送出する。第１および第２ＤＭＡ６０，１６０がともにイネーブル信号を送出する場合には、要求コレクタの受信または送信要求は、スケジューラ５０に到達できる。
【００５７】
例えば、第１ゲート８１は、第１要求チャネルＲＺ（１）と結合される。第１要求チャネルは、回線１４０４２を介して、送信要求（高水準信号）を送出する。第１または第２ＤＭＡ６０，１６０の場合には、第１要求チャネルＲＺ（１）に関連するＤＭＡ要求はない。第１および第２ＤＭＡ６０，１６０はともに、高水準信号を、第１ゲート８１の入力８１２，８１８に送出する。スケジューラ５０は、入力５６１を介して、第１要求チャネルＲＺ（１）から送信要求を受信し、第１プロセッサ９０に、送信要求を処理するために第１タスクＴ（１）の実行を開始させる。第１タスクＴ（１）がＤＭＡ要求を必要とするとき、第１プロセッサ９０は、ＤＭＡ要求を、第１または第２ＤＭＡ６０，１６０のいずれかに送出する。説明の便宜上、第１プロセッサ９０は、ＤＭＡ要求を第１ＤＭＡ６０に送出すると仮定する。第１ＤＭＡ６０が、ＤＭＡ要求の実行が終了に至らないまで、イネーブル装置６４は、低水準信号を第１ゲート８１の入力８１２に送出して、第１ゲートの出力信号を低に強制し、これにより、第１要求チャネルＲＺ（１）の送信要求をマスクする。
【００５８】
ディスエーブル信号はさらに、第１プロセッサ９０からもたらされる。ディスエーブル信号は、第１プロセッサ９０がＤＭＡ要求を送るときに送出される。第１プロセッサが、フリップフロップのリセット入力と結合される間、イネーブル装置６４がフリップフロップのセット入力と結合される間、第１プロセッサ９０とイネーブル装置６４とは、フリップフロップと結合される。フリップフロップの出力は、上述のように、ＡＮＤ論理ゲートの入力と結合される。第１プロセッサはまた、第２ＤＭＡ１６０のイネーブル装置１６４と結合される。
【００５９】
図７は、本発明の好適な実施例によるスケジューラ５０の概略図である。スケジューラ５０は、要求セレクタ５６，スタック・ポインタ入力マルチプレクサ（ｓｐ入力ｍｕｘ）５２，スタック・ポインタ出力マルチプレクサ（ｓｐ出力ｍｕｘ）５８，および２Ｍ個のスタック・ポインタ・レジスタ１ｓｐ＿ｒｅｇから２Ｍｓｐ＿ｒｅｇ５４１から５４８（５４０と一括表記）からなる。
【００６０】
スケジューラ５０は、最高２Ｍ個のスタック・ポインタのセットを格納する。スタック・ポインタは、タスクＴ（ｚ）の一部である命令Ｉ（ｚ，ｒ）のアドレスであり、ｚとｒは整数、ｚは１から２Ｍまでの値を有する。タスクＴ（ｚ）は、要求チャネルＲＣ（ｚ）からの１つの受信または送信要求に専用であることが望ましい。タスクＴ（ｚ）は、命令メモリ・バンク１３０内，第１メモリ・バンク７０内，または外部メモリ・バンク１１０内に格納できる。タスクＴ（ｚ）またはその一部は、他のメモリ・バンク内にも格納できる。
【００６１】
例えば、選択された送信または受信要求が、ＲＣ（ｃ）と関連する場合には、第１プロセッサ９０に対して、Ｄｓｐ＿ｒｅｇからスタック・ポインタを取り出させる。Ｃｓｐ＿ｒｅｇの内容は、命令Ｉ（ｃ,ｒ）のアドレスである。第１プロセッサ９０はついで、タスクＴ（ｃ）の一部を実行する。
【００６２】
通常、図１３により詳細に説明されるように、第１プロセッサ９０は、外部装置から情報を取り出す必要があるまで、ｚ番目のタスクＴ（ｚ）のいくつかの命令（Ｉ（ｚ,ｒ）からＩ（ｚ,ｒ＋ｄ）,ｄは整数）を実行する。第１プロセッサ９０は、ＲＣ（ｚ）に関連するＤＭＡ要求を第１ＤＭＡ６０または第２ＤＭＡ１６０に送出し、更新されたスタック・ポインタ（命令Ｉ（ｚ,ｒ＋ｄ＋１）を指す）を送出し、この命令はＩ（ｚ,ｒ＋ｄ）に続く。適切には、タスクＴ（ｚ）が終了する場合には、Ｉ（ｚ,Ｉ）がＺｓｐ＿ｒｅｇに送出され、待機して、新しく選択されたスタック・ポインタをスケジューラ50から受け取る。スケジューラが第１プロセッサ９０に、ｘ番目のタスクＴ（ｘ）と関連する新しく選択されたスタック・ポインタを送出するとき、第１プロセッサ９０は、タスクＴ（ｘ）の中の命令の実行を開始する。
【００６３】
「タスク・スイッチ」は、タスクの実行停止，被選択タスクの受け取り待機，および被選択タスクからの命令の実行開始のうち、第１プロセッサ９０によって行われるプロセスとして定義される。通常、被選択タスクは、停止されたタスクとは異なるが、必ずしもそうではない。
【００６４】
要求セレクタ５６は、２Ｍ個の入力５６１から５６８，制御入力５６９および出力５６０を有する。Ｓｐ入力ｍｕｘ５２は、入力５２０，５２９，２Ｍ個の出力の第１セット５１１から５１８と、２Ｍ個の出力の第２セット５２１から５２８とを有する。スタック・ポインタ・レジスタ（ｓｐレジスタ）５４１から５４８は、入力の第１セット５４１１から５４８１，入力の第２セット５４１２から５４８２および出力５４１３から５４８３を有する。Ｓｐ出力ｍｕｘ５８は、２Ｍ個の入力５８１から５８８，入力５８０および出力５８９を有する。要求セレクタ５６の出力５６０は、ｓｐ出力ｍｕｘ５８の入力５８０と結合されて、２Ｍ個の入力５８１から５８８のなかのどの入力が、出力５８９と結合されるか選択する。要求セレクタの入力５６１から５６８は、２Ｍ個の要求チャネルＲＣ（１）からＲＣ（２）（１５０と一括表記）と結合される。出力６４８は、図４により詳しく説明されるように、イネーブル信号を受信チャネルに送出する。適切には、２Ｍ個のＡＮＤ論理ゲート（図示されず）はそれぞれ２つの入力と１つの出力を有して、１つの側から、イネーブル装置６４の２Ｍビット出力と、２Ｍ個の受信および送信チャネルに結合され、もう１つの側から、２Ｍ個入力５６１から５６８と結合される。
【００６５】
送信要求は通常、要求チャネルが通信チャネルへのデータ送信を終了して、要求チャネルが新しいデータを受け取れるときに送られる。受信要求は通常、受信チャネルがデータを受信するときに送られる。
【００６６】
要求セレクタ５６は、１つまたは複数の要求チャネルから、送信または受信要求を受信したか否かをチェックする。答えが「イエス」である場合には、要求セレクタ５６は、最高優先順位を有する要求を選択する。説明の便宜上、最高優先順位を有する要求は、ｚ番目の要求チャネルＲＣ（ｚ）から来たものと仮定する。要求セレクタ５６は、制御信号をＳｐ入力ｍｕｘ５２に送出して、Ｇｓｐ＿ｒｅｇ内に格納されたｚ番目のスタック・ポインタが、第１プロセッサ９０に送出されるようにする。第１プロセッサ９０は、命令メモリ・バンク１３０から、ｚ番目のスタック・ポインタによって指し示される命令Ｉ（ｚ，ｒ）を取り出し、それとタスクＴ（ｚ）の次の命令の実行を開始する。
【００６７】
要求の優先順位は、修正または変更できる。例えば、第１入力５６１によって入力される要求は、最も低い優先順位を持つことができ、Ｍ番目の入力５６８によって入力される要求は、最も高い優先順位を持つことができる。
【００６８】
図８は、本発明の好適な実施例によるブロック転送マシン（ＢＴＭ）４０の概略図である。ＢＴＭ４０は、ＢＴＭデータ・レジスタ（ｂｄａｔａバッファ）４１，ＢＴＭ制御装置（ｂｃｏｎｔｒｏｌ装置）４６，データ・マニピュレータ（data
manipulator）４およびＣＲＣマシン４８からなる。ＢＴＭ４０は、ＣＲＣ ＲＥＧ４２，第１メモリ・バンク７０，および周辺装置１４０と結合される。ＣＲＣ ＲＥＧ４２は、第１プロセッサ９０のレジスタ群の１つである。
【００６９】
適切には、ＢＴＭ４０は、周辺装置１４０と第１メモリ・バンク７０との間のデータ転送を処理する。通常、第１プロセッサ９０は、ＢＴＭ４０に転送要求を送出し、転送されるデータの送信元と宛先およびデータ長を示す。例えば、ＢＴＭ４０が周辺装置および第１メモリ・バンク７０に、３２ビット・バスによって結合され、８×３２＝２５６ビットを転送する必要がある場合には、第１プロセッサ７０は、長さフィールド８を有する転送命令を送出して、８×３２ビット転送が実行されることを示す。通常、ＡＴＭ通信プロトコルは、４８×３２＝１５３６ビットなど、より大きなデータ・ブロックの転送を必要とする。適切には、ＢＴＭ４０は、ＤＭＡコントローラのみから構成できる。ＤＭＡ４０は、データ転送を処理し、転送するデータも処理できることが望ましい。周辺装置１４０１から１４０８はそれぞれ、Ｉ／Ｏ１４２１から１４２８を有する。
【００７０】
Ｂｄａｔａバッファ４１は、入力４１４とＩ／Ｏ４１２，４１６とを有する。ＣＲＣＲＥＧ４２は、入力４２４とＩ／Ｏ４２６とを有する。ＢＲＡＭ４３は、Ｉ／Ｏ４３２と入力４３４とを有する。データ・マニピュレータ４４は、入力４４２，４４４とＩ／Ｏ４４６とを有する。Ｂｃｏｎｔｒｏｌ装置４６は、入力４６２と出力４６４とを有する。ＣＲＣマシン４８は、入力４８４，４８２とＩ／Ｏ４８６とを有する。
【００７１】
周辺バス１１２は、ＢＴＭ４０ｌのＩ／Ｏ４３を介して、データ・マニピュレータ４４のＩ／Ｏ４４２、およびＣＲＣマシン４８の入力４８２と結合される。ｂｃｏｎｔｒｏｌ装置４６の出力４６４は、ＣＲＣ
ＲＥＧ４２の入力４２４，ＣＲＣマシンの入力４８４，データ・マニピュレータの入力４４，ＢＲＡＭ４３の入力３４４，およびｂｄａｔａバッファ４１の入力４１４と結合される。ｂｃｏｎｔｒｏｌ装置４６の入力４６２は、第１プロセッサ９０のＩ／Ｏ９７と結合される。ＣＲＣ
ＲＥＧ４２のＩ／Ｏ４２６は、ＣＲＣマシン４８のＩ／Ｏ４８６と結合される。データ・マニピュレータ４４のＩ／Ｏ４４６は、ｂｄａｔａバッファ４１のＩ／Ｏ４１２と結合される。ｂｄａｔａバッファ４１のＩ／Ｏ４１６は、Ｉ／Ｏ４５を介して、第１メモリ・バンク７０のＩ／Ｏ７２と結合される。
【００７２】
Ｂｃｏｎｔｒｏｌ装置４６は、第１プロセッサ９０の出力９７から送られる制御信号および／または命令オペランドによって起動される。Ｂｃｏｎｔｒｏｌ装置４６は、出力４６４を介して、制御信号をＣＲＣ ｒｅｇ４２，ＣＲＣマシン４８，データ・マニピュレータ４４およびデータ・バッファ４１に送出することによって、ＢＴＭ４０の動作を制御する。Ｂｃｏｎｔｒｏｌ装置４６は、制御信号を送出し、この信号はデータを、周辺バス１１２と第１メモリ・バンク７０との間で流れさせる。Ｂｃｏｎｔｒｏｌ装置は、ＣＲＣマシンに、データに関するＣＲＣチェックを実行させ、結果をＣＲＣ ＲＥＧ４２に格納させる。適切には、ＣＲＣマシン４８は、１つのクロック・サイクルの間に、ＣＲＣチェックを実施する。ＣＲＣマシンは、１つのクロック・サイクルの間に、１６ビットのデータ・ワードについて、ＣＲＣチェックを実施できることが望ましい。データ・マニピュレータ４４は、Ｉ／Ｏ４４２を介してデータ・ワードを読み取ることができ、データ・ワードをスワップするか、または桁移動（shift）されたデータ・ワードを作成することができ、Ｉ／Ｏ４４６を介して、ｂｄａｔａバッファ４１のＩ／Ｏ４１２に、新しいデータ・ワードを送出することができる。Ｂｄａｔａバッファ４１は、新しいデータ・ワードを格納して、これをＢＲＡＭ４３に送出する。Ｂｄａｔａバッファ４１はまた、ＢＲＡＭ４３からデータ・ワードを受け取って、これをデータ・マニピュレータ４４に送出することができる。データ・マニピュレータ４４は、データ・ワードをスワップするか、または桁移動されたデータ・ワードを作成することができ、Ｉ／Ｏ４４２を介して周辺バス１１２に新しいデータ・ワードを送出することができる。
【００７３】
図９は、本発明の好適な実施例による第１メモリ・バンク７０の概略図である。メモリ・バンク７０は適切には、Ｑセクション（メモリ・バンク）１ＢＡＮＫからＱＢＡＮＫ７０１から７０８からなる。１ＢＡＮＫからＱＢＡＮＫ７０１から７０８の各メモリ・バンクは、第１プロセッサ９０，第１ＤＭＡ６０，第２ＤＭＡ１６０およびＢＴＭ４０と結合される。説明の便宜上、２つのメモリ・バンク１ＢＡＮＫ７０１とＱＢＡＮＫ７０８だけが描かれるが、任意の数Ｑのメモリ・バンクを実施できる。説明の便宜上、第２ＤＭＡ１６０は描かれない。
【００７４】
第１プロセッサ９０のＩ／Ｏ９８は、第１メモリ・バンク７０のＩ／Ｏ７８を介して、１ＢＡＮＫ７０１の入力７１４８，ＱＢＡＮＫ７０８の入力７８４８，１ＢＡＮＫ７０１のＩ／Ｏ７１６８，およびＱＢＮＡＫ７０８のＩ／Ｏ７８６８と結合される。第１ＤＭＡ６０のＩ／Ｏ６４は、第１メモリ・バンク７０のＩ／Ｏ７８を介して、１ＢＡＮＫ７０１の入力７１４８，ＱＢＡＮＫ７０８の入力７８４８，１ＢＡＮＫ７０１のＩ／Ｏ７１６６およびＱＢＡＮＫ７０８のＩ／Ｏ７８６６と結合される。ＢＴＭ４０のＩ／Ｏ４５は、第１メモリ・バンク７０のＩ／Ｏ７２を介して、１ＢＡＮＫ７０１の入力７１４４，ＱＢＡＮＫ７０８の入力７８４４，１ＢＡＮＫ７０１のＩ／Ｏ７１６４およびＱＢＡＮＫ７０８のＩ／Ｏ７８６４と結合される。図８に詳述されるように、メモリ・バンク（例えば、１ＢＡＮＫ７０１）が、第１プロセッサ９０のなかの複数の要素，第１ＤＭＡ６０およびＢＴＭ４０によって同時にアクセスされる場合には、１ＢＡＮＫ７０１は、どの要素が最初にサービスを受け、最初の要素がサービスを受けた後、どれがサービスを受けるか決定する。
【００７５】
図１０は、本発明の好適な実施例による第１メモリ・バンク７０内のＱメモリ・バンクのメモリ・バンク１ＢＡＮＫ７０１の概略図である。１ＢＡＮＫ７０１は、メモリ・アレイ７１８，データ・マルチプレクサ（ＤＡＴＡ ＭＵＸ）７１６，アドレス・マルチプレクサ（ＡＤＤＲＥＳＳ ＭＵＸ）７１４およびメモリ・セレクタ７１２からなる。ＤＡＴＡ ＭＵＸ７１６は、入力７１６３とＩ／Ｏ７１６４，７１６６，７１６８，７１６９とを有する。ＡＤＤＲＥＳＳ ＭＵＸ７１４は、入力７１４４，７１４６，７１４８，７１４９と出力７１４２とを有する。メモリ・セレクタ７１２は、入力７１２４，７１２６，７１２８と出力７１２３，７１２５とを有する。メモリ・アレイ７１８は、入力７１８２とＩ／Ｏ７１８４とを有する。ＤＡＴＡ ＭＵＸ７１６の入力７１６３は、メモリ・セレクタ７１２の出力７１２３と結合される。ＡＤＤＲＥＳＳ ＭＵＸ７１４の入力７１４９は、メモリ・セレクタ７１２の出力７１２５と結合される。ＡＤＤＲＥＳＳ ＭＵＸ７１４の出力７１４２は、メモリ・アレイ７１８の入力７１８２と結合される。ＤＡＴＡ ＭＵＸ７１６のＩ／Ｏ７１６９は、メモリ・アレイ７１８のＩ／Ｏ７１８４と結合される。
【００７６】
ＢＴＭ４０，第１ＤＭＡ６０，第２ＤＭＡ１６０および第１プロセッサ９０は、ＡＤＤＲＥＳＳ ＭＵＸ７１４の入力７１４４，７１４６，７１４８およびメモリ・セレクタ７１２の入力７１２４，７１２６，７１２８に、アドレス・ワードを送出することができる。アドレス・ワード・ビットのいくつかは、メモリ・セレクタ７１２に送られ、残りのビットは、ＡＤＤＲＥＳＳ ＭＵＸ７１４に送られる。メモリ・セレクタ７１２に送られるアドレス・ビットは、１ＢＡＮＫからＱＢＡＮＫ７０１から７０８のなかの１つのメモリ・バンクを選択するのに用いられる。
【００７７】
第１プロセッサ９０，第１ＤＭＡ６０およびＢＴＭ４０のなかの１つの要素だけが、アドレス・ワードを送出する場合には、この要素が選択され、メモリ・セレクタ７１２は、出力７１２５，７１６３から、ＡＤＤＲＥＳＳ ＭＵＸ７１４の入力７１４９およびＤＡＴＡ ＭＵＸ７１６の入力７１６３に選択信号を送る。選択信号は、ＡＤＤＲＥＳＳ ＭＵＸ７１４に、被選択要素から、メモリ・アレイ７１８の入力７１８２にアドレス・ワードの残りのビットを送出させる。選択信号は、ＤＡＴＡ ＭＵＸ７１６に、メモリ・アレイ７１８のＩ／Ｏ８４を、被選択要素のＩ／Ｏと結合させる。例えば、ＢＴＭ４０が、ＢＡＮＫ１のデータ・ワードを書き込むとき、アドレス・ワードをＢＡＮＫ７０１に送り、データ・ワードを、ＤＡＴＡ ＭＵＸ７１６のＩ／Ｏ７１６４に送る。メモリ・セレクタ７１２は、アドレス・ワードのいくつかのビットを受信し、ＢＴＭ４０が、１ＢＡＮＫ７０１に（から）データ・ワードを書き込む（読み取る）ことを識別する。メモリ・セレクタ７１２は、選択信号をＤＡＴＡ ＭＵＸ７１６に送出し、これは、Ｉ／Ｏ７１６４（ひいては、ＢＴＭ４０のＩ／Ｏ４２）を、ＤＡＴＡ ＭＵＸ７１６の出力７１６９、従ってメモリ・アレイ７１８のＩ／Ｏ７１８４と結合する。
【００７８】
ＢＴＭ４０，第１ＤＭＡ６０および第１プロセッサ９０のなかの複数の要素が、１ＢＡＮＫにデータ・アドレスを送る場合には、メモリ・セレクタ７１２は、最高優先順位を持つ要素からの要求を選択して、選択信号をＤＡＴＡ ＭＵＸ７１６に、従ってＡＤＤＲＥＳＳ ＭＵＸ７１４に送出する。例えば、ＢＴＭ４０および第１プロセッサ９０が同時にアドレス・ワードを１ＢＡＮＫに送出し、第１プロセッサ９０がＢＴＭ４０よりも高い優先順位を持つ場合には、メモリ・セレクタは、ＡＤＤＲＥＳＳ ＭＵＸ７１４の入力７１４８を、メモリ・アレイ７１８の入力７１８２と結合させ、ＤＡＴＡ ＭＵＸ７１６のＩ／Ｏ７１６８を、メモリ・アレイ７１８のＩ／Ｏ７１８４と結合させる選択信号を送出する。
【００７９】
いくつかのメモリ・バンクＢＡＮＫからＱＢＡＮＫは、逐次アクセスのための高速を提供するためにインタリーブできる。このインタリービングは、第１メモリ・ワードが、第１データ・バンク内にあり、第２メモリ・ワードが第２メモリ・バンク内にあるようにする。インタリービングは、アドレス・ワードの最も重要度の低いビットおよび最も重要度の高いビットをスワップすることによって実施される。例えば、第１メモリ・バンクが、それぞれ２Ｋワードの１６のメモリ・バンクからなる場合には、アドレス・ワードは、１５ビット長にしなければならず、４ビットは、１６メモリ・バンクの１つを選択するのに用いられ、他の１１ビットは、２Ｋワード・メモリ・バンク内のどのデータ・ワードが選択されるかを定義する。インタリービングは、１５ビットのアドレス・ワードのうち重要度の低い４つのビットを、各メモリ・セレクタ７１２のアドレス・バスの最も重要度の高い４つのビットに送ることによって実施でき、残りの１１ビットは、ＡＤＤＲＥＳＳ ＭＵＸ７１４に送られる。
【００８０】
図１１は、本発明の好適な実施例により、タスクを実行し、タスク・スイッチを実施するための方法９００の好適な実施例を示すフローチャートである。
【００８１】
方法９００は、スケジューラ５０が、要求チャネルから１つまたは複数の受信または送信要求を受信したか否かをチェックする段階９１０から始まる。段階９１０は、経路９１２によって示されるように、段階９２０に続く。
【００８２】
段階９２０の間、スケジューラ５０は、最高優先順位を有する受信／送信要求を選択する。説明の便宜上、当該要求はＣＲ（ｚ）から来たと仮定する。スケジューラ５０は、被選択受信／送信要求に関連するスタック・ポインタを送出し、第１プロセッサ９０に、ＣＲ（ｘ）に関連したタスクＴ（ｚ）を実行させる。タスクＴ（ｚ）の実行は通常、データ，状態語，要求チャネル・パラメータ，通信チャネル・パラメータおよびポインタ（情報）の取り出しを含む。段階９２０の間、第１プロセッサ９０は、タスクＴ（ｚ）が終了するまで、または外部メモリ・バンク１１０または外部装置から情報を取り出す必要があるまで、タスクＴ（ｚ）を実行した。
【００８３】
経路９３４と段階９６０に示されるように、外部メモリ・バンク１１０内に記憶される情報を取り出す必要がある場合には、第１プロセッサは、ＤＭＡ要求を第１ＤＭＡ６０に送り、更新されたスタック・ポインタＳＰ（ｚ）を、スケジューラ５０のｚ番目のスタック・ポインタ・レジスタ（Ｚｓｐ＿ｒｅｇ）に格納し、ディスエーブル信号をスケジューラ５０に送出し、これは、ＲＣ（ｚ）からのいずれの送信または受信要求もマスクする。経路９６２に示されるように、段階９６０は、段階９１０に続く。
【００８４】
経路９６４に示されるように、ＤＭＡ要求が送られた後、第１ＤＭＡ６０または第２ＤＭＡ１６０が、段階９７０の間に、要求を実行して情報を取り出す。情報が取り出された後、第１ＤＭＡ６０または第２ＤＭＡ１６０は、イネーブル信号をスケジューラ５０に送って、Ｔ（ｚ）からの受信または送信要求のマスクを除去する。段階９１０，９２０，９３０，９４０，９５０，９６０が、タスクＴ（ｘ）に従って実行される間、段階９７０は実行できる。
【００８５】
破線の経路９７２に示されるように、段階９７０は段階９１０に続き、タスクＴ（ｚ）に関連する情報が取り出された後、タスクＴ（ｚ）は、段階９１０から実行できることを意味する。図４に詳述されるように、Ｔ（ｚ）は、命令のセットからなるが、第１プロセッサは、これらの命令（Ｉ（ｚ，ｒ）からＩ（ｚ，ｒ＋ｄ））のいくつかを実行し、タスク・スイッチを実行することができる。第１プロセッサ９０が、ＲＣ（ｚ）からくる要求に応答するとき、Ｉ（ｚ，ｒ＋ｄ＋１）から始まって、次の命令を取り出し、これは命令Ｉ（ｚ，ｒ＋ｄ）に続く。
【００８６】
経路９２４，９５２および段階９５０に示されるように、タスクＴ（ｚ）が終了する場合には、第１プロセッサ９０は、更新されたスタック・ポインタをＺｓｐ＿ｒｅｇに送り、方法９００は、段階９１０を開始して、スケジューラ５０が、送信／受信要求を受信したかどうかチェックする。
【００８７】
段階９６０の開始時点で、第１プロセッサ９０は、タスクＴ（ｚ）に関連する情報を取り出すために、ＤＭＡ要求を第１ＤＭＡ６０または第２ＤＭＡ１６０に送出して、ディスエーブル信号をスケジューラ５０に送出し、これは、ＣＲ（ｚ）からの送信または受信要求をマスクする。第１プロセッサ９０は、Ｚｓｐ＿ｒｅｇを現在スタック・ポインタに送る。ディスエーブル信号はまた、第１ＤＭＡ６０または第２ＤＭＡ１６０によっても送出できる。
【００８８】
図１２は、本発明の好適な実施例により、受信または送信要求によって開始されるタスクを実行するための方法１０００の好適な実施例を示すフローチャートである。
【００８９】
段階１０１４，１０１８，１０２２，１０３０は、情報の取り出しを含む。情報が、外部メモリ・バンク１１０または任意の他の外部装置に格納される場合には、第１プロセッサ９０は、図９により説明されるように、タスク・スイッチを実行する。段階１０４６は、タスク・スイッチに続けることができる。例えば、要求周辺装置が、フレーム全体ではなく、当該フレームの一部しか格納せず、第１プロセッサ９０が、当該部分の処理を終了する場合には、当該フレームの残りの部分を取り出す必要があり、このため、第１プロセッサ９０は、タスク・スイッチを実施して、フレームの別の部分が周辺装置内に格納される場合には、このタスクを実施するために戻すことができる。説明の便宜上、これらのタスク・スイッチは、図１０には示さず、方法１０００は、タスク・スイッチなしで実行されるものとして示される。
【００９０】
段階１０１０の間、第１プロセッサ９０は、Ｔ（ｚ）の第１命令Ｉ（ｚ，１）を取り出すことにより、被選択タスクＴ（ｚ）からの命令の実行を開始する。
【００９１】
経路１０１２に示されるように、段階１０１０は段階１０１４に続く。段階１０１４の間、第１プロセッサ９０は、被選択チャネルＲＣ（ｚ）の要求チャネル・パラメータを取り出して読み取る。
【００９２】
例えば、本発明の範囲を制限することなく、チャネル・パラメータは、ＰＤ（ｋ）から構成できる。ＡＴＭ通信プロトコルに従って送られるデータ・ストリームを受信するときには、第１プロセッサ９０は、セルのヘッダを読み取ることができる。ヘッダは、アドレスを含み、これは、仮想接続（ＣＶ）に関連する。このアドレスは、段階１０１８の間に、チャネル・パラメータが読み取られるチャネルを定義する。高速イーサネット（登録商標）通信プロトコルに従ってデータ・ストリームを受信する間、第１プロセッサ９０は、衝突が存在したか、予め決められた時間枠内に衝突が現れたかをチェックし、答えが「イエス」の場合には、通信コントローラ１１１は、第１プロセッサが、ＲＣ(ｚ)へのデータ送信を含むタスクを実行するときに、受信した情報を無視するか、またはデータ・ストリームを再送信する。答えが「ノー」の場合には、第１プロセッサ９０は、エラー信号を第２プロセッサ１００に送出する。
【００９３】
経路１０１６に示されるように、段階１０１４は段階１０１８に続く。段階１０１８の間、第１プロセッサは、通信チャネル・パラメータを取り出す。第１プロセッサ９０は、通信コントローラ１１１によって受信（または送信）されるデータ・ワードが、通信フレーム内の最初のデータ・ワードであるかチェックする。答えがイエスであれば、段階１０１８は段階１０２２に続き、ノーである場合には段階１０３０に続く。通常、通信チャネル・パラメータは、データ・ワードがフレーム内の最初であるかどうかを示すフィールドからなる。例えば、ＡＴＭ通信プロトコルに従ってセルを受信するとき、この表示が、セルのヘッダ内に見出される。
【００９４】
経路１０２０に示されるように、段階１０１８は段階１０２２に続く。段階１０２２の間、第１プロセッサ９０は、ＤＰ（ｋ）に従ってＢＦ（ｋ）を取り出し、これは、以前に取り出されたものである。第１プロセッサ９０は、ＣＣ（ｋ）から受け取ったデータ・ワードをＢＦ（ｋ）の始まりに書き込むことを開始するので、ＴＭＰ（ｋ）はＰＴ（ｋ）の値を得る。
【００９５】
経路１０２４に示されるように、段階１０２２は段階１０２６に続く。段階１０２６の間、第１プロセッサは、ＦＳＢ（ｋ）を読み取る。当該ビットが設定される場合には、第１プロセッサ９０は、ＢＦ（ｋ）にアクセスできない。適切には、第１プロセッサ９０は、第２プロセッサ１００がＲＳＢ（ｋ）をリセットするまで待機し、他のバッファ記述子へのデータ書き込みを試行しないが、これは必ずしも必要ない。経路１０２８に示されるように、ＦＳＢ（ｋ）がリセットされるとき、第１プロセッサは、段階１０３０の間、ＴＭＰ（ｋ）を取り出す。ＴＭＰ（ｋ）は、被受信データ・ワードが、格納されるアドレス（または送信するデータ・ワードのアドレス）を指す。
【００９６】
経路１０３２に示されるように、段階１０３０は段階１０３４に続く。通信コントローラ１１１が、周辺装置を介して、ＣＣ（ｋ）からデータを受信する間、段階１０３４が実行される場合には、１つまたは複数のデータ・ワードが、ＣＣ（ｋ）から第１メモリ・バンク７０に送られ、ついで、第１メモリ・バンク７０から、ＴＭＰ（ｋ）により示されるアドレスに送られる。通信コントローラ１１１が、周辺装置を介して、ＣＣ（ｋ）にデータを送出する間、段階１０３４が実行される場合には、１つまたは複数のデータ・ワードが、ＴＭＰ（ｋ）により示されるアドレスから、第１メモリ・バンク７０に送られ、ついで、第１メモリ・バンク７０から、ＣＣ（ｋ）に送られる。図８により説明されるように、ＢＴＭ４０は、ＣＣ（ｋ）と第１メモリ・バンク７０との間のデータの送信を処理する。
【００９７】
経路１０３６に示されるように、段階１０３４は問い合せ段階１０３８に続く。
【００９８】
問い合せ段階の間、第１プロセッサ９０は、段階１０３４の間に、ＢＦ（ｋ）内に格納された（ＢＦ（ｋ）から送られた）１つまたは複数のデータ・ワードが、フレーム内の最後のデータ・ワードだったか否か、およびＢＦ（ｋ）が一杯（空）であるか否かをチェックする。
【００９９】
経路１０４８に示されるように、両方の質問に対する答えが「ノー」である場合には、段階１０３８は段階１０４６に続く。段階１０４６の間、ＴＭＰ（ｋ）が増加し、ＢＦ（ｋ）内の空のデータ・ワードを指すようにし（ＣＣ（ｋ）に送信される次のデータ・ワード）、ＴＭＰ（ｋ）によって以前示されたメモリ・ワードに続く。経路１０５６に示されるように、段階１０４６は段階１０３４に続く。
【０１００】
経路１０４４に示されるように、ＢＦ（ｋ）の状態に関係なく、データ・ワードがフレームの終わりである場合には、問い合せ段階１０３８は段階１０５０に続く。段階１０５０の間、第１プロセッサ９０は、フレーム指示の終わりを第２プロセッサ１００に送出し、ＦＳＢ（ｋ）を設定することによってＢＤ（ｋ）をクローズし、通信チャネル・パラメータを更新する。この更新は、次の記述子ポインタＤＰ（ｋ＋１）によって、ＤＰ（ｋ）を置き換える段階を含むことができる。
【０１０１】
例えば、これは、ＡＴＭ ＡＬ５通信プロトコルに従ってデータ・ストリームを受信すること（ＡＴＭ通信プロトコルの部分集合）であるとき、第１プロセッサ９０は、フレームの送信中、エラーがあったことをＣＲＣチェックが示したかどうか、またその場合、第２プロセッサに割り込みを送信するかどうかをチェックしなければならない。第１プロセッサ９０はまた、最後のセルの長さをチェックして、ＬＷ（ｋ）を更新することができる。
【０１０２】
経路１０４０に示されるように、ＢＦ（ｋ）が一杯（通信コントローラ１１１からの被送信データ・ワードのときには空）である場合には、段階１０３８は、段階１０４２に続く。段階１０４２の間、第１プロセッサ９０は、ＦＳＢ（ｋ）を設定し、通信チャネル・パラメータを更新することによって、ＢＤ（ｋ）をクローズする。この更新は、ＤＰ（ｋ）を、次の記述子ポインタＤＰ（ｋ＋１）と置き換える段階を含めることができる。
【０１０３】
図１３は、本発明の好適な実施例による種々の受信／送信要求に対する第１プロセッサの応答を示すタイミング図である。
【０１０４】
信号ＰＲ１は、第１プロセッサ９０による第１タスクＴ（１）の実行を表す。信号ＰＲ２は、第１プロセッサ９０による第２タスクＴ（２）の実行を表し、信号ＰＲ３は、第１プロセッサ９０による第３タスクＴ（３）の実行を表す。第１タスクＴ（１）は、第２タスクＴ（２）よりも優先順位が高く、第３タスクＴ（３）は、第２タスクＴ（２）よりも優先順位が低い。
【０１０５】
遷移１５６０，１５６１に示されるように、第１プロセッサ９０は、第１タスクＴ（１）が、外部メモリ・バンク１１０から情報を取り出す必要があるまで、第１タスクＴ（１）を実行することを開始する。第１タスクＴ（１）は、優先順位が高いので、第２および第３タスクＴ（２）およびＴ（３）の前に実行される。遷移１５６１に示されるように、第１プロセッサ９０は、ＤＭＡ要求を第１ＤＭＡ６０に送り、タスク・スイッチを実施する。第１プロセッサ９０は、タスクＴ（１）の実行を停止し、遷移１５６１，１５７０に示されるように、タスクＴ（２）の実行を開始する。ＤＭＡ要求は、遷移１５６２の前に実施され、そうでなければ、第１タスクＴ（１）に関連する要求チャネルからの要求は非アクティブとなり、第１プロセッサは、タスクＴ（１）を実行しない。
【０１０６】
遷移１５６１の後、第１プロセッサ９０は、第１タスクＴ（１）を実行したのと同じ方法で、第２タスクＴ（２）の実行を開始する。第２タスクＴ（２）は、遷移１５７０，１５７１に示されるように、外部メモリ・バンク１１０から情報を取り出す必要があるまで、実行される。遷移１５７１，１５８０に示されるように、第１プロセッサ９０はついで、タスク・スイッチを実施し、すなわち、第２タスクＴ（２）の実行を停止し、第１および第２タスクＴ（１），Ｔ（２）を実行したのと同じ方法で、第３タスクＴ（３）の実行を開始する。遷移１５８０，１５８１に示されるように、第３タスクＴ（３）は、外部メモリ・バンク１１０から情報を取り出す必要があるまで、実行される。遷移１５８１の後、第１プロセッサは、要求があるかどうかをチェックし、すべての受信／送信要求が非アクティブとなるので、第１プロセッサ９０は、第１タスクＴ（１）に関連するＤＭＡ要求が終了するまで待機し、ついで、経路１５６２に示されるように、第１タスクの実行を続行する。
【０１０７】
第１タスクＴ（１）は、遷移１５６０と１５６１、遷移１５６２と１５６３，遷移１５６４と１５６５および遷移１５６６と１５６８７の間、実行される。遷移１５６１と１５６２、１５６３と１５６４，１５６５と１５６６の間、第１ＤＭＡ６０は、第１タスクＴ（１）に関連するＤＭＡ要求を実行した。第２タスクＴ（２）は、遷移１５７０と１５７１、遷移１５７２と１５７３との間で実施される。遷移１５７１と１５７２の間、第１ＤＭＡ６０または第２ＤＭＡ１６０は、第２タスクＴ（２）に関連するＤＭＡ要求を実行した。第３タスクＴ（３）は、遷移１５８０と１５８１、遷移１５８２と１５８３、遷移１５８４と１５８５、１５８６と１５８７の間、実行される。遷移１５８１と１５８２、遷移１５８３と１５８４、遷移１５８５と１５８６の間、第１ＤＭＡ６０は、第３タスクＴ（３）に関連するＤＭＡ要求を実行した。
【０１０８】
図１４は、本発明の好適な実施例による、種々の受信／送信要求に対する第１プロセッサの応答を示すタイミング図である。
【０１０９】
図１１により詳細に説明されるように、信号ＰＲ１は、第１プロセッサ９０による第１タスクＴ（１）の実行を表す。第１プロセッサは、遷移１５６０と１５６１，１５６２と１５６３，１５６４と１５６５，１５６６と１５６７の間で、第１タスクＴ（１）を実行する。遷移１５６１，１５６３，１５６５は、外部メモリ・バンクまたは他の外部装置から情報を取り出す必要性によって通常生じるタスク・スイッチを示す。
【０１１０】
信号ＣＲ１は、ＣＲ（ｚ）から送られる受信／送信要求をあらわす。遷移１５９０により示されるように、第１プロセッサ９０が、第１タスクＴ（１）の実行を終了するまで、当該要求はアクティブである。
【０１１１】
信号Ｒ１は、スケジューラ５０に入力されるマスク信号を表す。遷移１５９１により示されるように、第１タスクＴ（１）が、外部メモリ・バンク１１０から情報を取り出す必要があるとき、第１プロセッサ９０は、ＤＭＡ要求を第１ＤＭＡ６０または第２ＤＭＡ１６０に送出し、ディスエーブル信号をスケジューラ５０に送出する。このディスエーブル信号は、信号Ｒ１をリセットする。図４により詳細に説明されるように、第１ＤＭＡ６０または第２ＤＭＡ１６０が、ＲＣ（ｚ）の結果生じるすべてのＤＭＡ要求を実行した後、イネーブル信号をスケジューラ５０に送出する。このイネーブル信号は、遷移１５９２により示されるように、信号Ｒ１をセットする。遷移１５９２は、遷移１５６２の前提条件である。ＲＣ（ｚ）に関連するＤＭＡ要求が十分実行されない限り、第１プロセッサ９０は、第１タスクＴ（１）を処理しない。
【０１１２】
ＤＭＡ要求は、遷移１５６２に先立って実施され、実施されない場合には、第１タスクＴ（１）に関連する要求チャネルからの要求はいずれも非アクティブとなり、第１プロセッサは、タスクＴ（１）からの命令の実行を再開しない。
【０１１３】
遷移１５９２，１５９４，１５９６に示されるように、Ｒ１信号は、第１ＤＭＡ６０が、ＲＣ（ｚ）に関連するＤＭＡ要求の実行を終了した後、設定される。遷移１５９３，１５９５により示されるように、信号Ｒ１は、ＲＣ（ｚ）に関連するＤＭＡ要求を実行する必要があるときにリセットされる。
【０１１４】
遷移１５９７に示されるように、第１プロセッサ９０が第１タスクＴ（１）の実行を終了するときに、Ｒ１はリセットされる。
【０１１５】
このため、データ・プロセッサ命令をグループ化するための改良された方法と装置の少なくとも１つの好適な実施例と、命令システムの実施例を含む実施例が本明細書に記述された。当業者には、本発明の主題が種々の方法で変更でき、上記に特に記載された好適な形態以外にも、多くの実施例を想定できることが明らかであろう。したがって、上記に開示された本発明の主題は、説明のためのものであって制限的なものではなく、法律に認められる最大の範囲まで、添付請求の範囲は、本発明の真正の意図および範囲に属する当該すべての変更およびその他の実施例を包含することが意図される。本発明の範囲は、上述の詳細な説明ではなく、添付請求の範囲、ならびにこれと同等のものの許容できる最も広範な解釈によって判断される。
【図面の簡単な説明】
本発明は、添付請求の範囲内に詳しく示されるが、本発明の他の特徴は、添付図面とあわせて、上記の詳細な説明によって開示される。
【図１】  先行技術による旧通信チャネル，旧外部メモリおよび旧通信コントローラの簡易概略図である。
【図２】  先行技術による旧外部メモリ・バンクの一部分および旧外部メモリ・バンクの一部分の概略図である。
【図３】  本発明の好適な実施例による通信チャネル，外部メモリ・バンクおよび通信コントローラの概略図である。
【図４】  本発明の好適な実施例による第１直接メモリ・アクセス・コントローラの制御セクションの概略図である。
【図５】  本発明の好適な実施例による第１直接アクセス・メモリ・コントローラのバッファ・セクションの概略図である。
【図６】  本発明の一実施例によるイネーブル装置，スケジューラおよびマスキング論理の概略図である。
【図７】  本発明の好適な実施例によるスケジューラの概略図である。
【図８】  本発明の好適な実施例によるブロック転送マシンの概略図である。
【図９】  本発明の好適な実施例による第１メモリ・バンクの概略図である。
【図１０】  本発明の好適な実施例による第１メモリ・バンク内のメモリ・バンクの１つの概略図である。
【図１１】  本発明の好適な実施例によりタスクを実行し、タスク・スイッチを実施する方法の好適な実施例を示すフローチャートである。
【図１２】  本発明の好適な実施例により、受信または送信要求によって起動されたタスクを実行する方法の好適な実施例を示すフローチャートである。
【図１３】  本発明の好適な実施例により、種々の受信／送信要求に対する第１プロセッサの応答を示すタイミング図である。
【図１４】  本発明の好適な実施例により種々の受信／送信要求に対する第１プロセッサの応答を示すタイミング図である。
【図１】
0004530547.tif 000002
【図２】
0004530547.tif 000003
【図３】
0004530547.tif 000004
【図４】
0004530547.tif 000005
【図５】
0004530547.tif 000006
【図６】
0004530547.tif 000007
【図７】
0004530547.tif 000008
【図８】
0004530547.tif 000009
【図９】
0004530547.tif 000010
【図１０】
0004530547.tif 000011
【図１１】
0004530547.tif 000012
【図１２】
0004530547.tif 000013
【図１３】
0004530547.tif 000014
【図１４】
0004530547.tif 000015