CN1180430A - 不按顺序执行读写指令的存储器控制器 - Google Patents
不按顺序执行读写指令的存储器控制器 Download PDFInfo
- Publication number
- CN1180430A CN1180430A CN96193026A CN96193026A CN1180430A CN 1180430 A CN1180430 A CN 1180430A CN 96193026 A CN96193026 A CN 96193026A CN 96193026 A CN96193026 A CN 96193026A CN 1180430 A CN1180430 A CN 1180430A
- Authority
- CN
- China
- Prior art keywords
- address
- row address
- write
- access
- row
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0215—Addressing or allocation; Relocation with look ahead addressing means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/18—Handling requests for interconnection or transfer for access to memory bus based on priority control
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Dram (AREA)
- Memory System (AREA)
Abstract
一种存储器子系统(200),其中包括用于动态随机存取存储器(DRAM)(235)的后写缓冲器(204)。后写缓冲器(204)包括读循环逻辑电路,能使读访问优先于后写而被处理。数据按照一般的先进先出的原则从后写缓冲器(204)中被传送到DRAM(235);然而,为了利用页方式操作的优点,具有和当前存储器访问相同行地址的后写被给予优先权,优先于其它的后写,从而使得后写不按顺序写入。此外,在进入的读访问的地址和后写的地址之间进行比较,以便加速具有相同行地址的后写向存储器的传送;从而及时地服务于进入的读访问。一种改进的写访问缓冲器允许后写不按顺序传送向DRAM(235)传送而不失去对跳过后写的跟踪。
Description
本发明涉及一种用于基于微处理器的计算机系统的动态随机存取存储器的存储器控制电路,它可以后写指令,并且不用等待完成这种写指令而继续处理。
相关技术说明
动态随机存取存储器(DRAM)被用作大多数基于微处理器的计算机系统的主存储器,这是因为DRAM在存储容量、存取时间和成本之间提供了合理的折衷。正如现有技术中所熟知的控制DRAM的方法是:首先对一个或几个DRAM提供行地址;通过启动给选择的行预充电的行地址选通(RAS)信号选通行地址而进入DRAM;至少等待一个小的行存取时间间隔;对DRAM提供列地址;然后通过启动列地址选通(CAS)信号选通列地址而进入DRAM,从而从所访问行的一列中选择数据。
目前大多数可利用的DRAM以“页面方式”操作,其中存储在同一行(即页)而不同列中的数据可通过简单地改变列地址进行存取。它不必对DRAM重复行地址,因为在该行中的所有数据都已经可被读出或改变。因为由这一页面方式特点提供的速度优点,在改变行地址之前访问一行中的许多存储单元是非常有利的。例如,不必对DRAM重复行地址,因为在该行中的所有数据都已经可被读出或改变。因为由这一页面方式特点提供的速度优点,在改变行地址之前访问一行中的许多存储单元是非常有利的。例如,当与基于DRAM的存储系统传递大块的数据时,在行地址改变之前,顺序地址一般访问一个特定行中的大部分或全部的列。
在典型的基于微处理器的计算机系统中,数据按随机地址在存储器中进行读写,尤其当指令和数据被存储在同一个存储器系统中时,或当操作数数据被从一存储器单元区域中读出并把数据结果存储在一不同的地址单元区域中时。这样,页面方式操作的优点便经常因为存储器系统的“随机”访问而不能够被利用。
最近的微处理器的一个特点是允许后写。即,微处理器可以输出要在存储器单元中存储的数据。地址和数据临时存储在存储器控制器的缓冲器中,微处理器可以继续进行其下一个操作而不用等待对选择的存储单元完成写操作。可以提供足够的缓冲,从而在必须等待完成写操作之前允许由微处理器记入多个写操作。
利用后写特点的系统包括比较读地址和写地址的逻辑,以便确保对存储器系统的后续读操作不指向具有还未写入的后写数据的存储器地址。如果读地址相应于一后写地址,则存储器控制器可等待,直到完成后写操作时才响应读请求,另外,或者存储器控制器可以通过直接从后写缓冲器发送数据来响应读请求。如果读地址和所有的后写地址不同,则存储器控制器可以包括“读循环”逻辑,它允许存储器控制器在完成后写操作之前响应对不同单元的读访问。
已知的执行后写操作的存储器控制器根据“先进先出”进行操作。这就是说,这些后写以由存储器控制器接收这些后写的相同顺序写入存储器。如果顺序的后写操作被指向DRAM不同页中的地址,则存储器系统将遭受由行访问时间引起的时间损失。即使两个在缓冲器中的后写指向同一存储器页,常规的存储器控制器也不能按顺序写这两个后写,如果在其之间指向不同页的第三个后写被记入的话。而且,如果存储器控制器允许读循环操作发生,则读访问可能来自和前一个后写或后一个后写不同的页中。这将再次引起行访问时间损失。如果当因为频繁的页转换而使存储器控制器变慢时微处理器不能记入另外的写操作或必须等待读数据,则整个系统的性能变差。
这样,可以看到具有后写能力和读循环能力的存储器控制器的许多优点被由于在存储器访问之间改变行地址而引起的时间损失削弱了。
发明摘要
本发明的存储器控制器特别设计用于通过重新排列读写周期访问请求的处理顺序来减少在利用页面方式访问的存储器系统中的用于读写周期访问的存储器访问时间。更特别地,这种存储器控制器能够这样重新安排读写周期访问请求,使得请求访问当前页(在页面方式寻址方法中,被译为行地址)的所有读写访问在要求访问不同页(行)的读写周期访问请求之前进行。在可替换的实施例中,所有的读在任意写之前执行。在这种实施例中,读当前页在读新页之前完成,写当前页在写一个新页之前完成。
如上所述,在一般的寻址方法中,在要求改变行地址的存储器访问之前,存储器控制器在新的行地址可被选通进入DRAM之前必须等待一个特定的时间间隔才能使该DRAM新行成为被完全充电的。这个延迟在该新行地址的表述中叫作行地址预充电时间。有利的方面在于,本发明的存储器控制器这样重新安排读写周期访问,使得对同一页的多个访问一道完成。这样,本发明的存储器控制器对于按其原始顺序处理可能发生存储器循环请求的相同行通过消除在每个周期访问之间的行地址预充电时间来减少总的存储器访问时间。
本发明的一个方面是提供一种控制器,它控制接收多个写访问请求的动态随机存取存储器(DRAM)系统,所述多个写访问请求具有各自的地址和要在DRAM系统的这些地址中写入的有关数据。每个写地址具有行地址部分和列地址部分。所述存储器控制器包括具有许多存储单元的缓冲器,对于每个写访问请求,该缓冲器在可以把数据写入DRAM系统之前暂时存储写地址和相关数据。存储的地址和数据按照相应于收到写访问请求的顺序被保存在缓冲器中。一访问顺序控制电路选择和多个写访问请求中的一个相关的地址和数据作为对DRAM系统的下一个访问。该访问顺序控制电路包括比较器,用来比较每个存储的地址的行地址部分和当前访问的行地址部分,并识别具有和当前访问的行地址部分相同的各个行地址部分的写访问请求。该访问顺序电路还包括相应于比较器的一访问选择器电路。该访问选择器电路在选择具有和当前访问的行地址部分不同的行地址部分的不等同写访问请求之前选择一个相同的写访问请求作为对DRAM系统的下一个访问。即使在等同写访问请求之前作出了不相同写访问请求也要选择一个相同写访问请求。
存储器控制器也可以接收具有一个读地址的读访问请求。读地址具有行地址部分和列地址部分。比较器比较读地址的行地址部分并识别读地址的行地址部分是否被指向当前访问的行地址部分。该访问选择器电路在选择不等同写访问请求作为下一个访问之前选择该读访问请求作为下一个访问。此外,比较器最好还包括逻辑电路,用来比较读地址列地址部分的至少一部分和缓冲器中多个写地址的列地址部分的相应的部分。地址选择器电路最好在读地址的行地址部分和当前访问和行地址部分相同且读地址的列地址部分的一部分和相同的写访问请求的列地址部分的相应部分不同时,在任何写访问请求之前选择读访问请求。
本发明的另一个方面在于提供一种用于控制访问具有多个存储器存储单元的动态随机存取存储器(DRAM)系统的方法。DRAM系统通过对其提供行地址然后提供列地址被访问。DRAM系统通过只改变访问之间的列地址而对具有相同行地址的多个存储单元提供访问。该方法包括在缓冲器中存储多个写访问请求中每一个的地址和相关数据的步骤。多个访问请求的每个地址包括行地址部分和列地址部分。每个地址和相关的数据按照存储器控制器接收这些访问请求的顺序被存储。该方法还包括在第一行地址和第一列地址执行对DRAM系统第一访问的步骤;并比较第一行地址部分和在缓冲器中存储的每个访问请求的行地址部分。当在缓冲器中至少一个访问请求具有和第一访问的行地址部分相同的行地址部分时,该方法选择具有和第一访问的行地址部分相同的行地址部分的所述至少一个访问请求中的最早接收的请求作为对DRAM系统的第二访问。在具有不同的行地址部分的较早访问请求之前选择具有相同行地址部分的访问请求。当在缓冲器中没有访问请求具有和第一访问的行地址部分相同的行地址部分时,该方法选择缓冲器中的最早收到的访问请求作为第二访问。关于本发明的第一方面,该方法最好包括比较缓冲器中的行地址部分和读访问请求的列地址部分的至少一位与多个写访问请求的行地址部分和列地址部分的相应的位的步骤。当读访问的行地址部分和写访问请求的至少一个的行地址部分相同时,在列地址部分的相应的位不同时,该方法在具有相同的行地址部分的写访问之前进行读访问。否则,该方法在读访问的列地址部分的至少一位和一个写访问的列地址部分的至少一位相同时进行写访问。
本发明的另一个方面在于提供一种方法,用于当至少一个后写具有指向和与DRAM系统的当前访问的行地址相同的行地址的存储单元的地址且至少一个后写具有指向行地址和当前访问的行地址不同的存储单元的地址时,在具有后写请求的动态随机存取存储器(DRAM)系统中选择对于DRAM系统的下一个访问,该方法包括在选择任何具有不同的行地址的写访问之前,选择具有相同的行地址的最早接收的写访问作为下一个访问的步骤;并且当没有写访问具有相同的行地址时,则选择具有不同的行地址的最早的写访问作为下一个访问。
本发明还有一个方面是提供一种缓冲器电路,它可以按照顺序接收数据并存储在缓冲器电路的多个存储单元中,并可以不按顺序从缓冲器中输出数据,该缓冲器电路包括用来识别接收下一个数据输入的下一个空存储单元的输入指针;识别作为下一个输出源的下一个满存储单元的输出指针;以及独立地控制输入指针和输出指针的指针控制电路,所述指针控制电路包括响应数据的预定特性的优先调度程序,用于选择一个满存储单元作为下一个输出源。最好数据包括用于识别动态随机存取存储器(DRAM)系统中的存储单元的地址,并且数据的预定特性包括关于地址的行地址部分是否与DRAM系统中当前访问的存储单元的行地址部分相同的比较结果。
附图的简要说明
图1是包括存储器子系统的计算机系统的简化方块图。
图2是图1的存储器子系统的简化方块图。
图3是说明在示例的DRAM系统中读访问的时序图。
图4是说明在示例的DRAM系统中写访问的时序图。
图5说明对于DRAM系统的不同的行相继的写操作的时序。
图6说明对于DRAM系统的相同的行的相继的写操作的时序。
图7说明含有后写FIFO缓冲器的存储器子系统的方块图。
图8说明按照本发明的具有后写缓冲器和存储器控制器的存储器子系统的方块图。
图9是说明一个实施例的表,说明对于读访问请求和后写的行地址部分的组合和当前行地址比较从而选择下一个访问地址。
图10是说明另一个实施例的表,说明对于读访问请求的和后写的行地址部分的组合和当前行地址比较从而选择下一个访问地址。
图11是说明对于可能包括页(即行)命中、页丢失或页命中和页丢失的后写的组合选择下一个写访问地址的表。
图12是图8的比较与指针逻辑的更详细的方块图。
图13说明图8和图12的后写缓冲器的高级功能表示。
图14说明产生基本入口指针的图12的指针控制逻辑的功能逻辑。
图15说明产生输出指针的图12的指针控制逻辑的功能逻辑。
图16说明产生输入指针的图12的指针控制逻辑的功能逻辑。
优选实施例的详细说明
图1说明属于本发明的示例的计算机系统100的一部分。计算机系统100包括例如含有微处理器113和高速缓冲器115的CPU模块110。如现在技术中熟知的那样,CPU模块110包括其它一般电路,例如总线控制器、总线接口和类似电路,这些在图中没有示出。CPU模块110通过系统总线125和存储器子系统120通信。存储器子系统120还包括存储器控制器130和多个动态随机存取存储器(DRAM)135。一个典型的计算机系统100还包括其它部分,例如I/O接口、盘驱动和盘驱动控制器、视频显示器、键盘等,为了突出本发明这些部件在图中没有示出。应当进一步理解,其它的元件也可以通过系统总线使用直接存储器存取(DRAM)处理访问存储器子系统120。
图1中的系统总线125被表示为合成总线。本领域技术人员应该理解,系统总线125包括多个地址、多个数据线和多个控制线。控制线可以包括,例如,IO/MEM线,它在CPU模块110和I/O装置(未示出)的传输或CPU模块110和存储器子系统120的传输之间选择;和读/写线,它在从存储器子系统120向CPU模块110的传输(读)或从CPU模块向存储器子系统120的传输(写)之间选择。它还可以包括字节选择线,用于确定在多字节字中传递哪些字节的数据;以及一个或几个循环开始信号,它被CPU模块110中的微处理器113启动,以便开始一个存取周期。例如,在Intel的微处理器中,例如80486,奔腾或其它芯片,微处理器启动地址选通信号(ADS),从而启动存取周期。
存储器子系统120响应在地址、数据和控制线上各自的信号开始存取周期,并且,如果读访问被微处理器113选择,则数据从由地址信号和字节选择信号确定的存储器单元通过系统总线125的数据线传送到微处理器113。如果由微处理器113选择写访问,则通过数据线把数据从微处理器113传送到存储器子系统120。
图2是说明DRAM135的基本操作的示例的存储器子系统120的简化的方块图,图3和4说明对于DRAM进行读访问(图3)和写访问(图4)的示例的时序图。如图所示,存储器控制器130包括地址范围译码器138、时序发生器140、行/列地址多路转换器(MUX)142和双向数据缓冲器144。存储器控制器130接收在多个地址线154上的来自系统总线135的多个地址位,为说明方便多个地址位表示为地址位AD2到AD31。存储器控制器使用字节选择线代替地址位AD0和AD1用来选择要被存取的4字节字的特定字节。在某些系统中,存储器字可以具有较大的字节数,并且地址位AD2或较高的位可由附加的字节选择线代替以便在较大的字节数之间选择。在这里说明的实施例中,地址位AD20-AD31被用来响应在系统总线135上的访问而选择一个特定的子系统,例如选择存储器子系统120。此外,在所述实施例中,地址位AD2-AD21被用来选择在存储器子系统120内的一个特定的存储单元。应当进一步理解,地址位AD0-AD31对于存储器子系统120的分配将按照存储器子系统120的存储器容量和选择的地址范围而改变。
地址线154被提供给行/列地址多路转换器142。本领域技术人员应该理解,地址标准化电路(未示出)可被方便地包括在存储器子系统120中,用来在把地址提供给行/列地址多路转换器142之前对地址标准化。在示例的使用Intel系列的处理器的基于DOS的系统中,地址空间包括例如由向视频RAM分配一部分地址范围而产生的许多“空穴”。这些地址不能作为存储单元被操作系统直接寻址。因为对应于这些“空穴”的物理存储器单元将没有其它用途,地址标准化电路转换空穴开头以上的逻辑地址,使访问地址为相应于“空穴”单元的物理地址。这种地址标准化电路是本领域中熟知的,因而在图2、7和8中没有示出,这里也不再说明。
时序发生器140响应来自系统总线125的控制信号而产生的DRAM135的合适的访问信号。地址范围译码器138译码提供给存储器控制器130的地址(包括地址位AD2-AD31),并确定提供的地址是否在分配给存储器120的地址范围之内,当提供的地址在这个地址范围之内时地址,范围译码器138向时序发生器140提供有效输出信号。当在线150上的地址选通(ADS)信号被启动而且地址范围译码器138的输出有效时,时序发生器140启动一个对DRAM135的访问。如果在读/写线152上的R/W信号被选择用于读访问,则该访问被作为读访问被启动。类似地,当R/W信号被选择用于写访问时,则定时发生器启动一个对DRAM135的写访问。
存储器控制器130还接收在相应的多个数据线156上的多个数据信号(D0-D31)。此处所述的示例的系统是32位系统。应当理解,以下的说明应当适用于每个数据字具有较多位的系统。
定时发生器140在线160上发出行地址选通(RAS*)信号,在线162上发出列地址选通(CAS*)信号,在线164上发出写选通(WE*)信号,在线166上发出输出允许(OE*)信号,并且在线168上发出多路转换器选择信号(S)。(这里在信号名之后使用星号(*)表示低态有效信号。)可以向多个DRAM存储体提供多个RAS*和CAS*,使得只有某些DRAM被每个RAS*和CAS*信号控制。
下面,将结合图3和4的时序图对示例的存储器子系统120的操作进行简明的说明。熟悉DRAM的人员将理解DRAM电路一般只具有为完全寻址在每个电路中的存储器单元所需的一半地址线。例如,为了寻址具有1,048,576个存储器位置的1M的DRAM,需要20个地址位;不过,因为引线限制并因为DRAM的操作特性,只提供10个地址引线。为完全寻址DRAM所需的20个地址位被向DRAM进行多路转换,每次10个地址位。详细地说,多路转换选择信号(S)以第一逻辑电平首先被供给行/列地址多路转换器142,从而提供系统总线125中地址的第一个10位作为行地址,如图3中地址(ADDR)信号的ROW部分所示。在历史上地址位的最高有效位被作为行地址提供,不过,也可以使用具有最高有效位的一部分以及最低有效位的一部分的其它地址位的组合。例如,见美国专利US NO.5,247,643,其中的教导列于此处供参考。在选择用于行地址的地址位之后,时序发生器电路140启动RAS*信号,如图3所示。在由DRAM135的特定特性确定的合适的延迟之后,时序发生器140转换选择线168上的电平,使行/列地址多路转换器142提供剩余的地址位作为列地址位,如图3中ADDR信号的COLUMN部分所示。时序发生器140启动CAS*信号,从而使列地址被选通进入DRAM135。因为这是一个读访问,所以在线164上的WE*信号无效而在线166上的OE*信号有效,从而使得在一个由列地址访问时间确定的短延迟之后从DRAM输出有效数据。缓冲器144也由OE*信号控制,以便向系统总线125的数据线156传递从DRAM135输出的数据。(在某些系统中,DRAM135可以不用缓冲器144而直接和系统总线125连接。)
图4说明用于写访问的类似的时序;不过,在提供列地址位和启动CAS*信号之前,在线164上的WE*信号被启动,而在线166上的OE*信号是无效的。这样,数据通过缓冲器144从系统总线125传递给DRAM135并存储在其中。
如图3、4所示,对于DRAM135的访问包括两部分操作,其中通过RAS*信号的启动行地址被提供给DRAM135并选通进入DRAM。这使DRAM开始访问共享公共行地址的多个数据存储单元。在一个称作行访问时间的延迟之后,来自整行的数据被提供给每个DRAM内的输出多路转换器。在一个行中的被访问的许多数据位在称作位于该行内的各列。此后,当列地址被加于DRAM135并且CAS*信号被启动时,列地址选择一个要从每个DRAM135被输出的数据列。此外,在写访问中,被提供给每个DRAM135的输入的数据被存储于由选择的列地址指定的列处的选择的行中。
如果新的地址要被提供给DRAM,则必须使RAS*信号无效一般足够的时间,以便使内部行地址预充电并再次被加上新的行地址。相应于行访问时间的延迟在列地址可以被施加并且为读或为写而选择特定的列之前再次发生。这样,如图5所示,每启动新的行访问一次将发生一次基本的时间损失。
当前大多数DRAM都通过操作所谓的页面方式来部分地减少行访问损失,其中对DRAM的同一行中的多个列的顺序访问可以在没有新的行访问的条件下进行。详细地说,如图6所示,对同一行的大量访问通过对DRAM提供行地址并使RAS*信号有效而启动。此后,第一列地址被加于DRAM并使CAS*信号有效。RAS*信号在第一访问之后有效。而只有CAS*信号被无效,提供一个新的列地址,并且可得到来自新的列的数据或只在短的列访问时间之后存储新列的数据。这样,当在同一行中发生一系列访问时,便获得了节省时间和好处。
如上所述,如果微处理器13或其它的存储器访问装置以无顺序方式提供地址,那么,由DRAM存储器系统的页面方式操作提供的省时,便不会获得。例如,微处理器113可以在相应于DRAM135的一个特定行的地址写入数据,然后从相应于DRAM135的不同行的地址读数据或写数据。在这种情况下,需要改变行地址,因而发生上述的行访问时间损失。
在允许对存储器后写的基于微处理器的系统中时间损失可能更加严重。如上所述,在具有后写的系统中,例如图7所示的系统180中,微处理器113向系统总线125提供地址、写数据和合适的控制信号,从而对存储器子系统120启动写访问。不等待完成这个写访问,如来自存储器子系统120的忙信号的有效与随后的无效所示,微处理器113继续发出总线处理。为了适应后写,在存储器子系统180中的存储器控制器182包括后写缓冲器184,它用来存储要被写入DRAM135中的地址和数据。在公知的后写系统中,后写缓冲器184可以包括用于一个以上的后写的存储器,并按照先进先出(FIFO)缓冲器操作。存储器控制器182通过在后写缓冲器184的输出上向DRAM提供地址而作为如上所述的行地址部分和列地址部分来向DRAM135传递最早的后写数据,其区别在于地址和数据由后写缓冲器172提供而不是直接由系统总线125提供。用于把写访问请求信息存入FIFO缓冲器184和用于向DRAM135提供来自FIFO缓冲器184的地址和数据输出的时序由时序发生器和FIFO控制器186通过控制总线187提供。时序发生器和FIFO控制器186以类似于上述的方式控制行/列地址多路转换器(MUX)188。
一般地说,当微处理器113启动对于存储器子系统120的读访问时,微处理器113在其继续进行下一操作之前需要具有响应数据。这样,示例的后写存储器系统提供读循环方式,在该方式中存储器控制器182先于待处理的后写在系统总线125上给出读访问请求。即,如果在当前访问被完成时读请求是未决的,则读访问被进行,而不管后写是否未决,除非读访问请求指向和后写相同的地址单元。因为重要的是读访问检索最当前的数据,已知的后写系统当读请求指向和后写相同的地址时进行两个操作之一个操作,后写缓冲器被清除以便把写数据写入DRAM135,或者,可替换的是,通过用类似方式输出来自后写缓冲器184的被请求数据到高速缓冲存储器子系统来满足读请求。读循环方式被读/写地址多路转换器(MUX)190支持,它在写访问期间接收来自后写FIFO缓冲器184的输出的地址信息,并在读访问期间接收直接来自系统总线125的地址信息。数据输出缓冲器192缓冲在系统总线125上的来自DRAM135的输出数据。
常规的后写系统当一系列后写指向DRAM135的不同的行时保留有时间损失。特别是当存储器控制器182访问FIFO后写缓冲器184时,当两个顺序的后写指向DRAM135中的不同的行时,它必须改变行地址。此外,当对和当前访问行不同的行产生读访问时,将遭受行访问时间损失。在顺序地址指向同一页(即行)时常规的存储器控制器通过检测来局部地减少这个时间损失。如图7所示,其中包括一行锁存器和比较器194,它接收读/写地址多路转换器190的输出的行地址部分。行锁存器和比较器194在RAS*信号有效时锁存前一个访问的行地址部分。锁存的行地址部分和当前地址的行地址部分比较,确定两个行地址是否相同。如果两个行地址相同,则行锁存器和比较器194对时序发生器和FIFO控制器提供有效信号,使其保持当前页(即行)打开,并对新的当前访问通过产生CAS*信号只改变列地址。
图8说明按照本发明的存储器子系统200。详细地说,存储器子系统200包括其中含有改进的后写缓冲器204的存储器控制器202。存储器控制器202包括时序发生器和缓冲器控制器206,下面将对其详细说明。时序发生器和缓冲器控制器206通过双向控制总线208和后写缓冲器204相连。
读/写地址多路转换器210、行/列地址多路转换器212和数据输出缓冲器214以和上述相应元件相同的方式操作。
图8的存储器控制器202还包括行地址锁存器220,它接收并锁存读/写地址多路转换器210的输出的行地址部分。行地址锁存器220在有效的RAS*信号发生时被锁存,使得当前访问的行地址部分在每当行地址被提供给DRAM时被保存。提供行地址锁存器220的锁存输出作为时序发生器和缓冲器控制器206的输入。
如同诸如图7所示的常规的后写存储器控制器一样,在图8的后写存储器控制器202中的时序发生器通过行地址锁存器220保持跟踪当前访问的行地址。和常规的存储器控制器不同的是,时序发生器和缓冲器控制器206包括比较和指针逻辑230,它比较在后写缓冲器204中存储的当前打开页(即行)的行地址部分,确定任何有效的后写请求是否具有相应于当前访问DRAM135的锁存行地址的地址部分。比较和指针逻辑230还通过一输入指针指示在后写缓冲器204内的单元,在该单元中存储输入的写请求的地址和数据,并通过一输出指针指示从其输出被选择为对DRAM135的下一个访问的后写的地址和数据的单元。
时序发生器和缓冲控制器202还接收系统总线125上的当前地址,并且当在读/写选择线152上的信号电平指示系统总线125上的访问请求是读访问请求时,在时序发生器和缓冲器控制器206内的比较和指针逻辑230则比较请求的读地址的行地址部分和锁定的行地址部分,确定它们是否相同。比较和指针逻辑230还比较请求的读地址的行地址部分和后写的行地址部分,确定它们是否一致。读地址、后写地址以及锁存的行地址之间比较的结果确定对于DRAM135的哪一个访问应被选作下一个访问。
对于本发明的第一最佳实施例,在图9的表300中说明了DRAM的下一个访问的选择。表300的每一行具有三栏,其中第一(最左)栏标为“READ”的是请求的读访问的行部分和锁存的行地址(即当前访问的行部分)比较的结果;标为“WRITE”的第二(中)栏是后写的行部分和锁存的行地址以及和请求的读访问的行部分比较的结果;标为“ACCESS”的第三(最右)栏表示要作为下一个访问的施加于DRAM135的请求。
如表300的第一行301所示,当请求的读访问和当前访问不匹配且后写缓冲器为空时,该读访问将作为下一个访问施加于DRAM135,通过时序发生器和缓冲器控制器206请求把RAS*信号变为无效,并且在预定的延迟以便使行地址预充电之后,对DRAM提供读地址请求的行地址部分,以便启动RAS*信号并按照前面所述继续进行这一访问。对于这一访问没有提供特别的速度优点。
如表300的第二行302、第三行303和第4行304所述,当请求的读访问和当前访问不匹配时,并且后写缓冲器204不为空时,被选作下一个访问的访问取决于后写缓冲器204中的后写的行内容。详细地说,如第四行304所示,如果一个或几个后写具有和当前锁存的行地址相应的行地址部分,则可以选择具有相应的行地址部分的最早的后写作为下一个访问,其好处是不必改变行地址,而只需选通新的列地址便可进行访问。特别在最佳实施例中,时序发生器和缓冲器控制器206提供两种操作模式,可以通过在配置寄存器(未示出)中的可编程模式位进行选择。在其中所述的第一模式中,具有和当前锁存行地址相同的行地址部分的后写比具有不同行地址部分的读具有优先权。在第二模式中,读访问总比后写具有优先权。根据地址的混合,不同的应用将设定模式位,以便按照一特定的应用哪种模式能提供最佳的总的执行时间来选择第一模式或第二模式。可以对各种应用进行以实验为基础的运行时间试验,以便确定对于特定应用哪种方式最好。
如果没有后写具有和当前锁存的行地址匹配的行地址部分,则请求的读访问的行地址部分和所有后写的行地址部分比较。如果请求的读访问的行地址部分和所有后写的行地址部分不同,如表300的第二行302中的项“NEW(DIF)”所示,则选择该读访问作为下一个访问。在另一方面,如果请求的读访问的行地址部分和一个或几个后写的行地址部分匹配,则提供最早的后写作为下一个访问。这一规定是为了确保对于可能仍在后写缓冲器204中登记的最近被写数据单元的读访问可以接收正确的数据。如上所述,时序发生器和缓冲控制器204可以包括逻辑电路(未示出),该逻辑电路用来当读请求指向一具有目前在后写缓冲器204中存储的一后单元时提供登记在后写缓冲器204中的数据作为输出数据。
如表300中的第五行305和第六行306所示,当读访问请求的行地址部分和锁存的行地址部分匹配时,当后写缓冲器204为空(行305)或后写缓冲器204只含有对具有和当前锁存的行地址部分不同的行地址部分的单元的后写时,则该读访问作为下一个访问执行。这样使得到不必改变访问之间的行地址而提高速度的优点。
如表300的第七行307所示,当请求的读访问的行地址部分和一个或几个后写的行地址部分与当前锁存的行地址部分匹配时,则选择最早的匹配的后写作为下一个访问。
在每个当前访问结束时重复上述处理,以便确定请求的读访问和后写中的哪一个将被选作下一个访问。应当理解,时序发生器和写缓冲控制器206包括逻辑电路,该逻辑电路用来确定后写缓冲器204为满的时候,使得可以选择一个或几个后写作为对DRAM135的下一个访问,而不管读访问的行地址部分和当前锁存的行地址部分的比较结果。
由上述可见,由表301表示的实施例当请求的读访问的行地址部分和一个或几个后写的行地址部分匹配时具有剩余的读等待时间。不过,虽然读访问可以是对同一DRAM行进行的,但主要还是对行内的不同的列进行读访问。在这种情况下,在从不同的列中读数据之前,不必存储在一列中的后写数据。这样,如果在读访问地址和后写地址之间的比较被扩展到列地址部分,则可以避免大量的冲突,使得在后写之前可以完成读访问。例如,通过比较请求的读访问和后写地址部分的一位,在同一行中冲突的几率可以大约减少到50%。被比较的每个附加位进一步减少冲突的几率;然而,必须时每个后写的每个附加位提供一个比较器。在为比较所需的附加逻辑电路和由每个附加位提供的读等待时间的可能的减小之间可以进行折衷选择。
图10中的表310说明如刚才所述当把读请求和后写的比较扩展到列地址部分时对于下一个DRAM访问的另外的选择。表310和表300类似,表310的行列311相应于表300的行301,并且依此类推;不过,另一个实施例关于行312、313和317的操作是不同的,并且增加行318。
在行312和313的第二栏中,项“NEW(DIF)”和“NEW(SAME)”现在表示扩展的比较,其中请求的读访问的行地址部分和每个后写的行地址部分如以前那样进行比较,不过,请求的读访问和列地址部分的选择的1位或几位和后写也进行比较。这样,只要行地址和列地址的选择的一位或几位是相同的,则在对一新行地址的请求读访问范围内将选择对一新行地址的后写。否则,请求的读访问将被选择作为下一个访问。
在行317和行318中,当请求的读访问与一个或几个后写具有和锁存的行地址部分匹配的行地址部分时,通过选择的列的一位或几位的进一步比较确定选择哪一个访问作为下一个访问。如行317所示,如果行地址部分相同而选择的列的一位或几位不同,则选择续访问作为和当前访问相同的DRAM行中的下一个访问,这样便减少了读等待时间。在另一个方面,如行318所示,如果行地址部分相同且列地址部分的选择的一位或几位也相同,则具有相同行地址部分和相同的列地址部分的选择的一位或几位的最早的后写被提供作为对DRAM135的下一个访问。
表300和310说明了在读访问和写访问之间的选择。图11的表320更详细地说明按照是否任何后写指向和当前访问相同的行而在后写访问之间的选择。表320包括4个项的行321、322、323和324。行321-324每行中的第一栏表示后写缓冲器是否包括至少一个指向和当前访问的行地址部分相同的行的后写访问(例如页命中)。行321-324每行中的第二栏表示后写缓冲器204是否包括至少一个指向和当前访问的行地址部分不同的行的后写访问(例如页丢失)。第三栏表示从后写缓冲器204中选择哪一个写访问作为下一个写访问。
如第一行321所示,当对于当前行或对于新行没有后写存在时,将不进行写访问。如第二栏322所示,当存在对于一个或几个新行的后写(例如页丢失)而不存在对当前行的后写时,则对新行进行下一个写访问并选择最早的后写作为下一个写访问。如第三行323所示,当存在对于当前行的至少一个后写时(例如页命中),则对当前行进行下一个写访问,并选择最早的后写作为当前行的下一个访问,如第4行324所示,即使存在比对当前行的后写早的对新行的后写时,也将给予对当前行的后写的优先权并对当前行进行下一个写访问。对当前行的最早后写被选作下一个写访问。
实现图8-11的实施例需要非常规的后写缓冲器204,因为后写未必从缓冲器中以它们被存入时的顺序输出。因而,不能使用常规的先进先出(FIFO)的缓冲器。当后写可以不按顺序被取出时保持有效后写单元的跟踪以及比较行地址部分和列地址部分的选择的位由在时序发生器和缓冲控制器206内的比较和指针逻辑230完成。在图12-16中更详细地说明比较和指针逻辑230。
图12说明比较和指针控制逻辑230的总的方块图,也说明后写缓冲器204的附加的细节,后写缓冲器204包括缓冲器阵列400,它又包括多个缓冲器单元,在最佳实施例中包括401- 404 4个单元。每个缓冲器单元401-404用来存储几个数据位(例如32位)、几个地址位(例如地址AD2-AD21),和准备(RDY)位。后写缓冲器204最好是双端口缓冲器,它提供用于数据写和数据读的独立的地址容量。此外,在写缓冲器204内的数据作为输出数据被直接地提供给比较和指针控制逻辑230,如下所述。例如,图12说明的后写缓冲器204包括读选择电路410,它响应来自比较和指针控制逻辑230的输出指针,从后写缓冲器204中选择缓冲器单元401-404的一个中的数据作为输出数据。例如,读选择电路410最好是1-4(1-to-4)译码器。另外,输出指针可被用于寻址输出多路转换器(未示出)。
后写缓冲器204还包括写选择电路412,它响应输入指针和来自比较和指针控制逻辑230的缓冲器写信号而对选择的一个缓冲器单元401-404产生写信号。当缓冲器写信号被启动时,写选择电路412译码输入点并把数据和地址信息以及缓冲器阵列400的输入端上的准备信号写入译码的缓冲器单元401-404中。
如图12所示,每个缓冲器单元401-404的地址部分进而被均匀分为行部分(例如分别为ROW0、ROW1、ROW2、ROW3)和列部分(例如分别为COL0、 COL1、COL2、COL3)。各个准备位用类似方式标识(例如分别为RDY0,RDY1,RDY2,RDY3)。
比较和指针控制逻辑230包括指针控制逻辑部分420和多个比较器430-438。比较器430-433是读比较器,它比较行地址部分和在系统总线125上的读请求的列地址部分的选择位与在缓冲器阵列400中每个后写的列部分的选择位和地址部分。例如,比较器430比较读请求的行地址部分和选择的列地址部分与来自缓冲器单元401的ROW0和选择位COLO。比较器430的输出是一个匹配信号(MATCH0),它表示读请求指向和在缓冲器位置401中存储的后写相同的行地址和可能是相同的列地址。(如果比较器430被扩展为包括所有的列位,则比较器430可以确定一个准确的匹配。)用类似方式,比较器431、432和433提供各个输出MATCH1,MATCH2和MATCH3,用来分别表示在单元402、403和404内的后写之间的匹配。
比较器434接收当前读请求的行地址部分和来自行地址锁存器220(图8)的锁存的行地址。比较器434在两个行地址部分相同时输出有效的READHIT信号,表示读访问请求指向当前打开的存储器页(即DRAM135的当前访问行)。
比较器435接收来自缓冲单元401的行地址部分(ROW0)和来自行地址锁存器220的锁存的行地址部分。当两个行地址部分相同时比较器435提供有效的HIT0输出。类似地,比较器436-438响应锁存的行地址和ROW1、ROW2、ROW3信号之间分别所作的比较提供各个输出HIT1、HIT2和HIT3。在另一个实施例中,MATCH和HIT比较器可被时分复用,以便减少所需硬件的总量。
MATCH0,MATCH1、MATCH2、MATCH3、READ、HIT、HIT0、HIT1、HIT2和HIT3信号和RDY0、RDY1、RDY2、RDY3信号一道作为输入被提供给指针控制逻辑420。准备信号和匹配信号以及命中信号组合,使得指针控制逻辑420只响应命中信号并和尚未被写入DRAM135中的后写的匹配信号。这样,在存储和后写有关的数据之后,为禁止各个命中和匹配信号,只需清除各自的准备信号。
指针控制逻辑在线450上产生读选择输出信号以便控制读/写地址多路转换器210。当读命中发生时,启动读选择信号,并按照图10的表310选择读访问,如上所述。用于根据表310产生读选择输出信号的详细逻辑图或逻辑公式此处不再说明,因为它们是本领域的技术人员熟知的。
如上所述,为了减少本发明的存储器子系统120的等待时间,需要具有以不同于从系统总线125接收数据的顺序向DRAM135传递后写缓冲器204中的数据的能力。这样,常规的FIFO缓冲器便不能被使用。此外,通过不按顺上述的顺序传递数据,在后写缓冲器204中便留下“空穴”,这在选择对于DRAM315的下一个传递的后写时必须考虑。最后,如上所述,当两个或几个后写被指向同一个存储行时,需要按照它们被接收的顺序传递数据,以便确保指向同一列的较晚的数据重写较早的数据,而较早的数据不会重写较晚的数据。
图13表示后写缓冲器204的一种高级功能,用来帮助理解图12的指针控制逻辑430是如何工作的。缓冲器204是4个项的队列;不过,较大的队列(即缓冲器)也可按照本发明容易地实现。队列204在某些方面和FIFO类似;不过,队列204允许按任何顺序使项插入或除去,并不只是从队列的末尾插入。队列204以和标准的FIFO相同的方式利用指向阵列内固定项的位置的指针,不过,和标准的FIFO不同,队列204不利用填充计数来保持跟踪哪个项可用于存储。相反,对每个存储单元提供一个准备项位(图13中叫作RDY位)。
进入队列结构内的指针和对于每个位置的各个准备项位确定了队列的状态,如果指针保持图13中对每个位置的左边所示的各个位置号,则指针正指向一个特定位置。在图13中,项位置1和2被表示为已经排除的项(即尚未向DRAMS135传递的后面写),而位置0和3被表示为空的(即在这些位置中以前已经向DRAM135传递的任何后写)。这样,位置1和2是设置项就绪位(即具有值1),而位置0和3则被清除(即具有值0)。
在队列中输入指针指向下一个可利用的空槽。如果相应的项就绪位未被设置(即为0),则该项指针有效。否则,如果项就绪位被设置(即1),则该输入指针无效,这是因为该位置已被占用了。
输出指针指向当前正在被处理的队列项或就要被处理的队列项。如果在相应的位置设置了项就绪位(即1),则该输入指针无效,这是因为该位置已被占用了。
输出指针指向当前正在被处理的队列项或就要被处理的队列项。如果在相应的位置设置了项就绪位(即1),则输出指针有效,如果未设置项就绪位,则输出指针无效。
基本项指针一般指向队列结构内的最早的未被处理的项。基本项指针不被用于直接访问队列结构,而用于产生输入指针和输出指针,如下所述。
这里所述的指针是对队列的4个位置编码的两位指针。如果提供附加的队列位置,则在指针中也需要有附加位。
当队列204为空时,所有的项就绪位是无效的,并且输入指针,输出指针和基本指针全都指向队列中的同一位置。
当队列204按照项被接收的顺序正在处理这些项时,则队列的功能类似于常规的基于指针的FIFO,其有基本项指针和输出指针总指向同一单元。换句话说,向DRAM135传送的下一个后写是由基本指针指示的最早的项。如果输入指针正指向具有无效的项就绪位的位置,则在队列中可以放入新的项。如果输入指针这样移动,使其指向和基本项指针相同的位置,则不能再接收另外的项。每当在队列中存储一个新的项时,存储这一项的位置的项就绪位便被设置,并且输入指针被移到下一个较高的存储位置号。指针以4为模计数,使得指针从值3增加时(即二进制11),下一个值为0(即二进制00)。换句话说,指针从3到0循环。
借助于输出指针指示的位置上的项被从队列中除去。在一个项被除去之后,项就绪位被复位,基本项指针和输出指针两者都被增加,如果被除去的项位于位置3,则指针循环到0。
当项以不同于输入顺序的顺序从队列中被除去时,在队列中便形成空穴。项就绪位确定空穴所在的位置。通过把所有的项就绪位设为无效状态对队列初始化。项就绪位作为一个阵列(项就绪阵列)被访问,在所述阵列中的位号和在队列结构中项的位置号相同。通过设置或清除各个项就绪位可进行队列中项的增减。
为了使项从队列中以不同于其被存储的顺序被除去,允许输出指针独立于基本项指针而移动。而输出指针指示的位置号根据为队列定义的优先权调度函数进行选择。针对队列的具体应用选择优先权调度函数。这里将说明用于本发明的输出指针的优先权调度函数。
指针控制逻辑230是一个状态机,它确定队列204的下一个状态(即下一个输入指针、下一个输出指针和下一个基本指针)。队列204的下一个状态是当前基本项指针和当前项就绪位的函数,也是优先权调度硬件的函数,在本发明的情况下,其中包括命中比较器的输出。
只有当输出指针指向和基本指针相同的位置时基本项指针才改变,并且在该位置的项通过把数据传送给DRAM135而被除去。如果在下一个队列位置的项已经被除去,则要求逻辑跳过那个“空穴”。详细地说,如图14所示,项就绪阵列(来自缓冲器400的RDY3、RDY2、RDY1、RDY0)被送到由当前基本项指针502的两位值(B1,B0)控制的4位滚筒式移位器500的输入端。这一滚筒式移位器的输入被循环右移(即向右转动)一个等于当前基本项指针的值的量。例如,如果当前基本项指针具有值2,则项就绪阵列将右移两个位置,使滚筒式移位器500的输入的两个最低有效位成为滚筒式移位器502的两个最高有效位。优先权编码器504选择在转动的输出中得到的第一有效项就绪的位号。该信号然后在以4为模的加法器506中和当前基本项指针相加,从而获得下一个基本项指针。当下一个数据被向DRAM135写出时,下一个基本指针成为当前基本指针,由锁定当前基本项指针的写信号说明。
通过下面的例子可以理解上面的说明,在这一例子中当前基本项指针等于1并且项就绪阵列等于1011(即RDY3=1,RDY2=0,RDY1=1,RDY0=1)。因而,在位置3、1和0存在项,而在位置2存在空穴。除去位置1的项,使项就绪阵列变为1001。当被向右转动1位时(当前基本项指针的值),滚筒式移位器500的输出为1100。从右起第一有效项是位2。把2加于1(以4为模)得到值3,作为新的基本项指针,这样便跳过了空穴。
如图15所示,一个或几个优先权调度函数可被用于筛选用于下一个处理任务的项就绪阵列。输出指针通过使项就绪阵列和优先筛选屏蔽在几个AND门521-524中相与而被形成,其中优先筛选屏蔽在本发明中包括命中位(来自图12中的比较器435-438的HIT3,HIT2,GIT1,HIT0),如图15所示。AND门521-524的屏蔽的输出被提供作为相应的二对一(2∶1)多路转控器(MUX)525-528的第一输入。各个2∶1多路转换器525-528的第二输入分别连接用来接收就绪位(RDY3、RDY2、RDY1、RDY0)。AND门521-524的屏蔽的输出还被用于4输入OR门529的输入,OR门529在一个或几个AND门521-524的屏蔽的输出有效时提供有效的ENTRY_RDY & PAGE_HIT输出。换句话说,OR门529在至少一个有效后写项指向当前访问的行时,则提供有效的ENTRY-RDY & PAGE_HIT输出,其中当前访问的行由其就绪位和其相应的命中位两者都为有效来指示。或门529的ENTRY_RDY & PAGE_HIT输出被提供作为每个2∶1多路转换器525-528的选择输入。当选择输入有效时,与门521-524的屏蔽的输出被选作多路转换器的输出。这样,只有相应于具有有效项位和有效命中位的项的多路转换器才具有有效输出。因此,如下所述,输出指针的产生将只根据具有页(即行)命中的项,并且将选择具有页命中的最早的有效项。在另一方面,如果没有有效项具有有效命中位,则OR门529的输出将是无效的,从而使2∶1多路转换器525528选择未屏蔽的就绪位。这样,输出指针将根据所有的有效项产生,并且将选择最早的有效项。
2∶1多路转换器525-528的输出被提供用于滚筒式移位器530的输入。滚筒式移位器530响应当前的基本项指针以和图14中的滚筒式移位器500相同的方式操作。来自滚筒式移位器530的移位的输出被提供用作优先编码器532的输入,它从转动的输出的右边选择第一项就绪位的位号。该位号在以4为模的加法器534中和基本项指针相加,从而产生新的输出指针(如方块536所示)。
通过下面的例子可对以上所述进行解释,该列中的基本项指针为3,项就绪阵列是1101,优先筛选屏蔽(即位命中)是O111,从而表示只有在位置2、1和0内的行地址部分和锁存的行地址部分匹配,从而比不和当前行地址部分匹配的位置3中的项具有较高的优先权。使项就绪位和命中位相与(即11O1和0111相与)而产生对滚筒式移位器的输入0101。使滚筒式移位器的输入转动3而产生其输出1010。从右算起的第一有效位的位号是1。把该位号和基本项指针相加(以4为模)得到值0(1+3=4(模-4)=O)。这样,对于此例新的输出指针为0,从而指向具有和当前锁存的行地址相同的行地址部分的“最早”的后写单元,借以跳过具有和当前锁存的行地址不同的行地址部分的较早的后写。
应该理解,如果没有页命中,除去所有有效项通过多路转换器525-528被提供给滚筒式移位器作为输入之外,以相同的方式进行上述的处理,并且输出指针将因而指向最早的后写而不管其行地址如何。
如图16所示,通过在滚筒式移位器550中使项就绪阵列向右转动基本项指针的值来形成下一个输入指针。右移的输出被提供用作优先权编码器552的输入,在这种特定情况下,优先权编码器552选择最左边的(即优先权最高的)有效位,并产生代表选择位的位置的输出值。优先权编码器552的输出和以4为模的加法器554中的值1相加,并把所得之和在以4为模的加法器556中和当前基本项指针的值相加,以4为模的加法器556的输出便是新的输出指针,如方块559所示。
用下面的例子可对上述作出解释,其中基本项指针是1,项就绪阵列是1010。使项就绪阵列向右转动1,从而从滚筒式移位器550产生输出0101。优先权编码器552产生输出2,它代表最左的有效在位置2。把值2和值1相加从而产生和3,当把它加于基本项指针(本例为1)时,便产生和4(以4为模),最终产生值0。这样,下一个输入项将被放在位置0,从而跳过位置2中的空穴。
结合图14、15和16说明的队列控制逻辑最好以ASIC执行,以便形成如图12所示的指针控制逻辑的结构。
虽然以上结合后写缓冲器对本发明进行了说明,但是应该理解,这是所述的队列控制逻辑可用于其它的应用。
虽然以上结合特定实施例对本发明进行了说明,但是应当理解,实施例的说明只用于说明本发明,而不是限制本发明。对于本领域的技术人员,不脱离所附权利要求中限定的本发明的范围和构思可作出各种改型和应用。
Claims (8)
1.一种存储器控制器,用于控制动态随机存取存储器系统(DRAM),所述动态随机存取存储器系统接收具有各自的地址和要被写入DRAM中的所述地址的相关数据的多个写访问请求,每个所述写地址具有行地址部分和列地址部分,所述存储器控制器包括:
具有多个存储单元的缓冲器,用于在所述数据可被写入所述DRAM系统之前暂时存储所述每个写访问请求的所述写地址和相关数据,所述存储的地址和数据在所述缓冲器中按照相应于所述写访问请求被接收的顺序的顺序被保持在所述缓冲器中;以及
访问顺序控制电路,用于选择和所述多个写访问请求中的一个相关的地址和数据作为对所述DRAM系统的下一个访问,所述存取顺序控制电路包括:
比较器,用来比较所述每个存储的地址的所述行地址部分和当前访问的所述行地址部分,并识别具有和所述当前访问的所述行地址部分相同的各自的行地址部分的写访问请求;以及
访问选择器电路,用于响应所述比较器从而在选择具有和所述当前访问的所述行地址部分不同的行地址部分的不相同的写访问请求之前,选择一个所述的相同的写访问请求作为对DRAM系统的下一个访问,即使在所述不相同的写地址请求出现在所述相同的写访问请求之前,也进行所述的一个相同的写访问请求的所述选择。
2.如权利要求1所述的存储器控制器,其中:
所述存储器控制器接收具有读地址的读访问请求,所述读地址具有行地址部分和列地址部分;
所述比较器比较所述读地址的所述行地址部分,并识别所述读地址的所述行地址部分是否指向所述当前访问的所述行地址部分;以及
所述访问选择器电路优先于选择所述不相同的写访问请求作为下一个访问而选择所述读访问请求作为下一个访问。
3.如权利要求2所述的存储器控制器,其中:
所述比较器还包括用于比较所述读地址的所述列地址部分的至少一部分和在所述缓冲器中的所述多个写地址的所述列地址部分的相应部分的逻辑;以及
所述地址选择器电路当所述读地址的所述行地址部分和所述当前访问的所述行地址部分相同且所述读地址的所述列地址部分的所述部分和所述被识别的写访问请求的所述列地址部分的所述相应部分不同时,则在任何写访问请求之前选择所述读访问请求。
4.一种用于控制访问具有多个存储器存储单元的动态随机存取存储器(DRAM)系统的方法,其中所述DRAM系统通过对其提供行地址然后提供列地址被访问,所述DRAM系统通过只改变访问之间的列地址来提供对具有相同行地址的多个存储单元的访问,所述方法包括下列步骤:
在缓冲器中存储多个写访问请求中的每个的地址和相关数据,所述多个访问请求的每个地址包括行地址部分和列地址部分,每个地址和相关数据按照所述存储器控制器接收所述访问请求的顺序进行存储;
以第一行地址和第一列地址对所述DRAM系统进行第一访问;
比较所述第一行地址部分和在所述缓冲器中存储的每个访问请求的所述行地址部分;
当在所述缓冲器中至少一个访问请求具有和所述第一访问的所述行地址部分相同的行地址部分时,则选择具有和所述第一访问的所述行地址部分相同的行地址部分的所述至少一个访问请求的最早接收的访问请求作为对所述DRAM系统的第二访问,在具有不同的行地址部分的较早的访问请求之前选择具有相同的行地址部分的所述至少一个访问请求;以及
当在所述缓冲器中没有访问请求和所述第一访问的所述行地址部分相同的行地址部分时,则选择所述缓冲器中最早接收的访问请求作为所述第二访问。
5.如权利要求4所述的方法,还包括下列步骤:
比较读访问请求的行地址部分和列地址部分的至少一位与在所述缓冲器中所述多个写访问请求的行地址部分和列地址部分的相应的位;以及
当所述读访问的所述行地址部分和所述写访问请求的至少一个的行地址部分相同时:
当所述列地址部分的所述相应的位不同时,优先于所述具有相同的行地址部分的所述写请求执行所述读访问;以及
当所述读访问的所述列地址部分的所述至少一位和所述写访问中的一个所述列地址部分的所述至少一位相同时,优先于所述读访问执行一写访问。
6.一种在动态随机存取存储器(DRAM)系统中选择下一个访问的方法,所述DRAM系统具有对该系统的后写请求,其中至少一个所述后写具有指向具有和所述DRAM系统的当前访问的行地址相同的行地址的存储单元的地址,并且至少一个所述的后写具有指向具有和所述当前访问的所述行地址不同的行地址的存储单元的地址,所述方法包括下列步骤:
优先于选择具有不同行地址的任何写访问,选择具有相同行地址的最早接收到的写访问作为下一个访问;以及
当没有写访问具有相同的行地址时,选择具有不同行地址的最早的写访问作为下一个访问。
7.一种缓冲器电路,它允许按顺序接收数据并将数据存储在所述缓冲器的多个存储单元中,并允许所述数据从所述缓冲器电路中无序地被输出,所述缓冲电路包括:
输入指针,用来识别所述存储单元的下一个空存储单元,以便接收下一个数据输入;
输出指针,用来识别所述存储单元的下一个满存储单元,作为下一个输出的源;以及
指针控制电路,用来独立地控制所述输入指针和所述输出指针,所述指针控制电路包括响应所述数据的预定特性的优先权调度装置,用来选择所述满存储单元中的一个作为下一个输出的源。
8.如权利要求7所述的缓冲器电路,其中所述数据包括用来识别在动态随机存取存储(DRAM)系统中的存储单元的地址,并且其中所述数据的预定特性包括关于所述地址的行地址部分是否和在所述DRAM系统中当前访问的存储单元的行地址部分相同的比较结果。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/415,038 | 1995-03-31 | ||
US08/415,038 US5638534A (en) | 1995-03-31 | 1995-03-31 | Memory controller which executes read and write commands out of order |
US08/414,948 | 1995-03-31 | ||
US08/414,948 US5666494A (en) | 1995-03-31 | 1995-03-31 | Queue management mechanism which allows entries to be processed in any order |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1180430A true CN1180430A (zh) | 1998-04-29 |
CN1088215C CN1088215C (zh) | 2002-07-24 |
Family
ID=27022792
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN96193026A Expired - Lifetime CN1088215C (zh) | 1995-03-31 | 1996-03-22 | 不按顺序执行读写指令的存储器控制器 |
Country Status (10)
Country | Link |
---|---|
EP (1) | EP0838057B1 (zh) |
JP (1) | JPH0955081A (zh) |
KR (1) | KR100295187B1 (zh) |
CN (1) | CN1088215C (zh) |
AU (1) | AU693668B2 (zh) |
DE (1) | DE69625486T2 (zh) |
RU (1) | RU2157562C2 (zh) |
SG (1) | SG73403A1 (zh) |
TW (1) | TW388982B (zh) |
WO (1) | WO1996030838A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100437519C (zh) * | 2003-08-01 | 2008-11-26 | 微软公司 | 用于管理被存储在高速缓存中的对象的系统和方法 |
US7469316B2 (en) | 2003-02-10 | 2008-12-23 | Intel Corporation | Buffered writes and memory page control |
CN101299326B (zh) * | 2007-05-14 | 2010-05-26 | 深圳艾科创新微电子有限公司 | 一种图形显示系统中变长显存预读系统及方法 |
CN102067237A (zh) * | 2008-06-16 | 2011-05-18 | 桑迪士克以色列有限公司 | 闪存中的倒序页写入 |
CN102945213A (zh) * | 2012-09-24 | 2013-02-27 | 无锡众志和达存储技术股份有限公司 | 一种基于fpga的乱序内存控制器及其实现方法 |
CN1826659B (zh) * | 2003-06-13 | 2013-04-17 | 桑迪士克科技公司 | 存储器系统、读取存储在该存储器系统中数据的方法及为存储器系统所执行的方法 |
CN103985409A (zh) * | 2013-02-07 | 2014-08-13 | 希捷科技有限公司 | 对于意外功率损失的数据保护 |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5748539A (en) * | 1997-03-05 | 1998-05-05 | Sun Microsystems, Inc. | Recursive multi-channel interface |
US6145065A (en) * | 1997-05-02 | 2000-11-07 | Matsushita Electric Industrial Co., Ltd. | Memory access buffer and reordering apparatus using priorities |
GB9719047D0 (en) | 1997-09-08 | 1997-11-12 | Sgs Thomson Microelectronics | Arbitration system |
US6401167B1 (en) | 1997-10-10 | 2002-06-04 | Rambus Incorporated | High performance cost optimized memory |
AU9604698A (en) * | 1997-10-10 | 1999-05-03 | Rambus Incorporated | Method and apparatus for two step memory write operations |
US6038646A (en) * | 1998-01-23 | 2000-03-14 | Sun Microsystems, Inc. | Method and apparatus for enforcing ordered execution of reads and writes across a memory interface |
DE69939152D1 (de) | 1999-01-11 | 2008-09-04 | Sgs Thomson Microelectronics | Speicherschnittstellenvorrichtung und Verfahren zum Speicherzugriff |
GB2348717B (en) | 1999-01-11 | 2003-08-06 | Sgs Thomson Microelectronics | Data flow control circuitry |
KR100287188B1 (ko) * | 1999-04-06 | 2001-04-16 | 윤종용 | 데이터 처리속도 및 데이터 입출력핀의 효율을 향상시킬 수 있는 반도체 메모리장치 및 이의 독출기입 제어방법 |
EA001895B1 (ru) * | 2001-02-15 | 2001-10-22 | Лев Лазаревич Матвеев | Способ получения, обработки и хранения ссылок на информационные источники, списков ссылок и полных копий информационных источников |
US20040054877A1 (en) | 2001-10-29 | 2004-03-18 | Macy William W. | Method and apparatus for shuffling data |
AU2003900733A0 (en) * | 2003-02-19 | 2003-03-06 | Canon Kabushiki Kaisha | Dynamic Reordering of Memory Requests |
US7484045B2 (en) | 2004-03-30 | 2009-01-27 | Intel Corporation | Store performance in strongly-ordered microprocessor architecture |
US20060112240A1 (en) * | 2004-11-24 | 2006-05-25 | Walker Robert M | Priority scheme for executing commands in memories |
US20070005868A1 (en) * | 2005-06-30 | 2007-01-04 | Osborne Randy B | Method, apparatus and system for posted write buffer for memory with unidirectional full duplex interface |
US9262326B2 (en) | 2006-08-14 | 2016-02-16 | Qualcomm Incorporated | Method and apparatus to enable the cooperative signaling of a shared bus interrupt in a multi-rank memory subsystem |
US7890668B2 (en) * | 2008-02-14 | 2011-02-15 | International Business Machines Corporation | Providing indirect data addressing in an input/output processing system where the indirect data address list is non-contiguous |
US9021228B2 (en) | 2013-02-01 | 2015-04-28 | International Business Machines Corporation | Managing out-of-order memory command execution from multiple queues while maintaining data coherency |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5727477A (en) * | 1980-07-23 | 1982-02-13 | Nec Corp | Memory circuit |
JPS59136859A (ja) * | 1983-01-27 | 1984-08-06 | Nec Corp | バツフア制御装置 |
JP2714944B2 (ja) * | 1987-08-05 | 1998-02-16 | 三菱電機株式会社 | 半導体記憶装置 |
US5335336A (en) * | 1988-03-28 | 1994-08-02 | Hitachi, Ltd. | Memory device having refresh mode returning previous page address for resumed page mode |
US5034917A (en) * | 1988-05-26 | 1991-07-23 | Bland Patrick M | Computer system including a page mode memory with decreased access time and method of operation thereof |
EP0425550B1 (en) * | 1988-06-30 | 1995-01-04 | Wang Laboratories, Inc. | Memory control unit |
US5022004A (en) * | 1988-10-28 | 1991-06-04 | Apollo Computer, Inc. | Method and apparatus for DRAM memory performance enhancement |
US5072420A (en) * | 1989-03-16 | 1991-12-10 | Western Digital Corporation | FIFO control architecture and method for buffer memory access arbitration |
US5206834A (en) * | 1989-10-14 | 1993-04-27 | Mitsubishi Denki Kabushiki Kaisha | Semiconductor memory device performing last in-first out operation and the method for controlling the same |
JP2777247B2 (ja) * | 1990-01-16 | 1998-07-16 | 三菱電機株式会社 | 半導体記憶装置およびキャッシュシステム |
US5278967A (en) * | 1990-08-31 | 1994-01-11 | International Business Machines Corporation | System for providing gapless data transfer from page-mode dynamic random access memories |
US5325499A (en) * | 1990-09-28 | 1994-06-28 | Tandon Corporation | Computer system including a write protection circuit for preventing illegal write operations and a write poster with improved memory |
US5265236A (en) * | 1990-11-29 | 1993-11-23 | Sun Microsystems, Inc. | Method and apparatus for increasing the speed of memory access in a virtual memory system having fast page mode |
US5247643A (en) * | 1991-01-08 | 1993-09-21 | Ast Research, Inc. | Memory control circuit for optimizing copy back/line fill operation in a copy back cache system |
US5485589A (en) * | 1991-12-31 | 1996-01-16 | Dell Usa, L.P. | Predictive addressing architecture |
US5247355A (en) * | 1992-06-11 | 1993-09-21 | Northwest Starscan Limited Partnership | Gridlocked method and system for video motion compensation |
US5388247A (en) * | 1993-05-14 | 1995-02-07 | Digital Equipment Corporation | History buffer control to reduce unnecessary allocations in a memory stream buffer |
US5524220A (en) * | 1994-08-31 | 1996-06-04 | Vlsi Technology, Inc. | Memory subsystems having look-ahead instruction prefetch buffers and intelligent posted write buffers for increasing the throughput of digital computer systems |
US5487049A (en) * | 1994-11-23 | 1996-01-23 | Samsung Semiconductor, Inc. | Page-in, burst-out FIFO |
-
1995
- 1995-05-08 TW TW084104548A patent/TW388982B/zh not_active IP Right Cessation
-
1996
- 1996-03-22 CN CN96193026A patent/CN1088215C/zh not_active Expired - Lifetime
- 1996-03-22 DE DE69625486T patent/DE69625486T2/de not_active Expired - Lifetime
- 1996-03-22 EP EP96911367A patent/EP0838057B1/en not_active Expired - Lifetime
- 1996-03-22 RU RU97117589/09A patent/RU2157562C2/ru active
- 1996-03-22 WO PCT/US1996/003877 patent/WO1996030838A1/en active IP Right Grant
- 1996-03-29 AU AU50398/96A patent/AU693668B2/en not_active Expired
- 1996-03-30 SG SG1996006440A patent/SG73403A1/en unknown
- 1996-03-30 KR KR1019960009603A patent/KR100295187B1/ko active IP Right Grant
- 1996-04-01 JP JP8078750A patent/JPH0955081A/ja active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7469316B2 (en) | 2003-02-10 | 2008-12-23 | Intel Corporation | Buffered writes and memory page control |
CN1826659B (zh) * | 2003-06-13 | 2013-04-17 | 桑迪士克科技公司 | 存储器系统、读取存储在该存储器系统中数据的方法及为存储器系统所执行的方法 |
CN100437519C (zh) * | 2003-08-01 | 2008-11-26 | 微软公司 | 用于管理被存储在高速缓存中的对象的系统和方法 |
CN101299326B (zh) * | 2007-05-14 | 2010-05-26 | 深圳艾科创新微电子有限公司 | 一种图形显示系统中变长显存预读系统及方法 |
CN102067237A (zh) * | 2008-06-16 | 2011-05-18 | 桑迪士克以色列有限公司 | 闪存中的倒序页写入 |
CN102067237B (zh) * | 2008-06-16 | 2014-01-01 | 桑迪士克以色列有限公司 | 闪存中的倒序页写入 |
CN102945213A (zh) * | 2012-09-24 | 2013-02-27 | 无锡众志和达存储技术股份有限公司 | 一种基于fpga的乱序内存控制器及其实现方法 |
CN102945213B (zh) * | 2012-09-24 | 2016-08-10 | 无锡众志和达数据计算股份有限公司 | 一种基于fpga的乱序内存控制器及其实现方法 |
CN103985409A (zh) * | 2013-02-07 | 2014-08-13 | 希捷科技有限公司 | 对于意外功率损失的数据保护 |
CN103985409B (zh) * | 2013-02-07 | 2018-01-16 | 希捷科技有限公司 | 对于意外功率损失的数据保护 |
Also Published As
Publication number | Publication date |
---|---|
KR100295187B1 (ko) | 2001-09-17 |
RU2157562C2 (ru) | 2000-10-10 |
SG73403A1 (en) | 2000-06-20 |
EP0838057A1 (en) | 1998-04-29 |
TW388982B (en) | 2000-05-01 |
DE69625486T2 (de) | 2009-09-17 |
JPH0955081A (ja) | 1997-02-25 |
EP0838057A4 (en) | 2000-05-10 |
KR960035270A (ko) | 1996-10-24 |
AU5039896A (en) | 1996-10-10 |
EP0838057B1 (en) | 2002-12-18 |
DE69625486D1 (de) | 2003-01-30 |
CN1088215C (zh) | 2002-07-24 |
WO1996030838A1 (en) | 1996-10-03 |
AU693668B2 (en) | 1998-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1088215C (zh) | 不按顺序执行读写指令的存储器控制器 | |
CN1252605C (zh) | 重排多个数据存取指令的方法与装置 | |
US6529416B2 (en) | Parallel erase operations in memory systems | |
US6836816B2 (en) | Flash memory low-latency cache | |
US7814264B2 (en) | Memory card, semiconductor device, and method of controlling semiconductor memory | |
US20240054082A1 (en) | Memory module threading with staggered data transfers | |
US20110185225A1 (en) | Memory system with nonvolatile semiconductor memory | |
US7761669B2 (en) | Memory controller granular read queue dynamic optimization of command selection | |
CN1820257A (zh) | 包括具有不同缓存线大小的第一级高速缓存及第二级高速缓存的微处理器 | |
CN1146249A (zh) | 大存储器的高效寻址 | |
CN1732446A (zh) | 存储器控制器和用于对存储器写入的方法 | |
US20100287332A1 (en) | Data storing system, data storing method, executing device, control method thereof, control device, and control method thereof | |
US20020108019A1 (en) | Cache system with DMA capabilities and method for operating same | |
TWI733360B (zh) | 資料儲存裝置與資料處理方法 | |
JP2000501539A (ja) | アドレス競合検出を持つ多重ポート・キャッシュメモリ | |
CN1302405A (zh) | 存储器控制单元 | |
CN1758208A (zh) | 对挂接在片外单总线上的多种存储器进行访问的方法 | |
CN1825473A (zh) | 存储器控制装置、改变存储器地址的方法以及存储系统 | |
CN1017837B (zh) | 具有单比特置位和复位功能的主存储器插板 | |
US20020108021A1 (en) | High performance cache and method for operating same | |
CN1109301C (zh) | 显示存储器控制设备 | |
CN1514372A (zh) | 低功率高速缓存及其快速存取资料的方法 | |
CN1020005C (zh) | 使用地址位移机制以增加所支持的高速缓冲存储器容量的微计算机系统 | |
CN1136503C (zh) | 闪烁存储系统 | |
US20050071566A1 (en) | Mechanism to increase data compression in a cache |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CX01 | Expiry of patent term |
Granted publication date: 20020724 |
|
EXPY | Termination of patent right or utility model |