CN103314378B - 智能存储器系统编译器 - Google Patents

智能存储器系统编译器 Download PDF

Info

Publication number
CN103314378B
CN103314378B CN201180049561.5A CN201180049561A CN103314378B CN 103314378 B CN103314378 B CN 103314378B CN 201180049561 A CN201180049561 A CN 201180049561A CN 103314378 B CN103314378 B CN 103314378B
Authority
CN
China
Prior art keywords
memory
design
accumulator system
accumulator
intelligence
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
Application number
CN201180049561.5A
Other languages
English (en)
Other versions
CN103314378A (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
Original Assignee
Cisco Technology Inc
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 Cisco Technology Inc filed Critical Cisco Technology Inc
Publication of CN103314378A publication Critical patent/CN103314378A/zh
Application granted granted Critical
Publication of CN103314378B publication Critical patent/CN103314378B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • 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
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • 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
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • 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
    • 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/0683Plurality of storage devices

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)
  • Semiconductor Memories (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Dram (AREA)

Abstract

为集成电路设计存储器子系统会是费时的并且昂贵的任务。为了减少开发时间和成本,在此披露了一种用于设计并且构建高速存储器操作的自动系统和方法。该自动系统接受一个所希望的存储器特征集,并且然后有条理地选择多种不同的潜在存储器系统设计类型和每种存储器系统设计类型的多种不同的实现方式。这些潜在存储器系统设计类型可以包括传统存储器系统、优化的传统存储器系统、智能存储器系统以及分级存储器系统。向一个电路设计师输出符合一个具体的所希望的存储器特征集的一个选定的所推荐的存储器系统集。在一个电路设计师选择一个所推荐的存储器系统时,该自动系统生成一个完整的存储器系统设计、用于该存储器系统的一个模型以及用于该存储器系统的一个测试套件。

Description

智能存储器系统编译器
技术领域
本发明涉及用于数字计算机系统的存储器系统领域。具体地,但并不以限制的方式,本发明披露了用于设计并且构建针对一个指定的特性集而优化的数字存储器系统的多种技术。背景技术
多种现代计算机系统总体上包括:用于处理多个计算机指令的至少一个处理器,和存储由该处理器处理的这些指令和数据的一个存储器系统。(注意:‘计算机系统’是包括具有一个进程和存储器的任何装置的广义类的装置,如个人计算机系统、蜂窝电话、个人电子设备内的嵌入式控制系统、服务器等。)一个计算机系统的存储器系统可以被实施有多个离散的存储器芯片,或可以被实施为多个存储器单元,这些存储器单元与处理器被制造在相同的集成电路上。大多数个人计算机系统使用与该处理器被制造在相同的管芯(如集成电路)上的存储器单元和外部芯片外存储器二者的一个组合。
在设计一个计算机系统时,该计算机系统设计师将会以一个限定的存储器系统特性集来指定一个计算机系统。这些计算机系统特性可以包括多个度量标准,如总存储器容量、存储器总线宽度以及存储器速度。一旦限定了一个存储器系统的这些要求,则该计算机系统设计师然后设计实现这些要求的一个存储器系统。
为构建一个芯片上存储器系统,一个集成电路设计师将许多单独的存储器单元电路联接在一起以形成一个存储器阵列。然后,该集成电路设计师提供支持电路,该支持电路将多个存储器单元寻址在该阵列内并且将数据位读出或写入至那些存储器单元之中。创建一个高效的高性能芯片上存储器系统是总体上需要一个工程师团队的一项困难的任务。然而,许多集成电路不需要来自芯片上存储器系统的最优性能。对于这类集成电路来说,一个集成电路设计师可以使用可以提供一个“成品”存储器模块的一个物理存储器编译器工具。确切地,该集成电路设计师为该物理存储器编译器工具提供一个所希望的存储器系统特性集,并且该物理存储器编译器工具生成可以用在该集成电路内的一种存储器设计。这种技术减少了开发时间和开发成本。
然而,由物理存储器编译器创建的存储器模块的性能倾向于受到限制。此外,由物理存储器编译器创建的这些存储器模块总体上不会高效地使用有价值的布局面积。因此,将会希望的是改进用于为集成电路设计并且构建存储器系统的这些技术和工具。
附图说明
在不必要按比例绘制的这些附图中,贯穿这若干视图,多个相同的数字描述大致上类似的多个组件。具有不同字母后缀的多个相同的数字表示大致上类似的多个组件的不同实例。这些附图总体上通过实例而不是以限制的方式对在本文档中论述的各种实施例进行阐明。
图1示出了处于一个计算机系统示例形式的机器的图形表示,在该计算机系统内可以执行用于致使该机器执行在此论述的这些方法论中的任何一个或多个的一个指令集。
图2A概念地示出了一个存储器模块的布局,该存储器模块由处于由支持电路的一个单一实例支持的一种线性安排的四个存储器单元阵列组成。
图2B概念地示出了一个存储器模块的布局,该存储器模块由处于由支持电路的两个实例支持的一种矩形安排的四个存储器单元阵列组成。
图2C概念地示出了一个存储器模块的布局,该存储器模块由处于由支持电路的四个实例支持的一种平行安排的四个存储器单元阵列组成。
图3示出了描述一个物理存储器编译器如何典型地用于创建一个传统存储器模块的流程图。
图4示出了可以同时处理两个存储器操作的一个智能存储器系统的高水平概念图。
图5A示出了可以使用一个额外的存储器存储体来同时处理两个存储器操作的一个智能存储器系统的方块图。
图5B示出了图5A的智能存储器系统在处理指向地址202和204的多个写入操作之后的方块图。
图6A示出了包括被实施有一个智能存储器系统的多个内部存储器存储体的一个分级智能存储器系统的方块图。
图6B示出了进一步包括用作一个地址映射表的一个智能存储器系统的图6A的分级智能存储器系统。
图7示出了一个高水平图,该该高水平图示出了由一个自动存储器设计系统处理的一系列阶段。
图8A示出了描绘创建可以处理若干同时的写入操作和读出操作的一个复杂存储器系统的多种不同方法的一个概念图表。
图8B示出了一个自动存储器设计系统如何可以通过以下来开始:在原点附近设计相对简单的e个智能存储器系统并且渐进地设计更复杂的存储器系统,直到达到一个最终所希望的存储器系统。
图8C示出了描绘创建可以处理若干同时的写入操作或读出操作的一个复杂存储器系统的多种不同方法的一个概念图表。
图9示出了一个物理编译器可能具有的可供用于一个集成电路设计师的一个不同的存储器模块集。
图10示出了用于设计多个存储器系统的一个自动系统的一个实施例的高水平方块图。
图11示出了用于设计多个存储器系统的一个自动系统的一个实施例的流程图。
具体实施方式
以下详细说明包括对这些附图的参考,这些附图形成该详细说明的一部分。这些附图根据多个示例实施例显示多个图解。对在此还被称为“示例”的这些实施例进行足够详细的描述,以使得本领域的普通技术人员能够实践本发明。本领域的普通技术人员将会清楚的是:这些示例实施例中的具体细节不是为了实践本发明所需要的。例如,尽管参照DRAM和SRAM对这些示例实施例中的一些进行披露,但是传授内容可以用于任何类型的数字存储器电路。在不脱离权利要求书的范围的情况下,可以结合这些示例实施例,可以利用其他实施例,或可以做出结构、逻辑以及电气改变。因此以下详细说明不应以限制的含义来理解,并且该范围仅由所附权利要求书及它们的等效物来限定。
在本文档中,如同在专利文档中常见的,术语“一个”或“一种”用来包括一个或多于一个。在本文档中,术语“或”用来指代非排他的或,这样使得“A或B”包括“A但不是B”、“B但不是A”、以及“A和B”,除非另外指明。此外,在本文档中提到的全部出版物、专利和专利文档通过引用以其全文结合在此,尽管通过引用个别地结合。在本文档和通过引用如此结合的这些文档之间的不一致用法的情况下,应当认为在所结合的一个或多个引用中的用法是对本文档的用法的补充;对于不可调和的不一致性来说,本文档中的用法占主导作用。
计算机系统
本披露关注数字计算机系统的存储器系统和用于设计存储器系统的多种技术。图1示出了处于可以用于实施本披露的多个部分的一个数字计算机系统100示例形式的一个机器的图形表示。在图1的数字计算机系统100内,存在可以由处理器102执行的用于致使该机器来执行在本文档内所论述的这些方法论中的任何一个或多个的一个指令集124。
在一个网络化部署中,图1的机器可以作为在客户端-服务器网络环境中的服务器机器或客户端机器、或对等(或分布式)网络环境中的对等机器进行操作。该机器可以是个人计算机(PC)、平板电脑PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、环球网设备(webappliance)、网络服务器、网络路由器、网络交换机、网桥,或能够执行指定有待由该机器采取的行动的一个计算机指令集(连续的或以其他方式)的任何机器。此外,虽然仅示出了一个单一机器,但是术语“机器”还应当被理解为包括单独地或共同地执行一个(或多个)指令集以执行在此论述的这些方法论中的任何一个或多个的多个机器的任何集合。
图1的示例计算机系统100包括经由一根总线108彼此通信的一个处理器102(例如,一个中央处理单元(CPU)、一个图形处理单元(GPU)或二者)和一个主存储器104。该计算机系统100可以进一步包括一个视频显示器适配器110,该视频显示器适配器驱动如一个液晶显示器(LCD)或一个阴极射线管(CRT)的一个视频显示器系统115。该计算机系统100还包括:一个字母数字输入装置112(例如,一个键盘)、一个光标控制装置114(例如,一个鼠标或轨迹球)、一个磁盘驱动单元116、一个信号生成装置118(例如,一个扬声器)以及一个网络接口装置120。注意:图1中所示出的这些零件不是所有都将会出现在一个计算机系统的所有实施例中。例如,如果该服务器通过该网络接口装置120受到控制,则一个计算机服务器系统可以不具有一个视频显示器适配器110或视频显示器系统115。
磁盘驱动单元116包括一种机器可读介质122,该机器可读介质上存储由在此描述的这些方法论或功能中的任何一个或多个来具体化或利用的一个或多个计算机指令和数据结构集(例如,还被称为‘软件’的指令124)。这些指令124还可以完全地或部分地驻存在主存储器104内和/或在与处理器102相关联的一个缓冲存储器103内。该主存储器104和与该处理器102相关联的该缓冲存储器103也构成机器可读介质。这些指令124可以在一个计算机网络126上经由网络接口装置120进一步被发送或接收。这类发送可以存在利用如众所周知的文件传输协议(FTP)的许多众所周知的传输协议中的任何一种。
虽然机器可读介质122在一个示例实施例中显示为一个单一介质,但是术语“机器可读介质”应当被理解为包括存储该一个或多个指令集的一种单一介质或多种介质(例如,一个集中式或分布式数据库,和/或相关联的高速缓冲存储器和服务器)。术语“机器可读介质”还应当被理解为包括以下任何介质:能够存储、编码或携带用于由该机器执行的并且致使该机器执行在此描述的这些方法轮中的任何一个或多个的一个指令集,或能够存储、编码或携带由这样一个指令集利用或与这样一个指令集相关联的数据结构。术语“机器可读介质”因此应当被理解为包括但不限于固态存储器、光学介质以及磁性介质。
出于本说明书的这些目的,术语“模块”包括用于实现一个特定功能、操作、处理或程序的代码、计算的或可执行的指令、数据或计算对象的一个可辨认部分。一个模块并不需要在软件中被实施;一个模块可以在软件、硬件/电路或软件和硬件的一个组合中被实施。
存储器单元类型(RAM、SRAM等)
数字电子设备中最基本的电路之一是存储器单元电路。一个存储器单元电路是被设计来存储可以处于两个不同状态(“0”或“1”)之一中的一个单一二进制数字(通常称为一‘比特’)。一个存储器单元电路必须能够处理一个写入请求和一个读出请求。确切地,该存储器单元电路通过将一个指定的数据位存储至该存储器单元电路中来处理一个写入请求以用于稍后检索该存储器单元通过向请求者提供所存储的数据位值来处理一个读出请求。
存在许多不同类型的存储器单元电路设计。每种不同类型的存储器单元电路设计具有其自己的优点和缺点。传统动态随机存取存储器(DRAM)单元提供高密度存储,但是必须不断地被更新并且具有有限的速度性能。静态随机存取存储器(SRAM)单元提供比DRAM单元显著较好的性能,但是具有一个比DRAM低的存储器密度并且消耗更多电量。闪存单元电路具有存储器数据位(即使是在工作功率已经从一个系统上移除之后)的能力,而SRAM和DRAM二者在外部功率被移除时都将会失去它们的所存储的数据位。
除了DRAM、SRAM以及闪存单元之外,存在提供不同的优点和缺点的许多其他类型的存储器单元电路设计。本披露的这些技术可以用于任何不同类型的存储器单元电路设计。确切地,只要一个存储器单元电路可以被制造为一个集成电路中的一个存储器阵列的一部分,并且具有一个限定的存储器规范集,该存储器单元电路就可以用在本文档中所披露的这些系统和方法内。
在开发出一种新的集成电路制造工艺时,首要任务之一是开发用于该新的集成电路制造工艺的存储器单元电路设计。确切地,必须设计、验证、充分地测试并且完善被用于构建一个存储器单元电路的半导体、绝缘体以及金属材料的几何结构。对用于一种新的集成电路制造工艺的一个可靠的存储器单元电路的物理几何结构进行设计的任务是非常困难的。然而,最终结果将会是将会在各种数字不同的集成电路内被使用数亿次的一个存储器单元电路设计。一个数字集成电路的超过一半可以由存储器单元阵列组成,这样使得生成一个非常可靠的、高效的并且易于生产的存储器单元电路是非常重要的。
每种不同类型的存储器单元电路(DRAM、SRAM、闪存等)由一个存储器性能特性集、物理特性集以及操作要求集来限定。存储器单元性能特性、物理特性以及操作要求可以包括:
-电压要求
-最大时钟速度(该单元可以进行操作的最大速率)
-计时要求
-布局面积(构建该存储器单元所需要的面积的量)
-处理类型(可以使用的半导体制造工艺)
与一个存储器单元电路交互的存储器支持电路必须在该存储器单元电路的这些限定的操作要求内进行操作。注意:这些性能中的一些可以取决于彼此。例如,取决于所选择的时钟速度,对该存储器单元电路的这些电压要求可以发生变化。
对不同集成电路的这些存储器要求将会取决于该集成电路的应用而发生变化。例如,一个高速通信芯片可能需要多个非常高性能的存储器单元以快速地存储并且检出数据包。相反,用于一个低成本消费电子设备装置的一个集成电路可能需要一个高的比特密度(比特每布局面积),以便使得该集成电路的尺寸(并且因此成本)最小化。为处理这些不同的存储器系统需要,多于一个的存储器单元电路可以被设计成其中针对一个不同的特性集而使每个不同的存储器单元电路设计优化。因此,可以针对高速性能(能够以较高时钟频率进行操作)使一个存储器单元电路优化,这样使得该存储器单元电路可以被用于以上通信芯片示例之中。类似地,另一个存储器单元电路可以被优化以达到一个高的位密度但是却将不能够以高的时钟速度进行操作。
存储器单元端口特征
一个基本存储器单元电路具有一个单端口,该单端口可以处理或者一个单一写入操作或者一个单一读出操作,而不能同时处理一个写入操作和一个单一读出操作二者。然而,一个存储器单元的电路可以被修改成使写入功能和读出功能分开,这样使得一个存储器单元电路可以具有用于访问该存储单元的两个端口:用于处理写入请求的一个第一端口和用于处理读出请求的一个第二端口。这样一个“两端口”存储器单元可以同时处理一个单一读出操作和一个单一写入操作。通过使用两端口的存储器单元可以大大地有益于连续地读出源信息并且写回处理过的信息的某些应用程序,因为在写回处理过的信息的同时可以读出新的源信息。
可以添加另外的电路以生成一个“双端口”存储器单元,其中该存储单元电路具有用于访问存储在该存储器单元中的数据位的两个完全独立的端口。确切地,两个存储器端口都可以处理一个读出操作或一个写入操作。因此,一个双端口存储器单元可以同时处理两个读出操作、同时处理两个写入操作或同时处理一个单一读出操作和一个单一写入操作。取决于特定的实现方式,处理寻址同一存储器单元的两个同时被接收的存储器事务的顺序将会发生变化。在有一个双端口存储器系统的情况下,两个处理器可以独立地访问一个单一共用的存储器系统而不会彼此发生冲突。
存在存储器单元电路的若干个甚至更多复杂变体。一个四端口存储器单元电路可以具有两个读出端口和两个写入端口。所有四个端口都是完全独立的,并且可以同时访问任何位置(除了这两个写入端口不能同时访问同一个置之外)。一个五端口存储器单元可以具有四个读出端口和一个写入端口。存在许多另外的存储器单元电路变体。
存储器模块
单独的存储器单元电路总体上不会被独自地使用。相反,许多存储器单元电路被组合在一起成一个存储器阵列。为了使用一个存储器阵列,需要另外的支持电路。例如,需要寻址电路来将总体上被称为一个“数据字”的一个具体的所希望的存储器单元或更经常地一个存储器单元集寻址在一个存储器单元阵列内。在已经寻址该存储器阵列中的一个特定数据字之后,需要支持电路来将已寻址的数据字写入至这些存储器单元或从这些存储器单元读出已寻址的数据字。在执行一个读出操作之后,总体上需要一个输出驱动器电路来响应该存储器读出操作的这些结果。
在一个DRAM存储器系统中,一个行和列寻址系统被用于选择一个存储器单元阵列中的多个具体存储器单元。对于一个存储器写入操作来说,典型地一个行从该阵列被读出、用该写入值来修改并且然后被写回至该阵列中以存储已修改的值。以一种类似的方式来处理读出操作。确切地,一个行从该阵列被读出,然后用一个输出缓冲区来驱动所请求的数据,并且然后这行数据被写回至该阵列之中。DRAM存储器系统还可以包括刷新电路以保持数据位值有效。其他类型的存储器单元电路设计将会使用其他支持电路来提供相同基本特性。取决于存储器单元电路(DRAM、SRAM或其他)的类型,一个特定存储器单元电路所需要的具体支持电路将会发生变化。存储器单元和存储器单元支持电路的设计是计算机工程领域所非常熟知的。
因为存储器单元电路和相关联的支持电路是本领域中所熟知的,并且将会取决于所使用的存储器单元电路的具体类型而发生变化,所以本文档将会将存储器单元阵列和它们的支持电路视为多个抽象。因此,尽管可以参照具体存储器单元电路类型对一些实施例进行披露,但是本发明的传授内容可以应用于许多不同类型的存储器单元电路。
存储器支持电路的一个单一实例(如一个输出驱动器)可以支持许多存储器单元电路。然而,由于计时要求和电压要求,典型地存在对支持电路的一个单一实例可以支持的存储器单元电路的数量的一个上限。可以被支持的存储器单元电路的数量也可以受到具体存储器阵列布局几何结构的影响,因为长的导体线将会增大寄生电容并且因此影响该存储器系统的性能。随着支持电路的一个单一实例支持更多的存储器单元电路,该存储器系统的性能可能降低,这样使得可能需要降低的时钟速度以支持更大数量的存储器单元电路。因此,支持电路的多个实例的分配和一个存储器模块的物理几何结构将会影响一个存储器模块的这些性能特性和要求。取决于该存储器电路类型,通过生成该支持电路的物理上较大的实例或添加支持电路的另外的实例,可以改动该支持电路分配。
图2A概念地示出了由四个存储器单元阵列211、212、213以及214组成的一个存储器模块的布局,这些存储器单元阵列由支持电路231的一个单一实例支持。在图2A的安排中,这四个存储器单元阵列211、212、213以及214被安排成一种细的线性安排。在图2A的线性安排中,存储器阵列211定位相对远离支持电路231,这样使得传播等待时间可以限制图2A的存储器模块可以进行操作的速度。
图2B示出了具有同样四个存储器单元阵列211、212、213以及214的一个存储器模块的另一种布局。在图2B的实施例中,这四个存储器单元阵列211、212、213以及214被安排成一种较短但是较宽的矩形安排并且由支持电路的两个实例(231和232)支持。支持电路的这两个实例(231和232)被用作一个抽象,该抽象可以表示同一电路的两个不同实例,可以处理更多电力的同一电路的一个较大版本或对该支持电路的任何其他改变提供更多的能力作为对更大的被使用布局面积的交换。
再次参照图2B,因为一个存储器单元与该支持电路之间的最远距离已经被减小,所以传播等待时间也将会减小,这样使得图2B的存储器模块能够以与图2A的存储器模块相比较高的时钟频率进行操作。此外,图2B的布局使用支持电路的两个实例,这样使得支持电路的每个实例(231和232)仅需要支持一半多的存储器阵列。因此,与图2A的存储器系统相比,图2B的存储器系统将会更好地进行操作但是它消耗更大布局面积。
图2C示出了具有同样四个存储器单元阵列211、212、213以及214的一个存储器模块的第三种布局。在图2C的实施例中,这四个存储器单元阵列211、212、213以及214被安排成平行的,但是各自被它们自己的支持电路实例支持(231、232、233以及234)。同样,减小的信号行进距离和另外的支持电路实例将会允许图2C中所示的实施例以与图2B的实施例相比较快的时钟速度进行操作。然而,由于用于实施这四个支持电路实例(231、232、233以及234)的布局面积的量较大,图2C中所示的存储器模块的位密度将会小于图2A和图2B中所示的这些存储器模块的位密度。
如图2A、图2B以及图2C所示,相同大小的存储器模块可以许多不同的方式来构建并且每个不同布局将会具有不同的性能特性。此外,这些不同的布局将会使用不同量的布局面积从而提供不同的位密度值。这些不同的布局还具有不同的形状。所有三种存储器模块布局都是有用的,并且每个存储器模块设计将会具有胜过一个特定应用程序的其他设计的多个优点。
为了生成一个具体应用程序的最佳存储器模块,可以将设计一个存储器模块的任务分配给一个工程师团队。该工程团队可以调查可供使用的这些不同的存储器单元电路,并且然后选择用于该特定应用程序的最佳存储器单元电路。该存储器设计团队可以考虑不同布局模式并且确定这些存储器单元和为了对该具体应用的这些需要而优化的支持电路的一个布局。可以为各种不同度量标准来优化该存储器模块,这些不同度量标准如操作速度、位密度、功耗、制造可靠性等。该存储器工程团队的工作的最终结果将会是为了具体的集成电路应用程序而高度优化的一个存储器模块。
尽管以这种方式为一个集成电路全定制设计一个存储器模块将有可能产生用于该具体应用程序的一个优异的存储器模块,但是设计一个集成电路存储器模块的这种方法将花费时间并且花费大量的钱。这样一个周密的存储器模块设计程序可以被调整用于一个高价的高性能集成电路或将会被复制上百万次的一个集成电路。但是对于具有典型存储器要求的许多集成电路来说,分配一个专门的工程团队来设计一个全定制的存储器是及其昂贵的。
物理存储器编译器(自动生成的几何结构
为创建一个数字集成电路而创建半导体材料、绝缘体以及导体的一个复杂型样的几何结构。该几何型样必须遵守该集成电路工艺的一组设计规则以便可靠地制造。然而,创建具有多种原始几何形状的集成电路不是设计集成电路的一种高效的方法。
为简化数字集成电路的设计,集成电路制造商创建了提供基本布尔(Boolean)逻辑函数如(与、或、异或、11或、反向)的一个标准单元集。在具有一组标准库的单元的情况下,一位数字集成电路设计师可以通过创建形式数字逻辑来达到一个所希望的目标来设计电路。这些标准单元然后用于实施该形式数字逻辑。
为进一步简化数字集成电路的设计而创建了多种逻辑综合工具。逻辑综合工具允许一个数字电路设计师使用类似于软件源代码的一种硬件设计语言(HDL)来设计一个数字集成电路。由一个逻辑综合工具来处理设计有一种硬件设计语言(HDL)的一个集成电路以生成一个门级网表。
数字电路设计工具中的这些进展大大地降低了设计数字集成电路的成本和复杂性并且因此允许创建专用集成电路(ASIC)。一个专用电路是设计用于一个特定电子产品中的一个特定应用程序的一个集成电路而不是可以用于多种多样的不同的电子装置中的一个通用集成电路。因此,一组高效的设计工具允许针对多个特定的应用程序而设计自定义集成电路,即使所需要的集成电路的数量可能不是极大的。
使得其标准单元库可供用于外部公司使用并且提供从而制造使用这些标准单元库来设计的集成电路的集成电路制造商称为ASIC供货商。除了由集成电路制造商所提供的相对有限的工具之外,第三方ASIC供货商公司创建更加复杂的多种集成电路设计工具,这些设计工具能够用于能够由一个集成电路制造商制造的设计集成电路(其条件是该设计工具遵循该集成电路制造工艺的这些设计规则)。多年来,更复杂的电路的大库补充了这些标准单元库,这些大库提供许多通常需要的电路,如处理器核、输入/输出电路、存储器管理电路、总线控制电路、通信协议电路、SRAM、嵌入式DRAM(eDRAM)等。
为帮助对用于一个ASIC内的存储器模块的设计,每个ASIC供货商总体上提供一种‘物理存储器编译器’(或‘存储器发生器’)设计工具。一个物理存储器编译器是允许一个数字集成电路设计师来指定一个集成电路所需要的一个存储器模块的一个操作特性集的一个数字集成电路设计工具。该物理存储器编译器然后使用所指定的这些操作特性来生成符合所指定的这些存储器系统要求的多个物理存储器模块的一种或多种设计。因此,一个集成电路设计师使用一个物理存储器编译器可以快速地创建用于一个自定义集成电路内的一个“成品”存储器模块。
图3示出了一个流程图,该流程图总体上描述了一个物理存储器编译器典型地如何用于创建用于一个集成电路中的一个存储器模块。最初,在阶段310,集成电路设计师通过进入一个专用集成电路所需要的存储器模块的规范来开始该过程。取决于物理存储器编译器的实现方式,所进入的这些特定存储器规范将会发生变化。可以被进入的存储器规范的示例包括:
(1)存储器单元类型(1端口SRAM、2端口SRAM、DRAM等)
(2)针对位密度或性能而优化的存储器单元的选择
(3)存储器容量(可寻址的存储器位置的总数量)
(4)字长(数据单元在每个可寻址的存储器位置处的宽度)
(5)所要求的时钟速度
(6)特征(子字能力、休眠方式、冗余、泄漏控制等)
回顾图3,该物理存储器编译器然后在阶段330生成实现所指定的存储器系统要求的多个存储器模块的多种存储器模块设计。可以使用各种不同的技术来创建不同的存储器模块设计。
在一个实施例中,该存储器编译器具有该存储器编译器从所请求的存储器区块选择并且结合以创建所请求的存储器区块的各种类型、形状以及大小的一个预定义的存储器区块集。例如,该存储器编译器可以具有在大小上为8K、16K、32K以及64K的多个预定义的存储器区块。对于每个存储器区块大小来说,可以存在多种布局形状。为创建一个128K的存储器区块,系统可以创建总计达128K的一组存储器区块排列(两个正方形64K的区块;两个长方形64K的区块;两个正方形32K的区块和一个长方形64K的区块等)。
在另一个实施例中,该物理存储器编译器实际上在飞速写入时使用各种存储器子组件模版来设计物理存储器布局。例如,字线驱动器、解码器、传感放大器以及其他存储器系统子组件可以是以各种模版形式可供使用的。针对一个给定的比特容量范围选择这些子组件各自的一个适合的模版。使用指定这些子组件如何相互连接的一个总体存储器系统设计模版来结合这些模版。该存储器系统的总体形状常常受到这些子组件选择的控制。然而,这些存储器子组件可以被创建成不同的形状和不同的长宽比,以允许最终的存储器系统生成不同的形状和长宽比。
可以结合这两种不同的方法。例如,一个第一模板集可以用于创建从0K至8K的多个存储器区块;另一个模版集可以用于制成从8K至16K的多个存储器区块等等。
在生成满足所指定的这些存储器系统要求的各种排列的物理存储器布局之后,该存储器编译器在阶段350将这些存储器模块呈现给该设计师。每个存储器模块可以与这些存储器模块的各种规范一起呈现,这些规范如最大操作时钟速率、物理尺寸、访问速率、功率要求、漏泄率等。这些结果可以电子表格的形式呈现以允许该集成电路设计师依据这些存储器模块的各种不同的特性对这些所推荐的设计进行分类。
该集成电路设计师然后可以在阶段360选择这些所推荐的存储器模块中的一个。(如果该设计师对这些结果不满意,则该设计师可以试图以一个不同的存储器模块规范集来重新运行该存储器编译器。)如果该设计师对所选择的存储器模块满意,则该存储器编译器将会在阶段370生成创建该存储器模块的模型实现方式和物理实现方式所需要的文件。例如,该存储器编译器可以创建限定该存储器模块的可以用于集成电路的多个模拟内的一个模型的多个文件。如果该设计师对该存储器模型满意,则该存储器编译器稍后将会创建可以用于创建物理集成电路的该存储器模块的实际几何布局。
物理存储器编译器显著地减少了创建用于数字集成电路内的存储器模块所要求的工作。然而,由物理存储器编译器创建的这些存储器模块典型地被设计用于通用用法。在开发一个存储器编译器时,该存储器编译器被设计来创建将会满足对许多不同集成电路设计师的典型需要的存储器模块。如果一个集成电路要求具有非常高的性能、特殊特征或针对一个特定的参数而优化的一个存储器模块,那么一个物理存储器编译器不能用于创建该存储器模块。
此外,物理存储器编译器倾向于仅处理某些有限的存储器模块尺寸范围。因此,如果一个所希望的存储器模块尺寸(或任何其他规范)不在该物理存储器编译器所能够处理的有限范围内,那么不能使用该物理存储器编译器。当不能使用一个物理存储器编译器时,该集成电路设计师可能需要创建一个自定义设计的存储器系统。这显然将会大大地增加开发时间和该集成电路的成本。然而,即使在一个专门的团队被指派来使用传统存储器系统技术来开发一个自定义存储器系统时,该专门的团队可能不能创建出符合所有这些所希望的性能参数的一个存储器系统。
智能存储器系统
如之前所提出的,一个典型的传统存储器系统由一个存储器单元阵列组成,该存储器单元阵列用于存储联接至支持电路的数据位,该支持电路负责将数据位写入至这些存储器单元中或从这些存储器单元读出数字比特。该支持电路执行如以下的多个任务:解码一个存储器地址、缓冲数据和将数据位写入到存储器单元中、从存储器单元读出数据位,以及用输出的数据位驱动数据线。然而,已经通过将复杂的存储器控制器逻辑添加至该存储器系统引进了一种新类型的智能存储器系统,该新类型的智能存储器系统提供改进的存储器系统性能。该复杂的控制器逻辑实施以下一种或多种方法:允许该智能存储器系统提供与构建有同一类型的存储器单元电路的一个传统存储器系统相比较好的性能。
一个智能存储器系统显然不能使实际潜在的存储器单元电路更好地执行。然而,通过在更高效地使用这些存储器单元的智能存储器系统内使用相同存储器单元,一个智能存储器系统可以提供总体存储器系统的一种改进的性能。例如,一个智能存储器系统通过同时处理多个存储器操作可以提供改进的总体存储器系统性能。
例如,仅通过添加实施一种特定智能存储器控制方法的一个小量的另外的存储器和存储器控制器逻辑,一个典型的智能存储器系统可以同时处理两个读出操作、同时处理两个写入操作或同时处理一个读出和一个写入操作。更复杂的智能存储器系统可以处理更复杂的情况,如同时处理两个读出操作和两个写入操作。
图4示出了能够同时处理两个存储器操作的一种类型的智能存储器系统400的高水平概念图。在图4中所披露的特定智能存储器系统400中,存储器用户411和存储器用户412访问同一智能存储器系统400。因为该智能存储器系统400向存储器用户411和存储器用户412二者提供存储器服务,所以智能存储器系统400两次有效地提供仅能够向这两位存储器用户之一提供存储器服务的一个传统存储器系统的存储器性能。
向该智能存储器系统400提交的这些并行存储器请求可能是以两个独立实体的速度的两倍来自一个单一实体。例如,以存储器用户411和存储器用户412的时钟速度的两倍进行操作的处理器410能够发出两个连续的存储器请求,这两个连续的存储器请求将会显现为由智能存储器系统400并行地接收的两个存储器请求。因此,以一个较慢的时钟频率进行操作但是每个时钟周期却处理更多存储器操作的一个智能存储器系统可能显现成一个高速的单一存储器操作存储器系统。
由一个智能存储器系统控制器421来处理向该智能存储器系统400提交的所有这些存储器访问请求。这个智能存储器系统控制器421接收这些存储器访问请求(读出、写入或其他存储器命令)并且执行所请求的存储器操作。每个智能存储器系统控制器421包括用于处理这些存储器请求的智能存储器逻辑430的一个具体实例。该智能存储器逻辑430实施以下一种或多种方法:每时钟周期能够使用一些另外的存储器空间来支持多个存储器操作。
例如,图4的该智能存储器系统400向外部用户提供一个可外部地寻址的存储器空间404的存储器服务。确切地,如存储器用户411和412的外部存储器用户可以向一个可外部地寻址的存储器空间404发出读出和写入请求。然而,该智能存储器系统400实际上具有相比大于该可外部地寻址的存储器空间404的一个可内部地寻址的存储器空间420。该智能存储器逻辑430使用该可内部地寻址的存储器空间420的较大的存储器空间来同时处理定向该可外部地寻址的存储器空间404的多于一个的存储器操作。
除了该较大的可内部地寻址的存储器空间420之外,该智能存储器逻辑430可以使用该智能存储器控制器421内的一些智能存储器状态信息423。该智能存储器状态信息423是实施由该智能存储器逻辑430所实施的特定存储器性能技术所需要的一个状态信息集。在一些实施例中,该智能存储器状态信息423可以存储在该较大的可内部地寻址的存储器空间420内或在一个分离的存储器系统之中。
多种不同的存储器管理方法可以由该智能存储器逻辑430来实施以同时处理多于一个的存储器操作。在一个具体的智能存储器系统中,所实施的方法是用一个额外的存储器存储体和一个地址空间映射表集来处理同时的多个写入操作。图5A中示出了这样一个智能存储器系统500的一个示例。
参照图5A,智能存储器系统500被实施具有一个物理存储器520,该物理存储器具有一组五个的可以各自同时处理彼此独立的多个存储器操作的独立的存储器存储体(存储体A、B、C、D以及E)。因此,在同时接收指向不同的存储器存储体(如存储体A和存储体B)的两个写入操作时,每个存储器存储体在同一时间可以独立地处理写入操作。然而,在同时接收指向同一存储器存储体的两个写入操作(如都指向存储体C的两个写入操作)时,必须使用一种智能方法来处理这种情况。
图5A示出了指向地址202和204的两个正在进入的写入操作。因为这些写入操作都寻址向同一存储器存储体(存储体C),所以该存储器系统不能将两个正在进入的数据值存储至存储体C之中。为解决这个问题,智能存储器控制器521将这些数据值之一存储至具有一个未使用的存储器位置的一个不同的存储器存储体中,并且更新一个地址映射表523以反映与该虚拟地址相关联的数据的一个新物理地址。因此,图5B示出了在处理指向地址202和204的这些写入操作之后的智能存储器系统500。智能存储器控制器521将地址202的新数据存储在同一个置(在存储体C中)中,但是却将地址204的新数据写入至存储体E中的一个新位置之中。该智能存储器控制器521更新该地址映射表523以反映虚拟地址204的数据的新物理位置。在接收到多个读出操作时,该智能存储器控制器521将会一直咨询该地址映射表523以确定所请求的数据的当前物理位置并且适当地做出响应。
图5A和图5B示出了以下一种可能的智能存储器方法:通过使用较大的物理存储器地址空间(额外的存储器存储体)来隐藏两个同时的写入操作的任何潜在的存储器存储体冲突的影响,可以同时处理两个写入操作。其他智能存储器方法使用额外的存储器空间和状态信息来实施改进整体存储器性能的其他方法。例如,另一种智能存储器系统可以使用额外的存储器来解码存储在该存储器系统中的每个数据项的一个备份,以便使得该存储器系统可以处理两个同时的读出操作。从以下专利申请中可以发现关于智能存储器系统的附加信息:于2009年09月08日提交、具有序列号12/584,645的“用于将数据存储在虚拟化高速存储器系统中的系统和方法(SYSTEMANDMETHODFORSTORINGDATAINAVIRTUALIZEDHIGHSPEEDMEMORYSYSTEM)”;于2009年12月15日提交、具有序列号__的“用于将数据存储在虚拟化高速存储器系统中的系统和方法(SYSTEMANDMETHODFORSTORINGDATAINAVIRTUALIZEDHIGHSPEEDMEMORYSYSTEM)”;于2009年12月 15日提交、具有序列号61/284,260的“用于减低的等待时间缓冲的系统和方法(SYSTEMANDMETHODFORREDUCEDLATENCYCACHING)”,其全部内容通过引用结合在此。
分级智能存储器系统
如参照图4所披露和通过图5A和图5B的示例所示出的,智能存储器逻辑可以用于构建以下多个存储器系统,这些存储器系统提供与由相同基本存储器单元电路构建的标准存储器系统相比较好的一个总体存储器性能。确切地,实施一个智能存储器系统可以允许多于一个的存储器操作由该智能存储器系统同时处理。
如图5A和图5B中所示的,可以通过结合智能存储器控制逻辑521与独立的存储器存储体(通常包括额外的存储器存储体)一起来构建一个智能存储器系统。一个智能存储器系统内的这些独立的存储器存储体各自是用于存储信息的独立的存储器系统。可以用传统存储器系统设计技术来构建一个智能存储器系统内的这些独立的存储器存储体。然而,智能存储器系统的这些传授内容也可以适用于一个智能存储器系统内的独立的存储器存储体。确切地,这些独立的存储器存储体各自可以被实施为一个智能存储器系统,以便达到这些独立的存储器存储体的改进的存储器系统性能。
图6A示出了使用图4至图5B的这些传授内容的一个智能存储器系统600的示例。因为该智能存储器系统600使用图4至图5B的这些传授内容,所以智能存储器系统600的高水平架构能够处理两个同时的写入操作。然而,该智能存储器系统600与图4至图5B的智能存储器系统的不同之处在于:这些独立的存储器存储体(存储体A671、B672、C673、D674以及E675)各自也是提供改进的存储器系统性能的智能存储器系统。构建有多个内部存储器存储体的存储器系统600可以称为一个分级智能存储器系统,这些内部存储器存储体也是智能存储器系统。一个分级智能存储器系统可以协同地提供用于构建该分级智能存储器系统的这些智能存储器系统的这些特征的一个组合。
例如,参照图6A,这些存储器存储体671和675可以被实施有一个智能控制系统,该智能控制系统允许存储器存储体671至675各自处理两个同时的读出操作。通过构建可以处理两个同时的写入操作的具有各自可以处理两个同时的读出操作的多个内部智能存储器存储体(671至675)的一个智能存储器系统600,所得总体分级智能存储器系统将能够同时处理两个写入操作和两个读出操作。注意:图6A的概念图省略完全地构建一个两写入和两读出分级智能存储器系统所需要的若干细节。在以下专利申请中可以发现全部细节:标题为“用于设计分级存储器系统的高速存储器系统和方法(HIGHSPEEDMEMORYSYSTEMSANDMETHODSFORDESIGNINGHIERARCHICALMEMORYSYSTEMS)”、于2010年8月17 提交并且具有序列号12/806,631,其通过引用结合在此。通过设计并且构建智能存储构造区块的层级,可以构建出提供多种多样的的高性能存储特征的许多不同类型的分级智能存储器系统。
智能存储器系统可以用于需要一个高性能存储器系统的任何地方。例如,图6A的智能存储器控制器621中的地址映射表623实际上是用于存储一个映射表的一个存储器系统。因此,如图6B的实施例中所示,地址映射表也可以被实施有一个智能存储器系统629。实际上是否使用一个智能存储器系统将取决于通过实施一个智能存储器系统所获得的性能增益是否超过实施一个智能存储器系统的成本。如将会在一个稍后的章节所披露的,地址映射表实际上是被实施有一个智能存储器系统的一个非常好的候选者,因为必须多次访问地址映射表以处理正在进入的存储器请求。
自动智能存储器系统设计综述
如以上章节所披露的,智能存储器系统可以用于构建多个存储器系统,这些存储器系统提供与由相同基本存储器单元构建的标准存储器系统相比较好的一个总体存储器性能。然而,设计、构建以及验证一个智能存储器系统是一项非琐碎的任务。此外,对于一个集成电路设计师来说,甚至不容易知道一个智能存储器系统何时将会提供比一个传统存储器系统较好的一个解决方案。是使用一个智能存储器系统还是使用一个传统存储器系统的决定将会取决于大量的因素。因此,为简化使用智能存储器系统的任务,本文档披露了一种用于确定何时使用一个智能存储器系统和用于设计智能存储器系统的自动系统。
图7示出了一个高水平流程图,其呈现了用于设计智能存储器系统的一个自动存储器设计工具的主要处理阶段。这些阶段各自涉及由关于所需要的存储器系统的信息所指导的相当大量的处理和将会使用的特定的集成电路制造工艺。
初始处理阶段是一个功能剪切评定阶段710。一个集成电路设计师为自动存储器设计系统提供一个详细的功能存储器规范信息集,该详细的功能存储器规范信息集描述所希望的存储器系统在该功能剪切评定阶段710过程中的这些功能特性。这些功能存储器系统特性可以包括:可寻址的存储器位置的数量、每个存储器位置的数据字宽度、所要求的读出性能、所要求的写入性能,以及限定所希望的存储器系统的任何其他要求。该自动存储器设计系统将会对由用户所提供的这些存储器系统功能特性进行评定以确保所请求的存储器系统是一个有效的存储器系统。该自动存储器设计系统还可以确定所请求的存储器系统是否在可能的存储器电路的设定的范围内,这些存储器电路用于特定的制造工艺和集成电路设计师正在使用的电路库。
功能剪切评定阶段710还可以考虑到将所请求的存储器功能性转变成可以在内部顺序地执行的一个不同的存储器功能性的方法。例如,如果一个所请求的存储器系统必须能够以一个500MHz的时钟速度来处理两个存储器操作,那么该功能剪切评定阶段710也可以决定来搜索能够以1000MHz的一个时钟速度来处理一个单一存储器操作的存储器系统。如果可以容易地构建以1000MHz的时钟速度进行操作的一个存储器系统,那么可以添加另外的逻辑以使得该1000MHz的存储器系统顺序地处理两个存储器操作。最终结果将会是显现出以一个500MHz的时钟速度同时处理两个存储器操作的一个存储器系统。
如果功能剪切评定阶段710确定所请求的存储器系统是有效的并且在一组可允许的范围内,那么该自动存储器设计系统进行一个存储器算法选择和优化阶段720。该存储器算法选择和优化阶段720是一个非常处理密集型阶段,其中该自动存储器设计系统考虑到所请求的存储器系统的各种不同的高水平设计和所考虑到的每个设计的参数优化。该存储器算法选择和优化阶段720可以由一个由用户所提供的优化参数集来指导,该优化参数集限定该用户想要优化的某些存储器系统特性。这些优化参数可以包括:一个存储器系统的布局面积、存储器等待时间、功率使用以及其他特性。该用户也可以指定对应当考虑的有功功率或动态功率的限制。在一些实施例中,该用户可以指定一种特定存储器类型(单端口、双端口等)作为一个优化的参数。这将会使得该自动存储器设计系统使用所指定的存储器类型生成至少一个存储器系统,只要这样一个存储器系统是有可能的。
存储器算法选择和优化阶段720可以使用多种多样的技术来确定将会考虑到的这些存储器系统设计和对所考虑到的设计的优化。可以使用一个详尽的暴力法来试验每个有可能的存储器系统设计。然而,这可能是不切实际的并且可以使用各种试探式法来限制该搜索。例如,可以将限定存储器系统的这些功能特性分成各自被不同地处理的各种范围。并且暴力系统可以包括限制有可能的存储器设计的搜索空间的各种剪枝试探发。
存储器算法选择和优化阶段720具有用于处理存储器算法选择和优化过程的不同部分的一组工具。一个存储器算法选择工具可以用于确定是否可能需要一个智能存储器系统和考虑哪些特定的智能存储器系统。一个智能存储器系统优化器可以用于优化已经被选择以用于可能的使用的一个特定智能存储器系统的各种参数。一个存储器图块优化工具可以用于优化对传统存储器系统的设计,这些传统存储器系统可以单独使用或可以用在一个智能存储器系统内。在本文档的稍后章节中将会描述这些子系统中的每一个。
在确定了潜在的存储器系统候选者之后,存储器算法选择和优化阶段720将会向该集成电路设计师呈现一个被推荐的存储器系统设计集。在一个集成电路设计师选择所推荐的存储器系统设计之一时,该系统进行一个功能剪切生成阶段730。该功能剪切生成阶段730生成测试集成电路模型内的设计的存储器系统所需要的信息并且使用一个集成电路设计内的存储器系统。可以向该集成电路设计师提供一个加密的模型以供在一个集成电路模型内使用。可以生成可合成的寄存器转换逻辑(RTL)以为所推荐的存储器系统创建一个RTL设计。该RTL设计稍后将会转换成该存储器系统的一个几何布局。可以提供一个物理布局面积和互连网表用于集成电路布局规划。
最后,一个功能剪切验证阶段740可以提供用于验证所选择的存储器系统设计的各种信息。可以对该存储器系统提供一个形式验证。可以提供将会允许所创建的存储器系统被完全地测试的一个测试集。
存储器算法列举和选择
如以上章节所提出的,存在构建如以下的一个存储器系统的若干方法:传统标准存储器系统、智能存储器系统以及分级智能存储器系统。这些存储器系统在由存储器控制器所使用的算法的类型上相异。通常,多于一种的不同类型的存储器系统设计可能是适用于一个特定的存储器系统要求集。为确定构建哪种类型的存储器系统,自动存储器设计系统可以将该选择分成一个两阶段的过程:潜在存储器算法列举和对候选存储器系统的最终选择。
在一个初始存储器算法列举阶段,自动系统首先确定可以用于满足所指定的存储器系统性能要求的存储器算法的可能的类型。例如,通过相对简单的一个性能要求集,该自动存储器设计系统应当考虑到若干相对简单的存储器算法,如各种传统存储器系统设计。然而,如果这些要求指定该存储器系统必须处理若干个同时的存储器操作并且仅一个相对缓慢的时钟是可供使用的,那么该自动存储器设计系统可以消除使用一个传统存储器系统的可能性并且列举可以满足这些要求的一个存储器算法集。在该存储器算法列举阶段结束时,该自动存储器设计系统将会具有可以用于符合所指定的存储器系统性能要求的一个存储器系统设计类型集。
在列举(实施各种不同的存储器算法的)适合的存储器系统类型之后,自动存储器设计系统然后生成那些可能的存储器系统类型中的每一个的潜在实现方式。关于符合所指定的存储器系统性能要求的每个实现方式的具体性能和物理特性将会作为候选存储器系统被存储以用于稍后的分析。
在生成每个可能的存储器系统类型的各种不同的实现方式之后,自动系统然后对最佳候选存储器系统进行一个最终选择。在全部实现这些要求的一个潜在候选存储器系统设计集中进行的最终选择将会取决于特定的参数,一个集成电路希望在这些特定的参数上进行优化。该自动存储器系统将会向该集成电路设计师呈现所生成的一个最佳候选存储器系统集。
自动存储器设计系统将会一直考虑使用一个传统存储器系统,因为一个传统系统总体上将会具有最低的等待时间并且不需要使用复杂智能存储器系统逻辑上的任何集成电路布局面积。注意:如双端口存储器单元和两端口存储器单元可以提供具有具体特征的一个传统存储器系统。除了没有另外数字逻辑的传统存储器系统之外,该自动存储器设计系统还将会考虑到具有少量的另外的数字逻辑的存储器系统,以便对由一个传统物理编译器所提供的基本传统存储器系统进行改进。添加至一个传统存储器系统的另外的逻辑可以实施存储器图块优化或存储器压缩。在稍后章节中对这两种技术进行更详细的描述。
即使在可以针对一个特定的功能存储器系统请求来构建一个传统存储器系统时,该传统存储器系统可能不会呈现出最佳解决方案。例如,以高速进行操作的一个传统存储器系统通过在内部以高速顺序地处理这些存储器请求可能能够处理以一个较慢的速度接收的多个存储器请求。然而,这样一种设计与使用一种智能方法来处理这些同时的存储器请求的一个智能存储器系统设计相比可能消耗更多的功率。因此,该自动存储器设计系统还将会列举多种多样的的智能存储器系统设计以供考虑,即使在传统存储器系统可能能够处理这项任务时。
一些被请求的存储器系统可能具有以下这类困难的需求:那些被请求的存储器系统可能仅被构建有一个分级智能存储器系统。例如,如果必须同时处理若干个不同的存储器操作并且仅存在一个相对缓慢的时钟可供使用,那么可能需要实施一个分级存储器设计来同时处理该多个存储器操作。本文档中的稍后章节描述自底向上和自上而下技术,这些技术可以用于设计处理复杂存储器要求(如同时处理多个存储器操作)所需要的分级智能存储器系统。
读出等待时间要求是由存储器算法列举阶段所考虑的一个重要度量标准。在读出等待时间不是非常重要时,那么自动存储器设计系统可以考虑以下的复杂分级智能存储器系统:需要一些时间来进行操作但是却能够通过同时处理多个存储器操作提供总体存储器吞吐量。在读出等待时间是中等重要时,那么该自动存储器设计系统通过使用以下美国临时专利申请中的传授内容仍可以考虑智能存储:于2009年12月15日提交、具有序列号的61/284,260“用于减低的等待时间缓存的系统和方法”,其通过引用结合在此。在读出等待时间非常重要时,那么该存储器系统可能不能够考虑复杂智能存储器系统设计或将会需要高的内部时钟速率。
具有严格等待时间要求的复杂存储器系统可以通过使用多端口存储器单元来构建,这些多端口存储器单元处理所要求的额外的特征中的一些。例如,一个设计师可能需要可以同时处理2个写入操作和1个读出操作(2W1R)的一个存储器系统。这样一个2W1R存储器系统可以通过以下来构建:添加一个单一的额外的存储器存储体来处理第二写入操作(如参照图5A和图5B所披露的)并且实施具有可以处理同时的读出和写入操作的双端口存储器单元的存储器系统来处理该读出操作。因此,使用两端口存储器单元,一个单层智能存储器系统能够处理三个同时的存储器操作。如果仅使用单端口存储器单元,那么该存储器系统将会需要一个分级智能存储器系统来处理三个同时的存储器操作。然而,该分级智能存储器系统可能尚未能符合该严格等待时间要求。
分级存储器安排的自底向上法
图6A和图6B示出了分级智能存储器系统安排的两个示例。通过将多个智能存储器系统安排在多个分级安排中,可以处理具有同时读出和写入操作的几乎任何组合的复杂存储器系统。例如,为构建能够处理两个同时的读出操作和两个同时的写入操作(2R2W存储器)的一个存储器系统,我们可以构建使用多个两个读出和一个写入(2R1W)存储器作为多个内部存储器存储体的一个两个写入和一个读出(2W1R)存储器系统。可替代地,我们也可以从使用多个2W1R存储器作为多个内部存储器存储体的一个2R1W存储器切换该安排并且构建一个2R2W存储器。在以下相关专利申请中详细披露这两种分级智能存储器系统安排:于2010年8月17日提交并且具有序列号12/806,631的“用于设计分级存储器系统的高速存储器系统和方法”。
可以处理相同数量的同时的读出和写入操作的复杂存储器系统可以许多不同的方式来构建。图8A示出了具有指定许多同时的所支持的写入操作的横轴和指定许多同时的所支持的读出操作的纵轴的一个图表。图上的任何交点表示同时处理指定数量的读出操作和写入操作的一个可能的复杂存储器系统。落在纵轴上的这些存储器系统还包括可替代地处理一个单一写入操作(从而存储器数据)的能力。类似地,落在横轴上的这些存储器系统还包括可替代地处理一个单一读出操作(从而取回数据)的能力。剩下的存储器系统由可以执行的该数量的同时的读出和写入操作来限定。例如,位置848指定了可以同时处理两个读出操作和两个写入操作的一个存储器系统。使用更简单的存储器系统,这些更简单的存储器系统在图8A的图上的一个特定交点的左侧、下方或左下方,图8A上所描绘的不同的存储器系统可以被构建有各种不同的分级智能存储器系统安排。
在右上方,交点位置890表示支持四个同时的读出操作(纵轴)和四个同时的写入操作(横轴)的一个复杂的存储器系统。可以使用较不复杂的存储器系统以多种不同的方式来构建该四读出和四写入存储器系统890。确切地,位置890的四读出和四写入(4R4W)存储器系统可以从以下这些存储器系统的许多不同组合来构建:在图8A的图上的交点位置890的左侧、下方或左下方。以下段落中提出一些示例。
构建一个四读出和四写入存储器系统890的一个第一方法是构建一个高水平智能存储器区块组织,该高水平智能存储器区块组织使用多个额外的存储器存储体来支持多个写入操作(在这个示例中是四个写入操作)。这在图8A上由至表示支持四个同时的写入操作的一个智能存储器系统的位置891的水平虚线811表示。然后可以用支持四个读出操作的组织(如支持多个读出的一个基于异或的智能存储器存储体)来实施这样一个智能存储器系统内的这些单独的存储器存储体。以这种方式对四个读出操作进行的支持在图8A上由从位置891至表示4R4W存储器系统的位置890的竖直虚线815表示。因此,最终结果将会是将会同时处理四个读出和四个写入的交点890处的总体存储器系统。
构建一个四读出和四写入存储器系统890的一个第二方法是首先以处理四个同时的读出操作的一个智能存储器组织开始。这在图8A上由至代表支持四个同时的读出操作的一个存储器系统的位置892的竖直实线831表示。可以用可以处理四个同时的写入操作的多个单独的智能存储器区块来实施该高水平存储器组织内的这些单独的存储器区块(这样使得总体存储器系统将会同时处理四个读出和四个写入)。对四个写入操作进行的支持在图8A上由从位置892至表示最终4R4W存储器系统的位置890的水平实线835表示。
以上这两个段落示出了从多个更简单的存储器系统构建将会同时处理四个读出和四个写入的一个总体存储器系统的两种不同的方法。然而,存在通过使用其他分级结构来构建在位置890处的所希望的4R4W存储器系统的许多其他方法,这些其他分级结构遵循在图8A上从位置820处的原点至在位置890处的所希望的4R4W存储器系统的一个路径。例如,一种可能的安排可以使用一个第一存储器组织层来创建如由对角虚线861所描绘的1读出和1写入(1R1W)存储器系统,使用一个第二存储器组织层来实施如由水平虚线862所描绘的三个写入操作,并且使用一个第三存储器组织层来实施如由竖直虚线863所描绘的三个读出操作。沿一个路径(该路径向上、向右或斜向上/右)起源于原点820处并且进展至4R4W位置890的任何路径描绘达到位置890处的所希望的4R4W存储器系统的一个可能的存储器系统组织。注意:不是所有的过渡都需要智能存储器系统。例如,由对角虚线861描绘的1读出和1写入(1R1W)存储器系统可以使用一个双端口存储器单元电路来实施。
因为从位置820处的起点至位置890处的4R4W存储器系统的表示的任何路径能够用于构建一个4R4W存储器系统,所以一个穷尽的自动存储器设计系统可以考虑每个可能的路径。通过考虑每个可能的路径,该自动存储器设计系统可以发现通过由任何相关度量标准(功耗、布局面积等)所测量的最适宜的存储器设计。
注意:在到一个目的存储器系统的途径上分叉之前,许多存储器系统设计将会遵循同一路径达某一距离。因此,在分析其他路径时可以使用在分叉之前的沿该共同路径的部分结果,这些其他路径在沿至该目的存储器系统的一个不同路径分开之前遵循同一共同路径。为最佳地利用这个事实,设计一个所希望的存储器系统的一种方法是在原点位置820处开始,并且然后在存储可以沿至所希望的最终存储器系统的路径被构建的每个可能的子存储器系统的部分结果的同时,朝向所希望的存储器系统向上并且向右扩张。这样一个自动存储器设计系统将会探测以下的每个可能的更简单的存储器系统:可以用于构建一些复杂分级智能存储器系统安排中的最终所希望的存储器系统。图8B示出了一个自动存储器设计系统如何可以通过以下来开始:在最终朝向一个所希望的最终分级存储器系统进展时,在原点820附近设计相对简单的e智能存储器系统。
例如,为创建图8B上的位置890处的4R4W存储器系统,一个自动存储器设计系统首先可以优化创建位置841处的一个1读出操作(或1写入操作)存储器和位置842处的1写入操作(或1读出操作)的多种方法。这两个位置基本上是相同的并且仅表示一个典型的一端口存储器单元。该自动存储器设计系统然后可以确定创建位置843处的一个1读出和1写入(1R1W)存储器的优化的方法。位置843处的该存储器1R1W可以被创建有以下一个智能存储器系统:使用位置841和842处的基本单端口存储器单元。这完成了对所限定面积871中的这些存储器系统进行的优化。
自动存储器设计系统然后朝向位置890处的一个4R4W存储器系统的最终目标向外扩张。确切地,该自动存储器设计系统考虑所限定面积872中的这些存储器系统的优化的设计。该自动存储器设计系统可以首先对可以从位置841或820处的存储器创建出的位置844处的多个2读出(或1写入)存储器进行优化。然后,该自动存储器设计系统可以对可以从位置842处的存储器创建出的位置845处的该2读出(或1写入)进行优化。(这种类型的存储器系统可以使用图5A和图5B的这些传授内容来构建。)
自动存储器设计系统然后可以对位置846处的2读出和1写入(2R1W)存储器进行优化,该存储器可以从位置841、842、843以及844处的多个存储器(被描绘在位置846处的该2R1W存储器的左侧或下方的所有这些存储器系统)的各种组合来创建。然后,该自动存储器设计系统然后可以对位置847处的1读出和2写入(1R2W)存储器进行优化,该存储器可以从位置841、842、843以及845处的多个存储器(被描绘在位置847处的该2R1W存储器的左侧或下方的所有这些存储器系统)的各种组合来创建。注意:在对每个更加复杂的存储器系统进行优化时,来自先前对更简单的存储器系统进行的优化的结果将会存储在并且用于稍后优化中,因为那些更简单的存储器系统可以用于创建这些更复杂的存储器系统。
位置848处的2R2W存储器是所限定面积872内的最终存储器系统。自动存储器设计系统可以对位置848处的该2R2W存储器进行优化,该2R2W存储器可以从图8B的图上的位置841和847处的先前优化的存储器系统的许多不同的组合来创建。
在完成所限定面积872内的所有这些存储器系统之后,然后在自动存储器设计系统朝向位置890处的被请求的4R4W存储器系统进展时,该自动存储器设计系统将会对所限定面积873中的这些存储器系统进行优化。将会以与在所限定面积872内的这些存储器系统相同的方式对所限定面积873中的这些存储器系统进行优化,其中对每个存储器系统优化的结果进行存储并且这些结果用于稍后优化之中。最终,该自动存储器设计系统将会以位置890处的所希望的4R4W存储器系统为结束对所限定面积874中的这些存储器系统进行优化。在该自动存储器设计系统达到位置890处的该4R4W存储器系统时,来自所有这些早期优化的存储器系统的结果将会用于对位置890处的该4R4W存储器系统进行优化。因此,该自动存储器设计系统的最终结果将会是达到位置890处的该所希望的4R4W存储器系统的所希望的功能性的许多不同的优化的分级存储器系统设计。集成电路设计师可以考虑这些不同的优化的分级存储器系统设计并且从这些不同的优化的分级存储器系统设计进行选择。
以上描述的方法提出了一种穷尽的自底向上法,该穷尽的自底向上法将会考虑所有(或几乎所有)可能的分级智能存储器系统组合,以便创建可以处理若干个同时的读出操作和写入操作的一个所希望的复杂存储器系统。然而,一个自动存储器设计系统的许多实现方式将会使用各种剪枝机构以简化对多种分级存储器系统设计的搜索。例如,一个系统可以仅仅考虑沿至所希望的存储器系统的各种路径的这些外边界的这两个路径,因为这些路径通常产生最佳结果。例如,如图8A中所示的设计位置890处的一个4R4W存储器系统的一个自动存储器设计系统可以仅考虑至位置890处的4R4W存储器系统的811和815路径或831和835路径。其他系统可以考虑那两条路径以及利用如双端口存储器单元的专用存储器单元的其他路径。
分级存储器安排的自上而下法
一个自动存储器设计系统可以考虑一种‘自上而下’存储器系统设计法而不是先前章节中所提出的自底向上法。通过一种自上而下法,该系统将会以这些最终存储器系统要求开始并且朝向将会用于实施该存储器系统的最终基本存储器单元工作。例如,参照图8A,在设计位置890处的4R4W存储器系统时,该自动存储器设计系统将会在位置890处开始并且朝向一个基本存储器单元工作。
通过一种自上而下设计法,自动设计系统在不太可能产生良好的结果的剪枝路径上应当是非常智能的。在使用一种自上而下法时,许多情况可以是“足够良好的”,这样使得不必要已知检查所有可能的路径组合。
是使用一种自底向上法还是自上而下法,可以给予自动存储器设计系统足够的提示,因此该自动存储器设计系统可以考虑将会给出最佳解决方案的这些路径而无需穷尽地搜索设计空间。例如,考虑具有eDRAM的以下情况。一些eDRAM具有一个多级存储器接口,该多级存储器接口具有各种限制。例如,一个特定的eDRAM存储器宏功能允许对不同存储体进行4个访问。通过提供可供使用的这样一个4访问存储器的知识,一个自上而下或自底向上存储器编译器可以顾虑直接建造一个4W/1R存储器,因为这些写入存储体是可以一直负载均衡的。类似地,该4访问eDRAM存储器可以用于直接构建一个3W1R存储器系统。那些4W/1R或3W1R存储器系统可以直接用作一个更复杂的智能存储器系统中的一个建造区块。因此,如果一个设计师请求一个五写入(5W)存储器系统,那么该自动存储器设计系统可以使用该4W/1R基本建造区块。因此,为构建该五写入(5W)存储器系统,该自动存储器设计系统可以仅仅将另一个存储体添加至该4W/1R基本建造区块。
其他存储器访问组合
使用描绘许多同时的读出操作(纵轴)与同时的写入操作(横轴)的一个二维图来描述先前章节所披露的这些自底向上和自上而下存储器设计系统。然而,这是为了简化说明而进行的。复杂存储器系统还可以使用同时的读出操作与/或同时的写入操作的不同组合来构建。
图8C示出了多个同时的读出操作(纵轴)或多个同时的写入操作(横轴)的一个不同组合。图8C的图上的任何交点表示同时处理指定数量的读出操作或写入操作的一个可能的复杂存储器系统。例如,位置899表示可以处理5个读出操作或5个写入操作的一个存储器系统。如同图8A,图8C上的一个存储器系统可以从在该存储器系统的左侧、下方或左下方的多个存储器系统的各种组合来构建。
除了图8A和图8B的这些相对简单的存储器系统之外,也可以创建具有深奥的存储器访问能力的许多其他存储器系统。例如,可以设计出在一个单循环中执行以下的一个复杂的存储器系统:(3R1W)或(2R2W)或(1R3W)或(4W)。这样一个存储器系统执行除了四个同时的读出操作(4R)之外的四个存储器操作的任何组合。这类复杂存储器系统可以被创建有多个分级安排的更简单的智能存储器系统。
对一个选定的智能存储器设计的优化
可以使用的每个不同的智能存储器设计具有随着该智能存储器设计的多个不同实现方式而发生变化的若干设计参数。例如,回顾图5A,示例智能存储器系统500使用四个存储器存储体提供400个可寻址的存储器位置,这四个存储器存储体各自含有100个单独的存储器位置各自(加一个另外的100个存储器位置存储体以处理存储器存储体冲突)。然而,同一功能存储器系统可以被构建有各自含有50个存储器位置的八个存储器存储体(加具有50个存储器存储体的一个额外的存储器存储体)。或同一功能存储器系统可以被构建有各自含有80个存储器位置的五个存储器存储体(加该额外的存储器存储体)。
在图5A中所示的同一基本智能存储器系统设计的这些不同实现方式的每一个中,地址映射表523的大小也将相应地发生变化。因为该地址映射表523可以在SRAM中实施以便达到所需要的性能,所以增加该地址映射表523的大小将会增大该存储器系统设计的布局面积和功率要求(因为SRAM相比DRAM使用更大的布局面积和功率)。
同一智能存储器系统设计的这些不同的可能的实现方式各自将会提供同一净功能存储器系统。然而,这些不同的可能的实现方式各自将会具有限定具体的实现方式的一个不同的操作和物理特性集。这些特性将会包括布局面积、功耗以及等待时间。一个集成电路设计可能希望就这些特性中的一个或多个对一个存储器设计进行优化。
为就各种存储器特性进行优化,一个数学公式集可以用于基于不同的设计参数选择来确定这些存储器系统特性。例如,可以限定基于所使用的存储器存储体的数量和每个存储器存储体的大小来确定所需要的该集成电路布局面积的一个公式。(注意:这个公式还必须将存储器控制器中的任何地址映射表的大小考虑在内。)那么,如果一个用户希望针对布局面积大小对该存储器系统设计进行优化,那么可以确定该特定公式的最小值。类似的公式可以针对一个设计师可能希望就其进行优化的所有其他存储器特性来确定。
因此,针对每个不同的智能存储器设计类型,自动存储器设计系统将会具有一个数学公式集,该数学公式集可以用于计算被给予一个特定的输入参数集的存储器系统的不同的输出特性。基于该设计师最感兴趣的输出特性,自动存储器系统通过使相关公式的输出最小化或最大化(曾是最优的)可以为该设计师确定最佳解决方案。因此,优化器将会确定符合这些存储器系统要求并且优化该设计师最希望的这些特性的最佳存储器系统设计参数。
存储器设计师可能希望就多于仅一个的特定存储器系统特性进行优化。在这类情况下,该存储器系统优化器可以针对这些所希望的特性中的每一个而确定最佳实现方式,并且还生成提供一个均衡的优化集的一个实现方式集。
存储器图块优化
现有物理存储器编译器在创建最优存储器模块设计上有时趋向于不是非常高效。一个原因是:现有物理存储器编译器趋向于不是非常高效是因为现有物理存储器编译器通常字面地理解存储器模块请求。因此,如果一个集成电路设计师向一个存储器模块请求一个具体的数据字宽度和数据深度,则该物理存储器编译器将会试图向该集成电路设计师提供具有具体请求的物理数据宽度和数据深度的一个物理存储器模块。
为对这些现有物理存储器编译器进行改进,本披露的系统可以执行“存储器图块优化”,该“存储器图块优化”使用来自现有物理存储器编译器信息和存储器模块设计但是却创建更优化的最终存储器系统。存储器图块优化通过仔细地检查一个物理存储器编译器可以生成的这些单独的存储器模块进行操作,但是然后却将那些存储器模块(这些存储器模块可以被看作单独的“存储器图块”)与另外的电路组合在一起,以便创建提供一个所希望的存储器功能性的最终存储器系统而不是创建一个特定的所请求的大小的单独的存储器模块。
注意:一些物理存储器优化器可能是已经高度优化的或完全优化的,这样使得其提供最优存储解决方案。在有一个完全优化的物理存储器编译器的情况下,将不需要该存储器图块优化器。如果一个物理存储器编译器是高度优化的(但不是完全优化的),则该存储器图块优化器可以搜索替代解决方案,但是在该物理编译器是直接被请求以提供一个解决方案时,该存储器图块优化器通常将会选择由该物理编译器所提供的解决方案。如果一个物理存储器编译器未被优化,那么一个存储器图块优化器将会改进大多数的存储器系统设计。
图9示出了可以可供用于一个集成电路设计师的一个物理编译器的一个不同的存储器模块集。图9中所述的各种存储器模块可以用多个图块来类推,因为每个存储器模块具有一个特定的物理长度、宽度以及相应的布局面积。除了这些物理大小特性之外,每个存储器模块具有各种操作和性能特性,如数据字宽度、数据容量(数据深度)、最大操作速度、功率要求等。
在一个集成电路设计师希望为一个集成电路创建一个存储器模块时,该集成电路设计师将会具有所希望的存储器模块的一个所希望的功能特性(数据宽度、数据深度、操作速度等)集。该集成电路设计师总体上还将会具有该集成电路设计师想要针对其对该存储器模块进行优化的一个特性(布局面积、功率使用等)集。取决于这些要求,这些优化参数将会发生变化。例如,一个电池供电的移动装置的一个集成电路可能需要针对功耗而被优化,或在布局面积上为低的一个集成电路可能需要针对存储器模块面积而被优化。然而,一个集成电路设计师总体上不会顾虑一个存储器系统实际上是如何精确地被构建的,只要该存储器系统提供所需要的功能特性。一个存储器图块优化器通过考虑可供使用的存储器模块的整个库来利用这个事实,以便构建具有所需要的功能特性的一个存储器系统而不是密切地符合所指定的要求的几个存储器模块。
通过示例最佳示出存储器图块优化。如果一个集成电路设计师需要处理256比特宽的数据字并且深32K数据字条目的一个存储器模块(一个32Kx256比特的存储器模块),那么一个物理存储器编译器可以为该集成电路设计师确定该物理存储器编译器的数据库并且选择一个32Kx256比特存储器模块图块。然而,出于许多不同原因,这个解决方案可能不是最优的。存在遵循可供使用的存储器模块集内的非线性模式的许多存储器模块特性。例如,参照图9,由每个不同的存储器模块所使用的布局面积与该存储器模块的存储器容量不是线性地对应的。参照图9中的第一行,存储器模块912具有存储器模块911的存储器容量的两倍,但是在物理布局面积的大小上却不是两倍。类似地,存储器模块913具有存储器模块911的存储器容量的四倍,但是在物理布局面积的大小上仅是3倍。就功率使用、操作速度以及其他存储器系统特性而言,也可以存在类似的非线性方面。因此,为创建更好的存储器系统,一个存储器图块优化系统将会考虑创建具有一个指定的功能特性集的一个存储器系统而不是仅选择密切地匹配这些所请求的特性的一个物理存储器模块的大量的替代方法。
为创建所请求的32Kx256比特的存储器模块,一个存储器图块优化器将会考虑本机的32Kx256比特的存储器模块932,但是该存储器图块优化器还将会考虑提供同一所希望的存储器系统功能性的其他存储器模块的许多组合。例如,可以将四个8Kx256比特的存储器模块912结合在一起以创建一个32Kx256比特的存储器模块。可以将八个8Kx128比特的存储器模块911结合在一起以创建一个32Kx256比特的存储器模块。可以将两个16Kx256比特的存储器模块922结合在一起以创建一个32Kx256比特的存储器模块。可以将两个32Kx128比特的存储器模块931结合在一起以创建一个32Kx256比特的存储器模块。
这些组合(和其他组合)总体上将会需要一些另外的多路复用器、寻址电路或其他支持电路来用以下一种方式结合这些不同的存储器模块:提供与所请求的32Kx256比特的存储器模块完全相同的存储器系统功能性。然而,将各种存储器模块结合在一起所需要的另外的支持电路总体上是不重要的。例如,结合两个32Kx128比特的存储器模块931以创建一个32Kx256比特的存储器系统仅由并行地连线这两个32Kx128比特的存储器模块组成。将两个16Kx256比特的存储器模块922结合在一起以创建一个32Kx256比特的存储器模块仅由以下组成:使用一个地址线以选择这两个16Kx256比特的存储器模块之一。
创建所希望的存储器系统功能性的这些不同的存储器图块组合各自总体上将会具有不同的物理和操作特性集。该存储器图块优化器可以选择以下一个存储器模块组合:提供所需要的存储器系统功能性并且提供该设计师想要针对其进行优化的多个度量标准的最佳特性。如果该设计师想要优化若干不同的特性,则该图块优化器可以呈现多个候选存储器系统并且允许该集成电路设计师来选择这些候选存储器系统之一。
在将一个额外的存储体添加至一个存储器系统以实现一个智能存储器系统(如创建一个2R2W系统可能需要的额外的存储体和宏功能)时,该图块优化器应当将被添加的另外的存储体(或宏功能)考虑在内。这些另外的存储器存储体可以改变该图块优化器选择存储器的途径。
存储器压缩优化
存储器图块优化系统考虑可从物理编译器获得的存储器模块的整个库,以便考虑从较小的存储器图块构建具有一个具体的功能特性集的一个存储器系统的不同途径。一个存储器压缩优化器执行一个类似的功能但是却以不同的方式来执行。一个存储器压缩优化器检查一个较宽的数据系存储器模块是否可以用于以下:通过将多个较小的数据字压缩成较宽的数据字存储器模块来为一个较小的数据字提供一个特定的所请求的存储器功能性。
通过一个示例可以最佳披露存储器压缩。一个集成电路设计师可能需要具有8K的存储器位置的一个16比特宽的存储器(一个8Kx16比特的存储器模块)。如果一个集成电路设计师从一个物理存储器编译器请求一个8Kx16比特的存储器模块,则该物理存储器编译器典型地将会向该用户提供字面上具有8Kx16比特的存储器阵列的一个存储器模块的一种物理设计。然而,存在提供同一8Kx16比特的存储器系统功能性的许多其他方法。
如在关于图块优化章节所提出的,同一8Kx16比特的存储器功能性可以通过使用两个8Kx8的存储器模块连同少量的另外的逻辑来提供。一个存储器压缩优化器将会考虑提供同一8Kx16比特的存储器功能性(其中存储器模块具有较宽的数据字)的方法。例如,一个存储器压缩优化器可以推荐使用一个4Kx32比特的存储器模块来提供一个8Kx16比特的存储器模块的功能性的一个存储器系统,因为该4Kx32比特的存储器模块提供相同量的总存储存储容量。确切地,该存储器压缩编译器可以将两个16比特宽的数据项放置在该4Kx32的存储器的每个32比特的字之中。类似地,一个存储器压缩优化器可以将四个16比特宽的数据项放置在一个2Kx64的存储器模块的每个64比特的字中,它可以将八个16比特宽的数据项放置在一个1Kx128的存储器模块的每个128比特的字中,或它可以使用将多个16比特的字放置在具有一个较宽数据字的一个存储器模块中的一些其他排列。
然而,存储器压缩优化不与存储器图块优化一样简单。为了用两个8Kx8比特的存储器模块创建与一个8Kx16比特的存储器模块相同的存储器功能性,一个存储器图块优化系统仅必须并行地连线这两个8Kx8的存储器模块。确切地,将相同地址线布线至两个8Kx8比特的存储器模块,而将8比特的数据布线至一个8Kx8比特的存储器模块并且将其他8比特的数据布线至另一个8Kx8比特的存储器模块。一个存储器压缩优化器必须提供更复杂的逻辑,该更复杂的逻辑处理将更多个更小的数据字压缩成该物理存储器模块的一个单一的更大的数据字。
由一个物理存储器编译器提供的一些存储器模块可以提供子字访问特征。子字访问特征允许一个集成电路设计师读出并且写入任何数据字条目的单独的子部分。在子字访问特征可供使用时,存储器压缩优化器可以使用这些子字访问特征用于将所给数据项压缩成一个单一数据字。回顾创建一个8Kx16比特的存储器模块的功能性的示例,如果一个4Kx32存储器模块具有允许16比特的数据独立于每个32比特的字而被读出/写入的子字访问,那么该子字访问特征可以用于创建一个8Kx16比特的存储器模块的功能性。确切地,所有这些地址线中只有一个将不会联接至该4Kx32比特的存储器模块,以便选择该4Kx32比特的存储器模块中的这些32比特的字之一。最后一条地址线然后可以用于选择应当访问该32比特的字的上还是下16比特的子字,从而从一个4Kx32比特的存储器模块创建具有8Kx16比特的功能性的一个存储器系统。
然而,子字访问在所有存储器模块中并不是一直可供使用的。此外,即使在子字访问可供使用时,它在所需要的排列或粒度中可能不是一直可供使用的。例如,一个集成电路设计师可能需要存储12K的41比特的字的一个存储器模块。一个典型的物理编译器将不会很好地处理这样一个不平常的请求。一个物理编译器可以建议使用一个12Kx64的存储器,其中41比特的数据存储在每个64比特的字中,并且忽略每个64比特的数据字的23比特。浪费这么大量的数据存储(12Kx23比特)明显地是不是非常高效的。一个存储器图块优化器可以建议使用一个12Kx32的存储器模块(该存储器模块存储该数据的32比特)和将9比特的数据存储在每个16比特的条目中(其中浪费了7比特)的一个12Kx16存储器模块来创建一个存储器系统。该存储器图块优化器解决方案将会浪费仅12Kx7比特的数据,这是胜过浪费了12Kx23比特的物理编译器解决方案的一个改进。然而,一个存储器压缩优化器可以建议将三个41比特的数据项存储在一个4Kx128的存储器模块的每个128比特的数据字内。在这样一个实施例中,每个128比特的数据字将会存储三个41比特的数据项(每个条目共123比特的数据)并且浪费5个额外的数据位。然而,仅浪费4Kx5比特是胜过物理编译器解决方案和存储器图块优化器解决方案二者的一个显著的改进。但是一个显著问题在于:大多数存储器系统将不会允许对一个128比特的数据字内的仅特定的41比特进行读出和写入。
这个问题可以通过以下来解决:将额外的数据逻辑添加至4Kx128比特的存储器模块来处理对压缩成128比特的字的41比特数据项进行的读出和写入。对于读出操作来说,另外的数字逻辑电路需要读出适当的128比特数据字、从128比特的字访问这个41比特的子集并且以该41比特的数据字做出响应。对于该存储器模块的写入操作来说,情况更加困难。
对于到存储在固定的存储器位置压缩的数据的一个存储器模块中的一个标准写入操作来说,另外的电路首先需要读出适当的128比特的数据字、将这些新的数据位掩码成该128比特的数据字的该适当的41比特的子集中,并且然后将改变的128比特的数据字写回同一128比特的数据字条目中,该128比特的数据字包括这41比特的新数据和来自其他数据字的82比特的现有数据。执行这些压缩步骤所需要的数字逻辑并不是非常复杂。然而,通过一个标准存储器系统,写入操作表现出一个难点,因为该写入操作需要该数据逻辑来读出该适当的数据字、通过掩码在该新数据中在其固定位置对该数据字进行修改,并且将修改的数据字写回至该存储器模块的适当的条目之中。确切地,执行一个外部存储器用户随时需要写至该存储器的一个存储器读出操作和一个存储器写入操作二者的要求意味着:存储器系统必须以在内部的两倍快地进行操作(必须针对所接收到的每个写入操作执行一个内部读出和写入)。因此,如果实施一个标准存储器系统,那么仅在适合的子字能力可供使用或该内部存储器可以用存储器操作被接收的两倍快地进行操作时,可以使用存储器压缩。
然而,各种智能存储器系统设计(如在已经通过引用结合的相关专利申请中所披露的)可以用于以较慢的时钟速度来实施存储器压缩系统。例如,如果一个智能存储器系统设计通过使用一个地址映射表连同一个额外的存储器存储体或缓存器来实现一个1R1W存储器系统(或一个读改写存储器),那么该系统每个时钟周期可以处置至所压缩的存储器系统的一个写入操作,尽管每个写入操作可能存在一个两周期等待期。在一个第一时钟周期中,接收一个写入请求的一个1R1W存储器系统首先将会读出相关的存储器系统条目。然后在一个第二时钟周期中,该1R1W存储器系统将会写回含有新数据的该条目的一个修改的版本。(注意:在这个写入发生时,该系统通过执行对一个后续的写入操作的适当的存储器系统条目的一个读出可以开始处理该后续的写入操作。)
递归
用于设计本文档中所披露的多个存储器系统的自动系统可以用于生成使一种特定的数据存储方法与一个内部存储器空间结合的多种智能存储器系统设计。例如,图4示出了一个智能存储器系统的高水平方块图,该智能存储器系统是使用智能存储器方法逻辑430和由该智能存储器方法逻辑430使用的可内部地寻址的物理存储器420来构建的。一个智能存储器系统内的内部存储器本身是一个独立的存储器系统。例如,图5A中所示的智能存储器系统500被构建有五个独立的存储器存储体(存储体A、B、C、D以及E)。因此,递归地调用用于设计存储器系统的自动系统来设计在一个智能存储器系统内使用的存储器系统是可能的。
例如,如果一个自动存储器设计系统选择智能存储器系统500作为一个特定存储应用程序的一个候选存储器系统设计,则该自动存储器设计系统可以递归地调用本身来为这些内部独立的存储器存储体(存储体A、B、C、D以及E)设计存储器系统。该自动存储器设计系统然后将会基于一个所供应的存储器系统要求集来创建这些存储器系统。该自动存储器设计系统可以选择一个传统存储器系统,这样使得最终设计将会表现如图5A中的。然而,取决于所请求的存储器要求和优化参数,该自动存储器设计系统可以为这些内部存储器存储体选择一个智能存储器设计,这样使得该最终设计可以表现如图6A中所示的,其中五个独立的存储器存储体(存储体A671、B672、C673、D674以及E675)各自被实施为智能存储器系统,从而创建一个分级智能存储器系统。
使得一个自动存储器设计系统递归地调用本身来设计内部存储器系统的一个难点在于:每个新的智能存储器系统层为总响应时间增加一些等待时间。参照图6A,智能存储器系统600通过以下进行操作:使智能存储器控制器621首先查找一个被请求的存储器地址在地址映射表623中的当前物理位置。在确定被请求的存储器位置的当前物理位置之后,该智能存储器控制器621然后访问在这五个独立的存储器存储体(存储体A671、B672、C673、D674以及E675)之一内的位置。在实际访问这些存储器存储体之一中的所请求的数据之前、在地址映射表623内执行该物理地址查找所需要的时间将一些等待时间引入至该存储器系统600之中。
如果这五个存储器存储体被实施有一个类似的智能存储器系统设计,那么到那些存储器存储体(存储体A671、B672、C673、D674以及E675)中的一个(或多个)的访问将会向总体存储器系统的性能添加另外的等待时间。确切地,在访问所请求的实际数据之前,该存储器系统将会执行两个连续的地址映射表查找(在地址映射表623中的一个第一查找和在所选择的存储器存储体内的一个地址映射表中的一个第二查找)。在许多应用程序中,来自这两个分级安排的智能存储器系统的等待时间是可接受的,这些应用程序考虑以下事实:作为对这个等待时间的交换,该分级存储器系统可能能够同时处理若干独立的存储器操作。
已经发现递归技术在其中是相当有用的的一个特定领域用于优化在智能存储器系统内使用的地址映射查找表。回顾图5A的实例,智能存储器系统500接收两个写入操作:到地址202的一个写入和到地址204的一个写入。为处理这两个写入操作,智能存储器控制器521对地址映射表523进行若干个不同的访问。
响应到地址202和地址204的这些写入请求,该智能存储器控制器521使一个第一读出进入至该地址映射表523中来确定地址202的当前物理位置,并且使一个第二读出(进入至该地址映射表中)来确定地址204的当前物理位置。在图5A的情况下,地址202和地址204当前定位在同一存储器存储体(存储体B)中,从而致使必须通过移动这两个数据项之一来避免的一个潜在的存储器存储体冲突。因此,该智能存储器控制器521读出该地址映射表523以为这些写入操作之一(在这个示例中是到地址204的写入)定位一个自由存储器位置。(在一些实施例中,这个读出不是必要的,因为在定位地址204的物理位置时,可以读出地址映射表的整个04行。)
在将新数据写入至这些存储器存储体的适当位置中之后,智能存储器控制器521通过以下来更新地址映射表523将与地址204相关联的数据的新物理位置写入至该地址映射表523中,并且此时将先前位置标记为空。如这个示例中所提出的,必须执行对该地址映射表523的若干访问以处理这些正在进入的写入请求(至少两个读出操作和一个写入操作)。为高效地处理到该地址映射表中的所有这些访问,应当同时处理到该地址映射表523中的这些存储器访问中的一些。因此,该地址映射表523是用于使用处理多个同时存储器操作的各种智能存储器系统设计的一个理想候选者。
为以一个智能存储器系统设计来实施一个地址映射表523,该自动存储器设计系统可以递归地调用本身具有该地址映射表523的所希望的功能特性。确切地,该自动存储器设计系统被提供有该地址映射表523的所需要的大小和所需要的读出和写入性能。例如,该自动存储器设计系统可以递归地调用本身以生成一个存储器系统,该存储器系统具有该地址映射表523的大小并且可以同时处理2个读出操作和一个写入操作(2R1W)。为同时处理这两个读出操作,可以复制该地址映射表523,这样使得这两个示例各自然后仅需要同时处理1个读出操作和1个写入操作(1R1W)。
如早前提及的,如果一个地址映射表被实施有一个智能存储器系统,那么该智能存储器系统本身将会向该系统引入另外的等待时间。因此,最大所允许的等待时间是在调用自动存储器设计系统来设计一个地址映射表时所应当提供的一个重要的度量标准。如果以一个标准的智能存储器系统来实施该地址映射表增加了太多的等待时间,那么该自动存储器设计系统可以推荐使用一个等待时间减少的智能存储器系统。为获得提高的等待时间性能,等待时间减少的智能存储器系统与标准智能存储器系统相比经常具有较大的布局面积。必须鉴于这些存储器系统要求(这些要求可以指定一个最大布局大小)来考虑这个增大的布局面积。如果没有智能存储器系统将会满足这些等待时间要求,那么该自动系统然后将会为该地址映射表总体上建议一个传统高速存储器系统(如一个SRAM)。
在一个地址映射表被实施有可以处理多个同时的操作的一个智能存储器系统时,那么地址映射表可以以较高密度的但是较慢速度的存储器被实施,因为处理若干个同时的存储的能力弥补了该较慢的速度。因此,使用一个智能存储器系统设计可以允许一个地址映射表以eDRAM而不是高速SRAM被实施。由于DRAM存储器单元更高的存储器密度,基于DRAM的智能存储器系统实现方式可以使用大致上较小的布局面积。此外,该DRAM实现方式与一个SRAM地址映射表相比可以使用更少的功率。
自动智能存储器设计实现方式
图10示出了用于设计存储器系统的一个自动系统的一个实施例的高水平方块图。该自动存储器设计系统可以被实施为一个计算机程序(或计算机程序集),该计算机程序接受来自一个集成电路设计师或系统架构师的输入并且输出允许该集成电路设计师来构建并且测试一个存储器系统的存储器系统设计和相关信息。
主自动存储器设计程序1010接收指定一个所希望的存储器系统的一个功能要求和优化参数集1005。一个存储器算法列举模块1015选择可以实现来自一个存储器算法集1017的这些功能要求的一些存储器算法。对于每一个所选择的存储器算法来说,该存储器算法列举模块1015使得存储器设计优化器考虑该存储器设计的各种具体实现方式并且将实现这些功能要求的设计存储在一个潜在设计存储1025之中。该存储器设计优化器1020调整该存储器系统设计的不同的参数,并且根据需要使用存储器图块优化器1030、存储器压缩优化器1035以及基本物理模块数据1090。
基本物理存储器模块数据1090由可以由自动存储器设计程序1010使用的各种不同的基本存储器模块组成。该基本物理存储器模块数据1090内的信息可以处于可以被调用以请求一个存储器模块的多个物理存储器编译器(1041、1042以及1043)的形式,或处于可以被搜索以获得存储器模块的未处理的多个存储器模块表(1051、1052以及1053)的形式。这些不同的物理存储器编译器和存储器模块表可以表示可从不同的供货商获得的存储器系统和可在不同半导体制造工艺中获得的存储器模块。在该存储器设计优化器1020需要一个基本存储器模块时,该存储器设计优化器1020可以直接访问该基本物理存储器模块数据1090。可替代地,该存储器设计优化器1020可以调用试图创建如在本文档中早前所披露的更好的基本存储器系统的该存储器图块优化器1030和该存储器压缩优化器1035。
在存储器设计优化器1020已经创建由存储器算法列举模块1015所推荐的所有存储器设计的优化的版本之后,潜在存储器系统设计存储1025然后将会含有关于许多可能的存储器设计的信息。一个候选选择模块1070然后检查所有可能的存储器设计并且输出一个最佳候选存储器系统集1080。该候选选择模块1070将会使用向该自动存储器设计程序1010所提供的这些优化参数1005来选择这些最佳候选者。
图11示出了用于设计存储器系统的一个自动系统的一个实施例的流程图。图11中所披露的用于设计存储器系统的自动系统考虑许多不同类型的存储器系统设计,包括传统存储器系统、智能存储器系统以及分级智能存储器系统。该自动系统分析每个潜在存储器系统并且输出一个所推荐的存储器系统集。该自动存储器设计系统可以被实施为一个计算机程序(或计算机程序集),该计算机程序接受来自一个集成电路设计师或系统架构师的输入并且输出允许该集成电路设计师来构建并且测试一个存储器系统的存储器系统设计和相关信息。
首先,在阶段1110,自动存储器设计系统从需要一个存储器系统的一个设计师接收一个所希望的存储器系统特性集。取决于特定的实现方式,在阶段1110被输入的这个存储器特性集将会发生变化。在一些实施例中,该自动系统的用户将会输入非常详细地限定一个所需要的存储器系统的一个穷尽的特性集。在这样一个实施例中,该自动系统将会输出仅少许潜在存储器系统设计(或甚至只有一个)。在其他实施例中,该自动系统的用户将会输入一个相对少量的特性,这样使得该自动系统可以生成可以对其进行选择的大量的潜在存储器系统设计。在其中一个用户已经输入非常具有挑战性的要求的一些情况下,该自动存储器设计系统可能不能够设计实现所有这些要求的一个存储器系统。
在一个实施例中,自动存储器设计系统允许集成电路设计师输入一个数据宽度、一个地址宽度、一个读出性能以及一个写入性能。根据这些输入的参数,该系统将会生成一个潜在存储器系统设计集。该数据宽度指定将会被访问的数据字的大小。在一些实施例中,该系统将会允许子字访问。该地址宽度指定该存储器系统的容量,因为该地址的宽度指定可以被呈现的不同的存储器地址的多少。在一些实施例中,还可以指定等待时间、功率约束、面积约束以及其他限制。这些限制可以用于消除不能用于具体的集成电路应用程序的潜在存储器系统设计。
读出性能和写入性能特性指定必须处理多少存储器访问请求和必须以多快的速度处理这些存储器访问请求。例如,读出性能可以指定必须同时被处理的两个读出请求和最大时钟频率。注意:存储器系统没有必要是对称的。例如,一个存储器系统可能需要能够处理两个读出操作或一个写入操作。
存储器访问请求的各种逻辑组合可以由设计师来指定。例如,一个设计师可以请求可以处理两个读出操作与两个读出操作的一个系统,或该设计师可以请求可以处理两个读出操作或两个读出操作的一个存储器系统。在一个实施例中,该自动存储器系统允许该设计师指定一个存储器访问要求集与其中每个括号内的这些条件可以与一个逻辑与结合的一个加括号的或条件集。例如,为生成可以处理两个读出操作或一个写入操作的一个存储器系统,那么该设计师将会指定“(2R)或(1W)”。类似地,为生成同时处理三个读出操作或一个写入操作或同时处理两个写入和一个读出的一个存储器系统,那么该设计师可以指定“(3R1W)或(2W1R)”。可以这种方式来指定非常复杂的存储器系统,如在一个单循环中执行以下的一个存储器:“(3R1W)或(2R2W)或(1R3W)或(4W)”。
在阶段1110接受一个存储器系统特性集之后,自动系统然后列举可以实现在阶段1115的这些存储器系统特性的一个存储器系统设计集。这是图10中的存储器算法列举模块1015的操作。将会考虑许多不同类型的存储器系统。在传统存储器系统(这些传统存储器系统不实施智能方法)能够实现所指定的存储器特性时,将会考虑传统存储器系统。
在所指定的存储器特性要求同时处理多个存储器请求时,考虑智能存储器系统。在可以用一个分级存储器系统实施所指定的存储器特性时,也将会考虑分级存储器系统。由于分级存储器系统的复杂性和等待时间,在所指定的存储器特性不复杂时通常将不会使用分级存储器系统。然而,通常需要分级存储器系统来实施复杂特征,如同时处理许多存储器访问操作。
在阶段1115生成一个潜在存储器系统设计集之后,自动系统开始分析所有这些潜在存储器系统设计。以一个第一潜在存储器系统设计开始,该自动系统在阶段1120生成该存储器系统设计的所有潜在实现方式。这是图10中的存储器设计优化器1020的功能。
例如,如果存储器系统设计是一个传统存储器系统,那么自动存储器系统将会考虑可以使用的各种不同类型的存储器单元,如SRAM、嵌入式DRAM以及可以在所使用的具体半导体制造工艺中建造的任何其他存储器。并且对于每个不同的存储器单元类型来说,可以从许多不同的‘剪切’来构建该存储器系统,这些不同的‘剪切’结合呈各种不同形状的存储器单元和存储器阵列的大小。注意:在这个阶段可以访问参照图10并且在本文档中早前所描述的存储器图块优化器1030和存储器压缩系统优化器1035,以便优化一个存储器设计。
智能存储器系统提供更多潜在存储器系统实现方式。每种不同类型的智能存储器系统包括该种类型的智能存储器系统的一个设计选择集。例如,图5A中所披露的智能存储器系统被实施有五个不同的存储器存储体并且每个存储器存储体中有一百个条目。但是同一智能存储器系统可以被构建有一个不同数量的存储器存储体并且每个存储器存储体内有一个不同的行数。改变各种参数(如存储体的数量)将会影响存储器系统的性能和规范。
这些智能存储器系统还可以受到一个传统存储器设计所有可能的各种变体的影响,因为一个智能存储器系统含有多个传统存储器系统。例如,可以从这些可获得的存储器单元类型的任一种来构建智能存储器系统500中的所有这些存储器存储体(存储体A、B、C、D以及E)。类似地,可以从对不同形状和大小的各种不同的存储“剪切”来创建这些存储器存储体。为创建这些实现方式,自动存储器系统设计师可以调用存储器图块优化系统和存储器压缩系统。该存储器图块优化系统和该存储器压缩系统又可以调用一个物理存储器编译器来生成可以使用的可能的物理存储器系统并且获得它们的特征。
还必须以同一方式考虑实施这些分级智能存储器设计的所有这些不同的可能的方法。在一个分级智能存储器设计内,每个不同的智能存储器系统具有可以调整的若干参数。此外,在一个复杂分级存储器设计内使用的这些基本存储器系统各自可以被实施有不同的存储器单元类型和不同的存储剪切。在本文档的一个早前章节中所披露的自底向上和自上而下法可以用于创建分级智能存储器设计。
在阶段1115生成一个潜在存储器系统设计集和在阶段1120生成一个特定的存储器系统设计的一个实现方式集之后,自动系统开始分析每个可能的存储器系统实现方式。在阶段1125,该自动系统获得生成一个特定的实现方式的一个模型所需要的数据。这些数据可以从以下获得:一个智能存储器系统的设计模版,物理存储器编译器、存储器数据表以及所需要的信息的任何其他来源。这个信息用于在阶段1130创建并且测试该存储器系统模型。该模型将会提供有关存储器系统实现方式的信息,如物理度量标准(物理尺寸、形状、互连器、制造工艺要求等)、操作度量标准(功耗、温度限制等)以及性能度量标准(最大时钟速度、访问速度等)。
然后在阶段1135将来自所生成的存储器系统模型的信息与这些存储器系统要求进行比较。这个分析可以由存储器设计优化器1020来执行。看似有希望的一些存储器系统设计实际上可能不会提供所需要的存储器性能或落在一个等待时间限制内。例如使用两层智能存储器系统构建的一个分级智能存储器系统,这两层都在一个具体存储器请求的读出等待时间约束之下,可以组合超过该存储器系统所需要的总体等待时间限制。对于其他存储器系统设计,一些实现方式将会符合所要求的规范,而同一设计的其他实现方式将不会。自动系统在阶段1137将会放弃未能符合所要求的特性的这些存储器系统实现方式。该自动系统在阶段1139将会保留实现所要求的特性的这些存储器系统实现方式。这被描绘为将该存储器系统实现方式存储在图10中的潜在设计存储1025之中。对于每个所保存的实现方式来说,该自动系统将会存储整体存储器系统设计连同详细的实现方式信息,如智能存储器系统参数、存储器单元类型、存储器系统剪切等。
然后,在阶段1140,该系统确定那是否是一个具体存储器系统设计的最后可能的实现方式。如果它不是最后的实现方式,那么该系统在阶段1145移动至该存储器系统设计的下一个可能的实现方式并且返回至阶段1125来测试该特定存储器系统设计的下一个实现方式。
如果那是最优实现方式可能性,那么该自动系统在阶段1150确定是否每一个可能的存储器设计类型已经被测试。如果它不是最后的存储器设计类型,那么该存储器设计系统在阶段1155移动至下一个可能的存储器系统设计并且返回至阶段1120来开始对该潜在存储器系统设计的所有不同的实现方式进行测试。
在考虑所有这些不同的存储器系统设计和每个存储器系统设计的不同实现方式之后,该自动存储器设计系统将会具有符合由该集成电路设计师所提供的这些要求的潜在存储器系统实现方式的一个集合。然而,这些存储器系统设计中的许多可能不是良好的候选解决方案。例如,一些存储器系统实现方式可以实现这些要求,但是相比一个潜在存储器系统实现方式集中的其他实现方式却具有在每个方面都更差的特性。可以将与该集中的另一个实现方式相比在每一个度量标准上都更差的这类存储器系统实现方式从潜在的存储器系统实现方式的列表去掉。
然后在阶段1160可以使用由集成电路设计师所提供的一些具体的度量标准来存储剩余的存储器系统实现方式。这可以由图10的候选选择模块1070来执行。例如,在集成电路布局面积上非常短的一个集成设计师可以按照布局面积对这些潜在实现方式进行分类。类似地,创建必须在有限的电池功率上进行操作的一个便携式计算机系统的一个设计师可以按照这些潜在存储器系统实现方式的功耗对它们进行分类。其他性能和物理度量标准(可能被认为是重要的)包括:等待时间、访问时间、可靠性以及制造良率。
最终,在阶段1170,向该设计师呈现一个列表中的按照由该设计师所选择的一个度量标准被分类的最佳存储器系统实现方式。每个存储器系统实现方式可以连同限定该特定实现方式的一个列表被呈现。一个设计师可以就多于一个的度量标准进行优化,这样使得该设计师可以选择以下一个存储器系统设计:在任一个度量标准上都不是最优的,但是却提供对于该集成电路设计师来说重要的各种度量标准的一个良好平衡。
以上技术披露内容旨在是说明性的并且不是限制性的。例如,以上描述的这些实施例(或其一个或多个方面)可以与彼此组合使用。在回顾以上说明时,其他实施例对于本领域的普通技术人员将会是清楚的。因此,权利要求书的范围是参照所附权利要求书、连同这类权利要求向其授予权利的等效物的全范围来确定的。在所附权利要求书中,术语“包括(including)”和“其中(inwhich)”分别用作“包括(comprising)”和“其中(wherein)”的通俗英语的等效物。同样,在以上权利要求中,术语“包括”是开放式的,也就是说,在一项权利要求中,包括除了列在这样一个术语之后的那些之外的多个元素的一个系统、装置、物品或程序仍被认为落在那项权利要求的范围内。另外,在以上权利要求书中,术语“第一”、“第二”以及““第三”等仅用作标号,并且不旨将许多要求强加在它们的主语上。
摘要被提供遵守要求允许读者快速地确认本技术披露内容的性质的37C.F.R.§1.72(b)。本摘要在理解以下的情况被提交:该摘要将不会用于解释或限制权利要求书的范围或意义。同样,在以上详细说明中,各种特征可以被分组在一起以使本披露内容合理化。这不应当被解释为意图:一个未被要求的所披露的特征对于任一项权利要求来说是必要的。更正确地说,发明的主题可以在于少于一个特定的所披露的实施例的所有特征。因此,以上权利要求特此被结合到详细说明中,其中每项权利要求自身作为一个单独实施方案而存在。

Claims (10)

1.一种设计数字存储器系统的方法,所述方法包括:
从一个电路设计师接收一个所希望的存储器系统性能特征集;
生成符合所述所希望的存储器系统性能特征的多种可能的存储器设计,所述多种可能的存储器设计中的至少一种包括
至少一个智能存储器控制器,所述智能存储器控制器进行存储器算法以选择存储位置,以及
至少一个基本存储器电路,所述基本存储器电路用于存储数据;
选择所述多种可能的存储器设计的一个子集,所述多种可能的存储器设计的所述子集针对一个优化参数集而被优化;并且
输出所述多种可能的存储器设计的所述子集。
2.如权利要求1所述的设计数字存储器系统的方法,所述方法进一步包括:
从所述电路设计师接收所述优化参数集。
3.如权利要求1所述的设计数字存储器系统的方法,其中生成多种可能的存储器设计包括:
列举可以实现所述所希望的存储器系统性能特征集的一个存储器设计类型集;并且
优化所述存储器设计类型集的实现方式以便创建所述多种可能的存储器设计。
4.如权利要求3所述的设计数字存储器系统的方法,其中所述存储器设计类型包括多种传统存储器系统。
5.如权利要求3所述的设计数字存储器系统的方法,其中所述存储器设计类型包括多种智能存储器系统。
6.如权利要求3所述的设计数字存储器系统的方法,其中所述存储器设计类型包括多种分级智能存储器系统。
7.如权利要求3所述的设计数字存储器系统的方法,其中优化所述存储器设计类型集的实现方式包括:调用一个存储器图块优化器,该存储器图块优化器通过组合多个选定的基本物理存储器模块而生成多个优化的存储器模块。
8.如权利要求7所述的设计数字存储器系统的方法,其中所述基本物理存储器模块是从一个物理存储器编译器获得的。
9.如权利要求3所述的设计数字存储器系统的方法,其中优化所述存储器设计类型集包括:调用一个存储器压缩优化器,该存储器压缩优化器通过将多于一个数据项压缩至一个传统存储器模块的每一个数据字中而生成优化的存储器模块。
10.如权利要求9所述的设计数字存储器系统的方法,其中所述传统存储器模块是从一个物理存储器编译器获得的。
CN201180049561.5A 2010-08-23 2011-08-23 智能存储器系统编译器 Active CN103314378B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/806,946 US8589851B2 (en) 2009-12-15 2010-08-23 Intelligent memory system compiler
US12/806,946 2010-08-23
PCT/US2011/001477 WO2012026975A1 (en) 2010-08-23 2011-08-23 Intelligent memory system compiler

Publications (2)

Publication Number Publication Date
CN103314378A CN103314378A (zh) 2013-09-18
CN103314378B true CN103314378B (zh) 2016-08-03

Family

ID=45725581

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180049561.5A Active CN103314378B (zh) 2010-08-23 2011-08-23 智能存储器系统编译器

Country Status (3)

Country Link
US (2) US8589851B2 (zh)
CN (1) CN103314378B (zh)
WO (1) WO2012026975A1 (zh)

Families Citing this family (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9224496B2 (en) 2010-08-11 2015-12-29 Shine C. Chung Circuit and system of aggregated area anti-fuse in CMOS processes
US9070437B2 (en) 2010-08-20 2015-06-30 Shine C. Chung Circuit and system of using junction diode as program selector for one-time programmable devices with heat sink
US9460807B2 (en) 2010-08-20 2016-10-04 Shine C. Chung One-time programmable memory devices using FinFET technology
US9824768B2 (en) 2015-03-22 2017-11-21 Attopsemi Technology Co., Ltd Integrated OTP memory for providing MTP memory
US9042153B2 (en) 2010-08-20 2015-05-26 Shine C. Chung Programmable resistive memory unit with multiple cells to improve yield and reliability
US9496033B2 (en) 2010-08-20 2016-11-15 Attopsemi Technology Co., Ltd Method and system of programmable resistive devices with read capability using a low supply voltage
US10249379B2 (en) 2010-08-20 2019-04-02 Attopsemi Technology Co., Ltd One-time programmable devices having program selector for electrical fuses with extended area
US8804398B2 (en) 2010-08-20 2014-08-12 Shine C. Chung Reversible resistive memory using diodes formed in CMOS processes as program selectors
US9818478B2 (en) 2012-12-07 2017-11-14 Attopsemi Technology Co., Ltd Programmable resistive device and memory using diode as selector
US10923204B2 (en) 2010-08-20 2021-02-16 Attopsemi Technology Co., Ltd Fully testible OTP memory
US9431127B2 (en) 2010-08-20 2016-08-30 Shine C. Chung Circuit and system of using junction diode as program selector for metal fuses for one-time programmable devices
US10229746B2 (en) 2010-08-20 2019-03-12 Attopsemi Technology Co., Ltd OTP memory with high data security
US8830720B2 (en) 2010-08-20 2014-09-09 Shine C. Chung Circuit and system of using junction diode as program selector and MOS as read selector for one-time programmable devices
US8488359B2 (en) 2010-08-20 2013-07-16 Shine C. Chung Circuit and system of using junction diode as program selector for one-time programmable devices
US9236141B2 (en) 2010-08-20 2016-01-12 Shine C. Chung Circuit and system of using junction diode of MOS as program selector for programmable resistive devices
US9019742B2 (en) 2010-08-20 2015-04-28 Shine C. Chung Multiple-state one-time programmable (OTP) memory to function as multi-time programmable (MTP) memory
US9251893B2 (en) 2010-08-20 2016-02-02 Shine C. Chung Multiple-bit programmable resistive memory using diode as program selector
US8644049B2 (en) 2010-08-20 2014-02-04 Shine C. Chung Circuit and system of using polysilicon diode as program selector for one-time programmable devices
US9711237B2 (en) 2010-08-20 2017-07-18 Attopsemi Technology Co., Ltd. Method and structure for reliable electrical fuse programming
US10916317B2 (en) 2010-08-20 2021-02-09 Attopsemi Technology Co., Ltd Programmable resistance memory on thin film transistor technology
US9025357B2 (en) 2010-08-20 2015-05-05 Shine C. Chung Programmable resistive memory unit with data and reference cells
US9019791B2 (en) 2010-11-03 2015-04-28 Shine C. Chung Low-pin-count non-volatile memory interface for 3D IC
US8923085B2 (en) 2010-11-03 2014-12-30 Shine C. Chung Low-pin-count non-volatile memory embedded in a integrated circuit without any additional pins for access
US8988965B2 (en) 2010-11-03 2015-03-24 Shine C. Chung Low-pin-count non-volatile memory interface
US8913449B2 (en) 2012-03-11 2014-12-16 Shine C. Chung System and method of in-system repairs or configurations for memories
CN102544011A (zh) 2010-12-08 2012-07-04 庄建祥 反熔丝存储器及电子系统
US8848423B2 (en) 2011-02-14 2014-09-30 Shine C. Chung Circuit and system of using FinFET for building programmable resistive devices
US10192615B2 (en) 2011-02-14 2019-01-29 Attopsemi Technology Co., Ltd One-time programmable devices having a semiconductor fin structure with a divided active region
US10586832B2 (en) 2011-02-14 2020-03-10 Attopsemi Technology Co., Ltd One-time programmable devices using gate-all-around structures
US8607019B2 (en) * 2011-02-15 2013-12-10 Shine C. Chung Circuit and method of a memory compiler based on subtractive approach
EP3446714B1 (en) 2011-06-02 2021-03-31 University of Louisville Research Foundation, Inc. Anti-nucleolin agent-conjugated nanoparticles
US8912576B2 (en) 2011-11-15 2014-12-16 Shine C. Chung Structures and techniques for using semiconductor body to construct bipolar junction transistors
US9324849B2 (en) 2011-11-15 2016-04-26 Shine C. Chung Structures and techniques for using semiconductor body to construct SCR, DIAC, or TRIAC
US9136261B2 (en) 2011-11-15 2015-09-15 Shine C. Chung Structures and techniques for using mesh-structure diodes for electro-static discharge (ESD) protection
US9830133B1 (en) * 2011-12-12 2017-11-28 Significs And Elements, Llc Methods and apparatus for automatic communication optimizations in a compiler based on a polyhedral representation
CN103988140B (zh) * 2011-12-22 2017-08-11 英特尔公司 利用封装上的输入/输出接口互连在封装中封装的芯片与晶片
US8917533B2 (en) 2012-02-06 2014-12-23 Shine C. Chung Circuit and system for testing a one-time programmable (OTP) memory
US8861249B2 (en) 2012-02-06 2014-10-14 Shine C. Chung Circuit and system of a low density one-time programmable memory
US9007804B2 (en) 2012-02-06 2015-04-14 Shine C. Chung Circuit and system of protective mechanisms for programmable resistive memories
CN103455281B (zh) * 2012-05-30 2018-01-09 博科通讯系统有限公司 由单端口存储器块实现的两端口存储器
US9076526B2 (en) 2012-09-10 2015-07-07 Shine C. Chung OTP memories functioning as an MTP memory
US9183897B2 (en) 2012-09-30 2015-11-10 Shine C. Chung Circuits and methods of a self-timed high speed SRAM
TWI463432B (zh) * 2012-10-05 2014-12-01 Genesys Logic Inc 圖像資料處理方法
US9324447B2 (en) 2012-11-20 2016-04-26 Shine C. Chung Circuit and system for concurrently programming multiple bits of OTP memory devices
US9063967B2 (en) * 2013-01-10 2015-06-23 Pure Storage, Inc. Performing copies in a storage system
US10908835B1 (en) 2013-01-10 2021-02-02 Pure Storage, Inc. Reversing deletion of a virtual machine
US11733908B2 (en) 2013-01-10 2023-08-22 Pure Storage, Inc. Delaying deletion of a dataset
US9275723B2 (en) 2013-04-10 2016-03-01 Zeno Semiconductor, Inc. Scalable floating body memory cell for memory compilers and method of using floating body memories with memory compilers
US8924899B2 (en) * 2013-05-23 2014-12-30 Daniel Jakob Seidner System and method for universal control of electronic devices
US9767051B2 (en) * 2014-04-04 2017-09-19 Tidal Systems, Inc. Scalable, parameterizable, and script-generatable buffer manager architecture
US9412473B2 (en) 2014-06-16 2016-08-09 Shine C. Chung System and method of a novel redundancy scheme for OTP
US9852250B2 (en) * 2015-02-20 2017-12-26 Esilicon Corporation Memory optimization in VLSI design using generic memory models
CN105988078B (zh) * 2015-02-28 2020-03-24 智恒(厦门)微电子有限公司 一种实现单线可编程电路的方法和系统
US9915942B2 (en) * 2015-03-20 2018-03-13 International Business Machines Corporation System and method for identifying significant and consumable-insensitive trace features
WO2016179394A1 (en) 2015-05-05 2016-11-10 Malik Mohammad Tariq Anti-nucleolin agent-conjugated nanoparticles as radio-sensitizers and mri and/or x-ray contrast agents
US10013212B2 (en) * 2015-11-30 2018-07-03 Samsung Electronics Co., Ltd. System architecture with memory channel DRAM FPGA module
CN106302260B (zh) * 2016-07-28 2019-08-02 盛科网络(苏州)有限公司 4个读端口4个写端口全共享报文的数据缓存处理方法及数据处理系统
CN106250321B (zh) * 2016-07-28 2019-03-01 盛科网络(苏州)有限公司 2r1w存储器的数据处理方法及数据处理系统
CN106874577A (zh) * 2017-01-20 2017-06-20 上海新储集成电路有限公司 一种存储器编译器
US10726914B2 (en) 2017-04-14 2020-07-28 Attopsemi Technology Co. Ltd Programmable resistive memories with low power read operation and novel sensing scheme
US10535413B2 (en) 2017-04-14 2020-01-14 Attopsemi Technology Co., Ltd Low power read operation for programmable resistive memories
US11062786B2 (en) 2017-04-14 2021-07-13 Attopsemi Technology Co., Ltd One-time programmable memories with low power read operation and novel sensing scheme
US11615859B2 (en) 2017-04-14 2023-03-28 Attopsemi Technology Co., Ltd One-time programmable memories with ultra-low power read operation and novel sensing scheme
US10770160B2 (en) 2017-11-30 2020-09-08 Attopsemi Technology Co., Ltd Programmable resistive memory formed by bit slices from a standard cell library
US10764455B2 (en) * 2018-12-31 2020-09-01 Kyocera Document Solutions Inc. Memory control method, memory control apparatus, and image forming method that uses memory control method
US11409671B2 (en) 2019-09-19 2022-08-09 Facebook Technologies, Llc Artificial reality system having multi-bank, multi-port distributed shared memory
US11520707B2 (en) 2019-11-15 2022-12-06 Meta Platforms Technologies, Llc System on a chip (SoC) communications to prevent direct memory access (DMA) attacks
US11196846B2 (en) 2019-11-15 2021-12-07 Facebook Technologies, Llc Inline encryption of packet data in a wireless communication system
US11190892B2 (en) 2019-11-20 2021-11-30 Facebook Technologies, Llc Audio sample phase alignment in an artificial reality system
FR3107127B1 (fr) * 2020-02-07 2023-03-24 Commissariat Energie Atomique Procédé et dispositif de conception d’un circuit mémoire calculatoire
US20220012392A1 (en) * 2020-07-10 2022-01-13 Taiwan Semiconductor Manufacturing Company Limited Systems and Methods for Generating Synthesizable Netlists From Register Transfer Level Designs
US20240069788A1 (en) * 2022-08-31 2024-02-29 Micron Technology, Inc. Filtering metrics associated with memory

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1658174A (zh) * 2003-10-17 2005-08-24 株式会社瑞萨科技 用于智能存储器通过通信的方法和设备
CN101071398A (zh) * 2006-05-10 2007-11-14 英特尔公司 多处理器系统上的分散-收集智能存储器体系结构
US7694083B1 (en) * 2006-03-08 2010-04-06 Tabula, Inc. System and method for providing a virtual memory architecture narrower and deeper than a physical memory architecture

Family Cites Families (106)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3810010A (en) * 1968-11-02 1974-05-07 Telefunken Patent Particle analysis method and apparatus wherein liquid containing particles is sucked into a constricted flow path
US4327177A (en) * 1969-04-10 1982-04-27 Wallace Shrimpton Method and means for controlling the sex of mammalian offspring and product therefor
US3788744A (en) * 1970-01-14 1974-01-29 Bio Physics Systems Inc Method and apparatus for photoanalysis
US3791384A (en) * 1971-07-15 1974-02-12 Schaumann H Artificial insemination of sows
BE793185A (fr) * 1971-12-23 1973-04-16 Atomic Energy Commission Appareil pour analyser et trier rapidement des particules telles que des cellules biologiques
US3791517A (en) * 1973-03-05 1974-02-12 Bio Physics Systems Inc Digital fluidic amplifier particle sorter
USRE29141E (en) * 1973-06-14 1977-02-22 Coulter Electronics, Inc. Apparatus for orienting generally flat particles for sensing
US3947093A (en) * 1973-06-28 1976-03-30 Canon Kabushiki Kaisha Optical device for producing a minute light beam
US3877430A (en) * 1974-07-17 1975-04-15 Horst K Wieder Artificial insemination apparatus
US4448767A (en) * 1977-10-11 1984-05-15 Sumar Corporation Preparation of monospecific male-specific antibody and the use thereof for increasing the percentage of mammalian offspring of either sex
US4191749A (en) * 1977-10-11 1980-03-04 Bryant Bernard J Method and material for increasing the percentage of mammalian offspring of either sex
US4189236A (en) * 1978-03-20 1980-02-19 Coulter Electronics, Inc. Ellipsoid-conic radiation collector and method
US4267268A (en) * 1979-03-12 1981-05-12 Nelson Jr Robert A Spermatozoa extenders
US4200802A (en) * 1979-03-28 1980-04-29 The United States Of America As Represented By The United States Department Of Energy Parabolic cell analyzer
US4255021A (en) * 1979-04-20 1981-03-10 The United States Of America As Represented By The United States Department Of Energy Optical device with conical input and output prism faces
US4263508A (en) * 1979-04-20 1981-04-21 Research Corporation Pulse edge measurement for determining particle dimensional characteristics
US4317520A (en) * 1979-08-20 1982-03-02 Ortho Diagnostics, Inc. Servo system to control the spatial position of droplet formation of a fluid jet in a cell sorting apparatus
US4318481A (en) * 1979-08-20 1982-03-09 Ortho Diagnostics, Inc. Method for automatically setting the correct phase of the charge pulses in an electrostatic flow sorter
US4318482A (en) * 1979-08-20 1982-03-09 Ortho Diagnostics, Inc. Method for measuring the velocity of a perturbed jetting fluid in an electrostatic particle sorting system
US4325483A (en) * 1979-08-20 1982-04-20 Ortho Diagnostics, Inc. Method for detecting and controlling flow rates of the droplet forming stream of an electrostatic particle sorting apparatus
US4318480A (en) * 1979-08-20 1982-03-09 Ortho Diagnostics, Inc. Method and apparatus for positioning the point of droplet formation in the jetting fluid of an electrostatic sorting device
US4367043A (en) * 1980-05-05 1983-01-04 Leland Stanford Junior University Method and means for delivering liquid samples to a sample scanning device
US4818103A (en) * 1981-05-15 1989-04-04 Ratcom Flow cytometry
US4515274A (en) * 1981-12-02 1985-05-07 Coulter Corporation Particle analyzing and sorting apparatus
US4511661A (en) * 1982-03-19 1985-04-16 University Patents, Inc. ATCC HB8116 And its monoclonal anti-H-Y antibody, Hyclonalan
US4498766A (en) * 1982-03-25 1985-02-12 Becton, Dickinson And Company Light beam focal spot elongation in flow cytometry devices
US4501366A (en) * 1982-12-14 1985-02-26 Adolph Coors Company Photomultiplier tube assembly
DE3372137D1 (en) * 1982-12-21 1987-07-23 Crosfield Electronics Ltd Light beam-splitter
US4492436A (en) * 1983-01-03 1985-01-08 At&T Bell Laboratories Polarization independent beam splitter
JPS59143146A (ja) * 1983-02-07 1984-08-16 Nippon Kogaku Kk <Nikon> ミラ−集光型照明光学系
US4585736A (en) * 1983-10-18 1986-04-29 The United States Of America As Represented By The United States Department Of Energy Flow cytometric measurement of total DNA and incorporated halodeoxyuridine
US4573796A (en) * 1984-01-06 1986-03-04 The United States Of America As Represented By The United States Department Of Energy Apparatus for eliminating background interference in fluorescence measurements
US4660971A (en) * 1984-05-03 1987-04-28 Becton, Dickinson And Company Optical features of flow cytometry apparatus
FR2563726B1 (fr) * 1984-05-04 1986-10-10 Robert Cassou Appareil d'insemination artificielle, notamment des carnivores
US4661913A (en) * 1984-09-11 1987-04-28 Becton, Dickinson And Company Apparatus and method for the detection and classification of articles using flow cytometry techniques
US4662742A (en) * 1985-05-10 1987-05-05 Becton, Dickinson And Company Scatter/fluorescene beam splitter in a flow cytometry apparatus
US4744090A (en) * 1985-07-08 1988-05-10 Trw Inc. High-extraction efficiency annular resonator
NO156916C (no) * 1985-07-10 1987-12-16 Harald B Steen Stroemningskammer for vaeskestroemsfotometer.
NO156917C (no) * 1985-07-16 1987-12-16 Harald B Steen Anordning for maaling av biologiske cellers lysspredning i vaeskestroemsfotometere.
US4989977A (en) * 1985-07-29 1991-02-05 Becton, Dickinson And Company Flow cytometry apparatus with improved light beam adjustment
US4999283A (en) * 1986-01-10 1991-03-12 University Of Kentucky Research Foundation Method for x and y spermatozoa separation
NL8601000A (nl) * 1986-04-21 1987-11-16 Jan Greve T H Twente Afdeling Het gebruik van gepolariseerd licht in stromingscytometrie.
US4983038A (en) * 1987-04-08 1991-01-08 Hitachi, Ltd. Sheath flow type flow-cell device
JPS63262565A (ja) * 1987-04-20 1988-10-28 Hitachi Ltd フロ−セル
FR2614626B1 (fr) * 1987-04-30 1989-07-21 Ranoux Claude Conteneur pour fecondation des ovocytes et replacement des embryons chez l'homme et l'animal
US4987539A (en) * 1987-08-05 1991-01-22 Stanford University Apparatus and method for multidimensional characterization of objects in real time
US4796788A (en) * 1987-08-26 1989-01-10 Liqui-Box Corporation Bag-in-box packaging and dispensing of substances which will not readily flow by gravity
US4831385A (en) * 1987-10-14 1989-05-16 Burlington Industries, Inc. Vacuum tray fluid-jet start-up system
US5712807A (en) * 1987-10-21 1998-01-27 Bangham; James Andrew Pulse analyzing method and apparatus
GB8726304D0 (en) * 1987-11-10 1987-12-16 Secr Defence Particle asymmetry analyser
US4988619A (en) * 1987-11-30 1991-01-29 United States Department Of Energy Flow cytometry apparatus
US5622820A (en) * 1988-03-10 1997-04-22 City Of Hope Method for amplification and detection of RNA and DNA sequences
JPH0718785B2 (ja) * 1988-09-19 1995-03-06 株式会社日立製作所 フローセル装置
US5726009A (en) * 1989-03-20 1998-03-10 Anticancer, Inc. Native-state method and system for determining viability and proliferative capacity of tissues in vitro
US4981580A (en) * 1989-05-01 1991-01-01 Coulter Corporation Coincidence arbitration in a flow cytomery sorting system
JPH0353164A (ja) * 1989-07-20 1991-03-07 Canon Inc サンプル供給装置及びこれを用いたサンプル測定装置
US5098657A (en) * 1989-08-07 1992-03-24 Tsi Incorporated Apparatus for measuring impurity concentrations in a liquid
US5005981A (en) * 1989-09-08 1991-04-09 Becton, Dickinson And Company Apparatus for method for causing vortices in a test tube
JP2808321B2 (ja) * 1989-09-19 1998-10-08 東亜医用電子株式会社 細胞分析方法及び装置
US5275787A (en) * 1989-10-04 1994-01-04 Canon Kabushiki Kaisha Apparatus for separating or measuring particles to be examined in a sample fluid
DE69025256T2 (de) * 1989-10-11 1996-06-27 Canon Kk Gerät und Verfahren zur Trennung von Teilchen aus flüssigkeitssuspendierten Teilchen in Zusammenhang mit deren Eigenschaften
US5101978A (en) * 1989-11-27 1992-04-07 The United States Of America As Represented By The Secretary Of The Army Fluidic sorting device for two or more materials suspended in a fluid
DE69118429T2 (de) * 1990-01-26 1996-09-12 Canon Kk Verfahren zur Messung einer Spezies unter Verwendung von Fluoreszenzlicht
US5492534A (en) * 1990-04-02 1996-02-20 Pharmetrix Corporation Controlled release portable pump
US5087295A (en) * 1990-06-13 1992-02-11 Becton Dickinson And Company Cleaning cycle for flow cytometers
US5204884A (en) * 1991-03-18 1993-04-20 University Of Rochester System for high-speed measurement and sorting of particles
US5116125A (en) * 1990-10-31 1992-05-26 Biophos Medical Ab Fertility analyzer
US5199576A (en) * 1991-04-05 1993-04-06 University Of Rochester System for flexibly sorting particles
DE9107792U1 (de) * 1991-06-25 1991-09-12 Labotect-Labor-Technik, Göttingen, GmbH, 3406 Bovenden Instrumentensatz zum uterinen Embryonentransfer
US5488469A (en) * 1991-08-30 1996-01-30 Omron Corporation Cell analyzing apparatus
US5400179A (en) * 1992-02-18 1995-03-21 Asahi Kogaku Kogyo Kabushiki Kaisha Optical multilayer thin film and beam splitter
US5298967A (en) * 1992-06-02 1994-03-29 Pacific Scientific Company Measurement of concentrations of dissolved solvent
US5315122A (en) * 1992-08-25 1994-05-24 Becton, Dickinson And Company Apparatus and method for fluorescent lifetime measurement
US5395588A (en) * 1992-12-14 1995-03-07 Becton Dickinson And Company Control of flow cytometer having vacuum fluidics
US5494795A (en) * 1993-05-05 1996-02-27 The United States Of America As Represented By The Secretary Of The Navy Specific oligonucleotide primers for detection of pathogenic campylobacter bacteria by polymerase chain reaction
JPH08501718A (ja) * 1993-06-04 1996-02-27 クワハック・インターナショナル・カンパニー・リミテッド 人工受精及び受精卵移植装置
NO932088L (no) * 1993-06-08 1995-01-05 Oddbjoern Gjelsnes Anordning for anvendelse ved væskeströmscytometri
US5483469A (en) * 1993-08-02 1996-01-09 The Regents Of The University Of California Multiple sort flow cytometer
EP0649014B1 (en) * 1993-09-16 2005-11-23 Sysmex Corporation Particle analyzing apparatus
US5503994A (en) * 1993-10-08 1996-04-02 The Board Of Trustees Of The Leland Stanford Junior University System for sample detection with compensation for difference in sensitivity to detection of components moving at different velocities
US5480774A (en) * 1993-10-14 1996-01-02 A/F Protein, Inc. Determination of genomic sex in salmonids
GB9324938D0 (en) * 1993-12-04 1994-01-26 Atomic Energy Authority Uk Aerosol generator
DE4419894A1 (de) * 1994-06-07 1995-12-14 Gip Medizin Technik Gmbh Endoskopische Punktionsnadelvorrichtung
US5601234A (en) * 1994-08-01 1997-02-11 Abbott Laboratories Fluid nozzle and method of introducing a fluid
US5602349A (en) * 1994-10-14 1997-02-11 The University Of Washington Sample introduction system for a flow cytometer
US5602039A (en) * 1994-10-14 1997-02-11 The University Of Washington Flow cytometer jet monitor system
JP3347495B2 (ja) * 1994-11-14 2002-11-20 シスメックス株式会社 粒子分析装置
US5495719A (en) * 1994-11-14 1996-03-05 Gray, Jr.; Carl O. Method of preserving spermatozoa
US5608519A (en) * 1995-03-20 1997-03-04 Gourley; Paul L. Laser apparatus and method for microscopic and spectroscopic analysis and processing of biological cells
US5620842A (en) * 1995-03-29 1997-04-15 Becton Dickinson And Company Determination of the number of fluorescent molecules on calibration beads for flow cytometry
FR2734637B1 (fr) * 1995-05-24 1997-08-14 Abx Sa Dispositif d'inspection optique d'un fluide, notamment pour analyses hematologiques
US5726751A (en) * 1995-09-27 1998-03-10 University Of Washington Silicon microchannel optical flow cytometer
US5736330A (en) * 1995-10-11 1998-04-07 Luminex Corporation Method and compositions for flow cytometric determination of DNA sequences
JP3584108B2 (ja) * 1996-01-08 2004-11-04 キヤノン株式会社 レンズ鏡筒
US5707808A (en) * 1996-04-15 1998-01-13 The Regents Of The University Of California Optical selection and collection of DNA fragments
US5664713A (en) * 1996-06-17 1997-09-09 Burgstahler; Karl F. Crutch holder
US5719667A (en) * 1996-07-30 1998-02-17 Bayer Corporation Apparatus for filtering a laser beam in an analytical instrument
US5745308A (en) * 1996-07-30 1998-04-28 Bayer Corporation Methods and apparatus for an optical illuminator assembly and its alignment
US5883378A (en) * 1996-07-30 1999-03-16 Bayer Corporation Apparatus and methods for transmitting electrical signals indicative of optical interactions between a light beam and a flowing suspension of particles
US6249901B1 (en) * 1996-12-13 2001-06-19 Legend Design Technology, Inc. Memory characterization system
US9274586B2 (en) * 2004-09-08 2016-03-01 Cisco Technology, Inc. Intelligent memory interface
US7305640B1 (en) * 2004-11-12 2007-12-04 Altera Corporation Programmable soft macro memory using gate array base cells
JP2009505171A (ja) * 2005-06-27 2009-02-05 イコア コーポレイション ステートフルなトランザクション指向のシステムを指定する方法、及び半導体デバイスの構造的に構成可能なイン・メモリ処理へ柔軟にマッピングする装置
US8239182B2 (en) * 2007-12-04 2012-08-07 Spansion Llc Data transmission system-on-chip memory model based validation
US8122421B2 (en) * 2008-08-14 2012-02-21 Omnivision Technologies, Inc. System, and method, and computer readable medium for designing a scalable clustered storage integrated circuit for multi-media processing
US8104000B2 (en) * 2008-10-27 2012-01-24 Synopsys, Inc. Method and apparatus for memory abstraction and for word level net list reduction and verification using same

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1658174A (zh) * 2003-10-17 2005-08-24 株式会社瑞萨科技 用于智能存储器通过通信的方法和设备
US7694083B1 (en) * 2006-03-08 2010-04-06 Tabula, Inc. System and method for providing a virtual memory architecture narrower and deeper than a physical memory architecture
CN101071398A (zh) * 2006-05-10 2007-11-14 英特尔公司 多处理器系统上的分散-收集智能存储器体系结构

Also Published As

Publication number Publication date
WO2012026975A1 (en) 2012-03-01
CN103314378A (zh) 2013-09-18
US20160179394A1 (en) 2016-06-23
US20110145777A1 (en) 2011-06-16
US8589851B2 (en) 2013-11-19
US9678669B2 (en) 2017-06-13

Similar Documents

Publication Publication Date Title
CN103314378B (zh) 智能存储器系统编译器
Abdi et al. A GPU-accelerated continuous and discontinuous Galerkin non-hydrostatic atmospheric model
Aubry et al. Some useful strategies for unstructured edge‐based solvers on shared memory machines
Bender et al. Two-level main memory co-design: Multi-threaded algorithmic primitives, analysis, and simulation
Spataro et al. The new SCIARA-fv3 numerical model and acceleration by GPGPU strategies
Lee et al. Buffered compares: Excavating the hidden parallelism inside DRAM architectures with lightweight logic
Campero Durand et al. Automated vertical partitioning with deep reinforcement learning
Debacker et al. Vertical M1 routing-aware detailed placement for congestion and wirelength reduction in sub-10nm nodes
Hajimiri et al. Dynamic cache tuning for efficient memory based computing in multicore architectures
Wu et al. A novel high performance and energy efficient NUCA architecture for STT-MRAM LLCs with thermal consideration
US20230297331A1 (en) System and method for fast and efficient max/min searching in dram
Al-Kharusi et al. Locality properties of 3D data orderings with application to parallel molecular dynamics simulations
Peng et al. A proximal alternating direction method of multipliers for a minimization problem with nonconvex constraints
Pichler et al. Finite element method completely implemented for graphic processor units using parallel algorithm libraries
Marinelli et al. Microarchitectural exploration of STT-MRAM last-level cache parameters for energy-efficient devices
Baloukas et al. Optimization methodology of dynamic data structures based on genetic algorithms for multimedia embedded systems
Evans et al. Performance analysis of fully explicit and fully implicit solvers within a spectral element shallow-water atmosphere model
Vu et al. A novel processing platform for post tape out flows
Resch et al. High performance computing: challenges and risks for the future
US20230126888A1 (en) Computation of weakly connected components in a parallel, scalable and deterministic manner
US11847396B1 (en) Integrated circuit design using multi-bit combinational cells
US11630934B1 (en) Integrated circuit analysis using a multi-level data hierarchy implemented on a distributed compute and data infrastructure
Zhang et al. DeStager: feature guided in-situ data management in distributed deep memory hierarchies
US20230252208A1 (en) Transforming a logical netlist into a hierarchical parasitic netlist
Nawinne et al. Switchable cache: utilising dark silicon for application specific cache optimisations

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: 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: VIHANA, Inc.

Address before: California, USA

Applicant before: Memory Systems Ltd.

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: APPLICANT; FROM: MEMOIR SYSTEMS, INC. TO: MEMORY SYSTEMS LLC

Free format text: CORRECT: ADDRESS; FROM:

Free format text: CORRECT: APPLICANT; FROM: MEMORY SYSTEMS LLC TO: CISCO TECH IND

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.

C14 Grant of patent or utility model
GR01 Patent grant