(57)【特許請求の範囲】
【請求項１】
処理ユニットであって、
予め定められた命令セットを実行するように構成される実行コアと、
前記実行コアに結合されるバスコントロールユニットとを含み、
前記バスコントロールユニットは、アドレス信号、バイトイネーブル信号、およびメモリ制御ユニットを制御する少なくとも１つの制御信号を発生させるように構成され、
前記バスコントロールユニットは、誤整列バイトサポート信号を受け、
前記アドレス信号は、前記誤整列バイトサポート信号がディアサートされると倍長語アドレスを特定し、かつ前記アドレス信号は、前記誤整列バイトサポート信号がアサートされるとバイトアドレスを特定し、
前記バスコントロールユニットは、前記誤整列バイトサポート信号がアサートされると誤整列倍長語アドレスへの１サイクルのアクセスを実行するように構成され、
前記バスコントロールユニットは、前記誤整列バイトサポート信号がディアサートされると、誤整列倍長語アドレスへの２サイクルのアクセスを実行するように構成され、
前記バイトイネーブル信号は、前記アドレス信号と関連する選択された数のバイトのうちのどれがイネーブルされるかを示し、
前記バイトイネーブル信号は、指定されたメモリサイクルの間に転送されるべき有効なバイトの数を示す、処理ユニット。
【請求項２】
倍長語は４バイトのデータを含む、請求項１に記載の処理ユニット。
【請求項３】
前記制御信号は読出／書込制御信号である、請求項１に記載の処理ユニット。
【請求項４】
前記指定されたメモリサイクルの間に転送される有効なバイトの前記数は前記バイトイネーブル信号に依存する、請求項１に記載の処理ユニット。
【請求項５】
処理ユニット内にメモリアクセスサイクルを発生させる方法であって、
要求されたメモリ転送のバイトアドレスを決定するステップと、
前記メモリ転送に関わるバイトの数を決定するステップと、
誤整列バイトサポート信号を検出するステップとを含み、さらに
前記誤整列バイトサポート信号がディアサートされれば、誤整列倍長語アドレスへの２サイクルのアクセスを実行し、または
前記誤整列バイトサポート信号がアサートされれば、誤整列倍長語アドレスへの１サイクルのアクセスを実行するステップとを含み、
前記誤整列倍長語アドレスへの２サイクルのアクセスを実行する前記ステップは、
第１の倍長語アドレスをローカルバスで与えてアクセスされるべき第１の倍長語を示すステップと、
前記第１のサイクルの間にアクセスされるべき前記第１の倍長語のバイトを示すバイトイネーブル信号を与えるステップと、
アクセスされるべき第２の倍長語を示す第２の倍長語アドレスを与えるステップと、
第２の値で前記バイトイネーブル信号を駆動して前記第２の倍長語のバイトを示すステップとを含む、方法。
【発明の詳細な説明】
【０００１】
【発明の分野】
この発明は、コンピュータシステムに関し、より特定的には、コンピュータシステム内で用いられるメモリアドレッシング機構および技術に関する。
【０００２】
【関連技術の説明】
特に一般的なモデル８０４８６マイクロプロセッサに基づくコンピュータシステムは、バイトごとにメモリアクセスを可能にする。８０４８６に基づくシステム内では、１バイトのデータは８ビットを含む。モデル８０４８６のデータバスは、３２ビットの幅を有するので、一度に合計４バイトのデータを転送することが可能である。データバスに同時に転送可能な４バイトのデータの所与の組合せは、「倍長語」と呼ばれる。マイクロプロセッサからの１組のアドレス信号は、特定のバスサイクルの間に参照されている倍長語を選択するために用いられ、４バイトのイネーブル信号は、そのサイクルの間に有効であるアドレス指定された倍長語の特定のバイトを示すために与えられる。
【０００３】
図１は、典型的なモデル８０４８６に基づくコンピュータシステム１００の部分のブロック図を図示する。図１のコンピュータシステム１００は、マイクロプロセッサ（ＣＰＵ）１０４およびシステムメモリ１０６に結合されたメモリ制御器１０２を含む。マイクロプロセッサ１０４は、予め定められた命令セットを実現する実行コア１１０と、ＬＡ［３１：２］と表記されるローカルバスアドレス信号およびバイトイネーブル信号ＢＥ［３：０］の発生を制御するバスコントロールユニット１１２とを含む。
【０００４】
システムメモリ１０６は、スタティックＲＡＭまたはダイナミックＲＡＭメモリサブシステムを例示する。メモリ制御ユニット１０２は、マイクロプロセッサ１０４とシステムメモリ１０６との間のデータ、アドレス、および制御信号の転送を統制する。
【０００５】
内部的には、マイクロプロセッサ１０４の実行コア１１０は、メモリアクセスサイクルの間にバイトごとのメモリ位置を特定するアドレス信号Ａ［３１：０］を発生する。実行コア１１０は、１バイトのメモリバスサイクル、２バイトのメモリバスサイクル、または４バイトのメモリバスサイクルを発生することができるので、実行コア１１０は、さらに所与のサイクルの実行の間にアクセスされるべきバイトの数を示す、ＭＥＭＳＩＺＥ［１：０］と表記されるメモリサイズ信号も発生する。内部メモリアクセスサイクルに応答して、バスコントロールユニット１１２は、ローカルバスアドレス信号ＬＡ［３１：２］の発生を制御し、アクセスされている特定の倍長語を特定する。バスコントロールユニット１１２はさらに、２つの下位アドレス信号Ａ［１：０］およびＭＥＭＳＩＺＥ［１：０］信号をデコードし、適切なバイトイネーブル信号ＢＥ［３：０］を発生する。バイトイネーブル信号ＢＥ［３：０］は、特定のメモリサイクルの間にイネーブルされる、特定のアドレス指定された倍長語内のバイトを特定する。メモリ制御ユニット１０２はこれに対応して、オペレーションの間にローカルバスアドレス信号ＬＡ［３１：２］およびバイトイネーブル信号ＢＥ［３：０］を監視し、メモリバスに適切なアドレス制御信号を発生し、システムメモリ１０６をアクセスする。
【０００６】
図１のコンピュータシステムでは、「誤整列メモリアクセス」をもたらす、実行コア１１０による内部メモリ参照の発生は、コントロールユニット１１２による２つの外部メモリサイクルを必要とする。誤整列メモリアクセスが存在するのは、特定のシステムのメモリマッピングにより規定されるように、異なる連続的な倍長語の選択されたバイトの転送を必要とする実行コア１１０によりメモリサイクルが発生された場合である。２つの外部メモリサイクルが、誤整列メモリアドレスに関する命令を実行するのに必要とされるのは、バスコントロールユニット１１２により発生されるアドレス信号ＬＡ［３１：２］が、一度に１倍長語しか特定できず、バイトイネーブル信号が、アドレス指定された倍長語の特定のバイトを特定するからである。たとえば、実行コア１１０が、バイトアドレス位置００３：Ｈ（すなわちＡ［３１：０］＝００３：Ｈ）から始まる４バイトのデータを書込む命令を受取った場合を考えてみる。図２は、そのようなサイクルの実行の間にバスコントロールユニット１１２により発生される外部ローカルバスサイクルを図示する。図３は、システムメモリ１０６内の倍長語の明らかな区切りを（各々の構成バイトとともに）図示する例示的なメモリマップである。各倍長語がローカルバスアドレス信号ＬＡ［３１：２］に従って区切られることが注目される。すなわち、ローカルバスアドレス信号ＬＡ［３１：２］は、システムメモリ１０６の特定の倍長語位置を特定する。図３のメモリマップの各行は、別個の倍長語位置を表わし、各倍長語の別個のバイトを表わす４つのセクションに分けられる。各バイト位置が、内部アドレス信号Ａ［３１：０］により間接的に特定されるが、ローカルバスアドレス信号ＬＡ［３１：２］により個別に特定されることができない（すなわち、倍長語ＬＡ［３１：２］＝０００：Ｈのバイト３がバイトアドレス位置Ａ［３１：０］＝００３：Ｈに対応する）ことが注目される。
【０００７】
図２および図３に図示されるように、アドレス位置Ａ［３１：０］＝００３：Ｈから始まる４バイトのデータ（バイト「Ａ」、「Ｂ」、「Ｃ」および「Ｄ」と表記される）の書込に関する要求されたオペレーションを行なうために、バスコントロールユニット１１２は、第１のバスサイクル２０２の間に００１：Ｈの値でローカルバスアドレス信号ＬＡ［３１：２］を駆動する。バスコントロールユニット１１２は、１０００：ｂの値でバイトイネーブル信号ＢＥ［３：０］を同時に駆動し、かつ適切な制御信号をアサートし、メモリ書込サイクルを行なう。バスコントロールユニット１１２は、３バイトのデータ（バイト「Ｂ」、バイト「Ｃ」、およびバイト「Ｄ」）がデータ線Ｄ［２３：０］で適切に駆動されることをさらに引き起こす。それによりデータは、アドレス指定された倍長語の３つの下位バイト位置（すなわちＬＡ［３１：２］＝００１：Ｈ）に書込まれる。その後のバスサイクル２０４の間に、バスコントロールユニット１１２は、０００：Ｈの値でローカルバスアドレス線ＬＡ［３１：２］を駆動し、０１１１：ｂの値でバイトイネーブル信号ＢＥ［３：０］を同時に駆動する。このサイクル時、バイトＡは、バスコントロールユニット１１２によりデータ線［２４：３１］で駆動され、かつ倍長語の最上位バイト位置ＬＡ［３１：２］＝０００：Ｈに書込まれる。こうして図３に図示されるように、倍長語アドレス位置の３つの下位バイト００１：Ｈは、第１のメモリサイクルの間に有効データで書込まれ、倍長語アドレス位置の最上位バイト０００：Ｈは、第２のメモリサイクルの間に有効データで書込まれる。その結果、４バイトのデータ「Ａ」、「Ｂ」、「Ｃ」、および「Ｄ」は、バイトアドレス位置Ａ［３１：０］＝００３Ｈから始まり、システムメモリ１０６に最後には書込まれる。
【０００８】
不幸にも、誤整列バイト境界へのメモリアクセスが起こるときに２つのメモリサイクルを実行する要件は、命令を完了するのに必要な時間を増大し、かつローカルバスの帯域幅を減少する。その結果、コンピュータシステムの全性能が劣化するかもしれない。
【０００９】
【発明の概要】
上で概略を述べた問題は、この発明に従うプログラマブルバイト整列機構を有するプロセッサにより、大部分は解決される。１つの実施例では、バイトごとのデータを特定するアドレス信号を発生し、かつアドレス指定されたバイトに対しイネーブルされたバイトを特定する１組のバイトイネーブル信号をさらに発生する処理ユニットが与えられる。バイトイネーブル信号およびアドレス信号の両方は、メモリ制御ユニットに与えられる。それにより処理ユニットは、可変な数のイネーブルされたバイトをなおも特定しながら、誤整列メモリアドレスへの１つのメモリアクセスを発生し得る。処理ユニットに与えられる制御入力は、処理ユニットのバスコントロールユニットが、誤整列アドレスへの１サイクルのメモリアクセスまたは誤整列アドレスへの２サイクルのメモリアクセスを発生するかどうかを制御する。スタティックＲＡＭへのメモリアクセスについては、メモリ制御ユニットは、処理ユニットが誤整列アドレスへの２サイクルのアクセスを発生するように、制御信号をディアサートし得る。一方ダイナミックＲＡＭへのメモリアクセスについては、メモリ制御ユニットは、ページ境界に出会わない限り、処理ユニットが誤整列アドレスへの１サイクルのアクセスを発生するように、制御信号をアサートし得る。処理ユニットは有利には、誤整列アドレスへの１サイクルのアクセスを可能にし、それによりシステムの性能を向上し、かつ既存のメモリシステムとの広い互換性をさらにサポートする。
【００１０】
概して、この発明は、予め定められた命令セットを実行することができる実行コアと、実行コアに結合されたバスコントロールユニットとを含む処理ユニットを企図し、バスコントロールユニットは、アドレス信号、バイトイネーブル信号、およびメモリ制御ユニットを制御する少なくとも１つの制御信号を発生することができる。コントロールユニットは、誤整列バイトサポート信号を受け、アドレス信号は、誤整列バイトサポート信号がディアサートされると倍長語アドレスを特定し、かつアドレス信号は、誤整列バイトサポート信号がアサートされるとバイトアドレスを特定する。バスコントロールユニットはさらに、誤整列バイトサポート信号がアサートされると、誤整列倍長語アドレスへの１サイクルのアクセスを実行することができる。
【００１１】
この発明は、予め定められた命令セットを実行することができる実行コアと、実行コアに結合されたバスコントロールユニットとを含む処理ユニットをさらに企図する。バスコントロールユニットは、アドレス信号、バイトイネーブル信号、およびメモリ制御ユニットを制御する少なくとも１つの制御信号を発生することができる。アドレス信号の値は、個別のバイト位置を選択的に識別し、バイトイネーブル信号は、指定されたメモリサイクルの間にイネーブルされる個別のバイト位置に対し有効なバイトの数を示す。
【００１２】
この発明は最後には、要求されたメモリ転送のバイトアドレスを決定するステップと、メモリ転送に関するバイトの数を決定するステップと、誤整列バイトサポート信号を検出するステップとを含む、処理ユニット内にメモリアクセスサイクルを発生する方法を企図する。この方法は、誤整列バイトサポート信号がディアサートされると、誤整列倍長語アドレスへの２サイクルのアクセスを実行するステップをさらに含み、誤整列バイトサポート信号がアサートされると、誤整列倍長語アドレスへの１サイクルのアクセスを実行するステップをさらに含む。
【００１３】
この発明の他の目的および利点は、以下の詳細な説明を読みかつ添付の図面を参照すると明らかになるであろう。
【００１４】
この発明には様々な変形例および代替の形態が可能であるが、その特定の実施例を一例として図面に示しかつここに詳細に説明する。しかしながら、その図面および詳細な説明は、この発明を開示される特定の形態に限定することを意図せず、それどころかその意図するところは、前掲の特許請求の範囲により規定されるこの発明の精神および範囲内にあるすべての変形例、均等物および代替例をカバーすることであると理解されるべきである。
【００１５】
【詳細な説明】
次に図４を参照すると、この発明に従うプログラマブルバイト整列機構を有する処理ユニット４０２を含むコンピュータシステム４００のブロック図が示される。図４に図示されるように、メモリ制御ユニット４０４は、処理ユニット４０２およびシステムメモリ４０６に結合される。処理ユニット４０２は、バスコントロールユニット４１４に結合された実行コア４１０を含む。実行コア４１０は、たとえばモデル８０４８６マイクロプロセッサのコアを例示する。しかしながら、代替の実行コアが与えられ得ることが理解される。
【００１６】
図４の実施例では、処理ユニット４０２は、線４３０の「誤整列バイトサポート」信号と表記される制御信号によって、２つの異なる動作モードで動作するように構成される。誤整列バイトサポート信号がハイにディアサートされれば、バスコントロールユニット４１４は、従来のモデル８０４８６のバスコントロールユニットに従って動作する。バスコントロールユニット４１４自体は、先に述べた従来のプロトコルに従って、ローカルバスアドレス信号ＬＡ［３１：０］、バイトイネーブル信号ＢＥ［３：０］、および制御信号を駆動することにより、誤整列メモリアドレスへのメモリアクセスを別個のメモリサイクルに分析する。これらの別個のメモリサイクルの間に、アドレス信号の２つの下位ビットＬＡ［１：０］は、ローに駆動され、かつメモリ制御ユニット４０４により本質的に無視される。こうして、この動作モードでは、ローカルバスアドレス信号ＬＡ［３１：０］は、倍長語位置を特定することだけができ、一方バイトイネーブル信号ＢＥ［３：０］は、有効である、アドレス指定された倍長語の特定のバイトを特定する。したがって、誤整列メモリアドレスへのメモリアクセスを達成するために、１対の連続的な倍長語アドレスは、別個のメモリサイクルの間にローカルバスのアドレス線上で駆動されなければならない。
【００１７】
線４３０の誤整列バイトサポート信号がローにアサートされると、バスコントロールユニット４１４は、上で述べたように、誤整列アドレスに対して、２つの別個のサイクルを発生するのではなく、１つのメモリサイクルを発生する。この動作モードの間に、バスコントロールユニット４１４は、アクセスされるべき最下位バイトを示す値でローカルバスアドレス信号ＬＡ［３１：０］の２つの下位アドレスビットを駆動する。バイトイネーブル信号ＢＥ［３：０］は、ＬＡ［３１：０］により特定されるバイトに対し有効であるバイトを示すように、さらに駆動される。
【００１８】
たとえば図５を参照すると、実行コア４１０が、命令に出会い、例示的なアドレスＡ［３１：０］＝００３：Ｈから始まる４バイトのデータ（バイト「Ａ」、「Ｂ」、「Ｃ」、および「Ｄ」）を書込む状況のタイミング図が図示される。図６は、コンピュータシステム４００の別々にアドレス指定可能なバイト位置を図示するメモリマップである。バスコントロールユニット４１４は、００３：Ｈの値でアドレス信号ＬＡ［３１：０］を駆動することにより、サイクルを実行する。これは、転送されるべき倍長語と転送されるべき開始バイトのデータとを示す。バイトイネーブル信号ＢＥ［３：０］は、００００：ｂの値でさらに駆動される。これは、アドレス指定されたバイトから始まる４バイトの連続的なデータが転送に関わることを示す。このデータ（すなわちバイト「Ａ」、「Ｂ」、「Ｃ」、および「Ｄ」）は、次に、バスコントロールユニット４１４によりデータ線Ｄ［３１：０］で同時に駆動され、サイクルを完了する。このデータは、メモリ制御ユニット４０４内にラッチされ、これは対応して、システムメモリ４０６のアドレス線およびバイトイネーブル線を駆動し、要求された転送を完了する。
【００１９】
こうしてアドレス信号ＬＡ［３１：０］は、単なる倍長語だけとは対照的に、コンピュータシステム４００のアドレス指定可能なメモリ内の特定のバイトを指す。バイトイネーブル信号は、アドレス指定されたバイトに対し特定の転送に関わる特定のバイトを示す。誤整列バイトサポート信号のアサーションは、誤整列倍長語アドレスへの１サイクルのアクセスを可能にし、こうして、ローカルバスの帯域幅をより高くし、かつシステムの性能を対応して向上する。
【００２０】
誤整列バイトサポート信号は、外部ソースからコンピュータシステム４００に与えられ得る。その代わり、メモリ制御ユニット４０４は、システムメモリ４０６内に含まれるメモリの型によって、誤整列バイトサポート信号のアサーションを制御するように構成され得る。たとえば、システムメモリ４０６がダイナミックランダムアクセスメモリからなれば、メモリ制御ユニット４０４は、誤整列アドレスへの１サイクルのアクセスがバスコントロールユニット４１４により行なわれるように、誤整列バイトサポート信号をアサートするように、構成され得る。メモリ制御ユニット４０４が、特定のサイクルの実行の間に新しいＤＲＡＭページが開かれなければならないときに２サイクルのアクセスが行なわれるように、ページ境界アドレスの誤整列バイトサポート信号をディアサートするように、さらに構成され得ることが注目される。システムメモリ４０６がスタティックランダムアクセスメモリからなれば、メモリ制御ユニット４０４は、誤整列アドレスへの２サイクルのアクセスがバスコントロールユニット４１４により行なわれるように、誤整列バイトサポート信号をディアサートするように、構成され得るか、または、誤整列バイトサポート信号をアサートするように、かつローカルバスからの１サイクルのアクセスをシステムメモリバスへの２サイクルのアクセスに分析するように、構成され得る。
【００２１】
上で述べたコンピュータシステムは、同時係属中の、同一の譲受人に譲渡された、１９９４年１２月９日出願のマクドナルド（MacDonald ）他による「コンピュータシステム、メモリコントローラ、およびメモリコントローラを動作するための方法（“Non-Volatile Memory Array Controller Capable of Controlling Memory Banks Having Variable Bit Widths ”）」と題された特願平６−３０６１９０と、１９９４年１２月９日出願のマクドナルド他による「不揮発性メモリチップイネーブル符号化方法、コンピュータシステム、およびメモリコントローラ（“ROM Chip Enable Encoding Method and Computer System Employing the Same”）」と題された特願平６−３０６１８９に開示されるメモリ制御技術をさらに用いることができる。上記の特許出願の全体を引用によりここに援用する。
【００２２】
上述の開示が十分に理解されると、当業者には多数の変更例および変形例が明らかになるであろう。たとえば、システムメモリ４０６がいかなる型のアドレス指定可能なメモリまたはＩ／Ｏ装置からなってもよいことが注目される。前掲の特許請求の範囲が、そのような変更例および変形例をすべて含むと解釈されることが意図される。
【図面の簡単な説明】
【図１】典型的なモデル８０４８６に基づくコンピュータシステムの部分のブロック図である。
【図２】誤整列メモリアドレスへの命令の実行の間に、図１のマイクロプロセッサにより発生される外部バスサイクルを図示する信号図である。
【図３】誤整列メモリアドレスへの命令の実行の間の有効データの書込を図示するメモリマップの図である。
【図４】この発明に従うプログラマブルバイト整列機構を有する処理ユニットを含むコンピュータシステムのブロック図である。
【図５】誤整列メモリアドレスへの命令の実行の間に、図４の処理ユニットにより発生される外部バスサイクルを図示する信号図である。
【図６】図５に図示されるサイクルの間の有効データの書込を図示するメモリマップの図である。
【符号の説明】
４０２  処理ユニット
４０４  メモリ制御ユニット
４１０  実行コア
４１４  バスコントロールユニット
【図１】
0003701045.tif 000002
【図２】
0003701045.tif 000003
【図３】
0003701045.tif 000004
【図４】
0003701045.tif 000005
【図５】
0003701045.tif 000006
【図６】
0003701045.tif 000007