基于快速存储器的主存储器 【发明领域】
本发明涉及计算机系统体系结构的领域。具体来说,本发明涉及采用大块可擦除非易失半导体存储器作为主存储器的计算机系统。
【发明背景】
由于现代计算机程序已变得越来越复杂,所以现代个人计算机系统也不得不变得越来越复杂,以便适应这些计算机程序。计算机程序由比以往代码指令多的大量代码指令组成,平均来说,当计算机程序正在被执行时,它们要求对较大量的数据文件进行访问,这些数据文件被读出和被写入。
一般来说,个人计算机系统的核心是在微处理器芯片上的中央处理单元(CPU)。为了使个人计算机能够以适时的方式执行更大的程序,以越来越高的操作速度运行的新的微处理器芯片不断地被开发。通常利用CMOS(互补金属一氧化物半导体)技术来开发这些微处理器芯片。CMOS芯片最大的功率消耗出现在时钟脉冲的前沿和后沿(即当时钟信号从低电压状态转换至较高电压状态和从较高电压状态转换至低电压状态时)。
一旦提高微处理器的操作速度,在一特定时间间隔内的时钟脉冲的个数就增多,于是增大了在这一时间间隔内微处理器的功耗。另外,微处理器产生了更多的热量,为了防止损坏计算机系统内的部件,必需消除这些热量。
在设计个人计算机系统时,功耗和散热都造成严重的问题。对于通常由电池后备的便携式计算机更是如此。计算机消耗的功率越多,计算机能够以给定容量的电池为动力运行的时间就越短。因此,随着计算机操作速度地提高,设计人员面临几种讨厌的可供选择的方案。
如果使用相同容量的电池,则一旦提高操作速度就必需减少计算机系统的有效操作时间。相反地,如果要保持有效操作时间不变,就或者必需增加额外的电池,这样会增大计算机的体积和重量,或者采用非常规的、因此是昂贵的电池技术(或者采用这两种方案)。
便携式计算机的趋势是更小、更快、更廉价和更轻便。因此,需要增加额外的电池、或采用更昂贵的电池是显然不利的。为了消除高速微处理器产生的更多的热量,增加冷却风扇或采用其它冷却技术的需求更加重了这种不利。
还有,因为微处理器以更高速度运行,所以它们能够在给定的时间内执行更多的指令,并因此同样能够在该段时间内处理更大量的数据。在具有快速微处理器的计算机系统中已出现了会妨碍有效地利用这种微处理器更高的速度的瓶颈。这种瓶颈是提供微处理器执行的指令的总线(或一些总线)以及微处理器在执行这些指令时将使用的数据。
如果下一条要被执行的指令在微处理器需要它时不能得到,则微处理器就必需在该所需指令被检索和被提供给微处理器期间不工作地等待(即插入等待周期)。另外,如果下一条要被执行的指令需要不是立即可被微处理器得到的数据,则微处理器也必需等待,直到该数据已被检索到为止。在这一空闲时间内,微处理器时钟继续变换其状态,于是不必要地消耗功率并产生必需被消除的热量。
为了减少微处理器遇到这些等待周期的频率,许多高性能微处理器都具有称为主高速缓存的小的内部高速缓存。经常要被执行的指令以及执行这些指令经常所需的数据被存储在该内部高速缓存内,因此它们可被微处理器的CPU立即进行访问。
计算机程序的顺序特性使得当程序内的某一指令被执行时,下一条要被执行的指令很可能将是跟在当前执行指令之后的指令。因此,当一指令要被执行时,就检查高速缓存,确定是否在该高速缓存内立即可得到该所需指令的拷贝。如果所需指令的拷贝存储在该高速缓存内(称为高速缓存选中),就能够立即把该指令的拷贝从该高速缓存提供给CPU,在指令从无论其存储在计算机系统的何处被检索至微处理器芯片期间,CPU不需要等待。
相反地,如果所需指令的拷贝没有存储在高速缓存内(称为高速缓存落空),则在指令从其存储在计算机系统的任何地方被检索至微处理器芯片期间,CPU就必需等待。实际上,不是只检索要被执行的下一条指令,而是通过检索要被执行的下一条指令以及跟在该要被执行的下一条指令之后的一定数目的指令而形成高速缓存存储界(cacheline)。因此,如果随后的指令实际上需要执行,CPU就可以立即从高速缓存存储界内得到它们。由于程序的顺序特性,利用高速缓存的好处同样适用于程序所使用的数据。
因为内部高速缓存每次被填充高速缓存存储界,所以许多微处理器能够以突发方式接受数据。在一般的成串读出中,微处理器规定要被读入到高速缓存存储界的数据或指令的第一地址。然后,存储在高速缓存存储界的地址处的数据或指令被顺序地从它们存储在计算机系统内的地方传送至微处理器。
经常利用静态随机存取存储器(SRAM)来形成微处理器的内部高速缓存。因为每一SRAM单元由6×8个晶体管组成,所以在一微处理器芯片上只能容纳相当小的SRAM高速缓存。此外,SRAM是易失的,即SRAM只有在有足够的电力进行工作时才保持所存储的信息。如果没有电源,SRAM高速缓存的内容将丢失。
某些微处理器是动态的,即如果它们被断电,则当恢复供电时,它们不能直接回复到断电时它们所处的状态。一旦恢复供电,必须重新初始化微处理器,将可能丢失以前执行过的至少某些处理步骤。
另一些微处理器是静态的,即它们可进入节能的深度省电状态,然后相当迅速地回复到就在它们进入该深度省电状态之前所处的状态。
如上所述,数据和指令被存储在计算机系统内,被通过一个(或多个)总线系统提供给微处理器。因为大部分相当快的随机存取存储器都是易失的和相当昂贵的,所以一般的计算机系统把代码和数据存储在例如软盘或硬盘这样的相当廉价的、非易失的存储器内。
因为非易失存储器的访问速度相当低,所以一般的计算机系统还有由易失存储器组成的主存储器。当要执行程序时,计算机系统利用称为遮蔽(shadowing)的技术把执行该程序所需的代码和数据从低速非易失存储器拷贝至较快的易失存储器。然后用主存储器内的阴影拷贝来执行程序。如果在程序执行过程中对阴影拷贝进行了任何改动,可以在程序结束执行时把该阴影拷贝回拷至较慢的非易失存储器。另外,因为预料之外的停电会造成易失主存储器内容的丢失,所以通常保存在程序执行过程中产生的中间结果。
最普通的主存储器是动态随机存取存储器(DRAM)。因为相同复杂度的DRAM存储的数据约是SRAM的4倍,所以即使它比SRAM慢,它也用得比SRAM广泛。
DRAM把信息存储在包含电容器的集成电路内。因为电容器随着时间的推移会失去它们的电荷,所以必需利用使DRAM芯片不断地“刷新”(再充电)的逻辑来控制DRAM。当DRAM正在被刷新时,它不能被微处理器读出或写入。因此,如果微处理器必需在DRAM正在被刷新时对其进行访问,就出现了一个或多个等待状态。
在某些计算机系统中,SRAM代替DRAM用作主存储器。利用SRAM作为主存储器的一个优点是与DRAM比可相对快地进行访问。另外,因为SRAM不需要被刷新,所以总是可被微处理器进行访问,于是消除了当在DRAM正在被刷新期间试图进行访问时微处理器必需包括等待状态的与DRAM相关的需要。还有,因为不必考虑对刷新周期进行控制,所以不需要刷新还简化了对具有基于SRAM的主存储器的计算机系统的设计。事实上,在电源出现故障时可用简单的备用电池来保留SRAM的内容。当然,如果该备用电池失效,SRAM主存储器的内容也将丢失。
不是完全利用SRAM来组成主存储器,而是通常利用DRAM来实现主存储器,然后用基于SRAM的外部高速缓存(即在微处理器芯片之外的高速缓存)来补充该基于DRAM的主存储器。因为外部高速缓存没有被包括在微处理器芯片上,所以通常可使其能够比内部高速缓存存储更多的数据和指令。但是,因为外部高速缓存不在微处理器芯片上,所以它必需利用通常构成数据和指令进入和离开该微处理器芯片的瓶颈的总线之一来把数据和指令提供给微处理器。
高速微处理器芯片一般利用一条或多条高速总线与计算机系统的其余部分对接。这些总线的第一种是称为主存储器总线的相当高速的异步总线。这些总线的第二种是称为局部总线的相当高速的同步总线。主存储器总线和局部总线的典型操作速度在16至33MHz的范围内,趋势是总线越来越快。
尽管大多数微处理器能够利用主存储器总线直接对接,但某些微处理器没有提供与局部总线的外部接口。这些微处理器一般利用称为扩展总线的相当低速的同步总线进行对接。扩展总线的典型操作速度在8至12MHz的范围内。
主存储器(或DRAM)总线被微处理器芯片用来访问主存储器。一般来说,微处理器不是直接与DRAM芯片对接而是与DRAM控制器芯片连接,该DRAM控制器芯片再与DRAM芯片或与一些DRAM芯片连接。DRAM控制器控制由微处理器初启的对DRAM芯片的访问。DRAM控制器还控制额外开销维护、例如刷新周期以便定期刷新DRAM的内容。某些微处理器具有直接设在它们内部的DRAM控制器。经常是把DRAM或SRAM芯片封装在表面安装组件内并把几个DRAM或SRAM连接到一小电路板,形成所谓的单列直插存储器模块(SIMM)。然后通过简单地用一种SIMM换另一种SIMM就能够相当容易地修改计算机系统内的主存储器的总容量(或访问速度)。基于SRAM的外部高速缓存也可以利用DRAM总线与微处理器连接。
如果计算机系统具有局部总线,那么微处理器就能够以相当快的速度访问与该局部总线连接的设备。因此,宽带宽设备、例如图形适配器卡和快速输入/输出设备通常直接与该局部总线连接。有时候外部高速缓存与局部总线连接而不与DRAM总线连接。还可以通过利用被设计成为与局部总线对接的DRAM控制器把DRAM连接至该局部总线来补充(或代替)在主存储器总线上的主存储器。
与局部总线连接的每一设备都具有相关的容性负载。随着局部总线上的负载增大,局部总线的最高操作速度就减小,而驱动总线所需的功率就增大。因此,与局部总线连接的一设备可以是从该局部总线至称为高速外部总线(例如外围部件互连(PCI)总线)的另一总线的外部总线桥。总线桥把与高速外部总线连接的设备与高速局部总线隔离开来。
与局部总线连接的另一设备通常是把高性能局部总线与较低性能的扩展总线连接的扩展总线桥。计算机系统的窄带宽部件然后被连接到该较低性能的扩展总线。通常与扩展总线连接的一种设备使用快速存储器。快速存储器通常是高密度、非冒失的读-写存储器。基于快速存储器的设备的一些例子是BIOS ROM和硬盘的替代物。
快速存储器在擦除方面与普通的EEPROM(电可擦可编程只读存储器)不同。普通EEPROM利用选择晶体管对各个字节的擦除进行控制。相反地,快速存储器利用一个晶体管单元获得了非常高的密度。对于一般的快速存储器阵列,逻辑“1”指即使有也极少数的电子积聚在与一位单元相关的浮栅上。逻辑“零”指许多电子积聚在与该位单元相关的浮栅上。不进行预先擦除,就不能够从逻辑零状态至逻辑1状态地重写快速存储器阵列的每一位。在快速擦除操作期间,同时向一块或整个芯片内的每一存储单元的源极提供高电压。这样就实现了整个阵列或整块擦除。
在快速存储器阵列已被擦除之后,逻辑“1”就被存储在该快速存储器阵列的每一位单元内。该快速存储器阵列的每一个位单元然后就可从逻辑“1”至逻辑“零”地被编程(重写),已知这种编程只是向包含与擦除状态相关的固有电子数的浮栅增加电子。快速存储器的编程操作也称为写操作。
与一般快速存储器阵列相关的读操作非常类似于与其它只读存储器相关的读操作。一般高速快速存储器阵列的读操作需要约80纳秒(ns)。但是,快速存储器阵列的写和擦除操作却非常慢。一般来说,擦除操作需要约1秒。快速存储器阵列一个字的写操作需要约10微秒。
1992年7月1日公开的英国专利GB2251324A描述了使用快速存储器的计算机系统。该专利公开了把快速存储器加入计算机系统的各种结构。在此引用的一种结构是可变文件结构。对于可变文件结构,计算机代码被邻接地存储在快速存储器内,使CPU能够执行直接来自快速存储器阵列的计算机代码,不需要RAM。描述了允许来自所有快速存储器阵列的直接代码执行的直接映射可变文件结构。还描述了允许来自一部分快速存储器阵列的直接代码执行的页面映射可变文件结构。因此,快速存储器能够起便携计算机内的主存储器的作用,向用户提供了与基于磁盘的系统的那些功能类似的一些功能。
ROM可执行DOS已商品化,为系统制造商和最终用户提供了若干种便利。首先,因为大多数操作系统由固定代码组成,所以执行DOS所需的系统RAM的容量从50K减少到15K,于是节省了系统空间及电能,其次,DOS现在可被永久地存储在例如快速存储器这样的单个ROM型的器件内并可从该器件中执行。这样就能够提供从包装箱取出就能够工作的系统。最后,因为消除了传统的磁盘至DRAM引导功能和软件下装步骤,所以用户欣赏到“即时”演示。
例如,通过把应用软件和操作系统代码存储在“驻留快速存储器阵列”(RFA)内,用户实际上欣赏到即时演示和适当的代码执行。因为RFA与ROM不同,它是系统内可更新的,所以RFA还防止了软件过时。存储在快速存储器而不是在磁盘内的驻留软件延长了电池寿命并提高了系统可靠性。
因为擦除快速存储器和把数据写入快速存储器是与把信息重新写入磁盘完全不同的操作,所以已开发了新的软件技术来允许快速存储器模拟磁盘的功能。例如微软的Flash File System(FFS)这样的文件管理软件允许快速存储部件和快速存储插件模拟磁盘的文件存储能力。微软的FFS透明地处理快速存储块之间的数据交换,这类似于MS-DOS处理磁盘扇区之间的数据交换的方式。在FFS下,用户能够输入MS-DOS或Windows命令,不必考虑系统安装的是快速存储器还是磁盘。快速文件编排系统使快速存储器的管理对用户完全透明。已有类似于微软FFS的快速文件编排系统或正在为除DOS和Windows外的其它操作系统开发这种系统。
快速存储器极其适合作为一种固态盘或作为DRAM和电池后备的静态RAM的价格有效的和高可靠的替代物。其固有的优于这些技术的优点使其在便携系统特别有用,便携系统在保持高性能和全面功能度的同时还要求最大可能的低功耗、小尺寸和坚固度。
但是,快速存储器一般都具有异步接口,规定要被读出的地址,然后在设定的时间之后从快速存储器芯片输出存储在该规定地址的内容。只有在快速存储器芯片已输出数据之后才能够把下一要被读出的地址传送给快速存储器芯片。局部总线这样的高速总线能够以33MHz的速率运行,总线的每一周期约为30ns。相反地,一般的高性能快速存储器的读访问时间约为80ns。因此,如果要把快速存储器作为主存储器,则对快速存储器的每一次存储器访问都包含等待状态和零等待状态因而从快速存储器中不能支持背对背成串读周期。对于具有类似于快速存储器的读等待的其它设备也是如此。因此,利用已有技术,把这些存储器作为高速微处理器的主存储器是不现实的。
发明概要及目的
因此,本发明的一个目的是与易失存储器比较,根据非易失存储器提供有效的存储器分级结构,在这种存储器分级结构中,数据和应用程序都被存储在随机存取非易失存储器内,直接根据该随机存取非易失存储器执行应用程序。
本发明的另一个目的是使快速存储器能够利用任何同步总线以最佳的同步方式进行操作。
本发明的另一个目的是使快速存储器能够利用任何同步总线以最佳的同步方式进行操作,以便提供可以代替易失主存储器的低成本、低功耗的替代物,和以便消除把代码和数据从硬盘传送至主存储器所需的时间。
本发明的另一个目的是使快速存储器能够利用任何同步总线以最佳的同步方式进行操作,以便CPU能够直接执行快速存储器的程序,与基于易失存储器的主存储器相比,性能没有任何降低。
本发明的另一个目的是使快速存储器能够利用任何同步总线以最佳的同步方式进行操作以及由此消除把昂贵的存储器子系统设计、例如交错加入系统的需要。
本发明的另一个目的是使快速存储器能够利用任何同步总线以最佳的同步方式进行操作以及由此支持背对背脉冲串周期并因此保证以迅速和最佳的方式对高速缓存存储界进行填充。
本发明的另一个目的是使快速存储器能够利用任何异步主存储器总线以最佳的异步方式进行操作。
本发明的另一个目的是使快速存储器能够利用任何异步主存储器总线以最佳的异步方式进行操作,以便提供可以代替基于易失存储器的主存储器的低成本、低功耗的替代物,和以便也消除把代码和数据从硬盘传送至主存储器所需的时间。
本发明的另一个目的是使快速存储器能够利用任何异步主存储器总线以最佳的异步方式进行操作,以便CPU能够直接执行快速存储器的程序,与易失存储器相比,性能没有任何降低。
本发明的另一个目的是使快速存储器能够利用任何异步主存储器总线以最佳的异步方式进行操作以及消除使用定制的控制器的需要。
本发明的另一个目的是使快速存储器能够利用任何异步主存储器总线以最佳的异步方式进行操作,以便向已有的主存储器控制器提供非粘合接口并因此降低成本和减轻局部总线上的负载。
描述了可被切换至4种不同的读出方式的快速存储器芯片。还描述了利用了这些方式的计算机系统和体系。在第一种读出方式即异步快速方式中,快速存储器被作为标准快速存储器读出。在这一方式中,在能够指定要被读出的第二地址之前必需结束第一地址的内容的读出。
在第二种读出方式即同步快速方式中,向快速存储器芯片提供时钟信号和指定属于一数据串的一系列地址,其中每个时钟分段信号对应一个地址。然后,按照提供地址的顺序在后续时钟分段信号期间内顺序地输出存储在为该数据串指定的地址处的内容。另一方面,如果在快速存储器芯片处于同步方式时向其提供了一个地址,就将在该快速存储器芯片内产生该数据串的后续地址,然后从该快速存储器芯片提供该数据串作为输出。
在第三种读出方式即异步DRAM(动态随机存取存储器)方式中,快速存储器模拟DRAM。于是利用行和列地址选通信号把行和列地址选通至快速存储器。快速存储器然后在内部把行和列地址变换为单个地址并提供存储在该单个地址处的数据作为输出。此外,虽然快速存储器不需要扩充预充电期或不需要被刷新,但当处于异步DRAM方式时,快速存储器如DRAM那样地响应预充电期和刷新周期。因此,当处于异步DRAM方式时,快速存储器能够被标准DRAM控制器进行控制。
在第四种读出方式即同步DRAM方式中,组合第二和第三种方式的特点,得到模拟同步DRAM的快速存储器。于是通过利用RAS和CAS信号把行和列地址选通至快速存储器就指定了要被作为数据串读出的地址。快速存储器然后根据后续时钟分段信号顺序地提供数据串的数据作为输出。
参看附图以及以下的详细描述将清楚本发明的其它目的、特点和优点。
附图概述
举例说明本发明,本发明不局限于附图中的各图,在附图中,相同的标号表示相同的元件,其中:
图1表示具有利用高速总线与快速主存储器连接的微处理器的计算机系统;
图2表示把静态微处理器与快速主存储器结合,构成了低功耗,但高性能的计算机系统的计算机系统;
图3表示交错几个异步快速存储器单元来支持同步背对背数据串读周期的快速存储器子系统;
图4是说明异步快速存储器的读周期的时序图;
图5表示图3的快速存储器子系统的状态转换图;
图6表示快速存储器集成电路的方框图,该集成电路具有从快速存储器阵列的内部存储体中支持同步背对背数据串读周期的同步快速接口;
图7是说明具有同步快速接口的快速存储器的背对背数据串读周期的时序图;
图8是说明利用高速同步总线和总线专门粘合逻辑与微处理器连接的通用同步快速接口的快速存储器单元的计算机系统的方框图;
图9是具有异步主存储器接口的快速存储器集成电路的方框图;
图10是说明具有异步主存储器接口的快速存储器的列和行地址多路复用的异步读周期的时序图;
图11是说明具有异步主存储器接口的快速存储器的刷新周期的时序图;
图12是具有异步主存储器接口的快速存储器集成电路的异步主存储器接口单列直插存储器模块的方框图;
图13是利用动态随机存取存储器控制器来访问基于快速存储器的异步主存储器接口单列直插存储器模块的计算机系统的方框图;
图14是具有同步主存储器接口的快速存储器集成电路的方框图;
图15是利用同步动态随机存取存储器控制器来访问基于快速存储器的同步主存储器接口单列直插存储器模块的计算机系统的方框图。
详细描述
图1表示其中的微处理器110利用高速总线120与快速存储器130连接的计算机系统100。在计算机系统100中,快速存储器130被用来代替某些(如果不是全部的话)易失主存储器(未示出)。因此,快速存储器120被用来代替例如动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)这样的易失主存储器,以便为计算机系统100提供高速非易失主存储器。
基于易失主存储器的计算机体系在断电时将失去主存储器内的所有信息。但是,基于快速存储器的非易失主存储器缩短或消除了在通电时从磁盘获取信息的冗长处理。因此,当程序一开始被执行时,基于快速主存储器的计算机系统100的系统性能高于基于易失主存储器的计算机系统的系统性能。
此外,通过利用快速存储器作为主存储器,就不再需要复制在磁盘和RAM上的阴影信息,于是因消除存储器复制就减小了存储器成本。
还有,通过把信息存储在非易失快速存储器内,因为不需要易失存储器的备用电池和因为磁盘访问被减至最少或被消除,所以减少了功耗。
图2表示其中的静态微处理器210利用高速总线220与快速主存储器230和电池后备的SRAM240连接的计算机系统200。总线桥280连接高速总线220和低速总线260。低速非易失存储器250与低速总线260连接。
在一般的现代基于易失主存储器的计算机系统中,有4至8兆字节的易失主存储器,其中的约一半将被用来存储操作系统、应用程序的可执行代码和不变的数据文件。主存储器的余下部分通常包含被经常读出和写入的数据文件(和偶尔使用的应用程序的可执行代码)。前一种信息被存储在通常被称为“常读”文件的文件内而后一种信息被存储在通常被称为“读/写”文件的文件内。在计算机系统200中,快速存储器230被用来存储常读文件而SRAM240被用来存储目前使用的读/写文件。
举例最能说明利用具有系统200的基于快速存储器的主存储器结构的计算机系统能够获得的好处。假定用户具有一台计算机和经常在视窗操作系统环境中用该台计算机来运行字处理器应用程序(写信)。再假定该用户偶尔用该台计算机玩电子游戏。
因为大多数计算机操作系统(和应用程序)都是设计成根据随机存取存储器(即可被读出和写入的存储器)来执行的,所以没有作出努力来把它们的存储器地址空间分成只读区和读/写区。实际上,极少的存储器地址空间将被写入。大多数存储器地址空间将被读出,以便提供偶尔变化的代码指令和数据。
写入可ROM化的程序来提供可从只读存储器(ROM)执行的代码。在可ROM化的程序中,仔细地写入代码以确保大多数存储器地址空间是只读的。如果存储器地址空间的某些部分是必需被写入的,这些部分就被包含在(可被保存至读/写存储器的)分离的读/写存储器地址空间内。目前在市场上可买到Windows的可ROM化的版本、基本“磁盘操作系统(DOS)”以及例如字处理程序这样的流行应用程序。
因此,计算机系统200的用户可得益于把可ROM化的DOS、可ROM化的Windows和可ROM化的字处理程序的只读部分存储在快速存储器230内。这些程序的读/写部分和应用程序的其余部分以及文件可存储在低速非易失存储器250内。
然后,当用户启动计算机系统200写信时,DOS、Windows和字处理器的只读部分将驻留在快速存储器230内。如果这些程序需要任何读/写文件(例如系统配置信息),这些(通常小的)文件就利用总线桥280和低速总线260迅速地从低速非易失存储器250装载至电池后备的SRAM240。总之,DOS、Windows和字处理程序的主要部分将驻留在非易失快速存储器230内,系统一通电就能够直接根据非易失主存储器230适当地执行它们。因此,对用户来说就好象计算机系统200一启动就装载了字处理器并且该字处理器做好了写信的准备。
用户然后能够检索SRAM240中的包含以前书写的信的文件以便进行修改(从该文件所存储的低速非易失存储器250)。或者用户能够打开在SRAM240的存储器地址空间内的一新文件并能够利用该新文件来开始写一封全新的信。
在写了一会儿信之后,假定用户决定玩存储在低速非易失存储器250内的一个计算机游戏。在这种情况下,与被选择游戏相关的程序将被装入SRAM250,游戏开始。
如果用户想休息,他可以暂停游戏,让计算机系统200继续运行。在用户离开期间,静态微处理器210将感知用户的不活动性并通过省电信号线270把省电信号传送给快速存储器230。然后静态微处理器210和快速存储器230将进入低功耗状态。
快速存储器230和低速非易失存储器250都是非易失的。此外,快速存储器230处于其节能省电状态时将消耗非常少的电能,在用户离开期间,非易失存储器250将不必被访问。还有,因为微处理器210是静态微处理器,所以它将消耗极少的电能,一旦其进入深度省电状态就保持这种状态。还有,不会丢失存储在电池后备的SRAM240内的读/写文件(包括游戏的可执行代码)。
然后,当此用户返回时,此游戏几乎能够立即从其被暂停的地方继续执行。这是因为,当用户离开时即使消耗非常小的能量,计算机系统200的状态也将被保持。
此外,如果用户想要升级DOS或Windows操作系统或者升级存储在快速主存储器230中的程序,由于其写快速存储器的能力,这将是容易做到的。写快速存储器所需的擦除和然后的编程操作将意味着与其中的主存储器为诸如DRAM的易失性存储器相比,这将花费更长的时间才能将程序存储到快速存储器230中。但是,无论如何,程序的安装不会频繁地执行并且通常是相当长时间的处理。因此,与系统200一启动,一个程序就能够从非易失性快速存储器230中立即执行的好处相比,安装此程序到非易失性快速存储器230中所需的额外时间是不重要的。
写快速主存储器230的能力还意味着用户能够安装一不同的程序来代替目前存储在快速主存储器230中的字处理程序(或者除了目前存储在快速主存储器230中的字处理程序外还能够安装一不同的程序)。因此,通过安装一个竞争的字处理程序到快速主存储器230中,用户能够切换到此竞争的字处理程序。另一方面,例如,用户能够安装一空白表格程序或图形设计程序到快速存储器230中以替代目前存储在其中的字处理程序。
并且,在此快速存储器230中提供了足够的空间,此用户能够在其中安装额外的应用程序。因此,例如,如果此用户有一目前最受欢迎的特定的计算机游戏,那么它就能被安装而驻留在此快速存储器230中。
注意,即使一程序不是可ROM化的,此程序也能被安装在快速存储器230中。如上所述,因为能够写快速存储器,所以,一快速文件系统允许标准应用程序在快速存储器230中执行。但是,当标准(即不能ROM化的)程序在快速主存储器中执行时,快速存储器的非对称性读/写将引起一需要承担的性能恶化。
但是,有一些方法能够用于减轻这些性能问题。一种方法是,当此应用程序正在执行时,操作系统将此应用程序的存储器地址空间标注为只读。然后,如果此应用程序试图写快速主存储器230,那么将引起一中断并且一错误处理程序使能够再对SRAM存储器240进行写入。接下来,当在处理过程中有一个间歇时,作为一后台操作,此信息能够从SRAM240写到快速存储器230中。在实行中,一部分SRAM240能够用作快速主存储器240的一个写高速缓存。
采用一部分SRAM240作为一个写高速缓存的一个好处是存储在快速存储器230中的应用程序不需要是可ROM化的。另一个好处是应用程序存储地址空间的写区域将可能相对好地定位。在这样的幸运情况下,任何对此写高速缓存的顺序读或写操作将得益于SRAM240的较快的访问。还有,由于被回写到应用程序存储空间的信息是短暂的这种情况(即从此应用程序的一次执行到下次执行不会节省)频繁地出现,因此,当此应用程序终止时任何在此写高速缓存中的短暂信息将不必回写到此快速存储器230。
从上述的例子中可以看到,与具有基于传统的易失性主存储器的结构的计算机系统相比,有许多有益的和协合的效果产生于具有计算机系统200的非易失性主存储器计算机系统结构。
第一,当首先加电时计算机200能够立即启动。因此,不需要花费时间和能源以加载操作系统和经常使用的诸如字处理器的应用程序到主存储器中,它们总是在主存储器中并且实际上是立即可使用的。
第二,不需要在慢非易失性存储器250中存储一操作系统(例如DOS和Windows)的拷贝或者经常使用的应用程序(例如字处理程序)。因此,如果需要遮蔽这些文件,慢非易失性存储器250就可以比所需的要小些。
第三,采用下面将更详细地描述的不同于异步(易失性)DRAM的技术,能够成串读快速存储器230。因此,与如果采用基于异步DRAM的主存储器相比,用于微处理器210的内部高速缓存215的一高速缓存存储界能够更快地根据快速存储器220进行填充。
第四,与易失性DRAM相比,SRAM240能够被更快地读写。因此,与如果采用基于DRAM的主存储器相比,用于微处理器210的内部高速缓存215的一高速缓存存储界能够更快地根据SRAM240进行填充。还有,与如果采用基于DRAM的存储器的情况相比,从SRAM240中执行的程序能够更快地被访问,因而能够更快地被执行。
第五,一部分SRAM240能够用于为快速存储器220提供一外部高速缓存,因而进一步增加了执行速度。
第六,一较低性能的微处理器能够用于提供在采用基于DRAM的主存储器的情况下相同水平的性能。这是因为,由需要加载操作系统和程序引起的基于易失性DRAM的主存储器的低带宽限制将被消除。而操作系统和程序被存储在非易失性快速主存储器230中。这还因为,与采用DRAM主存储系统的情况相比,在系统200中,在微处理器210的数据和程序指令需求与基于快速存储器230/SRMA240的主存储器供给它们的能力之间将具有更好的匹配。这将导致微处理器210的更少的空闲等待状态。经常地,微处理器210将能够操作在零等待状态。因此,即使由于微处理器210是一较低性能的微处理器而在其中只有较少的周期能够工作,但是,当此微处理器等待代码或数据时,可用于此微处理器的周期将浪费得较少。
第七,由于对于一给定的性能级别,微处理器210能够使用较低的时钟速率,因此,与如果一基于DRAM的主存储器需要采用较快的处理器相比,微处理器210将较便宜,并有较小的散热问题以及使用较小的功率。
第八,由于微处理器210和快速存储器230在其不需要时能够进入一深度省电(deep powerdown)模式,因而进一步节省能源。
因此,当其主要部分的主(执行)存储器为快速存储器时,一个非易失性读/写通用计算机体系能够用上述的结构来实现。
根据系统200的需求,档案存储(即慢的非易失性存储器250)可以或不必存在于此系统中。如果存在,系统200的需求能够管理用于提供它(即机械、光或固态)的技术。还有,根据系统200的特别需求,电池后备的SRAM240能够被非易失性RAM(NVRAM)、电可擦可编程ROM(EEPROM)、DRAM、SRAM、或者电池后备的SRAM替换。
系统200的上述每一配置的根本主题是,微处理器210的CPU根据需要从随机访问非易失性(快速)存储器230取出代码和/或数据并回写不同的数据和/或程序,如前面所述,这些新的信息可以写或不写到主存储器中的同样的地方。基于RAM的系统本来就易失性的。虽然基于ROM的主存储器系统是非易失性的,但是却不提供回写到此ROM的能力。
快速存储器不是象DRAM那样的对称技术,即,它不允许字节随读速度而发生变化。因此,在一个实施例中,为了修改一文件或程序,被改变的部分移到字节可变存储器(例如NVRAM、EEPROM、SRAM或DRAM)中,然后修改,并且然后回写到快速主存储器。此可变存储器可以是分离的存储器芯片和/或被集成到一CPU或微处理器上。没有被改变的数据由此CPU从快速存储器中直接读取。与一基于磁盘的系统相比,这种配置实质上消除了用于读和未改变的数据的磁盘下载,因而提供了较快的读性能。对于写,其回写在性能上与磁盘不相上下。由于其读周期较快,因而提供了较高的整个系统性能。
这些配置的每一个的关键是一快速存储器用作一主存储器并且其读速度约等于或超过DRAM的读取速度。有四个基本的方法可以实现它。第一种方法是提供一硬件控制器,此硬件控制器能够对多于一个的常规异步快速主存储器芯片交错读操作。
用于异步快速主存储器的多芯片交错
图3说明了一个快速存储器子系统,其中四个快速存储器集成电路320(#1至#4)在一控制单元的控制下交错以提供一成串读能力。虽然图3显示了四个快速集成电路320,但是,可以理解的是,如果每个集成电路320的数据宽度不是所示的双字,那么适当数量的快速集成电路320与此图中的每个电路320同时提供,从而提供一双字数据宽度。在这个例子中,所述控制器采用完全可编程门阵列(FPGA)310实现。在一替换的实施例中,采用交错技术提供其交错控制。
图4说明了用于诸如图3所示的快速存储器电路320的典型异步快速存储器的读周期。从图4中可以看到,此快速存储器的那些数据线(Dout)在一读周期的前后是三态的(在图中表示为OPEN)。这意味着那些数据线已被置为高阻态。
图4的读周期开始于输出使能(OE#)和芯片使能(CE#)信号的输出从低电平(VL)到高电平(VH)的跃变。然后,如果一写使能(WE#)信号还不是高电平,则其跃变到高电平以表示一读操作和被读的地址放在此快速芯片的地址引线(A0至A19)上。然后,存储在此特定地址中的数据从此快速阵列内部被取出。此读处理所需的时间数是一公知的常数。一旦此时间数已经过去,则此OE#信号变为低电平,并且从此特定地址读的数据被此快速芯片驱动而输出到所述的那些数据线上(Dout)。当所述CE#和OE#信号再变为高电平时,此读周期结束(或许开始下一个读周期)。
注意在图4中,直到前一个读周期已经结束为止,一个新的读地址不能指定。因此,单个标准的异步快速存储器单元不能交错以支持快的背对背(back to back)读周期。在下一个读周期能够开始之前,必须等待第一个读周期结束。
标准异步快速元件的总访问时间(TACC)能够分成两部分。第一,有一时间用于地址译码和芯片使能,选择此快速阵列中被读的那些适当的位并且然后读取它们存储的数据(TACC-TOE)。第二,需要有一时间以通过输出缓冲器驱动这些信息到数据总线上(TOE)。只要知道了用于数据成串读的单个地址,也就知道了那些数据成串读的地址的其余部分。因此,再参见图3,交错利用数据串的这种特性缓冲了跨越两个或更多快速芯片的第一访问时间(TACC-TOE)从而提供具有一改善的平均读访问时间的脉冲串。
考虑一个20MHz同步局部总线(即每个时钟周期约为50ns)的情况。在其速度上,一个典型的微处理器将有2-1-1-1脉冲串的最大成串读能力。这就意味着,当此微处理器读一串数据时,此串数据将由四个双字数据构成,它是相同高速缓存存储界的每一部分。此外,一旦此微处理器指定此数据串的第一地址在两个周期内(在本例中约为100ns)就将不能接收存储在此地址中的内容。然后,在接下来的三个时钟周期中,此微处理器将能够接收所述高速缓存存储界的第二、第三和第四地址的各自的内容。
如果每个快速存储器芯片320有一个小于2个时钟周期的(TACC-TOE)和一个小于40ns的(TOE),那么快速存储器子系统300将能够一与由此微处理器可达到的最大成串读能力相匹配的成串读。这是因为,FPGA310一接收被读数据串的第一地址,它就将启动所有的四个快速存储器芯片320并且命令每一个芯片320和其它的芯片320一起读此数据串的地址之一。在第一个两周期后,存储在此数据串的第一地址中的数据将可从快速存储器芯片320#1中得到。然后,在其后面的每个顺序的周期中,存储在此数据串的后面地址中的数据可(从快速芯片320#2、然后是#3、最后是#4)得到。
这意味着在本例中,快速存储器子系统300将能够在五个时钟周期期间(约250ns)提供四个双字数据的一数据读脉冲串,因而提供了约50ns的平均读时间。如果不采用交错(例如,如果仅使用一个快速存储器芯片320),那么用于每个地址的读时间将需要三个周期(即,两个周期用于(TACC-TOE),一个周期用于(TOE))。并且每个读操作将必须等待更早的读操作的完成。采用上面所述的数据,对于单个异步快速存储器320的数据“串”的每个地址将需要150ns。因此,如果不使用交错,那么可达到的最快的脉冲串速度将是需要600ns完成(4×150)的3-3-3-3脉冲串。
时钟信号CLK协调快速存储器子系统300的操作。在子系统300中,四个字节快速存储器页由存储空间AX-AO的公共地址A21-A2选择。较高位的地址(AX-A22)译码系统存储分配图中的4兆字节快速阵列。地址A1和A0和RD#(读)信号输入到FPGA310,使得FPGA310产生用于快速存储元件320(#1-#3)的输出启动信号。因此,在一个实施例中,快速子系统300的系统地址和快速存储器元件320的关系如下:
系统地址 元件 元件
地址
0 #1 0
1 #2 0
2 #3 0
3 #4 0
4 #1 1
5 #2 1
等等…
从存储器子系统300中访问的一个读数据串序列将如下进行:
首先,处理器将发信号表示要从系统地址0读数据。信号CE#将启动快速存储器320#1至#4并且信号ADDR将向它们提供地址0。FPGA310将译码系统地址位A1和A0,并且,由于它们都是零,因而将启动用于快速元件320#1的OE#信号。由于这是对四个字节页的第一次访问,因此此访问将需要150ns(即,三个50ns时钟周期)。
第二,执行顺序代码的处理器将从系统地址1读。元件320#1至#4将保持允许状态,而输入到它们中的地址(ADDR)将保持为零。然后,FPGA310将译码系统地址位A1和A0上的“01”,并且启动用于元件320#2的OE#线。由于用于元件320#2的数据已经被选择和读取,因此,用于元件320#2的访问时间将仅有50ns的时延(即,一个时钟周期)。
然后,同样的50ns访问将跟着分别用于系统地址2和3从元件#3和#4中读取。
如果下一个数据串从地址4开始,则此处理器将在下一个周期中从系统地址4读。这将使系统地址A2从零变到一,因而招致另一个用于对元件320#1的访问的整整150ns时延。因为这是一个新的4字节页,因此,从每个快速存储器320中读取新的数据。但是,再一次,后面的对系统地址5、6和7的每个访问将仅仅需要50ns。
FPGA310译码较低的地址,并且相应地,在一交错页内产生OE#信号到快速存储器器件320。先前的例子采用四字节页,所以译码地址A1和A0。对于一个两字节页,仅仅需要检测地址A0,而一个八字节页将采用地址A2至A0。
FPGA310将检测所有的较高地址位(在此例中即为AX至A22),为的是首先决定存储器子系统300是否将被访问,然后确定是否产生了对相同页的访问,并且相应地调节等待状态返回到处理器(通过READY信号输出)。此功能由图3中的比较逻辑子块340实现。
此外,FPGA310将区分对快速存储器320的读或写,并且相应地调节等待状态。图5说明了用于由FPGA逻辑310实现的硬件交错的状态变迁示意图。
状态变迁示意图500开始于初始状态500,在初始状态500中,FPGA正在等待对子系统300的一快速存储器320的访问。当FPGA检测到对子系统300的快速存储器320的一访问开始时,在状态520中产生一测试以确定是否象先前的访问一样是对相同的四字节页的访问,如果是象先前的访问一样对相同的四字节页的访问,那么,变迁524被引到状态530并且产生一测试以确定此访问是否为一读操作。
如果在状态530中确定此访问是一个读操作,那么,被读的信息已是可得到的,并且产生一变迁从路径534到达读状态560并执行读操作。在此读操作执行后,从读状态560产生一变迁而回到初始状态510并且等待下一次访问。
现在回到状态530,如果在状态530中确定此访问不是一个读操作,那么从路径532变迁到等待状态产生状态550,并且在执行一擦除(如果需要)和编程信息时执行适当数量的等待状态。
现在回到状态520,如果在状态520中确定此访问不是对象前面的访问一样的相同的四字节页的访问,那么,从路径522变迁到状态540并且锁存一新地址用于页比较。然后,在状态550,当访问新的四字节页的同时执行一适当数量的等待状态。
注意,此快速存储器的写操作不能象其读操作那样具有交错的优点,这是因为没有用于写操作的等同的TACC或TOE。虽然存储器子系统300支持背对背读脉冲串并且减小用于顺序访问的平均读访问时间,但是,它增加了用于访问常规异步快速存储器芯片所需的整个系统硬件的复杂性。
但是,如前所述,一个写高速缓存或软件交错技术能够用于使程序最大化和存储器子系统300的擦除性能。此外,在一可ROM化的程序从快速存储器子系统300中执行的情况下,在此程序的执行期间将没有任何到此快速存储器的写操作。在这样的情况下,快速存储器的较慢的写性能将仅仅在偶尔安装此程序的新的可ROM化版本时是一个因素。
用于快速主存储器的同步快速接口(SFI)
除了需要FPGA310的附加系统复杂性外,一个诸如子系统300的存储器子系统将必须至少有两个快速存储器芯片320以便在其间交错(在图3的例子中有四个)。此外,如果附加的快速存储器芯片被加到子系统300,它们也必须(至少)成对地加上去。而且,加到子系统300的每个快速存储器芯片同时启动,并且因此子系统300消耗大量的电能。另一方面,整个同步快速接口能够合并到单个快速存储器芯片上。
图6说明了一个同步快速接口(SF1)快速存储器集成电路600的方框图,此集成电路600含有在单个快速存储器芯片中的整个同步快速接口。此同步快速接口提供一种装置,此装置将从一控制器中出现的同步周期转换到此快速核心能够理解的异步协议。此器件从内部分成两个存储体并且其最低有效地址用于区分这两个存储体。简单地说,此器件在内部交错。用户能够管理用于所述交替存储体的背对背周期,并且,在初始时延等于一异步快速访问时间后,数据将以一约等于此异步快速访问时间的一半的速率输出到其输出总线上。因此,采用这种接口的所述器件建立了一个明显小于异步快速器件访问时间的用于顺序读访问的平均访问时间。
一时钟输入是所述接口的一部分,一地址锁存允许引线用于指示一有效地址提供在地址总线上。此器件的所有外部操作同步到此时钟的上升沿。ALE#信号在此时钟的上升沿被采样,并且,如果其被有效地采样,那么提供在地址总线上的地址就被锁存到此部分并且一访问开始。用户能够每时钟周期交替地选通地址至所述器件。在一个初始延迟后,与这些地址相对应的数据与此时钟的上升沿同步地输出到数据总线上。用户能够使此器件以高如33MHz的频率循环,并能够期待在其间没有任何等待地执行背对背脉冲串周期。还有,本设计的另一方面是可编程的等待时间,它使用户能够在地址选通和有效数据之间定义时钟周期等待时间。
在图6中,SFI600的快速阵列分成两个存储体,快速存储体A610和快速存储体B620。模式寄存器680能够设置成SFI允许模式和SFI禁止模式。因此,当模式寄存器680被设置时,信号交错允许信号(IE)启动交错控制逻辑和地址变迁检测(ATD)逻辑570、晶体管-晶体管逻辑(TTL)级672、存储体选择逻辑674和总线逻辑640。当SFI被允许时,交错控制670和存储体选择逻辑674操作以便在快速存储体A610和快速存储体B620之间以一种方法交错读(和写)操作,此种方法类似于图3的子存储器系统300中FPGA310交错访问快速芯片320的方法。因此,当模式寄存器680已经设置到SFI模式时,单个SFI快速芯片600能够支持背对背读脉冲串。
在SFI模式中,一被访问的地址在地址总线A19至A0上和一时钟脉冲(CLK)、一地址锁存允许信号(ALE#)一起提供给TTL级672。输出允许和写允许信号也提供给TTL级672。然后,地址A19至A1从TTL级672提供到存储体A地址锁存器630和存储体B地址锁存器632。信号CLK、ALE#和A0提供给交错控制逻辑和ATD逻辑670。
根据低位地址(A0),交错控制逻辑670分别采用信号地址锁存允许A(ALEA)和地址锁存允许B(ALEB)控制存储体A地址锁存器630和存储体B地址锁存器632。因此,交错控制逻辑670控制剩下的较高位的地址以访问快速存储体A510或快速存储体B520。信号地址变迁检测A(ATDA)和地址变址检测B(ATDB)从交错控制逻辑和地址变迁检测逻辑670中输出,以分别准备快速阵列存储体A610和B620被读取。
当存储体A610被读时,数据多路复用器(MUX)650从快速存储体A610的读放大器中接收输入信号S/AOUTA。当存储体B620被读时,数据多路复用器MUX650也从快速存储体B的读放大器中接收输入信号S/AOUTB。存储体选择逻辑674接入作为输入的信号CLK、ALE#和A0并提供输出信号存储体选择(BS)。信号BS用于控制数据MUX650,使得它交错对存储体A610和B620的数据读操作并且控制数据进入输出缓冲器660。然后输出缓冲器660驱动读出的数据到SFI快速芯片600的数据输入/输出(I/O)缓冲器690上。
因此,当SFI快速600处于SFI模式时如果执行一读访问,那么,在执行前面的访问的同时能够开始对下一个地址的访问。如果被读的下一个地址不属于当前正在被读的存储体,那么在前面的访问的输出正在被锁存到输出缓冲器660中和正在被驱动到数据I/O缓冲器690上的同时,下一个地址能够控制相应的存储体(A610或B620)。还有,本设计的另一方面是可编程的等待时间,它使用户能够在地址选择和在数据I/O缓冲器690中提供的有效数据之间定义时钟周期等待时间。
另一方面,多于两个的存储体能够用于SFI芯片600,此芯片600提供有用于选择适当存储体的适当数量的地址位。因此,如果四个存储体被交错,那么两个地址位将被用于在这些存储体中选择。
图7是一个时序图,说明了用于图6的SFI快速600的一个持续读脉冲串周期。在图7中,同步时钟信号CLK操作在33MHz,因此信号CLK的每个脉冲(T1至T8)长度为30ns。当被读的第一地址(ADDR0)送到地址引线上并且地址锁存启动信号ALE#变为低以表示被读的一有效地址已准备好时,读脉冲串开始于时钟脉冲T1的上升沿。注意,地址ADDR0的低位A0在时钟脉冲T1的上升沿为低。因此,地址ADDR0属于存储体A并且存储体A将被读以取出存储在地址ADDR0中的数据。
当被读的第二地址(ADDR1)送到地址引线上时,所述读脉冲串在时钟脉冲T2的上升沿继续进行。在一个实施例中,地址锁存启动信号ALE#变为高,然后变为低以表示被读的有效地址准备好。可替换的是,地址锁存启动信号ALE#简单地保持低以表示被读的另一个有效地址准备好。注意在时钟脉冲T2的上升沿,地址ADDR1的低位A0为高。因此,地址ADDR1属于存储体B并且存储体B将被读以取出存储在地址ADDR1中的数据,由于地址ADDR0和ADDR1属于不同的快速存储体,因此两个地址单元能够同时读取。
当被读的第三地址(ADDR2)送到地址引线上并且地址锁存启动信号ALE#保持低以表示被读的另一个有效地址已准备好时,所述读脉冲串在时钟脉冲T3的上升沿继续进行。注意在T3期间,从存储体A的ADDR0的读操作(开始于T1期间)结束。因此,在T3期间,存储体选择信号BS变为低以控制从ADDR0读取的数据送到所述输出缓冲器中被锁存。然后在脉冲T4开始时,ADDR0的数据被驱动输出到SFI芯片的数据I/O缓冲器中。
同时,由于地址ADDR2的低位A0在时钟脉冲73的上升沿为低,因此,地址ADDR2属于存储体A并且存储体A将被读以取出存储在地址ADDR2中的数据。存储体A的地址ADDR0的输出已经锁存到所述输出缓冲器中,所以可以开始读存储体A的ADDR2。此外,由于ADDR2和ADDR1属于不同的存储体。因而能够同时读取这两个地址单元。
当新地址在每个时钟周期被输入以及此地址的数据在两个脉冲后被输出时,这种成串读能够无限地继续下去(或者至少到SFI快速芯片600的地址空间耗尽为止)。
再参见图6,为了让SFI芯片600真正地和与其通信的高速同步总线匹配,总线逻辑块640接收并提供用于SFI600的总线专用信号。因此,例如,此特定的高速同步总线需要在每个写操作接收一奇偶校验位并且然后送回以作为一个信号交换。在一个实施例中,接口逻辑600将在写操作期间锁存和检测写入快速存储器600的所有位,并且在其写后的“信号交换”过程中提供这些奇偶校验数据。另一方面,通过在对快速存储器600的写尝试期间检测数据,接口逻辑640能够采用由所述高速同步总线使用的相同奇偶校验算法以产生用于所述写后的“信号交换”所需的奇偶校验信息。
此外,所述总线协议也可是这样,即当数据被读时所述奇偶校验位需要从SFI600发送。由于快速存储器不需要此奇偶校验位和数据一起存储。因此,当读数据时,总线逻辑640将采用由所述高速同步总线使用的相同奇偶校验算法以产生所需的奇偶校验位。这样,在快速存储器600的读操作期间,逻辑640将从快速存储器600的输出取得奇偶校验位以用于传送到所述高速同步总线。因此,通过在对快速存储器600的写尝试期间和对快速存储器600的读尝试期间检测数据,接口逻辑640将产生所需的奇偶校验信息。
当模式寄存器680没有设置到表示SFI模式时,交错控制670的同步存储体交错控制功能无效并且SFI快速芯片600将用作标准异步快速存储器芯片。在这样的情况下,象送到总线逻辑640的总线专门输入信号一样,所述的CLK和ALE#信号也将被忽略。而信号CE#和OE#被用于访问采用图4中所述类型的异步读信号的SFI快速600。
在一个实施例中,采用相联存储器实现模式寄存器680。另一方面,在另一个实施例中,没有模式寄存器680,芯片600的SFI功能不能被禁止,而且SFI芯片600将不能用作一标准异步快速存储器。
在一个实施例中,所述SFI快速存储器600的每个字/字节的读操作需要一个地址。而另一方面,一些数据串处理总线通过提供一开始地址,然后重复地发读信号而不提供附加的地址信息来开始多个读数据串访问。另一方面,为了适应这些处理器,SFI快速芯片600将锁存数据串的开始地址,并且将利用片内计数器来产生整个数据串读序列的顺序地址。在这样的情况下,SFI芯片600将包含一个全地址锁存器和一个与SFI快速存储器阵列600的可寻址空间匹配的多位计数器。在提供所述的开始地址后,此计数器逻辑将自动增量(根据此总线为线性或非线性序列)并且将地址送到所述SFI快速存储体。这就允许在最高系统性能中具有长度不确定的多个数据串访问。
图8说明了一个采用交错通用SFI芯片方法的计算机系统800。在图8中,SFI快速芯片860有一个通用同步快速存储器接口。粘合逻辑(Glue logic)830是一个位于微处理器810和SFI快速芯片860之间的分离的集成电路芯片,它用于提供SFI芯片860至高速同步总线820的对接所需的电路。
图8的方法的一个好处是在SFI快速芯片860中提供一通用接口870可以允许存储体A880和B890的成串读操作。因此,为了执行交错,不需要成对的异步快速芯片,而是能够以单个芯片为单位扩展快速主存储器子系统。同时,当与图3中的FPGA310比较时,由于粘合逻辑830不必包括需要用于任意SFI芯片860的通用同步接口控制逻辑870,因此SFI粘合逻辑830的设计更简单。
此外,由于总线专用控制逻辑850是在粘合逻辑830而不是在SFI芯片860中实现,因此,单个SFI芯片860能够用于与许多不同的同步总线对接。
此方法的另一附加的好处是,当与标准异步快速芯片比较时,SFI芯片860仅需要有两个附加针(即CLK和ALE#)。需要用于同步总线820的任意其它信号由粘合逻辑830以一种对SFI芯片860透明的方式提供。典型地,一快速芯片安装在诸如薄而小的外形封装(TSOP)的小型封装中,由于小的封装尺寸,一标准异步快速芯片将几乎采用了所述封装的所有可用的针。当提供一通用同步快速接口时,即使在将SFI快速芯片860安装到小型封装中所施加的限制下,所需的所述两个附加的针也是可得到的。
注意所述粘合逻辑830包括数据串逻辑840。这是因为,如前所述,不同的微处理器810采用不同的数据串定序序列。
一个通用序列是线性寻址序列。在此线性寻址序列中,一个数据串从其开始地址顺序增加。典型地,在这种序列中,所述数据串将在所述高速缓存存储界上从最低地址开始被读取并且将通过所述高速缓存存储界的地址而增加。
另外的数据串序列是非线性寻址序列。在这种序列中,此数据串读操作不必从一高速缓存存储界的最低地址开始,如果此数据串正从此高速缓存存储界的最低地址开始,那么此非线性寻址序列表现得与所述线性序列一样。另一方面,如果此数据串在此高速缓冲线的一地址而不是最低地址上开始,那么此数据串的其后地址将以一种方法产生,这种方法就是保证此高速缓存存储界的每个地址将被访问并且它们将以一种在奇和偶地址存储体之间交错的方法被访问。
数据串逻辑840取一个数据串的第一数据地址,并且根据微处理器810所需的无论什么样的寻址序列而产生此数据串的剩余地址。
注意,由于线性和非线性数据串序列都在奇和偶存储体之间交错,因此SFI芯片860将在存储体之间交错而与数据串逻辑840产生的序列(线性或非线性)无关。
用于快速主存储器的异步主存储器接口(AMMI)
同步快速接口(SFI)支持背对背数据串,因而允许快速存储器用作主存储器。但是,可能有这样的场合,其系统限制阻止了到高速同步总线的同步快速接口的使用。一种这样的情况是其中已经有一些元件耦合到所述高速同步总线上。在这样的一种情况中,SFI芯片(或者其粘合逻辑控制器芯片)的附加耦合将增加此高速同步总线的容性负载而到达其不能再支持所需性能级的地步。另一个这样的情况是其中的SFI芯片需要一个粘合逻辑控制器芯片和当系统设计禁止此芯片的附加费用时施加的费用限制。
此外,许多可携带的系统没有局部总线(即没有高速同步总线)。典型地,在这些系统中,CPU和外围设备控制器一起集成到一个微处理器芯片上。在这样的系统中,系统中只有一异步主存储器总线和一相对低的扩展总线可用。
与现存的一样的异步快速存储器必须在其系统内部通过一定制的控制器对接到所述扩展总线。此扩展总线上的总线周期一般较慢。因此,由于每个扩展周期一般长于一快速存储器的异步访问时间,因此,当与所述扩展总线对接时,此同步快速接口不能提供实际上的好处。
在任何计算机系统中,异步主存储器接口(AMMI)允许快速存储器对接到所述异步高快主存储器总线。实际上,此AMMI允许快速存储器芯片仿真异步DRAM芯片。除了提供低成本、低功率的快速主存储器外,通过允许非易失性快速存储器代替易失性DRAM用作主存储器,此AMMI还消除了将程序或数据从硬盘传送到DRAM的需的时间。因此,正如SFI的情况一样,当与易失性主存储器比较时,CPU能够直接在快速主存储器外执行程序而没有任何性能上的降低。
由于所述AMMI允许一快速芯片仿真DRAM芯片,此AMMI消除了对定制控制器的需求。这样就为一个系统中存在的DRAM控制器提供了一个非粘合接口并且因而减小了成本和局部总线的负载。
此AMMI改进了系统性能并且在可携带的计算机系统中提供了硬盘的代替物。在系统结构只有最小的改变的情况下,它还提供了快速存储外的较快的执行。而且,不需要任何附加外设逻辑就能增加系统的性能。
图9说明了具有一异步主存储器接口的快速存储器芯片的一个实施例的方框图。在图9所示的实施例中,快速芯片900能够象一标准异步快速存储器芯片一样操作或者能够仿真一DRAM。其所采用的特定的寻址模式由模式寄存器910是否已被设置来确定。因此,如果模式寄存器910已经设置成表示需要异步主存储器接口,那么AMMI快速芯片900将仿真一DRAM芯片。另一方面,如果模式寄存器910没有设置成表示需要异步主存储器接口,那么AMMI快速芯片将不仿真一DRAM芯片。在后一种情况中,AMMI芯片900的DRAM仿真电路将是无效的,并且AMMI快速芯片900将象一标准异步快速存储器芯片一样操作。在一个实施例中,模式寄存器910采用内容可寻址存储器实现。
图10说明了当一AMMI快速芯片900仿真-DRAM时的一个读周期。由于此AMMI快速芯片900正在仿真一DRAM芯片,因此图10也说明了一典型的DRAM芯片的一个读周期。
此异步主存储器接口提供了一种装置,此装置翻译DRAM周期并将这些周期转换成能够用于访问一快速存储器阵列的协议。为了减少一典型的DRAM器件的引线数,一个DRAM多路复用十位行地址和十位列地址,而不是象快速存储器那样采用单一的20位地址。通过提供在现有技术的异步快速器件中没有出现的两个附加引线来实现一DRAM的地址信号多路复用。
因此,在一个DRAM中,一个行地址选通(RAS#)引线和一个列地址选通(CAS#)引线分别用于控制行和列地址的选通和锁存。一般地,这些地址在选通脉冲的下降沿锁存并且用于访问所述DRAM阵列中的特定位。由于AMMI快速存储器芯片900能够仿真DRAM芯片,因此AMMI快速芯片900具有分别用于接收行和列地址选通信号的行和列地址引线。
有些DRAM器件采用不是十位的行和列地址。例如,一个DRAM器件的行和列地址可以仅需要八位。整个下面的讨论将采用十位行和列地址。但是,可以理解的是,采用其它大小的行和列地址也能实现AMMI快速900。
从图10中可以看到,一仿真DRAM的AMMI快速芯片900的读周期从RAS#和CAS#信号均为高以及多位数据输出信号(DOUT)为不定(三态)时开始。然后,十位行地址送到快速芯片900的地址引线A0至A9上,并且RAS#信号变为低以表示一有效地址已选通到所述的AMMI快速芯片中。(注意,在八位行地址的情况下,此八位行地址应送到快速芯片的地址引线A0至A7上)。
在行地址已被选择到AMMI快速芯片900中后,在一预定的时期内此RAS#信号继续保持低。在一个标准DRAM中,此RAS#在下一个读周期之前的读周期结束时保持高以便预充电。当然,由于快速存储器不是以DRAM的基于电容的存储技术为基础,因此,快速阵列不需要一DRAM所需的长预充电时间。另一方面,由于AMMI快速900正仿真DRAM,因此它必须象一DRAM一样起作用。
一旦所述行地址已经锁存在AMMI快速芯片900中,WRITE#信号从低到高的翻转就表示一读操作。然后,十位列地址在AMMI快速芯片900的地址引线A0至A9上被认定。接下来,CAS#信号被认定并且列地址被锁存在AMMI快速芯片900中。然后,十位行地址和十位列地址在AMMI快速芯片900中合并以形成一个二十位地址,此二十位地址用于指定在快速阵列中被读的存储单元。一旦被读,此二十位地址单元中的内容就被驱动到AMMI快速芯片900的数据引线上以作为多位信号数据输出(data out)(DOUT)。然后,在CAS#变为高后,此多位信号数据输出(DOUT)又变为三态。
同时,在行地址已经被选通到AMMI快速芯片900中并且RAS#已经为了产生行预充电而足够长时间地保持低后(如果一DRAM正在被访问),RAS#信号翻转回到高。在列地址已经被选通到AMMI快速芯片900中后,CAS#信号也翻转回到高。
再参见图9,存储在模式寄存器910中的模式值提供给控制逻辑920。控制逻辑920的一个输出是一个地址多路复用器选择(AMS)信号。信号AMS控制地址多路复用器(MUX)930。接下来,地址多路复用器930控制在AMMI快速900的地址引线A0至A9上认定的十位地址到地址锁存器940的适当部分中。
地址锁存器940分成高十位部分942和低十位部分944,用于分别存储快速地址950的十位高位和低位地址。被分离的地址950是一个用于寻址快速阵列960的二十位地址。控制逻辑920的另一个输出是一个多位地址锁存控制(ALC)信号,此信号控制在地址锁存器940的高部分942和低部分944中的地址锁存。
存储在模式控制器910中的模式值还提供给控制旁通多路复用器(MUX)955。当快速芯片900正操作为一个标准异步快速芯片时,到旁通多路复用器955的输入是来自地址锁存器940的被分离的地址950和在快速芯片900的地址引线A0至A19上认定的二十位外部快速地址。从旁通多路复用器900的输出是提供给快速阵列960的快速地址957。
因此,当AMMI快速芯片900正操作为一个标准异步快速芯片时,一个二十位快速地址将在快速芯片900的地址引线A0至A19上认定。来自模式寄存器910的信号915将设置旁通多路复用器955,以便控制在快速芯片900的地址引线A0至A19上认定的二十位快速地址作为快速地址957送到快速阵列960。
另一方面,当AMMI芯片900正在仿真一DRAM芯片时,快速芯片900的地址引线A0至A9将被多路复用。首先,十位行地址将放到快速芯片900的地址引线A0至A9上并且RAS#信号将指示此行地址已准备好被选通到此快速芯片中。然后,十位列地址放到快速芯片900的地址引线A0至A9上并且CAS#信号将指示此列地址已准备好被选通到此快速芯片中。
注意,在所述DRAM仿真模式中,没有地址信号将被放到此快速芯片的地址引线A10至A19上。因此,当所述行地址被选通到AMMI快速器件900中时,控制逻辑920将设置地址多路复用器920以控制在快速芯片的地址引线A0至A9上认定的十位行地址到地址锁存器940的低部分944中。然后,信号ALC将使在快速芯片900的地址引线A0至A9上认定的十位行地址被地址锁存器940的低部分944锁存。
然后,当CAS#信号指明所述列地址被选通到AMMI快速器件900中时,控制逻辑920将设置地址多路复用器920以控制在快速芯片的地址引线A0至A9上认定的十位列地址到地址锁存器940的高部分942中。然后,信号ALC将使在快速芯片的地址引线A0至A9上认定的十位列地址被地址锁存器940的高部分锁存。这样,十位行地址将在AMMI快速存储器900的内部与十位列地址合并,以便形成存储在锁存器940中的并且能够用于寻址快速阵列960的二十位被分离的快速地址950。来自模式寄存器910的信号915将设置旁通多路复用器955,以便控制存储在地址锁存器940中的所述二十位被分离的快速地址作为快速地址957送到快速阵列960。
不管AMMI芯片900是否操作为一标准快速芯片或正模拟一DRAM芯片,一旦整个二十位快速地址950已被提供到快速阵列960,存储在快速阵列960的地址950中的内容就被从快速阵列960中取出并且通过总线970送到数据锁存器980。来自控制逻辑920的数据锁存控制(DLC)信号控制数据锁存器980。在适当的时刻,数据锁存器980驱动已经从快速阵列960读出的数据到数据总线990(和AMMI快速900的数据引线)上。然后,在读周期结束时,控制逻辑920使数据锁存器980变为三态。诸如快速页模式等的其它DRAM读访问被同样地处理。
在一个替换实施例中,AMMI快速芯片900是一个专用的DRAM仿真器件并且不能用作标准快速芯片。在此替换实施例中,不需要快速芯片的模式寄存器910和地址引线A10至A19。此实施例启动到AMMI芯片900的一个较低针计数接口,并且此实施例对限制空间的设计情况特别有吸引力。
另外,控制逻辑920包含用于当快速芯片900仿真DRAM时,翻译此快速芯片900不需要的DRAM周期的逻辑。如上所述,与DRAM不同,快速存储器不需具备DRAM通常都需要的扩充预充电或各种刷新周期。图11说明了仿真一DRAM的AMMI快速芯片的一个典型的刷新周期。由于仿真DRAM的一AMMI快速芯片将象一DRAM芯片一样工作,因此,图11说明了一个典型的用于DRAM的刷新周期。
注意,图11的刷新周期象图10的读周期一样开始。因此,在此刷新周期开始时,列地址选通信号(CAS#)变为高,并且当行地址选通信号(RAS#)变为低时一个行地址送到AMMI快速芯片900的地址引线A0至A19上。
但是,与图10的读周期不同,在图11的刷新周期期间,在(被刷新行的)行地址已经选通到AMMI快速存储器芯片900中以后,没有列地址被选通到此快速芯片中。而RAS#信号在一足够长的时期内保持低,以便允许指定的行被刷新(如果一DRAM被刷新),并且在整个这个时期内CAS#信号保持高。在刷新周期期间,AMMI快速芯片900的数据引线保持不定态(三态)。
再参照图9,当在DRAM仿真模式中时,控制逻辑920将识别一刷新周期式样并且在整个刷新周期保持数据锁存器为三态。另外的标准刷新周期(例如CAS在RAS之前(CBR)刷新。自刷新和隐式刷新周期)在现有技术中是公知的,并且有相同的处理。照这样,就实现了从AMMI快速芯片900至DRAM控制器的一个非粘合接口。
另一方面,通过采用一DRAM控制器控制对AMMI快速芯片900的访问,在保持DRAM仿真的好处的同时消除了与DRAM仿真有关的某些效率低的东西,其中的DRAM控制器已经被修改,以便对如下情况补偿,即被控制的某些-如果不是全部-“DRAM”实际上作为仿真DRAM的AMMI快速芯片900。在这样的情况下,将保持AMMI快速芯片900的行和列地址的多路复用。但是,DRAM控制器将被修改,使得DRAM控制器将不强迫AMMI快速芯片900等待一个长的(和不需要的)行预充电期直到结束。此DRAM控制器将还被修改以消除AMMI快速存储器900的刷新周期。这种方法的DRAM控制器将不强迫AMMI快速芯片900在长的(和不需要的)刷新周期期间不被占用。因此,就一可编程DRAM控制器来说,此DRAM控制器能够被编程以产生最优化的访问AMMI快速芯片的DRAM控制信号。美国专利No.4,785,428描述了一个适当的可编程DRAM控制器的例子,其名称为Programmable Memory Array Control Signals,作者为Bajwa等,公开于1988年11月15日。
即使当被控制的每种DRAM类型相互之间具有不同的时序周期,某些可编程DRAM控制器也允许由相同的控制器同时控制多于一种类型的控制器。这由提供多于一个的DRAM存储体以及允许此控制器具有用于每个存储体的被编程的不同访问周期时序来实现。然后将DRAM分组,使得在特定的存储体中的所有DRAM为同样的类型。
因此,在一个实施例中,一可编程控制器能够逐个存储体地编程,AMMI快速存储器900位于一个存储体内,而标准DRAM位于另一个存储体内。然后,此可编程DRAM控制器能够编程以便采用标准DRAM时序周期控制在所述DRAM存储体中的DRAM。此可编程控制器还能够编程以便控制正在以一种方法仿真DRAM的AMMI快速存储器900的存储体,其中的方法已经优化以满足AMMI快速存储器900的需求。
另一方面,不采用一可编程控制器,能够提供一种专用的不可编程DRAM控制器,此控制器已经为了对AMMI快速存储器900的访问而优化。此专用不可编程控制器能够专门控制AMMI快速存储器900,或者也能够控制一个或多个常规DRAM存储体。
在另外一个替换实施例中,已被设计对接到高速同步总线(即局部总线)的一个DRAM控制器能够用于控制对AMMI快速存储器900的访问。
仿真DRAM的一AMMI快速芯片900的编程以一种类似于写DRAM的方式执行。与一读操作的情况一样,控制逻辑920翻译快速芯片的控制针上的命令并且根据异步主存储器快速器件900所需的协议发送它们。
由于编程(和擦除)快速存储器需要比写DRAM更长的时间,因此,与那么较早提及的类似的方法能够用于将编程AMMI快速器件900所需时间的影响最小化。例如,不论何时需要写AMMI快速芯片900时,快速文件系统软件能够插入等待状态。通过采用AMMI快速器件900存储不频繁改变的数据和可ROM化的程序,并且通过将能够快速写的存储器技术补充到AMMI快速存储器900中,对AMMI快速存储器900的写的数量能够显著地减小。另一方面,可以提供一个写高速缓存以存储编程到AMMI快速芯片900中的信息。否则,AMMI快速存储器900的编程能够在空闲时期的情况下执行。
图12说明了采用一个或多个AMMI快速存储器芯片建立一与DRAM兼容的SIMM的方法。这种方法允许AMMI SIMM1200包含一个直接插入准备用于DRAM的一个SIMM插座中的AMMI快速存储器芯片。因此,一标准DRAM控制器能够控制AMMI SIMM1200。在不需要改变系统硬件的情况下,此AMMI SIMM使系统能够访问数据并且直接执行存储在快速存储器900中的代码,就好象这些代码存储在DRAM中。
图12说明了与单个AMMI快速芯片900在一起的一AMMISIMM1200。在一替换实施例中AMMI SIMM1200和两个或多个AMMI快速存储器芯片900在一起。
AMMI快速芯片900的一个优点是,如果在系统中有一个DRAM控制器,那么,对AMMI快速存储器芯片900的硬件接口将由于AMMI芯片仿真DRAM的能力而明显地简化。AMMI SIMM 1200还简化了快速主存储器增加到一计算机系统中。这是因为,AMMI SIMM 1200允许一DRAM控制器不仅对接到单独的快速存储器元件,而且对接到含有一个或多个AMMI快速器件900的工业标准SIMM。快速存储器兼容性所需的所有附加电路直接包含在AMMI SIMM 1200中。
当与相同密度的DRAM芯片比较时,AMMI快速存储器芯片900可以有几个额外的针。例如,AMMI快速芯片900可以有一个RY/BY#输出针,以便指示此芯片何时准备好被访问和何时由于忙而不能被访问(例如,当此快速阵列正在编程或当一快速块正在擦除时)。因此,在SIMM1200上的AMMI快速芯片900的RY/BY#输出针不是简单地连接(即“悬空”)。代替采用RY/BY#针以确定AMMI快速芯片900何时准备好或忙。系统软件采用在芯片900中的探询元件状态寄存器以确定此芯片的编程/擦除状态。
当在仿真DRAM时,AMMI快速芯片900将在行和列地址选通到芯片900中时,将其多路复用到地址引线A0至A9上。因此,当AMMI快速芯片900是AMMI SIMM 1100的一部分时,它将不使用地址引线A10至A19。这样,当AMMI快速芯片900和AMMI SIMM 1200在一起时,其地址引线A10至A19将不连接。
RAS#和CAS#都直接提供到AMMI快速芯片900。它们也和DRAM WRITE#信号一起提供到读/写逻辑1210。WRITE#信号表示一个读操作或一个写操作是否执行。AMMI SIMM 1200的逻辑1210将提供给AMMI SIMM 1200的RAS#、CAS#和WRITE#信号翻译成用于AMMI快速芯片900的适当的同步输出允许(OE#)和写允许(WE#)信号。
虽然不是所有的快速存储器芯片都需要外部的编程电压(VPP),但是,在图12的实施例中,AMMI快速芯片900需要一外部VPP(例如12伏)。VPP不作为标准SIMM接口的一部分提供给SIMM。但是,系统操作电压VCC(例如3.3或5伏)却作为标准SIMM接口的一部分提供给SIMM。因此,在图12中的实施例中,作为AMMI SIMM1200的一部分提供的VPP转换器1220获取系统操作电压VCC并将其转换到用于AMMI快速芯片900的VPP。适当的VPP电压转换器1220在现有技术中是公知的并已用于商业中。这些电压转换器1220一般起DC-DC转换器或电压泵的作用。
快速芯片900的WP#输入连接到快速存储器VCC输入。VCC也直接提供到AMMI芯片900。
最后,AMMI快速存储器900的PWD#输入耦合到SIMM内的编程电压监控器件1230,此监控器件1230诸如由Maxim IntegratedProducts,Sunnyvale,California制造的Maxin MAX 705。除非电源电压在容许的范围之内,VPP监控器电路1230将使AMMI快速存储器900保持在深度省电模式,因而防止AMMI快速存储器900的无意识的写或擦除操作。
这种方法允许含有AMMI快速存储器900的AMMI SIMM 1200采用不属于标准SIMM接口的一部分的VPP编程/擦除电压,并且还直接插入准备用于DRAM的插座中。当然,在一个替换的实施例中,其中AMMI快速存储器芯片900不需要所述外部电源VPP,AMMISIMM 1200将不需要VPP转换器1200。VPP监控器1230将能用于监控VCC。
对于一个实施例,其中的SIMM引出线允许附加产生特定的输入/输出信号,其中的一个信号能够在不编程或擦除时关断VPP。还有一个信号能够控制信号RP#以提供电源管理,并且控制信号WP#,使其控制块锁定或不锁定。
图13是一个方框图,说明了采用多个AMMI快速SIMM作为主存储器的一个计算机系统的主存储器的结构。在计算机系统1300中,微处理器1310包括单板DRAM控制器1330。DRAM控制器1330通过主存储器总线1320依次耦合到DRAM SIMM 1360和AMMI快速SIMM 1350。DRAM SIMM 1360和AMMI快速SIMM 1350共同形成微处理器1310的主存储器的一部分。
当微处理器1310访问存储在DRAM SIMM 1360或AMMI快速SIMM 1350中的代码或数据时,微处理器1310的DRAM控制器1330将一个访问请求送到主存储器总线1320上。此访问请求将根据主存储器总线1320的异步协议而送到DRAM SIMM 1360或AMMI快速SIMM1350。由于AMMI快速SIMM 1350含有一个或多个正在仿真异步DRAM器件的AMMI快速器件。因此,DRAM控制器1330将能够采用DRAM访问协议(即通过选通行和列地址)而访问AMMI快速SIMM1350。DRAM控制器1330将也为AMMI快速SIMM 1350产生DRAM刷新周期并提供预充电延迟,虽然在AMMI快速SIMM1350中的快速器件不需要它们。
此外,在计算机系统1300中,微处理器1310通过高速同步局部总线1325耦合到DRAM控制器1335。DRAM控制器1335通过主存储器总线1345依次耦合到DRAM SIMM 1365和AMMI快速SIMM1355。DRAM SIMM 1365和AMMI快速SIMM 1355共同形成微处理器1310的主存储器的一部分。
当微处理器1310访问存储在DRAM SIMM1365和AMMI快速SIMM 1355中的代码或数据时,微处理器1310将一个访问请求送到局部总线1325上。此访问请求将根据局部总线1325的同步协议而产生。然后,DRAM控制器1335将翻译此访问请求并采用主存储器总线1345的协议而将此访问请求送到DRAM SIMM 1365或AMMI快速SIMM1355。由于AMMI快速SIMM 1355含有一个或多个正在仿真异步DRAM器件的AMMI快速器件,因此DRAM控制器1330将能够采用DRAM访问协议(即通过选通行和列地址)而访问AMMI快速SIMM1355。DRAM控制器1335也将为AMMI快速SIMM1350产生DRAM刷新周期并提供预充电延迟,虽然在AMMI快速SIMM1355中的快速器件不需要它们。
第二高速缓存1375也耦合到局部总线1325。如果微处理器1310试图从DRAM SIMM 1360或1365或AMMI快速SIMM 1350或1355中访问数据或指令,而这些数据或指令在高速缓存1375中可获得,那么此访问将产生到高速缓存1375中而代替之。
注意,有一个计算机系统1300的替换实施例,其中计算机系统1300采用图13所述的主存储容量的一个子集。因此,在一个实施例中,微处理器1300将通过主存储器总线1300寻址其所有的主存储器。另一方面,微处理器1300将通过局部总线1325寻址其所有的主存储器。在这样的情况下,微处理器1310不需要包含单板DRAM控制器1330。
在另一个实施例中,在系统1300中没有第二高速缓存1375。此外,有一个替换实施例,其中由DRAM控制器1330或DRAM控制器1335控制的所有主存储器分别由AMMI快速SIMM1350或1355构成。此外,在另一个实施例中,局部总线1325通过一个总线桥耦合到主存储器总线1320,而不是直接耦合到微处理器1310。
用于快速主存储器的同步主存储器接口(SMMI)
由于处理器已经变得越来越快,因此,异步DRAM已经变得越来越不能为满足处理器所支持的处理速度而以足够快的速度提供数据和指令。最近的一种解决方案是已经介绍的同步DRAM。同步DRAM采用一外部时钟信号而使在DRAM集成电路内部的交错同步,因而与异步的所能提供的相比,同步DRAM提供了较快的数据串访问。
图14是一个方框图,说明了能够仿真一同步DRAM集成电路芯片的快速存储器集成电路。在图14描述的实施例中,同步主存储器接口(SMMI)快速存储单元1400结合了(图6的)SFI快速600的内部快速存储体交错功能和(图9的)AMMI快速存储器900的行和列地址多路复用。
在图14描述的SMMI快速1400的实施例中,根据模式寄存器1480中的设置的判定,SMMI快速1400工作于四个模式的其中之一。在第一模式-异步快速模式中,快速存储器1400象标准快速存储器一样读操作。在此模式中,第一地址中的内容的读操作必须在能够确定被读的第二地址之前完成。
在第二模式-同步快速模式中,时钟信号CLK提供给SMMI快速芯片1400并且确定一系列属于一数据串的地址,每个时钟分段信号(clock tick)对应一个地址。然后,存储在用于数据串的指定地址中的内容在连续的时钟分段信号期间按照提供地址的顺序输出。另一方面,如果当其工作在同步模式时单个地址提供给SMMI快速芯片1400,那么此数据串的其后的地址将在SMMI快速芯片1400内部产生,并且,然后此数据串将作为输出从此快速芯片中提供。
在第三种模式-异步DRAM(动态随机访问存储器)模式中,SMMI快速存储器1400仿真异步DRAM。因此,采用行(RAS#)和列(CAS#)地址选通信号将行和列地址选通到快速芯片1400中。然后,SMMI快速存储器1400在内部将这些行和列地址转换成单个地址,并且提供存储在此单个地址中的数据作为输出。此外,虽然此SMMI快速存储器1400不需要一扩充的预充电期或刷新,但是,当在所述异步DRAM模式中时,所述快速存储器1400象一异步DRAM一样响应预充电期和刷新周期。因此,当在所述异步DRAM模式中时,SMMI快速存储器1440能够被标准DRAM控制器控制。
最后,在第四模式一同步DRAM模式中,合并第二和第三模式的性能而产生仿真同步DRAM的快速存储器。因此,通过采用RAS#和CAS#信号选通行和列地址到此快速存储器中而确定被读数据串的地址。然后,根据其后的时钟分段信号,此数据串的数据从快速存储器中作为输出顺序地提供。
在一个替换实施例中,SMMI快速1400仅仅有一个模式-同步DRAM仿真模式,或者有同步DRAM模式和仅仅一个或两个其它的模式。
在图14所描述的四个模式实施例中,模式寄存器1480有一个多位输出模式允许信号ME,此信号反映了SMMI快速1400的当前模式。信号ME提供给存储体选择逻辑1474、总线逻辑1440、TTL级1472、逻辑和ATD控制块1470。根据SMMI快速器件1400的当前模式,这些电路各不相同地控制SMMI快速1400的功能。
因此,当SMMI快速器件1400操作在同步快速模式时,总线逻辑1440将象图6中的总线逻辑640一样起作用,而在其它模式中总线逻辑1440将无效。注意,在一个替换实施例中,其中的SMMI快速器件1400象一通用同步快速器件一样操作,但逻辑1440将不是芯片1400的一部分,而是由片外提供。
当SMMI快速器件1400同步地操作时,在同步快速或同步DRAM仿真模式中,TTL级1472、存储体选择逻辑1474、逻辑和ATD电路1470将控制对快速存储体A1410和B1420的访问交错。在一个替换实施例中,当SMMI快速器件1400处于这些同步模式中时,交错将在SMMI快速器件1400内多于两个快速存储体之间执行。
同样地,当SMMI快速器件1400仿真DRAM时,在异步或同步DRAM仿真模式中,TTL级1472、存储体选择逻辑1474、逻辑和ATD电路1470将通过地址多路复用器1492、1494控制行和列地址的多路复用,并且控制输出缓冲器1460的三态。
一基于SMMI快速器件的同步SIMM能够采用上述技术和图12的AMMI SIMM1200共同构成。这将通过将AMMI SIMM 1200和一个或多个SMMI快速器件1400(而不是AMMI快速器件900)放在一起,并且通过提供一时钟信号到每一个SMMI快速器件实现。
图15是一个方框图,说明了采用一些SMMI快速SIMM作主存储器的一计算机系统的主存储器结构。在计算机系统1500中,微处理器1510包括单板同步DRAM控制器1530。同步DRAM控制器1530通过同步主存储器总线1520依次耦合到同步DRAM SIMM 1560和SMMI快速SIMM 1550。同步DRAM SIMM 1560和SMMI快速SIMM1550共同构成微处理器1510的主存储器的一部分。
当微处理器1510访问存储在同步DRAM SIMM 1560或SMMI快速SIMM 1550中的代码或数据时,微处理器1510的同步DRAM控制器1530将一个访问请求放到同步主存储器总线1520上。此访问请求将根据同步主存储器总线1520的同步协议而送到同步DRAM SIMM 1560或SMMI快速SIMM1550。由于SMMI快速SIMM1550含有一个或多个仿真同步DRAM器件的SMMI快速器件,因此,同步DRAM控制器1530将能够采用同步DRAM访问协议(即,通过选通行和列地址和提供一时钟信号)访问SMMI快速SIMM1550。DRAM控制器1530也将为SMMI快速SIMM 1550产生DRAM刷新周期并提供预充电延迟,虽然在SMMI快速1550中的快速器件并不需要它们。
此外,在计算机系统1500中,微处理器1510通过高速同步局部总线1525耦合到同步DRAM控制器1535。同步DRAM控制器1535通过同步主存储器总线1545依次耦合到同步DRAM SIMM 1565和SMMI快速SIMM 1555。同步DRAM SIMM 1565和SMMI快速SIMM 1555共同形成微处理器1510的主存储器的一部分。
当微处理器1510访问存储在同步DRAM SIMM 1565或SMMI快速SIMM 1555中的代码或数据时,微处理器1510将一个访问请求送到局部总线1525上。此访问请求将根据局部总线1525的同步协议而产生。然后,同步DRAM控制器1535将翻译此访问请求并采用同步主存储器总线1545的同步协议而将此访问请求送到同步DRAM SIMM1565或SMMI快速SIMM 1555。由于SMMI快速SIMM 1555含有一个或多个正在仿真同步DRAM器件的SMMI快速器件,因此,同步DRAM控制器1530将能够采用同步DRAM访问协议(即,通过选通行和列地址并且通过提供一时钟信号)而访问SMMI快速SIMM1555。同步DRAM控制器1535也将为SMMI快速SIMM 1550产生同步DRAM刷新周期并提供预充电延迟,虽然在SMMI快速SIMM1555中的快速器件并不需要它们。
第二高速缓存1575也耦合到局部总线1525。如果微处理器1510试图从同步DRAM SIMM 1560或1565或SMMI快速SIMM 1550或1555中访问数据或指令,而这些数据或指令在高速缓存1575中可获得,那么此访问将产生到高速缓存1575中而代替之。
注意,有一个计算机系统1500的替换实施例,其中计算机系统1500采用图15所述的主存储容量的一个子集。因此,在一个实施例中,微处理器1500将通过主存储器总线1520寻址其所有的主存储器。另一方面,微处理器1500将通过局部总线1525寻址其所有的主存储器。在这样的情况下,微处理器1500不需要包含单板同步DRAM控制器1530。
在另一个实施例中,在系统1500中没有第二高速缓存1575。此外,有一个替换实施例,其中由同步DRAM控制器1530或同步DRAM控制器1535控制的所有主存储器分别由SMMI快速SIMM1550或1555构成。此外,在另一个实施例中,局部总线1525通过一总线桥耦合到主存储器总线1520,而不是直接耦合到微处理器1510。
在前面的说明书中,本发明已经参照具体的实施例进行了描述,但是,显而易见的是,在不脱离本发明的较宽的精神和范围的情况下,如后面所附加的权利要求所述,可以对本发明作出各种修改和变形。因此,本说明书和附图应理解为解释性的而不是一种限制。