(57)【要約】【課題】複数のＳＲＡＭ状態要素およびＳＲＡＭ環境回路を含むスタティックランダムアクセスメモリ（ＳＲＡＭ）を提供する。【解決手段】ＳＲＡＭ環境回路は、外部非同期回路とインタフェースし、少なくとも１つの仮定が満たされるときに耐遅延でＳＲＡＭ状態要素に読み出しおよび書き込みを可能にするよう動作可能である。【選択図】図６
2007531957.tif 000002
【特許請求の範囲】
【請求項１】
複数のＳＲＡＭ状態要素およびＳＲＡＭ環境回路を備えるスタティックランダムアクセスメモリ（ＳＲＡＭ）であって、前記ＳＲＡＭ環境回路は、外部非同期回路とインタフェースし、前記ＳＲＡＭ環境回路に含まれるビットラインに関する少なくとも１つのタイミングの仮定が満たされる場合に耐遅延でＳＲＡＭ状態要素の読み出しおよび書き込みを可能にするよう動作可能であり、前記少なくとも１つのタイミングの仮定は、前記ビットライン上のライト信号に応答してＳＲＡＭ状態要素をラッチすることを仮定することを含むＳＲＡＭ。
【請求項２】
請求項１に記載のＳＲＡＭであって、前記少なくとも１つのタイミングの仮定は、前のメモリアクセス動作の完了を表すイネーブル信号に応答して前記ビットラインを充分にプリチャージすることを仮定することをさらに含むＳＲＡＭ。
【請求項３】
請求項１に記載のＳＲＡＭであって、前記少なくとも１つのタイミングの仮定は、単一のタイミングの仮定を含むＳＲＡＭ。
【請求項４】
請求項１に記載のＳＲＡＭであって、前記ＳＲＡＭ状態要素は、従来の６トランジスタ（６Ｔ）ＳＲＡＭ状態要素を備えるＳＲＡＭ。
【請求項５】
請求項１に記載のＳＲＡＭであって、前記ＳＲＡＭ状態要素は、従来の１０トランジスタ（１０Ｔ）ＳＲＡＭ状態要素を備えるＳＲＡＭ。
【請求項６】
請求項１に記載のＳＲＡＭであって、前記ＳＲＡＭ環境回路は、リード回路、ライト回路およびアドレス発生回路を備えるＳＲＡＭ。
【請求項７】
請求項６に記載のＳＲＡＭであって、前記アドレス発生回路は、非同期アドレスチャネルから耐遅延アドレスを発生するよう動作可能であるＳＲＡＭ。
【請求項８】
請求項７に記載のＳＲＡＭであって、前記アドレス発生回路は、アドレス値の完全なデコードを示すアドレス発生完了信号を発生するよう動作可能であるＳＲＡＭ。
【請求項９】
請求項８に記載のＳＲＡＭであって、前記アドレス発生回路は、前記リード回路および前記ライト回路からの少なくとも１つの完了信号に応答してプリチャージされるよう動作可能であるＳＲＡＭ。
【請求項１０】
請求項６に記載のＳＲＡＭであって、前記ＳＲＡＭ環境回路は、追加のタイミングの仮定が満たされる場合に前記耐遅延で前記ＳＲＡＭ状態要素の読み出しおよび書き込みを可能にするよう動作可能であり、前記追加のタイミングの仮定は、前記アドレス発生回路がアドレス値をデコードしていることであるＳＲＡＭ。
【請求項１１】
請求項６に記載のＳＲＡＭであって、前記リード回路は、リード命令および前のメモリアクセス動作の完了を表すイネーブル信号に応答して、前記ＳＲＡＭ状態要素から前記外部非同期回路へリードチャネルを介してデータトークンの転送を促進するよう動作可能であるＳＲＡＭ。
【請求項１２】
請求項１１に記載のＳＲＡＭであって、前記リードチャネルは、イベントドリブンプロトコルによって特徴付けられる非同期チャネルであり、前記リード回路は、前記イベントドリブンプロトコルに従って前記データトークンの前記リードチャネルへの転送を促進するよう動作可能であるＳＲＡＭ。
【請求項１３】
請求項１２に記載のＳＲＡＭであって、前記リードチャネルは、ワンホットデータエンコーディングスキームによってさらに特徴付けられ、前記リード回路は、前記ワンホットデータエンコーディングスキームに従って前記データトークンの転送を促進するようさらに動作可能であるＳＲＡＭ。
【請求項１４】
請求項６に記載のＳＲＡＭであって、前記ライト回路は、ライト命令および前のメモリアクセス動作の完了を表すイネーブル信号に応答して、前記ＳＲＡＭ状態要素へ前記外部非同期回路からライトチャネルを介してデータトークンの転送を促進するよう動作可能であるＳＲＡＭ。
【請求項１５】
請求項１４に記載のＳＲＡＭであって、前記ライトチャネルは、イベントドリブンプロトコルによって特徴付けられる非同期チャネルであり、前記ライト回路は、前記イベントドリブンプロトコルに従って前記データトークンの前記ライトチャネルからの転送を促進するよう動作可能であるＳＲＡＭ。
【請求項１６】
請求項１に記載のＳＲＡＭであって、前記外部非同期回路は、イベントドリブンプロトコルによって特徴付けられ、前記外部非同期回路中の第１送り側および第１受け側間の前記イベントドリブンプロトコルは、
前記第１受け側からのイネーブル信号がハイになるとき、前記第１送り側が、データ信号を有効にセットし、
前記有効なデータ信号を受け取ると、前記第１受け側は、前記イネーブル信号をロウにし、
前記ロウイネーブル信号を受け取ると、前記第１送り側は、前記データ信号を中間状態にセットし、および
前記中間状態データ信号を受け取ると、前記第１受け側は、前記イネーブル信号をハイにする
ＳＲＡＭ。
【請求項１７】
請求項１６に記載のＳＲＡＭであって、前記イベントドリブンプロトコルは耐遅延であるＳＲＡＭ。
【請求項１８】
請求項１に記載のＳＲＡＭであって、前記ＳＲＡＭ状態要素は、前記ＳＲＡＭ状態要素上の容量性負荷を減らすために複数のセットで構成されるＳＲＡＭ。
【請求項１９】
請求項１に記載のＳＲＡＭであって、前記ＳＲＡＭ状態要素および前記ＳＲＡＭ環境回路は、複数のＳＲＡＭバンクに組織付けられ、前記外部非同期回路は、ライトチャネルおよびリードチャネルを備え、前記ＳＲＡＭは、前記ライトチャネルから前記ＳＲＡＭバンクのいずれかへのライトデータトークンの転送を可能にするスプリット回路、および前記ＳＲＡＭバンクから前記リードチャネルへのリードデータトークンの転送を可能にするマージ回路をさらに備えるＳＲＡＭ。
【請求項２０】
請求項１９に記載のＳＲＡＭであって、前記外部非同期回路は、複数のライトチャネルを備え、前記スプリット回路は、前記ライトデータトークンを前記複数のライトチャネルのいずれかから前記ＳＲＡＭバンクのいずれかへルーティング制御情報に従ってルーティングするよう動作可能であるクロスバーを備えるＳＲＡＭ。
【請求項２１】
請求項２０に記載のＳＲＡＭであって、ライトチャネルおよびＳＲＡＭバンクのそれぞれの組み合わせは、複数のリンクのうちの１つを備え、前記クロスバーは、前記ライトデータトークンを前記リンクのそれぞれ上で確定的にルーティングし、それによって前記ルーティング制御情報によって示される部分的順序を維持するよう動作可能であり、異なるリンク上のイベントは相関がないＳＲＡＭ。
【請求項２２】
請求項２０に記載のＳＲＡＭであって、前記複数のＳＲＡＭバンクは、４つのＳＲＡＭバンクを備え、前記複数のライトチャネルは、２つのライトチャネルを備え、前記クロスバーは、２×４クロスバーを備えるＳＲＡＭ。
【請求項２３】
請求項１９に記載のＳＲＡＭであって、前記外部非同期回路は、複数のリードチャネルを備え、前記マージ回路は、前記リードデータトークンを前記ＳＲＡＭバンクのいずれかから前記複数のリードチャネルのいずれかへルーティング制御情報に従ってルーティングするよう動作可能であるＳＲＡＭ。
【請求項２４】
請求項２３に記載のＳＲＡＭであって、ＳＲＡＭバンクおよびリードチャネルのそれぞれの組み合わせは、複数のリンクのうちの１つを備え、前記クロスバーは、前記リードデータトークンを前記リンクのそれぞれ上で確定的にルーティングし、それによって前記ルーティング制御情報によって示される部分的順序を維持するよう動作可能であり、異なるリンク上のイベントは相関がないＳＲＡＭ。
【請求項２５】
請求項２３に記載のＳＲＡＭであって、前記複数のＳＲＡＭバンクは、４つのＳＲＡＭバンクを備え、前記複数のリードチャネルは、２つのリードチャネルを備え、前記クロスバーは、４×２クロスバーを備えるＳＲＡＭ。
【請求項２６】
請求項１に記載の前記ＳＲＡＭを備える集積回路。
【請求項２７】
請求項２６に記載の集積回路であって、前記集積回路は、ＣＭＯＳ集積回路、ＧａＡｓ集積回路、およびＳｉＧｅ集積回路のいずれかを備える集積回路。
【請求項２８】
請求項２７に記載の集積回路であって、前記集積回路は、プロセッサ、Ｉ／Ｏコントローラ、およびスイッチのうちの少なくとも１つを備える集積回路。
【請求項２９】
請求項１に記載の前記ＳＲＡＭの表現をその中に記憶するデータ構造を有する少なくとも１つのコンピュータで読み取り可能な媒体。
【請求項３０】
請求項２９に記載の前記少なくとも１つのコンピュータで読み取り可能な媒体であって、前記データ構造は、前記ＳＲＡＭのシミュレーション可能な表現を備えるコンピュータで読み取り可能な媒体。
【請求項３１】
請求項３０に記載の前記少なくとも１つのコンピュータで読み取り可能な媒体であって、前記シミュレーション可能な表現はネットリストを備えるコンピュータで読み取り可能な媒体。
【請求項３２】
請求項２９に記載の前記少なくとも１つのコンピュータで読み取り可能な媒体であって、前記データ構造は、前記ＳＲＡＭのコード記述を備えるコンピュータで読み取り可能な媒体。
【請求項３３】
請求項３２に記載の前記少なくとも１つのコンピュータで読み取り可能な媒体であって、前記コード記述は、ハードウェア記述言語に対応するコンピュータで読み取り可能な媒体。
【請求項３４】
請求項１に記載の前記ＳＲＡＭの少なくとも一部を表す半導体処理マスクのセット。
【請求項３５】
請求項１に記載のＳＲＡＭであって、前記ＳＲＡＭ環境回路は、前記ＳＲＡＭ状態要素からリードデータを受け取るよう動作可能であるリードチャネル、前記ＳＲＡＭ状態要素へライトデータを送るよう動作可能であるライトチャネル、およびアドレスおよびリード命令およびライト命令の少なくとも１つを備える命令データを受け取るよう動作可能である命令チャネルを備え、前記命令チャネルは、前記命令データをサイクル毎に受け取り、前記リードチャネルは、前記命令データがリード命令を備えるときだけ前記リードデータを受け取り、前記ライトチャネルは、前記命令データがライト命令を備えるときだけ前記ライトデータを送るように動作可能であるＳＲＡＭ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、非同期ディジタル回路設計に関し、特に非同期スタティックランダムアクセスメモリに関する。
【背景技術】
【０００２】
同時に高速に、かつより複雑なディジタル回路、例えばマイクロプロセッサへのますます増加する要求は、従来のディジタル回路設計手法をその限界まで押しやっている。高クロックレート（すなわち１００ＭＨｚより高い）および設計の複雑さ（例えば１０００万以上のトランジスタを持つ超大規模集積（ＶＬＳＩ）デバイス）の組み合わせのために、信号伝搬遅延は、設計を考慮するときに支配的になった。もしディジタル回路設計が今までのようにムーアの法則に従い続けようとするなら、設計パラダイムの大転換が必要であることはまちがいない。
【０００３】
非同期ＶＬＳＩは、ディジタル回路設計において研究および開発が盛んなエリアである。これは、グローバルクロック同期信号が存在しないディジタル回路設計の全ての形態をいう。遅延非敏感な非同期設計は、そのもともとの性質から、従来の設計パラダイムの発展の唯一最大の障害となってきた信号伝搬遅延に鈍感である。すなわち、遅延非敏感回路設計は、ディジタル回路の任意の遷移が無限の遅延を持った場合の特性を維持し、その回路はそれでも正確に振る舞う。回路は、シーケンスを守るが、絶対的なタイミングは必要ではない。この設計スタイルは、タイミング推定、グリッチ、または競合条件から生じる設計および検証の困難さを回避する。
【０００４】
一般に言って、同期設計スタイルは、深刻なパフォーマンス限界に直面している。ある非同期設計手法はまた、同様の限界、例えば競合条件で困難にぶつかっている。対照的に、非同期ディジタル設計の遅延非敏感な分野は、これら限界に対するその相対的な耐性のために、ディジタル回路のパフォーマンスにおける将来の発展を支持する大きな約束をされているようである。
【０００５】
遅延非敏感非同期ディジタル設計に関する背景情報については、以下の論文を参照されたい。A.J. Martin, "Compiling Communicating Processes into Delay-Insensitive Circuits," Distributed Computing, Vol.1, No.  4, pp.  226-234, 1986; U.V. Cummings, A.M. Lines, A.J. Martin, "An Asynchronous Pipelined Lattice Structure Filter." Advanced Research in Asynchronous Circuits and Systems, IEEE Computer Society Press, 1994; A.J. Martin, A.M. Lines, et al, "The Design of an Asynchronous MIPS R3000 Microprocessor." Proceedings of the 17th Conference on Advanced Research in VLSI, IEEE Computer Society Press, 1997;およびA.M. Lines, "Pipelined Asynchronous Circuits." Caltech Computer Science Technical Report CS-TR-95-21, Caltech, 1995、これらそれぞれは、その全体が全ての目的のためにここで参照によって援用される。
【０００６】
また１９９８年５月１２日発行の米国特許第５，７５２，０７０号「Asynchronous Processsors」、および２０００年３月１４日発行の米国特許第６，０３８，６５６号、「Pipelined Completion for Asynchronous Communication」を参照されたい。これらのそれぞれはその全体が全ての目的のためにここで参照によって援用される。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
もし非同期ディジタル設計手法が、ディジタル回路およびシステムのパフォーマンスが歴史的な法則に則って改善され続けていくことを可能にするディジタル設計手法になるのであれば、対応する同期型回路やシステムのパフォーマンスに匹敵し凌駕するような回路およびシステムの基本構成単位が提供されなければならない。そのような基本構成単位は、スタティックランダムアクセスメモリ（ＳＲＡＭ）である。
【０００８】
そのようなＳＲＡＭが典型的に構成される従来の同期回路はよく知られている。しかし、ＳＲＡＭ状態要素のサイズが減少するにつれ、従来のＳＲＡＭ設計は、遅延のバラツキに対して高くなった感度について、より困難になっている。一方、ある種の非同期設計のスタイルを特徴付ける遅延への感度の低さは、このような問題に対応する機会を提供する。
【０００９】
したがって従来のＳＲＡＭ状態要素がうまく採用されえる非同期環境を提供することが望ましい。
【課題を解決するための手段】
【００１０】
本発明によれば、遅延のバラツキについてかなりロバストなＳＲＡＭを可能にするために、従来および他のタイプのＳＲＡＭ状態要素と共に用いられるさまざまな非同期回路トポロジーが提供される。
【００１１】
さまざまな実施形態によれば、複数のＳＲＡＭ状態要素およびＳＲＡＭ環境回路を備えるスタティックランダムアクセスメモリ（ＳＲＡＭ）が提供される。前記ＳＲＡＭ環境回路は、外部非同期回路とインタフェースし、前記ＳＲＡＭ環境回路に含まれるビットラインに関する少なくとも１つのタイミングの仮定が満たされる場合に耐遅延でＳＲＡＭ状態要素の読み出しおよび書き込みを可能にするよう動作可能である。特定の実施形態によれば、前記少なくとも１つのタイミングの仮定は、前のメモリアクセス動作の完了を表すイネーブル信号に応答して前記ビットラインを充分にプリチャージすることを仮定すること、および前記ビットライン上のライト信号に応答してＳＲＡＭ状態要素をラッチすることを仮定することのうちの少なくとも１つを含む。他の特定の実施形態によれば、前記少なくとも１つのタイミングの仮定は、前記ビットライン上のライト信号に応答してＳＲＡＭ状態要素をラッチすることを仮定する単一のタイミングの仮定を含む。さまざまな実施形態によれば、前記ＳＲＡＭ状態要素は、従来の６トランジスタ（６Ｔ）ＳＲＡＭ状態要素、または従来の１０トランジスタ（１０Ｔ）ＳＲＡＭ状態要素のいずれかを備える。
【００１２】
さまざまな実施形態によれば、前記ＳＲＡＭ環境回路は、リード回路、ライト回路およびアドレス発生回路を備える。ある実施形態によれば、前記アドレス発生回路は、非同期アドレスチャネルから耐遅延アドレスを発生するよう動作可能である。他の実施形態によれば、前記リード回路は、リード命令および前のメモリアクセス動作の完了を表すイネーブル信号に応答して、前記ＳＲＡＭ状態要素から前記外部非同期回路へリードチャネルを介してデータトークンの転送を促進するよう動作可能である。さらに他の実施形態によれば、前記ライト回路は、ライト命令および前のメモリアクセス動作の完了を表すイネーブル信号に応答して、前記ＳＲＡＭ状態要素へ前記外部非同期回路からライトチャネルを介してデータトークンの転送を促進するよう動作可能である。さらなる実施形態によれば、前記ＳＲＡＭ環境回路は、追加のタイミングの仮定が満たされる場合に前記耐遅延で前記ＳＲＡＭ状態要素の読み出しおよび書き込みを可能にするよう動作可能であり、前記追加のタイミングの仮定は、前記アドレス発生回路がアドレス値をデコードしていることである。
【００１３】
さまざまな実施形態によれば、前記ＳＲＡＭ状態要素および前記ＳＲＡＭ環境回路は、複数のＳＲＡＭバンクに組織付けられ、前記外部非同期回路は、ライトチャネルおよびリードチャネルを備える。前記ＳＲＡＭは、前記ライトチャネルから前記ＳＲＡＭバンクのいずれかへのライトデータトークンの転送を可能にするスプリット回路、および前記ＳＲＡＭバンクから前記リードチャネルへのリードデータトークンの転送を可能にするマージ回路をさらに備える。ある実施形態によれば、前記外部非同期回路は、複数のライトチャネルを備え、前記スプリット回路は、前記ライトデータトークンを前記複数のライトチャネルのいずれかから前記ＳＲＡＭバンクのいずれかへルーティング制御情報に従ってルーティングするよう動作可能であるクロスバーを備える。他の実施形態によれば、前記外部非同期回路は、複数のリードチャネルを備え、前記マージ回路は、前記リードデータトークンを前記ＳＲＡＭバンクのいずれかから前記複数のリードチャネルのいずれかへルーティング制御情報に従ってルーティングするよう動作可能である。
【００１４】
本発明の性質および利点のさらなる理解は、本明細書および図面の残りの部分を参照することによってなされるだろう。
【発明を実施するための最良の形態】
【００１５】
発明者によって考えられる本発明を実施するためのベストモードを含む本発明の具体的な実施形態を詳細に参照する。これら実施形態の例は、添付図面に示される。本発明は、これら具体的な実施形態について記載されるが、記載された実施形態に本発明を限定するよう意図はされない。むしろ添付の特許請求の範囲に規定される本発明の精神および範囲内に含まれるように、代替物、改変物、および等価物をカバーするよう意図される。以下の記載において、多くの具体的な詳細が述べられるが、これは本発明の完全な理解を促すためである。本発明は、これら具体的な詳細の一部または全部なしでも実施されえる。さらによく知られたプロセス操作は、本発明の趣旨を不必要にぼかさないために記載されていない。
【００１６】
本発明の特定の実施形態は、準耐遅延非同期ＶＬＳＩ回路（quasi-delay-insensitive asynchronous VLSI circuits）に関する設計スタイルのコンテキストにおいて記載されることにも注意されたい。しかし本発明の原理および手法は、例えば同期ＶＬＳＩと共に、耐遅延ではない非同期ＶＬＳＩのような他のコンテキストにおいても用いられえることが理解されよう。
【００１７】
さまざまな具体的な実施形態によれば、本発明と関連して採用される非同期設計スタイルは、レジスタの代わりにチャネル中のデータのラッチングによって特徴付けられる。そのようなチャネルは、送り側回路から受け側回路へのデータのＦＩＦＯ（ファースト・イン・ファースト・アウト）転送を実現する。データ線は送り側から受け側へつながり、イネーブル（すなわちアクノリッジの反対の意味）線は、フロー制御のために逆に接続する。これら実施形態の具体的なものによれば、近接する回路群（プロセス群）の間での４つのフェーズのハンドシェークがチャネルを実現する。これら４フェーズは、１）送り側はハイイネーブルを待ち、それからデータを有効（valid）にセットし、２）受け側は、有効なデータを待ち、それからイネーブルをロウにし、３）送り側はロウイネーブルを待ち、それからデータをニュートラルにセットし、かつ４）受け側は、ニュートラルデータを待ち、それからイネーブルをハイにする。このハンドシェークプロトコルの使用は例示目的であり、したがって本発明の範囲はこれに限定されるべきではない。
【００１８】
本設計スタイルの他の局面によれば、データは、1ofNエンコーディングつまりいわゆる「ワンホットエンコーディング」（one hot encoding）を用いてエンコードされる。これは、Ｎ本の線でＮ＋１の状態のうちの１つを選択するよく知られた規則である。このチャネルは、全ての線がインアクティブ（inactive）であるとき、そのニュートラル状態にある。ｋ番目の線がアクティブであり、全ての他の線がインアクティブであるとき、そのチャネルはｋ番目の状態である。任意の時刻において、１本より多い線がアクティブであるならエラー条件である。例えば、ある実現例において、データのエンコーディングはデュアルレール（dual rail）であり、1of2とも呼ばれる。このエンコーディングにおいて、２本のワイヤ（レール）が用いられて２つの有効な状態およびニュートラルな状態を示す。他の実施形態によれば、より大きな整数は、1of3または1of4コードのような、より多い線によってエンコードされる。ずっと大きな数については、複数の1ofNが異なる数値的大きさと併せて用いられる。例えば、３２ビットは、３２個の1of2コードまたは１６個の1of4コードによって表現されえる。
【００１９】
場合によっては、上述の非同期設計スタイルは、高級アルゴリズムおよび回路の振る舞いを記述するために、疑似コード言語ＣＳＰ（同時シーケンシャルプロセス）を採用しえる。ＣＳＰは、典型的にはパラレルプログラミングソフトウェアプロジェクトにおいて、および耐遅延ＶＬＳＩにおいて用いられる。ハードウェアプロセスに適用されると、ＣＳＰは、ＣＨＰ（コミュニケーティングハードウェアプロセスの略）して知られる。この言語の説明については、DARPAオーダー番号6202、A.J. Martinによる「Synthesis of Asynchronous VLSI Circuits」を参照されたく、その全体が全ての目的のためにここで参照によって援用される。
【００２０】
ＣＳＰ仕様をここで記載されるさまざまな技術と共に用いるためにトランジスタレベルの実現例に変形することは、A.M. LinesによるCaltech Computer Science Technical Report CS-TR-95-21,Caltech,1995,「Pipelined Asynchronous Circuits」に説明される技術によって達成されえ、その全体が全ての目的のためにここで参照によって援用される。しかし、非同期設計技術のさまざまなもののうちの任意のものがこの目的のためにも用いられえることが理解されよう。
【００２１】
本発明のさまざまな実施形態によれば、非同期環境で動作可能であり、かつ遅延およびトランジスタのバラツキにロバストなＳＲＡＭが提供される。より具体的には、例えば上述の設計スタイルによって実現される非同期システム中での、従来のＳＲＡＭ状態要素（state elements）の使用を可能にするリードおよびライト回路が提供される。
【００２２】
図１は、本発明のさまざまな実施形態と共に用いるための従来の６トランジスタ（６Ｔ）ＳＲＡＭ状態要素を示す。ＳＲＡＭ状態要素１００は、対応するビットラインb.0およびb.1に接続されたトランジスタパスゲート１０６および１０８を持つクロスカップリングされたインバータ１０２および１０４のペアを含む。アドレスライン１１０は、パスゲート１０６および１０８をオンするように動作可能であり、それによってビットラインを、ＳＲＡＭ状態要素の内部ノードx.0およびx.1上の状態に曝す。
【００２３】
ビットラインb.0およびb.1は、ＳＲＡＭ状態要素１００に記憶されたデータのデュアルレール表現として考えられえる。示されるように、従来のＳＲＡＭ状態要素のこの特徴は、さまざまな非同期設計スタイルによって設計された非同期チャネルと対話することができる。具体的な実施形態によれば、従来のＳＲＡＭ状態要素および特定の設計スタイルに関連する非同期ハンドシェークプロトコルの間の対話は、特に効率的である。
【００２４】
ＳＲＡＭ状態要素１００の状態を読むためには、アドレスライン１１０が用いられて、トランジスタパスゲート１０６および１０８をオンし、ビットラインb.0およびb.1を内部ノードx.0およびx.1にそれぞれ接続する。ロウである内部ノードは、センスされる対応するビットラインをロウに引き、それからデュアルレール値はバッファされ要求側に送られる。ＳＲＡＭ状態要素１００に書くためには、アドレスライン１１０が再び用いられて、内部ノードが、所望の書き込み値でそのとき駆動されているビットラインに曝され、クロスカップルされたインバータ１０２および１０４中のトランジスタに過電力を与えて、状態要素の新しい内部状態を確立する。この振る舞いは、同期または非同期を問わず６Ｔ  ＳＲＡＭ状態要素を用いる全ての実現例について共通である。
【００２５】
図２は、本発明のＳＲＡＭトランジスタおよび回路トポロジーが採用されえる高レベルブロック図である。ＳＲＡＭ状態要素のアレイ２０４に関連付けられるリード／ライト回路２０２は、入って行くライトチャネル２０６および出て来るリードチャネル２０８を有し、複数の双方向ビットラインを介してアレイ２０４に結合される。具体的な実施形態によれば、リードおよびライトチャネルのそれぞれは、Ｎビットのデュアルレールであり、ビットラインもＮビットのデュアルレール（すなわちb.0およびb.1）である。しかし、これらは例示に過ぎないことが理解されよう。デマルチプレクサ２１０は、ライトおよびリード信号「iw」および「ir」を含む命令Ｉを受け取り、ＳＲＡＭアレイ２０４と関連付けられる適切なアドレスライン（群）を選択する。リード／ライト回路２０２の性質は、図３〜５を参照してこれから説明される。
【００２６】
具体的な実施形態によれば、回路２０２は、３つのレベルの階層に構成される。以下の説明は、ライト操作中にビットライン（b.0およびb.1）のペアのうちの一つをロウに駆動するよう構成されるライト回路３０２および３０４を備えるリードおよびライト回路３００（図３）によって表される第１の、最も低いレベルから始まる。イネーブル信号「en」は、ビットラインb.0およびb.1をプリチャージし（pre-charges）、システムがライトできる状態にあるときを知らせ、サイクルごとにリセットされる。信号w.0は、選択されたＳＲＡＭセル（群）に論理「０」が書き込まれるときにハイになり、信号w.1は、選択されたＳＲＡＭセル（群）に論理「１」が書き込まれるときにハイになる。回路３０２を参照し、例えば、en、iw、およびw.0のハイが一致すると、プリチャージされたビットラインb.1がプルダウンされ、ビットラインb.0がハイのまま維持される。この結果、アドレスラインが選択されたバス上のセルに、論理「０」が書き込まれることになる。書き込み完了は、信号w.0およびw.1を併せてＮＯＲをとることによって示され、これはライト完了信号_W.v.になる。そのビットラインがライト回路によって駆動されていることをチェックすることによって、さらなるトランジスタを使うことにはなるが、１つのタイミング仮定をなくすことも可能である。
【００２７】
リード回路３０６は、リード回路３０８および３１０を備える。リード制御信号「ir」がハイになる（したがって_irがロウになる）とき、回路３０８および３１０中の対応するトランジスタは、ターンオンされる。同時に、ビットラインb.0およびb.1を、対応する状態要素の内部状態x.0およびx.1に曝すアドレスラインが選択されている。この結果、b.0およびb.1のうちの１つがロウになり（状態要素の状態に依存して）、それにより信号ラインr.1およびr.0のうちの対応する１つにおいてセンスされ、例えばもしb.0がロウになるなら、r.1はハイになる。イネーブル信号「en」およびリード制御信号「ir」は、互いに排他的であり、それによってビットラインがプリチャージしているときには、リード動作がイネーブルされることを防止することに注意されたい。代替の実施形態によっては、回路３０８および３１０は、センスアンプと置換されえることに注意されたい。
【００２８】
図４は、図３のリードおよびライト回路３００が４回繰り返され、この１回は、４つのＳＲＡＭ状態要素のうちのそれぞれについてであり、４つのＳＲＡＭ状態要素のそれぞれは、ＳＲＡＭアレイ中の状態要素のセットに対応する、リード／ライト回路２０２の階層４００の第２の、つまり次のレベルを示す。アレイ中の状態要素は、状態要素回路に対する容量性負荷を減らすように複数のセットに分割される。さまざまな実施形態によれば、ＳＲＡＭアレイのサイズに依存して、セットの個数は変わりえる。示される実施形態は、回路の１ビット版が４つのセットである。
【００２９】
回路３０６の４つのインスタンスについての４つの_ir信号は、互いに排他的なロウであり、すなわち１つだけが任意の時刻においてロウであることができる。よって、回路４０２および４０４は、反転されたリードの全てがハイになるとき、リードラインr.0およびr.1をリセットする。リード信号r.0およびr.1をそれぞれリード信号R.0およびR.1にブーストするために、ハーフバッファ回路４０６がオプションとして採用されえ、これは、r.0およびr.1上の負荷をバッファし、リード完了回路を効率的に提供する、すなわちリード完了信号R.v.を提供する。よって、適切な回路およびフロー制御を用いて、従来のＳＲＡＭ状態要素（そのビットラインのデュアルレール状の特性を持つ）に対するリード動作は、準耐遅延（quasi-delay-insensitive）非同期システムの適切なイベントドリブンデュアルレールチャネルフォーマットである出力を作ることが可能である。ライト完了信号_W.v.は、信号w.0およびw.1をＮＯＲゲート４０８で論理的に結合することによって発生される。示される具体的な実施形態によれば、_W.vの発生は、オプションとしてそのビットに書き込まないことを示す第３信号w.2を含みえ、特定のビットをマスクするのに用いられえる個別のビットイネーブルを実現しえる。よって、個別のビット群（またはビット群のグループ、すなわちニブル群およびバイト群）の選択的書き込みは、非常にローコストで達成されえる。
【００３０】
具体的な実施形態によれば、遅延のバラツキに遭遇したときのこれら回路のロバストさは、ビットラインの駆動に関するある簡単なタイミングの仮定に根拠が置かれている。すなわち、イネーブル信号「en」がロウに駆動されて、ビットラインがプリチャージさせられるとき、アクノリッジはなく、この仮定は、そうでなければ耐遅延動作を確かにするようビットラインが充分に短い期間でプリチャージされることにある。同様に、ビットラインがライト動作のためにロウまたはハイに駆動されるとき、アクノリッジはなく、この仮定は、ビットラインおよび状態ビットが充分に短い期間で安定化することである。これら仮定は、かなりのマージンを有し、より複雑な完了回路のための必要をなくす。例えば、これら仮定は、書き込み完了が信号w.0およびw.1の簡単な組み合わせであることを可能にする。ある実施形態によれば、アドレスチャネルのデマルチプレクシングもアクノリッジされなくてもよく、さらなるタイミングの仮定は、デマルチプレクシング動作が、そうでなければ耐遅延動作を可能にするよう充分な期間内に起こることである。
【００３１】
図５は、４ビットブロックを４セット作るために図４の回路が４回複製される（ブロック４００によって表される）リード／ライト回路２０２の階層の第３の、つまり次に高いレベルを示す。上述のように、ブロック４００のそれぞれは、４つのブロック３００を含み、これらはそれぞれ、ロウの中のＮビット（例えば３２または６４ビット）のそれぞれについて複製される。
【００３２】
デマルチプレクサ（例えば図２のデマルチプレクサ２１０）によって受け取られる命令「Ｉ」は、どのセットが選択されるべきかを特定する。具体的な実施形態によれば、動作のタイプ、および４つのセットのうちのどれが選択されるかを特定するために1of8コード（I.0からI.7）が用いられる。図５を再び参照して、リードセレクト（I.0からI.3）は、反転され（ブロック５０４）、上述のような信号_ir.0から_ir.3の互いに排他的ロウであるセットを得る。ライトセレクト（I.4からI.7）は、バッファされ（ブロック５０６）、信号iw.0からiw.3を得る。このバッファリングのアプローチは、これを行うのに充分な時間がある場合に適する。代替として、時間を節約することが望まれる場合には、ブロック５０４および５０６は、簡単なバッファリングアプローチよりも速くそれらのそれぞれの値をラッチおよびアクノリッジすることができるパイプラインされた回路を備えうる。
【００３３】
バッファされたライトセレクト、ライト完了信号_W.v[0]から_W.v[3]、およびリード完了信号_R.v[0]から_R.v[3]が完了され（ブロック５１２）、w.vおよびr.vを発生する。イネーブル信号は、信号ENを発生するために、偶数個のインバータ（例えばブロック５１４）を有するインバータチェーンを用いて「ランプアップ」されえる。それから信号ENは、Ｃ要素を用いてw.vおよびr.vのそれぞれと結合され、それらの出力は、ＮＡＮＤがとられて、命令チャネルに動作が完了され、他の命令が発行されえることをアクノリッジする命令アクノリッジI.eを発生する（ブロック５１６）。加えて、それぞれのライト動作について、ライトアクノリッジ信号W.eが発生され、ライトチャネル（例えば図２の回路２０２）にアクノリッジし、ライトチャネルが次のトークンについて準備ができていることを示す。
【００３４】
例示的物理トポロジーを有し、図３〜５の回路を用いて実現される単一のポートのＳＲＡＭのより詳細な説明が図６を参照してこれから記載される。示されるトポロジーは例示に過ぎず、本発明の範囲から逸脱することなく幅広いトポロジーが採用されえることが理解されよう。
【００３５】
ＳＲＡＭ６００は、デマルチプレクサ６０６および制御回路６０８のそれぞれの側に２つの実質的に同一のブロック６０２および６０４を備える。４８ビット幅のメモリシステムについては、ブロック６０２および６０４のそれぞれは、図１〜５に示されるＳＲＡＭ状態要素およびリード／ライト回路の６つの実質的に同一のロウを含む。ロウの異なる個数は、異なる幅に対応し、例えば３２ビット幅メモリシステムについては、ブロック６０２および６０４のそれぞれは４つのロウを有する。それぞれのそのようなロウ（その例はブロック６０４の下に示される）は、図５の回路の１つのインスタンス（４×４のブロック６１０）、およびそれに続いてＳＲＡＭ状態要素の６４個のカラム６１４を含み、それぞれのカラムは、１６のそのような状態要素を備え、すなわち、４情報ビットおよび４セットである。状態要素の６４×１６のアレイに関連付けられるビットライン（不図示）は、ビットラインの値をホールドするスタティサイザを有する。よって、ＳＲＡＭブロック６００は、より大きいＳＲＡＭメモリシステムを作るために反復できる１．５ｋＢのブロックである。
【００３６】
本発明の具体的な実施形態によってアドレス情報を発生するためにどのようにデマルチプレクサ６０６が実現されえるかの詳細が図７を参照してこれから説明される。この実施形態によれば、アドレス情報は、３つの1of4コードで入って来て、このコードは、６４個の３入力ＡＮＤゲート、すなわちインバータを持つＮＡＮＤゲート（ブロック７０２）を用いてＳＲＡＭについての従来の1ofNコード（この場合、1of64）に変換される。具体的な実施形態によれば、アドレス発生回路は、1ofNコードを完了させるために完了回路（completion circuitry）を用いて耐遅延に作られえる。そのような完了回路は、例えば、アドレス完了信号a.vを発生する完了ツリー７０４（または任意の等価物）を備えうる。
【００３７】
リード動作については、a.vはアドレス発生の中間状態（neutrality）の完了を表すが、それは、リードラインそれら自身がアドレスの有効性を完了させるからであり、すなわちリードはアドレスなしでは起こりえなかったはずだからである。ライト動作については、a.vはアドレスの有効性および中間状態を表す。上述のデマルチプレクサ実現例は単なる例示であり、本発明を限定するために用いられるべきではないことに注意されたい。
【００３８】
加えて、図６の４×４のブロック６１０のインスタンスの全てについての命令アクノリッジ信号I.eは、例えば、８入力Ｃ要素ツリーまたは完了信号d.vを発生する等価な構造を用いて完了される。アドレス完了信号a.v、完了信号d.v、およびリセット信号（回路全体をリセットするグローバル信号）の反転されたものが、イネーブル信号enを発生する回路７０６への入力として用いられ、この信号はそれから、制御チャネル全体についての、かつ1of4アドレスコードの全てについてのアクノリッジを含むそのさまざまな使用のために、メモリブロック全体にわたってブロードキャストされる。
【００３９】
本発明のさまざまな実施形態によれば、ＳＲＡＭブロックにリペア機能が導入されえる。そのような実施形態によれば、６５番目のアドレスラインおよび対応する状態要素が上述の設計中に含まれる。もし、製造されたチップの試験中に、最初の６４アドレスのうちの１つについてビットエラーが識別されると、アドレスデコーディング回路は、アドレス翻訳を実行することによって、６５番目のアドレスが検出された不良アドレスの代わりに置換されえるようイネーブルされえる。このことは、例えば、６４から６５アドレスに変換するデマルチプレクサの前に挿入されたステージを含みえる。理解されるように、そのような能力は、それが使用されるときにこの追加回路を実現するさまざまな完了回路への代替物を含みえる。
【００４０】
本発明のさまざまな他の実施形態によれば、上述のＳＲＡＭ設計は、バンク非同期ＳＲＡＭ設計を実現するために追加の回路と共に採用されえる。図８に示される一つのそのような実施形態において、上述のように設計された複数のＳＲＡＭバンク８０２は、スプリット８０４を採用して、ライトチャネルＷを介したライト動作のためのバンクを選択し、マージ８０６を採用して、リードチャネルＲを介したリード動作のためのバンクを選択する。これらの選択は、１つのリード／ライトビットおよびｎビットのアドレス情報を含む制御チャネルＩＡに応答して達成される。
【００４１】
上述のように、スプリット８０４は、１からＱのバス（例えばＱ＝４）であり、このバスは、制御チャネルＳを制御回路８０８からリードし、入力データの１つのトークンをライトチャネルＬからリードし、それからそのデータをＳからリードされた値によって選択されたＱ出力チャネルのうちの１つに送る。マージ８０６は、Ｐから１のバス（例えばＰ＝４）であり、これは制御チャネルＭを制御回路８０８からリードし、それからデータのトークンをＰ入力チャネルのうちの１つからＭからリードされた値によって選択されるようにリードし、そのデータを単一の出力チャネルＲに送る。図９は、スプリット９００の基本ブロック図を示す。図１０は、マージ１０００の基本ブロック図を示す。上で参照によって援用されたA. Linesによる「Pipelined Asynchronous Circuits」も参照されたい。
【００４２】
具体的な実現例によれば、スプリット８０４は、１つのsplit_env部およびＱ個のsplit_cell部を含み、マージ８０６は、１つのmerge_env部およびＰ個のmerge_cell部を含む。split_cellは、それぞれの出力チャネルについて複製されたスプリット８０４の一部を含み、split_envは、回路の残りを含む。同様に、merge_cellは、それぞれの入力チャネルについて複製されたマージ８０６の一部を含む。
【００４３】
機能的には、それぞれのsplit_cell[i]は、Ｓが有効になるのを待ち、Ｓの値がｉに等しい（すなわちレールＳiが真である）ことをチェックする。もしそうであるなら、それは、その出力R[i]eからのイネーブルをチェックし、それがハイなら有効なデータをＬからR[i]にコピーする。いったんデータがR[i]にコピーされたら、split_cell[i]は、そのイネーブルをsplit_env, se[i]に下げる。結果として、Ｓ，Ｌ，およびR[i]eは中間に戻り、その結果、split_cell[i]は、データをリセットし、se[i]を再び上げることができる。１ビットデータおよび１ビット制御（共に1of2コードとしてエンコードされる）を持つsplit_cell１１００についての概略図は、図１１に示される。
【００４４】
split_envは、Ｌチャネルの有効性（validity）および中間状態（neutrality）をテストし、split_cell からse[0..Q-1]の論理ＡＮＤを計算し、ＳおよびＬ入力チャネルについてのアクノリッジを作る。Ｓチャネルの有効性および中間状態は、split_cell からのアクノリッジによって黙示される。１ビットデータおよび２つのsplit_cellについてのsplit_env１２００についての概略図は、図１２に示される。
【００４５】
１ビットデータおよび１ビット制御（1of2コードとしてエンコードされる）を持つmerge_cell１３００についての概略図は、図１３に示される。それぞれのmerge_cell[i]は、Ｍが有効になるのを待ち、Ｍの値がｉに等しい（すなわちレールＭiが真である）ことをチェックする。もしそうであるなら、それはmerge_env（出力イネーブルReのレディネス（readiness）を含む）からのgo信号を待ち、入力データL[i]が有効になるのを待つ。これが起こるとき、それはL[i]の値をＲにコピーする。merge_envは、Ｒの有効性をチェックし、rvをハイにセットすることによって、この状況を全てのmerge_cellに戻すようブロードキャストする。次に、merge_cellは、そのイネーブルme[i]およびL[i]eを下げる。いったんＭおよびL[i]データが中間に戻り、goが下げられると、Ｒが中間に戻り、rvが下げられ、merge_cellはイネーブルme[i]およびL[i]eを上げる。
【００４６】
１ビットデータおよび２つのマージセルについてのmerge_env１４００についての概略図は、図１４に示される。merge_envは、Ｒイネーブルのレディネスをチェックし、goを上げる。Ｍは、直接にmerge_cellに行き、それらのうちの１つがＲを新しい有効な値にセットすることによって応答する。それからmerge_envは、rvを上げ、その後、merge_cellは、me[i]で応答する。merge_envは、これらアクションの完了をチェックし、それからＭをアクノリッジする。いったんＭが再び中間状態になり、Ｒがアクノリッジしたら、merge_envは、goを下げ、これはmerge_cellがme[i]をリセットするようにする。またmerge_envは、Ｒを中間状態の値にリセットする。いったんこれらのアクションが完了すると、merge_envは、Ｍのアクノリッジを下げる。
【００４７】
ＳＲＡＭ状態要素の読み出しは比較的遅いので、リード動作は、ビットライン上の部分的な信号のスイングだけを用いて、センスアンプを用いてビットラインのスイングを検出することで実行されえる。本発明の具体的な実施形態は、そのようなアプローチを採用すると想定される。しかし、半導体プロセスの寸法が小さくなり続けるにつれ、センスアンプの一貫した信頼性高い動作を得ることはますます難しくなってきている。実際、経済的および技術的リソースの多くがこの問題のために用いられてきているが、結果はさまざまである。それぞれの新しいプロセスのためのアナログ回路の信頼性高い動作を実現するためには時間が必要とされるだけかもしれない。あるいは、実際の物理的限界が最終的にはセンスアンプが新しい世代のプロセスで成功して製造されえるかを決定するのかもしれない。
【００４８】
いずれにしても、具体的な実施形態によれば、本発明によって設計されたバンクＳＲＡＭは、センスアンプを採用せず、その代わりに、ビットラインがそのフルスイングで振れることを可能にする。これは、特定のバンクの動作を遅くするが、適切な個数のＳＲＡＭバンクおよびフロー制御によって、実効データレートは、任意の１つのバンク動作だけよりも大幅に高くなりえる。具体的な実施形態によれば、これを促進するために、マージ８０６は、フルバッファマージ回路として実現され、これは１つのデータトークンをその入力において、もう一つをその出力において記憶しえる。このフルバッファリングは、異なるバンクへの不連続リード動作でのフルスピードを可能にするために、非同期チャネルの高速パフォーマンスを利用する。
【００４９】
図１５に示される代替のバンク非同期ＳＲＡＭ設計によれば、図８のマージ８０６を、この場合、４つのＳＲＡＭブロック１５０４をリードチャネルに接続するクロスバー１５０２で置き換えることによって、複数のリードチャネルＲ１およびＲ２がサポートされえる。さまざまな実施形態によれば、幅広い種類のクロスバー設計のうちの任意のものが採用されえる。例えば、そのようなクロスバーを構成するためには、図９〜１４を参照して上述のスプリットおよびマージ回路の組み合わせが採用されえる。加えて、２００２年４月３０日に出願されたASYNCHRONOUS CROSSBAR WITH DETERMINISTIC OR ARBITRATED CONTROLと題された係属中の米国特許出願第10/136,025号（その開示全体が全ての目的のためにここで参照によって援用される）に記載されたクロスバー回路のうちの任意のものがクロスバー１５０２を実現するために採用されえる。ある実施形態によれば、データを複数の入力チャネルのうちの任意のものから、複数の出力チャネルのうちの任意のものに、ルーティング制御情報に基づいてルーティングするよう動作可能なクロスバーが採用される。入力チャネルおよび出力チャネルのそれぞれの組み合わせは、複数のリンクのうちの一つを備える。このクロスバーは、リンクのそれぞれの上で確定的にデータをルーティングし、それによってルーティング制御情報によって表される順序付けを部分的に保存するよう動作可能である。異なるリンク上のイベントは、無相関である。
【００５０】
実際、スプリット８０４およびマージ８０６の両方は、基本ＳＲＡＭ状態要素に何らの変更も加えることなく、ＳＲＡＭのポート能力（ported-ness）を増すために、クロスバーによって置き換えされえる。加えて、いずれかの側（すなわちリードまたはライト）のポートの個数は、２つに限定されない。しかし、現実的な個数は、ＳＲＡＭバンクの個数に相関し、すなわちもし４バンクしか存在しないなら、４個より多いリードポートは決してフルには利用されないだろう。
【００５１】
加えて、図１５に示されるように、このようなＳＲＡＭ設計（および実際のところ本発明の範囲内の任意の非同期ＳＲＡＭ設計）は、そうでなければ同期システムであるシステムにおいて、同期・非同期（Ｓ２Ａ）変換回路１５０６および非同期・同期（Ａ２Ｓ）変換回路１５０８をそれぞれライトおよびリードポート上で用いて採用されえる。具体的な実施形態によれば、適切な変換回路は、２００２年８月１日に出願されたTECHNIQUES FOR FACILITATING CONVERSION BETWEEN ASYNCHRONOUS AND SYNCHRONOUS DOMAINSと題される係属中の米国特許出願第10/212,574号に記載され、その全体が全ての目的のためにここで参照によって援用される。
【００５２】
バンクスピードがポートスピードよりも遅い複数のバンクを持つＳＲＡＭ設計（単一のまたは複数のポートをもつ）において、非同期ＳＲＡＭは、平均のポートスピードのパフォーマンスに近づくが、全てのアクセスパターンについてではない。そしてもしより低いパフォーマンスのアクセスパターンが予め計算されないなら、これはシステムの観点からは実質的に非確定的である。もし非同期メモリが同期システムにおいて用いられるなら（図１５を参照して上述のように）、そしてその同期システムが「確定的な」パフォーマンスを要求するなら、システムは、バンクスピードに等価な全体的なＳＲＡＭパフォーマンスに頼るかもしれず、または異なるありえる実施形態においては、非同期ＳＲＡＭにおけるバンクコンフリクトを検出することに基づいて同期システムに「待機状態」を知らせ、それによって同期システムがそのステートマシンに、「このサイクルではＳＲＡＭアクセスなし」をエンコードする条件を構築し、よって「確定的に」振る舞い、しかしながら平均としては非同期ＳＲＡＭポートのパフォーマンスを実現できるようにするための論理が加えられえる。
【００５３】
図８および１５のバンクＳＲＡＭ設計は、単一のポートの６Ｔ  ＳＲＡＭ状態要素に基づくＳＲＡＭ設計と共に、以下にその具体的な実現例が説明されるデュアルポート１０Ｔ  ＳＲＡＭ状態要素を採用するものにも適用可能であることに注意されたい。
【００５４】
本発明のさらなる実施形態によれば、従来の１０個のトランジスタの（１０Ｔ）デュアルポートＳＲＡＭ状態要素を採用するＳＲＡＭブロックが提供される。そのような１０Ｔ状態要素１６００の例は図１６に示され、ここで２つのバスが採用され、１つはライトであり、もう一つはリードである。すなわち、ライトバスライン_w.0および_w.1は、状態要素１６００に書き込むためにアドレスラインiwと併せて用いられ、一方、リードバスライン_r.0および_r.1は、状態要素１６００から読み出すためにアドレスラインirと併せて用いられる。図１の６Ｔ状態要素と比較して、１０Ｔ状態要素は、より多くのダイ面積を要求するが、ずっと速い。加えて、分離されたリードおよびライトバスのために、ＳＲＡＭバンク内の異なるアドレスに対する実質的に同時のリードおよびライト動作が１０Ｔ状態要素では起こりえる。デュアルポート１０Ｔ実施形態は、例えば、スピードに対する要求が面積の問題を圧倒する場合、またはメモリのサイズ（どの程度の情報が記憶されるべきであると意図されるかについて）が比較的小さい（例えばレジスタファイル）場合の応用例において有用でありえる。実施形態の後者のタイプにおいて、メモリが充分に小さい場合、ＳＲＡＭをセット群に分割する必要は大きく減るか、まったくなくなりえることが理解されよう。よって、セット群を持つ実施形態もセット群を持たない実施形態も両方が想定される。
【００５５】
１０Ｔ状態要素を採用する非同期ＳＲＡＭの具体的な実現例（例えば図１６の状態要素１６００）が図１７〜２１を参照してこれから説明される。階層フレームワークおよび実施形態を参照して上述の実現例の詳細の多くがデュアルポート実施形態に充分に類似するので、そのような詳細は簡潔さのためにここでは再び説明されないことが当業者には理解されよう。すなわち、２つのタイプの実施形態の間の大きな差だけが説明される。また具体的な実現例によれば、１０Ｔ実施形態は、そのような実施形態が単一のタイミングの仮定、すなわち１０Ｔ状態要素はライト信号に応答してラッチされているということだけを用いて実現されえる点において、前述の実施形態よりも遅延バラツキに対してよりロバストでありえることが理解されよう。
【００５６】
図１７に示されるように、イネーブル信号「en」は、リードバス（すなわち_r.0および_r.1）をプリチャージするために採用される。リードポートセル１７０２は、１トランジション出力ハーフバッファ（one-transition output half-buffer）を備え、リード信号_r.0および_r.1をそれぞれR.0およびR.1にブーストし、同時にリード完了信号_r.vも提供する。よって、単一ポート６Ｔ実施形態（例えば図４の回路４０６）のように、従来の１０Ｔ  ＳＲＡＭ状態要素上でのリード動作は、非同期システムの適切なイベントドリブンデュアルレールチャネルフォーマットである出力を作ることできる。しかし、リードポートセル１７０２は、単一ポートの設計の対応するものより２つのより少ないトランジションを有する。
【００５７】
ライトポートセル１７０４も比較的単純であり、単に信号w.0およびw.1を反転し、ライトバスを出力で駆動し、同時にライト完了信号_w.vも発生する。情報ビットの個数に依存して、全ての対応する信号_w.v（ライト動作について）、または全ての対応する信号_r.v（リード動作について）は、Ｎが情報ビットの個数であるとき、log2(N)ステージを有するMuellerのＣ要素を用いて６Ｔ実施形態についてと同じように達成されえる。同様に、アドレス完了も同じようにして、すなわち上述のようにＯＲツリーで達成されえる。
【００５８】
図１６において示される１０Ｔ  ＳＲＡＭ状態要素に基づき、図１７のリードおよびライトセルを含むデュアルポート１０Ｔ実施形態は、図１８に示される。アレイは、ＳＲＡＭ状態ビットの３２×４Ｎアレイとして示されるが、これは例示目的だけの特定の設計に過ぎないことに注意されたい。ビットラインおよびビットの任意の個数がサポートされえることが理解されよう。
【００５９】
ライト制御１８０２は、ライトポートセル１７０４からの_w.vのビット当たり４個のライト完了信号インスタンスを結合する。ライト制御１８０２は、信号kwを通じたアドレス制御と共にハンドシェークし、jweを作る。ライト制御１８０２は、ライト完了タイミングの仮定を利用して、４ビットライトデータＷをより大きなＳＲＡＭにアクノリッジする。ライト制御１８０２の具体的な実現例は図１９に示される。Ｃ要素１８０４は、Ｎ個のライトニブル完了信号jweを集め、ライトデマルチプレクシングプリチャージ信号jw.eを作る。
【００６０】
リード制御１８０６は、リードポートセル１７０２からの_r.vのビット当たり４個のリード完了信号インスタンスを結合する。リード制御１８０６は、信号krを通じたアドレス制御と共にハンドシェークし、jreを作る。リード制御１８０６は、ＳＲＡＭのリードラインをプリチャージするプリチャージ信号enも作る。リード制御１８０６の具体的な実現例は図１９に示される。Ｃ要素１８０８は、Ｎ個のリードニブル完了信号jreを集め、ライトデマルチプレクシングプリチャージ信号jr.eを作る。
【００６１】
デマルチプレクサ１８１０は、ＩＡにエンコードされたアドレスおよびリード／ライト命令をデマルチプレクシングして３２ラインについての個別のリードおよびライトセレクトラインにする。最適化として、リードデコードはjr.eでプリチャージされえ、ライトデコードはjw.eでプリチャージされえる。デマルチプレクサ１８１０の具体的な実施形態は、図２０に示される。
【００６２】
ＯＲゲート１８１２は1of32リードセレクトを完了し、信号krを作り、ＯＲゲート１８１３は1of32ライトセレクトを完了し、信号kwを作る。制御１８１４はＩＡを完了し、ＩＡ完了をkrおよびkwと結合し、ＩＡチャネルアクノリッジIA.eを作る。制御１８１４の具体的な実現例は、図２１に示される。代替の実施形態によれば、アドレスのデマルチプレクシングはアクノリッジされず、そうでなければ耐遅延動作を可能にするためにこの動作は充分に速く達成されるというさらなるタイミングの仮定がなされる。
【００６３】
示されるように、ＳＲＡＭブロック１８００は、非同期４相チャネルと結合された１０Ｔ  ＳＲＡＭ状態要素１６００のアレイを含む。ここで参照によって援用された文書においては、条件付きおよび非条件付き非同期チャネルが定義される。要約すれば、非条件付きチャネルは、サイクルごとにハンドシェークを通り、一方、条件付きチャネルはある制御環境下でのみサイクルを経る。ＳＲＡＭブロックの具体的な実施形態によれば、命令チャネルは非条件付きである。それは、アドレスおよびリード／ライト（またはリードおよびライト）命令を、メモリへのそれぞれのアクセスについて含む。ライトチャネルは、ライト命令上で条件付きであり、Ｗチャネルからのデータをアレイ中に置く。リードチャネルは、リード命令上で条件付きであり、アレイからデータを取り出し、それをＲチャネル上に置く。信号krおよびkwは、ＷおよびＲチャネルを制御１８１４と同期させるために用いられるメカニズムである。
【００６４】
ＳＲＡＭブロック１８００の動作がさらに詳細にここで説明される。命令は、ＳＲＡＭにチャネルＩＡを介して入り、デマルチプレクサ１８１０において1of32リードセレクト（ir）ラインまたは1of32ライトセレクトライン（iw）にデコードされる。具体的な実施形態によれば、効率のためにこのデコーディングはプリチャージされた計算においてなされる。デマルチプレクシング完了１８１２は、1of32コードを「完了させる」（リードについてはir、ライトについてはiw）。ライトについては、データは、ライトポートセル１７０４にバッファされ、状態ビット（_w.x）にわたってブロードキャストされる。ライト制御１８０２は、_w.vを完了し、完了信号をkwと結合し、その完了jweを発生する。ライト完了１８０４は、Ｎ個のjwe信号を完了し、jw.eを作り、これはある実施形態によれば、ライトセレクトのためのデマルチプレクサ１８１０のためのプリチャージである。このプリチャージングは、パフォーマンスのために含まれえるが、機能の実現のためには必要ではないことに注意されたい。
【００６５】
同様に、リード時には、リードセレクトラインは、状態ビットがリードラインをプルダウンすることを可能にする。リードポートセル１７０２は、「パイプラインされた」バッファステージを含み、_rをRにバッファする。またリードポートセル１７０２は、リードラインプリチャージトランジスタを含む。リード制御１８０６は、リードラインを完了し、その完了をkrと結合し、リードラインプリチャージ信号enおよびそれ自身の完了信号jreを発生する。リード完了１８０８は、Ｎ個のjre信号を完了し、jr.eを作り、これはある実施形態によれば、デマルチプレクサ１８１０におけるリードセレクトライン（ir）のためのデコードをプリチャージするのに用いられる。再び、このプリチャージングは、パフォーマンスのために含まれえるが、機能の実現のためには必要ではないことに注意されたい。最後に制御１８１４はアドレスおよびkrおよびkw信号を完了し、命令についてのアクノリッジIA.eを発生する。
【００６６】
具体的な実施形態によれば、制御１８１４は、同時にＳＲＡＭアレイにライトおよびリードを行うことを可能にするために実現されえる。すなわち、リードおよびライト命令についてのアドレスが衝突しないことが保証される限り、同時のライトおよびリード命令が実行されえる。同じアドレスがリードおよびライトされているときを検出し、ＳＲＡＭからリードする代わりに、ライトデータをリードポートに直接にバイパスするために、追加の回路がＳＲＡＭのバンクの外に加えられえる。
【００６７】
さまざまな実施形態によれば、上述の回路の適切な部分を複製することによって、および追加のリードおよびライトバスを付加することによって、追加のリードおよびライトポートが加えられえる。
【００６８】
本発明のさまざまな実施形態によれば、ビットラインのそれぞれは、使用されていないときにバスをそれらのプリチャージされたレベルに維持するための関連付けられたスタティサイザを有する。これれ実施形態のうちの具体的なものによれば、アナログ回路技術が、ビットラインがより速くプルダウンされることを可能にするこれらのスタティサイザに適用される。
【００６９】
本発明は、その具体的な実施形態を参照して特に示され説明されてきたが、この分野の当業者には、開示された実施形態の形態および詳細の変更は本発明の精神および範囲から逸脱することなくなされえることが理解されよう。例えば、ここで記載された回路およびプロセスは、コンパイルのさまざまな段階において、１つ以上のネットリストとして、シミュレーション言語において、ハードウェア記述言語において、半導体プロセスマスクのセットにおいて、および部分的にまたは完全に実現された半導体デバイスとして、ソフトウェア（オブジェクトコードまたは機械コード）において表現されえる（制限なく）。この分野における当業者によって理解される前述のそれぞれのさまざまな代替物も本発明の範囲内に入る。例えば、コンピュータで読み取り可能な媒体のさまざまなタイプ、ソフトウェア言語（例えばVerilog、VHDL）、シミュレーション可能な表現（例えばSPICEネットリスト）、半導体プロセス（例えばCMOS、GaAs、SiGe、など）、およびここで記載されたプロセスと共に用いられるのに適するデバイスタイプ（例えばFPGA）は、本発明の範囲内に入る。
【００７０】
最後に、さまざまな実施形態を参照してここでは本発明のさまざまな利点、局面、および目的が説明されてきたが、本発明の範囲はこれら利点、局面、および目的を参照して限定されるべきではない。むしろ、本発明の範囲は、添付の特許請求の範囲を参照して決定されるべきである。
【図面の簡単な説明】
【００７１】
【図１】本発明のさまざまな実施形態と共に用いるための単一ポート６Ｔ  ＳＲＡＭ状態要素の概略図である。
【図２】本発明の具体的な実施形態によって設計された非同期ＳＲＡＭのブロック図である。
【図３】本発明の具体的な実施形態による６Ｔ状態要素を採用するＳＲＡＭのためのリードおよびライト回路のためのトランジスタおよびより高いレベルの概略図である。
【図４】本発明の具体的な実施形態による６Ｔ状態要素を採用するＳＲＡＭのためのリードおよびライト回路のためのトランジスタおよびより高いレベルの概略図である。
【図５】本発明の具体的な実施形態による６Ｔ状態要素を採用するＳＲＡＭのためのリードおよびライト回路のためのトランジスタおよびより高いレベルの概略図である。
【図６】本発明の具体的な実施形態によって設計された非同期ＳＲＡＭのブロック図である。
【図７】図６のＳＲＡＭ設計の部分のさまざまなトランジスタおよびより高いレベルの概略図である。
【図８】本発明によって設計されたバンク付きＳＲＡＭの具体的な実現例のブロック図である。
【図９】本発明によって設計されたさまざまなバンク付きＳＲＡＭと共に用いられるスプリットおよびマージ回路のトランジスタおよびより高いレベルの概略図である。
【図１０】本発明によって設計されたさまざまなバンク付きＳＲＡＭと共に用いられるスプリットおよびマージ回路のトランジスタおよびより高いレベルの概略図である。
【図１１】本発明によって設計されたさまざまなバンク付きＳＲＡＭと共に用いられるスプリットおよびマージ回路のトランジスタおよびより高いレベルの概略図である。
【図１２】本発明によって設計されたさまざまなバンク付きＳＲＡＭと共に用いられるスプリットおよびマージ回路のトランジスタおよびより高いレベルの概略図である。
【図１３】本発明によって設計されたさまざまなバンク付きＳＲＡＭと共に用いられるスプリットおよびマージ回路のトランジスタおよびより高いレベルの概略図である。
【図１４】本発明によって設計されたさまざまなバンク付きＳＲＡＭと共に用いられるスプリットおよびマージ回路のトランジスタおよびより高いレベルの概略図である。
【図１５】同期領域へ変換する回路を含む本発明によって設計されたマルチポートバンクＳＲＡＭのブロック図である。
【図１６】本発明のさまざまな実施形態と共に用いられるデュアルポート１０Ｔ  ＳＲＡＭ状態要素の概略図である。
【図１７】本発明の具体的な実施形態による１０Ｔ状態要素を採用するＳＲＡＭについてのトランジスタおよびより高いレベルの概略図である。
【図１８】本発明の具体的な実施形態による１０Ｔ状態要素を採用するＳＲＡＭについてのトランジスタおよびより高いレベルの概略図である。
【図１９】本発明の具体的な実施形態による１０Ｔ状態要素を採用するＳＲＡＭについてのトランジスタおよびより高いレベルの概略図である。
【図２０】本発明の具体的な実施形態による１０Ｔ状態要素を採用するＳＲＡＭについてのトランジスタおよびより高いレベルの概略図である。
【図２１】本発明の具体的な実施形態による１０Ｔ状態要素を採用するＳＲＡＭについてのトランジスタおよびより高いレベルの概略図である。
【図１】
2007531957.tif 000003
【図２】
2007531957.tif 000004
【図３】
2007531957.tif 000005
【図４】
2007531957.tif 000006
【図５】
2007531957.tif 000007
【図６】
2007531957.tif 000008
【図７】
2007531957.tif 000009
【図８】
2007531957.tif 000010
【図９】
2007531957.tif 000011
【図１０】
2007531957.tif 000012
【図１１】
2007531957.tif 000013
【図１２】
2007531957.tif 000014
【図１３】
2007531957.tif 000015
【図１４】
2007531957.tif 000016
【図１５】
2007531957.tif 000017
【図１６】
2007531957.tif 000018
【図１７】
2007531957.tif 000019
【図１８】
2007531957.tif 000020
【図１９】
2007531957.tif 000021
【図２０】
2007531957.tif 000022
【図２１】
2007531957.tif 000023
【手続補正書】
【提出日】平成18年3月14日(2006.3.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のＳＲＡＭ状態要素およびＳＲＡＭ環境回路を備えるスタティックランダムアクセスメモリ（ＳＲＡＭ）であって、前記ＳＲＡＭ環境回路は、外部非同期回路とインタフェースし、前記ＳＲＡＭ環境回路に含まれるビットラインに関する少なくとも１つのタイミングの仮定が満たされる場合に耐遅延でＳＲＡＭ状態要素の読み出しおよび書き込みを可能にするよう動作可能であり、前記少なくとも１つのタイミングの仮定は、前記ビットライン上のライト信号に応答してＳＲＡＭ状態要素をラッチすることを仮定すること、および前のメモリアクセス動作の完了を表すイネーブル信号に応答して前記ビットラインを充分にプリチャージすることを仮定することのいずれか少なくとも１つを含むＳＲＡＭ。
【請求項２】
請求項１に記載のＳＲＡＭであって、前記ＳＲＡＭ状態要素は、従来の６トランジスタ（６Ｔ）ＳＲＡＭ状態要素、および従来の１０トランジスタ（１０Ｔ）ＳＲＡＭ状態要素のうちの１つを備えるＳＲＡＭ。
【請求項３】
請求項１に記載のＳＲＡＭであって、前記ＳＲＡＭ環境回路は、リード回路、ライト回路およびアドレス発生回路を備えるＳＲＡＭ。
【請求項４】
請求項３に記載のＳＲＡＭであって、前記アドレス発生回路は、非同期アドレスチャネルから耐遅延アドレスを発生するよう動作可能であるＳＲＡＭ。
【請求項５】
請求項３に記載のＳＲＡＭであって、前記ＳＲＡＭ環境回路は、追加のタイミングの仮定が満たされる場合に前記耐遅延で前記ＳＲＡＭ状態要素の読み出しおよび書き込みを可能にするよう動作可能であり、前記追加のタイミングの仮定は、前記アドレス発生回路がアドレス値をデコードしていることであるＳＲＡＭ。
【請求項６】
請求項３に記載のＳＲＡＭであって、前記リード回路は、リード命令および前のメモリアクセス動作の完了を表すイネーブル信号に応答して、前記ＳＲＡＭ状態要素から前記外部非同期回路へリードチャネルを介してデータトークンの転送を促進するよう動作可能であるＳＲＡＭ。
【請求項７】
請求項３に記載のＳＲＡＭであって、前記ライト回路は、ライト命令および前のメモリアクセス動作の完了を表すイネーブル信号に応答して、前記ＳＲＡＭ状態要素へ前記外部非同期回路からライトチャネルを介してデータトークンの転送を促進するよう動作可能であるＳＲＡＭ。
【請求項８】
請求項１に記載のＳＲＡＭであって、前記外部非同期回路は、イベントドリブンプロトコルによって特徴付けられ、前記外部非同期回路中の第１送り側および第１受け側間の前記イベントドリブンプロトコルは、
前記第１受け側からのイネーブル信号がハイになるとき、前記第１送り側が、データ信号を有効にセットし、
前記有効なデータ信号を受け取ると、前記第１受け側は、前記イネーブル信号をロウにし、
前記ロウイネーブル信号を受け取ると、前記第１送り側は、前記データ信号を中間状態にセットし、および
前記中間状態データ信号を受け取ると、前記第１受け側は、前記イネーブル信号をハイにする
ＳＲＡＭ。
【請求項９】
請求項１に記載のＳＲＡＭであって、前記ＳＲＡＭ状態要素および前記ＳＲＡＭ環境回路は、複数のＳＲＡＭバンクに組織付けられ、前記外部非同期回路は、ライトチャネルおよびリードチャネルを備え、前記ＳＲＡＭは、前記ライトチャネルから前記ＳＲＡＭバンクのいずれかへのライトデータトークンの転送を可能にするスプリット回路、および前記ＳＲＡＭバンクから前記リードチャネルへのリードデータトークンの転送を可能にするマージ回路をさらに備えるＳＲＡＭ。
【請求項１０】
請求項９に記載のＳＲＡＭであって、前記外部非同期回路は、複数のライトチャネルを備え、前記スプリット回路は、前記ライトデータトークンを前記複数のライトチャネルのいずれかから前記ＳＲＡＭバンクのいずれかへルーティング制御情報に従ってルーティングするよう動作可能であるクロスバーを備え、ライトチャネルおよびＳＲＡＭバンクのそれぞれの組み合わせは、複数のリンクのうちの１つを備え、前記クロスバーは、前記ライトデータトークンを前記リンクのそれぞれ上で確定的にルーティングし、それによって前記ルーティング制御情報によって示される部分的順序を維持するよう動作可能であり、異なるリンク上のイベントは相関がないＳＲＡＭ。
【請求項１１】
請求項９に記載のＳＲＡＭであって、前記外部非同期回路は、複数のリードチャネルを備え、前記マージ回路は、前記リードデータトークンを前記ＳＲＡＭバンクのいずれかから前記複数のリードチャネルのいずれかへルーティング制御情報に従ってルーティングするよう動作可能であり、ＳＲＡＭバンクおよびリードチャネルのそれぞれの組み合わせは、複数のリンクのうちの１つを備え、前記クロスバーは、前記リードデータトークンを前記リンクのそれぞれ上で確定的にルーティングし、それによって前記ルーティング制御情報によって示される部分的順序を維持するよう動作可能であり、異なるリンク上のイベントは相関がないＳＲＡＭ。
【請求項１２】
請求項１に記載のＳＲＡＭであって、前記ＳＲＡＭ環境回路は、前記ＳＲＡＭ状態要素からリードデータを受け取るよう動作可能であるリードチャネル、前記ＳＲＡＭ状態要素へライトデータを送るよう動作可能であるライトチャネル、およびアドレスおよびリード命令およびライト命令の少なくとも１つを備える命令データを受け取るよう動作可能である命令チャネルを備え、前記命令チャネルは、前記命令データをサイクル毎に受け取り、前記リードチャネルは、前記命令データがリード命令を備えるときだけ前記リードデータを受け取り、前記ライトチャネルは、前記命令データがライト命令を備えるときだけ前記ライトデータを送るように動作可能であるＳＲＡＭ。
【国際調査報告】
2007531957.tif 000024
2007531957.tif 000025