JP6378325B2 - 非対称な記憶容量を有する複数チャネルメモリアーキテクチャにわたってデータを均一にインターリーブするためのシステムおよび方法 - Google Patents

非対称な記憶容量を有する複数チャネルメモリアーキテクチャにわたってデータを均一にインターリーブするためのシステムおよび方法 Download PDF

Info

Publication number
JP6378325B2
JP6378325B2 JP2016518727A JP2016518727A JP6378325B2 JP 6378325 B2 JP6378325 B2 JP 6378325B2 JP 2016518727 A JP2016518727 A JP 2016518727A JP 2016518727 A JP2016518727 A JP 2016518727A JP 6378325 B2 JP6378325 B2 JP 6378325B2
Authority
JP
Japan
Prior art keywords
memory
channel
storage capacity
memory space
data
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.)
Expired - Fee Related
Application number
JP2016518727A
Other languages
English (en)
Other versions
JP2016532926A5 (ja
JP2016532926A (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 JP2016532926A publication Critical patent/JP2016532926A/ja
Publication of JP2016532926A5 publication Critical patent/JP2016532926A5/ja
Application granted granted Critical
Publication of JP6378325B2 publication Critical patent/JP6378325B2/ja
Expired - Fee Related 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1647Handling requests for interconnection or transfer for access to memory bus based on arbitration with interleaved bank access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1657Access to multiple memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller

Description

本発明は、非対称な記憶容量を有する複数チャネルメモリアーキテクチャにわたってデータを均一にインターリーブするためのシステムおよび方法に関する。
コンピューティングデバイスが至る所に存在する。これらのデバイスは、ポータブルコンピュータ、デスクトップコンピュータおよびサーバコンピュータ、ならびに種々のサイズの他のデバイスを含む場合がある。これらのデバイスの主要機能に加えて、多くは周辺機能を含む。たとえば、携帯電話は、携帯電話による通話を可能にし、サポートするという主要機能と、スチールカメラ、ビデオカメラ、全地球測位システム(GPS)ナビゲーション、ウェブブラウジング、電子メールの送受信、テキストメッセージの送受信、プッシュツートーク機能などの周辺機能とを含む場合がある。そのようなデバイスの機能が増加するにつれて、そのような機能をサポートするために必要な計算能力または処理能力、およびデータ記憶能力も増大する。
いくつかの従来のコンピューティングデバイス設計は、特定のコンピューティングデバイスに対して望まれる種々の主要機能および周辺機能をサポートするために、複数のプロセッサ、および/または複数のコアを備えるプロセッサを含む。高い計算能力および速いプロセッサ速度の場合に、プロセッサおよび/またはプロセッサコアとシステムメモリとの間で生じる可能性があるボトルネックを最小化するために、複数の技法が開発されてきた。1つの手法は、各クロックサイクル内でランダムアクセスメモリ要素と2回データを交換する集積回路アーキテクチャを含む。たとえば、ダブルデータレート(DDR)ランダムアクセスメモリ(RAM)モジュールは、これらのデータ交換をサポートする。この手法を用いる場合であっても、複数のプロセッサおよび/または複数のコアを備える今日のシステムは、従来のメモリモジュールのデータ転送速度を超えるクロック速度において動作する。他の手法は、付加的なメモリチャネルを追加することを含む。2つのメモリチャネルを含むシステムは、利用可能なメモリ帯域幅を2倍にすることによって問題を軽減するのを助けることができる。RAMモジュールにデータを書き込むとき、およびRAMモジュールからデータを読み出すときに生じる可能性があるデータ転送ボトルネックを軽減するために、2つのチャネルがメモリコントローラによって同時に使用される。
各メモリチャネルが、等しい記憶容量を有し、同様に構成された(すなわち、同等の能力を有する)メモリモジュールと通信するとき、コントローラは、メモリバスによってサポートされる最大データ速度においてメモリ空間に、およびメモリ空間からデータを転送できるだけでなく、メモリ空間内の任意の未使用および所望のロケーションにアプリケーションプログラムまたはデータファイルを配置するために、メモリコントローラがメモリ空間全体を利用することができる。したがって、利用可能なアドレス空間にわたってデータを均一にインターリーブすること、または分散させることが望ましい。
従来のデータインターリーブ方式の場合、インターリーバが、サポートされる最大データ転送速度においてメモリモジュールにアクセスするために、メモリモジュールの記憶容量は同じでなければならない。メモリモジュール製造業者が一定の記憶容量を有する集積回路を提供するとき、これは一般的に問題ではない。コンピューティングデバイスの製造業者が、メモリモジュールを対で展開し、各対が同じ記憶容量を有する限り、各メモリチャネルによってアクセス可能な記憶容量は同じである。
しかしながら、コンピューティングデバイス製造業者は、市販のメモリモジュールの最小記憶容量の倍数でないシステムメモリ容量を提供したいという望みを明らかにしている。これは、市販のメモリモジュールを使用するのを、および2つ以上のメモリチャネルにわたって対称な容量で同じものを配置するのを不可能にする。たとえば、製造業者が768Mバイトのシステムメモリ容量を望んでおり、利用可能な最も小さなメモリモジュール容量が256Mバイトである場合には、製造業者は、3つのメモリモジュールを配置することによって、望まれる全メモリ容量を達成することができる。しかしながら、3つのモジュールのうちの2つしか、別々のメモリチャネルにわたって対称に配置することができない。
非対称なメモリ容量は、全メモリ容量のうちの第1の部分が、従来のインターリーブ機能を用いてアクセスすることができる全メモリ容量の第2の部分のデータ速度より遅いデータ速度においてインターリーブすることなくアクセスすることしかできない構成を提示する。そのような構成は、どの機能およびアプリケーションが非インターリーブ(すなわち、遅い)データアクセスによって十分にサポートすることができるかを特定するために、オペレーティングシステムおよび/またはアプリケーションプロバイダに厄介な問題を提起する。
したがって、非対称なメモリ容量をサポートする、メモリチャネル間のデータ転送速度を最適化するための改善された機構が必要とされている。
複数チャネルメモリアーキテクチャによってサポートされるメモリ空間が、複数のチャネルにわたって不均一なデータ記憶容量を登録される(populated)時点を特定するシステムおよび方法が開示される。それに応答して、等しい記憶容量の複数の仮想セクタが特定される。その後、メモリ空間へのデータアクセスを仮想セクタに分散させるために、インターリーブ機能が用いられる。
例示的な実施形態は、プロセッサおよびシステムメモリと通信するように配置されるインターリーバを備えるコンピューティングデバイスを含む。インターリーバは、システムメモリにおいてメモリ空間内のロケーションを特定する。メモリ空間は、少なくとも2つの物理チャネルによってサポートされ、各物理チャネルに結合される少なくとも1つのメモリモジュールを含む。メモリ空間は、物理チャネルにわたって分散する不均一な記憶容量を有する。インターリーバは、所望の記憶容量を有する仮想セクタを特定するロジックに応答する。動作時に、インターリーバは、メモリ空間へのアクセス要求に応答して、非対称な記憶容量に、仮想セクタにわたって均一にアクセスする。
1つの例示的な実施形態はコンピューティングデバイスであり、そのコンピューティングデバイスは、メモリ空間が複数チャネルメモリアクセスアーキテクチャにわたって不均一な記憶容量で構成される時点を特定し、メモリ空間内の所望の記憶容量の複数の仮想セクタをさらに特定し、メモリ空間へのアクセス要求に応答して、仮想セクタに均一にアクセスするインターリーブ機能を適用する機構を含む。
別の例示的な実施形態は、不均一な記憶容量を有するメモリ空間の物理チャネルにわたってメモリアクセスを均一にインターリーブするための方法である。本方法は、複数チャネルメモリアーキテクチャが、複数のチャネルにわたって非対称な記憶容量を与えられる時点を特定するステップと、等しい容量の複数の仮想セクタを特定するステップと、メモリ空間へのアクセス要求に応答して、非対称な記憶容量に、仮想セクタにわたって均一にアクセスするインターリーバを介してインターリーブ機能を適用するステップとを含む。
別の例示的な実施形態は、プロセッサ命令およびデータを記憶している非一時的コンピュータ可読媒体であり、その命令は、プロセッサに、複数チャネルメモリアーキテクチャが現在、複数のチャネルにわたって非対称な記憶容量を与えるメモリモジュールを登録されるという指示を受信し、指示に応答して、等しい容量の複数の仮想セクタを特定し、メモリ空間へのアクセス要求に応答して、非対称な記憶容量に、仮想セクタにわたって均一にアクセスするインターリーブ機能を適用するように指示する。
図面では、別段の指示がない限り、種々の図面全体を通して、同じ参照番号が同じ部分を指している。「102A」または「102B」などの文字指定を伴う参照番号について、文字指定は、同じ図内に存在する2つの同様の部分または要素を区別することができる。参照番号がすべての図において同じ参照番号を有するすべての部分を包含することを意図するとき、参照番号に対する文字指定は省略される場合がある。
コンピューティングデバイスの例示的な実施形態を示す概略図である。 対称なメモリ容量を有する図1のコンピューティングデバイスの例示的な実施形態を示す概略図である。 非対称なシステムメモリ容量を有する図2のコンピューティングデバイスを示す概略図である。 2つの物理チャネルにわたって1:2の比で分散する仮想セクタのセットを有する、図1のコンピューティングデバイスの例示的な実施形態の概略図である。 異なるデータ転送速度において動作する2つの物理チャネルにわたって1:2の比で分散する仮想セクタのセットを有する、図1のコンピューティングデバイスの例示的な実施形態の概略図である。 異なるデータ転送速度において動作する2つの物理チャネルにわたって2:3の比で分散する相対的に大きな仮想セクタのセットを有する、図5のコンピューティングデバイスの例示的な実施形態の概略図である。 対称に登録されるメモリ空間の等価データ帯域幅を達成するために、異なる2つのデータ転送速度において動作する4つの物理チャネルにわたって1:2:2:2の比で分散する代替の仮想セクタのセットを有する、コンピューティングデバイスの例示的な実施形態の概略図である。 不均一な記憶容量を有するメモリ空間の物理チャネルにわたってメモリアクセスを均一にインターリーブするための方法の例示的な実施形態を示す流れ図である。
「例示的」という言葉は、「一例、事例、または例示として役立つ」ことを意味するように本明細書において使用される。「例示的な」として本明細書で説明するいずれの態様も、必ずしも他の態様よりも好ましいか、または有利であると解釈されるべきではない。
本明細書において、「アプリケーション」という用語は、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなどの実行可能なコンテンツを有するファイルも含むことができる。さらに、本明細書において参照される「アプリケーション」は、開くことが必要な場合があるドキュメント、またはアクセスされる必要がある他のデータファイルなどの、本質的に実行可能ではないファイルも含むことができる。
「コンテンツ」という用語は、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなどの実行可能なコンテンツを有するファイルも含む場合がある。さらに、本明細書において参照される「コンテンツ」は、開くことが必要な場合があるドキュメント、またはアクセスされる必要がある他のデータファイルやデータ値などの、本質的に実行可能ではないファイルも含むことができる。
本説明において使用されるときに、「構成要素」、「データベース」、「モジュール」、「システム」などの用語は、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかである、コンピュータ関連のエンティティを指すことを意図している。たとえば、構成要素は、限定はしないが、プロセッサ上で実行されているプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、および/またはコンピュータとすることができる。例として、コンピューティングデバイス上で実行されているアプリケーションとコンピューティングデバイスの両方を、構成要素とすることができる。1つまたは複数の構成要素は、プロセスおよび/または実行スレッド内に存在する場合があり、構成要素は、1つのコンピュータに局在する場合があり、および/または、2つ以上のコンピュータ間に分散する場合がある。さらに、これらの構成要素は、そこに記憶される種々のデータ構造を有する種々のコンピュータ可読媒体から実行することができる。構成要素は、1つまたは複数のデータパケット(たとえば、信号を用いて、ローカルシステム内、分散システム内の別の構成要素とやりとりし、および/または、インターネットなどのネットワークにわたって他のシステムとやりとりする1つの構成要素からのデータ)を有する信号に従うなどして、ローカルプロセスおよび/またはリモートプロセスを用いて通信することができる。
本説明において、「ポータブルコンピューティングデバイス」(“PCD”)という用語は、バッテリおよび/またはキャパシタなどの、限られた容量の充電式電源で動作する任意のデバイスを説明するために使用される。充電式電源を備えるPCDは、数十年にわたって使用されてきたが、第3世代(“3G”)および第4世代(“4G”)のワイヤレス技術の出現に結び付けられる、充電式バッテリにおける技術的な進歩により、複数の能力を有する数多くのPCDが可能になった。したがって、PCDは、数ある中でも、携帯電話、衛星電話、ページャ、PDA、スマートフォン、ナビゲーションデバイス、スマートブックすなわちリーダ、メディアプレーヤ、上述のデバイスの組合せ、ワイヤレス接続を有するラップトップコンピュータまたはタブレットコンピュータとすることができる。
インターリーブ機能は、複数の物理チャネルにわたって展開されるメモリモジュールの種々の構成をサポートするように構成することができる。均一にインターリーブされたメモリ空間は、各物理チャネルが同じ記憶容量に結合されるときにインターリーブすることなく可能であるデータ転送速度より、遅いデータ転送速度におけるメモリアクセスをサポートする。
特定の条件下で、遅いデータ転送速度または狭いメモリアクセス帯域幅でも、所望のシステム性能を満たすか、または超えるのに十分な場合がある。別の状況では、複数の物理チャネルにわたって均一な記憶容量の場合に可能であるメモリアクセス帯域幅を達成することが望まれるとき、対称に構成されるメモリ空間の等価メモリアクセス帯域幅を達成するために、あるアルゴリズム手法が、インターリーブ機能と組み合わせて実施される。
メモリ空間が、同じデータ記憶容量を有するN(整数)個のメモリモジュールを登録されるとき、拡散機能が、インターリーバに、仮想セクタにわたってデータアクセスを分散させるように指示する。MOD機能のような例示的なインターリーブ機能をインターリーバにおいて展開することができる。たとえば、全部で192メモリワードをマッピングするためアドレスA[7:0]を3チャネルにわたって拡散させるために、各チャネルが、それぞれ64メモリワードをマッピングする、6ビットアドレス範囲[5:0]を有する場合、A[7:0]MOD3の結果を用いて、チャネルを選択することができる。それゆえ、各チャネルは、A[7:0]の192の取り得る有効アドレスパターンの3分の1を、インターリーブされるようにして厳密に受信することになる。(アドレス193〜255は、メモリが登録されないので、無効アドレスパターンであることに留意されたい)。その際、5ビットチャネル内アドレス指定機能A0、A1、A2のセットを規定して、各チャネル内のメモリロケーションを選択することができる。各チャネル内で取り得るA[7:0]の64メモリロケーションのサブセットは既知であるので、標準的な論理設計および最小化技法を用いる当業者は、これらの64アドレスを各チャネル内の64の固有メモリロケーションにマッピングする類似のチャネル内アドレス指定機能を設計することができる。
実際のインターリーブ機能は、標準的な論理設計および最小化技法を用いる単一のステージとして設計することができるが、別の例では、複数の概念的な過程を介して仮想セクタにわたってデータを分散させるインターリーブ機能が適用される場合がある。4チャネルメモリアーキテクチャの単一のチャネルから取り出された2つのメモリモジュールを用いる例示的な構成では、所望の数のビット/バイトが、複数の世代にわたってラウンドロビン方式で、登録される3つのチャネルを介して記憶される。ビット/バイトの第1の部分は、第1のチャネルに結合されるメモリモジュール内の指定された記憶ロケーションに向けられる。記憶されることになるビット/バイトの第2の部分は、第2のチャネルに結合されるメモリモジュール内の指定された記憶ロケーションに向けられる。記憶されることになるビット/バイトの第3の部分は、第3のチャネルに結合されるメモリモジュール内の指定された記憶ロケーションに向けられる。状況が異なり、第4のチャネルがメモリモジュールに結合されるときには、第4のチャネルに結合されるメモリ要素に向けられることになっていた残りのビット/バイトは、第1のチャネルに結合されるメモリモジュール内の指定された記憶ロケーションに向けることができ、それ以降も同様である。したがって、記憶されるデータは、3つのチャネルに結合されるメモリモジュールによって与えられる利用可能なデータ記憶容量にわたって均等に拡散する。例示される実施形態は、複数のチャネルにわたって不均一なデータ記憶容量を有するメモリ空間の他の例示的な構成を含む。
PCD内の動作を特に参照しながら説明されるが、説明されるメモリ管理システムおよび方法は、それぞれのチャネルにわたって不均一なデータ記憶容量を登録される、複数チャネルメモリアーキテクチャを用いる任意のコンピューティングシステムに適用可能である。別の言い方をすると、そのメモリ管理システムおよび方法は、複数の物理チャネルに結合される不均一に分散したデータ記憶容量を有するデスクトップコンピュータ、サーバコンピュータまたは任意の電子デバイスに適用可能である。
ここで、図示される例が参照される。図1を参照すると、ポータブルコンピューティングデバイス(PCD)の例示的で非限定的な態様が示され、全体的に100で示される。図示されるように、PCD 100はマルチコアCPU 210を含むオンチップシステム120を含む。マルチコアCPU210は、第0のコア215と、第1のコア216と、第Nのコア217とを含む。
図1に示されるように、ディスプレイコントローラ128およびタッチスクリーンコントローラ130がマルチコアCPU 210に結合される。次に、オンチップシステム120の外部にあるディスプレイ/タッチスクリーン132が、ディスプレイコントローラ128およびタッチスクリーンコントローラ130に結合される。
図1は、ビデオエンコーダ134、たとえば位相反転線(PAL)エンコーダ、順次式カラーメモリ(SECAM:sequential couleur a memoire)エンコーダまたは全米テレビジョン方式委員会(NTSC)エンコーダがマルチコアCPU 210に結合されることをさらに示す。さらに、ビデオ増幅器136が、ビデオエンコーダ134およびディスプレイ/タッチスクリーン132に結合される。また、ビデオポート138が、ビデオ増幅器136に結合される。図1に示されるように、ユニバーサルシリアルバス(USB)コントローラ140がマルチコアCPU 210に結合される。また、USBポート142がUSBコントローラ140に結合される。システムメモリ230および加入者識別モジュール(SIM)カード146もマルチコアCPU210に結合される場合があり、マルチコアCPU210とシステムメモリ230との間の接続219は、オンチップシステム120のこれらの要素間でデータを転送するための2つ以上の物理チャネルまたは経路からなる。さらに、図1に示されるように、デジタルカメラ148がマルチコアCPU 210に結合される場合がある。例示的な態様では、デジタルカメラ148は、電荷結合デバイス(CCD)カメラまたは相補型金属酸化物半導体(CMOS)カメラである。
図1にさらに示されるように、ステレオオーディオコーデック150がマルチコアCPU 210に結合される場合がある。さらに、オーディオ増幅器152が、ステレオオーディオコーデック150に結合される場合がある。例示的な態様では、第1のステレオスピーカ154および第2のステレオスピーカ156が、オーディオ増幅器152に結合される。図1は、マイクロフォン増幅器158もステレオオーディオコーデック150に結合される場合があることを示す。さらに、マイクロフォン116が、マイクロフォン増幅器158に結合される場合がある。特定の態様では、周波数変調(FM)ラジオチューナ162が、ステレオオーディオコーデック150に結合される場合がある。同様に、FMアンテナ164が、FMラジオチューナ162に結合される。さらに、ステレオポート166が、ステレオオーディオコーデック150に結合される場合がある。
図1は、高周波(RF)トランシーバ168がマルチコアCPU 210に結合されることも示す。RFスイッチ170が、RFトランシーバ168およびRFアンテナ172に結合される場合がある。図1に示されるように、キーパッド174がマルチコアCPU 210に結合される。また、マイクロフォンを備えたモノヘッドセット176が、マルチコアCPU 210に結合される場合がある。さらに、バイブレータデバイス178がマルチコアCPU 210に結合される場合がある。図1は、電源180がUSBコントローラ140を介してオンチップシステム120に結合される場合があることをさらに示す。特定の態様では、電源180は、電力を必要とするPCD100の種々の構成要素に電力を供給する直流(DC)電源である。さらに、特定の態様では、電源は、充電式DCバッテリ、または交流(AC)電源に接続された交流(AC)-DC変圧器から導出されるDC電源である。
図1は、PCD100がデータネットワーク、たとえばローカルエリアネットワーク、パーソナルエリアネットワーク、または任意の他のネットワークにアクセスするために使用される場合があるネットワークカード188も含む場合があることをさらに示す。ネットワークカード188は、Bluetooth(登録商標)ネットワークカード、WiFiネットワークカード、パーソナルエリアネットワーク(PAN)カード、または当技術分野でよく知られている任意の他のネットワークカードとすることができる。さらに、ネットワークカード188は集積回路に組み込まれる場合がある。すなわち、ネットワークカード188は、チップ内のフルソリューションとすることができ、個別のネットワークカード188でなくてもよい。
図1に示されるように、ディスプレイ/タッチスクリーン132、ビデオポート138、USBポート142、カメラ148、第1のステレオスピーカ154、第2のステレオスピーカ156、マイクロフォン116、FMアンテナ164、ステレオポート166、RFスイッチ170、RFアンテナ172、キーパッド174、モノヘッドセット176、バイブレータ178および電源180は、オンチップシステム120の外部にある。
RFトランシーバ168は、1つまたは複数のモデムを含む場合があり、モバイル通信用グローバルシステム(“GSM(登録商標)”)、符号分割多元接続(“CDMA”)、広帯域符号分割多元接続(“W-CDMA”)、時分割同期符号分割多元接続(“TDSCDMA”)、ロングタームエボリューション(“LTE”)、ならびに、限定はしないが、FDB/LTEおよびPDD/LTEワイヤレスプロトコルなどのLTEの変形形態のうちの1つまたは複数をサポートすることができる。
図示される実施形態では、マルチコアCPU210の単一の事例が示される。しかしながら、PCD100に関連付けられる種々の周辺デバイスおよび機能をサポートするために、任意の数の同様に構成されるマルチコアCPUを含むことができることは理解されたい。代替的には、望みに応じて、PCD100に関連付けられる種々の周辺デバイスおよび機能をサポートするために、PCDまたは他のコンピューティングデバイス内に、単一のプロセッサ、またはそれぞれが単一の算術論理ユニットもしくはコアを有する複数のプロセッサを配置することができる。
例示される実施形態は、完全集積オンチップシステム120内に構成されるシステムメモリ230を示す。しかしながら、Mバイトの対応するデータ記憶容量を有する、2つ以上のベンダーから提供されるメモリモジュールを、オンチップシステム120の外部に配置できることは理解されたい。オンチップシステム120の外部に配置されるとき、システムメモリ230をサポートする種々のメモリモジュールは、データおよび電力をメモリモジュールに転送するのに適した電気的接続を含む、修正された複数チャネルメモリバス(図示せず)によってCPU210に結合される。
特定の態様では、本明細書において説明される方法ステップのうちの1つまたは複数は、システムメモリ230に記憶されたデータおよびプロセッサ命令の組合せを介して使用可能にされる場合がある。これらの命令は、本明細書において説明される方法を実行するために、マルチコアCPU 210によって実行される場合がある。さらに、マルチコアCPU210、メモリ230、EEPROM(図示せず)またはその組合せが、インターリーバロジックを含むメモリ管理ロジック、および本明細書において説明される方法のステップのうちの1つまたは複数を実行するための構成パラメータの非一時的表現を記憶するための手段としての役割を果たすことができる。示されるように、メモリコントローラまたは他のメモリ管理ロジックが、CPU210とシステムメモリ230との間でデータを通信する複数のメモリアクセスチャネルに関して、システムメモリ230が非対称に登録される時点を特定する。また、示されるように、インターリーバロジックが、等しい記憶容量を有する仮想セクタを規定し、メモリ空間へのアクセス要求に応答して、データを仮想セクタにわたって均一に分散させるアルゴリズム解法を適用することによって、システムメモリ230をサポートする物理的なアーキテクチャに従って応答する。
図2は、CPU210と、システムメモリ230と、接続219との詳細を示す概略図であり、接続219は、メモリ空間290が2つの物理チャネルにわたって対称なメモリ容量をサポートされるときにCPU210とメモリ空間290との間のデータ転送を可能にする。図2に示されるように、メモリ空間290は、チャネル220(チャネル0)を介してCPU210に結合される第1のセットの2つのメモリモジュールと、チャネル222(チャネル1)を介してCPU210に結合される第2のセットの2つのメモリモジュールとによってサポートされる。第1のセットのメモリモジュールはメモリモジュール291およびメモリモジュール292を含む。メモリモジュール291およびメモリモジュール292は、ダイナミックランダムアクセスメモリ(DRAM)集積回路で実現される場合があり、それぞれMバイトのデータ記憶容量を提供する。第2のセットのメモリモジュールは、メモリモジュール293およびメモリモジュール294を含む。メモリモジュール293およびメモリモジュール294も、DRAM集積回路で実現される場合があり、同じくMバイトのデータ記憶容量を提供する。メモリモジュール291〜294がそれぞれ同じ回路アーキテクチャを含み、Mバイトの同じ容量を有する場合、O/Sロジック213は、メモリコントローラ211を用いて、記憶されることになるデータを、メモリ空間290にわたって任意の所望のロケーションに配置することができる。記憶されるデータを、メモリコントローラ211によって望まれるように配置することができるだけでなく、データは、最大帯域幅で、均一なレイテンシで4Mバイトのメモリ空間290に転送することができる。
図2に示されるように、CPU210は、メモリコントローラ211と、インターリーバロジック212と、オペレーティングシステム(O/S)213と、キャッシュ214と、コア215とを含む。これらの要素は、CPU210内の1つまたは複数の内部接続またはデータバス(図示せず)に沿って互いに結合される。メモリコントローラ211は、システムメモリ230に入るデータおよびシステムメモリから出るデータの流れを管理するデジタル回路である。メモリコントローラ211は、インターリーバロジック212によって支援または強化される。インターリーバロジック212は、CPU210とシステムメモリ230との間の特定のI/O動作のために、利用可能なチャネルのうちのどのチャネルが使用されることになるかを特定するアドレス、ラベルまたは他の情報を与える。また、インターリーバロジックは通常、インターリーブ機能に適合するようにして、各チャネルに送信されるサブチャネルアドレスを再構成または再計算する(たとえば、32ビットアドレスA[31:0]を有するシステムの場合の普通の2チャネルインターリーバは、アドレスビットA[10]を用いて、チャネルを選択し、その後、チャネル0および1に対するチャネル内アドレスA0[A[31:11], A[9:0]]およびA1[31:11], A[9:0]]をそれぞれ生成することができる)。O/Sロジック213は、コア215によって実行されるときに、種々の周辺リソースを管理し、メモリ空間290内に記憶されるコンピュータプログラムのための共通サービスを提供する命令セットを含む。O/Sロジック213は、システムメモリに230に記憶され、必要に応じて、CPU210に読み込むことができる。代替的には、O/Sロジック213は、CPU210に結合されるか、または組み込まれる読取り専用メモリモジュールに記憶することができる。キャッシュ214は、頻繁に用いられるシステムメモリロケーションからのデータのコピーを記憶するためにCPU210によって用いられる、より小型で、高速のメモリである。キャッシュ214は、メモリにアクセスする平均時間を短縮する。いくつかのメモリアクセスが、キャッシュされたメモリロケーションからのものである限り、メモリアクセスの平均レイテンシは、システムメモリ230のレイテンシよりも、キャッシュレイテンシに近くなる。コア215は、プログラム命令を読み出し、バッファリングし、実行する回路のセットを含む。
図示される構成では、メモリコントローラ211はCPU210と同じダイ上に集積される。代替の構成では、メモリコントローラ211は、CPU210と通信する別の集積回路上に実装することができる。メモリコントローラ211は、フロントエンド部分およびバックエンド部分を用いて構成される。フロントエンド部分は、要求および応答をバッファリングし、コンピューティングデバイス200(図示せず)のCPU210および他の部分へのインターフェースを提供する。このフロントエンド部分は一般的に、メモリモジュールタイプから独立している。対照的に、バックエンド部分は、メモリモジュールへのインターフェースを提供し、メモリモジュール内のメモリ回路のタイプに依存する。
例示される構成では、インターリーバロジック212は、同じダイ上に集積され、コア215およびメモリコントローラ211のような別の回路または回路のセットとして表される。代替の実施形態では、インターリーバロジック212は、メモリコントローラ211またはO/Sロジック213のうちの一方を使用可能にする回路のサブ部分とすることができる。どのように具現されても、インターリーバロジック212は、十分な数量、または少なくともバランスのとれた数量のアドレス指定可能メモリモジュールを提示されるとき、チャネル220および222を用いて、メモリ空間290内に記憶されることになるデータを均一に分散させる。
図3は、非対称なシステムメモリ容量を有する、図2のコンピューティングデバイスを示す概略図である。非対称なシステムメモリ容量は、製造業者が十分な数量に満たないメモリモジュールを提供することに決めるとき、またはメモリモジュールが作動しなくなるときに生じる。図3に示される例示的な実施形態に示されるように、メモリ空間390は、チャネル220(チャネル0)を介してCPU210に結合される第1のメモリモジュール391と、チャネル222(チャネル1)を介してCPU210に結合される2つのメモリモジュールとによってサポートされる。メモリモジュール391、メモリモジュール393およびメモリモジュール394は、それぞれがMバイトのデータ記憶容量を有するDRAM集積回路で実現することができる。メモリモジュール391、393、394がそれぞれ同じ回路アーキテクチャを含み、Mバイトの同じ容量を有する場合、チャネル220(チャネル0)はMバイトに結合されるのに対して、チャネル222(チャネル1)は2Mバイトに結合される。図3に示されるように、メモリモジュール391およびメモリモジュール393にわたる物理チャネル220と222との間に1:1のデータアクセス比がある。チャネル220に結合される第2のメモリモジュールが存在しない結果として、物理チャネル220と222との間に0:1のデータアクセス比が生じる。メモリモジュール394によってサポートされるメモリ空間390のその部分は、インターリーブされたデータを受信することはできず、それゆえ、2つのメモリモジュールがそれぞれのチャネルを介して同時にアクセスすることができるメモリ空間の部分より、単位時間あたり少ないデータを処理する。チャネル220に結合される第2のメモリモジュールが存在しないことは、メモリコントローラ211によって検出可能とすることができ、メモリコントローラは、インターリーバロジック212、またはCPU210にアクセス可能な他のロジックにそれを指示する信号を通信することができる。それに応じて、インターリーバロジック212または他のロジックは、1つまたは複数のシステムパラメータに基づいて、事前にプログラムされたように応答することができる。代替的には、コンピューティングデバイス300は、固定された方法で応答することができる。
物理チャネル220、222にわたって非対称な記憶容量で構成される複数チャネルメモリアクセスアーキテクチャ302は、部分的な、または不均一なインターリーブ機能によって機能を果たすようにすることができる。すなわち、メモリ空間390の第1の部分(例示される実施形態では、最下部分)は、メモリモジュール391および393によってサポートされる最大データ速度においてインターリーブすることができ、一方、メモリ空間390の第2の部分は、非インターリーブメモリアクセス要求しか処理することができない。したがって、インターリーバロジック212を用いて、全部で3Mの記憶容量のうちの2Mバイトにわたってメモリ空間に、そしてメモリ空間からデータを転送する。
サポート可能であるが、そのような構成は、すべてのメモリアクセスを非インターリーブデータ転送速度において十分にサポートできるとは限らない状況下で、O/Sロジック213に、および/またはO/Sロジック213によって提供されるサービスを使用するアプリケーションプログラム(図示せず)に、著しい負荷を導入する。これが当てはまるとき、どのメモリアクセスをメモリ空間390の非インターリーブ部分にアドレス指定することができるか特定することが、O/Sロジック213および/またはアプリケーションプログラムに課せられる。代替的には、コンピューティングデバイス300は、すべてのメモリI/Oを非インターリーブまたは低速のデータ転送速度において送信することができる。
図4は、2つの物理チャネルにわたって1:2の比で分散する仮想セクタのセットを有する、図1のコンピューティングデバイスの例示的な実施形態の概略図である。図4に示される例示的な実施形態に示されるように、メモリ空間440は、チャネル220(チャネル0)を介してCPU210に結合される第1のメモリモジュール441と、チャネル222(チャネル1)を介してCPU210に結合される2つのメモリモジュールとによってサポートされる。メモリモジュール441、メモリモジュール443およびメモリモジュール444は、それぞれがMバイトのデータ記憶容量を有するDRAM集積回路で実現することができる。メモリモジュール441、443、444がそれぞれ同じ回路アーキテクチャを含み、Mバイトの同じ容量を有する場合、チャネル220(チャネル0)はMバイトに結合されるのに対して、チャネル222(チャネル1)は2Mバイトに結合される。しかしながら、3つの利用可能なメモリモジュールのうちの2つにわたってデータをインターリーブするために部分的インターリーブ機能を用いる代わりに、メモリ空間440は等しい容量の仮想セクタに分割される。図4に示されるように、1つの仮想セクタが、メモリモジュール441、メモリモジュール443およびメモリモジュール444のそれぞれに一致する。図4に示されるように、物理チャネル220と222との間に1:2のデータアクセス比がある。
図4において提示されるような、非対称な記憶容量を有する複数チャネルメモリアクセスアーキテクチャは、修正インターリーバロジック418によって使用可能にされる仮想インターリーブ機能を使用する。仮想セクタの数が奇数であるとき、修正インターリーバロジック418は奇数方向拡散機能を用いて、仮想セクタにわたってデータを分散させる。
プログラム可能パラメータに関する記憶と、仮想チャネルにわたってデータを分散させるときに、修正インターリーバロジック418に指示するか、または修正インターリーバロジック418を調整する所望の拡散機能とを提供するために、電気的消去可能プログラマブルリードオンリーメモリ(EEPROM)411がプロセッサCPU210と一体に構成される。たとえば、3方向拡散機能は、メモリアクセスをチャネル220とチャネル222との間で1:2の比で、メモリ空間440にわたって動的に分散させる。その結果として、メモリ空間440の利用可能な容量を均一にインターリーブすることができる。そのような構成では、メモリ空間440にわたるCPU210とメモリ空間440との間のデータ転送速度は、両方のチャネルにわたって、同等の能力を有するメモリモジュールによってサポートされる最大データ転送速度から低減されるが、図3に示される部分的インターリーブ方法によってサポートされる低速の非インターリーブデータ転送より高速であり、管理が容易である。すべてのメモリアクセスが同じデータ転送速度において実行されるので、O/Sロジック216、および/またはコア215において実行されるアプリケーションプログラムは、データをメモリ空間440内のどこにでも配置することができる。
代替の実施形態では、仮想セクタインターリーブ機能は、より多くの、またはより少ない仮想セクタを使用するようにプログラムまたは調整することができる。いくつかの構成では、修正インターリーバロジック418によって使用される仮想セクタの数は、メモリ空間440をサポートするメモリモジュールの数より少なくすることができる。いくつかの他の構成では、修正インターリーバロジック418によって使用される仮想セクタの数は、メモリ空間440をサポートするメモリモジュールの数より多くすることができる。メモリモジュールの数と、仮想セクタの数とがそのように一致しないことは、異なる容量を有するメモリモジュールを用いてメモリ空間をサポートするときに、利用可能な記憶容量を仮想セクタに均等に分割する複雑さを緩和することができる。複数のチャネルにわたってデータを分散させるプログラム可能仮想セクタ拡散機能によって、同じCPU210が、完全登録および部分登録の両方のメモリチャネルをサポートできるようになる。
例示的な拡散機能は、メモリアクセスチャネルを規定するためのコードを含むことができる。3つの利用可能なチャネルを有するシステムの場合、MOD機能のような例示的な拡散機能を展開することができる。たとえば、全部で192メモリワードをマッピングするために、アドレスA[7:0]を3チャネルにわたって拡散させるために、各チャネルが、それぞれ64メモリワードをマッピングする、6ビットアドレス範囲[5:0]を有する場合、A[7:0]MOD3の結果を用いて、チャネルを選択することができる。それゆえ、各チャネルは、A[7:0]の192の取り得る有効アドレスパターンの3分の1を、インターリーブされるようにして厳密に受信することになる。(アドレス193〜255は、メモリが登録されないので、無効アドレスパターンであることに留意されたい)。その際、5ビットチャネル内アドレス指定機能A0、A1、A2のセットを規定して、各チャネル内のメモリロケーションを選択することができる。各チャネル内で取り得るA[7:0]の64メモリロケーションのサブセットは既知であるので、標準的な論理設計および最小化技法を用いる当業者が、これらの64アドレスを各チャネル内の64の固有メモリロケーションにマッピングする好みのチャネル内アドレス指定機能を設計することができる。
図5は、異なるデータ転送速度において動作する2つの物理チャネルにわたって1:2の比で分散する仮想セクタのセットを有する、図1のコンピューティングデバイスの例示的な実施形態の概略図である。図5に示される例示的な実施形態に示されるように、メモリ空間540は、チャネル220(チャネル0)を介してCPU210に結合される第1のメモリモジュール541と、チャネル222(チャネル1)を介してCPU210に結合される2つのメモリモジュールとによってサポートされる。メモリモジュール541、メモリモジュール543およびメモリモジュール544は、それぞれがMバイトのデータ記憶容量を有するDRAM集積回路で実現することができる。メモリモジュール541、543、544がそれぞれ同じ回路アーキテクチャを含み、Mバイトの同じ容量を有する場合、チャネル220(チャネル0)はMバイトに結合されるのに対して、チャネル222(チャネル1)は2Mバイトに結合される。しかしながら、図4に示されるように、3つの仮想セクタだけにわたってデータをインターリーブするために仮想インターリーブ機能を用いる代わりに、メモリ空間540は等しい容量の仮想セクタに分割され、修正インターリーバロジック518は、チャネル220を介して通信するときに第1のデータ転送速度を使用し、チャネル222を介して通信するときに、第2のデータ転送速度を使用する。例示的な実施形態では、メモリモジュール541は、256Mバイトのデータ容量を有する低電力ダブルデータレート2(LPDDR2)メモリ要素であり、266MHzのクロック周波数において動作することができる。この同じ例において、メモリモジュール543およびメモリモジュール544は同じデータ容量を有するLPDDR2メモリ要素であるが、533MHzのクロック周波数において動作することができる。その結果として、例示的な実施形態は、物理チャネルにわたる非対称なデータ記憶容量に関連付けられる潜在的なコストを削減できるようにしながら、メモリ空間540にわたって均一な帯域幅を達成する。例示的な実施形態は、チャネルにわたる1:2の容量比、チャネルにわたって分散する仮想セクタにおける1:2の比、およびクロック周波数における1:2の比を含むが、クロック周波数は、仮想セクタ比および各チャネルに結合される仮想セクタの数から独立している。
図5に示されるように、1つの仮想セクタが、メモリモジュール541、メモリモジュール543およびメモリモジュール544のそれぞれに一致する。図5にさらに示されるように、物理チャネル220と222との間に1:2のデータアクセス比がある。さらに、チャネル222と通信するメモリモジュール543、544は、修正インターリーバロジック518がメモリモジュールおよびチャネルによってサポートされる最も速い速度(または最大データ転送速度)において、または最大データ転送速度より遅い所望のデータ転送速度においてデータを均一にインターリーブすることができるメモリ空間540の領域を規定する。例示される実施形態では、チャネル222は、チャネル220によってサポートされるデータ転送速度の2倍であるデータ転送速度において、CPU210とデータを通信する。
プログラム可能パラメータに関する記憶と、仮想チャネルにわたってデータを分散させるときに、修正インターリーバロジック518に指示するか、または修正インターリーバロジック518を調整する所望の拡散機能とを提供するために、電気的消去可能プログラマブルリードオンリーメモリ(EEPROM)511がCPU210と一体に構成される。いくつかの構成では、EEPROM511が、仮想セクタの数、物理通信チャネルの数、メモリ空間540にわたってデータを拡散させるときに使用するデータ転送速度を特定する1つまたは複数のパラメータを含む。いくつかの構成では、CPU210とメモリ空間540との間のチャネルにわたってデータを通信するために使用されるデータ転送速度は、1つまたは複数の他のチャネルに応じて特定される場合がある。
図6は、異なるデータ転送速度において動作する2つの物理チャネルにわたって2:3の比で分散する相対的に大きな仮想セクタのセットを有する、図5のコンピューティングデバイスの例示的な実施形態の概略図である。図6に示される例示的な実施形態に示されるように、メモリ空間640は、チャネル220(チャネル0)を介してCPU210に結合されるメモリモジュール641およびメモリモジュール642と、チャネル222(チャネル1)を介してCPU210に結合されるメモリモジュール644、メモリモジュール645およびメモリモジュール646とによってサポートされる。メモリモジュール641、642、644、645、646は、それぞれがMバイトのデータ記憶容量を有するDRAM集積回路で実現することができる。メモリモジュール641、642、644、645、646がそれぞれ同じ回路アーキテクチャを含み、Mバイトの同じ容量を有する場合、チャネル220(チャネル0)は2Mバイトの記憶容量に結合されるのに対して、チャネル222(チャネル1)は3Mバイトの記憶容量に結合される。ここでは、メモリ空間640は、等しい容量の5つの仮想セクタに分割され、修正インターリーバロジック618は、チャネル220を介して通信するときに第1のデータ転送速度を使用し、チャネル222を介して通信するときに第2のデータ転送速度を使用する。
図6に示されるように、第1のデータ転送速度および第2のデータ転送速度(f(0), f(1))は、完全にインターリーブされるシステムにおいて展開されるデータ転送速度ftと、チャネル内の仮想セクタの数(N0, N1)と、物理チャネルの数とメモリ空間640内の仮想セクタの総数との比(P/Vtot)との関数として求めることができる。具体的には、メモリ空間640が、同等の容量の完全にインターリーブされる記憶システムによって提供される帯域幅を達成できるようにする第1のデータ転送速度および第2のデータ転送速度は、完全にインターリーブされるシステムのデータ転送周波数と、チャネル内の仮想セクタの数と、物理チャネルの数とシステム600によって展開される仮想セクタの総数との比との積によって求めることができる。
例示的な実施形態では、メモリモジュール641およびメモリモジュール642は、それぞれが256Mバイトのデータ容量を有するDRAM要素であり、320MHzのクロック周波数において動作することができる。この同じ例において、メモリモジュール644、メモリモジュール645およびメモリモジュール646は256Mバイトの同じデータ容量を有するDRAM要素であるが、480MHzのクロック周波数において動作することができる。その結果として、例示的な実施形態は、物理チャネルにわたる非対称なデータ記憶容量に関連付けられる潜在的なコストを削減できるようにしながら、メモリ空間640にわたって均一な帯域幅を達成する。例示的な実施形態は、チャネルにわたる2:3の容量比、チャネルにわたって分散する仮想セクタにおける2:3の比、およびクロック周波数における2:3の比を含むが、クロック周波数は、仮想セクタ比および各チャネルに結合される仮想セクタの数から独立している。
図6に示されるように、1つの仮想セクタが、メモリモジュール641、642、644、645、646のそれぞれに一致する。さらに、チャネル222と通信するメモリモジュール644〜646は、修正インターリーバロジック618がメモリモジュールおよびチャネルによってサポートされる最も速い速度において、または最大データ転送速度より遅い所望のデータ転送速度において、データを均一にインターリーブすることができるメモリ空間640の領域を規定する。例示される実施形態では、チャネル222は、チャネル220によってサポートされるデータ転送速度の1.5倍であるデータ転送速度において、CPU210とデータを通信する。
プログラム可能パラメータに関する記憶と、仮想チャネルにわたってデータを分散させるときに、修正インターリーバロジック618に指示するか、または修正インターリーバロジック618を調整する所望の拡散機能とを提供するために、EEPROM611がプロセッサCPU210と一体に構成される。いくつかの構成では、EEPROM611が、仮想セクタの数、物理通信チャネルの数、メモリ空間640にわたってデータを拡散させるときに使用するデータ転送速度を特定する1つまたは複数のパラメータを含む。いくつかの構成では、CPU210とメモリ空間640との間のチャネルにわたってデータを通信するために使用されるデータ転送速度は、1つまたは複数の他のチャネルに応じて特定される場合がある。
図7は、対称に登録されるメモリ空間の等価データ帯域幅を達成するために、2つの異なるデータ転送速度において動作する4つの物理チャネルにわたって1:2:2:2の比で分散する代替の仮想セクタのセットを有するコンピューティングデバイスの例示的な実施形態の概略図である。図7に示される例示的な実施形態に示されるように、メモリ空間740は、チャネル220(チャネル0)を介してCPU210に結合されるメモリモジュール741と、チャネル222(チャネル1)を介してCPU210に結合されるメモリモジュール743およびメモリモジュール744と、チャネル224(チャネル2)を介してCPU210に結合されるメモリモジュール745およびメモリモジュール746と、チャネル226(チャネル3)を介してCPU210に結合されるメモリモジュール747およびメモリモジュール748とによってサポートされる。メモリモジュール741、743、744、745、746、747、748は、それぞれがMバイトのデータ記憶容量を有するDRAM集積回路で実現することができる。メモリモジュール741、743〜748がそれぞれ同じ回路アーキテクチャを含み、Mバイトの同じ容量を有する場合、チャネル220(チャネル0)はMバイトの記憶容量に結合されるのに対して、チャネル222、224、226(チャネル1〜3)は2Mバイトの記憶容量に結合される。ここでは、メモリ空間740は、等しい容量の7つの仮想セクタに分割され、修正インターリーバロジック718は、チャネル220を介して通信するときに第1のデータ転送速度を、チャネル222、224、226を介して通信するときに第2のデータ転送速度を使用する。
図7に示されるように、第1のデータ転送速度および第2のデータ転送速度(f(0), f(1, 2, 3))は、完全にインターリーブされるシステムにおいて展開されるデータ転送速度ftと、チャネル内の仮想セクタの数(N0, N1, 2, 3)と、物理チャネルの数とメモリ空間740内の仮想セクタの総数との比(P/Vtot)との関数として求めることができる。具体的には、メモリ空間740が、同等の容量の完全にインターリーブされる記憶システムによって提供される帯域幅を達成できるようにする第1のデータ転送速度および第2のデータ転送速度は、完全にインターリーブされるシステムのデータ転送周波数と、チャネル内の仮想セクタの数と、物理チャネルの数とシステム700によって展開される仮想セクタの総数との比との積によって求めることができる。
例示的な実施形態では、メモリモジュール741は、256Mバイトのデータ容量を有するDRAM要素であり、約229MHzのクロック周波数において動作することができる。この同じ例において、メモリモジュール743〜748は256Mバイトの同じデータ容量を有するDRAM要素であるが、約457MHzのクロック周波数において動作することができる。その結果として、例示的な実施形態は、4つの物理チャネルにわたる非対称なデータ記憶容量に関連付けられる潜在的なコストを削減できるようにしながら、メモリ空間740にわたって均一な帯域幅を達成する。例示的な実施形態は、4つのチャネルにわたる1:2:2:2の容量比、チャネルにわたって分散する仮想セクタにおける1:2:2:2の比、およびクロック周波数における1:2の比を含むが、クロック周波数は、仮想セクタ比および各チャネルに結合される仮想セクタの数から独立して適用することができる。
図7に示されるように、1つの仮想セクタが、メモリモジュール741、743〜748のそれぞれに一致する。さらに、チャネル222、224、226と通信するメモリモジュール743〜748は、修正インターリーバロジック718がメモリモジュールおよびチャネルによってサポートされる最も速い速度において、または最大データ転送速度より遅い所望のデータ転送速度において、データを均一にインターリーブすることができるメモリ空間740の領域を規定する。例示される実施形態では、チャネル222、224、226はそれぞれ、チャネル220によってサポートされるデータ転送速度の約2倍であるデータ転送速度において、CPU210とデータ通信する。
プログラム可能パラメータに関する記憶と、仮想チャネルにわたってデータを分散させるときに、修正インターリーバロジック718に指示するか、または修正インターリーバロジック718を調整する所望の拡散機能とを提供するために、EEPROM711がプロセッサCPU210と一体に構成される。いくつかの構成では、EEPROM711が、仮想セクタの数(たとえば7)、物理通信チャネルの数(たとえば4)、メモリ空間740にわたってデータを拡散させるときに使用するデータ転送速度(229MHz, 457MHz)を特定する1つまたは複数のパラメータを含む。
例示される実施形態は偶数のチャネルと、奇数のメモリモジュールにわたって分散する奇数の仮想セクタとを含むが、結果として複数のチャネルにわたって非対称な記憶容量を生成する数多くの他の構成が可能である。たとえば、偶数のメモリモジュールを奇数のチャネルにわたって展開することができる。1つのそのような構成では、全部で4つのメモリモジュールを、3つのチャネル(1:1:2, 1:2:1, 2:1:1)にわたって分散させることができる。メモリモジュールが同じ記憶容量を共有するとき、仮想セクタの数は、メモリモジュールの記憶容量以下にすることができる。さらなる例として、チャネルにわたる記憶容量が非対称であることは、偶数チャネルにわたって異なる記憶容量を有するメモリモジュールを展開する結果とすることができる。1つのそのような構成では、1GBの記憶容量を有する第1のメモリモジュールが第1のチャネルに結合され、2GBの記憶容量を有する第2のメモリモジュールが第2のチャネルに結合される。この構成では、インターリーバ機能は、それぞれ1GBの3つの仮想セクタにわたってデータを均等に分散させることによって応答することができる。複数のチャネルにわたって分散する非対称な記憶容量を有するこれらの構成および他の構成は、仮想セクタを利用してコンピューティングデバイス内の利用可能な記憶装置にアクセスする上記のインターリーブ機能および他の機能によって改善することができる。
図8は、不均一なデータ記憶容量を有するメモリ空間の物理チャネルにわたってメモリアクセスを均一にインターリーブするための方法800の例示的な実施形態を示す流れ図である。ブロック802において、コンピューティングシステムに関連付けられるメモリコントローラまたは他のセンサが、メモリ空間がCPU210とシステムメモリとの間の複数の物理チャネルにわたって不均一なデータ記憶容量を含む時点を特定する。ブロック804において、プログラム可能インターリーバまたはインターリーバロジックが、メモリ空間内の所望の記憶容量の仮想セクタのセットを特定する。ブロック806において、インターリーバまたはインターリーバロジックは、メモリ空間内の仮想セクタまたは仮想セクタの一部にわたって、均一になるようにメモリ空間へのアクセス要求に応答する。判断ブロック808において、インターリーバまたはインターリーバロジックを用いて、メモリ空間へのアクセス要求を処理し続けるという判断が行われる。その応答が、“Yes”を付されたフロー制御矢印によって指示されるように肯定であるとき、ブロック806および808内の機能が繰り返される。“No”を付されたフロー制御矢印によって指示されるように、そうでない場合には、終了判断ブロック808において、方法800は終了する。
本発明が説明されたように機能するために、本明細書において説明されるプロセスまたはプロセスフローにおけるいくつかのステップが他のステップに先行するのは当然である。しかしながら、そのような順序またはシーケンスが本発明の機能を変更しない場合には、本発明は、説明されたステップの順序に限定されない。すなわち、いくつかのステップが、本発明の範囲および趣旨から逸脱することなく、他のステップの前、後、またはそれと並行して(実質的に同時に)実行される場合があることは認識されたい。場合によっては、いくつかのステップは、本発明から逸脱することなく、省略される場合があるか、または実行されない場合がある。さらに、「それ以降」、「その後」、「次に」、「後に」などの語は、ステップの順序を制限することは意図していない。これらの言葉は、単に例示的な方法の説明を通して読者を導くために使用される。
さらに、プログラミングに関する当業者は、たとえば、本明細書における流れ図および関連する説明に基づいて、難なく、開示される発明を実施するコンピュータのコードを書くことができるか、または実施するのに適したハードウェアおよび/もしくは回路を特定することができる。したがって、特定のプログラムコード命令のセットまたは詳細なハードウェアデバイスの開示は、本発明の作製方法および使用方法を十分に理解するのに必要であるとはみなされない。特許請求されるプロセッサ実施プロセスの本発明の機能性は、種々のプロセスフローを例示する場合がある図面とともに、上述の説明において、より詳細に説明されている。
先に示されたような1つまたは複数の例示的な態様では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実施することができる。ソフトウェアにおいて実施される場合には、その機能は、非一時的プロセッサ可読媒体のようなコンピュータ可読媒体上に1つまたは複数の命令またはコードとして記憶することができる。コンピュータ可読媒体は、データ記憶媒体を含む。
記憶媒体は、コンピュータまたはプロセッサによってアクセスすることができる任意の利用可能な媒体とすることができる。例であって、限定はしないが、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または命令もしくはデータ構造の形態で所望のプログラムコードを搬送または記憶するために使用することができ、コンピュータによってアクセスすることができる任意の他の媒体を含むことができる。ディスク(diskおよびdisc)は、本明細書において使用されるときに、コンパクトディスク(disc)(“CD”)、レーザディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(“DVD”)、フロッピー(登録商標)ディスク(disk)およびブルーレイディスク(disc)を含み、diskは通常、データを磁気的に再生し、一方、discは、レーザを用いてデータを光学的に再生する。上記の組合せも、非一時的コンピュータ可読媒体の範囲内に含まれるべきである。
選択された態様が詳細に図示および説明されたが、以下の特許請求の範囲によって規定されるような本開示の概念から逸脱することなく、本明細書において様々な置換および改変がなされる場合があることは理解されよう。
100 ポータブルコンピューティングデバイス
116 マイクロフォン
120 オンチップシステム
128 ディスプレイコントローラ
130 タッチスクリーンコントローラ
132 ディスプレイ/タッチスクリーン
134 ビデオエンコーダ
136 ビデオ増幅器
138 ビデオポート
140 ユニバーサルシリアルバス(USB)コントローラ
142 USBポート
146 加入者識別モジュール(SIM)カード
148 デジタルカメラ
150 ステレオオーディオコーデック
152 オーディオ増幅器
154 第1のステレオスピーカ
156 第2のステレオスピーカ
158 マイクロフォン増幅器
162 周波数変調(FM)ラジオチューナ
164 FMアンテナ
166 ステレオポート
168 高周波(RF)トランシーバ
170 RFスイッチ
172 RFアンテナ
174 キーパッド
176 モノヘッドセット
178 バイブレータデバイス
180 電源
188 ネットワークカード
200 コンピューティングデバイス
210 マルチコアCPU
211 メモリコントローラ
212 インターリーバロジック
213 オペレーティングシステム(O/S)ロジック
214 キャッシュ
215 コア
215 第0のコア
216 第1のコア
217 第Nのコア
219 接続
220 チャネル
222 チャネル
224 チャネル
226 チャネル
230 システムメモリ
290 メモリ空間
291 メモリモジュール
292 メモリモジュール
293 メモリモジュール
294 メモリモジュール
300 コンピューティングデバイス
302 複数チャネルメモリアクセスアーキテクチャ
390 メモリ空間
391 第1のメモリモジュール
393 メモリモジュール
394 メモリモジュール
411 電気的消去可能プログラマブルリードオンリーメモリ(EEPROM)
418 修正インターリーバロジック
440 メモリ空間
441 第1のメモリモジュール
443 メモリモジュール
444 メモリモジュール
511 EEPROM
518 修正インターリーバロジック
540 メモリ空間
541 第1のメモリモジュール
543 メモリモジュール
544 メモリモジュール
600 システム
611 EEPROM
618 修正インターリーバロジック
640 メモリ空間
641 メモリモジュール
642 メモリモジュール
644 メモリモジュール
645 メモリモジュール
646 メモリモジュール
700 システム
711 EEPROM
718 修正インターリーバロジック
740 メモリ空間
741 メモリモジュール
743 メモリモジュール
744 メモリモジュール
745 メモリモジュール
747 メモリモジュール
748 メモリモジュール

Claims (15)

  1. 不均一な記憶容量を有するメモリ空間へのメモリアクセスを物理チャネルにわたって均一にインターリーブするための方法であって、
    数チャネルメモリアーキテクチャが、異なるデータ転送速度において動作する前記物理チャネルにわたって非対称な記憶容量を与えられる時点を特定するステップと、
    前記メモリ空間において等しい記憶容量の複数の仮想セクタを規定するために、前記特定するステップに応答するロジックを使用するステップと
    前記非対称な記憶容量に前記仮想セクタにわたって均一にアクセスするために、前記物理チャネルのうちのメモリ空間アクセス要求を動的に分散させるようにインターリーバを介してインターリーブ機能を適用するステップと
    を含む、方法。
  2. 前記物理チャネルの数は偶数であり、前記等しい容量の仮想セクタの数は奇数である、請求項1に記載の方法。
  3. 前記物理チャネルの数は奇数であり、前記等しい容量の仮想セクタの数は偶数である、請求項1に記載の方法。
  4. 前記インターリーブ機能を適用するステップは、拡散機能を適用するステップを含む、請求項1に記載の方法。
  5. 前記拡散機能は、前記メモリ空間にわたって物理チャネル間の規定された比においてメモリアクセスを動的に分散させる、請求項4に記載の方法。
  6. 前記等しい容量の仮想セクタの数はプログラム可能である、請求項1に記載の方法。
  7. 前記等しい容量の仮想セクタの数は前記メモリ空間をサポートするメモリモジュールの数より少ない、請求項1に記載の方法。
  8. 前記等しい容量の仮想セクタの数は前記メモリ空間をサポートするメモリモジュールの数より多い、請求項1に記載の方法。
  9. 前記メモリ空間は、同じ記憶容量の奇数のメモリモジュールによってサポートされる、請求項1に記載の方法。
  10. 前記メモリ空間は、残りのメモリモジュールの前記記憶容量とは異なる記憶容量を有する少なくとも1つのメモリモジュールを有する偶数のメモリモジュールによってサポートされる、請求項1に記載の方法。
  11. 前記メモリ空間にアクセスする動作は、非インターリーブデータ転送速度を超える、前記物理チャネルそれぞれへのデータ転送速度においてサポートされる、請求項1に記載の方法。
  12. 第1の物理チャネルを介して前記メモリ空間にアクセスする動作は第1のデータ転送速度においてサポートされ、第2の物理チャネルを介して前記メモリ空間にアクセスする動作は、前記第1のデータ転送速度とは異なる第2のデータ転送速度においてサポートされる、請求項1に記載の方法。
  13. 前記第1のデータ転送速度は前記第2のデータ転送速度の関数であり、前記第1のデータ転送速度および前記第2のデータ転送速度は、物理チャネルによってサポートされる仮想セクタの数に基づいて決定される、請求項12に記載の方法。
  14. 不均一な記憶容量を有するメモリ空間へのメモリアクセスを物理チャネルにわたって均一にインターリーブするためのコンピューティングデバイスであって、
    複数チャネルメモリアーキテクチャが、異なるデータ転送速度において動作する前記物理チャネルにわたって非対称な記憶容量を与えられる時点を特定するための手段と、
    前記メモリ空間において等しい記憶容量の複数の仮想セクタを規定するための手段と、
    前記非対称な記憶容量に前記仮想セクタにわたって均一にアクセスするために、前記物理チャネルのうちのメモリ空間アクセス要求を動的に分散させるようにインターリーバを介してインターリーブ機能を適用するための手段と
    を備える、コンピューティングデバイス。
  15. コンピュータ上で実行されるとき、請求項1〜13のいずれか一項に記載の方法を実行するための命令を備える、コンピュータプログラム。
JP2016518727A 2013-10-03 2014-10-03 非対称な記憶容量を有する複数チャネルメモリアーキテクチャにわたってデータを均一にインターリーブするためのシステムおよび方法 Expired - Fee Related JP6378325B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/045,784 2013-10-03
US14/045,784 US9465735B2 (en) 2013-10-03 2013-10-03 System and method for uniform interleaving of data across a multiple-channel memory architecture with asymmetric storage capacity
PCT/US2014/058946 WO2015051201A1 (en) 2013-10-03 2014-10-03 System and method for uniform interleaving of data across a multiple-channel memory architecture with asymmetric storage capacity

Publications (3)

Publication Number Publication Date
JP2016532926A JP2016532926A (ja) 2016-10-20
JP2016532926A5 JP2016532926A5 (ja) 2017-10-26
JP6378325B2 true JP6378325B2 (ja) 2018-08-22

Family

ID=51842833

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016518727A Expired - Fee Related JP6378325B2 (ja) 2013-10-03 2014-10-03 非対称な記憶容量を有する複数チャネルメモリアーキテクチャにわたってデータを均一にインターリーブするためのシステムおよび方法

Country Status (8)

Country Link
US (1) US9465735B2 (ja)
EP (1) EP3053044B1 (ja)
JP (1) JP6378325B2 (ja)
KR (1) KR20160064223A (ja)
CN (1) CN105612501B (ja)
BR (1) BR112016007344A2 (ja)
CA (1) CA2925131A1 (ja)
WO (1) WO2015051201A1 (ja)

Families Citing this family (152)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
US20150169445A1 (en) 2013-12-12 2015-06-18 International Business Machines Corporation Virtual grouping of memory
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
US9367243B1 (en) * 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US11399063B2 (en) 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US8850108B1 (en) 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US10114757B2 (en) 2014-07-02 2018-10-30 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US8874836B1 (en) 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in a non-volatile solid-state storage
US9747229B1 (en) 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
KR102355573B1 (ko) * 2014-10-29 2022-01-27 삼성전자주식회사 선형 리맵퍼 및 액세스 윈도우를 포함하는 메모리 시스템 및 시스템 온 칩
US9720825B2 (en) * 2014-12-19 2017-08-01 Dell Products, Lp System and method for performance optimal partial rank/bank interleaving for non-symmetrically populated DIMMs across DDR channels
US9948615B1 (en) 2015-03-16 2018-04-17 Pure Storage, Inc. Increased storage unit encryption based on loss of trust
US11294893B2 (en) 2015-03-20 2022-04-05 Pure Storage, Inc. Aggregation of queries
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US10082985B2 (en) 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US9672125B2 (en) 2015-04-10 2017-06-06 Pure Storage, Inc. Ability to partition an array into two or more logical arrays with independently running software
US10140149B1 (en) 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US9817576B2 (en) 2015-05-27 2017-11-14 Pure Storage, Inc. Parallel update to NVRAM
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
US10983732B2 (en) 2015-07-13 2021-04-20 Pure Storage, Inc. Method and system for accessing a file
US11232079B2 (en) 2015-07-16 2022-01-25 Pure Storage, Inc. Efficient distribution of large directories
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US9697884B2 (en) * 2015-10-08 2017-07-04 Rambus Inc. Variable width memory module supporting enhanced error detection and correction
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US11762764B1 (en) 2015-12-02 2023-09-19 Pure Storage, Inc. Writing data in a storage system that includes a first type of storage device and a second type of storage device
US9760479B2 (en) * 2015-12-02 2017-09-12 Pure Storage, Inc. Writing data in a storage system that includes a first type of storage device and a second type of storage device
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US10140223B2 (en) 2016-06-27 2018-11-27 Qualcomm Incorporated System and method for odd modulus memory channel interleaving
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
US11449232B1 (en) 2016-07-22 2022-09-20 Pure Storage, Inc. Optimal scheduling of flash operations
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US10216420B1 (en) 2016-07-24 2019-02-26 Pure Storage, Inc. Calibration of flash channels in SSD
US11080155B2 (en) 2016-07-24 2021-08-03 Pure Storage, Inc. Identifying error types among flash memory
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
US10162554B2 (en) * 2016-08-03 2018-12-25 Samsung Electronics Co., Ltd. System and method for controlling a programmable deduplication ratio for a memory system
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US10979223B2 (en) 2017-01-31 2021-04-13 Pure Storage, Inc. Separate encryption for a solid-state drive
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US10944671B2 (en) 2017-04-27 2021-03-09 Pure Storage, Inc. Efficient data forwarding in a networked device
US11467913B1 (en) 2017-06-07 2022-10-11 Pure Storage, Inc. Snapshots with crash consistency in a storage system
US11138103B1 (en) 2017-06-11 2021-10-05 Pure Storage, Inc. Resiliency groups
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
US11947814B2 (en) 2017-06-11 2024-04-02 Pure Storage, Inc. Optimizing resiliency group formation stability
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
US10877827B2 (en) 2017-09-15 2020-12-29 Pure Storage, Inc. Read voltage optimization
US10210926B1 (en) 2017-09-15 2019-02-19 Pure Storage, Inc. Tracking of optimum read voltage thresholds in nand flash devices
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US10884919B2 (en) 2017-10-31 2021-01-05 Pure Storage, Inc. Memory management in a storage system
US11024390B1 (en) 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US10515701B1 (en) 2017-10-31 2019-12-24 Pure Storage, Inc. Overlapping raid groups
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10990566B1 (en) 2017-11-20 2021-04-27 Pure Storage, Inc. Persistent file locks in a storage system
US10929053B2 (en) 2017-12-08 2021-02-23 Pure Storage, Inc. Safe destructive actions on drives
US10719265B1 (en) 2017-12-08 2020-07-21 Pure Storage, Inc. Centralized, quorum-aware handling of device reservation requests in a storage system
US10929031B2 (en) 2017-12-21 2021-02-23 Pure Storage, Inc. Maximizing data reduction in a partially encrypted volume
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US10733053B1 (en) 2018-01-31 2020-08-04 Pure Storage, Inc. Disaster recovery for high-bandwidth distributed archives
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US11494109B1 (en) 2018-02-22 2022-11-08 Pure Storage, Inc. Erase block trimming for heterogenous flash memory storage devices
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US10931450B1 (en) 2018-04-27 2021-02-23 Pure Storage, Inc. Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers
US10853146B1 (en) 2018-04-27 2020-12-01 Pure Storage, Inc. Efficient data forwarding in a networked device
US11436023B2 (en) 2018-05-31 2022-09-06 Pure Storage, Inc. Mechanism for updating host file system and flash translation layer based on underlying NAND technology
US10642733B1 (en) * 2018-07-12 2020-05-05 Lightbits Labs Ltd. System and method for memory interface load balancing
US11438279B2 (en) 2018-07-23 2022-09-06 Pure Storage, Inc. Non-disruptive conversion of a clustered service from single-chassis to multi-chassis
CN112513824B (zh) * 2018-07-31 2024-04-09 华为技术有限公司 一种内存交织方法及装置
US11520514B2 (en) 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US10783025B2 (en) 2018-10-15 2020-09-22 Dell Products, L.P. Method and apparatus for predictive failure handling of interleaved dual in-line memory modules
US10454498B1 (en) 2018-10-18 2019-10-22 Pure Storage, Inc. Fully pipelined hardware engine design for fast and efficient inline lossless data compression
US10976947B2 (en) 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group
US10990517B1 (en) * 2019-01-28 2021-04-27 Xilinx, Inc. Configurable overlay on wide memory channels for efficient memory access
US11334254B2 (en) 2019-03-29 2022-05-17 Pure Storage, Inc. Reliability based flash page sizing
US11775189B2 (en) 2019-04-03 2023-10-03 Pure Storage, Inc. Segment level heterogeneity
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
TWI692774B (zh) 2019-05-15 2020-05-01 瑞昱半導體股份有限公司 記憶體系統及記憶體系統的操作方法
US11714572B2 (en) 2019-06-19 2023-08-01 Pure Storage, Inc. Optimized data resiliency in a modular storage system
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
CN112395216A (zh) * 2019-07-31 2021-02-23 北京百度网讯科技有限公司 用于存储管理的方法、装置、设备和计算机可读存储介质
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11137936B2 (en) * 2020-01-21 2021-10-05 Google Llc Data processing on memory controller
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
US11222258B2 (en) 2020-03-27 2022-01-11 Google Llc Load balancing for memory channel controllers
US11507297B2 (en) 2020-04-15 2022-11-22 Pure Storage, Inc. Efficient management of optimal read levels for flash storage systems
US11256587B2 (en) 2020-04-17 2022-02-22 Pure Storage, Inc. Intelligent access to a storage device
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US11416338B2 (en) 2020-04-24 2022-08-16 Pure Storage, Inc. Resiliency scheme to enhance storage performance
US11768763B2 (en) 2020-07-08 2023-09-26 Pure Storage, Inc. Flash secure erase
EP4189548A1 (en) * 2020-08-03 2023-06-07 ARRIS Enterprises LLC Gateway device with clock speed that reduces electro-magnetic noise
US11681448B2 (en) 2020-09-08 2023-06-20 Pure Storage, Inc. Multiple device IDs in a multi-fabric module storage system
US11513974B2 (en) 2020-09-08 2022-11-29 Pure Storage, Inc. Using nonce to control erasure of data blocks of a multi-controller storage system
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
WO2022160214A1 (zh) * 2021-01-28 2022-08-04 华为技术有限公司 一种访问内存的方法和装置
CN116472520A (zh) * 2021-01-30 2023-07-21 华为技术有限公司 一种访问内存的方法和装置
US11630593B2 (en) 2021-03-12 2023-04-18 Pure Storage, Inc. Inline flash memory qualification in a storage system
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective
US11832410B2 (en) 2021-09-14 2023-11-28 Pure Storage, Inc. Mechanical energy absorbing bracket apparatus
WO2023122127A1 (en) * 2021-12-21 2023-06-29 Sambanova Systems Inc Non-uniform memory interleaving processor and method
CN114661711B (zh) * 2022-03-11 2023-08-29 上海原能细胞生物低温设备有限公司 样本存储位置分配方法、装置、电子设备及存储介质

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5341486A (en) * 1988-10-27 1994-08-23 Unisys Corporation Automatically variable memory interleaving system
JPH11338768A (ja) * 1998-05-22 1999-12-10 Nec Kofu Ltd メモリ制御方法、メモリ制御装置及びその記録媒体
US7114040B2 (en) 2004-03-02 2006-09-26 Hewlett-Packard Development Company, L.P. Default locality selection for memory objects based on determining the type of a particular memory object
US8806103B2 (en) 2004-04-28 2014-08-12 Hewlett-Packard Development Company, L.P. System and method for interleaving memory
TWI299497B (en) * 2004-06-24 2008-08-01 Via Tech Inc Method and related apparatus for accessing memory apparatus
JP2006018489A (ja) * 2004-06-30 2006-01-19 Hitachi Ltd 複数ノード間のメモリインターリーブシステム
US8443162B2 (en) * 2005-01-21 2013-05-14 Qualcomm Incorporated Methods and apparatus for dynamically managing banked memory
US20070022261A1 (en) 2005-07-19 2007-01-25 Gateway Inc. Method of interleaving asymmetric memory arrays
US7552280B1 (en) * 2006-06-28 2009-06-23 Emc Corporation Asymmetrically interleaving access to redundant storage devices
US20080250212A1 (en) 2007-04-09 2008-10-09 Ati Technologies Ulc Method and apparatus for accessing memory using programmable memory accessing interleaving ratio information
US8095735B2 (en) 2008-08-05 2012-01-10 Convey Computer Memory interleave for heterogeneous computing
US8271827B2 (en) 2007-12-10 2012-09-18 Qimonda Memory system with extended memory density capability
US20100115233A1 (en) * 2008-10-31 2010-05-06 Convey Computer Dynamically-selectable vector register partitioning
US8266408B2 (en) 2009-03-17 2012-09-11 Memoir Systems, Inc. System and method for storing data in a virtualized high speed memory system
US8886898B2 (en) 2009-08-19 2014-11-11 Oracle America, Inc. Efficient interleaving between a non-power-of-two number of entities
US9268720B2 (en) * 2010-08-31 2016-02-23 Qualcomm Incorporated Load balancing scheme in multiple channel DRAM systems
US9529712B2 (en) * 2011-07-26 2016-12-27 Nvidia Corporation Techniques for balancing accesses to memory having different memory types

Also Published As

Publication number Publication date
US20150100746A1 (en) 2015-04-09
EP3053044A1 (en) 2016-08-10
CN105612501B (zh) 2018-11-13
CA2925131A1 (en) 2015-04-09
JP2016532926A (ja) 2016-10-20
US9465735B2 (en) 2016-10-11
BR112016007344A2 (pt) 2017-08-01
WO2015051201A1 (en) 2015-04-09
EP3053044B1 (en) 2019-11-20
CN105612501A (zh) 2016-05-25
KR20160064223A (ko) 2016-06-07

Similar Documents

Publication Publication Date Title
JP6378325B2 (ja) 非対称な記憶容量を有する複数チャネルメモリアーキテクチャにわたってデータを均一にインターリーブするためのシステムおよび方法
US9612648B2 (en) System and method for memory channel interleaving with selective power or performance optimization
US10067865B2 (en) System and method for allocating memory to dissimilar memory devices using quality of service
US9110795B2 (en) System and method for dynamically allocating memory in a memory subsystem having asymmetric memory components
US10140223B2 (en) System and method for odd modulus memory channel interleaving
US9430434B2 (en) System and method for conserving memory power using dynamic memory I/O resizing
CN106575273B (zh) 用于扩展片上系统的存储器的系统和方法
US8959298B2 (en) System and method for managing performance of a computing device having dissimilar memory types
US20170109090A1 (en) System and method for page-by-page memory channel interleaving
US20170108914A1 (en) System and method for memory channel interleaving using a sliding threshold address
US20170108911A1 (en) System and method for page-by-page memory channel interleaving
US20160077959A1 (en) System and Method for Sharing a Solid-State Non-Volatile Memory Resource

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160406

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170914

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170914

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180625

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: 20180702

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180726

R150 Certificate of patent or registration of utility model

Ref document number: 6378325

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees