(57)【特許請求の範囲】
【請求項１】
第１の処理装置（２０２）と、
複数の記憶回路（２０４）と、
上記第１の処理装置（２０２）を上記複数の記憶回路（２０４）の各々に連結するデータバス（データ）とを備えるコンピュータデバイスであって、
上記複数の記憶回路（２０４）の少なくとも第１の記憶回路は、１つ以上の更なる処理装置（２０６）を備え、
上記複数の記憶回路（２０４）の各々は、ｍビット幅であるデータポートを有し、
上記データバスは、ｎビットの幅を有し（ｎはｍより大きい）、
上記複数の記憶回路（２０４）の各々の上記データポートは、上記データバスの対応するｍビットスライスに連結され、
上記第１の処理装置（２０２）は、上記データバスを介して読み取られる又は書き込まれるｎビットデータ値に１つ以上の第１のアドレスを供給するように構成されており、
上記第１の処理装置及び／又は更なる回路（２０８）は、
上記第１の記憶回路における複数のｍビットメモリ位置に対応する複数の第２のアドレスであって、そのうちの少なくとも２つの第２のアドレスが連続アドレスである複数の第２のアドレスに、上記第１のアドレスを変換することによって、および
複数のメモリアクセス動作にわたって上記第１の記憶回路に対して上記ｎビットデータ値の読み取り動作又は書き込み動作を行うことによって、
上記ｎビットデータ値を、上記第１の記憶回路（２０４）から読み取る又は上記第１の記憶回路（２０４）に書き込むように構成される、コンピュータデバイス。
【請求項２】
上記更なる処理装置（２０６）の各々は、上記第１の処理装置によって供給されたコマンドに基づいて、上記第１の記憶回路（２０４）によって記憶されたデータ処理動作を行うように構成された１つ以上のプロセッサを備える、請求項１に記載のコンピュータデバイス。
【請求項３】
上記データバスの上記幅ｎは、各記憶回路の上記データポートの上記幅ｍの倍数ｐであり、
ｐ個の記憶回路が存在する、請求項１又は２に記載のコンピュータデバイス。
【請求項４】
上記１つ以上の第１のアドレスの最上位ビット（ＭＳＢ）のうちの１つ以上が、上記第１の記憶回路を指定する上記複数の第２のアドレスの１つ以上の最下位ビット（ＬＳＢ）になるように、上記アドレス変換がアドレス置換を含む、請求項１〜３のいずれか１項に記載のコンピュータデバイス。
【請求項５】
上記１つ以上の第１のアドレスは、上記第１の処理装置のアドレス空間（ＨＧＡＳ）におけるアドレスであり、
上記複数の第２のアドレスは、上記１つ以上の更なる処理装置の局所アドレス空間（ＤＬＡＳ）におけるアドレスであり、
上記局所アドレス空間は、線形、又はセグメントごとに線形である、請求項１〜４のいずれか１項に記載のコンピュータデバイス。
【請求項６】
データキャッシュ（１０００）と、
上記データキャッシュ（１０００）の１つ以上のライン（Ｌ０、Ｌ１、Ｌ２）に対してキャッシュライン置換を行うように構成されたデータ置換回路（１００１、１１１６）とをさらに備え、
上記データキャッシュ（１０００）は、複数のキャッシュラインを備え、
上記複数のキャッシュラインの各々が複数のデータワードを記憶し、
各データワードは、複数のバイトのデータを有し、
上記キャッシュライン置換は、上記第１の記憶回路に関連する上記キャッシュの記憶位置に、上記複数のデータワードのうちの第１のデータワードを形成する上記バイトを記憶する、請求項１〜５のいずれか１項に記載のコンピュータデバイス。
【請求項７】
上記データキャッシュ（１０００）は、データバスを介して上記複数の記憶回路（２０４）に連結され、
上記データ置換回路は、上記データバスと上記データキャッシュ（１０００）との間に連結されたバイト転置回路（１１１６）であって、上記キャッシュに記憶された又は上記キャッシュからロードされた各データ値の上記キャッシュライン置換を行うように構成されている、請求項６に記載のコンピュータデバイス。
【請求項８】
上記第１の処理装置及び／又は更なる回路（２０８）は、上記１つ以上の第１のアドレスが上記更なる処理装置（２０６）のうちの１つ以上に関連するアドレスセグメント内にあるか否かを判断するように、および上記１つ以上の第１のアドレスが上記アドレスセグメント内にある場合に上記アドレス変換を行うように構成される、請求項１〜７のいずれか１項に記載のコンピュータデバイス。
【請求項９】
上記第１のアドレスの複数の最下位ビットが、上記複数の第２のアドレスのうちの１つの複数の最下位ビットに等しい、請求項１〜８のいずれか１項に記載のコンピュータデバイス。
【請求項１０】
ｍビットより大きいコマンドレジスタが、上記第１の記憶回路のアドレス空間にマップされ、
上記コマンドレジスタは、少なくとも１つの制御ビットを有し、
上記第１の処理装置（２０２）は、複数のメモリアクセス動作にわたって上記コマンドレジスタへの書き込み動作を行うように構成され、
上記コマンドレジスタのバイトが、上記複数のメモリアクセス動作のうちの最後のメモリアクセス動作によって書き込まれる上記制御ビットを有し、上記制御ビットの変更を伴う、請求項１〜９のいずれか１項に記載のコンピュータデバイス。
【請求項１１】
上記第１の記憶回路（２０４、８００）は、メモリアレイ（８０２）と上記１つ以上の更なる処理装置（ＤＰＵ０、ＤＰＵ１）とを統合する集積回路チップである、請求項１〜１０のいずれか１項に記載のコンピュータデバイス。
【請求項１２】
上記第１の記憶回路（２０４、８００）は、メモリアレイを備える第１の集積回路チップと、上記１つ以上の更なる処理装置（ＤＰＵ０、ＤＰＵ１）を備える更なる集積回路チップとを備える、請求項１〜１０のいずれか１項に記載のコンピュータデバイス。
【請求項１３】
上記第１の記憶回路（２０４、８００）は、複数の更なる処理装置（ＤＰＵ０、ＤＰＵ１）を備え、当該複数の更なる処理装置（ＤＰＵ０、ＤＰＵ１）の各々は、上記メモリアレイの対応するアドレス空間に関連する、請求項１１又は１２に記載のコンピュータデバイス。
【請求項１４】
上記第１の処理装置（２０２）は、１つ以上のＥＣＣビットを各ｍビット値に挿入するように構成された１つ以上の誤り訂正符号（ＥＣＣ）回路を備える、請求項１〜１３のいずれか１項に記載のコンピュータデバイス。
【請求項１５】
上記第１の処理装置（２０２）は、更なるメモリアクセス動作中に、上記第１の記憶回路（２０４）に記憶される複数のＥＣＣビットを作成するように構成された１つ以上の誤り訂正符号（ＥＣＣ）回路を備える、請求項１〜１４のいずれか１項に記載のコンピュータデバイス。
【請求項１６】
第１の処理装置（２０２）を複数の記憶回路の各々に連結するデータバス（データ）を介して、上記複数の記憶回路の第１の記憶回路（２０４）にｎビットデータ値を書き込む書き込み動作、又は上記第１の記憶回路（２０４）から上記ｎビットデータ値を読み取る読み取り動作を、上記第１の処理装置（２０２）によって行う工程を含む方法であって、
上記第１の記憶回路は、１つ以上の更なる処理装置（２０６）を備え、
上記複数の記憶回路の各々は、ｍビット幅であるデータポートを有し、
上記データバスは、ｎビットの幅を有し（ｎはｍより大きい）、
上記複数の記憶回路（２０４）の各々の上記データポートは、上記データバスの対応するｍビットスライスに連結され、
上記読み取り動作又は上記書き込み動作は、
上記第１の処理装置（２０２）によって、１つ以上の第１のアドレスを、上記データバスを介して読み取られる又は書き込まれるｎビットデータ値に供給することと、
上記第１のアドレスを、上記第１の記憶回路における複数のｍビットメモリ位置に対応する複数の第２のアドレスであって、そのうちの少なくとも２つが連続アドレスである複数の第２のアドレスに変換することと、
複数のメモリアクセス動作にわたって、上記ｎビットデータ値の上記読み取り動作又は上記書き込み動作を上記第１の記憶回路に対して行うこととを含む、方法。
【請求項１７】
上記第１の処理装置によって、データキャッシュ（１０００）の１つ以上のライン（Ｌ０、Ｌ１，Ｌ２）対してキャッシュライン置換を行う工程をさらに含み、
上記データキャッシュ（１０００）は、複数のキャッシュラインを備え、
当該複数のキャッシュラインの各々が複数のデータワードを記憶し、
各データワードは、複数のバイトのデータを有し、
上記キャッシュライン置換は、上記第１の記憶回路に関連する上記キャッシュの記憶位置に、上記複数のデータワードのうちの第１のデータワードを形成する上記バイトを記憶する、請求項１６に記載の方法。
【請求項１８】
第１の処理装置（２０２）によって実行された場合、請求項１６又は１７の方法の実行に至るプログラム命令を記憶する電子記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、「インメモリ処理」の分野、特に、１つ以上のプロセッサと狭幅データバスとを備える複数の記憶回路を伴うコンピュータデバイス及び方法に関する。
【背景技術】
【０００２】
現代のコンピュータは、１つ以上のダイナミックランダムアクセスメモリ（ＤＲＡＭ）回路に連結された、システムオンチップ（ＳｏＣ）として実行されることが多い処理回路を通常備える。そのようなメモリは、周期的なリフレッシュ動作を通常必要とするが、高密度で比較的アクセス速度が速く、それゆえ大抵のコンピュータにおいてメインＲＡＭデータ記憶装置として用いられる。しかしながら、ＳｏＣ‐ＤＲＡＭ回路間を伝送されるデータが増加の一途をたどるため、そのようなデータ伝送によりコンピュータの動作が遅くなり、比較的多くのエネルギーが消費される傾向にある。
【０００３】
解決策として、ＳｏＣにおける複数のメインホストプロセッサに加えて、１つ以上のプロセッサが統合された複数のＤＲＡＭ回路を提供することが提案されている。当該解決策では、一定のデータ処理作業がＤＲＡＭプロセッサに委ねられることを可能にすることによって、ＤＲＡＭ回路‐ホストプロセッサ間のデータ伝送の程度を低減させ、その結果、ＤＲＡＭ回路‐ホストプロセッサ間のデータ伝送を避けながらこれらの処理作業を行うことができる。
【０００４】
メモリチップ内でデータプロセッサを用いる際には、各メモリチップがホストプロセッサの全バス幅を必ずしも参照しないという問題がある。実際、一般的には、各メモリチップがホストプロセッサデータバスのうちの対応するスライスに連結された一連のメモリチップを設ける。データバスのこのようなスライスの利点の例として、チップパッケージが比較的狭幅データポートを有することができ、ピンの数がより少なく、それゆえエネルギー消費が低減されるということが挙げられる。また、追加のバッファチップを用いる場合には、コスト、電力消費、及び待ち時間が増大し、動作周波数が減少し、それゆえ帯域幅が狭くなるが、狭幅データポートにより、バッファチップを追加することなく大容量のメモリシステムを構築することができる。しかしながら、各メモリチップの狭幅データポートゆえに、当該メモリチップのプロセッサは、ホストプロセッサの全幅にわたって供給されたデータを処理することができなくなる。
【０００５】
このように、狭幅データバスを備えるメモリチップにおいてインメモリ処理を可能にするシステムを提供するのに、従来技術には技術的な問題がある。
【発明の概要】
【０００６】
本開示の実施形態の目的は、従来技術における１つ以上の問題を少なくとも部分的に解決することである。
【０００７】
一態様によれば、第１の処理装置と、複数の記憶回路と、上記第１の処理装置を上記複数の記憶回路の各々に連結するデータバスとを備えるコンピュータデバイスであって、上記複数の記憶回路の少なくとも第１の記憶回路は、１つ以上の更なる処理装置を備え、上記複数の記憶回路の各々は、ｍビット幅であるデータポートを有し、上記データバスは、ｎビットの幅を有し（ｎはｍより大きい）、上記複数の記憶回路の各々の上記データポートは、上記データバスの対応するｍビットスライスに連結され、上記第１の処理装置は、上記データバスを介して読み取られる又は書き込まれるｎビットデータ値に１つ以上の第１のアドレスを供給するように構成されており、上記第１の処理装置及び／又は更なる回路は、上記第１の記憶回路における複数のｍビットメモリ位置に対応する複数の第２のアドレスであって、そのうちの少なくとも２つの第２のアドレスが連続アドレスである複数の第２のアドレスに、上記第１のアドレスを変換することによって、および複数のメモリアクセス動作にわたって上記第１の記憶回路に対して上記ｎビットデータ値の読み取り動作又は書き込み動作を行うことによって、上記ｎビットデータ値を、上記第１の記憶回路から読み取る又は上記第１の記憶回路に書き込むように構成される、コンピュータデバイスが提供される。
【０００８】
一実施形態によれば、上記更なる処理装置の各々は、上記第１の処理装置によって供給されたコマンドに基づいて、上記第１の記憶回路によって記憶されたデータ処理動作を行うように構成された１つ以上のプロセッサを備える。
【０００９】
一実施形態によれば、上記データバスの上記幅ｎは、各記憶回路の上記データポートの上記幅ｍの倍数ｐであり、ｐ個の記憶回路が存在する。
【００１０】
一実施形態によれば、上記１つ以上の第１のアドレスの最上位ビットのうちの１つ以上が、上記第１の記憶回路を指定する上記複数の第２のアドレスの１つ以上の最下位ビットになるように、上記アドレス変換がアドレス置換を含む。
【００１１】
一実施形態によれば、上記１つ以上の第１のアドレスは、上記第１の処理装置のアドレス空間におけるアドレスであり、上記複数の第２のアドレスは、上記１つ以上の更なる処理装置の局所アドレス空間におけるアドレスであり、上記局所アドレス空間は、線形、又はセグメントごとに線形である。
【００１２】
一実施形態によれば、上記コンピュータデバイスは、データキャッシュと、上記データキャッシュの１つ以上のラインに対してキャッシュライン置換を行うように構成されたデータ置換回路とをさらに備え、上記データキャッシュは、複数のキャッシュラインを備え、上記複数のキャッシュラインの各々が複数のデータワードを記憶し、各データワードは、複数のバイトのデータを有し、上記キャッシュライン置換は、上記第１の記憶回路に関連する上記キャッシュの記憶位置に、上記複数のデータワードのうちの第１のデータワードを形成する上記バイトを記憶する。
【００１３】
一実施形態によれば、上記データキャッシュは、データバスを介して上記複数の記憶回路に連結され、上記データ置換回路は、上記データバスと上記データキャッシュとの間に連結されたバイト転置回路であって、上記キャッシュに記憶された又は上記キャッシュからロードされた各データ値の上記キャッシュライン置換を行うように構成されている。
【００１４】
一実施形態によれば、上記第１の処理装置及び／又は更なる回路は、上記１つ以上の第１のアドレスが上記更なる処理装置のうちの１つ以上に関連するアドレスセグメント内にあるか否かを判断するように、および上記１つ以上の第１のアドレスが上記アドレスセグメント内にある場合に上記アドレス変換を行うように構成される。
【００１５】
一実施形態によれば、上記第１のアドレスの複数の最下位ビットが、上記複数の第２のアドレスのうちの１つの複数の最下位ビットに等しい。
【００１６】
一実施形態によれば、ｍビットより大きいコマンドレジスタが、上記第１の記憶回路のアドレス空間にマップされ、上記コマンドレジスタは、少なくとも１つの制御ビットを有し、上記第１の処理装置は、複数のメモリアクセス動作にわたって上記コマンドレジスタへの書き込み動作を行うように構成され、上記コマンドレジスタのバイトが、上記複数のメモリアクセス動作のうちの最後のメモリアクセス動作によって書き込まれる上記制御ビットを有し、上記制御ビットの変更を伴う。
【００１７】
一実施形態によれば、上記第１の記憶回路は、メモリアレイと上記１つ以上の更なる処理装置とを統合する集積回路チップである。
【００１８】
一実施形態によれば、上記第１の記憶回路は、メモリアレイを備える第１の集積回路チップと、上記１つ以上の更なる処理装置を備える更なる集積回路チップとを備える。
【００１９】
一実施形態によれば、上記第１の記憶回路は、複数の更なる処理装置を備え、当該複数の更なる処理装置の各々は、上記メモリアレイの対応するアドレス空間に関連する。
【００２０】
一実施形態によれば、上記第１の処理装置は、１つ以上のＥＣＣビットを各ｍビット値に挿入するように構成された１つ以上の誤り訂正符号（ＥＣＣ）回路を備える。
【００２１】
一実施形態によれば、上記第１の処理装置は、更なるメモリアクセス動作中に、上記第１の記憶回路に記憶される複数のＥＣＣビットを作成するように構成された１つ以上の誤り訂正符号（ＥＣＣ）回路を備える。
【００２２】
別の態様によれば、上記第１の処理装置を複数の記憶回路の各々に連結するデータバスを介して、上記複数の記憶回路の第１の記憶回路にｎビットデータ値を書き込む書き込み動作、又は上記第１の記憶回路から上記ｎビットデータ値を読み取る読み取り動作を、第１の処理装置によって行う工程を含む方法であって、上記第１の記憶回路は、１つ以上の更なる処理装置を備え、上記複数の記憶回路の各々は、ｍビット幅であるデータポートを有し、上記データバスは、ｎビットの幅を有し（ｎはｍより大きい）、上記複数の記憶回路の各々の上記データポートは、上記データバスの対応するｍビットスライスに連結され、上記読み取り動作又は上記書き込み動作は、上記第１の処理装置によって、１つ以上の第１のアドレスを、上記データバスを介して読み取られる又は書き込まれるｎビットデータ値に供給することと、上記第１のアドレスを、上記第１の記憶回路における複数のｍビットメモリ位置に対応する複数の第２のアドレスであって、そのうちの少なくとも２つが連続アドレスである複数の第２のアドレスに変換することと、複数のメモリアクセス動作にわたって、上記ｎビットデータ値の上記読み取り動作又は上記書き込み動作を上記第１の記憶回路に対して行うこととを含む、方法が提供される。
【００２３】
一実施形態によれば、上記方法は、上記第１の処理装置によって、データキャッシュの１つ以上のラインに対してキャッシュライン置換を行う工程をさらに含み、上記データキャッシュは、複数のキャッシュラインを備え、当該複数のキャッシュラインの各々が複数のデータワードを記憶し、各データワードは、複数のバイトのデータを有し、上記キャッシュライン置換は、上記第１の記憶回路に関連する上記キャッシュの記憶位置に、上記複数のデータワードのうちの第１のデータワードを形成する上記バイトを記憶する。
【００２４】
別の態様によれば、第１の処理装置によって実行された場合、上述の方法の実行に至るプログラム命令を記憶する電子記憶媒体が提供される。
【００２５】
別の態様によれば、ホストプロセッサが１つ又は数個のメモリチップに接続されたコンピュータシステムであって、上記メモリチップは、１つ又は数個のデータプロセッサを統合し、上記メモリチップと上記ホストプロセッサとの接続が、上記メモリチップのデータポートより広幅のデータバスによって行われ、上記メモリチップは、上記データバスの幅を適応させるようにデータ並列式に上記データバスに接続される、コンピュータシステムが提供される。
【００２６】
一実施形態によれば、線形の、又はセグメントごとに線形のアドレス空間が定義され、当該アドレス空間により、直線的に又はセグメントごとに直線的に各メモリチップのメモリにアクセスすることができる。
【００２７】
一実施形態によれば、当該新規のアドレス空間‐上記ホストプロセッサの元のアドレス空間間でのアドレス変換機能により、上記ホストプロセッサは当該新規のアドレス空間にアクセスすることができる。
【００２８】
一実施形態によれば、上記アドレス変換機能は、ハードウェアにおいて直接的に実行される。
【００２９】
一実施形態によれば、アドレス変換ハードウェア機能が構成可能であり、当該機能は構成可能なメモリセグメントに応じて変わる。
【００３０】
一実施形態によれば、上記新規のアドレス空間はそれ自体、複数のサブアドレス空間を有し、上記複数のサブアドレス空間は、上記メモリチップに統合された上記データプロセッサによって使用されることにより、アクセス可能なメモリへの線形の又はセグメントごとに線形のアクセスを上記データプロセッサが行うことを可能にする。
【００３１】
一実施形態によれば、上記複数のサブアドレス空間は、直線的に又はセグメントごとに直線的に上記新規のアドレス空間にマップされる。
【００３２】
一実施形態によれば、上記ホストプロセッサは、データキャッシュ、又はデータキャッシュとして同等に動作する汎用キャッシュを備え、上記ホストプロセッサがロード、記憶、又はメモリアクセス幅がメモリチップの上記データポートより広いメモリにアクセスする命令を用いる場合に、キャッシュライン置換が、上記アドレス変換機能を変更するために、および当該アドレスを後にセグメントごとの線形にするために行われ、それによって上記ホストプロセッサが、上記メモリチップに統合された上記データプロセッサにアクセス可能なメモリに正確にアクセスすることができる。
【００３３】
一実施形態によれば、上記キャッシュライン置換は、全てがソフトウェアによって行われる。
【００３４】
一実施形態によれば、上記キャッシュライン置換は、全てがハードウェアによって行われる。
【００３５】
一実施形態によれば、上記キャッシュライン置換は、部分的にソフトウェアによって行われ、部分的にハードウェアによって行われる。
【００３６】
一実施形態によれば、バーストデータパターンが上記キャッシュライン置換に元来一致し、当該バーストデータパターンは、キャッシュラインがメモリからロードされる又はメモリに記憶される際にキャッシュライン置換を常に行うことと同等である。
【００３７】
一実施形態によれば、数種のキャッシュライン置換が可能であり、構成手段により、アドレスセグメントと、アクセスがこれらのアドレスセグメントのうちの１つのアドレスセグメント内にある場合にどの種類のキャッシュライン置換が行われなければならないかと、を特定することができる。
【００３８】
一実施形態によれば、上記メモリチップは、上記メモリチップの上記データポートより広幅な１つ又は数個のコマンドレジスタを統合し、コマンドカラースキームが用いられ、コマンドカラーの変化が、関連する上記コマンドレジスタにおいて有効な新規のコマンドのために要求される。
【００３９】
一実施形態によれば、上記ホストプロセッサは、いくつかのプロセッサコアを有するシステムオンチップである。
【００４０】
一実施形態によれば、上記ホストプロセッサは、いくつかのメモリバスを備えるシステムオンチップである。
【００４１】
更なる実施形態によれば、マルチソケットサーバを構築するために、上記で定義されたシステムをいくつか備える大型のシステムであって、互いに接続され、且つ同一のキャッシュ干渉領域に属する、大型システムが提供される。
【００４２】
一実施形態によれば、バーストトランザクションおいて所定のメモリチップの各々から又は当該所定のメモリチップの各々へ伝送される非拡張データ全体をカバーするＥＣＣコードを当該バーストトランザクション全体において伝送することができるように、当該所定のメモリチップの各々が記憶容量及びデータポート幅の両方において拡張される。
【００４３】
一実施形態によれば、所定のメモリチップの各々が、ＥＣＣを記憶することができるように、記憶容量において拡張され、伝送されたＥＣＣコードが、バーストトランザクション中に当該所定のメモリチップの各々から又は当該所定のメモリチップの各々に伝送された非ＥＣＣデータの全体を保護するように、複数のバーストトランザクションが延長されて、これにより上記バーストトランザクション中に当該ＥＣＣコードを伝送することを可能にする。
【００４４】
一実施形態によれば、上記データプロセッサは、上記メモリチップに統合されず、上記ホストプロセッサと上記メモリチップとの間に配置された１つ又は数個の追加回路に統合される。
【００４５】
一実施形態によれば、アドレス変換及び／又は上記キャッシュライン置換は、部分的に又は全てが、上記ホストプロセッサと上記メモリチップとの間に配置された１つ又は数個の追加回路内で行われる。
【００４６】
一態様によれば、第１のプロセッサと、複数の記憶装置と、上記第１のプロセッサを上記複数の記憶装置の各々に連結するデータバスとを備えるコンピュータデバイスであって、上記複数の記憶装置の少なくとも第１の記憶装置は、１つ以上の更なるプロセッサを統合し、上記複数の記憶装置の各々は、ｍビット幅のデータポートを有し、上記データバスは、ｎビットの幅を有し（ｎはｍより大きい）、上記第１のプロセッサは、上記データバスを介して読み取られる又は書き込まれるｎビットデータ値に第１のアドレスを提供するように構成されており、上記第１のプロセッサ及び／又は更なる回路は、上記第１の記憶装置における複数のｍビットメモリ位置に対応する複数のアドレスであって、そのうちの少なくとも２つのアドレスが連続アドレスである複数のアドレスに、上記第１のアドレスを変換することによって、および複数のメモリアクセス動作にわたって上記第１の記憶装置に対して上記ｎビットデータ値の読み取り動作又は書き込み動作を行うことによって、上記ｎビットデータ値を、上記第１の記憶装置から読み取る又は上記第１の記憶装置に書き込むように構成される、コンピュータデバイスが提供される。
【図面の簡単な説明】
【００４７】
上述の特徴及び利点と他の特徴及び利点とは、例示的であり限定的ではない以下の添付図面を参照して、実施形態の以下の詳述から明らかになるだろう。
【図１】コンピュータデバイスの一例を概略的に示す。
【図２】本開示の実施形態例に係るコンピュータデバイスを概略的に示す。
【図３】一実施形態例に係る、図２の上記コンピュータデバイスにおける記憶アドレス空間を概略的に示す。
【図４】一実施形態例に係る、図３のホストプロセッサ記憶アドレス空間をより詳細に概略的に示す。
【図５】一実施形態例に係る、読み取り動作又は書き込み動作を行う方法における各動作を示すフローチャートである。
【図６】本開示の一実施例に係る、記憶回路におけるデータバイトの分布を概略的に示す。
【図７】本開示の一実施形態例に係る、複数のメモリランクを有するコンピュータデバイスを概略的に示す。
【図８】一実施形態例に係る記憶回路をより詳細に概略的に示す。
【図９】一実施形態例に係る、複数の仮想ランクを有する複数の記憶回路を概略的に示す。
【図１０Ａ】本開示の一実施形態例に係る、図２のホストプロセッサのデータキャッシュを概略的に示す。
【図１０Ｂ】一実施形態例に係る、図４のアドレス空間におけるキャッシュラインデータ記憶の例を概略的に示す。
【図１０Ｃ】一実施形態例に係る、動作中のキャッシュライン置換回路を概略的に示す。
【図１０Ｄ】一実施形態例に係る、動作中のキャッシュライン置換回路を概略的に示す。
【図１０Ｅ】一実施形態例に係る、動作中のキャッシュライン置換回路を概略的に示す。
【図１０Ｆ】一実施形態例に係る、動作中のキャッシュライン置換回路を概略的に示す。
【図１１】本開示の一実施形態例に係るコンピュータデバイスの回路を概略的に示す。
【図１２】一実施形態例に係る記憶回路における誤り訂正符号の横方向の記憶及び縦方向の記憶を概略的に示す。
【図１３】更なる一実施形態例に係る記憶回路における誤り訂正符号の横方向の記憶及び縦方向の記憶を概略的に示す。
【図１４】更なる一実施形態例に係る記憶回路をより詳細に概略的に示す。
【発明を実施するための形態】
【００４８】
本特許出願は、本開示の不可欠な部分として見なされるフランス特許出願ＦＲ１５／５９３２１及びＦＲ１６／５０１８６の優先権を主張する。
〔発明の詳細な説明〕
以下の記載全体において、本明細書で使われる以下の用語は、以下の定義を有すると考えられる。
【００４９】
メモリチップ：ダイナミックランダムアクセスメモリ（ＤＲＡＭ）アレイ又は他の種類のランダムアクセスメモリアレイ等のメモリアレイを備える集積回路
データ処理装置（ＤＰＵ）：メモリチップに統合された又はメモリチップに関連する１つ以上のプロセッサを備える処理装置
記憶回路：メモリチップを備える回路であり、当該メモリチップに統合された又は当該メモリチップに関連する１つ以上のデータ処理装置を備えてもよい回路
ホスト中央処理装置（ＨＣＰＵ）：データバスを介して記憶回路に対してデータを読み取り且つ書き込むように構成された１つ以上のプロセッサを備えるコンピュータデバイスのメイン処理装置
図１は、一実施形態例に係るコンピュータデバイス１００を概略的に示す。上記コンピュータデバイス１００は、例えば、本明細書においてホスト中央処理装置（ＨＣＰＵ）と呼ばれるメインプロセッサ１０２を備える。上記ＨＣＰＵ１０２は、例えば、複数の記憶回路１０４に連結される。図１の例においては、ＭｅｍＣ０〜ＭｅｍＣ７と示された８つの記憶回路がある。
【００５０】
上記複数の記憶回路１０４の各々は、例えば、上記ＨＣＰＵのデータバスの幅より狭いデータポートを有する。各データポートは、上記ＨＣＰＵ１０２の上記データバスの一部に連結される。一例において、上記データバスは６４ビット幅であり、上記複数の記憶回路１０４の各々は、上記データバスのうち対応する８ビットスライスに連結されたデータポートを有する。上述したように、上記ＨＣＰＵ１０２の上記データバスの上記幅より狭いデータポートを記憶回路に設ける利点は、データポートが狭いほど使用されるピンの数が少なくなり、チップ領域及び電力消費が節約されるということである。また、追加のバッファチップを用いる場合には、コスト、電力消費、及び待ち時間が増大し、動作周波数が減少し、それゆえ帯域幅が狭くなるが、狭幅データポートにより、バッファチップを追加することなく大容量のメモリシステムを構築することができる。
【００５１】
それゆえ、６４ビットのデータワードが上記複数の記憶回路に書き込まれる場合、各記憶回路１０４は、当該データワードの一部のみを記憶する。つまり、上記複数の記憶回路１０４のうちの１つ以上が、上記ＨＣＰＵ１０２に加えてデータ処理を行うデータ処理装置を備えるならば、当該データ処理装置は、メモリに記憶された各データワードの一部のみを参照し、それゆえいかなる重要な動作を行うことができなくなる。
【００５２】
一例として、簡単な計数機能を実行することができるように、処理装置が上記複数の記憶回路１０４の各々に統合されると仮定する。さらに、上記記憶回路ＭｅｍＣ０〜ＭｅｍＣ７が、アドレス０ｘ０４００００００（プリアンブル「０ｘ」は当該値が１６進法で表されるということを示す）から始まってマップされると仮定する。上記ＨＣＰＵ１０２は、上記アドレス０ｘ０４００００００にて上記複数の記憶回路１０４によって形成されるメインメモリにｃｏｕｎｔｅｒと呼ばれる６４ビットワードを書き込む。そして、上記ＨＣＰＵは、上記記憶回路ＭｅｍＣ０のＤＰＵが上記６４ビットワードｃｏｕｎｔｅｒをインクリメントすることによって計数機能を実行することを必要とする。しかしながら、当該ＤＰＵは、上記６４ビットワードの［７：０］部分のみを参照するため、所望の機能を実行することができない。同様に、他の記憶回路のＤＰＵも同じように６４ビットワードの一部のみを参照するため、所望の機能を実行することができない。
【００５３】
図１に示されるように、更なる記憶回路（ＭｅｍＣ  ＤＰＵ）１０６が、ＤＰＵを備え、上記ＨＣＰＵ１０２の上記データバスの上記幅と等しい幅のデータポートを有してもよい。上記記憶回路１０６は、上記ＨＣＰＵの上記データバスに提供された全ワードを記憶してもよい。それゆえ、当該回路の上記ＤＰＵは、上述の計数機能を含む動作を全データワードに対して行ってもよい。しかしながら、広幅なデータポートを考慮すると、上記記憶回路１０６は、多数のピンを用い、それにより上述した狭幅データポートに関連する利点を有さないことになる。
【００５４】
図２は、本開示の一実施形態例に係るコンピュータデバイス２００を概略的に示す。
【００５５】
上記コンピュータデバイス２００は、複数の記憶回路２０４に連結されたＨＣＰＵ２０２を備える。図２の例においては、ＭｅｍＣ０〜ＭｅｍＣ７として示された８つの記憶回路がある。上記複数の記憶回路２０４の各々は、ＤＰＵ２０６を備える。上記記憶回路ＭｅｍＣ０〜ＭｅｍＣ７のＤＰＵはそれぞれ、図２においてＤＰＵ０〜ＤＰＵ７として示されている。上記複数の記憶回路２０４の各々は、例えば、上記ＨＣＰＵ２０２のデータバスの対応するスライスを受け取る。一例において、上記ＨＣＰＵ２０２の上記データバスは、６４ビット幅であり、本明細書においては、以下、データ＿バス［６３：０］として表される。上記データバスのビットは、例えば、以下のように上記複数の記憶回路２０４間でスライスされる。
【００５６】
‐ＭｅｍＣ０のデータポートが、データ＿バス［７：０］に接続される。
【００５７】
‐ＭｅｍＣ１のデータポートが、データ＿バス［１５：８］に接続される。
【００５８】
‐ＭｅｍＣ２のデータポートが、データ＿バス［２３：１６］に接続される。
【００５９】
‐ＭｅｍＣ３のデータポートが、データ＿バス［３１：２４］に接続される。
【００６０】
‐ＭｅｍＣ４のデータポートが、データ＿バス［３９：３２］に接続される。
【００６１】
‐ＭｅｍＣ５のデータポートが、データ＿バス［４７：４０］に接続される。
【００６２】
‐ＭｅｍＣ６のデータポートが、データ＿バス［５５：４８］に接続される。
【００６３】
‐ＭｅｍＣ７のデータポートが、データ＿バス［６３：５６］に接続される。
【００６４】
アドレス変換機能（ＡＤＤＲ  ＣＯＮＶ）２０８が、例えば、上記ＨＣＰＵ２０２におけるハードウェア及び／又はソフトウェアによって、又は別の回路によって実行される。上記変換機能２０８は、データワードが上記複数の記憶回路の１つによって全て記憶されるように、ＨＣＰＵアドレス空間からのアドレスを、上記複数の記憶回路２０４によって用いられる物理全域アドレス空間（ＰＧＡＳ）における特定のアドレスに変換する。当該データワードは、上記の変換なしには上記ＨＣＰＵの上記データバスの幅にわたって存在し、各記憶回路２０４によって部分的に存在するものである。変換されたＰＧＡＳアドレスは、例えば、上記複数の記憶回路２０４の各々に連結されたアドレス及びコマンドバス２１０上で、適切な読み取り又は書き込み指令信号と共に上記複数の記憶回路２０４に供給される。以下、図３〜図６を参照して、上記アドレス変換機能２０８についてより詳細に記載する。
【００６５】
図３は、一実施形態例に係る上記アドレス変換機能２１０を概略的に示す。本例によれば、上記ＨＣＰＵ２０２によって参照され用いられるアドレス空間である、ＨＣＰＵ全域アドレス空間（ＨＧＡＳ）３０２が定義される。物理全域アドレス空間（ＰＧＡＳ）３０４が、物理メモリシステムに対してアドレス指定するために用いられる。
【００６６】
本明細書に記載の実施形態によれば、ＨＧＡＳ及びＰＧＡＳは、ＨＧＡＳアドレス空間における少なくともいくつかの範囲に対して異なって定義される。例えば、上記ＨＧＡＳ３０２は、ＤＰＵ全域アドレス空間である、図３に示されたサブアドレス空間３０６を有する。
【００６７】
ＨＧＡＳアドレスがＤＧＡＳ領域３０６外にある場合、対応するＰＧＡＳアドレスが当該ＨＧＡＳアドレスの値によって直接的に与えられる。言い換えれば、アドレス変換の必要がない。
【００６８】
しかしながら、ＨＧＡＳアドレスがＤＧＡＳ領域３０６内にある場合、ＰＧＡＳアドレスを作成するためにアドレス変換が行われる。例えば、当該ＰＧＡＳアドレスは、本明細書においてＤＧＡＳ２ＰＧＡＳと呼ばれる機能３０８によって作成される。
【００６９】
いくつかの実施形態において、上記ＨＧＡＳ３０２全体は、ＤＧＡＳ３０６に一致してもよい。つまり、上記複数の記憶回路のＤＰＵが上記複数の記憶回路２０４のアドレス空間全体にアクセスしてもよい。
【００７０】
図４を参照して以下に説明されるように、上記ＤＧＡＳ３０６は、各ＤＰＵに割り当てられ且つｉｒにアクセス可能なアドレス範囲を有する。
【００７１】
図４は、より詳細に上記ＨＣＰＵ全域アドレス空間３０２を概略的に示す。図４は、特に、上記ＤＧＡＳ３０６が、上記複数の記憶回路の上記ＤＰＵの各々のＤＰＵ局所アドレス空間（ＤＬＡＳ）に対応するメモリアドレスのゾーンＤＬＡＳ０〜ＤＬＡＳ７を有する場合を示す。各ＤＰＵの上記ＤＬＡＳは、例えば、線形の、又はセグメントごとに線形のアドレス空間である。つまり、これは、アドレスを１インクリメントすることで、記憶回路のアドレスの少なくとも一部に対する、同一の記憶回路における隣接メモリバイトにアクセスすることを意味する。これは、あるワードが複数の異なる記憶回路にわたって記憶される場合には該当しない。なぜならば、このような場合には、アドレスを１インクリメントすることにより別の記憶回路がアドレス指定されるからである。
【００７２】
図４は、８つの対応するＤＰＵを備えた８つの記憶回路が存在する図２の例に対応しており、それゆえ、８つのＤＬＡＳ（ＤＬＡＳ０〜ＤＬＡＳ７）が存在する。もちろん、別の実施形態において、上記複数の記憶回路に存在するＤＰＵの数と記憶回路の数とに基づいて異なる数の局所アドレス空間が存在しうる。
【００７３】
例えば、一実施形態において、上記複数の記憶回路の各々のサイズが８メガバイト（ＭＢ）であり、それゆえ合計の物理メモリのサイズは６４ＭＢであると仮定して、上記局所アドレス空間ＤＬＡＳ０〜ＤＬＡＳ７が、メモリシステムの以下のメモリ部分にマップされる。
【００７４】
ＤＬＡＳ０は、物理アドレス０ＭＢ‐１〜８ＭＢ‐１にマップされる。なお、ＸＭＢ‐１はＸメガバイトより１バイト小さいことを意味する。
【００７５】
‐ＤＬＡＳ１が、物理アドレス８ＭＢ‐１〜１６ＭＢ‐１にマップされ、
‐ＤＬＡＳ２が、物理アドレス１６ＭＢ‐１〜２４ＭＢ‐１にマップされ、
‐ＤＬＡＳ３が、物理アドレス２４ＭＢ‐１〜３２ＭＢ‐１にマップされ、
‐ＤＬＡＳ４が、物理アドレス３２ＭＢ‐１〜４０ＭＢ‐１にマップされ、
‐ＤＬＡＳ５が、物理アドレス４０ＭＢ‐１〜４８ＭＢ‐１にマップされ、
‐ＤＬＡＳ６が、物理アドレス４８ＭＢ‐１〜５６ＭＢ‐１にマップされ、
‐ＤＬＡＳ７が、物理アドレス５６ＭＢ‐１〜６４ＭＢ‐１にマップされる。
【００７６】
それゆえ、例えば、上記記憶回路ＭｅｍＣ０は物理アドレス空間の第１の８ＭＢを含み、上記記憶回路ＭｅｍＣ１は上記物理アドレス空間の第２の８ＭＢを含む。このようなマッピングの利点は、各ＤＰＵが連続アドレス空間にアクセスすることができるということである。しかしながら、上記ＤＰＵ局所アドレス空間の上記物理アドレスに対する当該マッピングは、単に一例であり、他種のマッピングが可能である。例えば、上記物理アドレスは、４ＭＢブロックであってもよい。この場合、
‐ＤＬＡＳ０が、物理アドレス０ＭＢ‐１〜４ＭＢ‐１及び３２ＭＢ‐１〜３６ＭＢ‐１にマップされ、
‐ＤＬＡＳ１が、物理アドレス４ＭＢ‐１〜８ＭＢ‐１及び３６ＭＢ‐１〜４０ＭＢ‐１にマップされ、という具合にマッピングが行われ、
‐ＤＬＡＳ７が、物理アドレス２８ＭＢ‐１〜３２ＭＢ‐１及び６０ＭＢ‐１〜６４ＭＢ‐１にマップされるまでマッピングが行われる。
【００７７】
図５は、本開示の一実施形態例に係る、メモリにアクセスする方法における各動作を示すフローチャートである。上記方法は、例えば、上記ＨＣＰＵ２０２及び／又は上記アドレス変換機能２０８を実行する回路によって実行される。特に、上記方法は、上記アドレス変換機能２０８が上記ＨＣＰＵの１つ以上のプロセッサによって実行されるソフトウェアで実行される場合に、上記ＨＣＰＵのみによって実行されてもよい。あるいは、上記方法は、上記アドレス変換機能２０８が上記ＨＣＰＵ２０２とは別個のハードウェアによって実行される場合には、専用回路によって実行されてもよい。
【００７８】
動作５０１で、メモリ読み取り又は書き込みリクエストが作成される。例えば、上記ＨＣＰＵ２０２が、ロード命令又はストア命令を実行することによって上記メモリ読み取り又は書き込みリクエストを作成する。
【００７９】
動作５０２で、上記メモリ読み取り又は書き込みリクエストがＤＧＡＳセグメント内のアドレスを伴うか否かが判断される。言い換えると、物理アドレスを作成するために変換されるべき上記アドレスが図３及び図４で３０６と示されるメモリのゾーンに対応するかどうか否かが判断される。例えば、上記アドレス変換機能２０８は、上記ＤＧＡＳ３０６に対応する上記アドレス範囲の指標を記憶する。
【００８０】
いくつかの実施形態において、上記ＨＣＰＵ２０２は、低コストパフォーマンスであってもなくてもＤＧＡＳ２ＰＧＡＳ機能を実行するために、強化される。例えば、上記ＨＣＰＵは、特殊アドレスセグメントＤＧＡＳが上記ＨＧＡＳ内で作成されることを可能にする複数の構成レジスタを備える。例えば、上記複数の構成レジスタは、上記ＤＧＡＳセグメントの境界、又は複数の不連続ＤＧＡＳセグメントがある場合に各ＤＧＡＳセグメントの境界を記憶する。さらに、上記複数の構成レジスタは、例えば、アドレス変換のために行われる変形（transformation）を示す。実際、当該変換は、使用される特定の上記複数の記憶回路によって、特に上記複数の記憶回路の上記データポートの幅に依存する。上記ＨＧＡＳアドレスが上記ＤＧＡＳセグメント内にある場合、上記アドレスは実際にＤＧＡＳアドレスであり、それゆえ、ＰＧＡＳアドレスに変換されるべきである。
【００８１】
上記アドレスがＤＧＡＳセグメント内にない場合、動作５０３で、上記物理全域アドレス空間（ＰＧＡＳ）が上記ＤＰＵ全域アドレス空間（ＤＧＡＳ）に等しいと仮定され、そのため、次の動作５０４で、メモリアクセスが上記ＨＧＡＳアドレスに基づいて処理される。
【００８２】
あるいは、動作５０２で、上記読み取り又は書き込みリクエストがＤＧＡＳセグメント内のアドレスを伴うと判断される場合、次の動作は、上記ＤＧＡＳ２ＰＧＡＳ機能を用いてアドレス変換が行われる動作５０５である。以下、図６を参照して上記アドレス変換の例をより詳細に記載する。
【００８３】
図６は、８つの記憶回路ＭｅｍＣ０〜ＭｅｍＣ７の場合を仮定するメモリシステムの物理アドレス空間の例を概略的に示す。記憶回路ＭｅｍＣ０〜ＭｅｍＣ７の各々の各行は、例えば１バイトであるサブワードを記憶する。６４ビットＨＣＰＵデータバスに存在する各ワードは、１つのサブワード（ＳＷ）が各行に記憶されるように記憶される。例えば、上記メモリシステムにまたがる第１行Ｒ０は、上記記憶回路ＭｅｍＣ０に記憶された第１の８ビット値、上記記憶回路ＭｅｍＣ１に記憶された第２の８ビット値、等を有する。それゆえ、アドレス変換が行われない、ＤＧＡＳ３０６外のアドレスに対して、ＨＣＰＵアドレス空間の各ワードが上記メモリシステムの上記複数の記憶回路の各々にわたって記憶される。このような場合、各サブワードＳＷ又はバイトのアドレスは、例えば、［２５：０］の形態であり、この場合、２３ビット［２５：３］が上記メモリシステムの８３８８６０８行のうちの１行を示し、最終ビット［２：０］が当該行内のバイトを示す。
【００８４】
しかしながら、上記ＤＧＡＳ３０６内にあるアドレスに対して、以下の変換機能が、例えば、上記ＤＧＡＳ３０２の上記アドレスと上記複数の記憶回路のアドレス指定に用いられるＰＧＡＳアドレスとの間に適用される。
【００８５】
ＰＧＡＳ_アドレス［２５：０］＝{ＤＧＡＳ_アドレス［２２：０］，ＤＧＡＳ_アドレス［２５：２３］}
それゆえ、上記ＤＧＡＳアドレスの最上位ビット［２５：２３］は、どの記憶回路に書き込まれるかを示す。当該最上位ビットは、上記の変換機能の適用がない場合、上記行が第１群、第２群、第３群、第４群、第５群、第６群、第７群及び第８群の各々の１０４８５７６行のどれにあるかを示すものである。したがって、例えば、第１の１０４８５７６行に通常存在するアドレスは、記憶セルＭｅｍＣ０に書き込まれ、第２の１０４８５７６行に通常存在するアドレスは、記憶セルＭｅｍＣ１に書き込まれる。
【００８６】
それゆえ、上記ＤＧＡＳ３０６において６４ビットデータワードを形成するバイトは全て、例えば、上記複数の記憶回路のうちの１つにおいて８つの隣接行に書き込まれるか当該隣接行から読み取られる。したがって、当該６４ビットワードの読み取り又は書き込みは、例えば、８連続の読み取り及び書き込み動作にわたって行われる。このような場合、例えば、ＤＧＡＳアドレスビット［２：０］を省略でき、上記複数の記憶回路は、例えば、これらのアドレスビットの供給を必要とすることなく連続するアドレス位置に対して動作を行うことができる。しかしながら、例えば、３２ビットワードにアクセスする場合、ＤＧＡＳアドレスビット［２］が供給され、例えば、１６ビットアクセスが行われる場合、ＤＧＡＳアドレスビット［１：０］が供給され、例えば、特定のバイトにアクセスする場合、上記ＤＧＡＳアドレスビット［２：０］が供給される。
【００８７】
いくつかの実施形態において、当該アドレス変換は、ＤＧＡＳセグメントに対して自動的に行われるアドレスビット置換によって実行することができる。例えば、上記ビット置換の特質は、対応する構成レジスタの内容によって特定される。いくつかの実施形態において、ＤＧＡＳがいくつかのマッピングセグメントの和としてＨＧＡＳにマップされることができるので、セグメントによる線形性が存在する。実際、上記ＤＧＡＳは、例えば、上記複数の記憶回路におけるＤＬＡＳセグメントの和である。
【００８８】
再び図５を参照すると、次の動作５０６で、ｋメモリアクセス動作が変換された物理アドレスに基づいて行われる。例えば、いくつかの実施形態において、読み取り又は書き込み動作のアドレスが１バイトのデータに対応してもよく、この場合、当該読み取り又は書き込み動作を１回の読み取り又は書き込み動作で行うことができ、ｋは１に等しい。あるいは、読み取り又は書き込みリクエストが読み取られる又は書き込まれる１ワードのデータに対応してもよく、このような場合、メモリにおける対応するＤＬＡＳゾーンに当該データを書き込むために行われる一連の８つのメモリアクセス動作が存在し、ｋは８に等しくなる。上記読み取り又は書き込み動作の上記アドレスによって指定されたバイト数次第で、ｋが他の値をとることも可能である。
【００８９】
図７は、図２の上記デバイス２００に類似するコンピュータデバイス７００を示す。上記コンピュータデバイス７００は、単一ランクの複数の記憶回路２０４を備える代わりに、複数ランクの複数の記憶回路７０２を備える。例えば、ＨＣＰＵ２０２は、合計でｒランクの記憶回路と通信する。これらのランクはランク０ＭｅｍＣ〜ランクｒ‐１ＭｅｍＣとして示される。各ランクは、例えば、複数の記憶回路を備える。上記ＨＣＰＵのデータバスは、メモリランクの各々に連結される。アドレス変換機能２０８が、例えば、各ランクに対して独立して適用される。例えば、ランク０とランク１との２つのランクがある場合、当該ランク０は、例えば、ＤＬＡＳゾーン０〜７を有し、当該ランク１は、例えば、ＤＬＡＳゾーン８〜１５を有する。
【００９０】
図２の実施形態において、上記複数の記憶回路２０４の各々は、単一のＤＰＵ２０６を備えるが、別の実施形態において、各記憶回路２０４は、複数のＤＰＵを備えてもよく、この場合について図８および図９を参照して以下に記載する。
【００９１】
図８は、図２の上記複数の記憶回路２０４の各々の代替としての記憶回路８００を概略的に示す。例えば、上記記憶回路８００は、メモリアレイ（ＭＥＭ）８０２と、ＤＰＵ０及びＤＰＵ１として示される２つのＤＰＵとを統合するメモリチップである。上記ＤＰＵ０及び上記ＤＰＵ１と上記メモリアレイ８０２とは各々、例えば、ＨＣＰＵバスのスライス８０４に連結される。本実施形態において、上記ＤＰＵ０及び上記ＤＰＵ１の各々は、例えば、同一のＤＰＵ局所アドレス空間を共有し、また、例えば、上記メモリアレイ８０２のアドレス空間全体にアクセスすることができる。同様に、他の記憶回路の各々の複数のＤＰＵも、例えば、同じように同一のＤＬＡＳを共有する。
【００９２】
図９は、各記憶回路のメモリが複数の領域に分けられた別の実施形態を示す。図９の例において、３つの記憶回路ＭｅｍＣｘ−１、ＭｅｍＣｘ、及びＭｅｍＣｘ＋１の各々が、ＭｅｍＣ領域０及びＭｅｍＣ領域１として示される２つの領域を有する。ＤＰＵが、各メモリ領域に結合され、当該領域のみにアクセスすることができる。例えば、各記憶回路のＤＰＵ０が上記ＭｅｍＣ領域０のみにアクセスすることができ、各記憶回路のＤＰＵ１が上記ＭｅｍＣ領域１のみにアクセスすることができる。それゆえ、検討された上記記憶回路の上記領域０は仮想ランクとみなされ、上記領域１は別の仮想ランクとみなされ、上記領域０及び上記領域１はそれぞれ、図９におけるように仮想ランク０及び仮想ランク１とラベルされる。したがって、各記憶回路が複数のＤＰＵを備えているとみなす代わりに、複数のランクが存在すると単純にみなすことができ、図７に関して上述の解決策を採用することができる。
【００９３】
別の実施形態において、各ＤＰＵが複数の領域にアクセス可能であってもよいが、上記複数の記憶回路の物理記憶アドレス空間の全てにアクセス可能であるとは限らない。このような場合、例えば、関連ＤＰＵ又は複数の関連ＤＰＵがメモリ領域にアクセス可能なように、ＤＬＡＳが、各アクセス可能メモリ領域に対して定義される。
【００９４】
上述のアドレスビット置換としてアドレス変換機能を実行することによって、性能の点で多かれ少なかれ意識させずにアドレス変換を行うことができる。しかしながら、ＨＣＰＵがバイトサイズの読み取り及び書き込み動作を通してＤＧＡＳアドレス空間に依然としてアクセスする。図１０Ａ及び図１０Ｂを参照してより詳細に以下に記載されるように、バーストメモリアクセスを用いて、より効率的な変換を行ってもよい。
【００９５】
図１０Ａは、一実施形態例に係るデータキャッシュ１０００（キャッシュ）を概略的に示す。データキャッシュにより、処理装置が局所的にデータを記憶することができ、また当該データに迅速にアクセスすることができる。上記データキャッシュ１０００は、例えば、ＨＣＰＵ２０２に統合され、また、例えば、当該ＨＣＰＵ２０２のデータバス（ＤＤＲデータバス）とアドレス及びコマンドバス（ＡＤＤＲ＋ＣＭＤバス）とに連結される。上記データキャッシュ１０００は、例えば、キャッシュラインＬ１、Ｌ２、Ｌ３等を備える。ライン数はキャッシュのサイズによって決まる。各キャッシュラインは、例えば、メモリバーストトランザクションのサイズである。メモリバーストトランザクションは、例えば、メモリアドレスのブロックに対する速い読み取り又は書き込みアクセスを可能にすることによって性能を改善するメモリアクセス動作である。
【００９６】
例えば、バースト書き込みトランザクションが、一連の書き込みアクセス、つまり、上記ＨＣＰＵによって作成されたアドレスを用いる第１の書き込みアクセスと、上記第１の書き込みアクセスで用いられた上記アドレスから例えば複数の記憶回路によって自動的にインクリメントされた複数のアドレスを用いる次の書き込みアクセスとを伴う。上記インクリメントのサイズは、ＨＣＰＵバスバイト幅に対応する。
【００９７】
同様に、バースト読み取りトランザクションが、一連の読み取りアクセス、つまり、上記ＨＣＰＵによって作成されたアドレスを用いる第１の読み取りアクセスと、上記第１の読み取りアクセスで用いられた上記アドレスから自動的にインクリメントされた複数のアドレスを用いる次の読み取りアクセスとを伴う。上記インクリメントのサイズは、ＨＣＰＵバスバイト幅に対応する。
【００９８】
例えば、ＤＤＲ３（ダブルデータレートタイプ３）プロトコル及びＤＤＲ４（ＤＤＲタイプ４）プロトコルによれば、バーストトランザクションが８連続アクセスからなり、各アクセスは８バイトのデータを移動させる。その結果、当該バーストトランザクションによって移動されるデータ量は、６４バイトである。さらに、第１のアクセスのアドレスが、例えば、６４バイトの境界に合わせられる。
【００９９】
いくつかの実施形態において、メモリバーストアクセスが、アクセス数においてバイト幅がその深さ（depth）に等しい正方バーストに基づく。
【０１００】
一例において、上記データキャッシュ１０００は、上記ＤＤＲ３プロトコル又は上記ＤＤＲ４プロトコルに基づいて動作する。それゆえ、各キャッシュラインＬ１、Ｌ２等は、例えば、６４バイトである。上記ＤＤＲ３プロトコル及び上記ＤＤＲ４プロトコルは、正方バーストを使用する。実際、ＤＤＲ３/ＤＤＲ４コンテキストにおいて、上記ＨＣＰＵ２０２は、バーストトランザクションを介して、メモリと通信する。当該バーストトランザクションの各々は、本明細書において「バーストアクセス０」〜「バーストアクセス７」と呼ばれる８つの６４ビット（８バイト）バーストアクセスを備える。
【０１０１】
読み取り又は書き込みバーストトランザクションは、本明細書においてＢ００〜Ｂ６３と示された６４バイトを有し、例えば、以下のように編成される。
【０１０２】
バーストアクセス０：Ｂ００  Ｂ０１  Ｂ０２  Ｂ０３  Ｂ０４  Ｂ０５  Ｂ０６  Ｂ０７
バーストアクセス１：Ｂ０８  Ｂ０９  Ｂ１０  Ｂ１１  Ｂ１２  Ｂ１３  Ｂ１４  Ｂ１５
バーストアクセス２：Ｂ１６  Ｂ１７  Ｂ１８  Ｂ１９  Ｂ２０  Ｂ２１  Ｂ２２  Ｂ２３
バーストアクセス３：Ｂ２４  Ｂ２５  Ｂ２６  Ｂ２７  Ｂ２８  Ｂ２９  Ｂ３０  Ｂ３１
バーストアクセス４：Ｂ３２  Ｂ３３  Ｂ３４  Ｂ３５  Ｂ３６  Ｂ３７  Ｂ３８  Ｂ３９
バーストアクセス５：Ｂ４０  Ｂ４１  Ｂ４２  Ｂ４３  Ｂ４４  Ｂ４５  Ｂ４６  Ｂ４７
バーストアクセス６：Ｂ４８  Ｂ４９  Ｂ５０  Ｂ５１  Ｂ５２  Ｂ５３  Ｂ５４  Ｂ５５
バーストアクセス７：Ｂ５６  Ｂ５７  Ｂ５８  Ｂ５９  Ｂ６０  Ｂ６１  Ｂ６２  Ｂ６３
このように、バーストトランザクションで満たされた場合、上記データキャッシュ１０００の上記６４バイトのキャッシュラインの１つを、例えば、以下を含む８×８アレイとして表すことができる。
【０１０３】
Ｂ００  Ｂ０１  Ｂ０２  Ｂ０３  Ｂ０４  Ｂ０５  Ｂ０６  Ｂ０７
Ｂ０８  Ｂ０９  Ｂ１０  Ｂ１１  Ｂ１２  Ｂ１３  Ｂ１４  Ｂ１５
Ｂ１６  Ｂ１７  Ｂ１８  Ｂ１９  Ｂ２０  Ｂ２１  Ｂ２２  Ｂ２３
Ｂ２４  Ｂ２５  Ｂ２６  Ｂ２７  Ｂ２８  Ｂ２９  Ｂ３０  Ｂ３１
Ｂ３２  Ｂ３３  Ｂ３４  Ｂ３５  Ｂ３６  Ｂ３７  Ｂ３８  Ｂ３９
Ｂ４０  Ｂ４１  Ｂ４２  Ｂ４３  Ｂ４４  Ｂ４５  Ｂ４６  Ｂ４７
Ｂ４８  Ｂ４９  Ｂ５０  Ｂ５１  Ｂ５２  Ｂ５３  Ｂ５４  Ｂ５５
Ｂ５６  Ｂ５７  Ｂ５８  Ｂ５９  Ｂ６０  Ｂ６１  Ｂ６２  Ｂ６３
当該キャッシュライン内で、上記ＨＣＰＵ２０２は、例えば、任意のバイト、２バイト{Ｂｎ、Ｂｎ＋１}から構成された任意の１６ビットのワード（ｎは２で割り切れる）、複数のバイト{Ｂｎ、Ｂｎ＋１、Ｂｎ＋２、Ｂｎ＋３}から構成された３２ビットのワード（ｎは４で割り切れる）、及び上記アレイの１行の８バイトから構成された６４ビットのワードにもアクセスすることができる。
【０１０４】
いくつかの実施形態において、データの上記複数の記憶回路への記憶方法を変更するために、上記データキャッシュ１０００のキャッシュラインにおけるバイトに対して置換が行われる。例えば、上記データが上記ＨＣＰＵ２０２の上記ＤＤＲデータバスから到着すると上記データでキャッシュラインを満たす代わりに、以下の置換が行われる。すなわち、上記キャッシュラインを８×８アレイで表し、座標（ｘ、ｙ）における各バイトは、座標（ｙ、ｘ）における各バイトと交換される。置換が行われると、上記キャッシュラインは以下の通りに満たされる。
【０１０５】
Ｂ００  Ｂ０８  Ｂ１６  Ｂ２４  Ｂ３２  Ｂ４０  Ｂ４８  Ｂ５６
Ｂ０１  Ｂ０９  Ｂ１７  Ｂ２５  Ｂ３３  Ｂ４１  Ｂ４９  Ｂ５７
Ｂ０２  Ｂ１０  Ｂ１８  Ｂ２６  Ｂ３４  Ｂ４２  Ｂ５０  Ｂ５８
Ｂ０３  Ｂ１１  Ｂ１９  Ｂ２７  Ｂ３５  Ｂ４３  Ｂ５１  Ｂ５９
Ｂ０４  Ｂ１２  Ｂ２０  Ｂ２８  Ｂ３６  Ｂ４４  Ｂ５２  Ｂ６０
Ｂ０５  Ｂ１３  Ｂ２１  Ｂ２９  Ｂ３７  Ｂ４５  Ｂ５３  Ｂ６１
Ｂ０６  Ｂ１４  Ｂ２２  Ｂ３０  Ｂ３８  Ｂ４６  Ｂ５４  Ｂ６２
Ｂ０７  Ｂ１５  Ｂ２３  Ｂ３１  Ｂ３９  Ｂ４７  Ｂ５５  Ｂ６３
上記キャッシュは、物理全域アドレス空間アドレスを用いて常にアクセスされ、それゆえ、アドレス変換機能ＤＧＡＳ２ＰＧＡＳがバイト置換に適応するように変えられる。上述したように、初期のアドレス変換機能は、ＰＧＡＳ_アドレス［２５：０］＝{ＤＧＡＳ_アドレス［２２：０］、ＤＧＡＳ_アドレス［２５：２３］}であった。
【０１０６】
上記キャッシュライン内でバイトに対して置換を行うことによって、上記８×８アレイでｘ方向におけるアドレス位置に対応するＰＧＡＳアドレスビット［２：０］が、上記８×８アレイでｙ方向に対応するＰＧＡＳアドレスビット［５：３］と交換される。それゆえ、新規のアドレス変換は、ＰＧＡＳ_アドレス［２５：０］＝{ＤＧＡＳ_アドレス［２２：３］、ＤＧＡＳ_アドレス［２５：２３］、ＤＧＡＳ_アドレス［２：０］}となる。
【０１０７】
上記ＰＧＡＳアドレスビット［２：０］が上記ＤＧＡＳアドレスビット［２：０］に等しくなったということがわかる。つまり、好都合なことに、１６ビット値、３２ビット値、及び６４ビット値に対してアドレス指定を行うメモリアクセス動作が可能になる。特に、上記キャッシュラインからの読み取り又は上記キャッシュラインへの書き込みの際には、以下のアクセス動作のうちのいずれかを行うことが可能になる。
【０１０８】
‐  連続するＤＧＡＳアドレスを用いて２バイトで形成された、１６ビットで位置合わせされた、１６ビットワード 
‐  連続するＤＧＡＳアドレスを用いて４バイトで形成された、３２ビットで位置合わせされた、３２ビットワード
‐  連続するＤＡＳアドレスを用いて８バイトで形成された、６４ビットで位置合わせされた、６４ビットワード
上記記載は、一度に２つのキャッシュラインを用いて、同一サイズで位置合わせされた特定のサイズの複数のメモリアクセスについて言及したが、位置合わせされていない１６ビット、３２ビット、及び６４ビットＤＧＡＳアクセスも可能である。特に、これは、例えば、隣接するキャッシュラインをクロスするアクセスを、各アクセスが単一のキャッシュラインを伴う２連続アクセスに分けることによって、又は上記２つのキャッシュラインに同時にアクセスし、そして読み取られたデータを多重化して複数の関連部分を抽出することによって、達成することができる。
【０１０９】
上記例は、置換（ｘ、ｙ）‐>（ｙ、ｘ）が正方キャッシュラインバーストに適用されると仮定する。他の置換も可能である。例えば、置換（ｘ、ｙ）‐>（ｙ、~ｘ）を代わりに用いることができる。なお、記号「~」は１の補数、つまり、７‐ｘを意味する。その結果、メモリチップインデックスが反転される。
【０１１０】
上記例は、メモリバーストが正方形であるということを仮定する。これは、上記ＤＤＲ３プロトコル及び上記ＤＤＲ４プロトコルの場合であるが、他のプロトコルは矩形バーストを伴う。例えば、ＤＤＲ２プロトコルは４アクセスにわたって８バイトを移動させる。以下により詳細に記載されるように、上述の類似置換動作を上記矩形バーストに適用することができる。
【０１１１】
ＤＤＲ２コンテキストにおいて、キャッシュラインが３２バイトのサイズを有し、当該キャッシュラインがバーストトランザクションで満たされ、且つ８×４アレイで表される場合、当該キャッシュラインは、以下を含む。
【０１１２】
Ｂ００  Ｂ０１  Ｂ０２  Ｂ０３  Ｂ０４  Ｂ０５  Ｂ０６  Ｂ０７
Ｂ０８  Ｂ０９  Ｂ１０  Ｂ１１  Ｂ１２  Ｂ１３  Ｂ１４  Ｂ１５
Ｂ１６  Ｂ１７  Ｂ１８  Ｂ１９  Ｂ２０  Ｂ２１  Ｂ２２  Ｂ２３
Ｂ２４  Ｂ２５  Ｂ２６  Ｂ２７  Ｂ２８  Ｂ２９  Ｂ３０  Ｂ３１
（ｘ、ｙ）‐>（ｙ、ｘ）変形を適用し、３２バイトキャッシュラインを４×８アレイで表すと、以下が得られる。
【０１１３】
Ｂ００  Ｂ０８  Ｂ１６  Ｂ２４
Ｂ０１  Ｂ０９  Ｂ１７  Ｂ２５
Ｂ０２  Ｂ１０  Ｂ１８  Ｂ２６
Ｂ０３  Ｂ１１  Ｂ１９  Ｂ２７
Ｂ０４  Ｂ１２  Ｂ２０  Ｂ２８
Ｂ０５  Ｂ１３  Ｂ２１  Ｂ２９
Ｂ０６  Ｂ１４  Ｂ２２  Ｂ３０
Ｂ０７  Ｂ１５  Ｂ２３  Ｂ３１
再び、上記アドレス変換機能ＤＧＡＳ２ＰＧＡＳが、例えば、当該バイト置換に適応するように変えられる。上述したように、初期のアドレス変換機能は、ＰＧＡＳ_アドレス［２５：０］＝{ＤＧＡＳ_アドレス［２２：０］、ＤＧＡＳ_アドレス［２５：２３］}であった。
【０１１４】
当該初期の置換が、並列な記憶回路の数（例えば、ＤＤＲ２例及びＤＤＲ３／ＤＤＲ４例に対して８）のみに依存するので、当該初期のアドレス置換がＤＤＲ３／ＤＤＲ４例に対するのと同じであるということがわかる。
【０１１５】
ＤＤＲ２例に対する新規の置換は、例えば、ＰＧＡＳ_アドレス［２５：０］＝{ＤＧＡＳ_アドレス［２２：２］、ＤＧＡＳ_アドレス［２５：２３］、ＤＧＡＳ_アドレス［１：０］}である。
【０１１６】
上記ＨＣＰＵは、例えば、以下の読み取り又は書き込みアクセスを行うことができる。
【０１１７】
‐ＤＧＡＳにおける、１６ビットで位置合わせされた、１６ビットアクセス、又は
‐ＤＧＡＳにおける、３２ビットで位置合わせされた、３２ビットアクセス
ＤＧＡＳ線形性がたった４バイトの大きさであるため、ＤＧＡＳにおける６４ビットアクセスは作用しない。つまり、ＤＧＡＳアドレスの２つの最下位ビットのみがＰＧＡＳアドレスの２つの最下位ビットに等しい。
【０１１８】
上記ＤＤＲ２例において、上記矩形バーストの幅がその深さ（depth）より大きいが、本明細書に記載の変形を、例えば幅が深さ（depth）より小さい他のバースト構成に等しく適用することができる。
【０１１９】
キャッシュラインの上述の置換は、例えば、ソフトウェア又はハードウェアにおいて行うことができる。
【０１２０】
ソフトウェア置換の場合、当該置換は、例えば、３６周期にわたって行うことができる。この周期数は、通常２００周期にわたるランダム（閉ページ）ＤＲＡＭアクセスのコストに匹敵する。このように、ソフトウェア置換のコストは比較的低い。
【０１２１】
あるいは、ハードウェアキャッシュライン置換において、上記ＨＣＰＵ２０２は、例えば、１つ又は数個の置換回路を備える。これらの回路は、例えば、上記ＨＣＰＵ２０２において実行されるか、又は上記ＨＣＰＵと上記複数の記憶回路との間に連結された別の回路の一部として実行される。上記置換が始まる前に８×８アレイ全体がチャージされるべきなので、置換動作は、例えば、パイプライン方式で実行されない。
【０１２２】
上記置換回路は、以下を用いて実行可能である。
【０１２３】
‐直交書き込みバス及び直交読み取りバスを用いた、複数のデュアルポートレジスタ
‐複数の入口がメモリバスに直交する複数のシフトレジスタである、シングルポートメモリ、
‐１次元においてシフト可能であり、その後他方向においてシフト可能である、複数のシフトレジスタの２次元アレイ
キャッシュラインがｂ０〜ｂ１５の１６バイトを有する例に基づいて、図１０Ｃ〜図１０Ｅを参照して、以下に置換回路の実行例について記載する。当該実行が他のサイズ（例えば、上述の３２バイト例及び６４バイト例）のキャッシュラインにどのように適合可能であるかは、当業者にとっては明らかだろう。
【０１２４】
図１０Ｃ〜図１０Ｆは、データキャッシュからのキャッシュラインの読み取り動作中にキャッシュライン置換を行う置換回路１００１を示す。もちろん、キャッシュラインをキャッシュに書き込む際に逆の動作を行うことができる。
【０１２５】
上記置換回路１００１は、例えば、シフトレジスタである、レジスタ１００２、１００４、１００６及び１００８を備える。図１０Ｃに示されるように、上記レジスタ１００２は、キャッシュラインのバイトｂ０、ｂ４、ｂ８及びｂ１２を受信するように連結された入力線を備え、上記レジスタ１００４は、キャッシュラインのバイトｂ１、ｂ５、ｂ９及びｂ１３を受信するように連結された入力線を備え、上記レジスタ１００６は、キャッシュラインのバイトｂ２、ｂ６、ｂ１０及びｂ１４を受信するように連結された入力線を備え、上記レジスタ１００８は、キャッシュラインのバイトｂ３、ｂ７、ｂ１１及びｂ１５を受信するように連結された入力線を備える。
【０１２６】
図１０Ｄは、上記バイトｂ０〜ｂ１５が、例えばシフト動作によって上記レジスタ１００２〜１００８にロードされた後の上記置換回路１００１を示す。
【０１２７】
図１０Ｅは、上記レジスタ１００２にロードされた上記バイトｂ０、ｂ４、ｂ８及びｂ１２が平行に出力されて置換キャッシュラインの第１行を形成する、第１の出力動作を示す。同時に、上記レジスタ１００４からの上記バイトが上記レジスタ１００２にシフトされ、上記レジスタ１００６からの上記バイトが上記レジスタ１００４にシフトされ、上記レジスタ１００８からの上記バイトが上記レジスタ１００６にシフトされる。
【０１２８】
そして、図１０Ｅに表された出力動作及びシフト動作が、図１０Ｆに示されたように、上記バイトの全てが上記レジスタ１００２〜１００８から出力されて上記置換キャッシュラインを形成するまで、繰り返される。
【０１２９】
上記レジスタ１００２〜１００８へのデータの初期のロードは、上述のシフトレジスタを用いたシフト動作によって、又は上記レジスタへのメモリ書き込み動作によって行われてもよい。さらに、図１０Ｅ及び図１０Ｆに関して記載された例において、データ値は、シフト動作を行うことによって上記レジスタ１００２、１００４、１００６及び１００８から出力されるが、別の実施形態において、データをメモリ読み取り動作によって出力することもできる。
【０１３０】
いくつかの実施形態において、統合されたＤＰＵを備える記憶回路に全てのメモリアクセスが関係あるか否かに関係なく、当該全てのメモリアクセスに対して、キャッシュライン置換を行ってもよい。実際、キャッシュラインがメモリシステムにおいて書き込まれる方向は、通常少しも重要でない。そのため、全てのデータに対して上記置換を行うことが可能である。この場合、キャッシュラインバイト置換は、キャッシュラインがＤＤＲ２バス、ＤＤＲ３バス、又はＤＤＲ４バスからロードされる又は上記ＤＤＲ２バス、上記ＤＤＲ３バス、又は上記ＤＤＲ４バスに書き込まれる方法に対する変更によって行うことができる。例えば、アドレス変換は、依然としてＤＧＡＳアドレスに対して行われる。
【０１３１】
実際、図１０Ｂを参照して、ＤＧＡＳ１００４からの読み取りの場合、６４バイトキャッシュラインは、各６４ビットワードが別のＤＬＡＳに属する８つの６４ビットワードを含む。それゆえ、これらの８つのワードはＤＧＡＳにおいて連続してマップされず、当該８つのワードは、例えば、メモリシステムが８つの記憶回路が備えられた６４ＭＢのメモリシステムである場合に、８ＭＢによって分けられる。ＨＧＡ１００６からの読み取りの場合、６４バイトキャッシュラインが８つの６４ビットワードを含み、当該８つのワードがＨＧＡＳにおいて連続してマップされる。
【０１３２】
以下、図１１を参照して、変形の流れについてより詳細に記載する。
【０１３３】
図１１は、図１０Ａの上記キャッシュ１０００および図２の上記アドレス変換機能２０８を備える上記コンピュータデバイス２００の一部を示す。図１１の全ての回路は、例えば、上記ＨＣＰＵ２０２内に統合されている。
【０１３４】
上記アドレス変換機能２０８は、例えば、ハードウェア又はソフトウェアにおいて実行される。当該機能は、図１１において、いくつかの動作からなる流れによって表される。変換は、データキャッシュアクセス動作の対象であるＨＧＡＳアドレスに基づく。動作１１０６で、上記ＨＧＡＳアドレスがＤＧＡＳセグメントに一致するか否かが判断される。上記ＨＧＡＳアドレスがＤＧＡＳセグメントに一致すると判断されると、次の動作１１０８において、ＤＧＡＳアドレスからＰＧＡＳアドレスへの変換が、例えば上述のＤＧＡＳ２ＰＧＡＳ機能の１つに基づいて、メモリバースト動作の種類に応じて行われる。上記ＨＧＡＳアドレスがＤＧＡＳセグメントに一致する場合、例えば、マルチプレクサ１１１０が、変換されたアドレスを選択し、一致しない場合、上記ＨＧＡＳアドレスを選択して、上記キャッシュ１０００に対してアドレス指定を行うためのＰＧＡＳアドレスを形成する。上記アドレスは、アドレスバス（ＡＤＤＲバス）上で上記データキャッシュ１０００のアドレスポート（ＡＤＤＲ）に供給される。
【０１３５】
上記データキャッシュ１０００は、上記ＨＣＰＵ２０２のＨＣＰＵレジスタファイル１１１４に連結される。上記ＨＣＰＵレジスタファイル１１１４は、例えば、上記ＨＣＰＵ２０２によって実行される命令にアクセス可能な汎用レジスタファイルである。上記データキャッシュは、バイト転置回路（バイト転置）１１１６を介してデータで満たされる。当該バイト転置は、例えば、図１０Ｃ〜図１０Ｆの上記置換回路１００１に類似した回路によって実行される。上記バイト転置回路１１１６は、例えば、ＤＤＲデータバス（ＤＤＲバス）１１１８と上記データキャッシュ１０００との間に連結される。しかしながら、別の実施形態において、上記バイト転置回路１１１６は、上記データキャッシュ１０００と上記ＨＣＰＵレジスタファイル１１１４との間の経路等の他のどこかに配置可能である。
【０１３６】
いくつかの実施形態において、上記バイト転置回路１１１６等のキャッシュライン置換回路を用いてキャッシュライン置換を行う代わりに、上述のように、ソフトウェアで、記憶回路‐データキャッシュ間でバイトを読み取り且つ書き込むことによって行うことができる。それゆえ、１６ビット、３２ビット及び６４ビットの書き込みは、実際、８ビットの書き込みシーケンスに変換され、それによって当該書き込み動作の粒度が破壊される。標準１６ビット、２３ビット又は６４ビットアクセスは、それ自体のサイズと合わせられるが、ある程度の粒度を有する。しかし、いくつかのビットのみが任意の書き込み動作で書き込まれる場合、当該粒度は壊される。実際、各書き込み動作に続いて、当該書き込み動作に関係する全てのバイトは書き込まれなければならない。そうでなければ、上記システムの最小単位を損なってしまうからである。実際、任意の書き込み動作に続いて、データワードが既に書き込まれたいくつかのバイトと書き込み待ちの他のバイトとを含む場合、当該最小単位は破壊される。例えば、記憶回路のデータポートよりも広幅なコマンドレジスタがＤＧＡＳにマップされるかもしれない。もし当該コマンドレジスタが部分的にのみ書き込まれる場合、コマンドが無意味になる。この問題は、例えば、コマンドが有効である時を示す上記コマンドレジスタ内に少なくとも１つの制御ビットを含むことによって解決される。当該制御ビットは、上記コマンドレジスタの、書き込まれる最後のビットに含まれ、例えば、各書き込み動作中に反転される。このように、上記ＨＣＰＵは、上記制御ビットが色を変化させると、つまり、前のコマンドに対して反転されると、上記コマンドレジスタから読み取られたコマンドのみを考慮する。
【０１３７】
図１２及び図１３を参照して以下に記載されるように、いくつかの実施形態において、上記複数の記憶回路２０４に記憶されたデータが、誤り訂正符号（ＥＣＣ）を含んでもよい。
【０１３８】
図１２は、一実施形態例に係る上記複数の記憶回路２０４における誤り訂正符号の横方向及び縦方向の記憶を概略的に示す。
【０１３９】
図１２のブロック１２０２は、横方向の記憶を示す。各データバイトは、空の矩形で表され、８列の矩形で表された８つの記憶回路にわたって保存される。例えば、９つ目の記憶回路が各横列のデータに対して関連ＥＣＣビットを記憶するのに加えられる。しかしながら、記憶回路の各内部ＤＰＵが当該記憶回路によって記憶されたデータを変更するかもしれないので、各記憶回路は、データが変更された場合、ＥＣＣデータにアクセス可能であり且つ当該ＥＣＣデータを変更可能でなければならない。これは、横方向の記憶構成では不可能である。さらに、各ＥＣＣ値が横列のバイトに関連するので、各記憶回路は、ＥＥＣ値を調べ再計算するために、他の記憶回路によって記憶されたデータにアクセスする必要もあるだろう。
【０１４０】
図１２のブロック１２０４は、縦方向の記憶を示す。各データバイトに関連する斜線部分で表されるように、ある列の縦列のバイトに関連するＥＣＣビットがバイト間で分配される。例えば、１つ以上の追加記憶セルが、ＥＣＣの１つ以上の追加ビットを記憶するために、各バイトに設けられる。同様に、記憶回路のデータポートが同数のビットによって拡大される。それゆえ、記憶回路のＤＰＵが、記憶された１つ以上のＥＣＣビットを同一列の一定数のサブワードにおける各バイトと組み合わせることによって、ＥＣＣを再構築することができる。例えば、各バイトに関連するｉビットのＥＣＣがあり、当該ＥＣＣが、ｉｘｊビット、つまり、ある列のｊバイトに関連するＥＣＣビットを有する。なお、ｉは例えば１以上であり、ｊは例えば２以上である。本実施形態において、上記ＨＣＰＵ２０２は、例えば、一群の８バイトからＥＣＣビットを作成する単一のＥＣＣ回路を備える。そして、これらのビットは、バイト間で分配される。例えば、上記ＨＣＰＵは、ＥＣＣ値が並列で求められるように、各記憶回路に関連するＥＣＣ回路を備える。ＤＰＵを統合する各記憶回路は、例えば、ＥＣＣビットを確認するＥＣＣ回路であって、データ値が変更される度に新しいＥＣＣビットを作成するＥＣＣ回路をも備える。
【０１４１】
図１３は、ＥＣＣビットの代替横方向記憶スキームを表すブロック１３０２を概略的に示す。図１３の例において、任意の列のｊ行のバイトに関連する上記ＥＣＣビットは、ＥＣＣデータの記憶専用の追加行に記憶される。そのため、上記ＥＣＣビットには、追加の読み取り又は書き込み動作を行うことによってアクセス可能である。例えば、バースト長が８アクセスから９アクセスに伸ばされる。本実施形態において、上記ＨＣＰＵ２０２は、例えば、各アクセスにおいてバイト数と等しい数のＥＣＣ回路を備える。それゆえ、各アクセスが８バイトを有する図１３の例において、上記ＨＣＰＵ２０２は、例えば、並列に動作する８つのＥＣＣ回路を備える。ＤＰＵを統合する各記憶回路は、例えば、ＥＣＣビットを確認するＥＣＣ回路であって、データ値が変更される度に新しいＥＣＣビットを作成するＥＣＣ回路をも備える。
【０１４２】
図１４は、一実施形態例に係る、図２の上記複数の記憶回路２０４のうちの１つの記憶回路２０４をより詳細に概略的に示す。当該１つの記憶回路２０４において、ＤＰＵ２０６がメモリアレイ（アレイ）を含む集積回路チップに直接的に統合されておらず、データバス１４０２及びアドレスバス１４０４によって上記メモリアレイに連結された別の集積回路チップに統合されている。上記ＤＰＵ２０６は、例えば、アドレス及びコマンドバス（ＡＤＤＲ＋ＣＭＤバス）と上記ＨＣＰＵ２０２のデータバス（データバス）のスライスとに連結された１つ以上のデータプロセッサ（データプロセッサ）を備える。
【０１４３】
本明細書に記載された実施形態の利点は、アドレス変換をもたらすが、データワードを、当該データワードより狭幅なデータポートを有する単一の記憶回路に縦に記憶することができることである。これにより、上記記憶回路のデータ処理装置が、上記データワードにアクセスすることができ、上記データワードに対して動作を行うことができる。
【０１４４】
このように少なくとも１つの例示的実施形態について記載してきたが、当業者であれば、様々な変更、修正及び改善を容易に思い付くだろう。例えば、６４ビット幅であるＨＣＰＵデータバスと８ビットのデータポートを有する８つの記憶回路の１つ以上のランクとに基づいて特定の実施形態を記載してきたが、多くの様々な構成が可能であることは当業者にとっては明らかだろう。
【０１４５】
さらに、本明細書に記載された実施形態例において、各記憶回路が、１つ以上の統合ＤＰＵを備える集積回路に一致するが、別の実施形態において、１つ以上のＤＰＵを、記憶回路とは別の１つ以上の更なる集積回路に形成することができる。
【図１】
0006757791.tif 000002
【図２】
0006757791.tif 000003
【図３】
0006757791.tif 000004
【図４】
0006757791.tif 000005
【図５】
0006757791.tif 000006
【図６】
0006757791.tif 000007
【図７】
0006757791.tif 000008
【図８】
0006757791.tif 000009
【図９】
0006757791.tif 000010
【図１０Ａ】
0006757791.tif 000011
【図１０Ｂ】
0006757791.tif 000012
【図１０Ｃ】
0006757791.tif 000013
【図１０Ｄ】
0006757791.tif 000014
【図１０Ｅ】
0006757791.tif 000015
【図１０Ｆ】
0006757791.tif 000016
【図１１】
0006757791.tif 000017
【図１２】
0006757791.tif 000018
【図１３】
0006757791.tif 000019
【図１４】
0006757791.tif 000020