[go: up one dir, main page]

JP7242634B2 - メモリチップ - Google Patents

メモリチップ Download PDF

Info

Publication number
JP7242634B2
JP7242634B2 JP2020505784A JP2020505784A JP7242634B2 JP 7242634 B2 JP7242634 B2 JP 7242634B2 JP 2020505784 A JP2020505784 A JP 2020505784A JP 2020505784 A JP2020505784 A JP 2020505784A JP 7242634 B2 JP7242634 B2 JP 7242634B2
Authority
JP
Japan
Prior art keywords
memory
processor
bank
data
sub
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
JP2020505784A
Other languages
English (en)
Other versions
JP2020529676A5 (ja
JP2020529676A (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 JP2020529676A publication Critical patent/JP2020529676A/ja
Publication of JP2020529676A5 publication Critical patent/JP2020529676A5/ja
Application granted granted Critical
Publication of JP7242634B2 publication Critical patent/JP7242634B2/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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1016Error in accessing a memory location, i.e. addressing error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/102Error in check bits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1608Error detection by comparing the output signals of redundant hardware
    • G06F11/1616Error detection by comparing the output signals of redundant hardware where the redundant component is an I/O device or an adapter therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1657Access to multiple memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8038Associative processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1653Address circuits or decoders
    • G11C11/1655Bit-line or column circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1653Address circuits or decoders
    • G11C11/1657Word-line or row circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1675Writing or programming circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/4076Timing circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/408Address circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/409Read-write [R-W] circuits 
    • G11C11/4093Input/output [I/O] data interface arrangements, e.g. data buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1072Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F2015/761Indexing scheme relating to architectures of general purpose stored programme computers
    • G06F2015/765Cache

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Memory System (AREA)
  • Multi Processors (AREA)
  • Microcomputers (AREA)
  • Advance Control (AREA)
  • Hardware Redundancy (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Description

[関連出願の相互参照]
本出願は、2017年7月30日に出願された米国仮特許出願第62/538722号、2017年7月30日に出願された米国仮特許出願第62/538724号、および2017年8月23日に出願された米国仮特許出願第62/548990号に対する優先権の利益を主張するものである。上記の全出願の内容全体を参照によって本願明細書に引用したものとする。
本開示は全体的に、メモリ負荷の高い動作を促進する装置に関する。詳細には、本開示は、専用メモリバンクに連結される処理要素を含むハードウェアチップに関する。背景情報
プロセッサの速度が上がり続け、メモリサイズの大型化が続く場合、効果的な処理速度に対する著しい制限がフォンノイマンボトルネックとなる。フォンノイマンボトルネックは、従来のコンピュータアーキテクチャに起因するスループット限界から生じる。詳細には、プロセッが着手する実際の計算に比べ、メモリからプロセッサまでのデータ転送がボトルネックになることが多い。したがって、メモリから読み込みおよび書き込みをするクロックサイクル数は、メモリ負荷の高い処理に伴い著しく増える。このような増えたクロックサイクル数は処理速度の効率をかなり悪くする。これは、メモリからの読み込みおよび書き込みがデータ演算用に使用できないクロックサイクルを消費してしまうためである。さらに、プロセッサの計算帯域幅は、プロセッサがメモリにアクセスするために使用するバスの計算帯域幅よりも一般的にかなり広い。
これらのボトルネックは、ニューラルネットワークおよび、データベース構築、インデックスサーチ、クエリといったその他の機械学習アルゴリズム、および、データ処理動作というよりはむしろ読み込みおよび書き込み動作を含むその他のタスク、などメモリ負荷の高い処理で特に顕著である。
その上、利用可能なデジタルデータ量の急増、および利用可能なデジタルデータ粒度により、機械学習アルゴリズムを開発する機会が創出され、新しい技術が可能になった。ところが、このことはさらに、データベースおよび並列計算の世界に扱いにくい難題をもたらしている。例えば、ソーシャルメディアおよびモノのインターネット(IoT)の台頭により、記録的な速度でデジタルデータが創出されている。この新しいデジタルデータは、新しい広告技法から工業プロセスのより正確な制御法まで多岐にわたるアルゴリズムを様々な目的で作成するのに使用することができる。しかしながら、この新しいデジタルデータは、記憶、処理、解析、および取り扱いが困難である。
新しいデータ資源は、場合によってはペタバイトからゼタバイトの順に大容量になり得る。さらに、これらのデータ資源の増加速度はデータ処理能力を上回る可能性がある。したがって、データサイエンティストたちは、こうした難題に取り組むために、並列データ処理技術に救いを求めた。計算能力を高めるために、および大容量のデータを処理するために、データサイエンティストたちは負荷の高い並列処理を可能にするシステムおよび方法を創出することに努めている。しかし、こうした現存するシステムおよび方法はデータ処理要件に追いついていない。現存するシステムおよび方法がデータ管理用の追加リソースを要求したり、分離されたデータを統合したり、分割されたデータを解析したりすることによって、利用される技術が制限されているというのが大きな理由である。
大容量データセットの処理を促進するために、エンジニアおよびサイエンティストたちは現在、データ解析に使用されるハードウェアを改善しようと努めている。例えば、算術演算ではなくメモリ操作により適合した技術で製造される単一基板内にメモリ機能および処理機能を組み込むことによって、新しい半導体プロセッサまたは半導体チップ(例えば本明細書で記載されるもの)をデータ量の多いタスク用に特別に設計することができる。データ量の多いタスク用に特別に設計された集積回路を用いれば、新しいデータ処理要件を満たすことが可能になる。しかしながら、大容量データセットのデータ処理に取り組むこうした新しいアプローチには、チップ設計およびチップ製造における新しい問題を解決することが求められる。例えば、データ量の多いタスク用に設計された新しいチップが通常のチップ用に使用される製造技術および製造アーキテクチャで製造された場合、新しいチップは低性能および/または不適格の歩留りを有することになろう。さらに、新しいチップが現在のデータ処理法で動作するように設計された場合、新しいチップは低性能を有することになろう。なぜなら、現在のデータ処理法は並列演算を処理するチップの能力を制限する可能性があるためである。
本開示は、上記の1または複数の問題、とりわけ先行技術における問題を軽減または克服するための解決策を記載する。
本開示と一致する実施形態は、ハードウェア処理チップを含む装置を提供する。本開示の実施形態は、処理要素と対になる専用メモリバンクを使用して従来のプロセッサに比べてより効率的でより効果的な処理速度をもたらすことができる。例えば、開示された実施形態と一致する本発明のチップは、各処理要素と、処理要素に対応するメモリバンクとの間に専用バスを含み得る。さらに、本開示のチップは、処理要素間のデータ転送のタイミングを制御するアービタおよび/またはその他のハードウェアがなくてもよい。開示されたその他の非一時的コンピュータ可読媒体は、上位命令を、本明細書で開示されるハードウェアチップによって実行される下位命令にコンパイルする命令を記憶することができる。
本開示のいくつかの実施形態は分散型プロセッサを備え、分散型プロセッサは、基板と、基板に配置されるメモリアレイであって、メモリアレイが複数の個別のメモリバンクを含む、メモリアレイと、基板に配置される処理アレイであって、処理アレイが複数のプロセッササブユニットを含み、複数のプロセッササブユニットの各々が複数の個別のメモリバンクの対応する専用の1つと関連付けられる、処理アレイと、第1の複数のバスであって、各バスが複数のプロセッササブユニットの1つをその対応する専用メモリバンクに接続する、第1の複数のバスと、第2の複数のバスであって、各バスが複数のプロセッササブユニットの1つを複数のプロセッササブユニットの別のプロセッササブユニットに接続する、第2の複数のバスと、を含む。
本開示と一致する他の実施形態はメモリチップを備え、メモリチップは、基板と、基板に配置されるメモリアレイであって、メモリアレイが複数の個別のメモリバンクを含む、メモリアレイと、基板に配置される処理アレイであって、処理アレイが複数のアドレスジェネレータを含み、アドレスジェネレータの各々が複数の個別のメモリバンクの対応する専用の1つと関連付けられる、処理アレイと、複数のバスであって、各バスが複数のアドレスジェネレータの1つをその対応する専用メモリバンクに接続する、複数のバスと、を含む。
本開示と一致する別の実施形態は分散型プロセッサを備え得る。分散型プロセッサは、基板と、基板に配置されるメモリアレイであって、メモリアレイが複数の個別のメモリバンクを含み、個別のメモリバンクの各々が1メガバイトよりも大きい容量を有する、メモリアレイと、基板に配置される処理アレイであって、処理アレイが複数のプロセッササブユニットを含み、プロセッササブユニットの各々が複数の個別のメモリバンクの対応する専用の1つと関連付けられる、処理アレイと、を含む。
本開示と一致するさらに他の実施形態は分散型プロセッサを備え得る。分散型プロセッサは、基板と、基板に配置されるメモリアレイであって、メモリアレイが複数の個別のメモリバンクを含む、メモリアレイと、基板に配置される処理アレイであって、処理アレイが複数のプロセッササブユニットを含み、複数のプロセッササブユニットの各々が複数の個別のメモリバンクの対応する専用の1つと関連付けられる、処理アレイと、複数のバスであって、複数のバスの各々が複数のプロセッササブユニットの1つを複数のプロセッササブユニットの少なくとも別の1つに接続する、複数のバスと、を含み、複数のバスにはタイミングハードウェア論理コンポーネントがなく、その結果、プロセッササブユニット間の、および複数のバスのうち対応するバス全体にわたるデータ転送がタイミングハードウェア論理コンポーネントによって制御されない。
他の実施形態はメモリチップ上の分散型プロセッサを備え得る。メモリチップ上の分散型プロセッサは、基板と、基板に配置されるメモリアレイであって、メモリアレイが複数の個別のメモリバンクを有する、メモリアレイと、基板に配置される処理アレイであって、処理アレイが複数のプロセッササブユニットを有し、複数のプロセッササブユニットの各々が複数の個別のメモリバンクの対応する専用の1つと関連付けられる、処理アレイと、複数のバスであって、複数のバスの各々が複数のプロセッササブユニットの1つを複数の個別のメモリバンクの対応する専用の1つに接続する複数のバスと、を含み、複数のバスにはタイミングハードウェア論理コンポーネントがなく、その結果、プロセッササブユニットと、複数の個別のメモリバンクの対応する専用の1つとの間の、および複数のバスのうち対応するバス全体にわたるデータ転送がタイミングハードウェア論理コンポーネントによって制御されない。
他の実施形態は分散型プロセッサを備え得る。分散型プロセッサは、基板と、基板に配置されるメモリアレイであって、メモリアレイが複数の個別のメモリバンクを含む、メモリアレイと、基板に配置される処理アレイであって、処理アレイが複数のプロセッササブユニットを含み、複数のプロセッササブユニットの各々が複数の個別のメモリバンクの対応する専用の1つと関連付けられる、処理アレイと、複数のバスであって、複数のバスの各々が複数のプロセッササブユニットの1つを複数のプロセッササブユニットの少なくとも別の1つのプロセッササブユニットに接続する、複数のバスと、を含み、複数のプロセッササブユニットが、複数のバス全体にわたるデータ転送のタイミングを制御するソフトウェアを実行することで、複数のバスの少なくとも1つのバス上でデータ転送が衝突しないように構成される。
他の実施形態はメモリチップ上の分散型プロセッサを備え得る。メモリチップ上の分散型プロセッサは、基板と、基板に配置される複数のプロセッササブユニットであって、各プロセッササブユニットが他のプロセッササブユニットから独立した一連の命令を実行するように構成され、各一連の命令が単一プロセッササブユニットによって実行される一連のタスクを定義する、複数のプロセッササブユニットと、基板に配置される対応する複数のメモリバンクであって、複数のプロセッササブユニットの各々が、複数のプロセッササブユニットの他のあらゆるプロセッササブユニットによって共有されない少なくとも1つの専用メモリバンクに接続される、対応する複数のメモリバンクと、複数のバスであって、複数のバスの各々が複数のプロセッササブユニットの1つを複数のプロセッササブユニットの少なくとも他の1つのプロセッササブユニットに接続する、複数のバスと、を含み、複数のバスの少なくとも1つのバス全体にわたるデータ転送が、複数のバスの少なくとも1つに接続されるプロセッササブユニット内に含まれる一連の命令によって予め定義される。
他の実施形態はメモリチップ上の分散型プロセッサを備え得る。メモリチップ上の分散型プロセッサは、メモリチップ上に配置される複数のプロセッササブユニットと、メモリチップ上に配置される複数のメモリバンクであって、複数のメモリバンクの各々が、複数のメモリバンクのうち他のメモリバンク内に記憶されるデータから独立したデータを記憶するように構成され、複数のプロセッササブユニットの各々が複数のメモリバンク間から少なくとも1つの専用メモリバンクに接続される、複数のメモリバンクと、複数のバスであって、複数のバスの各々が複数のプロセッササブユニットの1つを複数のメモリバンク間から1または複数の対応する専用メモリバンクに接続する、複数のバスと、を含み、複数のバスのうち特定のバス全体にわたるデータ転送が、複数のバスの特定のバスに接続される対応するプロセッササブユニットよって制御される。
他の実施形態はメモリチップ上の分散型プロセッサを備え得る。メモリチップ上の分散型プロセッサは、メモリチップ上に配置される複数のプロセッササブユニットと、メモリチップ上に配置される複数のメモリバンクであって、複数のプロセッササブユニットの各々が複数のメモリバンク間から少なくとも1つの専用メモリバンクに接続され、複数のメモリバンクの各メモリバンクが、複数のメモリバンクのうち他のメモリバンク内に記憶されるデータから独立したデータを記憶するように構成され、複数のメモリバンク間から1つの特定のメモリバンク内に記憶される少なくともいくつかのデータが、複数のメモリバンクの少なくとも別のメモリバンク内に記憶されるデータの複製を含む、複数のメモリバンクと、複数のバスであって、複数のバスの各々が複数のプロセッササブユニットの1つを複数のメモリバンク間から1または複数の対応する専用メモリバンクに接続する、複数のバスと、を含み、複数のバスのうち特定のバス全体にわたるデータ転送が、複数のバスの特定のバスに接続される対応するプロセッササブユニットよって制御される。
他の実施形態はメモリチップ上の分散型プロセッサを備え得る。メモリチップ上の分散型プロセッサは、メモリチップ上に配置される複数のプロセッササブユニットと、メモリチップ上に配置される複数のメモリバンクであって、複数のプロセッササブユニットの各々が複数のメモリバンク間から少なくとも1つの専用メモリバンクに接続され、複数のメモリバンクの各メモリバンクが、複数のメモリバンクのうち他のメモリバンク内に記憶されるデータから独立したデータを記憶するように構成され、複数のメモリバンク間から1つの特定のメモリバンク内に記憶される少なくともいくつかのデータが、複数のメモリバンクの少なくとも別のメモリバンク内に記憶されるデータの複製を含む、複数のメモリバンクと、複数のバスであって、複数のバスの各々が複数のプロセッササブユニットの1つを複数のメモリバンク間から1または複数の対応する専用メモリバンクに接続する、複数のバスと、を含み、複数のバスのうち特定のバス全体にわたるデータ転送が、複数のバスの特定のバスに接続される対応するプロセッササブユニットよって制御される。
他の実施形態は、複数のプロセッササブユニットおよび複数のメモリバンクを含むメモリチップ上で一連の実行命令をコンパイルする命令を記憶する非一時的コンピュータ可読媒体を備え得る。複数のプロセッササブユニット間からの各プロセッササブユニットが複数のメモリバンク間から少なくとも1つの対応する専用メモリバンクに接続され、命令は少なくとも1つのプロセッサに、一連の命令をサブシリーズ命令の複数のグループに分割させ、分割は、一連の命令と関連付けられたタスクを複数のプロセッササブユニットの異なるものに割り当てる段階であって、複数のプロセッササブユニットが、メモリチップに配置される複数のメモリバンク間に空間的に分散される、段階と、メモリチップの複数のプロセッササブユニットの複数対の間でデータを転送するタスクを生成し、複数のプロセッササブユニットの複数対の各々がバスによって接続される、段階と、割り当てられたタスクおよび生成されたタスクをサブシリーズ命令の複数のグループに分類し、サブシリーズ命令の複数のグループの各々が複数のプロセッササブユニットの異なる1つに対応する、段階と、を含み、サブシリーズ命令の複数のグループの各々に対応するマシンコードを生成させ、分割に従って、サブシリーズ命令の複数のグループの各々に対応する、生成されたマシンコードを、複数のプロセッササブユニットのうち対応する1つのプロセッササブユニットに割り当てさせる、非一時的コンピュータ可読媒体である。
他の実施形態はメモリチップを備え得る。メモリチップは、複数のメモリバンクであって、各メモリバンクがバンク行デコーダおよびバンク列デコーダを有する、複数のメモリバンクと、複数のメモリサブバンクであって、各メモリサブバンクが、読み書きを可能にするサブバンク行デコーダおよびサブバンク列デコーダを自らの位置に有し、各メモリサブバンクが、複数のメモリセルを各々が含む複数のメモリマットを含む、複数のメモリサブバンクと、を含み、サブバンク行デコーダおよびサブバンク列デコーダがバンク行デコーダおよびバンク列デコーダに接続される。
他の実施形態はメモリチップを備え得る。メモリチップは、複数のメモリバンクであって、各メモリバンクがバンクコントローラおよび複数のメモリサブバンクを有する、複数のメモリバンクと、複数のメモリサブバンクであって、各メモリサブバンクが、読み書きを可能にするサブバンク行デコーダおよびサブバンク列デコーダを自らの位置に有し、各メモリサブバンクが、複数のメモリセルを各々が含む複数のメモリマットを含む、複数のメモリサブバンクと、を有し、各サブバンク行デコーダおよび各サブバンク列デコーダがバンクコントローラからの読み要求および書き要求を処理する。
他の実施形態はメモリチップを備え得る。メモリチップは、複数のメモリバンクであって、各メモリバンクが、読み書きを処理するバンクコントローラを自らの位置に有し、各メモリバンクが、複数のメモリセルと、マット行デコーダおよびマット列デコーダとを各々が有する複数のメモリマットを含む、複数のメモリバンクを備え、マット行デコーダおよびマット列デコーダがサブバンクコントローラからの読み要求および書き要求を処理する。
他の実施形態はメモリチップを備え得る。メモリチップは、各メモリバンクが、読み書きを可能にするバンクコントローラと、行デコーダと、列デコーダと、を自らの位置に有する、複数のメモリバンクと、複数のバンクコントローラの各コントローラを複数のバンクコントローラの少なくとも他の1つのバンクコントローラに接続する複数のバスと、を含む。
本開示の一態様はメモリデバイスに関し、メモリデバイスは、基板と、基板上の複数のメモリバンクと、基板上の複数のプライマリ論理ブロックであって、複数のプライマリ論理ブロックの各々が複数のメモリバンクの少なくとも1つに接続される、複数のプライマリ論理ブロックと、基板上の複数の余剰ブロックであって、複数の余剰ブロックの各々が複数のメモリバンクの少なくとも1つに接続され、複数の余剰ブロックの各々が複数のプライマリ論理ブロックの少なくとも1つを複製する、複数の余剰ブロックと、基板上の複数の設定スイッチであって、複数の設定スイッチの各々が複数のプライマリ論理ブロックの少なくとも1つまたは複数の余剰ブロックの少なくとも1つに接続される、複数の設定スイッチと、を含む。メモリデバイスでは、複数のプライマリ論理ブロックの1つと関連付けられる不良を検出すると、複数の設定スイッチの第1の設定スイッチは複数のプライマリ論理ブロックの1つを無効にするように構成することができ、複数の設定スイッチの第2の設定スイッチは、複数のプライマリ論理ブロックの1つを複製する複数の余剰ブロックの1つを有効にするように構成することができる。
本開示の別の態様はメモリチップ上の分散型プロセッサに関し、メモリチップ上の分散型プロセッサは、基板と、基板上のアドレスマネージャと、基板上の複数のプライマリ論理ブロックであって、複数のプライマリ論理ブロックの各々が複数のメモリバンクの少なくとも1つに接続される、複数のプライマリ論理ブロックと、基板上の複数の余剰ブロックであって、複数の余剰ブロックの各々が複数のメモリバンクの少なくとも1つに接続され、複数の余剰ブロックの各々が複数のプライマリ論理ブロックの少なくとも1つを複製する、複数の余剰ブロックと、複数のプライマリ論理ブロックの各々と、複数の余剰ブロックの各々と、アドレスマネージャに接続される基板上のバスと、を含む。メモリチップ上の分散型プロセッサは、試験プロトコルに合格している複数のプライマリ論理ブロック内のブロックに実行ID番号を割り当てることができ、試験プロトコルに合格していない複数のプライマリ論理ブロック内のブロックに不正ID番号を割り当てることができ、試験プロトコルに合格している複数の余剰ブロック内のブロックに実行ID番号を割り当てることができる。
本開示のさらに別の態様は、メモリチップ上の分散型プロセッサを構成する方法に関する。この方法は、メモリチップの基板上の複数のプライマリ論理ブロックの各々に少なくとも1つの回路機能があるかを試験する段階と、試験の結果に基づいて複数のプライマリ論理ブロック内に少なくとも1つの不良論理ブロックを識別する段階であって、少なくとも1つの不良論理ブロックがメモリチップの基板に配置される少なくとも1つのメモリバンクに接続される段階と、メモリチップの基板上の少なくとも1つの余剰ブロックに少なくとも1つの回路機能があるかを試験する段階であって、少なくとも1つの余剰ブロックが少なくとも1つの不良論理ブロックを複製し、少なくとも1つのメモリバンクに接続される段階と、外部信号を非アクティブ化スイッチに印加することによって少なくとも1つの不良論理ブロックを無効にする段階であって、非アクティブ化スイッチが少なくとも1つの不良論理ブロックに接続され、メモリチップの基板に配置される段階と、外部信号をアクティブ化スイッチに印加することによって少なくとも1つの余剰ブロックを有効にする段階であって、アクティブ化スイッチが少なくとも1つの余剰ブロックに接続され、メモリチップの基板に配置される段階と、を含む。
本開示の別の態様は、メモリチップ上の分散型プロセッサを構成する方法に関する。この方法は、メモリチップの基板上の複数のプライマリ論理ブロックおよび複数の余剰ブロックを有効にする段階と、メモリチップの基板上の複数のプライマリ論理ブロックの各々に少なくとも1つの回路機能があるかを試験する段階と、試験の結果に基づいて複数のプライマリ論理ブロック内に少なくとも1つの不良論理ブロックを識別する段階であって、少なくとも1つの不良論理ブロックがメモリチップの基板に配置される少なくとも1つのメモリバンクに接続される段階と、メモリチップの基板上の少なくとも1つの余剰ブロックに少なくとも1つの回路機能があるかを試験する段階であって、少なくとも1つの余剰ブロックが少なくとも1つの不良論理ブロックを複製し、少なくとも1つのメモリバンクに接続される段階と、外部信号をアクティブ化スイッチに印加することによって少なくとも1つの余剰ブロックを無効にする段階であって、アクティブ化スイッチが少なくとも1つの余剰ブロックに接続され、メモリチップの基板に配置される段階と、を含む。
本開示の一態様は処理デバイスに関する。処理デバイスは、基板と、基板上の複数のメモリバンクと、複数のメモリバンクの各々に接続される基板上のメモリコントローラと、基板上の複数の処理ユニットであって、複数の処理ユニットの各々がメモリコントローラに接続され、複数の処理ユニットが構成マネージャを有する、複数の処理ユニットと、を含み得る。処理デバイスでは、構成マネージャは、実行されるタスクであって、少なくとも1つの計算を要求するタスクの第1の指示を受信するように構成され、少なくとも1つの計算を実行する少なくとも1つの選択された処理ユニットの能力に基づいて、複数の処理ユニットから少なくとも1つの選択された処理ユニットに信号を送るように構成され、第2の指示を少なくとも1つの選択された処理ユニットに送信するように構成され、メモリコントローラが、少なくとも1つの通信ラインを利用して、少なくとも2つのメモリバンクから少なくとも1つの選択された処理ユニットにデータを送るように構成され、メモリコントローラを介して、少なくとも1つの通信ラインが、少なくとも2つのメモリバンクおよび少なくとも1つの選択された処理ユニットに接続されるように構成される。
本開示の別の態様は、分散型メモリデバイスを動作するために実行される方法に関する。この方法は、分散型メモリデバイスのタスクをコンパイラによってコンパイルする段階であって、タスクが少なくとも1つの計算を要求する段階を備え、コンパイルする段階が、タスクを実行するために同時に要求されるワードの数を決定する段階と、複数のメモリバンクの1つから同時にアクセスできるワードの数が、同時に要求されるワードの数よりも少ない場合に、基板に配置される複数のメモリバンク内に同時にアクセスされる必要のあるワードを書き込む命令を与える段階と、基板に配置される構成マネージャによって、タスクを実行する指示を受信する段階と、指示を受信する段階に応答して、基板に配置されるメモリコントローラが、第1のラインアクセスサイクル内で、第1のメモリラインを使用して複数のメモリバンクからの第1のメモリバンクから少なくとも1つの第1のワードにアクセスするように、少なくとも1つの第1のワードを少なくとも1つの処理ユニットに送信するように、第2のメモリバンク内の第1のメモリラインを開放して複数のメモリバンクからの第2のメモリバンクから第2のアドレスにアクセスするように、および、第2のラインアクセスサイクル内で、第1のメモリラインを使用して第2のメモリバンクから少なくとも1つの第2のワードにアクセスするように、少なくとも1つの第2のワードを少なくとも1つの処理ユニットに送信するように、第1のメモリバンク内の第2のメモリラインを使用して第1のメモリバンクから第3のアドレスにアクセスするように、構成する段階と、を含み得る。
本開示のさらに別の態様は、少なくとも1つのプロセッサによって実行される場合に命令を記憶する非一時的コンピュータ可読媒体に関し、少なくとも1つのプロセッサに、少なくとも1つの計算を要求するタスクを実行するために同時に要求されるワードの数を決定することと、複数のメモリバンクの1つから同時にアクセスできるワードの数が、同時に要求されるワードの数よりも少ない場合に、基板に配置される複数のメモリバンク内に同時にアクセスされる必要のあるワードを書き込むことと、タスクを実行する指示を、基板に配置される構成マネージャに送信することと、基板に配置されるメモリコントローラが、第1のラインアクセスサイクル内で、第1のメモリラインを使用して複数のメモリバンクからの第1のメモリバンクから少なくとも1つの第1のワードにアクセスするように、少なくとも1つの第1のワードを少なくとも1つの処理ユニットに送信するように、第2のメモリバンク内の第1のメモリラインを開放して複数のメモリバンクからの第2のメモリバンクから第2のアドレスにアクセスするように、および、第2のラインアクセスサイクル内で、第1のメモリラインを使用して第2のメモリバンクから少なくとも1つの第2のワードにアクセスするように、少なくとも1つの第2のワードを少なくとも1つの処理ユニットに送信するように、第1のメモリバンク内の第2のメモリラインを使用して第1のメモリバンクから第3のアドレスにアクセスするように構成する命令を送信することと、をさせる、非一時的コンピュータ可読媒体。
開示された他の実施形態と一致する非一時的コンピュータ可読記憶媒体は、少なくとも1つの処理デバイスによって実行されるプログラム命令を記憶し、本明細書で記載されるあらゆる方法を実行することができる。
前述の概要および以下の詳述は、例示および説明に過ぎず、そうした主張に限定しない。
本開示の一部に引用され、本開示の一部を構成する添付図面は、開示される様々な実施形態を示す。図面
中央処理装置(CPU)の概略図である。
グラフィックス処理ユニット(GPU)の概略図である。
本開示の実施形態と一致する例示的なハードウェアチップの一実施形態の概略図である。
本開示の実施形態と一致する例示的なハードウェアチップの別の実施形態の概略図である。
本開示の実施形態と一致する例示的なハードウェアチップによって実行される汎用コマンドの概略図である。
本開示の実施形態と一致する例示的なハードウェアチップによって実行される専用コマンドの概略図である。
本開示の実施形態と一致する例示的なハードウェアチップ内で用いられる処理グループの概略図である。
本開示の実施形態と一致する処理グループの矩形アレイの概略図である。
本開示の実施形態と一致する処理グループの楕円アレイの概略図である。
本開示の実施形態と一致するハードウェアチップのアレイの概略図である。
本開示の実施形態と一致するハードウェアチップの別のアレイの概略図である。
本開示の実施形態と一致する例示的なハードウェアチップ上で実行する一連の命令をコンパイルする例示的方法を示したフローチャートである。
メモリバンクの概略図である。
メモリバンクの概略図である。
本開示の実施形態と一致するサブバンク制御を備える例示的なメモリバンクの一実施形態の概略図である。
本開示の実施形態と一致するサブバンク制御を備える例示的なメモリバンクの別の実施形態の概略図である。
本開示の実施形態と一致する例示的なメモリチップのブロック図である。
本開示の実施形態と一致する例示的な余剰論理ブロックセットのブロック図である。
本開示の実施形態と一致する例示的な論理ブロックのブロック図である。
本開示の実施形態と一致する、バスと接続された例示的な論理ブロックのブロック図である。
本開示の実施形態と一致する、並列接続された例示的な論理ブロックのブロック図である。
本開示の実施形態と一致する、2次元アレイで接続された例示的な論理ブロックのブロック図である。
本開示の実施形態と一致する、複雑な接続の例示的な論理ブロックのブロック図である。
本開示の実施形態と一致する、余剰ブロックを有効にするプロセスを示す例示的なフローチャートである。
本開示の実施形態と一致する、アドレス割り当てプロセスを示す例示的なフローチャートである。
本開示の実施形態と一致する、例示的な処理装置のブロック図を提供する。
本開示の実施形態と一致する、例示的な処理装置のブロック図である。
本開示の実施形態と一致する、例示的なメモリ構成図を含む。
本開示の実施形態と一致する、メモリ構成プロセスを示す例示的なフローチャートである。
本開示の実施形態と一致する、メモリ読み込みプロセスを示す例示的なフローチャートである。
本開示の実施形態と一致する、プロセス実行を示す例示的なフローチャートである。
以下の詳細な説明では添付図面を参照する。図面および以下の説明において、同一または類似部分に言及するために、好都合であるときは常に、同一の参照符号を使用する。いくつかの例示的な実施形態を本明細書で記載するが、修正、適応、およびその他の実装も可能である。例えば、図面で示されるコンポーネントに置換、追加または修正を行うことができ、本開示の方法に段階を置換、並べ替え、削除、または追加することによって、本明細書に記載される例示的な方法を修正することができる。したがって、以下の詳細な説明は、開示された実施形態および事例に限定されない、 代わりに、適切な範囲が添付の特許請求の範囲によって定義される。
[プロセッサアーキテクチャ]
本開示全体にわたり使用されるように、「ハードウェアチップ」という用語は、1または複数の回路要素(例えばトランジスタ、コンデンサ、抵抗器および/またはその他同種のもの)が形成される半導体ウェハ(例えばシリコンまたはその他同種のもの)を指す。これらの回路要素は処理要素またはメモリデバイスを形成することができる。「処理要素」は、少なくとも1つの論理関数(例えば演算関数、論理ゲート、その他のブール演算、またはその他同種のもの)を共に実行する1または複数の回路要素を指す。処理要素は、汎用処理要素(例えば構成可能な複数のトランジスタ)、または専用処理要素(例えば特定の論理ゲート、または特定の論理関数を実行するように設計される複数の回路要素)であってもよい。「メモリ要素」は、データを記憶するのに使用できる1または複数の回路要素を指す。「メモリ要素」はさらに「メモリセル」とも呼ばれ得る。メモリ要素は、(データ記憶を維持するには電気的リフレッシュが必要である)ダイナミックメモリ、(電力損失後データが少なくともしばらくの間続く)スタティックメモリ、または不揮発性メモリであってもよい。
処理要素はプロセッササブユニットを形成するように連結され得る。したがって「プロセッササブユニット」は、(例えば、プロセッサ命令セットの)少なくとも1つのタスクまたは命令を実行できる処理要素の最小グループを含み得る。例えば、サブユニットは、互いに命令を実行するように構成される1または複数の汎用処理要素と、補完的に命令を実行するように構成される1または複数の専用処理要素と組み合わされる1または複数の汎用処理要素と、またはその他同種のものと、を含み得る。プロセッササブユニットは、基板(例えば、ウェーハ)にアレイ形式で配置することができる。「アレイ」は矩形を含んでもよいが、アレイ形式でのサブユニットのあらゆる配置を基板に形成することができる。
メモリ要素はメモリバンクを形成するように連結され得る。例えば、メモリバンクは、少なくとも1つのワイヤ(またはその他の導電接続)を介して連結される1または複数のメモリ要素のラインを含み得る。さらに、メモリ要素は、別の方向で少なくとも1つの追加のワイヤを介して連結することができる。例えば、メモリ要素は、下記で説明するように、ワード線およびビット線を介して配置することができる。メモリバンクはラインを含んでもよいが、メモリバンク内のメモリ要素のあらゆる配置を利用して基板にメモリバンクを形成することができる。さらに1または複数のメモリバンクは、メモリアレイを形成するように、少なくとも1つのメモリコントローラと電気的に結合され得る。メモリアレイはメモリバンクの矩形配置を含んでもよいが、アレイ形式でのメモリバンクのあらゆる配置を基板に形成することができる。
さらに本開示を通して使用されるように、「バス」は、基板の要素間のあらゆる通信接続部を指す。例えば、(電気接続部を形成する)ワイヤもしくはライン、(光学接続部を形成する)光ファイバ、またはコンポーネント間で通信を行うあらゆるその他の接続が「バス」と呼ばれ得る。
従来のプロセッサは、共有メモリと汎用論理回路を組み合わせる。共有メモリは、論理回路によって実行する命令のセット、ならびに命令のセットを実行するのに使用される、および命令のセットを実行することで生じるデータ、の両方を記憶することができる。下記のように、いくつかの従来のプロセッサは、共有メモリからプルを実行する際にキャッシュシステムを利用して遅延を短くするが、従来のキャッシュシステムは依然として共有されたままである。従来のプロセッサは、中央処理装置(CPU)、グラフィックス処理ユニット(GPU)、様々な特定用途向け集積回路(ASIC)、またはその他同種のもの、を含む。図1はCPUの一例を示し、図2はGPUの一例を示す。
図1で示されるように、CPU100は、プロセッササブユニット120aおよびプロセッササブユニット120bなど、1または複数のプロセッササブユニットを含む処理ユニット110を備え得る。図1では示されていないが、各プロセッササブユニットは、複数の処理要素を含んでもよい。さらに、処理ユニット110は、オンチップキャッシュの1または複数のレベルを含んでもよい。こうしたキャッシュ要素は一般的に、プロセッササブユニット120aおよび120bに接続されるというよりも、プロセッササブユニット120aおよび120bならびにキャッシュ要素を含む基板内に形成される1または複数のバスを介して処理ユニット110と同じ半導体ダイに形成される。バスを介して接続されるのではなく、同じダイに直接配置されることは、従来のプロセッサ内の1次(L1)キャッシュおよび2次(L2)キャッシュの両方に共通している。あるいは、より旧型のプロセッサでは、プロセッササブユニットと2次(L2)キャッシュ間でバックサイドバスを用いてプロセッササブユニット間で2次(L2)キャッシュが共有される。バックサイドバスは一般的に、以下で記載するフロントサイドバスよりも大きい。したがって、キャッシュはダイ上で全てのプロセッササブユニットと共有されるため、キャッシュ130はプロセッササブユニット120aおよび120bと同じダイ上に形成することができる、または1または複数のバックサイドバスを介してプロセッササブユニット120aおよび120bに通信可能に連結することができる。(例えば、キャッシュが直接ダイに形成される)バスのない実施形態、ならびにバックサイドバスを用いた実施形態の両方の実施形態では、キャッシュはCPUのプロセッササブユニット間で共有される。
さらに、処理ユニット110は、共有メモリ140aおよびメモリ140bと通信する。例えば、メモリ140aおよびメモリ140bは、共有ダイナミックランダムアクセスメモリ(DRAM)のメモリバンクを表し得る。2つのメモリバンクで示されているが、最も従来的なメモリチップは8個から16個のメモリバンクを含んでいる。したがって、プロセッササブユニット120aおよび120bは、共有メモリ140aおよび140bを用いて、その後プロセッササブユニット120aおよび120bによって動作されるデータを記憶することができる。ただし、この配置により、処理ユニット110のクロック速度がバスのデータ転送速度を上回る場合に、メモリ140aおよび140bと処理ユニット110との間のバスがボトルネックとして作用することになる。このことは一般的に従来のプロセッサに当てはまることであり、その結果、クロック速度およびトランジスタの数に基づいて、上述の処理速度よりも処理速度の効率が悪くなる。
図2で示されるように、類似の欠陥がGPU内で持続している。GPU200は、1または複数のプロセッササブユニット(例えば、サブユニット220a、 220b、220c、 220d、 220e、 220f、 220g、 220h、 220i、 220j、 220k、 220l、 220m、 220n、 220o、および220p)を含む処理ユニット210を備え得る。さらに、処理ユニット210は、オンチップキャッシュの1または複数のレベルおよび/またはレジスタファイルを含んでもよい。このようなキャッシュ要素は一般的に処理ユニット210と同じ半導体ダイで形成される。実際、図2の例では、キャッシュ210は処理ユニット210と同じダイで形成され、全てのプロセッササブユニット間で共有される一方、キャッシュ230a、230b、230c、および230dはそれぞれプロセッササブユニットのサブセットに形成され、そのプロセッササブユニットのサブユニットの専用となる。
さらに、処理ユニット210は共有メモリ250a、250b、250c、および250dと通信する。例えば、メモリ250a、250b、250c、および250dは、共有ダイナミックランダムアクセスメモリ(DRAM)のメモリバンクを表し得る。したがって、処理ユニット210のプロセッササブユニットは共有メモリ250a、250b、250c、および250bを用いて、その後プロセッササブユニットによって動作されるデータを記憶することができる。ただし、この配置により、メモリ250a、250b、250c、および250bと処理ユニット210との間のバスが、上記のCPUのボトルネックに似たボトルネックとして作用することになる。
[開示されるハードウェアチップの概要]
図3Aは、例示的なハードウェアチップ300を示す一実施形態の概略図である。ハードウェアチップ300は、CPU、GPU、および他の従来のプロセッサの上記のボトルネックを軽減するように設計された分散型プロセッサを含み得る。分散型プロセッサは、単一基板に空間的に分散される複数のプロセッササブユニットを含み得る。さらに、前述のように、本開示の分散型プロセッサでは、対応するメモリバンクがさらに単一基板に空間的に分散される。いくつかの実施形態では、分散型プロセッサは命令のセットと関連付けることができ、分散型プロセッサのプロセッササブユニットの各々は、命令のセット内に含まれる1または複数のタスクの実行を担うことができる。
図3Aで示されるように、ハードウェアチップ300は、複数のプロセッササブユニット、例えば、論理および制御サブユニット320a、320b、320c、320d、320e、320f、320g、および320hを含んでもよい。さらに図3Aで示されるように、各プロセッササブユニットは、専用メモリインスタンスを含み得る。例えば、論理および制御サブユニット320aは専用メモリインスタンス330aに動作可能に接続され、論理および制御サブユニット320bは専用メモリインスタンス330bに動作可能に接続され、論理および制御サブユニット320cは専用メモリインスタンス330cに動作可能に接続され、論理および制御サブユニット320dは専用メモリインスタンス330dに動作可能に接続され、論理および制御サブユニット320eは専用メモリインスタンス330eに動作可能に接続され、論理および制御サブユニット320fは専用メモリインスタンス330fに動作可能に接続され、論理および制御サブユニット320gは専用メモリインスタンス330gに動作可能に接続され、論理および制御サブユニット320hは専用メモリインスタンス330hに動作可能に接続される。
図3Aは各メモリインスタンスを単一メモリバンクとして示すが、ハードウェアチップ300は、ハードウェアチップ300上のプロセッササブユニットの専用メモリインスタンスとして2つ以上のメモリバンクを含み得る。さらに、図3Aは、論理コンポーネントと、専用メモリバンクの制御と、の両方を含むものとして各プロセッササブユニットを示すが、ハードウェアチップ300は、少なくとも部分的に論理コンポーネントから分離するメモリバンクのコントロールを利用することができる。さらに、図3Aで示されるように、2つ以上のプロセッササブユニットおよびプロセッササブユニットに対応するメモリバンクは、例えば、処理グループ310a、310b、310c、および310dに分類することができる。「処理グループ」は、ハードウェアチップ300が形成される基板上の空間的区別を表し得る。したがって、処理グループはさらに、グループ内のメモリバンクの制御、例えば、制御340a、340b、340c、および340dを含み得る。この代わりに、またはこれに加えて、「処理グループ」は、ハードウェアチップ300で実行するコードをコンパイルするための論理グループを表し得る。したがって、ハードウェアチップ300のコンパイラ(以下でさらに記載する)は、命令のセット全体をハードウェアチップ300上の処理グループ間に分割することができる。
さらに、ホスト350は、命令、データ、およびその他の入力をハードウェアチップ300に提供し、同ハードウェアチップからの出力を読み込むことができる。したがって、命令のセットは、単一ダイ、例えばハードウェアチップ300のホストとして働くダイ上に全体的に実行することができる。実際、オフダイ通信は、ハードウェアチップ300への命令のローディング、ハードウェアチップ300に送信されるあらゆる入力、ハードウェアチップ300から読み込まれるあらゆる出力を含み得るだけである。したがって、全ての計算および全てのメモリ動作はオンダイで(ハードウェアチップ300上で)実行することができる。これは、ハードウェアチップ300のプロセッササブユニットがハードウェアチップ300の専用メモリバンクと通信するからである。
図3Bは、別の例示的なハードウェアチップ300′を示す一実施形態の概略図である。図3Bで示されるアーキテクチャは、ハードウェアチップ300の代替として示されるが、図3Aで示されるアーキテクチャと少なくとも部分的に組み合わせることができる。
図3Bで示されるように、ハードウェアチップ300′は、複数のプロセッササブユニット、例えば、プロセッササブユニット350a、350b、350c、および350dを含み得る。さらに図3Bで示されるように、各プロセッササブユニットは、複数の専用メモリインスタンスを含み得る。例えば、プロセッササブユニット350aは専用メモリインスタンス330aおよび330bに動作可能に接続され、プロセッササブユニット350bは専用メモリインスタンス330cおよび330dに動作可能に接続され、プロセッササブユニット350cは専用メモリインスタンス330eおよび330fに動作可能に接続され、プロセッササブユニット350dは専用メモリインスタンス330gおよび330hに動作可能に接続される。さらに、図3Bで示されるように、プロセッササブユニットおよびプロセッササブユニットに対応するメモリバンクは、例えば処理グループ310a、310b、310c、および310dに分類することができる。前述のように、「処理グループ」は、ハードウェアチップ300′が形成される基板上の空間的区別、および/またはハードウェアチップ300′で実行するコードをコンパイルするための論理グループ、を表し得る。
さらに図3Bで示されるように、プロセッササブユニットはバスを介して互いに通信することができる。例えば、図3Bで示されるように、プロセッササブユニット350aは、バス360aを介してプロセッササブユニット350bと、バス360cを介してプロセッササブユニット350cと、バス360fを介してプロセッササブユニット350dと、通信することができる。同様に、プロセッササブユニット350bは、(上記のように)バス360aを介してプロセッササブユニット350aと、バス360eを介してプロセッササブユニット350cと、バス360dを介してプロセッササブユニット350dと、通信することができる。さらに、プロセッササブユニット350cは、(上記のように)バス360cを介してプロセッササブユニット350aと、(上記のように)バス360eを介してプロセッササブユニット350bと、バス360bを介してプロセッササブユニット350dと、通信することができる。したがって、プロセッササブユニット350dは、(上記のように)バス360fを介してプロセッササブユニット350aと、(上記のように)バス360dを介してプロセッササブユニット350bと、(上記のように)バス360bを介してプロセッササブユニット350cと、通信することができる。当業者は、図3Bで示されるよりも少ないバスを利用することができることを理解するであろう。例えば、バス360eを無くすことによって、結果プロセッササブユニット350bおよび350c間の通信はプロセッササブユニット350aおよび/または350dを経由して伝えることができる。同様に、バス360fを無くすことによって、結果プロセッササブユニット350aおよびプロセッササブユニット350d間の通信はプロセッササブユニット350bまたは350cを経由して伝えることができる。
さらに、当業者は、図3Aおよび図3Bで示されるアーキテクチャとは異なるアーキテクチャを利用することができることを理解するであろう。例えば、各々が単一のプロセッササブユニットおよび単一のメモリインスタンスを備える処理グループのアレイを基板上に配置することができる。プロセッササブユニットは、対応する専用メモリバンクのコントローラの一部、対応する専用メモリバンクのメモリマットのコントローラの一部、またはその他同種のものを追加的または代替的に形成することができる。
上記のアーキテクチャを鑑みると、ハードウェアチップ300および300′は、従来のアーキテクチャと比べてメモリ負荷の高いタスクの効率性を著しく高めることができる。例えば、データベース演算および(ニューラルネットワークなどの)人工知能アルゴリズムは、従来のアーキテクチャが効率性でハードウェアチップ300および300′に劣るメモリ負荷の高いタスクの例である。したがって、ハードウェアチップ300および300′は、データベースアクセラレータプロセッサおよび/または人工知能アクセラレータプロセッサと呼ばれ得る。
[開示されるハードウェアチップの構成]
上記のハードウェアチップのアーキテクチャはコードを実行するように構成することができる。例えば、各プロセッササブユニットは、ハードウェアチップ内の他のプロセッササブユニットとは別の(命令のセットを定義する)コードを個別に実行することができる。したがって、マルチスレッディングを管理するオペレーティングシステムに依存するのではなく、または(並列処理ではなく同時実行する)マルチタスキングを利用するのではなく、本開示のハードウェアチップによりプロセッササブユニットは完全並列演算をすることが可能となり得る。
上記の完全並列の実装に加えて、各プロセッササブユニットに割り当てられる命令の少なくともいくつかがオーバーラップし得る。例えば、分散型プロセッサ上の複数のプロセッササブユニットは、例えば、オペレーティングシステムまたはその他の管理ソフトウェアの実装としてオーバーラップ命令を実行することができる一方、オペレーティングシステムまたはその他の管理ソフトウェアのコンテキスト内で並列タスクを実行するために非オーバーラップ命令を実行することができる。
図4は、汎用コマンドを処理グループ410で実行する例示的なプロセス400を示す。例えば、処理グループ410は、本開示のハードウェアチップ、例えば、ハードウェアチップ300、ハードウェアチップ300′の一部分、またはその他同種のものを含み得る。
図4で示されるように、コマンドは、専用メモリインスタンス420と組み合わされるプロセッササブユニット430に送信することができる。外部ホスト(例えば、ホスト350)は実行するためにコマンドを処理グループ410に送信することができる。あるいは、ホスト350は記憶するためのコマンドを含む命令のセットをメモリインスタンス420内に送信することで、結果、プロセッササブユニット430がメモリインスタンス420からコマンドを引き出し、引き出したコマンドを実行することができる。したがって、コマンドは、受信したコマンドを実行するように構成可能である汎用処理要素である処理要素440によって実行されてもよい。さらに、処理グループ410は、メモリインスタンス420の制御460を含み得る。図4で示されるように、制御460は、受信したコマンドを実行する際に処理要素440が必要とするメモリインスタンス420に対してあらゆる読み込みおよび/または書き込みを実行できる。コマンドを実行した後、処理グループ410は、例えば、外部ホストまたは同ハードウェアチップ上の異なる処理グループにコマンドの結果を出力することができる。
いくつかの実施形態では、図4で示されるように、プロセッササブユニット430はさらに、アドレスジェネレータ450を含み得る。「アドレスジェネレータ」は、読み込みおよび書き込みを実行するために1または複数のメモリバンク内のアドレスを決定するように構成される複数の処理要素を含み得て、さらに、決定されたアドレスに配置されるデータを演算すること(例えば、加算、減算、乗算、またはその他同種のもの)ができる。例えば、アドレスジェネレータ450は、メモリにあらゆる読み込みまたは書き込みを行うアドレスを決定することができる。一例では、アドレスジェネレータ450は、読み込み値がもはや不要となった場合にコマンドに基づいて決定される新しい値を読み込み値に上書きすることによって効率性を高めることができる。この代わりに、またはこれに加えて、アドレスジェネレータ450は、コマンドの実行結果を記憶するために利用可能なアドレスを選択することができる。これにより、外部ホストにとってさらに都合が良いその後のクロックサイクル時に、読み込んだ結果をスケジューリングすることが可能となり得る。別の例では、アドレスジェネレータ450は、ベクトルまたは行列の積和計算などの複数サイクル計算中に読み込みおよび書き込みを行うアドレスを決定することができる。したがって、アドレスジェネレータ450は、プロセッササブユニット430がメモリアドレスを記憶する必要なく継続して処理できるように、データを読み込み、複数サイクル計算の中間結果を書き込むこれらのメモリアドレスを管理または計算することができる。
図5は、専用コマンドを処理グループ510で実行する例示的なプロセス500を示す。例えば、処理グループ510は、本開示のハードウェアチップ、例えば、ハードウェアチップ300、ハードウェアチップ300′の一部分、またはその他同種のものを含み得る。
図5で示されるように、専用コマンド(例えば、乗累算コマンド)は、専用メモリインスタンス520と組み合わされる処理要素530に送信することができる。外部ホスト(例えば、ホスト350)は実行するためにコマンドを処理要素530に送信することができる。したがって、コマンドは、処理要素530、すなわち(受信したコマンドを含む)特定のコマンドを実行するように構成可能である専用処理要素によってホストからの所定の信号で実行することができる。あるいは、処理要素530は、実行するためにメモリインスタンス520からコマンドを引き出すことができる。このように、図5の例では、処理要素530は、外部ホストから受信され、メモリインスタンス520から引き出される乗累算(MAC)コマンドを実行するように構成される乗累算(MAC)回路である。コマンドを実行した後、処理グループ510は、例えば、外部ホストまたは同ハードウェアチップ上の異なる処理グループにコマンドの結果を出力することができる。単一のコマンドおよび単一の結果で示されるが、複数のコマンドを受信または引き出し、および実行することができ、複数の結果を出力前に処理グループ510に組み合わせることができる。
図5でMAC回路として示されるが、追加的または代替的な専用回路を処理グループ510内に含めることができる。例えば、MAX読み込みコマンド(ベクトルの最大値を戻す)と、MAX―0読み込みコマンド(整流器とも呼ばれ、全ベクトルを戻すが、さらにMAXを0で戻す共通関数)と、またはその他同種のものと、を実装することができる。
別々に示されるが、図4の汎用処理グループ410および図5の専用処理グループ510は組み合わせることができる。例えば、汎用プロセッササブユニットを1または複数の専用プロセッササブユニットに連結してプロセッササブユニットを形成することができる。したがって、汎用プロセッササブユニットは、1または複数の専用プロセッササブユニットによって実行可能ではない全ての命令用に利用することができる。
ニューラルネットワークの実装およびその他のメモリ負荷の高いタスクは専用論理回路で処理できることが当業者には理解されよう。例えば、データベースクエリ、パケットインスペクション、ストリング比較、およびその他の機能は、本明細書で記載されるハードウェアチップによって実行されれば効率性を高めることができる。
分散型処理用のメモリベースアーキテクチャ 本開示と一致するハードウェアチップ上で、専用バスは、ハードウェアチップ上のプロセッササブユニット間、および/またはプロセッササブユニットとプロセッササブユニットに対応する専用メモリバンクとの間でデータを転送することができる。専用バスを使用することによりアービトレーションコストを削減できる。これは、競合要求が起こり得なくなるため、またはハードウェアではなくソフトウェアを使用して競合要求を容易に回避するためである。
図6は、処理グループ600の概略図を図式的に示す。処理グループ600は、ハードウェアチップ、例えば、ハードウェアチップ300、ハードウェアチップ300′、またはその他同種のものに使用されてもよい。プロセッササブユニット610は、バス630を介してメモリ620に接続することができる。メモリ620は、プロセッササブユニット610が実行するデータおよびコードを記憶するランダムアクセスメモリ(RAM)要素を含んでもよい。いくつかの実施形態では、メモリ620は、Nウェイ(N-way)メモリであってもよい(Nは、インタリーブドメモリ620内のセグメントの数を示す1以上の数である)。プロセッササブユニット610はバス630を介してプロセッササブユニット610専用のメモリ620に連結されるため、Nは実効性能を損なうことなく比較的少数のままに維持できる。これは、Nの数が少数になると概して実効性能がかなり落ちることにつながり、Nの数が多くなると概して大面積となり電力損失がもたらされる従来のマルチウェイレジスタファイルまたはマルチウェイキャッシュの改善を示す。
メモリ620のサイズ、ウェイの数、およびバス630の幅は、例えばタスクまたは複数のタスク内に含まれるデータサイズに従って、処理グループ600を使用してシステムのタスクおよびアプリケーション実装の要件を満たすように調節することができる。メモリ要素620は、当該技術分野で知られる1または複数のメモリタイプ、例えば、揮発性メモリ(RAM、DRAM、SRAM、相変化RAM(PRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(ReRAM)、またはその他同種のもの)、または不揮発性メモリ(フラッシュメモリまたはROM)を含み得る。いくつかの実施形態によると、メモリ要素620部分は第1のメモリタイプを含んでもよく、別の部分は別のメモリタイプを含んでもよい。例えば、メモリ要素620のコード領域はROM要素を含んでもよく、メモリ要素620のデータ領域はDRAM要素を含んでもよい。このような区分の別の例は、ニューラルネットワークのウェイトをFlash内に記憶し、計算データをDRAM内に記憶する。
プロセッササブユニット610は、プロセッサを含み得る処理要素640を備えてもよい。本プロセッサはパイプライン化してもよいし、またはパイプライン化しなくてもよく、当業者によって理解されるように、カスタマイズされた縮小命令セットコンピューティング(RISC)要素またはその他の処理スキームが、当技術分野にて周知であるあらゆる市販の集積回路(IC)(例えばARM,ARC,RISC-Vなど)上に実装される。処理要素640は、いくつかの実施形態において、算術論理演算ユニット(ALU)を含むコントローラ、またはその他のコントローラを備え得る。
いくつかの実施形態によると、受信コードまたは記憶コードを実行する処理要素640は、汎用処理要素を含んでもよいため、フレキシブルになり得、様々な処理動作を実行することができる。非専用回路は一般的に、特定演算の実行時に消費される電力と比較すると、特定演算専用回路よりも電力を消費する。したがって、特殊で複雑な算術計算を実行する場合、処理要素640は、専用ハードウェアよりも多くの電力を消費し、効果的に実行しない場合がある。したがって、いくつかの実施形態によると、処理要素640のコントローラは、特定演算(例えば、加算演算または「移動」演算)を実行するように設計することができる。
一例では、特定演算は、1または複数のアクセラレータ650によって実行することができる。各アクセラレータは、(乗算、浮動小数点ベクトル演算、またはその他同種のものなど)特殊計算の実行を専門に、およびプログラムできる。アクセラレータを使用することによって、プロセッササブユニット毎の1計算あたりの平均電力消費を削減でき、その後計算スループットが向上する。このシステムが実装する(例えば、ニューラルネットワークを実行する、データベースクエリ、またはその他同種のものを実行する)ように設計されるアプリケーションに従って、アクセラレータ650を選ぶことができる。アクセラレータ650は処理要素640によって構成することができ、電力消費を削減し、計算および演算を加速するために処理要素640と同時に動作することができる。追加または代替として、アクセラレータを使用してメモリと、スマートDMA(ダイレクトメモリアクセス)の周辺装置などの処理グループ600のマルチプレクサ(MUX)/デマルチプレクサ(DEMUX)/入力ポート/出力ポート(例えば、マルチプレクサ(MUX)650およびデマルチプレクサ(DEMUX)660)との間でデータを転送することができる。
アクセラレータ650は、様々な機能を実行するように構成することができる。例えば、1つのアクセラレータは、ニューラルネットワークで頻繁に使用される16ビットの浮動小数点計算または8ビットの整数計算を実行するように構成することができる。アクセラレータ機能の別の例は、ニューラルネットワークのトレーニング段階中に頻繁に使用される32ビットの浮動小数点の計算である。アクセラレータ機能のさらに別の例は、データベース内で使用されるものなど、クエリ処理である。いくつかの実施形態では、アクセラレータ650は、これらの機能を実行する専用処理要素を含み得て、および/またはアクセラレータ650は、メモリ要素620に記憶される構成データに従って、構成データが修正できるように構成することができる。
アクセラレータ650は、追加または代替として、メモリ620に/メモリ620から、またはその他のアクセラレータに/その他のアクセラレータからデータを移動させる時間を決める、および/またはデータ入力/データ出力の時間を決めるメモリ移動の構成可能なスクリプトリストを実装することができる。したがって、さらに以下で詳述するように、処理グループ600を使用したハードウェアチップ内の全てのデータ移動は、ハードウェア同期ではなくソフトウェア同期を利用してもよい。例えば、1つの処理グループ(例えば、グループ600)内のアクセラレータは、入力からのデータを10サイクル毎にアクセラレータに転送し、次いで次のサイクルでデータを出力することができる。こうすることによって、データが処理グループのメモリから別のメモリに流れる。
図6でさらに示されるように、いくつかの実施形態では、処理グループ600はさらに、入力ポートに接続される少なくとも1つの入力マルチプレクサ(MUX)660と、出力ポートに接続される少なくとも1つの出力デマルチプレクサDEMUX670と、を含んでもよい。これらのMUX/DEMUXは、処理要素640からの、および/またはアクセラレータ650のうち1つのアクセラレータからの制御信号(図示せず)によって制御でき、処理要素640によって実行される最新の命令および/またはアクセラレータ650のうち1つのアクセラレータによって実行される演算に従ってMUX/DEMUXを決定することができる。いくつかのシナリオでは、入力ポートから出力ポートにデータを転送するように(コードメモリからの予め定義された命令に従って)処理グループ600に要求することができる。したがって、1または複数の入力MUX(例えば、MUX660)は、1または複数のバスを介して出力DEMUX(例えば、DEMUX670)に直接接続することができ、さらにDEMUX/MUXの各々は処理要素640およびアクセラレータ650に接続される。
図6の処理グループ600は、例えば図7Aで示されるように、分散型プロセッサを形成するように配列することができる。処理グループを基板710上に配置してアレイを形成することができる。いくつかの実施形態では、基板710はシリコンなどの半導体基板を含んでもよい。この代わりに、またはこれに加えて、基板710は、フレキシブル回路基板などの回路基板を含んでもよい。
図7Aで示されるように、基板710は、その基板上に配置される処理グループ600などの複数の処理グループを含んでもよい。したがって、基板710は、バンク720a、720b、720c、720d、720e、720f、720g、および720hなどの複数のバンクを含むメモリアレイを備える。さらに、基板710は、サブユニット730a、730b、730c、730d、730e、730f、730g、および730hなどの複数のプロセッササブユニットを含み得る処理アレイを備える。
さらに、前述のように、各処理グループは、プロセッササブユニットと、プロセッササブユニット専用の1または複数の対応する専用メモリバンクと、含み得る。したがって、図7Aで示されるように、各サブユニットは、対応する専用メモリバンクと関連付けられる。すなわち、プロセッササブユニット730aはメモリバンク720aと関連付けられ、プロセッササブユニット730bはメモリバンク720bと関連付けられ、プロセッササブユニット730cはメモリバンク720cと関連付けられ、プロセッササブユニット730dはメモリバンク720dと関連付けられ、プロセッササブユニット730eはメモリバンク720eと関連付けられ、プロセッササブユニット730fはメモリバンク720fと関連付けられ、プロセッササブユニット730gはメモリバンク720gと関連付けられ、プロセッササブユニット730hはメモリバンク720hと関連付けられる。
各プロセッササブユニットがプロセッササブユニットに対応する専用メモリバンクと通信できるようにするために、基板710は、プロセッササブユニットの1つをプロセッササブユニットに対応する専用メモリバンクに接続する第1の複数のバスを含み得る。したがって、バス740aはプロセッササブユニット730aをメモリバンク720aに接続し、バス740bはプロセッササブユニット730bをメモリバンク720bに接続し、バス740cはプロセッササブユニット730cをメモリバンク720cに接続し、バス740dはプロセッササブユニット730dをメモリバンク720dに接続し、バス740eはプロセッササブユニット730eをメモリバンク720eに接続し、バス740fはプロセッササブユニット730fをメモリバンク720fに接続し、バス740gはプロセッササブユニット730gをメモリバンク720gに接続し、バス740hはプロセッササブユニット730hをメモリバンク720hに接続する。さらに、各プロセッササブユニットがその他のプロセッササブユニットと通信できるようにするために、基板710は、プロセッササブユニットの1つを別のプロセッササブユニットに接続する第2の複数のバスを含み得る。図7Aの例では、バス750aはプロセッササブユニット730aをプロセッササブユニット750eに接続し、バス750bはプロセッササブユニット730aをプロセッササブユニット750bに接続し、バス750cはプロセッササブユニット730bをプロセッササブユニット750fに接続し、バス750dはプロセッササブユニット730bをプロセッササブユニット750cに接続し、バス750eはプロセッササブユニット730cをプロセッササブユニット750gに接続し、バス750fはプロセッササブユニット730cをプロセッササブユニット750dに接続し、バス750gはプロセッササブユニット730dをプロセッササブユニット750hに接続し、バス750hはプロセッササブユニット730hをプロセッササブユニット750gに接続し、バス750iはプロセッササブユニット730gをプロセッササブユニット750gに接続し、バス750jはプロセッササブユニット730fをプロセッササブユニット750eに接続する。
したがって、図7Aで示される例示的な配置では、複数の論理プロセッササブユニットが少なくとも1つの行および少なくとも1つの列内に配置される。第2の複数のバスが、同じ行における少なくとも1つの隣接するプロセッササブユニットおよび同じ列における少なくとも1つの隣接するプロセッササブユニットに各プロセッササブユニットを接続する。図7Aは「タイル部分接続」と呼んでもよい。
図7Aで示される配置を修正して「タイル全域接続」を形成してもよい。タイル全域接続は、対角線のプロセッササブユニットを接続する追加のバスを含む。例えば、第2の複数のバスは、プロセッササブユニット730aとプロセッササブユニット730f間に、プロセッササブユニット730bとプロセッササブユニット730e間に、プロセッササブユニット730bとプロセッササブユニット730g間に、プロセッササブユニット730cとプロセッササブユニット730f間に、プロセッササブユニット730cとプロセッササブユニット730h間に、プロセッササブユニット730dとプロセッササブユニット730g間に、追加のバスを含み得る。
タイル全域接続は、近傍のプロセッササブユニット内に記憶されるデータおよび結果を使用するコンボリューション計算用に利用することができる。例えば、画像のコンボリューション処理時に、各プロセッササブユニットは画像のタイル(画素または画素群など)を受信することができる。コンボリューション結果を計算するために、各プロセッササブユニットは、隣接する8つ全てのプロセッササブユニットからデータを取得することができ、プロセッササブユニットの各々は対応するタイルを受信する。タイル部分接続では、対角線上の隣接するプロセッササブユニットからのデータを、プロセッササブユニットに接続される他の隣接するプロセッササブユニットを介して渡すことができる。したがって、チップ上の分散型プロセッサは、人工知能アクセラレータプロセッサであってもよい。
コンボリューション計算の具体例では、N×M画像を複数のプロセッササブユニット全体に分割することができる。各プロセッササブユニットは、プロセッササブユニットの対応するタイル上のA×Bフィルタでコンボリューションを実行することができる。タイル間の境界上の1または複数の画素にフィルタリングを実行するために、各プロセッササブユニットは、同境界上の画素を含んだタイルを有する隣接するプロセッササブユニットからデータを要求できる。したがって、各プロセッササブユニット用に生成されるコードは、隣接するサブユニットからデータが必要となる場合にいつでもサブユニットがコンボリューションを計算する、および第2の複数のバスのうち1つのバスからプルするように構成される。必要とされるデータ転送の適切なタイミングを確保するために、データを第2の複数のバスに出力するための対応するコマンドがサブユニットに提供される。
図7Aのタイル部分接続を変更してNタイル部分接続にしてもよい。この変更では、第2の複数のバスはさらに、図7Aのバスが実行する4つの方向(すなわち、上、下、左、右)で各プロセッササブユニットをプロセッササブユニットの閾値距離内(例えば、nプロセッササブユニット内)のプロセッササブユニットに接続することができる。同様の変更をタイル全域接続に行う(結果Nタイル全域接続になる)ことで、結果、第2の複数のバスはさらに、2つの対角線方向に加えて、図7Aのバスが実行する4つの方向で各プロセッササブユニットをプロセッササブユニットの閾値距離内(例えば、nプロセッササブユニット内)のプロセッササブユニットに接続することができる。
その他の配置も可能である。例えば、図7Bで示される配置では、バス750aはプロセッササブユニット730aをプロセッササブユニット730dに接続し、バス750bはプロセッササブユニット730aをプロセッササブユニット730bに接続し、バス750cはプロセッササブユニット730bをプロセッササブユニット730cに接続し、バス750dはプロセッササブユニット730cをプロセッササブユニット730dに接続する。したがって、図7Bで示される例示的な配置では、複数のプロセッササブユニットはスター型パターンで配置される。第2の複数のバスが各プロセッササブユニットを少なくとも1つの隣接するプロセッササブユニットにスター型パターンで接続する。
さらなる配置(図示せず)も可能である。例えば、隣接接続配置を利用することによって、複数のプロセッササブユニットを1または複数のラインで配置することができる(例えば、図7Aで示される配置に類似する)。隣接接続配置では、第2の複数のバスが各プロセッササブユニットを同ラインの左側のプロセッササブユニットに、同ラインの右側のプロセッササブユニットに、同ラインの左側および右側の両方のプロセッササブユニットに接続する。
別の例では、Nライン接続配置を利用することができる。Nライン接続配置では、第2の複数のバスが、各プロセッササブユニットをプロセッササブユニットの閾値距離内(例えば、nプロセッササブユニット内)のプロセッササブユニットに接続する。Nライン接続配置は、ラインアレイ(上記)、矩形アレイ(図7Aで図示)、楕円アレイ(図7Bで図示)、またはその他のあらゆる幾何学的アレイで利用することができる。
さらに別の例では、Nログ接続配置を利用することができる。Nログ接続配置では、第2の複数のバスが、各プロセッササブユニットをプロセッササブユニットの2つの距離の閾値パワー内(例えば、2プロセッササブユニット内)のプロセッササブユニットに接続する。Nログ接続配置は、ラインアレイ(上記)、矩形アレイ(図7Aで図示)、楕円アレイ(図7Bで図示)、またはその他のあらゆる幾何学的アレイで利用することができる。
上記のあらゆる接続方式は、同じハードウェアチップ用に組み合わせることができる。例えば、ある領域ではタイル全域接続を利用することができ、別の領域ではタイル部分接続を利用する。別の例では、ある領域ではNライン接続配置を利用することができ、別の領域ではNタイル全域接続を利用する。
メモリチップのプロセッササブユニット間の専用バスの追加として、または代替として、1または複数の共有バスを利用して分散型プロセッサの全てのプロセッササブユニット(またはそのサブセット)を相互接続できる。さらに、以下で詳述するように、プロセッササブユニットによって実行されるコードを使用して、共有バス上でのデータ転送の時間を調節することによって共有バス上での衝突を回避できる。共有バスの追加として、または代替として、設定可能なバスを使用してプロセッササブユニットを動的に接続し、分離したバスに接続されるプロセッサユニットのグループを形成することができる。例えば、設定可能なバスは、データ転送を選択されたプロセッササブユニットに導くためにプロセッササブユニットによって制御され得るトランジスタまたはその他の機構を含んでもよい。
図7Aおよび図7Bの両方では、処理アレイの複数のプロセッササブユニットがメモリアレイの複数の個別のメモリバンク間に空間的に分散される。他の代替実施形態(図示せず)では、基板の1または複数の領域内に複数のプロセッササブユニットを集めてグループにすることができ、基板の1または複数の他の領域内に複数のメモリバンクを集めてグループにすることができる。いくつかの実施形態では、空間的分散およびグループ分類の組み合わせを利用することができる(図示せず)。例えば、基板のある領域はプロセッササブユニットのグループを含んでもよく、基板の別の領域はメモリバンクのグループを含んでもよく、基板のさらに別の領域はメモリバンク間に分散される処理アレイを含んでもよい。
当業者は、処理グループ600を基板に配置することは、排他的な実施形態ではないことを理解するであろう。例えば、各プロセッササブユニットは少なくとも2つの専用メモリバンクと関連付けることができる。したがって、図3Bの処理グループ310a、310b、310c、および310dは、処理グループ600の代わりに、または処理グループ600と組み合わせて利用して、処理アレイおよびメモリアレイを形成することができる。例えば3および4以上の専用メモリバンク(図示せず)を含む他の処理グループを利用することができる。
複数のプロセッササブユニットの各々は、複数のプロセッササブユニット内に含まれる他のプロセッササブユニットに対して、独立した特定のアプリケーションと関連付けられるソフトウェアコードを実行するように構成してもよい。例えば、以下で説明するように、複数のサブシリーズ命令をマシンコードとして分類し、実行するために各プロセッササブユニットに与えることができる。
いくつかの実施形態では、各専用メモリバンクは少なくとも1つのダイナミックランダムアクセスメモリ(DRAM)を含む。あるいは、メモリバンクは、スタティックランダムアクセスメモリ(SRAM)、DRAM、Flash、またはその他同種のものなどのメモリタイプの組み合わせを含んでもよい。
従来のプロセッサでは、プロセッササブユニット間のデータ共有は、共有メモリで通常実行される。共有メモリは一般的にチップ領域の大部分を必要とし、および/または追加のハードウェア(アービタなど)によって管理されるバスを実行してきた。上記のように、バスがボトルネックにつながる。さらに、チップの外部にあってもよい共有メモリは一般的に、正確かつ最新のデータをプロセッササブユニットに提供するためのキャッシュコヒーレンス機構、およびより複雑なキャッシュ(例えば、L1キャッシュ、L2キャッシュ、および共有DRAM)を含む。以下で詳述するように、図7Aおよび図7Bで示される専用バスは、ハードウェア管理(アービタなど)がないハードウェアチップを可能にする。さらに、図7Aおよび図7Bで示される専用バスを使用することによって、複雑なキャッシュ層および複雑なキャッシュコヒーレンス機構を無くすことができる。
代わりに、他のプロセッササブユニットによって計算される、および/または他のプロセッササブユニット専用のメモリバンク内に記憶されるデータに各プロセッササブユニットがアクセスできるようにするために、各プロセッササブユニットによって個別に実行されるコードを使用してタイミングが動的に実行されるバスを提供する。これにより、従来使用していたバス管理ハードウェアのほぼ全てを無くすことが可能となる さらに、複雑なキャッシュ機構が、これらのバスを利用した直接転送に取って代わられ、結果メモリの読み込みおよび書き込み時の待ち時間がより短くなる。
[メモリベース処理アレイ]
図7Aおよび図7Bで示されるように、本開示のメモリチップは独立して動作することができる。あるいは、本開示のメモリチップは、メモリデバイス(例えば、1または複数のDRAMバンク)、システムオンチップ、フィールドプログラマブルゲートアレイ(FPGA)、またはその他の処理チップおよび/またはメモリチップなど、1または複数の追加の集積回路と動作可能に接続することができる。こうした実施形態では、アーキテクチャによって実行される一連の命令におけるタスクは(例えば下記のコンパイラによって)、メモリチップのプロセッササブユニットと、追加の集積回路のあらゆるプロセッササブユニットとの間に分割することができる。例えば、その他の集積回路は、命令および/またはデータをメモリチップに入力し、メモリチップから出力を受信するホスト(例えば、図3Aのホスト350)を含んでもよい。
本開示のメモリチップを1または複数の追加の集積回路と相互接続するために、メモリチップは、電子素子技術連合評議会(JEDEC)規格に準拠したメモリインタフェースまたはその変種のメモリインタフェースなどのメモリインタフェースを含んでもよい。次いで1または複数の追加の集積回路はメモリインタフェースに接続することができる。したがって、1または複数の追加の集積回路が本開示の複数のメモリチップに接続される場合、データは1または複数の追加の集積回路を介してメモリチップ間で共有することができる。この代わりに、またはこれに加えて、1または複数の追加の集積回路は本開示のメモリチップ上のバスに接続するバスを含み得るため、結果、1または複数の追加の集積回路は本開示のメモリチップと同時にコードを実行することができる。このような実施形態では、1または複数の追加の集積回路が本開示のメモリチップとは異なる基板上にある場合でも、1または複数の追加の集積回路はさらに分散処理を支援する。
さらに、本開示のメモリチップは分散型プロセッサのアレイを形成するために配置してもよい。例えば、1または複数のバスは、図7Cで示されるように、メモリチップ770aを追加のメモリチップ770bに接続できる 図7Cの例では、メモリチップ770aは、各プロセッササブユニット専用の1または複数の対応するメモリバンクを備えるプロセッササブユニットを含む。例えば、プロセッササブユニット730aはメモリバンク720aと関連付けられ、プロセッササブユニット730bはメモリバンク720bと関連付けられ、プロセッササブユニット730eはメモリバンク720cと関連付けられ、プロセッササブユニット730fはメモリバンク720dと関連付けられる。バスは各プロセッササブユニットをプロセッササブユニットに対応するメモリバンクに接続する。したがって、バス740aはプロセッササブユニット730aをメモリバンク720aに接続し、バス740bはプロセッササブユニット730bをメモリバンク720bに接続し、バス740cはプロセッササブユニット730eをメモリバンク720cに接続し、バス740dはプロセッササブユニット730fをメモリバンク720dに接続する。さらに、バス750aはプロセッササブユニット730aをプロセッササブユニット750eに接続し、バス750bはプロセッササブユニット730aをプロセッササブユニット750bに接続し、バス750cはプロセッササブユニット730bをプロセッササブユニット750fに接続し、バス750dはプロセッササブユニット730eをプロセッササブユニット750fに接続する。例えば、上記のように、メモリチップ770aのその他の配置を利用してもよい。
同様に、メモリチップ770bは、各プロセッササブユニット専用の1または複数の対応するメモリバンクを備えるプロセッササブユニットを含む。例えば、プロセッササブユニット730cはメモリバンク720eと関連付けられ、プロセッササブユニット730dはメモリバンク720fと関連付けられ、プロセッササブユニット730gはメモリバンク720gと関連付けられ、プロセッササブユニット730hはメモリバンク720hと関連付けられる。バスは各プロセッササブユニットをプロセッササブユニットに対応するメモリバンクに接続する。したがって、バス740eはプロセッササブユニット730cをメモリバンク720eに接続し、バス740fはプロセッササブユニット730dをメモリバンク720fに接続し、バス740gはプロセッササブユニット730gをメモリバンク720gに接続し、バス740hはプロセッササブユニット730hをメモリバンク720hに接続する。さらに、バス750gはプロセッササブユニット730cをプロセッササブユニット750gに接続し、バス750hはプロセッササブユニット730dをプロセッササブユニット750hに接続し、バス750iはプロセッササブユニット730cをプロセッササブユニット750dに接続し、バス750jはプロセッササブユニット730gをプロセッササブユニット750hに接続する。例えば、上記のように、メモリチップ770bのその他の配置を利用してもよい。
メモリチップ770aおよび770bのプロセッササブユニットは、1または複数のバスを使用して接続することができる。したがって、図7Cの例では、バス750eはメモリチップ770aのプロセッササブユニット730bおよびメモリチップ770bのプロセッササブユニット730cを接続することができ、バス750fはメモリチップ770aのプロセッササブユニット730fおよびメモリチップ770bのプロセッササブユニット730cを接続することができる。例えば、バス750eはメモリチップ770bへの入力バス(したがってメモリチップ770aへの出力バス)として機能することができ、バス750fはメモリチップ770aへの入力バス(したがってメモリチップ770bへの出力バス)として機能することができ、逆の場合も同じである。あるいは、バス750eおよび750fは両方ともメモリチップ770aと770bとの間の双方バスとして機能することができる。
バス750eおよび750fは、メモリチップ770aと集積回路770bとの間のチップ間インタフェースとして使用されるピンを少なくするために直接ワイヤを含み得て、または高速接続で交互配置することができる。さらに、メモリチップそのものに使用される上記のあらゆる接続配置を利用してメモリチップを1または複数の追加の集積回路に接続することができる。例えば、メモリチップ770aおよび770bは、図7Cで示されるように2つのバスだけでなくタイル全域接続またはタイル部分接続を利用して接続することができる。
したがって、アーキテクチャ760がバス750eおよび750fを使用して示されているが、アーキテクチャ760は少ないバス、または追加のバスを含んでもよい。例えば、プロセッササブユニット730bと730c、またはプロセッササブユニット730fと730cとの間で単一バスを使用することができる。あるいは、例えば、プロセッササブユニット730bと730d、プロセッササブユニット730fと730d、またはその他同種のものとの間で追加のバスを使用することができる。
さらに、複数のメモリチップが単一メモリチップおよび追加の集積回路を使用して示されるが、複数のメモリチップは上述のようにバスを使用して接続することができる。例えば、図7Cの例で示されるように、メモリチップ770a、770b、770c、および770dがアレイ形式で接続される。各メモリチップは、上記のメモリチップに類似するプロセッササブユニットおよび専用のメモリバンクを含む。したがって、これらのコンポーネントの記載はここでは繰り返さない。
図7Cの例では、メモリチップ770a、770b、770c、および770dは、ループで接続される。したがって、バス750aはメモリチップ770aおよび770dを接続し、バス750cはメモリチップ770aおよび770bを接続し、バス750eはメモリチップ770bおよび770cを接続し、バス750gはメモリチップ770cおよび770dを接続する。メモリチップ770a、770b、770c、および770dは、タイル全域接続、タイル部分接続、またはその他の接続配置で接続することができるが、図7Cの例は、メモリチップ770a、770b、770c、および770d間において少ないピンでの接続を可能にする。
[相対的に大型なメモリ]
本開示の実施形態は、従来のプロセッサの共有メモリと比べて相対的に大型サイズの専用メモリを使用することができる。共有メモリではなく専用メモリを使用することで、メモリが増えると同時に効率が衰えることなく効率向上を持続させることが可能となる。これにより、増える共有メモリの効率向上がフォンノイマンボトルネックにより続かなくなる従来のプロセッサよりもより効率的にニューラルネットワーク処理およびデータベースクエリなどメモリ負荷の高いタスクを実行することが可能となる。
例えば、本開示の分散型プロセッサでは、分散型プロセッサの基板に配置されるメモリアレイは、複数の個別のメモリバンクを含み得る。個別のメモリバンクの各々は、1メガバイト以上の容量と、基板上に配置され、複数のプロセッササブユニットを含む処理アレイと、を有することができる。前述のように、プロセッササブユニットの各々は、複数の個別のメモリバンクのうち対応する専用メモリバンクと関連付けることができる。いくつかの実施形態では、複数のプロセッササブユニットは、メモリアレイ内の複数の個別のメモリバンク間に空間的に分散することができる。大型CPUまたは大型GPUの数メガバイトの共有キャッシュではなく、少なくとも1メガバイトの専用メモリを使用することによって、本開示の分散型プロセッサはCPUまたはGPU内のフォンノイマンボトルネックにより従来システムでは不可能である効率性を向上させる。
専用メモリとして異なるメモリを使用することができる。例えば、各専用メモリバンクは少なくとも1つのDRAMバンクを含み得る。あるいは、各専用メモリバンクは少なくとも1つのスタティックランダムアクセスメモリバンクを含み得る。他の実施形態では、異なるタイプのメモリを単一ハードウェアチップ上に組み合わせることができる。
前述のように、各専用メモリは少なくとも1メガバイトであってもよい。したがって、各専用メモリバンクは同じサイズであってもよく、または、複数のメモリバンクのうち少なくとも2つは異なるサイズを有してもよい。
さらに、上記のように、分散型プロセッサは、各バスが複数のプロセッササブユニットの1つを対応する専用メモリバンクに接続する、第1の複数のバスと、各バスが複数のプロセッササブユニットの1つを複数のプロセッササブユニットの別のプロセッササブユニットに接続する、第2の複数のバスと、を含み得る。
[ソフトウェアを用いた同期]
前述のように、本開示のハードウェアチップは、ハードウェアではなくソフトウェアを使用してデータ転送を管理することができる。詳細には、バス上での転送のタイミング、メモリへの読み込みおよび書き込み、およびプロセッササブユニットの計算はプロセッササブユニットが実行するサブシリーズ命令によって設定されるため、本開示のハードウェアチップは、バス上で衝突しないようにするコードを実行することができる。したがって、本開示のハードウェアチップは、データ転送(チップ内のネットワークコントローラ、プロセッササブユニット間のパケットパーサおよびパケット転送者、バスアービテータ、アービテータを回避する複数のバス、またはその他同種のものなど)を管理するために従来から使われているハードウェア機構を回避することができる。
本開示のハードウェアチップが従来の方法でデータを転送した場合、Nプロセッササブユニットをバスと接続するには、アービタによって制御されるバスアービトレーションまたはワイドマルチプレクサ(MUX)が必要になるであろう。代わりに、上記のように、本開示の実施形態は、プロセッササブユニット間のワイヤ、光ケーブル、またはその他同種のものだけであるバスを使用することができ、プロセッササブユニットはバス上で衝突しないようにするコードを個別に実行する。したがって、本開示の実施形態は、基板上の空きを失わないようにすることに加え、マテリアルコストを維持し、および(例えば、アービトレーションによる電力消費および無駄な時間が原因となる)効率損失から守ることができる。先入れ先出し(FIFO)コントローラおよび/またはメールボックスを利用した他のアーキテクチャと比べて、効率性および空きの確保が今以上に高まる。
さらに、前述のように、各プロセッササブユニットは、1または複数の処理要素に加えて1または複数のアクセラレータを含み得る。いくつかの実施形態では、アクセラレータは、処理要素ではなく、バスから読み込みおよび書き込み行うことができる。このような実施形態では、処理要素が1または複数の計算を実行する同サイクル時に、アクセラレータがデータを送信できるようにさせることによって追加の効率性が得られる場合がある。ただし、このような実施形態は、アクセラレータに対して追加のマテリアルを必要とする。例えば、アクセラレータの製造に追加のトランジスタが必要となる場合がある。
コードはさらに、タイミングおよび待ち時間を含む、プロセッササブユニット(例えば、プロセッササブユニット部を形成する処理要素および/またはアクセラレータを含む)の内部挙動を構成できる。例えば、コンパイラ(以下で記載する)は、データ転送を制御するサブシリーズ命令を生成する際にタイミングおよび待ち時間を構成する前処理を実行できる。
一例では、複数のプロセッササブユニットには、ニューラルネットワーク層を計算するタスクを割り当てることができる。ニューラルネットワーク層は複数の大型ニューロンの前層に完全接続される複数のニューロンを含む。ニューロンの前層のデータがプロセッササブユニット間に均等に広まることを想定すると、この計算を実行する1つの方法は、各プロセッササブユニットがニューロンの前層のデータをメインバスに次々に送信するように構成でき、次いで各プロセッササブユニットは、サブユニットが実装する対応するニューロンのウェイトによってこのデータを逓倍することになる。各プロセッササブユニットが1つ以上のニューロンを計算するため、各プロセッササブユニットはニューロンの数に等しい回数分前層のデータを送信することになる。つまり、サブユニットは時間的に別々に送信するため、各プロセッササブユニットのコードは他のプロセッササブユニットのコードと同じではない。
いくつかの実施形態では、分散型プロセッサは、例えば図7Aおよび図7Bで示されるように、基板上に配置されるメモリアレイを備える基板(例えば、シリコンなどの半導体基板および/またはフレキシブル回路基板などの回路基板)を備え得る。メモリアレイは複数の個別のメモリバンクを含み、処理アレイが基板に配置され、処理アレイが複数のプロセッササブユニットを含む。前述のようにプロセッササブユニットの各々は、複数の個別のメモリバンクのうち対応する専用メモリバンクと関連付けることができる。さらに、例えば図7Aおよび図7Bで示されるように、分散型プロセッサはさらに複数のバスを含み得て、複数のバスの各々が、複数のプロセッササブユニットの1つを複数のプロセッササブユニットの少なくとも別のプロセッササブユニットに接続する。
前述のように、複数のバスはソフトウェアで制御できる。したがって、複数のバスにはタイミングハードウェア論理コンポーネントがない場合があるため、結果プロセッササブユニット間、および複数のバスのうち対応するバス全体にわたるデータ転送がタイミングハードウェア論理コンポーネントによって制御されない。一例では、複数のバスにはバスアービタがない場合があるため、結果、プロセッササブユニット間、および複数のバスのうち対応するバス全体にわたるデータ転送がバスアービタによって制御されない。
いくつかの実施形態では、例えば図7Aおよび図7Bで示されるように、分散型プロセッサはさらに、複数のプロセッササブユニットの1つを対応する専用メモリバンクに接続する第2の複数のバスを含み得る。上記の複数のバスと同様に、第2の複数のバスにはタイミングハードウェア論理コンポーネントがない場合があるため、結果プロセッササブユニットおよび対応する専用メモリバンク間でのデータ転送がタイミングハードウェア論理コンポーネントによって制御されない。一例では、第2の複数のバスにはバスアービタがない場合があるため、結果プロセッササブユニットおよび対応する専用メモリバンク間でのデータ転送がバスアービタによって制御されない。
本明細書で使用される「ない(free of)」というフレーズは、必ずしもタイミングハードウェア論理コンポーネント(例えば、バスアービタ、アービトレーションツリー、FIFOコントローラ、メールボックス、またはその他同種のもの)などのコンポーネントが完全にないということを意味しない。さらにこうしたコンポーネントは、これらのコンポーネントが「ない(free of)」と記載されるハードウェアチップ内に含まれる場合がある。代わりに、「ない(free of)」というフレーズはハードウェアチップの機能を指す。つまり、タイミングハードウェア論理コンポーネントが「ない(free of)」ハードウェアチップは、タイミングハードウェア論理コンポーネントがある場合、ハードウェアチップ内に含まれるタイミングハードウェア論理コンポーネントを使用せずにデータ転送のタイミングを制御する。例えば、ハードウェアチップは、実行されるコード内のエラーによる衝突から守る補助予防措置としてのタイミングハードウェア論理コンポーネントを含むとはいえ、ハードウェアチップはハードウェアチップのプロセッササブユニット間のデータ転送を制御するサブシリーズ命令を含むコードを実行する。
前述のように、複数のバスは、複数のプロセッササブユニットの対応するプロセッササブユニット間に少なくとも1つのワイヤまたは光ファイバを含んでもよい。したがって、一例では、タイミングハードウェア論理コンポーネントがない分散型プロセッサは、バスアービタ、アービトレーションツリー、FIFOコントローラ、メールボックス、またはその他同種のものを使用せず、ワイヤまたは光ファイバのみを含み得る。
いくつかの実施形態では、複数のプロセッササブユニットは、複数のプロセッササブユニットによって実行されるコードに従って複数のバスの少なくとも1つの全体にわたりデータを転送するように構成される。したがって、以下で説明するように、コンパイラはサブシリーズ命令を編成することができ、各サブシリーズは単一プロセッササブユニットによって実行されるコードを含む。サブシリーズ命令は、バスの1つにデータを転送する時期、およびバスからデータを引き出す時期をプロセッササブユニットに命令できる。サブシリーズが分散型プロセッサ全体に平行して実行される場合、サブシリーズ内に含まれる転送命令および引き出し命令がプロセッササブユニット間の転送するタイミングを制御できる。このように、コードは、複数のバスの少なくとも1つの全体にデータ転送のタイミングを規定する。コンパイラは、単一プロセッササブユニットによって実行されるコードを生成することができる。さらに、コンパイラは、プロセッササブユニットのグループによって実行されるコードを生成することができる。場合によっては、コンパイラは、全てのプロセッササブユニットがあたかも1つのスーパープロセッサ(例えば、分散型プロセッサ)であるかのように全てのプロセッササブユニットを共に処理することができ、コンパイラは、その定義されたスーパープロセッサ/分散型プロセッサによって実行するコードを生成することができる。
上記のように、および図7Aおよび図7Bで示されるように、複数のプロセッササブユニットがメモリアレイ内の複数の個別のメモリバンク間に空間的に分散される。あるいは、基板の1または複数の領域内に複数のプロセッササブユニットを集めてグループにすることができ、基板の1または複数の他の領域内に複数のメモリバンクを集めてグループにすることができる。いくつかの実施形態では、前述のように、空間的分散およびグループ分類の組み合わせを利用することができる。
いくつかの実施形態では、分散型プロセッサは、基板上に配置されるメモリアレイを備える基板(例えば、シリコンなどの半導体基板および/またはフレキシブル回路基板などの回路基板)を備え得る。メモリアレイは複数の個別のメモリバンクを含む。例えば、図7Aおよび図7Bで示されるように、処理アレイはさらに基板に配置され、処理アレイが複数のプロセッササブユニットを含む。前述のようにプロセッササブユニットの各々は、複数の個別のメモリバンクのうち対応する専用メモリバンクと関連付けることができる。さらに、例えば図7Aおよび図7Bで示されるように、分散型プロセッサはさらに複数のバスを含み得て、複数のバスの各々が、複数のプロセッササブユニットの1つを複数の個別のメモリバンクのうち対応する専用メモリバンクに接続する。
前述のように、複数のバスはソフトウェアで制御できる。したがって、複数のバスにはタイミングハードウェア論理コンポーネントがない場合があるため、結果プロセッササブユニットと複数の個別のメモリバンクのうち対応する専用メモリバンクとの間、および複数のバスのうち対応するバス全体にわたるデータ転送がタイミングハードウェア論理コンポーネントによって制御されない。一例では、複数のバスにはバスアービタがない場合があるため、結果、プロセッササブユニット間、および複数のバスのうち対応するバス全体にわたるデータ転送がバスアービタによって制御されない。
いくつかの実施形態では、例えば図7Aおよび図7Bで示されるように、分散型プロセッサはさらに、複数のプロセッササブユニットの1つを複数のプロセッササブユニットの少なくとも別のプロセッササブユニットに接続する第2の複数のバスを含み得る。上記の複数のバスと同様に、第2の複数のバスにはタイミングハードウェア論理コンポーネントがない場合があるため、結果プロセッササブユニットおよび対応する専用メモリバンク間でのデータ転送がタイミングハードウェア論理コンポーネントによって制御されない。一例では、第2の複数のバスにはバスアービタがない場合があるため、結果プロセッササブユニットおよび対応する専用メモリバンク間でのデータ転送がバスアービタによって制御されない。
いくつかの実施形態では、分散型プロセッサは、ソフトウェアタイミングコンポーネントとハードウェアタイミングコンポーネントとの組み合わせを利用することができる。例えば、分散型プロセッサは、基板上に配置されるメモリアレイを備える基板(例えば、シリコンなどの半導体基板および/またはフレキシブル回路基板などの回路基板)を備え得る。メモリアレイは複数の個別のメモリバンクを含む。例えば、図7Aおよび図7Bで示されるように、処理アレイがさらに基板に配置され、処理アレイが複数のプロセッササブユニットを含む。前述のようにプロセッササブユニットの各々は、複数の個別のメモリバンクのうち対応する専用メモリバンクと関連付けることができる。さらに、例えば図7Aおよび図7Bで示されるように、分散型プロセッサはさらに複数のバスを含み得て、複数のバスの各々が、複数のプロセッササブユニットの1つを複数のプロセッササブユニットの少なくとも別のプロセッササブユニットに接続する。さらに、前述のように、複数のプロセッササブユニットは、複数のバス全体にわたるデータ転送のタイミングを制御して、複数のバスの少なくとも1つにデータ転送が衝突しないようにするソフトウェアを実行するように構成することができる。この一例では、ソフトウェアがデータ転送のタイミングを制御することができるが、データ転送自体は1または複数のハードウェアコンポーネントによって少なくとも部分的に制御される場合がある。
このような実施形態において、分散型プロセッサはさらに、複数のプロセッササブユニットの1つを対応する専用メモリバンクに接続する第2の複数のバスを含み得る。上記の複数のバスと同様に、複数のプロセッササブユニットは、第2の複数のバス全体にわたるデータ転送のタイミングを制御して、第2の複数のバスの少なくとも1つにデータ転送が衝突しないようにするソフトウェアを実行するように構成することができる。この一例では、前述のように、ソフトウェアがデータ転送のタイミングを制御することができるが、データ転送自体は1または複数のハードウェアコンポーネントによって少なくとも部分的に制御される場合がある。
コードの分割 前述のように、本開示のハードウェアチップは、ハードウェアチップを形成する基板上に含まれるプロセッササブユニット全体にわたり並列でコードを実行することができる。さらに、本開示のハードウェアチップはマルチタスキングを実行することができる。例えば、本開示のハードウェアチップはエリアマルチタスキングを実行することができる。エリアマルチタスキングでは、ハードウェアチップのプロセッササブユニットの1グループが1つのタスク(例えば、音声処理)を実行し、ハードウェアチップのプロセッササブユニットの別グループが別のタスク(例えば、画像処理)を実行する。別の例では、本開示のハードウェアチップはタイミングマルチタスキングを実行することができる。タイミングマルチタスキングでは、ハードウェアチップの1または複数のプロセッササブユニットが第1の期間中に1つのタスクを実行し、第2の期間中に別のタスクを実行する。さらに、第1の期間中に1つのタスクをプロセッササブユニットの第1のグループに割り当てることができ、第1の期間中に別のタスクをプロセッササブユニットの第2のグループに割り当てることができ、その後、第2の期間中に第3のタスクを第1のグループおよび第2のグループ内に含まれるプロセッササブユニットに割り当てることができるように、エリアマルチタスキングとタイミングマルチタスキングの組み合わせを利用することができる。
本開示のメモリチップ上で実行するマシンコードを編成するために、マシンコードをメモリチップのプロセッササブユニット間に分割することができる。例えば、メモリチップ上のプロセッサは、基板と、基板上に配置される複数のプロセッササブユニットと、を含み得る。メモリチップはさらに、基板上に配置される対応する複数のメモリバンクを含み得て、複数のプロセッササブユニットの各々が、複数のプロセッササブユニットの他のあらゆるプロセッササブユニットによって共有されない少なくとも1つの専用メモリバンクに接続される。メモリチップ上の各プロセッササブユニットは、他のプロセッササブユニットから独立した一連の命令を実行するように構成することができる。各一連の命令は、一連の命令を定義するコードに従ってプロセッササブユニットの1または複数の汎用処理要素を構成することによって、および/または、一連の命令を定義するコード内に提供されるシーケンスに従ってプロセッササブユニットの1または複数の専用処理要素(例えば、1または複数のアクセラレータ)をアクティブ化させることによって、実行することができる。
したがって、各一連の命令は、単一プロセッササブユニットによって実行される一連のタスクを定義することができる。単一のタスクは、プロセッササブユニット内の1または複数の処理要素のアーキテクチャによって定義される命令セット内の命令を含み得る。例えば、プロセッササブユニットは特定のレジスタを含み得て、単一タスクは、データをレジスタで処理し、レジスタからデータを引き出し、レジスタ内のデータ上に演算関数を実行し、レジスタ内のデータ上に論理演算を実行し、またはその他同種のことを実行することができる。さらに、プロセッササブユニットは、0オペランドプロセッササブユニット(「スタックマシン」とも呼ばれる)、1オペランドプロセッササブユニット(アキュムレータマシンとも呼ばれる)、2オペランドプロセッササブユニット(RISCなど)、3オペランドプロセッササブユニット(複雑な命令セットコンピューティング(CISCなど))、またはその他同種のもの、など、あらゆる複数のオペランドを構成することができる。別の例では、プロセッササブユニットは1または複数のアクセラレータを含み得て、単一タスクはアクセラレータをアクティブ化させてMAC関数、MAX関数、MAX―0関数、またはその他同種の関数など、特殊関数を実行することができる。
一連の命令はさらに、メモリチップの専用メモリバンクから読み込みおよび書き込みを行うタスクを含み得る。例えば、タスクは、タスクを実行するプロセッササブユニット専用のメモリバンクにデータを書き込む段階と、タスクを実行するプロセッササブユニット専用のメモリバンクからデータを読み込む段階と、またはその他同種の段階と、を含み得る。いくつかの実施形態では、読み込みおよび書き込みは、メモリバンクのコントローラと同時にプロセッササブユニットによって実行することができる。例えば、プロセッササブユニットは、コントローラに制御信号を送信して読み込みまたは書き込みを実行することによって読み込みタスクまたは書き込みタスクを実行することができる。いくつかの実施形態では、制御信号は、読み込みおよび書き込み用の特定のアドレスを含み得る。あるいは、プロセッササブユニットは、読み込みおよび書き込み用の利用可能なアドレスを選択するためにメモリコントローラに従う場合がある。
この代わりに、またはこれに加えて、読み込みおよび書き込みは、メモリバンクのコントローラと同時に1または複数のアクセラレータによって実行することができる。例えば、アクセラレータはメモリコントローラの制御信号を生成することができる。これは、上記のようにプロセッササブユニットがどのように制御信号を生成するかに似ている。
上記のあらゆる実施形態では、アドレスジェネレータはさらに、読み込みおよび書き込みをメモリバンクの特定のアドレスに導くために使用することができる。例えば、アドレスジェネレータは、読み込みおよび書き込み用のメモリアドレスを生成するように構成される処理要素を含み得る。アドレスジェネレータは、例えば、もはや不要である前の計算結果と同じアドレスに後の計算結果を書き込むことによって効率を高めるためにアドレスを生成するように構成することができる。したがって、アドレスジェネレータは、プロセッササブユニットから(例えば、プロセッササブユニット内に含まれる処理要素から、またはプロセッササブユニット内に含まれる1または複数のアクセラレータから)のコマンドに応答して、またはプロセッササブユニットと同時に、のいずれかで、メモリコントローラの制御信号を生成することができる。この代わりに、またはこれに加えて、アドレスジェネレータは、いくつかの構成に基づいてアドレスを、または例えばメモリ内の特定のアドレス上に特定のパターンで繰り返すループが何重にも入れ子になった構造を生成するレジスタ、を生成することができる。
いくつかの実施形態では、各一連の命令は、対応する一連のタスクを定義するマシンコードのセットを含み得る。したがって、上記の一連のタスクは、一連の命令を含むマシンコード内にカプセル化することができる。いくつかの実施形態では、図8に関連して以下で説明するように、一連のタスクはコンパイラによって定義することができる。コンパイラは一連の複数のタスクとしての複数の論理回路間に一連の上位タスクを分散するように構成される。例えば、コンパイラは、各対応する一連のタスクを同時に実行するプロセッササブユニットが一連の上位タスクが概説した同じ機能を実行するように、一連の上位タスクに基づいて一連の複数のタスクを生成することができる。
さらに以下で詳述するように、一連の上位タスクは、人間が読めるプログラミング言語における命令のセットを含み得る。同様に、各プロセッササブユニットの一連のタスクは一連の下位タスクを含み得て、一連の下位タスクの各々はマシンコード内の命令のセットを含む。
図7Aおよび図7Bに関連して上記で説明したように、メモリチップはさらに複数のバスを含み得て、各バスは、複数のプロセッササブユニットの1つを複数のプロセッササブユニットの少なくとも1つの他のプロセッササブユニットに接続する。さらに、上記のように、複数のバス上でのデータ転送はソフトウェアを使用して制御できる。したがって、複数のバスの少なくとも1つのバス全体にわたるデータ転送は、複数のバスの少なくとも1つのバスに接続されるプロセッササブユニット内に含まれる一連の命令によって予め定義することができる。したがって、一連の命令の中に含まれるタスクの1つは、データをバスの1つに出力する段階、またはデータをバスの1つから引き出す段階を含み得る。このようなタスクは、プロセッササブユニットの処理要素によって、または、プロセッササブユニット内に含まれる1または複数のアクセラレータによって実行することができる。後者の実施形態では、プロセッササブユニットは、アクセラレータがデータをバスの1つから引き出すまたはデータをバスの1つに入れる同じサイクルで計算を実行し、または制御信号を対応するメモリバンクに送信することができる。
一例では、複数のバスの少なくとも1つに接続されるプロセッササブユニット内に含まれる一連の命令は送信タスクを含み得る。送信タスクは、複数のバスの少なくとも1つに接続されるプロセッササブユニットがデータを複数のバスの少なくとも1つに書き込むコマンドを含む。この代わりに、またはこれに加えて、複数のバスの少なくとも1つに接続されるプロセッササブユニット内に含まれる一連の命令は受信タスクを含み得る。受信タスクは、複数のバスの少なくとも1つに接続されるプロセッササブユニットが複数のバスの少なくとも1つからデータを読み込むコマンドを含む。
コードをプロセッササブユニット間に分散する代わりに、またはそのことに加えて、データをメモリチップのメモリバンク間に分割することができる。例えば、前述のように、メモリチップ上の分散型プロセッサは、メモリチップ上に配置される複数のプロセッササブユニットと、メモリチップ上に配置される複数のメモリバンクと、を含み得る。複数のメモリバンクの各々は、複数のメモリバンクうち他のメモリバンク内に記憶されるデータから独立したデータを記憶するように構成することができ、複数のプロセッササブユニットの各々は、複数のメモリバンク間から少なくとも1つの専用メモリバンクに接続することができる 例えば、各プロセッササブユニットはプロセッササブユニット専用の1または複数の対応するメモリバンクの1または複数のメモリコントローラへのアクセス権を有することができ、他のプロセッササブユニットはこれらの対応する1または複数のメモリコントローラへのアクセス権を有することができない。したがって、各メモリバンク内に記憶されるデータは専用プロセッササブユニットに特有になり得る。さらに、各メモリバンク内に記憶されるデータは他のメモリバンク内に記憶されるメモリから独立してもよい。これは、メモリコントローラがメモリバンク間で共有することができないためである。
いくつかの実施形態では、図8に関連して以下で説明されるように、複数のメモリバンクの各々に記憶されるデータは、データを複数のメモリバンク間に分散するように構成されるコンパイラによって定義することができる。さらに、コンパイラは、対応するプロセッササブユニット間に分散される複数の下位タスクを利用して、一連の上位タスク内で定義されるデータを複数のメモリバンク間に分散するように構成することができる。
以下で詳述するように、一連の上位タスクは、人間が読めるプログラミング言語における命令のセットを含み得る。同時に、各プロセッササブユニットの一連のタスクは一連の下位タスクを含み得て、一連の下位タスクの各々はマシンコードにおける命令のセットを含む。
図7Aおよび図7Bに関連して上記で説明したように、メモリチップはさらに複数のバスを含み得て、各バスは、複数のプロセッササブユニットの1つを、複数のメモリバンク間から1または複数の対応する専用メモリバンクに接続する。さらに、前述のように、複数のバス上でのデータ転送はソフトウェアを使用して制御できる。したがって、複数のバスの特定の1つのバス全体にわたるデータ転送は、複数のバスの特定の1つのバスに接続される対応するプロセッササブユニットによって制御することができる。したがって、一連の命令の中に含まれるタスクの1つは、データをバスの1つに出力する段階と、またはデータをバスの1つから引き出す段階と、を含み得る。前述のように、このようなタスクは、(i)プロセッササブユニットの処理要素によって、または、(ii)プロセッササブユニット内に含まれる1または複数のアクセラレータによって実行することができる。後者の実施形態では、プロセッササブユニットは、アクセラレータが1または複数の対応する専用メモリバンクに接続されるバスの1つからデータを引き出す、またはそのバスの1つにデータを入れる同じサイクルで計算を実行する、またはプロセッササブユニットを他のプロセッササブユニットに接続するバスを使用することができる。
したがって、一例では、複数のバスの少なくとも1つに接続されるプロセッササブユニット内に含まれる一連の命令は送信タスクを含み得る。送信タスクは、複数のバスの少なくとも1つに接続されるプロセッササブユニットが1または複数の対応する専用メモリバンク内に記憶するためにデータを複数のバスの少なくとも1つに書き込むコマンドを含み得る。この代わりに、またはこれに加えて、複数のバスの少なくとも1つに接続されるプロセッササブユニット内に含まれる一連の命令は受信タスクを含み得る。受信タスクは、複数のバスの少なくとも1つに接続されるプロセッササブユニットが1または複数の対応する専用メモリバンク内に記憶するために複数のバスの少なくとも1つからデータを読み込むコマンドを含み得る。したがって、このような実施形態における送信タスクおよび受信タスクは、複数のバスの少なくとも1つを介して1または複数の対応する専用メモリバンクの1または複数のメモリコントローラに送信される制御信号を含み得る。さらに、送信タスクおよび受信タスクは、プロセッササブユニットの一部分によって(例えば、プロセッササブユニットの1または複数のアクセラレータによって)計算と同時に実行することができ、またはその他のタスクはプロセッササブユニットの別部分よって(例えば、プロセッササブユニットの1または複数の異なるアクセラレータによって)実行することができる。こうした同時実行の一例は、受信、逓倍、および送信が同時に実行されるMACリレーコマンドを含み得る。
データをメモリバンク間に分散することに加え、異なるメモリバンク全体にわたりデータの特定の部分を複製することができる。例えば、前述のように、メモリチップ上の分散型プロセッサは、メモリチップ上に配置される複数のプロセッササブユニットと、メモリチップ上に配置される複数のメモリバンクと、を含み得る。複数のプロセッササブユニットの各々は、複数のメモリバンク間から少なくとも1つの専用メモリバンクに接続することができ、複数のメモリバンクの各メモリバンクは、複数のメモリバンクのうち他のメモリバンク内に記憶されるデータから独立したデータを記憶するように構成することができる。さらに、複数のメモリバンク間からの特定の1つのメモリバンク内に記憶されるデータの少なくともいくつかは、複数のメモリバンクの少なくとも別のメモリバンク内に記憶されるデータの複製を含み得る。例えば、一連の命令において使用されるデータの数、データストリング、またはその他のデータ型は、メモリチップ内の1つのメモリバンクから他のプロセッササブユニットに転送されるのではなく、異なるプロセッササブユニット専用の複数のメモリバンク内に記憶することができる。
一例では、並列ストリングマッチングが上記のデータ複製を使用することができる。例えば、複数のストリングは同じストリングと比較することができる。従来のプロセッサであれば、複数のストリングの各ストリングを順番に同じストリングと比較するであろう。本開示のハードウェアチップ上では、プロセッササブユニットが複数のストリングの別々のストリングを複製されたストリングと並列に比較することができるように、同じストリングをメモリバンク全体にわたり複製することができる。
いくつかの実施形態では、図8に関連して以下で説明されるように、複数のメモリバンク間からの1つの特定のメモリバンクおよび複数のメモリバンクの少なくとも別のメモリバンクの全体にわたり複製される少なくともいくつかのデータは、データをメモリバンク全体にわたり複製するように構成されるコンパイラによって定義される。さらに、コンパイラは、対応するプロセッササブユニット間に分散される複数の下位タスクを利用して、少なくともいくつかのデータを複製するように構成することができる。
データ複製は、異なる計算中に同じデータ部分を再利用する特定のタスクに役立つ場合がある。これらのデータ部分を複製することによって、並列実行するために異なる計算をメモリチップのプロセッササブユニット間に分散することができる一方、各プロセッササブユニットは(プロセッササブユニットを接続するバス全体にわたりデータ部分を処理および引き出すのではなく)データ部分を専用メモリバンク内に記憶することができ、専用メモリバンクから記憶したデータ部分にアクセスできる。一例では、複数のメモリバンク間からの1つの特定のメモリバンク、および複数のメモリバンクの少なくとも別のメモリバンク全体にわたり複製される少なくともいくつかのデータは、ニューラルネットワークのウェイトを含み得る。この例では、ニューラルネットワーク内の各ノードは複数のプロセッササブユニット間からの少なくとも1つのプロセッササブユニットによって定義することができる。例えば、各ノードは、ノードを定義する少なくとも1つのプロセッササブユニットによって実行されるマシンコードを含み得る。この例では、ウェイトを複製することにより各プロセッササブユニットがマシンコードを実行して対応するノードを少なくとも部分的に有効にし、各プロセッササブユニットが(他のプロセッササブユニットでデータ転送を実行するのではなく)1または複数の専用メモリバンクにアクセスするだけでよいことになる。プロセッササブユニット間のデータ転送のタイミングには(例えば、前述のようにソフトウェアを使用して)タイミング同期が必要になるが、専用メモリバンクへの読み込みおよび書き込みのタイミングは他のプロセッササブユニットに依存していないため、メモリを複製してプロセッササブユニット間でのデータ転送をしないようにすることで総合実行時にさらなる効率性が生み出される可能性がある。
図7Aおよび図7Bに関連して前述したように、メモリチップはさらに複数のバスを含み得て、各バスは、複数のプロセッササブユニットの1つを、複数のメモリバンク間から1または複数の対応する専用メモリバンクに接続する。さらに、前述のように、複数のバス上でのデータ転送はソフトウェアを使用して制御できる。したがって、複数のバスの特定の1つのバス全体にわたるデータ転送は、複数のバスの特定の1つのバスに接続される対応するプロセッササブユニットによって制御することができる。したがって、一連の命令の中に含まれるタスクの1つは、データをバスの1つに出力する段階と、またはデータをバスの1つから引き出す段階と、を含み得る。前述のように、このようなタスクは、(i)プロセッササブユニットの処理要素によって、または、(ii)プロセッササブユニット内に含まれる1または複数のアクセラレータによって実行することができる。詳述したように、こうしたタスクは送信タスクおよび/または受信タスクを含み得る。送信タスクおよび/または受信タスクは、複数のバスの少なくとも1つを介して1または複数の対応する専用メモリバンクの1または複数のメモリコントローラに送信される制御信号を含む。
図8は、例えば、図7Aおよび図7Bで示されるように、本開示の例示的なメモリチップ上で実行するための一連の命令をコンパイルする方法800のフローチャートを示す。方法800は、汎用であろうと専用であろうと従来のあらゆるプロセッサによって実装することができる。
方法800は、コンパイラを形成するコンピュータプログラムの一部分として実行することができる。本明細書で使用される「コンパイラ」は、上位言語(例えば、C、FORTRAN、BASIC、またはその他同種のものといった手続き形言語、およびJava(登録商標)、C++、PASCAL、Python、またはその他同種のものといったオブジェクト指向言語)を下位言語(例えば、アセンブリコード、オブジェクトコード、マシンコード、またはその他同種のもの)に変換するあらゆるコンピュータプログラムを指す。コンパイラにより、人間は、実行可能な機械語にその後変換された人間が読める言語で一連の命令のプログラムを可能にできる。
段階810で、本プロセッサは、一連の命令と関連付けられたタスクをプロセッササブユニットの異なるプロセッササブユニットに割り当てることができる。例えば、一連の命令はサブグループに分割することができ、サブグループはプロセッササブユニット全体にわたり並列で実行される。一例では、ニューラルネットワークはニューラルネットワークノードに分割することができ、1または複数のノードはプロセッササブユニットを分離するように割り当てることができる。この例では、各サブグループは異なる層全体にわたり接続される複数のノードを含み得る。したがって、プロセッササブユニットは、ニューラルネットワークの第1の層からのノード、同じプロセッササブユニットが実装する第1の層からのノードに接続される第2の層からのノード、またはその他同種のもの、を実装することができる。ノードをそうした接続に基づいて割り当てることによって、プロセッササブユニット間のデータ転送を減少することができ、上記のように結果的に効率向上がもたらされる可能性がある。
前述のように、図7Aおよび図7Bで示されるプロセッササブユニットはメモリチップ上に配置される複数のメモリバンク間に空間的に分散することができる。したがって、タスクの割り当ては、少なくとも部分的に空間分散ならびに論理分割であってもよい。
段階820で、本プロセッサは、メモリチップのプロセッササブユニットの対の間でデータを転送するタスクを生成し、プロセッササブユニットの対の各々がバスによって接続される。例えば、前述のように、データ転送はソフトウェアを使用して制御できる。したがって、プロセッササブユニットは、同期時にバス上でデータを処理および引き出すように構成することができる。したがって、生成されたタスクは、こうしたデータの同期された処理および引き出しを実行するタスクを含み得る。
前述のように、段階820は、タイミングおよび待ち時間を含むプロセッササブユニットの内部挙動を構成する前処理を含み得る。例えば、プロセッサは、プロセッササブユニットの周知の時間および待ち時間(例えば、バスにデータを処理する時間、バスからデータを引き出す時間、計算と処理または引き出しとの間の待ち時間、またはその他同種の時間)を利用して、生成されたタスクが確実に同期するようにできる。したがって、プロセッササブユニット間の期間的差異、プロセッササブユニットの待ち時間、またはその他同種のものが原因で生じる遅延を被ることなく、1または複数のプロセッササブユニットによる少なくとも1つの処理、および1または複数のプロセッササブユニットによる少なくとも1つの引き出し、を含むデータ転送を同時に行える。
段階830で、本プロセッサは、割り当てられたタスクおよび生成されたタスクをサブシリーズ命令の複数のグループに分割することができる。例えば、サブシリーズ命令の各々は、単一プロセッササブユニットが実行する一連のタスクを含み得る。そのため、サブシリーズ命令の複数のグループの各々は、複数のプロセッササブユニットのうち異なるプロセッササブユニットに対応することができる。したがって、段階810、段階820、および段階830は、一連の命令をサブシリーズ命令の複数のグループに分割する段階につなげることができる。前述のように、段階820は、異なるグループ間のあらゆるデータ転送を確実に同期することができる。
段階840で、本プロセッサは、サブシリーズ命令の複数のグループの各々に対応するマシンコードを生成することができる。例えば、サブシリーズ命令を表す上位コードは、対応するプロセッササブユニットによって実行可能であるマシンコードなどの下位コードに変換することができる。
段階850で、プロセッサは、分割に従って、サブシリーズ命令の複数のグループの各々に対応する生成されたマシンコードを、複数のプロセッササブユニットのうち対応する1つのプロセッササブユニットに割り当てることができる。例えば、プロセッサは、対応するプロセッササブユニットの識別子で各サブシリーズ命令を分類することができる。そのため、サブシリーズ命令が実行するために(例えば、図3Aのホスト350によって)メモリチップにアップロードされる場合、各サブシリーズは正しいプロセッササブユニットを構成することができる。
いくつかの実施形態では、一連の命令と関連付けられたタスクをプロセッササブユニットの異なるプロセッササブユニットに割り当てることは、メモリチップ上の2つ以上のプロセッササブユニット間の空間的近接に少なくとも部分的によって決まる場合がある。例えば、前述のように、プロセッササブユニット間のデータ転送の回数を減らすことによって効率を向上することができる。したがって、プロセッサは、2つ以上のプロセッササブユニット全体にデータを移動するデータ転送を減らすことができる。そのため、プロセッサは、1または複数の最適化アルゴリズム(欲張りアルゴリズムなど)を組み合わせてメモリチップの周知の設計を利用して、隣接する転送を(少なくともローカルに)最大化し、隣接しないプロセッササブユニットへの転送を(少なくともローカルに)最小化する方法でサブシリーズをプロセッササブユニットに割り当てることができる。
方法800はさらに、本開のメモリチップの最適化を含み得る。例えば、プロセッサは、分割に基づいて一連の命令と関連付けられるデータを分割し、そのデータ分類に従ってデータをメモリバンクに割り当てることができる。したがって、メモリバンクは、各プロセッササブユニット専用の各メモリバンクに割り当てられるサブシリーズ命令に使用されるデータを保持することができる。
いくつかの実施形態では、データを分類する段階は、2つ以上のメモリバンク内に複製するための少なくともデータ部分を決定する段階を含み得る。例えば、前述のように、いくつかのデータを1つ以上のサブシリーズ命令全体にわたり使用することができる。こうしたデータは、異なるサブシリーズ命令が割り当てられる複数のプロセッササブユニット専用のメモリバンク全体に複製できる こうした最適化はさらにプロセッササブユニット全体にわたるデータ転送を減らすことができる。
方法800の出力は、実行するために本開示のメモリチップに入力することができる。例えば、メモリチップは、複数のプロセッササブユニットおよび対応する複数のメモリバンクを含み得て、各プロセッササブユニットはプロセッササブユニット専用の少なくとも1つのメモリバンクに接続され、メモリチップのプロセッササブユニットは方法800によって生成されるマシンコードを実行するように構成することができる。図3Aに関連して前述したように、ホスト350は、実行するために方法800によって生成されるマシンコードをプロセッササブユニットに入力することができる。
[サブバンクおよびサブコントローラ]
従来のメモリバンクでは、コントローラがバンクレベルで提供される。各バンクは、一般的に矩形状で配置されるが、あらゆる幾何学的図形で配置することができる複数のマットを含む。各マットは、一般的に矩形状でも配置されるが、あらゆる幾何学的図形で配置することができる複数のメモリセルを含む。各メモリセルは、(例えば、メモリセルが高電圧で維持されるか、または低電圧で維持されるかに応じて)データの単一ビットを記憶することができる。
この従来のアーキテクチャの一例が図9および図10で示される。図9で示されるように、バンクレベルで複数のマット(例えば、マット930-1、930-2、940-1、および940-2)がバンク900を形成することができる。従来の矩形構成では、バンク900は、グローバルワード線(例えば、ワード線950)およびグローバルビット線(例えば、ビット線960)全体にわたって制御できる。したがって、行デコーダ910は、入ってくる制御信号(例えば、アドレスからの読み込み要求、アドレスへの書き込み要求、またはその他同種の要求)に基づいて正しいワード線を選択することができ、グローバルセンスアンプ920(および/または図9で示されないグローバル列デコーダ)は制御信号に基づいて正しいビット線を選択することができる。グローバルセンスアンプ920はさらに、読み込み動作時に、選択されたバンクからのあらゆる電圧レベルを上げる。列に沿って増幅の初期選択および初期実行を行う行デコーダを使用するように示されるが、バンクは、追加または代替として、行に沿って増幅の初期選択および初期実行を行う列デコーダを使用することができる。
図10はマット1000の一例を示す。例えば、マット1000は、図9のバンク900などのメモリバンクの一部分を形成することができる。図10で示されるように、複数のセル(例えば、セル1030-1、1030-2、および1030-3)はマット1000を形成することができる。各セルは、少なくとも1ビットのデータを記憶するコンデンサ、トランジスタ、またはその他の回路を含み得る。例えば、セルはコンデンサを含み得て、コンデンサは充電されて「1」を示し、放電されて「0」を示す。またはセルは、「1」を示す第1の状態および「0」を示す第2の状態を有するフリップフロップを含み得る。従来のマットは、例えば、512ビット×512ビットを含んでもよい。マット1000がMRAM、ReRAM、またはその他同種のメモリの一部分を形成する実施形態では、セルは、少なくとも1ビットのデータを記憶するイオンまたはマテリアルの一部分を絶縁するトランジスタ、抵抗器、コンデンサまたはその他の機構を含み得る。例えば、セルは、「1」を示す第1の状態および「0」を示す第2の状態を有する電解質イオン、カルコゲナイドガラスの一部分、またはその他同種のものを含み得る。
図10でさらに示されるように、従来の矩形構成では、マット1000は、ローカルワード線(例えば、ワード線1040)およびローカルビット線(例えば、ビット線1050)全体にわたって制御できる。したがって、ワード線ドライバ(例えば、ワード線ドライバ1020-1、1020-2、. . .、1020-x)は、マット1000がパート(例えば、アドレスからの読み込み要求、アドレスへの書き込み要求、リフレッシュ信号)を形成するメモリバンクと関連付けられたコントローラからの制御信号に基づいて、選択されたワード線を制御して読み込み、書き込み、またはリフレッシュを実行することができる。さらに、ローカルセンスアンプ(例えば、ローカルアンプ1010-1、1010-2、. . .、1010-x)および/またはローカル列デコーダ(図10で示されない)は選択されたビット線を制御して読み込み、書き込み、またはリフレッシュを実行することができる。ローカルセンスアンプはさらに、読み込み動作時に、選択されたセルからのあらゆる電圧レベルを上げることができる。列に沿って増幅の初期選択および初期実行を行うワード線ドライバを使用するように示されるが、マットは代わりに、行に沿って増幅の初期選択および初期実行を行うビット線ドライバを使用することができる。
前述のように、多くのマットを複製してメモリバンクを形成する。メモリバンクを分割してメモリチップを形成することができる。例えば、メモリチップは、8から32のメモリバンクを含んでもよい。したがって、プロセッササブユニットを従来のメモリチップ上のメモリバンクと組み合わせることにより、8から32だけのプロセッササブユニットをもたらすことができる。したがって、本開示の実施形態は、追加のサブバンク層を備えるメモリチップを含んでもよい。本開示のこれらのメモリチップは次いで、プロセッササブユニットと組み合わされた専用メモリバンクとして使用されるメモリサブバンクを備え、多くのサブプロセッサを可能にするプロセッササブユニットを含み得て、多くのサブプロセッサは次いで高並列処理を実現し、インメモリーコンピューティングを実行することができる。
本開示のいくつかの実施形態では、バンク900のグローバル行デコーダおよびグローバルセンスアンプをサブバンクコントローラに取り替えることができる。したがって、制御信号をメモリバンクのグローバル行デコーダおよびグローバルセンスアンプに送信するのではなく、メモリバンクのコントローラは、制御信号を適切なサブバンクコントローラに導くことができる。その指示は(例えば1または複数の論理ゲートを介して)動的に制御でき、またはハードワイヤードできる。いくつかの実施形態では、制御信号をブロックするか、適切なサブバンクまたはマットに渡すか、またはどうかを各サブバンクまたはマットのコントローラに示すのにヒューズを使用することができる。したがって、このような実施形態では、ヒューズを使用して不良のサブバンクを非アクティブ化できる。
このような実施形態の一例では、メモリチップは、複数のメモリバンクであって、各メモリバンクがバンクコントローラを有する、複数のメモリバンクと、複数のメモリサブバンクであって、各メモリサブバンクが、読み込みおよび書き込みきを可能にするサブバンク行デコーダおよびサブバンク列デコーダを自らの位置に有する、複数のメモリサブバンクと、を含み得る。各サブバンクは、複数のメモリマットであって、各メモリマットが複数のメモリセルを有する、複数のメモリマットを含んでもよく、各サブバンクはローカル行デコーダ、ローカル列デコーダ、および/またはローカルセンスアンプを内部に有することができる。サブバンク行デコーダおよびサブバンク列デコーダは、下記のように、バンクコントローラからの、またはサブバンクメモリ上でインメモリーコンピューティング用に使用されるサブバンクプロセッササブユニットからの読み込み要求および書き込み要求を処理することができる。また、各メモリサブバンクはさらに、バンクコントローラからの読み込み要求および書き込み要求を処理するかどうか、読み込み要求および書き込み要求を(例えば、マット上の行デコーダおよび列デコーダの)次のレベルに転送するかどうか、例えば、内部処理要素またはプロセッササブユニットがメモリにアクセスできるようにする読み込み要求および書き込み要求をブロックするかどうか、を決定するように構成されるコントローラを含み得る。いくつかの実施形態では、バンクコントローラはシステムクロックに同期できる。ただし、サブバンクコントローラはシステムクロックに同期しない場合がある。
前述のように、プロセッササブユニットを従来のチップのメモリバンクと組み合わせた場合に比べ、サブバンクを使用することで多くのプロセッササブユニットをメモリチップ内に含むことを可能にできる。したがって、各サブバンクはさらに、サブバンクを専用メモリとして使用するプロセッササブユニットを有することができる。前述のように、プロセッササブユニットは、RISC、CISC、またはその他の汎用プロセッササブユニットを含み得て、および/または1または複数のアクセラレータを含み得る。さらに、プロセッササブユニットは、前述のように、アドレスジェネレータを含み得る。上記のあらゆる実施形態では、各プロセッササブユニットは、バンクコントローラを使用せずにサブバンクの行デコーダおよび列デコーダを使用してプロセッササブユニット専用のサブバンクにアクセスするように構成することができる。サブバンクと関連付けられるプロセッササブユニットはさらに、メモリマット(下記のデコーダおよびメモリ余剰機構を含む)を処理することができ、および/または、上位(例えば、バンクレベルまたはメモリレベル)からの読み込み要求または書き込み要求がそれに応じて転送および処理されるかどうかを決定することができる。
いくつかの実施形態では、サブバンクコントローラはさらに、サブバンクの状態を記憶するレジスタを含み得る。したがって、サブバンクコントローラがメモリコントローラから制御信号を受信し、サブバンクが使用中であることをレジスタが示す場合に、サブバンクコントローラはエラーに戻ってもよい。各サブバンクがさらにプロセッササブユニットを含む実施形態では、サブバンク内のプロセッササブユニットがメモリコントローラからの外部要求と衝突してメモリにアクセスする場合に、レジスタはエラーを示す場合がある。
図11は、サブバンクコントローラを使用したメモリバンクの別の実施形態の一例を示す。図11の例では、バンク1100は、行デコーダ1110と、列デコーダ1120と、サブバンクコントローラ(例えば、コントローラ1130a、1130b、および1130c)を備えた複数のメモリサブバンク(例えば、サブバンク1170a、1170b、および1170c)と、を有する。サブバンクコントローラは、アドレスリゾルバ(例えば、リゾルバ1140a、1140b、および1140c)を含み得て、アドレスリゾルバは、サブバンクコントローラによって制御される1または複数のサブバンクに要求を渡すかどうかを決定することができる。
サブバンクコントローラはさらに1または複数の論理回路(例えば、論理1150a、1150b、および1150c)を含み得る。例えば、1または複数の処理要素を含む論理回路は、サブバンク内のセルをリフレッシュする、サブバンク内のセルを消去する、またはその他同種の動作を行うなどの1または複数の動作を、バンク1100からの要求を外部で処理せずに実行させることを可能にする。あるいは、論理回路は、前述のように、プロセッササブユニットを含み得るため、結果、プロセッササブユニットは、対応する専用メモリとしてサブバンクコントローラによって制御されるあらゆるサブバンクを有する。図11の例では、論理1150aは、対応する専用メモリとしてサブバンク1170aを有することができ、論理1150bは、対応する専用メモリとしてサブバンク1170bを有することができ、論理1150cは、対応する専用メモリとしてサブバンク1170cを有することができる。上記のあらゆる実施形態では、論理回路はサブバンクへのバス、例えば、バス1131a、1131b、または1131cを有することができる。図11でさらに示されるように、サブバンクコントローラの各々は、処理要素またはプロセッササブユニットによって、またはコマンドを発行する上位メモリコントローラによって、のいずれかによって、メモリサブバンク上の記憶位置に読み込みおよび書き込みを可能にするサブバンク行デコーダおよびサブバンク列デコーダなどの複数のデコーダを含み得る。例えば、サブバンクコントローラ1130aはデコーダ1160a、1160b、および1160cを含み、サブバンクコントローラ1130bはデコーダ1160d、1160e、および1160fを含み、サブバンクコントローラ1130cはデコーダ1160g、1160h、および1160iを含む。サブバンクコントローラは、バンク行デコーダ1110からの要求に基づいて、サブバンクコントローラ内に含まれるデコーダを使用してワード線を選択できる。本記載のシステムにより、サブバンクの処理要素またはプロセッササブユニットはその他のバンクおよびその他のサブバンクにさえ割り込むことなくメモリにアクセスすることが可能となる。これにより、各サブバンクのプロセッササブユニットはその他のサブバンクプロセッササブユニットでメモリ計算を並列に実行することができる。
さらに、各サブバンクは複数のメモリマットをみ得て、各メモリマットは複数のセルを有する。例えば、サブバンク1170aはマット1190a-1、1190a-2、. . .、1190a-xを含む。サブバンク1170bはマット1190b-1、1190b-2、. . . 、1190b-xを含む。サブバンク1170cはマット1190c-1、1190c-2、. . .、1190c-3を含む。図11でさらに示されるように、各サブバンクは、少なくとも1つのデコーダを含み得る。例えば、サブバンク1170aはデコーダ1180aを含み、サブバンク1170bはデコーダ1180bを含み、サブバンク1170cはデコーダ1180cを含む。したがって、バンク列デコーダ1120は、外部要求に基づいてグローバルビット線(例えば、ビット線1121aまたは1121b)を選択することができ、バンク行デコーダ1110によって選択されるサブバンクはそのバンク列デコーダを使用して、サブバンクが専用になる論理回路からのローカル要求に基づいてローカルビット線(例えば、ビット線1181aまたは1181b)を選択することができる。したがって、各プロセッササブユニットは、バンク行デコーダおよびバンク列デコーダを使用せずにサブバンクの行デコーダおよび列デコーダを使用して、プロセッササブユニット専用のサブバンクにアクセスするように構成することができる。したがって、各プロセッササブユニットは、他のサブバンクに割り込むことなく、対応するサブバンクにアクセスできる。さらに、サブバンクデコーダは、サブバンクへの要求がプロセッササブユニットの外部にある場合、アクセスデータをバンクデコーダに反映することができる。あるいは、各サブバンクが1行だけのメモリマットを有する実施形態では、ローカルビット線はサブバンクのビット線ではなくマットのビット線になってもよい。
サブバンク行デコーダおよびサブバンク列デコーダを使用した実施形態と、図11で示される実施形態との組み合わせを利用することができる。例えば、バンク行デコーダを無くすが、バンク列デコーダを残し、ローカルビット線を使用してもよい。
図12は、複数のマットを有するメモリサブバンク1200の一実施形態の一例を示す。例えば、サブバンク1200は、図11のサブバンク1100の一部分を表し得る、またはサブバンク1200は、メモリバンクの代替実装を表し得る。図12の例では、サブバンク1200は複数のマット(例えば、マット1240aおよび1240b)を含む。さらに、各マットは複数のセルを含み得る。例えば、マット1240aはセル1260a-1、1260a-2. . .1260a-xを含み、 マット1240bはセル1260b-1、1260b-2. . .1260b-xを含む。
各マットには、マットのメモリセルに割り当てられることになるアドレスレンジを割り当てることができる。これらのアドレスは、生成時に、(例えば、以下で詳述するように1または複数のヒューズを使用して)マットをあちこち移動できるように、および、不良マットを非アクティブ化し、未使用状態にできるように構成することができる。
サブバンク1200は、メモリコントローラ1210から読み込み要求および書き込み要求を受信する。図12で示されないが、アドレス解決のためにメモリコントローラ1210からの要求をサブバンク1200のコントローラを介してフィルタし、サブバンク1200の適切なマットに導くことができる。あるいは、メモリコントローラ1210からの要求のアドレスの少なくとも一部分(例えば、高ビット)は、サブバンク1200の全てのマット(例えば、マット1240aおよび1240b)に送信することができるため、結果、割り当てられたマットのアドレスレンジがコマンド内で指定されたアドレスを含む場合に限り、各マットは全てのアドレスおよびアドレスと関連付けられた要求を処理することができる。上記のサブバンクの指示と同様に、マットの決定は動的に制御できる、またはハードワイヤードできる。いくつかの実施形態では、ヒューズを使用して各マットのアドレスレンジを決定することができ、さらに不正アドレスレンジを割り当てることによって不良マットを無効にすることが可能となる。追加または代替として、他の一般的な方法またはヒューズを接続することによってマットを無効にできる。
上記のあらゆる実施形態では、サブバンクの各マットは、マット内にワード線を選択するための行デコーダ(例えば、行デコーダ1230aまたは1230b)を含み得る。いくつかの実施形態では、各マットはさらにヒューズおよびコンパレータ(例えば1220aおよび1220b)を含み得る。上記のように、コンパレータは、各マットが入ってくる要求を処理するかどうかを決定することができる場合があり、ヒューズは、各マットが不良の場合非アクティブ化できる場合がある。あるいは、各マット内の行デコーダではなく、バンクおよび/またはサブバンクの行デコーダを使用することができる。
さらに、上記のあらゆる実施形態では、適切なマット内に含まれる列デコーダ(例えば、列デコーダ1250aまたは1250b)はローカルビット線(例えば、ビット線1251または1253)を選択することができる。ローカルビット線はメモリバンクのグローバルビット線に接続することができる。サブバンクが独自のローカルビット線を有する実施形態では、セルのローカルビット線はさらにサブバンクのローカルビット線に接続することができる。したがって、選択されたセル内のデータは、セルの列デコーダ(および/またはセンスアンプ)を介して、次いで(サブバンク列デコーダおよび/またはセンスアンプを含む実施形態では)サブバンクの列デコーダ(および/またはセンスアンプ)を介して、次いでバンクの列デコーダ(および/またはセンスアンプ)を介して、読み込むことができる。
マット1200を複製および配置してメモリバンク(またはメモリサブバンク)を形成することができる。例えば、本開示のメモリチップは、複数のメモリバンクであって、各メモリバンクが複数のメモリサブバンクを有する、複数のメモリバンクと、各メモリサブバンクであって、各メモリサブバンクが、読み込みおよび書き込みきを処理するサブバンクコントローラを自らの位置に有する、各メモリサブバンクと、を含み得る。さらに、各メモリサブバンクは複数のメモリマットを含み得て、各メモリマットは複数のメモリセルを有し、マット行デコーダおよびマット列デコーダ(例えば、図12で示されるように)を有する。マット行デコーダおよびマット列デコーダはサブバンクコントローラから読み込み要求および書き込み要求を処理することができる。例えば、マットデコーダは、全ての要求を受信し、各マットの周知のアドレスレンジに基づいて(例えば、コンパレータを使用して)要求を処理するかどうかを決定することができる、またはマットデコーダは、サブバンク(またはバンク)コントローラによるマット選択に基づいて周知のアドレスレンジ内の要求を受信するだけでもよい。
[コントローラのデータ転送]
本開示のあらゆるメモリチップはさらに、プロセッササブユニットを使用してデータを共有することに加えて、メモリコントローラ(またはサブバンクコントローラまたはマットコントローラ)を使用してデータを共有することもできる。例えば、本開示のメモリチップは、複数のメモリバンク(例えば、SRAMバンク、DRAMバンク、またはその他同種のバンク)を含み得て、各メモリバンクが読み込みおよび書き込みを可能にするバンクコントローラ、行デコーダ、および列デコーダを自らの位置に有し、ならびに複数のバスが複数のバンクコントローラの各コントローラを複数のバンクコントローラの少なくとも1つの他のコントローラに接続する。複数のバスは、上記のようにプロセッササブユニットを接続するが、プロセッササブユニットを介さずに直接バンクコントローラを接続するバスに類似してもよい さらに、バスはバンクコントローラを接続するように記載されるが、バスは、追加または代替として、サブバンクコントローラおよび/またはマットコントローラを接続してもよい。
いくつかの実施形態では、1または複数のプロセッササブユニットに接続されるメモリバンクのメインバス上にデータ転送が割り込むことなく複数のバスにアクセスできる。したがって、メモリバンク(またはサブバンク)は、データを異なるメモリバンク(またはサブバンク)に送信する、またはデータを異なるメモリバンク(またはサブバンク)から送信するのと同じクロックサイクルで、データを対応するプロセッササブユニットに送信する、およびデータを対応するプロセッササブユニットから送信することができる。各コントローラが複数の他のコントローラに接続される実施形態では、コントローラは、データを送受信する他方のコントローラのうちもう一方のコントローラを選択するように構成可能にできる。いくつかの実施形態では、各コントローラは少なくとも1つの隣接するコントローラに接続することができる(例えば、空間的に隣接するコントローラのペアを互いに接続することができる)。
[メモリ回路内の余剰ロジック]
本開示は全体的に、オンチップデータ処理を行うプライマリ論理部分を備えるメモリチップに関する。メモリチップは、不良のプライマリ論理部分を取り替えてチップの製造歩留まりを高めることができる余剰論理部分を含み得る。したがって、チップは、論理部分の個別試験に基づいてメモリチップ内の論理ブロックの構成を可能にするオンチップコンポーネントを含み得る。論理部分専用の大面積のメモリチップは製造不具合の影響をより受けやすいためチップのこうした機能により歩留りが高まる可能性がある。例えば、大型余剰論理部分を備えるDRAMメモリチップは、歩留りを下げる製造問題の影響を受けやすい可能性がある。しかしながら、余剰論理部分を実装することにより、歩留りおよび信頼性が高まる可能性がある。なぜなら余剰論理部分を実装することにより、DRAMメモリチップの製造業者またはユーザはロジック部を完全に動作または完全に非動作にし、高度の並列処理能力を維持できるからである。開示された実施形態の説明を容易にするために、本明細書および本開示全体にわたり特定のメモリタイプ(DRAMなど)の事例を確認することができることに留意されたい。ただし、このような事例において、確認されたメモリタイプは限定することを意図するものではないことが理解されよう。むしろ、事例が本開示のある部分で明確に確認されない場合でも、DRAM、Flash、SRAM、ReRAM、PRAM、MRAM、ROM、またはその他のあらゆるメモリなどのメモリタイプを本開示の実施形態と組み合わせて使用することができる。
図13は、本開示の実施形態と一致する例示的なメモリチップ1300のブロック図である。メモリチップ1300はDRAMのメモリチップとして実装することができる。メモリチップ1300はさらに、例えばFlash、SRAM、ReRAM、PRAM、および/またはMRAMなど、あらゆるタイプの揮発性メモリまたは不揮発性メモリとして実装することができる。メモリチップ1300は、アドレスマネージャ1302と、複数のメモリバンク1304(a、a)から1304(z、z)までを含むメモリアレイ1304と、メモリ論理1306と、ビジネス論理1308と、余剰ビジネス論理1310と、が配置される基板1301を含み得る。メモリ論理1306およびビジネス論理1308はプライマリ論理ブロックを構成することができ、余剰ビジネス論理1310は余剰ブロックを構成することができる。さらに、メモリチップ1300は、非アクティブ化スイッチ1312およびアクティブ化スイッチ1314を含んでもよい設定スイッチを備え得る。非アクティブ化スイッチ1312およびアクティブ化スイッチ1314はさらに基板1301内に配置することができる。本願では、メモリ論理1306と、ビジネス論理1308と、余剰ビジネス論理1310はさらに総称して「論理ブロック」とも呼ばれ得る。
アドレスマネージャ1302は、行デコーダおよび列デコーダまたはその他の種類のメモリ補助装置を含み得る。この代わりに、またはこれに加えて、アドレスマネージャ1302はマイクロコントローラまたは処理ユニットを含み得る。
いくつかの実施形態では、図13で示されるように、メモリチップ1300は、複数のメモリブロックを2次元アレイで基板1301上に配置できる単一メモリアレイ1304を含み得る。しかしながら、その他の実施形態では、メモリチップ1300は複数のメモリアレイ1304を含み得て、メモリアレイ1304の各々はメモリブロックを異なる構成で配置することができる。例えば、メモリアレイ(メモリバンクとしても知られる)の少なくとも1つの中にあるメモリブロックは、アドレスマネージャ1302またはメモリ論理1306からメモリブロックに転送しやすくするために径方向分散で配置することができる。
ビジネス論理1308は、メモリ自体を管理するのに使用される論理と関係のないアプリケーションのインメモリーコンピューティングを実行するために使用することができる。例えば、ビジネス論理1308は、活性化関数として用いられる浮動演算、整数演算、またはMAC演算など人工知能(AI)に関連する関数を実装することができる。さらに、ビジネス論理1308は、とりわけmin、max、sort、countなどのデータベース関連関数を実装することができる。メモリ論理1306は、読み込み動作、書き込み動作、およびリフレッシュ動作を含むメモリ管理に関連するタスクを実行することができる(がこれらに限定されない)。したがって、ビジネス論理は、1または複数のバンクレベル、マットレベル、またはマットのグループのレベルに追加することができる。ビジネス論理1308は、1または複数のアドレス出力および1または複数のデータ入力/データ出力を有することができる。例えば、ビジネス論理1308は、行ライン\列ラインを介してアドレスマネージャ1302にアドレス指定することができる。ただし、ある実施形態では、論理ブロックは、追加または代替として、データ入力\データ出力によってアドレス指定できる。
余剰ビジネス論理1310はビジネス論理1308の複製であってもよい。さらに、余剰ビジネス論理1310は、小型ヒューズ\小型アンチヒューズを含み得る非アクティブ化スイッチ1312および/またはアクティブ化スイッチ1314に接続することができ、インスタンス(例えば、デフォルト値で接続されるインスタンス)の1つを無効または有効にする論理用に使用することができ、その他の論理ブロック(例えば、デフォルト値で切断されるインスタンス)の1つを有効にすることができる。いくつかの実施形態では、図15に関連して詳述されるように、余剰ブロックはビジネス論理1308などの論理ブロック内でローカルであってもよい。
いくつかの実施形態では、メモリチップ1300内の論理ブロックは、専用バスを備えるメモリアレイ1304のサブセットに接続することができる。例えば、メモリ論理1306、ビジネス論理1308、および余剰ビジネス論理1310のセットは、メモリアレイ1304内のメモリブロック(すなわち、メモリブロック1304(a、a)から1304(a、z)まで)の第1の行に接続することができる。この専用バスにより、関連付けられた論理ブロックは、例えばアドレスマネージャ1302を介して通信ラインを開放する要求なしにメモリブロックからのデータに迅速にアクセスできる。
複数のプライマリ論理ブロックの各々は、複数のメモリバンク1304の少なくとも1つに接続することができる。さらに、余剰ビジネスブロック1310などの余剰ブロックは、メモリインスタンス1304(a、a)-(z、z)の少なくとも1つに接続することができる。余剰ブロックは、メモリ論理1306またはビジネス論理1308などの複数のプライマリ論理ブロックの少なくとも1つを複製することができる。非アクティブ化スイッチ1312は複数のプライマリ論理ブロックの少なくとも1つに接続することができ、アクティブ化スイッチ1314は複数の余剰ブロックの少なくとも1つに接続することができる。
これらの実施形態では、複数のプライマリ論理ブロック(メモリ論理1306および/またはビジネス論理1308)の1つと関連付けられる不良を検出した際に、非アクティブ化スイッチ1312は複数のプライマリ論理ブロックの1つを無効にするように構成することができる。同時に、アクティブ化スイッチ1314は、複数のプライマリ論理ブロックの1つを複製する余剰論理ブロック1310などの複数の余剰ブロックの1つを有効にするように構成することができる。
さらに、総称して「設定スイッチ」と呼ばれ得るアクティブ化スイッチ1314および非アクティブ化スイッチ1312は、スイッチの状態を構成する外部入力を含み得る。例えば、アクティブ化スイッチ1314は、外部入力におけるアクティブ化信号がスイッチを閉じた状態にさせるように構成することができ、非アクティブ化スイッチ1312は、外部入力におけるアクティブ化信号がスイッチを開けた状態にさせるように構成することができる。いくつかの実施形態では、1300内の全ての設定スイッチは、関連付けられた論理ブロックが機能的であり、信号が外部入力に加えられたことを試験が示した後で、デフォルト値で非アクティブ化にできる、およびアクティブ化または有効にできる。あるいは、場合によっては、1300内の全ての設定スイッチは、関連付けられた論理ブロックが機能的でなく、非アクティブ化信号が外部入力に加えられたことを試験が示した後で、デフォルト値で有効にできる、および非アクティブまたは無効にできる。
設定スイッチが最初に有効になるかまたは無効になるかにかかわらず、関連付けられた論理ブロックと関連付けられる不良を検出した際、設定スイッチは関連付けられた論理ブロックを無効にできる。設定スイッチが最初に有効になる場合、関連付けられた論理ブロックを無効にするために設定スイッチの状態を無効になるよう変更できる。設定スイッチが最初に無効になる場合、関連付けられた論理ブロックを無効にするために設定スイッチの状態を無効状態のままにできる。動作性試験の結果は、ある論理ブロックが動作しない、または論理ブロックが一定の規格内で動作しないことを示す場合がある。その場合、論理ブロックを無効にでき、論理ブロックに対応する設定スイッチを有効にしない。
いくつかの実施形態では、設定スイッチは2つ以上の論理ブロックに接続することができ、異なる論理ブロックのどちらかを選ぶように構成することができる。例えば、設定スイッチはビジネス論理1308および余剰論理ブロック1310の両方に接続することができる。設定スイッチは余剰論理ブロック1310を有効にし、ビジネス論理1308を無効にすることができる。
この代わりに、またはこれに加えて、複数のプライマリ論理ブロック(メモリ論理1306および/またはビジネス論理1308)の少なくとも1つは、複数のメモリバンクまたはメモリインスタンス1304のサブセットに第1の専用接続で接続することができる。次いで、複数のプライマリ論理ブロックの少なくとも1つを複製する複数の余剰ブロック(余剰ビジネス論理1310など)の少なくとも1つは、同じ複数のメモリバンクまたはメモリインスタンス1304のサブセットに第2の専用接続で接続することができる。
さらに、メモリ論理1306は、ビジネス論理1308とは異なる機能および能力を有することができる。例えば、メモリ論理1306はメモリバンク1304内で読み込み動作および書き込み動作を可能にするように設計することができ、ビジネス論理1308はインメモリーコンピューティングを実行するように設計することができる。したがって、ビジネス論理1308が第1のビジネス論理ブロックを含み、ビジネス論理1308が第2のビジネス論理ブロック(余剰ビジネス論理1310など)を含む場合、不良のビジネス論理1308を切断し、あらゆる能力を失うことなく余剰ビジネス論理1310を再接続させることが可能である。
いくつかの実施形態では、設定スイッチ(非アクティブ化スイッチ1312およびアクティブ化スイッチ1314を含む)は、ヒューズ、アンチヒューズ、またはプログラマブルデバイス(ワンタイムプログラマブルデバイスを含む)、またはその他の不揮発性メモリで実装することができる。
図14は、本開示の実施形態と一致する例示的な余剰論理ブロックセット1400のブロック図である。いくつかの実施形態では、余剰論理ブロックセット1400は基板1301内に配置することができる。余剰論理ブロックセット1400は、それぞれスイッチ1312および1314に接続されるビジネス論理1308および余剰ビジネス論理1310の少なくとも1つを含み得る。さらに、ビジネス論理1308および余剰ビジネス論理1310はアドレスバス1402およびデータバス1404に接続することができる。
いくつかの実施形態では、図14で示されるように、スイッチ1312および1314は論理ブロックをクロックノードに接続することができる。この方法では、設定スイッチはクロック信号から論理ブロックを連結または非連結にし、論理ブロックを効率的にアクティブまたは非アクティブにすることができる。ただし、他の実施形態では、スイッチ1312および1314は、アクティブまたは非アクティブにするために論理ブロックを他のノードに接続することができる。例えば、設定スイッチは、論理ブロックを電圧供給ノード(例えば、VCC)またはグランドノード(例えば、GND)、もしくはクロック信号に接続することができる。この方法では、設定スイッチは論理ブロックを有効または無効にすることができる。なぜなら設定スイッチは開回路を作ることができる、または論理ブロック電源を切ることができるためである。
いくつかの実施形態では、図14で示されるように、アドレスバス1402およびデータバス1404は論理ブロックの両側にあってもよく、論理ブロックはバスの各々に並列接続される。この方法では、論理ブロックセット1400によって、異なるオンチップコンポーネントの転送を容易にできる。
いくつかの実施形態では、複数の非アクティブ化スイッチ1312の各々が複数のプライマリ論理ブロックの少なくとも1つをクロックノードと連結させることができ、複数のアクティブ化スイッチ1314の各々が複数の余剰ブロックの少なくとも1つをクロックノードと連結させることができ、シンプルなアクティブ化機構\非アクティブ化機構としてクロックノードの接続\切断が可能になる。
余剰論理ブロックセット1400の余剰ビジネス論理1310により、設計者は、エリアおよびルーティングに基づいて、複製する価値があるブロックを選ぶことが可能になる。例えば、チップ設計者は、より大型なブロックはかなりエラーを犯しやすいという理由で、複製用のより大型なブロックを選択する場合がある。そのため、チップ設計者は、大型論理ブロックを複製することを決定する場合がある。一方、設計者は、より小型な論理ブロックは大幅に空きを無くすことなく容易に複製されるという理由で、より小型な論理ブロックを複製することを好む場合がある。さらに、設計者は、図14における構成を利用して、領域ごとのエラー統計に応じて、論理ブロックの複製を容易に選択できる。
図15は、本開示の実施形態と一致する例示的な論理ブロックのブロック図である。論理ブロックは、ビジネス論理1308および/または余剰ビジネス論理1310であってもよい。ただし、他の実施形態では、例示的な論理ブロックは、メモリ論理1306またはメモリチップ1300のその他のコンポーネントを記載してもよい。
論理ブロック1500は、余剰ロジックが小型プロセッサパイプライン内で使用されるさらに別の実施形態を示す。論理ブロック1500は、レジスタ1508と、フェッチ回路1504と、デコーダ1506と、ライトバック回路1518と、を含み得る。さらに、論理ブロック1500は、計算ユニット1510および複製された計算ユニット1512を含んでもよい。ただし、他の実施形態では、論理ブロック1500は、コントローラパイプラインを含まないその他のユニットを含み得るが、要求されるビジネス論理を含む単発な処理要素を含み得る。
計算ユニット1510および複製された計算ユニット1512は、デジタル計算を実行することができるデジタル回路を含み得る。例えば、計算ユニット1510および複製された計算ユニット1512は、2進数算術演算およびビット単位演算を実行する算術論理演算ユニット(ALU)を含み得る。あるいは、計算ユニット1510および複製された計算ユニット1512は、浮動小数点数で演算を行う浮動小数点ユニット(FPU)を含み得る。さらに、いくつかの実施形態では、計算ユニット1510および複製された計算ユニット1512は、とりわけmin、max、countなどのデータベース関連関数、および比較演算を実装することができる。
いくつかの実施形態では、図15で示されるように、計算ユニット1510および複製された計算ユニット1512はスイッチング回路1514および1516に接続することができる。スイッチング回路がアクティブ化されると、スイッチング回路は計算ユニットを有効または無効にできる。
論理ブロック1500では、複製された計算ユニット1512は計算ユニット1510を複製できる。さらに、いくつかの実施形態では、(総称してローカルロジックユニットと呼ばれる)レジスタ1508、フェッチ回路1504、デコーダ1506、およびライトバック回路1518は、計算ユニット1510よりもかなり小型であってもよい。より大型な要素は製造時にかなり問題になりやすいという理由で、設計者は、より小型のユニット(例えばローカル論理ユニット)の代わりに、より大型のユニット(例えば計算ユニット1510)の複製を決定する場合がある。しかしながら、履歴歩留りおよび誤り率に応じて、設計者は、大型のユニット(またはブロック全体)の追加または代替としてローカル論理ユニットの複製を選んでもよい。例えば、計算ユニット1510はレジスタ1508、フェッチ回路1504、デコーダ1506、およびライトバック回路1518よりも大型であるため、かなりエラーを犯しやすくなる場合がある。設計者は、論理ブロック1500またはブロック全体におけるその他の要素の代わりに計算ユニット1510の複製を選んでもよい。
論理ブロック1500は複数のローカル設定スイッチを含み得て、複数のローカル設定スイッチの各々が計算ユニット1510または複製された計算ユニット1512の少なくとも1つに接続される。不良が計算ユニット1510内で検出された場合に、ローカル設定スイッチは計算ユニット1510を無効にし、複製された計算ユニット1512を有効にするように構成することができる。
図16は、本開示の実施形態と一致する、バスと接続された例示的な論理ブロックのブロック図を示す。いくつかの実施形態では、論理ブロック1602(メモリ論理1306、ビジネス論理1308、または余剰ビジネス論理1310を表し得る)は、互いに独立してもよく、バスを介して接続してもよく、およびそれら論理ブロックを具体的にアドレス指定することによって外部にアクティブ化してもよい。例えば、メモリチップ1300は、多くの論理ブロックを含み得て、各論理ブロックはID番号を有する。ただし、他の実施形態では、論理ブロック1602は、1または複数の複数のメモリ論理1306、ビジネス論理1308、または余剰ビジネス論理1310から構成される大型のユニットを表し得る。
いくつかの実施形態では、論理ブロック1602の各々は、その他の論理ブロック1602と余剰であってもよい。全てのブロックがプライマリブロックまたは余剰ブロックとして動作できるこの完全余剰性は、設計者が不良ユニットを切断し、チップ全体の機能を維持できるため、製造歩留まりを高めることができる。例えば、全ての複製ブロックが同様のアドレスバスおよびデータバスに接続することができるため、設計者は、エラーを犯しやすいロジック領域を無効にするだけでなく同様の計算能力を維持する能力も有することができる。例えば、論理ブロック1602の当初の数は、ターゲット機能の数よりも多くてよい。次いで、いくつかの論理ブロック1602を無効にしても、ターゲット機能に影響を与えることはないだろう。
論理ブロックに接続されるバスは、アドレスバス1614、コマンドライン1616、およびデータライン1618を含み得る。図16で示されるように、論理ブロックの各々はバス内の各ラインから独立して接続できる。ただし、いくつかの実施形態では、論理ブロック1602は階層構造で接続されて転送しやすくできる。例えば、バス内の各ラインは、ラインを異なる論理ブロック1602に回すマルチプレクサに接続することができる。
いくつかの実施形態では、チップ内部構造を知らずともユニットを有効および無効にすることで変わる可能性がある外部へのアクセスを可能にするために、論理ブロックの各々はヒューズ付きの識別1604などのヒューズ付きIDを含み得る。ヒューズ付きの識別1604は、IDを決定するスイッチ(ヒューズなど)のアレイを含んでもよく、管理回路に接続してもよい。例えば、ヒューズ付きの識別1604はアドレスマネージャ1302に接続することができる。あるいは、ヒューズ付きの識別1604は上位のメモリアドレスユニットに接続してもよい。これらの実施形態では、ヒューズ付きの識別1604は特定のアドレス用に構成可能にできる。例えば、ヒューズ付きの識別1604は、管理回路から受信された命令に基づいて最終IDを決定するプログラマブルデバイス、不揮発性デバイスを含み得る。
メモリチップ上の分散型プロセッサは、図16で示される構成で設計することができる。チップ起動時または工場試験時にビルトインセルフテスト(BIST)として実行される試験手順は、試験プロトコルを通過する複数のプライマリ論理ブロック内のブロック(メモリ論理1306およびビジネス論理1308)に実行ID番号を割り当てることができる。試験手順はさらに、試験プロトコルを通過しない複数のプライマリ論理ブロック内のブロックに不正ID番号を割り当てることができる。試験手順はさらに、試験プロトコルを通過する複数の余剰ブロック内のブロック(余剰論理ブロック1310)に実行ID番号を割り当てることができる。余剰ブロックが不合格のプライマリ論理ブロックを取り替えるため、実行ID番号が割り当てられた複数の余剰ブロック内のブロックが、不正ID番号が割り当てられた複数のプライマリ論理ブロック内のブロック以上となり、これによってブロックが無効になる。さらに、複数のプライマリ論理ブロックの各々および複数の余剰ブロックの各々が、少なくとも1つのヒューズ付きの識別1604を含み得る。さらに、図16で示されるように、論理ブロック1602を接続するバスは、コマンドライン、データライン、およびアドレスラインを含み得る。
ただし、他の実施形態では、バスに接続される全ての論理ブロック1602は、ID番号が無い場合無効になり始めるであろう。1つ1つ試験が行われ、有効な各論理ブロックは実行ID番号を得ることになる。機能しないこうした論理ブロックは不正IDを有した状態のままとなり、こうしたブロックを無効にするだろう。このように、余剰論理ブロックは、試験プロセス時に不良になることがわかるブロックを取り替えることによって製造歩留まりを高めることができる。
アドレスバス1614は、複数のメモリバンクの各々、複数のプライマリ論理ブロックの各々、および複数の余剰ブロックの各々に管理回路を連結することができる。これらの接続により、管理回路は、プライマリ論理ブロック(例えばビジネス論理1308)と関連付けられる不良を検出した際に、無効アドレスを複数のプライマリ論理ブロックの1つに割り当てることができ、有効アドレスを複数の余剰ブロックの1つに割り当てることが可能となる。
例えば、図16のA)で示されるように、不正IDは全ての論理ブロック1602(a)-(c)(例えば、アドレス0xFFF)で構成される。試験後、論理ブロック1602(a)および1602(c)には機能性があり、論理ブロック1602(b)には機能性がないと実証された。図16のA)では、陰影のない論理ブロックは機能性試験を正常に通過した論理ブロックを表すことができ、陰影がある論理ブロックは機能性試験を通過しなかった論理ブロックを表し得る。次いで、試験手順は、機能性がある論理ブロックに対しては不正IDを正当IDに変え、機能性がない論理ブロックに対しては不正IDのままにする。一例として、図16のA)では、論理ブロック1602(a)および1602(c)のアドレスは、それぞれ0xFFFから0x001および0x002に変わる。一方、論理ブロック1602(b)のアドレスは、不正アドレスである0xFFFのままである。いくつかの実施形態では、IDは、対応するヒューズ付きの識別1604をプログラミングすることによって変わる。
論理ブロック1602の試験結果が異なれば、異なる構成がもたらされる場合がある。例えば、図16のB)で示されるように、アドレスマネージャ1302は初期状態では、不正IDを全ての論理ブロック1602(すなわち、0xFFF)に割り当ててもよい。しかし、試験結果は、論理ブロック1602(a)および1602(b)の両方に機能性があることを示す場合がある。こうした場合、論理ブロック1602(c)の試験は不要になる可能性がある。なぜなら、メモリチップ1300には2つの論理ブロックだけが必要になる場合があるからである。そのため、試験リソースを最小限にするために、メモリチップ1300の製品定義が必要とする機能性がある論理ブロックの最低限の数に従って論理ブロックを試験するだけでよく、その他の論理ブロックは試験しないままの状態にする。図16のB)はさらに、機能性試験を通過した試験された論理ブロックを表す陰影のない論理ブロックと、試験されていない論理ブロックを表す陰影のある論理ブロックと、を示す。
これらの実施形態では、製造テスタ(外部または内部、自動または手動)、または、チップ起動時にビルトインセルフテスト(BIST)を実行するコントローラは、機能性がある試験された論理ブロックに対しては不正IDを実行IDに変え、未試験の論理ブロックに対しては不正IDのままにすることができる。一例として、図16のB)では、論理ブロック1602(a)および1602(b)のアドレスは、それぞれ0xFFFから0x001および0x002に変わる。一方、未試験の論理ブロック1602(c)のアドレスは、不正アドレス0xFFFのままである。
図17は、本開示の実施形態と一致する、並列接続された例示的なユニット1702および1712のブロック図である。図17はシステム全体またはチップを表し得る。あるいは、図17は、他の機能性ブロックを含むチップ内のブロックを表し得る。
ユニット1702および1712は、メモリ論理1306および/またはビジネス論理1308など複数の論理ブロックを含む完全ユニットを表し得る。これらの実施形態では、ユニット1702および1712はさらに、アドレスマネージャ1302など、動作を実行するのに必要な要素を含み得る。ただし、他の実施形態では、ユニット1702および1712は、ビジネス論理1308または余剰ビジネス論理1310などの論理ユニットを含んでもよい。
図17は、ユニット1702および1712がそれ自体の間で通信する必要がある場合の実施形態を示す。この場合、ユニット1702および1712は直列に接続することができる。ただし、機能していないユニットは、論理ブロック間の導通状態を中断する場合がある。したがって、不良によりユニットを無効にする必要がある場合、ユニット間の接続はバイパスオプションを含み得る。バイパスオプションはさらに、バイパスされたユニット自体の一部であってもよい。
図17では、ユニットは直列に接続することができ(例えば、1702(a)-(c))、不合格のユニット(例えば、1702(b))が不良である場合にバイパスできる。ユニットはさらにスイッチング回路と並列に接続してもよい。例えば、いくつかの実施形態では、ユニット1702および1712は、図17で示されるように、スイッチング回路1722および1728と接続することができる。図17で示される例では、ユニット1702(b)は不良である。例えば、ユニット1702(b)は回路機能の試験を通過しない。したがって、ユニット1702(b)は、例えば、アクティブ化スイッチ1314(図17では示されない)を使用して無効にでき、および/またはスイッチング回路1722(b)はユニット1702(b)をバイパスするようにアクティブ化され、論理ブロック間の接続を維持することができる。
したがって、複数の基本ユニットが直列に接続される場合、複数のユニットの各々は並列スイッチと並列に接続することができる。複数のユニットの1つと関連付けられる不良を検出した際に、複数のユニットの1つに接続される並列スイッチがアクティブ化され、複数のユニットのうち2つを接続することができる。
他の実施形態では、図17で示されるように、スイッチング回路1728は、1サイクル遅延または複数サイクル遅延を引き起こすことになる1または複数のサンプリング点を含み、ユニットの異なるライン間の同期を維持することができる。ユニットが無効になる場合、隣接する論理ブロック間の接続をショートさせることで、その他の計算で同期エラーが生成される場合がある。例えば、タスクがAラインとBラインの両方からデータを要求し、AおよびBの各々が独立した一連のユニットによって搬送される場合、ユニットを無効にすることでさらなるデータ管理が必要になるライン間の非同期が生じるであろう。非同期が生じないようにするために、サンプル回路1730は、無効ユニット1712(b)によって引き起こされる遅延をシミュレートすることができる。ただし、いくつかの実施形態では、並列スイッチはサンプル回路1730の代わりにアンチヒューズを含んでもよい。
図18は、本開示の実施形態と一致する、2次元アレイで接続された例示的なユニットのブロック図である。図18はシステム全体またはチップを表し得る。あるいは、図18は、他の機能性ブロックを含むチップ内のブロックを表し得る。
ユニット1806は、メモリ論理1306および/またはビジネス論理1308など複数の論理ブロックを含む自律ユニットを表し得る。ただし、他の実施形態では、ユニット1806はビジネス論理1308などのロジックユニットを表し得る。図18の考察は、可能な限り、図13(例えば、メモリチップ1300)で確認される上記の要素を指してもよい。
図18で示されるように、ユニットは、(1または複数のメモリ論理1306、ビジネス論理1308、または余剰ビジネス論理1310を含むまたは表し得る)ユニット1806が配電箱1808および接続盤1810を介して相互接続される2次元アレイで配置することができる。さらに、2次元アレイの構成を制御するために、2次元アレイは2次元アレイの周辺に入力/出力ブロック1804を含み得る。
接続盤1810は、入力/出力ブロック1804から入力される信号に応答できるプログラマブルデバイスおよび再構成可能デバイスであってもよい。例えば、接続盤は、ユニット1806からの複数の入力ピンを含み得て、さらに配電箱1808に接続することができる。あるいは、接続盤1810は、プログラマブルロジックセルのピンをルーティングトラックと接続するスイッチグループを含んでもよく、配電箱1808は異なるトラックを接続するスイッチグループを含んでもよい。
いくつかの実施形態では、接続盤1810および配電箱1808は、スイッチ1312および1314などの設定スイッチで実装することができる。このような実施形態では、接続盤1810および配電箱1808は、チップ起動時に実行される製造テスタまたはビルトインセルフテスト(BIST)によって構成することができる。
いくつかの実施形態では、接続盤1810および配電箱1808は、ユニット1806が回路機能の試験を受けた後で構成することができる。このような実施形態では、入力/出力ブロック1804は、試験信号をユニット1806に送信するのに使用することができる。試験結果に応じて、入力/出力ブロック1804は、試験プロトコルを通過しないユニット1806を無効にし、試験プロトコルを通過するユニット1806を有効にするように接続盤1810および配電箱1808を構成するプログラミング信号を送信することができる。
このような実施形態では、複数のプライマリ論理ブロックおよび複数の余剰ブロックは2次元格子内の基板上に配置することができる。したがって、複数の基本ユニット1806の各々、および余剰ビジネス論理1310などの複数の余剰ブロックの各々は、配電箱1808と相互接続することができ、入力ブロックは2次元格子の各ラインおよび各列の周辺に配置することができる。
図19は、本開示の実施形態と一致する、複雑な接続における例示的なユニットのブロック図である。図19はシステム全体を表し得る。あるいは、図19は他の機能性ブロックを含むチップ内のブロックを表し得る。
図19の複雑な接続は、ユニット1902(a)-(f)および設定スイッチ1904(a)-(h)を含む。ユニット1902は、メモリ論理1306および/またはビジネス論理1308などの複数の論理ブロックを含む自律ユニットを表し得る。ただし、他の実施形態では、ユニット1902は、メモリ論理1306、ビジネス論理1308、または余剰ビジネス論理1310などの論理ユニットを表し得る。設定スイッチ1904は、任意の非アクティブ化スイッチ1312およびアクティブ化スイッチ1312を含み得る。
図19で示されるように、複雑な接続は2面のユニット1902を含んでもよい。例えば、複雑な接続は、z軸で分離された2つの独立基板を含み得る。この代わりに、またはこれに加えて、ユニット1902は基板の2つの面に配置することができる。例えば、メモリチップ1300の領域を小さくするために、基板1301は、2つの面を重ねて配置することができ、基板1301は3次元で配置される設定スイッチ1904と接続してもよい。設定スイッチは、非アクティブ化スイッチ1312および/またはアクティブ化スイッチ1314を含み得る。
基板の第1の面は「メイン」ユニット1902を含み得る。これらのブロックはデフォルト値で有効にできる。このような実施形態では、第2の面は「余剰」ユニット1902を含み得る。これらのユニットはデフォルト値で無効にできる。
いくつかの実施形態では、設定スイッチ1904はアンチヒューズを含み得る。したがって、ユニット1902を試験した後、ユニットが異なる面にあったとしても、いくつかのアンチヒューズを「常時接続」された無効の選択されたユニット1902に切り替えることによって、ブロックを機能性ユニットのタイル内に接続することができる。図19で示される例では、「メイン」ユニットの1つ(ユニット1902(e))は機能していない。図19は、機能性がない、または未試験のブロックを陰影有りのブロックとして表示することができ、試験済みまたは機能性のあるブロックを陰影無しにできる。したがって、設定スイッチ1904は、異なる面の論理ブロックの1つ(例えば、ユニット1902(f))がアクティブになるように構成することができる。この方法では、メイン論理ブロックの1つが不良だったとしても、予備の論理ユニットに取って代えることによってメモリチップは依然として機能する。
図19はさらに、メイン論理ブロックが機能的であるため、第2の面におけるユニット1902の1つ(すなわち、1902(c))が未試験もしくは有効である様子を示す。例えば、図19では、メインユニット1902(a)および1902(d)は両方とも機能性試験を通過した。したがって、ユニット1902(c)は未試験もしくは有効であった。そのため、図19は、試験結果に応じてアクティブになる論理ブロックを明確に選択する能力を示す。
いくつかの実施形態では、図19で示されるように、第1の面における全てのユニット1902は、対応する予備ブロックまたは余剰ブロックを有することができるわけではない。ただし、他の実施形態では、全てのユニットは、全てのユニットがプライマリまたは余剰の両方である互いに余剰である完全余剰性であってもよい。さらに、図19で示されるスター型接続形態のネットワークを採用できる実装もあれば、並列接続、直列接続を用いる、および/または異なる要素を並列または直列で設定スイッチと連結させることができる実装もある。
図20は、本開示の実施形態と一致する、余剰ブロックを有効にするプロセス2000を示す例示的なフローチャートである。有効にするプロセス2000は、メモリチップ1300で、および特にDRAMメモリチップで実装することができる。いくつかの実施形態では、プロセス2000は、メモリチップ基板上の複数の論理ブロックの各々に少なくとも1つの回路機能があるかを試験する段階と、試験結果に基づいて複数のプライマリ論理ブロック内に不良論理ブロックを識別する段階と、メモリチップ基板上の少なくとも1つの余剰ブロックまたは追加の論理ブロックに少なくとも1つの回路機能があるかを試験する段階と、外部信号を非アクティブ化スイッチに印加することによって少なくとも1つの不良論理ブロックを無効にする段階と、外部信号をアクティブ化スイッチに印加することによって少なくとも1つの余剰ブロックを有効にする段階と、アクティブ化スイッチが少なくとも1つの余剰ブロックと接続され、メモリチップ基板上に配置される段階と、を備える。図20の記載は、プロセス2000の各段階を以下でさらに詳述している。
プロセス2000は、ビジネスブロック1308などの複数の論理ブロック、および(例えば、余剰ビジネスブロック1310などの)複数の余剰ブロックを試験する段階を含み得る。試験する段階は、例えば、オンウェーハ試験用のプロービングステーションを用いたパッケージング化する段階の前であってもよい。ただし、有効にする段階2000はさらに、パッケージング化する段階の後に実行してもよい。
段階2002における試験は、試験信号の有限数列をメモリチップ1300内のあらゆる論理ブロック、またはメモリチップ1300内の論理ブロックのサブセットに加える段階を含み得る。試験信号は、0または1を生み出すことが見込まれる計算を要求する段階を含んでもよい。他の実施形態では、試験信号は、特定のアドレスをメモリバンク内に読み込むこと、または、特定のメモリバンク内に書き込むことを要求することができる。
試験技術は、段階2002における反復プロセス時に論理ブロックの応答を試験するように実装することができる。例えば、データを書き込む命令をメモリバンク内に送信し、次いで書き込まれたデータの完全性を検証することによって論理ブロックを試験する段階を含んでもよい。いくつかの実施形態では、試験する段階は、データを逆にしてこのアルゴリズムを反復する段階を含み得る。
代替実施形態では、段階2002の試験する段階は、論理ブロックのモデルを実行して、試験命令のセットに基づいてメモリのターゲット画像を生成する段階を含み得る。次いで、同じ命令順序をメモリチップ内の論理ブロックに実行することができ、その結果を記録してもよい。さらに模擬のメモリの残像を試験から撮像した画像と比較して、あらゆる不一致が出たら不合格としてフラグを立てることができる。
あるいは、段階2002では、試験する段階は、診断プログラムを生成するが、結果は必ずしも予想されないシャドウモデルを行う段階を含んでもよい。代わりに、シャドウモデルを利用した試験は、メモリチップ上と模擬上の両方に並列に実行することができる。例えば、メモリチップ内の論理ブロックが命令またはタスクを完了すると、同じ命令を実行するよう模擬に知らせることができる。メモリチップ内の論理ブロックが命令を終了させるとすぐに、2つのモデルのアーキテクチャ状態を比較することができる。不一致があれば、その後不合格にフラグを立てる。
いくつかの実施形態では、(例えば、メモリ論理1306、ビジネス論理1308、または余剰ビジネス論理1310の各々を含む)全ての論理ブロックは、段階2002で試験してもよい。ただし、他の実施形態では、論理ブロックのサブセットだけが異なる試験回数で試験することができる。例えば、1回目の試験では、メモリ論理1306および関連付けられたブロックだけを試験することができる。2回目の試験では、ビジネス論理1308および関連付けられたブロックだけを試験することができる。3回目の試験では、1回目2回目の試験結果に応じて、余剰ビジネス論理1310と関連付けられた論理ブロックを試験することができる。
プロセス2000は段階2004に続くことができる。段階2004では、不良論理ブロックを識別することができ、さらに不良余剰ブロックも識別することができる。例えば、段階2002の試験を通過しない論理ブロックを、段階2004で不良ブロックとして識別することができる、ただし、他の実施形態では、いくつかの不良論理ブロックだけを最初に識別することができる。例えば、いくつかの実施形態では、ビジネス論理1308と関連付けられた論理ブロックだけを識別することができ、不良余剰ブロックを不良論理ブロックに替えるように求められた場合に不良余剰ブロックを識別するだけである。さらに、不良ブロックを識別する段階は、識別された不良ブロックに関する識別情報をメモリバンクまたは不揮発性メモリ上に書き込む段階を含んでもよい。
段階2006では、不良論理ブロックを無効にすることができる。例えば、コンフィギュレーション回路を使用して、不良論理ブロックをクロックノード、グラウンドノード、および/またはパワーノードから切断することによって不良論理ブロックを無効にすることができる。あるいは、不良論理ブロックを回避する配置で接続盤を構成することによって不良論理ブロックを無効にすることができる。しかし、他の実施形態では、アドレスマネージャ1302から不正アドレスを受信することによって不良論理ブロックを無効にしてもよい。
段階2008では、不良論理ブロックを複製する余剰ブロックを識別することができる。いくつかの論理ブロックが不合格になったとしてもメモリチップの同機能を維持するために、段階2008では、不良論理ブロックを複製でき利用可能である余剰ブロックを識別することができる。例えば、ベクトル乗算を実行する論理ブロックが不良であると判定された場合、段階2008では、アドレスマネージャ1302またはオンチップコントローラは、ベクトル乗算をさらに実行する利用可能な余剰論理ブロックを識別することができる。
段階2010では、段階2008で識別された余剰ブロックを有効にすることができる。段階2006の無効にする動作とは逆に、段階2010では、識別された余剰ブロックをクロックノード、グラウンドノード、および/またはパワーノードに接続することによって識別された余剰ブロックを有効にすることができる。あるいは、識別された余剰ブロックを接続する配置で接続盤を構成することによって、識別された余剰ブロックを有効にすることができる。しかし、他の実施形態では、試験手順実行時間で実行アドレスを受信することによって、識別された余剰ブロックを有効にすることができる
図21は、本開示の実施形態と一致する、アドレス割り当てプロセス2100を示す例示的なフローチャートである。アドレス割り当てプロセス2100は、メモリチップ1300および特にダイナミックランダムアクセスメモリ(DRAM)メモリチップに実装することができる。図16に関連して記載されるように、いくつかの実施形態では、メモリチップ1300内の論理ブロックはデータバスに接続することができ、アドレス認証を有することができる。プロセス2100は、不良論理ブロックを無効にし、試験を通過する論理ブロックを有効にするアドレス割り当て方法を記載する。プロセス2100で記載される段階は、チップ起動時に実行される製造テスタまたはビルトインセルフテスト(BIST)によって実行される段階として記載される。ただし、メモリチップ1300の他のコンポーネントおよび/または外部デバイスはさらにプロセス2100の1または複数の段階を実行することができる。
段階2102では、製造テスタは、チップレベルで各論理ブロックに不正IDを割り当てることによって全ての論理ブロックおよび全ての余剰ブロックを無効にすることができる。
段階2104では、製造テスタは論理ブロックの試験プロトコルを実行することができる。例えば、製造テスタは、段階2002で記載される試験方法をメモリチップ1300内の1または複数の論理ブロックに対して実行することができる。
段階2106では、段階2104における試験結果に応じて、製造テスタは、論理ブロックが不良であるか否かを決定することができる。論理ブロックが不良でない場合(段階2106でnoの場合)、段階2108で、アドレスマネージャは実行IDを試験済みの論理ブロックに割り当てることができる。論理ブロックが不良である場合(段階2106でyesの場合)、段階2110で、アドレスマネージャ1302は不正IDを不良論理ブロックに残す場合がある。
段階2112では、アドレスマネージャ1302は、不良論理ブロックを複製する余剰論理ロックを選択することができる。いくつかの実施形態では、不良論理ブロックを複製する余剰論理ブロックは、不良論理ブロックと同じコンポーネントおよび同じ接続を有することができる。ただし、他の実施形態では、余剰論理ブロックは、不良論理ブロックと異なるコンポーネントおよび/または異なる接続を有してもよいが、同等の動作を実行することができる。例えば、不良論理ブロックがベクトル乗算を実行するように設計される場合、選択された余剰論理ブロックが不良ユニットと同じアーキテクチャを有さない場合でも、選択された余剰論理ブロックも同様にベクトル乗算を実行することができる。
段階2114では、アドレスマネージャ1302が余剰ブロックを試験することができる。例えば、製造テスタは、段階2104で適用された試験手法を、識別された余剰ブロックに適用することができる。
段階2116では、段階2114における試験結果に基づいて、製造テスタは、余剰ブロックが不良であるか否かを決定することができる。段階2118では、余剰ブロックが不良でない場合(段階2116でnoの場合)、製造テスタは実行IDを、識別された余剰ブロックに割り当てることができる。いくつかの実施形態では、プロセス2100は、段階2118の後に段階2104に戻り、メモリチップ内の全ての論理ブロックを試験するために反復ループを作ってもよい。
製造テスタは、余剰ブロックが不良であることを決定する場合(段階2116でyesの場合)、段階2120で、製造テスタは、追加の余剰ブロックが利用可能であるかを決定することができる。例えば、製造テスタは、利用可能な余剰論理ブロックに関する情報を備えるメモリバンクに問い合わせることができる。余剰論理ブロックが利用可能である場合(段階2120でyesの場合)、製造テスタは段階2112に戻り、不良論理ブロックを複製する新しい余剰論理ブロックを識別することができる。余剰論理ブロックが利用可能でない場合(段階2120でnoの場合)、段階2122で、製造テスタはエラー信号を生成することができる。エラー信号は、不良論理ブロックおよび不良余剰ブロックに関する情報を含み得る。
[連結メモリバンク]
本開示の実施形態はさらに、高性能分散型プロセッサを含み得る。この高性能分散型プロセッサは、メモリバンクと処理ユニットとをインタフェースするメモリコントローラを含み得る。高性能分散型プロセッサは、計算するために処理ユニットへのデータの供給を促進するように構成可能にできる。例えば、処理ユニットがタスクを実行する2つのデータインスタンスを必要とする場合、メモリコントローラは、通信ラインが2つのデータインスタンスからの情報に独立してアクセスできるように構成することができる。本開示のメモリアーキテクチャは、複雑なキャッシュメモリのスキームおよび複雑なレジスタファイルのスキームと関連付けられるハードウェア要件を最小限にしようとする。通常、プロセッサチップは、コアがレジスタと直接機能できるようにするキャッシュ階層を含んでいる。しかしながら、キャッシュ操作はかなりのダイ領域を必要とし、追加電力を消費する。本開示のメモリアーキテクチャは、論理コンポーネントをメモリ内に追加することによってキャッシュ階層を使用していない。
本開示のアーキテクチャはさらに、メモリバンク内に戦略的な(あるいは最適化された)データ配置を可能にする。メモリバンクが単一ポートおよび高遅延を有しているとしても、本開示のメモリアーキテクチャであればメモリバンクの異なるブロック内にデータを戦略的に配置することによって高性能を可能にし、メモリアクセスボトルネックを回避できる。途切れることなくデータを処理ユニットに流すために、コンパイルを最適化する段階は、メモリバンク内に専用タスク向けにどのようにデータを記憶すべきか、またはメモリバンク内に汎用タスク向けにどのようにデータを記憶すべきかを決定することができる。次いで、処理ユニットとメモリバンクとをインタフェースするメモリコントローラは、専用処理ユニットが演算を実行するデータを要求する場合に、専用処理ユニットにアクセス権を与えるように構成することができる。
メモリチップの構成は、処理ユニット(例えば、構成マネージャ)または外部インタフェースによって実行することができる。メモリチップの構成はさらに、コンパイラまたはその他のソフトウェアツールによって書き込むことができる。さらに、メモリコントローラの構成は、メモリバンク内の利用可能なポートおよびメモリバンク内のデータ編成に基づいてもよい。
したがって、本開示のアーキテクチャは、異なるメモリブロックからの絶え間ないデータフローまたは同時情報を処理ユニットに提供することができる。この方法では、遅延ボトルネックまたはキャッシュメモリ要件を回避することによってメモリ内の計算タスクを迅速に処理することができる。
さらに、メモリチップ内に記憶されるデータは、コンパイルを最適化する段階に基づいて配置することができる。コンパイルによって、遅延に関連付けられるメモリ待ち時間なしにプロセッサがタスクを処理ユニットに効率的に割り当てる処理ルーチンを構築することが可能になる場合がある。コンパイルはコンパイラによって実行することができ、基板内の外部インタフェースに接続されるホストに送信することができる。通常、あるアクセスパターンが高遅延したり、および/またはポートの数が少なかったりすると、データを要求する処理ユニットにデータボトルネックがもたらされる場合がある。しかしながら、本開示のコンパイルは、不利を招くメモリタイプを用いても処理ユニットが継続してデータを受信できるようにデータをメモリバンク内に配置することができる。
さらに、いくつかの実施形態では、構成マネージャは、タスクが要求する計算に基づいて必要な処理ユニットに信号を送ることができる。チップ内の異なる処理ユニットまたは異なる論理ブロックは、異なるタスクの専用ハードウェアまたは専用アーキテクチャを有することができる。そのため、実行されることになるタスクに応じて、処理ユニットまたは処理ユニットのグループを選択してタスクを実行することができる。基板上のメモリコントローラは、プロセッササブユニットの選択に従ってデータを転送する、またはアクセス権を与えてデータ転送速度を高めるように構成可能にできる。例えば、コンパイルの最適化およびメモリアーキテクチャに基づいて、処理ユニットは、タスクを実行するよう求められた場合、メモリバンクにアクセス権を与えることができる。
さらに、チップアーキテクチャは、メモリバンク内のデータにアクセスする所要時間を削減することによってデータ転送を促進するオンチップコンポーネントを含み得る。したがって、本開示は、コンパイルを最適化にする段階に加えて、単一メモリインスタンスを使用して専用タスクまたは汎用タスクを実行できる高性能プロセッサのチップアーキテクチャを記載する。メモリインスタンスは、ランダムアクセスの高遅延を有する場合がある、および/またはポート(例えばDRAMデバイスまたはその他のメモリ指向技術で使用されるポート)の数が少ない場合がある。しかし、本開示のアーキテクチャは、絶え間なく(またはほぼ連続的に)メモリバンクから処理ユニットまでデータを流すことを可能にすることによってこれらの欠陥を克服することができる。
本出願では、同時通信はクロックサイクル内の通信を指してもよい。あるいは、同時通信は所定時間内で情報を送信することを指してもよい。例えば、同時通信は数ナノ秒以内での通信を指してもよい。
図22は、本開示の実施形態と一致する、例示的な処理装置のブロック図を提供する。図22のA)は、メモリコントローラ2210がマルチプレクサを使用して第1のメモリブロック2202および第2のメモリブロック2204を接続する処理装置2200の第1の実施形態を示す。メモリコントローラ2210はさらに、少なくとも1つの構成マネージャ2212と、論理ブロック2214と、複数のアクセラレータ2216(a)-(n)と、を接続することができる。図22のB)は、メモリコントローラ2210がバスを使用してメモリブロック2202および2204を接続し、バスがメモリコントローラ2210を少なくとも1つの構成マネージャ2212と、論理ブロック2214と、複数のアクセラレータ2216(a)-(n)とを接続する、処理装置2200の第2の実施形態を示す。さらに、ホスト2230は外部にあってもよく、例えば外部インタフェースを介して処理装置2200に接続することができる。
メモリブロック2202および2204は、DRAMマットまたはDRAMマットのグループと、DRAMバンクと、MRAMユニット\PRAMユニット\ReRAMユニット\SRAMユニットと、Flashマットと、またはその他のメモリ技術と、を含み得る。メモリブロック2202および2204は、代替として、不揮発性メモリと、フラッシュメモリデバイスと、抵抗ランダムアクセスメモリ(ReRAM)デバイスと、または磁気ランダムアクセスメモリ(MRAM)デバイスと、を含み得る。
メモリブロック2202および2204は、複数のワード線(図示せず)および複数のビット線(図示せず)間の行および列で配置される複数のメモリセルを追加として含み得る。メモリセルの各行のゲートは、複数のワード線の各ワード線に接続することができる。メモリセルの各列は、複数のビット線の各ビット線に接続することができる。
他の実施形態では、(メモリブロック2202および2204を含む)メモリ領域は、シンプルなメモリインスタンスから構成される。本願では、「メモリインスタンス」という用語は、「メモリブロック」という用語と交換可能に使用することができる。メモリインスタンス(またはメモリブロック)は不十分な特徴を有する場合がある。例えば、メモリは、たった1ポートのメモリになる場合があり、高遅延ランダムアクセスを有する場合がある。この代わりに、またはこれに加えて、メモリは、列変換およびライン変換時にアクセスができなくなる可能性があり、例えば、容量充電および/または回路起動に関連するデータアクセス問題に直面する場合がある。しかしながら、図22で示されるアーキテクチャは、メモリインスタンスと処理ユニット間で専用接続を可能にすることによって、およびブロックの特徴を適時考慮に入れてデータを配置することによって、さらにメモリデバイス内の並列処理を促進する。
いくつかのデバイスアーキテクチャにおいて、メモリインスタンスは、並列演算を促進する複数ポートを含み得る。ただし、このような実施形態では、データがチップアーキテクチャに基づいてコンパイルおよび編成される場合、チップはさらに性能向上を実現できる。例えば、1ポートのメモリを使用したとしてもメモリ領域に容易にアクセスできるように命令を提供することによって、およびデータ配置を整理することによって、コンパイラはメモリ領域内のアクセスの効率性を高めることができる。
さらに、メモリブロック2202および2204は、単一チップ内の複数のメモリタイプであってもよい。例えば、メモリブロック2202および2204は、混載フラッシュメモリ(eFlash)および混載ダイナミックランダムアクセスメモリ(eDRAM)であってもよい。
さらに、メモリブロックは、ROMのインスタンスを備えるDRAMを含んでもよい。
メモリコントローラ2210は、メモリアクセスを処理し、結果を残りのモジュールに返す論理回路を含み得る。例えば、メモリコントローラ2210は、メモリブロックと処理ユニット間にデータを転送する、またはメモリブロックへのアクセス権を与えるマルチプレクサなどのアドレスマネージャおよびセレクションデバイスを含み得る。あるいは、メモリコントローラ2210は、本システムのメモリクロックの立ち上がりおよび立ち下がりエッジの両方にデータを転送するダブルデータレート(DDR)同期ダイナミックランダム アクセスメモリ(SDRAM)を駆動させるのに使用されるダブルデータレート(DDR)メモリコントローラを含み得る。
さらに、メモリコントローラ2210は、デュアルチャネルメモリコントローラを構成することができる。デュアルチャネルメモリを組み込むことによって、メモリコントローラ2210を介して並列アクセスラインを制御しやすくできる。並列アクセスラインは、複数のラインが同時に使用された場合にデータの同期をしやすくするために同じ長さを有するように構成することができる。この代わりに、またはこれに加えて、並列アクセスラインは、メモリバンクの複数のメモリポートへのアクセスを可能にできる。
いくつかの実施形態では、処理装置2200は、処理ユニットに接続できる1または複数のマルチプレクサを含み得る。処理ユニットは、マルチプレクサに直接接続できる構成マネージャ2212と、論理ブロック2214と、アクセラレータ2216と、を含み得る。さらに、メモリコントローラ2210は、複数のメモリバンクまたはブロック2202および2204からの少なくとも1つのデータ入力、ならびに複数の処理ユニットの各々に接続される少なくとも1つのデータ出力、を含み得る。この構成を用いれば、メモリコントローラ2210は、2回のデータ入力によってメモリバンクまたはメモリブロック2202および2204からデータを同時に受信し、2回のデータ出力によって受信したデータを少なくとも1つの選択された処理ユニットに同時に送信することができる。ただし、いくつかの実施形態では、少なくとも1回のデータ入力および少なくとも1回のデータ出力は、読み込み動作または書き込み動作だけを可能にする単一ポートで実装することができる。このような実施形態では、単一ポートは、データ、アドレス、およびコマンドラインを含むデータバスとして実装してもよい。
メモリコントローラ2210は、複数のメモリブロック2202および2204の各々に接続でき、さらに例えば選択スイッチによって処理ユニットに接続してもよい。また、構成マネージャ2212と、論理ブロック2214と、アクセラレータ2216と、を含む基板上の処理ユニットは、メモリコントローラ2210に独立して接続することができる。いくつかの実施形態では、構成マネージャ2212は、実行されるタスクの指示を受信することができ、それに応答して、メモリに記憶されるまたは外部に供給される構成に従ってメモリコントローラ2210と、アクセラレータ2216と、および/または論理ブロック2214と、を構成することができる。あるいは、メモリコントローラ2210は、外部インタフェースによって構成することができる。タスクは、複数の処理ユニットから少なくとも1つの選択された処理ユニットを選択するために使用できる少なくとも1つの計算を要求できる。この代わりに、またはこれに加えて、この選択は、少なくとも1つの計算を実行するために、選択された処理ユニットの能力に少なくとも部分的に基づくことができる。それに応答して、メモリコントローラ2210は、専用バスを使用して、および/またはパイプラインメモリアクセスで、メモリバンクへのアクセス権を与えることができる、または少なくとも1つの選択された処理ユニットと少なくとも2つのメモリバンクとの間にデータを転送することができる、
いくつかの実施形態では、少なくとも2つのメモリブロックの第1のメモリブロック2202は、複数の処理ユニットの第1の側に配置することができ、少なくとも2つのメモリバンクの第2のメモリバンク2204は、第1の側に向かい合う複数の処理ユニットの第2の側に配置することができる。さらに、通信ラインが第1のメモリバンクまたは第1のメモリブロック2202に開放されるクロックサイクル中に、タスクを実行する選択された処理ユニット、例えばアクセラレータ2216(n)は、第2のメモリバンク2204にアクセスするように構成することができる。あるいは、通信ラインが第1のメモリブロック2202にオープンになるクロックサイクル中に、選択された処理ユニットはデータを第2のメモリブロック2204に転送するように構成することができる。
いくつかの実施形態では、メモリコントローラ2210は、図22で示されるように、独立要素として実装することができる。ただし、他の実施形態では、メモリコントローラ2210は、メモリ領域内に混載することができる、またはアクセラレータ2216(a)-(n)に沿って配置することができる。
処理装置2200内の処理領域は、構成マネージャ2212と、論理ブロック2214と、アクセラレータ2216(a)-(n)と、を含み得る。アクセラレータ2216は、予め定義された機能を備える複数の処理回路を含み得て、特定応用によって定義することができる。例えば、アクセラレータは、モジュール間でメモリの移動処理を行うベクトル乗算(MAC)ユニットまたは直接メモリアクセス(DMA)ユニットであってもよい。アクセラレータ2216はさらに、アクセラレータ自体のアドレスを計算し、メモリコントローラ2210からデータを要求するまたはメモリコントローラ2210にデータを書き込むことができる場合がある。例えば、構成マネージャ2212は、アクセラレータ2216の少なくとも1つにメモリバンクにアクセスできることを知らせることができる。次いでアクセラレータ2216は、メモリコントローラ2210がデータをアクセラレータ自体に転送する、またはメモリコントローラがアクセラレータ自体にアクセス権を与えるように構成することができる。さらに、アクセラレータ2216は、少なくとも1つの算術論理演算ユニット(ALU)と、少なくとも1つのベクトル処理ロジックユニットと、少なくとも1つのストリング比較ロジックユニットと、少なくとも1つのレジスタと、少なくとも1つの直接メモリアクセス(DMA)と、を含み得る。
構成マネージャ2212は、アクセラレータ2216およびタスクの命令実行を構成するデジタル処理回路を含み得る。例えば、構成マネージャ2212は、メモリコントローラ2210および複数のアクセラレータ2216の各々に接続することができる。構成マネージャ2212は、アクセラレータ2216の構成を保持するためにその独自の専用メモリを有することができる。構成マネージャ2212は、メモリバンクを使用して、メモリコントローラ2210を介してコマンドおよび構成をフェッチすることができる。あるいは、構成マネージャ2212は外部インタフェースからプログラムしてもよい。いくつかの実施形態では、構成マネージャ2212は、独自のキャッシュ階層を備えるオンチップ縮小命令セットコンピューティング(RISC)または複雑なオンチップCPUで実装することができる。いくつかの実施形態では、さらに構成マネージャ2212を省略することができ、アクセラレータは外部インタフェースを介して構成することができる。
処理装置2200はさらに外部インタフェース(図示せず)含んでもよい。外部インタフェースは、外部ホスト2230またはオンチップメインプロセッサからコマンドを受信するメモリバンクコントローラなどの上位からメモリまでのアクセスを可能にする、または、外部ホスト2230またはオンチップメインプロセッサからメモリまでのアクセスを可能にする。外部インタフェースは、構成マネージャ2212またはユニット2214およびアクセラレータ2216それら自体がその後使用するメモリコントローラ2210を介して構成またはコードをメモリに書き込むことによって、構成マネージャ2212およびアクセラレータ2216のプログラミングを可能にできる。ただし、外部インタフェースはさらに、メモリコントローラ2210を経由して転送されることなく処理ユニットを直接プログラムできる。構成マネージャ2212がマイクロコントローラである場合、構成マネージャ2212は、外部インタフェースを介してメインメモリからコントローラのローカルメモリまでのコードのローディングを可能にできる。メモリコントローラ2210は、外部インタフェースからの要求の受信に応答してタスクを割り込ませるように構成することができる。
外部インタフェースは、論理回路と関連付けられる複数のコネクタを含み得て、論理回路は処理装置上の様々な要素にグルーレスインタフェースを提供する。外部インタフェースは、データ読み込みを入力し、データ書き込みを出力するデータ入力/データ出力と、外部アドレス出力と、チップイネーブル(CE0)の外部チップセレクトピンと、アクティブローのチップセレクタと、バイトイネーブルピンと、メモリサイクル上の待機状態のピンと、書き込みイネーブルピンと、出力イネーブルアクティブピンと、読み込みおよび書き込みイネーブルピンと、を含み得る。したがって、外部インタフェースは、処理を制御し、処理装置から情報を得る要求された入力および出力を有する。例えば、外部インタフェースは、電子素子技術連合評議会(JEDEC)のダブルデータレート(DDR)規格に準拠することができる。この代わりに、またはこれに加えて、外部インタフェースは、シリアルペリフェラルインターフェイス(SPI)\オクタルシリアルペリフェラルインターフェイス(OSPI)またはユニバーサル非同期レシーバトランスミッタ(UART)など、その他の規格に準拠することができる。
いくつかの実施形態では、外部インタフェースはチップ基板上に配置することができ、外部ホスト2230に接続することができる。外部ホストは、外部インタフェースを介してメモリブロック2202および2204、メモリコントローラ2210、ならびに処理ユニットにアクセスできる。この代わりに、またはこれに加えて、外部ホスト2230はメモリに読み込みおよび書き込みをすることができ、または、読み込みおよび書き込みコマンドを介して構成マネージャ2212に知らせてプロセスの開始および/またはプロセスの停止などの動作を実行することができる。さらに、外部ホスト2230はアクセラレータ2216を直接構成することができる。いくつかの実施形態では、外部ホスト2230は読み込み/書き込み動作を直接メモリブロック2202および2204に実行することができる。
いくつかの実施形態では、構成マネージャ2212およびアクセラレータ2216は、ターゲットタスクに応じてダイレクトバスを使用して、デバイス領域をメモリ領域と接続するように構成することができる。例えば、アクセラレータ2216のサブセットがタスクを実行するのに必要な計算を実行する機能を有する場合、アクセラレータ2216のサブセットは、メモリインスタンス2204と接続することができる。このような分離を行うことによって、専用アクセラレータがメモリブロック2202および2204に必要な帯域幅(BW)を確実に得ることが可能である。さらに、専用バスを備えたこのような構成により、大型メモリを小型のインスタンスまたはブロックに分割できる可能性がある。なぜなら、メモリインスタンスをメモリコントローラ2210に接続することにより、高遅延時間でも低遅延時間でも異なるメモリで迅速にデータにアクセスできるためである。接続の並列化を実現するために、メモリコントローラ2210は、データ、アドレス、および/または制御バスでメモリインスタンスの各々に接続することができる。
上記で考察したメモリコントローラ2210の包含により、処理装置内のキャッシュ階層または複雑なレジスタファイルの要件を無くすことができる。キャッシュ階層を追加して追加機能を与えることができるが、処理装置2200内のアーキテクチャにより設計者は処理動作に基づいて十分なメモリブロックまたはインスタンスを追加することができ、それに応じてキャッシュ階層無しでインスタンスを管理することができる。例えば、処理装置2200内のアーキテクチャにより、パイプラインメモリアクセスを実装することによってキャッシュ階層の要件を無くすことができる。パイプラインメモリアクセスでは、処理ユニットは、いくつかのデータラインを開放(またはアクティブ化)でき、その他のデータラインがデータを受信または送信するあらゆるサイクルで持続データフローを受信することができる。独立した通信ラインを使用した持続データフローにより、実行スピードの改善が可能になる場合があり、ライン変換による最小の待ち時間が可能になる場合がある。
さらに、図22で開示されたアーキテクチャはパイプラインメモリアクセスを有効にし、少ない数のメモリブロックでデータを編成し、ライン変換で生じる電力損失の無駄をなくすことが可能となり得る。例えば、いくつかの実施形態では、コンパイラは、メモリバンク内のデータ編成またはデータ編成方法をホスト2230に通信して所定のタスク中にデータにアクセスしやすくできる。次いで、構成マネージャ2212は、どのメモリバンクが、場合によっては、メモリバンクのどのポートがアクセラレータによってアクセスできるかを定義することができる。こうしたメモリバンク内のデータ記憶位置間の同期、およびデータへのアクセス方法で計算タスクを向上するために、最小の待ち時間でデータをアクセラレータに供給する。例えば、構成マネージャ2212がRISC\CPUを含む実施形態では、このデータへのアクセス方法はオフラインソフトウェア(SW)で実装することができ、次いで構成マネージャ2212はこの方法を実行するようにプログラムできる。この方法は、RISC/CPUコンピュータで実行可能であるあらゆる言語で考案でき、あらゆるプラットフォーム上で実行できる。この方法の入力は、メモリコントローラの裏側のメモリ、および、データ自体ならびにメモリアクセスパターンの構成を含み得る。さらに、この方法は、本実施形態に特有の言語またはマシン言語で実装することができ、さらに2進法またはテキストにおける一連のただの構成値であってもよい。
上記のように、いくつかの実施形態では、コンパイラは、パイプラインメモリアクセスを整えるにあたりメモリブロック2202および2204内にデータを編成する命令をホスト2230に提供することができる。パイプラインメモリアクセスは概して、複数のメモリバンクまたはメモリブロック2202および2204の複数のアドレスを受信する段階と、独立したデータラインを使用した受信アドレスに従って複数のメモリバンクにアクセスする段階と、第1の通信ラインを介して第1のアドレスから複数の処理ユニットの少なくとも1つにデータを供給し、第2の通信ラインを第2のアドレスに開放する段階であって、第1のアドレスが複数のメモリバンクの第1のメモリバンクに存在し、第2のアドレスが複数のメモリバンクの第2のメモリバンク2204に存在する段階と、第2の通信ラインを介して第2のアドレスから複数の処理ユニットの少なくとも1つにデータを供給し、第3の通信ラインを第2のクロックサイクル内の第1の通信ラインにおける第1のメモリバンク内の第3のアドレスに開放する段階と、を含み得る。いくつかの実施形態では、パイプラインメモリアクセスは、単一ポートに接続される2つのメモリブロックで実行することができる。このような実施形態では、メモリコントローラ2210は、単一ポートの裏側に2つのメモリブロックを隠すことができるが、パイプラインメモリアクセス法でデータを処理ユニットに送信することができる。
いくつかの実施形態では、コンパイラは、タスクを実行する前にホスト2230上で実行することができる。このような実施形態では、コンパイラは、メモリデバイスのアーキテクチャに基づいてデータフローの構成を決定できる場合がある。これは、このデータフロー構成がコンパイラに周知であるためである。
他の実施形態では、メモリブロック2204および2202の構成がオフラインタイムで知られていない場合、データをメモリブロック内に配置できるパイプラインメモリアクセス法を、計算を開始する前にホスト2230上で実行できる。例えば、ホスト2230はメモリブロック2204および2202内に直接データを書き込むことができる。このような実施形態では、構成マネージャ2212およびメモリコントローラ2210などの処理ユニットは、実行時まで、要求されるハードウェアに関する情報を有することができない。次いで、タスクが実行を開始するまでアクセラレータ2216の選択を遅延させることが必要になる場合がある。この場合、処理ユニットまたはメモリコントローラ2210は、アクセラレータ2216を任意に選択することができ、タスクが実行されると同時に修正できる試験データアクセスパターンを作ることができる。
しかしながら、タスクが前もって知られる場合、ホスト2230が構成マネージャ2212などの処理ユニットに提供するメモリバンク内のデータおよび命令をコンパイラが編成することでアクセス待ち時間を最小限にする信号接続が設定される。例えば、場合によってはアクセラレータ2216によってnワードが同時に必要になる場合がある。しかしながら、「m」および「n」が整数であり、m<nのときに各メモリインスタンスはmワードだけの引き出しのサポートをする。したがって、コンパイラは、必要とされるデータを異なるメモリインスタンスまたはメモリブロック全体に入れることで、データアクセスを促進させる。さらに、ラインのミス待ち時間を回避するために、ホストは、処理装置2200が複数のメモリインスタンスを含む場合、異なるメモリインスタンスの異なるラインにデータを分割することができる。データを分割することで、隣のインスタンス内の隣のデータラインにアクセスし、さらに現在のインスタンスからデータを使用することができる。
例えば、アクセラレータ2216(a)は、2つのベクトルを逓倍するように構成することができる。ベクトルの各々は、メモリブロック2202および2204などの独立したメモリブロックの中に記憶することができ、各ベクトルは複数のワードを含み得る。したがって、アクセラレータ2216(a)が乗算を要求するタスクを完了するためには、2つのメモリブロックにアクセスし、複数のワードを引き出すことが必要になる場合がある。ただし、いくつかの実施形態では、メモリブロックはクロックサイクル毎に1つのワードへのアクセスを可能にするだけである。例えば、メモリブロックは単一ポートを有することができる。この場合、動作中にデータ送信を促進するために、コンパイラは、ベクトルを構成するワードを異なるメモリブロック内に編成して、ワードの並列読み込みおよび/または同時読み込みを可能にできる。この場合、コンパイラは、専用ラインを有するメモリブロック内にワードを記憶することができる。例えば、各ベクトルが2つのワードを含み、メモリコントローラが4つのメモリブロックへの直接アクセスを有する場合、コンパイラは、データを4つのメモリブロックに配置することができ、各1つのメモリブロックがワードを送信し、データ配信を促進する。さらに、メモリコントローラ2210が各メモリブロックへの単一接続よりも多い接続を有することができる場合の実施形態では、コンパイラは、構成マネージャ2212(またはその他の処理ユニット)が特殊ポートにアクセスするように命令することができる。この方法では、処理装置2200は、ワードをいくつかのライン内に同時にローディングし、データを他のライン内に送信することによってデータを処理ユニットに継続して提供するパイプラインメモリアクセスを実行することができる。したがって、このパイプラインメモリアクセスは待ち時間問題を回避することができる。
図23は、本開示の実施形態と一致する、例示的な処理装置2300のブロック図である。ブロック図は、乗累算ユニット2302、(構成マネージャ2212と同じ、または類似する)構成マネージャ2304、(メモリコントローラ2210と同じ、または類似する)メモリコントローラ2306、および複数のメモリブロック2308(a)-(d)の形態の単一アクセラレータを図示したシンプルな処理装置2300を示す。
いくつかの実施形態では、乗累算ユニット2302は特定のタスクを処理する特殊なアクセラレータであってもよい。例として、処理装置2300には2次元コンボリューションが割り当てられる。次いで、構成マネージャ2304は、適切なハードウェアを有するアクセラレータにタスクと関連付けられた計算を実行するように知らせることができる。例えば、乗累算ユニット2302は、4つの内部インクリメントカウンタ(コンボリューション計算が必要とする4つのループを管理する論理加算器およびレジスタ)と、乗累算ユニットと、を含み得る。構成マネージャ2304は、乗累算ユニット2302に入力データを処理し、タスクを実行するように知らせることができる。構成マネージャ2304はタスクを実行する指示を乗累算ユニット2302に送信することができる。この場合、乗累算ユニット2302は計算されたアドレスを順に処理し、数を乗算し、それらを内部レジスタに累算することができる。
いくつかの実施形態では、構成マネージャ2304はアクセラレータを構成することができ、メモリコントローラ2306は専用バスを使用してブロック2308および乗累算ユニット2302にアクセス権を与えることができる。ただし、他の実施形態では、メモリコントローラ2306は、構成マネージャ2304または外部インタフェースから受信した命令に基づいてアクセラレータを直接構成することができる。この代わりに、またはこれに加えて、構成マネージャ2304は、いくつかの構成を予めロードすることができ、アクセラレータが異なるサイズの異なるアドレス上に繰り返し実行することを可能にする。このような実施形態では、構成マネージャ2304は、コマンドを記録してからコマンドをアクセラレータ2216などの複数の処理ユニットの少なくとも1つに送信するキャッシュメモリを含み得る。ただし、他の実施形態では、構成マネージャ2304はキャッシュを含まない場合がある。
いくつかの実施形態では、構成マネージャ2304またはメモリコントローラ2306は、タスクにアクセスする必要があるアドレスを受信することができる。構成マネージャ2304またはメモリコントローラ2306は、アドレスがメモリブロック2308の1つに向くローデッドライン内にすでにあるか否かをレジスタが決定するのをチェックすることができる。仮にそうである場合、メモリコントローラ2306はメモリブロック2308からワードを読み込み、読み込んだワードを乗累算ユニット2302に通信することができる。アドレスがローデッドライン内にない場合、構成マネージャ2304は、メモリコントローラ2306がラインをロードし、アドレスが引き出されるまで遅延してしまうことを乗累算ユニット2302に知らせることを要求する場合がある。
いくつかの実施形態では、図23で示されるように、メモリコントローラ2306は2つの独立したアドレスから2回の入力を含み得る。ただし、2つ以上のアドレスに同時にアクセスする必要がある場合、およびこれらのアドレスが単一メモリブロック内にある(例えば、アドレスがメモリブロック2308(a)の中にある)場合、メモリコントローラ2306または構成マネージャ2304は例外を発生させる場合がある。あるいは、構成マネージャ2304は、2つのアドレスが単一ラインだけを通ってアクセスできる場合に、無効データ信号を返信できる。他の実施形態では、ユニットは、全ての必要なデータを引き出すことが可能になるまで、プロセスの実行を遅延させることができる。これでは、全体的に性能を低下させる可能性がある。しかしながら、コンパイラは、遅延しないようにさせる構成およびデータ配置を発見できる可能性がある。
いくつかの実施形態では、コンパイラは、処理装置2300に対して構成または命令のセットを構築することができる。その構成または命令のセットは、単一メモリブロックから複数のアドレスにアクセスする必要があるがメモリブロックは1つのポートを有するという状況に構成マネージャ2304およびメモリコントローラ2306およびアクセラレータ2302が対処するように構成することができる。例えば、コンパイラは、処理ユニットがメモリブロック2308内の複数のラインにアクセスできるようにデータをメモリブロック2308内に再配置できる。
さらに、メモリコントローラ2306は、1回以上の入力に同時に作用することもできる。例えば、メモリコントローラ2306は、1つのポートを通ってメモリブロック2308の1つにアクセスし、データを供給しながらもう1回の入力で異なるメモリブロックからの要求を受信できることを可能にする。そのため、この動作により、関連するメモリブロックと通信する専用ラインからデータを受信する例示的な2次元コンボリューションがアクセラレータ2216に割り当てられることにつながり得る。
この代わりに、またはこれに加えて、メモリコントローラ2306または論理ブロックは、あらゆるメモリブロック2308のリフレッシュカウンタを保持し、全てのラインのリフレッシュに対処することができる。このようなリフレッシュカウンタを有することで、デバイスからの無駄なアクセス時間中にメモリコントローラ2306をリフレッシュサイクルに組み込むことができる。
さらに、メモリコントローラ2306は、パイプラインメモリアクセスを実行して、データを供給する前にアドレスを受信し、メモリブロック内にラインを開放するように構成可能にできる。パイプラインメモリアクセスは、途切れることなく、またはクロックサイクルを遅延させることなく、データを処理ユニットに供給することができる。例えば、メモリコントローラ2306または論理ブロックの1つが図23内の右側ラインでデータにアクセスし、左側ライン内にデータを送信することができる。これらの方法は、図26に関連してより詳細に説明することになる。
要求されたデータに応答して、処理装置2300は、マルチプレクサおよび/またはその他のスイッチ素子を使用して、サービスを受けているのがどのデバイスかを選んで所定のタスクを実行できる。例えば、構成マネージャ2304は、少なくとも2つのデータラインが乗累算ユニット2302に到達するようにマルチプレクサを構成することができる。この方法では、複数アドレスからの2次元コンボリューションなどのデータを要求するタスクをより迅速に実行することができる。なぜなら、コンボリューション時に乗算を要求するベクトルまたはワードが、1クロックで同時に処理ユニットに到達できるからである。このデータ転送法により、アクセラレータ2216などの処理ユニットは結果を迅速に出力することができる。
いくつかの実施形態では、構成マネージャ2304はタスクの優先順位に基づいてプロセスを実行するように構成可能にできる。例えば、構成マネージャ2304は、途切れることなく実行プロセスを終了させるように構成することができる。その場合、構成マネージャ2304は、タスクの命令または構成をアクセラレータ2216に提供し、途切れることなくタスクの命令または構成を実行させ、タスクが終了した場合にのみマルチプレクサを切り替えさせる。ただし、他の実施形態では、構成マネージャ2304は、外部インタフェースからの要求などのタスクの優先順位を受信するとき、タスクに割り込むことができ、データルーティングを再構成することができる。しかしながら、メモリブロック2308が十分にあるため、メモリコントローラ2306は、タスクが完了するまで変換する必要のない専用ラインでデータを転送し、または処理ユニットにアクセス権を与えるように構成可能にできる。さらに、いくつかの実施形態では、全てのデバイスはバスを介して構成マネージャ2304全体に接続でき、デバイスは(例えば、マルチプレクサと同じロジックを使用して)デバイス自体とバスとの間のアクセスを管理できる。したがって、メモリコントローラ2306は複数のメモリインスタンスまたはメモリブロックに直接接続することができる。
あるいは、メモリコントローラ2306はメモリサブインスタンスに直接接続することができる。いくつかの実施形態では、各メモリインスタンスまたは各ブロックはサブインスタンスから構築することができる(例えば、DRAMは、独立したデータラインが複数のサブブロック内に配置されるマットから構築することができる)。
さらに、サブインスタンスは、DRAMマット、DRAM、バンク、flashマット、またはSRAMマット、またはその他あらゆる種類のメモリのうち少なくとも1つを含み得る。次いで、メモリコントローラ2306は、サブインスタンスを直接アドレス指定してパイプラインメモリアクセス時の待ち時間を最小にする専用ラインを含み得る。
いくつかの実施形態では、メモリコントローラ2306はさらに、特定のメモリインスタンスに必要であるロジック(例えば、行デコーダ\列デコーダ、リフレッシュロジックなど)を保持することができ、メモリブロック2308はメモリブロック独自のロジックを処理できる。したがって、メモリブロック2308はアドレスを得ることができ、データ返信\データ書き込み用のコマンドを生成することができる。
図24は、本開示の実施形態と一致する、例示的なメモリ構成図を示す。いくつかの実施形態では、処理装置2200のコードまたは構成を生成するコンパイラは、データを各ブロック内に予め配置することによってメモリブロック2202および2204からのローディングを構成する方法を実行することができる。例えば、コンパイラは、タスクに必要な各ワードがメモリインスタンスまたはメモリブロックのラインに相互に関連するように、データを予め配置することができる。しかし、処理装置2200内で利用可能なメモリブロックよりも多くのメモリブロックを必要とするタスクの場合、コンパイラは、各メモリブロックの1つ以上の記憶場所にデータをフィットさせる方法を実装することができる。コンパイラはさらにデータを順番に記憶し、各メモリブロックの待ち時間を評価してラインのミス待ち時間を回避することができる。いくつかの実施形態では、ホストは構成マネージャ2212などの処理ユニットの一部であってもよい。ただし、他の実施形態では、コンパイラのホストは外部インタフェースを介して処理装置2200に接続することができる。このような実施形態では、ホストは、コンパイラに関して記載された機能などのコンパイル機能を受信することができる。
いくつかの実施形態では、構成マネージャ2212は、CPUまたはマイクロコントローラ(uC)であってもよい。このような実施形態では、構成マネージャ2212は、メモリにアクセスしてメモリ内に入れられるコマンドまたは命令をフェッチしなければならない場合がある。特定のコンパイラは、同じメモリライン内および複数のメモリバンク全体に連続コマンドを記憶できるようにコードを生成し、コードをメモリ内に入れて、フェッチされたコマンドにさらにパイプラインメモリアクセスを可能にする場合がある。これらの実施形態では、構成マネージャ2212およびメモリコントローラ2210は、パイプラインメモリアクセスを促進することによって実行ライン内の低遅延も回避できる可能性がある。
先の実行ラインのプログラムのケースでは、コンパイラが命令を認識し、命令を入れてパイプラインメモリの実行を可能にする方法を記載した。しかしながら、その他のソフトウェア構造はより複雑な場合があり、コンパイラにそのソフトウェア構造を認識させ、それに従ってコンパイラが機能するよう要求することになろう。例えば、タスクがループおよび分岐を要求する場合、コンパイラは、ラインを開放する待ち時間なしで単一ラインがループできるように、全てのループコードを単一ライン内部に入れることができる。その際、メモリコントローラ2210は、実行時にラインを変換する必要がない可能性がある。
いくつかの実施形態では、構成マネージャ2212は内部キャッシュまたは小型メモリを含み得る。内部キャッシュは、構成マネージャ2212によって実行され、分岐およびループに対応するコマンドを記憶することができる。例えば、内部キャッシュメモリ内のコマンドは、アクセラレータがメモリブロックにアクセスするように構成する命令を含み得る。
図25は、本開示の実施形態と一致する、可能なメモリ構成プロセス2500を示す例示的なフローチャートである。メモリ構成プロセス2500を記載する際可能な限り、図22で示される、および上記の要素の識別子を参照することができる。いくつかの実施形態では、プロセス2500は、外部インタフェースを介して接続されるホストに命令を提供するコンパイラによって実行することができる。他の実施形態では、プロセス2500は、構成マネージャ2212などの処理装置2200のコンポーネントによって実行することができる。
概して、プロセス2500は、タスクを実行するために同時に要求されるワードの数を決定する段階と、複数のメモリバンクの各々から同時にアクセスできるワードの数を決定する段階と、同時に要求されるワードの数が同時にアクセスできるワードの数よりも大きい場合に、同時に要求されるワードの数を複数のメモリバンク間で分割する段階と、を含み得る。さらに、同時に要求されるワードの数を分割する段階は、ワードのサイクル構成を実行する段階と、1つのワードをメモリバンク毎に順次割り当てる段階と、を含み得る。
より詳細には、プロセス2500は、コンパイラがタスク仕様を受信することができる段階2502で開始することができる。タスク仕様は、要求される計算および/または優先レベルを含む。
段階2504で、コンパイラは、タスクを実行できるアクセラレータまたはアクセラレータのグループを識別することができる。あるいは、構成マネージャ2212などの処理ユニットがタスクを実行するアクセラレータを識別できるように、コンパイラは命令を生成することができる。例えば、構成マネージャ2212は、要求された計算を用いて、タスクを処理できるアクセラレータ2216のグループ内のアクセラレータを識別することができる。
段階2506で、コンパイラは、同時にアクセスする必要があるワードの数を決定してタスクを実行することができる。例えば、2つのベクトルの乗算には少なくとも2つのベクトルにアクセスする必要があるため、コンパイラは、動作を実行するためにベクトルのワードに同時にアクセスする必要があることを決定することができる。
段階2508で、コンパイラは、タスクを実行するために必要なサイクル数を決定することができる。例えば、タスクが4つの副産物のコンボリューション動作を要求する場合、コンパイラは、タスクの実行には少なくとも4サイクルが必要であることを決定することができる。
段階2510で、コンパイラは、同時にアクセスする必要のあるワードを異なるメモリバンク内に入れることができる。その方法では、メモリコントローラ2210は、要求されるあらゆるキャッシュデータを使用せずに、異なるメモリインスタンスに対してラインを開放し、要求されるメモリブロックに1クロックサイクル内でアクセスするように構成することができる。
段階2512で、コンパイラは、順次アクセスするワードを同じメモリバンク内に入れることができる。例えば、4つの動作サイクルが要求される場合、コンパイラは、必要なワードを順次サイクルで単一メモリブロック内に書き込み、実行中に異なるメモリブロック間のラインを変換しないようにする命令を生成できる。
段階2514で、コンパイラは、構成マネージャ2212などの処理ユニットをプログラムする命令を生成する。この命令は、スイッチ素子(マルチプレクサなど)を動作させる、またはデータバスを構成する条件を明示することができる。このような命令によって、構成マネージャ2212は、専用通信ラインを使用しタスクに従って、メモリコントローラ2210がデータをメモリブロックから処理ユニットに転送する、またはアクセス権をメモリブロックから処理ユニットに与えるように構成することができる。
図26は、本開示の実施形態と一致する、メモリ読み込みプロセス2600を示す例示的なフローチャートである。メモリ読み込みプロセス2600を記載する際可能な限り、図22で示される、および上記の要素の識別子を参照することができる。いくつかの実施形態では、下記のように、プロセス2600はメモリコントローラ2210によって実装することができる。ただし、他の実施形態では、プロセス2600は、構成マネージャ2212などの処理装置2200内のその他の要素によって実装してもよい。
段階2602で、メモリコントローラ2210、構成マネージャ2212、またはその他の処理ユニットは、データを転送する指示をメモリバンクから受信する、またはアクセス権をメモリバンクに与えることができる。要求はアドレスおよびメモリブロックを指定することができる。
いくつかの実施形態では、ライン2218内の読み込みコマンドおよびライン2220内のアドレスを指定するデータバスを介して要求を受信できる。他の実施形態では、メモリコントローラ2210に接続されるデマルチプレクサを介して要求を受信できる。
段階2604で、構成マネージャ2212、ホスト、またはその他の処理ユニットは内部レジスタに問い合わせることができる。内部レジスタは、メモリバンクに対して開放されるライン、開放されるアドレス、開放されるメモリブロック、および/または次のタスクに関する情報を含み得る。内部レジスタ内の情報に基づいて、メモリバンクに対して開放されたラインがあるかどうか、および/またはメモリブロックが段階2602で要求を受信したかどうかを決定することができる。この代わりに、またはこれに加えて、メモリコントローラ2210は内部レジスタに直接問い合わせることができる。
メモリバンクが開放されたライン内にロードされないことを内部レジスタが示す場合(段階2606でnoの場合)、プロセス2600は段階2616に進むことができ、ラインは受信したアドレスと関連付けられるメモリバンクにロードすることができる。さらに、メモリコントローラ2210または構成マネージャ2212などの処理ユニットは、段階2616でメモリアドレスから情報を要求する要素に遅延を知らせることができる。例えば、アクセラレータ2216が、すでに占有されたメモリブロックに位置するメモリ情報を要求する場合、段階2618でメモリコントローラ2210が遅延信号をアクセラレータに送信することができる。段階2620で、構成マネージャ2212またはメモリコントローラ2210は、内部レジスタを更新して、ラインが新しいメモリバンクまたは新しいメモリブロックに対して開放されたことを示すことができる。
メモリバンクが開放されたライン内にロードされることを内部レジスタが示す場合(段階2606でyesの場合)、プロセス2600は段階2608に進むことができる。段階2608で、メモリバンクをロードしたラインが異なるアドレス用に使用されているかどうかを決定することができる。ラインが異なるアドレス用に使用されている場合(段階2608でyesの場合)、単一ブロック内に2つのインスタンスが存在するため、2つのインスタンスに同時にアクセスすることができないことを示すことになろう。したがって、段階2616でメモリアドレスから情報を要求する要素にエラーまたは適用除外の信号を送信することができる。ただし、ラインが異なるアドレス用に使用されていない場合(段階2608でnoの場合)、ラインはアドレス用に開放でき、ターゲットメモリバンクからデータを引き出すことができ、段階2614に進んで、メモリアドレスから情報を要求する要素にデータを送信することができる。
プロセス2600と関連して、処理装置2200は、処理ユニットと、タスクを実行する要求された情報を含むメモリブロックまたはメモリインスタンスと、の間に直接接続を構築する能力を有する。このようなデータ編成により、異なるメモリインスタンス内の編成されたベクトルから情報を読み込むことが可能となる、ならびにデバイスがこれらの複数のアドレスを要求する場合に異なるメモリブロックから情報を同時に引き出すことが可能となるであろう。
図27は、本開示の実施形態と一致する、実行プロセス2700を示す例示的なフローチャートである。実行プロセス2700を記載する際可能な限り、図22で示される、および上記の要素の識別子を参照することができる。
段階2702で、コンパイラまたは構成マネージャ2212などのローカルユニットは、実行される必要のあるタスクの指示を受信することができる。タスクは、単一演算(例えば、乗算)またはより複雑な演算(例えば、行列間コンボリューション)を含み得る。タスクはさらに、要求される計算を示すことができる。
段階2704で、コンパイラまたは構成マネージャ2212は、タスクを実行するために同時に要求されるワードの数を決定することができる。例えば、構成マネージャまたはコンパイラは、ベクトル間で乗算を実行するために2つのワードが同時に要求されることを決定することができる。別の例では、2次元コンボリューションタスク、構成マネージャ2212は、「n」および「m」が行列次元である行列間コンボリューションには「n」回「m」ワードが要求されることを決定することができる。さらに、段階2704で、構成マネージャ2212はさらに、タスクを実行するのに必要なサイクル数を決定することができる。
段階2706では、段階2704における決定に応じて、コンパイラは、基板上に配置される複数のメモリバンク内に同時にアクセスする必要があるワードを書き込むことができる。例えば、複数のメモリバンクの1つから同時にアクセスできるワードの数が、同時に要求されるワードの数よりも少ない場合、コンパイラは、複数のメモリバンク内にデータを編成することで、1クロック内で異なる要求されるワードにアクセスしやすくできる。さらに、構成マネージャ2212またはコンパイラがタスクを実行するには複数サイクルが必要であることを決定する場合、コンパイラは、必要なワードを順次サイクルで複数のメモリバンクの単一メモリバンク内に書き込み、メモリバンク間のラインを変換しないようにすることができる。
段階2708で、メモリコントローラ2210は、第1のメモリラインを使用して複数のメモリバンクまたはブロックからの第1のメモリバンクから少なくとも1つの第1のワードを読み込む、または少なくとも1つの第1のワードにアクセス権を与えるように構成することができる。
段階2710で、処理ユニット、例えばアクセラレータ2216の1つは、少なくとも1つの第1のワードを使用してタスクを処理することができる。
段階2712で、メモリコントローラ2210は、第2のメモリラインを第2のメモリバンク内に開放するように構成することができる。例えば、タスクに基づいて、およびパイプラインメモリアクセス法を用いて、メモリコントローラ2212は、段階2706でタスクに必要な情報が書き込まれた場合、第2のメモリラインを第2のメモリブロック内に開放するように構成することができる。いくつかの実施形態では、段階2710でタスクがまさに完了しようとするときに第2のメモリラインを開放することができる。例えば、タスクが100クロックを要求する場合、第2のメモリラインは90クロックで開放することができる。
いくつかの実施形態では、段階2708から2712は、第1のラインアクセスサイクル内で実行することができる。
段階2714で、メモリコントローラ2210は、段階2710で開放される第2のメモリラインを使用して第2のメモリバンクからの少なくとも1つの第2のワードからデータにアクセス権を与えるように構成することができる。
段階2716で、処理ユニット、例えばアクセラレータ2216の1つは、少なくとも第2のワードを使用してタスクを処理することができる。
段階2718で、メモリコントローラ2210は、第2のメモリラインを第1のメモリバンク内に開放するように構成することができる。例えば、タスクに基づいて、およびパイプラインメモリアクセス法を用いて、メモリコントローラ2210は、第2のメモリラインを第1のメモリブロック内に開放するように構成することができる。いくつかの実施形態では、段階2716でタスクがまさに完了しようとするときに第2のメモリラインを第1のブロックに開放することができる。
いくつかの実施形態では、段階2714から2718は、第1のラインアクセスサイクル内で実行することができる。
段階2720で、メモリコントローラ2210は、第1のバンク内の第2のメモリラインまたは第3のバンクおよび続けて異なるメモリバンク内の第1のメモリラインを使用して複数のメモリバンクまたはブロックからの第1のメモリバンクから少なくとも1つの第3のワードを読み込む、または少なくとも1つの第3のワードにアクセス権を与えることができる。
上記の記載は、図示を目的として提示されている。開示された厳密な形態または実施形態の例示列挙であり、これらに限定されない。本明細書および開示された実施形態の実施の考察から、修正および適応が当業者に明らかになるであろう。さらに、開示された実施形態の態様はメモリに記憶されるものとして記載されるが、これらの態様はさらに、例えば、ハードディスクまたはコンパクトディスクリードオンリメモリ(CD-ROM)、またはその他の形態のランダムアクセスメモリ(RAM)またはリードオンリメモリ(ROM)、ユニバーサルシリアルバス(USB)メディア、デジタル多用途ディスク(DVD)、Blu-ray(登録商標)、4K Ultra HD Blu-ray(登録商標)、またはその他のオプティカルドライブメディアといった二次記憶装置など、他の種類のコンピュータ可読媒体に記憶することもできることが当業者には明らかであろう。
本明細書および開示された方法に基づくコンピュータプログラムは、経験のある開発者が備えている技能範囲内にある。様々なプログラムまたはプログラムモジュールは、当業者に知られるあらゆる技術を用いて作成することができ、または現存するソフトウェアと関連付けて設計することができる。例えば、プログラムセクションまたはプログラムモジュールは、マイクロソフトドットネットフレームワーク(.Net Framework)、マイクロソフトドットネットコンパクトフレームワーク(.Net Compact Framework)(および例えばVisual Basic、C、などの関連言語)、Java(登録商標)、C++、オブジェクティブシー(Objective-C)、ハイパテキストマーク付け言語(HTML)、ハイパテキストマーク付け言語(HTML)/AJAXの組み合わせ、拡張可能なマーク付け言語(XML)、またはJava(登録商標)アプレットが含まれたハイパテキストマーク付け言語(HTML)で、またはこれらによって設計することができる。
さらに、これまで本明細書で例示的な実施形態を説明してきたが、あらゆる実施形態および全ての実施形態の範囲は、本開示に基づいて当業者によって理解されるように、均等な要素、修正、省略、(例えば、様々な実施形態全体にわたる態様の)組み合わせ、適応、および/または変更を有する。特許請求の範囲における限定は特許請求の範囲で使用される言葉に基づいて幅広く解釈されるべきであり、本明細書で、または本出願の審査時に説明される事例に限定されない。事例は非排他的なものとして解釈されるべきである。さらに、本開示の方法の段階は、段階を並べ替える、および/または段階を挿入するまたは削除することを含めて、あらゆる方法で修正することができる。したがって、本明細書および事例は例示するだけのものととらえられるべきであり、真の範囲および精神が以下の特許請求の範囲およびその均等物の全範囲によって示されることが意図される。
[項目1]
分散型プロセッサであって、
基板と、
基板に配置されるメモリアレイであって、メモリアレイが複数の個別のメモリバンクを有する、メモリアレイと、
基板に配置される処理アレイであって、処理アレイが複数のプロセッササブユニットを有し、複数のプロセッササブユニットの各々が複数の個別のメモリバンクの対応する専用の1つと関連付けられる、処理アレイと、
第1の複数のバスであって、各バスが複数のプロセッササブユニットの1つをその対応する専用メモリバンクに接続する、第1の複数のバスと、
第2の複数のバスであって、各バスが複数のプロセッササブユニットの1つを複数のプロセッササブユニットの別のプロセッササブユニットに接続する、第2の複数のバスと
を備える分散型プロセッサ。
[項目2]
基板が半導体基板である、項目1に記載の分散型プロセッサ。
[項目3]
基板が回路基板である、項目1または2に記載の分散型プロセッサ。
[項目4]
処理アレイの複数のプロセッササブユニットがメモリアレイの複数の個別のメモリバンク間に空間的に分散される、項目1から3のいずれか一項に記載の分散型プロセッサ。
[項目5]
チップ上の分散型プロセッサが人工知能アクセラレータプロセッサである、項目1から4のいずれか一項に記載の分散型プロセッサ。
[項目6]
複数のプロセッササブユニット内に含まれる他のプロセッササブユニットに対して独立した特定のアプリケーションと関連付けられるソフトウェアコードを複数のプロセッササブユニットの各々が実行するように構成される、項目1から5のいずれか一項に記載の分散型プロセッサ。
[項目7]
複数のプロセッササブユニットが少なくとも1つの行および少なくとも1つの列内に配置され、第2の複数のバスが、各プロセッササブユニットを同じ行における少なくとも1つの隣接するプロセッササブユニットおよび同じ列における少なくとも1つの隣接するプロセッササブユニットに接続する、項目1から6のいずれか一項に記載の分散型プロセッサ。
[項目8]
複数のプロセッササブユニットがスター型パターンで配置され、第2の複数のバスが各プロセッササブユニットをスター型パターン内の少なくとも1つの隣接するプロセッササブユニットに接続する、項目1から7のいずれか一項に記載の分散型プロセッサ。
[項目9]
各プロセッササブユニットが少なくとも2つの専用メモリバンクと関連付けられる、項目1から8のいずれか一項に記載の分散型プロセッサ。
[項目10]
各専用メモリバンクが少なくとも1つのダイナミックランダムアクセスメモリを含む、項目1から9のいずれか一項に記載の分散型プロセッサ。
[項目11]
メモリチップであって、
基板と、
基板に配置されるメモリアレイであって、メモリアレイが複数の個別のメモリバンクを有する、メモリアレイと、
基板に配置される処理アレイであって、処理アレイが複数の論理部分を有し、各論理部分がアドレスジェネレータを含み、複数のアドレスジェネレータの各々が複数の個別のメモリバンクの対応する専用の1つと関連付けられる、処理アレイと、
複数のバスであって、各バスが複数のアドレスジェネレータの1つをその対応する専用メモリバンクに接続する、複数のバスと
を備えるメモリチップ。
[項目12]
各アドレスジェネレータが、アドレスジェネレータに対応するメモリバンク内で処理するためにアクセスされるアドレスを決定するように構成される、項目11に記載のメモリチップ。
[項目13]
処理アレイがさらに複数のアクセラレータを有し、各アクセラレータが、対応するアドレスジェネレータと関連付けられ、各アクセラレータが特定の機能を実行するように構成される、項目11または12に記載のメモリチップ。
[項目14]
特定の機能が乗累算機能、最小機能、最大機能、比較機能、またはカウント機能を含む、項目13に記載のメモリチップ。
[項目15]
メモリチップが、DRAMメモリチップ、Flashメモリチップ、SRAMメモリチップ、ReRAMメモリチップ、PRAMメモリチップ、MRAMメモリチップまたはROMメモリチップの少なくとも1つである、項目13または14に記載のメモリチップ。
[項目16]
各プロセッササブユニットが縮小命令セットコンピュータ(RISC)プロセッサ、または複雑命令セットコンピュータ(CISC)プロセッサを含む、項目11から15のいずれか一項に記載のメモリチップ。
[項目17]
外部ホストに接続されるメモリインタフェースをさらに含む、項目11から16のいずれか一項に記載のメモリチップ。
[項目18]
メモリインタフェースが、少なくとも1つの電子素子技術連合評議会(JEDEC)規格に準拠したインタフェースまたはその変種のインタフェースを含む、項目17に記載のメモリチップ。
[項目19]
複数の論理部分の各々が複数の個別のメモリバンクの少なくとも1つのメモリバンクに対応し、複数のメモリマットが複数の個別のメモリバンクの単一メモリバンク内に含まれ、単一メモリマットが複数の個別のメモリバンクの単一メモリバンク内に含まれる、項目11から18のいずれか一項に記載のメモリチップ。
[項目20]
分散型プロセッサであって、
基板と、
基板に配置されるメモリアレイであって、メモリアレイが複数の個別のメモリバンクを有し、複数の個別のメモリバンクの各々が1メガバイトよりも大きい容量を有する、メモリアレイと、
基板に配置される処理アレイであって、処理アレイが複数のプロセッササブユニットを有し、複数のプロセッササブユニットの各々が複数の個別のメモリバンクの対応する専用の1つと関連付けられる、処理アレイと
を備える分散型プロセッサ。
[項目21]
第1の複数のバスであって、各々が複数のプロセッササブユニットの1つを、対応する専用メモリバンクに接続する、第1の複数のバスと、
第2の複数のバスであって、各々が複数のプロセッササブユニットの1つを複数のプロセッササブユニットの別の1つに接続する、第2の複数のバスと、
をさらに備える、項目20に記載の分散型プロセッサ。
[項目22]
各専用メモリバンクが少なくとも1つのダイナミックランダムアクセスメモリバンクを含む、項目20または21に記載の分散型プロセッサ。
[項目23]
各専用メモリバンクが少なくとも1つのスタティックランダムアクセスメモリバンクを含む、項目20から22のいずれか一項に記載の分散型プロセッサ。
[項目24]
各専用メモリバンクが同じサイズである、項目20から23のいずれか一項に記載の分散型プロセッサ。
[項目25]
複数の個別のメモリバンクのうち少なくとも2つが異なるサイズを有する、項目20から24のいずれか一項に記載の分散型プロセッサ。
[項目26]
複数のプロセッササブユニットがメモリアレイ内の複数の個別のメモリバンク間に空間的に分散される、項目20から25のいずれか一項に記載の分散型プロセッサ。
[項目27]
基板が半導体基板を有する、項目20から26のいずれか一項に記載の分散型プロセッサ。
[項目28]
分散型プロセッサであって、
基板と、
基板に配置されるメモリアレイであって、メモリアレイが複数の個別のメモリバンクを有する、メモリアレイと、
基板に配置される処理アレイであって、処理アレイが複数のプロセッササブユニットを有し、複数のプロセッササブユニットの各々が複数の個別のメモリバンクの対応する専用の1つと関連付けられる、処理アレイと、
複数のバスであって、複数のバスの各々が複数のプロセッササブユニットの1つを複数のプロセッササブユニットの少なくとも別の1つに接続する、複数のバスと、
を備え、
複数のバスにはタイミングハードウェア論理コンポーネントがなく、その結果、プロセッササブユニット間の、および複数のバスのうち対応するバス全体にわたるデータ転送がタイミングハードウェア論理コンポーネントによって制御されない、
分散型プロセッサ。
[項目29]
複数のバスにはバスアービタがなく、その結果、プロセッササブユニット間、および複数のバスのうち対応するバス全体にわたるデータ転送がバスアービタによって制御されない、項目28に記載の分散型プロセッサ。
[項目30]
複数のバスが、複数のプロセッササブユニットの対応するプロセッササブユニット間にワイヤまたは光ファイバの少なくとも1つを有する、項目28または29に記載の分散型プロセッサ。
[項目31]
複数のプロセッササブユニットが、複数のプロセッササブユニットによって実行されるコードに従って、複数のバスの少なくとも1つにわたりデータを転送するように構成される、項目28から30のいずれか一項に記載の分散型プロセッサ。
[項目32]
コードが、複数のバスの少なくとも1つにわたるデータ転送のタイミングを規定する、項目31に記載の分散型プロセッサ。
[項目33]
第2の複数のバスをさらに含み、第2の複数のバスの各々が複数のプロセッササブユニットの1つを、対応する専用メモリバンクに接続する、項目28から32のいずれか一項に記載の分散型プロセッサ。
[項目34]
第2の複数のバスにはタイミングハードウェア論理コンポーネントがなく、その結果、プロセッササブユニットと、対応する専用メモリバンクとの間のデータ転送がタイミングハードウェア論理コンポーネントによって制御されない、項目33に記載の分散型プロセッサ。
[項目35]
第2の複数のバスにはバスアービタがなく、その結果、プロセッササブユニットと、対応する専用メモリバンクとの間のデータ転送がバスアービタによって制御されない、項目33に記載の分散型プロセッサ。
[項目36]
複数のプロセッササブユニットがメモリアレイ内の複数の個別のメモリバンク間に空間的に分散される、項目28から35のいずれか一項に記載の分散型プロセッサ。
[項目37]
基板が半導体基板を含む、項目28から36のいずれか一項に記載の分散型プロセッサ。
[項目38]
メモリチップ上の分散型プロセッサであって、
基板と、
基板に配置されるメモリアレイであって、メモリアレイが複数の個別のメモリバンクを有する、メモリアレイと、
基板に配置される処理アレイであって、処理アレイが複数のプロセッササブユニットを有し、複数のプロセッササブユニットの各々が複数の個別のメモリバンクの対応する専用の1つと関連付けられる、処理アレイと、
複数のバスであって、複数のバスの各々が複数のプロセッササブユニットの1つを複数の個別のメモリバンクの対応する専用の1つに接続する、複数のバスと、
を備え、
複数のバスにはタイミングハードウェア論理コンポーネントがなく、その結果、プロセッササブユニットと、複数の個別のメモリバンクの対応する専用の1つとの間のデータ転送、および複数のバスの対応する1つのバス全体にわたるデータ転送が、タイミングハードウェア論理コンポーネントによって制御されない、
メモリチップ上の分散型プロセッサ。
[項目39]
分散型プロセッサであって、
基板と、
基板に配置されるメモリアレイであって、メモリアレイが複数の個別のメモリバンクを有する、メモリアレイと、
基板に配置される処理アレイであって、処理アレイが複数のプロセッササブユニットを有し、複数のプロセッササブユニットの各々が複数の個別のメモリバンクの対応する専用の1つと関連付けられる、処理アレイと、
複数のバスであって、複数のバスの各々が複数のプロセッササブユニットの1つを複数のプロセッササブユニットの少なくとも別の1つのプロセッササブユニットに接続する、複数のバスと、
を備え、
複数のプロセッササブユニットが、複数のバス全体にわたるデータ転送のタイミングを制御するソフトウェアを実行することで、複数のバスの少なくとも1つのバス上でデータ転送が衝突しないように構成される、
分散型プロセッサ。
[項目40]
メモリチップ上の分散型プロセッサであって、
基板と、
基板に配置される複数のプロセッササブユニットであって、各プロセッササブユニットが他のプロセッササブユニットから独立した一連の命令を実行するように構成され、各一連の命令が単一プロセッササブユニットによって実行される一連のタスクを定義する、複数のプロセッササブユニットと、
基板に配置される対応する複数のメモリバンクであって、複数のプロセッササブユニットの各々が、複数のプロセッササブユニットの他のあらゆるプロセッササブユニットによって共有されない少なくとも1つの専用メモリバンクに接続される、対応する複数のメモリバンクと、
複数のバスであって、複数のバスの各々が複数のプロセッササブユニットの1つを複数のプロセッササブユニットの少なくとも他の1つのプロセッササブユニットに接続する、複数のバスと、
を備え、
複数のバスの少なくとも1つのバス全体にわたるデータ転送が、複数のバスの少なくとも1つに接続されるプロセッササブユニット内に含まれる一連の命令によって予め定義される、
メモリチップ上の分散型プロセッサ。
[項目41]
各一連の命令が、対応する一連のタスクを定義するマシンコードのセットを含む、項目40に記載のメモリチップ上の分散型プロセッサ。
[項目42]
一連のタスクは、一連の上位タスクを複数の一連のタスクとして複数の論理回路間に分散させるように構成されるコンパイラによって定義される、項目41に記載のメモリチップ上の分散型プロセッサ。
[項目43]
一連の上位タスクが、人間が読めるプログラミング言語における命令のセットを含む、項目42に記載のメモリチップ上の分散型プロセッサ。
[項目44]
複数のバスの少なくとも1つのバスに接続されるプロセッササブユニット内に含まれる一連の命令が送信タスクを含み、送信タスクは、複数のバスの少なくとも1つのバスに接続されるプロセッササブユニットが複数のバスの少なくとも1つのバスにデータを書き込むためのコマンドを含む、項目40から43のいずれか一項に記載のメモリチップ上の分散型プロセッサ。
[項目45]
複数のバスの少なくとも1つのバスに接続されるプロセッササブユニット内に含まれる一連の命令が受信タスクを含み、受信タスクは、複数のバスの少なくとも1つのバスに接続されるプロセッササブユニットが複数のバスの少なくとも1つのバスからデータを読み出すためのコマンドを含む、項目40から44のいずれか一項に記載のメモリチップ上の分散型プロセッサ。
[項目46]
メモリチップ上の分散型プロセッサであって、
メモリチップ上に配置される複数のプロセッササブユニットと、
メモリチップ上に配置される複数のメモリバンクであって、複数のメモリバンクの各々が、複数のメモリバンクのうち他のメモリバンク内に記憶されるデータから独立したデータを記憶するように構成され、複数のプロセッササブユニットの各々が複数のメモリバンク間から少なくとも1つの専用メモリバンクに接続される、複数のメモリバンクと、
複数のバスであって、複数のバスの各々が複数のプロセッササブユニットの1つを複数のメモリバンク間から1または複数の対応する専用メモリバンクに接続する、複数のバスと、
を備え、
複数のバスのうち特定のバス全体にわたるデータ転送が、複数のバスの特定のバスに接続される対応するプロセッササブユニットよって制御される、
メモリチップ上の分散型プロセッサ。
[項目47]
複数のメモリバンクの各々に記憶されるデータが、複数のメモリバンク間にデータを分散させるように構成されるコンパイラによって定義される、項目46に記載のメモリチップ上の分散型プロセッサ。
[項目48]
コンパイラが、対応するプロセッササブユニット間に分散された複数の下位タスクを利用して、一連の上位タスク内に定義されるデータを複数のメモリバンク間に分散させるように構成される、項目47に記載のメモリチップ上の分散型プロセッサ。
[項目49]
一連の上位タスクが、人間が読めるプログラミング言語における命令のセットを含む、項目48に記載のメモリチップ上の分散型プロセッサ。
[項目50]
一連の下位タスクが、マシンコードにおける命令のセットを含む、項目48または49に記載のメモリチップ上の分散型プロセッサ。
[項目51]
メモリチップ上の分散型プロセッサであって、
メモリチップ上に配置される複数のプロセッササブユニットと、
メモリチップ上に配置される複数のメモリバンクであって、複数のプロセッササブユニットの各々が複数のメモリバンク間から少なくとも1つの専用メモリバンクに接続され、複数のメモリバンクの各メモリバンクが、複数のメモリバンクのうち他のメモリバンク内に記憶されるデータから独立したデータを記憶するように構成され、複数のメモリバンク間から1つの特定のメモリバンク内に記憶される少なくともいくつかのデータが、複数のメモリバンクの少なくとも別のメモリバンク内に記憶されるデータの複製を含む、複数のメモリバンクと、
複数のバスであって、複数のバスの各々が複数のプロセッササブユニットの1つを複数のメモリバンク間から1または複数の対応する専用メモリバンクに接続する、複数のバスと、
を備え、
複数のバスのうち特定のバス全体にわたるデータ転送が、複数のバスの特定のバスに接続される対応するプロセッササブユニットよって制御される、
メモリチップ上の分散型プロセッサ。
[項目52]
複数のメモリバンク、および複数のメモリバンクの少なくとも別のメモリバンク間から1つの特定のメモリバンク全体にわたり複製される少なくともいくつかのデータが、メモリバンク全体にわたりデータを複製するように構成されるコンパイラによって定義される、項目51に記載のメモリチップ上の分散型プロセッサ。
[項目53]
複数のメモリバンク、および複数のメモリバンクの少なくとも別のメモリバンク間から1つの特定のメモリバンク全体にわたり複製される少なくともいくつかのデータが、ニューラルネットワークのウェイトを含む、項目51または52に記載のメモリチップ上の分散型プロセッサ。
[項目54]
ニューラルネットワークにおけるノードの各々が、複数のプロセッササブユニット間から少なくとも1つのプロセッササブユニットによって定義される、項目53に記載のメモリチップ上の分散型プロセッサ。
[項目55]
ノードの各々が、ノードを定義する少なくとも1つのプロセッササブユニットによって実行されるマシンコードを含む、項目54に記載のメモリチップ上の分散型プロセッサ。
[項目56]
複数のプロセッササブユニットおよび複数のメモリバンクを含むメモリチップ上で一連の実行命令をコンパイルするプログラムであって、複数のプロセッササブユニット間からの複数のプロセッササブユニットの各々が複数のメモリバンク間から少なくとも1つの対応する専用メモリバンクに接続され、プログラムは少なくとも1つのプロセッサに、
一連の命令をサブシリーズ命令の複数のグループに分割する手順であって、
分割する手順は、一連の命令と関連付けられたタスクを複数のプロセッササブユニットの異なるものに割り当てる手順であって、複数のプロセッササブユニットが、メモリチップに配置される複数のメモリバンク間に空間的に分散される、手順と、メモリチップの複数のプロセッササブユニットの複数対の間でデータを転送するタスクを生成し、複数のプロセッササブユニットの複数対の各々がバスによって接続される、手順と、割り当てられたタスクおよび生成されたタスクをサブシリーズ命令の複数のグループに分類し、サブシリーズ命令の複数のグループの各々が複数のプロセッササブユニットの異なる1つに対応する、手順と、を含む、手順と、
サブシリーズ命令の複数のグループの各々に対応するマシンコードを生成する手順と、
分割に従って、サブシリーズ命令の複数のグループの各々に対応する、生成されたマシンコードを、複数のプロセッササブユニットのうち対応する1つのプロセッササブユニットに割り当てる手順と
を実行させるためのプログラム。
[項目57]
一連の命令と関連付けられたタスクをプロセッササブユニットの異なるものに割り当てる手順は、メモリチップ上の2つ以上のプロセッササブユニット間の空間的近接によって決まる、項目56に記載のプログラム。
[項目58]
少なくとも1つのプロセッサに、
分類に基づいて一連の命令と関連付けられたデータを分類する手順と、
分割に従ってデータを複数のメモリバンクに割り当てる手順と
を実行させるための、項目56または57に記載のプログラム。
[項目59]
データを分類する手順は、データのうち複数のメモリバンクの2つ以上に複製するための少なくとも一部分を決定する手順を含む、項目58に記載のプログラム。
[項目60]
メモリチップであって、自らの専用の少なくとも1つのメモリバンクに各々が接続された複数のプロセッササブユニットと、対応する複数のメモリバンクとを含み、メモリチップの複数のプロセッササブユニットが、項目56から59のいずれか一項に記載のプログラムに従って生成されるマシンコードを実行するように構成される、メモリチップ。
[項目61]
メモリチップであって、メモリチップが、
複数のメモリバンクであって、各メモリバンクがバンク行デコーダおよびバンク列デコーダを有する、複数のメモリバンクと、
複数のメモリサブバンクであって、各メモリサブバンクが、読み書きを可能にするサブバンク行デコーダおよびサブバンク列デコーダを自らの位置に有し、各メモリサブバンクが、複数のメモリセルを各々が含む複数のメモリマットを有する、複数のメモリサブバンクと、
を備え、
各サブバンク行デコーダおよび各サブバンク列デコーダがバンク行デコーダおよびバンク列デコーダに接続される、
メモリチップ。
[項目62]
各メモリサブバンクがさらに、各メモリバンクのコントローラからの読み要求および書き要求を処理するか否かを決定するように構成されるサブバンクコントローラを有する、項目61に記載のメモリチップ。
[項目63]
各メモリバンクのコントローラがシステムクロックに同期される、項目62に記載のメモリチップ。
[項目64]
各メモリサブバンクのサブバンクコントローラがシステムクロックに同期されない、項目62に記載のメモリチップ。
[項目65]
各メモリサブバンクがさらに、各メモリサブバンクを専用メモリとして使用するプロセッササブユニットを有する、項目61から64のいずれか一項に記載のメモリチップ。
[項目66]
プロセッササブユニットが、構成可能プロセッササブユニットまたはアクセラレータを含む、項目65に記載のメモリチップ。
[項目67]
各プロセッササブユニットが、バンク行デコーダおよびバンク列デコーダを使用せずにサブバンク行デコーダおよびサブバンク列デコーダを使用して各プロセッササブユニット専用のサブバンクにアクセスするように構成される、項目65または66に記載のメモリチップ。
[項目68]
メモリチップであって、メモリチップが、
複数のメモリバンクであって、各メモリバンクがバンクコントローラおよび複数のメモリサブバンクを有する、複数のメモリバンクと、
複数のメモリサブバンクであって、各メモリサブバンクが、読み書きを可能にするサブバンク行デコーダおよびサブバンク列デコーダを自らの位置に有し、各メモリサブバンクが、複数のメモリセルを各々が含む複数のメモリマットを有する、複数のメモリサブバンクと、
を備え、
各サブバンク行デコーダおよび各サブバンク列デコーダがバンクコントローラからの読み要求および書き要求を処理する、
メモリチップ。
[項目69]
各メモリサブバンクがさらに、バンクコントローラからの読み要求および書き要求を処理するか否かを決定するように構成されるサブバンクコントローラを有する、項目68に記載のメモリチップ。
[項目70]
バンクコントローラがシステムクロックに同期される、項目69に記載のメモリチップ。
[項目71]
各メモリサブバンクのサブバンクコントローラがシステムクロックに同期されない、項目69に記載のメモリチップ。
[項目72]
各メモリサブバンクがさらに、各メモリサブバンクを専用メモリとして使用するプロセッササブユニットを有する、項目68から71のいずれか一項に記載のメモリチップ。
[項目73]
各プロセッササブユニットが、バンクコントローラを使用せずに各メモリサブバンクの行デコーダおよび列デコーダを使用して各プロセッササブユニット専用のサブバンクにアクセスするように構成された、項目72に記載のメモリチップ。
[項目74]
メモリチップであって、メモリチップが、
複数のメモリバンクであって、各メモリバンクが、読み書きを処理するバンクコントローラを自らの位置に有し、各メモリバンクが、複数のメモリセルと、マット行デコーダおよびマット列デコーダとを各々が含む複数のメモリマットを有する、複数のメモリバンク
を備え、
マット行デコーダおよびマット列デコーダがサブバンクコントローラからの読み要求および書き要求を処理する、
メモリチップ。
[項目75]
各メモリマットがさらに、バンクコントローラからのコマンドアドレスに基づいてサブバンクコントローラからの読み要求および書き要求を処理するか否かを決定するように構成されるコンパレータを有する、項目74に記載のメモリチップ。
[項目76]
各メモリマットが、1または複数のヒューズによって決定される割り当てられたアドレスレンジを有する、項目74または75に記載のメモリチップ。
[項目77]
1または複数のヒューズが、不良であるメモリマットを無効にするように構成される、項目76に記載のメモリチップ。
[項目78]
各サブバンクがさらに、各サブバンクを専用メモリとして使用するプロセッササブユニットを有する、項目74から77のいずれか一項に記載のメモリチップ。
[項目79]
メモリチップであって、
複数のメモリバンクであって、各メモリバンクが、読み書きを可能にするバンクコントローラと、行デコーダと、列デコーダと、を自らの位置に有する、複数のメモリバンクと、
各バンクコントローラを少なくとも他の1つのバンクコントローラに接続する複数のバスと、
を備えるメモリチップ。
[項目80]
データ転送が複数のメモリバンクのメインバスに割り込むことなく複数のバスにアクセスできる、項目79に記載のメモリチップ。
[項目81]
各バンクコントローラが、複数の他のバンクコントローラに接続され、データを送信または受信するために複数の他のバンクコントローラのうちもう1つを選択するように構成可能である、項目79または80に記載のメモリチップ。
[項目82]
各メモリバンクがダイナミックランダムアクセスメモリバンクを含む、項目79から81のいずれか一項に記載のメモリチップ。
[項目83]
各バンクコントローラが、構成可能であり、複数のメモリバンクのうち自らを有するものの中での読み書きのためのアドレスを決定するように構成される、項目79から82のいずれか一項に記載のメモリチップ。
[項目84]
各バンクコントローラが、他のバンクコントローラから入ってくるデータを処理してから、複数のメモリバンクのうち自らを有するものにデータを渡すように構成される、項目79から83のいずれか一項に記載のメモリチップ。
[項目85]
各コントローラが、別の空間的に隣接するコントローラに接続される、項目79から84のいずれか一項に記載のメモリチップ。
[項目86]
メモリデバイスであって、
基板と、
基板上の複数のメモリバンクと、
基板上の複数のプライマリ論理ブロックであって、複数のプライマリ論理ブロックの各々が複数のメモリバンクの少なくとも1つに接続される、複数のプライマリ論理ブロックと、
基板上の複数の余剰ブロックであって、複数の余剰ブロックの各々が複数のメモリバンクの少なくとも1つに接続され、複数の余剰ブロックの各々が複数のプライマリ論理ブロックの少なくとも1つを複製する、複数の余剰ブロックと、
基板上の複数の設定スイッチであって、複数の設定スイッチの各々が複数のプライマリ論理ブロックの少なくとも1つまたは複数の余剰ブロックの少なくとも1つに接続される、複数の設定スイッチと、
を備え、
複数のプライマリ論理ブロックの1つと関連付けられる不良を検出すると、
複数の設定スイッチの第1の設定スイッチが複数のプライマリ論理ブロックの1つを無効にするように構成され、
複数の設定スイッチの第2の設定スイッチが、複数のプライマリ論理ブロックの1つを複製する複数の余剰ブロックの1つを有効にするように構成される、
メモリデバイス。
[項目87]
複数の設定スイッチが複数のアクティブ化スイッチおよび複数の非アクティブ化スイッチを含み、
複数のアクティブ化スイッチの各々および複数の非アクティブ化スイッチの各々が外部入力を含み、
複数のアクティブ化スイッチの各々は、外部入力におけるアクティブ化信号がスイッチを閉じた状態にさせるように構成され、
複数の非アクティブ化スイッチの各々は、外部入力における非アクティブ化信号がスイッチを開けた状態にさせるように構成される、
項目86に記載のメモリデバイス。
[項目88]
複数のプライマリ論理ブロックの少なくとも1つが第1の専用接続で複数のメモリバンクのサブセットに接続され、複数のプライマリ論理ブロックの少なくとも1つを複製する複数の余剰ブロックの少なくとも1つが第2の専用接続で複数のメモリバンクのサブセットに接続される、項目86または87に記載のメモリデバイス。
[項目89]
複数の設定スイッチの各々が、複数のプライマリ論理ブロックまたは複数の余剰ブロックの少なくとも1つをクロックノードまたはパワーノードの少なくとも1つに連結する、項目86から88のいずれか一項に記載のメモリデバイス。
[項目90]
複数のプライマリ論理ブロックが、
複数のメモリバンクのうちの1つの内部の読み取りオペレーションおよび書き込みオペレーションを有効にするように構成される少なくとも1つのメモリ論理ブロックと、
メモリ内計算を実行するように構成される少なくとも1つのビジネス論理ブロックと、
を含む、項目86から89のいずれか一項に記載のメモリデバイス。
[項目91]
少なくとも1つのビジネス論理ブロックが第1のビジネス論理ブロックを含み、
複数の余剰ブロックが、第1のビジネス論理ブロックを複製する第2のビジネス論理ブロックを含む、
項目90に記載のメモリデバイス。
[項目92]
複数の設定スイッチが、ヒューズ、アンチヒューズ、不揮発性メモリデバイスまたはワンタイムプログラマブルデバイスの少なくとも1つを含む、項目86から91のいずれか一項に記載のメモリデバイス。
[項目93]
複数のプライマリ論理ブロックの各々および複数の余剰ブロックの各々がアドレスバスおよびデータバスに接続される、項目86から92のいずれか一項に記載のメモリデバイス。
[項目94]
複数のプライマリ論理ブロックの少なくとも1つが、
少なくとも1つのローカル論理ユニットと、
少なくとも1つの計算ユニットと、
少なくとも1つの複製ユニットと、
を含み、
少なくとも1つの複製ユニットが少なくとも1つの計算ユニットを複製し、
少なくとも1つのローカル論理ユニットが少なくとも1つの計算ユニットよりも小サイズを有する、
項目86から93のいずれか一項に記載のメモリデバイス。
[項目95]
複数のプライマリ論理ブロックの少なくとも1つが、
複数のローカル設定スイッチであって、複数のローカル設定スイッチの各々が少なくとも1つの計算ユニットまたは少なくとも1つの複製ユニットの少なくとも1つに接続される、複数のローカル設定スイッチ
を含み、
不良が少なくとも1つの計算ユニット内で検出された場合に、複数のローカル設定スイッチが、少なくとも1つのローカル計算ユニットを無効にし、少なくとも1つの複製ユニットを有効にするように構成される、
項目94に記載のメモリデバイス。
[項目96]
アドレスマネージャと、
アドレスマネージャを複数のメモリバンクの各々、複数のプライマリ論理ブロックの各々、および複数の余剰ブロックの各々に連結するアドレスバスと、
をさらに備え、
複数のプライマリ論理ブロックの1つと関連付けられる不良を検出すると、無効アドレスが複数のプライマリ論理ブロックの1つに割り当てられ、有効アドレスが複数の余剰ブロックの1つに割り当てられる、項目86から95のいずれか一項に記載のメモリデバイス。
[項目97]
複数のプライマリ論理ブロックが直列に接続され、
複数のプライマリ論理ブロックの各々が並列スイッチと並列に接続され、
複数のプライマリ論理ブロックの1つと関連付けられる不良を検出すると、複数のプライマリ論理ブロックの1つに接続される並列スイッチが複数のプライマリ論理ブロックの2つを連結するようにアクティブ化される、項目86から96のいずれか一項に記載のメモリデバイス。
[項目98]
並列スイッチがアンチヒューズを含む、項目97に記載のメモリデバイス。
[項目99]
並列スイッチが、選択されたサイクル遅延を含むサンプリング回路を有する、項目97に記載のメモリデバイス。
[項目100]
複数のプライマリ論理ブロックおよび複数の余剰ブロックが2次元格子内の基板上に配置され、
複数のプライマリ論理ブロックの各々および複数の余剰ブロックの各々が接続盤と相互接続され、入力ブロックが2次元格子の各ラインおよび各列の周辺に配置される、
項目86から99のいずれか一項に記載のメモリデバイス。
[項目101]
メモリチップがDRAMメモリ、Flashメモリ、SRAMメモリ、ReRAMメモリ、PRAMメモリまたはMRAMメモリの少なくとも1つを含む、項目86から100のいずれか一項に記載のメモリデバイス。
[項目102]
複数のプライマリ論理ブロックの各々が、複数の余剰ブロックの少なくとも1つと同等の計算能力を有する、項目86から101のいずれか一項に記載のメモリデバイス。
[項目103]
複数のプライマリ論理ブロックが、少なくとも1つのローカル計算ユニットと、少なくとも1つの余剰計算ユニットと、少なくとも1つのローカル計算ユニットを複製する少なくとも1つの余剰計算ユニットと、を含む、項目86から102のいずれか一項に記載のメモリデバイス。
[項目104]
第1の設定スイッチがさらに、複数のプライマリ論理ブロックの1つを複製する複数の余剰ブロックの1つを有効にするように構成される、項目86から103のいずれか一項に記載のメモリデバイス。
[項目105]
メモリチップ上の分散型プロセッサであって、
基板と、
基板上のアドレスマネージャと、
基板上の複数のプライマリ論理ブロックであって、複数のプライマリ論理ブロックの各々が複数のメモリバンクの少なくとも1つに接続される、複数のプライマリ論理ブロックと、
基板上の複数の余剰ブロックであって、複数の余剰ブロックの各々が複数のメモリバンクの少なくとも1つに接続され、複数の余剰ブロックの各々が複数のプライマリ論理ブロックの少なくとも1つを複製する、複数の余剰ブロックと、
複数のプライマリ論理ブロックの各々と、複数の余剰ブロックの各々と、アドレスマネージャに接続される基板上のバスと、
を備え、
メモリチップ上の分散型プロセッサが、
試験プロトコルに合格している複数のプライマリ論理ブロック内のブロックに実行ID番号を割り当て、
試験プロトコルに合格していない複数のプライマリ論理ブロック内のブロックに不正ID番号を割り当て、
試験プロトコルに合格している複数の余剰ブロック内のブロックに実行ID番号を割り当てるように構成される、
メモリチップ上の分散型プロセッサ。
[項目106]
実行ID番号が割り当てられた複数の余剰ブロック内のブロックが、不正ID番号が割り当てられた複数のプライマリ論理ブロック内のブロックと等しいかまたはより大きい、項目105に記載のメモリチップ上の分散型プロセッサ。
[項目107]
複数のプライマリ論理ブロックの各々および複数の余剰ブロックの各々が、ヒューズ付き識別回路を含む、項目106に記載のメモリチップ上の分散型プロセッサ。
[項目108]
バスがコマンドライン、データライン、およびアドレスラインを含む、項目107に記載のメモリチップ上の分散型プロセッサ。
[項目109]
メモリチップ上の分散型プロセッサを構成する方法であって、
メモリチップの基板上の複数のプライマリ論理ブロックの各々に少なくとも1つの回路機能があるかを試験する段階と、
試験の結果に基づいて複数のプライマリ論理ブロック内に少なくとも1つの不良論理ブロックを識別する段階であって、少なくとも1つの不良論理ブロックがメモリチップの基板に配置される少なくとも1つのメモリバンクに接続される段階と、
メモリチップの基板上の少なくとも1つの余剰ブロックに少なくとも1つの回路機能があるかを試験する段階であって、少なくとも1つの余剰ブロックが少なくとも1つの不良論理ブロックを複製し、少なくとも1つのメモリバンクに接続される段階と、
外部信号を非アクティブ化スイッチに印加することによって少なくとも1つの不良論理ブロックを無効にする段階であって、非アクティブ化スイッチが少なくとも1つの不良論理ブロックに接続され、メモリチップの基板に配置される段階と、
外部信号をアクティブ化スイッチに印加することによって少なくとも1つの余剰ブロックを有効にする段階であって、アクティブ化スイッチが少なくとも1つの余剰ブロックに接続され、メモリチップの基板に配置される段階と
を備える、メモリチップ上の分散型プロセッサを構成する方法。
[項目110]
メモリチップ上の分散型プロセッサを構成する方法であって、
メモリチップの基板上の複数のプライマリ論理ブロックおよび複数の余剰ブロックを有効にする段階と、
メモリチップの基板上の複数のプライマリ論理ブロックの各々に少なくとも1つの回路機能があるかを試験する段階と、
試験の結果に基づいて複数のプライマリ論理ブロック内に少なくとも1つの不良論理ブロックを識別する段階であって、少なくとも1つの不良論理ブロックがメモリチップの基板に配置される少なくとも1つのメモリバンクに接続される段階と、
メモリチップの基板上の少なくとも1つの余剰ブロックに少なくとも1つの回路機能があるかを試験する段階であって、少なくとも1つの余剰ブロックが少なくとも1つの不良論理ブロックを複製し、少なくとも1つのメモリバンクに接続される段階と、
外部信号をアクティブ化スイッチに印加することによって少なくとも1つの余剰ブロックを無効にする段階であって、アクティブ化スイッチが少なくとも1つの余剰ブロックに接続され、メモリチップの基板に配置される段階と、
を備える、メモリチップ上の分散型プロセッサを構成する方法。
[項目111]
処理デバイスであって、
基板と、
基板上の複数のメモリバンクと、
複数のメモリバンクの各々に接続される基板上のメモリコントローラと、
基板上の複数の処理ユニットであって、複数の処理ユニットの各々がメモリコントローラに接続され、複数の処理ユニットが構成マネージャを有する、複数の処理ユニットと、
を備え、
構成マネージャが、
実行されるタスクであって、少なくとも1つの計算を要求するタスクの第1の指示を受信するように構成され、
少なくとも1つの計算を実行する少なくとも1つの選択された処理ユニットの能力に基づいて、複数の処理ユニットから少なくとも1つの選択された処理ユニットに信号を送るように構成され、
第2の指示を少なくとも1つの選択された処理ユニットに送信するように構成され、
メモリコントローラが、
少なくとも1つの通信ラインを利用して、少なくとも2つのメモリバンクから少なくとも1つの選択された処理ユニットにデータを送るように構成され、メモリコントローラを介して、少なくとも1つの通信ラインが、少なくとも2つのメモリバンクおよび少なくとも1つの選択された処理ユニットに接続されるように構成される、
処理デバイス。
[項目112]
第2の指示を送信する段階が、少なくとも1つの選択された処理ユニットによってタスクを実行する命令を伝達する段階を含み、少なくとも1つの選択された処理ユニットがデータをメモリコントローラに送信する、またはデータをメモリコントローラから受信するように構成される、項目111に記載の処理デバイス。
[項目113]
第2の指示を送信する段階が、データをメモリコントローラに送る命令を伝達する段階を含む、項目111または112に記載の処理デバイス。
[項目114]
少なくとも1つの選択された処理ユニットが、少なくとも2つのメモリバンクから第1のメモリバンク内の開放されたメモリラインへの一連のアクセス中に、少なくとも2つのメモリバンクから第2のメモリバンク内のメモリラインを開放するように構成される、項目111から113のいずれか一項に記載の処理デバイス。
[項目115]
通信ラインが第1のメモリバンクに開放されるラインアクセス期間中に、選択された処理ユニットがデータを第2のメモリバンクに転送するように構成される、項目114に記載の処理デバイス。
[項目116]
メモリコントローラが、複数のメモリバンクからの少なくとも2つのデータ入力と、複数の処理ユニットの各々に接続される少なくとも2つのデータ出力と、を含み、
メモリコントローラが、2つのデータ入力を介して2つのメモリバンクからデータを同時に受信するように構成され、
メモリコントローラが、2つのデータ入力を介して受信されたデータを、少なくとも1つの選択された処理ユニットに2つのデータ出力を介して同時に送信するように構成される、項目111から115のいずれか一項に記載の処理デバイス。
[項目117]
複数の処理ユニットが、予め定義されたタスク用に構成される複数のアクセラレータを含む、項目111から116のいずれか一項に記載の処理デバイス。
[項目118]
複数のアクセラレータが、ベクトル乗累算ユニットまたはダイレクトメモリアクセスの少なくとも1つを含む、項目117に記載の処理デバイス。
[項目119]
構成マネージャが、RISCプロセッサまたはマイクロコントローラの少なくとも1つを含む、項目117に記載の処理デバイス。
[項目120]
メモリバンクに接続される外部インタフェースをさらに含む、項目111から119のいずれか一項に記載の処理デバイス。
[項目121]
処理デバイスがさらに、
第1のメモリラインを通じて第1のアドレスから複数の処理ユニットの少なくとも1つにデータを供給し、ラインアクセス期間内に第2のメモリライン内の第2のアドレスを開放し、第1のアドレスが複数のメモリバンクの第1のメモリバンク内に存在し、第2のアドレスが複数のメモリバンクの第2のメモリバンク内に存在するように構成され、
第2のメモリラインを通じて第2のアドレスから複数の処理ユニットの少なくとも1つにデータを供給し、第2のラインアクセス期間内に第1のメモリライン内の第1のメモリバンクにおける第3のアドレスを開放するように構成される、
項目111から120のいずれか一項に記載の処理デバイス。
[項目122]
コンパイラは、
タスクを実行するために同時に要求されるワードの数を決定し、
複数のメモリバンクの各々から同時にアクセスできるワードの数を決定し、
同時に要求されるワードの数が同時にアクセスできるワードの数よりも大きい場合に、同時に要求されるワードの数を複数のメモリバンク間で分割するように構成される、
項目111から121のいずれか一項に記載の処理デバイス。
[項目123]
ワードがマシン命令を含む、項目122に記載の処理デバイス。
[項目124]
構成マネージャが、複数の処理ユニットの少なくとも1つに送信されるコマンドを記憶するローカルメモリを含む、項目111から123のいずれか一項に記載の処理デバイス。
[項目125]
メモリコントローラが、外部インタフェースからの要求の受信に応答してタスクを割り込ませるように構成される、項目111から124のいずれか一項に記載の処理デバイス。
[項目126]
前駆複数のメモリバンクが、DRAMマット、DRAM、バンク、フラッシュマットSRAMマット、の少なくとも1つを含む、項目111から125のいずれか一項に記載の処理デバイス。
[項目127]
複数の処理ユニットが、少なくとも1つの演算論理ユニットと、少なくとも1つのベクトル処理論理ユニットと、少なくとも1つのレジスタと、少なくとも1つのダイレクトメモリアクセスと、を含む、項目111から126のいずれか一項に記載の処理デバイス。
[項目128]
構成マネージャおよび複数の処理ユニットが、タスクを終了させた後で互いにメモリコントローラにアクセスをハンドオーバするように構成される、項目111から127のいずれか一項に記載の処理デバイス。
[項目129]
分散型メモリデバイスを動作するために実行される方法であって、
分散型メモリデバイスのタスクをコンパイラによってコンパイルする段階であって、タスクが少なくとも1つの計算を要求する段階を備え、コンパイルする段階が、
タスクを実行するために同時に要求されるワードの数を決定する段階と、
複数のメモリバンクの1つから同時にアクセスできるワードの数が、同時に要求されるワードの数よりも少ない場合に、基板に配置される複数のメモリバンク内に同時にアクセスされる必要のあるワードを書き込む命令を与える段階と、
基板に配置される構成マネージャによって、タスクを実行する指示を受信する段階と、
指示を受信する段階に応答して、基板に配置されるメモリコントローラが、
第1のラインアクセスサイクル内で、
第1のメモリラインを使用して複数のメモリバンクからの第1のメモリバンクから少なくとも1つの第1のワードにアクセスするように、
少なくとも1つの第1のワードを少なくとも1つの処理ユニットに送信するように、
第2のメモリバンク内の第1のメモリラインを開放して複数のメモリバンクからの第2のメモリバンクから第2のアドレスにアクセスするように、および、
第2のラインアクセスサイクル内で、
第1のメモリラインを使用して第2のメモリバンクから少なくとも1つの第2のワードにアクセスするように、
少なくとも1つの第2のワードを少なくとも1つの処理ユニットに送信するように、
第1のメモリバンク内の第2のメモリラインを使用して第1のメモリバンクから第3のアドレスにアクセスするように、構成する段階と、を有する、
方法。
[項目130]
タスクをコンパイルする段階がさらに、
タスクを実行するのに必要なサイクル数を決定する段階と、
複数のメモリバンクの単一メモリバンク内で一連のサイクルで必要されるワードを書き込む段階と、を含む、項目129に記載の方法。
[項目131]
少なくとも1つのプロセッサに、
少なくとも1つの計算を要求するタスクを実行するために同時に要求されるワードの数を決定することと、
複数のメモリバンクの1つから同時にアクセスできるワードの数が、同時に要求されるワードの数よりも少ない場合に、基板に配置される複数のメモリバンク内に同時にアクセスされる必要のあるワードを書き込むことと、
タスクを実行する指示を、基板に配置される構成マネージャに送信することと、
基板に配置されるメモリコントローラが、
第1のラインアクセスサイクル内で、第1のメモリラインを使用して複数のメモリバンクからの第1のメモリバンクから少なくとも1つの第1のワードにアクセスするように、少なくとも1つの第1のワードを少なくとも1つの処理ユニットに送信するように、第2のメモリバンク内の第1のメモリラインを開放して複数のメモリバンクからの第2のメモリバンクから第2のアドレスにアクセスするように、および、
第2のラインアクセスサイクル内で、第1のメモリラインを使用して第2のメモリバンクから少なくとも1つの第2のワードにアクセスするように、少なくとも1つの第2のワードを少なくとも1つの処理ユニットに送信するように、第1のメモリバンク内の第2のメモリラインを使用して第1のメモリバンクから第3のアドレスにアクセスするように構成する命令を送信することと
をさせる、
プログラム。

Claims (9)

  1. メモリチップであって、前記メモリチップが、
    複数のメモリバンクであって、各メモリバンクがバンクコントローラおよび複数のメモリサブバンクを有メモリサブバンクが、読み書きを可能にするサブバンク行デコーダおよびサブバンク列デコーダを自らの位置に有する、複数のメモリバンク
    を備え、
    各メモリサブバンクが、複数のメモリマットを有し、
    各メモリマットが、複数のメモリセル、マット行デコーダおよびマット列デコーダを含み、
    複数の前記サブバンク行デコーダおよび複数の前記サブバンク列デコーダが、前記バンクコントローラからの読み要求および書き要求を受信し、前記バンクコントローラから受信した読み要求および書き要求を処理するように構成され、
    複数の前記マット行デコーダおよび複数の前記マット列デコーダが、複数の前記サブバンク行デコーダおよび複数の前記サブバンク列デコーダからの読み要求および書き要求をそれぞれ処理する、
    メモリチップ。
  2. 各メモリサブバンクがさらに、前記バンクコントローラからの読み要求および書き要求を処理するか否かを決定するように構成されるサブバンクコントローラを有する、請求項に記載のメモリチップ。
  3. 前記サブバンクコントローラがシステムクロックに同期される、請求項に記載のメモリチップ。
  4. 記サブバンクコントローラがシステムクロックに同期されない、請求項に記載のメモリチップ。
  5. 各メモリサブバンクがさらに、各メモリサブバンクを専用メモリとして使用するプロセッササブユニットを有する、請求項からのいずれか一項に記載のメモリチップ。
  6. 各プロセッササブユニットが、前記バンクコントローラを使用せずに前記サブバンクの前記サブバンク行デコーダおよび前記サブバンク列デコーダを使用して前記プロセッササブユニット専用のサブバンクにアクセスするように構成された、請求項に記載のメモリチップ。
  7. 前記バンクコントローラが、バンク行デコーダおよびバンク列デコーダを有し、
    複数の前記サブバンク行デコーダおよび複数の前記サブバンク列デコーダが、前記バンク行デコーダおよびバンク列デコーダの少なくとも1つからの読み要求および書き要求を受信するように構成される、請求項1から5のいずれか一項に記載のメモリチップ。
  8. 各プロセッササブユニットが、前記バンク行デコーダおよび前記バンク列デコーダを使用せずに前記サブバンクの複数の前記サブバンク行デコーダおよび複数の前記サブバンク列デコーダを使用して前記プロセッササブユニットに専用のサブバンクにアクセスするように構成される、請求項7に記載のメモリチップ。
  9. 前記プロセッササブユニットが、構成可能プロセッササブユニットまたはアクセラレータを含む、請求項5から6及び8のいずれか一項、または、請求項5に従属する請求項7に記載のメモリチップ。
JP2020505784A 2017-07-30 2018-07-30 メモリチップ Active JP7242634B2 (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201762538722P 2017-07-30 2017-07-30
US201762538724P 2017-07-30 2017-07-30
US62/538,724 2017-07-30
US62/538,722 2017-07-30
US201762548990P 2017-08-23 2017-08-23
US62/548,990 2017-08-23
PCT/IB2018/000995 WO2019025864A2 (en) 2017-07-30 2018-07-30 ARCHITECTURE OF DISTRIBUTED PROCESSORS BASED ON MEMORIES

Publications (3)

Publication Number Publication Date
JP2020529676A JP2020529676A (ja) 2020-10-08
JP2020529676A5 JP2020529676A5 (ja) 2021-09-09
JP7242634B2 true JP7242634B2 (ja) 2023-03-20

Family

ID=65233543

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020505784A Active JP7242634B2 (ja) 2017-07-30 2018-07-30 メモリチップ

Country Status (6)

Country Link
US (10) US11023336B2 (ja)
EP (2) EP4187539B1 (ja)
JP (1) JP7242634B2 (ja)
CN (2) CN111149166B (ja)
TW (2) TW202301125A (ja)
WO (1) WO2019025864A2 (ja)

Families Citing this family (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6832050B2 (ja) 2017-02-23 2021-02-24 セレブラス システムズ インク. 加速化ディープラーニング
US11488004B2 (en) 2017-04-17 2022-11-01 Cerebras Systems Inc. Neuron smearing for accelerated deep learning
CA3099965C (en) 2017-04-17 2022-08-02 Cerebras Systems Inc. Neuron smearing for accelerated deep learning
WO2018193370A1 (en) 2017-04-17 2018-10-25 Cerebras Systems Inc. Task activating for accelerated deep learning
JP7242634B2 (ja) * 2017-07-30 2023-03-20 ニューロブレード リミテッド メモリチップ
US11514996B2 (en) 2017-07-30 2022-11-29 Neuroblade Ltd. Memory-based processors
US11144316B1 (en) 2018-04-17 2021-10-12 Ali Tasdighi Far Current-mode mixed-signal SRAM based compute-in-memory for low power machine learning
US11328208B2 (en) * 2018-08-29 2022-05-10 Cerebras Systems Inc. Processor element redundancy for accelerated deep learning
EP3647801A1 (de) * 2018-10-30 2020-05-06 dSPACE digital signal processing and control engineering GmbH Verfahren zur überprüfung eines fpga-programms
GB2580151B (en) * 2018-12-21 2021-02-24 Graphcore Ltd Identifying processing units in a processor
CN114072778A (zh) * 2019-05-07 2022-02-18 麦姆瑞克斯公司 存储器处理单元架构
US20220405221A1 (en) * 2019-07-03 2022-12-22 Huaxia General Processor Technologies Inc. System and architecture of pure functional neural network accelerator
US20210011732A1 (en) * 2019-07-09 2021-01-14 MemryX Inc. Matrix Data Reuse Techniques in Processing Systems
US12249189B2 (en) 2019-08-12 2025-03-11 Micron Technology, Inc. Predictive maintenance of automotive lighting
US12061971B2 (en) 2019-08-12 2024-08-13 Micron Technology, Inc. Predictive maintenance of automotive engines
TW202122993A (zh) * 2019-08-13 2021-06-16 埃利亞德 希勒爾 記憶體式處理器
US20220269645A1 (en) 2019-08-13 2022-08-25 Neuroblade Ltd. Memory mat as a register file
US11055003B2 (en) * 2019-08-20 2021-07-06 Micron Technology, Inc. Supplemental AI processing in memory
US11182110B1 (en) * 2019-08-21 2021-11-23 Xilinx, Inc. On-chip memory block circuit
US11449739B2 (en) 2019-08-22 2022-09-20 Google Llc General padding support for convolution on systolic arrays
US11573705B2 (en) * 2019-08-28 2023-02-07 Micron Technology, Inc. Artificial intelligence accelerator
US11017842B2 (en) 2019-08-29 2021-05-25 Micron Technology, Inc. Copy data in a memory system with artificial intelligence mode
US12210401B2 (en) 2019-09-05 2025-01-28 Micron Technology, Inc. Temperature based optimization of data storage operations
US11650746B2 (en) * 2019-09-05 2023-05-16 Micron Technology, Inc. Intelligent write-amplification reduction for data storage devices configured on autonomous vehicles
US10915298B1 (en) 2019-10-08 2021-02-09 Ali Tasdighi Far Current mode multiply-accumulate for compute in memory binarized neural networks
US12177133B2 (en) 2019-10-16 2024-12-24 Cerebras Systems Inc. Dynamic routing for accelerated deep learning
US12169771B2 (en) 2019-10-16 2024-12-17 Cerebras Systems Inc. Basic wavelet filtering for accelerated deep learning
CN112783555A (zh) * 2019-11-11 2021-05-11 深圳市中兴微电子技术有限公司 基于risc-v向量扩展指令的编码处理方法及装置、存储介质
JP2022511581A (ja) * 2019-11-15 2022-02-01 バイドゥ ドットコム タイムス テクノロジー (ベイジン) カンパニー リミテッド フレキシブルケーブル接続に基づく分散型aiトレーニングトポロジー
EP3857384B1 (en) * 2019-12-19 2022-05-11 Google LLC Processing sequential inputs using neural network accelerators
US11610104B1 (en) 2019-12-30 2023-03-21 Ali Tasdighi Far Asynchronous analog accelerator for fully connected artificial neural networks
US11615256B1 (en) 2019-12-30 2023-03-28 Ali Tasdighi Far Hybrid accumulation method in multiply-accumulate for machine learning
KR20210092467A (ko) * 2020-01-16 2021-07-26 삼성전자주식회사 로컬 프로세서와 글로벌 프로세서를 포함하는 메모리 다이, 메모리 장치, 및 전자 장치
TWI727643B (zh) * 2020-02-05 2021-05-11 旺宏電子股份有限公司 人工智慧加速器以及其處理方法
RU2732201C1 (ru) * 2020-02-17 2020-09-14 Российская Федерация, от имени которой выступает ФОНД ПЕРСПЕКТИВНЫХ ИССЛЕДОВАНИЙ Метод построения процессоров для вывода в сверточных нейронных сетях, основанный на потоковых вычислениях
CN111600204B (zh) * 2020-06-05 2022-03-18 杭州交联电力设计股份有限公司 一种单组电气设备的自动排布方法
US11409594B2 (en) * 2020-06-27 2022-08-09 Intel Corporation Self-supervised learning system for anomaly detection with natural language processing and automatic remediation
US11693699B2 (en) 2020-07-02 2023-07-04 Apple Inc. Hybrid memory in a dynamically power gated hardware accelerator
WO2022020164A1 (en) * 2020-07-22 2022-01-27 Flex Logix Technologies, Inc. Mac processing pipelines having programmable granularity, and methods of operating same
WO2022046075A1 (en) * 2020-08-28 2022-03-03 Siemens Industry Software, Inc. Method and system for protocol processing
CN112256409B (zh) * 2020-09-15 2022-03-04 中科驭数(北京)科技有限公司 基于多个数据库加速器的任务执行方法及装置
US11556790B2 (en) 2020-09-30 2023-01-17 Micron Technology, Inc. Artificial neural network training in memory
WO2022082115A1 (en) 2020-10-16 2022-04-21 Neuroblade Ltd. Memory appliances for memory intensive operations
US11977915B2 (en) 2020-12-15 2024-05-07 Western Digital Technologies, Inc. Non-volatile memory with intelligent compute task distribution
US11314508B1 (en) * 2021-02-01 2022-04-26 National Technology & Engineering Solutions Of Sandia, Llc FPGA-based computing system for processing data in size, weight, and power constrained environments
TWI775402B (zh) * 2021-04-22 2022-08-21 臺灣發展軟體科技股份有限公司 資料處理電路及故障減輕方法
CN113254392B (zh) * 2021-07-12 2022-06-14 深圳比特微电子科技有限公司 用于片上系统的数据存储方法和基于片上系统的设备
US20240362066A1 (en) * 2021-07-20 2024-10-31 The Regents Of The University Of California Run-Time Configurable Architectures
TWI779923B (zh) * 2021-11-11 2022-10-01 南亞科技股份有限公司 圖案驗證系統及其操作方法
US12050781B2 (en) 2021-11-24 2024-07-30 Seagate Technology Llc Distributed data storage system with bottleneck mitigation
CN116264089A (zh) * 2021-12-15 2023-06-16 长鑫存储技术有限公司 存储器
JP7243006B1 (ja) 2021-12-20 2023-03-22 エッジコーティックス ピーティーイー. リミテッド ネットワークオンチップリコンフィギュアビリティ
EP4460768A1 (en) 2022-01-05 2024-11-13 Neuroblade, Ltd. Processing systems
US12014798B2 (en) * 2022-03-31 2024-06-18 Macronix International Co., Ltd. In memory data computation and analysis
CN114978682B (zh) * 2022-05-20 2025-01-03 北京紫光展锐通信技术有限公司 数据处理方法、装置及设备
TWI811038B (zh) * 2022-07-25 2023-08-01 慧榮科技股份有限公司 記憶體控制器與偵錯訊息輸出控制方法
US11630605B1 (en) 2022-08-10 2023-04-18 Recogni Inc. Methods and systems for processing read-modify-write requests
CN115328849B (zh) * 2022-08-10 2023-10-03 苏州迅芯微电子有限公司 一种用于数据发送和接收的芯片组合结构
US20240070107A1 (en) * 2022-08-30 2024-02-29 Micron Technology, Inc. Memory device with embedded deep learning accelerator in multi-client environment
CN115237036B (zh) * 2022-09-22 2023-01-10 之江实验室 一种针对晶圆级处理器系统的全数字化管理装置
US11896952B1 (en) * 2023-10-12 2024-02-13 King Faisal University Adsorbent using biowaste and plastic waste for wastewater treatment
CN118151714B (zh) * 2024-02-26 2024-09-10 北京炎黄国芯科技有限公司 一种充放电数模混合电压补偿方法
CN118366520B (zh) * 2024-05-10 2025-03-11 苏州异格技术有限公司 一种fpga加速编程方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009211780A (ja) 2008-03-05 2009-09-17 Nec Corp アドレスエラー検出装置、アドレスエラー検出方法
WO2016132052A1 (fr) 2015-02-18 2016-08-25 Upmem Circuit dram muni d'un processeur integre
US20170194045A1 (en) 2015-12-30 2017-07-06 Samsung Electronics Co., Ltd. Semiconductor memory devices and memory systems including the same

Family Cites Families (266)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4724520A (en) * 1985-07-01 1988-02-09 United Technologies Corporation Modular multiport data hub
US5297260A (en) 1986-03-12 1994-03-22 Hitachi, Ltd. Processor having a plurality of CPUS with one CPU being normally connected to common bus
US4837747A (en) * 1986-11-29 1989-06-06 Mitsubishi Denki Kabushiki Kaisha Redundary circuit with a spare main decoder responsive to an address of a defective cell in a selected cell block
US4873626A (en) * 1986-12-17 1989-10-10 Massachusetts Institute Of Technology Parallel processing system with processor array having memory system included in system memory
US5014235A (en) * 1987-12-15 1991-05-07 Steven G. Morton Convolution memory
EP0421696A3 (en) 1989-10-02 1992-01-29 Motorola Inc. Staggered access memory
US5239654A (en) 1989-11-17 1993-08-24 Texas Instruments Incorporated Dual mode SIMD/MIMD processor providing reuse of MIMD instruction memories as data memories when operating in SIMD mode
US5179702A (en) 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
JP3210319B2 (ja) 1990-03-01 2001-09-17 株式会社東芝 ニューロチップおよびそのチップを用いたニューロコンピュータ
DE69132495T2 (de) 1990-03-16 2001-06-13 Texas Instruments Inc., Dallas Verteilter Verarbeitungsspeicher
US5155729A (en) 1990-05-02 1992-10-13 Rolm Systems Fault recovery in systems utilizing redundant processor arrangements
US5590345A (en) 1990-11-13 1996-12-31 International Business Machines Corporation Advanced parallel array processor(APAP)
US5713037A (en) 1990-11-13 1998-01-27 International Business Machines Corporation Slide bus communication functions for SIMD/MIMD array processor
DE69131272T2 (de) * 1990-11-13 1999-12-09 International Business Machines Corp., Armonk Paralleles Assoziativprozessor-System
JP3001252B2 (ja) * 1990-11-16 2000-01-24 株式会社日立製作所 半導体メモリ
US5214747A (en) 1990-12-24 1993-05-25 Eastman Kodak Company Segmented neural network with daisy chain control
US5440752A (en) 1991-07-08 1995-08-08 Seiko Epson Corporation Microprocessor architecture with a switch network for data transfer between cache, memory port, and IOU
US5506992A (en) 1992-01-30 1996-04-09 Saxenmeyer; George Distributed processing system with asynchronous communication between processing modules
US5502728A (en) 1992-02-14 1996-03-26 International Business Machines Corporation Large, fault-tolerant, non-volatile, multiported memory
KR960002777B1 (ko) * 1992-07-13 1996-02-26 삼성전자주식회사 반도체 메모리 장치의 로우 리던던시 장치
US5345552A (en) * 1992-11-12 1994-09-06 Marquette Electronics, Inc. Control for computer windowing display
US5396608A (en) * 1993-06-28 1995-03-07 Analog Devices, Inc. Method and apparatus for accessing variable length words in a memory array
DE69431386T2 (de) 1993-10-05 2003-05-15 Seiko Epson Corp., Tokio/Tokyo Verfahren und Gerät zur Erzeugung eines Programms für parallele Verarbeitung
DE69430744T2 (de) 1994-07-28 2003-01-30 International Business Machines Corp., Armonk Verbesserte Neuronalhalbleiterchipsarchitekturen und Neuronalnetzwerke darin
JP3723599B2 (ja) * 1995-04-07 2005-12-07 株式会社ルネサステクノロジ 半導体記憶装置
US5956703A (en) 1995-07-28 1999-09-21 Delco Electronics Corporation Configurable neural network integrated circuit
JP3252666B2 (ja) * 1995-08-14 2002-02-04 日本電気株式会社 半導体記憶装置
JP3036411B2 (ja) * 1995-10-18 2000-04-24 日本電気株式会社 半導体記憶集積回路装置
JPH09198861A (ja) * 1996-01-16 1997-07-31 Mitsubishi Electric Corp 同期型半導体記憶装置
JP3355595B2 (ja) * 1996-03-25 2002-12-09 シャープ株式会社 不揮発性半導体記憶装置
JPH09288888A (ja) * 1996-04-22 1997-11-04 Mitsubishi Electric Corp 半導体記憶装置
IT1288076B1 (it) 1996-05-30 1998-09-10 Antonio Esposito Multicalcolatore elettronico numerico parallelo multiprocessore a ridondanza di processori accoppiati
US5844856A (en) * 1996-06-19 1998-12-01 Cirrus Logic, Inc. Dual port memories and systems and methods using the same
US5802005A (en) * 1996-09-23 1998-09-01 Texas Instruments Incorporated Four bit pre-fetch sDRAM column select architecture
US5841712A (en) * 1996-09-30 1998-11-24 Advanced Micro Devices, Inc. Dual comparator circuit and method for selecting between normal and redundant decode logic in a semiconductor memory device
JPH10269765A (ja) * 1997-03-24 1998-10-09 Mitsubishi Electric Corp 半導体記憶装置
US6026464A (en) 1997-06-24 2000-02-15 Cisco Technology, Inc. Memory control system and method utilizing distributed memory controllers for multibank memory
US6044438A (en) 1997-07-10 2000-03-28 International Business Machiness Corporation Memory controller for controlling memory accesses across networks in distributed shared memory processing systems
JP4039532B2 (ja) * 1997-10-02 2008-01-30 株式会社ルネサステクノロジ 半導体集積回路装置
US6096094A (en) * 1997-10-03 2000-08-01 National Instruments Corporation Configuration manager for configuring a data acquisition system
US5959929A (en) * 1997-12-29 1999-09-28 Micron Technology, Inc. Method for writing to multiple banks of a memory device
JPH11203862A (ja) 1998-01-13 1999-07-30 Mitsubishi Electric Corp 半導体記憶装置
NO308149B1 (no) 1998-06-02 2000-07-31 Thin Film Electronics Asa Skalerbar, integrert databehandlingsinnretning
US6349051B1 (en) 1998-01-29 2002-02-19 Micron Technology, Inc. High speed data bus
US6173356B1 (en) * 1998-02-20 2001-01-09 Silicon Aquarius, Inc. Multi-port DRAM with integrated SRAM and systems and methods using the same
US6678801B1 (en) 1998-04-17 2004-01-13 Terraforce Technologies Corp. DSP with distributed RAM structure
KR100273293B1 (ko) * 1998-05-13 2001-01-15 김영환 리던던트 워드라인의 리프레쉬 구조
US6553355B1 (en) 1998-05-29 2003-04-22 Indranet Technologies Limited Autopoietic network system endowed with distributed artificial intelligence for the supply of high volume high-speed multimedia telesthesia telemetry, telekinesis, telepresence, telemanagement, telecommunications, and data processing services
JP2000011681A (ja) 1998-06-22 2000-01-14 Mitsubishi Electric Corp 同期型半導体記憶装置
JP2002519747A (ja) 1998-06-23 2002-07-02 インテリックス アクティーゼルスカブ n項組又はRAMベース・ニューラルネットワーク分類システム及び方法
DE19838813A1 (de) * 1998-08-26 2000-03-02 Siemens Ag Speichersystem
US6366989B1 (en) * 1998-09-17 2002-04-02 Sun Microsystems, Inc. Programmable memory controller
US6041400A (en) 1998-10-26 2000-03-21 Sony Corporation Distributed extensible processing architecture for digital signal processing applications
US6798420B1 (en) * 1998-11-09 2004-09-28 Broadcom Corporation Video and graphics system with a single-port RAM
US6216178B1 (en) 1998-11-16 2001-04-10 Infineon Technologies Ag Methods and apparatus for detecting the collision of data on a data bus in case of out-of-order memory accesses of different times of memory access execution
US6067262A (en) 1998-12-11 2000-05-23 Lsi Logic Corporation Redundancy analysis for embedded memories with built-in self test and built-in self repair
US6449732B1 (en) 1998-12-18 2002-09-10 Triconex Corporation Method and apparatus for processing control using a multiple redundant processor control system
US6523018B1 (en) 1998-12-29 2003-02-18 International Business Machines Corporation Neural chip architecture and neural networks incorporated therein
JP2000207884A (ja) * 1999-01-11 2000-07-28 Hitachi Ltd 半導体集積回路装置
US6389497B1 (en) 1999-01-22 2002-05-14 Analog Devices, Inc. DRAM refresh monitoring and cycle accurate distributed bus arbitration in a multi-processing environment
US6145069A (en) 1999-01-29 2000-11-07 Interactive Silicon, Inc. Parallel decompression and compression system and method for improving storage density and access speed for non-volatile memory and embedded memory devices
GB9902115D0 (en) 1999-02-01 1999-03-24 Axeon Limited Neural networks
DE19906382A1 (de) * 1999-02-16 2000-08-24 Siemens Ag Halbleiterspeicher mit Speicherbänken
US6453398B1 (en) * 1999-04-07 2002-09-17 Mitsubishi Electric Research Laboratories, Inc. Multiple access self-testing memory
JP3959211B2 (ja) * 1999-09-22 2007-08-15 株式会社東芝 半導体記憶装置
WO2000070686A1 (en) 1999-05-14 2000-11-23 Hitachi, Ltd. Semiconductor device, image display device, and method and apparatus for manufacture thereof
US6404694B2 (en) 1999-08-16 2002-06-11 Hitachi, Ltd. Semiconductor memory device with address comparing functions
US6751698B1 (en) 1999-09-29 2004-06-15 Silicon Graphics, Inc. Multiprocessor node controller circuit and method
US6708254B2 (en) 1999-11-10 2004-03-16 Nec Electronics America, Inc. Parallel access virtual channel memory system
JP2001155485A (ja) * 1999-11-29 2001-06-08 Mitsubishi Electric Corp 半導体記憶装置
US6414890B2 (en) * 1999-12-27 2002-07-02 Mitsubishi Denki Kabushiki Kaisha Semiconductor memory device capable of reliably performing burn-in test at wafer level
US6601126B1 (en) 2000-01-20 2003-07-29 Palmchip Corporation Chip-core framework for systems-on-a-chip
AU2001243463A1 (en) 2000-03-10 2001-09-24 Arc International Plc Memory interface and method of interfacing between functional entities
US6668308B2 (en) 2000-06-10 2003-12-23 Hewlett-Packard Development Company, L.P. Scalable architecture based on single-chip multiprocessing
JP4632107B2 (ja) * 2000-06-29 2011-02-16 エルピーダメモリ株式会社 半導体記憶装置
US6785780B1 (en) 2000-08-31 2004-08-31 Micron Technology, Inc. Distributed processor memory module and method
US6785841B2 (en) 2000-12-14 2004-08-31 International Business Machines Corporation Processor with redundant logic
US20020087828A1 (en) * 2000-12-28 2002-07-04 International Business Machines Corporation Symmetric multiprocessing (SMP) system with fully-interconnected heterogenous microprocessors
WO2002059743A2 (en) 2001-01-25 2002-08-01 Improv Systems, Inc. Compiler for multiple processor and distributed memory architectures
US6714467B2 (en) * 2002-03-19 2004-03-30 Broadcom Corporation Block redundancy implementation in heirarchical RAM's
US6396760B1 (en) 2001-03-16 2002-05-28 Virage Logic Corporation Memory having a redundancy scheme to allow one fuse to blow per faulty memory column
US7233998B2 (en) * 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
JP2003092364A (ja) * 2001-05-21 2003-03-28 Mitsubishi Electric Corp 半導体記憶装置
US6385071B1 (en) * 2001-05-21 2002-05-07 International Business Machines Corporation Redundant scheme for CAMRAM memory array
JP2003068074A (ja) * 2001-08-30 2003-03-07 Mitsubishi Electric Corp 半導体記憶装置
JP2003132675A (ja) * 2001-10-26 2003-05-09 Seiko Epson Corp 半導体メモリ装置
US6778443B2 (en) * 2001-12-25 2004-08-17 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device having memory blocks pre-programmed before erased
WO2003060722A1 (fr) 2002-01-09 2003-07-24 Renesas Technology Corp. Système de mémoire et carte mémoire
US6640283B2 (en) 2002-01-16 2003-10-28 Hewlett-Packard Development Company, L.P. Apparatus for cache compression engine for data compression of on-chip caches to increase effective cache size
JP2003263892A (ja) * 2002-03-11 2003-09-19 Toshiba Corp 半導体記憶装置
US7107285B2 (en) 2002-03-16 2006-09-12 Questerra Corporation Method, system, and program for an improved enterprise spatial system
US6717834B2 (en) 2002-03-26 2004-04-06 Intel Corporation Dual bus memory controller
US6877046B2 (en) 2002-03-29 2005-04-05 International Business Machines Corporation Method and apparatus for memory with embedded processor
AU2003226394A1 (en) 2002-04-14 2003-11-03 Bay Microsystems, Inc. Data forwarding engine
US7836168B1 (en) 2002-06-04 2010-11-16 Rockwell Automation Technologies, Inc. System and methodology providing flexible and distributed processing in an industrial controller environment
US7415594B2 (en) * 2002-06-26 2008-08-19 Coherent Logix, Incorporated Processing system with interspersed stall propagating processors and communication elements
US7159141B2 (en) 2002-07-01 2007-01-02 Micron Technology, Inc. Repairable block redundancy scheme
GB2391083B (en) 2002-07-19 2006-03-01 Picochip Designs Ltd Processor array
US7120068B2 (en) * 2002-07-29 2006-10-10 Micron Technology, Inc. Column/row redundancy architecture using latches programmed from a look up table
KR100510496B1 (ko) * 2002-11-19 2005-08-26 삼성전자주식회사 페이지 길이를 변환할 수 있는 구조를 가지는 반도체메모리 장치 및 상기 반도체 메모리 장치의 페이지 길이변환방법
US20040153911A1 (en) * 2002-12-24 2004-08-05 Alon Regev Testing of a CAM
JP4223936B2 (ja) 2003-02-06 2009-02-12 株式会社リコー 投射光学系、拡大投射光学系、拡大投射装置及び画像投射装置
US20040181503A1 (en) * 2003-03-13 2004-09-16 Motorola, Inc. Information storage and retrieval method and apparatus
US7194568B2 (en) 2003-03-21 2007-03-20 Cisco Technology, Inc. System and method for dynamic mirror-bank addressing
WO2005006345A1 (ja) * 2003-07-15 2005-01-20 Elpida Memory, Inc. 半導体記憶装置
JP2005092969A (ja) * 2003-09-16 2005-04-07 Renesas Technology Corp 不揮発性半導体記憶装置
US7162551B2 (en) * 2003-10-31 2007-01-09 Lucent Technologies Inc. Memory management system having a linked list processor
TWI289750B (en) 2004-01-05 2007-11-11 Sony Corp Data storage apparatus, and data storage controlling apparatus and method
US20050240806A1 (en) 2004-03-30 2005-10-27 Hewlett-Packard Development Company, L.P. Diagnostic memory dump method in a redundant processor
US7519875B2 (en) * 2004-08-20 2009-04-14 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and apparatus for enabling a user to determine whether a defective location in a memory device has been remapped to a redundant memory portion
JP2006294144A (ja) * 2005-04-12 2006-10-26 Toshiba Corp 不揮発性半導体記憶装置
US7978561B2 (en) * 2005-07-28 2011-07-12 Samsung Electronics Co., Ltd. Semiconductor memory devices having vertically-stacked transistors therein
US7562271B2 (en) 2005-09-26 2009-07-14 Rambus Inc. Memory system topologies including a buffer device and an integrated circuit memory device
JP2009520295A (ja) 2005-12-20 2009-05-21 エヌエックスピー ビー ヴィ 共有メモリバンクを有するマルチプロセッサ回路
US7826243B2 (en) * 2005-12-29 2010-11-02 Bitmicro Networks, Inc. Multiple chip module and package stacking for storage devices
US8984256B2 (en) 2006-02-03 2015-03-17 Russell Fish Thread optimized multiprocessor architecture
JP2007207380A (ja) * 2006-02-03 2007-08-16 Renesas Technology Corp 不揮発性半導体記憶装置
US20070220369A1 (en) 2006-02-21 2007-09-20 International Business Machines Corporation Fault isolation and availability mechanism for multi-processor system
US20080177979A1 (en) * 2006-03-01 2008-07-24 Gheorghe Stefan Hardware multi-core processor optimized for object oriented computing
US7613883B2 (en) * 2006-03-10 2009-11-03 Rambus Inc. Memory device with mode-selectable prefetch and clock-to-core timing
US7610537B2 (en) 2006-04-04 2009-10-27 International Business Machines Corporation Method and apparatus for testing multi-core microprocessors
US7882307B1 (en) 2006-04-14 2011-02-01 Tilera Corporation Managing cache memory in a parallel processing environment
US8648403B2 (en) 2006-04-21 2014-02-11 International Business Machines Corporation Dynamic memory cell structures
JP2007317247A (ja) * 2006-05-23 2007-12-06 Nec Electronics Corp 不揮発性半導体記憶装置及び不揮発性半導体記憶装置の動作方法
US7882320B2 (en) 2006-05-23 2011-02-01 Dataram, Inc. Multi-processor flash memory storage device and management system
US7949820B2 (en) 2006-05-23 2011-05-24 Dataram, Inc. Method for managing memory access and task distribution on a multi-processor storage device
KR20070112950A (ko) 2006-05-24 2007-11-28 삼성전자주식회사 멀티-포트 메모리 장치, 멀티-포트 메모리 장치를 포함하는멀티-프로세서 시스템, 및 멀티-프로세서 시스템의 데이터전달 방법
US7640386B2 (en) * 2006-05-24 2009-12-29 International Business Machines Corporation Systems and methods for providing memory modules with multiple hub devices
JP2008010082A (ja) * 2006-06-29 2008-01-17 Nec Electronics Corp 不揮発性半導体記憶装置及びワード線駆動方法
KR20090039761A (ko) * 2006-07-14 2009-04-22 인터디지탈 테크날러지 코포레이션 심볼 레이트 하드웨어 가속기
KR100748460B1 (ko) * 2006-08-16 2007-08-13 주식회사 하이닉스반도체 반도체 메모리 및 그 제어방법
US7783936B1 (en) * 2006-09-28 2010-08-24 L-3 Communications, Corp. Memory arbitration technique for turbo decoding
US20080109691A1 (en) * 2006-10-27 2008-05-08 James Norris Dieffenderfer Method and Apparatus for Executing a BIST Routine
JP4215795B2 (ja) * 2006-11-20 2009-01-28 エルピーダメモリ株式会社 ルックアップテーブルカスケード回路、ルックアップテーブルカスケードアレイ回路及びそのパイプライン制御方法
CN101622595A (zh) * 2006-12-06 2010-01-06 弗森多系统公司(dba弗森-艾奥) 用于服务器内的存储区域网络的装置、系统和方法
US7899978B2 (en) 2006-12-08 2011-03-01 Pandya Ashish A Dynamic programmable intelligent search memory
KR100918299B1 (ko) * 2007-04-25 2009-09-18 삼성전자주식회사 배드 블록 정보를 저장하지 않는 행 디코더를 갖는 플래시메모리 장치 및 그것의 제어 방법
WO2008139441A2 (en) * 2007-05-12 2008-11-20 Anobit Technologies Ltd. Memory device with internal signal processing unit
US7869246B2 (en) * 2007-05-25 2011-01-11 Marvell World Trade Ltd. Bit line decoder architecture for NOR-type memory array
US7772880B2 (en) 2007-09-12 2010-08-10 Neal Solomon Reprogrammable three dimensional intelligent system on a chip
US8042082B2 (en) 2007-09-12 2011-10-18 Neal Solomon Three dimensional memory in a system on a chip
US7557605B2 (en) 2007-09-14 2009-07-07 Cswitch Corporation Heterogeneous configurable integrated circuit
US8200992B2 (en) * 2007-09-24 2012-06-12 Cognitive Electronics, Inc. Parallel processing computer systems with reduced power consumption and methods for providing the same
US7721010B2 (en) * 2007-10-31 2010-05-18 Qimonda North America Corp. Method and apparatus for implementing memory enabled systems using master-slave architecture
US8078829B2 (en) * 2007-12-12 2011-12-13 Itt Manufacturing Enterprises, Inc. Scaleable array of micro-engines for waveform processing
US7844798B2 (en) * 2007-12-13 2010-11-30 Qimonda Ag Command protocol for integrated circuits
FR2925187B1 (fr) 2007-12-14 2011-04-08 Commissariat Energie Atomique Systeme comportant une pluralite d'unites de traitement permettant d'executer des taches en parallele,en mixant le mode d'execution de type controle et le mode d'execution de type flot de donnees
JP2009146548A (ja) * 2007-12-18 2009-07-02 Toshiba Corp 不揮発性半導体記憶装置
US8028124B2 (en) 2007-12-20 2011-09-27 International Business Machines Corporation Fast processing memory array
US9196346B2 (en) * 2008-01-23 2015-11-24 Micron Technology, Inc. Non-volatile memory with LPDRAM
US7782703B2 (en) * 2008-02-01 2010-08-24 Qimonda North America Corp. Semiconductor memory having a bank with sub-banks
WO2009097681A1 (en) * 2008-02-04 2009-08-13 Mosaid Technologies Incorporated Flexible memory operations in nand flash devices
JP2009205258A (ja) 2008-02-26 2009-09-10 Toshiba Corp 半導体集積回路
KR20090095955A (ko) 2008-03-07 2009-09-10 삼성전자주식회사 불휘발성 메모리의 공유 구조에서 다이렉트 억세스 기능을제공하는 멀티포트 반도체 메모리 장치 및 그를 채용한멀티 프로세서 시스템
US20110016278A1 (en) 2008-03-31 2011-01-20 Frederick Ware Independent Threading of Memory Devices Disposed on Memory Modules
US8140830B2 (en) * 2008-05-22 2012-03-20 International Business Machines Corporation Structural power reduction in multithreaded processor
US20100005220A1 (en) * 2008-07-01 2010-01-07 International Business Machines Corporation 276-pin buffered memory module with enhanced memory system interconnect and features
US8031505B2 (en) 2008-07-25 2011-10-04 Samsung Electronics Co., Ltd. Stacked memory module and system
KR101493008B1 (ko) * 2008-09-30 2015-02-13 삼성전자주식회사 소스 라인 구동회로 및 상기 소스 라인 구동회로를 포함하는 디스플레이 장치
JP5599559B2 (ja) * 2008-11-27 2014-10-01 ピーエスフォー ルクスコ エスエイアールエル 半導体装置及びそのリフレッシュ方法
US7877627B1 (en) * 2008-12-18 2011-01-25 Supercon, L.L.C. Multiple redundant computer system combining fault diagnostics and majority voting with dissimilar redundancy technology
TWI401691B (zh) * 2009-03-20 2013-07-11 Phison Electronics Corp 具快閃記憶體測試功能的控制器及其儲存系統與測試方法
US7983065B2 (en) * 2009-04-08 2011-07-19 Sandisk 3D Llc Three-dimensional array of re-programmable non-volatile memory elements having vertical bit lines
US8516408B2 (en) * 2009-05-26 2013-08-20 Lsi Corporation Optimization of circuits having repeatable circuit instances
JP4913878B2 (ja) * 2009-05-27 2012-04-11 ルネサスエレクトロニクス株式会社 ワード線選択回路、ロウデコーダ
US9378003B1 (en) 2009-07-23 2016-06-28 Xilinx, Inc. Compiler directed cache coherence for many caches generated from high-level language source code
US8442927B2 (en) 2009-07-30 2013-05-14 Nec Laboratories America, Inc. Dynamically configurable, multi-ported co-processor for convolutional neural networks
US9477636B2 (en) 2009-10-21 2016-10-25 Micron Technology, Inc. Memory having internal processors and data communication methods in memory
US8856458B2 (en) 2009-12-15 2014-10-07 Advanced Micro Devices, Inc. Polymorphous signal interface between processing units
KR101107163B1 (ko) * 2010-05-25 2012-01-25 삼성모바일디스플레이주식회사 주사 구동부 및 이를 이용한 표시 장치
US20110296078A1 (en) * 2010-06-01 2011-12-01 Qualcomm Incorporated Memory pool interface methods and apparatuses
US9672169B2 (en) 2010-06-30 2017-06-06 Texas Instruments Incorporated Dual in line memory module with multiple memory interfaces
JP5508978B2 (ja) * 2010-07-29 2014-06-04 ルネサスエレクトロニクス株式会社 デジタルアナログ変換回路及び表示ドライバ
US20140013129A1 (en) 2012-07-09 2014-01-09 L. Pierre de Rochemont Hybrid computing module
US9612979B2 (en) 2010-10-22 2017-04-04 Intel Corporation Scalable memory protection mechanism
US8738860B1 (en) 2010-10-25 2014-05-27 Tilera Corporation Computing in parallel processing environments
KR101212738B1 (ko) * 2010-10-29 2012-12-14 에스케이하이닉스 주식회사 리프레쉬 제어회로 및 이를 포함하는 반도체 메모리 장치 및 리프레쉬 제어방법
JP2012174297A (ja) * 2011-02-18 2012-09-10 Elpida Memory Inc 半導体装置
US20140040622A1 (en) 2011-03-21 2014-02-06 Mocana Corporation Secure unlocking and recovery of a locked wrapped app on a mobile device
US9262246B2 (en) 2011-03-31 2016-02-16 Mcafee, Inc. System and method for securing memory and storage of an electronic device with a below-operating system security agent
US9432298B1 (en) 2011-12-09 2016-08-30 P4tents1, LLC System, method, and computer program product for improving memory systems
US9348852B2 (en) * 2011-04-27 2016-05-24 Microsoft Technology Licensing, Llc Frequent pattern mining
US8904537B2 (en) 2011-05-09 2014-12-02 F—Secure Corporation Malware detection
JP5658082B2 (ja) 2011-05-10 2015-01-21 ルネサスエレクトロニクス株式会社 半導体装置
US8590050B2 (en) 2011-05-11 2013-11-19 International Business Machines Corporation Security compliant data storage management
KR20120132278A (ko) 2011-05-26 2012-12-05 삼성전자주식회사 메모리 칩, 메모리 시스템, 및 메모리 칩에 대한 액세스 방법
US10078620B2 (en) 2011-05-27 2018-09-18 New York University Runtime reconfigurable dataflow processor with multi-port memory access module
US9177609B2 (en) * 2011-06-30 2015-11-03 Sandisk Technologies Inc. Smart bridge for memory core
US9098209B2 (en) 2011-08-24 2015-08-04 Rambus Inc. Communication via a memory interface
US8599595B1 (en) * 2011-12-13 2013-12-03 Michael C. Stephens, Jr. Memory devices with serially connected signals for stacked arrangements
WO2013100909A1 (en) * 2011-12-27 2013-07-04 Intel Corporation Adaptive configuration of non-volatile memory
US9110830B2 (en) * 2012-01-18 2015-08-18 Qualcomm Incorporated Determining cache hit/miss of aliased addresses in virtually-tagged cache(s), and related systems and methods
US8977583B2 (en) 2012-03-29 2015-03-10 International Business Machines Corporation Synaptic, dendritic, somatic, and axonal plasticity in a network of neural cores using a plastic multi-stage crossbar switching
US8736831B2 (en) * 2012-05-15 2014-05-27 Kla-Tencor Corp. Substrate inspection
US9665503B2 (en) 2012-05-22 2017-05-30 Xockets, Inc. Efficient packet handling, redirection, and inspection using offload processors
JP2014010845A (ja) * 2012-06-27 2014-01-20 Ps4 Luxco S A R L 半導体装置
KR20140023806A (ko) * 2012-08-17 2014-02-27 삼성전자주식회사 자기 저항 메모리 장치의 배치 구조
US8677306B1 (en) 2012-10-11 2014-03-18 Easic Corporation Microcontroller controlled or direct mode controlled network-fabric on a structured ASIC
US8996951B2 (en) 2012-11-15 2015-03-31 Elwha, Llc Error correction with non-volatile memory on an integrated circuit
EP2923279B1 (en) * 2012-11-21 2016-11-02 Coherent Logix Incorporated Processing system with interspersed processors; dma-fifo
US9449257B2 (en) 2012-12-04 2016-09-20 Institute Of Semiconductors, Chinese Academy Of Sciences Dynamically reconstructable multistage parallel single instruction multiple data array processing system
CN103902472B (zh) * 2012-12-28 2018-04-20 华为技术有限公司 基于内存芯片互连的内存访问处理方法、内存芯片及系统
US10318444B2 (en) 2013-04-11 2019-06-11 The Regents Of The University Of California Collective memory transfer devices and methods for multiple-core processors
US9177646B2 (en) 2013-05-06 2015-11-03 International Business Machines Corporation Implementing computational memory from content-addressable memory
US10741226B2 (en) 2013-05-28 2020-08-11 Fg Src Llc Multi-processor computer architecture incorporating distributed multi-ported common memory modules
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
US9305635B2 (en) 2013-10-31 2016-04-05 Taiwan Semiconductor Manufacturing Co., Ltd. High density memory structure
US9418719B2 (en) * 2013-11-28 2016-08-16 Gsi Technology Israel Ltd. In-memory computational device
US9978014B2 (en) 2013-12-18 2018-05-22 Intel Corporation Reconfigurable processing unit
US20150212861A1 (en) * 2014-01-24 2015-07-30 Qualcomm Incorporated Value synchronization across neural processors
CN105431831B (zh) * 2014-02-17 2018-10-02 联发科技股份有限公司 数据存取方法和利用相同方法的数据存取装置
US10180828B2 (en) 2014-04-29 2019-01-15 Significs And Elements, Llc Systems and methods for power optimization of processors
US20150324690A1 (en) 2014-05-08 2015-11-12 Microsoft Corporation Deep Learning Training System
JP2015222467A (ja) * 2014-05-22 2015-12-10 ルネサスエレクトロニクス株式会社 マイクロコントローラ及びそれを用いた電子制御装置
US9003109B1 (en) 2014-05-29 2015-04-07 SanDisk Technologies, Inc. System and method for distributed computing in non-volatile memory
US10504020B2 (en) 2014-06-10 2019-12-10 Sightline Innovation Inc. System and method for applying a deep learning neural network to data obtained from one or more sensors
KR20160014976A (ko) * 2014-07-30 2016-02-12 에스케이하이닉스 주식회사 메모리 장치 및 이를 포함하는 메모리 시스템
US9810777B2 (en) * 2014-08-22 2017-11-07 Voxtel, Inc. Asynchronous LADAR and imaging array
US9984337B2 (en) 2014-10-08 2018-05-29 Nec Corporation Parallelized machine learning with distributed lockless training
US10175345B2 (en) * 2014-10-17 2019-01-08 Voxtel, Inc. Event tracking imager
JP2016081340A (ja) * 2014-10-17 2016-05-16 株式会社東芝 多重化制御装置
KR102251216B1 (ko) 2014-11-21 2021-05-12 삼성전자주식회사 어드레스 리매핑된 메모리 칩, 이를 포함하는 메모리 모듈 및 메모리 시스템
KR102497704B1 (ko) * 2014-12-09 2023-02-09 바스프 에스이 광 검출기
US10445641B2 (en) 2015-02-06 2019-10-15 Deepmind Technologies Limited Distributed training of reinforcement learning systems
US20160260024A1 (en) * 2015-03-04 2016-09-08 Qualcomm Incorporated System of distributed planning
US11232848B2 (en) * 2015-04-30 2022-01-25 Hewlett Packard Enterprise Development Lp Memory module error tracking
US20160379109A1 (en) 2015-06-29 2016-12-29 Microsoft Technology Licensing, Llc Convolutional neural networks on hardware accelerators
KR102401271B1 (ko) * 2015-09-08 2022-05-24 삼성전자주식회사 메모리 시스템 및 그 동작 방법
US10726328B2 (en) 2015-10-09 2020-07-28 Altera Corporation Method and apparatus for designing and implementing a convolution neural net accelerator
WO2017065379A1 (ko) 2015-10-16 2017-04-20 삼성전자 주식회사 프로세싱-인-메모리를 이용한 명령어 처리 방법 및 그 장치
US9904874B2 (en) 2015-11-05 2018-02-27 Microsoft Technology Licensing, Llc Hardware-efficient deep convolutional neural networks
US11170294B2 (en) 2016-01-07 2021-11-09 Intel Corporation Hardware accelerated machine learning
US10157309B2 (en) 2016-01-14 2018-12-18 Nvidia Corporation Online detection and classification of dynamic gestures with recurrent convolutional neural networks
US9928895B2 (en) * 2016-02-03 2018-03-27 Samsung Electronics Co., Ltd. Volatile memory device and electronic device comprising refresh information generator, information providing method thereof, and refresh control method thereof
US10990872B2 (en) 2016-03-31 2021-04-27 International Business Machines Corporation Energy-efficient time-multiplexed neurosynaptic core for implementing neural networks spanning power- and area-efficiency
US9601183B1 (en) * 2016-04-14 2017-03-21 Micron Technology, Inc. Apparatuses and methods for controlling wordlines and sense amplifiers
US10082964B2 (en) * 2016-04-27 2018-09-25 Micron Technology, Inc Data caching for ferroelectric memory
WO2018005572A1 (en) * 2016-06-30 2018-01-04 University Of Pittsburgh-Of The Commonwealth System Of Higher Education Two-dimensionally accessible non-volatile memory
US9760827B1 (en) 2016-07-22 2017-09-12 Alpine Electronics of Silicon Valley, Inc. Neural network applications in resource constrained environments
KR102620562B1 (ko) * 2016-08-04 2024-01-03 삼성전자주식회사 비휘발성 메모리 장치
JP6271655B1 (ja) * 2016-08-05 2018-01-31 株式会社東芝 不揮発性メモリ
US10387303B2 (en) 2016-08-16 2019-08-20 Western Digital Technologies, Inc. Non-volatile storage system with compute engine to accelerate big data applications
US9653151B1 (en) 2016-10-07 2017-05-16 Kilopass Technology, Inc. Memory array having segmented row addressed page registers
US20180144244A1 (en) 2016-11-23 2018-05-24 Vital Images, Inc. Distributed clinical workflow training of deep learning neural networks
US10163469B2 (en) * 2016-11-30 2018-12-25 Micron Technology, Inc. System and method for write data bus control in a stacked memory device
US10423876B2 (en) * 2016-12-01 2019-09-24 Via Alliance Semiconductor Co., Ltd. Processor with memory array operable as either victim cache or neural network unit memory
US10032110B2 (en) 2016-12-13 2018-07-24 Google Llc Performing average pooling in hardware
US10073715B2 (en) * 2016-12-19 2018-09-11 Intel Corporation Dynamic runtime task management
US10191799B2 (en) * 2016-12-29 2019-01-29 Sandisk Technologies Llc BER model evaluation
US11062203B2 (en) 2016-12-30 2021-07-13 Intel Corporation Neuromorphic computer with reconfigurable memory mapping for various neural network topologies
US10114795B2 (en) 2016-12-30 2018-10-30 Western Digital Technologies, Inc. Processor in non-volatile storage memory
US12073308B2 (en) 2017-01-04 2024-08-27 Stmicroelectronics International N.V. Hardware accelerator engine
US11397687B2 (en) * 2017-01-25 2022-07-26 Samsung Electronics Co., Ltd. Flash-integrated high bandwidth memory appliance
US11144820B2 (en) 2017-02-28 2021-10-12 Microsoft Technology Licensing, Llc Hardware node with position-dependent memories for neural network processing
US10387298B2 (en) 2017-04-04 2019-08-20 Hailo Technologies Ltd Artificial neural network incorporating emphasis and focus techniques
US10032496B1 (en) * 2017-07-27 2018-07-24 Micron Technology, Inc. Variable filter capacitance
JP7242634B2 (ja) * 2017-07-30 2023-03-20 ニューロブレード リミテッド メモリチップ
US10304497B2 (en) * 2017-08-17 2019-05-28 Micron Technology, Inc. Power supply wiring in a semiconductor memory device
US10810141B2 (en) 2017-09-29 2020-10-20 Intel Corporation Memory control management of a processor
US10490245B2 (en) * 2017-10-02 2019-11-26 Micron Technology, Inc. Memory system that supports dual-mode modulation
US10388870B2 (en) * 2017-10-25 2019-08-20 Sandisk Technologies Llc Barrier modulated cell structures with intrinsic vertical bit line architecture
US10541273B2 (en) * 2017-11-28 2020-01-21 Sandisk Technologies Llc Vertical thin film transistors with isolation
US11398453B2 (en) * 2018-01-09 2022-07-26 Samsung Electronics Co., Ltd. HBM silicon photonic TSV architecture for lookup computing AI accelerator
EP3847553B1 (en) * 2018-09-06 2024-11-20 NeuroBlade Ltd. Variable word length access in memory
US11257538B2 (en) * 2018-10-03 2022-02-22 Micron Technology, Inc. Systems and methods for improved reliability of components in dynamic random access memory (DRAM)
TWI714003B (zh) * 2018-10-11 2020-12-21 力晶積成電子製造股份有限公司 可執行人工智慧運算的記憶體晶片及其操作方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009211780A (ja) 2008-03-05 2009-09-17 Nec Corp アドレスエラー検出装置、アドレスエラー検出方法
WO2016132052A1 (fr) 2015-02-18 2016-08-25 Upmem Circuit dram muni d'un processeur integre
US20170194045A1 (en) 2015-12-30 2017-07-06 Samsung Electronics Co., Ltd. Semiconductor memory devices and memory systems including the same

Also Published As

Publication number Publication date
US11126511B2 (en) 2021-09-21
EP4187539A1 (en) 2023-05-31
US20190341091A1 (en) 2019-11-07
US10664438B2 (en) 2020-05-26
CN113918481A (zh) 2022-01-11
TWI779069B (zh) 2022-10-01
EP4187539B1 (en) 2024-06-05
TW202301125A (zh) 2023-01-01
US20210090617A1 (en) 2021-03-25
EP3662474A2 (en) 2020-06-10
US11023336B2 (en) 2021-06-01
US20190339981A1 (en) 2019-11-07
US20210365334A1 (en) 2021-11-25
EP3662474B1 (en) 2023-02-22
JP2020529676A (ja) 2020-10-08
US20190340153A1 (en) 2019-11-07
US11301340B2 (en) 2022-04-12
CN111149166A (zh) 2020-05-12
WO2019025864A2 (en) 2019-02-07
US10762034B2 (en) 2020-09-01
US20190341088A1 (en) 2019-11-07
KR20200047551A (ko) 2020-05-07
US10885951B2 (en) 2021-01-05
WO2019025864A3 (en) 2019-03-21
US20190339980A1 (en) 2019-11-07
US11914487B2 (en) 2024-02-27
US20240143457A1 (en) 2024-05-02
US11269743B2 (en) 2022-03-08
EP3662474A4 (en) 2021-07-07
US20220156161A1 (en) 2022-05-19
US20190340064A1 (en) 2019-11-07
CN111149166B (zh) 2024-01-09
TW201923586A (zh) 2019-06-16

Similar Documents

Publication Publication Date Title
JP7242634B2 (ja) メモリチップ
US11817167B2 (en) Variable word length access
TWI856974B (zh) 可變字長存取
KR102782323B1 (ko) 메모리 기반 분산 프로세서 아키텍처

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20200417

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20200417

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210729

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210729

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220729

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220830

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221130

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230308

R150 Certificate of patent or registration of utility model

Ref document number: 7242634

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150