CN111149166A - 基于存储器的分布式处理器架构 - Google Patents
基于存储器的分布式处理器架构 Download PDFInfo
- Publication number
- CN111149166A CN111149166A CN201880062664.7A CN201880062664A CN111149166A CN 111149166 A CN111149166 A CN 111149166A CN 201880062664 A CN201880062664 A CN 201880062664A CN 111149166 A CN111149166 A CN 111149166A
- Authority
- CN
- China
- Prior art keywords
- memory
- processor
- bank
- data
- buses
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000015654 memory Effects 0.000 title claims abstract description 1246
- 238000012545 processing Methods 0.000 claims abstract description 359
- 239000000758 substrate Substances 0.000 claims abstract description 174
- 238000000034 method Methods 0.000 claims abstract description 106
- 230000008569 process Effects 0.000 claims abstract description 53
- 108010001267 Protein Subunits Proteins 0.000 claims abstract description 12
- 238000012546 transfer Methods 0.000 claims description 89
- 238000012360 testing method Methods 0.000 claims description 74
- 230000006870 function Effects 0.000 claims description 32
- 238000004891 communication Methods 0.000 claims description 24
- 239000013598 vector Substances 0.000 claims description 23
- 230000004913 activation Effects 0.000 claims description 15
- 238000013528 artificial neural network Methods 0.000 claims description 15
- 238000000638 solvent extraction Methods 0.000 claims description 12
- 239000004065 semiconductor Substances 0.000 claims description 11
- 230000003362 replicative effect Effects 0.000 claims description 10
- 230000001360 synchronised effect Effects 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 9
- 230000009849 deactivation Effects 0.000 claims description 8
- 230000002829 reductive effect Effects 0.000 claims description 6
- 238000013473 artificial intelligence Methods 0.000 claims description 4
- 239000013307 optical fiber Substances 0.000 claims description 4
- 238000005070 sampling Methods 0.000 claims description 4
- 238000001514 detection method Methods 0.000 claims description 3
- 230000011664 signaling Effects 0.000 claims description 3
- 230000003068 static effect Effects 0.000 claims description 3
- 230000008878 coupling Effects 0.000 claims description 2
- 238000010168 coupling process Methods 0.000 claims description 2
- 238000005859 coupling reaction Methods 0.000 claims description 2
- 230000001419 dependent effect Effects 0.000 claims 1
- 239000000126 substance Substances 0.000 claims 1
- 210000004027 cell Anatomy 0.000 description 97
- 230000002950 deficient Effects 0.000 description 25
- 238000010586 diagram Methods 0.000 description 23
- 238000004364 calculation method Methods 0.000 description 21
- 238000004519 manufacturing process Methods 0.000 description 13
- 230000007246 mechanism Effects 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 7
- 238000005457 optimization Methods 0.000 description 7
- 230000008520 organization Effects 0.000 description 7
- 230000036961 partial effect Effects 0.000 description 7
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 238000007667 floating Methods 0.000 description 5
- 210000002569 neuron Anatomy 0.000 description 5
- 229910052710 silicon Inorganic materials 0.000 description 5
- 239000010703 silicon Substances 0.000 description 5
- 238000003860 storage Methods 0.000 description 5
- 230000003321 amplification Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 4
- 239000003990 capacitor Substances 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 230000033001 locomotion Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 238000003199 nucleic acid amplification method Methods 0.000 description 4
- 230000006978 adaptation Effects 0.000 description 3
- 238000007792 addition Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000001934 delay Effects 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000010998 test method Methods 0.000 description 3
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000013523 data management Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000012010 growth Effects 0.000 description 2
- 238000010348 incorporation Methods 0.000 description 2
- 150000002500 ions Chemical class 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000006227 byproduct Substances 0.000 description 1
- 239000005387 chalcogenide glass Substances 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 239000003792 electrolyte Substances 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000013073 enabling process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000036316 preload Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1658—Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1012—Adding 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/1016—Error in accessing a memory location, i.e. addressing error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1012—Adding 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/102—Error in check bits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1608—Error detection by comparing the output signals of redundant hardware
- G06F11/1616—Error detection by comparing the output signals of redundant hardware where the redundant component is an I/O device or an adapter therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1657—Access to multiple memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8038—Associative processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
- G06F9/3895—Concurrent 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/02—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
- G11C11/16—Digital 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/165—Auxiliary circuits
- G11C11/1653—Address circuits or decoders
- G11C11/1655—Bit-line or column circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/02—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
- G11C11/16—Digital 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/165—Auxiliary circuits
- G11C11/1653—Address circuits or decoders
- G11C11/1657—Word-line or row circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/02—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
- G11C11/16—Digital 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/165—Auxiliary circuits
- G11C11/1675—Writing or programming circuits or methods
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital 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/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/4076—Timing circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital 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/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/408—Address circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital 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/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/409—Read-write [R-W] circuits
- G11C11/4093—Input/output [I/O] data interface arrangements, e.g. data buffers
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1072—Input/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F2015/761—Indexing scheme relating to architectures of general purpose stored programme computers
- G06F2015/765—Cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
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)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Mathematical Physics (AREA)
- Memory System (AREA)
- Multi Processors (AREA)
- Microcomputers (AREA)
- Hardware Redundancy (AREA)
- Advance Control (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本公开包括分布式处理器及用于编译器代码以供分布式处理器执行的方法。在一个实施方式中,分布式处理器可包括:基板;安置于该基板上的存储器阵列;及安置于该基板上的处理阵列。该存储器阵列可包括多个离散存储器组,且该处理阵列可包括多个处理器子单元,处理器子单元中的每一个与该多个离散存储器组中的一对应的专属存储器组相关联。该分布式处理器可进一步包括:第一多个总线,每一总线将该多个处理器子单元中的一个连接至其对应的专属存储器组;及第二多个总线,每一总线将该多个处理器子单元中的一个连接至该多个处理器子单元中的另一个。
Description
相关申请的交叉引用
本申请主张以下申请的优先权权利:2017年7月30日提交的美国临时专利申请第62/538,722号、2017年7月30提交的美国临时专利申请第62/538,724号及2017年8月23日提交的美国临时专利申请第62/548,990号。所有前述申请以全文引用的方式并入本文中。
技术领域
本公开总体上涉及用于促进存储器密集型操作的设备。更具体地,本公开涉及包括耦接至专属存储器组(bank)的处理元件的硬件芯片。
背景技术
随着处理器速度及存储器大小均继续增大,有效处理速度的明显局限性是冯诺依曼(von Neumann)瓶颈。冯诺依曼瓶颈由产生于传统计算机架构的吞吐量限制造成。具体地,与由处理器进行的实际计算相比,自存储器至处理器的数据传送常常成为瓶颈。因此,用以自存储器读取及写入的时钟周期的数目由于存储器密集型处理而显著增大。这些时钟周期导致较低的有效处理速度,因为自存储器的读取及写入消耗了不能用于对数据执行操作的时钟周期。此外,处理器的计算带宽通常大于处理器用于存取存储器的总线的带宽。
这些瓶颈对于以下特别地显著:存储器密集型程序,诸如神经网络及其他机器学习算法;数据库建构、索引搜寻及查询;及与数据处理操作相比包括更多读取及写入操作的其他任务。
另外,可用数字数据的量及粒度的快速增长已产生开发机器学习算法的机会且已实现新技术。然而,这也为数据库及并行计算的世界带来棘手的挑战。例如,社交媒体及物联网(IoT)的出现以记录速率产生数字数据。此新数据可用以建立用于多种用途的算法,范围为新广告技术至工业处理的更精确控制方法。然而,该新数据难以储存、处理、分析及处置。
新数据资源可以为大规模的,有时为大约拍(peta)字节至泽(zetta)字节。此外,这些数据资源的生长速率可超过数据处理能力。因此,数据科学家已致力于并行数据处理技术,以应对这些挑战。在努力提高计算能力且处置大量数据的过程中,科学家已尝试建立能够进行并行密集型计算的系统及方法。但这些现有系统及方法跟不上数据处理要求,常常因为所使用的技术受这些技术对用于数据管理、整合分隔数据及分析分段数据的额外资源的需求限制。
为了促进对巨大数据集的操控,工程师及科学家现在设法改善用以分析数据的硬件。例如,可通过在以更适合存储器操作而非算术计算的技术制造的单一基板中并入存储器及处理功能,来特别针对数据密集型任务来设计新的半导体处理器或芯片(诸如本文中所描述的半导体处理器或芯片)。利用特别针对数据密集型任务设计的集成电路,能够满足新的数据处理要求。尽管如此,这种应对巨大数据集的数据处理的新方法需要解决芯片设计及制造中的新问题。例如,若针对数据密集型任务设计的新芯片是利用用于普通芯片的制造技术及架构制造的,则新芯片会具有差效能和/或不可接受的良率。另外,若新芯片被设计为利用当前数据处置方法进行操作,则新芯片会具有差效能,因为当前方法可限制芯片处置并行操作的能力。
本公开描述用于减少或克服上文所阐述的问题中的一个或多个以及背景技术中的其他问题的解决方案。
发明内容
符合本公开的实施例提供包括硬件处理芯片的设备。所公开实施例可使用与处理元件配对的专属存储器组以提供比传统处理器更高效的有效处理速度。例如,符合所公开实施例,所公开芯片可包括处于每一处理组件与其对应的存储器组之间的专属总线。另外,所公开芯片可免于控制处理组件之间的数据传送的定时的仲裁器和/或其他硬件。其他所公开的非暂时性计算机可读介质可储存用于将较高层级指令编译成由本文中所公开的硬件芯片执行的较低层级指令的指令。
本公开的一些实施例包括一种分布式处理器,其包含:基板;安置于该基板上的存储器阵列,该存储器阵列包括多个离散存储器组;安置于该基板上的处理阵列,该处理阵列包括多个处理器子单元,所述处理器子单元中的每一个与该多个离散存储器组中的一对应的专属存储器组相关联;第一多个总线,每一总线将该多个处理器子单元中的一个连接至其对应的专属存储器组;及第二多个总线,每一总线将该多个处理器子单元中的一个连接至该多个处理器子单元中的另一个。
符合本公开的其他实施例包括一种存储器芯片,其包含:基板;安置于该基板上的存储器阵列,该存储器阵列包括多个离散存储器组;安置于该基板上的处理阵列,该处理阵列包括多个地址产生器,所述地址产生器中的每一个与该多个离散存储器组中的一对应的专属存储器组相关联;及多个总线,每一总线将该多个地址产生器中的一个连接至其对应的专属存储器组。
符合本公开的另一实施例可包括一种分布式处理器,其包含:基板;安置于该基板上的存储器阵列,该存储器阵列包括多个离散存储器组,其中所述离散存储器组中的每一个具有大于一兆字节的容量;及安置于该基板上的处理阵列,该处理阵列包括多个处理器子单元,所述处理器子单元中的每一个与该多个离散存储器组的一对应的专属存储器组相关联。
符合本公开的另外其他实施例可包括一种分布式处理器,其包含:基板;安置于该基板上的存储器阵列,该存储器阵列包括多个离散存储器组;及安置于该基板上的处理阵列,该处理阵列包括多个处理器子单元,所述处理器子单元中的每一个与该多个离散存储器组的一对应的专属存储器组相关联;及多个总线,该多个总线中的每一个将该多个处理器子单元中的一个连接至该多个处理器子单元中的至少另一个,其中该多个总线免于定时硬件逻辑组件,以使得处理器子单元之间及跨该多个总线的对应总线的数据传送不受定时硬件逻辑组件控制。
其他实施例可包括一种在存储器芯片上的分布式处理器,其包含:基板;安置于该基板上的存储器阵列,该存储器阵列包括多个离散存储器组;及安置于该基板上的处理阵列,该处理阵列包括多个处理器子单元,所述处理器子单元中的每一个与该多个离散存储器组的一对应的专属存储器组相关联;及多个总线,该多个总线中的每一个将该多个处理器子单元中的一个连接至该多个离散存储器组中的一对应的专属存储器组,其中该多个总线免于定时硬件逻辑组件,以使得处理器子单元与该多个离散存储器组中的一对应的专属存储器组之间及跨该多个总线的一对应总线的数据传送不受定时硬件逻辑组件控制。
其他实施例可包括一种分布式处理器,其包含:基板;安置于该基板上的存储器阵列,该存储器阵列包括多个离散存储器组;及安置于该基板上的处理阵列,该处理阵列包括多个处理器子单元,所述处理器子单元中的每一个与该多个离散存储器组中的一对应的专属存储器组相关联;及多个总线,该多个总线中的每一个将该多个处理器子单元中的一个连接至该多个处理器子单元中的至少另一个,其中该多个处理器子单元被配置为执行控制跨该多个总线的数据传送的定时以避免与该多个总线中的至少一个上的数据传送冲突的软件。
其他实施例可包括一种在存储器芯片上的分布式处理器,其包含:基板;安置于该基板上的多个处理器子单元,每一处理器子单元被配置为独立于其他处理器子单元执行一系列的指令,每一系列的指令定义待由单个处理器子单元执行的一系列的任务;安置于该基板上的多个对应存储器组,该多个处理器子单元中的每一个连接至不被该多个处理器子单元的任何其他处理器子单元共享的至少一个专属存储器组;及多个总线,该多个总线中的每一个将该多个处理器子单元中的一个连接至该多个处理器子单元中的至少一个其他处理器子单元,其中该多个总线中的至少一个上的数据传送通过连接至该多个总线中的该至少一个的处理器子单元中所包含的该系列的指令来预定义。
其他实施例可包括一种在存储器芯片上的分布式处理器,其包含:安置于该存储器芯片上的多个处理器子单元;安置于该存储器芯片上的多个存储器组,其中该多个存储器组中的每一个被配置为储存与储存于该多个存储器组的其他存储器组中的数据独立的数据,且其中该多个处理器子单元中的一个连接至来自该多个存储器组当中的至少一个专属存储器组;及多个总线,其中该多个总线中的每一个将该多个处理器子单元中的一个连接至来自该多个存储器组当中的一个或多个对应的专属存储器组,其中跨该多个总线中的特定总线的数据传送由连接至该多个总线中的该特定总线的对应处理器子单元控制。
其他实施例可包括一种在存储器芯片上的分布式处理器,其包含:安置于该存储器芯片上的多个处理器子单元;安置于该存储器芯片上的多个存储器组,其中该多个处理器子单元中的每一个连接至来自该多个存储器组当中的至少一个专属存储器组,且其中该多个存储器组中的每一存储器组被配置为储存与储存于该多个存储器组的其他存储器组中的数据独立的数据,且其中储存于来自该多个存储器组当中的一个特定存储器组中的该数据的至少一些包含储存于该多个存储器组中的至少另一存储器组中的数据的副本;及多个总线,其中该多个总线中的每一个将该多个处理器子单元中的一个连接至来自该多个存储器组当中的一个或多个对应的专属存储器组,其中跨该多个总线中的特定总线的数据传送由连接至该多个总线中的该特定总线的对应处理器子单元控制。
其他实施例可包括一种在存储器芯片上的分布式处理器,其包含:安置于该存储器芯片上的多个处理器子单元;安置于该存储器芯片上的多个存储器组,其中该多个处理器子单元中的每一个连接至来自该多个存储器组当中的至少一个专属存储器组,且其中该多个存储器组中的每一存储器组被配置为储存与储存于该多个存储器组的其他存储器组中的数据独立的数据,且其中储存于来自该多个存储器组当中的一个特定存储器组中的该数据的至少一些包含储存于该多个存储器组中的至少另一存储器组中的数据的副本;及多个总线,其中该多个总线中的每一个将该多个处理器子单元中的一个连接至来自该多个存储器组当中的一个或多个对应的专属存储器组,其中跨该多个总线中的特定总线的数据传送由连接至该多个总线中的该特定总线的对应处理器子单元控制。
其他实施例可包括一种储存指令的非暂时性计算机可读介质,所述指令用于编译一系列的指令以供在包含多个处理器子单元及多个存储器组的存储器芯片上执行,其中来自该多个处理器子单元当中的每一处理器子单元连接至来自该多个存储器组当中的至少一个对应的专属存储器组,所述指令致使至少一个处理器:将该系列的指令分割成子系列指令的多个群组,该分割包含:将与该系列的指令相关联的任务指派给所述处理器子单元中的不同处理器子单元,其中所述处理器子单元在空间上发布在安置于该存储器芯片上的该多个存储器组当中;产生用以在该存储器芯片的处理器子单元对之间传送数据的任务,每一对处理器子单元由总线连接,及将经指派及所产生的任务分组成子系列指令的该多个群组,其中子系列指令的该多个群组中的每一个对应于该多个处理器子单元中的一不同处理器子单元;产生对应于子系列指令的该多个群组中的每一个的机器码;及根据该分割而将对应于子系列指令的该多个群组中的每一个的所产生机器码指派给该多个处理器子单元中的对应处理器子单元。
其他实施例可包括一种存储器芯片,其包含:多个存储器组,每一存储器组具有组行解码器、组列解码器及多个存储器子组,每一存储器子组具有子组行解码器及子组列解码器以允许对该存储器子组上的位置的读取及写入,每一存储器子组包含:多个存储器垫,每一存储器垫具有多个存储器胞元,其中子组行解码器及子组列解码器连接至该组行解码器及该组列解码器。
其他实施例可包括一种存储器芯片,其包含:多个存储器组,每一存储器组具有组控制器及多个存储器子组,每一存储器子组具有子组行解码器及子组列解码器以允许对该存储器子组上的位置的读取及写入,每一存储器子组包含:多个存储器垫,每一存储器垫具有多个存储器胞元,其中子组行解码器及子组列解码器处理来自该组控制器的读取及写入请求。
其他实施例可包括一种存储器芯片,其包含:多个存储器组,每一存储器组具有用于处理对该存储器组上的位置的读取及写入的组控制器,每一存储器组包含:多个存储器垫,每一存储器垫具有多个存储器胞元且具有垫行解码器及垫列解码器,其中垫行解码器及垫列解码器处理来自子组控制器的读取及写入请求。
其他实施例可包括一种存储器芯片,其包含:多个存储器组,每一存储器组具有组控制器、行解码器及列解码器以允许对该存储器组的位置的读取及写入;及多个总线,该多个总线将该多个组控制器中的每一控制器连接至该多个存储器组控制器中的至少一个其他控制器。
本公开的一个方面针对一种存储器装置,其包括:基板;该基板上的多个存储器组;该基板上的多个主要逻辑区块,该多个主要逻辑区块中的每一个连接至该多个存储器组中的至少一个;该基板上的多个冗余区块,该多个冗余区块中的每一个连接至所述存储器组中的至少一个,该多个冗余区块中的每一个复制该多个主要逻辑区块中的至少一个;及该基板上的多个配置开关,该多个配置开关中的每一个连接至该多个主要逻辑区块中的至少一个或连接至该多个冗余区块中的至少一个。在该存储器装置中,在检测到与该多个主要逻辑区块中的一个主要逻辑区块相关联的故障后:该多个配置开关中的第一配置开关可被配置为停用该多个主要逻辑区块中的该一个主要逻辑区块,且该多个配置开关中的第二配置开关可被配置为启用该多个冗余区块中的复制该多个主要逻辑区块中的该一个主要逻辑区块的一个冗余区块。
本公开的另一方面针对一种在存储器芯片上的分布式处理器,其包括:基板;该基板上的地址管理器;该基板上的多个主要逻辑区块,该多个主要逻辑区块中的每一个连接至该多个存储器组中的至少一个;该基板上的多个冗余区块,该多个冗余区块中的每一个连接至该多个存储器组中的至少一个,该多个冗余区块中的每一个复制该多个主要逻辑区块中的至少一个;及该基板上的总线,其连接至该多个主要逻辑区块中的每一个、该多个冗余区块中的每一个及该地址管理器。该处理器中可将运行ID号指派给该多个主要逻辑区块中的通过测试协议的区块;将非法ID号指派给该多个主要逻辑区块中的未通过该测试协议的区块;且将运行ID号指派给该多个冗余区块中的通过该测试协议的区块。
本公开的又一方面针对一种用于配置存储器芯片上的分布式处理器的方法。该方法可包括:针对至少一个电路功能性对该存储器芯片的基板上的多个主要逻辑区块中的每一个进行测试;基于测试结果来识别该多个主要逻辑区块中的至少一个故障逻辑区块,该至少一个故障逻辑区块连接至安置于该存储器芯片的该基板上的至少一个存储器组;针对该至少一个电路功能性对该存储器芯片的该基板上的至少一个冗余区块进行测试,该至少一个冗余区块复制该至少一个故障逻辑区块且连接至该至少一个存储器组;通过将外部信号施加至禁用开关来停用该至少一个故障逻辑区块,该禁用开关与该至少一个故障逻辑区块连接且安置于该存储器芯片的该基板上;及通过将外部信号施加至激活开关来启用该至少一个冗余区块,该激活开关与该至少一个冗余区块连接且安置于该存储器芯片的该基板上。
本公开的另一方面针对一种用于配置存储器芯片上的分布式处理器的方法。该方法可包括:启用该存储器的基板上的多个主要逻辑区块及多个冗余区块;针对至少一个电路功能性对该存储器芯片的该基板上的该多个主要逻辑区块中的每一个进行测试;基于测试结果来识别该多个主要逻辑区块中的至少一个故障逻辑区块,该至少一个故障逻辑区块连接至安置于该存储器芯片的该基板上的至少一个存储器组;针对该至少一个电路功能性对该存储器芯片的该基板上的至少一个冗余区块进行测试,该至少一个冗余区块复制该至少一个故障逻辑区块且连接至该至少一个存储器组;及通过将该外部信号施加至激活开关来停用至少一个冗余区块,该激活开关与该至少一个冗余区块连接且安置于该存储器芯片的该基板上。
本公开的一个方面针对一种处理装置。该处理装置可包括:基板;该基板上的多个存储器组;该基板上的存储器控制器,其连接至该多个存储器组中的每一个;及该基板上的多个处理单元,该多个处理单元中的每一个连接至该存储器控制器,该多个处理单元包括配置管理器。在该处理装置中,该配置管理器被配置为:接收待执行的任务的第一指示,该任务需要至少一个计算;向来自该多个处理单元中的至少一个选定处理单元发信号,所述发信号基于用于执行该至少一个计算的该选定处理单元的能力;及将第二指示传输至该至少一个选定处理单元,且该存储器控制器被配置为使用至少一个通信线将来自至少两个存储器组的数据路由至该至少一个选定处理单元,该至少一个通信线经由该存储器控制器连接至该至少两个存储器组及该至少一个选定处理单元。
本公开的另一方面针对一种为了操作分布式存储器装置所执行的方法。该方法可包括:通过编译器编译该分布式存储器装置的任务,该任务需要至少一个计算,该编译可包括判定执行该任务同时所需的字的数目,及提供用于进行如下操作的指令:当可同时自安置于基板上的多个存储器组中的一个存取的字的数目小于同时所需的字的数目时,在该多个存储器组中写入需要同时存取的字;通过安置于该基板上的配置管理器接收执行该任务的指示;及响应于接收到该指示,对安置于该基板中的存储器控制器配置以:在一第一线存取周期内:使用第一存储器线自来自该多个存储器组的第一存储器组存取至少一个第一字,将该至少一个第一字发送至至少一个处理单元,且开放该第二存储器组中的第一存储器线以自来自该多个存储器组的该第二存储器组存取第二位置,且在第二线存取周期内:使用该第一存储器线自该第二存储器组存取至少一个第二字,将该至少一个第二字发送至至少一个处理单元,且使用该第一存储器组中的第二存储器线自该第一存储器组存取第三地址。
本公开的又一方面针对一种储存指令的非暂时性计算机可读介质,所述指令在由至少一个处理器执行时致使该至少一个处理器:确定执行任务同时所需的字的数目,该任务需要至少一个计算;当可同时自安置于基板上的多个存储器组中的一个存取的字的一数目小于同时所需的字的数目时,在该多个存储器组中写入需要同时存取的字;将执行该任务的指示传输至安置于该基板上的配置管理器;及传输指令,所述指令用以对安置于该基板上的一存储器控制器配置以,在第一线存取周期内:使用第一存储器线自来自该多个存储器组的第一存储器组存取至少一个第一字,将该至少一个第一字发送至至少一个处理单元,且开放该第二存储器组中的第一存储器线以自来自该多个存储器组的该第二存储器组存取第二位置,且在一第二线存取周期内:使用该第一存储器线自该第二存储器组存取至少一个第二字,将该至少一个第二字发送至至少一个处理单元,且使用该第一存储器组中的第二存储器线自该第一存储器组存取第三地址。
符合其他所公开实施例,非暂时性计算机可读储存介质可储存程序指令,程序指令由至少一个处理装置执行且执行本文中所描述的方法中的任一个。
前文的一般描述及下文的详细描述仅为例示性的及解释性的,且不受权利要求限制。
附图说明
并入于本公开内容中且构成本公开内容的一部分的附图说明了各种所公开实施例。在附图中:
图1是中央处理单元(CPU)的图解表示。
图2是图形处理单元(GPU)的图解表示。
图3A是符合所公开实施例的例示性硬件芯片的一实施例的图解表示。
图3B是符合所公开实施例的例示性硬件芯片的另一实施例的图解表示。
图4是由符合所公开实施例的例示性硬件芯片执行的一般命令的图解表示。
图5是由符合所公开实施例的例示性硬件芯片执行的特殊化命令的图解表示。
图6是供符合所公开实施例的例示性硬件芯片使用的处理群组的图解表示。
图7A是符合所公开实施例的处理群组的矩形阵列的图解表示。
图7B是符合所公开实施例的处理群组的椭圆形阵列的图解表示。
图7C是符合所公开实施例的硬件芯片的阵列的图解表示。
图7D是符合所公开实施例的硬件芯片的另一阵列的图解表示。
图8是描绘用于编译一系列的指令以供在符合所公开实施例的例示性硬件芯片上执行的例示性方法的流程图。
图9是存储器组的图解表示。
图10是存储器组的图解表示。
图11是符合所公开实施例的具有子组控制件的例示性存储器组的一实施例的图解表示。
图12是符合所公开实施例的具有子组控制件的例示性存储器组的另一实施例的图解表示。
图13是符合所公开实施例的例示性存储器芯片的方块图。
图14是符合所公开实施例的例示性冗余逻辑区块集合的方块图。
图15是符合所公开实施例的例示性逻辑区块的方块图。
图16是符合所公开实施例的与总线连接的例示性逻辑区块的方块图。
图17是符合所公开实施例的串联连接的例示性逻辑区块的方块图。
图18是符合所公开实施例的以二维阵列连接的例示性逻辑区块的方块图。
图19是符合所公开实施例的复合连接的例示性逻辑区块的方块图。
图20是说明符合所公开实施例的冗余区块启用处理的例示性流程图。
图21是说明符合所公开实施例的地址指派处理的例示性流程图。
图22提供符合所公开实施例的例示性处理装置的方块图。
图23是符合所公开实施例的例示性处理装置的方块图。
图24包括符合所公开实施例的例示性存储器配置图。
图25是说明符合所公开实施例的存储器配置处理的例示性流程图。
图26是说明符合所公开实施例的存储器读取处理的例示性流程图。
图27是说明符合所公开实施例的处理执行的例示性流程图。
具体实现方式
以下详细描述参考附图。在任何方便之处,在附图及以下描述中使用相同参考编号来指代相同或类似部分。尽管本文中描述了若干说明性实施例,但修改、调适及其他实现方式是可能的。例如,可对附图中所示出的组件进行替代、添加或修改,且可通过对所公开的方法的步骤进行替代、重排序、移除或将步骤添加至所公开的方法来修改本文中所描述的说明性方法。因此,以下详细描述不限于所公开实施例及示例。相反,恰当范围由随附权利要求界定。
处理器架构
如贯穿本公开所使用,术语“硬件芯片”是指半导体晶圆(wafer)(诸如硅等),其上形成有一个或多个电路元件(诸如晶体管、电容器、电阻器等)。所述电路元件可形成处理元件或存储器元件。“处理元件”是指一起执行至少一个逻辑功能(诸如算术功能、逻辑门、其他布尔运算等)的一个或多个电路元件。处理元件可为通用处理元件(诸如可配置的多个晶体管)或专用处理元件(诸如被设计为执行特定逻辑功能的特定逻辑门或多个电路元件)。“存储器元件”是指可用于储存数据的一个或多个电路元件。“存储器元件”亦可被称为“存储器胞元(cell)”。存储器元件可以为动态(以使得需要电刷新以保持数据储存)、静态(以使得数据在失去电力之后持续存在至少某一时间)或非易失性的存储器。
处理元件可接合以形成处理器子单元。“处理器子单元”因此可包含可执行至少一个任务或(例如,处理器指令集的)指令的处理元件的最小分组。例如,子单元可包含被配置为一起执行指令的一个或多个通用处理元件、与被配置为以互补方式执行指令的一个或多个专用处理元件配对的一个或多个通用处理元件等。处理器子单元可以以阵列布置于基板(例如,晶圆)上。尽管“阵列”可以包含矩形形状,但子单元在该阵列中的任何布置都可以形成于该基板上。
存储器元件可接合以形成存储器组。例如,存储器组可包含沿着至少一个导线(或其他导电连接)链接的一排或多排存储器元件。此外,存储器元件可在另一方向上沿着至少一个额外导线链接。例如,存储器元件可沿着字线及位线布置,如下文所解释。尽管存储器组可包含成排的,但元件在组中的任何布置可用以在基板上形成组。此外,一个或多个组可电接合至至少一个存储器控制器以形成存储器阵列。尽管存储器阵列可包含存储器组的矩形配置,但存储器组在阵列中的任何布置都可以形成于该基板上。
如贯穿本公开另外所使用的,“总线”是指基板的元件之间的任何通信连接。例如,(形成电连接的)导线或线、(形成光学连接的)光纤、或传导元件之间的通信的任何其他连接可被称为“总线”。
传统处理器将通用逻辑电路与共享存储器配对。共享存储器可储存供逻辑电路执行的指令集以及用于指令集的执行和从指令集的执行产生的数据两者。如下所述,一些传统处理器使用高速缓存(caching)系统,来减小执行自共享存储器提取时的延迟;然而,传统高速缓存系统仍是共享的。传统处理器包括中央处理单元(CPU)、图形处理单元(GPU)、各种专用集成电路(ASIC)等。图1展示CPU的一示例,且图2展示GPU的一示例。
如图1中所示,CPU 100可包含处理单元110,该处理单元包括一个或多个处理器子单元,诸如处理器子单元120a及处理器子单元120b。尽管图1中未描绘,但每一处理器子单元可包含多个处理元件。此外,处理单元110可包括一个或多个层级的片上高速缓存。这种高速缓存元件通常与处理单元110形成于同一半导体晶粒(die)上,而非经由形成于含有处理器子单元120a及120b和高速缓存元件的基板中的一个或多个总线连接至处理器子单元120a及120b。对于传统处理器中的第一级(L1)及第二级(L2)高速缓存而言,直接在同一晶粒上而非经由总线连接的布置是常见的。替代地,在早期处理器中,使用子单元与L2高速缓存之间的背面总线而在处理器子单元当中共享L2高速缓存。背面总线通常大于下文所描述的正面总线。因此,因为高速缓存将与晶粒上的所有处理器子单元共享,所以高速缓存130可与处理器子单元120a及120b在同一晶粒上形成,或经由一个或多个背面总线以通信方式耦接至处理器子单元120a及120b。在不具总线(例如,高速缓存直接形成于晶粒上)以及使用背面总线的实施例两者中,高速缓存在CPU的处理器子单元之间共享。
此外,处理单元110与共享存储器140a及存储器140b通信。例如,存储器140a及140b可表示共享动态随机存取存储器(DRAM)的存储器组。尽管描绘为具有两个存储器组,但大部分传统存储器芯片包括介于八个与十六个之间的存储器组。因此,处理器子单元120a及120b可使用共享存储器140a及140b来储存数据,接着通过处理器子单元120a及120b对该数据进行操作。然而,此布置导致存储器140a及140b与处理单元110之间的总线在处理单元110的时钟速度超过总线的数据传送速度时成为瓶颈。此情况对于传统处理器大体上成立,从而导致低于基于时钟速率及晶体管的数目的规定处理速度的有效处理速度。
如图2所示,类似缺陷存留在GPU中。GPU 200可包含处理单元210,该处理单元包括一个或多个处理器子单元(例如,子单元220a、220b、220c、220d、220e、220f、220g、220h、220i、220j、220k、220l、220m、220n、220o以及220p)。此外,处理单元210可包括一个或多个层级的片上高速缓存和/或寄存器文件。这种高速缓存元件通常与处理单元210形成于同一半导体晶粒上。实际上,在图2的示例中,高速缓存240与处理单元210形成于同一晶粒上且在所有处理器子单元当中共享,而高速缓存230a、230b、230c以及230d分别形成于处理器子单元的一子集上且专属于该子集。
此外,处理单元210与共享存储器250a、250b、250c以及250d通信。例如,存储器250a、250b、250c以及250d可表示共享DRAM的存储器组。因此,处理单元210的处理器子单元可使用共享存储器250a、250b、250c以及250d来储存数据,接着通过处理器子单元对该数据进行操作。然而,此布置导致存储器250a、250b、250c以及250d与处理单元210之间的总线成为瓶颈,类似于上文针对CPU所描述的瓶颈。
所公开的硬件芯片的概述
图3A是描绘一例示性硬件芯片300的实施例的图解表示。硬件芯片300可包含被设计为减少上文针对CPU、GPU及其他传统处理器所描述的瓶颈的分布式处理器。分布式处理器可包括在空间上分布在单个基板上的多个处理器子单元。此外,如上文所解释,在本公开的分布式处理器中,对应的存储器组亦在空间上分布于基板上。在一些实施例中,分布式处理器可与一组指令相关联,且分布式处理器的处理器子单元中的每一个可负责执行该组指令中包含的一个或多个任务。
如图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上的处理器子单元的专属存储器实例。此外,尽管图3A将每一处理器子单元描绘为包含针对(一个或多个)专属存储器组的逻辑组件及控制件两者,但硬件芯片300可使用针对存储器组的控制件,所述控制件至少部分地与所述逻辑组件分开。此外,如图3A中所描绘,两个或更多个处理器子单元及其对应存储器组可分组成例如处理群组310a、310b、310c以及310d。“处理群组”可表示形成有硬件芯片300的基板上的空间区别。因此,处理群组可包括针对该群组中的存储器组的另外控制件,例如,控制件340a、340b、340c以及340d。另外或替代地,“处理群组”可表示出于编译代码以供在硬件芯片300上执行的目的的逻辑分组。因此,硬件芯片300的编译器(将在下文进一步描述)可在硬件芯片300上的处理群组之间分割一整组指令。
此外,主机350可提供指令、数据及其他输入至硬件芯片300且自该硬件芯片读取输出。因此,一组指令可全部在单个晶粒上执行,例如代管(host)硬件芯片300的晶粒。实际上,晶粒外的唯一通信可包括指令至硬件芯片300的加载、发送至硬件芯片300的任何输入及自硬件芯片300读取的任何输出。因此,所有计算及存储器操作可在晶粒上(在硬件芯片300上)执行,因为硬件芯片300的处理器子单元与硬件芯片300的专属存储器组通信。
图3B是描绘另一例示性硬件芯片300'的实施例的图解表示。尽管被描绘为硬件芯片300的替代,但图3B中所描绘的架构可至少部分地与图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中所描绘的架构以外的架构。例如,处理群组的阵列可配置于基板上,每一处理群组具有单个处理器子单元及存储器实例。处理器子单元可另外或替代地形成用于对应的专属存储器组的控制器的部分、用于对应的专属存储器的存储器垫(mat)的控制器的部分等。
鉴于上述架构,硬件芯片300及300'可提供与传统架构相比针对存储器密集型任务的效率的显著增大。例如,数据库运算及人工智能算法(诸如神经网络)是存储器密集型任务的示例,对于存储器密集型任务,传统架构在效率上低于硬件芯片300及300'。因此,硬件芯片300及300'可被称为数据库加速器处理器和/或人工智能加速器处理器。
配置所公开的硬件芯片
上文所述的硬件芯片架构可针对代码的执行来配置。例如,每一处理器子单元可脱离硬件芯片中的其他处理器子单元而个别地执行代码(该代码定义一组指令)。因此,并非依靠操作系统来管理多线程或使用多任务(其为并发(concurrency)而非并行(parallelism)),本公开的硬件芯片可允许处理器子单元完全并行地操作。
除上文所述的完全并行实施方式之外,指派给每一处理器子单元的指令的至少一些可以为重叠的。例如,分布式处理器上的多个处理器子单元可执行重叠的指令以作为例如操作系统或其他管理软件的实施方式,同时执行非重叠指令以便在操作系统或其他管理软件的环境内执行并行任务。
图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。“地址产生器”可包含被配置为确定一个或多个存储器组中的地址以用于执行读取及写入的多个处理元件,且还可对位于所确定地址处的数据执行运算(例如,加法、减法、乘法等)。例如,地址产生器450可确定用于对存储器的任何读取或写入的地址。在一个示例中,地址产生器450可通过在不再需要读取值时用基于命令所确定的新值覆写该读取值来提高效率。另外或替代地,地址产生器450可选择可用地址用于储存来自命令的执行的结果。当稍后时钟周期的结果读出对外部主机而言更便利时,此可允许对稍后时钟周期的结果读出进行调度。在另一示例中,地址产生器450可在诸如向量或矩阵乘法-累加计算的多周期计算期间,确定读取自及写入至的地址。因此,地址产生器450可保持或计算用于读取数据及写入多周期计算的中间结果的存储器地址,以使得处理器子单元430可继续处理而不必储存这些存储器地址。
图5描绘用处理群组510执行特殊化命令的例示性处理500。例如,处理群组510可包含本公开的硬件芯片(例如,硬件芯片300、硬件芯片300'等)的一部分。
如图5中所描绘,特殊化命令(例如,乘法-累加命令)可发送至与专属存储器实例520配对的处理元件530。外部主机(例如,主机350)可发送该命令至处理元件530以供执行。因此,命令可由处理元件530在来自主机的给定信号下执行,该处理元件是可配置以执行特定命令(包括接收的命令)的特殊化处理元件。替代地,处理元件530可自存储器实例520撷取命令以供执行。因此,在图5的示例中,处理元件530是乘法-累加(MAC)电路,该MAC电路被配置为执行自外部主机接收或自存储器实例520撷取的MAC命令。在执行命令之后,处理群组510可将命令的结果输出至例如外部主机或输出至同一硬件芯片上的不同处理群组。尽管关于单个命令及单个结果来描绘,但可接收或撷取且执行多个命令,且多个结果可在输出之前在处理群组510上组合。
尽管在图5中描绘为MAC电路,但额外或替代性特殊化电路可包括于处理群组510中。例如,可实施MAX-读取命令(其返回向量的最大值)、MAX0-读取命令(其是亦被称作整流函数(rectifier)的常见函数,其返回整个向量而且与0进行MAX运算)等。
尽管分开地描绘,但图4的一般化处理群组410及图5的特殊化处理群组510可组合。例如,一般处理器子单元可耦接至一个或多个特殊化处理器子单元以形成处理器子单元。因此,一般处理器子单元可以用于不可由一个或多个特殊化处理器子单元执行的所有指令。
本领域技术人员将理解,神经网络实施方式及其他存储器密集型任务可用特殊化逻辑电路来处置。例如,数据库查询、封包检测、字符串比较以及其他功能在由本文中所描述的硬件芯片执行的情况下可在效率上增大。
针对分布式处理的基于存储器的架构
在符合本公开的硬件芯片上,专属总线可在芯片上的处理器子单元之间和/或在处理器子单元与其对应的专属存储器组之间传送数据。专属总线的使用可降低仲裁成本,因为竞争的请求是不可能的或使用软件而非使用硬件容易避免的。
图6示意性地描绘处理群组600的图解表示。处理群组600可供例如硬件芯片300、硬件芯片300'等的硬件芯片使用。处理器子单元610可经由总线630连接至存储器620。存储器620可包含随机可存取存储器(RAM)元件,其储存数据及代码以供由处理器子单元610执行。在一些实施例中,存储器620可以为N路存储器(其中N是等于或大于1的数字,该数字暗示交错的存储器620中的区段(segment)的数目)。因为处理器子单元610经由总线630耦接至专属于处理器子单元610的存储器620,所以N可保持相对较小而不损害执行效能。这表示对传统多路寄存器文件或高速缓存的改善,在传统多路寄存器文件或高速缓存中,较低N通常导致较低执行效能,且较高N通常导致大的面积及功率损失。
根据例如一个或多个任务中所涉及的数据的大小,可调整存储器620的大小、路的数目及总线630的宽度以符合使用处理群组600的系统的任务及应用实施方式的要求。存储器元件620可包含本领域中已知的一个或多个类型的存储器,例如,易失性存储器(诸如RAM、DRAM、SRAM、相变RAM(PRAM)、磁阻式RAM(MRAM)、电阻式RAM(ReRAM)等)或非易失性存储器(诸如闪存或ROM)。根据一些实施例,存储器元件620的一部分可包含第一存储器类型,而另一部分可包含另一存储器类型。例如,存储器元件620的代码区域可包含ROM元件,而存储器元件620的数据区域可包含DRAM元件。此分区的另一实例为将神经网络的权重储存在闪存中,而将用于计算的数据储存在DRAM中。
处理器子单元610包含可包含处理器的处理元件640。如本领域技术人员所了解的,处理器可以为流水线式或非流水线式的定制精简指令集计算(RISC)元件或其他处理方案,实施于本领域中已知的任何商业集成电路(IC)(诸如ARM、ARC、RISC-V等)上。处理元件640可包含控制器,在一些实施例中,该控制器包括算术逻辑单元(ALU)或其他控制器。
根据一些实施例,执行接收或所储存的代码的处理元件640可包含一般处理元件,且因此是灵活的且能够执行广泛各种处理操作。当比较在特定操作的执行期间所消耗的功率时,非专属电路通常比特定操作专属电路消耗更多功率。因此,当执行特定复杂算术计算时,处理元件640可比专属硬件消耗较多功率且执行效率较低。因此,根据一些实施例,处理元件640的控制器可被设计为执行特定操作(例如,加法或“移动”操作)。
在一个示例中,特定操作可由一个或多个加速器650来执行。每一加速器可以为专属的且被编程为执行特定计算(诸如乘法、浮点向量运算等)。通过使用加速器,每个处理器子单元的每次计算所消耗的平均功率可降低,且计算吞吐量此后增大。(一个或多个)加速器650可根据系统被设计为实施的应用(例如,神经网络的执行、数据库查询的执行等)来选取。加速器650可由处理元件640来配置且可以与处理元件640合作(in tandem)的方式操作,以用于降低功率消耗及加速计算及运算。加速器可另外或替代地用以在处理群组600的存储器与诸如智能DMA(直接存储器存取)外设的MUX/DEMUX/输入/输出端口(例如,MUX 660及DEMUX 670)之间传送数据。
加速器650可被配置为执行各种功能。例如,一个加速器可被配置为执行常常用于神经网络中的16位浮点计算或8位整数计算。加速器功能的另一示例是在神经网络的训练阶段期间常常使用的32位浮点计算。加速器功能的又一示例是查询处理,诸如数据库中所使用的查询处理。在一些实施例中,加速器650可包含特殊化处理元件以执行这些功能和/或可根据储存于存储器元件620上的配置数据来配置,以使得加速器可被修改。
加速器650可另外或替代地实施数据至/自存储器620或至/自其他加速器和/或输入/输出的存储器移动至时间移动的可配置脚本式列表。因此,如下文所进一步解释,使用处理群组600的硬件芯片内的所有数据移动可使用软件同步而非使用硬件同步。例如,一个处理群组(例如,群组600)中的加速器可每隔十个周期将数据自其输入传送至其加速器,接着在下一个周期输出数据,由此使信息自该处理群组的存储器流动至另一存储器。
如图6中另外所描绘,在一些实施例中,处理群组600可进一步包含连接至该处理群组的输入端口的至少一个输入多路复用器(MUX)660及连接至该处理群组的输出端口的至少一个输出DEMUX 670。这些MUX/DEMUX可由控制信号(未示出)来控制,所述控制信号来自处理元件640和/或来自(一个或多个)加速器650中的一个加速器、根据由处理元件640进行的当前指令和/或由(一个或多个)加速器650的一个加速器执行的操作确定。在一些情境中,(根据来自处理群组600的代码存储器的预定义指令)可能需要处理群组600将数据自处理群组的输入端口传送至输入端口的输出端口。因此,除DEMUX/MUX中的每一个连接至处理元件640及(一个或多个)加速器650以外,输入MUX中的一个或多个(例如,MUX 660)还可经由一个或多个总线直接地连接至输出DEMUX(例如,DEMUX 670)。
图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。
此外,如上文所解释,每一处理群组可包括处理器子单元及专属于该处理器子单元的一个或多个对应存储器组。因此,如图7A中所描绘,每一子单元与对应的专属存储器组相关联,例如:处理器子单元730a与存储器组720a相关联,处理器子单元730b与存储器组720b相关联,处理器子单元730c与存储器组720c相关联,处理器子单元730d与存储器组720d相关联,处理器子单元730e与存储器组720e相关联,处理器子单元730f与存储器组720f相关联,处理器子单元730g与存储器组720g相关联,处理器子单元730h与存储器组720h相关联。
为了允许每一处理器子单元与其对应的(一个或多个)专属存储器组通信,基板710可包括将所述处理器子单元中的一个连接至其对应的(一个或多个)专属存储器组的第一多个总线。因此,总线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可包括将所述处理器子单元中的一个连接至所述处理器子单元中的另一个的第二多个总线。在图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所示的实例布置中,该多个处理器子单元布置成至少一行及至少一列。该第二多个总线将每一处理器子单元连接至同一行中的至少一个邻近处理器子单元且连接至同一列中的至少一个邻近处理器子单元。图7A可被称为“部分图块(tile)连接”。
图7A所示的布置可经修改以形成“完全图块连接”。完全图块连接包括连接对角线处理器子单元的额外总线。例如,该第二多个总线可包括处理器子单元730a与处理器子单元730f之间、处理器子单元730b与处理器子单元730e之间、处理器子单元730b与处理器子单元730g之间、处理器子单元730c与处理器子单元730f之间、处理器子单元730c与处理器子单元730h之间以及处理器子单元730d与处理器子单元730g之间的额外总线。
完全图块连接可以用于卷积计算,在卷积计算中,使用储存于附近处理器子单元中的数据及结果。例如,在卷积图像处理期间,每一处理器子单元可接收图像的一图块(诸如像素或像素的群组)。为了计算卷积结果,每一处理器子单元可自所有八个邻近处理器子单元获取数据,所述邻近处理器子单元中的每一个已接收对应图块。在部分图块连接中,来自对角线邻近处理器子单元的数据可经由连接至该处理器子单元的其他邻近处理器子单元传递。因此,芯片上的分布式处理器可以为人工智能加速器处理器。
在卷积计算的一特定示例中,可跨多个处理器子单元来分割一N×M图像。每一处理器子单元可对其对应图块执行具有A×B滤波器的卷积。为了对图块之间的边界上的一个或多个像素执行滤波,每一处理器子单元可能需要来自邻近处理器子单元的数据,所述邻近处理器子单元具有包括同一边界上的像素的图块。因此,针对每一处理器子单元所产生的代码将该子单元配置为计算卷积且每当需要来自邻近子单元的数据时自第二多个总线中的一个总线提取。输出数据至该第二多个总线的对应命令被提供至该子单元以确保所需数据传送的恰当定时。
图7A的部分图块连接可经修改以成为N部分图块连接。在此修改中,该第二多个总线可进一步将每一处理器子单元连接至在图7A的总线延伸所沿的四个方向(即,上、下、左、右)上在该处理器子单元的一阈值距离内(例如,在n个处理器子单元内)的处理器子单元。可对完全图块连接进行类似修改(以产生N完全图块连接),以使得该第二多个总线进一步将每一处理器子单元连接至在图7A的总线延伸所沿的四个方向以及两个对角线方向上在该处理器子单元的一阈值距离内(例如,在n个处理器子单元内)的处理器子单元。
其他布置是可能的。例如,在图7B所示的布置中,总线750a将处理器子单元730a连接至处理器子单元730d,总线750b将处理器子单元730a连接至处理器子单元730b,总线750c将处理器子单元730b连接至处理器子单元730c,且总线750d将处理器子单元730c连接至处理器子单元730d。因此,在图7B所示的示例布置中,多个处理器子单元布置成星形图案。该第二多个总线将每一处理器子单元连接至该星形图案内的至少一个邻近处理器子单元。
另外的配置(未示出)是可能的。例如,可使用相邻连接布置,以使得多个处理器子单元布置在一条或多条线中(例如,类似于图7A中所描绘的配置)。在相邻连接配置中,该第二多个总线将每一处理器子单元连接至同一条线上的在左边的处理器子单元、同一条线上的在右边的处理器子单元、同一条线上的在左边及在右边的处理器子单元等。
在另一示例中,可使用N线性连接布置。在N线性连接布置中,该第二多个总线将每一处理器子单元连接至在该处理器子单元的一阈值距离内(例如,在n个处理器子单元内)的处理器子单元。N线性连接布置可与线形阵列(上文所述)、矩形阵列(图7A中所描绘)、椭圆形阵列(图7B中所描绘)或任何其他几何阵列一起使用。
在又一示例中,可使用N对数连接布置。在N对数连接布置中,该第二多个总线将每一处理器子单元连接至在该处理器子单元的二的幂的阈值距离内(例如,在2n个处理器子单元内)的处理器子单元。N对数连接布置可与线形阵列(上文所述)、矩形阵列(图7A中所描绘)、椭圆形阵列(图7B中所描绘)或任何其他几何阵列一起使用。
可组合上文所述的连接方案中的任一个以供用于同一硬件芯片中。例如,可在一个区域中使用完全图块连接,而在另一区域中使用部分图块连接。在另一示例中,可在一个区域中使用N线性连接布置,而在另一区域中使用N完全图块连接。
替代或除存储器芯片的处理器子单元之间的专属总线之外,一个或多个共享总线也可用以互连分布式处理器的所有处理器子单元(或处理器子单元的一子集)。仍可通过使用由处理器子单元执行的代码对共享总线上的数据传送定时,来避免共享总线上的冲突,如下文所进一步解释。替代或除共享总线之外,可配置总线也可用以动态地连接处理器子单元以形成连接至单独总线的处理器单元的群组。例如,可配置总线可包括可由处理器子单元控制以将数据传送引导至选定处理器子单元的晶体管或其他机构。
在图7A及图7B两者中,该处理阵列的多个处理器子单元在空间上分布在该存储器阵列的多个离散存储器组当中。在其他替代性实施例(未示出)中,该多个处理器子单元可聚集在基板的一个或多个区域中,且该多个存储器组可聚集在基板的一个或多个其他区域中。在一些实施例中,可使用空间分布与聚集的组合(未示出)。例如,基板的一个区域可包括处理器子单元的集群,基板的另一区域可包括存储器组的集群,且基板的又一区域可包括分布在存储器组当中的处理阵列。
本领域技术人员将认识到,将处理器群组600排列在基板上并非排它性的实施例。例如,每一处理器子单元可与至少两个专属存储器组相关联。因此,图3B的处理群组310a、310b、310c以及310d可替代处理群组600或与处理群组600组合使用,以形成处理阵列及存储器阵列。可使用包括例如三个、四个或更多个专属存储器组的其他处理群组(未示出)。
该多个处理器子单元中的每一个可被配置为相对于包含于该多个处理器子单元中的其他处理器子单元独立地执行与特定应用相关联的软件代码。例如,如下文所解释,多个子系列指令可分组为机器码且被提供至每一处理器子单元以供执行。
在一些实施例中,每一专属存储器组包含至少一个动态随机存取存储器(DRAM)。替代地,存储器组可包含诸如静态随机存取存储器(SRAM)、DRAM、闪存等的存储器类型的混合。
在传统处理器中,处理器子单元之间的数据共享通常利用共享存储器来执行。共享存储器通常需要芯片面积的大部分和/或执行由额外硬件(诸如仲裁器)管理的总线。如上所述,该总线导致瓶颈。另外,可在芯片外部的共享存储器通常包括高速缓存一致性机制及更复杂的高速缓存(例如,L1高速缓存、L2高速缓存及共享DRAM),以便将准确且最新的数据提供至处理器子单元。如下文所进一步解释,图7A及图7B中所描绘的专属总线允许免于硬件管理(诸如仲裁器)的硬件芯片。此外,如图7A及图7B中所描绘的专属存储器的使用允许对复杂高速缓存层及一致性机制的消除。
实际上,为了允许每一处理器子单元存取由其他处理器子单元计算的和/或储存于专属于其他处理器子单元的存储器组中的数据,提供总线,所述总线的定时是使用由每一处理器子单元个别地执行的代码动态地执行的。这允许消除传统地所使用的大部分(若非全部)总线管理硬件。此外,复杂高速缓存机制被这些总线上的直接传送所替换,导致在存储器读取及写入期间的潜时(latency)时间减小。
基于存储器的处理阵列
如图7A及图7B中所描绘,本公开的存储器芯片可独立地操作。替代地,本公开的存储器芯片可与一个或多个额外集成电路可操作地连接,该一个或多个额外集成电路诸如存储器装置(例如,一个或多个DRAM组)、片上系统、现场可编程门阵列(FPGA)或其他处理和/或存储器芯片。在这种实施例中,可以(例如,通过编译器,如下所述)在存储器芯片的处理器子单元与(一个或多个)额外集成电路的任何处理器子单元之间,对由该架构执行的一系列的指令中的任务进行分割。例如,其他集成电路可包含主机(例如,图3A的主机350),该主机将指令和/或数据输入至存储器芯片且接收来自存储器芯片的输出。
为了将本公开的存储器芯片与一个或多个额外集成电路互连,存储器芯片可包括存储器接口,诸如遵从电子器件工程联合委员会(JEDEC)标准或其任一变体的存储器接口。该一个或多个额外集成电路然后可连接至该存储器接口。因此,若该一个或多个额外集成电路连接至本公开的多个存储器芯片,则数据可通过该一个或多个额外集成电路在存储器芯片之间共享。另外或替代地,该一个或多个额外集成电路可包括用以连接至本公开的存储器芯片上的总线的总线,以使得该一个或多个额外集成电路可以与本公开的存储器芯片合作的方式执行代码。在这种实施例中,该一个或多个额外集成电路进一步辅助分布式处理,即使所述额外集成电路可能与本公开的存储器芯片在不同基板上。
此外,本公开的存储器芯片可经排列以便形成分布式处理器的阵列。例如,一个或多个总线可将存储器芯片770a连接至额外存储器芯片770b,如图7C中所描绘。在图7C的示例中,存储器芯片770a包括具有专属于每一处理器子单元的一个或多个对应存储器组的处理器子单元,例如:处理器子单元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包括具有专属于每一处理器子单元的一个或多个对应存储器组的处理器子单元,例如:处理器子单元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的处理器子单元可使用一个或多个总线来连接。因此,在图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之间的芯片间接口的引脚。此外,如上文所述的用于存储器芯片本身中的连接布置中的任一个可用以将存储器芯片连接至一个或多个额外集成电路。例如,存储器芯片770a及770b可使用完全图块或部分图块来连接而非仅使用如图7C所示的两个总线来连接。
因此,尽管使用总线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之间的更少引脚连接。
相对大的存储器
本公开的实施例可使用大小与传统处理器的共享存储器相比相对大的专属存储器。使用专属存储器而非共享存储器允许效率的增加继续而不会随着存储器增大而逐渐停止。这允许诸如神经网络处理及数据库查询的存储器密集型任务比在传统处理器中更高效地执行,在传统处理器中,增大共享存储器的效率增加由于冯诺伊曼瓶颈而逐渐停止。
例如,在本公开的分布式处理器中,安置于分布式处理器的基板上的存储器阵列可包括多个离散存储器组。所述离散存储器组中的每一个可具有大于一兆字节的容量;以及安置于该基板上的处理阵列,该处理阵列包括多个处理器子单元。如上文所解释,所述处理器子单元中的每一个可与该多个离散存储器组的一对应的专属存储器组相关联。在一些实施例中,该多个处理器子单元可在空间上分布在该存储器阵列内的该多个离散存储器组当中。通过将至少一兆字节的专属存储器而非几兆字节的共享高速缓存用于大型CPU或GPU,本公开的分布式处理器获得由于CPU及GPU中的冯诺依曼瓶颈而在传统系统中不可能的效率。
可将不同存储器用作专属存储器。例如,每一专属存储器组可包含至少一个DRAM组。替代地,每一专属存储器组可包含至少一个静态随机存取存储器组。在其他实施例中,不同类型的存储器可在单个硬件芯片上组合。
如上文所解释,每一专属存储器可以为至少一兆字节。因此,每一专属存储器组可大小相同,或该多个存储器组中的至少两个存储器组可具有不同大小。
此外,如上所述,该分布式处理器可包括:第一多个总线,每一总线将该多个处理器子单元中的一个连接至对应的专属存储器组;及第二多个总线,每一总线将该多个处理器子单元中的一个连接至该多个处理器子单元中的另一个。
使用软件的同步
如上文所解释,本公开的硬件芯片可使用软件而非硬件来管理数据传送。具体地,因为总线上的传送的定时、对存储器的读取及写入、以及处理器子单元的计算是通过由处理器子单元执行的子系列指令设定的,所以本公开的硬件芯片可执行代码以防止总线上的冲突。因此,本公开的硬件芯片可避免传统地用以管理数据传送的硬件机构(诸如芯片内的网络控制器、处理器子单元之间的封包解析器及封包传送器、总线仲裁器、用以避开仲裁的多个总线等)。
如果本公开的硬件芯片传统地传送数据,则利用总线连接N个处理器子单元将需要由仲裁器控制的总线仲裁或宽MUX。相反,如上所述,本公开的实施例可在处理器子单元之间使用仅为导线、光学缆线等的总线,其中所述处理器子单元个别地执行代码以避免总线上的冲突。因此,本公开的实施例可节省基板上的空间以及材料成本及效率损失(例如,因仲裁所用的电力及时间消耗所致)。当与使用先进先出(FIFO)控制器和/或信箱(Mailbox)的其他架构相比时,效率及空间增加甚至更大。
此外,如上文所解释,除一个或多个处理元件外,每一处理器子单元还可包括一个或多个加速器。在一些实施例中,该(一个或多个)加速器可自总线而非自该(一个或多个)处理元件读取及写入。在这种实施例中,可通过允许该(一个或多个)加速器在该(一个或多个)处理元件执行一个或多个计算所在的同一周期期间传输数据,来获得额外效率。然而,这种实施例需要用于该(一个或多个)加速器的额外材料。例如,可能需要额外晶体管以用于制造该(一个或多个)加速器。
该代码也可考虑处理器子单元(例如,包括形成处理器子单元的部分的处理元件和/或加速器)的内部行为,包括定时及潜时。例如,编译器(如下所述)可以在产生控制数据传送的子系列指令时执行考虑了定时及潜时的预处理。
在一个示例中,多个处理器子单元可被指派计算一神经网络层的任务,该神经网络层含有多个神经元,该多个神经元全连接至更多个神经元的先前层。假设先前层的数据均匀地散布在该多个处理器子单元之间,执行该计算的一种方法可以为将每一处理器子单元配置为依次将先前层的数据传输至主总线,接着每一处理器子单元将此数据乘以子单元所实施的对应神经元的权重。因为每一处理器子单元计算多于一个神经元,所以每一处理器子单元将多次传输先前层的数据,该次数等于神经元的数目。因此,每一处理器子单元的代码与用于其他处理器子单元的代码不相同,这是因为子单元将在不同时间进行传输。
在一些实施例中,分布式处理器可包含基板(例如,诸如硅的半导体基板和/或诸如柔性电路板的电路板),该基板具有:安置于该基板上的存储器阵列,该存储器阵列包括多个离散存储器组;以及安置于该基板上的处理阵列,该处理阵列包括多个处理器子单元,如例如图7A及图7B中所描绘。如上文所解释,所述处理器子单元中的每一个可与该多个离散存储器组的一对应的专属存储器组相关联。此外,如例如图7A及图7B中所描绘,该分布式处理器可进一步包含多个总线,该多个总线中的每一个将该多个处理器子单元中的一个连接至该多个处理器子单元中的至少另一个。
如上文所解释,该多个总线可用软件来控制。因此,该多个总线可免于定时硬件逻辑组件,以使得处理器子单元之间及跨该多个总线中的对应总线的数据传送不受定时硬件逻辑组件控制。在一个示例中,该多个总线可免于总线仲裁器,以使得处理器子单元之间及跨该多个总线中的对应总线的数据传送不受总线仲裁器控制。
在一些实施例中,如例如图7A及图7B中所描绘,该分布式处理器可进一步包含第二多个总线,该第二多个总线将该多个处理器子单元中的一个连接至一对应的专属存储器组。类似于上文所述的该多个总线,该第二多个总线可免于定时硬件逻辑组件,以使得处理器子单元与对应的专属存储器组之间的数据传送不受定时硬件逻辑组件控制。在一个示例中,该第二多个总线可免于总线仲裁器,以使得处理器子单元与对应的专属存储器组之间的数据传送不受总线仲裁器控制。
如本文中所使用,词组“免于”并不一定暗示诸如定时硬件逻辑组件(例如,总线仲裁器、仲裁树、FIFO控制器、信箱等)之类的组件的绝对不存在。这种组件仍可包含于被描述为“免于”那些组件的硬件芯片中。实际上,词组“免于”是针对硬件芯片的功能;即,“免于”定时硬件逻辑组件的硬件芯片在不使用定时硬件逻辑组件(若存在)的情况下控制其数据传送的定时。例如,一硬件芯片,其执行包括控制该硬件芯片的处理器子单元之间的数据传送的子系列指令的代码,即使该硬件芯片包括定时硬件逻辑组件以作为保护免受因执行的代码中的错误所致的冲突的辅助预防措施。
如上文所解释,该多个总线可包含介于该多个处理器子单元中的对应处理器子单元之间的导线或光纤中的至少一个。因此,在一个示例中,免于定时硬件逻辑组件的分布式处理器可仅包括导线或光纤,而不具有总线仲裁器、仲裁树、FIFO控制器、信箱等。
在一些实施例中,该多个处理器子单元被配置为根据由该多个处理器子单元执行的代码来跨该多个总线中的至少一个传送数据。因此,如下文所解释,编译器可组织子系列指令,每一子系列包含由单个处理器子单元执行的代码。所述子系列指令可指导处理器子单元何时将数据传送到所述总线中的一个总线上以及何时自总线撷取数据。当以合作方式跨分布式处理器执行所述子系列指令时,处理器子单元之间的传送的定时可通过包含于所述子系列指令中用以传送及撷取的指令来控制。因此,代码规定了跨该多个总线中的至少一个总线上的数据传送的定时。编译器可产生待由单个处理器子单元执行的代码。另外,编译器可产生待由处理器子单元的群组执行的代码。在一些情况下,编译器可将所有处理器子单元一起视为它们是一个超处理器(例如,分布式处理器),且编译器可产生供所定义的超处理器/分布式处理器执行的代码。
如上文所解释且如图7A及图7B中所描绘,该多个处理器子单元可在空间上分布在该存储器阵列内的该多个离散存储器组当中。替代地,该多个处理器子单元可聚集在该基板的一个或多个区域中,且该多个存储器组可聚集在该基板的一个或多个其他区域中。在一些实施例中,可使用空间分布与聚集的组合,如上文所解释。
在一些实施例中,分布式处理器可包含基板(例如,包括硅的半导体基板和/或诸如柔性电路板的电路板),该基板具有安置于该基板上的存储器阵列,该存储器阵列包括多个离散存储器组。处理阵列也可安置于该基板上,该处理阵列包括多个处理器子单元,如例如图7A及图7B中所描绘。如上文所解释,所述处理器子单元中的每一个可与该多个离散存储器组的一对应的专属存储器组相关联。此外,如例如图7A及图7B中所描绘,该分布式处理器可进一步包含多个总线,该多个总线中的每一个将该多个处理器子单元中的一个连接至该多个离散存储器组的一对应的专属存储器组。
如上文所解释,该多个总线可用软件来控制。因此,该多个总线可免于定时硬件逻辑组件,以使得处理器子单元与该多个离散存储器组的一对应的专属存储器组之间及跨该多个总线中的一对应总线的数据传送不受定时硬件逻辑组件控制。在一个示例中,该多个总线可免于总线仲裁器,以使得处理器子单元之间及跨该多个总线中的对应总线的数据传送不受总线仲裁器控制。
在一些实施例中,如例如图7A及图7B中所描绘,该分布式处理器可进一步包含第二多个总线,该第二多个总线将该多个处理器子单元中的一个连接至该多个处理器子单元中的至少另一个。类似于上文所述的该多个总线,该第二多个总线可免于定时硬件逻辑组件,以使得处理器子单元与对应的专属存储器组之间的数据传送不受定时硬件逻辑组件控制。在一个示例中,该第二多个总线可免于总线仲裁器,以使得处理器子单元与对应的专属存储器组之间的数据传送不受总线仲裁器控制。
在一些实施例中,该分布式处理器可使用软件定时与硬件定时组件的组合。例如,分布式处理器可包含基板(例如,包括硅的半导体基板和/或诸如柔性电路板的电路板),该基板具有安置于该基板上的存储器阵列,该存储器阵列包括多个离散存储器组。处理阵列也可安置于该基板上,该处理阵列包括多个处理器子单元,如例如图7A及图7B中所描绘。如上文所解释,所述处理器子单元中的每一个可与该多个离散存储器组的一对应的专属存储器组相关联。此外,如例如图7A及图7B中所描绘,该分布式处理器可进一步包含多个总线,该多个总线中的每一个将该多个处理器子单元中的一个连接至该多个处理器子单元中的至少另一个。此外,如上文所解释,该多个处理器子单元可被配置为执行控制跨该多个总线的数据传送的定时以避免与该多个总线中的至少一个上的数据传送冲突的软件。在此类示例中,软件可控制数据传送的定时,但传送本身可至少部分地由一个或多个硬件组件来控制。
在这种实施例中,该分布式处理器可进一步包含第二多个总线,该第二多个总线将该多个处理器子单元中的一个连接至一对应的专属存储器组。类似于上文所述的该多个总线,该多个处理器子单元可被配置为执行控制跨该第二多个总线的数据传送的定时以避免与该第二多个总线中的至少一个上的数据传送冲突的软件。在这种示例中,如上文所解释,软件可控制数据传送的定时,但传送本身可至少部分地由一个或多个硬件组件来控制。
代码的分割
如上文所解释,本公开的硬件芯片可跨包含于形成该硬件芯片的基板上的处理器子单元并行地执行代码。另外,本公开的硬件芯片可执行多任务。例如,本公开的硬件芯片可执行区域多任务,其中硬件芯片的一个群组的处理器子单元执行一个任务(例如,音频处理),而硬件芯片的另一群组的处理器子单元执行另一任务(例如,图像处理)。在另一示例中,本公开的硬件芯片可执行定时多任务,其中硬件芯片的一个或多个处理器子单元在第一时间段期间执行一个任务且在第二时间段期间执行另一任务。还可使用区域多任务与定时多任务的组合,以使得一个任务可在第一时间段期间指派给第一群组的处理器子单元,而另一任务可在第一时间段期间指派给第二群组的处理器子单元,在第一时间段之后,第三任务可在第二时间段期间指派给包含于该第一群组及该第二群组中的处理器子单元。
为了组织供在本公开的存储器芯片上执行的机器码,可在存储器芯片的处理器子单元之间分割机器码。例如,存储器芯片上的处理器可包含基板及安置于该基板上的多个处理器子单元。该存储器芯片可进一步包含安置于该基板上的多个对应存储器组,该多个处理器子单元中的每一个连接至不被该多个处理器子单元的任何其他处理器子单元共享的至少一个专属存储器组。该存储器芯片上的每一处理器子单元可被配置为独立于其他处理器子单元执行一系列的指令。每一系列的指令可通过以下操作来执行:根据定义该系列的指令的代码对处理器子单元的一个或多个一般处理元件配置和/或根据定义该系列的指令的该代码中所提供的序列(sequence)激活处理器子单元的一个或多个特殊处理元件(例如,一个或多个加速器)。
因此,每一系列的指令可定义待由单个处理器子单元执行的一系列任务。单个任务可包含由处理器子单元中的一个或多个处理元件的架构定义的指令集内的指令。例如,处理器子单元可包括特定寄存器,且单个任务可将数据推送至寄存器上,自寄存器提取数据,对寄存器内的数据执行算术函数,对寄存器内的数据执行逻辑运算,或其类似操作。此外,处理器子单元可配置用于任何数目的操作数,诸如0操作数处理器子单元(亦被称作“堆栈机器”)、1操作数处理器子单元(亦被称作累加器型机器)、2操作数处理器子单元(诸如RISC)、3操作数处理器子单元(诸如复杂指令集计算机(CISC))等。在另一示例中,处理器子单元可包括一个或多个加速器,且单个任务可激活加速器以执行特定函数,诸如MAC函数、MAX函数、MAX-0函数等。
该系列的指令可进一步包括用于自存储器芯片的专属存储器组读取及写入的任务。例如,任务可包括将一段数据写入至专属于执行该任务的处理器子单元的存储器组、自专属于执行该任务的处理器子单元的存储器组读取一段数据等。在一些实施例中,读取及写入可由处理器子单元与存储器组的控制器合作来执行。例如,处理器子单元可通过将控制信号发送至该控制器以执行读取或写入来执行读取或写入任务。在一些实施例中,该控制信号可包括特定地址以供读取及写入使用。替代地,处理器子单元可听从存储器控制器选择可用地址用于读取及写入。
另外或替代地,读取及写入可由一个或多个加速器与存储器组的控制器合作来执行。例如,加速器可产生用于存储器控制器的控制信号,类似于如上所述的处理器子单元产生控制信号的方式。
在上文所述实施例中的任一个中,地址产生器也可用以引导对存储器组的特定地址的读取及写入。例如,该地址产生器可包含被配置为产生用于读取及写入的存储器地址的处理元件。该地址产生器可被配置为产生地址以便提高效率,例如,通过将稍后计算的结果写入至与先前计算的已不再需要的结果相同的地址。因此,该地址产生器可响应于来自处理器子单元(例如,来自包括于处理器子单元中的处理元件或来自处理器子单元中的一个或多个加速器)的命令或以与处理器子单元合作的方式,产生用于存储器控制器的控制信号。另外或替代地,该地址产生器可基于某一配置或某些寄存器来产生地址,例如产生嵌套循环结构,从而以特定模式对存储器中的特定地址反复。
在一些实施例中,每一系列的指令可包含定义一对应系列的任务的机器码的集合。因此,上文所述的该系列的任务可封装在包含该系列的指令的机器码内。在一些实施例中,如下文关于图8所解释,该系列的任务可由编译器定义,该编译器被配置为将较高层级系列的任务分布在多个逻辑电路当中以作为多个系列的任务。例如,该编译器可基于较高层级系列的任务来产生该多个系列的任务,以使得以合作方式执行每一对应系列的任务的处理器子单元执行与通过较高层级系列的任务概述的功能相同的功能。
如下文进一步所解释,该较高层级系列的任务可包含用人类可读编程语言表示的指令的集合。相应地,每一处理器子单元的该系列的任务可包含较低层级系列的任务,该较低层级系列的任务中的每一个包含以机器码表示的指令的集合。
如上文关于图7A及图7B所解释,该存储器芯片可进一步包含多个总线,每一总线将该多个处理器子单元中的一个连接至该多个处理器子单元中的至少一个其他处理器子单元。此外,如上文所解释,该多个总线上的数据传送可使用软件来控制。因此,可通过连接至该多个总线中的至少一个总线的处理器子单元中所包含的该系列的指令,来预定义跨该多个总线中的至少一个的数据传送。因此,包含于该系列的指令中的任务之一可包括将数据输出至所述总线中的一个或自所述总线中的一个提取数据。这种任务可由处理器子单元的处理元件或由包括于处理器子单元中的一个或多个加速器执行。在后者实施例中,处理器子单元可在与(一个或多个)加速器自总线中的一个提取数据或将数据置放于总线中的一个上相同的周期中,执行计算或将控制信号发送至对应存储器组。
在一个示例中,连接至该多个总线中的至少一个的处理器子单元中所包含的该系列的指令包括发送任务,该发送任务包含令连接至该多个总线中的至少一个的处理器子单元将数据写入至该多个总线中的该至少一个的命令。另外或替代地,连接至该多个总线中的至少一个的处理器子单元中所包含的该系列的指令包括接收任务,该接收任务包含令连接至该多个总线中的至少一个的处理器子单元自该多个总线中的该至少一个读取数据的命令。
另外或替代将代码分布在处理器子单元当中,还可在存储器芯片的存储器组之间分割数据。例如,如上文所解释,存储器芯片上的分布式处理器可包含安置于该存储器芯片上的多个处理器子单元及安置于该存储器芯片上的多个存储器组。该多个存储器组中的每一个可被配置为储存独立于与储存于该多个存储器组的其他存储器组中的数据的数据,且该多个处理器子单元中的一个可连接至来自该多个存储器组当中的至少一个专属存储器组。例如,每一处理器子单元可以能够存取专属于该处理器子单元的一个或多个对应存储器组的一个或多个存储器控制器,且没有别的处理器子单元可以能够存取这些对应的一个或多个存储器控制器。因此,储存于每一存储器组中的数据可以为专属处理器子单元独有的。此外,储存于每一存储器组中的数据可独立于储存于其他存储器组中的数据,因为没有存储器控制器可在存储器组之间被共享。
在一些实施例中,如下文关于图8所描述,储存于该多个存储器组中的每一个中的数据可由编译器定义,该编译器被配置为将数据分布在该多个存储器组当中。此外,该编译器可被配置为使用分布在对应处理器子单元当中的多个较低层级任务,来将较高层级系列的任务中所定义的数据分布在该多个存储器组当中。
如下文进一步所解释,该较高层级系列的任务可包含用人类可读编程语言表示的指令的集合。相应地,每一处理器子单元的该系列的任务可包含较低层级系列的任务,该较低层级系列的任务中的每一个包含以机器码表示的指令的集合。
如上文关于图7A及图7B所解释,该存储器芯片可进一步包含多个总线,每一总线将该多个处理器子单元中的一个连接至来自该多个存储器组当中的一个或多个对应的专属存储器组。此外,如上文所解释,该多个总线上的数据传送可使用软件来控制。因此,可通过连接至该多个总线中的特定总线的对应处理器子单元,来控制跨该多个总线中的该特定总线的数据传送。因此,包括于该系列的指令中的任务之一可包括将数据输出至所述总线中的一个或自所述总线中的一个提取数据。如上文所解释,这种任务可由(i)处理器子单元的处理元件或(ii)包括于处理器子单元中的一个或多个加速器来执行。在后者实施例中,处理器子单元可在与(一个或多个)加速器自所述总线中的连接至该一个或多个对应的专属存储器组的一个总线提取数据或将数据置放于该总线上相同的周期中,执行计算或使用将处理器子单元连接至其他处理器子单元的总线。
因此,在一个示例中,连接至该多个总线中的至少一个的处理器子单元中所包含的该系列的指令可包括发送任务。该发送任务可包含令连接至该多个总线中的至少一个的处理器子单元将数据写入至该多个总线中的该至少一个以供储存在一个或多个对应的专属存储器组中的命令。另外或替代地,连接至该多个总线中的至少一个的处理器子单元中所包含的该系列的指令可包括接收任务。该接收任务包含令连接至该多个总线中的至少一个的处理器子单元自该多个总线中的该至少一个读取数据以供储存在该一个或多个对应的专属存储器组中的命令。因此,这种实施例中的发送任务及接收任务可包含控制信号,所述控制信号沿着该多个总线中的至少一个发送至该一个或多个对应的专属存储器组的一个或多个存储器控制器。此外,可与由处理子单元的另一部分(例如,由处理子单元的一个或多个不同加速器)执行的计算或其他任务同时地,由处理子单元的一个部分(例如,由处理子单元的一个或多个加速器)执行该发送任务及接收任务。此同时执行的示例可包括MAC中继命令,其中以合作方式执行接收、倍增及发送。
除了将数据分布在存储器组当中之外,也可跨不同存储器组复制数据的特定部分。例如,如上文所解释,存储器芯片上的分布式处理器可包含安置于该存储器芯片上的多个处理器子单元及安置于该存储器芯片上的多个存储器组。该多个处理器子单元中的每一个可连接至来自该多个存储器组当中的至少一个专属存储器组,且该多个存储器组中的每一存储器组可被配置为储存独立于储存于该多个存储器组的其他存储器组中的数据的数据。此外,储存于来自该多个存储器组当中的一个特定存储器组中的数据的至少一些可包含储存于该多个存储器组中的至少另一存储器组中的数据的副本。例如,该系列的指令中所使用的数字、字符串或其他类型的数据可储存于专属于不同处理器子单元的多个存储器组中,而非自一个存储器组传送至该存储器芯片中的其他处理器子单元。
在一个示例中,并行字符串匹配可使用上文所述的数据复制。例如,可将多个字符串与同一字符串进行比较。传统处理器可依序将多个字符串中的每一字符串与同一字符串进行比较。在本公开的硬件芯片上,可跨所述存储器组复制该同一字符串,以使得处理器子单元可并行地将多个字符串中的单独字符串与该复制字符串比较。
在一些实施例中,如下文关于图8所描述,跨来自该多个存储器组当中的一个特定存储器组及该多个存储器组中的至少另一存储器组而被复制的至少一些数据由编译器定义,该编译器被配置为跨存储器组复制数据。此外,该编译器可被配置为使用分布在对应处理器子单元当中的多个较低层级任务来复制至少一些数据。
数据的复制对于跨不同计算而重复使用数据的相同部分的特定任务而言是有用的。通过复制数据的这些部分,不同计算可分布式在存储器芯片的处理器子单元当中以用于并行执行,同时每一处理器子单元可将数据的该些部分储存于专属存储器组中且自专属存储器组存取所储存部分(而非跨连接处理器子单元的总线来推送及提取数据的该些部分)。在一个示例中,跨来自该多个存储器组当中的一个特定存储器组及该多个存储器组中的至少另一存储器组而被复制的至少一些数据可包含神经网络的权重。在此示例中,该神经网络中的每一节点可由来自该多个处理器子单元当中的至少一个处理器子单元定义。例如,每一节点可包含由定义该节点的至少一个处理器子单元执行的机器码。在此示例中,权重的复制可允许每一处理器子单元执行机器码以至少部分地实现对应的节点,而仅存取一个或多个专属存储器组(而非与其他处理器子单元执行数据传送)。因为对专属存储器组的读取及写入的定时独立于其他处理器子单元,而处理器子单元之间的数据传送的定时需要定时同步(例如,使用软件,如上文所解释),所以对存储器复制以避免处理器子单元之间的数据传送可产生总体执行中的其他效率。
如上文关于图7A及图7B所解释,该存储器芯片可进一步包含多个总线,每一总线将该多个处理器子单元中的一个连接至来自该多个存储器组当中的一个或多个对应的专属存储器组。此外,如上文所解释,该多个总线上的数据传送可使用软件来控制。因此,跨该多个总线中的特定总线的数据传送可由连接至该多个总线中的该特定总线的对应处理器子单元控制。因此,包括于该系列的指令中的任务之一可包括将数据输出至所述总线中的一个或自所述总线中的一个提取数据。如上文所解释,这种任务可由(i)处理器子单元的处理元件或(ii)包括于处理器子单元中的一个或多个加速器来执行。如上文进一步所解释,这种任务可包括包含控制信号的发送任务和/或接收任务,所述控制信号沿着该多个总线中的至少一个发送至该一个或多个对应的专属存储器组的一个或多个存储器控制器。
图8描绘用于编译一系列的指令以供在例如如图7A及图7B中所描绘的本公开的例示性存储器芯片上执行的方法800的流程图。方法800可由一般或专用的任何传统处理器来实施。
可执行方法800以作为形成编译器的计算机程序的一部分。如本文中所使用,“编译器”是指将较高层级语言(例如,过程语言,诸如C、FORTRAN、BASIC等;面向对象语言,诸如Java、C++、Pascal、Python等;等等)转换成较低层级语言(例如,组合码、目标码、机器码等)的任何计算机程序。编译器可允许人类以人类可读语言来编程一系列的指令,接着将该人类可读语言转换成机器可执行语言。
在步骤810,处理器可将与该系列的指令相关联的任务指派给所述处理器子单元中的不同处理器子单元。例如,可将该系列的指令分割成多个子群组,子群组将跨处理器子单元并行地执行。在一个示例中,可将神经网络分割成其节点,且可将一个或多个节点指派给单独处理器子单元。在此示例中,每一子群组可包含跨不同层连接的多个节点。因此,处理器子单元可实施来自该神经网络的第一层的节点,可实施来自第二层的节点,来自第二层的该节点连接至由同一个处理器子单元实施的来自第一层的该节点,等等。通过基于节点的连接来指派节点,处理器子单元之间的数据传送可减少,这可导致更大效率,如上文所解释。
如图7A及图7B中所描绘在上文所解释,处理器子单元可在空间上分布在安置于存储器芯片上的该多个存储器组当中。因此,任务的指派可至少部分地为空间分割以及逻辑分割。
在步骤820,处理器可产生用以在该存储器芯片的所述处理器子单元中的处理器子单元对之间传送数据的任务,每一对处理器子单元通过总线连接。例如,如上文所解释,数据传送可使用软件来控制。因此,处理器子单元可被配置为在同步时间推送及提取总线上的数据。所产生的任务因此可包括用于执行这种同步推送及提取数据的任务。
如上文所解释,步骤820可包括预处理以考虑处理器子单元的内部行为,包括定时及潜时。例如,处理器可使用处理器子单元的已知时间及潜时(例如,将数据推送至总线的时间、自总线提取数据的时间、计算与推送或提取之间的潜时等)以确保所产生的任务同步。因此,包含由一个或多个处理器子单元进行的至少一个推送及由一个或多个处理器子单元进行的至少一个提取的数据传送可同时发生,而非招致因处理器子单元之间的定时差异、处理器子单元的潜时等所致的延迟。
在步骤830,处理器可将经指派及所产生的任务分组成子系列指令的多个群组。例如,子系列指令可各自包含供单个处理器子单元执行的一系列的任务。因此,子系列指令的该多个群组中的每一个可对应于该多个处理器子单元中的一不同处理器子单元。因此,步骤810、820及830可导致将该系列的指令分割成子系列指令的多个群组。如上文所解释,步骤820可确保不同群组之间的任何数据传送是同步的。
在步骤840,处理器可产生对应于子系列指令的该多个群组中的每一个的机器码。例如,可将表示子系列指令的较高层级代码转换成可由对应处理器子单元执行的较低层级代码,诸如机器码。
在步骤850,处理器可根据该分割而将对应于子系列指令的该多个群组中的每一个的所产生机器码指派给该多个处理器子单元中的一对应处理器子单元。例如,处理器可用对应处理器子单元的标识符来标记每一子系列指令。因此,当将子系列指令上载至存储器芯片以供(例如,图3A的主机350)执行时,每一子系列指令可对正确处理器子单元配置。
在一些实施例中,将与该系列的指令相关联的任务指派给所述处理器子单元中的不同处理器子单元可至少部分地取决于该存储器芯片上的处理器子单元中的两个或更多个处理器子单元之间的空间接近性。例如,如上文所解释,可通过减少处理器子单元之间的数据传送的数目来提高效率。因此,处理器可使跨处理器子单元中的多于两个处理器子单元移动数据的数据传送最小化。因此,处理器可结合一个或多个优化算法(诸如贪婪算法)来使用存储器芯片的已知布局,以便将子系列指令指派给处理器子单元,其指派方式使得邻近传送达最大化(至少局部地)且使至非邻近处理器子单元的传送最小化(至少局部地)。
方法800可进一步包括针对本公开的存储器芯片的优化。例如,处理器可基于该分割对与该系列的指令相关联的数据分组且根据该分组将该数据指派给存储器组。因此,存储器组可保持用于指派给每一存储器组所专属的每一处理器子单元的子系列指令的数据。
在一些实施例中,对数据分组可包括确定要在所述存储器组中的两个或更多个存储器组中复制的数据的至少一部分。例如,如上文所解释,可跨多于一个子系列指令来使用一些数据。这种数据可跨专属于多个处理器子单元的存储器组复制,而该多个处理器子单元被指派不同子系列指令。这种优化可进一步减少跨处理器子单元的数据传送。
可将方法800的输出输入至本公开的存储器芯片以供执行。例如,存储器芯片可包含多个处理器子单元及多个对应存储器组,每一处理器子单元连接至专属于该处理器子单元的至少一个存储器组,且该存储器芯片的处理器子单元可被配置为执行由方法800产生的机器码。如上文关于图3A所解释,主机350可将由方法800产生的机器码输入至处理器子单元以供执行。
子组(sub-bank)及子控制器
在传统存储器组中,在组层级提供控制器。每一组包括多个垫(mat),该多个垫通常以矩形方式配置,但可配置成任何几何形状。每一垫包括多个存储器胞元(cell),该多个存储器胞元也通常以矩形方式配置,但可配置成任何几何形状。每一胞元可储存单个位(bit)的数据(例如,取决于该胞元是保持在高电压或低电压下)。
图9及图10中描绘了此传统架构的示例。如图9所示,在组层级下,多个垫(例如,垫930-1、930-2、940-1以及940-2)可以形成存储器组900。在传统矩形组织中,可跨全局字线(例如,字线950)及全局位线(例如,位线960)来控制存储器组900。因此,行解码器910可基于传入控制信号(例如,自一地址读取的请求、写入至一地址的请求等)来选择正确字线,且全局感测放大器920(和/或全局列解码器,图9中未示出)可基于该控制信号来选择正确位线。放大器920还可在读取操作期间放大来自选定存储器组的任何电压电平。尽管描绘为将行解码器用于初始选择且沿着列执行放大,但存储器组可另外或替代地将列解码器用于初始选择且沿着行执行放大。
图10描绘垫1000的一实例。例如,垫1000可以形成诸如图9的存储器组900的存储器组的一部分。如图10中所描绘,多个胞元(例如,胞元1030-1、1030-2以及1030-3)可以形成垫1000。每一胞元可包含储存至少一位的数据的电容器、晶体管或其他电路。例如,胞元可包含电容器或可包含触发器(flip-flop),电容器充电表示“1”且放电表示“0”,触发器具有表示“1”的第一状态及表示“0”的第二状态。传统垫可包含例如512位乘512位。在垫1000形成MRAM、ReRAM等的一部分的实施例中,胞元可包含用于隔离储存至少一位的数据的材料的离子或部分的晶体管、电阻器、电容器或其他机构。例如,胞元可包含具有表示“1”的第一状态及表示“0”的第二状态的电解质离子、硫族化物玻璃的一部分等。
如图10中进一步所描绘,在传统矩形组织中,可跨局部字线(例如,字线1040)及局部位线(例如,位线1050)来控制垫1000。因此,字线驱动器(例如,字线驱动器1020-1、1020-2、……、1020-x)可基于来自与存储器组(垫1000形成该存储器组的一部分)相关联的控制器的控制信号(例如,自一地址读取的请求、写入至一地址的请求、刷新信号),控制选定字线以执行读取、写入或刷新。此外,局部感测放大器(例如,局部放大器1010-1、1010-2、……、1010-x)和/或局部列解码器(图10中未示出)可控制选定位线以执行读取、写入或刷新。局部感测放大器还可在读取操作期间放大来自选定胞元的任何电压电平。尽管描绘为将字线驱动器用于初始选择且沿着列执行放大,但垫可改为将位线驱动器用于初始选择且沿着行执行放大。
如上文所解释,复制大量的垫以形成存储器组。存储器组可被分组以形成存储器芯片。例如,存储器芯片可包含八个至三十二个存储器组。因此,将处理器子单元与传统存储器芯片上的存储器组配对可导致仅八个至三十个二个处理器子单元。因此,本公开的实施例可包括具有额外的子组阶层(hierarchy)的存储器芯片。本公开的这些存储器芯片因而可包括带有存储器子组的处理器子单元,所述存储器子组被用作与处理器子单元配对的专属存储器组,从而允许更多数目的子处理器,其继而可实现存储器中计算的较高并行性及效能。
在本公开的一些实施例中,存储器组900的全局行解码器及全局感测放大器可用子组控制器来替换。因此,存储器组的控制器可将控制信号引导至适当的子组控制器,而非将控制信号发送至存储器组的全局行解码器及全局感测放大器。该引导可被动态地控制或可以为硬连线的(例如,经由一个或多个逻辑门)。在一些实施例中,可使用熔丝向每一子组或垫的控制器指示是否阻断或传递控制信号至适当的子组或垫。在这种实施例中,因此可使用熔丝来禁用故障的子组。
在这种实施例的一个示例中,存储器芯片可包括多个存储器组,每一存储器组具有组控制器及多个存储器子组,每一存储器子组具有子组行解码器及子组列解码器以允许对存储器子组上的位置的读取及写入。每一子组可包含多个存储器垫,每一存储器垫具有多个存储器胞元且可在内部具有局部行解码器、列解码器和/或局部感测放大器。子组行解码器及子组列解码器可处理来自组控制器或来自用于子组存储器上的存储器中计算的子组处理器子单元的读取及写入请求,如下所述。另外,每一存储器子组可进一步具有控制器,该控制器被配置为确定是否处理来自该组控制器的读取请求及写入请求和/或将其转送至下一层级(例如,垫上的行及列解码器的层级)或阻断所述请求,例如以允许内部处理元件或处理器子单元存取存储器。在一些实施例中,该存储器组控制器可同步至系统时钟。然而,子组控制器可不同步至系统时钟。
如上文所解释,子组的使用可允许在存储器芯片中包括比在处理器子单元与传统芯片的存储器组配对的情况下更多数量的处理器子单元。因此,每一子组可进一步具有使用该子组作为专属存储器的处理器子单元。如上文所解释,处理器子单元可包含RISC、CISC或其他通用处理子单元和/或可包含一个或多个加速器。另外,处理器子单元可包括地址产生器,如上文所解释。在上文所述的实施例中的任一个,每一处理器子单元可被配置为使用子组的行解码器及列解码器而不使用组控制器,来存取专属于该处理器子单元的该子组。与子组相关联的处理器子单元还可处置存储器垫(包括下文所描述的解码器及存储器冗余机构)和/或确定来自上部层级(例如,组层级或存储器层级)的读取或写入请求是否被相应地转送及处置。
在一些实施例中,子组控制器可进一步包括储存子组的状态的寄存器。因此,若子组控制器接收到来自存储器控制器的控制信号,而该寄存器指示该子组在使用中,则该子组控制器可返回一错误。在每一子组进一步包括处理器子单元的实施例中,在子组中的处理器子单元正在存取与来自存储器控制器的外部请求冲突的存储器的情况下,该寄存器可指示一错误。
图11展示使用子组控制器的存储器组的另一实施例的示例。在图11的示例中,存储器组1100具有行解码器1110、列解码器1120及具有子组控制器(例如,控制器1130a、1130b及1130c)的多个存储器子组(例如,子组1170a、1170b及1170c)。子组控制器可包括地址解析器(例如,解析器1140a、1140b及1140c),地址解析器可确定是否将请求传递至由子组控制器控制的一个或多个子组。
子组控制器可进一步包括一个或多个逻辑电路(例如,逻辑1150a、1150b及1150c)。例如,包含一个或多个处理元件的逻辑电路可允许在不处理组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-x。如图11中另外所描绘,每一子组可包括至少一个解码器。例如,子组1170a包括解码器1180a,子组1170b包括解码器1180b,且子组1170c包括解码器1180c。因此,存储器组列解码器1120可基于外部请求而选择全局位线(例如,位线1121a或1121b),同时由组行解码器1110选择的子组可使用其列解码器以基于来自该子组所专属的逻辑电路的局部请求而选择局部位线(例如,位线1181a或1181b)。因此,每一处理器子单元可被配置为在不使用组行解码器及组列解码器的情况下使用该子组的行解码器及列解码器来存取专属于该处理器子单元的子组。因此,每一处理器子单元可在不中断其他子组的情况下存取对应子组。此外,当对子组的请求在处理器子单元外时,子组解码器可向组解码器反映所存取的数据。替代地,在每一子组具有仅一行存储器垫的实施例中,局部位线可以为垫的位线而非子组的位线。
可使用使用子组行解码器及子组列解码器的实施例与图11中所描绘的实施例的组合。例如,可消除组行解码器但保留组列解码器且使用局部位线。
图12展示具有多个垫的存储器子组1200的实施例的示例。例如,子组1200可表示图11的子组1100的一部分或可表示存储器组的替代性实施方式。在图12的示例中,子组1200包括多个垫(例如,垫1240a及1240b)。此外,每一垫可包括多个胞元。例如,垫1240a包括胞元1260a-1、1260a-2、……、1260a-x,且垫1240b包括胞元1260b-1、1260b-2、……、1260b-x。
每一垫可被指派某一范围的地址,该范围的地址将指派给垫的存储器胞元。这些地址可在制造处被配置,以使得垫可到处移动且使得已故障的垫可被禁用且保持未使用(例如,使用一个或多个熔丝,如下文所进一步解释)。
子组1200接收来自存储器控制器1210的读取及写入请求。尽管图12中未描绘,但来自存储器控制器1210的请求可经由子组1200的控制器来筛选且引导至子组1200的适当垫以进行地址解析。替代地,来自存储器控制器1210的请求的地址的至少一部分(例如,较高位)可传输至子组1200的所有垫(例如,垫1240a及1240b),以使得仅当垫的经指派地址范围包括命令中所指定的地址时,每一垫才可处理完整地址及与该地址相关联的请求。类似于上文所述的子组引导,垫确定可被动态地控制或可以为硬连线的。在一些实施例中,可使用熔丝以确定每一垫的地址范围,从而也允许通过指派非法地址范围来停用故障的垫。可另外或替代地通过其他常见方法或熔丝的连接来停用垫。
在上文所述的实施例中的任一个中,子组的每一垫可包括行解码器(例如,行解码器1230a或1230b)以用于选择垫中的字线。在一些实施例中,每一垫可进一步包括熔丝及比较器(例如,1220a及1220b)。如上所述,比较器可允许每一垫确定是否处理传入请求,且熔丝可允许每一垫在有故障的情况下禁用。替代地,可使用组和/或子组的行解码器,而非使用每一垫中的行解码器。
此外,在上文所述实施例中的任一个中,包括于适当垫中的列解码器(例如,列解码器1250a或1250b)可选择局部位线(例如,位线1251或1253)。局部位线可连接至存储器组的全局位线。在子组具有其自身的局部位线的实施例中,胞元的局部位线可进一步连接至子组的局部位线。因此,可经由胞元的列解码器(和/或感测放大器)、接着经由子组的列解码器(和/或感测放大器)(在包括子组列解码器和/或感测放大器的实施例中)、然后经由组的列解码器(和/或感测放大器),来读取选定胞元中的数据。
垫1200可经复制及排列以形成存储器组(或存储器子组)。例如,本公开的存储器芯片可包含多个存储器组,每一存储器组具有多个存储器子组,且每一存储器子组具有用于处理对该存储器子组上的位置的读取及写入的子组控制器。此外,每一存储器子组可包含多个存储器垫,每一存储器垫具有多个存储器胞元且具有垫行解码器及垫列解码器(例如,如图12中所描绘)。垫行解码器及垫列解码器可处理来自子组控制器的读取及写入请求。例如,垫解码器可接收所有请求且(例如,使用比较器)基于每一垫的已知地址范围来确定是否处理请求,或垫解码器可基于子组(或组)控制器对垫的选择而仅接收在已知地址范围内的请求。
控制器数据传送
除使用处理子单元来共享数据之外,本公开的存储器芯片中的任一个还可使用存储器控制器(或子组控制器或垫控制器)来共享数据。例如,本公开的存储器芯片可包含:多个存储器组(例如,SRAM组、DRAM组等),每一存储器组具有组控制器、行解码器及列解码器,从而允许对该存储器组上的位置的读取及写入;以及多个总线,该多个总线将该多个存储器组控制器中的每一控制器连接至该多个存储器组控制器中的至少一个其他控制器。该多个总线可类似于如上所述的连接处理子单元的总线,但该多个总线直接地而非通过处理子单元来连接组控制器。此外,尽管描述为连接组控制器,但总线可另外或替代地连接子组控制器和/或垫控制器。
在一些实施例中,可在不中断连接至一个或多个处理器子单元的存储器组的主要总线上的数据传送的情况下存取该多个总线。因此,存储器组(或子组)可在与传输数据至不同存储器组(或子组)或从不同存储器组(或子组)传输相同的时钟周期中,传输数据至对应处理器子单元或从对应处理器子单元传输。在每一控制器连接至多个其他控制器的实施例中,控制器可能可配置以用于选择其他控制器中的另一个用于发送或接收数据。在一些实施例中,每一控制器可连接至至少一个邻近控制器(例如,成对的空间上邻近的控制器可彼此连接)。
存储器电路中的冗余逻辑
本公开大体上针对具有用于片上数据处理的主要逻辑部分的存储器芯片。该存储器芯片可包括冗余逻辑部分,冗余逻辑部分可替换有缺陷的主要逻辑部分以提高芯片的制造良率。因此,该芯片可包括片上组件,片上组件允许基于对逻辑部分的个别测试来配置存储器芯片中的逻辑区块。该芯片的此特征可提高良率,因为具有专属于逻辑部分的较大区域的存储器芯片更容易发生制造故障。例如,具有大的冗余逻辑部分的DRAM存储器芯片可容易发生降低良率的制造问题。然而,实施冗余逻辑部分可导致提高的良率及可靠性,因为其为DRAM存储器芯片的制造商或用户提供打开或关闭全部逻辑部分同时维持高并行性能力。应注意,此处及在本公开中,可标识特定存储器类型(诸如DRAM)的示例,以便利于解释所公开实施例。然而,应理解,在此情况下,经标识的存储器类型并不意欲为限制。实际上,诸如DRAM、闪存、SRAM、ReRAM、PRAM、MRAM、ROM或任何其他存储器的存储器类型可与所公开实施例一起使用,即使在本公开的特定章节中具体地标识出较少的示例。
图13是符合所公开实施例的例示性存储器芯片1300的方块图。存储器芯片1300可实施为DRAM存储器芯片。存储器芯片1300亦可实施为任何类型的易失性或非易失性存储器,诸如闪存、SRAM、ReRAM、PRAM和/或MRAM等。存储器芯片1300可包括基板1301,在该基板中安置了地址管理器1302、包括多个存储器组1304(a,a)至1304(z,z)的存储器阵列1304、存储器逻辑1306、商业逻辑1308以及冗余商业逻辑1310。存储器逻辑1306及商业逻辑1308可构成主要逻辑区块,而冗余商业逻辑1310可构成冗余区块。另外,存储器芯片1300可包括配置开关,配置开关可包括禁用(deactivation)开关1312及激活(deactivation)开关1314。禁用开关1312及激活开关1314也可安置于基板1301中。在本申请中,存储器逻辑1306、商业1308及冗余商业逻辑1310也可统称为“逻辑区块”。
地址管理器1302可包括行及列解码器或其他类型的存储器辅助装置。替代地或另外,地址管理器1302可包括微控制器或处理单元。
在一些实施例中,如图13所示,存储器芯片1300可包括单个存储器阵列1304,该存储器阵列可将多个存储器区块以二维阵列布置在基板1301上。然而,在其他实施例中,存储器芯片1300可包括多个存储器阵列1304,且存储器阵列1304中的每一个可以不同配置来布置存储器区块。例如,存储器阵列中的至少一个中的存储器区块(也被称为存储器组)可配置成径向分布以利于地址管理器1302或存储器逻辑1306至存储器区块之间的路由。
商业逻辑1308可用以进行应用的存储器中计算,该存储器中计算与用以管理存储器本身的逻辑无关。例如,商业逻辑1308可实施与AI相关的功能,诸如用作激活函数的浮点、整数或MAC运算。另外,商业逻辑1308可实施数据库相关的功能,如最小值、最大值、分类、计数以及其他。存储器逻辑1306可执行与存储器管理相关的任务,包括(但不限于)读取、写入及刷新操作。因此,可在组层级、垫层级或垫群组层级中的一个或多个添加商业逻辑。商业逻辑1308可具有一个或多个地址输出及一个或多个数据输入/输出。例如,商业逻辑1308可按行/列线寻址到地址管理器1302。然而,在某些实施例中,另外或替代地,逻辑区块可经由数据输入/输出来寻址。
冗余商业逻辑1310可以为商业逻辑1308的副本。另外,冗余商业逻辑1310可连接至禁用开关1312和/或激活开关1314,禁用开关1312和/或激活开关1314可包括小的熔丝/反熔丝,且用于逻辑停用或启用实例中的一个(例如,默认连接的实例)且启用其他逻辑区块中的一个(例如,默认断开的实例)。在一些实施例中,如关于图15所另外描述,区块的冗余在诸如商业逻辑1308的逻辑区块内可以为局部的。
在一些实施例中,可用专属总线将存储器芯片1300中的逻辑区块连接至存储器阵列1304的子集。例如,存储器逻辑1306、商业逻辑1308及冗余商业逻辑1310的集合可连接至存储器阵列1304中的第一行存储器区块(即,存储器区块1304(a,a)至1304(a,z))。专属总线可允许相关联逻辑区块不需要打开经由例如地址管理器1302的通信线,而自存储器区块快速地存取数据。
多个主要逻辑区块中的每一个可连接至多个存储器组1304中的至少一个。此外,诸如冗余商业区块1310的冗余区块可连接至存储器实例1304(a,a)至(z,z)中的至少一个。冗余区块可复制多个主要逻辑区块中的至少一个,诸如存储器逻辑1306或商业逻辑1308。禁用开关1312可连接至该多个主要逻辑区块中的至少一个,且激活开关1314可连接至该多个冗余区块中的至少一个。
在这种实施例中,在检测到与该多个主要逻辑区块中的一个(存储器逻辑1306和/或商业逻辑1308)相关联的故障后,禁用开关1312可被配置为停用该多个主要逻辑区块中的该一个。同时,激活开关1314可被配置为启用复制该多个主要逻辑区块中的该一个的多个冗余区块中的一个,诸如冗余逻辑区块1310。
另外,可一起被称为“配置开关”的激活开关1314及禁用开关1312可包括用以配置开关的状态的外部输入。例如,激活开关1314可被配置为使得外部输入中的激活信号导致闭合开关条件,而禁用开关1312可被配置为使得外部输入中的禁用信号导致打开开关条件。在一些实施例中,1300中的所有配置开关可默认为禁用,且在测试指示相关联逻辑区块起作用且在外部输入中施加信号之后变得被激活或启用。替代地,在一些情况下,1300中的所有配置开关可默认为启用,且可在测试指示相关联逻辑区块不作用且在外部输入中施加禁用信号之后被禁用或停用。
与配置开关最初是否启用或停用无关,在检测到与相关联逻辑区块相关联的故障后,配置开关可停用相关联逻辑区块。在配置开关最初启用的情况下,配置开关的状态可改变至停用,以便停用相关联逻辑区块。在配置开关最初停用的情况下,配置开关的状态可保持在其停用状态,以便停用相关联逻辑区块。例如,可操作性测试的结果可指示某一逻辑区块非可操作的或该逻辑区块不能在特定规范内操作。在这种情况下,通过不启用其对应配置开关,逻辑区块可被停用。
在一些实施例中,配置开关可连接至两个或更多个逻辑区块,且可被配置为在不同逻辑区块之间选择。例如,配置开关可连接至商业逻辑1308及冗余逻辑区块1310两者。配置开关可在停用商业逻辑1308同时启用冗余逻辑区块1310。
替代地或另外,可用第一专属连接,将该多个主要逻辑区块中的至少一个(存储器逻辑1306和/或商业逻辑1308)连接至该多个存储器组或存储器实例1304的子集。然后,可用第二专属连接,将复制该多个主要逻辑区块中的该至少一个的多个冗余区块中的至少一个(诸如冗余商业逻辑1310)连接至相同的多个存储器组或实例1304的该子集。
此外,存储器逻辑1306可具有不同于商业逻辑1308的功能及能力。例如,尽管存储器逻辑1306可被设计为启用存储器组1304中的读取及写入操作,但商业逻辑1308可被设计为执行存储器中计算。因此,若商业逻辑1308包括第一商业逻辑区块且商业逻辑1308包括第二商业逻辑区块(如冗余商业逻辑1310),则能够在不失去任何能力的情况下断开有缺陷的商业逻辑1308及重新连接冗余商业逻辑1310。
在一些实施例中,配置开关(包括禁用开关1312及激活开关1314)可用熔丝、反熔丝或可编程装置(包括单次可编程装置)或其他形式的非易失性存储器来实施。
图14是符合所公开实施例的例示性冗余逻辑区块集合1400的方块图。在一些实施例中,冗余逻辑区块集合1400可安置于基板1301中。冗余逻辑区块集合1400可包括分别连接至开关1312及1314的商业逻辑1308及冗余商业逻辑1310中的至少一个。另外,商业逻辑1308及冗余商业逻辑1310可连接至地址总线1402及数据总线1404。
在一些实施例中,如图14所示,开关1312及1314可将逻辑区块连接至时钟节点。以此方式,配置开关可将逻辑区块与时钟信号接合或脱离,从而有效地激活或禁用逻辑区块。然而,在其他实施例中,开关1312及1314可将逻辑区块连接至其他节点以进行激活或禁用。例如,配置开关可将逻辑区块连接至电压供应节点(例如,VCC)或连接至接地节点(例如,GND)或时钟信号。以此方式,逻辑区块可由配置开关来启用停用,因为配置开关可创建开路或截断逻辑区块供电。
在一些实施例中,如图14所示,地址总线1402及数据总线1404可在逻辑区块的相对侧中,逻辑区块并联地连接至总线中的每一个。以此方式,可通过逻辑区块集合1400来促进不同片上组件的路由。
在一些实施例中,多个禁用开关1312中的每一个将该多个主要逻辑区块中的至少一个与时钟节点耦接,且多个激活开关1314中的每一个可将该多个冗余区块中的至少一个与该时钟节点耦接,从而允许连接/断开该时钟作为简单的激活/禁用机构。
冗余逻辑区块集合1400的冗余商业逻辑1310允许设计者基于面积及路由而选择值得复制的区块。例如,芯片设计者可选择较大区块进行复制,因为较大区块可更容易出错。因此,芯片设计者可决定复制大的逻辑区块。另一方面,设计者可偏好复制较小逻辑区块,因为较小逻辑区块容易复制而无相当大的空间损失。此外,使用图14中的配置,设计者可容易地取决于每个区域的错误的统计来选择复制逻辑区块。
图15是符合所公开实施例的例示性逻辑区块1500的方块图。该逻辑区块可以为商业逻辑1308和/或冗余商业逻辑1310。然而,在其他实施例中,例示性逻辑区块可描述存储器逻辑1306或存储器芯片1300的其他元件。
逻辑区块1500呈现在小的处理器流水线内使用逻辑冗余的又一实施例。逻辑区块1500可包括寄存器1508、提取电路1504、解码器1506以及写回电路1518。另外,逻辑区块1500可包括计算单元1510及副本计算单元1512。然而,在其他实施例中,逻辑区块1500可包括其他单元,其他单元不包含控制器流水线,但包括包含所需商业逻辑的偶发性处理元件。
计算单元1510及副本计算单元1512可包括能够执行数字计算的数字电路。例如,计算单元1510及副本计算单元1512可包括算术逻辑单元(ALU)以对二进制数执行算术及逐位运算。替代地,计算单元1510及副本计算单元1512可包括对浮点数进行运算的浮点单元(FPU)。另外,在一些实施例中,计算单元1510及副本计算单元1512可实施数据库相关的功能,如最小值、最大值、计数以及比较运算以及其他。
在一些实施例中,如图15所示,计算单元1510及副本计算单元1512可连接至开关电路1514及1516。开关电路在激活时可启用或停用计算单元。
在逻辑区块1500中,副本计算单元1512可副本计算单元1510。此外,在一些实施例中,寄存器1508、提取电路1504、解码器1506以及写回电路1518(统称为局部逻辑单元)在大小上可小于计算单元1510。因为较大元件更容易在制造期间出现问题,所以设计者可决定复制较大单元(诸如计算单元1510)而非复制较小单元(诸如局部逻辑单元)。然而,取决于历史良率及错误率,另外或替代于大单元(或整个区块),设计者还可选取复制局部逻辑单元。例如,计算单元1510可比寄存器1508、提取电路1504、解码器1506以及写回电路1518大,且因此更容易出错。设计者可选择副本计算单元1510而非复制逻辑区块1500中的其他元件或整个区块。
逻辑区块1500可包括多个局部配置开关,该多个局部配置开关中的每一个连接至计算单元1510或副本计算单元1512中的该至少一个的至少一个。当在计算单元1510中检测到故障时,局部配置开关可被配置为停用计算单元1510且启用副本计算单元1512。
图16展示符合所公开实施例的与总线连接的例示性逻辑区块的方块图。在一些实施例中,逻辑区块1602(其可表示存储器逻辑1306、商业逻辑1308或冗余商业逻辑1310)可彼此独立,可经由总线连接,并且可通过对逻辑区块特定地寻址而从外部激活逻辑区块。例如,存储器芯片1300可包括许多逻辑区块,每一逻辑区块具有一ID号。然而,在其他实施例中,逻辑区块1602可表示由多个一个或多个存储器逻辑1306、商业逻辑1308或冗余商业逻辑1310构成的较大单元。
在一些实施例中,逻辑区块1602中的每一个可相对于其他逻辑区块1602冗余。此完全冗余性(其中所有区块可作为主要或冗余区块来操作)可改善制造良率,因为设计者可在维持整个芯片的功能性的同时断开有故障的单元。例如,设计者可以能够停用容易出错但维持类似计算能力的逻辑区域,因为所有复制区块可连接至同一地址总线及数据总线。例如,逻辑区块1602的初始数目可大于目标能力。因而,停用一些逻辑区块1602不会影响目标能力。
连接至逻辑区块的总线可包括地址总线1614、命令线1616及数据线1618。如图16所示,逻辑区块中的每一个可独立于总线中的每一线而连接。然而,在某些实施例中,逻辑区块1602可以阶层式结构连接以利于路由。例如,总线中的每一线可连接多路复用器,该能力多路复用器将该条线路由至不同逻辑区块1602。
在一些实施例中,为了允许在不知道内部芯片结构(该内部芯片结构可因启用及停用的单元而发生改变)的情况下的外部存取,逻辑区块中的每一个可包括熔断ID,诸如熔断标识1604。熔断标识1604可包括确定ID的开关(如熔丝)阵列且可连接至管理电路。例如,熔断标识1604可连接至地址管理器1302。替代地,熔断标识1604可连接至较高存储器地址单元。在这种实施例中,熔断标识1604可针对特定地址可配置。例如,熔断标识1604可包括可编程的非易失性装置,其基于自管理电路接收的指令来确定最终ID。
存储器芯片上的分布式处理器可设计成具有图16中所描绘的配置。在芯片唤醒时或在工厂测试时执行为BIST的测试程序可将运行ID号指派给多个主要逻辑区块(存储器逻辑1306及商业逻辑1308)中通过测试协议的区块。该测试程序还可将非法ID号指派给多个主要逻辑区块中未通过测试协议的区块。该测试程序还可将运行ID号指派给多个冗余区块(冗余逻辑区块1310)中通过测试协议的区块。因为冗余区块替换发生故障的主要逻辑区块,所以多个冗余区块中被指派了运行ID号的区块可等于或大于多个主要逻辑区块中被指派了非法ID号的区块,由此停用区块。另外,多个主要逻辑区块中的每一个及多个冗余区块中的每一个可包括至少一个熔断标识1604。此外,如图16所示,连接逻辑区块1602的总线可包括命令线、数据线及地址线。
然而,在其他实施例中,连接至总线的所有逻辑区块1602将开始是停用的且不具ID号。一个接一个地进行测试,每一良好逻辑区块会得到运行ID号,且不工作的那些逻辑区块会仍具有会停用这些区块的非法ID。以此方式,冗余逻辑区块可通过替换在测试程序期间已知有缺陷的区块来改善制造良率。
地址总线1614可将管理电路耦接至多个存储器组中的每一个、多个主要逻辑区块中的每一个及多个冗余区块中的每一个。这些连接允许管理电路在检测到与主要逻辑区块(诸如商业逻辑1308)相关联的故障后,将无效地址指派给多个主要逻辑区块中的一个且将有效地址指派给多个冗余区块中的一个。
例如,如图16A所示,非法ID经配置至所有逻辑区块1602(a)-(c)(例如,地址0xFFF)。在测试之后,逻辑区块1602(a)及1602(c)经验证为起作用,而逻辑区块1602(b)不作用。在图16A中,无阴影逻辑区块可表示成功地通过功能性测试的逻辑区块,而阴影逻辑区块可表示未通过功能性测试的逻辑区块。因而,针对起作用的逻辑区块,该测试程序将非法ID变为合法ID,而针对不作用的逻辑区块保留非法ID。作为一示例,在图16A中,逻辑区块1602(a)及1602(c)的地址自0xFFF分别变为0x001及0x002。相比之下,逻辑区块1602(b)的地址仍为非法地址0xFFF。在一些实施例中,通过对对应的熔断标识1604编程来改变ID。
来自逻辑区块1602的测试的不同结果可产生不同配置。例如,如图16B所示,地址管理器1302最初可将非法ID指派给所有逻辑区块1602(即,0xFFF)。然而,测试结果可指示两个逻辑区块1602(a)及1602(b)起作用。在这些情况下,对逻辑区块1602(c)的测试可能并非必需的,因为存储器芯片1300可能仅需要两个逻辑区块。因此,为了将测试资源减最小化,可仅根据1300的产品定义所需的起作用逻辑区块的最小数目来测试逻辑区块,从而留下其他逻辑区块不测试。图16B还展示表示通过功能性测试的经测试逻辑区块的无阴影逻辑区块,及表示未测试逻辑区块的阴影逻辑区块。
在这些实施例中,针对起作用的经测试逻辑区块,生产测试仪(外部或内部的,自动或人工的)或执行启动时的BIST的控制器可将非法ID变为运行ID,同时保持未测试逻辑区块的非法ID。作为一示例,在图16B中,逻辑区块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可与开关电路1722及1728连接,如图17中所描绘。在图17中所描绘的示例中,单元1702(b)有缺陷。例如,单元1702(b)未通过针对电路功能性的测试。因此,单元1702(b)可使用例如激活开关1314(图17中未示出)来停用,和/或开关电路1722(b)可经激活以绕过单元1702(b)且维持逻辑区块之间的连接性。
因此,当多个主要单元串联连接时,该多个单元中的每一个可与一并联开关并联地连接。在检测到与该多个单元中的一个相关联的故障后,连接至该多个单元中的该一个的并联开关可经激活以连接该多个单元中的两个单元。
在其他实施例中,如图17所示,开关电路1728可包括将导致一个或多个周期延迟的一个或多个取样点,从而维持单元的不同线之间的同步。当一单元被停用时,邻近逻辑区块之间的连接的短路可与其他计算产生同步误差。例如,若任务需要来自A线及B线两者的数据,且A及B中的每一个由独立系列的单元承载,则停用一单元将导致线之间的失同步,需要进一步数据管理。为了防止失同步,取样电路1730可模拟由停用的单元1712(b)造成的延迟。尽管如此,在一些实施例中,并联开关可包括反熔丝而非包括取样电路1730。
图18是符合所公开实施例的以二维阵列连接的例示性单元的方块图。图18可表示整个系统或芯片。替代地,图18可表示含有其他功能区块的芯片中的区块。
单元1806可表示包括诸如存储器逻辑1306和/或商业逻辑1308的多个逻辑区块的自主单元。然而,在其他实施例中,单元1806可表示诸如商业逻辑1308的逻辑单元。在方便时,图18的讨论可参照图13(例如,存储器芯片1300)中所标识且上文所讨论的元件。
如图18所示,单元可配置成二维阵列,其中单元1806(其可包括或表示存储器逻辑1306、商业逻辑1308或冗余商业逻辑1310中的一个或多个)经由开关箱1808及连接箱1810互连。另外,为了控制二维阵列的配置,二维阵列可在二维阵列的外围中包括I/O区块1804。
连接箱1810可以为可编程且可重配置的装置,其可对自I/O区块1804输入的信号作出响应。例如,连接箱可包括来自单元1806的多个输入引脚且还可连接至开关箱1808。替代地,连接箱1810可包括将可编程逻辑胞元的引脚与路由轨迹连接的开关的群组,而开关箱1808可包括连接不同轨迹的开关的群组。
在某些实施例中,连接箱1810及开关箱1808可用诸如开关1312及1314的配置开关来实施。在这种实施例中,连接箱1810及开关箱1808可通过生产测试仪或芯片启动时所执行的BIST来配置。
在一些实施例中,连接箱1810及开关箱1808可在针对电路功能性对单元1806进行测试之后配置。在这种实施例中,I/O区块1804可用以将测试信号发送至单元1806。取决于测试结果,I/O区块1804可发送编程信号,所述编程信号以停用未通过测试协议的单元1806且启用通过测试协议的单元1806的方式来配置连接箱1810及开关箱1808。
在这种实施例中,多个主要逻辑区块及多个冗余区块可以二维网格(grid)安置于基板上。因此,多个主要单元1806中的每一个及多个冗余区块中的每一个(诸如冗余商业逻辑1310)可用开关箱1808互连,且输入区块可安置于二维网格的每一排及每一列的外围。
图19是符合所公开实施例的复杂连接的例示性单元的方块图。图19可表示整个系统。替代地,图19可表示含有其他功能区块的芯片中的区块。
图19的复杂连接包括单元1902(a)-(f)及配置开关1904(a)-(f)。单元1902可表示包括诸如存储器逻辑1306和/或商业逻辑1308的多个逻辑区块的自主单元。然而,在其他实施例中,单元1902可表示诸如存储器逻辑1306、商业逻辑1308或冗余商业逻辑1310的逻辑单元。配置开关1904可包括禁用开关1312及激活开关1314中的任一个。
如图19所示,复杂连接可包括两个平面中的单元1902。例如,复杂连接可包括在z轴上分开的两个独立基板。替代地或另外,单元1902可配置在基板的两个表面中。例如,出于减小存储器芯片1300的面积的目的,基板1301可配置在两个重叠表面中且与布置成三维的配置开关1904连接。配置开关可包括禁用开关1312和/或激活开关1314。
基板的第一平面可包括“主要”单元1902。这些区块可默认为启用。在这种实施例中,第二平面可包括“冗余”单元1902。这些单元可默认为停用。
在一些实施例中,配置开关1904可包括反熔丝(anti-fuse)。因此,在测试单元1902之后,可通过将特定反熔丝连接切换至“始终接通”并停用选定单元1902(即使所述单元在不同平面中),以按功能单元的图块来连接区块。在图19中所呈现的示例中,“主要”单元中的一个(单元1902(e))不工作。图19可将不作用或未测试区块表示为阴影区块,而经测试或起作用区块可以为无阴影的。因此,配置开关1904被配置为使得不同平面中的逻辑区块中的一个(例如,单元1902(f))变为激活。以此方式,即使主要逻辑区块中的一个有缺陷,存储器芯片将通过替换备用逻辑单元而仍然工作。
图19另外展示第二平面中的单元1902中的一个(即,1902(c))未被测试或启用,因为主要逻辑区块是起作用的。例如,在图19中,两个主要单元1902(a)及1902(d)通过功能性测试。因此,单元1902(c)未被测试或启用。因此,图19展示取决于视测试结果而特定地选择变为激活的逻辑区块的能力。
在一些实施例中,如图19所示,第一平面中的并非全部单元1902可具有对应的备用或冗余区块。然而,在其他实施例中,针对所有单元均为主要或冗余的完整冗余,所有单元可以为彼此冗余的。另外,尽管一些实施可遵循图19中所描绘的星形网络拓扑,但其他实施方式可使用并联连接、串联连接和/或将不同元件与配置开关并联地或串联地耦接。
图20是说明符合所公开实施例的冗余区块启用处理2000的例示性流程图。可针对存储器芯片1300且具体地针对DRAM存储器芯片来实施该启用处理2000。在一些实施例中,处理2000可包括以下步骤:针对至少一个电路功能性,测试存储器芯片的基板上的多个逻辑区块中的每一个;基于测试结果来识别多个主要逻辑区块中的故障逻辑区块;针对至少一个电路功能性,测试该存储器芯片的该基板上的至少一个冗余或额外逻辑区块;通过将外部信号施加至禁用开关来停用该至少一个故障逻辑区块;及通过将外部信号施加至激活开关来启用该至少一个冗余区块,该激活开关与该至少一个冗余区块连接且安置于该存储器芯片的该基板上。下面的图20的描述进一步详述处理2000的每一步骤。
处理2000可包括测试多个逻辑区块(步骤2002),诸如商业区块1308及多个冗余区块(例如,冗余商业区块1310)。测试可在封装之前使用例如用于晶圆上测试的探测台进行。然而,步骤2002还可在封装之后执行。
步骤2002中的测试可包括将有限序列的测试信号施加至存储器芯片1300中的每个逻辑区块或存储器芯片1300中的逻辑区块的子集。测试信号可包括请求预期产生0或1的计算。在其他实施例中,测试信号可请求读取存储器组中的特定地址或写入特定存储器组中。
可实施测试技术以测试逻辑区块在步骤2002中的迭代处理下的响应。例如,测试可涉及通过传输在存储器组中写入数据的指令、接着验证所写入数据的完整性来测试逻辑区块。在一些实施例中,测试可包括利用反转数据重复该算法。
在替代性实施例中,步骤2002的测试可包括运行逻辑区块的模型以基于一组测试指令而产生目标存储器映像。接着,可对存储器芯片中的逻辑区块执行相同序列的指令,且可记录结果。也可将该模拟的残差存储器映像与自测试获得的映像进行比较,且任何失配可标记为故障。
替代地,在步骤2002中,测试可包括阴影模型化,在阴影模型化中会产生诊断,但结果不一定被预测。相反,使用阴影模型化的测试可在存储器芯片及模拟两者上并行地执行。例如,当存储器芯片中的逻辑区块完成指令或任务时,可向模拟发信号以执行相同指令。一旦存储器芯片中的逻辑区块完成指令,即可对两个模型的架构状态进行比较。若存在失配,则标记故障。
在一些实施例中,可在步骤2002中测试所有逻辑区块(包括例如存储器逻辑1306、商业逻辑1308或冗余商业逻辑1310中的每一个)。然而,在其他实施例中,在不同测试回合中可仅测试逻辑区块的子集。例如,在第一测试回合中,可仅测试存储器逻辑1306及相关联区块。在第二回合中,可仅测试商业逻辑1308及相关联区块。在第三回合中,取决于前两个回合的结果,可测试与冗余商业逻辑1310相关联的逻辑区块。
处理2000可继续至步骤2004。在步骤2004中,可识别故障逻辑区块,且还可识别故障冗余区块。例如,未通过步骤2002的测试的逻辑区块可在步骤2004中被识别为故障区块。然而,在其他实施例中,最初可仅识别某些故障逻辑区块。例如,在一些实施例中,可仅识别与商业逻辑1308相关联的逻辑区块,且仅在需要冗余区块替代故障逻辑区块的情况下,识别故障冗余区块。另外,识别故障区块可包括在存储器组或非易失性存储器上写入经识别故障区块的识别信息。
在步骤2006中,可停用故障逻辑区块。例如,使用配置电路,可通过将故障逻辑区块与时钟、接地和/或电力节点断开来停用故障逻辑区块。替代地,可通过按避开故障逻辑区块的布置对连接箱配置来停用故障逻辑区块。然而,在其他实施例中,可通过自地址管理器1302接收非法地址来停用故障逻辑区块。
在步骤2008中,可识别复制故障逻辑区块的冗余区块。即使一些逻辑区块已经故障,为了支持存储器芯片的相同能力,在步骤2008中,可识别可用的且可复制故障逻辑区块的冗余区块。例如,若执行向量的乘法的逻辑区块经确定为有故障,则在步骤2008中,地址管理器1302或片上控制器可识别也执行向量的乘法的可用冗余逻辑区块。
在步骤2010中,可启用在步骤2008中所识别的冗余区块。与步骤2006的停用操作相比,在步骤2010中,可通过将经识别冗余区块连接至时钟、接地和/或电力节点来启用经识别冗余区块。替代地,可通过按连接经识别冗余区块的布置对连接箱配置来启用经识别冗余区块。然而,在其他实施例中,可通过在测试程序运行时间接收运行地址来启用经识别冗余区块。
图21是说明符合所公开实施例的地址指派处理2100的例示性流程图。可针对存储器芯片1300且具体地针对DRAM存储器芯片来实施地址指派处理2100。如关于图16所描述,在一些实施例中,存储器芯片1300中的逻辑区块可连接至数据总线且具有地址标识。处理2100描述一地址指派方法,该地址指派方法停用故障逻辑区块且启用通过测试的逻辑区块。处理2100中所描述的步骤将描述为由生产测试仪或芯片启动时所执行的BIST来执行;然而,存储器芯片1300的其他组件和/或外部装置也可执行处理2100的一个或多个步骤。
在步骤2102中,测试仪可通过在芯片层级将非法标识指派给每一逻辑区块来停用所有逻辑区块及冗余区块。
在步骤2104中,测试仪可执行逻辑区块的测试协议。例如,测试仪可针对存储器芯片1300中的逻辑区块中的一个或多个执行步骤2002中所描述的测试方法。
在步骤2106中,取决于步骤2104中的测试的结果,测试仪可确定逻辑区块是否有缺陷。若逻辑区块无缺陷(步骤2106:否),则地址管理器可在步骤2108中将运行ID指派给经测试逻辑区块。若逻辑区块有缺陷(步骤2106:是),则地址管理器1302可在步骤2110中保持有缺陷逻辑区块的非法ID。
在步骤2112中,地址管理器1302可选择复制有缺陷逻辑区块的冗余逻辑区块。在一些实施例中,复制有缺陷逻辑区块的冗余逻辑区块可具有与有缺陷逻辑区块相同的组件及连接。然而,在其他实施例中,冗余逻辑区块可具有不同于有缺陷逻辑区块的组件和/或连接,但能够执行等效操作。例如,若有缺陷逻辑区块被设计为执行向量的乘法,则选定冗余逻辑区块也将能够执行向量的乘法,即使选定冗余逻辑区块不具有与有缺陷单元相同的架构。
在步骤2114中,地址管理器1302可测试冗余区块。例如,测试仪可将步骤2104中所应用的测试技术应用于经识别冗余区块。
在步骤2116中,基于步骤2114中的测试的结果,测试仪可确定冗余区块是否有缺陷。在步骤2118中,若冗余区块无缺陷(步骤2116:否),则测试仪可将运行ID指派给经识别冗余区块。在一些实施例中,处理2100可在步骤2118之后返回至步骤2104,形成迭代循环以测试存储器芯片中的所有逻辑区块。
若测试仪确定冗余区块有缺陷(步骤2116:是),则在步骤2120中,测试仪可确定额外冗余区块是否可用。例如,测试仪可针对关于可用冗余逻辑区块的信息查询存储器组。若冗余逻辑区块可用(步骤2120:是),则测试仪可返回至步骤2112且识别复制有缺陷逻辑区块的新的冗余逻辑区块。若冗余逻辑区块不可用(步骤2120:否),则在步骤2122中,测试仪可产生错误信号。该错误信号可包括有缺陷逻辑区块及有缺陷冗余区块的信息。
耦接的存储器组
本公开所公开的实施例还包括分布式高效能处理器。该处理器可包括介接存储器组及处理单元的存储器控制器。该处理器可以可配置以加快数据至处理单元的递送以用于计算。例如,若处理单元需要两个数据实例以执行任务,则该存储器控制器可被配置为使得通信线独立地提供对来自两个数据实例的信息的存取。所公开存储器架构试图将与复杂高速缓存存储器及复杂寄存器文件方案相关联的硬件要求最小化。一般地,处理器芯片包括允许核心与寄存器直接合作的高速缓存阶层。然而,高速缓存操作需要相当大的晶粒面积且消耗额外电力。所公开存储器架构通过在存储器中添加逻辑组件来避免高速缓存阶层的使用。
所公开架构还实现存储器组中的数据的策略(或甚至优化)置放。即使存储器组具有单个端口及高潜时,所公开存储器架构也可通过将数据策略性地放置在存储器组的不同区块中来实现高效能及避免存储器存取瓶颈。以将数据的连续串流提供至处理单元为目标,编译优化步骤可针对特定或一般任务确定数据应如何储存于存储器组中。接着,介接处理单元及存储器组的存储器控制器可被配置为在特定处理单元需要数据以执行操作时授权特定处理单元的存取。
存储器芯片的配置可由处理单元(例如,配置管理器)或外部接口执行。配置还可由编译器或其他SW工具写入。另外,存储器控制器的配置可基于存储器组中的可用端口及存储器组中的数据的组织。因此,所公开架构可以为处理单元提供来自不同存储器区块的恒定数据流或同时信息。以此方式,可通过避开潜时瓶颈或高速缓存要求来快速地处理存储器内的计算任务。
此外,储存于存储器芯片中的数据可基于编译优化步骤进行布置。编译可允许建构处理例程,其中处理器将任务高效地指派给处理单元而无存储器潜时相关联的延迟。编译可由编译器执行且被传输至连接至基板中的外部接口的主机。一般地,特定存取模式的高潜时和/或小数目的端口将导致需要数据的处理单元的数据瓶颈。然而,所公开编译可以使得处理单元能够连续地接收数据(即使在不利存储器类型的情况下)的方式将数据放置在存储器组中。
此外,在一些实施例中,配置管理器可基于任务所需的计算向所需处理单元发信号。芯片中的不同处理单元或逻辑区块可具有针对不同任务的特殊化硬件或架构。因此,取决于将执行的任务,可选择处理单元或处理单元的群组来执行任务。基板上的存储器控制器可以可配置以根据处理子单元的选择来对数据路由或授权存取,以改善数据传输速度。例如,基于编译优化及存储器架构,当需要处理单元来执行任务时,可授权处理单元存取存储器组。
此外,芯片架构可包括片上组件,片上组件通过减少存取存储器组中的数据所需的时间来促进数据的传送。因此,本公开描述用于能够使用简单存储器实例执行特定或一般任务的高效能处理器的芯片架构以及编译优化步骤。存储器实例可具有随机存取的高潜时和/或小数目的端口,诸如DRAM装置或其他面向存储器技术中所使用的,但所公开架构可通过实现自存储器组至处理单元的连续(或几乎连续)数据流来克服这些缺点。
在本申请中,同时通信可指一时钟周期内的通信。替代地,同时通信可指在一预定时间量内发送信息。例如,同时通信可指在几纳秒内的通信。
图22提供符合所公开实施例的例示性处理装置的方块图。图22A展示处理装置2200的第一实施例,其中存储器控制器2210使用多路复用器来连接第一存储器区块2202及第二存储器区块2204。存储器控制器2210还可连接至少配置管理器2212、逻辑区块2214及多个加速器2216(a)-(n)。图22B展示处理装置2200的第二实施例,其中存储器控制器2210使用总线来连接存储器区块2202及2204,该总线将存储器控制器2210与至少配置管理器2212、逻辑区块2214及多个加速器2216(a)-(n)连接。另外,主机2230可在处理装置2200外且经由例如外部接口连接至该处理装置。
存储器区块2202及2204可包括DRAM垫或垫的群组、DRAM组、MRAM\PRAM\RERAM\SRAM单元、闪存垫或其他存储器技术。存储器区块2202及2204可替代地包括非易失性存储器、闪存装置、电阻性随机存取存储器(ReRAM)装置或磁电阻随机存取存储器(MRAM)装置。
存储器区块2202及2204可进一步包括多个存储器胞元,该多个存储器胞元按行及列布置在多个字线(未示出)与多个位线(未示出)之间。每一行存储器胞元的栅极可连接至该多个字线中的相应字线。每一列存储器胞元可连接至该多个位线中的相应位线。
在其他实施例中,(包括存储器区块2202及2204的)存储器区域由简单存储器实例建构而来。在本申请中,术语“存储器实例”可与术语“存储器区块”互换使用。存储器实例(或区块)可能具有不良特性。例如,存储器可以为仅一个端口的存储器且可具有高随机存取潜时。替代地或另外,存储器在列及行变化期间可能不可存取且面对与例如电容充电和/或电路设置相关的数据存取问题。尽管如此,通过允许存储器实例与处理单元之间的专属连接及以考虑区块的特性的特定方式来布置数据,图22中所呈现的架构仍利于存储器装置中的并行处理。
在一些装置架构中,存储器实例可包括若干个端口,从而利于并行操作。尽管如此,在这种实施例中,当基于芯片架构来编译及组织数据时,芯片仍可达成经改善效能。例如,编译器可通过提供指令及组织数据置放来改善存储器区域中的存取效率,因此即使使用一个端口的存储器仍能够容易存取存储器区域。
此外,存储器区块2202及2204可以为单个芯片中的多个类型存储器。例如,存储器区块2202及2204可以为eFlash及eDRAM。此外,存储器区块可包括具有ROM实例的DRAM。
存储器控制器2210可包括逻辑电路以处置存储器存取及将结果返回至模块的其余部分。例如,存储器控制器2210可包括地址管理器及选择装置(诸如多路复用器),以在存储器区块与处理单元之间路由数据或授权对存储器区块的存取。替代地,存储器控制器2210可包括用以驱动DDR SDRAM的双数据速率(DDR)存储器控制器,其中数据在系统的存储器时钟的上升边缘及下降边缘两者上传送。
另外,存储器控制器2210可构成双通道存储器控制器。双通道存储器的并入可利于存储器控制器2210对并行存取线的控制。并行存取线可被配置为具有相同长度,以利于当结合使用多个线时的数据的同步。替代地或另外,并行存取线可允许存取存储器组的多个存储器端口。
在一些实施例中,处理装置2200可包括可连接至处理单元的一个或多个多路复用器。处理单元可包括可直接地直接至多路复用器的配置管理器2212、逻辑区块2214及加速器2216。此外,存储器控制器2210可包括来自多个存储器组或区块2202及2204的至少一个数据输入端、及连接至该多个处理单元中的每一个的至少一个数据输出端。利用此配置,存储器控制器2210可经由两个数据输入端同时地自存储器组或存储器区块2202及2204接收数据,且经由两个数据输出端同时地将经由接收的数据传输至至少一个选定处理单元。然而,在一些实施例中,至少一个数据输入端及至少一个数据输出端可实施于单个端口中,从而允许仅读取或写入操作。在这种实施例中,单个端口可实施为包括数据线、地址线及命令线的数据总线。
存储器控制器2210可连接至多个存储器区块2202及2204中的每一个,且还可经由例如选择开关连接至处理单元。基板上的处理单元(包括配置管理器2212、逻辑区块2214及加速器2216)也可独立地连接至存储器控制器2210。在一些实施例中,配置管理器2212可接收待执行的任务的指示,且作为响应,根据储存于存储器中或自外部供应的配置对存储器控制器2210、加速器2216和/或逻辑区块2214配置。替代地,存储器控制器2210可由外部接口配置。该任务可需要可用以自多个处理单元选择至少一个选定处理单元的至少一个计算。替代地或另外地,该选择可至少部分地基于用于执行至少一个计算的选定处理单元的能力。作为响应,存储器控制器2210可授权对存储器组的存取,或使用专属总线和/或在流水线式存储器存取中在至少一个选定处理单元与至少两个存储器组之间路由数据。
在一些实施例中,至少两个存储器区块的第一存储器区块2202可布置在该多个处理单元的第一侧上;且至少两个存储器组的第二存储器组2204可布置在与该第一侧相对的该多个处理单元的第二侧上。此外,用以执行该任务的选定处理单元(例如加速器2216(n))可被配置为在一时钟周期期间存取第二存储器组2204,在该时钟周期中,通信线对第一存储器组或第一存储器区块2202开放。替代地,该选定处理单元可被配置为在一时钟周期期间将数据传送至第二存储器区块2204,在该时钟周期中,通信线对第一存储器区块2202开放。
在一些实施例中,存储器控制器2210可实施为独立元件,如图22所示。然而,在其他实施例中,存储器控制器2210可嵌入于存储器区域中或可沿着加速器2216(a)-(n)安置。
处理装置2200中的处理区域可包括配置管理器2212、逻辑区块2214及加速器2216(a)-(n)。加速器2216可包括具有预定义功能的多个处理电路且可由特定应用定义。例如,加速器可以为处置模块之间的存储器移动的向量乘法累加(MAC)单元或直接存储器存取(DMA)单元。加速器2216还可以能够计算其自身地址且向存储器控制器2210请求数据或将写入数据至存储器控制器2210。例如,配置管理器2212可向加速器2216中的至少一个发出加速器可存取存储器组的信号。接着,加速器2216可配置存储器控制器2210以向加速器本身路由数据或授权加速器本身的存取。另外,加速器2216可包括至少一个算术逻辑单元、至少一个向量处置逻辑单元、至少一个字符串比较逻辑单元、至少一个寄存器以及至少一个直接存储器存取。
配置管理器2212可包括数字处理电路以配置加速器2216及指示任务的执行。例如,配置管理器2212可连接至存储器控制器2210及多个加速器2216中的每一个。配置管理器2212可具有其自身专属的存储器以保持加速器2216的配置。配置管理器2212可使用存储器组以经由存储器控制器2210来提取命令及配置。替代地,配置管理器2212可经由外部接口来编程。在某些实施例中,配置管理器2212可用具有自身的高速缓存阶层的片上精简指令集计算机(RISC)或片上复杂CPU来实施。在一些实施例中,还可省略配置管理器2212,且加速器可经由外部接口来配置。
处理装置2200还可包括外部接口(未示出)。该外部接口允许自上部层级对存储器的存取(诸如接收来自外部主机2230或片上主处理器的命令的存储器组控制器),或自外部主机2230或片上主处理器对存储器的存取。该外部接口可允许通过经由存储器控制器2210将配置或代码写入至存储器以供配置管理器2212或单元2214及2216本身稍后使用,来对配置管理器2212及加速器2216编程。然而,该外部接口还可不通过存储器控制器2210路由而直接地对处理单元编程。在配置管理器2212是微控制器的情况下,配置管理器2212可允许经由该外部接口自主存储器加载代码至控制器局部存储器。存储器控制器2210可被配置为响应于接收来自该外部接口的请求而中断任务。
该外部接口可包括与逻辑电路相关联的多个连接器,所述连接器提供至处理装置上的多种元件的无胶(glue-less)接口。该外部接口可包括:用于数据读取的数据I/O输入端及用于数据写入的输出端;外部地址输出端;外部CE0芯片选择引脚;低有效芯片选择器;字节使能引脚;用于存储器周期的等待状态的引脚;写入使能引脚;输出使能有效引脚;以及读取写入使能引脚。因此,该外部接口具有所需输入端及输出端以控制处理及自处理装置获得信息。例如,该外部接口可符合JEDEC DDR标准。替代地或另外,外部接口可符合其他标准,诸如SPI\OSPI或UART。
在一些实施例中,该外部接口可安置于芯片基板上且可连接外部主机2230。外部主机可经由该外部接口来取得对存储器区块2202及2204、存储器控制器2210及处理单元的存取。替代地或另外,外部主机2230可对存储器进行读取及写入,或可通过读取及写入命令向配置管理器2212发信号以执行操作,诸如开始一处理和/或停止一处理。另外,外部主机2230可直接对加速器2216进行配置。在一些实施例中,外部主机2230能够直接对存储器区块2202及2204执行读取/写入操作。
在一些实施例中,配置管理器2212及加速器2216可被配置为取决于目标任务而使用直接总线来将装置区域与存储器区域连接。例如,当加速器2216的一子集具有执行执行任务所需的计算的能力时,加速器的该子集可与存储器实例2204连接。通过进行此分离,能够确保专属加速器获得至存储器区块2202及2204所需的带宽(BW)。此外,具有专属总线的此配置可允许将大存储器划分成较小实例或区块,因为将存储器实例连接至存储器控制器2210允许对甚至具有高的行潜时时间的不同存储器中的数据的快速存取。为达成连接的并行化,存储器控制器2210可用数据总线、地址总线和/或控制总线连接至存储器实例中的每一个。
上述的存储器控制器2210的纳入可消除对处理装置中的高速缓存阶层或复杂寄存器文件的需求。尽管可添加高速缓存阶层以得到新增能力,但处理装置2200中的架构可允许设计者基于处理操作而添加足够存储器区块或实例且在无高速缓存阶层的情况下相应地管理所述实例。例如,处理装置2200中的架构可通过实施流水线式存储器存取来消除对高速缓存阶层的需求。在流水线式存储器存取中,处理单元可在某些数据线可开放(或激活)而其他数据线也接收或传输数据的每个周期中接收持续的数据流。使用独立通信线的持续数据流可允许经改善执行速度及最小的因线变化所致的潜时。
此外,图22中的所公开架构实现流水线式存储器存取,其可以能够将数据组织在少量存储器区块中且节省由线切换造成的功率损耗。例如,在一些实施例中,编译器可向主机2230传达存储器组中的数据的组织或用以组织存储器组中的数据的方法,以利于在给定任务期间对数据的存取。接着,配置管理器2212可定义哪些存储器组且在一些情况下存储器组的哪些端口可由加速器存取。存储器组中的数据的位置与数据的访问方法之间的这种同步通过以最小潜时将数据馈入至加速器来改善计算任务。例如,在配置管理器2212包括RISC\CPU的实施例中,该方法可以离线软件(SW)来实施,接着配置管理器2212可被编程以执行该方法。该方法可用可由RISC/CPU计算机执行的任何语言进行开发且可在任何平台上执行。该方法的输入可包括存储器控制器后的存储器的配置及数据本身,以及存储器存取的模式。另外,该方法可用特定于实施例的语言或机器语言来实施,且还可仅为以二进制或文字表示的一系列配置值。
如上文所论述,在一些实施例中,编译器可提供指令至主机2230以用于在准备流水线式存储器存取时组织存储器区块2202及2204中的数据。流水线式存储器存取通常可包括以下步骤:接收多个存储器组或存储器区块2202及2204的多个地址;根据接收的地址使用独立数据线存取该多个存储器组;通过第一通信线将来自第一地址的数据供应至该多个处理单元中的至少一个且对第二地址开放第二通信线,该第一地址在该多个存储器组的第一存储器组中,该第二地址在该多个存储器组的第二存储器组2204中;以及在第二时钟周期内,通过该第二通信线将来自该第二地址的数据供应至该多个处理单元中的至少一个且在第一线中对第一存储器组中的第三地址开放第三通信线。在一些实施例中,流水线式存储器存取可在两个存储器区块连接至单个端口的情况下执行。在这种实施例中,存储器控制器2210可将两个存储器区块隐藏在单个端口后,但利用流水线式存储器访问方法将数据传输至处理单元。
在一些实施例中,编译器可在执行任务之前在主机2230上执行。在这种实施例中,编译器可以能够基于存储器装置的架构来确定数据流的配置,因为该配置会是编译器已知的。
在其他实施例中,若存储器区块2204及2202的配置在离线时间是未知的,则流水线式方法可在主机2230上执行,该主机可在开始计算之前将数据布置在存储器区块中。例如,主机2230可将数据直接写入于存储器区块2204及2202中。在这种实施例中,诸如配置管理器2212及存储器控制器2210的处理单元在运行时间之前可能不会具有关于所需硬件的信息。接着,可能有必要延迟对加速器2216的选择,直至任务开始运行。在这些情形中,处理单元或存储器控制器2210可随机地选择加速器2216且创建测试数据存取模式,该存取模式可在执行任务时加以修改。
尽管如此,当任务预先已知时,编译器可组织存储器组中的数据及指令以供主机2230提供至诸如配置管理器2212的处理单元,从而设定将存取潜时最小化的信号连接。例如,在一些情况下,加速器2216可能同时需要n个字。然而,每一存储器实例支持每次仅撷取m个字,其中“m”及“n”为整数及m<n。因此,编译器可跨不同存储器实例或区块置放所需数据,从而利于数据存取。此外,为了避免线错漏(miss)潜时,在处理装置2200包括多个存储器实例的情况下,主机可将数据划分在不同存储器实例的不同线中。数据的分割可允许存取下一个实例中的下一条线的数据,同时仍使用来自当前实例的数据。
例如,加速器2216(a)可被配置为将两个向量相乘。向量中的每一个可储存于诸如存储器区块2202及2204的独立存储器区块中,且每一向量可包括多个字。因此,为了完成需要加速器2216(a)的乘法的任务,可能有必要存取两个存储器区块且撷取多个字。然而,在一些实施例中,存储器区块仅允许每个时钟周期存取一个字。例如,存储器区块可具有单个端口。在这些情况下,为了在操作期间加快数据传输,编译器可将构成向量的字组织在不同存储器区块中,从而允许对字的并行和/或同时读取。在这些情形中,编译器可将字储存于具有专属线的存储器区块中。例如,若每一向量包括两个字且存储器控制器能够直接存取四个存储器区块,则编译器可将数据布置在四个存储器区块中,每一存储器区块传输一字且加速数据递送。此外,在存储器控制器2210可具有至每一存储器区块的超过单个连接时的实施例中,编译器可指示配置管理器2212(或其他处理单元)存取端口特定端口。以此方式,处理装置2200可执行流水线式存储器存取,从而通过同时地在一些线中加载字及在其他线中传输数据来连续地提供数据至处理单元。因此,此流水线式存储器存取可避免潜时问题。
图23是符合所公开实施例的例示性处理装置2300的方块图。该方块图展示简化处理装置2300,其显示呈MAC单元2302形式的单个加速器、配置管理器2304(等效或类似于配置管理器2212)、存储器控制器2306(等效或类似于存储器控制器2210)以及多个存储器区块2308(a)-(d)。
在一些实施例中,MAC单元2302可以为用于处理特定任务的特定加速器。作为示例,处理装置2300可以2D卷积为任务。接着,配置管理器2304可向具有适当硬件的加速器发出执行与任务相关联的计算的信号。例如,MAC单元2302可具有四个内部递增计数器(用以管理卷积计算所需的四个循环的逻辑加法器及寄存器)及乘法累加单元。配置管理器2304可向MAC单元2302发出处理传入数据且执行任务的信号。配置管理器2304可向MAC单元2302传输执行任务的指示。在这些情形中,MAC单元2302可对计算的地址迭代,乘以数字,且将其累加至内部寄存器。
在一些实施例中,配置管理器2304可对加速器配置,而存储器控制器2306授权使用专属总线对区块2308及MAC单元2302的存取。然而,在其他实施例中,存储器控制器2306可基于自配置管理器2304或外部接口接收的指令而直接地对加速器配置。替代地或另外,配置管理器2304可预先加载几个配置且允许加速器迭代地对具有不同大小的不同地址运行。在这种实施例中,配置管理器2304可包括高速缓存存储器,该高速缓存存储器在将命令传输至诸如加速器2216的多个处理单元中的至少一个之前储存该命令。然而,在其他实施例中,配置管理器2304可不包括高速缓存。
在一些实施例中,配置管理器2304或存储器控制器2306可接收为了任务必须存取的地址。配置管理器2304或存储器控制器2306可检查寄存器以确定地址是否已经在至存储器区块2308中的一个的加载线中。若在加载线中,则存储器控制器2306可自存储器区块2308读取字且将该字传递至MAC单元2302。若地址不在加载线中,则配置管理器2304可请求存储器控制器2306可加载该线且向MAC单元2302发信以延迟,直至撷取该加载线。
在一些实施例中,如图23所示,存储器控制器2306可包括形成两个独立地址的两个输入。但若应同时存取多于两个地址,且这些地址在单个存储器区块中(例如,地址仅在存储器区块2308(a)中),则存储器控制器2306或配置管理器2304可引发异常。替代地,当两个地址仅可经由单个线来存取时,配置管理器2304可返回无效数据信号。在其他实施例中,该单元可延迟处理执行,直至能够撷取所有所需数据。这可能削弱总体效能。尽管如此,编译器可以能够发现可防止延迟的配置及数据置放。
在一些实施例中,编译器可创建用于处理装置2300的配置或指令集,该配置或指令集可对配置管理器2304及存储器控制器2306及加速器2302配置以处置必需自单个存储器区块存取多个地址,但存储器区块具有一个端口的情形。例如,编译器可重新布置存储器区块2308中的数据,以使得处理单元可存取存储器区块2308中的多条线。
另外,存储器控制器2306还可在同一时间同时对多于一个输入工作。例如,存储器控制器2306可允许通过一个端口来存取存储器区块2308中的一个并供应数据,同时于另一输入端中接收来自不同存储器区块的请求。因此,此操作可导致以例示性2D卷积为任务的加速器2216自相关存储器区块的专属通信线接收数据。
另外或替代地,存储器控制器2306逻辑区块可保持针对每个存储器区块2308的刷新计数器且处置所有线的刷新。具有此类计数器允许存储器控制器2306插入来自装置的截止存取时间之间的刷新周期。
此外,存储器控制器2306可以可配置以执行流水线式存储器存取,从而接收地址且在供应数据之前开放存储器区块中的线。流水线式存储器存取可在无中断或经延迟时钟周期的情况下将数据提供至处理单元。例如,尽管存储器控制器2306或逻辑区块中的一个利用图23中的右边线来存取数据,但存储器控制器或逻辑区块可在左边线中传输数据。将关于图26更详细地解释这些方法。
响应于所需数据,处理装置2300可使用多路复用器和/或其他切换装置来选择哪些装置获得服务以执行给定任务。例如,配置管理器2304可配置多路复用器,使得至少两个数据线达到MAC单元2302。以此方式,需要来自多个地址的数据的任务(诸如2D卷积)可较快地执行,因为在卷积期间需要乘法的向量或字可在单个时钟中同时到达处理单元。此数据传送方法可允许诸如加速器2216的处理单元快速地输出结果。
在一些实施例中,配置管理器2304可以可配置以基于任务的优先级来执行处理。例如,配置管理器2304可被配置为使运行中处理无任何中断地完成。在该情况下,配置管理器2304可将任务的指令或配置提供至加速器2216,使任务的指令或配置不间断地运行,且仅在任务完成时切换多路复用器。然而,在其他实施例中,配置管理器2304可在其接收到优先级任务(诸如来自外部接口的请求)时中断任务且重新配置数据路由。尽管如此,在存储器区块2308足够的情况下,存储器控制器2306可以可配置以利用专属线路由数据至处理单元或授权处理单元的存取,所述专属线在任务完成之前无需改变。此外,在一些实施例中,所有装置可通过总线连接至配置管理器2304的实体,且装置可管理装置本身与总线之间的存取(例如,使用与多路复用器相同的逻辑)。因此,存储器控制器2306可直接连接至许多存储器实例或存储器区块。
替代地,存储器控制器2306可直接连接至存储器子实例。在一些实施例中,每一存储器实例或区块可由子实例建构(例如,DRAM可由布置于多个子区块中的具有独立数据线的垫来建构)。此外,实例可包括DRAM垫、DRAM组、闪存垫或SRAM垫或任何其他类型的存储器中的至少一个。因而,存储器控制器2306可包括用以直接寻址子实例的专属线,以将流水线式存储器存取期间的潜时最小化。
在一些实施例中,存储器控制器2306还可保持特定存储器实例所需的逻辑(诸如行/列解码器、刷新逻辑等),且存储器区块2308可处置其自身的逻辑。因此,存储器区块2308可获得地址且产生用于返回\写入数据的命令。
图24描绘符合所公开实施例的例示性存储器配置图。在一些实施例中,产生用于处理装置2200的代码或配置的编译器可执行一方法,以通过预先布置每一区块中的数据来配置自存储器区块2202及2204的加载。例如,编译器可预先布置数据,使得任务所需的每一字与存储器实例或存储器区块的一条线相关。但针对需要比处理装置2200中的可用存储器区块多的存储器区块的任务,编译器可实施使数据放置到每一存储器区块的多于一个存储器位置的方法。编译器还可依序储存数据且评估每一存储器区块的潜时以避免线错漏潜时。在一些实施例中,主机可以为处理单元的部分,诸如配置管理器2212,但在其他实施例中,编译器主机可经由外部接口连接至处理装置2200。在这种实施例中,主机可执行编译功能,诸如针对编译器所描述的编译功能。
在一些实施例中,配置管理器2212可以为CPU或微控制器(uC)。在这种实施例中,配置管理器2212可能必须存取存储器,以提取置放于存储器中的命令或指令。特定编译器可产生代码且以一方式将该代码置放于存储器中,该方式允许连续命令被储存在相同存储器线中且跨许多存储器组,从而允许也对所提取命令进行流水线式存储器存取。在这种实施例中,配置管理器2212及存储器控制器2210可以能够通过促进流水线式存储器存取来避免线性执行中的行潜时。
程序的线性执行的先前情况描述针对编译器的识别及置放指令以允许流水线式存储器执行的方法。然而,其他软件结构可能更复杂且会需要编译器识别其他软件结构且相应地起作用。例如,在任务需要循环及分支的情况下,编译器可将所有循环代码置放在单个线内,使得该单个线可在无线开放潜时的情况下循环。因而,存储器控制器2210可能不需要在执行期间改变线。
在一些实施例中,配置管理器2212可包括内部高速缓存或小存储器。内部高速缓存可储存由配置管理器2212执行以处置分支及循环的命令。例如,内部高速缓存中的命令可包括用以对存取存储器区块的加速器配置的指令。
图25是说明符合所公开实施例的可能存储器配置处理2500的例示性流程图。在便利描述存储器配置处理2500的情况下,可参考图22中所描绘及上文所述的元件的标识符。在一些实施例中,处理2500可由编译器执行,该编译器将指令提供至通过外部接口连接的主机。在其他实施例中,处理2500可由处理装置2200的组件(诸如配置管理器2212)执行。
一般而言,处理2500可包括:确定执行任务同时所需的字的数目;确定可同时自多个存储器组中的每一个存取的字的数目;及当同时所需的字的数目大于可同时存取的字的数目时,将同时所需的字的数目在多个存储器组之间分割。此外,分割同时所需的字的数目可包括执行字的循环组织及依序地每个存储器组指派一个字。
更具体地,处理2500可以步骤2502开始,在该步骤中,编译器可接收任务说明。该说明包括所需的计算和/或优先级等级。
在步骤2504中,编译器可识别可执行该任务的加速器或加速器的群组。替代地,编译器可产生指令,使得诸如配置管理器2212的处理单元可识别用以执行该任务的加速器。例如,使用所需的计算,配置管理器2212可识别加速器2216的群组中的可处理该任务的加速器。
在步骤2506中,编译器可确定为了执行该任务需要同时存取的字的数目。例如,两个向量的乘法需要存取至少两个向量,且编译器因此可确定必须同时存取多个向量字以执行操作。
在步骤2508中,编译器可确定执行该任务必需的周期的数目。例如,若该任务需要对四个副产物的卷积操作,则编译器可确定至少4个周期是执行该任务所必需的。
在步骤2510中,编译器可将需要同时存取的字置放在不同存储器组中。以此方式,存储器控制器2210可被配置为对不同存储器实例开放线且在一时钟周期内存取所需存储器区块,而无任何所需的高速缓存数据。
在步骤2512中,编译器将依序存取的字置放于相同存储器组中。例如,在需要操作的四个周期的情况下,编译器可产生用以将依序周期中的所需字写入单个存储器区块中的指令,以避免在执行期间在不同存储器区块之间改变线。
在步骤2514中,编译器产生用于对诸如配置管理器2212的处理单元编程的指令。指令可指定操作切换装置(诸如多路复用器)或对数据总线配置的条件。利用这些指令,配置管理器2212可对存储器控制器2210配置,以根据任务使用专属通信线将数据自存储器区块路由至处理单元或授权对存储器区块的存取。
图26是说明符合所公开实施例的存储器读取处理2600的例示性流程图。在便利描述存储器读取处理2600的情况下,可参考图22中所描绘及上文所述的元件的标识符。在一些实施例中,如下所述,处理2600可由存储器控制器2210实施。然而,在其他实施例中,处理2600可由处理装置2200中的其他元件(诸如配置管理器2212)实施。
在步骤2602中,存储器控制器2210、配置管理器2212或其他处理单元可接收路由来自存储器组的数据或授权对存储器组的存取的指示。请求可指定地址及存储器区块。
在一些实施例中,请求可经由指定线2218中的读取命令及线2220中的地址的数据总线接收。在其他实施例中,请求可经由连接至存储器控制器2210的解多路复用器接收。
在步骤2604中,配置管理器2212、主机或其他处理单元可查询内部寄存器。该内部寄存器可包括关于对存储器组的开放线、开放地址、开放存储器区块和/或即将进行的任务的信息。基于该内部寄存器中的信息,可确定是否存在对存储器组开放的线和/或存储器区块在步骤2602中是否接收到请求。替代地或另外,存储器控制器2210可直接查询该内部寄存器。
若该内部寄存器指示存储器组未在开放线中加载(步骤2606:否),则处理2600可继续至步骤2616,且可将一线加载至与接收的地址相关联的存储器组。另外,在步骤2616中,存储器控制器2210或诸如配置管理器2212的处理单元可发出延迟的信号给请求来自存储器地址的信息的元件。例如,若加速器2216正在请求位于已被占用的存储器区块的存储器信息,则在步骤2618中,存储器控制器2210可将延迟信号发送至加速器。在步骤2620中,配置管理器2212或存储器控制器2210可更新该内部寄存器以指示线已经对新的存储器组或新的存储器区块开放。
若该内部寄存器指示存储器组被加载在开放线中(步骤2606:是),则处理2600可继续至2608。在步骤2608中,可确定加载存储器组的线是否正用于不同地址。若该线正用于不同地址(步骤2608:是),则此将指示单个区块中存在两个实例,且因此,不能同时存取该两个实例。因此,可在步骤2616中将错误或豁免信号发送至请求来自存储器地址的信息的元件。但是,若该线并不用于不同地址(步骤2608:否),则线可针对地址开放且自目标存储器组撷取数据,且继续至步骤2614以将数据传输至请求来自存储器地址的信息的元件。
利用处理2600,处理装置2200能够建立处理单元与含有执行任务所需的信息的存储器区块或存储器实例之间的直接连接。数据的此组织可实现自不同存储器实例中的经组织向量读取信息,以及允许在装置请求多个这些地址时同时自不同存储器区块撷取信息。
图27是说明符合所公开实施例的执行处理2700的例示性流程图。在便利描述执行处理2700的情况下,可参考图22中所描绘及上文所述的元件的标识符。
在步骤2702中,编译器或诸如配置管理器2212的局部单元可接收需要执行的任务的指示。该任务可包括单个操作(例如,乘法)或更复杂操作(例如,矩阵之间的卷积)。该任务还可指示所需计算。
在步骤2704中,编译器或配置管理器2212可确定执行该任务同时所需的字的数目。例如,编译器可确定同时需要两个字以执行向量之间的乘法。在2D卷积任务的另一示例中,配置管理器2212可确定矩阵之间的卷积需要“n”乘以“m”个字,其中“n”及“m”是矩阵维度。此外,在步骤2704中,配置管理器2212还可确定执行该任务必需的周期的数目。
在步骤2706中,取决于步骤2704中的确定,编译器可在安置于基板上的多个存储器组中写入需要同时存取的字。例如,当可同时自多个存储器组中的一个存取的字的数目小于同时所需的字的数目时,编译器可将数据组织在多个存储器组中以利于在一周期内对不同所需字的存取。此外,当配置管理器2212或编译器确定执行该任务必需的周期的数目时,编译器可在多个存储器组的单个存储器组中写入依序周期中所需的字,以防止存储器组之间的线的切换。
在步骤2708中,存储器控制器2210可被配置为使用第一存储器线,自来自多个存储器组或区块的第一存储器组读取至少一个第一字或授权对该至少一个第一字的存取。
在步骤2170中,处理单元(例如加速器2216中的一个)可使用该至少一个第一字来处理该任务。
在步骤2712中,存储器控制器2210可被配置为开放第二存储器组中的第二存储器线。例如,基于任务且使用流水线式存储器访问方法,在于步骤2706中写入了任务所需的信息的情况下,存储器控制器2210可被配置为开放第二存储器区块中的第二存储器线。在一些实施例中,该第二存储器线可在步骤2170中的任务将要完成时开放。例如,若一任务需要100个时钟,则该第二存储器线可在第90个时钟中开放。
在一些实施例中,步骤2708至2712可在一个线存取周期内执行。
在步骤2714中,存储器控制器2210可被配置为使用在步骤2710中开放的该第二存储器线,授权对来自该第二存储器组的至少一个第二字的数据的存取。
在步骤2176中,处理单元(例如加速器2216中的一个)可使用该至少第二字来处理任务。
在步骤2718中,存储器控制器2210可被配置为开放该第一存储器组中的第二存储器线。例如,基于任务且使用流水线式存储器访问方法,存储器控制器2210可被配置为开放至该第一存储器区块的第二存储器线。在一些实施例中,至该第一区块的该第二存储器线可在步骤2176中的任务将要完成时开放。
在一些实施例中,步骤2714至2718可在一个线存取周期内执行。
在步骤2720中。存储器控制器2210可使用该第一存储器组中的第二存储器线或第三存储器组中的第一线且在不同存储器组中继续,以从多个存储器组或区块中的第一存储器组读取至少一个第三字或授权对该至少一个第三字的存取。
已出于说明的目的呈现先前描述。先前描述并非穷举且不限于所公开的精确形式或实施例。修改及调适对本领域技术人员而言将自本说明书的考虑及所公开实施例的实践显而易见。另外,尽管所公开实施例的方面被描述为储存于存储器中,但本领域技术人员将了解,这些方面还可储存于其他类型的计算机可读介质上,诸如辅助储存装置,例如,硬盘或CD ROM,或其他形式的RAM或ROM、USB介质、DVD、蓝光、4K超HD蓝光或其他光驱介质。
基于书面描述及所公开方法的计算机程序在有经验开发者的技能内。各种程序或程序模块可使用本领域技术人员已知的技术中的任一个产生,或可结合现有软件进行设计。例如,程序区段或程序模块可用或借助于.Net Framework、.Net Compact Framework(及相关语言,诸如Visual Basic、C等)、Java、C++、Objective-C、HTML、HTML/AJAX组合、XML或包括Java小程序的HTML来设计。
此外,尽管本文中已经描述了说明性实施例,但任何及所有实施例的范围具有本领域技术人员基于本公开将了解的等效元件、修改、省略、(例如跨各种实施例的方面的)组合、调适和/或更改。权利要求中的限制应基于权利要求中所使用的语言来广泛地解释,且不限于本说明书中所描述或在本申请的审查期间的示例。示例应解释为非排他性的。此外,所公开方法的步骤可以包括通过对步骤重排序和/或插入或删除步骤的任何方式修改。因此,本说明书及示例仅仅旨在被视为说明性的,而真实范围及精神由所附权利要求及其等效物的完整范围指示。
Claims (131)
1.一种分布式处理器,包含:
基板;
安置于所述基板上的存储器阵列,所述存储器阵列包括多个离散存储器组;
安置于所述基板上的处理阵列,所述处理阵列包括多个处理器子单元,所述处理器子单元中的每一个与所述多个离散存储器组中对应的专属存储器组相关联;
第一多个总线,其每一个将所述多个处理器子单元中的一个连接至其对应的专属存储器组;以及
第二多个总线,其每一个将所述多个处理器子单元中的一个连接至所述多个处理器子单元中的另一个。
2.根据权利要求1所述的分布式处理器,其中所述基板是半导体基板。
3.根据权利要求1所述的分布式处理器,其中所述基板是电路板。
4.根据权利要求1所述的分布式处理器,其中所述处理阵列的所述多个处理器子单元在空间上分布在所述存储器阵列的所述多个离散存储器组当中。
5.根据权利要求1所述的分布式处理器,其中芯片上的所述分布式处理器是人工智能加速器处理器。
6.根据权利要求1所述的分布式处理器,其中所述多个处理器子单元中的每一个被配置为相对于包含于所述多个处理器子单元中的其他处理器子单元独立地执行与特定应用相关联的软件代码。
7.根据权利要求1所述的分布式处理器,其中所述多个逻辑处理器子单元被布置成至少一行及至少一列,且所述第二多个总线将每一处理器子单元连接至同一行中的至少一个邻近处理器子单元且连接至同一列中的至少一个邻近处理器子单元。
8.根据权利要求1所述的分布式处理器,其中所述多个处理器子单元被布置成星形图案,且所述第二多个总线将每一处理器子单元连接至所述星形图案内的至少一个邻近处理器子单元。
9.根据权利要求1所述的分布式处理器,其中每一处理器子单元与至少两个专属存储器组相关联。
10.根据权利要求1所述的分布式处理器,其中每一专属存储器组包含至少一个动态随机存取存储器。
11.一种存储器芯片,包含:
基板;
安置于所述基板上的存储器阵列,所述存储器阵列包括多个离散存储器组;
安置于所述基板上的处理阵列,所述处理阵列包括各自包括地址产生器的多个逻辑部分,其中所述地址产生器中的每一个与所述多个离散存储器组中对应的专属存储器组相关联;以及
多个总线,每一总线将所述多个地址产生器中的一个连接至其对应的专属存储器组。
12.根据权利要求11所述的存储器芯片,其中每一地址产生器被配置为确定对应于所述地址产生器的存储器组中的待存取以供处理的地址。
13.根据权利要求11所述的存储器芯片,其中所述处理阵列进一步包括多个加速器,每一加速器与对应的地址产生器相关联且被配置为执行特定功能。
14.根据权利要求13所述的存储器芯片,其中所述特定功能包含乘法累加功能、最小值功能、最大值功能、比较功能或计数功能。
15.根据权利要求11所述的存储器芯片,其中所述存储器芯片是DRAM、快闪、SRAM、ReRAM、PRAM、MRAM或ROM存储器芯片中的至少一个。
16.根据权利要求11所述的存储器芯片,其中每一处理器子单元包含精简指令集计算机(RISC)处理器或复杂指令集计算机(CISC)处理器。
17.根据权利要求11所述的存储器芯片,其进一步包含连接至外部主机的存储器接口。
18.根据权利要求17所述的存储器芯片,其中所述存储器接口包含符合至少一个电子器件工程联合委员会(JEDEC)标准或其变体的接口。
19.根据权利要求11所述的存储器芯片,其中所述多个逻辑部分中的每一个对应于所述多个离散存储器组中的至少一个存储器组、包含于所述多个离散存储器组中的单个存储器组中的多个存储器垫、或包含于所述多个离散存储器组的单个存储器组中的单个存储器垫。
20.一种分布式处理器,包含:
基板;
安置于所述基板上的存储器阵列,所述存储器阵列包括多个离散存储器组,其中所述多个离散存储器组中的每一个具有大于一兆字节的容量;以及
安置于所述基板上的处理阵列,所述处理阵列包括多个处理器子单元,所述处理器子单元中的每一个与所述多个离散存储器组中对应的专属存储器组相关联。
21.根据权利要求20所述的分布式处理器,进一步包括:
第一多个总线,其每一个将所述多个处理器子单元中的一个连接至对应的专属存储器组;以及
第二多个总线,其每一个将所述多个处理器子单元中的一个连接至所述多个处理器子单元中的另一个。
22.根据权利要求20所述的分布式处理器,其中每一专属存储器组包含至少一个动态随机存取存储器组。
23.根据权利要求20所述的分布式处理器,其中每一专属存储器组包含至少一个静态随机存取存储器组。
24.根据权利要求20所述的分布式处理器,其中每一专属存储器组大小相同。
25.根据权利要求20所述的分布式处理器,其中所述多个存储器组中的至少两个存储器组具有不同大小。
26.根据权利要求20所述的分布式处理器,其中所述多个处理器子单元在空间上分布在所述存储器阵列内的所述多个离散存储器组当中。
27.根据权利要求20所述的分布式处理器,其中所述基板包括半导体基板。
28.一种分布式处理器,包含:
基板;
安置于所述基板上的存储器阵列,所述存储器阵列包括多个离散存储器组;以及
安置于所述基板上的处理阵列,所述处理阵列包括多个处理器子单元,所述处理器子单元中的每一个与所述多个离散存储器组中对应的专属存储器组相关联;以及
多个总线,所述多个总线中的每一个将所述多个处理器子单元中的一个连接至所述多个处理器子单元中的至少另一个,
其中所述多个总线免于定时硬件逻辑组件,以使得处理器子单元之间及跨所述多个总线中的对应总线的数据传送不受定时硬件逻辑组件控制。
29.根据权利要求28所述的分布式处理器,其中所述多个总线免于总线仲裁器,以使得处理器子单元之间及跨所述多个总线中的对应总线的数据传送不受总线仲裁器控制。
30.根据权利要求28所述的分布式处理器,其中所述多个总线包含所述多个处理器子单元的对应处理器子单元之间的导线或光纤中的至少一个。
31.根据权利要求28所述的分布式处理器,其中所述多个处理器子单元被配置为根据由所述多个处理器子单元执行的代码在所述多个总线中的至少一个上传送数据。
32.根据权利要求31所述的分布式处理器,其中所述代码规定所述多个总线中的至少一个上的数据传送的定时。
33.根据权利要求28所述的分布式处理器,其进一步包含第二多个总线,其中所述第二多个总线中的每一个将所述多个处理器子单元中的一个连接至对应的专属存储器组。
34.根据权利要求33所述的分布式处理器,其中所述第二多个总线免于定时硬件逻辑组件,以使得处理器子单元与对应的专属存储器组之间的数据传送不受定时硬件逻辑组件控制。
35.根据权利要求33所述的分布式处理器,其中所述第二多个总线免于总线仲裁器,以使得处理器子单元与对应的专属存储器组之间的数据传送不受总线仲裁器控制。
36.根据权利要求28所述的分布式处理器,其中所述多个处理器子单元在空间上分布在所述存储器阵列内的所述多个离散存储器组当中。
37.根据权利要求28所述的分布式处理器,其中所述基板包括半导体基板。
38.一种在存储器芯片上的分布式处理器,包含:
基板;
安置于所述基板上的存储器阵列,所述存储器阵列包括多个离散存储器组;以及
安置于所述基板上的处理阵列,所述处理阵列包括多个处理器子单元,所述处理器子单元中的每一个与所述多个离散存储器组中对应的专属存储器组相关联;以及
多个总线,所述多个总线中的每一个将所述多个处理器子单元中的一个连接至所述多个离散存储器组中对应的专属存储器组,
其中所述多个总线免于定时硬件逻辑组件,以使得处理器子单元与所述多个离散存储器组中对应的专属存储器组之间及跨所述多个总线中对应总线的数据传送不受定时硬件逻辑组件控制。
39.一种分布式处理器,包含:
基板;
安置于所述基板上的存储器阵列,所述存储器阵列包括多个离散存储器组;以及
安置于所述基板上的处理阵列,所述处理阵列包括多个处理器子单元,所述处理器子单元中的每一个与所述多个离散存储器组中对应的专属存储器组相关联;以及
多个总线,所述多个总线中的每一个将所述多个处理器子单元中的一个连接至所述多个处理器子单元中的至少另一个,
其中所述多个处理器子单元被配置为执行控制跨所述多个总线的数据传送的定时以避免与所述多个总线中的至少一个上的数据传送冲突的软件。
40.一种在存储器芯片上的分布式处理器,包含:
基板;
安置于所述基板上的多个处理器子单元,每一处理器子单元被配置为独立于其他处理器子单元执行一系列的指令,每一系列的指令定义待由单个处理器子单元执行的一系列的任务;
安置于所述基板上的多个对应存储器组,所述多个处理器子单元中的每一个连接至不被所述多个处理器子单元中的任何其他处理器子单元共享的至少一个专属存储器组;以及
多个总线,所述多个总线中的每一个将所述多个处理器子单元中的一个连接至所述多个处理器子单元中的至少一个其他处理器子单元,
其中跨所述多个总线中的至少一个的数据传送通过连接至所述多个总线中的所述至少一个的处理器子单元中所包含的所述系列的指令来预定义。
41.根据权利要求40所述的在存储器芯片上的分布式处理器,其中每一系列的指令包含定义对应系列的任务的机器码的集合。
42.根据权利要求41所述的在存储器芯片上的分布式处理器,其中所述系列的任务由编译器定义,所述编译器被配置为将较高层级系列的任务作为多个系列的任务分布在多个逻辑电路当中。
43.根据权利要求42所述的在存储器芯片上的分布式处理器,其中所述较高层级系列的任务包含用人类可读编程语言表示的指令的集合。
44.根据权利要求40所述的在存储器芯片上的分布式处理器,其中连接至所述多个总线中的所述至少一个的所述处理器子单元中所包含的所述系列的指令包括发送任务,所述发送任务包含令连接至所述多个总线中的所述至少一个的所述处理器子单元将数据写入至所述多个总线中的所述至少一个的命令。
45.根据权利要求40所述的在存储器芯片上的分布式处理器,其中连接至所述多个总线中的所述至少一个的所述处理器子单元中所包含的所述系列的指令包括接收任务,所述接收任务包含令连接至所述多个总线中的所述至少一个的所述处理器子单元从所述多个总线中的所述至少一个读取数据的命令。
46.一种在存储器芯片上的分布式处理器,包含:
安置于所述存储器芯片上的多个处理器子单元;
安置于所述存储器芯片上的多个存储器组,其中所述多个存储器组中的每一个被配置为储存与储存于所述多个存储器组的其他存储器组中的数据独立的数据,且其中所述多个处理器子单元中的一个连接至来自所述多个存储器组当中的至少一个专属存储器组;以及
多个总线,其中所述多个总线中的每一个将所述多个处理器子单元中的一个连接至来自所述多个存储器组当中的一个或多个对应的专属存储器组,
其中跨所述多个总线中的特定总线的数据传送由连接至所述多个总线中的所述特定总线的对应处理器子单元控制。
47.根据权利要求46所述的在存储器芯片上的分布式处理器,其中储存于所述多个存储器组中的每一个中的数据由编译器定义,所述编译器被配置为将数据分布在所述多个存储器组当中。
48.根据权利要求47所述的在存储器芯片上的分布式处理器,其中所述编译器被配置为使用分布在对应处理器子单元当中的多个较低层级任务,将定义于较高层级系列的任务中的数据分布在所述多个存储器组当中。
49.根据权利要求48所述的在存储器芯片上的分布式处理器,其中所述较高层级系列的任务包含用人类可读编程语言表示的指令的集合。
50.根据权利要求48所述的在存储器芯片上的分布式处理器,其中所述较低层级系列的任务包含以机器码表示的指令的集合。
51.一种在存储器芯片上的分布式处理器,包含:
安置于所述存储器芯片上的多个处理器子单元;
安置于所述存储器芯片上的多个存储器组,其中所述多个处理器子单元中的一个连接至来自所述多个存储器组当中的至少一个专属存储器组,且其中所述多个存储器组中的每一存储器组被配置为储存与储存于所述多个存储器组的其他存储器组中的数据独立的数据,且其中储存于来自所述多个存储器组当中的一个特定存储器组中的所述数据的至少一些包含储存于所述多个存储器组中的至少另一存储器组中的数据的副本;以及
多个总线,其中所述多个总线中的每一个将所述多个处理器子单元中的一个连接至来自所述多个存储器组当中的一个或多个对应的专属存储器组,
其中跨所述多个总线中的特定总线的数据传送由连接至所述多个总线中的所述特定总线的对应处理器子单元控制。
52.根据权利要求51所述的在存储器芯片上的分布式处理器,其中跨来自所述多个存储器组当中的所述一个特定存储器组及所述多个存储器组中的所述至少另一存储器组而被复制的至少一些数据由编译器定义,所述编译器被配置为跨存储器组复制数据。
53.根据权利要求51所述的在存储器芯片上的分布式处理器,其中跨来自所述多个存储器组当中的所述一个特定存储器组及所述多个存储器组中的所述至少另一存储器组而被复制的至少一些数据包含神经网络的权重。
54.根据权利要求53所述的在存储器芯片上的分布式处理器,其中所述神经网络中的每一节点通过来自所述多个处理器子单元当中的至少一个处理器子单元来定义。
55.根据权利要求54所述的在存储器芯片上的分布式处理器,其中每一节点包含由定义所述节点的所述至少一个处理器子单元执行的机器码。
56.一种储存指令的非暂时性计算机可读介质,所述指令用于编译一系列的指令以供在包含多个处理器子单元及多个存储器组的存储器芯片上执行,其中来自所述多个处理器子单元当中的每一处理器子单元连接至来自所述多个存储器组当中的至少一个对应的专属存储器组,所述指令使至少一个处理器:
将所述系列的指令分割成子系列指令的多个群组,所述分割包含:
将与所述系列指令相关联的任务指派给所述处理器子单元中的不同处理器子单元,其中所述处理器子单元在空间上分布在安置于所述存储器芯片上的所述多个存储器组当中;
产生用以在所述存储器芯片的处理器子单元对之间传送数据的任务,每一对处理器子单元通过总线连接,以及
将经指派及所产生的任务分组成子系列指令的所述多个群组,其中子系列指令的所述多个群组中的每一个对应于所述多个处理器子单元中的不同处理器子单元;
产生对应于子系列指令的所述多个群组中的每一个的机器码;以及
根据所述分割,将对应于子系列指令的所述多个群组中的每一个的所产生机器码指派给所述多个处理器子单元中的对应处理器子单元。
57.根据权利要求56所述的非暂时性计算机可读介质,其中将与所述系列的指令相关联的任务向所述处理器子单元中的不同处理器子单元的指派取决于所述存储器芯片上的所述处理器子单元中的两个或更多个处理器子单元之间的空间接近性。
58.根据权利要求56所述的非暂时性计算机可读介质,其中所述指令进一步使所述至少一个处理器:
基于所述分割对与所述系列的指令相关联的数据分组;以及
根据所述分组将数据指派给存储器组。
59.根据权利要求58所述的非暂时性计算机可读介质,其中对所述数据分组包含确定要在所述存储器组中的两个或更多个存储器组中复制的所述数据的至少一部分。
60.一种存储器芯片,包含多个处理器子单元及多个对应存储器组,每一处理器子单元连接至专属于所述处理器子单元的至少一个存储器组,所述存储器芯片的所述处理器子单元被配置为执行根据权利要求56所产生的机器码。
61.一种存储器芯片,包含:
多个存储器组,每一存储器组具有组行解码器、组列解码器及多个存储器子组,每一存储器子组具有子组行解码器及子组列解码器以允许对所述存储器子组上的位置的读取及写入,每一存储器子组包含:
多个存储器垫,每一存储器垫具有多个存储器胞元,
其中所述子组行解码器及所述子组列解码器连接至所述组行解码器及所述组列解码器。
62.根据权利要求61所述的存储器芯片,其中每一存储器子组进一步具有子组控制器,所述子组控制器被配置为确定是否处理来自所述存储器组的控制器的读取请求及写入请求。
63.根据权利要求62所述的存储器芯片,其中所述存储器的控制器同步至系统时钟。
64.根据权利要求62所述的存储器芯片,其中所述存储器子组的控制器不同步至系统时钟。
65.根据权利要求61所述的存储器芯片,其中每一子组进一步具有使用所述子组作为专属存储器的处理器子单元。
66.根据权利要求61所述的存储器芯片,其中所述处理器子单元包含可配置处理器子单元或加速器。
67.根据权利要求65所述的存储器芯片,其中每一处理器子单元被配置为使用子组的行解码器及列解码器而不使用所述组行解码器及所述组列解码器,来存取专属于所述处理器子单元的子组。
68.一种存储器芯片,包含:
多个存储器组,每一存储器组具有组控制器及多个存储器子组,每一存储器子组具有子组行解码器及子组列解码器以允许对所述存储器子组上的位置的读取及写入,每一存储器子组包含:
多个存储器垫,每一存储器垫具有多个存储器胞元,
其中所述子组行解码器及所述子组列解码器处理来自所述组控制器的读取及写入请求。
69.根据权利要求68所述的存储器芯片,其中每一存储器子组进一步具有子组控制器,所述子组控制器被配置为确定是否处理来自所述组控制器的读取请求及写入请求。
70.根据权利要求69所述的存储器芯片,其中所述组控制器同步至系统时钟。
71.根据权利要求69所述的存储器芯片,其中所述存储器子组的控制器不同步至系统时钟。
72.根据权利要求68所述的存储器芯片,其中每一子组进一步具有使用所述子组作为专属存储器的处理器子单元。
73.根据权利要求72所述的存储器芯片,其中每一处理器子单元被配置为使用子组的行解码器及列解码器而不使用所述组控制器,来存取专属于所述处理器子单元的子组。
74.一种存储器芯片,包含:
多个存储器组,每一存储器组具有用于处理对所述存储器组上的位置的读取及写入的组控制器,每一存储器组包含:
多个存储器垫,每一存储器垫具有多个存储器胞元且具有垫行解码器及垫列解码器,
其中所述垫行解码器及所述垫列解码器处理来自子组控制器的读取及写入请求。
75.根据权利要求74所述的存储器芯片,其中每一存储器垫进一步具有比较器,所述比较器被配置为基于来自所述组控制器的命令地址来确定是否处理来自所述子组控制器的读取请求及写入请求。
76.根据权利要求74所述的存储器芯片,其中每一存储器垫具有通过一个或多个熔丝确定的经指派的地址范围。
77.根据权利要求76所述的存储器芯片,其中所述一个或多个熔丝被配置为停用有故障的存储器垫。
78.根据权利要求74所述的存储器芯片,其中每一子组进一步具有使用所述子组作为专属存储器的处理器子单元。
79.一种存储器芯片,包含:
多个存储器组,每一存储器组具有组控制器、行解码器及列解码器以允许对所述存储器组上的位置的读取及写入;以及
多个总线,所述多个总线将多个组控制器中的每一控制器连接至所述多个组控制器中的至少一个其他控制器。
80.根据权利要求79所述的存储器芯片,其中可在不中断所述存储器组的主总线上的数据传送的情况下存取所述多个总线。
81.根据权利要求79所述的存储器芯片,其中每一控制器连接至多个其他控制器且可配置以用于选择所述多个其他控制器中的另一个用于发送或接收数据。
82.根据权利要求79所述的存储器芯片,其中每一存储器组包含动态随机存取存储器组。
83.根据权利要求79所述的存储器芯片,其中每一控制器是可配置的,并且被配置为确定具有控制器的存储器组中的用于读取及写入的地址。
84.根据权利要求79所述的存储器芯片,其中每一控制器被配置为在将自其他控制器传入的数据传递至具有控制器的存储器组之前处理所述数据。
85.根据权利要求79所述的存储器芯片,其中每一控制器连接至另一空间上邻近的控制器。
86.一种存储器装置,包含:
基板;
所述基板上的多个存储器组;
所述基板上的多个主要逻辑区块,所述多个主要逻辑区块中的每一个连接至所述多个存储器组中的至少一个;
所述基板上的多个冗余区块,所述多个冗余区块中的每一个连接至所述多个存储器组中的至少一个,所述多个冗余区块中的每一个复制所述多个主要逻辑区块中的至少一个;以及
所述基板上的多个配置开关,所述多个配置开关中的每一个连接至所述多个主要逻辑区块中的至少一个或连接至所述多个冗余区块中的至少一个;
其中在检测到与所述多个主要逻辑区块中的一个主要逻辑区块相关联的故障后:
所述多个配置开关中的第一配置开关被配置为停用所述多个主要逻辑区块中的所述一个主要逻辑区块,且
所述多个配置开关中的第二配置开关被配置为启用所述多个冗余区块中的复制所述多个主要逻辑区块中的所述一个主要逻辑区块的一个冗余区块。
87.根据权利要求86所述的存储器装置,其中
所述多个配置开关包含多个激活开关及多个禁用开关,
所述多个激活开关中的每一个及所述多个禁用开关中的每一个包含外部输入端;
所述多个激活开关中的每一个被配置为使得所述外部输入端中的激活信号导致闭合开关条件;且
所述多个禁用开关中的每一个被配置为使得所述外部输入端中的禁用信号导致打开开关条件。
88.根据权利要求86所述的存储器装置,其中
利用第一专属连接,将所述多个主要逻辑区块中的至少一个连接至所述多个存储器组的子集,且
利用第二专属连接,将所述多个冗余区块中的至少一个连接至所述多个存储器组的所述子集,所述多个冗余区块中的所述至少一个复制所述多个主要逻辑区块中的所述至少一个。
89.根据权利要求87所述的存储器装置,其中
所述多个配置开关中的每一个将所述多个主要或冗余逻辑区块中的至少一个与时钟节点或电力节点中的至少一个耦接。
90.根据权利要求86所述的存储器装置,其中所述多个主要逻辑区块包含:
至少一个存储器逻辑区块,其被配置为启用所述存储器组中的读取及写入操作;以及
至少一个商业逻辑区块,其被配置为执行存储器中计算。
91.根据权利要求90所述的存储器装置,其中
所述至少一个商业逻辑区块包含第一商业逻辑区块;且
所述多个冗余区块包含复制所述第一商业逻辑区块的第二商业逻辑区块。
92.根据权利要求86所述的存储器装置,其中所述多个配置开关包含熔丝、反熔丝、非易失性存储器装置或单次可编程装置中的至少一个。
93.根据权利要求86所述的存储器装置,其中所述多个主要逻辑区块中的每一个及所述多个冗余区块中的每一个连接至地址总线及数据总线。
94.根据权利要求86所述的存储器装置,其中所述多个主要逻辑区块中的至少一个包含:
至少一个局部逻辑单元;
至少一个计算单元;以及
至少一个副本单元,
其中,
所述至少一个副本单元复制所述至少一个计算单元,且
所述至少一个局部逻辑单元具有小于所述至少一个计算单元的大小。
95.根据权利要求94所述的存储器装置,其中所述多个主要逻辑区块中的所述至少一个包含:
多个局部配置开关,所述多个局部配置开关中的每一个连接至所述至少一个计算单元或所述至少一个副本单元中的至少一个,
其中所述多个局部配置开关被配置为在于所述至少一个计算单元中检测到故障时停用所述至少一个局部计算单元且启用所述至少一个副本单元。
96.根据权利要求86所述的存储器装置,其进一步包含
地址管理器;以及
地址总线,其将所述地址管理器耦接至所述多个存储器组中的每一个、所述多个主要逻辑区块中的每一个及所述多个冗余区块中的每一个,
其中在检测到与所述多个主要逻辑区块中的所述一个主要逻辑区块相关联的故障之后,将无效地址指派给所述多个主要逻辑区块中的所述一个主要逻辑区块且将有效地址指派给所述多个冗余区块中的所述一个冗余区块。
97.根据权利要求86所述的存储器装置,其中
所述多个主要逻辑区块串联连接;
所述多个主要逻辑区块中的每一个与并联开关并联连接;且
在检测到与所述多个主要逻辑区块中的所述一个主要逻辑区块相关联的故障之后,连接至所述多个主要逻辑区块中的所述一个主要逻辑区块的并联开关被激活以耦接所述多个主要逻辑区块中的两个主要逻辑区块。
98.根据权利要求97所述的存储器装置,其中所述并联开关包含反熔丝。
99.根据权利要求97所述的存储器装置,其中所述并联开关包含具有选定周期延迟的取样电路。
100.根据权利要求86所述的存储器装置,其中
所述多个主要逻辑区块及所述多个冗余区块以二维网格安置于所述基板上;
所述多个主要逻辑区块中的每一个及所述多个冗余区块中的每一个利用连接箱来互连;且
输入区块安置于所述二维网格的每一排及每一列的外围。
101.根据权利要求86所述的存储器装置,其中所述存储器芯片包含DRAM、闪存、SRAM、ReRAM、PRAM或MRAM存储器中的至少一个。
102.根据权利要求86所述的存储器装置,其中所述多个主要逻辑区块中的每一个具有与所述多个冗余区块中的至少一个等效的计算能力。
103.根据权利要求86所述的存储器装置,其中所述多个主要逻辑区块包含至少一个局部计算单元及至少一个冗余计算单元,所述至少一个冗余计算单元复制所述至少一个局部计算单元。
104.根据权利要求86所述的存储器装置,其中所述第一配置开关经进一步配置以启用所述多个冗余区块中的复制所述多个主要逻辑区块中的所述一个主要逻辑区块的所述一个冗余区块。
105.一种在存储器芯片上的分布式处理器,包含:
基板;
所述基板上的地址管理器;
所述基板上的多个主要逻辑区块,所述多个主要逻辑区块中的每一个连接至多个存储器组中的至少一个;
所述基板上的多个冗余区块,所述多个冗余区块中的每一个连接至所述多个存储器组中的至少一个,所述多个冗余区块中的每一个复制所述多个主要逻辑区块中的至少一个;以及
所述基板上的总线,其连接至所述多个主要逻辑区块中的每一个、所述多个冗余区块中的每一个及所述地址管理器,
其中所述处理器被配置为:
将运行ID号指派给所述多个主要逻辑区块中的通过测试协议的区块;
将非法ID号指派给所述多个主要逻辑区块中的未通过所述测试协议的区块;且
将运行ID号指派给所述多个冗余区块中的通过所述测试协议的区块。
106.根据权利要求105所述的分布式存储器芯片,其中所述多个冗余区块中的被指派了运行ID号的区块等于或大于所述多个主要逻辑区块中的被指派了非法ID号的区块。
107.根据权利要求106所述的分布式存储器芯片,其中所述多个主要逻辑区块中的每一个及所述多个冗余区块中的每一个包含熔断标识电路。
108.根据权利要求107所述的分布式存储器芯片,其中所述总线包含命令线、数据线及地址线。
109.一种用于配置存储器芯片上的分布式处理器的方法,包含:
针对至少一个电路功能性,对所述存储器芯片的基板上的多个主要逻辑区块中的每一个进行测试;
基于测试结果来识别所述多个主要逻辑区块中的至少一个故障逻辑区块,所述至少一个故障逻辑区块连接至安置于所述存储器芯片的基板上的至少一个存储器组;
针对所述至少一个电路功能性,对所述存储器芯片的基板上的至少一个冗余区块进行测试,所述至少一个冗余区块复制所述至少一个故障逻辑区块且连接至所述至少一个存储器组;
通过将外部信号施加至禁用开关来停用所述至少一个故障逻辑区块,所述禁用开关与所述至少一个故障逻辑区块连接且安置于所述存储器芯片的基板上;以及
通过将外部信号施加至激活开关来启用所述至少一个冗余区块,所述激活开关与所述至少一个冗余区块连接且安置于所述存储器芯片的基板上。
110.一种用于配置存储器芯片上的分布式处理器的方法,包含:
启用所述存储器的基板上的多个主要逻辑区块及多个冗余区块;
针对至少一个电路功能性,对所述存储器芯片的基板上的所述多个主要逻辑区块中的每一个进行测试;
基于测试结果来识别所述多个主要逻辑区块中的至少一个故障逻辑区块,所述至少一个故障逻辑区块连接至安置于所述存储器芯片的基板上的至少一个存储器组;
针对所述至少一个电路功能性,对所述存储器芯片的基板上的至少一个冗余区块进行测试,所述至少一个冗余区块复制所述至少一个故障逻辑区块且连接至所述至少一个存储器组;
通过将外部信号施加至激活开关来停用至少一个冗余区块,所述激活开关与所述至少一个冗余区块连接且安置于所述存储器芯片的基板上。
111.一种处理装置,包含:
基板;
所述基板上的多个存储器组;
所述基板上的存储器控制器,其连接至所述多个存储器组中的每一个;以及
所述基板上的多个处理单元,所述多个处理单元中的每一个连接至所述存储器控制器,所述多个处理单元包含配置管理器;
其中所述配置管理器被配置为:
接收待执行的任务的第一指示,所述任务需要至少一个计算;
基于用于执行所述至少一个计算的至少一个选定处理单元的能力,向所述多个处理单元中的至少一个选定处理单元发信号;且
将第二指示传输至所述至少一个选定处理单元,且
其中所述存储器控制器被配置为:
使用至少一个通信线将来自至少两个存储器组的数据路由至所述至少一个选定处理单元,所述至少一个通信线经由所述存储器控制器连接至所述至少两个存储器组及所述至少一个选定处理单元。
112.根据权利要求111所述的处理装置,其中
传输所述第二指示包含传达通过所述至少一个选定处理单元来执行所述任务的指令,且其中所述至少一个选定处理单元被配置为将数据传输至所述存储器控制器或自所述存储器控制器接收数据。
113.根据权利要求111所述的处理装置,其中传输所述第二指示包含传达将数据路由至所述存储器控制器的指令。
114.根据权利要求111所述的处理装置,其中所述至少一个选定处理单元被配置为在对所述至少两个存储器组中的第一存储器组中的开放存储器线的一系列存取期间,开放所述至少两个存储器组中的第二存储器组中的存储器线。
115.根据权利要求114所述的处理装置,其中所述选定处理单元被配置为在通信线对所述第一存储器组开放的线存取时段期间将数据传送至所述第二存储器组。
116.根据权利要求111所述的处理装置,其中
所述存储器控制器包含来自所述多个存储器组的至少两个数据输入端及连接至所述多个处理单元中的每一个的至少两个数据输出端;
所述存储器控制器被配置为经由所述两个数据输入端同时地自两个存储器组接收数据;且
所述存储器控制器被配置为经由所述两个数据输出端同时地将经由所述两个数据输入端接收的数据传输至所述至少一个选定处理单元。
117.根据权利要求111所述的处理装置,其中所述多个处理单元包含针对预定义任务配置的多个加速器。
118.根据权利要求117所述的处理装置,其中所述多个加速器包含向量乘法累加单元或直接存储器存取中的至少一个。
119.根据权利要求117所述的处理装置,其中所述配置管理器包含RISC处理器或微控制器中的至少一个。
120.根据权利要求111所述的处理装置,其进一步包含连接至所述存储器组的外部接口。
121.根据权利要求111所述的处理装置,其中
所述处理装置经进一步配置以:
在一线存取时段内,通过第一存储器线将来自第一地址的数据供应至所述多个处理单元中的至少一个且开放第二存储器线中的第二地址,所述第一地址在所述多个存储器组的第一存储器组中,所述第二地址在所述多个存储器组的第二存储器组中;以及
在第二线存取时段内,通过所述第二存储器线将来自所述第二地址的数据供应至所述多个处理单元中的所述至少一个且在所述第一线中开放所述第一存储器组中的第三地址。
122.根据权利要求111所述的处理装置,其中
编译器被配置为:
确定执行所述任务同时所需的字的数目;
确定可同时自所述多个存储器组中的每一个存取的字的数目;以及
当同时所需的字的数目大于可同时存取的字的数目时,在多个存储器组之间分割同时所需的字的数目。
123.根据权利要求122所述的处理装置,其中所述字包含机器指令。
124.根据权利要求111所述的处理装置,其中所述配置管理器包含局部存储器,所述局部存储器储存待传输至所述多个处理单元中的至少一个的命令。
125.根据权利要求111所述的处理装置,其中所述存储器控制器被配置为响应于接收来自外部接口的请求而中断所述任务。
126.根据权利要求111所述的处理装置,其中所述多个存储器组包括DRAM垫、DRAM、组、闪存垫或SRAM垫中的至少一个。
127.根据权利要求111所述的处理装置,其中所述多个处理单元包含至少一个算术逻辑单元、至少一个向量处置逻辑单元、至少一个寄存器以及至少一个直接存储器存取。
128.根据权利要求111所述的处理装置,其中所述配置管理器及所述多个处理单元被配置为在任务结束之后在彼此之间移交对所述存储器控制器的存取。
129.一种为了操作分布式存储器装置所执行的方法,包含:
通过编译器编译所述分布式存储器装置的任务,所述任务需要至少一个计算,所述编译包含:
确定执行所述任务同时所需的字的数目,及
提供用于进行如下操作的指令:当可同时自安置于基板上的多个存储器组中的一个存取的字的数目小于同时所需的字的数目时,在所述多个存储器组中写入需要同时存取的字;
通过安置于所述基板上的配置管理器接收执行所述任务的指示;以及
响应于接收到所述指示,对安置于所述基板中的存储器控制器配置以:
在第一线存取周期内:
使用第一存储器线从所述多个存储器组中的第一存储器组存取至少一个第一字,
将所述至少一个第一字发送至至少一个处理单元,且
开放第二存储器组中的第一存储器线以从所述多个存储器组中的所述第二存储器组存取第二位置,且
在第二线存取周期内:
使用所述第一存储器线从所述第二存储器组存取至少一个第二字,
将所述至少一个第二字发送至至少一个处理单元,且
使用所述第一存储器组中的第二存储器线从所述第一存储器组存取第三地址。
130.根据权利要求129所述的方法,进一步其中编译所述任务进一步包含:
确定执行所述任务必需的周期的数目;以及
在所述多个存储器组中的单个存储器组中写入在依序周期中所需的字。
131.一种储存指令的非暂时性计算机可读介质,所述指令在由至少一个处理器执行时使所述至少一个处理器进行以下操作:
确定执行任务同时所需的字的数目,所述任务需要至少一个计算;
当可同时自安置于基板上的多个存储器组中的一个存取的字的数目小于同时所需的字的数目时,在所述多个存储器组中写入需要同时存取的字;
将执行所述任务的指示传输至安置于所述基板上的配置管理器;以及
传输指令以对安置于所述基板上的存储器控制器配置以
在第一线存取周期内:
使用第一存储器线从所述多个存储器组中的第一存储器组存取至少一个第一字,
将所述至少一个第一字发送至至少一个处理单元,且
开放第二存储器组中的第一存储器线以从所述多个存储器组中的所述第二存储器组存取第二位置,且
在第二线存取周期内:
使用所述第一存储器线从所述第二存储器组存取至少一个第二字,
将所述至少一个第二字发送至至少一个处理单元,且
使用所述第一存储器组中的第二存储器线从所述第一存储器组存取第三地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111072866.XA CN113918481A (zh) | 2017-07-30 | 2018-07-30 | 一种存储器芯片 |
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 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111072866.XA Division CN113918481A (zh) | 2017-07-30 | 2018-07-30 | 一种存储器芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111149166A true CN111149166A (zh) | 2020-05-12 |
CN111149166B CN111149166B (zh) | 2024-01-09 |
Family
ID=65233543
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111072866.XA Pending CN113918481A (zh) | 2017-07-30 | 2018-07-30 | 一种存储器芯片 |
CN201880062664.7A Active CN111149166B (zh) | 2017-07-30 | 2018-07-30 | 基于存储器的分布式处理器架构 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111072866.XA Pending CN113918481A (zh) | 2017-07-30 | 2018-07-30 | 一种存储器芯片 |
Country Status (7)
Country | Link |
---|---|
US (10) | US10664438B2 (zh) |
EP (2) | EP4187539A1 (zh) |
JP (1) | JP7242634B2 (zh) |
KR (1) | KR20200047551A (zh) |
CN (2) | CN113918481A (zh) |
TW (2) | TW202301125A (zh) |
WO (1) | WO2019025864A2 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111600204A (zh) * | 2020-06-05 | 2020-08-28 | 杭州交联电力设计股份有限公司 | 一种单组电气设备的自动排布方法 |
CN112256409A (zh) * | 2020-09-15 | 2021-01-22 | 中科驭数(北京)科技有限公司 | 基于多个数据库加速器的任务执行方法及装置 |
CN113254392A (zh) * | 2021-07-12 | 2021-08-13 | 深圳比特微电子科技有限公司 | 用于片上系统的数据存储方法和基于片上系统的设备 |
CN115237036A (zh) * | 2022-09-22 | 2022-10-25 | 之江实验室 | 一种针对晶圆级处理器系统的全数字化管理装置 |
Families Citing this family (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10699189B2 (en) | 2017-02-23 | 2020-06-30 | Cerebras Systems Inc. | Accelerated deep learning |
US11488004B2 (en) | 2017-04-17 | 2022-11-01 | Cerebras Systems Inc. | Neuron smearing for accelerated deep learning |
US11232347B2 (en) | 2017-04-17 | 2022-01-25 | Cerebras Systems Inc. | Fabric vectors for deep learning acceleration |
CA3060368C (en) | 2017-04-17 | 2020-07-28 | Cerebras Systems Inc. | Dataflow triggered tasks for accelerated deep learning |
US11514996B2 (en) | 2017-07-30 | 2022-11-29 | Neuroblade Ltd. | Memory-based processors |
CN113918481A (zh) * | 2017-07-30 | 2022-01-11 | 纽罗布拉德有限公司 | 一种存储器芯片 |
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 |
WO2020044238A1 (en) * | 2018-08-29 | 2020-03-05 | 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 |
EP3966698A4 (en) * | 2019-05-07 | 2023-01-18 | Memryx Inc. | ARCHITECTURE OF A MEMORY PROCESSING UNIT |
CN114341805A (zh) * | 2019-07-03 | 2022-04-12 | 华夏芯(北京)通用处理器技术有限公司 | 纯函数语言神经网络加速器系统及结构 |
US20210011732A1 (en) * | 2019-07-09 | 2021-01-14 | MemryX Inc. | Matrix Data Reuse Techniques in Processing Systems |
US11860782B2 (en) | 2019-08-13 | 2024-01-02 | Neuroblade Ltd. | Compensating for DRAM activation penalties |
WO2021028723A2 (en) * | 2019-08-13 | 2021-02-18 | Neuroblade Ltd. | Memory-based processors |
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 |
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 |
CN112783555A (zh) * | 2019-11-11 | 2021-05-11 | 深圳市中兴微电子技术有限公司 | 基于risc-v向量扩展指令的编码处理方法及装置、存储介质 |
JP2022511581A (ja) * | 2019-11-15 | 2022-02-01 | バイドゥ ドットコム タイムス テクノロジー (ベイジン) カンパニー リミテッド | フレキシブルケーブル接続に基づく分散型aiトレーニングトポロジー |
CN114430838A (zh) * | 2019-12-19 | 2022-05-03 | 谷歌有限责任公司 | 使用神经网络加速器来处理连续输入 |
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 | Российская Федерация, от имени которой выступает ФОНД ПЕРСПЕКТИВНЫХ ИССЛЕДОВАНИЙ | Метод построения процессоров для вывода в сверточных нейронных сетях, основанный на потоковых вычислениях |
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 |
US11604645B2 (en) * | 2020-07-22 | 2023-03-14 | Flex Logix Technologies, Inc. | MAC processing pipelines having programmable granularity, and methods of operating same |
CN116034340A (zh) * | 2020-08-28 | 2023-04-28 | 西门子工业软件有限公司 | 用于协议处理的方法及系统 |
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 | 臺灣發展軟體科技股份有限公司 | 資料處理電路及故障減輕方法 |
WO2023004347A1 (en) * | 2021-07-20 | 2023-01-26 | The Regents Of The University Of California | Run-time configurable architectures |
KR20230068572A (ko) * | 2021-11-11 | 2023-05-18 | 삼성전자주식회사 | 메모리 어레이 내의 연결 회로 |
TWI779923B (zh) * | 2021-11-11 | 2022-10-01 | 南亞科技股份有限公司 | 圖案驗證系統及其操作方法 |
JP7243006B1 (ja) | 2021-12-20 | 2023-03-22 | エッジコーティックス ピーティーイー. リミテッド | ネットワークオンチップリコンフィギュアビリティ |
WO2023128009A1 (ko) * | 2021-12-30 | 2023-07-06 | 리벨리온 주식회사 | 뉴럴 프로세싱 장치 및 그의 동기화 방법 |
US20230317122A1 (en) * | 2022-03-31 | 2023-10-05 | Macronix International Co., Ltd. | In memory data computation and analysis |
TWI811038B (zh) * | 2022-07-25 | 2023-08-01 | 慧榮科技股份有限公司 | 記憶體控制器與偵錯訊息輸出控制方法 |
CN115328849B (zh) * | 2022-08-10 | 2023-10-03 | 苏州迅芯微电子有限公司 | 一种用于数据发送和接收的芯片组合结构 |
US11630605B1 (en) | 2022-08-10 | 2023-04-18 | Recogni Inc. | Methods and systems for processing read-modify-write requests |
US11896952B1 (en) * | 2023-10-12 | 2024-02-13 | King Faisal University | Adsorbent using biowaste and plastic waste for wastewater treatment |
Citations (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5014235A (en) * | 1987-12-15 | 1991-05-07 | Steven G. Morton | Convolution memory |
US5345552A (en) * | 1992-11-12 | 1994-09-06 | Marquette Electronics, Inc. | Control for computer windowing display |
US5822608A (en) * | 1990-11-13 | 1998-10-13 | International Business Machines Corporation | Associative parallel processing system |
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 |
US5959929A (en) * | 1997-12-29 | 1999-09-28 | Micron Technology, Inc. | Method for writing to multiple banks of a memory device |
US6173356B1 (en) * | 1998-02-20 | 2001-01-09 | Silicon Aquarius, Inc. | Multi-port DRAM with integrated SRAM and systems and methods using the same |
US20010024384A1 (en) * | 1999-12-27 | 2001-09-27 | Kazutami Arimoto | Semiconductor memory device capable of reliably performing burn-in test at wafer level |
US6366989B1 (en) * | 1998-09-17 | 2002-04-02 | Sun Microsystems, Inc. | Programmable memory controller |
US20040181503A1 (en) * | 2003-03-13 | 2004-09-16 | Motorola, Inc. | Information storage and retrieval method and apparatus |
US20070276977A1 (en) * | 2006-05-24 | 2007-11-29 | International Business Machines Corporation | Systems and methods for providing memory modules with multiple hub devices |
US20090196102A1 (en) * | 2008-02-04 | 2009-08-06 | Mosaid Technologies Incorporated | Flexible memory operations in nand flash devices |
JP2009211780A (ja) * | 2008-03-05 | 2009-09-17 | Nec Corp | アドレスエラー検出装置、アドレスエラー検出方法 |
CN101657802A (zh) * | 2006-12-06 | 2010-02-24 | 弗森多系统公司(dba弗森-艾奥) | 用于远程直接存储器存取固态存储设备的装置、系统及方法 |
CN102449701A (zh) * | 2009-04-08 | 2012-05-09 | 桑迪士克3D有限责任公司 | 具有垂直位线的可重编程非易失性存储器元件的三维阵列 |
US20140143470A1 (en) * | 2012-11-21 | 2014-05-22 | Coherent Logix, Incorporated | Processing System With Interspersed Processors DMA-FIFO |
CN105431831A (zh) * | 2014-02-17 | 2016-03-23 | 联发科技股份有限公司 | 数据存取方法和利用相同方法的数据存取装置 |
US20170194045A1 (en) * | 2015-12-30 | 2017-07-06 | Samsung Electronics Co., Ltd. | Semiconductor memory devices and memory systems including the same |
US20170372799A1 (en) * | 2015-04-30 | 2017-12-28 | Hewlett Packard Enterprise Development Lp | Memory module error tracking |
CN111047026A (zh) * | 2018-10-11 | 2020-04-21 | 力晶科技股份有限公司 | 可执行人工智能运算的存储器芯片及其操作方法 |
CN112912856A (zh) * | 2018-09-06 | 2021-06-04 | 纽罗布拉德有限公司 | 基于存储器的处理器 |
CN113918481A (zh) * | 2017-07-30 | 2022-01-11 | 纽罗布拉德有限公司 | 一种存储器芯片 |
Family Cites Families (248)
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 |
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 | 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) |
US5752067A (en) | 1990-11-13 | 1998-05-12 | International Business Machines Corporation | Fully scalable parallel processing system having asynchronous SIMD processing |
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 | 삼성전자주식회사 | 반도체 메모리 장치의 로우 리던던시 장치 |
US5396608A (en) * | 1993-06-28 | 1995-03-07 | Analog Devices, Inc. | Method and apparatus for accessing variable length words in a memory array |
US5752036A (en) | 1993-10-05 | 1998-05-12 | Seiko Epson Corporation | Apparatus for generating a program for parallel processing |
DE69430744T2 (de) | 1994-07-28 | 2003-01-30 | Ibm | 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 |
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 |
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 |
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 | 同期型半導体記憶装置 |
IL140397A0 (en) | 1998-06-23 | 2002-02-10 | Intellix As | Method and system for training a computer classification system |
DE19838813A1 (de) * | 1998-08-26 | 2000-03-02 | Siemens Ag | Speichersystem |
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 |
EP1157324A4 (en) | 1998-12-18 | 2009-06-17 | Triconex Corp | PROCESS AND DEVICE FOR PROCESSING CONTROL USING A MULTIPLE REDUNDANT PROCESS 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 | 株式会社東芝 | 半導体記憶装置 |
KR20020001879A (ko) | 1999-05-14 | 2002-01-09 | 가나이 쓰토무 | 반도체 장치, 화상 표시 장치 및 그 제조 방법과 제조 장치 |
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 | 半導体記憶装置 |
US6601126B1 (en) | 2000-01-20 | 2003-07-29 | Palmchip Corporation | Chip-core framework for systems-on-a-chip |
WO2001069411A2 (en) | 2000-03-10 | 2001-09-20 | 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 |
US7325232B2 (en) | 2001-01-25 | 2008-01-29 | 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 |
US6385071B1 (en) * | 2001-05-21 | 2002-05-07 | International Business Machines Corporation | Redundant scheme for CAMRAM memory array |
JP2003092364A (ja) * | 2001-05-21 | 2003-03-28 | Mitsubishi Electric Corp | 半導体記憶装置 |
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 |
JP4061272B2 (ja) | 2002-01-09 | 2008-03-12 | 株式会社ルネサステクノロジ | メモリシステム及びメモリカード |
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 |
GB2417586B (en) | 2002-07-19 | 2007-03-28 | 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 | 株式会社リコー | 投射光学系、拡大投射光学系、拡大投射装置及び画像投射装置 |
US7194568B2 (en) | 2003-03-21 | 2007-03-20 | Cisco Technology, Inc. | System and method for dynamic mirror-bank addressing |
CN1823392A (zh) * | 2003-07-15 | 2006-08-23 | 尔必达存储器株式会社 | 半导体存储器件 |
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 | 삼성전자주식회사 | 멀티-포트 메모리 장치, 멀티-포트 메모리 장치를 포함하는멀티-프로세서 시스템, 및 멀티-프로세서 시스템의 데이터전달 방법 |
JP2008010082A (ja) * | 2006-06-29 | 2008-01-17 | Nec Electronics Corp | 不揮発性半導体記憶装置及びワード線駆動方法 |
KR20090031783A (ko) * | 2006-07-14 | 2009-03-27 | 인터디지탈 테크날러지 코포레이션 | 심볼 레이트 하드웨어 가속기 |
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 | エルピーダメモリ株式会社 | ルックアップテーブルカスケード回路、ルックアップテーブルカスケードアレイ回路及びそのパイプライン制御方法 |
US7912808B2 (en) | 2006-12-08 | 2011-03-22 | Pandya Ashish A | 100Gbps security and search architecture using programmable intelligent search memory that uses a power down mode |
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 |
CN101681673B (zh) * | 2007-05-25 | 2013-08-21 | 马维尔国际贸易有限公司 | 用于nor型存储器阵列的树型位线译码器结构 |
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 |
JP2009205258A (ja) | 2008-02-26 | 2009-09-10 | Toshiba Corp | 半導体集積回路 |
KR20090095955A (ko) | 2008-03-07 | 2009-09-10 | 삼성전자주식회사 | 불휘발성 메모리의 공유 구조에서 다이렉트 억세스 기능을제공하는 멀티포트 반도체 메모리 장치 및 그를 채용한멀티 프로세서 시스템 |
WO2009137157A1 (en) | 2008-03-31 | 2009-11-12 | Rambus Inc. | 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 | 具快閃記憶體測試功能的控制器及其儲存系統與測試方法 |
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 |
US9218852B2 (en) * | 2011-06-30 | 2015-12-22 | 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 |
US9195589B2 (en) * | 2011-12-27 | 2015-11-24 | 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 |
WO2013177316A2 (en) | 2012-05-22 | 2013-11-28 | Xockets IP, LLC | 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 |
WO2014085975A1 (zh) | 2012-12-04 | 2014-06-12 | 中国科学院半导体研究所 | 可动态重构的多级并行单指令多数据阵列处理系统 |
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 |
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 |
WO2015188275A1 (en) | 2014-06-10 | 2015-12-17 | Sightline Innovation Inc. | System and method for network based application development and implementation |
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 | 삼성전자주식회사 | 어드레스 리매핑된 메모리 칩, 이를 포함하는 메모리 모듈 및 메모리 시스템 |
US11125880B2 (en) * | 2014-12-09 | 2021-09-21 | Basf Se | Optical detector |
US10445641B2 (en) | 2015-02-06 | 2019-10-15 | Deepmind Technologies Limited | Distributed training of reinforcement learning systems |
FR3032814B1 (fr) | 2015-02-18 | 2018-02-02 | Upmem | Circuit dram muni d'un processeur integre |
US20160260024A1 (en) * | 2015-03-04 | 2016-09-08 | Qualcomm Incorporated | System of distributed planning |
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 |
KR101814577B1 (ko) | 2015-10-16 | 2018-01-03 | 삼성전자주식회사 | 프로세싱-인-메모리를 이용한 명령어 처리 방법 및 그 장치 |
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 |
US10114795B2 (en) | 2016-12-30 | 2018-10-30 | Western Digital Technologies, Inc. | Processor in non-volatile storage memory |
US11062203B2 (en) | 2016-12-30 | 2021-07-13 | Intel Corporation | Neuromorphic computer with reconfigurable memory mapping for various neural network topologies |
US10417364B2 (en) | 2017-01-04 | 2019-09-17 | Stmicroelectronics International N.V. | Tool to create a reconfigurable interconnect framework |
US11397687B2 (en) * | 2017-01-25 | 2022-07-26 | Samsung Electronics Co., Ltd. | Flash-integrated high bandwidth memory appliance |
US11663450B2 (en) | 2017-02-28 | 2023-05-30 | Microsoft Technology Licensing, Llc | Neural network processing with chained instructions |
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 |
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 |
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) |
-
2018
- 2018-07-30 CN CN202111072866.XA patent/CN113918481A/zh active Pending
- 2018-07-30 CN CN201880062664.7A patent/CN111149166B/zh active Active
- 2018-07-30 TW TW111132554A patent/TW202301125A/zh unknown
- 2018-07-30 TW TW107126383A patent/TWI779069B/zh active
- 2018-07-30 KR KR1020207006169A patent/KR20200047551A/ko not_active Application Discontinuation
- 2018-07-30 EP EP23151586.7A patent/EP4187539A1/en active Pending
- 2018-07-30 WO PCT/IB2018/000995 patent/WO2019025864A2/en unknown
- 2018-07-30 JP JP2020505784A patent/JP7242634B2/ja active Active
- 2018-07-30 EP EP18841178.9A patent/EP3662474B1/en active Active
-
2019
- 2019-07-16 US US16/512,551 patent/US10664438B2/en active Active
- 2019-07-16 US US16/512,590 patent/US10762034B2/en active Active
- 2019-07-16 US US16/512,613 patent/US11023336B2/en active Active
- 2019-07-16 US US16/512,622 patent/US11126511B2/en active Active
- 2019-07-16 US US16/512,546 patent/US11269743B2/en active Active
- 2019-07-16 US US16/512,562 patent/US10885951B2/en active Active
-
2020
- 2020-12-04 US US17/112,817 patent/US11301340B2/en active Active
-
2021
- 2021-08-09 US US17/397,061 patent/US11914487B2/en active Active
-
2022
- 2022-02-04 US US17/649,975 patent/US20220156161A1/en not_active Abandoned
-
2024
- 2024-01-08 US US18/406,346 patent/US20240143457A1/en active Pending
Patent Citations (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5014235A (en) * | 1987-12-15 | 1991-05-07 | Steven G. Morton | Convolution memory |
US5822608A (en) * | 1990-11-13 | 1998-10-13 | International Business Machines Corporation | Associative parallel processing system |
US5345552A (en) * | 1992-11-12 | 1994-09-06 | Marquette Electronics, Inc. | Control for computer windowing display |
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 |
US5959929A (en) * | 1997-12-29 | 1999-09-28 | Micron Technology, Inc. | Method for writing to multiple banks of a memory device |
US6173356B1 (en) * | 1998-02-20 | 2001-01-09 | Silicon Aquarius, Inc. | Multi-port DRAM with integrated SRAM and systems and methods using the same |
US6366989B1 (en) * | 1998-09-17 | 2002-04-02 | Sun Microsystems, Inc. | Programmable memory controller |
US20010024384A1 (en) * | 1999-12-27 | 2001-09-27 | Kazutami Arimoto | Semiconductor memory device capable of reliably performing burn-in test at wafer level |
US20040181503A1 (en) * | 2003-03-13 | 2004-09-16 | Motorola, Inc. | Information storage and retrieval method and apparatus |
US20070276977A1 (en) * | 2006-05-24 | 2007-11-29 | International Business Machines Corporation | Systems and methods for providing memory modules with multiple hub devices |
CN101657802A (zh) * | 2006-12-06 | 2010-02-24 | 弗森多系统公司(dba弗森-艾奥) | 用于远程直接存储器存取固态存储设备的装置、系统及方法 |
US20090196102A1 (en) * | 2008-02-04 | 2009-08-06 | Mosaid Technologies Incorporated | Flexible memory operations in nand flash devices |
JP2009211780A (ja) * | 2008-03-05 | 2009-09-17 | Nec Corp | アドレスエラー検出装置、アドレスエラー検出方法 |
CN102449701A (zh) * | 2009-04-08 | 2012-05-09 | 桑迪士克3D有限责任公司 | 具有垂直位线的可重编程非易失性存储器元件的三维阵列 |
US20140143470A1 (en) * | 2012-11-21 | 2014-05-22 | Coherent Logix, Incorporated | Processing System With Interspersed Processors DMA-FIFO |
CN105431831A (zh) * | 2014-02-17 | 2016-03-23 | 联发科技股份有限公司 | 数据存取方法和利用相同方法的数据存取装置 |
US20170372799A1 (en) * | 2015-04-30 | 2017-12-28 | Hewlett Packard Enterprise Development Lp | Memory module error tracking |
US20170194045A1 (en) * | 2015-12-30 | 2017-07-06 | Samsung Electronics Co., Ltd. | Semiconductor memory devices and memory systems including the same |
CN113918481A (zh) * | 2017-07-30 | 2022-01-11 | 纽罗布拉德有限公司 | 一种存储器芯片 |
CN112912856A (zh) * | 2018-09-06 | 2021-06-04 | 纽罗布拉德有限公司 | 基于存储器的处理器 |
CN111047026A (zh) * | 2018-10-11 | 2020-04-21 | 力晶科技股份有限公司 | 可执行人工智能运算的存储器芯片及其操作方法 |
Non-Patent Citations (2)
Title |
---|
SATISH REDDY N等: "ASIC Implementation of High Speed Pipelined DDR SDRAM Controller", 《ICICES2014 - S.A.ENGINEERING COLLEGE, CHENNAI, TAMIL NADU, INDIA》, pages 1 - 5 * |
辛杰锋: "闪速存储系统中纠错编码技术研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》, pages 137 - 82 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111600204A (zh) * | 2020-06-05 | 2020-08-28 | 杭州交联电力设计股份有限公司 | 一种单组电气设备的自动排布方法 |
CN111600204B (zh) * | 2020-06-05 | 2022-03-18 | 杭州交联电力设计股份有限公司 | 一种单组电气设备的自动排布方法 |
CN112256409A (zh) * | 2020-09-15 | 2021-01-22 | 中科驭数(北京)科技有限公司 | 基于多个数据库加速器的任务执行方法及装置 |
CN112256409B (zh) * | 2020-09-15 | 2022-03-04 | 中科驭数(北京)科技有限公司 | 基于多个数据库加速器的任务执行方法及装置 |
CN113254392A (zh) * | 2021-07-12 | 2021-08-13 | 深圳比特微电子科技有限公司 | 用于片上系统的数据存储方法和基于片上系统的设备 |
CN115237036A (zh) * | 2022-09-22 | 2022-10-25 | 之江实验室 | 一种针对晶圆级处理器系统的全数字化管理装置 |
CN115237036B (zh) * | 2022-09-22 | 2023-01-10 | 之江实验室 | 一种针对晶圆级处理器系统的全数字化管理装置 |
Also Published As
Publication number | Publication date |
---|---|
US11023336B2 (en) | 2021-06-01 |
TW201923586A (zh) | 2019-06-16 |
TWI779069B (zh) | 2022-10-01 |
US11914487B2 (en) | 2024-02-27 |
US20190340064A1 (en) | 2019-11-07 |
US20190340153A1 (en) | 2019-11-07 |
US20240143457A1 (en) | 2024-05-02 |
US10762034B2 (en) | 2020-09-01 |
US20190341088A1 (en) | 2019-11-07 |
CN111149166B (zh) | 2024-01-09 |
US20190341091A1 (en) | 2019-11-07 |
US20210090617A1 (en) | 2021-03-25 |
TW202301125A (zh) | 2023-01-01 |
JP7242634B2 (ja) | 2023-03-20 |
US11301340B2 (en) | 2022-04-12 |
US11126511B2 (en) | 2021-09-21 |
JP2020529676A (ja) | 2020-10-08 |
KR20200047551A (ko) | 2020-05-07 |
US20190339981A1 (en) | 2019-11-07 |
EP3662474A4 (en) | 2021-07-07 |
EP4187539A1 (en) | 2023-05-31 |
US20220156161A1 (en) | 2022-05-19 |
WO2019025864A2 (en) | 2019-02-07 |
CN113918481A (zh) | 2022-01-11 |
EP3662474B1 (en) | 2023-02-22 |
US10664438B2 (en) | 2020-05-26 |
WO2019025864A3 (en) | 2019-03-21 |
EP3662474A2 (en) | 2020-06-10 |
US20210365334A1 (en) | 2021-11-25 |
US10885951B2 (en) | 2021-01-05 |
US11269743B2 (en) | 2022-03-08 |
US20190339980A1 (en) | 2019-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111149166B (zh) | 基于存储器的分布式处理器架构 | |
US11817167B2 (en) | Variable word length access | |
WO2021028723A2 (en) | Memory-based processors | |
EP3847553A2 (en) | Memory-based processors | |
US20220164284A1 (en) | In-memory zero value detection |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |