CN101689143B - 高速缓存控制装置以及控制方法 - Google Patents
高速缓存控制装置以及控制方法 Download PDFInfo
- Publication number
- CN101689143B CN101689143B CN2007800533945A CN200780053394A CN101689143B CN 101689143 B CN101689143 B CN 101689143B CN 2007800533945 A CN2007800533945 A CN 2007800533945A CN 200780053394 A CN200780053394 A CN 200780053394A CN 101689143 B CN101689143 B CN 101689143B
- Authority
- CN
- China
- Prior art keywords
- thread
- access request
- situation
- atomic instructions
- under
- 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 - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 79
- 230000007717 exclusion Effects 0.000 claims description 37
- 238000010586 diagram Methods 0.000 description 66
- 238000007689 inspection Methods 0.000 description 30
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 6
- 238000012423 maintenance Methods 0.000 description 3
- 241001269238 Data Species 0.000 description 2
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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
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)
- Multi Processors (AREA)
Abstract
为了控制对多个线程共享的高速缓存的访问请求,构成为具备存储与各线程对应设置的标记的存储单元,在线程进入原子指令的执行的情况下,在存储单元存储的标记中写入规定的值,并且在该原子指令结束的情况下写入与该值不同的规定的值,由此表示线程是否正在执行原子指令。并且,在从某个线程发出访问请求的情况下,通过参照存储单元的标记值,判断与该线程不同的其他线程是否正在执行原子指令,在判断为其他线程正在执行原子指令的情况下,使访问请求待机。据此,能够通过简单的结构实现在处理原子指令时需要的互斥控制处理。
Description
技术领域
本发明涉及SMT(Simultaneous Multi Thread,同步多线程)方式的处理器使用的高速缓存控制装置以及控制方法,特别地,涉及在SMT方式的处理器中通过简单的结构来实现处理CAS(Compare And Swap,比较并交换)指令等原子指令时需要的互斥控制处理的高速缓存控制装置以及控制方法。
SMT方式的处理器是同时执行多个线程的处理器。在该SMT方式的处理器中,多个线程共享高速缓存,因此需要构造与单线程方式的处理器中使用的高速缓存控制不同结构的高速缓存控制。
背景技术
图17中图示单线程方式的处理器中使用的高速缓存控制的结构。
在此,图中所示的1000是指令控制部,2000是高速缓存控制部,2001是高速缓存RAM,2002是读取端口(Fetch Port),2003是存储端口(Store Port),2004是与读取端口2002对应而设置的选择电路,2005是与存储端口2003对应而设置的选择电路,2006是与读取端口2002对应而设置的检查电路,2007是与存储端口2003对应而设置的检查电路,2008是与读取端口2002以及存储端口2003对应而设置的检查电路,2009是用于输出请求的检查电路,2010是逻辑与电路,2011是优先控制电路。
如图17所示,来自指令控制部1000的存储器访问请求暂时被保持在位于高速缓存控制部2000的具有多个项(entry)的读取端口2002中。
对读取端口2002的各项按照指令顺序分配访问请求,但是,在以乱序处理存储器访问的处理器中,以不同顺序方式读出并进行高速缓存访问处理,高速缓存访问处理结束后,该读取端口2002的项被释放。
在有效的读取端口2002的项中,最旧的项由未图示的控制电路生成的FP-TOQ(Fetch-Port-Top-Of-Queue,读取端口队列头)指示。
此外,在来自指令控制部1000的存储器访问请求是存储请求的情况下,该请求在保持在读取端口2002中的同时,还保持在存储端口2003中。
在处理存储请求时,如果在地址转换处理或访问请求的顺序性保证等方面没有问题,则在该时刻释放读取端口2002的项,随后存储端口2003管理对高速缓存RAM 2001的存储处理,存储处理结束后,该存储端口2003的项被释放。
在有效的存储端口2003的项中,最旧的项由未图示的控制电路生成的SP-TOQ(Store-Port-Top-Of-Queue,存储端口队列头)指示。
作为来自指令控制部1000的存储器访问请求的一个,有基于CAS指令等的原子性加载/存储请求(以下称作读取与存储请求)。
在该读取与存储请求的从执行加载到存储为止的期间内,必须禁止由其他指令进行的该数据的参照和更新。
因此,在读取与存储请求访问数据A时,需要设置如下条件:
(a-1)读取与存储请求的处理被禁止,直到在该处理之前的访问数据A的请求的处理全部结束为止;
(a-2)在读取与存储请求后面访问数据A的请求的处理被禁止,直到读取与存储请求的处理结束为止;
(b)在读取与存储请求的处理从开始到结束的期间内,禁止从高速缓存RAM 2001输出数据A,
由此,利用条件(a-1)、(a-2)保证对读取与存储对象数据的处理器内的互斥控制,利用条件(b)保证多处理器结构中的处理器之间的互斥控制。
因此,使用检查电路2006、2007,如图18以及图19的流程图所示那样,如果保持读取与存储请求的读取端口2002和存储端口2003的项是FP-TOQ和SP-TOQ,则允许开始该读取与存储请求的处理,由此保证条件(a-1)。
在此,在图18的流程图中,假设通过选择电路2004、2005的选择处理,处理在读取端口2002的FP#m的项(第m个项)以及存储端口2003的SP#n的项(第n个项)中保持的访问请求(request#m=request#n)。
接着,使用检查电路2008,如图18以及图20的流程图所示那样,在从FP-TOQ的项到保持该访问请求的读取端口2002的项之间存在读取与存储请求的项的情况下禁止开始读取与存储请求以外的访问请求的处理,在虽然不存在这种项、但是与存储端口2003中保持的在先的存储请求的对象数据一致的情况下进行禁止开始读取与存储请求以外的访问请求的处理,由此保证条件(a-2)。
并且,使用检查电路2009,如图21的流程图所示那样,在SP-TOQ的项是读取与存储请求的情况下,禁止开始从高速缓存RAM 2001输出数据的处理,由此保证条件(b)。
按照这种结构,在单线程方式的处理器中,实现在读取与存储指令的执行中要求的互斥控制处理。
另一方面,在SMT方式的处理器中需要进行线程间的互斥控制,因此不能原样利用以此方式构成的单线程方式的处理器中使用的高速缓存控制。
但是实际情况是,迄今为止还没有公开在安装SMT方式的处理器的情况下,通过怎样的结构来实现在读取与存储指令的执行中要求的互斥控制处理。
因此,作为制造商,在安装SMT方式的处理器的情况下,需要构造实现在处理CAS指令等读取与存储指令时需要的互斥控制处理的新的结构的高速缓存控制技术。
在此,作为与本发明有关的技术,下述专利文献1中记载了在SMT方式的处理器中,实现保证线程间共享的数据的读出以及写入的执行顺序的一致性的发明。
专利文献1:WO2004/068361号公报
发明内容
如前所述,在SMT方式的处理器中,需要线程间的互斥控制,因此不能原样利用以此方式构成的单线程方式的处理器中使用的高速缓存控制。
但是实际情况是,迄今为止还没有公开在安装SMT方式的处理器的情况下,通过怎样的结构来实现在读取与存储指令的执行中要求的互斥控制处理。
因此,作为制造商,在安装SMT方式的处理器的情况下,需要构造实现在处理CAS指令等读取与存储指令时需要的互斥控制处理的新的结构的高速缓存控制技术。
本发明是鉴于上述情况而完成的,其目的是提供一种新的高速缓存控制技术,在SMT方式的处理器中,该技术能够通过简单的结构实现处理CAS指令(Compare And Swap,比较并交换指令)等不可分地执行多个处理的原子指令时需要的互斥控制处理。
[i]第一结构
为了实现上述目的,本发明的高速缓存控制装置为了控制对同时执行的多个线程共享的高速缓存的访问请求,以包括如下单元的方式构成:(1)存储单元,存储与各线程对应设置的、在该线程进入原子指令(例如,原子加载存储指令等原子指令)的执行的情况下表示规定的值、在该原子指令结束的情况下表示与该值不同的规定的值的标记;(2)判断单元,在从某个线程发出访问请求的情况下,通过参照存储单元存储的标记值,来判断与该线程不同的其他线程是否正在执行原子指令;(3)执行单元,在判断单元判断为其他线程正在执行原子指令的情况下,执行使访问请求待机的处理;(4)指示单元,在存在从高速缓存输出数据的请求的情况下,通过参照存储单元存储的标记值,判断全部线程是否都不在执行原子指令,在判断为全部线程都不在执行该指令的情况下,指示执行从高速缓存输出数据的处理;以及(5)线程内互斥控制单元,通过参照存储单元存储的标记值,来执行线程内的对原子指令的互斥控制。
在以此方式构成时,进一步以包括如下单元的方式构成:(6)第二存储单元,存储表示最后进行了访问请求的处理的线程是哪个线程的信息;(7)第二判断单元,在从某个线程发出与原子指令有关的访问请求的情况下,判断是否存在关于该线程以外的线程的通过待机处理而待机的访问请求;(8)决定单元,在第二判断单元判断为存在通过待机处理而待机的访问请求的情况下,通过参照第二存储单元存储的信息确定最后进行了访问请求的处理的线程,以该确定的线程以外的线程发出的访问请求优先的方式,决定是选择从某个线程发出的与原子指令有关的访问请求,还是选择该待机的访问请求;(9)第三判断单元,在从某个线程发出与非原子指令(例如,不是原子加载存储指令的指令)有关的访问请求的情况下,判断是否存在关于该线程以外的线程的与原子指令有关的访问请求的发出请求;以及(10)第二决定单元,在第三判断单元判断为存在与原子指令有关的访问请求的发出请求的情况下,通过参照所述第二存储单元存储的信息确定最后进行了访问请求的处理的线程,以该确定的线程以外的线程发出的访问请求优先的方式,决定是选择从某个线程发出的与非原子指令有关的访问请求,还是选择该存在发出请求的与原子指令有关的访问请求。
在以上述方式构成的本发明的高速缓存控制装置中,在线程进入原子指令的执行的情况下,在存储单元存储的相应标记中写入规定的值,并且在结束该原子指令的情况下写入与该值不同的规定的值,由此,各个标志表示与其对应的线程是否正在执行原子指令。
在接受该标记值的表示并从某个线程发出访问请求的情况下,通过参照存储单元存储的标记值,判断与该线程不同的其他线程是否正在执行原子指令,在判断为其他线程正在执行原子指令的情况下,使访问请求待机。
并且,在存在从高速缓存输出数据的请求的情况下,通过参照存储单元存储的标记值,判断全部线程是否都不在执行原子指令,在判断为全部线程都不在执行该指令的情况下,指示执行从高速缓存输出数据的处理。即,在一些线程正在执行原子指令的情况下,使从高速缓存输出数据的处理待机。
并且,在需要执行线程内的关于原子指令的互斥控制的情况下,通过参照存储单元存储的标记值,执行该互斥控制。
在采用该结构时,如果特定的一个线程连续执行原子指令,则发生该线程以外的线程的访问请求连续待机这样的不理想的情况。
因此,构成为,包括第二存储单元,用于存储表示最后进行了访问请求的处理的线程是哪个线程的信息。
并且,在从某个线程发出与原子指令有关的访问请求的情况下,在存在关于该线程以外的线程的通过待机处理而待机的访问请求的情况下,通过参照第二存储单元存储的信息确定最后进行了访问请求的处理的线程,并以该确定的线程以外的线程发出的访问请求优先的方式,决定是选择从某个线程发出的与原子指令有关的访问请求,还是选择该待机的访问请求。
在采用该结构时,在从某个线程发出与非原子指令有关的访问请求的情况下,对于该线程以外的线程,在存在与原子指令有关的访问请求的发出请求的情况下,通过参照第二存储单元存储的信息确定最后进行了访问请求的处理的线程,并以该确定的线程以外的线程发出的访问请求优先的方式,决定是选择从某个线程发出的与非原子指令有关的访问请求,还是选择该存在发出请求的与原子指令有关的访问请求。
[ii]第二结构
为了实现上述目的,本发明的高速缓存控制装置为了控制对同时执行的多个线程共享的高速缓存的访问请求,以包括如下单元的方式构成:(1)存储单元,存储与各线程对应设置的、在该线程进入原子指令(例如原子加载存储指令等原子指令)的执行的情况下表示规定的值、在该原子指令结束的情况下表示与该值不同的规定的值的标记,并且,在该线程进入原子指令的执行的情况下,存储该原子指令的访问对象的地址信息;(2)判断单元,在从某个线程发出访问请求的情况下,通过参照存储单元存储的标记值,判断与该线程不同的其他线程是否正在执行原子指令,并且,在判断为正在执行原子指令的情况下,通过参照存储单元存储的地址信息,判断该正在执行的原子指令的访问对象的地址信息与该访问请求指定的地址信息是否一致;(3)执行单元,在判断单元判断为其他线程正在执行原子指令、并且判断为该正在执行的原子指令的访问对象的地址信息与访问请求指定的地址信息一致的情况下,执行使访问请求待机的处理;(4)指示单元,在存在从高速缓存输出数据的请求的情况下,通过参照存储单元存储的标记值以及地址信息,判断全部线程是否都不在执行以与输出请求指定的地址信息一致的地址信息为访问对象的原子指令,在判断为全部线程都不在执行该指令的情况下,指示执行从高速缓存输出数据的处理;以及(5)线程内互斥控制单元,通过参照存储单元存储的标记值以及地址信息,来执行线程内的对原子指令的互斥控制。
在以此方式构成时,进一步以包括如下单元的方式构成:(6)第二存储单元,存储表示最后进行了访问请求的处理的线程是哪个线程的信息;(7)第二判断单元,在从某个线程发出与原子指令有关的访问请求的情况下,判断是否存在关于该线程以外的线程的通过待机处理而待机的访问请求;(8)决定单元,在第二判断单元判断为存在通过待机处理而待机的访问请求的情况下,通过参照第二存储单元存储的信息确定最后进行了访问请求的处理的线程,以该确定的线程以外的线程发出的访问请求优先的方式,决定是选择从某个线程发出的与原子指令有关的访问请求,还是选择该待机的访问请求;(9)第三判断单元,在从某个线程发出与非原子指令(例如,不是原子加载存储指令的指令)有关的访问请求的情况下,判断是否存在关于该线程以外的线程的与原子指令有关的访问请求的发出请求;以及(10)第二决定单元,在第三判断单元判断为存在与原子指令有关的访问请求的发出请求的情况下,通过参照第二存储单元存储的信息确定最后进行了访问请求的处理的线程,以该确定的线程以外的线程发出的访问请求优先的方式,决定是选择从某个线程发出的与非原子指令有关的访问请求,还是选择该存在发出请求的与原子指令有关的访问请求。
在以上述方式构成的本发明的高速缓存控制装置中,在线程进入原子指令的执行的情况下,在存储单元存储的相应标记中写入规定的值,并且在存储单元中写入该原子指令的访问对象的地址信息,并且在结束该原子指令的情况下在该标记中写入与进入原子指令的执行的情况下写入的值不同的规定的值,由此,各个标志表示与其对应的线程是否正在执行原子指令,并且,在正在执行原子指令的情况下,存储访问对象的地址信息。
在接受该标记值的表示与地址信息的存储,并从某个线程发出访问请求的情况下,通过参照存储单元存储的标记值,判断与该线程不同的其他线程是否正在执行原子指令,并且,在判断为正在执行原子指令的情况下,通过参照存储单元存储的地址信息,来判断该正在执行的原子指令的访问对象的地址信息与该访问请求指定的地址信息是否一致,基于该判断结果,在判断为其他线程正在执行原子指令,并且判断为该正在执行的原子指令的访问对象的地址信息与访问请求指定的地址信息一致的情况下,使访问请求待机。
并且,在存在从高速缓存输出数据的请求的情况下,通过参照存储单元存储的标记值以及地址信息,来判断全部线程是否都不在执行以与输出请求指定的地址信息一致的地址信息为访问对象的原子指令,并在判断为全部线程都不在执行该指令的情况下,指示执行从高速缓存输出数据的处理。即,在任意一个线程正在执行这种原子指令的情况下,使从高速缓存输出数据的处理待机。
并且,在需要执行线程内的对原子指令的互斥控制的情况下,通过参照存储单元存储的标记值以及地址信息,来执行该互斥控制。
在采用该结构时,如果特定的一个线程连续执行原子指令,则发生该线程以外的线程的访问请求连续待机这样的不理想的情况。
因此,构成为,包括第二存储单元,用于存储表示最后进行了访问请求的处理的线程是哪个线程的信息。
并且,在从某个线程发出与原子指令有关的访问请求的情况下,对于该线程以外的线程,在存在通过待机处理而待机的访问请求的情况下,通过参照第二存储单元存储的信息来确定最后进行了访问请求的处理的线程,并以该确定的线程以外的线程发出的访问请求优先的方式,决定是选择从某个线程发出的与原子指令有关的访问请求,还是选择该待机的访问请求。
在采用该结构时,在从某个线程发出与非原子指令有关的访问请求的情况下,对于该线程以外的线程,在存在与原子指令有关的访问请求的发出请求的情况下,通过参照第二存储单元存储的信息来确定最后进行了访问请求的处理的线程,并以该确定的线程以外的线程发出的访问请求优先的方式,决定是选择从某个线程发出的与非原子指令有关的访问请求,还是选择该存在发出请求的与原子指令有关的访问请求。
如上述说明的那样,根据本发明,在SMT方式的处理器中,能够通过简单的结构实现处理CAS指令等原子指令时需要的互斥控制处理。
附图说明
图1是本实施例适用的CPU的结构图。
图2是具备本实施例的一级高速缓存控制部的一实施例。
图3是优先控制电路执行的流程图。
图4是优先控制电路执行的流程图。
图5是优先控制电路执行的流程图。
图6是优先控制电路执行的流程图。
图7是优先控制电路执行的流程图。
图8是最后处理线程表示信号控制电路的说明图。
图9是优先控制电路执行的流程图。
图10是具备本实施例的一级高速缓存控制部的其他实施例。
图11是优先控制电路执行的流程图。
图12是优先控制电路执行的流程图。
图13是优先控制电路执行的流程图。
图14是优先控制电路执行的流程图。
图15是优先控制电路执行的流程图。
图16是优先控制电路执行的流程图。
图17是单线程方式的处理器中使用的高速缓存控制的结构图。
图18是单线程方式的处理器中使用的高速缓存控制处理的流程图。
图19是单线程方式的处理器中使用的高速缓存控制处理的流程图。
图20是单线程方式的处理器中使用的高速缓存控制处理的流程图。
图21是单线程方式的处理器中使用的高速缓存控制处理的流程图。
符号说明
10CPU
20系统控制总线
100指令/运算控制部
200一级高速缓存控制部
201高速缓存RAM
202读取端口
203存储端口
204选择电路
205选择电路
206选择电路
207选择电路
208优先控制电路
209FS指令状态信息存储部
210最终处理线程表示信号控制电路
300二级高速缓存控制部
301高速缓存RAM
具体实施方式
以下,按照实施方式详细说明本实施例。
图1中图示本实施例适用的CPU 10的结构。
本实施例适用的CPU 10包括:指令/运算控制部100,发出指令的取出请求或运算数据的反映请求;一级高速缓存控制部200,具有高速、小容量的高速缓存RAM 201,接收指令/运算控制部100发出的访问请求,在该访问请求的数据已保存在高速缓存RAM 201中的情况下,执行向指令/运算控制部100返回该数据的处理;以及二级高速缓存控制部300,具有低速、大容量的高速缓存RAM 301,在指令/运算控制部100发出的访问请求的数据已保存在高速缓存RAM 301中的情况下,执行向指令/运算控制部100返回该数据并且登记在高速缓存RAM 201中的处理,在未保存在高速缓存RAM 301中的情况下,执行经由系统控制总线20向未图示的存储器请求数据转送的处理。
图2中图示具备本实施例的一级高速缓存控制部200的一实施例。
在此,在本实施例的一级高速缓存控制部200中,假设安装在线程0和线程1这两个线程动作的SMT方式的处理器中,并且,假设具备具有16个项的读取端口和具有16个项的存储端口。
如图2所示那样,本实施例的一级高速缓存控制部200包括:高速缓存RAM 201;线程0使用的读取端口202-0(图中所示的FP-TH0);线程1使用的读取端口202-1(图中所示的FP-TH1);线程0使用的存储端口203-0(图中所示的SP-TH0);线程1使用的存储端口203-1(图中所示的SP-TH1);与读取端口202-0对应设置的选择电路204-0;与读取端口202-1对应设置的选择电路204-1;与选择电路204-0、1对应设置的选择电路205;与存储端口203-0对应设置的选择电路206-0;与存储端口203-1对应设置的选择电路206-1;与选择电路206-0、1对应设置的选择电路207;优先控制电路208以及FS指令状态信息存储部209。
在此,来自指令/运算控制部100的存储器访问请求暂时按照每个线程保持在一级高速缓存控制部200的读取端口202-0、1中。并且,读取端口202-0、1的各项在请求的高速缓存访问处理结束之前保持访问请求,在请求的高速缓存访问处理结束的时间点释放访问请求。
此外,如果来自指令/运算控制部100的存储器访问请求是存储请求,则在将该存储器访问请求保持在读取端口202-0、1中的同时,还按照每个线程保持在存储端口203-0、1中。并且,存储端口203-0、1的各项在请求的高速缓存访问处理结束之前保持访问请求,在请求的高速缓存访问处理结束的时间点释放访问请求。
读取端口202-0具有循环使用的16个项,保持线程0发出的访问请求。并且,使用FP-TOQ-TH0(Fetch-Port-Top-Of-Queue-Thread0)指示保持线程0发出的访问请求中处理未结束的最旧的访问请求的项编号。
读取端口202-1具有循环使用的16个项,保持线程1发出的访问请求。并且,使用FP-TOQ-TH1(Fetch-Port-Top-Of-Queue-Thread1)指示保持线程1发出的访问请求中处理未结束的最旧的访问请求的项编号。
存储端口203-0具有循环使用的16个项,保持线程0发出的存储请求。并且,使用SP-TOQ-TH0(Store-Port-Top-Of-Queue-Thread0)指示保持线程0发出的存储请求中处理未结束的最旧的存储请求的项编号。
存储端口203-1具有循环使用的16个项,保持线程1发出的存储请求。并且,使用SP-TOQ-TH1(Store-Port-Top-Of-Queue-Thread1)指示保持线程1发出的存储请求中处理未结束的最旧的存储请求的项编号。
选择电路204-0与读取端口202-0对应而设置,按照使FP-TOQ-TH0所指的项优先的规定的选择逻辑,为了进行线程0请求的高速缓存访问处理而选择读取端口202-0的项,并从该项取出访问请求。
选择电路204-1与读取端口202-1对应而设置,按照使FP-TOQ-TH1所指的项优先的规定的选择逻辑,为了进行线程1请求的高速缓存访问处理而选择读取端口202-1的项,并从该项取出访问请求。
选择电路205按照未图示的线程选择信号等指示,选择由选择电路204-0输出的访问请求(线程0的访问请求),或者选择由选择电路204-1输出的访问请求(线程1的访问请求)。
选择电路206-0与存储端口203-0对应而设置,按照使SP-TOQ-TH0所指的项优先的规定的选择逻辑,为了进行线程0请求的高速缓存访问处理而选择存储端口203-0的项,并从该项取出访问请求(存储请求)。
选择电路206-1与存储端口203-1对应而设置,按照使SP-TOQ-TH1所指的项优先的规定的选择逻辑,为了进行线程1请求的高速缓存访问处理而选择存储端口203-1的项,并从该项取出访问请求(存储请求)。
选择电路207按照未图示的线程选择信号等指示,选择由选择电路206-0输出的访问请求(线程0的访问请求),或者选择由选择电路206-1输出的访问请求(线程1的访问请求)。
优先控制电路208输入选择电路205所选择的访问请求、与发出该访问请求的线程对应而设置的读取端口202-0或1具有的FP-TOQ-TH1或2、与发出该访问请求的线程对应而设置的存储端口203-0或1具有的SP-TOQ-TH1或2、选择电路205所选择的访问请求是读取端口202-0或1的第几个项的信息(图中假设是第m个)、选择电路207所选择的访问请求是存储端口203-0或1的第几个项的信息(图中假设是第n个),并在FS指令状态信息存储部209中写入FS指令状态信息,并且,参照该写入的FS指令状态信息,决定是执行选择电路205选择的访问请求的处理,还是使该处理的执行待机。
FS指令状态信息存储部209存储与线程0对应而存储的、并在线程0处于读取与存储请求执行过程中时表示“1”、不处于执行过程中时表示“0”的FS指令状态信息(FS-PEND-STATUS-TH0),并且存储与线程1对应而存储的、在线程1处于读取与存储请求执行过程中时表示“1”、不处于执行过程中时表示“0”的FS指令状态信息(FS-PEND-STATUS-TH1)。
如后所述,该FS-PEND-STATUS-TH0、1信号在读取与存储请求的处理开始的时间点被设置为1,在读取与存储请求的处理结束的时间点被设置为0。
在此,在图2中,假设按照选择电路204-0、1以及选择电路205的选择处理,选择与线程p(p=1或0)对应设置的读取端口202-p的第m个项中保持的访问请求(request#m),并且,假设按照选择电路206-0、1以及选择电路207的选择处理,选择与线程p对应设置的存储端口203-p的第n个项中保持的访问请求(request#n=request#n)。
下面,将发出选择电路205所选择的访问请求的线程记作线程p(p=1或0),将另一个线程记作线程q(q=0或1)。
在来自指令/运算控制部100的读取与存储请求的从执行加载到存储为止的期间内,必须禁止由也包含已发出读取与存储请求的线程以外的线程在内的其他指令进行的该数据的参照和更新。
因此,在线程x的读取与存储请求访问数据X时,需要设置如下条件:
(a-1)读取与存储请求的处理被禁止,直到在该处理之前的访问数据X的线程x请求的处理全部结束为止;
(a-2)在读取与存储请求后面访问数据X的线程x的请求的处理被禁止,直到读取与存储请求的处理结束为止;
(b)在读取与存储请求的处理从开始到结束的期间内,禁止从高速缓存RAM 2001输出数据X
(c)在读取与存储请求的处理从开始到结束的期间内,禁止访问数据X的线程x以外的线程的请求的处理,直到读取与存储请求的处理结束为止,
由此,利用条件(a-1)、(a-2)保证对读取与存储对象数据的线程内的互斥控制,利用条件(b)保证多处理器结构中的处理器之间的互斥控制,利用条件(c)保证处理器内的线程间的互斥控制。
作为实现这些互斥控制的一种方式,可以举出如下方式:对处理器内的全部线程将读取与存储请求的处理数设为一个请求,在读取与存储请求的处理过程中无条件地全部禁止其他的访问请求的处理。
图3至8中图示按照该方式实现互斥控制的优先控制电路208执行的流程图的一个例子。在此,在这些流程图中,关注从两个线程中的线程p发出的读取与存储请求并进行说明,另一个线程用线程q表示。
如图3的流程图所示,优先控制电路208首先在步骤S100中输入选择电路205选择的访问请求(request#m)和选择电路207选择的访问请求(request#n=request#m),由此,关于线程p,输入读取端口202-p的第m个项中保持的访问请求(request#m),并且输入该访问请求被保持在读取端口202-p的第m个项中之类的信息和该访问请求被保持在存储端口203-p的第n个项中之类的信息。
接着,在步骤S101中,按照图4的流程图,对上述的条件(c)进行检查。
即,如图4的流程图所示那样,判断FS指令状态信息存储部209中存储的关于对方线程q的FS-PEND-STATUS-THq的值是否是0,在该值是0的情况(线程q未执行读取与存储请求的情况)下,对变量“检查(check)”设定0,在该值是1的情况(线程q正在执行读取与存储请求的情况)下,对变量“检查”设定1。
如后所述,在对变量“检查”设定0的情况下开始访问请求的处理,在对变量“检查”设定1的情况下使访问请求的处理待机,因此,按照该图4的流程图,对上述的条件(c)进行检查。
接着,在图3的流程图的步骤S102中,判断变量“检查”的值是否是0,在判断为变量“检查”的值不是0而是1时,进入步骤S108,使选择电路205选择的线程p的访问请求的处理待机,结束处理以等待在先请求的处理结束。
即,由于对方线程q正在执行读取与存储请求,所以使选择电路205选择的线程p的访问请求的处理待机。
另一方面,在步骤S102的判断处理中,在判断为变量“检查”的值是0时,进入步骤S103,判断选择电路205选择的访问请求是否是读取与存储请求。
在该步骤S103的判断处理中,判断为选择电路205选择的访问请求是读取与存储请求时,进入步骤S104,按照图5的流程图,对上述的条件(a-1)进行检查。
即,如图5的流程图所示那样,在FP-TOQ-THp指向第m个项,并且SP-TOQ-THp指向第n个项的情况下,表示选择电路205选择的读取与存储请求是最旧的访问请求,因而可以开始执行,因此对变量“检查”设定0,并且,为了表示线程p进入读取与存储请求的处理,对FS-PEND-STATUS-THp设定1,在除此以外的时候,对变量“检查”设定1,由此对上述的条件(a-1)进行检查。
另一方面,在图3的流程图的步骤S103的判断处理中,判断为选择电路205选择的访问请求不是读取与存储请求时,进入步骤S105,按照图6的流程图,对上述的条件(a-2)进行检查。
即,如图6的流程图所示,判断FS指令状态信息存储部209中存储的关于线程p的FS-PEND-STATUS-THp的值是否是0,在该值是0的情况(线程p未执行读取与存储请求的情况)下,对变量“检查”设定0,在该值是1的情况(线程p正在执行读取与存储请求的情况)下,由于读取与存储请求处于在先执行过程中所以不能执行选择电路205选择的访问请求,因此对变量“检查”设定1,由此,对上述的条件(a-2)进行检查。
接着,在图3的流程图的步骤S106中,判断变量“检查”的值是否是0,在判断为变量“检查”的值是0时进入步骤S107,开始选择电路205选择的线程p的访问请求的处理,另一方面,在判断为变量“检查”的值是1时进入步骤S108,使选择电路205选择的线程p的访问请求的处理待机,结束处理以等待在先请求的处理结束。
随后,优先控制电路208在读取与存储请求的加载和存储处理结束的时间点,将FS-PEND-STATUS-THp重置为0,重新开始使其待机的其他请求的处理。
另一方面,优先控制电路208对于上述的条件(b),按照图7的流程图进行其检查。
即,如图7的流程图所示那样,在通过FS指令状态信息存储部209中存储的关于线程p的FS-PEND-STATUS-THp的值是0,判断出线程p未执行读取与存储请求,并且通过FS指令状态信息存储部209中存储的关于线程q的FS-PEND-STATUS-THq的值是0,判断出线程q未执行读取与存储请求时,开始从高速缓存RAM 201输出相应的数据,在除此以外的时候,使从高速缓存RAM 201输出相应的数据待机。
采用上述方式,根据本实施例,在SMT方式的处理器中,能够通过简单的结构实现处理读取与存储请求时需要的互斥控制处理。
根据以上说明可知,在任意一个线程开始读取与存储请求的处理后,到该处理结束为止的期间内,禁止所有其他线程的访问请求的处理。这样会产生如下情况,即某个线程中连续发出多个读取与存储请求,仅连续处理该线程的访问请求,其他线程中的处理全部无法推进。
因此,在读取与存储请求的处理结束后,在该线程的读取端口再次选择读取与存储请求的项时,如果其他线程的读取端口中滞留了一些访问请求,则使该其他线程的访问请求至少完成一个,这样,通过在此之前不进行读取与存储请求的处理,来避免其他线程请求的处理停滞。
为了实现上述方法,如图8所示,具备最后处理线程表示信号控制电路210,该电路用于生成表示最后结束了处理的访问请求的线程的最后处理线程表示信号(REQ-TAKEN-THREAD)。
该最后处理线程表示信号控制电路210在一些访问请求的处理结束时设置已结束该访问请求的线程的线程编号,由此生成REQ-TAKEN-THREAD。这样,例如在线程有两个的情况下,在REQ-TAKEN-THREAD表示0时,意味着最后结束访问请求的处理的线程是线程0,在REQ-TAKEN-THREAD表示1时,意味着最后结束访问请求的处理的线程是线程1。
图9中图示在具备最后处理线程表示信号控制电路210的情况下,优先控制电路208执行的流程图。
接着,按照该流程图,使用REQ-TAKEN-THREAD,详细说明优先控制电路208为了防止发生仅连续处理特定的线程的访问请求而执行的处理。
如图9的流程图所示,优先控制电路208首先在步骤S600中,通过选择线程p的读取端口202-p的项来选择请求执行的访问请求,接着,在步骤S601中,判断该访问请求是否是读取与存储请求。
根据该判断处理,在判断为请求执行的访问请求是读取与存储请求时,进入步骤S602,参照作为对方的线程q的读取端口202-q的全部项。
接着,在步骤S603中,判断参照的读取端口202-q的项中是否存在有效的项,在判断为存在有效的项时,即在判断为存在由于读取与存储请求而待机的线程q的访问请求时,进入步骤S604,判断REQ-TAKEN-THREAD是否表示最后结束处理的线程是线程p。
根据该判断处理,在判断为REQ-TAKEN-THREAD表示是线程p时,进入步骤S605,不选择线程p的访问请求,选择线程q的访问请求。
即,由于最后结束处理的线程是线程p,所以如果这次仍然选择线程p的读取与存储请求,则线程q的访问请求的处理会停滞,因此不选择线程p的访问请求,而选择线程q的访问请求。
另一方面,在步骤S603中,在读取端口202-q的项中不存在有效的项的情况下,无法选择线程q的访问请求,因此进入步骤S606,选择线程p的访问请求(在此情况下是读取与存储请求)。
并且,在步骤S604中,在REQ-TAKEN-THREAD不表示线程p而是表示线程q时,由于不会发生线程q的访问请求的处理停滞的情况,所以进入步骤S606,选择线程p的访问请求(在此情况下是读取与存储请求)。
另一方面,在步骤S601的判断处理中,在判断为具有执行请求的线程p的访问请求不是读取与存储请求时,进入步骤S607,参照FP-TOQ-THq指向的项。
接着,在步骤S608中,判断该参照的项中保持的线程q的访问请求是否是读取与存储请求,并在判断为是读取与存储请求时,进入步骤S609,判断REQ-TAKEN-THREAD是否表示最后结束处理的线程是线程p。
根据该判断处理,在REQ-TAKEN-THREAD表示是线程p时,进入步骤S605,不选择线程p的访问请求,选择线程q的访问请求。
即,由于最后结束处理的线程是线程p,所以如果这次仍然选择线程p的访问请求,则线程q的访问请求(在此情况下是读取与存储请求)的处理会停滞,因此不选择线程p的访问请求,而选择线程q的访问请求(在此情况下是读取与存储请求)。
另一方面,当在步骤S608中判断为FP-TOQ-THq指向的项中保持的线程q的访问请求不是读取与存储请求时,由于访问请求未被禁止,所以进入步骤S606,选择线程p的访问请求(在此情况下是非读取与存储请求的访问请求)。
并且,在步骤S609中,在REQ-TAKEN-THREAD不表示线程p而是表示线程q时,由于不会发生线程q的访问请求的处理停滞的情况,所以进入步骤S606,选择线程p的访问请求(在此情况下是非读取与存储请求的访问请求)。
采用上述方式,优先控制电路208按照图9的流程图,使用REQ-TAKEN-THREAD,以防止发生仅连续处理特定的线程的访问请求的情况的方式进行处理。
接着,具体说明利用图9的流程图实现的处理。
在读取端口202-0中保持多个读取与存储请求的情况下,在第一个读取与存储请求的处理结束时,将REQ-TAKEN-THREAD置为0。
接着,在读取端口202-0内,选择了后续的读取与存储请求的项时,参照另一个读取端口202-1中是否保持访问请求,如果保持一个以上的一些访问请求,并且REQ-TAKEN-THREAD是0,则不选择读取端口202-0的访问请求,而选择并处理从读取端口202-1中读出的线程1的访问请求。
在该线程1的访问请求的处理结束的时间点,将REQ-TAKEN-THREAD置为1。随后,在选择了读取端口202-0中滞留的线程0的读取与存储请求的项时,参照另一个读取端口202-1中是否保持有访问请求,即使保持有一些访问请求,由于REQ-TAKEN-THREAD是1,所以开始线程0的读取与存储请求的处理。
并且,在该线程0的访问请求的处理结束的时间点,将REQ-TAKEN-THREAD置为0。据此,能够防止由于读取与存储请求的处理使其他线程的访问请求的处理停滞的情况。
在以上说明的实施例中,使用如下方式:对处理器内的全部线程将读取与存储请求的处理数设为一个请求,在读取与存储请求的处理过程中无条件地全部禁止其他的访问请求的处理;作为其他方式,可以举出如下方式:针对处理器内的每个线程将读取与存储请求的处理数设为一个请求,仅禁止对读取与存储请求的对象数据进行参照和更新的其他访问请求的处理。
在使用该方式的情况下,可以知道,对于上述的条件(a-1)、(a-2)、(b)、(c),以对象数据一致为条件进行禁止。
图10中图示按照该方式实现互斥控制的一级高速缓存控制部200的其他实施例。
在按照该实施例的情况下,FS指令状态信息存储部209采用如下结构:作为FS指令状态信息,除了存储上述的FS-PEND-STATUS-TH0、1以外,还使用寄存器存储与线程0对应存储的、表示线程0的读取与存储请求的对象数据的地址的FS-PEND-ADRS-TH0,并且还使用寄存器存储与线程1对应存储的、表示线程1的读取与存储请求的对象数据的地址的FS-PEND-ADRS-TH1。
在这些寄存器中,在读取与存储请求的处理开始的时间点,设置该对象数据的地址,FS-PEND-STATUS-TH0、FS-PEND-STATUS-TH1的值是1的期间与各自的寄存器对应表示有效的值。
图11至16中图示按照该方式实现互斥控制的优先控制电路208执行的流程图的一个例子。在此,在这些流程图中,关注从两个线程中的线程p发出的读取与存储请求并进行说明,另一个线程用线程q表示。
如图11的流程图所示,优先控制电路208首先在步骤S700中输入选择电路205所选择的访问请求(request#m)和选择电路207所选择的访问请求(request#n=request#m),由此,关于线程p,输入读取端口202-p的第m个项中保持的访问请求(request#m),并且输入该访问请求被保持在读取端口202-p的第m个项中之类的信息和该访问请求被保持在存储端口203-p的第n个项中之类的信息。
接着,在步骤S701中,按照图12的流程图,对上述的条件(c)进行检查。
即,如图12的流程图所示,判断FS指令状态信息存储部209中存储的关于对方线程q的FS-PEND-STATUS-THq的值是否是0,在该值是1的情况(线程q正在执行读取与存储请求的情况)下,进一步判断选择电路205所选择的访问请求指定的地址是否与FS指令状态信息存储部209中存储的关于对方线程q的FS-PEND-ADRS-THq的地址一致。并且,通过这些判断处理,在判断为以相同数据为访问对象的读取与存储请求正在由线程q执行的情况下,对变量“检查”设定1,在除此之外的情况下,对变量“检查”设定0。
如后所述,在对变量“检查”设定0的情况下开始访问请求的处理,在对变量“检查”设定1的情况下使访问请求的处理待机,因此,按照该图12的流程图,对上述的条件(c)进行检查。
接着,在图11的流程图的步骤S702中,判断变量“检查”的值是否是0,在判断为变量“检查”的值不是0而是1时,进入步骤S708,使选择电路205选择的线程p的访问请求的处理待机,结束处理以等待在先请求的处理结束。
即,由于对方线程q在执行对相同数据的读取与存储请求,所以使选择电路205所选择的线程p的访问请求的处理待机。
另一方面,在步骤S702的判断处理中,在判断为变量“检查”的值是0时,进入步骤S703,判断选择电路205所选择的访问请求是否是读取与存储请求。
在该步骤S703的判断处理中,判断为选择电路205所选择的访问请求是读取与存储请求时,进入步骤S703,按照图13的流程图,对上述的条件(a-1)进行检查。
即,如图13的流程图所示,在FP-TOQ-THp指向第m个项,并且SP-TOQ-THp指向第n个项的情况下,表示选择电路205选择的读取与存储请求是最旧的访问请求,因而可以开始执行,因此对变量“检查”设定0,除此之外,为了表示线程p进入读取与存储请求的处理,对FS-PEND-STATUS-THp设定1,并且在FS-PEND-ADRS-THp中登记地址;在除此以外的时候,对变量“检查”设定1,由此对上述的条件(a-1)进行检查。
另一方面,在图11的流程图的步骤S703的判断处理中,判断为选择电路205选择的访问请求不是读取与存储请求时,进入步骤S705,按照图14的流程图,对上述的条件(a-2)进行检查。
即,如图14的流程图所示,判断FS指令状态信息存储部209中存储的关于线程p的FS-PEND-STATUS-THp的值是否是0,在该值是1的情况(线程p正在执行读取与存储请求的情况)下,进一步判断选择电路205选择的访问请求指定的地址是否与FS指令状态信息存储部209中存储的关于线程p的FS-PEND-ADRS-THp的地址一致。
在这些判断处理中,在判断为线程p正在先行执行相同数据的读取与存储请求的情况下,表示不能执行选择电路205所选择的访问请求,因此对变量“检查”设定1,在除此之外的情况下,对变量“检查”设定0,由此,对上述的条件(a-2)进行检查。
接着,在图11的流程图的步骤S706中,判断变量“检查”的值是否是0,在判断为变量“检查”的值是0时进入步骤S707,开始选择电路205所选择的线程p的访问请求的处理,另一方面,在判断为变量“检查”的值是1时进入步骤S708,使选择电路205所选择的线程p的访问请求的处理待机,结束处理以等待在先请求的处理结束。
随后,优先控制电路208在读取与存储请求的加载和存储处理结束的时间点,将FS-PEND-STATUS-THp重置为0,重新开始使其待机的其他请求的处理。
另一方面,优先控制电路208对于上述的条件(b),按照图15的流程图进行其检查。
即,如图15的流程图所示,判断FS指令状态信息存储部209中存储的关于线程p的FS-PEND-STATUS-THp的值是否是0,并且,在FS-PEND-STATUS-THp的值是1的情况下,判断选择电路205所选择的访问请求指定的地址是否与FS指令状态信息存储部209中存储的关于线程p的FS-PEND-ADRS-THp的地址一致。
并且,判断FS指令状态信息存储部209中存储的关于线程q的FS-PEND-STATUS-THq的值是否是0,并且,在FS-PEND-STATUS-THq的值是1的情况下,判断选择电路205所选择的访问请求指定的地址是否与FS指令状态信息存储部209中存储的关于线程q的FS-PEND-ADRS-THq的地址一致。
通过这些判断处理,在判断为线程p和线程q均未执行读取与存储请求时,以及在虽然其中任一方或双方正在执行读取与存储请求,但以与选择电路205所选择的访问请求的对象数据不同的数据为对象的情况下,开始从高速缓存RAM 201输出该对象数据,在除此之外的情况下,使从高速缓存RAM 201输出该对象数据待机,由此,对上述的条件(b)进行检查。
通过采用这种方式,在以图10的方式构成的一级高速缓存控制部200中,如果读取与存储请求的对象数据不同,则针对每个线程能够执行一个读取与存储请求的处理。
在以图10的方式构成的一级高速缓存控制部200中,使用图8所示的最后处理线程表示信号控制电路210产生的REQ-TAKEN-THREAD,也能防止发生仅连续处理特定的线程的访问请求的情况。
图16中图示在具备最后处理线程表示信号控制电路210的情况下,以图10的方式构成的一级高速缓存控制部200具备的优先控制电路208执行的流程图。
优先控制电路208在执行图9的流程图的情况下,在步骤S602中,参照作为对方的线程q的读取端口202-q的全部项后,接着在步骤S603中,判断在所参照的读取端口202-q的项中是否存在有效的项,在判断为存在有效的项时,即在判断为存在由于读取与存储请求而待机的访问请求时,立即进入步骤S604,判断REQ-TAKEN-THREAD是否表示最后结束处理的线程是线程p。
与此相对,优先控制电路208在执行图16的流程图的情况下,由于仅使以与读取与存储请求的对象数据相同的数据为访问对象的访问请求待机,所以考虑这一点,在步骤S603后面的步骤S604α中,判断线程q中是否存在等待读取与存储请求结束的访问请求(由于地址一致而使其待机的访问请求),在存在这种访问请求的情况下,进入步骤S604的处理,在不存在这种访问请求的情况下,进入步骤S606的处理。
采用这种方式,优先控制电路208在以图10的方式构成的一级高速缓存控制部200中,也能按照图16的流程图,使用REQ-TAKEN-THREAD,以防止发生仅连续处理特定的线程的访问请求的情况的方式进行处理。
虽然按照图示的实施例说明了本高速缓存控制装置以及控制方法,但本高速缓存控制装置以及控制方法并不限定于此。例如,在实施例中,假设安装在两个线程动作的SMT方式的处理器中,但在三个以上的线程动作的情况下也能原样适用。
产业上的可利用性
本发明能够适用于SMT方式的处理器中的高速缓存控制,通过适用本发明,在SMT方式的处理器中能够通过简单的结构实现在处理CAS指令等原子指令时需要的互斥控制处理。
Claims (6)
1.一种高速缓存控制装置,其特征在于,控制对同时执行的多个线程共享的高速缓存的访问请求,包括:
存储单元,存储与各线程对应设置的、在该线程进入不可分地执行多个处理的原子指令的执行的情况下表示第一规定值、在该原子指令结束的情况下表示与所述第一规定值不同的第二规定值的标记;
判断单元,在从某个线程发出访问请求的情况下,通过参照所述存储单元存储的标记值,判断与发出了访问请求的线程不同的其他线程是否正在执行原子指令;
执行单元,在所述判断单元判断为所述其他线程正在执行原子指令的情况下,执行使所述发出的访问请求待机的处理;
指示单元,在存在从高速缓存输出数据的请求的情况下,通过参照所述存储单元存储的标记值,来判断全部线程是否都不在执行原子指令,在判断为全部线程都不在执行该指令的情况下,指示执行从高速缓存输出数据的处理;以及
线程内互斥控制单元,通过参照所述存储单元存储的标记值,来执行线程内的对原子指令的互斥控制。
2.一种高速缓存控制装置,其特征在于,控制对同时执行的多个线程共享的高速缓存的访问请求,包括:
存储单元,存储与各线程对应设置的、在该线程进入不可分地执行多个处理的原子指令的执行的情况下表示第一规定值、在所述执行的原子指令结束的情况下表示与所述第一规定值不同的第二规定值的标记,并且,在该线程进入原子指令的执行的情况下,存储执行的原子指令的访问对象的地址信息;
判断单元,在从某个线程发出访问请求的情况下,通过参照所述存储单元存储的标记值,判断与发出了所述访问请求的线程不同的其他线程是否正在执行原子指令,并且,在判断为所述其他线程正在执行原子指令的情况下,通过参照所述存储单元存储的地址信息,判断所述其他线程正在执行的原子指令的访问对象的地址信息与所述发出的访问请求指定的地址信息是否一致;
执行单元,在所述判断单元判断为所述其他线程正在执行原子指令、并且判断为所述其他线程正在执行的原子指令的访问对象的地址信息与所述发出的访问请求指定的地址信息一致的情况下,执行使所述发出的访问请求待机的处理;
指示单元,在存在从高速缓存输出数据的请求的情况下,通过参照所述存储单元存储的标记值以及地址信息,判断全部线程是否都不在执行以与输出请求指定的地址信息一致的地址信息为访问对象的原子指令,在判断为全部线程都不在执行该指令的情况下,指示执行从高速缓存输出数据的处理;以及
线程内互斥控制单元,通过参照所述存储单元存储的标记值以及地址信息,来执行线程内的对原子指令的互斥控制。
3.根据权利要求1或2所述的高速缓存控制装置,其特征在于,包括:
第二存储单元,存储表示最后进行了访问请求的处理的线程是哪个线程的信息;
第二判断单元,在从某个线程发出与原子指令有关的访问请求的情况下,针对该线程以外的线程,判断是否存在通过所述待机处理而待机的访问请求;以及
决定单元,在所述第二判断单元判断为存在通过所述待机处理而待机的访问请求的情况下,通过参照所述第二存储单元存储的信息确定最后进行访问请求的处理的线程,以该确定的线程以外的线程发出的访问请求优先的方式,决定是选择所述从某个线程发出的与原子指令有关的访问请求,还是选择该待机的访问请求。
4.根据权利要求3所述的高速缓存控制装置,其特征在于,包括:
第三判断单元,在从某个线程发出与非原子指令有关的访问请求的情况下,针对该线程以外的线程,判断是否存在与原子指令有关的访问请求的发出请求;以及
第二决定单元,在所述第三判断单元判断为存在与原子指令有关的访问请求的发出请求的情况下,通过参照所述第二存储单元存储的信息确定最后进行了访问请求的处理的线程,以该确定的线程以外的线程发出的访问请求优先的方式,决定是选择所述从某个线程发出的与非原子指令有关的访问请求,还是选择该存在发出请求的与原子指令有关的访问请求。
5.一种高速缓存控制方法,由控制对同时执行的多个线程共享的高速缓存的访问请求的高速缓存控制装置执行,其特征在于:
所述高速缓存控制装置采用包括存储单元的结构,该存储单元存储与各线程对应设置的、在该线程进入不可分地执行多个处理的原子指令的执行的情况下表示第一规定值、在该原子指令结束的情况下表示与所述第一规定值不同的第二规定值的标记;在线程进入原子指令的执行的情况下,在该存储单元存储的相应标记中写入所述第一规定值,并且在该原子指令结束的情况下写入所述第二规定值;
在从某个线程发出访问请求的情况下,通过参照所述存储单元存储的标记值,来判断与发出了访问请求的线程不同的其他线程是否正在执行原子指令;
在通过所述判断处理判断为所述其他线程正在执行原子指令的情况下,执行使所述发出的访问请求待机的处理;
在存在从高速缓存输出数据的请求的情况下,通过参照所述存储单元存储的标记值,来判断全部线程是否都不在执行原子指令,在判断为全部线程都不在执行该原子指令的情况下,指示执行从高速缓存输出数据的处理;以及
在需要执行线程内的对原子指令的互斥控制的情况下,通过参照所述存储单元存储的标记值,来执行线程内的对原子指令的互斥控制。
6.一种高速缓存控制方法,由控制对同时执行的多个线程共享的高速缓存的访问请求的高速缓存控制装置执行,其特征在于:
所述高速缓存控制装置采用包括存储单元的结构,该存储单元存储与各线程对应设置的、在该线程进入不可分地执行多个处理的原子指令的执行的情况下表示第一规定值、在所述执行的原子指令结束的情况下表示与所述第一规定值不同的第二规定值的标记,并且在该线程进入原子指令的执行的情况下,存储执行的原子指令的访问对象的地址信息;在线程进入原子指令的执行的情况下,在该存储单元存储的相应标记中写入所述第一规定值,并且在所述存储单元中写入该原子指令的访问对象的地址信息,并且在该原子指令结束的情况下在该标记中写入所述第二规定值;
在从某个线程发出访问请求的情况下,通过参照所述存储单元存储的标记值,来判断与发出了所述访问请求的线程不同的其他线程是否正在执行原子指令,并且,在判断为所述其他线程正在执行原子指令的情况下,通过参照所述存储单元存储的地址信息,来判断所述其他线程正在执行的原子指令的访问对象的地址信息与所述发出的访问请求指定的地址信息是否一致;
在通过所述判断处理判断为所述其他线程正在执行原子指令、并且判断为所述其他线程正在执行的原子指令的访问对象的地址信息与所述发出的访问请求指定的地址信息一致的情况下,执行使所述发出的访问请求待机的处理;
在存在从高速缓存输出数据的请求的情况下,通过参照所述存储单元存储的标记值以及地址信息,判断全部线程是否都不在执行以与输出请求指定的地址信息一致的地址信息为访问对象的原子指令,在判断为全部线程都不在执行该指令的情况下,指示执行从高速缓存输出数据的处理;以及
在需要执行线程内的对原子指令的互斥控制的情况下,通过参照所述存储单元存储的标记值以及地址信息,来执行线程内的对原子指令的互斥控制。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2007/062376 WO2008155827A1 (ja) | 2007-06-20 | 2007-06-20 | キャッシュ制御装置及び制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101689143A CN101689143A (zh) | 2010-03-31 |
CN101689143B true CN101689143B (zh) | 2012-07-04 |
Family
ID=40155993
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800533945A Expired - Fee Related CN101689143B (zh) | 2007-06-20 | 2007-06-20 | 高速缓存控制装置以及控制方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8261021B2 (zh) |
EP (1) | EP2159702B1 (zh) |
JP (1) | JP4973730B2 (zh) |
KR (1) | KR101086791B1 (zh) |
CN (1) | CN101689143B (zh) |
WO (1) | WO2008155827A1 (zh) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7444547B2 (en) * | 2003-06-19 | 2008-10-28 | International Business Machines Corproation | Method, system, and product for programming in a simultaneous multi-threaded processor environment |
US8719514B2 (en) * | 2007-06-27 | 2014-05-06 | Intel Corporation | Software filtering in a transactional memory system |
US8261124B2 (en) * | 2007-12-21 | 2012-09-04 | Spansion Llc | System and method for optimized error correction in flash memory arrays |
US8627014B2 (en) * | 2008-12-30 | 2014-01-07 | Intel Corporation | Memory model for hardware attributes within a transactional memory system |
GB2469299B (en) * | 2009-04-07 | 2011-02-16 | Imagination Tech Ltd | Ensuring consistency between a data cache and a main memory |
US8533399B2 (en) * | 2010-01-15 | 2013-09-10 | International Business Machines Corporation | Cache directory look-up re-use as conflict check mechanism for speculative memory requests |
US8832415B2 (en) * | 2010-01-08 | 2014-09-09 | International Business Machines Corporation | Mapping virtual addresses to different physical addresses for value disambiguation for thread memory access requests |
US8621478B2 (en) | 2010-01-15 | 2013-12-31 | International Business Machines Corporation | Multiprocessor system with multiple concurrent modes of execution |
CN101866327B (zh) * | 2010-06-23 | 2012-06-06 | 展讯通信(上海)有限公司 | 移动终端及其与计算机连接后的通信方法 |
US20110320781A1 (en) * | 2010-06-29 | 2011-12-29 | Wei Liu | Dynamic data synchronization in thread-level speculation |
US9122476B2 (en) | 2010-12-07 | 2015-09-01 | Advanced Micro Devices, Inc. | Programmable atomic memory using hardware validation agent |
US8788794B2 (en) * | 2010-12-07 | 2014-07-22 | Advanced Micro Devices, Inc. | Programmable atomic memory using stored atomic procedures |
KR101667167B1 (ko) | 2012-06-15 | 2016-10-17 | 소프트 머신즈, 인크. | Load store 재정렬 및 최적화로부터 생기는 투기적 포워딩 예측 착오/오류로부터의 복원을 구현하는 방법 및 시스템 |
KR101818967B1 (ko) | 2012-06-15 | 2018-01-16 | 인텔 코포레이션 | 명확화 없는 비순차 load store 큐 |
EP2862062B1 (en) | 2012-06-15 | 2024-03-06 | Intel Corporation | A virtual load store queue having a dynamic dispatch window with a distributed structure |
EP2862061A4 (en) | 2012-06-15 | 2016-12-21 | Soft Machines Inc | MEMORY PRECISION FOR VIRTUAL LOAD WITH DYNAMIC SHIPPING WINDOW WITH UNIFORM STRUCTURE |
CN104583957B (zh) | 2012-06-15 | 2018-08-10 | 英特尔公司 | 具有无消歧乱序加载存储队列的重新排序的推测性指令序列 |
KR101832574B1 (ko) * | 2012-06-15 | 2018-02-26 | 인텔 코포레이션 | 모든 store들이 캐시의 모든 워드들에 대한 검사를 스누핑해야만 하는 것을 방지하기 위해 store들을 필터링하는 방법 및 시스템 |
KR101826399B1 (ko) | 2012-06-15 | 2018-02-06 | 인텔 코포레이션 | Load store 재정렬 및 최적화를 구현하는 명령어 정의 |
GB2516092A (en) * | 2013-07-11 | 2015-01-14 | Ibm | Method and system for implementing a bit array in a cache line |
US9146870B2 (en) | 2013-07-24 | 2015-09-29 | Arm Limited | Performance of accesses from multiple processors to a same memory location |
JP6221500B2 (ja) * | 2013-08-19 | 2017-11-01 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
JP6179369B2 (ja) * | 2013-11-22 | 2017-08-16 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
JP6384380B2 (ja) * | 2015-03-27 | 2018-09-05 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
CN108710531B (zh) * | 2018-04-20 | 2021-06-15 | 深圳市文鼎创数据科技有限公司 | 循环队列的数据写入方法、装置、终端设备和存储介质 |
CN109324765A (zh) * | 2018-11-01 | 2019-02-12 | 郑州云海信息技术有限公司 | 一种磁盘状态检测方法、装置、设备及存储介质 |
CN113778674A (zh) * | 2021-08-31 | 2021-12-10 | 上海弘积信息科技有限公司 | 一种负载均衡设备配置管理在多核下的免锁实现方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1659525A (zh) * | 2002-06-04 | 2005-08-24 | 杉桥技术公司 | 简化了缓存替换策略的实现的多线程缓存方法和装置 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4561051A (en) * | 1984-02-10 | 1985-12-24 | Prime Computer, Inc. | Memory access method and apparatus in multiple processor systems |
US5265233A (en) * | 1991-05-17 | 1993-11-23 | Sun Microsystems, Inc. | Method and apparatus for providing total and partial store ordering for a memory in multi-processor system |
JP3309425B2 (ja) | 1992-05-22 | 2002-07-29 | 松下電器産業株式会社 | キャッシュ制御装置 |
US5893165A (en) | 1996-07-01 | 1999-04-06 | Sun Microsystems, Inc. | System and method for parallel execution of memory transactions using multiple memory models, including SSO, TSO, PSO and RMO |
US20050210204A1 (en) | 2003-01-27 | 2005-09-22 | Fujitsu Limited | Memory control device, data cache control device, central processing device, storage device control method, data cache control method, and cache control method |
WO2004068361A1 (ja) | 2003-01-27 | 2004-08-12 | Fujitsu Limited | 記憶制御装置、データキャッシュ制御装置、中央処理装置、記憶装置制御方法、データキャッシュ制御方法およびキャッシュ制御方法 |
US7089374B2 (en) * | 2003-02-13 | 2006-08-08 | Sun Microsystems, Inc. | Selectively unmarking load-marked cache lines during transactional program execution |
US6938130B2 (en) * | 2003-02-13 | 2005-08-30 | Sun Microsystems Inc. | Method and apparatus for delaying interfering accesses from other threads during transactional program execution |
JP4412981B2 (ja) * | 2003-11-26 | 2010-02-10 | 株式会社日立製作所 | ストレージシステム及同システムにおけるデータキャッシング方法 |
US7644409B2 (en) * | 2004-06-04 | 2010-01-05 | Sun Microsystems, Inc. | Techniques for accessing a shared resource using an improved synchronization mechanism |
US7529889B2 (en) * | 2006-08-14 | 2009-05-05 | Arm Limited | Data processing apparatus and method for performing a cache lookup in an energy efficient manner |
KR101077514B1 (ko) * | 2007-06-19 | 2011-10-28 | 후지쯔 가부시끼가이샤 | 캐시 제어장치 및 제어방법 |
-
2007
- 2007-06-20 KR KR1020097026173A patent/KR101086791B1/ko active IP Right Grant
- 2007-06-20 JP JP2009520181A patent/JP4973730B2/ja not_active Expired - Fee Related
- 2007-06-20 CN CN2007800533945A patent/CN101689143B/zh not_active Expired - Fee Related
- 2007-06-20 WO PCT/JP2007/062376 patent/WO2008155827A1/ja active Application Filing
- 2007-06-20 EP EP07767215.2A patent/EP2159702B1/en not_active Not-in-force
-
2009
- 2009-12-17 US US12/654,376 patent/US8261021B2/en not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1659525A (zh) * | 2002-06-04 | 2005-08-24 | 杉桥技术公司 | 简化了缓存替换策略的实现的多线程缓存方法和装置 |
Non-Patent Citations (3)
Title |
---|
JP特开平11-3268A 1999.01.06 |
JP特开平5-233421A 1993.09.10 |
JP特开平5-324471A 1993.12.07 |
Also Published As
Publication number | Publication date |
---|---|
EP2159702A4 (en) | 2010-10-06 |
US8261021B2 (en) | 2012-09-04 |
KR101086791B1 (ko) | 2011-11-25 |
KR20100013326A (ko) | 2010-02-09 |
CN101689143A (zh) | 2010-03-31 |
EP2159702B1 (en) | 2013-04-17 |
EP2159702A1 (en) | 2010-03-03 |
WO2008155827A1 (ja) | 2008-12-24 |
US20100169577A1 (en) | 2010-07-01 |
JP4973730B2 (ja) | 2012-07-11 |
JPWO2008155827A1 (ja) | 2010-08-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101689143B (zh) | 高速缓存控制装置以及控制方法 | |
US6996821B1 (en) | Data processing systems and method for batching tasks of the same type in an instruction cache | |
CN102934076B (zh) | 指令发行控制装置以及方法 | |
CN100576170C (zh) | 连续流程处理器流水线 | |
US6976135B1 (en) | Memory request reordering in a data processing system | |
CN100388186C (zh) | 用排序向量实施存储器排序模型的方法与设备 | |
US8285974B2 (en) | Age matrix for queue entries dispatch order | |
EP1235154B1 (en) | Cache memory system | |
US6212605B1 (en) | Eviction override for larx-reserved addresses | |
JP4298800B2 (ja) | キャッシュメモリにおけるプリフェッチ管理 | |
US20100312968A1 (en) | Arithmetic processing apparatus and method of controlling the same | |
US8458443B2 (en) | VLIW processor with execution units executing instructions from instruction queues and accessing data queues to read and write operands | |
US6385695B1 (en) | Method and system for maintaining allocation information on data castout from an upper level cache | |
US5904732A (en) | Dynamic priority switching of load and store buffers in superscalar processor | |
US9286068B2 (en) | Efficient usage of a multi-level register file utilizing a register file bypass | |
US20080098174A1 (en) | Cache memory having pipeline structure and method for controlling the same | |
CN106537329A (zh) | 用于为多线程执行锁保护处理操作的数据处理装置及方法 | |
JPWO2008155829A1 (ja) | 情報処理装置,キャッシュメモリ制御装置およびメモリアクセス順序保証方法 | |
US10585701B2 (en) | Dynamically allocating storage elements to provide registers for processing thread groups | |
JP2009521054A (ja) | ダイナミックキャッシュ管理装置及び方法 | |
US20180004672A1 (en) | Cache unit and processor | |
US20150032970A1 (en) | Performance of accesses from multiple processors to a same memory location | |
US7191315B2 (en) | Method and system for tracking and recycling physical register assignment | |
CN100498970C (zh) | 读改写并发处理系统及读改写并发处理方法 | |
EP1278121B1 (en) | Microprocessor maintaining memory consistency |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120704 |
|
CF01 | Termination of patent right due to non-payment of annual fee |