JP2018530034A - メモリのためのインテリジェントコード装置、方法およびコンピュータプログラム - Google Patents

メモリのためのインテリジェントコード装置、方法およびコンピュータプログラム Download PDF

Info

Publication number
JP2018530034A
JP2018530034A JP2018504225A JP2018504225A JP2018530034A JP 2018530034 A JP2018530034 A JP 2018530034A JP 2018504225 A JP2018504225 A JP 2018504225A JP 2018504225 A JP2018504225 A JP 2018504225A JP 2018530034 A JP2018530034 A JP 2018530034A
Authority
JP
Japan
Prior art keywords
memory
data
code
subset
bank
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
JP2018504225A
Other languages
English (en)
Other versions
JP6555841B2 (ja
Inventor
ハオ・ルアン
アラン・ギャザラー
スリラム・ヴィシュワナス
ケイセン・フンガー
ハーディック・ジェイン
Original Assignee
ホアウェイ・テクノロジーズ・カンパニー・リミテッド
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 ホアウェイ・テクノロジーズ・カンパニー・リミテッド filed Critical ホアウェイ・テクノロジーズ・カンパニー・リミテッド
Publication of JP2018530034A publication Critical patent/JP2018530034A/ja
Application granted granted Critical
Publication of JP6555841B2 publication Critical patent/JP6555841B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1088Reconstruction on already foreseen single or plurality of spare disks
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Error Detection And Correction (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Detection And Correction Of Errors (AREA)
  • Memory System (AREA)

Abstract

メモリとともに用いられるインテリジェントコード装置、方法およびコンピュータプログラムが提供される。動作では、第1のメモリに記憶されているデータのサブセットを特定する。第1のメモリに記憶されているデータのこのようなサブセットを処理してコードを生成する。その後、データの少なくとも一部を再構築するのに用いるために、コードを第2のメモリに記憶する。

Description

本特許出願は、「メモリのためのインテリジェントコード装置、方法およびコンピュータプログラム」と題された2015年7月28日に出願された米国出願第14/811,763号に対する優先権を主張し、この米国出願は、その全体が再現されるように、この参照によって本明細書に援用される。
本発明は、メモリシステムに関し、特に、メモリシステムに関連して使用されるコーディングに関する。
現在では、メモリシステムにおいてコード(たとえばパリティコードなど)を生成して記憶する様々な技術が存在する。一般的に、コードは、メモリに記憶されるデータの全体に対して生成される。これにより、このようなコードのすべてを記憶するきわめて大きい記憶容量が必要になる。これによりコスト増加をまねくだけでなく、動作中のパフォーマンス低下もまねく。
メモリとともに用いられるインテリジェントコード装置、方法およびコンピュータプログラムが提供される。動作では、第1のメモリに記憶されているデータのサブセットを特定する。第1のメモリに記憶されているデータのこのようなサブセットを処理してコードを生成する。その後、データの少なくとも一部を再構築するのに用いるために、コードを第2のメモリに記憶する。
一実施の形態では、データを記憶する第1のメモリと、第2のメモリと、第1のメモリおよび第2のメモリと通信する回路とを含む装置が開示されている。この回路は、第1のメモリに記憶されているデータのサブセットを特定し、第1のメモリに記憶されているデータのサブセットを処理してコードを生成し、データの少なくとも一部を再構築するのに用いるために、コードを第2のメモリに記憶するために構成することができる。
別の実施の形態では、第1のメモリに記憶されているデータのサブセットを特定するステップと、第1のメモリに記憶されているデータのサブセットを処理してコードを生成するステップと、データの少なくとも一部を再構築するのに用いるために、コードを第2のメモリに記憶するステップとを含む方法が開示されている。
さらに別の実施の形態では、第1のメモリに記憶されているデータのサブセットを特定するコードと、第1のメモリに記憶されているデータのサブセットを処理してコードを生成するコードと、データの少なくとも一部を再構築するのに用いるために、コードを第2のメモリに記憶するコードとを含む、非一時的コンピュータ可読媒体上で具体化されるコンピュータプログラム製品が開示されている。
一実施の形態に係る、インテリジェントコード化メモリアーキテクチャを実施する方法を示す。 一実施の形態に係るインテリジェントコード化メモリシステムを示す。 一実施の形態に係るインテリジェントコード化メモリシステムを実施する方法を示す。 一実施の形態に係る、インテリジェントコード化メモリシステムを実施する第1の設計を示す。 一実施の形態に係る、インテリジェントコード化メモリシステムを実施する第2の設計を示す。 一実施の形態に係る、インテリジェントコード化メモリシステムを実施する第3の設計を示す。 一実施の形態に係る、図6の設計を超える改良を含む設計を示す。 1つの可能な実施の形態に係るネットワークアーキテクチャを示す。 一実施の形態に係る典型的なシステムを示す。
図1は、一実施の形態に係る、インテリジェントコード化メモリアーキテクチャを実施する方法100を示す。動作102に示されているように、第1のメモリに記憶されているデータのサブセットを特定する。様々な実施の形態で、このような第1のメモリは任意のタイプのメモリを含んでもよい。たとえば、様々な実施の形態で、第1のメモリは、これに関して、ランダムアクセスメモリ(RAM)、キャッシュ、バンクまたはその他任意のタイプのメモリという任意の形態態をとってもよい。
以下の実施の形態の説明中に示されるように、データのサブセットは、様々な実施の形態では、このようなデータサブセットに関連する1つ以上のスケジューリングされたアクセスに基づいて特定されてもよい。これのために、第1のメモリでのアクセスの対象であるものとして、データのサブセットを特定してもよい。当然のことながら、他の実施の形態に関しては、以降の処理のためにデータのサブセットが特定されるという結果のみをもたらす任意の所望のアルゴリズム(たとえば、統計的、予測的など)を用いてデータサブセットを特定してもよい。
次に、第1のメモリに記憶されているデータのサブセットを処理してコードを生成する。動作104を参照。本説明に関して、このようなコードは、すぐに分かるように、データを再構築するのに利用することができる任意のコードを含んでもよい。たとえば、一実施の形態では、コードは、データサブセットに基づいて生成される1つ以上のビットを含んでもよい。別の実施の形態では、コードはパリティコードを含んでもよい。1つの可能な実施の形態に係る使用の場合、第1のメモリでのバンクコンフリクトのために利用可能でないデータを再構築してもよい。さらに、上記の処理は、このようなコードをもたらすことができる任意の処理であってもよい。
特定されるデータサブセットは、様々な実施の形態で、2つ、3つまたは4つのバンクからのデータを含んでもよく、これらの任意の組み合せに基づいてコードを生成してもよい。一般的に議論すると、異なる複数の実施の形態で、第2のメモリは、第1のメモリの構成要素の数以下である数の構成要素を含んでもよい。これのためにコードの複雑さが適切にされ、したがってこれは問題のないものになる。当然のことながら、他の実施の形態に関しては、データサブセットを上記のように限定する必要はなく、したがって、データサブセットは第1のメモリに記憶されているデータの任意のサブセットを含んでもよい。
図1を続けて参照して、データの少なくとも一部を再構築するのに用いるために、コードを第2のメモリに記憶する。動作106を参照。本説明に関して、第2のメモリは、第1のメモリの構成要素(たとえば一部など)であってもよいし、そうでなくてもよい。さらに、第1のメモリと同様に、第2のメモリは、これに関しては、ランダムアクセスメモリ(RAM)、キャッシュ、バンクまたはその他任意のタイプのメモリの任意の形態をとってもよい。
適宜、一実施の形態では、コードをデータのサブセットとともに第2のメモリに記憶してもよい。当然のことながら、そうではない他の実施の形態が考えられる。任意のケースで、コードは、データの少なくとも一部(たとえばサブセットまたはその部分など)を、これに対する任意の以降のアクセスに関連して再構築するのにその後に利用可能である。適宜、第1のメモリの任意のバンクから1つ以上のデータアイテムを用いることに関連する1つ以上の機能を発揮するためにコードが使用可能であってもよい。さらに、関連するデータサブセットのみをコードを生成する目的で特定することによって、様々な特徴が示される場合がある(示されない場合もある)。たとえば、様々な任意に追加可能な実施の形態では、コード記憶のために必要な第2のメモリのサイズが節約される場合がある、同時読み出し/書き込みが有効にされる場合がある、などである。
様々な任意に追加可能なアーキテクチャおよび用法に関して、より分かり易い説明を以下示すが、ユーザの所望にしたがって上記の方法は実施される場合もされない場合もある。以下の説明は例示目的で示されており、いかなるようにも限定するように解釈すべきではない点に強く留意すべきである。以下の特徴のいずれも任意に組み込んでもよく、この場合、記載されている他の特徴を除外してもしなくてもよい。
図2は、一実施の形態に係るインテリジェントコード化メモリシステム200を示す。適宜、任意の上記および/もしくは下記の図ならびに/またはその説明に示されている実施の形態の任意の1つ以上に関してシステム200を実施してもよい。ただし、当然のことながら、任意の所望の環境に関してシステム200を実施してもよい。
図示の通り、オリジナルデータを記憶する第1のメモリ202と、1つ以上のコードを記憶する第2のメモリ204とが含まれている。上述したように、このような第1のメモリ202および第2のメモリ204は任意の形態をとってもよい。さらに、第1のメモリ202および第2のメモリ204は図2に別々のメモリであるように示されているが、このような第1のメモリ202および第2のメモリ204が同じ単一のメモリの部分であってもよい点に留意すべきである。さらにまた、近接する別々のメモリであるように示されているが、このような第1のメモリ202および第2のメモリ204が離れて位置する他の実施の形態が考えられる。
第1のメモリ202および第2のメモリ204と通信するメモリコントローラ206がさらに含まれている。図示の通り、メモリコントローラ206は様々な回路を含むように示されている。たとえば、第1のメモリ202に記憶されているデータのサブセットを、これのためのコードを生成する目的で特定する第1のスケジューラ210が含まれている。メモリコントローラ206は、第1のスケジューラ210を用いることにより特定されるデータサブセットのためのコードを生成するコード生成器212をさらに含む。図示されてはいないが、コードはデータのサブセットとともに第2のメモリ204に記憶されてもよい。
図2を引き続き参照して、第2のスケジューラ214が第1のスケジューラ210と通信する。様々な実施の形態で、第2のスケジューラ214は、これに関して、グローバルスケジューラ、チップレベルスケジューラまたはその他任意のタイプのスケジューラを含んでもよい。使用に際して、第2のスケジューラ214は、様々なデータに関連するタスク(たとえばプロセッサなどによって取り扱われるもの)をスケジューリングすることを担当し、さらに、コード生成器212を介したコード生成のためにデータサブセットを特定するのに用いられるように第1のスケジューラ210を促すために、直接的に、または、(図示されているような)バスのような相互接続部を介してメモリコントローラ206と通信する。
第1のスケジューラ210およびコード生成器212は、本実施の形態のメモリコントローラ206の構成要素であるように示されているが、このような回路を別のデバイス(たとえば、プロセッサ、メモリ、別個の1つ以上のチップなどに集積されるもの)に配置してもよく、かつ/または別々の別のデバイスに配置してもよい他の実施の形態が考えられる点に留意すべきである。
同様のことが、第2のスケジューラ214について言うことができる。第2のスケジューラ214は、中央処理装置(CPU)216、デジタル信号プロセッサ(DSP)218、ハードウェアアクセラレータ(HAC)220に対してスタンドアロンであるように示されているが、他の実施の形態では、プロセッサに関して実施してもよい。たとえば、様々な実施の形態では、このようなプロセッサは、CPU216、DSP218、専用プロセッサ(たとえばHAC220など)、プロセッサコアまたはデータを処理することができるその他任意のデバイス(またはその構成要素)を含んでもよい。
さらに、様々な構成要素のいくつかの間の通信は、直接通信であるように示されているが、通信が間接的である(たとえば、1つ以上の他の構成要素がその間にあるなど)他の実施の形態が考えられる点に留意すべきである。一実施の形態に係る、上記の構成要素が動作するのに用いられる典型的な方法に関して、さらなる説明を以下示す。
図3は、一実施の形態に係るインテリジェントコード化メモリシステムを実施する方法300を示す。適宜、任意の上記および/もしくは下記の図ならびに/またはその説明に示されている実施の形態の任意の1つ以上に関して方法300を実施してもよい。たとえば、一実施の形態では、方法300を図2のシステム200に関して実施してもよい。ただし、当然のことながら、方法300を任意の所望の環境に関して実施してもよい。
使用に際して、データサブセット(すなわちコードの基礎)をデータのサブセットに関連する要求に基づいて特定してもよい。特に、このような要求は、グローバルスケジューラまたはチップレベルスケジューラ(たとえば図2のスケジューラ214など)によって特定されるアクセス要求を含んでもよい。他の実施の形態では、リアルタイムにデータのサブセットに関連する複数の要求に基づいてデータサブセットを特定してもよい。たとえば、複数のアクセス要求を受けて異なるデータにアクセスしてもよい。これのために、データサブセットを、アクセス要求に基づいてこのような異なるデータを含むものとして特定してもよい。さらにまた、データサブセットを、異なるデータを含むものとして特定するプロセスを、リアルタイムに実行してもよい。
さらにまた、メッセージによりグローバルスケジューラまたはチップレベルスケジューラを用いてメモリコントローラ(たとえば図2のメモリコントローラ206など)のメモリコントローラスケジューラ(たとえば図2のスケジューラ210など)に上記の要求に関連する情報を通信してもよく、これにより、コード生成のために適切なデータサブセットを特定する際にこのような情報を用いることができる。使用中、データサブセットを、(以降のコード生成に用いられる)アクセス要求の処理と同時に、少なくとも部分的に(コード生成のために)処理してもよい。
図3を参照して、メモリコントローラスケジューラは、グローバルスケジューラまたはチップレベルスケジューラから上記のメッセージを受ける。動作302を参照。その後、第1のメモリの特定のメモリ領域中のデータが複数のアクセスのためにスケジューリングされていたか否かを判断する。判別304を参照。一実施の形態では、このような判別をグローバルスケジューラまたはチップレベルスケジューラによって行なってもよい。
特定のメモリ領域中のデータが判別304において複数のアクセスのためにスケジューリングされていたと判断される場合、データのサブセットが条件に応じて(コード生成のために)処理されるような追加動作を開始する。特に、図3に示されているように、関連するアドレス領域がグローバルスケジューラまたはチップレベルスケジューラからメモリコントローラスケジューラに伝えられることによってこのような追加動作は開始される。動作306を参照。
次に、判別308で、メモリコントローラは、第2のメモリの容量がコードの記憶に対応することができるか否かを判断する。特に、コードの新しいコード領域(たとえばコーディングバンクなど)に対応する余地があるか否かを判断する。余地がない場合、既存のコード領域を空けて(remove)容量を生成してもよい。動作310を参照。一実施の形態では、空ける既存のコード領域の選択は、必要な容量を生じさせる、これに関する最低使用頻度ポリシ(least−used policy)またはその他任意のアルゴリズムに基づいてもよい。これのために、第2のメモリの容量がコードの記憶に対応することができるか否かの判断に基づいて第2のメモリの少なくとも一部をクリアする。
いずれの場合でも、その際、コードバンクをバックグラウンドで生成してもよく、コードバンクの準備が行なわれた後、メモリコントローラに通知/トリガをかけてもよい。動作312〜314を参照。次に、動作316で、メモリコントローラスケジューラはそれに応じて、実際のトラフィックがメモリコントローラに到達した後、コーディングバンクをスケジューリングし始める。したがって、第2のメモリの準備がコードの記憶に対応することに対して整っているか否かの判断に基づいてコードの記憶を開始してもよい。
さらにまた、様々な実施の形態では、データサブセットを特定するのに用いられたのと同じフローを利用して、データのサブセットを処理してコードを生成してもよい。したがって、1つの可能な実施の形態に係れば、データサブセットの特定と、コード生成のためのデータサブセットの処理とは、その同じフローの最初および以降の動作であってもよく、これらの動作は、リアルタイム動作のために「連続的に(back−to−back)」継ぎ目なく実行することができるようなものである。
コーディングバンクが整った後、メモリコントローラスケジューラはグローバルスケジューラまたはチップレベルスケジューラに対するいくつかのイベントについてトリガをかけることもできる。さらに、いくつかの状況では、グローバルスケジューラまたはチップレベルスケジューラは、トリガが到着するのを待って、複数のCPU/DSPコアなどのプロセッサに対するタスクをスケジューリングしてもよい。このような複数のCPU/DSPコアは、この領域に対する複数の同時アクセスを有効にすれば、コーディングバンクから利益を受けることができ、パフォーマンス全体がさらに改善される。
様々な実施の形態に係る、インテリジェントコード化メモリシステムに関して実行され得る複数の異なる設計についてさらなる説明を以下示す。示されている通り、各実施の形態はコードを記憶する効率的な手法を含む。このような設計を説明して違いを明らかにする目的で、本明細書において表1に以下の用語を定める。
表1
・データバンク:生データ(たとえばオリジナルデータなど)を記憶するオリジナルバンク、およびベースラインシステム(たとえばコード化されていないシステムなど)に存在するオリジナルバンク。
・コーディングバンク:少なくとも1つのコードを記憶するバンク。
・コード領域:1つ以上のバンクのグループであり、より効果的なアクセスを確実にし、かつコードのアベイラビリティに合わせるために分割されるもの。
・コードのローカリティ(locality of code):コードを形成するのに用いられるデータバンク要素の数。たとえば、a+bを記憶するコーディングバンクは、コーディングバンクがコーディングを形成するのにaおよびbを用いるので、「2」のローカリティを持つ。
・コードのアベイラビリティ(availability of code):データバンクがコーディングバンクに現われる回数。たとえば、コード(a+b)、(a+c)、(a+d)が存在する場合、(a)のアベイラビリティは3であり、(b)、(c)および(d)のアベイラビリティは、これらがコード化されたシステムで一度だけ出現するので、1である。
・コードのレート:これは、データバンクの数/バンクの総数、すなわちN(データバンク)/[N(データバンク)+N(コーディングバンク)]という比である。一実施の形態では、これは、コーディングバンクサイズがデータバンクサイズと同じである場合に限ってもよく、同じでない場合、コードのレートの式は、オリジナルデータのサイズ/コード化されたデータのサイズであってもよく、ここで、コード化されたデータは、オリジナルデータ+コーディングデータを含む。
以下の設計の実施の形態では、単に例示目的でのみ、表2に示されている以下の制約を持つと仮定している。
表2
・読み出しアクセス:1サイクルで1バンクあたり4
・書き込みアクセス:1サイクルで1バンクあたり2
・共有メモリサイズ:8kB〜256kB
・バンクの数:8
・メモリオーバヘッド:15%
・コーディングバンク:コード記憶用に5つまたは6つのシャローバンク
図4は、一実施の形態に係る、インテリジェントコード化メモリシステムを実施する第1の設計400を示す。適宜、任意の上記および/もしくは下記の図ならびに/またはその説明に示されている実施の形態の任意の1つ以上に関して設計400を実施してもよい。当然のことながら、しかし、任意の所望の環境に関して設計400を実施してもよい。
第1の設計400では、バッチコードの概念を用いてバンクの各々中のメモリの特定の列をコード化する。これにより、コーディングバンクを用いて、コード化された領域に対して複数のアクセスを提供することができる。第1の設計400下で、1つの可能な実施の形態では、コード化された領域に対する任意の4つの読み出し要求を適時に扱うことができることが保証され得る。図4に示されているように、8つのバンクは2つの領域に分けられる。各領域は4つのバンクからなる。各領域は、コードを記憶する6つの並列シャローバンクを有する。バンク1〜8に示されている中間の領域はコード化された領域である。メモリに対するこれらの領域の割合はαであると仮定する。
使用に際して、コードは、コード化された領域に対するシーケンシャルアクセスが発せられる場合に最大パフォーマンスを実現するように設計されている。このようなアクセス中に最高10個の並列アクセスが1サイクルで実現されてもよい。たとえば、a1、b1、c1、d1、a2、b2、c2、d2、a3、b3、c3およびd3に対するアクセスを受けた場合のシナリオを考えることができる。ここで、第1の設計400は、コーディングバンクa1+b1およびb1+c1、c1+d1とともにa1を用いてa1、b1、c1およびd1を扱うことができる。さらに、関連するデータバンクからb2を用い、コーディングバンクからa2+d2、b2+d2およびa2+c2を用いてa2、b2、c2およびd2を扱うことができる。最後に、第1の設計400はデータバンクCおよびデータバンクDを用いてc3およびd3を扱うことができる。
別のシナリオでは、コードスキームは、メモリバンクに対する非シーケンシャルかつ非連続アクセスがある場合に1サイクルで4つのアクセスまで低下する。たとえば、これは、アクセスがa1、b8、c9およびd15について要求される場合に起こる場合がある。この組み合せについてのコードはコーディングバンクに存在しないので、並列アクセスの利益は用いられない。ただし、この場合には、第1の設計400は、キューを先読みして、以降のアクセスのためにコーディングバンクからコードをプリフェッチするプリフェッチ機構を用いることができる。このような機構についてさらなる説明を以下に示す。図4はバンクにおけるコードの記憶パターンを示す。表3は第1の設計400の概要を示す。
表3
1バンクあたりのコード化された領域の割合=α
Figure 2018530034
任意のバンクに対して1クロックサイクルで最大4つの読み出し要求を扱うことができる。
図5は、一実施の形態に係る、インテリジェントコード化メモリシステムを実施する第2の設計500を示す。適宜、任意の上記および/もしくは下記の図ならびに/またはその説明に示されている実施の形態の任意の1つ以上に関して設計500を実施してもよい。ただし、当然のことながら、任意の所望の環境に関して設計500を実施してもよい。
示されるように、1サイクルあたり、1バンクあたり最大5つの読み出しアクセスを可能にすることによって設計500は図4の設計400よりも改善される。設計500でもバンクを2つの領域に分ける。第1の領域は、5つの対応するコーディングバンクを有するバンクA〜バンクDである。図5に示されている2つの領域は、一領域を形成する9個の上側バンクと、別の領域を形成する9個の下側バンクとを含む。設計500では領域間でのコードの混合記憶が可能である。さらに設計500は1領域あたり5つのコーディングバンクを用いる。この設計500下のデータはバンク間コードとバンク内コードとの両方についてコード化される。バンク内コードは、互い違いになっているコーディングバンク領域に記憶される。これにより、他の領域からのコーディングバンクの使用が、これらが利用できる場合に、可能である。
通常の使用に際して、設計500では、コード化された領域に対するシーケンシャルアクセスが発せられる場合に最大パフォーマンスの実現が可能である。このようなアクセス中に最高9個の並列アクセスを1サイクルで実現することができる。たとえば、a1、b1、c1、d1、a2、b2、c2、d2、a3、b3およびc3に対するアクセスを受けた場合のシナリオを考えることができる。ここで、コーディングバンクa1+b1、b1+c1およびc1+d1とともにa1を用いてa1、b1、c1、d1を扱うことができる。さらに、コーディングバンクa2+d2およびb2+d2とともにb2を用いてa2、b2、d2を扱うことができる。最後に、バンク3およびバンク4を用いてc2およびd3を扱うことができる。
一実施の形態では、メモリバンクに対する非シーケンシャルかつ非連続アクセスがあってもよい。たとえば、アクセスパターンがd1、d6、d9、d15およびd20である場合に、設計500は、コード化されたバンクに支援されてこれらの5つの読み出しを行なうことができる。コード領域IIの一番下のコーディングバンクからd1を読み出してもよく、ここで、これは、コード領域Iのオリジナルデータバンク由来の記憶されたd1、d6を有し、a9およびa9+d9を読み出してd9を取得してもよく、b15およびb15+d15を読み出してd15を取得してもよく、c20およびc20+d20を読み出してd20を取得してもよく、これらすべてはコード領域Iおよびその関連コーディングバンクに由来する。さらに、設計500は、キューを先読みして、さらなるアクセスのためにコーディングバンクからコードをプリフェッチするプリフェッチ機構を用いることができる。たとえば、プリフェッチングプログラムコードは、すべてのキュー由来のすべての未処理の読み出しコマンドおよび書き込みコマンドを解析して、最大データアクセスおよび最大コーディングバンクアクセスが並列に実行されるように、最適アクセスパターンを生成してもよい。これのために、読み出しおよび書き込み数を増やしてもよい。
表4は設計500の概要を示す。
表4
1バンクあたりのコード化された領域の割合=α
Figure 2018530034
1バンクに対して1クロックサイクルで最大5つの読み出し要求を扱うことができる。
図6は、一実施の形態に係る、インテリジェントコード化メモリシステムを実施する第3の設計600を示す。適宜、任意の上記および/もしくは下記の図ならびに/またはその説明に示されている実施の形態の任意の1つ以上に関して設計600を実施してもよい。ただし、当然のことながら、任意の所望の環境に関して設計600を実施してもよい。
図4/図5の設計400/500は、2/5のレートを実現する。設計600は1/2のレートを実現する。設計600には、図6に示されているように9つのデータバンクおよび9つのコーディングバンクが必要である。設計600はまた3という比較的高いローカリティを持つ。すなわち、設計600では、メモリコントローラが3つのデータエレメント中2つを「認識(know)」して3つ目をデコードすることが必要である。これはまた、1サイクルあたり、1バンクあたり4つの同時読み出しアクセスを実現し、1サイクルあたり、バンクあたり2つの同時書き込みアクセスを実現するのに有用である。設計600のメモリオーバヘッドは設計400/500と比較して小さい(正確にαである)。しかし、大きいローカリティのため、設計600にはより高い論理的複雑さがある。以下、この設計の事例を表5に記載する。
表5
a0、a1、a2およびa3などのバンクAについて4回読み出す:
○a0についてバンクAから1回読み出す
○バンクB、CおよびA+B+Cに対して1回読み出してb1、c1およびa1+b1+c1を取得しa1を求める
○バンクD、GおよびA+D+Gに対して1回読み出してd2、g2およびa2+d2+g2を取得しa2を求める
○バンクE、IおよびA+E+Iに対して1回読み出してe3、i3およびa3+e3+i3を取得しa3を求める
a0、a1およびa3などのバンクAに対して3回読み出し、b0などのバンクBに対して1回読み出す:
○a0についてバンクAから1回読み出す
○バンクD、GおよびA+D+Gに対して1回読み出してd1、g1およびa1+d1+g1を取得しa1を求める
○バンクE、IおよびA+E+Iに対して1回読み出してe2、i2、a2+e2+i2を取得しa2を求める
○バンクBに対して1回読み出してb0を取得する
a0、a1などのバンクAに対して2回読み出し、b0およびb1などのバンクBに対して2回読み出す:
○a0についてバンクAから1回読み出す
○バンクD、GおよびA+D+Gに対して1回読み出してd1、g1およびa1+d1+g1を取得しa1を求める
○b0についてバンクBから1回読み出す
○バンクE、HおよびB+E+Hに対して1回読み出してe1、h1およびe1+e1+h1を取得しb1を求める
a0およびa1などのバンクAに対して2回読み出し、b0としてのバンクBに対して1回読み出し、c0としてのバンクCについて1回読み出す:
○a0についてバンクAから1回読み出す
○バンクD、GおよびA+D+Gに対して1回読み出してd1、g1およびa1+d1+g1を取得しa1を求める
○b0についてバンクBから1回読み出す
○c0についてバンクCから1回読み出す
表6は設計600の概要を示す。
表6
1バンクあたりのコード化された領域の割合=α
Figure 2018530034
1つのバンクに対して1クロックサイクルで最大4つの読み出し要求を扱うことができる。
表7では、様々なパラメータおよび関連コストについて図4〜図6の設計実施の形態が比較される。
Figure 2018530034
図7は、一実施の形態に係る、図6の設計600を超える改良を含む設計700を示す。表8は設計700の概要を示す。
表8
1バンクあたりのコード化された領域の割合=α
Figure 2018530034
1つのバンクに対して1クロックサイクルで最大4つの読み出し要求を扱うことができる。
端的に説明すれば、様々な実施の形態で、コード化メモリシステムを実施して、圧縮形式でデータ冗長性をもたらすことができる。一実施の形態では、コード化されたデータは、オリジナルデータの数学的な組み合せであってもよい。データの互いに素の組み合せを用いてコードを取得することもできる。コードは、これらの互いに素の組み合せのサブセットを含んで、読み出しおよび書き込み保証をサポートすることもできる。一実施の形態では、コード構成を2セットに分けてもよい。たとえば、バンク間コーディングに関しては、m個のバンクからデータ値を取得することによってコードを構成してもよい。言い換えれば、2つのバンク、すなわちバンクAおよびバンクBがある場合、これらの2つのバンク由来のデータ値を加えることによってコードを構成してもよい。このコーディングは、バンクにわたってアクセスを分散させるのに有用である場合がある。他方、バンク内コーディングに関しては、同じバンク由来のデータ値を用いてコードを構成してもよい。たとえば、バンクAがa1〜anの値を持つ例では、a1+a2、a2+a3などのようにコードを構成してもよい。ここで、バンクは自己コード化され(self−coded)、データバンク毎にコードバンクが存在する。この場合、コードを、最良のレートがもたらされるように、所定のパターンで構成することができたり、ランダム性を持つ状態で構成することができたりする点に留意すべきである。たとえば、シーケンシャルにコード化する場合(a1+a2、a2+a3など)、一般的には、読み出しアクセス要求は、コードを使用するのにシーケンシャルでなければならない場合があるとされる。上記では、「+」符号は、関係する2つの項の間の排他的論理和演算を指す場合があるが、一般的には、これは、a1とa2との両方に関係する関数演算を表わす[たとえばFunc(a1、a2)など]。いくつかの実施の形態では、アドレス空間配置のランダム化(ASLR)システムの場合にもランダムなコードをサポートすることができる。
図8は1つの可能な実施の形態に係るネットワークアーキテクチャ800を示す。図示の通り、少なくとも1つのネットワーク802が設けられる。本ネットワークアーキテクチャ800に関しては、ネットワーク802は、インターネット、ピア・ツー・ピア・ネットワーク、ケーブルネットワークなどの、電気通信ネットワーク、ローカルエリアネットワーク(LAN)、無線ネットワーク、ワイドエリアネットワーク(WAN)を含むがこれらに限定されない任意の形態をとってもよい。1つのネットワークのみが示されているが、当然、2つ以上の同様の、または異なるネットワーク802が設けられてもよいと解する。
ネットワーク802には複数のデバイスが接続される。たとえば、サーバコンピュータ812およびエンドユーザコンピュータ808を通信目的でネットワーク802に接続してもよい。このようなエンドユーザコンピュータ808は、デスクトップコンピュータ、ラップトップコンピュータおよび/またはその他任意のタイプのロジックを含んでもよい。さらにまた、携帯情報端末(PDA)デバイス810、携帯電話デバイス806、テレビジョン受像器804などを含むその他様々なデバイスをネットワーク802に接続してもよい。
図9は一実施の形態に係る典型的なシステム900を示す。適宜、図8のネットワークアーキテクチャ800のデバイスのいずれに関してもシステム900を実施することができる。当然のことながら、任意の所望の環境でシステム900を実施してもよい。
図示の通り、バスなどの通信相互接続部912に接続されている少なくとも1つの中央プロセッサ901を含むシステム900が設けられている。システム900はメインメモリ904[たとえばランダムアクセスメモリ(RAM)など]も含む。システム900はグラフィックプロセッサ908およびディスプレイ910も含む。
システム900は2次記憶部906も含んでもよい。2次記憶部906は、たとえば、ハードディスクドライブおよび/またはフロッピーディスクドライブ、磁気テープドライブ、コンパクトディスクドライブなどを表わすリムーバブル記憶ドライブを含む。リムーバブル記憶ドライブは、よく知られた手法でリムーバブル記憶ユニットに対して読み出しおよび/または書き込みを行なう。
これに関して、コンピュータプログラムまたはコンピュータ制御ロジックアルゴリズムをメインメモリ904、2次記憶部906および/またはその他任意のメモリに記憶してもよい。このようなコンピュータプログラムにより、実行時に、システム900は様々な機能(たとえば上記に示されている機能)を発揮することができる。メモリ904、記憶部906および/またはその他任意の記憶部は非一時的コンピュータ可読媒体の可能な例である。
なお、一態様におけるここに記載されている技術は、コンピュータベースの、またはプロセッサを含むマシン、装置またはデバイスなどの指示実行マシン、装置またはデバイスによって用いられるか、これに関連して用いられるコンピュータ可読媒体に記憶される実行可能な指示において具体化される。いくつかの実施の形態については、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)などの、コンピュータによってアクセス可能なデータを記憶し得る他のタイプのコンピュータ可読媒体が含まれると当業者であれば考える。
本明細書で用いられているように、「コンピュータ可読媒体」は、指示実行マシン、システム、装置またはデバイスが、コンピュータ可読媒体からの指示を読み出し(すなわちフェッチし)、記載されている方法を行なう指示を実行するように、コンピュータプログラムの実行可能な指示を記憶する任意の好適な媒体の1つ以上を含む。好適な記憶フォーマットは、電子、磁気、光学、電磁気フォーマットの1つ以上を含む。従来の典型的なコンピュータ可読媒体の列挙例(網羅するものではない)には、ポータブルコンピュータフロッピディスク、RAM、ROM、消去可能プログラマブル読み出し専用メモリ(EPROMまたはフラッシュメモリ)、ポータブルコンパクトディスク(CD)、ポータブルデジタルビデオディスク(DVD)、ハイディフィニションDVD(HD−DVD(商標))、BLU−RAYディスクを含む光記憶デバイスなどが含まれる。
記載されている図に示されている構成要素の構成は典型的なものであり、他の構成が可能であると当然解する。下記の請求項によって定められ、様々なブロック図に示されている様々なシステム構成要素(および手段)が、本明細書で開示されている主題にしたがって構成されるいくつかのシステムにおける論理的構成要素を表わすとも当然解する。
たとえば、説明されている図に示されている構成中に示されている構成要素の少なくともいくつかによって、これらのシステム構成要素(および手段)の1つ以上の全体または一部を実現してもよい。さらに、これらの構成要素の少なくとも1つを、電子ハードウェア構成要素として少なくとも部分的に実施することでマシンを構成し、他の構成要素を、実行環境に含まれるときにマシン、ハードウェア、または、ソフトウェアとハードウェアとの組み合せを構成するソフトウェアで実施してもよい。
特に、請求項によって定めされている少なくとも1つの構成要素を、指示実行マシン(たとえば、プロセッサベースの、もしくはプロセッサを含むマシン)などの電子ハードウェア構成要素、および/または、専用小規模回路または専用回路(たとえば、専用機能を発揮するように相互接続された慎重な論理ゲート)として少なくとも部分的に実施する。他の構成要素を、ソフトウェア、ハードウェアまたはソフトウェアとハードウェアとの組み合せで実施してもよい。さらに、これらの他の構成要素の一部もしくは全部を組み合わせてもよく、いくつかは完全に省略してもよく、本明細書に記載されている機能をこの場合も実現する状態で追加構成要素を加えてもよい。したがって、本明細書に記載されている主題を多数の異なる変形例で具体化してもよく、すべてのこのような変形例は請求されるものの範囲内にあると考えられる。
上記の説明では、主題は、特に明記しない限り、1つ以上のデバイスによって行なわれる働きおよび動作の記号的表現に関して記載されている。したがって、場合によってはコンピュータ実行が行なわれるものとして記述されているこのような働きおよび動作は、構造化形式のデータのプロセッサによる操作を含むと解する。この操作によりデータが変換されたり、コンピュータのメモリシステム中の適所で管理されたりし、そのデータによって、当業者によって十分に理解される手法でデバイスの動作の再構成またはその他変更が行なわれる。データは、データのフォーマットによって定められる特定の特性を持つデータ構造としてメモリの物理的な位置で管理される。ただし、主題は上記に関して説明されているが、以下に記載されている働きおよび動作の多様化例をハードウェアでも実行し得ると当業者であれば考えるので、これは限定するものであることを意味しない。
本明細書に記載されている主題の理解を容易にするために、多くの態様では、作用の連続という観点で記載されている。請求項によって定めされているこれらの態様の少なくとも1つは電子ハードウェア構成要素によって実行される。たとえば、様々な作用が専用小規模回路または専用回路によって実行されてもよいし、1つ以上のプロセッサによって実行されているプログラム指示によって実行されてもよいし、両方の組み合せによって実行されてもよいことが分かる。作用の任意の連続についての本明細書中の説明は、その連続物を実行するための記載されている特定の順序をたどらなければならないことを意味することを意図しない。本明細書に特に明記しない限りまたは文意によって明確に否定されない限り、本明細書に記載されているすべての方法を任意の適当な順序で実行してもよい。
たとえば、一実施の形態では、データを記憶する第1のメモリ手段と、第2のメモリ手段と、第1のメモリ手段および第2のメモリ手段と通信する回路手段とを含む装置が開示されている。この回路は、第1のメモリに記憶されているデータのサブセットを特定し、第1のメモリに記憶されているデータのサブセットを処理してコードを生成し、データの少なくとも一部を再構築するのに用いるために、コードを第2のメモリに記憶するために構成することができる。
別の実施の形態では、第1のメモリ手段に記憶されているデータのサブセットを特定するステップと、第1のメモリ手段に記憶されているデータのサブセットを処理してコードを生成するステップと、データの少なくとも一部を再構築するのに用いるために、コードを第2のメモリ手段に記憶するステップとを含む方法が開示されている。
さらに別の実施の形態では、第1のメモリ手段に記憶されているデータのサブセットを特定するコードと、第1のメモリ手段に記憶されているデータのサブセットを処理してコードを生成するコードと、データの少なくとも一部を再構築するのに用いるために、コードを第2のメモリ手段に記憶するコードとを含む、非一時的コンピュータ可読媒体上で具体化されるコンピュータプログラム製品が開示されている。
主題の記載に関する(特に以下の請求項に関する)用語「前記」を使用することおよび「前記」を使用しないこと(The use of the terms“a”and“an”and“the”)および同様の指示物を使用することは、本明細書に特に明記しない限りまたは文意によって明確に否定されない限り、単数と複数との両方をカバーするものと解釈することにしている。本明細書中の値の範囲の記載は、本明細書に特に明記しない限り、この範囲に含まれる各個別の値を個々に指す省略表現法として用いられることを単に意図するだけであり、各個別の値は、これが本明細書において個々に記載されるように、本明細書に含まれる。さらにまた、上記の説明は例示目的に限られ、限定目的でではなく、求められる保護の範囲は、権利が与えられる請求項の均等物とともに、以下に示されている請求項によって定められる。一切の例または本明細書で設けられている例示語(たとえば、「など(such as)」)の使用は、単によりよく主題を示すことのみを意図しており、特に請求されない限り、主題の範囲に限定を課さない。請求項と明細書との両方における結果をもたらす条件を示す用語「に基づく(based on)」およびその他同様の句の使用は、その結果をもたらすその他任意の条件を除外することを意図しない。本明細書中の言葉は、請求された発明の実施にとって必須である任意の請求されていない要素を示すものとして解釈すべきではない。
本明細書に記載されている実施の形態は、請求された主題を実施するための発明者に知られている1つ以上のモードを含んだ。当然のことながら、それらの実施の形態の変形例は、上記の記載を読めば、当業者に明らかになる。発明者は当業者がこのような変形例を適宜使用することを期待しており、発明者は請求されている主題が本明細書に特に記載されているのとは異なるように実施されることを意図する。したがって、この請求されている主題は、準拠法によって許容されるように本明細書に追記される請求項に示されている主題のすべての修正および均等物を含む。さらに、本明細書に特に明記しない限りまたは文意によって明確に否定されない限り、そのすべての可能な変形例の上記の要素の任意の組み合せが含まれる。
100 方法
200 インテリジェントコード化メモリシステム
202 第1のメモリ
204 第2のメモリ
206 メモリコントローラ
210 第1のスケジューラ
212 コード生成器
214 第2のスケジューラ
216 CPU
218 DSP
220 HAC
300 方法
400 第1の設計
500 第2の設計
600 第3の設計
700 改良を含む設計
800 ネットワークアーキテクチャ
802 ネットワーク
804 テレビジョン受像器
806 携帯電話デバイス
808 エンドユーザコンピュータ
810 携帯情報端末(PDA)デバイス
812 サーバコンピュータ
900 システム
901 中央プロセッサ
904 メインメモリ
906 2次記憶部
908 グラフィックプロセッサ
910 ディスプレイ
912 通信相互接続部

Claims (23)

  1. データを記憶する第1のメモリと、
    第2のメモリと、
    前記第1のメモリおよび第2のメモリと通信する回路と
    を備えており、前記回路は、
    前記第1のメモリに記憶されている前記データのサブセットを特定し、
    前記第1のメモリに記憶されている前記データの前記サブセットを処理してコードを生成し、
    前記データの少なくとも一部を再構築するのに用いるために、前記コードを前記第2のメモリに記憶する
    ために構成されている、
    装置。
  2. 前記回路は、前記第1のメモリにおいてバンクコンフリクトにより利用可能でないデータが再構築されるように構成されている、請求項1に記載の装置。
  3. 前記第2のメモリは、前記第1のメモリとは別々のものまたは前記第1のメモリの構成要素のうちの少なくとも1つである、請求項1または2に記載の装置。
  4. 前記回路はメモリコントローラの構成要素である、請求項1から3のいずれか一項に記載の装置。
  5. 前記回路は、前記コードが、前記データの前記サブセットとともに前記第2のメモリに記憶されるようにさらに構成されている、請求項1から4のいずれか一項に記載の装置。
  6. 前記回路は、前記データの前記サブセットが、リアルタイムで前記データの前記サブセットに関連する複数の要求に基づいて特定されるようにさらに構成されている、請求項1から5のいずれか一項に記載の装置。
  7. 前記回路は、前記データの前記サブセットが、フローを利用することによって特定され、かつ前記フローを利用して前記データの前記サブセットが処理されてメモリコントローラによって前記コードが生成されるようにさらに構成されている、請求項1から6のいずれか一項に記載の装置。
  8. 前記回路は、前記データの前記サブセットが、前記データの前記サブセットに関連する要求に基づいて特定されるようにさらに構成されている、請求項1から7のいずれか一項に記載の装置。
  9. 前記回路は、前記要求が、メモリコントローラの外部のスケジューラによって特定されるようにさらに構成されている、請求項8に記載の装置。
  10. 前記回路は、前記データの前記サブセットが、前記要求の処理と同時に少なくとも部分的に処理されるようにさらに構成されている、請求項8に記載の装置。
  11. 前記回路は、前記データの前記サブセットに関連する要求に関連づけられている情報を含むメッセージを受けるためにさらに構成されており、前記データの前記サブセットは、前記情報に基づいて特定される、請求項1から10のいずれか一項に記載の装置。
  12. 前記回路は、前記第1のメモリが複数のアクセスについてスケジューリングされるか否かを判断するためにさらに構成されている、請求項1から10のいずれか一項に記載の装置。
  13. 前記回路は、前記第1のメモリが複数のアクセスについてスケジューリングされるか否かに基づいて前記データの前記サブセットが条件に応じて処理されるようにさらに構成されている、請求項12に記載の装置。
  14. 前記回路は、前記第2のメモリの容量が前記コードの前記記憶に対応することができるか否かを判断するためにさらに構成されている、請求項1から13のいずれか一項に記載の装置。
  15. 前記回路は、前記第2のメモリの前記容量が前記コードの前記記憶に対応することができるか否かの前記判断に基づいて前記第2のメモリの少なくとも一部がクリアされるようにさらに構成されている、請求項14に記載の装置。
  16. 前記回路は、前記第2のメモリの準備が前記コードの前記記憶に対応することに対して整っているか否かを判断するためにさらに構成されている、請求項1から14のいずれか一項に記載の装置。
  17. 前記回路は、前記第2のメモリの前記準備が前記コードの前記記憶に対応することに対して整っているか否かの前記判断に基づいて前記コードの前記記憶が開始されるようにさらに構成されている、請求項16に記載の装置。
  18. 前記回路は、第1のバンクの第1のデータと、第2のバンクの第2のデータとに関連する1つ以上の機能を発揮するために前記コードが使用可能であるように、前記データの前記サブセットが、前記第1のメモリの前記第1のバンクの前記第1のデータと、前記第1のメモリの前記第2のバンクの前記第2のデータとを含むようにさらに構成されている、請求項1から17のいずれか一項に記載の装置。
  19. 前記回路は、第1のバンクの第1のデータと、第2のバンクの第2のデータと、第3のバンクの第3のデータとに関連する1つ以上の機能を発揮するために前記コードが使用可能であるように、前記データの前記サブセットが、前記第1のメモリの前記第1のバンクの前記第1のデータと、前記第1のメモリの前記第2のバンクの前記第2のデータと、前記第1のメモリの前記第3のバンクの前記第3のデータとを含むようにさらに構成されている、請求項1から18のいずれか一項に記載の装置。
  20. 前記装置は、前記コードが、前記第1のメモリの任意のバンクから1つ以上のデータアイテムを用いることに関連する1つ以上の機能を発揮するために使用可能であるように構成されている、請求項1から19のいずれか一項に記載の装置。
  21. 前記装置は、バンクに関連する複数の同時読み出し動作を再構築するために動作可能である、請求項1から20のいずれか一項に記載の装置。
  22. 第1のメモリに記憶されているデータのサブセットを特定するステップと、
    前記第1のメモリに記憶されている前記データの前記サブセットを処理してコードを生成するステップと、
    前記データの少なくとも一部を再構築するのに用いるために、前記コードを第2のメモリに記憶するステップと
    を備える方法。
  23. 第1のメモリに記憶されているデータのサブセットを特定するコードと、
    前記第1のメモリに記憶されている前記データの前記サブセットを処理してコードを生成するコードと、
    前記データの少なくとも一部を再構築するのに用いるために、前記コードを第2のメモリに記憶するコードと
    を備える、非一時的コンピュータ可読媒体上で具体化されるコンピュータプログラム製品。
JP2018504225A 2015-07-28 2016-07-27 メモリのためのインテリジェントコード装置、方法およびコンピュータプログラム Active JP6555841B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/811,763 US9760432B2 (en) 2015-07-28 2015-07-28 Intelligent code apparatus, method, and computer program for memory
US14/811,763 2015-07-28
PCT/CN2016/091925 WO2017016489A1 (en) 2015-07-28 2016-07-27 Intelligent code apparatus, method, and computer program for memory

Publications (2)

Publication Number Publication Date
JP2018530034A true JP2018530034A (ja) 2018-10-11
JP6555841B2 JP6555841B2 (ja) 2019-08-07

Family

ID=57882668

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018504225A Active JP6555841B2 (ja) 2015-07-28 2016-07-27 メモリのためのインテリジェントコード装置、方法およびコンピュータプログラム

Country Status (5)

Country Link
US (1) US9760432B2 (ja)
EP (1) EP3317765B1 (ja)
JP (1) JP6555841B2 (ja)
CN (1) CN107851048B (ja)
WO (1) WO2017016489A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9921754B2 (en) 2015-07-28 2018-03-20 Futurewei Technologies, Inc. Dynamic coding algorithm for intelligent coded memory system

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60108944A (ja) * 1983-11-17 1985-06-14 Toshiba Corp 記憶装置
JPH11102326A (ja) * 1997-09-29 1999-04-13 Nec Kofu Ltd 記憶装置
JPH11327796A (ja) * 1998-05-11 1999-11-30 Toshiba Corp ディスクアレイ制御装置及び同装置に適用されるキャッシュ制御方法
US20070168702A1 (en) * 2005-11-15 2007-07-19 Dickenson Marc A Method, system and computer program product for recovery of formatting in repair of bad sectors in flash memory
US20070168700A1 (en) * 2005-11-15 2007-07-19 Dickenson Marc A Method, system and computer program product for recovery of formatting in repair of bad sectors in disk drives
JP2012059337A (ja) * 2010-09-13 2012-03-22 Renesas Electronics Corp 半導体記憶装置
JP2012507104A (ja) * 2008-10-28 2012-03-22 マイクロン テクノロジー, インク. 複数の半導体メモリユニットにおけるエラー訂正
US20120084506A1 (en) * 2010-10-01 2012-04-05 John Colgrove Distributed multi-level protection in a raid array based storage system
JP2012513060A (ja) * 2008-12-19 2012-06-07 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. 均一な読み出し待ち時間のための冗長なデータ記憶
JP2013539132A (ja) * 2010-09-28 2013-10-17 ピュア・ストレージ・インコーポレイテッド Ssd環境のための適応的raid

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2273181A (en) 1992-12-02 1994-06-08 Ibm Cache/non-cache access control.
US6341342B1 (en) * 1997-11-04 2002-01-22 Compaq Information Technologies Group, L.P. Method and apparatus for zeroing a transfer buffer memory as a background task
US6385708B1 (en) 1998-11-16 2002-05-07 Infineon Technologies Ag Using a timing-look-up-table and page timers to determine the time between two consecutive memory accesses
JP4712214B2 (ja) * 2001-04-09 2011-06-29 富士通セミコンダクター株式会社 半導体メモリの動作制御方法および半導体メモリ
US6757784B2 (en) 2001-09-28 2004-06-29 Intel Corporation Hiding refresh of memory and refresh-hidden memory
CN101578614A (zh) 2007-01-30 2009-11-11 松下电器产业株式会社 非易失性存储装置、非易失性存储系统及存取装置
US8209504B2 (en) 2007-01-30 2012-06-26 Panasonic Corporation Nonvolatile memory device, nonvolatile memory system, and access device having a variable read and write access rate
US20090100236A1 (en) 2007-10-15 2009-04-16 Ricardo Spencer Puig Copying data onto a secondary storage device
CN100499556C (zh) 2007-10-17 2009-06-10 中国人民解放军国防科学技术大学 异构多核处理器高速异步互连通信网络
CN101196857B (zh) 2008-01-04 2010-11-10 太原理工大学 双端口访问对称动态存储器的接口
US7945752B1 (en) * 2008-03-27 2011-05-17 Netapp, Inc. Method and apparatus for achieving consistent read latency from an array of solid-state storage devices
US8074021B1 (en) * 2008-03-27 2011-12-06 Netapp, Inc. Network storage system including non-volatile solid-state memory controlled by external data layout engine
GB2463078B (en) * 2008-09-02 2013-04-17 Extas Global Ltd Distributed storage
US8266408B2 (en) 2009-03-17 2012-09-11 Memoir Systems, Inc. System and method for storing data in a virtualized high speed memory system
US9442846B2 (en) 2009-03-17 2016-09-13 Cisco Technology, Inc. High speed memory systems and methods for designing hierarchical memory systems
BRPI0925055A2 (pt) 2009-06-26 2015-07-28 Intel Corp "otimizações para um sistema de memória transacional ilimitada (utm)"
CN101763437B (zh) * 2010-02-10 2013-03-27 华为数字技术(成都)有限公司 高速缓冲存储实现方法及装置
US8463991B2 (en) * 2010-09-28 2013-06-11 Pure Storage Inc. Intra-device data protection in a raid array
CN103534693B (zh) 2010-11-22 2016-08-24 马维尔国际贸易有限公司 在客户端之间共享对存储器的访问的方法和设备
US9104327B2 (en) 2011-05-17 2015-08-11 Sandisk Technologies Inc. Fast translation indicator to reduce secondary address table checks in a memory device
US9158924B2 (en) 2011-05-25 2015-10-13 Panasonic Intellectual Property Management Co., Ltd. Information processing apparatus and information processing method
WO2012172683A1 (ja) 2011-06-17 2012-12-20 富士通株式会社 演算処理装置、情報処理装置および演算処理装置の制御方法
US8982598B2 (en) 2012-04-18 2015-03-17 Rambus Inc. Stacked memory device with redundant resources to correct defects
US8874979B2 (en) 2012-06-14 2014-10-28 International Business Machines Corporation Three dimensional(3D) memory device sparing
US8909860B2 (en) 2012-08-23 2014-12-09 Cisco Technology, Inc. Executing parallel operations to increase data access performance
US9141534B2 (en) 2012-12-14 2015-09-22 Sandisk Technologies Inc. Tracking read accesses to regions of non-volatile memory
CN103077123A (zh) 2013-01-15 2013-05-01 华为技术有限公司 一种数据写入和读取方法及装置
US20160313923A1 (en) * 2015-04-22 2016-10-27 Mediatek Inc. Method for accessing multi-port memory module and associated memory controller
US10180803B2 (en) 2015-07-28 2019-01-15 Futurewei Technologies, Inc. Intelligent memory architecture for increased efficiency
US10437480B2 (en) 2015-12-01 2019-10-08 Futurewei Technologies, Inc. Intelligent coded memory architecture with enhanced access scheduler

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60108944A (ja) * 1983-11-17 1985-06-14 Toshiba Corp 記憶装置
JPH11102326A (ja) * 1997-09-29 1999-04-13 Nec Kofu Ltd 記憶装置
JPH11327796A (ja) * 1998-05-11 1999-11-30 Toshiba Corp ディスクアレイ制御装置及び同装置に適用されるキャッシュ制御方法
US20070168702A1 (en) * 2005-11-15 2007-07-19 Dickenson Marc A Method, system and computer program product for recovery of formatting in repair of bad sectors in flash memory
US20070168700A1 (en) * 2005-11-15 2007-07-19 Dickenson Marc A Method, system and computer program product for recovery of formatting in repair of bad sectors in disk drives
JP2012507104A (ja) * 2008-10-28 2012-03-22 マイクロン テクノロジー, インク. 複数の半導体メモリユニットにおけるエラー訂正
JP2012513060A (ja) * 2008-12-19 2012-06-07 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. 均一な読み出し待ち時間のための冗長なデータ記憶
JP2012059337A (ja) * 2010-09-13 2012-03-22 Renesas Electronics Corp 半導体記憶装置
JP2013539132A (ja) * 2010-09-28 2013-10-17 ピュア・ストレージ・インコーポレイテッド Ssd環境のための適応的raid
US20120084506A1 (en) * 2010-10-01 2012-04-05 John Colgrove Distributed multi-level protection in a raid array based storage system

Also Published As

Publication number Publication date
US20170031762A1 (en) 2017-02-02
EP3317765A4 (en) 2018-06-27
CN107851048B (zh) 2020-04-03
US9760432B2 (en) 2017-09-12
WO2017016489A1 (en) 2017-02-02
CN107851048A (zh) 2018-03-27
EP3317765A1 (en) 2018-05-09
JP6555841B2 (ja) 2019-08-07
EP3317765B1 (en) 2020-01-01

Similar Documents

Publication Publication Date Title
US9921847B2 (en) Tree-based thread management
CN104756090B (zh) 提供扩展的缓存替换状态信息
US10877757B2 (en) Binding constants at runtime for improved resource utilization
US9710306B2 (en) Methods and apparatus for auto-throttling encapsulated compute tasks
US10203878B2 (en) Near memory accelerator
US9606808B2 (en) Method and system for resolving thread divergences
US20140109102A1 (en) Technique for improving performance in multi-threaded processing units
US9626216B2 (en) Graphics processing unit sharing between many applications
US9229717B2 (en) Register allocation for clustered multi-level register files
JP4931828B2 (ja) ライン・アクセスおよびワード・アクセスの結合を用いてメモリをアクセスするためのシステムおよび方法
CN113590508B (zh) 动态可重构的内存地址映射方法及装置
US11487342B2 (en) Reducing power consumption in a neural network environment using data management
JP2022037900A (ja) 圧縮データ・ストリームの並列展開
WO2023125016A1 (zh) 平面编程方法及其闪存设备
JP6555841B2 (ja) メモリのためのインテリジェントコード装置、方法およびコンピュータプログラム
CN114008589A (zh) 用于在顺序处理器上进行多次执行的动态代码加载
US11494237B2 (en) Managing workloads of a deep neural network processor
JP7377869B2 (ja) グラフィックスプロセッシングユニットでのパイプライン化された行列乗算
US20160055005A1 (en) System and Method for Page-Conscious GPU Instruction
CN116741197A (zh) 多模态图像生成方法、装置、存储介质及电子设备
US9830161B2 (en) Tree-based thread management
ES2738883T3 (es) Aparato y método de cuantificación vectorial de envolventes de frecuencia
JP2023503034A (ja) パターンベースのキャッシュブロック圧縮
WO2015004571A1 (en) Method and system for implementing a bit array in a cache line
US20150006090A1 (en) String sequencing with multiple search stages

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190304

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190604

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190617

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190708

R150 Certificate of patent or registration of utility model

Ref document number: 6555841

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250