CN106126112B - 每个周期具有多个读取端口和多个写入端口的多条存储器 - Google Patents
每个周期具有多个读取端口和多个写入端口的多条存储器 Download PDFInfo
- Publication number
- CN106126112B CN106126112B CN201610280155.4A CN201610280155A CN106126112B CN 106126112 B CN106126112 B CN 106126112B CN 201610280155 A CN201610280155 A CN 201610280155A CN 106126112 B CN106126112 B CN 106126112B
- Authority
- CN
- China
- Prior art keywords
- memory
- data
- clock cycle
- group
- write
- 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
Images
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/061—Improving I/O performance
-
- 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/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- 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/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/0656—Data buffering arrangements
-
- 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
-
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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
-
- 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
-
- 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)
- Dram (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Mathematical Physics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明的各实施例总体上涉及每个周期具有多个读取端口和多个写入端口的多条存储器。具体地,涉及一种用于数据存储的方法,包括接收用于在同一时钟周期中在存储器阵列中执行的一个或多个读取命令以及一个或多个写入命令,该存储器阵列包括被分为组的多个单端口存储器条。写入命令提供数据用于存储但是没有规定要存储数据的存储位置。选择组中没有被读取命令在同一时钟周期内访问的一个或多个组。针对写入命令在所选择的一个或多个组中的单端口存储器条中挑选可用存储位置。在同一时钟周期期间,将在写入命令中提供的数据存储在所挑选的存储位置,并且检索读取命令请求的数据。通过报告所挑选的存储位置来确认写入命令的执行。
Description
相关申请的交叉引用
本申请要求于2015年5月7日提交的美国临时专利申请62/158,094的权益,其公开内容通过引用合并于此。
技术领域
本公开总体上涉及存储器设备,并且具体地涉及多端口存储器系统。
背景技术
现有技术中已知各种用于使得能够同时访问存储器的技术。例如,其公开通过引用合并于此的美国专利8,514,651描述了一种具有用以存储内容数据的一组存储器条的存储器设备。在单个时钟周期期间接收在第一存储器条中执行相应读取存储器操作的至少两个请求。至少两个请求中的一个或多个请求被阻止访问第一存储器条,并且响应于此:访问与第一存储器条相关联并且不同于其中所存储的内容数据的冗余数据,并且在没有访问第一存储器条的情况下,基于相关联的冗余数据来重构第一存储器条中所存储的内容数据的至少一部分。使用第一存储器条中所存储的内容数据来执行第一存储器读取操作,并且使用i)在没有访问第一存储器条的情况下并且ii)基于相关联的冗余数据重构的内容数据来执行第二存储器读取操作。
呈现以上描述作为本领域现有技术的一般综述,而不应当将其理解为承认其所包含的任何信息构成本专利申请的现有技术。
发明内容
本文中所描述的实施例提供了一种用于数据存储的方法。方法包括接收用于在同一时钟周期中在存储器阵列中执行的一个或多个读取命令以及一个或多个写入命令,该存储器阵列包括被分为组的多个单端口存储器条。写入命令提供数据用于存储但是没有规定要存储数据的存储位置。选择组中没有被读取命令在同一时钟周期内访问的一个或多个组。针对写入命令在所选择的一个或多个组中的单端口存储器条中挑选可用存储位置。在同一时钟周期期间,将在写入命令中提供的数据存储在所挑选的存储位置,并且检索读取命令请求的数据。通过报告所挑选的存储位置来确认写入命令的执行。
在一些实施例中,组包括保持组中的存储器条中的可用存储位置的列表的相应缓冲器,并且挑选可用存储位置包括查找所选择的组的缓冲器。在实施例中,执行选择组并且挑选存储位置而不需要逻辑到虚拟地址转换。
在一些实施例中,每个组还包括保持在组中的单端口存储器条中的数据字上计算的冗余信息的冗余存储器条,并且方法包括:响应于检测到读取命令从也被另一读取命令访问的组中的单端口存储器条请求数据,根据组中的其他单端口存储器条并且根据组的所述冗余存储器条中的冗余信息针对读取命令重构数据。
在实施例中,组还包括高速缓存存储器,并且其中存储在写入命令中发送的数据包括基于在写入命令中发送的数据来计算已更新冗余信息,将已更新冗余信息高速缓存在高速缓存存储器中,并且在随后的时钟周期中将已更新冗余信息存储在冗余存储器条中。在所公开的实施例中,选择组包括挑选具有最大量的可用存储位置的一个或多个组。
根据本文中所描述的实施例,还提供了一种包括存储器阵列和控制逻辑的存储器系统。存储器阵列包括被分为多个组的多个单端口存储器条。控制逻辑被配置成接收用于在同一时钟周期中在存储器阵列中执行的一个或多个读取命令以及一个或多个写入命令,其中写入命令提供数据用于存储但是没有规定要存储数据的存储位置,以选择组中没有被读取命令在同一时钟周期中访问的一个或多个组,以针对写入命令在所选择的一个或多个组中的单端口存储器条中挑选可用存储位置,以将在写入命令中提供的数据存储在所挑选的存储位置并且检索读取命令在同一时钟周期中请求的数据,并且通过报告所挑选的存储位置来确认写入命令的执行。
在一些实施例中,一种网络元件包括所公开的存储器系统。
附图说明
将根据结合附图给出的其实施例的以下详细描述来更全面地理解本公开,在附图中:
图1是示意性地图示根据本文中所描述的实施例的网络元件的框图;
图2是示意性地图示根据本文中所描述的实施例的适合用在图1的网络元件中的存储器系统的框图;以及
图3是示意性地图示根据本文中所描述的实施例的用于在同一时钟周期中执行两个读取命令和两个写入命令的方法的流程图。
具体实施方式
本文中所描述的实施例提供一种改进的系统和相关联的方法。在所公开的实施例中,存储器系统使用多个单端口存储器条来实现。虽然每个单个存储器条在每个时钟周期中能够执行单个命令(读取或写入),然而存储器系统作为整体被设计成每个时钟周期执行多个读取命令和多个写入命令。为了清楚,本文中所描述的实施例涉及每个时钟周期执行两个读取命令和两个写入命令。
在一些实施例中,存储器条被分为组。每个组包括N个存储器条(也称为功能存储器条)以及冗余存储器条(也称为XOR条)每个功能存储器条存储大量数据字。冗余存储器条存储每个在来自N个功能存储器组的N个相应数据字上计算的冗余字。
存储器系统包括控制逻辑,控制逻辑从一个或多个客户端接收读取和写入命令并且在功能存储器条中执行命令。不同于传统的存储方案,每个写入命令提供数据字用于存储,但是没有规定存储器系统中药存储数据字的存储位置或地址。
实际上,在处理写入命令时,控制单元在功能存储器条之一中挑选适当的存储位置,将数据字存储在所挑选的存储位置,并且向客户端报告存储位置的标识符。被称为物理标识符(PID)的标识符由客户端在随后的读取命令中用于检索数据字。每组功能存储器条通常包括保持组中的空闲PID的列表的空闲条目FIFO(FIFO)缓冲器。
在一些实施例中,由于存储器系统由单端口存储器组构成,所以控制单元如下在同一时钟周期执行两个读取命令和两个写入命令:
■如果两个读取命令规定属于不同功能存储器条的PID,则通过从所规定的功能存储器条(即根据命令中规定的PID)读取数据字来执行每个读取命令。
■另一方面,如果两个读取命令规定属于同一功能存储器条的PID,则在规定的功能存储器条中执行一个读取命令。不从所规定的功能存储器条读取第二读取命令所请求的数据字,而是使用其他功能存储器条以及行的冗余条来重构第二读取命令所请求的数据字。在任何情况下,两个读取命令在同一时钟周期中执行,即使它们都访问同一单端口存储器条。
■在没有被读取命令访问的两个不同的组中挑选针对两个写入命令的两个存储位置。为了在同一时钟周期中执行两个读取命令和两个写入命令,最小数目四个组是足够的。控制单元通常通过查找所选择的组的FEF中的可用PID的列表来挑选存储位置。
■按照每个写入命令,更新受命令影响的冗余字,并且将其高速缓存在组中的小高速缓存存储器中。在具有到同一组的写入的下一时钟周期将所高速缓存的冗余字拷贝到组中的冗余条。需要这种高速缓存的原因在于,冗余条已经在当前时钟周期中被写入,以更新来自高速缓存存储器的先前计算的高速缓存字。
所公开的存储器系统使得能够每个时钟周期执行多个命令,即使潜在的存储器设备包括单端口存储器。这样,所公开的技术提供了快速和并行存储,而同时保持了低的时钟速率、低的成本、小的尺寸以及低的功耗。
另外,所公开的技术没有涉及任何种类的逻辑到物理地址转换。存储器系统和客户端仅使用由多个PID值形成的单个地址空间,而非不同的逻辑和物理地址空间。这样,消除了管理逻辑到物理地址转换的复杂性以及存储逻辑到物理映射表格所需要的晶片区域。
图1是示意性地图示根据本文中所描述的实施例的网络元件20的框图。在本示例中,网络元件20包括在通信网络中转发通信数据包的网络交换机。在备选实施例中,网络元件20包括任何其他合适类型的网络元件,诸如路由器或者桥接器。
在图1的实施例中,网络元件20包括用于接收和传输数据包的多个端口24以及用于处理数据包(例如用于高速缓存数据包并且用于从一个端口向另一端口转发数据包)的合适的电路系统。在本示例中,上述电路系统包括一个或多个客户端28以及存储用于客户端28的数据的存储器系统32。客户端28通常包括网络元件20的各种处理单元或处理核,例如CPU或者被配置成执行数据包数据操作以处理经由端口24接收和传输的数据包的多个ASIC处理引擎,但是通常可以包括存储和检索数据的任意合适的模块。
图2是示意性地图示根据本文中所描述的实施例的存储器系统32的内部结构的框图。在一些实施例中,存储器系统32包括本文中称为存储器条或功能存储器条的多个存储器单元36。每个功能存储器条36包括多个物理存储位置,例如在几千个的数量级。每个存储位置被配置成存储相应数据字。术语“数据字”指代任意合适大小的任意合适的数据项。
通常,在实施例中,每个存储器条36包括单端口存储器,这表示其能够每个时钟周期执行单个命令,例如一个读取命令或者一个写入命令。所讨论的时钟周期是钟控存储器条36的时钟信号的时钟周期。在本上下文中,时钟周期在本文中也称为存储器访问周期,并且这两个术语可互换地使用。在本示例中,每个存储器条36包括单端口静态随机存取存储器(SRAM)。然而,备选地,存储器条36使用任何其他合适类型的存储器来实现,例如动态随机存取存储器(DRAM)。
虽然每个存储器条36每个时钟周期能够执行不多于单个读取命令或者单个写入命令,然而在实施例中,存储器系统32作为整体被设计成每个时钟周期执行两个读取命令和两个写入命令。下面进一步处理被设计成每个时钟周期执行更大数目的读取和/或写入命令的备选配置。
在一些实施例中,存储器条36被分为多个组。为了清楚,这些组在本文中也称为行,并且每个组在图2中被图示为单独的行。然而,术语“行”的使用并不意味着存储器条36的任何具体的空间方位。在图2的实施例中,存储器条36布置成被表示为38A、38B、38C和38D的四个行。
在实施例中,存储器系统32还包括分别与行38A-38D相关联的冗余存储器条40A-40D。冗余存储器条40A-40D也称为XOR条。XOR条40A-40D通常包括单端口存储器,例如单端口SRAM,类似于功能存储器条36。给定行中的XOR条存储在该行中的功能存储器条36中存储的数据上计算的冗余信息(例如校验信息)。
在示例实施例中,每个行具有N个功能存储器条36。每个行的XOR条存储XOR字,每个XOR字等于行中的相应N个功能存储器条中存储的N个数据字的集合的逐比特XOR。N个数据字的每个集合和对应XOR字被称为条带。存储在给定功能存储器条36中的给定数据字可以根据条带中的其他N-1个数据字(存储在其他N-1个功能存储器条上)以及条带的XOR字来重构。
在实施例中,存储器系统32还包括分别与行38A-38D相关联的高速缓存存储器44A-44D以及先入先出(FIFO)存储器48A-48D。每个FIFO保持行中的功能存储器条36中的空闲PID的列表。FIFO48A-48D因此也称为空闲条目FIFO(FEF)。高速缓存存储器44A-44D中的每个通常具有单个数据字的大小。FEF 48A-48D通常使用单端口存储器(例如单端口SRAM)来实现。下面详细解释高速缓存存储器44A-44D以及FEF 48A-48D的角色。存储器系统32还包括控制单元50,控制单元50在本文中也称为控制逻辑,控制单元50管理数据在存储器条26中的存储并且与客户端38通信。
图1和图2所示的网络元件20和存储器系统32的配置是示例配置,其仅出于清楚的目的而被描绘。在备选实施例中,也可以使用任何其他合适的网络元件和/或存储器系统。例如,存储器条36可以分为任何其他合适数目的组,每个组包括任何其他合适数目的存储器条。在一个实施例中,功能存储器条的组是列而不是行。
另外,虽然图2的实施例涉及每个时钟周期执行两个读取命令和两个写入命令,然而在备选实施例中,可以使用所公开的技术设计存储器系统32,加上必要的变更,用于每个周期执行任何其他合适数目的读取命令以及任何其他合适数目的写入命令。例如2015年12月9日提交的美国专利申请14/964,219中解决了存储器命令的并行执行的另外的方面,其被受让给本专利申请的受让人并且其公开通过引用合并于此。
网络元件20和存储器系统32的不同元件通常使用专用硬件来实现,诸如使用一个或多个专用集成电路(ASIC)、现场可编程门阵列(FPGA)和/或RF集成电路(RFIC)来实现。备选地,网络元件20和/或存储器系统32的一些元件(例如控制单元50(也称为控制逻辑)或其部分)可以使用在可编程硬件上执行的软件或者使用硬件和软件元素的组合来实现。为了清楚而从附图中省略了对于理解所公开的技术而言并非强制的网络元件20和存储器系统的元件
虽然本文中所描述的实施例主要涉及网络元件的上下文中的数据存储,然而所公开的技术不限于这样的应用。本文中所描述的方法和系统适用于涉及数据存储的各种备选应用。
在使用可编程处理器上的软件来实现所公开的技术时,可以将软件通过网络下载到电子形式的处理器中,或者,备选地或者另外地,可以提供和/或将其存储在非暂态有形介质上,诸如磁性、光学或电子存储器中。
在一些实施例中,存储器系统32的控制单元50在每个时钟周期从客户端28接收最高达两个读取命令和两个写入命令用于执行。每个写入命令向存储器系统32提供数据字,用于存储。每个读取命令请求数据字的读出。
与传统的存储方案相比较,在所公开的实施例中,客户端28没有规定要存储数据的地址。相反,由控制单元50来选择每个数据字在存储器条36中的存储位置。
通常,来自客户端28的写入命令仅规定要存储的数据字而没有地址。作为处理写入命令的部分,单元50在存储器条36之一中选择用于存储数据字的可用物理存储位置。所选择的物理存储位置用相应物理标识符(PID)来识别。如果没有PID可用于执行写入命令,则单元50通常向客户端返回发出命令的背压。
通常,空闲条目FIFO(FEF)48A-48D保持当前可用于存储的对应行38A-38D中的存储器条36中的PID的相应列表。控制单元50向客户端38通知数据字已经存储在其中的PID,例如在确认写入命令的成功完成的确认消息中。当这一数据字在稍后被检索时,客户端28向存储器系统32发出规定这一PID的读取命令。
以上描述的基于PID的寻址机制例如适合用于存储和检索布置成动态链接列表(DLL)的数据字,但是通常适用于任何其他类型的数据。注意,这一寻址机制通常不涉及从虚拟或逻辑地址到物理地址的任何种类的转换。存储器系统32和客户端28仅使用由多个PID值定义的单个地址空间。
在实施例中,为了能够在每个时钟周期中执行两个读取命令和两个写入命令,控制单元50采用以下机制(下面进一步详细解释):
■根据命令中规定的PID执行第一读取命令。如果第二读取命令访问与第一读取命令相同的存储器条,则使用行的其他存储器条36以及XOR条40重构第二读取命令的数据。
■在没有被读取命令访问的行中选择用于写入命令的存储位置。
■按照写入命令,更新和高速缓存适当的XOR字,并且在具有到同一行的写入命令的随后的时钟周期中将其存储在XOR条40中。
图3是示意性地图示根据本文中所描述的实施例的用于在同一时钟周期中执行两个读取命令和两个写入命令的方法的流程图。方法以控制单元50在命令输入操作60处接收第一读取命令和第二读取命令以及第一写入命令和第二写入命令开始。四个命令(两个读取命令和两个写入命令)全部要在同一时钟周期中执行。
在第一读取执行操作64处,控制单元50在规定的存储器条36中执行第一读取命令。控制单元50通常从第一读取命令提取PID,从由这一PID识别的存储位置读取数据字,并且向请求客户端28提供数据字。
在冲突检查操作68处,控制单元50检查第二读取命令是否与第一读取命令访问相同的存储器条36。如果第二读取命令访问不同的存储器条36,则控制单元50在正常的读取执行操作72处按照第二读取命令中规定的PID在该存储器条中执行第二读取命令。控制单元50同城从第二读取命令提取PID,从由该PID识别的存储位置读取数据字,并且向请求客户端28提供数据字。
另一方面,如果操作68识别出第二读取命令访问与第一存储器条相同的存储器条,则控制单元50不能在同一时钟周期访问该存储器条。相反控制单元50在重构操作76处重构第二读取命令请求的数据字。控制单元通过计算同一条带中的其余数据字的逐比特XOR(存储在同一行中的其他存储器条36上)以及条带的XOR字(存储在这一行的XOR条中)来重构第二读取命令请求的数据字。控制单元50向请求客户端28提供所重构的数据字。
在行选择操作80处,控制单元选择分别要在其中执行第一写入命令和第二写入命令的不同的第一行和第二行。由于存储器系统32包括四个行38A-38D,即使第一读取命令和第二读取命令访问两个不同的行,两个行仍然可用于执行写入命令。
在一些实施例中,控制单元50使用某个预定的选择准则从没有被读取命令访问的行中用于执行写入命令的行。例如,如果两个读取命令访问相同的行,如果仅一个写入命令被接收到,或者在总共具有多与四个行的备选实现中,执行选择。在示例实施例中,控制单元50选择具有最大数目的可用空闲存储位置(即FEF 48A-48D中具有最大数目的空闲PID)的行。
在PID分配操作84处,控制单元在所选择的行之一中的存储器条36之一中分配用于第一写入命令的存储位置以及在其他所选择的行的存储器条36之一中分配用于第二写入命令的存储位置。控制单元通过查找所选择的行的FEF中列出的可用PID来选择存储位置。
在写入执行操作88处,控制单元50在所选择的存储位置写入第一和第二写入命令的数据字。控制单元50向请求客户端28通知针对写入命令选择的PID,用于在随后的数据字检索时使用,并且从FEF中去除这些PID。
在XOR更新操作92处,控制单元50要向其写入两个写入命令的条带的XOR字。在实施例中,控制单元50通过在现有的XOR字与条带的现有的数据字之间执行逐比特XOR来计算已更新XOR字。在本时钟周期,控制单元50没有向XOR条40存储已更新XOR字,因为XOR条已经在这一时钟周期被写入用于更新在前一时钟周期计算的高速缓存的XOR字。相反,控制单元50在行的高速缓存存储器中高速缓存已更新XOR字,并且在包括到行的写入命令的随后的时钟周期中将已更新XOR字复制到XOR条。
因此,在一些实施例中,控制单元50按照三阶段流水线过程来执行每个写入命令(操作88和92):
■阶段1:向所选择的功能存储器条36的所挑选的存储位置写入在写入命令中提供的数据。在同一时钟周期,读取相同的条带中的其他数据字(从同一行的其他功能存储器条36)。另外,在同一时钟周期,向XOR条写入来自高速缓存的数据(如果高速缓存中的数据有效)(来自前一写入命令的XOR字)。
■阶段2(下一时钟周期中):根据现有的数据字以及条带的XOR字计算已更新XOR字。向行的高速缓存存储器写入已更新XOR字。
■阶段3(在具有到同一行的新的写入命令的某个稍后的时钟周期):向XOR条写入来自高速缓存存储器的已更新XOR字。
图3的方法是仅出于清楚目的而描绘的示例方法。在备选实施例中,控制单元50可以使用任何其他合适的方法来执行所公开的技术。例如,图3的流程涉及其中要在同一时钟周期执行两个读取命令和两个写入命令的最差情况场景。如果在给定时钟周期接收到更少命令,则省略或简化图3的操作中的一些操作。例如,如果仅接收到一个读取命令,则省略操作68-76。如果仅接收到一个写入命令,则操作80-92被简化并且仅涉及单个行。
虽然本文中所描述的实施例主要解决用于每个时钟周期执行两个读取命令和两个写入命令的具有四个存储器条的行的存储器系统。然而,所公开的技术可以用于每个时钟周期执行更大数目的读取命令和/或更大数目的写入命令。例如,增加每个行的XOR条的数目,或者使用更复杂的冗余方案,使得能够每个时钟周期执行更大数目的读取命令,即使多个读取命令试图访问同一功能存储器条。增加行的数目使得每个时钟周期能够执行更大数目的写入命令。增加每个周期的读取和/或写入命令的数目的另一途径是使用具有多于单个端口的功能存储器条。例如,使用双端口功能存储器条实现所公开的技术使得能够每个时钟周期执行四个读取命令和四个写入命令。
注意,以上描述的实施例被给出作为示例,并且本发明不限于上文中特别示出和描述的内容。相反,本发明的范围包括上文中所描述的各种特征的组合和子组合以及本领域技术人员在阅读以上描述时能够想到并且现有技术中未公开的其变型和修改。通过应用合并在本专利申请中的文档应当被认为是本申请的组成部分,除非是在这些所合并的文档中以与本说明书中明确地或者隐含地做出的定义相冲突的方式定义有任何术语,应当仅考虑本说明书中的定义。
Claims (13)
1.一种用于数据存储的方法,包括:
接收用于在同一时钟周期中在存储器阵列中执行的一个或多个读取命令以及一个或多个写入命令,所述存储器阵列包括被分为多个组的多个单端口存储器条,其中所述写入命令提供数据用于存储但是没有规定用于所述数据的任何地址;
选择所述组中没有被所述读取命令在所述同一时钟周期中访问的一个或多个组,并且针对所述写入命令在所选择的一个或多个组中的所述单端口存储器条中挑选可用存储位置;
在所述同一时钟周期期间,将在所述写入命令中提供的数据存储在所挑选的存储位置,并且检索由所述读取命令请求的所述数据;以及
通过报告所挑选的存储位置来确认所述写入命令的执行。
2.根据权利要求1所述的方法,其中所述组包括保持所述组中的所述存储器条中的可用存储位置的列表的相应缓冲器,并且其中挑选所述可用存储位置包括查找所选择的组的所述缓冲器。
3.根据权利要求1所述的方法,其中执行选择所述组中没有被所述读取命令在所述同一时钟周期中访问的一个或多个组并且挑选所述存储位置,而不需要逻辑地址到虚拟地址转换。
4.根据权利要求1所述的方法,其中每个组还包括保持在所述组中的所述单端口存储器条中的数据字上计算的冗余信息的冗余存储器条,并且所述方法包括:响应于检测到读取命令从也被另一读取命令访问的组中的单端口存储器条请求数据,根据所述组中的其他单端口存储器条并且根据所述组的所述冗余存储器条中的所述冗余信息,针对所述读取命令重构数据。
5.根据权利要求4所述的方法,其中所述组还包括高速缓存存储器,并且其中存储在写入命令中发送的数据包括:基于在所述写入命令中发送的数据来计算已更新的冗余信息,将所述已更新的冗余信息高速缓存在所述高速缓存存储器中,并且在随后的时钟周期中将所述已更新的冗余信息存储在所述冗余存储器条中。
6.根据权利要求1所述的方法,其中选择所述组包括挑选具有最大量的可用存储位置的一个或多个组。
7.一种存储器系统,包括:
存储器阵列,包括被分为多个组的多个单端口存储器条;以及
控制逻辑,被配置成接收用于在同一时钟周期中在所述存储器阵列中执行的一个或多个读取命令以及一个或多个写入命令,其中所述写入命令提供数据用于存储但是没有规定用于所述数据的任何地址,以选择所述组中没有被所述读取命令在所述同一时钟周期中访问的一个或多个组,以针对所述写入命令在所选择的一个或多个组中的所述单端口存储器条中挑选可用存储位置,以将在所述写入命令中提供的所述数据存储在所挑选的存储位置并且检索所述读取命令在同一时钟周期中请求的所述数据,并且通过报告所挑选的存储位置来确认所述写入命令的执行。
8.根据权利要求7所述的存储器系统,其中所述组包括保持所述组中的所述存储器条中的可用存储位置的列表的相应缓冲器,并且其中所述控制逻辑被配置成通过查找所选择的组的所述缓冲器来挑选所述可用存储位置。
9.根据权利要求7所述的存储器系统,其中所述控制逻辑被配置成选择所述组中没有被所述读取命令在所述同一时钟周期中访问的一个或多个组并且挑选所述存储位置,而不需要执行逻辑地址到虚拟地址转换。
10.根据权利要求7所述的存储器系统,其中每个组还包括保持在所述组中的所述单端口存储器条中的数据字上计算的冗余信息的冗余存储器条,并且其中,响应于检测到读取命令从也被另一读取命令访问的组中的单端口存储器条请求数据,控制逻辑被配置成根据所述组中的其他单端口存储器条并且根据所述组的所述冗余存储器条中的所述冗余信息,针对所述读取命令重构数据。
11.根据权利要求10所述的存储器系统,其中所述组还包括高速缓存存储器,并且其中所述控制逻辑被配置成基于在所述写入命令中发送的数据来计算已更新的冗余信息,将所述已更新的冗余信息高速缓存在所述高速缓存存储器中,并且在随后的时钟周期中将所述已更新的冗余信息存储在所述冗余存储器条中。
12.根据权利要求7所述的存储器系统,其中所述控制逻辑被配置成针对所述写入命令选择具有最大量的可用存储位置的一个或多个组。
13.一种网络元件,包括根据权利要求7所述的存储器系统。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562158094P | 2015-05-07 | 2015-05-07 | |
US62/158,094 | 2015-05-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106126112A CN106126112A (zh) | 2016-11-16 |
CN106126112B true CN106126112B (zh) | 2020-08-18 |
Family
ID=55862543
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610280155.4A Active CN106126112B (zh) | 2015-05-07 | 2016-04-28 | 每个周期具有多个读取端口和多个写入端口的多条存储器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10089018B2 (zh) |
EP (1) | EP3091439B1 (zh) |
CN (1) | CN106126112B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9984037B1 (en) * | 2015-04-27 | 2018-05-29 | Synaptic Engines, Llc | Scheduler for a fine grained graph processor |
US11403173B2 (en) | 2015-04-30 | 2022-08-02 | Marvell Israel (M.I.S.L) Ltd. | Multiple read and write port memory |
US9921754B2 (en) | 2015-07-28 | 2018-03-20 | Futurewei Technologies, Inc. | Dynamic coding algorithm for intelligent coded memory system |
US10180803B2 (en) * | 2015-07-28 | 2019-01-15 | Futurewei Technologies, Inc. | Intelligent memory architecture for increased efficiency |
US10437480B2 (en) | 2015-12-01 | 2019-10-08 | Futurewei Technologies, Inc. | Intelligent coded memory architecture with enhanced access scheduler |
US11868804B1 (en) | 2019-11-18 | 2024-01-09 | Groq, Inc. | Processor instruction dispatch configuration |
US11360934B1 (en) | 2017-09-15 | 2022-06-14 | Groq, Inc. | Tensor streaming processor architecture |
US11114138B2 (en) * | 2017-09-15 | 2021-09-07 | Groq, Inc. | Data structures with multiple read ports |
US11243880B1 (en) | 2017-09-15 | 2022-02-08 | Groq, Inc. | Processor architecture |
US11170307B1 (en) | 2017-09-21 | 2021-11-09 | Groq, Inc. | Predictive model compiler for generating a statically scheduled binary with known resource constraints |
US10553285B2 (en) * | 2017-11-28 | 2020-02-04 | Western Digital Technologies, Inc. | Single-port memory with opportunistic writes |
WO2020026155A1 (en) | 2018-07-30 | 2020-02-06 | Marvell World Trade Ltd. | Patent application |
US11204976B2 (en) | 2018-11-19 | 2021-12-21 | Groq, Inc. | Expanded kernel generation |
TWI719433B (zh) * | 2019-03-22 | 2021-02-21 | 美商葛如克公司 | 具有多讀取埠之資料結構、處理器、及用於具有多讀取埠之資料結構之方法 |
TWI751882B (zh) * | 2019-03-22 | 2022-01-01 | 美商葛如克公司 | 具有多讀取埠之資料結構、處理器、及用於具有多讀取埠之資料結構之方法 |
CN117373508A (zh) * | 2022-06-30 | 2024-01-09 | 深圳市中兴微电子技术有限公司 | 多端口存储器、多端口存储器的读写方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7428618B2 (en) * | 2001-05-15 | 2008-09-23 | Cloudshield Technologies, Inc. | Apparatus and method for interfacing with a high speed bi-directional network |
CN103455281A (zh) * | 2012-05-30 | 2013-12-18 | 博科通讯系统有限公司 | 由单端口存储器块实现的两端口存储器 |
CN104239246A (zh) * | 2013-06-07 | 2014-12-24 | 财团法人工业技术研究院 | 提供多端口功能的存储装置与方法 |
Family Cites Families (25)
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 |
WO2002045430A2 (en) | 2000-11-28 | 2002-06-06 | Seachange International, Inc. | Content/service handling and delivery |
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 |
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 |
WO2010071655A1 (en) | 2008-12-19 | 2010-06-24 | Hewlett-Packard Development Company, L.P. | Redundant data storage for uniform read latency |
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 |
US8514651B2 (en) * | 2010-11-22 | 2013-08-20 | Marvell World Trade Ltd. | Sharing access to a memory among clients |
US8886880B2 (en) * | 2012-05-29 | 2014-11-11 | Dot Hill Systems Corporation | Write cache management method and apparatus |
US8923089B2 (en) * | 2012-12-21 | 2014-12-30 | Lsi Corporation | Single-port read multiple-port write storage device using single-port memory cells |
US9720717B2 (en) | 2013-03-14 | 2017-08-01 | Sandisk Technologies Llc | Virtualization support for storage devices |
CN107209702B (zh) | 2014-12-09 | 2020-11-03 | 马维尔以色列(M.I.S.L.)有限公司 | 用于在存储器中执行同时读取和写入操作的系统和方法 |
-
2016
- 2016-04-17 US US15/130,980 patent/US10089018B2/en active Active
- 2016-04-19 EP EP16165893.5A patent/EP3091439B1/en active Active
- 2016-04-28 CN CN201610280155.4A patent/CN106126112B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7428618B2 (en) * | 2001-05-15 | 2008-09-23 | Cloudshield Technologies, Inc. | Apparatus and method for interfacing with a high speed bi-directional network |
CN103455281A (zh) * | 2012-05-30 | 2013-12-18 | 博科通讯系统有限公司 | 由单端口存储器块实现的两端口存储器 |
CN104239246A (zh) * | 2013-06-07 | 2014-12-24 | 财团法人工业技术研究院 | 提供多端口功能的存储装置与方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3091439B1 (en) | 2019-12-25 |
EP3091439A1 (en) | 2016-11-09 |
US20160328158A1 (en) | 2016-11-10 |
US10089018B2 (en) | 2018-10-02 |
CN106126112A (zh) | 2016-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106126112B (zh) | 每个周期具有多个读取端口和多个写入端口的多条存储器 | |
US11099746B2 (en) | Multi-bank memory with one read port and one or more write ports per cycle | |
CN100383751C (zh) | 用于动态镜像库寻址的系统和方法 | |
US10210043B2 (en) | System and method for performing simultaneous read and write operations in a memory | |
CN103246616B (zh) | 一种长短周期访问频度的全局共享缓存替换方法 | |
US10223326B2 (en) | Direct access persistent memory shared storage | |
US20180307420A1 (en) | Smart memory buffers | |
US9361236B2 (en) | Handling write requests for a data array | |
KR101638764B1 (ko) | 균일한 판독 대기시간을 위한 중복 데이터 저장 | |
KR20180094469A (ko) | 하이브리드 메모리 모듈 및 그것의 동작 방법 | |
CN109085997A (zh) | 用于非易失性存储器的存储器高效持续键值储存 | |
US11403173B2 (en) | Multiple read and write port memory | |
US10152244B2 (en) | Programmable memory command sequencer | |
CN107787485B (zh) | 多读取和写入端口存储器 | |
CN106104499A (zh) | 高速缓冲存储器架构 | |
US7783823B2 (en) | Hardware device data buffer | |
US20080209129A1 (en) | Cache with High Access Store Bandwidth | |
US7114054B2 (en) | Systems and methods for increasing transaction entries in a hardware queue | |
US9496009B2 (en) | Memory with bank-conflict-resolution (BCR) module including cache | |
US9195622B1 (en) | Multi-port memory that supports multiple simultaneous write operations | |
US11755235B2 (en) | Increasing random access bandwidth of a DDR memory in a counter application | |
US20190188145A1 (en) | Cache memory device and fpga including the same |
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 |