JP2019083005A - コンピューティング装置、プロセッサ、及び動作方法 - Google Patents

コンピューティング装置、プロセッサ、及び動作方法 Download PDF

Info

Publication number
JP2019083005A
JP2019083005A JP2018194291A JP2018194291A JP2019083005A JP 2019083005 A JP2019083005 A JP 2019083005A JP 2018194291 A JP2018194291 A JP 2018194291A JP 2018194291 A JP2018194291 A JP 2018194291A JP 2019083005 A JP2019083005 A JP 2019083005A
Authority
JP
Japan
Prior art keywords
data
parity
memory
cache memory
main memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018194291A
Other languages
English (en)
Other versions
JP7430482B2 (ja
Inventor
炯佑 崔
Hyungwoo Choi
炯佑 崔
炯俊 朴
Hyung-Jun Park
炯俊 朴
珍雄 李
Jinwoong Lee
珍雄 李
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2019083005A publication Critical patent/JP2019083005A/ja
Application granted granted Critical
Publication of JP7430482B2 publication Critical patent/JP7430482B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1064Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/403Error protection encoding, e.g. using parity or ECC codes
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

【課題】プロセッサが、データ保護を使用するインバンドメモリーにアクセスする時、キャッシュメモリーを使用してメモリー帯域幅を最大限に活用するための装置及び方法を提供する。【解決手段】コンピューティング装置200は、データ及び前記データのエラーを検査するためのパリティを貯蔵し、データ及びパリティを基準サイズで送信及び受信するためのメインメモリー、メインメモリーにアクセスするためのプロセッサ及びデータをキャッシングするための第1キャッシュメモリーを包含する。プロセッサが現在のデータについてのライト作動を要請する場合、現在のデータは、第1キャッシュメモリーに貯蔵される。第1キャッシュメモリーは、貯蔵された現在のデータを基準サイズに変更してメインメモリーに出力する。現在のデータは、基準サイズより小さいサイズである。【選択図】図2

Description

メモリーにアクセスするためのコンピューティング装置及び方法に関し、具体的にはデータ保護を使用するインバンド(In-Band)メモリーにアクセスするためのコンピューティング装置及び方法に関する。
コンピューティング装置は、データ処理のためメモリーにアクセスすることができる。コンピューティング装置はメモリーにデータをライト(write)したり、メモリーからデータをリード(read)したりする時、エラー(error)を検査するためパリティ(parity)情報を使用できる。パリティ情報はデータから発生できる。例えば、コンピューティング装置は、32バイトのデータ毎に2バイトのパリティ情報を使用してデータをライト/リードする時、発生するデータのエラーを確認し、場合によってはエラーが発生したデータを直接に修正することもできる。
コンピューティング装置がメモリーにアクセスする時、発生される帯域幅の増加はコンピューティング装置の消耗電力を増加させることができる。従って、コンピューティング装置がメモリーにアクセスする時、帯域幅を効率的に使用する必要がある。
実施例が達成しようとする技術的課題は、プロセッサが、データ保護を使用するインバンドメモリーにアクセスする時、キャッシュメモリーを使用してメモリー帯域幅を最大限に活用するための装置及び方法が提供することである。
本願で説明される実施例は、前記されたような技術的課題に限定されず、別の技術的課題を達成するために使用されてもよい。
コンピューティング装置は、データ及び前記データのエラーを検査するためのパリティを貯蔵し、前記データ及び前記パリティを基準サイズで送信及び受信するためのメインメモリー(main memory)、前記メインメモリーにアクセスするためのプロセッサ、及びデータをキャッシングするための第1キャッシュメモリーを包含し、前記プロセッサが現在のデータについてのライト作動を要請する場合、前記現在のデータは前記第1キャッシュメモリーに貯蔵され、前記第1キャッシュメモリーは前記貯蔵された現在のデータを前記基準サイズに変更して前記メインメモリーに出力し、前記現在のデータは前記基準サイズより小さいサイズであり得る。
キャッシュメモリーを包含するプロセッサにおいて、前記キャッシュメモリーはデータをキャッシングするための第1キャッシュメモリーと前記データのエラーを検査するためのパリティをキャッシングするための第2キャッシュメモリーとを包含し、前記第1キャッシュメモリーは基準サイズのデータをメインメモリーに出力するように構成され、前記第2キャッシュメモリーは前記基準サイズのパリティを前記メインメモリーに出力するように構成され、前記基準サイズは前記データ及び前記パリティを前記メインメモリーから送信及び受信するためのサイズと同一である。
メインメモリーに現在のデータをライト(write)するためにコンピューティング装置により遂行される方法において、前記現在のデータのライトが遂行される第1アドレスにより指示される前記メインメモリー領域のデータが第1キャッシュメモリーにキャッシングされているか否かを判定する動作を含み、前記第1アドレスにより指示される前記メインメモリー領域のデータが前記第1キャッシュメモリーにキャッシングされている場合において、前記方法は、前記第1キャッシュメモリーに前記現在のデータを貯蔵する動作と、前記現在のデータを基準サイズに変更して、前記第1キャッシュメモリーから前記メインメモリーに出力する動作とを包含し、前記現在のデータは前記基準サイズより小さいサイズであり、前記基準サイズは前記データ及びパリティを前記メインメモリーから送信及び受信するためのサイズと同一である。
単位サイズより小さいサイズのデータに対するライト作動が遂行される場合、キャッシュメモリーを用いてインバンドメモリーのバス帯域幅が最大に活用されることができる。帯域幅の浪費が防止されることによって、帯域幅の効率性が向上されることができる。
図1は、一実施例によるコンピューティング装置のブロック図を示す。 図2は、一実施例によるコンピューティング装置のブロック図を示す。 図3Aは、一実施例により現在のデータを受信する前のキャッシュメモリー示す。 図3Bは、一実施例により受信された現在のデータを貯蔵した直後のキャッシュメモリーを示す。 図3Cは、一実施例により現在のデータを包含する基準サイズのデータを出力するキャッシュメモリーを示す。 図3Dは、一実施例により要請されたリード(read)データを出力するキャッシュメモリー示す。 図4は、一実施例によるコンピューティング装置の具体的な実施例を示す。 図5は、一実施例によるコンピューティング装置において現在のデータについてのライト作動を遂行する方法の流れ図を示す。 図は、一実施例によるコンピューティング装置から生成されたパリティについてのライト作動を遂行する方法の流れ図を示す。 図7は、一実施例によるコンピューティング装置においてリード作動を遂行する方法の流れ図を示す。 図8は、一実施例による電子システムの例示的な構成を示すブロック図である。
以下において、本発明の属する技術分野における通常の知識を有する者(以下、通常の技術者)が本発明を容易に実施できるように、添付される図面を参照していくつかの実施例が明確且つ詳細に説明されるであろう。
図1は、一実施例によるコンピューティング装置のブロック図を示す。
コンピューティング装置100は、プロセッサ120及びメインメモリー160を包含できる。一実施例によるコンピューティング装置100は、コンピュータやモバイル装置であり得る。コンピューティング装置100は、データをメインメモリー160に貯蔵又は記録したり、メインメモリー160からデータをリード(read)したりすることができる。
コンピューティング装置100は、データのエラーを検査するためのパリティ情報を使用できる。一実施例によるコンピューティング装置100は、特定のサイズのデータ毎に特定のサイズのパリティ情報を生成できる。例えば、コンピューティング装置100は、32バイトのデータ毎に2バイトのパリティ情報を使用できる。例えば、コンピューティング装置100は、1バイトのデータ毎に1ビットのパリティ情報を使用できる。以下、説明の便宜のため、コンピューティング装置100はデータ保護のため32バイトのデータ毎に2バイトのパリティ情報を使用することと仮定する。
プロセッサ120はメインメモリー160にアクセスできる。プロセッサ120はコンピューティング装置100の諸般の作動を制御し、論理演算を遂行できる。一実施例によるプロセッサ120は、システムオンチップ(SoC: System-on-Chip)で構成されることができる。一実施例によるプロセッサ120はASIC(Application Specific Integrated Circuit)、エンベデッドプロセッサ、マイクロプロセッサ、ハードウェア制御ロジック、ハードウェア有限状態機械(FSM)、デジタル信号プロセッサ(DSP)又はこれらの組み合せであり得る。
メインメモリー160は、データ及びパリティ情報を貯蔵できる。メインメモリー160はコンピューティング装置100の作動メモリーに使用されることができる。メインメモリー160は、ダイナミックランダムアクセスメモリー(DRAM: Dynamic Random Access Memory)のような揮発性メモリー、又は磁気抵抗ランダムアクセスメモリー(MRAM: Magneto-resistive RAM)、相変化ランダムアクセスメモリー(PRAM: Phase-change RAM)、抵抗変化ランダムアクセスメモリー(RRAM(登録商標): Resistive RAM)、強誘電体ランダムアクセスメモリー(FRAM(登録商標): Ferroelectric RAM)などのような非揮発性メモリーを包含できる。但し、メインメモリー160はデータを貯蔵するための如何なる種類のメモリー装置も包含することが可能であり、これらに制限されない。
メインメモリー160は、データとデータのエラーを検査するためのパリティを貯蔵できる。メインメモリー160は、データが貯蔵されるデータ領域162とパリティが貯蔵されるパリティ領域164を包含できる。一実施例によるメインメモリー160は、データ及びパリティを送信又は受信するため同じメモリーバスを使用できる。例えば、メインメモリー160はデータ及びパリティを1つのチャンネルを介して外部と送信及び受信できる。
メインメモリー160は、データとパリティを外部と送信又は受信する時、特定のフォーマットを使用できる。例えば、メインメモリー160に入力されたり、メインメモリーから出力されたりするデータ及びパリティの基本サイズの単位は32バイト又は64バイトのサイズであり得る。以下、基準サイズはメインメモリー160がデータ及びパリティを送信及び受信するため使用する基本サイズの単位であってもよい。メインメモリー160のように、データとパリティを同じメモリーに貯蔵し、同じバスを使用してデータとパリティを送信及び受信するメモリーはインバンドメモリー(in-band)と称されることができる。
以下、説明の便宜のため、メインメモリー160は32バイトの基準サイズでデータとパリティを外部と送信及び受信することと仮定される。例えば、メインメモリー160は32バイトのメモリー帯域幅を有し得る。
以下の説明において、「現在のデータ」とは、現在のプロセッサ120がライト又はリードするためのデータであり、メインメモリー160において使用する基準サイズである32バイトより小さいサイズのデータ(例えば、4バイト)であってもよい。
コンピューティング装置100はデータのエラーを検査するためのパリティを生成できる。メインメモリー160はデータとパリティを受信し、パリティに基づいて受信されたデータにエラーがあるか否かを検査することができる。コンピューティング装置100はメインメモリー160からデータとパリティをリードした後、パリティに基づいて受信されたデータにエラーがあるか否かを検査することができる。メインメモリー160にライトされるデータについてのパリティを生成したり、メインメモリー160からリードしたデータをパリティに基づいてエラーを検査したりする動作は、ECC(Error Correcting Code)エンジン(図示せず)において遂行されることができる。
一実施例によるプロセッサ120は、メインメモリー160にライトするための32バイトのデータをメインメモリー160に伝達できる。一実施例によるコンピューティング装置100は、32バイトのデータについての2バイトのパリティを生成してメインメモリー160へ伝達できる。メインメモリー160は受信されたデータとパリティに基づいて伝達されたデータにエラーが存在するか否かを検査できる。
一実施例によるプロセッサ120は,メインメモリー160にライトするための4バイトサイズの現在のデータをメインメモリー160に伝達できる。一実施例によるコンピューティング装置100は、ライトの要請を遂行するため必要なメインメモリー160上のアドレス情報に基づいて、当該アドレスに貯蔵されている32バイトのデータと32バイトのデータに対応する2バイトのパリティのそれぞれを32バイトの帯域幅を使用してリードできる。プロセッサ120はメインメモリー160からリードした32バイトのデータを現在のデータに基づいて修正できる。コンピューティング装置100は修正された32バイトのデータに対応する2バイトのパリティを生成し、生成された2バイトのパリティに基づいてリードした2バイトのパリティを修正できる。コンピューティング装置100は、修正された32バイトのデータと修正された2バイトのパリティをそれぞれ32バイトの帯域幅を使用してメインメモリー160にライトできる。一実施例によるコンピューティング装置100は4バイトのデータライト動作のため、32バイトのデータリード、2バイトのパリティリード、修正された32バイトのデータライト、生成された2バイトのパリティライトを遂行するから32バイトの帯域幅を4回使用するようになる。
図2は、一実施例によるコンピューティング装置のブロック図を示す。
以下、プロセッサ220が現在のデータに対するライト又はリードの動作時に、キャッシュメモリーを使用して帯域幅を効率的に使用する実施例が開示される。
図2のコンピューティング装置200は、図1のコンピューティング装置100の具体的な実施例を示す。従って、以下省略された内容であるとしても図1のコンピューティング装置100に関して記述された内容は、図2のコンピューティング装置200にも適用されることができる。図2のプロセッサ220及びメインメモリー260は、それぞれ図1のプロセッサ120及びメインメモリー160に対応されることができる。
コンピューティング装置200はプロセッサ220、キャッシュメモリー240及びメインメモリー260を包含できる。
キャッシュメモリー240はデータ又はパリティをキャッシングできる。一実施例によるキャッシュメモリー240は、データをキャッシングするためのデータキャッシュメモリー242及びパリティをキャッシングするためのパリティキャッシュメモリー244の中で少なくとも1つを包含できる。一実施例によるデータキャッシュメモリー242はメインメモリー260上のデータ領域262に貯蔵されたデータをキャッシングできる。一実施例によるパリティキャッシュメモリー244は、メインメモリー260上のパリティ領域264に貯蔵されたパリティをキャッシングできる
キャッシュメモリー240はプロセッサ220から受信したデータ又はパリティを貯蔵できる。一実施例により、キャッシングとは、メインメモリー260上のデータ又はパリティをキャッシュメモリー240へ複写して移す動作を意味し、貯蔵とは、プロセッサ220から受信された現在のデータをキャッシュメモリー240内のキャッシングされた空間にライトする動作を意味する。
データキャッシュメモリー242及びパリティキャッシュメモリー244のそれぞれは、タグ(tag)情報と複数のキャッシュラインを包含できる。タグ情報は、データがメインメモリー260上でキャッシングされる領域に対する情報を示せる。例えば、タグ情報はメインメモリー上のどの領域のデータがキャッシュメモリーにキャッシングされているかを示せる。複数のキャッシュラインのそれぞれは、データ又はパリティをキャッシング又は貯蔵するための空間である。一実施例によるデータキャッシュメモリー242及びパリティキャッシュメモリー244のそれぞれは、メインメモリー260からキャッシュライン単位でデータ又はパリティをキャッシングできる。
一実施例によるデータキャッシュメモリー242及びパリティキャッシュメモリー244のそれぞれは、メインメモリー260の一部の領域に対するデータを32バイト単位(例えば、キャッシュラインのサイズが32バイトである場合)でキャッシングできる。一実施例によるデータキャッシュメモリー242及びパリティキャッシュメモリー244のそれぞれは、非揮発性メモリーであり得る。例えば、データキャッシュメモリー242及びパリティキャッシュメモリー244のそれぞれは、磁気ランダムアクセスメモリー(MRAM: Magnetic Random Access Memory)又はスタティックランダムアクセスメモリー(SRAM: Static RAM)を包含できる。
データキャッシュメモリー242及びパリティキャッシュメモリー244のそれぞれは、メインメモリー260が使用する基準サイズでデータ又はパリティをメインメモリー260に出力できる。例えば、ライト動作の場合、データキャッシュメモリー242はプロセッサ220から受信した現在のデータを貯蔵し、貯蔵された現在のデータを基準サイズに変更してメインメモリー260へ出力できる。基準サイズに変更された現在のデータは、データキャッシュメモリー242内に貯蔵された他のデータを包含できる。
図2は、キャッシュメモリー240をプロセッサ220と分離して図示されたが、キャッシュメモリー240はプロセッサ220に包含されることができる。例えば、キャッシュメモリー240はプロセッサ220のレベル1(L1)キャッシュメモリー又はレベル2(L2)キャッシュメモリーであり得る。
先ず、一実施例により、プロセッサ220がキャッシュメモリー240を使用してメインメモリー260に4バイトサイズの現在のデータをライト(Write)する動作を説明する。
プロセッサ220は現在のデータに対するライト動作をメインメモリー260に要請できる。一実施例によるプロセッサ220は現在のデータをメインメモリー260にライトするため、メインメモリー260にアクセスする前に、先にキャッシュメモリー240にアクセスできる。
現在のデータは、現在のデータのライトが遂行されるアドレスにより指示されるメインメモリー260上の領域のデータが、キャッシングされたデータキャッシュメモリー242内の空間に貯蔵されることができる。一実施例によるコンピューティング装置200は、現在のデータのライトが遂行されるアドレスにより指示されるメインメモリー260上の領域がデータキャッシュメモリー242にキャッシングされているか否かを判定できる。例えば、コンピューティング装置200は、現在のデータのライトが遂行されるアドレスにより指示されるメインメモリー260上の領域のデータがデータキャッシュメモリー242にキャッシングされているか否かを判定できる。
データキャッシュメモリー242又はパリティキャッシュメモリー244に現在のデータ又は現在のパリティのライトが遂行されるアドレスにより指示される領域のデータがキャッシングされている場合、ヒット(Hit)が発生したと言及される。ヒットが発生されると、現在のデータはデータキャッシュメモリー242に貯蔵される。データキャッシュメモリー242に貯蔵された現在のデータは、以後他のデータと共に32バイトサイズでメインメモリー260に出力できる。一実施例により、現在のデータがデータキャッシュメモリー242に貯蔵されて出力される過程が、図3A乃至図3Cを参照して詳細に後述される。
データキャッシュメモリー242に現在のデータのライトが遂行されるアドレスにより指示される領域のデータが存在しないと、現在のデータはメインメモリー260に貯蔵されることができる。但し、一実施例により、メインメモリー260上の当該アドレス(即ち、ライトが遂行されるアドレス)に位置したデータは、データキャッシュメモリー242内の空いているキャッシュラインに新にキャッシングされることができる。例えば、現在のデータのライトが遂行されるアドレスにより指示されるメインメモリー260上の領域のデータがキャッシュライン単位でデータキャッシュメモリー242に新にキャッシングされることができる。
データキャッシュメモリー242又はパリティキャッシュメモリー244に現在のデータ又は現在のパリティのライトが遂行されるアドレスにより指示される領域のデータ又はパリティがキャッシングされていない場合、ミス(miss)が発生したと言及される。例えば、ミスは、データキャッシュメモリー242又はパリティキャッシュメモリー244が初期化されている場合、ライトが遂行されるアドレスにより指示されるメインメモリー260の領域のデータ又はパリティがキャッシングされていない等の場合に発生し得る。
一実施例により、プロセッサ220がキャッシュメモリー240を用いてメインメモリー260に対して4バイトサイズの現在のデータについてのリード(Read)作動を遂行する作動を説明する。
プロセッサ220はメインメモリーに対し現在のデータについてのリード作動を要請できる。
リードの作動の場合にも、プロセッサ220はメインメモリー260にアクセスする前に、先にキャッシュメモリー240にアクセスできる。リードの要請された現在のデータがデータキャッシュメモリー242に存在すると、コンピューティング装置200はデータがデータキャッシュメモリー242からリードがの要請された現在のデータをリードできる。リードの要請された現在のデータがメインメモリー260ではないキャッシュメモリーから出力されたので、コンピューティング装置200はパリティ情報をリードする必要がない。データキャッシュメモリーにヒットが発生した場合に、リードの作動時に必要な帯域幅は4バイトである。
若しキャッシュメモリー240にリードの要請された現在のデータが存在しなければ、プロセッサ220はデータをリードするためメインメモリー260にアクセスできる。リードするデータに対するパリティ情報をリードするため、メインメモリー260にアクセスする前に、先にパリティキャッシュメモリー244にアクセスできる。要請されたパリティがパリティキャッシュメモリー244に存在すれば、パリティ情報をメインメモリー260からリードする必要がない。即ち、データキャッシュメモリー242においてミスが発生した場合でも、パリティキャッシュメモリー244でヒットが発生すれば、32バイトデータのリードと2バイトパリティのリードが遂行されるので、4バイトの現在のデータに対するリードの作動時に必要な帯域幅は34バイトとなる。
図3Aは一実施例により現在のデータを受信する前のキャッシュメモリーを示す。
図3Aを参照して詳細に説明すれば、図3Aのデータキャッシュメモリー242は現在のデータを受信する前の状態を示す。一実施例によるデータキャッシュメモリー242は8Kバイトのサイズであり得る。一実施例によるデータキャッシュメモリー242は、メインメモリー260のどの領域のデータをキャッシングしているかを示すタグ情報320と、データをキャッシング又は貯蔵するための空間である複数のキャッシュライン(例えば、キャッシュライン#0(341)からキャッシュライン#250(345))を包含できる。複数のキャッシュラインのそれぞれは32バイトのサイズであり得る。即ち、各キャッシュラインはメインメモリー260からデータ又はパリティを外部と送信又は受信するため使用する基準サイズと同一のサイズであり得る。タグ情報320は各キャッシュラインに対応されるように管理されることができる。例えば、タグ情報322はキャッシュライン#1(342)がメインメモリー260のどの領域のデータをキャッシングしているかを示す情報である。
一実施例によるデータキャッシュメモリー242の各キャッシュラインは、メインメモリー260の一領域のデータをキャッシングすることができる。図3Aで「アロケート(割当)」として表示されたキャッシュライン(例えば、キャッシュライン#0(341))はキャッシングされたデータが存在するキャッシュラインであり、「エンプティ(空いている)」として表示されたキャッシュライン(例えば、キャッシュライン#2(343)、キャッシュライン#249(344))は空いているキャッシュラインである。
キャッシュライン#1(342)はメインメモリー260のタグ情報320により指示されるメインメモリー260の領域322を包含してキャッシングしている空間であり得る。キャッシュライン#1(342)には「EFGH・・・OPQR」のデータがキャッシングされている。キャッシュライン#1(342)がキャッシングしているメインメモリー260の領域は、現在のデータのライト動作が遂行されるアドレスにより指示されるメインメモリー260上の領域を包含する空間であると仮定される。
図3Bは、一実施例により受信された現在のデータを貯蔵した状態のキャッシュメモリーを示す。図3Bのデータキャッシュメモリー242は図3Aのデータキャッシュメモリー242が受信された現在のデータを貯蔵した直後の状態を示す。
プロセッサ220は、ライトが遂行される4バイトの現在のデータの「ABCD」と共に現在のデータがライトされるアドレス情報をデータキャッシュメモリー242に伝達できる。現在のデータの「ABCD」は、現在のデータがライトされるアドレスにより指示されるメインメモリー260上の領域のデータがキャッシングされた空間に貯蔵され得る。
データキャッシュメモリー242はタグ情報320を使用して、ライトが遂行されるアドレスにより指示されるメインメモリー260の領域のデータがキャッシングされているか否かを判定できる。一実施例により、ライトが遂行されるメインメモリー260上のアドレスのデータが、データキャッシュメモリー242内のキャッシュライン#1(342)に存在する、と判定されることが可能である。即ち、ライトが遂行されるアドレスにより指示されるメインメモリー260上の領域がキャッシュライン#1(342)にキャッシングされているので、ヒットが発生した、と判定されることが可能である。
キャッシュライン#1(342)に現在のデータの「ABCD」が貯蔵されることができる。一実施例により、キャッシュライン#1(342)に貯蔵された32バイトデータ中でライトが遂行されるアドレスに該当する位置に貯蔵されていた既存データの「EFGH」は「ABCD」に交替されることができる。ライトが遂行される4バイトの現在のデータの「ABCD」はメインメモリー260に伝達される前に、データキャッシュメモリー242に一時的に貯蔵されることができる。
図3Cは、一実施例により、現在のデータを含む基準サイズのデータが出力されるキャッシュメモリーを示す。
データキャッシュメモリー242の貯蔵された現在のデータの「ABCD」は、メインメモリー260で使用する基準サイズ(例えば、32バイト)のデータに変更され得る。基準サイズに変更された現在のデータは、現在のデータの「ABCD」及びデータキャッシュメモリー242に貯蔵された他のデータ(例えば、「OPQR」)を包含できる。基準サイズに変更された現在のデータはメインメモリー260に伝達できる。即ち、4バイトの現在のデータの「ABCD」は、データキャッシュメモリー242から他のデータと共に32バイトサイズとして出力されることができる。一実施例による他のデータは、現在のデータがデータキャッシュメモリー242貯蔵される以前にデータキャッシュメモリー242に入力され貯蔵されていたものであってもよいし、現在のデータがデータキャッシュメモリー242に貯蔵された以後、データキャッシュメモリー242に入力されて貯蔵されたデータであってもよい。
一実施例によるデータキャッシュメモリー242は、もうこれ以上貯蔵空間がない時、キャッシュラインをメインメモリー260に出力できる。例えば、現在のデータがデータキャッシュメモリー242に入力された以後、他のデータが入力されたり、メインメモリー260からデータがキャッシングされてキャッシュライン#2(343)及びキャッシュライン#249(344)の状態が「エンプティ(空いている)」から「アロケート(割当)」に変更されたりすることができる。
一実施例によるデータキャッシュメモリー242は、クリーン(Clean)又はフラッシュ(Flush)動作が遂行される時に、キャッシュライン#1(342)のデータをメインメモリー260に出力できる。データキャッシュメモリー242から出力されたキャッシュライン#1(342)のデータは、メインメモリー260のデータ領域262に貯蔵されることができる。即ち、現在のデータがキャッシュメモリー240に一時的に貯蔵され、その後、他のデータと共に32バイトのサイズに出力され得る。出力された32バイトのデータは、メモリーバスの32バイトの帯域幅を全て活用してメインメモリー260に伝達されることができるので、帯域幅の側面から効率的である。
一実施例により、データキャッシュメモリー242からキャッシュライン#1(342)のデータが出力されると、出力された32バイトに対する2バイトのパリティが生成されることができる。生成された2バイトパリティも、やはりメインメモリーに260に伝達される前にパリティキャッシュメモリー244に、先に伝達されることができる。
パリティキャッシュメモリー244を使用してパリティをメインメモリー260にライトするための方法は、前述したデータキャッシュメモリー242を使用してデータをメインメモリー260にライトするための方法と同一であるので、詳細な説明は省略する。一実施例によるパリティキャッシュメモリー244も、やはり8Kバイト(Byte)のサイズであり得り、パリティキャッシュメモリー244はパリティ情報を貯蔵するための複数のキャッシュラインを包含でき、各キャッシュラインは32バイトのサイズであり得る。即ち、パリティキャッシュメモリー244は、メインメモリー260において使用する基準サイズ(例えば、32バイト)と同じサイズに現在のパリティを変更してメインメモリー260に出力できる。
図3Cに示す例では、データキャッシュメモリー242がフラッシュの動作時に、基準サイズのデータが出力されるように説明されたが、現在のデータを含むキャッシュライン#1(342)がメインメモリー260に出力されるのは、必ずしもデータキャッシュメモリー242のフィルアップ(Fill-up)の場合だけに限定されない。例えば、キャッシュライン#1(342)でヒットが発生され、現在のデータが入力されてキャッシュライン#1(342)がフィルアップ(Fill-up)されると、データキャッシュメモリー342に一部の空いている空間が存在しても、キャッシュライン#1(342)がメインメモリー260に出力されることができる。又は、キャッシュライン#1(342)でヒットが発生され、現在のデータが入力された後、次の反復(Iteration)に他のデータがキャッシュライン#1(342)に入力されたことによりキャッシュライン#1(342)がフィルアップされると、データキャッシュメモリー342に一部の空いている空間が存在しても、キャッシュライン#1(342)がメインメモリー260に出力されることができる
なお、一実施例により、データキャッシュメモリー342に現在のデータが貯蔵されると同時に、データキャッシュメモリー342は現在のデータのフォーマットだけを変更してメインメモリー260に変更されたフォーマットの現在のデータを出力することもできる。なお、データキャッシュメモリー242とパリティキャッシュメモリー244は相異なるサイズの貯蔵空間を有することが可能であり、キャッシュラインの個数とサイズも多様に設計可能である。
図3Dは、一実施例により、要請されたリードのデータを出力するキャッシュメモリーを示す。
一実施例によるデータキャッシュメモリー242はプロセッサ220から4バイトサイズのリードデータ「ABCD」を受信できる。リードデータ「ABCD」がデータキャッシュメモリー242に存在すれば、4バイトサイズのデータ「ABCD」がキャッシュメモリー242から出力されることができる。例えば、データのリードが遂行されるアドレスにより指示されるメインメモリー上の領域のデータがデータキャッシュメモリー242のキャッシュライン342にキャッシングされていると、要請されたリードデータはキャッシュライン342から出力されることができる。
図4は、一実施例によるコンピューティング装置の具体的な実施例を示す。図4のコンピューティング装置400は、図2のコンピューティング装置200の具体的な実施例を示す。従って、以下の説明で省略された内容であったとしても図2のコンピューティング装置200に関して記述された内容は、図4のコンピューティング装置400にも適用されることができる。図4のプロセッサ420及びメインメモリー460は、それぞれ図2のプロセッサ220及びメインメモリー260に対応されることができる。図4のデータキャッシュメモリー440とパリティキャッシュメモリー442は、図2のデータキャッシュメモリー242とパリティキャッシュメモリー244に対応させることができる。図4は、データキャッシュメモリー440とパリティキャッシュメモリー442を分離して図示しているが、データキャッシュメモリー440とパリティキャッシュメモリー442は同一のキャッシュレイヤー(layer)上に配置されてもよい。
一実施例によるメインメモリー460は、データを貯蔵するための領域462とパリティを貯蔵するための領域464で構成されることができる。データを貯蔵するための領域462にはD0からDnまでのデータが貯蔵され得る。D0からDnのそれぞれは32バイトのデータであってもよい。パリティを貯蔵するための領域464にはP0〜P15からPn〜Pn+15までのパリティを貯蔵できる。P0〜P15からPn〜Pn+15のそれぞれは32バイトのパリティであってもよく、32バイトのパリティは16個のパリティ単位を包含でき、各パリティ単位のサイズは2バイトである。
一実施例によるプロセッサ420は、データを管理するためのデータキャッシュメモリー440と通信できる。例えば、プロセッサ420は4バイトの現在のデータのライト動作を遂行するためデータキャッシュメモリー440に現在のデータを伝達できる。なお、プロセッサ420は、4バイトの現在のデータのリード動作を遂行するためデータキャッシュメモリー440から現在のデータを受信できる
一実施例によるデータキャッシュメモリー440は、メインメモリー460のデータ領域462に貯蔵されたデータをキャッシュライン単位でキャッシングできる。データキャッシュメモリー440内の複数のキャッシュラインのそれぞれはメインメモリー460で使用する基準サイズ(ここでは、32バイト)と同じサイズを有し得る。データキャッシュメモリー440は、メインメモリー460上のどの領域のデータをキャッシングしているかを示すタグ情報を有していることができ、各キャッシュライン毎にタグ情報を有していることができる。
ライト動作の場合、データキャッシュメモリー440はプロセッサ420から受信された4バイトサイズの現在のデータとデータキャッシュメモリー440に貯蔵された他のデータを含む32バイトサイズのデータをECCエンジン450へ出力できる。他のデータは、受信された現在のデータが貯蔵される以前又は以後に、同一のキャッシュラインに貯蔵されたデータであってもよい。一実施例によるデータキャッシュメモリー440はクリーン又はフラッシュの動作を遂行する時、現在のデータが含まれたキャッシュラインをECCエンジン450に伝達できる。リード動作の場合、要請されたデータがデータキャッシュメモリー440に存在すれば、データキャッシュメモリー440は要請された4バイトサイズの現在のデータをプロセッサ420に出力できる。
一実施例によるECCエンジン450はパリティを生成したり、受信されたパリティに基づいてデータについてのエラーを検査したりすることができる。ライト動作の場合、ECCエンジン450はデータキャッシュメモリー440から受信した32バイトサイズののデータ(4バイトの現在のデータが含まれていること)に対する2バイトサイズのパリティを生成できる。リード動作の場合、リードの要請された4バイトの現在のデータがデータキャッシュメモリー440に存在すれば、要請されたデータはメインメモリー460ではないデータキャッシュメモリー440から出力されるので、ECCエンジン450はリードの要請された現在のデータに対するエラー検査を遂行しない。しかし、ECCエンジン450は、要請されたデータがメインメモリー460から出力される場合(例えば、データキャッシュメモリー440でミスが発生した場合)には、リードしたデータに対するエラーを検査するためのパリティ情報を要請できる。ECCエンジン450はパリティキャッシュメモリー442に要請されたパリティが存在する場合、2バイトのパリティをパリティキャッシュメモリー442からリードできる。しかし、パリティキャッシュメモリー442に要請されたパリティが存在しないと(例えば、パリティキャッシュメモリー442においてミスが発生した場合)、メインメモリー460から32バイトの帯域幅を使用して要請されたパリティをリードできる。
一実施例によるパリティキャッシュメモリー442は、メインメモリー460のパリティ領域464に貯蔵されたパリティをキャッシュライン単位でキャッシングできる。パリティキャッシュメモリー442とデータキャッシュメモリー440は、それぞれパリティとデータを管理するという点が異なるだけで作動する方式は同一である。例えば、ライト動作の場合、パリティキャッシュメモリー442はECCエンジン450から生成された2バイトサイズのパリティを受信して貯蔵し、貯蔵された2バイトサイズのパリティとパリティキャッシュメモリー442に貯蔵された他のパリティを含む32バイトサイズのパリティをメインメモリー460へ出力できる。他のパリティは、現在受信された2バイトパリティが貯蔵される以前又は以後に、同一のキャッシュラインに貯蔵されたパリティであってもよい。一実施例によるパリティキャッシュメモリー442は、クリーン又はフラッシュの動作を遂行する時、現在のパリティが含まれたキャッシュラインをメインメモリー460へ出力できる。リード動作の場合、ECCエンジン450から要請されたパリティがパリティキャッシュメモリー442内に存在すれば、パリティキャッシュメモリー442は要請された2バイトのパリティをECCエンジン450に出力できる。
図5は、一実施例によるコンピューティング装置において、現在のデータに対するライト動作を遂行する方法の流れ図を示す。
動作S500において、コンピューティング装置は、現在のデータについてのライト動作を要請できる。
動作S510において、コンピューティング装置は、現在のデータのライトが遂行されるアドレスにより指示されるメインメモリーのデータが、データキャッシュメモリーに存在するか(例えば、ヒットが発生したか)否かが判定されることができる。例えば、データキャッシュメモリーのタグ情報を参照して、現在のデータのライトが遂行されるアドレスにより指示されるメインメモリー領域が、データキャッシュメモリーにキャッシングされているか否かが判定されることができる。コンピューティング装置は、タグ情報に基づいて現在のデータが貯蔵されるキャッシュラインを決定できる。現在のデータのアドレスにより指示されるメインメモリー領域のデータがキャッシュメモリーに存在すると、動作S540において、現在のデータがデータキャッシュメモリー内に貯蔵される。現在のデータのアドレスにより指示されるメインメモリー領域のデータがデータキャッシュメモリーに存在しないと、動作S520において現在のデータがメインメモリーにライトされ、動作S530において、現在のデータについてのパリティが生成されて、生成されたパリティがメインメモリーにライトされることができる。
動作S520において、コンピューティング装置は、現在のデータをメインメモリーにライトできる。一実施例により、現在のデータのライトが遂行されるアドレスにより指示されるメインメモリー領域のデータが、データキャッシュメモリー内の空いているキャッシュラインに新たにキャッシングされることができる。
動作S530において、コンピューティング装置は、現在のデータについて生成されたパリティをメインメモリーにライトできる。生成されたパリティがメインメモリーにライトされる場合も、パリティを管理するパリティキャッシュメモリーを使用して遂行されることができる。パリティキャッシュメモリーを使用してパリティをメインメモリーにライトする方法は、図6を参照して詳細に後述する。
動作S540において、コンピューティング装置は、現在のデータをデータキャッシュメモリーに貯蔵できる。コンピューティング装置は、データキャッシュメモリー内の複数のキャッシュラインのうち、タグ情報に基づいて現在のデータが貯蔵されるキャッシュラインを決定して、決定されたキャッシュラインに現在のデータを貯蔵できる。
動作S550において、コンピューティング装置は、データキャッシュメモリーがクリーン又はフラッシュされるか否かを判定する。データキャッシュメモリーが、まだクリーン又はフラッシュ動作を遂行する必要がない場合、受信された現在のデータをメインメモリーに出力しない。データキャッシュメモリーにおいてクリーン又はフラッシュ動作が遂行されると、動作S560及び動作S570において、現在のデータがメインメモリーに出力されて、パリティが生成されることができる。
動作S560において、コンピューティング装置は、現在のデータを包含するキャッシュラインのデータをメインメモリーにライトする。一実施例により、データキャッシュメモリー内のキャッシュラインのデータが、順次的又は並列的にメインメモリーに出力されることができる。動作S560において、現在のデータが基準サイズに変更されて出力されることができる。メインメモリーに出力される各キャッシュラインのデータサイズは、メインメモリーにおいて使用される基準サイズと同一の32バイトであるので、帯域幅を最大に活用できる。
動作S570において、コンピューティング装置は、データキャッシュメモリーから出力される基準サイズのデータについてのパリティを生成して、生成されたパリティをメインメモリーにライトする。生成されたパリティがメインメモリーにライトされる方法も、やはりパリティを管理するパリティキャッシュメモリーを使用して遂行されることができる。パリティキャッシュメモリーを使用して、パリティをメインメモリーにライトする方法は、図6を参照して詳細に後述する。
図6は、一実施例によるコンピューティング装置から生成されたパリティについてのライト動作を遂行する方法の流れ図を示す。
動作S610乃至S650は、図5の動作S530又はS570に関する詳細な流れ図である。但し、図5の動作S530又はS570は、図6に図示される流れ図によって制限されない。
動作S600において、コンピューティング装置は、生成されたパリティについてのライト動作を要請する。
動作S610において、コンピューティング装置は、生成されたパリティのライトが遂行されるアドレスにより指示されるメインメモリー領域のパリティが、パリティキャッシュメモリーに存在するか(例えば、ヒットが発生したか)否かを判定する。例えば、パリティキャッシュメモリーのタグ情報を参照して、ライトが遂行される、生成されたパリティのアドレスにより指示されるメインメモリー領域のパリティが、パリティキャッシュメモリーにキャッシングされているか否かが判定されることができる。生成されたパリティのアドレスにより指示されるメインメモリー領域のデータが、パリティキャッシュメモリーに存在すると、動作S620において生成されたパリティがパリティキャッシュメモリーに貯蔵される。生成されたパリティのアドレスにより指示されるメインメモリー領域のパリティが、パリティキャッシュメモリーに存在しないと、動作S650において生成されたパリティがメインメモリーにライトされる。
動作S620において、コンピューティング装置は、生成されたパリティをパリティキャッシュメモリーに貯蔵する。コンピューティング装置は、パリティキャッシュメモリー内の複数のキャッシュラインのうち、タグ情報に基づいて生成されたパリティが貯蔵されるキャッシュラインを決定して、決定されたキャッシュラインに生成されたパリティを貯蔵できる。
動作S630において、コンピューティング装置は、パリティキャッシュメモリーがフラッシュ又はクリーンされるか否かを判定する。パリティキャッシュメモリーが、まだフラッシュ又はクリーン動作を遂行する必要がない場合、現在受信・生成されたパリティをメインメモリーに出力しない。一実施例によるコンピューティング装置は、パリティキャッシュメモリーにおいてフラッシュ又はクリーン動作が遂行される時、動作S640に進んで生成されたパリティをメインメモリーに出力できる。
動作S640において、コンピューティング装置は、現在のパリティを包含するキャッシュラインのパリティ情報をメインメモリーにライトする。一実施例により、パリティキャッシュメモリー内のキャッシュラインのパリティが、順次的又は並列的にメインメモリーに出力されることができる。動作S640において、生成されたパリティが基準サイズに変更されて出力されることができる。この場合、各キャッシュラインから出力されるパリティのサイズは、メインメモリーにおいて使用する基準サイズと同一の32バイトであるので、帯域幅を最大に活用できる。
動作S650において、コンピューティング装置は、生成されたパリティをメインメモリーにライトする。一実施例により、生成されたパリティのライトが遂行されるアドレスにより指示されるメインメモリー領域のパリティが、パリティキャッシュメモリー内の空いているキャッシュラインに新たにキャッシングされることができる。
図7は、一実施例によるコンピューティング装置においてリード動作を遂行する方法の流れ図を示す。
動作S700において、コンピューティング装置は、リードデータについてのリード動作を要請する。
動作S710において、コンピューティング装置は、リードデータがデータキャッシュメモリーに存在するか(例えば、ヒットが発生したか)否かを判定する。リードデータが、データキャッシュメモリーに存在すると、動作S720において、リードデータがデータキャッシュメモリーから出力されることができる。データキャッシュメモリーから出力されるデータサイズは4バイトである。リードデータが、メインメモリーではないデータキャッシュメモリーから出力されたので、リードデータを検査するためのパリティ情報は必要ではない。リードデータが、データキャッシュメモリーに存在しない場合、コンピューティング装置は、動作S730においてメインメモリーにアクセスできる。
動作S730において、コンピューティング装置は、メインメモリーにアクセスしてリードデータをリードできる。メインメモリーから要請されたデータを出力するために32バイトの帯域幅が必要である。なお、コンピューティング装置は、リードしたデータのエラーを検査するためのパリティのリードを、メインメモリーに要請できる。
動作S740において、コンピューティング装置は、要請されたパリティがパリティキャッシュメモリーに存在するか(例えば、ヒットが発生したか)否かを判定する。要請されたパリティが、パリティキャッシュメモリーに存在すると、動作S750において、要請されたパリティがパリティキャッシュメモリーから出力されることができる。パリティキャッシュメモリーから出力されるパリティのサイズは2バイトである。要請されたパリティが、パリティキャッシュメモリーに存在しないと、コンピューティング装置は、動作S760においてメインメモリーにアクセスできる。
動作S760において、コンピューティング装置は、要請されたパリティをメインメモリーから出力する。メインメモリーからパリティを出力するために、32バイトの帯域幅が必要である。
図8は、一実施例によるコンピューティング装置を包含する電子システムの例示的な構成を示すブロック図である。
電子システム1000は、メインプロセッサ1101、ワーキングメモリー1200、ストレージ装置1300、通信ブロック1400、ユーザーインターフェース1500、及びバス1600を包含できる。例として、電子システム1000は、デスクトップ(Desktop)コンピュータ、ラップトップ(Laptop)コンピュータ、タブレット(Tablet)コンピュータ、スマートフォン、ウェアラブル(Wearable)装置、ビデオゲーム機(Video Game Console)、ワークステーション(Workstation)、サーバ(Server)、電気自動車などのような電子装置のうち、一つであり得る。一実施例による電子システム1000は、図2乃至図4を参照して前述したコンピューティング装置のうち、いずれかを包含できる。例えば、電子システム1000は、図2のコンピューティング装置200を包含できるが、これに制限されない。
メインプロセッサ1101は、電子システム1000の全般的な動作を制御できる。メインプロセッサ1101は、多様な種類の算術演算及び/又は論理演算を処理できる。このため、メインプロセッサ1101は、専用(Special-purpose) 回路(例えば、FPGA(Field Programmable Gate Array)、ASICs(Application Specific Integrated Circuits) など)を包含できる。例として、メインプロセッサ1101は、一つ以上のプロセッサコアを包含でき、汎用プロセッサ、専用プロセッサ、又はアプリケーションプロセッサ(Application Processor)で具現されることができる。
ワーキングメモリー1200は、電子システム1000の動作に利用されるデータを貯蔵できる。例として、ワーキングメモリー1200は、メインプロセッサ1101により処理された又は処理されるデータを一時的に貯蔵できる。例として、ワーキングメモリー1200は、DRAM(Dynamic RAM)、SDRAM(Synchronous DRAM)などのような揮発性メモリー、及び/又はPRAM(Phase-change RAM)、MRAM(Magneto-resistive RAM)、ReRAM(Resistive RAM)、FRAM(Ferro-electric RAM)などのような不揮発性メモリーを包含できる。
一実施例によるワーキングメモリー1200は、データ保護のために図2のメインメモリー260で具現されることができる。例えば、ワーキングメモリー1200は、データとデータのエラーを検査するためのパリティ情報が、一つのメモリーに貯蔵されるインバンドメモリー(In-band memory)であり得る。ワーキングメモリー1200は、データ及びパリティを基準サイズで外部と送信及び受信できる。例えば、ワーキングメモリー1200は、32バイト単位でのみデータ及びパリティをバス1600に送信するしたり、バス1600から受信したりすることができる。
ストレージ装置1300は、少なくとも一つのメモリー装置及びコントローラを包含できる。ストレージ装置1300のメモリー装置は、電力供給に関係なしにデータを貯蔵できる。例として、ストレージ装置1300は、フラッシュメモリー、PRAM、MRAM、ReRAM、FRAMなどのような不揮発性メモリーを包含できる。例として、ストレージ装置1300は、SSD(Solid State Drive)、カードストレージ、エンベデッド(Embedded)ストレージなどのようなストレージ媒体を包含できる。
通信ブロック1400は、電子システム1000の外部装置/システムと通信できる。例として、通信ブロック1400は、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などのような多様な有線通信規約のうち、少なくとも一つを支援できる。
ユーザーインターフェース1500は、ユーザーと電子システム1000との間の通信を仲裁できる。例として、ユーザーインターフェース1500は、キーボード、マウス、キーパッド、ボタン、タッチパネル、タッチスクリーン、タッチパッド、タッチボール、カメラ、マイク、ジャイロスコープセンサ、振動センサなどのような入力インターフェースを包含できる。例として、ユーザーインターフェース1500は、LCD(Liquid Crystal Display)装置、LED(Light Emitting Diode)表示装置、OLED(Organic LED)表示装置、AMOLED(Active Matrix OLED)表示装置、スピーカー、モータなどのような出力インターフェースを包含できる。
バス1600は、電子システム1000の構成要素の間で通信経路を提供できる。電子システム1000の構成要素は、バス1600のバスフォーマットに基づいて互いにデータを交換できる。例として、バスフォーマットは、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)などのような多様なインターフェース規約のうち、一つ以上を包含できる。
メインプロセッサ1101は、ワーキングメモリー1200にデータをライトしたり、ワーキングメモリー1200からデータをリードしたりすることができる。図2乃至図7を参照して上述したように、メインプロセッサ1101は、ライト及びリード動作時にキャッシュメモリー1150を使用できる。一実施例によるキャッシュメモリー1150は、ワーキングメモリー1200において使用する基準サイズでデータを出力するデータキャッシュメモリーを包含できる。一実施例によるキャッシュメモリー1150は、ワーキングメモリー1200において使用する基準サイズでパリティを出力する、パリティキャッシュメモリーを包含できる。従って、メインプロセッサ1101が、ワーキングメモリー1200において使用する基準サイズよりサイズが小さいデータについてのライト動作を遂行する場合にも、メモリー帯域幅を最大限に活用してデータ又はパリティを入力できるので、帯域幅の浪費を最大限に防止できる。キャッシュメモリー1150は、メインプロセッサ1101に包含されるものと図示したが、一実施例により、バス1600とワーキングメモリー1200との間に位置することもできる。
一方、前述した方法は、コンピュータにおいてリードできる記録媒体に、コンピュータがリードできるコードとして具現するのが可能である。コンピュータがリードできる記録媒体は、コンピュータシステムによりリードされることができるデータが貯蔵される全ての種類の記録装置を包含する。コンピュータがリードできる記録媒体の例としては、ROM、RAM、CD-ROM、磁気テープ、フロッピーディスク、光データ貯蔵装置などがあり、またインターネットを通じる伝送などの形態で具現されるのも包含する。なお、コンピュータがリードできる記録媒体は、ネットワークで連結されたコンピュータシステムに分散されて、分散方式でプロセッサがリードできるコードが貯蔵されて、実行されることができる。
前記の説明は、本発明を具現するための例示的な構成及び動作を提供するように意図される。本発明の技術思想は、前に説明された実施例だけでなく、前の実施例を単純に変更したり、修正したりして得られる具現も包含するはずである。なお、本発明の技術思想は、前に説明された実施例を、今後容易に変更したり修正したりして達成されることができる具現も包含するはずである。
本発明は、帯域幅を効果的に使用してコンピューティング装置におけるインバンドメモリーアクセスによるデータ保護に有用である。
100、200、400:コンピューティング装置
120、220、420:プロセッサ
160、260、460:メインメモリー
162、262:データ領域
164、264、464:パリティ領域
240,1150:キャッシュメモリー
242、342、440:データキャッシュメモリー
244、442:パリティキャッシュメモリー
320、322:タグ情報
450: ECCエンジン
462: データを貯蔵するための領域
464: パリティを貯蔵するための領域
1000: 電子システム
1101: メインプロペッサ
1200: ワーキングメモリー
1300: ストレージ装置
1400: 通信ブロック
1500: ユーザーインターフェース
1600: バス

Claims (10)

  1. データ及び前記データのエラーを検査するためのパリティを貯蔵し、前記データ及び前記パリティを基準サイズで送信及び受信するためのメインメモリーと、
    前記メインメモリーにアクセスするためのプロセッサと、
    データをキャッシングするための第1キャッシュメモリーと、を包含し、
    前記プロセッサが現在のデータについてのライト作動を要請する場合、前記現在のデータは前記第1キャッシュメモリーに貯蔵され、前記第1キャッシュメモリーは前記貯蔵された現在のデータを前記基準サイズに変更して前記メインメモリーに出力し、
    前記現在のデータは前記基準サイズより小さいサイズである、コンピューティング装置。
  2. 前記現在のデータは、現在のデータのライトが遂行されるアドレスにより指示されるメインメモリーの領域のデータがキャッシングされた前記第1キャッシュメモリー内の空間に貯蔵される、請求項1に記載のコンピューティング装置。
  3. 前記第1キャッシュメモリーは前記データが前記メインメモリー上でキャッシングされる領域を示すタグ情報及び前記データをキャッシングするための複数のキャッシュラインを包含し、
    前記タグ情報に基づいて前記複数のキャッシュライン中で前記現在のデータが貯蔵されるキャッシュラインが決定される、請求項1又は2に記載のコンピューティング装置。
  4. 前記基準サイズに変更された前記現在のデータは、前記第1キャッシュメモリーのクリーン又はフラッシュの動作が遂行される時、前記メインメモリーに出力される、請求項1ないし3のうち何れか一項に記載のコンピューティング装置。
  5. 前記第1キャッシュメモリーから出力される前記基準サイズに変更された前記現在のデータに対するパリティが生成される、請求項1ないし4のうち何れか一項に記載のコンピューティング装置。
  6. 前記メインメモリーに貯蔵された前記パリティをキャッシングするための第2キャッシュメモリーをさらに包含し、
    前記現在のデータに対する前記生成されたパリティのライトが遂行されるアドレスにより指示される前記メインメモリーの領域のパリティが前記第2キャッシュメモリーにキャッシングされる場合、前記現在のデータに対する前記生成されたパリティは前記第2キャッシュメモリーに貯蔵され、前記第2キャッシュメモリーは前記現在のデータに対する前記生成されたパリティを前記基準サイズに変更して前記メインメモリーに出力する、請求項5に記載のコンピューティング装置。
  7. キャッシュメモリーを包含するプロセッサにおいて、
    前記キャッシュメモリーは、データをキャッシングするための第1キャッシュメモリーと前記データのエラーを検査するためのパリティをキャッシングするための第2キャッシュメモリーとを包含し、前記第1キャッシュメモリーは基準サイズのデータをメインメモリーに出力するように構成され、前記第2キャッシュメモリーは前記基準サイズのパリティを前記メインメモリーに出力するように構成され、
    前記基準サイズは前記データ及び前記パリティを前記メインメモリーから送信及び受信するためのサイズと同一である、プロセッサ。
  8. メインメモリーに現在のデータをライトするためにコンピューティング装置により遂行される方法において、
    前記現在のデータのライトが遂行される第1アドレスにより指示される前記メインメモリーの領域のデータが第1キャッシュメモリーにキャッシングされているか否かを判定する動作を含み、
    前記第1アドレスにより指示される前記メインメモリーの前記領域の前記データが前記第1キャッシュメモリーにキャッシングされている場合において、前記方法は、
    前記第1キャッシュメモリーに前記現在のデータを貯蔵する動作と、
    前記現在のデータを基準サイズに変更して、前記第1キャッシュメモリーから前記メインメモリーに出力する動作を包含し、
    前記現在のデータは前記基準サイズより小さいサイズであり、前記基準サイズは前記データ及びパリティを前記メインメモリーから送信及び受信するためのサイズと同一である、方法。
  9. 前記メインメモリーに出力する前記基準サイズに変更された前記現在のデータに対するパリティを生成する動作と、
    前記生成されたパリティを前記メインメモリーにライトする動作と、をさらに包含する、請求項8に記載の方法。
  10. 前記生成されたパリティを前記メインメモリーにライトする動作は、
    前記生成されたパリティのライトが遂行される第2アドレスにより指示される前記メインメモリーの領域のパリティが第2キャッシュメモリーにキャッシングされているか否かを判定する動作を含み、
    前記第2アドレスにより指示される前記メインメモリーの前記領域の前記パリティが前記第2キャッシュメモリーにキャッシングされている場合に、前記方法は、
    前記第2キャッシュメモリーに前記生成されたパリティを貯蔵する動作と、
    前記生成されたパリティを前記基準サイズに変更して、前記第2キャッシュメモリーから前記メインメモリーに出力する動作と、を包含する、請求項9に記載の方法。
JP2018194291A 2017-10-30 2018-10-15 ライト動作方法 Active JP7430482B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020170142670A KR102490104B1 (ko) 2017-10-30 2017-10-30 데이터 보호를 사용하는 인-밴드 메모리에 액세스하기 위한 장치 및 방법
KR10-2017-0142670 2017-10-30

Publications (2)

Publication Number Publication Date
JP2019083005A true JP2019083005A (ja) 2019-05-30
JP7430482B2 JP7430482B2 (ja) 2024-02-13

Family

ID=66138012

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018194291A Active JP7430482B2 (ja) 2017-10-30 2018-10-15 ライト動作方法

Country Status (5)

Country Link
US (1) US10783033B2 (ja)
JP (1) JP7430482B2 (ja)
KR (1) KR102490104B1 (ja)
CN (1) CN109726147B (ja)
DE (1) DE102018121994A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11055176B1 (en) 2020-04-24 2021-07-06 Western Digital Technologies, Inc. Storage devices hiding parity swapping behavior
US11194494B2 (en) * 2020-04-24 2021-12-07 Western Digital Technologies, Inc. Storage devices hiding parity swapping behavior
TWI755739B (zh) 2020-05-26 2022-02-21 慧榮科技股份有限公司 記憶體控制器與資料處理方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008158779A (ja) * 2006-12-22 2008-07-10 Toshiba Corp 情報処理装置、ecc制御装置およびecc制御方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5341487A (en) 1991-12-20 1994-08-23 International Business Machines Corp. Personal computer having memory system with write-through cache and pipelined snoop cycles
US5572660A (en) 1993-10-27 1996-11-05 Dell Usa, L.P. System and method for selective write-back caching within a disk array subsystem
US6295582B1 (en) 1999-01-15 2001-09-25 Hewlett Packard Company System and method for managing data in an asynchronous I/O cache memory to maintain a predetermined amount of storage space that is readily available
US6496905B1 (en) 1999-10-01 2002-12-17 Hitachi, Ltd. Write buffer with burst capability
US6804799B2 (en) 2001-06-26 2004-10-12 Advanced Micro Devices, Inc. Using type bits to track storage of ECC and predecode bits in a level two cache
JP4933211B2 (ja) 2006-10-10 2012-05-16 株式会社日立製作所 ストレージ装置、制御装置及び制御方法
US8549222B1 (en) 2008-02-12 2013-10-01 Netapp, Inc. Cache-based storage system architecture
TW201015321A (en) 2008-09-25 2010-04-16 Panasonic Corp Buffer memory device, memory system and data trnsfer method
KR100998929B1 (ko) * 2009-01-23 2010-12-09 한국과학기술원 캐쉬 컨트롤러 장치, 캐쉬 컨트롤러 장치를 이용한 인터페이스 방법 및 프로그래밍 방법
JP5482197B2 (ja) * 2009-12-25 2014-04-23 富士通株式会社 演算処理装置、情報処理装置及びキャッシュメモリ制御方法
JP5493954B2 (ja) * 2010-02-10 2014-05-14 富士通株式会社 キャッシュシステム
US9189329B1 (en) 2011-10-13 2015-11-17 Marvell International Ltd. Generating error correcting code (ECC) data using an ECC corresponding to an identified ECC protection level
KR101888074B1 (ko) * 2012-01-09 2018-08-13 삼성전자주식회사 저장 장치 및 불휘발성 메모리 장치, 그리고 그것의 동작 방법
WO2013132806A1 (ja) 2012-03-06 2013-09-12 日本電気株式会社 不揮発性論理集積回路と不揮発性レジスタの誤りビットの訂正方法
KR102025340B1 (ko) * 2012-11-27 2019-09-25 삼성전자 주식회사 불휘발성 메모리를 포함하는 반도체 메모리 장치, 이를 포함하는 캐쉬 메모리 및 컴퓨터 시스템
US9092336B2 (en) 2013-03-15 2015-07-28 Intelligent Intellectual Property Holdings 2 Llc Write admittance policy for a memory cache
US9110809B2 (en) 2013-07-03 2015-08-18 Nvidia Corporation Reducing memory traffic in DRAM ECC mode
US20150026407A1 (en) * 2013-07-19 2015-01-22 Advanced Micro Devices, Inc. Size adjusting caches based on processor power mode
KR102067040B1 (ko) * 2014-04-23 2020-01-16 한국전자통신연구원 고장 방지 기능을 갖는 캐시 제어 장치 및 동작 방법
JP6115740B1 (ja) 2015-12-17 2017-04-19 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置
US10115444B1 (en) * 2017-08-09 2018-10-30 Qualcomm Incorporated Data bit inversion tracking in cache memory to reduce data bits written for write operations

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008158779A (ja) * 2006-12-22 2008-07-10 Toshiba Corp 情報処理装置、ecc制御装置およびecc制御方法

Also Published As

Publication number Publication date
KR102490104B1 (ko) 2023-01-19
CN109726147A (zh) 2019-05-07
DE102018121994A1 (de) 2019-05-02
KR20190048121A (ko) 2019-05-09
CN109726147B (zh) 2024-06-18
JP7430482B2 (ja) 2024-02-13
US20190129793A1 (en) 2019-05-02
US10783033B2 (en) 2020-09-22

Similar Documents

Publication Publication Date Title
CN108804023B (zh) 数据存储装置及其操作方法
US9785545B2 (en) Method and apparatus for providing dual memory access to non-volatile memory
KR102446733B1 (ko) 스토리지 장치 및 스토리지 장치를 포함하는 전자 장치
JP2019067417A (ja) 最終レベルキャッシュシステム及び対応する方法
EP3436953B1 (en) Method and apparatus for processing sequential writes to a block group of physical blocks in a memory device
US11269765B2 (en) Operating method of controller and memory system
JP7430482B2 (ja) ライト動作方法
CN109213441A (zh) 能够管理工作而无需处理器干预的存储装置
US20150134886A1 (en) Data storage device
TW201828068A (zh) 在邏輯位址和物理位址之間執行散列式轉譯的儲存裝置
KR20200100955A (ko) 메모리 시스템의 맵 데이터 관리 방법 및 장치
KR20200132047A (ko) 메모리 시스템에서 맵 데이터를 전송하는 방법 및 장치
US10635347B2 (en) Memory system and operating method thereof
KR20200100956A (ko) 메모리 시스템의 맵 데이터 관리 방법 및 장치
KR20180092715A (ko) 동작들의 횟수에 기초하여 복제된 데이터를 관리하는 스토리지 장치
US20150106573A1 (en) Data processing system
US10684953B2 (en) Data storage apparatus capable of varying map cache buffer size
KR101740679B1 (ko) 양방향 통신 기법을 갖는 저장 장치 그리고 그것을 포함한 시스템
US20190243775A1 (en) Data storage device and operating method thereof
KR20190106005A (ko) 메모리 시스템, 그것의 동작 방법 및 전자 장치
US11216380B2 (en) Controller and operation method thereof for caching plural pieces of map data read from memory device
US20200073805A1 (en) Controller and operation method thereof
KR102671475B1 (ko) 스토리지 장치 및 스토리지 장치를 포함하는 전자 장치
TWI553478B (zh) 能夠使用外部揮發性記憶體的裝置以及能夠釋放內部揮發性記憶體的裝置
KR102623061B1 (ko) 데이터베이스에서 이터레이터 연산을 수행하기 위한 장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210817

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220729

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220802

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221031

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20230110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231214

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240131

R150 Certificate of patent or registration of utility model

Ref document number: 7430482

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150