CN1552025A - 高速缓存中上下文标识符的使用 - Google Patents
高速缓存中上下文标识符的使用 Download PDFInfo
- Publication number
- CN1552025A CN1552025A CNA038005220A CN03800522A CN1552025A CN 1552025 A CN1552025 A CN 1552025A CN A038005220 A CNA038005220 A CN A038005220A CN 03800522 A CN03800522 A CN 03800522A CN 1552025 A CN1552025 A CN 1552025A
- Authority
- CN
- China
- Prior art keywords
- context identifier
- thread
- page directory
- cache
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
-
- 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/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
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
技术领域
本发明涉及计算机技术。更具体地说,本发明涉及改进计算机设备中的高速缓存的性能。
背景技术
在计算机的存储层次结构中使用一个或多个高速缓存系统是一项用来提高计算机性能的公知技术(参见例如Handy,Jim;The Cache MemoryBook;Academic Press,1998)。图1示出了一个典型的高速缓存阵列100。高速缓存阵列100包括多条高速缓存线110。每条高速缓存线包括标签120和数据块130。示例高速缓存线140包括标签150和数据块160。标号170示出了示例标签150是主存地址170的一部分。主存地址170是对应于数据块160的主存地址。
在存储器传输期间,处理器在处理器的执行核与计算机的存储层次结构之间来回传输指令和操作数。从存储器层次结构向处理器装载指令/操作数以及从处理器向存储器层次结构存储指令/操作数是存储器传输的示例。在存储器传输期间,处理器生成主存地址。在高速缓存查找期间,将主存地址的一部分与标签120中的条目进行比较,以确定高速缓存阵列100是否包含与该存储器传输对应的条目。如标签150和主存地址170之间的关系所表现的那样,通过要求处理器只将各主存地址的一部分与各标签中的条目进行比较,可加速高速缓存查找的处理。一般地,高速缓存使用处理器所生成的各个线性地址的一部分来做存储在高速缓存阵列100中的数据的索引。
线程是计算机程序的一部分,其可独立于该计算机程序的其他部分而执行。如果可以在处理器上并发地执行多个线程,则可以提高处理器的性能。如果检测到并适当地管理多线程的各指令之间的相关性,则可以并发执行地多个线程。
图2示出了许多Intel处理器是怎样使用虚拟存储器环境来使得可由少量物理存储器(例如随机访问存储器)来支持大线性地址空间的。在存储器传输期间,处理器生成线性地址210。线性地址210包括目录字段220、表字段225以及偏移量字段230。页目录235的基址(base)包含在控制寄存器CR3 240中。线性地址210的目录条目220提供了相对于包含在控制寄存器CR3 240中的值的偏移量。页目录包含页表基址指针245。表字段225提供一个偏移量,其与页表基址指针245相结合,以标识包含物理地址255的页的基址。偏移量字段230与页表条目相结合以标识物理地址255。
图3示出了与只用一部分主存地址来执行高速缓存查找相关的缺点。响应于装载指令LD0和LD1,处理器(未示出)生成线性地址304和306。305和307示出了每个地址用于执行高速缓存查找的部分。尽管305和307看起来相同,但它们分别只是304和306的一部分。304和306映射到两个不同的物理地址,因为每个地址在它们各自的目录字段(320和325)以及偏移量字段(330和335)中具有不同的入口。如图3所示,当处理器支持多线程并发执行时,产生了另一个复杂因素。线程0和线程1对于它们各自的页目录的基址(340和345)可以具有不同的值。因此,即使304和306是相同的,它们也会映射到两个不同的物理地址。
附图说明
在附图中,通过例示而非限制性的方式图示了本发明,其中相似的标号表示类似的元件。
图1是现有技术的高速缓存阵列的示意图;
图2在概念上示出了将线性地址映射到物理地址;
图3在概念上示出了两个映射到两个不同物理地址的类似的标签;
图4A是使用上下文标识符的高速缓存阵列的一个实施例的示意图;
图4B在概念上示出了上下文标识符的一个实施例;
图5是一个简化框图,示出了上下文标识符生成器及相关控制电路的一个实施例;
图6是高速缓存系统的一个实施例的方框图;
图7是高速缓存系统的一个实施例的方框图。
具体实施方式
在此描述了在高速缓存中使用上下文标识符。在下面的描述中,给出了大量的具体细节,以提供对本发明实施例的透彻理解。然而,本领域内的技术人员将会认识到,没有一个或多个这些具体细节,或者利用其他方法、组件、材料等等也能实施本发明。在其他情形下,没有示出或描述一些公知的结构、材料或操作,以免混淆本发明的多个方面。
在整个说明书中,“一个实施例”或“实施例”的引用意味着结合该实施例而描述的特定特征、结构、特性包含在本发明的至少一个实施例中。因此,在整个说明书中不同位置处出现的短语“在一个实施例中”或“在实施例中”未必都指的是同一个实施例。而且,在一个或多个实施例中,可以任何合适的方式来结合多个具体的特征、结构或特性。
高速缓存系统利用称为标签的线性地址的一部分来索引高速缓存线。在存储器传输操作期间,处理器生成线性地址。在高速缓存查找期间,将线性地址的一部分与标签进行比较。许多Intel处理器提供了一种机制,以确保在部分地址和标签之间的表面上的匹配是真匹配。这一机制称为命中/缺失确定器。命中/缺失确定器与高速缓存的高速缓存查找过程并行地运行。命中/缺失确定器将与已发射的指令相关联的线性地址转换成对应的物理地址,并将该物理地址与一个完整的地址进行比较,该完整的地址与和所述部分线性地址相匹配的标签相关联。命中/缺失确定器比高速缓存慢很多,因为它必须将线性地址翻译成物理地址,并且它执行了完整地址的比较。如果命中/缺失确定器检测到高速缓存产生了一个假的匹配,则它就纠正由高速缓存产生的错误。检测并响应由高速缓存中的假匹配产生的错误的处理可能会降低处理器性能。
图4A示出了一个高速缓存阵列的一个实施例,该阵列包含上下文标识符。高速缓存阵列400包括多条高速缓存线410。每条高速缓存线410包括上下文标识符405、标签420和数据块430。这样,高速缓存线440A包括上下文标识符415A和标签450A。类似地,高速缓存线440B包括上下文标识符415B和标签450B。两个不同的线程生成了上下文标识符415A和415B。
线性地址470A和470B对应于标签450A和450B。在图4A和4B中,线性地址包含上下文标识符,以示出可以怎样使用上下文标识符来区分相似的线性地址。上下文标识符不是线性地址的一部分,但是它们分别从线性地址而生成。
根据现有技术而实现的高速缓存系统通过将由处理器(未示出)生成的部分线性地址与高速缓存阵列400中的每个标签420进行比较来执行高速缓存查找。如果处理器生成了部分线性地址123,则该地址会同时与标签450A和450B相匹配。如上所述,命中/缺失确定器最终确定哪条高速缓存线(如果有一条相匹配的话)与由处理器生成的主存地址相匹配。当命中/缺失确定器管理并纠正在部分线性地址和标签420之间的假匹配时,现有技术的系统就会出现性能损失。
图4B示出了使用上下文标识符来减少在由处理器生成的部分线性地址与标签420之间的假匹配的频率。线性地址470A和470B与图4A的高速缓存线440A和440B相关联。响应于一条发射的指令,处理器生成地址475。地址475包括上下文标识符480和部分线性地址485。现有技术的高速缓存可能会标识出475和470B之间的假匹配,因为部分线性地址485与标签450B相匹配。在一个实施例中,将上下文标识符480与上下文标识符415B进行比较。而且,在一个实施例中,将部分线性地址485与标签450B进行比较。这样,高速缓存阵列400将不会发现475和470B之间的假匹配,因为上下文标识符480不与上下文标识符415B相匹配。
图5示出了页缺失处理机(PMH)的一部分的实施例。在一个实施例中,PMH500生成并控制上下文标识符的分配。PMH500包括上下文标识符生成器510、比较器520、上下文标识符复用器530和反相器540。在一个实施例中,上下文标识符生成器510生成对应于当前正在执行的线程的一位的二进制数。在本发明的其它实施例中,上下文标识符生成器510生成多于一位的二进制数。比较器520比较处理器上正在执行的两个线程所使用的页目录的基址地址。在另一个实施例中,上下文标识符包括两个或更多位。
根据另一个实施例,PMH500确定是否有相同的上下文标识符被分配给两个不同线程的指令。对于图5所示的实施例,PMH500将第一上下文标识符分配给在处理器上执行的第一线程。例如,如果线程0是在处理器上执行的第一线程,则处理器可以将0分配作为线程0的上下文标识符。上下文标识符不需要与线程号相匹配。因此,线程0可以具有上下文标识符1或0。在本发明的可选实施例中,处理器执行多于2个的线程的指令,并使用多于1个位的上下文标识符。
如果第二线程开始在处理器上执行(例如线程1),PMH500确定是否将不同于分配给线程0的指令的上下文标识符分配给第二线程的指令。线程0和1可能正在使用主存中相同的页。如果是这样,则希望将相同的上下文标识符分配给这两个线程的指令,因为当已知线性地址映射到与标签相同的页时,不太可能在标签和线性地址之间发生假匹配。通过比较两个线程所使用的页目录的基址,比较器520确定线程0和1是否正在使用主存中相同的页。
如果线程0和1正在使用相同的地址作为它们各自的页目录的基址,则多路复用器530将为线程1选择与它为线程0所选择的相同的上下文标识符。相反地,如果比较器520指示出线程0和1当前未在使用相同的地址作为它们各自页目录的基址,则多路复用器530选择反相器540的输出作为线程1的上下文标识符。可以用不同的方式来实现对两个线程是否共享相同的上下文标识符进行的确定。例如,在本发明的实施例中,操作系统确定两个线程是否共享相同的上下文标识符,并直接将正确的上下文标识符告诉给处理器以与线程相关联。在本发明的另一个实施例中,研究线程的内存访问模式的预测器预测该上下文标识符。根据一个实施例,用户可以指示PMH500总是为两个不同的线程的指令选择相同的值,或者总是为两个不同的线程的指令选择不同的上下文标识符值。而且,一些实施例利用基址目录的地址之外的其他标准来确定两个线程是否共享相同的上下文标识符。
在本发明的可选实施例中,在处理器中出现了多于2个的线程。对于处理器中出现n个线程的实施例,上下文标识符扩展成一个编码方案,其允许指定n个不同的上下文标识符。本领域内的技术人员将会认识到,当使用n位的上下文标识符时,该n个位是以在高速缓存中设置单个位的相同方式来在高速缓存中设置的。而且,本领域内的技术人员将会认识到,可以与比较2个单个位的上下文标识符几乎相同的方式来相互比较n位的上下文标识符。
本发明一个具有多线程的实施例使用了未用上下文标识符池。当线程改变其页表基址(CR3)时,它将该新值与其他活动线程所使用的页表基址的值或者池中任意上下文标识符的有效页表基址进行比较。如果存在匹配,它就取得产生该匹配的线程的上下文标识符的值。如果没有与另一个活动线程的匹配,它就从池中取得一个未用上下文标识符。当线程改变其页的基址值时,或者当具有给定上下文标识符的最后的高速缓存线被释放时,将上下文标识符返回到未用池。后一个方案使得线程能够命中一个先前的线程带进来的数据。本领域内的技术人员将会认识到,可以使用许多方案来为线程预测上下文标识符值。
图6示出了对具有上下文标识符的高速缓存系统的读操作。高速缓存阵列610包括多条高速缓存线605。每条高速缓存线605包括上下文标识符610A、标签610B和数据块610C。高速缓存阵列610耦合到高速缓存控制器620。高速缓存控制器620控制对包含在高速缓存阵列610中的数据的访问。
高速缓存控制器620耦合到命中/缺失确定器670和比较器675及680。下面讨论命中/缺失确定器670和比较器675及680的操作。在一个实施例中,比较器675耦合到AGU630和与门685。AGU630为已发射的需要存储器传输的指令(例如LOAD或STORE指令)生成线性地址。在一个实施例中,比较器680耦合到与门685并且通过多路复用器650耦合到PMH640。PMH640包含用来确定哪个上下文标识符被分配给哪个已发射的指令的控制逻辑。
一般由已发射的LOAD指令(LD)660启动读周期。LD660发送到PMH640和AGU630。PMH640除了其它事项以外,确定哪个线程是LD660的源。PMH640部分地基于哪个线程是LD660的源而将上下文标识符分配给LD660。PMH640将与LD660关联的上下文标识符通过多路复用器650发射到比较器680。类似地,AGU630将部分线性地址发射到比较器675。
比较器675和680使用所述部分线性地址和LD660的上下文标识符来确定高速缓存阵列610是否包含LD660需要的信息。如果高速缓存阵列610包含所需的信息,则产生高速缓存命中。如果高速缓存阵列610不包含所需信息,则产生高速缓存缺失。
高速缓存命中需要特定的高速缓存线包含与LD660的上下文标识符相匹配的上下文标识符,并包含与对应于LD660的部分线性地址相匹配的标签。比较器675和680将每条高速缓存线的标签字段和上下文标识符字段与LD660的上下文标识符和部分线性地址进行比较。根据一个实施例,存在与高速缓存线一样多的比较器,以使得可以在单个并行操作中完成所述比较。如果单个高速缓存线包含与LD660的上下文标识符和部分线性地址相匹配的上下文标识符和标签,则与门685发出表示高速缓存命中的信号。然而,该高速缓存命中也可能是基于假匹配的,因为比较器675只将LD660的地址的一部分与高速缓存阵列610中的每个标签进行比较。
命中/缺失确定器670检测高速缓存命中是否是基于假匹配的。命中/缺失确定器接收LD660需要从其处获得指令/操作数的主存中的位置的完整线性地址。根据一个实施例,命中/缺失确定器670将由AGU传送给它的线性地址翻译成物理地址。命中/缺失确定器670确定对应于和LD660的部分线性地址相匹配的标签的物理地址。命中/缺失确定器670比较两个完整的物理地址,以确定所述高速缓存命中是否是基于假匹配的。
图7示出了对使用上下文标识符的高速缓存的写操作。高速缓存阵列710包括多条高速缓存线705。每条高速缓存线705包括上下文标识符710A、标签710B和数据块710C。高速缓存阵列710耦合到高速缓存控制器720。高速缓存控制器720执行多种功能,包括确定一块数据将被写入到哪条高速缓存线中。高速缓存控制器720耦合到AGU730并通过多路复用器750耦合到PMH740。
已发射的指令760从处理器(未示出)发送到PMH740和AGU730。在一个实施例中,当已发射的指令760需要进行存储器传输时,AGU730生成线性地址。AGU730一般是处理器的执行内核的一部分。在其他实施例中,AGU730可生成物理地址。在一个实施例中,PMH740生成至少2个上下文标识符和用以控制多路复用器750的控制信号。在其他实施例中,PMH740可生成任意数量的上下文标识符。
一般由已发射的存储指令(ST)(例如ST760)启动写周期。ST760发送到PMH740和AGU730。PMH740确定哪个线程是ST760的源。PMH740还确定将哪个上下文标识符分配给ST760。根据一个实施例,PMH740具有3种操作模式:OFF、NON-SHARED和ADAPTIVE。如果PMH740以OFF模式操作,则PMH740可以为每个上下文标识符写入相同的值。如果两个或更多的线程具有与存储在高速缓存线中的上下文标识符相同的上下文标识符,则该高速缓存线由所述线程的指令共享。
当以NON-SHARED模式操作时,PMH740可分配专用于包含所发射的指令的线程的上下文标识符。在一个实施例中,ADAPTIVE模式使得PMH740可动态确定为来自不同线程的指令分配相同还是不同的上下文标识符。在一个实施例中,如果线程对它们的页目录的基址共享相同的地址。则PMH740为包含在所述线程中的指令动态分配相同的上下文标识符。在一个实施例中,如果不是这样,则PMH740可为包含在所述线程中的指令动态分配不同的上下文标识符。
在一个实施例中,在确定是否为两个不同的线程的指令写入相同的上下文标识符时,PMH740考虑计算机是否处于多线程模式以及是否允许调页。可以使用任意多个标准来确定分配给已发射指令的上下文标识符的值。而且,上下文标识符生成器和相关控制逻辑可以位于电子系统中的多个位置,并且不需要包含在PMH或类似单元中。
PMH740通过多路复用器750将适用于ST760的上下文标识符发送到高速缓存控制器720。AGU730生成与ST760寻求向其处存储数据的主存位置对应的线性地址。AGU730向高速缓存控制器720和命中/缺失确定器770提供对应于ST760的线性地址。高速缓存控制器720应用高速缓存线替换策略,以确定将用哪条高速缓存线来为ST760存储数据。高速缓存线替换策略是本领域的公知技术(参见例如Handy,Jim;The Cache MemoryBook;Academic Press,1998,以获得对高速缓存线替换策略的更详细的描述)。
在选择合适的高速缓存线之后,高速缓存控制器720将上下文标识符写到所选择的高速缓存线780的上下文标识符字段780A。高速缓存控制器720将ST760的线性地址的一部分写到高速缓存线780的标签字段780B。在一个实施例中,标签包括32位线性地址的23到12位。可对标签使用地址位的许多组合。高速缓存控制器将与ST760相关联的数据写入到所选择的高速缓存线780的数据块字段780C。
高速缓存管理可由来自电子可访问介质的指令所控制,其可用来对计算机(或其他电子设备)编程,以执行在此描述的处理。所述电子可访问介质可包括但不局限于软盘、光盘、CD-ROM、磁光盘、ROM、RAM、EPROM、EEPROM、磁或光卡、闪存或适用于存储电子指令的其他类型的介质/机器可读介质。而且,所述指令也可作为计算机程序产品而下载,其中所述程序通过包含在载波或其他传播介质中的数据信号而经由通信链路(例如调制解调器或网络连接)从远程计算机传输到请求计算机。
上述对本发明示出的实施例的描述不是对本发明的穷尽式描述,也未将本发明限制为所公开的具体形式。尽管在此描述了本发明的实施例和示例以用于说明,但是,如同本领域内的技术人员将会认识到的那样,仍可在本发明的范围内做出各种等同修改。
基于上述详细的描述,可对本发明做出这些修改。所附权利要求中的术语不应当被理解成将本发明限制到在说明书和权利要求中所公开的具体实施例。相反地,本发明的范围完全只由所附权利要求所确定,所述权利要求应根据所确立的解释权利要求的原则来理解。
Claims (31)
1.一种方法,包括:
在高速缓存中存储与标签关联的上下文标识符;
生成与已发射的指令相关联的地址;
将一个地址部分与所述标签相比较,以确定所述地址是否与所述标签相匹配;以及
将与所述已发射的指令相关联的上下文标识符和存储在所述高速缓存中的上下文标识符相比较,以确定与所述已发射的指令相关联的上下文标识符是否与存储在所述高速缓存中的上下文标识符相匹配。
2.如权利要求1所述的方法,还包括:
如果所述地址部分与所述标签相匹配,并且如果与所述已发射的指令相关联的上下文标识符和存储在所述高速缓存中的上下文标识符相匹配,则从所述高速缓存向处理器传送数据块。
3.如权利要求1所述的方法,还包括:
如果所述地址部分不与所述标签相匹配,则用由所述地址指定的数据块替换所述高速缓存中由替换策略所选择的高速缓存线的数据块;以及
在所述高速缓存线中存储所述上下文标识符。
4.如权利要求1所述的方法,还包括:
如果所述地址部分与所述标签相匹配,而与所述指令相关联的上下文标识符不与存储于所述标签中的上下文标识符相匹配,则用由所述地址指定的数据块替换所述高速缓存中由替换策略所选择的高速缓存线的数据块;以及
在所述高速缓存线中存储所述上下文标识符。
5.一种方法,包括:
将第一线程所使用的页目录的基址地址与第二线程所使用的页目录的基址地址进行比较,以确定所述第一线程所使用的页目录的基址地址是否与所述第二线程所使用的页目录的基址地址相匹配;
如果所述第一线程所使用的页目录的基址地址与所述第二线程所使用的页目录的基址地址相匹配,则将一个上下文标识符同时分配给所述第一线程和所述第二线程;以及
如果所述第一线程所使用的页目录的基址地址不与所述第二线程所使用的页目录的基址地址相匹配,则将不同的上下文标识符分配给所述第一线程和所述第二线程。
6.如权利要求5所述的方法,还包括:
在第一寄存器中存储所述第一线程所使用的页目录的基址地址;
在第二寄存器中存储所述第二线程所使用的页目录的基址地址;
读所述第一寄存器,以确定所述第一线程的页目录的基址地址;
读所述第二寄存器,以确定所述第二线程的页目录的基址地址。
7.如权利要求6所述的方法,其中所述第一寄存器和所述第二寄存器是同一个寄存器。
8.如权利要求5所述的方法,其中相同的上下文标识符被分配给所述第一线程和所述第二线程。
9.如权利要求5所述的方法,其中不同的上下文标识符被分配给所述第一线程和所述第二线程。
10.一种装置,包括:
上下文标识符生成器,用于生成上下文标识符;
控制单元,耦合到所述上下文标识符生成器,以将上下文标识符分配给高速缓存线;以及
耦合到所述控制单元的高速缓存,具有多个高速缓存槽以存储多个高速缓存线,所述高速缓存线中的每一条都至少包括上下文标识符、标签和数据块。
11.如权利要求10所述的装置,其中所述控制单元还包括:
一个或多个寄存器,以存储一个或多个页目录的一个或多个基址的地址;以及
比较器,耦合到所述寄存器,以将第一线程所使用的页目录的基址地址与第二线程所使用的页目录的基址地址进行比较。
12.如权利要求11所述的装置,还包括多路复用器,其被耦合到所述比较器并与所述上下文标识符生成器相耦合,以选择上下文标识符。
13.如权利要求12所述的装置,其中每个上下文标识符都包括一个或多个位,对应于一个页目录基址指针,所述指针是页目录的基址的物理地址。
14.如权利要求13所述的装置,其中所述上下文标识符包括所述标签的一个或多个位。
15.一种装置,包括:
地址生成单元,响应于由处理器发射的指令而生成地址;
高速缓存,存储多条高速缓存线,所述多条高速缓存线中的每一条都至少包括上下文标识符、标签和数据块;
至少一个耦合到所述地址生成单元并耦合到所述高速缓存的比较器,以将由所述地址生成单元生成的一个地址部分与所述多条高速缓存线中每一条高速缓存线中的标签的每一个进行比较;
控制单元,生成两个或更多上下文标识符,并选择所述两个或更多上下文标识符中的一个;以及
至少一个耦合到所述控制单元并耦合到所述高速缓存的比较器,以将由所述控制单元选择的上下文标识符与所述多条高速缓存线中每条高速缓存线中的上下文标识符的每一个进行比较。
16.如权利要求15所述的装置,其中所述控制单元还包括:
第一寄存器,存储与执行计算机指令的第一线程相关联的页目录的基址地址;
第二寄存器,存储与执行计算机指令的第二线程相关联的页目录的基址地址;
比较器,耦合到所述第一寄存器和所述第二寄存器,以将存储在所述第一寄存器中的值与存储在所述第二寄存器中的值进行比较;
上下文标识符生成器,生成至少两个上下文标识符;以及
多路复用器,耦合到所述上下文标识符生成器和所述比较器,以选择所述至少两个上下文标识符中的一个。
17.如权利要求16所述的装置,其中:
如果与执行计算机指令的所述第一线程相关联的页目录的基址地址和与执行计算机指令的所述第二线程相关联的页目录的基址地址相匹配,则所述多路复用器将选择第一上下文标识符;并且
如果与执行计算机指令的所述第一线程相关联的页目录的基址地址不和与执行计算机指令的所述第二线程相关联的页目录的基址地址相匹配,则所述多路复用器将选择第二上下文标识符。
18.一种制品,包括存储有信息的机器可读介质,表示一个处理器,所述处理器包括:
上下文标识符生成器,用于生成上下文标识符;
控制单元,耦合到所述上下文标识符生成器,以将上下文标识符分配给高速缓存线;以及
高速缓存,耦合到所述控制单元,具有多个高速缓存槽以存储多个高速缓存线,所述高速缓存线中的每一条都至少包括上下文标识符、标签和数据块。
19.如权利要求18所述的制品,还包括:
一个或多个寄存器,以存储一个或多个页目录的一个或多个基址的地址;以及
比较器,耦合到所述寄存器,以将第一线程所使用的页目录的基址地址与第二线程所使用的页目录的基址地址进行比较。
20.如权利要求19所述的制品,还包括多路复用器,其被耦合到所述比较器并与所述上下文标识符生成器相耦合,以选择上下文标识符。
21.一种制品,包括存储有信息的机器可读介质,表示一个处理器,所述处理器包括:
高速缓存,存储多条高速缓存线,每条高速缓存线具有相关联的标签和相关联的上下文标识符;以及
比较逻辑,对于所述多条高速缓存线中的每一条高速缓存线,将请求标签和请求上下文标识符与所述相关联的标签和所述相关联的上下文标识符进行比较。
22.如权利要求21所述的制品,包括存储有信息的机器可读介质,表示一个处理器,其中所述相关联的上下文标识符包括线程标识符。
23.如权利要求21所述的制品,包括存储有信息的机器可读介质,表示一个处理器,其中在第一模式中,所述相关联的上下文标识符包括线程标识符,并且其中在第二模式中,所述相关联的上下文标识符是经预测的上下文标识符。
24.如权利要求23所述的制品,包括存储有信息的机器可读介质,表示一个处理器,其中在所述第二模式中,至少部分地通过将第一线程所使用的页目录的基址与第二线程所使用的页目录的基址进行比较,以确定所述第一线程所使用的页目录的基址是否与所述第二线程所使用的页目录的基址相匹配,来确定所述经预测的上下文标识符。
25.如权利要求21所述的制品,包括存储有信息的机器可读介质,表示一个处理器,其中只有当上下文标识符匹配和标签匹配发生时,所述比较逻辑才会生成命中信号。
26.一种装置,包括:
高速缓存,存储多条高速缓存线,每条高速缓存线具有相关联的标签和相关联的上下文标识符;以及
比较逻辑,对于所述多条高速缓存线中的每一条高速缓存线,将请求标签和请求上下文标识符与所述相关联的标签和所述相关联的上下文标识符进行比较。
27.如权利要求26所述的装置,其中所述相关联的上下文标识符包括线程标识符。
28.如权利要求26所述的装置,其中在第一模式中,所述相关联的上下文标识符包括线程标识符,并且其中在第二模式中,所述相关联的上下文标识符是经预测的上下文标识符。
29.如权利要求28所述的装置,其中在所述第二模式中,至少部分地通过将第一线程所使用的页目录的基址与第二线程所使用的页目录的基址进行比较,以确定所述第一线程所使用的页目录的基址是否与所述第二线程所使用的页目录的基址相匹配,来确定所述经预测的上下文标识符。
30.如权利要求29所述的装置,其中在所述第二模式中,至少部分地通过将第一线程所使用的页目录的基址与第二线程所使用的页目录的基址以及第三线程所使用的页目录的基址进行比较,以确定所述第一线程所使用的页目录的基址是否与所述第二线程或所述第三线程所使用的页目录的基址相匹配,来确定所述经预测的上下文标识符的。
31.如权利要求26所述的装置,其中只有当上下文标识符匹配和标签匹配发生时,所述比较逻辑才会生成命中信号。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/104,815 US7085889B2 (en) | 2002-03-22 | 2002-03-22 | Use of a context identifier in a cache memory |
US10/104,815 | 2002-03-22 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1552025A true CN1552025A (zh) | 2004-12-01 |
CN1302396C CN1302396C (zh) | 2007-02-28 |
Family
ID=28040700
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB038005220A Expired - Fee Related CN1302396C (zh) | 2002-03-22 | 2003-03-13 | 高速缓存中上下文标识符的使用 |
Country Status (10)
Country | Link |
---|---|
US (1) | US7085889B2 (zh) |
JP (1) | JP4459628B2 (zh) |
KR (1) | KR100634930B1 (zh) |
CN (1) | CN1302396C (zh) |
AU (1) | AU2003214148A1 (zh) |
DE (1) | DE10392127T5 (zh) |
HK (1) | HK1069449A1 (zh) |
RU (1) | RU2285286C2 (zh) |
TW (1) | TWI300897B (zh) |
WO (1) | WO2003083663A2 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104932990A (zh) * | 2015-06-03 | 2015-09-23 | 华为技术有限公司 | 一种高速缓冲存储器中数据块的替换方法和装置 |
CN107291630A (zh) * | 2016-03-30 | 2017-10-24 | 华为技术有限公司 | 一种高速缓冲存储器处理方法及装置 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6560690B2 (en) * | 2000-12-29 | 2003-05-06 | Intel Corporation | System and method for employing a global bit for page sharing in a linear-addressed cache |
US20040049657A1 (en) * | 2002-09-10 | 2004-03-11 | Kling Ralph M. | Extended register space apparatus and methods for processors |
US7254617B2 (en) * | 2002-12-06 | 2007-08-07 | Scott Ruple | Distributed cache between servers of a network |
US7206916B2 (en) * | 2004-03-08 | 2007-04-17 | Sun Microsystems, Inc. | Partial address compares stored in translation lookaside buffer |
US7606974B2 (en) * | 2004-05-26 | 2009-10-20 | Intel Corporation | Automatic caching generation in network applications |
ATE536587T1 (de) | 2004-08-31 | 2011-12-15 | Freescale Semiconductor Inc | Virtueller adressen-cache und verfahren zum gemeinsamen benutzen von daten unter verwendung einer eindeutigen task-kennung |
EP1807767A1 (en) * | 2004-09-07 | 2007-07-18 | Freescale Semiconductors, Inc. | A virtual address cache and method for sharing data stored in a virtual address cache |
KR100899097B1 (ko) * | 2007-05-11 | 2009-05-25 | 한국과학기술원 | 복수의 인덱싱 정보를 제공하는 방법 및 이를 이용한 캐쉬메모리 장치 |
US8024546B2 (en) * | 2008-10-23 | 2011-09-20 | Microsoft Corporation | Opportunistic page largification |
CN101854311A (zh) * | 2009-03-31 | 2010-10-06 | 国际商业机器公司 | 在web服务器上传递上下文信息的方法和装置 |
US11379592B2 (en) * | 2018-12-20 | 2022-07-05 | Intel Corporation | Write-back invalidate by key identifier |
US11593109B2 (en) * | 2021-06-07 | 2023-02-28 | International Business Machines Corporation | Sharing instruction cache lines between multiple threads |
US11593108B2 (en) | 2021-06-07 | 2023-02-28 | International Business Machines Corporation | Sharing instruction cache footprint between multiple threads |
Family Cites Families (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB8823077D0 (en) * | 1988-09-30 | 1988-11-09 | Int Computers Ltd | Data processing apparatus |
US5341487A (en) * | 1991-12-20 | 1994-08-23 | International Business Machines Corp. | Personal computer having memory system with write-through cache and pipelined snoop cycles |
US5568620A (en) * | 1993-06-30 | 1996-10-22 | Intel Corporation | Method and apparatus for performing bus transactions in a computer system |
TW255022B (zh) * | 1993-06-30 | 1995-08-21 | Intel Corp | |
US5615343A (en) * | 1993-06-30 | 1997-03-25 | Intel Corporation | Method and apparatus for performing deferred transactions |
US5548733A (en) * | 1994-03-01 | 1996-08-20 | Intel Corporation | Method and apparatus for dynamically controlling the current maximum depth of a pipe lined computer bus system |
TW400483B (en) * | 1994-03-01 | 2000-08-01 | Intel Corp | High performance symmetric arbitration protocol with support for I/O requirements |
US5572703A (en) * | 1994-03-01 | 1996-11-05 | Intel Corporation | Method and apparatus for snoop stretching using signals that convey snoop results |
BR9506997A (pt) * | 1994-03-01 | 1997-11-18 | Intel Corp | Arquitetura de barramento altamente canalizada |
US6029217A (en) | 1994-10-03 | 2000-02-22 | International Business Machines Corporation | Queued arbitration mechanism for data processing system |
US5710906A (en) * | 1995-07-07 | 1998-01-20 | Opti Inc. | Predictive snooping of cache memory for master-initiated accesses |
KR0164395B1 (ko) * | 1995-09-11 | 1999-02-18 | 김광호 | 반도체 메모리 장치와 그 리이드 및 라이트 방법 |
US5812803A (en) * | 1995-09-29 | 1998-09-22 | Intel Corporation | Method and apparatus for controlling data transfers between a bus and a memory device using a multi-chip memory controller |
JPH09101916A (ja) * | 1995-10-06 | 1997-04-15 | Fujitsu Ltd | マルチプロセス処理装置 |
US5809522A (en) * | 1995-12-18 | 1998-09-15 | Advanced Micro Devices, Inc. | Microprocessor system with process identification tag entries to reduce cache flushing after a context switch |
US5838995A (en) * | 1995-12-18 | 1998-11-17 | International Business Machines Corporation | System and method for high frequency operation of I/O bus |
US6374329B1 (en) * | 1996-02-20 | 2002-04-16 | Intergraph Corporation | High-availability super server |
JP3643425B2 (ja) * | 1996-02-29 | 2005-04-27 | 富士通株式会社 | データ処理方法、データ処理装置及びインターフェイスコントローラ |
US5754818A (en) * | 1996-03-22 | 1998-05-19 | Sun Microsystems, Inc. | Architecture and method for sharing TLB entries through process IDS |
US6427162B1 (en) * | 1996-05-02 | 2002-07-30 | Sun Microsystems, Inc. | Separate code and data contexts: an architectural approach to virtual text sharing |
US5733603A (en) | 1996-06-05 | 1998-03-31 | Kimberly-Clark Corporation | Surface modification of hydrophobic polymer substrate |
US6012118A (en) * | 1996-12-30 | 2000-01-04 | Intel Corporation | Method and apparatus for performing bus operations in a computer system using deferred replies returned without using the address bus |
US6065101A (en) * | 1997-06-12 | 2000-05-16 | International Business Machines Corporation | Pipelined snooping of multiple L1 cache lines |
US5919254A (en) * | 1997-06-25 | 1999-07-06 | Intel Corporation | Method and apparatus for switching between source-synchronous and common clock data transfer modes in a multiple processing system |
US6336159B1 (en) | 1997-06-25 | 2002-01-01 | Intel Corporation | Method and apparatus for transferring data in source-synchronous protocol and transferring signals in common clock protocol in multiple agent processing system |
US5991855A (en) * | 1997-07-02 | 1999-11-23 | Micron Electronics, Inc. | Low latency memory read with concurrent pipe lined snoops |
US5978869A (en) * | 1997-07-21 | 1999-11-02 | International Business Machines Corporation | Enhanced dual speed bus computer system |
US6108736A (en) * | 1997-09-22 | 2000-08-22 | Intel Corporation | System and method of flow control for a high speed bus |
US5964856A (en) * | 1997-09-30 | 1999-10-12 | Intel Corporation | Mechanism for data strobe pre-driving during master changeover on a parallel bus |
US6691118B1 (en) * | 1997-10-31 | 2004-02-10 | Oracle International Corporation | Context management system for modular software architecture |
US6092156A (en) * | 1997-11-05 | 2000-07-18 | Unisys Corporation | System and method for avoiding deadlocks utilizing split lock operations to provide exclusive access to memory during non-atomic operations |
KR100255664B1 (ko) * | 1997-12-29 | 2000-05-01 | 윤종용 | 반도체 집적회로의 클락 포워딩 회로 및 클락포워딩 방법 |
US6006291A (en) * | 1997-12-31 | 1999-12-21 | Intel Corporation | High-throughput interface between a system memory controller and a peripheral device |
US6041380A (en) * | 1998-01-21 | 2000-03-21 | Micron Electronics, Inc. | Method for increasing the number of devices capable of being operably connected to a host bus |
US6449677B1 (en) * | 1998-09-03 | 2002-09-10 | Compaq Information Technologies Group, L.P. | Method and apparatus for multiplexing and demultiplexing addresses of registered peripheral interconnect apparatus |
US6141747A (en) | 1998-09-22 | 2000-10-31 | Advanced Micro Devices, Inc. | System for store to load forwarding of individual bytes from separate store buffer entries to form a single load word |
US6272604B1 (en) * | 1999-05-20 | 2001-08-07 | International Business Machines Corporation | Contingent response apparatus and method for maintaining cache coherency |
US6487621B1 (en) * | 1999-08-17 | 2002-11-26 | Compaq Information Technologies Group, L.P. | Architecture, system and method for ensuring an ordered transaction on at least one of a plurality of multi-processor buses that experience a hit-to-modified snoop cycle |
US6615323B1 (en) * | 1999-09-02 | 2003-09-02 | Thomas Albert Petersen | Optimizing pipelined snoop processing |
US6591321B1 (en) * | 1999-11-09 | 2003-07-08 | International Business Machines Corporation | Multiprocessor system bus protocol with group addresses, responses, and priorities |
CN1173271C (zh) * | 1999-12-24 | 2004-10-27 | 仁宝电脑工业股份有限公司 | 具有双重高速缓冲映射存储器的高速缓冲存储器系统 |
US6609171B1 (en) * | 1999-12-29 | 2003-08-19 | Intel Corporation | Quad pumped bus architecture and protocol |
EP1215582A1 (en) | 2000-12-15 | 2002-06-19 | Texas Instruments Incorporated | Cache memory access system and method |
EP1182571B1 (en) | 2000-08-21 | 2011-01-26 | Texas Instruments Incorporated | TLB operations based on shared bit |
EP1215577B1 (en) * | 2000-08-21 | 2012-02-22 | Texas Instruments Incorporated | Fault management and recovery based on task-ID |
US6560690B2 (en) * | 2000-12-29 | 2003-05-06 | Intel Corporation | System and method for employing a global bit for page sharing in a linear-addressed cache |
US20020087824A1 (en) * | 2000-12-29 | 2002-07-04 | Hum Herbert H.J. | System and method for employing a process identifier to minimize aliasing in a linear-addressed cache |
-
2002
- 2002-03-22 US US10/104,815 patent/US7085889B2/en not_active Expired - Lifetime
-
2003
- 2003-03-13 JP JP2003581019A patent/JP4459628B2/ja not_active Expired - Fee Related
- 2003-03-13 CN CNB038005220A patent/CN1302396C/zh not_active Expired - Fee Related
- 2003-03-13 DE DE10392127T patent/DE10392127T5/de not_active Ceased
- 2003-03-13 RU RU2003136262/09A patent/RU2285286C2/ru not_active IP Right Cessation
- 2003-03-13 AU AU2003214148A patent/AU2003214148A1/en not_active Abandoned
- 2003-03-13 KR KR1020037017291A patent/KR100634930B1/ko not_active IP Right Cessation
- 2003-03-13 WO PCT/US2003/007710 patent/WO2003083663A2/en active Application Filing
- 2003-03-14 TW TW092105617A patent/TWI300897B/zh not_active IP Right Cessation
-
2005
- 2005-03-01 HK HK05101786A patent/HK1069449A1/xx not_active IP Right Cessation
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104932990A (zh) * | 2015-06-03 | 2015-09-23 | 华为技术有限公司 | 一种高速缓冲存储器中数据块的替换方法和装置 |
CN104932990B (zh) * | 2015-06-03 | 2018-05-11 | 华为技术有限公司 | 一种高速缓冲存储器中数据块的替换方法和装置 |
CN107291630A (zh) * | 2016-03-30 | 2017-10-24 | 华为技术有限公司 | 一种高速缓冲存储器处理方法及装置 |
CN107291630B (zh) * | 2016-03-30 | 2020-08-25 | 华为技术有限公司 | 一种高速缓冲存储器处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
TW200405155A (en) | 2004-04-01 |
WO2003083663A3 (en) | 2004-05-21 |
WO2003083663A2 (en) | 2003-10-09 |
JP2006505834A (ja) | 2006-02-16 |
TWI300897B (en) | 2008-09-11 |
US7085889B2 (en) | 2006-08-01 |
RU2003136262A (ru) | 2005-05-27 |
AU2003214148A8 (en) | 2003-10-13 |
US20030182512A1 (en) | 2003-09-25 |
KR100634930B1 (ko) | 2006-10-17 |
JP4459628B2 (ja) | 2010-04-28 |
KR20040017821A (ko) | 2004-02-27 |
DE10392127T5 (de) | 2004-07-29 |
CN1302396C (zh) | 2007-02-28 |
RU2285286C2 (ru) | 2006-10-10 |
HK1069449A1 (en) | 2005-05-20 |
AU2003214148A1 (en) | 2003-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1302396C (zh) | 高速缓存中上下文标识符的使用 | |
CN1317644C (zh) | 简化了缓存替换策略的实现的多线程缓存方法和装置 | |
US6560690B2 (en) | System and method for employing a global bit for page sharing in a linear-addressed cache | |
CN1317645C (zh) | 具有基于线程标识符的缓存清除的多线程缓存方法和装置 | |
US8806101B2 (en) | Metaphysical address space for holding lossy metadata in hardware | |
KR100831557B1 (ko) | 캐시 시스템, 프로세서 및 캐시의 섹션 예측 방법 | |
US5548739A (en) | Method and apparatus for rapidly retrieving data from a physically addressed data storage structure using address page crossing predictive annotations | |
US7111124B2 (en) | Set partitioning for cache memories | |
US6571316B1 (en) | Cache memory array for multiple address spaces | |
US20040215882A1 (en) | Cache predictor for simultaneous multi-threaded processor system supporting multiple translations | |
US8468297B2 (en) | Content addressable memory system | |
CN1226023A (zh) | 加载/加载检测和重定序方法 | |
US6990551B2 (en) | System and method for employing a process identifier to minimize aliasing in a linear-addressed cache | |
JP2008512758A (ja) | 仮想アドレス・キャッシュに格納されたデータを共用する仮想アドレス・キャッシュ及び方法 | |
US11797308B2 (en) | Fetch stage handling of indirect jumps in a processor pipeline | |
US6397298B1 (en) | Cache memory having a programmable cache replacement scheme | |
JP2008511882A (ja) | 一意のタスク識別子を用いてデータを共用する仮想アドレス・キャッシュ及び方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1069449 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070228 Termination date: 20110313 |