(57)【要約】      （修正有）【課題】プロセッサが、データ保護を使用するインバンドメモリーにアクセスする時、キャッシュメモリーを使用してメモリー帯域幅を最大限に活用するための装置及び方法を提供する。【解決手段】コンピューティング装置２００は、データ及び前記データのエラーを検査するためのパリティを貯蔵し、データ及びパリティを基準サイズで送信及び受信するためのメインメモリー、メインメモリーにアクセスするためのプロセッサ及びデータをキャッシングするための第１キャッシュメモリーを包含する。プロセッサが現在のデータについてのライト作動を要請する場合、現在のデータは、第１キャッシュメモリーに貯蔵される。第１キャッシュメモリーは、貯蔵された現在のデータを基準サイズに変更してメインメモリーに出力する。現在のデータは、基準サイズより小さいサイズである。【選択図】図２
2019083005.tif 000002
【特許請求の範囲】
【請求項１】
データ及び前記データのエラーを検査するためのパリティを貯蔵し、前記データ及び前記パリティを基準サイズで送信及び受信するためのメインメモリーと、
前記メインメモリーにアクセスするためのプロセッサと、
データをキャッシングするための第１キャッシュメモリーと、を包含し、
前記プロセッサが現在のデータについてのライト作動を要請する場合、前記現在のデータは前記第１キャッシュメモリーに貯蔵され、前記第１キャッシュメモリーは前記貯蔵された現在のデータを前記基準サイズに変更して前記メインメモリーに出力し、
前記現在のデータは前記基準サイズより小さいサイズである、コンピューティング装置。
【請求項２】
前記現在のデータは、現在のデータのライトが遂行されるアドレスにより指示されるメインメモリーの領域のデータがキャッシングされた前記第１キャッシュメモリー内の空間に貯蔵される、請求項１に記載のコンピューティング装置。
【請求項３】
前記第１キャッシュメモリーは前記データが前記メインメモリー上でキャッシングされる領域を示すタグ情報及び前記データをキャッシングするための複数のキャッシュラインを包含し、
前記タグ情報に基づいて前記複数のキャッシュライン中で前記現在のデータが貯蔵されるキャッシュラインが決定される、請求項１又は２に記載のコンピューティング装置。
【請求項４】
前記基準サイズに変更された前記現在のデータは、前記第１キャッシュメモリーのクリーン又はフラッシュの動作が遂行される時、前記メインメモリーに出力される、請求項１ないし３のうち何れか一項に記載のコンピューティング装置。
【請求項５】
前記第１キャッシュメモリーから出力される前記基準サイズに変更された前記現在のデータに対するパリティが生成される、請求項１ないし４のうち何れか一項に記載のコンピューティング装置。
【請求項６】
前記メインメモリーに貯蔵された前記パリティをキャッシングするための第２キャッシュメモリーをさらに包含し、
前記現在のデータに対する前記生成されたパリティのライトが遂行されるアドレスにより指示される前記メインメモリーの領域のパリティが前記第２キャッシュメモリーにキャッシングされる場合、前記現在のデータに対する前記生成されたパリティは前記第２キャッシュメモリーに貯蔵され、前記第２キャッシュメモリーは前記現在のデータに対する前記生成されたパリティを前記基準サイズに変更して前記メインメモリーに出力する、請求項５に記載のコンピューティング装置。
【請求項７】
キャッシュメモリーを包含するプロセッサにおいて、
前記キャッシュメモリーは、データをキャッシングするための第１キャッシュメモリーと前記データのエラーを検査するためのパリティをキャッシングするための第２キャッシュメモリーとを包含し、前記第１キャッシュメモリーは基準サイズのデータをメインメモリーに出力するように構成され、前記第２キャッシュメモリーは前記基準サイズのパリティを前記メインメモリーに出力するように構成され、
前記基準サイズは前記データ及び前記パリティを前記メインメモリーから送信及び受信するためのサイズと同一である、プロセッサ。
【請求項８】
メインメモリーに現在のデータをライトするためにコンピューティング装置により遂行される方法において、
前記現在のデータのライトが遂行される第１アドレスにより指示される前記メインメモリーの領域のデータが第１キャッシュメモリーにキャッシングされているか否かを判定する動作を含み、
前記第１アドレスにより指示される前記メインメモリーの前記領域の前記データが前記第１キャッシュメモリーにキャッシングされている場合において、前記方法は、
前記第１キャッシュメモリーに前記現在のデータを貯蔵する動作と、
前記現在のデータを基準サイズに変更して、前記第１キャッシュメモリーから前記メインメモリーに出力する動作を包含し、
前記現在のデータは前記基準サイズより小さいサイズであり、前記基準サイズは前記データ及びパリティを前記メインメモリーから送信及び受信するためのサイズと同一である、方法。
【請求項９】
前記メインメモリーに出力する前記基準サイズに変更された前記現在のデータに対するパリティを生成する動作と、
前記生成されたパリティを前記メインメモリーにライトする動作と、をさらに包含する、請求項８に記載の方法。
【請求項１０】
前記生成されたパリティを前記メインメモリーにライトする動作は、
前記生成されたパリティのライトが遂行される第２アドレスにより指示される前記メインメモリーの領域のパリティが第２キャッシュメモリーにキャッシングされているか否かを判定する動作を含み、
前記第２アドレスにより指示される前記メインメモリーの前記領域の前記パリティが前記第２キャッシュメモリーにキャッシングされている場合に、前記方法は、
前記第２キャッシュメモリーに前記生成されたパリティを貯蔵する動作と、
前記生成されたパリティを前記基準サイズに変更して、前記第２キャッシュメモリーから前記メインメモリーに出力する動作と、を包含する、請求項９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
メモリーにアクセスするためのコンピューティング装置及び方法に関し、具体的にはデータ保護を使用するインバンド(In-Band)メモリーにアクセスするためのコンピューティング装置及び方法に関する。
【背景技術】
【０００２】
コンピューティング装置は、データ処理のためメモリーにアクセスすることができる。コンピューティング装置はメモリーにデータをライト(write)したり、メモリーからデータをリード(read)したりする時、エラー(error)を検査するためパリティ(parity)情報を使用できる。パリティ情報はデータから発生できる。例えば、コンピューティング装置は、３２バイトのデータ毎に2バイトのパリティ情報を使用してデータをライト/リードする時、発生するデータのエラーを確認し、場合によってはエラーが発生したデータを直接に修正することもできる。
【０００３】
コンピューティング装置がメモリーにアクセスする時、発生される帯域幅の増加はコンピューティング装置の消耗電力を増加させることができる。従って、コンピューティング装置がメモリーにアクセスする時、帯域幅を効率的に使用する必要がある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
実施例が達成しようとする技術的課題は、プロセッサが、データ保護を使用するインバンドメモリーにアクセスする時、キャッシュメモリーを使用してメモリー帯域幅を最大限に活用するための装置及び方法が提供することである。
【０００５】
本願で説明される実施例は、前記されたような技術的課題に限定されず、別の技術的課題を達成するために使用されてもよい。
【課題を解決するための手段】
【０００６】
コンピューティング装置は、データ及び前記データのエラーを検査するためのパリティを貯蔵し、前記データ及び前記パリティを基準サイズで送信及び受信するためのメインメモリー(main  memory)、前記メインメモリーにアクセスするためのプロセッサ、及びデータをキャッシングするための第１キャッシュメモリーを包含し、前記プロセッサが現在のデータについてのライト作動を要請する場合、前記現在のデータは前記第１キャッシュメモリーに貯蔵され、前記第１キャッシュメモリーは前記貯蔵された現在のデータを前記基準サイズに変更して前記メインメモリーに出力し、前記現在のデータは前記基準サイズより小さいサイズであり得る。
【０００７】
キャッシュメモリーを包含するプロセッサにおいて、前記キャッシュメモリーはデータをキャッシングするための第１キャッシュメモリーと前記データのエラーを検査するためのパリティをキャッシングするための第２キャッシュメモリーとを包含し、前記第１キャッシュメモリーは基準サイズのデータをメインメモリーに出力するように構成され、前記第２キャッシュメモリーは前記基準サイズのパリティを前記メインメモリーに出力するように構成され、前記基準サイズは前記データ及び前記パリティを前記メインメモリーから送信及び受信するためのサイズと同一である。
【０００８】
メインメモリーに現在のデータをライト(write)するためにコンピューティング装置により遂行される方法において、前記現在のデータのライトが遂行される第１アドレスにより指示される前記メインメモリー領域のデータが第１キャッシュメモリーにキャッシングされているか否かを判定する動作を含み、前記第１アドレスにより指示される前記メインメモリー領域のデータが前記第１キャッシュメモリーにキャッシングされている場合において、前記方法は、前記第１キャッシュメモリーに前記現在のデータを貯蔵する動作と、前記現在のデータを基準サイズに変更して、前記第１キャッシュメモリーから前記メインメモリーに出力する動作とを包含し、前記現在のデータは前記基準サイズより小さいサイズであり、前記基準サイズは前記データ及びパリティを前記メインメモリーから送信及び受信するためのサイズと同一である。
【発明の効果】
【０００９】
単位サイズより小さいサイズのデータに対するライト作動が遂行される場合、キャッシュメモリーを用いてインバンドメモリーのバス帯域幅が最大に活用されることができる。帯域幅の浪費が防止されることによって、帯域幅の効率性が向上されることができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、一実施例によるコンピューティング装置のブロック図を示す。
【図２】図２は、一実施例によるコンピューティング装置のブロック図を示す。
【図３Ａ】図３Ａは、一実施例により現在のデータを受信する前のキャッシュメモリー示す。
【図３Ｂ】図３Ｂは、一実施例により受信された現在のデータを貯蔵した直後のキャッシュメモリーを示す。
【図３Ｃ】図３Ｃは、一実施例により現在のデータを包含する基準サイズのデータを出力するキャッシュメモリーを示す。
【図３Ｄ】図３Ｄは、一実施例により要請されたリード(read)データを出力するキャッシュメモリー示す。
【図４】図４は、一実施例によるコンピューティング装置の具体的な実施例を示す。
【図５】図５は、一実施例によるコンピューティング装置において現在のデータについてのライト作動を遂行する方法の流れ図を示す。
【図６】図は、一実施例によるコンピューティング装置から生成されたパリティについてのライト作動を遂行する方法の流れ図を示す。
【図７】図７は、一実施例によるコンピューティング装置においてリード作動を遂行する方法の流れ図を示す。
【図８】図８は、一実施例による電子システムの例示的な構成を示すブロック図である。
【発明を実施するための形態】
【００１１】
以下において、本発明の属する技術分野における通常の知識を有する者（以下、通常の技術者）が本発明を容易に実施できるように、添付される図面を参照していくつかの実施例が明確且つ詳細に説明されるであろう。
【００１２】
図１は、一実施例によるコンピューティング装置のブロック図を示す。
【００１３】
コンピューティング装置１００は、プロセッサ１２０及びメインメモリー１６０を包含できる。一実施例によるコンピューティング装置１００は、コンピュータやモバイル装置であり得る。コンピューティング装置１００は、データをメインメモリー１６０に貯蔵又は記録したり、メインメモリー１６０からデータをリード(read)したりすることができる。
【００１４】
コンピューティング装置１００は、データのエラーを検査するためのパリティ情報を使用できる。一実施例によるコンピューティング装置１００は、特定のサイズのデータ毎に特定のサイズのパリティ情報を生成できる。例えば、コンピューティング装置１００は、３２バイトのデータ毎に２バイトのパリティ情報を使用できる。例えば、コンピューティング装置１００は、１バイトのデータ毎に１ビットのパリティ情報を使用できる。以下、説明の便宜のため、コンピューティング装置１００はデータ保護のため３２バイトのデータ毎に２バイトのパリティ情報を使用することと仮定する。
【００１５】
プロセッサ１２０はメインメモリー１６０にアクセスできる。プロセッサ１２０はコンピューティング装置１００の諸般の作動を制御し、論理演算を遂行できる。一実施例によるプロセッサ１２０は、システムオンチップ(SoC:  System-on-Chip)で構成されることができる。一実施例によるプロセッサ１２０はASIC(Application  Specific  Integrated  Circuit)、エンベデッドプロセッサ、マイクロプロセッサ、ハードウェア制御ロジック、ハードウェア有限状態機械(FSM)、デジタル信号プロセッサ(DSP)又はこれらの組み合せであり得る。
【００１６】
メインメモリー１６０は、データ及びパリティ情報を貯蔵できる。メインメモリー１６０はコンピューティング装置１００の作動メモリーに使用されることができる。メインメモリー１６０は、ダイナミックランダムアクセスメモリー(DRAM:  Dynamic  Random  Access  Memory)のような揮発性メモリー、又は磁気抵抗ランダムアクセスメモリー(MRAM:  Magneto-resistive  RAM)、相変化ランダムアクセスメモリー(PRAM:  Phase-change  RAM)、抵抗変化ランダムアクセスメモリー(RRAM（登録商標）:  Resistive  RAM)、強誘電体ランダムアクセスメモリー(FRAM（登録商標）:  Ferroelectric  RAM)などのような非揮発性メモリーを包含できる。但し、メインメモリー１６０はデータを貯蔵するための如何なる種類のメモリー装置も包含することが可能であり、これらに制限されない。
【００１７】
メインメモリー１６０は、データとデータのエラーを検査するためのパリティを貯蔵できる。メインメモリー１６０は、データが貯蔵されるデータ領域１６２とパリティが貯蔵されるパリティ領域１６４を包含できる。一実施例によるメインメモリー１６０は、データ及びパリティを送信又は受信するため同じメモリーバスを使用できる。例えば、メインメモリー１６０はデータ及びパリティを１つのチャンネルを介して外部と送信及び受信できる。
【００１８】
メインメモリー１６０は、データとパリティを外部と送信又は受信する時、特定のフォーマットを使用できる。例えば、メインメモリー１６０に入力されたり、メインメモリーから出力されたりするデータ及びパリティの基本サイズの単位は３２バイト又は６４バイトのサイズであり得る。以下、基準サイズはメインメモリー１６０がデータ及びパリティを送信及び受信するため使用する基本サイズの単位であってもよい。メインメモリー１６０のように、データとパリティを同じメモリーに貯蔵し、同じバスを使用してデータとパリティを送信及び受信するメモリーはインバンドメモリー(in-band)と称されることができる。
【００１９】
以下、説明の便宜のため、メインメモリー１６０は３２バイトの基準サイズでデータとパリティを外部と送信及び受信することと仮定される。例えば、メインメモリー１６０は３２バイトのメモリー帯域幅を有し得る。
【００２０】
以下の説明において、「現在のデータ」とは、現在のプロセッサ１２０がライト又はリードするためのデータであり、メインメモリー１６０において使用する基準サイズである３２バイトより小さいサイズのデータ（例えば、４バイト）であってもよい。
【００２１】
コンピューティング装置１００はデータのエラーを検査するためのパリティを生成できる。メインメモリー１６０はデータとパリティを受信し、パリティに基づいて受信されたデータにエラーがあるか否かを検査することができる。コンピューティング装置１００はメインメモリー１６０からデータとパリティをリードした後、パリティに基づいて受信されたデータにエラーがあるか否かを検査することができる。メインメモリー１６０にライトされるデータについてのパリティを生成したり、メインメモリー１６０からリードしたデータをパリティに基づいてエラーを検査したりする動作は、ＥＣＣ(Error  Correcting  Code)エンジン（図示せず）において遂行されることができる。
【００２２】
一実施例によるプロセッサ１２０は、メインメモリー１６０にライトするための３２バイトのデータをメインメモリー１６０に伝達できる。一実施例によるコンピューティング装置１００は、３２バイトのデータについての２バイトのパリティを生成してメインメモリー１６０へ伝達できる。メインメモリー１６０は受信されたデータとパリティに基づいて伝達されたデータにエラーが存在するか否かを検査できる。
【００２３】
一実施例によるプロセッサ１２０は,メインメモリー１６０にライトするための４バイトサイズの現在のデータをメインメモリー１６０に伝達できる。一実施例によるコンピューティング装置１００は、ライトの要請を遂行するため必要なメインメモリー１６０上のアドレス情報に基づいて、当該アドレスに貯蔵されている３２バイトのデータと３２バイトのデータに対応する２バイトのパリティのそれぞれを３２バイトの帯域幅を使用してリードできる。プロセッサ１２０はメインメモリー１６０からリードした３２バイトのデータを現在のデータに基づいて修正できる。コンピューティング装置１００は修正された３２バイトのデータに対応する２バイトのパリティを生成し、生成された２バイトのパリティに基づいてリードした２バイトのパリティを修正できる。コンピューティング装置１００は、修正された３２バイトのデータと修正された２バイトのパリティをそれぞれ３２バイトの帯域幅を使用してメインメモリー１６０にライトできる。一実施例によるコンピューティング装置１００は４バイトのデータライト動作のため、３２バイトのデータリード、２バイトのパリティリード、修正された３２バイトのデータライト、生成された２バイトのパリティライトを遂行するから３２バイトの帯域幅を４回使用するようになる。
【００２４】
図２は、一実施例によるコンピューティング装置のブロック図を示す。
【００２５】
以下、プロセッサ２２０が現在のデータに対するライト又はリードの動作時に、キャッシュメモリーを使用して帯域幅を効率的に使用する実施例が開示される。
【００２６】
図２のコンピューティング装置２００は、図１のコンピューティング装置１００の具体的な実施例を示す。従って、以下省略された内容であるとしても図１のコンピューティング装置１００に関して記述された内容は、図２のコンピューティング装置２００にも適用されることができる。図２のプロセッサ２２０及びメインメモリー２６０は、それぞれ図１のプロセッサ１２０及びメインメモリー１６０に対応されることができる。
【００２７】
コンピューティング装置２００はプロセッサ２２０、キャッシュメモリー２４０及びメインメモリー２６０を包含できる。
【００２８】
キャッシュメモリー２４０はデータ又はパリティをキャッシングできる。一実施例によるキャッシュメモリー２４０は、データをキャッシングするためのデータキャッシュメモリー２４２及びパリティをキャッシングするためのパリティキャッシュメモリー２４４の中で少なくとも１つを包含できる。一実施例によるデータキャッシュメモリー２４２はメインメモリー２６０上のデータ領域２６２に貯蔵されたデータをキャッシングできる。一実施例によるパリティキャッシュメモリー２４４は、メインメモリー２６０上のパリティ領域２６４に貯蔵されたパリティをキャッシングできる
【００２９】
キャッシュメモリー２４０はプロセッサ２２０から受信したデータ又はパリティを貯蔵できる。一実施例により、キャッシングとは、メインメモリー２６０上のデータ又はパリティをキャッシュメモリー２４０へ複写して移す動作を意味し、貯蔵とは、プロセッサ２２０から受信された現在のデータをキャッシュメモリー２４０内のキャッシングされた空間にライトする動作を意味する。
【００３０】
データキャッシュメモリー２４２及びパリティキャッシュメモリー２４４のそれぞれは、タグ(tag)情報と複数のキャッシュラインを包含できる。タグ情報は、データがメインメモリー２６０上でキャッシングされる領域に対する情報を示せる。例えば、タグ情報はメインメモリー上のどの領域のデータがキャッシュメモリーにキャッシングされているかを示せる。複数のキャッシュラインのそれぞれは、データ又はパリティをキャッシング又は貯蔵するための空間である。一実施例によるデータキャッシュメモリー２４２及びパリティキャッシュメモリー２４４のそれぞれは、メインメモリー２６０からキャッシュライン単位でデータ又はパリティをキャッシングできる。
【００３１】
一実施例によるデータキャッシュメモリー２４２及びパリティキャッシュメモリー２４４のそれぞれは、メインメモリー２６０の一部の領域に対するデータを３２バイト単位（例えば、キャッシュラインのサイズが３２バイトである場合）でキャッシングできる。一実施例によるデータキャッシュメモリー２４２及びパリティキャッシュメモリー２４４のそれぞれは、非揮発性メモリーであり得る。例えば、データキャッシュメモリー２４２及びパリティキャッシュメモリー２４４のそれぞれは、磁気ランダムアクセスメモリー(MRAM:  Magnetic  Random  Access  Memory)又はスタティックランダムアクセスメモリー(SRAM:  Static  RAM)を包含できる。
【００３２】
データキャッシュメモリー２４２及びパリティキャッシュメモリー２４４のそれぞれは、メインメモリー２６０が使用する基準サイズでデータ又はパリティをメインメモリー２６０に出力できる。例えば、ライト動作の場合、データキャッシュメモリー２４２はプロセッサ２２０から受信した現在のデータを貯蔵し、貯蔵された現在のデータを基準サイズに変更してメインメモリー２６０へ出力できる。基準サイズに変更された現在のデータは、データキャッシュメモリー２４２内に貯蔵された他のデータを包含できる。
【００３３】
図２は、キャッシュメモリー２４０をプロセッサ２２０と分離して図示されたが、キャッシュメモリー２４０はプロセッサ２２０に包含されることができる。例えば、キャッシュメモリー２４０はプロセッサ２２０のレベル１（Ｌ１）キャッシュメモリー又はレベル２（Ｌ２）キャッシュメモリーであり得る。
【００３４】
先ず、一実施例により、プロセッサ２２０がキャッシュメモリー２４０を使用してメインメモリー２６０に４バイトサイズの現在のデータをライト(Write)する動作を説明する。
【００３５】
プロセッサ２２０は現在のデータに対するライト動作をメインメモリー２６０に要請できる。一実施例によるプロセッサ２２０は現在のデータをメインメモリー２６０にライトするため、メインメモリー２６０にアクセスする前に、先にキャッシュメモリー２４０にアクセスできる。
【００３６】
現在のデータは、現在のデータのライトが遂行されるアドレスにより指示されるメインメモリー２６０上の領域のデータが、キャッシングされたデータキャッシュメモリー２４２内の空間に貯蔵されることができる。一実施例によるコンピューティング装置２００は、現在のデータのライトが遂行されるアドレスにより指示されるメインメモリー２６０上の領域がデータキャッシュメモリー２４２にキャッシングされているか否かを判定できる。例えば、コンピューティング装置２００は、現在のデータのライトが遂行されるアドレスにより指示されるメインメモリー２６０上の領域のデータがデータキャッシュメモリー２４２にキャッシングされているか否かを判定できる。
【００３７】
データキャッシュメモリー２４２又はパリティキャッシュメモリー２４４に現在のデータ又は現在のパリティのライトが遂行されるアドレスにより指示される領域のデータがキャッシングされている場合、ヒット(Hit)が発生したと言及される。ヒットが発生されると、現在のデータはデータキャッシュメモリー２４２に貯蔵される。データキャッシュメモリー２４２に貯蔵された現在のデータは、以後他のデータと共に３２バイトサイズでメインメモリー２６０に出力できる。一実施例により、現在のデータがデータキャッシュメモリー２４２に貯蔵されて出力される過程が、図３Ａ乃至図３Ｃを参照して詳細に後述される。
【００３８】
データキャッシュメモリー２４２に現在のデータのライトが遂行されるアドレスにより指示される領域のデータが存在しないと、現在のデータはメインメモリー２６０に貯蔵されることができる。但し、一実施例により、メインメモリー２６０上の当該アドレス（即ち、ライトが遂行されるアドレス）に位置したデータは、データキャッシュメモリー２４２内の空いているキャッシュラインに新にキャッシングされることができる。例えば、現在のデータのライトが遂行されるアドレスにより指示されるメインメモリー２６０上の領域のデータがキャッシュライン単位でデータキャッシュメモリー２４２に新にキャッシングされることができる。
【００３９】
データキャッシュメモリー２４２又はパリティキャッシュメモリー２４４に現在のデータ又は現在のパリティのライトが遂行されるアドレスにより指示される領域のデータ又はパリティがキャッシングされていない場合、ミス(miss)が発生したと言及される。例えば、ミスは、データキャッシュメモリー２４２又はパリティキャッシュメモリー２４４が初期化されている場合、ライトが遂行されるアドレスにより指示されるメインメモリー２６０の領域のデータ又はパリティがキャッシングされていない等の場合に発生し得る。
【００４０】
一実施例により、プロセッサ２２０がキャッシュメモリー２４０を用いてメインメモリー２６０に対して４バイトサイズの現在のデータについてのリード(Read)作動を遂行する作動を説明する。
【００４１】
プロセッサ２２０はメインメモリーに対し現在のデータについてのリード作動を要請できる。
【００４２】
リードの作動の場合にも、プロセッサ２２０はメインメモリー２６０にアクセスする前に、先にキャッシュメモリー２４０にアクセスできる。リードの要請された現在のデータがデータキャッシュメモリー２４２に存在すると、コンピューティング装置２００はデータがデータキャッシュメモリー２４２からリードがの要請された現在のデータをリードできる。リードの要請された現在のデータがメインメモリー２６０ではないキャッシュメモリーから出力されたので、コンピューティング装置２００はパリティ情報をリードする必要がない。データキャッシュメモリーにヒットが発生した場合に、リードの作動時に必要な帯域幅は４バイトである。
【００４３】
若しキャッシュメモリー２４０にリードの要請された現在のデータが存在しなければ、プロセッサ２２０はデータをリードするためメインメモリー２６０にアクセスできる。リードするデータに対するパリティ情報をリードするため、メインメモリー２６０にアクセスする前に、先にパリティキャッシュメモリー２４４にアクセスできる。要請されたパリティがパリティキャッシュメモリー２４４に存在すれば、パリティ情報をメインメモリー２６０からリードする必要がない。即ち、データキャッシュメモリー２４２においてミスが発生した場合でも、パリティキャッシュメモリー２４４でヒットが発生すれば、３２バイトデータのリードと２バイトパリティのリードが遂行されるので、４バイトの現在のデータに対するリードの作動時に必要な帯域幅は３４バイトとなる。
【００４４】
図３Ａは一実施例により現在のデータを受信する前のキャッシュメモリーを示す。
【００４５】
図３Ａを参照して詳細に説明すれば、図３Ａのデータキャッシュメモリー２４２は現在のデータを受信する前の状態を示す。一実施例によるデータキャッシュメモリー２４２は８Ｋバイトのサイズであり得る。一実施例によるデータキャッシュメモリー２４２は、メインメモリー２６０のどの領域のデータをキャッシングしているかを示すタグ情報３２０と、データをキャッシング又は貯蔵するための空間である複数のキャッシュライン（例えば、キャッシュライン＃０（３４１）からキャッシュライン＃２５０（３４５））を包含できる。複数のキャッシュラインのそれぞれは３２バイトのサイズであり得る。即ち、各キャッシュラインはメインメモリー２６０からデータ又はパリティを外部と送信又は受信するため使用する基準サイズと同一のサイズであり得る。タグ情報３２０は各キャッシュラインに対応されるように管理されることができる。例えば、タグ情報３２２はキャッシュライン＃１（３４２）がメインメモリー２６０のどの領域のデータをキャッシングしているかを示す情報である。
【００４６】
一実施例によるデータキャッシュメモリー２４２の各キャッシュラインは、メインメモリー２６０の一領域のデータをキャッシングすることができる。図３Ａで「アロケート（割当）」として表示されたキャッシュライン（例えば、キャッシュライン＃０（３４１））はキャッシングされたデータが存在するキャッシュラインであり、「エンプティ（空いている）」として表示されたキャッシュライン（例えば、キャッシュライン＃２（３４３）、キャッシュライン＃２４９（３４４））は空いているキャッシュラインである。
【００４７】
キャッシュライン＃１（３４２）はメインメモリー２６０のタグ情報３２０により指示されるメインメモリー２６０の領域３２２を包含してキャッシングしている空間であり得る。キャッシュライン＃１（３４２）には「EFGH・・・OPQR」のデータがキャッシングされている。キャッシュライン＃１（３４２）がキャッシングしているメインメモリー260の領域は、現在のデータのライト動作が遂行されるアドレスにより指示されるメインメモリー２６０上の領域を包含する空間であると仮定される。
【００４８】
図３Ｂは、一実施例により受信された現在のデータを貯蔵した状態のキャッシュメモリーを示す。図３Ｂのデータキャッシュメモリー２４２は図３Ａのデータキャッシュメモリー２４２が受信された現在のデータを貯蔵した直後の状態を示す。
【００４９】
プロセッサ２２０は、ライトが遂行される４バイトの現在のデータの「ABCD」と共に現在のデータがライトされるアドレス情報をデータキャッシュメモリー２４２に伝達できる。現在のデータの「ABCD」は、現在のデータがライトされるアドレスにより指示されるメインメモリー２６０上の領域のデータがキャッシングされた空間に貯蔵され得る。
【００５０】
データキャッシュメモリー２４２はタグ情報３２０を使用して、ライトが遂行されるアドレスにより指示されるメインメモリー２６０の領域のデータがキャッシングされているか否かを判定できる。一実施例により、ライトが遂行されるメインメモリー２６０上のアドレスのデータが、データキャッシュメモリー２４２内のキャッシュライン＃１（３４２）に存在する、と判定されることが可能である。即ち、ライトが遂行されるアドレスにより指示されるメインメモリー２６０上の領域がキャッシュライン＃１（３４２）にキャッシングされているので、ヒットが発生した、と判定されることが可能である。
【００５１】
キャッシュライン＃１（３４２）に現在のデータの「ABCD」が貯蔵されることができる。一実施例により、キャッシュライン＃１（３４２）に貯蔵された３２バイトデータ中でライトが遂行されるアドレスに該当する位置に貯蔵されていた既存データの「EFGH」は「ABCD」に交替されることができる。ライトが遂行される４バイトの現在のデータの「ABCD」はメインメモリー２６０に伝達される前に、データキャッシュメモリー２４２に一時的に貯蔵されることができる。
【００５２】
図３Ｃは、一実施例により、現在のデータを含む基準サイズのデータが出力されるキャッシュメモリーを示す。
【００５３】
データキャッシュメモリー２４２の貯蔵された現在のデータの「ABCD」は、メインメモリー２６０で使用する基準サイズ（例えば、３２バイト）のデータに変更され得る。基準サイズに変更された現在のデータは、現在のデータの「ABCD」及びデータキャッシュメモリー２４２に貯蔵された他のデータ（例えば、「OPQR」）を包含できる。基準サイズに変更された現在のデータはメインメモリー２６０に伝達できる。即ち、４バイトの現在のデータの「ABCD」は、データキャッシュメモリー２４２から他のデータと共に３２バイトサイズとして出力されることができる。一実施例による他のデータは、現在のデータがデータキャッシュメモリー２４２貯蔵される以前にデータキャッシュメモリー２４２に入力され貯蔵されていたものであってもよいし、現在のデータがデータキャッシュメモリー２４２に貯蔵された以後、データキャッシュメモリー２４２に入力されて貯蔵されたデータであってもよい。
【００５４】
一実施例によるデータキャッシュメモリー２４２は、もうこれ以上貯蔵空間がない時、キャッシュラインをメインメモリー２６０に出力できる。例えば、現在のデータがデータキャッシュメモリー２４２に入力された以後、他のデータが入力されたり、メインメモリー２６０からデータがキャッシングされてキャッシュライン＃２（３４３）及びキャッシュライン＃２４９（３４４）の状態が「エンプティ（空いている）」から「アロケート（割当）」に変更されたりすることができる。
【００５５】
一実施例によるデータキャッシュメモリー２４２は、クリーン(Clean)又はフラッシュ(Flush)動作が遂行される時に、キャッシュライン＃１（３４２）のデータをメインメモリー２６０に出力できる。データキャッシュメモリー２４２から出力されたキャッシュライン＃１（３４２）のデータは、メインメモリー２６０のデータ領域２６２に貯蔵されることができる。即ち、現在のデータがキャッシュメモリー２４０に一時的に貯蔵され、その後、他のデータと共に３２バイトのサイズに出力され得る。出力された３２バイトのデータは、メモリーバスの３２バイトの帯域幅を全て活用してメインメモリー２６０に伝達されることができるので、帯域幅の側面から効率的である。
【００５６】
一実施例により、データキャッシュメモリー２４２からキャッシュライン＃１（３４２）のデータが出力されると、出力された３２バイトに対する２バイトのパリティが生成されることができる。生成された２バイトパリティも、やはりメインメモリーに２６０に伝達される前にパリティキャッシュメモリー２４４に、先に伝達されることができる。
【００５７】
パリティキャッシュメモリー２４４を使用してパリティをメインメモリー２６０にライトするための方法は、前述したデータキャッシュメモリー２４２を使用してデータをメインメモリー２６０にライトするための方法と同一であるので、詳細な説明は省略する。一実施例によるパリティキャッシュメモリー２４４も、やはり８Ｋバイト(Byte)のサイズであり得り、パリティキャッシュメモリー２４４はパリティ情報を貯蔵するための複数のキャッシュラインを包含でき、各キャッシュラインは３２バイトのサイズであり得る。即ち、パリティキャッシュメモリー２４４は、メインメモリー２６０において使用する基準サイズ（例えば、３２バイト）と同じサイズに現在のパリティを変更してメインメモリー２６０に出力できる。
【００５８】
図３Ｃに示す例では、データキャッシュメモリー２４２がフラッシュの動作時に、基準サイズのデータが出力されるように説明されたが、現在のデータを含むキャッシュライン＃１（３４２）がメインメモリー２６０に出力されるのは、必ずしもデータキャッシュメモリー２４２のフィルアップ（Fill-up）の場合だけに限定されない。例えば、キャッシュライン＃１（３４２）でヒットが発生され、現在のデータが入力されてキャッシュライン＃１（３４２）がフィルアップ（Fill-up）されると、データキャッシュメモリー３４２に一部の空いている空間が存在しても、キャッシュライン＃１（３４２）がメインメモリー２６０に出力されることができる。又は、キャッシュライン＃１（３４２）でヒットが発生され、現在のデータが入力された後、次の反復（Iteration）に他のデータがキャッシュライン＃１（３４２）に入力されたことによりキャッシュライン＃１（３４２）がフィルアップされると、データキャッシュメモリー３４２に一部の空いている空間が存在しても、キャッシュライン＃１（３４２）がメインメモリー２６０に出力されることができる
【００５９】
なお、一実施例により、データキャッシュメモリー３４２に現在のデータが貯蔵されると同時に、データキャッシュメモリー３４２は現在のデータのフォーマットだけを変更してメインメモリー２６０に変更されたフォーマットの現在のデータを出力することもできる。なお、データキャッシュメモリー２４２とパリティキャッシュメモリー２４４は相異なるサイズの貯蔵空間を有することが可能であり、キャッシュラインの個数とサイズも多様に設計可能である。
【００６０】
図３Ｄは、一実施例により、要請されたリードのデータを出力するキャッシュメモリーを示す。
【００６１】
一実施例によるデータキャッシュメモリー２４２はプロセッサ２２０から４バイトサイズのリードデータ「ABCD」を受信できる。リードデータ「ABCD」がデータキャッシュメモリー２４２に存在すれば、４バイトサイズのデータ「ABCD」がキャッシュメモリー２４２から出力されることができる。例えば、データのリードが遂行されるアドレスにより指示されるメインメモリー上の領域のデータがデータキャッシュメモリー２４２のキャッシュライン３４２にキャッシングされていると、要請されたリードデータはキャッシュライン３４２から出力されることができる。
【００６２】
図４は、一実施例によるコンピューティング装置の具体的な実施例を示す。図４のコンピューティング装置４００は、図２のコンピューティング装置２００の具体的な実施例を示す。従って、以下の説明で省略された内容であったとしても図２のコンピューティング装置２００に関して記述された内容は、図４のコンピューティング装置４００にも適用されることができる。図４のプロセッサ４２０及びメインメモリー４６０は、それぞれ図２のプロセッサ２２０及びメインメモリー２６０に対応されることができる。図４のデータキャッシュメモリー４４０とパリティキャッシュメモリー４４２は、図２のデータキャッシュメモリー２４２とパリティキャッシュメモリー２４４に対応させることができる。図４は、データキャッシュメモリー４４０とパリティキャッシュメモリー４４２を分離して図示しているが、データキャッシュメモリー４４０とパリティキャッシュメモリー４４２は同一のキャッシュレイヤー(layer)上に配置されてもよい。
【００６３】
一実施例によるメインメモリー４６０は、データを貯蔵するための領域４６２とパリティを貯蔵するための領域４６４で構成されることができる。データを貯蔵するための領域４６２にはＤ０からＤｎまでのデータが貯蔵され得る。Ｄ０からＤｎのそれぞれは３２バイトのデータであってもよい。パリティを貯蔵するための領域４６４にはＰ０〜Ｐ１５からＰｎ〜Ｐｎ＋１５までのパリティを貯蔵できる。Ｐ０〜Ｐ１５からＰｎ〜Ｐｎ＋１５のそれぞれは３２バイトのパリティであってもよく、３２バイトのパリティは１６個のパリティ単位を包含でき、各パリティ単位のサイズは２バイトである。
【００６４】
一実施例によるプロセッサ４２０は、データを管理するためのデータキャッシュメモリー４４０と通信できる。例えば、プロセッサ４２０は４バイトの現在のデータのライト動作を遂行するためデータキャッシュメモリー４４０に現在のデータを伝達できる。なお、プロセッサ４２０は、４バイトの現在のデータのリード動作を遂行するためデータキャッシュメモリー４４０から現在のデータを受信できる
【００６５】
一実施例によるデータキャッシュメモリー４４０は、メインメモリー４６０のデータ領域４６２に貯蔵されたデータをキャッシュライン単位でキャッシングできる。データキャッシュメモリー４４０内の複数のキャッシュラインのそれぞれはメインメモリー４６０で使用する基準サイズ（ここでは、３２バイト）と同じサイズを有し得る。データキャッシュメモリー４４０は、メインメモリー４６０上のどの領域のデータをキャッシングしているかを示すタグ情報を有していることができ、各キャッシュライン毎にタグ情報を有していることができる。
【００６６】
ライト動作の場合、データキャッシュメモリー４４０はプロセッサ４２０から受信された４バイトサイズの現在のデータとデータキャッシュメモリー４４０に貯蔵された他のデータを含む３２バイトサイズのデータをＥＣＣエンジン４５０へ出力できる。他のデータは、受信された現在のデータが貯蔵される以前又は以後に、同一のキャッシュラインに貯蔵されたデータであってもよい。一実施例によるデータキャッシュメモリー４４０はクリーン又はフラッシュの動作を遂行する時、現在のデータが含まれたキャッシュラインをＥＣＣエンジン４５０に伝達できる。リード動作の場合、要請されたデータがデータキャッシュメモリー４４０に存在すれば、データキャッシュメモリー４４０は要請された４バイトサイズの現在のデータをプロセッサ４２０に出力できる。
【００６７】
一実施例によるＥＣＣエンジン４５０はパリティを生成したり、受信されたパリティに基づいてデータについてのエラーを検査したりすることができる。ライト動作の場合、ＥＣＣエンジン４５０はデータキャッシュメモリー４４０から受信した３２バイトサイズののデータ（４バイトの現在のデータが含まれていること）に対する２バイトサイズのパリティを生成できる。リード動作の場合、リードの要請された４バイトの現在のデータがデータキャッシュメモリー４４０に存在すれば、要請されたデータはメインメモリー４６０ではないデータキャッシュメモリー４４０から出力されるので、ＥＣＣエンジン４５０はリードの要請された現在のデータに対するエラー検査を遂行しない。しかし、ＥＣＣエンジン４５０は、要請されたデータがメインメモリー４６０から出力される場合（例えば、データキャッシュメモリー４４０でミスが発生した場合）には、リードしたデータに対するエラーを検査するためのパリティ情報を要請できる。ＥＣＣエンジン４５０はパリティキャッシュメモリー４４２に要請されたパリティが存在する場合、２バイトのパリティをパリティキャッシュメモリー４４２からリードできる。しかし、パリティキャッシュメモリー４４２に要請されたパリティが存在しないと（例えば、パリティキャッシュメモリー４４２においてミスが発生した場合）、メインメモリー４６０から３２バイトの帯域幅を使用して要請されたパリティをリードできる。
【００６８】
一実施例によるパリティキャッシュメモリー４４２は、メインメモリー４６０のパリティ領域４６４に貯蔵されたパリティをキャッシュライン単位でキャッシングできる。パリティキャッシュメモリー４４２とデータキャッシュメモリー４４０は、それぞれパリティとデータを管理するという点が異なるだけで作動する方式は同一である。例えば、ライト動作の場合、パリティキャッシュメモリー４４２はＥＣＣエンジン４５０から生成された２バイトサイズのパリティを受信して貯蔵し、貯蔵された２バイトサイズのパリティとパリティキャッシュメモリー４４２に貯蔵された他のパリティを含む３２バイトサイズのパリティをメインメモリー４６０へ出力できる。他のパリティは、現在受信された２バイトパリティが貯蔵される以前又は以後に、同一のキャッシュラインに貯蔵されたパリティであってもよい。一実施例によるパリティキャッシュメモリー４４２は、クリーン又はフラッシュの動作を遂行する時、現在のパリティが含まれたキャッシュラインをメインメモリー４６０へ出力できる。リード動作の場合、ＥＣＣエンジン４５０から要請されたパリティがパリティキャッシュメモリー４４２内に存在すれば、パリティキャッシュメモリー４４２は要請された２バイトのパリティをＥＣＣエンジン４５０に出力できる。
【００６９】
図５は、一実施例によるコンピューティング装置において、現在のデータに対するライト動作を遂行する方法の流れ図を示す。
【００７０】
動作Ｓ５００において、コンピューティング装置は、現在のデータについてのライト動作を要請できる。
【００７１】
動作Ｓ５１０において、コンピューティング装置は、現在のデータのライトが遂行されるアドレスにより指示されるメインメモリーのデータが、データキャッシュメモリーに存在するか(例えば、ヒットが発生したか)否かが判定されることができる。例えば、データキャッシュメモリーのタグ情報を参照して、現在のデータのライトが遂行されるアドレスにより指示されるメインメモリー領域が、データキャッシュメモリーにキャッシングされているか否かが判定されることができる。コンピューティング装置は、タグ情報に基づいて現在のデータが貯蔵されるキャッシュラインを決定できる。現在のデータのアドレスにより指示されるメインメモリー領域のデータがキャッシュメモリーに存在すると、動作Ｓ５４０において、現在のデータがデータキャッシュメモリー内に貯蔵される。現在のデータのアドレスにより指示されるメインメモリー領域のデータがデータキャッシュメモリーに存在しないと、動作Ｓ５２０において現在のデータがメインメモリーにライトされ、動作Ｓ５３０において、現在のデータについてのパリティが生成されて、生成されたパリティがメインメモリーにライトされることができる。
【００７２】
動作Ｓ５２０において、コンピューティング装置は、現在のデータをメインメモリーにライトできる。一実施例により、現在のデータのライトが遂行されるアドレスにより指示されるメインメモリー領域のデータが、データキャッシュメモリー内の空いているキャッシュラインに新たにキャッシングされることができる。
【００７３】
動作Ｓ５３０において、コンピューティング装置は、現在のデータについて生成されたパリティをメインメモリーにライトできる。生成されたパリティがメインメモリーにライトされる場合も、パリティを管理するパリティキャッシュメモリーを使用して遂行されることができる。パリティキャッシュメモリーを使用してパリティをメインメモリーにライトする方法は、図６を参照して詳細に後述する。
【００７４】
動作Ｓ５４０において、コンピューティング装置は、現在のデータをデータキャッシュメモリーに貯蔵できる。コンピューティング装置は、データキャッシュメモリー内の複数のキャッシュラインのうち、タグ情報に基づいて現在のデータが貯蔵されるキャッシュラインを決定して、決定されたキャッシュラインに現在のデータを貯蔵できる。
【００７５】
動作Ｓ５５０において、コンピューティング装置は、データキャッシュメモリーがクリーン又はフラッシュされるか否かを判定する。データキャッシュメモリーが、まだクリーン又はフラッシュ動作を遂行する必要がない場合、受信された現在のデータをメインメモリーに出力しない。データキャッシュメモリーにおいてクリーン又はフラッシュ動作が遂行されると、動作Ｓ５６０及び動作Ｓ５７０において、現在のデータがメインメモリーに出力されて、パリティが生成されることができる。
【００７６】
動作Ｓ５６０において、コンピューティング装置は、現在のデータを包含するキャッシュラインのデータをメインメモリーにライトする。一実施例により、データキャッシュメモリー内のキャッシュラインのデータが、順次的又は並列的にメインメモリーに出力されることができる。動作Ｓ５６０において、現在のデータが基準サイズに変更されて出力されることができる。メインメモリーに出力される各キャッシュラインのデータサイズは、メインメモリーにおいて使用される基準サイズと同一の３２バイトであるので、帯域幅を最大に活用できる。
【００７７】
動作Ｓ５７０において、コンピューティング装置は、データキャッシュメモリーから出力される基準サイズのデータについてのパリティを生成して、生成されたパリティをメインメモリーにライトする。生成されたパリティがメインメモリーにライトされる方法も、やはりパリティを管理するパリティキャッシュメモリーを使用して遂行されることができる。パリティキャッシュメモリーを使用して、パリティをメインメモリーにライトする方法は、図６を参照して詳細に後述する。
【００７８】
図６は、一実施例によるコンピューティング装置から生成されたパリティについてのライト動作を遂行する方法の流れ図を示す。
【００７９】
動作Ｓ６１０乃至Ｓ６５０は、図５の動作Ｓ５３０又はＳ５７０に関する詳細な流れ図である。但し、図５の動作Ｓ５３０又はＳ５７０は、図６に図示される流れ図によって制限されない。
【００８０】
動作Ｓ６００において、コンピューティング装置は、生成されたパリティについてのライト動作を要請する。
【００８１】
動作Ｓ６１０において、コンピューティング装置は、生成されたパリティのライトが遂行されるアドレスにより指示されるメインメモリー領域のパリティが、パリティキャッシュメモリーに存在するか(例えば、ヒットが発生したか)否かを判定する。例えば、パリティキャッシュメモリーのタグ情報を参照して、ライトが遂行される、生成されたパリティのアドレスにより指示されるメインメモリー領域のパリティが、パリティキャッシュメモリーにキャッシングされているか否かが判定されることができる。生成されたパリティのアドレスにより指示されるメインメモリー領域のデータが、パリティキャッシュメモリーに存在すると、動作Ｓ６２０において生成されたパリティがパリティキャッシュメモリーに貯蔵される。生成されたパリティのアドレスにより指示されるメインメモリー領域のパリティが、パリティキャッシュメモリーに存在しないと、動作Ｓ６５０において生成されたパリティがメインメモリーにライトされる。
【００８２】
動作Ｓ６２０において、コンピューティング装置は、生成されたパリティをパリティキャッシュメモリーに貯蔵する。コンピューティング装置は、パリティキャッシュメモリー内の複数のキャッシュラインのうち、タグ情報に基づいて生成されたパリティが貯蔵されるキャッシュラインを決定して、決定されたキャッシュラインに生成されたパリティを貯蔵できる。
【００８３】
動作Ｓ６３０において、コンピューティング装置は、パリティキャッシュメモリーがフラッシュ又はクリーンされるか否かを判定する。パリティキャッシュメモリーが、まだフラッシュ又はクリーン動作を遂行する必要がない場合、現在受信・生成されたパリティをメインメモリーに出力しない。一実施例によるコンピューティング装置は、パリティキャッシュメモリーにおいてフラッシュ又はクリーン動作が遂行される時、動作Ｓ６４０に進んで生成されたパリティをメインメモリーに出力できる。
【００８４】
動作Ｓ６４０において、コンピューティング装置は、現在のパリティを包含するキャッシュラインのパリティ情報をメインメモリーにライトする。一実施例により、パリティキャッシュメモリー内のキャッシュラインのパリティが、順次的又は並列的にメインメモリーに出力されることができる。動作Ｓ６４０において、生成されたパリティが基準サイズに変更されて出力されることができる。この場合、各キャッシュラインから出力されるパリティのサイズは、メインメモリーにおいて使用する基準サイズと同一の３２バイトであるので、帯域幅を最大に活用できる。
【００８５】
動作Ｓ６５０において、コンピューティング装置は、生成されたパリティをメインメモリーにライトする。一実施例により、生成されたパリティのライトが遂行されるアドレスにより指示されるメインメモリー領域のパリティが、パリティキャッシュメモリー内の空いているキャッシュラインに新たにキャッシングされることができる。
【００８６】
図７は、一実施例によるコンピューティング装置においてリード動作を遂行する方法の流れ図を示す。
【００８７】
動作Ｓ７００において、コンピューティング装置は、リードデータについてのリード動作を要請する。
【００８８】
動作Ｓ７１０において、コンピューティング装置は、リードデータがデータキャッシュメモリーに存在するか(例えば、ヒットが発生したか)否かを判定する。リードデータが、データキャッシュメモリーに存在すると、動作Ｓ７２０において、リードデータがデータキャッシュメモリーから出力されることができる。データキャッシュメモリーから出力されるデータサイズは４バイトである。リードデータが、メインメモリーではないデータキャッシュメモリーから出力されたので、リードデータを検査するためのパリティ情報は必要ではない。リードデータが、データキャッシュメモリーに存在しない場合、コンピューティング装置は、動作Ｓ７３０においてメインメモリーにアクセスできる。
【００８９】
動作Ｓ７３０において、コンピューティング装置は、メインメモリーにアクセスしてリードデータをリードできる。メインメモリーから要請されたデータを出力するために３２バイトの帯域幅が必要である。なお、コンピューティング装置は、リードしたデータのエラーを検査するためのパリティのリードを、メインメモリーに要請できる。
【００９０】
動作Ｓ７４０において、コンピューティング装置は、要請されたパリティがパリティキャッシュメモリーに存在するか(例えば、ヒットが発生したか)否かを判定する。要請されたパリティが、パリティキャッシュメモリーに存在すると、動作Ｓ７５０において、要請されたパリティがパリティキャッシュメモリーから出力されることができる。パリティキャッシュメモリーから出力されるパリティのサイズは２バイトである。要請されたパリティが、パリティキャッシュメモリーに存在しないと、コンピューティング装置は、動作Ｓ７６０においてメインメモリーにアクセスできる。
【００９１】
動作Ｓ７６０において、コンピューティング装置は、要請されたパリティをメインメモリーから出力する。メインメモリーからパリティを出力するために、３２バイトの帯域幅が必要である。
【００９２】
図８は、一実施例によるコンピューティング装置を包含する電子システムの例示的な構成を示すブロック図である。
【００９３】
電子システム１０００は、メインプロセッサ１１０１、ワーキングメモリー１２００、ストレージ装置１３００、通信ブロック１４００、ユーザーインターフェース１５００、及びバス１６００を包含できる。例として、電子システム１０００は、デスクトップ(Desktop)コンピュータ、ラップトップ(Laptop)コンピュータ、タブレット(Tablet)コンピュータ、スマートフォン、ウェアラブル(Wearable)装置、ビデオゲーム機(Video  Game  Console)、ワークステーション(Workstation)、サーバ(Server)、電気自動車などのような電子装置のうち、一つであり得る。一実施例による電子システム１０００は、図２乃至図４を参照して前述したコンピューティング装置のうち、いずれかを包含できる。例えば、電子システム１０００は、図２のコンピューティング装置２００を包含できるが、これに制限されない。
【００９４】
メインプロセッサ１１０１は、電子システム１０００の全般的な動作を制御できる。メインプロセッサ１１０１は、多様な種類の算術演算及び／又は論理演算を処理できる。このため、メインプロセッサ１１０１は、専用(Special-purpose)  回路(例えば、FPGA(Field  Programmable  Gate  Array)、ASICs(Application  Specific  Integrated  Circuits)  など)を包含できる。例として、メインプロセッサ１１０１は、一つ以上のプロセッサコアを包含でき、汎用プロセッサ、専用プロセッサ、又はアプリケーションプロセッサ(Application  Processor)で具現されることができる。
【００９５】
ワーキングメモリー１２００は、電子システム１０００の動作に利用されるデータを貯蔵できる。例として、ワーキングメモリー１２００は、メインプロセッサ１１０１により処理された又は処理されるデータを一時的に貯蔵できる。例として、ワーキングメモリー１２００は、DRAM(Dynamic  RAM)、SDRAM(Synchronous  DRAM)などのような揮発性メモリー、及び／又はPRAM(Phase-change  RAM)、MRAM(Magneto-resistive  RAM)、ReRAM(Resistive  RAM)、FRAM(Ferro-electric  RAM)などのような不揮発性メモリーを包含できる。
【００９６】
一実施例によるワーキングメモリー１２００は、データ保護のために図２のメインメモリー２６０で具現されることができる。例えば、ワーキングメモリー１２００は、データとデータのエラーを検査するためのパリティ情報が、一つのメモリーに貯蔵されるインバンドメモリー(In-band  memory)であり得る。ワーキングメモリー１２００は、データ及びパリティを基準サイズで外部と送信及び受信できる。例えば、ワーキングメモリー１２００は、３２バイト単位でのみデータ及びパリティをバス１６００に送信するしたり、バス１６００から受信したりすることができる。
【００９７】
ストレージ装置１３００は、少なくとも一つのメモリー装置及びコントローラを包含できる。ストレージ装置１３００のメモリー装置は、電力供給に関係なしにデータを貯蔵できる。例として、ストレージ装置１３００は、フラッシュメモリー、PRAM、MRAM、ReRAM、FRAMなどのような不揮発性メモリーを包含できる。例として、ストレージ装置１３００は、SSD(Solid  State  Drive)、カードストレージ、エンベデッド(Embedded)ストレージなどのようなストレージ媒体を包含できる。
【００９８】
通信ブロック１４００は、電子システム１０００の外部装置／システムと通信できる。例として、通信ブロック１４００は、LTE(Long  Term  Evolution)、WIMAX(Worldwide  Interoperability  for  Microwave  Acess)、GSM(登録商標（Global  System  for  Mobile  communications）)、CDMA(Code  Division  Multiple  Access)、Bluetooth（登録商標）、NFC(Near  Field  Communication),  Wi-Fi(Wireless  Fidelity)、RFID(Radio  Frequency  Identification)  などのような多様な無線通信規約のうち、少なくとも一つ、及び／又はTCP/IP(Transfer  Control  Protocol/Internet  Protocol)、USB(Universal  Serial  Bus)、Firewireなどのような多様な有線通信規約のうち、少なくとも一つを支援できる。
【００９９】
ユーザーインターフェース１５００は、ユーザーと電子システム１０００との間の通信を仲裁できる。例として、ユーザーインターフェース１５００は、キーボード、マウス、キーパッド、ボタン、タッチパネル、タッチスクリーン、タッチパッド、タッチボール、カメラ、マイク、ジャイロスコープセンサ、振動センサなどのような入力インターフェースを包含できる。例として、ユーザーインターフェース１５００は、LCD(Liquid  Crystal  Display)装置、LED(Light  Emitting  Diode)表示装置、OLED(Organic  LED)表示装置、AMOLED(Active  Matrix  OLED)表示装置、スピーカー、モータなどのような出力インターフェースを包含できる。
【０１００】
バス１６００は、電子システム１０００の構成要素の間で通信経路を提供できる。電子システム１０００の構成要素は、バス１６００のバスフォーマットに基づいて互いにデータを交換できる。例として、バスフォーマットは、USB、SCSI(Small  Computer  System  Interface)、PCIe(Peripheral  Component  Interconnect  Express)、M-PCIe(Mobile  PCIe)、ATA(Advanced  Technology  Attachment)、PATA(Parallel  ATA)、SATA(Serial  ATA)、SAS(Serial  Attached  SCSI)、IDE(Integrated  Drive  Electronics),  EIDE(Enhanced  IDE)、NVMe(Nonvolatile  Memory  Express)、UFS(Universal  Flash  Storage)などのような多様なインターフェース規約のうち、一つ以上を包含できる。
【０１０１】
メインプロセッサ１１０１は、ワーキングメモリー１２００にデータをライトしたり、ワーキングメモリー１２００からデータをリードしたりすることができる。図２乃至図７を参照して上述したように、メインプロセッサ１１０１は、ライト及びリード動作時にキャッシュメモリー１１５０を使用できる。一実施例によるキャッシュメモリー１１５０は、ワーキングメモリー１２００において使用する基準サイズでデータを出力するデータキャッシュメモリーを包含できる。一実施例によるキャッシュメモリー１１５０は、ワーキングメモリー１２００において使用する基準サイズでパリティを出力する、パリティキャッシュメモリーを包含できる。従って、メインプロセッサ１１０１が、ワーキングメモリー１２００において使用する基準サイズよりサイズが小さいデータについてのライト動作を遂行する場合にも、メモリー帯域幅を最大限に活用してデータ又はパリティを入力できるので、帯域幅の浪費を最大限に防止できる。キャッシュメモリー１１５０は、メインプロセッサ１１０１に包含されるものと図示したが、一実施例により、バス１６００とワーキングメモリー１２００との間に位置することもできる。
【０１０２】
一方、前述した方法は、コンピュータにおいてリードできる記録媒体に、コンピュータがリードできるコードとして具現するのが可能である。コンピュータがリードできる記録媒体は、コンピュータシステムによりリードされることができるデータが貯蔵される全ての種類の記録装置を包含する。コンピュータがリードできる記録媒体の例としては、ROM、RAM、CD-ROM、磁気テープ、フロッピーディスク、光データ貯蔵装置などがあり、またインターネットを通じる伝送などの形態で具現されるのも包含する。なお、コンピュータがリードできる記録媒体は、ネットワークで連結されたコンピュータシステムに分散されて、分散方式でプロセッサがリードできるコードが貯蔵されて、実行されることができる。
【０１０３】
前記の説明は、本発明を具現するための例示的な構成及び動作を提供するように意図される。本発明の技術思想は、前に説明された実施例だけでなく、前の実施例を単純に変更したり、修正したりして得られる具現も包含するはずである。なお、本発明の技術思想は、前に説明された実施例を、今後容易に変更したり修正したりして達成されることができる具現も包含するはずである。
【産業上の利用可能性】
【０１０４】
本発明は、帯域幅を効果的に使用してコンピューティング装置におけるインバンドメモリーアクセスによるデータ保護に有用である。
【符号の説明】
【０１０５】
１００、２００、４００：コンピューティング装置
１２０、２２０、４２０：プロセッサ
１６０、２６０、４６０：メインメモリー
１６２、２６２：データ領域
１６４、２６４、４６４：パリティ領域
２４０，１１５０：キャッシュメモリー
２４２、３４２、４４０：データキャッシュメモリー
２４４、４４２：パリティキャッシュメモリー
３２０、３２２：タグ情報
４５０：    ＥＣＣエンジン
４６２：    データを貯蔵するための領域
４６４：    パリティを貯蔵するための領域
１０００：  電子システム
１１０１：  メインプロペッサ
１２００：  ワーキングメモリー
１３００：  ストレージ装置
１４００：  通信ブロック
１５００：  ユーザーインターフェース
１６００：  バス
【図１】
2019083005.tif 000003
【図２】
2019083005.tif 000004
【図３Ａ】
2019083005.tif 000005
【図３Ｂ】
2019083005.tif 000006
【図３Ｃ】
2019083005.tif 000007
【図３Ｄ】
2019083005.tif 000008
【図４】
2019083005.tif 000009
【図５】
2019083005.tif 000010
【図６】
2019083005.tif 000011
【図７】
2019083005.tif 000012
【図８】
2019083005.tif 000013