(57)【要約】  誤り訂正コード(ECC)の記憶に専用のECC記憶ユニット内のデータインジケータの記憶をサポートするデュアルインラインメモリモジュール(DIMM)。DIMMは、バーストデータ記憶ユニットにストライプされたバーストECC記憶ユニットを提供するように構成されている。DIMMは、書込み動作のための書込みデータアドレスにおけるバーストデータワード記憶ユニットにわたって、受信されたバーストデータワードをストライプするように構成される。DIMMはまた、バーストECC記憶ユニット内のデータビットセルの数よりも少ないビットで、書込みデータアドレスにおけるバーストECC記憶ユニットにわたって、バーストデータワードの受信されたバーストECCワードをストライプするようにも構成される。このようにして、DIMMは、バーストデータワードのための少なくとも1つのデータインジケータをバーストECC記憶ユニット内に余分な残りのビットで記憶することができる。
2018503918.tif 000002
【特許請求の範囲】
【請求項１】
デュアルインラインメモリモジュール(DIMM)であって、
複数のバーストデータ記憶ユニット、
を含み、前記複数のバーストデータ記憶ユニットの中の各バーストデータ記憶ユニットが、
バースト長を合計した複数のデータライン記憶ユニットにわたってストライプされたバーストデータワード記憶ユニットであり、前記複数のデータライン記憶ユニットの中の各データライン記憶ユニットが64データビットセルを有する、バーストデータワード記憶ユニットと、
複数のECCライン記憶ユニットにわたってストライプされたバースト誤り訂正コード(ECC)記憶ユニットであり、前記複数のECCライン記憶ユニットの中の各ECCライン記憶ユニットが、データライン記憶ユニットに対応し、各ECCライン記憶ユニットが8データビットセルを含む、バーストECC記憶ユニットと
を含み、
前記DIMMが、
バーストメモリ書込み要求のための書込みデータアドレスを受信し、
バーストメモリ書込み要求のためのバースト書込みデータブロック長のバースト書込みデータを受信し、前記バースト書込みデータが、バースト書込みデータワードと、前記バースト書込みデータワードのバーストECCワードと、前記バースト書込みデータワードの少なくとも1つのデータインジケータとを含み、
前記受信された書込みデータアドレスにおける前記バーストデータワード記憶ユニットにわたって、前記受信されたバースト書込みデータワードをストライプし、
前記受信された書込みデータアドレスにおける前記バーストECC記憶ユニット内のデータビットセルの数よりも少ないビットで、前記バーストECC記憶ユニットにわたって、前記バースト書込みデータワードの前記受信されたバーストECCワードをストライプし、
前記受信された書込みデータアドレスにおける前記バーストデータ記憶ユニットの前記バーストECC記憶ユニット内に、前記バースト書込みデータワードの前記少なくとも1つのデータインジケータを記憶する
ように構成される
DIMM。
【請求項２】
前記バースト書込みデータワードの前記少なくとも1つのデータインジケータが単一ビットデータインジケータから構成され、
前記DIMMが、前記受信された書込みデータアドレスにおける前記バーストデータ記憶ユニットの前記バーストECC記憶ユニットの単一ビットで、前記バースト書込みデータワードの前記単一ビットデータインジケータを記憶するように構成される
請求項1に記載のDIMM。
【請求項３】
前記バースト書込みデータワードの前記少なくとも1つのデータインジケータが複数ビットデータインジケータから構成され、
前記DIMMが、前記受信された書込みデータアドレスにおける前記バーストデータ記憶ユニットの前記バーストECC記憶ユニットの複数ビットで、前記バースト書込みデータワードの前記複数ビットデータインジケータを記憶するように構成される
請求項1に記載のDIMM。
【請求項４】
前記DIMMが、前記受信された書込みデータアドレスにおける前記バーストECC記憶ユニット内のデータビットセルの前記数よりも少なくとも2つ少ないビットで、前記バーストECC記憶ユニットにわたって、前記バースト書込みデータワードの前記受信されたバーストECCワードをストライプするように構成される、請求項1に記載のDIMM。
【請求項５】
読取りデータアドレスを含むメモリ読取り要求を受信し、
前記DIMM内の前記読取りデータアドレスに記憶された1つまたは複数のバースト読取りデータを取り出すために、前記読取りデータアドレスにアクセスし、
前記読取りデータアドレスに記憶された前記1つまたは複数のバースト読取りデータをメモリコントローラに通信し、前記1つまたは複数のバースト読取りデータが各々、バースト読取りデータワード、前記バースト読取りデータワードのバーストECCワード、および前記バースト読取りデータワードの前記少なくとも1つのデータインジケータを含む
ようにさらに構成される請求項1に記載のDIMM。
【請求項６】
前記DIMMが、前記バースト書込みデータワードが圧縮されているかどうかを示す前記バースト書込みデータワードの前記少なくとも1つのデータインジケータを受信するように構成される、請求項1に記載のDIMM。
【請求項７】
前記複数のバーストデータ記憶ユニットの中の各バーストデータ記憶ユニットが、前記バースト長を合計した4つのデータライン記憶ユニットにわたってストライプされた前記バーストデータワード記憶ユニットを含む、請求項1に記載のDIMM。
【請求項８】
集積回路(IC)に組み込まれた請求項1に記載のDIMM。
【請求項９】
セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビジョン、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤからなる群から選択されるデバイスに組み込まれる、請求項1に記載のDIMM。
【請求項１０】
中央処理装置(CPU)ベースシステム内のデュアルインラインメモリモジュール(DIMM)にデータを書き込む方法であって、
DIMMにおいてメモリ書込み要求を受信するステップであり、前記メモリ書込み要求が、書込みデータアドレスと、バースト書込みデータブロック長のバースト書込みデータとを含み、前記バースト書込みデータが、バースト書込みデータワードと、前記バースト書込みデータワードのバースト誤り訂正コード(ECC)ワードと、前記バースト書込みデータワードの少なくとも1つのデータインジケータとを含む、ステップと、
前記DIMM内の前記受信された書込みデータアドレスにおけるバーストデータ記憶ユニット内のバーストデータワード記憶ユニットにわたって、前記受信されたバースト書込みデータワードをストライプするステップであり、前記DIMMが、
複数のバーストデータ記憶ユニットを含み、前記複数のバーストデータ記憶ユニットの中の各バーストデータ記憶ユニットが、
バースト長を合計した複数のデータライン記憶ユニットにわたってストライプされたバーストデータワード記憶ユニットであり、前記複数のデータライン記憶ユニットの中の各データライン記憶ユニットが64データビットセルを含む、バーストデータワード記憶ユニットと、
複数のECCライン記憶ユニットにわたってストライプされたバーストECC記憶ユニットであり、前記複数のECCライン記憶ユニットの中の各ECCライン記憶ユニットが、データライン記憶ユニットに対応し、各ECCライン記憶ユニットが8データビットセルを含む、バーストECC記憶ユニットと
を含む、ステップと、
前記受信された書込みデータアドレスにおける前記バーストECC記憶ユニット内のデータビットセルの数よりも少ないビットで、前記バーストECC記憶ユニットにわたって、前記バースト書込みデータワードの前記DIMM内の前記受信されたバーストECCワードをストライプするステップと
を含む方法。
【請求項１１】
前記DIMMが、前記受信された書込みデータアドレスにおける前記バーストデータ記憶ユニットの前記バーストECC記憶ユニットの単一ビットで、前記バースト書込みデータワードの単一ビットデータインジケータから構成される前記少なくとも1つのデータインジケータを記憶するように構成される、請求項10に記載の方法。
【請求項１２】
前記DIMMが、前記受信された書込みデータアドレスにおける前記バーストデータ記憶ユニットの前記バーストECC記憶ユニットの複数ビットで、前記バースト書込みデータワードの複数ビットデータインジケータから構成される前記少なくとも1つのデータインジケータを記憶するように構成される、請求項10に記載の方法。
【請求項１３】
前記受信された書込みデータアドレスにおける前記バーストECC記憶ユニット内のデータビットセルの前記数よりも少なくとも2つ少ないビットで、前記バーストECC記憶ユニットにわたって、前記バースト書込みデータワードの前記受信されたバーストECCワードをストライプするステップを含む請求項10に記載の方法。
【請求項１４】
前記DIMMにおいて読取りデータアドレスを含むメモリ読取り要求を受信するステップと、
前記DIMM内の前記読取りデータアドレスに記憶された1つまたは複数のバースト読取りデータを取り出すために、前記DIMM内の前記読取りデータアドレスにアクセスするステップと、
前記読取りデータアドレスに記憶された前記1つまたは複数のバースト読取りデータをメモリコントローラに通信するステップであり、前記1つまたは複数のバースト読取りデータが各々、バースト読取りデータワード、前記バースト読取りデータワードのバーストECCワード、および前記バースト読取りデータワードの前記少なくとも1つのデータインジケータを含む、ステップと
をさらに含む請求項10に記載の方法。
【請求項１５】
中央処理装置(CPU)ベースシステムのメモリシステムであって、
デュアルインラインメモリモジュール(DIMM)であり、前記DIMMが、
複数のバーストデータ記憶ユニット
を含み、前記複数のバーストデータ記憶ユニットの中の各バーストデータ記憶ユニットが、
バースト長を合計した複数のデータライン記憶ユニットにわたってストライプされたバーストデータワード記憶ユニットであり、前記複数のデータライン記憶ユニットの中の各データライン記憶ユニットが64データビットセルを含む、バーストデータワード記憶ユニットと、
複数のECCライン記憶ユニットにわたってストライプされたバースト誤り訂正コード(ECC)記憶ユニットであり、前記複数のECCライン記憶ユニットの中の各ECCライン記憶ユニットが、データライン記憶ユニットに対応し、各ECCライン記憶ユニットが8データビットセルを含む、バーストECC記憶ユニットと
を含み、前記DIMMが、
書込みデータアドレスと、バースト書込みデータブロック長のバースト書込みデータとを含むバーストメモリ書込み要求を受信し、前記バースト書込みデータが、バースト書込みデータワードと、前記バースト書込みデータワードのバーストECCワードと、前記バースト書込みデータワードの少なくとも1つのデータインジケータとを含み、
前記受信された書込みデータアドレスにおける前記バーストデータワード記憶ユニットにわたって、前記受信されたバースト書込みデータワードをストライプし、
前記受信された書込みデータアドレスにおける前記バーストECC記憶ユニット内のデータビットセルの数よりも少ないビットで、前記バーストECC記憶ユニットにわたって、前記バースト書込みデータワードの前記受信されたバーストECCワードをストライプし、
前記受信された書込みデータアドレスにおける前記バーストデータ記憶ユニットの前記バーストECC記憶ユニット内に、前記バースト書込みデータワードの前記少なくとも1つのデータインジケータを記憶する
ように構成されるDIMMと、
メモリコントローラであり、
前記書込みデータアドレスと、書込みデータブロック長の書込みデータとを含むメモリ書込み要求を受信し、
前記書込みデータの1つまたは複数のバーストECCワードを計算し、前記1つまたは複数のバーストECCワードの各々が、定義されたECCに従って、前記バーストECC記憶ユニット内のデータビットセルの前記数よりも短い長さを有し、
前記書込みデータに基づいて前記バースト書込みデータブロック長の1つまたは複数のバースト書込みデータを構築し、前記1つまたは複数のバースト書込みデータの各々が、バースト書込みデータワード、前記バースト書込みデータのバーストECCワード、および前記バースト書込みデータワードの少なくとも1つのデータインジケータを含み、
前記DIMM内の前記書込みデータアドレスに記憶されるように、前記書込みデータアドレスおよび前記1つまたは複数のバースト書込みデータワードを前記DIMMに通信する
ように構成される、メモリコントローラと
を含むメモリシステム。
【請求項１６】
前記メモリコントローラが、前記書込みデータの前記1つまたは複数のバーストECCワードを計算するように構成されるECCエンコーダをさらに含み、前記1つまたは複数のバーストECCワードの各々が、前記定義されたECCに従って、前記バーストECC記憶ユニット内のデータビットセルの前記数よりも短い長さを有する、請求項15に記載のメモリシステム。
【請求項１７】
前記メモリコントローラが、
前記DIMM内のメモリブロックの読取りデータアドレスを含むメモリ読取り要求を受信し、
前記メモリ読取り要求を前記DIMMに通信し、
前記DIMM内の前記読取りデータアドレスに記憶された1つまたは複数のバースト読取りデータを前記DIMMから受信し、前記1つまたは複数のバースト読取りデータが各々、バースト読取りデータワード、前記バースト読取りデータワードのバーストECCワード、および前記バースト読取りデータワードの前記少なくとも1つのデータインジケータを含み、
前記1つまたは複数のバースト読取りデータの前記1つまたは複数のバーストECCワードを計算し、
前記1つまたは複数のバースト読取りデータがビット誤りを有するかどうかを決定するために、前記1つまたは複数のバースト読取りデータについての前記計算された1つまたは複数のバーストECCワードを比較し、
バス上で前記DIMMから前記1つまたは複数のバースト読取りデータを通信する
ようにさらに構成され、
前記DIMMが、
前記読取りデータアドレスを含む前記メモリ読取り要求を受信し、
前記DIMM内の前記読取りデータアドレスに記憶された前記1つまたは複数のバースト読取りデータを取り出すために、前記読取りデータアドレスにアクセスし、
前記読取りデータアドレスに記憶された前記1つまたは複数のバースト読取りデータを前記メモリコントローラに通信し、前記1つまたは複数のバースト読取りデータの各々が、バースト読取りデータワード、前記バースト読取りデータワードのバーストECCワード、および前記バースト読取りデータワードの前記少なくとも1つのデータインジケータを含む、
ようにさらに構成される、
請求項15に記載のメモリシステム。
【請求項１８】
前記メモリコントローラが、
前記1つまたは複数のバースト読取りデータの前記1つまたは複数のバーストECCワードを計算し、
前記1つまたは複数のバースト読取りデータがビット誤りを有するかどうかを決定するために、前記1つまたは複数のバースト読取りデータについての前記計算された1つまたは複数のバーストECCワードを比較する
ように構成されるECCデコーダをさらに含む、請求項17に記載のメモリシステム。
【請求項１９】
前記ECCデコーダが、前記バス上で前記ビット誤りを通信するようにさらに構成される、請求項18に記載のメモリシステム。
【請求項２０】
前記メモリコントローラが、ビット誤り訂正コードを使用して、前記1つまたは複数のバースト書込みデータワードの各々を複数のビットシンボルに符号化するようにさらに構成される、請求項17に記載のメモリシステム。
【請求項２１】
前記ビット誤り訂正コードがリードソロモン(RS)コードから構成される、請求項20に記載のメモリシステム。
【請求項２２】
前記メモリコントローラが、
前記1つまたは複数のバースト書込みデータワードの各々を43の6ビットシンボルに符号化し、
前記1つまたは複数のバーストECCワードの各々を5つの6ビットシンボルに符号化する
ように構成されることによって、前記1つまたは複数のバースト書込みデータワードの各々を前記RSコードで符号化するように構成される、請求項21に記載のメモリシステム。
【請求項２３】
前記メモリコントローラが、
前記ビット誤り訂正コードに基づいて、前記1つまたは複数のバースト読取りデータの中のバースト読取りデータについてのビットシンボルにおける単一ビット誤りを検出し、
前記ビット誤り訂正コードに基づいて前記バースト読取りデータにおける前記ビットシンボルの前記単一ビット誤りを訂正する
ようにさらに構成される、請求項20に記載のメモリシステム。
【請求項２４】
前記メモリコントローラが、前記ビット誤り訂正コードに基づいて、少なくとも1つのビット誤りが前記読取りデータアドレスにおける前記DIMM内のメモリ行の前記1つまたは複数のバースト読取りデータの中のバースト読取りデータについての少なくとも3つの隣接するビットシンボルにおいて検出されることに基づいて行誤りを検出するようにさらに構成される、請求項20に記載のメモリシステム。
【請求項２５】
前記メモリコントローラが、前記ビット誤り訂正コードに基づいて、少なくとも1つのビット誤りが前記読取りデータアドレスにおける前記DIMM内のメモリ列の前記1つまたは複数のバースト読取りデータの中のバースト読取りデータについての少なくとも2つの隣接するビットシンボルにおいて検出されることに基づいて行誤りを検出するようにさらに構成される、請求項20に記載のメモリシステム。
【請求項２６】
前記メモリコントローラが、前記ビット誤り訂正コードに基づいて、少なくとも1つのビット誤りが前記読取りデータアドレスにおける前記DIMM内のメモリ列の前記1つまたは複数のバースト読取りデータの中のバースト読取りデータについての少なくとも2つの隣接するビットシンボルにおけるビットラインにおいて検出されることに基づいて行誤りを検出するようにさらに構成される、請求項20に記載のメモリシステム。
【請求項２７】
中央処理装置(CPU)ベースシステム内のメモリシステムにデータを書き込む方法であって、
書込みデータアドレスと、書込みデータブロック長の書込みデータとを含むメモリ書込み要求を受信するステップと、
前記書込みデータの1つまたは複数のバースト誤り訂正コード(ECC)ワードを計算するステップであり、前記1つまたは複数のバーストECCワードの各々が、定義されたECCに従って、バーストECC記憶ユニット内のデータビットセルの数よりも短い長さを有する、ステップと、
前記書込みデータに基づいてバースト書込みデータブロック長の1つまたは複数のバースト書込みデータを構築するステップであり、前記1つまたは複数のバースト書込みデータの各々が、バースト書込みデータワード、前記バースト書込みデータのバーストECCワード、および前記バースト書込みデータワードの少なくとも1つのデータインジケータを含む、ステップと、
デュアルインラインメモリモジュール(DIMM)内の前記書込みデータアドレスに記憶されるように、前記書込みデータアドレスおよび1つまたは複数のバースト書込みデータワードを前記DIMMに通信するステップと、
前記DIMMにおいて前記メモリ書込み要求を受信するステップであり、前記メモリ書込み要求が、前記書込みデータアドレスと、前記バースト書込みデータブロック長の前記1つまたは複数のバースト書込みデータとを含み、前記1つまたは複数のバースト書込みデータが、バースト書込みデータワードと、前記バースト書込みデータワードのバーストECCワードと、前記バースト書込みデータワードの少なくとも1つのデータインジケータとを含む、ステップと、
前記DIMM内の前記受信された書込みデータアドレスにおけるバーストデータ記憶ユニット内のバーストデータワード記憶ユニットにわたって、前記受信されたバースト書込みデータワードをストライプするステップであり、前記DIMMが、
複数のバーストデータ記憶ユニットを含み、前記複数のバーストデータ記憶ユニットの中の各バーストデータ記憶ユニットが、
バースト長を合計した複数のデータライン記憶ユニットにわたってストライプされたバーストデータワード記憶ユニットであり、前記複数のデータライン記憶ユニットの中の各データライン記憶ユニットが64データビットセルを含む、バーストデータワード記憶ユニットと、
複数のECCライン記憶ユニットにわたってストライプされたECC記憶ユニットであり、前記複数のECCライン記憶ユニットの中の各ECCライン記憶ユニットが、データライン記憶ユニットに対応し、各ECCライン記憶ユニットが8データビットセルを含む、ECC記憶ユニットと
を含む、ステップと、
前記受信された書込みデータアドレスにおける前記バーストECC記憶ユニット内のデータビットセルの数よりも少ないビットで、前記バーストECC記憶ユニットにわたって、前記バースト書込みデータワードの前記DIMM内の前記受信された1つまたは複数のバーストECCワードをストライプするステップと
を含む方法。
【請求項２８】
メモリ読取り要求を前記DIMMに通信するステップと、
前記DIMMにおいて読取りデータアドレスを含む前記メモリ読取り要求を受信するステップと、
前記DIMM内の前記読取りデータアドレスに記憶された1つまたは複数のバースト読取りデータを取り出すために、前記DIMM内の前記読取りデータアドレスにアクセスするステップと、
前記読取りデータアドレスに記憶された前記1つまたは複数のバースト読取りデータをメモリコントローラに通信するステップであり、前記1つまたは複数のバースト読取りデータが各々、バースト読取りデータワード、前記バースト読取りデータワードのバーストECCワード、および前記バースト読取りデータワードの前記少なくとも1つのデータインジケータを含む、ステップと、
前記DIMMにおいてメモリブロックの前記読取りデータアドレスを含む前記メモリ読取り要求を受信するステップと、
前記DIMM内の前記読取りデータアドレスに記憶された前記1つまたは複数のバースト読取りデータを前記DIMMから受信するステップであり、前記1つまたは複数のバースト読取りデータが各々、バースト読取りデータワード、前記バースト読取りデータワードのバーストECCワード、および前記バースト読取りデータワードの前記少なくとも1つのデータインジケータを含む、ステップと、
前記1つまたは複数のバースト読取りデータの前記1つまたは複数のバーストECCワードを計算するステップと、
前記1つまたは複数のバースト読取りデータがビット誤りを有するかどうかを決定するために、前記1つまたは複数のバースト読取りデータについての前記計算された1つまたは複数のバーストECCワードを比較するステップと、
バス上で前記DIMMから前記1つまたは複数のバースト読取りデータワードを通信するステップと
をさらに含む請求項27に記載の方法。
【請求項２９】
ビット誤り訂正コードを使用して、前記1つまたは複数のバースト書込みデータワードの各々を複数のビットシンボルに符号化するステップをさらに含む請求項27に記載の方法。
【請求項３０】
前記ビット誤り訂正コードがリードソロモン(RS)コードから構成され、
前記1つまたは複数のバースト書込みデータワードの各々を43の6ビットシンボルに符号化し、
前記1つまたは複数のバーストECCワードの各々を5つの6ビットシンボルに符号化する
ことによって、前記1つまたは複数のバースト書込みデータワードの各々を前記RSコードで符号化するステップを含む
請求項29に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権出願
本出願は、その全体が参照により本明細書に組み込まれている、2015年2月3日に出願した「MEMORY CONTROLLERS EMPLOYING MEMORY BANDWIDTH COMPRESSION WITH COMPRESSION INDICATOR PROVIDED IN DATA LINE ERROR CORRECTING CODES (ECCs), AND RELATED PROCESSOR-BASED SYSTEMS AND METHODS」と題する米国仮特許出願第62/111,358号の優先権を主張するものである。
【０００２】
本出願はまた、その全体が参照により本明細書に組み込まれている、2015年9月17日に出願した、「DUAL IN-LINE MEMORY MODULES (DIMMs) SUPPORTING STORAGE OF A DATA INDICATOR(S) IN AN ERROR CORRECTING CODE (ECC) STORAGE UNIT DEDICATED TO STORING AN ECC」と題する、米国特許出願第14/857,491号の優先権を主張するものである。
【０００３】
本開示の技術は、コンピュータシステム内のメモリシステムへのインターフェースを提供するメモリコントローラに関する。
【背景技術】
【０００４】
マイクロプロセッサは、多種多様な用途において計算タスクを実行する。典型的なマイクロプロセッサの用途は、ソフトウェア命令を実行する1つまたは複数の中央処理装置(CPU)を含む。ソフトウェア命令は、メモリ内の位置からデータをフェッチするようにCPUに命令し、フェッチしたデータを使用して1つまたは複数のCPU動作を実行し、結果を生成し得る。結果は、次いで、メモリ内に記憶され得る。非限定的な例として、このメモリは、CPUローカルなキャッシュ、CPUブロック内のCPU間で共有されるローカルキャッシュ、複数のCPUブロック間で共有されるキャッシュ、またはマイクロプロセッサのメインメモリであり得る。
【０００５】
この点について、図1は、CPUベースシステム12を含む例示的なシステムオンチップ(SoC)10の概略図である。CPUベースシステム12は、この例では複数のCPUブロック14(1)〜14(N)を含み、ここで「N」は、所望のCPUブロック14(1)〜14(N)の任意の数に等しい。図1の例では、CPUブロック14(1)〜14(N)の各々は、2つのCPU16(1)、CPU16(2)を含む。CPUブロック14(1)〜14(N)は、さらに、それぞれ、共有レベル2(L2)キャッシュ18(1)〜18(N)を含む。共有レベル3(L3)キャッシュ20はまた、CPUブロック14(1)〜14(N)の各々のいずれかによって使用される、またはCPUブロック14(1)〜14(N)の各々の間で共有されるキャッシュされたデータを記憶するために設けられる。内部システムバス22は、CPUブロック14(1)〜14(N)の各々が共有L3キャッシュ20ならびに他の共有リソースにアクセスすることを可能にするために設けられる。内部システムバス22を介してCPUブロック14(1)〜14(N)によってアクセスされる他の共有リソースは、メイン外部メモリ(たとえば、非限定的な例として、デュアルインラインメモリモジュール(DIMM)において提供される二重レートダイナミックランダムアクセスメモリ(DRAM)(DDR))にアクセスするためのメモリコントローラ24、周辺機器26、他のストレージ28、エクスプレス周辺機器構成要素相互接続(PCI)(PCI-e)インターフェース30、ダイレクトメモリアクセス(DMA)コントローラ32、および/または統合メモリコントローラ(IMC)34を含み得る。
【０００６】
図1のCPUベースシステム12において実行されるCPUベースのアプリケーションは、複雑さおよび性能が向上するにつれて、メモリ容量が制約となり得る。しかしながら、CPUベースシステム内に追加のメモリ容量を設けることによって、集積回路(IC)上のメモリに必要なコストと面積とが増す。たとえば、図1のCPUベースシステム12などのCPUベースシステムがSoC10などのSoC内に設けられるとすれば、追加のメモリ容量を付加することは、SoCパッケージングを増加させることがある。物理メモリ容量を増加させることなく、CPUベースシステムの有効メモリ容量を増加させるために、データ圧縮が利用され得る。メモリコントローラとメモリとの間のメモリアクセス帯域幅を増加させるために、データ圧縮を利用することもできる。
【０００７】
たとえば、図1のCPUベースシステム12における書込み動作のためのデータを圧縮することができ、メモリコントローラ24は、定義された圧縮アルゴリズムに従ってデータを圧縮するように構成され得る。次いで、圧縮データは、書込み動作のためにメモリ内のデータアドレスに圧縮された形式で書き込まれる。読取り動作がメモリコントローラ24によって実行されると、メモリコントローラ24は、メモリ内のアクセスされたデータアドレスに記憶されたデータが圧縮された形式で記憶されているか、圧縮されていない形式で記憶されているかを決定することができる必要がある。この点について、メモリ内のデータアドレスに関連付けられたデータインジケータが提供され得る。このようにして、メモリコントローラ24は、所与のデータアドレスについての読取り動作のためにデータインジケータを調べて、読み取られたデータを圧縮解除すべきかどうかを決定することができる。しかしながら、メモリ内のデータアドレスに関連付けられた追加のデータインジケータを提供することは、メモリサイズを増加させる。また、所与のデータアドレスにおけるデータと同じバーストでデータインジケータを読み取ることが望ましい場合、メモリコントローラ24とメモリとの間のメモリデータバス幅を増加させる必要があり、これは望ましくない場合がある。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
メモリサイズを拡張することなく、またメモリデータバスの幅を増大させることなく、一例として、読み取られたデータが圧縮されているか圧縮されていないかを決定するために、圧縮されたメモリシステム内のメモリに関連して、データインジケータなどのインジケータを記憶し、それにアクセスすることを提供することが望ましい。
【課題を解決するための手段】
【０００９】
本明細書で開示される態様は、誤り訂正コード(ECC)の記憶に専用のECC記憶ユニットへのデータインジケータの記憶をサポートするデュアルインラインメモリモジュール(DIMM)を含む。このようにして、データインジケータは、DIMM内に追加のデータストレージを提供し、DIMMのデータ幅および/またはDIMMのデータバス幅を増加させる必要なしに、DIMMに記憶され得る。関連するメモリコントローラ、メモリシステム、および方法もまた開示される。このようにして、データインジケータを記憶するために追加のメモリを設ける必要がない。データインジケータは、様々な非限定的な用途のために、DIMM内のECC記憶ユニットに記憶され得る。たとえば、データインジケータは、メモリに記憶されたデータが圧縮されているか圧縮されていないかを示すためのデータインジケータとしてECC記憶ユニットに記憶され得る。DIMM内のECC記憶ユニットにデータインジケータを記憶することが望ましい別の例は、DIMM内のデータの各キャッシュラインがシステム内の他の処理ノードに存在するかどうかなど、キャッシュメモリとして使用されるDIMMにキャッシュコヒーレンシ情報を記憶することであり得る。
【００１０】
この点について、本明細書で開示されるいくつかの態様では、誤り訂正コード(ECC)の記憶に専用のECC記憶ユニットにおけるデータインジケータの記憶をサポートするデュアルインラインメモリモジュール(DIMM)が提供される。DIMMは、中央処理装置(CPU)ベースシステムへのデータの記憶を提供する。メモリコントローラは、読取りおよび書込み動作のためにDIMMへのインターフェースを提供する。DIMMは、複数のバーストデータ記憶ユニットに構成されている。バーストデータ記憶ユニットは、CPUベースシステム内のメモリコントローラによって提供されるバーストデータ長に応じたバーストデータトランザクションのためのDIMM内の記憶ユニットビットサイズである。たとえば、バーストデータ長は、DIMM内の4つのデータライン記憶ユニットであってもよく、各データライン記憶ユニットは64データビットセルである。DIMMはまた、データライン記憶ユニットに各々対応する複数のECCライン記憶ユニットにわたってストライプされたバーストECC記憶ユニットを提供するようにも構成される。たとえば、各ECCライン記憶ユニットは、8データビットセルを含むECCバイト記憶ユニットを含む。この点について、DIMMは72ビット幅である(すなわち、各データライン記憶ユニットは、64データビットを記憶するための64ビットセル、および8ECCビットを記憶するための8ビットセルECCライン記憶ユニットである)。したがって、メモリコントローラとDIMMとの間のメモリバスは、72ビット幅になるように提供される。したがって、この例では、各バーストデータ記憶ユニットは、256ビットのバーストデータ(すなわち、4×64ビットデータバイト記憶ユニットのバースト長)、およびそのバーストデータの32ビットのバーストECCワード(すなわち、4×8ビットECCバイト記憶ユニットのバースト長)を記憶することができる。
【００１１】
例示的な書込み動作の場合、DIMMは、バーストデータワード、バーストデータワードのバーストECCワード、およびバーストデータワードのデータインジケータを受信するように構成される。次いで、DIMMは、書込み動作のための書込みデータアドレスにおけるバーストデータ記憶ユニット内のバーストデータワード記憶ユニットにわたって、受信されたバーストデータワードをストライプするように構成される。DIMMはまた、バーストECC記憶ユニット内のデータビットセルの数よりも少ないビットで、バーストECC記憶ユニットにわたって、バーストデータワードの受信されたバーストECCワードをストライプするように構成される。このようにして、DIMMは、データインジケータを記憶するためにメモリサイズを増加させる必要がないように、バーストデータワードの少なくとも1つのデータインジケータを、バーストデータ記憶ユニットのバーストECC記憶ユニット内の余分な残りのビットで記憶するように構成することができる。また、同じバーストサイクル内のECCの一部としてDIMM内のバーストデータワードの書込みまたは読取り動作でデータインジケータを書き込む、または読み取ることができるので、レイテンシの増加を回避するためにDIMMのメモリデータバス幅を増加させる必要はない(たとえば、上記の例では72ビットを超えて)。
【００１２】
この点について、一態様では、DIMMが提供される。DIMMは、複数のバーストデータ記憶ユニットを含む。複数のバーストデータ記憶ユニットの中の各バーストデータ記憶ユニットは、バースト長を合計した複数のデータライン記憶ユニットにわたってストライプされたバーストデータワード記憶ユニットを含む。複数のデータライン記憶ユニットの中の各データライン記憶ユニットは、64データビットセルを含む。複数のバーストデータ記憶ユニットの中の各バーストデータ記憶ユニットは、複数のECCライン記憶ユニットにわたってストライプされたバーストECC記憶ユニットをさらに含む。複数のECCライン記憶ユニットの中の各ECCライン記憶ユニットは、データライン記憶ユニットに相当し、8データビットセルを含む。DIMMは、バーストメモリ書込み要求のための書込みデータアドレスを受信し、バーストメモリ書込み要求のためのバースト書込みデータブロック長のバースト書込みデータを受信するように構成される。バースト書込みデータは、バースト書込みデータワードと、バースト書込みデータワードのバーストECCワードと、バースト書込みデータワードの少なくとも1つのデータインジケータとを含む。DIMMは、受信された書込みデータアドレスにおけるバーストデータワード記憶ユニットにわたって、受信されたバースト書込みデータワードをストライプするようにさらに構成される。DIMMはまた、受信された書込みデータアドレスにおけるバーストECC記憶ユニット内のデータビットセルの数よりも少ないビットで、バーストECC記憶ユニットにわたって、バースト書込みデータワードの受信されたバーストECCワードをストライプするようにも構成される。DIMMは、受信された書込みデータアドレスにおけるバーストデータ記憶ユニットのバーストECC記憶ユニット内に、バースト書込みデータワードの少なくとも1つのデータインジケータを記憶するようにさらに構成される。
【００１３】
別の態様では、CPUベースシステムにおいてDIMMにデータを書き込む方法が提供される。この方法は、DIMMにおいてメモリ書込み要求を受信するステップを含む。メモリ書込み要求は、書込みデータアドレスと、バースト書込みデータブロック長のバースト書込みデータとを含む。バースト書込みデータは、バースト書込みデータワードと、バースト書込みデータワードのバーストECCワードと、バースト書込みデータワードの少なくとも1つのデータインジケータとを含む。この方法は、DIMM内の受信された書込みデータアドレスにおけるバーストデータ記憶ユニット内のバーストデータワード記憶ユニットにわたって、受信されたバースト書込みデータワードをストライプするステップも含む。DIMMは、複数のバーストデータ記憶ユニットを含む。複数のバーストデータ記憶ユニットの中の各バーストデータ記憶ユニットは、バースト長を合計した複数のデータライン記憶ユニットにわたってストライプされたバーストデータワード記憶ユニットを含む。複数のデータライン記憶ユニットの中の各データライン記憶ユニットは、64データビットセルを含む。複数のバーストデータ記憶ユニットの中の各バーストデータ記憶ユニットは、複数のECCライン記憶ユニットにわたってストライプされたバーストECC記憶ユニットをさらに含む。複数のECCライン記憶ユニットの中の各ECCライン記憶ユニットは、データライン記憶ユニットに相当し、8データビットセルを含む。この方法は、受信された書込みアドレスにおけるバーストECC記憶ユニット内のデータビットセルの数よりも少ないビットで、バーストECC記憶ユニットにわたって、バースト書込みデータワードのDIMM内の受信されたバーストECCワードをストライプするステップをさらに含む。
【００１４】
別の態様では、CPUベースシステムのメモリシステムが提供される。メモリシステムは、DIMMを含む。DIMMは、複数のバーストデータ記憶ユニットを含む。複数のバーストデータ記憶ユニットの中の各バーストデータ記憶ユニットは、バースト長を合計した複数のデータライン記憶ユニットにわたってストライプされたバーストデータワード記憶ユニットを含む。複数のデータライン記憶ユニットの中の各データライン記憶ユニットは、64データビットセルを含む。複数のバーストデータ記憶ユニットの中の各バーストデータ記憶ユニットは、複数のECCライン記憶ユニットにわたってストライプされたバーストECC記憶ユニットをさらに含む。複数のECCライン記憶ユニットの中の各ECCライン記憶ユニットは、データライン記憶ユニットに相当し、8データビットセルを含む。DIMMは、書込みデータアドレスと、バースト書込みデータブロック長のバースト書込みデータとを含むバーストメモリ書込み要求を受信するように構成される。バースト書込みデータは、バースト書込みデータワードと、バースト書込みデータワードのバーストECCワードと、バースト書込みデータワードの少なくとも1つのデータインジケータとを含む。DIMMはまた、受信された書込みデータアドレスにおけるバーストデータワード記憶ユニットにわたって、受信されたバースト書込みデータワードをストライプするようにも構成される。DIMMはさらに、受信された書込みデータアドレスにおけるバーストECC記憶ユニット内のデータビットセルの数よりも少ないビットで、バーストECC記憶ユニットにわたって、バースト書込みデータワードの受信されたバーストECCワードをストライプするように構成される。DIMMは、受信された書込みデータアドレスにおけるバーストデータ記憶ユニットのバーストECC記憶ユニット内に、バースト書込みデータワードの少なくとも1つのデータインジケータを記憶するようにさらに構成される。メモリシステムは、メモリコントローラをさらに含む。メモリコントローラは、書込みデータアドレスと、書込みデータブロック長の書込みデータとを含むメモリ書込み要求を受信するように構成される。メモリコントローラは、書込みデータの1つまたは複数のバーストECCワードを計算するように構成され、1つまたは複数のバーストECCワードの各々が、定義されたECCに従って、バーストECC記憶ユニット内のデータビットセルの数よりも短い長さを有する。メモリコントローラはまた、書込みデータに基づいてバースト書込みデータブロック長の1つまたは複数のバースト書込みデータを構築するようにも構成される。1つまたは複数のバースト書込みデータの各々は、バースト書込みデータワードと、バースト書込みデータワードのバーストECCワードと、バースト書込みデータワードの少なくとも1つのデータインジケータとを含む。メモリコントローラは、さらに、DIMM内の書込みデータアドレスに記憶されるように、書込みデータアドレスおよび1つまたは複数のバースト書込みデータワードをDIMMに通信するように構成される。
【００１５】
別の態様では、CPUベースシステム内のメモリシステムにデータを書き込む方法が提供される。この方法は、書込みデータアドレスと、書込みデータブロック長の書込みデータとを含むメモリ書込み要求を受信するステップを含む。この方法は、書込みデータの1つまたは複数のバーストECCワードを計算するステップであり、1つまたは複数のバーストECCワードの各々が、定義されたECCに従って、バーストECC記憶ユニット内のデータビットセルの数よりも短い長さを有する、ステップをさらに含む。この方法はまた、書込みデータに基づいてバースト書込みデータブロック長の1つまたは複数のバースト書込みデータを構築するステップも含む。1つまたは複数のバースト書込みデータの各々が、バースト書込みデータワードと、バースト書込みデータワードのバーストECCワードと、バースト書込みデータワードの少なくとも1つのデータインジケータとを含む。この方法は、DIMM内の書込みデータアドレスに記憶されるように、書込みデータアドレスおよび1つまたは複数のバースト書込みデータワードをDIMMに通信するステップをさらに含む。この方法は、DIMMにおいてメモリ書込み要求を受信するステップも含む。メモリ書込み要求は、書込みデータアドレスと、バースト書込みデータブロック長の1つまたは複数のバースト書込みデータとを含み、1つまたは複数のバースト書込みデータが、バースト書込みデータワードと、バースト書込みデータワードのバーストECCワードと、バースト書込みデータワードの少なくとも1つのデータインジケータとを含む。この方法は、DIMM内の受信された書込みデータアドレスにおけるバーストデータ記憶ユニット内のバーストデータワード記憶ユニットにわたって、受信されたバースト書込みデータワードをストライプするステップをさらに含む。DIMMは、複数のバーストデータ記憶ユニットを含む。複数のバーストデータ記憶ユニットの中の各バーストデータ記憶ユニットは、バースト長を合計した複数のデータライン記憶ユニットにわたってストライプされたバーストデータワード記憶ユニットを含む。複数のデータライン記憶ユニットの中の各データライン記憶ユニットは、64データビットセルを含む。複数のバーストデータ記憶ユニットの中の各バーストデータ記憶ユニットは、複数のECCライン記憶ユニットにわたってストライプされたECC記憶ユニットを含み、複数のECCライン記憶ユニットの中の各ECCライン記憶ユニットが、データライン記憶ユニットに対応し、8データビットセルを含む。この方法は、受信された書込みデータアドレスにおけるバーストECC記憶ユニット内のデータビットセルの数よりも少ないビットで、バーストECC記憶ユニットにわたって、バースト書込みデータワードのDIMM内の受信された1つまたは複数のバーストECCワードをストライプするステップをさらに含む。
【図面の簡単な説明】
【００１６】
【図１】中央処理装置(CPU)ベースシステムを含む例示的なシステムオンチップ(SoC)の概略図である。
【図２】複数のCPUと、メモリ帯域幅の圧縮を提供するように構成されるメモリコントローラとを有する例示的なCPUベースシステムを含むSoCの概略図である。
【図３】メモリコントローラが、さらに、メモリ帯域幅の圧縮を提供するために用いられ得るオプションの内部メモリに通信可能に結合された、図2のメモリコントローラのより詳細な概略図である。
【図４】図2のコントローラであり得るメモリコントローラと、誤り訂正コード(ECC)の記憶に専用のECC記憶ユニットへのデータインジケータの記憶をサポートするデュアルインラインメモリモジュール(DIMM)とを含む例示的なメモリシステムである。
【図５】各々が少なくとも1つのデータインジケータを記憶するための追加の余分なビットを提供するために、バーストECC記憶ユニット内のデータビットセルの数よりも少ないビットでバーストECC記憶ユニットにわたってストライプされたバーストデータワードのバーストECCワード、およびバーストデータワードを記憶するための複数のデータライン記憶ユニットにわたってストライプされたバーストデータワード記憶ユニットを含む、DIMM内のデータライン記憶ユニットのバーストデータ記憶ユニットへの例示的なデータパーティションの図である。
【図６】図5に示すデータパーティションを提供するために図4のメモリシステム内に提供することができる例示的なDIMMである。
【図７Ａ】図4のメモリコントローラが、図5のDIMMの例示的なデータパーティションと互換性のあるDIMMに受信されたデータワードを記憶するための書込み動作を処理する例示的なプロセスを示すフローチャートである。
【図７Ｂ】図4のDIMMが、データインジケータとともにバーストデータ記憶ユニット内のバースト書込みデータワードおよびバースト書込みデータワードのバーストECCワードをストライプする例示的なプロセスを示すフローチャートである。
【図８Ａ】図4のメモリコントローラが、図5のDIMMの例示的なデータパーティションと互換性のあるDIMMに読取りデータワードを要求し、受信するための読取り動作を処理する例示的なプロセスを示すフローチャートである。
【図８Ｂ】図4のDIMMが、データインジケータとともにバーストデータ記憶ユニット内のバースト読取りデータワードおよびバースト読取りデータワードのバーストECCワードにアクセスする例示的なプロセスを示すフローチャートである。
【図９】DIMM内のコードワードにおける例示的な単一メモリビットセル障害を示す、図5の例示的なデータパーティションによる図6のDIMMの図である。
【図１０】8ビット幅で構成され、例示的なメモリバンクまたは行の障害を示す、図5の例示的なデータパーティションによる図6のDIMMの図である。
【図１１】4ビット幅で構成され、例示的なメモリバンクまたは行の障害を示す、図5の例示的なデータパーティションによる図6のDIMMの図である。
【図１２】例示的なメモリ列の障害を示す、図5の例示的なデータパーティションによる図6のDIMMの図である。
【図１３】例示的なメモリビットレーンの障害を示す、図5の例示的なデータパーティションによる図6のDIMMの図である。
【図１４】4ビット幅で構成され、例示的なメモリデータワードの障害を示す、図5の例示的なデータパーティションによる図6のDIMMの図である。
【図１５】限定はしないが図4のメモリシステム内のDIMMを含む、本明細書に開示された例示的な態様のいずれかによる、ECCの記憶に専用のECC記憶ユニットへのデータインジケータの記憶をサポートするDIMMを含み得る例示的なコンピューティングデバイスのブロック図である。
【発明を実施するための形態】
【００１７】
次に図面を参照しながら、本開示のいくつかの例示的な態様について述べる。本明細書において、「例示的」という語は、「例、実例、または例証としての働きをする」ことを意味するために使用される。本明細書で「例示的」として記述されるどんな態様も、他の態様よりも好ましいかまたは有利であると解釈されるべきとは必ずしも限らない。
【００１８】
誤り訂正コード(ECC)の記憶に専用のECC記憶ユニットへのデータインジケータの記憶をサポートする例示的なデュアルインラインメモリモジュール(DIMM)を説明する前に、まず、メモリシステムを含む例示的な中央処理装置(CPU)ベースシステムについて、図2および図3に関して説明する。本明細書中で説明するように、データインジケータが提供され、メモリコントローラによって書き込むことができるメモリ内の各データワードに関連付けられる。非限定的な例として、データインジケータは、書込み動作中にメモリコントローラが書込みデータワードを圧縮したかどうかを示すために使用され得る。また、データインジケータは、メモリコントローラによって読み取られ、使用され得る。たとえば、データワードが圧縮されて記憶されているか、または圧縮されずに記憶されているかを示すためにデータインジケータが使用される場合、メモリコントローラは、読取りデータワードを圧縮解除することができるように、読取り動作のための読取りデータワードが前もって圧縮されて記憶されているかどうかを決定するためにデータインジケータを使用し得る。ECCの記憶に専用のECC記憶ユニットへのデータインジケータの記憶をサポートするDIMMの本明細書で説明される態様は、データ圧縮を示すためのデータインジケータの記憶に限定されないことに留意されたい。
【００１９】
この点について、図2は、図1中のCPUベースシステム12と同様の複数のCPUブロック14(1)〜14(N)を有する例示的なCPUベースシステム12'を含むSoC10'の概略図である。図2中のCPUベースシステム12'は、図1中のCPUベースシステム12といくつかの共通の構成要素を含み、それらは、図1と図2との間で共通の要素番号によって示される。簡潔にするために、これらの構成要素を再び説明しない。しかしながら、図2のCPUベースシステム12'において、メモリコントローラ36が設けられる。メモリコントローラ36は、システムメモリ38へのアクセスを制御する。システムメモリ38は、非限定的な例として、1つまたは複数の二重データレート(DDR)ダイナミックランダムアクセスメモリ(DRAM)40(1)〜40(R)(以下、「DRAM40(1)〜40(R)」と呼ぶ)を備え得る。この例におけるメモリコントローラ36は、本明細書および以下で開示された態様によるメモリ帯域幅の圧縮を用いる。図1のCPUベースシステム12のメモリコントローラ24と同様に、図2のCPUベースシステム12'内のメモリコントローラ36は、内部システムバス22を介してCPUブロック14(1)〜14(N)によって共有される。
【００２０】
図2中のメモリコントローラ36の例示的な内部構成要素のより詳細な概略図を示すために、図3が提供される。この例では、メモリコントローラ36は、図2のCPUブロック14(1)〜14(N)を含む半導体ダイ46(1)、46(2)とは別の半導体ダイ44上に設けられる。代替的には、いくつかの態様では、メモリコントローラ36は、CPUブロック14(1)〜14(N)と共通の半導体ダイ(図示せず)内に含まれ得る。ダイ構成とは無関係に、CPUブロック14(1)〜14(N)が、内部システムバス22を介してメモリコントローラ36にメモリアクセス要求を行い、メモリコントローラ36を介してメモリからデータを受信することができるように、メモリコントローラ36が設けられる。
【００２１】
引き続き図3を参照すると、メモリコントローラ36は、DRAM40(1)〜40(R)を含むものとして図2および図3に示すシステムメモリ38へのメモリアクセスに対する動作を制御する。メモリコントローラ36は、メモリアクセス要求(図示せず)に対処するために使用される複数のメモリインターフェース(MEM I/F)48(1)〜48(P)(たとえば、DDR DRAMインターフェース)を含む。この点について、この例のメモリコントローラ36は、圧縮コントローラ50を含む。圧縮コントローラ50は、図2中のCPUブロック14(1)〜14(N)からのメモリアクセス要求に応答して、システムメモリ38に記憶されたデータを圧縮することと、システムメモリ38から取得したデータを伸長することとを制御する。このようにして、CPUブロック14(1)〜14(N)は、メモリコントローラ36によってアクセスされるメモリの実際の容量より大きい仮想メモリアドレス空間を提供され得る。圧縮コントローラ50はまた、内部システムバス22を介してCPUブロック14(1)〜14(N)に提供される情報の帯域幅圧縮を実行するように構成され得る。
【００２２】
以下でより詳細に論じるように、圧縮コントローラ50は、メモリ帯域幅圧縮を提供するために、任意の数の圧縮技術およびアルゴリズムを実行し得る。ローカルメモリ52は、そのような圧縮技術およびアルゴリズムを実行するために圧縮コントローラ50によって必要とされるデータ構造および他の情報のために設けられる。この点について、ローカルメモリ52は、スタティックランダムアクセスメモリ(SRAM)54の形態で設けられる。ローカルメモリ52は、圧縮技術およびアルゴリズムを実行するために圧縮コントローラ50のために必要とされ得るデータ構造および他のデータ記憶のために使用されるのに十分なサイズである。ローカルメモリ52はまた、メモリコントローラ36内の内部使用のための追加のキャッシュメモリを提供するために、レベル4(L4)キャッシュなどのキャッシュを含むように分割され得る。したがって、L4コントローラ55もまた、L4キャッシュへのアクセスを提供するためにメモリコントローラ36内に設けられてもよい。拡張圧縮技術およびアルゴリズムは、以下でより詳細に論じるように、より大きい内部メモリを必要とし得る。たとえば、ローカルメモリ52は、128キロバイト(kB)のメモリを提供し得る。
【００２３】
さらに、図3に示し、以下でより詳細に説明するように、随意の追加の内部メモリ56もまた、メモリコントローラ36のために設けられ得る。追加の内部メモリ56は、例として、DRAMとして設けられ得る。以下でより詳細に論じるように、追加の内部メモリ56は、CPUベースシステム12'のメモリ帯域幅の圧縮を増加させるために、追加の、またはメモリ圧縮および伸長機構を提供するメモリコントローラ36のためのローカルメモリ52内よりも大量のデータ構造および他のデータの記憶を容易にし得る。内部メモリコントローラ58は、圧縮に使用するための追加の内部メモリ56へのメモリアクセスを制御するために、メモリコントローラ36内に設けられる。内部メモリコントローラ58は、CPUブロック14(1)〜14(N)に対してアクセス可能または可視ではない。
【００２４】
上述したように、図3中のメモリコントローラ36は、いくつかの態様では、ゼロライン圧縮を含む、メモリ帯域幅の圧縮を実行し得る。ローカルメモリ52は、そのような圧縮のために使用される、より大きいデータ構造を記憶するために使用され得る。以下でより詳細に論じるように、メモリ帯域幅の圧縮は、メモリアクセスレイテンシを減少させ得、メモリアクセスレイテンシへの影響を最小限に抑えながら、より多くのCPU16(1)、16(2)またはそれらのそれぞれのスレッドが同じ数のメモリチャネルにアクセスすることを可能にし得る。いくつかの態様では、メモリチャネルの数は、そのような圧縮がメモリコントローラ36によって実行されなかった場合のより多くのメモリチャネルと比較して、同様のレイテンシ結果を達成しながら、減少され得、それは、低減したシステムレベルの電力消費をもたらし得る。
【００２５】
ローカルメモリ52および追加の内部メモリ56を含む、図3中のメモリコントローラ36内のメモリ帯域幅の圧縮のために提供されるリソースの各々は、リソースおよび領域間の所望のバランス、電力消費、メモリ容量の圧縮により増加したメモリ容量、ならびにメモリ帯域幅の圧縮により増加した性能を達成するために、互いに独立して、または互いに組み合わせて使用され得る。メモリ帯域幅の圧縮は、所望のように有効化または無効化され得る。さらに、メモリコントローラ36による使用のために上記で説明したリソースは、メモリ容量および/または帯域幅の圧縮効率、電力消費、ならびに性能の間で所望のトレードオフを達成するために、有効または無効にされ得る。メモリコントローラ36に利用可能なこれらのリソースを使用する例示的なメモリ帯域幅の圧縮技法を、ここで論じる。
【００２６】
ECC動作を実行するために、1つまたは複数のECCビットが図1のCPUベースシステム12などのメモリに含まれ得る。しかしながら、任意の数の理由または目的のために、メモリラインに関連して少なくとも1つのデータインジケータを記憶することが望ましい場合もある。たとえば、メモリコントローラCPUベースシステム12が記憶されたデータのデータ圧縮を実行することができる場合、メモリラインが圧縮形式で記憶されているかどうかを示すために、データインジケータが使用され得る。このようにして、システムメモリへのメモリアクセス要求を実行するとき、メモリコントローラは、メモリラインがメモリアクセス要求の処理の一部として圧縮されているかどうかを決定するために、アドレスされるべき物理アドレスに対応するメモリラインに関連付けられたデータインジケータをチェックし得る。別の非限定的な例として、記憶されたデータワードに関連してメモリに記憶されたデータインジケータは、記憶されたデータがCPUベースシステム内の別のメモリに存在するかどうかを示すためにキャッシュコヒーレンシに使用され得る。しかしながら、メモリ内のメモリラインのためのデータインジケータを提供することは、メモリサイズを増加させる。また、所与のデータアドレスにおけるデータと同じバースト内のデータインジケータを読み取ることが望ましい場合、メモリコントローラとメモリとの間のメモリデータバス幅を増加させなければならないことがあり、これは望ましくない可能性があり、レイテンシが増加し得る。
【００２７】
この点について、図4は、一例として図2のメモリコントローラ36であり得るメモリコントローラ132を含む例示的なメモリシステム130である。メモリシステム130は、上記で説明し、図2に示したCPUベースシステム12'を含むCPUベースシステムに設けることができる。DIMM134は、メモリデータを記憶するために設けられている。メモリコントローラ132およびDIMM134は、一般的には、同じ電圧ドメイン(図4のVddおよびVssとして示される)において電力が供給される。メモリコントローラ132は、読取り動作および書込み動作のためのメモリアクセス要求をDIMM134に提供するために、DIMM134に通信可能に結合される。メモリコントローラ132は、システムバス138を介してメモリ読取り要求136Rおよびメモリ書込み要求136Wを受信するように構成される。メモリ読取り要求136Rは、DIMM134に読み込まれる読取りデータアドレスを含む。メモリ書込み要求136Wは、書込みデータアドレスと、DIMM134内の書込みデータアドレスに書き込まれる書込みデータとを含む。メモリ書込み要求では、たとえば、書込みデータが圧縮可能かどうかを決定するようにメモリコントローラ132が構成されている場合、メモリコントローラ132は、圧縮アルゴリズムに従ってDIMM134に記憶されるべき書込みデータを圧縮することができる。上記で説明した例と同様に、DIMM134が、読取り動作中にメモリコントローラ132に少なくとも1つのデータインジケータを提供することができるように、メモリコントローラ132は、少なくとも1つのデータインジケータを書込み動作の一部としてDIMM134に提供するように構成されている。たとえば、データインジケータは、読み取られたデータが圧縮されて記憶されているのか、圧縮されずに記憶されているのかを示すために使用され得る。以下でより詳細に説明するように、DIMM134は、ECCの記憶に専用のECC記憶ユニットへの少なくとも1つのデータインジケータの記憶をサポートするように構成される。このようにして、データインジケータを記憶するために追加のメモリを設ける必要はない。
【００２８】
引き続き図4を参照すると、メモリコントローラ132は、図3のメモリコントローラ36内の圧縮コントローラ50に類似し得るコントローラ140を含む。コントローラ140は、メモリ書込み要求136Wについての書込みデータを受信するように構成される。とにかく、書込みデータはECC回路142にデータ入力(Din)として提供される。ECC回路142は、書込みデータのECCワードを計算するように構成されるECCエンコーダ144Eを含む。書込みデータ、書込みデータのECCワード、およびコントローラ140によって設定されたデータインジケータは、相互に連動して記憶されるように、メモリインターフェース(I/F)146を介してメモリバス148上でDIMM134に通信される。コントローラ140は、データ入力(Din)上の書込みデータとともにコマンド(たとえば、書込みコマンド)およびデータアドレス(たとえば、書込みデータアドレス)をcmd/addr情報としてメモリインターフェース146を介してDIMM134に提供するように構成される。メモリインターフェース146は、図3のメモリコントローラ36内のメモリインターフェース48であってもよく、またはそれに類似していてもよい。1つのデータバースト(すなわち、データバースト長)でメモリシステム130に転送することができるデータの量に応じて、メモリコントローラ132は、書込みデータを、DIMM134に通信される複数のバースト書込みデータワードに分解して記憶されるようにし得る。
【００２９】
たとえば、以下でより詳細に説明するように、図4のDIMM134は、72ビット幅であってもよい。図4のDIMM134は、各々が64データビットセル152を含む複数のデータライン記憶ユニット150(0)〜150(U)を含む。複数のデータライン記憶ユニット150(0)〜150(U)は、バーストデータ記憶ユニットを提供するためにDIMM134内でパーティションされ得る。バーストデータ記憶ユニットは、バーストデータ長によるバーストデータトランザクションのためのDIMM134における記憶ユニットのビットサイズである。たとえば、バーストデータ長は、DIMM134内の4つのデータライン記憶ユニット150(0)〜150(U)のサイズと等しくてもよく、各データライン記憶ユニット150(0)〜150(U)は、64データビットセル152を含むデータバイト記憶ユニットである。したがって、この例では、データバーストは32バイト(すなわち、データライン記憶ユニット150内の64ビット×4データライン)である。この例においても、メモリシステム130のデータワードサイズが64バイトである場合、各々32バイトの2つのデータバーストで提供される合計64バイトのこのデータワードを記憶するために、DIMM134において8つのデータライン記憶ユニット150(0)〜150(U)が使用される。
【００３０】
引き続き図4を参照すると、データライン記憶ユニット150(0)〜150(U)ごとに、ECCライン記憶ユニット154(0)〜154(U)もDIMM134内に設けられる。ECCライン記憶ユニット154(0)〜154(U)は、DIMM134内の1つまたは複数のデータライン記憶ユニット150(0)〜150(U)にわたってストライプされたデータワードに対応する1つまたは複数のECCワードを記憶するように構成される。したがって、以下でより詳細に説明するように、バーストデータワードが単一のデータライン記憶ユニット150のサイズよりも大きい場合、DIMM134は、複数のECCライン記憶ユニット154(0)〜154(U)にわたって書込みデータについての計算されたECCをストライプするように構成される。上記で説明したように、この例では、バーストデータワードは32バイトであり、したがって、データワードのECCコードは、4つのECCライン記憶ユニット150(0)〜150(U)に対応する各々8ビットの4つのECCライン記憶ユニット154(0)〜154(U)(すなわち、32ビット)にわたって32ビットにわたってDIMM134によってストライプすることができる。
【００３１】
引き続き図4を参照すると、記憶されたデータワードに関する指示を提供するために使用することができるデータインジケータを記憶するための記憶ユニットを提供するために、複数のデータインジケータユニット156(0)〜156(R)がDIMM134内に設けられる。以下で説明するように、使用のために選択されたECCビット誤り訂正コードに基づいて、ECCライン記憶ユニット154(0)〜154(U)の一部として、データインジケータユニット156(10)〜156(R)が提供されるので、データインジケータユニット156(0)〜156(R)を記憶するためにDIMM134に追加のビットの記憶は必要とされない。また、1つのデータインジケータユニット156のみが単一のデータワードごとに必要とされるので、データバースト長が、DIMM134内のデータライン記憶ユニット150(0)〜150(U)のサイズよりも記憶されているデータワードが大きい場合、データインジケータユニット156(0)〜156(R)の数は、データライン記憶ユニット150(0)〜150(U)の数とは異なり得る。最低でも、各データインジケータユニット156(0)〜156(R)は、対応する記憶されたデータワードに関する2つの状態のうちの1つを単に示すデータインジケータを記憶するために1ビットから構成することができる。メモリコントローラ132が書込みデータについて3つ以上の状態を決定するように構成されている場合、データインジケータユニット156(0)〜156(R)を、所与のデータワードについての複数のデータインジケータの記憶が符号化され、所与のデータワードに関連してDIMM134に記憶されることを可能にするためにも複数ビットを記憶するように構成することができる。
【００３２】
引き続き図4を参照すると、コントローラ140は、読取り動作を実行するためにシステムバス138を介して読取りデータアドレスを含むメモリ読取り要求136Rを受信するようにも構成される。この点について、コントローラ140は、読取りアドレスにおけるDIMM134によってアクセスされるべき読取りデータについてのcmd/addr情報を介して、読取り動作および読取りデータアドレスをDIMM134に提供する。DIMM134は、読取りデータと、読取りデータに関連付けられたECCと、読取りデータに関連付けられた少なくとも1つのデータインジケータとを出力データ(Dout)としてメモリコントローラ132のメモリインターフェース146に提供する。読取りデータに関連付けられたECCは、読取りデータがビット誤りを含むかどうかを決定するために、ECC回路142内のECCデコーダ144Dに提供される。ECCデコーダ144Dは、可能な場合、メモリコントローラ132によって使用されるECCビット誤り訂正コードに応じて、任意の検出されたビット誤りを訂正する。ビット誤りは、訂正誤り信号(corr_er)としてコントローラ140に通信される。非限定的な例として、コントローラ140は、読み取られたデータが圧縮されているか圧縮されていないかを決定するために、受信されたデータインジケータを使用することができる。圧縮されている場合、コントローラ140は、システムバス138上で読み取られたデータをメモリ読取り要求136Rを発行した要求元に提供するために、読み取られたデータを解凍する。
【００３３】
図5は、データインジケータをECCライン記憶ユニット154の一部として記憶する例を示すための、図4のメモリシステム130のDIMM134内のデータライン記憶ユニット150(0)〜150(U)の例示的なデータパーティションの図である。この点について、図5に示すように、DIMM134は、複数のバーストデータ記憶ユニット160(0)〜160(3)にパーティションされる。図5には、たとえばキャッシュラインのサイズ(すなわち256バイト)であり得るDIMM134の4つのバーストデータ記憶ユニット160(0)〜160(3)が示されている。この例では、上記で説明したように、バースト長は4であり、これは、そこに記憶されたバーストデータワードが32バイトの長さになることを可能にするために、各バーストデータ記憶ユニット160(0)〜160(3)が4つのデータライン記憶ユニット150(0)〜150(3)から構成されることを意味する。この例では、4つのバーストデータ記憶ユニット160(0)〜160(3)のみが示されているので、DIMM134には16のデータライン記憶ユニット150(0)〜150(15)のみが示されている。上記で説明したように、この例では、図4のメモリシステム130が設けられているCPUベースシステム内のデータワードは64バイトであるので、各データワードを、各々32バイトを記憶することができる2つのバーストデータ記憶ユニット160(0)〜160(1)内に2つのバーストデータワードとして記憶することができる。したがって、この例では、各バーストデータワード記憶ユニット160は、バースト長を合計した4つのデータライン記憶ユニット150(0)〜150(3)にわたってストライプされ、各データライン記憶ユニット150は各々、64データビットセルを含む。また、図5に示すように、DIMM134は、DIMM134がクロック信号の立上りエッジと立下りエッジの両方でクロックされることを意味するダブルデータレート(DDR)クロックである。これは、図5の右側に示されており、時間矢印158によって示されるように、データライン記憶ユニット150(0)〜150(15)が、時間とともにともに連続的にDIMM134によってどのようにアクセスされるかを説明するためにクロック信号ステータスが示されている。たとえば、データライン記憶ユニット150(0)は、サイクル「0」におけるクロック信号の立上りエッジ(すなわち、クロック0-r)においてアクセスされる。データライン記憶ユニット150(1)は、サイクル「0」におけるクロック信号の立下りエッジ(クロック0-f)においてアクセスされ、以下同様である。
【００３４】
引き続き図5を参照すると、DIMM134はまた、各々バーストECCワードを記憶することができる複数のバーストECC記憶ユニット162にパーティションされる。図5には、DIMM134の4つのバーストECC記憶ユニット162(0)〜162(3)が示されており、各バーストECC記憶ユニット162(0)〜162(3)は、それぞれのバーストデータ記憶ユニット160(0)〜160(3)に関連付けられている。この例では、上記で説明したように、バースト長は4であり、これは、各ECCライン記憶ユニット154が8データビットから構成されているので、各バーストECC記憶ユニット162(0)〜162(3)は、各バーストECCワードが32ビット長であるようにするために、4つのECCライン記憶ユニット154(0)〜154(3)から構成されることを意味する。この例では、4つのバーストデータ記憶ユニット160(0)〜160(3)のみが示されているので、DIMM134には16のECCライン記憶ユニット154(0)〜154(15)のみが示されている。上記で説明したように、この例では、図4のメモリシステム130が設けられているCPUベースシステム内のデータワードは64バイトであるので、各データワードは、各々32バイトを記憶することができる2つのバーストデータ記憶ユニット150(0)〜150(1)から構成されている。したがって、この例では、各バーストECC記憶ユニット162は、バースト長を合計した4つのECCライン記憶ユニット154(0)〜154(3)にわたってストライプされ、各ECCライン記憶ユニット154は各々、合計32ECCビットがバーストデータワードのバーストECCワードとして記憶されることを可能にするために、8データビットセルを含む。
【００３５】
この例では、データインジケータが、バーストデータ記憶ユニット160に記憶された所与のバーストデータワードのバーストECC記憶ユニット162に記憶されることを可能にするために、ECCビットサイズがバーストデータワードごとに32ビット未満であるECCビット誤り訂正コードが選択される。しかしながら、選択されたECCビット誤り訂正コードは、可能であれば、DIMM134に記憶されたデータワードの完全性を維持するために、極めて有能なビット誤り検出および訂正方式を提供することができることも望ましい。この点について、DIMM134へのデータの記憶に使用するためにメモリコントローラ132によって使用することができるようなECCビット誤り訂正コードの例は、リードソロモン(RS)ビット誤り訂正コード(以下、「RSコード」)である。RSコードは、図5に示すDIMM134のパーティションに従って使用することができる既知のECCビット誤り訂正コードである。
【００３６】
たとえば、図5に示すように、ハミング距離が6の{48, 43}のRSコードがメモリコントローラ132によって使用される。この点について、各バーストデータ記憶ユニット160および関連するバーストECC記憶ユニット162は、48の6ビットシンボルを記憶することができるコードワード166を含む。48シンボルのうちの43シンボルは、バーストデータワードを記憶するために使用されるデータシンボル168の形式のビットシンボルである(すなわち、各々258ビット=43シンボル×6ビット)。48シンボルのうちの5シンボルは、バーストECCワードを記憶するために使用されるチェックシンボル170の形式のビットシンボルである(すなわち、各々30ビット=5シンボル×6ビット)。6のハミング距離の{48, 43}のRSコードを、メモリコントローラ132がコードワード166当たり単一または2つのデータシンボル168/チェックシンボル170の誤りを訂正することを可能にするように構成することができ、コードワード166当たり3つのデータシンボル168/チェックシンボル170の誤りを検出することができる。あるいは、RSコードを、メモリコントローラ132がコードワード166当たり単一のデータシンボル168/チェックシンボル170の誤りを訂正することを可能にするように構成することができ、コードワード166当たり4つのデータシンボル168/チェックシンボル170の誤りを検出することができる。たとえば、図4のメモリシステム130がサーバ環境に設けられている場合、DIMM134は、4ビット幅のDRAMチップで構成され得る。したがって、複数の隣接するビットシンボル(すなわち、データシンボル168および/またはチェックシンボル170)におけるビット誤りを検出する能力は、図9〜図14に関して以下でより詳細に説明するように、一般的なタイプのメモリ障害を検出するために有用であり得る。
【００３７】
DIMM134は、72ビット幅のデータライン記憶ユニット150およびECCライン記憶ユニット154について各々64ビットのデータラインワードおよび8ビットのECCラインワードを記憶するように構成されているので、また、バースト長が4であるので、このRSコードを使用すると、4つの余分なビット172が残される(すなわち、72ビット×4バースト長=288ビット、288ビット-バーストデータワードの256ビット-バーストECCワードの30ビット=余分な4ビット)。この点について、このRSコードでは、追加の未使用の余分なビット172を提供するために、バーストECC記憶ユニット162内のデータビットセルの数よりも少ないビットで、DIMM134内のバーストECC記憶ユニット162にわたって、バーストデータワードのバーストECCワードをストライプすることができる。したがって、図5のDIMM134に示されているこれらの余分なビット172は未使用であり、したがって、コードワード166に記憶されたバーストデータワードのデータインジケータを記憶するために使用することができる。DIMM134内の2つのコードワード166にわたる64バイトのデータワード当たり4つの余分なビット172のうちの1つまたは複数を使用することができる。たとえば、データインジケータが単純なインジケータである場合、余分なビット172が1つのみ必要とされる。メモリコントローラ132によって異なるサイズのデータインジケータがデータワードのために必要とされる場合、データインジケータは、複数の余分なビット172にわたって符号化され得る。たとえば、この例では、データワード当たり4つの余分なビット172で、データワードに関する15の異なる状態を符号化することができる。
【００３８】
図6は、図4のメモリシステム130に設けることができ、図5に示すデータパーティションによる、メモリコントローラ132によるデータ記憶のためにパーティションすることができるDIMM134のより例示的な詳細を示す図である。この点について、DIMM134は、複数のDIMMチップ178(0)〜178(X)から構成される。この例では、9つのDIMMチップ178(0)〜178(8)がDIMM134に含まれている。DIMM134とその中のDIMMチップ178(0)〜178(8)をメモリバス148(図4参照)にインターフェースするために、物理的なDIMMコネクタ180が設けられている。1つのDIMMチップ178の例示的な詳細が図6に示されている。この例では、セルマトリックス181内のDIMM134の2つの隣接する行におけるストライプされたデータの16ビットをアドレス指定するために、各DIMMチップ178(0)〜178(8)は32行(R1〜R5)および32列(C1〜C5)でアドレス指定可能である。したがって、この例では、9つのDIMMチップ178(0)〜178(8)は、2つのデータライン記憶ユニット150(0)〜150(1)である128ビットを記憶することができる。書込み動作では、DIMM134に提供される書込みデータワードは、DIMMチップ178(0)〜178(8)のデータ入力(Din)上でDIMMチップ178(0)〜178(8)にわたってストライプされる。メモリ読取り動作136Rまたはメモリ書込み動作136Wのいずれかを示すために、メモリコントローラ132からのcmd/addr情報として、読取り/書込み(R/W)信号がDIMMチップ178(0)〜178(8)に提供される。メモリ読取り動作136Rでは、DIMMチップ178(0)〜178(8)に記憶されたアクセスデータが、メモリコントローラ132に提供されるようにそれぞれのデータ出力(Dout)上に提供される。
【００３９】
図4のメモリコントローラ132は、そこに記憶された各データワードについて少なくとも1つの余分なビット172が提供されることを可能にするビット誤り訂正コードを使用してDIMM134においてメモリ読取りおよび書込み動作を実行するように構成される。この点について、図7Aは、図4のメモリコントローラ132が、図5のDIMM134の例示的なデータパーティションと互換性のあるDIMM134に受信されたデータワードを記憶するための書込み動作を処理する例示的なプロセス190を示すフローチャートである。図7Bは、図4のDIMM134が、データインジケータとともにバーストデータ記憶ユニット160およびバーストECC記憶ユニット162内のバースト書込みデータワードおよびバースト書込みデータワードのバーストECCワードをストライプする例示的なプロセス210を示すフローチャートである。
【００４０】
図7Aを参照すると、プロセス190は、図4のメモリコントローラ132が、書込みデータアドレスおよび書込みデータブロック長の書込みデータを含むメモリ書込み要求136Wを受信することによって開始する(ブロック192)。たとえば、メモリコントローラ132が書込みデータを圧縮し、書込みデータが圧縮された形式で記憶されているか、圧縮されていない形式で記憶されているかを示すデータインジケータを使用するように構成されている場合、メモリコントローラ132は、定義された圧縮コードに従って書込みデータを圧縮することができる場合、書込みデータを随意に圧縮し得る(ブロック194)。次いで、メモリコントローラ132は、書込みデータの1つまたは複数のバーストECCワードを計算し、1つまたは複数のバーストECCワードの各々が、定義されたECCに従って、DIMM134内のバーストECC記憶ユニット162内のデータビットセルの数よりも短い長さを有する(ブロック196)。次いで、メモリコントローラ132は、書込みデータに基づいてバースト書込みデータブロック長の1つまたは複数のバースト書込みデータを構築し、1つまたは複数のバースト書込みデータの各々が、バースト書込みデータワード、およびバースト書込みデータのバーストECCワード、およびバースト書込みデータワードの少なくとも1つのデータインジケータを含む(ブロック198)。次いで、メモリコントローラ132は、DIMM134内の書込みデータアドレスに記憶されるように、書込み動作および書込みデータアドレスをcmd/addr情報として、また1つまたは複数のバースト書込みデータワードを入力データ(Din)としてDIMM134に通信する(ブロック200)。
【００４１】
図7Bを参照すると、メモリコントローラ132からのメモリ書込み要求136Wでは、DIMM134内のプロセス210は、メモリコントローラ132からメモリ書込み要求136Wのための書込みデータアドレスを受信することを伴う(ブロック212)。DIMM134は、メモリ書込み要求136Wのためのバースト書込みデータブロック長のバースト書込みデータを受信し、バースト書込みデータは、バースト書込みデータワード、バースト書込みデータワードのバーストECCワード、およびバースト書込みデータワードの少なくとも1つのデータインジケータを含む。次いで、DIMM134は、受信された書込みデータアドレスにおけるバーストデータ記憶ユニット160にわたって、受信されたバースト書込みデータワードをストライプする(ブロック214)。DIMM134はまた、受信された書込みデータアドレスにおけるバーストデータ記憶ユニット160内のバーストECC記憶ユニット162内のデータビットセルの数よりも少ないビットで、バーストECC記憶ユニット162にわたって、バースト書込みデータワードの受信されたバーストECCワードをストライプする(ブロック216)。DIMM134は、受信された書込みデータアドレスにおけるバーストECC記憶ユニット162内に、バースト書込みデータワードの少なくとも1つのデータインジケータを記憶する(ブロック218)。
【００４２】
図8Aは、図4のメモリコントローラ132が、図5のDIMM134の例示的なデータパーティションと互換性のあるDIMM134に読取りデータワードを要求し、受信するための読取り動作を処理する例示的なプロセス220を示すフローチャートである。図8Bは、図4のDIMM134が、データインジケータとともにバーストデータ記憶ユニット160内のバースト読取りデータワードおよびバースト読取りデータワードのバーストECCワードにアクセスする例示的なプロセス240を示すフローチャートである。
【００４３】
この点について、図8Aに示すように、メモリコントローラ132におけるメモリ読取り動作のプロセス220は、メモリコントローラ132が、DIMM134内のメモリブロックの読取りデータアドレスを含むメモリ読取り要求136Rを受信することによって開始する(ブロック222)。次いで、メモリコントローラ132は、図4に示すように、読取り動作および読み取られたデータアドレスをcmd/addr情報としてDIMM134に提供することによって、メモリ読取り要求136RをDIMM134に通信する(ブロック224)。DIMM134が読取り動作を処理した後(図8Bで後述する)、DIMM134は、バースト読取りデータをDIMM134からメモリコントローラ132に返送する。メモリコントローラ132は、DIMM134内の読取りデータアドレスに記憶された1つまたは複数のバースト読取りデータをDIMM134から受信する(ブロック226)。1つまたは複数のバースト読取りデータは各々、バースト読取りデータワード、バースト読取りデータワードのバーストECCワード、およびバースト読取りデータワードのデータインジケータを含む。次いで、メモリコントローラ132は、必要であれば、誤り検出および訂正を実行するために、読取りデータワードについての1つまたは複数の受信されたバースト読取りデータの1つまたは複数のバーストECCワードを計算する(ブロック228)。メモリコントローラ132は、1つまたは複数のバースト読取りデータワードが訂正可能であり訂正され得る誤りを有するかどうかを決定するために、1つまたは複数のバースト読取りデータについての計算された1つまたは複数のバーストECCワードを比較する(ブロック230)。たとえば、メモリコントローラ132がデータ圧縮を実行し、データが圧縮された形式で記憶されているか、圧縮されていない形式で記憶されているかどうかを示すために、データインジケータを使用するように構成されている場合、メモリコントローラ132は、随意に、1つまたは複数のバースト読取りデータワードについて受信されたデータインジケータに基づいて、1つまたは複数のバースト読取りデータワードが圧縮されているか、圧縮されていないかを決定するように構成することができる(ブロック232)。この例では、メモリコントローラ132は、データインジケータが1つまたは複数のバースト読取りデータワードが圧縮されていることを示す場合、1つまたは複数のバースト読取りデータワードを随意に解凍するように構成することができる(ブロック234)。次いで、メモリコントローラ132は、DIMM134からの1つまたは複数のバースト読取りデータワードをシステムバス138上で通信する(ブロック236)。
【００４４】
図8Bに示すように、DIMM134が読取りデータアドレスを含むメモリ読取り要求136Rをメモリコントローラ132から受信すると(ブロック242)、DIMM134は、読取りデータアドレスに記憶されたデータワードにアクセスする(ブロック244)。DIMM134は、DIMM134内の読取りデータアドレスに記憶された1つまたは複数のバースト読取りデータを取り出す(ブロック244)。次いで、DIMM134は、読取りデータアドレスに記憶された1つまたは複数のバースト読取りデータをメモリコントローラ132に通信する(ブロック246)。1つまたは複数のバースト読取りデータの各々は、バースト読取りデータワード、バースト読取りデータワードのバーストECCワード、およびバースト読取りデータワードの少なくとも1つのデータインジケータを含む。
【００４５】
図9は、コードワード166のデータシンボル168における例示的な単一メモリビットセル250の障害を示す図5の例示的なデータパーティションによる図6のDIMM134の図である。したがって、上記で説明した例示的なビット誤り訂正コードを使用して、メモリコントローラ132は、そのECC回路142の動作の一部としてこのビット誤りを検出し、訂正することができる。たとえ他のビット誤りが他のデータシンボル168またはチェックシンボル170に存在するとしても、そのような他のデータシンボル168またはチェックシンボル170における単一のビット誤りを検出し、訂正することができる。
【００４６】
図10は、8ビット幅で構成され、例示的なメモリバンクまたは行の障害を示す、図5の例示的なデータパーティションによる図6のDIMM134の図である。この点について、図10のコードワード166は、行またはバンク252にビット障害を有するものとして示されている。2つの隣接するデータシンボル168またはチェックシンボル170におけるビット誤りは8ビット幅の列または行の障害であり得るので、メモリ行またはバンク252の障害は、少なくとも3つの隣接するデータシンボル168またはチェックシンボル170に少なくとも1つのビット誤りを有するものとして現れる。しかしながら、4ビット幅で構成された図11のDIMM134では、例示的なメモリバンクまたは行254の障害は、ビット誤りを有する隣接するデータシンボル168またはチェックシンボル170の中の4つ以上の隣接するビットセルに現れる。
【００４７】
図12は、例示的なメモリ列256の障害を示す図5の例示的なデータパーティションによる図6のDIMM134の図である。メモリ列256の障害は、少なくとも2つの隣接するデータシンボル168またはチェックシンボル170における同じ列256に1つのビット誤りを有するものとして現れる。図13は、DIMM134における例示的なビットレーン258の障害を示す図5の例示的なデータパーティションによる図6のDIMM134の図である。図13に示すように、ビットレーン258の障害は、ビット誤り訂正コードに基づいてデータシンボル168および/またはチェックシンボル170内の少なくとも2つの隣接するシンボル内のビットレーン258において検出される少なくとも1つのビット誤りに基づいて検出することができる。4ビット幅で構成された図14のDIMM134では、例示的な4ビットワード260の障害は、データシンボル168および/またはチェックシンボル170の中の隣接するシンボルを横切る4つの隣接するビットセルとして現れる。
【００４８】
本明細書で開示された態様によるECCの記憶に専用のECC記憶ユニットへのデータインジケータの記憶をサポートするDIMMは、任意のプロセッサベースデバイス内に設けられ、または統合されてもよい。例としては、限定はしないが、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビジョン、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤが含まれる。
【００４９】
この点について、図15は、図2のSoC10'を、図4のメモリコントローラ132およびDIMM134(DIMM134(0)〜134(X)として示される)を含むメモリシステム130とともに使用することができるプロセッサベースシステム270の一例を示す。この例では、プロセッサベースシステム270は、1つまたは複数のプロセッサ274を各々が含む1つまたは複数のCPU272を含む。CPU272は、一時的に記憶されたデータへの高速アクセスのためにプロセッサ274に結合されたキャッシュメモリ276を有し得る。非限定的な例として、キャッシュメモリ276は、図4のメモリシステム130のようなメモリシステムを含むことができる。CPU272は、システムバス278に結合され、システムバス278は、プロセッサベースシステム270内に含まれるデバイスを相互結合することができる。よく知られているように、CPU272は、システムバス278を介してアドレス情報、制御情報、およびデータ情報を交換することによって、これらの他のデバイスと通信する。たとえば、CPU272は、スレーブデバイスの一例として、メモリコントローラ280にバストランザクション要求を通信することができる。図15に示されていないが、複数のシステムバス278が設けられ得る。
【００５０】
他のデバイスをシステムバス278に接続することができる。図15に示すように、これらのデバイスは、例として、メモリシステム281、1つまたは複数の入力デバイス282、1つまたは複数の出力デバイス284、1つまたは複数のネットワークインターフェースデバイス286、および1つまたは複数のディスプレイコントローラ288を含むことができる。メモリシステム281は、一例として図4のメモリシステム130を含むことができる。入力デバイス282は、限定はしないが、入力キー、スイッチ、音声プロセッサなどを含む、任意のタイプの入力デバイスを含むことができる。出力デバイス284は、限定はしないが、オーディオインジケータ、ビデオインジケータ、他の視覚インジケータなどを含む、任意のタイプの出力デバイスを含むことができる。ネットワークインターフェースデバイス286は、ネットワーク290との間のデータ交換を可能にするように構成される任意のデバイスであり得る。ネットワーク290は、限定はしないが、ワイヤードネットワークまたはワイヤレスネットワーク、プライベートネットワークまたは公衆ネットワーク、ローカルエリアネットワーク(LAN)、ワイドローカルエリアネットワーク、ワイヤレスローカルエリアネットワーク、BLUETOOTH(登録商標)(BT)、およびインターネットを含む任意のタイプのネットワークであり得る。ネットワークインターフェースデバイス286は、所望の任意のタイプの通信プロトコルをサポートするように構成され得る。メモリシステム281は、DIMM134(0)〜134(X)を含むことができる。
【００５１】
CPU272はまた、1つまたは複数のディスプレイ292に送られる情報を制御するために、システムバス278を介してディスプレイコントローラ288にアクセスするように構成され得る。ディスプレイコントローラ288は、1つまたは複数のビデオプロセッサ294を介して、表示されるべき情報をディスプレイ292に送り、ビデオプロセッサ294は、表示されるべき情報を、ディスプレイ292に適したフォーマットになるように処理する。ディスプレイ292は、これらに限定されないが、陰極線管(CRT)、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ、プラズマディスプレイなどを含む、任意のタイプのディスプレイを含み得る。
【００５２】
本明細書において開示される態様に関して説明される種々の例示的な論理ブロック、モジュール、回路、およびアルゴリズムは、電子ハードウェア、メモリもしくは別のコンピュータ可読媒体に記憶され、プロセッサもしくは他の処理デバイスによって実行される命令、またはその両方の組合せとして実現できることは、当業者はさらに理解されよう。本明細書において説明されるデバイスは、例として、任意の回路、ハードウェア構成要素、集積回路(IC)、またはICチップにおいて利用される場合がある。本明細書において開示されるメモリは、任意のタイプおよびサイズのメモリとすることができ、所望の任意のタイプの情報を記憶するように構成することができる。この互換性を明確に例示するために、種々の例示的な構成要素、ブロック、モジュール、回路、およびステップは、概してそれらの機能に関してこれまで説明されてきた。そのような機能がどのように実現されるかは、特定の適用例、設計上の選択、および/またはシステム全体に課された設計制約によって決まる。当業者は、説明した機能を特定の適用例ごとに様々な方法で実現することができるが、そのような実施態様の決定は、本開示の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【００５３】
本明細書において開示される態様に関して説明される種々の例示的な論理ブロック、モジュール、および回路は、プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタロジック、個別ハードウェア構成要素、または本明細書において説明される機能を実行するように設計されるそれらの任意の組合せを用いて実現または実行することができる。プロセッサは、マイクロプロセッサである場合があるが、代替としてプロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンとすることもできる。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実現される場合もある。
【００５４】
本明細書で開示する態様は、ハードウェアにおいて、また、ハードウェアに記憶された命令において具現される場合があり、命令は、たとえば、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野において知られている任意の他の形態のコンピュータ可読媒体内に存在する場合がある。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体は、プロセッサに一体化される場合がある。プロセッサおよび記憶媒体は、ASICに存在する場合がある。ASICは、遠隔局内に存在してもよい。代替では、プロセッサおよび記憶媒体は、遠隔局、基地局、またはサーバ内に個別構成要素として存在してもよい。
【００５５】
本明細書の例示的な態様のいずれかにおいて説明される動作ステップは、例および検討を提供するために説明されることにも留意されたい。説明される動作は、図示されるシーケンス以外の多数の異なるシーケンスにおいて実行される場合がある。さらに、単一の動作ステップにおいて説明される動作は、実際には複数の異なるステップにおいて実行される場合がある。さらに、例示的な態様において論じられる1つまたは複数の動作ステップが組み合わせられる場合がある。フローチャート図に示された動作ステップは、当業者には容易に明らかであるように、多数の異なる変更を受け得ることが理解されるべきである。当業者は、情報および信号が様々な異なる技術および技法のいずれかを使用して表され得ることも理解するであろう。たとえば、上記の説明全体を通して参照される場合があるデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表される場合がある。
本開示の上述の説明は、いかなる当業者も本開示を作成または使用することが可能になるように提供される。本開示に対する様々な修正は、当業者には容易に明らかになり、本明細書で定義した一般原理は、本開示の趣旨または範囲から逸脱することなく他の変形形態に適用されてもよい。したがって、本開示は、本明細書において説明される例および設計に限定されるものではなく、本明細書において開示される原理および新規の特徴と一致する最も広い範囲を与えられるべきである。
【符号の説明】
【００５６】
10  システムオンチップ(SoC)
12  CPUベースシステム
14  CPUブロック
16  CPU
18  共有レベル2(L2)キャッシュ
20  共有レベル3(L3)キャッシュ
22  内部システムバス
24  メモリコントローラ
26  周辺機器
28  ストレージ
30  エクスプレス周辺機器構成要素相互接続(PCI)(PCI-e)インターフェース
32  ダイレクトメモリアクセス(DMA)コントローラ
34  統合メモリコントローラ(IMC)
36  メモリコントローラ
38  システムメモリ
40  ダイナミックランダムアクセスメモリ(DRAM)
44  半導体ダイ
46  半導体ダイ
48  メモリインターフェース(MEM I/F)
50  圧縮コントローラ
52  ローカルメモリ
54  スタティックランダムアクセスメモリ(SRAM)
55  L4コントローラ
56  内部メモリ
58  内部メモリコントローラ
130  メモリシステム
132  メモリコントローラ
134  DIMM
136R  メモリ読取り要求
136W  メモリ書込み要求
138  システムバス
140  コントローラ
142  ECC回路
144D  ECCデコーダ
144E  ECCエンコーダ
146  メモリインターフェース(I/F)
148  メモリバス
150  データライン記憶ユニット
152  データビットセル
154  ECCライン記憶ユニット
156  データインジケータユニット
160  バーストデータ記憶ユニット
162  バーストECC記憶ユニット
166  コードワード
168  データシンボル
170  チェックシンボル
172  余分なビット
178  DIMMチップ
180  DIMMコネクタ
181  セルマトリックス
252  バンク
254  メモリバンクまたは行の障害
256  メモリ列の障害
258  ビットレーン
270  プロセッサベースのシステム
272  CPU
274  プロセッサ
276  キャッシュメモリ
278  システムバス
280  メモリコントローラ
281  メモリシステム
282  入力デバイス
284  出力デバイス
286  ネットワークインターフェースデバイス
288  ディスプレイコントローラ
290  ネットワーク
292  ディスプレイ
294  ビデオプロセッサ
【図１】
2018503918.tif 000003
【図２】
2018503918.tif 000004
【図３】
2018503918.tif 000005
【図４】
2018503918.tif 000006
【図５】
2018503918.tif 000007
【図６】
2018503918.tif 000008
【図７Ａ】
2018503918.tif 000009
【図７Ｂ】
2018503918.tif 000010
【図８Ａ】
2018503918.tif 000011
【図８Ｂ】
2018503918.tif 000012
【図９】
2018503918.tif 000013
【図１０】
2018503918.tif 000014
【図１１】
2018503918.tif 000015
【図１２】
2018503918.tif 000016
【図１３】
2018503918.tif 000017
【図１４】
2018503918.tif 000018
【図１５】
2018503918.tif 000019
【手続補正書】
【提出日】平成29年8月4日(2017.8.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
デュアルインラインメモリモジュール(DIMM)であって、
複数のバーストデータ記憶ユニット、
を含み、前記複数のバーストデータ記憶ユニットの中の各バーストデータ記憶ユニットが、
バースト長を合計した複数のデータライン記憶ユニットにわたってストライプされたバーストデータワード記憶ユニットであり、前記複数のデータライン記憶ユニットの中の各データライン記憶ユニットが64データビットセルを有する、バーストデータワード記憶ユニットと、
複数のECCライン記憶ユニットにわたってストライプされたバースト誤り訂正コード(ECC)記憶ユニットであり、前記複数のECCライン記憶ユニットの中の各ECCライン記憶ユニットが、データライン記憶ユニットに対応し、各ECCライン記憶ユニットが8データビットセルを含む、バーストECC記憶ユニットと
を含み、
前記DIMMが、
バーストメモリ書込み要求のための書込みデータアドレスを受信し、
バーストメモリ書込み要求のためのバースト書込みデータブロック長のバースト書込みデータを受信し、前記バースト書込みデータが、バースト書込みデータワードと、前記バースト書込みデータワードのバーストECCワードと、前記バースト書込みデータワードの少なくとも1つのデータインジケータとを含み、
前記受信された書込みデータアドレスにおける前記バーストデータワード記憶ユニットにわたって、前記受信されたバースト書込みデータワードをストライプし、
前記受信された書込みデータアドレスにおける前記バーストECC記憶ユニット内のデータビットセルの数よりも少ないビットで、前記バーストECC記憶ユニットにわたって、前記バースト書込みデータワードの前記受信されたバーストECCワードをストライプし、
前記受信された書込みデータアドレスにおける前記バーストデータ記憶ユニットの前記バーストECC記憶ユニット内に、前記バースト書込みデータワードの前記少なくとも1つのデータインジケータを記憶する
ように構成される
DIMM。
【請求項２】
前記バースト書込みデータワードの前記少なくとも1つのデータインジケータが単一ビットデータインジケータから構成され、
前記DIMMが、前記受信された書込みデータアドレスにおける前記バーストデータ記憶ユニットの前記バーストECC記憶ユニットの単一ビットで、前記バースト書込みデータワードの前記単一ビットデータインジケータを記憶するように構成される
請求項1に記載のDIMM。
【請求項３】
前記バースト書込みデータワードの前記少なくとも1つのデータインジケータが複数ビットデータインジケータから構成され、
前記DIMMが、前記受信された書込みデータアドレスにおける前記バーストデータ記憶ユニットの前記バーストECC記憶ユニットの複数ビットで、前記バースト書込みデータワードの前記複数ビットデータインジケータを記憶するように構成される
請求項1に記載のDIMM。
【請求項４】
前記DIMMが、前記受信された書込みデータアドレスにおける前記バーストECC記憶ユニット内のデータビットセルの前記数よりも少なくとも2つ少ないビットで、前記バーストECC記憶ユニットにわたって、前記バースト書込みデータワードの前記受信されたバーストECCワードをストライプするように構成される、請求項1に記載のDIMM。
【請求項５】
読取りデータアドレスを含むメモリ読取り要求を受信し、
前記DIMM内の前記読取りデータアドレスに記憶された1つまたは複数のバースト読取りデータを取り出すために、前記読取りデータアドレスにアクセスし、
前記読取りデータアドレスに記憶された前記1つまたは複数のバースト読取りデータをメモリコントローラに通信し、前記1つまたは複数のバースト読取りデータが各々、バースト読取りデータワード、前記バースト読取りデータワードのバーストECCワード、および前記バースト読取りデータワードの前記少なくとも1つのデータインジケータを含む
ようにさらに構成される請求項1に記載のDIMM。
【請求項６】
前記DIMMが、前記バースト書込みデータワードが圧縮されているかどうかを示す前記バースト書込みデータワードの前記少なくとも1つのデータインジケータを受信するように構成される、請求項1に記載のDIMM。
【請求項７】
前記複数のバーストデータ記憶ユニットの中の各バーストデータ記憶ユニットが、前記バースト長を合計した4つのデータライン記憶ユニットにわたってストライプされた前記バーストデータワード記憶ユニットを含む、請求項1に記載のDIMM。
【請求項８】
集積回路(IC)に組み込まれた請求項1に記載のDIMM。
【請求項９】
セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビジョン、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤからなる群から選択されるデバイスに組み込まれる、請求項1に記載のDIMM。
【請求項１０】
中央処理装置(CPU)ベースシステム内のデュアルインラインメモリモジュール(DIMM)にデータを書き込む方法であって、
DIMMにおいてメモリ書込み要求を受信するステップであり、前記メモリ書込み要求が、書込みデータアドレスと、バースト書込みデータブロック長のバースト書込みデータとを含み、前記バースト書込みデータが、バースト書込みデータワードと、前記バースト書込みデータワードのバースト誤り訂正コード(ECC)ワードと、前記バースト書込みデータワードの少なくとも1つのデータインジケータとを含む、ステップと、
前記DIMM内の前記受信された書込みデータアドレスにおけるバーストデータ記憶ユニット内のバーストデータワード記憶ユニットにわたって、前記受信されたバースト書込みデータワードをストライプするステップであり、前記DIMMが、
複数のバーストデータ記憶ユニットを含み、前記複数のバーストデータ記憶ユニットの中の各バーストデータ記憶ユニットが、
バースト長を合計した複数のデータライン記憶ユニットにわたってストライプされたバーストデータワード記憶ユニットであり、前記複数のデータライン記憶ユニットの中の各データライン記憶ユニットが64データビットセルを含む、バーストデータワード記憶ユニットと、
複数のECCライン記憶ユニットにわたってストライプされたバーストECC記憶ユニットであり、前記複数のECCライン記憶ユニットの中の各ECCライン記憶ユニットが、データライン記憶ユニットに対応し、各ECCライン記憶ユニットが8データビットセルを含む、バーストECC記憶ユニットと
を含む、ステップと、
前記受信された書込みデータアドレスにおける前記バーストECC記憶ユニット内のデータビットセルの数よりも少ないビットで、前記バーストECC記憶ユニットにわたって、前記バースト書込みデータワードの前記DIMM内の前記受信されたバーストECCワードをストライプするステップと、
前記受信された書込みデータアドレスにおける前記バーストデータ記憶ユニットの前記バーストECC記憶ユニット内に、前記バースト書込みデータワードの前記少なくとも1つのデータインジケータを記憶するステップと
を含む方法。
【請求項１１】
前記受信された書込みデータアドレスにおける前記バーストデータ記憶ユニットの前記バーストECC記憶ユニット内に、前記バースト書込みデータワードの前記少なくとも1つのデータインジケータを記憶するステップが、前記受信された書込みデータアドレスにおける前記バーストデータ記憶ユニットの前記バーストECC記憶ユニットの単一ビットで、前記バースト書込みデータワードの単一ビットデータインジケータから構成される前記少なくとも1つのデータインジケータを記憶するステップを含む、請求項10に記載の方法。
【請求項１２】
前記受信された書込みデータアドレスにおける前記バーストデータ記憶ユニットの前記バーストECC記憶ユニット内に、前記バースト書込みデータワードの前記少なくとも1つのデータインジケータを記憶するステップが、前記受信された書込みデータアドレスにおける前記バーストデータ記憶ユニットの前記バーストECC記憶ユニットの複数ビットで、前記バースト書込みデータワードの複数ビットデータインジケータから構成される前記少なくとも1つのデータインジケータを記憶するステップを含む、請求項10に記載の方法。
【請求項１３】
前記受信された書込みデータアドレスにおける前記バーストECC記憶ユニット内のデータビットセルの前記数よりも少なくとも2つ少ないビットで、前記バーストECC記憶ユニットにわたって、前記バースト書込みデータワードの前記受信されたバーストECCワードをストライプするステップを含む請求項10に記載の方法。
【請求項１４】
前記DIMMにおいて読取りデータアドレスを含むメモリ読取り要求を受信するステップと、
前記DIMM内の前記読取りデータアドレスに記憶された1つまたは複数のバースト読取りデータを取り出すために、前記DIMM内の前記読取りデータアドレスにアクセスするステップと、
前記読取りデータアドレスに記憶された前記1つまたは複数のバースト読取りデータをメモリコントローラに通信するステップであり、前記1つまたは複数のバースト読取りデータが各々、バースト読取りデータワード、前記バースト読取りデータワードのバーストECCワード、および前記バースト読取りデータワードの前記少なくとも1つのデータインジケータを含む、ステップと
をさらに含む請求項10に記載の方法。
【請求項１５】
中央処理装置(CPU)ベースシステムのメモリシステムであって、
デュアルインラインメモリモジュール(DIMM)であり、前記DIMMが、
複数のバーストデータ記憶ユニット
を含み、前記複数のバーストデータ記憶ユニットの中の各バーストデータ記憶ユニットが、
バースト長を合計した複数のデータライン記憶ユニットにわたってストライプされたバーストデータワード記憶ユニットであり、前記複数のデータライン記憶ユニットの中の各データライン記憶ユニットが64データビットセルを含む、バーストデータワード記憶ユニットと、
複数のECCライン記憶ユニットにわたってストライプされたバースト誤り訂正コード(ECC)記憶ユニットであり、前記複数のECCライン記憶ユニットの中の各ECCライン記憶ユニットが、データライン記憶ユニットに対応し、各ECCライン記憶ユニットが8データビットセルを含む、バーストECC記憶ユニットと
を含み、前記DIMMが、
書込みデータアドレスと、バースト書込みデータブロック長のバースト書込みデータとを含むバーストメモリ書込み要求を受信し、前記バースト書込みデータが、バースト書込みデータワードと、前記バースト書込みデータワードのバーストECCワードと、前記バースト書込みデータワードの少なくとも1つのデータインジケータとを含み、
前記受信された書込みデータアドレスにおける前記バーストデータワード記憶ユニットにわたって、前記受信されたバースト書込みデータワードをストライプし、
前記受信された書込みデータアドレスにおける前記バーストECC記憶ユニット内のデータビットセルの数よりも少ないビットで、前記バーストECC記憶ユニットにわたって、前記バースト書込みデータワードの前記受信されたバーストECCワードをストライプし、
前記受信された書込みデータアドレスにおける前記バーストデータ記憶ユニットの前記バーストECC記憶ユニット内に、前記バースト書込みデータワードの前記少なくとも1つのデータインジケータを記憶する
ように構成されるDIMMと、
メモリコントローラであり、
前記書込みデータアドレスと、書込みデータブロック長の書込みデータとを含むメモリ書込み要求を受信し、
前記書込みデータの1つまたは複数のバーストECCワードを計算し、前記1つまたは複数のバーストECCワードの各々が、定義されたECCに従って、前記バーストECC記憶ユニット内のデータビットセルの前記数よりも短い長さを有し、
前記書込みデータに基づいて前記バースト書込みデータブロック長の1つまたは複数のバースト書込みデータを構築し、前記1つまたは複数のバースト書込みデータの各々が、バースト書込みデータワード、前記バースト書込みデータのバーストECCワード、および前記バースト書込みデータワードの少なくとも1つのデータインジケータを含み、
前記DIMM内の前記書込みデータアドレスに記憶されるように、前記書込みデータアドレスおよび前記1つまたは複数のバースト書込みデータワードを前記DIMMに通信する
ように構成される、メモリコントローラと
を含むメモリシステム。
【請求項１６】
前記メモリコントローラが、前記書込みデータの前記1つまたは複数のバーストECCワードを計算するように構成されるECCエンコーダをさらに含み、前記1つまたは複数のバーストECCワードの各々が、前記定義されたECCに従って、前記バーストECC記憶ユニット内のデータビットセルの前記数よりも短い長さを有する、請求項15に記載のメモリシステム。
【請求項１７】
前記メモリコントローラが、
前記DIMM内のメモリブロックの読取りデータアドレスを含むメモリ読取り要求を受信し、
前記メモリ読取り要求を前記DIMMに通信し、
前記DIMM内の前記読取りデータアドレスに記憶された1つまたは複数のバースト読取りデータを前記DIMMから受信し、前記1つまたは複数のバースト読取りデータが各々、バースト読取りデータワード、前記バースト読取りデータワードのバーストECCワード、および前記バースト読取りデータワードの前記少なくとも1つのデータインジケータを含み、
前記1つまたは複数のバースト読取りデータの前記1つまたは複数のバーストECCワードを計算し、
前記1つまたは複数のバースト読取りデータがビット誤りを有するかどうかを決定するために、前記1つまたは複数のバースト読取りデータについての前記計算された1つまたは複数のバーストECCワードを比較し、
バス上で前記DIMMから前記1つまたは複数のバースト読取りデータを通信する
ようにさらに構成され、
前記DIMMが、
前記読取りデータアドレスを含む前記メモリ読取り要求を受信し、
前記DIMM内の前記読取りデータアドレスに記憶された前記1つまたは複数のバースト読取りデータを取り出すために、前記読取りデータアドレスにアクセスし、
前記読取りデータアドレスに記憶された前記1つまたは複数のバースト読取りデータを前記メモリコントローラに通信し、前記1つまたは複数のバースト読取りデータの各々が、バースト読取りデータワード、前記バースト読取りデータワードのバーストECCワード、および前記バースト読取りデータワードの前記少なくとも1つのデータインジケータを含む、
ようにさらに構成される、
請求項15に記載のメモリシステム。
【請求項１８】
前記メモリコントローラが、
前記1つまたは複数のバースト読取りデータの前記1つまたは複数のバーストECCワードを計算し、
前記1つまたは複数のバースト読取りデータがビット誤りを有するかどうかを決定するために、前記1つまたは複数のバースト読取りデータについての前記計算された1つまたは複数のバーストECCワードを比較する
ように構成されるECCデコーダをさらに含む、請求項17に記載のメモリシステム。
【請求項１９】
前記ECCデコーダが、前記バス上で前記ビット誤りを通信するようにさらに構成される、請求項18に記載のメモリシステム。
【請求項２０】
前記メモリコントローラが、ビット誤り訂正コードを使用して、前記1つまたは複数のバースト書込みデータワードの各々を複数のビットシンボルに符号化するようにさらに構成される、請求項17に記載のメモリシステム。
【請求項２１】
前記ビット誤り訂正コードがリードソロモン(RS)コードから構成される、請求項20に記載のメモリシステム。
【請求項２２】
前記メモリコントローラが、
前記1つまたは複数のバースト書込みデータワードの各々を43の6ビットシンボルに符号化し、
前記1つまたは複数のバーストECCワードの各々を5つの6ビットシンボルに符号化する
ように構成されることによって、前記1つまたは複数のバースト書込みデータワードの各々を前記RSコードで符号化するように構成される、請求項21に記載のメモリシステム。
【請求項２３】
前記メモリコントローラが、
前記ビット誤り訂正コードに基づいて、前記1つまたは複数のバースト読取りデータの中のバースト読取りデータについてのビットシンボルにおける単一ビット誤りを検出し、
前記ビット誤り訂正コードに基づいて前記バースト読取りデータにおける前記ビットシンボルの前記単一ビット誤りを訂正する
ようにさらに構成される、請求項20に記載のメモリシステム。
【請求項２４】
前記メモリコントローラが、前記ビット誤り訂正コードに基づいて、少なくとも1つのビット誤りが前記読取りデータアドレスにおける前記DIMM内のメモリ行の前記1つまたは複数のバースト読取りデータの中のバースト読取りデータについての少なくとも3つの隣接するビットシンボルにおいて検出されることに基づいて、行誤りを検出するようにさらに構成される、請求項20に記載のメモリシステム。
【請求項２５】
前記メモリコントローラが、前記ビット誤り訂正コードに基づいて、少なくとも1つのビット誤りが前記読取りデータアドレスにおける前記DIMM内のメモリ列の前記1つまたは複数のバースト読取りデータの中のバースト読取りデータについての少なくとも2つの隣接するビットシンボルにおいて検出されることに基づいて行誤りを検出するようにさらに構成される、請求項20に記載のメモリシステム。
【請求項２６】
前記メモリコントローラが、前記ビット誤り訂正コードに基づいて、少なくとも1つのビット誤りが前記読取りデータアドレスにおける前記DIMM内のメモリ列の前記1つまたは複数のバースト読取りデータの中のバースト読取りデータについての少なくとも2つの隣接するビットシンボルにおけるビットラインにおいて検出されることに基づいて行誤りを検出するようにさらに構成される、請求項20に記載のメモリシステム。
【請求項２７】
中央処理装置(CPU)ベースシステム内のメモリシステムにデータを書き込む方法であって、
書込みデータアドレスと、書込みデータブロック長の書込みデータとを含むメモリ書込み要求を受信するステップと、
前記書込みデータの1つまたは複数のバースト誤り訂正コード(ECC)ワードを計算するステップであり、前記1つまたは複数のバーストECCワードの各々が、定義されたECCに従って、バーストECC記憶ユニット内のデータビットセルの数よりも短い長さを有する、ステップと、
前記書込みデータに基づいてバースト書込みデータブロック長の1つまたは複数のバースト書込みデータを構築するステップであり、前記1つまたは複数のバースト書込みデータの各々が、バースト書込みデータワード、前記バースト書込みデータのバーストECCワード、および前記バースト書込みデータワードの少なくとも1つのデータインジケータを含む、ステップと、
デュアルインラインメモリモジュール(DIMM)内の前記書込みデータアドレスに記憶されるように、前記書込みデータアドレスおよび1つまたは複数のバースト書込みデータワードを前記DIMMに通信するステップと、
前記DIMMにおいて前記メモリ書込み要求を受信するステップであり、前記メモリ書込み要求が、前記書込みデータアドレスと、前記バースト書込みデータブロック長の前記1つまたは複数のバースト書込みデータとを含み、前記1つまたは複数のバースト書込みデータが、バースト書込みデータワードと、前記バースト書込みデータワードのバーストECCワードと、前記バースト書込みデータワードの少なくとも1つのデータインジケータとを含む、ステップと、
前記DIMM内の前記受信された書込みデータアドレスにおけるバーストデータ記憶ユニット内のバーストデータワード記憶ユニットにわたって、前記受信されたバースト書込みデータワードをストライプするステップであり、前記DIMMが、
複数のバーストデータ記憶ユニットを含み、前記複数のバーストデータ記憶ユニットの中の各バーストデータ記憶ユニットが、
バースト長を合計した複数のデータライン記憶ユニットにわたってストライプされたバーストデータワード記憶ユニットであり、前記複数のデータライン記憶ユニットの中の各データライン記憶ユニットが64データビットセルを含む、バーストデータワード記憶ユニットと、
複数のECCライン記憶ユニットにわたってストライプされたECC記憶ユニットであり、前記複数のECCライン記憶ユニットの中の各ECCライン記憶ユニットが、データライン記憶ユニットに対応し、各ECCライン記憶ユニットが8データビットセルを含む、ECC記憶ユニットと
を含む、ステップと、
前記受信された書込みデータアドレスにおける前記バーストECC記憶ユニット内のデータビットセルの数よりも少ないビットで、前記バーストECC記憶ユニットにわたって、前記バースト書込みデータワードの前記DIMM内の前記受信された1つまたは複数のバーストECCワードをストライプするステップと、
前記受信された書込みデータアドレスにおける前記バーストデータ記憶ユニットの前記バーストECC記憶ユニット内に、前記バースト書込みデータワードの前記少なくとも1つのデータインジケータを記憶するステップと
を含む方法。
【請求項２８】
メモリ読取り要求を前記DIMMに通信するステップと、
前記DIMMにおいて読取りデータアドレスを含む前記メモリ読取り要求を受信するステップと、
前記DIMM内の前記読取りデータアドレスに記憶された1つまたは複数のバースト読取りデータを取り出すために、前記DIMM内の前記読取りデータアドレスにアクセスするステップと、
前記読取りデータアドレスに記憶された前記1つまたは複数のバースト読取りデータをメモリコントローラに通信するステップであり、前記1つまたは複数のバースト読取りデータが各々、バースト読取りデータワード、前記バースト読取りデータワードのバーストECCワード、および前記バースト読取りデータワードの前記少なくとも1つのデータインジケータを含む、ステップと、
前記DIMMにおいてメモリブロックの前記読取りデータアドレスを含む前記メモリ読取り要求を受信するステップと、
前記DIMM内の前記読取りデータアドレスに記憶された前記1つまたは複数のバースト読取りデータを前記DIMMから受信するステップであり、前記1つまたは複数のバースト読取りデータが各々、バースト読取りデータワード、前記バースト読取りデータワードのバーストECCワード、および前記バースト読取りデータワードの前記少なくとも1つのデータインジケータを含む、ステップと、
前記1つまたは複数のバースト読取りデータの前記1つまたは複数のバーストECCワードを計算するステップと、
前記1つまたは複数のバースト読取りデータがビット誤りを有するかどうかを決定するために、前記1つまたは複数のバースト読取りデータについての前記計算された1つまたは複数のバーストECCワードを比較するステップと、
バス上で前記DIMMから前記1つまたは複数のバースト読取りデータワードを通信するステップと
をさらに含む請求項27に記載の方法。
【請求項２９】
ビット誤り訂正コードを使用して、前記1つまたは複数のバースト書込みデータワードの各々を複数のビットシンボルに符号化するステップをさらに含む請求項27に記載の方法。
【請求項３０】
前記ビット誤り訂正コードがリードソロモン(RS)コードから構成され、
前記1つまたは複数のバースト書込みデータワードの各々を43の6ビットシンボルに符号化し、
前記1つまたは複数のバーストECCワードの各々を5つの6ビットシンボルに符号化する
ことによって、前記1つまたは複数のバースト書込みデータワードの各々を前記RSコードで符号化するステップを含む
請求項29に記載の方法。
【国際調査報告】
2018503918.tif 000020
2018503918.tif 000021