JP2023527770A - メモリにおける推論 - Google Patents

メモリにおける推論 Download PDF

Info

Publication number
JP2023527770A
JP2023527770A JP2022570688A JP2022570688A JP2023527770A JP 2023527770 A JP2023527770 A JP 2023527770A JP 2022570688 A JP2022570688 A JP 2022570688A JP 2022570688 A JP2022570688 A JP 2022570688A JP 2023527770 A JP2023527770 A JP 2023527770A
Authority
JP
Japan
Prior art keywords
memory
subset
data
processing system
memory module
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.)
Pending
Application number
JP2022570688A
Other languages
English (en)
Other versions
JPWO2021242608A5 (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 JP2023527770A publication Critical patent/JP2023527770A/ja
Publication of JPWO2021242608A5 publication Critical patent/JPWO2021242608A5/ja
Pending legal-status Critical Current

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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Medical Informatics (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Artificial Intelligence (AREA)
  • Multi Processors (AREA)
  • Memory System (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)

Abstract

本開示のいくつかの態様は、計算コアを備える拡張メモリモジュールを用いてデータを処理するための方法を提供し、この方法は、ホスト処理システムから拡張メモリモジュールにおいてデータを受信するステップと、ホスト処理システムアドレス指定可能メモリにデータを記憶するステップと、ホスト処理システムアドレス指定可能メモリから計算コアアドレス指定可能メモリにデータを転送するステップと、拡張メモリモジュール上の計算コアを用いてデータを処理して、処理されたデータを生成するステップと、計算コアアドレス指定可能メモリからホスト処理システムアドレス指定可能メモリに処理されたデータを転送するステップと、ホスト処理システムアドレス指定可能メモリを介して処理されたデータをホスト処理システムに提供するステップとを含む。

Description

関連出願の相互参照
本出願は、その内容全体が参照により本明細書に組み込まれている、2020年5月26日に出願された米国特許出願第16/883,869号の利益および優先権を主張する。
本開示の態様は、非伝統的な計算ハードウェアにおいて機械学習および人工知能タスクを実行すること、詳細には、そのようなタスクをメモリハードウェアにおいて実行することに関する。
機械学習および人工知能の能力に対する需要は、ビッグデータの時代に急激に増大している。これまで、予測、分類などの人工知能タスクのための推論を次いで生成することがあるモデルを生成するために、機械学習が使用されてきた。推論能力に対する需要が高まるにつれて、コンピューティングハードウェアのメーカーは、デスクトップコンピュータおよびサーバなどの既存の計算プラットフォーム、ならびにモバイルデバイスおよびエッジ処理デバイスなどの他の新興の種類の処理システムにおいて、推論能力の密度を拡大することを模索している。
従来、機械学習および人工知能「アクセラレータ」が、背後にある計算インフラストラクチャの能力を拡張するために、ハードウェア拡張インターフェース(たとえば、マザーボード上のPCIeスロット)によってシステムに追加されてきた。残念ながら、アクセラレータのためにそのようなハードウェア拡張インターフェースを使用することは、ネットワーキング、グラフィクスレンダリング、セキュリティ、音声処理、および他の一般的な計算タスクなどの他の目的にそれらの同じインターフェースを使用できないことを意味する。したがって、既存の処理システムに、機械学習および人工知能に最適化されたさらなる計算ハードウェアを追加することは、多くの場合、他の重要な計算コンポーネントが犠牲になる。
したがって、必要とされるのは、他の重要なコンポーネントを犠牲にすることなく、既存の処理システムにさらなる機械学習および人工知能計算能力を追加するための、システムと方法である。
本開示のいくつかの態様は、計算コアと、1つまたは複数のデュアルモードメモリ素子とを含む、拡張メモリモジュールを提供し、拡張メモリモジュールは、1つまたは複数のデュアルモードメモリ素子の中の第1のメモリのサブセットをホスト処理システムアドレス指定可能メモリとして割り振り、1つまたは複数のデュアルモードメモリ素子の中の第2のメモリのサブセットを計算コアアドレス指定可能メモリとして割り振り、ホスト処理システムからデータを受信し、計算コアを用いてデータを処理して、処理されたデータを生成し、第1のメモリのサブセットを介して処理されたデータをホスト処理システムに提供するように構成される。
さらなる態様は、計算コアを備える拡張メモリモジュールを用いてデータを処理するための方法を提供し、この方法は、拡張メモリモジュールの第1のメモリのサブセットをホスト処理システムアドレス指定可能メモリとして割り振り、拡張メモリモジュールの第2のメモリのサブセットを計算コアアドレス指定可能メモリとして割り振ることによって、拡張メモリモジュールを初期化するステップと、ホスト処理システムから拡張メモリモジュールにおいてデータを受信するステップと、拡張メモリモジュール上の計算コアを用いてデータを処理して、処理されたデータを生成するステップと、第1のメモリのサブセットを介して処理されたデータをホスト処理システムに提供するステップとを含む。
さらなる態様は、ホスト処理システムの1つまたは複数のプロセッサによって実行されると、計算コアを備える拡張メモリモジュールを用いてデータを処理するための方法を処理システムに実行させる命令を備える、非一時的コンピュータ可読媒体を提供し、この方法は、拡張メモリモジュールの第1のメモリのサブセットをホスト処理システムアドレス指定可能メモリとして割り振り、拡張メモリモジュールの第2のメモリのサブセットを計算コアアドレス指定可能メモリとして割り振ることによって、拡張メモリモジュールを初期化するステップと、ホスト処理システムから拡張メモリモジュールにおいてデータを受信するステップと、拡張メモリモジュール上の計算コアを用いてデータを処理して、処理されたデータを生成するステップと、第1のメモリのサブセットを介して処理されたデータをホスト処理システムに提供するステップとを含む。
以下の説明および関連する図面は、1つまたは複数の実施形態のいくつかの例示的な特徴を詳細に記載する。
添付の図は、1つまたは複数の実施形態のいくつかの態様を示し、したがって、本開示の範囲を制限すると見なされるべきではない。
メモリ統合アクセラレータを含む拡張メモリモジュールの例を示す図である。 図1に関して説明されたような、拡張メモリモジュールを含む例示的な処理システムを示す図である。 拡張メモリモジュールの例示的な構成を示す図である。 拡張メモリモジュールの例示的な構成を示す図である。 拡張メモリモジュールの例示的な構成を示す図である。 拡張メモリモジュール上の計算コアメモリ素子にデータを送信するための例示的な方法を示す図である。 拡張メモリモジュール上の計算コアメモリ素子からデータを転送するための例示的な方法を示す図である。 拡張メモリモジュール上の計算コアを用いてデータを処理するための例示的な方法を示す図である。 拡張メモリモジュールを構築するための例示的な方法を示す図である。 拡張メモリモジュールを含むシステムを処理するための例示的なメモリマッピングを示す図である。 計算コアを備える拡張メモリモジュールを用いてデータを処理するための例示的な方法を示す図である。 拡張メモリモジュールを用いてデータ処理を実行するように構成されてもよい例示的な電子デバイスを示す図である。
理解を容易にするために、可能な場合、図面に共通の同一の要素を指定するために同一の参照番号が使用されている。有利には、一実施形態の要素および特徴がさらなる記載なしで他の実施形態に組み込まれることがあると考えられる。
本開示の態様は、コンピュータ、サーバ、および他のコンピュータ処理デバイスなどの処理システムの中のメモリハードウェアに、さらなる機械学習および人工知能計算能力を追加するための、システムおよび方法を提供する。
従来のコンピュータ処理システムは、DIMMインターフェースなどのインターフェースを介してDRAMモジュールなどのメモリモジュールに接続される、かつPCIeインターフェースなどの他のインターフェースを介して他の周辺機器に接続される、プロセッサを含んでもよい。機械学習および人工知能「アクセラレータ」に対する需要が高まっているので、既存のコンピュータ処理システムに対する1つの解決策は、利用可能なPCIeスロットなどの利用可能なシステムインターフェースにそのようなアクセラレータを接続することであった。しかしながら、どのような所与のシステムにおいてもそのような周辺インターフェーススロットの数は限られていることがあり、具体的には、従来のコンピュータ処理システムは、PCIeスロットより多数のDIMMスロットを一般に含むことがある。
本明細書において説明されるのは、訓練および推論などの機械学習および人工知能タスクを実行するように構成される統合アクセラレータを備える、拡張メモリモジュールである。メモリ統合アクセラレータは、たとえばデータと命令の通信のために標準的なメモリインターフェースを使用して、Load Reduced DIMM (LRDIMM)またはRegistered DIMM (RDIMM)などの業界標準のデュアルインラインメモリモジュール(DIMM)において実装されてもよい。いくつかの実施形態では、拡張メモリモジュールは、たとえば「ML-DIMM」、「AI-DIMM」、または「Inference DIMM」と呼ばれてもよい。
様々な実施形態において、メモリ統合アクセラレータは、1つまたは複数の処理コアを備え、拡張メモリモジュールへと統合されるシステムオンチップ(SoC)としてさらに構成されてもよい。それらの処理コアは、従来の記憶と検索を超えるデータのオンメモリ処理を可能にする。具体的には、それらの処理コアは、オンメモリ機械学習および人工知能タスクを実行するように構成されてもよい。
さらに、本明細書において説明される拡張メモリモジュールは、標準的なメモリモジュール構成におけるようなホスト処理システムと、オンメモリ機械学習および人工知能タスクのためのメモリ統合アクセラレータとの間の、各々の拡張メモリモジュールの中のメモリ素子および/またはメモリ空間を区分して割り振るように構成されてもよい。いくつかの実施形態では、ファームウェア要素は、ホスト処理とブート時のオンメモリ処理との間のメモリの割り振りを構成してもよい。
拡張メモリモジュールの中のメモリの区分はまた、処理システム全体の性能が様々なタスクと性能の需要に対して調節されてもよいように、拡張メモリモジュールを含むデバイスにインストールされるプログラム、アプリケーションによって、動的に構成されてもよい。そして、有利なことに、拡張メモリモジュールは、普通のメモリモジュールとして振る舞い、ホスト処理システムが利用可能であるメモリの容量を最大にするように構成されてもよく、または、そのメモリの一部またはすべてをメモリ統合アクセラレータに割り振り、ホスト処理システムの機械学習および人工知能計算能力を最大にするように構成されてもよい。
したがって、本明細書において説明される実施形態は、有益なことに、利用可能なインターフェース(たとえば、PCIe)がないことにより他の重要なコンポーネントを取り除くことなく、またはその使用を妨げることなく、さらなる物理インターフェースを追加または改変することなく、かつ完全に新しいインターフェースを実装する必要なく、機械学習および人工知能タスクなどの計算タスクのための処理システムによって追加の計算リソースが利用されることを可能にする。追加の計算リソースは、既存の処理システムならびに新しい処理システムのための能力を大きく高める。さらに、本明細書において説明される実施形態は、有益なことに、処理システムの利用率を最大にするためにユーザが異なる状況において異なる動作モードを選択することを可能にする、デュアル動作モードアーキテクチャを利用する。
本明細書において説明される実施形態は、多くの状況において使用されてもよい。たとえば、サーバを利用するデータセンターは、本明細書において説明される実施形態を実施して、同じ量の計算容量を得ながら調達するサーバをより少なくすることができ、これは、機器の費用、電力および冷却の費用、空間の費用を節約し、より電力効率の高い処理センターも実現する。別の例として、デスクトップおよび/または消費者向けコンピューティングシステムは、外部のデータ処理能力(たとえば、クラウド処理サービスにより提供されるような)に依存するのではなく、本明細書において説明される実施形態を実装して、より高いデータ処理能力を家庭用コンピュータにもたらしてもよい。さらに別の例として、モノのインターネット(IoT)デバイスは、本明細書において説明される実施形態を実装して、データ処理能力を完全に新しいタイプのデバイスに拡張し、「エッジ」における処理(たとえば、機械学習および人工知能推論)をさらに可能にしてもよい。
メモリ統合処理コアを用いた例示的な拡張メモリモジュール
図1は、メモリ統合アクセラレータ104を含む拡張メモリモジュール102の例を示す。
いくつかの実施形態では、拡張メモリモジュール102は、LR-DIMMフォームファクタ、またはメモリモジュールのための別の標準化されたフォームファクタなどの、ある標準化されたフォームファクタに従って作られる。拡張メモリモジュール102のために標準化されたフォームファクタを利用することは、背後のシステムインターフェースまたはメモリアクセスプロトコルへの修正なしで、それが既存の処理システムへと統合されることを可能にする。この例では、メモリモジュール102は、処理システムにおいてDIMMスロットとインターフェースするためのピン116を含む。
メモリモジュール102は複数のメモリ素子112A-Fを含み、これらは、たとえばダイナミックランダムアクセスメモリ(DRAM)、同期DRAM(SDRAM)、低電力ダブルデータレート(LPDDR)DRAM、高帯域幅メモリ(HMB)、グラフィクスDDR(GDDR)メモリ、および他のものであってもよい。いくつかの例では、メモリ素子112A-Fは、異なるタイプのメモリ素子の混合を含んでもよい。
メモリ素子112A-Fの各々は、隣接するメモリバッファ114A-Fに接続され、これは、ホスト処理システム(図示せず)によってメモリ素子112A-Fから読み取られたデータおよびそれらに書き込まれるデータをバッファリングするために使用される。
メモリ素子112A-Fは一般に、デュアルモードまた二重目的メモリ素子と呼ばれることがあり、それは、それらのメモリの全体または一部が、オンメモリ処理を実行するためのメモリ統合アクセラレータ104に、および/または従来のシステムメモリ機能を実行するためのホスト処理システムに割り振られることがあるからである。図3A~図3Cは、異なるメモリ割り振りのいくつかの例を説明する。
メモリ統合アクセラレータ104は、メモリモジュール102を初期化するように構成されてもよい、ファームウェアを記憶するように構成されるフラッシュメモリ106を含む。たとえば、ファームウェアは、拡張メモリモジュール上の計算コア108および任意の他の論理を初期化するように構成されてもよい。加えて、メモリコントローラ(図示せず)は、計算コア108および/またはホスト処理システムによる使用のためにメモリ素子112A-Fを初期化するように構成されてもよい。
いくつかの実施形態では、メモリ素子112A-Fの初期化はアクセラレータ104によって扱われてもよく、このことは、ホスト処理システムのブート時間を(たとえば、それを減らすことによって)改善することがある。そのような場合、ホスト処理システムのメモリドライバは、メモリインターフェースを初期化するだけでよい。
いくつかの実施形態では、フラッシュメモリモジュール106の中のファームウェアは、ブート時にメモリモジュール102を構成し、メモリ容量(たとえば、メモリ素子および/またはメモリ範囲、アドレスなどを含む)の一部またはすべてをアクセラレータ104に割り振る(またはマッピングする)ことがある。アクセラレータ104に割り振られるメモリの量をランタイムとランタイムの間で変更できるように、フラッシュメモリモジュール106の中のファームウェアが更新されてもよい。メモリ素子112A-Fからのメモリ(たとえば、メモリアドレスの範囲)がブート時に割り振られる実施形態では、組み込む側の処理システムは、利用可能な残りのメモリ(アクセラレータ104に割り振られたメモリを除く)を「見る」だけであり、アクセラレータ104に割り振られたメモリに書き込もうとせず、それによりメモリの競合を避ける。
いくつかの実施形態では、フラッシュメモリモジュール106の中のファームウェアは、ブート時に初期のメモリ割り振りを構成してもよく、これはその後、組み込む側の処理システムからの命令により動的に変更されてもよい。そのような場合、組み込む側の処理システムのオペレーティングシステムは、競合を避けるために、処理システムが使用するメモリを動的に割り振り直すように構成されてもよい。
アクセラレータ104は1つまたは複数の計算コア108を含み、これらは、訓練および推論などの機械学習および人工知能タスクを含めた、様々なタイプの処理タスクを実行するように構成されてもよい。いくつかの実施形態では、計算コア108の1つまたは複数は、いくつか例を挙げると、ARM(商標)アーキテクチャ、縮小命令セットコンピュータ(RISC)アーキテクチャ、または複合命令セットコンピュータ(CISC)アーキテクチャに基づいてもよい。
いくつかの実施形態では、計算コア108は、従来のメモリモジュール上のレジストリクロックドライバチップまたは回路の機能を置き換えて統合する。
アクセラレータ104はさらに複数のメモリ素子110A-Bを含み、これらは、計算コア108に専用であり、または言い換えると、シングルモードまたは単一目的メモリ素子である。メモリ素子110A-Bは計算コア108に専用であるので、メモリ素子110A-Bに関連するメモリは、ホスト処理システムによってアドレス指定可能ではない。専用メモリ素子110A-Bにより、アクセラレータ104は常に計算タスクを実行できるようになる。いくつかの例では、メモリ素子110A-Bは、訓練または推論などの機械学習または人工知能タスクを実行するように構成される機械学習モデルのために、重み、バイアスなどのモデルパラメータをロードするように構成されてもよい。
いくつかの実施形態では、アクセラレータ104は、メモリモジュール102と統合される、システムオンチップ(SOC)として実装されてもよい。
特に、図1の各種の素子(たとえば、メモリ、バッファ、フラッシュ、計算コアなど)の数は一例にすぎず、多くの他の構成が可能である。さらに、メモリモジュール102の片側にすべての素子があるものとして示されているが、他の実施形態では、メモリモジュール102は、追加のメモリ素子、バッファ、計算コア、フラッシュメモリモジュールなどの追加の素子を反対側に含んでもよい。
拡張メモリモジュールを含む例示的な処理システム
図2は、図1に関して説明された102などの、拡張メモリモジュールを含む例示的な処理システム200を示す。
この例では、処理システム200は、オペレーティングシステム(OS)ユーザ空間202、OSカーネル空間212、およびCPU218を含むソフトウェアスタックを実装する。ソフトウェアスタックは、拡張メモリモジュール224Aおよび224Bとインターフェースするように構成される。
一般に、オペレーティングシステムは、悪意のあるまたは誤ったソフトウェア挙動からのメモリの保護とハードウェアの保護を行うために、202などのOSユーザ空間と212などのOSカーネル空間との間で仮想メモリを分離するように構成されてもよい。この例では、OSユーザ空間202は、ML/AIアプリケーション208およびアクセラレータランタイムアプリケーション210などの、アプリケーションソフトウェアが実行するメモリエリアである。一方、カーネル空間212は、たとえばメモリドライバ214およびアクセラレータドライバ216などの、特権的なオペレーティングシステムカーネル、カーネル拡張、およびデバイスドライバを実行するために確保されるメモリ空間である。
さらにこの例では、OSユーザ空間202は、機械学習および/または人工知能アプリケーション208を含み、それは、データ206を処理するように構成される1つまたは複数のモデル204(たとえば、人工ニューラルネットワークモデルなどの機械学習モデル)を実装してもよい。モデル204は、たとえば重み、バイアス、および他のパラメータを含んでもよい。データ206は、たとえばビデオデータ、画像データ、オーディオデータ、テキストデータ、ならびに、画像認識と分離、発話認識と翻訳、値予測、および他のものなどの様々な機械学習タスクを実行するためにモデル204がそれに対して動作してもよい他のタイプのデータを含んでもよい。
ML/AIアプリケーション208はさらに、アクセラレータランタイムアプリケーション210とインターフェースするように構成され、これは、拡張メモリモジュール224A-Bにおいて見出されるような、処理アクセラレータにデータ処理要求を向けるように構成されるユーザ空間プロセスである。特に、単一のML/AIアプリケーション208が図2に示されるが、これは一例にすぎず、他のタイプの処理アプリケーションが、OSユーザ空間202に存在し、拡張メモリモジュール224A-Bを活用するように構成されてもよい。
アクセラレータランタイムアプリケーション210は、OSカーネル空間212においてアクセラレータドライバ216とインターフェースするように構成される。一般に、OSカーネル空間212におけるドライバは、処理システム200などの処理システムに取り付けられる特定のタイプのデバイスを制御するように構成されるソフトウェアである。たとえば、ドライバは、メモリ管理ユニット220などのハードウェアデバイスにソフトウェアインターフェースを提供してもよく、これは、ハードウェアデバイスについての正確な詳細を知る必要なく、オペレーティングシステムおよび他のコンピュータプログラムがハードウェアデバイスの機能にアクセスすることを可能にする。
この例では、アクセラレータドライバ216は、メモリドライバ214によって拡張メモリモジュール224A-Bにアクセスを提供するように構成される。いくつかの実施形態では、アクセラレータドライバ216は、拡張メモリモジュール224A-Bによって使用されるプロトコルを実施するように構成される。この目的で、アクセラレータドライバ216は、コマンドを拡張メモリモジュール224A-Bに送信するためにメモリドライバ214と対話してもよい。たとえば、そのようなコマンドは、ホスト処理システムに割り振られたメモリから拡張メモリモジュール224A-Bのアクセラレータに(たとえば、計算コアに)割り振られたメモリにデータを転送し、データを処理することを開始し、またはアクセラレータに割り振られたメモリからホスト処理システムに割り振られたメモリにデータを転送するように構成される。
いくつかの実施形態では、アクセラレータドライバ216は、拡張メモリモジュール224A-Bのメモリに書き込むために、またはそれから読み取るために、特定のメモリアドレスを使用してプロトコルを実装することができる。いくつかの場合、メモリアドレスは、拡張メモリモジュールに物理的にマッピングされてもよい。アクセラレータドライバ216はまた、OSユーザ空間202がアクセス可能ではない拡張メモリモジュール224A-B上のメモリアドレスへのアクセス権を有することがあり、これは、拡張メモリモジュール224A-Bのアクセラレータに割り振られたメモリへと、次いでそれらの拡張メモリモジュールの計算コアへとデータをコピーするために使用されることができる。
さらに、アクセラレータ216は、メモリドライバ214とインターフェースするように構成される。メモリドライバ214は、拡張メモリモジュール224A-Bのメモリ素子への低水準のアクセス権を提供するように構成される。たとえば、メモリドライバ214は、拡張メモリモジュール224A-Bに直接アクセラレータドライバ216によって生成されるコマンドを通すように構成されてもよい。メモリドライバ214は、オペレーティングシステムのメモリ管理の一部であってもよいが、本明細書において説明される拡張メモリモジュール機能を有効にするように改変されてもよい。たとえば、メモリドライバ214は、アクセラレータに(たとえば、計算コアに)割り振られたメモリと、拡張メモリモジュール224A-B内のホスト処理システムに割り振られたメモリとの間でデータがコピーされている期間、拡張メモリモジュール224A-Bへのアクセスをブロックするように構成されてもよい。
メモリドライバ214は、メモリ管理ユニット(MMU)220とインターフェースするように構成され、これは、CPU218などのプロセッサに関連するメモリおよびキャッシュ動作を管理するように構成されるハードウェアコンポーネントである。
メモリ管理ユニット220は、メモリコントローラ222とインターフェースするように構成され、これは、ホスト処理システムのメインメモリに向かう、およびそれから来るデータの流れを管理するように構成される、ハードウェアコンポーネントである。いくつかの実施形態では、メモリコントローラ222は、別個のチップであり、または、CPU218のようなマクロプロセッサの一体部分である(この場合、それは統合メモリコントローラ(IMC)と呼ばれることがある)など、別のチップへと統合される。メモリコントローラ222は代替として、メモリチップコントローラ(MCC)またはメモリコントローラユニット(MCU)と呼ばれることもある。
この例では、メモリコントローラ222は、拡張メモリモジュール224A-Bへの、およびそれからのデータの流れを制御するように構成される。いくつかの実施形態では、上で説明されたように、拡張メモリモジュール224A-Bは拡張されたDIMMであってもよい。
拡張メモリモジュール224A-Bはそれぞれドライバ226A-Bを含み、これは処理システム200の要素との通信を可能にする。たとえば、ドライバ226A-Bは、メモリコントローラ222とのDIMMインターフェースを介して処理システム200の他の要素との通信を可能にしてもよい。
一般的に、ML/AIアプリケーション208は、モデル204を介したデータ206の処理がアクセラレータランタイムアプリケーション210を通じて拡張メモリモジュールによって実行されることを要求してもよく、アクセラレータランタイムアプリケーション210は、アクセラレータドライバ216に、次いで別の従来のメモリドライバであってもよいメモリドライバ214に要求を通信する。メモリドライバ214は次いで、メモリ管理ユニット220およびメモリコントローラ222を介して、拡張メモリモジュール224A-Bの1つまたは複数に処理命令およびデータをルーティングしてもよい。これは処理の流れの一例にすぎず、他の処理の流れが可能である。
いくつかの実施形態では、複数の拡張メモリモジュール(たとえば、224A-B)が同じアプリケーション(たとえば、ML/AIアプリケーション208)のために使用されている場合、アクセラレータランタイムアプリケーション210およびアクセラレータドライバ216は、システム全体でデータを管理するために協力してもよい。たとえば、アクセラレータランタイムアプリケーション210は、アクセラレータドライバ216から全体の利用可能なアクセラレータにより割り振られるメモリ(および拡張メモリモジュールの数)を要求し、次いで、単一の拡張メモリモジュールが全体の作業負荷を負うことができない場合、可能な限り効率的に拡張メモリモジュール間で作業負荷を区分してもよい。別の例として、複数の作業負荷および複数の拡張メモリモジュールがあると、アクセラレータランタイムアプリケーション210は、性能を最大にするために作業負荷を利用可能な拡張メモリモジュールに区分するように構成されてもよい。
CPU218は一般に、固有の処理コアの1つまたは複数を備える中央処理装置であってもよい。この例では、CPU218は拡張メモリモジュール224A-BにルーティングされたML/AIアプリケーションからの特定の処理要求を実行していないが、他の例では、CPU218は、拡張メモリモジュール224A-Bと協力して、ML/AIアプリケーション208(および他のアプリケーション)からの要求の並列処理を実行してもよい。
さらに、この例では処理システム200のいくつかの態様が図示され説明されたが、処理システム200は他のコンポーネントを含んでもよい。たとえば、処理システム200は、追加のアプリケーション、追加のハードウェア素子(たとえば、図10に関して説明されたような他の種類の処理ユニット)などを含んでもよい。図2は、説明された実施形態に関連する処理システム200のいくつかの要素に意図的に注目している。
拡張メモリモジュールのための例示的な動作モード
図3A~図3Cは、拡張メモリモジュール(たとえば、図1の102および図2の224A-B)のための例示的なメモリ割り振り構成を示す。
図3Aにおいて、拡張メモリモジュール302は、たとえばブート時にフラッシュメモリ306の中のファームウェアによって、計算コア308によるあらゆる処理のためにその専用メモリ素子310A-Bのみを使用するように構成される。この構成では、拡張メモリモジュール302は、最大の容量をシステムメモリに提供するように設定される。
図3Bにおいて、拡張メモリモジュール302は、計算コア308によるあらゆる処理のために、メモリ素子312A-Cによって提供されるメモリ空間に加えて、その専用メモリ素子310A-Bを使用するように構成される。一方、メモリ素子312D-Fによって提供されるメモリ空間は、従来のシステムメモリのように、ホスト処理システムのために確保される。したがって、この構成では、拡張メモリモジュール302は、ホスト処理システムメモリの需要とオンモジュール計算能力のバランスをとるように設定される。
図3Cにおいて、拡張メモリモジュール302は、計算コア308によるあらゆる処理のために、メモリ素子312A-Fによって提供されるメモリ空間に加えて、その専用メモリ素子310A-Bを使用するように構成される。したがって、この構成では、拡張メモリモジュール302は、オンモジュール計算能力を最大にするように設定される。特に、そのような構成では、別の拡張メモリモジュールまたは別の従来のメモリモジュールは、ホスト処理システム動作のためにホスト処理システムアドレス指定可能メモリを提供してもよい。
特に、この例では様々なメモリ素子が計算コア308またはホストシステムメモリに割り振られるものとして示されているが、この表現は便宜的なものである。たとえば、仮想メモリアドレス空間は、それらのアドレス空間が物理メモリ素子内の物理メモリアドレスに(たとえば、ページテーブルによって)どのように割り振られるかにかかわらず、オンメモリ計算またはホストシステム処理のいずれかに割り振られてもよい。
さらに、図3A~図3Cに示される例示的な構成は、いくつかの例証の可能性にすぎない。拡張メモリモジュール302によって提供され計算コア308に割り振られるホスト処理システムメモリ空間の量は、利用可能なホスト処理システムアドレス指定可能メモリ素子の0%と100%の間の任意の比であってもよい。しかしながら、いくつかの実施形態では、計算コア308に割り振られるメモリ空間の比は、各拡張メモリモジュール上の少なくとも一部のメモリ空間がホストシステムのために確保されるように制限されてもよい。
拡張メモリモジュール上の計算コアメモリ素子にデータを転送するための例示的な方法
図4は、拡張メモリモジュール上の計算コアメモリ素子(たとえば、図1の102、図2の224A-B、および図3A~図3Cの302)にデータを転送するための例示的な方法を示す。
方法400は、拡張メモリプロトコルを介してデータコマンドを受信して拡張メモリモジュール上の計算コアメモリ素子へとデータを転送する、ステップ402において開始する。いくつかの実施形態では、図2に関して上で論じられたものなどのアクセラレータドライバは、拡張メモリプロトコルを介してコマンドを生成してもよい。
この例では、計算コアメモリ素子は、図3のメモリ素子310A-Bなどの指定された計算コアメモリ素子であってもよく、または、図3のメモリ素子312A-Cなどの計算コアに割り振られたデュアルモードメモリ素子であってもよいことに留意されたい。さらに、メモリ素子に、およびメモリ素子からデータを転送することに関して方法400が説明されているが、これは例証を簡単にするためである。計算コアに割り振られたメモリは、メモリアドレス、メモリ空間、または任意の他の論理的なならびに物理的なメモリの区分の範囲であってもよい。
方法400は次いで、拡張メモリモジュール上のメモリ素子へのアクセスのためのホスト処理システムのコマンドをブロックするステップ404に進む。これは、拡張メモリモジュール上で計算コアを用いてデータコマンドを処理しながら、あらゆる競合を防ぐためである。
いくつかの実施形態では、図2に関して上で論じられたものなどのメモリドライバは、ホスト処理システムのコマンドをブロックするように構成されてもよい。
方法400は次いで、データが拡張メモリモジュール上で移動されている間、ホスト処理システムからの読み取り要求をブロックするためにデータバスをビジー状態に設定するステップ406に進む。これは、拡張メモリモジュール上で計算コアを用いてデータコマンドを処理しながら、あらゆる中断を防ぐためである。
方法400は次いで、ホスト処理システムに割り振られたメモリ素子から拡張メモリモジュール上の計算コアに割り振られるメモリ素子にデータを転送するステップ408に進む。上のように、計算コアに割り振られたメモリ素子は、図3のメモリ素子310A-Bなどの指定された計算コアメモリ素子、または、図3のメモリ素子312A-Cなどの計算コアに割り振られたデュアルモードメモリ素子を含んでもよい。ここで、計算コアメモリ素子に移されるデータは、処理対象のデータ、ならびにデータをどのように処理すべきかについての命令を含んでもよい。たとえば、データは、処理対象のデータ(たとえば、図2の206)、モデルデータ(たとえば、図2の204)、および処理コマンドを含んでもよい。
方法400は次いで、データ転送が完了したかどうかを決定するステップ410に進む。完了していない場合、方法はステップ408に戻り、データ転送を続ける。
転送がステップ410において完了する場合、方法400は、ビジー状態がデータバスからなくされるステップ412に進む。
方法400は、ホスト処理システムとの正常なメモリ動作が継続できるように、ホスト処理システムに割り振られたメモリ素子へのホスト処理システムのコマンドのブロックを解除するステップ414に進む。
方法400は次いで、図6に関して以下でより詳しく説明されるものなどの、拡張メモリモジュールの1つまたは複数の計算コアを用いてデータを処理するステップ416に進む。たとえば、データを処理することは、訓練または推論などの機械学習タスクを実行することを含んでもよい。
拡張メモリモジュール上の計算コアメモリ素子からデータを転送するための例示的な方法
図5は、拡張メモリモジュール(たとえば、図1の102、図2の224A-B、および図3A~図3Cの302)上の計算コアからデータを転送するための例示的な方法500を示す。たとえば、方法500は、データの処理が図4のステップ416において完了した後で実行されてもよい。
方法500は、拡張メモリプロトコルを介して結果コマンドを受信して拡張メモリモジュール上の計算コアメモリ素子からデータを転送する、ステップ502において開始する。この例では、計算コアメモリ素子は、図3のメモリ素子310A-Bなどの指定された計算コアメモリ素子であってもよく、または、図3のメモリ素子312A-Cなどの計算コアに割り振られたデュアルモードメモリ素子であってもよいことに留意されたい。
方法500は次いで、拡張メモリモジュール上のメモリ素子へのアクセスのためのホスト処理システムのコマンドをブロックするステップ504に進む。これは、拡張メモリモジュール上でデータコマンドを処理しながら、あらゆる競合を防ぐためである。
方法500は次いで、データが拡張メモリモジュール上で移動されている間、ホスト処理システムからの読み取り要求をブロックするためにデータバスをビジー状態に設定するステップ506に進む。
方法500は次いで、計算コアメモリ素子から拡張メモリモジュール上のホスト処理システムに割り振られるメモリ素子にデータを転送するステップ508に進む。上のように、計算コアに割り振られたメモリ素子は、図3のメモリ素子310A-Bなどの指定された計算コアメモリ素子、または、図3のメモリ素子312A-Cなどの計算コアに割り振られたデュアルモードメモリ素子を含んでもよい。
方法500は次いで、転送が完了したかどうかを決定するステップ510に進む。完了していない場合、方法はステップ508に戻り、データ転送を続ける。
転送がステップ510において完了する場合、方法500は、ビジー状態がデータバスからなくされるステップ512に進む。
最後に、方法500は、ホスト処理システムとの正常なメモリ動作が継続できるように、ホスト処理システムに割り振られたメモリ素子へのホスト処理システムのコマンドのブロックを解除するステップ514に進む。
拡張メモリモジュール上で計算コアを用いてデータを処理するための例示的な方法
図6は、拡張メモリモジュール上で計算コアを用いてデータを処理するための例示的な方法600を示す。たとえば、拡張メモリモジュール(たとえば、図1の102、図2の224A-B、および図3A~図3Cの302)の計算コアを用いてデータを処理することは、図4に関して上で説明されたように拡張メモリモジュール上の計算コアメモリ素子にデータを転送した後に行われてもよい。処理対象のデータは、アプリケーション、センサ、他のプロセッサなどによって生成されてもよい。たとえば、処理対象のデータは、画像、ビデオ、または音声データを備えてもよい。
方法600は、拡張メモリモジュール上でデータを処理するための要求者からのコマンドを受信するステップ602において開始する。たとえば、要求者は、図2のML/AIアプリケーション208などのデータ処理アプリケーションであってもよい。
いくつかの実施形態では、要求者は、どれだけの拡張メモリモジュールがシステムにおいて構成されるか、ならびにそれらの拡張メモリモジュール上のどれだけのメモリがアクセラレーションベースの作業負荷を実行することに割り振られるかを決定するように、アクセラレータランタイムアプリケーション(たとえば、図2の210)にクエリする。アクセラレータランタイムアプリケーションは次いで、この情報を得るようにアクセラレータドライバ(たとえば、図2の216)にクエリしてもよい。この情報により、要求者は、作業負荷が設定された量のメモリに収まり、それに従って作業負荷を実行できるかどうかを決定することができる。利用可能なメモリの量が作業負荷に不十分である場合、要求者は、利用可能なメモリを利用できるようにするために、作業負荷のサイズを減らすまたは作業負荷を分割するなど、作業負荷を再構成してもよい。
方法600は次いで、拡張メモリモジュールの中の計算コアメモリ素子へとデータをロードするステップ604に進む。上で説明されたように、計算コアメモリ素子は、専用メモリ素子または動的に割り振られたメモリ素子であってもよい。いくつかの実施形態では、ステップ604は、図4に関して説明された方法400に従って実行される。
いくつかの実施形態では、要求者(たとえば、図2のML/AIアプリケーション208)は、アクセラレータランタイムアプリケーション(たとえば、図2の210)にデータを送信し、これはデータをアクセラレータドライバ(たとえば、図2の216)にデータを転送する。アクセラレータドライバは次いで、データをメモリドライバ(たとえば、図2の214)にロードするためのプロトコルコマンドを送信してもよく、メモリドライバは次いで、そのコマンドを拡張メモリモジュール(たとえば、図2の224A-B)に送信する。
方法600は次いで、以下でより詳しく説明されるように、拡張メモリプロトコルを介して処理コマンドを受信するステップ606に進む。処理コマンドは、拡張メモリモジュールの処理コアに、計算コアメモリ素子に記憶されたデータのデータ処理を実行させるように構成されてもよい。
いくつかの実施形態では、データをロードした後、アクセラレータドライバ(たとえば、図2の216)は、データを処理するためのプロトコルコマンドをメモリドライバ(たとえば、図2の214)に送信し、これは次いで、実行のためにそのコマンドを拡張メモリモジュール(たとえば、図2の224A-B)に転送する。
方法600は次いで、拡張メモリモジュール上で計算コアによって計算コアメモリ素子に記憶されたデータを処理するステップ608に進む。いくつかの実施形態では、この処理は、訓練または推論などの機械学習および/または人工知能タスクに関係してもよい。さらに、いくつかの実施形態では、機械学習タスクは、単一の拡張メモリモジュール上の複数の計算コアにわたって、ならびに複数の拡張メモリモジュールにわたって並列処理されてもよい。
方法600は次いでステップ610に進み、そこで、作業負荷の処理がまだ完了していない場合、方法600はステップ608に戻る。
ステップ610において、作業負荷の処理が完了している場合、方法600はステップ612に進み、拡張メモリプロトコルを介して結果信号が送信される。
いくつかの実施形態では、アクセラレータドライバ(たとえば、図2の216)は、いつ処理が完了したかを決定するように、拡張メモリモジュール(たとえば、図2の224A-B)に定期的にクエリしてもよい。処理が完了すると、拡張メモリモジュールは、処理が完了していることを示す信号をバス上で出力してもよい。次いで、アクセラレータドライバが拡張メモリモジュールにクエリを行う次の時に、アクセラレータドライバは結果信号を観察する。
方法600は次いでステップ612に進み、計算コアメモリ素子から拡張メモリモジュール上のホスト処理システムに割り振られるメモリ素子に、処理されたデータが移される。たとえば、図3Bに関して、データは、計算コアに割り振られるメモリ素子310A-Bおよび312A-Cの1つまたは複数から、ホスト処理システムに割り振られるメモリ素子312D-Fの1つまたは複数に移されてもよい。
いくつかの実施形態では、処理が完了した後、アクセラレータドライバ(たとえば、図2の216)は、プロトコルコマンドをメモリドライバ(たとえば、図2の214)に送信してデータを取り出す。メモリドライバは次いで、このコマンドを拡張メモリモジュールに渡し、これは次いで、処理されたデータをホスト処理システムアドレス指定可能メモリにコピーする。
方法600は次いでステップ614において終結し、処理されたデータが、拡張メモリモジュール上のホスト処理システムに割り振られたメモリ素子から要求者に提供される。
いくつかの実施形態では、アクセラレータドライバ(たとえば、図2の216)は、処理されたデータを読み出すためのコマンドをメモリドライバ(たとえば、図2の214)に送信する。メモリドライバは次いで、これらの読み取り要求を拡張メモリモジュールに転送する。アクセラレータドライバは、アクセラレータランタイムアプリケーション(たとえば、図2の210)によって、これらの結果を要求者に戻す。
拡張メモリプロトコルの例示的な態様
拡張メモリモジュール(たとえば、図1の102または図2の224A-Bまたは図3A-Cの302)と対話するために、拡張メモリプロトコルが実装されてもよい。いくつかの実施形態では、拡張メモリプロトコルは、電子素子技術連合評議会(JEDEC: Joint Electron Device Engineering Council)プロトコルに基づく、またはその拡張であってもよい。
いくつかの実施形態では、拡張メモリプロトコルは、図1に関して説明されたアクセラレータ104などの、メモリ統合アクセラレータとインターフェースするための種々のコマンドを実施してもよい。
たとえば、拡張メモリプロトコルは、たとえば図1に関して上で説明されたモジュール106などのフラッシュメモリモジュールからファームウェアをロードし、メモリ統合アクセラレータを初期化するように構成される、「初期化」信号(またはコマンド)を含んでもよい。
拡張メモリプロトコルはさらに、拡張メモリモジュール(たとえば、図1の102、図2の224A-B、および図3A~図3Cの302)上でシステムメモリ(たとえば、図3Bの312D-F)に割り振られたメモリ素子から、上で説明されたように静的であってもまたは動的に割り振られてもよい計算コアメモリ素子(たとえば、図3Bの312A-C)に、図4に関して説明された方法などによってデータを転送するためのプロセスを開始するように構成される、「データ」信号(またはコマンド)を含んでもよい。
「データ」信号は、システムにより割り振られたメモリと計算コアにより割り振られたメモリとの間で開始アドレスと終了アドレスとの間のすべてのデータが移される「move all data」、システムにより割り振られたメモリから計算コアにより割り振られたメモリにxバイトのデータが移される「move x bytes」、およびシステムにより割り振られたメモリから計算コアにより割り振られたメモリにデータを転送するためにx個のサイクルが利用される「move for x cycles」などの変形を有してもよい。
拡張メモリプロトコルはさらに、図6に関して説明された方法などによって、計算コアにより割り振られたメモリに記憶された命令の実行を拡張メモリモジュール(たとえば、図1の102、図2の224A-B、および図3A~図3Cの302)の計算コアに開始させるように構成される「プロセス」信号(またはコマンド)を含んでもよい。
拡張メモリプロトコルはさらに、計算コアにより割り振られたメモリ(たとえば、図3Bの312A-C)からシステムにより割り振られたメモリ(たとえば、図3Bの312D-F)にデータを転送することで、図5に関して説明された方法などによってホスト処理システム(たとえば、図2のシステム200)の他の部分がデータにアクセスできるようにするためのプロセスを開始するように構成される「結果」信号(またはコマンド)を含んでもよい。
したがって、一例では、アクセラレータドライバ(たとえば、図2の216)は「データ」信号を送信し、メモリドライバ(たとえば、図2の214)は信号を拡張メモリモジュール(たとえば、図2の224A-B)に転送する。アクセラレータドライバはトラフィックをブロックするようにメモリドライバに伝え、これは、「データ」コマンドまたは別個のコマンドを用いた単一のコマンドであり得る。メモリドライバは次いで、アクセラレータドライバから来ないすべてのトラフィックをブロックする。いくつかの場合、トラフィックは再試行のために保持または返信されてもよい。拡張メモリモジュールはまた、メモリ転送ステータスを示すデータパターンを出力するように、バッファの中の値を設定してもよい。たとえば、アクセラレータドライバは、(メモリドライバが転送する)拡張メモリモジュールからのデータを要求してもよく、データパターンが「ビジー」である場合、アクセラレータドライバは待機して再試行し、データパターンが「完了」である場合、アクセラレータドライバはトラフィックを再び許可するようにメモリドライバに伝える。
拡張メモリモジュールを構築するための例示的な方法
図7は、拡張メモリモジュール(たとえば、図1の102、図2の224A-B、および図3A~図3Cの302)を構築するための例示的な方法700を示す。
方法700は、図1の拡張メモリモジュール102上のメモリ素子112A-Fなどの、拡張メモリモジュール上にデュアルモードメモリ素子を配置するステップ702で開始する。この例では、「デュアルモード」とは、従来の方式のシステムメモリのために、ならびに図1の108などのオンモジュール計算コアのためのローカルメモリのために、各メモリ素子が使用されることができることを指す。メモリ素子は、両方のモードで動作するように物理的に改変される必要はない。
方法700は次いで、図1の計算コア108などの、拡張メモリモジュール上に計算コアを配置するステップ704に進む。
方法700は次いで、計算コアと各デュアルモードメモリ素子との間のコマンド/アドレス線を接続するステップ706に進む。コマンド/アドレス線は、メモリのどの部分がアクセスされるかを決定してそのコマンドが何であるかを決定するために使用される信号を運ぶように構成されてもよい。
方法700は次いで、各デュアルモード素子と計算コア(ローカル処理モードにおいて使用するための)とメモリバッファ(システムメモリモードにおいて使用するための)との間でデータ線を接続するステップ708に進む。
方法700は次いで、図1の拡張メモリモジュール102のメモリ素子110A-Bなどの、拡張メモリモジュール上に計算コアメモリ素子を配置するステップ710に進む。
方法700は次いで、計算コアと計算コアメモリ素子との間でコマンド/アドレス線とデータ線を接続するステップ712に進む。
方法700は次いで、図1の拡張メモリモジュール102のフラッシュメモリモジュール106などの、拡張メモリモジュール上にフラッシュメモリモジュールを配置するステップ714に進む。
方法700は次いで、図1の拡張メモリモジュール102の計算コア108などの計算コアにフラッシュメモリモジュールを接続するステップ716に進む。
方法700は次いで、図1の拡張メモリモジュール102などの拡張メモリモジュールを初期化するためにフラッシュメモリモジュールにファームウェアを書き込むステップ718に進む。
特に、方法700は、図1の拡張メモリモジュール102などの拡張メモリモジュールをどのように構築するかの1つの高水準の例にすぎず、多くの他の例が存在する。わかりやすくするために、具体的な製造技法の議論は省略される。
拡張メモリモジュールを含む処理システムのための例示的なメモリマッピング
図8は、拡張メモリモジュール(たとえば、図1の102、図2の224A-B、図3A~図3Cの302)を含む処理システムのための例示的なメモリマッピングを示す。
図示される例では、処理システムは6個のメモリモジュールスロット(たとえば、6個のDIMMスロット)を有し、各DIMMスロットの中の各メモリモジュールは8GBのシステムアドレス指定可能メモリを有し、合計で48GBのシステムメモリである。各DIMMスロットの中のメモリモジュールは、従来のメモリモジュールまたは拡張メモリモジュールであってもよいので、システムは全体として、従来のメモリモジュールと拡張されたメモリモジュールの混合を有する「ハイブリッド構成」であってもよく、または、すべてが拡張メモリモジュールである「拡張構成」であってもよい。拡張メモリモジュールは、ホスト処理システムとオンメモリ処理要素との間で(たとえば、図1の108などの計算コアに)メモリを割り振るように構成されてもよいので、より多くの拡張メモリモジュールがシステムに存在すると、オンメモリ処理のために割り振ることが可能な合計のメモリがより多くなる。
さらにこの例では、メモリ割り振り閾値は、あらゆる拡張メモリモジュールの中のメモリの最大で半分をオンメモリ処理に(たとえば、図1の108などの計算コアに)割り振ることができ、残りのメモリがホスト処理システムに割り振られるように、実装される。他の実施形態では、メモリ割り振り閾値は、実装されなくてもよく、または異なる値を用いて実装されてもよい。メモリ閾値は一般に、適切に動作するのに十分な割り振られたメモリをホスト処理システムが維持することを確実にするように確立されてもよい。
メモリマップ802または804は、メモリモジュールのハイブリッド構成を有する処理システムにおける例示的なメモリ割り振りを示す。メモリマップ806および808は、拡張構成を有する処理システムにおける例示的なメモリ割り振りを示し、すべてのメモリモジュールが拡張メモリモジュールである。図示される例では、806および808の拡張構成におけるメモリ割り振りは、オンメモリ処理のために計算コアに割り振られるより多くのメモリを含む。
さらに、メモリマップ806および808におけるメモリ割り振りは、各拡張メモリモジュール(たとえば、拡張メモリモジュール0-5)の計算コアに特有である。しかしながら、他の例では、メモリは一般に、具体的には例示的なメモリマップ806および808のようにではなく、例示的なメモリマップ802および804などのように、セットとして計算コアに割り振られてもよい。
一般的に、より多くの拡張メモリモジュールがあることは、オンメモリ処理に割り振ることができるメモリの量を増やし、それにより、たとえば訓練および推論などのAIおよびML固有のタスクを実行するホスト処理システムの能力を改善し、ならびに、全体のシステムメモリを構成できる柔軟性を高める。
(たとえば、図1の104のようなアクセラレータを介した)ホスト処理システムとオンメモリ処理との間のメモリの動的な再割り振りの場合、メモリマップはそれに従って更新されてもよい。たとえば、メモリマップ802は、メモリマップ806または他の組合せに更新されてもよい。
図8に示される例は、拡張メモリモジュールを使用して様々なメモリ構成のいくつかの例だけを示すことが意図されており、他のメモリ構成が可能である。
拡張メモリモジュールを用いてデータを処理するための例示的な方法
図9は、計算コア(たとえば、図1の108)を備える拡張メモリモジュール(たとえば、図1の102、図2の224A-B、および図3A~図3Cの302)を用いてデータを処理するための例示的な方法900を示す。いくつかの実施形態では、計算コアは、図1の104などのメモリ統合アクセラレータの一部であってもよい。いくつかの実施形態では、計算コアは、複数の個々の処理コアなどの、複数の処理要素を備えてもよい。いくつかの実施形態では、拡張メモリモジュールは、負荷低減デュアルインラインメモリモジュール(LRDIMM)を備える。
方法900は、たとえば図3A~図3Cに関して説明されたように、ホスト処理システムアドレス指定可能メモリとして拡張メモリモジュールの第1のメモリのサブセットを割り振り、計算コアアドレス指定可能メモリとして拡張メモリモジュールの第2のメモリのサブセットを割り振ることによって、拡張メモリモジュールを初期化するステップ902で開始する。
方法900のいくつかの実施形態では、拡張メモリモジュールの初期化はブート時に実行されてもよい。他の実施形態では、拡張メモリモジュールの初期化は、ホスト処理システムの動作の間に動的に実行されてもよい。
いくつかの実施形態では、メモリの割り振りは、図1のメモリ素子112A-Fなどの1つまたは複数のデュアルモードメモリ素子のメモリを、計算コアとホスト処理システムとの間で割り振ることを備えてもよい。たとえば、割り振りは、仮想アドレス空間または物理アドレス空間などの、1つまたは複数のメモリ範囲またはメモリアドレス空間を備えてもよい。
方法900は次いで、ホスト処理システムから拡張メモリモジュールにおいてデータを受信するステップ904に進む。データは、計算コアなどによる拡張メモリモジュール上での処理のために、拡張メモリモジュールにホスト処理システムによって提供されてもよい。
いくつかの実施形態では、受信されたデータは、機械学習モデルによる処理のためのデータと、機械学習モデルパラメータとを含んでもよい。いくつかの実施形態では、受信されたデータはさらに、処理コマンドまたは命令を含んでもよい。
方法900は次いで、第1のメモリのサブセット(ホスト処理システムアドレス指定可能メモリ)に受信されたデータを記憶するステップ906に進む。いくつかの実施形態では、ホスト処理システムアドレス指定可能メモリは、図1のメモリ素子112A-Fなどの拡張メモリモジュール上で1つまたは複数のデュアルモードメモリ素子の中のホスト処理システムに割り振られるメモリ空間を備える。
方法900は次いで、第1のメモリのサブセット(ホスト処理システムアドレス指定可能メモリ)から第2のメモリのサブセット(計算コアアドレス指定可能メモリ)に受信されたデータを転送するステップ908に進む。
いくつかの実施形態では、計算コアアドレス指定可能メモリは、図1のメモリ素子110A-Bなどの、非ホスト処理システムアドレス指定可能メモリを備える。いくつかの実施形態では、計算コアアドレス指定可能メモリは、(図3Aの例などのように)非ホスト処理システムアドレス指定可能メモリのみを備える。
方法900は次いで、拡張メモリモジュール上で計算コアを用いて受信されたデータを処理して、処理されたデータを生成するステップ910に進む。
方法900は次いで、第2のメモリのサブセット(計算コアアドレス指定可能システム)から第1のメモリのサブセット(ホスト処理システムアドレス指定可能メモリ)に処理されたデータを転送するステップ912に進む。
方法900は次いで、図2に関して上で説明されたものなどの、第1のメモリのサブセット(ホスト処理システムアドレス指定可能メモリ)を介して処理されたデータをホスト処理システムに提供するステップ914に進む。
いくつかの実施形態では、拡張メモリモジュールを初期化することは、図1に関して上で説明されたように、拡張メモリモジュール上のフラッシュメモリモジュールに記憶されたファームウェア命令を処理することを備える。
いくつかの実施形態では、図4に関して上で説明されたように、方法900はさらに、第1のメモリのサブセット(ホスト処理システムアドレス指定可能メモリ)から第2のメモリのサブセット(計算コアアドレス指定可能メモリ)にデータを転送する前に、データの移動が行われていることを示すために、かつホスト処理システムアドレス指定可能メモリへの読み取り要求をブロックするために、ホスト処理システムのデータバスをビジー状態に設定することを含む。
いくつかの実施形態では、図4に関して上で説明されたように、方法900はさらに、第1のメモリのサブセット(ホスト処理システムアドレス指定可能メモリ)から第2のメモリのサブセット(計算コアアドレス指定可能メモリ)にデータを転送した後に、ホスト処理システムからホスト処理システムアドレス指定可能メモリへの読み取り要求または書き込み要求を可能にするためにホスト処理システムのデータバスを利用可能状態に設定することを含む。
いくつかの実施形態では、図4に関して上で説明されたように、方法900はさらに、第1のメモリのサブセット(ホスト処理システムアドレス指定可能メモリ)から第2のメモリのサブセット(計算コアアドレス指定可能メモリ)にデータを転送する前に、拡張メモリモジュールのためのホスト処理システムメモリコマンドのブロックを可能にすることを含む。
いくつかの実施形態では、図4に関して上で説明されたように、方法900はさらに、第1のメモリのサブセット(ホスト処理システムアドレス指定可能メモリ)から第2のメモリのサブセット(計算コアアドレス指定可能メモリ)にデータを転送した後に、拡張メモリモジュールのためのホスト処理システムメモリコマンドのブロックを無効にすることを含む。
いくつかの実施形態では、方法900はさらに、第1のメモリのサブセットおよび第2のメモリのサブセットの割り振りを解除し、1つまたは複数のデュアルモードメモリ素子の中の第3のメモリのサブセットをホスト処理システムアドレス指定可能メモリとして割り振り、1つまたは複数のデュアルモードメモリ素子の中の第4のメモリのサブセットを計算コアアドレス指定可能メモリとして割り振ることによって、拡張メモリモジュールのメモリを割り振り直すステップを含み、第3のメモリのサブセットは第1のサブセットと異なり、第4のメモリのサブセットは第2のサブセットと異なる。いくつかの実施形態では、ホスト処理システムが実行しているときなど、ブート時間の後に、再割り振りが実行される。したがって、再割り振りは、メモリの動的または「ホット」再割り振りと呼ばれることがある。
たとえば、いくつかの実施形態では、図3Aのものなどの第1の割り振りは、図3Bもしくは図3Cのもの、または図示されていない他のもののような第2の割り振りへと動的に割り振り直されてもよい。いくつかの実施形態では、ホスト処理システムは、再割り振りプロセスの間、拡張メモリモジュールにメモリコマンドを送信するのを妨げられてもよい。いくつかの実施形態では、ホスト処理システムがもはやアクセス可能ではない物理メモリ、またはホスト処理システムが新しくアクセス可能になった物理メモリが適切に構成されるように、再割り振りの後でページテーブルまたはメモリマップが更新されてもよい。たとえば、図8のメモリマップの例は、拡張メモリモジュール上のメモリの再割り振りの後で更新されてもよい。
拡張メモリモジュールを用いたデータ処理のための例示的な電子デバイス
図10は、たとえば図4~図6および図9に関して本明細書において説明されたように、拡張メモリモジュールを用いてデータ処理を実行するように構成されてもよい例示的な電子デバイス1000を示す。いくつかの実施形態では、電子デバイス1000はサーバコンピュータを備えてもよい。
電子デバイス1000は、中央演算処理ユニット(CPU)1002を含み、CPU1002は、いくつかの例ではマルチコアCPUであってもよい。CPU1002において実行される命令は、たとえばCPU1002に関連するプログラムメモリからロードされてもよく、またはメモリパーティション1024からロードされてもよい。
電子デバイス1000はまた、グラフィクス処理ユニット(GPU)1004、デジタルシグナルプロセッサ(DSP)1006、ニューラル処理ユニット(NPU)1008などの、特定の機能に適合された追加の処理コンポーネントを含む。
1008などのNPUは一般に、人工ニューラルネットワーク(ANN)、ディープニューラルネットワーク(DNN)、ランダムフォレスト(RF)などを処理するためのアルゴリズムなどの、機械学習アルゴリズムを実行するためのすべての必要な制御および演算論理を実施するように構成される特殊回路である。NPUは代替として、ニューラル信号プロセッサ(NSP)、テンソル処理ユニット(TPU)、ニューラルネットワークプロセッサ(NNP)、インテリジェンス処理ユニット(IPU)、ビジョン処理ユニット(VPU)、またはグラフ処理ユニットと呼ばれることもある。
NPUは、訓練もしくは推論のために最適化されてもよく、または場合によっては、その両方の間で性能のバランスをとるように構成されてよい。訓練と推論の両方を実行することが可能なNPUでは、一般に2つのタスクは独立して実行されることができる。
たとえば、1008などのNPUは、画像分類、機械変換、物体検出、および様々な他の予測モデルなどの一般的な機械学習推論タスクの実行を加速するように構成されてもよい。いくつかの例では、複数のNPUが、システムオンチップ(SoC)などの単一のチップ上でインスタンス化されてもよいが、他の例では、専用のニューラルネットワークアクセラレータの一部であってもよい。推論を加速するように設計されたNPUは、一般に、完全なモデル上で動作するように構成される。したがって、そのようなNPUは、新しいデータを入力し、モデル出力(たとえば、推論)を生成するようにすでに訓練されたモデルを通じてデータを高速に処理するように、構成されてもよい。
別の例として、NPUは、テストデータセット(しばしばラベリングまたはタグ付けされる)を処理し、データセットにわたって繰り返し、そして、モデル性能を改善するために重みおよびバイアスなどのモデルパラメータを調整することなどの、一般的な機械学習訓練タスクを加速させるように構成されてもよい。一般に、誤った予測に基づく最適化は、モデルの層を逆伝播することと、予測誤差を減らすために勾配を決定することとを伴う。
一実装形態では、NPU1008は、CPU1002、GPU1004、および/またはDSP1006のうちの1つまたは複数の一部である。
電子デバイス1000はまた、画面、ネットワークインターフェース、物理ボタンなどの1つまたは複数の入力および/または出力デバイス1022を含んでもよい。
電子デバイス1000はメモリ1024も含み、これは、ダイナミックランダムアクセスメモリ、フラッシュベーススタティックメモリなどの1つまたは複数のスタティックおよび/またはダイナミックメモリを表す。この例では、メモリ1024はコンピュータ実行可能コンポーネントを含み、これは、電子デバイス1000の前述のプロセッサのうちの1つまたは複数によって実行されてもよい。
メモリ1024は、(図1、図2、および図3に関して)本明細書において説明された拡張メモリモジュールなどの、1つまたは複数のメモリモジュールを表してもよい。たとえば、メモリ1024は、1つまたは複数の計算コア1024Iおよびフラッシュメモリコンポーネント1024Jを備えてもよい。いくつかの場合、計算コア1024Iは、本明細書において説明されるようなNPUまたは他の種類のプロセッサを備えてもよい。さらに、図示されていないが、メモリ1024の一部は計算コア1024Jだけによってアクセス可能であってもよいが、一部のメモリは、処理システム1000によって、または計算コア1024Jによってアクセス可能であるように構成可能であってもよい。
この例では、メモリ1024は、受信コンポーネント1024Aと、記憶コンポーネント1024Bと、転送コンポーネント1024Cと、処理コンポーネント1024Dと、送信(または提供)コンポーネント1024Eと、初期化コンポーネント1024Fと、割り振りコンポーネント1024Gと、区分コンポーネント1024Hとを含む。図示されたコンポーネントおよび図示されていない他のコンポーネントは、本明細書において説明される方法の様々な態様を実行するように構成されてもよい。
図10には示されていないが、電子デバイス1000はさらに、電子デバイス1000の様々な態様の間でデータを転送するための1つまたは複数のデータバスを含んでもよい。
例示的な条項
以下の番号付き条項において実装の例が説明される。
条項1:拡張メモリモジュールであって、計算コアと、1つまたは複数のデュアルモードメモリ素子とを備え、拡張メモリモジュールが、1つまたは複数のデュアルモードメモリ素子の中の第1のメモリのサブセットをホスト処理システムアドレス指定可能メモリとして割り振り、1つまたは複数のデュアルモードメモリ素子の中の第2のメモリのサブセットを計算コアアドレス指定可能メモリとして割り振り、ホスト処理システムからデータを受信し、計算コアを用いてデータを処理して、処理されたデータを生成し、第1のメモリのサブセットを介して処理されたデータをホスト処理システムに提供するように構成される、拡張メモリモジュール。
条項2:拡張メモリモジュールがさらに、第1のメモリのサブセットに受信されたデータを記憶し、計算コアを用いてデータを処理する前に第1のメモリのサブセットから第2のメモリのサブセットに受信されたデータを転送し、計算コアを用いてデータを処理した後に第2のメモリのサブセットから第1のメモリのサブセットに処理されたデータを転送するように構成される、条項1の拡張メモリモジュール。
条項3:第2のメモリのサブセットがさらに、計算コアによる使用のために構成される1つまたは複数のシングルモードメモリを備える、条項1から2のいずれか1つの拡張メモリモジュール。
条項4:第1のメモリのサブセットおよび第2のメモリのサブセットを割り振るためのファームウェア命令を備えるフラッシュメモリモジュールをさらに備える、条項1から3のいずれか1つの拡張メモリモジュール。
条項5:拡張メモリモジュールがさらに、第1のメモリのサブセットから第2のメモリのサブセットにデータを転送する前に、データの転送が行われていることを示すように、ホスト処理システムのデータバスをビジー状態に設定するように構成される、条項1から4のいずれか1つの拡張メモリモジュール。
条項6:拡張メモリモジュールがさらに、第1のメモリのサブセットから第2のメモリのサブセットにデータを転送した後に、ホスト処理システムのデータバスを利用可能状態に設定するように構成される、条項5の拡張メモリモジュール。
条項7:拡張メモリモジュールがさらに、第1のメモリのサブセットから第2のメモリのサブセットにデータを転送する前に、拡張メモリモジュールのためのホスト処理システムメモリコマンドのブロックを可能にするように構成される、条項1から6のいずれか1つの拡張メモリモジュール。
条項8:拡張メモリモジュールがさらに、第1のメモリのサブセットから第2のメモリのサブセットにデータを転送した後に、拡張メモリモジュールのためのホスト処理システムメモリコマンドのブロックを無効にするように構成される、条項7の拡張メモリモジュール。
条項9:データが、機械学習モデルによる処理のためのデータと、機械学習モデルパラメータとを備える、条項1から8のいずれか1つの拡張メモリモジュール。
条項10:拡張メモリモジュールが、デュアルインラインメモリモジュール(DIMM)を備える、条項1から9のいずれか1つの拡張メモリモジュール。
条項11:拡張メモリモジュールがさらに、第1のメモリのサブセットおよび第2のメモリのサブセットの割り振りを解除し、1つまたは複数のデュアルモードメモリ素子の中の第3のメモリのサブセットをホスト処理システムアドレス指定可能メモリとして割り振り、1つまたは複数のデュアルモードメモリ素子の中の第4のメモリのサブセットを計算コアアドレス指定可能メモリとして割り振るように構成され、第3のメモリのサブセットが第1のサブセットと異なり、第4のメモリのサブセットが第2のサブセットと異なる、条項1から10のいずれか1つの拡張メモリモジュール。
条項12:計算コアを備える拡張メモリモジュールを用いてデータを処理するための方法であって、拡張メモリモジュールの第1のメモリのサブセットをホスト処理システムアドレス指定可能メモリとして割り振り、拡張メモリモジュールの第2のメモリのサブセットを計算コアアドレス指定可能メモリとして割り振ることによって、拡張メモリモジュールを初期化するステップと、ホスト処理システムから拡張メモリモジュールにおいてデータを受信するステップと、拡張メモリモジュール上で計算コアを用いてデータを処理して、処理されたデータを生成するステップと、第1のメモリのサブセットを介して処理されたデータをホスト処理システムに提供するステップとを備える、方法。
条項13:第1のメモリのサブセットに受信されたデータを記憶するステップと、計算コアを用いてデータを処理する前に第1のメモリのサブセットから第2のメモリのサブセットに受信されたデータを転送するステップと、計算コアを用いてデータを処理した後に第2のメモリのサブセットから第1のメモリのサブセットに処理されたデータを転送するステップとをさらに備える、条項12の方法。
条項14:第1のメモリのサブセットおよび第2のメモリのサブセットが1つまたは複数のデュアルモードメモリ素子と関連付けられる、条項12から13のいずれか1つの方法。
条項15:拡張メモリモジュールを初期化するステップが、拡張メモリモジュール上のフラッシュメモリモジュールに記憶されたファームウェア命令を処理するステップを備える、条項12から14のいずれか1つの方法。
条項16:第2のメモリのサブセットがさらに、計算コアによる使用のために構成される1つまたは複数のシングルモードメモリ素子と関連付けられる、条項12から15のいずれか1つの方法。
条項17:第1のメモリのサブセットから第2のメモリのサブセットにデータを転送する前に、データの転送が行われていることを示すようにホスト処理システムのデータバスをビジー状態に設定するステップをさらに備える、条項13の方法。
条項18:第1のメモリのサブセットから第2のメモリのサブセットにデータを転送した後に、ホスト処理システムのデータバスを利用可能状態に設定するステップをさらに備える、条項17の方法。
条項19:第1のメモリのサブセットから第2のメモリのサブセットにデータを転送する前に、拡張メモリモジュールのためのホスト処理システムメモリコマンドのブロックを可能にするステップをさらに備える、条項13の方法。
条項20:第1のメモリのサブセットから第2のメモリのサブセットにデータを転送した後に、拡張メモリモジュールのためのホスト処理システムメモリコマンドのブロックを無効にするステップをさらに備える、条項19の方法。
条項21:データが、機械学習モデルによる処理のためのデータと、機械学習モデルパラメータとを備える、条項12から20のいずれか1つの方法。
条項22:拡張メモリモジュールが、デュアルインラインメモリモジュール(DIMM)を備える、条項12から21のいずれか1つの方法。
条項23:第1のメモリのサブセットおよび第2のメモリのサブセットの割り振りを解除するステップと、1つまたは複数のデュアルモードメモリ素子の中の第3のメモリのサブセットをホスト処理システムアドレス指定可能メモリとして割り振り、1つまたは複数のデュアルモードメモリ素子の中の第4のメモリのサブセットを計算コアアドレス指定可能メモリとして割り振るステップとをさらに備え、第3のメモリのサブセットが第1のサブセットと異なり、第4のメモリのサブセットが第2のサブセットと異なる、条項12から22のいずれか1つの方法。
条項24:ホスト処理システムの1つまたは複数のプロセッサによって実行されると、計算コアを備える拡張メモリモジュールを用いてデータを処理するための方法をホスト処理システムに実行させる命令を備える、非一時的コンピュータ可読媒体であって、その方法が、拡張メモリモジュールの第1のメモリのサブセットをホスト処理システムアドレス指定可能メモリとして割り振り、拡張メモリモジュールの第2のメモリのサブセットを計算コアアドレス指定可能メモリとして割り振ることによって、拡張メモリモジュールを初期化するステップと、ホスト処理システムから拡張メモリモジュールにおいてデータを受信するステップと、拡張メモリモジュール上で計算コアを用いてデータを処理して、処理されたデータを生成するステップと、第1のメモリのサブセットを介して処理されたデータをホスト処理システムに提供するステップとを備える、非一時的コンピュータ可読媒体。
条項25:方法がさらに、第1のメモリのサブセットに受信されたデータを記憶するステップと、計算コアを用いてデータを処理する前に第1のメモリのサブセットから第2のメモリのサブセットに受信されたデータを転送するステップと、計算コアを用いてデータを処理した後に第2のメモリのサブセットから第1のメモリのサブセットに処理されたデータを転送するステップとを備える、条項24の非一時的コンピュータ可読媒体。
条項26:第1のメモリのサブセットおよび第2のメモリのサブセットが1つまたは複数のデュアルモードメモリ素子と関連付けられる、条項24から25のいずれか1つの非一時的コンピュータ可読媒体。
条項27:第2のメモリのサブセットがさらに、計算コアによる使用のために構成される1つまたは複数のシングルモードメモリ素子と関連付けられる、条項24から26のいずれか1つの非一時的コンピュータ可読媒体。
条項28:方法がさらに、第1のメモリのサブセットから第2のメモリのサブセットにデータを転送する前に、データの転送が行われていることを示すようにホスト処理システムのデータバスをビジー状態に設定するステップを備える、条項25の非一時的コンピュータ可読媒体。
条項29:方法がさらに、第1のメモリのサブセットから第2のメモリのサブセットにデータを転送した後に、許可するようにホスト処理システムのデータバスを利用可能状態に設定するステップを備える、条項29の非一時的コンピュータ可読媒体。
条項30:方法がさらに、第1のメモリのサブセットから第2のメモリのサブセットにデータを転送する前に、拡張メモリモジュールのためのホスト処理システムメモリコマンドのブロックを可能にするステップと、第1のメモリのサブセットから第2のメモリのサブセットにデータを転送した後に、拡張メモリモジュールのためのホスト処理システムメモリコマンドのブロックを無効にするステップとを備える、条項25の非一時的コンピュータ可読媒体。
追加の考慮事項
前述の説明は、本明細書において説明される様々な実施形態を任意の当業者が実践できるようにするために提供される。本明細書において説明される例は、特許請求の範囲に記載された範囲、適用可能性、または実施形態を限定するものではない。これらの実施形態への様々な修正は当業者に容易に明らかになり、本明細書で定義される一般原理は他の実施形態に適用されてもよい。たとえば、本開示の範囲から逸脱することなく、説明する要素の機能および構成において変更が行われてもよい。様々な例は、適宜に、様々な手順または構成要素を省略してもよく、置換してもよく、または追加してもよい。たとえば、説明される方法は、説明される順序とは異なる順序で実行されてもよく、様々なステップが、追加されてもよく、省略されてもよく、または組み合わせられてもよい。また、いくつかの例に関して説明される特徴は、いくつかの他の例において組み合わせられてもよい。たとえば、本明細書に記載される任意の数の態様を使用して、装置が実装されてもよく、または方法が実践されてもよい。加えて、本開示の範囲は、本明細書に記載される本開示の様々な態様に加えて、またはそれらの態様以外に、他の構造、機能、または構造および機能を使用して実践されるそのような装置または方法を包含することを意図している。本明細書において開示される本開示のいかなる態様も、請求項の1つまたは複数の要素によって具現化されてもよいことを理解されたい。
本明細書において使用される「例示的」という用語は、「例、事例、または例示として機能すること」を意味する。「例示的」として本明細書において説明されるいかなる態様も、必ずしも他の態様よりも好ましいまたは有利であると解釈されるべきではない。
本明細書において使用される項目の列挙「のうちの少なくとも1つ」を指す句は、単一のメンバーを含む、それらの項目の任意の組合せを指す。一例として、「a、b、またはcのうちの少なくとも1つ」は、a、b、c、a-b、a-c、b-c、およびa-b-c、ならびに複数の同じ要素を有する任意の組合せ(たとえば、a-a、a-a-a、a-a-b、a-a-c、a-b-b、a-c-c、b-b、b-b-b、b-b-c、c-c、およびc-c-c、またはa、b、およびcの任意の他の順序)を包含するものとする。
本明細書において使用される「決定すること」という用語は、多種多様な行為を包含する。たとえば、「決定すること」は、算出すること、計算すること、処理すること、導出すること、調査すること、ルックアップすること(たとえば、テーブル、データベース、または別のデータ構造の中でルックアップすること)、確認することなどを含んでもよい。また、「決定すること」は、受信すること(たとえば、情報を受信すること)、アクセスすること(たとえば、メモリの中のデータにアクセスすること)などを含んでもよい。また、「決定すること」は、解決すること、選択すること、選ぶこと、確立することなどを含んでもよい。
本明細書において開示された方法は、方法を達成するための1つまたは複数のステップまたは行為を備える。方法のステップおよび/または行為は、特許請求の範囲の範囲から逸脱することなく互いに交換されてもよい。言い換えれば、ステップまたは行為の具体的な順序が指定されない限り、具体的なステップおよび/または行為の順序および/または使用は、特許請求の範囲の範囲から逸脱することなく修正されてもよい。さらに、上で説明された方法の様々な動作は、対応する機能を実行することが可能な任意の適切な手段によって実行されてもよい。手段は、限定はされないが、回路、特定用途向け集積回路(ASIC)、またはプロセッサを含む、様々なハードウェアおよび/またはソフトウェア構成要素および/またはモジュールを含んでもよい。一般に、図に示される動作がある場合、それらの動作は、類似の番号付けを伴う対応する相対物のミーンズプラスファンクション構成要素を有してもよい。
以下の特許請求の範囲は、本明細書において示される実施形態に限定されることは意図されておらず、特許請求の範囲の文言と一致する全範囲を与えられるべきである。請求項において、単数形の要素への言及は、「唯一無二の」と明記されていない限り、それを意味するものではなく、「1つまたは複数の」を意味するものとする。別段に明記されていない限り、「いくつかの」という用語は、1つまたは複数を指す。請求項の要素は、要素が「のための手段」という句を使用して明白に記載されていない限り、または方法クレームの場合には、要素が「のためのステップ」という句を使用して記載されていない限り、米国特許法第112条(f)の規定の下で解釈されるべきではない。当業者に知られているか、または後で知られることになる、本開示全体にわたって説明した様々な態様の要素のすべての構造的および機能的な均等物は、参照により本明細書に明確に組み込まれ、特許請求の範囲によって包含されるものとする。その上、本明細書に開示されるものはいずれも、そのような開示が特許請求の範囲において明示的に列挙されているかどうかにかかわらず、公に供されることを意図するものではない。
102 拡張メモリモジュール
106 フラッシュメモリ
108 計算コア
110 メモリ素子
112 メモリ素子
114 メモリバッファ
116 ピン
200 処理システム
202 OSユーザ空間
204 モデル
206 データ
208 ML/AIアプリケーション
210 アクセラレータランタイムアプリケーション
212 OSカーネル空間
214 メモリドライバ
216 アクセラレータドライバ
218 CPU
220 メモリ管理ユニット
222 メモリコントローラ
224 拡張メモリモジュール
226 ドライバ
302 拡張メモリモジュール
306 フラッシュメモリ
308 計算コア
310 メモリ素子
312 メモリ素子
802 メモリマップ
804 メモリマップ
806 メモリマップ
808 メモリマップ
1000 電子デバイス
1002 中央演算ユニット(CPU)
1004 グラフィクス処理ユニット(GPU)
1006 デジタルシグナルプロセッサ(DSP)
1008 ニューラル処理ユニット(NPU)
1022 入力/出力デバイス
1024 メモリ
1024A 受信コンポーネント
1024B 記憶コンポーネント
1024C 転送コンポーネント
1024D 処理コンポーネント
1024E 送信(または提供)コンポーネント
1024F 初期化コンポーネント
1024G 割り振りコンポーネント
1024H 区分コンポーネント
1024I 計算コンポーネント
1024J フラッシュメモリコンポーネント

Claims (30)

  1. 拡張メモリモジュールであって、
    計算コアと、
    1つまたは複数のデュアルモードメモリ素子と
    を備え、
    前記拡張メモリモジュールが、
    前記1つまたは複数のデュアルモードメモリ素子の中の第1のメモリのサブセットをホスト処理システムアドレス指定可能メモリとして、かつ前記1つまたは複数のデュアルモードメモリ素子の中の第2のメモリのサブセットを計算コアアドレス指定可能メモリとして割り振り、
    ホスト処理システムからデータを受信し、
    処理されたデータを生成するために前記計算コアを用いて前記データを処理し、
    前記第1のメモリのサブセットを介して前記処理されたデータを前記ホスト処理システムに提供する
    ように構成される、拡張メモリモジュール。
  2. 前記拡張メモリモジュールが、
    前記第1のメモリのサブセットに前記受信されたデータを記憶し、
    前記計算コアを用いて前記データを処理する前に前記第1のメモリのサブセットから前記第2のメモリのサブセットに前記受信されたデータを転送し、
    前記計算コアを用いて前記データを処理した後に前記第2のメモリのサブセットから前記第1のメモリのサブセットに前記処理されたデータを転送するようにさらに構成される、請求項1に記載の拡張メモリモジュール。
  3. 前記第2のメモリのサブセットが、前記計算コアによる使用のために構成される1つまたは複数のシングルモードメモリをさらに備える、請求項1に記載の拡張メモリモジュール。
  4. 前記第1のメモリのサブセットおよび前記第2のメモリのサブセットを割り振るためのファームウェア命令を備えるフラッシュメモリモジュールをさらに備える、請求項1に記載の拡張メモリモジュール。
  5. 前記拡張メモリモジュールが、前記第1のメモリのサブセットから前記第2のメモリのサブセットに前記データを転送する前に、データの転送が行われていることを示すように、前記ホスト処理システムのデータバスをビジー状態に設定するようにさらに構成される、請求項1に記載の拡張メモリモジュール。
  6. 前記拡張メモリモジュールが、前記第1のメモリのサブセットから前記第2のメモリのサブセットに前記データを転送した後に、前記ホスト処理システムの前記データバスを利用可能状態に設定するようにさらに構成される、請求項5に記載の拡張メモリモジュール。
  7. 前記拡張メモリモジュールが、前記第1のメモリのサブセットから前記第2のメモリのサブセットに前記データを転送する前に、前記拡張メモリモジュールのためのホスト処理システムメモリコマンドのブロックを可能にするようにさらに構成される、請求項1に記載の拡張メモリモジュール。
  8. 前記拡張メモリモジュールが、前記第1のメモリのサブセットから前記第2のメモリのサブセットに前記データを転送した後に、前記拡張メモリモジュールのためのホスト処理システムメモリコマンドの前記ブロックを無効にするようにさらに構成される、請求項7に記載の拡張メモリモジュール。
  9. 前記データが、
    機械学習モデルによる処理のためのデータと、
    機械学習モデルパラメータと
    を備える、請求項1に記載の拡張メモリモジュール。
  10. 前記拡張メモリモジュールが、デュアルインラインメモリモジュール(DIMM)を備える、請求項1に記載の拡張メモリモジュール。
  11. 前記拡張メモリモジュールが、
    前記第1のメモリのサブセットおよび第2のメモリのサブセットの割り振りを解除し、
    前記1つまたは複数のデュアルモードメモリ素子の中の第3のメモリのサブセットをホスト処理システムアドレス指定可能メモリとして、かつ前記1つまたは複数のデュアルモードメモリ素子の中の第4のメモリのサブセットを計算コアアドレス指定可能メモリとして割り振る
    ようにさらに構成され、
    前記第3のメモリのサブセットが前記第1のサブセットと異なり、
    前記第4のメモリのサブセットが前記第2のサブセットと異なる、
    請求項1に記載の拡張メモリモジュール。
  12. 計算コアを備える拡張メモリモジュールを用いてデータを処理するための方法であって、
    前記拡張メモリモジュールの第1のメモリのサブセットをホスト処理システムアドレス指定可能メモリとして割り振り、前記拡張メモリモジュールの第2のメモリのサブセットを計算コアアドレス指定可能メモリとして割り振ることによって、前記拡張メモリモジュールを初期化するステップと、
    ホスト処理システムから前記拡張メモリモジュールにおいてデータを受信するステップと、
    前記拡張メモリモジュール上で前記計算コアを用いて前記データを処理して、処理されたデータを生成するステップと、
    前記第1のメモリのサブセットを介して前記処理されたデータを前記ホスト処理システムに提供するステップと
    を備える、方法。
  13. 前記第1のメモリのサブセットに前記受信されたデータを記憶するステップと、
    前記計算コアを用いて前記データを処理する前に前記第1のメモリのサブセットから前記第2のメモリのサブセットに前記受信されたデータを転送するステップと、
    前記計算コアを用いて前記データを処理した後に前記第2のメモリのサブセットから前記第1のメモリのサブセットに前記処理されたデータを転送するステップと
    をさらに備える、請求項12に記載の方法。
  14. 前記第1のメモリのサブセットおよび前記第2のメモリのサブセットが1つまたは複数のデュアルモードメモリ素子と関連付けられる、請求項12に記載の方法。
  15. 前記拡張メモリモジュールを初期化するステップが、前記拡張メモリモジュール上のフラッシュメモリモジュールに記憶されたファームウェア命令を処理するステップを備える、請求項12に記載の方法。
  16. 前記第2のメモリのサブセットがさらに、前記計算コアによる使用のために構成される1つまたは複数のシングルモードメモリ素子と関連付けられる、請求項12に記載の方法。
  17. 前記第1のメモリのサブセットから前記第2のメモリのサブセットに前記データを転送する前に、データの転送が行われていることを示すように前記ホスト処理システムのデータバスをビジー状態に設定するステップをさらに備える、請求項13に記載の方法。
  18. 前記第1のメモリのサブセットから前記第2のメモリのサブセットに前記データを転送した後に、前記ホスト処理システムの前記データバスを利用可能状態に設定するステップをさらに備える、請求項17に記載の方法。
  19. 前記第1のメモリのサブセットから前記第2のメモリのサブセットに前記データを転送する前に、前記拡張メモリモジュールのためのホスト処理システムメモリコマンドのブロックを可能にするステップをさらに備える、請求項13に記載の方法。
  20. 前記第1のメモリのサブセットから前記第2のメモリのサブセットに前記データを転送した後に、前記拡張メモリモジュールのためのホスト処理システムメモリコマンドの前記ブロックを無効にするステップをさらに備える、請求項19に記載の方法。
  21. 前記データが、
    機械学習モデルによる処理のためのデータと、
    機械学習モデルパラメータと
    を備える、請求項12に記載の方法。
  22. 前記拡張メモリモジュールが、デュアルインラインメモリモジュール(DIMM)を備える、請求項12に記載の方法。
  23. 前記第1のメモリのサブセットおよび第2のメモリのサブセットの割り振りを解除するステップと、
    前記1つまたは複数のデュアルモードメモリ素子の中の第3のメモリのサブセットをホスト処理システムアドレス指定可能メモリとして割り振り、前記1つまたは複数のデュアルモードメモリ素子の中の第4のメモリのサブセットを計算コアアドレス指定可能メモリとして割り振るステップと
    をさらに備え、
    前記第3のメモリのサブセットが前記第1のサブセットと異なり、
    前記第4のメモリのサブセットが前記第2のサブセットと異なる、
    請求項12に記載の方法。
  24. ホスト処理システムの1つまたは複数のプロセッサによって実行されると、計算コアを備える拡張メモリモジュールを用いてデータを処理するための方法を前記ホスト処理システムに実行させる命令を備える、非一時的コンピュータ可読記録媒体であって、前記方法が、
    前記拡張メモリモジュールの第1のメモリのサブセットをホスト処理システムアドレス指定可能メモリとして割り振り、前記拡張メモリモジュールの第2のメモリのサブセットを計算コアアドレス指定可能メモリとして割り振ることによって、前記拡張メモリモジュールを初期化するステップと、
    前記ホスト処理システムから前記拡張メモリモジュールにおいてデータを受信するステップと、
    前記拡張メモリモジュール上で前記計算コアを用いて前記データを処理して、処理されたデータを生成するステップと、
    前記第1のメモリのサブセットを介して前記処理されたデータを前記ホスト処理システムに提供するステップと
    を備える、非一時的コンピュータ可読記録媒体。
  25. 前記方法が、
    前記第1のメモリのサブセットに前記受信されたデータを記憶するステップと、
    前記計算コアを用いて前記データを処理する前に前記第1のメモリのサブセットから前記第2のメモリのサブセットに前記受信されたデータを転送するステップと、
    前記計算コアを用いて前記データを処理した後に前記第2のメモリのサブセットから前記第1のメモリのサブセットに前記処理されたデータを転送するステップと
    をさらに備える、請求項24に記載の非一時的コンピュータ可読記録媒体。
  26. 前記第1のメモリのサブセットおよび前記第2のメモリのサブセットが1つまたは複数のデュアルモードメモリ素子と関連付けられる、請求項24に記載の非一時的コンピュータ可読記録媒体。
  27. 前記第2のメモリのサブセットがさらに、前記計算コアによる使用のために構成される1つまたは複数のシングルモードメモリ素子と関連付けられる、請求項24に記載の非一時的コンピュータ可読記録媒体。
  28. 前記方法が、前記第1のメモリのサブセットから前記第2のメモリのサブセットに前記データを転送する前に、データの転送が行われていることを示すように前記ホスト処理システムのデータバスをビジー状態に設定するステップをさらに備える、請求項25に記載の非一時的コンピュータ可読記録媒体。
  29. 前記方法が、前記第1のメモリのサブセットから前記第2のメモリのサブセットに前記データを転送した後に、許可するように前記ホスト処理システムの前記データバスを利用可能状態に設定するステップをさらに備える、請求項28に記載の非一時的コンピュータ可読記録媒体。
  30. 前記方法が、
    前記第1のメモリのサブセットから前記第2のメモリのサブセットに前記データを転送する前に、前記拡張メモリモジュールのためのホスト処理システムメモリコマンドのブロックを可能にするステップと、
    前記第1のメモリのサブセットから前記第2のメモリのサブセットに前記データを転送した後に、前記拡張メモリモジュールのためのホスト処理システムメモリコマンドの前記ブロックを無効にするステップと
    をさらに備える、請求項25に記載の非一時的コンピュータ可読記録媒体。
JP2022570688A 2020-05-26 2021-05-20 メモリにおける推論 Pending JP2023527770A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/883,869 US20210373790A1 (en) 2020-05-26 2020-05-26 Inference in memory
US16/883,869 2020-05-26
PCT/US2021/033436 WO2021242608A1 (en) 2020-05-26 2021-05-20 Inference in memory

Publications (2)

Publication Number Publication Date
JP2023527770A true JP2023527770A (ja) 2023-06-30
JPWO2021242608A5 JPWO2021242608A5 (ja) 2024-05-16

Family

ID=76641760

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022570688A Pending JP2023527770A (ja) 2020-05-26 2021-05-20 メモリにおける推論

Country Status (8)

Country Link
US (1) US20210373790A1 (ja)
EP (1) EP4158485A1 (ja)
JP (1) JP2023527770A (ja)
KR (1) KR20230015334A (ja)
CN (1) CN115516436A (ja)
BR (1) BR112022023193A2 (ja)
TW (1) TW202201236A (ja)
WO (1) WO2021242608A1 (ja)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6185704B1 (en) * 1997-04-11 2001-02-06 Texas Instruments Incorporated System signaling schemes for processor and memory module
JP2011524049A (ja) * 2008-06-04 2011-08-25 エヌイーシー ラボラトリーズ アメリカ インク 超並列アクセラレータを使用して学習機械の訓練と分類とを並列化し高速化するシステム及び方法
US8904068B2 (en) * 2012-05-09 2014-12-02 Nvidia Corporation Virtual memory structure for coprocessors having memory allocation limitations

Also Published As

Publication number Publication date
US20210373790A1 (en) 2021-12-02
BR112022023193A2 (pt) 2022-12-20
TW202201236A (zh) 2022-01-01
CN115516436A (zh) 2022-12-23
WO2021242608A1 (en) 2021-12-02
KR20230015334A (ko) 2023-01-31
EP4158485A1 (en) 2023-04-05

Similar Documents

Publication Publication Date Title
US9547535B1 (en) Method and system for providing shared memory access to graphics processing unit processes
US8395631B1 (en) Method and system for sharing memory between multiple graphics processing units in a computer system
KR20190070915A (ko) 분산된 gpu들을 위해 데이터 로컬리티를 개선하기 위한 매커니즘
US11720496B2 (en) Reconfigurable cache architecture and methods for cache coherency
CN113590508B (zh) 动态可重构的内存地址映射方法及装置
WO2024093517A1 (zh) 内存管理方法及计算设备
US11157191B2 (en) Intra-device notational data movement system
US11914903B2 (en) Systems, methods, and devices for accelerators with virtualization and tiered memory
JP2018136922A (ja) メモリープールを有するコンピューティングシステムのためのメモリー分割
CN116342365A (zh) 用于经由使用可用设备存储器扩展系统存储器的技术
US10978134B1 (en) Method and device for refreshing memory
JP6676052B2 (ja) 不均一メモリアーキテクチャにおける改善されたレイテンシを可能にするためのシステムおよび方法
CN110447019B (zh) 存储器分配管理器及由其执行的用于管理存储器分配的方法
JP2023527770A (ja) メモリにおける推論
US10936219B2 (en) Controller-based inter-device notational data movement system
CN115794368A (zh) 业务系统、内存管理方法及装置
US11281612B2 (en) Switch-based inter-device notational data movement system
CN114398300B (zh) 方法、集成电路及计算机可读存储介质
EP4322001A1 (en) Memory expansion method and related device
CN117991977A (zh) 用于动态地重配置存储器装置的存储器区域的设备和方法
CN117827449A (zh) 服务器的物理内存扩展架构、服务器、方法、设备及介质

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240501

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240501