CN103314363A - 用于设计分级存储器系统的高速存储器系统和方法 - Google Patents

用于设计分级存储器系统的高速存储器系统和方法 Download PDF

Info

Publication number
CN103314363A
CN103314363A CN201180048921XA CN201180048921A CN103314363A CN 103314363 A CN103314363 A CN 103314363A CN 201180048921X A CN201180048921X A CN 201180048921XA CN 201180048921 A CN201180048921 A CN 201180048921A CN 103314363 A CN103314363 A CN 103314363A
Authority
CN
China
Prior art keywords
memory
xor
address
algorithm
group
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201180048921XA
Other languages
English (en)
Other versions
CN103314363B (zh
Inventor
桑德·伊耶
庄尚谢
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cisco Technology Inc
Vihana Inc
Original Assignee
Memoir Systems LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Memoir Systems LLC filed Critical Memoir Systems LLC
Publication of CN103314363A publication Critical patent/CN103314363A/zh
Application granted granted Critical
Publication of CN103314363B publication Critical patent/CN103314363B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Tests Of Electronic Circuits (AREA)

Abstract

在此公开了一种用于设计和构造分级存储器系统的系统和方法。在此公开了多个不同的算法存储器块。每个算法存储器块包括执行特定存储算法和一组较低级存储器部件的存储器控制器。这些较低级存储器部件的每一个可以与另一算法存储器块或者一个基本存储器块一起构建。通过在各种不同分级组织中组织算法存储器块,可以创建提供新特性的很多不同的复杂的存储器系统。

Description

用于设计分级存储器系统的高速存储器系统和方法
技术领域
本发明涉及数字计算机系统中的存储器系统领域。特别地,但不是作为限定,本发明公开了一种用于设计和构建分级数字存储器系统的技术。
背景技术
大多数现代计算机系统包括至少一个用于处理计算机指令的处理器和存储由该处理器处理的指令和数据的一个主存储器系统。主存储器系统一般与通常被称为DRAM的动态随机访问存储器的某种形式一起执行。DRAM设备具有非常高的存储密度(所使用集成电路的每单位面积存储的数据量)、低功率使用和相对廉价的成本。因此,DRAM设备被用于为计算机系统构建大容量主存储器系统。
计算机处理器的运行速度已经在持续提高。特别是,减小半导体晶体管的尺寸和减小这些晶体管的工作电压已经允许处理器时钟以更快的速率运行。但是,DRAM主存储器系统提供数据给这些更快的处理器的性能还没有跟上逐渐加快的处理器。因此,基于DRAM的主存储器系统已经成为计算机性能的瓶颈。为了缓解该问题,经常用到基于静态随机访问存储器(SRAM)的高速缓存系统。SRAM设备以远远快于DRAM的速率运行,但是其具有较低的存储密度,消耗更多功率并且更贵。此外,当发生高速缓存“命中”时(在高速缓存系统中所需要的数据可用),高速缓存系统仅提供速度的提高。当发生高速缓存未命中时,数据必须从较慢速度的DRAM存储器系统取得。在一些需要保证快速性能的应用中,高速缓存系统的使用将不够用。因此,希望通过提高存储器系统的速度以使存储器系统可以尽可能快地处理存储器读取和写入操作。
附图说明
在附图(其未必按比例绘制)中,相同数字在若干视图中始终描述大致相似的组件。具有不同字母后缀的相同标号,表示不同实例的基本相似组件。附图以示例的方式而非限制性的方式图示出了本申请文件中所讨论的各种实施例。
图1示出了以计算机系统的示例性形式示出的机器的图示,在该机器内可以执行用于使该机器执行这里所论述的方法中的任何一个或者多个方法的一组指令。
图2A示出了在数字电子设备中使用的管线处理系统的概念图。
图2B示出了流经图2A管线处理系统的指令的时间流程图。
图2C示出了具有被传播回更早管线阶段的结果数据的时间流程图。
图3示出了虚拟存储器系统300的高级概念图。
图4示出了算法存储器块的第一实施例的框图,所述实施例可以处理同时读取和写入操作或者两个同时的写入操作。
图5示出了描述在图4中公开的算法存储器块的操作的流程图。
图6A示出了如图4公开的算法存储器块接收写入至虚拟地址101和写入至虚拟地址103。
图6B示出了处理写入到虚拟地址101和写入到虚拟地址103之后图6A的算法存储器块。
图6C示出了图6B的算法存储器块接收写入到虚拟地址201和读取虚拟地址204。
图6D示出了处理写入到虚拟地址201和读取虚拟地址204之后图6C的算法存储器块。
图6E示出了可以处理多个写入存储器操作的算法存储器块接收四个不同的同时的存储器操作。
图6F示出了处理四个不同的同时的存储器操作之后图6E的算法存储器块。
图7示出了可以处理两个同时读取操作的算法存储器块使用两个独立存储器阵列。
图8示出了可以处理两个同时读取操作的算法存储器块使用具有每个数据项的第二编码副本的额外的存储器组。
图9A示出了使用图8的教导的算法存储器块接收对地址302的单个写入操作。
图9B示出了用第一方法处理单个写入操作之后图9A的算法存储器块。
图9C示出了使用图8的教导的算法存储器块接收对地址103的读取操作和对地址101的读取操作。
图9D示出了图9C的算法存储器块处理两个读取操作。
图9E示出了使用图8的教导的算法存储器块接收对地址103的读取操作和对整个01行的读取操作。
图9F示出了图9E的算法存储器块处理两个读取操作。
图9G示出了使用图8的教导的算法存储器块接收对地址302的单个写入操作。
图9H示出了用第二方法处理单个写入操作之后图9G的算法存储器块使用双端口存储器。
图9I示出了算法存储器块接收对地址302的单个写入操作和执行第一操作周期。
图9J示出了图9I的算法存储器块执行第二操作周期以处理单个写入操作。
图9K示出了使用图8的教导的算法存储器块接收对地址304的读取操作和对地址302的写入操作。
图9L示出了处理读取操作和写入操作之后图9I的算法存储器块。
图10示出了用于处理四个同时读取操作的算法存储器块。
图11A示出了第一数据值是如何从图10的算法存储器块的B11块读取的。
图11B示出了第二数据值是如何从图10的算法存储器块的B11块读取的。
图11C示出了第三数据值是如何从图10的算法存储器块的B11块读取的。
图11D示出了图11A、11B和11C中描述的读取操作期间所有的存储器块读取。
图11E示出了第四数据值是如何从图10的算法存储器块的B11块读取的。
图11F示出了数据值是如何从图10的算法存储器块的B07块读取的。
图12A示出了使用图7的教导的算法存储器块接收对地址302的读取操作和对相同地址302的写入操作,其中两个操作都与更新操作相关联。
图12B示出了处理读取操作和写入操作之后图12A的算法存储器块。
图12C示出了使用图7的教导的算法存储器块接收对地址302的读取操作和对相同地址104的写入操作,其中两个操作都与更新操作相关联。
图12D示出了处理读取操作和写入操作之后图12C的算法存储器块。
图12E示出了使用图7的教导的算法存储器块接收对地址301的读取操作和对相同地址302的写入操作,其中两个操作都与更新操作相关联。
图12F示出了处理读取操作和写入操作之后图12E的算法存储器块。
图13示出了用于处理读取操作、读空操作和写入操作的算法存储器块。
图14A示出了使用图13的教导的算法存储器块接收对地址302的写入操作。
图14B示出了处理写入操作之后图14A的算法存储器块。
图14C示出了图14B的算法存储器块接收对地址102的写入操作。
图14D示出了处理写入操作之后图14C的算法存储器块。
图14E示出了使用图13的教导的算法存储器块接收对地址100的写入操作和对地址104的读取操作。
图14F示出了如果读取操作是正常读取操作时,处理写入操作和读取操作之后图14E的算法存储器块。
图14G示出了如果读取操作是读空操作时,处理写入操作和读取操作之后图14E的算法存储器块。
图15A示出了分级存储器系统的第一实施例,其可以处理两个同时读取操作和两个同时写入操作。
图15B示出了图15A的分级存储器系统如何避免存储器组冲突。
图15C概念性地示出了图15A的分级存储器系统的分级存储器组织。
图16示出了图15A的分级存储器系统,被拓展至处理额外的同时读取和写入操作。
图17A示出了分级存储器系统的第二实施例,其可以处理两个同时读取操作和两个同时写入操作。
图17B示出了图17A的分级存储器系统如何处理两个同时读取操作和两个同时写入操作,其中所有操作被指向相同存储器块中的相同存储器组。
图17C示出了图17A的分级存储器系统使用额外的存储器组以防止读取操作和写入操作之间的冲突。
图17D概念性地示出了图17A的分级存储器系统的分级存储器组织。
图18示出了描述实现相同类型的多个读取和多个写入存储器系统的不同路径的概念图。
具体实施方式
以下详细描述参考附图,该附图构成该详细描述的一部分。附图根据示例实施例示出了示意图。这些实施例(在本文中也称为“示例”),被记载的足够详细以使本领域的技术人员能够实施本发明。对于本领域的技术人员来说,明显的是为实施本发明的示例实施例并不要求具体的细节。例如,虽然一些示例实施例是参照用于分组交换网的计算机处理系统,教导可以被用于多种其他环境中。因此,任何使用数字存储器的数字系统都会得益于本披露的教导。在不背离权利要求范围的情况下,可组合所述示例实施例,可使用其他实施例、或结构、逻辑及电学改变。因此,下面详细描述不具备限制性的意义,并且范围由所附权利要求及其等效物限定。
在本文档中,如同在专利文档中普遍,术语“一个”或“一种”用来包括一个或多于一个。在本文档中,术语“或”用来指代非排他的“或”,从而使得“A或B”包括“A但不是B”、“B但不是A”、以及“A和B”,除非以其他方式表示。此外,在本文档中提到的全部出版物、专利和专利文档通过引用以其全文结合在此,尽管通过引用个别地结合。在本文档和通过引用如此结合的这些文档之间的不一致用法的情况下,应认为在所结合引用中的用法是对本文档的用法的补充;对于不可调和的不一致性,在本文档中的用法支配。
计算机系统
本公开内容涉及数字计算机系统。图1示出了以计算机系统100的示例性形式示出的机器的图示,该机器可以被用于执行本公开的多个部分。在图1的计算机系统100内,有一组指令124可以被执行用于使机器执行本文内所论述的方法中的任何一个或者多个方法。
在联网部署中,图1的机器可以作为客户端-服务器网络环境中的服务器机器或者客户端机器进行操作,或者可以作为对等(或分布式)网络环境中的对等机器进行操作。机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、移动电话、web装置、网络服务器、网络路由器、网络交换机、网络桥接器或者能够执行指定要由该机器采取的动作的一组计算机指令(顺序的或者其他方式)的任何机器。此外,尽管仅示出了单个机器,但是术语“机器”也应当理解为包括单独或者联合执行一组(或者多组)指令用以执行本文所讨论方法中的任何一个或者多个方法的任何机器集合。
图1的示例计算机系统100包括处理器102(例如,中央处理单元(CPU)、图形处理单元(GPU)或者两者)和主存储器104以及静态存储器106,它们通过总线108互相通信。计算机系统100可以进一步包括驱动视频显示系统115(例如液晶显示器(LCD)或者阴极射线管(CRT))的视频显示适配器110。计算机系统100还包括字母数字输入设备112(例如,键盘)、光标控制设备114(例如,鼠标或者跟踪球)、磁盘驱动单元116、信号生成设备118(例如,扬声器)和网络接口设备120。注意,并非图1所示的这些部分的所有都将在所有实施例中存在。例如,如果通过网络接口设备120控制计算机服务器系统,那么该服务器可以不具有视频显示适配器110或者视频显示系统115。
磁盘驱动单元166包括其上存储有一组或者多组计算机指令和数据结构(例如,指令124还被称为‘软件’)的机器可读介质122,所述指令和数据结构实现在此描述的方法中的任何一种或者多种方法或者功能或者被在此描述的方法中的任何一种或者多种方法或者功能使用。指令124还可以完全或至少部分驻留于主存储器104和/或者与处理器102相关的高速缓存103内。主存储器104和与处理器102相关的高速缓存103还构成机器可读介质。
还可以进一步经由网络接口设备120,通过计算机网络126传送或者接收指令124。利用多个已知的传输协议(例如,众所周知的文件传输协议(FTP))的任何一个可以使这种传送发生。
虽然在一个示例实施例中,将机器可读介质122示出为单个介质,但是术语“机器可读介质”应当理解为包括存储一组或多组指令的单个介质或者多个介质(例如,集中式或者分布式数据库,和/或者关联的高速缓存和服务器)。术语“机器可读介质”还应当理解为包括任何如下介质,该介质能够存储、编码或者携带用于由机器执行并且使机器执行本文所述的方法中的任何一个或者多个方法的一组指令,或者该介质能够存储、编码或者携带由这一组指令利用或者与这一组指令关联的数据结构。因此,术语“机器可读介质”应当被理解为包括但不限于固态存储器、光学介质和磁性介质。
出于本说明书的目的,术语“模块”包括代码、计算指令或者可执行指令、数据或者计算对象的可识别部分用以实现特定功能、操作、处理或者过程。模块不需要在软件中实现;模块可以在软件、硬件/电路、或者软件和硬件的组合中实现。
数字电路设计中的管线操作
管线操作是被使用在现代数字电子设备中的一种设计技术。为了执行复杂运算(例如查表、乘法,等),数字计算系统通常必须执行一系列连续的较小的独立运算。这些小的独立运算可以被内部执行并且提供最终结果。
如果计算机系统使用单独指令以执行复杂运算,那么执行指令的处理器可以解码该指令、内部执行一系列步骤以及在执行下一个指令之前提供处理结果。由于这种处理器体系结构,处理器需要大量的时间来执行所有的单独步骤以完成指令。因此,该体系结构不提供最佳结果。
为了提高处理速度,实际上所有的现代处理器(和其他数字系统(例如DSP、ASIC,等))执行“管线”处理体系结构。在管线处理器体系结构中,需要执行复杂计算机指令的每个单独步骤被分成单独处理阶段。然后,通过将指令的状态数据一个接一个地经过单独处理阶段以处理复杂计算机指令的处理。然后,为了实现性能增益,在每个管线阶段处理来自处理连续阶段的数据的同时处理多个复杂指令。多个指令的这种处理同时大大提高了处理器的性能。
图2A示出了用于处理计算机指令的管线的概念图。计算机指令205在第一处理阶段(即图2A中的处理阶段A210)进入管线。然后,计算机指令将经过后续处理阶段B220、C230和D240。计算机指令可以在处理器内核内的时钟信号的顺序时钟周期中经过这些处理阶段。在处理管线的末端将输出一些结果295。结果可以是算术运算输出、逻辑运算输出、比较结果或者任何其他处理结果。
图2B概念性地示出了如何在图2A的管线处理系统中并行处理若干指令。图2B的示图示出了时间沿着水平轴向右移动以及新指令沿着垂直轴进入管线。
最初,在时间261处,如处理211所述,第一指令210进入阶段A。接着,在时间262处,如处理212所述,第一指令210被传递至处理阶段B。同时在时间262处,如处理221所述,第二指令220进入处理阶段A。
然后,在时间263处,如处理213所述,第一指令210被传递至处理阶段C。同样地,如处理222所述,第二指令220被传递至处理阶段B。并且同时,如处理231所述,第三指令230进入处理管线的阶段A。
管线系统继续以这种方式进行处理指令。因此,对于每个新的时间周期,新指令进入管线并且较早的指令离开管线。例如,在时间265处,虽然如处理251所述,新指令250进入管线,但是第一指令210(在顶行处)已完成所有四个处理阶段并且不再存在于管线中。
以这种方式,在每个时钟周期中,处理管线都能够完成指令。当处理在指令上开始和当处理结束该指令之间会有延时。但是,由于每个时钟周期期间都完成指令,处理器的吞吐量已经大大增加了。
可能出现在管线处理系统中的一个问题是一个指令可以取决于较早指令的输出。例如,第一指令的输出数据值可以是较晚指令的输入数据值。如果该较晚指令在第一指令已经完成之前进入管线,处理器直到从较早指令接收结果才能处理该较晚指令。
存在不同的方法处理该问题。虽然处理该问题的理想方法是正常处理指令,但是一旦所需结果数据变得可用,就让所需结果数据在指令处理管线中传播回来。例如,图2C概念性地示出了该解决方案。
参照图2C,第三指令230在阶段263处进入指令处理管线。第三指令230取决于来自第一指令210的输出数据。为了以最有效的方式处理该情形,系统将继续正常处理和内部解决数据问题。特别地,可以在第一处理阶段231中时间232处处理指令230。但是,该处理阶段还可以不需要输入数据。例如,阶段231可以简单地解码指令。然后,如图2C所示,在时间264处,指令210可以接近完成并且可以将所需状态数据207传递回需要状态数据207的较早的管线阶段232。由于所需状态数据现在可用,通过使用被沿着管线向上前向传播的状态数据,指令230可以在阶段C233处时间265处继续处理。
因此,只要来自较早指令的输出数据可以被沿管线向上传播回至需要输入数据的较晚指令,那么尽管有各种数据依赖性,处理器管线也可以继续运行。在某些情况下,所需数据不能足够快速地被传播回以允许特定指令前进通过管线。当该情况发生时,可能发生管线停止,其中较晚指令直到所需数据变得可用才能沿着处理管线前进。因此,管线内可能出现一些“气泡”。虽然这些气泡在某种程度上可以降低性能,但是在提取后续指令之前,该系统将仍然比完全处理每个指令的系统快。
为了定位数据、提取数据、解决冲突、存储数据和执行其他操作,将在本文中公开的存储器系统通常使用一系列独立处理步骤。为了以有效的方式执行这些处理步骤,存储器系统将使用如本部分公开的管线设计技术。但是,替代处理单个计算机指令,管线将处理一系列连续的存储器访问(读取和写入)。
在使用管线逻辑的存储器系统中,可以有至少两个不同的情况,其中可能出现数据依赖性问题:存储器数据依赖性和内部状态依赖性。为了使存储器系统提供适当结果,两种类型的依赖性都必须被适当处理。
当来自一个未解决存储器操作的数据被用于紧接其后不久的较晚操作内时,出现存储器数据依赖性。例如,一个存储器位置的读取操作可以立刻接着另一个存储器位置的写入操作。如果这两个存储器请求近距离进入存储器请求处理管线,那么直到存储器读取操作的数据获取被执行,执行存储器写入所需的数据才将是可用的。但是,只要为存储器读取操作取出的数据沿着管线被传播回至数据写入操作,这两个指令可以进入存储器请求处理管线并且前进通过管线。
其他类型的依赖性问题涉及内部状态数据。存储器请求处理管线的逻辑可以通过使用若干不同的内部状态数据片段来运算。该内部状态数据可以包括指针、布尔值、计数器、编码值等。例如,如果发生存储器组冲突,那么一个系统可以跟踪可以被用于存储数据值的‘自由’存储器位置。由于必须使新的‘自由’存储器位置可用,因此该值将在每次使用时改变。如果有长的存储器请求处理管线,那么无需该所需信息可用,较晚的存储器指令将进入存储器请求处理管线。但是,只要在需要值之前,确定所需的值并且将该值沿着存储器请求处理管线向上传播,那么存储器请求处理管线将没有停止。
本文将公开为了处理存储器操作必须被执行的多步程序。如本部分所述,应当假设这些多步程序将用管线逻辑来实现。此外,如果当存储器请求进入存储器请求处理管线时需要执行特定步骤的特定数据值不可用,那么该需要的数据将从较晚处理阶段被传播回。
在管线计算机处理器中,指令流将包括条件分支指令,其将指定处理器应当遵循一条指令路径还是另一条指令路径。由于不清楚分支指令之后应当提取哪些指令,这种分支指令大大增加了执行管线系统的难度。为了处理该情况,大多数处理器执行分支预测系统,所述分支预测系统作出关于最有可能将被采取方向的有根据推测。但是,如果分支预测单元预测不正确,那么指令处理管线必须被清除并且被重新加载正确指令。虽然当设计计算机处理器时这是个关注的问题,该管线问题在存储器系统中通常不是问题。
存储器设计概述和方法
本文公开了各种不同的存储器系统设计和方法,所述设计和方法组合那些存储器系统设计以用特定设计特性创建复杂存储器系统。特别地,可以通过与分级排列中各种不同类型的存储器块组合在一起创建具有一组期望的存储器需求的存储器系统,所述分级排列将满足期望的存储器需求。存储器需求可以包括例如同时读取的数量、同时写入的数量、存储器系统大小、数据宽度、时钟速度、最大可接受的延迟、最小吞吐量等因素。
复杂分级存储器系统设计由以下两个不同类型的存储器构建块构建:算法存储器构建块和基本存储器构建块。为了提高存储器系统的性能,存储器系统的算法存储器构建块用数字处理逻辑实现算法。基本存储器块由各种不同的存储器电路设计(例如DRAM、SRAM等)组成。
算法存储器构建块的每一个包括由其他算法存储器构建块或者基本存储器构建块构建的内部存储器。通过使用算法存储器构建块将存储器服务提供给更高级别的算法存储器构建块,各种分级存储器系统可以被创建。但是,每个分级存储器排列最终在分级结构的末端(“叶”)节点处终止于基本存储器块。
几乎任何类型的基本存储器电路设计都可以被使用以构建本公开的分级存储器系统。每个基本存储器电路设计提供不同的优点和缺点。
通过使用本发明的教导,传统的动态随机访问存储器(DRAM)可以被使用以构造分级存储器系统。但是,由于传统的DRAM往往通过使用不同于用于大多数数字电路的半导体处理技术的半导体处理技术(例如本公开的逻辑电路)来构造,因此传统DRAM可能不是存储器技术的最好选择。
由于可以用工业标准CMOS工艺来构建,嵌入式DRAM(eDRAM)是现在很常用的易失性存储器电路设计,所述工业标准CMOS被用于制造大多数数字电路设计。由于它的高存储密度,嵌入式DRAM(eDRAM)通常用于ASIC设计内的主存储器。
静态随机访问存储器(SRAM)通常在DRAM或者eDRAM存储器技术没有提供足够存储性能的时候使用。但是,SRAM通常需要更多管芯面积,消耗更多功率并且产生更多热量。可以使用很多不同类型的SRAM(例如较高密度的3T-SRAM和1T-SRAM)。
在某些情况下,单个触发器被使用以实现少量必须以很高的速度运行的存储器。但是,由于使用单个触发器的低存储密度,这种存储器应当很少使用。
在本公开中,可控硅RAM(T-RAM)被用作基本存储器设计。T-RAM是一种利用被称为负微分电阻电性能的DRAM计算机存储器。T-RAM存储器设备组合了DRAM(存储密度)和SRAM(高速)的长处。
在本公开中,零电容RAM(Z-RAM)可以被用作基本存储器设计。Z-RAM是一种使用绝缘硅片(SOI)工艺技术的浮体效应的数字存储器。Z-RAM存储器制造商宣称虽然Z-RAM技术提供的存储器访问速度类似于传统SRAM单元,但是由于其仅使用单个晶体管而提供更高的存储密度。
虽然分级存储器系统将主要参考易失性存储器设计被公开,但是分级存储器系统还可以由非易失性存储器构建。例如,快闪存储器单元可以在某些应用中使用,其中需要非易失性存储。虽然快闪存储器往往不如其他类型存储器运行的那么快,但是当移除系统的电源时,它有不丢失存储状态的优点。磁阻随机访问存储器(MRAM)是可以被使用的另一种非易失性存储器技术。
各种不同存储器类型可以通过各种不同特性实现。例如,存储器单元可以通过单个端口、两个端口或者双端口实现。但端口存储器可以仅处理一个读取操作或者一个写入操作。两个端口的存储器具有独立读取端口和独立写入端口。因此,两个端口的存储器可以同时处理一个读取操作和一个写入操作。双端口存储器具有两个完全独立的存储器端口。因此,双端口存储器可以同时处理两个读取操作、两个写入操作或者一个读取操作和一个写入操作。存储器单元可以具有多个额外的存储器端口。
上述基本存储器构建块(和其他未公开的基本存储器构建块)可以被使用以实现各种不同的算法存储器块。这些由基本存储器设备构建的第一级算法存储器块可以在其他更高级的算法存储器块内使用以创建复杂的分级存储器系统。注意在各种布置中组合的算法存储器块可以创建需要由分级电路设计考虑在内的各种不同的依赖性。
算法存储器块基础
为了构建高性能存储器系统,本公开的算法存储器块通常实现“虚拟存储器系统”。这些虚拟存储器系统通常不用通过对虚拟存储器系统的用户施加特定的编程约束来提供存储器性能的提高。关于虚拟存储器系统的更多细节可以在2009年8月9日提交的序列号为12/584,645,题为“用于在虚拟高速存储器系统中存储数据的系统和方法(SYSTEM ANDMETHOD FOR STORING DATA IN A VIRTUALIZED HIGH SPEED MEMORY SYSTEM)”美国专利申请中找到。
虚拟存储器系统以类似于传统虚拟存储器的方式(但是目标不同)运行。在传统虚拟存储器系统中,大虚拟存储器空间被映射到小物理存储器上(借助于长期存储系统)用于为程序员提供大存储器空间用于工作。相反,在虚拟存储器系统中,较小的虚拟存储器空间被映射到较大的物理存储器空间上以用于为程序员提供提高的存储器性能。计算机程序员在虚拟存储器地址空间中工作而不必担心虚拟存储器系统如何在实际物理存储器地址空间中内部处理数据。
在虚拟存储器系统中的存储器控制器被用于执行各种逻辑运算,其实现了提高存储器性能的技术。通过使用若干不同技术中的一种,存储器控制器可以将虚拟地址空间发出的存储器请求转换成在实际物理地址空间中发出的。在一种技术中,一个额外的存储器组和一组地址空间映射表被使用以确保将不存在存储器组冲突,所述存储器组冲突将降低存储器性能。通过使用更大的物理存储器地址空间(额外的存储器组),虚拟存储器系统对存储器系统的用户隐藏了任何潜在的存储器组冲突的影响。在其他实施例中,虚拟存储器系统使用额外存储器以编码每个数据项的冗余副本以便系统一直有至少两个不同的获取所请求数据的方法。
图3示出了虚拟存储器系统3300的高级概念图。在图3公开的特定虚拟存储器系统中,存储器用户311和存储器用户312访问相同的虚拟存储器系统300。对虚拟存储器系统300的并发存储器请求可以来自以两个单独实体两倍速度运行的单个实体。因此,以存储器用户311和存储器用户312的时钟速度的两倍速度运行的处理器310可以发出两个连续存储器请求,所述两个连续的存储器请求将表现为由虚拟存储器系统300同时接收的两个存储器请求。
对虚拟存储器系统300的所有存储器访问请求由虚拟存储器系统控制器321处理。虚拟存储器系统控制器321接收包括虚拟存储器地址的存储器访问请求(读取、写入或者其他存储器命令)并且执行请求存储器操作。在一些实施例中,虚拟存储器系统控制器321将虚拟存储器地址(在虚拟存储器地址空间304中)转换成实际物理存储器地址(在更大的物理存储器地址空间320中)。然后通过在物理存储器地址空间320中使用物理地址,存储器系统控制器321访问所请求的信息。如本文较早的部分所述,虚拟存储器系统控制器321可以通过管线数字逻辑来实现以使得虚拟存储器系统控制器321可以通过若干处理阶段同时处理若干连续接收到的存储器请求。
借助于虚拟存储器系统控制器321中的虚拟存储器状态信息323,虚拟存储器系统控制器321执行所需逻辑运算(例如虚拟地址到物理地址的转换)。虚拟存储器状态信息323是一组状态信息,其被需要以通过虚拟存储器系统控制器321实现特定存储器性能技术。例如,在将虚拟地址转换为物理地址的虚拟存储器系统控制器321中,虚拟存储器状态信息323可以包括虚拟地址到物理地址的转换表格。其他技术将保持其他状态信息。
通过使用虚拟存储器状态信息323由虚拟存储器系统控制器321执行的逻辑运算的最终结果是在物理存储器地址空间320上某种类型的存储器操作(读取、写入或者其他存储器操作)。但是,该“物理地址空间”320可以是通过基本存储器块实现的实际物理存储器地址空间或者它实际上是另一个算法存储器构建块。如果“物理地址空间”由另一个算法存储器块实现,那么该算法存储器构建块将通过增强技术实现它自身的存储器性能。这种设计和构建算法存储器构建块(最终都终止于基本存储器块)分级结构的能力允许本公开的系统构建很多种复杂的高性能存储器系统。
因此,本公开的关键方面是被使用以创建复杂存储器系统的不同算法存储器构建块的集合。每个不同的算法存储器构建块提供不同的特性。接下来的部分将描述一组若干不同算法存储器构建块,其被使用以创建分级存储器系统。但是,公开的算法存储器构建块集合并非穷尽。
算法存储器系统1:用于获得2X性能的额外存储器(1R和1W)或者(1R或者2W)
第一算法存储器块为使用额外存储器以允许同时读取和写入操作或者两个同时写入操作的存储器块。该算法存储器块通过使用额外的存储器以防止两个同时存储器操作之间的存储器冲突来进行操作。额外的存储器可以以各种不同的方法来实现。例如,额外的存储器可以包括处理可以导致冲突的进入存储器请求的高速缓存。但是,该部分将主要集中在使用额外存储器的实现上,所述额外存储器与存储器系统中的其他存储器组相同。
图4示出了可以处理同时读取和写入操作(1R1W)或者两个同时写入操作(2W)的算法存储器块400的第一实施例的框图。图4和以下说明所述的示例将提供特定数量的存储器组、存储器地址等。但是,对于本领域技术人员明显的是这些只是这一个示例实现的数量。可以通过使用非常不同数量的存储器组、存储器地址等来构建各种不同的存储器系统大小。
如之前在图3的概念示图中所述,算法存储器块400主要由存储器系统控制器421和物理存储器阵列420构成。如前所述,“物理存储器阵列”420实际上可以不是物理存储器阵列。相反,物理存储器阵列420可以由另一个算法存储器块实现。但是,出于本文的目的,由于允许虚拟存储器到物理存储器转换的类似概念使用在算法存储器块400的说明中,因此将称其为物理存储器阵列。
参照图4的算法存储器块400,物理存储器阵列420被组织成各自具有100行的五个独立存储器组(组A到E)。为了便于说明,虽然本文将用基本的10个(十进制)数字表示存储器组大小和存储器地址,但是大多数实际实现将使用2的偶数倍用于基数2(二进制)地址系统。在图4有五个存储器组(每个存储器组有100行)的算法存储器块400实施例中,在物理存储器420中有500个唯一的物理存储器地址。
算法存储器块400提供虚拟存储器地址空间给算法存储器块400的用户,所述虚拟存储器地址空间比实际物理地址空间小。因此,在图4的实施例中,包括000到399虚拟存储器地址的初始虚拟存储器地址空间404(被由虚线构成的矩形包围)在物理存储器组A到D内表示。物理存储器组E最初不表示虚拟存储器位置的任何一个,从而使得存储器组E’的存储器位置被标记为‘空’。如图4所述,本文将指定虚拟存储器地址为物理存储器位置方框内的三位数虚拟存储器地址,所述虚拟存储器地址目前由物理存储器位置表示。例如,组B的00行处的物理存储器位置最初表示虚拟存储器地址100,从而‘100’描绘于方框内的存储器组B的00行处。如本文以下将要描述的,各种虚拟存储器地址的实际位置将在物理存储器空间420中四处移动。因此,图4描述的虚拟存储器地址空间404组织仅表示多种可能状态中的一个可能的状态。
在图4的算法存储器块400中,虚拟存储器系统控制器421负责处理来自这个或这些存储器用户410的所有虚拟存储器访问请求。在物理存储器420内,存储器系统控制器421将虚拟存储器地址(在图4中000到399)转换成实际物理存储器地址(通过图4中该存储器组内的存储器组字母和行进行识别)。为了完成虚拟地址到物理地址的转换这一任务,存储器系统控制器421使用虚拟存储器映射表423。
在图4所示特定虚拟存储器系统实施例中,虚拟存储器地址被分成最高有效数位(三位数虚拟地址的第一数位)和两个最低有效数位(三位数虚拟地址的第二两位数)。图4的虚拟存储器系统在物理存储器系统中将虚拟存储器地址的最低有效数位(虚拟存储器地址的第二两位数)作为物理行指定使用。因此,由于与物理存储器地址的两个最低有效数位相同,虚拟存储器地址的两个最低有效数位没有转换的需要。注意,其他实施例可以使用其他位或者甚至任何其他类型的适当的虚拟至物理地址转换系统。
虚拟存储器地址的最高有效数位仍必须被转换成物理存储器地址。在图4的系统中,虚拟存储器地址的最高有效数位被转换成物理存储器组。为了执行转换,虚拟存储器映射表423包括与存储器组中行的数量相等的若干行和与最高有效数位地址数字可能性(在从000到399的虚拟地址空间的该示例中的0、1、2和3)的数量相等的若干列。为了将物理存储器位置转换为虚拟存储器位置,虚拟存储器系统控制器421检查虚拟存储器映射表423的条目,所述虚拟存储器映射表具有与虚拟存储器地址’相同的行(两个最低有效数位)和与虚拟存储器地址’相同的列(最高有效数位)。例如,为了将虚拟地址304转换为物理存储器位置,虚拟存储器系统控制器421查阅列‘3’和行‘04’的条目以获取“D”作为当前表示虚拟地址304的存储器组。特别地,虚拟地址304当前在存储器组D的行04中表示。
除了0到3列之外,图4的虚拟存储器映射表423实施例还包括标记为“e”的列。该列被使用以识别包括该特别指定行的空存储器位置的存储器组。例如,虚拟存储器映射表423中列‘e’的行‘02’列出存储器组‘E’作为行02有空位置的存储器组。但是,由于在该特定行有空存储器位置的存储器组可以通过确定没有在该相同行的0到3列中表示的存储器组标号(A、B、C、D或者E)推断出来,因此该列不需要被实现。
图4的算法存储器块400被配置以处理或者带有同时写入请求的读取请求或者两个同时写入请求。算法存储器块400完成这些同时的动作而不用因为存储器组冲突迫使存储器用户410停止。因此,即使同时的存储器请求涉及相同的存储器组(这会在大多数存储器系统中导致存储器组冲突),算法存储器块400也将处理两个存储器请求而无需停止这个或这些存储器用户410。因此,虚拟存储器系统400提供有保证的存储器带宽,从而使得需要有保证的存储器访问时间的所有应用可以使用虚拟存储器系统400。
应当注意的是,不能被简单处理的一个情况是对于完全相同的虚拟地址,当读取和写入都在相同时间被接收时。通常来说,由于当该相同地址正在被相同的实体写入时确实没有理由读取地址,所以存储器用户应该从不发出这样一对同时的请求。但是,如果这种情况发生,根据特定的实现,读取器可以被赋予原始数据或者新写入的数据。
虚拟存储器系统控制器421防止存储器组冲突,其中通过在不同的存储器组中为写入操作将虚拟存储器地址移动到未使用的存储器位置,两个存储器操作被同时指向相同的存储器组。通过读取虚拟存储器表423定位未使用的存储器位置。在将数据写入该先前未使用的存储器位置后,存储器控制器421接着用来自写入操作的虚拟地址更新虚拟存储器表423以反映与虚拟存储器地址关联的数据的新位置。
通过使用示例最佳地描述了技术。参照图5、图6A和图6B对图4的虚拟存储器系统400实施例的示例操作进行描述。图6A示出了相同初始条件下图4的相同虚拟存储器系统400。如果虚拟存储器系统控制器同时接收对虚拟地址101的存储器写入(在图6A中写作W(101))和对虚拟地址103的存储器写入(写作W(103)),由于虚拟地址101和虚拟地址103在相同存储器组中(存储器组B),该存储器访问模式通常会导致存储器组冲突。
为了防止存储器组冲突,虽然虚拟存储器系统控制器621允许写入操作中的一个(该示例中对虚拟地址103的写入)在物理存储器组B中照常继续进行,但是其通过使用不同存储器组处理对虚拟地址101的其他写入。由于新数据值正在被写入虚拟地址101,因此当前驻留于当前物理存储器位置的与虚拟地址101关联的数据不再相关。
如果不是对地址103的写入,而是来自地址103的读取,系统会以相同的方式执行。特别地,读取会从地址103进行,并且对地址101的写入会被放置在不同的存储器组中以防止存储器组冲突。注意,在该特定类型的算法存储器块中,由于那是数据可以被找到的唯一位置,读取操作必须一直使用与所请求的虚拟地址关联的当前物理位置。
将参照图5中公开的流程图描述整个事件链。注意,出于说明的目的,图5的流程图正被使用以用简单的方式公开系统操作的方法。在物理实现中,图5中公开的若干阶段(例如在阶段510和阶段530中查找表)可以被并行执行。
最初,在阶段505处,虚拟存储器系统控制器521接收或者一个读取和一个写入请求或者两个写入请求。(在图6A的示例中是对地址103和地址101的写入请求。)然后,在阶段510处,虚拟存储器系统控制器621查阅虚拟存储器表623以确定读取地址或者写入地址中的一个的当前物理位置。(在图6A的示例中选择对地址103的写入请求。)该地址的最高有效数位在虚拟存储器表623中被使用以选择列并且两个最低有效数位被使用以选择行,从而指定虚拟地址103当前位于存储器组B中。因此,在阶段520处,虚拟存储器系统控制器621访问该物理存储器位置并且执行所请求的存储器操作(读取或者写入)。
在阶段530处,虚拟存储器系统控制器621查阅虚拟存储器表623以确定与(其他)写入请求关联的虚拟地址的物理位置(在该示例中为101)。通过查阅虚拟存储器表623,可以看出虚拟地址101在存储器组B中。如果已经在不同存储器组中对存储器位置(例如组D中的地址200)进行写入,那么通过在阶段540处使用该位置从而完成两个存储器操作,写入操作可以被简单地执行。该操作可以与前面的存储器操作并行执行。但是,在该示例中,对在存储器组B中的虚拟地址101进行写入,从而导致与使用虚拟地址103(也位于存储器组B中)的存储器操作的存储器组冲突。
为了防止地址101和地址103之间的存储器组冲突,系统继续进行到阶段550,其中虚拟存储器系统控制器621查阅虚拟存储器表623中01行的“e”列以确定可用存储器组的物理位置以将数据写入虚拟地址101。为了将数据接受到01行中,虚拟存储器表623中列“e”的行01指定存储器组E为可用存储器组。因此,虚拟存储器系统控制器621将来自写入请求的数据写入存储器组E的行01,所述写入请求针对虚拟地址101。(因为实际数据值与本讨论无关,所以未在图6A和图6B中示出实际数据值。)
由于虚拟存储器地址101的物理位置已经移动,所以虚拟存储器表623必须被更新以反映虚拟地址101的新物理位置。因此在阶段560处,虚拟存储器系统控制器621在虚拟存储器表623中将“E”写入列1的行01。这意味着虚拟地址101当前位于存储器组E中。
如果特定的存储器系统实现使用‘空闲组’列,然后与行01关联的新的空闲存储器组也必须在该空闲组的列中被更新。因此,在阶段570处,虚拟存储器系统控制器621在虚拟存储器表623中将“B”写入行01的“e”列中。注意,在实现中,其空闲存储器组由未在该特定行中列出的存储器组推断出来,该阶段不需要被执行。此时,使用地址103的存储器操作(读取或者写入)和对地址101的写入操作被执行不需要因为存储器组冲突而停止。
参照图6C和图6D提供同时读取操作和写入操作的第二示例。图6C使用图6B的状态作为起点,然后同时接收对虚拟地址201的写入和来自虚拟地址204的读取。为了执行虚拟地址204的读取,存储器控制器621首先在物理存储器中确定虚拟地址204的位置。因此,存储器控制器首先在虚拟地址表623中读出行04的列2处的条目,其指定虚拟地址204当前位于存储器组C中。因此,存储器控制器621将虚拟地址204的数据从存储器组C的04行读取出来以处理读取请求。
为了处理对虚拟地址201(之前在列C的01行中)的写入从而导致与从存储器组C的行04的读取发生存储器组冲突,存储器控制器621从虚拟地址表Q23的行01中的列“e”读取条目以确定行01的空闲存储器组为存储器组B。因此,如图6D所述,与对位置201的写入关联的数据被放置在物理存储器组B的行01中。然后,存储器控制器621更新表623以反映虚拟地址201的新位置(通过在列2的行01处的条目中写入“B”)和行01的新空闲存储器位置的位置(通过在行01的列“e”处的条目中写入“C”)。在图6D中示出了在从地址204读取和对地址201写入之后的最终状态。
如从以上两个示例可以看出的,虚拟存储器系统将一直有至少两个位置,在所述至少两个位置中,系统可以在为任何虚拟地址执行写入:该虚拟地址的当前位置或者指定为空的行的存储器组。如果引入写入没有导致与另一个同时的存储器操作(读取或者写入)的存储器组冲突,那么虚拟存储器控制器621可以将数据存储在它的当前位置。但是,如果存在由对相同存储器组的写入和另一个存储器操作导致的存储器组冲突,那么虚拟存储器控制器621将把数据写入有空位置用于该行的存储器组并且在虚拟存储器表623中更新该虚拟存储器地址的新位置。在所述实现中,虚拟地址空间位置的最低的两个数位将一直在物理存储器空间中指定行。但是,在实际数字实现中,可以使用来自虚拟存储器地址的比特子集(例如虚拟存储器地址的一组最低有效数位)。
参照图6A至图6F公开的存储器系统通过使用添加到存储器系统的多个额外存储器组进行操作。但是,类似结果可以通过以不同形式将额外的存储器添加到存储器系统来实现。例如,代替使用额外的存储器组,高速缓存系统可以被添加到存储器系统的存储器控制器621部分。2009年12月15日提交的标题为“用于降低延时高速缓存的系统和方法(SYSTEM ANDMETHOD FOR REDUCED LATENCY CACHING)”序列号为61/284,260的临时专利申请公开了使用高速缓存以实现类似结果的方法并且在此引入作为参考。
算法存储器系统2:用于获取更高写入性能(1R和nW)或者(nW)的额外存储器
上一节公开了存储器块,其允许两个同时写入操作,或者可选择地,一个读取操作和一个写入操作算法同时。该算法存储器块通过添加额外的存储器实现该结果,所述额外的存储器在写入操作与另一个存储器操作(读取或者写入)发生冲突时使用。然后,存储器映射表被使用以跟踪数据的新位置。该技术可以被扩展为通过添加额外存储器以处理每个额外的写入操作处理很多额外的并发写入操作。此外,该技术将参照使用多个额外存储器组的实现进行描述,所述额外的存储器组像其他存储器组一样操作,处理若干同时写入操作的存储器系统还可以通过使用存储器控制器内的高速缓存来实现。
为了构建处理许多额外并发写入操作的存储器系统,在第一存储器操作(可以是读取操作或者写入操作)之后,针对每个额外的写入操作,必须将一个额外的存储器组添加到存储器系统。例如,如果系统需要处理四个并发写入操作,那么系统需要一组主存储器组和接着的三个额外存储器组以处理额外的写入操作。第一写入操作由主存储器组处理并且写入操作的剩余部分由主存储器(当与其他写入操作不存在冲突时)或者额外的存储器组中的一个(当与其他写入操作存在冲突时)来处理。同样地,如果系统需要处理一个读取操作和两个写入操作,那么系统将需要一个主存储器组和两个额外存储器组。读取操作由主存储器组处理并且写入操作由主存储器组(当与读取操作不存在冲突时)或者额外存储器组中的一个(当与读取操作或者另一个写入操作存在冲突时)来处理。
图6E和图6F示出了示例算法存储器块的操作,所述示例算法存储器块具有标记为E1、E2和E3的三个额外存储器组。由于具有三个额外存储器组,算法存储器块可以同时处理第一存储器操作(读取操作或者写入操作)和三个额外写入操作。参照图6E和图6F描述了算法存储器块的操作示例。
在图6E中,算法存储器块为初始状态,其中所有的外部可寻址存储器位置当前位于主存储器组A、B、C和D中。该算法存储器块还包括三个额外存储器组E1、E2和E3用于处理可能与第一存储器操作冲突的写入操作。该算法存储器块接着接收四个存储器操作:寻址位置201的第一存储器操作(可以是读取或者写入)和对地址299、204和200的三个额外写入操作。
如果接收到读取操作,那么该读取操作可以仅由存储器组处理,所述存储器组当前为该读取操作中指定的地址存储数据。写入操作可以由指定地址的当前位置处理或者在任何空闲存储器组中处理。在图6E中,针对地址201的第一操作(读取或者写入)由当前为地址201存储数据的存储器组(在该示例中为存储器组B)处理。剩余写入操作不能访问存储器组B。
在图6E的示例中,所有操作针都针对位于存储器组B的地址。因此,额外写入操作必须由其他存储器组处理。在该示例中,对地址299的写入用存储器组E1处理,对地址204的写入用存储器组E2处理,以及对地址200的写入用存储器组E3处理。处理所有存储器操作之后的结果在图6F中示出。
算法存储器系统3:用以获取nX读取性能(nR或者1W)的复制存储器组
通过写入空物理存储器位置并且接着修改映射表以将写入操作中的虚拟地址与被使用以存储数据的物理地址相关联,在前面部分公开中的算法存储器块能够处理额外写入操作。但是,该类型的算法存储器块不能支持多于单个读取操作。因为如果两个同时写入操作针对相同的存储器组,那么存储器组冲突将防止控制器进行读取并且不需要停止而返回两个数据值,因此不能支持两个读取操作。
为了处理两个同时读取操作,简单算法存储器块可以存储存储在存储器块中的每个数据片段的两个副本。特别地,整个存储器阵列可以被复制。图7示出了存储器系统框图,其中有第一存储器阵列704和第二存储器阵列705。每个存储器组都是相同大小并且可以独立地被访问。
当图7的存储器系统700接收针对将被存储在相同存储器组中的数据的两个读取操作,然后第一读取操作可以访问第一存储器阵列704并且第二读取操作将访问第二存储器阵列705。实现多读取存储器系统的这种方法显然可以通过创建整个存储器阵列的许多额外副本被扩展以处理许多读取操作。
但是,在任何其他扩展的情况下,该复制存储器系统一次仅可以处理单个写入操作。每个写入操作写入所有存储器阵列(图7中的阵列704和阵列705二者)以保持所有数据的流通。
实现能够处理多个同时读取的存储器系统的这一方法是众所周知的并且可以通过许多变化来实现。但是,该方法当然不是优雅的。由于处理每个额外的同时读取操作需要整个存储器阵列的完整副本,因此这种完整复制存储器系统将具有非常低的存储密度。因此,希望有替换的解决方案用于处理同时写入操作。
算法存储器系统4:用于获取2X读取性能(2R或者1W)的额外存储器组
代替提供每个数据片段的两个完整独立表示,该部分公开了替代的算法存储器块存储每个数据项的一个完整表示和每个数据项的一个编码版本。数据值的完整表示被存储在主存储器组中的固定位置中。该数据值的编码版本以高效组合多个数据项的方式实现,从而仅需要少量额外存储器用以存储数据的编码版本。
当这种存储器系统通过请求在相同存储器组中有它们的完整表示的数据来接收两个同时读取操作时,存储器控制器便可以从主存储器组检索第一数据项的完整表示以及通过对第二数据项的编码版本进行解码来检索第二数据项。为了适当地操作,存储器系统必须一直能够取得第二数据项的编码版本而无需利用主存储器组,所述主存储器组正在被访问以检索第一数据项。
由于该算法存储器块在固定的主存储器组位置中一直需要每个数据项的主要的完整表示,所以该算法存储器块将不能够处理两个并发写入操作。特别地,如果两个写入操作针对具有存储在相同存储器组中的完整表示的存储器地址,那么两个写入操作将不能够同时访问该主存储器组。为了在在第一周期中执行第一写入以及在第二周期中执行第二写入,存储器系统将停止。因此,这种存储器系统不能同时处理两个写入操作。
在一个实施例中,每个数据项的编码版本被存储在额外存储器组中,所述额外存储器组被添加至多组存储器系统。例如,额外存储器组的每一行可以存储编码值,所述编码值为组合来自所有正常存储器组对应行的所有数据项的函数。为了从编码版本检索单个指定数据项,存储器系统将读取编码版本并且用解码函数处理该编码版本,所述解码函数提取单个指定的请求数据项。
在一个特定实现中,来自主存储器组中对应行的所有数据项与逻辑异或函数(通常称作‘XOR’函数)组合在一起并且被存储在额外存储器组中。由于它存储所有其他数据项的逻辑XOR组合,该额外存储器组有时被称为‘XOR组’。为了逆转XOR函数编码以便从特定存储器组获取所需数据项,来自XOR组中的一行的XOR编码数据值与来自所有其他主存储器组的相同行的所有数据项组合(使用XOR函数),所述所有其他主存储器组为除了包括所需数据项的主存储器组。该操作通过使用异或(XOR)函数从而仅留下所需数据项,将数据项从其他存储器组消除,所述其他存储器组也在XOR组的相同行中被编码。
虽然已公开的实施例利用XOR函数进行操作,但是存在“纠删码”的通用类可以被使用以允许多个数据读取。纠删码将一组N数据位编码为更大的一组N+X数位,如果该数据位子集变得不可用(通常由于被丢失或者损坏),其允许系统恢复N数据位子集。这种纠删码通常在编码数据中使用用于通过不可靠信道传输。在公开的存储器系统中,来自存储器组相同行的一组数据位可以被看作原始的N数据位并且X数据位是通过使用纠删码存储在额外存储器组中的数据。因此,当N数据位的子集变得不可用时(包括N数位的子集的存储器组为同时读取操作而正在被访问),可以通过使用额外存储器组中的X数据位和来自N数据位的剩余数据位,重建该数据位子集。以这种方式,允许来自不可用存储器组(由于对该存储器组的另一个存储器访问而被阻挡的存储器组)的数据位的快速完整重建的任何纠删码系统可以被使用以在额外存储器组中编码数据。
可以被使用的纠删码系统的示例包括里德索罗门编码、最大距离可分(MDS)码和伽罗华域。将不使用不保证恢复完全相同的数据或者花很久时间返回结果的一些编码系统。可以有若干不同的编码系统可以被使用,其中每个都具有这些性质。一些代码可能需要更多的布局区域但是其提供更快的结果。特定应用的编码系统应当保证数据可以在规定的最长时间周期内恢复并且使用最少的资源。
图8示出了算法存储器块800的框图,所述算法存储器块允许通过使用有纠删编码的额外存储器组同时处理两个读取操作。算法存储器块800存储主存储器组804中的第一(完整)数据表示以及XOR存储器组830中的第二(已编码)数据表示。注意,在图8的图示中,为了适合图示中的符号,只有更宽的示出XOR存储器组830。在实际实现中,XOR存储器组830将物理上与存储器系统中的其他存储器组(组0、组1、组2和组3)相同。
如图8所示,算法存储器块800使用该组主存储器组804中的地址000到399以存储数据项的完整表示。在图8的示例中,每个主存储器组(组0到组3)用与存储在该存储器组内的存储器地址的最高有效数位相同的数字标注。(在图8中,组0与有‘0’作为最高有效数位的地址相关联,组1与有‘1’作为最高有效数位的地址相关联,等等。)每个数据项的完整数据表示被存储在主存储器组804中的适当位置内。注意,基于异或的算法存储器块800不需要存储器控制器821中任何虚拟存储器到物理存储器的映射表用以跟踪每个数据片段当前驻留的位置。
除了在主存储器组804中存储完整的表示,存储器控制器821还将数据项的第二(已编码)表示存储在XOR存储器组830中。在XOR存储器组830的每一行中,存储器控制器821存储已被写入所有主存储器组(组0到组3)对应行内的所有数据的异或(XOR)编码版本。例如,如图8所示,XOR存储器组830的行00存储来自存储器组0、1、2和3的行00数据项的异或(XOR)组合。这在图8中描述为使XOR存储器组830的行00存储XOR(000,100,200,300)的逻辑函数。
在图8基于XOR的算法存储器块800中,所有数据写入操作将把信息存储到主存储器组804中的一个的行中和XOR组830的对应行中。将数据的完整表示存储到主存储器组804的组中是正常写入操作,所述正常写入操作使用写入操作中指定地址。将编码表示存储到XOR组830对应行中必须首先通过用现有数据(来自其他存储器组的数据或者XOR组830中的当前编码值)编码新数据值来创建新编码值,然后将该新编码值存储到XOR组830中。可以使用不同方法创建要被存储到XOR组830对应行中的新编码值。
在图8的实施例中,系统有N个主存储器组用于存储数据的完整表示以及一个XOR组830用于存储编码版本。创建新编码值以存储到XOR组830中对应位置的一个方法为创建全新编码值,其不使用已存储在XOR组830内的现有编码值。例如,存储器控制器821可以读取当前存储在其他存储器组相同行的所有数据,使用XOR运算将那些现有数据值与来自写入操作的新数据值组合在一起,然后将新编码值写入XOR组830中。这种实现将在每个写入操作上访问每个存储器组。为了实现该方法,当同时用新XOR编码值更新对应XOR组830的条目时,存储器控制器821将把新数据值写入目标存储器组(由写入地址指定)。特别地,存储器控制器821将读取所有其他存储器组的对应行以获取它们的当前数据值,使用XOR函数将那些来自其他存储器组的数据值与新数据值组合以创建新XOR编码值,然后将该新XOR编码值写入XOR组830中。
总之,为了将新数据值写入存储器系统,系统可以将新数据值写入N个主存储器组中的一个,读取N-1个数据值(从其他存储器组),然后将一个编码数据值写入XOR组中。由于只有单个存储器操作被执行在每个存储器位置上,该方法允许系统用简单的单个端口存储器单元进行创建。特别地,存在针对已定址存储器组的已定址存储器行的单个写入,存在从所有其他主存储器组对应行的单个读取,以及存在针对XOR组830对应行的单个写入以写入新编码XOR值。
图8基于XOR的算法存储器块的操作示例参照图9A到9D进行描述。图9A和图9B示出了存储器系统如何将单个新数据值存储到基于XOR的算法存储器块中。图9C和图9D示出了存储器系统如何可以同时响应两个不同的读取操作。
图9A示出了基于XOR的存储器系统,其已经接收单个写入请求以将数据存储到地址302中。为了完成写入请求,存储器控制器921必须将与写入请求关联的数据值写入主存储器组中的地址302中,并且必须将编码XOR版本写入XOR组930中。在图9A和图9B中显示的示例中,存储器控制器921将为XOR组930创建编码XOR版本而无需参照当前用于XOR组930的现有编码XOR版本。
为了响应写入操作,存储器控制器921读取数据值002、102和202(分别在存储器组0、1和2中)以获取与地址302相同的02行中其他的数据值。用于写入操作的数据值可以同时被存储到地址302中。在图9A中,从地址002、102和202的数据读取用斜体字描述并且对地址302的新数据写入用下划线示出。
然后存储器控制器921必须为XOR组930更新编码XOR值。如图9A所示,通过使用XOR运算(用符号
Figure BDA00003028062100141
示出)生成新编码XOR表示,存储器控制器921将用于地址302的新数据值与仅从地址002、102和202读取的数据组合新编码版本被存储到XOR组930的对应行(行02)中。处理写入请求地址到位置302之后的最终状态在图9B中示出。
图8基于XOR的算法存储器块800的主要优点是处理两个同时写入操作的能力。参照图9C和图9D示出了来自驻留于相同主存储器组的地址的两个数据片段的并发读取示例。在图9C中,基于XOR的算法存储器块接收两个同时读取操作用于都位于存储器块1的地址103和101。由于两个地址都位于相同存储器块中,因此这导致潜在的存储器组冲突。(注意,如果来自两个并发读取操作的地址针对两个不同存储器组的地址,那么由于没有存储器组冲突发生,因此两个读取操作可以容易地由两个不同的独立存储器组并发处理。)为了处理两个读取操作而不会发生存储器组冲突,一个读取请求将通过使用存储器组1中的主要表示进行服务并且其他读取请求将通过使用XOR组830对应行中的编码XOR表示进行服务(借助于从存储器组0、2和3对应行读取的数据)。
参照图9C,存储器控制器921读取五个不同的数据值以处理两个同时读取请求。特别地,存储器控制器921从以下读取:
1)主存储器组1的行03的地址103;
2)主存储器组0的行01的地址001;
3)主存储器组2的行01的地址201;
4)主存储器组3的行01的地址301;以及
5)XOR组930的行01的编码XOR值
注意,这所有五个读取操作都访问不同的存储器组,从而这些任何读取操作之间都没有存储器组冲突。此外,注意,访问存储器系统中的每个存储器组,从而使得该基于XOR的算法存储器块的计数可以消耗比其他类型的算法存储器块使用的技术更多的功率。但是,当两个所请求的地址之间有存储器组冲突时,系统将仅需要从每个存储器组读取。如果读取操作针对两个不同存储器组中的数据,那么存储器控制器921将仅从那些两个不同存储器组读取。
图9D示出了存储器控制器921接着如何通过使用来自这五个读取操作的数据用两个所请求的数据值进行响应。存储器控制器921用从地址103读取的数据进行响应以处理对地址103的读取操作。为了为地址103处理读取操作,存储器控制器921通过将来自XOR组930的行01的编码XOR值与从来自主存储器组行01的地址001、201和301读取的数据组合以完成XOR运算。这消除了来自XOR组930行01中的编码XOR值这些数据值的影响,从而仅留下来自地址101的数据值。因此,图9D示出了用地址103和地址101的数据值进行响应的存储器控制器921。
存储器控制器内需要基于XOR的算法存储器块的一个好特性。这消除了对映射表存储器的需要以及所需的复杂控制逻辑读取映射表并且必要时更新映射表。但是,由于为了实现基于XOR的算法存储器块,并行数据路径必须从所有不同的存储器组(包括XOR组)被路由回至存储器控制器,因此基于XOR的算法存储器块对于宽数据值并不理想。
算法存储器系统5:用于获取2X性能(2R或者1W)的可选择的XOR组实现(2R或 者1/2W)和(1R和1W)
图8的算法存储器块允许两个读取操作被同时处理。图9A到图9D示出了实现这种算法存储器块的一个特定方法。但是,可以实现图8的算法存储器块的许多变化,其中每个变化提供不同的特性。该部分公开了图8算法存储器块的若干变化,所述变化可以同时处理两个不同的读取操作。
返回参照图9C和图9D,为了响应对地址101的读取请求,存储器控制器921不得不读取存储器组整个01行(除了由于存储器组冲突不能读取的地址101)。使用XOR函数允许从XOR组930解码用于地址101的数据值。由于已经在读取相同01行中的其他数据,图9C和图9D的系统可以被使用以实现算法存储器块,所述算法存储器块实现提供来自主存储器组整个数据行数据的“行读取”。这种算法存储器块可以同时响应正常读取请求和行读取请求。图9E和图9F示出了实现行读取特性的存储器系统。
如图9E所示,存储器系统接收对地址103的读取请求和对整个存储器行01(地址001,101,201,和301)的行读取请求。存储器控制器921读取从主存储器组直接读取出来的地址103的数据值。由于读取地址101将与地址103的读取(由于两者都存储在组1中)冲突,因此存储器控制器921还读取存储器系统中除了位置101的整个行01。然后,在图9F中,存储器控制器921以与图9D所述相同的方法,通过直接读取操作输出从地址103、001、201和301读取的数据以及当从行01XOR组条目进行解码时从地址101输出数据。
如图9A和图9B所述,使用纠删码提高了从存储器读取的速度;但是这在写入性能上有影响。图9A和图9B示出了编码第二数据表示(XOR组条目)的一个可能方法,其在添加新数据项到第二表示(XOR组条目)之前,必须在相同的行中读取所有其他数据。在下文中,描述了用以创建数据项的新表示或者第二表示的不同方法。例如,一个实现可以读取现有第二表示(XOR组条目),用新数据项更新该第二表示,然后回写最近更新的第二表示。
参照图8,存储器控制器821可以通过从写入请求的主存储器组804中的目标地址首先读取当前数据值并且读取存储在XOR组830对应行内的当前编码值来实现该方法。接着,通过将该当前数据值与来自XOR组830的当前编码值进行XOR,存储器控制器821从XOR组830的编码版本删除该当前数据的表示。在旧数据从编码值删除之后,存储器控制器821接着通过将新数据值与已经删除旧数据的编码值进行XOR以创建新编码XOR值。最后,存储器控制器821可以接着将新数据值写入主存储器组中的目标地址并且将最近编码的XOR值写入XOR组830的对应行中。
为了以这种方式存储新数据项,存储器系统必须执行以下四个存储器操作:(1)从N个主存储器组中的一个读取旧数据值,(2)将新数据值写入该主存储器组中,(3)从XOR组读取旧的编码值,以及(4)将新编码数据值写回至XOR组中。为了在单个周期中执行所有这些存储器操作,主存储器组804和XOR组830都必须用两端口存储器(一个读取端口和一个写入端口)实现。主存储器组必须是两端口存储器,从而可以从单个循环读取主存储器组804的目标地址(以获取必须从XOR组830中的现有编码值删除的旧数据值)并且将其写入单个周期内(以存储新数据值)。同样地,XOR组830必须用两端口存储器实现,因此可以从单个周期读取它(以获取现有编码XOR数据值)并且将其写入单个循环内(以写入更新的编码XOR值)。在该方法中对主存储器组804和XOR组830使用两端口存储器可以使该方法实现起来成本更高。但是,一些存储器单元电路设计能够仅通过成本上的少量增加来实现两端口存储器单元。
图9G和图9H示出了通过使用现有表示更新第二数据表示的替代方法。在图9G和图9H的示例中,存储在XOR组930中的当前编码XOR表示被使用以生成被写回至XOR组930中的新编码XOR表示。参照图9G,存储器系统接收对地址312的写入。如图9G斜体字所示,存储器控制器921通过读取地址302中的现有数据值以及读取包括函数XOR(002、102、202、302)的XOR组930的02行条目以响应对地址302的写入。该数据将被使用为XOR组930的行02条目创建新编码XOR值。
然后,如图9H所述,存储器控制器921接着通过将地址302的旧数据值与当前编码值进行XOR(为了移除与地址302相关联的旧数据)并且还将新数据值写入地址302中(为了将地址302的新数据添加到编码XOR值中),为该行生成新编码值。最后,存储器控制器921将新数据值写入地址位置302中并且为XOR组930的行02条目写入最近创建的编码XOR值。对地址位置302写入之后的最终状态在图9H中示出。
在图9G和图9H中公开的写入操作中,有四个内部存储器访问(两个读取操作和两个写入操作)用于处理接收到的单个写入请求。存储器访问的数量不依赖于在存储器子系统中使用的组的数量。在图9A和图9B公开的写入操作中,系统使用五个存储器访问(三个读取操作和两个写入操作)。存储器读取访问的数量依赖于在存储器子系统中使用的组的数量,并且在有更多数量存储器组的实现中,由于必须读取每个存储器组中的对应行以创建更新的第二表示,因此图9A和图9B的系统将使用更多的存储器访问。因此,图9G和图9H中公开的处理写入操作的第二方法比图9A和图9B中公开的处理写入操作的原始方法消耗的功率少。
图9G和图9H的示例通过使用两端口存储器单元在单个存储周期中进行操作。对于必须在每个周期中处理写入操作的系统来说,该类型的实现将起作用,但是由于必须在主存储器组和XOR组930中实现的两端口存储器,可能成本高。但是,如果应用不需要能够每个周期都处理新写入操作,那么可以允许系统使用成本较低的单端口存储器。例如,当仅使用一个周期处理两个同时读取请求时,存储器系统可以使用两个周期以完成每个写入操作。这种存储器系统可以被称为两个读取或者半个写入(2R或者1/2W)算法存储器块,虽然可以在单个周期中处理两个读取操作,但是仅可以在单个写入周期中处理半个写入操作。(将需要两个存储周期以完成完整的写入操作。)
图9I和图9J示出了这种两个读取或者半个写入算法存储器块如何可以处理对地址302的写入操作。图9I示出了第一存储周期,其中存储器控制器921从地址302读取现有数据值以及从XOR组930读取现有编码XOR表示。图9J示出了第二存储周期,其中存储器控制器921将新数据值写入地址302中并且将更新的编码XOR表示写入XOR组930的02行条目中。
在图9G到图9H中公开的存储器系统中,当将新数据值写入存储器系统中时,存储器控制921仅从该组主存储器组访问单个存储器组。特别地,参照图9G到图9H公开的系统只访问主存储器组中的目标存储器位置(在示例中为地址302)。由于没有涉及到其他主存储器组,因此可以添加读取操作,从而使得可以创建每周期支持一个读取操作和一个写入操作(除了每周期可选择地支持两个读取操作)的存储器系统。但是,该实施例需要三端口存储器以实现XOR组。
图9K和图9L示出了基于XOR的算法存储器块,其处理一个写入操作和一个读取操作。如图9I中所示,存储器控制器921接收对地址302的写入和从地址304的读取。为了处理写入操作,存储器控制器921必须首先访问地址302和XOR组930的02行条目。存储器控制器921首先读取地址302中的原始数据(在接收到该写入操作之前地址302中的数据值),然后可以将新数据写入地址302中。存储器控制器921接着将来自地址302的原始数据与XOR组930的02行条目组合以删除原始地址302的数据。最后,存储器控制器921在来自写入操作的新数据值中进行XOR,然后将结果写回至XOR组930的02行条目中。
为了同时处理读取地址304的请求,由于对地址302的写入已经在使用存储器组3,因此存储器控制器921不能直接访问存储器组3。相反,存储器控制器921从其他存储器组(地址004、104和204)读取04行条目并且读取包括XOR(004、104、204、304)的XOR组930中的行04条目。注意,在来自XOR组930的行02条目也正在被读取的同时XOR组930中04条目的这一读取正在发生,从而使得XOR组930中的一行以上在相同时钟周期期间必须是可独立访问的。因此,如山所述,XOR组930需要用三端口存储器实现。存储器控制器921接着将来自地址004、104和204的数据值与来自XOR组930的XOR(004,104,204,304)条目一起进行XOR以从地址304检索数据值。
算法存储器系统6:用以获取NX读取性能(NR或者1W)的额外XOR组
上节公开的基于XOR的算法存储器块可以被扩展以处理多于正好两个同时读取操作。扩展基于XOR的算法存储器块的技术涉及添加额外XOR存储器组,所述额外XOR存储器组用各种不同的互斥集覆盖主存储器组。以这种方式,多个读取的基于XOR的算法存储器块将用从已定址存储器组直接读取的一个数据值响应对相同存储器组的多个读取操作以及用XOR存储器组响应通过组合来自其他存储器组的数据值创建的多个其他数据值。
图10示出了基于XOR的算法存储器块1000的概念图,其被设计以处理四个同时读取操作。基于XOR的算法存储器块1000具有主存储器组集合1004,其包括被标记为B01到B16的16个独立存储器组。存储器组B01到B16的每一个都可以被同时独立访问。
基于XOR的算法存储器块1000还包括一组XOR存储器组1030。在主存储器组集合1004中的每个存储器组在XOR存储器组1030中的三个中表示,从而每个存储器组内的数据可以用四种不同的方式访问:对主存储器组集合1004内的存储器组和包括数据替代表示的三个不同的XOR存储器组的XOR解码的直接读取。
一次只能将一个数据项写入基于XOR的算法存储器块1000。新数据项的写入需要将新数据值写入针对该项的主存储器组的目标地址(主存储器组集合1004中存储器组01到16中的一个)并且更新XOR存储器组1030内的三个XOR存储器组,所述三个XOR存储器组还包括新数据项的表示。这些可以被使用以将数据项写入基于XOR的算法存储器块1000方法与本文之前两部分公开的方法相同。
图11A至图11E示出了如何通过访问组B11内的一个主要数据表示和来自XOR组1030的三个编码数据表示以读取位于相同存储器组(在该示例中为组B11)的四个数据项。首先,基于XOR的算法存储器块接收针对四个数据项的请求,所述四个数据项都驻留于主存储器组B11内。存储器组B11内的四个地址可以被指定为B11.A、B11.B、B11.C和B11.D,其中后缀字母指定存储器组B11内的地址。注意,所有存储器组都是具有相同的大小并且可以用相同的A、B、C等样式进行内部寻址。如图11A所述,可以从B11存储器组直接读取第一请求数据项B11.A。由于这将导致存储器组冲突,因此不能从存储器组B11直接读取其他三个数据项(B11.B、B11.C和B11.D)。
图11B示出了如何通过使用第一XOR组1132以访问第二数据项B11.B,所述第一XOR组1132包括B11的编码表示并且因此包括地址B11.B处数据表示。来自XOR组1132的请求B数据地址与来自其他存储器组中对应B地址位置的数据进行XOR,所述其他存储器组由XOR组1132表示。在该示例中,为了提取所请求的数据项B11.B,来自第一XOR组1132的B地址位置与从主存储器组B09、B10和B12中对应B地址存储器位置检索到的数据项相组合,所述第一XOR组1132包括来自B09、B10和B12存储器组的条目组合。
图11C示出了可以如何通过使用第二XOR组1133以访问第三数据项B11.C,所述第二XOR组1133还包括B11存储器组的表示并且因此包括地址B11.C处所请求的数据。除了来自所需B11组的数据,第二XOR组1133包括来自其他存储器组(组B03、B07和B15)的数据表示。注意,这些数据组全都不同于在第一XOR组1133(具有B09、B10和B12)中表示的数据组,从而可以访问对应的其他存储器组(组B03、B07和B15)而不会发生存储器组冲突。在该示例中,来自第二XOR组1133的C地址与从主存储器组B03、B07和B15的对应C地址检索到的数据项相组合以重建所需数据项B11.C,所述第二XOR组1133包括来自B03、B07、B11和B15存储器组的条目组合。
图11D示出了已经被访问以获取前三个数据项(B11.A、B11.B和B11.C)的所有存储器组。特别地,图11D示出了在参照图11A、图11B和图11C公开的存储器读取中读取的所有存储器组。如图11D所示,包括来自B11组的数据表示并且还没有被读取的唯一存储器组是在右下角中的XOR组1134。XOR组1134包括所有主存储器组B01到B16种所有数据值的XOR组合。
为了检索最后请求的数据值(来自地址B11.D的数据),存储器系统将对来自如图11E所示还没被访问的所有存储器组的D存储器地址一起进行XOR。为了说明这样起作用的原因,考虑存储器组1139的水平行。参照图11B,存储器组B09、B10和B12中的地址B处的数据值与XOR组1132中的地址B处的值相组合以获取所需数据值B11.B。(B11=XOR(B09,B10,B12,XOR组1132))如果可以再次读取那些相同的存储器组,最终B11.D数据值可以以相同方式获取。虽然不能再次读取那些存储器组(由于存储器组冲突),但是来自那些存储器组的所需内容可以通过使用还未被读取的存储器组进行创建。以下等式示出了可以如何对来自与B11相同的行中所有其他存储器组的数据值进行重建:
B09=XOR(B01,B05,B13,XOR组1135)
B10=XOR(B02,B06,B14,XOR组1136)
B12=XOR(B04,B08,B16,XOR组1137)
XOR组1132=XOR(XOR组1151,XOR组1152,XOR组1153,XOR组1134)
因此,当将来自那些四个存储器组的数据值相组合时,结果为来自B11的相同值。注意,前面四个等式列出了图11E中突出显示的所有存储器组。因此,为了重建B11.D的值,可以对来自图11E中突出显示的所有存储器组的地址D位置一起进行XOR以获取来自地址B11.D的数据。
图11A到图11E所述的示例示出了最坏情况的场景,其中所有读取请求都针对相同的存储器组(在该示例中为存储器组B11),从而造成潜在的四向存储器冲突。当存储器请求被分散在不同存储器组之间时,系统不必过于依赖XOR组。例如,图11C示出了需要被访问的第二数据项B11.C如何使用XOR组1133和垂直列中的所有存储器组B11。如果第二存储器请求已经代替针对位于存储器组B07的地址B07.C,那么将不需要XOR组1133来获取B07.C值。特别地,图11F示出了既然与组B11不存在存储器组冲突,那么如何可以从存储器组07直接读出数据项B07.C。因此,如图11C所示第二表示的解码。
算法存储器系统7:用以获取2X性能(1更新)的额外XOR组
在前述部分中公开的基于XOR组的方法被使用以实现专门的“1更新”存储器。“更新”操作是特殊类型的存储器操作,其由读取操作和同时的写入操作组成,其中写入操作写入之前从几个存储周期读取的存储器位置。几个周期之后,读取操作之后将是对应的写入操作。这在计算机科学领域内通常被称为“读取-修改-写入”操作。
当跟踪统计数据或者状态时,存储器操作的更新类型被频繁使用。例如,正在处理许多不同通信线路、连接、会话、数据包队列和其他数据提取的网络路由器可能需要跟踪每个数据提取的各种统计数字。例如,网络路由器可以跟踪服务的数据包数量、丢弃的数据包数量、数据包类型、进行特定会话的数据总量等等。同样地,读取-修改-写入操作还对保持状态值(例如TCP连接状态、监管器状态和其他系统状态)非常有用。对保持的这些统计数字和状态值中的每一个来说,网络路由器可以周期性地从存储器读取当前值,修改当前值,然后将更新的统计数字或者状态值写回到存储器中。如果必须跟踪大量统计数字,那么可以使用专门统计的存储器以优化这种统计处理。
由于更新操作包括从存储器读取数据值以及在不久之后接着将更新的数据值写回至相同的存储器位置,因此存储器系统可以利用它能预料稍后要接收到写入操作的事实。例如,在更新操作的存储器读取阶段之后,存储器控制器可以将来自该存储器读取操作的状态信息向前进位,从而当接收到随后的写入操作时,向前进位的状态信息将是可用的。为了优化对所存储向前进位信息的处理,可以沿着内部移位寄存器中的管线传送向前进位信息,所述内部移位寄存器与读取-修改-写入的相关读取和写入操作同步。
返回参照图8基于XOR的算法存储器块,基于XOR的算法存储器块必须为每个写入操作更新主存储器组区域804中已定址存储器位置中的主要表示和XOR组830中适当行中的第二(编码)表示。为了在写入操作期间更新XOR组830,存储器控制器821需要来自XOR组830相同行的所有其他数据值(如参照图9A和图9B所公开的)或者旧数据值已删除的XOR组830中适当行的内容(参照图9G至图9J所公开的)。在更新存储器系统中,创建编码表示所需的这种额外数据可以在读取操作期间获取,在管线或者移位寄存器中向前进位,然后当接收到随后的写入操作时使用。
在更新存储器系统中必须考虑几个不同的情况。将用示例来说明每个情况。图12A示出了要考虑的第一情况,其中在针对相同地址的相同周期中正在处理读取操作和回写操作(来自相距几个周期的两个不同的更新操作)。由于相同地址显然在相同存储器组内,因此这是潜在的存储器组冲突。
为了处理读取操作,存储器控制器1221读取XOR组1230的02行和02行中的其他数据值(地址002、102和202),然后将这些值组合以检索地址302的当前数据值。特别地,存储器控制器1221将XOR(002、102、202、302)与来自地址002、102和202的数据值相组合以从地址302获取所请求的数据。这在图12B中进行说明,其中存储器控制器1221计算XOR(002,102,202,302)
Figure BDA00003028062100191
用于为地址302返回数据。
存储器控制器1121通过使用已经由之前的读取操作向前进位到相同地址的状态数据对写入操作进行处理。特别地,向前进位的状态信息是用于目标地址的旧数据值和XOR组1230相关行的值。因此,对图12A的示例来说,其中该写入针对地址302,存储器控制器1221将把地址302的旧数据值和XOR组1230的02行条目(即XOR(002,102,202,302))向前进位。为了为XOR组1230创建新条目,存储器控制器1221将地址302已向前进位的旧数据值、已向前进位的XOR(002,102,202,302)值和地址302的新数据值一起进行XOR以创建新XOR(002,102,202,302)值。如图12B中线条1228所示,存储器控制器1221将该新创建的XOR(002,102,202,302)值写入XOR组1230的02行条目。存储器控制器1221还将用于地址302的新数据值直接写入主存储器组中的地址302位置中。因此,为了处理对地址302的写入,存储器控制器只需要执行两个写入操作:将主要表示写入到地址302位置中和将地址302数据的第二(编码)表示写入到XOR组1230的02行条目中。
注意,在图12A的示例中,在管线中经读取操作向前进位的XOR(002,102,202,302)的值可以在其被使用于随后写入操作之前发生改变。例如,在读取用于地址302的数据值的时间和将新数据写入地址302的时间之间,用于地址102的数据值可能已经发生改变。如果发生这种情况,那么从原始读取发生时开始简单地使用XOR(002,102,202,302)值将导致用于XOR(002,102,202,302)值内的地址102的值过期。为了防止这种情况,将数据向前进位的管线必须将已改变的数据值传送至随后的管线阶段从而数据保持一致。因此,当写入操作改变在稍后管线站中表示的数据值(例如向前进位的XOR组条目)时,该数据值(例如XOR组条目)必须被更新以反映新数据值。
存在一些实现数据向前进位系统的变化。例如,在一些实现中,存储器控制器可以将用于相同行中存储器组条目的数据值向前进位而不是将XOR组条目向前进位。在对图12A中示出的地址302进行读取操作的情况下,存储器控制器1221可以将用于地址002、102和202的数据值向前进位。然后,为了在回写的时候为XOR组1230创建新的02行条目,存储器控制器1221将接着将用于地址302的新数据值与用于地址002、102和202的已向前进位的数据值一起进行XOR。这在图12B中用线条1229示出。注意,如果在为地址302的回写发生之前,其他数据值(002、102或者202)随写入改变,那么当前在管线中传送的那些数据值应当也被改变。
图12C和图12D示出了要考虑的第二情况,其中对地址104的读取和对地址302的回写操作针对不同存储器组中的不同地址。在图12C和图12D的情况中,以相同的方式处理对地址302的写入。特别地,存储器控制器将用于地址302的新数据直接写入地址302并且利用向前进位数据为XOR组1230创建新的行02条目。如图12D中所示,可以通过利用如线条1228所示已向前进位的02行XOR组条目以创建XOR组1230的行02条目,或者可以利用来自如线条1229所述相同存储器组的行(来自地址002、102和202的数据)以创建XOR组1230的行02条目。
存储器控制器1221可以通过简单地从地址104读取数据值并且用如图12D中所述的数据进行响应以处理从地址104的读取。但是,存储器控制器1221还将从04行访问其他信息以获取所需向前进位信息。在传送XOR组条目值的实施例中,存储器控制器1221将仅访问XOR组1230的行04条目以获取XOR(004,104,204,304)值。在将来自其他存储器组的数据值向前传送的实施例中,存储器控制器1221还将读取004和204数据值。存储器控制器1221将通过把XOR(004,104,204,304)值与地址004、104和204的数据值用XOR运算相组合以计算地址304的数据值。
图12E和图12F示出了第三情况,其中对地址301的读取和对地址302的回写操作针对相同存储器组中的不同地址。在图12E和图12F的情况中,以如前面两个情况中所述相同的方式,通过来自最近读取操作的向前进位状态信息对地址302的写入进行处理。为了处理读取操作,存储器控制器1221读取XOR在1230的行01条目以及从01行(地址001、101和201)读取其他数据值。如图12F中所示,存储器控制器1221通过将XOR组1230的行01条目与来自地址001、101和201的数据值一起进行XOR以生成所请求的地址301的数据值。存储器控制器1221接着传送来自XOR组1230的行01条目和/或者来自地址001、101和201的数据值以供随后的回写操作使用。
算法存储器系统8:用于获取2X性能(1R和1W)但不允许重写的额外XOR组
在图9K和图9L公开的能够处理同时读取操作和写入操作的基于XOR的算法存储器块中,在新数据值中进行写入之前,存储器系统使用两个存储器单元以从主存储器组位置读取现有数据值。主存储器组中所需的两端口存储器将允许这种特性:使用更多的布局区域并因此降低存储器系统的二进位密度。需要有能够执行同时读取和写入而不用需要两端口存储器的其他方法。图13公开了这样的基于XOR算法存储器块:可以通过利用主存储器组中的单端口存储器处理同时读取操作和写入操作。但是,图13的基于XOR的算法存储器块1300对存储器系统加以特定使用限制,其必须遵循如下将要描述。
如图13中所示,地址000到399的集合被存储到主存储器组1304的集合中,其中每个存储器组与具有存储器地址的特定数位的地址相关联。与前面基于XOR的系统一样,基于XOR的算法存储器块1300还包括XOR存储器组1330,其存储已经被写入所有主存储器组对应行中的所有数据的异或编码版本。但是,基于XOR的算法存储器块1300还包括新数据结构、小的XOR组内容表格1333。XOR组内容表格1333跟踪主存储器组区域1304中的地址当前具有XOR组1620中表示的有效数据。因此,XOR组内容表1333是具有与主存储器组1304相同数量的可单独寻址元件但是该存储器阵列中的每个元件仅包括单个数位条目的存储器阵列。
为了简化保持XOR存储器组1330更新的任务,如果存储器系统已经将有效数据存储在该特定存储器地址中,那么图13的基于XOR的算法存储器块1300施加禁止用户将新数据写入地址的限制。由于该使用限制,当接收到新的写入操作时,当接收到新的写入操作时,由于XOR存储器组1330中没有旧数据用于该地址,所以存储器控制器1321不需要删除来自XOR存储器组1330的旧数据的参与。
为了处理写入操作,存储器控制器1321仅需要将新数据写入主存储器阵列1304中的目标地址中并且用该新数据更新XOR存储器组1330中的表示。由于没有来自当前XOR存储器组1330中对应行条目中表示的目标地址的任何有效数据,存储器控制器1321可以简单地读取适当的XOR存储器组条目,在新数据值中进行XOR,然后将该更新的编码表示写回至XOR存储器组条目中。注意,由于对相同存储器组的读取和写入都将需要访问XOR组1330,因此使用四端口存储器以实现XOR组1330,但是主存储器组1304将不需要多端口存储器电路。
为了允许目标地址被清除,从而使得可以写入新数据,基于XOR的算法存储器块1300执行两个不同类型的读取操作:正常读取操作和读空操作。如前面的实现中所做的,正常读取操作简单读取数据并且将该数据提供给请求者。读空操作读取数据,为请求者提供数据,然后从XOR组1330清除该数据的表示。为了执行这种不同的读取操作,存储器设备可以使用连接至该存储器设备的信号线以指定读取操作是正常读取操作还是读空操作。
读空操作读取所请求的数据,删除来自XOR组1330对应行的数据表示,然后清除XOR组内容表1333中相关联的标志以指示XOR组1330不再包括用于该特定存储器地址的数据表示。如果基于XOR的算法存储器块1300接收针对在XOR组内容表1333中标记为不包括有效数据的目标地址的读取操作,然后由于在这种实例中它不能一直提供有效数据,因此存储器控制器1321将指示存储器故障。由于如果地址不在XOR组1330中表示,那么该地址必须提早已经接收了“读空”操作或者从未将有效数据存储在其中,因此这种情况绝不应当发生。因此,由于存储器位置将仅包括无用数据值,因此适当设计的系统不应当从存储器地址读取。
当接收到读取请求(正常读取或者读空)和写入请求,其没有导致存储器组冲突发生,然后读取请求和写入操作可以在两个独立的主存储器组中同时发生。但是,如果读取操作是读空操作,那么读空操作和写入操作都将需要访问XOR组1330。如上所述,为了将XOR编码数据添加到XOR组1330中,写入操作必须一直访问XOR组1330。当读取操作为读空操作时,那么读空操作还将必须访问XOR组1330以删除来自XOR组1330的数据的XOR表示。由于读取操作和写入操作都可能需要读取、修改和写入XOR组1330,因此在单个存储器周期中XOR组必须支持两个读取操作和两个写入操作。因此,XOR组1330可能需要是四端口存储器设备。
当读取操作和写入操作都在相同存储器组中寻址数据值时就发生潜在的存储器组冲突。为了处理这种情况,由于必须将新数据写入该地址,因此给予存储器写入操作访问主存储器1304中的存储器组的优先权。(由于读取的完成通过间接使用存储器组和XOR组剩余部分,而不是直接通过存储器组,因此这被称为“反XOR”操作;即使存储器组没有对读取冲突进行读取。)此外,读取操作还必须更新XOR组1330中的对应位置。
通过从XOR组1330检索对应XOR编码版本对存储器读取操作(不能访问主存储器1304中写入操作当前访问的相同组)进行处理。特别地,存储器控制器从XOR组1330读取适当行的条目,从其他存储器组中对应行读取数据,然后解码XOR编码版本以获取所请求的数据,所述其他存储器组将有效数据在来自XOR组1330的条目中进行编码。注意,XOR组内容表1333被使用以仅选择那些当前在XOR组1330对应行中具有有效数据的存储器组。如果这是对该存储器位置的正常读取,那么XOR组1330中对应位置可以保持不变。但是,如果这是读空操作,那么存储器控制器1321必须回写只包括来自其他存储器组的数据的XOR编码版本,所述其他存储器组仍在该行具有有效数据。
参照图14A到图14F描述了这一特定的基于XOR的算法存储器块1300的操作示例。图14A示出了在空初始状态中的存储器系统。图14A中描述的存储器系统在其接收任何读取操作之前,必须接收至少一个写入操作。图14A描述了存储器系统接收对于对地址位置302寻址的存储器系统的第一写入操作。存储器控制器1421将数据写入主存储器中的存储器位置302并且将数据XOR到XOR组的相同行中。由于XOR组1430为空,因此XOR组1430中的02行将最终包括写入地址302的相同数据。存储器控制器1421接着更新XOR组内容表1433以指示XOR组1430的02行当前包括来自主存储器组3的有效数据(XOR组1430当前包括地址302的有效数据)。对地址位置302进行写入之后的最终状态在图14B中示出。
图14C示出了具有来自图14B的状态的存储器系统接收随后对地址102的写入。将数据写入主存储器的102位置并且还更新了XOR组1430。特别地,对XOR组1430的行02进行读取,通过使用XOR运算将其与写入地址102的新数据组合,然后将其回写至XOR组1430的行02中。还更新XOR组内容表1433以反映当前包括来自组1和组3数据的XOR组1430的02行。在对地址102写入之后,基于XOR的算法存储器块的最终状态在图14D中示出。
基于XOR的算法存储器块将继续以这种方式填满。图14E示出了添加了更多数据之后的存储器系统的示例状态。如图所示,然后图14E的系统可以同时接收对地址100的写入和从地址104的读取。在该反XOR系统中,给予写入操作优先权并且将与写入操作关联的数据写入主存储器组中的地址100中(如主存储器组中标有下划线的100所指示的)。为了更新XOR组1430,存储器控制器1421从XOR组1430读取00行,将写入地址100的数据进行XOR,然后将结果回写至XOR组1430的00行。最后,还必须更新XOR组内容表1433。存储器控制器1421在XOR组内容表1433中设置数位以指示XOR组1430的行00当前还包括来自存储器组1数据(地址100现在在XOR组1430中具有有效数据)。
由于与对地址100的写入存在组冲突,因此从地址104的读取不能通过从主存储器中的地址104直接读取数据进行处理。因此该读取必须通过使用XOR组1430和其他主存储器组进行处理。存储器控制器首先读取XOR组内容表1433的行04以确定哪个主存储器组有在XOR组1430的行04中表示的数据。XOR组内容表1433的行04指定组1、组2和组3(地址104、204和304)都具有在XOR组1730的行04中进行XOR的数据。这时,如果XOR组内容表1433的行04条目已经指示地址104不包括有效数据,那么由于请求者正在向不包括任何有效数据的地址请求数据,因此存储器系统应当发出存储器故障的响应。但是在这种情况下,XOR组内容表1433指示地址104的确具有表示在XOR组1730的行04中的有效数据。
为了为地址104检索数据,存储器控制器1421读取XOR组1430的行04并且从其他组(组2和组3)读取数据值,所述其他组具有在XOR组1430的行04中表示的数据。在这种情况下,组2和组3在XOR组1430中具有有效数据,从而存储器控制器1421在地址204、数据地址304和XOR组1430的行04中读取数据。将从这三个位置读取的数据值一起进行XOR以从地址104获取原始数据,所述原始数据被使用以响应读取操作。如果读取操作是正常读取操作,那么该读取操作将在此刻完成。
如果读取操作替代为读空操作,那么存储器控制器1421需要删除与来自XOR组1430的地址104相关的数据。图14G示出了这种读空操作的作用。存储器控制器1421可以通过将用于地址104的数据值与从XOR组1430读取的行04读取的原始值进行XOR来执行这个操作以删除与地址104相关的数据并且接着将该值回写至XOR组1430。存储器控制器1421还必须清除XOR组内容表1433中地址104位置中的数位以指示来自地址104的数据不再在XOR组1430中表示。在对地址100进行写入和图14E的读空操作之后的最终结果是在图14G中示出的状态。
如上所述,存储器控制器一直在读空操作之后从XOR组删除数据(不论数据是从主存储器组还是从XOR组读取的),从而随后的写入操作不用需要删除旧数据就可以简单地更新XOR组中的编码XOR表示。在供选择的实施例中,只有读空操作从而存储器控制器在每次读取操作之后将表示从XOR组删掉。由于每个数据项仅可以被读取一次,这种实现被称为“读取一次”存储器系统。
参照图13到14G公开的XOR系统具有使其在一些应用中有利但在其他应用中不是很理想的特性。正常单端口存储器可以被使用以实现主存储器组这一事实是非常重要的。但是,代价是要求用户在随后的写入被接收用于该地址之前发出读空操作。但是,这不是一个遵循起来很难的限制。如其他基于XOR的存储器系统,由于为了适当地使用XOR组,来自所有不同存储器组(包括XOR组)的平行数据路径必须被路由至存储器控制器,因此该基于XOR的系统对于宽的数据并不理想。
在供选择的实施例中,存储器系统可以用两个存储周期处理写入操作。在这个实施例中,存储器系统将在第一存储周期中读取旧数据值并且在第二存储周期更新XOR条目。
组合算法存储器块
前述部分公开了不同算法存储器块的集合,其中每个算法存储器块具有各种独特的能力和各种限制。通过组合各种分级排列中的利用每个算法存储器块的能力和限制的这些不同类型算法存储器块,然后可以构建复杂存储器系统以具有比独立的较低水平存储器更大的能力。因此,由于整体(复杂分级存储器系统)能力高于它的多个部分(独立算法存储器块或者基本存储器块)的总和,因此实现了协同作用。
将提供若干示例用于为读取器显示算法存储器块或者基本存储器块的若干可能组合。但是,这些仅仅是作为示例表示并且对本领域技术人员明显的是还可以创建算法存储器块和基本存储器块的各种其他组合。
第一2读取和2写入存储器实现
在前面部分中公开的所有算法存储器块中,没有一个算法存储器块能够同时处理多个读取操作和多个写入操作。一些算法存储器块可以通过使用额外组处理多个写入操作,但是仅可以处理一个同时读取操作。其他算法存储器块可以通过添加额外XOR组处理多个读取操作,但是仅可以处理一个写入操作。如果一个以分级方式组合来自这些各种算法存储器块的教导,那么一个可以构建可以同时处理多个读取操作和多个写入操作的复杂存储器系统。该部分将公开可以同时处理两个读取操作和两个写入操作的第一复杂存储器系统。
图15A示出了复杂存储器系统的第一示例,其以分级方式组合来自前面部分的算法存储器块。在图15A的分级存储器系统中,若干算法存储器块被组织成分级排列,其允许分级存储器系统执行两个同时读取操作和两个同时写入操作。特别地,在可以处理两个同时读取操作和一个写入操作的较低水平算法存储器块顶部实现可以处理一个读取操作和两个同时写入操作的高水平算法存储器块。这两个不同算法存储器块的分级组合创建可以处理两个同时读取操作和两个同时写入操作(2R2W)的存储器系统。
由于本发明公开构建了复杂的分级存储器系统,因此必须小心使用术语。本文将把特定算法存储器块的多个实例称作‘存储器宏指令‘。可以用基本存储器块或者其他算法存储器块(还可以被称为存储器宏指令)构建存储器宏指令内的实际存储器组。
参照图15A,第一高水平组织实现可以处理一个读取操作和两个同时写入操作的算法存储器块。在图15A的系统中,来自前面部分“存储器系统2”的算法存储器块被使用以实现该目标。通过用于存储数据主存储器宏指令1591的集合、三个额外存储器宏指令1592的集合和存储器控制器1511实现该组织。存储器控制器1511实现额外-存储器-组以处理同时写入操作。特别地,当存储器控制器1511接收寻址到相同存储器宏指令的读取操作和写入操作的集合(在主存储器宏指令1591的集合中)从而导致潜在冲突时,那么存储器控制器1511将任何潜在冲突写入操作移动至新存储器宏指令并且在虚拟存储器表1513中重映射所写入数据项的新位置。因此,该第一算法存储器块组织允许图15A的分级存储器系统处理两个同时写入操作。(注意,三个额外存储器宏指令可以被使用以处理三个额外写入操作,但是只有两个额外写入操作可以由该存储器系统处理。)(需要三个额外存储器宏指令的理由将在以下作出解释。)
为了处理两个同时读取操作,主存储器宏指令1591和额外存储器宏指令1592各自通过被设计以处理2个同时读取操作或者1个写入操作(2R或者1W)(例如“存储器系统4”算法存储器块)的算法存储器块进行实现。特别地,存储器宏指令块1520、1521、1522、1523、1541、1542和1543可以各自处理两个同时读取操作或者一个写入操作。存储器宏指令块1520、1521、1522、1523、1541、1542和1543中的每一个分别包括它本身的存储器控制器1530、1531、1532、1533、1551、1552和1553。每个存储器宏指令块中的这些存储器控制器实现基于XOR的算法存储器块技术,所述技术被使用以提供处理两个同时读取操作和一个写入操作的能力。因此,较高级的存储器组织(由主存储器宏指令1591、额外存储器宏指令1592和存储器控制器1511组成)中的每个独立存储器宏指令可以处理两个同时读取操作和一个写入操作。
由于(主存储器宏指令1591和额外存储器宏指令1592的)高水平算法存储器块组织可以处理两个同时写入操作以及较低水平的算法存储器块(存储器宏指令块1520、1521、1522、1523、1541、1542和1543)可以处理两个同时读取操作,因此图15A的总体分级存储器系统1590能够处理两个同时写入操作和两个同时读取操作。以下章节说明处理两个读取操作和两个写入操作的各种不同情况。
在不重要的情况下,同时接收到的两个读取操作和两个写入操作都对主存储器宏指令1591和额外存储器指令1592的不同“存储器宏指令”进行寻址。在这种情况下没有一个潜在的存储器冲突,从而每个已定址的存储器指令可以处理独立于其他存储器宏指令的存储器访问。
当写入操作中的一个与其他存储器操作(读取或者写入)之间存在潜在存储器冲突时,那么存储器控制器1511将检查虚拟存储器表1513用于为该写入操作定位空闲的存储器宏指令从而避免冲突。存储器控制器1511接着执行对空闲宏指令的写入操作并且接着将用于该写入操作的地址重映射到被使用以处理写入操作的新存储器宏指令。
一个特别困难的情况是全部存储器操作(两个同时读取操作和两个同时写入操作)都针对相同存储器宏指令的时候。例如,如果所有四个存储器操作被寻址到存储器宏指令1522(在高水平主存储器宏指令1591中),那么由于存储器宏指令通过能够处理两个同时读取操作的算法存储器块进行创建,因此两个读取操作可以直接由存储器宏指令1522进行处理。(由于存储器宏指令1522是存储已定址数据的唯一位置,因此存储器宏指令1522必须处理两个读取操作。)但是,由于存储器宏指令1522可以仅处理两个读取操作或者一个写入操作,因此写入操作必须针对别的位置。
为了处理写入操作,存储器控制器1511将查阅虚拟存储器表1513以确定可以处理两个写入操作的两个空闲存储器宏指令。存储器控制器1511接着将那些写入操作的地址重映射到已确定的空闲存储器宏指令以避免潜在的存储器冲突。例如,存储器控制器1511可以将第一写入操作重映射到存储器宏指令1541中并且将第二写入重映射到额外存储器宏指令1542中。以这种方式,存储器系统1590通过用存储器宏指令1522直接处理两个读取操作,将第一写入操作重映射到额外存储器宏指令1541和将第二写入操作重映射到额外存储器宏指令1542以处理被寻址到存储器宏指令1522的两个读取操作和两个写入操作。(注意,基于虚拟存储器映射表的当前状态,空闲存储器宏指令的位置将不同。)
图15B示出了可以用第三额外存储器宏指令(在额外存储器宏指令1592中)解决的一个特别困难的情况。在图15B的示例中,第一读取操作1571、第一写入操作1561-1和第二写入操作1562-1都针对相同的存储器宏指令1521。由于由读取操作1571请求的数据值仅在那一个存储器宏指令1521中存储,存储器控制器必须访问存储器宏指令1521以服务该读取操作1571。并且由于存储器宏指令1521仅可以处理两个读取操作或者单个写入操作,因此存储器控制器必须重定向两个写入操作至不同的存储器组。
在该示例中,存储器控制器中的存储器表指定额外存储器宏指令1541、1542和1543为供选择的存储器宏指令用于处理写入操作。但是,第二读取操作1572针对存储器宏指令1541,从而该存储器宏指令1541不能被使用以处理两个写入操作的任何一个。因此,存储器控制器使用存储器宏指令1542以处理第一写入操作1561-2。最终,存储器控制器使用存储器宏指令1543以处理第二操作1562-2。
如图15B的示例中所示,两个读取操作(1571和1572)可以阻止可用存储器宏指令中的两个用于处理写入操作。并且每个存储器宏指令仅可以处理单个写入操作。因此,四个不同存储器宏指令必须可用以用于每个写入操作,以便第二写入操作可以访问当前没有被两个读取操作或者第一写入操作的任何一个使用的存储器宏指令。这就是图15A的分级存储器系统1590使用三个额外存储器宏指令1592(额外存储器宏指令1541、1542和1543)代替仅使用两个额外存储器以处理两个写入操作的原因。
注意,还可以使用其他技术以处理需要四个用于写入数据值的可用位置的这种问题。例如,供选择的实现可以使用存储器控制器内的高速缓存将写入操作存入高速缓存中来代替使用额外存储器宏指令。
图15C示出了被使用以构建图15A的分级存储器系统1590的各种存储器组件的概念性分级框图。回想每个算法存储器块必须用其他较低水平的算法存储器块或者较低水平的基本存储器块来实现。并且基本存储器块必须被使用以实现所有的‘叶’存储器块。
在图15C中,总体的高水平存储器设计为处理两个同时读取操作和两个同时写入操作的存储器系统1590。为了实现这些特性,一个读取和两个同时写入(1R和2W)算法存储器块1580被用作高水平算法存储器块。但是,目标是构建2R和2W存储器系统。因此,必须提升系统以提供处理领一个读取操作的能力。
为了处理两个读取操作,一个读取和两个写入(1R和2W)算法存储器块1580内的每个独立存储器组由两个读取或者一个写入(2R或者1W)算法存储器块来实现。因此,在1R和2W块1580下面的是为算法存储器块1580提供存储器设备的1R或者1W存储器宏指令1520、1521、1522、1523、1541、1542和1543。此外,1R和2W算法存储器块1580还使用基本SRAM存储器块1503用于实现存储器控制器内的存储器表(如图15A中所示的虚拟存储器表1513)以跟踪地址被存储在哪个存储器宏指令中。由于1R和2W算法存储器块1580内的每个存储器组当前可以同时处理两个读取操作,因此总体分级存储器系统1590当前为2R和2R存储器系统。
每个存储器块最终必须终止于一些类型的基本存储器块,所述基本存储器块实际上提供存储电路。因此,两个读取或者写入算法存储器块(2R或者1W存储器块1520、1521、1522、1523、1541、1542和1543)中的每一个也必须通过一些类型的基础存储器系统来实现。在图15C中示出的实施例中,两个读取或者一个写入算法存储器块1520、1521、1522、1523、1541、1542和1543中的每一个由基本的嵌入式DRAM存储器块实现。注意,还可以使用任何其他类型的合适的基本存储器系统(例如SRAM)。选择将取决于特定存储器应用的需求。
因此,如图15C中所示,有新特性(同时处理两个读取操作和两个写入操作全部的能力)的复杂存储器系统可以通过用较少的特性(例如分级排列中的(1R和2W)存储器和(2R或者1W)存储器)组织算法存储器块来实现。每个算法存储器块由为特定算法存储器实现控制逻辑的存储器控制器和一个或者多个较低水平存储器系统组成。较低水平存储器系统可以是其他算法存储器块或者基本存储器块。最终,在分级存储器系统排列的‘叶’端处,一些类型的基本存储器块被使用以提供基本存储器存储能力。
第一n读取和m写入的存储器实现
前面部分的两个读取和两个写入(2R2W)分级存储器系统可以被归纳为n读取和m写入存储器系统,其处理n同时读取操作和m同时写入操作。图16示出了n读取和m写入存储器系统,其使用与图15A的系统相同的一般分级架构。
在图16的分级存储器系统中,主存储器宏指令1691的集合被使用以存储数据并且额外存储器宏指令1692的集合被使用以处理写入操作和其他存储器操作之间潜在的存储器冲突,所述写入操作和其他存储器操作正试图访问相同的存储器宏指令。来自章节“存储器系统2”的算法存储器块可以被使用以实现该目标。额外存储器宏指令1692的数量应当足够大以使得将有足够的可用存储器宏指令用以处理所有m写入操作。存储器控制器1611使用虚拟存储器表1613以跟踪当前每个数据值的物理位置。特别地,虚拟存储器表1613指定哪些虚拟存储器地址在那些物理存储器宏指令中存储。注意,虚拟存储器表1613本身可以通过使用算法存储器块进行构建。
在处理n个同时读取操作和m个同时写入操作的系统中,n+m-1个额外存储器宏指令将一直确保有足够的额外存储器宏指令用于移动与其他存储器访问冲突的写入操作的地址。但是,其他存储器装置(例如写入缓冲器)还可以被使用以处理冲突写入操作,从而将不总是需要n+m-1个额外存储器宏指令。
主存储器宏指令1691和额外存储器宏指令1692内的独立存储器宏指令的每一个是由算法存储器块(或者存储器块的分级)实现的n个读取或者一个写入(nR或者1W)存储器宏指令。例如,来自章节“存储器系统6”的基于XOR的算法存储器块被使用以提供n个读取或者一个写入的特性。以这种方式,即使当所有n个读取操作都针对相同的存储器宏指令,该存储器宏指令也将能够同时响应所有n个读取操作。
第二2读取和2写入存储器实现
在前面部分公开的两个读取和两个写入存储器系统中,通过使用多个读取算法存储器块作为子部件来构建高水平的多个写入算法存储器块。该架构可以被反转,从而使得两个读取和两个写入存储器系统可以被构建为使用多写入算法存储器块作为子部件的高水平的多读取算法存储器块。
图17A示出了分级存储器系统的第二示例,其可以同时处理两个读取操作和两个写入操作。参照图17A,第一高水平组织通过利用章节“存储器系统4”中公开的基于XOR系统来实现可以处理两个同时读取操作或者一个写入操作的算法存储器块。特别地,第一高水平组织具有用于处理正常读取或者写入操作的主存储器宏指令1791的集合和用于处理第二读取操作的XOR宏指令1792。XOR宏指令1792包括来自其他主存储器宏指令1791的数据的编码表示。因此,当接收到两个读取操作时,一个读取操作可以由主存储器块1791的集合中的组直接服务并且其他读取操作可以由主存储器块中的另一个(当没有冲突时)或者通过利用XOR宏指令1792内数据的编码版本(当两个读取操作都被寻址到主存储器宏指令1791的集合中的相同存储器宏指令)来服务。
为了处理除了两个读取操作以外的两个同时写入操作,用来自“存储器系统2”章节的算法存储器块实现主存储器宏指令1791和XOR宏指令1792中的每一个,所述“存储器系统2”章节公开了一个读取和n个写入算法存储器块。在图17A的实施例中,主存储器宏指令1791和XOR宏指令1792中的每一个可以同时处理一个读取操作和两个写入操作。特别地,主存储器块1791中的任何一个可以处理一个读取操作和两个写入操作同时试图访问相同存储器宏指令中的相同存储器组的最坏情形场景。并且XOR宏指令1792可以被使用以处理额外的读取操作,从而可以同时处理两个读取操作和两个写入操作。
图17B示出了其中所有四个存储器操作(从地址W的读取、从地址X的读取、对地址Y的写入和对地址Z的写入)都针对存储器宏指令1720内的单个存储器组(从左边起第二组)的情况。第一读取操作1771(从地址W)由存储器宏指令1720内的已定址存储器块直接处理。由于存储器宏指令1720内的内部存储器组当前被使用以处理第一读取,因此它不能由其他存储器操作中的任何一个使用。为了指示该阻塞,存储器宏指令1720内的目标存储器组用“W”标记。所有三个保留的存储器操作(从地址X的读取和对地址Y和Z的写入)不能使用存储器宏指令1720内标记为“W”的存储器组。
由于针对地址X的第二读取操作1772-1不能直接访问存储器宏指令1720内的相同目标组,因此第二读取操作必须通过利用XOR宏指令1792内数据的编码版本进行处理。因此,用于存储器系统的高水平组织的存储器控制器通过读取操作1772-5读取XOR宏指令1792内的对应位置以获取数据的编码表示。为了解码该编码表示,存储器控制器还必须读取所有其他存储器宏指令中的对应位置。因此,存储器控制器通过读取操作1772-2、1772-3和1772-4从存储器宏指令1721、1722和1723内左边起的第二存储器组读取。从读取操作1772-5、1772-2、1772-3和1772-4读取的数据值与XOR运算组合以生成所请求数据值用于对地址X的读取操作。(地址X数据的主要表示在存储器宏指令1720中从左边起的第二存储器组中,所述第二存储器组由于与对地址W的读取有冲突,因此不能被访问。)由读取操作1772-5、1772-2、1772-3和1772-4访问以处理第二读取操作的存储器组不能被其他存储器操作中的任何一个使用。为了指示该阻塞,用读取操作1772-5、1772-2、1772-3和1772-4访问的存储器组用“X”标记。
两个写入操作1775-1还被阻止访问主存储器宏指令1720中的目标(左起第二)存储器组,从而存储器宏指令1720的存储器控制器必须将两个写入操作1775-1指向存储器宏指令1720内的其他(空闲)存储器组。然后存储器宏指令1720的存储器控制器在存储器宏指令1720内的虚拟地址表中重映射与两个写入操作1775-1关联的目标地址(Y和Z)。但是,由于主存储器宏指令1791和XOR宏指令1792的较高水平结构是还必须保持每个值的编码版本被写入存储器系统中的基于XOR的系统,因此高水平存储器控制器还必须用写入地址Y和Z的数据更新XOR宏指令1792。
为了更新XOR宏指令1792,对写入操作的每一个来说,高水平存储器控制器读取所有其他主存储器宏指令(存储器宏指令1721、1722和1723)中写入操作的对应位置,用XOR运算将该数据与当前被写入存储器宏指令1720的新数据值组合起来,并且将结果写入XOR宏指令1792中的对应位置中。例如,为了处理对地址Y的写入,系统将数据写入存储器宏指令1720中的空闲存储器组(在存储器宏指令1720中描述为‘Y’)中,读取其他主存储器宏指令中的对应位置(如读取1775-2、1775-3和1775-4所示),使用XOR运算将来自那些读取的数据与用于地址Y的新数据组合起来,然后用写入1775-5将编码版本写入XOR宏指令1792中。通过对地址Y和Z的写入进行访问的所有存储器组分别标记为“Y”和“Z”。
注意,即使那些宏指令仅被指定为1个读取和2个写入(1R和2W)存储器,存储器宏指令1721、1722和1723实际上也都在同时处理三个写入操作。由于这三个存储器读取操作是“负载均衡的”,从而使得它们将一直访问不同存储器组,因此这是可能的。由于存储器宏指令1720中潜在组冲突的解决(将两个写入操作(对地址Y和Z)移至不同存储器组),因此负载均衡发生。并且由于每个存储器组中的存储器组是互相独立的,因此存储器宏指令1721、1722和1723可以同时处理三个“负载均衡”的读取操作。
如图17B中所示,针对单个存储器宏指令1720中单个存储器组的所有四个存储器操作(从地址W的读取、从地址X的读取、对地址Y的写入和对地址Z的写入操作)可以由图17B的分级存储器系统同时处理。被访问(用读取或者写入)的所有存储器组用来自原始存储器操作的地址的字母(W、X、Y或者Z)进行标记。从地址W的读取仅访问存储数据主要表示的一个组。从地址X的读取访问来自XOR宏指令1792的编码表示和来自存储器宏指令1721、1722和1723的三个数据值以解码编码表示。对地址Y和地址Z的写入各自访问五个不同的存储器组:对存储器宏指令1720中的组写入以存储主要表示;从存储器宏指令1721、1722和1723读取以创建编码表示;对XOR宏指令1792写入以存储编码表示。这些存储器操作中没有一个彼此冲突的。
图17C示出了对于图17A的2R和2W分级存储器系统特别困难的情况。图17C的情况解释了为什么三个额外组被使用在主存储器宏指令1720到1723和XOR宏指令1731中的每一个内。在图17C的示例中,针对地址W的第一读取操作1771和对地址Y和Z的两个写入操作1775-1都针对存储器块1720中相同的从左起第二组。用于存储器块1720的存储器控制器允许对地址W的写入1771访问组以获取用于响应读取操作所需的数据。因此,用于存储器块1720的存储器控制器必须将对地址Y和Z的写入移至可用于接受存储器写入的不同存储器组。
在该示例中,三个额外存储器组被认为是当前可用的存储器组,其用于接受对地址Y和Z的写入。然而第二读取操作1772是访问存储器宏指令1721中的这些额外存储器组之一。由于为了用数据的第二表示更新XOR宏指令1792,写入操作(对该示例中存储器宏指令1720)还必须访问每个其他存储器宏指令(在该示例中的存储器宏指令1721、1722和1723)中对应的存储器组,因此该写入不能访问与第二读取操作1772相同的额外存储器组。因此,当处理对地址Y和Z的写入操作时,由于第一额外存储器组当前被从地址X的读取1772使用,因此系统不能访问额外存储器组中的第一个。因此,系统将对地址Y和Z的写入操作1775-1指向存储器宏指令1720中最后两个额外存储器组。由于地址X的读取1772从第一额外存储器组读取并且两个写入(对地址Y和Z)可以根据需要从存储器宏指令1721中的最后两个额外存储器组读取以更新XOR块1792,因此这防止了存储器宏指令1721中的存储器组冲突。因此,在存储器块1721、1722和1733以及XOR宏指令1731中的每一个中三个额外存储器组的使用允许两个写入操作以避免与两个读取操作中的任何一个发生冲突。
图17D示出了图17A到图17C中公开的存储器系统总体高水平存储器设计的分级框图,所述存储器系统处理两个同时读取操作和两个同时写入操作。为了实现该存储器系统,两个读取算法存储器块1780被用作高水平算法存储器块。该高水平结构允许分级存储器系统处理两个同时读取操作。
为了处理两个写入操作,将高水平的两个读取算法存储器块1780内的五个独立存储器块(算法存储器块1720、1721、1722、1723和1731)中的每一个实现为一个读取和两个写入算法存储器块。这些较低水平存储器块的多写入能力与较高水平组织的两个读取能力的组合允许整个分级存储器系统处理两个同时读取和两个同时写入。
如前面所述,所有算法存储器块最终必须通过用于提供实际存储电路的一些类型的基本存储器块终止于最终“叶”水平。在图17A到图17C中公开的存储器系统中,较低水平的算法存储器块为一个读取和两个写入算法存储器块(算法存储器块1720、1721、1722、1723和1731)。在图17D的特定示例实施例中,一个读取和两个写入算法存储器块的存储器组各自由嵌入式DRAM存储器1760到1764实现并且虚拟存储器表由基本SRAM1765到1769实现。只要满足存储器系统所需性能度量,其他实施例可以使用其他存储器选择。
因此,如图17A到图17D中所示,全部同时处理两个读取操作和两个写入操作的能力可以通过供选择的分级排列而不是图15A到15C所示的排列来实现。在两个分级存储器系统中,每个算法存储器块由执行控制逻辑的存储器控制器以及一个或者多个较低水平的存储器块组成。每个较低水平的存储器块可以是其他算法存储器块或者基本存储器块。并且分级存储器系统排列的最低水平(‘叶’)端通过用于提供基本存储器存储电路的一些类型的基本存储器块来实现。图17A到图17D的存储器架构可以被扩展以通过添加更多的XOR块处理更多的读取操作以及通过添加更多的存储器块(每个存储器宏指令内)处理更多的写入操作。
其他分级存储器排列
通过使用已公开的各种不同算法存储器块和各种不同类型的基本存储器设备,可以构建各种各样的复杂分级存储器系统。此外,可以以许多不同方式创建提供相同的一般功能特性(例如所支持的同时读取操作和写入操作的数量)的存储器系统。
图18示出了用横轴指定所支持的同时写入操作的数量和用纵轴指定所支持的同时读取操作的数量的图标。图表上的任何点表示可以用分级智能存储器系统构建的可能的存储器系统。在右上方,位置系统1890表示支持四个读取操作和四个写入操作的存储器系统。在位置1890处的四个读取和四个写入存储器系统可以以各种不同方式进行构建。
构建四个读取和四个写入存储器系统1890的第一方法是使用图16中公开的教导,其中高水平算法存储器块组织使用多个额外存储器组以支持多个写入操作。这在图18上由水平点虚线1811表示以支持四个写入操作。然后,独立存储器组通过支持多个读取操作的基于XOR的算法存储器块组织来实现。这在图18上由垂直点虚线1815表示以支持四个读取操作。
构建四个读取和四个写入存储器系统1890的第二方法是使用在图17A到图17D中公开的教导,其中高水平算法存储器块组织使用XOR组以支持多个读取操作。这在图18上由垂直实线1831表示以支持四个读取操作。高水平结构内的独立存储器块通过包括额外存储器组的算法存储器块来实现,所述额外存储器组用于支持额外写入操作。这在图18上由水平实线1835表示以支持四个写入操作。
构建四读取和四写入存储器系统1890的其他方法可以使用遵循图18中图表内路径的其他分级结构。例如,一个可能的排列可以使用第一存储器组织层以创建如虚对角线1861所示的1读取和1写入存储器系统,使用第二存储器组织层以实现水平虚线1862所示的三个额外的写入操作,以及使用第三存储器组织层以实现如垂直虚线1863所示的三个额外的读取操作。
前述的技术公开是用来说明而不是用来限制的。例如,上述实施例(和/或其一个或多个方面)可以彼此组合使用。对于本领域的技术人员来说,参考上述说明,其他实施方式将是明显的。本发明的范围应该参考权利要求书以及这些权利要求的全部范围而且的。在所附权利要求中,术语“包括”和“其中”被用作各个术语“包含”和“其中”的简明英语等价物。另外,在下面的权利要求中,术语“包括”和“包含”是开放式的,也就是说,系统、设备、物品、或过程包括除了那些在权利要求中这样一个术语之后列出的元素仍视为落在本发明的范围内。此外,在下面的权利要求中,术语“第一”、“第二”和“第三”等仅用于标记,而不意在将数字要求强加到它们的对象上。
提供发明摘要以符合37C.F.R.§1.72(b),所述条款要求一个会使读者快速确定技术公开内容实质的摘要。应理解的是,提交的摘要不应该被用于解释或限制权利要求书的范围和涵义。同时,在上述详细公开中,各种特征可被集合到一起从而精简该公开内容。这不应解释为,一个为要求的公开特征对于任何权利要求都是必须的。相反,发明主题可能在于比所公开的具体实施方案的所有特征要少。因此,所附权利要求特此被组合到详细描述中,其中每项权利要求自身作为一个单独披露的实施方案存在。

Claims (22)

1.一种分级数字存储器系统,所述分级数字存储器系统包括:
低水平算法存储器块的集合,所述低水平算法存储器块中的每一个包括
基本存储器块的集合,所述基本存储器块提供基本存储能力,以及
一种第一类型的存储器控制器,所述第一类型的存储器控制器实现一种第一类型的算法存储器技术;以及
一个高水平算法存储器块,所述高水平算法存储器块包括
所述低水平存储器块的集合,所述低水平算法存储器块为所述高水平算法存储器块提供存储能力,以及
一种第二类型的存储器控制器,所述第二类型的存储器控制器实现一种第二类型的算法存储器技术。
2.根据权利要求1所述的分级数字存储器系统,其中所述低水平算法存储器块中的所述第一类型的算法存储器技术允许多个同时读取操作。
3.根据权利要求2所述的分级数字存储器系统,其中在所述低水平算法存储器块中的所述第一类型的算法存储器技术存储用于每个数据项的一个主要数据值和次要编码版本。
4.根据权利要求3所述的分级数字存储器系统,其中所述次要编码版本包括来自用一个异或运算组合在一起的多个不同存储器组的数据值。
5.根据权利要求2所述的分级数字存储器系统,其中在所述高水平算法存储器块中的所述第二类型的算法存储器技术允许多个同时写入操作,从而所述分级数字存储器系统可以同时处理多个读取操作和多个写入操作。
6.根据权利要求5所述的分级数字存储器系统,其中在所述高水平算法存储器块中的所述第二类型的算法存储器技术使用额外的低水平存储器块以防止存储器组冲突。
7.根据权利要求1所述的分级数字存储器系统,其中在所述低水平算法存储器块中的所述第一类型的算法存储器技术允许多个同时写入操作。
8.根据权利要求7所述的分级数字存储器系统,其中在所述低水平算法存储器块中的所述第一类型的算法存储器技术使用多个额外存储器组和一个重映射表以防止存储器组冲突。
9.根据权利要求7所述的分级数字存储器系统,其中在所述高水平算法存储器块中的第二类型的算法存储器技术允许多个同时读取操作,从而所述分级数字存储器系统可以同时处理多个读取操作和多个写入操作。
10.根据权利要求9所述的分级数字存储器系统,其中在所述高水平算法存储器块中的所述第二类型的算法存储器技术存储用于每个数据项的主要数据值和次要编码版本。
11.根据权利要求10所述的分级数字存储器系统,其中所述次要编码版本包括来自用一个异或运算组合在一起的多个不同低水平算法存储器块的数据值。
12.一种在分级数字存储器系统中处理存储器访问请求的方法,所述方法包括:
用一种第一类型的存储器控制器处理一个存储器请求,所述第一类型的存储器控制器实现一种第一类型的算法存储器技术,用所述第一类型的存储器控制器的所述处理选择多个较低水平存储器块中的至少一个较低水平存储器块以处理所述存储器请求;
用所述至少一个较低水平存储器块中的一种第二类型的存储器控制器处理所述存储器请求,所述第二类型的存储器控制器实现一种第二类型的算法存储器技术,所述第二类型的存储器控制器将多个数据值存储在一个基本存储器块中。
13.根据权利要求12所述在所述分级数字存储器系统中处理存储器访问请求的方法,其中所述第一类型的算法存储器技术允许多个同时读取操作。
14.根据权利要求13所述在所述分级数字存储器系统中处理存储器访问请求的方法,其中所述第一类型的算法存储器技术存储用于每个数据项的主要数据值和次要编码版本。
15.根据权利要求14所述在所述分级数字存储器系统中处理存储器访问请求的方法,其中所述次要编码版本包括来自用一个异或运算组合在一起的多个较低水平存储器块的数据值。
16.根据权利要求13所述在所述分级数字存储器系统中处理存储器访问请求的方法,其中所述第二类型的算法存储器技术允许多个同时写入操作,从而所述分级数字存储器系统可以同时处理多个读取操作和多个写入操作。
17.根据权利要求16所述在所述分级数字存储器系统中处理存储器访问请求的方法,其中所述第二类型的算法存储器技术使用多个额外存储器组以防止存储器组冲突。
18.根据权利要求12所述在所述分级数字存储器系统中处理存储器访问请求的方法,其中所述第一类型的算法存储器技术允许多个同时写入操作。
19.根据权利要求18所述在所述分级数字存储器系统中处理存储器访问请求的方法,其中所述第一类型的算法存储器技术使用多个额外的较低水平存储器块和一个重映射表以防止每个较低水平存储器块超过一个写入操作。
20.根据权利要求18所述在所述分级数字存储器系统中处理存储器访问请求的方法,其中所述第二类型的算法存储器技术允许多个同时读取操作,从而使得所述分级数字存储器系统可以同时处理多个读取操作和多个写入操作。
21.根据权利要求20所述在所述分级数字存储器系统中处理存储器访问请求的方法,其中所述第二类型的算法存储器技术存储用于每个数据项的一个主要数据值和次要编码版本。
22.根据权利要求21所述在所述分级数字存储器系统中处理存储器访问请求的方法,其中所述次要编码版本包括来自用一个异或运算组合在一起的多个不同存储器组的数据值。
CN201180048921.XA 2010-08-17 2011-08-17 用于设计分级存储器系统的高速存储器系统和方法 Expired - Fee Related CN103314363B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/806,631 2010-08-17
US12/806,631 US9442846B2 (en) 2009-03-17 2010-08-17 High speed memory systems and methods for designing hierarchical memory systems
PCT/US2011/001455 WO2012023986A1 (en) 2010-08-17 2011-08-17 High speed memory systems and methods for designing hierarchical memory systems

Publications (2)

Publication Number Publication Date
CN103314363A true CN103314363A (zh) 2013-09-18
CN103314363B CN103314363B (zh) 2016-09-07

Family

ID=45605382

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180048921.XA Expired - Fee Related CN103314363B (zh) 2010-08-17 2011-08-17 用于设计分级存储器系统的高速存储器系统和方法

Country Status (3)

Country Link
US (2) US9442846B2 (zh)
CN (1) CN103314363B (zh)
WO (1) WO2012023986A1 (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104503924A (zh) * 2014-12-16 2015-04-08 华为技术有限公司 一种分层存储系统中的区域分配方法及装置
CN105094693A (zh) * 2014-05-16 2015-11-25 三星电子株式会社 用于事务处理的电子系统以及电子系统的操作方法
CN105487812A (zh) * 2014-10-01 2016-04-13 三星电子株式会社 用于支持存储器内处理的方法和存储器模块
CN105912484A (zh) * 2015-02-19 2016-08-31 美国博通公司 高带宽存储器和少故障差分异或
WO2018018875A1 (zh) * 2016-07-28 2018-02-01 盛科网络(苏州)有限公司 可扩展的多端口存储器的数据处理方法及数据处理系统
CN107787485A (zh) * 2015-04-30 2018-03-09 马维尔以色列(M.I.S.L.)有限公司 多读取和写入端口存储器
US20220197527A1 (en) * 2020-12-23 2022-06-23 Hitachi, Ltd. Storage system and method of data amount reduction in storage system
US11403173B2 (en) 2015-04-30 2022-08-02 Marvell Israel (M.I.S.L) Ltd. Multiple read and write port memory

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120137108A1 (en) * 2008-02-19 2012-05-31 Koch Iii Kenneth Elmon Systems and methods integrating boolean processing and memory
US9442846B2 (en) 2009-03-17 2016-09-13 Cisco Technology, Inc. High speed memory systems and methods for designing hierarchical memory systems
US20120054427A1 (en) * 2010-08-27 2012-03-01 Wei-Jen Huang Increasing data access performance
US20120066444A1 (en) * 2010-09-14 2012-03-15 Advanced Micro Devices, Inc. Resolution Enhancement of Video Stream Based on Spatial and Temporal Correlation
CN102096562A (zh) 2011-02-12 2011-06-15 华为技术有限公司 数据写入方法及装置
WO2013002772A1 (en) 2011-06-28 2013-01-03 Hewlett-Packard Development Company, L.P. Shiftable memory
US9576619B2 (en) 2011-10-27 2017-02-21 Hewlett Packard Enterprise Development Lp Shiftable memory supporting atomic operation
WO2013062562A1 (en) 2011-10-27 2013-05-02 Hewlett-Packard Development Company, L.P. Shiftable memory supporting in-memory data structures
GB2509661B (en) * 2011-10-27 2015-10-07 Hewlett Packard Development Co Shiftable memory employing ring registers
WO2013115779A1 (en) 2012-01-30 2013-08-08 Hewlett-Packard Development Company, L.P. Word shift static random access memory (ws-sram)
WO2013130109A1 (en) 2012-03-02 2013-09-06 Hewlett-Packard Development Company L.P. Shiftable memory defragmentation
US8909860B2 (en) 2012-08-23 2014-12-09 Cisco Technology, Inc. Executing parallel operations to increase data access performance
US8724423B1 (en) * 2012-12-12 2014-05-13 Lsi Corporation Synchronous two-port read, two-port write memory emulator
US20140281284A1 (en) * 2013-03-13 2014-09-18 Lsi Corporation Multi-read port memory
KR20150086718A (ko) * 2014-01-20 2015-07-29 삼성전자주식회사 메모리를 이용하여 파이프라인이 데이터를 처리하는 방법 및 장치
US10680957B2 (en) 2014-05-28 2020-06-09 Cavium International Method and apparatus for analytics in a network switch
US9871733B2 (en) * 2014-11-13 2018-01-16 Cavium, Inc. Policer architecture
US9952802B2 (en) * 2015-02-20 2018-04-24 Khalifa University of Science and Technology Volatile memory erasure by controlling refreshment of stored data
US10180803B2 (en) 2015-07-28 2019-01-15 Futurewei Technologies, Inc. Intelligent memory architecture for increased efficiency
US9760432B2 (en) 2015-07-28 2017-09-12 Futurewei Technologies, Inc. Intelligent code apparatus, method, and computer program for memory
US9921754B2 (en) * 2015-07-28 2018-03-20 Futurewei Technologies, Inc. Dynamic coding algorithm for intelligent coded memory system
US10437480B2 (en) * 2015-12-01 2019-10-08 Futurewei Technologies, Inc. Intelligent coded memory architecture with enhanced access scheduler
US9870163B2 (en) 2016-04-27 2018-01-16 Globalfoundries Inc. Double bandwidth algorithmic memory array
US9857988B1 (en) * 2016-07-10 2018-01-02 Winbond Electronics Corporaiton Data management in multiply-writeable flash memories
CN106060622B (zh) 2016-07-26 2019-02-19 青岛海信电器股份有限公司 电视的截屏方法及电视
US10339000B2 (en) * 2016-09-13 2019-07-02 Sandisk Technologies Llc Storage system and method for reducing XOR recovery time by excluding invalid data from XOR parity
CN106484521A (zh) * 2016-10-21 2017-03-08 郑州云海信息技术有限公司 一种数据请求处理方法及装置
US11868804B1 (en) 2019-11-18 2024-01-09 Groq, Inc. Processor instruction dispatch configuration
US11243880B1 (en) 2017-09-15 2022-02-08 Groq, Inc. Processor architecture
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
US11170307B1 (en) 2017-09-21 2021-11-09 Groq, Inc. Predictive model compiler for generating a statically scheduled binary with known resource constraints
US20190227957A1 (en) * 2018-01-24 2019-07-25 Vmware, Inc. Method for using deallocated memory for caching in an i/o filtering framework
CN111125041A (zh) * 2018-10-31 2020-05-08 伊姆西Ip控股有限责任公司 数据读取方法、电子设备和计算机程序产品
US11301546B2 (en) 2018-11-19 2022-04-12 Groq, Inc. Spatial locality transform of matrices
WO2020174278A1 (en) * 2019-02-25 2020-09-03 Marvell Asia Pte, Ltd. Accelerating access to memory banks in a data storage system
CN114175159A (zh) * 2019-03-14 2022-03-11 格罗克公司 具有多个读取端口的数据结构
US11114150B2 (en) 2019-04-18 2021-09-07 Rambus Inc. Memory system with multiple open rows per bank

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1195817A (zh) * 1997-03-05 1998-10-14 国际商业机器公司 在非包含的高速缓存存储器分级体系内使用的实现高速缓存一致性机制的方法和系统
US20030046487A1 (en) * 2001-08-30 2003-03-06 Shuba Swaminathan Refresh algorithm for memories
US20090254731A1 (en) * 2008-04-02 2009-10-08 Qualcomm Incorporated System and method for memory allocation in embedded or wireless communication systems

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4725945A (en) * 1984-09-18 1988-02-16 International Business Machines Corp. Distributed cache in dynamic rams
US5226147A (en) * 1987-11-06 1993-07-06 Mitsubishi Denki Kabushiki Kaisha Semiconductor memory device for simple cache system
US6230233B1 (en) * 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
US5848432A (en) * 1993-08-05 1998-12-08 Hitachi, Ltd. Data processor with variable types of cache memories
US5835941A (en) * 1995-11-17 1998-11-10 Micron Technology Inc. Internally cached static random access memory architecture
US5860141A (en) * 1996-12-11 1999-01-12 Ncr Corporation Method and apparatus for enabling physical memory larger than corresponding virtual memory
US6029225A (en) * 1997-12-16 2000-02-22 Hewlett-Packard Company Cache bank conflict avoidance and cache collision avoidance
US5999474A (en) * 1998-10-01 1999-12-07 Monolithic System Tech Inc Method and apparatus for complete hiding of the refresh of a semiconductor memory
CA2287034A1 (en) 1998-12-03 2000-06-03 Lucent Technologies, Inc. A memory operated in a modified ping-pong mode
JP3807582B2 (ja) * 1999-02-18 2006-08-09 株式会社ルネサステクノロジ 情報処理装置及び半導体装置
US6378032B1 (en) * 2000-07-14 2002-04-23 Texas Instruments Incorporated Bank conflict avoidance in multi-bank DRAMS with shared sense amplifiers
US6622225B1 (en) * 2000-08-31 2003-09-16 Hewlett-Packard Development Company, L.P. System for minimizing memory bank conflicts in a computer system
US6584546B2 (en) * 2001-01-16 2003-06-24 Gautam Nag Kavipurapu Highly efficient design of storage array for use in first and second cache spaces and memory subsystems
US6801980B2 (en) * 2002-04-25 2004-10-05 International Business Machines Corporation Destructive-read random access memory system buffered with destructive-read memory cache
US7171539B2 (en) * 2002-11-18 2007-01-30 Arm Limited Apparatus and method for controlling access to a memory
US7073026B2 (en) * 2002-11-26 2006-07-04 Advanced Micro Devices, Inc. Microprocessor including cache memory supporting multiple accesses per cycle
US7573301B2 (en) * 2002-12-02 2009-08-11 Silverbrook Research Pty Ltd Temperature based filter for an on-chip system clock
US7047385B1 (en) * 2003-06-16 2006-05-16 Cisco Technology, Inc. High-speed memory for use in networking systems
ATE366985T1 (de) * 2003-09-04 2007-08-15 Koninkl Philips Electronics Nv Integrierte schaltung und verfahren zum cache- umabbilden
US7181563B2 (en) * 2003-10-23 2007-02-20 Lsi Logic Corporation FIFO memory with single port memory modules for allowing simultaneous read and write operations
US7019674B2 (en) * 2004-02-05 2006-03-28 Nec Laboratories America, Inc. Content-based information retrieval architecture
KR100585128B1 (ko) * 2004-02-16 2006-05-30 삼성전자주식회사 입력 신호들의 주파수에 따라 다른 타입의 터미네이션장치들을 가지는 반도체 메모리 장치 및 이를 구비하는반도체 메모리 시스템
JP4135680B2 (ja) * 2004-05-31 2008-08-20 ソニー株式会社 半導体記憶装置および信号処理システム
US7739460B1 (en) * 2004-08-30 2010-06-15 Integrated Device Technology, Inc. Integrated circuit memory systems having write-back buffers therein that support read-write-modify (RWM) operations within high capacity memory devices
US7970980B2 (en) * 2004-12-15 2011-06-28 International Business Machines Corporation Method and apparatus for accessing memory in a computer system architecture supporting heterogeneous configurations of memory structures
US20060190678A1 (en) * 2005-02-22 2006-08-24 Butler Douglas B Static random access memory (SRAM) compatible, high availability memory array and method employing synchronous dynamic random access memory (DRAM) in conjunction with a single DRAM cache and tag
US20080082755A1 (en) * 2006-09-29 2008-04-03 Kornegay Marcus L Administering An Access Conflict In A Computer Memory Cache
US7900018B2 (en) * 2006-12-05 2011-03-01 Electronics And Telecommunications Research Institute Embedded system and page relocation method therefor
TWI499909B (zh) * 2007-01-26 2015-09-11 Cheriton David 階層式不可改變的內容可定址的記憶體處理器
US8239633B2 (en) 2007-07-11 2012-08-07 Wisconsin Alumni Research Foundation Non-broadcast signature-based transactional memory
US7890699B2 (en) * 2008-01-10 2011-02-15 International Business Machines Corporation Processing unit incorporating L1 cache bypass
CN101262405B (zh) 2008-04-11 2012-10-31 华南理工大学 基于网络处理器的高速安全虚拟专用网系统及其实现方法
US9442846B2 (en) 2009-03-17 2016-09-13 Cisco Technology, Inc. High speed memory systems and methods for designing hierarchical memory systems
US8593866B2 (en) 2011-11-11 2013-11-26 Sandisk Technologies Inc. Systems and methods for operating multi-bank nonvolatile memory

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1195817A (zh) * 1997-03-05 1998-10-14 国际商业机器公司 在非包含的高速缓存存储器分级体系内使用的实现高速缓存一致性机制的方法和系统
US20030046487A1 (en) * 2001-08-30 2003-03-06 Shuba Swaminathan Refresh algorithm for memories
US20090254731A1 (en) * 2008-04-02 2009-10-08 Qualcomm Incorporated System and method for memory allocation in embedded or wireless communication systems

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105094693A (zh) * 2014-05-16 2015-11-25 三星电子株式会社 用于事务处理的电子系统以及电子系统的操作方法
CN105487812A (zh) * 2014-10-01 2016-04-13 三星电子株式会社 用于支持存储器内处理的方法和存储器模块
CN104503924A (zh) * 2014-12-16 2015-04-08 华为技术有限公司 一种分层存储系统中的区域分配方法及装置
CN104503924B (zh) * 2014-12-16 2018-02-13 华为技术有限公司 一种分层存储系统中的区域分配方法及装置
CN105912484A (zh) * 2015-02-19 2016-08-31 美国博通公司 高带宽存储器和少故障差分异或
CN105912484B (zh) * 2015-02-19 2019-01-18 安华高科技股份有限公司 高带宽存储器和少故障差分异或
CN107787485A (zh) * 2015-04-30 2018-03-09 马维尔以色列(M.I.S.L.)有限公司 多读取和写入端口存储器
CN107787485B (zh) * 2015-04-30 2021-04-09 马维尔以色列(M.I.S.L.)有限公司 多读取和写入端口存储器
US11403173B2 (en) 2015-04-30 2022-08-02 Marvell Israel (M.I.S.L) Ltd. Multiple read and write port memory
WO2018018875A1 (zh) * 2016-07-28 2018-02-01 盛科网络(苏州)有限公司 可扩展的多端口存储器的数据处理方法及数据处理系统
US10818325B2 (en) 2016-07-28 2020-10-27 Centec Networks (Su Zhou) Co., Ltd. Data processing method and data processing system for scalable multi-port memory
US20220197527A1 (en) * 2020-12-23 2022-06-23 Hitachi, Ltd. Storage system and method of data amount reduction in storage system

Also Published As

Publication number Publication date
WO2012023986A1 (en) 2012-02-23
US10042573B2 (en) 2018-08-07
US20110022791A1 (en) 2011-01-27
US9442846B2 (en) 2016-09-13
US20160328170A1 (en) 2016-11-10
CN103314363B (zh) 2016-09-07

Similar Documents

Publication Publication Date Title
CN103314363A (zh) 用于设计分级存储器系统的高速存储器系统和方法
CN102870089B (zh) 将数据存储到虚拟高速存储系统中的系统和方法
JP4652344B2 (ja) 圧縮されたキャッシュラインのワース・オブ・インフォメーションを利用したマルチプロセッサ計算システム及び当該システムに利用可能なプロセッサ
TWI238935B (en) Reconfigurable cache controller for nonuniform memory access computer systems
CN102483719B (zh) 基于块的非透明高速缓存
CN106716334A (zh) 文件系统卷内的高效数据移动
CN100557594C (zh) 数据处理器的状态引擎
CN100367242C (zh) 用于在处理环境中提供路径记忆的系统和方法
CN1307561C (zh) 不同高速缓存级上具有关联集重叠同余组的多级高速缓存
Talati et al. mmpu—a real processing-in-memory architecture to combat the von neumann bottleneck
CN105373344A (zh) 虚拟化超大规模环境中的数据管理方案
Venkatesan et al. Cache design with domain wall memory
CN103222003A (zh) 用于根据配置信息执行原子存储器操作的存储器及方法
CN108369562A (zh) 具有增强型访问调度器的智能编码存储器架构
US11960747B2 (en) Moving data in a memory and command for memory control
Zhang et al. Fuse: Fusing stt-mram into gpus to alleviate off-chip memory access overheads
US6363458B1 (en) Adaptive granularity method for integration of fine and coarse communication in the distributed shared memory system
US20120210070A1 (en) Non-blocking data move design
Khajekarimi et al. Energy minimization in the STT-RAM-based high-capacity last-level caches
KR101831226B1 (ko) 차세대 메모리로 구성된 캐시의 제어 장치 및 그 방법
Peón Quirós et al. Closing Remarks and Open Questions
CN117788267A (zh) 分布式系统级高速缓存
Liu et al. GART: A graft algorithm to rebalance binary search trees on nonvolatile memories
Singhal Reconfigurable cache architecture

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: CISCO TECH IND

Free format text: FORMER OWNER: MEMORY SYSTEMS LLC

Effective date: 20150729

Owner name: CISCO TECH IND.

Free format text: FORMER OWNER: CISCO TECH IND

Effective date: 20150729

C41 Transfer of patent application or patent right or utility model
C53 Correction of patent of invention or patent application
CB02 Change of applicant information

Address after: California, USA

Applicant after: Memory Systems Ltd.

Address before: California, USA

Applicant before: MEMOIR SYSTEMS, Inc.

COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM:

Free format text: CORRECT: APPLICANT; FROM: MEMOIR SYSTEMS, INC. TO: MEMORY SYSTEMS LLC

TA01 Transfer of patent application right

Effective date of registration: 20150729

Address after: California, USA

Applicant after: Cisco Technology, Inc.

Address before: California, USA

Applicant before: VIHANA, Inc.

Effective date of registration: 20150729

Address after: California, USA

Applicant after: VIHANA, Inc.

Address before: California, USA

Applicant before: Memory Systems Ltd.

C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160907