(57)【特許請求の範囲】
【請求項１】
複数のＮ個のメモリバンクを有するメモリデバイスであり、前記メモリバンクはそれぞれ、複数のアドレス可能なメモリ位置を備えており、前記メモリ位置はそれぞれ、論理アドレスと、対応する物理アドレスとを有しており、前記物理アドレスは、メモリバンク番号と、ローカルアドレスとを備えているメモリデバイスにおいて、
前記メモリデバイスは、前記論理アドレスそれぞれに対して、対応する物理アドレスを引き出すアドレス翻訳ユニットを備えており、
少なくとも１つの、論理アドレスの明示的アクセスシーケンスに対して、対応する物理アドレスのシーケンス内の前記引き出された物理アドレスは、Ｎ＋１よりも小さな周期を有する周期的パターンを形成せず、且つ、平均すると、前記対応する物理アドレスのシーケンスにおいて、前記メモリデバイスに対するほぼＮ回のアクセス内で繰り返されることのないメモリバンク番号を有しており、
前記アドレス翻訳ユニットで行われるアドレス変換が、ａ−Ａ＝Λａmod２Kに基づいて実行され、ａは論理アドレス、Ａはａに対応するスクランブルされた物理アドレス、２Kはアドレス空間、Λは奇数値定数であり、Λが、（ａ）Λを様々な値に設定し、（ｂ）各値に対して、少なくとも１つの明示アクセスパターンに亘って均一なバンク番号の分布からの偏差を計算し、（ｃ）偏差が最小となる値からΛを選択する、ことによって定められる、
ことを特徴とするメモリデバイス。
【請求項２】
前記少なくとも１つの、論理アドレスの明示的アクセスシーケンス内の各論理アドレスは、他のアドレスと、シーケンス内でストライド値分だけ離されていることを特徴とする、請求項１に記載のメモリデバイス。
【請求項３】
前記少なくとも１つの、論理アドレスの明示的アクセスシーケンスは、１又は複数の次元を有するテーブルにおける線形のアクセスシーケンスであることを特徴とする、請求項１に記載のメモリデバイス。
【請求項４】
複数の、論理アドレスの明示的アクセスシーケンスに対し、対応する物理アドレスのシーケンス内の前記引き出された物理アドレスは、Ｎ＋１よりも小さな周期を有する周期的パターンを形成せず、且つ、平均すると、前記対応する物理アドレスのシーケンスにおいて、前記メモリデバイスに対するほぼＮ回のアクセス内で繰り返されることのないメモリバンク番号を有していることを特徴とする、請求項１に記載のメモリデバイス。
【請求項５】
前記複数の、論理アドレスの明示的アクセスシーケンス内の各論理アドレスは、他のアドレスと、シーケンス内でストライド値分だけ離されていることを特徴とする、請求項４に記載のメモリデバイス。
【請求項６】
前記複数の、論理アドレスの明示的アクセスシーケンスは、１又は複数の次元を有するテーブルにおける線形のアクセスシーケンスであることを特徴とする、請求項４に記載のメモリデバイス。
【請求項７】
各論理アドレスａに対して、対応するバンク番号Ｂ及び対応するローカルアドレスlaが、ａ'はａのビットの範囲を含み、Λは１に等しくない整数の乗数を表すものとして、モジュラー乗算Λ・ａ'の結果内のビットの範囲から引き出されることを特徴とする、請求項１に記載のメモリデバイス。
【請求項８】
前記Λが、
（ａ）Λを値の範囲に設定し、
（ｂ）各値に対して、前記少なくとも１つの明示的アクセスパターンに亘って均一なバンク番号の分布からの偏差を計算し、
（ｃ）偏差が最小となる値からΛを選択する、ことによって定められることを特徴とする、請求項７に記載のメモリデバイス。
【請求項９】
各バンクは、Ｓ個のサブバンクを備えており、各論理アドレスａに対し、対応するバンク番号Ｂが、更に、Ｓから引き出されることを特徴とする、請求項７に記載のメモリデバイス。
【請求項１０】
Ｓ個のメモリサブバンクに加えて、少なくとも１つの欠陥のあるメモリサブバンクを含んでいることを特徴とする、請求項７に記載のメモリデバイス。
【請求項１１】
（ａ）値Λを記憶するΛメモリと、
（ｂ）Ｎの値を記憶するＮメモリと、
（ｃ）Ｓの値を記憶するＳメモリと、
（ｄ）バンク番号を欠陥のないバンクの番号にマップするバンクテーブルと、を更に備えており、前記Λメモリと、Ｎメモリと、Ｓメモリと、バンクテーブルとは、１つ又はそれ以上のバンクにエラーが検出された場合には修正可能であることを特徴とする、請求項９に記載のメモリデバイス。
【請求項１２】
Ｓの値を記憶するＳメモリを更に備えていることを特徴とする、請求項９に記載のメモリデバイス。
【請求項１３】
Λの値を記憶するΛメモリを更に備えていることを特徴とする、請求項７に記載のメモリデバイス。
【請求項１４】
Ｎの値を記憶するＮメモリを更に備えていることを特徴とする、請求項７に記載のメモリデバイス。
【請求項１５】
Ｎ個のメモリバンクに加えて、少なくとも１つの欠陥のあるメモリバンクを含んでいることを特徴とする、請求項７に記載のメモリデバイス。
【請求項１６】
バンク番号を欠陥のないバンクの番号にマップするバンクテーブルを、更に備えていることを特徴とする、請求項７に記載のメモリデバイス。
【請求項１７】
各論理アドレスａに対して、対応するバンク番号Ｂ及び対応するローカルアドレスlaが、ａ'はａのビットの範囲を含んでいるものとして、番号ａ'からのテーブルルックアップの結果内のビットの範囲から引き出されることを特徴とする、請求項１に記載のメモリデバイス。
【請求項１８】
各論理アドレスａに対して、対応するバンク番号Ｂ及び対応するローカルアドレスlaが、ａ'はａのビットの範囲を含んでいるものとして、ファクターの１つをａ'とする有限又は無限のフィールドに亘る多項乗算の結果内のビットの範囲から引き出されることを特徴とする、請求項１に記載のメモリデバイス。
【請求項１９】
各論理アドレスａに対して、対応するバンク番号Ｂ及び対応するローカルアドレスlaが、ａ'はａのビットの範囲を含んでいるものとして、インプットとしてａ'を有する組み合わせ回路のアウトプット内のビットの範囲から引き出されることを特徴とする、請求項１に記載のメモリデバイス。
【請求項２０】
複数のＮ個のメモリバンクを有するメモリデバイスであって、前記メモリバンクはそれぞれ、複数のアドレス可能なメモリ位置を備えており、前記メモリ位置はそれぞれ、論理アドレスａと、対応する物理アドレスとを有しており、前記物理アドレスは、メモリバンク番号Ｂと、ローカルアドレスlaとを備えているメモリデバイスにおいて、
前記メモリデバイスは、前記論理アドレスそれぞれに対して、対応する物理アドレスを引き出すアドレス翻訳ユニットを備えており、更に、
（ａ）少なくとも１つの、論理アドレスの明示的アクセスシーケンスに対して、対応する物理アドレスのシーケンス内の前記引き出された物理アドレスは、平均すると、前記対応する物理アドレスのシーケンスにおいて、前記メモリデバイスに対するほぼＮ回のアクセス内で繰り返されることのないメモリバンク番号を有しており、
（ｂ）前記Ｎの値は、前記メモリデバイス内で使用することのできるバンクの最大数よりも小さい何れのバンクの数にでも再構成可能であり、
前記アドレス翻訳ユニットで行われるアドレス変換が、ａ−Ａ＝Λａmod２Kに基づいて実行され、ａは論理アドレス、Ａはａに対応するスクランブルされた物理アドレス、２Kはアドレス空間、Λは奇数値定数であり、Λが、（ａ）Λを様々な値に設定し、（ｂ）各値に対して、少なくとも１つの明示アクセスパターンに亘って均一なバンク番号の分布からの偏差を計算し、（ｃ）偏差が最小となる値からΛを選択する、ことによって定められる、ことを特徴とするメモリデバイス。
【請求項２１】
前記少なくとも１つの、論理アドレスの明示的アクセスシーケンス内の各論理アドレスは、他のアドレスと、シーケンス内でストライド値分だけ離されていることを特徴とする、請求項２０に記載のメモリデバイス。
【請求項２２】
前記少なくとも１つの、論理アドレスの明示的アクセスシーケンスは、１又は複数の次元を有するテーブルにおける線形のアクセスシーケンスであることを特徴とする、請求項２０に記載のメモリデバイス。
【請求項２３】
複数の、論理アドレスの明示的アクセスシーケンスに対して、対応する物理アドレスのシーケンス内の前記引き出された物理アドレスは、Ｎ＋１よりも小さな周期を有する周期的パターンを形成せず、且つ、平均すると前記対応する物理アドレスのシーケンスにおいて、前記メモリデバイスに対するほぼＮ回のアクセス内で繰り返されることのないメモリバンク番号を有していることを特徴とする請求項２０に記載のメモリデバイス。
【請求項２４】
前記複数の、論理アドレスの明示的アクセスシーケンス内の各論理アドレスは、他のアドレスと、シーケンス内でストライド値分だけ離されていることを特徴とする、請求項２３に記載のメモリデバイス。
【請求項２５】
前記複数の、論理アドレスの明示的アクセスシーケンスは１又は複数の次元を有するテーブルにおける線形のアクセスシーケンスであることを特徴とする、請求項２３に記載のメモリデバイス。
【請求項２６】
（ａ）前記メモリデバイスは１つ又はそれ以上の欠陥のあるメモリバンクを含んでおり、
（ｂ）前記値Ｎは、前記メモリデバイス上で使用可能なメモリバンクの最大数より、前記欠陥のあるメモリバンクの数だけ小さく、
（ｃ）前記メモリデバイスは、Ｎ個のメモリバンクが支障なく作動するように再構成されることを特徴とする、請求項２０に記載のメモリデバイス。
【請求項２７】
（ａ）前記メモリデバイスは１つ又はそれ以上の保留されたメモリバンクを含んでおり、
（ｂ）前記値Ｎは、前記メモリデバイス上で使用可能なメモリバンクの最大数より、前記保留されたメモリバンクの数だけ小さく、
（ｃ）前記メモリデバイスは、Ｎ個のメモリバンクが支障なく作動するように再構成されることを特徴とする、請求項２０に記載のメモリデバイス。
【請求項２８】
（ａ）前記メモリデバイスは１つ又はそれ以上の無視されたメモリバンクを含んでおり、
（ｂ）前記値Ｎは、前記メモリデバイス上で使用可能なメモリバンクの最大数より、前記無視されたメモリバンクの数だけ小さく、
（ｃ）前記メモリデバイスは、Ｎ個のメモリバンクが支障なく作動するように再構成されることを特徴とする、請求項２０に記載のメモリデバイス。
【請求項２９】
バンク番号を欠陥のないバンクの番号にマップするバンクテーブルを、更に備えていることを特徴とする、請求項２０に記載のメモリデバイス。
【請求項３０】
Ｎの値を記憶するＮメモリを更に備えていることを特徴とする、請求項２０に記載のメモリデバイス。
【請求項３１】
システムにおいて、
それぞれが複数のアドレス可能なメモリ位置を備えている、複数のＮ個のメモリバンクであって、前記メモリ位置はそれぞれ、論理アドレスａと、対応する物理アドレスとを有しており、前記物理アドレスは、メモリバンク番号Ｂと、ローカルアドレスlaとを備えているメモリバンクと、
前記メモリユニットと通信する、複数のＭ個の演算ユニットと、
前記論理アドレスそれぞれに対して、前記対応する物理アドレスを引き出すアドレス翻訳ユニットと、を備えており、
少なくとも１つの、論理アドレスの明示的アクセスシーケンスに対して、対応する物理アドレスのシーケンス内の前記引き出された物理アドレスは、平均すると、前記対応する物理アドレスのシーケンスにおいて、前記メモリデバイスに対するほぼＮ回のアクセス内で繰り返されることのないメモリバンク番号を有しており、
更に、以下の（ｉ）及び（ii）即ち、
（ｉ）前記Ｎの値は、前記システム上で使用することのできるメモリユニットの最大数よりも小さい何れのメモリバンクの数にでも再構成可能である、及び、
（ii）前記Ｍの値は、前記システム上で使用することのできる演算ユニットの最大数よりも小さい何れの演算ユニットの数にでも再構成可能である、の両者で構成されるグループから選択された何れかを特徴としており、
前記アドレス翻訳ユニットで行われるアドレス変換が、ａ−Ａ＝Λａmod２Kに基づいて実行され、ａは論理アドレス、Ａはａに対応するスクランブルされた物理アドレス、２Kはアドレス空間、Λは奇数値定数であり、Λが、（ａ）Λを様々な値に設定し、（ｂ）各値に対して、少なくとも１つの明示アクセスパターンに亘って均一なバンク番号の分布からの偏差を計算し、（ｃ）偏差が最小となる値からΛを選択する、ことによって定められる、いるシステム。
【請求項３２】
複数の、論理アドレスの明示的アクセスシーケンスに対して、対応する物理アドレスのシーケンス内の前記引き出された物理アドレスは、平均すると、前記対応する物理アドレスのシーケンスの何れにおいても、前記メモリデバイスに対するほぼＮ回のアクセス内で繰り返されることのないメモリバンク番号を有していることを特徴とする、請求項３１に記載のシステム。
【請求項３３】
複数のアドレス可能なメモリ位置を備えている、複数のＮ個のメモリバンクを有するメモリデバイスであって、前記メモリ位置はそれぞれに、論理アドレスａと、対応する物理アドレスとを有しており、前記物理アドレスは、メモリバンク番号Ｂと、ローカルアドレスlaとを備えているメモリデバイスにおける方法であって、
前記メモリデバイスが、前記論理アドレスそれぞれに対して、対応する物理アドレスを引き出すアドレス翻訳ユニットを備えたものであり、
前記対応するバンク番号Ｂ及び対応するローカルアドレスlaが、ａ'はａのビットの範囲を含み、Λは整数の乗数を表すものとして、モジュラー乗算Λ・ａ'の結果内のビットの範囲から引き出され、
（ａ）少なくとも１つの、論理アドレスの明示的アクセスシーケンスに対し、対応する物理アドレスのシーケンス内の前記引き出された物理アドレスは、平均すると、前記対応する物理アドレスのシーケンスにおいて、前記メモリデバイスに対するほぼＮ回のアクセス内で繰り返されることのないメモリバンク番号を有しており、
（ｂ）前記Ｎの値は、前記メモリデバイス上で使用することのできるバンクの最大数よりも小さい何れのバンクの数にでも再構成可能であり、
前記アドレス翻訳ユニットで行われるアドレス変換が、ａ−Ａ＝Λａmod２Kに基づいて実行され、ａは論理アドレス、Ａはａに対応するスクランブルされた物理アドレス、２Kはアドレス空間、Λは奇数値定数であり、Λが、（ａ）Λを様々な値に設定し、（ｂ）各値に対して、少なくとも１つの明示アクセスパターンに亘って均一なバンク番号の分布からの偏差を計算し、（ｃ）偏差が最小となる値からΛを選択する、ことによって定められる、ことを特徴とする方法。
【請求項３４】
論理アドレスの所与のアクセスシーケンス内の各論理アドレスは、他のアドレスと、シーケンス内でストライド値分だけ離されていることを特徴とする、請求項３３に記載の方法。
【請求項３５】
論理アドレスの各明示的アクセスシーケンスは、１又は複数の次元を有するテーブルにおける線形のアクセスシーケンスであることを特徴とする、請求項３３に記載の方法。
【請求項３６】
バンク番号を欠陥のないバンクの番号にマップするバンクテーブルを記憶する段階を更に含んでいることを特徴とする、請求項３３に記載の方法。
【請求項３７】
Ｎの値をＮメモリに記憶する段階を更に含んでいることを特徴とする、請求項３３に記載の方法。
【請求項３８】
各バンクは、Ｓ個のサブバンクを含んでおり、各論理アドレスａに対して、対応するバンク番号Ｂが、Ｓから更に引き出されることを特徴とする、請求項３３に記載の方法。
【請求項３９】
Ｓの値をＳメモリに記憶する段階を更に含んでいることを特徴とする、請求項３８に記載の方法。
【請求項４０】
（ａ）値ΛをΛメモリに記憶する段階と、
（ｂ）Ｎの値をＮメモリに記憶する段階と、
（ｃ）Ｓの値をＳメモリに記憶する段階と、
（ｄ）バンク番号を欠陥のないバンクの番号にマップするバンクテーブルを記憶する段階と、
（ｅ）前記Λメモリと、Ｎメモリと、Ｓメモリと、バンクテーブルの内の１つ又はそれ以上を、１つ又はそれ以上のバンクにエラーが検出された場合は、修正する段階を、更に含んでいることを特徴とする、請求項３８に記載の方法。
【請求項４１】
値ΛをΛメモリに記憶する段階を更に含んでいることを特徴とする、請求項３３に記載の方法。
【請求項４２】
メモリデバイスにおいて、
それぞれが複数のアドレス可能なメモリ位置を備えている、複数のＮ個のメモリバンクであって、前記メモリ位置はそれぞれ、論理アドレスと、対応する物理アドレスとを有しており、前記物理アドレスは、メモリバンク番号と、ローカルアドレスとを備えているメモリバンクと、
前記論理アドレスそれぞれに対して、前記対応する物理アドレスを引き出すアドレス翻訳ユニットと、を備えており、
少なくとも１つの、論理アドレスの明示的アクセスシーケンスに対して、対応する物理アドレスのシーケンス内の前記引き出された物理アドレスは、Ｎ＋１よりも小さな周期を有する周期的パターンを形成することのないメモリバンク番号を有しており、
バンク矛盾が、平均すると、前記メモリデバイスに対するアクセスのパーセンテージとして表現される１／ｅ未満で発生し、
ｅが自然対数の底を表現するものであり、
前記アドレス翻訳ユニットで行われるアドレス変換が、ａ−Ａ＝Λａmod２Kに基づいて実行され、ａは論理アドレス、Ａはａに対応するスクランブルされた物理アドレス、２Kはアドレス空間、Λは奇数値定数であり、Λが、（ａ）Λを様々な値に設定し、（ｂ）各値に対して、少なくとも１つの明示アクセスパターンに亘って均一なバンク番号の分布からの偏差を計算し、（ｃ）偏差が最小となる値からΛを選択する、ことによって定められる、ことを特徴とするメモリデバイス。
【請求項４３】
メモリデバイスにおいて、
それぞれが複数のアドレス可能なメモリ位置を備えている、複数のＮ個のメモリバンクであって、前記メモリ位置はそれぞれ、論理アドレスと、対応する物理アドレスとを有しており、前記物理アドレスは、メモリバンク番号と、ローカルアドレスとを備えているメモリバンクと、
前記論理アドレスそれぞれに対して、前記対応する物理アドレスを引き出すアドレス翻訳ユニットと、を備えており、
少なくとも１つの、論理アドレスの明示的アクセスシーケンスに対して、対応する物理アドレスのシーケンス内の前記引き出された物理アドレスは、Ｎ＋１よりも小さな周期を有する周期的パターンを形成せず、且つ、平均すると、前記対応する物理アドレスのシーケンスにおいて、前記メモリデバイスに対するほぼＮ回のアクセス内で繰り返されることのないメモリバンク番号を有しており、
Ｎを２bに等しいとすれば、論理アドレスａは、２Kのアドレス空間を含んでおり、
ｂが、メモリバンクの数を定める数であり、これにより、前記メモリバンクの数が２をｂ乗した数に等しくなり、
Ｋが前記メモリデバイスのアドレス可能な空間を定める数であり、これにより、前記メモリデバイスのアドレス可能な空間が２をＫ乗した数に等しくなり、
各論理アドレスａに対して、スクランブルアドレスＡは Λａ mod ２Kを含んでおり、対応するバンク番号Ｂは、第１の選択されたＡのビットから引き出され、対応するローカルアドレスlaは、第２の選択されたＡのビットから引き出され、
前記アドレス翻訳ユニットで行われるアドレス変換が、ａ−Ａ＝Λａmod２Kに基づいて実行され、ａは論理アドレス、Ａはａに対応するスクランブルされた物理アドレス、２Kはアドレス空間、Λは奇数値定数であり、Λが、（ａ）Λを様々な値に設定し、（ｂ）各値に対して、少なくとも１つの明示アクセスパターンに亘って均一なバンク番号の分布からの偏差を計算し、（ｃ）偏差が最小となる値からΛを選択する、ことによって定められる、ことを特徴とするメモリデバイス。
【請求項４４】
メモリデバイスにおいて、
それぞれが複数のアドレス可能なメモリ位置を備えている、複数のＮ個のメモリバンクであって、前記メモリ位置はそれぞれ、論理アドレスと、対応する物理アドレスとを有しており、前記物理アドレスは、メモリバンク番号と、ローカルアドレスとを備えているメモリバンクと、
前記論理アドレスそれぞれに対して、前記対応する物理アドレスを引き出すアドレス翻訳ユニットと、を備えており、
少なくとも１つの、論理アドレスの明示的アクセスシーケンスに対して、対応する物理アドレスのシーケンス内の前記引き出された物理アドレスは、Ｎ＋１よりも小さな周期を有する周期的パターンを形成せず、且つ、平均すると、前記対応する物理アドレスのシーケンスにおいて、前記メモリデバイスに対するほぼＮ回のアクセス内で繰り返されることのないメモリバンク番号を有しており、
各論理アドレスａに対して、
（ｉ）Λを１以外の奇数の整数乗数とし、ａ'が選択されたａのビットを含むものとして、スクランブルアドレスＡは Λａ'を含んでおり、
（ii）対応するバンク番号Ｂは、第１の選択されたＡのビットから引き出され、
（iii）対応するローカルアドレスlaは、第２の選択されたＡのビットから引き出され、
前記アドレス翻訳ユニットで行われるアドレス変換が、ａ−Ａ＝Λａmod２Kに基づいて実行され、ａは論理アドレス、Ａはａに対応するスクランブルされた物理アドレス、２Kはアドレス空間、Λは奇数値定数であり、Λが、（ａ）Λを様々な値に設定し、（ｂ）各値に対して、少なくとも１つの明示アクセスパターンに亘って均一なバンク番号の分布からの偏差を計算し、（ｃ）偏差が最小となる値からΛを選択する、ことによって定められる、ことを特徴とするメモリデバイス。
【請求項４５】
メモリデバイスにおいて、
それぞれが複数のアドレス可能なメモリ位置を備えている、複数のＮ個のメモリバンクであって、前記メモリ位置はそれぞれ、論理アドレスと、対応する物理アドレスとを有しており、前記物理アドレスは、メモリバンク番号と、ローカルアドレスとを備えているメモリバンクと、
前記論理アドレスそれぞれに対して、前記対応する物理アドレスを引き出すアドレス翻訳ユニットと、を備えており、
各論理アドレスと、その対応する物理アドレスとは、有限疑似クリスタルマッピングによって関係付けられており、
前記アドレス翻訳ユニットで行われるアドレス変換が、ａ−Ａ＝Λａmod２Kに基づいて実行され、ａは論理アドレス、Ａはａに対応するスクランブルされた物理アドレス、２Kはアドレス空間、Λは奇数値定数であり、Λが、（ａ）Λを様々な値に設定し、（ｂ）各値に対して、少なくとも１つの明示アクセスパターンに亘って均一なバンク番号の分布からの偏差を計算し、（ｃ）偏差が最小となる値からΛを選択する、ことによって定められる、ことを特徴とするメモリデバイス。
【発明の詳細な説明】
【０００１】
（発明の属する技術分野）
本発明は、一般的にはメモリアドレス指定システム及び方法に、厳密には、任意の数のバンクを有するマルチバンクメモリへの高性能アクセスを提供するメモリアドレス指定システム及び方法に関する。
【０００２】
（発明の背景）
従来の最高の性能を達成するためのメモリ設計では、メモリ空間は、通常は２の累乗の数の、普通はバンクと呼ばれる個々の構成要素で構成されている。メモリ空間は、バンクの間に「インタリーブ」されており、これは、連続するアドレスが通常は異なるバンクにマップされていることを意味する。この場合のバンク数は、単にアドレス内の最低のビットＡを見れば求めることができ、即ち、2bをバンクの数Ｎとして、バンク＝A mod 2b となる。このアプローチは、５１２バンクまでのメモリを使う高性能システムで使用されてきた。メモリバンクの数が増えると、一般的にメモリのスループットが、従ってメモリシステムから演算ユニットへの帯域幅が増える。このスループットは、従来からコンピュータオペレーションの最大の弱点となっている。
【０００３】
このメモリ表現に関わる既知の問題は、偶数であるか又は２の高い累乗で割り切れるストライドで、アレイ又は他のデータ構造にアクセスする際に被る性能低下にある。例えば、１６バンクシステムで、ストライド１６のアクセスは、１６バンクの内１つだけにしかアクセスされないので最低の性能となる。多くの実際のアプリケーションでは、アレイアクセスは、２の高い累乗で割り切れるストライドを有している。例えば、ｍ＞＝ｂとして、２mｘ２mのサイズのマトリクスでは、列アクセスは、全ての列が同じメモリバンク内にあるため、ピーク性能の１／Ｎしか発揮されない。同様な性能低下は、他のタイプの明示的アクセスのパターンでも生じる（即ち、明示的に定義されたアクセスのシーケンスで、これは通常、正規のアクセスシーケンスと呼ばれ、例えば、上記マトリクスにおける対角線アクセスがそうである）。
【０００４】
このメモリ表現に関わるもう１つの問題はフォルトトレランスの欠如であり、特に、単一チップ内に複数のメモリバンクを有するメモリデバイスの場合にそうである。そのような単一チップデバイスでは、１つのバンクが駄目（即ち、少なくとも１つの使用できないメモリ位置を有するバンク）になると、通常、メモリデバイス全体が廃棄されるか、使用されているバンクの数が次に低い２の累乗にカットされるか、の何れかになる。この問題は、新しいメモリパーツに関する生産高が非常に低くなり、そのようなデバイスを製造するプラントの能力の一部が販売に供し得ない製品を作るのに向けられることになりかねないので、非常に重大である。この問題は、埋め込みメモリユニットを有する新しい世代のマルチプロセッサチップでは一層深刻になる。そのようなチップは、例えば、2bのマイクロプロセッサと2bのメモリユニット（例えば、各ユニット当たり１から８ＭビットのＤＲＡＭの場合）を備え、それが互いに、理論的には2bｘ2b一杯のクロスバースイッチングネットワーク上で通信することになる。そのようなチップのメモリは、共用メモリモデルでは、2mを各個々のメモリユニットのサイズとすれば、2b・2mメモリ位置のフラットアドレス空間として取り扱われる。埋め込みメモリチップは、通常のメモリユニットよりも遙かに複雑なので、そのようなチップを廃棄するかグレードを下げる際のコストは、通常のメモリユニットをそうする場合よりもそれ相応に高くつく。
【０００５】
これらの問題を解決しようとする試みは、まだ完全には成功していない。
例えば、ＲＡＭＢＵＳ及び他の類似の技術は、このプロセッサ−メモリ間のボトルネックを、ノンバンクメモリへの高速メモリオペレーションを提供するか、又は単にマルチバンクメモリをインタリーブすることによって軽減しようと試みている。しかし、基本的に、連続するメモリ要求に対して改善が見られるだけである。更に、演算ユニットの速度が劇的に高速化するにつれ、ボトルネックは取り残されたままになっている。
【０００６】
特にバンク矛盾問題に取り組む他の技法が、Ｐ．Ｐバンドニック及びＤ．Ｊ．クックによる、１９７１年ＩＥＥＥトランスコンピュータ２０、１５６６−６９頁「パラレルメモリの編成と使用」に記載されている。バンドニック他は、ｐを素数として、ｐバンクのメモリを使用するメモリの実現を提案している。この場合、直線アレイに対するバンク矛盾は、ｐで割り切れるストライドに対してだけ生じ得る。議論の余地はあるが、これで現実にはバンク矛盾が起こり難くなる。しかし、デコーディングロジックが相当増加することになり、特に、全ての整数をｐで除する回路が必要となる。要求されるアドレスＡに対し、剰余A mod p がアドレスのバンクを与え、一方、商A/p がバンク内の物理アドレスを与える。初期のＢＳＰ（Burroughs Scientific Processor）は、p=17 とするこのタイプのメモリシステムを有していた。デコーディングロジックが増えるのに加え、この種の解法は、バンクの数を素数に限るのが大きな制約となり、例えば、プレースメント、ルーチング、インタフェース等では、非素数、特に２の累乗のバンクが好ましい選択肢であるので、不適切である。
【０００７】
バンク矛盾問題に対する別の救済策は、疑似ランダム数発生器を用いて、論理アドレスＡと、対応するバンクとの間のマッピングを生成することである。そのようなシステムの１つが、例えば、Ｒ．ラガファン、Ｊ．Ｐ．ヘイによる１９９０年スーパーコンピューティング会報４９−５８頁「ランダムにインタリーブされたメモリについて」に述べられている。疑似ランダム発生器は、順序付けられたシーケンスのインプット値に対し、ランダムなシーケンスのアウトプット値を生成するが、所与のインプット値に対して常に同じアウトプット値を作り出す。この技法の問題点の１つは、ストライド１のアクセスに対しバンク矛盾を生じることである。ストライド１のアクセスは、大部分のコンピュータアプリケーションにおいて最も普通のアクセスパターン（例えば、命令のストリームを読む際に生じる）であり、従って、そのようなアクセスに対してメモリ性能が大幅に低下するのは受け入れられない。一般的な問題は、疑似ランダム又は真のランダムマッピングは、平均すると、Ｎが大きくても、アクセスの１／ｅ％（ｅは自然対数の底で、即ち３６．７８．．．％となる）以上のバンク矛盾を生じることである。これは、実質的にピーク性能を低下させることになる。加えて、ある既知の疑似ランダム数発生器は全バンクに亘ってアドレス空間を均等にマップせず、即ち、あるバンクには他のバンクよりも多くのアドレスがマップされることになり、これが今度はバンク矛盾を増し性能を低下させることになる。
【０００８】
この様に、単純なアドレス翻訳スキーム（標準的インタリーブスキーム、又はバンドニック／クック翻訳から派生した種々のスキーム）は、固定ストライドパターンのシーケンスに対し単純な周期性のバンク番号のシーケンスを作り出し、従って、多くのストライドにおいて繰り返すバンク矛盾を引き起こすが、一般的なアドレススクランブルマッピングは、任意の正確なアクセスシーケンスに対してランダムなバンク番号のシーケンスを作り出す。これらのバンク番号のシーケンスは、そこには対応する物理アドレスがあるが、上記のように、統計的に相当なバンク矛盾を（Ｎ個のアドレスのシーケンス内に）有しており、十分にランダム化されており、スクランブルが掛けられるアドレス空間のサイズよりも小さな周期は有していない。
【０００９】
従って、ストライド１のアクセスパターンや、偶数ストライドパターン、２の累乗ストライドパターンのような他の特に重要な明示的アクセスパターン、又は対角線及びその他の関心対象アクセスパターンに対して、一般的に、矛盾のないアクセスを提供する、さして複雑でなくフォルトトレラントなスクランブル技法が渇望されている。
【００１０】
（発明の概要）
従って、本発明の目的は、一般的に、ストライド１のアクセスパターンに対しては何らのバンク矛盾を呈せず、他の関心対象アクセスパターンに対してもしばしばバンク矛盾を呈することのない、マルチバンクメモリアドレスシステム及び方法を提供することである。ある実施形態では、複数のアドレス可能メモリ位置を備えた複数のＮ個のメモリバンクを有するメモリデバイスが提供されている。各メモリ位置は、論理アドレスと、対応する物理アドレスとを有しており、物理アドレスは、メモリバンク番号と、メモリバンク内のローカルアドレスを備えている。メモリデバイスは、各論理アドレス毎に、対応する物理アドレスを引き出すアドレス翻訳ユニットを含む、アドレスマッピングシステムを備えている。ある好適な実施形態では、アドレス翻訳ユニットは、少なくとも１つの、論理アドレスの明示的アクセスシーケンス（例えば、シーケンス内の各論理アドレスが、ストライド値によってシーケンス内の別のアドレスから分離されている場合）に対して、対応する物理アドレスのシーケンス内の引き出された物理アドレスは、Ｎ＋１より小さな周期（又は、アドレス空間のサイズよりも小さな周期でさえ）を有する繰り返しパターンを形成しないメモリバンク数を有し、平均して、対応する物理アドレスのシーケンスにおいて、ほぼＮ個のアドレス内でバンク番号を繰り返すことのないように作動する。
【００１１】
アドレス翻訳ユニットによって実行されるマッピングを、ここでは「有限疑似クリスタルマッピング」と呼ぶ。この用語は、本発明の好適な実施形態による翻訳ユニットが、大抵のストライドに対して、殆ど周期的な（即ち、疑似クリスタル様の）バンクアクセスパターンを作り出す事に由来するものであり、例えば、選択されるバンクは、一般的には固定値の分だけ離されるが、時には違う値の分だけ離されることもある。説明のために例示するが、バンクに０から１５の番号が付けられている１６バンクメモリシステムにおける、所与のストライドに対する疑似クリスタルマッピングは、ある例では０，２，４，６，８，１０，１３，１５，１，３，５，７，９，１２，１４．．．となっている。この例では、シーケンス内のバンク番号は、一般的には２だけ離されているが、所によっては他の数（１０から１３の間、９から１２の間の３）だけ離されているところもある。特定の明示的アクセスパターンに対するある好適な疑似クリスタルマッピングは、各メモリバンクが、ほぼ同じ回数アクセスされるというようなものである。ある好適な実施形態では、不一致（ここでは、この用語は、所与のバンクアクセスの分布の、均一な分布からの偏差を意味する）が最小となる。このバンク当たりの不一致は、唯のＱ（１）（オーダー１）である。
【００１２】
疑似クリスタルマッピングは、ある実施形態では、アドレスａを以下の形式のモジュラー変換を使ってスクランブルすることによって実行される。
ａ−Ａ＝Λａ mod ２K
ここに、Ａはａに対応するスクランブルされたアドレスであり、２Kはアドレス空間（Ｋは、メモリ製造過程で決まり、下の例では、通常、ワード整列メモリに対して約２１である）であり、Λは奇数値定数である。この例のバンク数はスクランブルされたアドレスＡの最上位ビットから導き出される。
【００１３】
このスキームにおける有限疑似クリスタルマッピングを得るため、Λは、２Kアドレス空間に亘って、関心対象の明示的アクセスパターン（種々の固定ストライド、又は対角線アクセスパターンを含む２次元又は多次元テーブルにおける線形のアクセスのシーケンス等）で生じるバンク数の均一な分布からの偏差を最小とするように選択される。
【００１４】
適したΛの範囲は、種々の技法を使って狭めることができる。例えば、バンク数の均一な分布からの偏差を最小化することは、小数部｛ｎ・θ｝の均一な分布からの偏差を最小とする問題と同じである。その結果として、二次無理数に似た乗数Λが良好な均一分布特性を与える。（例えば、H.Behnke, Zur Theorie der Diophantischen Approximation, I, Abh. Math Sem. Hamburg 3 (1924), pp. 261-318 参照。）１つの処方は、黄金比τ＝（５1/2−１）／２（約.6180）に触発され、Λを、Ｍ＝＜Ｋにおいて、τ・２Mに近い整数に設定することである。良好な実施形態を後に説明する。
【００１５】
代わりに、適している可能性のあるΛの範囲は、Λ/２Kの形をした有理数に関する連分数展開アルゴリズムの最適化を通して狭めることもできる。例えば、Rock and Szusz, Continued Fractions, World Scientifica Publish  -ing Co. Pte. Ltd.(1994) 参照。最適化アルゴリズムは、同時に２つの状態、即ち、ａ）Ｍ＝＜ＫにおけるΛ/２Kの連分数展開（ａ0，ａ1，ａ2，．．．）における最初の項ａiが全て小さい（例えば、１又は２）と、ｂ）Λの２値（又はブースエンコードされた２値）展開における非ゼロビットの数が、条件ａ）を満たす乗数の中で最小である、とが起こるように、適している可能性のある整数の乗数Λを見つけ出すように試みる。この非線形最適化は、スクランブルと、スクランブルの最小回路インプリメンテーションとの両方に必要な最良の乗数Λを提供する。Λの最終的な選択は、アドレス空間に亘る各種の明示的アクセスパターンに対するバンクアクセスの均一な分布からの偏差の最小化のみに基づいてい行われる。偏差は、全アドレス空間に亘る、種々のストライドに対するバンクアクセスパターン、又は他の明示的アクセスパターンの網羅的シミュレーションを通して計算される。適するΛは、全ての可能なΛの値（即ち、奇数、及び1=<Λ=<2kの中）に対する偏差の網羅的計算によって選択される。
【００１６】
当業者には、各種組み合わせ回路、テーブルルックアップ、或いはモジュラー乗算ではなくアナログ解法でも、これ等を使って、低不一致マッピングを達成する同じ効果を有する有限疑似クリスタルマッピングを構築することができることを理解頂けよう。
【００１７】
全てのバンクが無欠陥（Ｎ＝２b）であれば、バンクとローカルアドレスはスクランブルアドレスＡから、次のようにして引き出せる、即ち、Ａの最上位のｂビットがバンク番号であり、Ａのビットの残りがバンク内のローカルアドレスである。
【００１８】
しかし、１つ又は複数のバンクに欠陥がある場合、Ｎ＜２bとして、アドレス空間はＮ・２mのメモリ位置に縮小される。この場合、有効範囲０．．．Ｎ・２m−１を有する論理アドレスａは、０．．．Ｎ−１の範囲の固有のバンク番号ｕと、０．．．２m−１の範囲のローカルアドレスlaとに翻訳する必要がある。翻訳を実行するハードウェアのロジックの複雑さは非常に重要なことである。
【００１９】
これは、マルチプロセッサが複数のメモリユニットと同じチップ内で通信する埋め込み型ロジックを備えたマルチバンクメモリ部品では、特に重要である。チップ上に埋め込み型メモリを有するマルチプロセッサチップの一般的な構成は、互いにスイッチングネットワーク上で通信する、Ｎ＝２bのマイクロプロセッサと、それぞれのサイズが２mのＮ＝２bのメモリバンクユニット（例えば、それぞれ１から８ＭビットのＤＲＡＭ）で構成される。そのようなスイッチングネットワークは、一杯で2bｘ2bのクロスバースイッチとなり得る。先に述べたように、このチップ内の全メモリは、共用メモリモデルでは、Ｎ・２mメモリ位置のフラットアドレス空間として取り扱われる。これらの翻訳ユニットは、部品内の全マイクロプロセッサに必要とされるので、アドレス翻訳ロジックをハードウェアに容易に実装できることは非常に重要である。実際の例として、我々はこれ以降、６４のメモリバンクと６４のマイクロプロセッサを有し、各メモリバンクが２13のキャッシュライン（キャッシュライン当たり３２バイトまで）を含んでいる、ｂ＝６のケースについて考える。このケースでは、アドレス空間は、無欠陥の場合、２19のアドレス可能位置（いわゆるキャッシュライン）となる。チップ面積が比較的大きいので、普通は欠陥があり、良好なプロセッサの数Ｎは、３２まで或いはそれ以下に下がることもある。これらの部品はメモリ翻訳ユニットだけが利用できる。上記の付加的スクランブル特性を備えた、オンザフライアドレス再マッピングユニットの構築は、広帯域幅フォルトトレラント大型メモリモジュールにとって、特に、埋め込み型メモリをマルチバンクブロックとして備えている大型のチップ上システム製品にとって非常に重要なアプリケーションである。
【００２０】
本発明は、良好な固定ストライドアクセス（及び、他の明示的パターンのアクセス）を達成するためにスクランブル技法も使用する、メモリ翻訳（再マッピング）問題に対する幾つかの低コストの解法を提供する。これらの解法は、高性能を達成するために、一般的な有限疑似クリスタルマッピングの方法に基づいている。好適な実施形態では、この様な解法は（付加的低不一致特徴を備えた）モジュラー乗算を使用している。
【００２１】
可能なインプリメンテーションの１つは、アドレス空間をＮ個のバンクに再分割し、同時にスクランブルを実行する新規の方法である。例えば（先のように）アドレス空間が２Kで、Ｎを任意の数としてＮ個のメモリユニット（バンク）がある場合、先ず以下のスクランブルマッピングが実行され、
ａ−Ａ＝Λａ mod ２K
次に、このメモリ位置があるユニット番号ｕ＝Ａ・Ｎ／２Kが、ローカルアドレスla＝Ａ−ｕ・２K／Ｎと共に求められる。ここに、Ｎは短い定数であり、２K／Ｎは（長い）定数である。標準的スクランブルに加え、このアプローチは、短い（６ビット）数による唯２つの乗算と、加算／減算を必要とする。各種のモジュラー乗算（スクランブル及び翻訳）を１つのブロックに併合して全体の処理の速度を上げ、サイクルタイムＴ（〜２．５）ｎｓ内に完了できるようにするのが望ましい。
【００２２】
上の例では、ユニット当たりのローカルサブバンクの数は、１（Ｓ＝１）である。これは、後に詳細に述べる一般的方法の中の最も簡単なケースである。様々なバンクの数Ｎ及びサブバンクの数Ｓに対して作動し、これよりも相当に良好なスキームがあり、我々は、複雑さが最小で高性能である故に、それを推奨する。バンク番号ｕとローカルアドレスlaをスクランブルアドレスＡから引き出すための、さして複雑ではない技法が、以下の本発明の実施形態の詳細な説明において提供される。
【００２３】
図１２から３７に示す階層的設計構成図に使用している共通の機能ブロックを以下に列挙する。これらは当業者には既知の論理ブロックであり、１つ又はもっと多くの番号でパラメータ化されている。各ブロックのタイプ毎に、図１２から３７に、一例を挙げ説明している。
【００２４】
ブロック名及び機能説明
１．  Bits_N_K_L  NビットバスA[N-1:0]を取り込み、サブバスA[L:K]だけを解放する。
２．  AddN  A[N-1:0], B[N-1:0]に関するNビット加算器
３．  CSA  キャリーセーブ（フル）加算器
４．  CSA-N  X[N-1:0],Y[N-1:0],Z[N-1:0]インで,S[N-1:0], A[N-1:0],C[N-1:0]アウトのＮ長アレイのCSA
５．  DECNE（Nは任意の数）使用可能Eを有するNこのデコーダに関する  [log2N]
６．  GNDxN  Nグラウンド(0)を返す；Q[N-1:0]=0
７．  INS_N_M_L  A[N-1:0](N個のインプット)を取り込み、それをボトムではLグラウンドで引き延ばし、トップにはM個のアウトプットに適合するだけのA[J:0]ビットを挿入し、N+L<Mであれば、結果Q[M-1:0]のトップにグラウンド(0)を加える。
８．  N_K_M  MビットのアウトプットQ[M-1:0]を有する結線接続された十進定数K
９．  Pad_N_M  Mビットのアウトプットを得るためにA[N-1:0]をM-Nグラウンド(0)で引き延ばす。
１０．PDMuxN_M  Muxをプリデコードする。Q[M-1:0]を出すために、N個の個別の選択線S[M-1:0]と、ベクトルバスA[0]  [M-1:0],..., A[N-1][M-1:0]を取り込む。
１１．Up_N_M  A[N-1:0]を取り込み、そのボトムをM個の0で引き延ばす(Mだけ左にシフトする)。その結果、N+M長となる。
１２．TrAddN  キャリインCIとキャリアウトCOを備えたNビットの加算器。
１３．SubN  長さNの減算ユニット。
１４．CPM_N(チョップ積mux)  デコードされたフォームの中でインプット0, B[N-1:0], B[N-1:0]左シフト(N-1ビットだけ左)そして（B[N-1:0]）は対象外にしてこの順から選択。選択ラインはA[2:0]
１５．ProdMux_N  B[N-1:0]{0,1,2,3=-1}の単純な符号付積。又、トップ、N番目のビットにVCC(=1)を加算。
１６．Recode  0,1,2,3,キャリイン(CI)を0,1,2,-1,キャリアウト(CO)としてRadix 4レコーディングに記録。
１７．Recode_{6,8}  レコードブロックを使って6又は8を逐次的にに記録。
【００２５】
（発明を実施するための最良の形態）
１．２の累乗のバンクの実施例
バンクの数、Ｎが２の累乗（すなわち、Ｎ＝２b）である場合、本発明の一つの実施例に従ったアドレス変換ユニットは、以下のステップを実行する：
（１）  Ａ＝Λａ  ｍｏｄ  ２Kに設定する。Ａは、論理アドレスａに対応する、スクランブルされたアドレスであり、２Kは、アドレス空間であり（Ｋは、通常、１ワード・アラインド・メモリに対して、およそ２１である）、およびΛは、奇数の定数である；および
（２）  バンク番号を、Ａの上からｂビットに設定し、ローカル・アドレスをＡの残りのビットに設定する。
【００２６】
Λは、２Kアドレス空間に対して、関心のある明示的アクセス・パターン（様々な固定ストライドまたは対角アクセス・パターン等）において生じる、バンク番号の一様分布からの偏差を最小にするように選択される。Λの選択は、ユーザ要件に依存し、および本発明は、あらゆる特定の基準に制約されない。適切なΛは、例えば、直接コンピュータ・シミュレーションを介して、Λのすべての可能な値に関する偏差の包括的計算によって選択されることができ、および関心のある明示的１次元または多次元メモリ・アクセス・パターンの特定のクラスに関する、バンク・アクセスの一様分布からの偏差を最小にするΛを選択することによって選択される。さらに、Λの整数論的属性に基づいた解析技術は、一様分布からの最小の偏差の必要とされる属性を伴うΛのクラスを予め選択するために使用されることができる；そして、包括的シミュレーションのために必要とされる時間を減らす。
【００２７】
係数２Kの選択が好まれるのは、当業者が理解するであろう通り、乗算Λａ  ｍｏｄ  ２Kが、ハードウェアにおいて比較的簡単に実行されることができるからである。この構成は、その実装において、ほんの数ゲート遅延のみを必要とし、最大でも、１の追加パイプライン・ステージをメモリ・アクセスに加えるのみである。モジュラー乗算、ｍｏｄ、すなわち２16は、１６ビット固定点乗算器のチップ・エリアの半分だけを占める（すなわち、ゲートの半分だけを必要とする）。それが十分に迅速でもあるのは、乗数Λが前もってわかっており、（Ｗａｌｌａｃｅ）乗算ツリーのステージの数を減らすために、コード化されたＢｏｏｔｈでもよいからである。回路の複雑性は、ハードウェアにおいてΛの値を固定することによって、さらに減らすことができる。
【００２８】
大変典型的なチップ上のマルチ・バンク・メモリ・サブシステムの場合における、準結晶アドレス・マッピング構造の特定的な例が後述される。この特定的な例において、チップ上に１６ビットメモリ・バンクがあり、アクセスのストリームは、各メモリ・バンクの入力上のＦＩＦＯおよび出力上のＦＩＦＯによってバッファされる。前記バッファは、メモリ・アクセスの適切な順番のシーケンスを確かなものにする。バンク・コンフリクトの定義は、各メモリ・バンクのサイクル時間にのみ基づいている。現在の進化した技術を表しているこの例においては、システム・サイクル時間はＴ  ｎｓ．（Ｔ〜２．５）であり、およびメモリの各バンクは、１０Ｔ  ｎｓ．（または次世代の技術では、８ｔ  ｎｓ．）のサイクル時間を有する。このように、アクセスのコンフリクト・フリーなパターンは、いくらか弛緩した状態である。バンク・コンフリクトは、この例においては、同じバンクが、１０の連続したメモリ要求の中でアクセスされる場合にのみ生じる。逆に、１０の連続したメモリ要求の間にバンク・コンフリクトが生じない場合、アクセスは、追加の遅延なく、およびシステムのピーク帯域幅で処理される。以下の説明は、正確に、このメモリ編成を前提としているが、本発明は、この編成に制限されず、および当業者は、特定の製造者が、異なる編成または異なるタイミング特性を有しうることを理解するであろう。
【００２９】
この特定の例において、メモリにおける論理アドレスから物理アドレスの準ランダムまたはランダム・マッピングの使用は、メモリ・コンフリクトを生み出し、システムのピーク性能を大幅に低下させるであろう。ここで、最も重要なストライド１パターンのアクセスを含む、すべての明示的論理アドレス・アクセス・パターンは、不可避のバンク・コンフリクトを伴う、物理メモリへのランダム・アクセスへと変えられる。例えば、メモリ・バンクの入力および出力上の深度２のＦＩＦＯで、スループットはたった６６％である。ＦＩＦＯの深度を６に増やすと、スループットは９６％に増えるが、平均遅延を３倍にする以上の犠牲がある。
【００３０】
Λは、例えば、１３の倍数ではないＯ（２M）までのサイズのすべてのストライドに関するメモリ・アクセスにおいて、コンフリクト・フリーなバンク・アクセス、そして最小の遅延を生成するように選択されてもよい。数１３は、この属性を持つ最大の（よって最良の）数であるが、他の数、例えば１１または他のより小さな素数が使用されうる。例えば、Ｍ＝１４である場合、スクランブル乗数（scrambling multiplier）Λ＝３７８１は、１３では割ることができない、３５０までのすべてのストライドに対して、１００％のメモリ利用および最小遅延を供給する。
【００３１】
この特定的な例は、ほとんどのストライドおよび任意の数のメモリ・バンク（２の累乗である数のバンクを含むが、それに制限されない）に対して、コンフリクト・フリーなバンク・アクセスを維持する一方で、他のアクセスのランダム化を供給する。このスクランブラーは、固定乗数（fixed multiplier）Λに対する最小の複雑性（そのサイズは入力／出力において線形であるにすぎない）を有し、それは、回路のゲートの数を減らすので、このアドレス構造の実際的な実装に関して重要である。また、固定ストライド・アレイに関するこのスクランブル構造におけるバンク・アクセスのパターンは、有限準結晶タイリング（finite quasi-crystal tilings）に似ている。メモリ変換ユニットのこの例は、ここに開示されたシステムの好ましい実施例のすべてにおけるアドレス・スクランブル構造に特徴的である。
【００３２】
Λの選択における類似の最適化は、１より大きいストライドの論理アドレスの他のシーケンスに関するバンク・アクセスの一様分布およびメモリ・アクセスの、他の明示的１次元ならびに多次元パターンからの偏差を最小にするために使用されうる。他のそのような例において、Λは、ストライド１（連続）アレイにコンフリクト・フリーなバンク・アクセスを、８９で割り切れないすべての（Ｏ（２M）までの）より高いストライドに１００％帯域幅を供給するが、８９以下のいくつかのストライドには、最小のものよりも高い遅延のバンク・アクセスを供給するように選択されてもよい。
【００３３】
メモリ・バンク編成のこの特定的な例において、シミュレーションで決定される本発明のすべての性能は、単一のプロセッサへのメモリ・スループットの有効帯域幅を、ほぼ２倍にする。
【００３４】
２．任意の数のバンクの実施例
しかしながら、一つ以上のバンクが欠損を有する場合、アドレス空間はＮ・２mメモリ・ロケーションに縮まり、Ｎ＜２bである。この場合、有効範囲０．．．Ｎ・２m−１を有する論理アドレスａを、範囲０．．．Ｎ−１における独自のバンク番号ｕに、および範囲０．．．２m−１におけるローカル・アドレスｌａに変換する必要がある。前記変換を実行するハードウェア・ロジックの複雑性は、アプリケーション（特に、前記アドレス変換ユニットが、マルチプロセッサ・システムにおける各処理装置と結合されなければならない場合）には大変決定的である。さらに、メモリ・バンク・サイズは、可変的でもよい。これは、典型的には、Ｎのバンクの各々を、Ｓのサブ・バンクへ、（ＮおよびＳが両方とも可変的となるように）さらに小区分することによって達成される。メモリ・アドレス変換（およびスクランブル）ユニットは、Ｎの数のメモリ・バンクおよびＳの数のサブ・バンクが、メモリ・システムにおいて利用可能な最大ものより小さい値か、またはそれと等しい値に（動的に）設定されうる時に稼動するように設計される。
【００３５】
バンク番号ｕおよびローカル・アドレスｌａを、この一般的状況におけるスクランブルされたアドレスＡから引き出すための、低複雑性技術の特定的な例は、後述される。
【００３６】
Ａ．定義／基礎的前提
ここで使用されているように、“論理アドレス（logical address）”という用語は、メモリ・システムの外部にある装置が、メモリ内のアイテムを識別するために使用するアドレスを指す。“物理アドレス（physical address）”という用語は、物理的メモリ・ロケーションを指し、およびバンク内のバンク番号およびローカル・アドレスを含む。アドレス空間全体に対して、物理アドレスへの、論理アドレスの１対１マッピングがある。
【００３７】
この実施例は、Ｎバンク・メモリとの関係で説明され、１＜Ｎ＜６４であり、そこでは各バンクはＳ・２10ワードを含み、１＜Ｓ＜８である。“ワード（word）”および“キャッシュ・ライン（cache line）”は、アドレス可能メモリ・ロケーションであり、任意の長さでよい。典型的なメモリ・システムにおいて、各アドレス可能メモリ・ロケーションは、予め決められた数のバイト、例えば３２バイトを含む。この例において、アドレス空間は、最大で２19有効ワードに対して、Ｎ・Ｓ・２10である。すべての有効なメモリ・ロケーションは、従って、０＜Ａ＜Ｎ・Ｓ・２10の範囲である、論理的１９ビット・アドレス、Ａで表されてもよい。各論理アドレスは、物理的メモリ・ロケーションに対応し、物理的メモリ・ロケーションは、バンク内のバンク番号およびローカル・アドレスによって識別される；すなわちＡ−（Ｂａｎｋ，Ｌｏｃａｌ）で、０＜Ｂａｎｋ＜Ｎであり、０＜Ｌｏｃａｌ＜Ｓ・２10である。本発明は、上述の構造を有するメモリに制限されない。例えば、本発明は、６４より多いか、あるいは少ないバンク、または１バンクにつき８・２10ワード以上または１バンクにつき１・２10ワード以下を有するメモリに適用されてもよい。
【００３８】
Ｂ．メモリ・アドレス・システムの説明
アドレス変換およびスクランブル・ユニットにおいて、好ましい実施例に従って、バンク番号Ｂａｎｋ（＝ｕ）およびローカル物理アドレスＬｏｃａｌ（＝ｌａ）はいずれも、論理アドレスＡの数ブロックのビットで、モジュラー乗算から決定され、そして対応する結果のビット範囲を選択する。この原理は、上述のようにＮ＝２bの場合に大変単純に適用され、および任意の数Ｎのバンクおよび数Ｓのサブ・バンクには、小さな変形とともに適用される。モジュラー乗算は、ここでは、メモリ変換ユニットのための有限準結晶マッピングを構築するための手段として使用される（多くの可能な手段の一つであるか、この実施例においては好ましいものである）。
【００３９】
図１は、本発明に従った、任意の数のバンクに関するメモリ・アドレス・システムのブロック図である。変換ユニット１は、この実施例において、１９ビット論理アドレス、Ａ、バンクの数、Ｎ、サブ・バンクの数、Ｓ、および乗数Λを受け取り、および論理アドレスＡを、６ビット・バンク番号ならびに１３ビット・ローカル・アドレスに変換し、それらは出力される。前記バンク番号は、メモリ・セクション２における非欠損（non-defective）バンク・テーブル６をアドレス指定するために使用され、それは同様に、前記バンク番号を非欠損バンクの物理的バンク番号にマッピングする。物理的バンク番号およびローカル・アドレスは、付属しているメモリ装置をアドレス指定するために使用される。非欠損バンク・テーブル６は、好ましくは書き込み可能メモリ（ＲＡＭ等）である。他に、それは一回だけ、例えば付属のメモリ装置の初期テストの後にのみ設定される場合、読み取り専用メモリ（ＲＯＭ）でもよい。一つの実施例において、非欠損バンク・テーブル６は、列番号が論理的バンク番号に対応する６４×６ビット・テーブルであり、各列における前記テーブルの内容は、対応する物理的バンク番号の非欠損バンクを供給する。６４より少ないバンクがある場合、テーブルにおけるすべての列が使用されるわけではない。メモリ・テーブル６は、この例においては最大６４有効バンクがあるので、６４×６ビット・メモリとして図示されている。当然、前記メモリ・システムがより多くのバンクを有する場合は、より大きなメモリが必要であり、前記メモリ・システムがより少ないバンクを有する場合は、より小さいものが必要とされる。
【００４０】
Ｎ、ＳおよびΛの値は、メモリ・セクション２におけるレジスタ３、４および５にそれぞれ記憶される。他に、これらの値は、読み取り専用メモリまたはハードワイヤドに記憶されてもよい。
【００４１】
好ましくは、レジスタ３，４、ならびに５および非欠損バンク・テーブル６は、それらが、例えば図２に記載されたスキャン・パス・ローディング（scan path loading）を用いて更新されることができるように、構成される。（注。異なる図面での同一の番号は、同一の構成要素を指す。）この技術を用いて、Ｎ、ＳおよびΛに関する値は、レジスタ３に入力される；レジスタ３に入力された各ビットは、レジスタ３，４、および５の内容を右にシフトし、３つすべてのレジスタが所望の値で埋められるまで、レジスタ３の最後のビットは、レジスタ４に、およびレジスタ４の最後のビットはレジスタ５にシフトされる。非欠損バンク・テーブル６の値は、同様に設定される。
【００４２】
図３は、変換ユニット１のブロック図である。Ｓ−Ｂｏｘ１２は、Ａの上から９ビット（すなわちＡ［１８：１０］、以下ではＡtopと称される）をそのＢ入力において、およびそのＳ入力においてＳを受信する。それは、Ａtop／Ｓの商、Ｑ、および余り、Ｒを生み、この実施例において、Ｓは１乃至８を含む間の値である；すなわち、Ａtop＝Ｑ・Ｓ＋Ｒである。ＱおよびＲは、以下のように、有効に引き出されるかもしれない：Ｑ＝（Ｌ（Ｓ）・Ａtop＋Ｃ（Ｓ））［ｕｐｐｅｒ：ｌｏｗｅｒ］で、Ｌ（Ｓ）およびＣ（Ｓ）は、Ｓのみに依存する定数であり、［ｕｐｐｅｒ：ｌｏｗｅｒ］は、ビット範囲を特定する。Ｌ（Ｓ）およびＣ（Ｓ）は、例えば、レジスタに記憶され、またはハードウェアに実装されてもよい。Ｒは、Ａtop−Ｑ・Ｓ  ｍｏｄ８である；すなわち、Ａtop−Ｓ・Ｑの一番下３ビットである。ビット範囲［１５：１０］に関する、Ｌ（Ｓ）およびＣ（Ｓ）の値、１＜Ｓ＜８は以下の通りである：
Ｃａｓｅ  Ｓ＝１→Ｌ＝１０２４，Ｃ＝０
Ｃａｓｅ  Ｓ＝２→Ｌ＝５１２，Ｃ＝０
Ｃａｓｅ  Ｓ＝３→Ｌ＝３４２，Ｃ＝０
Ｃａｓｅ  Ｓ＝４→Ｌ＝２５６，Ｃ＝０
Ｃａｓｅ  Ｓ＝５→Ｌ＝２０５，Ｃ＝０
Ｃａｓｅ  Ｓ＝６→Ｌ＝１７１，Ｃ＝０
Ｃａｓｅ  Ｓ＝７→Ｌ＝１４６，Ｃ＝１２８
Ｃａｓｅ  Ｓ＝８→Ｌ＝１２８，Ｃ＝０
他に、Ｑは、例えば、以下のように決定されてもよい：
Ｃａｓｅ  Ｓ＝１→Ｑ（Ａtop・１２８）［１２：７］ｏｒＱ＝Ａtop［５：０］
Ｃａｓｅ  Ｓ＝２→Ｑ（Ａtop・６４）［１２：７］ｏｒＱ＝Ａtop［６：１］
Ｃａｓｅ  Ｓ＝３→Ｑ（Ａtop・１７１）［１４：９］
Ｃａｓｅ  Ｓ＝４→Ｑ（Ａtop・３２）［１２：７］ｏｒＱ＝Ａtop［７：２］
Ｃａｓｅ  Ｓ＝７→Ｑ（Ａtop・７３＋６４）［１４：９］
【００４３】
図４は、ＱおよびＲを決定するための、上述された処理を示す。ステップ２０において、ＡtopおよびＳの値が入力され、ＢはＡtopに等しく設定される。ステップ２１，２２および２３において、Ｌ（Ｓ）、Ｃおよび範囲［ｕｐｐｅｒ：ｌｏｗｅｒ］の値は、それぞれ、Ｓの値に基づいて決定される。ステップ２４において、商Ｑは（Ｂ・Ｌ（Ｓ）＋Ｃ）［ｕｐｐｅｒ：ｌｏｗｅｒ］に設定される。ステップ２５において、Ｒは（Ｂ−Ｓ・Ｑ）ｍｏｄ８に設定される。ステップ２６において、ＱおよびＲが出力される。
【００４４】
図３に戻ると、Ｍ−Ｂｏｘ１４は、（ａ）Ａの下１０ビット（すなわち、Ａ［９：０］、Ａbotと称される）をそのＢ入力で受信し、および乗数ΛをそのＡ入力において受信し、（ｂ）Ｄ＝（Ａbot・Λ）ｍｏｄ２10を計算し、および（ｃ）結果ＤをそのＱ出力において出力する。この処理は、図５の、ステップ３１，３２および３３に、それぞれ示されている。
【００４５】
適したΛが、例えば、包括的計算によって、すなわちここに記述された変換ユニットにおける様々な値を用い、およびＮならびにＳの特定の値に関する最適なバンク・アクセス・パターンを作るΛ値を決定することによって、再度決定される。上述の通り、コンフリクトは、２つの論理アドレスが同じバンク番号にマッピングされる時に生じる。このように、コンフリクトは、少なくともＮ＋１アクセスごとに生じるに違いない。再度、最適なバンク・アクセス・パターンは、バンク・コンフリクトが関心のある明示的アクセス・パターン、例えば、固定ストライド・パターンおよび線形２次元および多次元パターンのアクセス（マトリックスでのアクセスの対角パターン）に対して最小化されるパターンである。好ましい実施例において、ストライド１コンフリクトおよび関心のある他の明示的アクセス・パターン（固定ストライド・パターンを含む）に対するコンフリクトは、平均して、およそ、たったＮアクセスごとに生じるであろう。様々なストライドに最も少ないバンク・コンフリクトを生成するΛが最良である。モジュラー乗算または後述される他の代替例の一つを採用するアドレス変換ユニットを含む、本明細書の教示に従って構築されるアドレス変換ユニットは、例えば、“本発明の背景”において上述されている擬似任意マッピングの欠点を回避する。
【００４６】
低い範囲のストライド、特にストライド１に対して最適化された、Ｎの様々な値に関する好ましいΛが、下に示されている；同じ値は、許される範囲１＜Ｓ＜８におけるすべてのＳに適用される：
Ｎ＝３３，Λ＝３３，８３，９９，１６５，２３１，２４７，２４９，３５３，４１５，４５９；
Ｎ＝３４，Λ＝２５，３３，８３，９９，１６５，２３１，２４７，２４９，３５３，４１５，４５９；
Ｎ＝３５，Λ＝２５，３３，７５，８３，９９，１１９，１６５，２３１，２４７，２４９，３５３，４１５，４５９；
Ｎ＝３６，Λ＝２５，３３，７５，８３，９９，１１９，１６５，２３１，２４７，２４９，３８１，４１５；
Ｎ＝３７，Λ＝２５，３３，７５，８３，９９，１１９，１６５，２３１，２４９，３８１，４１５；
Ｎ＝３８，Λ＝２５，７５，８３，１１９，１６５，２３１，２４９，３８１，４１５；
Ｎ＝３９，Λ＝２５，７５，８３，１１９，２３１，２４９，３０５，３８１，４１５；
Ｎ＝４０，Λ＝２５，７５，８３，１１９，２４９，３０５，３８１；
Ｎ＝４１，Λ＝２５，７５，８３，１１９，２０９，２４９，３０５，３８１；
Ｎ＝４２，Λ＝２５，７５，８３，１１９，２０９，２４９，３０５，３８１；
Ｎ＝４３，Λ＝２５，７５，８３，８７，１１９，２０９，２４９，３０５，３８１，４２５；
Ｎ＝４４，Λ＝２５，８７，１１９，２０９，２４９，３０５，３８１，４２５；
Ｎ＝４５，Λ＝２５，８７，１１９，２０９，３０５，３８１，４２５，４８３；
Ｎ＝４６，Λ＝２５，８７，２０９，３０５，３８１，４２５，４８３；
Ｎ＝４７，Λ＝２５，８７，２０９，３０５，３８１，４２５，４８３；
Ｎ＝４８，Λ＝２５，８７，２０９，３０５，３８１，４２５，４８３；
Ｎ＝４９，Λ＝１０９，２０９，３０５，３８１，４２５，４８３；
Ｎ＝５０，Λ＝１０９，２０９，３０５，３８１，４２５，４８３；
Ｎ＝５１，Λ＝１０９，２０９，２４３，３０５，４２５，４８３；
Ｎ＝５２，Λ＝１０９，２０９，２４３，３０５，４２５，４８３；
Ｎ＝５３，Λ＝１０９，２０９，２３５，２４３，３０５，３９７，４８３；
Ｎ＝５４，Λ＝１０９，２０９，２３５，２４３，３０５，３９７，４８３；
Ｎ＝５５，Λ＝１０９，２０９，２３５，２４３，３１９，３９７，４８３；
Ｎ＝５６，Λ＝２０９，２３５，２４３，３１９，３９７，４８３；
Ｎ＝５７，Λ＝１０７，２３５，２４３，３１９，４８３；
Ｎ＝５８，Λ＝１０７，２３５，２４３，３１９，４８３；
Ｎ＝５９，Λ＝１０７，２３５，２４３，３１９，４８３；
Ｎ＝６０，Λ＝１０７，２３５，２４３，３１９，４８３；
Ｎ＝６１，Λ＝１０７，２３５，２４３，３１９，４８３；
Ｎ＝６２，Λ＝１０７，２３５，２４３，３１９；
Ｎ＝６３，Λ＝１０７，２３５，２４３，３７５；
Ｎ＝６４，Λ＝１０７，２３５，２４３，３７５．
【００４７】
図３に戻ると、Ｎ−Ｂｏｘ１６は、Ｓ−Ｂｏｘ１２のＱ出力をそのＱ入力にで；Ｍ−Ｂｏｘ１４の出力をそのＤ入力で、およびバンクの数、ＮをそのＮ入力において受信する。図６に記載の通り、Ｎ−Ｂｏｘ１６は、バンク番号およびローカル・アドレスのより低いオーダーの１０ビット、ＬＡ［９：０］を計算し、出力する。Ｎ−Ｂｏｘ１６から出力された、ローカル・アドレスのより低いオーダーの１０ビットは、ローカル・アドレス全体を作るために、Ｓ−ＢｏｘのＲ出力からの高いオーダーの３ビット、ＬＡ［１２：１０］と結合される。
【００４８】
Ｎ−Ｂｏｘ１６によって実行される処理は、図６に記載されている。ステップ４１において、Ｑ、ＤおよびＮが入力される。ステップ４２は、ＸをＤ・Ｎ＋Ｑに設定する。ステップ４３は、論理的バンク番号を、Ｘのビット［１５：１０］に設定する；すなわちＬｏｇｉｃａｌ  Ｂａｎｋ＝Ｘ［１５：１０］である。ステップ４４は、ローカル・アドレスのビット［９：０］を、Ｘ［９：０］に設定する；すなわちＬｏｃａｌ  Ａｄｄｒｅｓｓ［９：０］＝Ｘ［９：０］である。ステップ４５は、論理的バンク番号およびローカル・アドレスの低いオーダーのビットを出力する。
【００４９】
論理的バンク番号は、図１との関係で上述された通り、非欠損バンク・テーブル６に送信され、およびそれをアドレス指定するために使用される。
【００５０】
以下に示されるのは、Ｎ＝６４、Ｓ＝８、Λ＝２３５（＝２8−２4−２2−２0）および論理アドレスＡ＝０×３ＤＦ２９（または２進法で０１１１１０１１１１１００１０１００１）である、Ｓ−Ｂｏｘ１２、Ｍ−Ｂｏｘ１４およびＮ−Ｂｏｘ１６のオペレーションの例である。
【００５１】
【表１】
0005089842.tif 000002
【００５２】
この実施例は、２Kアドレス空間との関係で説明されており、Ｋ＝１９である。それは、例えば、アドレスの１９ビット・サブセット（低オーダー１９ビット等）を用いてバンク番号を引き出すことによって、Ｋ＞１９の場合に、任意のアドレス空間に対するさらなる変更なく、適用されることもできる。ローカル・アドレスは、例えば、１９ビット・サブセットから引き出されたローカル・アドレスを、Ｋビット・アドレスの使用されていないビットに添付することによって、この場合は引き出されうる。
【００５３】
他に、この実施例において説明されている技術は、以下の値の範囲のいずれかに対して簡単に適応することができる。すなわち：１９より大きいか、小さいかであるＫ；６４より大きいか、小さいかであるＮ；８より大きいか、小さいかであるＳである。そのような変化において、パラメータΛの選択は、上述の準結晶マッピングの原理に従って実行される。アドレス変換ユニットの性能は、適切なΛの選択を伴う、適切に変更されたＳ−、Ｍ−、およびＮ−Ｂｏｘから構築されており、Ｋが増えると（Ｋ＞１９の場合）、向上する。
【００５４】
Ｃ．ハードウェア実装
図１乃至６に記載の実施例に対するハードウェア実装は、図１２乃至３７に記載された階層的な図で示されている。これらの図における低レベル・ブロックの実装は、例示的な目的で示されており、ライブラリおよび技術に特化した方法で、実施例が実行されるであろう。当業者は、特定の実装の範囲を理解し、およびライブラリならびに処理に特化した、適切なものを選択することができる。例えば、より新しい技術において、ワイヤの長さを最小にするためにバッファが使用される一方で、より古い技術においては、ゲート遅延が少ない、より長いワイヤが好まれるであろう。
【００５５】
図１２は、Ｓ−Ｂｏｘ１２のハードウェア実装を示す。Ｓｕｂ３  １０１は、ハードワイヤド定数１１４から（または、他にはレジスタから）、４ビット定数Ｓ［３：０］および値１を受け取り、Ｓから１を減じる。これは、インデックスとして使用するために、１乃至８を含む範囲からのＳを、０乃至７を含む範囲に変換する。その結果は、対応するＬ（Ｓ）を選択するために、乗算器ＭＵＸ８×８  １０４のＳ入力に、および対応するＣの値ならびに範囲［ｕｐｐｅｒ：ｌｏｗｅｒ］を決定するために、デコーダＤＥＣ８  １１０に送信される。
【００５６】
乗算器ＭＵＸ８×８  １０４は、入力された値Ｓに基づいて、８の入力値Ａ−Ｈのうちの一つを選択し、出力する。前記入力値（図４のＬ（Ｓ）に対応する）は、定数バンク１０２から受信される。図示された通り、定数バンク１０２は、それぞれ、０から７の位置において、以下のハード・コード化された定数を含む：１２８，６４，１７１，３２，２０５，１７１，１４６および１２８である。他に、バンク１０２における値は、レジスタに記憶されうる。
【００５７】
デコーダＤＥＣ８  １１０も、ボックスＳｕｂ３の出力を受信し、その出力の一つ、Ｑ０−Ｑ７を、受信された値に基づいて、ＨＩＧＨに設定する（例えば、受信された値が０である場合、Ｑ０がＨＩＧＨに設定され、受信された値が１である場合、Ｑ１がＨＩＧＨに設定される。）
ＳＢｏｘ＿Ｍｕｌｔ１０５は、Ｓ＝７である場合にＣ＝１２８、そうでなければ０である、Ｂ・Ｌ（Ｓ）＋Ｃを計算し、その結果を、そのＱ出力において出力する。それは、乗算器１０４から、そのＡ入力においてＬ（Ｓ）を受信し、Ｂ［８：０］と定められた論理アドレスＡの上から９ビットを、そのＢ入力において受信する。この実施例において、ＣはＳ＝７に関してのみ非ゼロであり、その場合、１がデコーダＤＥＣ８  １１０のＱ６出力から出力され、Ｓｂｏｘ＿Ｍｕｌｔ１０５のＡＤＤ１２８入力に送信される。
【００５８】
エレメント１０６，１０７ならびに１０８、ＰＤＭｕｘ３＿６  １０９、およびＯＲゲート１１１ならびに１１２は、Ｓｂｏｘ＿Ｍｕｌｔ１０５の出力から、ある範囲のビット（すなわち、［ｕｐｐｅｒ：ｌｏｗｅｒ］）を選択する。前記範囲は、デコーダＤＥＣ８  １１０の出力に依存する。エレメント１０６は、ここではＱがＳｂｏｘ＿Ｍｕｌｔ１０５の出力である、ビットＱ［１２：７］を、ＰＤＭｕｘ３＿６  １０９の入力Ａに送る；エレメント１０７は、ビットＱ［１４：９］を、ＰＤＭｕｘ３＿６  １０９の入力Ｂに送る；およびエレメント１０８は、ビットＱ［１５：１０］を、ＰＤＭｕｘ３＿６  １０９の入力Ｃに送る。ＰＤＭｕｘ３＿６  １０９は、３の個別の選択ライン、Ｓ［２：０］を有する、予めでコード化された乗算器であり、そのうちの一つだけがロジック１であり、それは３の対応する入力Ａ，ＢまたはＣの一つを選択し、および出力する。この実施例において、入力Ａ（範囲［１２：７］）は、Ｓ＝１，２、または４である場合に選択され（すなわち、デコーダＤＥＣ８  １１０からＯＲゲート１１１への出力Ｑ０，Ｑ１またはＱ３は、ロジック１である）、入力Ｂ（範囲［１４：９］）は、Ｓ＝３である場合に選択され（すなわち、デコーダＤＥＣ８  １１０からの出力Ｑ２は、ロジック１である）、および入力Ｃ（範囲［１５：１０］）は、Ｓ＝５，６，７または８である場合に選択される（すなわち、デコーダＤＥＣ８  １１０からＯＲゲート１１２への出力Ｑ４，Ｑ５，Ｑ６またはＱ７は、ロジック１である）。乗算器ＰＤＭｕｘ３＿６  １０９の出力は、図１に記載のＳ−Ｂｏｘ２のＱ出力に対応する。
【００５９】
ＳＢｏｘ＿ＢＭＳＱ１１３は、（Ｂ−Ｓ・Ｑ）ｍｏｄ２3を計算する；特に、それはＢ［２：０］、Ｓ［２：０］、および乗算器１０９の出力の３の低いオーダーのビットを、それぞれ、そのＢ［２：０］、Ｓ［２：０］、およびＱ［２：０］入力において受信し、およびその結果をそのＲ出力において出力する。前記計算は、その結果の３の低オーダー・ビットのみを決定するので、前記入力は、それぞれたった３ビットである（すなわち、それはｍｏｄ  ２3である）。
【００６０】
ＳＢｏｘ＿Ｍｕｌｔ１０５の実装は、図１４に記載されている。リコード（recode）８  ２５０は、効率的な乗算を容易にするために、８ビット入力でビットをリコードする。リコード２５０の実装は、図１５に記載されており、４のリコード・ブロック３００を具備する。リコード・ブロック３００の実装は、図１６に記載されている。ＰｒｏｄＭｕｘ＿９  ２５１，２５２，２５３および２５４は、そのＡ入力が、それぞれ０，１，２または３のいずれであるかによって、０，１，２、または−１によって、その９ビットのＢ入力の単純符号の積（simple signed product）を計算し、および入力Ａ＝３である場合にのみ、Ｑ［１０］が１に設定され、Ｑ［１１］は常に１に設定される、１１ビット出力、Ｑを生む。ＰｒｏｄＭｕｘ＿９は、図１７に記載のＰｒｏｄＭｕｘ＿１０に類似した方法で、実装されうる。エレメント２５６，２５７，２５８，２５９および２６０は、バス交換である。エレメント２６１および２６２は、一般的な形式の回路、Ｐａｄ＿Ｎ＿Ｍである；各々は、長さＭの出力を作るために、長さＮのその入力を、それはＭ−Ｎグラウンド（０の）で満たす。Ｐａｄ＿Ｎ＿Ｍの一例、Ｐａｄ＿６＿１０は、図１８に記載されている；それは、１０ビットの出力を生むために、４つの０でその６ビット入力を満たす。図１８に記載のエレメントＧｎｃｘ４  ３４０は、一般的な形式のエレメントＧｎｄｘＮであり、それはＮのグラウンド（０の）を戻す；この場合、Ｇｎｄｘ４  ３４０は４のグラウンドを戻す。Ｕｐ＿１４＿２  ２６３は、一般的な形式の回路、Ｕｐ＿Ｎ＿Ｍである；それは、Ｎビットの入力を受信し、およびＭの０でその末尾を満たし、Ｎ＋Ｍの長さである結果を生む。Ｕｐ＿Ｎ＿Ｍの一例、Ｕｐ＿８＿２は、図１９に記載されている。エレメント２６４，２６５，２６９，２７１および２７２は、一般的形式の回路、Ｉｎｓ＿Ｎ＿Ｍ＿Ｌである；各々は、Ｎの長さの入力を取り、Ｌのグラウンドで末尾を満たし、Ｍ出力に適合するだけ多くの、その入力のビットを上に挿入し、およびＮ＋Ｌ＜Ｍである場合、結果の一番上にグラウンド（０）を加える。Ｉｎｓ＿Ｎ＿Ｍ＿Ｌの一例、Ｉｎｓ＿１４＿２０＿５は、図２０に記載されている。ＣＳＡ＿１６  ２６６，２７０ならびに２７３、およびＣＳＡ＿１４  ２６８は、一般的な形式の回路、ＣＳＡ＿Ｎである；各々は、Ｎの長さのアレイのけた上げ保存（フル）加算器である。ＣＳＡ＿Ｎ回路の例、ＣＳＡ＿１０が図２１に記載されており、連続したＣＳＡ回路の実装は、図２２に記載されている。図２２に記載の通り、ＣＳＡは、その３の入力、Ｘ，Ｙ，Ｚの、合計とけた上げビット、それぞれＳおよびＣを計算する。ＸＯＲ１３５は、
0005089842.tif 000003
が１である場合、合計Ｓを１に設定し、そうでなければ０に設定する（すなわち、Ｘ，ＹあるいはＺの一つが１である場合、またはそれらすべてが１である場合、それはＳを１に設定する）。ＡＮＤゲート１３６およびＯＲゲート１３９は、Ｘ，ＹおよびＺのうち、少なくとも二つが１である場合、けた上げＣを１に設定し、そうでなければ０に設定する。最後に、図１４において、Ａｄｄ１６  ２７４は、一般的な形式の回路、ＡｄｄＮであり、それはＮビット加算器である。ＡｄｄＮ回路の一例である、Ａｄｄ１６は、図２３に記載されている；それは四つのＴｒＡｄｄ４  ２９９回路を含み、それらはＴｒＡｄｄＮ回路の例である。ＴｒＡｄｄＮ  回路は、キャリー・イン（carry-in）（ＣＩ）入力およびキャリー・アウト（carry-out）（ＣＯ）出力を有するＮビットの加算器である。ＴｒＡｄｄＮ回路の一例、ＴｒＡｄｄ４  ２９０は、図２４に記載されている。
【００６１】
Ｓｂｏｘ＿ＢＭＳＱ１１３の実装が、図１３に示されている。ＡＮＤゲート２００，２０１ならびに２０２、Ｕｐ＿２＿１  ２０３ならびにＵｐ＿１＿２  ２０４、ＣＳＡ＿３  ２０５、Ｉｎｓ＿３＿３＿１  ２０６、ならびにＡｄｄ３  ２０７は、Ａｄｄ３  ２０７から出力される、Ｓ・Ｑを計算する。Ｓｕｂ３  ２０８は、Ａｄｄ３  ２０７の出力を取り、それをＢから減じる（ＢはＡtopの低いオーダーの３ビットである）。Ｕｐ＿２＿１  ２０３ならびにＵｐ＿１＿２  ２０４、ＣＳＡ＿３  ２０５、Ｉｎｓ＿３＿３＿１  ２０６およびＡｄｄ３  ２０７の回路は上述されている。Ｓｕｂ３  ２０８は、一般的な形式の回路ＳｕｂＮであり、それはＮビットの入力を減じ、Ｎビット出力を生む。ＳｕｂＮ回路の一例、Ｓｕｂ３  ２０８は、図２５に記載されている。
【００６２】
図２５は、３ビット入力Ｂを３ビット入力Ａから減じ、および３ビットの結果Ｑを出力する回路である。ＮＯＴゲート１３０は、Ｙで示されたＢの補数を出力する。入力Ａは、Ｘで示される。ＣＳＡ１３１，１３２および１３３は、けた上げ保存（フル）加算器であり、その各々は、結果ビットをそのＳ出力において、およびけた上げビットをそのＣ出力において出力する。ＣＳＡ１３１は、結果の低いオーダーのビット、Ｑ［０］を計算し、ＣＳＡ１３２は結果の中位のビット、Ｑ［１］を計算し、およびＣＳＡ１３３は、結果の高いオーダーのビット、Ｑ［２］を計算する。特に、ＣＳＡ１３１は、Ｘ［０］、Ｙ［０］、およびハードワイヤド１（すなわち、ＶＣＣ）を合計し、その結果の最初のビット、Ｑ［０］を、そのＳ出力において出力し、およびそのＣ出力においてはけた上げ値を出力する。ＣＳＡ１３２は、Ｘ［１］、Ｙ［１］およびＣＳＡ１３１から出力されたＣを受信して、合計し、およびその結果の第二のビット、Ｑ［１］を、そのＳ出力において出力し、およびけた上げ値をそのＣ出力において出力する。ＣＳＡ１３３は、Ｘ［２］、Ｙ［２］およびＣＳＡ１３３から出力されたＣを受信し、合計し、およびその結果の第三のビット、Ｑ[２]を、そのＳ出力において出力する。
【００６３】
図１２に記載のＭＵＸ８×８  １０４の実装は、図２６乃至２８に記載されている。図２６に示される通り、乗算器１０４は、８のＭＵＸ８  １５０ユニットのハードウェア・アレイであり、８ビット入力値Ａ−Ｈの各ビットに一つのユニットである。ＭＵＸ８ユニット  １５０は、図２７に記載されており、７のＭＵＸユニット１７０乃至１７６を具備する。各ＭＵＸユニットは、そのＳ入力に基づいて、その入力の一つ、ＡまたはＢを選択し、出力する。ＭＵＸユニット１７０乃至１７３は、Ｓの低いオーダーのビット（すなわち、Ｓ［０］）に基づいて出力を選択する；ＭＵＸユニット１７４乃至１７５は、Ｓ［２］に基づいて、出力を選択する；およびＭＵＸユニット１７６は、Ｓ［３］に基づいて出力を選択する。ＭＵＸユニットの実装は、図２８に記載されており、そのオペレーションは、当業者には容易に明らかであろう。
【００６４】
図１２に記載の定数バンク１０２およびＮ＿１＿３  １１４は、一般的形式のハードワイヤド定数Ｎ＿Ｋ＿Ｍであり、Ｋは、定数の値であり、Ｍは、出力のビット数である。Ｎ＿Ｋ＿Ｍの一例、Ｎ＿１７１＿８は、図２９に記載されている。それは、８ビット・バスで、値１７１（２進法で１０１０１０１１）を出力する。
【００６５】
図１２に記載のエレメント１０６、１０７、および１０８は、一般的な形式のサブ・バス・ジャンクション、Ｂｉｔｓ＿Ｎ＿Ｋ＿Ｌである；前記ジャンクションはＮビット・バス、Ａ［Ｎ−１：０］を取り込み、およびサブ・バスＡ［Ｌ：Ｋ］を出力する。Ｂｉｔｓ＿Ｎ＿Ｋ＿Ｌの一例、Ｂｉｔｓ＿１６＿９＿１４は、図３０に記載されている。それは、１６ビット入力バスのビット９乃至１４を出力する。
【００６６】
図１２に記載のＰＤＭｕｘ３＿６  １０９は、一般的な形式の、予めコード化された乗算器、ＰＤＭｕｘＮ＿Ｍである；そのような乗算器は、Ｎの個別の選択ラインを受け取り、およびＭの幅を有するＮのベクトル・バスの一つを出力する。ＰＤＭｕｘＮ＿Ｍの一例である、ＰＤＭｕｘ３＿１０が、図３１に記載されている。それは、３の１０ビット幅入力、Ａ，Ｂ，Ｃの一つを選択し、その選択された入力を出力する３の選択ラインＳを有する。
【００６７】
デコーダＤＥＣ８  １１０の実装は、図３６に記載されている。ＤＥＣ８  １１０は、その出力Ｑ０−Ｑ７の一つを、その３ビット入力Ａで受信された値に基づいて、ＨＩＧＨに設定する。それはＤＥＣ２Ｅ  ２８１およびＤＥＣ４Ｅ  ２８３ならびに２８５を含んでおり、それらは一般的形式の回路、ＤＥＣＮＥの例である；各々は、ｌｏｇ2Ｎ幅である入力を取り、その可能（enable）入力ＥもＨＩＧＨである場合には、そのＮ出力の一つをＨＩＧＨに設定する。ＤＥＣＮＥの一例、ＤＥＣ２Ｅは、図３７に記載されている。
【００６８】
図３２は、Ｍ−Ｂｏｘ１４のハードウェア実装を示す。それは、８ビット値ΛをそのＡ入力において、およびアドレスＡの低い１０ビット（すなわち、Ａ[９：０]、またはＡBot）をそのＢ入力において受信し、ＡBot・Λｍｏｄ２10を計算し、および１０ビットの結果を出力する。ＣＰＭ＿１０  ３０１、ＣＰＭ＿８  ３０２、ＣＰＭ＿６  ３０３およびＣＰＭ＿４  ３０４を除いて、図３２のすべてのコンポーネントは上述されており、その各々は、ＣＰＭ＿Ｎの形式の切断された積乗算器（product multiplexer）である。ＣＰＭ＿Ｎ乗算器は、入力Ａ［２：０］からの、どの選択ラインがロジック１であるかによって、Ｎビット入力、Ｂ［Ｎ−１：０］を受信し、Ｂ［Ｎ−１：０］（すなわち、１・Ｂ）、左に移動した１ビット、Ｂ［Ｎ−１：０］（すなわち、２・Ｂ）、またはＢ［Ｎ−１：０］の補数（すなわち、−１・Ｂ）を出力する。ＣＰＭ＿Ｎの一例、ＣＰＭ＿１０  ３０１が図３３に記載されている。この例において、入力は１０ビット幅である。
【００６９】
図３４は、Ｎ−Ｂｏｘ１６のハードウェア実装を示す。それはＭ−Ｂｏｘ１４の出力をそのＤ入力で受信し、Ｓ−Ｂｏｘ１２のＱ出力をそのＱ入力において受信し、およびバンク数、ＮをそのＮ入力で受信する。Ｄ、ＱおよびＮ入力は、それぞれＮｂｏｘ＿Ｍｕｌｔ３５０のＢ，ＣおよびＡ入力に送信され、それは、Ｄ・Ｎ＋Ｑを計算し、１６ビットの結果を出力する。欠損バンクが無い時、Ｎ＝６４の場合に関する特別な規定もある。
【００７０】
Ｎｂｏｘ＿Ｍｕｌｔ３５０のハードウェア実装が、図３５に記載されている。図３５に記載のすべてのコンポーネントは、上述されている。
【００７１】
好ましいハードウェア実装は、１サイクル・オペレーションを有し、それは従来のシステムに典型的である。メモリ・サブ・システムが、例えば、前の要求が応えられている間に、新しい未処理の要求を準備することによって、ウェイト（wait）状態に耐えることができるシステムにおいて、“Ｓ−，Ｍ−，Ｎ−Ｂｏｘｅｓ”のパイプライン・オペレーションは有利である――それは、中間結果を保持するために、いくつかの短いレジスタを追加する犠牲の上に、顕著に短いサイクル時間を可能にする。他の可能性は、上述のＳ−，Ｍ−，Ｎ−Ｂｏｘにおけるすべての短い乗算の、非同期実装を用いることである。メモリ・アレイへの非同期アクセスに関して、このアプローチは、セットアップ／ホールド制約を排除し、ほとんどのデータ・パターンに対して最速の時間を供給する。非同期乗算器アレイの実装によって、このアプローチは、データ依存タイミングという結果を生みうる。
【００７２】
Ｄ．他の実施例
準結晶マッピングを作るための手段としてのモジュラー乗算に基づいて、アドレス変換の本システムの様々な実装の幅広い選択がある。それらは、実装の複雑性において、および異なる数のバンクならびに異なる明示的パターンのメモリ・アクセスに関する性能において、変化する。これらの中で、好ましい実施例は、任意の数のバンクに対する最小の複雑性のハードウェア実装を有する。
【００７３】
バンク番号ｕおよびローカル・アドレスｌａを、スクランブルされたアドレスＡ（Ａ＝Λａ  ｍｏｄ  ２K）から引き出すための、低複雑性技術は、１バンクあたりのサブ・バンクの数Ｓが１である（Ｓ＝１）場合に、Ｎがバンクの数である、ｕ＝（Ａ・Ｎ）／２Kおよびｌａ＝Ａ−ｕ・２K／Ｎを設定することである。ここでＮは、短い定数（short constant）であり、２K／Ｎは固定数Ｎに対する（長い）定数である。このように、標準のスクランブルに加えて、このアプローチは、短い（例えば、６ビット）数によるたった２つの乗算と、および加算／減算を必要とする。さらに、様々なモジュラー乗算（スクランブルおよび変換）は、処理全体の速度を上げるために、一つのブロックに併合されることができ、その結果、潜在的に時間Ｔ  ｎｓ．で完了することができる処理を生む。
【００７４】
図１１は、本発明に従った変換ユニットの他の実施例を示す。ここで、上述の通り、バンクの数、Ｎは、６４を超えない。前の実施例の通り、変換ユニットは、アドレスＡを受信し、対応するバンク番号およびローカル・アドレスを生成する。ステップ５１において、Ａ＿ＴｏｐはＡ［１８：１３］に設定され、Ａ＿ＭｉｄはＡ［１２：７］に設定され、およびＡ＿ＢｏｔはＡ［６：０］に設定される。ステップ５２において、Ａ＿ＳはＡ＿Ｔｏｐ・２7＋Ａ＿Ｂｏｔに設定される。ステップ５１および５２は、バンク番号を決定するための目的で、Ａから１２ビットを選択する。これらのステップで特定されたもの以外のビットも使用されてもよい。ステップ５３において、Ｍｉｄｄｌｅ＿Ｂｉｔｓは、（Ａ＿Ｓ・Λ）［１８：１３］に設定される。ステップ５４において、Ｍｉｄｄｌｅ＿Ｂｉｔｓは、非欠損バンク・テーブル、または類似の変換メカニズムを介して、バンク番号にマッピングされる。最後に、ステップ５５において、ローカル・アドレス、Ａ＿Ｌｏｃａｌは、Ａ＿Ｍｉｄ・２7＋Ａ＿Ｓ［Ｅ：Ｓ］に設定され、［Ｅ：Ｓ］は：奇数ＮおよびＮ＝６４に関して、［６：０］である；および偶数ＮであるがＮ＝６４でない場合、［Ｎ２＋６：Ｎ２］であり、Ｎ＝Ｎ＿Ｏｄｄ*２N2である（すなわち、Ｎ＿Ｏｄｄは、Ｎの奇数素数であり、Ｎ２は、Ｎを割る２の最大の累乗である）。本発明に従った、および様々な明示的メモリパターンのアクセスに関するバンク・コンフリクトの最小化のために、準結晶マッピングを作成するためのモジュラー乗算を用いた、さらなる実施例がある。さらにそのような実施例において、Ａは最初に１９ビット定数ＬＬを乗じられ、積Ａ・ＬＬのビット［３６：１８］を見る。そのような実施例の異なる例において、以下のモジュラー乗算（変換）方法が使用される：
Ａ→Ａ・４１６１＋１２７
積ビット［１７：１４］および［１９：１８］は、有効バンク番号を供給する一方で、前記積のより高いビットはローカル・アドレスを供給する。
【００７５】
すぐ上に示された実施例は、より多くのゲートを使い、潜在的に、図１乃至４に記載の実施例より遅い。いくつかのケース（例えば、Ｎ＝６１）において、それらは固定ストライド・アクセスに関してより良い一方で、他（例えば、Ｎ＝６３）に関しては、それらはやや悪い。
【００７６】
当業者は、加算器（例えば、有限あるいは無限フィールドに対する多項式乗算の実装等）、テーブル・ルックアップ、およびモジュラー乗算への変形、またはモジュラー乗算よりも、アナログ・ソリューションを含む様々な組合せ回路が、マルチ・バンク・メモリのアクセスの明示的パターン（固定ストライドのパターンおよび／または多次元テーブルにおけるアクセスの線形パターンを含むが、それらに制限されない）におけるメモリ・バンク・コンフリクトを最小にする同じ効果を有する、アドレス変換ユニットにおける使用のための、有限準結晶マッピングを構築するために使用されることができることを理解するであろう。
【００７７】
Ｅ．耐故障性オペレーション
上述のリマッピング（remapping）およびスクランブル・システムによって、メモリ・システム全体の耐故障性オペレーションおよびマルチ・プロセッサならびにチップ上のマルチ・バンク・システムの耐故障性オペレーションを可能にする。
【００７８】
あらゆる耐故障性オペレーションに前もって必要なのは、個別のメモリ・バンクまたはモジュール、および／またはこれらのバンクまたはモジュール（ユニット）を制御する処理装置の故障を決定するメモリ・テストである。このテストは、メモリおよび／またはプロセッサの使用のあらゆる段階−コンポーネントを作った後の初期テスト、またはコンポーネントの寿命およびオペレーションの間にいつでも、起こりうる。このテストは、一つの直列または並列スキャン・パスまたは複数のパス、ＢＩＳＴ（built-in-self-test）、または包括的なテストのためのテスト・パターンを作る特別なオン・チップ回路等、様々な最新のアプローチを用いて、外部的（例えば、外部メモリ・バスを通してメモリ・アクセスを動かす手段によって）または内部的になりうる。
【００７９】
一度テストが実行され、欠損したエレメント−メモリ・ブロック、バンク、または処理装置−が見つかると、効率的に、リマッピング回路によって使用されるように、欠損情報は記憶されなければならない。この情報を記憶するための、多くの自然な方法がある。第一に、テストが製造時に実行される場合には、欠損情報はチップにハードワイヤされることができるが、さらなる変更は、一般的には可能ではないであろう。第二に、それは、テストの後、チップの特殊なＲＡＭ領域、または複数のＲＡＭ領域へと書き込まれ、またはダウンロードされうる。これは、悪いエレメントの番号の別個の記憶を必要とする。前記記憶は、ＰＲＯＭまたは他のマシン読み取り可能形式（バーコード、磁気コード、システム記憶装置等）において、外部的に実行されうる。第三に、チップの特殊な非揮発性領域は、そのような記憶に専用であり、さらなるテストの後にアクセスされ、またはリプログラムされうる。第四に、多くの場合において、テストとリプログラミングの両方が、例えば、ブート・プロシージャに続いて、ソフトウェアがメモリをテストし、および悪いエレメントのリストを、チップのＲＡＭ（またはレジスタ）領域にダウンロードする時、全体がソフトウェアで実行されうる。非欠損バンク・テーブル６は、図１および２との関係で上述された通り、第三および第四の技術に特に適している。当業者は、欠損情報を記憶するための他の技術も使用されてよく、本発明は、上述された特定の技術に制限されないことを理解するであろう。
【００８０】
欠損エレメントの情報（例えば、メモリ・バンク、装置、または処理装置）は、多くの形式を取りうる。例えば、たったいくつかの欠損エレメントが予期される場合、欠損エレメント番号が記憶され、リマッピングは、確実に、これらのエレメント番号が使用されないようにする。欠損エレメントの数が大きいかもしれない場合、良い（非欠損）エレメントのリストを記憶する単純なＲＡＭが使用されうる。この実装の典型的な場合として、あらゆる数のバンクが、欠損であるというラベルを付けられ、Ｎのみが良い（非欠損である）場合における、６４メモリ・バンク（ユニット）システムを検討する。図１における非欠損バンク・テーブル６は、そのようなＲＡＭの一例である。上述の通り、それは各有効６ビットバンク番号Ｂａｎｋ（１＜Ｂａｎｋ＜Ｎ）に関して、チップ上に、Ｎの非欠損バンクの一つの実際の番号を記憶する、６４×６ＲＡＭ（またはＲＯＭ）アレイを具備する。このアレイは、非欠損メモリ・バンクの（２進法の）値を、“Ｂａｎｋ”バスの出力において供給する。
【００８１】
他に、欠損または非欠損バンクのリストは、欠損情報を記憶するために必要なビットの数を顕著に減らす、ＲＡＭアレイに関する様々な圧縮技術を用いて、圧縮されうる。例えば、前記数は６４×６ビット（すなわち、ほとんどすべてのバンクが欠損している場合に、圧縮なしで必要とされる最大数のビット）から、最大でＷ×６ビットに減らされることができ、Ｗは、欠損または非欠損バンクの最小の数である。しかし、この圧縮は、（およそＯ（Ｗ）ゲートの）追加の圧縮解除回路、およびバンク番号を変換するための追加の時間遅延の犠牲の上にある。小さいＲＡＭ（ＲＯＭ）ブロックが、チップ上で有効に使用されない場合、および記憶アレイが、レジスタを用いる代わりに実装される場合にのみ、それは有用であろう。
【００８２】
他のパラメータの値も、耐故障性オペレーションを供給するために調整される必要があり、例えば、ＮおよびＳの値、すなわち、それぞれメモリバンクおよびサブ・バンク（ユニット）の数、定数Ｌおよび乗数ΛまたはＬＬである。Ｎ，Ｓ，Ｌおよび／またはΛの値は、非欠損ユニットのリストとともに、記憶され、またはダウンロードされることができる。それらは、バッファされた出力信号とともに、高速レジスタに保持され、または直接ハードワイヤされる（テストおよび変更が、製造時に実行される場合）。定数Ｌ，Λ、またはＬＬの値はダウンロードされることができ、またはＬ，Λ、あるいはＬＬに関する固定値は、単純にハードワイヤされることができる。Ｌ，Λ，またはＬＬをハードワイヤすることによって、多数のブロック（５０％以上）が欠損である場合に性能が下がるが、図３に記載のＳ−Ｂｏｘ１２ならびにＭ−Ｂｏｘ１４におけるゲートの数も顕著に減らす。
【００８３】
欠損または非欠損エレメントのリストが記憶される一つの場所、または複数の場所は、チップに配置されたメモリ・システムの種類に依存する。図７に記載のとおり、すべてのメモリ・エレメントに関する単一のメモリ・バスを伴う単一のメモリ・モジュールを表すチップにおいて、または図８に記載の通り、スイッチ可能なバスを伴う単一のメモリ・モジュールにおいて、前記リスト（非欠損バンク・テーブルおよびアドレス変換パラメータ値）を記憶するための単一の場所、およびリマッピングならびにスクランブル回路のための単一の場所、すなわちメモリ領域２および変換ユニット１がある。（図７に記載の非欠損バンクは、６０というラベルが付けられており、欠損バンクは、６１というラベルが付けられている。）
【００８４】
しかしながら、チップ上システムにおいて、図９および１０に記載の通り、複数のメモリ・ユニットおよびバンクにアクセスする、可能な複数の処理装置があり、欠損または非欠損ユニットのリストは、個別の処理装置（またはそのクラスタ）を伴う分散方法で記憶される。従って、リマッピングおよびスクランブル回路は、個別の処理装置（またはそれらのクラスタ）とともに配置される。これは、リマッピングおよびスクランブル回路の最小ゲート実装に対する必要性を大いに増し、および図１乃至６に記載の実装を、好ましいものにする。図９は、ユニット７０を含むマルチプロセッサおよびメモリ・システムを示す。図１０は、個別のユニット７０のメモリ関連部分を示す。変換ユニット８１およびメモリ領域８２は、ローカル・メモリ・ユニット（サブ・バンク）Ｂ１乃至Ｂ８  ８３へのアクセスを制御する。スイッチ８０は、ローカルならびにグローバル・アドレス、およびコントロール・ビット、および個別のユニット（７０）の中への、および中からのメモリ・データのルーティング情報を、チップ上の完全なシステムの通信スイッチから、および前記通信スイッチへ送る。
【００８５】
提案されたリマッピング回路（またはそのソフトウエア実装）の目的は、個別のメモリまたは処理コンポーネントの多数の故障が、システム性能を下げることなく耐えられなければならない、多くのメモリおよび処理エレメントを伴う大きなシステムの耐故障性オペレーションに備えることである。唯一の低下は、利用可能な記憶場所（またはプロセッサ性能）における適切な減少である。アドレス変換およびスクランブル・ユニットは、同じ質のメモリ・アクセスおよび利用可能な（非欠損）メモリ・システムへの高い帯域幅を保証する。
【００８６】
他に、固定された数のメモリ・バンクおよび／または処理装置が、チップ上に存在する必要がある場合、提案される耐故障性ソリューションは、特定の数の追加（いわゆるスペアまたはリザーブ）メモリ・バンクおよび／または処理装置が、チップに加えられるように備える。そのようなスペア・バンクまたはユニットの数は、歩留まりおよびプロセス・ファクタによって決定され、可変的でありうる。さらに、システムは、メモリ・バンクの一部が他の理由によって無視されるように構成されてもよい。ここに開示されたシステムは、そのような可変性に備える。スペア・バンクまたはユニットを伴う他のアプローチは、ユーザから、不可避な欠損の存在およびチップ上の不良コンポーネントを有効に隠す。さらに、故障が容認されない、ミッション・クリティカルなアプリケーションにおいて、同一のタスクで稼動する、例えば３のプロセッサ／メモリ・ユニットを比較することによって、チップの内部稼動の検査を継続的に実行させることができる。これは、個別のコンポーネントの動的なライブ検査（live verification）に備え、それらが、チップ・オペレーションの介入なく、オフラインで、ライブの状態で取られるようにする。スペア・コンセプトと結合して、これは、チップの寿命およびオペレーション中の故障に備え、低下することなくチップが動作し続けるようにすることができる。
【００８７】
上述の実施例に対する多くの変形が可能であり、それは当業者には容易に明らかであり、本発明は、前記実施例に制限されない。例えば、上述の実施例に記載の回路は、特定のハードウェアのために容易に変更され、および最適化されることができ、およびより多くの、またはより少ない回路ならびにコンポーネントを具備してもよい。さらに、オン・チップ回路および離散コンポーネントの組合せの形式におけるハードウェア実装に加え、本発明は、物理的メモリへの仮想アドレス・アクセスをリマップし、またはプログラムに利用可能な様々なメモリ・アレイへのアクセスを再編成するソフトウェアに実装されてもよい。さらに、本発明の特定の実施例は、１９ビット（ワードまたはキャッシュ・ライン）アドレス空間および特定の最大数のバンクならびにサブ・バンクとの関係で説明されてきたが、本発明は、より大きい、あるいはより小さいアドレス空間、およびより大きい、あるいはより小さい可変的な数のバンクならびにサブ・バンクならびに処理装置に、容易に適用されうる。
【図面の簡単な説明】
【図１】  本発明のメモリアドレスシステムのある実施形態のブロック線図である。
【図２】  本発明のある実施形態のメモリ部のブロック線図である。
【図３】  本発明のある実施形態の翻訳ユニットのブロック線図である。
【図４】  Ｓボックスのオペレーションを示すフローチャートである。
【図５】  Ｍボックスのオペレーションを示すフローチャートである。
【図６】  Ｎボックスのオペレーションを示すフローチャートである。
【図７】  単メモリアレイに接続された、本発明のある実施形態を示す。
【図８】  スイッチ可能なバスアーキテクチャ内の単メモリアレイに接続された、本発明のある実施形態を示す。
【図９】  マルチプロセッサとメモリのシステムを示す。
【図１０】  マルチプロセッサとメモリのシステム内のローカルメモリユニットに接続された、本発明のある実施形態を示す。
【図１１】  本発明の他の実施形態を示すフローチャートである。
【図１２】  本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図１３】  本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図１４】  本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図１５】  本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図１６】  本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図１７】  本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図１８】  本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図１９】  本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図２０】  本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図２１】  本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図２２】  本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図２３】  本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図２４】  本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図２５】  本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図２６】  本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図２７】  本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図２８】  本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図２９】  本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図３０】  本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図３１】  本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図３２】  本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図３３】  本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図３４】  本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図３５】  本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図３６】  本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図３７】  本発明のある実施形態の、ハードウェア実装の階層的構成図である。
【図１】
0005089842.tif 000004
【図２】
0005089842.tif 000005
【図３】
0005089842.tif 000006
【図４】
0005089842.tif 000007
【図５】
0005089842.tif 000008
【図６】
0005089842.tif 000009
【図７】
0005089842.tif 000010
【図８】
0005089842.tif 000011
【図９】
0005089842.tif 000012
【図１０】
0005089842.tif 000013
【図１１】
0005089842.tif 000014
【図１２Ａ】
0005089842.tif 000015
【図１２Ｂ】
0005089842.tif 000016
【図１３】
0005089842.tif 000017
【図１４Ａ】
0005089842.tif 000018
【図１４Ｂ】
0005089842.tif 000019
【図１５】
0005089842.tif 000020
【図１６】
0005089842.tif 000021
【図１７】
0005089842.tif 000022
【図１８】
0005089842.tif 000023
【図１９】
0005089842.tif 000024
【図２０】
0005089842.tif 000025
【図２１】
0005089842.tif 000026
【図２２】
0005089842.tif 000027
【図２３】
0005089842.tif 000028
【図２４】
0005089842.tif 000029
【図２５】
0005089842.tif 000030
【図２６】
0005089842.tif 000031
【図２７】
0005089842.tif 000032
【図２８】
0005089842.tif 000033
【図２９】
0005089842.tif 000034
【図３０】
0005089842.tif 000035
【図３１】
0005089842.tif 000036
【図３２Ａ】
0005089842.tif 000037
【図３２Ｂ】
0005089842.tif 000038
【図３３】
0005089842.tif 000039
【図３４】
0005089842.tif 000040
【図３５Ａ】
0005089842.tif 000041
【図３５Ｂ】
0005089842.tif 000042
【図３６】
0005089842.tif 000043
【図３７】
0005089842.tif 000044