专利名称:分层存储器读取/写入微指令调度器的制作方法
技术领域:
本发明涉及存储器读取和写入周期的调度。
技术背景芯片组的性能主要由处理存储器读取和写入周期的方式来定义。 读取和写入周期的闲置开始等待时间、平均等待时间和总带宽是可以 定义芯片组性能的三个大体指标。在发生存储器读或写(以下称为读取/写入)时会发生三类结果页命中(page hit)、页空(page empty)和页错 失(pagemiss)。页命中结果表示存储体中带有请求的目标地址的行当前 为活动行。在存储体中带有请求的目标地址的行当前非活动,但该行 可以在不停用任何打开行的情况下被激活时,会发生页空结杲。最后 ,在存储体中带有请求的目标地址的行当前非活动,并且该行只能在 停用另 一 当前活动行后才能被激活时,会发生页错失结果。例如,在存储器读取的情况下,页命中结果仅需要一个微指令, 读取微指令读取存储器行目标地址上的数据。页空结果需要两个微指 令。首先,需要激活微指令激活指定存储体中带有请求数据的行。一 旦该行被激活,第二微指令,读取微指令用于读取存储器行目标地址 上的数据。最后,页错失结果需要三个微指令首先需要预充电微指 令从相同存储体停用存储器的当前活动行,为页错误结果指定的行腾 出空位。 一旦行被停用,需要激活微指令激活指定存储体中带有请求 数据的行。 一旦该行被激活,第三微指令,读取微指令用于读取存储 器行目标地址上的数据。 一般来说,执行页命中结果比执行页空结果 需要的时间更少,并且执行页空结果比执行页错失结果需要的时间更 少。存储器写入请求与存储器读取微指令具有相同的结果和微指令,
只是使用写入微指令替代读取微指令。存储器读取和写入的标准策略要求每种结果(即页命中、页空和页 错失)以存储器读取/写入的顺序执行所有与结果关联的微指令。例如, 如果要执行的页错失读取请求第 一时间到达并且页命中读取请求紧随 其后第二时间到达,与页错失读取请求关联的预充电激活读取微指令将首先以该顺序执行,然后与页命中读取请求关联的读取微指令将在 执行全部三个页错失微指令之后执行。此调度顺序为页命中读取请求 造成了不需要的延迟。此外,对于单个存储器读取/写入,在每个微指令之间有延迟,因 为在可以对新行执行激活指令之前存储器装置需要一定的时间对行进 行预充电,并且在可以对行执行读取/写入指令之前装置还需要一定的 时间激活该行。此延迟视硬件而定,但每个微指令之间至少需要数个 存储器时钟周期。发明内容根据本发明的第一方面,提供了一种方法,包括 接收多个存储器请求的设备,其中每个存储器请求包括一个或多个微指令,每个微指令需要一个或多个存储器时钟周期来执行;以及 调度来自多个存储器请求中的一个以上请求的各微指令的执行,以减少完成一个以上存储器请求的执行所需的总存储器时钟周期数量根据本发明的第二方面,提供了一种装置,包括存储多个存储器请求的队列,其中每个存储器请求包括一个或多 个微指令,每个微指令需要一个或多个存储器时钟周期来执行;以及一个或多个仲裁器,以减少完成一个以上存储器请求的执行所需 的总存储器时钟周期数量的顺序,调度来自多个存储器请求中的一个 以上请求的各个微指令的执行。根据本发明的第三方面,提供了一种系统,包括
总线;耦合到所述总线的第一处理器;耦合到所述总线的第二处理器;耦合到所述总线的存储器;耦合到所述总线的芯片组,所述芯片组包括存储多个存储器请求的队列,其中每个存储器请求包括一个或多 个微指令,每个微指令需要一个或多个存储器时钟周期来执行;以及一个或多个仲裁器,以减少完成一个以上存储器请求的执行所需 的总存储器时钟周期数量的顺序,调度来自多个存储器请求中的一个 以上请求的各个微指令的执行。
本发明的图解仅作为实例并且不受附图之限制,附图中相同的标 号表示相似的元件,其中图1是可以与本发明的实施例配合使用的计算机系统的框图。的仲裁(arbitration)逻辑的 一个实施例。图3是调度DRAM存储器读取/写入微指令的过程的一个实施例 的流程图。
具体实施方式
描述了分层DRAM微指令调度器的方法、设备和系统的实施例。 在以下说明中,阐述了许多具体细节。但是,应该理解,实施例的实 行可以不需要这些具体细节。在其它实例中,公知的元件、规格和协 议未详细讨论,以避免影响对本发明的理解。图1是可以与本发明的实施例配合使用的计算机系统的框图。所 迷计算机系统包括处理器存储器互连100,用于耦合到互连100的不 同元件如处理器、桥、存储器装置等之间的通信。处理器存储器互连100包括发送仲裁、地址、数椐和控制信息(未示出)的特定互连线路。
在一个实施例中,中夹处理器102可连接到处理器存储器互连100。 在另 一个实施例中,可能有多个中央处理器耦合到处理器存储器互连 (在此图中未示出多个处理器)。在一个实施例中,中央处理器102是单 核的。在另一个实施例中,中央处理器102是多核的。
处理器存储器互连100为中央处理器102和其它装置提供对系统 存储器104的访问。在许多实施例中,系统存储器是动态随机访问存 储器(DRAM)的形式,包括同步DRAM (SDRAM),双数据速率(DDR) SDRAM, DDR 2 SDRAM, Rambus DRAM (RDRAM),或任何其它类 型的DRAM存储器。系统存储器控制器控制对系统存储器104的访问 。在一个实施例中,系统存储器控制器位于耦合到处理器存储器互连 100的芯片组106的北桥108中。在另一个实施例中,系统存储器控 制器位于中央处理器102所在的同一芯片上。信息、指令或其它数据 可以存储在系统存储器104中以备中央处理器102以及许多其它可能 的装置使用。1/0设备,例如I/0设备112和116,通过互连114和118 的一个或多个I/0耦合到芯片组106的南桥110。
在一个实施例中,微指令调度器120位于北桥108中。在此实施 例中,微指令调度器110调度与系统存储器104关联的所有存储器读 取和写入。在一个实施例中,微指令调度器从系统中的请求者包括中 央处理器102和耦合到南桥110的一个或多个总线主控I/O设备接收 所有存储器读取和写入请求。此外,在一个实施例中,耦合到北桥108 的图形处理器(未示出)也向微指令调度器120发送存储器读取和写入 请求。
在一个实施例中,微指令调度器120具有读取/写入队列122,存 储来自系统装置的所有输入存储器读取和写入请求。在不同的实施例 中,读取/写入队列可以有不同数量的项目。此外,在一个实施例中,
耦合到读取/写入队列122的仲裁逻辑124确定与存储在读取/写入队列 122中的与读取和写入请求关联的微指令的执行顺序。
图2示出与分层存储器读耳又/写入微指令调度器相关联的仲裁逻辑 的一个实施例。在一个实施例中,图2中所示的仲裁逻辑包括用于页 命中结果存储器读取或写入的仲裁单元。在此实施例中,仲裁器装置
200具有与读取/写入队列中的位置对应的多个输入(图1中的项目122) 。输入对应于读取/写入队列中的项目数量。因此,在一个实施例中, 输入202与队列位置1关联,输入204与队列位置2关联,并且输入 206与队列位置N关联,其中N等于队列位置数量。
每个输入包括关于关联队列项目中是否存储有效页命中读取/写 入请求以及页命中请求是否安全的信息。安全项目是指,在确定时, 项目能够在互连至系统存储器时立即调度(即时调度),而不会对队列 中的任何其它项目造成不利后果。因此,在一个实施例中,安全信息(如 安全=1,不安全=0)以及项目是页命中读取/写入请求(如页命中=1,非 页命中=0)的确定在逻辑上为"AND",并且如果结果为l,则关联队 列项目中存在安全页命中读取/写入请求。
仲裁装置200为每个队列位置接收此信息,然后确定哪个可用安 全页命中项目是等待时间最长的候选对象(即队列中当前所有安全页 命中项目中最先到达的请求)。然后,仲裁装置200输出先到达的安全 页命中请求的队列项目位置至输出208。如果没有可用的安全页命中 请求,输出将为零。
在一个实施例中,到或门210的输入线路耦合到进入仲裁装置200 的每个输入。因此,输出212将发送通知,从输入1到输入N(202-206) 的至少一个输入正在通知仲裁器装置200队列中存在安全页命中读取/ 写入请求。
在另一个实施例中,图2中所示的仲裁逻辑包括用于页空结果存 储器读取和写入的仲裁单元。在此实施例中,仲裁器装置200具有对 应于读取/写入队列中位置的多个输入(图1中的项目122)。
每个输入包括关于关联队列项目中是否存储有效页空读取/写入 请求以及页空请求是否安全的信息。如上所述,安全项目是指,在确
定时,项目能够在互连至系统存储器时立即调度,而不会对队列中的 任何其它项目造成不利后果。因此,在一个实施例中,安全信息(如安全=1,不安全=0)以及项目是页空读取/写入请求(如页空=1,非页空=0) 的确定在逻辑上为"AND",并且如果结果为1,则关联队列项目中 存在安全页空读取/写入请求。仲裁装置200为每个队列位置接收此信息,然后确定哪个可用安 全页空项目是等待时间最长的候选对象(即队列中当前所有安全页空 项目中最先到达的请求)。然后,仲裁装置200输出最先到达的安全页 空请求的队列项目位置至输出208。如果没有可用的安全页空请求, 输出将为零。在一个实施例中,到或门210的输入线路耦合到进入仲裁装置200 的每个输入。因此,输出212将发送通知,从输入l到输入N(202-206) 的至少一个输入正在通知仲裁器装置200队列中存在安全页空读取/写 入请求。在另一个实施例中,图2中所示的仲裁逻辑包括用于页错失结果 存储器读取或写入的仲裁单元。在此实施例中,仲裁器装置200具有 对应于读取/写入队列中位置的多个输入(图1中的项目122)。每个输入包括关于关联队列项目中是否存储有效页错失读取/写 入请求、页错失请求是否安全以及与页错失至相同存储体的读取/写入 队列中是否有任何页命中的信息。如果队列中有相同存储体页命中请 求,仲裁器装置200不考虑页错失请求,因为如果执行页错失请求, 所有至相同存储体的页命中请求将变成页空请求并且造成重大的存储 器页抖动。因此,相同存储体页命中指示器将被倒转,即如果有相同 存储体页命中,结果为0,并且如果队列中无相同存储体页命中请求 ,结果为1。此外,如上所述,安全项目是指,在确定时,项目能够在互连至 系统存储器时立即调度,而不会对队列中的任何其它项目造成不利后 果。因此,在一个实施例中,安全信息(如安全=1,不安全=0)、项目
是页错失读取/写入请求(如页错失=1 ,非页错失=0)的确定以及相同存 储体页命中指示器信息(如相同存储体页命中-O,非相同存储体页命中=1)在逻辑上为"AND"并且如果结果为l,则关联队列项目中存在安 全页空读取/写入请求。仲裁装置200为每个队列位置接收此信息,然后确定哪个可用安 全页空项目是等待时间最长的候选对象(即队列中当前所有安全页空 项目中最先到达的请求)。然后,仲裁装置200输出最先到达的安全页 空请求的队列项目位置至输出208。如果没有可用的安全页空请求, 输出将为零。在一个实施例中,到或门210的输入线路耦合到进入仲裁装置200 的每个输入。因此,输出212将发送通知,从输入l到输入N(202-206) 的至少一个输入正在通知仲裁器装置200队列中存在安全页空读取/写 入请求c至图2所有三个实施例(页命中仲裁逻辑实施例、页空仲裁逻辑实 施例以及页错失仲裁逻辑实施例)的输出线路进入利用以下算法的交 叉层(cross隱tier)仲裁器1) 如果队列中有安全页命中读取/写入请求,则安全页命中读取/ 写入请求胜,2) 否则,如果队列中有安全页空读取/写入请求,则安全页空请求胜,3) 否则,如果队列中有安全页错失读取/写入请求,则安全页错失 请求胜在一个实施例中,每个项目中的读取/写入请求分解为其各自的微 指令序列。这样,页错失项目在项目位置中将具有预充电、激活和读 取/写入微指令,并且在交叉层仲裁器确定执行哪个指令时,确定每个 微指令。例如,如果页空请求是到达空读取队列的第一个读取/写入请 求,则以上算法将允许页空读耳又/写入请求开始执行。因此,在此实施 例中,页空读取/写入请求被调度并且执行第一个微指令(激活微指令)
。如果安全页命中读取/写入请求在下一个存储器时钟周期到达该读取队列,在执行页空请求的读取/写入微指令之前,以上算法将安排优先级顺序并且允许页命中读取请求的读取/写入微指令在页空读取/写入请求的读取/写入微指令之前被立即调度。因此,页命中读取/写入请求 的读取/写入微指令经调度在第一个页错失读取/写入请求的激活微指令和读取/写入微指令之间的存储器时钟周期执行。图3是调度DRAM存储器读取/写入微指令的过程的一个实施例 的流程图。该流程由可能包括硬件(电路、专用逻辑等)、软件(如在通用计算机系统或专用机器上运行)或其组合的处理逻辑执行。参照图7 ,该流程从处理逻辑接收存储器读取/写入请求(处理框200)开始。存 储器读取/写入请求可以是页命中结果、页空结果或页错失结果。下一 步,处理逻辑将每个读取/写入请求存储在读取/写入队列中。在一个实 施例中,每个队列项目存储与存储器读取/写入请求关联的一个或多个 微指令(处理框202)。框210显示队列的表示,并且执行处理框202的 处理逻辑通过将接收的读取/写入请求存储到队列210中与队列210互 动。下一步,处理逻辑利用微指令等待时间优先级顺序(如包含页错失 请求的微指令的等待时间大于包含页命中请求的微指令的等待时间) 重新安排队列中的微指令的优先级顺序(处理框204)。此外,处理逻辑 利用指令重叠调度和乱序调度安排队列中读取/写入请求的优先级顺 序。在一个实施例中,利用页命中仲裁器、页空仲裁器、页错失仲裁 器以及交叉层仲裁器(如以上参照图2详述)完成处理框204中执行的重 新安排优先级顺序过程。在一个实施例中,处理逻辑包含仲裁逻辑212 ,并且处理框204执行的处理包括仲裁逻辑与队列210互动。最后,处理逻辑确定是否有准备接收的新读取/写入请求(处理框 206)。在一个实施例中,如果没有新的读取/写入请求,则处理逻辑继 续轮询新的读取/写入请求,直至出现一个。否则,如果有新的读取/ 写入请求,处理逻辑返回处理框200再次开始流程。
此流程涉及接收读取/写入请求到队列中和根据一系列仲裁逻辑 流程重新安排队列优先级顺序。此外,处理逻辑同时在每个存储器时 钟周期继续执行最高优先级顺序的安全执行的微指令。这通过在每个 可能的存储器时钟周期执行存储器读取/写入微指令使得存储器互连 吞吐量保持最佳化。在一个实施例中,交叉层仲裁器具有故障保护机制,对在将较低 优先级顺序的读取/写入请求强行置于优先级顺序列表顶端之前允许 经过的最大数量的存储器时钟周期进行设置。例如,如果页错失请求 继续被页命中重新安排至页命中之后,在交叉层仲裁器不具备故障保 护机制的情况下,页错失请求可能会无限延迟。在一个实施例中,在 交叉层设置器强制将较低优先级顺序的读取/写入请求置于列表顶端 之前允许的时钟周期数量^^皮预先确定并且设置在仲裁逻辑中。在另一个实施例中,此值设置在基本输入/输出系统(BIOS)中并且可以在系统初始化期间修改。这样,说明了分层DRAM微指令调度器的方法、设备和系统的实 施例。这些实施例已参照其具体示范实施例进行了说明。得益于本公 开的人员将知道,在不背离本文所述实施例的广泛精神和范围的情况 下,可以对这些实施例进^亍各种^^改和变更。因此,-说明和附图应净皮 视为说明性的而不是限制性的。
权利要求
1.一种方法,包括接收多个存储器请求的设备,其中每个存储器请求包括一个或多个微指令,每个微指令需要一个或多个存储器时钟周期来执行;以及调度来自多个存储器请求中的一个以上请求的各微指令的执行,以减少完成一个以上存储器请求的执行所需的总存储器时钟周期数量。
2. 如权利要求l所述的方法,其特征在于,多个存储器请求中的 每一个是存储器读取请求和存储器写入请求这两者其中之一。
3. 如权利要求2所述的方法,其特征在于,还包括重叠一个以上 存储器请求的微指令的调度。
4. 如权利要求3所述的方法,其特征在于,重叠微指令的调度还 包括在第二请求的两个独立微指令之间插入第 一请求的至少 一个微指 令。
5. 如权利要求l所述的方法,其特征在于,还包括不按照设备接 收一个以上请求的顺序来调度一个以上请求的完成。
6. 如权利要求5所述的方法,其特征在于,乱序调度一个以上请 求的完成还包括至少在第一时间后的第二时间到达所述设备的第二 请求的最终完成微指令之后,调度在第一时间到达芯片组的第一请求 的最终完成微指令。
7. 如权利要求l所述的方法,其特征在于,调度各个微指令的执 ^"以即时的方式完成。
8. 如权利要求7所述的方法,其特征在于,即时方式还包括仅考 虑那些准备好执行并且可以安全执行的微指令。
9. 如权利要求l所述的方法,其特征在于,各个接收请求的结果 从包含页命中结果、页空结果及页错失结果的组中选择。
10. 如权利要求9所述的方法,其特征在于,还包括如果队列中有页命中请求则调度页命中请求,或者如果队列中有页空请求并且 无页命中请求则调度页空请求,或者如果队列中有页错失请求并且无 页命中请求或页空请求则调度页错失请求。
11. 如权利要求10所述的方法,其特征在于,还包括如果两个 请求具有相同的页命中、页空或页错失结果,则按照两个请求的到达 顺序调度它们。
12. 如权利要求IO所述的方法,其特征在于,还包括如果请求 安全,则不管结果如何,都调度任何已在队列中等待预定数量的存储 器时钟周期的请求。
13. —种装置,包括存储多个存储器请求的队列,其中每个存储器请求包括一个或多 个微指令,每个微指令需要一个或多个存储器时钟周期来执行;以及一个或多个仲裁器,以减少完成一个以上存储器请求的执行所需 的总存储器时钟周期数量的顺序,调度来自多个存储器请求中的一个 以上请求的各个微指令的执行。
14. 如权利要求13所述的装置,其特征在于,多个存储器请求中 的每一个是存储器读取请求和存储器写入请求这两者其中之一。
15. 如权利要求14所述的装置,其特征在于,各个接收请求的结 果从包含页命中结果、页空结果及页错失结果的组中选择。
16. 如权利要求15所述的装置,其特征在于,还包括一个或多个 仲裁器,如果队列中有页命中请求则调度页命中请求,或者如果队列 中有页空请求并且无页命中请求则调度页空请求,或者如果队列中有 页错失请求并且无页命中请求或页空请求则调度页错失请求。
17. 如权利要求16所述的装置,其特征在于还包括 页命中仲裁器,调度任何页命中请求的执行顺序; 页空仲裁器,调度任何页空请求的执行顺序; 页错失仲裁器,调度任何页错失请求的执行顺序;以及 交叉层仲裁器,调度来自页命中仲裁器、页空仲裁器和页错失仲 裁器的请求的最终执行顺序。
18. 如权利要求17所述的装置,其特征在于,还包括页错失仲裁 器,如果没有对与页错失请求相同的存储体的未完成页命中请求,则 仅调度页错失请求来执行。
19. 一种系统,包括 总线;耦合到所述总线的第 一处理器;耦合到所述总线的第二处理器;耦合到所述总线的存储器; 耦合到所述总线的芯片组,所述芯片组包括存储多个存储器请求的队列,其中每个存储器请求包括一个或多 个微指令,每个微指令需要一个或多个存储器时钟周期来执行;以及一个或多个仲裁器,以减少完成一个以上存储器请求的执行所需 的总存储器时钟周期数量的顺序,调度来自多个存储器请求中的一个 以上请求的各个微指令的执行。
20. 如权利要求19所述的方法,其特征在于,多个存储器请求中 的每一个是存储器读取请求和存储器写入请求这两者其中之一。
21. 如权利要求20所述的装置,其特征在于,各个接收请求的结 果从包含页命中结果、页空结果及页错失结果的组中选择。
22. 如权利要求21所述的装置,其特征在于,还包括一个或多个 仲裁器,如果队列中有页命中请求则调度页命中请求,或者如果队列 中有页空请求并且无页命中请求则调度页空请求,或者如果队列中有 页错失请求并且无页命中请求或页空请求则调度页错失请求。
23. 如权利要求22所述的装置,其特征在于,还包括 页命中仲裁器,调度任何页命中请求的执行顺序; 页空仲裁器,调度任何页空请求的执行顺序; 页错失仲裁器,调度任何页错失请求的执行顺序;以及 交叉层仲裁器,调度来自页命中仲裁器、页空仲裁器和页错失仲 裁器的请求的最终执行顺序。
全文摘要
本文描述了一种方法、装置和系统。在一个实施例中,所述方法包括芯片组接收多个存储器请求,其中每个存储器请求包含一个或多个微指令,每个微指令需要一个或多个存储器时钟周期来执行,以及调度来自多个存储器请求中的一个以上请求的各个微指令的执行以减少完成一个以上存储器请求的执行所需的总存储器时钟周期数量。
文档编号G06F13/16GK101211321SQ20071030528
公开日2008年7月2日 申请日期2007年12月28日 优先权日2006年12月28日
发明者S·卡里纳哈利, Z·博金 申请人:英特尔公司