CN105549899A - 用于维持嵌入式存储器块中的存储器访问相干性的系统和方法 - Google Patents

用于维持嵌入式存储器块中的存储器访问相干性的系统和方法 Download PDF

Info

Publication number
CN105549899A
CN105549899A CN201510706403.2A CN201510706403A CN105549899A CN 105549899 A CN105549899 A CN 105549899A CN 201510706403 A CN201510706403 A CN 201510706403A CN 105549899 A CN105549899 A CN 105549899A
Authority
CN
China
Prior art keywords
address
register
data
storer
writing address
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.)
Granted
Application number
CN201510706403.2A
Other languages
English (en)
Other versions
CN105549899B (zh
Inventor
C·埃贝林
P·R·查
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Altera Corp
Original Assignee
Altera Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Altera Corp filed Critical Altera Corp
Publication of CN105549899A publication Critical patent/CN105549899A/zh
Application granted granted Critical
Publication of CN105549899B publication Critical patent/CN105549899B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1015Read-write modes for single port memories, i.e. having either a random port or a serial port
    • G11C7/1039Read-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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic 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/17748Structural details of configuration resources
    • H03K19/1776Structural details of configuration resources for memories
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic 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/17748Structural details of configuration resources
    • H03K19/17764Structural details of configuration resources for reliability
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1015Read-write modes for single port memories, i.e. having either a random port or a serial port
    • G11C7/103Read-write modes for single port memories, i.e. having either a random port or a serial port using serially addressed read-write data registers
    • G11C7/1033Read-write modes for single port memories, i.e. having either a random port or a serial port using serially addressed read-write data registers using data registers of which only one stage is addressed for sequentially outputting data from a predetermined number of stages, e.g. nibble read-write mode

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Static Random-Access Memory (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请的各实施例涉及用于维持嵌入式存储器块中的存储器访问相干性的系统和方法。描述了维持流水线化的存储器架构中的并行存储器读取与写入之间的相干性的增强的存储器电路。描述的存储器电路无论向存储器输入和/或输出应用的流水线化的数量如何都可以维持数据相干性。另外,这些存储器电路可以被实施为现场可编程门阵列(FPGA)或者其它可编程逻辑器件(PLD)中的专用硬电路,并且可以被补充有用户可配置逻辑以实现广泛应用中的相干性。

Description

用于维持嵌入式存储器块中的存储器访问相干性的系统和方法
技术领域
本公开内容涉及一种可编程集成电路,并且特别地涉及可编程集成电路设备(例如,现场可编程门阵列(FPGA)或者其它可编程逻辑器件(PLD))中的嵌入式存储器块。更特别地,本公开内容涉及一种维持在并行存储器读取与写入之间的相干性的增强的嵌入式存储器块。
背景技术
已经变得日益普遍地设计PLD以按照专用硬存储器块的形式和/或脱离软可配置逻辑包括嵌入式存储器块。这样的嵌入式存储器块可以包括电路在已经被部分地或者完全地硬接线以支持对数据的存储和取回的PLD上的集中。可以使用软逻辑资源(比如移位寄存器或者配置存储器(CRAM)查找表掩码(LUT掩码))来实施嵌入式存储器块。具有变化的尺寸、宽度、端口计数和单比对双端口和/或双时钟读取/写入功能的嵌入式存储器也可以可用(或者可配置)。
嵌入式存储器存储许多不同类型的数据并且支持多种功能。例如,它们被运用在广泛范围的工业、有线和无线应用中,其中它们可以被用于高速缓存数据或者维持用于分组数据、统计、指针等的加载/存储表。嵌入式存储器也经常用作按照变化的数据宽度和时钟速度访问和提供数据的异步源和部件之间的临时先入先出(FIFO)存储。
一般而言,为了从存储器取回数据,向存储器呈现读取地址和一些控制信号(例如,时钟信号),并且在一个时钟周期以后输出位于指定的读取地址处的存储的数据。对于写入事务,写入地址和写入数据连同有关的控制信号一起被呈现给存储器,并且在存储器中、在指定的写入地址处存储写入数据。对于许多现有设备,两种事务可以在分离的端口上并行。
在一些应用中,从存储器读取的数据(“读取数据”)在被输出之前被流水线化一个或者多个时钟周期。在这些实例中,必须向存储器及早地呈现读取地址,从而使得读取数据在被预期时可用,即,在相同时钟周期期间,如果没有流水线化则读取数据将已经变得可用。这例如在读取-修改-写入命令由流水线化的存储器电路处理时是必须的——如果读取数据未及早地变得可用,则非当前读取数据将被修改并且回写到存储器位置。及早地呈现读取地址将读取和写入重新对准,从而使得在与向存储器提交对应写入数据相同的时钟周期期间输出读取数据。
然而,与此同时,向存储器及早地呈现读取地址提出了它自己的挑战。在一个时钟周期期间向存储器写入的数据通常地仅在下一时钟周期期间变得可用。具体而言,向存储器写入的数据必须截止时钟周期的结束而被提交以便该数据在下一时钟周期中可用于读取。向存储器及早地呈现读取地址因此可能造成从指定的存储器位置读取非当前数据。具体而言,读取数据将不包括在向存储器呈现读取地址的时钟周期期间或者之后向存储器位置写入的任何数据。向存储器中引入的流水线化的数量越大,问题就越显著。
发明内容
根据本公开内容的实施例,提供了一种维持在并行存储器读取与写入之间的相干性的增强的存储器电路。这些存储器电路无论向存储器输入和/或输出应用的流水线化的数量如何都可以维持数据相干性。另外,这些存储器电路可以被实施为FPGA或者其它PLD中的专用硬电路以增加性能而减少对用户的设计负担。
根据本公开内容的实施例,提供了一种用于维持存储器访问相干性的存储器电路。该存储器电路包括多个寄存器、存储器、比较器电路和选择电路。寄存器被配置为在第一时钟周期期间存储读取地址、第一写入地址和第一输入数据以及在第二时钟周期期间存储第二写入地址和第二输入数据。存储器被配置为在第二时钟周期期间从与读取地址对应的存储器位置读取数据,并且前述寄存器中的一个或者多个寄存器被配置为存储从存储器读取的数据。存储器也被配置为在第二时钟周期期间向与第一写入地址对应的存储器位置写入第一输入数据。同时,比较器电路被配置为确定(例如,在第二时钟周期期间)读取地址是否与第一写入地址或者第二写入地址相同。选择电路被配置为接收从存储器读取的数据、第一数据输入和第二数据输入,并且输出以下三个信号之一:(i)在比较器电路确定读取地址与第二写入地址相同时的输入的第二数据,(ii)在比较器电路确定读取地址与第一写入地址而不是第二写入地址相同时的输入的第一数据,或者(iii)在比较器电路确定读取地址不与第一写入地址或者第二写入地址相同时的从存储器读取的数据。
根据本公开内容的附加实施例,比较器电路包括第一比较器、第二比较器和逻辑门。第一比较器被配置为在第二时钟周期期间生成读取地址是否与第一写入地址相同的指示。第二比较器被配置为在第二时钟周期期间生成读取地址是否与第二写入地址相同的指示。逻辑门被配置为接收那些指示并且在第二时钟周期期间生成读取地址是否与第一写入地址或者第二写入地址相同的指示。
根据本公开内容的附加实施例,选择电路包括第一复用器和第二复用器。第一复用器被配置为在第三时钟周期期间接收第一输入数据和第二输入数据,以及在第三时钟周期期间输出以下两个信号之一:(i)在读取地址不与第二写入地址相同时的第一输入数据,或者(ii)在读取地址与第二写入地址相同时的第二输入数据。第二复用器被配置为在第三时钟周期期间接收从存储器读取的数据和第一复用器的输出,以及在第三时钟周期期间输出以下两个信号之一:(i)在读取地址不与第一写入地址或者第二写入地址相同时的从存储器读取的数据,或者(ii)在读取地址与第一写入地址或者第二写入地址相同时的第一复用器的输出。
根据本公开内容的附加实施例,多个寄存器、存储器、比较器电路和选择电路都被实施在可编程逻辑器件(例如,FPGA)的专用硬逻辑中。
根据本公开内容的一些实施例,提供了一种用于维持存储器访问相干性的系统。该系统包括存储器电路,该存储器电路至少包括流水线寄存器、第一复用器和第二复用器以及第一比较器和第二比较器。流水线寄存器耦合到输入数据寄存器并且被配置为存储输入数据寄存器的输出。第一复用器耦合到输入数据寄存器和流水线寄存器,并且被配置为基于第一比较器的输出提供输入数据寄存器的输出和流水线寄存器的输出之一。第二复用器耦合到第一复用器和存储器输出寄存器,并且被配置为基于第一比较器和第二比较器的输出提供存储器输出寄存器的输出和第一复用器的输出之一。
根据本公开内容的附加实施例,第一比较器耦合到读取地址寄存器并且被配置为比较读取地址寄存器的输出与传入写入地址。第二比较器耦合到读取地址寄存器和写入地址寄存器,并且被配置为比较读取地址寄存器的输出与写入地址寄存器的输出。根据本公开内容的更多附加实施例,存储器电路还包括两个附加寄存器:第一比较器寄存器,耦合到第一比较器并且被配置为存储第一比较器的输出;以及第二比较器寄存器,耦合到第二比较器并且被配置为存储第二比较器的输出。
根据本公开内容的附加实施例,该系统还包括多个输入流水线寄存器和处理电路。可以在FPGA的软逻辑中实施这些部件。输入流水线寄存器耦合到写入地址寄存器并且被配置为将读取地址寄存器的输入流水线化例如两个时钟周期。处理电路耦合到存储器电路并且被配置为处理第二复用器的输出。输入数据寄存器被配置为接收处理电路的输出。
也提供了配置和操作以上描述的存储器电路和可编程集成电路设备的方法。
附图说明
公开内容的更多特征、它的性质和各种优点将在考虑与附图结合进行的以下具体描述时变得清楚,在附图中,相似标号全篇指代相似部分,并且在附图中:
图1A至图1D是根据例示性实施例的存储器电路的框图;
图2是根据例示性实施例的、在通过将值与当前存储的值相加来更新存储器位置的应用中使用相干存储器的例示性电路的框图;
图3是根据例示性实施例的、用附加外部转发扩充相干存储器的例示性电路的框图;
图4是根据例示性实施例的、组合相干存储器电路以支持64位处理的例示性电路的框图;
图5是根据例示性实施例的、包括用于控制相干性和流水线化的用户可配置逻辑的存储器电路的框图;
图6A和图6B是根据例示性实施例的、分别具有一级和三级流水线化的存储器电路的框图;
图7A至图7C描绘了根据各种例示性实施例的、存储器读取和写入的例示性时序图;
图8是根据例示性实施例的、使用相干2端口存储器和附加转发逻辑以实施全向相干性的相干存储器的框图;以及
图9是示出了根据例示性实施例的、用于维持存储器访问相干性的过程的流程图;
图10示出了可以用来实施本公开内容的一些实施例的例示性系统。
具体实施方式
根据本公开内容的实施例,提供了一种维持在并行存储器读取与写入之间的相干性的增强的存储器电路。这些存储器电路无论向存储器输入和/或输出应用的流水线化的数量如何都可以维持数据相干性。另外,这些存储器电路可以被实施为例如FPGA或者其它PLD中的硬电路以增加性能而减少对用户的设计负担。
这里描述的嵌入式存储器电路和功能而不知道嵌入式存储器类型(例如,SRAM、嵌入式DRAM等)、存储器元件容量、延时和带宽、存储器接口端口或者信道的数目和类型、命令/地址/读取-写入控制协议、接口信令方法(例如,并行或者串行)和存储器元件物理集成拓扑(例如,嵌入式单裸片、2.5D多裸片、3D堆叠式TSV)。应当理解,尽管本公开内容举例说明了如向FPGA设备架构内的嵌入式存储器元件应用的功能,但是这里描述的机制绝不限于FPGA并且可以被实施在任何可编程集成电路中或者与任何可编程集成电路结合使用。此外,这里描述的机制也可以与包括ASIC的非或者半可编程集成电路一起被使用。
图1A示出了根据例示性实施例的维持2级流水线化的存储器中的相干性的例示性存储器电路100。存储器电路100包括输入寄存器110、112、114、116;存储器输出寄存器122;以及流水线寄存器170。存储器电路100也包括存储器120;由(至少)复用器140和160组成的选择电路;以及由(至少)比较器130和150、逻辑门132以及寄存器134和152组成的比较器电路。
如所示,存储器120耦合到分别向存储器提供输入数据、写入地址、写入使能信号和读取地址的输入寄存器110、112、114、116中的每个输入寄存器。也耦合到输出寄存器122的存储器120向寄存器122提供从与例如在相同时钟周期期间向存储器呈现的读取地址对应的存储器位置读取的数据。寄存器110还耦合到流水线寄存器170和复用器160并且向它们各自提供向存储器并行地呈现的输入数据。流水线寄存器170同样耦合到复用器160并且向复用器160提供在先前时钟周期期间由寄存器110提供的输入数据。复用器160转而耦合到复用器140,后者还耦合到输出寄存器122。
因此,在任何给定的时钟周期期间,复用器160从寄存器110接收一次流水线化的输入数据并且从寄存器170接收两次流水线化的输入数据并且基于选择信号输出二者之一。在相同时钟周期期间,复用器140接收由复用器160输出的数据和由寄存器122输出的数据(即,从存储器读取的一次流水线化的数据)并且基于另一选择信号输出二者之一。两个选择信号由确定传入写入地址和/或一次流水线化的写入地址是否与一次流水线化的读取地址匹配的比较器电路生成。
比较器电路包括耦合到逻辑门132的比较器130,该比较器130比较一次流水线化的读取地址(由寄存器116输出)与一次流水线化的写入地址(由寄存器112输出)以确定两个地址是否相同。比较器电路也包括耦合到逻辑门132和寄存器152的比较器150,该比较器150比较一次流水线化的读取地址(由寄存器116输出)与传入写入地址以确定两个地址是否相同。向可以是OR门的逻辑门132提供两个比较的结果。并行地,向寄存器152提供由比较器150执行的比较的结果,其在该寄存器152处被流水线化一个时钟周期。同样地,逻辑门132向寄存器134提供输出信号,其在该寄存器134处被流水线化一个时钟周期。在寄存器134中存储的信号因此是一次流水线化的读取地址是否与传入写入地址、一次流水线化的写入地址或者二者相同的指示;并且在寄存器152中存储的信号是一次流水线化的读取地址是否与传入写入地址相同的指示。
在下一时钟周期期间,复用器160和140分别根据在寄存器152和134中存储的信号输出从存储器读取的一次流水线化的输入数据、两次流水线化的输入数据和一次流水线化的数据之一。特别地,在比较器电路确定一次流水线化的读取地址与传入写入地址相同时输出一次流水线化的输入数据——即,由寄存器152输出的信号使得复用器160输出当前由寄存器110提供的数据,而由寄存器134输出的信号使得复用器140输出当前由复用器160提供的数据。在另一方面,在比较器电路确定一次流水线化的地址与一次流水线化的写入地址相同时输出两次流水线化的输入数据——即,由寄存器152输出的信号使得复用器160输出当前由寄存器170提供的数据,而由寄存器134输出的信号使得复用器140输出当前由复用器160提供的数据。最后,在比较器电路确定一次流水线化的读取地址与一次流水线化的写入地址和传入写入地址均不相同时输出从存储器读取的一次流水线化的数据——即,由寄存器134输出的信号使得复用器140输出当前由输出寄存器122提供的数据。
在存储器需要写入使能信号时,比较器电路考虑与传入写入地址和一次流水线化的写入地址中的每个写入地址伴随的写入使能信号。特别地,如所示,比较器150可以仅在传入写入使能信号活跃时指示一次流水线化的读取地址与传入写入地址匹配。相似地,比较器130可以仅在一次流水线化的写入使能信号(在寄存器112中存储)活跃时指示一次流水线化的读取地址与一次流水线化的写入地址匹配。
在图7A中提供了与图1A的存储器电路100对应的例示性时序图。在图7A中,每个竖线代表一个时钟周期的结束和下一时钟周期的开始。符号表示W#、R#和D#指示在读取、写入和输出数据之间的对应性。具体而言,D#是由对应读取R#返回的并且必须在对应写入W#之前变得可用的数据。例如,D3是与读取R3对应的数据;W3是可以依赖于D3的写入。在无流水线化的存储器中,将通常地在相同时钟周期期间执行R3和D3。然而,在引入流水线化时,必须向存储器及早地呈现读取地址,即,读取必须被前移与流水线化级相同数目的时钟周期。
在及早地呈现读取地址时,存储器必须保证在相同时钟周期期间和在以后时钟周期中向存储器写入的数据如必须的那样可用于读取操作。例如,2级流水线化的存储器要求提前两个时钟周期呈现读取地址。这样,在该相同时钟周期期间和在下一时钟周期期间呈现的写入数据必须变得可用于读取。图1A通过根据读取地址是否与在与读取地址相同的时钟周期期间呈现的写入地址或者在下一时钟周期期间呈现的写入地址相同提供三个输入数据值中的任何一个来实现如以上描述的这一功能。在图7A中图示了这一时序要求:在呈现读取R3时,写入W1和W2即使它们尚未被提交到存储器也仍然变得可用于R3。
虽然前文讨论使用具有2个端口的存储器的示例,其中可以并行地执行读取和写入,但是应当理解,相同相干性机制可适用于仅具有一个端口的存储器,并且可以在每个时钟周期期间执行仅一个读取或者写入。在这一情况下,相干性逻辑更简单,因为仅一个写入可以在读取数据由存储器输出之前出现。相干性也应用于具有多于两个端口的存储器,只要端口都在相同时钟上操作。这些存储器可以提供用于每时钟周期执行多于两个读取/写入操作的能力。这里描述的相干性支持可以同样地好地应用于这些多端口存储器。
图7B示出了用于具有两个读取端口和两个写入端口的4端口存储器的存储器痕迹。箭头730示出了在每对端口710和720内在写入操作与读取操作之间的数据依赖性。箭头740示出了跨两个端口、在写入操作与读取操作之间的附加数据依赖性。与2端口实施例比较,每个读取访问具有两个更多依赖性待校验。也就是说,影响读取数据输出的四个不同写入可能自从读取被发起就已经出现,并且必须比对读取地址校验四个写入地址中的每个写入地址。在一个布置中,八个比较器与在读取地址和写入地址匹配时选择适当写入数据值的复用器一起是执行这些比较而必须的。
在一些实施例中,在两个写入并行地以相同地址为目标时,向一个写入端口给予较另一写入端口而言的优先级。为两个读取端口维持这一相同优先级指派以使得存储器读取返回一致数据。备选地,在其它实施例中,向相同地址的这样的同时写入视为非法,并且存储器可以向指定的位置写入任意数据。
在一些实施例中,通过倍增抽运2端口存储器来模拟4端口存储器,其中每个周期被分解成2个半周期,其中在第一半周期上完成一对读取/写入并且在第二半周期上完成另一对。由于写入被串行化,所以可以向一个端口给予较另一端口而言的静态优先级,但是如果写入被重新排序则动态优先级也是可能的。
图7C示出了用于模拟4端口存储器的相干2端口存储器的时序图,其中虚竖线界定2端口存储器的2x时钟速率。第一端口的读取和写入输入760必须相对于第二端口被延迟半个周期,并且第二端口的读取数据输出750必须相对于第一端口被延迟半个周期。箭头770示出了相干2端口存储器内部实施的数据转发。箭头780示出了由于串行化的读取和写入而自动地出现的数据转发。箭头790示出了为了使得4端口存储器相干而必须添加的其余三个转发数据路径。
回顾图1A,寄存器110-116捕获读取和写入地址以及在每个时钟周期开始时的数据。从存储器读取的数据在时钟周期结束时可用并且在输出寄存器120中被捕获。附加地,正向存储器写入的数据截至时钟周期的结束被存储到存储器阵列中。两个比较器130和150如以上描述的那样比较读取地址与两个不同写入地址。具体而言,参照图7A,比较器130执行R3与W1的比较,而比较器150比较R3与W2。如果这些比较均未匹配,则存储器输出是从存储器读取的数据。如果比较器150匹配写入W2与读取R3,则复用器160无论比较器130的结果如何都从寄存器110选择由W2写入的数据,因为写入W2比W1更新近。否则,选择在寄存器170中存储的由W1写入的数据以用于输出。
应当理解,存储器电路100是相干性逻辑的一个实现。实施相同功能的寄存器和复用器的其它布置是可能的,并且每个布置可以具有不同成本和延迟特性。对特定布置的选择可以例如依赖于用来实施逻辑功能的电路技术。一些可能实现方式的示例在以下描述的图1B至图1D中出现。
如果读取地址和两个写入地址中的任一写入地址相同,则由存储器读取的数据是“不在意”,因为它将在输出处被正被写入的数据替换。这一特性可以去除对增加性能的存储器设计的约束。例如,如果读取和写入对相同地址同时地出现,则存储器设计可以使得读取数据不可预测。这里描述的相干性机制使设计者免于应对这样的不可预测的输出。
由图1A的电路执行的逻辑功能可以由下式表达:
其中N表示信号在时钟周期N处的值,并且N+1表示信号在时钟周期N+1处(也就是在N之后的周期)的值。应当理解,尽管ReadDataN是与ReadAddrN关联的值,但是它在周期N+2上在存储器电路的输出处变得可用,因为存储器具有两级流水线化。
图1B示出了根据例示性实施例的具有在转发电路中实施的附加逻辑的图1A的例示性存储器电路100。特别地,图1B示出了一种用于处理与传入写入地址和一次流水线化的写入地址中的每个写入地址相伴的写入使能信号的方式。在这一方式中,在存储器电路100中包括可以是AND门的逻辑部件131和151。逻辑部件131接收比较器130的输出和一次流水线化的写入使能信号(在寄存器112中存储)并且对两个信号执行逻辑AND运算。在效果上,如果一次流水线化的写入使能信号活跃,则比较器130的输出由门131提供到门132。相似地,逻辑部件151接收比较器150的输出和传入写入使能信号并且对两个信号执行逻辑AND运算。因此,如果传入写入使能信号活跃,则比较器150的输出由门151提供给门132和寄存器152二者。
图1C示出了根据例示性实施例的实施相干存储器功能的另一例示性存储器电路180。与图1B的存储器电路100比较,存储器电路180少一个逻辑门(例如,没有OR门132)。在图1C中,复用器160如图1A和图1B中那样接收寄存器170的输出,但是也接收寄存器122的输出。复用器140转而接收复用器160的输出和寄存器110的输出。
比较器130输出指示传入写入地址是否与一次延迟的读取地址(由寄存器116提供)匹配的信号。逻辑门131对比较器130的输出和传入写入使能信号执行逻辑AND运算,并且向寄存器134输出结果。寄存器134然后在下一时钟周期上向复用器140提供存储的结果。换而言之,复用器140在传入写入使能信号活跃时接收传入写入地址是否与一次延迟的读取地址(由寄存器116提供)匹配的一次延迟的指示。同时,比较器150输出指示一次延迟的写入地址(由寄存器112提供)是否与一次延迟的读取地址(由寄存器116提供)匹配的信号。逻辑门151对比较器150和寄存器114的输出执行提供一次延迟的写入使能信号的逻辑AND运算,并且向寄存器152输出结果。寄存器152然后向复用器160提供存储的结果。因此,复用器160在一次延迟的写入使能信号(由寄存器114提供)活跃时接收一次延迟的写入地址(由寄存器112提供)是否与一次延迟的读取地址(由寄存器116提供)匹配的一次延迟的指示。
图1D示出了根据例示性实施例的实施相干存储器功能的另一例示性存储器电路190。特别地,存储器电路190与图1C的存储器电路180相似,但是利用包括附加寄存器来重新定时。寄存器113、115和117分别存储一次延迟的写入地址(从寄存器112接收)、一次延迟的写入使能信号(从寄存器114接收)和一次延迟的读取地址(从寄存器116接收)。这些寄存器然后在下一时钟周期上分别提供两次延迟的写入地址、两次延迟的写入使能信号和两次延迟的读取地址。比较器130输出指示一次延迟的写入地址(由寄存器112提供)是否与两次延迟的读取地址(由寄存器117提供)匹配的信号。逻辑门131对比较器130和寄存器114的输出执行提供一次延迟的写入使能信号的逻辑AND运算,并且向复用器140输出结果。换而言之,复用器140在一次延迟的写入使能信号(由寄存器114提供)活跃时接收一次延迟的写入地址(由寄存器112提供)是否与两次延迟的读取地址(由寄存器117提供)匹配的指示。同时,比较器150输出指示两次延迟的写入地址(由寄存器113提供)是否与两次延迟的读取地址(由寄存器117提供)匹配的信号。逻辑门151对比较器150和寄存器115的输出执行提供两次延迟的写入使能信号的逻辑AND运算,并且向复用器160提供结果。换而言之,复用器160在两次延迟的写入使能信号(由寄存器115提供)活跃时接收两次延迟的写入地址(由寄存器113提供)是否与两次延迟的读取地址(由寄存器117提供)匹配的指示。
图2示出了根据例示性实施例的在通过将值与当前存储的值(例如,计数器)相加来更新存储器位置的应用中使用相干存储器100的例示性电路200。存储器100是在图1A中描绘的嵌入式相干存储器电路(或者在图1B至图1D中的任一幅图中描绘的存储器)。在一些实施例中,存储器电路100被实施为专用“硬”逻辑电路,而在框以外的电路包括用户可编程的“软”逻辑。
为了更新正确值,写入地址必须被延迟(流水线化)两个周期以允许流水线化的读取完成并且对读取数据执行加法。与存储器位置相加的值必须被相似地延迟两个时钟周期。备选地,可以设计和实施相对简单的用户电路以恰当地配置嵌入式存储器100:寄存器202将写入地址流水线化,寄存器204将写入使能信号流水线化,并且寄存器206将待相加的值流水线化,所有都持续两个时钟周期。经过存储器的回路仅需加法器210以及用于将存储器输入和输出连接到加法器210的必须路由。用于将加法器放置得与存储器接近而不具有为了使得存储器访问相干而原本需要的额外电路的能力允许较常规方式而言的大量地提高的性能。
在一些应用中,正被执行的操作复杂或者执行操作的处理电路例如由于设计约束而必须被放置得更远离存储器。在这些实例中,可以运用在存储器外部的另外的转发以增加流水线化并且由此提高性能。图3示出了根据例示性实施例的在通过将值与当前存储的值(例如,计数器)相加来更新存储器位置的应用中使用相干存储器100和外部转发的例示性电路300。存储器100是在图1A至图1D中的任一幅图中描绘的嵌入式相干存储器电路。电路300包括由寄存器310和320提供的附加两级流水线化。特别地,寄存器310将读取数据流水线化而寄存器220将写入数据流水线化。由于现在存在从新数据的读取到回写的四个流水线级,所以在写入地址输入上存在四个平衡寄存器302。在这一布置中,加法器电路340可以位于与存储器相距一段距离处,因为两个寄存器310和320允许在存储器与加法器之间的路由被流水线化。这可能例如在多个嵌入式存储器块被组合成单个大存储器时是希望的。
这里描述的相干性机制也简化了“窄存储器”的实现方式。在一些实施例中,FPGA嵌入式存储器可配置以允许一个范围的不同数据宽度。例如,存储器可以被配置为如1位一样窄或者如40位一样宽。然而,某些存储器可能出于对于成本或者性能的考虑而不允许这样的宽范围的宽度选项。可以通过向每个物理存储器位置分配多个逻辑存储器位置来实现利用宽存储器实施窄存储器。读取窄存储器需要读取适当物理存储器位置并且然后从这一数据选择正确位集合,这仅添加在读取输出上的附加复用级。然而,向窄存储器写入需要读取和写入以避免改变向相同物理存储器位置分配的其它逻辑存储器位置。具体而言,读取适当物理存储器位置,更新用于逻辑存储器位置的位,并且向物理位置回写所得的整个值。这一读取-修改-写入操作需要相干存储器读取。
以上描述的相干性技术和电路可以用来例如在物理存储器不能实施窄模式的情况下使用读取-修改-写入来支持窄存储器。可以在软逻辑中或者使用专用电路在存储器电路内实施向读取数据中插入适当位的电路。例如,具有一个写入端口和两个读取端口的物理存储器可以用来实施双端口窄存储器。写入操作可以与读取端口之一一起使用写入端口,而读取操作可以使用第二读取端口。
如以上指出的那样,在一些实施例中,相干存储器是自完备和模块式的。在这些实施例中,相干存储器可以支持在不同维度中的流水线化。例如,这里描述的相干存储器即使在嵌入式存储器块在宽度上限于例如32或者40位时仍然可以支持在存储器中维持的64位计数器。特别地,可以并行组合两个或者更多个存储器以创建宽存储器,并且为了减少延迟,可以将加法函数流水线化。这一流水线化在使用如图4中所示的相干存储器时简单直接。如所示,下存储器420保持每个存储器位置的低阶一半而上存储器410保持高阶一半。加法函数用在第一时钟周期上添加的低阶位和在第二时钟周期上的第二半来被流水线化。应当理解,任何前馈操作可以与相干存储器结合被流水线化以实现任一级希望的流水线化。
以上描述的相干性机制也可以用来保证用于多端口存储器的相干性。例如,FPGA嵌入式存储器可以提供用于读取和写入的多个端口。为了保证多端口存储器维持相干性,可以对于额外读取端口添加转发路径以从任何写入端口转发相关数据。对于以上结合图1A描述的两级流水线化的存储器,这需要2xRxW个比较器和转发路径,其中R是读取端口的数目并且W是写入端口的数目。一般而言,NxRxW个比较器和转发路径可以用来实施用于具有多个端口的N级流水线化的存储器的相干性。
在一些实施例中,相干性电路允许用户指定是否应当使用相干性和/或运用流水线化级。图5示出了根据例示性实施例的包括用于控制相干性和流水线化的用户可配置逻辑的例示性存储器电路500。可配置逻辑包括复用器510、逻辑门530和550以及控制位520、540和560。这些部件控制是否启用相干性,并且如果被启用,则是否为一级或者两级存储器流水线化而完成相干性。具体而言,可配置控制位520与复用器510一起确定是否注册了从存储器输出的读取数据。控制位540和560配置是否启用转发,并且如果是则是否为一级或者两级流水线化而启用转发。如果控制位560被设置成0则停用转发,并且可以用如由控制位520配置的一级或者两级流水线化来操作存储器。如果控制位560被设置成1并且控制位540被设置成1,则启用一级转发并且控制位520可以被设置成停用第二级流水线化。如果控制位560被设置成1并且控制位540被设置成0,则启用两级转发并且控制位520可以被设置成启用第二级流水线化。
以上描述的技术可以使用转发电路的广义化而被延伸成任何数目的K个流水线级,该推广被描述为以下组合逻辑函数:
其中N是读取或者写入的时钟周期的数目,时钟周期N+1跟随周期N,并且MemoryDataN是用于对应读取ReadDataN的在时钟周期N期间在存储器中的数据。ReadDataN是由存储器系统在时钟周期K中为地址ReadAddrN(在时钟周期N中发布)而返回的值。
例如图6A示出了利用一级转发实施相干存储器功能的例示性电路600。在电路600中,向也从寄存器110接收一次延迟的写入数据信号的复用器140直接地提供存储器输出。比较器130确定一次延迟的写入地址(由寄存器112提供)是否与一次延迟的读取地址(由寄存器116提供)匹配并且向逻辑部件131提供比较的结果。逻辑部件131对由比较器130提供的信号和一次延迟的写入使能信号(由寄存器114提供)执行逻辑AND运算并且向复用器140提供运算的结果以便控制对它的输出的选择。也就是说,逻辑部件131仅在对应一次延迟的写入使能信号活跃时提供指示一次延迟的写入地址是否与一次延迟的读取地址匹配的信号。该信号转而控制复用器140是否输出存储器输出或者一次延迟的写入数据(由寄存器110提供)。如所示,复用器140在地址不匹配时输出存储器输出并且在它们匹配时输出一次延迟的写入数据。
作为另一示例,图6B示出了利用三级转发实施相干存储器功能的例示性电路650。电路600与图1C的电路180基本上相似、但是包括另一转发电路。附加转发电路包括寄存器652、656、660、664和666;复用器654;逻辑部件658以及比较器662。寄存器652、656、660、664和666分别存储来自寄存器170的两次延迟的写入数据信号、逻辑部件658的输出、来自寄存器114的一次延迟的写入使能信号、来自寄存器112的一次延迟的写入地址信号和来自寄存器116的一次延迟的读取地址信号。因此,在下一时钟周期上,寄存器652、656、660、664和666分别提供三次延迟的写入数据信号、逻辑部件658的一次延迟的输出、两次延迟的写入使能信号、两次延迟的写入地址信号和两次延迟的读取地址信号。
比较器662确定两次延迟的写入地址(由寄存器664提供)是否与两次延迟的读取地址(由寄存器666提供)匹配并且向逻辑部件658输出结果。逻辑部件658对比较器662的输出和两次延迟的写入使能信号(由寄存器660提供)执行逻辑AND运算并且向寄存器656输出结果。因而,寄存器656存储指示是否两次延迟的写入地址和两次延迟的读取地址匹配并且对应两次延迟的写入使能信号活跃的信号。这一信号在下一时钟周期上用来选择复用器654的输出。在地址匹配并且写入使能信号活跃时输出三次延迟的写入数据(由寄存器652提供);否则,提供一次延迟的存储器输出(来自寄存器122)。
可以向用户提供软件工具以使用以上描述的相干存储器电路来设计电路。这些工具可以允许用户执行以下操作以及其它功能:拼接多个嵌入式存储器块以包括相干性;与相干存储器一起使用读取-修改-写入操作以实施窄存储器;通过利用相干性支持在时间上复用存储器来实施多个端口并且组合软件逻辑以实施附加所需转发;添加额外级的转发以从相干嵌入式存储器块创建大的相干存储器;将读取-修改-写入操作实施为存储器定义的部分;以及使用时间复用和附加软件逻辑来从简单的双端口存储器创建相干多端口存储器以实施如在图8中描绘的附加转发路径。图8是根据例示性实施例的使用相干2端口存储器和附加转发逻辑以实施全相干性而实施的相干存储器的框图。虽然未示出,但是应当理解,可以向描绘的转发逻辑添加逻辑电路(块800和810)以考虑如这里描述的写入使能信号。也就是说,在存储器需要写入使能信号时,仅如果也确立对应写入使能信号才可以确立信号CompAA、CompAB和CompBB。
图9是示出了根据一些实施例的用于维持存储器访问相干性的例示性过程900的流程图。可以在硬件(例如,作为分立电路和/或作为ASIC或者FPGA的部分)、软件(例如,作为在非瞬态计算机可读介质上存储的计算机可执行指令)或者其组合中实施过程900。在步骤902处,该过程在第一时钟周期期间存储读取地址、第一写入地址和第一输入数据。例如,可以如以上描述的那样在图1A至图1D的寄存器116、112和110中存储读取地址、第一写入地址和第一输入数据。如果存储器需要写入使能信号,则过程900也存储与第一输入数据对应的第一写入使能信号(例如,在寄存器114中)。接着,在步骤904处,该过程附加地在第二时钟周期期间存储第二写入地址和第二输入数据(以及可选地存储与第二输入数据对应的第二写入使能信号)。在第二时钟周期期间,该过程也从与读取地址对应的(例如,存储器120的)存储器位置读取数据(步骤906)并且向与第一写入地址对应的存储器位置写入第一输入数据(步骤908)。
在步骤910处,该过程确定读取地址是否与第一写入地址或者第二写入地址相同。在存储器需要写入使能信号时,过程900也确定是否确立了第一写入使能信号和第二写入使能信号。如果读取地址与第一写入地址匹配(以及可选地确立了第一写入使能信号),则该过程前进到步骤914,否则该过程前进到步骤916。在步骤914处,如果读取地址还与第二写入地址匹配(以及可选地确立了第二写入使能信号),则该过程前进到步骤918,其中它在第三时钟周期期间输出输入的第二数据。否则,如果读取地址不与第二写入地址匹配(或者可选地未确立第二写入使能信号),则该过程前进到步骤920并且在第三时钟周期期间输出输入的第一数据。在步骤916处,如果读取地址与第二写入地址匹配(以及可选地确立了第二写入使能信号),则该过程同样前几大脑步骤918,其中它在第三时钟周期期间输出输入的第二数据。在另一方面,如果读取地址不与第二写入地址匹配(或者可选地未确立第二写入使能信号),则该过程前进到步骤922并且在第三时钟周期期间输出从存储器读取的数据。
图10示出了可以用来实施本公开内容的一些实施例的例示性系统。系统1000可以是或者可以包括电路或者其它设备(例如,处理块、可编程集成电路、ASSP、ASIC、PLD、全定制芯片、专用芯片)。系统1000可以包括以下部件中的一个或者多个部件:处理器1070、存储器1080、I/O电路1050、电路1060和外围设备1040。电路1060可以是可编程集成电路设备,比如ASSP、ASIC、PLD或者任何其它适当可编程集成电路设备。存储器1080可以包含在形式和功能上与这里描述的存储器电路100、180、190、500、600和/或650相似的一个或者多个存储器电路。这些部件由系统总线或者其它互连1030连接在一起并且被填充在终端用户系统1010中包含的电路板1020上。
可以在广泛多种应用(比如计算机联网、数据联网、仪表、视频处理、数字信号处理或者任何其它应用(其中希望有使用可编程或者可再编程逻辑的优点))中使用系统1000。电路1060可以用来执行多种不同逻辑功能和/或计算多种不同数学函数。例如,电路1060可以被配置为与处理器1070配合工作的控制器或者一组处理块。电路1060也可以用来执行信号处理。在又一示例中,电路1060可以被配置为在处理器1070与在系统1000中的其它部件之一之间的接口。应当注意,系统1000仅为示例性的,并且实施例的真实范围和精神应当由所附权利要求指示。
前文仅举例说明了实施例的原理并且本领域技术人员可以做出各种修改而未脱离这里公开的实施例的范围和精神。出于示例而非限制的目的而呈现了本公开内容的以上描述的实施例,并且本公开内容仅由所附权利要求限制。

Claims (22)

1.一种用于维持存储器访问相干性的存储器电路,所述存储器电路包括:
多个寄存器,被配置为:
在第一时钟周期期间存储读取地址、第一写入地址和第一输入数据;以及
在第二时钟周期期间存储第二写入地址和第二输入数据;
存储器,被配置为:
在所述第二时钟周期期间从与所述读取地址对应的存储器位置读取数据,其中所述多个寄存器还被配置为存储从存储器读取的所述数据;以及
在所述第二时钟周期期间、在与所述第一写入地址对应的存储器位置处写入所述第一输入数据;
比较器电路,被配置为:
确定所述读取地址是否与所述第一写入地址或者所述第二写入地址相同;以及
选择电路,被配置为:
接收从存储器读取的所述数据、输入的所述第一数据和输入的所述第二数据;以及
在第三时钟周期期间:
在所述比较器电路确定所述读取地址与所述第二写入地址相同时输出输入的所述第二数据;
在所述比较器电路确定所述读取地址与所述第一写入地址而不是所述第二写入地址相同时输出输入的所述第一数据;以及
在所述比较器电路确定所述读取地址不与所述第一写入地址或者所述第二写入地址相同时输出从存储器读取的所述数据。
2.根据权利要求1所述的存储器电路,其中所述多个寄存器包括:
第一寄存器、第二寄存器、第三寄存器、第四寄存器和第五寄存器;
所述第一寄存器被配置为:
在所述第一时钟周期期间存储所述第一输入数据并且在所述第二时钟周期期间存储所述第二输入数据;
在所述第二时钟周期期间向所述存储器、所述第四寄存器和所述选择电路中的每个提供所述第一输入数据;以及
在所述第三时钟周期期间向所述存储器和所述选择电路中的每个提供所述第二输入数据;
所述第二寄存器被配置为:
在所述第一时钟周期期间存储所述第一写入地址并且在所述第二时钟周期期间存储所述第二写入地址;
在所述第二时钟周期期间向所述存储器和所述比较器电路中的每个提供所述第一写入地址;以及
在所述第三时钟周期期间向所述存储器提供所述第二写入地址;
所述第三寄存器被配置为:
在所述第一时钟周期期间存储所述读取地址;以及
在所述第二时钟周期期间向所述存储器和所述比较器电路中的每个提供所述读取地址;
所述第四寄存器被配置为:
在所述第二时钟周期期间存储所述第一输入数据;以及
在所述第三时钟周期期间向所述选择电路提供所述第一输入数据;以及
所述第五寄存器被配置为:
在所述第二时钟周期期间存储从存储器读取的所述数据;以及
在所述第三时钟周期期间向所述选择电路提供从存储器读取的所述数据。
3.根据权利要求2所述的存储器电路,其中所述多个寄存器还包括:
第六寄存器,被配置为:
在所述第二时钟周期期间存储所述读取地址是否与所述第一写入地址或者所述第二写入地址相同的第一指示;以及
在所述第三时钟周期期间向所述选择电路提供所述第一指示;以及
第七寄存器,被配置为:
在所述第二时钟周期期间存储所述读取地址是否与所述第二写入地址相同的第二指示;以及
在所述第三时钟周期期间向所述选择电路提供所述第二指示。
4.根据权利要求3所述的存储器电路,其中所述多个寄存器还包括:第八寄存器,被配置为:
在所述第一时钟周期期间存储第一写入使能信号并且在所述第二时钟周期期间存储第二写入使能信号;以及
在所述第二时钟周期期间向所述存储器和所述比较器电路中的每个提供所述第一写入使能信号;
其中所述存储器还被配置为仅在所述第一写入使能信号活跃时向与所述第一写入地址对应的所述存储器位置写入所述第一输入数据;以及
其中所述比较器电路还被配置为基于所述第一写入使能信号和所述第二写入使能信号确定所述读取地址是否与所述第一写入地址或者所述第二写入地址相同。
5.根据权利要求3所述的存储器电路,其中所述比较器电路包括:
第一比较器,被配置为在所述第二时钟周期期间生成所述读取地址是否与所述第一写入地址相同的第三指示;以及
第二比较器,被配置为在所述第二时钟周期期间生成所述读取地址是否与所述第二写入地址相同的所述第二指示;以及
逻辑门,被配置为:
接收所述第二指示和所述第三指示;以及
在所述第二时钟周期期间生成所述读取地址是否与所述第一写入地址或者所述第二写入地址相同的所述第一指示。
6.根据权利要求5所述的存储器电路,其中所述选择电路包括:
第一复用器,被配置为:
在所述第三时钟周期期间接收所述第一输入数据、所述第二输入数据和所述第二指示;以及
在所述第三时钟周期期间:
在所述第二指示指示所述读取地址不与所述第二写入地址相同时输出所述第一输入数据;以及
在所述第二指示指示所述读取地址与所述第二写入地址相同时输出所述第二输入数据;以及
第二复用器,被配置为:
在所述第三时钟周期期间接收从存储器读取的所述数据、所述第一复用器的输出和所述第一指示;以及
在所述第三时钟周期期间:
在所述第一指示指示所述读取地址不与所述第一写入地址或者所述第二写入地址相同时输出从存储器读取的所述数据;以及
在所述第一指示指示所述读取地址与所述第一写入地址或者所述第二写入地址相同时输出所述第一复用器的所述输出。
7.根据权利要求1所述的存储器电路,其中所述多个寄存器、所述存储器、所述比较器电路和所述选择电路都被实施在可编程逻辑器件的专用硬逻辑中。
8.根据权利要求1所述的存储器电路,其中:
所述比较器电路还被配置为确定相干性是否被启用以及相干性是否为一级流水线化或者两级流水线化而被启用;以及
所述选择电路被配置为在所述第三时钟周期期间输出输入的所述第二数据、输入的所述第一数据和从存储器读取的所述数据之一,其中:
在所述比较器电路确定相干性为两级流水线化而被启用并且所述读取地址与所述第二写入地址相同时输出输入的所述第二数据;以及
在所述比较器电路确定(i)相干性为两级流水线化而被启用并且所述读取地址与所述第一写入地址而不是所述第二写入地址相同或者(ii)相干性为一级流水线化而被启用并且所述读取地址与所述第一写入地址相同时输出输入的所述第一数据。
9.根据权利要求8所述的存储器电路,其中所述比较器电路包括:
第一比较器,被配置为在所述第二时钟周期期间生成所述读取地址是否与所述第一写入地址相同的第一指示;
第二比较器,被配置为在所述第二时钟周期期间生成所述读取地址是否与所述第二写入地址相同的第二指示;
第一逻辑门,被配置为对所述第一指示和所述第二指示执行逻辑OR运算以在所述第二时钟周期期间生成指示所述读取地址是否与所述第一写入地址或者所述第二写入地址相同的第三指示;
第二逻辑门,被配置为对所述第三指示和指示相干性是否被启用的第一配置信号执行逻辑AND运算;以及
第三逻辑门,被配置为对所述第二指示和指示相干性是否为一级流水线化或者两级流水线化而被启用的第二配置信号执行逻辑AND运算。
10.根据权利要求9所述的存储器电路,其中所述选择电路包括:复用器,被配置为:
在所述第二时钟周期和所述第三时钟周期二者期间接收从存储器读取的所述数据;
接收指示是否将存储器输出流水线化的第三配置信号;以及
基于所述第三配置信号在所述第二时钟周期和所述第三时钟周期之一期间输出从存储器读取的所述数据。
11.根据权利要求10所述的存储器电路,还包括:可配置逻辑,被配置为基于用户设置生成所述第一配置信号、所述第二配置信号和所述第三配置信号。
12.一种包括用于维持存储器访问相干性的存储器电路的系统,所述存储器电路包括:
流水线寄存器,耦合到输入数据寄存器并且被配置为存储所述输入数据寄存器的输出;
第一复用器,耦合到所述输入数据寄存器和所述流水线寄存器;
第二复用器,耦合到所述第一复用器和存储器输出寄存器;
第一比较器,耦合到读取地址寄存器并且被配置为比较所述读取地址寄存器的输出与传入写入地址;以及
第二比较器,耦合到所述读取地址寄存器和写入地址寄存器并且被配置为比较所述读取地址寄存器的所述输出与所述写入地址寄存器的输出;
其中所述第一复用器被配置为基于所述第一比较器的输出提供所述输入数据寄存器的所述输出和所述流水线寄存器的输出之一;以及
其中所述第二复用器被配置为基于所述第一比较器和所述第二比较器的输出提供所述存储器输出寄存器的输出和所述第一复用器的输出之一。
13.根据权利要求12所述的系统,其中所述存储器电路还包括:
第一比较器寄存器,耦合到所述第一比较器并且被配置为存储所述第一比较器的所述输出;以及
第二比较器寄存器,耦合到所述第二比较器并且被配置为存储所述第二比较器的所述输出。
14.根据权利要求13所述的系统,其中所述存储器电路还包括:
存储器,耦合到所述输入数据寄存器、所述写入地址寄存器、所述读取地址寄存器和所述存储器输出寄存器;
其中所述存储器被配置为在由所述写入地址寄存器的所述输出指定的存储器位置处存储所述输入数据寄存器的所述输出,并且向所述存储器输出寄存器输出从由所述读取地址的所述输出指定的存储器位置读取的数据。
15.根据权利要求14所述的系统,还包括:
多个输入流水线寄存器,耦合到所述写入地址寄存器并且被配置为将所述读取地址寄存器的输入流水线化;以及
处理电路,耦合到所述存储器电路并且被配置为处理所述第二复用器的输出;
其中所述输入数据寄存器被配置为接收所述处理电路的输出。
16.根据权利要求15所述的系统,其中所述多个输入流水线寄存器被配置为将所述读取地址寄存器的所述输入流水线化两个时钟周期。
17.根据权利要求15所述的系统,还包括:
转发电路,耦合到所述处理电路;以及
多个输出流水线寄存器,被配置为:
存储所述第二复用器的所述输出和所述处理电路的所述输出;
向所述转发电路提供所述第二复用器的所述输出;以及
向所述输入数据寄存器提供所述处理电路的所述输出;
其中所述转发电路被配置为在任何给定的时钟周期期间基于一个或者多个附加比较器的输出向所述处理电路提供所述第二复用器的存储的所述输出、所述处理电路的存储的所述输出和所述处理电路的一次延迟的存储的输出之一。
18.根据权利要求15所述的系统,其中在可编程逻辑器件的硬逻辑中实施所述存储器电路,并且其中在所述可编程逻辑器件的软逻辑中实施所述多个输入流水线寄存器和所述处理电路。
19.一种用于维持存储器访问相干性的方法,所述方法包括:
在第一时钟周期期间存储读取地址、第一写入地址和第一输入数据;以及
在第二时钟周期期间存储第二写入地址和第二输入数据;
在所述第二时钟周期期间从在与所述读取地址对应的存储器位置处的存储器读取数据;
在所述第二时钟周期期间在与所述第一写入地址对应的存储器位置处写入所述第一输入数据;
使用比较器电路来确定所述读取地址是否与所述第一写入地址或者所述第二写入地址相同;以及
在第三时钟周期期间:
在所述读取地址与所述第二写入地址相同时输出输入的所述第二数据;
在所述读取地址与所述第一写入地址而不是所述第二写入地址相同时输出输入的所述第一数据;以及
在所述读取地址不与所述第一写入地址或者所述第二写入地址相同时输出从存储器读取的所述数据。
20.根据权利要求19所述的方法,还包括:
向所述存储器的每个物理存储器位置分配多个逻辑存储器位置;
接收用于向给定的逻辑存储器位置写入的请求;
将所述给定的逻辑存储器位置映射到它的对应物理存储器位置,其中所述读取地址是映射的所述物理存储器位置;
确定所述读取地址与所述第二写入地址相同并且输出输入的所述第二数据;
修改与所述给定的逻辑存储器位置对应的输入的所述第二数据的位;以及
向存储器写入修改的输入的所述第二数据,其中所述写入地址是映射的所述物理存储器位置。
21.根据权利要求19所述的方法,还包括NxRxW个比较器和转发路径,其中N是与希望的流水线化级对应的整数,R是与所述存储器的读取端口的数目对应的整数,并且W是与所述存储器的写入端口的数目对应的整数。
22.根据权利要求21所述的方法,其中N是用户可配置的值。
CN201510706403.2A 2014-10-28 2015-10-27 用于维持嵌入式存储器块中的存储器访问相干性的系统和方法 Active CN105549899B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/526,007 US9558796B2 (en) 2014-10-28 2014-10-28 Systems and methods for maintaining memory access coherency in embedded memory blocks
US14/526,007 2014-10-28

Publications (2)

Publication Number Publication Date
CN105549899A true CN105549899A (zh) 2016-05-04
CN105549899B CN105549899B (zh) 2018-11-13

Family

ID=55792487

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510706403.2A Active CN105549899B (zh) 2014-10-28 2015-10-27 用于维持嵌入式存储器块中的存储器访问相干性的系统和方法

Country Status (2)

Country Link
US (1) US9558796B2 (zh)
CN (1) CN105549899B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016207033A (ja) * 2015-04-24 2016-12-08 株式会社東芝 情報記憶システムおよび情報記憶装置
CN106557477B (zh) * 2015-09-24 2020-05-19 伊姆西Ip控股有限责任公司 在存储器中锁定文件的方法和设备
CN111258634B (zh) * 2018-11-30 2022-11-22 上海寒武纪信息科技有限公司 数据选择装置、数据处理方法、芯片及电子设备
CN112035400B (zh) * 2020-09-08 2024-06-04 福州大学 一种基于fpga的跨步访问数据流检测电路及方法
US11960744B2 (en) 2021-02-01 2024-04-16 Micron Technology, Inc. Register operation in memory devices

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101561754A (zh) * 2008-03-31 2009-10-21 英特尔公司 免划分的多插槽存储器系统架构
CN101861571A (zh) * 2007-11-15 2010-10-13 美光科技公司 用于修改存储器存取次序的系统、设备及方法
CN103026351A (zh) * 2010-07-27 2013-04-03 飞思卡尔半导体公司 降低处理器延迟的装置和方法
US20140223111A1 (en) * 2013-02-01 2014-08-07 International Business Machines Corporation Managing out-of-order memory command execution from multiple queues while maintaining data coherency

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9158715B1 (en) * 2012-02-24 2015-10-13 Marvell Israel (M.I.S.L) Ltd. Multi-input memory command prioritization

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101861571A (zh) * 2007-11-15 2010-10-13 美光科技公司 用于修改存储器存取次序的系统、设备及方法
CN101561754A (zh) * 2008-03-31 2009-10-21 英特尔公司 免划分的多插槽存储器系统架构
CN103026351A (zh) * 2010-07-27 2013-04-03 飞思卡尔半导体公司 降低处理器延迟的装置和方法
US20140223111A1 (en) * 2013-02-01 2014-08-07 International Business Machines Corporation Managing out-of-order memory command execution from multiple queues while maintaining data coherency

Also Published As

Publication number Publication date
CN105549899B (zh) 2018-11-13
US20160118089A1 (en) 2016-04-28
US9558796B2 (en) 2017-01-31

Similar Documents

Publication Publication Date Title
US11327713B2 (en) Computation units for functions based on lookup tables
CN105549899A (zh) 用于维持嵌入式存储器块中的存储器访问相干性的系统和方法
US20200159692A1 (en) Configuration unload of a reconfigurable data processor
US20060150044A1 (en) On-chip data transmission control apparatus and method
US9342478B2 (en) Processor with reconfigurable architecture including a token network simulating processing of processing elements
US20230195348A1 (en) Method of organizing a programmable atomic unit instruction memory
US7352205B2 (en) Reconfigurable switching device parallel calculation of any particular algorithms
US11693663B2 (en) Circular queue management with split indexes
JP2017038247A (ja) 再構成可能な半導体装置
WO2021102000A1 (en) Look-up table with input offsetting
US11868300B2 (en) Deferred communications over a synchronous interface
US8161435B2 (en) Reset mechanism conversion
US20230244748A1 (en) Matrix Multiplication on Coarse-grained Computing Grids
CN106933510B (zh) 一种存储控制器
US6523153B1 (en) Method of design verification for integrated circuit system and method for generating interface model for design verification
US8904334B2 (en) Footprint-based optimization performed simultaneously with other steps
US9478272B1 (en) Configurable storage blocks with embedded first-in first-out and last-in first-out circuitry
JP5231949B2 (ja) 半導体装置、および、半導体装置によるデータ処理方法
US10505704B1 (en) Data uploading to asynchronous circuitry using circular buffer control
CN103970181A (zh) 固定频率时钟源的时钟频率调制的方法
US10074409B2 (en) Configurable storage blocks having simple first-in first-out enabling circuitry
CN117795496A (zh) 可重新配置计算组构中的并行矩阵运算
CN103970180A (zh) 固定频率时钟源的时钟频率调制的方法
US20210288650A1 (en) Semiconductor device and circuit layout method
Specification Virtex-5 Family Overview

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant