CN1357121A - 对不同时间执行的存储器访问,检测在数据总线上的数据冲突的装置和方法 - Google Patents
对不同时间执行的存储器访问,检测在数据总线上的数据冲突的装置和方法 Download PDFInfo
- Publication number
- CN1357121A CN1357121A CN99815650A CN99815650A CN1357121A CN 1357121 A CN1357121 A CN 1357121A CN 99815650 A CN99815650 A CN 99815650A CN 99815650 A CN99815650 A CN 99815650A CN 1357121 A CN1357121 A CN 1357121A
- Authority
- CN
- China
- Prior art keywords
- instruction
- memory bank
- data
- memory
- queue
- 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
- 230000015654 memory Effects 0.000 title claims description 255
- 238000000034 method Methods 0.000 title claims description 46
- 230000004044 response Effects 0.000 claims abstract description 36
- 238000012546 transfer Methods 0.000 claims abstract description 14
- 230000005540 biological transmission Effects 0.000 claims description 24
- 230000015572 biosynthetic process Effects 0.000 claims description 17
- 230000014509 gene expression Effects 0.000 claims description 17
- 238000001514 detection method Methods 0.000 claims description 14
- 230000003247 decreasing effect Effects 0.000 claims description 4
- 238000012163 sequencing technique Methods 0.000 claims description 2
- CVOFKRWYWCSDMA-UHFFFAOYSA-N 2-chloro-n-(2,6-diethylphenyl)-n-(methoxymethyl)acetamide;2,6-dinitro-n,n-dipropyl-4-(trifluoromethyl)aniline Chemical compound CCC1=CC=CC(CC)=C1N(COC)C(=O)CCl.CCCN(CCC)C1=C([N+]([O-])=O)C=C(C(F)(F)F)C=C1[N+]([O-])=O CVOFKRWYWCSDMA-UHFFFAOYSA-N 0.000 claims 1
- 230000003213 activating effect Effects 0.000 claims 1
- 239000000872 buffer Substances 0.000 description 15
- 238000010586 diagram Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 8
- 101000711846 Homo sapiens Transcription factor SOX-9 Proteins 0.000 description 5
- 101100232371 Hordeum vulgare IAT3 gene Proteins 0.000 description 5
- 102100034204 Transcription factor SOX-9 Human genes 0.000 description 5
- 230000004913 activation Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000002360 preparation method Methods 0.000 description 4
- 238000012913 prioritisation Methods 0.000 description 4
- 101000885321 Homo sapiens Serine/threonine-protein kinase DCLK1 Proteins 0.000 description 3
- 102100039758 Serine/threonine-protein kinase DCLK1 Human genes 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 238000011017 operating method Methods 0.000 description 3
- 238000012856 packing Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000008707 rearrangement Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- NBRQRXRBIHVLGI-OWXODZSWSA-N (4as,5ar,12ar)-1,10,11,12a-tetrahydroxy-3,12-dioxo-4a,5,5a,6-tetrahydro-4h-tetracene-2-carboxamide Chemical compound C1C2=CC=CC(O)=C2C(O)=C(C2=O)[C@@H]1C[C@@H]1[C@@]2(O)C(O)=C(C(=O)N)C(=O)C1 NBRQRXRBIHVLGI-OWXODZSWSA-N 0.000 description 1
- 101150098958 CMD1 gene Proteins 0.000 description 1
- 101100382321 Caenorhabditis elegans cal-1 gene Proteins 0.000 description 1
- 101100328895 Caenorhabditis elegans rol-8 gene Proteins 0.000 description 1
- 241001673391 Entandrophragma candollei Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 210000000056 organ Anatomy 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000004148 unit process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- 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/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
-
- 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
- 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/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1621—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by maintaining request order
-
- 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/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1626—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
-
- 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/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1647—Handling requests for interconnection or transfer for access to memory bus based on arbitration with interleaved bank access
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Multi Processors (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Bus Control (AREA)
Abstract
一种指令重排序系统(2000),为了得到基于目标响应约束的最佳的指令次序,包括连接到指令队列(2004)的数据队列(2006),用于存储字符组位、写位和表明已经发布到目标装置的指令的数据传输何时将出现在数据总线上的时间。系统还包括连接到数据队列(2006)和指令队列(2004)的冲突检测器(2002),用于检测在数据总线上的,存储在指令队列(2004)中将要发布的指令和存储在数据队列(2006)中已经发布的指令之间的可能的冲突。连接到冲突检测器(2002)和数据队列(2006)和指令队列(2004)的队列和链接控制器(2008),用于存储和重新排序将要发布的指令,其中的控制器计算指令的新的发布时间和相应的数据出现在数据总线上的时间。
Description
发明背景
本发明总的涉及计算系统。更具体地,本发明涉及访问计算系统如多处理器计算机系统等内的共享的资源。更进一步说,本发明描述了在无序的存储器访问或者不同时间执行的存储器访问条件下检测数据总线上的数据冲突的技术。
发明背景
在基本的计算机系统中,中央处理器或CPU,按照存储在相应的存储器内的预定的程序或指令集来运行,除了存储处理器借助运行的指令集或程序外,还提供了在处理器存储器或相关的附加的存储器中的存储空间,以便于中央处理器在处理过程中处理信息。基于哪一个处理器用于执行程序,附加的存储器用作由处理器生成的信息的存储器和临时信息的存储器,或“中间结果暂存器(scratchpad)”。另外,为了利用系统的输出装置,相关的存储器提供放置处理器操作指令集的输出信息的位置。
在为了访问内存,很多组件(处理器、硬盘等)必须共享公共的总线的系统中,很可能出现存储器访问冲突。尤其是在多处理器计算机系统中,系统使用不同的处理器同时的操作,访问内存或共享的资源,变得复杂了。由于各个处理器或处理器系统很可能同时请求访问同一个内存,处理器之间的冲突通常是不可避免的。实质上,在多处理器计算机系统中,两个或者多个处理器或处理器系统周期性的导致关于公共内存的存储指令的重叠。
解决共享内存的存储器访问请求的冲突的传统方法包括,一种情况是,各个处理器使用完全冗余的内存,并隔离处理器系统。但是,这种解决冲突的存储器访问请求的方法经常不能发挥多处理器系统的优势。如果按照同一数据提供并行的计算的方式操作,系统中一个处理器支持其它处理器的操作,这样的多处理器系统极其高效。传统地,这种处理器系统可能是分时的(time shared),其中的处理器竞争访问共享的资源如内存,或者处理器系统是双重端口的,其中的各处理器由自己的内存总线,比如其它的已经给予访问时,对其进行排队。
已经有多种方法用于避免上述的冲突问题。一种方法是,通过顺序操作处理器或者通过分时操作处理器,来达到避免冲突。这种方法中,为了避免冲突,处理器只是的“依次”访问共享的资源。通常使用的这种系统包括“通行铃(passing the ring)”或“标记系统”,系统中,可能冲突的处理器被系统简单的轮询,按照预定的与关于一组用户的通行铃同样的顺序。
不幸的是,使用顺序的处理器访问方法对整个计算机系统有很大的限制。这种限制源自于系统轮询竞争的处理器所用的实际时间。另外,如果单个的处理器在运行并请求访问共享的内存,比如,由于系统单步调试序列,处理器访问共享的资源时,在每个内存周期后有一个延时产生。
另一个传统的避免冲突的方法是依靠在计算机系统内的处理器中建立优先级。这种方法假定各个处理器具有分配给它的关于系统重要性层次的优先权。每次出现冲突时,存储器控制器只为具有最高优先权的处理器提供访问。比如,在一个具有两个处理器的系统中,第一和第二处理器访问共享的存储器,该存储器一般是要求周期性刷新存储器所保留的存储数据的动态RAM(DRAM)型存储器。一般地,DRAM型存储器由单独的独立更新系统刷新。在这样的多处理系统中,两个处理器和更新系统都争相访问公共存储器。系统存储器控制器将处理存储器访问请求冲突,或者命令,正如分配给处理器的不同的优先权和更新系统所决定的那样。尽管这种系统解决了冲突,并且在一定程度上比纯粹的顺序冲突避免系统的效率更高,但该系统仍然缺乏灵激活。
另一种解决冲突的方法包括在存储器控制器中加入决策能力。遗憾的是,存储器控制器的决策部分要在时钟系统的控制和时序下操作,问题就来自于,在存储器控制器能够授权访问公共存储器之前,用来执行真正的决策的实际时间。
不幸的是,执行真正的决策的问题很大程度上削弱了传统的存储器控制器授权访问多条型存储器系统的能力。在多存储体(multi-bank)型存储器系统中,实际的存储器核心被分成指定的区域和组,其中存储着要检索的数据。虽然准备了更快更有效的存储器访问,但传统的存储器控制器在处理多存储体型存储装置时所要求的复杂性实际上减缓了整个系统的总的访问速度。
如上所述,很显然,可以期望有一种分优先级访问外部装置的方法和设备。
发明概述
按照本发明,描述了在无序的存储器访问或者不同时间执行的存储器访问条件下检测数据总线上的数据冲突的技术。一种指令重排序系统,根据目标响应约束,得到最佳的指令次序,确定在启动控制器和目标子系统之间的数据传输的最佳时隙,通过禁止要导致数据冲突的指令的发布,包括指令队列,用于存储将要发布的指令,表明指令被发布后,数据传输出现在控制器和目标装置之间的数据总线上的时间,表明数据字符组传输和读写位(r/w)的字符组位。连接到指令队列的数据队列,用于存储表明已经发布到目标装置的请求的数据传输何时将出现在控制器值的数据总线上的时间,以及用于存储字符组位和写(w)位。该系统还包括连接到数据队列和指令队列的冲突检测器,用于检测在数据总线上存储在指令队列中将要发布的指令和存储在数据队列中已经发布的指令之间的可能的冲突。该系统还包括连接到冲突检测器和数据队列和指令队列的队列和链接控制器,用于存储和重排序将要发布的指令,其中的控制器计算指令的新的发布时间和数据出现在数据总线上的时间。
参考说明书的其余部分和附图,可以更进一步的理解本发明的特性和优点。
附图简述
下面借助附图中的实例来解释本发明,而不意味着限制;附图中相同的标号代表相同的单元,其中:
图1A示出了符合本发明一个实施方案的通用控制器的概略的实现;
图1B示出了如图1A所示的通用控制器的具体实现;
图1C示出了符合本发明一个实施方案的连接到通用控制器的地址空间控制器;
图1D示出了如图1C所示的地址空间控制器的具体实现;
图1E示出了按照本发明一个实施方案的典型的请求/响应ID编号;
图2A示出了按照本发明一个实施方案的一般的通用指令;
图2B示出了适合于请求存储页读指令的如图2A中所示的具体的通用指令;
图2C示出了由图2B所示的典型指令的指令组成之间提供适当的时序间隔所构成的顺序指令的示例;
图3示出了按照本发明一个实施方案的资源标志;
图4示出了按照本发明一个实施方案,通用控制器详细处理访问共享的资源的流程图;
图5示出了按照本发明一个实施方案,通用控制器确定资源的状态和执行操作的步骤的处理;
图6示出了按照本发明一个实施方案,通用控制器根据处理确定操作步骤之间适当的时序的处理;
图7A和7B示出了按照本发明一个实施方案,页命中/错过控制器;
图8示出了按照本发明一个实施方案的存储体访问控制器;
图9A示出了按照本发明一个实施方案的基于多处理器系统的典型的SLDRAM;
图9B为一个时序图示出了如图9A所示的多处理器的典型的SLDRAM总线交易;
图10是一个符合本发明一个实施方案的存储器控制器的方框图;
图11是一个符合本发明一个实施方案的约束模块的方框图;
图12是符合本发明一个实施方案的典型的SLDRAM指令时序图;
图13A-13C示出了存储器指令的重排序的时间线,按照本发明的一个特殊的实施方案;
图14是一个按照本发明的一个特殊实施方案设计的存储器控制器的部分方框图;
图15是一个按照本发明的一个特殊实施方案设计的重排序电路的方框图;
图16,如图15的重排序电路的更详细的方框图;
图17是一个符合本发明的一个特殊实施方案的指令队列项内容图;
图18是一个地址移位器的特殊实施方案的方框图;
图19是一个符合本发明的一个特殊实施方案的数据队列项内容图;
图20示出了一个冲突检测系统,也就是如图15所示的冲突检测系统的另一个实现;
图21示出了一个典型的时序图,说明每次读/写指令到目标装置是如何涉及数据包传输的;
图22示出了一个预测器系统,它具有N页时钟,存储上一次发布到特定页的指令与预测的下一个内存的访问之间的时间;和
图23示出了按照本发明一个实施方案的具有装置访问优先权的装置控制器。
图24,示出的表4,汇总了按照本发明一个实施方案的约束模块执行的调度器。
优选实施方案详述
在具有几个装置如处理器,共享公共的资源的系统中,已经使用了多种方法来避免当不止一个装置请求访问共享资源时的冲突。一种方法是,通过顺序操作处理器和通过分时处理器来解决冲突。这时,为了避免冲突,处理器只是“依次地”访问共享的资源。通常使用的这种系统包括“通行铃”或“标记系统”,系统中可能冲突的处理器被系统简单的轮询,按照预定的与关于一组用户的通行铃同样的顺序。
遗憾的是,使用顺序的处理器访问方法通常会对整个计算机系统有很大的限制,由于用于轮询竞争的处理器的实际时间总量。
另一个传统的避免冲突的方法是依靠在计算机系统内的处理器中建立优先级。这种方法假定各个处理器具有分配给它的关于系统重要性层次的优先权。尽管这种系统解决了冲突,并且在一定程度上比纯粹的顺序冲突避免系统的效率更高,但该系统仍然缺乏灵激活。
另一种解决冲突的方法包括在存储器控制器中加入决策能力。遗憾的是,决策逻辑的复杂性要求在控制器能够授权访问共享的存储器之前执行实际决策的所使用的总的时间。
复杂逻辑降低了系统性能这个问题在多芯片模式存储系统中更加严重,系统中具有在各具不同操作特点的互联的多个存储装置中分布的内存。由于传统的逻辑不能用来补偿在不同的存储装置中固有的各个不同的访问特点,因而,整个系统的性能下降。
总的来说,如图1A所示,本发明可以根据系统100来说明,系统100具有请求装置102,它通过用于向任何数量和类型的共享的资源108提供访问的系统总线106连接到通用装置106的请求装置控制器104。在一个实施方案中,系统总线106通过相关的系统接口层110连接到通用控制器104,而通用控制器104通过共享的资源接口109依次连接到共享的资源108。一般地,根据任何请求系统102发出的共享资源请求和共享资源操作的特征参数113,通用控制器104被用来确定共享资源108的状态。
在这些情况下:当请求系统102是一个多处理器系统中的处理器,请求访问作为存储装置108的共享的资源108,存储装置108被连接到它上面的其它处理器所共享,为了完成要求的资源请求,通用控制器104确定执行操作的步骤。当存储器装置108是,比如SDRAM,操作一般包括预充电、关闭页、打开页和读页或写页。
一旦确定了操作的具体步骤,通用控制器104就确定各步骤之间的适当的时序,为了避免诸如数据冲突或其它类型的冲突。在优选的实施方案中,时序部分地根据存储在如查对表内的共享存储装置的操作特征。之后,适当的排好序的访问指令由通用控制器发布,然后由共享的资源作出回应。
在下面的本发明的详细描述中,为了完全地理解本发明,提供了多个特殊的实施方案。然而,对本领域技术人员来说是很显然的,可以在没有这些具体细节或使用改变的单元或步骤,来实现本发明。另一方面,对已经熟知的处理、步骤、组件和电路,不再详细说明,免得使本发明显得晦涩难懂。
现在,将根据作为处理器与共享资源之间的联络的存储器控制器来描述本发明。但是,应该指出的是,本发明也可以象能够控制访问不论共享与否的任何资源的通用控制器来实现。这些资源不必一定是存储器,实事上,本发明也可以用于控制访问共享的系统总线,比如在多处理器系统中提供交通控制,减少总线访问延时,从而提高系统总线带宽的效率。
现在请参见图1B,系统100具有请求装置102,如处理器能够通过系统总线106连接到通用控制器104。控制器104依次连接到共享的资源108,如存储器108可以采用很多形式,诸如DRAM、SDRAM、SLDRAM、EDO、FPM、RDRAM等。在所述的实施方案中,系统总线106包括单向地址总线106-1,用于把处理器102发出的存储器地址请求传送到通用控制器104。系统总线106包括单向指令总线106-2,它与地址总线106-1连接,传输关于存储地址的指令。比如,当处理器102请求一个存储在存储器108内的特定存储位置的可执行指令时,处理器象指令总线106-2输出读请求(称为系统指令),几乎同时,在地址总线106-1上得到相应的存储地址请求(称为系统地址)。系统地址和系统指令都被包括在控制器104内的可配置的系统接口110所接收。可以注意到,意味着通过配置,系统接口110可以用于处理接收到的无论是存储器108要求的何种形式和方式的系统指令和系统地址。这样,处理器102要求的数据就可以存储在任何编号和类型的连接到控制器104的存储装置中,无需要求处理器102为每个存储装置生成定制的请求。
在所述的实施方案中,系统接口110用于把接收到的系统指令和系统地址转换为被叫作通用指令200的指令,如图2A所示的示例。在一个实现中,当共享的资源是DRAM型存储装置(包括SLDRAM、SDRAM、EDO、DRAM等),通用指令200由5个数据字段构成,包括执行存储器108的任何存储器访问所要求的所有操作。这些操作包括由预充电数据字段202标识的预充电操作,用于表示是特定行否需要预充电。其它操作包括激活数据字段204、读数据字段206、写数据字段208和刷新数据字段210。如果,比如说,存储器208具有存储体1当前激活(即在读或写之后打开)的存储页1,以及随后的处理器指令要求读出存储在存储体1的2页上的数据并输出到处理器102。这时,为了处理器102执行请求的指令,页1必须关闭(即页1被预充电),页2必须被激活,页2被激活后,读页2。所以,如图2B所示的通用指令212,由通用指令发生器110生成,通用指令发生器110具有数据字段202、204和206,设置为“1”表示“执行相关的操作”,而数据字段208和210设置为“0”表示“不执行相关的操作”(即“NOP”,无操作)。
回过来参见图1B,由于存储器108的访问是动态的这一特征,其中的多个不同的请求装置共同访问存储器108,存储器108的状态是不断改变的。存储器的状态,意思是为在特定的存储位置完整的执行特定的操作,必须已知存储器位置的状态。比如,如果一个特定的存储页关闭了,为了执行读操作,该存储页必须被打开。因此,为了确定特定地址位置的当前状态,大多数在特定位置已经执行了的当前操作,用资源标志300标识,如图3所示。在本发明的一个实施方案中,资源标志300包括地址字段302,用于标识特定的存储器位置;包括最近发布的指令字段304,用于识别在302中标识的地址的最近发布的指令;以及包括最近的指令数据字段306的时间。比如说,存储器地址ADDs的资源标志308表示在时间5Φ(代表5个时钟周期)发布了读页面指令,而资源标志310表示对同一个存储器地址ADDs,在时间10Φ,在ADDs,在存储页上执行了写页面指令。通过跟踪存储器地址ADDs的状态,通用控制器104得知在ADDs的存储页已经打开,因而不用要求打开页面的操作。
使用存储在资源标志缓冲器114内的标志300所提供的状态信息,连接到可配置的系统接口112的指令定序器114提供通用指令200的指令项202-210之间的适当的时间间隔,以便提供排好序的指令220,如图2C所示,在指令项202-204和204-206之间分别具有时间间隔t1和t2。应该注意到,由于指令项208和210是“NOP”型字段,排好序的指令220包括任何引用这样的字段,只要求时间周期实际上等于项202到206要求的时钟周期相加的时间t1+t2。这样,指令定序器114就能够在处理器102和存储器108之间提供优化的指令和数据流。
在本发明的另一个实施方案中,当共享的资源108是多存储体型存储装置,如SDRAM,或当共享的资源是多装置存储装置如多芯片模式,比如,资源标志缓冲器114能够存储在特定存储体或装置内的所有打开页的资源标志。在一种实现中,比较器(未示出)检测系统地址中的存储体编号或装置标识号,并比较页地址和具有标志缓冲器114的内容的系统地址。如果比较没有“命中”(即地址不相匹配),通用控制器104就必须关闭使用来自标志缓冲器114的地址的旧页面,根据新的系统指令打开新页面。
在通用控制器104要服务多个不同的装置的情况下,可以期望能够选择那些只与关于输入系统地址的特定装置相关的操作参数。当通用控制器服务多个不同的装置时,地址空间控制器120连接到通用控制器104,如图1C所示。在所述的实施方案中,地址空间控制器120提供只选择与输入系统地址相关的装置的特定参数的能力。在一个特殊的实现中,如图1D所示,地址空间控制器120包括比较器122,用于比较输入系统地址和区域地址范围缓冲器124的内容,缓冲器124标识哪一个装置(或者哪一个存储区域)与输入的系统地址相关。一旦具体的装置或者区域被标识,就选定一组装置参数寄存器126和128(各自连接到范围缓冲器124并包含具体装置的装置特殊的参数)其中之一。在有些实施方案中,被选定的装置参数寄存器的内容输入到LUT118。这样,任何数量的不同的装置可以得到通用控制器104的服务,从而,各装置的特定的操作参数被标识,并用于优先级化相应的通用指令的顺序。
还应该指出,有时连接到通用控制器中的一个装置忙,不能接受新指令,能够选择等待在指令队列中的任何其它指令是有益的。在本发明的一些实施方案中,装置的每次响应和通用控制器的每次请求都具有相关的ID编号150,在所述的实施方案中一个长度为5位的数据字,如图1E所示。ID编号150通过配置为包括长为2位的组选择器字段152和长为3位的请求标号字段153。组选择器(GS)确定请求属于哪一组特定的系统(即处理器,比方说),而请求标号(RN)表明组选择器字段152内所标识的相关的组的响应或者请求的标号,这样来自同一个收发器的连续的请求就具有连续的请求标号。
在一些实施方案中,一组优先级选择器寄存器154包括请求或者响应组的各自的优先级值,从而具有更高优先级的请求或响应将代替具有较低优先级值的请求或响应。这样,当较低优先级的请求或响应不能在下一个时钟周期内处理时,具有更高优先级的请求或响应就能够绕过具有较低优先级值的请求或响应。为了防止所谓的活锁,活锁计数器寄存器156包含关于具有较高优先级的连续的请求(或响应)的编号,能够绕过具有较低优先级的请求(或响应)。用这样的方法,较低优先级的请求(或响应)就不能急需时钟周期的实际编号。
还应该注意到,为了同时优化指令和数据流控制,应该认识到每个共享的资源都有与之相关的操作特性的设置(如访问时间,比如在是DRAM型装置时的CAS延时)。当不止一个共享的资源被通用控制器104服务时,每个共享的资源具有不同的操作特性的设置,在有些实施方案中,这些特性的设置被存储在连接到指令定序器116的查对表(LUT)118内。指令定序器116使用由LUT118和存储在资源标志缓冲器114的资源标志提供的信息,适当地排序指令项202-210,形成排好序的指令220。当共享的资源实际上是一组存储装置如多芯片模式,其中的每个装置可以具有完全不同地操作特性时,尤其是这样。
现在请参见图4,按照本发明的实施方案通用控制器访问共享的资源的过程400的详细流程图。过程400从402开始,系统生成访问共享资源的指令。但共享的资源是基于存储装置的DRAM,该操作包括预充电、刷新、关闭、打开、读和写。比方说,处理器通过生成系统指令(即读页面)和相关的系统地址,请求存储在共享的存储器内的存储页,相关的地址表明被请求的页面被存储的位置。在优选的实施方案中,资源的状态是在404确定的,使用,比如与共享的存储器内的激活的存储位置相关的资源标志。接下来,在406,决定了为执行要求的共享资源的请求所要求的操作的步骤。在408,通用控制器基于执行所要求的请求的要求的操作步骤,生成通用指令。比如,为了执行读页面操作,先前打开的页面必须关闭,新的页面被激活,然后执行读操作,所有这些操作被理解为在一个单的通用指令结构内。一旦通用控制器构成了通用指令,就使用共享资源的资源标志和特殊的操作特性,然后在410,通用控制器确定在通用指令的不同项之间的适当的时序。排好序的指令在412发布到共享的资源,使用有些实施方案的实际步骤。最后,在414,共享的资源响应排好序的指令,比如,提供存储在由系统地址表示的位置内的数据。
在本发明的一个实施方案中,通用控制器使用如图5所示的过程500确定资源的状态(402)和操作的步骤(404)。过程500从502开始,资源划分标识符(即存储器地址寄存器)与资源标识符(即资源标志地址字段202)比较。在504,如果判定“命中”了(即新指令的地址和当前的标志地址字段相匹配),下一条指令(数据操作)就在506发布。反之,如果新指令的地址和当前的标志地址字段不相匹配(即未命中),就在508判断旧页面是否是打开的。如果旧页面是打开的,就在510关闭旧页面,在512打开新页面。但是,如果旧页面没有打开,新页面就在512被打开,以及无论什么情况,一旦新页面被打开,下一条指令(数据操作)就在506发布。
在本发明的一个实施方案中,通用控制器根据如图6所示的过程600确定操作步骤之间的适当的时序(410)。过程600从602开始,通用控制器比较指令的新步骤的第一指令和特定资源的最近的上一步骤的最后一条条指令。在604,通用控制器确定通用指令项之间的时序约束,通过比较新的通用指令的第一指令项和最近的上一条通用指令的最后的指令项。在一个实施方案中,通用控制器使用如表1所示的二维数组的形式的2索引地址查对表(LUT),其中数组的第一行代表旧的(即最近的上一条)指令,第一列代表新的指令。比如,参见表1,如果旧指令是读页面以及如果新指令是页面关闭,新指令页面关闭和旧指令读页面的交点(即5Φ)提供来那个操作之间最少的可以允许的时间量(即最少的实际发布时间)。一般地,存储在LUT内的信息是由共享资源制造商提供的。
表1
新指令 | 页关闭 | 页打开 | 读 | 写 | |
页关闭 | 5 | ||||
页打开 | |||||
读 | |||||
写 |
一旦确定了特定通用指令项的资源的实际约束,就将在606判断是否还有其它指令项包括在通用指令中。如果没有了其它指令项,在608,就存储通用项及其相关的时序说明。反之,如果还有其它指令项包括在通用指令中,控制就返回到604,确定该项的相应的物理时序约束。
但是,为了跟踪具有存储体编号的共享的存储器108内的物理页的状态,比如说,大量的资源标志要求大量的专用于资源标志的缓冲器114的高速缓存器。这将减缓通用控制器104的执行,由于它要求大量的时间用于检索存储器的特定页的特定资源标志,每个存储器可能位于分散的位置。参见图7A,在一个实施方案中,页面命中/错过控制器702被包括在通用控制器104,用于减少页面寄存器704的数量M,在多存储体存储器706中M比存储体的数量N小,因为不是每个存储体条都有它在M页寄存器704内的表达。在操作中,各M页寄存器704存储打开页的地址和状态数据,以及随机页寄存器编号发生器708生成小于或等于对应页寄存器的M的随机整数,被打开页的状态所代替。比较器710并行地比较具有存储体编号的输入系统地址与所有M个寄存器的页地址,具有四种可能的结果。
1)如果比较器710表明命中,请求的存储体的要求的页就是打开的,并准备好访问;
2)如果比较器710表明命中存储体,错过页面,通用控制器104就必须使用页寄存器的页地址关闭旧页,使用系统地址的页地址打开新页;
3)如果比较器710表明错过了存储体和页,通用控制器104就必须关闭存储体的所有页,其编号由随机页号发生器给定,使用系统地址打开新页,以及最后访问请求的存储体;和
4)错过了存储体和页,但至少有一个页寄存器没有被使用,该页就将被利用以及新页将被打开。
在一些实施方案中,随机页寄存器编号发生器708被最近最少使用(LUR)比较器712代替,如图7B所示,判断M个寄存器704中的哪一个最长时间没有使用了(即最近最少使用)。
除了跟踪多存储体存储器704中物理页的状态,如图8所示的存储体访问控制器800还包括N条寄存器802,对应包括在多存储体存储器704内的存储体N的数量。存储体寄存器802包括存储体编号字段804,定义存储体的标识编号,关于存储体的信息被存储。存储体寄存器802页包括存储体状态字段,表明由存储体编号字段804内的存储体编号识别的特定的存储体的状态。在一个特定的实施方案中,存储体状态字段806可以取表2中所示的那些值。
表2
存储体寄存器单元 | 说明 |
存储体编号 | 识别存储在存储体寄存器内的信息 |
存储体状态 | 表示存储体的状态:“00”-无效输入“01”-存储体计数器值递减直到其值为0。如果存储体计数器值大于0,禁止访问该存储体。“10”-存储体被关闭。“01”-存储体计数器值递减直到其值为0。如果存储体计数器值大于0,禁止访问所有存储体 |
存储体定时器 | 如果存储体计数器值大于0,根据存储体状态值,对存储体的访问是被禁止的。 |
随着高速数据包定位的存储器的发展,如同步链接动态随机存取存储器(SLDRAM),其传输总线数据速度达到400-800Mb/x/pin,存储器访问冲突带来的问题大大增加了。如图9A示出了按照本发明实施方案的基于多处理器系统900的一个典型SLDRAM。多处理器900包括通过系统总线906连接到控制器904的处理器。通用控制器904通过SLDRAM总线依次连接到同步链接DRAM(SDRAM)908和SLDRAM910,SLDRAM总线由单向指令总线912和双向数据总线914构成。应该指出,尽管图9A中只示出了两个SLDRAM,任何数量的SLDRAM都可以通过总线912和914连接到通用控制器904。在一些情况下,SLDRAMs可以表现为缓冲模式,包括任何适当的数量的SLDRAMs,如,该议题下的SLDRAM908。连接通用控制器904和各个SLDRAMs908和910的初始化/同步(I/S)总线916,为通用控制器904生成的初始信号和同步信号提供信号通道。
在本发明的一个实施方案中,打包的指令、地址和来自通用控制器904的控制信息,被选择性地送到指令总线912上的SLDRAM908和SLDRAM910。数据总线914用于把打包的写指令从通用控制器904传输到SLDRAM908和SLDRAM910中被选定的那个。或者,数据总线914也用于把打包的读指令从SLDRAM908和SLDRAM910中被选定的一个传输到通用控制器904。应该指出的是,指令总线912和数据914一般是以同样的速度操作的,即400MB/s/p、600MB/s/p、800MB/s/p,等等。
多个控制信号由通用控制器904产生,并由指令总线912传输,这些信号包括,比如,差动自由运行时钟信号(CCLK)、FLAG(标志)信号、指令地址信号CA、LISTEN(监听)信号、LINKON(链路开)信号和RESET(复位)信号。一般地,数据包指令由4个连续的10位字组成,其中指令的第一字由FLAG信号的第一位“1”表示。在优选的实施方案中,差动自由运行时钟CCLK的两个边都被SLDRAM908和SLDRAM910使用,用来锁存指令字。通过监视指令总线912上的输入信号,SLDRAM908和910响应为HIGH的LISTEN信号。可以改变地,SLDRAM908和910响应为LOW的LISTEN信号,通过输入电源备用模式。LINKON信号和RESET信号分别用于关闭电源和上电,获悉被选择的SLDRAM908和910中的一个的状态,正如所期望的。
对本说明的剩余部分,将只详细讨论SLDRAM908,但是,认为适当的任何数量的SLDRAMs都可以连接到通用控制器904。如上所述,典型的SLDRAM装置,如SLDRAM908,被分层地排列为存储体、列、行、位以及存储区域。重要的,应该理解到各个可以实际观察到的分层,彼此之间有不同的操作特性。这些操作特性包括但不局限于这些参数:存储器访问时间、芯片调用时间、数据检索时间等。应该指出,多存储体存储器中的各存储体一般具有相同的操作特性,而定义为不同装置的区域如不同的存储器类型或不同的存储器组,各具不同指令和数据延时。比如说,本地存储器组可以直接连接到存储器控制器,而第二非本地存储器组位于一块板上,其中的干预驱动器增加了指令和数据延时,相对本地存储器组来说。在其它情况下,用于构成多芯片模式的不同的存储器芯片可以看作是不同的存储器区域。
更进一步参见图9A所示的系统,SLDRAM908是一个具有4个存储器芯片的多芯片模式,芯片A、B、C、D各自能够被指令总线912、数据总线914、I/S总线916单独访问。由于各个存储器芯片A-D可以具有不同的操作特性(一般由制造商提供)为了优化调度指令和数据包,通用控制器904能够使用特定分层的和/或存储区域的操作特性。
借助示例,图9B示出了具有代表性的时序框图,按照图9所示的多处理器系统99的典型的SLDRAM交易。操作中,处理器通常生成处理器指令包,如读指令950和写指令952,于是SLDRAM908的适当的存储体作出响应。一般地,读指令950和写指令952是根据生成这些指令地处理器的特定的要求在系统总线906上管道传输的,不是为了优化SLDRAM908的性能。系统时钟CLKsys(未示出)提供必要的时序信号。
在本例中,处理器902a生成读指令950,该指令具有位于SLDRAM908的内存芯片A的内存地址MA1,而处理器902b产生一个写指令952,该指令同样具有位于SLDRAM908的内存芯片A的内存地址MA2。在本例中,读指令950比写指令952先输出到系统总线906。通用控制器904先接收读指令950,接着根据该指令本身和指令地址MA1,用存储于通用控制器904的目的地址的详细信息执行指令。一旦确定了最小传送时间,通用控制器904就生成与接收到的处理器指令950相应的SLDRAM指令包READ960,并发布到指令总线912。
通常,SLDRAM指令包由四个10位字组成,如表3所示典型情况,一个64M SLDRAM,具有8个存储体,1024行地址和128列地址。如图示,有3位是存储体,10位是行地址,7位是列地址。必须指出的是,许多其它结构和密度都是可能的,并且可以在所述的40位格式调节,为任何被认为适当的其它任何格式。上电时,通用控制器904根据SLDRAM对诸如存储单元、行、列及其相关的操作特性等因素的轮询,形成指令包,然后把它存储起来。
指令包的第一个字包含芯片的ID位。SLDRAM将忽略与本地ID不匹配的所有指令。芯片的ID由通用控制器904在通电时用初始化和同步信号确定。这样,通用控制器904借助生成单独的芯片触发信号和联系逻辑,唯一寻址多处理器系统900中的各SLDRAM。
表3
SLDRAM指令包结构
标志 | CA9 | CA8 | CA7 | CA6 | CA5 | CA4 | CA3 | CA2 | CA1 | CA0 |
1 | ID8 | ID7 | ID6 | ID5 | ID4 | ID3 | ID2 | ID1 | ID0 | CMD5 |
0 | CMD4 | CMD3 | CMD2 | CMD1 | CMD0 | BNK2 | BNK1 | BNK0 | RW9 | RW8 |
0 | ROW7 | ROW6 | ROW5 | ROW4 | ROW3 | ROW2 | ROW1 | ROW0 | 0 | 0 |
0 | 0 | 0 | 0 | COL6 | COL5 | COL4 | COL3 | COL2 | COL1 | COL0 |
由于读指令950和写指令952是管道传输的,通用控制器904在接收读指令950(或者已经存储在缓冲器中)后才接收写指令952,随后根据写指令952传送SLDRAM指令包WRITE962。通用控制器904用MA2的详细特征数据以及读命令960的发布时间(即,发布时间)来生成最小发布时间和WRITE962的数据偏置,以避免与先前传送的读指令960相干扰,由于两个指令都用到了同一个存储体(A)。
以这种方法,至少根据特定的目标寻址装置的操作特性以及指令和数据包流的当前状态,通用控制器904可以动态地调度SLDRAM指令包的发布。
现在参照图10示出了按照本发明实施方案的的存储控制器1000方框图,应当说明的是,存储控制器1000仅仅是图1中的通用控制器104的一种可能的实施方案,因此不能被理解为本发明范围的限制。存储控制器1000包含系统接口1002,它通过系统总线906把处理器902和存储调度器1006(被叫做调度器)连接起来。在本发明的一各实施方案中,系统接口1002用于将处理器902生成的存贮指令包的传输及其相应的写数据包提供给存储器指令包调度器1004。如果调度器1006表明所有内部缓冲器均满,无法容纳新指令,系统接口1002将拒绝任何新指令,直到调度器1006表示准备号接受新指令。
一个同步链接媒介存取控制器(SLiMAC)1008提供调度器1006和SLDRAM908之间的物理接口。更具体地说,SLiMAC1008包含一个指令接口1010和一个数据接口1012,分别通过指令总线912和数据总线914把SLiMAC1008和SLDRAM908连接起来。在本发明优选的实施方案中,指令接口1010按照相关的指令时钟CCLK,将存储指令从SLiMAC1008传送到SLDRAM908。需要说明的是,在一些实施方案中,SLiMAC1008结合了一种时钟加倍装置,它用一种接口时钟信号ICLK(可以达到大约100MHz)来生成指令时钟信号CCLK,一般能达到200MHz。
在本发明的一个实施方案中,数据接口1012接受和传送数据都通过数据总线914。需要说明的是,数据总线914的宽度大得足以支持所需的SLDRAM。因此,为了提供所需的带宽,SLiMAC1008包括足够多的数据接口。例如,如果数据总线914是32位宽(例如,每个SLDRAM16位),那么SLiMAC1008可以包括2个数据接口,每个能够处理与SLDRAM相关的16位。按这种方法,SLiMAC1008包括的数据接口的数目可以与连接的SLDRAM的特定配置很好地相匹配。
与指令接口1010几乎相同的方式,SLiMAC1008可以提供一个数据时钟信号DCLK,同时读数据从SLDRAM908传送到SLiMAC1008。在本发明的一种实施方案中,数据时钟DCLK是通过用时钟加倍装置把接口时钟ICLK的频率从大约100MHz加倍到大约1000MHz来产生。需要指出的是,接口时钟信号ICLK,指令时钟信号CCLK,和数据时钟信号DCLK全部是同相的。
在本发明的一个优选实施方案中,调度器1006包含了一个约束程序块1016,用来从连接到其上的系统接口1002接收系统指令及其相关的系统地址数据。约束程序块1016向重排序块1018提供SLDRAM指令包数据及其相关的时序信息。写缓冲器1020从系统接口1002接收写数据。由于受调度器1006控制,读数据通过读缓冲器1022从数据接口1012传输,该缓冲器与数据总线相连,用来向系统接口1002提供读数据。与初始化/同步化(I/S)总线916相连的I/S程序块1024按需要向SLDRAM908提供合适的初始化和/或同步化信号。
操作中,调度器1006接收由处理器902产生的管道传输存储指令包。一般地,存储指令包由存储指令及其相关的存储地址组成。在本发明的一个实施方案中,调度器1006把与接收到的新指令相关的存储地址译码,以便决定存储指令和相关数据包(如果有的话)所指的目标地址。一旦译码,调度器1006用所存储的目标地址特定装置的特征数据以及与就在先前发布的存储指令相关的信息,来传送一个新的SLDRAM指令包。这个新的SLDRAM指令包输出到指令总线912,并且最终送到由SLDRAM指令包中包含的芯片ID所指定的SLDRAM。
作为调度过程的一部分,调度器1006确定在前一个发布的指令后,发布新指令前所需的最少时间。由于,如上所述,分级标准,比如SLDRAM的一个存储单元,可以有不同的操作特性(通常由制造商提供),调度器1006轮询各个在初始化中运行的SLDRAM。在一些实施方案中,如果为了确定操作参数,相连的存储器件不允许轮询,那么存储详细参数(比如时序)可以直接写入约束程序块寄存器1016。一旦轮询了SLDRAM,调度器1006就将存储装置详细信息,以后将用来改进适当的调度协议。以这种方法,调度器1006能够向任何数量和类型的SLDRAM恰当地提供调度服务,而无须借助硬件或其它费时而昂贵的步骤。
图11的示意图中示出了按照本发明一个实施方案的约束程序块1100。应该理解,约束程序块1100不过是如图10所示的约束程序块1016一个可能的实施方案,不能看作是限制。约束程序块1100包括连接到系统接口1002的地址译码器1102,用于译码接收到的新的与处理器902生成的新存储器指令相关的地址信号。译码后的新地址信号输入到序列标志寄存器1104,寄存器1104中存储关于SLDRAM存储体的状态和相关信息,尽管有时只是存储这些信息的一部分。序列标志寄存器1104输入到选择器1106,根据译码后的新指令地址通过选择的虚拟存储体的相关的数据,送到查对表(LUT)1108。
约束程序块1100还包括页连接到系统接口1102的区域比较器1110,用于接收新的地址信号提供区域标识符表示新指令地址所在的存储器区域。这样,约束程序块1100就能够,至少根据部分的存储区域的特定特性数据,为新的存储指令提供最佳的调度协议。区域比较器1110在输入新指令信号时,向LUT1108提供区域标识符。LUT1108依次提供最小的增量发布时间和数据偏置,用于将新指令及其相关的新地址转换为SLDRAM指令包。应该注意到,最小的增量发布时间是指发布新指令相对于只发布旧指令的增量时间(在时钟周期内)。数据偏置时间是表示,为了在发布新指令后,接收关于新指令的读数据包,在时钟周期内的增量时间。
在本发明的一个实施方案中,约束程序块1100包括16个序列标志存储体寄存器,LUT1108能够存储4个时序区域的4个不同的参数设置,各具16个相关的寄存器。
图12是SLDRAM总线信号的时序图1200,按照本发明实施方案的接收到的处理器指令的响应。应该指出,表4汇总了由约束程序块1100识别不同的生成的信号执行的调度器。还应该注意到,存储器指令的形式为{指令,地址},其中“指令”代表要执行的指令,“地址”是相应的存储位置。
参见表4和图12,在系统时钟周期Φ1期间,第一指令{OPENPAGE,1000}在地址译码器302和区域比较器1110同时接收到。对该示例,地址译码器1102把指令OPENPAGE的地址“1000”译码为“100”和“400”,区域比较器1110判断该地址被包括在存储器区域0之内。由于指令OPENPAGE是接收到的第一条指令,没有“命中”任何虚拟的存储体B0-13,与之对应的替代计数器设定为“0”。在所述的实施方案中,替代计数器根据伪随机计数方案更新,而在其它实施方案中,可以使用随机计数或其它适当的方案。由于第一指令{OPENPAGE,1000}是开放型指令,没有相应的最小增量发布时间或数据偏置,因此,地址1000的页面在第一指令时钟周期ΦC1是打开的。
在下一个系统时钟周期Φ2,指令{READ,1000}在约束程序块1100被接收到,地址译码器1102将其译码为100和400(即,从前一个时钟周期开始读取在存储地址1000打开的页),又使区域比较器1110设定区域标识符为REGION1。然而,这种情况下,已经存储在B0寄存器内的先前的或其它被称作“旧指令”的指令导致在B0“命中”,使选择器输出“READ”作为“旧指令”输入到LUT1108。其它输入包括区域比较器1104生成的区域标识符REGION1和“新指令”输入如READ。LUT1108利用存储的特征数据生成3个指令周期Φ3的最小的增量发布时间,表明至少3个指令时钟周期必须分开指令{OPENPAGE,1000}和指令{READ,1000}的发布。
这样,在约束程序块1100接收到的各个存储指令包,根据存储在LUT1108的特征数据和至少部分根据紧邻的先前发布的指令。
现在将描述按照本发明的具体实施方案的从约束块接收到的指令的重排序。图13A-13C是时间线1302和1304,通过简单的指令重排序示例,解释一些借助重排序存储指令可以实现的优点,按照本发明的具体的实施方案。每条时间线示出了对应两个不同的存储体的4条读指令。CMD0和CMD1是针对相关存储器的存储体1的读指令。CMD2和CMD3是针对相关存储器的存储体2的读指令。时间线1302表示存储指令排列在指令总线上,依次连接存储器控制器和存储器,其中的指令是存储器控制器从系统处理器中接收的;CMD0占据时隙0,CMD1占据时隙3,CMD2占据时隙4,CMD3占据时隙7。每个时隙代表一个时钟周期。
如上所述,给同一个存储体的指令,在先前发布的指令的发布和调节服务之间必须具有一些小的延时。图13A中每对指令之间由两个时隙表明了这一点。如图示,如果4条读指令按照图13A所示的顺序发送到存储器,指令总线将在可以利用的4个时钟周期没有被使用,即时隙1、2、5和6。正如将要讨论的,根据本发明,通过重排序指令至少可以部分改善这种低效率现象。
图13B和图13C的时间线1304和1306,分别说明了根据本发明具体实施方案的图13A的指令重排序和由此获得的至少部分优点。示例中,为了简化起见,没有考虑数据总线上的冲突。但是,如下所述,必须注意考虑存储指令的有效重排序。由于CMD2和CMD3与CMD0和CMD1是针对不同的存储体,两对指令之间的存储访问延时是不相关的并可以忽略。也就是说,指令必须象时间线1304所示的那样重新排列,CMD2排在紧接着CMD0之后的时隙1,CMD3排在紧接着CMD1之后的时隙4。这是因为在发布CMD0和CMD2或者CMD1和CMD3之间不需要任何延时,由于他们针对不同的存储体。但是,如图13C所示可以理解到的,最小的延时时间,如两个时钟周期,针对同一个存储体的一对指令之间的延时必须保留。也就是说,指令的重排序并不包括试图减少对同一存储体的连续的指令之间的延时。
重排序指令的结果如图13C所示,其中,4条指令在5个时钟周期内发布,只有两个时隙没有利用。当然,将可以理解到,给另一个存储体的第五条存储指令可以插入到时隙2,从而进一步提高指令总线的利用率。
图14为根据本发明具体实施方案设计的存储器控制器的部分方框图。重排序电路1400从系统处理器接收到输入的存储指令序列,即1、2、3。按照具体的实施方案,存储指令通过约束电路(未示出)传输到重排序电路1400,如前所述,约束电路施加发布时间限制到选择的指令相对于给相关存储器的同一逻辑存储体的其它指令。指令被重排序在指令队列1402中,由此把指令发布到存储器。本例中,指令被重排序到序列1、3、2中。
原来的存储指令序列,即1、2、3,被存储在读数据电路1406中的先进先出(FIFO)存储器1404。在FIFO1404中的序列用于重排序从存储器接受到的数据,按照存储器控制器原来接受到的指令的顺序。但是,应该说明,有些处理器期望有序的数据,而其它处理器期望无序的数据,因此,通过把FIFO1404切换为要求的开或者关,就可以支持任何类型的数据顺序。这是必要的,因为处理器“期望”接收到的数据的顺序和原来传输到存储器控制器的指令的顺序相符。
另外,因为来自存储器的数据可能被存储器控制器接收到的顺序与处理器传输存储质量的原来的顺序不相符,第三序列就存储在数据队列1408。该序列(本示例中是3、2、1)代表符合指令序列1、3、2的数据,将被读数据电路1406接收的顺序。根据指令队列序列和已知的关于存储器的不同的逻辑存储体的延时,重排序电路1400计算数据队列序列。当存储器将数据按照存储在数据队列1408(即3、2、1)中的序列传输到存储器控制器时,数据被存储在读数据缓冲器1410,并根据FIFO1404和数据队列1408的信息重排序,这样,数据就按照原来的指令序列顺序即1、2、3,传输到处理器。
图15为根据本发明的一个具体实施方案设计的那场控制器中的重排序电路1500的方框图。重排序电路包括指令队列1502,它存储和重排序从系统处理器接收到的指令。指令队列1502计算每条指令的发布时间、发布指令和从队列中删除指令,使用关于存储器中同一逻辑存储体的指令发布时间限制以及数据总线利用限制。
数据队列1504存储数据项表示对应发布的存储指令的的数据出现时间,计算队列中每个新输入的数据出现时间,并在相应的存储处理结束时删除队列输入。
比较器阵列1506执行冲突检测功能,其中指令准备从指令队列1502(如图通过多路复用器1508传送的)发布的数据出现时间与在数据队列1504中提交的先前发布的指令的数据出现时间比较。如果检测到了冲突,就延时发布指令。
图16是图15所示的重排序电路1500的更详细的方框图。指令队列1502包括6个指令队列项1602,每个单元存储61位关于特定存储指令的信息,如图17所示。指令字段1702包含40位指令包,详细说明存储指令。指令发布时间(Cd)字段1704为6位,表示指令可能被发布前的时钟周期内的增量时间。在1704内的值由如上所述的限制电路确定,并涉及到对应存储器内同一逻辑存储体的最近的存储指令。也就是说,在Cd字段内的值表示到同一存储体地两条指令之间的延时。关于每个存储体的要求的延时的信息存储在限制电路内并主要由存储器的物理特性确定。只要在指令队列中,Cd字段就对每个具有一些例外的时钟周期递减一次。比如,给同一逻辑存储体的连续的指令之间的延时是不能改变的。因此,如果针对特定存储体的指令的Cd字段达到0并没有发布,到同一存储体的其它指令的Cd字段也不能确定,直到第一指令被发布。
数据出现时间(Dd)字段1706为6位,表示存储指令从指令队列出现的时间到相应的数据传输之间的时钟周期的增量时间。Dd字段1706可能在指令队列中不能改变。指令ID字段1708是5位的,唯一的识别指令包1702中的指令。该信息具有FIFO和数据队列中的相应的信息,用于跟踪哪一个信息包是哪一个,以及哪些数据对应哪些信息包,从而使指令和数据的重排序有效。逻辑存储体(B)字段1710使3位的,表示指令包是针对存储器内的哪一个逻辑存储体。最后,字符组指示器(Db)字段1712是1位的,表示数据是否被请求或写,占据一个或两个时钟周期。
回过来参见图16,指令队列的操作由指令队列控制器1604来控制。控制器1604跟踪可以利用的队列项1602,控制输入指令插入到特定的队列1602,通过自由位置指示器1606。控制器1604也便于将指令队列项信息插入到数据队列1504,一旦对应的指令已经发布。根据具体的实施方案,指令插入到队列1502,无须考虑在指令或数据总线上的自由时隙的可使用性。
指令可以通过多路复用器1608从指令队列项1602中的任何一个发布到指令总线上,如果Cd的计数为0并且数据总线上没有表示有冲突。也就是说,必须识别指令总线和/或数据总线上的空时隙。如果指令没有读或写指令(因此不要求数据总线资源),就只需要指令总线时隙。如果指令是读或者写,在指令总线和数据总线上的时隙都需要。
控制器1604内的0比较器1610用于作出第一判断,即Cd=0。减法器1612用于,每个时钟周期,从每个指令队列项1602的Cd计数中减去“1”,除非出现如上所述的例外,即对没有发布的特定指令Cd=0。在队列控制器1604使用所有队列项的Cd和B字段的情形下,生成一个屏蔽信号(M),防止发给同一逻辑存储体的所有指令的Cd计数被减少。
根据具体的实施方案,如果有两个队列项的Cd=0,就发布具有最高优先级的那一个(如最就的那个)。地址移位器1614确定队列中的指令的优先级,下面将结合附图18更详细地说明。按照另一个具体的实施方案,如果新指令到达指令队列时其Cd计数已经为0,该指令可以通过多路复用器1608直接传输到存储器。如果Cd计数为非0或者有其它Cd=0且优先级更高的指令存储在指令队列,新指令就被存储在指令队列项1602内。但是,如果指令队列为空,新指令就可以被立即发布(如果Cd等于0)。
对读或写指令,使用包含准备要发布的指令的指令队列项1602的Dd和Db字段,检测冲突。相应指令的出现时间和宽度通过多路复用器1508传送到比较器阵列1506,多路复用器1508由队列控制器1604轮流控制。也就是说,队列控制器1604控制多路复用器1508传输队列项中指令发布时间即Cd为0的指令的数据出现时间和宽度(一个或者两个时钟周期)。宽度表示为一个或者两时钟周期,用加法器1616将Db位加上数据出现时间Dd,得到Dd+1为“0”(表示一个时钟周期)或者为“1”(表示两个时钟周期)。然后,数据出现时间和宽度就在比较器阵列1506中与存储在数据队列1504中的先前发布的5条指令的数据出现时间和宽度相想比较。按照具体的实施方案,比较器阵列1506包括2×10个并行的比较器阵列。
图18是图16所示的地址移位器1614的具体实施方案的方框图。如上所述,新指令按照空位置指示器1606被插入到任何自由指令队列项1602。新指令要插入的指令队列项1602的地址被插入到具有最高优先级的第一个空位置(A0-A5)。结果是,地址移位器1614内的位置A0存储还没有发布的旧指令的队列项地址。当指令从指令队列发布,地址移位器1614内的相应项目旧被删除,并且较低优先级指令的地址移位到较高的优先级位置。如上所述,当指令队列中的指令的Cd计数达到0,该指令可以被发布。但是,如果不止一条指令的Cd=0,最旧的指令,即具有最高优先级的指令,正如地址移位器1614内的其地址的位置所表明的,就被发布。
图16中的数据队列1504包括5个队列项1652,各单元存储关于先前发布的存储指令的12位信息,如图19所示。数据出现时间(Dd)字段1902是6位的,表示在指令队列发布指令到接收到相应的数据之间的时钟周期内的增量时间。每个指令队列项1652的Dd计数被每个时钟减,使用其中一个减法器1564,直到其值为0。当Dd=0时,相应的数据在数据总线上。因此,应该理解到,在任何给定时间,只有一个数据队列项1652的Dd=0。Dd计数达到0后,将对应的数据队列中的信息从数据队列1504中删除。
指令ID字段1904是5位的,它唯一的标识发布的指令对应的数据。该信息对于按照指令原来传输到存储器控制器的顺序重排序数据是很有用的。最后,字符组指示器(Db)字段1906是1位的,表明数据是否占据了一个或者两个时钟周期。
回过去参见图16,如上所述,每个数据队列项1652的数据出现时间(Dd)和宽度在比较器阵列1506中与准备发布的,即Cd=0的指令队列1502中的指令的Dd和宽度比较。宽度被表示为一个或者两个时钟周期,通过用加法器1656把Db位与数据出现时间相加,加法器向Dd+1提供“0”(表示一个时钟周期)或者“1”(表示两个时钟周期)。如果比较的结果表明没有冲突,就从指令队列发布指令。
数据队列控制器1658控制数据队列1504的操作。空位置指示器1660和指令队列控制器1604一起,便于将新的数据队列项信息插入到数据队列项1652。空位置指示器也方便于从数据队列项1652删除信息,当相应的存储器访问已经结束时。0比较器1662和字符组指示器1664用于判定所有数据队列项1652的Dd何时为0和数据传输何时不再占据数据总线,以及因而相应的信息什么时候可以从数据队列中删除。
根据本发明的另一个具体实施方案,冲突检测变得更复杂,尽管使用了二维的比较器和多路复用器数组。这种方法比前述的一维方法更加深入细致,它查看了指令队列中的所有单元,而不仅仅查看准备被发布的指令。其调度指令时不仅考虑先前发布的指令,还考虑数据总线上数据包的顺序。
为了插入新指令,必须比较指令管道的准备发布部分内的每组两个连续的阶段,看是否能够将新指令插入其中。比较实际是确定指令可以被插入的范围。其范围如下:
CLENx=指令长度
Tcstart=tcA+CLENA (1)
Tcend=tcB (2)
其中的tcA和tcA是连续的管道单元A和B的发布时间。管道单元A在管道单元B之前,因此其发布时间是两个发布时间中中较小的。如果要插入,在单元A和B之间至少必须有一个打开的时隙。因此:
N=Tcend-Tcstart+1 (3)
(其中,N=单元A和B之间发布时隙的数量)
LEN<=tcb-tca-CLENA (4)
在硬件中很容易简化实现这样的情况:
(tcB-CLENA)-(tcA+CLENA)=>0 (5)
范围的起点和终点还规定了相关数据时隙的可能的范围。该范围必须与数据管道内的各组连续的单元比较,看是否有重叠,以及新的范围是什么。该比较存在5中不同的情况。
情况0
在这种情况下,由数据时隙tdA和tdB描述的范围完全在两个连续的项M和N之外。这时:
tdA+CLENA=>tdN (6)
或者,其中的DLENX=数据长度,
tdB<=tdM+DLENM (7)
在M和N之间不可能有数据时隙。
情况1
在这种情况下,由数据时隙tdA和tdB描述的范围完全在两个连续的项M和N之内。这时:
tdA+CLENA=>tdM+DLENM (8)
和
tdB-CLEN+DLEN<=tdN(其中CLEN是新指令长度,DLEN是时隙内的新数据长度) (9)
在这种情况下的可能的最早的数据时隙是tdA+LENA,具有对应的指令发布时间tcA+CLENA
情况2
在这种情况下,由数据时隙tdA和tdB描述的范围跨越了项M。这时:
tdA+CLENA<tdM+DLENM (10)
和
tdb-CLEN+DLEN>tdM+DLENM和tdB-CLEN+DLEN<tdM (11)
在这种情况下的可能的最早的数据时隙是tdM+DLENM+1,具有对应的指令发布时间tdM+CLENM-DATA_OFFSET,其中DATA_OFFSET是指令发布时间和数据占用之间的时间。
情况3
在这种情况下,由数据时隙tdA和tdB描述的范围跨越了项N。这时:
tdA+CLENA>tdM+DLENM (12)
和
tdA+CLENA+DLEN<tdN (13)
因此,在这种情况下的可能的最早的数据时隙是tdA+CLENM,具有对应的指令发布时间tcA+CLENA+1。应该指出,情况1也被包括在这种情况内。
情况4
在这种情况下,由数据时隙tdA和tdB描述的范围,包括在由项M和项N定义的范围内。这时:
tdA+CLENA<tdM+DLENM (14)
和
tdB-LEN>CtdN (15)
因此,在这种情况下的可能的最早的数据时隙是tdM+DLENM,具有对应的指令发布时间tcM+CLENA+DATA_OFFSET,其中DATA_OFFSET=tdA-tCa。
很显然,作为调度目的情况1和情况3是一样的,因为总是使用可能的最早时隙。所以组合的情况就是情况3。类似的情况2和情况4是一样的,由于期望的结果是tdM+LENM。在这种情况下,必须简化地表示tdM被由tdA和tdB给出地范围所跨越。输入指令的附加的可能的最早发布时间(tc)和数据时隙(td)必须被考虑。必须比较每对指令管道的每对数据管道:
if(((tcB-CLEN)=>(tcA+CLENA))&&(tc<=(tcA+CLENA))){ if(((tdA+CLENA)<=(tdM+DLENM))&&((tdB-DLEN-(tdM+DLENM))>= 0)){ td=tdM+DLENM; tc=tcA-tdA+tdM+DLENM; } else if(((tdN-(tdA+CLENA+DLENA))>=0)&&(tdA+CLENA)>=(tdM+ DLENM)){ td=tdA+CLENA; tc=tcA+CLENA; } else{ td=IMPOSSIBLE; tc=IMPOSSIBLE; } } else if(((tcB-CLEN)=>tc)&&(tc>(tcA+CLENA))){ if(((td<(tdM+DLENM))&&((tdB-DLEN-(tdM+DLENM))>=0)){ td=tdM+DLENM; tc=tc-td+tdM+DLENM; } else if(((tdN-(td+DLEN))>=0)&&td>=(tdM+DLENM){ td=td; tc=tc; } else{ td=IMPOSSIBLE; tc=IMPOSSIBLE; } } else{ td=IMPOSSIBLE; tc=IMPOSSIBLE; }
因此,对指令管道,需要的操作是:
tcB-CLEN=>tcA+CLENA
tcB-CLEN=>tc
tc+CLEN<=tcB
tc>tcA+CLENA
tc<=tcA+CLENA而对数据管道需要的操作是:
tdA+CLENA<=tdM+DLENM
tdA+CLENA>=tdM+DLENM
tdB-DLEN>=tdM+DLENM
tdN>=tdA+CLENA+DLENA
td<tdM+DLENM
tdN>=td+DLEN
td>=tdM+DLENM
因此,判断逻辑由上面所定义的比较器单元的阵列组成。优化的选择是最早的指令发布时间,这由简单的优先级编码来确定。
重定序器管道控制逻辑必须动态地判断指令和数据管道的各单元要进行什么操作。
在等待的指令管道内,每个管道单元具有4各可能的操作:从先前的管道(管道接近)读取,保持当前管道(管道保持),从下一个单元读取(管道备份),和从输入指令总线读取。正如前面所定义4种情况在管道内的不同的点存在多种设定。同步链接媒介存取控制器(SLiMAC)所发布的单元被定义为项0,而发布的最快的单元被定义为项M。重定序器判断逻辑发现在当前管道中的最佳插入点是在项N-1和N之间,就在项N插入。
情况1-保持
管道保持就是不发布到同步链接媒介存取控制器或者没有插入新的指令。
情况2-保持&插入
这种情况就是不发布到同步链接媒介存取控制器(SLiMAC),但要在管道中插入新的指令。如果是在项N插入,管道将从项0到项N-1保持,在项N插入,并从项N+1到项M备份。
情况3-发布
这种情况是从单元0发布到SLiMAC,管道的复位将提前,因而单元0将包含单元1的内容,单元1将包含单元2的内容,以此类推,项M-1将包含项M的内容。
情况4-发布&插入
这种情况是从单元0发布到SLiMAC并在项N插入。这时,单元0到项N-2进行提前操作,项N-1进行插入操作,项N到项M保持。对单元进行提前操作就是存储来自该单元后面项的数据,在项N插入(在当前管道的项N-1和项N之间插入项)实际上意味着插入的项将在更新的管道的位置N-1结束。
图20示出了一个冲突检测系统2000,它是图15所示的冲突检测系统的另一种实现方案。在这个实施方案中,冲突检测系统2000重排序指令,以便达到最佳的指令顺序,基于目标响应约束和在启动程序控制器和目标子系统之间确定数据传输的最佳时隙。因为指令的重排序不会导致总线上不同数据包的冲突,如果一指令数据传输涉及到特定指令将导致要求的数据冲突,插入检测器2002就禁止发布该特定指令的。在所述的实施方案中,冲突检测系统2000包括连接到指令队列2004的冲突检测器2002。
在所述的实施方案中,冲突检测器2002检测“将要发布的”指令(存储在指令队列2004中的指令)和“已经发布的”指令(存储在数据队列2006)中所有的可能的数据冲突。在所述的实施方案中,有N个指令队列2004,各自连接到多路复用器2008。N个指令队列2004中的每一个通过排列用来存储这些将要发布的指令,时间因素“d_timeND”,表明指令被发布到目标装置后,什么时候数据传输将出现在通用控制器104与目标装置(即共享的资源)108之间的数据总线上;字符组字节(bND)表明数据字符组传输;和读/写字节(rwND)。在所述的实施方案中,数据队列2006存储时间因素“d_timeD”表明对已经发布到目标装置的请求,什么时候数据传输将出现在通用控制器104与目标装置108之间的数据总线上。指令队列2006还存储字符组字节(bND)和读/写字节(rwND)。
在优选的实施方案中,冲突检测系统2000包括队列和链接控制器单元2010,用于存储和重排序那些将要发布的指令。队列和控制器单元2010还计算新的指令发布时间和数据出现在数据总线上的时间。队列和控制器单元2010也从指令队列将发布了的项传输到数据队列,以及当指令被发布后系哦那个指令队列中将其删除。当对存储器的访问结束后,队列和控制器单元2010也从数据队列中将数据项删除。
参见图21,每个对目标装置的读/写指令都有关于它的数据包传输,指令被发布到目标装置前,根据其时序信息检查新数据包ND(新数据),看能否插入到数据队列中而没有冲突。如图21所示的示例中,一个发布了的数据包D已经被放在数据队列中,一个新的数据包ND与发布了的数据包D相比较。应该指出,关于发布了的数据包D和新的数据包ND都呈现字符组访问。因此,在本示例中,在不导致冲突的前提下,新的数据包ND如何插入到发布了的数据包D,有两种可能性。新的数据包ND可以放在发布了的数据包D的右侧或者左侧。
这个特定的示例说明了存储器控制器的冲突检测同时支持非字符组和字符组数据传输(即,4数据流)。由于数据总线的的双向传输特性,一个时钟周期必须插入到连续的读-写或者写-读传输之间。
应该注意到,这里有很多可能的结果,现其中的一部分罗列如下。
1)如果ND放在D之前或之后,在D和ND之间不存储冲突。
2)在连续的读-写或者写-读数据传输之间,插入了一个时钟周期。每个指令单元和数据队列存储“rw”位,表明操作是否是“读数据”(rw=0)或者“写数据”(rw=1)。
3)数据包由一个数据流(没有字符组传输)或者4个数据流(字符组传输)。每个指令单元和数据队列存储“burst”位,表明操作是否是“字符组传输”(burst=1)或者“没有字符组传输”(burst=0)。
对每条将要发布的指令,必须比较要发布的数据包和发布了的数据包对:
//初始化变量
collision=NO;
//根据字符但位确定来自指令队列的新数据色的结束
if(burstND=1)then d_time_endND=d_timeND+3 else d_time_endND=d_timeND for i=1 to last_element_from_Data_Queue begin //根据字符组位确定来自数据队列的数据色的结束 if(burstD[i]=1)then d_time_endD[i]=d_timeD[i]+3 else d_time_endD[i]=d_timeD[i] //在一个周期内必须执行的两个连续的读/写式写/读指令之间 <dp n="d30"/> if(rwD[i]=rwND)then begin d_time_endD[i]=d_time_endD[i]+1 d_time_endND=d_time_endND+1 end //冲突检测 if NOT((d_timeND>d_time_endD[i])or(d_timeD[i]> d_time_endND))collision=YES; end.
在本发明的其它实施方案中,公开了一种预测两个连续的存储器访问之间的时间的装置和方法,允许很快的计算新指令的最早的“指令发布时间”。请看图22,它示出了一个预测器系统2200,该系统具有N页计时器2202,存储上一次发布指令到特定页与预定下一次访问该内存之间的时间。下一次访问同一页可以是“关闭”、“打开”、“写”或“读”。输入的新指令(比如,读)选择一特定的页的表明特定页访问在发布之前要等待多长时间的计时器。之后,同一条新指令就选择适当的时序查对表2204的内容,必须插入到该指令(读)与可能的下一条访问同一页的指令(关闭、打开、写或读)之间。计时器的分辨率为一个时钟周期。
时序查对表-数据存储时间,表明指令发布后多少个周期,数据总线上的数据将有效。如果新指令是非激活的,每个周期所有页计数器的值直到其值达到“0”。
现在请参见图23,在本发明的另一个实施方案中示出了具有根据本发明一个实施方案的装置访问优先级区分器2302的装置控制器2300。在所述的实施方案中,优先级区分器2302包括请求队列2303适合接收和存储任何数量的装置请求,连接到一个请求控制单元2304,部分用于从请求队列2303的任何位置取特定的响应,并把所取到的响应传输到多个共享装置108中适当的那一个。在所述的实施方案中,优先级区分器2302还包括响应队列2306,用来接收和存储连接到响应控制器单元2308的共享的任何装置108的响应,响应控制器单元2308用于选择发送到请求的装置102的特定的存储的响应。
在优选的实施方案中,每个响应和请求具有与之相关的ID号150,如图1E所示,这样,每个请求及其相关的响应具有相同的ID号150。如前所述,ID号150包括5个数据位,其中的第一和第二数据位是组选择器字段152,识别特定的响应/请求所属的请求装置的组(如在多处理器计算机环境中的处理器组)。还是如上所述,请求号字段(RN)153提供由组选择器字段152识别的相关的请求的装置的请求和/或响应的编号,这样,来自同一请求装置的连续的请求,比如,具有连续的请求编号字段153。
在操作中,请求以及响应控制器2304和2308都分别结合组优先级选择器寄存器154、活锁计数器寄存器156和重排序寄存器2312结合。组优先级选择器寄存器154包括通过RN152识别的特定的请求/响应组的优先级信息,在一个实施方案中,值为“3”表示最高的优先级,值为0表示最低的优先级,这样具有较高优先级的请求就能绕过具有较低优先级的请求。
为避免活锁情况,活锁计数器寄存器156包含关于多少具有较高优先级的连续的请求(响应)能够绕过具有较低优先级的请求(响应)的信息。应该指出,活锁计数器寄存器156只有在具有较高优先级的请求绕过具有较低优先级的请求时,才是激活的。实际上,如果在适当的队列中没有具有较低优先级的请求(响应),活锁计数器寄存器156就为非激活的。
尽管只是详细地说明了本发明的很少的几个实施方案,但我们应该能够理解到,在不背离本发明的实质和超出本发明范围的前提下,本发明可以用许多具体的形式实施。因此,所给出的示例是解释性的,而不应该看作是限制;本发明也不局限于在这里给出的细节,却可以在附后的权利要求的范围内改变。
Claims (19)
1.一种指令重排序系统,根据目标响应约束,得到最佳的指令次序,确定在启动控制器和目标子系统之间的数据传输的最佳时隙,通过禁止要导致数据冲突的指令的发布,包括:
指令队列,用于存储将要发布的指令,表明指令被发布后数据传输出现在控制器和目标装置之间的数据总线上的时间,表明数据字符组传输和读写位(r/w)的字符组位;
连接到指令队列的数据队列,用于存储表明已经发布到目标装置的请求的数据传输将出现在控制器值的数据总线上的时间,以及用于存储字符组位和写(w)位;
连接到数据队列和指令队列的冲突检测器,用于检测在数据总线上的,存储在指令队列中将要发布的指令和存储在数据队列中已经发布的指令之间的可能的冲突;和
连接到冲突检测器和数据队列和指令队列的队列和链接控制器,用于存储和重排序将要发布的指令,其中的控制器计算指令的新的发布时间和数据出现在数据总线上的时间。
2.如权利要求1的系统,其中的队列和链接控制器把发布的单元从指令队列传输到数据队列。
3.如权利要求2的系统,其中的队列和链接控制器,在指令被发布后,把已经发布的指令从指令队列中删除。
4.如权利要求3的系统,其中的队列和链接控制器,在完成存储器的访问之后,把数据单元从数据队列中删除。
5.一种使用存储体标志寄存器的方法,通过存储器控制器,能够非顺序访问以避免包括在多存储体型存储器内的存储体中的后台操作冲突,其中的存储器控制器包括多个存储体寄存器,每个存储体寄存器对于多个存储体中的一个,其中关于特定存储体的存储体寄存器用于存储特定的存储体编号,规定存储体的编号,存储表示特定存储体状态的存储体状态,和存储体计时器,以及其中的存储器控制器还包括可调整的存储体编号比较器,连接到多各存储体寄存器的各个寄存器,包括:
接收输入的系统地址请求,其中的输入的系统地址请求包括请求的存储体编号;
通过存储体编号比较器定位对应请求的存储体编号的存储体寄存器;
确定关于请求的存储体编号的存储体的存储体状态;
根据确定了的存储体状态确定存储体的输入情况;和
当存储体的输入情况表明请求的存储体是打开的时,访问请求的存储体。
6.如权利要求5的方法,其中,当存储体的状态表示为"00"时,相应的存储体输入状态就标识为无效的。
7.如权利要求5的方法,其中,当存储体的状态表示为"01"时,存储体计数器的值就递减,直到其值为0,但是,当存储体计数器的值大于0,存储体输入状态表示为关闭,在存储器系统中所有访问请求的存储体都是被禁止的。
8.如权利要求7的方法,其中,当存储体计数器的值=0,则存储体状态改变为"00"。
9.如权利要求5的方法,其中,当存储体的状态表示为"01",则相应的存储体入口状态表示为关闭。
10.如权利要求9的方法,其中,存储体计数器的值递减直到其值为0,但是,当存储体计数器的值大于0,所有访问请求的存储体都是被禁止的。
11.如权利要求10的方法,其中,当存储体计数器的值=0,则存储体的状态设定为"01",只有当请求的存储体的释放-存储体信号为激活时,以便避免从不同的出来同时地访问同一存储体。
12.如权利要求5的方法,其中,当存储体的状态表示为"11",则存储体计数器的值递减,直到其值等于0,但是,当存储体计数器的值大于0,则在存储器系统中对所有存储体的所有访问都是被禁止的。
13.如权利要求12的方法,其中,当存储体计数器的值=0,则存储体的状态设定为"00"。
14.如权利要求5的方法,其中的存储装置是SDRAM。
15.如权利要求5的方法,其中的比较器是可调整的比较器。
16.如权利要求15的方法,其中的可调整的比较器是根据多存储体存储装置的操作特性进行配置。
17.如权利要求16的方法,其中的操作特性存储在连接到存储器控制器的地址空间控制器内。
18.如权利要求17的方法,其中,当确定了特定的存储体编号时,特定存储体的操作特性就由于配置可调整的比较器。
19.一种方法,很快速地计算通过存储器控制器发布地新指令的最早发布时间,其中的存储器控制器包括N页状态寄存器,每页状态寄存器包括4页计时器,其中每个页计时器存储上一条发布到特定页的指令与预计下一条访问存储器的指令之间的时间周期,其中下一条访问同一页的指令可以是"关闭"、"打开"、"写"或"读",包括:
接收输入的新指令;
判断特定页的访问在发布之前需要等待多长时间;
由新指令选择指令时序查对表的适当的内容;
把新的时间值写到适当的页计时器,新时间值是要插入到新指令和可能下次访问同一页的指令之间的时间,其中页计时器的分辨率大约为一个时钟周期;其中的数据时序查对表存储表示从新指令发布到数据总线上的数据为有效的之后需要多少周期的时间。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10893098P | 1998-11-16 | 1998-11-16 | |
US60/108930 | 1998-11-16 | ||
US60/108,930 | 1998-11-16 | ||
US09/439,591 | 1999-11-12 | ||
US09/439591 | 1999-11-12 | ||
US09/439,591 US6453370B1 (en) | 1998-11-16 | 1999-11-12 | Using of bank tag registers to avoid a background operation collision in memory systems |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1357121A true CN1357121A (zh) | 2002-07-03 |
CN100354796C CN100354796C (zh) | 2007-12-12 |
Family
ID=26806432
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB998156507A Expired - Fee Related CN100354796C (zh) | 1998-11-16 | 1999-11-15 | 使用多存储体存储器设备中的标记寄存器的方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US6453370B1 (zh) |
JP (1) | JP4695761B2 (zh) |
KR (1) | KR100716346B1 (zh) |
CN (1) | CN100354796C (zh) |
DE (1) | DE19983737B3 (zh) |
GB (1) | GB2359164B (zh) |
WO (1) | WO2000029921A2 (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100382001C (zh) * | 2004-12-09 | 2008-04-16 | 国际商业机器公司 | 避免行激活与列读取或列写入命令之间冲突的方法及设备 |
CN100426793C (zh) * | 2005-10-22 | 2008-10-15 | 华为技术有限公司 | 一种存储器的控制器及控制方法 |
CN1853238B (zh) * | 2003-09-30 | 2010-05-05 | 英特尔公司 | 用于隐式dram预充电的方法和装置 |
CN103455768A (zh) * | 2013-08-26 | 2013-12-18 | 中国科学院数据与通信保护研究教育中心 | 一种usb安全存储方法及系统 |
CN107239367A (zh) * | 2016-03-28 | 2017-10-10 | 爱思开海力士有限公司 | 非易失性双列直插式存储器模块及其操作方法 |
CN107463759A (zh) * | 2017-09-18 | 2017-12-12 | 北京兆易创新科技股份有限公司 | 一种计时器的仿真验证装置及仿真验证方法 |
CN109062602A (zh) * | 2018-07-20 | 2018-12-21 | 乐蜜有限公司 | 一种针对应用程序的数据处理方法、装置及电子设备 |
CN109284214A (zh) * | 2018-08-15 | 2019-01-29 | 英业达科技有限公司 | 信息共享电路及共享内存状态的方法 |
CN109885857A (zh) * | 2018-12-26 | 2019-06-14 | 苏州中晟宏芯信息科技有限公司 | 指令发射控制方法、指令执行验证方法、系统及存储介质 |
CN111221573A (zh) * | 2018-11-26 | 2020-06-02 | 深圳云天励飞技术有限公司 | 一种寄存器访问时序的管理方法、处理器、电子设备及计算机可读存储介质 |
CN112188697A (zh) * | 2020-11-05 | 2021-01-05 | 宁波钧飞智能科技有限公司 | 一种面向不可靠ZigBee网络的灯光和空调控制算法及系统 |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6895482B1 (en) * | 1999-09-10 | 2005-05-17 | International Business Machines Corporation | Reordering and flushing commands in a computer memory subsystem |
US6842837B1 (en) * | 2001-02-13 | 2005-01-11 | Digeo, Inc. | Method and apparatus for a burst write in a shared bus architecture |
JP3831309B2 (ja) * | 2002-01-29 | 2006-10-11 | 株式会社東芝 | 同期型半導体記憶装置及びその動作方法 |
US20030163654A1 (en) * | 2002-02-22 | 2003-08-28 | Eliel Louzoun | System and method for efficient scheduling of memory |
US8856401B2 (en) * | 2003-11-25 | 2014-10-07 | Lsi Corporation | Universal controller for peripheral devices in a computing system |
US7412574B2 (en) * | 2004-02-05 | 2008-08-12 | Micron Technology, Inc. | System and method for arbitration of memory responses in a hub-based memory system |
US7788451B2 (en) | 2004-02-05 | 2010-08-31 | Micron Technology, Inc. | Apparatus and method for data bypass for a bi-directional data bus in a hub-based memory sub-system |
US7257683B2 (en) | 2004-03-24 | 2007-08-14 | Micron Technology, Inc. | Memory arbitration system and method having an arbitration packet protocol |
US7363419B2 (en) | 2004-05-28 | 2008-04-22 | Micron Technology, Inc. | Method and system for terminating write commands in a hub-based memory system |
JP4711709B2 (ja) * | 2005-03-18 | 2011-06-29 | 富士通株式会社 | パーティション割り振り方法及びコンピュータシステム |
US7490204B2 (en) | 2005-04-07 | 2009-02-10 | International Business Machines Corporation | Using constraints to simplify a memory controller |
US8082396B2 (en) * | 2005-04-28 | 2011-12-20 | International Business Machines Corporation | Selecting a command to send to memory |
US7596707B1 (en) * | 2005-05-06 | 2009-09-29 | Sun Microsystems, Inc. | System and method for efficient power throttling in multiprocessor chip |
WO2010029830A1 (ja) * | 2008-09-12 | 2010-03-18 | 株式会社日立製作所 | 半導体装置および情報処理システム |
WO2010134201A1 (ja) * | 2009-05-22 | 2010-11-25 | 株式会社日立製作所 | 半導体装置 |
JP5613517B2 (ja) * | 2010-09-30 | 2014-10-22 | 京セラドキュメントソリューションズ株式会社 | 情報処理装置 |
US9098209B2 (en) | 2011-08-24 | 2015-08-04 | Rambus Inc. | Communication via a memory interface |
US8880819B2 (en) * | 2011-12-13 | 2014-11-04 | Micron Technology, Inc. | Memory apparatuses, computer systems and methods for ordering memory responses |
US9329990B2 (en) * | 2013-01-11 | 2016-05-03 | Micron Technology, Inc. | Host controlled enablement of automatic background operations in a memory device |
KR20150020477A (ko) * | 2013-08-16 | 2015-02-26 | 삼성전자주식회사 | 메모리 장치, 이를 포함하는 메모리 시스템 및 그 동작 방법 |
US9384830B2 (en) * | 2014-05-06 | 2016-07-05 | Micron Technology, Inc. | Apparatuses and methods for performing multiple memory operations |
US11024361B2 (en) | 2017-01-06 | 2021-06-01 | Qualcomm Incorporated | Coincident memory bank access via cross connected shared bank resources |
US9779798B1 (en) | 2017-01-06 | 2017-10-03 | Qualcomm Incorporated | Systems, methods, and computer programs for providing row tamper protection in a multi-bank memory cell array |
US10620879B2 (en) * | 2017-05-17 | 2020-04-14 | Macronix International Co., Ltd. | Write-while-read access method for a memory device |
US10489056B2 (en) | 2017-11-09 | 2019-11-26 | Nvidia Corporation | Queue manager for streaming multiprocessor systems |
US10275352B1 (en) * | 2017-12-28 | 2019-04-30 | Advanced Micro Devices, Inc. | Supporting responses for memory types with non-uniform latencies on same channel |
GB2578932B (en) | 2019-02-14 | 2021-02-24 | Imagination Tech Ltd | Allocation of memory |
JP7433571B1 (ja) | 2023-08-04 | 2024-02-19 | 三菱電機株式会社 | 遅延装置、メモリ制御システム、遅延方法及びプログラム |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4633434A (en) | 1984-04-02 | 1986-12-30 | Sperry Corporation | High performance storage unit |
JP2674809B2 (ja) | 1988-11-07 | 1997-11-12 | 日本電気株式会社 | 情報処理装置 |
JP2997513B2 (ja) | 1990-07-25 | 2000-01-11 | 株式会社日立製作所 | シエアードプリンタシステム |
US5655096A (en) | 1990-10-12 | 1997-08-05 | Branigin; Michael H. | Method and apparatus for dynamic scheduling of instructions to ensure sequentially coherent data in a processor employing out-of-order execution |
US5325525A (en) | 1991-04-04 | 1994-06-28 | Hewlett-Packard Company | Method of automatically controlling the allocation of resources of a parallel processor computer system by calculating a minimum execution time of a task and scheduling subtasks against resources to execute the task in the minimum time |
DE69227664T2 (de) | 1991-10-15 | 1999-04-22 | Hewlett Packard Co | Hardwarekonfiguriertes Betriebssystemkern für einen Multitaskprozessor |
US5412788A (en) * | 1992-04-16 | 1995-05-02 | Digital Equipment Corporation | Memory bank management and arbitration in multiprocessor computer system |
JPH0659906A (ja) | 1992-08-10 | 1994-03-04 | Hitachi Ltd | 並列計算機の実行制御方法 |
US5848258A (en) | 1994-06-30 | 1998-12-08 | Digital Equipment Corporation | Memory bank addressing scheme |
US6360285B1 (en) * | 1994-06-30 | 2002-03-19 | Compaq Computer Corporation | Apparatus for determining memory bank availability in a computer system |
US5761731A (en) * | 1995-01-13 | 1998-06-02 | Digital Equipment Corporation | Method and apparatus for performing atomic transactions in a shared memory multi processor system |
US5809539A (en) * | 1995-04-27 | 1998-09-15 | Hitachi, Ltd. | Processor system having address allocation and address lock capability adapted for a memory comprised of synchronous DRAMs |
US5694577A (en) | 1995-06-06 | 1997-12-02 | Matsushita Electric Industrial Co., Ltd. | Memory conflict buffer for achieving memory disambiguation in compile-time code schedule |
US5873114A (en) * | 1995-08-18 | 1999-02-16 | Advanced Micro Devices, Inc. | Integrated processor and memory control unit including refresh queue logic for refreshing DRAM during idle cycles |
US5822772A (en) * | 1996-03-22 | 1998-10-13 | Industrial Technology Research Institute | Memory controller and method of memory access sequence recordering that eliminates page miss and row miss penalties |
US6003111A (en) * | 1997-11-19 | 1999-12-14 | Intel Corporation | Bank state tracking method and device |
US5964867A (en) | 1997-11-26 | 1999-10-12 | Digital Equipment Corporation | Method for inserting memory prefetch operations based on measured latencies in a program optimizer |
US6260121B1 (en) * | 1998-06-30 | 2001-07-10 | Micron Technology, Inc. | Method for adaptive decoding of memory addresses |
US6286075B1 (en) * | 1998-11-16 | 2001-09-04 | Infineon Technologies Ag | Method of speeding up access to a memory page using a number of M page tag registers to track a state of physical pages in a memory device having N memory banks where N is greater than M |
US6374323B1 (en) * | 1998-11-16 | 2002-04-16 | Infineon Technologies Ag | Computer memory conflict avoidance using page registers |
US6216178B1 (en) * | 1998-11-16 | 2001-04-10 | Infineon Technologies Ag | Methods and apparatus for detecting the collision of data on a data bus in case of out-of-order memory accesses of different times of memory access execution |
-
1999
- 1999-11-12 US US09/439,591 patent/US6453370B1/en not_active Expired - Lifetime
- 1999-11-15 CN CNB998156507A patent/CN100354796C/zh not_active Expired - Fee Related
- 1999-11-15 JP JP2000582866A patent/JP4695761B2/ja not_active Expired - Fee Related
- 1999-11-15 DE DE19983737.6T patent/DE19983737B3/de not_active Expired - Fee Related
- 1999-11-15 WO PCT/US1999/027016 patent/WO2000029921A2/en active IP Right Grant
- 1999-11-15 GB GB0111923A patent/GB2359164B/en not_active Expired - Fee Related
- 1999-11-15 KR KR1020017006146A patent/KR100716346B1/ko not_active IP Right Cessation
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1853238B (zh) * | 2003-09-30 | 2010-05-05 | 英特尔公司 | 用于隐式dram预充电的方法和装置 |
CN100382001C (zh) * | 2004-12-09 | 2008-04-16 | 国际商业机器公司 | 避免行激活与列读取或列写入命令之间冲突的方法及设备 |
CN100426793C (zh) * | 2005-10-22 | 2008-10-15 | 华为技术有限公司 | 一种存储器的控制器及控制方法 |
CN103455768A (zh) * | 2013-08-26 | 2013-12-18 | 中国科学院数据与通信保护研究教育中心 | 一种usb安全存储方法及系统 |
CN103455768B (zh) * | 2013-08-26 | 2016-04-13 | 中国科学院数据与通信保护研究教育中心 | 一种usb安全存储方法及系统 |
CN107239367B (zh) * | 2016-03-28 | 2020-07-07 | 爱思开海力士有限公司 | 非易失性双列直插式存储器模块及其操作方法 |
CN107239367A (zh) * | 2016-03-28 | 2017-10-10 | 爱思开海力士有限公司 | 非易失性双列直插式存储器模块及其操作方法 |
CN107463759B (zh) * | 2017-09-18 | 2020-08-04 | 北京兆易创新科技股份有限公司 | 一种计时器的仿真验证装置及仿真验证方法 |
CN107463759A (zh) * | 2017-09-18 | 2017-12-12 | 北京兆易创新科技股份有限公司 | 一种计时器的仿真验证装置及仿真验证方法 |
CN109062602A (zh) * | 2018-07-20 | 2018-12-21 | 乐蜜有限公司 | 一种针对应用程序的数据处理方法、装置及电子设备 |
CN109062602B (zh) * | 2018-07-20 | 2022-03-18 | 卓米私人有限公司 | 一种针对应用程序的数据处理方法、装置及电子设备 |
CN109284214A (zh) * | 2018-08-15 | 2019-01-29 | 英业达科技有限公司 | 信息共享电路及共享内存状态的方法 |
CN109284214B (zh) * | 2018-08-15 | 2021-04-06 | 英业达科技有限公司 | 信息共享电路及共享内存状态的方法 |
CN111221573A (zh) * | 2018-11-26 | 2020-06-02 | 深圳云天励飞技术有限公司 | 一种寄存器访问时序的管理方法、处理器、电子设备及计算机可读存储介质 |
CN109885857A (zh) * | 2018-12-26 | 2019-06-14 | 苏州中晟宏芯信息科技有限公司 | 指令发射控制方法、指令执行验证方法、系统及存储介质 |
CN109885857B (zh) * | 2018-12-26 | 2023-09-01 | 上海合芯数字科技有限公司 | 指令发射控制方法、指令执行验证方法、系统及存储介质 |
CN112188697A (zh) * | 2020-11-05 | 2021-01-05 | 宁波钧飞智能科技有限公司 | 一种面向不可靠ZigBee网络的灯光和空调控制算法及系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2000029921A2 (en) | 2000-05-25 |
GB2359164B (en) | 2003-12-03 |
KR20010081016A (ko) | 2001-08-25 |
DE19983737T1 (de) | 2002-03-07 |
CN100354796C (zh) | 2007-12-12 |
JP2002530731A (ja) | 2002-09-17 |
GB0111923D0 (en) | 2001-07-04 |
WO2000029921A3 (en) | 2000-10-05 |
GB2359164A (en) | 2001-08-15 |
JP4695761B2 (ja) | 2011-06-08 |
DE19983737B3 (de) | 2014-05-22 |
WO2000029921A9 (en) | 2001-03-22 |
US6453370B1 (en) | 2002-09-17 |
KR100716346B1 (ko) | 2007-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1205553C (zh) | 分优先级访问外部装置的设备 | |
CN1199109C (zh) | 通过重排序存储器请求提高总线利用率的存储器控制器 | |
CN1357121A (zh) | 对不同时间执行的存储器访问,检测在数据总线上的数据冲突的装置和方法 | |
CN1282925C (zh) | 利用页标志寄存器跟踪存储器装置内物理页的状态的方法 | |
CN1192314C (zh) | 并行处理器结构的sram控制器 | |
CN1185592C (zh) | 并行处理器结构 | |
CN1296818C (zh) | 用于多线程并行处理器的指令 | |
CN1387644A (zh) | 并行处理器体系结构的sdram控制器 | |
CN1387641A (zh) | 并行处理器中的多线程执行 | |
US7617368B2 (en) | Memory interface with independent arbitration of precharge, activate, and read/write | |
US8683126B2 (en) | Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory | |
CN100489811C (zh) | 实现矢量存储器操作 | |
CN1967506A (zh) | 高速缓存存储器处理器中的合并入口 | |
CN1311357C (zh) | 通用资源访问控制器 | |
CN1881183A (zh) | 信息处理装置、进程控制方法及其计算机程序 | |
CN1016829B (zh) | 在多任务虚拟存储器虚拟计算机型数据处理系统中控制输入输出存取的方法 | |
CN1934543A (zh) | 高速缓冲存储器及其控制方法 | |
CN110716691B (zh) | 调度方法、装置、闪存设备和系统 | |
CN1199120C (zh) | 具有共享一个共用存储器的多个处理器的装置 | |
CA2415018C (en) | Adaptive parallel data clustering when loading a data structure containing data clustered along one or more dimensions | |
CN1044354A (zh) | 指令执行高效率生产线方法及装置 | |
CN1812379A (zh) | 分裂式网络处理器控制信息高速缓冲存储器 | |
CN1812378A (zh) | 基于网络处理器的流相关控制信息高速缓冲存储器 | |
CN100339825C (zh) | 将多余的分支目标地址高速缓存项目无效化的装置及方法 | |
CN1282930C (zh) | 有效更新分支目标地址高速缓存的装置与方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20071212 Termination date: 20171115 |
|
CF01 | Termination of patent right due to non-payment of annual fee |