CN116917874A - 从单个端口的共享多端口存储器 - Google Patents
从单个端口的共享多端口存储器 Download PDFInfo
- Publication number
- CN116917874A CN116917874A CN202280017023.6A CN202280017023A CN116917874A CN 116917874 A CN116917874 A CN 116917874A CN 202280017023 A CN202280017023 A CN 202280017023A CN 116917874 A CN116917874 A CN 116917874A
- Authority
- CN
- China
- Prior art keywords
- read
- port memory
- write
- data
- port
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 401
- 239000000872 buffer Substances 0.000 claims description 75
- 238000000034 method Methods 0.000 claims description 18
- 230000006870 function Effects 0.000 claims description 16
- 230000009467 reduction Effects 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 2
- 230000008901 benefit Effects 0.000 abstract description 8
- 238000010586 diagram Methods 0.000 description 20
- 230000009977 dual effect Effects 0.000 description 12
- 238000004590 computer program Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 5
- 230000003139 buffering effect Effects 0.000 description 4
- 230000001934 delay Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000012937 correction Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000008929 regeneration Effects 0.000 description 1
- 238000011069 regeneration method Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- 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/1075—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for multiport memories each having random access ports and serial ports, e.g. video RAM
-
- 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/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
- G11C7/1012—Data reordering during input/output, e.g. crossbars, layers of multiplexers, shifting or rotating
-
- 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
-
- 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/1042—Read-write modes for single port memories, i.e. having either a random port or a serial port using interleaving techniques, i.e. read-write of one part of the memory while preparing another part
-
- 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
-
- 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/1051—Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
- G11C7/1069—I/O lines read out arrangements
-
- 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/1072—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
-
- 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
-
- 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
-
- 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/1096—Write circuits, e.g. I/O line write drivers
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/16—Multiple access memory array, e.g. addressing one storage element via at least two independent addressing line groups
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0853—Cache with multiport tag or data arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1008—Correctness of operation, e.g. memory ordering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
-
- 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/1045—Read-write mode select circuits
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Static Random-Access Memory (AREA)
- Memory System (AREA)
Abstract
本文中的实施方案描述了一种多端口存储器系统,该多端口存储器系统包括一个或多个单端口存储器(例如,在任何给定时间只能执行一个读取或一个写入的存储器,称为1W或1R存储器)。也就是说,该多端口存储器系统可并行地执行多个读取和写入(例如,1R/1W、1R/3W、2R/2W、3R/1W等),即使该系统中的存储器在任何给定时间只能执行一个读取或一个写入。这样做的优点是减小面积和功率。
Description
技术领域
本公开的示例整体涉及使用单端口存储器(例如,可在任何给定时间仅执行读取或仅执行写入的存储器元件)的多端口存储器系统(例如,可并行地执行多个读取和写入的系统)。
背景技术
许多应用程序需要存储器并行地执行读取和写入(例如,多端口存储器系统)。这些系统通常包括双端口存储器(即,并行地执行至少一个读取和写入的存储器)以实现大延迟缓冲器和动态系数存储。在专用集成电路(ASIC)中,双端口存储器比单端口存储器(即,在任何给定时间只能执行单个读取或单个写入的存储器)每位消耗更多面积和功率。而且,当与单个大存储器相比时,多个独立小存储器在面积上是低效的。因此,用单端口存储器替换多端口存储器(例如,可并行地执行读取和写入的双端口存储器)存在大的面积和功率优点。这样做可导致存储器宏的面积减少40%。
发明内容
一个实施方案描述了一种多端口存储器系统,该多端口存储器系统包括:单端口存储器,其一次只能执行一个读取或一个写入,其中该单端口存储器的地址空间为该多端口存储器系统的地址空间的一半或小于所述地址空间;除法器,其被配置为划分所接收的读取和写入地址;第一寄存器,其耦接到单端口存储器的写入数据端口并且被配置为在单端口存储器执行读取操作时存储所接收的写入数据字;和第二寄存器,其耦接到单端口存储器的读取数据端口并且被配置为存储在读取操作期间从单端口存储器读取的多个数据字中的第一数据字。此外,从外部实体的角度来看,多端口存储器系统使用单端口存储器执行以下中的至少一项:(i)并行的至少一个读取和至少一个写入操作,或者(ii)并行的多个读取或多个写入。
本文所述的另一个实施方案是一种方法,该方法包括:在第一周期期间,使用写入数据端口将第一多个数据字写入到单端口存储器中;在第二周期期间,使用读取数据端口从单端口存储器的第一存储器地址读取第二多个数据字;在第二周期期间,将第二多个数据字中的第一数据字存储于耦接到读取数据端口的第一寄存器中;在第二周期期间,将第二多个数据字中的第二数据字作为读取数据输出;在第二周期期间,将第一接收字存储于耦接到单端口存储器的写入数据端口的第二寄存器中;在第三周期期间,使用写入数据端口将第一接收字和第二接收字写入到单端口存储器的第二存储器地址中;以及在第三周期期间,将第二多个数据字中的第二数据字作为读取数据输出。
本文所述的另一个实施方案是一种多端口存储器系统,该多端口存储器系统包括:单端口存储器,其一次只能执行一个读取或一个写入,其中多端口存储器系统的深度大于单端口存储器的深度并且多端口存储器系统的宽度小于单端口存储器的宽度;第一寄存器,其耦接到单端口存储器的写入数据端口并且被配置为在单端口存储器执行读取操作时存储所接收的写入数据字;和第二寄存器,其耦接到单端口存储器的读取数据端口并且被配置为存储在读取操作期间从单端口存储器读取的多个数据字中的第一数据字。此外,对应于多端口系统的存取模式是顺序的,使得用于执行读取和写入操作的存储器地址根据固定量递增。
附图说明
为了能够详细理解上述特征的方式,可以通过参考示例性具体实施来获得上文简要概括的更具体的描述,其中一些示例性具体实施在附图中示出。然而,应当注意,附图仅示出了典型的示例性具体实施并且因此不应被视为限制其范围。
图1是根据一个示例的使用单端口存储器实现的多端口存储器系统的图。
图2是根据一个示例的使用单端口存储器并行地执行读取和写入的时序图。
图3是根据一个示例的使用单端口存储器实现的多端口存储器系统的图。
图4是根据一个示例的使用单端口存储器实现的1W3R存储器系统的图。
图5是根据一个示例的使用单端口存储器实现的可配置多端口存储器系统的图。
图6A和图6B示出了根据一个示例使用多端口存储器系统执行峰值消除-峰值因数减小。
具体实施方式
下文中参考附图描述各种特征。应当注意,附图可以按比例绘制也可以不按比例绘制,并且类似结构或功能的元件在所有附图中由相似的附图标号表示。应当注意,附图仅旨在便于对特征的描述。它们并不旨在作为对特征的详尽描述也不旨在作为对权利要求的范围的限制。另外,所例示的示例不必具有所示出的所有方面或优点。结合特定示例描述的方面或优点不一定限于该示例,并且即使未被如此示出或未被如此明确描述也可在任何其他示例中得以实践。
本文中的实施方案描述了一种多端口存储器系统,该多端口存储器系统包括一个或多个单端口存储器(例如,在任何给定时间只能执行一个读取或一个写入的存储器,称为1W或1R存储器)。也就是说,该多端口存储器系统可并行地执行多个读取和写入(例如,1R/1W、1R/3W、2R/2W、3R/1W等),即使该系统中的存储器在任何给定时间只能执行一个读取或一个写入。多端口系统不包括任何双端口存储器,而是仅依赖于单端口存储器。这样做的优点是减小面积和功率。
在一个实施方案中,单端口存储器包括减小的深度(例如,存储器空间的一半),但在每个地址处作为多端口存储器存储多个字(例如,宽度的两倍)。因此,当执行写入时,多端口存储器将两个数据字存储在单端口存储器中的同一地址处。此外,当执行读取时,系统从同一地址检索两个(或更多个)字。然而,系统还包括用于存储(或缓冲)该字中的一个字的寄存器,使得在当前周期上仅输出所检索的字中的一个字,而可在后续周期上输出另一检索的字。并行地,多端口存储器系统可接收并缓冲待写入到单端口存储器中的第一字。在下一周期中,系统可执行另一写入操作,其将所缓冲的字和当前接收的字写入到单端口存储器中。因此,多端口系统可以在每个时钟周期并行地执行一个字读取和一个字写入。这可以与其中给定端口的存取模式是顺序的或一致的(例如,存储器地址递增一而不是随机变化)任何应用程序一起使用。
图1是根据一个示例的使用单端口存储器150实现的多端口存储器系统100的图。从外部电路(例如,外部实体)的角度来看,多端口存储器系统100是双端口存储器,例如可并行地执行读取和写入的存储器。然而,存储器系统100包括在任何给定时钟周期期间只能执行一个读取或一个写入的单端口存储器150(即,1R或1W存储器)。在一个实施方案中,存储器系统100在IC(例如,处理器、ASIC、现场可编程门阵列、图形处理单元等)中实现。
如图所示,存储器系统100从外部电路(例如,存储器控制器或处理器)接收写入地址105、读取地址110和写入数据160。存储器系统100使用计数125在对单端口存储器150执行写入或读取之间进行切换。计数125可在每个时钟周期(例如,高和低周期)切换值,其中在第一时钟周期期间,计数125使得存储器系统100将数据写入到单端口存储器150中,而在下一时钟周期期间,计数使得存储器系统100从单端口存储器150读取数据。
为了执行写入操作,计数125控制多路复用器(mux)120,使得将“1”馈送到单端口存储器150中,从而指示存储器150写入在其写入数据端口处接收的数据(即,WDATA)。如图所示,WDATA输入端口处的写入数据具有2个字(2W),而不是仅单个数据字。例如,双端口存储器可接收单个数据字并且将该字写入到对应的存储器地址中。然而,单端口存储器150会将两个字写入到每个存储器地址中。因此,单端口存储器150使用双端口存储器的一半深度(例如,存储器地址的一半),但具有两倍宽度以便在每个地址处存储两个字。
由于外部电路不知道多端口存储器系统100使用单端口存储器150而不是双端口存储器,因此其将提供每个时钟周期写入的一个字。然而,计数125允许存储器系统100每隔一个周期执行一个写入。因此,存储器系统100包括用于存储或缓冲在单端口存储器150执行读取的周期期间接收的数据字的寄存器135。然后,在下一周期,单端口存储器150执行写入,以存储当前接收的字以及存储在寄存器135中的缓冲字。计数125还控制mux 115以确保当执行写入时将写入地址105输入到单端口存储器150中,但当执行读取时则输入读取地址110。此外,使用除法器130将这些地址105、110除以2(例如,通过执行位移位运算),因为单端口存储器150具有多端口系统100的地址空间的一半存储器空间并且在每个存储器位置处存储两个字。
当执行读取时,计数125控制mux 120,使得将“0”提供到单端口存储器150,从而指示其使用读取数据端口(RDATA)输出存储在读取地址110(除以二)的存储器位置处的数据。作为响应,单端口存储器150输出存储在该存储器地址处的两个字。然而,并非将这些字都提供到请求实体,存储器系统100使用mux 145仅输出该字中的一个字,而将另一个字存储于寄存器140中。因此,当计数125使得单端口存储器150在下一时钟周期中执行写入时,计数125还指示mux 145输出存储于寄存器140中的数据,从而输出在先前的读取周期期间检索的第二字。因此,寄存器140预缓冲请求实体预期在下一时钟周期中想要的数据。因此,存储器系统100可以为其中给定端口(例如,单端口存储器150的读取和写入端口)的存取模式是顺序的任何应用程序执行双端口存储器的功能。示例性功能包括流式快速傅立叶变换(FFT)和峰值消除-波峰因数降低(PC-CFR)。
尽管未示出,但缓冲器控制逻辑可设置在存储器系统100周围以提供地址和接口控制逻辑。从外部实体的角度来看,存储器系统100与正常双端口存储器起相同作用,其中唯一准则是正写入到存储器系统100中或从存储器系统读取的两个字的地址是邻接的。确保在将数据写入到特定地址与从该地址读取数据之间存在足够的时钟周期以确保数据在读取之前被提交到存储器也是重要的。
图2是根据一个示例的使用单端口存储器并行地执行读取和写入的图1中的计数125的时序图。为清楚起见,结合图1所示的存储器系统100来论述图2。在一个实施方案中,在启动时,计数125指示图1中的存储器系统100处于读取模式。在该读取操作期间,将写入数据的字传送到寄存器135。图2在周期205处开始,其中计数125指示存储器系统100执行写入,在此期间将两个字写入到单端口存储器150中。也就是说,存储器系统100将在先前读取操作期间接收到的写入数据字和当前接收到的字两者写入到存储器150中同一地址位置处。
在周期210处,计数125指示存储器系统100执行向单端口存储器150的读取,其中从存储器150读取两个字;然而,存储器系统100在周期210期间仅输出那些字中的一个字作为读取数据155,而另一检索的字存储(或缓冲)于寄存器中。
与这些动作并行地,在周期210期间,存储器系统还将写入数据的第一字存储到寄存器135中。因此,从外部电路的角度来看,存储器系统100似乎已从存储器中读取一个字,并且在周期210期间将写入数据的另一个字存储到存储器中。然而,实际上,存储器系统100已从单端口存储器150读取两个字,将那些字中的一个字输出到请求实体,缓冲从存储器150读取的另一个字,并且还缓冲写入数据的字。
在周期215处,计数指示存储器系统100将在周期210期间缓冲的写入数据的第一字和当前在存储器系统100处接收到的写入数据的第二字写入到单端口存储器150中。与周期205一样,写入数据的这两个字被存储在同一存储器地址处。
与对单端口存储器150执行写入操作并行地,存储器系统还输出在先前周期210期间从存储器150检索的第二字。也就是说,计数125控制mux 145,使得在寄存器140中缓冲的读取数据的字现在作为读取数据155输出。因此,从外部电路的角度来看,当实际上系统100已将两个字写入单端口存储器150中并且输出在先前周期210中检索到的读取数据的缓冲字时,存储器系统100已并行地执行另一读取和写入。
在周期220处,计数125再次指示存储器系统100执行向单端口存储器150的读取,其中从存储器150读取两个字;然而,存储器系统100在周期210期间仅输出那些字中的一个字作为读取数据155,而另一检索的字存储(或缓冲)于寄存器140中。
与这些动作并行地,存储器系统100将写入数据的第一字存储到寄存器135中。因此,从外部电路的角度来看,存储器系统100似乎已从存储器中读取一个字,并且在周期220期间将写入数据的另一个字存储到存储器中。然而,存储器系统100实际上已从单端口存储器150读取两个字,将那些字中的一个字输出到请求实体,缓冲从存储器150读取的另一个字,并且还缓冲写入数据的字。
在周期225处,计数125再次指示存储器系统100将在周期220期间缓冲的写入数据的第一字和当前在存储器系统100处接收到的写入数据的第二字写入到单端口存储器150中。写入数据的这两个字被存储在同一存储器地址处。
与对单端口存储器150执行写入操作并行地,存储器系统100还输出在先前周期220期间从存储器150检索的第二字。因此,从外部电路的角度来看,当实际上系统100已将两个字写入单端口存储器150中并且输出在先前周期220中检索到的读取数据的缓冲字时,存储器系统100已并行地执行另一读取和写入。
以此方式,计数125可在读取周期与写入周期之间继续递增以在每个周期期间使用单端口存储器150执行2字读取或2字写入。然而,对于IC中的其他电路,存储器系统100似乎像双端口存储器那样并行地执行1R和1W。
图3是根据一个示例的使用单端口存储器150实现的多端口存储器系统300的图。一些FFT应用程序需要存储器系统300能够在任意周期上开始和停止写入操作。图1中的存储器系统100不能这样做,因为其假设每个写入存储两个数据字。然而,图3中的存储器系统300使得能够使用写入控制320和读取控制315来任意地开始和停止写入。值得注意的是,图3未示出任意停止读取操作的能力,而是可通过在存储器系统100的输出上添加FIFO以保持读取数据来执行。
图3包括许多与图1中相同的部件,在此使用相同的附图标记。这些部件以与上述相同的方式起作用,因此在此不再详细讨论。
对于读取的任意开始,存储器系统300允许单端口存储器150的存取与由计数125执行的读取/写入存取控制不对准。也就是说,如果当存储器系统300正在对单端口存储器150进行写入时该读取使能(en1)变为高,则系统300将读取存取延迟一个周期。这是通过在输入上将读地址缓冲到寄存器305中,然后使用由读取控制315生成的信号在下一个周期上读取存储器(当计数125指示系统300执行单端口存储器150的读取时)来完成的。然而,这延迟了输出上的读取数据(即,读取数据155)。
如果FFT应用程序需要固定等待时间,则通过将第二寄存器335添加到读取数据输出来适应该延迟。现在,存储器输出数据的两个字都被捕获,然后在随后的两个周期上输出。如果对准读取存取(例如,不执行任意开始),则不延迟读取地址,并且使用第二寄存器335延迟输出以给出一致的额外周期延迟。以此方式,存储器系统300提供来自存储于寄存器305中的地址或存储于寄存器335中的数据输出的延迟。换句话说,在输入或输出处总是存在额外延迟,从而导致从输入地址到输出数据的固定延迟。例如,如果当计数为1时存储器读取,那么当计数=0,en1转变为1时读取控制315生成1。这一直持续到en1=0。这使得mux 310选择寄存器305,并且在读取输出上使用mux 340选择存储器输出路径而不选择读取数据输出寄存器335。
对于写入的任意开始,系统300的写入侧在输入上提供额外缓冲器(例如,寄存器325),其允许在计数=1的情况下缓冲数据。对于写入的任意停止,则可以写入两个字,而不管第二数据项是否已被输入以确保第一数据项被提交给存储器。在重新开始写入时,第二字可以与存储在寄存器135中的前一个字一起写入。这避免了在存储器上具有单独写使能的需要,但单独写使能的使用是替代方法。
图4是根据一个示例的使用单端口存储器450实现的1W3R存储器系统440的图。也就是说,从外部实体的角度来看,存储器系统440并行地执行一个写入和三个读取,但仅包含可在任何给定时间执行读取或写入的单端口存储器450。在该示例中,单端口存储器450具有数据字大小除以4(W/4)的深度和数据字大小的四倍(W*4)的宽度。因此,每当存储器系统400向单端口存储器450写入时,其在同一存储器地址处存储四个数据字,并且每当其从存储器450读取时,其检索四个数据字。
存储器系统400包括mux 405,其由循环通过一个写入和三个读取的计数410(在这种情况下,其可为两位计数)控制。也就是说,在第一周期期间,mux 405输出写入命令,但对于接下来的三个后续周期,mux 405输出读取命令。因此,在四个周期内,单端口存储器450执行一个写入和三个读取,即使对于外部世界,存储器系统400似乎每个周期执行一个写入和三个读取。
计数410还控制mux 415,其将适当的写入地址(即,addr0)和读取地址(即,addr1-3)传递到单端口存储器450。由于存储器450的地址空间被除以四,因此这些地址被除法器420除以四。
写入缓冲器425准备在每个写入周期(每第四时钟周期发生)期间将四个数据字写入到单端口存储器450中。再次,由于外部电路假设存储器系统400每个周期执行一个写入,因此请求实体在每个周期将数据字传输到写入缓冲器425。然而,写入缓冲器425将在存储器450执行读取时的周期期间接收到的三个数据字存储在三个寄存器中,而非每个周期执行对存储器450的写入。当mux 405输出写入命令时,单端口存储器450接收在先前三个读取周期期间存储在寄存器中的数据以及当前接收到的写入数据字,并且将四个数据字写入到同一存储器地址中。因此,对于外部世界来说,存储器系统400似乎在每个周期将数据字写入到存储器中,而实际上是每四个周期将数据字写入到存储器450中一次。此外,假设四个字的序列中的第一地址被对准(即,前2个LSB被设置为零)。
存储器系统400包括三个读取缓冲器430,用于存储在三个连续读取操作中的每个读取操作期间从单端口存储器450读取的四个数据字。例如,在第一读取操作期间,从addr1/4读取四个数据字并且将其传输到读取缓冲器430A,在第二读取操作期间,从addr2/4读取四个数据字并且将其传输到读取缓冲器430B,并且在第三读取操作期间,从addr3/4读取四个数据字并且将其传输到读取缓冲器430C。
在每个周期期间,从每个缓冲器430中读出数据字。也就是说,计数410充当用于读取缓冲器430A-C中的每个mux的控制信号,使得每个mux输出存储于缓冲器430中的数据字中的一个数据字。也就是说,将用于特定地址的向量(即,存储在单端口存储器150中的每个地址处的四个字)缓冲于读取缓冲器430中的寄存器中,并且然后在四个周期内一次将一个字呈现给请求实体。
对于每个周期对一个字的存储器的全带宽存取,存取应对准并且具有连续地址。在一个实施方案中,通过具有00作为其最低有效位并且与存储器存取模式同步开始的第一地址来对准存取。然而,可通过读取相关联向量并且仅从与给定的字读取地址相关联的向量输出字来支持任意的未对准读取存取。如果存取从单端口存储器150请求新向量,则存储器系统400可停止,直到从存储器读取所请求的向量。可向请求实体提供信号以指示当前读取操作正在停止。
如果从存储器450读取的特定向量仅请求一个字,则最大数据速率为每四个周期一个字(或对于M端口存储器来说,更一般地为M个周期)。如果读取是连续的但未对准的,则在第一向量读取与后续向量读取之间可存在小停止,但在第一未对准读取之后,该停止将使读取地址与计数410对准,并且读取将是连续的。但是,通过向输出添加小缓冲器并且延迟数据缓冲器输出的开始,实际上将中断移动到输出序列的开始作为固定等待时间延迟,可以在后续过程中避免读取数据输出中的这种中断。
也可通过在写入操作期间采用字使能来支持任意的未对准写入,所述字使能仅对通过写入接口写入直到将端口提交到存储器450的点的字有效。事实上,数据可以在该提交之前被重写到字缓冲器(即同一字地址)。
如果需要对存储在单端口存储器450中的向量进行错误检查和/或校正,则仅利用字写入使能来更新存储器可能是不够的,因为还需要更新与整个向量相关联的校验位。然而,如果在计数410调度端口写入时数据向量尚未完成,则可通过将该端口的写入存取转换为存储器读取来适应错误检查和校正。可直接使用读取数据来扩充写入向量,从而填充丢失的字。如果写入连续的流,则该不完整的写入将仅出现在第一向量上,其中写入过程已部分地开始通过4端口序列。可启动读取-修改-写入,充分地停止输入,使得后续的写入将是完整的向量。与读取操作一样,如果必要,可通过包括数据缓冲器以吸收任何停止来避免存储器系统400的输入上的停止,如上文在图3中所述。
图5是根据一个示例的使用单端口存储器实现的可配置多端口存储器系统500的图。一般来讲,图5示出了可配置以使用如图4所示的单端口存储器450同时执行读取和写入的不同变型的多端口系统500。图5相对于图4进行概述以示出可选择性地用于或不用于提供期望的多端口存储器的电路块。也就是说,系统500包括三个写入寄存器520A-C和三个读取缓冲器530A-C,它们提供灵活性,使得用户或应用程序可将多端口系统500配置为充当1R/3W存储器、2R/2W存储器、3R/1W存储器。还值得注意的是,一些FPGA应用程序使用来自由位流初始化的RAM的只读存储器(ROM)(即,其中不需要写入端口)。在这些应用程序中,以及在具有ROM的ASIC中,我们可以使用本文所述的技术来共享仅执行读取的ROM(例如,4R)。
存储器系统500包括输出R/W信号510和地址信号515的控制器505。类似于图4,单端口存储器450在每个地址处存储四个数据字(即,存储器450具有为作为整体的多端口系统500的地址空间的深度的四分之一的地址空间)。当被配置为1R/3W存储器时,仅使用一个读取缓冲器530,而将使用所有三个写入缓冲器525。其他两个读取缓冲器530将是无效的并且可被断电。在这种情况下,控制器505确保单端口存储器每四个时钟周期执行1个读取和3个写入操作。在读取周期期间,将从单端口存储器450读取四个数据字并且将其存储于读取缓冲器530中的一个读取缓冲器中。这样,在存储器450的三个后续写入操作的每个写入操作期间,读取缓冲器530输出所缓冲的字中的一个缓冲字。
为了将数据写入存储器450中,在每个周期期间,外部实体将三个数据字提供到多端口系统500。当单端口存储器450执行读取操作时,将在该时钟周期期间接收到的三个写入字存储(即,缓冲)于写入缓冲器525中(例如,每个缓冲器525中一个字)。在单端口存储器450执行写入操作的下三个周期期间,将当前接收到的三个数据字以及在读取操作期间存储于写入缓冲器525中的数据字中的一个数据字写入到单端口存储器450中。这样,在三个写入周期中的每个写入周期期间,将四个数据字写入同一地址中。
当被配置为2R/2W存储器时,使用两个读取缓冲器530和两个写入缓冲器525。其他读取缓冲器和写入缓冲器将不使用并且可以被断电。在这种情况下,控制器505确保单端口存储器450每四个时钟周期执行2个读取和2个写入操作。在两个读取周期期间,将从单端口存储器450读取四个数据字并且将其存储于两个所用读取缓冲器530中的一个读取缓冲器中。这样,在存储器450的两个写入操作中的每个写入操作期间,两个读取缓冲器530输出所缓冲的字中的一个缓冲字。
对于2R/2W存储器,在每个周期期间,外部实体向多端口系统500提供两个数据字。当单端口存储器450执行读取操作时,将在该时钟周期期间接收到的两个写入字存储于两个写入缓冲器525中(例如,每个缓冲器525中一个字)。在单端口存储器450执行写入操作的下两个周期期间,将两个当前接收到的数据字以及在读取操作期间存储于两个写入缓冲器525中的数据字中的两个数据字写入到单端口存储器450中。这样,在两个写入周期中的每个写入周期期间,将四个数据字写入同一地址中。然而,这假设存储器总是写入和读取字。在一个实施方案中,存储器可具有在特定时钟周期上未命中读取或写入的灵活性,在这种情况下,存储器可针对在相关联端口的存储器写入槽之前输入的字执行写入(使用字使能以将其选通到存储器中)。对于读取,当相关联的槽出现时,存储器从存储器读取所有字,但仅输出所请求的那些字(即,存储器系统针对每个字读取生成数据输出有效信号,其跟踪输入读取使能但相应地延迟)。
当被配置为3R/1W存储器时,使用三个读取缓冲器530和仅一个写入缓冲器525。未使用的两个写入缓冲器可被断电。在该示例中,多端口系统500将与图4中的多端口系统400相同地操作。
以此方式,多端口系统500包括使用单端口存储器450支持多种不同多端口配置的电路。在一个时间点,用户或应用程序可将多端口系统500配置为1R/3W存储器,但稍后在第二时间点将系统500重新配置为3R/1W存储器。此外,系统500可支持1R/W和3R存储器,其中例如存储器连接到能够使用一个端口执行随机读取或写入并且仍保留用于连续高带宽读取的三个读取端口的处理器接口。
图6A和图6B示出了根据一个示例使用不同多端口存储器系统执行PC-CFR。具体地,图6A示出了使用多个多端口存储器605执行PC-CFR,而图6B示出了使用单端口存储器650执行PC-CFR。
图6A所示的系统600包括四个多端口存储器605,其与上述实施方案不同,该多端口存储器可并行地执行至少一个读取和写入。也就是说,多端口存储器605具有独立的读取和写入地址端口,因此它们可以并行地执行至少一个读取和一个写入,这不同于上述实施方案,其中多端口系统可使用单端口存储器来实现。然而,图6B中的系统640示出使用单端口存储器660执行PC-CFR,这样可节省空间并降低成本。
在PC-CFR应用程序中,通过从信号中减去适当缩放的预定义脉冲来去除峰值,从而减小信号的峰值对平均功率。这些预定义的脉冲可存储在存储器605中,并且通过对乘法器610的输出求和来查找消除峰值。系统600包括具有相关联的存储器605的四个脉冲消除单元。通过将数据延迟半个脉冲长度,将脉冲数据读出与先前检测到的峰值对准(通过未示出的逻辑)。从存储器605中读取脉冲,由乘法器610使用峰值标度值对其进行缩放,由求和器620对其进行求和,并且由减法器625从延迟数据中减去。在这种情况下,存在四个脉冲消除单元,但通常可以在多次迭代中应用更多或更少的脉冲消除单元,其中由于别处的峰的再生,可能需要后者。
每个存储器605是双端口的以便允许更新脉冲,并且可以实现两个存储体以允许与脉冲消除操作并行的更新,其中在适当方便的时刻切换存储体。
然而,图6B示出了可以采用先前实施方案中所述的2端口共享存储器来用单端口存储器660替换图6A中的双端口存储器605。这通过用单端口存储器替换双端口存储器来减小面积和功率。
此外,通过注意到脉冲在图6A中的每个存储器605中是相同的,还可以重新使用单端口存储器660以使得相同的存储器内容可用于所有脉冲消除单元670。这以因子Q减少存储器位的总量,其中Q为由共享M端口存储器服务的脉冲消除单元670的数目。这可以转化为以因子Q减少面积,但这可以被用于缓冲每个端口的额外逻辑以及用于具有减小的深度的存储器宏的每比特面积的增加略微稀释。
具体地,系统640示出了用单个共享八端口存储器660替换单独双端口存储器605,其中使用两个端口来提供AXl-lite读取和写入,并且六个端口用于由脉冲消除单元进行的读取存取。此外,所述端口中的两个端口可在另一次迭代中驻留(未示出)。需注意,AXl-lite读取和写入端口可以由单个读取-写入端口替换以允许添加另一个脉冲消除单元。存储器纵横比已从8k乘32位变为1k乘256位,这可使用1个或多个物理存储器宏(例如,2个128位宽的存储器)来实现。
作为非限制性示例,三个八端口共享多端口存储器650可替代18个双端口存储器605,其可使存储器宏面积减小至约1/7。由于存储器占总面积的较大比例,因此相对于使用存储器605,总面积可减小到小于50%。
本公开不限于以上概述的用例,并且可应用于给定端口的存取模式是顺序的或一致的任何应用程序。如果满足该条件,则提供的所有多端口彼此独立,并且可用于随意读取或写入。
在前文中,参考了在本公开中呈现的实施方案。然而,本公开的范围不限于具体描述的实施方案。相反,所描述的特征和元件的任何组合(无论是否涉及不同的实施方案)都被设想为实现和实践所设想的实施方案。此外,尽管本文所公开的实施方案可以实现优于其他可能的解决方案或优于现有技术的优点,但特定的优点是否通过给定的实施方案被实现不限制本公开的范围。因此,前述方面、特征、实施方案和优点只是例示性的,并且不被认为是所附权利要求的要素或限制,除非在权利要求中有明确记载。
如本领域的技术人员将理解的,本文所公开的实施方案可以体现为系统、方法或计算机程序产品。因此,各方面可以采用完全硬件实施方案、完全软件实施方案(包括固件、驻留软件、微代码等)或组合软件和硬件方面的实施方案的形式,其在本文中全都可以被一般地称为“电路”、“模块”或“系统”。此外,各方面可以采用体现在一个或多个计算机可读介质中的计算机程序产品的形式,该一个或多个计算机可读介质具有体现在其上的计算机可读程序代码。
可以利用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是(例如但不限于)电、磁、光、电磁、红外或半导体系统、设备或装置或者前述各项的任何合适的组合。计算机可读存储介质的更具体示例(不完全列表)将包括以下:具有一条或多条导线的电连接件;便携式计算机软盘;硬盘;随机存取存储器(RAM);只读存储器(ROM);可擦除可编程只读存储器(EPROM或闪存);光纤;便携式压缩盘只读存储器(CD-ROM);光存储装置;磁存储装置;或前述各项的任何合适的组合。在本文件的上下文中,计算机可读存储介质是可包含或存储供指令执行系统、设备或装置使用或者与其结合使用的程序的任何有形介质。
计算机可读信号介质可包括具有体现在其中(例如,在基带中或作为载波的一部分)的计算机可读程序代码的传播数据信号。此类传播信号可以采用多种形式中的任何一种形式,包括但不限于电磁、光学或它们的任何合适的组合。计算机可读信号介质可以是并非计算机可读存储介质并且可以传达、传播或传送供指令执行系统、设备或装置使用或者与其结合使用的程序的任何计算机可读介质。
体现在计算机可读介质上的程序代码可以使用任何适当的介质来传输,包括但不限于无线、有线、光纤电缆、RF等或前述各项的任何合适的组合。
用于进行针对本公开的各方面的操作的计算机程序代码可以一种或多种编程语言的任何组合来编写,包括面向对象的编程语言(诸如Java、Smalltalk、C++等等)和常规过程式编程语言(诸如“C”编程语言或类似的编程语言)。程序代码可整个地在用户计算机上执行、部分地在用户计算机上执行、作为独立的软件包、部分地在用户计算机上执行并且部分地在远程计算机上执行或者整个地在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户计算机,或者可以连接到外部计算机(例如,通过使用互联网服务提供商的互联网)。
本公开的各方面在下文参考根据本公开中呈现的实施方案的方法、设备(系统)和计算机程序产品的流程图图示和/或框图进行描述。应当理解,流程图图示和/或框图的每个框以及流程图图示和/或框图中的框的组合可以通过计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理设备的处理器以产生机器,使得经由计算机或其他可编程数据处理设备的处理器执行的指令形成用于实现在流程图和/或框图的一个或多个框中指定的功能/动作的方式。
这些计算机程序指令还可以存储在可以指引计算机、其他可编程数据处理设备和/或其他装置以特定方式起作用的计算机可读介质中,使得存储在计算机可读介质中的指令产生包括实现在流程图和/或框图的一个或多个框中指定的功能/动作的指令的制品。
计算机程序指令还可以被加载到计算机、其他可编程数据处理设备或其他装置上,以使一系列操作步骤在计算机、其他可编程设备或其他装置上执行以产生计算机实现的方法,使得在计算机或其他可编程设备上执行的指令提供用于实现在流程图和/或框图的一个或多个框中指定的功能/动作的方法。
图中的流程图和框图示出了根据本发明的各种示例的系统、方法和计算机程序产品的可能具体实施的架构、功能性和操作。就这一点而言,流程图或框图中的每个框可以表示指令的包括用于实现指定逻辑功能的一个或多个可执行指令的模块、段或部分。在一些另选的具体实施中,框中指出的功能可以不按照图中指出的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反顺序执行。还将注意到,框图和/或流程图图示中的每个框以及框图和/或流程图图示中的框的组合可由执行指定功能或动作或者执行专用硬件和计算机指令的组合的基于专用硬件的系统来实现。
虽然前述内容针对特定示例,但在不脱离本发明的基本范围的情况下可以设计出其他的和另外的示例,并且本发明的范围由所附权利要求确定。
Claims (25)
1.一种多端口存储器系统,包括:
单端口存储器,所述单端口存储器一次只能执行一个读取或一个写入,其中所述单端口存储器的地址空间是所述多端口存储器系统的地址空间的一半或小于所述多端口存储器系统的地址空间;
除法器,所述除法器被配置为划分所接收的读取地址和写入地址;
第一寄存器,所述第一寄存器耦接到所述单端口存储器的写入数据端口并且被配置为在所述单端口存储器正在执行读取操作时存储所接收的写入数据字;和
第二寄存器,所述第二寄存器耦接到所述单端口存储器的读取数据端口并且被配置为存储在所述读取操作期间从所述单端口存储器读取的多个数据字中的第一数据字,
其中,从外部实体的角度来看,所述多端口存储器系统使用所述单端口存储器执行以下中的至少一项:(i)并行的至少一个读取和至少一个写入操作,或者(ii)并行的多个读取或多个写入。
2.根据权利要求1所述的多端口存储器系统,其中,在写入操作期间,在所述写入数据端口处接收多个数据字,其中所述多个数据字中的一个数据字包括在所述读取操作期间存储在所述第一寄存器中的所述写入数据字。
3.根据权利要求1所述的多端口存储器系统,其中所述单端口存储器在每个存储器位置处存储多个数据字,其中所述多个数据字中的每个数据字对应于所述多端口存储器系统的所述地址空间中的不同地址,但所述多个数据字对应于所述单端口存储器的所述地址空间中的同一地址。
4.根据权利要求1所述的多端口存储器系统,还包括:
多路复用器,所述多路复用器在第一输入端处连接到所述读取数据端口并且在第二输入端处连接到所述第二寄存器的输出端,其中所述多路复用器被配置为选择是传输在所述读取操作期间从所述单端口存储器读取的第二数据字还是传输先前存储在所述第二寄存器中的所述第一数据字作为读取数据。
5.根据权利要求1所述的多端口存储器系统,其中所述多端口存储器系统被配置为使用写入控制和读取控制在任意周期开始和停止数据写入,所述多端口存储器系统包括:
第一多路复用器,所述第一多路复用器连接在所述单端口存储器与所接收的读取地址信号之间,其中所述第一多路复用器的选择信号由所述读取控制来控制;
第三寄存器,所述第三寄存器耦接到所述第一多路复用器的输入端并且被配置为存储所接收的读取地址信号;
第二多路复用器,所述第二多路复用器连接在所述写入数据端口与所接收的写入数据之间,其中所述第二多路复用器的选择信号由所述写入控制来控制;
第四寄存器,所述第四寄存器耦接到所述第二多路复用器的输入端并且被配置为存储所接收的写入数据的至少一部分;
第三多路复用器,所述第三多路复用器连接在所述读取数据端口与所述多端口存储器系统的读取输出端之间,其中所述第三多路复用器的选择信号由所述读取控制来控制;和
第五寄存器,所述第五寄存器耦接到所述第三多路复用器的输入端并且被配置为存储由所述读取数据端口提供的读取数据的至少一部分。
6.根据权利要求1所述的多端口存储器系统,还包括:
耦接到所述读取数据端口的多个读取缓冲器,所述多个读取缓冲器中的每个读取缓冲器被配置为存储在相应读取操作期间从所述单端口存储器接收到的多个数据字,其中所述多个读取缓冲器各自在由所述单端口存储器执行的每个读取和写入操作期间输出相应数据字,
其中,从所述外部实体的角度来看,所述多端口存储器系统并行地执行多个读取操作。
7.根据权利要求1所述的多端口存储器系统,还包括:
耦接到所述写入数据端口的多个写入缓冲器,所述多个写入缓冲器中的每个写入缓冲器被配置为在所述单端口存储器执行读取操作时缓冲多个写入数据字,其中所述多个写入缓冲器中的至少一个写入缓冲器在执行写入操作时将所缓冲的多个写入数据字中的一个写入数据字输出到所述单端口存储器,
其中,从所述外部实体的角度来看,所述多端口存储器系统并行地执行多个写入操作。
8.根据权利要求1所述的多端口存储器系统,还包括:
耦接到所述读取数据端口的多个读取缓冲器;和
耦接到所述写入数据端口的多个写入缓冲器,其中所述多端口存储器系统能够被配置为通过选择性地使用所述多个读取缓冲器和所述多个写入缓冲器的子集来用作1R/xW、yR/xW、yR/1W、xW或yR存储器中的一者,其中x和y为大于一的整数值。
9.根据权利要求8所述的多端口存储器系统,其中所述多个读取缓冲器和所述多个写入缓冲器是能够动态选择的,使得所述多端口存储器系统能够从1R/xW、yR/xW、yR/1W、xW或yR存储器中的一者切换到并行地执行不同数量的读取或写入。
10.根据权利要求1所述的多端口存储器系统,其中所述单端口存储器存储用于峰值消除-波峰因数降低(PC-CFR)的脉冲数据,其中所述多端口存储器系统包括:
使用端口耦接到所述单端口存储器的多个脉冲消除单元。
11.一种使用单端口存储器并行地执行读取和写入的方法,包括:
在第一周期期间,使用写入数据端口将第一多个数据字写入所述单端口存储器中;
在第二周期期间,使用读取数据端口从所述单端口存储器的第一存储器地址读取第二多个数据字;
在所述第二周期期间,将所述第二多个数据字中的第一数据字存储在耦接到所述读取数据端口的第一寄存器中;
在所述第二周期期间,输出所述第二多个数据字中的第二数据字作为读取数据;
在所述第二周期期间,将第一接收字存储在耦接到所述单端口存储器的写入数据端口的第二寄存器中;
在第三周期期间,使用所述写入数据端口将所述第一接收字和第二接收字写入到所述单端口存储器的第二存储器地址中;以及
在所述第三周期期间,输出所述第二多个数据字中的所述第二数据字作为读取数据。
12.根据权利要求11所述的方法,其中,从外部实体的角度来看,所述单端口存储器是多端口存储器系统的一部分,所述多端口存储器系统执行以下中的至少一项:(i)并行的至少一个读取和至少一个写入操作,或者(ii)并行的多个读取或多个写入。
13.根据权利要求12所述的方法,其中所述单端口存储器的地址空间是所述多端口存储器系统的所述地址空间的一半或小于所述多端口存储器系统的所述地址空间。
14.根据权利要求13所述的方法,还包括:
通过大于一且为二的幂的整数值来划分用于在所述单端口存储器中执行读取和写入操作的写入和读取地址。
15.根据权利要求11所述的方法,其中所述第一周期、所述第二周期和所述第三周期是连续的周期。
16.根据权利要求11所述的方法,还包括:
通过向所述单端口存储器的所述写入数据端口和所述读取数据端口添加延迟来开始和停止在所述单端口存储器中的任意周期上的写入操作。
17.根据权利要求16所述的方法,还包括:
将所接收的读取地址存储在寄存器中;
响应于在任意周期上开始或停止写入操作,选择存储在所述寄存器中的所接收的读取地址或当前接收到的读取地址中的至少一者以在所述单端口存储器中执行读取操作。
18.根据权利要求11所述的方法,还包括:
在第一时间处,通过选择性地使用多个读取缓冲器和多个写入缓冲器的子集来配置所述单端口存储器以用作1R/xW、yR/xW、yR/1W、xW或yR多端口存储器中的一者,其中x和y为大于一的整数值。
19.根据权利要求18所述的方法,还包括:
在所述第一时间之后的第二时间处,通过选择性地使用所述多个读取缓冲器和所述多个写入缓冲器的不同子集来重新配置所述单端口存储器以用作不同的多端口存储器。
20.一种多端口存储器系统,包括:
单端口存储器,所述单端口存储器一次只能执行一个读取或一个写入,其中所述多端口存储器系统的深度大于所述单端口存储器的深度并且所述多端口存储器系统的宽度小于所述单端口存储器的宽度;
第一寄存器,所述第一寄存器耦接到所述单端口存储器的写入数据端口并且被配置为在所述单端口存储器正在执行读取操作时存储所接收的写入数据字;和
第二寄存器,所述第二寄存器耦接到所述单端口存储器的读取数据端口并且被配置为存储在所述读取操作期间从所述单端口存储器读取的多个数据字中的第一数据字,
其中对应于所述多端口系统的存取模式是顺序的,使得用于执行读取和写入操作的存储器地址根据固定量递增。
21.根据权利要求20所述的多端口存储器系统,其中所述单端口存储器在每个存储器位置处存储多个数据字,其中所述多个数据字中的每个数据字对应于所述多端口存储器系统的地址空间中的不同地址,但所述多个数据字对应于所述单端口存储器的地址空间中的同一地址。
22.根据权利要求20所述的多端口存储器系统,还包括:
多路复用器,所述多路复用器在第一输入端处连接到所述读取数据端口并且在第二输入端处连接到所述第二寄存器的输出端,其中所述多路复用器被配置为选择是传输在所述读取操作期间从所述单端口存储器读取的第二数据字还是传输先前存储在所述第二寄存器中的所述第一数据字作为读取数据。
23.根据权利要求20所述的多端口存储器系统,还包括:
耦接到所述读取数据端口的多个读取缓冲器,所述多个读取缓冲器中的每个读取缓冲器被配置为存储在相应读取操作期间从所述单端口存储器接收到的多个数据字,其中所述多个读取缓冲器各自在由所述单端口存储器执行的每个读取和写入操作期间输出相应数据字,
其中,从外部实体的角度来看,所述多端口存储器系统并行地执行多个读取操作。
24.根据权利要求20所述的多端口存储器系统,还包括:
耦接到所述写入数据端口的多个写入缓冲器,所述多个写入缓冲器中的每个写入缓冲器被配置为在所述单端口存储器执行读取操作时缓冲多个写入数据字,其中所述多个写入缓冲器中的至少一个写入缓冲器在执行写入操作时将所缓冲的多个写入数据字中的一个写入数据字输出到所述单端口存储器,
其中,从外部实体的角度来看,所述多端口存储器系统并行地执行多个写入操作。
25.根据权利要求20所述的多端口存储器系统,还包括:
耦接到所述读取数据端口的多个读取缓冲器;和
耦接到所述写入数据端口的多个写入缓冲器,其中所述多端口存储器系统能够被配置为通过选择性地使用所述多个读取缓冲器和所述多个写入缓冲器的子集来用作1R/xW、yR/xW、yR/1W、xW或yR存储器中的一者,其中x和y为大于一的整数值。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/210,356 US11348624B1 (en) | 2021-03-23 | 2021-03-23 | Shared multi-port memory from single port |
US17/210,356 | 2021-03-23 | ||
PCT/US2022/021019 WO2022203970A1 (en) | 2021-03-23 | 2022-03-18 | Shared multi-port memory from single port |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116917874A true CN116917874A (zh) | 2023-10-20 |
Family
ID=81325454
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280017023.6A Pending CN116917874A (zh) | 2021-03-23 | 2022-03-18 | 从单个端口的共享多端口存储器 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11348624B1 (zh) |
EP (1) | EP4278264A1 (zh) |
JP (1) | JP2024512541A (zh) |
KR (1) | KR20230159437A (zh) |
CN (1) | CN116917874A (zh) |
WO (1) | WO2022203970A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11348624B1 (en) * | 2021-03-23 | 2022-05-31 | Xilinx, Inc. | Shared multi-port memory from single port |
US12087357B2 (en) * | 2022-06-20 | 2024-09-10 | Arm Limited | Multi-port memory architecture |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6259648B1 (en) * | 2000-03-21 | 2001-07-10 | Systran Corporation | Methods and apparatus for implementing pseudo dual port memory |
US9058860B2 (en) * | 2012-03-29 | 2015-06-16 | Memoir Systems, Inc. | Methods and apparatus for synthesizing multi-port memory circuits |
US8811102B2 (en) * | 2013-01-16 | 2014-08-19 | International Business Machines Corporation | Multiple read port memory system with a single port memory cell |
CN108401467A (zh) * | 2017-02-17 | 2018-08-14 | 深圳市大疆创新科技有限公司 | 存储设备、芯片及存储设备的控制方法 |
US11348624B1 (en) * | 2021-03-23 | 2022-05-31 | Xilinx, Inc. | Shared multi-port memory from single port |
-
2021
- 2021-03-23 US US17/210,356 patent/US11348624B1/en active Active
-
2022
- 2022-03-18 WO PCT/US2022/021019 patent/WO2022203970A1/en active Application Filing
- 2022-03-18 CN CN202280017023.6A patent/CN116917874A/zh active Pending
- 2022-03-18 EP EP22715474.7A patent/EP4278264A1/en active Pending
- 2022-03-18 JP JP2023558217A patent/JP2024512541A/ja active Pending
- 2022-03-18 KR KR1020237032294A patent/KR20230159437A/ko unknown
- 2022-05-20 US US17/750,297 patent/US11721373B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11348624B1 (en) | 2022-05-31 |
WO2022203970A1 (en) | 2022-09-29 |
JP2024512541A (ja) | 2024-03-19 |
EP4278264A1 (en) | 2023-11-22 |
KR20230159437A (ko) | 2023-11-21 |
US20230023866A1 (en) | 2023-01-26 |
US11721373B2 (en) | 2023-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6341318B1 (en) | DMA data streaming | |
US11721373B2 (en) | Shared multi-port memory from single port | |
CN110059020B (zh) | 扩展内存的访问方法、设备以及系统 | |
US10203878B2 (en) | Near memory accelerator | |
JP5431003B2 (ja) | リコンフィギュラブル回路及びリコンフィギュラブル回路システム | |
US20040139288A1 (en) | Coded write masking | |
US8850137B2 (en) | Memory subsystem for counter-based and other applications | |
KR20110089321A (ko) | 직렬 포트 메모리 통신 레이턴시 및 신뢰성을 향상시키기 위한 방법 및 시스템 | |
JPH07219844A (ja) | キャッシュラインリプレーシング装置及び方法 | |
US8954644B2 (en) | Apparatus and method for controlling memory | |
JPH11203863A (ja) | 信号遅延装置及び半導体記憶装置 | |
US7600143B1 (en) | Method and apparatus for variable delay data transfer | |
EP1849083A2 (en) | System and method for a memory with combined line and word access | |
WO2018148918A1 (zh) | 存储设备、芯片及存储设备的控制方法 | |
JP2006527878A (ja) | 多重メモリを有するデータ処理回路 | |
US8169851B2 (en) | Memory device with pseudo double clock signals and the method using the same | |
JP4812058B2 (ja) | Fifo管理方法及びパイプラインプロセッサシステム | |
US6360307B1 (en) | Circuit architecture and method of writing data to a memory | |
US20090235026A1 (en) | Data transfer control device and data transfer control method | |
US7913013B2 (en) | Semiconductor integrated circuit | |
CN116414743A (zh) | 用于控制存储器的方法、存储器控制器及芯片 | |
US9767054B2 (en) | Data transfer control device and memory-containing device | |
US8244929B2 (en) | Data processing apparatus | |
US9653148B1 (en) | Multi-bank memory device and system | |
US6762973B2 (en) | Data coherent logic for an SRAM device |
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 |