(57)【要約】【課題】巡回冗長検査を介してエラー検査能力を改善するメモリーアクセス制御方法を提供する。【解決手段】巡回冗長検査（ＣＲＣ）を用いてメモリーアクセス中のエラー検査能力を改善する。メモリー読み取りプロセス中、読み取りデータの一部がＣＲＣバスを経由してメモリーから出力され、ＣＲＣ結果および読み取りデータの他の部分がデータバスを経由してメモリーから出力される。【選択図】図２
2008198181.tif 000002
【特許請求の範囲】
【請求項１】
メモリーに第１読み取り命令を発行することと；
前記第１読み取り命令に応じて前記メモリーから第１読み取りデータを読み出すことと；
前記第１読み取りデータにエラー検査計算を実行して第１エラー検査結果を得ることと；
前記第１読み取りデータの一部をデータバスを経由して伝送するとともに、前記第１読み取りデータの他の部分をエラー検査バスを経由して伝送することと；
前記第１エラー検査結果を前記データバスを経由して伝送することと
を含むメモリーアクセス制御方法。
【請求項２】
更に：
前記第１読み取り命令が発行された後、前記メモリーに第２読み取り命令を発行することと；
前記第２読み取り命令に応じて前記メモリーから第２読み取りデータを読み出すことと；
前記第２読み取りデータにエラー検査計算を実行して第２エラー検査結果を得ることと；
前記第２読み取りデータの一部を前記データバスを経由して伝送するとともに、前記第２読み取りデータの他の部分を前記エラー検査バスを経由して伝送することと；
前記第２エラー検査結果を前記データバスを経由して伝送することと
を含む請求項１記載の方法。
【請求項３】
更に：
前記第１読み取り命令が発行された後、前記メモリーに第１書き込み命令を発行することと；
前記データバスを経由して前記メモリーに前記第１書き込み命令に関連する第１書き込みデータを伝送することと；
前記第１書き込みデータにエラー検査計算を実行して第２エラー検査結果を得ることと；
前記エラー検査バスを経由して前記第２エラー検査結果を伝送することと
を含む請求項１記載の方法。
【請求項４】
更に：
前記第１書き込み命令が発行された後、前記メモリーに第２書き込み命令を発行することと；
前記データバスを経由して前記メモリーに前記第２書き込み命令に関連する第２書き込みデータを伝送することと；
前記第２書き込みデータにエラー検査計算を実行して第３エラー検査結果を得ることと；
前記エラー検査バスを経由して前記第３エラー検査結果を伝送することと
を含む請求項３記載の方法。
【請求項５】
前記エラー検査計算が巡回冗長検査（ＣＲＣ）である請求項１記載の方法。
【請求項６】
前記エラー検査計算がＣＲＣである請求項２記載の方法。
【請求項７】
前記エラー検査計算がＣＲＣである請求項３記載の方法。
【請求項８】
前記エラー検査計算がＣＲＣである請求項４記載の方法。
【請求項９】
メモリーに第１読み取り命令および第２読み取り命令を発行することと；
前記第１読み取り命令に応じて前記メモリーから第１読み取りデータを読み出すことと；
前記第１読み取りデータに巡回冗長検査（ＣＲＣ）を実行して第１ＣＲＣ結果を得ることと；
前記第２読み取り命令に応じて前記メモリーから第２読み取りデータを読み出すことと；
前記第２読み取りデータにＣＲＣを実行して第２ＣＲＣ結果を得ることと；
データバスを経由して前記第１読み取りデータの一部を伝送するとともに、ＣＲＣバスを経由して前記第１読み取りデータのその他の部分を伝送することと；
前記データバスを経由して前記第１ＣＲＣ結果を伝送することと；
データバスを経由して前記第２読み取りデータの一部を伝送するとともに、ＣＲＣバスを経由して前記第２読み取りデータのその他の部分を伝送することと；
前記データバスを経由して前記第２ＣＲＣ結果を伝送することと
を含むメモリーアクセス制御方法。
【請求項１０】
メモリーに第１書き込み命令および第１読み取り命令を発行することと；
データバスを経由し前記メモリーに前記第１書き込み命令に関連する第１書き込みデータを伝送することと；
前記第１書き込みデータにエラー検査計算を実行して第１エラー検査結果を得ることと；
エラー検査バスを経由して前記第１エラー検査結果を伝送することと；
前記第１読み取り命令に応じて前記メモリーから読み取りデータを読み出すことと；
前記第１読み取りデータにエラー検査計算を実行して第２エラー検査結果を得ることと；
前記データバスを経由して前記第１読み取りデータの一部を伝送するとともに、前記エラー検査バスを経由して前記第１読み取りデータのその他の部分を伝送することと；
前記データバスを経由して前記第２エラー検査結果を伝送することと
を含むメモリーアクセス制御方法。
【請求項１１】
更に：
第２書き込み命令を前記メモリーに発行することと；
前記データバスを経由し前記メモリーに前記第２書き込み命令に関連する第２書き込みデータを伝送することと；
前記第２書き込みデータにエラー検査計算を実行して第３エラー検査結果を得ることと；
前記エラー検査バスを経由して前記第３エラー検査結果を伝送することと
を含むメモリーアクセス制御方法。
【請求項１２】
前記エラー検査計算がＣＲＣである請求項１０記載の方法。
【請求項１３】
前記エラー検査計算がＣＲＣである請求項１１記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリーアクセス制御方法に関し、特に、巡回冗長検査（cyclic redundancy check=CRC）を介してエラー検査能力（error check coverage）を改善するメモリーアクセス制御方法に関する。
【背景技術】
【０００２】
通信システムまたはコンピューターシステムにおいて、巡回冗長検査（cyclic redundancy check=CRC）を用いてエラー検査能力を改善することができる。ＣＲＣは、データが伝送または格納された後、データ伝送される間にエラーが発生しているか否かをモニタリングすることができる。データ伝送の過程において、データ受信側およびデータ発信側の両方にＣＲＣ計算の実行が要求され、双方のうち一方がそれぞれ計算されたＣＲＣ結果を比較し、受信データが誤りである場合に検出する。
【０００３】
図１は、コンピューターシステム中のメモリーアクセス制御にＣＲＣ−１６を適用した従来技術の説明図である。８００−ＭＨｚシステムクロック、８ビットデータバスＤＱ＜７：０＞および２ビットＣＲＣバスＣＲＣ＜１：０＞の状態において、下記に説明を行う。ＣＲＣ−１６が適用される時、１６ビットのＣＲＣ結果が得られる。
【０００４】
図１において、主制御回路（例えば、ＣＰＵ）は、メモリーに読み取り命令Ｒ−Ａ，Ｒ−Ｂを発行する。数サイクル後、メモリー中の内部データＤ−Ａ，Ｄ−Ｂが読み取り命令Ｒ−Ａ，Ｒ−Ｂに応じて読み出される。ここでは、"内部データ"は、データバスＤＱ＜７：０＞に置かれなかったデータを意味する。データＤ−Ａは、８バイトのＡ０〜Ａ７を含み、データＤ−Ｂは、８バイトのＢ０〜Ｂ７を含む。内部データＤ−Ａ，Ｄ−Ｂに基づいて、ＣＲＣ計算ＣＲＣ−ＡＢがメモリーコントローラーにより算出（carried out）される。
【０００５】
データＤ−Ａ，Ｄ−Ｂがメモリーにより出力されることになっている時、数バイト（例えば、Ａ３およびＢ３）がＣＲＣバスＣＲＣ＜１：０＞に置かれ、その他のバイトがデータバスＤＱ＜７：０＞に置かれる。留意すべきことは、Ａ０およびＡ１間の空間は、図１に示されるように、データバスＤＱ＜７：０＞上のデータ非伝送を表すことである。
【０００６】
データがデータバスＤＱ＜７：０＞を経由して出力される時、ＣＲＣ計算ＣＲＣ−ＡＢが開始される。図１において、ＣＲＣ計算ＣＲＣ−ＡＢが完了した後、ＣＲＣ計算ＣＲＣ−ＡＢの結果がＣＲＣバスＣＲ＜１：０＞を経由して伝送される。
【０００７】
このようにして、データＤ−Ａ，Ｄ−Ｂがメモリーから読み取られ、ＣＲＣ結果が主制御回路に出力される。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しがしながら、従来技術は、以下の欠点を有する。（1）複雑なハードウェア構造、大きな回路設計（layout）および高電力消費；（2）ＣＡＳ（Column Address Strobe）からＣＡＳまでの遅延待ち時間（ｔＣＣＤ−Ｌ）が短く、例えば、１．２５ｎｓであり、設計（design）が困難になる；（3）読み取り命令の発行からメモリーよりデータを出力するまでの時間遅延が長い；（4）ＣＲＣ計算中のキャッシュ内のデータＡ，Ｂの保存が設計をより困難にする；（5）極めて短い時間経過内（図１では１．２５ｎｓ内として例示）ではＣＲＣ計算の完成が困難である。
【０００９】
したがって、前記の従来技術の欠点を克服できるメモリーアクセス制御方法の提供が望まれている。
【００１０】
［発明の目的］
本発明は、メモリーからデータを読み取る過程において、巡回冗長検査（cyclic redundancy check=CRC）計算の結果がデータバスを経由して出力され、メモリーからデータを読み出す過程において、読み取りデータの一部がＣＲＣバスを経由して出力され、メモリーにデータを書き込む過程において、データがデータバスを経由して受信され、対応したＣＲＣ結果がＣＲＣバスを経由して出力されるメモリーアクセス制御方法を提供することを目的とする。
【００１１】
本発明は、更に、ＣＲＣ計算が進行中である時、２つまたはそれ以上のデータを同時に保留する必要はなく、ＣＲＣ計算の下でデータを維持すればよいメモリーアクセス制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の一例は、メモリーに第１読み取り命令を発行することと、第１読み取り命令に応じてメモリーから第１読み取りデータを読み出すことと、第１読み取りデータにＣＲＣ計算を実行して第１ＣＲＣ結果を得ることと、データバスを経由して第１読み取りデータの一部を伝送するとともに、ＣＲＣバスを経由して第１読み取りデータの他の部分を伝送することと、データバスを経由して第１ＣＲＣ結果を伝送することとを含むメモリーアクセス制御方法を提供する。
【００１３】
本発明は、更に、メモリーに第１読み取り命令および第２読み取り命令を発行することと、第１読み取り命令に応じてメモリーから第１読み取りデータを読み出すことと、第１読み取りデータにＣＲＣ計算を実行して第１ＣＲＣ結果を得ることと、第２読み取り命令に応じてメモリーから第２読み取りデータを読み出すことと、第２読み取りデータにＣＲＣ計算を実行して第２ＣＲＣ結果を得ることと、データバスを経由して第１読み取りデータの一部を伝送するとともに、ＣＲＣバスを経由して第１読み取りデータの他の部分を伝送することと、データバスを経由して第１ＣＲＣ結果を伝送することと、データバスを経由して第２読み取りデータの一部を伝送することおよびＣＲＣバスを経由して第２読み取りデータの他の部分を伝送することと、データバスを経由して第２ＣＲＣ結果を伝送することとを含むメモリーアクセス制御方法を提供する。
【００１４】
本発明のもう１つの例は、更に、メモリーに第１書き込み命令および第１読み取り命令を発行することと、データバスを経由してメモリーに第１書き込み命令に関連する第１書き込みデータを伝送することと、第１書き込みデータにＣＲＣ計算を実行して第１ＣＲＣ結果を得ることと、ＣＲＣバスを経由して第１ＣＲＣ結果を伝送することと、第１読み取り命令に応じてメモリーから第１読み取りデータを読み出すことと、第１読み取りデータにＣＲＣ計算を実行して第２ＣＲＣ結果を得ることと、データバスを経由して第１読み取りデータの一部を伝送するとともに、ＣＲＣバスを経由して第１読み取りデータの他の部分を伝送することと、データバスを経由して第２ＣＲＣ結果を伝送することとを含むメモリーアクセス制御方法を提供する。
【発明の効果】
【００１５】
本発明の実施形態は、次の長所によって特徴付けられる。（1）複雑でないハードウェア構造、減少された回路設計、低い電力消費；（2）ゆったりしたＣＡＳ（Column Address Strobe）からＣＡＳまでの遅延待ち時間（ｔＣＣＤ−Ｌ）、例えば、２．５ｎｓであり、設計が簡単になる；（3）ＣＲＣ計算中のキャッシュ内の幾つかのデータの保存が不要である；（4）十分な時間経過内（図２では１．８７５ｎｓ内として例示）でＣＲＣ計算が完成できる；（5）高いエラー検査率。
【発明を実施するための最良の形態】
【００１６】
本発明中、メモリーからデータを読み取る過程において、ＣＲＣ結果がデータバスを経由して出力され、一部の読み取りデータがＣＲＣバスを経由して出力される。メモリーにデータを書き込む過程において、データがデータバスを経由して受信され、ＣＲＣ結果がＣＲＣバスを経由して出力される。更に、ＣＲＣ計算が実行されている時、２つまたはより多くのデータを同時に保持する必要はなく、ＣＲＣ計算下のデータを維持するだけでよい。
【００１７】
〈第１実施形態：読み取りから読み取り（read to read）〉
図２は、本発明の一実施形態に係るメモリーアクセスの配列を示すタイミング説明図である。８００−ＭＨｚシステムクロック、８ビットデータバスＤＱ＜７：０＞および２ビットＣＲＣバスＣＲＣ＜１：０＞の状態において、下記に説明を行う。ＣＲＣ計算は、ＣＲＣ−１６を例として（即ち、１６ビットのＣＲＣ結果が得られる）説明する。確かであることは、本発明が前記状態に限定されないことである。例えば、ＣＲＣ−３２等の他のＣＲＣ技術も本発明に適用することができ、更にエラー検査能力を改善することができる。
【００１８】
図２において、主制御回路(例えば、ＣＰＵ）が読み取り命令Ｒ−Ａ，Ｒ−Ｂをメモリーに発行する。数サイクル後、メモリー中の内部データＤ−Ａ，Ｄ−Ｂが読み取り命令Ｒ−Ａ，Ｒ−Ｂに応じて読み出される。ここでは、"内部データ"は、データバスＤＱ＜７：０＞に置かれなかったデータを意味する。データＤ−Ａは、８バイトのＡ０〜Ａ７を含み、データＤ−Ｂは、８バイトのＢ０〜Ｂ７を含む。
【００１９】
データＤ−Ａが読み出される時、図２中のＣＲＣ−Ａに示す通り、ＣＲＣ計算がデータＤ−Ａに即座に行われる。同様に、図２中のＣＲＣ−Ｂに示す通り、データＤ−Ｂが読み出され、ＣＲＣ計算がデータＤ−Ｂに即座に行われる。
【００２０】
データＤ−Ａが出力されることになっている時、数バイト（例えば、Ａ２およびＡ３）がＣＲＣバスＣＲＣ＜１：０＞に置かれ、その他のバイト（例えばＡ０〜Ａ１およびＡ４〜Ａ７）がデータバスＤＱ＜７：０＞に置かれる。留意すべきことは、データＤ−ＡのＣＲＣ計算ＣＲＣ−Ａの結果がＣＲＣバスＣＲＣ＜１：０＞の代わりにデータバスＤＱ＜７：０＞に置かれることである。
【００２１】
同様に、データＤ−Ｂが出力されることになっている時、数バイト（例えば、Ｂ２およびＢ３）がＣＲＣバスＣＲＣ＜１：０＞に置かれ、その他のバイト（例えばＢ０〜Ｂ１およびＢ４〜Ｂ７）がデータバスＤＱ＜７：０＞に置かれる。データＤ−ＢのＣＲＣ計算ＣＲＣ−Ｂの結果がＣＲＣバスＣＲＣ＜１：０＞の代わりにデータバスＤＱ＜７：０＞に置かれる。
【００２２】
このように、データＤ−Ａ，Ｄ−Ｂがメモリーから読み取られ、ＣＲＣ結果が主制御回路に伝送される。
【００２３】
たとえ第１実施形態中の命令が読み取り-読み取り（read-read）の順序であっても、読み取り-読み取り-読み取り（read-read-read)の順序のように、類似する方法中、第１実施形態を修正した命令にどのように適用するかは、当業者であれば、上記説明から分かることである。
【００２４】
〈第２実施形態：読み取りから書き込み（read to write）〉
図３は、本発明の第２実施形態に係る読み取り書き込みメモリーアクセスの配列を示すタイミング説明図である。８００−ＭＨｚシステムクロック、８ビットデータバスＤＱ＜７：０＞および２ビットＣＲＣバスＣＲＣ＜１：０＞の状態において、下記に説明を行う。ＣＲＣ計算は、ＣＲＣ−１６を例として（即ち、１６ビットのＣＲＣ結果が得られる）説明する。確かであることは、本発明が前記状態に限定されないことである。例えば、ＣＲＣ−３２等の他のＣＲＣ技術も本発明に適用することができ、エラー検査能力を更に改善することができる。
【００２５】
図３において、主制御回路(例えば、ＣＰＵ）が読み取り命令Ｒ−Ａおよび書き込み命令Ｗ−Ｂ，Ｗ−Ｃをメモリーに発行する。数サイクルが完了した後、メモリー中の内部データＤ−Ａが読み取り命令Ｒ−Ａに応じて読み出される。８バイトのＡ０〜Ａ７がデータＤ−Ａに含まれる。
【００２６】
データＤ−Ａが読み出される時、図３中のＣＲＣ−Ａに示すように、ＣＲＣ計算がデータＤ−Ａに即座に行われる。
【００２７】
データＤ−Ａが出力されることになっている時、数バイト（例えば、Ａ２およびＡ３）がＣＲＣバスＣＲＣ＜１：０＞に置かれ、その他のバイト（例えばＡ０〜Ａ１およびＡ４〜Ａ７）がデータバスＤＱ＜７：０＞に置かれる。留意すべきことは、データＤ−ＡのＣＲＣ計算ＣＲＣ−Ａの結果がＣＲＣバスＣＲＣ＜１：０＞の代わりにデータバスＤＱ＜７：０＞に置かれることである。
【００２８】
書き込み命令Ｗ−Ｂの発行から数サイクル後、データＢ０〜Ｂ７が主制御回路によりデータバスＤＱ＜７：０＞を経由してメモリーに伝送される。データＢ０〜Ｂ７が完全に受信された後、書き込み命令Ｗ−Ｂが実行されてメモリーにデータＤ−Ｂ（８バイトのＢ０〜Ｂ７を含む）が書き込まれる。
【００２９】
本実施形態中、データＢ０〜Ｂ７が全て受信された後は、ＣＲＣ計算を開始する必要がない。これに対して、図３中のＣＲＣ−Ｂに示すように、データＢ０〜Ｂ７の一部が受信された後は、ＣＲＣ計算が開始されることができる。ＣＲＣ計算ＣＲＣ−Ｂが終了した後、ＣＲＣ計算ＣＲＣ−Ｂの結果がＣＲＣバスＣＲＣ＜１：０＞を経由して主制御回路に戻され、エラー検査を実行する。
【００３０】
同様に、書き込み命令Ｗ−Ｃの発行から数サイクル後、データＣ０〜Ｃ７が主制御回路によりデータバスＤＱ＜７：０＞を経由してメモリーに伝送される。データＣ０〜Ｃ７が完全に受信された後、書き込み命令Ｗ−Ｃが実行されてメモリーにデータＤ−Ｃ（８バイトのＣ０〜Ｃ７を含む）が書き込まれる。
【００３１】
同様に、データＣ０〜Ｃ７が全て受信された後は、ＣＲＣ計算を開始する必要がない。これに対して、図３中のＣＲＣ−Ｃに示すように、データＣ０〜Ｃ７の一部が受信された後は、ＣＲＣ計算が開始されることができる。ＣＲＣ計算ＣＲＣ−Ｃが終了した後、ＣＲＣ計算ＣＲＣ−Ｃの結果がＣＲＣバスＣＲＣ＜１：０＞を経由して主制御回路に戻され、エラー検査を実行する。
【００３２】
このように、データＤ−Ａがメモリーから完全に読み取られ、データＤ−Ｂ，Ｄ−Ｃがメモリーに書き込まれ、ＣＲＣ結果ＣＲＣ−Ａ，ＣＲＣ−Ｂ，ＣＲＣ−Ｃが主制御回路に戻される。
【００３３】
たとえ第２実施形態中の命令が、読み取り書き込み-書き込み（read- write - write)の順序であっても、読み取り-書き込み-読み取り（read-write-read)の順序ように、類似する方法中、第２実施形態を修正した命令にどのように適用するかは、当業者であれば、上記説明から分かることである。
【００３４】
〈第３実施形態：書き込みから読み取り（write to read）〉  
図４は、本発明の第３実施形態に係る書き込み-読み取りメモリーアクセスの配列を示すタイミング説明図である。８００−ＭＨｚシステムクロック、８ビットデータバスＤＱ＜７：０＞および２ビットＣＲＣバスＣＲＣ＜１：０＞の状態において、下記に説明を行う。ＣＲＣ計算は、ＣＲＣ−１６を例として（即ち、１６ビットのＣＲＣ結果が得られる）説明する。確かであることは、本発明が前記状態に限定されないことである。例えば、ＣＲＣ−３２等の他のＣＲＣ技術も本発明に適用することができ、エラー検査能力を更に改善することができる。
【００３５】
図４において、主制御回路(例えば、ＣＰＵ）が書き込み命令Ｗ−Ａ，Ｗ−Ｂおよび読み取り命令Ｒ−Ｃをメモリーに発行する。
【００３６】
書き込み命令Ｗ−Ａの発行から数サイクル後、データＡ０〜Ａ７が主制御回路によりデータバスＤＱ＜７：０＞を経由してメモリーに伝送される。データＡ０〜Ａ７が完全に受信された後、書き込み命令Ｗ−Ａが実行されてメモリーにデータＤ−Ａ（８バイトのＡ０〜Ａ７を含む）が書き込まれる。
【００３７】
本実施形態中、データＡ０〜Ａ７が全て受信された後は、ＣＲＣ計算を開始する必要がない。これに対して、図４中のＣＲＣ−Ａに示すように、データＡ０〜Ａ７の一部が受信された後は、ＣＲＣ計算が開始されることができる。ＣＲＣ計算ＣＲＣ−Ａが終了した後、ＣＲＣ計算ＣＲＣ−Ａの結果がＣＲＣバスＣＲＣ＜１：０＞を経由して主制御回路に戻され、エラー検査を実行する。
【００３８】
同様に、書き込み命令Ｗ−Ｂの発行から数サイクル後、データＢ０〜Ｂ７が主制御回路によりデータバスＤＱ＜７：０＞を経由してメモリーに伝送される。データＢ０〜Ｂ７が完全に受信された後、書き込み命令Ｗ−Ｂが実行されてメモリーにデータＤ−Ｂ（８バイトのＢ０〜Ｂ７を含む）が書き込まれる。
【００３９】
同様に、本実施形態中、データＢ０〜Ｂ７が全て受信された後は、ＣＲＣ計算を開始する必要がない。これに対して、図４中のＣＲＣ−Ｂに示すように、データＢ０〜Ｂ７の一部が受信された後は、ＣＲＣ計算が開始されることができる。ＣＲＣ計算ＣＲＣ−Ｂが終了した後、ＣＲＣ計算ＣＲＣ−Ｂの結果がＣＲＣバスＣＲＣ＜１：０＞を経由して主制御回路に戻され、エラー検査を実行する。
【００４０】
数サイクル後、メモリー中の内部データＤ−Ｃが読み取り命令Ｒ−Ｃに応じて読み出される。８バイトのＣ０〜Ｃ７は、データＤ−Ｃに含まれる。
【００４１】
内部データＤ−Ｃが読み出される時、図４中のＣＲＣ−Ｃに示すように、ＣＲＣ計算がデータＤ−Ｃに即座に実行される。
【００４２】
データＤ−Ｃが出力されることになっている時、数バイト（例えば、Ｃ２およびＣ３）がＣＲＣバスＣＲＣ＜１：０＞に置かれ、その他のバイト（例えばＣ０〜Ｃ１およびＣ４〜Ｃ７）がデータバスＤＱ＜７：０＞に置かれる。留意すべきことは、データＤ−ＣのＣＲＣ計算ＣＲＣ−Ｃの結果がＣＲＣバスＣＲＣ＜１：０＞の代わりにデータバスＤＱ＜７：０＞に置かれることである。
【００４３】
このように、データＤ−Ａ，Ｄ−Ｂがメモリーに完全に書き込まれ、データＤ−Ｃがメモリーから読み取られ、ＣＲＣ結果ＣＲＣ−Ａ，ＣＲＣ−Ｂ，ＣＲＣ−Ｃが主制御回路に戻される。
【００４４】
たとえ第３実施形態中の命令が書き込み-書き込み-読み取り（write-write-read）命令の順序であっても、書き込み-読み取り-書き込み（write-read-write)の順序のように、類似する方法中、第３実施形態を修正した命令にどのように適用するかは、当業者であれば、上記説明から分かることである。
【００４５】
本発明の実施形態は、高速かつ大容量の複数のメモリー（例えば、ＤＤＲ４）に適用し、快速かつ重要なデータ伝送の要求に合わせることができる。
【００４６】
以上のごとく、この発明を最良の実施形態により開示したが、もとより、この発明を限定するためのものではなく、当業者であれば容易に理解できるように、この発明の技術思想の範囲内において、適当な変更ならびに修正が当然なされうるものであるから、その特許権保護の範囲は、特許請求の範囲および、それと均等な領域を基準として定めなければならない。
【図面の簡単な説明】
【００４７】
【図１】従来技術に係るメモリーアクセスの配列を示すタイミング説明図である。
【図２】本発明の実施形態に係るメモリーアクセスの配列を示すタイミング説明図である。
【図３】本発明の第２実施形態に係る読み書きメモリーアクセスの配列を示すタイミング説明図である。
【図４】本発明の第３実施形態に係る読み書きメモリーアクセスの配列を示すタイミング説明図である。
【符号の説明】
【００４８】
Ｒ−Ａ，Ｒ−Ｂ，Ｒ−Ｃ  読み取り命令
Ｄ−Ａ，Ａ０〜Ａ７，Ｄ−Ｂ，Ｂ０〜Ｂ７，Ｄ−Ｃ，Ｃ０〜Ｃ７  データ
ＣＲＣ−ＡＢ，ＣＲＣ−Ａ，ＣＲＣ−Ｂ，ＣＲＣ−Ｃ  ＣＲＣ計算
Ｗ−Ａ，Ｗ−Ｂ，Ｗ−Ｃ  書き込み命令
【図１】
2008198181.tif 000003
【図２】
2008198181.tif 000004
【図３】
2008198181.tif 000005
【図４】
2008198181.tif 000006
【外国語明細書】
1. TITLE OF THE INVENTION
METHOD FOR CONTROLLING MEMORY ACCESS
2. DETAILED DESCRIPTION OF INVENTION
BACKGROUND OF THE INVENTION
Field of Invention
[0001]    The present invention relates to a method for controlling memory access, and more particularly to a method for controlling memory access through a cyclic redundancy check (CRC) for improving error check coverage.
Description of Related Art
[0002]    In communication systems or computer systems, a cyclic redundancy check (CRC) can be adopted to improve error check coverage.  The CRC is capable of monitoring if errors occur during data transmission after the data are transmitted or stored.  In the process of transmitting the data, both the data receiver and the data source are required to implement a CRC computation, and one of the parties compares the CRC results respectively computed, so as to detect if the received data are erroneous. 
[0003]    Please refer to FIG. 1 which illustrates a conventional technology of applying a CRC-16 to memory access control in computer systems.  The following description is given on the conditions of an 800-MHz system clock, an 8-bit data bus DQ <7：0> , and a 2-bit CRC bus CRC<1：0>.  A 16-bit CRC result is acquired when the CRC-16 is applied.
[0004]    As shown in FIG. 1, a main control circuit (e.g. CPU) issues reading instructions R-A and R-B to a memory.  After several cycles, internal data D-A and D-B in the memory are retrieved in response to the reading instructions R-A and R-B.  Here, the "internal data" denote that the data have not been placed on the data bus DQ<7：0>.  The data D-A includes 8 bytes A0~A7 while the data D-B includes 8 bytes B0~B7.  Based on the internal data D-A and D-B, a CRC computation CRC-AB is carried out by a memory controller.
[0005]    When the data D-A and D-B are to be outputted by the memory, some bytes (e.g. A3 and B3) are placed on the CRC bus CRC<1：0> while the other bytes are placed on the data bus DQ<7：0>.  Note that the space between A0 and A1 as indicated in FIG. 1 represents a non-transmission of data on the data bus DQ<7：0>.
[0006]    As the data are outputted via the data bus DQ<7：0>, the CRC computation CRC-AB is initiated.  As shown in FIG. 1, after the CRC computation CRC-AB is completed, the result of the CRC computation CRC-AB is transmitted via the CRC bus CRC<1：0>.
[0007]    As such, the data D-A and D-B are read from the memory and the CRC result is outputted to the main control circuit.
[0008]    However, the conventional technology has the following drawbacks of (1) complex hardware structure, large circuit layout, and high power consumption; (2) tight CAS to CAS delay latency (tCCD-L) e.g. 1.25 ns which leads to difficulty in design; (3) long time delay from issuing the reading instruction to outputting the data from the memory; (4)maintenance of data A and B in cache during the CRC computation, which leads to further difficulty in design; (5) difficulty in completion of the CRC computation within an extremely short time lapse (in 1.25 ns as exemplified by FIG. 1).
[0009]    Accordingly, a method of controlling memory access is desirable given that the method is capable of overcoming said drawbacks of the conventional technology.
SUMMARY OF THE INVENTION
[0010]    The present invention provides a method for controlling memory access.  According to the method, a result of a cyclic redundancy check (CRC) computation is outputted via a data bus, while a part of read data is outputted via a CRC bus in a process of reading data from a memory.  In the process of writing data to the memory, data are received via the data bus and the corresponding CRC result is outputted via the CRC bus.
[0011]    The present invention provides a method for controlling memory access.  As the CRC computation is in process, it is unnecessary to hold two or more data simultaneously but to maintain the data under CRC computation. 
[0012]    One example of the present invention provides a method for controlling memory access, including issuing a first reading instruction to a memory; retrieving first read data from the memory in response to the first reading instruction; performing CRC computation on the first read data to obtain a first CRC result; transmitting a part of the first read data via a data bus and transmitting the other part of the first read data via a CRC bus; and transmitting the first CRC result via the data bus.
[0013]    The present invention further provides a method for controlling memory access, including issuing a first reading instruction and a second reading instruction to a memory; retrieving first read data from the memory in response to the first reading instruction; performing CRC computation on the first read data to obtain a first CRC result; retrieving second read data from the memory in response to the second reading instruction; performing CRC computation on the second read data to obtain a second CRC result; transmitting a part of the first read data via a data bus and transmitting the other part of the first read data via a CRC bus; transmitting the first CRC result via the data bus; transmitting a part of the second read data via the data bus and transmitting the other part of the second read data via the CRC bus; and transmitting the second CRC result via the data bus.
[0014]    Another example of the present invention further provides a method for controlling memory access, including issuing a first writing instruction and a first reading instruction to a memory; transmitting first written data in relation to the first writing instruction to the memory via a data bus; performing CRC computation on the first written data to obtain a first CRC result; transmitting the first CRC result via a CRC bus; retrieving first read data from the memory in response to the first reading instruction; performing CRC computation on the first read data to obtain a second CRC result; transmitting a part of the first read data via the data bus and transmitting the other part of the first read data via the CRC bus; and transmitting the second CRC result via the data bus.
[0015]    In order to make the aforementioned and other objects, features and advantages of the present invention more comprehensible, preferred embodiments accompanied with figures are described in detail below.
DESCRIPTION OF EMBODIMENTS
[0016]    In the present invention, a CRC result is outputted via a data bus while a part of read data is outputted via a CRC bus in a process of reading the data from a memory.  In the process of writing the data to the memory, data are received via the data bus and the CRC result is outputted via the CRC bus.  In addition, as a CRC computation is in process, it is unnecessary to hold two or more data simultaneously but to maintain the data under CRC computation. 
[0017]    First Embodiment: Read to Read
[0018]    Please refer to FIG. 2 which is a timing schematic view showing a sequence of memory access according to an embodiment of the present invention.  The following description is given on the conditions of an 800-MHz system clock, an 8-bit data bus DQ <7：0> , and a 2-bit CRC bus CRC<1：0>.  The CRC computation is described by taking CRC-16 for an example (i.e. a 16-bit CRC result is obtained).  It is certain that the present embodiment is not limited to said conditions.  For example, other CRC technologies e.g. CRC-32 are also applicable in the present embodiment so as to further improve error check coverage. 
[0019]    As shown in FIG. 2, a main control circuit (e.g. CPU) issues reading instructions R-A and R-B to a memory.  After several cycles, internal data D-A and D-B in the memory are retrieved in response to the reading instructions R-A and R-B.  Here, the "internal data" denote that the data have not been placed on the data bus DQ<7：0>.  The data D-A includes 8 bytes A0~A7 while the data D-B includes 8 bytes B0~B7.
[0020]    As the data D-A is retrieved, a CRC computation is implemented on the data D-A as soon as possible, which is referred to as CRC-A in FIG. 2.  Likewise, as the data D-B is retrieved, the CRC computation is implemented on the data D-B as soon as possible, which is referred to as CRC-B in FIG. 2.
[0021]    When the data D-A is to be outputted, some bytes (e.g. A2 and A3) are placed on the CRC bus CRC<1：0> while the other bytes (e.g. A0~A1 and A4~A7) are placed on the data bus DQ<7：0>.  Please note that the result of the CRC computation CRC-A of the data D-A is placed on the data bus DQ<7：0> instead of on the CRC bus CRC<1：0>.
[0022]    Similarly, when the data D-B is to be outputted, some bytes (e.g. B2 and B3) are placed on the CRC bus CRC<1：0> while the other bytes (e.g. B0~B1 and B4~B7) are placed on the data bus DQ<7：0>.  The result of the CRC computation CRC-B on the data D-B is also placed on the data bus DQ<7：0> instead of on the CRC bus CRC<1：0>.
[0023]    As such, the data D-A and D-B are read from the memory and the CRC result is transmitted to the main control circuit.
[0024]    Even though the instructions in the first embodiment are in a read-read order, it is known by those skilled in the art from the above description that how to apply the first embodiment to the instructions arranged in similar manners, such as in a read-read-read order.
[0025]    Second Embodiment: Read to Write
[0026]    Please refer to FIG. 3 which is a timing schematic view showing a sequence of read-to-write memory access according to a second embodiment of the present invention.  The following description is given on the conditions of an 800-MHz system clock, an 8-bit data bus DQ <7：0>, and a 2-bit CRC bus CRC<1：0>.  The CRC computation is described by taking CRC-16 for an example (i.e. a 16-bit CRC result is obtained).  It is certain that the present embodiment is not limited to said conditions.  For example, other CRC technologies e.g. CRC-32 are also applicable in the present embodiment so as to further improve error check coverage. 
[0027]    As shown in FIG. 3, a main control circuit (e.g. CPU) issues a reading instruction R-A and writing instructions W-B and W-C to a memory.  After several cycles are completed, an internal data D-A in the memory is retrieved in response to the reading instruction R-A.  8 bytes A0~A7 are included in the data D-A.
[0028]    As the data D-A is retrieved, a CRC computation is performed on the data D-A as soon as possible, which is referred to as CRC-A in FIG. 3.
[0029]    When the data D-A is to be outputted, some bytes (e.g. A2 and A3) are placed on the CRC bus CRC<1：0> while the other bytes (e.g. A0~A1 and A4~A7) are placed on the data bus DQ<7：0>.  Please note that the result of the CRC computation CRC-A of the data D-A is placed on the data bus DQ<7：0> instead of on the CRC bus CRC<1：0>.
[0030]    After several cycles from issue of the writing instruction W-B, data B0-B7 are transmitted by the main control circuit to the memory via the data bus DQ<7：0>.  After the data B0~B7 are completely received, the writing instruction W-B is executed to write the data D-B (including 8 bytes B0~B7) into the memory.
[0031]    In the present embodiment, it is not necessary to initiate the CRC computation after the data B0~B7 are all received.  Contrarily, the CRC computation can be initiated after a part of the data B0~B7 is received, which is referred to as CRC-B in FIG. 3.  After the CRC computation CRC-B is finished, the result of the CRC computation CRC-B is transmitted back to the main control circuit via the CRC bus CRC<1：0> so as to implement an error check.
[0032]    Likewise, after several cycles from issue of the writing instruction W-C, data C0~C7 are transmitted by the main control circuit to the memory via the data bus DQ<7：0>.  After the data C0~C7 are completely received, the writing instruction W-C is executed to write the data D-C (including 8 bytes C0~C7) into the memory.
[0033]    Similarly, it is not necessary to initiate the CRC computation after the data C0~C7 are all received.  Contrarily, the CRC computation can be initiated after a part of the data C0~C7 is received, which is referred to as CRC-C in FIG. 3.  After the CRC computation CRC-C is finished, the result of the CRC computation CRC-C is transmitted back to the main control circuit via the CRC bus CRC<1：0> so as to implement the error check.
[0034]    As such, the data D-A is completely read from the memory, the data D-B and D-C are written into the memory, and the CRC results CRC-A, CRC-B and CRC-C are transmitted back to the main control circuit.
[0035]    Even though the instructions in the second embodiment are in a read-write-write order, it is known by those skilled in the art from the above description that how to apply the second embodiment to the instructions arranged in similar manners, such as in a read-write-read order.
[0036]    Third Embodiment: Write to Read
[0037]    Please refer to FIG. 4 which is timing a schematic view showing a sequence of write-to-read memory access according to a third embodiment of the present invention.  The following description is given on the conditions of an 800-MHz system clock, an 8-bit data bus DQ <7：0> , and a 2-bit CRC bus CRC<1：0>.  A CRC computation is described by taking CRC-16 for an example (i.e. a 16-bit CRC result is obtained).  It is certain that the present embodiment is not limited to said conditions.  For example, other CRC technologies e.g. CRC-32 are also applicable in the present embodiment so as to further improve error check coverage. 
[0038]    As shown in FIG. 4, a main control circuit (e.g. CPU) issues writing instructions W-A and W-B and a reading instruction R-C to a memory.
[0039]    After several cycles from issue of the writing instruction W-A, data A0~A7 are transmitted by the main control circuit to the memory via the data bus DQ<7：0>.  After the data A0~A7 are completely received, the writing instruction W-A is executed to write the data D-A (including 8 bytes A0~A7) into the memory.
[0040]    In the present embodiment, it is not necessary to initiate the CRC computation after the data A0~A7 are all received.  Contrarily, the CRC calculation can be initiated after a part of the data A0~A7 is received, which is referred to as CRC-A in FIG. 4.  After the CRC computation CRC-A is finished, the result of the CRC computation CRC-A is transmitted back to the main control circuit via the CRC bus CRC<1：0> so as to implement an error check.
[0041]    Likewise, after several cycles from issue of the writing instruction W-B, data B0~B7 are transmitted by the main control circuit to the memory via the data bus DQ<7：0>.  After the data B0~B7 are completely received, the writing instruction W-B is executed to write the data D-B (including 8 bytes B0~B7) into the memory.
[0042]    Similarly, in the present embodiment, it is not necessary to initiate the CRC computation after the data B0~B7 are all received.  Contrarily, the CRC computation can be initiated after a part of the data B0~B7 is received, which is referred to as CRC-B in FIG. 4.  After the CRC computation CRC-B is finished, the result of the CRC computation CRC-B is transmitted back to the main control circuit via the CRC bus CRC<1：0> so as to implement an error check.
[0043]    After several cycles, an internal data D-C in the memory is retrieved in response to the reading instruction R-C.  8 bytes C0~C7 are included in the data D-C.
[0044]    As the internal data D-C is retrieved, the CRC computation is implemented on the data D-C as soon as possible, which is referred to as CRC-C in FIG. 4.
[0045]    When the data D-C is to be outputted, some bytes (e.g. C2 and C3) are placed on the CRC bus CRC<1：0> while the other bytes (e.g. C0~C1 and C4~C7) are placed on the data bus DQ<7：0>.  Please note that the result of the CRC computation CRC-C of the data D-C is placed on the data bus DQ<7：0> instead of on the CRC bus CRC<1：0>.
[0046]    As such, the data D-A and D-B are completely written into the memory, the data D-C is read from the memory, and the CRC results CRC-A, CRC-B and CRC-C are transmitted back to the main control circuit.
[0047]    Even though the instructions in the third embodiment are in a write-write-read order, it is known by those skilled in the art from the above description that how to apply the third embodiment to the instructions arranged in similar manners, such as in a write-read-write order.
[0048]    To sum up, said embodiments of the present invention are characterized by the advantages of (1) uncomplex hardware structure, reduced circuit layout, and low power consumption; (2) relaxed CAS to CAS delay latency (tCCD-L) e.g. 2.5 ns which leads to simplicity in design; (3) unnecessity of maintenance of several data in cache during the CRC computation, which leads to further simplicity in design; (4) completion of the CRC computation within a sufficient time lapse (in 1.875 ns as shown in FIG. 2); (5) high error check rate.
[0049]    The embodiments of the present invention can be applied to memories (e.g. DDR4) having high speed and great capacity and meet the requirements for rapidity and significant data transmission.
[0050]    It will be apparent to those skilled in the art that various modifications and variations can be made to the structure of the present invention without departing from the scope or spirit of the invention.  In view of the foregoing, it is intended that the present invention cover modifications and variations of this invention provided they fall within the scope of the following claims and their equivalents.
BRIEF DESCRIPTION OF DRAWINGS
FIG. 1 is a timing schematic view showing a sequence of memory access according to a conventional technology. 
FIG. 2 is a timing schematic view showing a sequence of memory access according to an embodiment of the present invention. 
FIG. 3 is a timing schematic view showing a sequence of read-to-write memory access according to a second embodiment of the present invention. 
FIG. 4 is a timing schematic view showing a sequence of write-to-read memory access according to a third embodiment of the present invention.
Claims
1.  A method for controlling memory access, comprising:
issuing a first reading instruction to a memory;
retrieving first read data from the memory in response to the first reading instruction;
performing error check computation on the first read data to obtain a first error check result;
transmitting a part of the first read data via a data bus and transmitting the other part of the first read data via an error check bus; and
transmitting the first error check result via the data bus.
2.  The method of claim 1, further comprising:
issuing a second reading instruction to the memory after the first reading instruction is issued;
retrieving second read data from the memory in response to the second reading instruction;
performing error check computation on the second read data to obtain a second error check result;
transmitting a part of the second read data via the data bus and transmitting the other part of the second read data via the error check bus; and
transmitting the second error check result via the data bus.
3.  The method of claim 1, further comprising:
issuing a first writing instruction to the memory after the first reading instruction is issued;
transmitting first written data in relation to the first writing instruction to the memory via the data bus;
performing error check computation on the first written data to obtain a second error check result; and
transmitting the second error check result via the error check bus.
4.  The method of claim 3, further comprising:
issuing a second writing instruction to the memory after the first writing instruction is issued;
transmitting second written data in relation to the second writing instruction to the memory via the data bus;
performing error check computation on the second written data to obtain a third error check result; and
transmitting the third error check result via the error check bus.
5.  The method of claim 1, wherein the error check computation is cyclic redundancy check (CRC).
6.  The method of claim 2, wherein the error check computation is CRC.
7.  The method of claim 3, wherein the error check computation is CRC.
8.  The method of claim 4, wherein the error check computation is CRC.
9.  A method for controlling memory access, comprising:
issuing a first reading instruction and a second reading instruction to a memory;
retrieving first read data from the memory in response to the first reading instruction;
performing cyclic redundancy check (CRC) on the first read data to obtain a first CRC result;
retrieving second read data from the memory in response to the second reading instruction;
performing CRC on the second read data to obtain a second CRC result;
transmitting a part of the first read data via a data bus and transmitting the other part of the first read data via a CRC bus;
transmitting the first CRC result via the data bus;
transmitting a part of the second read data via the data bus and transmitting the other part of the second read data via the CRC bus; and
transmitting the second CRC result via the data bus.
10.  A method for controlling memory access, comprising:
issuing a first writing instruction and a first reading instruction to a memory;
transmitting first written data in relation to the first writing instruction to the memory via a data bus;
performing error check computation on the first written data to obtain a first error check result;
transmitting the first error check result via an error check bus;
retrieving first read data from the memory in response to the first reading instruction;
performing error check computation on the first read data to obtain a second error check result;
transmitting a part of the first read data via the data bus and transmitting the other part of the first read data via the error check bus; and
transmitting the second error check result via the data bus.
11.  The method of claim 10, further comprising:
issuing a second writing instruction to the memory;
transmitting second written data in relation to the second writing instruction to the memory via the data bus;
performing error check computation on the second written data to obtain a third error check result; and
transmitting the third error check result via the error check bus.
12.  The method of claim 10, wherein the error check computation is CRC.
13.  The method of claim 11, wherein the error check computation is CRC.
１．Abstract
A cyclic redundancy check (CRC) is used for improving error check coverage during memory access.  In memory reading process, a part of read data is outputted from the memory via a CRC bus, and a CRC result and the other part of the read data are outputted from the memory via a data bus.
２．Representative Drawing
Fig.2
【図１】
2008198181.tif 000007
【図２】
2008198181.tif 000008
【図３】
2008198181.tif 000009
【図４】
2008198181.tif 000010