(57)【特許請求の範囲】
【請求項１】
ホストコンピュータシステムとメモリとの間で、前記メモリにて複数のフレーム時間にわたって、ポートまたはポート群を介してデータを通信することを含み、前記ホストコンピュータが前記メモリに連結され、前記ポートが前記ポート群のメンバーであり、
前記ホストコンピュータシステムと前記メモリとの間で、単一のフレーム時間にわたって、前記ポートまたは前記ポート群を介して前記データと関連したコマンドを通信し、
前記コマンドに占められていない前記ポート群の残りのポートを介して、前記コマンドに対して関連する以後のコマンドを通信することを含み、
前記ポート群に含まれるポートの数は、前記ポート群内での前記ポートのメンバーシップがメモリ動作時のどの時点でも変更可能なように、動的に選択可能である、メモリ待ち時間を短縮するための方法。
【請求項２】
前記以後のコマンドが前記単一のフレーム時間で前記コマンドとして通信される、請求項１に記載の方法。
【請求項３】
前記コマンドに占められていない前記ポート群の残りのポートを介して、前記コマンドに対する複製コマンドを通信することをさらに含む、請求項１に記載の方法。
【請求項４】
マスキングスキームを採用して、マスク箇所が同一の連続するフレームに対して共通のマスクコマンドを発行して、書き込みデータと同一の通信フレーム内への前記データの書き込みを抑止し、多数の通信ビットおよび前記メモリ待ち時間をさらに減らすことをさらに含む、請求項１に記載の方法。
【請求項５】
前記マスキングスキームがデータストリーム内で変更可能である、請求項４に記載の方法。
【請求項６】
前記マスキングスキームを改変し、マスク箇所が同一の連続するフレームに対して共通のマスクコマンドを発行して、書き込みコマンドと同一の通信フレーム内へのデータの書き込みを抑制する、請求項５に記載の方法。
【請求項７】
前記マスキングスキームが以後の単位転送にわたって自動的に繰り返す、請求項５に記載の方法。
【請求項８】
単一の単位転送後に前記マスキングスキームが終了する、請求項５に記載の方法。
【請求項９】
書き込みデータストリーム内にコマンドを挿入できる、請求項１に記載の方法。
【請求項１０】
ステータス情報を読取データストリーム内に挿入できる、請求項１に記載の方法。
【請求項１１】
メモリと連結されたホストコンピュータシステムであって、前記メモリは、複数のフレーム時間にわたって、前記メモリのポートまたはポート群を介して前記ホストコンピュータシステムからデータを受信するためのものであり、前記ポートは前記ポート群のメンバーであり、
前記メモリは、単一のフレーム時間にわたって、前記ホストコンピュータシステムから前記ポートまたは前記ポート群を介して前記データと関連したコマンドを受信するようさらに改変され、
前記メモリが、前記コマンドに占められていない前記ポート群の残りのポートを介して、前記コマンドに対して関連する以後のコマンドを受信するようさらに改変され、
前記ポート群に含まれるポートの数は、前記ポート群内での前記ポートのメンバーシップがメモリ動作時のどの時点でも変更可能なように、動的に選択可能である、メモリ待ち時間を短縮するための装置。
【請求項１２】
前記以後のコマンドが前記単一のフレーム時間で前記コマンドとして通信される、請求項１１に記載の装置。
【請求項１３】
前記コマンドに占められていない前記ポート群の残りのポートを介して、前記コマンドに対する複製コマンドを受信するように前記メモリが改変される、請求項１１に記載の装置。
【請求項１４】
マスク箇所が同一の連続するフレームに対して共通のマスクコマンドを発行して、書き込みデータと同一の通信フレーム内への前記データの書き込みを抑止するマスキングスキームを採用し、多数の通信ビットおよび前記メモリ待ち時間をさらに減らすように前記メモリがさらに改変される、請求項１３に記載の装置。
【請求項１５】
前記マスキングスキームがデータストリーム内で変更可能である、請求項１４に記載の装置。
【請求項１６】
前記マスキングスキームを改変し、マスク箇所が同一の連続するフレームに対して共通のマスクコマンドを発行して、書き込みコマンドと同一の通信フレーム内へのデータの書き込みを抑制する、請求項１５に記載の装置。
【請求項１７】
前記マスキングスキームが以後の単位転送にわたって自動的に繰り返す、請求項１６に記載の装置。
【請求項１８】
単一の単位転送後に前記マスキングスキームが終了する、請求項１６に記載の装置。
【請求項１９】
書き込みデータストリーム内にコマンドを挿入できる、請求項１１に記載の装置。
【請求項２０】
ステータス情報を読取データストリーム内に挿入できる、請求項１１に記載の装置。
【請求項２１】
メモリに連結されたホストコンピュータシステムであって、前記メモリが、メモリ待ち時間を短縮するためにポートバインディングシステムを採用し、前記ポートバインディングシステムが、データおよびコマンドの通信用に複数のポートを有し、複数のポートのうちの２つ以上のポートが、１つ以上のポート群に組み合わせられ、前記ポートバインディングシステムが、
前記ホストコンピュータシステムと前記メモリとの間で、複数のフレーム時間にわたって、前記メモリにおけるポートまたはポート群を介してデータを通信し、前記ポートが前記ポート群のメンバーであり、
前記ホストコンピュータシステムと前記メモリとの間で、単一のフレーム時間にわたって、前記ポートまたは前記ポート群を介して前記データに関連したコマンドを通信するためのものであり、
前記ポートバインディングシステムが、前記コマンドに占められていない前記ポート群の残りのポートを介して、前記コマンドに対して関連する以後のコマンドを通信するよう改変され、
前記ポート群に含まれるポートの数は、前記ポート群内での前記ポートのメンバーシップがメモリ動作時のどの時点でも変更可能なように、動的に選択可能である、メモリ待ち時間を短縮するためのシステム。
【請求項２２】
前記以後のコマンドが前記単一のフレーム時間で前記コマンドとして通信される、請求項２１に記載のシステム。
【請求項２３】
前記ポートバインディングシステムが、前記コマンドに占められていない前記ポート群の残りのポートを介して、前記コマンドに対する複製コマンドを通信するためのものである、請求項２１に記載のシステム。
【請求項２４】
前記ポートバインディングシステムが、マスク箇所が同一の連続するフレームに対して共通のマスクコマンドを発行して、書き込みデータと同一の通信フレーム内への前記データの書き込みを抑止するためのマスキングスキームを採用し、多数の通信ビットおよび前記メモリ待ち時間をさらに減らすようにさらに改変される、請求項２１に記載のシステム。
【請求項２５】
前記マスキングスキームがデータストリーム内で変更可能である、請求項２４に記載のシステム。
【請求項２６】
前記マスキングスキームを改変し、マスク情報を含め、書き込みコマンドと同一の通信フレーム内へのデータの書き込みを抑制する、請求項２５に記載のシステム。
【請求項２７】
前記マスキングスキームをさらに改変し、マスク箇所が同一の連続するフレームに対して共通のマスクコマンドを発行して、前記書き込みコマンドと同一の通信フレーム内へのデータの書き込みを抑制する、請求項２６に記載のシステム。
【請求項２８】
前記マスキングスキームが以後の単位転送にわたって自動的に繰り返す、請求項２７に記載のシステム。
【請求項２９】
単一の単位転送後に前記マスキングスキームが終了する、請求項２７に記載のシステム。
【請求項３０】
書き込みデータストリーム内にコマンドを挿入できる、請求項２１に記載のシステム。
【請求項３１】
ステータス情報を読取データストリーム内に挿入できる、請求項２１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、広義にはコンピュータメモリの分野に関し、特にシリアルポートメモリ通信の待ち時間と信頼性を改善することに関する。
【０００２】
（関連出願の相互参照）
本出願は、２００８年１０月２９日にファイルされた米国仮特許出願第６１／１０９，４８０号明細書の非仮出願であり、その優先権を主張する。
【背景技術】
【０００３】
あるホスト（システムオンチップ、コンピュータ、グラフィックスコントローラなど）または複数のホストとメモリとの間で、個々のポートを介してコマンドやデータが転送される高速シリアルインタフェースを用いたメモリシステムでは、何らかのエラー検出と組み合わせて帯域幅を最大にし、適切なシステム動作を保証するのが望ましい。
【０００４】
シリアルリンクには、一度に１ビットしか送信されないがゆえの固有の待ち時間がある。また、シリアライゼーションおよびデシリアライゼーションプロセスによって、待ち時間がさらに長くなる。ポートを個々に使用しても待ち時間が大幅に改善されることはなく、帯域幅の改善には定型化されたアクセス方法が用いられる（ストライプアクセスの場合のように、各ポートから異なる専用のメモリ領域にアクセスするなど）。（複数のポートを一斉に用いて）ポートバインディングを可能にすることで、定型化されたアクセス方法を使わずに数ビットのデータを一度に転送しつつ帯域幅を広げ、メモリ待ち時間を低減することができる。
【０００５】
メモリには、ある程度のデータセキュリティも必要である。たとえば、シリアルチャネルにおいては、待ち時間を許容外の長さにする方法を使わないかぎり検出できないエラーが生じる可能性がある。バウンドポート状況では、コマンド時間にアイドル状態のままになるポートがいくつかある。この未使用の帯域幅は、その同じ時間内にコマンドの複製で満たされる。この方法は、時間的な複製を用いて単一ポートにまでおよび、ポート構成に対する特徴をあたえている。
【０００６】
図１は、ＥＩＡ標準ＲＳ−２３２−Ｃにおける従来のシリアルビット割り当て１００を示す。図中、データのシリアル転送は、個々のバイナリ値（ビット）１０２〜１１８を一度に１つずつ順に観察し、それらを値１２４内の異なるビット位置に割り当てることで、値全体１２４にアセンブルするＲＳ−２３２リンクと類似している。たとえば、値１２４の最上位ビットに割り当てられる１０４が第１のビットである場合、第２のビット１０６が続き、同様に通信される最後のビット１１８で最下位ビットが埋まるまで続くといった具合である。この場合のアセンブルされた値を、値１２４ならびにストップビット１０２、およびスタートビット１２０を含むフレーム１２８と呼ぶ。また、スタートビット１２０およびストップビット１２２を含むフレーミングビット１２６と呼ばれる余分のビットを使用して、フレーム１２８の輪郭を画定する。これは、受信機がフレーム１２８の開始点を探したり、フレームが想定時に到着しているか否かをチェックしたりするのに使用可能である。他のスキームでは、フレーミングビット１２６を用いて、送信機と受信機との間のデータ転送速度がわずかに異なるまたは変化している場合ですらも、受信機が高信頼度で個々のビットを探すのを助ける。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
個々のシリアルリンクでのメモリに対する通信によって、かなりの待ち時間が発生し、２つ以上のホストによって単一メモリにアクセスさせると、メモリ資源が複雑になる。さらに、メモリは１つ以上のポートを持ち得るものであり、各々が、待ち時間および帯域幅を改善するために、シリアル送信機とシリアル受信機ならびに関連の回路を含む。バウンドポート状況では、コマンド時間のあいだもいくつかのポートがアイドルのままである。この未使用帯域幅を同一の時間間隔におけるコマンドの空間的な複製で埋め、異なる時間間隔で、時間的な複製を用いてこの方法を単一ポートにも拡張し、すべてのポート構成にこの特徴を持たせる。バウンドポート状況では、データが複数ポートで送信されるが、コマンドはスタンドアロンでなければならない。第一に、未使用のポートはコマンドの複製を含み得る。第二に、特定のコマンドを同時に発行可能である。さらに、シリアライゼーション、デシリアライゼーション、エラー管理のためのデータのフレーミング、さらには同期などの追加のプロセスがゆえに、シリアル通信ではパラレル通信よりも待ち時間が長くなる。
【０００８】
したがって、メモリ待ち時間を減らすための技術を導入および採用するのが望ましい。
【課題を解決するための手段】
【０００９】
ポートメモリ通信のメモリ待ち時間および信頼性を改善するための方法、装置およびシステムが開示される。
【００１０】
一実施形態では、この方法は、ホストコンピュータシステムとメモリとの間で、メモリにて複数の時間間隔にわたってポート群を介してデータを通信することを含み、ホストコンピュータがメモリに連結され、ホストコンピュータシステムとメモリとの間で、単一の時間間隔にわたって、ポートまたはポート群を介してデータと関連したコマンドを通信することを含む。
【００１１】
一実施形態では、装置が、メモリと連結されたホストコンピュータシステムであって、メモリは、複数の時間間隔にわたって、メモリのポート群を介してホストコンピュータシステムからデータを受信するためのものである。メモリは、単一の時間間隔にわたって、ホストコンピュータシステムからポートまたはポート群を介してデータと関連したコマンドを受信するようさらに改変されている。
【００１２】
一実施形態では、方法が、帯域幅および待ち時間を変えるため、および／または電力を節約するために、群内のポート数をａｄ  ｈｏｃで選択可能であるホストコンピュータシステムとメモリとの間でデータを通信することを含む。
【００１３】
一実施形態では、装置が、ホストコンピュータシステムとメモリとの間でデータを通信し、帯域幅および待ち時間を変えるため、および／または電力を節約するために、群内のポート数をａｄ  ｈｏｃで選択することを含む。
【００１４】
一実施形態では、複数のホストをメモリに接続するためのシステムが開示される。このシステムは、メモリに連結されたホストコンピュータシステムまたはコンピュータシステム内の機能を含み、メモリは、ポートバインディングシステムを採用してメモリ待ち時間を短縮し、ポートバインディングシステムはデータおよびコマンドの通信用に複数のポートを有し、複数のポートの２つ以上のポートが、ａｄ  ｈｏｃにて１つ以上のポート群に組み合わせられ、ポートバインディングシステムは、複数の時間間隔にわたって、メモリでポート群を介してホストとメモリとの間でデータを通信し、データに関連したコマンドを、単一の時間間隔で、ポートまたはポート群を介してホストとメモリとの間で通信する。
【００１５】
添付の図面の各図に本発明の実施形態を限定ではなく一例として図示し、図中、同様の参照符号は同様の要素を示す。
【図面の簡単な説明】
【００１６】
【図１】ＲＳ−２３２の従来のシリアルビット割り当てを示す。
【図２Ａ】単一ホストバウンドポートメモリの実施形態を示す。
【図２Ｂ】４ポートメモリの単一ホスト接続の実施形態を示す。
【図２Ｃ】単一ホストインタフェース用ポートバインディング選択の実施形態を示す。
【図２Ｄ】スマートモバイルフォンアーキテクチャの実施形態を示す。
【図２Ｅ】シリアルポートＤＲＡＭ（ＳＰＤＲＡＭ）を利用したスマートフォンアーキテクチャの図２Ｄとは別の実施形態を示す。
【図２Ｆ】複数ホストバインディング構成の実施形態を示す。
【図２Ｇ】マルチホストバウンドポートメモリの実施形態を示す。
【図２Ｈ】最大１６ポート用のポートバインディング制御レジスタならびに、最大１６ポート用の複製コマンドチェックレジスタの実施形態を示す。
【図２Ｉ】バインディングデマルチプレクサの実施形態を示す。
【図２Ｊ】バインディングデマルチプレクサ経路指定を示すテーブルの実施形態を示す。
【図２Ｋ】バインディングマルチプレクサの実施形態を示す。
【図２Ｌ】バインディングマルチプレクサ経路指定を示すテーブルの実施形態を示す。
【図３】フレーム同期のためのプロセスの実施形態を示す。
【図４】電源制御のためのプロセスの実施形態を示す。
【図５】単一ポートを採用している、複製チェックおよびコマンド解釈のためのプロセスの実施形態を示す。
【図６】ポート内でフレームを受信およびデコードするためのプロセスの実施形態を示す。
【図７Ａ】１７ビットのデコード後フレーム（フォーマット）の実施形態を示す。
【図７Ｂ】コマンド、ステータス、データエンコード用フレームの実施形態を示す。
【図７Ｃ】アクティブバンクおよびアクティブコマンドの実施形態を示す。
【図７Ｄ】書き込みマスクおよび書き込みコマンドの実施形態を示す。
【図８Ａ】書き込みマスクモデルの実施形態を示す。
【図８Ｂ】書き込みマスクモデルの実施形態を示す。
【図８Ｃ】書き込みマスクモデルの実施形態を示す。
【図９】複数ポートを採用している、複製チェックおよびコマンド解釈のためのプロセスの実施形態を示す。
【図１０】コマンド複製モデルの実施形態を示す。
【発明を実施するための形態】
【００１７】
本発明の実施形態は、広義にはシリアルポートメモリ通信の待ち時間と信頼性を改善することに関する。しかしながら、これは高速パラレルなどの他のスタイルのインタフェースにも等しく適用可能である。
【００１８】
本明細書で使用する場合、「メモリ」とは、コンピューティングプロセッサあるいは、キーボード、ディスプレイ、カメラ、大容量記憶装置（磁気ディスク、光ディスク、磁気テープなど）、ネットワークコントローラといった周辺機器、あるいはワイヤレスネットワークなどの任意の「ホスト」で使用するために、事前に格納されたデータの検索を担うコンピュータシステム（図２Ｄ、図２Ｅなど）におけるコンポーネントを示す。一般に、メモリは、コンピュータシステムでデータを処理するために、１つ以上のマイクロプロセッサと連結される。データは、ランダムアクセスメモリ（ＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、ＦＬＡＳＨ、ＰＲＯＭ（プログラム可能な読み出し専用メモリ）、消去可能なＰＲＯＭ（ＥＰＲＯＭ）、電気的消去可能なＰＲＯＭ（ＥＥＰＲＯＭ）用などのホストによってメモリに格納可能であるか、読み出し専用メモリ（ＲＯＭ）場合のように、あらかじめ定められている。メモリは、ホストによって、ＰＣＩなどをバスを介して、あるいは中間メモリコントローラを介して、直接アクセス可能なものである。メモリへのシリアルアクセスでは、メモリとの間で、単一の回路を伝搬する単一シーケンスの電気信号を意味のあるコマンドおよびデータに変換したり、その逆の変換をしたりする（図１に示すようなＲＳ−２３２と同様）。この変換を実施する回路を「ポート」と呼ぶ。
【００１９】
一実施形態では、メモリ待ち時間を短縮するために、マスク情報を含めることなく、同一の通信フレームに書き込みコマンドおよびデータを記述し、フレーム内のビット数を減らして待ち時間を短くできるマスキングスキームが採用される。さらに、待ち時間を短縮するために、メモリベースのプロトコルを利用して、フレームサイズを小さくして待ち時間を減らし、より大きな拡張性ｖｓ．レガシーのダイナミックランダムアクセスメモリ（ＤＲＡＭ）プロトコルを提供し、帯域幅を広げる際のコマンドセットの変化を少なくする。
【００２０】
図２Ａは、単一ホストバウンドポートメモリ２００の実施形態を示す。バウンドポートメモリ２００の図示の実施形態は、バウンドポートメモリ２００のバウンドポートメモリシステム２０４と接続されている、多数のバンク（８バンクなど）を有するコアメモリ２０２（ＤＲＡＭ、ＦＬＡＳＨなど）を含む。メモリコア２０２のバンクは、４つのポート２０６〜２１２などの多数のポートと通信状態にある。４つのポート２０６〜２１２はすべて一緒に動作し、可変帯域幅で単一ホストに対するインタフェースをなす。バンクは、１つのバンクから同時に読み出しがなされ、別のバンクから書き込みがなされる場合のように、独立して用いられる。メモリコア２０２は、データを読み出すためのメモリ読み出しバスと、データを書き込むためのメモリ書き込みバスとを含むものであってもよい。しかしながら、メモリコア２０２内で読み出しデータと書き込みデータの両方に対して単一の接続がなされている場合もある。さらに、バウンドポートメモリシステム２０４は、それぞれ図２Ｋおよび図２Ｉにおいて説明する、バインディングマルチプレクサ２６４とバインディングデマルチプレクサ２６２とを含む。
【００２１】
従来の技術では、すべてのコマンドおよびデータビットが、形成対象となるコードについて同時に到着することになる個々のパラレルワイヤで一度に送信される。しかしながら、速度が高くなればなるほど、これらの個々のワイヤを流れるデータが、不正確または誤った時点でサンプリングされてしまう（関連のクロック信号を使用するなど）。高速サンプリングの問題を解決するために、セルフサンプリングされるシリアル信号（図１のＲＳ−２３２など）を利用している。しかしながら、データが時間的に処理されるため、パラレルでの方法よりも待ち時間が長くなる。一実施形態では、メモリを有するシリアルポート通信での通信の待ち時間と信頼性が、複数のシリアルインタフェースまたはポートをグルーピングし、次々と、または時間的に、またはポート間で同時に、または空間的にコマンドを複製することを採用している。この技術の一実施形態をここに図示し、単一ホストポートバウンドポートメモリ２００で採用する。
【００２２】
一実施形態では、送信機（Ｔｘ）が１６ビットのパラレルデータをシリアルビットストリームに変えればよく、その単一ビットストリームを送信するのに対し、受信機（Ｒｘ）は１６ビットの単一ストリームを受信した後、これをパラレルストリームに変えればよい。ローカルメモリは、この場合、転送速度がほぼ同一の３２ビット幅であればよい。図示のポートメモリ２００では、４つのポート２０６〜２１２が採用されているため、４つのポート２０６〜２１２を介して各方向に６４ビットのデータが流れる１２８ビット分のデータの移動がある（各方向に１６ビット×４ポートで６４ビットなど）。この１２８ビットの移動は、チップ内にある必要な回路で支持される。
【００２３】
従来の技術とは異なり、各ポート２０６〜２１２では、データストリームをさらに高速にシリアライズおよびデシリアライズするためのシリアライザ／デシリアライザを使用する。たとえば、ＰＬＬを用いて入力クロックをさらに高い速度まで多重化し、個々のビットのサンプリングに用いられる入力データ転送速度に合わせるようにしてもよい。ポート２０６〜２１２でのデータストリームの到着時刻がわずかに異なることもあるが、このようなデータストリームの流れは速くなる。言葉をかえると、各ストリームが、同じ速度ではあるが、かなり速度が増して流れる。さらに、個々のビットのタイミングは全体として完全ではないこともあるが、ビット同士を整列させる必要はない。なぜなら、当該ビットの実際の到着時刻は問題ではなく、ピンで各ビットを同期させる代わりに、たとえばアスタリスク２３２〜２３８で示すように、各ポート２０６〜２１２でのデシリアライゼーション後にビットを同期させる。また、これらのアスタリスク２３２〜２３８またはその近辺でポート２０６〜２１２のデシリアライゼーション後にデータビットが流れる速度は、高速外部メモリインタフェース２１４〜２２８（２５０ピコ秒など）に比べると２０倍遅く（５ナノ秒など）なることもある。一実施形態では、ポート２０６〜２１２は、位相検出、データビットの管理、当該データビットのサンプリング、レーンアライメントが可能である。
【００２４】
コマンドインタープリタ２４８は、レーン構成（図２Ｃ、図７Ｃ、図７Ｄでさらに説明する）に基づいて、コマンドすなわち付属の／密接に関連したコマンドを処理しつづける。
【００２５】
図２Ｂは、４ポートメモリ２００の単一ホスト接続２７０の実施形態を示す。ホスト２７１に対するメモリ２００の接続２７０の図示の実施形態。ホスト２７１は、１回の読み出し動作と１回の書き込み動作を同時におこなう。ＳＰＭＴがグルーピングポートをまとめて画定して広範囲のデータ通信を形成するのに対し、バインディング群におけるポート２０６〜２１２の数は動的に選択可能である。たとえば、単一ポートを使用可能であり、あるいは、提供された数のポート２０６〜２１２に何個のポートを束ねてもよい（２乗など）。少なめのポートを使用する場合、ピンの数が少なくなり、必要な電力も小さくなる。ポートの数を増やすと帯域幅が広がり、結果として同一量のデータを検索するための待ち時間が短くなる。バウンドポートの数はいつでも変更できると考えられる。
【００２６】
図２Ｃは、単一ホストインタフェース用のポートバインディング選択２７５の実施形態を示す。２つ以上のポートが束ねられる（２７７、２７８）と、データ帯域幅を効果的に多重化してすべてのポートのデータが群で転送される。しかしながら、個々のコマンドにはポートが１つあれば十分なこともあり、残りのポートが未使用のまま残るため、帯域幅の無駄を回避し、メモリ動作を向上させ、コマンド帯域幅を節約して、一組の密接に関連したコマンドまたは付属コマンドが得られる。これらのコマンドは、それがなければ無駄になっていた余分な帯域幅を適切に使用させるものである。当該密接に関連した／付属コマンドについては、他のポートで同時にコマンドを発行可能である前または後に発行すればよい。たとえば、アクティブコマンド（ＡＣＴ）が発行されたら、コマンドを完成させるための付属としてアクティブバンクコマンド（ＡＢＮＫ）を同時に発行可能である。同様に、付属書き込みマスクコマンド（ＷＭＳＫ）に対して、書き込みコマンド（ＷＲ）を同時に付随させることが可能である。どのコマンドもポート０で受信できるが、関連した付属コマンドは、コマンド帯域幅を節約するために他のポートで受信される。コマンドＡＣＴ、ＡＢＮＫ、ＷＲ、ＷＭＳＫについては、図７Ｂ〜図７Ｄを参照して後述する。
【００２７】
また、単一オプションは、逸脱したコマンドがゆえにメモリの動作状態に間違いが生じるのを防ぐための拡張エラー検出用のコマンド複製を可能にする。このオプションがイネーブルの状態で、単一ポートは、第１のフレームのコマンドと、続くフレームの複製とを比較する。２つ以上のポートが束ねられ（２７７、２７８）て使用される場合は、複製が別のポートで同時に生じるため、複製のために使う帯域幅が増えることはない。コマンドは複製されるが、この実施形態のデータは複製されない。少なくとも４つのバウンドポート２７８がある場合、複製コマンドと付属コマンドの両方を同時に使用してもよい。
【００２８】
図２Ｄは、２８２およびアプリケーションプロセッサ２８１、個々の揮発性メモリ（ＤＲＡＭ２７４、ＳＲＡＭ／ＤＲＡＭ２８３など）、不揮発性メモリ（ＮＡＮＤ２７２およびＮＯＲフラッシュ２７３など）、２つのプロセッサ２８１、２８２間の通信チャネル２６９で構成されるスマートモバイルフォンアーキテクチャ２８０の実施形態を示す。メモリ２７２〜２７４、２８３は、実行可能なプログラムコードならびに、接続されたそれぞれのプロセッサにとっては共有されずにプライベートなままのデータを格納・検索するのに用いられる。共有または通信は、通信チャネル２６９経由でなされる。アプリケーションプロセッサ２８１は、カメラ２０１および表示装置２０３などの他の周辺装置に連結されていてもよい。
【００２９】
図２Ｅは、ＳＰＤＲＡＭ２８５を有するスマートフォンアーキテクチャ２８４の図２Ｄとは別の実施形態を示す。一実施形態では、メモリがベースバンドプロセッサ２８２とアプリケーションプロセッサ２８１とで共有される。この実施形態では、ＳＰＤＲＡＭ２８５を使用して、ベースバンドプロセッサとアプリケーションプロセッサとの間で通信をし、両プロセッサ用のプログラムコードとデータを格納し、このアーキテクチャをインプリメントするのに必要なメモリコンポーネントまたは技術の数を減らす。さらに、専用の通信チャネルがなくなることを含めて、メモリとプロセッサとの間の接続数が減る。いくつかのホストがメモリの一部にアクセスできる一方で、他のメモリはそれができないような形で、セグメント化がなされる。これによって、ベースバンドソフトウェア用などのセキュア環境でメモリデバイスの共有が可能になる。たとえば、アプリケーションプロセッサ２８１は、ベースバンドソフトウェア画像をＳＰＤＲＡＭ２８５にロードし、ベースバンドプロセッサ２８２に対して画像が準備できたことを示すことが可能である。その後、ベースバンドプロセッサ２８２は他のホストへのアクセスをなくし、その上で画像の有効性を確認する。これが正しければ、ベースバンドプロセッサ２８２は、アプリケーションプロセッサ２８１で動作しているソフトウェアに中断されることなく、その画像から動作を進めることができる。
【００３０】
図２Ｆは、複数ホストバインディング構成２８６、２８７、２８８の実施形態を示す。一実施形態では、複数ポートバインディングを、マルチホストの機能性と組み合わせることが可能である。たとえば、アプリケーションプロセッサ２８１などの１つのホストがさらに広い帯域幅を必要とする場合、これはそのインタフェースにいくつかのバウンドポートを使用できるが、一方で他のもうひとつのホストは、単一ポートを使用しつづければよい。図示の実施形態では、４ポートデバイスのいくつかのホストを束ねる若干の組み合わせ２８６、２８７、２８８が提供される。たとえば、組み合わせ２８６において、ホスト１および２の各々が２つのポートとの間をインタフェースする。組み合わせ２８７では、ホスト１がポート０との間をインタフェースするのに対し、ホスト２は２つのポート２、３との間をインタフェースする。組み合わせ２８８では、各ホストが単一ポートとの間をインタフェースする。単一ホストが４つのホストすべてを一緒に束ねられるなど、ホスト−ポートバインディングまたはインタフェースのどのような組み合わせでも提供できると考えられる。厳密にどのポートをどのホストに割り当てるかは、バウンドポート群の長さを決めるレジスタの設定次第のこともある。
【００３１】
図２Ｇは、マルチホストバウンドポートメモリ２９２の実施形態を示す。４つのポート２９０を有する図示のマルチホストバウンドポートメモリ（マルチホストメモリシステム）２９２は、８つのバンク２８９を有するメモリコア２９１と通信できる状態にある。説明を簡単明瞭にするために、限られた数のポート２９０およびバンク２８９を図示してある。このマルチホストメモリシステム２９２は、図２Ａの単一ホストメモリシステム２０４と類似しており、ここでは各ポート２９０からのデータを各バンク２８９が個々に利用できる。この実施形態では、バンク２８９が、データ転送用に独立にアドレス可能なマルチホストメモリシステム２９２全体の一部として画定される。また、個々のアクセスを提供することで、ポート２９０の単一ポートを、他のバンクにアクセスしている他のポートと衝突することなく指示どおりの期間、バンク２８９の単一バンクに接続できる。バインディングマルチプレクサ２９３およびデマルチプレクサ２９４を多重化して、バンク２８９と複数ポート群のポート２９０との間でデータを送るクロスバースイッチの考え得る実施形態を得る。
【００３２】
図２Ｈは、最大１６ポート用のポートバインディング制御レジスタ２９５と、最大１６ポート用の複製コマンドチェックレジスタ２９６の実施形態を示す。簡単明瞭にするために、この実施形態では、マッチング係数（４つのポートにポート０、２つのポートにポート０または２、または単一ポートに任意のポートなど）のあるバイナリ倍数（ポート１、２または４など）の連続したポートでバインディングが生じると仮定している。ポートは、レジスタ設定に基づいてバインディング群での自らのメンバーシップを決めてもよい。１６ポートのバインディング制御レジスタ２９５を図示する。バインディングは、ビットがセットされていなければ、すべてのポートが独立に動作するなど、階層パターンとして説明され、これを提供する。２ポートデバイスの場合、単にビット０が用いられるのに対し、４ポートデバイスでは、残りの２つのポートバインディングを４つのポートに加え、すべてのポートを束ねることで、ビット０〜４で考え得るバインディングを記述する。８ポートデバイスでは、残りの２つのポートがビット８〜１１にバインディング、４つのポートがビット１３および１４にバインディング、すべてのポートがビット１５にバインディングする。このパターンを無限に続けることが可能である。
【００３３】
さらに、ポートはバインディング群に属していなくてもよく、この場合独自に動作できる。ポートは、バインディング群の一部でなくて個々に動作してもよいし、２つ以上のバインディング群の一部であってもよい。このような衝突を解決するためのひとつの技術に、指定された最大のバインディング群を選択することがある。このレジスタ２９５を用いてポートをバインディング群に加えたら、バインディング群の中で次のコマンドを使用し、新たなポートの準備ができるまで、どのコマンドも発行してはならない。ポートをバインディング群から除いたら、これをデセーブルにするか、それ自体を直後に使用すればよい。
【００３４】
さらに、１ポートあたり１ビットをレジスタに割り当てて、ここでは複製コマンドチェックレジスタ２９６として図示する複製コマンドチェックをイネーブルにする。ポートが群に束ねられている場合、これはその連続したポートでコマンド値をチェックする。群に束ねられていない場合は、連続したサイクルに複製が見られる。
【００３５】
図２Ｉは、バインディングデマルチプレクサ２９５の実施形態を示す。一実施形態では、個々のポート２９０によって、それぞれのバインディング指示を前提にポート待機レーン２９５（ｐｏｒｔ＿ｒｄｙレーンなど）が生成される。たとえば、４つのポート２９０が束ねられる場合、すべてのポート待機レーン２９５がアサートされる。しかしながら、ポート２９０のうちのポート２および３だけが２つのポート群に束ねられている場合、ポート待機レーン２９５のｐｏｒｔ＿ｒｄｙ［３：２］がアサートされる。同様に、ポート１が単独で動作している場合、ｐｏｒｔ＿ｒｄｙ［１］だけがアサートされる。この技術を使用して、転送サイズと、ポート２９０からメモリバンク２８９への正しいポート待機レーン２９５への経路指定ならびに、格納用のメモリ全体の作業を構築するラッチを判断する。
【００３６】
図２Ｊは、バインディングデマルチプレクサの経路指定を示すテーブル２９６、２９７の実施形態を示す。たとえば、データが到着すると、デマルチプレクサが経路指定関数テーブル２９６に従ってポートデータを正しいレーンに経路指定する。次に、テーブル２９７に示すように、デマルチプレクサレジスタが、ｅｎａｂｌｅ＿ｆｎ（図２Ｉの２９８）の関数に従って、メモリ用に束ねられた正しいポートレーンにデータを捕捉する。すべてのデータがラッチされたら、ｗｒ＿ｓｔｒｏｂｅを用いてｅｎａｂｌｅ＿ｆｎ  ２９８によってデータを格納するようコアに指令する。
【００３７】
書き込みマスキング関数または選択したデータ格納の抑止は、パラレルデータ経路を用いて達成可能である。格納サイクルの最初に、ｅｎａｂｌｅ＿ｆｎに従ってすべてのマスクを設定（すべてのレーンを抑止するなど）する。データが到着したら、関連のマスクを経路指定し、データと一緒に格納する。すべてのデータが到着していない（中断または短い転送など）場合、到着していないデータレーンには、関連のマスクをクリアする機会がないため、到着したデータだけを格納する。
【００３８】
図２Ｋは、バインディングマルチプレクサ２９３の実施形態を示す。一実施形態では、ポート待機（ｐｏｒｔ＿ｒｄｙなど）２９５および読み出しコマンド（ｒｅａｄ＿ｃｍｄなど）信号が、データがメモリから時間内に到着し（およびラッチされ）、出力ポート２９０を選択するような形で、メモリの読み出し待ち時間（ＲＬ）２９９だけ遅延する。このようなポートの選択は、単に遅延入力値を用いてなされる。読み出しコマンドからのｐｏｒｔ＿ｒｄｙレーン２９５は、デマルチプレクサ２９４の解釈と同様にマルチプレクサ２９３によって解釈される。マルチプレクサは、図２Ｌのテーブル２７９に示す関数に基づいて、出力ポート２９０へのレーンマッピングを選択する。
【００３９】
簡単明瞭にするために、各サイクルにメモリから１（６４ビット）データワードを送達でき、単一ポートの場合をカバーするようデータ転送速度を落とす可能性のある格納または遅延があると仮定する。データをフェッチするのに出力サイクルよりも多くのサイクルを必要とする場合、連続したサイクル全体にわたってさらに大きなワードをメモリからロードし、短めのセグメントを選択する「プリフェッチバッファ」でコアを構築する。この場合、データラッチをプリフェッチバッファと組み合わせることが可能である。データをスロットル調整するために、コマンドインタープリタは読み出しコマンドをそれより短い量に分割し、出力速度に合う遅めのペースで中間コマンドを発行できる。
【００４０】
図３は、フレーム同期用プロセスの実施形態を示す。始めに、システムリセット３０２用にメモリポートの電源を切る。ポートの電源を入れるには、／ＬＰＤがゼロに等しいときにリンクパワーダウン（／ＬＰＤ）をハイ３０４に駆動し、ポートをデセーブルにする。しかしながら、／ＬＰＤが１のとき、ＳＹＮＣと呼ばれる特定のコードまたはビットシーケンスについてフレームサーチが開始３０６される。ＳＹＮＣが検出されると、プロセスは動作モード３０８に入る。このプロセスを、図４で説明するように複数のポート（用いる場合）について継続してもよい。
【００４１】
ホストおよびメモリはシリアルにデータを交換するため、受信機が同期してフレーム内のビット位置の対応を判断する。正しい同期を判断するために、リンクは「フレーム検索」条件３０６で特定のビットシーケンスを検索する。たとえば、最初に、シリアルリンクが２つの同期ビットシーケンス：ＳＹＮＣおよびＳＹＮＣ２のうちの一方を送る。ホストとメモリの両方に使用され、Ｒｘ−ＰＨＹがこれらのフレーミングデータパケットを検出する。ＳＹＮＣは、リセットまたはエラー後のリンクの立ち上げにおいて重要な役割を果たす。また、ＳＹＮＣは、正常動作時に任意の未使用フレームでメモリＴｘ−ＰＨＹによって送信される。ホストＴｘ−ＰＨＹは、正常動作時に未使用フレームでＳＹＮＣまたはＳＹＮＣ２のいずれかを送る。ＳＹＮＣがメモリから検出されて認識されると、プロセスが正常動作モード３０８に進む。２０ビットのデコーディングエラーによってフレーミングに失敗したことがわかると、たとえば、ＳＹＮＣが再度検出されるまでメモリが「フレーム検索」条件３０６に戻る。いずれの状態でも、／ＬＰＤがゼロになると、ポートが「リンクダウン」状態に戻ってやり直しになることが示される。
【００４２】
ＳＹＮＣ２は、「リンクダウン」状態が残っているか、フレーミングエラーかのいずれかが原因でのホストデータ受信時のエラーを示すために、メモリによって送られる。ホストは、メモリがフレーミングを再構築してＳＹＮＣの送信を開始するまで、ＳＹＮＣを排他的に送信して応答する。ホストは、適切なエラー回復動作用のコマンド間にＳＹＮＣ２を送信する。ＳＹＮＣおよびＳＹＮＣ２は、リンクフレーミングを構築して回収し、ホストはリンク構築を調整する。
【００４３】
図４は、電源制御のためのプロセスの実施形態を示す。／ＬＰＤ（リンクパワーダウン）を受信する。判断ブロック４０２で、ポートがオンであるか否かを判断する。／ＬＰＤの先頭にあるスラッシュは、／ＬＰＤがゼロに等しいとき、リンクがパワーダウンされる、つまり電源が入らないことを意味するなどの逆論理を表す。同様に、１に等しい／ＬＰＤは、パワーダウンされていないことを表し、つまり電源が入ることを意味する。／ＬＰＤが１に等しい（リンクの電源が入るなど）場合、処理ブロック４０４で訓練プロセスが実施され、特定のコードまたはビットシーケンス（ＳＹＮＣなど）についてのフレームを探す。ＳＹＮＣ検索の訓練プロセスは、ＳＹＮＣが検出されるまで継続され、その後プロセスは処理ブロック４０６で動作モードに入る。このプロセスについては、図３を参照してさらに説明する。判断ブロック４０８で、ポートエラーがあるか否かを判断する。ある場合、プロセスは判断ブロック４０２を続ける。ない場合、判断ブロック４１０でさらにポートが動作モードに入っているか否かを判断する。他のポートが加わっていない場合、プロセスは処理ブロック４０６で動作モードを継続する。しかしながら、追加のポートが検出されたら、プロセスは処理ブロック４１４で新たなポートの訓練を続ける。
【００４４】
これらの追加の（複数の）ポートは、処理ブロック４１６で処理される。複数ポートの使用については、図９を参照しても説明する。判断ブロック４１８で、ポートエラーを判断する。判断ブロック４３０でポートによって生じた１つがパワーダウンしているなど（／ＬＰＤ＝０など）、ポートエラーが判断されると。イエスの場合、処理ブロック４３２ですべてのポートをデセーブルにし、判断ブロック４３４でプロセスは単一ポートモードで継続できる。判断ブロック４３４で、／ＬＰＤがゼロではない（／ＬＰＤ＝１など）場合、すべてのポートを処理ブロック４３６で訓練し、プロセスは処理ブロック４１６を続ける。判断ブロック４３０に戻り、／ＬＰＤがゼロではない（／ＬＰＤ＝１など）場合、処理ブロック４２８でプロセスはエラーポートの訓練を続けた後、さらに処理ブロック４１６を続ける。
【００４５】
判断ブロック４１８に戻り、ポートエラーが見つからない場合、判断ブロック４２０でさらにポートが加わるか否かのもうひとつの判断がなされる。加わる場合、処理ブロック４１４でプロセスは新たなポートの訓練プロセス（新たなポート各々のＳＹＮＣを探すなど）を続ける。追加のポートがイネーブルになっていない場合、判断ブロック４２２でいずれかのポートが外れたか否かを判断する。外れていない場合、プロセスは処理ブロック４１６を続ける。外れている場合、処理ブロック４２４で外れたポートをデセーブルにする。この時点で、判断ブロック４２６において、単一ポートを利用して単一ポートモードに戻れるかどうかを判断する。イエスの場合、プロセスは処理ブロック４０６を単一ポートモードで継続する。ノーの場合、プロセスは処理ブロック４１６を複数ポートモードで継続する。
【００４６】
（図２Ａの）電源制御２３８が／ＬＰＤの伝搬を担うのに対し、ポート２０６〜２１２は図３および図４の自らの訓練と処理を担う。
【００４７】
図５は、単一ポートを採用する複製チェックおよびコマンド解釈のためのプロセスの実施形態を示す。複数ポートを採用する、これよりも複雑なプロセスについては、図９に示す。図５にさらに示すように、データの受信、読み出し、デコードが、処理ブロック５０２において第１のフレームから開始してポート（第１のポートまたはマスターポートなど）で実施される。判断ブロック５０４で、ポートエラーが検出されたか否かを判断する。エラーが検出されたら、エラーを返すとともにブロック５２８でプロセスは終了する。ポートエラーが検出されなかったら、判断ブロック５０６で、複製がオンであるか否かを判断する。必要または要望に応じて複製をオンまたはオフにできると考えられる。複製がオンの場合、プロセスは、データの受信、読み出し、デコードを継続し、今度は処理ブロック５０８にて第２のフレームを用いてポートで実施される。繰り返すが、判断ブロック５１０で、ポートエラーが検出されるか否かを判断する。検出される場合、ブロック５２８でプロセスはエラーを返して終了する。
【００４８】
ポートエラーが検出されない（なおかつ判断ブロック５０６に戻って複製がオンではない）場合、プロセスはフレームがコマンドであるかデータであるかの判断に移動する。フレームがコマンドの場合、判断ブロック５１６で、コマンドが有効であるか否かを判断する。コマンドが有効でない場合、プロセスはエラーを返すとともにブロック５２８で終了する。コマンドが有効であれば、判断ブロック５１８で、コマンドが順序どおりすなわち正しい位置にあるか否かを判断する。コマンドが順序どおりでない場合、プロセスはエラーを返すとともにブロック５２８で終了する。コマンドが順序どおりであれば、処理ブロック５２０でこのコマンドを処理し、ブロック５３０で正常復帰を発行する。
【００４９】
判断ブロック５１４に戻ると、フレームがデータである場合、判断ブロック５２２で書き込み動作用にメモリが準備されているか否かを判断する。準備されていない場合、正常復帰。されている場合、処理ブロック５２４でデータをメモリに書き込み、プロセスは正常復帰とともにブロック５３０で終了する。この実施形態では、ブロック５１６、５１８、５２０のプロセスを図２Ａのコマンドインタープリタ２４８で実施するが、残りのプロセスについては図２Ａのポート２０６〜２１２で実施する。
【００５０】
図６は、ポート内のさまざまな機能を実施するためのプロセスの実施形態を示す。ブロック６０２において、データストリームを受信、読み出し、デコードするプロセスが提供される。たとえば、ここに図示するように、Ｒｘによってポートでシングルデータストリーム（ビットで）を受信し、パラレルストリームに形成した後、デコード（１７Ｂ／２０Ｂデコーディングを使用するなど）する。リンクパワーダウン（／ＬＰＤ）信号を使用して、図２Ａに示すような単一ホストバウンドポートメモリのすべてのポートに出入りする電力（図２Ａの点線が／ＬＰＤの電源制御を示すなど）など、すべてのポートへの電源を（電源制御機構によって）制御する。判断ブロック６０４で、／ＬＰＤがゼロに等しいか否かを判断する。ゼロである場合、ブロック６１４でエラーを返してプロセスを終了する。しかしながら、／ＬＰＤがゼロに等しくない場合、プロセスは処理ブロック６０６で継続する。
【００５１】
処理ブロック６０６で、ビットごとのデータストリームを読み出し、フレームのパラレルストリーム（２０ビット、デシリアライズなど）を生成するポートを含むデータフレームを読み出す。このフレームをデコード（１７Ｂ／２０Ｂデコーディング技術を使用するなど）した後、処理ブロック６０８で有効性データを生成する。判断ブロック６１０では、フレームの有効性をチェックする。たとえば、フレームが正しく１７ビット値にデコードされた２０ビットのコードを有するか否かを判断する。曖昧さがゆえに何の結果も生成しないなど、この変換に失敗すると、有効性が欠如してブロック６１４でエラーが返される。しかしながら、変換に成功し、結果が生成されると、そのデータフレームは有効であるとみなされ、図９にさらに示すようにブロック６１２で正常が返される。
【００５２】
図７Ａは、１７ビットのデコード後フレームフォーマット７００の実施形態を示す。１７ビットのデコード化フレーム７００の図示の実施形態を使用して、１７ビットのデータ、コマンドおよび／またはステータスを送信したり、遷移エンコードしたりして、シリアル伝送用の２０ビットのフレームを生成することができる。データ、コマンド、ステータスは、２０ビットのフレームで送受信される。受信時、逆プロセスが実施され、２０ビットの遷移コード化フレームがデコードされ、データ、コマンド、ステータスを保持する１７ビットのフレーム７００が生成される。
【００５３】
図示の１７ビットのデコード後フレーム（フォーマット）７００では、最初の１６ビットをペイロード７０２にあて、最後の１ビット（１７番目のビットなど）をペイロードインジケーター７０４にあてている。メモリアクセスフォーマットは、基本的なデコード化フォーマットの上に形成される。たとえば、ビット１６  ７０４は、データ、コマンドまたはステータスについて、ペイロードが１にセットされたかゼロにセットされたかを示す。コマンドおよび書き込みデータは、受信機リンクをフレームごとに共有できる。待ち時間を減らすために、コマンドを書き込みデータストリームに挿入または先取りし、書き込みコマンドの完成を遅らせてもよい。
【００５４】
図７Ｂは、コマンド、ステータス、データエンコード用フレームフォーマット７２０の実施形態を示す。図示の実施形態は、シリアルポートＤＲＡＭ（ＳＰＤＲＡＭ）コマンド、ステータス、データエンコード用フレーム７２０の実施形態を含むが、これに限定されるものではない。図示の１７ビットのエンコード用フレーム７２０は、将来、技術が変化したり要求があったりしたときなどに、多数のビットを逆にして追加のコマンドを加えるための柔軟性を提供するものであり、拡張可能である。たとえば、フラグ７２２およびサブコマンド７２４がフレーム７２０の最初の７ビット（ビット０〜７）を占め、サブコマンド７２４のほとんどのエントリが１であるため、フラグ領域７２２を含めてこの領域は、将来、追加のコマンド（最大１６コマンドなど）を加えて、フレーム７２０を広げるのに使用可能である。
【００５５】
同様に、同じく追加のコマンド（単に３つのコマンドを有するモードレジスタ群７２６のサブコマンド領域など）用に使用可能なモードレジスタ群７２６などの限られた範囲で、他のセクションがある。もうひとつのそのような領域に、同じく他のコマンドを追加するのに使用できるＤＲＡＭコマンド群７２８（すべてが１のＤＲＡＭコマンド群７２８のサブコマンド領域など）がある。
【００５６】
ＳＹＮＣ  ７３０がリンクフレーム同期を制御して管理するのに対し、ＳＹＮＣ２  ７３２は特定のリンク動作状態を示す。ＳＹＮＣ  ７３０および７３２については、ともに図３および図４を参照して説明する。データフレーム７３４は、１に設定された１７ビットと、これに続く８ビットずつ２つのバイトとを有する、図７Ａに示すデータフレーム７００に類似した１７ビットのフレームを含む。起動バンク（ＡＢＮＫ）７３６および起動（ＡＣＴ）７３８を、図７Ｃで説明する。書き込みコマンド（ＷＲ）７４０は、指定のバンクと列に対してメモリ書き込みサイクルを開始する。書き込みマスク（ＷＭＳＫ）７４２は、進行中の書き込みコマンド用に８バイトのマスクを設定し、ＷＲコマンド７４０に任意の作用を持たせる。ＷＭＳＫ  ７４２については、図７Ｄを参照してさらに説明する。
【００５７】
読み出し（ＲＤ）７４４は、メモリ読み出しサイクルを開始するための読み出しコマンドを示し、一方バーストストップ（ＢＳＴＰ）７４６は、指定のバンクに応じてポートの現在の読み出しまたは書き込みコマンドを中断させるためのコマンドを示す。プリチャージ（ＰＣＧ）７４８は、コマンドで指定されたバンクをプリチャージするコマンドを示し、一方プリチャージオール（ＰＣＡ）７５０は、すべてのバンクを同時にプリチャージするコマンドを示す。バンクごとのリフレッシュ（ＲＥＦＢ）７５２では、指定のバンクが自動的にリフレッシュされるのに対し、全バンクリフレッシュ（ＲＥＦＡ）７５４では、内部カウンタに従ってすべてのバンクがリフレッシュされる。ＲＥＦＡコマンドの発行前にすべてのバンクがプリチャージ状態になる。
【００５８】
モードレジスタ書き込み（ＭＲＷ）７５８は、モードレジスタへの書き込みを実施するためのコマンドを示す。モードレジスタ書き込みデータ（ＭＲＤ）７６０は、ＭＲＤコマンド７６０の形でポート０からすぐ次のフレームにおいてＭＲＷコマンド７５８の後に書き込みデータを提供する。モードレジスタ読み出し（ＭＲＲ）７５６は、モードレジスタからの読み出しを実施するためのコマンドを示す。セルフリフレッシュパワーダウン（ＳＲＰＤ）７６２は、メモリコアをすみやかに自己リフレッシュ状態にする。パワーダウン終了（ＰＤＸ）７６４は、セルフリフレッシュパワーダウンを終了するために発行され、リンク確立後にメモリコアを起こすのに用いられるコマンドを示す。
【００５９】
図７Ｃは、ＡＢＮＫおよびＡＣＴコマンド７３６、７３８の実施形態を示す。２つ以上のコマンドを同時に送信するために、これらのコマンドは互いの機能を支持するか、機能的に直交しているかのいずれかである。メモリ意味論または実装判断によって、直交性に障害が生じることがあるため、第３の基準として複雑さがあげられる。たとえば、シリアルポートＤＲＡＭが、バンクを起動するコマンドを有するものである、起動対象となる行アドレスが１フレームには長すぎる、などである。単一ポートの場合、このコマンドは２つ以上のフレームを必要とすることもあるが、バウンドポートでは、２つ以上のポートで１つのフレーム時間にて通信可能である。
【００６０】
たとえば、ＡＢＮＫ７３６は、以後の起動（ＡＣＴ）コマンド７３８で使用される標的バンク７５２と行アドレスの上位５ビット７５４を設定する。起動コマンド７３８は、最後のＡＢＮＫコマンド７３６で指定されたバンク７５２に送られる。２つ以上のポートが束ねられている場合、どのＡＢＮＫ７３６コマンドもポート２に出現できる。行アドレスの下位１５ビット７６４は、ＡＣＴコマンド７３８の最下位１５ビットで指定され、最上位の５ビットは、ポート２に出現する最後のＡＢＮＫコマンド７３６またはＡＢＮＫ７７０の下位５ビットで指定される。この例は、各コマンド７３６、７３８が、いつでも以後のフレームで自然に立てることを指摘するものである。これによって、さまざまなポート群サイズ、ポート群サイズとは関係ない共通コントローラ、ポートバインディング間の一貫した意味論が可能になる。また、コマンド７３８、７７０は互いに補い、同時に実行可能である。
【００６１】
図７Ｄは、ＷＭＳＫおよびＷＲコマンド７４２、７４０の実施形態を示す。図７Ｄは、選択的書き込み用のＷＲコマンド７４２および関連のバイト／書き込みマスク７４２を示している。ＷＭＳＫ７４２は、進行中のＷＲコマンド７４０に８バイトのマスク７７２を設定するコマンドを表し、ＷＲコマンド７４０に任意の作用を持たせる。８バイトのデータを通信した後、次の８バイトに対してマスク７７２が開始される。マスク７７２の文字「Ｈ」は、ワード転送のハイバイト（ビット１５〜８など）を示し、「Ｌ」はローバイト（ビット７〜０など）を示す。
【００６２】
ＷＲコマンド７４０は、指定のバンク７７４および列７７６に対するメモリ書き込みサイクルを開始する。ＷＲコマンド７４０が送られると、書き込みデータが続く。２つ以上のポートが束ねられている場合、任意のＷＭＳＫコマンド７８０が、最初の８バイトをカバーまたはマスク７７８しているポート２に送られる。マスク７７８は、以後のＷＭＳＫコマンドによってリセットされるまで８バイトごとに繰り返される。２以上のポートバインディングの他の例として、メモリおよびインタフェース意味論に応じて、読み出しと書き込みを同時にする組み合わせあるいは、起動と書き込みを同時にする組み合わせがあげられる。
【００６３】
図８Ａ、図８Ｂ、図８Ｃは、書き込みマスクモデル８００、８５０、８７５の実施形態を示す。シリアル通信を用いるメモリの場合、不可分転送用のビット数を減らして、待ち時間を短くする。不可分転送は、「書き込み」および標的アドレスなどのコマンドを完成させるのに必要な即値オペランドデータを含む、一全体データ量（バイトなど）または実行可能なコマンドを記述するビット単位のフレームまたはワード長として定義される。
【００６４】
ほとんどのメモリでは、書き込み動作は、ＷＲコマンド、アドレス、演算子（この場合はマスク）、書き込みデータを同時に含む。さらに高速のメモリデバイスの場合、コマンドを記述するのに必要な速度が禁止的であるため、バースト転送を使用する。バースト転送は、コマンドおよび初期データを用いて開始されるが、以後のアドレスを計算してデータストリームで継続される（インクリメントなど）。データ転送には常に、信号を示す追加の書き込みマスクを伴う。
【００６５】
シリアル通信では、コマンド、アドレス、書き込みマスク、データをすべて一度にコーディングするのは、非効率的になり得る。なぜなら、コマンドとアドレスは以後のデータ転送に必要ないこともあるからである。この点で、データは、バースト転送を用いてデータを委ねるＷＲコマンドおよびアドレスに追従する。待ち時間を短縮するために、書き込みマスクまたはＷＭＳＫコマンド（１バイトあたり１ビットなど）は、書き込みバースト内の場所への値がいつ格納されるかに応じて、データを伴う必要があるだけである。このような最適化はシリアルインタフェース効率にとって決定的なものとなり得るが、このスキームを用いてパラレルメモリインタフェースでの帯域幅の要件を減らすことが可能である。シリアルインタフェースは、マルチホストメモリの実用性を改善するため、各ホストは、書き込みマスクをコマンドストリーム内におくことで、書き込みマスクを独立した転送に独立して使う機能を有する。データを伴うＷＭＳＫを含むことが待ち時間に頼る依存性を低減するために、バースト内の３種類の使用モデルを仮定し、ここに図示する。
【００６６】
図８Ａは、事前のメモリ内容８０２、コマンドストリーム８０４、事後のメモリ内容８０６を含む繰り返しパターンＷＭＳＫモデル８００の実施形態を示す。同図において、赤、緑、青のデータからなる矩形内の赤の値だけを変化させ、他の２色をマスクして、このＷＭＳＫを矩形内のすべてのＲＧＢ（赤、緑、青）データで繰り返すなど、ＷＭＳＫは転送ごとに繰り返される。図８Ｂは、事前のメモリ内容８５２、コマンドストリーム８５４、事後のメモリ内容８５６を含む最初と最後のＷＭＳＫモデル８５０の実施形態を示す。ここで、書き込みマスクは、転送の最初の部分だけに用いられる。たとえば、ネットワークパケットを奇数の転送境界（４バイト転送であれば第２バイト）で開始して、アクセス（整列）をパケット残りのデータ構造に合わせて最適化してもよい。最初のマスクが排出されたら、残りのパケットデータ全体をメモリに書き込む。転送を完了するために、新たなＷＭＳＫを挿入して最後の２バイトをトリムする。図８Ｃは、事前のメモリ内容８７６、コマンドストリーム８７８、事後のメモリ内容８８０を含むパターンＷＭＳＫモデル８７５を繰り返すために複数のシリアルインタフェースを用いる実施形態を示す。ここで、ＷＭＳＫは、転送サイズ内で１つのデータ構造を選択するシングル転送に用いられる。たとえば、３２ビットの整数のうち第２のバイトだけの書き込み。
【００６７】
モデル８００、８５０に関して、書き込みマスクを再利用するか、まれに使用する。たとえば、キャッシュ書き込みおよび大容量記憶転送などのいくつかのタイプの転送では、マスキングを必要としない。これらの場合、データのある書き込みマスクはほとんどの時間は使われないため、これを含むと非効率的である。単位転送と同じかそれ未満と小さい転送では、バースト転送の利益が得られないため、データ、コマンド、アドレス、書き込みマスクがいずれも指定される。このような短い転送は通常、バースト向けのメモリをこのタイプの頻繁な動作から救済する、キャッシュメモリに対して内部で発生する。
【００６８】
モデル８００、８５０での仮定に焦点を当てると、書き込みマスクはデータとともに含まれるが、バースト転送の利点が得られるのであれば、書き込みマスクをコマンドと束ねるのは不十分である。この点で、コマンドおよびデータから書き込みマスク転送を新たなコマンドとしてデカップリングすることを実現する。不可分転送（フレーム）からなる単一シリアルストリームでは、書き込みコマンドがそのアドレスとともに１フレームで発行され、データはフレームのシーケンスで計算されたメモリアドレスに流れ、書き込みマスクは個々のコマンドとして記述されて単位バーストに適用され、必要に応じて書き込みコマンドの後でデータ内に発行される。単位バーストは、単一書き込みマスクビットが適用されるビット数に、書き込みマスクコマンド内の書き込みマスクビットを掛けたものとして定義される。書き込みコマンドが発行されると、すべての以後のデータが書き込まれるなど、書き込みマスクがクリアされる。書き込みマスクコマンドが書き込みコマンドにすぐ続く場合、最初の単位バーストでの開始に該当する。
【００６９】
モデル８００に記述された繰り返しパターンを用いる場合、マスクがすべての単位バーストで繰り返される。転送内でパターンを変更する場合、別の書き込みマスクコマンドが発行され、以後のすべてのデータに新たな書き込みマスクが適用される。モデル８５０に記述された最初のパターンを用いる場合、第１の単位バースト後に書き込みマスクがクリアされる。追加のマスキングが必要な場合（最後の単位バーストなど）、次の単位バーストだけに適用される追加の書き込みマスクコマンドが発行され、その時点で書き込みマスクがクリアされる。
【００７０】
モデル８７５では、マスクは繰り返されるが、ＷＭＳＫコマンドが（異なるポートで）ＷＲコマンドと同時に生じるモデル８００のマルチポートバージョンを使用する。複数のシリアルインタフェースを用いる場合、さらに柔軟性の高いコマンドレイアウトを生成できる。２つのポートを一緒に使用する場合、たとえば、書き込みコマンドをひとつのポートで別のポートの第１の書き込みマスクと組み合わせ、帯域幅の利用率を改善することが可能である。
【００７１】
図９は、複数ポートを採用する複製チェックおよびコマンド解釈用のプロセスの実施形態を示す。プロセスポートはブロック９０２で開始され、処理ブロック９０４に複数ポートの第１のポートがある。データを有するデータストリームが、処理ブロック９０６で対応するＲｘによって第１のポートで受信される（続いてデコードされる）。処理ブロック９０６の「ポートｍ＋ｉ」という表現を参照すると、「ｍ」はバインディング群を示し、「ｉ」はバインディング群における数を示す。この実施形態では、ｉはゼロから開始するのに対し、単一ホストが採用されるため、ｍはゼロに等しい。判断ブロック９０８では、第１のポート（ポート０）にエラーがないかどうかチェックする。エラーが見つかると、プロセスはエラーを返すとともにブロック９４２で終了する。エラーが見つからなければ、プロセスは処理ブロック９１０ですべてのポートをチェックするまで次のポートのチェックを継続する。たとえば、判断ブロック９１２では、さらにポートが残っているか否かを判断する。残っている場合、プロセスは次のポートで処理ブロック９０６を継続する。残っていなければ、プロセスは処理ブロック９１４を継続する。
【００７２】
判断ブロック９１６では、複製がオンであるか否かを判断する。オンである場合、判断ブロック９１８で、現在のポートを判断し、結果に応じて、プロセスはエラーを返すとともにブロック９４２で終了するか、（複製がオンでなければ判断ブロック９１６に戻って）判断ブロック９２０を継続してポートがデータを有する否かを判断する。データが複製されていなければ、比較されることもない。データがあれば、判断ブロック９３６で書き込み動作が実施される。書き込みが進行中ではない場合、プロセスはエラーを返すとともにブロック９４２で終了する。書き込み動作実行中であれば、処理ブロック９３８ですべてのポートからデータがメモリに書き込まれ、ブロック９４０で正常復帰がなされる。
【００７３】
判断ブロック９２０に戻ると、ポートがデータを持たない場合、判断ブロック９２２でコマンド有効化がなされる。判断ブロック９２２では、たとえば、コマンドの一覧をチェックすることで、ポートコマンドが有効であるか否かを判断する。コマンドが有効ではない場合、プロセスはブロック９４２で終了する。コマンドが有効であるとわかると、判断ブロック９２４で、コマンドが順序どおりであるか否かを判断する（コマンドが正しい位置かどうかなど）。コマンドが順序どおりでない場合、ブロック９４２でエラーが返される。コマンドが順序どおりであるとわかると、コマンドは処理ブロック９２６で処理される。
【００７４】
判断ブロック９２８では、次のポートをチェックして、次のポート対でデータの複製があるか否かを調べる。データの複製は通常、一対のポートを必要とするため、処理ブロック９３０では次の２つのポートをチェックするようポートの数は２ずつ増える。判断ブロック９２８に戻ると、答えがイエスの場合、処理ブロック９３４で次の（単一）ポートが選択される。続いて、プロセスは判断ブロック９３２に進み、さらに他のポートが処理対象となっているか否かを判断する。なっている場合、プロセスは判断ブロック９１６で継続する。なっていなければ、ブロック９４０で正常復帰が発行される。
【００７５】
一実施形態では、ポートでデータを受信し、コマンドをポートで受信する。コマンドは、ここではブロック９２２、９２４、９２６で表す（図２Ａに示すような）コマンドインタープリタ２４８で処理され、一方で、ここではブロック９１６、９１８、９２０で表す（図２Ａに示すような）２つの三角形２５４で示す場所で複製チェックがなされる。
【００７６】
図１０は、実施形態コマンド複製モデル１００２、１００４、１００６を示す。一実施形態では、拡張エラー検出にコマンド複製を使用する。コマンドを２回送信し元のコマンドを複製コマンドと比較する。１つまたは２つのポートを使用する１００２、１００４場合、元のコマンド１００８、１０１２の直後に複製コマンド１０１０、１０１４がフレームに出現する。４つ以上のポートを使用する場合１００６、複製コマンド１０１６、１０１８が他のポートに出現する。
【００７７】
（１）バウンドポート状況では、複製を用いて未使用の帯域幅を埋めることができる；（２）コマンドの誤解釈によって、コマンドシーケンス決定違反（すでに起動されたバンクの起動または未起動バンク内での起動など）あるいは現在の転送とは関係ないメモリ場所の破損などの予想外の結果が生じることがある；かたや、コマンドが正しければ、間違ったデータは少なくとも現在の転送が制限される；（３）繰り返しのデータによって優位な結果が得られるが、コマンドに利用できるフリースペースがデータストリームには利用できないため、有効システム帯域幅が半分になるといった理由から、コマンドが特に選択される。
【００７８】
コマンド複製モデル１００２、１００４、１００６は、単一ポート１００２およびバウンドポート１００４、１００６と複製との組み合わせを示す。また、複製と複数コマンドがどのようにして一緒に働くのかについても示す。たとえば、最大２つの異なるコマンドが１フレーム時間で転送される。
【００７９】
単一ポートモデル１００２では、コマンドが単独で発行され、コマンド１００８の後にその複製１０１０が続く。２ポートモデル１００４の場合、複製コマンド１０１４が同一のフレーム時間で送られる。しかしながら、複製がオフになると、２つのコマンドでフレーム時間を埋めることができる。４つ以上のポートモデル１００６では、２つ（またはそれより多く）のコマンド１０２０、１０２２で１つのフレーム時間を埋めることができ、２つのコマンド１０２０、１０２２がともに同一のフレーム時間内で複製コマンド１０１６、１０１８に複製可能である。同時送信されるコマンド数にも、群内のポート数の粒度にも必要な制約はない。
【００８０】
使用モデル１００２、１００４、１００６次第では、日和見的なコマンドの実行が許容可能なことがある。これは、場合によっては待ち時間を節約するが、エラーの可能性と、エラーに対処するためのコストが生じる可能性の点で不利になる。複製がすべて１フレーム時間内に得られるのであれば、エラーの結果をすぐに利用できる。
【００８１】
上記では、説明の目的で、本発明を十分に理解できるよう多数の具体的な詳細について記載した。しかしながら、これらの具体的な詳細のいくつかを除いて本発明を実施してもよいことは、当業者であれば自明であろう。他の例では、周知の構造およびデバイスがブロック図の形態で示される。図示のコンポーネント間に中間構造が存在することもある。本明細書で説明または図示したコンポーネントは、図示または説明されない追加の入力または出力を持つものであってもよい。
【００８２】
本発明のさまざまな実施形態が、さまざまなプロセスを含み得る。これらのプロセスは、ハードウェアコンポーネントで実施してもよいし、コンピュータプログラムまたは機械実行可能な指示の中で実現してもよく、これを用いて、プロセスを実施するための指示で汎用または専用のプロセッサまたは論理回路をプログラムしてもよい。あるいは、ハードウェアとソフトウェアの組み合わせでプロセスを実施してもよい。
【００８３】
マルチホスト増強機構の実施形態内またはこれと関連するものに図示したものなど、本明細書全体をとおして説明した１つ以上のモジュール、コンポーネントまたは要素は、ハードウェア、ソフトウェアおよび／またはこれらの組み合わせを含むものであってもよい。モジュールがソフトウェアを含む場合、機械／電子デバイス／ハードウェアによって製品を介してソフトウェアデータ、指示および／または構成を提供してもよい。製品は、指示、データなどを提供するためのコンテンツを有する、機械アクセス可能／読み出し可能な媒体を含むものであってもよい。このコンテンツは、電子デバイス、たとえば、ここに記載のさまざまな動作または実行をする本明細書に記載したようなファイラ、ディスクまたはディスクコントローラにつながるものであってもよい。
【００８４】
本発明のさまざまな実施形態の一部分を、コンピュータプログラム指示が格納されたコンピュータ読み出し可能な媒体を含み得るコンピュータプログラム製品として提供してもよく、これを用いてコンピュータ（または他の電子デバイス）をプログラムし、本発明の実施形態によるプロセスを実行させてもよい。機械読み出し可能な媒体としては、フロッピー（登録商標）ディスク、光ディスク、ＣＤＲＯＭ、光磁気ディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気または光カード、フラッシュメモリあるいは、電子指示を格納するのに適した他のタイプの媒体／機械読み出し可能な媒体があげられるが、これに限定されるものではない。さらに、本発明は、コンピュータプログラム製品としてダウンロードされるものであってもよく、このプログラムはリモートコンピュータから要求側コンピュータに転送されてもよい。
【００８５】
方法の多くをその最も基本的な形態で記載してあるが、本発明の基本的な範囲から逸脱することなく、この方法に対してプロセスを追加または削除しても構わないし、ここに記載のメッセージのいずれかに対して情報を加えたり引いたりしてもよい。さらに多くの改変および適応化をなし得ることは、当業者であれば自明であろう。特定の実施形態は本発明を限定するための提供されるものではなく、これを例示するためのものである。本発明の実施形態の範囲は、上記にて取り上げた具体例によってではなく、以下の特許請求の範囲によってのみ判断される。
【００８６】
要素「Ａ」が要素「Ｂ」と連結される、またはこれに連結されると言う場合、要素Ａを要素Ｂと直接連結してもよいし、たとえば、要素Ｃを介して間接的に連結してもよい。明細書または特許請求の範囲で、コンポーネント、特徴、構造、プロセスまたは特性Ａが、コンポーネント、特徴、構造、プロセスまたは特性Ｂを「引き起こす」と表現する場合、これは「Ａ」が「Ｂ」の少なくとも一因ではあるが、「Ｂ」を引き起こす一助となる少なくとも１つの他のコンポーネント、特徴、構造、プロセスまたは特性があり得ることを意味する。明細書に、コンポーネント、特徴、構造、プロセスまたは特性が含まれ「てもよい」、「るかもしれない」または「得る」とする場合、この特定のコンポーネント、特徴、構造、プロセスまたは特性は、必ずしも含まれているとはかぎらない。明細書または特許請求の範囲で「一（ａ）」または「一（ａｎ）」要素という場合、これは表記の要素が１つしかないことを意味するわけではない。
【００８７】
実施形態は、本発明の実施または一例である。明細書での「実施形態」「一実施形態」「いくつかの実施形態」または「他の実施形態」という言い回しは、実施形態に関して説明した特定の特徴、構造または特性が、少なくともいくつかの実施形態には含まれるが、かならずしもすべての実施形態に含まれるとはかぎらないことを意味する。「実施形態」、「一実施形態」または「いくつかの実施形態」としてさまざまな形で出てくるが、すべてが同一の実施形態を示しているとはかぎらない。本発明の例示としての実施形態に関する上記の説明では、開示を簡略化し、さまざまな発明性のある態様の１つ以上を理解する上での一助とするために、いくつかの特徴を一緒にして単一の実施形態、図または説明にまとめた部分もある点は理解されたい。しかしながら、この開示方法は、特許請求の範囲に記載の発明が各請求項に明示的に記載した以上の特徴を必要とするという意図を反映したものとしてはみなされない。そうではなく、以下の請求項に反映されるように、発明性のある態様が上記にて開示した単一の実施形態のいくつかに含まれる。よって、これらの請求項を本説明に明示的に援用し、各項をそのままで本発明の別個の実施形態として有効とする。
【図１】
0005635521.tif 000002
【図２Ａ】
0005635521.tif 000003
【図２Ｂ】
0005635521.tif 000004
【図２Ｃ】
0005635521.tif 000005
【図２Ｄ】
0005635521.tif 000006
【図２Ｅ】
0005635521.tif 000007
【図２Ｆ】
0005635521.tif 000008
【図２Ｇ】
0005635521.tif 000009
【図２Ｈ】
0005635521.tif 000010
【図２Ｉ】
0005635521.tif 000011
【図２Ｊ】
0005635521.tif 000012
【図２Ｋ】
0005635521.tif 000013
【図２Ｌ】
0005635521.tif 000014
【図３】
0005635521.tif 000015
【図４】
0005635521.tif 000016
【図５】
0005635521.tif 000017
【図６】
0005635521.tif 000018
【図７Ａ】
0005635521.tif 000019
【図７Ｂ】
0005635521.tif 000020
【図７Ｃ】
0005635521.tif 000021
【図７Ｄ】
0005635521.tif 000022
【図８Ａ】
0005635521.tif 000023
【図８Ｂ】
0005635521.tif 000024
【図８Ｃ】
0005635521.tif 000025
【図９】
0005635521.tif 000026
【図１０】
0005635521.tif 000027