(57)【要約】多バイトバーストメモリ装置（１０２）のメモリ制御器（１０４）は、クライアント（１０６）がセットアップしたパラメータに基づいて、メモリに対するアクセスを制御する。これらのパラメータは、バイトアドレス、及びクライアントがメモリに要求しているバイトの数を示すバイト数を含んでいればよい。これらの値及びバーストアクセスされたワード内のバイトの数を示す整数を操作して、バーストアクセスされたワード内の有効バイトを特定するのに利用できるワードを生成することができる。
2004514965.tif 000002
【特許請求の範囲】
【請求項１】
バーストメモリからアクセスされたｍバイトのワード内の有効バイトを決定する方法であって、
複数のアクセスパラメータを受信し、次いで
上記ｍバイトのワード内の少なくとも一つの有効バイトに対応する少なくとも一つの有効ビットを含むｍビットイネーブルワードを、上記アクセスパラメータ及びｍの値から生成する、ことを含む方法。
【請求項２】
クライアントに、メモリに対して要求させるステップをさらに含んでなり、前記アクセスパラメータに、
最初のアドレス、及び
メモリに対する前記クライアントの要求内のバイトの数を示すバイト数の値、が含まれている請求項１に記載の方法。
【請求項３】
ｍビットのイネーブルワードを生成するステップが、
前記最初のアドレスの一部を切り捨ててｎビットのワードを生成し、
前記ｎビットのワード、前記バイト数の値及び前記ｍの値から、イネーブル値を生成し、
前記イネーブル値と前記ｍの値から、ｍビットのシフト前イネーブルワードを生成し、次いで
前記ｍビットのシフト前イネーブルワード内のビットを、前記ｎビットのワードの値だけシフトする、
ことを含む請求項２に記載の方法。
【請求項４】
前記ｎの値が、前記ｍの値の２を底とする対数から１をマイナスした値に等しく、そして前記ｎビットのワードが、前記最初のアドレス内の最小有効ビット乃至ｎ位のビットの複数のビットを含んでいる請求項３に記載の方法。
【請求項５】
前記バイト数の値と前記イネーブル値に応答して、メモリに対するアクセスが、そのアクセスを起こしたクライアントの要求を満たしているかどうかを決定することをさらに含む請求項３に記載の方法。
【請求項６】
前記最初のアドレス及び前記イネーブル値から、メモリに次のアクセスを行うための第二アドレスを生成することをさらに含む請求項３に記載の方法。
【請求項７】
前記ｍの値が３２である請求項１に記載の方法。
【請求項８】
クライアント装置からの複数のアクセスパラメータ及びメモリ装置からのバーストワード内のバイトの数を示すアクセスバイト値を受信するデータ入力、並びに
前記複数のアクセスパラメータ及び前記アクセスバイト値に応答して、上記バーストワード内の少なくとも一つの有効バイトを決定するイネーブル回路、
を含むメモリ制御器。
【請求項９】
前記複数のアクセスパラメータが、
最初のアドレス、及び
メモリに対するクライアントの要求内のバイトの数を示すバイト数値、
を含む請求項８に記載のメモリ制御器。
【請求項１０】
前記バーストワード内の少なくとも一つの有効バイトに対応する少なくとも一つの有効ビットを含むイネーブルワードを生成するイネーブルワードジェネレータをさらに含む請求項９に記載のメモリ制御器。
【請求項１１】
前記バーストワードがｍバイトのワードを含み、そして前記イネーブルワードがｍビットのワードを含む請求項１０に記載のメモリ制御器。
【請求項１２】
各々に関連付けられたアドレスを有する複数のメモリ要素を含むメモリ装置、
クライアント装置、
前記メモリ装置と前記クライアント装置の間でデータを送るバス、及び
前記バス上で、前記メモリ装置内のｍバイトのバーストワードに対するクライアント装置によるアクセスを制御するメモリ制御器であって、前記クライアント装置から複数のアクセスパラメータを受信し、そして同複数のアクセスパラメータ及びｍの値に応答して、前記ｍバイトのワード内の少なくとも一つの有効バイトを決定する作動を行うメモリ制御器、
を備えてなるシステム。
【請求項１３】
前記メモリ制御器が、前記バーストワード内の少なくとも一つの前記有効バイトに対応する少なくとも一つの有効ビットを含むイネーブルワードを生成するイネーブルワードジェネレータを備えている請求項１２に記載のシステム。
【請求項１４】
前記メモリ制御器がメモリに対するクライアントの要求を受信する作動を行い、そして前記複数のパラメータが
最初のアドレス、及び
メモリに対する前記クライアントの要求内のバイトの数を示すバイト数の値、を含む請求項１２に記載のシステム。
【請求項１５】
前記メモリ制御器が、前記複数のアクセスパラメータに対する次のアクセスを行うための第二アドレスを決定する作動を行う請求項１４に記載のシステム。
【請求項１６】
前記クライアントが前記第二アドレスを記憶する作動を行う請求項１５に記載のシステム。
【請求項１７】
前記メモリ装置がバーストメモリ装置である請求項１２に記載のシステム。
【請求項１８】
前記メモリ制御器が、前記アクセスがクライアントの要求を満たすのに必要な最終アクセスであるかどうかを決定する作動を行う請求項１２に記載のシステム。
【請求項１９】
前記バスが読み取りバス及び書き込みバスを含んでいる請求項１２に記載のシステム。
【請求項２０】
バーストメモリからアクセスされたｍバイトのワード内の有効バイトを決定するための、機械可読媒体上にある命令を含む装置であって、その命令が、機械に、
複数のアクセスパラメータを受信させ、次いで
前記アクセスパラメータ及び前記ｍの値から、ｍビットのイネーブルワードを生成させ、そしてそのｍビットのイネーブルワードが、前記ｍバイトのワード内の少なくとも一つの有効バイトに対応する少なくとも一つの有効ビットを含んでいる装置。
【請求項２１】
前記アクセスパラメータが、
最初のアドレス、及び
メモリに対するクライアントの要求内のバイトの数を示すバイト数値、
を含んでいる請求項２０に記載の装置。
【請求項２２】
前記ｍビットのイネーブルワードを生成させる命令が、機械に、
前記最初のアドレスの一部分を切り捨ててｎビットのワードを生成させ、
前記ｎビットのワード、前記バイト数値及び前記ｍの値からイネーブル値を生成させ、
前記イネーブル値及び前記ｍの値から、ｍビットのシフト前イネーブルワードを生成させ、次いで
前記ｍビットのシフト前イネーブルワード内のビットを、前記ｎビットのワードの値だけシフトさせる、
命令を含んでいる請求項２１に記載の装置。
【請求項２３】
前記ｎの値が、前記ｍの値の２を底とする対数値から１をマイナスした値に等しく、そして前記ｎビットワードが、前記最初のアドレス内の最小有効ビット乃至ｎ位置のビットの複数のビットを含む請求項２２に記載の装置。
【請求項２４】
機械に、
メモリに対するアクセスが、前記のバイト数値とイネーブル値に応答して、クライアントの要求を満たすかどうかを決定させる、
命令をさらに含む請求項２２に記載の装置。
【請求項２５】
機械に、
メモリに対して次のアクセスを行うための第二アクセスを、前記の最初のアドレスと前記イネーブル値から生成させる、命令をさらに含んでいる請求項２２に記載の装置。
【請求項２６】
前記ｍの値が３２である請求項２０に記載の装置。
【発明の詳細な説明】
【０００１】
技術分野
本発明は、データプロセッサに関し、さらに詳しく述べるとバーストメモリアクセスをサポートするデータプロセッサに関する。
【０００２】
背景
コンピュータシステムにおいて、中央処理装置（ＣＰＵ）は、データ要素を集合的に記憶するメモリセル群の固有の位置を示すアドレスを指定することによってメモリをアクセスすることができる。上記ＣＰＵは、アドレスバスにアドレス指定しそして１又は２以上の制御信号を提供して、そのアドレスが有効であり、且つ、バスサイクルが始まったという信号を送ることによって、バスサイクルを開始することができる。その場合、読み取り／書き込み制御信号が、そのアクセスは読み取りアクセスなのか又は書き込みアクセスなのかを示す。その後、データ要素は、バスサイクルが読み取りサイクルであればデータバスから読み取られ、又はバスサイクルが書き込みサイクルであればデータバスに提供される。
【０００３】
メモリに対する初期アクセスを実行する際には、いくつものオペレーションがなされる。これらのオペレーションは、初期アクセスを比較的遅くする場合がある。上記のように、特定の信号を設定して上記プロセスを始めることができる。次にそのアドレスを前記メモリに送る。これらステップを行った後、データ自体が転送される。このオペレーションのオーバーヘッドとレイテンシのため、メモリに対する初期アクセスは比較的長い時間がかかり、例えば多くの装置の場合４〜７のクロックサイクルを要する。
【０００４】
メモリのレイテンシを減らすため、いくつかのメモリ装置は、各アクセス毎に、メモリから四つの６４ビットワード（２５６ビットすなわち３２バイト）からなるブロックを連続的に読み取る。この「バーストアクセスモード（ｂｕｒｓｔ ａｃｃｅｓｓ ｍｏｄｅ）」又は「バースティング（ｂｕｒｓｔｉｎｇ）」の利点は、連続した三つのアクセスに対して初期アクセスのオーバーヘッドを繰り返すことを避けていることである。その連続したアクセスは、４〜７クロックサイクルの代わりに１〜３クロックサイクルまで短くすることができる。
【０００５】
バースティングをサポートするメモリ装置は、バイトでアドレス指定できない。特定のバイトアドレスにおけるメモリ位置にアクセスする代わりに、上記メモリ装置は、データ要素の多バイトブロックを引き出すことができる。データのブロック内のデータ要素のいくつかは、前記要求に対して有効でないことがある。したがって、バーストアクセスがなされたワード内の有効なデータ要素を決定する方法を提供することは有効である。
【０００６】
要約
一実施態様によれば、多バイトバーストメモリ装置のメモリコントローラは、クライアントがセットアップするパラメータに基づいて、メモリに対するアクセスを制御することができる。これらパラメータとしては、バイトのアドレス、及びクライアントがメモリに要求しているバイトの数を示すバイト数がある。これらの値及びバーストアクセスされたワード内のバイトの数を示す整数ｍは演算されて、バーストアクセスされたワード内の有効バイトを特定するのに使用できるワードをつくることができる。
【０００７】
一実施態様によれば、前記メモリ制御器は、バーストアクセスされたワード内の有効バイトに対応する有効ビットを含むｍ−ビットのバイトイネーブルワード（ｍ−ｂｉｔ， ｂｙｔｅｓ−ｅｎａｂｌｅ ｗｏｒｄ）を生成することができる。バイトアドレスの一部を切り捨ててｎ−ビットワードをつくることができ、そしてイネーブル値（ｅｎａｂｌｅ ｖａｌｕｅ）が、前記ｎ−ビットワード、前記バイト数及び前記ｍの値から計算できる。シフト前バイトイネーブルワード（ｐｒｅ−ｓｈｉｆｔｅｄ ｂｙｔｅｓ ｅｎａｂｌｅ ｗｏｒｄ）を、前記のイネーブル値と前記ｍの値から生成することができる。バイトイネーブルワードは、前記シフト前バイトイネーブルワード内のビットを、前記ｎビットのワードの値だけシフトさせることによって生成することができる。
【０００８】
１又は２以上の実施態様の詳細を、添付図面と下記説明で述べる。１又は２以上の実施態様の他の特徴、目的及び利点は、下記説明と図面から及び諸請求項から明らかになるであろう。
【０００９】
詳細な説明
図１は多バイトバーストメモリ装置１０２を含むシステム１００を例示している。メモリ制御器１０４は、読み取り／書き込みバス１０８上で、クライアント１０６によるメモリ装置１０２からの読み取りオペレーション及びメモリ装置１０２への書き込みオペレーションを制御することができる。
【００１０】
各クライアント１０６は、アクセスを開始するときにパラメータをセットアップすることができる。メモリ制御器１０４は、これらのパラメータに基づいて、各クライアントの要求をいつ処理すべきかを決定することができる。これらパラメータは、バイト数及び開始バイトアドレス（ｓｔａｒｔｉｎｇ ｂｙｔｅ ａｄｄｒｅｓｓ）を含んでいてもよい。バイト数とは、クライアント１０６がアクセスすることを望んでいるメモリ装置１０２内のバイトの数を意味する。開始バイトアドレスとは、アクセスが始まるメモリ内のバイトアドレスを意味する。メモリ装置１０２はバイトでアドレス指定することができないので、メモリ装置１０２へのアクセスは多バイトバーストで実行される。これらのバイトは、間にあるバイトをスキップすることなく、線形的に増大する順にアクセスすることができる。
【００１１】
開始バイトアドレスは、最初、メモリ装置１０２の「細分性」のレベルすなわちメモリ装置１０２に対するバーストアクセスの精細さに一致するために必要なビットの数だけ切り捨てすることができる。その切り捨てられた開始バイトアドレスは、クライアント１０６が要求するデータ要素内の第一バイトを含む多バイトワードにアクセスするために使用できる「ワードアドレス」を形成することができる。その切り捨てられたビットは一時的に保存され、最初のアクセスからのどのバイトが有効であるかを決定するのに使用することができる。メモリ装置１０２からアクセスされる最初の多バイトバーストワードは、たった一つの又は２以上の有効バイト、さらに全ワードまで（の有効バイト）を含んでいてもよい。そのワードアドレスは、各アクセスが終わるごとに一つずつ増やすことができる。
【００１２】
上記バイト数は、バイトアドレスと数学的に組み合わせて「イネーブル値」を計算することができる。そのイネーブル値は、アクセスされる有効バイトの数を表す。そのイネーブル値を使用して、各アクセスの後、バイト数を減少させ、アクセスされた最後のバイトアドレスを計算し、クライアントの要求を満たすためにアクセスすべき次のアドレスを計算し、そして拡張し次いで書き込みバイトもしくは読み取りバイトに対するバイトイネーブル（ｂｙｔｅ ｅｎａｂｌｅ）及びパリティ検査イネーブルとして使用できるワードを形成することができる。
【００１３】
図２Ａと２Ｂに、多バイトバーストでアクセスされたワード中の有効バイトを決定するオペレーション２００が記載されている。そのアクセスされたワードはｍバイトである（但し、ｍ＝２ｎでｎはある整数である。）。オペレーション２００の説明の中で、整数ｍは「アクセスバイト値」も意味する。
【００１４】
以下の説明は、オペレーション２００の実行の一実施態様である。他の実施態様では、状態（ｓｔａｔｅ）をスキップしたり又は異なる順序で実行することができる。
【００１５】
クライアント１０６は、状態２０２において、バイトアドレス及びバイト数のパラメータをメモリ制御器１０４に書き込むことができる。状態２０４において、そのバイト数は、バイトアドレスの切り捨てられた部分に加えられて結果を生成する。バイトアドレスの切り捨てられた部分はバイトアドレスのビット０〜ｘを含んでいる（但しｘはアクセスバイト値の２を底とする対数値マイナス１に等しい）。その結果が、状態２０６において、前記アクセスバイト値以下であると決定されたならば、イネーブル値は、状態２０８において、バイト数に設定される。結果がそうでなければ、イネーブル値は、状態２１０において、アクセスバイト値マイナスバイトアドレスの値と決定できる。状態２１２において、新しいバイト数が、バイト数マイナスイネーブル値の値と決定できる。この新しいバイト数がゼロに等しい場合、状態２１６において、最後のパケット値が真値に設定される。この新しいバイト数がゼロ値でない場合、前記最後のパケット値は、状態２１８において偽値に設定される。前記最後のパケット値を使用して、クライアントが、メモリデバイス１０２に要求したすべてのバイトにアクセスしたかどうか又はその要求を満たすため別のバーストアクセスが必要なのかどうかを決定できる。
【００１６】
図２Ｂに進んで、クライアントの要求を満たすために必要な次のアクセスに対するアドレス、すなわち「次のバイトアドレス」は、状態２２０において、バイトアドレスをイネーブル値に加えることによって決定することができる。状態２２２において、値ｊはアクセスバイト値マイナス１に設定される。そのｊ値は、ｍ−ビットのシフト前バイトイネーブルワード（ｍ−ｂｉｔ ｐｒｅ−ｓｈｉｆｔｅｄ ｂｙｔｅｓ ｅｎａｂｌｅ ｗｏｒｄ）が構築されるループオペレーションに対するカウンターとして使用される整数である。上記シフト前バイトイネーブルワードは、下記のバイトイネーブルワードのプリカーサーであり、バーストアクセスされたワード内の有効バイトを確認するために使用できる。
【００１７】
上記イネーブル値が、状態２２４において、ｊ以下であると決定されると、シフト前バイトのイネーブルワード内のビットが、状態２２６においてゼロに設定される。そのビットは、ポジションｙにあり、そしてｙはアクセスバイト値マイナスｊマイナス１に等しい。そうでなければ、ビットｙは、状態２２８において１に設定される。上記ｊ値は、状態２３０において、１だけ減らされる。
【００１８】
ｊが、状態２３２でゼロ以下であると判定されると、オペレーション２００が状態２２４に戻って、ｍ−ビットのシフト前バイトイネーブルドワードを構築し続ける。
【００１９】
ｊが、状態２３２でゼロより大きくないと判定されると、オペレーション２００はループを通って下がり、ｍビットバイトイネーブルドワードの値を決定する。バイトイネーブルワード内の各ビットは、バーストアクセスされたワード内のバイトに対応している。状態２３４において、前記バイトイネーブルドワードの値は、ｚビットだけシフトされたビットを有するシフト前バイトイネーブルドワードの値に設定される（ｚは状態２０４で特定したバイトアドレスワードの切り捨てられた部分の値である。）。
【００２０】
また、オペレーション２００は、下記実施例を参照することによって理解することができる。
【００２１】
実施例１
この実施例では、バイトアドレスが８であり、バイト数が４２であり、そしてアクセスバイト値が３２であり、すなわちバーストアクセスされたワードは３２バイトの幅である。バイトアドレスとバイト数の合計は状態２０４で計算される。ｌｏｇ２（３２）は５であるので、状態２０４で使用されるバイトアドレスの切り捨てられた部分は、バイトアドレスの五つの最小有効ビットを含んでいる。すなわち、
2004514965.tif 000003
したがって、計算された結果は５０である。この結果はアクセスバイト値３２より大きいので、イネーブル値は、状態２１０において、２４と決定される（アクセスバイト３２マイナスバイトアドレス８）。
【００２２】
次に、新しいバイト数が、状態２１４において、１７（バイトカウント４１マイナスイネーブル値２４）に設定される。この値はゼロでないので、最後のパケット値は、状態２１８において、偽値に設定され、これが、最後のバーストアクセスすなわちクライアント１０６の要求を満たすアクセスでないことを示している。
【００２３】
次のバイトアドレスは、状態２２０において、３２（バイトアドレス８プラスイネーブル値２４）に設定される。ｊ値は、状態３２２において３１に設定される。ｊ、つまり３１はイネーブル値２４より大きいので、状態２２６へ分岐される。シフト前バイトイネーブルドワード内の第一ビットが、状態２２６で下記のように計算される。
バイト＿イネーブルド＿プレ＿シフト［３２−１−３１］＝
バイト＿イネーブルド＿プレ＿シフト［０］＝０
このように、ｍ−ビットのシフト前バイトイネーブルワード内のビット［０］がゼロに設定される。ｊの値は状態２３０で減らされて、ループが状態２３２で続く。ｊの値［３１］から［２４］に対して状態２２６へ分岐され、シフト前バイトイネーブルドワード内のビット［０］−［７］をゼロに設定する。ｊ＝［２３］の場合、そのイネーブル値がｊより大きいので、状態２２８に分岐される。そのループが続き、シフト前バイトのイネーブルドワード内のビット［８］−［３１］を１に設定する。この段階で、そのシフト前バイトのイネーブルドワードの値は［１１１１１１１１１１１１１１１１１１１１１１１１００００００００］である。
【００２４】
上記シフト前バイトイネーブルワードが構築されたとき、ｊ値は状態２３０において負の値に設定されて、オペレーション２００は前記ループを通って、状態２３４に下がる。前記バイトイネーブルドワードは、ｚビットだけシフトされた、シフト前バイトイネーブルドワードに設定される。なお、そのｚは、前記バイトアドレスの切り捨てられた部分の値である。この実施例では次のとおりである。
バイト＿アドレス［ｌｏｇ２ａｂ−１：０］＝
バイト＿アドレス［４：０］　　　　　　　＝
０１０００２　　　　　　　　　　　　　＝８１０
【００２５】
したがってこれらの値は８ビットシフトされて以下のようになる。
プレ＿シフト＿バイト＿イネーブルド＝１１１１１１１１１１１１１１１１１１１１１１１１００００００００
バイト＿イネーブルド　　　　　　　＝００００００００１１１１１１１１１１１１１１１１１１１１１１１１
【００２６】
この実施例では、バーストアクセスドワード内のバイト［０］−［２３］は有効バイトとして取り扱うことができ、そしてバイト［２４］−［３１］は無効バイトとして取り扱うことができる。クライアント１０６は、バーストアクセスされたワード内の有効バイトだけをアクセスすることができる。
【００２７】
オペレーション２００は、特定セットのアクセスパラメータに対してクライアント１０６が最初のアクセスと最後の（最終）アクセスを行うのに最も有用である。というのは間にあるアクセスはすべての有効バイトを含んでいるからである。また、このオペレーション２００を使用すると、各記憶位置に、良好なデータとパリティを書き込むことによって、メモリ装置１０２を初期化する必要はない。なぜならば、メモリ制御器１０４は、クライアント１０６が要求したバイトのパリティしかチェックしないからである。
【００２８】
メモリ制御器１０４は、クライアント１０６に次のバイトアドレスを提供できる。一実施態様では、クライアントは、このアドレスを記憶し、全く新しいオペレーションを、新しいアクセスパラメータで始め、その後、その保存されたアドレス情報を利用して別のオペレーションを開始する。クライアント１０６は、次に、その前の読み取りオペレーション又は書き込みオペレーションをそのオペレーションを終了したところにおいて正確に再開することができる。
【００２９】
本発明のいくつもの実施態様を説明してきた。しかし、本発明の精神と範囲から逸脱することなく各種の変形を実施することができるものである。したがって、他の実施態様は本願の請求項の範囲内にある。
【図面の簡単な説明】
【図１】一実施態様の多バイトバーストメモリ装置を含むシステムのブロック図である。
【図２Ａ】一実施態様の、多バイトバーストアクセスされたワード内の有効バイトを確立するオペレーションを記載するフローチャートを示す。
【図２Ｂ】一実施態様の、多バイトバーストアクセスされたワード内の有効バイトを確立するオペレーションを記載するフローチャートを示す。
【図１】
2004514965.tif 000004
【図２Ａ】
2004514965.tif 000005
【図２Ｂ】
2004514965.tif 000006
【国際公開パンフレット】
2004514965.tif 000007
2004514965.tif 000008
2004514965.tif 000009
2004514965.tif 000010
2004514965.tif 000011
2004514965.tif 000012
2004514965.tif 000013
2004514965.tif 000014
2004514965.tif 000015
2004514965.tif 000016
2004514965.tif 000017
2004514965.tif 000018
2004514965.tif 000019
2004514965.tif 000020
2004514965.tif 000021
2004514965.tif 000022
2004514965.tif 000023
【国際調査報告】
2004514965.tif 000024