CN102067091A - 具有混合软硬件控制的高速缓存管理的多处理器系统 - Google Patents
具有混合软硬件控制的高速缓存管理的多处理器系统 Download PDFInfo
- Publication number
- CN102067091A CN102067091A CN2009801228296A CN200980122829A CN102067091A CN 102067091 A CN102067091 A CN 102067091A CN 2009801228296 A CN2009801228296 A CN 2009801228296A CN 200980122829 A CN200980122829 A CN 200980122829A CN 102067091 A CN102067091 A CN 102067091A
- Authority
- CN
- China
- Prior art keywords
- address
- write
- cache
- order
- program
- 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.)
- Pending
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/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/0815—Cache consistency protocols
- G06F12/0837—Cache consistency protocols with software control, e.g. non-cacheable data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
一种多处理器系统,具有后台存储器和多个处理元件(10),每一个处理元件包括处理器核(100)和高速缓存电路(102)。处理器核(100)执行指令程序,并且高速缓存电路(102)高速缓存程序所访问的后台存储器数据。使用写回监控器电路(14)缓存写地址,写地址用于通过处理器核(100)中的至少一部分写数据。程序包括从写回监控器电路(14)中读取缓存的写回地址的命令,以及程序中针对读取缓存的写回地址的命令所读取的写回地址的高速缓存数据无效的命令。因此,部分通过硬件执行以及部分通过使用高速缓存的程序执行高速缓存存储器管理部分。处理核可以是VLIW核,在这种情况下,可以使程序不使用的指令时隙有用于包括针对高速缓存管理的指令。
Description
技术领域
本发明涉及一种具有高速缓存存储器的多处理器系统、一种操作多处理系统的方法、和一种针对这种多处理器系统的编译器。
背景技术
已知,在多处理器系统的各个处理器与共享后台存储器之间设有高速缓存存储器。高速缓存存储器存储与后台存储器中选定地址相关联的数据拷贝。在该系统中,关注重点是保持拷贝之间的一致性。当一个处理器在它的高速缓存存储器或后台存储器中更新针对后台存储器地址的数据时,其他高速缓存存储器中针对该地址的数据的拷贝可以与所更新的数据相一致。
已知,通过高速缓存一致性电路的方式强制执行一致性。高速缓存一致性电路至少在高速缓存存储器之中传送所更新的数据的后台存储器地址。高速缓存存储器具备使用该信息来使不一致数据无效或更新不一致数据的控制器。因此,如果处理器继续寻址该数据,则在无效的情况下,将必须从后台存储器中下载该数据,或者在更新的情况下,加载所更新的数据。因此,每一个处理器中的程序执行可以使用共享数据的后台存储器地址来继续,而不关注不一致性。
然而,高速缓存一致性电路常常是非常复杂的,会引起大量的电路开销和/或处理延时以及甚至设计误差。
发明内容
其中,目的是降低确保高速缓存数据的一致性的使用所需的开销。
提供了一种根据权利要求1所述的多处理系统。该系统包括:后台存储器和多个处理元件,每个处理元件包括处理器核和耦合在处理器核与后台存储器之间的高速缓存电路。在处理器核中可以执行指令程序。在执行期间,将程序所访问的后台存储器数据高速缓存在高速缓存电路中。提供写回监控器电路来缓冲写地址,写地址用于通过处理器核的至少一部分写入数据。处理器核支持程序中的以下命令:从写回监控器电路读取所缓存的写回地址,并且使针对读取所缓冲的写回地址的命令所读取的写回地址的高速缓存数据无效。不同的命令类型(例如不同的操作码)可以用于读取所缓冲的写回地址,并且相应地使数据无效,在备选实施例中,可以使用一种命令类型来使处理器核进行这两种操作。在实施例中,不需要使所有这样的写地址无效。而可以对针对写地址的数据进行更新,例如使用针对该写地址的写数据。监控器电路通过缓冲写地址来支持程序,直到程序中读取写地址的命令到达为止。
在这种方式下,当需要时,可以已极小开销将确保高速缓存一致性的任务转移到程序中。在实施例中,处理器核是VLIW处理器核。这意味着,不会因为将指令周期全部贡献给高速缓存的一致性管理而丢失这些指令周期。
在实施例中,当在程序访问写地址之前由于时间延时引起丢失写地址时,写回监控器电路被配置为来检测溢出条件。这例如通过在溢出的情况下使整个高速缓存无效,使得程序能够提供校正操作。
在实施例中,结合针对写地址的写数据来存储该写地址。这使得处理器核能够执行更新操作,而不是无效操作。
在实施例中,写回监控器电路可以是多个处理元件共享的共享写回监控器电路。备选地,对于单个的处理元件可以使用本地写回监控器电路。该写回监控器电路可以包括作为环形缓冲器而操作的缓冲存储器。在共享写回监控器电路的实施例中,提供多个读指针来指向缓冲存储器中的位置。在备选实施例中,针对处理元件的写回监控器电路可以包括一个关联存储器,该存储器是通过写地址可寻址的。这使得处理器核能够有效地管理选定地址的一致性。
在实施例中,多处理器系统可以包括同步电路,该同步电路被配置为使程序的执行同步。这使得能够在程序中定义不需要命令管理高速缓存一致性的位置。
一种编译器,以用于产生针对处理器核的程序,所述程序具有执行任务的命令和从写回监控器电路中读取所缓冲的写回地址并且使针对写回地址的高速缓存数据无效的命令。
附图说明
使用如下附图,根据示例性的实施例的描述,这些和其他目的和有利方面将变得显而易见。
图1示出了多处理系统。
图1a示出了编译器操作的流程图。
图2示出了另一多处理系统。
图3示出了共享写回监控器电路。
图4示出了具有本地写回监控器电路的多处理系统。
具体实施方式
图1示出了多处理系统,包括:多个处理元件10、后台存储器12、处理元件10与后台存储器12之间的接口11、以及共享写回监控器电路14。在实施例中,处理元件10、后台存储器12和共享写回监控器电路14均可以是单个集成电路的一部分。在另一个实施例中,处理元件10和共享写回监控器电路14可以是单个集成电路的一部分,并且后台存储器12可以在该集成电路外部,该集成电路包括可以访问后台存储器12的接口11。
每个处理元件10包括:VLIW处理器核100和一个高速缓存电路102。已知VLIW处理器核100本身:基本而言,VLIW处理器核100提供指令的执行,每个指令可以包含多个并行命令。每个VLIW处理器核100可以包括多个功能单元、寄存器文件和指令存储器。
每个处理元件10的高速缓存电路102耦合在处理元件10的VLIW处理器核100与后台存储器12之间。高速缓存电路102可以包括高速缓存存储器和控制电路,被布置为测试通过来自于VLIW处理器核100的命令寻址的数据是否存在于高速缓存存储器中,并且根据数据是否存在从高速缓存中返回数据或从写回存储器中加载数据。
每一个高速缓存电路102具有耦合至共享写回监控器电路14的消息输出。每一个处理元件10的高速缓存电路102被配置为将高速缓存电路102从VLIW处理器核100接收到的写事务的地址发送到共享写回监控器电路14。可以使用用于传输高速缓存一致性消息的传统电路,来执行写事务的地址的传输。每一个VLIW处理核100具有耦合至共享写回监控器电路14的输入端口104。输入端口104是指令可访问的。例如,这可以通过将输入端口104映射到VLIW处理器核100的可寻址的寄存器来实现。因为输入端口104是指令可访问的,所以VLIW处理器核100的程序可以包含具有访问输入端口104的命令的指令。
在操作中,VLIW处理器核100的程序执行期间,将高速缓存一致性的强制执行留给程序本身。每一个VLIW处理器核100连续地执行其程序的相应VLIW指令。这些指令包括:从输入端口104读数据的命令以及发送信号到高速缓存电路102使高速缓存行无效的命令。这样的命令通过编译器包括在VLIW处理器核100的程序中。编译器可以是计算机程序产品,该计算机程序产品具有在由可编程计算机执行时生成VILW处理器核100的程序的指令的程序。备选地,编译器可以是被配置为产生VLIW处理器核100的程序的计算机。
图1a示出了编译器操作的流程图。在第一步骤111中,程序的编译器接收必须执行来执行任务的操作的定义。在第二步骤112中,编译器将该定义转换成命令集和与命令中数据依赖性有关的信息。在第三步骤113中,针对必须在命令之间通过操作码数据,对寄存器进行分配,并且编译器将命令置于VLIW指令中。每个VLIW对于相应命令分别具有许多状态信息。虽然最大执行速度的考虑可能会使得期望所有位置中放置用于执行任务的指令,但是数据依赖性所强制的状态经常使得无法避免使得离开位置空缺(vacant)。在这种情况下,编译器通常将在这些位置中放置“不操作”命令(NOP)。
在第四步骤114中,编译器可以提供第二编译通路,其中,为了强制实施程序所需的高速缓存一致性,将从输入端口104读取数据的命令和发送信号到高速缓存电路102使高速缓存行无效的命令放置到空缺位置的至少一部分中。因此,使用VLIW处理器核100用于强制执行高速缓存一致性,不需要开销电路与程序执行并行地自动做这样的操作。这通过下面示例程序进行说明:
指令1=(ADD,NOP,LDU,MUL,NOP)
指令2=(SUB,NOP,ADD,NOP,STR)
指令3=(AND,SUB,NOP,NOP,INV)
指令4=(NOP,SUB,JMP,LDU,NOP)
指令5=(NOP,NOP,NOP,NOP,NOP)
指令6=(INV,ADD,NOP,AND,NOP)
这里,指令的命令由括号之间的一系列助记码(ADD、MUL等)指示。正如所见,在示例中,VLIW处理核100能够每次执行来自单个指令的5个命令。命令包括由LDU指示的命令,,VLIW处理核100通过读取来自于输入端口104的写地址并向寄存器写入结果来响应该命令。命令还包括由INV指示的命令,VLIW处理核100通过从寄存器获取地址和将信号发送到其处理元件的高速缓存电路102使具有所述写地址的高速缓存行无效,来响应该命令。
可以注意到,两对LDU、INV指令可以包括在程序部分中。这里,INV指令对使通过LDU指令对获得的写地址的高速缓存行无效。在实施例中,可以使用INV命令的版本,该INV命令还向处理器核发信号通知执行LDU操作,并且在无效操作中使用LDU操作的结果,或者在寄存器文件中提供针对后续无效操作的数据。然而,使用不同LDU和INV指令类型降低处理开销。
可以使用更新操作代替无效操作。在该实施例中,写回监控器电路14被配置为结合写回地址提供写数据,并且INV指令由利用写数据更新写地址处的数据指令来代替,优选地用禁止向写回监控器电路传输写地址的命令来替换。VLIW处理核可以被配置为响应于程序中的单个LDU命令来读取写地址和写数据。在备选实施例中,可使用程序中的分开命令来分别读取写地址和写数据。这减小了所需的寄存器大小,并且使得编译器根据程序中的位置在快速无效与慢速更新中自由选择。
通过示例,程序部分还包含具有写地址作为操作数的存储指令STR。VLIW处理核100通过结合写地址将数据写入高速缓存电路104中,来响应该指令。在响应中,高速缓存电路102可选地结合写数据将写地址发送到写回监控器电路14。当这些VLIW处理器核100执行LDU指令时,写回监控器电路14将随后提供写地址,并可选择地将写数据提供给其他处理元件的VLIW处理核100的输入端口。可以立即执行写地址到写回监控器电路14的传输以响应写指令,或者可以对传输进行延时,直到VLIW处理核100执行“提交”操作来实现如此的操作。在备选实施例中,写地址的传输与存储指令无关。在这种情况下,可以使用指定一个或多个写地址的VLIW处理器核100的提交命令,来触发写地址到写回监控器电路14的传输。
图2示出了另一多处理器系统。除了图1的多处理系统示出的组成部分以外,该系统包括同步电路20。同步电路20被配置为通过不同的处理元件10,对来调整程序部分的执行的同步。该同步电路后面的模块是第一处理元件10的程序,可以指示,阻止其他处理元件100进入他们的程序部分直到直到第一处理元件10给出释放为止。已知同步本身,然而与共享写回监控器电路14相合,同步电路使得编译器能够选择程序部分,其中可以省略LDU和INV指令,这是因为不会引起不一致。
可以使用同步的任何已知实现。为了实现同步操作,可以对VLIW处理器核100进行配置来执行进入命令(ENT),该命令使VLIW处理器核100得程序执行停止,除非它接收到来自于同步电路20的信号,以指示执行可以继续。此外,VLIW处理器核100可以被配置为执行获取和释放命令(ACQ、REL),这使VLIW处理器核100向同步电路20分别发信号通知,其不必发信号通知执行可以继续和发信号通知执行可以继续。在实施例中,进入和获取指令可以是相同的指令,接收在进入内是固有的。同步电路20可以包含用来存储标志的存储单元,该标志通过ACQ或REL命令来设置或重置。可以通过读取该标志执行ENT命令,或当组合ENT和ACQ命令时执行读取-修改-写入。
下面的示例使用同步的两个VLIW处理器核100的程序部分。
(..ACQ..) (..xxx..)
(..xxx..) (..xxx..)
(..xxx..) (..ENT..)
(..xxx..) 停止
(..REL..) 停止
(..xxx..) (..xxx..)
在示例中,示出了两个VLIW处理器核100的连续指令中的一个命令(xxx指示任意指令)。可见,第一VLIW处理器核100执行获取指令和释放指令,发送信号到同步电路20。第二VLIW处理核100在第一VLIW处理器核100执行获取指令之后执行进入指令,这具有以下效果:同步电路20使得第二VLIW处理器核100停止,直到第一VLIW处理核100已经执行释放指令为止。如果在释放指令之后已经执行了进入指令,不会引起停止。
获取和释放指令可以与仅在这些指令之间的程序部分中进行访问的后台存储器12的一部分相关联。在这种情况下,在获取和释放指令之间的程序部分中,这些指令保证其他VLIW处理核100将不会写入后台存储器12的这个部分。因此,程序部分中在预先已知要一致的处理元件10的高速缓存电路的点之后,不需要将LDU和INV命令包括在程序中。
这使得编译器能够在这些指令之间(可选地,指令之后)省略从共享写回监控器电路14中读取的LDU操作,以确保在程序部分开始之后高速缓存存储器是一致的。例如,编译可以包括以下步骤:在已经被指示为同步块的命令集之前和之后,插入获取和释放命令的步骤,以及仅在获取和释放命令之间的程序部分的初始部分中插入指令,以加载写地址,并使具有这些写地址的高速缓存行无效。类似地,编译器可以仅在获取和释放命令之间的程序部分的最后部分中放置提交指令。
编译器可采用依赖于程序内容的软件高速缓存一致性开销。然而,应该注意到这也可以在没有同步的情况下进行,如果编辑器被配置为在共享内存行的使用方面来分析程序内容,则它以更复杂的编译为代价来确定在程序的哪个位置需要程序高速缓存一致性。
在实施例中,针对单个后台存储器部分,获取、释放和进入命令可以与单个同步标志相关。在另一个实施例中,针对相应后台存储器部分,可以使用多个标志。在这种情况下,获取、释放和进入命令可以包括指示有关标志的操作数,使得仅在所指示的标志不清楚时,才出现停止。
当使用同步时,确保了没有必要响应存储操作立即发送写地址到写回监控器电路14。反而,可在释放命令执行之前或同时执行一个或多个提交命令。
此外,可以使用同步操作来允许编译器确保一次从至多一个处理元件将写地址提供给写回监控器电路14,因此不需要多端口存储器或其他布置来处理多写地址。
图3示出了共享写回检测器电路14的实施例,包括:缓冲存储器30、用于相应处理元件的写指针寄存器32、读指针寄存器34和溢出寄存器36、以及控制电路38。控制电路38被配置为在由写指针寄存器32所指示的位置处将写地址写入到缓冲存储器30中,并且递增写指针寄存器32,当写指针到达最大值时进行循环。控制电路38测试写指针寄存器32的增量是否超过读指针寄存器34中的任意读指针,以及如果是,则控制电路38针对该读指针设置溢出寄存器36。
当接收到来自于处理元件的写回地址的请求时,控制电路38测试是否没有设置针对该处理元件的溢出寄存器36,并且测试针对该处理元件的读指针寄存器34的读指针是否低于写指针。如果是,则控制电路38在读指针所指示的位置处从缓冲存储器30读取写地址,递增读指针寄存器34中的该读指针,并且将写数据返回处理元件。
如果设置了处理元件的溢出寄存器36,则控制电路38返回一个值给处理元件以表示溢出,并且重置溢出寄存器36。处理元件的无效命令使用该值来对它的整个高速缓存电路应用无效。因此,当缓冲存储器30溢出时,可以确保高速缓存的一致性。如果在针对处理元件的读指针寄存器34中的读指针与写指针相等,则控制电路38返回一个值给处理元件,以指示没有新的写地址是可用的。例如可以返回不使用的存储器地址。响应于该值,在该处理元件的处理命令中的无效命令不包括使任意高速缓存行无效。
控制电路38可以是分布式的电路,包括结合读指针寄存器34等提供给相应处理元件的电路部分。备选地,例如可以使用在本地程序控制下执行控制电路38的功能的微控制器。在备选实施例中,可以通过VLIW处理器核100来执行控制电路38的部分功能。例如,当这些VLIW处理器核100读取写地址和/或读取溢出寄存器106时,可以更新它们各自的读指针寄存器104。在另一实施例中,甚至可以省略读指针寄存器和/或溢出寄存器,它们的功能可以通过VLIW处理器核100中以及执行溢出测试的VLIW处理器核100中的软件控制的寄存器来实现。这将防止一些溢出的检测,但是如果程序包括足够的指令来更新高速缓存,这个需求通常不是问题。
代替响应于来自VLIW处理器核100的加载指令报告溢出,写回监控器电路104可以直接将溢出发信号通知给相应的处理元件10的高速缓存电路102。高速缓存电路102继而可以被配置为使响应的所有高速缓存的数据无效。在这种情况下,不需要溢出寄存器并且可以对程序进行简化。然而,使用处理器核命令接收关于溢出的信息以及响应于该命令由程序同时确定的无效具有优势,即在程序中的特定部分对程序无害的溢出不会导致由不必要的无效操作所引起的执行减缓。
在实施例中,控制电路38在写地址的源中结合处理元件的指示来保存写地址。在这种情况下,在返写回地址之前,控制电路38检查写地址是否源自请求该写地址的处理元件。如果是,控制电路38递增针对该处理元件的读指针值,并且针对下一个读指针值重复操作。备选地,处理元件可以被配置或编程为,响应于源自它们本身的写地址避免高速缓存的无效。
在实施例中,VLIW处理器核100可以被配置为支持清除(purge)指令,并且控制器38被配置为接收来自于执行这样的指令的VLIW处理器的指示。在响应中,控制电路38将针对VLIW处理器核100的处理元件的读指针设置为写指针值。在VLIW处理器核100中,可以将这个指令与整个高速缓存的无效相组合。在这种方式下,可以在来自程序的可择点处(例如已知将不再使用当前容量高速缓存处)省略使高速缓存更新的指令。
可选地,缓冲存储器30可以结合写地址来存储写数据,在这种情况下,可以返回该具有写数据的写地址。
图4示出了处理元件10包括本地写回监视器电路40的实施例。在这个实施例中,将写地址从每一个处理元件的高速缓存电路102分配到所有其他处理元件10的本地写回监视器电路40。每一个处理元件10的本地写回监视器电路40都耦合至处理元件的输入端口。
在这个实施例中,本地写回监视器电路40可以是共享写回监视器电路14的简化版,具有单个读指针寄存器和溢出寄存器。可以通过在处理元件提供这样的写数据时禁用写操作,或者通过不将处理元件与它本身本地写回监视器电路40的输入端口连接,来避免从它本身的处理元件中写入写数据。代替盖写溢出时的写地址,当溢出发生时,可将新的写地址简单地写入缓冲区。
备选地,代替该本地写回监视电路使用的环形缓冲器机制,可以使用更为复杂的写地址存储。在一个实施例中,在本地写回监视器电路40中可以使用关联存储器(例如一组关联内存)。这使得能够对具有后台存储器地址的本地写回监视器电路或其部分进行寻址,以便获得以下信息:是否已经更新了地址,或者是否已经更新与地址部分相关联的高速缓存行,以及可选的获得更新后的数据。在这种情况下,LDU指令可以包括这样的地址或地址部分,以使得VLIW处理器核100能够使用其高速缓存中高速缓存行的地址来查询本地写回监视器电路40是否已经接收到在高速缓存行中已接收到的写地址,并且可选地返回更新后的数据。这使得VLIW处理器核100能够使那些缓存行无效或更新。
当关联存储器40溢出时(例如当针对写地址找不到剩余空间时),本地写回监视器电路40记录上述溢出,并随后例如在VLIW处理器核100所执行的命令的控制下使高速缓存电路104的所有内容都无效。可以支持清除指令,本地写回监视器电路40被配置为响应于清除指令清空关联内存。
在实施例中,可以通过使用缓存行的数据更新来完全实现无效。这具有必须为高速行中的各个单独地址保持更多信息,然而就会使得高速缓存行完全无效变得没有必要,并且使得分开的无效命令变得没有必要,通过更新来完全实现无效。
尽管已经示出了具有VLIW处理器核的实施例,该实施例具有可使用针对指令中命令不使用位置来管理高速缓存一致性的优点,但是应理解,也可以将基于指令的高速缓存一致性管理提供给其他类型处理器核。在任何处理器中,可以通过使用同步操作,使高速缓存一致性中所涉及的指令的数目有限,使得在获取和释放指令前后,有限程序部分中仅需要针对高速缓存一致性需求的指令。在标量或流水线处理器情况下,可以用指令来填充空指令发布时隙或与流水线阶段,以管理高速缓存一致性。并非所有的处理元件都需要相同的类型。可以增加不使用高速缓存的处理元件。在这种情况下,这样的处理元件仅向写回监视器电路或监视电路提供输入。
高速缓存电路102可以被配置为执行其他高速缓存管理功能,比如选择要收回的高速缓存行、从后台存储器12中取回新的高速缓存行,以及写回或写到后台存储器12中等等。备选地,可以在VLIW处理器核100的命令的控制下,执行所有这些功能中的一部分。如所描述,高速缓存电路12至少被配置为响应于来自VLIW处理器核的信号,执行这对特定的高速缓存行的无效命令。可选地,高速缓存电路102可以被配置为,响应于VLIW处理器核100引起的指令的执行,提供与所高速缓存的后台地址有关的信息。
正如将理解的,所示的电路使用使用专用于高速缓存一致性的硬件和处理器核执行的软件的混合操作,来管理高速缓存一致性。保持该专门的硬件是简单的。主要功能是,在程序执行期间自主缓冲写地址,并且当处理器核所执行的指令调用这些写地址时提供些地址。避免使用更复杂的硬件。将高速缓存一致性的职责移交给了编译器,这使得能够使用程序中的自由空间和/或与程序中需要高速缓存一致性的点有关的信息,来实现具有最小的执行开销的高速缓存一致性。因此,不能自发的保证一致性,而是像常规的高速缓存系统一样,留给程序来实现。当检测到溢出条件时,程序甚至不需要保证它处理所有的缓存更新。
根据对附图、公开以及所附权利要求的研究,本领域技术人员在实践所要求保护的发明时,可以理解和实现所公开的实施例的其他变型。在权利要求中,词语“包括”不排除其他的元件或步骤。单个处理器或其他单元可以实现在权利要求中所列举的若干项的功能。事实仅在于,在彼此不同的从属权利要求中引述的特定措施并不指示使用这些措施的组合是不利的。计算机程序可以在适合的介质例如,与其他硬件一起提供或作为其他硬件的一部分来提供的光存储介质或固态介质)上进行存储和/或分配,但是也可以以其他形式分布,例如,经由互联网或其他有线或无线的电信系统。在权利要求中任何参考标记不能解释为对范围进行限制。
Claims (15)
1.一种多处理器系统,包括:
-连接至后台存储器(12)的接口(11);
-多个处理元件(10),每个处理元件(10)包括处理器核(100)和高速缓存电路(102),高速缓存电路(102)耦合在处理器核(100)与接口(11)之间,用于高速缓存由处理器核(100)的程序访问的后台存储器数据;
-写回监控器电路(14),被配置为对通过至少一部分处理器核(100)写入数据所用的写地址进行缓冲,处理元件(10)中至少一个处理元件(10)的处理器核(100)被配置为支持来自程序的从写回监控器电路(14)读取写回地址、以及使所述至少一个处理元件的高速缓存电路(102)中针对写回地址的高速缓存数据无效的命令。
2.根据权利要求1所述的多处理器系统,其中,处理元件(10)中的所述至少一个处理元件(10)的处理器核(100)是VLIW处理器核,被配置为执行指令,每一个指令包括彼此并行执行的多个命令,这些命令包括读取写回地址和使高速缓存数据无效的命令。
3.根据权利要求1所述的多处理器系统,其中,写回监控器电路(14)被配置为,当在程序读取丢失的写地址之前从缓冲器中移除所述丢失的写地址时,或者未将所述丢失的写地址写入到缓冲器中时,检测到溢出条件,并且向处理器核发信号通知所述溢出条件。
4.根据权利要求3所述的多处理器系统,其中,处理元件中的所述至少一个处理元件的处理器核(100)被配置为,响应于溢出条件的所述信号通知,应用使高速缓存电路(102)中的所有高速缓存数据无效的命令。
5.根据权利要求1所述的多处理器系统,其中,写回监控器电路(14)被配置为结合针对每个写地址的写数据来存储每个写地址。
6.根据权利要求1所述的多处理器系统,其中,处理元件中的所述至少一个处理元件的处理器核(100)包括:具有程序的程序存储器,所述程序包括使用后台存储器地址访问高速缓存电路(102)的命令、以及读取写回地址的命令、和使针对所述读取写回地址的命令所读取的写回地址的高速缓存数据无效的命令。
7.根据权利要求1所述的多处理器系统,其中,写回监控器电路(14)由多个处理元件(10)共享。
8.根据权利要求7所述的多处理器系统,其中,写回监控器电路(14)包括作为环形缓冲器操作的缓冲存储器,并且为处理元件(10)中的相应处理元件提供指向缓冲存储器中的位置的读指针。
9.根据权利要求1所述的多处理器系统,包括:多个写回监控器电路(40),每一个写回监控器电路(40)用于处理元件(10)中的相应一个。
10.根据权利要求9所述的多处理器系统,其中,多个写回监控器电路(40)中至少一个包括:写地址可寻址的关联存储器。
11.根据权利要求9所述的多处理器系统,其中,多个写回监控器电路(40)中的至少一个包括:作为环形缓冲器操作的缓冲存储器。
12.根据权利要求1所述的多处理器系统,包括:同步电路(20),被配置为,响应于处理元件中的至少一个的程序中的同步命令,停止所述程序的执行,直到满足同步条件为止。
13.一种操作多处理器系统的方法,所述多处理器系统具有后台存储器和多个处理元件(10),每个处理元件(10)包括处理器核(10)和耦合在处理器核(100)与后台存储器(102)之间的高速缓存电路(102),所述方法包括:
-执行处理器核(100)中的指令程序;
-将程序访问的后台存储器数据高速缓存在高速缓存电路(102)中;
-使用写回监控器电路(14)来缓冲通过至少一部分处理器核(100)写入数据所用的写地址;
-执行来自程序的从写回监控器电路(104)读取所缓冲的写回地址的命令;以及
-执行来自程序的使针对所述读取所缓冲的写回地址的命令所读取的写回地址的高速缓存数据无效的命令。
14.一种多处理系统中为处理器核(100)生成程序的编译器,所述编译器被配置为:
-接收任务的定义;
-产生具有实现任务的命令的程序;
-将从写回监控器电路读取所缓冲的写回地址的命令、以及使针对所述读取所缓冲的写回地址的命令所读取的写回地址的高速缓存数据无效的命令添加至所述程序。
15.根据权利要求14所述的编译器,其中,处理器核(100)是具有指令的VLIW处理器核,每一个指令包含针对命令的多个位置,编译器被配置为将实现任务的命令、和从写回监控器电路读取所缓冲的写回地址以及使针对所述读取所缓冲的写回地址的命令所读取的写回地址的高速缓存数据无效的命令混合在指令中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP08158440.1 | 2008-06-17 | ||
EP08158440 | 2008-06-17 | ||
PCT/IB2009/052441 WO2009153703A1 (en) | 2008-06-17 | 2009-06-09 | Multiprocessor system with mixed software hardware controlled cache management |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102067091A true CN102067091A (zh) | 2011-05-18 |
Family
ID=40973222
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009801228296A Pending CN102067091A (zh) | 2008-06-17 | 2009-06-09 | 具有混合软硬件控制的高速缓存管理的多处理器系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8578104B2 (zh) |
EP (1) | EP2304571A1 (zh) |
CN (1) | CN102067091A (zh) |
WO (1) | WO2009153703A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103488531A (zh) * | 2013-09-26 | 2014-01-01 | 中国船舶重工集团公司第七一六研究所 | 基于多核处理器和fpga的软硬件混合实时任务调度方法 |
CN103678167A (zh) * | 2012-09-12 | 2014-03-26 | 想象力科技有限公司 | 动态可调整大小的循环缓冲区 |
CN108470007A (zh) * | 2012-01-26 | 2018-08-31 | 内存技术有限责任公司 | 借助非易失性大容量存储器系统提供高速缓冲存储器移动的设备和方法 |
CN111213062A (zh) * | 2017-09-14 | 2020-05-29 | Bae系统控制有限公司 | 使用多核处理器减轻共模计算故障 |
CN114297100A (zh) * | 2021-12-28 | 2022-04-08 | 摩尔线程智能科技(北京)有限责任公司 | 用于缓存的写策略调整方法、缓存装置及计算设备 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI414994B (zh) * | 2009-09-24 | 2013-11-11 | Ind Tech Res Inst | 可重組態處理裝置及其系統 |
US9501332B2 (en) | 2012-12-20 | 2016-11-22 | Qualcomm Incorporated | System and method to reset a lock indication |
US20150074070A1 (en) * | 2013-09-09 | 2015-03-12 | Yahoo! Inc. | System and method for reconciling transactional and non-transactional operations in key-value stores |
CN103678013A (zh) * | 2013-12-18 | 2014-03-26 | 哈尔滨工业大学 | 多核处理器操作系统级进程的冗余检测系统 |
US11379262B2 (en) * | 2015-05-26 | 2022-07-05 | Blaize, Inc. | Cascading of graph streaming processors |
US10282302B2 (en) * | 2016-06-30 | 2019-05-07 | Hewlett Packard Enterprise Development Lp | Programmable memory-side cache management for different applications |
US20210182065A1 (en) * | 2019-12-16 | 2021-06-17 | Micron Technology, Inc. | Apparatuses and methods for in-line no operation repeat commands |
CN115827504B (zh) * | 2023-01-31 | 2023-07-11 | 南京砺算科技有限公司 | 多核心图形处理器的数据存取方法、图形处理器及介质 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US713696A (en) * | 1901-12-18 | 1902-11-18 | Spalding Coleman | Clock striking mechanism. |
US5347648A (en) * | 1990-06-29 | 1994-09-13 | Digital Equipment Corporation | Ensuring write ordering under writeback cache error conditions |
US6049866A (en) * | 1996-09-06 | 2000-04-11 | Silicon Graphics, Inc. | Method and system for an efficient user mode cache manipulation using a simulated instruction |
GB9704542D0 (en) * | 1997-03-05 | 1997-04-23 | Sgs Thomson Microelectronics | A cache coherency mechanism |
US6094709A (en) * | 1997-07-01 | 2000-07-25 | International Business Machines Corporation | Cache coherence for lazy entry consistency in lockup-free caches |
GB9806184D0 (en) * | 1998-03-23 | 1998-05-20 | Sgs Thomson Microelectronics | A cache coherency mechanism |
US6665767B1 (en) * | 1999-07-15 | 2003-12-16 | Texas Instruments Incorporated | Programmer initiated cache block operations |
JP2001297035A (ja) * | 2000-04-11 | 2001-10-26 | Hitachi Ltd | 情報処理装置 |
US6651143B2 (en) * | 2000-12-21 | 2003-11-18 | International Business Machines Corporation | Cache management using a buffer for invalidation requests |
US6934814B2 (en) * | 2002-11-05 | 2005-08-23 | Newisys, Inc. | Cache coherence directory eviction mechanisms in multiprocessor systems which maintain transaction ordering |
US7136969B1 (en) | 2003-06-17 | 2006-11-14 | Emc Corporation | Using the message fabric to maintain cache coherency of local caches of global memory |
KR20060130120A (ko) * | 2004-03-24 | 2006-12-18 | 마쯔시다덴기산교 가부시키가이샤 | 캐시 메모리 및 그 제어 방법 |
JP2009053820A (ja) * | 2007-08-24 | 2009-03-12 | Nec Electronics Corp | 階層型キャッシュメモリシステム |
US8392663B2 (en) * | 2007-12-12 | 2013-03-05 | Mips Technologies, Inc. | Coherent instruction cache utilizing cache-op execution resources |
CN102067090A (zh) * | 2008-06-17 | 2011-05-18 | Nxp股份有限公司 | 具有高速缓存电路的处理电路,检测高速缓存行中更新地址的游程 |
-
2009
- 2009-06-09 CN CN2009801228296A patent/CN102067091A/zh active Pending
- 2009-06-09 US US12/999,450 patent/US8578104B2/en active Active
- 2009-06-09 WO PCT/IB2009/052441 patent/WO2009153703A1/en active Application Filing
- 2009-06-09 EP EP09766240A patent/EP2304571A1/en not_active Withdrawn
Non-Patent Citations (1)
Title |
---|
IBM CORP.: "CACHE TOUCH STACK", 《IBM TECHNICAL DISCLOSURE BULLETIN》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108470007A (zh) * | 2012-01-26 | 2018-08-31 | 内存技术有限责任公司 | 借助非易失性大容量存储器系统提供高速缓冲存储器移动的设备和方法 |
CN108470007B (zh) * | 2012-01-26 | 2022-06-17 | 内存技术有限责任公司 | 借助非易失性大容量存储器系统提供高速缓冲存储器移动的设备和方法 |
CN103678167A (zh) * | 2012-09-12 | 2014-03-26 | 想象力科技有限公司 | 动态可调整大小的循环缓冲区 |
CN103678167B (zh) * | 2012-09-12 | 2019-02-12 | 美普思技术有限责任公司 | 动态可调整大小的循环缓冲区 |
CN103488531A (zh) * | 2013-09-26 | 2014-01-01 | 中国船舶重工集团公司第七一六研究所 | 基于多核处理器和fpga的软硬件混合实时任务调度方法 |
CN103488531B (zh) * | 2013-09-26 | 2016-08-17 | 中国船舶重工集团公司第七一六研究所 | 一种基于多核处理器和fpga的软硬件混合实时任务调度方法 |
CN111213062A (zh) * | 2017-09-14 | 2020-05-29 | Bae系统控制有限公司 | 使用多核处理器减轻共模计算故障 |
CN114297100A (zh) * | 2021-12-28 | 2022-04-08 | 摩尔线程智能科技(北京)有限责任公司 | 用于缓存的写策略调整方法、缓存装置及计算设备 |
Also Published As
Publication number | Publication date |
---|---|
US20110093661A1 (en) | 2011-04-21 |
EP2304571A1 (en) | 2011-04-06 |
US8578104B2 (en) | 2013-11-05 |
WO2009153703A1 (en) | 2009-12-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102067091A (zh) | 具有混合软硬件控制的高速缓存管理的多处理器系统 | |
US9513904B2 (en) | Computer processor employing cache memory with per-byte valid bits | |
KR100593582B1 (ko) | 캐시 메모리에서의 프리페치 관리 장치 | |
US8838906B2 (en) | Evict on write, a management strategy for a prefetch unit and/or first level cache in a multiprocessor system with speculative execution | |
US8868837B2 (en) | Cache directory lookup reader set encoding for partial cache line speculation support | |
US8234489B2 (en) | Set of system configuration registers having shadow register | |
US7360069B2 (en) | Systems and methods for executing across at least one memory barrier employing speculative fills | |
US5696937A (en) | Cache controller utilizing a state machine for controlling invalidations in a network with dual system busses | |
US7073026B2 (en) | Microprocessor including cache memory supporting multiple accesses per cycle | |
US7653788B2 (en) | Cache coherency in a shared-memory multiprocessor system | |
US20130205096A1 (en) | Forward progress mechanism for stores in the presence of load contention in a system favoring loads by state alteration | |
US20080016279A1 (en) | Data Processing System, Processor and Method of Data Processing in which Local Memory Access Requests are Serviced by State Machines with Differing Functionality | |
JP3681647B2 (ja) | キャッシュメモリシステム装置 | |
US20100241812A1 (en) | Data processing system with a plurality of processors, cache circuits and a shared memory | |
CN106897230B (zh) | 用于处理原子更新操作的装置和方法 | |
US20070288694A1 (en) | Data processing system, processor and method of data processing having controllable store gather windows | |
US20210011729A1 (en) | Managing Commit Order for an External Instruction Relative to Queued Instructions | |
GB2491350A (en) | Load and store exclusive instructions for data access conflict resolution in multiprocessor systems with separate processor caches | |
US6202126B1 (en) | Victimization of clean data blocks | |
US20070016730A1 (en) | Cache consistency in a multiprocessor system with shared memory | |
KR20060102565A (ko) | 라이트 백 캐시 내에서 동시 발생하는 스누프 푸시 또는스누프 킬 연산중에 라이트 백 연산을 취소하는 시스템 및방법 | |
US8266381B2 (en) | Varying an amount of data retrieved from memory based upon an instruction hint | |
CN101589373A (zh) | 硬件触发的数据高速缓存行预分配 | |
CN115176237B (zh) | 具有混合回写和透写的数据高速缓存 | |
US9792213B2 (en) | Mitigating busy time in a high performance cache |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20110518 |