(57)【特許請求の範囲】
【請求項１】
複数のマイクロプロセッサをサポートすることができ、前記マイクロプロセッサの各々は、データ用（Ｄ）キャッシュ、命令用（Ｉ）キャッシュ、メモリ・ポート、および入出力ユニット（IOU）を有するマルチプロセッサにおいて、前記マイクロプロセッサの各々に設けられたメモリ制御ユニット（MCU）は、
スイッチ・ネットワークと、
Ｄキャッシュ・インタフェース回路と、
前記Ｄキャッシュ・インタフェース回路を前記Ｄキャッシュと前記スイッチ・ネットワークとの間に結合するための手段と、
Ｉキャッシュ・インタフェース回路と、
前記Ｉキャッシュ・インタフェース回路を前記Ｉキャッシュと前記スイッチ・ネットワークとの間に結合するための手段と、
入出力インタフェース回路と、
前記入出力インタフェース回路を前記IOUと前記スイッチ・ネットワークとの間に結合するための手段と、
メモリ・ポート・インタフェース回路と、
前記メモリ・ポート・インタフェース回路を前記メモリ・ポートと前記スイッチ・ネットワークとの間に結合するための手段と、
前記スイッチ・ネットワークの仲裁を行うスイッチ仲裁手段と、
前記メモリ・ポートの仲裁を行うポート仲裁手段と、
前記Ｄキャッシュ、前記Ｉキャッシュおよび前記IOUのいずれか１つと前記メモリ・ポートとの間で前記スイッチ・ネットワークおよび前記メモリ・ポート・インタフェース回路を介してデータを転送する要求を前記ポート仲裁手段に転送するための手段と、
前記メモリ・ポート・インタフェース回路が前記要求を処理することができるとき、ポート使用可能信号を前記ポート仲裁手段から前記スイッチ仲裁手段へ転送するための手段と、
前記スイッチ・ネットワークが前記要求を処理することができるようになって、データを前記Ｄキャッシュ、前記Ｉキャッシュおよび前記IOUのうちの前記いずれか１つと前記メモリ・ポートとの間で転送することが可能になったとき、前記ポート使用可能信号に応答して、スイッチ使用可能信号を前記スイッチ仲裁手段から当該要求のソースおよび前記ポート仲裁手段へ転送するための手段と
を備えたことを特徴とするマルチプロセッサ・システム。
【請求項２】
請求の範囲第１項に記載のマルチプロセッサ・システムにおいて、
前記スイッチ・ネットワークは、スイッチ要求バス（SW−REQ）、スイッチ書込みデータ・バス（SW−WD）、およびスイッチ読取りデータ・バス（SW−RD）を備え、前記MCUは、
前記MCUをメモリ・アレイ・ユニット（MAU）にMAUシステム・バスを介して結合するための手段であって、前記MAUシステム・バスは、MAUアドレス・バス、MAUデータ・バスおよびMAU制御信号バスを含む手段と、
前記Ｄキャッシュと前記IOUのいずれか１つから前記MAUへの書き込みの要求に関連するアドレスを、前記MAUアドレス・バスがそのとき前記アドレスを受け入れるように使用可能になっていない場合に、一時的にストアしておくための手段と、
前記MAUへの書き込みの前記要求の前記ソースからの書込みデータを、前記MAUデータ・バスがそのとき前記書込みデータを受け入れるように使用可能になっていない場合に、一時的にストアしておくための手段と、
前記MAUへの書き込みの前記要求の前記ソースからの前記MAUへの書き込みの前記要求に関連する前記アドレスを前記スイッチ要求バス（SW−REQ）へ転送し、および前記要求に関連する前記書込みデータを前記スイッチ書込みデータ・バス（SW−WD）へ転送するための手段と、
前記MAUへの書き込みの前記要求に関連する前記アドレスを、前記スイッチ要求バス（SW−REQ）から前記MAUへの書き込みの前記要求に関連する前記アドレスを一時的にストアしておくため前記手段へ転送するための手段と、
前記書込みデータを前記スイッチ書込みデータ・バス（SW−WD）から前記書込みデータを一時的にストアしておくため前記手段へ転送するための手段と、
前記MAUアドレス・バスおよび前記書込みデータ・バスが空きになって、前記アドレスおよび前記書込みデータを受け入れることが可能になったとき、前記アドレスを、前記アドレスを一時的にストアしておく前記手段から前記MAUアドレス・バスへ転送し、および前記書込みデータを、前記書込みデータを一時的にストアしておく前記手段から前記書込みデータ・バスへ転送するための手段と
をさらに備えたことを特徴とするマルチプロセッサ・システム。
【請求項３】
請求の範囲第１項に記載のマルチプロセッサ・システムにおいて、
前記スイッチ・ネットワークは、スイッチ要求バス（SW−REQ）、スイッチ書込みデータ・バス（SW−WD）、およびスイッチ読取りデータ・バス（SW−RD）を備え、前記MCUは、
前記MCUをメモリ・アレイ・ユニット（MAU）にMAUシステム・バスを介して結合するための手段であって、前記MAUシステム・バスは、MAUアドレス・バス、MAUデータ・バスおよびMAU制御信号バスを含む手段と、
前記Ｄキャッシュ、ＩキャッシュおよびIOUのいずれか１つからの前記MAUからデータを読み取る要求に関連するアドレスを、前記MAUアドレス・バスがそのとき該アドレスを受け入れるように使用可能になっていない場合に、一時的にストアしておくための手段と、
前記MAUからの前記読取りデータを、前記読取りデータ・バス（SW−RD）がそのとき前記読取りデータを転送できるように使用可能になっていない場合に、一時的にストアしておくための手段と、
前記スイッチ要求バス（SW−REQ）が使用可能になっているとき、前記読取り要求に関連する前記アドレスを、当該要求の前記ソースから前記スイッチ要求バス（SW−REQ）へ転送するための手段と、
前記読取り要求に関連する前記アドレスを、前記MAUアドレス・バスがそのとき当該アドレスを受け入れるように使用可能になっていないとき、前記スイッチ要求バス（SW−REQ）から、当該読取り要求に関連する前記アドレスを一時的にストアしておくための前記手段へ転送するための手段と、
前記MAUアドレス・バスが前記アドレスを受け入れるように使用可能になっており、かつ前記スイッチ読取りデータ・バス（SW−RD）が前記読取りデータを転送するように使用可能になっていないとき、当該読取りデータを前記データ・バスから前記読取りデータを一時的にストアしておくための前記手段へ転送するための手段と、
前記スイッチ読取りデータ・バス（SW−RD）が前記読取りデータを転送するように使用可能になっているとき、当該読取りデータを一時的にストアしておくための前記手段から前記スイッチ読取りデータ・バス（SW−RD）へ転送し、および前記スイッチ読取りデータ・バス（SW−RD）から前記要求の前記ソースへ転送するための手段と
をさらに備えたことを特徴とするマルチプロセッサ・システム。
【請求項４】
請求の範囲第１項に記載のマルチプロセッサ・システムにおいて、
前記スイッチ・ネットワークは、スイッチ要求バス（SW−REQ）、スイッチ書込みデータ・バス（SW−WD）、およびスイッチ読取りデータ・バス（SW−RD）とを備え、前記MCUは、
入出力（I/O）データ転送の要求を、前記Ｄキャッシュおよび前記Ｉキャッシュのいずれか１つと前記IOUとの間で、前記スイッチ・ネットワークおよび前記入出力インタフェース回路を介して、転送するための手段と、
前記入出力インタフェース回路が入出力データ転送のための前記要求を処理するために使用可能になっているとき、IOU使用可能信号を前記入出力インタフェース回路から前記スイッチ仲裁手段へ転送するための手段と、
前記スイッチ・ネットワークが前記入出力データ転送のための前記要求を処理するために使用可能になっているとき、当該要求に関連するアドレスを前記スイッチ要求バス（SW−REQ）を介して前記入出力インタフェース回路へ転送するための手段と
をさらに備えたことを特徴とするマルチプロセッサ・システム。
【請求項５】
請求の範囲第１項に記載のマルチプロセッサ・システムにおいて、
前記スイッチ・ネットワークは、スイッチ要求バス（SW−REQ）、スイッチ書込みデータ・バス（SW−WD）、およびスイッチ読取りデータ・バス（SW−RD）とを備え、前記MCUは、
入出力データ転送のための前記要求が書込み要求であるとき、書込みデータを前記ＤキャッシュおよびＩキャッシュのいずれか１つから前記スイッチ書込みデータ・バス（SW−WD）を介して前記入出力インタフェース回路へ転送するための手段と、
入出力データ転送のための前記要求が読取り要求であるとき、読取りデータを前記IOU回路から前記スイッチ読取りデータ・バス（SW−RD）を介して前記ＤキャッシュおよびＩキャッシュのいずれか１つへ転送するための手段と
をさらに備えたことを特徴とするマルチプロセッサ・システム。
【請求項６】
請求の範囲第１項に記載のマルチプロセッサ・システムにおいて、
前記MCUをMAUシステム・バスを介してメモリ・アレイ・ユニット（MAU）に結合するための手段であって、前記MAUシステム・バスは、MAUアドレス・バス、MAUデータ・バスおよびMAU制御信号バスを含む手段と、
テストおよびセット・バイパス回路であって、前記テストおよびセット・バイパス回路は、前記MAUアドレス・バスに結合されて、前記MAUアドレス・バス上のアドレスに対応するスヌープ・アドレスを生成するためのスヌープ・アドレス・ジェネレータと内容アドレス・メモリ（CAM）とを有するテストおよびセット・バイパス回路と、
共用メモリ領域にアクセスする要求に関連するあらかじめ定めた命令の実行に応答して、当該領域に関連するセマフォアのアドレスを前記CAMにストアするための手段と、
前記セマフォアに対する引続いての要求があったとき、前記スヌープ・アドレスを前記CAMの内容と比較するための手段と、
前記セマフォア・アドレスがまだ前記CAMに残っているとき、セマフォア失敗信号を当該セマフォアに対する前記要求のソースに送り、これによってメモリ・バンド幅を節減するための手段と
を備えたことを特徴とするマルチプロセッサ・システム。
【請求項７】
請求の範囲第６項に記載のマルチプロセッサ・システムにおいて、前記共用メモリ領域に書込みが行われるのに応答して、前記セマフォアを解放し、前記CAMをクリアするための手段を備えたことを特徴とするマルチプロセッサ・システム。
【請求項８】
複数のマイクロプロセッサをサポートすることのできるマルチプロセッサにおけるデータを転送する方法であって、前記マイクロプロセッサの各々は、データ用（Ｄ）キャッシュ、命令用（Ｉ）キャッシュ、メモリ・ポート、入出力ユニット（IOU）およびメモリ制御ユニット（MCU）を有し、前記MCUは、スイッチ・ネットワーク、Ｄキャッシュ・インタフェース回路、前記Ｄキャッシュ・インタフェース回路を前記Ｄキャッシュと前記スイッチ・ネットワークとの間に結合するための手段、Ｉキャッシュ・インタフェース回路、前記Ｉキャッシュ・インタフェース回路を前記Ｉキャッシュと前記スイッチ・ネットワークとの間に結合するための手段、入出力インタフェース回路、前記入出力インタフェース回路を前記IOUと前記スイッチ・ネットワークとの間に結合するための手段、メモリ・ポート・インタフェース回路、前記メモリ・ポート・インタフェース回路を前記メモリ・ポートと前記スイッチ・ネットワークとの間に結合するための手段、前記スイッチ・ネットワークの仲裁を行うスイッチ仲裁手段、および前記メモリ・ポートの仲裁を行うポート仲裁手段を有するデータ転送方法において、
前記Ｄキャッシュ、前記Ｉキャッシュおよび前記IOUのいずれか１つと前記メモリ・ポートとの間で前記スイッチ・ネットワークおよび前記メモリ・ポート・インタフェース回路を介してデータを転送する要求を前記ポート仲裁手段へ転送するステップと、
前記メモリ・ポート・インタフェース回路が前記要求を処理するために空きになっているとき、ポート使用可能信号を前記ポート仲裁手段から前記スイッチ仲裁手段へ転送するステップと、
前記スイッチ・ネットワークが前記要求を処理するために空きになっているとき、スイッチ使用可能信号を前記スイッチ仲裁手段から当該要求のソースおよび前記ポート仲裁手段へ転送し、それによってデータを前記Ｄキャッシュ、前記ＩキャッシュおよびIOUの前記いずれか１つと前記メモリ・ポートとの間で転送することを許可するステップと
を備えたことを特徴とするデータ転送方法。
【請求項９】
請求の範囲第８項に記載のマルチプロセッサにおけるデータを転送する方法において、
前記マイクロプロセッサは、前記MCUをメモリ・アレイ・ユニット（MAU）にMAUシステム・バスを介して結合するための手段を備え、前記MAUシステム・バスは、MAUアドレス・バス、MAUデータ・バスおよびMAU制御信号バスを含み、前記スイッチ・ネットワークは、スイッチ要求バス（SW−REQ）、スイッチ書込みデータ・バス（SW−WD）、およびスイッチ読取りデータ・バス（SW−RD）を含み、さらに、
前記Ｄキャッシュと前記IOUのいずれか１つからの前記MAUへの書込み要求に関連するアドレスを、前記MAUへの前記書込み要求の前記ソースから前記スイッチ要求バス（SW−REQ）へ転送し、および前記MAUへの前記書込み要求の書込みデータを、前記MAUへの前記書込み要求の前記ソースから前記スイッチ書込みデータ・バス（SW−WD）へ転送するステップと、
前記書込み要求に関連する前記アドレスを、一時的にストアしておくため前記スイッチ要求バス（SW−REQ）から前記メモリ・ポート・インタフェース回路へ転送するステップと、
前記書込みデータを、一時的にストアしておくため前記スイッチ書込みデータ・バス（SW−WD）から前記メモリ・ポート・インタフェース回路へ転送するステップと、
前記書込み要求に関連する前記アドレスを、前記MAUアドレス・バスがそのとき前記アドレスを受け入れることができるように使用可能になっていないとき、一時的に前記メモリ・ポート・インタフェース回路にストアしておくステップと、
前記書込みデータを、前記MAUデータ・バスがそのとき前記書込みデータを受け入れることができるように使用可能になっていないとき、一時的に前記メモリ・ポート・インタフェース回路にストアしておくステップと、
前記MAUアドレス・バスおよび書込みデータ・バスが使用可能になり、前記アドレスおよび前記書込みデータを受け入れることができるとき、前記アドレスを、前記メモリ・ポート・インタフェース回路から前記MAUアドレス・バスへ転送し、および前記書込みデータを、前記メモリ・ポート・インタフェース回路から前記書込みデータ・バスへ転送するステップと
を備えたことを特徴とするデータ転送方法。
【請求項１０】
請求の範囲第８項に記載のマルチプロセッサにおけるデータを転送する方法において、
前記マイクロプロセッサは、前記MCUをメモリ・アレイ・ユニット（MAU）にMAUシステム・バスを介して結合するための手段を備え、前記MAUシステム・バスは、MAUアドレス・バス、MAUデータ・バスおよびMAU制御信号バスを含み、前記スイッチ・ネットワークは、スイッチ要求バス（SW−REQ）、スイッチ書込みデータ・バス（SW−WD）、およびスイッチ読取りデータ・バス（SW−RD）を含み、さらに、
前記スイッチ要求バス（SW−REQ）が使用可能になっているとき、前記Ｄキャッシュ、ＩキャッシュおよびIOUのいずれか１つからの前記MAUからデータを読み取る読取り要求に関連するアドレスを、前記読取り要求の前記ソースから前記スイッチ要求バス（SW−REQ）へ転送するステップと、
前記読取り要求に関連する前記アドレスを、前記MAUアドレス・バスがそのとき前記アドレスを受け入れることができるように使用可能になっていないとき、一時的にストアしておくため前記スイッチ要求バス（SW−REQ）から前記メモリ・ポート・インタフェース回路へ転送するステップと、
前記読取り要求に関連する前記アドレスを、前記MAUアドレス・バスがそのとき前記アドレスを受け入れることができるように使用可能になっていないとき、一時的に前記メモリ・ポート・インタフェース回路にストアしておくステップと、
前記MAUアドレス・バスが前記アドレスを受け入れることができるように使用可能になっており、かつ前記スイッチ読取りデータ・バス（SW−RD）が前記読取り要求の読取りデータを受け入れることができるように使用可能になっていないとき、前記読取りデータを、一時的にストアしておくため前記MAUデータ・バスから前記メモリ・ポート・インタフェース回路へ転送するステップと、
前記MAUからの前記読取りデータを、前記スイッチ読取りデータ・バス（SW−RD）がそのとき前記読取りデータを受け入れることができるように使用可能になっていないとき、一時的に前記メモリ・ポート・インタフェース回路にストアしておくステップと、
前記スイッチ読取りデータ・バス（SW−RD）が前記読取りデータを受け入れることができるように使用可能になったとき、前記読取りデータを、前記メモリ・ポート・インタフェース回路から前記スイッチ読取りデータ・バス（SW−RD）へ転送し、前記スイッチ読取りデータ・バス（SW−RD）から前記読取り要求の前記ソースへ転送するステップと
を備えたことを特徴とするデータ転送方法。
【請求項１１】
請求の範囲第８項に記載のマルチプロセッサにおけるデータを転送する方法において、
前記スイッチ・ネットワークは、スイッチ要求バス（SW−REQ）、スイッチ書込みデータ・バス（SW−WD）、およびスイッチ読取りデータ・バス（SW−RD）を備え、さらに、
入出力データ転送の要求を前記Ｄキャッシュおよび前記Ｉキャッシュのいずれか１つと前記IOUとの間で前記スイッチ・ネットワークおよび前記入出力インタフェース回路を介して転送するステップと、
前記入出力インタフェース回路が入出力データ転送の前記要求を処理するように使用可能であるとき、IOU使用可能信号を前記入出力インタフェース回路から前記スイッチ仲裁手段へ送るステップと、
入出力データ転送の前記要求に関連するアドレスを、前記スイッチ・ネットワークが当該要求を処理するように使用可能であるとき、前記スイッチ要求バス（SW−REQ）を介して前記入出力インタフェース回路へ転送するステップと
を備えたことを特徴とするデータ転送方法。
【請求項１２】
請求の範囲第８項に記載のマルチプロセッサにおけるデータを転送する方法において、
前記スイッチ・ネットワークは、スイッチ要求バス（SW−REQ）、スイッチ書込みデータ・バス（SW−WD）、およびスイッチ読取りデータ・バス（SW−RD）を備え、さらに、
入出力データ転送の前記要求が書込み要求であるとき、書込みデータを前記ＤキャッシュとＩキャッシュのいずれか１つから前記スイッチ書込みデータ・バス（SW−WD）を介して前記入出力インタフェース回路へ転送するステップと、
入出力データ転送の前記要求が読取り要求であるとき、読取りデータを前記IOU回路から前記スイッチ読取りデータ・バス（SW−RD）を介して前記ＤキャッシュおよびＩキャッシュのいずれか１つへ転送するステップと
を備えたことを特徴とするデータ転送方法。
【請求項１３】
請求の範囲第８項に記載のマルチプロセッサにおけるデータを転送する方法において、
前記マイクロプロセッサは、前記MCUをメモリ・アレイ・ユニット（MAU）にMAUシステム・バスを介して結合するための手段と、テストおよびセット・バイパス回路とを備え、前記MAUシステム・バスは、MAUアドレス・バス、MAUデータ・バスおよびMAU制御信号バスを含み、前記テストおよびセット・バイパス回路は、前記MAUアドレス・バス上のアドレスに対応するスヌープ・アドレスを生成するために前記アドレス・バスに結合されたスヌープ・アドレス・ジェネレータと内容アドレス・メモリ（CAM）とを有し、
共用メモリ領域に関連するセマフォアのアドレスを前記CAMにストアするステップと、
前記セマフォアの引続きの要求があったとき、前記スヌープ・アドレスを前記CAMの内容と比較するステップと、
前記セマフォア・アドレスがまだ前記CAMに残っているときは、当該セマフォアの前記要求のソースへセマフォア失敗信号を送り、これによりメモリ・バンド幅を節減するステップと
を備えたことを特徴とするデータ転送方法。
【請求項１４】
請求の範囲第13項に記載の方法において、前記共用メモリ領域への書込みに応答して、前記セマフォアを解放し、および前記CAMをクリアするステップを備えたことを特徴とするデータ転送方法。
【発明の詳細な説明】
発明の背景
発明の分野
本発明は、一般的には、マイクロプロセッサ・アーキテクチャに関し、具体的には、複数の異種マイクロプロセッサをサポートすることのできるマイクロプロセッサ・アーキテクチャに関する。
以下に列挙した米国特許出願は本件特許出願と同時に米国特許出願され、係属中のものであるが、これらの米国特許出願に開示されており、かつそれぞれ対応して出願された日本での特許出願に開示されている事項は、その出願番号を本明細書で引用することにより本明細書の一部を構成するものとする。
1.発明の名称「高性能RISCマイクロプロセッサ・アーキテクチャ」（High−Performance  RISC  Microprocessor  Architecture）SMOS−7984MCF/GBR,米国特許出願第07/727,006号、1991年７月８日出願、発明者Le  T.Nguyen他、およびこれに対応する特願平５−502150（特表平６−501122号公報）。
2.発明の名称「拡張可能RISCマイクロプロセッサ・アーキテクチャ」（Extensible  RISC  Microprocessor  Architecture）SMOS−7985MCF/GBR,米国特許出願第07/727,058号、1991年７月８日出願、発明者Le  T.Nguyen他、およびこれに対応する特願平５−502153（特表平６−501124号公報）。
3.「アーキテクチャ上の依存関係を隔離したRISCマイクロプロセッサ・アーキテクチャ」（RISC  Microprocessor  Architecture  with  Isolated  Architectura  Dependencies）SMOS−7987MCF/GBR/RCC,米題特許出願第07/726,744号、1991年７月８日出願、発明者Le  T.Nguyen他、およびこれに対応する特願平５−502152（特表平６−502034号公報）。
4.発明の名称「複数型レジスタ・セットを採用したRISCマイクロプロセッサ・アーキテクチャ」（RISC  Microprocessor  Architecture  Implementing  Multiple  Typed  Register  Sets）SMOS−7988MCF/GBR/RCC,米国特許出願第07/726,773号、1991年７月８日出願、発明者Sanjiv  Garg他、およびこれに対応する特願平５−502403（特表平６−501805号公報）。
5.発明の名称「高速トラップと例外状態をインプリメントしたRISCマイクロプロセッサ・アーキテクチャ」（RISC  Microprocessor  Architecture  Impiementing  FaSt  Trap  and  Exception  State）SMOS−7989MCF/GBR/WSW,米国特許出願第07/726,942号、1991年７月８日出願、発明者Le  T.Nguyen他、およびこれに対応する特願平５−502154（特表平６−502035号公報）。
6.発明の名称「シングル・チップ・ページ・プリンタ・コントローラ」（Single  Chip  Page  Printer  Controller）SMOS−7991MCF/GBR/HKW,米国特許出願第07/726,929号、1991年７月８日出願、発明者Derek  J.Lentz他、およびこれに対応する特願平５−502149（特表平６−501586号公報）。
なお、本明細書の記述は本件出願の優先権の基礎たる米国特許出願07/726,893号の明細書の記載に基づくものであって、当該米国特許出願の番号を参照することによって当該米国特許出願の明細書の記載内容が本明細書の一部分を構成するものとする。
関連技術の説明
複数のプロセッサをサポートできるマイクロプロセッサ・アーキテクチャを有するコンピュータ・システムは、メモリと、データ・バス、アドレス・バスおよび制御信号バスからなるメモリ・システム・バスと、データ・バス、アドレス・バスおよび制御信号バスからなる入出力（I/O）バスと、複数の入出力デバイスと、複数のマイクロプロセッサとを備えているのが代表的である。入出力デバイスは、例えば、直接メモリ・アクセス（DMA）コントローラ・プロセッサ、イーサネット（ETHERNET）チップ、その他の各種入出力デバイスで構成されている。マイクロプロセッサは、例えば、複数の汎用プロセッサと特殊用途のプロセッサとから構成されている。これらのプロセッサはメモリ・システム・バスを介してメモリに接続され、入出力バスを介して入出力デバイスに接続されている。
これらのプロセッサがMAUや入出力デバイスをアクセスするとき、アクセスの衝突が起こらないようにするには、プロセッサと入出力デバイスに優先度（優先順位）を割り当てるメカニズム（方式）を取り入れる必要がある。優先度方式には、固定優先度方式、システム条件が変化すると処理中に（on the fly）優先度を変更できる動的優先度方式、あるいは両方式を組み合わせたものがある。この種の優先度方式では、メモリと入出力デバイスの待ち時間を最小にするのと同時に、キャッシュの一貫性（cache coherency）が保たれるような形で、すべてのプロセッサがメモリと入出力デバイスに容易にアクセスできるようにすることも重要である。例えば、拒否されたセマフォア（semaphore）をアクセスするためにシステム・バスを繰返し使用するようにすると、システム・バスのバンド幅を大幅に縮減することができる。キャッシュ一貫性に問題が起こらないようにする予防的措置がとられていないと、複数のプロセッサが別々に同じデータを読み書きすることを容認することができない。
発明の概要
上述した問題に鑑みて、本発明の主目的は、１つまたは２つ以上の入出力バスを介して複数のメモリ・アレイおよび複数の入出力デバイスに接続された複数の異種プロセッサをサポートすることのできるマイクロプロセッサ・アーキテクチャで構成されたコンピュータ・システムを提供することにある。メモリ・アレイは、メモリ・アレイ・ユニット（Memory Array Unit−MAU）と呼ばれる、インタフェース回路をもつサブシステムにグループ化されている。これらのプロセッサの各々は、新規なメモリ制御ユニット（Memory Control Unit−MCU）を装備している。MCUの各々はスイッチ・ネットワークを備え、このスイッチ・ネットワークはスイッチ仲裁ユニット、データ用キャッシュ・インタフェース回路、命令用キャッシュ・インタフェース回路、入出力インタフェース回路、およびポートと呼ばれる１つまたは２つ以上のポート・インタフェース回路から構成され、ポート・インタフェース回路の各々はポート仲裁ユニットを備えている。
スイッチ・ネットワークは、マスタ（master）デバイスとスレーブ（slave）デバイスとが通信する手段となるものである。スイッチ側から見たとき、マスタ・デバイスとなり得るものには、Ｄキャッシュ、Ｉキャッシュ、または入出力コントローラ・ユニット（IOU）があり、スレーブ・デバイスとなり得るものには、メモリ・ポートまたはIOUがある。
スイッチ・ネットワークの機能は、様々な命令およびデータ要求をキャッシュ・コントローラ・ユニット（CCU）（Ｉキャッシュ、Ｄキャッシュ）とIOUから受け取ることである。これらの要求を受け取ると、スイッチ・ネットワーク内のスイッチ仲裁ユニットとポート・インタフェース回路内のポート仲裁ユニットは要求に優先順位を付けて、該当のメモリ・ポートに要求を引き渡す（これは命令アドレスによって決まる）。そのあと、ポート、場合によっては、複数のポートは必要なタイミング信号を生成し、MAUとの間で必要なデータを送受する。それが書込み（WR）要求のときは、ポートとスイッチとのやりとりは、スイッチがすべての書込みデータをプッシュして書込みデータFIFO（WDF）に入れることを終えると停止する。それが読取り（RD）要求のときは、スイッチとポートとのやりとりは、ポートから読取りデータがスイッチを経由して要求側のマスタに送り返されたときのみ終了する。
スイッチ・ネットワークは４セットの３状態（tri−state）バスから構成され、これらのバスを通してキャッシュ、IOUおよびメモリ・ポート間が結ばれている。４セットの３状態バスは、SW_REQ、SW_WD、SW_RDおよびSW_IDBSTから構成されている。本発明の代表的な実施例では、バスSW_REQは29本のワイヤで構成され、アドレス、IDおよび共用信号をマスタ・デバイスからスレーブ・デバイスへ送るために使用される。IDとは、メモリ要求に付けられたタグであり、要求側デバイスが返却するデータを正しいメモリ・アドレスと関連づけることを可能にするものである。共用信号とは、メモリ・アクセスが共用メモリに対するものであることを示した信号である。マスタ・デバイスがスレーブに対して要求を出すときは、スイッチ上にアドレスの32ビット全部を送る必要はない。これは、多重メモリ構造では、スイッチがアドレスをデコードし、要求がメモリ・ポート０、ポート１、IOU、その他に対するものかを判別できるためである。各ポートは事前に定義されたメモリ・スペースが割り振られているので、SW_REQ上にアドレスの32ビット全部を送信する必要がない。
実際には、例えば、機能コード、データ幅属性といった他の要求属性は、タイミングの制約があるためにSW_REQ上に送信されない。情報をスイッチを経由して送る場合は、必要以上に１フェーズだけ遅れてポートに到着するので、メモリ要求に対する待ち時間がさらに増加することになる。従って、この種の要求属性は専用ワイヤ上をポートに送られるので、ポートはそのステート・マシンをもっと早く始動できるので、メモリ待ち時間が減少することになる。
第８図に示すように、バスSW_WDは32本のワイヤから構成され、書込みデータをマスタ・デバイス（ＤキャッシュとIOU）からメモリ・ポート経由でFIFOへ送るために使用される。明らかなように、Ｉキャッシュはデータの読取りだけを行い、データの書込みは行わない。この３状態バスは「ダブル・ポンプ」（double−pumped）される。つまり、データ・ワードは各クロック・フェーズで転送されるので、必要とするワイヤ数が少なくなり、従って回路費用が節減される。WD00、WD01、WD10およびWD11はデータ・ワードである。これらのバスはダブル・ポンプされるので、バスが折り返してマスタから別のマスタへ切り替わるとき、バスの衝突が起こらないようにする配慮が必要である。
第９図に示すように、バスSW_RDは64本のワイヤから構成され、返却読取りデータをスレーブ・デバイス（メモリ・ポートとIOU）からマスタ・デバイスへ送り返すために使用される。データはフェーズ１のときだけ送信される。このバスは、キャッシュにタイミングの制約があり、そのためにCLK1の立下がり縁でデータが有効であることが必要であるので、ダブル・ポンプされない。データは、クロック１がハイ（高）になるフェーズ１までポートから得ることができないので、SW_RDバスをダブル・ポンプしようとしたとき、キャッシュがデータを得る最も早い時期はCLK1の正エッジであって、負エッジではない。バスSW_RDはダブル・ポンプされないので、このバスはフェース２のときだけアクティブになる（３状態ではない）。バスが別のマスタに切り替わるとき、バス・ドライバが衝突するという問題は起こらない。
バスSW_IDBSTは４本のワイヤから構成され、識別番号（ID）をマスタ・デバイスからスレーブ・デバイスへ送り、IDとバンク開始信号をスレーブ・デバイスからマスタ・デバイスへ送るために使用される。
本発明の実施例によれば、ID FIFOは各スレーブ・デバイスに１つしかない。スレーブ・デバイスからのデータは常に順番に返却されるので、IDをポートまで送る必要はない。IDは、スイッチとマスタ・デバイスとを結ぶインタフェースに各ポート用にFIFOが１個あて設けられている別々のFIFOにストアしておくことができる。このために、ポートがｎ個あればｎ個のFIFOが各インタフェースに必要になるので、本実施例に比べて回路面積が増加するが、３状態ワイヤは２本だけ少なくすることができる。
ポート・インタフェースとは、スイッチ・ネットワークと外部メモリ（MAU）とを結ぶインタフェースである。このインタフェースは、ポート仲裁ユニットと、介入（intervention）を引き起こす要求と割込みがかけられた読取り要求をストアしておく手段とを備えている。また、スヌープ・アドレス・ジェネレータ（snoopaddress generator）も備えている。さらに、このインタフェースには正しいタイミング信号を生成してメモリ・モジュールを制御する信号発生器の働きをする回路も実装されている。
本発明のスイッチ・ネットワーク内の装置、例えば、内容アドレス・メモリ（content addressable memory−CAM）、行一致比較回路、スイッチ／ポート仲裁回路にはいくつかのアルゴリズムが実装されている。
本発明のアーキテクチャにはセマフォア（semaphore）が取り入れられている。セマフォアは、マルチプロセッサ・システムにおけるソフトウェアを、下述するように「テストおよびセット」命令と同期をとるために使用されるものである。本発明のアーキテクチャでは、セマフォアはキャッシュされない。キャッシュは、CPUが「テストおよびセット」命令を実行すると、MCUからセマフォアをフェッチする。
テストおよびセット・バイパス回路には、スピン・ロックが起こると、つまり、反復的な要求がMAUシステム・バスをアクセスしてセマフォアを得ようとすると起こる、メモリ・バンド幅の損失を防止する単純なアルゴリズムが実装されている。メモリの領域、デバイスなどをロックするセマフォアでテスト命令が実行されると、CAMはそのセマフォアのアドレスをストアする。CAM内のこのエントリ（項目）は、いずれかのプロセッサがそのセマフォアを取り囲むメモリの一部領域に書込みを行うと、クリアされる。要求したセマフォアがまだCAMに残っていれば、そのセマフォアはどのプロセッサによっても解放されていないので、そのセマフォアを得るために実際にメモリをアクセスする必要はない。その代わりに、論理１のブロック（＄FFFF）（セマフォア失敗）が要求したキャッシュに送り返され、セマフォアがまだロック中であることを知らせる。従って、セマフォアは実際にはアクセスされないので、メモリ幅が節約されることになる。
セマフォアにオール１以外を書くと、そのセマフォアはクリアされる。その場合、スレーブ側CPUは共用メモリを調べて、いずれかのCPU（自身を含めて）が当該セマフォアに書込みを行ったかどうかを確かめる必要がある。いずれかのCPUがCAM内のエントリに一致するセマフォアに書込みを行っていると、CAM内のそのエントリがクリアされる。キャッシュが次にそのセマフォアへのアクセスを試みたときは、そのエントリがCAMにないので、メイン・メモリからセマフォアを実際にフェッチして、それを「失敗」、つまり、オール１にセットすることになる。
行一致比較回路の機能は、現在の要求が前の要求と同じ行アドレスをもっているかどうかを判定することである。そうであれば、ポートはRAS要求を取り消して（de−assert）、RAS課金前（pre−charge）時間ペナルティを負担する必要がない。従って、メモリ待ち時間が短縮化され、使用可能なバンド幅が増加することになる。行一致は主にダイナミック・ランダム・アクセス・メモリ（DRAM）で使用されるが、MAUを新アドレスの上位ビットにラッチする必要がなくなったので、スタチック・ランダム・アクセス・メモリ（SRAM）や読取専用メモリ（ROM）でも使用可能である。従って、メモリへのアクセス要求があると、アドレスがスイッチ・ネットワークのアドレス・バスSW_REQ上を送信され、行アドレスがデコードされ、MUXラッチにストアされる。このアドレスが前の要求の行アドレスと判定された場合は、キャッシュまたはIOUが新しい要求を出すと、新アドレスに関連するアドレスがデコードされ、その行アドレスが前の行アドレスと比較される。一致するものがあれば、行一致がヒットしたことになり、一致した要求に下述するように優先度が与えられる。
動的スイッチ／ポート仲裁回路では、２種類の仲裁が行われる。１つは、メモリ・ポートの資源、つまり、ポート0...ポートＮの仲裁であり、もう１つはスイッチ・ネットワークのアドレスおよび書込みデータ・バスの資源、SW_REQとSW_WDの仲裁である。
いくつかのデバイスはメイン・メモリからデータを同時に要求することができる。そのデバイスとは、Ｄキャッシュ、ＩキャッシュおよびIOUである。各々のマスタに特定の優先度を与える優先度方式は、「重要度」または「緊急度」の高いデバイスができる限り早くサービスを受けられるようにセットアップされる。しかし、厳格な固定仲裁方式は、優先度の低いデバイスを締め出す可能性があるために使用されていない。その代わりに、各種デバイスに異なる優先度を処理中に（on the fly）割り付ける動的仲裁方式が使用されている。この動的仲裁方式に影響を与える要因として、次のものがある。
1.  そのデバイスの固有優先度
2.  要求したアドレスは以前にサービスを受けた要求と行が一致するか。
3.  そのデバイスは余りにも多くの回数サービスを受けることが拒否されたか。
4.  そのマスタは余りにも多くの回数サービスを受けたか。
デバイスからの各要求は固有の優先度をもっている。IOUは優先度が最も高く、そのあとにＩキャッシュとＤキャッシュが続く。しかし、下述するように、Ｄキャッシュからの介入（intervention−ITV）要求は、スレーブ側処理エレメント（processing element−PE）が更新データをできる限り早く受け取る必要があるために、すべての中で優先度が最も高くなっている。
各種デバイスの固有優先度はいくつかの要因によって変更される。優先度の低いデバイスがサービスを拒否された回数はモニタされており、その回数が所定の値まで達すると、優先度の低いそのデバイスにより高い優先度が与えられる。これに対して、あるデバイスに優先度が与えられる回数もモニタされ、そのデバイスだけがバスを「独占」（hog）していれば、優先度を拒否して優先度の低いデバイスがそのバスをアクセスすることを許可する。要求の固有優先度を変更するために使用される３番目の要因は行一致（row match）である。行一致が重要なのは、主にＩキャッシュの場合である。あるデバイスが以前にサービスを受けた要求と同じ行アドレスをもつメモリ・ロケーションを要求すると、要求したデバイスの優先度は高くされる。これが行われるのは、RASの要求を取り消し（de−assert）、RASを再要求する（re−assert）手間を省くためである。行が一致して要求がサービスを受けるたびに、プログラマブル・カウンタはデクリメントされる。例えば、カウンタがゼロまで達すると、行一致優先度ビットがクリアされるので、新しいマスタにバスへのアクセス権が与えられる。ポートの新マスタが旧マスタと異なるとき、あるいは要求が行が一致した要求でないとき、プログラム可能な値が再びカウンタに事前ロード（pre−load）される。
メモリ・ポートに対する書込み要求は、スイッチ・ネットワークの書込みデータ・バス（SW_WD）が使用可能であるときだけ許可される。使用可能でないときは、他に要求があれば、その要求が選択される。１つだけ例外がある。それはＤキャッシュからの介入（ITV）要求である。このような要求が存在し、SW_WDバスが使用可能でないと、どの要求も選択されない。その代わりに、システムはSW_WDバスが解放されるまで待ってから、介入要求が許可される。
スイッチ・ネットワークには、ソフトウェアで選択可能な２つの仲裁方式が採用されている。その方式とは、次のものである。
1.  スレーブ優先度方式。この方式では、スレーブまたは要求されたデバイス（すなわち、メモリまたはIOUポート）に基づいて優先度が与えられる。
2.  マスタ優先度方式。この方式では、マスタまたは要求側のデバイス（すなわち、IOU、Ｄキャッシュ、Ｉキャッシュ）に基づいて優先度が与えられる。
スレーブ優先度方式では、優先度は常に最初にメモリ・ポート、例えば、ポート０、１、2...に与えられ、次にIOUに与えられ、再びポート０に戻って与えられる。この方式は、一般にラウンド・ロビン（round−robin）方式と呼ばれている。マスタ優先度方式は固定優先度方式であり、優先度は最初にIOUに与えられ、次にＤキャッシュおよびＩキャッシュに与えられる。スイッチ仲裁のマスタ優先度方式では、介入（ITV）要求に最高の優先度が与えられる場合もある。プリフェッチ・バッファがやがて空になるときは、Ｉキャッシュに最高の優先度が与えられる場合もある。
【図面の簡単な説明】
本発明の上記および他の目的、特徴および利点は、添付図面を参照して以下に詳述する説明で明らかにする。
第１図は、本発明による複数の異種マイクロプロセッサをサポートすることのできるマイクロプロセッサ・アーキテクチャを示すブロック図である。
第２図は、本発明によるメモリ制御ユニットを示すブロック図である。
第３図は、本発明によるＤキャッシュ・インタフェースとポート・インタフェースとの間の接続状態を示すスイッチ・ネットワークを示すブロック図である。
第４図は、本発明によるテストおよびセット・バイパス回路を示すブロック図である。
第５図は、本発明により介入信号を生成し、MAUバスの仲裁を行うために使用される回路を示すブロック図である。
第６図は、本発明による行一致比較回路を示すブロック図である。
第７図は、本発明による動的仲裁方式を示す図である。
第８図は書込み要求のタイミングを示す図である。
第９図は読取り要求のタイミングを示す図である。
発明の詳細な説明
第１図は、本発明によるマイクロプロセッサ・アーキテクチャを符号１で総称して示すものである。このアーキテクチャ１には、複数の汎用マイクロプロセッサ２、３、4...N、特殊用途プロセッサ５、オービタ（仲裁回路）６およびメモリ／メモリ・アレイ・ユニット（MAU）７が設けられている。マイクロプロセッサ２〜Ｎは複数の同種プロセッサでまたは複数の異種プロセッサで構成することが可能である。特殊用途プロセッサ５は例えばグラフィック・コントローラで構成することが可能である。プロセッサ２〜５はすべて１つまたは２つ以上のメモリ・ポートPORTO...PORTNを介してMAUシステム・バス25に接続されている。MAUシステム・バス25は、MAUデータ・バス８、ROW/COLアドレス・バス９、マルチプロセッサ制御バス10、MAU制御バス11およびバス仲裁制御信号バス12からなり、それぞれ複数の双方向信号バス13〜17で結ばれている。バス12は、例えば、アクセスの仲裁を要求し、アクセス許可を与え、あるいはMAUデータ・バス８が使用中（busy）であることを通知するために使用される。オービタ６は双方向信号ライン18を介してバス12に接続されている。MAU7はROW/COLアドレス・バス９およびメモリ制御バス11に接続されており、信号はこれらのバスから単方向信号ライン19と20を介してMAUへ転送され、双方向データ・バス21を介してMAUデータ・バス８へ転送される。データ・バス８と21は、代表例では、64ビット・バスになっているが、ソフトウェア制御の下で32ビット・バスとして動作させることも可能である。このバスは例えば、128ビットといったように、その他のビット幅にすることも可能である。
プロセッサ２〜Ｎの各々は、代表例では、入出力IOUインタフェース53を備えている。このインタフェース53は、以下で第２図を参照して詳しく説明するが、直接メモリ・アクセス（DMA）プロセッサ30、イーサネット（ETHERNET）インタフェース31、その他の入出力デバイスなどの複数の周辺入出力デバイスに、32ビット入出力バス33または任意的な32ビット入出力バス34および複数の32ビット双方向信号バス35〜42を介して接続されている。オプションとしての入出力バス34はプロセッサの１つまたは２つ以上が特殊目的入出力デバイス43をアクセスするために使用できる。
第２図に示すように、プロセッサ２−Ｎの各々は、データ用キャッシュ（Ｄキャッシュ）51と命令用キャッシュ（Ｉキャッシュ）52を備えたキャッシュ制御ユニット（CCU）49に接続されたメモリ制御ユニット（MCU）（全体を符号50で示している）と入出力ポート53を備えている。入出力ポート53は以下ではIOUと略称することがあるが、入出力バス33または34に接続されている。
MCU50は、CCU49、つまり、Ｄキャッシュ51とＩキャッシュ52（読取専用）、IOU53およびMAU7間でMAUシステム・バス25を経由してデータと命令がそこから転送（読み書き）される回路である。MCU50は、以下で詳しく説明するように、キャッシュ一貫性（cachecoherency）を保証する。このキャッシュ一貫性は、各スレーブ側CPU内のMCUが、MAUアドレス・バス９上のマスタ側CPUのすべてのトランザクションをモニタして、つまり、スヌープ（snoop）して、スレーブ側CPU内のキャッシュがマスタ側CPUから得られる新しいデータを要求しているのか、新しいデータをマスタ側CPUへ送ろうとしているのかを判断することによって達成される。MCU50は６メモリ・ポートで使用するように拡張可能であり、最高４ウェイまでのメモリ・インタリービングをMAUデータ・バス８上で行うことをサポートできる。また、外部64または32ビット・データ・バス８の使用をサポートすることができ、修正ハミング・コードを使用して１データ・ビット・エラーを訂正し、２またはそれ以上のデータ・ビット・エラーを検出する。
本発明のアーキテクチャでは、キャッシュ・サブブロック、つまり、キャッシュ・ラインのサイズは、メモリ・バス・サイズと相関関係がある。例えば、バス・サイズが32ビットならば、サブブロック・サイズは一般に16バイトとなる。バス・サイズが64ビットならば、サブブロック・サイズは一般に32バイトとなる。バス・サイズが128ビットならば、サブブロックは64バイトとなる。上述したように、MCU50は、１、２または４ウェイのインタリービング、つまり、サイクルごとに転送されるバイト数をサポートするようにプログラムできる設計になっている。
MCU50には、ポートP0...PNで示した１つまたは２つ以上のインタフェース、スイッチ・ネットワーク54、Ｄキャッシュ・インタフェース55、Ｉキャッシュ・インタフェース56および入出力インタフェース57が装備されている。第３図を参照して詳しく後述するが、ポート・インタフェースP0〜PNの各々はそれぞれをPAUO...PAUNで示したポート仲裁ユニットを備えている。スイッチ・ネットワーク54はスイッチ仲裁ユニット58を備えている。
MCU50が２つまたはそれ以上のポート・インタフェースを装備するときは、ポート・インタフェースP0−PNの各々は個別のMAUシステム・バスに接続されており、これは第１図を参照して上述したバス25と同じものである。第２図には、この種の２バスは25Oおよび25Nの符号で示されている。バス25Nはバス8N、9N、10N、11Nおよび12Nから構成され、これらはそれぞれバス13N、14N、15N、16Nおよび17NでポートPNに接続されている。バス8N〜17Nは第１図を参照して上述したバス８〜17と同じものである。同様に、ポート・インタフェースの各々は、書込み（WR）データ・バス60、60N、読取り（RD）データ・バス61、61N、およびアドレス・バス62、62Nからなる複数の同種個別バスを介してスイッチ・ネットワーク54に接続され、複数の制御バス70、71、80、81、90、91および70N、71N、80N、81N、90N、91Nを介してキャッシュと入出力インタフェース55、56、57の各々に接続されている。なお、符号中の添字Ｎは、ポート・インタフェースPNとキャッシュおよび入出力インタフェースとの間を結ぶバスを示している。
スイッチ・ネットワーク54とＤキャッシュ・インタフェース55はWRデータ・バス72、RDデータ・バス73およびアドレス・バス74を介して接続されている。スイッチ・ネットワーク54とＩキャッシュ・インタフェース56はRDデータ・バス82およびアドレス・バス83を介して接続されている。上述したように、Ｉキャッシュ52からは書込み（WR）要求は出されない。スイッチ・ネットワーク54と入出力インタフェース57は、RDデータ・バス92、WRデータ・バス93およびアドレス・バス94からなる複数の双方向信号バスを介して接続されている。
Ｄキャッシュ・インタフェース55とCCU49、つまり、Ｄキャッシュ51は、WRデータ・バス100、RDデータ・バス101、アドレス・バス102および対の制御信号バス103、104からなる複数の単方向信号バスを介して接続されている。Ｉキャッシュ・インタフェース56とCCU49、つまり、Ｉキャッシュ52は、RDデータ・バス110、アドレス・バス111、および対の制御信号バス112、113からなる複数の単方向信号バスを介して接続されている。入出力インタフェース57とIOU53は、R/W−I/Oマスタ・データ・バス120、R/W−I/Oスレーブ・データ・バス121、対の制御信号ライン123、124および対のアドレス・バス125、126からなる複数の単方向信号バスを介して接続されている。入出力（I/O）マスタおよび入出力（I/O）スレーブという名称は、以下で詳しく説明するように、入出力操作がマスタとして行われているか、スレーブとして行われているとき、特定の信号ラインを利用したデータ伝送を示すために用いられている。
第３図は、スイッチ・ネットワーク54のメイン・データ経路を示し、Ｄキャッシュ・インタフェース55とポート・インタフェースP0間の接続関係を示したブロック図である。ポート・インタフェースP1−PNおよびＩキャッシュと入出力インタフェース56、57間の接続関係も同じであるが、Ｉキャッシュ・インタフェース56からは書込みデータ要求が出されない点が異なる。第３図に示すように、ポート・インタフェースP0−PNの各々には、さらに、読取り要求の識別コード（ID）をストアするためのID FIFO（先入れ先出し）130と、MAUへのアクセスが許可されるまで書込みデータを一時的にストアしておくための書込みデータ（WD）FIFO131と、ネットワーク54が使用可能になるまで読取りデータを一時的にストアしておくための読取りデータ（RD）FIFO132が設けられている。
スイッチ・ネットワーク54には、それぞれ、要求／アドレス・バスSW_REQ［28:0］、書込みデータ・バスSW_WD［31:0］、読取りデータ・バスSW_RD［63:0］、および識別／バンク開始信号バスSW_IDBST［3:0］とも呼ばれる、複数の信号バス140〜143と、スイッチ仲裁ユニット58とが設けられている。スイッチ仲裁ユニット58はマルチポート入出力要求を取り扱うことを目的としている。
キャッシュおよびポート・インタフェースは一部の信号バスで直接に、他の信号バスでスイッチ・ネットワーク・バスを介して間接に接続されている。例えば、ポート・インタフェースP0〜PNの各々におけるポート仲裁ユニットPAUはGRANT制御ライン70aおよびREQUEST制御ライン71bからなる対の制御信号バスを介してスイッチ仲裁ユニット58に接続されている。スイッチ仲裁ユニット58はGRANT制御信号ライン71bを介してＤキャッシュ・インタフェース55に接続されている。ライン70a、70bおよびライン71a、71bは第２図のバス70と71における信号ラインである。ゲート75とレジスタ76、78は、それぞれ、介入を引き起こす要求をストアするためと、割込みをかけられた読取り要求をストアするために設けられている。他方のポート、キャッシュおよび入出力インタフェース間は対応する制御バスで結ばれている。
スイッチ・ネットワーク54の機能は、様々な命令とデータ要求をキャッシュ制御ユニット（CCU）、つまり、Ｉキャッシュ51、Ｄキャッシュ52、およびIOU53から受け取ることである。これらを要求を受け取ると、一度に１つの要求を引き受ける、スイッチ・ネットワーク54内のスイッチ仲裁ユニット58は要求に優先順位を付けて、その要求に付随したアドレスに応じて、該当するポート・インタフェースP0〜PNまたは入出力インタフェースに要求を引き渡す。ポートと入出力インタフェースは、例えば、要求に付随するアドレスの上位ビットによって選択される。各ポート・インタフェースはMAUアドレスをストアするためのレジスタ77をもっている。ポート・インタフェースは必要なタイミング信号を発生し、MAU77との間で必要なデータをやりとりする。要求がWR要求ならば、ポート・インタフェースとスイッチ・ネットワーク54との間のやりとりは、スイッチが書込みデータをすべてプッシュしてWDF（書込みFIFO）131に入れたとき停止する。要求がRD要求ならば、スイッチ・ネットワーク54とポート・インタフェースとの間のやりとりは、ポート・インタフェースが読取りデータをスイッチ・ネットワーク54へ送り返したときだけ終了する。
以下で詳しく説明するように、スイッチ・ネットワーク54は、マスタ・デバイスとスレーブ・デバイスとが交信し合うために用意されたものである。この意味において、マスタ・デバイスとなり得るものには、次のものがある。
1.  Ｄキャッシュ
2.  Ｉキャッシュ
3.  IOU
スレーブ・デバイスとなり得るものには、次のものがある。
1.  メモリ・ポート
2.  IOU
スイッチ・ネットワーク54は、必要な介入要求を該当するポート・インタフェースへ送って、実行させることを担当する。
上述したように、スイッチ・ネットワーク54は、キャッシュ・インタフェース、入出力インタフェースおよびメモリ・ポート・インタフェース間を接続するための４セットの３状態（tri−state）バスから構成されている。４セットの３状態バスとはSW_REQ、SW_WD、SW_RD、SW_IDBSTである。SW_REQ［28:0］と名付けたバスは、スレーブ・デバイス側のアドレス、メモリ共用信号およびIDをマスタ・デバイスからスレーブ・デバイスへ送るために使用される。上記に示したように、マスタとなり得るのは、Ｄキャッシュ、ＩキャッシュまたはIOUであり、スレーブ・デバイスとなり得るのはメモリ・ポートまたはIOUである。マスタ・デバイスが要求をスレーブに対して出すときは、アドレスの全32ビットをスイッチ・バスSW_REQ上を送る必要がない。これは、本発明の多重メモリ・ポート構造では、各ポートにはあらかじめ定義されたメモリ空間が割り振られているためである。
機能コード（FC）やデータ幅（WD）などの、他の要求属性は、タイミング上の制約があるためSW_REQバスから送信されない。スイッチ・ネットワーク54上を送られる情報は、その情報が専用ワイヤ上を送られた場合よりも１クロック・フェーズだけ遅れてポート・インタフェースに到着する。従って、初期の要求属性（early request attibute）を１フェーズだけ早くポート・インタフェースへ送っておけば、ポート・インタフェースはそのステート・マシンを早く始動できるので、メモリ待ち時間が減少することになる。これは、第３図に示すように、別の信号ライン79によって行われる。ライン79は第２図の制御信号バス70内のラインの１つである。
SW_WD［31:0］バスは、書込みデータをマスタ・デバイス（ＤキャッシュとIOU）からメモリ・ポート・インタフェース内のWD FIFO 131へ送るために使用される。この３状態バスはダブル・ポンプされる。つまり、データの32ビットがフェーズごとに転送される。バスはダブル・ポンプ（double−pumped）されるので、回路を設計する際に、バスが折り返して、あるマスタから別のマスタに切り替わるときバスの衝突が起こらないようにする配慮が必要である。理解されるように、ダブル・ポンプを行うと、必要とするビット・ライン数が少なくなるので、必要とされる高価なワイヤ数を最小にし、パフォーマンス低下を最小にすることができる。
第９図に示すように、SW_RD［63:0］は、返却読取りデータをスレーブ・デバイス（メモリ・ポートまたはIOU）からマスタ・デバイスへ送り返すために使用される。データはクロックのフェーズ１のとき（CLK1がハイのとき）だけ送信される。このバスは、キャッシュにタイミング上の制約があるためダブル・ポンプされない。CLK1の立下がり縁でデータが有効であることがキャッシュの必要条件である。データはフェーズ１時にポート・インタフェースから受信されるので、SW_RDバスがダブル・ポンプされていないと、キャッシュが最も早くデータを得るのは、CLK1の正縁のときであって、CLK1の負縁のときではない。SW_RDバスはダブル・ポンプされないので、このバスはCLK1時だけアクティブであるので（３状態ではない）、バス・バッファが衝突するという問題は起こらない。つまり、２つのバス・ドライバが同じワイヤを同時にドライブすることはない。
SW_IDBST［3:0］は、識別（ID）コードとバンク開始コードをスレーブ・デバイスからマスタ・デバイスへバス88を経由して返すために使用される。スレーブ・デバイスからのデータは常に順番に返されるので、一般的にはIDをポートまで送る必要はない。IDは、インタフェース内の各ポートごとに１つあて用意されている個々のFIFOにストアしておくことができる。
再び読取りFIFO132に戻って説明すると、データはスイッチ読取りバスSW_RDが使用可能でないときだけこのFIFOにストアされる。バスSW_RDが現在他のポートで使用中であれば、到来読取りデータは一時的に読取りFIFO132にプッシュされ、SW_RDバスが解放されると、データはFIFOからポップされて、スイッチ・ネットワーク54を通って要求側キャッシュまたはIOUへ転送される。
Ｄキャッシュ・インタフェース55、Ｉキャッシュ・インタフェース56、入出力インタフェース57およびポート・インタフェースPO−PN間のデータ転送を、Ｄキャッシュ・インタフェース55との間でデータを受け渡しする場合を例に挙げて、以下説明することにする。
Ｄキャッシュ、ＩキャッシュまたはIOUのいずれかがポートをアクセスしたいときは、そのポートが空きになっているかどうかを確かめるために、第３図に示すように要求を要求信号ライン70b上をポート仲裁ユニットPAUOへ送る。ポートが空きになっていれば、ポート・インタフェースは、要求が存在することを要求制御ライン71aを利用してスイッチ仲裁ユニット58に通知する。スイッチ・ネットワーク54が空きになっていれば、スイッチ仲裁ユニット58は、要求が制御ライン71b上で許可されたことを許可制御ライン70a上のポートとマスタ、例えば、Ｄキャッシュ・インタフェース55に通知する。
要求が書込み要求であれば、Ｄキャッシュ・インタフェース回路55はバス仲裁制御ユニット172をチェックして、MCU50にMAUバス25が許可されているかどうかを確かめる。MCUにまだバス25が許可されていなければ、バス要求が出される。バスが許可されているか、あるいは許可されると、ポート仲裁ユニット171はスイッチ・バス140、141の要求を行う。スイッチ・バス140、141へのアクセスが許可されると、Ｄキャッシュ・インタフェース回路55は該当するアドレスをスイッチ・バスSW_REQ140上に送出し、同時に、書込みデータを書込みデータ・バスSW_WD141上に送出し、そのデータをWD FIFO（WDF）131にストアする。データがWDFに置かれると、MCUはデータをMAUに順次に書き出していく。書込みデータをポートに送る前にバスが許可されているかどうかを確かめるようにしたのは、外部プロセッサからのスヌープ要求があるとき、MCUがWDFをチェックしないですむようにするためである。従って、変更されたデータがあるかどうかのチェックは、キャッシュだけで行われる。
要求が読取り要求であり、ポートとスイッチ・ネットワークが上述したように空きになっていると判断されると、ポート・インタフェースはSW_REQバス上を要求側ユニットから送られてきたアドレスを受け取り、MAUバス９の許可を得るための仲裁をオービタに要求する。ポートがバスを実際に使用するためには、その前に、MAUバスが許可されたとのMAUオービタからの通知が必要である。そのあと、要求はスイッチからポートへ転送される。MAUアドレス・バス９が空きになっていると、アドレスがMAUアドレス・バス上に送出される。データがいつ受信されるかは、事前にポートに知らされる。ポートはスイッチ返却データ・バスを要求するので、バスが使用中でなければ、データが返却されるとき使用可能になっている。バスが空きになっていると、ポートは読取りデータをバス上に送出し、Ｄキャッシュ、Ｉキャッシュまたは入出力インタフェースはそのデータを取り出して、それぞれの要求側ユニットへ引き渡すことになる。
D/Iキャッシュ51、52が入出力アドレスの要求を行うと、D/Iキャッシュ・インタフェース55、56はその要求を要求バスSW_REQを経由して入出力インタフェース・ユニット57に受け渡す。入出力インタフェース・ユニット57は、要求をストアしておくためのその待つ行列に使用可能なエントリをもっていれば、要求を制御信号ライン90を経由してスイッチ仲裁ユニット58に引き渡す。スイッチ・ネットワーク54が空きになっていれば、もう一度、スイッチ仲裁ユニット58はD/Iキャッシュ・インタフェース55,56に通知して、アドレスをアドレス・バスSW_REQ上に送出できるようにし、それが書込み要求ならば（Ｄキャッシュのみ）、書込みデータを書込みデータ・バスSW_WD上に送出してIOUへ転送できるようにする。同様に、D/Iキャッシュ・インタフェース55、56からの要求が読取り要求ならば、入出力インタフェース57からの読取りデータは、スイッチ・ネットワークの読取りデータ・バスSW_RDを経由して入出力インタフェース57から転送されて、D/Iキャッシュ・インタフェース55、56に渡され、そこからD/Iキャッシュ51、52へ転送される。
第４図に示すように、本発明によるポート・インタフェースとキャッシュには、それぞれを符号160、168で全体を示したテストおよびセット（TS）バイパス回路が設けられている。このバイパス回路はMAUアドレス・バス９上にセマフォアのアドレスがあるかどうかをモニタ、つまり、スヌープ（snoop）する。理解されるように、回路160、168はセマフォアをスピン・ロックしたとき消費されるメモリ・バンド幅を節減する。
TS回路160、168には、スヌープ・アドレス・ジェネレータ（snoop address generator）161、TS内容アドレス・メモリ（CAM−content addressable memory）162、フリップフロップ163およびMUX164、165が設けられている。
セマフォア（semaphore）とは、メモリ内のアドレス可能ロケーションにストアされて、メモリやその他のアドレス可能資源のある領域へのアクセスを制御するためのフラグまたはラベルである。例えば、あるCPUがセマフォアが関連づけられているあるメモリ領域をアクセスするとき、その領域を他のCPUがアクセスするのを望まないときは、そのアクセスするCPUはセマフォアにオール１を入れる。別のCPUがその領域へのアクセスを試みるときは、まずそのセマフォアを調べる。セマフォアがオール１であることが分かると、その２番目のCPUはアクセスが拒否されることになる。そのときまでに、２番目のCPUがアクセス要求をなん度も出していると、アクセスがなん度も拒否され、その結果、「セマフォアのスピン・ロック」と呼ばれる現象が起こることになる。このセマフォアのスピン・ロックが起こると、アクセス要求のたびに、要求側CPUは読み書きを行わなければならないので、メモリ・バンド幅量が過度に使用されるという問題が起こる。
第４図に示したテストおよびセット・バイパス回路160、168には、セマフォアのスピン・ロックが起こったときメモリ・バンド幅の過度の使用を防止する単純なアルゴリズムが実装されている。
動作について説明すると、あるCPU、より正確には、プロセッサ内のあるプロセスがセマフォアが関連づけられているあるメモリ領域を要求するために、まずロードおよびセット命令、つまり、セマフォアへのアクセス要求と関連する所定の命令を出すと、そのCPUは、まず、そのセマフォアをアクセスし、セマフォアのアドレスをCAM162にストアする。複数のロードおよびセット命令を出すと、複数のエントリがCAM162にストアされることになる。セマフォアがオール１（＄FFFF）ならば、アクセスが拒否されたことを意味する１が返される。別のプロセスがそのセマフォアを要求するときは、そのCAMを調べる。要求したセマフォアのアドレスがまだCAMに残っていると、セマフォアが別のプロセッサ／プロセスによってまだ解放されていないことがCPUに通知されるので、セマフォアをスピン・ロックさせる必要がない。その代わりに、MCUはオール１（セマフォア失敗）を受け取るので、セマフォアはメモリに要求されないので、メモリ・バンド幅が必要以上に使用されることが防止される。他方、セマフォアのアドレスがCAMになければ、セマフォアが以前に要求されたことがなかったか、すでに解放されていることを意味する。
MAUバスは、バイト・アドレスを提供しない。セマフォアが解放されたときは、CAMをクリアする必要がある。セマフォアを取り囲む最小の検出可能メモリ・ブロックのいずれかの部分へのアクセスがMAUバス上のいずれかのプロセッサによって行われると、CAMがクリアされる。現ブロック・サイズは４または８バイトである。このようにすると、メモリ・ブロック内の別のロケーションへの書込みによってセマフォアがクリアされなかったときCAMがクリアされる場合があっても、CAMはクリアされたセマフォアのアドレスを保持することはない。セマフォアは、いずれかのプロセッサがオール１以外をセマフォアに書き込むと、クリアされる。
セマフォアが置かれているメモリ・ブロックへの書込みが行われたあと、セマフォアがテストおよびセット命令によってアクセスされる場合は、メモリが再びアクセスされる。セマフォアがすでにクリアされていると、クリアされた値がCPUに返され、CAMにそのアドレスが再びセットされる。セマフォアがクリアされていないか、再びロックされていたときも、CAMにセマフォア・アドレスがロードされるが、ロックされた値がCPUに返される。
第４図の回路160の動作について説明すると、回路160はMAUアドレス・バス９をスヌープし、そこで検出されたアドレス信号を使用して、アドレス・ジェネレータ161で応するスヌープ・アドレスを生成し、このアドレスはライン169上をCMA162へ送信され、その内容と比較される。ヒットすると、つまり、CAM162内のエントリと一致するものがあると、CAM162のそのエントリがクリアされる。ロードおよびセット要求が例えばＤキャッシュからMCUに対して行われると、Ｄキャッシュ・インタフェース回路はアドレスをCAMのエントリと比較する。CAM162に一致するものが見つかると（ヒットすると）、そのIDがキャッシュ・インタフェースのレジスタ163にラッチされ、このIDとオール１（＄FFFF）がMUX164、165を経由してキャッシュ・インタフェースに返される。
アドレスをスヌープし、CAM162で比較を行うためにそれからスヌープ・アドレス・ジェネレータ161でスヌープ・アドレスを生成することは、MAUアドレス・バス９上に現れたアドレスが非共用メモリ・ロケーションに対するものであっても、好ましくない影響を与えないで続けられる。スヌープ・アドレス・ジェネレータ161は、一般的には、MAUアドレス・バス９上に現れたMAU行列アドレスの11ビットからキャッシュ・ブロック・アドレス（上位ビット）を、MAU制御信号RAS、CASおよび制御信号バス11上のBKST START MAU制御信号を使用して生成する。
第５図に示すように、全体を符号170で示した、キャッシュ一貫性を保つための本発明の他の形態による回路が設けられている。キャッシュ一貫性が必要とされるのは、マルチプロセッサ環境では、マスタ・デバイスとスレーブ・デバイス、つまり、CPUがすべて最新のデータをもつことを保証するためである。
回路170を構成するチップの外側に示すように、オービタ６、メモリ７、MAUアドレス・バス９、MAU制御バス11およびマルチプロセッサ制御バス10が設けられている。回路172には、ポート仲裁ユニット・インタフェース171、バス仲裁制御ユニット172、マルチプロセッサ、コントロール173および第４図に示すスヌープ・アドレス・ジェネレータ161が設けられている。Ｄキャッシュ・インタフェース55は対の制御信号バス173、175とスヌープ・アドレス・バス176を介してマルチプロセッサ・コントロール173に接続されている。Ｉキャッシュ・インタフェース56は対の制御信号バス177、178とスヌープ・アドレス・バス176を介してマルチプロセッサ・コントロール173に接続されている。スヌープ・アドレス・ジェネレータ161は制御信号バス179を介してマルチプロセッサ・コントロール173に接続されている。マルチプロセッサ・コントロール173はさらに、制御信号バス180を介してマルチプロセッサ制御バス10に、制御信号バス181を介してバス仲裁ユニット172に接続されている。ポート仲裁インタフェース171は制御信号バス182を介してバス仲裁制御ユニット172に接続されている。バス仲裁制御ユニット172はバス仲裁制御ユニット183を介してオービタ６に接続されている。スヌープ・アドレス・ジェネレータ161は、それぞれ、アドレス・バス14および制御バス16を介してMAUアドレス・バス９およびMAU制御バス11にも接続されている。
キャッシュからの要求が送られるときは、その要求が共用メモリに対するものかどうかを示した属性が一緒に送られる。要求が共用メモリに対するものであるときは、ポート・インタフェースはマルチプロセッサ制御信号（MCS）バス10上を共用信号SHARED_REQを送出する。他のCPUがMCSバス10上にこの共用信号を検出すると、スヌープ・アドレスを得るためにMAU ADDRバス９をスヌープすることを始める。
スヌーピング（snooping）とは、これまでに簡単に説明したように、キャッシュ一貫性プロトコルである。このプロトコルによれば、制御は共用メモリ・バス上のすべてのキャッシュに配布され、すべてのキャッシュ・コントローラ（CCU）はバスを聴取（listen）またはスヌープして、共用ブロックのコピーをもっているかどうかを判断する。従って、スヌーピングとは、スレーブ側MCUがバス上のすべてのトランザクションをモニタして、マスタ側MCUから出されたRD/WR要求があるかどうかを調べるプロセスである。スレーブ側MCUの主要な仕事は、バスをスヌープして受信する必要のあるデータがあるかどうかを判断すること、つまり、以前に受信したデータを無効にすることであり、あるいは最新のデータをマスタ側MCUへ送ること、つまり、介入を行うことである。
以下で詳しく説明するように、第５図に示すマルチプロセッサ制御回路173はキャッシュからの無効化、介入およびスヌープ・ヒット信号を処理して、以下に詳しく説明するように、スヌープ・ヒットと介入／無効化が示されたときスヌープ・ヒット（SNP_HIT）信号と介入（ITV_REQ）信号をマルチプロセッサ制御信号バス180上に生成する。
第５図に示すバス仲裁制御回路172は通常の読取りまたは書込みオペレーションにおいてMAUバスの仲裁を行う。また、介入／無効化の場合にもMAUバスの仲裁を行い、外部バス・オービタ６に直接に通じる外部バス仲裁制御信号ピンと直接にインタフェースとなっている。
次に、上述したキャッシュ一貫性を保証するための介入と無効化のオペレーションを、マスタ側中央処理ユニット（MSTR CPU）から出された読取り要求、書込み要求および変更意図付き読取り（read−with−intent−to−modify）要求と関連づけて説明する。
MSTR CPUは読取り要求を出すとき、アドレスをメモリ・アレイ・ユニット（MAU）アドレス・バス９上に送出する。スレーブ側（SLV）CPUはMAUバス９上のアドレスをスヌープする。SLV CPUがそのキャッシュ内のアドレス指定したメモリ・ロケーションから取り出したデータが変更されていると、スレーブ側キャッシュ制御ユニット（SLV CCU）は介入信号をマルチプロセッサ制御バス10上に送出し、データが更新、つまり、変更されていることを通知する。MSTRは、ITV信号を検出すると、バスを断念し、SLV CCUは更新データをメイン・メモリ、つまり、MAU7に書き込む。MSTRが要求したデータがMSTRキャッシュ制御ユニット（CCU）によってまだ受信されてないと、MSTR MCUは要求されたデータを破棄し、MAUにデータを要求することを再び主張する。要求されたデータがMSTR CCUへ転送されていた場合は、MSTR MCUはデータを破棄するようにMSTRCCU（IOUがMSTRであれば、IOUコントローラ）に通知する。そのあと、MSTR MCUは、スレーブがメイン・メモリを更新したあと読取り要求を再び出す。その間、ポート・インタフェースはマスタの読取り要求を保留しており、その間にスレーブは変更したデータをメモリに書き戻す。そのあと、読取り要求が実行される。
MSTRが書込み要求を出し、アドレスをメモリ・アレイ・ユニット（MAU）アドレス・バス９上に送出し、スレーブ側CCUがこのアドレスからのオリジナル・データのコピーをそのキャッシュにもっていると、スレーブ側CCUはそのキャッシュに置かれている対応するデータを無効にする、つまり、破棄する。
MSTRが変更意図付き読取り要求を出し、アドレスをメモリ・アレイ・ユニット（MAU）アドレス・バス９上に送出し、スレーブ側MCUがマスタ（MSTR）からアドレス・バス上に送出されたアドレスをもっていると、次の２つの可能な動作のいずれかが取られる。
1.  SLV CCUがMSTRがアドレス指定したデータに対応するデータを変更していた場合は、SLVはITV信号を出し、MSTRはその信号を受けてバスを断念し、SLV CCUが変更したデータをメモリに書くことを許可する。このオペレーションは、上述した介入オペレーションに対応している。
2.  SLVがMSTRがアドレス指定したデータに対応する未修正データをもっている場合は、SLVはそのデータを無効にする、つまり、破棄する。このオペレーションは、上述した無効化オペレーションに対応している。
第６図に示すように、全体を符号190で示した本発明の他の形態による回路が設けられている。この回路190は、行一致比較を行ってメモり待ち時間を短縮するために使用される。回路190には、コンパレータ191、ラッチ192および対のMUX193、194が設けられている。
行一致比較の機能は、現在の要求が前の要求と同じ行アドレスをもっているかどうかを判断することである。同じ行アドレスをもっていれば、ポートはRAS要求を取り消すための時間ペナルティを負担しないですむ。行一致は主にDRAMで使用されるが、SRAMまたはROMで使用することも可能である。つまり、ROMとSRAMは、DRAMで使用するものと同じように上位と下位のアドレス・セグメントに入れてアドレスをMAUに引き渡すので、MAUを新アドレスの上位、つまり、行ビットにラッチする必要がないためである。
第６図に示した行一致回路の動作について説明すると、行アドレスは、そのアドレスの対応する配列選択ビットを含めて、MUX193によってラッチ192にストアされる。新しいアドレスがスイッチ・ネットワーク・アドレス・ラインSW_REQに現れるたびに、そのアドレスは新要求MUX194を通って送られ、コンパレータ191で前の要求と比較される。行が一致していると、信号がコンパレータ191の出力から生成され、バス70の一部である信号ライン195を介してポート・インタフェースへ転送される。行一致がヒットすると、ポート・インタフェースはRAS要求を取り消すことが禁止されるので、RASサイクル・タイムが節約されることになる。
MUX193は行アドレスをスイッチ要求アドレスから抜き出すために使用される。行アドレスをスイッチ・アドレスにマッピングすることは、DRAMの構成（例えば、1Mx1または4Mx1 DRAM）とMAUデータ・バスの幅（例えば、32ビットまたは64ビット）によって異なる。
第１図および第５図に示すように、外部バス・オービタ６は、主にプログラマブル・ロジック・アレイ（PLA）と記憶素子から構成されたユニットである。このオービタはMAUバス要求を異種CPUから受け取り、どのCPUにバス許可を与えるべきかを、ソフトウェアで選択可能な動的または固定優先度方式に基づいて裁定し、該当するCPUに対して許可を発行する。記憶素子はどのCPUに最後にバスが許可されたかを記憶しておき、動的または柔軟な優先度方式および固定または「ラウンド・ロビン」優先度方式のいずれをも実行できるようにするものである。
第７図を参照して、本発明のマルチプロセッサ環境で使用される動的スイッチおよびポート仲裁について、以下説明する。
上述したように、３つのマスタと、MCUのサービスを受ける２つの資源が存在する。３つのマスタとは、Ｄキャッシュ、ＩキャッシュおよびIOUである。２つの資源、つまり、スレーブはメモリ・ポートとIOUである。上から明らかなように、IOUはマスタと資源／スレーブの両方になることができる。
本発明によれば、２種類の仲裁が行われる。１つはメモリ・ポートの資源の仲裁に関係するものであり、もう１つはスイッチ・ネットワーク54のバスSW_REQとSW_WDの資源の仲裁に関係するものである。
複数のデバイスがメイン・メモリからデータを同時に要求することがある。それらのデバイスとは、Ｄキャッシュ、ＩキャッシュおよびIOUである。各マスタに一定の優先度を与える優先度方式は、「重要度」または「緊急度」の高いデバイスからの要求ができるかぎり早くサービスを受けられるようにすることを目的としている。しかし、厳格な固定仲裁方式は、優先度の低いデバイスがいつまでもサービスが受けられない（starving）可能性があるため好ましくない。その代わりに、デバイス別に異なる優先度を処理中に（on the fly）割り当てる動的仲裁方式が取り入れられている。この動的仲裁方式に影響を与える要因として、次のものがある。
1.  そのデバイスの固有優先度
2.  要求したアドレスと以前にサービスを受けた要求のアドレスとが行一致している。
3.  デバイスは余りにも多くの回数サービスを拒否されてきた。
4.  マスタは余りにも多くの回数サービスを受けてきた。
第７図に示すように、メモリ・ポートを要求するときに使用される動的優先度方式は次のとおりである。
デバイスからの各要求は固有優先度をもっている。IOUが高優先度または通常優先度を要求することができ、次にＤキャッシュが、その次にＩキャッシュが要求できる。しかし、Ｄキャッシュからの介入（ITV）要求がすべての中で最も優先度が高くなっている。
特別な高優先度の入出力要求を行うことができる。この優先度は、メモリ待ち時間を最小にしてメモリへのアクセスを必要とするリアルタイム（実時間）入出力周辺デバイスで使用されることを目的としている。これらの要求は、第７図に示すように介入サイクルと行一致を除き、他のすべての要求に優先させることができる。
各種デバイスの固有優先度を変更する要因として、サービス拒否、入出力独占（I/O hog）、行一致といったものがある。あるデバイスがサービスを拒否されるたびに、カウンタがデクリメントされる。カウンタがゼロまで達すると、そのデバイスの優先度は大きくされ、DENY PRIORITYと名付けた優先度レベルがセットされる。これらのカウンタには、最大15までのプログラム可能な値をロードすることができる。カウンタがゼロまで達すると、DENY PRIORITYビットがセットされ、これは最終的には、拒否されたデバイスがサービスを受けたときクリアされる。サービスが拒否されたデバイスの優先度を大きくするこの方法によると、サービス窮乏化（starvation）が防止される。注意すべきことは、IOUの固有優先度レベルは本来的にすでに高いので、IOUにはサービス拒否優先度が割り当てられないことである。
IOUはすでに本来的に優先度が高いデバイスであるので、そのデバイスがポートを独占するのをカウンタで防止するようにする必要もある。IOUにポート使用権が許可されるたびに、カウンタはデクリメントされる。カウンタがゼロまで達すると、IOUはバスを独占しているものと扱われ、IOUの優先度レベルは低くされる。IOUの優先度レベルを落とすのは通常優先度の要求の場合だけであり、高優先度の入出力要求の場合は行われない。IOUに要求サイクル時にポート使用権が許与されないときは、独占優先度ビット（hog priority bit）がクリアされる。
要求の固有優先度を変更するもう１つの要因は行一致である。行一致が主に重要なのは、Ｉキャッシュの場合である。あるデバイスが以前にサービスを受けた要求と同じ行アドレスをもつメモリ・ロケーションを要求すると、要求したデバイスの優先度が高くされる。これが行われるのは、RASを再要求しないで済むようにするためである。
しかし、行一致優先度を持ち続けるには一定の限度がある。この場合も、カウンタはプログラム可能な最大値をセットして使用される。行一致優先度があるために要求がサービスを受けるたびに、カウンタはデクリメントされる。カウンタがゼロまで達すると、行一致優先度ビットがクリアされる。ポートの新しいマスタが割り当てられると、あるいは行一致の要求がないと、カウンタには再びプログラム可能値が事前ロードされる。上述したカウンタはスイッチ仲裁ユニット58に置かれている。
メモリ・ポートに対する書込み要求は、スイッチの書込みデータ・バスSW_WDが使用可能になっているときだけ許可される。使用可能でないときは、別の要求が選択される。１つだけ例外があり、それは、介入信号ITVの場合である。SW_WDが使用可能になっていないと、どの要求も選択されない。その代わりに、プロセッサはSW_WDが空きになるのを待ってから、要求をスイッチ・オービタに受け渡す。
スイッチ・ネットワーク54の仲裁方式は、ポートの仲裁で使用される方式と若干異なっている。第３図のスイッチ仲裁ユニット58は、ソフトウェアで選択可能なポートの仲裁を行うとき、２種類の仲裁方式を利用している。
1.  優先度がスレーブまたは被要求側デバイス（すなわち、メモリまたはIOUポート）を基準にしているスレーブ優先度方式。
2.  優先度がマスタまたは要求側デバイス（すなわち、IOU、ＤキャッシュおよびＩキャッシュ）を基準にしているマスタ優先度方式。
スレーブ優先度方式では、優先度は常にラウンド・ロビン方式でメモリ・ポートに与えられる。つまり、優先度は最初にメモリ・ポート０、１、2...に与えられ、次にIOUに与えられる。これに対して、マスタ優先度方式では、優先度は最初にIOUに与えられ、次にＤキャッシュとＩキャッシュに与えられる。勿論、事情によっては、マスタ優先方式に従ってITV要求に最高優先度を与える必要がある場合やそうしたほうが望ましい場合がある。また、プリフェッチ・バッファがやがて空になる場合に、Ｉキャッシュに高優先度を与える必要がある場合やそうしたほうが望ましい場合がある。いずれの場合も、使用する優先度方式は、様々な動作条件に合うようにソフトウェアで調整することが可能である。
動的メモリ・リフレッシュも優先度方式に基づいている。ステート・マシンに接続されたカウンタは、あるリフレッシュから次のリフレッシュまでどれだけのサイクルが経過したか、つまり、リフレッシュが要求され、MAUバスが使用中のため拒否された回数を記録するために使用される。カウンタが所定のカウントまで達すると、つまり、経過すると、信号をポートに対して生成して、リフレッシュの必要があることをポートに通知する。ポートが使用中で、ＤキャッシュやＩキャッシュまたはIOUからの要求にサービスを与えている場合は、これまでに拒否したリフレッシュ要求が所定数まで達していなければ、リフレッシュ要求にサービスを与えることを拒否する。言い換えれば、リフレッシュ要求が所定回数まで拒否されたとき、リフレッシュ要求にサービスを与えることに優先度が与えられる。ポートがリフレッシュ要求にサービスを与える準備状態になると、MAUバスの仲裁を始めるようにバス仲裁制御ユニットに通知する。
行は、15マイクロ秒ごとにリフレッシュするのが好ましく、また、所定の期間内に、例えば、少なくとも30秒マイクロ秒ごとにリフレッシュする必要がある。
RASが低（要求−assert）になり、CASが要求されなかったときは、リフレッシュが行われたことがすべてのCPUに通知される。すべてのCPUはリフレッシュがいつ行われたかを記録しているので、どのCPUも必要時にリフレッシュを要求することができる。
本発明の好適実施例について説明してきたが、本発明の精神と範囲を逸脱しない限り、種々態様に変更が可能であることは勿論である。従って、上述した実施例は、本発明を説明するための例示にすぎず、その範囲は実施例に限定されることなく、請求の範囲に記載した発明から判断すべきものである。
【図１】
0003557617.tif 000002
【図２】
0003557617.tif 000003
【図３】
0003557617.tif 000004
【図４】
0003557617.tif 000005
【図５】
0003557617.tif 000006
【図６】
0003557617.tif 000007
【図７】
0003557617.tif 000008
【図８】
0003557617.tif 000009
【図９】
0003557617.tif 000010