首页> 中国专利> 用于实现实施复合赋值的共享无锁存储器的系统

用于实现实施复合赋值的共享无锁存储器的系统

摘要

所公开的技术的目的是提供用于对存储单元共享并发访问的新颖方法和系统。根据所公开的技术,因此提供了一种对存储单元共享并发访问的系统,该系统包括至少一个共享存储单元、估计器和耦接到估计器的输入端的多个处理代理。估计器还与至少一个存储单元耦接。估计器被配置为估计用于对至少一个共享存储单元执行多个并发复合赋值的表达式。估计器还允许多个处理代理中的每个处理代理对至少一个共享存储单元执行并发复合赋值。复合赋值不包括多个处理代理对至少一个共享存储单元的读取操作。

著录项

说明书

技术领域

本发明总体上涉及灵活计算,并且特别地,涉及用于实现并发灵活计算的系统和方法。

背景技术

实现灵活计算的基本原则需要定义明确的结果。通过定义明确的灵活执行,最终值不受执行任何一条程序指令的顺序的影响,允许指令以串行、并行或其各种组合方式执行。灵活执行可以通过调整控制变量范围的规则来实现,如影响地址定义、变量初始化和读写。使用该专用指令集更新的变量确保为任何允许的执行序列产生一致的、定义明确的结果。可以遵守这些限制的指令示例有:仅一次赋值、逻辑“或OR”运算和加法“+”。这些指令是可交换的和可组合的;并且可以以任何方式组合,以产生一致的、定义明确的输出。

给定运算符f,复合赋值的形式为x f=y,或x=(x f y)。当复合赋值以任意顺序依次执行时,无序顺序复合赋值执行(USCAE)条件是对形式为x f=y的复合赋值实现定义明确的执行所必需的。USCAE运算符条件要求((a f b)f c)=((a f c)f b),例如,精确的加法运算符满足该条件,并且这种复合赋值被写成:x+=y,即x=x+y的缩写。虽然f的第一参数和值必须为同一类型,但不对f的第二参数设置任何限制。这些运算符在本文中称为USCAE运算符。满足该条件的函数的示例是逻辑“与AND”和“或OR”运算符、精确算术运算+、-、*、/、**、关于固定模数的加法和减法等。如将在本公开中看到的,通过利用电容器和半导体的电性质,某些复合赋值,例如OR=和AND=也可以并行执行。

USCAE条件可以扩展为多个不同的运算符。例如,给定运算符f

出版物

第四届基于计算机系统的工程设计的东欧地区会议(ECBS-EERC,2015),出版物“Flexible Algorithms:Enabling Well-defined Order-Independent Execution withan Imperative Programming Style”。IEEE出版社,75-82(DOI:10.1 109/ECBS-EERC.2015.20),R.B.Yehezkael,M.Goldstein,D.Dayan,S.Mizrahi,最新版本可在

第四届基于计算机系统的工程设计的东欧地区会议(ECBS-EERC,2015),出版物“EFL:Implementing and Testing an Embedded Language Which Provides Safe andEfficient Parallel Execution”,IEEE出版社,83-90(DOI:10.1109/ECBS-EERC.2015.21),D.Dayan,M.Goldstein,M.Popovic,M.Rabin,D.Berlovitz,O.Berlovitz,E.Bosni-Levy,M.Neeman,M.Nagar,D.Soudry,R.B.Yehezkael。2015,最新版本可在

第五届基于计算机系统的工程设计的欧洲会议(ECBS 2017),出版物“DesignPrinciples of an Embedded Language(EFL)Enabling Well Defined Order-Independent Execution”,ACM(DOI:10.1145/3123779.3123789),M.Goldstein,D.Dayan,M.Rabin,D.Berlovitz,R.B.Yehezkael,最新版本可在

发明内容

所公开的技术的目的在于提供一种用于对存储单元共享并发访问的新颖方法和系统。根据所公开的技术,因此提供了一种对存储单元共享并发访问的系统,该系统包括至少一个共享存储单元、估计器和耦接到估计器的输入端的多个处理代理。估计器还与至少一个存储单元耦接。估计器被配置为估计用于对至少一个共享存储单元执行多个并发复合赋值的表达式。估计器还允许多个处理代理中的每个处理代理对至少一个共享存储单元执行并发复合赋值。复合赋值不包括多个处理代理对至少一个共享存储单元的读取操作。

根据所公开技术的另一方面,因此提供了一种对存储单元共享并发访问的系统,该系统包括至少一个共享存储单元、逻辑电路和耦接到逻辑电路的输入端的多个处理代理。逻辑电路还与至少一个存储单元耦接。逻辑电路被配置为对至少一个共享存储单元执行OR=和AND=的多个并发复合赋值中之一。逻辑电路允许多个处理代理中的每个处理代理对至少一个共享存储单元执行并发复合赋值。复合赋值不包括多个处理代理对至少一个共享存储单元的读取操作。

根据所公开的技术的另一方面,因此提供了一种一位存储单元,该一位存储单元接收与待使用相应的写使能信号写入的数据的逻辑AND相对应的写信号。

根据所公开的技术的另一方面,因此提供了一种一位存储单元,该一位存储单元包括与每个处理代理相关联的线路。该线路用于使能从存储单元读取并用于向存储单元写入。

根据所公开的技术的另一方面,因此提供了一种处理器,用于执行与OR=的多个并发复合赋值有关的机器可执行指令,其中,对于第一位x和第二位y,复合赋值由选自由以下组成的组的语句实现:

如果y==1,则x=1;

如果y==1,则x=1,否则x=x;

如果y==1,则x=y;以及

如果y==1,则x=y,否则x=x。

根据所公开的技术的另一方面,因此提供了一种处理器,用于执行与AND=的多个并发复合赋值有关的机器可执行指令,其中,对于第一位x和第二位y,复合赋值由选自由以下组成的组的语句实现:

如果y==0,则x=0;

如果y==0,则x=0,否则x=x;

如果y==0,则x=y;以及

如果y==0,则x=y,否则x=x。

附图说明

通过以下结合附图的详细描述,将更充分地理解和明白所公开的技术,在附图中:

图1A是根据所公开的技术的实施方式构造和操作的用于在共享的一位DRAM存储单元上实现并发OR=指令的系统的示意图;

图1B是根据所公开的技术的另一实施方式构造和操作的用于在共享的一位DRAM存储单元上实现并发OR=指令的系统的示意图;

图1C是根据所公开的技术的另一实施方式构造和操作的用于在共享的一位SRAM存储单元上实现并发OR=指令的系统的示意图;

图1D是根据所公开的技术的另一实施方式构造和操作的用于在共享的一位SRAM存储单元上实现复合赋值的系统的示意图;

图2是根据所公开的技术的另一实施方式构造和操作的由运行多个线程的单个处理核访问的OR-存储器DRAM的示意图;以及

图3A至图3G一起是用于在由多个核处理器并发访问的DRAM存储单元上实现并发OR=指令的系统的示意图,该系统根据所公开的技术的另一实施方式构造和操作。

具体实施方式

所公开的技术通过提供用于由多个并行处理器实现定义明确的计算的新颖技术来克服现有技术的缺点。提出了一种共享存储器体系结构,以使多个处理器能够并发地访问存储单元。在共享存储单元上执行多个并发复合赋值,而不需要锁定存储单元以阻止多个处理器中的任何一个处理器访问该存储单元。这对于各种场景都很有用,比如设置一个或多个标志。通常,知道至少一个处理器设置了标志就足够了,而不需要知道哪个处理器设置了标志。

用于实现本文所公开的并行存储器访问技术的指令集涉及执行逻辑OR=运算,并且遵守上述灵活执行准则。存储定义明确的计算结果需要保留先前的值。本文中公开的存储器硬件架构被配置为在共享存储单元上实现OR=指令,使得新结果不替换先前存储的数据。相反,写入存储器的数据与存储在存储器中的当前值在逻辑上是“OR”的。由于OR=指令定义明确,因此结果与执行顺序无关。此外,存储单元不必在写入OR的结果之前被读取。因此,多个处理器可以并发地读取和/或写入共享存储器,避免了通常在并行计算中发现的冲突。

所公开的体系结构可以在具有并行操作的多个处理核的系统上实现,或者在运行多个并行处理线程的单个处理核上实现。为清楚起见,本文公开的技术将指多核(例如硬件)处理器;然而,应当理解,该技术与虚拟处理器、处理线程等等同相关。所公开的技术可以是软件实现的、硬件实现的或可编程硬件实现的。存储单元和任何控制逻辑可以使用合适的硬件组件来实现。例如,存储单元可以使用一个或多个电容器或触发器来实现,并且控制逻辑可以包括一个或多个二极管、OR门、AND门等。

在一种实施方式中,通过将多个处理器的指令集限制为OR=运算来实现共享存储器,然而这并不旨在限制,并且该技术可以被修改以适应相加运算,例如逻辑AND。对于一位变量,x OR=y运算可以用下列任何语句实现,其中符号‘==’表示相等,符号‘=’表示赋值:

a)如果y==1则x=1

b)如果y==1则x=1,否则x=x

c)如果y==1,则x=y

d)如果y==1则x=y,否则x=x。

从上面的规则可以看出,OR=指令遵守了定义明确的计算的要求。在用当前值通过OR=生成新值之前,处理器不需要读取存储单元的当前值。由于计算的结果与执行顺序无关,因此多个处理器可以并发地对共享存储单元执行单独的OR=运算,而不需要锁定共享存储器,从而允许并发更新。x AND=y语句也可以通过用0来替换1,以类似于上述语句a)、b)、c)和d)的语句来实现,如下所示:

a)如果y==0,则x=0

b)如果y==0,则x=0,否则x=x

c)如果y==0,则x=y

d)如果y==0则x=y,否则x=x

还应注意,所公开的技术可以通过机器可执行指令(例如,使用上述规则的软件或使用仿真器)来实现。

在下面的描述中,零电压被解译为假,也被称为“0”或“低”。非零电压被解译为真,并被称为“1”或“高”。所公开的技术首先采用OR=运算来呈现。所公开的技术还通过将零电压值解译为真而将非零电压解译为假来应用于AND=运算,而不改变所使用的电路。通过改变电路,它也适用于任何USCAE运算符。还应注意,OR=和AND=赋值不包括存储单元中的内部反馈。此外,实现OR=的存储单元可以包括与每个处理代理相关联的线路,该线路使得能够从存储单元读取和向存储单元写入。

现在参考图1A,其是用于在共享的一位DRAM存储单元上实现并发OR=复合赋值的系统的示意图,该系统通常以参考符号100表示并且是根据所公开的技术的实施方式构造和操作。系统100使得能够在DRAM存储单元上执行一个或多个OR=复合赋值以及将DRAM存储器初始化为零或一。系统100包括用于实现并发OR=复合赋值的DRAM存储单元(由虚线116表示)、初始化OR门102、OR门104、OR门106、多路复用器108、AND门110和112以及电容器114。初始化OR门102具有两个输入端102A和102B以及输出端102C。OR门104具有两个输入端104A和104B以及输出端104C。OR门106具有两个输入端106A和106B以及一个输出端106C。多路复用器108具有标记为“0”的输入端108A和标记为“1”的输入端108B。初始化输入端108C和输出端108D。AND门110具有两个输入端110A、110B和输出端110C。AND门112具有两个输入端112A、112B和输出端112C。

初始化OR门102经由输入端102A从第一处理器(未示出)接收“Init0”,并经由输入端102B从第二处理器(未示出)接收“Init1”。初始化OR门102允许第一处理器和/或第二处理器将值(即,来自第一处理器的Init0和来自第二处理器的Init1)直接发送到存储单元,而不执行OR=运算,例如出于初始化目的。初始化OR门102的输出端102C电耦接到多路复用器108的输入端108D,多路复用器108接收初始化信号,并且当该初始化信号为“1”时,它相应地将OR门106的输出写入存储单元。OR门106在输入端106A处从第一处理器接收数据的逻辑AND(标记为DataW_Wen0),使用写使能信号将数据的逻辑AND写入存储单元116。OR门106在输入端106B处从第二处理器接收标记为DataW_Wen1的数据的逻辑AND,使用写使能信号将该数据的逻辑AND写入存储单元116。OR门106对DataW_Wen0信号和DataW_Wen1信号执行逻辑OR。OR门106的输出端106C电耦接到OR门104的输入端104B,并且另外电耦接到多路复用器108的标记为“1”的输入端108B。OR门104的输入端104A在反馈回路中电耦接到多路复用器108的输出端108D,即电容器114的电流值。OR门104对来自OR门106的输出(即,来自第一处理器和第二处理器的输入信号的逻辑OR)和存储单元的内容执行逻辑OR,从而实现OR=运算。OR门104的输出端104C电耦接到多路复用器108的标记为“0”的输入端108A。多路复用器108的输出端108D电耦接到电容器114和OR门104的输入端104A。以这种方式,将从第一处理器和第二处理器接收的值与存储单元的内容进行OR,以实现OR=写操作。

为了实现OR=读取操作,电容器114电耦接到AND门110的输入端110B和AND门112的输入端112B。AND门110在输入端110A接收来自第二处理器的读使能信号Ren1。AND门112在输入端112A接收来自第一处理器的读使能信号Ren0。AND门112对存储单元的内容和Ren0的值执行逻辑AND运算,允许第一处理器在Ren0导通时(即当Ren0=1)读取存储单元的内容。第一处理器电耦接到输出端112C,并接收DataR0,从而读取存储单元的内容。AND门112对存储单元的内容和Ren0的值执行逻辑AND运算,允许第一处理器在Ren0导通时(即当Ren0=1)读取存储单元的内容。第二处理器电耦接到输出端110C,并接收DataR1,从而读取存储单元的内容。OR=运算通过集成在共享存储单元116内并且在处理器外部的逻辑来实现。该逻辑使用反馈回路来实现,该反馈回路将电容器114的电流值耦接到OR门104以馈送给多路复用器108。读使能线路接收来自共享存储单元116外部的输入。

现在参考图1B,其是根据所公开的技术的另一实施例构造并操作的通常标记为120的系统的示意图,该系统用于在共享的一位存储单元上实现并发OR=复合赋值。系统120使得能够在DRAM存储器上执行一个或多个OR=复合赋值,并且使得能够将DRAM存储器初始化为0。系统120包括用于实现并发OR=复合赋值的存储单元(由虚线134表示)、多路复用器122、OR门124、初始化OR门126、AND门128和130以及电容器132。多路复用器122具有初始化输入端122A、对应于0的输入端122B、对应于1的输入端122C和输出端122D。OR门124具有输入端124A、124B、124C和输出端124D。初始化OR门126具有输入端126A、126B和输出端126C。AND门128具有输入端128A、128B和输出端128C。AND门130具有输入端130A、130B和输出端130C。

初始化OR门126经由输入端124A从第一处理器(未示出)接收Zero0信号,并在输入端124B从第二处理器(未示出)接收Zero1信号。初始化OR门126允许第一处理器和第二处理器在不执行OR=运算的情况下将存储单元归零,例如出于初始化目的。初始化OR门126的输出端126C电耦接到多路复用器122的输入端122A,该输入端接收初始化信号并相应地将0写入存储单元。OR门124在输入端124B处从第一处理器接收数据的逻辑AND(标记为DataW_Wen0),该数据的逻辑AND利用写使能信号从第一处理器写入存储单元134。OR门124在输入端124C处从第二处理器接收数据的逻辑AND(标记为DataW_Wen1),该数据从第二处理器通过写使能信号而被写入存储单元134。OR门124对DataW_Wen0信号和DataW_Wen1信号执行逻辑OR。OR门124的输入端124A在反馈回路中电耦接到多路复用器122的输出端122D,即电容器132的值,从而在输入信号和存储单元的内容之间执行OR=运算。OR门124的输出端124D电耦接到多路复用器122的对应于0的输入端122B。多路复用器的对应于1的输入端122C接地。多路复用器的输出端122D电耦接到电容器132和OR门124的输入端124A。以这种方式,将从第一处理器和第二处理器接收的值与存储单元的内容进行OR运算,以实现OR=写操作。

为了实现OR=读取操作,电容器132电耦接到AND门128的输入端128B和AND门130的输入端130B。AND门128在输入端128A接收来自第二处理器的读使能信号Ren1。AND门130在输入端130A接收来自第一处理器的读使能信号Ren0。AND门130对存储单元的内容和Ren0的值执行逻辑AND运算,允许第一处理器在Ren0导通时(即当Ren0=1)读取存储单元的内容。第一处理器电耦接到输出端130C,并接收DataR0,从而读取存储单元的内容。AND门128对存储单元的内容和Ren1的值执行逻辑AND运算,允许第二处理器在Ren1导通时(即当Ren1=1)读取存储单元的内容。第二处理器电耦接到输出端128C,并接收DataR1,从而读取存储单元的内容。OR=运算通过集成在共享存储单元134内并且在处理器外部的逻辑来实现。使用反馈回路来实现逻辑,该反馈回路将电容器132的电流值耦接到OR门124,以馈送给多路复用器122。读使能线路接收来自共享存储单元134外部的输入。

现在参考图1C,其是根据所公开的技术的另一实施例构造和操作的通常标记为140的系统的示意图,该系统用于在共享的一位SRAM存储单元上实现并发OR=复合赋值。系统140在功能上显著地类似于图1A和图1B的系统100和120,其显著的区别在于触发器142(静态位)取代电容器114和132(动态位)。系统140使得能够在共享SRAM存储器上执行一个或多个OR=复合赋值,并且使得能够将SRAM存储器初始化为0。系统140包括用于实现OR=复合赋值的共享存储单元(由虚线148指示)、触发器142、OR门144、OR门146以及AND门148和150。触发器具有输入端142A、142B、142C和输出端142D。OR门具有输入端144A、144B、144C和输出端144D。OR门146具有输入端146A和146B以及输出端146C。AND门148具有输入端148A、148B和输出端148C。AND门150具有输入端150A、150B和输出端150C。

复位OR门146经由输入端146A从第一处理器(未示出)接收Zero0信号,和/或在输入端146B从第二处理器(未示出)接收Zero1信号。复位OR门146允许第一处理器和/或第二处理器仅将存储单元复位为0。复位OR门146对Zero0和Zero1值执行逻辑OR。复位OR门146的输出端146C电耦接到触发器142的输入端142C,输入端142C对应于存储单元的复位信号(Rst)。触发器142的输入端142A可接收用于同步的时钟信号(Clk)。

OR门144在输入端144B处从第一处理器接收数据的逻辑AND(标记为DataW_Wen0),该数据的逻辑AND从第一处理器通过写使能信号而被写入存储单元148。OR门144在输入端144C处从第二处理器接收数据的逻辑AND(标记为DataW_Wen1),该数据的逻辑AND从第二处理器通过写使能信号而被写入存储单元148。OR门144的输入端144A在反馈回路中与触发器142的输出端142D电耦接,从而对存储单元的内容和输入信号执行逻辑OR,以实现OR=运算。OR门144的输出端144D电耦接到触发器142的输入端142B。以这种方式,将从第一处理器和第二处理器接收的值与存储单元的内容进行OR运算,以实现OR=写操作。

为了实现OR=读取操作,触发器142的输出端142D电耦接到AND门148的输入端148B和AND门150的输入端150B。AND门148在输入端148A接收来自第二处理器的读使能信号Ren1。AND门150在输入端150A接收来自第一处理器的读使能信号Ren0。AND门150对存储单元的内容和Ren0的值执行逻辑AND运算,允许第一处理器在Ren0导通时(即当Ren0=1)读取存储单元的内容。第一处理器电耦接到输出端150C,并接收DataR0,从而读取存储单元的内容。AND门148对存储单元的内容和Ren1的值执行逻辑AND运算,允许第二处理器在Ren1导通时(即当Ren1=1)读取存储单元的内容。第二处理器电耦接到输出端148C,并接收DataR1,从而读取存储单元的内容。通过与共享存储单元148集成的并在处理器外部的逻辑来实现OR=运算。使用反馈回路来实现逻辑,该反馈回路将存储单元的电流值与输入值DataW_Wen0和DataW_Wen1耦接,即触发器142的输出端142D耦接到OR门144,馈送到触发器142的输入端142B。读使能线路接收来自共享存储单元148外部的输入。

现在参考图1D,其是根据所公开的技术的另一实施例构造并操作的通常标记为200的系统的示意图,该系统用于在共享的一位SRAM存储单元上实现复合赋值。系统200在功能上与图1A至图1C的系统100、120和140显著相似,其中显著的区别在于系统200实现复合赋值f=,其中f是具有右幺元的USCAE运算符(例如,具有右幺元0的异或XOR运算)。系统200使得能够在共享SRAM存储器上执行一个或多个布尔运算,并且使得能够将SRAM存储器初始化为零。系统200包括用于实现复合赋值的共享存储单元202。共享存储单元202包括估计器204、触发器206、写使能OR门208、时钟AND门210、清零OR门212、第一读AND门214和第二读AND门216。

触发器206的输入端206A与估计器204的输出端204D耦接。触发器206的输入端206B与时钟AND门210的输出端210C耦接。触发器206的输入端206C与清零OR门212的输出端212C耦接。触发器206的输出端206D与估计器204的输入端204A耦接,与第一读AND门214的输入端214A耦接,与第二读AND门216的输入端216A耦接。写使能OR门208的输出端208C与时钟AND门210的输入端210A耦接。

估计器204的输入端204B被配置为从第一处理器接收第一数据信号(图1D中被标记为“DATA_W0”),以及估计器204的输入端204C被配置为从第二处理器接收第二数据信号(图1D中被标记为“DATA_W1”)。写使能OR门208的输入端208A被配置为从第一处理器接收第一写使能信号(图1D中被标记为“WEN0”),以及写使能OR门208的输入端208B被配置为从第二处理器接收第二写使能信号(图1D中被标记为“WEN1”)。时钟OR门的输入端210B接收系统200、第一处理器和第二处理器共用的时钟信号(图1D中标为“CLK_SIG”)。清零OR门212的输入端212A被配置为从第一处理器接收第一清零存储器信号(图1D中被标记为“ZERO 0”),以及清零OR门212的输入端212B被配置为从第二处理器接收第二清零存储器信号(图1D中被标记为“ZERO 1”)。读使能AND门214的输入端214B被配置为从第一处理器接收第一读使能信号(图1D中被标记为“REN 0”),以及读使能AND门216的输入端216B被配置为接收第二读使能信号(图1D中被标记为“REN 1”)。

估计器204接收DATA_W0、DATA_W1和触发器206的输出端206D的电流值,并估计((206D f DATA_W0)f DATA_W1),并在输出线204D上产生结果。为了向共享存储单元202写入值,写入使能OR门208对其输入端208A和208B的输入执行OR运算。时钟OR门210对CLK_SIG和写使能OR门208的输出端208C的输出执行AND运算。因此,当WEN0或WEN1为高电平,并且CLK_SIG为高电平时,则触发器206的输入端206A从估计器204的输出端204D接收的输入通过触发器206传播到其输出端206D。触发器206的输出端206D在ZERO 0或ZERO 1为高电平时清零。

当第一处理器需要从共享存储单元202读取值时,第一处理器将REN0设置为高,触发器206的输出端206D的输出传播通过读使能AND门214。当第二处理器需要从共享存储单元202读取值时,第二处理器将REN1设置为高,触发器206的输出端206D的输出传播通过读使能AND门216。

现在参考图2,其是根据所公开的技术的另一实施例构造和操作的通常标记为250的系统的示意图,该系统用于在由单核处理器访问的DRAM存储单元上实现OR=指令。系统250包括动态存储器阵列252、处理器253、数据选择器254、行选择器256、行地址选通(RAS)线258、感测放大器/比较器259、锁存器260、三态总线262、清零线264(低电平有效)和多路复用器(MUX)266。系统250还包括一组写二极管268(j),例如写二极管268(1)被指示为控制列1的读取。由于空间的考虑,仅标记写二极管268(1),而从左至右对应于列2至列4的其余写二极管268(2)、268(3)、268(4)(未标记)。存储器阵列252包括存储单元252(i,j),其中i表示存储器252的行,以及j表示存储器252的列,例如左上角的存储单元(对应于行1,列1)由标记为252(1,1)的虚线圆表示。存储器阵列252被示出具有布置成4×4网格的16个存储单元252(i,j),然而,这并不意在限制。每个存储单元252(i,j)包括开关252S(i,j)和电容器252C(i,j),使得存储器阵列包括耦接到16个电容器的16个开关的阵列,例如对应于第一行第二列的存储单元252(1,2)的开关由标记为252S(1,2)的虚线圆表示。类似地,对应于第一行第三列的存储单元252(1,3)的电容器由标记为252C(1,3)的虚线圆表示。在图3A至图3G中,开关以场效应晶体管(FET)为例。然而,需要注意的是,根据系统规格和要求,开关可以由双极结晶体管(BJT)来实现。存储器阵列252还包括多个行总线252Row(i)和多个列总线252Col(j)。由于空间限制,仅顶部行252Row(1)和第四列252Col(4)被标记,然而,应当理解,存储器阵列从上到下包括四条行使能线:252Row(1)、252Row(2)、252Row(3)和252Row(4);和从左到右包括四条列总线:252Col(1)、252Col(2)、252Col(3)和252Col(4)。

处理器253经由三态总线262和数据选择器254电耦接到存储器252。对于存储器阵列252的任何给定行i和列j,电容器252C(i,j)的输入端电耦接到开关252S(i,j)的相应的第一端(例如,p型双极结晶体管-BJT的集电极或p型场效应晶体管-FET的漏极),并且电容器252C(i,j)的输出端电耦接到地或参考电压。沿着存储器阵列252的任意行i,对于所有列j,开关252S(i,j)的控制端(例如,BJT的基极或FET的栅极)电耦接到使能线252Row(i),例如,至开关252S(1,j)的控制端通过使能线252Row(1)电耦接。对于存储器阵列252的任何给定列j,对于所有行i,开关252S(i,j)的第二端(例如,p型BJT的发射极或p型FET的源极)通过列总线252Col(j)电耦接,例如开关252S(i,4)的第二端通过列总线252Col(4)电耦接。行选择器256电耦接到所有行使能线252Row(i)。RAS线258电耦接到多路复用器266。所有列总线252Col(j)耦接到多路复用器266。多路复用器266的零线耦接到感测放大器/比较器259,多路复用器266的一条线耦接到相应的写二极管268(j)。感测放大器/比较器259电耦接到锁存器260。锁存器260电耦接到数据选择器254。数据选择器254电耦接到行选择器256。

存储器阵列252的每行i实现四位字,每一位由行i的存储单元252(i,j)表示。通过行选择器256使能开关252S(i,j)。因此,处理器253通过向行选择器256写入a0、a1来控制向存储器252的写入,从而写入使能所选择的行。随后由处理器253写入行i的值被存储在行i的相应电容器252C(i,j)中。

处理器253允许经由RAS 258向存储器252写入值或从存储器252读取值。当RAS258被设置为0时,对于行i的选定存储单元252(i,j),使能存储器252的读取。通过将RAS258设置为0,多路复用器266经由锁存器260、数据选择器254和三态总线262连接到存储器252的输出端。由行选择器256和数据选择器254激活的存储单元252(i,j)是读使能的。处理器253经由三态总线262读取被读激活的存储单元252(i,j)的内容。

当RAS 258被设置为1时,存储器252对选定存储单元252(i,j)是写使能的。通过将RAS 258设置为1,列总线252Col(j)经由锁存器260和写二极管268(j)连接到数据选择器254。处理器253经由锁存器260、写二极管268(j)、多路复用器266和列总线252Col(j),将值写入由行选择器256和数据选择器254激活的存储单元252(i,j)。因此行i的存储单元252(i,j)的电容器252C(i,j)被选择,并且存储从处理器253接收的值。一旦值1被写入特定存储单元252(i,j)从而对存储单元252(i,j)的相应电容器252C(i,j)充电,随后对相同存储单元252(i,j)进行写入,无论是0还是1,都不影响电容器的状态,从而实现OR=指令。由于该运算符是USCAE运算符,因此执行顺序不影响存储器阵列252的最终状态。

为了将存储器阵列252的存储单元252(i,j)重置为零,处理器253通过将值a0、a1写入行选择器256来选择用于重置的行。处理器253将RAS 258设置为1,从而写使能存储单元252(i,j)。处理器253将0写入由行选择器256和数据选择器254选择的存储单元252(i,j)。选定存储单元252(i,j)的电容器252C(i,j)电耦接到清零线264有效低电平,并放电。

现在参考图3A至图3G,它们一起形成了根据所公开的技术的另一实施例构造和操作的通常标记为300的系统的示意图,该系统用于在由多核处理器并发访问的共享DRAM存储单元上实现多个并发OR=指令。系统300包括四个独立的DRAM控制器320(1)、320(2)、320(3)和320(4),每个DRAM控制器分别为单独的CPU处理器322(1)、322(2)、322(3)和320(4)服务。系统300还包括共享存储器302,该共享存储器302被配置为分别经由独立的DRAM控制器320(1)、320(2)、322(3)和320(4),由CPU处理器322(1)、322(2)、322(3)和320(4)进行并发读取和写入。共享动态存储器302由对应于行i和列j的多个存储单元C(i,j)的阵列形成。每个独立的DRAM控制器320(1)、320(2)、320(3)和320(4)分别具有连接阵列303(1)、303(2)、303(3)和303(4)。连接阵列303(1)、303(2)、303(3)和303(4)提供每个独立的DRAM控制器320(1)、320(2)、320(3)和320(4)与共享动态存储器302之间的电通信,使得每个处理核322(1)、322(2)、322(3)和322(4)可以同时读取和写入共享动态存储器302。关于独立的DRAM控制器320(1)、320(2)、320(3)和320(4)与共享存储器302之间的连接的描述在下面参考图3B更详细地提供。

DRAM控制器320(1)、320(2)、320(3)和320(4)中的每一个基本上类似于图2的系统200。以下对DRAM控制器320(1)的描述应被理解为与DRAM控制器320(2)、320(3)和320(4)中的每一个相关,其中索引“1”可分别用2、3或4代替。具体地,DRAM控制器320(1)包括三态总线、数据选择器304(1)、锁存器310(1)、MUX 316(1)、RAS 308(1)和行选择器306(1),其关于共享存储器302的连接性和功能性基本上类似于上面关于图2描述的连接性和功能性,不同的是每个电容器由DRAM控制器320(1)、320(2)、320(3)和320(4)共享。因此,处理器322(1)经由DRAM控制器320(1)读取和写入存储单元(i,j)中的任何一个,如图2所示。因此,由于处理核322(1)、322(2)、322(3)、322(4)中的每一个分别经由DRAM控制器320(1)、320(2)、320(3)和320(4)耦接到共享存储器302,因此处理核322(1)、322(2)、322(3)和322(4)中的每一个同时读取和写入共享存储器302的存储单元(i,j)中的任何一个。

现在参考图3G,其示出了共享存储器302的存储单元C(1,1)的放大视图,存储单元C(1,1)对应于位于行1列1的存储单元。存储单元C(1,1)被理解为代表共享存储器302的每个存储单元(i,j)。因此,以下关于存储单元C(1,1)的描述被理解为与共享存储器302的每个存储单元(i,j)相关。行使能线303(1)

存储单元C(1,1)包括电容器312。开关314(1)、314(2)、314(3)和314(4)中的每一个电耦接到电容器312的一个端子。电容器312的另一端子电耦接到地或参考电压。开关314(1)的栅极经由行使能线303(1)

上述电路的操作基本上类似于图2的系统200,但注意到除了四个独立的处理核322(1)、322(2)、322(3)和322(4)可以同时读取和写入共享存储器302以外。还应注意,虽然结合图1A至图1D描述的实施例在存储单元中包括反馈回路,但结合图2和图3A至图3G描述的实施例在存储单元中没有反馈回路。

附加实施例

1)注意,通过将零电压值解释为真而将非零电压解释为假,可以修改用于实现OR=运算的一个或多个上述实施例,以在共享存储器上实现AND=运算。这与用于将零电压解释为假而将非零电压解释为真的OR=运算的解释相反。

2)首先关于图1A、图1B和图1C进行说明。存储单元接收的值是要用相应的写使能信号写入的数据的逻辑AND。在这些图中,逻辑AND由DataW_Wen0和DataW_Wen1表示。因此,在这些存储单元中,不存在用于要写入的数据和写使能信号的单独的线。可以这样做,因为在OR=时,向存储单元写入零不会改变存储单元的内容。此外,可以修改图1A、图1B和图1C,使得不存在外部读使能线路Ren0、Ren1,如下所示。线DataW_Wen0和DataW_Wen1将分别重命名为RW0、RW1。对于i=0,1;RWi=0表示要执行读取,RWi=1表示要对OR-存储单元执行1的写入。RW0连接到第一个非(NOT)门的输入端,第一个非门的输出端连接到Ren0,现在Ren0是一条内部线。类似地,RW1连接到第二个非门的输入端,该非门的输出端连接到Ren1,该Ren1现在是一条内部线。因此对于i=0,1,当RWi=0时,执行读取,并且当RWi=1时,对OR-存储单元执行1的写入。因此,对于每个存储器控制器(或处理器),仅有一条线用于初始化从OR-存储单元的读取和对OR-存储单元的写入;没有用于要写入的数据的单独的线。

3)还需要注意的是,OR-存储器SRAM的图与图3A、图3B相似,但使用触发器代替电容器。此外,没有存储器刷新电路。

4)进一步注意,在图3A、图3B中,晶体管被用于实现开关,其他技术也可以用于实现这些开关。

本领域技术人员将理解,所公开的技术不限于上文具体示出和描述的内容。相反,所公开的技术的范围仅由所附的权利要求限定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号