CN115129658A - 针对上下文无关语法解析字符串的存储器内处理实施方案 - Google Patents
针对上下文无关语法解析字符串的存储器内处理实施方案 Download PDFInfo
- Publication number
- CN115129658A CN115129658A CN202210297778.8A CN202210297778A CN115129658A CN 115129658 A CN115129658 A CN 115129658A CN 202210297778 A CN202210297778 A CN 202210297778A CN 115129658 A CN115129658 A CN 115129658A
- Authority
- CN
- China
- Prior art keywords
- memory
- array
- logic
- context
- control block
- 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.)
- Withdrawn
Links
- 238000012545 processing Methods 0.000 title claims abstract description 62
- 230000015654 memory Effects 0.000 claims abstract description 268
- 238000004519 manufacturing process Methods 0.000 claims abstract description 24
- 230000003213 activating effect Effects 0.000 claims abstract description 9
- 238000000034 method Methods 0.000 claims description 50
- 230000004044 response Effects 0.000 claims description 5
- 238000003860 storage Methods 0.000 description 20
- 239000003990 capacitor Substances 0.000 description 13
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 11
- 238000003491 array Methods 0.000 description 10
- 238000011156 evaluation Methods 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 239000011159 matrix material Substances 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 239000000872 buffer Substances 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000012937 correction Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000002068 genetic effect Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000000873 masking effect Effects 0.000 description 2
- 238000003058 natural language processing Methods 0.000 description 2
- 230000036961 partial effect Effects 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 108700005078 Synthetic Genes Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 150000004770 chalcogenides Chemical class 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000012268 genome sequencing Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Images
Classifications
-
- 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/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
- H03K19/17724—Structural details of logic blocks
- H03K19/17728—Reconfigurable logic blocks, e.g. lookup tables
-
- 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
- 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
-
- 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
- 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/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30079—Pipeline control instructions, e.g. multicycle NOP
-
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/408—Address circuits
- G11C11/4085—Word line control circuits, e.g. word line drivers, - boosters, - pull-up, - pull-down, - precharge
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/409—Read-write [R-W] circuits
- G11C11/4094—Bit-line management or control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- 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/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1015—Read-write modes for single port memories, i.e. having either a random port or a serial port
- G11C7/1039—Read-write modes for single port memories, i.e. having either a random port or a serial port using pipelining techniques, i.e. using latches between functional memory parts, e.g. row/column decoders, I/O buffers, sense amplifiers
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
- H03K19/17748—Structural details of configuration resources
- H03K19/1776—Structural details of configuration resources for memories
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2207/00—Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
- G11C2207/22—Control and timing of internal memory operations
- G11C2207/2245—Memory devices with an internal cache buffer
-
- 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/1051—Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
- G11C7/106—Data output latches
-
- 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/1078—Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
- G11C7/1087—Data input latches
Abstract
本申请涉及针对上下文无关语法解析字符串的存储器内处理实施方案。一种实施存储器内处理管线的实例系统包含:存储器阵列,其用以存储多个查找表LUT及包括输入字符串的数据;耦合到所述存储器阵列的逻辑阵列,所述逻辑阵列用以对所述数据及所述LUT执行逻辑运算集合,所述逻辑运算集合实施上下文无关语法的产生式规则集合以将所述输入字符串转换成一或多个符号;以及耦合到所述存储器阵列及所述逻辑阵列的控制块,所述控制块用以通过激活所述多个LUT中的一或多个LUT控制计算管线,所述计算管线实施针对所述上下文无关语法评估所述输入字符串的解析器。
Description
技术领域
本公开的实施例大体上涉及存储器系统,且更具体地说,涉及实施用于针对上下文无关语法解析字符串的可重新配置存储器内处理逻辑。
背景技术
计算机系统可包含一或多个处理器(例如通用处理器,其也可称为中央处理单元(CPU)及/或专用处理器,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、图形处理单元(GPU)等),其耦合到一或多个存储器装置且使用所述存储器装置来存储可执行指令及数据。为了改进计算机系统的处理量,可实施各种解决方案来实现计算中的并行性。
发明内容
描述一种系统。所述系统包括:存储器阵列,其用以存储多个查找表(LUT)及包括输入字符串的数据;逻辑阵列,其耦合到所述存储器阵列,所述逻辑阵列用以对所述数据及所述LUT执行逻辑运算集合,所述逻辑运算集合实施上下文无关语法的产生式规则集合以将所述输入字符串转换成一或多个符号;及控制块,其耦合到所述存储器阵列及所述逻辑阵列,所述控制块用以通过激活所述多个LUT中的一或多个LUT来控制计算管线,所述计算管线实施针对所述上下文无关语法评估所述输入字符串的解析器。
描述一种系统。所述系统包括:存储器阵列,其用以通过电耦合到多条字线及多条位线的多个存储器单元存储包括输入字符串的数据;逻辑阵列,其耦合到所述存储器阵列,所述逻辑阵列实施控制所述多个存储器单元的可配置逻辑;及控制块,其耦合到所述存储器阵列及所述逻辑阵列,所述控制块用以控制对所述数据执行逻辑运算集合的计算管线,所述逻辑运算集合通过上下文无关语法的产生式规则集合将输入字符串转换成一或多个符号。
描述一种方法。所述方法包括:将输入字符串分成多个子字符串组合;通过对上下文无关语法的产生式规则集合进行编码的存储器内处理(PIM)管线处理每一子字符串组合的编码,其中所述PIM管线包括包含电耦合到多条字线及多条位线的多个存储器单元的存储器阵列;耦合到所述存储器阵列的控制块,以及耦合到所述控制块及所述存储器阵列的逻辑阵列;通过解码所述PIM管线产生的输出识别导出所述输入字符串的所述上下文无关语法的一或多个状态。
附图说明
根据下文给出的具体实施方式并且根据本公开的一些实施例的附图将更加充分地理解本公开。
图1A到1B说明根据本公开的方面实施的实例存储器内处理(PIM)系统的高级架构图。
图2示意性地说明由根据本公开的方面操作的PIM系统100针对上下文无关语法解析输入字符串的实例工作流程。
图3示意性地说明根据本公开的方面实施的对上下文无关语法的规则集合进行编码的处理逻辑。
图4示意性地说明由根据本公开的方面操作的PIM系统处理实例输入字符串的工作流程。
图5示意性地说明根据本公开的方面的用于实施PIM计算管线的实例LUT。
图6示意性地说明根据本公开的方面实施的基于下拉网络(PDN)的可配置逻辑及基于上拉网络(PUN)的可配置逻辑的高级组件图。
图7说明根据本公开的方面实施的串联连接的基于拉动网络的可配置逻辑的高级组件图。
图8为由根据本公开的一些实施例操作的PIM系统实施用于上下文无关语法的解析器的实例方法的流程图。
图9为由根据本公开的一些实施例操作的PIM系统实施计算管线的实例方法900的流程图。
图10为由根据本公开的一些实施例操作的PIM系统实施计算管线的实例方法1000的流程图。
图11说明包含根据本公开的一些实施例实施的存储器子系统的实例计算系统。
图12为本公开的实施例可操作的实例计算机系统的框图。
具体实施方式
本公开的实施例涉及实施可重新配置存储器内处理(PIM)逻辑以用于针对上下文无关语法解析字符串。
计算机系统可包含一或多个处理器(例如通用处理器,其也可称为中央处理单元(CPU)及/或专用处理器,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、图形处理单元(GPU)、神经及人工智能(AI)处理单元(NPU)等),其耦合到一或多个存储器装置且使用所述存储器装置来存储可执行指令及数据。为了改进计算机系统的处理量,可实施各种解决方案来实现计算中的并行性。然而,此类解决方案通常基于增大处理核心(例如GPU核心)的数目,因此增大计算机系统的能耗及总成本两者。
为了改进系统处理量同时避免过高成本,本公开的实施例由装备有逻辑阵列及控制块的存储器装置实施PIM操作。可重新配置PIM逻辑可用于实施各种计算管线,包含高度并行的超标量管线、向量管线、脉动阵列、硬件神经网络及/或其它类型的计算管线。在一些实施方案中,可重新配置PIM逻辑可用于针对上下文无关语法解析字符串,如本文中在下文更详细描述。根据本公开的方面实施的解析器可用于自然语言处理、实施正式语言(例如,编程语言)的编译器,及/或与上下文无关语法界定的语言相关的各种其它任务。在一些实施例中,当任选地用人工智能(AI)特征扩增时,这些解析器可用于语音及文本合成、语言翻译且广义地说,用于将符号串从一个语法集转换成另一语法集。这些字符串可对文本、语音、视觉、基因组及遵循已知规则或语法的任何其它信息进行编码。
在一些实施例中,可重新配置PIM逻辑可实施用于上下文无关语法的科克-扬格-卡萨米(Cocke-Younger-Kasami,CYK)解析器。实例上下文无关语法可如下描述:G=(N,Σ,P,S),其中N为非终端符号的集合,Σ为终端符号的集合,P为产生式规则的集合,且S∈N为开始符号。解析器计算函数f(G,x)的布尔值,如果上下文无关语法G导出字符串x=x0x1…xn,则其传回真。具体地说,CYK解析器可在O(n3)时间内计算f(G,x)的值(即,可以完成计算所需的时间单位来测量的计算复杂度将与输入字符串中的子字符串数目的立方成比例)。因此,CYK解析器可用以确定给定字符串是否符合指定语法规则集合。解析器迭代地构建解析树,如本文中在下文更详细描述。
因此,根据本公开的一些实施例实施的系统及方法的优势包含但不限于相对于各种现有实施方案,提供用于实施可尤其用于针对上下文无关语法解析字符串的各种计算管线的更具成本效益的系统及方法。在一些实施例中,根据本公开的方面实施的PIM系统可针对需要宽电路及大量存储器的应用性能优于专用处理器(例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、图形处理单元(GPU)等)。
图1A到1B说明根据本公开的方面实施的实例PIM系统100A到100B的高级架构图。如图1A中所示,PIM系统100包含耦合到控制块120的存储器阵列110、逻辑阵列130及高速缓存器/寄存器存储器140。本文中的“耦合到”是指组件之间的电连接,包含经由一或多个中间组件的间接连接及直接连接(即,无中间组件)。
在一个实施例中,PIM系统100可实施为位于单个芯片上的一或多个集成电路。在另一实施例中,PIM系统100可实施为芯片上系统,其除了图1中所示的组件之外还可包含一或多个处理核心及一或多个输入/输出(I/O)接口。在一些实施例中,PIM系统100可包含各种其它组件,其为了清楚及简洁起见从图1中省略。在一些实施例中,PIM系统100可使用裸片接合或晶片接合实施为多个裸片的裸片堆叠,使得每一裸片可具有特定功能,例如存储器、可配置逻辑、向量或标量处理器、脉动阵列等等。
在一个实施例中,PIM系统100可实施用于上下文无关语法的CYK解析器。图2示意性地说明由根据本公开的方面操作的PIM系统100针对上下文无关语法220解析输入字符串210的实例工作流程。在图2的说明性实例中,G表示实例上下文无关语法,Ν表示输入字母表的非终端符号的集合,∑表示输入字母表的终端符号的集合,P表示产生式规则的有限集,其中每一产生式规则将非终端符号Ν变换成一串非终端及/或终端符号Ν及/或∑,且S表示开始符号。对于给定输入字符串x,解析器需要界定输入字符串x=x0x1…xn是否符合上下文无关语法G。
如由图2示意性地说明,解析器迭代地将输入字符串210分成不同大小的子字符串集,其范围介于第一次迭代处的单符号子字符串到最后一次迭代处的整个字符串。对于每一子字符串,解析器尝试识别可根据语法规则导出给定子字符串的一序列一或多个语法状态,因此迭代地构建可存储于存储器数据结构230中的解析树。表230中的每个单元格包含导出对应子字符串的语法状态的识别符,而行号界定子字符串大小,使得表230的第1行包含对应于输入字符串的单符号子字符串的语法状态,表230的第2行包含对应于输入字符串的两符号子字符串的语法状态,表230的第3行包含对应于输入字符串的三符号子字符串的语法状态,依此类推,直到到达表230的最后一行为止,所述行包含对应于输入字符串的语法状态。因此,表230的在第i行及第j列的相交点处的单元格将包含从输入字符串的元素j开始导出大小为i的子字符串的语法状态的识别符。当且仅当表230的第一列的最后一个单元格(即,第n行及第1列的相交点处的单元格,其中n是输入字符串x的大小)包含开始符号S时,通过应用语法G的产生式规则P从开始符号S导出输入字符串x。
将输入字母表的非终端符号变换成对应终端及/或非终端符号串的语法规则P可通过逻辑语句集合310进行编码,如由图3示意性地说明。每一逻辑语句对将非终端符号的各种组合变换成给定终端符号的一或多个产生式规则进行编码。由产生式规则的右侧指定的逻辑符号的每一组合通过逻辑与(AND)运算编码,而逻辑符号的两个或更多个组合通过逻辑或(OR)运算连接。例如,产生式规则S->AB被转换成WS=UA∧UB,其中UA及UB分别表示对应于非终端符号A及B的逻辑运算输入,∧表示逻辑与(AND)运算,且WS表示对应于开始符号S的逻辑运算结果。当且仅当UA及UB两者都为真时,对产生式规则右侧进行编码的逻辑条件UA^UB将评估为真,因此表示将AB转换成S的原始产生式规则。
如果两个或更多个产生式规则界定对应于同一终端符号的非终端符号组合,则这些产生式规则的右侧通过逻辑或(OR)运算连接。例如,实例语法220中界定对应于终端符号S的非终端符号组合的产生式规则的右侧连接在一起以形成以下逻辑语句:WS=(UA∧UB)∨(UB∧UA)∨(US∧US),其中∨表示逻辑或(OR)运算。
因此,实例语法220的产生式规则可由逻辑条件集合310表示,如由图3示意性地说明。逻辑条件集合310又可由图3的处理逻辑330表示,所述处理逻辑接受对应于非终端符号S、A及B的输入U1、U2及U3且产生对应于非终端符号S、A及B的输出W1、W2及W3。非终端符号S、A及B可通过独热编码进行编码,对于每一非终端符号,所述编码产生固定大小的位群组(在图3的实例中为三个位),使得除一个位以外的所有位都为零。因此,非终端符号S、A及B可由其相应独热编码320表示,如由图3示意性地说明。评估逻辑条件集合的处理逻辑330可由图1的PIM管线100实施,如本文中在下文更详细描述。
在操作中,使用编码320对输入字母表符号进行编码,且经编码输入被馈送到处理逻辑330,处理逻辑产生可使用编码集320解码且存储在表示表230的相应单元格的存储器位置中的输出集。
图4示意性地说明由根据本公开的方面操作的PIM系统100处理实例输入字符串410的工作流程。如由图4示意性地说明,输入字符串410被分成子字符串组合420A到420C,使得每一组合包含不同大小的两个子字符串,其范围介于单个符号到输入子字符串的大小递减一。接着通过串接所述组合包括的子字符串的编码430A、430B来对每一组合420进行编码。编码430已通过所述方法的先前迭代产生且存储在实施CYK解析树的存储器数据结构230中。如本文中在上文所提及,表230中的每一单元格包含导出对应子字符串的语法状态的识别符,而行号界定子字符串大小。因此,表230的在第i行及第j列的相交点处的单元格将包含从输入字符串的元素j开始导出大小为i的子字符串的语法状态的识别符。对于每一子字符串组合420,其编码430被馈送到处理逻辑330,处理逻辑产生可使用编码集320解码且存储在对应于输入子字符串410的表格单元格450中的输出集440。具体地说,在图4的简化实例中,经编码为001及000(输入‘aab’在符号[SAB]方面的独热编码已在先前一个步骤中计算出)的输入‘b’及‘aab’在被馈送到对语法G进行编码的处理逻辑330中之后产生输出000。为了确认来自对应CYK步骤的此中间结果的正确性:‘b’为B且‘aab’为0,且对于B0不存在产生式规则(或0的存在实际上使任何产生式规则无效),因此结果为0。经编码为101及110(这些输入在符号[SAB]方面的独热编码已在先前一个步骤中计算出)的输入‘ba’及‘ab’在被馈送到处理逻辑330中之后产生输出101。为了确认来自对应CYK步骤的此中间结果的正确性:‘ba’为[S,B]且‘ab’为[S,A],且其组合为SS、SA、BS、BA,其中存在具有语法G中的规则的组合(即,SS及BA的规则为:S->SS,B->BA),因此结果为[S,B],由于不存在A,因此所述结果在独热编码情况下对应于101。经编码为101及001(输入‘baa’在符号[SAB]方面的独热编码已在先前一个步骤中计算出)的输入‘baa’及‘b’在被馈送到处理逻辑330中之后产生输出000。为了确认来自对应CYK步骤的此中间结果的正确性:‘baa’为SB且‘b’为B,且其组合为不具有产生式规则的SB、BB,因此结果为0。
虽然上文描述针对图4的简化实例说明计算CYK表中的单个单元格,但在具有数千符号的更复杂实例中,计算强度(例如在基本数学运算的数目方面所测量)可极高。因此,具有嵌入式逻辑的PIM处理器可在高效执行此类计算方面提供优于各种常规计算技术的显著优势。
可针对初始字符串460的每一子字符串组合迭代地执行类似运算,直到到达表230的最后一行为止,所述行的唯一单元格470包含对应于输入字符串460的语法状态。通过CYK解析器的设计,当且仅当单元格470包含开始符号S时,输入字符串460符合语法G,所述语法的规则由处理逻辑330编码。
如本文中在上文所提及,评估逻辑条件集合的处理逻辑330可由图1A到1B的PIM管线100A到100B实施。如图1A中所示,PIM系统100A到100B包含耦合到控制块120的存储器阵列110、逻辑阵列130及高速缓存器/寄存器存储器140。本文中的“耦合到”是指组件之间的电连接,包含经由一或多个中间组件的间接连接及直接连接(即,无中间组件)。
在一个实施例中,PIM系统100A到100B可实施为位于单个芯片上的一或多个集成电路。在另一实施例中,PIM系统100A到100B可实施为芯片上系统,其除了图1A到1B中所示的组件之外还可包含一或多个处理核心及一或多个输入/输出(I/O)接口。在一些实施例中,PIM系统100A到100B可包含各种其它组件,其为了清楚及简洁起见从图1A到1B中省略。
存储器阵列110可由动态随机存取存储器(DRAM)阵列或包含但不限于2D及3D布置的类似存储器技术提供。存储器阵列110可实施为可通过行(字线)及列(位线)寻址,且在一些情况下另外通过使用线来选择性启用或遮蔽通过字线及位线寻址的存储器存取的存储器单元矩阵。每一存储器单元包含保持电荷的电容器及充当控制对电容器的存取的开关的晶体管。
在另一实施例中,存储器阵列110可由电阻式随机存取存储器(ReRAM)提供,包含但不限于3D X点存储器。ReRAM可实施为可通过行(字线)及列(位线)寻址的存储器单元矩阵,包含行及列对称的实施例(行可发挥列的作用且列可发挥行的作用)。在一些实施例中,ReRAM可包含用于选择性启用或遮蔽通过字线及位线寻址的存储器存取的额外线。每一存储器单元包含保持其导电性或电阻率状态的电阻式存储器单元。
在另一实施例中,存储器阵列110可由包含但并非3D NAND快闪存储器的快闪存储器提供,其为可通过平面(字线)及NAND串(位线)寻址的存储器单元的3D矩阵。每一存储器单元包含具有浮动栅极的快闪晶体管,其取决于存储在晶体管的浮动栅极中的电荷而保持其阈值电压状态(Vt)。
在另一实施例中,存储器阵列110可由非易失性混合FeRAM-DRAM存储器(HRAM)阵列或包含但不限于2D及3D布置的类似存储器技术提供。HRAM可实施为可通过行(字线)及列(位线)寻址的存储器单元矩阵。在一些实施例中,HRAM可包含用于选择性启用或遮蔽通过字线及位线寻址的存储器存取的额外线。每一存储器单元包含保持电荷的铁电电容器及充当控制对铁电电容器的存取的开关的晶体管。
如由图1A示意性地说明,存储器阵列110可用于存储LUT及用于计算的数据,以及计算结果。LUT可实施用于针对上下文无关语法解析字符串的逻辑,如本文中所描述。每一LUT可通过与包括一或多个逻辑运算输入的查找地址相关联地存储一或多个逻辑运算结果来实施算术或逻辑运算。在一些实施例中,PIM系统100可进一步包含耦合到存储器阵列的多个感测放大器112A到112L。感测放大器可用以从选定位线感测编码存储器单元的内容的低功率信号,并将所感测信号放大到可辨识逻辑电压电平,且任选地对所存取数据执行某些计算。
高速缓存器/寄存器存储器140可由静态随机存取存储器(SRAM)阵列或由包含但不限于磁性隧道结(MTJ)存储器单元的低时延磁阻式随机存取存储器实施。高速缓存器/寄存器存储器140可用于高速缓存存储于存储器阵列110中的信息的子集。SRAM阵列140可包含可用于存储驻存于存储器阵列110中的最近及/或最频繁存取的数据项的副本的多个高速缓存线。在图1A的说明性实例中,高速缓存器可用以存储待由控制块120当前正执行的计算管线利用的一或多个LUT的副本、由计算管线的中间级产生的中间结果(例如,其可存储当前迭代中的子字符串的二进制编码,所述二进制编码将在针对上下文无关语法解析字符串时用于后续迭代中,如本文中所描述)及/或逻辑阵列130的信号。可为寄存器分配SRAM阵列140的至少部分,所述寄存器存储用于计算的频繁更新的存储器变量的值。
逻辑阵列130可包含各种逻辑组件,例如全加法器、半加法器、乘法器、D型触发器及/或用于实施逻辑运算的其它组件。实例逻辑运算示意性地示出为功能块150。在图1A的说明性实例中,逻辑运算可通过在LUT(示意性地示出为功能块160)由控制块120激活时对其执行逻辑运算,及/或对存储于存储器阵列110及/或高速缓存器/寄存器存储器140中的其它数据执行逻辑运算来实施可重新配置处理逻辑。此外,逻辑阵列130内的逻辑单元可在自身当中交换数据。由逻辑阵列130执行的逻辑运算可包含例如二进制及逐位或(OR)、与(AND)、异或(XOR)、加法(ADD)等。逻辑阵列130可实施用于针对上下文无关语法解析字符串的逻辑(例如表示语法G的规则的逻辑),如本文中所描述。
在一些实施例中,逻辑阵列130可实施为高速结构互连,其具有可编程柔性拓扑(例如,交叉开关)且包含有可用来自LUT的数据编程的逻辑单元。在此类实施例中,相比于基于行缓冲器实施方案的PIM实施例,基于LUT的逻辑可快得多地执行且可具有更灵活的数据交换。在这些实施例中,针对上下文无关语法的字符串解析器可被安排为经由高速结构互连的流式二进制编码。
如本文中在上文所提及,在图1A的说明性实例中,存储器阵列110可存储实施各种逻辑运算的多个LUT。实施特定计算管线所必需的LUT可被复制到高速缓存器140,使得逻辑阵列130将能够在无需存取存储器阵列110的情况下存取驻存于高速缓存器140中的LUT。在一些情况下,LUT可被直接编程到逻辑阵列130。
逻辑阵列130可从控制块120及/或从存储器阵列110接收输入,因为除了LUT之外,存储器阵列110还可存储用于计算的数据。换句话说,存储器阵列110可存储要对其执行计算的数据以及实施计算逻辑的LUT两者。控制块120可处理可执行指令(依序地或并行地),所述可执行指令可存储于存储器阵列110中,因此以概念上类似于常规计算管线(例如,CPU或GPU管线)的方式实施冯诺伊曼架构:指令提取、解码、配置及执行。这些指令可包含实施针对上下文无关语法解析字符串的指令,如本文中所描述。配置指令可涉及由控制块120激活存储LUT及数据的字线。执行指令涉及由逻辑阵列130检索存储在所激活字线中的内容,且对所检索数据执行由控制块120供应的控制信号指定的逻辑运算。计算的结果可存储在存储器阵列110中及/或经由耦合到存储器的输入/输出(I/O)接口(为了清楚及简洁起见未在图1中示出)输出。因此,控制块120可例如基于可被复制及/或级联的图3的处理逻辑330的一或多个副本实施计算管线。控制块可激活某些LUT(例如,通过激活存储LUT的必需行的存储器阵列字线),因此使得LUT可用于逻辑阵列130。
激活特定字线的控制块120的字线驱动器可与存储器阵列驻存在同一裸片上。在一些实施例中,控制块120的处理核心也可位于同一裸片上,因此实施芯片上系统。替代地,处理代码可位于不同裸片上,只要提供处理核心与存储器阵列之间的充分带宽及处理量的物理连接可用即可。多个裸片可堆叠在彼此顶上,因此形成裸片堆叠。裸片堆叠可通过各种技术制成,包含但不限于:TSV技术、裸片到裸片接合或晶片到晶片接合技术。在一些实施例中,控制块可由外部处理核心,例如CPU的专用核心实施,所述外部处理核心由软件驱动程序控制。
在一些实施例中,控制块120可经由逻辑阵列130或存储器阵列110的字线从存储器阵列110接收其指令以供执行。如果存储器阵列110由电阻式随机存取存储器(ReRAM)提供,则后者是可能的,所述电阻式随机存取存储器是可通过行(字线)及列(位线)寻址的存储器单元矩阵,其中行与列是对称的(即,行可发挥列的作用,且列可发挥行的作用)。在此情况下,逻辑阵列130的感测放大器/驱动器经由位线提供充分驱动强度,以便使控制块120的感测放大器/驱动器感测数据。
此外,由于数据存取的对称性,逻辑阵列130及控制块120的功能可在一些实施例中合并,使得控制块120也可实施逻辑阵列130的功能,且逻辑阵列130也可实施控制块120的功能。因此,此类实施例可具有每阵列对称的两个块(从存储器阵列110的左边及底部连接到存储器阵列110)。此外,在一些实施例中,所述两个块可进一步扩展到四个对称块(从存储器阵列110的左边、右边、底部及顶部连接到存储器阵列110)。在这些实施例中,本文中所描述的针对上下文无关语法的字符串解析器可被安排为计算结果在对称块当中的同步或异步交换。在一些实施例中,PIM系统可实施为分层芯片,其中存储器阵列110与控制块120位于同一裸片的两个不同层内。
图5示意性地说明根据本公开的方面的用于实施PIM计算管线的实例LUT。如图5中所示,LUT 500实施三个位输入A、B、C的带进位加法运算(全加法器)。LUT 500具有用于操作数A、B、C中的每一个的一列,及用于结果的两列:用于操作数的单位总和的一列及用于进位位的一列。因此,LUT的每一行包含操作数A、B、C的组合,以及单位总和及进位位的对应值。通过在存储器阵列中存储其呈LUT形式的相应真值表,可以类似方式实施各种其它算术及逻辑运算。真值表存储运算自变量(操作数)的所有可能组合的至少一个子集连同对应运算结果。例如,用于针对上下文无关语法解析字符串且描绘于图3中的逻辑可存储为实施OR及AND门,以及实施具有相同功能性的电路的可能其它门的真值表群组。控制块120可在计算管线的每一级处从LUT选择对应于位输入的当前值的行。控制块120可进一步激活由LUT的基地址与LUT中的必需行相对于其基地址的偏移的总和识别的字线。
在一些实施例中,可通过将由逻辑阵列130执行的计算与存储器存取交错而将LUT高速缓存于高速缓存器140中(例如,在逻辑阵列130对LUT的一个部分执行计算时,可从存储器阵列110读取LUT的另一部分并将其存储在高速缓存器140中)。来自高速缓存器140的计算结果可以类似方式存储到存储器阵列110。
在一些实施例中,由逻辑阵列及LUT实施的处理逻辑可基于逻辑、数据及结果中检测到的条件重新编程自身。此类智能逻辑可以是AI训练引擎或模糊逻辑的部分。在一些情况下,此类逻辑可能需要执行检查点,以便始终具有自身的良好已知状态,从而可能从错误状态回滚。相对于如本文中所描述的针对上下文无关语法解析字符串,此特征将允许基于某些条件及投影演进语法规则集合G。此类演进可与自然语言的演进或编程语言的演进相比较。当应用于编程语言时,此特征可用于将语言优化并入到语言中,这可在后续语言标准版本(例如,C++03、C++11、C++14、C++17等)中得到证明。此演进特征的另一实例为基因组定序以及人工基因在基因算法及基因编程中的利用。
如本文中在上文所提及,根据本公开的方面操作的PIM系统可实施图3的对待由CYK解析器利用的上下文无关语法的规则集合进行编码的处理逻辑330。在其它说明性实例中,根据本公开的方面操作的PIM系统可用于实施各种其它管线,本文中在下文更详细地描述其实例。那些管线也可作为较大及/或较一般计算系统的部分整体实施CYK解析器。
在一些实施例中,控制块120可在无推测且无指令级并行性的情况下实施简单的精简指令集计算机(RISC)管线。在其它实施例中,控制块120可实施至少一些指令级并行性及乱序执行,因此实施Tomasulo或scoreboarding型计算管线(即,复杂指令集计算机(CISC)管线)。
在一些实施例中,控制块120可通过采用同时对多个数据项同时执行同一运算的多个处理元件来实施单指令多数据(SIMD)计算管线。此类实施例可实施用于矩阵乘法及点积运算的极高效解决方案。SIMD式管线可为RISC或CISC类型。此外,SIMD管线可实施为超长指令字(VLIW)管线以用于利用较多指令级并行性。
因此,在一些实施方案中,用于实施用于上下文无关语法的解析器的计算系统包含存储器阵列、耦合到存储器阵列的逻辑阵列,以及耦合到存储器阵列及逻辑阵列的控制块。存储器阵列可用以存储一或多个查找表(LUT)及包括输入字符串的数据。逻辑阵列可用以对数据及LUT执行逻辑运算集合,使得逻辑运算集合实施上下文无关语法的产生式规则集合,以用于将输入字符串转换成字母表的一或多个非终端符号。控制块可通过激活一或多个LUT控制实施解析器的计算管线,解析器针对上下文无关语法评估输入字符串。由计算管线实施的解析器可迭代地识别上下文无关语法的一或多个语法状态的序列,语法状态的每一序列导出输入字符串的子字符串。
解析器产生由表表示的CYK解析树,所述表是通过将来自先前所计算单元格的数据递归地馈送到图3的处理逻辑330计算出的,如本文中在上文更详细描述。可以位并行方式计算并存储表格单元格,使得CYK行中的每一行获取电耦合到相应字线且存储在相应位线(或其群组)中的一或多个存储器行。
在一些实施例中,存储器阵列110可进一步实施可配置逻辑,其采用用于控制存储器阵列110的存储器单元的拉动网络(上拉网络(PUN)及/或下拉网络(PDN)),如由图1B示意性地说明。在图1B的说明性实例中,逻辑阵列130可用于实施控制存储器阵列110的存储器单元的拉动网络,如由图6示意性地说明。
具体地说,基于PDN的可配置逻辑600A可包含存储器单元,其由耦合到电容器620A的存取晶体管610A形成且由PDN 640控制。可配置逻辑在两个阶段中操作:预充电及评估,每一阶段可在对应时钟循环上执行。当时钟信号为低,因此断开晶体管610A且闭合晶体管630A时,执行预充电阶段:到接地的放电路径被PDN 640阻挡,且电容器660A被“上拉”,即,通过流过晶体管610A的技术特定标称供电电压(Vdd)充电到逻辑“1”电平。相反,当时钟信号为高,因此闭合晶体管610A且断开晶体管630A时执行评估阶段,经由晶体管630A及PDN 640实现到接地的条件性路径。电容器620A取决于界定PDN 640的状态的输入In1、In6……Inn而放电,因此界定到接地的路径。在一些情况下,所述路径可为部分的,因此提供多电平电压评估。
类似地,基于PUN的可配置逻辑600B可包含存储器单元,其由耦合到电容器620B的存取晶体管610B形成且由PUN 650控制。可配置逻辑在两个阶段中操作:预充电及评估,每一阶段可在对应时钟循环上执行。
当时钟信号为高,因此通过闭合晶体管610B来阻挡充电路径时,执行预充电阶段:电容器620B被“下拉”,即,经由晶体管630B放电到接地。相反,当时钟信号为低时,执行评估阶段,因此通过闭合晶体管630B且断开晶体管610B实现到供电电压(Vdd)的条件性件路径。因此,电容器620B取决于界定PUN 650的状态的输入In1、In6……Inn而充电,因此界定到接地的路径。在一些情况下,所述路径可为部分的,因此提供多电平电压评估。
再次参考图1B,逻辑阵列130可用于实施控制存储器阵列110的操作的可配置逻辑(例如,由包括PDN、PUN或其组合的拉动网络表示)。虽然图1B的说明性实例示出实例PDN155,但在各种其它实施方案中,逻辑阵列可实施PDN及PUN两者及/或其组合以用于控制存储器阵列110。
如本文中在上文所提及,由逻辑阵列130实施的可配置逻辑在两个阶段中操作:预充电及评估,每一阶段可在对应时钟循环上执行。在预充电阶段期间,所选位线165通过耦合到PUN/PDN电容器而条件性地预充电到某一电压。替代地,位线可为PUN/PDN电容器的部分,或可执行为PUN/PDN电容器。此外,逻辑阵列130可使得至少一个字线170在预充电期间断开,且因此存储器单元的对应行连同由所选位线寻址的存储器单元的列一起经预充电。经预充电行的数目可用于在评估阶段期间平衡电荷的量。此外,存储器单元的不同行可经预充电到不同电荷电平,所述电荷电平可由控制块120所提供的输入指定。因此,可根据相应拉动网络的状态用不同逻辑对选定位线上的存储器单元群组进行预充电。在一些实施方案中,预充电阶段可集成到存储器接口协议中,且因此可每当存储器控制器发布预充电指令时执行预充电阶段。
在评估阶段期间,所选字线条件性地断开,且用PDN 155、PUN(为了清楚及简洁起见未在图1中示出)或其组合评估存储器单元的对应行。因此,取决于拉动网络的状态,由存储器单元保持的电荷得以保持或泄漏。作为位线的状态的评估阶段的结果可记录在存储器阵列110的所选行中。可针对其它关注行重复所述过程。可通过拉动网络对后续结果执行多个遍次以便计算最终结果。此可尤其用于递归算法,包含用于针对上下文无关语法解析字符串的那些算法,如本文中所描述。控制拉动网络的输入In1、In2……Inn可从控制块(其又可从外部源接收其输入)接收或可从所选位线或位线群组依序或并行地路由,所选位线或位线群组可通过断开如由控制块控制的某些字线而耦合到存储器单元。
在说明性实例中,XOR逻辑门可通过以下操作来实施:将第一存储器单元预充电到某一值,对第一存储器单元的存取由所选位线上的第一字线控制;以及接着通过断开第一字线而存取存储于第一存储器单元中的值,随后通过直接供应到位线或存储于耦合到位线的第二存储器单元中的另一值来评估所述存储器单元。所观测到的电压波动将指示第一值与第二值不同,且因此XOR逻辑门的输出将为逻辑“1”。相反,如果未观测到电压波动,则所述值不可区分,且XOR逻辑门的输出将为逻辑“0”。在另一实例中,可通过利用两个邻近位线来类似地实施XOR逻辑门,例如,通过以与上文相对于第一及第二存储器单元所描述相同的方式耦合所述位线,且接着经由PUN/PDN组件来路由此耦合。在各种说明性实例中,可通过组合多个XOR门(其中的每一个表示半加法器)来执行加法及乘法运算。类似地,可实施其它类型的逻辑门(AND、NAND、OR、NOR、NOT等)。
在一些实施方案中,可在存储器阵列110内实施控制存储器单元的可配置逻辑(例如,拉动网络)。可将拉动网络输入In1、In2……Inn路由到相应字线,且可通过将存储器单元预充电到各种充电值(电压电平)而将拉动网络逻辑存储在由与字线的对应相交点处的所选位线寻址的存储器单元中。在评估阶段期间,字线将断开,此建立耦合到相应存储器单元的所选位线的新电压状态。
在说明性实例中,存储器内可配置逻辑可用于实施简单的反相器。在预充电阶段,所选存储器行可预充电到零或负电压,且此后其字线可闭合。此外,选定位线可被预充电到正电压。在评估阶段期间,将控制可配置逻辑的输入路由到字线:如果输入为逻辑“0”,则字线保持闭合且位线保持在正电压,而如果输入为逻辑“1”,则字线断开,因此使得来自存储器单元的电荷抵消位线上的电荷,这将使其状态从正状态反转到零或负状态。可并行地以此方式接合多个位线,因此产生具有存储器内可配置逻辑的高带宽逻辑阵列。如本文中在上文所提及,控制外部逻辑的输入可从控制块(其又可从外部源接收其输入)接收,或可从所选位线或位线群组依序或并行地路由。
再次参考逻辑阵列130对可配置逻辑(例如,拉动网络)的实施方案,基于拉动网络的可配置逻辑,例如实例可配置逻辑单元600A及600B可经由缓冲器(例如,反相器)串联连接,如由图7示意性地说明。在图7的说明性实例中,PDN 710A及710B经由逻辑反相器720串联连接。
此类拉动网络级联允许实施复杂依序电路以用于实施并行计算管线,例如,包括对待由算法使用的上下文无关语法的规则集合进行编码的处理逻辑330的多个副本,包含CYK解析器的所述算法提供针对上下文无关语法的字符串解析,如本文中所描述。处理逻辑330的副本可被复制及/或级联。
因此,在一些实施方案中,用于实施用于上下文无关语法的解析器的计算系统包含:包含电耦合到多条字线及多条位线的多个存储器单元的存储器阵列、耦合到存储器阵列的逻辑阵列,以及耦合到存储器阵列及逻辑阵列的控制块。存储器阵列可用于存储包括输入字符串的数据。逻辑阵列可用于实施控制多个存储器单元的可配置逻辑。控制块可控制对数据执行逻辑运算集合的计算管线,所述逻辑运算集合通过上下文无关语法的产生式规则集合将输入字符串转换成字母表的一或多个非终端符号。计算管线可实施解析器,其通过迭代地识别上下文无关语法的一或多个语法状态的序列而针对上下文无关语法评估输入字符串,使得语法状态的每一序列导出输入字符串的子字符串。
图8为由根据本公开的一些实施例操作的PIM系统实施用于上下文无关语法的解析器的实例方法的流程图。如本文中在上文所提及,PIM系统可包含耦合到控制块的存储器阵列、逻辑阵列及高速缓存器/寄存器存储器。计算管线可由存储于存储器阵列中或经由I/O链路接收的可执行指令序列指定。
在一些实施例中,方法800由图1A的PIM系统100A或图1B的PIM系统100B执行。尽管以特定序列或次序示出方法的操作,但除非另外指定,否则可修改操作的次序。因此,应理解,所说明的实施例仅为实例,且所说明的操作可以不同次序执行,同时一些操作可并行地执行。另外,在一些实施例中,可省略一或多个操作,或可插入更多操作。因此,在每一实施例中并不要求所说明的全部操作,且其它处理流程是可能的。
在操作810处,实施方法的PIM系统将输入字符串分成不同大小的多个子字符串组合,其范围介于方法的第一次迭代处的单符号子字符串到最后一次迭代处的整个字符串。划分操作可涉及识别输入字符串内的子字符串的位置,而实际上并不移动或复制所识别子字符串。在一些实施例中,划分操作可与其它计算操作交错,且在一些情况下,划分操作可经译码为指令集,使得子字符串的位置与CYK算法的相应迭代或CYK表内的位置链接。
在操作820处,PIM系统通过所选编码,例如独热编码对每一子字符串组合进行编码。每一子字符串的编码已通过方法的先前迭代产生且存储在实施解析树的存储器数据结构中,如本文中在上文更详细描述。可针对所有单符号子字符串预界定初始编码。
在操作830处,PIM系统通过将这些组合馈送到实施上下文无关语法的产生式规则集合的逻辑来处理每一子字符串组合的编码,如本文中在上文更详细描述。
在操作840处,PIM系统通过解码计算管线产生的输出来识别导出子字符串组合的上下文无关语法的一或多个状态。状态保存在实施解析树的存储器数据结构中,如本文中在上文更详细描述。解码可为任选的且状态可保持经编码以用于后续迭代。
响应于在操作850处确定当前迭代内的任何子字符串的大小小于输入字符串的大小,方法循环回到操作810。
响应于在操作860处确定对应于子字符串的语法状态集合包含开始符号S,PIM系统在操作870处输出真(即,输入字符串符合上下文无关语法);否则,PIM系统在操作880处输出假(即,输入字符串并不符合上下文无关语法)。由PIM系统产生的结果可用于自然语言处理操作,实施正式语言(例如,编程语言)的编译器,及/或执行与上下文无关语法界定的语言相关的各种其它任务。
确定句子(短语或词)是否存在于语言中(即,通过执行语法检查及错误识别)为本文中所描述的针对上下文无关语法的字符串解析器的核心特征。此外,本文中所描述的实施方案可示出如何建构句子(通过构建解析树)。在一些实施例中,在给定加权语法的情况下,本文中所描述的实施方案可从最高到最低概率地列举句子构造,从而从最常见到最不常见地对语言构造进行评级,并因此评估其口才以及相关的语言及艺术方面。结合起来,通过识别各种语言构造中最常见的错误及其校正方法,句子建构及概率可用于错误校正。
在说明性实例中,可通过维持实施键值存储的查找表来促进错误校正功能性,其中键为表示对应于错误状态的编码的位集合,且值为表示相应正确构造的编码。涉及键值存储的类似方法可用于提取基本信息并将文本从具有许多细节的较大文本转换为仅具有主要信息的较小文本。此可通过实施键值存储来进行,其中键为最常见构造的编码且值表示其重要性。涉及键值存储的类似方法可用于自动问答,使得键可表示从问题提取的基本信息的编码且值可表示回答问题的句子。
图9为由根据本公开的一些实施例操作的PIM系统实施计算管线的实例方法900的流程图。如本文中在上文所提及,PIM系统可包含耦合到控制块的存储器阵列、逻辑阵列及高速缓存器/寄存器存储器。计算管线可由存储于存储器阵列中或经由I/O链路接收的可执行指令序列指定。
在一些实施例中,方法900由图1A的PIM系统100A执行。尽管以特定序列或次序示出方法的操作,但除非另外指定,否则可修改操作的次序。因此,应理解,所说明的实施例仅为实例,且所说明的操作可以不同次序执行,同时一些操作可并行地执行。另外,在一些实施例中,可省略一或多个操作,或可插入更多操作。因此,在每一实施例中并不要求所说明的全部操作,且其它处理流程是可能的。
在操作910处,实施方法的PIM系统在存储器阵列中存储实施各种逻辑及/或算术运算的多个查找表(LUT),包含实施如本文中所描述的针对上下文无关语法的字符串解析器的运算。
在操作920处,PIM系统在存储器阵列中存储待用于计算的数据(例如,待供应到计算管线的第一可执行指令的初始值)。在各种说明性实例中,数据可包含用于针对上下文无关语法解析字符串的字符串、符号及键值存储,如本文中所描述。
在操作930处,控制块从存储器阵列(或从高速缓存器)提取下一可执行指令,且解码所提取指令以便确定待执行的运算及其操作数。
在操作940处,PIM的控制块从存储器阵列检索待用于执行当前指令的一或多个LUT并将其存储在高速缓存器中。
在操作950处,PIM的控制块激活待用于计算管线的当前可执行指令的一或多个LUT。控制块可进一步产生选择用于计算管线的当前可执行指令的逻辑阵列的一或多个元件的一或多个控制信号。在说明性实例中,对于每一LUT,控制块可激活存储有由输入的组合识别的LUT行的字线,如本文中在上文更详细描述。
在操作960处,PIM的逻辑阵列基于从控制块接收的控制输入对所激活LUT及数据执行逻辑运算。
响应于在操作970处确定计算管线包含其它可执行指令,所述方法可循环回到操作930。否则,在操作980处,将由计算管线产生的结果存储于存储器阵列中及/或经由I/O接口输出,且所述方法终止,从而任选地触发取决于此方法计算的结果的其它方法。
图10为由根据本公开的一些实施例操作的PIM系统实施计算管线的实例方法1000的流程图。如本文中在上文所提及,PIM系统可包含耦合到控制块的存储器阵列、逻辑阵列及高速缓存器/寄存器存储器。计算管线可由存储于存储器阵列中或经由I/O链路接收的可执行指令序列指定。
在一些实施例中,方法1000由图1B的PIM系统100B执行。尽管以特定序列或次序示出方法的操作,但除非另外指定,否则可修改操作的次序。因此,应理解,所说明的实施例仅为实例,且所说明的操作可以不同次序执行,同时一些操作可并行地执行。另外,在一些实施例中,可省略一或多个操作,或可插入更多操作。因此,在每一实施例中并不要求所说明的全部操作,且其它处理流程是可能的。
在操作1010处,实施所述方法的PIM系统将数据存储在存储器阵列中,所述存储器阵列包括分组为多条字线及多条位线的多个存储器单元。所述数据可包含用于计算的一或多个初始数据项及用于由PIM系统的存储器阵列及/或逻辑阵列实施的控制逻辑的一或多个配置数据项。
在操作1020处,PIM系统的控制块激活多条位线中的选定位线。待激活的位线可由从PIM系统的控制块接收的控制输入指定,如本文中在上文更详细描述。
在操作1030处,PIM系统将选定位线预充电到某一充电电平(例如,使用由从控制块接收的控制输入指定的电压电平),而多条字线中的至少一条字线任选地在预充电操作期间断开,如本文中在上文更详细描述。在一些实施方案中,可不断开字线,而位线自身可用作用于预充电操作的电容器。
在操作1040处,PIM系统通过可配置逻辑评估由选定字线寻址的存储器单元行,所述选定字线提供位线与对应存储器单元的耦合,且其可由从控制块接收的控制输入指定,如本文中在上文更详细描述。
在操作1050处,PIM系统将选定位线的状态存储在可经由多条字线中的字线存取的可用存储器单元中。可针对多条所关注字线重复预充电、评估及存储操作,所述字线可由从控制块接收的控制输入指定,如本文中在上文更详细地描述。
图11说明包含根据本公开的一些实施例实施的存储器子系统1110的实例计算系统1100。存储器子系统1110可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置1140)、一或多个非易失性存储器装置(例如,存储器装置1130),或此类媒体的组合。在一些实施例中,一或多个存储器装置1140可用于实施根据本公开的一或多个方面操作的PIM系统。因此,一或多个存储器装置1140可各自包含耦合到控制块的存储器阵列、逻辑阵列及高速缓存器/寄存器存储器,如本文中在上文参考图1A到1B更详细地描述。
存储器子系统1110可为存储装置、存储器模块,或存储装置与存储器模块的混合。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用快闪存储(UFS)驱动器、安全数字(SD)卡及硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小外形DIMM(SO-DIMM),及各种类型的非易失性双列直插式存储器模块(NVDIMM)。
计算系统1100可以是计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置、运载工具(例如,飞机、无人机、火车、汽车或其它运输工具)、支持物联网(IoT)的装置、嵌入式计算机(例如,包含在运载工具、工业设备或联网市售装置中的计算机),或此类包含存储器及处理装置(例如,处理器)的计算装置。
计算系统1100可包含耦合到一或多个存储器子系统1110的主机系统1120。在一些实施例中,主机系统1120耦合到不同类型的存储器子系统1110。图11说明耦合到一个存储器子系统1110的主机系统1120的一个实例。如本文中所使用,“耦合到”或“与……耦合”大体上指代组件之间的连接,其可为间接通信连接或直接通信连接(例如无中间组件),无论有线还是无线的,包含例如电连接、光学连接、磁性连接等连接。
主机系统1120可包含处理器芯片组及由处理器芯片组执行的软件堆叠。处理器芯片组可包含一或多个核心、一或多个高速缓存器、存储器控制器(例如,NVDIMM控制器),及存储协议控制器(例如,PCIe控制器、SATA控制器)。主机系统1120使用存储器子系统1110,以例如将数据写入到存储器子系统1110及从存储器子系统1110读取数据。
主机系统1120可经由物理主机接口耦合到存储器子系统1110。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、CXL接口、CCIX接口、通用串行总线(USB)接口、光纤通道、串行连接的SCSI(SAS)、双数据速率(DDR)存储器总线、小型计算机系统接口(SCSI)、双列直插式存储器模块(DIMM)接口(例如,支持双数据速率(DDR)的DIMM套接接口)、开放NAND快闪接口(ONFI)、双数据速率(DDR)、低功率双数据速率(LPDDR)等。物理主机接口可用以在主机系统1120与存储器子系统1110之间发射数据。在存储器子系统1110通过PCIe接口105与主机系统1120耦合时,主机系统1120可进一步利用NVM高速(NVMe)接口来存取组件(例如,存储器装置1130)。物理主机接口105可提供用于在存储器子系统1110与主机系统1120之间传递控制、地址、数据及其它信号的接口。图11说明作为一实例的存储器子系统1110。一般来说,主机系统1120可经由同一通信连接、多个单独通信连接及/或通信连接的组合存取多个存储器子系统。
在一些实施例中,主机系统1120的CPU的专用处理核心可由软件驱动程序控制以实施图1的PIM控制块120的功能,如本文中在上文更详细地描述。
存储器装置1130、1140可包含不同类型的非易失性存储器装置及/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置1140)可以是但不限于随机存取存储器(RAM),例如动态随机存取存储器(DRAM)及同步动态随机存取存储器(SDRAM)。
非易失性存储器装置(例如,存储器装置1130)的一些实例包含与非(NAND)型快闪存储器及就地写入存储器,例如三维交叉点(“3D交叉点”)存储器装置,其为非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列而基于体电阻的变化来执行位存储。另外,与许多基于快闪的存储器对比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。NAND型快闪存储器包含例如二维NAND(2D NAND)及三维NAND(3DNAND)。
存储器装置1130中的每一个可包含一或多个存储器单元阵列。一种类型的存储器单元,例如单层级单元(SLC)可每单元存储一个位。其它类型的存储器单元,例如多层级单元(MLC)、三层级单元(TLC)及四层级单元(QLC)可每单元存储多个位。在一些实施例中,存储器装置1130中的每一个可包含一或多个存储器单元阵列,例如SLC、MLC、TLC、QLC或此类存储器单元阵列的任何组合。在一些实施例中,特定存储器装置可包含存储器单元的SLC部分,及MLC部分、TLC部分或QLC部分。存储器装置1130的存储器单元可分组为页,所述页可指用于存储数据的存储器装置的逻辑单元。对于一些类型的存储器(例如,NAND),页可进行分组以形成块。
尽管描述了非易失性存储器装置,例如3D交叉点非易失性存储器单元阵列及NAND型存储器(例如,2D NAND、3D NAND),但存储器装置1130可是基于任何其它类型的非易失性存储器,例如只读存储器(ROM)、相变存储器(PCM)、自选存储器、其它基于硫属化物的存储器、铁电晶体管随机存取存储器(FeTRAM)、铁电随机存取存储器(FeRAM)、磁随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、导电桥接RAM(CBRAM)、电阻式随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、或非(NOR)快闪存储器,及电可擦除可编程只读存储器(EEPROM)。
存储器子系统控制器1115可与存储器装置1130通信以执行例如在存储器装置1130处读取数据、写入数据或擦除数据的操作及其它此类操作。存储器子系统控制器1115可包含硬件,例如一或多个集成电路及/或离散组件、缓冲存储器或其组合。硬件可包含具有专用(即,硬译码)逻辑的数字电路以执行本文中所描述的操作。存储器子系统控制器1115可以是微控制器、专用逻辑电路(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或其它合适的处理器。
存储器子系统控制器1115可包含被配置成执行存储在本地存储器1119中的指令的处理器1116(例如,处理装置)。在所说明实例中,存储器子系统控制器1115的本地存储器1119包含配置成存储指令的嵌入式存储器,所述指令用于执行控制存储器子系统1110的操作(包含处理存储器子系统1110与主机系统1120之间的通信)的各种过程、操作、逻辑流程及例程。在一些实施例中,处理器1116可由软件驱动程序控制以实施图1的PIM控制块120的功能,如本文中在上文更详细地描述。
在一些实施例中,本地存储器1119可包含存储存储器指针、所提取数据等的存储器寄存器。本地存储器1119还可包含用于存储微码的只读存储器(ROM)。虽然图11中的实例存储器子系统1110已说明为包含控制器1115,但在本公开的另一实施例中,存储器子系统1110不包含控制器1115,且可替代地依赖于外部控制(例如,由外部主机或由与存储器子系统分离的处理器或控制器提供)。
一般来说,存储器子系统控制器1115可从主机系统1120接收命令或操作,且可将命令或操作转换成指令或适当命令以实现对存储器装置1130的所要存取。存储器子系统控制器1115可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测及错误校正码(ECC)操作、加密操作、高速缓存操作,及与存储器装置1130相关联的逻辑地址(例如,逻辑块地址(LBA)、名字空间)与物理地址(例如,物理块地址)之间的地址转换。存储器子系统控制器1115可进一步包含主机接口电路以经由物理主机接口与主机系统1120通信。主机接口电路可将从主机系统接收的命令转换成命令指令以存取存储器装置1130,以及将与存储器装置1130相关联的响应转换成用于主机系统1120的信息。
存储器子系统1110还可包含未说明的额外电路或组件。在一些实施例中,存储器子系统1110可包含高速缓存器或缓冲器(例如,DRAM)及地址电路(例如,行解码器及列解码器),所述地址电路可从控制器1115接收地址且对地址进行解码以存取存储器装置1130。
在一些实施例中,存储器装置1130包含结合存储器子系统控制器1115操作以在存储器装置1130的一或多个存储器单元上执行操作的本地媒体控制器1135。外部控制器(例如,存储器子系统控制器1115)可在外部管理存储器装置1130(例如,对存储器装置1130执行媒体管理操作)。在一些实施例中,存储器子系统1110为受管理存储器装置,其为具有裸片上的控制逻辑(例如,本地媒体控制器1135)及用于相同存储器装置封装内的媒体管理的控制器(例如,存储器子系统控制器1115)的原始存储器装置1130。受管理存储器装置的实例是受管理NAND(MNAND)装置。
图12说明计算机系统1200的实例机器,在所述机器内可执行指令集以用于使得机器执行本文中所论述的方法中的任一或多个。在一些实施例中,计算机系统1200可对应于主机系统(例如,图11的主机系统120),其包含、耦合到或利用存储器子系统(例如,图11的存储器子系统110)或可用于执行控制器的操作。
在替代实施例中,机器可连接(例如,耦合到网络1220的网络接口装置1230)到LAN、内联网、外联网及/或因特网中的其它计算机系统。机器可作为对等(或分布式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而以客户端-服务器网络环境中的服务器或客户端机器的容量进行操作。
所述机器可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络器具、服务器、网络路由器、交换机或桥接器,或能够执行(依序或以其它方式)指定待由所述机器采取的动作的指令集的任何机器。此外,虽然说明单个机器,但还应认为术语“机器”包含机器的任何集合,所述集合个别地或共同地执行一(或多)个指令集以执行本文中所论述的方法中的任一或多种。
实例计算机系统1200包含处理装置1202、主存储器1204(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM),例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态存储器1205(例如,快闪存储器、静态随机存取存储器(SRAM)等)以及数据存储系统1215,它们经由总线1230彼此通信。
处理装置1202表示一或多个通用处理装置,例如微处理器、CPU等。更具体地说,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置1202也可以是一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置1202被配置成执行指令1210以用于执行本文中所论述的操作及步骤。在一些实施例中,CPU 1202的专用处理核心可由软件驱动程序控制以实施图1的PIM控制块120的功能。在说明性实例中,软件驱动程序可实施实例方法800,如本文中在上文更详细地描述。
数据存储系统1215可包含机器可读存储媒体1224(也称为计算机可读媒体),所述机器可读存储媒体上存储有一或多个指令集1210或体现本文中所描述的方法或功能中的任一或多种的软件。指令1210还可在由计算机系统1200执行期间完全或至少部分地驻存在主存储器1204内及/或处理装置1202内,主存储器1204及处理装置1202也构成机器可读存储媒体。机器可读存储媒体1224、数据存储系统1215及/或主存储器1204可对应于图11的存储器子系统110。
在一个实施例中,指令1210包含用以实施由根据本公开的一些实施例操作的PIM系统实施用于上下文无关语法的解析器的实例方法800的指令。虽然在实例实施例中机器可读存储媒体1224示出为单个媒体,但应认为术语“机器可读存储媒体”包含存储一或多个指令集的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行的指令集且致使机器执行本公开的方法中的任一种或多种的任何媒体。因此,术语“机器可读存储媒体”应被认为包含但不限于固态存储器、光学媒体及磁性媒体。
已在针对计算机存储器内的数据位的运算的算法及符号表示方面呈现了先前详细描述的一些部分。这些算法描述及表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给所属领域的其它技术人员的方式。在本文中,且一般将算法构想为产生所要结果的运算的自洽序列。运算是要求对物理量进行物理操纵的运算。通常(但未必),这些量采用能够存储、组合、比较以及以其它方式操纵的电或磁信号的形式。已经证实,主要出于常用的原因,将这些信号称为位、值、元素、符号、字符、项、编号等有时是便利的。
然而,应牢记,所有这些及类似术语将与适当物理量相关联,且仅仅为应用于这些量的便利标记。本公开可指将计算机系统的寄存器及存储器内的表示为物理(电子)量的数据操纵及变换为计算机系统存储器或寄存器或其它此类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作及过程。
本公开还涉及用于执行本文中的操作的设备。此设备可以出于所需目的而专门构造,或其可包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的盘,包含软盘、光盘、CD-ROM以及磁性光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或适于存储电子指令的任何类型的媒体,其各自连接到计算机系统总线。
本文中呈现的算法及显示器在本质上并不与任何特定计算机或其它设备相关。各种通用系统可以与根据本文中的教示的程序一起使用,或可以证明构造用以执行所述方法更加专用的设备是方便的。将如下文描述中所阐述的那样来呈现各种这些系统的结构。另外,未参考任何特定编程语言来描述本公开。应了解,可使用各种编程语言来实施如本文中所描述的本公开的教示。
本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机系统(或其它电子装置)以执行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读形式存储信息的任何机构。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器装置等。
在前述说明书中,已参考其具体实例实施例描述了本公开的实施例。将显而易见,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广泛精神及范围的情况下对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书及图式。
Claims (20)
1.一种系统,其包括:
存储器阵列,其用以存储多个查找表LUT及包括输入字符串的数据;
逻辑阵列,其耦合到所述存储器阵列,所述逻辑阵列用以对所述数据及所述LUT执行逻辑运算集合,所述逻辑运算集合实施上下文无关语法的产生式规则集合以将所述输入字符串转换成一或多个符号;及
控制块,其耦合到所述存储器阵列及所述逻辑阵列,所述控制块用以通过激活所述多个LUT中的一或多个LUT来控制计算管线,所述计算管线实施针对所述上下文无关语法评估所述输入字符串的解析器。
2.根据权利要求1所述的系统,其中所述解析器迭代地识别所述上下文无关语法的一或多个语法状态的序列,语法状态的每一序列导出所述输入字符串的子字符串。
3.根据权利要求1所述的系统,其进一步包括耦合到所述存储器阵列及所述逻辑阵列的高速缓存器,其中所述高速缓存器用以存储所述多个LUT中的一或多个LUT。
4.根据权利要求1所述的系统,其中所述多个LUT中的一或多个LUT通过与包括一或多个逻辑运算输入的查找地址相关联地存储一或多个逻辑运算结果来实施一或多个逻辑运算。
5.根据权利要求4所述的系统,其中所述查找地址识别所述存储器阵列的字线。
6.根据权利要求1所述的系统,其中所述控制块控制所述逻辑阵列及所述多个LUT以实施以下中的一个:单指令多数据SIMD计算管线、极大指令字VLIW计算管线、标量计算管线或脉动阵列的计算管线。
7.根据权利要求1所述的系统,其中所述控制块依序执行存储于所述存储器阵列中的可执行指令集。
8.根据权利要求1所述的系统,其实施为芯片上系统,所述系统进一步包括:
至少一个处理核心;及
至少一个输入/输出I/O接口。
9.一种系统,其包括:
存储器阵列,其用以通过电耦合到多条字线及多条位线的多个存储器单元存储包括输入字符串的数据;
逻辑阵列,其耦合到所述存储器阵列,所述逻辑阵列实施控制所述多个存储器单元的可配置逻辑;及
控制块,其耦合到所述存储器阵列及所述逻辑阵列,所述控制块用以控制对所述数据执行逻辑运算集合的计算管线,所述逻辑运算集合通过上下文无关语法的产生式规则集合将输入字符串转换成一或多个符号。
10.根据权利要求9所述的系统,其中所述计算管线实施针对所述上下文无关语法评估所述输入字符串的解析器。
11.根据权利要求9所述的系统,其中所述解析器迭代地识别所述上下文无关语法的一或多个语法状态的序列,语法状态的每一序列导出所述输入字符串的子字符串。
12.根据权利要求9所述的系统,其中所述控制块进一步用以:
对所述多条位线中的选定位线进行预充电,其中所述多条字线中的至少一条字线在所述预充电操作期间断开;及
使用所述可配置逻辑来评估由选定字线寻址的存储器单元行。
13.根据权利要求9所述的系统,其中所述控制块进一步用以:
将所述选定位线的状态存储在所述多条字线中的可用字线中。
14.根据权利要求9所述的系统,其中所述可配置逻辑包括以下中的至少一个:上拉网络PUN或下拉网络PDN。
15.根据权利要求9所述的系统,其实施为芯片上系统,所述系统进一步包括:
至少一个处理核心;及
至少一个输入/输出I/O接口。
16.一种方法,其包括:
将输入字符串分成多个子字符串组合;
通过对上下文无关语法的产生式规则集合进行编码的存储器内处理PIM管线处理每一子字符串组合的编码,其中所述PIM管线包括包含电耦合到多条字线及多条位线的多个存储器单元的存储器阵列;耦合到所述存储器阵列的控制块,以及耦合到所述控制块及所述存储器阵列的逻辑阵列;
通过解码所述PIM管线产生的输出识别导出所述输入字符串的所述上下文无关语法的一或多个状态。
17.根据权利要求16所述的方法,其中处理每一子字符串组合的所述编码进一步包括:
在所述存储器阵列中存储多个查找表LUT;
由所述控制块激活所述多个LUT中的一或多个LUT;及
由所述逻辑阵列基于从所述控制块接收的控制输入对所激活LUT执行逻辑运算集合,所述逻辑运算集合实施所述上下文无关语法的所述产生式规则集合。
18.根据权利要求16所述的方法,其中处理每一子字符串组合的所述编码进一步包括:
在所述存储器阵列中存储数据;
由所述控制块激活所述多条位线中的选定位线;
对所述选定位线进行预充电,其中所述多条字线中的至少一条字线在所述预充电操作期间断开;及
由实施逻辑运算集合的可配置逻辑评估由选定字线寻址的存储器单元行,其中所述逻辑运算集合实施所述上下文无关语法的所述产生式规则集合。
19.根据权利要求16所述的方法,其中所述多个LUT中的一或多个LUT通过与包括一或多个逻辑运算输入的查找地址相关联地存储一或多个逻辑运算结果来实施一或多个逻辑运算。
20.根据权利要求15所述的方法,其中响应于执行存储于所述存储器阵列中的可执行指令集中的指令而执行激活所述LUT。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/212,551 | 2021-03-25 | ||
US17/212,551 US11354134B1 (en) | 2021-03-25 | 2021-03-25 | Processing-in-memory implementations of parsing strings against context-free grammars |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115129658A true CN115129658A (zh) | 2022-09-30 |
Family
ID=81852526
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210297778.8A Withdrawn CN115129658A (zh) | 2021-03-25 | 2022-03-24 | 针对上下文无关语法解析字符串的存储器内处理实施方案 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11354134B1 (zh) |
CN (1) | CN115129658A (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11403111B2 (en) | 2020-07-17 | 2022-08-02 | Micron Technology, Inc. | Reconfigurable processing-in-memory logic using look-up tables |
US11355170B1 (en) | 2020-12-16 | 2022-06-07 | Micron Technology, Inc. | Reconfigurable processing-in-memory logic |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101291202A (zh) * | 2008-05-30 | 2008-10-22 | 华为技术有限公司 | 数据传输路径的管理方法和主机服务器 |
CN103823831A (zh) * | 2012-11-19 | 2014-05-28 | 国际商业机器公司 | 对于访问数据进行基于上下文的安全筛选的系统和方法 |
CN105653474A (zh) * | 2015-12-29 | 2016-06-08 | 东南大学—无锡集成电路技术研究所 | 一种面向粗粒度动态可重构处理器的配置缓存控制器 |
CN107408404A (zh) * | 2015-02-06 | 2017-11-28 | 美光科技公司 | 用于存储器装置的设备及方法以作为程序指令的存储 |
US20190065111A1 (en) * | 2017-08-31 | 2019-02-28 | Micron Technology, Inc. | Apparatuses and methods for in-memory operations |
CN111724832A (zh) * | 2019-03-20 | 2020-09-29 | 美光科技公司 | 用于存储器阵列数据结构正数运算的设备、系统及方法 |
US20210050040A1 (en) * | 2019-08-14 | 2021-02-18 | Micron Technology, Inc. | Bit string operations in memory |
WO2021041654A1 (en) * | 2019-08-27 | 2021-03-04 | Micron Technology, Inc. | Handling bad blocks generated during a block erase operation |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8489861B2 (en) | 1997-12-23 | 2013-07-16 | Round Rock Research, Llc | Split embedded DRAM processor |
GB2399900B (en) | 2003-03-27 | 2005-10-05 | Micron Technology Inc | Data reording processor and method for use in an active memory device |
US7827384B2 (en) | 2007-07-16 | 2010-11-02 | Cisco Technology, Inc. | Galois-based incremental hash module |
JP5194302B2 (ja) | 2008-02-20 | 2013-05-08 | ルネサスエレクトロニクス株式会社 | 半導体信号処理装置 |
JP5096406B2 (ja) | 2008-08-21 | 2012-12-12 | ルネサスエレクトロニクス株式会社 | 半導体記憶装置 |
JP5341590B2 (ja) | 2009-03-25 | 2013-11-13 | ルネサスエレクトロニクス株式会社 | 半導体記憶装置 |
US10032509B2 (en) | 2015-03-30 | 2018-07-24 | Toshiba Memory Corporation | Semiconductor memory device including variable resistance element |
US10140122B2 (en) | 2015-09-23 | 2018-11-27 | Hanan Potash | Computer processor with operand/variable-mapped namespace |
FR3055715B1 (fr) * | 2016-09-08 | 2018-10-05 | Upmem | Methodes et dispositifs pour contourner le cache interne d'un controleur memoire dram evolue |
US10199094B2 (en) | 2017-06-09 | 2019-02-05 | Arm Limited | Write operation scheme for SRAM |
US10854280B2 (en) | 2017-08-30 | 2020-12-01 | Arm Limited | Read assist circuitry for memory applications |
US10621489B2 (en) | 2018-03-30 | 2020-04-14 | International Business Machines Corporation | Massively parallel neural inference computing elements |
US10811088B2 (en) | 2019-03-12 | 2020-10-20 | Qualcomm Incorporated | Access assist with wordline adjustment with tracking cell |
KR20210053017A (ko) * | 2019-11-01 | 2021-05-11 | 삼성전자주식회사 | 프로세싱 소자를 포함하는 메모리 장치 및 상기 메모리 장치를 포함하는 메모리 시스템 |
US11449577B2 (en) * | 2019-11-20 | 2022-09-20 | Micron Technology, Inc. | Methods and apparatus for performing video processing matrix operations within a memory array |
-
2021
- 2021-03-25 US US17/212,551 patent/US11354134B1/en active Active
-
2022
- 2022-03-24 CN CN202210297778.8A patent/CN115129658A/zh not_active Withdrawn
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101291202A (zh) * | 2008-05-30 | 2008-10-22 | 华为技术有限公司 | 数据传输路径的管理方法和主机服务器 |
CN103823831A (zh) * | 2012-11-19 | 2014-05-28 | 国际商业机器公司 | 对于访问数据进行基于上下文的安全筛选的系统和方法 |
CN107408404A (zh) * | 2015-02-06 | 2017-11-28 | 美光科技公司 | 用于存储器装置的设备及方法以作为程序指令的存储 |
CN105653474A (zh) * | 2015-12-29 | 2016-06-08 | 东南大学—无锡集成电路技术研究所 | 一种面向粗粒度动态可重构处理器的配置缓存控制器 |
US20190065111A1 (en) * | 2017-08-31 | 2019-02-28 | Micron Technology, Inc. | Apparatuses and methods for in-memory operations |
CN111724832A (zh) * | 2019-03-20 | 2020-09-29 | 美光科技公司 | 用于存储器阵列数据结构正数运算的设备、系统及方法 |
US20210050040A1 (en) * | 2019-08-14 | 2021-02-18 | Micron Technology, Inc. | Bit string operations in memory |
WO2021041654A1 (en) * | 2019-08-27 | 2021-03-04 | Micron Technology, Inc. | Handling bad blocks generated during a block erase operation |
Also Published As
Publication number | Publication date |
---|---|
US11354134B1 (en) | 2022-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11775296B2 (en) | Mask patterns generated in memory from seed vectors | |
US9747960B2 (en) | Apparatuses and methods for converting a mask to an index | |
US20170316829A1 (en) | In-memory computational device with bit line processors | |
US11887693B2 (en) | Reconfigurable processing-in-memory logic | |
KR20220054357A (ko) | 직렬 할당 데이터에 대해 pim(processing-in-memory) 연산을 수행하기 위한 방법, 및 관련 메모리 디바이스 및 시스템 | |
Kaplan et al. | PRINS: Processing-in-storage acceleration of machine learning | |
US11947967B2 (en) | Reconfigurable processing-in-memory logic using look-up tables | |
Mittal et al. | A survey of SRAM-based in-memory computing techniques and applications | |
CN115129658A (zh) | 针对上下文无关语法解析字符串的存储器内处理实施方案 | |
US10699213B2 (en) | Space efficient random decision forest models implementation utilizing automata processors | |
US20190087360A1 (en) | System and method for individual addressing | |
US11720268B2 (en) | Managing a mode to access a memory component or a logic component for machine learning computation in a memory sub-system | |
US11664072B2 (en) | Architecture for ternary content-addressable memory search | |
US11756621B2 (en) | Architecture for fast content addressable memory search | |
US11347415B2 (en) | Selection component that is configured based on an architecture associated with memory devices | |
CN113270126A (zh) | 流访问存储器设备、系统和方法 | |
CN112732599A (zh) | 具有虚拟化总线和内部逻辑以执行机器学习操作的存储器子系统 | |
US10795854B2 (en) | Method and apparatus for constructing multivalued microprocessor | |
Xie | Pin: A general-purpose computer architecture based on memristive devices | |
CN115295044A (zh) | 编程内容可寻址存储器 | |
CN112732600A (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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20220930 |
|
WW01 | Invention patent application withdrawn after publication |