存内处理(PIM)系统和PIM系统的操作方法与流程

文档序号:26003349发布日期:2021-07-23 21:21阅读:351来源:国知局
存内处理(PIM)系统和PIM系统的操作方法与流程

相关申请的交叉引用

本申请要求于2020年1月7日提交的美国临时申请62/958226和于2020年1月17日提交的韩国专利申请10-2020-0006903的优先权,其全部内容通过引用合并于此。

本公开的各种实施例涉及存内处理(pim)系统,更具体而言,涉及包括pim设备和控制器的pim系统以及操作该pim系统的方法。



背景技术:

近来,不仅在信息技术行业而且在金融和医疗行业中,对人工智能(ai)的兴趣都在增加。因此,在各个领域中,都考虑并原型化了人工智能,更确切地说是深度学习的引入。通常,用于有效学习深度神经网络(dnn)或与通用神经网络相比具有增加的层的深度网络以利用深度神经网络(dnn)或深度网络进行模式识别或推断的技术通常称为深度学习。

引起广泛关注的一个原因可能是执行算术运算的处理器的性能提高。为了提高人工智能的性能,可能有必要增加构成人工智能中的神经网络的层数以教育人工智能。近年来,这种趋势一直持续,这导致实际执行计算的硬件所需的计算量呈指数增长。此外,如果人工智能采用包括彼此分离的存储器和处理器的通用硬件系统,则由于存储器和处理器之间的数据通信量的限制,人工智能的性能可能降低。为了解决该问题,已经将其中处理器和存储器集成在一个半导体芯片中的pim设备用作神经网络计算设备。由于pim设备直接在内部执行算术运算,因此可以提高神经网络中的数据处理速度。



技术实现要素:

根据本公开的实施例的存内处理(pim)系统包括pim设备和pim控制器。pim设备包括第一储存区、第二储存区以及分别从第一储存区和第二储存区接收第一数据和第二数据以执行mac算术运算的乘法/累加(mac)运算器。pim控制器控制pim设备的存储模式和mac模式。pim控制器被配置为在存储模式下生成并向pim设备发送存储命令,并且被配置为在mac模式下生成并向pim设备发送第一mac命令至第五mac命令。

根据本公开的实施例的存内处理(pim)系统包括pim设备和pim控制器。pim设备包括储存区、全局缓冲器和乘法/累加(mac)运算器,其中,mac运算器适于分别从储存区和全局缓冲器接收第一数据和第二数据,以执行mac算术运算。pim控制器被配置为控制pim设备的存储模式和mac模式。pim控制器被配置为在存储模式下生成并向pim设备发送存储命令,并且被配置为在mac模式下生成并向pim设备发送第一至第三mac命令。

根据本公开的实施例的存内处理(pim)系统包括pim设备和pim控制器。pim设备包括数据储存区和算术电路。算术电路被配置为从数据储存区接收第一数据和第二数据,以对第一数据和第二数据执行算术运算。pim控制器被配置为控制pim设备的存储模式和算术模式。pim控制器被配置为在存储模式下生成存储命令并将其发送给pim设备。并且pim控制器被配置为在算术模式下生成多个算术命令并将其发送给pim设备。

根据本公开的实施例是一种操作存内处理(pim)系统的方法,该系统包括用于执行乘法/累加(mac)算术运算的pim设备和用于控制pim设备的mac算术运算的pim控制器。该方法包括在初始值为1的递增整数“r”小于或等于固定整数“m”时迭代地执行如下过程:从pim控制器向pim设备的发送第一mac命令,以将储存在pim设备的第一储存区中的用于mac算术运算的“m×n”权重矩阵的第r行中的元素输出给pim设备的mac运算器(其中,“m”和“n”是大于“1”的自然数);从pim控制器向pim设备发送第二mac命令,以将储存在pim设备的第二储存区中的用于mac算术运算的“n×1”向量矩阵的第一列中的元素输出给pim设备的mac运算器;从pim控制器向pim设备发送第三mac命令,以执行用于将权重矩阵的第r行中的元素锁存到mac运算器中的输入锁存操作;从所述pim控制器向所述pim设备发送第四mac命令,以执行用于将所述向量矩阵的第一列中的元素锁存到所述mac运算器中的输入锁存操作;对权重矩阵的第r行中的元素和向量矩阵的由mac运算器锁存的第一列中的元素执行矩阵乘法计算;从所述pim控制器向所述pim设备发送第五mac命令,以执行所述mac运算器中所述矩阵乘法计算的结果数据的输出锁存操作;从所述pim控制器向所述pim设备发送第六mac命令,以从所述mac运算器输出所述输出锁存操作的结果数据;然后将整数“r”增加1。

根据本公开的实施例是一种操作存内处理(pim)系统的方法,该系统包括用于执行乘法/累加(mac)算术运算的pim设备和用于控制pim设备的mac算术运算的pim控制器。该方法包括在初始值为1的递增整数“r”小于或等于固定整数“m”时迭代地执行如下过程:从pim控制器向pim设备的发送第一mac命令,以将储存在pim设备的储存区中的用于mac算术运算的“m×n”权重矩阵的第r行中的元素输出给pim设备的mac运算器(其中,“m”和“n”是大于“1”的自然数);将储存在pim设备的全局缓冲器中用于mac算术运算的“n×1”向量矩阵的第一列中的元素输出给pim设备的mac运算器;从pim控制器向pim设备发送第二mac命令,以执行用于将权重矩阵的第r行中的元素和向量矩阵的第一列中的元素锁存到mac运算器中的输入锁存操作;对由mac运算器锁存的权重矩阵第r行中的元素和向量矩阵第一列中的元素执行矩阵乘法计算;从pim控制器向pim设备发送第三mac命令,以执行mac运算器中矩阵乘法计算的结果数据的输出锁存操作;从pim控制器向pim设备发送第四mac命令,以从mac运算器输出所述输出锁存操作的结果数据;然后将整数“r”加1。

附图说明

在各个实施例中,参照附图示出了所公开技术的某些特征。

图1是示出根据本公开的实施例的pim系统的框图。

图2是示出根据本公开的第一实施例的pim系统的框图。

图3示出从根据本公开的第一实施例的pim系统中包括的pim控制器的mac命令生成器输出的mac命令。

图4是示出在根据本公开的第一实施例的pim系统中包括的pim设备的mac运算器的配置的示例的框图。

图5示出在根据本公开的第一实施例的pim系统中执行的mac算术运算的示例。

图6是示出图5所示的在根据本公开的第一实施例的pim系统中的mac算术运算的过程的流程图。

图7至图13是示出图5所示的在根据本公开的第一实施例的pim系统中的mac算术运算的过程的框图。

图14示出在根据本公开的第一实施例的pim系统中执行的mac算术运算的另一示例。

图15是示出图14所示的在根据本公开的第一实施例的pim系统中的mac算术运算的过程的流程图。

图16示出了用于执行图14的在根据本公开的第一实施例的pim系统中的mac算术运算的mac运算器的配置示例。

图17示出了在根据本公开的第一实施例的pim系统中执行的mac算术运算的又一示例。

图18是示出图17所示的在根据本公开的第一实施例的pim系统中的mac算术运算的过程的流程图。

图19示出了用于执行图17所示的在根据本公开的第一实施例的pim系统中的mac算术运算的mac运算器的配置的示例。

图20是示出根据本公开的第二实施例的pim系统的框图。

图21示出从根据本公开的第二实施例的pim系统中包括的pim控制器的mac命令生成器输出的mac命令。

图22是示出图5所示的在根据本公开第二实施例的pim系统中的mac算术运算的过程的流程图。

图23至图26是示出图5所示的在根据本公开第二实施例的pim系统中的mac算术运算的过程的框图。

图27是示出图14所示的在根据本公开第二实施例的pim系统中的mac算术运算的过程的流程图。

图28是示出图17所示的在根据本公开的第二实施例的pim系统中的mac算术运算的过程的流程图。

图29是示出根据本公开的又一实施例的pim系统的框图。

图30是示出根据本公开的还又一实施例的pim系统的框图。

具体实施方式

在实施例的以下描述中,将理解的是:术语“第一”和“第二”旨在标识元件,但是不用于定义元件的特定数量或顺序。另外,当元件被称为位于另一元件“上”、“上方”、“之上”、“下”、“下方”或“之下”时,其意图是指相对位置关系,但不用于限制在其中该元件直接接触另一个元件、或者在它们之间存在至少一个中间元件的特定情况。因此,在此使用的诸如“上”、“上方”、“之上”、“下”、“下方”或“之下”等术语仅是出于描述特定实施例的目的,而不是意图限制本公开的范围。此外,当一个元件被称为“连接”或“耦接”到另一元件时,该元件可以直接电或机械地连接或耦接到另一元件,或者可以间接地、在它们之间有一个或多个其他元件地被电或机械地连接或耦接到另一元件。

各种实施例针对pim系统和操作pim系统的方法。

图1是示出根据本公开的实施例的pim系统的框图。如图1所示,pim系统1可以包括pim设备10和pim控制器20。pim设备10可以包括数据储存区11、算术电路12、接口(i/f)13-1和数据(dq)输入/输出(i/o)焊盘13-2。数据储存区11可以包括第一储存区和第二储存区。在一个实施例中,第一储存区和第二储存区可以分别是第一存储体和第二存储体。在另一个实施例中,第一数据储存区和第二储存区可以分别是存储体和缓冲存储器。数据储存区11可以包括易失性存储元件或非易失性存储元件。对于一个实施例,数据储存区11可以包括易失性存储元件和非易失性存储元件两者。

算术电路12可以对从数据储存区11传送来的数据执行算术运算。在一个实施例中,算术电路12可以包括乘法和累加(mac)运算器。mac运算器可以对从数据储存区11传送来的数据执行乘法计算,并且可以对乘法结果数据进行累加计算。在mac运算之后,mac运算器可以输出mac结果数据。mac结果数据可以储存在数据储存区11中,或者可以通过数据i/o焊盘13-2从pim设备10输出。

pim设备10的接口13-1可以从pim控制器20接收命令cmd和地址addr。接口13-1可以将命令cmd输出给pim设备10中的数据储存区11或算术电路12。接口13-1可以将地址addr输出给pim设备10中的数据储存区11。pim设备10的数据i/o焊盘13-2可以用作在pim设备10的外部设备、例如pim控制器20与pim设备10中包括的数据储存区11之间的数据通信终端。pim设备10的外部设备可以对应于pim系统1的pim控制器20或位于pim系统1外部的主机。因此,从主机或pim控制器20输出的数据可以通过数据i/o焊盘13-2输入到pim设备10中。

pim控制器20可以控制pim设备10的运行。在一个实施例中,pim控制器20可以控制pim设备10,使得pim设备10在存储模式或算术模式下运行。在pim控制器20控制pim设备10使得pim设备10在存储模式下运行的情况下,pim设备10可以对数据储存区11执行数据读取操作或数据写入操作。在pim控制器20控制pim设备10使得pim设备10在算术模式下运行的情况下,pim设备10的算术电路12可以从数据储存区11接收第一数据和第二数据以执行算术运算。在pim控制器20控制pim设备10使得pim设备10在算术模式下运行的情况下,pim设备10还可以对数据储存区11执行数据读取操作和数据写入操作以执行算术运算。算术运算可以是在预定的固定时间期间执行的确定性算术运算。如本文中针对参数(诸如预定的固定时间或时间段)所使用的词“预定的”是指在过程或算法中使用该参数之前确定该参数的值。对于一些实施例,在过程或算法开始之前确定参数的值。在其他实施例中,在过程或算法期间、但在过程或算法中使用参数之前确定该参数的值。

pim控制器20可以被配置为包括命令队列逻辑21、调度器22、命令(cmd)生成器23和地址(addr)生成器25。命令队列逻辑21可以从外部设备(例如pim系统1的主机)接收请求req,并将与请求req相对应的命令队列储存在命令队列逻辑21中。每当命令队列逻辑21储存命令队列时,命令队列逻辑21可以将关于命令队列的储存状态的信息发送给调度器22。可以根据由调度器22确定的顺序,将储存在命令队列逻辑21中的命令队列发送给命令生成器23。图2的命令队列逻辑21以及图20的命令队列逻辑210也可以被实现为硬件、软件或硬件和软件的组合。例如,命令队列逻辑21和/或210可以是根据执行命令队列逻辑代码的算法和/或处理器来运行的命令队列逻辑电路。

当从命令队列逻辑21输出储存在命令队列逻辑21中的命令队列时,调度器22可以调整命令队列的顺序。为了调整储存在命令队列逻辑21中的命令队列的输出顺序,调度器22可以分析关于由命令队列逻辑21提供的命令队列的储存状态的信息,并且可以重新调整命令队列的处理顺序,从而根据适当的顺序来处理命令队列。

命令生成器23可以从命令队列逻辑21接收与pim设备10的存储模式和pim设备10的mac模式有关的命令队列。命令生成器23可以对命令队列进行译码以生成和输出命令cmd。命令cmd可以包括用于存储模式的存储命令或用于算术模式的算术命令。从命令生成器23输出的命令cmd可以被发送给pim设备10。

命令生成器23可以被配置为在存储模式下生成存储命令并将其发送给pim设备10。命令生成器23可以被配置为在算术模式下生成多个算术命令并将其发送给pim设备10。在一个示例中,命令生成器23可以被配置为在算术模式下以预定的时间间隔生成并输出第一算术命令至第五算术命令。第一算术命令可以是用于从数据储存区11中读取第一数据的控制信号。第二算术命令可以是用于从数据储存区11中读取第二数据的控制信号。第三算术命令可以是用于将第一数据锁存在算术电路12中的控制信号。第四算术命令可以是用于将第二数据锁存在算术电路12中的控制信号。以及第五mac命令可以是用于锁存算术电路12的算术结果数据的控制信号。

地址生成器25可以从命令队列逻辑21接收地址信息,并生成用于访问数据储存区11中的区域的地址addr。在一个实施例中,地址addr可以包括存储体地址、行地址和列地址。从地址生成器25输出的地址addr可以通过接口(i/f)13-1输入到数据储存区11。

图2是示出根据本公开的第一实施例的pim系统1-1的框图。如图2所示,pim系统1-1可以包括pim设备100和pim控制器200。pim设备100可以包括第一存储体(bank0)111、第二存储体(bank1)112、mac运算器120、接口(i/f)131和数据输入/输出(i/o)焊盘132。对于一个实施例,mac运算器120代表mac运算器电路。pim设备100中包括的第一存储体(bank0)111、第二存储体(bank1)112和mac运算器120可以构成一个mac单元。在另一个实施例中,pim设备100可以包括多个mac单元。第一存储体(bank0)111和第二存储体(bank1)112可以代表用于储存数据的存储区,例如dram设备。第一存储体(bank0)111和第二存储体(bank1)112中的每一个可以是被独立激活的组件单元,并且可以被配置为具有与pim设备100中的数据i/o线相同的数据总线宽度。在一个实施例中,第一存储体111和第二存储体112可以通过交错(interleaving)来操作,使得在选择另一个存储体的同时,并行执行第一存储体111和第二存储体112的激活操作。第一存储体111和第二存储体112中的每一个可以包括至少一个单元阵列,该单元阵列包括位于多行和多列的交叉点处的存储单位单元。

尽管在附图中未示出,但是核心电路可以邻近于第一存储体111和第二存储体112设置。核心电路可以包括x译码器xdec和y译码器/io电路ydec/io。x译码器xdec也可以被称为字线译码器或行译码器。x译码器xdec可以从pim控制器200接收行地址add_r,并且可以对行地址add_r进行译码,以选择并使能耦接到所选择的存储体的行之一(即,字线)。每个y译码器/io电路ydec/io可以包括y译码器ydec和i/o电路io。y译码器ydec也可以被称为位线译码器或列译码器。y译码器ydec可以从pim控制器200接收列地址addr_c,并且可以对列地址addr_c进行译码,以选择并使能耦接到所选存储体的列(即,位线)中的至少之一。每个i/o电路可以包括i/o感测放大器,用于在对第一存储体111和第二存储体112的读取操作期间感测和放大从相应的存储体输出的读取数据的电平。此外,i/o电路可以包括用于在第一存储体111和第二存储体112的写入操作期间驱动写入数据的写入驱动器。

pim设备100的接口131可以从pim控制器200接收存储命令m_cmd、mac命令mac_cmd、存储体选择信号bs以及行/列地址addr_r/addr_c。接口131可以将存储命令m_cmd连同存储体选择信号bs以及行/列地址addr_r/addr_c一起输出给第一存储体111或第二存储体112。接口131可以将mac命令mac_cmd输出给第一存储体111、第二存储体112和mac运算器120。在这种情况下,接口131可以将存储体选择信号bs和行/列地址addr_r/addr_c输出给第一存储体111和第二存储体112两者。pim设备100的数据i/o焊盘132可以用作在pim设备100外部的设备与被包括在pim设备100中的mac单元(其包括第一存储体111和第二存储体112以及mac运算器120)之间的数据通信终端。pim设备100的外部设备可以对应于pim系统1-1的pim控制器200或位于pim系统1-1外部的主机。因此,从主机或pim控制器200输出的数据可以通过数据i/o焊盘132输入到pim设备100中。

pim控制器200可以控制pim设备100的运行。在一个实施例中,pim控制器200可以控制pim设备100,使得pim设备100在存储模式或mac模式下运行。在pim控制器200控制pim设备100使得pim设备100在存储模式下运行的情况下,pim设备100可以对第一存储体111和第二存储体112执行数据读取操作或数据写入操作。在pim控制器200控制pim设备100使得pim设备100在mac模式下运行的情况下,pim设备100可以对mac运算器120执行mac算术运算。在pim控制器200控制pim设备100使得pim设备100在mac模式下运行的情况下,pim设备100还可以对第一存储体111和第二存储体112执行数据读取操作和数据写入操作,以执行mac算术运算。

pim控制器200可以被配置为包括命令队列逻辑210、调度器220、存储命令生成器230、mac命令生成器240和地址生成器250。命令队列逻辑210可以从外部设备(例如pim系统1-1的主机)接收请求req,并将与请求req相对应的命令队列储存在命令队列逻辑210中。每当命令队列逻辑210储存命令队列时,命令队列逻辑210就可以将有关命令队列的储存状态的信息发送给调度器220。可以根据调度器220确定的顺序将储存在命令队列逻辑210中的命令队列发送给存储命令生成器230或mac命令生成器240。当从命令队列逻辑210输出的命令队列包括请求在pim设备100的存储模式下运行的命令信息时,命令队列逻辑210可以将命令队列发送给存储命令生成器230。另一方面,当从命令队列逻辑210输出的命令队列是请求在pim设备100的mac模式下运行的命令信息时,命令队列逻辑210可以将命令队列发送给mac命令生成器240。调度器220可以提供命令队列是与存储模式、还是与mac模式有关的信息。

当从命令队列逻辑210输出储存在命令队列逻辑210中的命令队列时,调度器220可以调整命令队列的定时(timing)。为了调整储存在命令队列逻辑210中的命令队列的输出定时,调度器220可以分析关于由命令队列逻辑210提供的命令队列的储存状态的信息,并且可以重新调整命令队列的处理顺序,使得根据适当的顺序来处理命令队列。调度器220可以输出关于从命令队列逻辑210输出的命令队列是与pim设备100的存储模式有关、还是与pim设备100的mac模式有关的信息并将其发送给命令队列逻辑210。为了获得关于从命令队列逻辑210输出的命令队列是与存储模式、还是与mac模式有关的信息,调度器220可以包括模式选择器221。模式选择器221可以生成模式选择信号,该模式选择信号包括关于储存在命令队列逻辑210中的命令队列是与存储模式、还是与mac模式有关的信息,并且调度器220可以将模式选择信号发送给命令队列逻辑210。

存储命令生成器230可从命令队列逻辑210接收与pim设备100的存储模式有关的命令队列。存储命令生成器230可对命令队列进行译码以产生并输出存储命令m_cmd。从存储命令生成器230输出的存储命令m_cmd可以被发送给pim设备100。在实施例中,存储命令m_cmd可以包括存储器读取命令和存储器写入命令。当从存储命令生成器230输出存储器读取命令时,pim设备100可以对第一存储体111或第二存储体112执行数据读取操作。从pim设备100读取出的数据可以通过数据i/o焊盘132发送给外部设备。从pim设备100输出的读取数据可以通过pim控制器200发送给主机。当从存储命令生成器230输出存储器写入命令时,pim设备100可以对第一存储体111或第二存储体112执行数据写入操作。在这种情况下,可以通过pim控制器200将要写入pim设备100的数据从主机发送到pim设备100。输入到pim设备100的写入数据可以通过数据i/o焊盘132被发送给第一存储体111或第二存储体112。

mac命令生成器240可以从命令队列逻辑210接收与pim设备100的mac模式有关的命令队列。mac命令生成器240可以对命令队列进行译码以生成并输出mac命令mac_cmd。从mac命令生成器240输出的mac命令mac_cmd可以被发送给pim设备100。可以通过从mac命令生成器240输出的mac命令mac_cmd来执行对pim设备100的第一存储体111和第二存储体112的数据读取操作,以及也可以通过从mac命令生成器240输出的mac命令mac_cmd来执行mac运算器120的mac算术运算。将参照图3详细描述mac命令mac_cmd和pim设备100的根据mac命令mac_cmd的mac算术运算。

地址生成器250可以从命令队列逻辑210接收地址信息。地址生成器250可以生成用于选择第一存储体111和第二存储体112之一的存储体选择信号bs,并且可以将存储体选择信号bs发送给pim设备100。此外,地址生成器250可以生成用于访问在第一存储体111或第二存储体112中的区域(例如存储单元)的行地址addr_r和列地址addr_c,并且可以将行地址addr_r和列地址addr_c发送给pim设备100。

图3示出从根据本公开的第一实施例的pim系统1-1中包括的mac命令生成器240输出的mac命令mac_cmd。如图3所示,mac命令mac_cmd可以包括第一至第六mac命令信号。在一个实施例中,第一mac命令信号可以是第一mac读取信号mac_rd_bk0,第二mac命令信号可以是第二mac读取信号mac_rd_bk1,第三mac命令信号可以是第一mac输入锁存信号mac_l1,第四mac命令信号可以是第二mac输入锁存信号mac_l2,第五mac命令信号可以是mac输出锁存信号mac_l3,第六mac命令信号可以是mac锁存器复位信号mac_l_rst。

第一mac读取信号mac_rd_bk0可以控制用于从第一存储体111中读取出第一数据(例如权重数据)的操作,以将第一数据发送给mac运算器120。第二mac读取信号mac_rd_bk1可以控制用于从第二存储体112中读取出第二数据(例如向量数据)的操作,以将第二数据发送给mac运算器120。第一mac输入锁存信号mac_l1可以控制从第一存储体111发送给mac运算器120的权重数据的输入锁存操作。第二mac输入锁存信号mac_l2可以控制从第二存储体112发送给mac运算器120的向量数据的输入锁存操作。如果执行了权重数据和向量数据的输入锁存操作,则mac运算器120可以执行mac算术运算,以生成与mac算术运算的结果相对应的mac结果数据。mac输出锁存信号mac_l3可以控制由mac运算器120生成的mac结果数据的输出锁存操作。并且,mac锁存器复位信号mac_l_rst可以控制由mac运算器120生成的mac结果数据的输出操作以及包括在mac运算器120中的输出锁存器的复位操作。

根据本实施例的pim系统1-1可以被配置为执行确定性mac算术运算。本公开中使用的术语“确定性mac算术运算”可以被定义为在预定的固定时间期间在pim系统1-1中执行的mac算术运算。因此,可以以固定的时间间隔顺序地生成从pim控制器200发送给pim设备100的mac命令mac_cmd。因此,pim控制器200不需要为mac算术运算而执行的用于生成控制mac算术运算的mac命令mac_cmd的各种操作的任何额外的结束信号。在一个实施例中,由用于控制mac算术运算的mac命令mac_cmd执行的各种操作的等待时间可以被设置为具有固定值,以便执行确定性mac算术运算。在这种情况下,可以以与固定等待时间相对应的固定时间间隔从pim控制器200顺序输出mac命令mac_cmd。

例如,mac命令生成器240被配置为在第一时间点输出第一mac命令。mac命令生成器240被配置为在从第一时间点起经过了第一等待时间时的第二时间点输出第二mac命令。第一等待时间被设置为基于第一mac命令从第一储存区读取出第一数据并将第一数据输出给mac运算器所花费的时间。mac命令生成器240被配置为在从第二时间点起经过了第二等待时间时的第三时间点输出第三mac命令。将第二等待时间设置为基于第二mac命令从第二储存区读取出第二数据并将第二数据输出给mac运算器所花费的时间。mac命令生成器240被配置为在从第三时间点起经过了第三等待时间时的第四时间点输出第四mac命令。将第三等待时间设置为基于第三mac命令在mac运算器中锁存第一数据所花费的时间。mac命令生成器240被配置为在从第四时间点起经过了第四等待时间时的第五时间点输出第五mac命令。第四等待时间被设置为基于第四mac命令在mac运算器中锁存第二数据并对在mac运算器中锁存的第一数据和第二数据执行mac算术运算所花费的时间。mac命令生成器240被配置为在从第五时间点起经过了第五等待时间时的第六时间点输出第六mac命令。将第五等待时间设置为执行由mac算术运算生成的mac结果数据的输出锁存操作所花费的时间。

图4示出包括在根据本公开的第一实施例的pim系统1-1中的pim设备100的mac运算器120的示例。参照图4,mac运算器120可以被配置为包括数据输入电路121、mac电路122和数据输出电路123。数据输入电路121可以包括第一输入锁存器121-1和第二输入锁存器121-2。mac电路122可以包括乘法逻辑电路122-1和加法逻辑电路122-2。数据输出电路123可以包括输出锁存器123-1、传输门123-2、延迟电路123-3和反相器123-4。在一个实施例中,可以使用触发器来实现第一输入锁存器121-1、第二输入锁存器121-2和输出锁存器123-1。

mac运算器120的数据输入电路121可以与第一mac输入锁存信号mac_l1同步,以锁存从第一存储体111通过内部数据传输线传送给mac电路122的第一数据da1。另外,mac运算器120的数据输入电路121可以与第二mac输入锁存信号mac_l2同步,以锁存从第二存储体112通过另一内部数据传输线传送的第二数据da2。因为第一mac输入锁存信号mac_l1和第二mac输入锁存信号mac_l2以预定的时间间隔从pim控制器200的mac命令生成器240依次被发送给pim设备100的mac运算器120,在第一数据da1被输入到mac运算器120的mac电路122之后,可以将第二数据da2输入到mac运算器120的mac电路122。

mac电路122可以对通过数据输入电路121输入的第一数据da1和第二数据da2执行mac算术运算。mac电路122的乘法逻辑电路122-1可以包括多个乘法器122-11。乘法器122-11中的每一个可以对从第一输入锁存器121-1输出的第一数据da1和从第二输入锁存器121-2输出的第二数据da2执行乘法计算,并且可以输出乘法计算的结果。可以将构成第一数据da1的比特位值分开地输入到乘法器122-11。类似地,构成第二数据da2的比特位值也可以被分开地输入到乘法器122-11。例如,如果第一数据da1由“n”比特位二进制流表示,则第二数据da2由“n”比特位二进制流表示,并且乘法器122-11的数量为“m”,然后,可以将第一数据da1的“n/m”比特位部分和第二数据da2的“n/m”比特位部分输入到乘法器122-11中的每个。

mac电路122的加法逻辑电路122-2可以包括多个加法器122-21。尽管在附图中未示出,但是可以将多个加法器122-21设置为提供包括多个级的树结构。布置在第一级的每个加法器122-21可以从包括在乘法逻辑电路122-1中的两个乘法器122-11接收两组乘法结果数据,并且可以执行两组乘法结果数据的加法计算以输出加法结果数据。布置在第二级的每个加法器122-21可以从布置在第一级的两个加法器122-21接收两组加法结果数据,并且可以执行两组加法结果数据的加法计算以输出加法结果数据。布置在最后一级的加法器122-21可以从布置在前一级的两个加法器122-21接收两组加法结果数据,并且可以执行两组加法结果数据的加法计算以输出加法结果数据。尽管在附图中未示出,但是加法逻辑电路122-2可以进一步包括用于对从布置在最后一级的加法器122-21输出的mac结果数据da_mac与储存在数据输出电路123的输出锁存器123-1中的在前mac结果数据da_mac进行累加的加法计算的附加加法器。

数据输出电路123可以将从mac电路122输出的mac结果数据da_mac输出给数据传输线。具体地,数据输出电路123的输出锁存器123-1可以与mac输出锁存信号mac_l3同步,以锁存从mac电路122输出的mac结果数据da_mac,并输出mac结果数据da_mac的锁存数据。从输出锁存器123-1输出的mac结果数据da_mac可以被反馈到mac电路122以进行累加的加法计算。另外,mac结果数据da_mac可以被输入到传输门123-2。如果将锁存器复位信号latch_rst输入到输出锁存器123-1,则可以初始化输出锁存器123-1。在这种情况下,可以移除由输出锁存器123-1锁存的所有数据。在一个实施例中,可以通过生成mac锁存器复位信号mac_l_rst来激活锁存器复位信号latch_rst,并且可以将其输入到输出锁存器123-1。

从mac命令生成器240输出的mac锁存器复位信号mac_l_rst可以被输入到传输门123-2、延迟电路123-3和反相器123-4。反相器123-4可以反向缓冲mac锁存器复位信号mac_l_rst,以将mac锁存器复位信号mac_l_rst的被反向缓冲的信号输出给传输门123-2。传输门123-2可以响应于mac锁存器复位信号mac_l_rst将来自输出锁存器123-1的mac结果数据da_mac传送给数据传输线。延迟电路123-3可以将mac锁存器复位信号mac_l_rst延迟特定时间,以生成并输出锁存器控制信号pinstb。

图5示出在根据本公开的第一实施例的pim系统1-1中执行的mac算术运算的示例。如图5所示,可以通过矩阵计算来执行由pim系统1-1执行的mac算术运算。具体地,pim设备100可以根据pim控制器200的控制来执行“m×n”权重矩阵(例如“8×8”权重矩阵)和“n×1”向量矩阵(例如“8×1”向量)的矩阵乘法计算(其中,“m”和“n”是自然数)。构成权重矩阵的元素w0.0,……和w7.7可以对应于从第一存储体111输入到mac运算器120的第一数据da1。构成向量矩阵的元素x0.0,……和x7.0可以对应于从第二存储体112输入到mac运算器120的第二数据da2。构成权重矩阵的元素w0.0,……和w7.7中的每个可以由具有多个比特位值的二进制流表示。另外,构成向量矩阵的每个元素x0.0,……和x7.0也可以由具有多个比特位值的二进制流表示。构成权重矩阵的每个元素w0.0,……和w7.7中包含的比特位数量可以等于构成向量矩阵的每个元素x0.0,……和x7.0中包含的比特位数量。

权重矩阵和向量矩阵的矩阵乘法计算可适用于多层感知型神经网络结构(以下称为“mlp型神经网络”)。通常,用于执行深度学习的mlp型神经网络可以包括输入层、多个隐藏层(例如至少三个隐藏层)和输出层。图5中所示的权重矩阵和向量矩阵的矩阵乘法计算(即mac算术运算)可以在隐藏层之一中被执行。在多个隐藏层中的第一隐藏层中,可以通过使用输入到第一隐藏层的向量数据来执行mac算术运算。然而,在多个隐藏层当中的第二至最后一个隐藏层中的每一个中,可以通过使用先前的隐藏层的计算结果作为向量数据来执行mac算术运算。

图6是示出参照图5描述的mac算术运算的过程的流程图,这些过程在根据本公开的第一实施例的pim系统1-1中执行。另外,图7至图13是示出图5中示出的mac算术运算的过程的框图,这些过程在根据本公开的第一实施例的pim系统1-1中执行。参照图6至图13,在执行mac算术运算之前,可以在步骤301将第一数据(即权重数据)写入第一存储体111。因此,可以将权重数据储存在pim设备100的第一存储体111中。在本实施例中,可以假设权重数据是构成图5的权重矩阵的元素w0.0,……和w7.7。小数点前的整数比行号小1,小数点后的整数比列号小1。因此,例如,权重w0.0代表权重矩阵的第一行第一列的元素。

在步骤302,可以确定是否请求推断。推断请求信号可以从位于pim系统1-1外部的外部设备发送给pim系统1-1的pim控制器200。在某些情况下,推断请求可以基于用户输入。推断请求可以发起由pim系统1-1执行的计算,以基于输入数据来实现确定。在一个实施例中,如果没有推断请求信号被发送给pim控制器200,则pim系统1-1可以处于待机模式,直到推断请求信号被发送给pim控制器200。可替代地,如果没有推断请求信号被发送到pim控制器200,则pim系统1-1可以在存储模式下执行除mac算术运算之外的操作(例如数据读取/写入操作),直到推断请求信号被发送给pim控制器200为止。在本实施例中,可以假设第二数据(即向量数据)与推断请求信号一起被发送。另外,可以假设向量数据是构成图5的向量矩阵的元素x0.0,……和x7.0。如果在步骤302将推断请求信号发送给pim控制器200,则在步骤303,pim控制器200可以将与推断请求信号一起发送的向量数据写入第二存储体112。因此,向量数据可以储存在pim设备100的第二存储体112中。

在步骤304,pim控制器200的mac命令生成器240可以生成第一mac读取信号mac_rd_bk0并将其发送给pim设备100,如图7所示。在这种情况下,pim控制器200的地址生成器250可以生成存储体选择信号bs和行/列地址addr_r/addr_c并将其发送给pim设备100。可以生成存储体选择信号bs以选择第一存储体111和第二存储体112中的第一存储体111。因此,第一mac读取信号mac_rd_bk0可以控制对pim设备100的第一存储体111的数据读取操作。第一存储体111可以响应于第一mac读取信号mac_rd_bk0来输出储存在第一存储体111的由行/列地址addr_r/addr_c选择的区域中的权重数据的权重矩阵的第一行中的元素w0.0,……和w0.7并将其发送给mac运算器120。在一个实施例中,可以通过全局输入/输出(以下称为“gio”)线来执行从第一存储体111到mac运算器120的数据传输,该全局输入/输出线被设置为pim设备100中的数据传输路径。可替代地,可以通过第一存储体输入/输出(以下称为“bio”)线来执行从第一存储体111到mac运算器120的数据传输,该第一存储体输入/输出线专门被设置用于第一存储体111和mac运算器120之间的数据传输。

在步骤305,pim控制器200的mac命令生成器240可以生成第二mac读取信号mac_rd_bk1并将其发送给pim设备100,如图8所示。在这种情况下,pim控制器200的地址生成器250可以生成用于选择第二存储体112的存储体选择信号bs和行/列地址addr_r/addr_c并将其发送给pim设备100。第二mac读取信号mac_rd_bk1可以控制对pim设备100的第二存储体112的数据读取操作。第二存储体112可以响应于第二mac读取信号mac_rd_bk1输出与储存在第二存储体112的由行/列地址addr_r/addr_c选择的区域中的向量数据相对应的向量矩阵的第一列中的元素x0.0,……和x7.0并将其发送给mac运算器120。在一个实施例中,可以通过pim设备100中的gio线来执行从第二存储体112到mac运算器120的数据传输。可替代地,可以通过第二bio线执行从第二存储体112到mac运算器120的数据传输,该第二bio线专门被设置用于第二存储体112和mac运算器120之间的数据传输。

在步骤306,pim控制器200的mac命令生成器240可以生成第一mac输入锁存信号mac_l1并将其发送给pim设备100,如图9所示。第一mac输入锁存信号mac_l1可以控制pim设备100的mac运算器120的第一数据的输入锁存操作。权重矩阵的第一行中的元素w0.0,……和w0.7可以通过输入锁存操作被输入到mac运算器120的mac电路122,如图11所示。mac电路122可以包括多个乘法器122-11(例如八个乘法器122-11),其数量等于权重矩阵的列数。在这种情况下,权重矩阵的第一行中的元素w0.0,……和w0.7可以被分别输入到八个乘法器122-11。

在步骤307,pim控制器200的mac命令生成器240可以生成第二mac输入锁存信号mac_l2并将其发送给pim设备100,如图10所示。第二mac输入锁存信号mac_l2可以控制pim设备100的mac运算器120的第二数据的输入锁存操作。向量矩阵的第一列中的元素x0.0,……和x7.0可以通过输入锁存操作被输入到mac运算器120的mac电路122,如图11所示。在这种情况下,向量矩阵的第一列中的元素x0.0,……和x7.0可以被分别输入到八个乘法器122-11。

在步骤308,mac运算器120的mac电路122可以执行被输入到mac电路122的、权重矩阵的第r行和向量矩阵的第一列的mac算术运算。“r”的初始值可以设置为“1”。因此,可以第一次执行权重矩阵的第一行和向量矩阵的第一列的mac算术运算。例如,计算“m×n”权重矩阵的第r个“1×n”行向量和“n×1”向量矩阵的标量积作为“m×1”mac结果矩阵的“r×1”元素。对于r=1,图5中所示的权重矩阵的第一行和向量矩阵的第一列的标量积为w0.0×x0.0+w0.1×x1.0+w0.2×x2.0+w0.3×x3.0+w0.4×x4.0+w0.5×x5.0+w0.6×x6.0+w0.7×x7.0。具体地,乘法逻辑电路122-1的每个乘法器122-11可以执行输入数据的乘法计算,并且乘法计算的结果数据可以被输入到加法逻辑电路122-2。如图11所示,加法逻辑电路122-2可以包括布置在第一级的四个加法器122-21a、布置在第二级的两个加法器122-21b以及布置在第三级的加法器122-21c。

布置在第一级的每个加法器122-21a可以接收两个乘法器122-11的输出数据,并且可以对两个乘法器122-11的输出数据进行加法计算以输出加法计算的结果。布置在第二级的每个加法器122-21b可以接收布置在第一级的两个加法器122-21a的输出数据,并且可以执行两个加法器122-21a的输出数据的加法计算以输出加法计算的结果。布置在第三级的加法器122-21c可以接收布置在第二级的两个加法器122-21b的输出数据,并且可以执行两个加法器122-21b的输出数据的加法计算以输出加法计算的结果。加法逻辑电路122-2的输出数据可以对应于权重矩阵中包括的第一行和向量矩阵中包括的列的mac算术运算的结果数据(即mac结果数据)。因此,加法逻辑电路122-2的输出数据可以对应于位于具有8个元素mac0.0,……和mac7.0的“8×1”mac结果矩阵的第一行的元素mac0.0,如图5所示。如参照图4所述,可以将加法逻辑电路122-2的输出数据mac0.0输入到布置在mac运算器120的数据输出电路123中的输出锁存器123-1。

在步骤309,pim控制器200的mac命令生成器240可以生成mac输出锁存信号mac_l3并将其发送给pim设备100,如图12所示。mac输出锁存信号mac_l3可以控制由pim设备100的mac运算器120执行的mac结果数据mac0.0的输出锁存操作。如参照图4所描述的,从mac运算器120的mac电路122输入的mac结果数据mac0.0可以与mac输出锁存信号mac_l3同步地从输出锁存器123-1输出。从输出锁存器123-1输出的mac结果数据mac0.0可以被输入到数据输出电路123的传输门123-2。

在步骤310,pim控制器200的mac命令生成器240可以生成mac锁存器复位信号mac_l_rst并将其发送给pim设备100,如图13所示。mac锁存器复位信号mac_l_rst可以控制由mac运算器120生成的mac结果数据mac0.0的输出操作以及包括在mac运算器120中的输出锁存器的复位操作。如参照图4所描述的,从mac运算器120的输出锁存器123-1接收mac结果数据mac0.0的传输门123-2可以与mac锁存器复位信号mac_l_rst同步,以输出mac结果数据mac0.0。在一个实施例中,从mac运算器120输出的mac结果数据mac0.0可以通过pim设备100中的第一bio线或第二bio线储存到第一存储体111或第二存储体112中。

在步骤311,可以将针对其执行mac算术运算的权重矩阵的行号“r”增加“1”。因为在先前的步骤中已经执行了权重矩阵的第一行到第八行当中第一行的mac算术运算,所以在步骤311权重矩阵的行号可以从“1”变为“2”。在步骤312中,可以确定在步骤311中改变的行号是否大于权重矩阵的最后一行(即当前示例的第八行)的行号。因为在步骤311权重矩阵的行号被改变为“2”,所以mac算术运算的过程可以被反馈到步骤304。

如果mac算术运算的过程从步骤312被反馈到步骤304,则对于权重矩阵的增加后的行号,可以再次执行与参照步骤304至310所描述的相同的过程。即,随着权重矩阵的行号从“1”变为“2”,可以对权重矩阵的第二行、而不是权重矩阵的第一行来执行与向量矩阵的mac算术运算。如果在步骤312中将mac算术运算的过程反馈到步骤304,则可以迭代地执行从步骤304到步骤311的过程,直到针对权重矩阵的所有行都执行了与向量矩阵的mac算术运算为止。如果在步骤311中针对权重矩阵的第八行的mac算术运算终止并且权重矩阵的行号从“8”变为“9”,则由于在步骤312中为“9”的行号大于最后的行号“8”,所以可以终止mac算术运算。

图14示出在根据本公开的第一实施例的pim系统1-1中执行的mac算术运算的另一示例。如图14所示,由pim系统1-1执行的mac算术运算还可包括mac结果矩阵和偏置(bias)矩阵的加法计算。具体地,如参照图5所描述的,pim设备100可以根据pim控制器200的控制来执行“8×8”权重矩阵和“8×1”向量矩阵的矩阵乘法计算。作为“8×8”权重矩阵和“8×1”矢量矩阵的矩阵乘法计算的结果,可以生成具有八个元素mac0.0,……和mac7.0的“8×1”mac结果矩阵。可以将“8×1”mac结果矩阵加到“8×1”偏置矩阵。“8×1”偏置矩阵可以具有与偏置数据相对应的元素b0.0,……和b7.0。偏置数据可以被设置用于减小mac结果矩阵的误差。作为mac结果矩阵和偏置矩阵加法计算的结果,可以生成具有8个元素y0.0,……和y7.0的“8×1”偏置结果矩阵。

图15是示出参照图14描述的、在根据本公开的第一实施例的pim系统1-1中的mac算术运算的过程的流程图。此外,图16示出了用于执行图14的在根据本公开的第一实施例的pim系统1-1中的mac算术运算的mac运算器120-1的配置的示例。在图16中,与图4中所使用的相同附图标记或相同参考符号表示相同的元件,并且在下文中将省略与先前实施例中指示的相同的元件的详细描述。参照图15,可以在步骤321将第一数据(即权重数据)写入第一存储体111中,以在pim设备100中执行mac算术运算。因此,可以将权重数据储存在pim设备100的第一存储体111中。在本实施例中,可以假设权重数据是构成图14的权重矩阵的元素w0.0,……和w7.7。

在步骤322,可以确定是否请求推断。推断请求信号可以从位于pim系统1-1外部的外部设备发送给pim系统1-1的pim控制器200。在一个实施例中,如果没有推断请求信号被发送给pim控制器200,则pim系统1-1可以处于待机模式,直到推断请求信号被发送给pim控制器200。可替代地,如果没有推断请求信号被发送到pim控制器200,则pim系统1-1可以在存储模式下执行除mac算术运算之外的操作(例如数据读取/写入操作),直到推断请求信号被发送给pim控制器200为止。在本实施例中,可以假设第二数据(即向量数据)与推断请求信号一起被发送。另外,可以假设向量数据是构成图14的向量矩阵的元素x0.0,……和x7.0。如果在步骤322将推断请求信号发送给pim控制器200,则在步骤323,pim控制器200可以将与推断请求信号一起发送的向量数据写入第二存储体112。因此,向量数据可以被储存在pim设备100的第二存储体112中。

在步骤324,可以将mac运算器的输出锁存器初始设置为具有偏置数据,可以将初始设置的偏置数据反馈给mac运算器的累加加法器。执行该处理以执行mac结果矩阵和偏置矩阵的矩阵加法计算,这参照图14进行描述。换句话说,mac运算器(120-1)的数据输出电路123-a中的输出锁存器123-1被设置为具有偏置数据。因为对于权重矩阵的第一行执行矩阵乘法计算,所以输出锁存器123-1可以初始设置为使位于偏置矩阵的第一行和第一列的交点处的元素b0.0作为偏置数据。输出锁存器123-1可以输出偏置数据b0.0,并且从输出锁存器123-1输出的偏置数据b0.0可以被输入到加法逻辑电路122-2的累加加法器122-21d,如图16所示。

在一个实施例中,为了从输出锁存器123-1中输出偏置数据b0.0并将偏置数据b0.0反馈到累加加法器122-21d,pim控制器200的mac命令生成器240可以将mac输出锁存信号mac_l3发送给pim设备100的mac运算器120-1。当执行随后的mac算术运算时,mac运算器120-1的累加加法器122-21d可以将从布置在最后一级的加法器122-21c输出的mac结果数据mac0.0与从输出锁存器123-1反馈的偏置数据b0.0相加,以生成偏置结果数据y0.0,并且可以将偏置结果数据y0.0输出给输出锁存器123-1。可以与在随后的过程中发送的mac输出锁存信号mac_l3同步地从输出锁存器123-1输出偏置结果数据y0.0。

在步骤325中,pim控制器200的mac命令生成器240可以生成第一mac读取信号mac_rd_bk0并将其发送给pim设备100。此外,pim控制器200的地址生成器250可以生成存储体选择信号bs和行/列地址addr_r/addr_c并将其发送给pim设备100。步骤325可以以与参照图7所描述的相同的方式来执行。在步骤326中,pim控制器200的mac命令生成器240可以生成第二mac读取信号mac_rd_bk1并将其发送给pim设备100。此外,pim控制器200的地址生成器250可以生成用于选择第二存储体112的存储体选择信号bs和行/列地址addr_r/addr_c并将其发送给pim设备100。步骤326可以以与参照图8描述的相同的方式执行。

在步骤327,pim控制器200的mac命令生成器240可以生成第一mac输入锁存信号mac_l1并将其发送给pim设备100。步骤327可以以与参照图9描述的相同的方式执行。第一mac输入锁存信号mac_l1可以控制用于pim设备100的mac运算器120的第一数据的输入锁存操作。可以以与参照图11所述相同的方式执行第一数据的输入锁存操作。在步骤328,pim控制器200的mac命令生成器240可以生成第二mac输入锁存信号mac_l2并将其发送给pim设备100。步骤328可以以与参照图10描述的相同的方式执行。第二mac输入锁存信号mac_l2可以控制pim设备100的mac运算器120的第二数据的输入锁存操作。第二数据的输入锁存操作可以以与参照图11描述的相同的方式执行。

在步骤329,mac运算器120的mac电路122可以执行被输入到mac电路122的、权重矩阵的第r行和向量矩阵的第一列的mac算术运算。“r”的初始值可以设置为“1”。因此,可以第一次执行权重矩阵的第一行和向量矩阵的第一列的mac算术运算。具体地,乘法逻辑电路122-1的每个乘法器122-11可以执行输入数据的乘法计算,并且乘法计算的结果数据可以被输入到加法逻辑电路122-2。加法逻辑电路122-2可以包括布置在第一级的四个加法器122-21a、布置在第二级的两个加法器122-21b、布置在第三级的加法器122-21c以及累加加法器122-21d,如图16所示。累加加法器122-21d可以将加法器122-21c的输出数据与从输出锁存器123-1反馈的反馈数据相加,以输出加法计算的结果。加法器122-21c的输出数据可以是矩阵乘法结果mac0.0,其对应于权重矩阵的第一行和向量矩阵的第一列的矩阵乘法计算的结果。累加加法器122-21d可以将加法器122-21c的输出数据mac0.0与从输出锁存器123-1反馈的偏置数据b0.0相加,以输出加法计算的结果。累加加法器122-21d的输出数据y0.0可以被输入到布置在mac运算器120-1的数据输出电路123-a中的输出锁存器123。

在步骤330中,pim控制器200的mac命令生成器240可以生成mac输出锁存信号mac_l3并将其发送给pim设备100。步骤330可以以与参照图12描述的相同的方式执行。mac输出锁存信号mac_l3可以控制由pim设备100的mac运算器120-1执行的mac结果数据mac0.0的输出锁存操作。从mac运算器120的mac电路122发送给输出锁存器123-1的偏置结果数据y0.0可以与mac输出锁存信号mac_l3同步地从输出锁存器123-1被输出。从输出锁存器123输出的偏置结果数据y0.0可以被输入到传输门123-2。

在步骤331,pim控制器200的mac命令生成器240可以生成mac锁存器复位信号mac_l_rst并将其发送给pim设备100。步骤331可以以与参照图13描述的相同的方式执行。mac锁存器复位信号mac_l_rst可以控制由mac运算器120生成的偏置结果数据y0.0的输出操作以及包括在mac运算器120中的输出锁存器123-1的复位操作。传输门123-2从包括在mac运算器120中的数据输出电路123-a的输出锁存器123-1接收偏置结果数据y0.0,可以与mac锁存器复位信号mac_l_rst同步,以输出偏置结果数据y0.0。在一个实施例中,从mac运算器120输出的偏置结果数据y0.0可以通过pim设备100中的第一bio线或第二bio线储存到第一存储体111或第二存储体112中。

在步骤332,可以将针对其执行mac算术运算的权重矩阵的行号“r”增加“1”。因为在先前的步骤期间已经执行了权重矩阵的第一行到第八行当中第一行的mac算术运算,所以在步骤332可以将权重矩阵的行号从“1”变为“2”。在步骤333中,可以确定在步骤332中改变的行号是否大于权重矩阵的最后一行(即当前示例的第八行)的行号。因为权重矩阵的行号在步骤332被改变为“2”,所以mac算术运算的过程可以被反馈到步骤324。

如果mac算术运算的过程从步骤333反馈到步骤324,则可以针对权重矩阵的增加的行号再次执行与参考步骤324至331描述的相同的过程。即,随着权重矩阵的行号从“1”变为“2”,可以对权重矩阵的第二行、而不是权重矩阵的第一行执行与向量矩阵的mac算术运算,以及可以将输出锁存器123-1中的在步骤324最初设置的偏置数据b0.0改变为偏置数据b1.0。如果在步骤333将mac算术运算的过程反馈到步骤324,则可以迭代地执行从步骤324到步骤332的过程,直到针对权重矩阵的所有行都执行了与向量矩阵的mac算术运算为止。如果在步骤332针对权重矩阵的第八行的mac算术运算终止并且权重矩阵的行号从“8”变为“9”,则由于在步骤333中为“9”的行号大于最后的行号“8”,所以可以终止mac算术运算。

图17示出了在根据本公开的第一实施例的pim系统1-1中执行的mac算术运算的还又一示例。如图17所示,由pim系统1-1执行的mac算术运算可以进一步包括用于将偏置结果矩阵应用于激活函数的过程。具体地,如参照图14所描述的,pim设备100可以根据pim控制器200的控制来执行“8×8”权重矩阵和“8×1”向量矩阵的矩阵乘法计算,以生成mac结果矩阵。另外,可以将mac结果矩阵加到偏置矩阵以生成偏置结果矩阵。

偏置结果矩阵可以应用于激活函数。激活函数是指被用来在mlp型神经网络中通过将mac计算值与临界值进行比较而计算唯一输出值的函数。在一个实施例中,激活函数可以是仅生成正输出值的单极激活函数,或者可以是生成负输出值以及正输出值的双极激活函数。在不同的实施例中,激活函数可以包括s形函数、双曲正切(tanh)函数、修正线性单元(relu)函数、泄漏relu函数、恒等(identity)函数和maxout函数。

图18是示出参照图17描述的、在根据本公开的第一实施例的pim系统1-1中mac算术运算的过程的流程图。此外,图19示出了用于执行图17的在根据本公开的第一实施例的pim系统1-1中的mac算术运算的mac运算器120-2的配置的示例。在图19中,与图4中使用的相同的附图标记或相同的参考符号表示相同的元件,并且在下文中将省略与先前实施例中提到的相同的元件的详细描述。参照图18,可以在步骤341将第一数据(即权重数据)写入第一存储体111,以在pim设备100中执行mac算术运算。因此,可以将权重数据储存在pim设备100的第一存储体中。在本实施例中,可以假设权重数据是构成图17的权重矩阵的元素w0.0,……和w7.7。

在步骤342,可以确定是否请求推断。推断请求信号可以从位于pim系统1-1外部的外部设备发送给pim系统1-1的pim控制器200。在一个实施例中,如果没有推断请求信号被发送给pim控制器200,则pim系统1-1可以处于待机模式,直到推断请求信号被发送给pim控制器200。可替代地,如果没有推断请求信号被发送到pim控制器200,则pim系统1-1可以在存储模式下执行除mac算术运算之外的操作(例如数据读取/写入操作),直到推断请求信号被发送给pim控制器200为止。在本实施例中,可以假设第二数据(即向量数据)与推断请求信号一起被发送。另外,可以假设向量数据是构成图17的向量矩阵的元素x0.0,……和x7.0。如果在步骤342将推断请求信号发送给pim控制器200,则在步骤343,pim控制器200可以将与推断请求信号一起发送的向量数据写入第二存储体112。因此,向量数据可以储存在pim设备100的第二存储体112中。

在步骤344,可以将mac运算器的输出锁存器初始设置为具有偏置数据,并且可以将初始设置的偏置数据反馈给mac运算器的累加加法器。执行该过程,以执行mac结果矩阵和偏置矩阵的矩阵加法计算,这将参照图17进行描述。即,如图19所示,可以将mac运算器(图19的120-2)的输出锁存器123-1初始设置为具有偏置矩阵的偏置数据。因为针对权重矩阵的第一行执行矩阵乘法计算,所以可以将位于偏置矩阵的第一行第一列的元素b0.0初始设置为输出锁存器123-1中的偏置数据。输出锁存器123-1可以输出偏置数据b0.0,并且从输出锁存器123-1输出的偏置数据b0.0可以被输入到mac运算器120-2的累加加法器122-21d。

在一个实施例中,为了从输出锁存器123-1中输出偏置数据b0.0并将偏置数据b0.0反馈到累加加法器122-21d,该pim控制器200的mac命令生成器240可以将mac输出锁存信号mac_l3发送给pim设备100的mac运算器120-2。当执行随后的mac算术运算时,mac运算器120-2的累加加法器122-21d可以将从布置在最后一级的加法器122-21c输出的mac结果数据mac0.0与从输出锁存器123-1反馈的偏置数据b0.0相加,以生成偏置结果数据y0.0,并且可以将偏置结果数据y0.0输出给输出锁存器123-1。如图19所示,可以与在随后的过程中发送的mac输出锁存信号mac_l3同步地将偏置结果数据y0.0从输出锁存器123-1发送给布置在mac运算器120-2的数据输出电路123-b中的激活函数逻辑电路123-5。

在步骤345中,pim控制器200的mac命令生成器240可以生成第一mac读取信号mac_rd_bk0并将其发送给pim设备100。另外,pim控制器200的地址生成器250可以生成存储体选择信号bs和行/列地址addr_r/addr_c并将其发送给pim设备100。步骤345可以以与参照图7所描述的相同的方式来执行。在步骤346中,pim控制器200的mac命令生成器240可以生成第二mac读取信号mac_rd_bk1并将其发送给pim设备100。此外,pim控制器200的地址生成器250可以生成用于选择第二存储体112的存储体选择信号bs和行/列地址addr_r/addr_c并将其发送给pim设备100。步骤346可以以与参照图8描述的相同的方式执行。

在步骤347中,pim控制器200的mac命令生成器240可以生成第一mac输入锁存信号mac_l1并将其发送给pim设备100。步骤347可以以与参照图9描述的相同的方式执行。第一mac输入锁存信号mac_l1可以控制pim设备100的mac运算器120的第一数据的输入锁存操作。可以以与参照图11所述相同的方式执行第一数据的输入锁存操作。在步骤348,pim控制器200的mac命令生成器240可以生成第二mac输入锁存信号mac_l2并将其发送给pim设备100。步骤348可以以与参照图10描述的相同的方式执行。第二mac输入锁存信号mac_l2可以控制pim设备100的mac运算器120的第二数据的输入锁存操作。第二数据的输入锁存操作可以以与参照图11描述的相同的方式执行。

在步骤349,mac运算器120的mac电路122可以执行被输入到mac电路122的、权重矩阵的第r行和向量矩阵的第一列的mac算术运算。“r”的初始值可以设置为“1”。因此,可以第一次执行权重矩阵的第一行和向量矩阵的第一列的mac算术运算。具体地,乘法逻辑电路122-1的每个乘法器122-11可以执行输入数据的乘法计算,并且乘法计算的结果数据可以被输入到加法逻辑电路122-2。加法逻辑电路122-2可以包括布置在第一级的四个加法器122-21a、布置在第二级的两个加法器122-21b、布置在第三级的加法器122-21c、以及累加加法器122-21d,如图19所示。累加加法器122-21d可以将加法器122-21c的输出数据加到从输出锁存器123-1反馈的反馈数据上,以输出加法计算的结果。加法器122-21c的输出数据可以是“8×1”mac结果矩阵的元素mac0.0,其对应于权重矩阵的第一行和向量矩阵的第一列的矩阵乘法计算的结果。累加加法器122-21d可以将加法器122-21c的输出数据mac0.0加到从输出锁存器123-1反馈的偏置数据b0.0上,以输出加法计算的结果。累加加法器122-21d的输出数据y0.0可以被输入到布置在mac运算器120的数据输出电路123-a中的输出锁存器123-1。

在步骤350中,pim控制器200的mac命令生成器240可以生成mac输出锁存信号mac_l3并将其发送给pim设备100。步骤350可以以与参照图12描述的相同的方式执行。mac输出锁存器信号mac_l3可以控制包括在pim设备100的mac运算器120中的输出锁存器123-1的输出锁存操作。从mac运算器120的mac电路122发送给输出锁存器123-1的偏置结果数据y0.0可以与mac输出锁存器信号mac_l3同步地从输出锁存器123-1输出。从输出锁存器123-1输出的偏置结果数据y0.0可以被输入到激活函数逻辑电路123-5。在步骤351,激活函数逻辑电路123-5可以将激活函数应用于偏置结果数据y0.0以生成最终输出值,并且可以将最终输出值输入至传输门(图4的123-2)。例如,这是r的电流的最终输出值,r在步骤354中递增。

在步骤352中,pim控制器200的mac命令生成器240可以生成mac锁存器复位信号mac_l_rst并将其发送给pim设备100。步骤352可以以与参照图13描述的相同的方式执行。mac锁存器复位信号mac_l_rst可以控制由mac运算器120生成的最终输出值的输出操作和包括在mac运算器120中的输出锁存器123-1的复位操作。传输门123-2从mac运算器120中包括的数据输出电路123-b的激活函数逻辑电路123-5接收最终输出值,可以与mac锁存器复位信号mac_l_rst同步,以输出最终输出值。在一个实施例中,从mac运算器120输出的最终输出值可以通过pim设备100中的第一bio线或第二bio线储存到第一存储体111或第二存储体112中。

在步骤353中,可以将针对其执行mac算术运算的权重矩阵的行号“r”增加“1”。因为在先前的步骤期间已经执行了权重矩阵的第一行至八行当中第一行的mac算术运算,所以在步骤353中权重矩阵的行号可以从“1”变为“2”。在步骤354中,可以确定在步骤353中经改变的行号是否大于权重矩阵的最后一行(即第八行)的行号。因为在步骤353将权重矩阵的行号变为“2”,所以可以将mac算术运算的过程反馈到步骤344。

如果将mac算术运算的过程从步骤354反馈到步骤344,则可以针对权重矩阵的增加的行号再次执行与参考步骤344至354所述的相同的过程。即,随着权重矩阵的行号从“1”变为“2”,可以对权重矩阵的第二行、而不是权重矩阵的第一行执行与向量矩阵的mac算术运算,以及可以将输出锁存器123-1中的在步骤344初始设置的偏置数据b0.0改变为偏置数据b1.0。如果将mac算术运算的过程从步骤354反馈到步骤344,则可以迭代地执行从步骤344到步骤354的过程,直到对权重矩阵的所有行都执行了与向量矩阵的mac算术运算为止。对于一个实施例,多个最终输出值(即,针对r的每个递增后的值的一个最终输出值)代表“n×1”最终结果矩阵。如果在步骤354中针对权重矩阵的第八行的mac算术运算终止并且权重矩阵的行号从“8”变为“9”,则由于在步骤354中为“9”的行号大于最后一行的行号“8”,所以可以终止mac算术运算。

图20是示出根据本公开的第二实施例的pim系统1-2的框图。在图20中,与图2中所使用的相同的附图标记或相同的参考符号表示相同的要素。如图20所示,pim系统1-2可以被配置为包括pim设备400和pim控制器500。pim设备400可以被配置为包括与储存区相对应的存储体(bank)411、全局缓冲器412、mac运算器420、接口(i/f)431和数据输入/输出(i/o)焊盘432。对于一个实施例,mac运算器420表示mac运算器电路。pim设备400中包括的存储体(bank)411和mac运算器420可以构成一个mac单元。在另一个实施例中,pim设备400可以包括多个mac单元。存储体(bank)411可以表示用于储存数据的存储区,例如dram装置。全局缓冲器412还可以表示用于储存数据的存储区,例如dram装置或sram装置。存储体(bank)411可以是独立激活的组件单元,并且可以被配置为具有与pim设备400中的数据i/o线相同的数据总线宽度。在一个实施例中,存储体411可以通过交错来操作,使得在选择另一个存储体的时并行执行存储体411的激活操作。存储体411可以包括至少一个单元阵列,该至少一个单元阵列包括位于多个行和多个列的交叉点处的存储单位单元。

尽管在附图中未示出,但是可以在存储体411附近设置核心电路。核心电路可以包括x译码器xdec和y译码器/io电路ydec/io。x译码器xdec也可以被称为字线译码器或行译码器。x译码器xdec可以从pim控制器500接收行地址addr_r,并且可以对行地址addr_r进行译码,以选择并使能耦接到所选存储体的行(即字线)之一。每个y译码器/io电路ydec/io可以包括y译码器ydec和i/o电路io。y译码器ydec也可以被称为位线译码器或列译码器。y译码器ydec可以从pim控制器500接收列地址add_c,并且可以对列地址add_c进行译码,以选择并使能耦接到所选存储体的列(即位线)之一。每个i/o电路可以包括i/o感测放大器,用于在对存储体411的读取操作期间感测和放大从对应的存储体输出的读取数据的电平。此外,i/o电路可以包括用于在存储体411的写入操作期间驱动写入数据的写入驱动器。

pim设备400的mac运算器420可以具有与参照图4描述的mac运算器120几乎相同的配置。即,mac运算器420可以被配置为包括数据输入电路121、mac电路122和数据输出电路123,如参照图4所描述的。数据输入电路121可以被配置为包括第一输入锁存器121-1和第二输入锁存器121-2。mac电路122可以被配置为包括乘法逻辑电路122-1和加法逻辑电路122-2。数据输出电路123可以被配置为包括输出锁存器123-1、传输门123-2、延迟电路123-3和反相器123-4。在一个实施例中,可以使用触发器来实现第一输入锁存器121-1、第二输入锁存器121-2和输出锁存器123-1。

mac运算器420可以不同于mac运算器120的地方在于:将mac输入锁存信号mac_l1同时输入到第一输入锁存器121-1和第二输入锁存器121-2的时钟端子两者。如以下描述中所示,可以将权重数据和向量数据同时发送给在根据本实施例的pim系统1-2中包括的pim设备400的mac运算器420。即,可以将第一数据da1(即权重数据)和第二数据da2(即向量数据)同时分别输入到构成数据输入电路121的第一输入锁存器121-1和第二数据锁存器121-2两者。因此,可以不必要向第一输入锁存器121-1和第二输入锁存器121-2的时钟端子施加额外的控制信号,因而可以将mac输入锁存信号mac_l1同时输入到mac运算器420中包括的第一输入锁存器121-1和第二输入锁存器121-2的时钟端子两者。

在另一个实施例中,mac运算器420可以被实现为具有与参照图16描述的用于执行图14所示操作的mac运算器120-1相同的配置。即使在这种情况下,mac运算器420也可以具有与参照图16所描述的相同的配置,除了将mac输入锁存信号mac_l1同时输入到构成数据输入电路121的第一输入锁存器121-1和第二输入锁存器121-2的时钟端子两者之外。在又另一实施例中,mac运算器420可以被实现为具有与参照图19描述的用于执行图17中所示操作的mac运算器120-2相同的配置。即使在这种情况下,mac运算器420也可以具有与参照图19所描述的相同的配置,除了将mac输入锁存信号mac_l1同时输入到构成数据输入电路121的第一输入锁存器121-1和第二输入锁存器121-2的时钟端子两者之外。

pim设备400的接口431可以从pim控制器500接收存储命令m_cmd、mac命令mac_cmd、存储体选择信号bs以及行/列地址addr_r/addr_c。接口431可以将存储命令m_cmd与存储体选择信号bs以及行/列地址addr_r/addr_c一起输出给存储体411。接口431可以将mac命令mac_cmd输出给存储体411和mac运算器420。在这种情况下,接口431可以将存储体选择信号bs和行/列地址addr_r/addr_c输出给存储体411。pim设备400的数据i/o焊盘432可以用作pim设备400的外部设备、包括在pim设备400中的全局缓冲器412和mac单元(其包括存储体411和mac运算器420)之间的数据通信端子。pim设备400的外部设备可以对应于pim系统1-2的pim控制器500或位于pim系统1-2外部的主机。因此,从主机或pim控制器500输出的数据可以通过数据i/o焊盘432输入到pim设备400。此外,由pim设备400生成的数据可以通过数据i/o焊盘432被发送给pim设备400的外部设备。

pim控制器500可以控制pim设备400的运行。在一个实施例中,pim控制器500可以控制pim设备400,使得pim设备400在存储模式或mac模式下运行。在pim控制器500控制pim设备400使得pim设备400在存储模式下运行的情况下,pim设备400可以对存储体411执行数据读取操作或数据写入操作。在pim控制器500控制pim设备400使得pim设备400在mac模式下运行的情况下,pim设备400可以对mac运算器420执行mac算术运算。在pim控制器500控制pim设备400使得pim设备400在mac模式下运行的情况下,pim设备400也可以对存储体411和全局缓冲器412执行数据读取操作和数据写入操作,以执行mac算术运算。

pim控制器500可以被配置为包括命令队列逻辑210、调度器220、存储命令生成器230、mac命令生成器540和地址生成器550。调度器220可以包括模式选择器221。命令队列逻辑210可以从外部设备(例如pim系统1-2的主机)接收请求req,并且将与请求req相对应的命令队列储存在命令队列逻辑210中。可以根据由调度器220确定的顺序将储存在命令队列逻辑210中的命令队列发送给存储命令生成器230或mac命令生成器540。当从命令队列逻辑210输出储存在命令队列逻辑210中的命令队列时,调度器220可以调整命令队列的定时。调度器210可以包括模式选择器221,该模式选择器221产生模式选择信号,该模式选择信号包括关于储存在命令队列逻辑210中的命令队列是与存储模式有关、还是与mac模式有关的信息。存储命令生成器230可以从命令队列逻辑210接收与pim设备400的存储模式有关的命令队列,以产生和输出存储命令m_cmd。命令队列逻辑210、调度器220、模式选择器221和存储命令生成器230可以具有与参照图2所描述的相同的功能。

mac命令生成器540可以从命令队列逻辑210接收与pim设备400的mac模式有关的命令队列。mac命令生成器540可以对命令队列进行译码,以生成并输出mac命令mac_cmd。从mac命令生成器540输出的mac命令mac_cmd可以被发送给pim设备400。对于pim设备400的存储体411的数据读取操作可以由从mac命令生成器540输出的mac命令mac_cmd来执行,并且mac运算器420的mac算术运算也可以由从mac命令生成器540输出的mac命令mac_cmd执行。将参照图21详细地描述mac命令mac_cmd和pim设备400的根据mac命令mac_cmd的mac算术运算。

地址生成器550可以从命令队列逻辑210接收地址信息。地址生成器550可以生成用于选择存储体的存储体选择信号bs,其中,例如,存储体411表示多个存储体。地址生成器550可以将存储体选择信号bs发送给pim设备400。此外,地址生成器550可以生成用于访问存储体411中的区域(例如存储单元)的行地址addr_r和列地址addr_c,并且可以将行地址addr_r和列地址addr_c发送给pim设备400。

图21示出从在根据本公开的第二实施例的pim系统1-2中包括的mac命令生成器540输出的mac命令mac_cmd。如图21所示,mac命令mac_cmd可以包括第一至第四mac命令信号。在一个实施例中,第一mac命令信号可以是mac读取信号mac_rd_bk,第二mac命令信号可以是mac输入锁存信号mac_l1,第三mac命令信号可以是mac输出锁存信号mac_l3,第四mac命令该信号可以是mac锁存器复位信号mac_l_rst。

mac读取信号mac_rd_bk可以控制用于从存储体411中读取出第一数据(例如权重数据)以将第一数据发送给mac运算器420的操作。mac输入锁存信号mac_l1可以控制从第一存储体411发送给mac运算器420的权重数据的输入锁存操作。mac输出锁存信号mac_l3可以控制由mac运算器420生成的mac结果数据的输出锁存操作。并且,mac锁存器复位信号mac_l_rst可以控制由mac运算器420生成的mac结果数据的输出操作以及包括在mac运算器420中的输出锁存器的复位操作。

根据本实施例的pim系统1-2还可以被配置为执行确定性mac算术运算。因此,可以以固定的时间间隔顺序地生成从pim控制器500发送给pim设备400的mac命令mac_cmd。因此,pim控制器500不需要为mac算术运算而执行的用于生成控制mac算术运算的mac命令mac_cmd的各种操作的任何额外的结束信号。在一个实施例中,由用于控制mac算术运算的mac命令mac_cmd执行的各种操作的等待时间可以被设置为具有固定值,以便执行确定性mac算术运算。在这种情况下,可以以与固定等待时间相对应的固定时间间隔从pim控制器500顺序输出mac命令mac_cmd。

图22是示出参照图5描述的mac算术运算的过程的流程图,其在根据本公开的第二实施例的pim系统1-2中执行。另外,图23至图26是示出图5中示出的mac算术运算的过程的框图,其在根据本公开的第二实施例的pim系统1-2中执行。参照图22至26,可以在步骤361将第一数据(即权重数据)写入存储体411中以执行mac算术运算。因此,权重数据可以储存在pim设备400的存储体411中。在本实施例中,可以假设权重数据是构成图5的权重矩阵的元素w0.0,……和w7.7。

在步骤362,可以确定是否请求推断。可以将推断请求信号从位于pim系统1-2外部的外部设备发送给pim系统1-2的pim控制器500。在一个实施例中,如果没有推断请求信号被发送给pim控制器500,则pim系统1-2可以处于待机模式,直到推断请求信号被发送给pim控制器500。可替代地,如果没有推断请求信号被发送到pim控制器500,则pim系统1-2可以在存储模式下执行除mac算术运算之外的操作(例如数据读取/写入操作),直到推断请求信号被发送给pim控制器500为止。在本实施例中,可以假设第二数据(即向量数据)与推断请求信号一起被发送。另外,可以假设向量数据是构成图5的向量矩阵的元素x0.0,……和x7.0。如果在步骤362将推断请求信号发送给pim控制器500,则在步骤363,pim控制器500可以将与推断请求信号一起发送的向量数据写入全局缓冲器412。因此,向量数据可以储存在pim设备400的全局缓冲器412中。

在步骤364,pim控制器500的mac命令生成器540可以生成mac读取信号mac_rd_bk并将其发送给pim设备400,如图23所示。在这种情况下,pim控制器500的地址生成器550可以生成行/列地址addr_r/addr_c并将其发送给pim设备400。尽管在附图中未示出,但是如果多个存储体设置在pim设备400中,地址生成器550可以将用于在多个存储体当中选择存储体411的存储体选择信号以及行/列地址addr_r/addr_c发送给pim设备400。输入到pim设备400的mac读取信号mac_rd_bk信号可以控制对pim设备400的存储体411的数据读取操作。存储体411可以响应于mac读取信号mac_rd_bk而输出在储存在存储体411的由行/列地址addr_r/addr_c指定的区域中的权重数据的权重矩阵的第一行中的元素w0.0,……和w7.0并将其发送给mac运算器420。在一个实施例中,可以通过bio线来执行从存储体411到mac运算器420的数据传输,该bio线是专门为存储体411和mac运算器420之间的数据传输而设置的。

而且,也可以与从存储体411发送权重数据给mac运算器420时的时间点同步地将储存在全局缓冲器412中的向量数据x0.0,……和x7.0发送给mac运算器420。为了将向量数据x0.0,……和x7.0从全局缓冲器412发送给mac运算器420,可以与从pim控制器500的mac命令生成器540输出的mac读取信号mac_rd_bk同步地来生成用于控制全局缓冲器412的读取操作的控制信号。全局缓冲器412和mac运算器420之间的数据传输可以通过gio线执行。因此,权重数据和向量数据可以分别通过两条分开的传输线独立地发送给mac运算器420。在一个实施例中,权重数据和向量数据可以分别通过bio线和gio线同时被发送给mac运算器420。

在步骤365,pim控制器500的mac命令生成器540可以生成mac输入锁存信号mac_l1并将其发送给pim设备400,如图24所示。mac输入锁存信号mac_l1可以控制用于pim设备400的mac运算器420的权重数据和向量数据的输入锁存操作。在权重矩阵的第一行中的元素w0.0,……和w0.7和在向量矩阵的第一列中的元素x0.0,……和x7.0可以通过输入锁存操作输入到mac运算器420的mac电路122。mac电路122可以包括多个乘法器(例如八个乘法器122-11),其数量等于权重矩阵的列数和向量矩阵的行数。权重矩阵的第一行中的元素w0.0,……和w0.7可以分别输入到第一至第八乘法器122-11,并且向量矩阵的第一列中的元素x0.0,……和x7.0也可以分别输入到第一至第八乘法器122-11。

在步骤366,mac运算器420的mac电路122可以执行被输入到mac电路122的、权重矩阵的第r行和向量矩阵的第一列的mac算术运算。“r”的初始值可以设置为“1”。因此,可以第一次执行权重矩阵的第一行和向量矩阵的第一列的mac算术运算。具体地,如参照图4所描述的,乘法逻辑电路122-1的每个乘法器122-11可以执行输入数据的乘法计算,并且乘法计算的结果数据可以被输入到加法逻辑电路122-2。加法逻辑电路122-2可以从乘法器122-11接收输出数据,并且可以对乘法器122-11的输出数据执行加法计算,以输出加法计算的结果数据。加法逻辑电路122-2的输出数据可以对应于在权重矩阵中包括的第一行和在向量矩阵中包括的列的mac算术运算的结果数据(即mac结果数据)。因此,加法逻辑电路122-2的输出数据可以对应于位于图5所示的具有mac0.0,……和mac7的八个元素的“8×1”mac结果矩阵的第一行的元素mac0.0。如参照图4所描述的,加法逻辑电路122-2的输出数据mac0.0可以被输入到布置在mac运算器420的数据输出电路123中的输出锁存器123-1。

在步骤367,pim控制器500的mac命令生成器540可以生成mac输出锁存信号mac_l3并将其发送给pim设备400,如图25所示。mac输出锁存信号mac_l3可以控制由pim设备400的mac运算器420执行的mac结果数据mac0.0的输出锁存操作。从mac运算器420的mac电路122发送给输出锁存器123-1的mac结果数据mac0.0可以通过与mac输出锁存信号mac_l3同步地执行的输出锁存操作而从输出锁存器123-1输出,如参照图4所述。从输出锁存器123-1输出的mac结果数据mac0.0可以被输入到数据输出电路123的传输门123-2。

在步骤368,pim控制器500的mac命令生成器540可以生成mac锁存器复位信号mac_l_rst并将其发送给pim设备400,如图26所示。mac锁存器复位信号mac_l_rst可以控制由mac运算器420生成的mac结果数据mac0.0的输出操作以及包括在mac运算器420中的输出锁存器123-1的复位操作。如参照图4所描述的,传输门123-2从mac运算器420的输出锁存器123-1接收mac结果数据mac0.0可以与mac锁存器复位信号mac_l_rst同步,以输出mac结果数据mac0.0。在一个实施例中,从mac运算器420输出的mac结果数据mac0.0可以通过pim设备400中的bio线储存到存储体411中。

在步骤369,可以将针对其执行mac算术运算的权重矩阵的行号“r”增加“1”。因为在先前的步骤期间已经执行了权重矩阵的第一行到第八行当中第一行的mac算术运算,所以在步骤369,权重矩阵的行号可以从“1”变为“2”。在步骤370,可以确定在步骤369中改变的行号是否大于权重矩阵的最后一行(即第八行)的行号。因为在步骤370权重矩阵的行号被变为“2”,所以mac算术运算的过程可以被反馈到步骤364。

如果将mac算术运算的过程从步骤370反馈到步骤364,则可以针对权重矩阵的增加后的行号再次执行与参考步骤364至370所述的相同的过程。即,随着权重矩阵的行号从“1”变为“2”,可以对权重矩阵的第二行、而不是权重矩阵的第一行执行与向量矩阵mac的算术运算。如果将mac算术运算的过程从步骤370反馈到步骤364,则可以迭代地执行从步骤364到步骤370的过程,直到对权重矩阵的所有行都执行了与向量矩阵的mac算术运算为止。如果在步骤369中针对权重矩阵的第八行的mac算术运算终止并且权重矩阵的行号从“8”变为“9”,则由于在步骤370中为“9”的行号大于最后的行号“8”,所以可以终止mac算术运算。

图27是示出参照图14描述的mac算术运算的过程的流程图,其在根据本公开的第二实施例的pim系统1-2中执行。为了执行根据本实施例的mac算术运算,pim设备400的mac运算器420可以具有与图16所示的mac运算器120-1相同的配置。参照图20和27,可以在步骤381将第一数据(即权重数据)写入存储体411中,以执行mac算术运算。因此,权重数据可以储存在pim设备400的存储体411中。在本实施例中,可以假设权重数据是构成图14的权重矩阵的元素w0.0,……和w7.7。

在步骤382,可以确定是否请求推断。可以将推断请求信号从位于pim系统1-2外部的外部设备发送给pim系统1-2的pim控制器500。在一个实施例中,如果没有推断请求信号被发送给pim控制器500,则pim系统1-2可以处于待机模式,直到推断请求信号被发送给pim控制器500。可替代地,如果没有推断请求信号被发送到pim控制器500,则pim系统1-2可以在存储模式下执行除mac算术运算之外的操作(例如数据读取/写入操作),直到推断请求信号被发送给pim控制器500为止。在本实施例中,可以假设第二数据(即向量数据)与推断请求信号一起被发送。另外,可以假设向量数据是构成图14的向量矩阵的元素x0.0,……和x7.0。如果在步骤382将推断请求信号发送给pim控制器500,则在步骤383,pim控制器500可以将与推断请求信号一起发送的向量数据写入全局缓冲器412。因此,向量数据可以储存在pim设备400的全局缓冲器412中。

在步骤384,可以将mac运算器420的输出锁存器初始设置为具有偏置数据,并且可以将初始设置的偏置数据反馈给mac运算器420的累加加法器。执行该过程以执行mac结果矩阵和偏置矩阵的矩阵加法计算,其参照图14被描述。即,如图16所示,可以将包括在mac运算器420中的数据输出电路123-a的输出锁存器123-1初始设置为具有偏置矩阵的偏置数据。因为针对权重矩阵的第一行执行矩阵乘法计算,所以可以将位于偏置矩阵的第一行的元素b0.0初始设置为输出锁存器123-1中的偏置数据。输出锁存器123-1可以输出偏置数据b0.0,并且可以将从输出锁存器123-1输出的偏置数据b0.0输入到包括在mac运算器420中的加法逻辑电路122-2的累加加法器122-21d。

在一个实施例中,为了从输出锁存器123-1中输出偏置数据b0.0并将偏置数据b0.0反馈到累加加法器122-21d,pim控制器500的mac命令生成器540可以将mac输出锁存信号mac_l3发送给pim设备400的mac运算器420。当执行随后的mac算术运算时,mac运算器420的累加加法器122-21d可以将从布置在最后一级的加法器122-21c输出的mac结果数据mac0.0与从输出锁存器123-1反馈的偏置数据b0.0相加,以生成偏置结果数据y0.0,并且可以将偏置结果数据y0.0输出给输出锁存器123-1。可以与在随后的过程中发送的mac输出锁存信号mac_l3同步地从输出锁存器123-1输出偏置结果数据y0.0。

在步骤385,pim控制器500的mac命令生成器540可以生成mac读取信号mac_rd_bk并将其发送给pim设备400,如图23所示。在这种情况下,pim控制器500的地址生成器550可以生成行/列地址addr_r/addr_c并将其发送给pim设备400。输入到pim设备400的mac读取信号mac_rd_bk可以控制pim设备400的存储体411的数据读取操作。存储体411可以响应于mac读取信号mac_rd_bk而输出在储存在存储体411的由行/列地址addr_r/addr_c指定的区域中的权重数据的权重矩阵的第一行中的元素w0.0,……和w7.0并将其发送给mac运算器120。在一个实施例中,可以通过bio线来执行从存储体411到mac运算器420的数据传输,该bio线是专门为存储体411和mac运算器420之间的数据传输而设置的。

而且,也可以与从存储体411发送权重数据给mac运算器420时的时间点同步地将储存在全局缓冲器412中的向量数据x0.0,……和x7.0发送给mac运算器420。为了将向量数据x0.0,……和x7.0从全局缓冲器412发送给mac运算器420,可以与从pim控制器500的mac命令生成器540输出的mac读取信号mac_rd_bk同步地来生成用于控制全局缓冲器412的读取操作的控制信号。全局缓冲器412和mac运算器420之间的数据传输可以通过gio线执行。因此,权重数据和向量数据可以分别通过两条分开的传输线独立地发送给mac运算器420。在一个实施例中,权重数据和向量数据可以分别通过bio线和gio线同时被发送给mac运算器420。

在步骤386,pim控制器500的mac命令生成器540可以生成mac输入锁存信号mac_l1并将其发送给pim设备400,如图24所示。mac输入锁存信号mac_l1可以控制用于pim设备400的mac运算器420的权重数据和向量数据的输入锁存操作。在权重矩阵的第一行中的元素w0.0,……和w0.7和在向量矩阵的第一列中的元素x0.0,……和x7.0可以通过输入锁存操作被输入到mac运算器420的mac电路122。mac电路122可以包括多个乘法器(例如八个乘法器122-11),其数量等于权重矩阵的列数和向量矩阵的行数。权重矩阵的第一行中的元素w0.0,……和w0.7可以分别输入到第一至第八乘法器122-11,并且向量矩阵的第一列中的元素x0.0,……和x7.0也可以分别输入到第一至第八乘法器122-11。

在步骤387,mac运算器420的mac电路122可以执行被输入到mac电路122的、权重矩阵的第r行和向量矩阵的第一列的mac算术运算。“r”的初始值可以设置为“1”。因此,可以第一次执行权重矩阵的第一行和向量矩阵的第一列的mac算术运算。具体地,乘法逻辑电路122-1的每个乘法器122-11可以执行输入数据的乘法计算,并且乘法计算的结果数据可以被输入到加法逻辑电路122-2。加法逻辑电路122-2可以接收乘法器122-11的输出数据,并且可以对乘法器122-11的输出数据执行加法计算,以将加法计算的结果数据输出给累加加法器122-21d。在加法逻辑电路122-2中包含的加法器122-21c的输出数据可以对应于在权重矩阵中包括的第一行和在向量矩阵中包括的列的mac算术运算的结果数据(即mac结果数据)。累加加法器122-21d可以将加法器122-21c的输出数据mac0.0加到从输出锁存器123-1反馈的偏置数据b0.0上,并且可以输出加法计算的结果数据。累加加法器122-21d的输出数据(即偏置结果数据y0.0)可以被输入到布置在mac运算器420的数据输出电路123-a中的输出锁存器123-1。

在步骤388,pim控制器500的mac命令生成器540可以生成mac输出锁存信号mac_l3并将其发送给pim设备400,如参照图25所描述的。mac输出锁存信号mac_l3可以控制包括在pim设备400中的mac运算器420的输出锁存器123-1的输出锁存操作。mac运算器420的输出锁存器123-1可以根据与mac输出锁存信号mac_l3同步执行的输出锁存操作而输出偏置结果数据y0.0。从输出锁存器123-1输出的偏置结果数据y0.0可以被输入到数据输出电路123-a的传输门123-2。

在步骤389,pim控制器500的mac命令生成器540可以生成mac锁存器复位信号mac_l_rst并将其发送给pim设备400,如图26所示。mac锁存器复位信号mac_l_rst可以控制由mac运算器420生成的偏置结果数据y0.0的输出操作以及包括在mac运算器420中的输出锁存器123-1的复位操作。传输门123-2从mac运算器420的输出锁存器123-1接收偏置结果数据y0.0可以与mac锁存器复位信号mac_l_rst同步,以输出偏置结果数据y0.0。在一个实施例中,从mac运算器120输出的偏置结果数据y0.0可以通过pim设备400中的bio线储存到存储体411中。

在步骤390中,可以将针对其执行mac算术运算的权重矩阵的行号“r”增加“1”。因为在先前的步骤中已经执行了权重矩阵的第一行到第八行当中第一行的mac算术运算,所以在步骤390权重矩阵的行号可以从“1”变为“2”。在步骤391,可以确定在步骤390中改变的行号是否大于权重矩阵的最后一行(即第八行)的行号。因为权重矩阵的行号在步骤390被变为“2”,所以mac算术运算的过程可以被反馈到步骤384。

如果在步骤391将mac算术运算的过程反馈到步骤384,则可以针对权重矩阵的增加的行号再次执行与参考步骤384至391所述的相同的过程。即,随着权重矩阵的行号从“1”变为“2”,可以对权重矩阵的第二行、而不是权重矩阵的第一行执行与向量矩阵的mac算术运算。如果在步骤391将mac算术运算的过程反馈到步骤384,则可以迭代地执行从步骤384到步骤390的过程,直到对权重矩阵的所有行都执行了与向量矩阵的mac算术运算为止。如果在步骤390中针对权重矩阵的第八行的mac算术运算终止并且权重矩阵的行号从“8”变为“9”,则由于在步骤391中为“9”的行号大于最后的行号“8”,所以可以终止mac算术运算。

图28是示出参照图17描述的mac算术运算的过程的流程图,其在根据本公开的第二实施例的pim系统1-2中执行。为了执行根据本实施例的mac算术运算,pim设备400的mac运算器420可以具有与图19所示的mac运算器120-2相同的配置。参照图19和28,可以在步骤601将第一数据(即权重数据)写入存储体411中,以执行mac算术运算。因此,权重数据可以储存在pim设备400的存储体411中。在本实施例中,可以假设权重数据是构成图17的权重矩阵的元素w0.0,……和w7.7。

在步骤602,可以确定是否请求推断。可以将推断请求信号从位于pim系统1-2外部的外部设备发送给pim系统1-2的pim控制器500。在一个实施例中,如果没有推断请求信号被发送给pim控制器500,则pim系统1-2可以处于待机模式,直到推断请求信号被发送给pim控制器500。可替代地,如果没有推断请求信号被发送到pim控制器500,则pim系统1-2可以在存储模式下执行除mac算术运算之外的操作(例如数据读取/写入操作),直到推断请求信号被发送给pim控制器500为止。在本实施例中,可以假设第二数据(即向量数据)与推断请求信号一起被发送。另外,可以假设向量数据是构成图17的向量矩阵的元素x0.0,……和x7.0。如果在步骤602将推断请求信号发送给pim控制器500,则在步骤603,pim控制器500可以将与推断请求信号一起发送的向量数据写入全局缓冲器412。因此,向量数据可以储存在pim设备400的全局缓冲器412中。

在步骤604,可以将mac运算器420的输出锁存器初始设置为具有偏置数据,并且可以将初始设置的偏置数据反馈给mac运算器420的累加加法器。执行该过程,以执行mac结果矩阵和偏置矩阵的矩阵加法计算,这参照图17被描述。即,如参照图19所述,可以将包括在mac运算器420中的数据输出电路123-b的输出锁存器123-1初始设置为具有偏置矩阵的偏置数据。因为针对权重矩阵的第一行执行矩阵乘法计算,所以可以将位于偏置矩阵的第一行的元素b0.0初始设置为输出锁存器123-1中的偏置数据。输出锁存器123-1可以输出偏置数据b0.0,并且可以将从输出锁存器123-1输出的偏置数据b0.0输入到包括在mac运算器420的加法逻辑电路122-2的累加加法器122-21d。

在一个实施例中,为了从输出锁存器123-1中输出偏置数据b0.0并将偏置数据b0.0反馈到累加加法器122-21d,pim控制器500的mac命令生成器540可以将mac输出锁存信号mac_l3发送给pim设备400的mac运算器420。当执行随后的mac算术运算时,mac运算器420的累加加法器122-21d可以将从布置在加法逻辑电路122-2最后一级的加法器122-21c输出的mac结果数据mac0.0与从输出锁存器123-1反馈的偏置数据b0.0相加,以生成偏置结果数据y0.0,并且可以将偏置结果数据y0.0输出给输出锁存器123-1。可以与在随后的过程中发送的mac输出锁存信号mac_l3同步地从输出锁存器123-1输出偏置结果数据y0.0。

在步骤605,pim控制器500的mac命令生成器540可以生成mac读取信号mac_rd_bk并将其发送给pim设备400,如图23所示。在这种情况下,pim控制器500的地址生成器550可以生成行/列地址addr_r/addr_c并将其发送给pim设备400。输入到pim设备400的mac读取信号mac_rd_bk可以控制pim设备400的存储体411的数据读取操作。存储体411可以响应于mac读取信号mac_rd_bk而输出在储存在存储体411的由行/列地址addr_r/addr_c指定的区域中的权重数据的权重矩阵的第一行中的元素w0.0,……和w7.0并将其发送给mac运算器420。在一个实施例中,可以通过bio线来执行从存储体411到mac运算器420的数据传输,该bio线是专门为存储体411和mac运算器420之间的数据传输而设置的。

而且,也可以与从存储体411发送权重数据给mac运算器420时的时间点同步地将储存在全局缓冲器412中的向量数据x0.0,……和x7.0发送给mac运算器420。为了将向量数据x0.0,……和x7.0从全局缓冲器412发送给mac运算器420,可以与从pim控制器500的mac命令生成器540输出的mac读取信号mac_rd_bk同步地来生成用于控制全局缓冲器412的读取操作的控制信号。全局缓冲器412和mac运算器420之间的数据传输可以通过gio线执行。因此,权重数据和向量数据可以分别通过两条分开的传输线独立地发送给mac运算器420。在一个实施例中,权重数据和向量数据可以分别通过bio线和gio线同时被发送给mac运算器420。

在步骤606,pim控制器500的mac命令生成器540可以生成mac输入锁存信号mac_l1并将其发送给pim设备400,如参照图24所述。mac输入锁存信号mac_l1可以控制针对pim设备400的mac运算器420的权重数据和向量数据的输入锁存操作。在权重矩阵的第一行中的元素w0.0,……和w0.7和在向量矩阵的第一列中的元素x0.0,……和x7.0可以通过输入锁存操作被输入到mac运算器420的mac电路122。mac电路122可以包括多个乘法器(例如八个乘法器122-11),其数量等于权重矩阵的列数和向量矩阵的行数。权重矩阵的第一行中的元素w0.0,……和w0.7可以分别输入到第一至第八乘法器122-11,并且向量矩阵的第一列中的元素x0.0,……和x7.0也可以分别输入到第一至第八乘法器122-11。

在步骤607,mac运算器420的mac电路122可以执行被输入到mac电路122的、权重矩阵的第r行和向量矩阵的第一列的mac算术运算。“r”的初始值可以设置为“1”。因此,可以第一次执行权重矩阵的第一行和向量矩阵的第一列的mac算术运算。具体地,乘法逻辑电路122-1的每个乘法器122-11可以执行输入数据的乘法计算,并且乘法计算的结果数据可以被输入到加法逻辑电路122-2。加法逻辑电路122-2可以接收乘法器122-11的输出数据,并且可以对乘法器122-11的输出数据执行加法计算,以将加法计算的结果数据输出给累加加法器122-21d。在加法逻辑电路122-2中包含的加法器122-21c的输出数据可以对应于在权重矩阵中包括的第一行和在向量矩阵中包括的列的mac算术运算的结果数据(即mac结果数据)。因此,累加加法器122-21d可以将加法器122-21c的输出数据mac0.0加到从输出锁存器123-1反馈的偏置数据b0.0上,并且可以输出加法计算的结果数据。累加加法器122-21d的输出数据(即偏置结果数据y0.0)可以被输入到布置在mac运算器420的数据输出电路123-a中的输出锁存器123-1。

在步骤608,pim控制器500的mac命令生成器540可以生成mac输出锁存信号mac_l3并将其发送给pim设备400,如参照图25所述。mac输出锁存信号mac_l3可以控制包括在pim设备400中的mac运算器420的输出锁存器123-1的输出锁存操作。mac运算器420的输出锁存器123-1可以根据与mac输出锁存信号mac_l3同步执行的输出锁存操作而输出偏置结果数据y0.0。从输出锁存器123-1输出的偏置结果数据y0.0可以被输入到激活函数逻辑电路123-5,如图19所示。在步骤610,激活函数逻辑电路123-5可以将激活函数应用于偏置结果数据y0.0,以生成最终输出值,并且可以将最终输出值输入至传输门(图4中的123-2)。

在步骤610,pim控制器500的mac命令生成器540可以生成mac锁存器复位信号mac_l_rst并将其发送给pim设备400,如参照图26所述。mac锁存器复位信号mac_l_rst可以控制由mac运算器420生成的最终输出值的输出操作和包括在mac运算器420中的输出锁存器123-1的复位操作。传输门123-2从包括在mac运算器420中的数据输出电路123-b的激活函数逻辑电路123-5接收最终输出值可以与mac锁存器复位信号mac_l_rst同步,以输出最终输出值。在一个实施例中,从mac运算器420输出的最终输出值可以通过pim设备400中的bio线存储到存储体411中。

在步骤611,可以将针对其执行mac算术运算的权重矩阵的行号“r”增加“1”。因为在先前的步骤中已经执行了针对权重矩阵的第一行到第八行当中第一行的mac算术运算,所以在步骤611中权重矩阵的行号可以从“1”变为“2”。在步骤612,可以确定在步骤611中改变的行号是否大于权重矩阵的最后一行(即第八行)的行号。因为权重矩阵的行号在步骤611被变为“2”,所以mac算术运算的过程可以被反馈到步骤604。

如果mac算术运算的过程从步骤612被反馈到步骤604,则可以针对权重矩阵的增加后的行号再次执行与参考步骤604至612所述的相同的过程。即,随着权重矩阵的行号从“1”变为“2”,可以对权重矩阵的第二行、而不是权重矩阵的第一行执行与向量矩阵的mac算术运算,以产生mac结果数据(对应于位于mac结果矩阵的第二行中的元素mac1.0)和偏置数据(对应于位于偏置矩阵的第二行中的元素b1.0)。如果从步骤612将mac算术运算的过程反馈到步骤604,则可以迭代地执行从步骤604到步骤612的过程,直到针对权重矩阵的所有行(即第一到第八行)执行了与向量矩阵的mac算术运算为止。如果在步骤611中针对权重矩阵的第八行的mac算术运算终止并且权重矩阵的行号从“8”变为“9”,则由于在步骤612中为“9”的行号大于最后的行号“8”,所以可以终止mac算术运算。

图29是示出根据本公开的第三实施例的pim系统1-3的框图。如图29所示,pim系统1-3可以具有与图2所示的pim系统1-1基本相同的配置,除了与pim系统1-1的pim控制器200相比,pim系统1-3的pim控制器200a还包括模式寄存器组(mrs)260。因此,与参照图2所描述的相同的解释在下文中将被省略。pim控制器200a中的模式寄存器组260可以接收mrs信号,该mrs信号指示pim系统1-3的mac算术运算所需的各种信号的设定。在一个实施例中,模式寄存器组260可以从包括在调度器220中的模式选择器221接收mrs信号。然而,在另一个实施例中,mrs信号可以由除了模式选择器221之外的额外逻辑电路提供。接收mrs信号的模式寄存器组260可以将mrs信号发送给mac命令生成器240。对于一个实施例,mrs260表示mrs电路。

在一个实施例中,mrs信号可以包括关于何时生成mac命令mac_cmd的定时信息。在这种情况下,可以通过由mrs260提供的mrs信号来执行pim系统1-3的确定性操作。在另一个实施例中,mrs信号可以包括关于与mac模式之间的间隔有关的时间确定的信息或关于在mac模式和存储模式之间的模式改变的信息。在一个实施例中,可以在通过从外部设备向pim控制器200a发送的推断请求信号而将向量数据储存在pim设备100的第二存储体112中之前,执行mrs260中的mrs信号的生成。可替代地,可以在通过从外部设备向pim控制器200a发送的推断请求信号而将向量数据储存在pim设备100的第二存储体112中之后,执行mrs260中的mrs信号的生成。

图30是示出根据本公开的第四实施例的pim系统1-4的框图。如图30所示,pim系统1-4可以具有与图20所示的pim系统1-2基本相同的配置,除了与pim系统1-2的pim控制器500相比,pim系统1-4的pim控制器500a还包括模式寄存器组(mrs)260之外。因此,与参照图20所描述的相同的解释在下文中将被省略。pim控制器500a中的模式寄存器组260可以接收mrs信号,该mrs信号指示pim系统1-4的mac算术运算所需的各种信号的设定。在一个实施例中,模式寄存器组260可以从包括在调度器220中的模式选择器221接收mrs信号。然而,在另一个实施例中,mrs信号可以由除了模式选择器221之外的额外逻辑电路提供。接收mrs信号的模式寄存器组260可以将mrs信号发送给mac命令生成器540。

在一个实施例中,mrs信号可以包括关于何时生成mac命令mac_cmd的定时信息。在这种情况下,可以通过由mrs260提供的mrs信号来执行pim系统1-4的确定性操作。在另一个实施例中,mrs信号可以包括关于与mac模式之间的间隔有关的时间确定的信息或关于在mac模式和存储模式之间的模式改变的信息。在一个实施例中,可以在通过从外部设备向pim控制器500a发送的推断请求信号而将向量数据储存在pim设备400的全局缓冲器412中之前,执行mrs260中的mrs信号的生成。可替代地,可以在通过从外部设备向pim控制器500a发送的推断请求信号而将向量数据储存在pim设备400的全局缓冲器412中之后,执行mrs260中的mrs信号的生成。

出于说明性目的,以上已经给出了本教导的有限数量的可能实施例。本领域普通技术人员将理解:各种修改、添加和替换是可能的。尽管该专利文件包含许多细节,但是这些细节不应被解释为对本教导的范围或可要求保护的范围的限制,而应被解释为针对特定实施例的特征的描述。在单独的实施例的上下文中在该专利文件中描述的某些特征也可以在单个实施例中组合地实现。相反,在单个实施例的上下文中描述的各种特征也可以分开地在多个实施例中或以任何合适的子组合来实现。而且,尽管以上可以将特征描述为以某些组合起作用并且甚至最初如此声称,但是在某些情况下,可以从组合中切除所要求保护的组合中的一个或多个特征,并且所要求保护的组合可以是针对子组合或子组合变型的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1