CN116126285A - 计算装置和操作计算装置的方法 - Google Patents
计算装置和操作计算装置的方法 Download PDFInfo
- Publication number
- CN116126285A CN116126285A CN202210523606.8A CN202210523606A CN116126285A CN 116126285 A CN116126285 A CN 116126285A CN 202210523606 A CN202210523606 A CN 202210523606A CN 116126285 A CN116126285 A CN 116126285A
- Authority
- CN
- China
- Prior art keywords
- input
- line
- output
- pulse
- lines
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/62—Performing operations exclusively by counting total number of pulses ; Multiplication, division or derived operations using combined denominational and incremental processing by counters, i.e. without column shift
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/491—Computations with decimal numbers radix 12 or 20.
- G06F7/498—Computations with decimal numbers radix 12 or 20. using counter-type accumulators
- G06F7/4981—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/607—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers number-of-ones counters, i.e. devices for counting the number of input lines set to ONE among a plurality of input lines, also called bit counters or parallel counters
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30029—Logical and Boolean instructions, e.g. XOR, NOT
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K21/00—Details of pulse counters or frequency dividers
- H03K21/08—Output circuits
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K3/00—Circuits for generating electric pulses; Monostable, bistable or multistable circuits
- H03K3/02—Generators characterised by the type of circuit or by the means used for producing pulses
- H03K3/027—Generators characterised by the type of circuit or by the means used for producing pulses by the use of logic circuits, with internal or external positive feedback
- H03K3/037—Bistable circuits
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
- G06F2207/4818—Threshold devices
- G06F2207/4824—Neural networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Electronic Switches (AREA)
- Control By Computers (AREA)
- Logic Circuits (AREA)
- Complex Calculations (AREA)
Abstract
提供一种计算装置和操作计算装置的方法。所述计算装置包括:多条输入线,脉冲基于对应输入信号以顺序方式选择性地输入到所述多条输入线;多条输出线,与输入线交叉;多个元件,每个元件被布置在对应输入线与对应输出线之间的交叉点处,以响应于对应权重是第一值,将输入到对应的输入线的脉冲传送到对应输出线;和多个脉冲计数器,每个脉冲计数器对从对应输出线输出的脉冲的数量进行计数。
Description
本申请要求于2021年11月15日在韩国知识产权局提交的第10-2021-0156660号韩国专利申请的权益,所述韩国专利申请的全部公开出于所有目的通过引用包含于此。
技术领域
下面描述涉及用于执行基于数字脉冲的交叉开关操作(crossbar operation)的计算装置和操作计算装置的方法。
背景技术
向量矩阵乘法运算或乘法累加(MAC)运算可影响各种领域中的应用的性能。例如,可针对包括多个层的神经网络的机器学习和认证执行MAC运算。输入信号可形成输入向量,并且可以是图像、字节流或其他数据集的数据。可将输入信号乘以权重,并且可从累加的MAC运算结果获得输出向量。然后可提供输出向量作为后续层的输入向量。针对多个层迭代MAC运算,并且因此神经网络的处理性能可依赖于MAC运算的性能。
发明内容
提供本发明内容来以简化的形式介绍在下面的具体实施方式中进一步描述的构思的选择。本发明内容不意在确认要求权利的主题的关键特征或必要特征,也不意在用于帮助确定要求权利的主题的范围。
在一个总体方面,一种计算装置包括:多条输入线,脉冲基于对应输入信号以顺序方式选择性地被输入到所述多条输入线;多条输出线,与输入线交叉;多个元件,每个元件被布置在对应输入线与对应输出线之间的交叉点处,并且被配置为:响应于对应权重是第一值,将输入到对应输入线的脉冲发送到对应输出线;和多个脉冲计数器,每个脉冲计数器被配置为:对从对应输出线输出的脉冲的数量进行计数。
响应于输入信号是第一值,脉冲可被输入到输入线中的一条或多条,并且响应于输入信号是第二值,脉冲可不被输入到输入线中的一条或多条。
元件中的每个可以是二极管。
计算装置还可包括多个第二元件,第二元件中的每个被配置为:将传送到对应输出线的脉冲传送到地。
元件中的每个可以是晶体管。每个晶体管的一端可被连接到对应的输入线,另一端可被连接到对应的输出线,并且栅极端可被连接到与对应的输入线对应的选择线。当脉冲基于输入信号选择性地被输入时,选择信号可被输入到选择线。
选择信号可以是具有大于输入到相应输入线的脉冲的宽度的宽度的第二脉冲。
脉冲计数器中的每个可在脉冲选择性地被输入到输入线的整个周期期间对从对应输出线传送的脉冲的数量进行计数。
基于输入到输入线的输入信号与元件的权重之间的二进制与运算的乘法累加(MAC)运算的结果可基于从脉冲计数器输出的值来确定。
元件中的每个可包括:第一晶体管,具有连接到对应输入线的第一端和连接到第二晶体管的第二端的另一第一端,以及连接到与输入线对应的选择线的第一栅极端;和第二晶体管,具有连接到第一晶体管的所述另一第一端的第二端和连接到对应输出线的另一第二端,以及连接到对应第一存储器装置的第二栅极端。第一存储器装置可存储对应权重。响应于存储在第一存储器装置中的权重是第一值,第二晶体管可使第二端和所述另一第二端短路。响应于权重是第二值,第二晶体管可使第二端和所述另一第二端开路。
元件中的每个可以是存储器装置,存储器装置具有:连接到对应输入线的一端和连接到对应输出线的另一端,以及连接到与输入线对应的选择线的控制栅端和被配置为存储对应权重的浮栅端。响应于权重是第一值,存储器装置可使一端和所述另一端短路。响应于权重是第二值,存储器装置可使所述一端和所述另一端开路。
元件中的每个可包括:晶体管,具有连接到对应输入线的第一端和连接到电阻式存储器的第二端的另一第一端,以及连接到与输入线对应的选择线的第一栅极端;和电阻式存储器,具有连接到晶体管的所述另一第一端的第二端和连接到相应输出线的另一第二端,并且被配置为:具有与对应权重对应的电阻值。响应于权重是第一值,电阻式存储器可具有第一电阻值。响应于权重是第二值,电阻式存储器可具有大于第一电阻值的第二电阻值。布置在对应输出线与地之间的参考电阻器中的每个可具有第一电阻值与第二电阻值之间的参考电阻值。
计算装置还可包括:多条第二输入线,脉冲基于输入信号的相反信号以顺序方式选择性地被输入到所述多条第二输入线;和多个互补元件,各自响应于权重的相反值是第一值,被布置在对应第二输入线与对应输出线之间的交叉点处,并且被配置为:将输入到对应第二输入线的脉冲传送到对应输出线。元件中的每个和互补元件中的每个可具有对应栅极端,与对应输入线对应的选择线被连接到对应栅极端。当脉冲基于输入信号选择性地被输入时,选择信号可被输入到对应选择线。
基于输入到输入线的输入信号与元件的权重之间的二进制异或非(XNOR)运算的MAC运算的结果可基于从脉冲计数器输出的值来确定。
响应于输入信号是n位输入信号,输入线中的每条可根据输入信号在2n个周期期间选择性地接收一个或多个脉冲。
响应于输入信号是多位输入信号,输入线中的每条可根据与输入信号中的相同数字对应的值选择性地顺序地接收脉冲,并且脉冲计数器中的每个可基于输入信号中的与从对应输出线输出的脉冲对应的数字,将从对应输出线传送的脉冲施加到多位输出信号中的对应数字。
响应于权重是n位权重,元件可被布置在与权重对应的n条输出线中并且被布置在输入线中,并且被配置为:基于权重来选择性地将输入到输入线的脉冲传送到n条输出线中的一条或多条。输出信号可通过将基于所述n条输出线的位置的不同权重施加到从分别布置在所述n条输出线中的脉冲计数器输出的值来确定。
响应于输入信号是第二值,输入信号被跳过。
在输入到输入线的输入信号中,两个或更多个输入信号可同时被输入到对应输入线,针对所述两个或更多个输入信号,脉冲将由元件中的一个或多个传送到的输出线不重叠。
在另一个总体方面,一种操作计算装置的方法包括:根据输入信号以顺序方式选择性地将脉冲输入到多条输入线;和通过各自被布置在对应输出线中的多个脉冲计数器,来对通过各自被布置在对应输入线与相应输出线之间的交叉点处的多个元件传送到对应输出线的脉冲的数量进行计数。输入线可与输出线交叉。响应于对应权重是第一值,元件中的每个可将输入到对应输入线的脉冲传送到对应输出线。
选择性地输入脉冲的步骤包括:响应于输入信号是第一值,将脉冲输入到输入线,和响应于输入信号是第二值,不将脉冲输入到输入线。
在另一个总体方面,一种计算装置包括:交叉开关阵列,包括输入线和输出线,输出线在多个交叉点处与输入线交叉;和多个元件,每个元件被布置在交叉点中的一个交叉点处,并且被配置为:仅当与相应交叉点相关联的权重是第一值时,将施加到与相应交叉点对应的输入线的脉冲传送到与相应交叉点对应的输出线。
沿公共输入线布置的元件可被配置为:基于输入信号选择性地接收输入脉冲。
输入信号可以是二进制信号,并且沿着公共输入线布置的元件可被配置为:在二进制信号是1的情况下接收输入脉冲。
计算装置可包括多个脉冲计数器,并且每个脉冲计数器被连接到相应输出线并且被配置为:对从相应输出线输出的脉冲的数量进行计数。
根据下面详细描述、附图和权利要求,其他特征和方面将是显而易见的。
附图说明
图1示出存储器内计算电路的示例。
图2示出包括二极管的计算装置的操作的示例。
图3示出包括晶体管的计算装置的操作的示例。
图4示出脉冲计数器的示例。
图5示出操作计算装置的方法的示例。
图6示出计算装置的操作的示例,在计算装置中,每个元件包括两个晶体管和存储器装置。
图7示出包括闪存的计算装置的操作的示例。
图8示出计算装置的操作的示例,在计算装置中,每个元件包括晶体管和电阻式存储器。
图9示出执行异或非(XNOR)逐位运算的计算装置的操作的示例。
图10、图11、图12和图13示出执行多位运算的计算装置的操作的示例。
图14示出操作计算装置的方法的示例。
在整个附图和具体实施方式中,除非另有描述或提供,否则相同的附图标记将被理解为指代相同的元件、特征和结构。为了清楚、示出和方便,附图可不按比例,并且可夸大附图中的元件的相对大小、比例和描绘。
具体实施方式
提供下面的具体实施方式以帮助读者获得对在此描述的方法、设备和/或系统的全面理解。然而,在理解本申请的公开之后,在此描述的方法、设备和/或系统的各种改变、修改和等同物将是清楚的。例如,在此描述的操作顺序仅是示例,并不限于在此阐述的那些顺序,而是除了必须以特定次序发生的操作之外,可如在理解本申请的公开之后将是清楚的那样被改变。
这里描述的特征可以以不同的形式体现,并不一定被解释为局限于这里所描述的示例。相比之下,提供这里描述的示例仅仅是为了说明在理解本申请的公开内容之后将是显而易见的实现这里描述的方法、设备和/或系统的许多可能方式中的一些。
在此使用的术语仅为了描述特定示例的目的,而将不用于限制公开。如在此使用的,除非上下文另有清楚地指示,否则单数形式也旨在包括复数形式。术语“包括”、“包含”和“具有”指定存在陈述的特征、数量、操作、构件、元件和/或它们的组合,但不排除存在或添加一个或多个其他特征、数量、操作、构件、元件和/或它们的组合。
在整个说明书中,当元件被描述为“连接到”或“结合到”另一元件时,元件可直接“连接到”或“结合到”另一元件,或者可存在介于其间的一个或多个其他元件。相比之下,当元件被描述为“直接连接到”或“直接结合到”另一元件时,不存在介于其间的其他元件。
尽管可在这里使用诸如“第一”、“第二”和“第三”的术语来描述各种构件、组件、区域、层或部分,但是这些构件、组件、区域、层或部分不受这些术语的限制。相反,这些术语仅用于将一个构件、组件、区域、层或部分与另一构件、组件、区域、层或部分区分开。因此,在不脱离示例的教导的情况下,在此描述的示例中所称的第一构件、第一组件、第一区域、第一层或第一部分也可被称为第二构件、第二组件、第二区域、第二层或第二部分。
除非另外定义,否则在此使用的所有术语(包括技术术语或科学术语)具有与本公开所属领域的普通技术人员通常理解的含义和基于本申请的公开理解的含义相同的含义。除非在此明确地如此定义,否则术语(诸如,在通用词典中定义的术语)应被解释为具有与它们在相关领域的上下文和本申请的公开中的含义一致的含义,并且不应以理想化或过于形式化的含义进行解释。
此外,在示例实施例的描述中,当认为公知的相关结构或功能的描述会引起对本公开的模糊解释时,将省略对这样的公知的相关结构或功能的详细描述。在下文中,将参照附图详细描述示例,并且附图中的相同附图标记始终表示相同的元件。
图1示出存储器内计算电路的示例。
在图1的示例中,示出神经网络110和存储器内计算电路(或简单地,IMC电路)120。
在一个示例中,计算装置可通过存储器内计算来处理神经网络110。存储器内计算可与使用被添加计算功能的存储器执行的操作对应。计算装置可包括使用存储器内计算的硬件加速器。神经网络110可包括各自包括多个节点的一个或多个层。层的多个节点可通过可被设置权重的连接线连接到另一层的多个节点。例如,可基于从连接到一个节点的前一层的其他节点传播的输入值i1、i2、i3和i4以及基于节点的连接线的权重w11、w21、w31和w41来确定节点的输出o1。例如,L个输出值中的第I个输出Ol可由下面的等式1表示。在这个示例中,L表示大于或等于1的整数,l表示大于或等于1且小于或等于L的整数。
等式1:
ol=∑ikwkl
在等式1中,ik表示P个输入中的第k个输入,Wkl表示设置在第k个输入与第l个输出之间的权重。P表示大于或等于1的整数,k表示大于或等于1且小于或等于P的整数。也就是说,神经网络110中的节点之间的输入和输出可被表示为输入与权重之间的加权和。加权和可对应于多个输入与多个权重之间的乘法和迭代加法,并且还可被称为乘法累加(MAC)运算。执行MAC运算的计算装置可被称为乘法器累加器或MAC单元,并且其中执行MAC运算的电路可被称为MAC电路。其中执行MAC运算的电路也可被称为存储器内计算电路(例如,存储器内计算电路120),因为MAC运算使用被添加计算功能的存储器来执行。此外,执行MAC运算的装置或电路可被简称为计算装置。
图1中示出的存储器内计算电路120可以是被配置为基于数字脉冲执行MAC运算的交叉开关MAC运算器。存储器内计算电路120可包括多条行线121、多个元件123和多条列线125。这里使用的元件(例如,元件123)也可被称为装置(或称为器件)。
行线121可顺序地接收输入信号。输入信号可以是具有0或1的二进制信号。例如,在输入信号IN_1为1(或“高”)的情况下,可在与输入信号IN_1对应的第一周期中将脉冲输入到第一行线。当输入信号IN_2为0(或“低”)时,可在与输入信号IN_2对应的第二周期中不将脉冲输入到第二行线。为了便于描述,行线121在这里也可被称为多条输入线。
在一个示例中,可将输入信号顺序地输入到行线121,并且这可以是为了防止基于两个或更多个输入信号的脉冲在同一列线中冲突。当在同一列线中不发生这种冲突时,可将基于两个或更多个输入信号的脉冲同时输入到行线。在图1的示例中,即使当输入信号IN_2和输入信号IN_3中的每个为1,并且基于这些输入信号的脉冲被分别输入到第二行线和第三行线时,因为布置在各条行线中的元件彼此交叉地被布置,所以输入信号IN_2和输入信号IN_3可被同时输入到对应的行线。当减小神经网络110的尺寸时,可更多地应用其中在列线中不发生冲突的情况,以减少针对计算所执行的周期。
在另一示例中,当第n输入信号为0并且第n+1输入信号为1时,可在与第n输入信号对应的第n周期中不将脉冲输入到第n行线。替代地,可跳过第n输入信号,并且可将与第n+1输入信号对应的脉冲输入到第n+1行线。如描述的,跳过为0的输入信号并且输入后续输入信号可减少用于执行计算的整个周期。
元件123可各自被布置在对应行线与对应列线之间的交叉点处。权重可以是具有0或1的二进制信号。例如,元件123可各自基于对应权重被布置或不被布置在对应行线和对应列线之间的交叉点处。例如,具有权重1的元件可被布置在对应行线和对应列线之间的交叉点处,并且将输入到行线的脉冲传送到列线。相比之下,具有权重0的元件可不被布置在对应行线与对应列线之间的交叉点处,并且即使脉冲被输入到行线,也可不将脉冲传送到列线。
在图1的示例中,与第一行线和第一列线对应的权重(1,1)可以是1,并且元件可被布置在第一行线与第一列线之间的交叉点处。因此,可根据输入信号IN_1将输入到第一行线的脉冲传送到第一列线。相比之下,与第一行线和第三列线对应的权重(1,3)可以是0,并且元件可不被布置在第一行线与第三列线之间的交叉点处。因此,输入到第一行线的脉冲可不根据输入信号IN_1传送到第三列线。
元件123可各自被称为包括MAC运算功能的存储器单元或位单元,并且包括例如二极管、晶体管(例如,金属氧化物半导体场效应晶体管(MOSFET)、存储器装置(例如,静态随机存取存储器(SRAM))和电阻式存储器中的至少一个,这将参照附图对进行详细描述。
列线125可与行线121交叉,列线125中的每条可通过对应的元件输出从对应的输入线传送的脉冲。为了便于描述,列线125在这里也可被称为多条输出线。在元件123中,沿着相同行线布置的元件可接收相同的输入信号,并且沿着相同列线布置的元件可传送用于相同输出的脉冲。
读出单元127可通过对从列线125中的每条输出的脉冲的数量进行计数来确定MAC运算的结果。从每条列线输出的脉冲可被传送到连接到每条列线的脉冲计数器,并且由此从每条列线输出的脉冲的数量可被计数。
考虑到元件123,图1中示出的存储器内计算电路120可执行由等式2表示的下面MAC运算。
等式2:
可通过对存储器内计算电路120中包括的每个元件中的每个位数字执行乘法运算来实现基于数字脉冲的交叉开关二进制MAC运算器。通过经由脉冲计数器对从每条列线输出的脉冲的数量进行计数,可减小读出单元127的面积和功耗,并且因此可最小化存储器内计算电路120的面积。在没有模拟转换的情况下,可不存在模数再转换,并且因此可不需要要求大面积和功率的模数转换器(ADC)。因此,它可免于可在模拟操作中不可避免地出现的噪声。交叉开关阵列可包括行线121、元件123和列线125,并且阵列面积可被最小化。此外,可将对应的输入信号顺序地施加到行线121,并且它可不需要同时接收输入信号。因此,输入信号的路由可被简化,并且用于输入信号的附加存储空间可以不是必需的。
图2示出包括二极管的计算装置的操作的示例。
参照图2,图1的元件123中的每个可包括二极管,并且每个二极管可将施加到对应的输入线的脉冲传送到对应的输出线。
当神经网络是固定的时,每个元件可被实现为二极管。二极管的存在或不存在可表示对应的权重值1或0。基于二极管的存在或不存在,可执行输入到对应的输入线的输入信号与对应于二极管的存在或不存在的权重之间的与(AND)运算。每个二极管可物理地连接对应的输入线和对应的输出线。在未布置二极管的交叉点处,对应的输入线和对应的输出线可不物理地连接。因此,神经网络可通过硬件(例如,二极管)被物理地固定。
在图2示出的交叉开关阵列中执行的操作可由上面的等式2表示。例如,当输入二进制输入信号{1,0,1,1,1}210时,可在图2中示出的交叉开关阵列中执行由等式3表示的下面操作。
等式3:
输入信号{1,0,1,1,1}210可被顺序地输入到输入线以防止输出线中的冲突。例如,基于为1的第一输入信号的脉冲可在第一周期中被输入到第一输入线,并且基于为0的第二输入信号的脉冲可在第二周期中不被输入到第二输入线。
如上所述,为了减少执行计算的整个周期,可跳过为0的第二输入信号,并且可在第二周期中将基于为1的第三输入信号的脉冲输入到第三输入线。然而,示例不限于此。此外,基于二极管的布置,即使当基于为1的第三输入信号的脉冲和基于为1的第四输入信号的脉冲分别同时被输入到第三输入线和第四输入线时,脉冲也不会在输出线中冲突。因此,基于第三输入信号的脉冲和基于第四输入信号的脉冲可同时被输入到对应的输入线,并且整个计算周期因此可被减少。然而,示例不限于此。
在整个周期期间,可基于输入信号{1,0,1,1,1}210将脉冲顺序输入或不输入到对应的输入线,并且从第一输出线输出的脉冲的数量可以是三个。基于此,输出信号220的第一元件可被确定为3。类似地,可基于从剩余输出线输出的脉冲的数量来确定输出信号220的剩余元件。输入信号与权重之间的AND乘法运算的结果可由输出到输出线的脉冲的数量表示。
二极管连接可从低被上拉到高。然而,当输入为低时,输出可以是浮动的。为了防止这样,下拉电阻器230可被连接到每条输出线。例如,当在第一周期的初始部分将脉冲输入到第一输入线时,由于二极管的特性,输出线可从低被上拉到高。即使当输入线在第一周期的后期从高变为低时,由于二极管的特性,输出线也不会从高变为低。在这种情况下,输出线中的高可通过下拉电阻器230传送到地,并且输出线可从高被下拉到低。通过下拉电阻器230,可在随后的周期开始之前(例如,周期的后面部分)将输出线的状态设置为低,因此交叉开关阵列可实现操作稳定性。
在另一示例中,下拉电阻器230可用下拉晶体管代替。在这个示例中,每个下拉晶体管的一端(例如,源极端)和另一端(例如,漏极端)中的一个可被连接到对应的输出线,并且另一个可被连接到接地。在其中脉冲被输入或不被输入到对应的输入线的周期的后面部分中,具有高的脉冲可被输入到下拉晶体管的栅极端。当脉冲在周期的后面部分中被输入到栅极端时,下拉晶体管可在周期的后面部分中连接输出线和地,并且因此输出线可从高被下拉到低。
图3示出包括晶体管的计算装置的操作的示例。
参照图3,图1的元件123中的每个可包括晶体管(例如,MOSFET),并且每个晶体管可将施加到对应的输入线的脉冲传送到对应的输出线。可使用晶体管代替上面参照图2描述的二极管。
例如,当神经网络是固定的时,每个元件可被实现为晶体管。晶体管的存在或不存在可表示对应的权重值1或0。基于晶体管的存在或不存在,可执行输入到对应的输入线的输入信号与对应于晶体管的存在或不存在的权重之间的AND运算。每个晶体管可物理地连接对应的输入线和对应的输出线。在未布置晶体管的交叉开关点处,对应的输入线和对应的输出线可不被物理地连接,并且神经网络可通过硬件(例如,晶体管)被物理地固定。
可使用输入到每个晶体管的栅极端的选择信号。每个选择信号可在输入信号被输入的方向上被输入,并且因此可被输入到布置在同一输入线中的一个或多个晶体管的栅极端。在每个晶体管中,源极端可被连接到输入线,并且漏极端可被连接到输出线。
可在输入对应的输入信号的同一周期中施加选择信号。高的选择信号的宽度可大于高的输入信号的宽度。此外,选择信号从高下降到低的时间可在输入信号从高下降到低的时间之后。也就是说,即使在输入信号从高被下拉到低时,晶体管也可连接输入线和输出线,因此输入线可用作地,并且输出线可从高被下拉到低。因此,对于输出线的下拉,可不需要单独的电阻器或晶体管。
图4示出脉冲计数器的示例。
参照图4,示出被配置为对从对应的输出线输出的脉冲的数量进行计数的异步脉冲计数器400。脉冲计数器400可被布置在每条输出线中。
作为n位脉冲计数器的脉冲计数器400可包括n个T触发器。尽管为了便于描述,脉冲计数器400在图4中被示出为包括四个T触发器,但是配置不限于此。
例如,如示出的,对应的输出线可被连接到第一T触发器410,并且输出脉冲可被输入到第一T触发器410的CK端。从对应的输出线输出的脉冲的数量可由从每个T触发器的Q端输出的二进制数表示。例如,当Q0=1、Q1=0、Q2=1并且Q3=0时,二进制数0101可表示从对应的输出线输出的脉冲的数量为5。
图5示出操作计算装置的方法的示例。
以下将参照图5描述的操作可按顺序被执行,但不是必需按顺序被执行。例如,操作的顺序可改变,并且操作中的至少两个可被并行执行。操作(例如,操作510至530)可由这里描述的计算装置的至少一个组件执行。
在操作510中,计算装置可将基于输入信号的脉冲输入或不输入到第n输入线。例如,当输入信号为1时,计算装置可将脉冲输入到第n输入线,并且当输入信号为0时,可不将脉冲输入到第n输入线。在这个示例中,n表示从1开始的整数。
在操作520中,计算装置可确定n是否大于k。k表示可与输入线的数量相同的输入信号的总数。例如,当n不大于k时,n可增加1,并且操作510可再次被执行。通过这些操作,可将基于输入信号的脉冲顺序地输入到输入线,或可不将基于输入信号的脉冲顺序地输入到输入线。
在操作530中,计算装置可确定从每条输出线输出的脉冲的数量。施加到输入线的脉冲可通过布置在输入线与输出线之间的交叉点处的元件传送到对应的输出线,并且传送到输出线的脉冲可通过连接到输出线的脉冲计数器计数。当权重是第一值(例如,1)时,元件可将输入到输入线的脉冲传送到输出线。
图6示出计算装置的操作的示例,在计算装置中,每个元件包括两个晶体管和存储器装置。
参照图6,图1的元件123中的每个可包括两个晶体管(例如,MOSFET)610和620以及存储器装置(例如,SRAM)630。代替上面描述的二极管或晶体管,两个晶体管610和620以及存储器装置630可被包括在布置在对应输入线与对应输出线之间的交叉点处的元件(或器件)中。
每个元件中包括的两个晶体管610和620可被串联连接。两个晶体管610和620可包括第一晶体管610和第二晶体管620。在第一晶体管610中,一端(例如,源极端)可被连接到对应输入线,并且另一端(例如,漏极端)可被连接到第二晶体管620的一端(例如,源极端)。第一晶体管610的栅极端可被连接到对应选择线。对于每条选择线,可在将基于输入信号的脉冲输入或不输入到对应输入线的同一周期中输入选择信号。选择信号可被输入到布置在同一输入线中的多个第一晶体管的栅极端。为高的选择信号的宽度可大于为高的输入信号的高宽度。此外,选择信号从高下降到低的时间可在输入信号从高下降到低的时间之后。由于这种脉冲宽度差,可在没有单独的下拉电阻器或晶体管的情况下将输出线从高下拉到低。
在第一晶体管610中,基于选择信号,两端(例如,源极端和漏极端)可在输入或不输入基于输入信号的脉冲的周期中短路。第一晶体管610的操作可与对应输入信号或对应权重无关。
在第二晶体管620中,一端(例如,源极端)可被连接到第一晶体管610的另一端(例如,漏极端),并且另一端(例如,漏极端)可被连接到对应输出线。第二晶体管620的栅极端可被连接到对应存储器装置630。存储器装置630可存储对应权重。例如,当存储器装置630在其中存储作为第一值(例如,1)的权重时,第二晶体管620可使一端和另一端短路,并且将施加到对应输入线的脉冲传送到对应输出线。相比之下,当存储器装置630在其中存储作为第二值(例如,0)的权重时,第二晶体管620可使一端和另一端开路,并且防止施加到输入线的脉冲被传送到输出线。
与上面参照图2和3描述的示例不同,元件可被布置在输入线与输出线之间的所有交叉点处,并且每个存储器装置可存储对应权重。因此,神经网络可不必是固定的,并且神经网络的权重可被存储在存储器装置中。因此,各种神经网络可被执行。
对于其他的描述,除了被布置在输入线和输出线中的元件的描述(例如,基于输入信号的脉冲顺序地输入或不输入到多条输入线,输出信号通过经由脉冲计数器对从输出线输出的脉冲的数量进行计数来确定等)之外,可参照上面参照图2和图3描述的内容。
尽管为了便于描述,每个存储器装置在图6中被示出为SRAM,但是也可连接到晶体管的栅极端的任何存储器装置可被应用,而没有限制。
图7示出包括闪存的计算装置的操作的示例。
参照图7,图1的元件123中的每个可被代替为第二存储器装置。第二存储器装置可包括例如非易失性闪存。可使用第二存储器装置代替上面描述的二极管或晶体管。第二存储器装置可被布置在输入线与输出线之间的所有交叉点处,并且可基于存储的权重使两端短路或开路。因此,神经网络可不必是固定的,并且神经网络的权重可被存储在各个第二存储器装置中。因此,各种神经网络可被执行。
在第二存储器装置中,一端(例如,源极端)可被连接到对应输入线,另一端(例如,漏极端)可被连接到对应输出线,并且控制栅端可被连接到对应选择线,并且浮栅端(floating gate end)可在其中存储对应权重。
对于每条选择线,可在将基于输入信号的脉冲输入或不输入对应输入线的同一周期中输入选择信号。选择信号可被输入到被布置在同一输入线中的多个第二存储器装置的控制栅端。为高的选择信号的宽度可大于为高的输入信号的宽度。此外,选择信号从高下降到低的时间可在输入信号从高下降到低的时间之后。由于这种脉冲宽度差,可在没有单独的下拉电阻器或晶体管的情况下将输出线从高下拉到低。
当控制栅端存储第一值(例如,1)时,第二存储器装置可使一端和另一端短路以将施加到输入线的脉冲传送到输出线。相比之下,当控制栅端存储第二值(例如,0)时,第二存储器装置可使一端和另一端开路以防止施加到输入线的脉冲被传送到输出线。
对于其他的描述,除了布置在输入线和输出线中的元件的描述(例如,基于输入信号的脉冲顺序地输入或不输入到多条输入线,输出信号通过脉冲计数器对从输出线输出的脉冲的数量进行计数来确定等)之外,可参照上面已经描述的内容,因此为了简洁,这里将省略更详细和重复的描述。
尽管为了便于描述,在图7中将第二存储器装置示出为闪存,但是也可使用具有类似特性的铁电场效应晶体管(FeFET)代替闪存。
图8示出计算装置的操作的示例,在计算装置中,每个元件包括晶体管和电阻式存储器。
参照图8,图1的元件123中的每个可被代替为晶体管(例如,MOSFET)810和电阻式存储器(例如,电阻式随机存取存储器(RRAM))820。代替上述二极管或晶体管,晶体管810和电阻式存储器820可被包括在被布置在对应输入线与对应输出线之间的交叉点处的元件中。
包括在每个元件中的晶体管810和电阻式存储器820可被串联连接。在晶体管810中,一端(例如,源极端)可被连接到对应输入线,并且另一端(例如,漏极端)可被连接到电阻式存储器820的一端,并且栅极端可被连接到对应选择线。对于每条选择线,可在将基于输入信号的脉冲输入或不输入到对应输入线的同一周期中输入选择信号。选择信号可被输入到被布置在同一输入线中的多个晶体管的栅极端。为高的选择信号的宽度可大于为高的输入信号的宽度。此外,选择信号从高下降到低的时间可在输入信号从高下降到低的时间之后。在尽管输入信号从高下降到低,但是选择信号保持为高时,输出线可通过电阻式存储器820从高被下拉到低。还可通过参考电阻器830执行输出线的下拉。
电阻式存储器820可具有根据存储器状态而变化的电阻值。使用这样的特性,对应权重可被表示。例如,电阻式存储器820可在权重是第一值(例如,1)时具有第一电阻值,并且在权重是第二值(例如,0)时具有第二电阻值。第二电阻值可大于第一电阻值。例如,第二电阻值可比第一电阻值大100倍或更大,但不限于此。
参考电阻器830可被连接到每条输出线。在参考电阻器830中,一端可被连接到对应输出线,并且另一端可被连接到地。参考电阻器830可具有固定电阻值,并且固定电阻值可大于第一电阻值并且小于第二电阻值。例如,固定电阻值可比第一电阻值大10倍或更大,或比第二电阻值小1/10倍或更小。
基于参考电阻器830与电阻式存储器820和参考电阻器830的总和之间的电阻比施加到对应输入线的脉冲可被传送或不被传送到对应输出线,其中,RPRAM可表示电阻式存储器820的电阻值,RFIX可表示参考电阻器830的电阻值。例如,如下面的等式4所示,当电阻式存储器820具有第一电阻值RL时,也就是说,当权重是第一值时,电阻比可近似为1,并且施加到对应输入线的脉冲可被传送到对应输出线。
等式4:
相比之下,如等式5所示,当电阻式存储器820具有第二电阻值RH时,也就是说,当权重是第二值时,电阻比可近似为0,并且施加到输入线的脉冲可不被传送到输出线。
等式5:
电阻式存储器820与参考电阻器830之间的电阻比可被用来容易地实现输入信号与权重之间的二进制AND运算。
图9示出执行异或非(XNOR)逐位运算的计算装置的操作的示例。
在图9的示例中,示出用于实现XNOR运算的交叉开关阵列。
在一个示例中,计算装置可对具有正值和负值的范围的输入和权重执行MAC运算。例如,可在交叉开关阵列中包括的元件中执行XNOR运算,并且其真值表可如下面的表1中所示。
表1
在表1中,位值-1可由逻辑值0表示,并且位值1可由逻辑值1表示。位值可表示实际计算的数值,并且逻辑值可表示分配给每个位值的位符号。逻辑值0可指示为L,并且逻辑值1可指示为H。如上面表1中所示,逻辑值之间的XNOR运算的结果可与对应位值之间的乘法的结果对应。交叉开关阵列可通过逐元件乘法运算处理正值和负值的范围内的输入与输出之间的乘法。
尽管为了便于描述,如上面的表1中所示描述了逻辑值0是位值-1,并且逻辑值1是位值1,但是示例不限于此,但根据设计,他们可反之亦然被分配。例如,可将逻辑值1分配给位值-1,并且可将逻辑值0分配给位值1。
对于XNOR运算,可在将基于输入信号(例如,IN_1)的脉冲输入或不输入到输入线930的同一周期中将输入信号(例如,IN_1)的相反信号(例如,IN_1b)输入到第二输入线940。与前面示例不同,输入信号和对应相反信号可在一个周期中分别被输入到输入线930和第二输入线940以实施XNOR运算。当输入信号和相反信号分别被输入到输入线930和第二输入线940时,脉冲可仅被施加到输入线930和第二输入线940中的一个。例如,当输入信号具有第一值(例如,1)时,相反信号可具有第二值(例如,0),并且脉冲可仅被施加到输入线930。相反,当输入信号具有第二值(例如,0)时,相反信号可具有第一值(例如,1),并且脉冲可仅被施加到第二输入线940。
图1的元件123中的每个可被代替为晶体管(例如,MOSFET)。然而,布置晶体管的位置可根据对应重量而变化。例如,当权重是第一值(例如,1)时,晶体管可被布置在对应输入线(例如,输入线930)与对应输出线之间的交叉点处,并且可基于选择信号使两端短路以将施加到输入线930的脉冲传送到输出线。相反,当权重是第二值(例如,0)时,晶体管可被布置在对应第二输入线(例如,第二输入线940)与对应输出线之间的交叉点处,并且可基于选择信号使两端短路以将施加到第二输入线940的脉冲传送到输出线。因此,晶体管可被配置为根据对应权重是互补的。在图9的示例中,位单元910指示权重为1(或位值为1)的情况,并且位单元920指示权重为0(或位值为-1)的情况。
通过连接到每条输出线的脉冲计数器,可对从对应输出线输出的脉冲的数量进行计数。可基于从脉冲计数器输出的值来确定基于输入到多条输入线的输入信号与元件的权重之间的二进制XNOR运算的MAC运算的结果。将脉冲输出到输出线可指示1,并且不输出脉冲可指示-1。每条输出线的MAC运算的结果可通过将从对应输出线输出的脉冲的数量乘以2并从由此获得的结果值减去阵列大小(即,“2x OUT-阵列大小)来确定”。在这个示例中,OUT可表示脉冲计数器的输出。在图9的示例中,从第一输出线输出四个脉冲并且阵列大小为5,并且因此可基于二进制XNOR运算将“2×4-5=3”确定为MAC运算的结果。在图9的示例中执行的整个运算可由等式6表示。
等式6:
为了获得基于二进制XNOR运算的MAC运算的结果,可期望地将对应于输入信号的相反信号输入到交叉开关阵列,因此阵列大小可加倍。
图10至图13示出执行多位运算的计算装置的操作的示例。
上述示例可以是当输入信号和权重是单个位时。在下文中,将参照图11至图13描述多位输入信号和权重的实施。为了便于描述,将参照图10至图12描述多位输入信号的实施,并且将参照图13描述多位权重的实施。然而,根据示例,输入信号和权重两者可被实施为多位。
参照图10,可将温度计码形式的脉冲输入到对应输入线。例如,当输入信号是3位时,它可指示000和111之间的任何一个。在图10的示例中,当第一输入信号是110时,可将其中以温度计码的形式表示作为110的第一输入信号的六个脉冲顺序地输入到对应输入线。例如,当在交叉开关阵列中的元件中使用晶体管时,输入到晶体管的栅极端的选择信号可在输入所有3位的7个周期内保持为高。当选择信号是n位时,选择信号可在2n-1个周期内保持为高。此外,当第二输入信号是011时,可将其中以温度计代的形式表示作为011的第二输入信号的三个脉冲顺序地输入到对应输入线。在一个实施例中,当输入信号是n位输入信号时,输入线中的每条可根据输入信号在2n个周期期间选择性地接收一个或多个脉冲。尽管为了便于描述,在图10中将输入信号示出为3位,但是示例不限于此,并且各种示例可被应用而没有限制。
在示出n位输入信号的图10的示例中,交叉开关阵列的面积可不增加或减小,但是计算周期可增加2n-1(其中,n是自然数)。
图11示出应用输入二进制加权多位的示例。尽管由4位表示的三个输入信号在图11中被示出为输入到输入线,但是示例不限于此。在图11的示例中,仅示出第一输出线,并且为了便于描述,其他剩余的输出线被省略,并且第一输出线的下面描述可被应用于剩余的输出线。此外,在图11的示例中,元件被示出为包括上面参照图3描述的晶体管,但是示例不限于此。
多条输入线中的每条可基于与对应输入信号中的相同数字对应的值而顺序地接收或不接收脉冲。例如,在第一至第三周期1110中,每个输入信号的最高有效数字(MSD)可被顺序地输入到对应输入线。具体地,在第一周期中,可基于为1的第一输入信号的MSD将脉冲输入到第一输入线。在第二周期中,可基于为0的第二输入信号的MSD而不将脉冲输入到第二输入线。在第三周期中,可基于为1的第三输入信号的MSD将脉冲输入到第三输入线。在第四至第六周期1120中,每个输入信号的第二MSD可被顺序地输入到对应输入线。在第七至第九周期1130中,每个输入信号的第三MSD可被顺序地输入到对应输入线。在第十至第12周期1140中,每个输入信号的最低有效数字(LSD)可被顺序地输入到对应输入线。
与前面示例不同,可将与每个输入信号的相同数字对应的值顺序地输入到对应输入线,因此从每条输出线输出的脉冲的数量将如何被反映可改变,这将参照图12进行详细描述。
参照图12,在第一至第三周期1210中,可在第一周期和第三周期中输出第一输出线的脉冲。脉冲可被输入到脉冲计数器的第四T触发器1240的CK端以被施加到输出信号的MSD。在第十至第12周期1220中,可在第12周期中输出第一输出线的脉冲。脉冲可被输入到脉冲计数器的第一T触发器1230的CK端以被施加到输出信号的LSD。类似地,在剩余周期中输出的脉冲可被传送到对应T触发器,与多位输入信号对应的多位输出信号可通过对应T触发器来确定。
在上面参照图11和图12描述的n位输入信号的示例中,尽管交叉开关阵列的面积没有增加或减小,但是计算周期可增加n倍。
参照图13,示出应用权重二进制加权多位的示例。尽管为了便于描述,在图13中将权重示出为4位,但是示例不限于此。此外,为了便于描述,在图13中仅示出与第一输出信号对应的输出线,并且与剩余的输出信号对应的输出线被省略。然而,示例不限于图13中示出的元件。
例如,当权重是n位时,一个权重可由一条输入线和n条输出线的交叉点处的元件表示。例如,当第一输入信号与第一输出信号之间的4位权重是1010时,可在第一输出线的交叉点和第三输出线的交叉点处布置元件,以将施加到第一输入线的脉冲传送到输出线。与第一输出信号对应的第一输出线至第四输出线中的每个可被连接到对应脉冲计数器,并且各个脉冲计数器的输出可被移位相加。通过该移位相加,连接到第一输出线的第一脉冲计数器的输出可被施加到第一输出信号的MSD,并且连接到第四输出线的第四脉冲计数器的输出可被施加到第一输出信号的LSD。同样地,剩余的脉冲计数器的输出可被施加到对应数字。由此,可将权重分配给每条输出线,并且可确定施加了多位权重的多位输出信号。在一个实施例中,可通过对从分别布置在n条输出线中的脉冲计数器输出的值应用基于n条输出线的位置的不同权重来确定输出信号。
在上面参照图13描述的n位权重的示例中,尽管计算周期没有增加或减少,但是交叉开关阵列的面积可增加n倍。
图14示出操作计算装置的方法的示例。
下文将参照图14描述的操作可按顺序次序执行,但不是必需按顺序次序执行。例如,操作的次序可改变,并且可并行执行操作中的至少两个。操作(例如,操作1410和1420)可由这里描述的计算装置的至少一个组件执行。
计算装置可被实现为各种装置中的一个或作为装置的一部分,各种装置包括计算装置(例如,移动电话、智能电话、平板计算机、电子书装置、膝上型计算机、个人计算机(PC)和服务器)、可穿戴装置(例如,智能手表、智能眼镜、头戴式显示器(HDM)和智能服装)、家用电器(例如,智能扬声器、智能电视(TV)和智能冰箱)和其他装置(例如,智能车辆、智能自助服务终端、物联网(IoT)装置、步行辅助装置(WAD)、无人机和机器人)。
在操作1410中,基于对应的输入信号,计算装置可或可不将输入脉冲顺序地输入到多个输入线。
在操作1420中,计算装置可通过分别布置在输出线中的多个脉冲计数器对由多个元件传送到对应输出线的脉冲的数量进行计数,多个元件各自被布置在对应输入线与对应输出线之间的交叉点处。
输入线可与输出线交叉。当对应权重是第一值时,元件可将输入到对应输入线的脉冲传送到对应输出线。
对于操作1410和1420的详细描述,可参照上面参照图1至图13描述的内容。
这里关于图1-图4和图6-图13描述的计算装置以及其他装置、设备、单元、模块和组件由硬件组件实现。可用于执行本申请中描述的操作的硬件组件的示例在适当的情况下包括控制器、传感器、发生器、驱动器、存储器、比较器、算术逻辑单元、加法器、减法器、乘法器、除法器、积分器以及被配置为执行本申请中描述的操作的任何其他电子组件。在其他示例中,执行本申请中描述的操作的硬件组件中的一个或多个由计算硬件(例如,由一个或多个处理器或计算机)实现。处理器或计算机可由一个或多个处理元件(诸如,逻辑门阵列、控制器和算术逻辑单元、数字信号处理器、微计算机、可编程逻辑控制器、现场可编程门阵列、可编程逻辑阵列、微处理器或被配置为以定义的方式响应并执行指令以实现期望结果的任何其他装置或装置的组合)来实现。在一个示例中,处理器或计算机包括或连接到存储由处理器或计算机执行的指令或软件的一个或多个存储器。由处理器或计算机实现的硬件组件可执行指令或软件(诸如,操作系统(OS)和在OS上运行的一个或多个软件应用)以执行本申请中描述的操作。硬件组件还可响应于指令或软件的执行而访问、操纵、处理、创建和存储数据。为简单起见,单数术语“处理器”或“计算机”可用于在本申请中描述的示例的描述中,但是在其他示例中,多个处理器或计算机可被使用,或者处理器或计算机可包括多个处理元件、或多种类型的处理元件、或两者。例如,单个硬件组件、或者两个或更多个硬件组件可由单个处理器、或者两个或更多个处理器、或者处理器和控制器来实现。一个或多个硬件组件可由一个或多个处理器、或者处理器和控制器来实现,并且一个或多个其他硬件组件可由一个或多个其他处理器、或者另外的处理器和另外的控制器来实现。一个或多个处理器、或者处理器和控制器可实现单个硬件组件、或者两个或更多个硬件组件。硬件组件可具有不同的处理配置中的任何一个或多个,不同的处理配置的示例包括:单个处理器、独立处理器、并行处理器、单指令单数据(SISD)多处理、单指令多数据(SIMD)多处理、多指令单数据(MISD)多处理和多指令多数据(MIMD)多处理。
执行本申请中描述的操作的图1-图14中所示的方法由计算硬件(例如,由一个或多个处理器或计算机)执行,计算硬件被实现为如上所述执行指令或软件以执行本申请中描述的由方法执行的操作。例如,单个操作、或者两个或更多个操作可由单个处理器、或者两个或更多个处理器、或者处理器和控制器来执行。一个或多个操作可由一个或多个处理器、或者处理器和控制器来执行,并且一个或多个其他操作可由一个或多个其他处理器、或者另外的处理器和另外的控制器来执行。一个或多个处理器、或者处理器和控制器可执行单个操作、或者两个或更多个操作。
用于控制计算硬件(例如,一个或多个处理器或计算机)以实现硬件组件并执行如上所述的方法的指令或软件可被编写为计算机程序、代码段、指令或它们的任何组合,以单独地或共同地指示或配置一个或多个处理器或计算机作为机器或专用计算机进行操作,以执行由如上所述的硬件组件和方法执行的操作。在一个示例中,指令或软件包括由一个或多个处理器或计算机直接执行的机器代码(诸如,由编译器产生的机器代码)。在另一示例中,指令或软件包括由一个或多个处理器或计算机使用解释器执行的高级代码。可基于附图中示出的框图和流程图以及在说明书中的相应描述使用任何编程语言来编写指令或软件,附图中示出的框图和流程图以及说明书中的相应描述公开了用于执行由如上所述的硬件组件和方法执行的操作的算法。
用于控制计算硬件(例如,一个或多个处理器或计算机)以实现硬件组件并执行如上所述的方法的指令或软件以及任何相关联的数据、数据文件和数据结构可被记录、存储或固定在一个或多个非暂时性计算机可读存储介质中,或者可被记录、存储或固定在一个或多个非暂时性计算机可读存储介质上。非暂时性计算机可读存储介质的示例包括:只读存储器(ROM)、随机存取可编程只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM)、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、非易失性存储器、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-R LTH、BD-RE、蓝光或光盘存储装置、硬盘驱动器(HDD)、固态驱动器(SSD)、闪存、卡式存储器(诸如,多媒体卡或微型卡(例如,安全数字(SD)或极限数字(XD)))、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及任何其他装置,任何其他装置被配置为以非暂时性方式存储指令或软件以及任何相关联的数据、数据文件和数据结构并将指令或软件以及任何相关联的数据、数据文件和数据结构提供给一个或多个处理器或计算机,使得一个或多个处理器或计算机能够执行指令。在一个示例中,指令或软件以及任何相关联的数据、数据文件和数据结构被分布在联网的计算机系统上,使得指令和软件以及任何相关联的数据、数据文件和数据结构以分布式方式被一个或多个处理器或计算机存储、访问和执行。
虽然本公开包括特定示例,但是在理解本申请的公开之后将清楚的是,在不脱离权利要求及其等同物的精神和范围的情况下,可在这些示例中进行形式和细节上的各种改变。在此描述的示例应仅被认为是描述性的,而不是出于限制的目的。每个示例中的特征或方面的描述应被认为可适用于其他示例中的类似特征或方面。如果描述的技术以不同的顺序被执行,和/或如果描述的系统、架构、装置或电路中的组件以不同的方式被组合、和/或由其他组件或其等同物替代或补充,则可实现合适的结果。
因此,除了上面的公开之外,公开的范围还可由权利要求他们的等同物限定,并且在权利要求及他们的等同物的范围内的所有变化都应被解释为包括在公开中。
Claims (24)
1.一种计算装置,包括:
多条输入线,脉冲基于对应输入信号以顺序方式选择性地被输入到所述多条输入线;
多条输出线,与所述多条输入线交叉;
多个元件,每个元件被布置在对应输入线与对应输出线之间的交叉点处,并且被配置为:响应于对应权重是第一值,将输入到对应输入线的脉冲传送到对应输出线;和
多个脉冲计数器,每个脉冲计数器被配置为:对从对应输出线输出的脉冲的数量进行计数。
2.根据权利要求1所述的计算装置,其中,响应于输入信号是第一值,脉冲被输入到所述多条输入线中的一条或多条,并且
响应于输入信号是第二值,脉冲不被输入到所述多条输入线中的一条或多条。
3.根据权利要求1所述的计算装置,其中,所述多个元件中的每个是二极管。
4.根据权利要求3所述的计算装置,还包括:
多个第二元件,每个第二元件被配置为:将传送到对应输出线的脉冲传送到地。
5.根据权利要求1所述的计算装置,其中,所述多个元件中的每个是晶体管,
其中,每个晶体管的一端被连接到对应输入线,另一端被连接到对应输出线,并且栅极端被连接到与对应输入线对应的选择线,并且
其中,当脉冲基于输入信号选择性地被输入时,选择信号被输入到选择线。
6.根据权利要求5所述的计算装置,其中,选择信号是具有大于输入到对应输入线的脉冲的宽度的宽度的第二脉冲。
7.根据权利要求1所述的计算装置,其中,所述多个脉冲计数器中的每个被配置为:在脉冲选择性地被输入到所述多条输入线的整个周期期间对从对应输出线传送的脉冲的数量进行计数。
8.根据权利要求1所述的计算装置,其中,基于输入到所述多条输入线的输入信号与所述多个元件的权重之间的二进制与运算的乘法累加运算的结果基于从所述多个脉冲计数器输出的值来确定。
9.根据权利要求1所述的计算装置,其中,所述多个元件中的每个包括:
第一晶体管,具有连接到对应输入线的第一端和连接到第二晶体管的第二端的另一第一端,以及连接到与输入线对应的选择线的第一栅极端;和
第二晶体管,具有连接到第一晶体管的所述另一第一端的第二端和连接到对应输出线的另一第二端,以及连接到对应第一存储器装置的第二栅极端,其中,第一存储器装置被配置为:存储对应权重,
其中,响应于存储在第一存储器装置中的权重是第一值,第二晶体管被配置为:使第二端和所述另一第二端短路,并且
响应于权重是第二值,第二晶体管被配置为:使第二端和所述另一第二端开路。
10.根据权利要求1所述的计算装置,其中,所述多个元件中的每个是存储器装置,存储器装置具有:连接到对应输入线的一端和连接到对应输出线的另一端,以及连接到与对应输入线对应的选择线的控制栅端和被配置为存储对应权重的浮栅端,
其中,响应于权重是第一值,存储器装置被配置为:使所述一端和所述另一端短路,并且
响应于权重是第二值,存储器装置被配置为:使所述一端和所述另一端开路。
11.根据权利要求1所述的计算装置,其中,所述多个元件中的每个包括:
晶体管,具有连接到对应输入线的第一端和连接到电阻式存储器的第二端的另一第一端,以及连接到与对应输入线对应的选择线的第一栅极端;和
电阻式存储器,具有连接到晶体管的所述另一第一端的第二端和连接到对应输出线的另一第二端,并且被配置为:具有与对应权重对应的电阻值,
其中,响应于权重是第一值,电阻式存储器具有第一电阻值,
响应于权重是第二值,电阻式存储器具有大于第一电阻值的第二电阻值,并且
布置在对应输出线和地之间的参考电阻器中的每个具有第一电阻值与第二电阻值之间的参考电阻值。
12.根据权利要求1所述的计算装置,还包括:
多条第二输入线,脉冲基于输入信号的相反信号以顺序方式选择性地被输入到所述多条第二输入线;和
多个互补元件,每个互补元件响应于权重的相反值是第一值,被布置在对应第二输入线与对应输出线之间的交叉点处,并且被配置为:将输入到对应第二输入线的脉冲传送到对应输出线,
其中,所述多个元件中的每个和所述多个互补元件中的每个具有对应栅极端,与对应输入线对应的选择线被连接到对应栅极端,并且
当脉冲基于输入信号选择性地被输入时,选择信号被输入到对应选择线。
13.根据权利要求12所述的计算装置,其中,基于输入到所述多条输入线的输入信号与所述多个元件的权重之间的二进制异或非运算的乘法累加运算的结果基于从所述多个脉冲计数器输出的值来确定。
14.根据权利要求1至13中的任一项所述的计算装置,其中,响应于输入信号是n位输入信号,所述多条输入线中的每条被配置为:根据输入信号在2n个周期期间选择性地接收一个或多个脉冲,其中,n是正整数。
15.根据权利要求1至13中的任一项所述的计算装置,其中,响应于输入信号是多位输入信号,所述多条输入线中的每条被配置为:根据与输入信号中的相同数字对应的值选择性地顺序地接收脉冲,并且
所述多个脉冲计数器中的每个被配置为:基于输入信号中的与从对应输出线输出的脉冲对应的数字,将从对应输出线传送的脉冲施加到多位输出信号中的对应数字。
16.根据权利要求1至13中的任一项所述的计算装置,其中,响应于权重是n位权重,所述多个元件被布置在与权重对应的n条输出线中并且被布置在输入线中,并且被配置为:基于权重来选择性地将输入到输入线的脉冲传送到n条输出线中的一条或多条,其中,n是正整数,并且
输出信号通过将基于所述n条输出线的位置的不同权重施加到从分别布置在所述n条输出线中的所述多个脉冲计数器输出的值来确定。
17.根据权利要求1至13中的任一项所述的计算装置,其中,响应于输入信号是第二值,输入信号被跳过。
18.根据权利要求1至13中的任一项所述的计算装置,其中,在输入到所述多条输入线的输入信号中,两个或更多个输入信号同时被输入到对应输入线,针对所述两个或更多个输入信号,脉冲将由所述多个元件中的一个或多个传送到的输出线不重叠。
19.一种操作计算装置的方法,包括:
根据输入信号以顺序方式选择性地将脉冲输入到多条输入线;和
通过各自被布置在对应输出线中的多个脉冲计数器,来对通过各自被布置在对应输入线与对应输出线之间的交叉点处的多个元件传送到对应输出线的脉冲的数量进行计数,
其中,所述多条输入线与所述多条输出线交叉,并且
响应于对应权重是第一值,所述多个元件中的每个被配置为:将输入到对应输入线的脉冲传送到对应输出线。
20.根据权利要求19所述的方法,其中,选择性地输入脉冲的步骤包括:
响应于输入信号是第一值,将脉冲输入到输入线,和
响应于输入信号是第二值,不将脉冲输入到输入线。
21.一种计算装置,包括:
交叉开关阵列,包括输入线和输出线,输出线在多个交叉点处与输入线交叉;和
多个元件,每个元件被布置在所述多个交叉点中的一个交叉点处,并且被配置为:仅当与相应交叉点相关联的权重是第一值时,将施加到与相应交叉点对应的输入线的脉冲传送到与相应交叉点对应的输出线。
22.根据权利要求21所述的计算装置,其中,沿公共输入线布置的元件被配置为:基于输入信号选择性地接收输入脉冲。
23.根据权利要求22所述的计算装置,其中,输入信号是二进制信号,并且沿着公共输入线布置的元件被配置为:在二进制信号是1的情况下接收输入脉冲。
24.根据权利要求21所述的计算装置,还包括:多个脉冲计数器,每个脉冲计数器被连接到相应输出线并且被配置为:对从相应输出线输出的脉冲的数量进行计数。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020210156660A KR20230070753A (ko) | 2021-11-15 | 2021-11-15 | 디지털 펄스 기반 크로스바 연산을 수행하는 연산 장치 및 그 동작 방법 |
| KR10-2021-0156660 | 2021-11-15 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN116126285A true CN116126285A (zh) | 2023-05-16 |
Family
ID=82701652
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202210523606.8A Pending CN116126285A (zh) | 2021-11-15 | 2022-05-13 | 计算装置和操作计算装置的方法 |
Country Status (5)
| Country | Link |
|---|---|
| US (2) | US12197891B2 (zh) |
| EP (1) | EP4180946A1 (zh) |
| JP (1) | JP2023073196A (zh) |
| KR (1) | KR20230070753A (zh) |
| CN (1) | CN116126285A (zh) |
Family Cites Families (22)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5771362A (en) | 1996-05-17 | 1998-06-23 | Advanced Micro Devices, Inc. | Processor having a bus interconnect which is dynamically reconfigurable in response to an instruction field |
| US20040225840A1 (en) | 2003-05-09 | 2004-11-11 | O'connor Dennis M. | Apparatus and method to provide multithreaded computer processing |
| US7429870B2 (en) | 2006-06-21 | 2008-09-30 | Element Cxi, Llc | Resilient integrated circuit architecture |
| KR20170137761A (ko) | 2015-04-16 | 2017-12-13 | 휴렛 팩커드 엔터프라이즈 디벨롭먼트 엘피 | 곱셈 누적 연산을 수행하는 저항성 메모리 어레이 |
| US11023807B2 (en) | 2016-12-30 | 2021-06-01 | Microsoft Technology Licensing, Llc | Neural network processor |
| KR102023095B1 (ko) | 2017-05-15 | 2019-09-19 | 울산과학기술원 | 확률적 컴퓨팅 곱셈 알고리즘을 이용한 신경망 가속 방법 및 신경망 가속기 |
| US10878317B2 (en) | 2017-09-11 | 2020-12-29 | Samsung Electronics Co., Ltd. | Method and system for performing analog complex vector-matrix multiplication |
| US10739186B2 (en) | 2017-11-20 | 2020-08-11 | Samsung Electronics Co., Ltd. | Bi-directional weight cell |
| KR102141385B1 (ko) | 2018-03-08 | 2020-08-05 | 포항공과대학교 산학협력단 | 전치 가능한 메모리와 가상 순람표를 이용한 뉴로모픽 시스템 |
| US10943652B2 (en) * | 2018-05-22 | 2021-03-09 | The Regents Of The University Of Michigan | Memory processing unit |
| US11170290B2 (en) * | 2019-03-28 | 2021-11-09 | Sandisk Technologies Llc | Realization of neural networks with ternary inputs and binary weights in NAND memory arrays |
| CN110209375B (zh) | 2019-05-30 | 2021-03-26 | 浙江大学 | 一种基于radix-4编码和差分权重存储的乘累加电路 |
| KR102809043B1 (ko) | 2019-09-03 | 2025-05-21 | 삼성전자주식회사 | 곱셉 누적기 회로를 이용한 컴퓨팅 장치 및 방법 |
| KR102832728B1 (ko) | 2019-10-28 | 2025-07-10 | 삼성전자주식회사 | 뉴로모픽 패키지 장치 및 뉴로모픽 컴퓨팅 시스템 |
| US11657259B2 (en) * | 2019-12-20 | 2023-05-23 | Sandisk Technologies Llc | Kernel transformation techniques to reduce power consumption of binary input, binary weight in-memory convolutional neural network inference engine |
| KR20210093126A (ko) | 2020-01-17 | 2021-07-27 | 에스케이하이닉스 주식회사 | 프로세싱-인-메모리 시스템 및 그 동작 방법 |
| KR102899213B1 (ko) | 2020-03-25 | 2025-12-10 | 삼성전자주식회사 | 뉴로모픽 장치 및 그 구동 방법 |
| US11934798B2 (en) | 2020-03-31 | 2024-03-19 | Micron Technology, Inc. | Counter-based multiplication using processing in memory |
| KR102861763B1 (ko) * | 2020-07-03 | 2025-09-17 | 삼성전자주식회사 | 인-메모리 프로세싱을 수행하는 장치 및 이를 포함하는 컴퓨팅 장치 |
| US20220027130A1 (en) * | 2020-07-27 | 2022-01-27 | Robert Bosch Gmbh | Time domain ratiometric readout interfaces for analog mixed-signal in memory compute crossbar networks |
| US12169702B2 (en) * | 2020-09-08 | 2024-12-17 | Macronix International Co., Ltd. | In-memory computing method and in-memory computing apparatus |
| KR102898605B1 (ko) * | 2021-10-07 | 2025-12-11 | 에스케이하이닉스 주식회사 | 전자 장치 및 그 동작 방법 |
-
2021
- 2021-11-15 KR KR1020210156660A patent/KR20230070753A/ko active Pending
-
2022
- 2022-03-23 US US17/702,170 patent/US12197891B2/en active Active
- 2022-05-13 CN CN202210523606.8A patent/CN116126285A/zh active Pending
- 2022-07-19 JP JP2022114655A patent/JP2023073196A/ja active Pending
- 2022-07-22 EP EP22186463.0A patent/EP4180946A1/en active Pending
-
2024
- 2024-12-05 US US18/969,509 patent/US20250094127A1/en active Pending
Also Published As
| Publication number | Publication date |
|---|---|
| US20250094127A1 (en) | 2025-03-20 |
| US12197891B2 (en) | 2025-01-14 |
| EP4180946A1 (en) | 2023-05-17 |
| US20230155578A1 (en) | 2023-05-18 |
| JP2023073196A (ja) | 2023-05-25 |
| KR20230070753A (ko) | 2023-05-23 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| Zabihi et al. | In-memory processing on the spintronic CRAM: From hardware design to application mapping | |
| US10831446B2 (en) | Digital bit-serial multi-multiply-and-accumulate compute in memory | |
| CN115904311A (zh) | 用于多位存储单元中计算的模拟乘法-累加部件 | |
| US11868874B2 (en) | Two-dimensional array-based neuromorphic processor and implementing method | |
| CN106688040A (zh) | 存储器中的交换运算 | |
| Singh et al. | Low-power memristor-based computing for edge-AI applications | |
| US9940102B2 (en) | Partial stochastic rounding that includes sticky and guard bits | |
| CN112636745A (zh) | 逻辑单元、加法器以及乘法器 | |
| Yan et al. | iCELIA: A full-stack framework for STT-MRAM-based deep learning acceleration | |
| US12373681B2 (en) | Neuromorphic method and apparatus with multi-bit neuromorphic operation | |
| CN115398545A (zh) | 模糊检索电路 | |
| CN115374916A (zh) | 硬件加速器和硬件加速器方法 | |
| US11275713B2 (en) | Bit-serial linear algebra processor | |
| CN111627479B (zh) | 编码型闪存装置、系统和编码方法 | |
| CN116126285A (zh) | 计算装置和操作计算装置的方法 | |
| US20240231757A9 (en) | Device and method with in-memory computing | |
| Lakshmi et al. | Inner product computation in-memory using distributed arithmetic | |
| WO2025055033A1 (zh) | 一种用于人工智能计算的方法、设备及介质 | |
| US20240419628A1 (en) | Digital signal processor (dsp) and electronic device using the same | |
| US20240094988A1 (en) | Method and apparatus with multi-bit accumulation | |
| Imani et al. | Digital-based processing in-memory: A highly-parallel accelerator for data intensive applications | |
| CN115712407A (zh) | 乘法累加器电路及由乘法累加器电路执行的方法 | |
| US20240028298A1 (en) | Memory device and method with in-memory computing | |
| EP4089524A1 (en) | Apparatus and method with multiply-accumulate operation | |
| CN119731636A (zh) | 多位累加器和具有多位累加器的存储器内计算处理器 |
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 |