CN105097005B - 存储器矩阵 - Google Patents
存储器矩阵 Download PDFInfo
- Publication number
- CN105097005B CN105097005B CN201510096445.9A CN201510096445A CN105097005B CN 105097005 B CN105097005 B CN 105097005B CN 201510096445 A CN201510096445 A CN 201510096445A CN 105097005 B CN105097005 B CN 105097005B
- Authority
- CN
- China
- Prior art keywords
- mux
- multiplexer
- cell array
- cascade
- memory cell
- 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.)
- Active
Links
Classifications
-
- 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
Landscapes
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Logic Circuits (AREA)
Abstract
一种集成电路包括存储器矩阵,其包含:第一存储器单元阵列;第一多路复用器(MUX),其耦合到所述第一存储器单元阵列的输入;第二MUX,其耦合到所述第一存储器单元阵列的输出;第二存储器单元阵列;第三MUX,其耦合到所述第二存储器单元阵列的输入;及第四MUX,其耦合到所述第二存储器单元阵列的输出。所述第二MUX耦合到所述第四MUX。所述第四MUX经配置以传送以下各项中的选定一者:(1)来自所述第三MUX的输出,(2)来自所述第二存储器单元阵列的输出,或(3)来自所述第二MUX的输出。
Description
技术领域
本发明涉及集成电路(IC)中的存储器单元。
背景技术
在许多集成电路设计中,需要具有尽可能多的可用存储器。目前,例如现场可编程门阵列(FPGA)的可编程IC例如可具有约50的存储器。然而,随着技术进步,存储器的此量可为不充分的,从而在IC可提供的存储器的量与某些应用程序可需要的存储器的量之间产生差距。举例来说,网路可具有高达每秒400千兆位的线速率。因此,单个毫秒的网络流量含有400兆位的数据。
在一些情况下,存储器的量可通过增加IC上的存储器单元的数目来增加。然而,较多存储器单元占据较多面积,且在许多IC设计中面积为有限的。因此,需要提供在IC中最大化可用存储器的其它技术。
发明内容
第一示范性集成电路包括存储器矩阵,其包含:第一存储器单元阵列;第一多路复用器(MUX),其耦合到所述第一存储器单元阵列的输入;第二MUX,其耦合到所述第一存储器单元阵列的输出;第二存储器单元阵列;第三MUX,其耦合到所述第二存储器单元阵列的输入;及第四MUX,其耦合到所述第二存储器单元阵列的输出。所述第二MUX耦合到所述第四MUX。所述第四MUX经配置以传送以下各项中的选定一者:(1)来自所述第三MUX的输出,(2)来自所述第二存储器单元阵列的输出,或(3)来自所述第二MUX的输出。
第二示范性集成电路包括存储器矩阵,其包含:第一存储器单元阵列;第一MUX,其耦合到所述第一存储器单元阵列的输入;第二MUX,其耦合到所述第一存储器单元阵列的输出;第二存储器单元阵列;第三MUX,其耦合到所述第二存储器单元阵列的输入;及第四MUX,其耦合到所述第二存储器单元阵列的输出。所述第一MUX经耦合以提供输出到所述第三MUX;及所述第二MUX经耦合以提供输出到所述第四MUX。
将通过阅读以下详细描述而显而易见其它方面及特征。
附图说明
图式说明了示范性电路的设计及效用,其中类似的元件用共同的参考标号来指代。这些附图未必按比例绘制。为了更好地了解获得上文所述的以及其它优点及目标的方式,将呈现对实例的更加具体描述,所述实例在附图中示出。这些图式仅描绘示范性结构,且因此不应被视为限制权利要求书的范围。
图1说明存储器矩阵。
图2说明含有布置成多个列的多个块RAM的存储器矩阵。
图3说明具有恒定读取时延的存储器矩阵。
图4说明具有管线化的存储器矩阵。
图5A说明用于块RAM的级联配置。
图5B说明使用图5A中说明的配置而级联在一起的多个块RAM。
图5C及5D说明在操作中的图5B的级联的实例。
图6A说明用于块RAM的替代级联配置。
图6B说明使用图6A中说明的配置而级联在一起的多个块RAM。
图7说明具有嵌入式地址解码器的块RAM。
图8说明双泵浦单端口存储器矩阵。
图9说明含有双泵浦存储器矩阵的FPGA的时钟周期。
图10说明具有ECC的双泵浦存储器矩阵。
具体实施方式
下文将参考图式描述各种特征。应注意,各图并非按比例绘制,且具有类似结构或功能的元件贯穿各图由相同的参考标号来表示。应注意,各图仅意图便于特征的描述。它们并不意图作为所主张的发明的详尽的描述或作为对所主张的发明的范围的限制。此外,所说明的实例不需要具有所示的所有方面或优点。结合特定实例描述的方面或优点未必限于所述实例,且可在任何其它实例中实践,即使并未如此说明或并未明确描述。而且,遍及本说明书所提及的“一些实施例”或“其它实施例”意味着与实施例一起描述的特定特征、结构、材料或特性包含在至少一个实施例中。因此,短语“在一些实施例中”或“在其它实施例中”遍及本说明书在各处的出现未必是指同一实施例或相同实施例。
图1说明示范性存储器矩阵100。在一些实施例中,存储器矩阵100为SRAM(静态随机存取存储器)存储块的矩阵(例如,多个SRAM列及行)。在其它实施例中,存储器矩阵100可为其它类型的存储块的矩阵。存储器矩阵100为集成电路的一部分,例如FPGA。存储器矩阵100具有输入总线103及输出总线104。因此,从用户的观点来看,存储器矩阵100可呈现为单个大的深层逻辑SRAM或深层结构SRAM。
输入总线103可包括用于接收读取命令的读取地址及控制总线106、用于接收写入命令的写入地址及控制总线108,及用于接收将响应于在写入地址及控制总线108处接收的写入命令而实际上写入到存储器矩阵100上的数据的写入数据总线110。
输出总线104可包括用于响应于在读取地址及控制总线106处接收的读取命令而用于从存储器矩阵100读取数据的读取数据总线112。另外,输出总线104还可含有错误校正码(ECC)总线114。在一些实施例中,输出总线104包括用于读取数据的64位及用于ECC状态信息的8位。
如图2中所说明,存储器矩阵100包括多个存储器单元阵列202(下文的块RAM202),其为用于存储器矩阵100的存储器构建块。块RAM 202(或存储器单元阵列)可指任何类型的存储器单元阵列。举例来说,存储器矩阵100中的每一块RAM 202可为4K×72b SRAM阵列。构成存储器矩阵100的块RAM 202布置成一个或一个以上列204。为便于说明,垂直或列可指平行于FPGA上的门方向的方向,而水平或行可指垂直于FPGA上的门方向的方向。然而,应理解,术语“垂直”、“列”、“水平”及“行”可任意定义,且可指任何方向。举例来说,在其它实施例中,垂直或列可指垂直于FPGA上的门方向的方向,而水平或行可指平行于FPGA上的门方向的方向。
在图2的存储器矩阵中,每一列204含有包括一组晶体管及线的嵌入式级联,所述线将所述列204的块RAM 202缝合在一起以形成深层逻辑SRAM。嵌入式级联可在FPGA内硬接线作为专用总线布线,且不消耗FPGA的可编程互连结构中的任一者。换句话说,级联的组件并非FPGA的可编程互连结构的部分。举例来说,嵌入式级联可将对应于输入及输出总线103及104的大小的大量位(例如,72位)布线为由单个控制位控制。因此,与使用FPGA的可编程结构互连资源来连接构成列204的块RAM 202相比,每一列204消耗较少面积。然而,在其它实施例中,级联的一或多个组件可使用FPGA的可编程互连结构来实施。
对于列204中的每一块RAM 202,嵌入式级联用以确定块RAM 202所接收的输入是来自FPGA结构还是来自列204中的先前块RAM 202。另外,通过嵌入式级联确定块RAM 202是否产生其自身的输出且将所述输出推送到级联中,或实际上传播来自级联中的先前块RAM202的数据。在一些实施例中,这些确定可使用位于嵌入式级联中的一或多个多路复用器(MUX)来进行。在一些情况下,MUX实施在紧挨着块RAM 202的FPGA中,且在FPGA的可编程结构外部。将在下文进一步详细描述包含MUX的嵌入式级联的架构。
而且,在一些实施例中,个别列204经由结构互连且不经由嵌入式级联而连接在一起。这允许存储器单元放置的灵活性。举例来说,如图2中所说明,可包含查找表(LUT)或可配置逻辑块(CLB)的额外元件206可位于存储器矩阵100的列204之间。
恒定读取时延
为了有效地起作用,存储器矩阵100经配置以具有恒定读取时延而不管从其读取的存储器的地址。读取时延指从发布读取地址及读取启用命令到存储器矩阵100到从存储器矩阵100输出读取数据的时钟循环的数目。当存储器矩阵100具有恒定的读取时延时,所述读取时延为相同的,而不管存储器矩阵100内的从其读取所述读取数据的读取地址。另外,在一个时钟循环期间写入到存储器矩阵100中的地址中的任何数据能够在下一时钟循环中读取回。
图3说明存储器矩阵100,特定展示具有恒定读取时延的存储器矩阵100。存储器矩阵100含有多个块RAM 202(例如,块RAM 202A及202B),所述块具有可将数据写入到且从其读取的地址。举例来说,为了写入到块RAM 202A,沿着输入线304A发送写入命令及地址连同写入数据。为了从块RAM 202A读取数据,沿着输入线304A发送读取命令及地址,及使用输出线306A输出读取数据。类似地,可使用输入线304B将数据写入到块RAM 202B及使用输出线306B从块RAM 202B读取数据。
为了实现恒定的读取时延,输入及输出线的总延迟应为相同的,而不管存储器矩阵100中的被存取的块RAM 202的位置。举例来说,如果304A及306A上的延迟与304B及306B上的延迟相同,那么块RAM 202A及块RAM 202B将具有相同读取时延。因为线的延迟与线的长度成正比,所以输入总线103及输出总线104可位于存储器矩阵100的相对拐角上,使得输入及输出线的总延迟将与存储器矩阵100的周长的一半成正比。因此,应在输入及输出总线103及104中使用一致管线化,以便确保水平运行线上的延迟将相对恒定。同时,来自垂直运行线(即,每一列204中的嵌入式级联)的垂直方向的延迟将由于存储器矩阵100中的每一列204具有相同架构而匹配。在其它实施例中,输入及输出总线103及104可位于存储器矩阵100的其它部分上,只要使总水平延迟及总垂直延迟相对恒定即可,而不管从其读取的地址。
应理解,对于存储器矩阵100中的不同地址,写入时延(从发布写入地址启用命令及数据到存储器矩阵100到将所述数据写入到指定地址的存储器单元之时的时钟循环的数目)可为不同的。举例来说,虽然输入及输出线304A及306A一起的总延迟可与输入及输出线304B及306B一起的总延迟相同(因此实现恒定的读取时延),但输入线304A的延迟可不同于输入线304B的延迟。然而,通常不需要恒定的写入时延,这是因为写入到块RAM 202中的数据直到接收到读取请求才观测到。只要存在恒定的读取时延且最长的写入时延并不比所述读取时延差,即维持一致性以使得在写入到特定地址之后的读取到所述相同地址将读取经写入的数据,且所述读取数据将按其经请求的相同次序来接收。
管线化及级联
在一些实施例中,用户可将存储器矩阵100的列204划分为多个管线级。举例来说,图4说明划分成两个单独存储器矩阵100A及100B的存储器矩阵100。因此,存储器矩阵100的列204划分成两个单独级联,开始于块RAM 202C的第一级联及开始于块RAM 202D的第二级联。在其它实施例中,存储器矩阵100的列204可划分成两个以上单独级联。
在一些实施例中,可基于存储器矩阵100运行的速度来进行将存储器矩阵100管线化成多个存储器矩阵。举例来说,如果存储器矩阵100在使得每一时钟循环运行总共四个块RAM 202的时钟速率下运行,那么存储器矩阵100的每一列204可划分成多个级,每一级含有四个块RAM 202的级联。在其它实施例中,可基于用户所选择的任何其它准则来进行将存储器矩阵100管线化成多个存储器矩阵。
为了允许用户定义的管线化及级联,列204中的每一块RAM(存储器单元阵列)202与触发器所控制的一或多个MUX相关联,所述触发器指定所述块RAM 202是否为级联中的第一块RAM。如果块RAM 202为其级联中的第一块RAM,那么其从FPGA互连结构接收其输入数据(读取/写入命令、地址、写入数据等)。然而,如果块RAM 202并非其级联中的第一块RAM,那么其实际上从所述级联接收其输入数据。
图5A说明用于块RAM(存储器单元阵列)202的示范性级联配置。图5B说明作为使用图5A中所说明的配置级联在一起的列204的一部分的多个块RAM 202。虽然图5B展示三个块RAM 202-1、202-2及202-3,但应理解许多块RAM 202可为列204的部分。在这些图中,每一线可为输入及输出总线103及104的全宽度(例如,72位)。
在所说明实例中,级联中的每一块RAM 202(例如,块RAM 202-1/202-2/202-3)与相应第一路由MUX 502(例如,路由MUX 502-1/502-2/502-3)、第二路由MUX 505(例如,路由MUX 505-1/505-2/505-3)及读取/写入(R/W)级联MUX 504(例如,R/W级联MUX 504-1/504-2/504-3)相关联。在使用期间,级联级的块RAM 202可接收输入数据506(例如,输入数据506-1/506-2/506-3)。而且,在使用期间,R/W级联MUX 504及路由MUX 505可一起操作以将输出508(例如,输出508-1/508-2/508-3)级联到下一级联级(其包含下一块RAM 202)。在一些实施例中,块RAM 202的输出可连接到FPGA结构中的输出总线,所述FPGA结构可经配置以经由FPGA位流来接受输出(例如,如果块RAM 202为所述级联的最后级),或忽略输出(例如,如果块RAM 202并非所述级联的最后级)。
如图5B中所示,R/W级联MUX 504-1经由路由MUX 505-2耦合到R/W级联MUX 504-2,及R/W级联MUX 504-2经由路由MUX 505-3耦合到R/W级联MUX 504-3。
当块RAM 202接收输入506时,块RAM 202检查含于所述输入内的地址是否匹配块RAM 202的地址,以便确定是否对块RAM 202进行任何动作。在一些实施例中,使用嵌入式地址解码器(下文描述其实例)来检查地址。
在一些实施例中,每一路由MUX 502为2:1MUX,且经配置以确定用于块RAM 202的输入506。当块RAM 202为级联的开始时,其经由输入总线103(图3中展示)接收来自FPGA互连结构的其输入数据(例如,输入数据102-1/102-2/102-3)。然而,如果块RAM 202并非级联的开始,那么其接收先前级联级(含有所述级联中的先前块RAM 202)的级联输出508作为输入。
每一路由MUX 505还可为2:1MUX。当块RAM 202为级联的开始时,路由MUX 505将输入数据102(经由506)传送到R/W级联MUX 504。然而,如果块RAM 202并非级联的开始,那么路由MUX 505将来自所述级联的先前级的输出数据传送到R/W级联MUX 504。
因此,用户能够通过配置路由MUX 502及505的选择控制输入来配置列204中的级联。一旦在路由阶段期间经配置,路由MUX 502及505的选择控制输入可保持恒定(例如,如果特定块RAM 202为级联的开始,那么其相关联路由MUX 502总是选择来自输入总线103的数据)。
在所说明实例中,R/W级联MUX 504经配置以确定将传送到下游的级联输出508。R/W级联MUX 504可为2:1MUX,且可经配置以接收其相关联块RAM 202的读取数据作为输入(1),或路由MUX 505的输出数据作为输入(2)。在一些实施例中,R/W级联MUX 504的数据输出可通过所接收命令的类型(读取或写入)以及其相关联的块RAM 202是否为所述命令的目标(例如,块RAM 202的地址是否匹配命令中指定的地址)来确定。在下文表1中说明用于R/W级联MUX 504的示范性功能:
命令类型 | 地址匹配? | MUX 504的选择 |
写入 | 是/否 | 来自MUX 505的级联数据 |
读取 | 否 | 来自MUX 505的级联数据 |
读取 | 是 | 来自块RAM 202的读取数据 |
表1
举例来说,如果输入命令102为写入请求,那么R/W级联MUX 504将选择路由MUX505所输出的数据。因此,在级联的第一级接收的写入命令经级联到所述级联中的所有块RAM 202。如果输入命令102为读取请求,但与R/W级联MUX 504相关联的块RAM 202并非所述命令的目标(例如,地址不匹配),那么R/W级联MUX 504将同样选择路由MUX 505所输出的数据。然而,如果输入命令102为读取请求,及与R/W级联MUX 504相关联的块RAM 202为所述命令的目标,那么R/W级联MUX 504将选择块RAM 202的读取数据输出,使得其可经级联到所述输出。
在一些实施例中,在级联的给定级的R/W级联MUX 504可经配置以将(1)来自级联的所述级的路由MUX 502的输出506(例如,经由所述级的路由MUX 505接收,或直接来自所述级的路由MUX 502)传送到下游,(2)来自级联的所述级的块RAM 202的输出传送到下游,或(3)来自级联的先前级的R/W级联MUX 504的输出(例如,经由当前级的路由MUX 505接收,或直接来自先前级的R/W级联MUX 504)传送到下游。举例来说,在一些实施例中,在级联的给定级的R/W级联MUX 504可接收来自在级联的所述级的块RAM 202的输出,以及来自在级联的所述级的路由MUX 502的输出506(经由所述级的路由MUX 505接收或直接来自路由MUX502),且选择这些输出中的一者用于传送到下游。作为另一实例,在一些实施例中,在级联的给定级的R/W级联MUX 504可接收来自在级联的所述级的块RAM 202的输出以及来自在先前级的R/W级联MUX 504的输出508(经由在当前级的路由MUX 505接收,或直接来自在先前级的R/W级联MUX 504),且选择这些输出中的一者用于传送到下游。在其它实例中,可省略在给定级的路由MUX 505,及在级联的给定级的R/W级联MUX 504可接收来自在级联的所述级的块RAM 202的输出,及来自在级联的所述级的路由MUX 502的输出506,及来自在先前级的R/W级联MUX 504的输出508,且选择这些输出中的一者用于传送到下游。
在其它实施例中,R/W级联MUX 504可为3:1MUX、4:1MUX或其它类型的MUX中的任一者。在一些实施例中,R/W级联MUX 504可与路由MUX 505组合作为单个MUX。举例来说,单个3:1MUX可用以实施R/W级联MUX 504及路由MUX 505两者。在其它实施例中,R/W级联MUX 504及路由MUX 505可被视为MUX的组件,所述MUX包含R/W级联MUX 504及路由MUX 505。因此,如本说明书中所使用,术语“MUX”或类似术语可指一或多个MUX。
图5C及5D说明在操作中的5B的级联的实例。图5C说明发布到块RAM 202-3的写入命令,其中级联的开始为块RAM 202-1。在级联的开始通过MUX 502-1接收输入数据102-1,其包括指定对应于块RAM 202-3的写入地址的写入命令以及写入数据。块RAM 202-1为所述级联的开始,因此MUX 502-1传送通过输入数据102-1作为506-1,所述数据由块RAM 202-1及路由MUX 505-1接收。
路由MUX 505-1及R/W级联MUX 504-1将传送写入命令及写入数据作为数据508-1到级联的第二级的MUX 502-2及505-2。因为块RAM 202-2并非级联的开始,所以MUX 502-2传送通过级联数据508-1作为输入数据506-2。另外,MUX 505-2及504-2将数据508-1级联到级联的下一级,以此类推,使得用于级联的每一级的块RAM 202(不管地址如何)接收写入命令及写入数据。
因为块RAM 202-1地址不匹配写入命令所指定的地址,所以未将写入数据写入到块RAM 202-1中。类似地,因为块RAM 202-2的地址不匹配写入命令所指定的地址,所以未将写入数据写入到块RAM 202-2中。然而,因为块RAM 202-3的地址匹配写入命令中指定的地址,所以将写入数据写入到块RAM 202-3中。
应理解,图5C不展示MUX 502、504、505的所有输入及输出,及图5C仅展示传送到下游的信号中的一些用于说明性目的。
图5D说明发布到块RAM 202-2的读取命令的实例,其中级联的开始为块RAM 202-1。指定读取地址的读取命令(输入数据)102-1在MXU 502-1处接收且由MUX 502-1传送到路由MUX 505-1作为数据506-1。因为块RAM 202-1的地址不匹配读取命令中指定的地址,所以未从块RAM 202-1读取数据,及路由MUX 505-1将含有读取命令的数据506-1传送到级联的下一级(经由R/W级联MUX 504-1)。所述读取命令接着级联的下一级的MUX 502-2接收,且传送到块RAM 202-2。因为块RAM 202-2的地址匹配读取命令所指定的地址,所以从块RAM 202读取数据且将所述数据传送到RA/V级联MUX 504-2,其将数据(用输出508-2表示)级联到所述级联的下一级。级联的后续级将持续级联读取数据(例如,作为数据508-3等等),这是因为所述数据的相关联块RAM 202的地址不匹配读取命令中指定的地址。
应理解,图5D未展示MUX 502、504、505的所有输入及输出,及图5D仅展示传送到下游的信号中的仅一些用于说明性目的。
图6A说明用于作为列204的一部分的多个块RAM(存储器单元阵列)202的替代级联配置。图6B说明作为使用图6A中说明的配置级联在一起的列204的一部分的多个块RAM202。与图5A的实例不同,将写入数据及读取数据分开地级联。因此,每一块RAM 202与输入(或写入)级联MUX 602以及输出(或读取)级联MUX 604相关联。
输入级联MUX 602(例如,输入级联MUX 602-1/602-2/602-3)为2:1MUX,且经配置以确定用于相应块RAM 202(例如,块RAM 202-1/202-2/202-3)的输入606(例如,输入606-1/606-2/606-3)。当块RAM 202为级联的开始时,其经由总线103(图3中展示)接收来自FPGA互连结构的其输入数据(例如,输入数据102-1/102-2/102-3)。然而,如果块RAM 202并非级联的开始,那么其接收级联中的先前块RAM 202的级联输入作为输入。在所说明的实例中,块RAM 202-1为级联次序中的第一个。因此,MUX 602-1经配置以接收来自FPGA互连结构(经由图3的总线)的输入102-1,及将此类输入作为输入606-1传送到块RAM 202-1。在另一实例中,块RAM 202-2可经配置为级联的次序中的第一者。因此,在此实例中,MUX 602-2可经配置以接收来自FPGA互连结构(经由图3的总线)的输入102-2,及将此类输入作为输入606-2传送到块RAM 202-2。
因此,用户能够通过配置用于相应块RAM 202的输入级联MUX 602来配置列204中的级联。举例来说,如图6B中所说明,如果块RAM 202-1为级联中的第一块RAM,那么其接收来自所述结构的输入数据102-1作为其输入606-1,所述输入可为读取命令或写入命令。接着经由相应输入级联MUX(602-2及602-3)将所述命令级联到级联中的剩余块RAM 202(例如,块RAM 202-2及202-3)。
输出级联MUX 604(例如,输出级联MUX 604-1/604-2/604-3)为2:1MUX,其用以选择(1)块RAM 202的读取输出或(2)来自级联的先前级的级联读取输出中的任一者用于传送到下游。输出级联MUX 604的选择可基于其相关联块RAM 202的地址是否匹配输入命令中指定的地址。举例来说,如果命令为块RAM 202-2的读取命令,那么输出级联MUX 604-2将块RAM 202-2的读取数据作为级联输出608-2来传送,所述数据接着经由级联的剩余级经级联为输出。用于其它级(例如,输出级联MUX 604-1、604-3等)的输出级联MUX 604将传送来自级联的先前级的数据(例如,由于块RAM 202-1、202-3的地址不匹配命令的地址)。
图6A中说明的配置具有优于图5A的配置的若干优点。首先,在图5A中说明的配置中,对于每一级联级,用于数据508的级联线可需要从列204的一侧延伸到另一侧。另一方面,图6的配置能够具有较少水平级联线,这是因为所述输入级联可全部在列204的一侧上,且输出级联可全部在列204的相对侧上,其中不需要线在列204的宽度上交叉。此可为有利的,这是因为其减少了实施级联所需的水平布线的数量,其可减少嵌入式级联所消耗的FPGA的面积。另外,因为具有两个单独级联(输入级联及输出级联),所以可针对每一者独立地调谐时钟以便改进或最大化性能。然而,在FPGA具有垂直线拥塞大于水平线拥塞的一些实施例中,图5中说明的结构可由于其具有较少垂直级联线而优选。举例来说,图5中说明的FPGA可需要两个水平总线(例如,72位总线)及一个垂直总线,但图6中说明的实例可需要两个垂直总线及一个水平总线。因此,FPGA上的垂直线拥塞的量相对于水平线拥塞的量可用以确定使用哪个类型的配置。
地址解码器
在一些实施例中,嵌入式地址解码器可用以促进时序收敛。存储器矩阵100可含有许多块RAM 202,其中的每一者可含有许多存储器单元。嵌入式地址解码器可使用接收地址的一部分以识别存储器矩阵100的特定块RAM 202(例如,激活、接收特定命令等),而地址的剩余部分可用以选择激活块RAM 202内的特定存储器单元。
图7说明具有嵌入式地址解码器的块RAM 202。块RAM 202含有具有启动端口712的存储器单元阵列702。另外,块RAM 202包括嵌入式地址解码器704。
接收命令(输入)包括地址706。地址706可划分成第一地址部分708及第二地址部分710。在一些实施例中,第一地址部分708可包括地址706的高地址位,而第二地址部分710包括地址706的低地址位。
在一些实施例中,存储器矩阵100中的每一块RAM 202经指派一可静态编程RAMID。当接收地址706时,第一地址部分708可用以指定将接收命令的存储器矩阵中的块RAM202的ID。举例来说,如果特定存储器矩阵100含有64块RAM 202,那么第一地址部分708可包括至少6位,以便覆盖64个不同块RAM ID。在所说明实例中,地址解码器704接收第一地址部分708以确定块RAM 202是否将接收命令(例如,,比较第一地址部分708与RAM ID 714)。如果块RAM 202的ID匹配第一地址部分708的ID,那么激活块RAM 202。举例来说,在一些实施例中,地址解码器704发送两个位信号到启动端口712,其中两个位信号的第一位为启动位,及第二位指定读取或写入(例如,00信号意味着RAM 202未激活,10信号激活RAM 202用于写入,而11信号激活RAM 202用于读取)。
第二地址部分710对应于存储器单元阵列702内的地址。举例来说,如果存储器单元阵列702为具有4k输入项的SRAM,那么第一地址部分708需要至少12位用于输入项的总数。如果激活块RAM 202(由于匹配第一地址部分708所指定的ID),那么第二地址部分710可用以确定将存取的块RAM 202中的特定存储器单元。
在一些实施例中,多个块RAM 202可经编程以具有相同ID,从而允许数据被多播。此可在读取带宽超出写入带宽的一些实施例中使用,从而允许多个读取端口供单个写入端口使用。因此,来自写入端口的写入命令将数据写入到具有相同ID的多个块RAM 202,所述数据接着可由多个读取端口读取。
双泵
在上述实例中,存储器矩阵100具有一个读取/写入端口(一个输入总线103及一个输出总线104)。在一些实施例中,存储器矩阵100可运行的速度超出FPGA的速度(例如,存储器矩阵100可在1GHz下运行,而FPGA可在500MHz下运行)。因此,存储器矩阵100的时钟速度可比FPGA的时钟速度快。在此类情况下,存储器矩阵100可为“双泵浦”,使得其通过来自第一端口及第二端口的交替命令而如同用两个端口操作般表现。可进行此以节省FPGA上的面积,这是因为与具有两个单独较慢运行端口的存储器矩阵相比,具有单个双泵浦端口的存储器矩阵通常占据较少面积。
图8说明包含双泵浦单个端口存储器矩阵100的电路组件。存储器矩阵100经配置以接收从多个端口产生的命令(例如,来自第一端口802及第二端口804,其在基于FPGA时钟的速度的速率下产生命令)。电路还包含用于存储器矩阵100的时钟806,其经配置以提供时钟信号到输入时间MUX控制器808及输出时间MUX控制器810,所述控制器分别控制输入MUX812及多路分用器(deMUX)814及816。
输入MUX 812经配置以经由输入总线103选择来自端口802及804的命令由存储器矩阵100接收。响应于来自时钟806的控制MUX控制器808的时钟信号来执行通过输入MUX812进行的命令的选择。响应于经由输出总线104输出所接收命令来执行从存储器矩阵100读取数据。将输出传送到deMUX 814及816,其基于MUX控制器808、810(其控制是基于来自时钟806的时钟信号)进行的控制来控制数据是否分别到达端口802及804。存储器矩阵100因此能够交替地处理来自两端口802及804的命令。
图9说明含有双泵浦存储器矩阵100的FPGA的时钟循环。出于说明的目的,端口A用于指其命令首先由存储器矩阵100执行的端口,而端口B指其命令被第二执行的端口。FPGA时钟902的上升边缘910触发从端口A接收的命令904的接收。命令904可为读取命令或写入命令。在已接收命令904之后,接收来自端口B的命令906。因此,在一些实施例中,命令的执行是基于时钟902的上升边缘910,其中时钟902的下降边缘不起作用。应理解,虽然读取或写入命令可采用若干RAM时钟循环来执行,但可在每个RAM时钟循环接收新命令。
在一些实施例中,可在命令906的执行之后的FPGA时钟循环期间剩下时间(例如,FPGA时钟循环可超过RAM时钟循环的两倍长)。此额外时间量可用以实施额外的用户定义的组合逻辑(例如,端口A上的额外逻辑908a,及端口B上的额外逻辑908b)。在一些实施例中,额外逻辑可包括错误校正码(ECC)操作。举例来说,额外逻辑908b可用以编码待写入到存储器矩阵100上的ECC信息,而额外逻辑908a可用以读取及解码来自存储器矩阵100的ECC信息。
因此,对于每一FPGA时钟循环,可通过存储器矩阵100处理两个命令。这些命令可为读取命令、写入命令、或读取及写入命令两者的组合。举例来说,在给定FPGA时钟循环中,存储器矩阵100可处理一个读取命令及一个写入命令、两个读取命令、或两个写入命令。
在一些实施例中,除了处理读取及写入命令之外,存储器矩阵100可产生ECC状态信息。在一些实施例中,ECC信息经编码及写入到存储器矩阵100,且接着经读取及输出以经解码。图10说明具有ECC的双泵浦存储器矩阵100。因为来自端口A的命令被第一执行(例如,在时钟循环的上升边缘),所以在已执行端口A的命令之后存在一段时间以读取及解码ECC解码器1020处的ECC信息。
因为来自端口B的命令被第二执行(例如,在已执行来自端口A的命令之后),在执行来自端口B的命令之前的时间段可用以编码在ECC编码器1010处的待写入到存储器矩阵100的ECC信息。因此,在一些实施例中,ECC编码及解码能够通过使用端口B执行ECC编码及使用端口A执行ECC解码而配合到FPGA时钟循环中。在一些实施例中,ECC编码器1010及解码器1020经实施为存储器矩阵100的部分,而在其它实施例中,其可经实施为FPGA结构的部分。
在上述实例中,已参考FPGA上的存储器矩阵100来描述各种特征。然而,在其它实施例中,可提供本文所述的各种特征用于任何集成电路,所述集成电路可或不可为FPGA。举例来说,在其它实施例中,可提供本文所述的各种特征(例如,用于存储器矩阵、地址解码器、双泵特征等的级联配置)用于其它类型的处理器。此外,本文展示及描述的示范性存储器矩阵可包含在任何集成电路中,所述集成电路可为可编程的、不可编程的或可部分编程的。
虽然已展示及描述了特定实例,但是将理解其并非意图将所主张的本发明限于所说明实例,并且对于所属领域的技术人员而言将会显而易见的是可在不脱离所主张的本发明的精神及范围的情况下做出各种改变及修改。因此,本说明书及附图应在说明性意义上而非限制性意义上看待。所主张的本发明意图涵盖替代方案、修改及等效物。
Claims (10)
1.一种包括存储器矩阵的集成电路,其特征在于,所述存储器矩阵包括:
第一存储器单元阵列;
第一多路复用器,其耦合到所述第一存储器单元阵列的输入;
第二多路复用器,其耦合到所述第一存储器单元阵列的输出;
第二存储器单元阵列;
第三多路复用器,其耦合到所述第二存储器单元阵列的输入;及
第四多路复用器,其耦合到所述第二存储器单元阵列的输出且耦合到所述第三多路复用器;
其中所述第二多路复用器耦合到所述第四多路复用器,所述第四多路复用器经配置以传送以下各项中的选定一者:(1)来自所述第三多路复用器的输出,(2)来自所述第二存储器单元阵列的输出,或(3)来自所述第二多路复用器的输出。
2.根据权利要求1所述的集成电路,其特征在于,所述第一存储器单元阵列和所述第二存储器单元阵列形成级联配置,且其中所述第一存储器单元阵列为所述级联配置中根据次序的第一个存储器单元阵列。
3.根据权利要求1所述的集成电路,其特征在于,进一步包括:
输入总线及输出总线;
其中所述输入总线及所述输出总线位于所述存储器矩阵的相对侧上。
4.根据权利要求3所述的集成电路,其特征在于,所述输入总线经配置以经由输入多路复用器接收交替地来自第一端口及第二端口的命令。
5.根据权利要求4所述的集成电路,其特征在于,其中:
所述第一端口经配置以传送第一命令到所述输入多路复用器,及所述第二端口经配置以传送第二命令到所述输入多路复用器;及
所述第一命令是用于在时钟信号的上升边缘执行,及所述第二命令是用于在执行所述第一命令之后执行。
6.根据权利要求5所述的集成电路,其特征在于,其中:
所述第一命令是读取命令;及
所述第二命令是写入命令。
7.根据权利要求1所述的集成电路,其特征在于,所述存储器矩阵接收的读取命令的读取时延实质上是恒定的,不管所述读取命令的地址所指定的特定存储器单元阵列的位置如何。
8.根据权利要求1所述的集成电路,其特征在于,其中:
所述第三多路复用器是用户可配置的;及
所述第三多路复用器的配置确定所述第三多路复用器接收来自所述存储器矩阵的输入总线还是来自所述第二多路复用器的数据。
9.根据权利要求1所述的集成电路,其特征在于,所述第一存储器单元阵列包括静态随机存取存储器阵列。
10.根据权利要求1所述的集成电路,其特征在于,所述集成电路是现场可编程门阵列的一部分,且其中所述存储器矩阵的时钟速度比所述现场可编程门阵列的时钟速度快。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/278,244 | 2014-05-15 | ||
US14278244 | 2014-05-15 | ||
US14/278,244 US9083340B1 (en) | 2014-05-15 | 2014-05-15 | Memory matrix |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105097005A CN105097005A (zh) | 2015-11-25 |
CN105097005B true CN105097005B (zh) | 2019-03-01 |
Family
ID=53506852
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201520126233.6U Active CN204463835U (zh) | 2014-05-15 | 2015-03-04 | 存储器矩阵 |
CN201510096445.9A Active CN105097005B (zh) | 2014-05-15 | 2015-03-04 | 存储器矩阵 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201520126233.6U Active CN204463835U (zh) | 2014-05-15 | 2015-03-04 | 存储器矩阵 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9083340B1 (zh) |
CN (2) | CN204463835U (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9083340B1 (en) * | 2014-05-15 | 2015-07-14 | Xilinx, Inc. | Memory matrix |
US9666266B1 (en) | 2016-05-09 | 2017-05-30 | Xilinx, Inc. | Power control over memory cell arrays |
US11288220B2 (en) * | 2019-10-18 | 2022-03-29 | Achronix Semiconductor Corporation | Cascade communications between FPGA tiles |
CN116860181B (zh) * | 2023-09-01 | 2024-02-02 | 深圳比特微电子科技有限公司 | Sram阵列的数据选择装置、存储系统和系统级芯片 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101401166A (zh) * | 2005-07-26 | 2009-04-01 | 美光科技公司 | 具有多个地址、数据及命令总线的存储器装置及方法 |
CN101689396A (zh) * | 2007-06-25 | 2010-03-31 | 高通股份有限公司 | 同时多维字可寻址存储器架构 |
CN103678164A (zh) * | 2012-09-25 | 2014-03-26 | 北京兆易创新科技股份有限公司 | 一种存储器级联方法和装置 |
CN204463835U (zh) * | 2014-05-15 | 2015-07-08 | 吉林克斯公司 | 存储器矩阵 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4684267A (en) * | 1984-07-02 | 1987-08-04 | General Motors Corporation | Split bearing assemblies |
US6492833B1 (en) * | 1998-04-30 | 2002-12-10 | Altera Corporation | Configurable memory design for masked programmable logic |
KR100380347B1 (ko) * | 2000-11-21 | 2003-04-11 | 삼성전자주식회사 | 반도체 메모리 장치 및 이 장치의 데이터 리드 방법 |
US9390772B2 (en) * | 2012-05-22 | 2016-07-12 | Samsung Electronics Co., Ltd. | Semiconductor device including option pads for determining an operating structure thereof, and a system having the same |
-
2014
- 2014-05-15 US US14/278,244 patent/US9083340B1/en active Active
-
2015
- 2015-03-04 CN CN201520126233.6U patent/CN204463835U/zh active Active
- 2015-03-04 CN CN201510096445.9A patent/CN105097005B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101401166A (zh) * | 2005-07-26 | 2009-04-01 | 美光科技公司 | 具有多个地址、数据及命令总线的存储器装置及方法 |
CN101689396A (zh) * | 2007-06-25 | 2010-03-31 | 高通股份有限公司 | 同时多维字可寻址存储器架构 |
CN103678164A (zh) * | 2012-09-25 | 2014-03-26 | 北京兆易创新科技股份有限公司 | 一种存储器级联方法和装置 |
CN204463835U (zh) * | 2014-05-15 | 2015-07-08 | 吉林克斯公司 | 存储器矩阵 |
Also Published As
Publication number | Publication date |
---|---|
US9083340B1 (en) | 2015-07-14 |
CN105097005A (zh) | 2015-11-25 |
CN204463835U (zh) | 2015-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105097005B (zh) | 存储器矩阵 | |
CN100514494C (zh) | 快闪存储器数据存储装置 | |
US11296705B2 (en) | Stacked programmable integrated circuitry with smart memory | |
CN101364439B (zh) | 闪存器件和操作该闪存器件的方法 | |
CN101675478B (zh) | 具有一个或多个存储器设备的系统 | |
TWI659427B (zh) | 用於資料路徑內計算操作之裝置及方法 | |
CN102810082B (zh) | 带有动态端口的优先级分配能力的存储器控制器 | |
CN102177553A (zh) | 具有可配置虚拟页大小的桥接装置 | |
CN103151074A (zh) | 可兼容双重功能的非易失性存储器装置 | |
CN107408405A (zh) | 用于并行写入到多个存储器装置位置的设备及方法 | |
CN107832081A (zh) | 更新存储器中的寄存器的设备及方法 | |
CN103578535B (zh) | 用于读取nand快闪存储器的方法和设备 | |
CN105814560A (zh) | 用于实现高吞吐量键-值存储的存储器设置 | |
CN110476212B (zh) | 用于存储器中数据交换网络的设备及方法 | |
TW201610996A (zh) | 涉及多排組雙管道記憶體電路之系統及方法 | |
CN104969208A (zh) | 可配置的嵌入式存储器系统 | |
CN104737450A (zh) | 可再构成的半导体装置 | |
CN107209718A (zh) | 高性能非易失性存储器模块 | |
CN105191139A (zh) | 可重构逻辑器件 | |
CN100409179C (zh) | 具有终止信号传播的机制的可编程流水线结构 | |
CN107703815A (zh) | 循环地址式三线spi通讯系统 | |
CN102193888A (zh) | 数据传输系统与可编程串行外围设备接口控制器 | |
Senhadji-Navarro et al. | Performance evaluation of RAM-based implementation of finite state machines in FPGAs | |
CN105356875A (zh) | 一种单粒子加固fpga的查找表电路 | |
KR20160143014A (ko) | 메모리 칩 및 이를 포함하는 적층형 반도체 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |