JP7266602B2 - ニューラルネットワークプロセッサに対する統合メモリ構造 - Google Patents

ニューラルネットワークプロセッサに対する統合メモリ構造 Download PDF

Info

Publication number
JP7266602B2
JP7266602B2 JP2020532976A JP2020532976A JP7266602B2 JP 7266602 B2 JP7266602 B2 JP 7266602B2 JP 2020532976 A JP2020532976 A JP 2020532976A JP 2020532976 A JP2020532976 A JP 2020532976A JP 7266602 B2 JP7266602 B2 JP 7266602B2
Authority
JP
Japan
Prior art keywords
storage
data
target
private
processing units
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.)
Active
Application number
JP2020532976A
Other languages
English (en)
Other versions
JP2021507383A (ja
JP2021507383A5 (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 JP2021507383A publication Critical patent/JP2021507383A/ja
Publication of JP2021507383A5 publication Critical patent/JP2021507383A5/ja
Application granted granted Critical
Publication of JP7266602B2 publication Critical patent/JP7266602B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • 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
    • 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/0646Configuration or reconfiguration
    • G06F12/0692Multiconfiguration, e.g. local and global addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/54Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
    • 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
    • G06F2212/1024Latency reduction
    • 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/1028Power efficiency
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Mathematical Physics (AREA)
  • Biophysics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Computer Hardware Design (AREA)
  • Memory System (AREA)
  • Multi Processors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

関連出願の相互参照
[001] 本開示は、2017年12月22日に出願された米国仮特許出願第62/610,119号及び2018年5月18日に出願された米国特許出願第15/984,255号への優先権の利益を主張し、同特許出願の全内容は、参照により本明細書に組み込まれる。
背景
[002] 画像認識、言語/音声認識及び機械翻訳などのニューラルネットワークに基づくディープラーニングアプリケーションの急激な成長と共に、日用品の中央処理装置/グラフィックス処理ユニット(CPU/GPU)に基づくプラットフォームは、性能、電力効率及び経済拡張性の観点から、もはや、ますます高まる演算需要のサポートに適した演算基板ではない。ニューラルネットワークに基づくディープラーニングアプリケーションを加速させるためのニューラルネットワークプロセッサの開発は、既成のチップメーカー、新興企業及びインターネット大企業を含む多くのビジネス部門にわたってかなりの勢いを増している。単一命令複数データ(SIMD)アーキテクチャは、ディープラーニングのアプリケーションに対する計算を加速させるためにチップに適用することができる。
[003] SIMDアーキテクチャを有するコンピュータでは、並列する複数の処理ユニット、算術論理演算ユニット(ALU)又は小型CPUの各々は、それら自体のデータを用いて同時に演算する(一般に、2つ又は3つの入力オペランド及び1つの出力結果)。これらのデータは、メモリに格納されており、独立して並列にアクセスされる。従って、各処理ユニットは、メモリの専用パーティションと、メモリのパーティションへの専用アクセスポートを有し得る。実際には、多くのアルゴリズムはいくつかの共有データを有し、共有データは、何らかの共有メモリに格納することができ(格納コストを節約するため)、オペランドのうちの1つとしてすべての処理ユニットにブロードキャストすることができる。
[004] SIMDアーキテクチャにおける並列アクセスを可能にするため、ハードウェアは、一般に、物理的に分離されたプライベートメモリモジュール及び共有メモリモジュールを導入して、対応するデータタイプを保持する。しかし、そのようなメモリ構造は、2つの問題を有する。
[005] 第1に、異なるソフトウェアプログラムが異なるデータサイズを有する一方で、各ハードウェアメモリモジュールのサイズは固定されるため、これらのモジュールは非効率的に利用され、その結果、物理的なメモリ空間が無駄になる。第2に、以前に考慮された「プライベート」データがプログラムの後の段階において「共有」データになる際、専用のメモリコピー動作を実行しなければならない。これにより、処理ユニットの余分な電力消費及び性能低下が生じる。
概要
[006] この開示の実施形態は、統合メモリ装置を提供する。統合メモリ装置は、統合記憶媒体を含むことができ、統合記憶媒体は、データを格納するように構成された第1の複数の記憶セルを有する第1の記憶モジュールであって、第1の複数の記憶セルが、一意的なセル識別子によって識別される、第1の記憶モジュールと、データを格納するように構成された第2の複数の記憶セルを有する第2の記憶モジュールであって、第2の複数の記憶セルが、一意的なセル識別子によって識別される、第2の記憶モジュールとを含む。また、統合メモリアーキテクチャは、統合記憶媒体と通信する処理ユニットも含み得る。処理ユニットは、第1の複数の記憶セルのうちの1つから第1の入力データを受信し、第2の複数の記憶セルのうちの1つから第2の入力データを受信し、第1及び第2の入力データに基づいて出力データを生成するように構成することができる。
[007] この開示のいくつかの実施形態は、統合記憶媒体を提供する。統合記憶媒体は、データを格納するように構成された第1の複数の記憶セルを有する第1の記憶モジュールであって、第1の複数の記憶セルが、一意的なセル識別子によって識別される、第1の記憶モジュールと、データを格納するように構成された第2の複数の記憶セルを有する第2の記憶モジュールであって、第2の複数の記憶セルが、一意的なセル識別子によって識別される、第2の記憶モジュールとを含み得る。
[008] この開示のいくつかの実施形態は、統合記憶媒体と、1つ又は複数の処理ユニットとを有する統合メモリ装置においてデータを構造化するための方法を提供する。方法は、1つ又は複数の処理ユニットと通信するように、かつデータを格納するように構成された第1の複数の記憶セルを含むように、統合記憶媒体の第1の記憶モジュールを構成することを含み得、第1の複数の記憶セルが、一意的なセル識別子によって識別される。また、方法は、1つ又は複数の処理ユニットと通信するように、かつデータを格納するように構成された第2の複数の記憶セルを含むように、統合記憶媒体の第2の記憶モジュールを構成することを含み得、第2の複数の記憶セルが、一意的なセル識別子によって識別される。方法は、第1の複数の記憶セルのうちの1つから第1の入力データを受信し、第2の複数の記憶セルのうちの1つから第2の入力データを受信し、第1及び第2の入力データに基づいて出力データを生成するように、1つ又は複数の処理ユニットのうちの1つの処理ユニットを構成することをさらに含む。
[009] この開示のいくつかの実施形態は、第1の記憶モジュールと、第2の記憶モジュールとを有する統合記憶媒体においてデータを構造化するための方法を提供する。方法は、1つ又は複数の処理ユニットと通信するように、かつデータを格納するように構成された第1の複数の記憶セルを含むように、統合記憶媒体の第1の記憶モジュールを構成することであって、第1の複数の記憶セルが、一意的なセル識別子によって識別されることと、1つ又は複数の処理ユニットと通信するように、かつデータを格納するように構成された第2の複数の記憶セルを含むように、統合記憶媒体の第2の記憶モジュールを構成することであって、第2の複数の記憶セルが、一意的なセル識別子によって識別されることとを含み得る。
[010] 第1及び第2の複数の記憶セルの一意的なセル識別子は、第1の複数のビットと、第2の複数のビットとを含むビットアドレスを含み得る。第1の複数のビットは、第1及び第2の記憶モジュールのターゲット記憶モジュールを示し得、第2の複数のビットは、ターゲット記憶モジュール内の第1及び第2の複数の記憶セルのターゲット記憶セルを示し得る。第2の複数のビットは、ターゲット記憶セルと関連付けられた特性をさらに示し得、ターゲット記憶セルの特性は、プライベート又は共有のうちの1つである。いくつかの実施形態では、第1及び第2の記憶モジュールは、対応する処理ユニットと通信するように構成される。処理ユニットは、プライベート記憶セルから第1の入力データを受信し、共有記憶セルから第2の入力データを受信するように構成される。統合記憶媒体及び処理ユニットは、ソフトウェアコード又はソフトウェアプログラムによって均一にアドレス指定されるように構成される。統合記憶媒体は、コンパイラから命令を受信するようにさらに構成され、命令は、データと関連付けられた特性を含み、データと関連付けられた特性は、プライベート又は共有のうちの1つである。プライベート記憶セルは、プライベートデータを格納するように構成され、共有記憶セルは、複数の処理ユニットにわたって共有することができる共有データを格納するように構成される。
図面の簡単な説明
[011]本開示の実施形態と一致する、例示的なニューラルネットワーク処理ユニット(NPU)アーキテクチャを示す。 [012]本開示の実施形態と一致する、ニューラルネットワークプロセッサの層の例示的な機能を示す。 [013]本開示の実施形態と一致する、例示的なハードウェアニューラルネットワークプロセッサを示す。 [014]本開示の実施形態と一致する、多層ネットワークにおけるデータ共有を示す。 [015]本開示の実施形態と一致する、メモリモジュールの統合構造を含む例示的なハードウェアの概略図を示す。 [016]本開示の実施形態と一致する、統合記憶媒体の例示的な記憶セルを示す。 [017]本開示の実施形態と一致する、例示的なデータ構造化動作のプロセスフローチャートを示す。
詳細な説明
[018] ここでは、例示的な実施形態を詳細に参照し、その例は、添付の図面に示される。以下の説明は、添付の図面を参照し、添付の図面では、異なる図面の同じ番号は、別段の表現がない限り、同じ又は同様の要素を表す。例示的な実施形態の以下の説明に記載される実装形態は、本発明と一致するすべての実装形態を表すわけではない。代わりに、それらの実装形態は、添付の特許請求の範囲に記述されるように、本発明に関連する態様と一致する装置及び方法の単なる例である。
[019] 開示される実施形態は、統合メモリアーキテクチャに格納されたデータを構造化するため及びそのターゲットデータにアクセスするためのシステム及び方法を提供する。開示される実施形態は、物理的なプライベート及び共有メモリを統合する方法で構造化することによって、従来のSIMDアーキテクチャの前述の問題を解決することができる。開示される実施形態は、論理的なプライベート及び共有メモリに対して物理メモリの単一のモジュールを維持するものであり、データ自体を物理メモリのそのオリジナルの場所に保持しながら、アクセス命令を通じて「プライベート」又は「共有」の表示を切り替えることができる。
[020] 図1は、例示的なニューラルネットワーク処理ユニット(NPU)アーキテクチャ100を示す。NPUアーキテクチャ100は、オンチップ通信システム110、オフチップメモリ120、メモリコントローラ130、直接メモリアクセス(DMA)ユニット140、ジョイントテストアクショングループ(JTAG)/テストアクセスエンド(TAP)コントローラ150、周辺機器相互接続エクスプレス(PCIe)インタフェース160、インターチップリンク170及び同様のものを含み得る。オンチップ通信システム110は、通信データに基づいてアルゴリズム動作を実行できることが理解されている。
[021] オンチップ通信システム110は、グローバルマネージャ112及び複数のタイル116を含み得る。グローバルマネージャ112は、1つ又は複数のタイル116と協調するように構成された1つ又は複数のクラスタマネージャ114を含み得る。各クラスタマネージャ114は、ニューラルネットワーク用のシナプス/ニューロン回路を提供するタイル116のアレイと関連付けることができる。例えば、図1のタイルの最上層は、ニューラルネットワークへの入力層を表す回路を提供することができ、タイルの第2の層は、ニューラルネットワークの隠れ層を表す回路を提供することができる。図1に示されるように、グローバルマネージャ112は、タイル116の2つのアレイと協調するように構成された2つのクラスタマネージャ114を含み得る。タイル116は、1つ又は複数の乗算器、加算器、乗累算器(例えば、SIMDアーキテクチャの乗累算器セット)及び対応するメモリを含み得、グローバルマネージャ112の制御の下で通信データにおける演算(例えば、1つ又は複数のアルゴリズム計算)を実行するように構成することができる。
[022] オフチップメモリ120は、読み取り専用メモリ(ROM)、消去型プログラム可能読み取り専用メモリ(EPROM)又は同様のものを含み得る。オフチップメモリ120は、1つ又は複数のプロセッサ内で統合されたオンチップメモリと比べて、低アクセス速度で大量のデータを格納するように構成することができる。
[023] メモリコントローラ130は、1つ又は複数のメモリデバイスの読み取り、書き込み又はリフレッシュを行うことができる。メモリデバイスは、オンチップメモリ及びオフチップメモリ120を含み得る。例えば、メモリデバイスは、スタティックランダムアクセスメモリ(SRAM)、電気的消去型プログラム可能読み取り専用メモリ(EEPROM)、消去型プログラム可能読み取り専用メモリ(EPROM)、プログラム可能読み取り専用メモリ(PROM)、読み取り専用メモリ(ROM)、磁気メモリ、フラッシュメモリ、又は、磁気若しくは光ディスクなど、任意のタイプの揮発性若しくは不揮発性メモリデバイス又はそれらの組合せとして実装することができる。
[024] DMAユニット140は、メモリアドレスを生成し、メモリ読み取り又は書き込みサイクルを開始することができる。DMAユニット140は、1つ又は複数のプロセッサによる書き込み及び読み取りが可能ないくつかのハードウェアレジスタを含むことができる。レジスタは、メモリアドレスレジスタ、バイトカウントレジスタ及び1つ又は複数の制御レジスタを含み得る。これらのレジスタは、ソース、送り先、転送方向(入力/出力(I/O)デバイスから読み取るか若しくはI/Oデバイスに書き込む)、転送単位のサイズ及び/又は1バーストで転送されるバイト数のいくつかの組合せを指定することができる。
[025] JTAG/TAPコントローラ150は、システムアドレス及びデータバスへの直接的な外部アクセスを必要としない低オーバヘッドアクセスのためのシリアル通信インタフェース(例えば、JTAGインタフェース)を実装する専用デバッグポートを指定することができる。また、JTAG/TAPコントローラ150は、チップ論理レベル及び様々な部品のデバイス能力を提示するテストレジスタセットにアクセスするためのプロトコルを実装するオンチップテストアクセスインタフェース(例えば、TAPインタフェース)を指定することもできる。
[026] 周辺インタフェース160は、複数のエンドポイントにわたる同時アクセスに対する固有の制限なしで、任意の2つのエンドポイント間の全二重通信をサポートすることができる。
[027] インターチップリンク170は、オンチップ通信システム110、オフチップメモリ120、メモリコントローラ130、DMAユニット140、JTAG/TAPコントローラ150、PCIeインタフェース160など、NPUアーキテクチャ100のすべての内部コンポーネントを互いに接続することができる。
[028] NPUアーキテクチャ100は本開示の実施形態を組み込むが、開示される実施形態は、ディープラーニングなどのいくつかのアプリケーションを加速するためのSIMDアーキテクチャを有するチップに適用できることが理解される。そのようなチップは、例えば、ディープラーニング用のGPU、ベクトル処理能力を有するCPU又はニューラルネットワークアクセラレータであり得る。SIMD又はベクトルアーキテクチャは、一般的に、グラフィックス処理及びディープラーニングなどのデータ並列処理を伴う演算デバイスをサポートするために使用される。SIMDアーキテクチャは、複数の処理要素を含み得、処理要素の各々は、複数のデータポイントにおいて同じ動作を同時に実行することができる。
[029] 例えば、プライベートメモリは、複数の並列する処理要素の中の単一の処理要素の各々に対してデータを供給することへの専用のメモリであり得、共有メモリは、すべての並列する処理要素に対してデータを供給することへの専用のメモリを指すことができる。
[030] 図2Aは、ニューラルネットワークの層200の例示的な機能を示し、ソフトウェアアルゴリズム210及びハードウェア220を含む。ハードウェア220は、プライベートメモリモジュール230、処理ユニットアレイ240、共有メモリモジュール250、書き込みバッファ260、入力オペランド270、出力オペランド280及び同様のものを含み得る。いくつかの実施形態では、ハードウェア220は、タイル(例えば、図1のタイル116)内に位置し得る。
[031] いくつかの実施形態では、処理ユニットアレイ240の処理ユニットは、算術論理演算ユニット(ALU)、浮動小数点ユニット(FPU)、CPU、GPU又は同様のものであり得る。ALUは、コンピュータのCPUを含む演算回路の基本的な構築ブロックである。単一のCPUは、1つ又は複数のALUを含み得る。一般に、ALUは、整数2進数における算術及びビット単位演算を実行する組合せデジタル電子回路である。処理ユニットアレイ240は、複数の処理ユニット242、244、246及び248(例えば、図2Bに示されるような処理ユニットのアレイ)を含み得る。
[032] プライベートメモリモジュール230は、別個のプライベートメモリブロックに仕切ることができ、その結果、複数の処理ユニット242、244、246及び248の各々は、図2Bに示されるように、対応するプライベートメモリブロック232、234、236及び238を有する。
[033] 入力オペランド270は、処理ユニットアレイ240によって演算される入力データであり得る。いくつかの実施形態では、図2Aの入力オペランド270は、図2Bに示されるように、1つ又は複数のプライベート入力オペランド272及び1つ又は複数の共有入力オペランド274を含み得る。プライベート入力オペランド272は、プライベートメモリモジュール230に格納することができ、共有入力オペランド274は、共有メモリモジュール250に格納することができる。
[034] ニューラルネットワークのアプリケーションでは、ソフトウェアアルゴリズム210は、共有データを有し、共有データは、共有メモリモジュール250に格納することができ、共有オペランド274として処理ユニットアレイ240の複数の処理ユニット242、244、246及び248の各々にブロードキャストすることができる。例えば、図2Aに示されるアルゴリズムは、以下のベクトル演算を演算し、
A=sigmoid(b+XW1) (方程式1)
これは、ディープラーニングアルゴリズムにおいて呼び出される場合が多いニューラルネットワークの層200における代表的な演算である。方程式1を参照すると、「b」は、一定の値を含み得、「X」は、共有入力オペランド274を含み得、「W1」は、プライベート入力オペランド272を含み得る。
[035] 図2Aを参照すると、ベクトルサイズは、任意の自然数として設定することができる。ここでは、4のベクトルサイズが例として採用され、ベクトルを演算するための4ウェイSIMDハードウェアが使用される。処理ユニット242、244、246及び248は、以下の演算を並列で演算することができる。
a1=sigmoid(b+x1W111+x2W121+x3W131+x4W141) (方程式2)
a2=sigmoid(b+x1W112+x2W122+x3W132+x4W142) (方程式3)
a3=sigmoid(b+x1W113+x2W123+x3W133+x4W143) (方程式4)
a4=sigmoid(b+x1W114+x2W124+x3W134+x4W144) (方程式5)
[036] 図2Aの網掛けブロック及び点線は、「a1」がどのように計算されるかを示す。この計算から、「W1」アレイの各列のデータは、処理ユニットアレイ240の対応する処理ユニットに対してローカルであり、データは、プライベートメモリモジュール230の対応するメモリブロックに相応にプライベート入力オペランド272として格納できることが理解されている。例えば、W1アレイの第1、第2、第3及び第4の列の各々におけるデータは、プライベートメモリモジュール230のそれらの対応するメモリブロック232、234、236及び238にプライベート入力オペランドとして格納することができる。
[037] 図2Aを参照すると、W1アレイは、格納データの行列を含み得、行列の各要素は、W1ij又はW1_ijとして表され(後に示されるように)、「i」は行列の行番号を表し、「j」は行列の列番号を表す。例えば、方程式2では、W141は、W1アレイの行4と列1に位置する要素に格納されたデータを表す。行列の要素をアドレス指定するため、他の一般的に知られている表記も使用することができる。
[038] 同時に、Xアレイのデータは、すべての処理ユニット242、244、246及び248によって利用され、したがって共有メモリモジュール250に共有入力オペランド274として格納され、共有メモリモジュール250からの読み取りを行うすべてのコンポーネントにブロードキャストされる。方程式2~5は、ニューラルネットワークプロセッサの層200において実行される例示的な演算を表し、a1、a2、a3及びa4を計算するように設計される。
[039] いくつかの実施形態では、機械学習又はディープラーニングは、ニューラル処理の1つ又は複数の層に対するアルゴリズムを実施することによって遂行された入力データに基づいて最終結果を生成するためにニューラルネットワークプロセッサを訓練することを含む。例えば、図2Aの層200は、バイアスb、Xアレイに格納されたデータ及びW1アレイに格納されたデータを使用して演算を実行するように構成されたアルゴリズムを含む第1の層を表す。第2及び第3の層(図示せず)は、バイアスb、Xアレイに格納されたデータ並びにW2及びW3アレイに格納されたデータを使用するアルゴリズムを含み得る。各層は、バイアスbの異なる値及び「W」アレイに格納された異なるパラメータを含み得る。
[040] 図2Aを参照すると、例えば、アレイXは、異なるクラスの個人のスコアを含み得る。アレイXのx1の値は、学生Aの数学のスコアであり得、x2は、英語のスコアであり得、x3は、歴史のスコアであり得、x4は、科学のスコアであり得る。最終結果は、スコア(入力データ)に基づいて、個人が学校への入学許可を得られるか又は入学を拒否されるかであり得る。図2Aに示されるように及び方程式2~5において説明されるように、データx1~x4は、「共有」され、a1~a4の計算において共通である。
[041] 図3は、多層ネットワークにおけるデータ共有を示す。本明細書で説明されるデータ共有は、以前のプライベートデータがプログラムの後の段階においてどのようにして共有データになり得るかを指す。いくつかの実施形態では、ニューラルネットワークアーキテクチャ300は、複数の層(例えば、層310及び320)を含む。いくつかの実施形態では、層310の出力オペランド280は、層320に対する入力オペランド270として使用することができる。いくつかの実施形態では、1つの層の出力オペランド280は、1つ又は複数の層によって入力オペランド270として利用することができる。
[042] 例えば、層310では、a1は、プライベートメモリモジュール230の処理ユニット242によって計算される。a1のデータは、層320に対するブロードキャスト入力になる。一般に、ニューラルネットワークは、層に構造化することができる。各層は、その入力において1つ又は複数の計算を実行し、出力を生成することができる。層の出力は、さらなる処理のために、次の層に伝えることができる。例えば、前の層の出力は、次の層に対する入力であり得る。それに従って、ローカルで生成された「a」は、共有メモリ250に戻して格納するか、又は、プライベートメモリ230に格納し、後に共有メモリ250にコピーしなければならない。
[043] プライベートメモリ230に格納し、後に共有メモリ250にコピーすることに対する代替の解決法として、a1からの出力オペランド280は、メモリにコピーするよりも、共有メモリ250に直接戻して格納することができる。それにもかかわらず、この代替の解決法は、依然として、プログラムを減速させる恐れがある。単一の処理ユニット(例えば、処理ユニット242)は、1つのサイクルあたりたった1つの乗加算演算(例えば、XiW1_ij)しか終了できないため、「a」の各計算は、複数のサイクルにわたって実行され得る。この理由のため、各サイクルにおいてプライベートメモリ230からたった1つのオペランドW1_ijしか読み取られず、従って、共有メモリ250からは、たった1つの「X」しか必要ではない。結果的に、各メモリモジュールの共通の設計は、1つのサイクルあたり単一読み取り/単一書き込みである。最後のサイクルにおいて複数の処理ユニットによってすべての「a」が同時に生成される際は、共有メモリ250は、それらをすべて書き戻す能力を有さない可能性がある。
[044] いくつかの実施形態では、これらの出力オペランド280を個別に使用するためのさらなる時間を共有メモリ250に与えるための書き込みバッファ260が導入される。しかし、処理ユニットアレイ240の出力速度が書き込みバッファ260の幅より速い(例えば、AのサイズがXより大きい)際は、書き込みバッファ260はバックプレッシャを伝播し、処理ユニットアレイ240を強制的に減速させ、それにより、プログラム全体の実行が減速する。
[045] 図4Aは、メモリモジュールの統合構造を含む例示的なハードウェアシステム400の概略図を示す。ハードウェアシステム400は、統合記憶媒体405と、処理ユニット242、244、246及び248とを含む。統合記憶媒体405は、1つ又は複数の記憶モジュール410を含み、1つ又は複数の記憶モジュール410の各々は、入力オペランド270、出力データ280を格納するように構成された記憶セル430を含む。複数の記憶モジュール410は、統合記憶媒体405を形成するために、単一の媒体にマージすることができる。各記憶モジュール410は、プライベート記憶モジュール412及び共有記憶モジュール414を含み得る。
[046] ハードウェアシステム400は、複数の処理ユニット242、244、246及び248を含み得る。処理ユニットアレイ240の複数の処理ユニットの各々は、1つ又は複数の記憶モジュールと通信するように構成される。例えば、処理ユニット242は、プライベート記憶モジュール412からプライベート入力オペランド272を受信することができる。また、処理ユニット242は、1つ又は複数の共有記憶モジュール414から共有入力オペランド274を受信することもできる。いくつかの実施形態では、処理ユニットアレイ240は、プライベート記憶モジュール412からプライベート入力オペランド272を受信し、共有記憶モジュール414から共有入力オペランド274を受信し、及びプライベート入力オペランド272及び共有入力オペランド274に基づいて出力オペランド280を生成するように構成される。
[047] 図4Bに示されるように、記憶セル430の各々は、一意識別子440によって一意的に識別することができる。一意識別子440は、高位ビット442及び低位ビット444を含むビットアドレスか、高位及び低位バイトを含むバイトアドレスか又はそれらの組合せであり得る。演算においては、高位ビット442は、最上位ビット(MSB)であり得る。また、MSBは、上位の数字になればなるほど左側に記載されるという位置表記法により、左端ビットと呼ぶこともできる。他方では、低位ビット444は、右端に位置するビットと呼ばれる。例えば、「2_E5」というビットアドレスを有する一意識別子440では、高位ビット442は、左端ビット(すなわち「2」)を指し、低位ビット444は、右側のビット(すなわち「E5」)を指す。
[048] いくつかの実施形態では、記憶セル430は、プライベート記憶セル432又は共有記憶セル434である。プライベート記憶セル432は、プライベート記憶モジュール412内に位置し得る。共有記憶セル434は、共有記憶モジュール414内に位置し得る。一意識別子440の高位ビット442は、オペランド(270、280)のターゲット記憶モジュールを示すように構成され、一意識別子440の低位ビット444は、オペランド(270、280)のターゲット記憶モジュール内のターゲット記憶セルを示すように構成される。例えば、「2_E5」というビットアドレスを有する一意識別子440は、記憶モジュール「2」と、記憶モジュール「2」内の記憶セル「E5」とを指す。言い換えれば、高位ビット442は、記憶モジュールが「プライベート」である処理ユニットも示し得、低位ビット444は、記憶モジュール内の場所も示し得る。
[049] プライベート記憶セル432及び共有記憶セル434は、物理的に区別できない記憶セルであり、そのように事前にラベル付けされないことを理解されたい。記憶セルに対する「プライベート」及び「共有」の属性は、データのアドレス指定を行うようにプログラムされたコンパイラが生成した命令に基づいて決定される。例えば、データは、いかなるセルにも格納することができる。読み取りステップの間、コンパイラが生成した命令がデータを「プライベート」として示す場合は、データは、プライベート入力オペランド272として並列で読み取ることができる。或いは、コンパイラが生成した命令がデータを「共有」として示す場合は、データは、共有入力オペランド274として読み取ることができる。
[050] いくつかの実施形態では、一意識別子440は、例えば、数字、英数字、16進数(例えば、図4Aに示されるもの)、8進数又は同様のものなど、ソフトウェアアドレス指定モードによってアドレス指定可能な他の文字を含む。
[051] 図4Aに戻ると、処理ユニットアレイ240又は複数の処理ユニットの各々は、出力データ280を生成することができる。出力データ280は、プライベート出力データ282又は共有出力データ284であり得、ニューラルネットワークプロセッサの多層アルゴリズムの次の層における動作によって決定される。図4Aに示されるように、出力データ280は、統合記憶媒体の記憶モジュール410の各々に並列に書き戻されるため、プライベート出力データ282と見なすことができる。
[052] いくつかの実施形態では、ニューラルネットワークプロセッサは、コンパイラ(図示せず)を含む。コンパイラは、実行可能プログラムを作成するために、あるプログラミング言語で記載されたコンピュータコードを別のプログラミング言語に変換するプログラム又はコンピュータソフトウェアである。マシニングアプリケーションでは、コンパイラは、例えば、前処理、字句解析、構文解析、意味解析、入力プログラムから中間表現への変換、コード最適化及びコード生成、又は、それらの組合せなどの様々な動作を実行することができる。
[053] 図5は、本開示の実施形態と一致する、例示的なデータ構造化動作500のプロセスフローチャートである。例えば、データ構造化動作500は、オンチップ通信システム(例えば、オンチップ通信システム110)によって実行することができる。
[054] ステップ502は、複数の記憶セル(例えば、記憶セル430)を含むように統合記憶媒体(例えば、統合記憶媒体400)の記憶モジュール(例えば、記憶モジュール410)を構成することを含む。いくつかの実施形態では、ステップ502は、プライベート記憶セル(例えば、プライベート記憶セル432)を含むようにプライベート記憶モジュール(例えば、プライベート記憶モジュール412)を構成すること、及び/又は、共有記憶セル(例えば、共有記憶セル434)を含むように共有記憶モジュール414(例えば、共有記憶モジュール414)を構成することを含む。記憶セルを含むように記憶モジュールを構成することは、利用可能な全記憶空間、ソフトウェアプログラム又はアルゴリズム、ハードウェア制限、時間制限及び同様のものに基づいて、記憶空間を割り当てることを含み得る。ソフトウェアアプリケーション又はアルゴリズムが多層であり、プライベートデータより多くの共有データを含む複数の演算層を必要とする場合は、記憶モジュールは、より多くの共有記憶セル又はより多くの共有記憶モジュールを含むように構成することができる。
[055] ステップ504は、処理ユニット(例えば、処理ユニットアレイ240)又は複数の処理ユニットと通信するように記憶媒体(例えば、図4Aの統合記憶媒体400)を構成することを含む。いくつかの実施形態では、処理ユニットは、算術論理演算ユニット(ALU)、浮動小数点ユニット(FPU)、中央処理装置(CPU)又はグラフィックス処理ユニット(GPU)である。単一のCPUは、1つ又は複数のALUを含み得る。一般に、ALUは、整数2進数における算術及びビット単位演算を実行する組合せデジタル電子回路である。処理ユニットは、複数の処理ユニット(例えば、並列演算するように構成された処理ユニットのアレイ)を含み得る。
[056] 処理ユニットと通信することは、処理ユニットによって生成されたデータを受信すること、又は、格納データを処理ユニットに提供することを含み得る。記憶媒体は、演算予定のデータのソース又はデータ記憶のターゲットであり得る。いくつかの実施形態では、ハードウェアシステムは、複数の記憶モジュールからデータを受信するように構成された単一の処理ユニットを含む。また、ハードウェアシステムは、対応する記憶モジュールからのみデータを受信するように構成された各記憶モジュールの固有の処理ユニットも含み得る。
[057] ステップ506では、処理ユニット(例えば、処理ユニットアレイ240)は、コンパイラによって生成された命令に基づいて出力データ(例えば、出力データ280)を生成する。いくつかの実施形態では、コンパイラは、実行可能プログラムを作成するために、あるプログラミング言語で記載されたコンピュータコードを別のプログラミング言語に変換するプログラム又はコンピュータソフトウェアである。コンパイラは、記憶媒体からデータにアクセスするように構成された命令セットを生成し、アクセスされたデータに対する所望の演算を実行し、演算に基づいて出力データを生成し、後続の処理のために、生成した出力データを記憶媒体に戻して格納することができる。また、命令は、入力及び出力データに特性を割り当てることも含み得る。データの特性は、プライベート、共有、制限又は同様のものであり得る。
[058] 本明細書で論じられる例では、コンパイラは、「A=XW1」というベクトル演算のために以下のコードを生成し、「X」はオペランド2と見なすことができ、「W1」はオペランド1と見なすことができる。命令セットについては、本開示の実施形態に従って、図4Aを参照して説明する。
i1:LOAD.SIMD OP1 0×0_00
i2:LOAD.SHARED OP2 0×0_F0
i3:MUL RESULT OP1 OP2
i4:STORE.SIMD RESULT 0×0_F1
[059] 前述の命令セット内の命令は、一般に、データの動作、データの特性及び記憶媒体内のターゲット場所を含む。
[060] いくつかの実施形態では、データの動作は、ロード(読み取り)、格納(書き込み)、算術演算(例えば、加算、減算、乗算、除算)、コピー、ペースト及び同様のものを含む。データの特性は、一般に、記憶媒体内のデータのアクセス可能性を指し得る。データの特性は、プライベート、共有、制限、許可、グローバル、ローカル又はそれらの組合せを含み得る。データは、一般に、オペランドと呼ばれる。データは、実行されているベクトル演算に基づいて、入力オペランド(例えば、オペランド1(OP1)及びオペランド2(OP2))又は出力データであり得る。
[061] i1~i4の命令セットでは、ロード/格納命令のサブフィールドは、データをどのようにロード/格納するかを含意する。「.SHARED」というサブフィールドは、共有データとしてデータを読み取るか又は書き込むべきであることを含意する。このモードでは、高位ビット(例えば、図4Bの442)と低位ビット(例えば、図4Bの444)は両方とも、入力オペランド又は出力データのターゲット場所を決定するために利用される。「.SIMD」というサブフィールドは、プライベートデータとしてデータを並列に読み取るか又は書き込むべきであることを含意し、高位ビットは、ハードウェアによって無視することができ、低位ビットは、入力オペランド又は出力データのターゲット場所を決定するために利用される。
[062] 命令i1では、各処理ユニット(例えば、図4Aの242、244、246及び248)は、入力オペランド1(例えば、プライベート入力オペランド272)を並列に読み取る。ビットアドレス「0_00」の高位ビット「0」は利用されず、低位ビット「00」は、記憶セル及び記憶セルの特性(例えば、プライベート記憶セル432)を示す。例えば、図2Aを参照すると、「W1」アレイの行1のすべてのデータ(W1_1i)は同時に、しかし対応する処理ユニットの各々に対しては別々に読み取られる。「LOAD.SIMD」フィールドは、データを並列に読み取るべきであることを含意する。
[063] 命令i2では、図4Aに示されるように、入力オペランド2(例えば、共有入力オペランド274)は、1回読み取られ、すべての処理ユニットにブロードキャストされる。ビットアドレス「0_F0」の高位ビット「0」は、データが格納される記憶モジュールを示し、低位ビット「F0」は、データが格納される記憶セル及び記憶セルの特性(例えば、共有記憶セル434)を示す。例えば、図2Aを参照すると、「X」アレイの「X1」のデータは、1回読み取られ、対応する処理ユニットの各々にブロードキャストされる。LOAD.SHAREDフィールドは、すべての処理ユニット間で共有データとしてデータを読み取るべきであることを含意する。
[064] 命令i3では、処理ユニットは、出力データ「A」を生成するために、ベクトル演算によって定義されるように、入力オペランド1及び2の乗算を実行する。算術演算は、加算、減算、乗算若しくは除算又はそれらの組合せの基本的な算術関数を含み得る。いくつかの実施形態では、処理ユニットは、複素数算術及び代数関数、対数関数、べき乗又は同様のものを実行するように構成される。
[065] 命令i4では、命令i3において生成された出力データ「A」は、さらなる処理のために記憶媒体に並列に戻して格納される。生成された出力データ「A」(例えば、出力データ280)は、多層アルゴリズムの次の層の入力オペランドとして使用することができる。ビットアドレス「0_F1」の高位ビット「0」は、ハードウェアによって利用されず、低位ビット「F1」は、出力データを格納するための記憶セル及び記憶セルの特性(例えば、共有記憶セル434)を示す。例えば、図2Bを参照すると、出力データ280は、統合記憶媒体の共有又はプライベート記憶モジュールに格納する前に、一時記憶装置(例えば、書き込みバッファ260)に一時的に格納することができる。
[066] ステップ508では、生成された出力データは、さらなる処理のために統合記憶媒体に戻して格納される。一般に、ニューラルネットワークは、多層に構造化することができる。層の出力は、さらなる処理のために、次の層に伝えることができる。例えば、前の層の出力は、次の層に対する入力であり得る。
[067] 前述の仕様では、実装形態ごとに変化し得る多くの特有の詳細を参照して、実施形態について説明した。説明される実施形態の適応及び変更は、ある程度行うことができる。本明細書で開示される発明の仕様及び実践を考慮することにより、他の実施形態が当業者に明らかになり得る。仕様及び例は単なる例示と見なされ、本発明の真の範囲及び精神は以下の特許請求の範囲によって示されることが意図される。また、図に示されるステップのシーケンスは、単なる例示を目的とし、ステップの特定のシーケンスに限定することは意図しないことも意図される。従って、当業者は、同じ方法を実施する間、異なる順番でこれらのステップを実行できることを理解することができる。

Claims (27)

  1. 統合記憶媒体と、
    複数の処理ユニットを備え、前記統合記憶媒体と通信する処理アレイと、
    を含むコンピュータシステムであって、
    前記統合記憶媒体が、データを格納するように構成された複数の記憶セルをそれぞれ有する複数の記憶モジュールを含み、
    前記複数の記憶モジュールのそれぞれが、プライベート記憶モジュール又は共有記憶モジュールとしてアドレス指定可能であり、
    前記複数の記憶モジュールのそれぞれに含まれる前記複数の記憶セルのそれぞれが、一意的なセル識別子によって識別され、
    前記処理アレイが、前記複数の処理ユニットのそれぞれに、
    前記複数の記憶モジュールに含まれる前記複数の記憶セルのうちのターゲット記憶セルから入力データを受信することと、
    前記受信した入力データに基づいて出力データを生成することと、
    を行わせることにより、前記複数の処理ユニット上で命令を実行するように構成され
    前記ターゲット記憶セルの属性は、前記命令が前記入力データをプライベートデータとして読み取ることを示す場合、単一の処理ユニットに対してデータを供給することを示すプライベート属性に切り替えられ、前記命令が前記入力データを共有データとして読み取ることを示す場合、複数の処理ユニットに対してデータを供給することを示す共有属性に切り替えられる、コンピュータシステム。
  2. 記憶セルの前記一意的なセル識別子が、第1の複数のビットと、第2の複数のビットとを含むビットアドレスを含む、請求項1に記載のコンピュータシステム。
  3. 前記第1の複数のビットが、前記複数の記憶モジュールのターゲット記憶モジュールを示し、前記第2の複数のビットが、前記ターゲット記憶モジュール内の前記複数の記憶セルのターゲット記憶セルを示す、請求項2に記載のコンピュータシステム。
  4. 前記命令は、ターゲットの一意的なセル識別子の参照情報と、前記ターゲットの一意的なセル識別子の参照情報がプライベート参照情報であるか又は共有参照情報であるかを示す参照属性とを含む、請求項2又は3に記載のコンピュータシステム。
  5. 前記複数の記憶モジュールが、前記複数の処理ユニットと通信するように構成される、請求項1~4のいずれか一項に記載のコンピュータシステム。
  6. 前記参照属性が、前記ターゲットの一意的なセル識別子の参照情報が共有参照情報であることを示し、
    前記処理アレイが、前記ターゲットの一意的なセル識別子によって識別されるターゲット記憶セルから入力データを取得し、前記複数の処理ユニットに前記取得した入力データをブロードキャストするように、さらに構成される、請求項4に記載のコンピュータシステム。
  7. 前記複数の処理ユニットのそれぞれが、対応する記憶モジュールを有し、
    前記参照属性が、前記ターゲットの一意的なセル識別子の参照情報がプライベート参照情報であることを示し、
    前記処理アレイが、前記複数の処理ユニットのそれぞれに、
    前記ターゲットの一意的なセル識別子を用いて、処理ユニットごとの対応する記憶モジュール内のターゲット記憶セルから入力データを取得すること、を行わせるようにさらに構成される、請求項4に記載のコンピュータシステム。
  8. 前記処理アレイが、前記複数の処理ユニットのそれぞれに、1つの記憶モジュールを割り当てるようにさらに構成される、請求項5に記載のコンピュータシステム。
  9. データを格納するように構成された複数の記憶セルをそれぞれ有する複数の記憶モジュールを含み、
    前記複数の記憶モジュールのそれぞれが、プライベート記憶モジュール又は共有記憶モジュールとしてアドレス指定可能であり、
    前記複数の記憶モジュールのそれぞれに含まれる前記複数の記憶セルのそれぞれが、一意的なセル識別子によって識別され
    前記複数の記憶セルのターゲット記憶セルの属性は、アクセス命令が入力データをプライベートデータとして読み取ることを示す場合、単一の処理ユニットに対してデータを供給することを示すプライベート属性に切り替えられ、前記アクセス命令が入力データを共有データとして読み取ることを示す場合、複数の処理ユニットに対してデータを供給することを示す共有属性に切り替えられる、統合記憶媒体。
  10. 記憶セルの前記一意的なセル識別子が、第1の複数のビットと、第2の複数のビットとを含むビットアドレスを含む、請求項9に記載の統合記憶媒体。
  11. 前記第1の複数のビットが、前記複数の記憶モジュールのターゲット記憶モジュールを示し、前記第2の複数のビットが、前記ターゲット記憶モジュール内の前記複数の記憶セルのターゲット記憶セルを示す、請求項10に記載の統合記憶媒体。
  12. 前記アクセス命令は、ターゲットの一意的なセル識別子の参照情報と、前記ターゲットの一意的なセル識別子の参照情報がプライベート参照情報であるか又は共有参照情報であるかを示す参照属性とを含む、請求項11に記載の統合記憶媒体。
  13. 前記複数の記憶モジュールが、複数の処理ユニットと通信するように構成される、請求項12に記載の統合記憶媒体。
  14. 前記複数の処理ユニットのそれぞれが、対応する記憶モジュールを有し、
    前記参照属性が、前記ターゲットの一意的なセル識別子の参照情報がプライベート参照情報であることを示し、
    前記複数の処理ユニットが、前記ターゲットの一意的なセル識別子を用いて、処理ユニットごとの対応する記憶モジュール内のターゲット記憶セルから入力データを取得することにより、前記アクセス命令を実行するように構成される、請求項13に記載の統合記憶媒体。
  15. 前記複数の処理ユニットのそれぞれに、1つの記憶モジュールが割り当てられる、請求項13に記載の統合記憶媒体。
  16. コンピュータシステムにおいてデータを構造化するための方法であって、
    複数の処理ユニットを備えかつ統合記憶媒体と通信する処理アレイにおいて、命令を受信することであって、
    前記統合記憶媒体は、データを格納するように構成された複数の記憶セルをそれぞれ有する複数の記憶モジュールを含み、
    前記複数の記憶モジュールのそれぞれが、プライベート記憶モジュール又は共有記憶モジュールとしてアドレス指定可能であり、
    前記複数の記憶モジュールのそれぞれに含まれる前記複数の記憶セルのそれぞれが、一意的なセル識別子によって識別される、ことと、
    前記複数の処理ユニットにおいて、前記複数の記憶モジュールに含まれる前記複数の記憶セルのうちのターゲット記憶セルから入力データを受信すること、及び前記受信した入力データに基づいて出力データを生成することを行うことにより、前記複数の処理ユニット上で前記受信した命令を実行することと、
    を含み、
    前記ターゲット記憶セルの属性は、前記命令が前記入力データをプライベートデータとして読み取ることを示す場合、単一の処理ユニットに対してデータを供給することを示すプライベート属性に切り替えられ、前記命令が前記入力データを共有データとして読み取ることを示す場合、複数の処理ユニットに対してデータを供給することを示す共有属性に切り替えられる、方法。
  17. 記憶セルの前記一意的なセル識別子が、第1の複数のビットと、第2の複数のビットとを含むビットアドレスを含む、請求項16に記載の方法。
  18. 前記第1の複数のビットが、前記複数の記憶モジュールのターゲット記憶モジュールを示し、前記第2の複数のビットが、前記ターゲット記憶モジュール内の前記複数の記憶セルのターゲット記憶セルを示す、請求項17に記載の方法。
  19. 前記命令は、ターゲットの一意的なセル識別子の参照情報と、前記ターゲットの一意的なセル識別子の参照情報がプライベート参照情報であるか又は共有参照情報であるかを示す参照属性とを含む、請求項18に記載の方法。
  20. 前記複数の処理ユニットのそれぞれが、対応する記憶モジュールを有し、
    前記参照属性が、前記ターゲットの一意的なセル識別子の参照情報がプライベート参照情報であることを示し、
    前記複数の処理ユニット上で前記受信した命令を実行することが、前記複数の処理ユニットのそれぞれについて、前記ターゲットの一意的なセル識別子を用いて、処理ユニットごとの対応する記憶モジュール内のターゲット記憶セルから入力データを取得することを含む、請求項19に記載の方法。
  21. 前記複数の記憶モジュールが、前記複数の処理ユニットと通信するように構成される、請求項16に記載の方法。
  22. 統合記憶媒体においてデータを構造化するための方法であって、
    前記統合記憶媒体上に格納されるデータを伝えることを含み、
    前記統合記憶媒体は、データを格納するように構成された複数の記憶セルをそれぞれ有する複数の記憶モジュールを含み、
    前記複数の記憶モジュールのそれぞれが、プライベート記憶モジュール又は共有記憶モジュールとしてアドレス指定可能であり、
    前記複数の記憶モジュールのそれぞれに含まれる前記複数の記憶セルのそれぞれが、一意的なセル識別子によって識別され
    前記複数の記憶セルのターゲット記憶セルの属性は、アクセス命令が入力データをプライベートデータとして読み取ることを示す場合、単一の処理ユニットに対してデータを供給することを示すプライベート属性に切り替えられ、前記アクセス命令が入力データを共有データとして読み取ることを示す場合、複数の処理ユニットに対してデータを供給することを示す共有属性に切り替えられる、方法。
  23. 前記統合記憶媒体上に格納されるデータを伝えることが、前記複数の記憶モジュール内の前記複数の記憶セルの1つ又は複数から、前記統合記憶媒体と通信する複数の処理ユニットへ、入力データを伝えることを含み、
    前記複数の処理ユニットが、前記統合記憶媒体から伝えられた前記入力データを受信し、前記受信した入力データに基づいて出力データを生成するように構成される、請求項22に記載の方法。
  24. 記憶セルの前記一意的なセル識別子が、第1の複数のビットと、第2の複数のビットとを含むビットアドレスを含む、請求項23に記載の方法。
  25. 前記第1の複数のビットが、前記複数の記憶モジュールのターゲット記憶モジュールを示し、前記第2の複数のビットが、前記ターゲット記憶モジュール内の前記複数の記憶セルのターゲット記憶セルを示す、請求項24に記載の方法。
  26. 前記アクセス命令は、ターゲットの一意的なセル識別子の参照情報と、前記ターゲットの一意的なセル識別子の参照情報がプライベート参照情報であるか又は共有参照情報であるかを示す参照属性とを含む、請求項25に記載の方法。
  27. 前記複数の処理ユニットのそれぞれが、対応する記憶モジュールを有し、
    前記参照属性が、前記ターゲットの一意的なセル識別子の参照情報がプライベート参照情報であることを示し、
    前記複数の処理ユニットが、前記ターゲットの一意的なセル識別子を用いて、処理ユニットごとの対応する記憶モジュール内のターゲット記憶セルから入力データを受信することにより、前記アクセス命令を実行するように構成される、請求項26に記載の方法。
JP2020532976A 2017-12-22 2018-12-21 ニューラルネットワークプロセッサに対する統合メモリ構造 Active JP7266602B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762610119P 2017-12-22 2017-12-22
US62/610,119 2017-12-22
US15/984,255 2018-05-18
US15/984,255 US11436143B2 (en) 2017-12-22 2018-05-18 Unified memory organization for neural network processors
PCT/US2018/067301 WO2019126758A1 (en) 2017-12-22 2018-12-21 A unified memory organization for neural network processors

Publications (3)

Publication Number Publication Date
JP2021507383A JP2021507383A (ja) 2021-02-22
JP2021507383A5 JP2021507383A5 (ja) 2022-01-11
JP7266602B2 true JP7266602B2 (ja) 2023-04-28

Family

ID=66949585

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020532976A Active JP7266602B2 (ja) 2017-12-22 2018-12-21 ニューラルネットワークプロセッサに対する統合メモリ構造

Country Status (5)

Country Link
US (1) US11436143B2 (ja)
EP (1) EP3729279A4 (ja)
JP (1) JP7266602B2 (ja)
CN (1) CN111630502B (ja)
WO (1) WO2019126758A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11783167B1 (en) 2018-04-20 2023-10-10 Perceive Corporation Data transfer for non-dot product computations on neural network inference circuit
US11205115B1 (en) 2018-04-20 2021-12-21 Perceive Corporation Neural network inference circuit
US11568227B1 (en) 2018-04-20 2023-01-31 Perceive Corporation Neural network inference circuit read controller with multiple operational modes
US11531868B1 (en) 2018-04-20 2022-12-20 Perceive Corporation Input value cache for temporarily storing input values
US11586910B1 (en) * 2018-04-20 2023-02-21 Perceive Corporation Write cache for neural network inference circuit
US10977338B1 (en) 2018-04-20 2021-04-13 Perceive Corporation Reduced-area circuit for dot product computation
US11995533B1 (en) 2018-12-05 2024-05-28 Perceive Corporation Executing replicated neural network layers on inference circuit
FR3089649A1 (fr) * 2018-12-06 2020-06-12 Stmicroelectronics (Rousset) Sas Procédé et dispositif de détermination de la taille mémoire globale d’une zone mémoire globale allouée aux données d’un réseau de neurones
FR3094104A1 (fr) 2019-03-20 2020-09-25 Stmicroelectronics (Rousset) Sas Procédé et dispositif de détermination de la taille mémoire globale d’une zone mémoire globale allouée aux données d’un réseau de neurones compte tenu de sa topologie
US11941533B1 (en) 2019-05-21 2024-03-26 Perceive Corporation Compiler for performing zero-channel removal
CN113204478B (zh) * 2021-04-06 2022-05-03 北京百度网讯科技有限公司 测试单元的运行方法、装置、设备和存储介质
KR20230168574A (ko) 2022-06-07 2023-12-14 리벨리온 주식회사 뉴럴 프로세싱 장치의 공유 페이지 테이블 사용 방법 및 피지컬 페이지 할당 방법
KR102509472B1 (ko) * 2022-06-07 2023-03-14 리벨리온 주식회사 뉴럴 프로세싱 장치 및 그의 공유 페이지 테이블 사용 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001290699A (ja) 2000-04-10 2001-10-19 Matsushita Electric Ind Co Ltd デュアルポートramアクセス装置
JP6250780B1 (ja) 2016-12-01 2017-12-20 ヴィア アライアンス セミコンダクター カンパニー リミテッド キャッシュメモリ又はニューラルネットワークユニットメモリとして動作可能なメモリアレイを有するプロセッサ

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02292684A (ja) * 1989-05-06 1990-12-04 Takayama:Kk 画像認識システム
US5956703A (en) * 1995-07-28 1999-09-21 Delco Electronics Corporation Configurable neural network integrated circuit
US7073044B2 (en) * 2001-03-30 2006-07-04 Intel Corporation Method and apparatus for sharing TLB entries
GB2419005B (en) 2002-04-22 2006-06-07 Micron Technology Inc Providing a register file memory with local addressing in a SIMD parallel processor
GB2417105B (en) 2004-08-13 2008-04-09 Clearspeed Technology Plc Processor memory system
GB0623276D0 (en) * 2006-11-22 2007-01-03 Transitive Ltd Memory consistency protection in a multiprocessor computing system
US8271763B2 (en) 2009-09-25 2012-09-18 Nvidia Corporation Unified addressing and instructions for accessing parallel memory spaces
US8990506B2 (en) * 2009-12-16 2015-03-24 Intel Corporation Replacing cache lines in a cache memory based at least in part on cache coherency state information
US8868848B2 (en) * 2009-12-21 2014-10-21 Intel Corporation Sharing virtual memory-based multi-version data between the heterogenous processors of a computer platform
US8982140B2 (en) * 2010-09-24 2015-03-17 Nvidia Corporation Hierarchical memory addressing
US9274960B2 (en) * 2012-03-20 2016-03-01 Stefanos Kaxiras System and method for simplifying cache coherence using multiple write policies
US9009419B2 (en) * 2012-07-31 2015-04-14 Advanced Micro Devices, Inc. Shared memory space in a unified memory model
CN104756078B (zh) * 2012-08-20 2018-07-13 唐纳德·凯文·卡梅伦 处理资源分配的装置和方法
US9563425B2 (en) * 2012-11-28 2017-02-07 Intel Corporation Instruction and logic to provide pushing buffer copy and store functionality
US9733995B2 (en) * 2014-12-17 2017-08-15 Intel Corporation Scalable synchronization mechanism for distributed memory
EP3035204B1 (en) 2014-12-19 2018-08-15 Intel Corporation Storage device and method for performing convolution operations
US10324861B2 (en) * 2015-02-05 2019-06-18 Eta Scale Ab Systems and methods for coherence in clustered cache hierarchies
US9940287B2 (en) * 2015-03-27 2018-04-10 Intel Corporation Pooled memory address translation
GB2543520B (en) 2015-10-20 2019-06-19 Advanced Risc Mach Ltd Memory access instructions
US20170060736A1 (en) * 2015-12-09 2017-03-02 Mediatek Inc. Dynamic Memory Sharing

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001290699A (ja) 2000-04-10 2001-10-19 Matsushita Electric Ind Co Ltd デュアルポートramアクセス装置
JP6250780B1 (ja) 2016-12-01 2017-12-20 ヴィア アライアンス セミコンダクター カンパニー リミテッド キャッシュメモリ又はニューラルネットワークユニットメモリとして動作可能なメモリアレイを有するプロセッサ

Also Published As

Publication number Publication date
JP2021507383A (ja) 2021-02-22
EP3729279A1 (en) 2020-10-28
EP3729279A4 (en) 2021-03-03
WO2019126758A1 (en) 2019-06-27
CN111630502A (zh) 2020-09-04
US20190196970A1 (en) 2019-06-27
US11436143B2 (en) 2022-09-06
CN111630502B (zh) 2024-04-16

Similar Documents

Publication Publication Date Title
JP7266602B2 (ja) ニューラルネットワークプロセッサに対する統合メモリ構造
US11693657B2 (en) Methods for performing fused-multiply-add operations on serially allocated data within a processing-in-memory capable memory device, and related memory devices and systems
US5784632A (en) Parallel diagonal-fold array processor
JP7264897B2 (ja) メモリ装置及びそれを制御するための方法
US4621339A (en) SIMD machine using cube connected cycles network architecture for vector processing
JP2009514070A (ja) 局所キャッシュとしてシフトレジスタを使用する論理シミュレーション用のハードウェア加速システム
US10970043B2 (en) Programmable multiply-add array hardware
US11921814B2 (en) Method and device for matrix multiplication optimization using vector registers
Chen et al. BRAMAC: Compute-in-BRAM Architectures for Multiply-Accumulate on FPGAs
CN111656319B (zh) 利用特定数检测的多流水线架构
CN112906877A (zh) 用于执行神经网络模型的存储器架构中的数据布局有意识处理
CN116431214A (zh) 一种用于可重构深度神经网络加速器的指令集装置
CN115373744A (zh) 基于risc-v的拓展vm指令集编码方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211130

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221130

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230222

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230418

R150 Certificate of patent or registration of utility model

Ref document number: 7266602

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350