预取计算机系统中的数据的制作方法

文档序号:6416402阅读:167来源:国知局
专利名称:预取计算机系统中的数据的制作方法
背景技术
发明领域本发明涉及该计算机系统领域,更具体地说,涉及从存储位置预取数据。
相关技术的说明预取是通常在处理器中加以执行的技术。在它实际上被该处理器的核心执行单元(EU)利用之前,预取处理器所要求的数据和指令。作为预取的结果,该EU可按该处理器的内部总线的相对较高的数据传输速率来获得该被预取的数据。处理器中的硬件预取引擎(HWP)通常预取该EU所要求的该数据。由于无论何时该EU要求它,这些被预取的数据和指令(数据)都可用,因此,预取通常会改善该处理器的总体性能。
但是,如果不正确地执行预取,则预取可能会削弱处理器或系统的性能。为了(例如)从外部存储器中预取数据和/或指令,可使用该外部存储器总线。因此,预取可能占用该外部存储器总线的各种资源,从而减小该外部存储器总线的有效带宽。可以将被预取的该数据/指令存储在接近该处理器的高速缓冲存储器中。为了提高效率,可以使用多级高速缓冲存储器。但是,由于该高速缓冲存储器的尺寸有限,新的数据/指令的预取可以重写仍然需要的、先前被取出的数据/指令。
在典型的处理器中,可以预取整条超高速缓冲存储器线。例如,如果超高速缓冲存储器线包括32个字节,并且如果在该高速缓存中发生不命中,那么,在某时,可以从外部存储器中预取32个字节,并将其存储在该高速缓存中。如果该相同的超高速缓冲存储器线中发生多个不命中,则该HWP可以多次预取该相同的整条超高速缓冲存储器线。这个预取方法既冗余、又效率低。
附图简述通过参考下文和被用于举例说明的附图,可以理解本发明的各个实施例。在这些附图中

图1表现了根据本发明的一个实施例的计算机系统的一个部分的框图。
图2表现了流程图,它展示根据本发明的一个实施例的滤波器电路的该操作。
图3表现了流程图,它展示根据本发明的一个实施例的输入队列中的队列条目的服务。
图4A、4B表现了流程图,它展示根据本发明的一个实施例的关于高速缓存不命中的检测器指派以及该窗口尺寸的动态调整。
图5表现了流程图,它展示根据本发明的一个实施例来分配关于L2高速缓存不命中的检测器。
图6表现了根据本发明的一个实施例的滤波器电路。
图7表现了根据本发明的一个实施例的监视器,用于分配检测器和调整该检测器窗口尺寸。
详细说明描述了一种方法和装置,用于使用滤波器电路来处理处理器中的指令。此外,该方法和装置可以根据关于该总线的条目数量来动态地调整检测器窗口。在下文中,陈述众多特殊的细节(例如,逻辑实施、操作码、用于规定操作数的工具、系统部件的类型和相互关系、以及逻辑划分或集成选择),以便提供对本发明的彻底的理解。但是,掌握该技术领域的普通技能的人将会明白可以在没有这些特殊细节的条件下实践本发明。在其他实例中,还没有示出众所周知的构造、控制结构、门级电路、完全的软件指令序列和技术等,以避免不必要地使对该说明的理解模糊不清。利用这些所包括的说明,掌握该技术领域的普通技能的人将能够执行适当的功能性,而无须执行过度的实验。
本说明书中对“一个实施例”、“实施例”、“范例实施例”等的参考指出所描述的该实施例可以包括特定的特点、结构或特征,但每个实施例可能不一定都包括这个特定的特点、结构或特征。而且,这类短语不一定指的是相同的实施例。另外,当连同实施例来描述特定的特点、结构或特征时,认为无论是否加以明确的描述,精通该技术领域的人都可以连同其他实施例来影响这种特点、结构或特征。
在以下的说明和权利要求书中,可以连同诸如“按通讯方式被耦合”等派生词一起来使用术语“被耦合”和“被连接”。应该理解这些术语并不意在作为彼此的同义词。相反,在特定的实施例中,可以使用“被连接”来指出两个或更多的元件彼此直接物理接触或电接触。但是,“被耦合”也可以意味着两个或更多的元件彼此没有直接接触,但仍然彼此合作或相互作用。
使用精通该技术领域的人通常所运用的术语来呈现该说明的各个部分,以便向精通该技术领域的其他人传达其工作的实质。也按照通过执行编程指令来加以执行的操作,来呈现该说明的各个部分。如精通该技术领域的人所熟知的,这些操作经常采取能够通过(例如)电部件来加以存储、传送、结合和操作的电信号、磁信号或光信号的形式。
图1是根据本发明的一个实施例的计算机系统的一个部分的框图。在图1所展示的该实施例中,处理器100包括被耦合到L1高速缓存105的执行单元(EU)160,该L1高速缓存105被耦合到滤波器电路110。产生于来自L1高速缓存105的高速缓存不命中的超高速缓冲存储器线请求可以被输入滤波器电路110。超高速缓冲存储器线请求是关于来自主存储器或来自另一级高速缓冲存储器的数据和/或指令块的请求。在一个实施例中,L1高速缓存105是内部存储器(即处理器100内部的存储器),但其他实施例可以使用其他配置(例如,处理器100外部的存储器)。输入队列115和输出队列125可以包括控制电路和缓冲存储器,以处理包括来自EU 160的高速缓存不命中的请求。
在本发明的一个实施例中,通过滤波器电路110而进入输入队列115的这些请求是读请求。这些请求可能是关于EU 160将要利用的数据、指令或两者(数据/指令)的请求。这些读请求可以从将要被读取的该数据中识别存储地址。这些地址可以经受地址转换,以便当被输入队列115接收时,它们可以表示物理地址或虚拟地址。滤波器电路110被耦合到输入队列115,输入队列115被耦合到HWP 120。滤波器电路110可以过滤出来自输入滤波器队列115的冗余超高速缓冲存储器线请求。在一个实施例中,超高速缓冲存储器线请求包括关于超高速缓冲存储器线的请求,该超高速缓冲存储器线包含来自与L1高速缓存不命中相对应的地址位置的数据/指令。这样,输入队列115中的每个条目可以包含用于检索单一超高速缓冲存储器线的地址。
在图1的该实施例中,HWP 120被耦合到输出队列125,输出队列125被耦合到L2请求队列152。L2请求队列152被耦合到L2高速缓存153,L2高速缓存153经由前侧总线(FSB)157而被耦合到存储控制器150。虽然该术语FSB有时在本揭示说明中被用来描述该高速缓存-存储器控制器总线,但是,对于掌握该技术领域的普通技能的人而言,将会显而易见其他术语可以被用于在高速缓存与主存储器之间传送数据的总线,而不会偏离本发明的各个实施例。
监视器140可以监控这些超高速缓冲存储器线请求(例如,在输出队列125中),并将检测器指派给超高速缓冲存储器线请求。在本发明的一个实施例中,监视器140可以被耦合到该HWP 120,或可以构成该HWP 120的一部分。在本发明的其他实施例中,监视器140可以被耦合到输出队列125,作为单独实体;或者,可以构成输出队列125的不可分割的一部分。存储控制器150从L2高速缓存153那里接收这些超高速缓冲存储器线请求,并且经由存储器总线170来从存储器(例如,DRAM 155)中检索数据/指令。这里所描述的每个队列(例如,输入队列115、输出队列125和L2请求队列152)可以具有控制和缓冲器电路,以便管理和存储这些超高速缓冲存储器线请求、该被预取的数据、以及其他的变量和计数器。
在获得关于EU 160的该数据/指令的过程中,该EU可以将请求发送到该L1高速缓存。如果在该L1高速缓存中没有发现该被请求的数据/指令,则触发高速缓存不命中(例如,可以设置标志,并且可以通过该插入逻辑而将关于该需要的数据/指令的超高速缓冲存储器线请求发送到该L2高速缓存)。在一个实施例中,一旦第一超高速缓冲存储器线请求被HWP 120接收,HWP120或监视器140就可以预测EU 160将要求的下一条超高速缓冲存储器线,并且连同该第一超高速缓冲存储器线请求一起将关于那下一个超高速缓冲存储器线请求的请求发送到该L2高速缓存。如果在该L2高速缓存153中没有发现超高速缓冲存储器线请求,则该超高速缓冲存储器线请求可以经由FSB队列157而被转送到外部存储器(即,到DRAM 155)。
由于对相同的指令超高速缓冲存储器线的多个超高速缓冲存储器线请求相对罕见,因此,在一个实施例中,只有关于高速缓存数据不命中的超高速缓冲存储器线请求被输入滤波器电路110,而关于高速缓存指令不命中的超高速缓冲存储器线请求被直接输入输入队列115(见图1中的虚线箭头)。由于HWP 120在超高速缓冲存储器线或块中进行预取,因此,相同的存储块内的地址不需要生成复制的超高速缓冲存储器线请求。例如,如果超高速缓冲存储器线包括32个字节,并且如果高速缓存不命中发生在地址位置9,那么,关于包括地址位置9的超高速缓冲存储器线的请求被输入输入队列115。但是,如果以后高速缓存不命中发生在地址位置10(假设地址位置10在与地址位置9相同的超高速缓冲存储器线中),那么,关于该相同的超高速缓冲存储器线的第二请求不被放置在输入队列115中。所以,滤波器电路110可以过滤出关于已被发送到输入队列115的超高速缓冲存储器线的超高速缓冲存储器线请求。与“将超高速缓冲存储器线请求发送到关于每个L1高速缓存不命中的输入队列115”相比,通过滤波器电路110所执行的冗余超高速缓冲存储器线请求的该过滤,可以允许HWP 120按较低频率运行(从而消耗较少的功率,并且设计起来更简单)。
根据图2和图6来描述根据本发明的一个实施例的滤波器电路110的该操作。如图2和图6中所展示的,在205处,重置或清除滤波器缓冲器605A-D和地址寄存器620。在210处,计数器I(未示出)被初始化为零。计数器I可以位于各种电路中(例如,在滤波器电路600中或在控制器610中)。在本发明的一个实施例中,计数器I指向其中接下来存储超高速缓冲存储器线请求的该缓冲位置。在215处,确定该EU所需要的该数据/指令是否会导致高速缓存不命中。如果该L1高速缓存中没有该数据/指令,则触发高速缓存不命中。
通过触发高速缓存不命中,可使与触发过该高速缓存不命中的该请求(即超高速缓冲存储器线请求)相对应的超高速缓冲存储器线的该地址被存储在地址寄存器620中。如果无条目被存储在缓冲器605A-D中,则该超高速缓冲存储器线请求被存储在计数器I所指向的该缓冲位置。在225处,例如,由控制器610确定该超高速缓冲存储器线的该地址是否与缓冲器605A-D中所存储的任何条目的该超高速缓冲存储器线地址相匹配。虽然图6中的该实施例比较各个超高速缓冲存储器线地址,但是,其他实施例可以存储在缓冲器605A-D中,并比较其他尺寸递增(例如,字节地址、字地址等)。在一个实施例中,比较电路(例如,包括一系列异或门电路(未示出))将地址寄存器620中所存储的这些超高速缓冲存储器线请求的各个位与缓冲器605A-D中所存储的这些超高速缓冲存储器线请求进行比较。如果地址寄存器620中的该超高速缓冲存储器线请求与缓冲器605A-D中的条目相匹配,那么,在本发明的一个实施例中,放弃地址寄存器620中的该超高速缓冲存储器线请求(例如,该地址寄存器可以被重置为空值)。在本发明的一个实施例中,允许一个处理器周期过去,而不是放弃地址寄存器620中的这些超高速缓冲存储器线请求;并且,在这下一个处理器周期期间,这些接下来的超高速缓冲存储器线请求(对应于这下一个高速缓存不命中)被存储在地址寄存器620中。
但是,如果地址寄存器620中所存储的这些超高速缓冲存储器线请求不与缓冲器605A-D中的条目相匹配,那么,用地址寄存器620中所存储的这些超高速缓冲存储器线请求来取代该计数器I所指向的该缓冲器中的该超高速缓冲存储器线请求。在235处,在本发明的一个实施例中,在将该超高速缓冲存储器线请求写入该缓冲器之后,该计数器I递增。在240处,(例如)由控制器610确定计数器I是否指向这个最后的缓冲位置。如果该计数器I指向这个最后的缓冲位置,从而指出“所有缓冲位置605A-D都充满”,那么,可以引入等待周期,其间,该HWP为缓冲器605A-D中的这些超高速缓冲存储器线请求提供服务,从而为这下一个非冗余超高速缓冲存储器线地址而释放缓冲位置。
在本发明的一个实施例中,当为超高速缓冲存储器线请求服务时,这些超高速缓冲存储器线请求按先进先出(FIFO)方式而逐次前进通过这些缓冲位置。例如,当缓冲位置605a中的该超高速缓冲存储器线请求被提供服务(即,被发送到该HWP,再到该输出队列)时,缓冲位置605b-d中的其他超高速缓冲存储器线请求上移一个间隔,以填充缓冲位置605a中所创建的该空位。这样,这个新的非冗余超高速缓冲存储器线请求被拷贝到空闲的缓冲位置605d,并且,最老的条目(从时间上来说)经由该输入队列而被发送到该HWP。在245处,如果缓冲器可用,则该超高速缓冲存储器线地址被写入那个缓冲器。在245处将该超高速缓冲存储器线请求加入该缓冲器之后,该周期可以在215处再次开始。虽然图6中的该实施例展示了被标注为605A-D的4个缓冲器,但是,其他实施例可以具有不同数量的缓冲器并且/或者带有其他标签。在图6所展示的该实施例中,控制器610执行高速缓存不命中地址到超高速缓冲存储器线请求的转换,并且可以将这些超高速缓冲存储器线请求写入地址寄存器620以及(当这些缓冲位置变得可用时)缓冲器605A-D。
图3是流程图,它展示了该输入队列中的队列条目的服务。在301处,EU 160将关于数据/指令的请求发送到高速缓存105。在302处,确定是否有超高速缓冲存储器线请求(由高速缓存不命中来触发)。如果没有超高速缓冲存储器线请求,那么,在304处,输入队列115触发等待周期,并且,这时没有采取行动。但是,如果在302处有对输入队列115的超高速缓冲存储器线请求,那么,在一个实施例中,在303处,最老的超高速缓冲存储器线请求(即已经在输入队列115中的该超高速缓冲存储器线请求——最长的)退出队列,以便为这个新的请求腾出空位。使请求退出队列意味着由(例如)HWP 120来为已在该队列中的超高速缓冲存储器线请求提供服务。在305处,(例如)由HWP 120确定输入队列115中的这个退出队列的超高速缓冲存储器线请求是否是基于L1高速缓存不命中的请求。在本发明的一个实施例中,通过检验与每个超高速缓冲存储器线请求相对应的标志来确定该不命中类型,HWP 120可确定该不命中类型。如果在305处,该超高速缓冲存储器线请求被确定是L1数据或指令高速缓存不命中,那么,在307处,将该地址与先前所定义的这些检测器进行比较。在本发明的一个实施例中,检测器被定义为具有等同于先前创建的超高速缓冲存储器线预取请求的地址。但是,如果305处的该超高速缓冲存储器线请求不是L1高速缓存不命中,那么,在306处,确定该高速缓存不命中是L2高速缓存不命中。如果该高速缓存不命中是L2高速缓存不命中,那么,如根据图5而解释的,该L2超高速缓冲存储器线请求(对应于该L2高速缓存不命中)被分配检测器。
在本发明的一个实施例中,可以由可构成HWP 120的一部分的匹配检测电路来发现该检测器分配。在其它实施例中,可以由单独电路(例如,由被耦合到输出队列125的监视器140)来执行该检测器分配。在本发明的一个实施例中,由包括地址、方向和窗口尺寸的参数来定义检测器。该输入队列中的该超高速缓冲存储器线请求的该地址可以在该检测器地址+/-该窗口尺寸的范围以内。该检测器的该方向可以是以下任何一个值零、+1或-1。零可以意味着该检测器还没有被分配方向。+1可以指出该检测器具有向前的方向;-1可以指出该检测器具有相反的方向。该检测器的该地址指出这下一个超高速缓冲存储器线预取请求的该地址,并且,该检测器的该方向被用来计算这些接连的预取请求。例如,具有100的地址并具有+1的方向的检测器暗示这下一个超高速缓冲存储器线预取请求将是100——后面是101。
图4A、4B展示了流程图,它表现根据本发明的一个实施例的关于高速缓存不命中的该检测器指派和该窗口尺寸的动态调整。图7展示了根据本发明的一个实施例的监视器。在本发明的一个实施例中,监视器700可以被耦合到图1中的线路121所指出的HWP 120。在本发明的其它实施例中,监视器700可以是被耦合到输出队列125的单独电路。参照图4A、4B和图7来解释该检测器指派。如图4A所展示的,在401处,(例如)由被耦合到输入队列115的控制器710来检测L1超高速缓冲存储器线请求。在405处,表示检测器的变量“D”被初始化为(例如)零。在415处,确定检测器“D”的该方向是否是零(即,指出还没有指派该检测器的该方向)。在本发明的一个实施例中,这些检测器被存储在缓冲器705A-D中。
每个检测器至少具有地址位、指出相对于该检测器地址(方向标志)的从那里预取数据的该方向的一个或多个位、检测器前面命中(HAD)计数器、检测器后面命中(HBD)计数器、以及最近最少使用的标志(LRU)标记。如果该检测器的该方向标志具有零的值,那么,在420处,(例如)由控制器710确定det ector”D”address≥cachelineaddress≥det ector”D”address-windowsize...[1]是否为真。特别是,控制器710确定检测器D的该地址是大于、还是等于该超高速缓冲存储器线地址;以及,该超高速缓冲存储器线地址是大于、还是等于检测器D的该地址减去该窗口尺寸。如果两者都是,那么,递增该HBD计数器,并更新该LRU标记。
在本发明的一个实施例中,检测器窗口尺寸730是确定预取数据的侵占性的全局变量。大的窗口尺寸指出侵占性预取,反之亦然。如果方程式[1]为真,那么,递增被称作为“HBD计数器”的计数器,并且,该LRU标记被加以设置——例如,具有指出该时间的值。在440处,(例如)由控制器710确定关于该检测器的该HBD计数器是否具有大于(例如)三的值。如果该HBD计数器大于三,那么,在445处,检测器的方向“D”被设置为-1。此外,在本发明的一个实施例中,在445处,该检测器的该地址被设置为该超高速缓冲存储器线地址(不命中地址)减去该窗口尺寸。在本发明的一个实施例中,如果在440处,该HBD计数器没有大于三的值,则该过程在450处结束。如果在420处,方程式[1]为假,那么,在425处,(例如)由控制器710确定det ector”D”address≤cachelineaddress≤detector”D”address+windowsize...[2]是否为真。
特别是,控制器710确定检测器D的该地址是小于、还是等于该超高速缓冲存储器线地址;以及,该超高速缓冲存储器线地址是小于、还是等于检测器D的该地址加上该窗口尺寸。如果条件[2]为真,那么,在452处,递增该HAD计数器,并更新该LRU标记。在452处递增该HAD计数器和关于检测器“D”的该LRU标记之后,在454处确定HAD计数器是否大于二。如果该HAD计数器大于二,那么,在456处,检测器“D”的该方向被设置为加一,并且,该检测器的该地址被设置为该不命中地址加上该窗口尺寸。在456处设置该检测器的该地址和方向之后,该过程在450处结束。如果在425处,条件[2]的该结果为假,那么,在430处,该计数器“D”递增一,并且,该过程被加以重复。
但是,如果在415处,该检测器的该方向被确定不等于零,那么,在458处,(例如)由控制器710确定检测器“D”的该方向是否等于一。特别是,具有1的方向的检测器意味着被预取的这下一个超高速缓冲存储器线地址具有比这个被指派的检测器的该地址更大的地址。因此,被预取的该数据是与该检测器地址相对应的该数据,而且是与这下一个超高速缓冲存储器线地址相对应的该数据。如果在458处,该检测器方向等于一,那么,在460处,(例如)由控制器710确定det ector”D”address≥cachelineaddress≥det ector”D”address-windowsize...[3]是否为真。特别是,控制器710确定检测器D的该地址是大于、还是等于该超高速缓冲存储器线地址;以及,该超高速缓冲存储器线地址是大于、还是等于检测器D的该地址减去该窗口尺寸。
在本发明的一个实施例中,一旦检测器被指派超高速缓冲存储器线地址,对应于这个被指派的检测器前面和后面的超高速缓冲存储器线的数据就被自动预取。如果该条件[3]为假,那么,在427处,该变量“D”递增一,并且,过程流动到410。在410处,(例如)由控制器710确定所有这些检测器都已被指派超高速缓冲存储器线地址。但是,如果条件[3]为真,那么,在464处,控制器710使检测器D排队,并获得对应于检测器D的数据、以及对应于其地址在检测器D的该地址右边的该邻近的超高速缓冲存储器线的数据(即,对应于这下一个最高的超高速缓冲存储器线请求地址)。接下来,在465处,该检测器地址被设置为等同于该检测器地址加上两倍的该检测器方向。检测器D的该方向递增2,以便随后的预取可获得对应于这接下来的两个超高速缓冲存储器线请求的数据。
如果在458处,检测器D的该方向不等于1,那么,在466处,确定det ector”D”address≤cachelineaddress≤det ector”D”address+windowsize...[4]是否为真。特别是,控制器710确定检测器D的该地址是小于、还是等于该超高速缓冲存储器线地址;以及,该超高速缓冲存储器线地址是小于、还是等于检测器D的该地址加上该窗口尺寸。如果条件[4]为真,则该过程流动到464。但是,如果条件[4]为假,则该过程流动到427。
在本发明的一个实施例中,该监视器根据FSB队列732中的超高速缓冲存储器线请求的数量来调整该窗口尺寸。该算法确保如果该窗口尺寸太大,那么,与该窗口尺寸太小相比,有可能触发更多的检测器。触发检测器意味着该检测器被指派超高速缓冲存储器线地址,并且被发送到输出队列125或该L2请求队列,以取出该对应的数据。如果FSB队列732处于被欠利用的状态,则增加该窗口尺寸;并且,如果FSB队列732具有太多条目(被过度利用),那么,减小该窗口尺寸。当减小该窗口尺寸时,触发较少的检测器。
在470处,(例如)由控制器710确定FSB队列732中的该条目数量是否小于最大FSB阈值727。在本发明的一个实施例中,最大FSB阈值727、最小FSB阈值728、最大检测器窗口尺寸726、最小检测器窗口尺寸725和检测器窗口尺寸730是被存储在监视器700中的变量。如果FSB队列732中的该条目数量小于最大FSB阈值727,那么,在472处,(例如)由控制器710确定检测器窗口尺寸730是否小于最大检测器窗口尺寸726。如果在472处,检测器窗口尺寸730小于最大检测器窗口尺寸726,那么,在474处,检测器窗口尺寸730递增一,并且,该过程在484处结束。
但是,如果FSB队列732中的该条目数量不小于最大FSB阈值727,那么,在476处,(例如)由控制器710确定FSB队列732中的该条目数量是否大于最小阈值728。如果FSB队列732中的该条目数量大于最小阈值728,那么,在478处,(例如)由控制器710确定检测器窗口尺寸730大于最小检测器窗口尺寸725。如果在478处,检测器窗口尺寸730大于最小检测器窗口尺寸725,那么,在480处,检测器窗口尺寸变量730被设置为等于该检测器窗口减去一。但是,如果在478处,检测器窗口尺寸430小于最小检测器窗口尺寸725,则该过程在484处结束。
这样,根据该FSB队列中的该条目数量来调整该窗口尺寸。如果FSB队列732具有很少的条目,则增加检测器窗口尺寸730。如果FSB队列732具有太多条目,则减小窗口尺寸730。
图5展示了流程图,用于根据本发明的一个实施例来分配关于L2高速缓存不命中的检测器。如图5所展示的,在505处,输入队列115检测新的L2超高速缓冲存储器线。在510处,指出该检测器数量的变量“D”由(例如)控制器710来初始化为零。在515处,(例如)由控制器710确定detector”D”address≤cachelineaddress≤det ector”D”address+windowsize...[5]是否为真。特别是,控制器710确定检测器D的该地址是小于、还是等于该超高速缓冲存储器线地址;以及,该超高速缓冲存储器线地址是小于、还是等于检测器D的该地址加上该窗口尺寸。如果条件[5]为真,则该过程在525处结束。如果[5]为假,那么,在520处,(例如)由控制器710确定det ector”D”address≥cachelineaddress≥det ector”D”address-windowsize...[6]是否为真。特别是,控制器710确定检测器D的该地址是大于、还是等于该超高速缓冲存储器线地址;以及,该超高速缓冲存储器线地址是大于、还是等于检测器D的该地址减去该窗口尺寸。如果条件[6]为真,则该过程在525处结束。但是,如果条件[6]为假,那么,(例如)由控制器710确定“D”是否小于检测器的该最大数量。如果D小于监视器700所指派的检测器的最大数量,那么,在540处,通过比较这些检测器的各个时间标记,(例如)由控制器710来识别该LRU检测器。一旦识别该LRU检测器,就在545处对该最近最少使用的检测器进行初始化。在一个实施例中,对该最近最少使用的检测器进行初始化意味着将该检测器地址设置为该不命中地址,并将该检测器的该方向设置为零。也意味着将该HBD计数器设置为零,将该HAD计数器设置为零,并更新该LRU检测器计数器。在对该LRU检测器进行初始化之后,该过程在550处结束。
如前所述,通过调整关于最大和最小检测器窗口尺寸以及关于该FSB队列中的最大和最小条目数量的各个参数,可以调整该过滤操作的侵占性。可以为各种操作模式而协调这些参数和关联的侵占性。例如,如果该处理器处于单一线程(ST)模式,则可以使用更具侵占性的参数集;而如果该处理器处于同时多线程模式(SMT),则可以使用侵占性较小的参数集。这些参数也可以为其他操作模式和/或操作条件而加以调整,并且,甚至可以被调整,以适应操作条件的组合(而不是单一的操作条件)。可以使用各种用于为这些参数编程的方法。在一个实施例中,一个或多个位被设置成指出该操作条件,并且,硬件将这些位的该状态转变成这些关联的参数。在另一个实施例中,这些参数被直接编程到寄存器中——从那里,该有关的电路可存取这些参数。也可以使用为这些有关的参数编程的其他技术。
这样,已揭示了一种方法和装置,用于过滤该输入队列中的超高速缓冲存储器线地址,并根据该FSB中的该条目数量来动态地调整该检测器窗口尺寸。已展示和描述了目前所认为的本发明的范例实施例,但精通该技术领域的人将会理解在不脱离本发明的真实范围的前提下,可以进行各种其他的修改,并可以替换相等物。此外,在不脱离这里所描述的该中心发明概念的前提下,可以进行许多修改,以便使特定情况适应本发明的教导。所以,本发明并不意在局限于所揭示的这些特定实施例,而是意在包括处于所附权利要求书的范围以内的所有实施例。
权利要求
1.一种装置,其特征在于包括多个地址缓冲器,用于接收和存储多个预取地址;以及,滤波器电路,它被耦合到这多个地址缓冲器,用于将被存储的这多个预取地址与被接收的预取地址进行比较,如果这个被接收的预取地址等同于被存储的这多个预取地址中的任何一个预取地址,则所述滤波器电路放弃这个被接收的预取地址。
2.权利要求1的装置,其特征在于其中,如果这个被接收的预取地址不等同于这些被存储的预取地址中的任何一个预取地址,则该滤波器电路将这个被接收的预取地址存储在这多个地址缓冲器之一中。
3.权利要求1的装置,其特征在于其中,这些预取地址包括高速缓存中的数据不命中的地址和高速缓存中的指令不命中的地址中的至少一个地址。
4.权利要求1的装置,其特征在于其中,这多个预取地址和这个被接收的预取地址是超高速缓冲存储器线地址。
5.权利要求1的装置,其特征在于其中,该滤波器电路被耦合到硬件预取引擎,所述硬件预取引擎预取这些预取地址所指向的信息。
6.权利要求1的装置,其特征在于其中,该滤波器电路被耦合到输入队列。
7.权利要求6的装置,其特征在于其中,该输入队列被耦合到硬件预取引擎。
8.权利要求7的装置,其特征在于其中,该硬件预取引擎被耦合到输出队列。
9.权利要求8的装置,其特征在于其中,该输出队列被耦合到L2请求队列。
10.权利要求5的装置,其特征在于其中,该硬件预取引擎从处理器高速缓存和外部存储器中的至少一项中预取数据和指令中的至少一项。
11.权利要求1的装置,其特征在于其中,该滤波器电路被耦合到处理器核心。
12.一种方法,其特征在于包括接收第一预取地址;存储该第一预取地址;接收第二预取地址;将这个被接收的第二预取地址与这个被存储的第一预取地址进行比较;以及,如果该第二预取地址等同于这个被存储的第一预取地址,则放弃这个被接收的第二预取地址。
13.权利要求12的方法,其特征在于其中,这些预取地址包括高速缓存中的数据不命中的地址和高速缓存中的指令不命中的地址中的至少一个地址。
14.权利要求12的方法,其特征在于进一步包括如果该第二高速缓存不命中地址等同于这个被存储的第一预取地址,则存储这个被接收的第二预取地址。
15.权利要求12的方法,其特征在于进一步包括将这些被存储的预取地址发送到硬件预取引擎,以预取这些被存储的预取地址所指向的信息。
16.权利要求12的方法,其特征在于这些预取地址是超高速缓冲存储器线地址。
17.一种计算机系统,其特征在于包括外部总线;被耦合到该外部总线的外部存储器;被耦合到高速缓冲存储器和该外部存储器的处理器核心;多个地址缓冲器,用于接收和存储多个预取地址;以及,滤波器电路,它被耦合到这多个地址缓冲器,用于将被存储的这多个预取地址与被接收的预取地址进行比较,如果这个被接收的预取地址与被存储的这多个预取地址中的任何一个预取地址相匹配,则所述滤波器电路放弃这个被接收的预取地址。
18.权利要求17的计算机系统,其特征在于其中,如果这个被接收的预取地址不与这些被存储的预取地址中的任何一个预取地址相匹配,则该滤波器电路将这个被接收的预取地址存储在这多个地址缓冲器之一中。
19.权利要求17的计算机系统,其特征在于其中,这些预取地址包括高速缓存中的数据不命中的地址和高速缓存中的程序指令不命中的地址中的至少一个地址。
20.权利要求17的计算机系统,其特征在于其中,这多个预取地址和这个被接收的预取地址是超高速缓冲存储器线地址。
21.权利要求17的计算机系统,其特征在于其中,该滤波器电路被耦合到硬件预取引擎,所述硬件预取引擎预取这些预取地址所指向的信息。
22.权利要求17的计算机系统,其特征在于其中,该滤波器电路被耦合到输入队列。
23.权利要求17的计算机系统,其特征在于其中,该输入队列被耦合到硬件预取引擎。
24.权利要求17的计算机系统,其特征在于其中,该硬件预取引擎被耦合到输出队列。
25.权利要求17的计算机系统,其特征在于其中,该输出队列被耦合到仲裁器,该仲裁器被耦合到高速缓冲存储器。
26.权利要求17的计算机系统,其特征在于其中,该预取引擎从该外部存储器中预取包括数据和程序指令的信息。
27.一种方法,其特征在于包括生成多个检测器,每个检测器与预取地址和检测器窗口尺寸变量相对应;将这多个检测器中的至少一个检测器发送到高速缓存-存储器控制器总线队列,以预取数据和指令中的至少一项;监控该高速缓存-存储器控制器总线队列中的这多个检测器中的该至少一个检测器的数量;以及,根据该高速缓存-存储器控制器总线队列中的这多个检测器中的该至少一个检测器的该数量,来调整该检测器窗口尺寸变量。
28.权利要求27的方法,其特征在于其中,该预取地址包括高速缓存中的数据不命中的地址和高速缓存中的指令不命中的地址中的至少一个地址。
29.权利要求27的方法,其特征在于其中,该预取地址是超高速缓冲存储器线地址。
30.权利要求27的方法,其特征在于其中,如果该高速缓存-存储器控制器总线队列中有少于预定的第一数量的检测器,则动态地增加该检测器窗口尺寸;如果该高速缓存-存储器控制器总线队列中有多于预定的第二数量的检测器,则动态地减少该检测器窗口尺寸。
31.权利要求30的方法,其特征在于其中,如果该检测器窗口尺寸小于最大检测器窗口尺寸变量,则动态地增加该检测器窗口尺寸。
32.权利要求30的方法,其特征在于其中,如果该检测器窗口尺寸大于最小检测器窗口尺寸变量,则动态地减少该检测器窗口尺寸。
33.一种装置,其特征在于包括多个检测器缓冲器,用于存储多个检测器;超高速缓冲存储器线请求缓冲器,它被耦合到这多个检测器缓冲器;以及,被耦合到这多个检测器缓冲器和该超高速缓冲存储器线请求缓冲器的控制器,所述控制器将检测器分配给超高速缓冲存储器线请求,并且动态地调整被发送到高速缓存-存储器控制器总线队列的该检测器数量。
34.权利要求33的装置,其特征在于其中,这些超高速缓冲存储器线请求包括高速缓存中的数据不命中的地址和高速缓存中的指令不命中的地址中的至少一个地址。
35.权利要求33的装置,其特征在于其中,如果该高速缓存-存储器控制器总线队列中的该检测器数量小于预定的第一数量,那么,该控制器将要监控该高速缓存-存储器控制器总线队列并增加被发送到该高速缓存-存储器控制器总线的该检测器数量;如果该高速缓存-存储器控制器总线队列中的该检测器数量大于预定的第二数量,那么,该控制器将要减少被发送到该高速缓存-存储器控制器总线队列的该检测器数量。
36.权利要求33的装置,其特征在于其中,该控制器将要监控检测器窗口尺寸变量,该检测器窗口尺寸变量对应于该高速缓存-存储器控制器总线队列中的该条目数量而加以动态的调整。
37.权利要求33的装置,其特征在于其中,该控制器被耦合到输出队列。
38.权利要求37的装置,其特征在于其中,该输出队列被耦合到该FSB队列。
39.权利要求33的装置,其特征在于其中,该控制器被耦合到硬件预取引擎。
40.一种计算机系统,其特征在于包括外部总线;被耦合到该外部总线的外部存储器;被耦合到高速缓冲存储器和该外部存储器的处理器核心,所述处理器包括用于存储多个检测器的多个检测器缓冲器;被耦合到这多个检测器缓冲器的超高速缓冲存储器线请求缓冲器;以及,被耦合到这多个检测器缓冲器和该超高速缓冲存储器线请求缓冲器的控制器,所述控制器将检测器分配给超高速缓冲存储器线请求,并且动态地调整被发送到高速缓存-存储器控制器总线队列的该检测器数量。
41.权利要求40的计算机系统,其特征在于其中,这些超高速缓冲存储器线请求包括高速缓存中的数据不命中的地址和高速缓存中的指令不命中的地址中的至少一个地址。
42.权利要求40的计算机系统,其特征在于其中,如果该高速缓存-存储器控制器总线队列中的该检测器数量小于预定的第一数量,那么,该控制器将要监控该高速缓存-存储器控制器总线队列并增加被发送到该高速缓存-存储器控制器总线队列的该检测器数量;如果该高速缓存-存储器控制器总线队列中的该检测器数量大于预定的第二数量,那么,该控制器将要减少被发送到该高速缓存-存储器控制器总线队列的该检测器数量。
43.权利要求40的计算机系统,其特征在于其中,该控制器将要监控检测器窗口尺寸变量,该检测器窗口尺寸变量对应于该高速缓存-存储器控制器总线队列中的该条目数量而加以动态的调整。
44.权利要求40的计算机系统,其特征在于其中,该控制器被耦合到输出队列。
45.权利要求40的计算机系统,其特征在于其中,该输出队列被耦合到该高速缓存-存储器控制器总线队列。
46.权利要求40的计算机系统,其特征在于其中,该控制器被耦合到硬件预取引擎。
47.权利要求40的计算机系统,其特征在于其中,该输出队列被耦合到存储器。
48.权利要求47的计算机系统,其特征在于其中,该存储器是动态随机存取(DRAM)存储器。
49.权利要求40的计算机系统,其特征在于其中,该检测器数量的该动态调整基于该处理器的操作模式。
50.权利要求49的计算机系统,其特征在于其中,该处理器的该操作模式是单一线程模式和同时多线程模式之一。
全文摘要
一种方法和装置,用于检测和过滤出预取输入队列中的冗余超高速缓冲存储器线地址,并且用于根据关于该高速缓存-存储器控制器总线的该队列中的该检测器条目数量来动态地调整该检测器窗口尺寸。检测器对应于可以表示各级高速缓冲存储器中的高速缓存不命中的超高速缓冲存储器线地址。
文档编号G06F9/00GK1729445SQ03821851
公开日2006年2月1日 申请日期2003年9月6日 优先权日2002年9月16日
发明者E·施普兰格尔, A·罗布拉 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1