CN111694513A - 包括循环指令存储器队列的存储器器件和方法 - Google Patents
包括循环指令存储器队列的存储器器件和方法 Download PDFInfo
- Publication number
- CN111694513A CN111694513A CN202010165017.8A CN202010165017A CN111694513A CN 111694513 A CN111694513 A CN 111694513A CN 202010165017 A CN202010165017 A CN 202010165017A CN 111694513 A CN111694513 A CN 111694513A
- Authority
- CN
- China
- Prior art keywords
- instruction
- memory
- instructions
- queue
- memory device
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 261
- 238000000034 method Methods 0.000 title claims description 48
- 238000012545 processing Methods 0.000 claims abstract description 104
- 238000003491 array Methods 0.000 claims abstract description 24
- 230000004044 response Effects 0.000 claims abstract description 18
- 230000006870 function Effects 0.000 claims description 24
- 238000013528 artificial neural network Methods 0.000 claims description 20
- 238000010586 diagram Methods 0.000 description 12
- 230000005540 biological transmission Effects 0.000 description 3
- 239000013316 polymer of intrinsic microporosity Substances 0.000 description 3
- 102100021568 B-cell scaffold protein with ankyrin repeats Human genes 0.000 description 2
- 101000971155 Homo sapiens B-cell scaffold protein with ankyrin repeats Proteins 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 241000724291 Tobacco streak virus Species 0.000 description 1
- 101001001642 Xenopus laevis Serine/threonine-protein kinase pim-3 Proteins 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- 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, look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- 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
- G06F12/0607—Interleaved addressing
-
- 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/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- 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, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- 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, look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
- G06F9/3881—Arrangements for communication of instructions and data
-
- 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/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/24—Memory cell safety or protection circuits, e.g. arrangements for preventing inadvertent reading or writing; Status cells; Test cells
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7204—Capacity control, e.g. partitioning, end-of-life degradation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- 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/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
Abstract
一种存储器器件包括:存储器存储体,包括一个或多个存储体阵列;PIM电路,被配置为执行运算逻辑处理操作;以及指令存储器,包括被配置在循环指令队列中以存储由主机提供的指令的第一指令队列段至第m指令队列段,其中存储在第一指令队列段至第m指令队列段中的指令响应于来自主机的操作请求而执行,并且由主机提供的每个新的指令被更新在循环指令队列中的完全执行的指令上。
Description
相关申请的交叉引用
本申请要求于2019年3月11日在美国专利商标局提交的美国临时申请第62/816,509号和2020年2月4日在韩国知识产权局提交的韩国专利申请第10-2020-0013303号的优先权,其公开通过引用而整体并入本文。
技术领域
本发明构思的示例性实施例涉及存储器器件,并且更具体地,涉及包括循环指令存储器队列的存储器器件和方法。
背景技术
用于高性能电子系统的半导体存储器器件的容量和速度日益增加。存储器器件可以用于存储各种信息项,诸如例如用于各种种类的运算逻辑处理操作(诸如神经网络操作)的数据或操作处理结果。此外,为了有效地执行日益增多的操作,设想了一种由存储器器件内的存储器中处理器(Processor In Memory,PIM)电路执行至少一些操作的方法。
对于神经网络功能,在存储器器件中可以执行多个操作并且可以存储用于执行多个操作的指令。当日益增多的指令被存储在存储器器件中时,区域效率可能被降低,并且保护存储器器件的成本可能增加。
发明内容
本发明构思的示例性实施例提供了一种能够提高存储器器件内的指令的存储空间的效率以执行增加数量的操作的存储器器件、以及操作该存储器器件的对应方法。
根据本发明构思的示例性实施例,一种存储器器件包括:存储器存储体,具有存储器单元的一个或多个存储体阵列;存储器中处理器(PIM)电路,被配置为通过使用由主机提供的数据或从存储器存储体读取的数据中的至少一个来执行运算逻辑处理操作;以及指令存储器,包括具有在循环中使用的第一指令队列段至第m指令队列段的循环指令存储器队列,其中m是不小于2的整数,该指令存储器被配置为存储由主机提供的指令。存储在第一指令队列段至第m指令队列段中的指令响应于来自主机的操作请求而执行,当指令存储器基于循环队列技术来存储指令,由主机提供的新的指令被更新在循环队列中的任何段处的完全执行的指令上。
根据本发明构思的示例性实施例,一种存储器器件包括:存储器存储体,包括各自包括存储器单元的一个或多个存储体阵列;存储器中处理器(PIM)电路,被配置为通过使用由主机提供的数据或从存储器存储体读取的数据中的至少一个来执行运算逻辑处理操作;以及指令存储器,包括第一指令队列段至第m指令队列段,其中m是不小于2的整数,该指令存储器被配置为存储由主机提供的指令;索引管理器,被配置为生成对应于存储在指令存储器中的指令的索引;以及索引顺序存储电路,被配置为存储表示来自主机的指令的执行顺序的索引顺序信息。当由主机提供操作请求时,存储在指令存储器中的指令以根据索引顺序信息的顺序被执行。
根据本发明构思的示例性实施例,一种操作存储器器件的方法包括:将用于神经网络功能的多个指令中的一些加载到指令存储器的多个指令队列段上;PIM电路通过顺序地执行加载的指令来执行运算逻辑处理操作;将用于神经网络功能的多个指令中的未执行的其他指令在先前执行的指令上写入指令队列段;以及PIM电路通过顺序地执行未执行的指令来执行运算逻辑处理操作。
附图说明
从结合附图的以下详细描述中,将更清楚地理解本发明构思的示例性实施例,其中:
图1是示出根据本发明构思的示例性实施例的包括存储器器件的数据处理系统的示意性框图;
图2是示出图1的指令存储器的实施方式示例的示意性框图;
图3是示出图1的存储器器件的实施方式示例的示意性框图;
图4是示出根据本发明构思的示例性实施例的存储器器件的操作方法的流程图;
图5是示出根据本发明构思的示例性实施例的存储器系统的操作示例的部分示意性构思图;
图6和图7是示出根据本发明构思的示例性实施例的指令更新操作的部分示意性构思图;
图8是示出根据本发明构思的示例性实施例的与指令更新操作相关的信号的示例的部分示意性构思图;
图9是示出根据本发明构思的示例性实施例的存储器器件的实施方式示例的示意性框图;
图10是示出根据本发明构思的示例性实施例的在其中基于索引顺序执行指令的示例的部分示意性构思图;
图11是示出根据本发明构思的示例性实施例的指令存储示例和索引分配示例的部分示意性构思图;
图12是示出根据本发明构思的示例性实施例的存储器器件的实施方式示例的示意性框图;
图13是示出根据本发明构思的示例性实施例的包括存储器器件的数据处理系统的示意性框图;
图14是示出根据本发明构思的示例性实施例的其中存储器器件包括高带宽存储器(High Bandwidth Memory,HBM)的示例的部分示意性立体图;并且
图15是示出根据本发明构思的实施例的服务器系统的示意性框图。
具体实施方式
在下文中,将参考附图详细描述本发明构思的示例性实施例。
图1示出了根据本发明构思的示例性实施例的包括存储器器件的数据处理系统。
参考图1,存储器系统10可以包括存储器控制器100和存储器器件200。存储器控制器100可以包括存储器接口110,并且可以通过经由存储器接口110向存储器器件200提供各种信号来控制存储器操作,诸如记录和读取。例如,存储器控制器100可以通过向存储器器件200提供命令CMD和地址ADD来访问存储器器件200的数据DATA。
存储器控制器100可以根据来自主机HOST的请求来访问存储器器件200,并且存储器接口110可以与存储器器件200接口。存储器控制器100可以通过使用各种协议与主机HOST进行通信。根据示例性实施例,存储器控制器100可以对应于主机HOST或者在主机HOST中提供的组件。主机HOST、存储器控制器100和存储器器件200可以形成数据处理系统。因此,存储器系统10可以对应于数据处理系统或者被包括在数据处理系统中的一个或多个组件。
存储器器件200可以包括存储器存储体210、指令存储器220、运算逻辑230和控制逻辑240。存储器存储体210可以包括多个存储体阵列,诸如例如第一存储体阵列BANK1至第N存储体阵列BANKN,其中N是不小于2的整数,并且第一存储体阵列BANK1至第N存储体阵列BANKN中的每一个可以包括存储器单元阵列,其中该存储器单元阵列包括多个存储器单元。此外,运算逻辑230可以包括一个或多个存储器中处理器(PIM)电路。在图1中,示出了这样的示例,其中运算逻辑230包括多个PIM电路,诸如例如第一PIM电路231_1至第N PIM电路231_N,以对应于存储器存储体210的N个存储体阵列。然而,运算逻辑230可以包括各种数量的PIM电路。例如,当多个PIM电路被布置为对应于一个存储体或少于N个存储体阵列时,PIM电路的数量可以大于存储体阵列的数量。
当一个PIM电路由两个或更多个存储体阵列共享时,PIM电路的数量可以少于存储体阵列的数量。其他实施例也是可能的,诸如每三个存储体阵列中的前两个有一个PIM电路,并且第三个存储体阵列有两个PIM电路。此外,PIM电路中的每一个可以通过使用来自主机HOST的数据或从存储器存储体210读取的信息中的至少一个来执行操作。在每个存储体至少两个PIM电路的情况下,两个PIM电路中的一个可以通过使用来自主机HOST的数据来执行操作,而两个PIM电路中的另一个可以通过使用从存储器存储体210读取的信息来执行操作。
可以通过来自存储器控制器100的地址ADD选择要执行数据访问的存储体,并且可以选择存储体内的存储器单元。此外,控制逻辑240可以包括命令和地址解码器241,并且命令和地址解码器241可以对来自存储器控制器100的命令CMD和/或地址ADD执行解码操作。控制逻辑240可以对存储器器件200执行内部控制操作,使得存储器存储体操作或另一操作可以根据解码结果而执行。例如,控制逻辑240可以输出用于执行内部控制操作的内部命令。
存储器器件200可以包括动态随机存取存储器(Dynamic Random-Access Memory,DRAM),诸如双数据速率同步动态随机存取存储器(Double Data Rate SynchronousDynamic Random Access Memory,DDR SDRAM)、低功率双数据速率(Low Power DoubleData Rate,LPDDR)SDRAM、图形双数据速率(Graphics Double Data Rate,GDDR)SDRAM或Rambus动态随机存取存储器(Rambus Dynamic Random Access Memory,RDRAM)。然而,本发明构思的实施例不限于此。例如,存储器器件200可以被实施为非易失性存储器,诸如快闪存储器、磁性RAM(Magnetic RAM,MRAM)、铁电RAM(Ferroelectric RAM,FeRAM)、相变RAM(Phase change RAM,PRAM)或电阻式RAM(Resistive RAM,ReRAM)。
此外,存储器器件200可以对应于半导体芯片,或者可以是与包括具有独立接口的多个通道的存储器器件中的通道相对应的组件。可替代地,存储器器件200可以是对应于存储器模块的组件。可替代地,存储器模块可以包括多个存储器芯片,并且图1的存储器器件200可以对应于安装在模块板上的存储器芯片。
在下文中,根据本发明构思的示例性实施例,描述了在指令存储器220中存储指令的操作以及其中运算逻辑230执行指令处理操作的示例。各种种类的指令处理操作可以由存储器器件200执行。例如,关于人工智能(Artificial Intelligence,AI),用于神经网络功能的多个操作中的至少一些可以由存储器器件200执行。例如,主机HOST可以通过存储器控制器100控制存储器器件200,使得多个操作中的至少一些可以由存储器器件200执行。此外,在下文的实施例中,存储器控制器100被示出为控制存储器器件200。然而,本发明构思的实施例不限于此。例如,存储器控制器100可以对应于在主机HOST中提供的组件,其中主机HOST控制存储器器件200。
指令存储器220可以基于循环队列技术来存储多个指令,并且可以包括多个指令队列段。指令队列可以包括用于存储信息的一个或多个存储电路。根据示例性实施例,一个指令队列段可以被定义为用于存储一个指令的单元。
存储器控制器100可以向存储器器件200发送指令Inst,以便执行运算逻辑处理操作。例如,存储器控制器100可以向存储器器件200发送多个指令Inst,使得多个运算逻辑处理操作可以被串行执行。例如,在执行运算逻辑处理操作之前,可以执行用于将多个指令Inst加载到指令存储器220上的模式,诸如例如指令加载模式,并且在指令加载模式下,可以将多个指令Inst加载到指令存储器220的循环指令队列上。
在图1中,示出了指令Inst和数据DATA通过单独的传输总线被发送。然而,本发明构思的实施例可以被不同地实施。例如,可以通过与数据DATA相同的传输总线发送指令Inst。
用于神经网络功能的、对应于由存储器器件200执行的所有操作的所有指令可以被加载到指令存储器220上并被执行。指令存储器220可以包括大小小于用于存储所有指令的大小的存储空间。例如,所有指令中的一些可以被存储在指令存储器220的指令队列段中,其中可以从该指令队列段顺序地执行存储的指令,并且一些指令队列段可以存储已经被完全执行并且不再需要的指令。根据本发明构思的示例性实施例,所有指令中的其他指令可以被顺序地更新在包含完全执行的指令的指令队列段上。
第一PIM电路231_1至第N PIM电路231_N中的每一个可以包括处理元件PE,并且处理元件PE可以通过使用从对应存储体读取的信息和/或由存储器控制器100提供的数据DATA中的至少一个来执行运算逻辑处理操作。在图1中,关于PIM电路中的每一个示出了一个处理元件PE。然而,PIM电路中的每一个可以包括多个处理元件PE。处理元件PE可以包括各种种类的运算符,例如,单指令多数据(Single Instruction Multi-Data,SIMD)和算术逻辑单元(Arithmetical and Logical Unit,ALU)。此外,第一PIM电路231_1至第N PIM电路231_N中的每一个可以包括与操作处理相关的各种组件。例如,第一PIM电路231_1至第NPIM电路231_N中的每一个还可以包括存储电路,诸如用于临时存储用于运算逻辑处理操作的数据或临时存储操作处理结果的寄存器。
存储器器件200可以响应于来自存储器控制器100的命令CMD和地址ADD而选择性地执行存储器存储体操作或运算逻辑处理操作。例如,可以定义用于请求执行运算逻辑处理操作的附加命令CMD。在这种情况下,当接收到被定义以用于请求执行运算逻辑处理操作的命令CMD时,执行指令,使得运算逻辑处理操作可以被执行。可替代地,在实施例中,可以响应于规定的正常命令CMD(诸如数据记录/读取)而执行运算逻辑处理操作。作为操作示例,来自存储器控制器100的地址ADD的值可以属于用于指向实质存储器单元阵列的区域的范围或另一范围,并且可以基于对来自存储器控制器100的命令CMD和/或地址ADD进行解码的结果来执行指令,使得运算逻辑处理操作可以被执行。在以下实施例中,假设执行指令和更新新的指令的操作是响应于正常命令CMD而执行的。
根据示例性实施例,存储器控制器100可以提供用于存储或加载指令的命令CMD和地址ADD,并且可以向存储器器件200提供用于指向指令存储器220的关于指令加载和更新操作的位置的队列地址ADD_Q作为地址ADD。此外,在通过循环队列技术将指令更新到指令队列时,来自存储器控制器100的队列地址ADD_Q可以指向在其中存储完全执行的指令的指令队列。可以通过运行时技术与运算逻辑处理操作一起执行上述指令更新操作,使得响应于接收到用于请求执行运算逻辑处理操作的命令CMD和/或地址ADD,可以执行操作处理和指令更新操作。可替代地,根据各种实施例,可以通过单独的命令在不同的定时处执行指令更新操作和运算逻辑处理操作。
根据本发明构思的上述实施例,由于可以减少用于存储用于执行大量运算逻辑处理操作的指令的存储空间,因此可以提高区域的效率,并且可以减少用于实施用于存储指令的存储器的费用。此外,由于可以减小指令存储器220的容量,所以可以使用具有高访问速度的高性能存储器。例如,具有比静态随机存取存储器(Static Random Access Memory,SRAM)高的访问速度的存储电路(诸如触发器(Flip-Flop,FF)或锁存器)可以用于指令存储器220。
在图1中,示出了存储体阵列、指令存储器220和运算逻辑230是单独的组件。然而,本发明构思的实施例不限于此。例如,存储体阵列中的每一个可以被定义为包括各种组件以及存储器单元阵列。例如,可以定义指令队列被包括在存储体阵列中的每一个中,并且被包括在PIM电路中的组件中的至少一些可以被定义为被包括在存储体阵列中。
存储器系统10或包括存储器系统10的数据处理系统可以由个人计算机(PersonalComputer,PC)、数据服务器、云系统、人工智能服务器、网络附属存储(Network-AttachedStorage,NAS)、物联网(Internet of Things,IoT)设备或便携式电子设备实施。此外,当数据处理系统是便携式电子设备时,数据处理系统可以是膝上型计算机、移动电话、智能电话、平板PC、个人数字助理(Personal Digital Assistant,PDA)、企业数字助理(Enterprise Digital Assistant,EDA)、数字静态相机、数字摄像机、音频设备、便携式多媒体播放器(Portable Multimedia Player,PMP)、个人导航设备(Personal NavigationDevice,PND)、MP3播放器、手持游戏控制台、电子书或可穿戴设备。
图2示出了图1的指令存储器的实施方式示例。
参考图1和图2,指令存储器220可以包括指令队列段(诸如例如,第一指令队列段IQ 0至第n指令队列段IQ n-1)以用于通过循环队列技术来存储多个指令。第一指令队列段IQ 0至第n指令队列段IQ n-1中的每一个可以包括存储电路。在图2中,示出了其中使用锁存器或触发器的示例。然而,本发明构思的实施例不限于此,并且各种种类的其他存储电路可以被应用。此外,如果使用任何锁存器或触发器,则一个这样的锁存器或触发器可以仅用在第一段、任何段、多个段或所有段上。如果有多个循环队列,则锁存器或触发器可以仅用在一个循环队列、几个(例如,每个奇数编号的)循环队列或所有循环队列上。在有多个循环队列的情况下,一个循环队列可以与每个PIM相对应,或者一个循环队列可以与每多个PIM相对应,诸如例如,每个PIM对有一个循环队列。可替代地,每个PIM可以有多个循环队列。在又一实施例中,多个循环队列中的一些可以根据需要被动态地重新分配给其他PIM,以最大化速度或效率,或者以改善例如裸芯内的局部温度变化。
作为操作示例,用于神经网络功能的多个指令中的一些可以被存储在第一指令队列段IQ 0至第n指令队列段IQ n-1中。例如,在指令加载模式中,第一指令Inst 0至第n指令Inst n-1可以被加载到指令存储器220上。然后,响应于来自存储器控制器100的命令CMD和/或地址ADD,可以顺序地执行存储在指令存储器220中的第一指令Inst 0至第n指令Instn-1。另外,在其中存储完全执行的指令的指令队列中,可以更新和存储多个指令中的其他指令。
可以在各种定时处执行指令更新操作。当执行运算逻辑处理操作时,还可以执行将新的指令更新到指令队列的操作。例如,在顺序地执行第一指令Inst 0至第n指令Instn-1的过程中,指令更新操作可以在特定定时处开始,并且一个指令被执行,并且一个新的指令可以被更新到指令队列。例如,当在执行第一指令Inst 0之后执行下一个第二指令Inst 1时,指令更新操作可以开始,并且第(n+1)指令可以被更新到完全执行的第一指令队列段IQ 0。此外,当顺序地执行第三指令Inst 2至第n指令Inst n-1时,新的指令可以被顺序地更新到第二指令队列段IQ 1至第(n-1)指令队列段IQ n-2。通过上述循环队列方法,被包括在神经网络功能中的所有指令可以被加载到指令存储器220上并被执行。
根据示例性实施例,指令更新操作可以在多个指令被执行之后开始。作为操作示例,当在执行存储在第k指令队列中的指令之后(其中k是小于n的整数)并且下一个指令正在执行时,指令更新操作可以从第一指令队列段IQ 0开始。可替代地,当执行指令存储器220的最后一个指令队列(诸如例如,第n指令队列段IQ n-1)的指令时,可以执行指令更新操作。例如,当执行第n指令队列段IQ n-1的指令时,指令更新操作可以从第一指令队列段IQ 0开始。
根据一些实施例,可以在与执行指令的定时不同的定时处执行指令更新操作。作为操作示例,在执行第一指令队列段IQ 0至第n指令队列段IQ n-1中的一些指令队列段的指令之后,基于来自存储器控制器100的控制,可以执行将新的指令更新到完全执行的指令队列段中的至少一些的操作。然后,第一指令队列段IQ 0至第n指令队列段IQ n-1的其它指令队列段的指令被执行。然后,可以再次执行更新完全执行的指令队列段中的至少一些的操作。通过上述过程,可以交替或同时执行更新新的指令的操作和执行指令的操作。因此,大小比指令存储器大的多个指令可以被存储在指令存储器中并被执行。
在上述实施例中,运算逻辑处理操作和指令更新操作被一起执行不一定意味着以上操作被同时执行。作为操作示例,存储器器件200可以顺序地执行运算逻辑处理操作和指令更新操作,或者可以响应于来自存储器控制器100的命令CMD和/或地址ADD而并行地执行运算逻辑处理操作和指令更新操作。可替代地,每当执行运算逻辑处理操作时,对于指令更新操作,可以向存储器器件200进一步提供命令CMD和地址ADD中的至少一个,或者可以响应于单独的命令CMD和/或地址ADD而执行指令更新操作。
图3示出了图1的存储器器件200的实施方式示例。
参考图1至图3,存储器器件200还可以包括除了图1中示出的组件之外的与运算逻辑处理操作相关的组件。存储器器件200还可以包括处理控制器232和程序计数器233,并且处理控制器232可以控制与存储器器件200中的操作处理相关的总体操作。例如,处理控制器232可以执行读取和解码存储在指令存储器220中的指令的操作,并且可以控制第一PIM电路231_1至第N PIM电路231_N,使得对应于读取指令的运算逻辑处理操作可以被执行。
程序计数器233可以通过执行程序计数操作来指向要从指令存储器220读取的指令。例如,响应于从存储器控制器100接收到指向操作处理的命令CMD和/或地址ADD,与程序计数器233的当前计数值相对应的位置中的指令被读取,并且计数值可以基于计数操作而增加。可替代地,根据一些实施例,响应于指向操作处理的命令CMD和/或地址ADD,程序计数器233的当前计数值增加,并且可以从对应于增加的计数值的位置读取指令。此外,具体地,在主机和/或运算逻辑不要求按顺序执行一个或多个指令的情况下,可以不按顺序有效地执行来自循环队列内的非顺序段的指令。
图3中示出的处理控制器232和程序计数器233可以以各种形式被实施。例如,处理控制器232和程序计数器233可以被提供在运算逻辑230中。此外,在图3中,示出了指令存储器220、处理控制器232和程序计数器233被共同布置在第一PIM电路231_1至第N PIM电路231_N中。然而,存储器器件200可以被实施为使得以上组件可以分别被分开布置在PIM电路中。
可以基于控制逻辑240的控制来执行指令加载操作和指令更新操作。例如,控制逻辑240可以通过一条或多条总线从存储器控制器100接收各种信息。例如,控制逻辑240可以通过数据总线DQ BUS接收指令,并且可以通过命令地址总线CA BUS接收命令和/或地址。控制逻辑240可以控制在指令加载模式下将通过数据总线DQ BUS接收的指令存储在指令存储器220中的操作。此外,根据本发明构思的示例性实施例,可以通过循环队列技术将指令重写在指令存储器220中来执行指令更新操作。
作为操作示例,当与运算逻辑处理操作一起执行指令更新操作时,可以基于由程序计数器233指向的指令通过处理控制器232的控制来执行运算逻辑处理操作。此外,控制逻辑240可以从存储器控制器100接收表示要被更新的指令队列段的位置的地址(诸如例如,队列地址ADD_Q)以及指令,并且可以通过循环队列技术基于接收的地址来将指令更新到指令存储器220。
图4示出了根据本发明构思的示例性实施例的操作存储器器件的方法。
参考图4,存储器器件可以包括用于存储用于操作处理的指令的指令存储器,并且指令存储器可以包括循环队列技术中的多个指令队列段。此外,用于神经网络功能的多个指令由存储器器件执行,使得运算逻辑处理操作可以被执行,并且当假设在一个指令队列中存储一个指令时,由于指令存储器的指令队列段的数量少于用于神经网络功能的所有指令的数量,所以在操作S11中,可以将多个指令中的一些加载到指令队列上。
然后,存储器器件可以基于来自存储器控制器的控制来执行运算逻辑处理操作。例如,在操作S12中,存储器器件可以基于程序计数操作来顺序地执行加载在指令存储器上的指令。在执行加载在指令存储器上的指令之后,执行的指令不需要被进一步使用。
存储器器件可以与运算逻辑处理操作一起或者在与执行运算逻辑处理操作的定时不同的定时处执行指令更新操作。例如,在操作S13中,存储器器件可以基于来自存储器控制器的控制在循环队列中的先前执行的指令上用新的指令(诸如例如,所有上述指令中的其他指令)重写执行的指令。基于与神经网络功能相关的所有指令的数量和提供在指令存储器中的指令队列段的数量,可以对一个指令队列执行更新操作一次或多次。
当如上所述更新指令时,在执行所有最初加载的指令之后,在操作S14中,可以从循环指令队列执行未执行或更新的指令,并且可以执行与神经网络功能相关的所有指令。
图5示出了根据本发明构思的示例性实施例的存储器系统的操作示例。在图5中,示出了其中存储器器件与主机HOST进行通信的示例。主机HOST可以包括与存储器器件进行通信的存储器控制器或存储器控制模块。
存储器器件可以在关于操作处理的多种模式下进行操作。参考图5,在指令加载模式下,主机HOST可以向存储器器件发送操作处理所需的多个指令,并且所发送的指令可以被存储在存储器器件中的循环指令队列的指令队列段中。例如,根据上述实施例,只有与神经网络功能相关的多个指令中的一些可以最初被存储在循环指令队列的指令队列段中。
存储器器件然后可以在指令执行模式下进行操作,其中主机HOST可以向存储器器件发送操作请求,诸如例如指向操作处理的命令和/或地址,并且存储器器件可以基于程序计数操作,响应于操作请求而顺序地执行在指令加载模式下加载的指令。例如,诸如加法、减法和乘法的各种种类的运算逻辑处理操作可以由存储器器件执行,并且通过解码指令,可以执行对应于指令的运算逻辑处理操作。此外,根据示例性实施例,可以从存储器器件向主机HOST提供操作结果。此外,经处理的数据可以被存储在存储器存储体中。
然后,存储器器件可以在指令执行和更新模式下进行操作,其中主机HOST可以将要被更新的新的指令与操作请求一起发送到存储器器件,并且存储器器件可以通过执行与操作请求相对应的指令来执行运算逻辑处理操作。此外,存储器器件可以将来自主机HOST的新的指令更新到先前执行的指令队列段。例如,每当执行一个指令时,就可以将一个新的指令更新到执行的指令的段。
通过上述循环队列技术,被包括在神经网络功能中的所有指令可以被存储在指令存储器中并被更新到指令存储器。因此,在所有指令被存储在指令存储器中之后,因此存储器器件可以在指令执行模式下进行操作。在指令执行模式下,主机HOST可以向存储器器件发送操作请求,并且存储器器件可以顺序地执行存储在指令队列段中的指令,并且可以向主机HOST发送操作结果和/或将它们存储在存储器存储体中。
尽管未在图5中具体示出,但是当执行运算逻辑处理操作时,主机HOST可以向存储器器件提供数据,并且存储器器件可以通过使用来自主机HOST的数据和存储在存储器存储体中的信息中的至少一个来执行运算逻辑处理操作。
图6和图7示出了根据本发明构思的示例性实施例的示例性指令更新操作。
参考图6,指令存储器可以包括第一指令队列段IQ 0至第n指令队列段IQ n-1,并且在指令加载模式下,在第一指令队列段IQ 0至第n指令队列段IQ n-1中,可以存储第一指令Inst 0至第n指令Inst n-1。然后,当执行运算逻辑处理操作时,可以顺序地执行第一指令Inst 0至第n指令Inst n-1。
根据示例性实施例,可以在指令执行模式下顺序地执行指令,并且可以在规定的定时处执行更新新的指令的操作。在图6中,示出了这样的示例,其中当第k指令Inst k-1被执行时,指令更新操作可以从第一指令队列段IQ 0开始,并且第(n+1)指令Inst n被更新到第一指令队列段IQ 0。然后,当执行第(k+1)指令Inst k时,可以将第(n+2)指令Inst n+1更新到第二指令队列段IQ 1,并且可以顺序地更新附加的新的指令。
可以基于相似的方法由指令存储器执行图6中示出的指令更新操作,如图7所示。
参考图7A,示出了这样的示例,其中在加载第一指令队列段IQ 0至第n指令队列段IQ n-1之后,每当执行指令时,就执行更新操作。例如,在执行存储在第一指令队列段IQ 0中的指令之后,当存储在第二指令队列段IQ 1中的指令正在执行时,更新第一指令队列段IQ 0的操作被执行,并且当存储在第三指令队列段IQ 2中的指令正在执行时,可以执行更新第二指令队列段IQ 1的操作。此外,在通过上述方法更新与神经网络功能相关的所有指令之前,可以用新的或未执行的指令重写执行的指令。
参考图7B,在第一指令队列段IQ 0至第n指令队列段IQ n-1被完全加载之后,指令更新操作可以在一定数量的指令被执行之后开始。例如,在存储在第一指令队列IQ 0至第四指令队列IQ 3中的指令被执行之后,当存储在第五指令队列段IQ 4中的指令被执行时,更新操作可以从第一指令队列段IQ 0开始。然后,每当顺序地执行运算逻辑处理操作时,就可以顺序地执行指令更新操作,并且在更新所有指令之前,可以重写新的指令。
图7C示出了其中运算逻辑处理操作和指令更新操作在不同的非同时定时处被执行的示例。
作为操作示例,在第一指令队列段IQ 0至第n指令队列段IQ n-1被完全加载之后,指令更新操作可以在一定数量的指令被执行之后开始。在图7C中,示出了这样的示例,其中在存储在第一指令队列段IQ 0至第八指令队列段IQ 7中的指令被执行之后,指令更新操作开始,并且一定数量(例如,四个)的指令在与执行运算逻辑处理操作的定时不同的定时处被更新。然后,可以重复执行和更新规定数量(例如,四个)的指令的操作,直到所有指令被加载。然而,本发明构思的实施例不限于此。指令更新操作可以在各种定时处开始,并且执行和更新指令的操作可以以各种数量的指令为单位而执行。可替代地,指令更新操作可以在动态可变的定时处开始,并且执行和更新指令的操作可以以指令数量的动态可变单位而执行。
图8示出了根据本发明构思的示例性实施例的与指令更新操作相关的信号的示例。图8中示出的地址ADD可以对应于在上述实施例中提到的队列段地址。为了便于描述,存储在指令存储器中的指令由数字1至14表示。存储在指令存储器中的数字1可以对应于第一指令Inst 0,并且数字8可以对应于第八指令Inst 7。此外,在图8中,指令存储器中用实线标记的指令表示执行的指令,并且用虚线标记的指令表示新更新的指令。
参考图8,存储器器件可以通过从主机HOST接收命令CMD和/或地址ADD并对所接收的命令CMD和/或地址ADD进行解码来生成内部命令Int.CMD。根据所生成的内部命令Int.CMD,可以控制存储器器件的内部操作。例如,可以执行运算逻辑处理操作PE和更新操作U。此外,在图8中,假设用于正常记录操作W的命令被用作与操作处理相关的命令CMD,并且八个指令队列段IQ 0至IQ 7的操作最初被示出。
可以根据对命令CMD和/或地址ADD进行解码的结果来仅执行运算逻辑处理操作。尽管未在图8中具体示出,但是当基于命令CMD和地址ADD的组合来定义操作请求时,指向操作处理的地址ADD可以由存储器器件接收。例如,用于指向操作处理的规定范围的地址ADD被定义,并且定义范围的地址ADD可以被接收,以便指向操作处理。
当执行存储在第四指令队列段IQ 3中的指令4时,可以执行来自数据总线DQ的指令9的指令更新操作U&PE,并且存储器器件可以在基于存储在第四指令队列段IQ 3中的指令根据内部命令Int.CMD来执行运算逻辑处理操作的同时执行指令更新操作。例如,可以从主机HOST接收指向指令要被更新到的第一指令队列段IQ 0的地址。因此,第九指令可以被更新到第一指令队列。
根据示例性实施例,在部分操作处理过程中,可能不会立即执行指令更新操作。在图8中,示出了这样的示例,其中当执行存储在第五指令队列段IQ 4中的指令时,不对IQ 1执行指令更新操作。然后,当接收到执行运算逻辑处理操作和指令更新操作的命令CMD和/或地址ADD时,可以对第二指令队列段IQ 1至第六指令队列段IQ 5顺序地执行指令更新操作。
图9示出了根据本发明构思的示例性实施例的存储器器件300的实施方式示例。在图9中,示出了这样的示例,其中关于指令加载和执行操作,对应于指令的索引被生成,并且指令基于索引而执行。
参考图9,存储器器件300可以包括控制逻辑310、处理控制器320、指令存储器330、程序计数器340、PIM电路350和索引顺序存储电路360。为了便于描述,尽管未在图9中具体示出,但是存储器器件300还可以包括具有多个存储体阵列的存储器存储体。此外,在图9中,仅示出了一个PIM电路350。然而,多个PIM电路可以被提供在存储器器件300中,以对应于多个存储体阵列。
根据上述实施例,指令存储器330可以包括多个指令队列段,以用于基于循环队列技术来存储指令。此外,指令存储器330可以包括多个行和多个列,并且可以由包括行地址RA和列地址CA的队列地址指向指令存储位置。例如,当假设指令存储器330的指令队列段中的每一个存储一个指令时,指令存储器330的一行可以包括多个指令队列段。
存储器器件300可以通过命令地址总线CA BUS从主机HOST接收命令和地址,并且可以接收关于指令加载或更新操作的队列地址。此外,存储器器件300可以从主机HOST接收指令Inst。例如,存储器器件300可以通过数据总线DQ BUS接收指令Inst。另外,在指令执行和更新模式下,基于处理控制器320的控制,可以从指令存储器330读取指令并执行该指令,并且基于控制逻辑310的控制,可以将来自主机HOST的指令Inst更新到指令存储器330。
控制逻辑310可以包括索引管理器311,并且索引管理器311可以生成对应于指令Inst的索引Index。根据示例性实施例,可以将索引Index分配给指令被存储在其中的指令存储器330的指令队列段的条目,并且可以基于索引Index来执行指向执行的指令的操作。例如,索引管理器311可以通过使用被包括在行地址RA和列地址CA中的位中的至少一些来计算对应于指令的索引Index,并且当在指令存储器330中存储指令时,可以与指令一起存储对应的索引Index。可替代地,根据图9中示出的实施例,索引存储器331被进一步提供在存储器器件300中,并且索引Index可以被存储在索引存储器331中。
索引顺序存储电路360可以存储由主机HOST提供的索引顺序信息。例如,在将多个指令加载到指令存储器330中并且完成指令加载操作之后,为了设置加载在指令存储器330上的指令的执行顺序,可以从主机HOST向存储器器件300提供索引顺序信息。
然后,在执行运算逻辑处理操作时,存储器器件300可以以存储在索引顺序存储电路360中的索引顺序读取和执行指令。例如,每当运算逻辑处理操作被执行时,存储在索引顺序存储电路360中的索引Index就被读取,并且控制逻辑310可以将读取索引Index提供给处理控制器320。对应于要被串行处理的多个指令的索引Index可以被包括在索引顺序信息中。
根据示例性实施例,指数索引可以被设置为具有各种值。例如,为了对应于存储在被包括在指令存储器330中的m个指令队列段中的m个指令,具有一个或多个位的索引Index被生成,并且具有不同位值的索引Index可以被存储在指令存储器330中以对应于指令。处理控制器320可以将从索引顺序存储电路360读取的索引Index与存储在指令存储器330中的索引Index进行比较,可以读取对应于所接收的索引Index的指令,并且可以控制运算逻辑处理操作。
根据上述实施例,用于指向相同种类的操作的多个指令不需要被重复地存储在指令存储器330中。例如,多个索引可以用于循环队列内的单个存储的指令,以在重写之前重复地执行该指令。因此,可以减小指令存储器330的大小。此外,在不以存储在指令存储器330中的顺序执行指令的情况下,基于存储在索引顺序存储电路360中的信息,可以根据需要执行存储在任意位置的指令。
在根据上述实施例的运算逻辑处理操作中,可以选择性地执行基于程序计数器340的计数操作的、指令存储器330的访问操作。例如,可以基于程序计数器340的计数操作来执行神经网络功能的多个操作中的一些操作,并且可以基于存储在索引顺序存储电路360中的信息来执行其他操作。可替代地,根据一些实施例,当基于存储在索引顺序存储电路360中的信息来执行指令时,可以去激活程序计数器340。可替代地,程序计数器340不需要被提供在存储器器件300中。
根据上述实施例的指令更新操作可以被应用于图9中示出的实施例。作为操作示例,存储在指令存储器330中的指令可以被执行一次或多次。在指令被完全执行规定的次数或索引之后,新的指令可以被更新到完全执行的指令已经被存储在其中的指令队列中。例如,可以顺序地执行被包括在指令存储器330中的指令队列段的指令,并且可以根据索引顺序信息来多次执行一些指令。在这种情况下,根据上述实施例,可以对多个指令队列段基本上顺序地执行指令更新操作。
图10示出了根据本发明构思的示例性实施例的其中基于索引顺序来执行指令的示例。在图10中,为了便于描述,存储在第一指令队列段至第四指令队列段中的第一指令Inst 0至第四指令Inst 3由数字0至3指示,并且示出了其中第一索引0至第四索引3被分配为对应于第一指令Inst 0至第四指令Inst 3的示例。
参考图9和图10,第一指令Inst 0至第四指令Inst 3可以被加载在指令存储器上,并且对应于第一指令Inst 0至第四指令Inst 3的第一索引0至第四索引3可以被存储在指令存储器中。此外,第一指令Inst 0至第四指令Inst 3可以执行不同的功能。例如,由第一指令Inst 0至第四指令Inst 3执行的第一功能Func 0至第四功能Func 3可以对应于不同种类的操作。
存储器控制器或主机可以向存储器器件提供与指令执行相关的索引顺序信息,并且索引顺序信息可以被存储在存储器器件中的索引顺序存储电路中。索引顺序信息可以表示要针对操作处理而执行的指令的顺序,并且当相同的索引被重复地存储时,相同的指令(诸如例如,存储在一个指令队列段中的指令)可以被重复执行多次。在图10中,示出了其中索引顺序被设置为“0、1、1、1、1、2、3”的示例。
存储器器件可以响应于来自存储器控制器的命令和/或地址而顺序地执行多个运算逻辑处理操作,并且每当运算逻辑处理操作被执行时,就可以参考存储在索引顺序存储电路中的索引。例如,存储在第一指令队列中的第一指令Inst 0可以根据第一索引0而执行,并且然后,存储在第二指令队列中的第二指令Inst 1可以根据第二索引1而重复执行四次。然后,根据第三索引2和第四索引3,可以顺序地执行存储在第三指令队列中的第三指令Inst 2和存储在第四指令队列中的第四指令Inst 3。
根据上述实施例,在没有在多个指令队列段中重复存储用于执行相同种类的操作的相同指令的情况下,存储在由先前存储在存储器器件中的索引指向的指令队列中的指令可以被读取并被重复执行。因此,可以以低的存储器使用来执行重复的操作。
图11示出了根据本发明构思的示例性实施例的指令存储示例和索引分配示例。
参考图11,示例性指令存储器可以包括多个指令队列段,并且多个指令队列段可以通过m行的行地址RA和四列的列地址CA进行寻址。例如,多个指令队列段可以被包括在一行中。在图11中,示出了这样的示例,其中当四个指令被存储在一行中时,4m个指令Inst 0至Inst 4m-1被存储在包括m行和四列的、指令存储器的循环队列中,如图所示。在替代性实施例中,行可以各自定义多个循环队列中的一个,列可以各自定义多个循环队列中的一个,或者其任意组合。例如,每个循环队列可以对应于每个PIM,或者一个循环队列对应于多个PIM或多个循环队列对应于一个PIM。
根据上述实施例,基于被包括在指令存储器的行地址RA和列地址CA中的位中的至少一些,可以确定指令被存储在其中的物理位置。因此,基于行地址RA和列地址CA的至少一些位,可以计算对应于指令的索引。例如,基于表示第一指令Inst 0的存储位置的队列地址来计算具有第一值0的索引,基于表示第二指令Inst 1的存储位置的队列地址来计算具有第二值1的索引,并且可以计算对应于其他指令的索引。在替代性实施例中,位置可以是虚拟的或重映射的,而不是物理的。
尽管未在图9至图11中具体示出,但是主机HOST可以基于要被提供给存储器器件的队列地址通过与存储器器件的方法相同的方法来管理对应于指令的索引。此外,主机HOST可以确定关于神经网络功能而串行执行的多个操作的种类或类型,可以生成索引顺序信息使得指令可以被执行以对应于多个操作的顺序,并且可以向存储器器件提供所生成的索引顺序信息。
图12示出了根据本发明构思的示例性实施例的存储器器件400的实施方式示例。在图12中,示出了这样的示例,其中与操作处理相关的组件被布置为对应于存储体阵列。
参考图12,存储器器件400可以包括第一存储体阵列410_1至第N存储体阵列410_N和被布置为对应于第一存储体阵列410_1至第N存储体阵列410_N的第一PIM电路430_1至第N PIM电路430_N。第一PIM电路430_1至第N PIM电路430_N中的每一个可以通过使用从对应存储体读取的信息或由主机HOST提供的数据中的至少一个来执行运算逻辑处理操作。
根据上述实施例,可以省略重复的描述。这里,存储器器件400可以包括用于存储与操作处理相关的指令的指令存储器,并且指令存储器可以被布置为对应于第一存储体阵列410_1至第N存储体阵列410_N。例如,第一指令存储器421_1至第N指令存储器421_N可以被提供在存储器器件400中,并且第一指令存储器421_1至第N指令存储器421_N中的每一个可以各自包括循环队列,其中该循环队列具有用于通过循环队列技术存储指令的多个指令队列段。此外,当应用上述实施例中的索引时,可以进一步存储与存储在第一指令存储器421_1至第N指令存储器421_N中的指令相对应的索引。在图12中,示出了被布置为对应于第一存储体阵列410_1至第N存储体阵列410_N的第一索引存储器422_1至第N索引存储器422_N。根据当前实施例,索引存储器和指令存储器被示出为彼此分开。然而,索引可以可替代性地被存储在对应的循环指令队列或它们的相应指令队列段中。
此外,根据上述实施例,用于存储来自主机HOST的索引顺序信息的存储电路可以被进一步提供在存储器器件400中,并且用于存储索引顺序信息的存储电路也可以被布置为对应于存储体阵列。根据示例性实施例,索引顺序可以被设置为彼此相同或不同,以对应于第一存储体阵列410_1至第N存储体阵列410_N。因此,在被布置为对应于不同存储体阵列的指令存储器中,可以执行存储在不同位置的指令队列段中的指令。
第一PIM电路430_1至第N PIM电路430_N中的每一个可以包括用于执行运算逻辑处理操作的一个或多个处理元件PE,并且从第一指令存储器421_1至第N指令存储器421_N读取的指令可以被提供给对应的PIM电路。第一PIM电路430_1至第N PIM电路430_N中的每一个还可以包括用于对指令进行解码的指令解码器(Inst Dec),并且根据指令解码结果的种类的运算逻辑处理操作可以被执行。
根据图12中示出的实施例,由于指令存储器被布置为对应于存储体阵列和/或PIM电路,所以可以简化指令到PIM电路的传输路径并且可以提高指令读取速度。此外,由于不同的指令可以被提供给第一PIM电路430_1至第N PIM电路430_N,所以不同种类的操作可以被并行处理。此外,根据本发明构思的实施例,通过使用循环队列技术提供指令存储器,可以减小对应于PIM电路的指令存储器的大小。因此,即使当多个指令存储器中的每一个被布置为分别对应于多个存储体阵列中的每一个时,多个指令存储器的大小的增加也可以被最小化。
图13示出了包括根据本发明构思的示例性实施例的存储器器件的数据处理系统500。如图13所示,数据处理系统500可以包括应用处理器(Application Processor,AP)510和存储器器件520,并且应用处理器510可以包括用于与存储器器件520进行通信的存储器控制模块511。
应用处理器510可以执行图1中的主机HOST的功能。根据上述实施例,在指令加载模式下,多个指令Inst可以被提供给存储器器件520,并且存储器器件520可以被控制为使得指令更新操作在执行指令的过程期间被执行。此外,根据上述实施例,当指令基于索引而执行时,应用处理器510可以生成索引顺序信息,并且可以向存储器器件520提供所生成的索引顺序信息。
应用处理器510可以由包括系统总线的片上系统(System on Chip,SoC)实施。作为系统总线的标准规范,可以应用高级RISC机(Advanced RISC Machine,ARM)的高级微控制器总线架构(Advanced Microcontroller Bus Architecture,AMBA)协议。AMBA协议的总线类型可以是高级高性能总线(Advanced High-performance Bus,AHB)、高级外围总线(Advanced Peripheral Bus,APB)、高级可扩展接口(Advanced eXtensible Interface,AXI)、AXI4或AXI一致性扩展(AXI Coherency Extensions,ACE)。除了以上协议之外,可以应用另一类型的协议等,诸如SONICs有限公司的uNetwork、IBM的CoreConnect或OCP-IP的开放核心协议。
存储器控制模块511可以执行上述实施例中的存储器控制器的功能,并且可以通过向存储器器件520发送命令CMD和/或地址ADD在存储器器件520中控制存储器存储体操作或运算逻辑处理操作。根据上述实施例,存储器器件520可以包括存储器存储体521、指令存储器522、运算逻辑523和控制逻辑524,其中运算逻辑523可以包括一个或多个PIM电路PIM_1至PIM_N,并且控制逻辑524可以包括命令和/或地址解码器524_1。此外,指令存储器522可以包括基于循环队列的指令队列段。根据上述实施例,在执行先前存储的指令之后,可以执行更新操作,其中新的指令基于应用处理器510的控制而在指令队列中的先前执行的指令上被写入。
图14示出了根据本发明构思的示例性实施例的其中存储器器件包括高带宽存储器(HBM)600的示例。
HBM 600可以通过包括具有独立接口的多个通道而具有增加的带宽。参考图14,HBM 600可以包括多个裸芯,例如,缓冲器裸芯(或逻辑裸芯)610和堆叠在缓冲器裸芯610上的一个或多个核心裸芯620。参考图14,示出了其中第一核心裸芯至第四核心裸芯被包括在HBM 600中的示例。然而,核心裸芯620的数量可以变化。
此外,核心裸芯620中的每一个可以包括一个或多个通道。在图14中,示出了这样的示例,其中核心裸芯620中的每一个包括两个通道,使得HBM 600总共包括八个通道,CH1至CH8。例如,第一核心裸芯可以包括第一通道CH1和第三通道CH3,第二核心裸芯可以包括第二通道CH2和第四通道CH4,第三核心裸芯可以包括第五通道CH5和第七通道CH7,并且第四核心裸芯可以包括第六通道CH6和第八通道CH8。
缓冲器裸芯610可以包括用于与主机或存储器控制器进行通信的接口(Interface,IF)电路611,并且可以通过接口电路611从主机HOST接收命令和/或地址以及数据。主机HOST可以通过被布置为对应于通道的总线来发送命令和/或地址以及数据。总线可以按通道划分,或者一些总线可以由两个通道或每个裸芯的多个通道共享。接口电路611可以向由主机HOST请求的通道发送命令和/或地址以及数据,以执行存储器操作或运算逻辑处理操作。
HBM 600的通道中的每一个可以包括根据上述实施例的PIM电路621和指令存储器622。省略了重复的描述。指令存储器622可以包括用于基于循环队列技术来存储指令的多个指令队列段。
虽然未在图14中具体示出,但是当索引被应用时,HBM 600的通道可以进一步将对应于指令的索引存储在指令存储器622中,并且可以附加地将来自主机HOST的索引顺序信息存储在通道中。
缓冲器裸芯610还可以包括硅通孔(Through-Silicon-Via,TSV)区域612、物理(PHY)区域613和直接访问(DA)区域614。虽然未在图14中具体示出,但是用于控制HBM 600的总体操作(诸如数据的路由的控制)的处理器还可以被包括在缓冲器裸芯610中。
在TSV区域612中,形成用于与核心裸芯620进行通信的TSV。此外,物理PHY区域613可以包括用于与外部主机HOST进行通信的多个输入和输出电路。例如,物理PHY区域613可以包括用于与主机HOST进行通信的一个或多个端口。
直接访问区域614可以被布置为在测试HBM 600的模式下通过布置在HBM 600的外表面上的导电单元与外部测试器直接通信。
图15示出了根据本发明构思的实施例的包括数据处理系统的服务器系统700。
参考图15,服务器系统700可以包括管理器710和多个服务器720_1至720_K。多个服务器720_1至720_K中的每一个可以对应于在上述实施例中描述的数据处理系统。多个服务器720_1至720_K通过支持协议(诸如例如,PCI或PCIe)的总线彼此连接。例如,多个服务器720_1至720_K可以基于管理器710的控制通过P2P连接结构彼此通信。
参考一个服务器,诸如例如第一服务器720_1,第一服务器720_1可以包括根据上述实施例的主机HOST和一个或多个存储器器件MEM,其可以根据服务器的功能和上述实施例来执行各种种类的运算逻辑处理操作(其中,省略了重复的描述)并且可以存储处理结果。根据实施例,存储器器件MEM中的每一个可以包括图1至图14中示出的实施例的存储器器件。因此,存储器器件MEM中的每一个可以包括基于循环队列的指令存储器。
虽然已经参考几个附图具体示出和描述了本发明构思的示例性实施例,但是将理解的是,相关领域的普通技术人员可以在不脱离本公开和所附权利要求的范围或精神的情况下在形式和细节上做出各种改变。
Claims (20)
1.一种存储器器件,包括:
存储器存储体,包括存储器单元的至少一个存储体阵列;
存储器中处理器PIM电路,连接到所述存储器存储体,并且被配置为通过使用由主机提供的数据或从所述存储器存储体读取的数据中的至少一个来执行运算逻辑处理操作;以及
指令存储器,连接到所述PIM电路并且包括循环指令存储器队列,其中所述循环指令存储器队列具有被循环配置以存储由所述主机提供的指令的第一指令队列段至第m指令队列段,其中m是不小于2的整数,
其中,存储在所述第一指令队列段至第m指令队列段中的指令响应于来自所述主机的操作请求而执行,并且由所述主机提供的新的指令被更新在所述循环指令存储器队列中的段处的完全执行的指令上。
2.根据权利要求1所述的存储器器件,
其中,多个指令中的一些指令被存储在关于一个神经网络功能的所述第一指令队列段至第m指令队列段中,并且
其中,所述多个指令中的其他指令被顺序地更新在所述第一指令队列段至第m指令队列段当中的完全执行的指令上。
3.根据权利要求1所述的存储器器件,还包括:控制逻辑,被配置为对从所述主机接收的命令或地址进行解码、基于解码的命令或地址在所述存储器存储体上控制存储器存储体操作、或者执行控制所述PIM电路来执行所述运算逻辑处理操作的控制操作。
4.根据权利要求1所述的存储器器件,
其中,所述存储器存储体包括第一存储体阵列至第N存储体阵列,并且所述PIM电路包括布置为对应于所述第一存储体阵列至第N存储体阵列的基本相同的第一PIM电路至第NPIM电路,其中N是不小于2的整数,并且
其中,所述指令存储器被布置为对应于所述第一PIM电路至第N PIM电路中的每一个PIM电路,并且从所述指令存储器读取的指令被提供给对应的PIM电路。
5.根据权利要求1所述的存储器器件,
其中,所述存储器器件在加载模式、执行模式以及执行和更新模式下进行操作,
其中,在所述加载模式下,第一指令至第m指令被存储在所述第一指令队列段至第m指令队列段中,
其中,在所述执行模式下,响应于来自所述主机的所述操作请求,所述第一指令至第m指令中的至少一些指令被顺序地执行,并且
其中,在所述执行和更新模式下,响应于来自所述主机的所述操作请求,在执行存储在所述指令存储器中的指令的同时,新的指令被更新在所述循环指令队列中的先前执行的指令上。
6.根据权利要求1所述的存储器器件,
其中,第一指令至第m指令被存储在所述第一指令队列段至第m指令队列段中,并且
其中,在第一指令被执行之后,在第二指令正在执行的同时,第(m+1)指令被更新在所述循环指令队列中的所述第一指令上。
7.根据权利要求1所述的存储器器件,
其中,第一指令至第m指令被存储在所述第一指令队列段至第m指令队列段中,并且
其中,在第一指令至第k指令被顺序地执行之后,更新新的指令的操作从所述循环指令队列中的第一执行的指令开始,其中k是小于m的整数。
8.根据权利要求1所述的存储器器件,还包括:
索引存储器,连接到所述指令存储器,并且被配置为存储与存储在所述指令存储器中的指令相对应的索引;以及
索引顺序存储电路,连接到所述指令存储器,并且被配置为存储表示来自所述主机的指令的执行顺序的索引顺序信息,
其中,当从所述主机提供操作请求时,存储在所述指令存储器中的指令以根据所述索引顺序信息的顺序被执行。
9.根据权利要求8所述的存储器器件,其中,当指向相同指令的多个索引被包括在所述索引顺序信息中时,存储在一个指令队列段中的指令被执行多次。
10.根据权利要求1所述的存储器器件,其中,所述第一指令队列段至第m指令队列段中的每一个指令队列段包括触发器或锁存器中的至少一个。
11.一种存储器器件,包括:
存储器存储体,包括存储器单元的至少一个存储体阵列;
存储器中处理器PIM电路,连接到所述存储器存储体,并且被配置为通过使用由主机提供的数据或从所述存储器存储体读取的数据中的至少一个来执行运算逻辑处理操作;
指令存储器,连接到所述PIM电路并且包括循环指令存储器队列,其中所述循环指令存储器队列具有被配置为存储由所述主机提供的指令的第一指令队列段至第m指令队列段,其中m是不小于2的整数;
索引管理器,连接到所述指令存储器,并且被配置为生成与存储在所述指令存储器中的指令相对应的索引;以及
索引顺序存储电路,连接到所述索引管理器,并且被配置为存储表示来自所述主机的指令的执行顺序的索引顺序信息,
其中,当由所述主机提供操作请求时,存储在所述指令存储器中的指令以根据存储的索引顺序信息的执行顺序被执行。
12.根据权利要求11所述的存储器器件,其中,当指向相同指令的多个索引被包括在所述索引顺序信息中时,存储在一个指令队列段中的指令被执行相同多次。
13.根据权利要求11所述的存储器器件,其中,所述索引管理器接收表示所述指令存储器的存储位置的行地址和列地址,并且通过使用所述行地址和所述列地址的多个位中的至少一些位来生成所述索引。
14.根据权利要求11所述的存储器器件,还包括:索引存储器,连接到所述指令存储器,并且被配置为存储与存储在所述指令存储器中的指令相对应的索引,
其中,所述索引管理器将被生成以对应于所述指令的索引存储在所述索引存储器中。
15.一种存储器器件的操作方法,其中所述存储器器件具有:指令存储器,被配置为存储与操作处理相关的指令;以及存储器中处理器PIM电路,被配置为执行对应于所述指令的运算逻辑处理操作,所述方法包括:
将用于神经网络功能的多个指令中的一些指令加载到所述指令存储器的循环指令队列的多个指令队列段中;
所述PIM电路通过顺序地执行加载的指令来执行所述运算逻辑处理操作;
利用用于所述神经网络功能的所述多个指令中的其他指令重写具有先前执行的指令的指令队列段;以及
所述PIM电路通过顺序地执行利用所述多个指令中的其他指令的重写来执行运算逻辑处理操作。
16.根据权利要求15所述的方法,
其中,所述存储器器件在加载模式、执行模式以及执行和更新模式下进行操作,
其中,在所述加载模式下,所述指令被存储在所述指令存储器中,
其中,在所述执行模式下,响应于来自主机的操作请求,存储在所述指令存储器中的指令被顺序地执行,并且
其中,在所述执行和更新模式下,响应于来自所述主机的操作请求,在执行存储在所述指令存储器中的指令的同时,新的指令被更新在指令队列段中的先前执行的指令上。
17.根据权利要求15所述的方法,
其中,所述指令存储器包括第一指令队列段至第m指令队列段,并且相同的第一指令至第m指令被存储在所述第一指令队列段至第m指令队列段中,并且
其中,在所述第一指令被执行之后,在第二指令正在执行的同时,第(m+1)指令被更新在所述循环指令队列中的所述第一指令上。
18.根据权利要求15所述的方法,
其中,所述指令存储器包括第一指令队列段至第m指令队列段,并且相同的第一指令至第m指令被存储在所述第一指令队列段至第m指令队列段中,并且
其中,在第一指令至第k指令被顺序地执行之后,更新新的指令的操作从所述第一指令队列段开始,其中k是小于m的整数。
19.根据权利要求15所述的方法,其中,通过执行一个或多个指令来执行操作处理的操作以及在包含先前执行的指令的指令队列段上重写一个或多个新的指令的操作被交替地执行。
20.根据权利要求15所述的方法,还包括:
存储对应于所述指令的索引;以及
从主机接收表示所述指令的执行顺序的索引顺序信息,
其中,当由所述主机提供操作请求时,存储在所述指令存储器中的指令以根据所接收的索引顺序信息的顺序被执行。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962816509P | 2019-03-11 | 2019-03-11 | |
US62/816,509 | 2019-03-11 | ||
KR1020200013303A KR20200108774A (ko) | 2019-03-11 | 2020-02-04 | 순환 큐 기반의 명령어 메모리를 포함하는 메모리 장치 및 그 동작방법 |
KR10-2020-0013303 | 2020-02-04 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111694513A true CN111694513A (zh) | 2020-09-22 |
Family
ID=72241133
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010165017.8A Pending CN111694513A (zh) | 2019-03-11 | 2020-03-11 | 包括循环指令存储器队列的存储器器件和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20200293452A1 (zh) |
CN (1) | CN111694513A (zh) |
DE (1) | DE102020106357A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11237907B2 (en) * | 2020-05-29 | 2022-02-01 | Taiwan Semiconductor Manufacturing Company, Ltd. | Processing-in-memory instruction set with homomorphic error correction |
US11868657B2 (en) | 2021-02-08 | 2024-01-09 | Samsung Electronics Co., Ltd. | Memory controller, method of operating the memory controller, and electronic device including the memory controller |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6564271B2 (en) * | 1999-06-09 | 2003-05-13 | Qlogic Corporation | Method and apparatus for automatically transferring I/O blocks between a host system and a host adapter |
US20140115278A1 (en) * | 2012-10-23 | 2014-04-24 | Analog Devices, Inc. | Memory architecture |
US20160283232A1 (en) * | 2015-03-27 | 2016-09-29 | Raanan Sade | Instruction and Logic for Speculative Request Support for Prefetching |
-
2020
- 2020-03-09 DE DE102020106357.1A patent/DE102020106357A1/de active Pending
- 2020-03-10 US US16/814,236 patent/US20200293452A1/en active Pending
- 2020-03-11 CN CN202010165017.8A patent/CN111694513A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20200293452A1 (en) | 2020-09-17 |
DE102020106357A1 (de) | 2020-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102424962B1 (ko) | 병렬 연산 처리를 수행하는 메모리 장치 및 이를 포함하는 메모리 모듈 | |
US11094371B2 (en) | Memory device for processing operation and method of operating the same | |
CN110582745B (zh) | 存储器装置及可促进张量存储器存取的方法 | |
KR20200108774A (ko) | 순환 큐 기반의 명령어 메모리를 포함하는 메모리 장치 및 그 동작방법 | |
US11416178B2 (en) | Memory device performing parallel calculation processing, operating method thereof, and operating method of memory controller controlling the memory device | |
US11663008B2 (en) | Managing memory device with processor-in-memory circuit to perform memory or processing operation | |
KR20210059803A (ko) | 뱅크 대 뱅크 데이터 전달 | |
US11416170B2 (en) | Technologies for efficiently accessing data columns and rows in a memory | |
US20220107803A1 (en) | Memory device for performing in-memory processing | |
US8397005B2 (en) | Masked register write method and apparatus | |
US20200293452A1 (en) | Memory device and method including circular instruction memory queue | |
CN111158757B (zh) | 并行存取装置和方法以及芯片 | |
US11620088B2 (en) | Dual speed memory | |
CN116360672A (zh) | 访问存储器的方法、装置和电子设备 | |
CN113490915A (zh) | 扩展存储器操作 | |
KR20210108487A (ko) | 저장 디바이스 동작 오케스트레이션 | |
CN113227956A (zh) | 计算瓦片 | |
US10108377B2 (en) | Storage processing unit arrays and methods of use | |
US11561711B2 (en) | Memory device performing configurable mode setting and method of operating the same |
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 |