CN101446923B - 一种响应于指令而清洗高速缓冲存储器线的装置和方法 - Google Patents
一种响应于指令而清洗高速缓冲存储器线的装置和方法 Download PDFInfo
- Publication number
- CN101446923B CN101446923B CN200810128069.7A CN200810128069A CN101446923B CN 101446923 B CN101446923 B CN 101446923B CN 200810128069 A CN200810128069 A CN 200810128069A CN 101446923 B CN101446923 B CN 101446923B
- Authority
- CN
- China
- Prior art keywords
- cache
- cache line
- memory
- instruction
- cache memory
- 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.)
- Expired - Lifetime
Links
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
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供了一种响应于指令而清洗高速缓冲存储器线的装置和方法,该装置包括:连续域内的第一内核与第一高速缓冲存储器;所述连续域内的第二内核与第二高速缓冲存储器;以及逻辑,其用于接收由所述指令的操作码所指明的存储器地址,所述逻辑响应于所述指令,清洗与存储在所述第一高速缓冲存储器中的所述存储器地址相关的第一高速缓冲存储器线,并且,所述逻辑响应于所述指令,清洗与存储在所述第二高速缓冲存储器中的所述存储器地址相关的第二高速缓冲存储器线。还提供了对应上述装置的一种响应于指令而清洗高速缓冲存储器线的方法。
Description
本申请为分案申请,原申请日为2000年12月28日,申请号为00818070.9,发明名称为:高速缓冲存储器线清洗指令和执行该指令的方法,装置及系统。
技术领域
本发明通常涉及一种计算机结构,并且具体涉及一种响应于指令而清洗高速缓冲存储器线的装置和方法。
背景技术
高速缓冲存储器装置是一种小而快速的存储器,可用它存储来自更大的、较慢的存储器中最常被的数据(或“字”)。
动态随机存取存储器(DRAM)以较低的成本提供大容量的存储空间。不幸的是,动态随机存取存储器的存取相对于现代微处理器而言太慢。提供划算的解决方案的高速缓冲存储器提供一种静态随机存取存储器(SRAM)高速缓冲存储器,或者高速缓冲存储器被物理安装在处理器上的高速缓冲存储器。即使高速缓冲存储器的存储容量相对较小,它仍能实现对其中储存的数据的高速存取。
高速缓冲存储器的运行原理如下文所述。一条指令或数据单元被第一次选定时,必须从低速存储器中读取它。指令或数据然后被储存在高速缓冲存储器中。随后对相同指令或数据的存取是通过更快的高速缓冲存储器完成的,由此便减少了存取时间并提高了整体的系统性能。但是,由于高速缓冲存储器的存储容量有限,并且通常比系统存储器的存储容量小很多,因此高速缓冲存储器常常被充满,当新的指令或数据被存取时,高速缓冲存储器的一些内容必须改变。
高速缓冲存储器被各种方式管理,使得它储存的指令或数据是当时最有可能需要的。当对高速缓冲存储器进行存取,并且其中包含所需要的数据时,高速缓冲存储器“命中”便发生。否则,如果高速缓冲存储器没有包含所需的数据,高速缓冲存储器“遗漏”。因此,通常总是试图对高速缓冲存储器的内容进行管理以使得高速缓冲存储器的命中-遗漏比最大。
利用当前的系统,清洗高速缓冲存储器中的某条指定的存储器地址需要了解高速缓冲存储器的置换算法。
一个高速缓冲存储器可以周期性地或者当满足某些预定条件时被整体清洗。而且,单根的高速缓冲存储器线可以作为置换算法的一部分被清洗。在包含高速缓冲存储器的系统中,高速缓冲存储器线是在高速缓冲存储器和主存储器之间交换的完整的数据部分。在所有情况下,废数据都被写入主存储器。废数据的定义为:高速缓冲存储器中或高速缓冲存储器线中要清洗的、尚未写入主存储器的数据。确定含有废数据的高速缓冲存储器线的数据块的页面重写标志位随后被清除。然后,经过清洗的高速缓冲存储器或高速缓冲存储器线就能储存新的数据块。
如果计划清洗高速缓冲存储器或如果满足高速缓冲存储器清洗的预定条件,高速缓冲存储器便被清洗。即,高速缓冲存储器中所有的废数据都被写入了主存储器。
例如,对于Intel家族中的P6微处理器(如PentiumII,Celeron),对于给定的高速缓冲存储器设置和方法,有一套微操作用来在指定的高速缓冲存储器水平清洗高速缓冲存储器线;但是对于给定的存储器地址,却没有这样的微操作来清洗高速缓冲存储器线。
要求高速数据存取的系统在数据无效时会连续地清洗数据。对于需要处理器和系统存储器之间的高速数据流的系统,如3-D和视频表演的高端图形象素处理时的情况,这种情况变得更加突出。当前系统存在的问题就是:需要高速缓冲存储器和系统存储器之间的高带宽来容纳写联合存储器和回写存储器的拷贝。
这样,所需要的就是一种允许处理器清洗与来自一致域中所有高速缓冲存储器的线性存储器地址相关的高速缓冲存储器线的方法和系统。
发明内容
本发明提供一种响应于指令而清洗高速缓冲存储器线的装置,该装置包括:
一致域内的第一高速缓冲存储器;
所述一致域内的第二高速缓冲存储器;以及
高速缓冲存储器控制器,其用于接收由所述指令的操作数所指明的存储器地址,所述高速缓冲存储器控制器响应于所述指令,清洗与存储在所述第一高速缓冲存储器中的所述存储器地址相关的第一高速缓冲存储器线,其中发现所述第一高速缓冲存储器线处于专用状态和共享状态两者中的其中一种状态,以及
总线控制器,在总线上发出一条总线无效事务。
本发明所述的装置,其中,所述存储器地址包括线性存储器地址。
本发明所述的装置,其中,当所述状态是从所述专用状态和所述共享状态中选择出时,所述高速缓冲存储器控制器能够操作,以等同于使所述第一高速缓冲存储器线无效的方式,来清洗所述第一高速缓冲存储器线。
本发明所述的装置,其中,所述高速缓冲存储器控制器能够操作用于将所述指令分配给写联合缓冲器。
本发明所述的装置,其中,所述总线无效事务清洗所述一致域中的任何其它高速缓冲存储器中的相同的高速缓冲存储器线的命中。
本发明所述的装置,其中,所述装置能够操作用于执行微操作,该微操作用于实现所述指令而不按照其它高速缓冲存储器线清洗宏指令、装入及储存的顺序而无序地进行。
本发明所述的装置,其中,当发现所述第一高速缓冲存储器线处于专用状态和共享状态两者中的其中一种状态时,清洗所述第一高速缓冲存储器线等同于使所述第一高速缓冲存储器线无效。
本发明所述的装置,其中,所述高速缓冲存储器控制器能够操作用于确定在所述一致域中的一个高速缓冲存储器中是否命中经过修改的高速缓冲存储器线HITM,且如果所述HITM出现,则对主存储器进行回写。
本发明所述的装置,其中,所述高速缓冲存储器控制器包括硬件,并且其中,所述第一高速缓冲存储器和所述第二高速缓冲存储器的每一条高速缓冲存储器线具有由两个MESI(修改、专用、共享、无效)位管理的四种状态中的一种。
本发明还提供一种响应于指令而清洗高速缓冲存储器线的方法,该方法包括以下步骤:
接收所述指令,所述指令具有指明存储器地址的操作数;
清洗与存储在一致域内的第一高速缓冲存储器中的所述存储器地址相关的第一高速缓冲存储器线,其中如果发现所述第一高速缓冲存储器线处于专用状态和共享状态两者中的其中一种状态,所述清洗则等同于使所述第一高速缓冲存储器线无效的方式;以及
在总线上发出总线无效事务。
本发明所述的方法,其中,该方法还包括将所述指令分配给写联合缓冲器。
本发明所述的方法,其中,所述总线无效事务清洗所述一致域中的任何其它高速缓冲存储器中的相同的高速缓冲存储器线的命中。
本发明所述的方法,其中,该方法还包括执行微操作,该微操作用于实现所述指令而不按照其它高速缓冲存储器线清洗宏指令、装入及储存的顺序而无序地进行。
高速缓冲存储器线清洗(CLFLUSH)微结构执行过程和系统允许处理器清洗与来自一致域中所有高速缓冲存储器的线性存储器地址相关的高速缓冲存储器线。该处理器接收一个存储器地址。一旦该存储器地址被接收到,便确定该存储器地址是否储存在一个高速缓冲存储器中。如果该存储器地址是储存在高速缓冲存储器中,则该存储器地址被从高速缓冲存储器中清洗掉。
附图说明
将结合附图对本文所介绍的发明做详细的说明,其中附图标记全文对应,并且:
图1描述了微处理器的结构;以及
图2用流程图描述了高速缓冲存储器线清洗过程。
具体实施方式
根据定义,一条高速缓冲存储器线要么是完全有效,要么是完全无效。一条高速缓冲存储器线绝不会是部分有效的。例如,当处理器只想读一个字节时,一条可适用的高速缓冲存储器线的所有字节都必须被储存在高速缓冲存储器中;否则,高速缓冲存储器“遗漏”可能会发生。高速缓冲存储器线形成了实际的高速缓冲存储器。高速缓冲存储器目录只用于高速缓冲存储器管理。高速缓冲存储器线通常包含的数据比它在单个总线循环中可能要转换的数据更多。为此,绝大部分高速缓冲存储器控制器执行突发模式,其中预置的地址序列使得数据能够通过总线更快地被传送。这被用于高速缓冲存储器线填满,或被用于回写高速缓冲存储器线,因为这些高速缓冲存储器线代表一个连续且对齐的地址区域。
清洗高速缓冲存储器线的技术可以与线性存储器地址相关联。在执行时,该技术清洗与来自一致域中所有高速缓冲存储器的操作数相关的高速缓冲存储器线。例如,在多处理器环境下,根据处理器状态,指定的高速缓冲存储器线被从系统的所有微处理器中的所有高速缓冲存储器等级水平(即一致域)中清洗。MESI(修改,专用,共享,无效)协议,一种写无效协议,赋予每条高速缓冲存储器线四种状态中的一种,这些状态由两个MESI位来管理。这四种状态还标识了一条高速缓冲存储器线可能的四种状态。如果发现处理器处于“专用”或“共享”状态,清洗等同于被无效掉的高速缓冲存储器线。当发现处理器处于“修改”状态时,另一个实例也成立。如果高速缓冲存储器控制器执行回写方案并且高速缓冲存储器“命中”,只从处理器把数据写入它的高速缓冲存储器,这条高速缓冲存储器线的内容必须被传送给主存储器,而这条高速缓冲存储器线变得无效。
当与其他的存储器宏指令进行比较时,高速缓冲存储器线清洗(CLFLUSH)方法不是强排序,并不考虑与高速缓冲存储器线清洗宏指令相关的存储器的类型。相反,处理器的存储器子系统中的行为是弱排序。其它的宏指令可以用来在CLFLUSH之前或之后,立即对存储器存取的装入、储存、防护和其它的串行指令进行强排序并提供保证。
一种名为“clflush_micro_op”的微操作被用来执行CLFLUSH宏指令。
参看图1,结合数据的装入和储存的流程,展示了微处理器的存储器和总线子系统。在图1中,假设在微处理器中有两个高速缓冲存储器水平:一个芯片上(“L1”)的高速缓冲存储器,其水平为离处理器最近的高速缓冲存储器水平;以及一个第二级(“L2”)高速缓冲存储器,其水平为离处理器最远的高速缓冲存储器水平。一个指令获取单元102为指令解码单元104取得宏指令。解码单元104将宏指令解码为微指令流,该指令流被发送给保留站106、记录缓冲器和寄存器堆108。当一条指令进入存储器子系统时,它被分配给装入缓冲区112或存储缓冲区114,分别取决于它是读存储器宏指令还是写存储器宏指令。在这些缓冲区所在的存储器子系统的单元内,指令经过存储器排序单元110的存储器排序检查。如果不存在存储器相关性,经过物理地址翻译,该指令被分配给存储器子系统中的下一个单元。在L1高速缓冲存储器控制器120,确定是否命中或遗漏L1高速缓冲存储器。如果遗漏,该指令被分配给一组缓冲区,从这套缓冲区,该指令又被分配给微处理器的总线子系统140。如果可高速缓冲存储的装入遗漏,该指令被发送给读缓冲器122,或者如果可高速缓冲存储的储存遗漏,该指令则被发送给写缓冲器130。写缓冲器130可以是弱排序的写联合缓冲器132或非写联合缓冲器134。在总线控制器单元140中,读或写微操作被分配给一个无序队列144。如果微操作是可高速缓冲存储的,则检查L2高速缓冲存储器146命中/遗漏。如果遗漏,指令通过一个有序队列142被发送给前侧总线150,以便从主存储器中获得或刷新所需的数据。
图2也对经过处理器存储器子系统的“clflush_micro_op”的微操作流程进行了说明。开始时,指令获取单元102获得高速缓冲存储器线清洗指令,如方框202所示。在方框204中,高速缓冲存储器线清洗指令被指令解码单元104解码为“clflush_micro_op”微操作。该微操作随后被发送给一个保留站106、一个记录缓冲器和寄存器堆108,如方框206所示。“clflush_micro_op”微操作在一个装入端口被分配给存储器子系统,如方框208所示。在存储器排序单元110内的装入缓冲器112内为其分配一个入口。为了在存储器排序单元110内将存取计算分离,为避免高速缓冲存储器线分离,微操作的数据大小被屏蔽成一个字节;但是,在执行时,整个高速缓冲存储器线将被清洗。
存储器排序单元110内的“clflush_micro_op”行为是虚拟的。简而言之,这意味着“clflush_micro_op”的执行可以不按照其它的CLFLUSH宏指令、装入和储存的顺序而无序地进行。除非存储器存取防护(简称为MFENCE)指令被适当地使用,(在CLFLUSH宏指令之前或之后即刻),只要没有地址相关性,“clflush_micro_op”的执行相对于其它的存储器装入和储存是不被保证为有序的。通过存储器子系统的CLFLUSH行为为弱排序。下表列出了CLFLUSH的排序条件。表1比较了后期存储器存取命令与早期CLFLUSH的排序条件的影响。表2则列出了与表1相反的情况,比较了早期存储器存取命令与后期CLFLUSH指令的排序条件的影响。列出的存储器存取类型为:不可高速缓冲存储(UC)存储器存取、回写(WB)存储器存取以及不可高速缓冲存储虚拟写联合(USWC)存储器存取。
表1:关于从前CLFLUSH的指令存储器排序
表2 关于后期CLFLUSH的指令存储器排序
“clflush_micro_op”微操作被从存储器排序单元110发送给L1高速缓冲存储器控制器单元120,如方框210所示。“clflush_micro_op”微操作在装入端口上被发送;但是,如果该操作是一个储存操作,则在写联合缓存区132内被发送。从L1高速缓冲存储器控制器单元之后,“clflush_micro_op”被从装入线转到储存线。
决定方框212确定是否没有可用的写联合缓冲器132。如果没有可用的写联合缓存区,流程返回方框210。否则,流程继续进行到方框214。不论存储器类型以及它是否命中或遗漏了L1高速缓冲存储器,写联合缓冲器132被分配给引入的“clflush_micro_op”,如方框214所示。L1高速缓冲存储器控制器单元内的每个写联合缓冲器132被增加了一个控制字段来确定需要把哪个自查询属性发送给总线控制器140。这个名为”clflush_miss”的控制位是为遗漏了L1高速缓冲存储器的“clflush_micro_op”专门设定的。
在进入微处理器的存储器子系统时,使高速缓冲存储器线存取“clflush_micro_op”的地址的一些位被清零,如方框216所示。在微处理器的Pentrium pro家族中,这些位应该是地址中的较低的5位(地址[4:0])。在执行清洗命令时,这些工作在L1和L2高速缓冲存储器控制器单元120内完成。清零帮助确定高速缓冲存储器线命中或遗漏。由于只有标记匹配能确定命中还是遗漏,不需要能进行比较的字节。注意,根据定义,没有可能出现部分命中。命中或遗漏总是全线命中或遗漏。清零地址位[4:0]还为存储器排序单元110提供了另外一种机理以屏蔽线分离存取。在分离存取中,数据的大小被屏蔽为1个字节。
L1高速缓冲存储器控制器单元120中的每个写联合缓冲器132增加的另一个控制位被用来区分分配给“clflush_micro_op”的写联合缓冲器132和分配给写联合储存的另一个写联合缓冲器,如方框218所示。这个名为”clflush_op”的控制位是为那些被分配给“clflush_micro_op”的写联合缓冲器专门设定的。该控制位被用来选择从L1高速缓冲存储器控制器120发送给总线控制器140的请求类型和清洗属性。
如果L1高速缓冲存储器命中,如方框222所确定的那样,一旦从L1高速缓冲存储器控制器单元120中发送出来,“清洗L1”和“清洗L2”属性被发送给总线控制器140,如方框224和226所示。总线控制器140既包含L2高速缓冲存储器146也包含外部总线控制器单元。
另外,如果L1高速缓冲存储器遗漏,如方框222所确定的那样,“clflush_miss”控制位被设定,并且只发送“清洗L2”属性,如方框228和232所示。这有助于通过省略内部对L1高速缓冲存储器的自查询而提高性能。
一旦从存储器排序单元110中被发送出来,如果没有可用的写联合缓冲器132,“clflush_micro_op”微操作被L1高速缓冲存储器控制器单元120阻断,如方框212所示。此时,它还清除写联合缓冲器132,如写联合循环分配指针所指的。这就保证不会出现由于缺乏空闲的写联合缓冲器132而导致死锁情况。如果被阻断,一旦阻断情况被消除,“clflush_micro_op”微操作被重新发送。可能引起“clflush_micro_op”指令发送的例子就是先前分配的写联合缓冲器132被完全清除。
一旦“clflush_micro_op”微操作被分配给L1高速缓冲存储器控制器120中的写联合缓冲器132,“clflush_micro_op”微操作即被存储器子系统收回。这就允许流水线输送:在完成“clflush_micro_op”微操作之前即可执行的后续指令。流水线输送提高了系统的整体性能。
有两种方法可以清除为“clflush_micro_op”微操作服务的写联合缓冲器。
通过与目前适用于Intel P6微处理器家族中的写联合缓冲器132的当前清除条件相同的条件来清除为“clflush_micro_op”微操作服务的写联合缓冲器132。而且,防护宏指令也清除为“clflush_micro_op”微操作服务的写联合缓冲器。
另外,一些实施例专门清除“clflush_micro_op”。这样做是要避免当程序员不想加强排序而没有使用防护指令时,使为“clflush_micro_op”微操作长时间服务的写联合缓冲器陷入进退两难(不知所措)的处境。名为“clflush_evict”的控制位与每个为“clflush_micro_op”微操作服务的写联合缓冲器相关。当写联合缓冲器被分配给“clflush_micro_op”时,该控制位被设定。一旦“clflush_evict”控制位被设定,相应的写联合缓冲器被标记为清除,而控制位被重新设定,如方框230所示。这种清除条件专门适用于为“clflush_micro_op”微操作服务的写联合缓冲器132。由于不允许“clflush_micro_op”微操作太长时间占据写联合缓冲器132的资源,并且由此将这些资源释放用于其它的写联合操作,用CLFLUSH提高了程序的性能。
表3 用于CLFLUSH的存储器到总线的处理程序
注意,如果“clflush_miss”=“clflush_op”=’0’,请求类型为微处理器的P6家族中已有的处理程序中的任何一种(但不是CLFLUSH),并且清洗属性将由此而被设定/清除。
表4列出了三个写联合缓冲器132控制位被设定和重新设定的条件。“clflush_evict”控制位只能在“clflush_micro_op”控制位被设定以后才能设定。“clflush_micro_op”控制位将会设定在虚拟的写联合缓冲器132配置上,而“clflush_evict”则为“clflush_op”专门设定在真实的写联合缓冲器132配置上。如果“clflush_micro_op”遗漏了L1高速缓冲存储器,“clflush_miss”控制位也设定在虚拟的写联合缓存区132配置上。而且,一旦写联合缓冲器132虚拟配置为除“clflush_micro_op”之外的任何一条指令服务,“clflush_miss”和“clflush_op”的控制位都被清除。从功能上看,这与一旦释放为“clflush_micro_op”服务的写联合缓冲器就清除这样的控制位相似。在处理器的运行中,同样的写缓冲器130被写联合微操作和非写联合微操作共享。根据任何写缓冲器130的虚拟配置,而不只是根据写联合缓冲器132的虚拟配置,“clflush_miss”和“clflush_op”位被清除。这种行为确保绝不会为不给“clflush_micro_op”服务的写缓冲器130设定这三种控制位。在处理器的运行中,其中所有的L1高速缓冲存储器控制器缓冲器被读和写共享,象P6微处理器家族中那样,只有在缓冲器配置为存储服务时才清除“clflush_miss”和“clflush_op”控制位,如方框234所示。被分配来为装入服务的缓冲器忽略这三种新控制位的值。
表4 设定/清除L1高速缓冲存储器控制器中写联合缓冲器的新控制位的条件
注意所有的三种新WC缓冲器控制位也都按照“重新设定”的顺序被清除。
实施例还可以利用总线控制器140来实施。当为“clflush_micro_op”服务的写联合缓冲器132被标记为清除时,它被发送给总线控制器140,如方框236所示。所发送的请求和请求一次全线可高速缓冲存储的写联合处理程序一样,只是子查询属性不同。查询是用来确认某个具体的地址出现在适用的高速缓冲存储器中。对于“clflush_micro_op”清除,总线控制器140根据“清洗L1”和“清洗L2”请求属性自查询L1和L2高速缓冲存储器,如方框150所示。而且,总线控制器140在外部总线上发出一条“总线读无效线”,如方框236所示。例如,如果L1高速缓冲存储器控制器单元120确定L1高速缓冲存储器遗漏,则不发出“清洗L1”消息。“总线读无效线”处理程序清洗命中一致域中任何其它的高速缓冲存储器中的相同的线。在外部总线处理程序上,所有的字节赋值被重新给定,把该数据阶段从核心屏蔽。决定框238和252确定是否在一致域中的另一个高速缓冲存储器(即不是提出请求的微处理器中的L1或L2高速缓冲存储器)中是否命中经过修改的高速缓冲存储器线(HITM)。如果HITM出现,被命中的高速缓冲存储器对主存储器进行回写,并把数据返回提出请求的微处理器,如方框244和254所示。L1高速缓冲存储器控制器单元120中的写联合缓冲器132保持被分配,直到来自一致域中其它高速缓冲存储器的查询阶段和可能的数据回传完成,例如,外部总线上的HITM。作为查询过程或调查循环的结果,回到写联合缓冲器132的数据被忽略,如方框246和248所示。
然后所有的清洗完成,并且写联合缓冲器132也被重新分配,如方框260所示。
下面的表5列出了外部总线控制器140是如何处理所有的写联合清除的。来自L1高速缓冲存储器,到达总线控制器140的“clflush_micro_op”清除请求,如CLFLUSH宏指令,可能在与同样的请求全线可高速缓冲存储写联合清除的信号上超载;但是,自查询属性不同。
表5 写联合清除的外部总线控制器处理程序
注意:USWC储存并非微处理器的P6家族的别名,因此,它们不被自查询。
为了可测试以及调试,可以增加一个非用户的可视模式位,以赋给/解除CLFLUSH宏指令。如果被解除,L1高速缓冲存储器控制器单元120把引入的“clflush_micro_op”微操作当作无操作操作码(NOP)来处理,而且它绝不会分配一个写联合缓冲器132。这种NOP行为可以在非高速缓冲存储数据预取上实现。
提供前面对本实施例的描述是为了使本领域内的任何技术人员能够制作或使用该系统和方法。本领域内的技术人员都了解,可以用硬件,固件,或在计算机可读的介质上编码的指令来实现上文所述的实施例。对于本领域内的技术人员而言,对这些实施例做不同的修改都是很显然的,并且此处所限定的普通原理在不使用发明性的才能条件下也能应用于其它实施例。因此,本发明并非仅限于本文所描述的实施例,它包含与本文所公开的原理和创新点相一致的最广泛的范围。
Claims (13)
1.一种响应于指令而清洗高速缓冲存储器线的装置,其特征在于,该装置包括:
一致域内的第一高速缓冲存储器;
所述一致域内的第二高速缓冲存储器;以及
高速缓冲存储器控制器,其用于接收由所述指令的操作数所指明的存储器地址,所述高速缓冲存储器控制器响应于所述指令,清洗与存储在所述第一高速缓冲存储器中的所述存储器地址相关的第一高速缓冲存储器线,其中发现所述第一高速缓冲存储器线处于专用状态和共享状态两者中的其中一种状态,以及
总线控制器,在总线上发出一条总线无效事务。
2.根据权利要求1所述的装置,其特征在于,所述存储器地址包括线性存储器地址。
3.根据权利要求1所述的装置,其特征在于,当所述状态是从所述专用状态和所述共享状态中选择出时,所述高速缓冲存储器控制器能够操作,以等同于使所述第一高速缓冲存储器线无效的方式,来清洗所述第一高速缓冲存储器线。
4.根据权利要求1所述的装置,其特征在于,所述高速缓冲存储器控制器能够操作用于将所述指令分配给写联合缓冲器。
5.根据权利要求1所述的装置,其特征在于,所述总线无效事务清洗所述一致域中的任何其它高速缓冲存储器中的相同的高速缓冲存储器线的命中。
6.根据权利要求1所述的装置,其特征在于,所述装置能够操作用于执行微操作,该微操作用于实现所述指令而不按照其它高速缓冲存储器线清洗宏指令、装入及储存的顺序而无序地进行。
7.根据权利要求1所述的装置,其特征在于,当发现所述第一高速缓冲存储器线处于专用状态和共享状态两者中的其中一种状态时,清洗所述第一高速缓冲存储器线等同于使所述第一高速缓冲存储器线无效。
8.根据权利要求1所述的装置,其特征在于,所述高速缓冲存储器控制器能够操作用于确定在所述一致域中的一个高速缓冲存储器中是否命中经过修改的高速缓冲存储器线HITM,且如果所述HITM出现,则对主存储器进行回写。
9.根据权利要求1所述的装置,其特征在于,所述高速缓冲存储器控制器包括硬件,并且其中,所述第一高速缓冲存储器和所述第二高速缓冲存储器的每一条高速缓冲存储器线具有由两个MESI(修改、专用、共享、无效)位管理的四种状态中的一种。
10.一种响应于指令而清洗高速缓冲存储器线的方法,其特征在于,该方法包括以下步骤:
接收所述指令,所述指令具有指明存储器地址的操作数;
清洗与存储在一致域内的第一高速缓冲存储器中的所述存储器地址相关的第一高速缓冲存储器线,其中如果发现所述第一高速缓冲存储器线处于专用状态和共享状态两者中的其中一种状态,所述清洗则等同于使所述第一高速缓冲存储器线无效的方式;以及
在总线上发出总线无效事务。
11.根据权利要求10所述的方法,其特征在于,该方法还包括将所述指令分配给写联合缓冲器。
12.根据权利要求10所述的方法,其特征在于,所述总线无效事务清洗所述一致域中的任何其它高速缓冲存储器中的相同的高速缓冲存储器线的命中。
13.根据权利要求10所述的方法,其特征在于,该方法还包括执行微操作,该微操作用于实现所述指令而不按照其它高速缓冲存储器线清洗宏指令、装入及储存的顺序而无序地进行。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/475,759 US6546462B1 (en) | 1999-12-30 | 1999-12-30 | CLFLUSH micro-architectural implementation method and system |
US09/475,759 | 1999-12-30 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB008180709A Division CN100416515C (zh) | 1999-12-30 | 2000-12-28 | 高速缓冲存储器线清洗指令和执行该指令的方法,装置以及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101446923A CN101446923A (zh) | 2009-06-03 |
CN101446923B true CN101446923B (zh) | 2015-06-24 |
Family
ID=23889009
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810128069.7A Expired - Lifetime CN101446923B (zh) | 1999-12-30 | 2000-12-28 | 一种响应于指令而清洗高速缓冲存储器线的装置和方法 |
CNB008180709A Expired - Lifetime CN100416515C (zh) | 1999-12-30 | 2000-12-28 | 高速缓冲存储器线清洗指令和执行该指令的方法,装置以及系统 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB008180709A Expired - Lifetime CN100416515C (zh) | 1999-12-30 | 2000-12-28 | 高速缓冲存储器线清洗指令和执行该指令的方法,装置以及系统 |
Country Status (9)
Country | Link |
---|---|
US (1) | US6546462B1 (zh) |
CN (2) | CN101446923B (zh) |
AU (1) | AU5789201A (zh) |
DE (1) | DE10085373B4 (zh) |
GB (1) | GB2374962B (zh) |
HK (2) | HK1049217A1 (zh) |
TW (1) | TW508575B (zh) |
WO (1) | WO2001050274A1 (zh) |
ZA (1) | ZA200205198B (zh) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6678810B1 (en) * | 1999-12-30 | 2004-01-13 | Intel Corporation | MFENCE and LFENCE micro-architectural implementation method and system |
DE10243446B4 (de) * | 2002-09-19 | 2005-12-15 | Celanese Chemicals Europe Gmbh | Verfahren zur Herstellung von Aldehyden |
US6976128B1 (en) * | 2002-09-26 | 2005-12-13 | Unisys Corporation | Cache flush system and method |
US6973541B1 (en) * | 2002-09-26 | 2005-12-06 | Unisys Corporation | System and method for initializing memory within a data processing system |
US7107405B2 (en) * | 2003-05-30 | 2006-09-12 | Intel Corporation | Writing cached data to system management memory |
US7143246B2 (en) * | 2004-01-16 | 2006-11-28 | International Business Machines Corporation | Method for supporting improved burst transfers on a coherent bus |
US7321954B2 (en) * | 2004-08-11 | 2008-01-22 | International Business Machines Corporation | Method for software controllable dynamically lockable cache line replacement system |
US20060090034A1 (en) * | 2004-10-22 | 2006-04-27 | Fujitsu Limited | System and method for providing a way memoization in a processing environment |
JP4819369B2 (ja) * | 2005-02-15 | 2011-11-24 | 株式会社日立製作所 | ストレージシステム |
JP2007193866A (ja) * | 2006-01-17 | 2007-08-02 | Toshiba Corp | 情報記録装置及びその制御方法 |
US7882325B2 (en) * | 2007-12-21 | 2011-02-01 | Intel Corporation | Method and apparatus for a double width load using a single width load port |
US8127085B2 (en) * | 2008-12-02 | 2012-02-28 | Intel Corporation | Method and apparatus for pipeline inclusion and instruction restarts in a micro-op cache of a processor |
US8214598B2 (en) * | 2009-12-22 | 2012-07-03 | Intel Corporation | System, method, and apparatus for a cache flush of a range of pages and TLB invalidation of a range of entries |
US8352685B2 (en) | 2010-08-20 | 2013-01-08 | Apple Inc. | Combining write buffer with dynamically adjustable flush metrics |
US8543766B2 (en) * | 2011-06-10 | 2013-09-24 | Freescale Semiconductor, Inc. | Writing data to system memory in a data processing system in which cache line states are tracked |
WO2013095475A1 (en) * | 2011-12-21 | 2013-06-27 | Intel Corporation | Apparatus and method for memory-hierarchy aware producer-consumer instruction |
US10387331B2 (en) * | 2012-06-05 | 2019-08-20 | Vmware, Inc. | Process for maintaining data write ordering through a cache |
US9754648B2 (en) | 2012-10-26 | 2017-09-05 | Micron Technology, Inc. | Apparatuses and methods for memory operations having variable latencies |
US9734097B2 (en) | 2013-03-15 | 2017-08-15 | Micron Technology, Inc. | Apparatuses and methods for variable latency memory operations |
US9563565B2 (en) | 2013-08-14 | 2017-02-07 | Micron Technology, Inc. | Apparatuses and methods for providing data from a buffer |
US9727493B2 (en) | 2013-08-14 | 2017-08-08 | Micron Technology, Inc. | Apparatuses and methods for providing data to a configurable storage area |
CN104932989B (zh) * | 2014-03-21 | 2020-05-19 | 三星电子株式会社 | 数据到高速缓冲层次低延迟层级中的机会性高速缓冲注入 |
US10216640B2 (en) | 2014-03-21 | 2019-02-26 | Samsung Electronics Co., Ltd. | Opportunistic cache injection of data into lower latency levels of the cache hierarchy |
US20150317158A1 (en) * | 2014-04-03 | 2015-11-05 | Applied Micro Circuits Corporation | Implementation of load acquire/store release instructions using load/store operation with dmb operation |
US10489158B2 (en) | 2014-09-26 | 2019-11-26 | Intel Corporation | Processors, methods, systems, and instructions to selectively fence only persistent storage of given data relative to subsequent stores |
JP6489840B2 (ja) * | 2015-01-20 | 2019-03-27 | エイブリック株式会社 | ホール素子 |
US9971686B2 (en) * | 2015-02-23 | 2018-05-15 | Intel Corporation | Vector cache line write back processors, methods, systems, and instructions |
US11556477B2 (en) * | 2018-06-15 | 2023-01-17 | Arteris, Inc. | System and method for configurable cache IP with flushable address range |
US20190042479A1 (en) * | 2018-06-29 | 2019-02-07 | Intel Corporation | Heuristic and machine-learning based methods to prevent fine-grained cache side-channel attacks |
US10691594B2 (en) | 2018-06-29 | 2020-06-23 | Intel Corporation | Selective execution of cache line flush operations |
US10802830B2 (en) * | 2019-03-05 | 2020-10-13 | International Business Machines Corporation | Imprecise register dependency tracking |
US11416397B2 (en) * | 2019-10-14 | 2022-08-16 | Intel Corporation | Global persistent flush |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4426682A (en) * | 1981-05-22 | 1984-01-17 | Harris Corporation | Fast cache flush mechanism |
US4755930A (en) * | 1985-06-27 | 1988-07-05 | Encore Computer Corporation | Hierarchical cache memory system and method |
US4713755A (en) * | 1985-06-28 | 1987-12-15 | Hewlett-Packard Company | Cache memory consistency control with explicit software instructions |
CH672816A5 (zh) * | 1986-10-03 | 1989-12-29 | Pantex Stahl Ag | |
DE3740834A1 (de) * | 1987-01-22 | 1988-08-04 | Nat Semiconductor Corp | Aufrechterhaltung der kohaerenz zwischen einem mikroprozessorenintegrierten cache-speicher und einem externen speicher |
US5214770A (en) * | 1988-04-01 | 1993-05-25 | Digital Equipment Corporation | System for flushing instruction-cache only when instruction-cache address and data-cache address are matched and the execution of a return-from-exception-or-interrupt command |
US5408636A (en) * | 1991-06-24 | 1995-04-18 | Compaq Computer Corp. | System for flushing first and second caches upon detection of a write operation to write protected areas |
US5524233A (en) * | 1993-03-31 | 1996-06-04 | Intel Corporation | Method and apparatus for controlling an external cache memory wherein the cache controller is responsive to an interagent communication for performing cache control operations |
US5551006A (en) * | 1993-09-30 | 1996-08-27 | Intel Corporation | Low cost writethrough cache coherency apparatus and method for computer systems without a cache supporting bus |
US5606687A (en) * | 1993-10-07 | 1997-02-25 | Sun Microsystems, Inc. | Method and apparatus for optimizing supervisor mode store operations in a data cache |
US5630075A (en) * | 1993-12-30 | 1997-05-13 | Intel Corporation | Write combining buffer for sequentially addressed partial line operations originating from a single instruction |
US6000017A (en) * | 1995-01-20 | 1999-12-07 | Intel Corporation | Hybrid tag architecture for a cache memory |
JP2902976B2 (ja) * | 1995-06-19 | 1999-06-07 | 株式会社東芝 | キャッシュフラッシュ装置 |
US5860105A (en) * | 1995-11-13 | 1999-01-12 | National Semiconductor Corporation | NDIRTY cache line lookahead |
US6021473A (en) * | 1996-08-27 | 2000-02-01 | Vlsi Technology, Inc. | Method and apparatus for maintaining coherency for data transaction of CPU and bus device utilizing selective flushing mechanism |
US5963978A (en) * | 1996-10-07 | 1999-10-05 | International Business Machines Corporation | High level (L2) cache and method for efficiently updating directory entries utilizing an n-position priority queue and priority indicators |
US5926830A (en) * | 1996-10-07 | 1999-07-20 | International Business Machines Corporation | Data processing system and method for maintaining coherency between high and low level caches using inclusive states |
US6122711A (en) * | 1997-01-07 | 2000-09-19 | Unisys Corporation | Method of and apparatus for store-in second level cache flush |
US5895488A (en) * | 1997-02-24 | 1999-04-20 | Eccs, Inc. | Cache flushing methods and apparatus |
US6260117B1 (en) * | 1997-09-18 | 2001-07-10 | International Business Machines Corporation | Method for increasing efficiency in a multi-processor system and multi-processor system with increased efficiency |
US6205521B1 (en) * | 1997-11-03 | 2001-03-20 | Compaq Computer Corporation | Inclusion map for accelerated cache flush |
US6145062A (en) * | 1998-01-26 | 2000-11-07 | Intel Corporation | Selective conflict write flush |
-
1999
- 1999-12-30 US US09/475,759 patent/US6546462B1/en not_active Expired - Lifetime
-
2000
- 2000-12-28 AU AU57892/01A patent/AU5789201A/en not_active Abandoned
- 2000-12-28 CN CN200810128069.7A patent/CN101446923B/zh not_active Expired - Lifetime
- 2000-12-28 GB GB0217123A patent/GB2374962B/en not_active Expired - Fee Related
- 2000-12-28 WO PCT/US2000/035481 patent/WO2001050274A1/en active Application Filing
- 2000-12-28 CN CNB008180709A patent/CN100416515C/zh not_active Expired - Lifetime
- 2000-12-28 DE DE10085373T patent/DE10085373B4/de not_active Expired - Lifetime
-
2001
- 2001-03-20 TW TW089128324A patent/TW508575B/zh not_active IP Right Cessation
-
2002
- 2002-06-27 ZA ZA200205198A patent/ZA200205198B/en unknown
-
2003
- 2003-02-20 HK HK03101290A patent/HK1049217A1/xx not_active IP Right Cessation
-
2004
- 2004-12-21 HK HK04110079A patent/HK1066991A1/xx not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
CN1425154A (zh) | 2003-06-18 |
US6546462B1 (en) | 2003-04-08 |
WO2001050274A1 (en) | 2001-07-12 |
GB2374962B (en) | 2004-12-15 |
CN100416515C (zh) | 2008-09-03 |
GB0217123D0 (en) | 2002-09-04 |
TW508575B (en) | 2002-11-01 |
DE10085373B4 (de) | 2007-11-22 |
ZA200205198B (en) | 2004-02-03 |
GB2374962A (en) | 2002-10-30 |
CN101446923A (zh) | 2009-06-03 |
HK1049217A1 (en) | 2003-05-02 |
HK1066991A1 (en) | 2005-03-18 |
DE10085373T1 (de) | 2003-04-24 |
AU5789201A (en) | 2001-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101446923B (zh) | 一种响应于指令而清洗高速缓冲存储器线的装置和方法 | |
JP7553478B2 (ja) | 書き込みミスエントリのドレインをサポートする犠牲キャッシュ | |
US9513904B2 (en) | Computer processor employing cache memory with per-byte valid bits | |
US5715428A (en) | Apparatus for maintaining multilevel cache hierarchy coherency in a multiprocessor computer system | |
US6748501B2 (en) | Microprocessor reservation mechanism for a hashed address system | |
US7827354B2 (en) | Victim cache using direct intervention | |
JP3281893B2 (ja) | キャッシュ・メモリ階層内で利用するキャッシュ・コヒーレンシ機構を実施するための方法およびシステム | |
US7305523B2 (en) | Cache memory direct intervention | |
US6321297B1 (en) | Avoiding tag compares during writes in multi-level cache hierarchy | |
EP1399823B1 (en) | Using an l2 directory to facilitate speculative loads in a multiprocessor system | |
JP4298800B2 (ja) | キャッシュメモリにおけるプリフェッチ管理 | |
US7434007B2 (en) | Management of cache memories in a data processing apparatus | |
US6212605B1 (en) | Eviction override for larx-reserved addresses | |
US20100064107A1 (en) | Microprocessor cache line evict array | |
JP2010507160A (ja) | データ処理装置の共有メモリへの書込みアクセス要求の処理 | |
US7194586B2 (en) | Method and apparatus for implementing cache state as history of read/write shared data | |
JPH06348595A (ja) | キャッシュ装置 | |
US8621152B1 (en) | Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access | |
JP3236287B2 (ja) | マルチプロセッサシステム | |
JPH0721085A (ja) | メモリとi/o装置の間で転送されるデータをキャッシュするためのストリーミングキャッシュおよびその方法 | |
US5471602A (en) | System and method of scoreboarding individual cache line segments | |
US5675765A (en) | Cache memory system with independently accessible subdivided cache tag arrays | |
JP5265827B2 (ja) | ハイブリッドコヒーレンスプロトコル | |
US9558116B2 (en) | Coherence de-coupling buffer | |
US7949833B1 (en) | Transparent level 2 cache controller |
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: 20150624 |
|
CX01 | Expiry of patent term |