CN106095328A - 每个周期具有一个读端口和一个或多个写端口的多组存储器 - Google Patents
每个周期具有一个读端口和一个或多个写端口的多组存储器 Download PDFInfo
- Publication number
- CN106095328A CN106095328A CN201610273711.5A CN201610273711A CN106095328A CN 106095328 A CN106095328 A CN 106095328A CN 201610273711 A CN201610273711 A CN 201610273711A CN 106095328 A CN106095328 A CN 106095328A
- Authority
- CN
- China
- Prior art keywords
- write order
- memory
- group
- read command
- entry
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1684—Details of memory controller using multiple buses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Static Random-Access Memory (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种用于数据存储的方法,包括在网络元件中从分组处理电路至少接收读命令和写命令,用于在包括多个单端口存储器组的存储器阵列中执行。当读命令和写命令要访问存储器阵列中的不同存储器组时,在同一存储器访问周期中在不同的存储器组中为分组处理电路被执行读命令和写命令。当读命令和写命令都要访问第一存储器组时,选择存储器阵列中的第二存储器组。在同一存储器访问周期中在第一存储器组中执行读命令并且在第二存储器组中执行写命令。
Description
相关申请的交叉引用
本申请要求2015年4月29日递交的美国临时专利申请62/154,578的权益,该临时专利申请的公开被通过引用合并于此。
技术领域
本公开总地涉及每个周期具有一个读端口和一个或多个写端口的多组存储器,具体地涉及存储器设备,并且更具体地涉及多端口存储器系统。
背景技术
用于允许对存储器的同时访问的各种技术在本领域中是已知的。例如,其公开通过引用被合并于此的美国专利8,514,651描述了一种具有一组存储器组来存储内容数据的存储器设备。在第一存储器组中执行相应的读存储器操作的至少两个读请求在单个时钟周期中被接收。所述至少两个请求中的一个或多个被阻止(block)访问第一存储器组,并且作为响应:与第一存储器组相关联并且与其中所存储的内容数据不同的冗余数据被访问,并且在不访问第一存储器组的情况下,被存储在第一存储器组中的内容数据的至少一部分基于相关联的冗余数据被重新构建。第一读存储器操作利用被存储在第一存储器组中的内容数据而被执行,并且第二读存储器操作在i)不访问第一存储器组和ii)基于相关联的冗余数据的情况下利用被重新构建的内容数据而被执行。
以上描述被提供作为对本领域中的相关技术的总体概览并且不应当被理解为承认其所包含的任何信息构成本专利申请的现有技术。
发明内容
这里所描述的实施例提供一种用于数据存储的方法。该方法包括在网络元件从分组处理电路中至少接收读命令和写命令,用于在包括多个单端口存储器组的存储器阵列中执行。当读命令和写命令要访问存储器阵列中的不同存储器组时,在同一存储器访问周期内在不同的存储器组中为分组处理电路执行读命令和写命令。当读命令和写命令都要访问第一存储器组时,选择存储器阵列中的第二存储器组。在同一存储器访问周期中在第一存储器组中执行读命令并且在第二存储器组中执行写命令。
在一些实施例中,至少接收读命令和写命令包括接收读命令和多个写命令,并且当写命令中的两个或更多个写命令要访问第一存储器组时,选择两个或更多个第二存储器组,并且全部在与读命令相同的存储器访问周期中在相应的第二存储器组中执行写命令中的两个或更多个写命令。
在一些实施例中,写命令最初旨在用于在第一存储器组中在第一条目中执行,第一条目属于包括多个存储器组中的多个相应条目的存储带,并且选择第二存储器组包括选择保存有属于所述存储带的预先指派的冗余条目的存储器组。在实施例中,在第二存储器组中执行写命令包括在冗余条目中执行写命令。在示例实施例中,该方法还包括重新指派第一存储器组中的第一条目来用作冗余条目。
在实施例中,写命令指定最初被映射到第一存储器组中的第一条目的逻辑地址,并且在第二存储器组中执行写命令包括将逻辑地址重新映射到在其中写命令被执行的第二存储器组中的第二条目。在另一实施例中,读命令和写命令在大于存储器阵列的物理存储器空间的逻辑地址空间中指定相应的逻辑地址。
在一些实施例中,选择第二存储器组和执行读命令和写命令包括查询逻辑到物理映射表,该逻辑到物理映射表将在读命令和写命令中指定的逻辑地址映射到存储器阵列中的相应的物理地址。在所公开的实施例中,查询逻辑到物理映射表包括在一个或多个多端口存储器中存储逻辑到物理映射表。在备选实施例中,查询逻辑到物理映射表包括在多个触发器(FF)中存储逻辑到物理映射表。
在一些实施例中,该方法还包括在先进先出(FIFO)缓存中存储在其中相应的接收到的写命令在存储器阵列中被执行的地址,并且响应于接收到读命令,根据FIFO缓存中的地址的顺序读取地址。
根据这里所描述的实施例,还提供了一种被用在网络元件中的存储器系统。该存储器系统包括存储器阵列和控制逻辑。存储器阵列包括多个单端口存储器组。控制逻辑被配置为从网络元件的分组处理电路至少接收读命令和写命令以用于在存储器阵列中执行;当读命令和写命令要访问不同的存储器组时,在同一存储器访问周期中在不同的存储器组中为分组处理电路执行读命令和写命令;并且当读命令和写命令都要访问第一存储器组时,选择存储器阵列中的第二存储器组,并且在同一存储器访问周期中在第一存储器组中执行读命令并且在第二存储器组中执行写命令。在一些实施例中,一种网络交换机包括所公开的存储器系统。
本公开将通过对其实施例的详细描述、结合附图来更全面地得到理解,在附图中:
附图说明
图1是根据这里所描述的实施例的示意性地示出了网络元件的框图;
图2是根据这里所描述的实施例的示意性地示出了存储器系统中的数据配置的图;
图3是根据这里所描述的实施例的示意性地示出了用于在存储器系统中同时执行读命令和写命令的方法的流程图;
图4A是根据这里所描述的实施例的示意性地示出了图2的存储器系统的初始状态的图;以及
图4B是根据这里所描述的实施例的示意性地示出了解决对相同存储器组寻址的读命令和写命令之间的冲突的过程的图。
具体实施方式
这里所描述的实施例提供了改进的存储器系统和相关联的方法,能够在同一时钟周期(clock cycle)中执行读命令和一个或多个写命令。在所公开的实施例中,存储器系统利用包括N个单端口存储器组(memory bank)的存储器阵列来实现。虽然每个单独的存储器组能够在每个时钟周期中执行单个命令(读或写),但是存储器系统作为整体被设计为每个时钟周期中执行读命令和一个或多个写命令。
在一些实施例中,存储器系统包括接收来自一个或多个客户端的读和写命令的控制逻辑。读和写命令指定被暴露给客户端的逻辑地址空间中的逻辑地址。N个存储器组的各个条目通过物理地址空间中的物理地址而被标识。控制逻辑管理在逻辑地址与相应的物理地址之间进行映射的逻辑到物理映射表。
在实施例中,包括N个存储器组中的N个对应条目的存储器阵列中的每一行被视为存储带(stripe)。为了在每个时钟周期中支持一个读命令和一个写命令,控制逻辑指派每个存储带中的一个条目来用作冗余条目。存储器系统的物理地址空间因而大于逻辑存储器空间以容纳冗余条目。逻辑到物理映射表还指示每个存储带中的冗余条目的位置。如下面将描述的,存储带中的冗余条目的位置不是固定的,而是在存储器系统的操作期间变化的。
在实施例中,控制逻辑接收读命令和写命令以在用于同一时钟周期中执行。控制逻辑根据请求执行读命令。控制逻辑检查读命令和写命令是否访问相同的存储器组。如果写命令访问不同的存储器组,则控制逻辑也在同一时钟周期中根据请求执行写命令。
另一方面,如果写命令与读命令访问相同的存储器组,由于存储器组只有一个端口,不可能在同一时钟周期中执行两个命令。在这种情况下,控制逻辑选择在其中要执行写命令的备选存储器组(alternative memory bank)。在实施例中,控制逻辑选择保存有(hold)存储带中的冗余条目的存储器组,写命令的初始目的地条目属于该存储带。
控制逻辑随后将写命令中所提供的数据写入存储带的冗余条目中,并更新逻辑到物理映射表以反映在其中数据已被写入的物理地址。在更新之后,写命令中所指定的逻辑地址被映射到之前用作冗余条目的条目上。之前被映射到写命令中所指定的逻辑地址的条目被重新分配来作为存储带的冗余条目。
在实施例中,以上的整个过程在其中读命令被执行的同一时钟周期中完成。在下一个时钟周期中,存储器系统准备好执行新的读和写命令。
在备选实施例中,以上技术被扩展和泛化以在每个时钟周期中执行读命令和任意预定数目K的写命令。在这些实施例中,每个存储带有K个冗余条目。所公开的存储器系统及其组件的各种实现方式在这里被描述。包括先进先出(FIFO)存储器应用的示例应用也被描述。
所公开的存储器系统允许在每个时钟周期中执行多个命令,即使下层(underlying)存储器设备包括单端口存储器也是如此。因此,所公开的技术提供了快速并行的存储,同时保持低时钟速率、低成本、小尺寸和低功耗。
图1是根据这里所描述的实施例的示意性地示出了网络元件20的框图。在本示例中,网络元件20包括在通信网络中转发通信分组的网络交换机(network switch)。在备选实施例中,网络元件20包括任意其它合适类型的网络元件,例如路由器或网桥。
在图1的实施例中,网络元件20包括用于接收和发送分组的多个端口24和用于处理分组的合适的电路系统(circuitry),例如包括至少用于在分组处理操作期间缓存分组和用于从一个端口向另一端口转发分组的电路系统。在本示例中,网络元件20包括一个或多个客户端28,以及存储被客户端28用于处理分组的数据的存储器系统32。客户端28通常包括被配置作为处理流水线中的处理引擎、作为多个运行到完成处理器或者某种其它合适的布置中的各种处理单元或处理核,但是可以一般性地包括存储和获取数据的任何合适的模块。
在一些实施例中,存储器系统32包括在这里被称为存储器组36的多个N存储器单元、控制单元40和逻辑到物理映射表44。控制单元40(这里也被称为控制逻辑)管理存储器组36中的数据存储,并且与客户端28进行通信。逻辑到物理映射表44将(如客户端28所发出的读和写命令中所指定的)逻辑地址映射到物理地址(存储器组36中的物理存储位置)。
通常,每个存储器组36包括单端口存储器,意思是指该存储器能够在每个存储器访问周期(在实施例中一般对应于时钟周期)执行单个命令,例如一个读命令或一个写命令。所讨论的时钟周期是为存储器组36提供时钟的时钟信号的周期。在本上下文中,时钟周期在这里也被称为存储器访问周期,并且这两个术语被可互换地使用。在本示例中,每个存储器组36包括单端口静态随机访问存储器(SRAM)。但是,作为备选,存储器组36利用任何其它合适类型的存储器(例如动态随机访问存储器(DRAM))来实现。
虽然每个存储器组36每个时钟周期能够执行不超过单个读命令或单个写命令,但是如下面将详细说明的,存储器系统32作为整体被设计为在每个时钟周期中执行一个读命令和K个写命令。K是预定义的整数。
图1中所示的网络元件20和存储器系统32的配置是示例配置,这些配置只是为了清楚而被示出的。在备选实施例中,任何其它合适的网络元件和/或存储器系统配置都可以被使用。对于理解所公开的技术不是必须的网络元件20和存储器系统32的元件为了清楚起见已经从图中省略。
网络元件20和存储器系统32的不同元件通常利用专用硬件被实现,例如利用一个或多个专用集成电路(ASIC)、现场可编程门阵列(FPGA)和/或RF集成电路(RFIC)。或者,网络元件20和/或存储器系统32的一些元件(例如控制单元40(也被称为控制逻辑)或者其部件)可以利用在可编程硬件上的软件执行或者利用硬件和软件元件的组合来实现。
当用可编程处理器上的软件来实现所公开的技术时,软件可以按电子形式通过网络被下载到处理器上,或者作为替代或附加,软件可以被提供和/或存储在诸如磁、光或电子存储器之类的非瞬态有形介质上。
图2是根据这里所描述的实施例的示意性地示出了存储器组36中的数据配置的图。在本非限制性示例中,N=5,并且存储器组36被表示为组(BANK)#1…组#5。本示例中的存储器系统32被设计用于每个时钟周期执行一个读命令和一个写命令,即K=1。
在图2的实施例中,每个存储器组36包括多个条目50。每个条目50保存数据字(data word)或其它基本数据单元。N个相应的存储器组中的每组N个对应条目被称为存储带54。换言之,组#1的第m个条目、组#2的第m个条目、组#3的第m个条目、组#4的第m个条目和组#5的第m个条目被一同称为第m个存储带54。
在本示例中,其中K=1,控制单元40指派每个存储带54中的条目中的一个条目来用作冗余条目58。在一般情况下,其中存储器系统32被设计用于在每个时钟周期执行K个写命令,控制单元40指派每个存储带54中的K个条目来用作冗余条目58。冗余条目58用图中的哈希模式(hashing pattern)被标记。如下面将说明的,存储带中的冗余条目的位置没有被固定,而是随时间而变化的。
在一些实施例中,组#1…组#5中的每个条目50通过相应的物理地址被标识。物理地址的集合被称为存储器系统32的物理存储器空间。作为被暴露给客户端28的存储器空间的存储器系统的逻辑存储器空间具有与非冗余条目的总数相对应的大小。因而,在实施例中,存储器系统32的逻辑存储器空间比物理存储器空间小。逻辑存储器空间的大小对应于可以被存储在存储器系统32中的总数据量。逻辑和物理存储器空间之间的大小差异对应于冗余条目58的数目。
通常,客户端28发布指定逻辑地址的写和读命令,并且不知道数据被实际存储在其中的物理地址。逻辑到物理映射表44(图1)保存每个逻辑地址与相应的物理地址之间的当前映射。控制单元40利用表格44来在执行写和读命令时在逻辑和物理地址之间转换。通常,映射表格44还指示每个存储带54的冗余条目58(或者对于K>1来说是多个冗余条目58)的位置。
如现在将详细说明的,即使当存储器组36是单端口存储器时,对冗余条目58的使用也使得控制单元40能够在每个时钟周期中执行一个读命令和K个写命令。
参考图2,考虑在同一时钟周期中要被执行的读命令和写命令。如果读命令和写命令访问位于不同存储器组36中的条目50,则控制单元40能够按请求执行读命令和写命令。
另一方面,如果读命令和写命令访问正好位于相同存储器组36中的条目50,则因为存储器组只能在每个时钟周期中执行一个命令所以冲突(collision)必须被解决。在这种情况下,控制单元40执行所指定的读命令,即从所指定的条目50中读取数据。但是,写命令不是在指定条目50中而是在同一存储带54的冗余条目58中被执行。控制单元随后相应地更新逻辑到物理映射表44。
因为对于K=1来说,每个存储带54有冗余条目58,所以读命令和一个写命令之间的冲突保证能被成功地解决。在一般情况下,每个存储带包括K个冗余条目58。因此,即使是在所有K+1个命令要访问同一存储器组36时所发生的读命令和K个写命令之间的最坏情况的冲突也保证能被解决。
图3是根据这里所描述的实施例的示意性地示出了用于在存储器系统32中同时执行读命令和写命令的方法的流程图。为了清楚起见,图3的方法参考K=1的情况,即每个时钟周期执行一个读命令和一个写命令。对于任何其它K值,该方法可以通过适当的适配而按类似的方式来应用。
该方法开始于在初始化操作60处控制单元40指派每个存储带54的冗余条目58,并且初始化逻辑到物理映射表44。示例初始指派如下面的图4A中所示。在该示例中,最初在组#5中指派每个存储带的冗余条目。表格44中的初始逻辑到物理映射将每个逻辑地址映射到组#1…组#4中的相应条目50。但是,这种初始指派不是强制性的,并且控制单元40可以在备选实施例中应用任何其它合适的初始指派。
在命令输入操作64处,控制单元40接收来自一个或多个客户端28的读命令和写命令。读命令和写命令将在同一时钟周期中在存储器系统32中被执行。
读命令请求从被映射到位于被表示为X的存储器组36中的物理地址的逻辑地址读取数据。写命令请求将数据写入被映射到位于被表示为Y的存储器组36中的物理地址的逻辑地址中。
在读执行操作68处,控制单元40按请求从组X中的指定条目50读取数据,并将读取出的数据返回给请求客户端28。因而,在实施例中,读命令被赋予比写命令更高的无条件的优先级。
在冲突检查操作72处,控制单元40检查写命令是否与读命令访问同一存储器组36,即是否X=Y。如果写命令访问不同的存储器组(X≠Y),则在正常写操作76处,控制单元40按请求将数据写入存储器组Y中的指定条目50中。操作76的写命令与操作68的读命令在同一时钟周期期间被执行。该方法随后循环回到操作64,其中存储器系统32准备好接收接下来的读和写命令。
否则,如果写命令与读命令访问同一存储器组(X=Y),则控制单元40执行冲突解决过程(collision resolution process),该过程将仍使得写命令能够在与读命令相同的时钟周期中被执行。这个过程还在下面的图4B中被演示。
冲突解决过程开始于在备选组选择操作80处,控制单元40选择在其中要执行写命令的备选存储器组36。备选存储器组是保存与最初被写命令访问的条目50的同一存储带54中的冗余条目58的组。
换言之,如果写命令被假设在组Y(=X)的行上的第m个条目50(属于第m个存储带54)中写入数据,则控制单元40查找表格44,并选择保存有那个存储带中的冗余条目58的存储器组。这个存储器组的第m行被已知为保存冗余条目58。在冲突写入操作84处,控制单元40将写命令中所提供的数据写入第m个存储带中的冗余条目中(即所选择的备选存储器组的第m个条目中)。操作84的写命令与操作68的读命令在同一时钟周期中被执行。
在映射更新操作88处,控制单元40按如下方式更新表格44中的逻辑到物理映射:
■写命令中所指定的逻辑地址被重新映射,并且现在指向在相同存储带中但在备选存储器组中的物理地址(其中数据在操作84处被存储的物理地址,该物理地址到现在为止都是存储带的冗余条目)。
■之前被映射到(组X(=Y)中的)写命令中所指定的逻辑地址的物理地址现在被指派来用作存储带的冗余条目。
该方法随后循环回到上面的操作64,用于接收并执行后续的读和写命令。
从上面的描述可以看出,存储带54内的冗余条目58的位置没有被固定。例如,每当冲突被检测到并解决时,特定存储带中的当前冗余条目被用于执行写命令,并且这个写命令的原始目的地条目被重新指定为存储带的冗余条目。下面的图4A和4B示出了该过程。
图4A是根据这里所描述的实施例的示意性地示出了存储器组36的初始状态的图。在该非限制性示例中,各个存储带的冗余条目(用哈希模式被标记)被初始分配在组#5中。
图4B是根据这里所描述的实施例的示意性地示出了在稍后的时间点处的存储器组36的状态的图。如图中所示,在执行了多个读和写命令之后,冗余条目(用哈希模式标记)被分布在不同存储带中的各个位置中。
图4B还演示了解决被寻址到同一存储器组的读命令和写命令之间的冲突的上述过程。在本示例中,读命令请求从被映射到条目100(被标记为“R”)的逻辑地址ADD_R中读出数据。在同一时钟周期中,写命令请求向被映射到条目104(被标记为“W”)的逻辑地址ADD_W写入数据。
两个条目100和104正好位于相同的存储器组-组#2中。由于组#2是单端口存储器,所以不可能在同一时钟周期中执行两个命令,并且冲突需要被解决。
在实施例中,控制单元40根据请求从条目100中读取数据。为了解决冲突,控制单元40选择在其中要执行写命令的备选组,而不是条目104。在实施例中,控制单元40选择保存条目104的存储带中的冗余条目的存储器组。在图4B的示例中,这个组是组#4,并且所讨论的冗余条目被标记为108。
控制单元40在与从条目100中读取数据同一时钟周期中在条目108中而不是条目104中写入写命令中所提供的数据。控制单元40还更新表格44中的逻辑到物理映射以反映逻辑地址ADD_W现在被映射到条目108的物理地址。来自这个逻辑地址的后续读命令因而将从条目108中读数据。此外,控制单元40重新分配条目104来用作存储带的冗余条目。这个分配也在表格44中被更新。
从以上描述中可以看出,映射表格44应当以比用于执行存储器组36中的读和写命令的时钟速率更高的速率被访问。例如,当解决最坏情况的冲突时,控制单元40访问映射表格44一次来找到其中要执行读命令的物理地址,并且对于每个写命令访问两次(一次用于找到在其中要执行写命令的物理地址,一次用于更新针对逻辑地址ADD_W的映射和对冗余条目的新的指派)。
总地来说,映射表格44在一个时钟周期中被访问1+2K次。为了在不提高存储器系统32的内部时钟速率的情况下支持这个访问速率,在一些实施例中,映射表格44利用多端口存储器来实现。在备选实施例中,映射表格利用(例如被布置在寄存器中的——)离散的触发器(Flip-Flop——FF)来实现。
在一个示例实施例中,对于K=1,映射表格44利用一对双端口RAM(通常比FF占用更小的区域)来实现。映射表格被复制,即控制单元40在两个双端口RAM上存储两个相应的映射表格44的副本(copy)。为了找到用于执行读命令的物理地址,控制单元40访问一个RAM上的表格44的副本。为了找到用于执行写命令的物理地址,控制单元40访问在其它RAM上的表格44的副本。当更新冗余条目的映射和位置时,控制单元40更新两个RAM上的两个副本。
为了清楚起见,以上实现方式参考K=1。在备选实施例中,映射表格44可以针对任意K(每个时钟周期中任意数目的写命令)、利用更大数目的复制RAM和/或利用具有更大数目的端口的多端口RAM按类似的方式来实现。在实施例中,被用于实现映射表格44的多端口RAM本身由利用存储器系统32的结构的单端口RAM来实现。
在一些实施例中,存储器系统32作为先入先出(FIFO)缓冲存储器被管理和使用。这样的FIFO是有用的,例如用于实现用于吸收网络元件20中的分组串(bursts ofpackets)的分组队列,用于在包含分组的首部信息的更小尺寸的描述符被处理的同时存储分组,用于实现统计存储器中的重排序模块或者用于任何其它合适的目的。在FIFO实现方式中,通常不需要逻辑到物理地址转变,因为数据不通过地址被访问。因此,在这些实施例中,映射表格44通常被省略。
在这些实施例中,控制单元40通常按特定顺序接收数据项(例如分组),利用上述技术存储存储器组36中的数据项,并且通过返回最早被接收的数据项来对每个读命令做出响应。为了这个目的,控制单元40通常管理很小的控制FIFO缓存,该缓存按照数据项被接收的顺序跟踪数据项的物理地址。
在各个实施例中,这里所描述的方法和系统可应用于各种应用中。一个示例应用是存储例如互联网协议电视(IPTV)应用传输中的多播流量。在这样的应用中,分组的多个重复副本串(burst)应当被发送给去往多个用户的网络元件的多个目标端口。所公开的技术非常适合用于存储这样的重复副本。
应当注意上述实施例通过示例被引述,并且本发明不局限于上文中具体显示和描述的。相反,本发明的范围包括上文中所描述的各个特征的组合和子组合以及本领域技术人员在阅读了之前的描述之后可做出的现有技术中没有公开的改变和修改。本专利申请中通过引用所包括的文档被认为是本申请的整体部分,只是如果有任何术语在这些被合并的文档中以与本说明书中明确或隐含地做出的定义冲突的方式被定义时,只应当考虑本说明书中的定义。
Claims (20)
1.一种用于数据存储的方法,包括:
在网络元件中,从分组处理电路至少接收读命令和写命令,用于在包括多个单端口存储器组的存储器阵列中执行;
当所述读命令和所述写命令要访问所述存储器阵列中的不同存储器组时,在同一存储器访问周期中在不同的所述存储器组中为所述分组处理电路执行所述读命令和所述写命令;以及
当所述读命令和所述写命令都要访问第一存储器组时,选择所述存储器阵列中的第二存储器组,并且在所述同一存储器访问周期中在所述第一存储器组中执行所述读命令并且在所述第二存储器组中执行所述写命令。
2.根据权利要求1所述的方法,其中至少接收所述读命令和所述写命令包括接收所述读命令和多个写命令,并且当所述写命令中的两个或更多个写命令要访问所述第一存储器组时,选择两个或更多个第二存储器组,并且全部在与所述读命令相同的存储器访问周期中在相应的第二存储器组中执行所述写命令中的所述两个或更多个写命令。
3.根据权利要求1所述的方法,其中所述写命令最初旨在用于在所述第一存储器组中在第一条目中执行,所述第一条目属于包括所述多个存储器组中的多个相应的条目的存储带,并且其中选择所述第二存储器组包括选择保存有属于所述存储带的预先指派的冗余条目的存储器组。
4.根据权利要求3所述的方法,其中在所述第二存储器组中执行所述写命令包括在所述冗余条目中执行所述写命令。
5.根据权利要求4所述的方法,包括重新指派所述第一存储器组中的所述第一条目来用作所述冗余条目。
6.根据权利要求1所述的方法,其中所述写命令指定最初被映射到所述第一存储器组中的第一条目的逻辑地址,并且其中在所述第二存储器组中执行所述写命令包括将所述逻辑地址重新映射到在其中所述写命令被执行的所述第二存储器组中的第二条目。
7.根据权利要求1所述的方法,其中所述读命令和所述写命令在大于所述存储器阵列的物理存储器空间的逻辑地址空间中指定相应的逻辑地址。
8.根据权利要求1所述的方法,其中选择所述第二存储器组和执行所述读命令和所述写命令包括查询逻辑到物理映射表,所述逻辑到物理映射表将在所述读命令和所述写命令中指定的逻辑地址映射到所述存储器阵列中的相应的物理地址。
9.根据权利要求8所述的方法,其中查询所述逻辑到物理映射表包括在一个或多个多端口存储器中存储所述逻辑到物理映射表。
10.根据权利要求8所述的方法,其中查询所述逻辑到物理映射表包括在多个触发器(FF)中存储所述逻辑到物理映射表。
11.根据权利要求1所述的方法,包括在先进先出(FIFO)缓存中存储在其中相应的接收到的写命令在所述存储器阵列中被执行的地址,并且响应于接收到读命令,根据所述FIFO缓存中的所述地址的顺序读取所述地址。
12.一种网络元件中的存储器系统,所述存储器系统包括:
存储器阵列,所述存储器阵列包括多个单端口存储器组;以及
控制逻辑,所述控制逻辑被配置为从所述网络元件的分组处理电路至少接收读命令和写命令以用于在所述存储器阵列中执行;当所述读命令和所述写命令要访问不同的存储器组时在同一存储器访问周期中在不同的存储器组中为所述分组处理电路执行所述读命令和所述写命令;以及当所述读命令和所述写命令都要访问第一存储器组时,选择所述存储器阵列中的第二存储器组,并且在所述同一存储器访问周期中在所述第一存储器组中执行所述读命令并且在所述第二存储器组中执行所述写命令。
13.根据权利要求12所述的存储器系统,其中所述控制逻辑被配置为:接收所述读命令和多个写命令,并且当所述写命令中的两个或更多个写命令要访问所述第一存储器组时,选择两个或更多个第二存储器组,并且全部在与所述读命令相同的存储器访问周期中在相应的第二存储器组中执行所述写命令中的所述两个或更多个写命令。
14.根据权利要求12所述的存储器系统,其中所述写命令最初旨在用于在所述第一存储器组中在第一条目中执行,所述第一条目属于包括所述多个存储器组中的多个相应的条目的存储带,并且其中所述控制逻辑被配置为选择保存有属于所述存储带的预先指派的冗余条目的存储器组,并且在所述冗余条目中执行所述写命令。
15.根据权利要求14所述的存储器系统,其中所述控制逻辑被配置为重新指派所述第一存储器组中的所述第一条目来用作所述冗余条目。
16.根据权利要求12所述的存储器系统,其中所述写命令指定最初被映射到所述第一存储器组中的第一条目的逻辑地址,并且其中所述控制逻辑被配置为将所述逻辑地址重新映射到在其中所述写命令被执行的所述第二存储器组中的第二条目。
17.根据权利要求12所述的存储器系统,其中所述控制逻辑被配置为通过查询逻辑到物理映射表来选择所述第二存储器组和执行所述读命令和所述写命令,所述逻辑到物理映射表将在所述读命令和所述写命令中指定的逻辑地址映射到所述存储器阵列中的相应的物理地址。
18.根据权利要求17所述的存储器系统,包括被配置为存储所述逻辑到物理映射表的一个或多个多端口存储器。
19.根据权利要求17所述的存储器系统,包括被配置为存储所述逻辑到物理映射表的多个触发器(FF)。
20.一种包括根据权利要求12所述的存储器系统的网络交换机。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562154578P | 2015-04-29 | 2015-04-29 | |
US62/154,578 | 2015-04-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106095328A true CN106095328A (zh) | 2016-11-09 |
CN106095328B CN106095328B (zh) | 2021-02-26 |
Family
ID=55808950
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610273711.5A Active CN106095328B (zh) | 2015-04-29 | 2016-04-28 | 每个周期具有一个读端口和一个或多个写端口的多组存储器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11099746B2 (zh) |
EP (1) | EP3089045B1 (zh) |
CN (1) | CN106095328B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020124609A1 (zh) * | 2018-12-22 | 2020-06-25 | 华为技术有限公司 | 一种处理芯片、方法及相关设备 |
CN112262562A (zh) * | 2018-04-12 | 2021-01-22 | 利盟国际有限公司 | 在图像形成装置和可更换供给物品之间的通信 |
CN114385083A (zh) * | 2022-01-07 | 2022-04-22 | 烽火通信科技股份有限公司 | 一种数据帧统计采集装置及方法 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11403173B2 (en) | 2015-04-30 | 2022-08-02 | Marvell Israel (M.I.S.L) Ltd. | Multiple read and write port memory |
US10474528B2 (en) * | 2017-10-02 | 2019-11-12 | Western Digital Technologies, Inc. | Redundancy coding stripe based on coordinated internal address scheme across multiple devices |
US10379948B2 (en) | 2017-10-02 | 2019-08-13 | Western Digital Technologies, Inc. | Redundancy coding stripe based on internal addresses of storage devices |
US10553285B2 (en) * | 2017-11-28 | 2020-02-04 | Western Digital Technologies, Inc. | Single-port memory with opportunistic writes |
US10409511B1 (en) | 2018-06-30 | 2019-09-10 | Western Digital Technologies, Inc. | Multi-device storage system with distributed read/write processing |
US10725941B2 (en) | 2018-06-30 | 2020-07-28 | Western Digital Technologies, Inc. | Multi-device storage system with hosted services on peer storage devices |
US11036403B2 (en) | 2018-07-30 | 2021-06-15 | Marvell Asia Pte, Ltd. | Shared memory block configuration |
US10592144B2 (en) | 2018-08-03 | 2020-03-17 | Western Digital Technologies, Inc. | Storage system fabric with multichannel compute complex |
US10868769B1 (en) * | 2018-08-07 | 2020-12-15 | Innovium, Inc. | Read instruction queues in a network device |
US11194733B2 (en) * | 2019-02-25 | 2021-12-07 | Marvell Asia Pte, Ltd. | Accelerating access to memory banks in a data storage system |
US11216212B2 (en) | 2019-03-19 | 2022-01-04 | International Business Machines Corporation | Minimizing conflicts in multiport banked memory arrays |
US12014084B2 (en) * | 2022-02-10 | 2024-06-18 | Stmicroelectronics S.R.L. | Data memory access collision manager, device and method |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103455281A (zh) * | 2012-05-30 | 2013-12-18 | 博科通讯系统有限公司 | 由单端口存储器块实现的两端口存储器 |
CN103534693A (zh) * | 2010-11-22 | 2014-01-22 | 马维尔国际贸易有限公司 | 在客户端之间共享对存储器的访问 |
US20140177324A1 (en) * | 2012-12-21 | 2014-06-26 | Lsi Corporation | Single-Port Read Multiple-Port Write Storage Device Using Single-Port Memory Cells |
US8995210B1 (en) * | 2013-11-26 | 2015-03-31 | International Business Machines Corporation | Write and read collision avoidance in single port memory devices |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4870643A (en) | 1987-11-06 | 1989-09-26 | Micropolis Corporation | Parallel drive array storage system |
JP3176157B2 (ja) | 1992-12-28 | 2001-06-11 | 株式会社日立製作所 | ディスクアレイ装置及びそのデータ更新方法 |
US5508732A (en) | 1993-03-22 | 1996-04-16 | International Business Machines Corporation | Data server, control server and gateway architecture system and method for broadcasting digital video on demand |
US5414455A (en) | 1993-07-07 | 1995-05-09 | Digital Equipment Corporation | Segmented video on demand system |
US5581479A (en) | 1993-10-15 | 1996-12-03 | Image Telecommunications Corp. | Information service control point, which uses different types of storage devices, which retrieves information as blocks of data, and which uses a trunk processor for transmitting information |
US6185662B1 (en) * | 1997-12-22 | 2001-02-06 | Nortel Networks Corporation | High availability asynchronous computer system |
US6311251B1 (en) | 1998-11-23 | 2001-10-30 | Storage Technology Corporation | System for optimizing data storage in a RAID system |
US6397324B1 (en) | 1999-06-18 | 2002-05-28 | Bops, Inc. | Accessing tables in memory banks using load and store address generators sharing store read port of compute register file separated from address register file |
US6557053B1 (en) * | 2000-01-04 | 2003-04-29 | International Business Machines Corporation | Queue manager for a buffer |
IL156146A0 (en) | 2000-11-28 | 2003-12-23 | Seachange International Inc | Content/service handling and delivery |
US7082502B2 (en) | 2001-05-15 | 2006-07-25 | Cloudshield Technologies, Inc. | Apparatus and method for interfacing with a high speed bi-directional network using a shared memory to store packet data |
US6789155B2 (en) | 2001-08-29 | 2004-09-07 | Micron Technology, Inc. | System and method for controlling multi-bank embedded DRAM |
US7437472B2 (en) | 2001-11-28 | 2008-10-14 | Interactive Content Engines, Llc. | Interactive broadband server system |
US6839797B2 (en) | 2001-12-21 | 2005-01-04 | Agere Systems, Inc. | Multi-bank scheduling to improve performance on tree accesses in a DRAM based random access memory subsystem |
JP2005092630A (ja) * | 2003-09-18 | 2005-04-07 | Sony Corp | メモリ制御装置及び制御方法 |
US7149139B1 (en) * | 2004-01-28 | 2006-12-12 | Marvell Semiconductor Israel Ltd. | Circuitry and methods for efficient FIFO memory |
US9116823B2 (en) * | 2006-12-06 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for adaptive error-correction coding |
US7953919B2 (en) | 2007-12-21 | 2011-05-31 | Spansion Llc | Physical block addressing of electronic memory devices |
KR101638764B1 (ko) | 2008-12-19 | 2016-07-22 | 휴렛 팩커드 엔터프라이즈 디벨롭먼트 엘피 | 균일한 판독 대기시간을 위한 중복 데이터 저장 |
US8266408B2 (en) | 2009-03-17 | 2012-09-11 | Memoir Systems, Inc. | System and method for storing data in a virtualized high speed memory system |
US8358651B1 (en) | 2009-09-21 | 2013-01-22 | Marvell International Ltd. | Switch device having a plurality of processing cores |
US8473669B2 (en) | 2009-12-07 | 2013-06-25 | Sandisk Technologies Inc. | Method and system for concurrent background and foreground operations in a non-volatile memory array |
US8359438B2 (en) | 2010-05-18 | 2013-01-22 | Avago Technologies Enterprise IP (Singapore) Pte. Ltd. | Memory banking system and method to increase memory bandwidth via parallel read and write operations |
US8645609B2 (en) * | 2010-12-06 | 2014-02-04 | Brocade Communications Systems, Inc. | Two-port memory implemented with single-port memory blocks |
US8886880B2 (en) | 2012-05-29 | 2014-11-11 | Dot Hill Systems Corporation | Write cache management method and apparatus |
US9158683B2 (en) * | 2012-08-09 | 2015-10-13 | Texas Instruments Incorporated | Multiport memory emulation using single-port memory devices |
US8724423B1 (en) * | 2012-12-12 | 2014-05-13 | Lsi Corporation | Synchronous two-port read, two-port write memory emulator |
US9720717B2 (en) * | 2013-03-14 | 2017-08-01 | Sandisk Technologies Llc | Virtualization support for storage devices |
US9105318B2 (en) | 2013-06-07 | 2015-08-11 | Industrial Technology Research Institute | Memory device and method operable to provide multi-port functionality thereof |
WO2016092364A1 (en) | 2014-12-09 | 2016-06-16 | Marvell Israel (M.I.S.L.) Ltd. | System and method for performing simultaneous read and write operations in memory |
-
2016
- 2016-04-07 US US15/092,634 patent/US11099746B2/en active Active
- 2016-04-14 EP EP16165279.7A patent/EP3089045B1/en active Active
- 2016-04-28 CN CN201610273711.5A patent/CN106095328B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103534693A (zh) * | 2010-11-22 | 2014-01-22 | 马维尔国际贸易有限公司 | 在客户端之间共享对存储器的访问 |
CN103455281A (zh) * | 2012-05-30 | 2013-12-18 | 博科通讯系统有限公司 | 由单端口存储器块实现的两端口存储器 |
US20140177324A1 (en) * | 2012-12-21 | 2014-06-26 | Lsi Corporation | Single-Port Read Multiple-Port Write Storage Device Using Single-Port Memory Cells |
US8995210B1 (en) * | 2013-11-26 | 2015-03-31 | International Business Machines Corporation | Write and read collision avoidance in single port memory devices |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112262562A (zh) * | 2018-04-12 | 2021-01-22 | 利盟国际有限公司 | 在图像形成装置和可更换供给物品之间的通信 |
CN112262562B (zh) * | 2018-04-12 | 2023-10-03 | 利盟国际有限公司 | 在图像形成装置和可更换供给物品之间的通信 |
WO2020124609A1 (zh) * | 2018-12-22 | 2020-06-25 | 华为技术有限公司 | 一种处理芯片、方法及相关设备 |
CN114385083A (zh) * | 2022-01-07 | 2022-04-22 | 烽火通信科技股份有限公司 | 一种数据帧统计采集装置及方法 |
CN114385083B (zh) * | 2022-01-07 | 2023-05-23 | 烽火通信科技股份有限公司 | 一种数据帧统计采集装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3089045A1 (en) | 2016-11-02 |
CN106095328B (zh) | 2021-02-26 |
US11099746B2 (en) | 2021-08-24 |
EP3089045B1 (en) | 2020-06-17 |
US20160320989A1 (en) | 2016-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106095328A (zh) | 每个周期具有一个读端口和一个或多个写端口的多组存储器 | |
CN106126112B (zh) | 每个周期具有多个读取端口和多个写入端口的多条存储器 | |
KR101638764B1 (ko) | 균일한 판독 대기시간을 위한 중복 데이터 저장 | |
CN108459974A (zh) | 集成闪存的高带宽存储器设备 | |
US9841913B2 (en) | System and method for enabling high read rates to data element lists | |
CN102681946B (zh) | 内存访问方法和装置 | |
CN111125049B (zh) | 基于rdma与非易失内存的分布式文件数据块读写方法及系统 | |
US10235300B2 (en) | Memory system including memory device and operation method thereof | |
CN110109612A (zh) | 存储器模块及其操作方法 | |
US11403173B2 (en) | Multiple read and write port memory | |
US7822915B2 (en) | Memory controller for packet applications | |
US10713114B2 (en) | Memory module and operation method of the same | |
US9785367B2 (en) | System and method for enabling high read rates to data element lists | |
US10387322B2 (en) | Multiple read and write port memory | |
CN110147345A (zh) | 一种基于rdma的键值存储系统及其工作方法 | |
US20220188015A1 (en) | Apparatus and method for performing target refresh operation | |
US9496009B2 (en) | Memory with bank-conflict-resolution (BCR) module including cache | |
US20090132765A1 (en) | Dual controller storage apparatus and cache memory mirror method thereof | |
US10614019B2 (en) | Method and system for fast ordered writes with target collaboration | |
CN109522149B (zh) | 存储模块 | |
US20140321464A1 (en) | Multi-level replication counter storage device for multicast packet processing and related method for managing multicast packet processing | |
US8677078B1 (en) | Systems and methods for accessing wide registers | |
US10067690B1 (en) | System and methods for flexible data access containers | |
US20180276068A1 (en) | Error correction code in memory | |
CN108959106A (zh) | 内存访问方法和装置 |
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 |