专利名称:高速缓存控制装置以及控制方法
技术领域:
本发明涉及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的项被释放。
6在有效的读取端口 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-l)读取与存储请求的处理被禁止,直到在该处理之前的访问数 据A的请求的处理全部结束为止;
(a-2 )在读取与存储请求后面访问数据A的请求的处理被禁止,直 到读取与存储请求的处理结束为止;
(b )在读取与存储请求的处理从开始到结束的期间内,禁止从高速 緩存RAM 2001输出数据A,
由此,利用条件U-1)、 (a-2)保证对读取与存储对象数据的处理器 内的互斥控制,利用条件(b)保证多处理器结构中的处理器之间的互 斥控制。
因此,使用检查电路2006、 2007,如图18以及图19的流程图所示 那样,如果保持读取与存储请求的读取端口 2002和存储端口 2003的项是FP-TOQ和SP-TOQ,则允许开始该读取与存储请求的处理,由此保 证条件(a-l )。
在此,在图18的流程图中,假设通过选择电路2004、 2005的选择 处理,处理在读取端口 2002的FP#m的项(第m个项)以及存储端口 2003 的 SP#n 的项(第 n 个项)中保持的访问请求 (request#m=request#n )。
接着,使用检查电路2008,如图18以及图20的流程图所示那样, 在从FP-TOQ的项到保持该访问请求的读取端口 2002的项之间存在读 取与存储请求的项的情况下禁止开始读取与存储请求以外的访问请求 的处理,在虽然不存在这种项、但是与存储端口 2003中保持的在先的 存储请求的对象数据一致的情况下进行禁止开始读取与存储请求以外 的访问请求的处理,由此保证条件(a-2)。
并且,4吏用检查电路2009,如图21的流程图所示那样,在SP-TOQ 的项是读取与存储请求的情况下,禁止开始从高速緩存RAM 2001输出 数据的处理,由此保证条件(b)。
按照这种结构,在单线程方式的处理器中,实现在读取与存储指令 的执行中要求的互斥控制处理。
另一方面,在SMT方式的处理器中需要进行线程间的互斥控制, 因此不能原样利用以此方式构成的单线程方式的处理器中使用的高速 緩存控制。
但是实际情况是,迄今为止还没有公开在安装SMT方式的处理器 的情况下,通过怎样的结构来实现在读取与存储指令的执行中要求的互 斥控制处理。
因此,作为制造商,在安装SMT方式的处理器的情况下,需要构 造实现在处理CAS指令等读取与存储指令时需要的互斥控制处理的新 的结构的高速緩存控制技术。
在此,作为与本发明有关的技术,下述专利文献l中记载了在SMT 方式的处理器中,实现保证线程间共享的数据的读出以及写入的执行顺序的一致性的发明。
专利文献1: WO2004/068361号公报
发明内容
如前所述,在SMT方式的处理器中,需要线程间的互斥控制,因 此不能原样利用以此方式构成的单线程方式的处理器中使用的高速緩 存控制。
但是实际情况是,迄今为止还没有公开在安装SMT方式的处理器 的情况下,通过怎样的结构来实现在读取与存储指令的执行中要求的互 斥控制处理。
因此,作为制造商,在安装SMT方式的处理器的情况下,需要构 造实现在处理CAS指令等读取与存储指令时需要的互斥控制处理的新 的结构的高速緩存控制技术。
本发明是鉴于上述情况而完成的,其目的是提供一种新的高速緩存 控制技术,在SMT方式的处理器中,该技术能够通过简单的结构实现 处理CAS指令(Compare And Swap,比较并交换指令)等不可分地执 行多个处理的原子指令时需要的互斥控制处理。
i]第一结构
为了实现上述目的,本发明的高速緩存控制装置为了控制对同时执 行的多个线程共享的高速緩存的访问请求,以包括如下单元的方式构 成(l)存储单元,存储与各线程对应设置的、在该线程进入原子指令 (例如,原子加载存储指令等原子指令)的执行的情况下表示规定的值、 在该原子指令结束的情况下表示与该值不同的规定的值的标记;(2)判 断单元,在从某个线程发出访问请求的情况下,通过参照存储单元存储 的标记值,来判断与该线程不同的其他线程是否正在执行原子指令;(3) 执行单元,在判断单元判断为其他线程正在执行原子指令的情况下,执 行使访问请求待机的处理;U)指示单元,在存在从高速緩存输出数据 的请求的情况下,通过参照存储单元存储的标记值,判断全部线程是否 都不在执行原子指令,在判断为全部线程都不在执行该指令的情况下,
9指示执行从高速緩存输出数据的处理;以及(5)线程内互斥控制单元, 通过参照存储单元存储的标记值,来执行线程内的对原子指令的互斥控 制。
在以此方式构成时,进一步以包括如下单元的方式构成(6)第二 存储单元,存储表示最后进行了访问请求的处理的线程是哪个线程的信 息;(7)第二判断单元,在从某个线程发出与原子指令有关的访问请求 的情况下,判断是否存在关于该线程以外的线程的通过待机处理而待机 的访问请求;(8)决定单元,在第二判断单元判断为存在通过待机处理 而待机的访问请求的情况下,通过参照第二存储单元存储的信息确定最 后进行了访问请求的处理的线程,以该确定的线程以外的线程发出的访 问请求优先的方式,决定是选择从某个线程发出的与原子指令有关的访 问请求,还是选择该待机的访问请求;(9)第三判断单元,在从某个线 程发出与非原子指令(例如,不是原子加载存储指令的指令)有关的访 问请求的情况下,判断是否存在关于该线程以外的线程的与原子指令有 关的访问请求的发出请求;以及(10)第二决定单元,在第三判断单元 判断为存在与原子指令有关的访问请求的发出请求的情况下,通过参照 所述第二存储单元存储的信息确定最后进行了访问请求的处理的线程, 以该确定的线程以外的线程发出的访问请求优先的方式,决定是选择从 某个线程发出的与非原子指令有关的访问请求,还是选择该存在发出请 求的与原子指令有关的访问请求。
在以上述方式构成的本发明的高速緩存控制装置中,在线程进入原 子指令的执行的情况下,在存储单元存储的相应标记中写入规定的值, 并且在结束该原子指令的情况下写入与该值不同的规定的值,由此,各 个标志表示与其对应的线程是否正在执行原子指令。
在接受该标记值的表示并从某个线程发出访问请求的情况下,通过 参照存储单元存储的标记值,判断与该线程不同的其他线程是否正在执 行原子指令,在判断为其他线程正在执行原子指令的情况下,使访问请 求待机。
并且,在存在从高速緩存输出数据的请求的情况下,通过参照存储 单元存储的标记值,判断全部线程是否都不在执行原子指令,在判断为 全部线程都不在执行该指令的情况下,指示执行从高速緩存输出数据的
10处理。即,在一些线程正在执行原子指令的情况下,使从高速緩存输出 数据的处理待机。
并且,在需要执行线程内的关于原子指令的互斥控制的情况下,通 过参照存储单元存储的标记值,执行该互斥控制。
在采用该结构时,如果特定的一个线程连续执行原子指令,则发生 该线程以外的线程的访问请求连续待机这样的不理想的情况。
因此,构成为,包括第二存储单元,用于存储表示最后进行了访问 请求的处理的线程是哪个线程的信息。
并且,在从某个线程发出与原子指令有关的访问请求的情况下,在
下,通过参照第二存储单元存储的信息确定最后进行了访问请求的处理 的线程,并以该确定的线程以外的线程发出的访问请求优先的方式,决 定是选择从某个线程发出的与原子指令有关的访问请求,还是选择该待 机的访问请,,。
在采用该结构时,在从某个线程发出与非原子指令有关的访问请求 的情况下,对于该线程以外的线程,在存在与原子指令有关的访问请求 的发出请求的情况下,通过参照第二存储单元存储的信息确定最后进行 了访问请求的处理的线程,并以该确定的线程以外的线程发出的访问请 求优先的方式,决定是选择从某个线程发出的与非原子指令有关的访问 请求,还是选择该存在发出请求的与原子指令有关的访问请求。
[ii第二结构
为了实现上述目的,本发明的高速緩存控制装置为了控制对同时执 行的多个线程共享的高速緩存的访问请求,以包括如下单元的方式构
成(l)存储单元,存储与各线程对应设置的、在该线程进入原子指令 (例如原子加载存储指令等原子指令)的执行的情况下表示规定的值、 在该原子指令结束的情况下表示与该值不同的规定的值的标记,并且, 在该线程进入原子指令的执行的情况下,存储该原子指令的访问对象的 地址信息;(2)判断单元,在从某个线程发出访问请求的情况下,通过 参照存储单元存储的标记值,判断与该线程不同的其他线程是否正在执行原子指令,并且,在判断为正在执行原子指令的情况下,通过参照存 储单元存储的地址信息,判断该正在执行的原子指令的访问对象的地址
信息与该访问请求指定的地址信息是否一致;(3)执行单元,在判断单 元判断为其他线程正在执行原子指令、并且判断为该正在执行的原子指 令的访问对象的地址信息与访问请求指定的地址信息一致的情况下,执 行使访问请求待机的处理;U)指示单元,在存在从高速緩存输出数据 的请求的情况下,通过参照存储单元存储的标记值以及地址信息,判断 全部线程是否都不在执行以与输出请求指定的地址信息一致的地址信 息为访问对象的原子指令,在判断为全部线程都不在执行该指令的情况 下,指示执行从高速緩存输出数据的处理;以及(5)线程内互斥控制 单元,通过参照存储单元存储的标记值以及地址信息,来执行线程内的 对原子指令的互斥控制。
在以此方式构成时,进一步以包括如下单元的方式构成(6)第二 存储单元,存储表示最后进行了访问请求的处理的线程是哪个线程的信 息;(7)第二判断单元,在从某个线程发出与原子指令有关的访问请求 的情况下,判断是否存在关于该线程以外的线程的通过待机处理而待机 的访问请求;(8)决定单元,在第二判断单元判断为存在通过待机处理 而待机的访问请求的情况下,通过参照第二存储单元存储的信息确定最 后进行了访问请求的处理的线程,以该确定的线程以外的线程发出的访 问请求优先的方式,决定是选择从某个线程发出的与原子指令有关的访 问请求,还是选择该待机的访问请求;(9)第三判断单元,在从某个线 程发出与非原子指令(例如,不是原子加载存储指令的指令)有关的访 问请求的情况下,判断是否存在关于该线程以外的线程的与原子指令有 关的访问请求的发出请求;以及(10)第二决定单元,在第三判断单元 判断为存在与原子指令有关的访问请求的发出请求的情况下,通过参照 第二存储单元存储的信息确定最后进行了访问请求的处理的线程,以该 确定的线程以外的线程发出的访问请求优先的方式,决定是选择从某个 线程发出的与非原子指令有关的访问请求,还是选择该存在发出请求的 与原子指令有关的访问请求。
在以上述方式构成的本发明的高速緩存控制装置中,在线程进入原 子指令的执行的情况下,在存储单元存储的相应标记中写入规定的值, 并且在存储单元中写入该原子指令的访问对象的地址信息,并且在结束该原子指令的情况下在该标记中写入与进入原子指令的执行的情况下 写入的值不同的规定的值,由此,各个标志表示与其对应的线程是否正 在执行原子指令,并且,在正在执行原子指令的情况下,存储访问对象 的地址信息。
在接受该标记值的表示与地址信息的存储,并从某个线程发出访问 请求的情况下,通过参照存储单元存储的标记值,判断与该线程不同的 其他线程是否正在执行原子指令,并且,在判断为正在执行原子指令的 情况下,通过参照存储单元存储的地址信息,来判断该正在执行的原子 指令的访问对象的地址信息与该访问请求指定的地址信息是否 一致,基 于该判断结果,在判断为其他线程正在执行原子指令,并且判断为该正 在执行的原子指令的访问对象的地址信息与访问请求指定的地址信息 一致的情况下,使访问请求待机。
并且,在存在从高速緩存输出数据的请求的情况下,通过参照存储 单元存储的标记值以及地址信息,来判断全部线程是否都不在执行以与 输出请求指定的地址信息一致的地址信息为访问对象的原子指令,并在 判断为全部线程都不在执行该指令的情况下,指示执行从高速緩存输出 数据的处理。即,在任意一个线程正在执行这种原子指令的情况下,使 从高速緩存输出数据的处理待机。
并且,在需要执行线程内的对原子指令的互斥控制的情况下,通过 参照存储单元存储的标记值以及地址信息,来执行该互斥控制。
在采用该结构时,如果特定的一个线程连续执行原子指令,则发生 该线程以外的线程的访问请求连续待机这样的不理想的情况。
因此,构成为,包括第二存储单元,用于存储表示最后进行了访问 请求的处理的线程是哪个线程的信息。
并且,在从某个线程发出与原子指令有关的访问请求的情况下,对 于该线程以外的线程,在存在通过待机处理而待机的访问请求的情况 下,通过参照第二存储单元存储的信息来确定最后进行了访问请求的处 理的线程,并以该确定的线程以外的线程发出的访问请求优先的方式, 决定是选择从某个线程发出的与原子指令有关的访问请求,还是选择该
13待机的访问请求。
在采用该结构时,在从某个线程发出与非原子指令有关的访问请求 的情况下,对于该线程以外的线程,在存在与原子指令有关的访问请求 的发出请求的情况下,通过参照第二存储单元存储的信息来确定最后进 行了访问请求的处理的线程,并以该确定的线程以外的线程发出的访问 请求优先的方式,决定是选择从某个线程发出的与非原子指令有关的访 问请求,还是选择该存在发出请求的与原子指令有关的访问请求。
如上述说明的那样,根据本发明,在SMT方式的处理器中,能够 通过简单的结构实现处理CAS指令等原子指令时需要的互斥控制处理。
图l是本实施例适用的CPU的结构图。
图2是具备本实施例的一级高速緩存控制部的一实施例。
图3是优先控制电路执行的流程图。
图4是优先控制电路执行的流程图。
图5是优先控制电路执行的流程图。
图6是优先控制电路执行的流程图。
图7是优先控制电路执行的流程图。
图8是最后处理线程表示信号控制电路的说明图。
图9是优先控制电路执行的流程图。
图IO是具备本实施例的一级高速緩存控制部的其他实施例。 图11是优先控制电路执行的流程图。 图12是优先控制电路执行的流程图。 图13是优先控制电路执行的流程图。图14是优先控制电路执行的流程图。 图15是优先控制电路执行的流程图。 图16是优先控制电路执行的流程图。
图17是单线程方式的处理器中使用的高速緩存控制的结构图。 图18是单线程方式的处理器中使用的高速緩存控制处理的流程图。 图19是单线程方式的处理器中使用的高速緩存控制处理的流程图。 图20是单线程方式的处理器中使用的高速緩存控制处理的流程图。 图21是单线程方式的处理器中使用的高速緩存控制处理的流程图。 符号说明 10 CPU 20 系统控制总线 100指令/运算控制部 200 —级高速緩存控制部 201高速緩存RAM 202读取端口 203存储端口 204选择电路 205选择电路 206选择电路 207选择电路 208优先控制电路209 FS指令状态信息存储部
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 ); 线程l使用的读取端口 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发出的访问请 求。并且,4吏用FP-TOQ國THO (Fetch-Port画Top-Of画Queue-ThreadO) 指示保持线程O发出的访问请求中处理未结束的最旧的访问请求的项编 号。
读取端口 202-1具有循环使用的16个项,保持线程l发出的访问请 求。并且,使用FP-TOQ國THl (Fetch國Port-Top-Of-Queue-Threadl) 指示保持线程l发出的访问请求中处理未结束的最旧的访问请求的项编 号。
存储端口 203-0具有循环使用的16个项,保持线程0发出的存储请 求。并且,使用SP國TOQ画THO ( Store画Port画Top-Of-Queue國ThreadO )指 示保持线程0发出的存储请求中处理未结束的最旧的存储请求的项编 号。
存储端口 203-1具有循环使用的16个项,保持线程1发出的存储请 求。并且,使用SP-TOQ-TH1 ( Store國Port-Top画Of画Queue画Threadl)指 示保持线程1发出的存储请求中处理未结束的最旧的存储请求的项编 号。选择电路204-0与读取端口 202-0对应而设置,按照使FP-TOQ-TH0 所指的项优先的规定的选择逻辑,为了进行线程0请求的高速緩存访问 处理而选择读取端口 202-0的项,并从该项取出访问请求。
选择电路204-1与读取端口 202-1对应而设置,按照使FP-TOQ-THl 所指的项优先的规定的选择逻辑,为了进行线程l请求的高速緩存访问 处理而选择读取端口 202-1的项,并从该项取出访问请求。
选择电路205按照未图示的线程选择信号等指示,选择由选择电路 204-0输出的访问请求(线程0的访问请求),或者选择由选择电路204-1 输出的访问请求(线程l的访问请求)。
选择电路206-0与存储端口 203-0对应而设置,按照使SP-TOQ-TH0 所指的项优先的规定的选择逻辑,为了进行线程O请求的高速緩存访问 处理而选择存储端口 203-0的项,并从该项取出访问请求(存储请求)。
选择电路206-1与存储端口 203-1对应而设置,按照使SP-TOQ-TH1 所指的项优先的规定的选择逻辑,为了进行线程1请求的高速緩存访问 处理而选择存储端口 203-1的项,并从该项取出访问请求(存储请求)。
选择电路207按照未图示的线程选择信号等指示,选择由选择电路 206-0输出的访问请求(线程0的访问请求),或者选择由选择电路206-1 输出的访问请求(线程l的访问请求)。
优先控制电路208输入选择电路205所选择的访问请求、与发出该 访问请求的线程对应而设置的读取端口 202-0或l具有的FP-TOQ-TH1 或2、与发出该访问请求的线程对应而设置的存储端口 203-0或l具有 的SP-TOQ-TH1或2、选择电路205所选择的访问请求是读取端口 202-0 或l的第几个项的信息(图中假设是第m个)、选择电路207所选择的 访问请求是存储端口 203-0或1的第几个项的信息(图中假设是第n个), 并在FS指令状态信息存储部209中写入FS指令状态信息,并且,参 照该写入的FS指令状态信息,决定是执行选择电路205选择的访问请 求的处理,还是使该处理的执行待机。
FS指令状态信息存储部209存储与线程0对应而存储的、并在线程 O处于读取与存储请求执行过程中时表示"1"、不处于执行过程中时表示"0"的FS指令状态信息(FS-PEND-STATUS-THO),并且存储与线 程1对应而存储的、在线程1处于读取与存储请求执行过程中时表示
"1"、不处于执行过程中时表示"0"的FS指令状态信息
(FS-PEND國STATUS-TH1 )。
如后所述,该FS-PEND-STATUS-THO、 1信号在读取与存储请求 的处理开始的时间点被设置为1,在读取与存储请求的处理结束的时间 点被设置为0。
在此,在图2中,假设按照选择电路204-0、 1以及选择电路205的 选择处理,选择与线程p(p-l或O)对应设置的读取端口 202-p的第m 个项中保持的访问请求(request#m),并且,假设按照选择电路206-0、 1以及选择电路207的选择处理,选择与线程p对应设置的存储端口 203-p的第n个项中保持的访问请求(request#n=request#n )。
下面,将发出选择电路205所选择的访问请求的线程记作线程p (p=l或0 ),将另 一个线程记作线程q ( q=0或1 )。
在来自指令/运算控制部100的读取与存储请求的从执行加载到存 储为止的期间内,必须禁止由也包含已发出读取与存储请求的线程以外 的线程在内的其他指令进行的该数据的参照和更新。
因此,在线程x的读取与存储请求访问数据X时,需要设置如下条
件
(a-l)读取与存储请求的处理被禁止,直到在该处理之前的访问数 据X的线程x请求的处理全部结束为止;
(a-2 )在读取与存储请求后面访问数据X的线程x的请求的处理被 禁止,直到读取与存储请求的处理结束为止;
(b )在读取与存储请求的处理从开始到结束的期间内,禁止从高速 緩存RAM 2001输出数据X
(c)在读取与存储请求的处理从开始到结束的期间内,禁止访问数 据X的线程x以外的线程的请求的处理,直到读取与存储请求的处理结 束为止,由此,利用条件(a-l)、 (a-2)保证对读取与存储对象数据的线程内 的互斥控制,利用条件(b)保证多处理器结构中的处理器之间的互斥 控制,利用条件(c)保证处理器内的线程间的互斥控制。
作为实现这些互斥控制的一种方式,可以举出如下方式对处理器 内的全部线程将读取与存储请求的处理数设为一个请求,在读取与存储 请求的处理过程中无条件地全部禁止其他的访问请求的处理。
图3至8中图示按照该方式实现互斥控制的优先控制电路208执行 的流程图的一个例子。在此,在这些流程图中,关注从两个线程中的线 程p发出的读取与存储请求并进行说明,另 一个线程用线程q表示。
如图3的流程图所示,优先控制电路208首先在步骤S100中输入 选择电路205选择的访问请求(request#m)和选择电路207选择的访 问请求(request弁inequest弁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正在执行读取与存储 请求的情况)下,对变量"检查"设定l。
如后所述,在对变量"检查,,设定O的情况下开始访问请求的处理, 在对变量"检查"设定l的情况下使访问请求的处理待机,因此,按照 该图4的流程图,对上述的条件(c)进行检查。
接着,在图3的流程图的步骤S102中,判断变量"检查"的值是 否是O,在判断为变量"检查"的值不是0而是1时,进入步骤S108, 使选择电路205选择的线程p的访问请求的处理待机,结束处理以等待 在先请求的处理结束。即,由于对方线程q正在执行读取与存储请求,所以使选择电路205 选择的线程p的访问请求的处理待机。
另一方面,在步骤S102的判断处理中,在判断为变量"检查"的 值是0时,进入步骤S103,判断选择电路205选择的访问请求是否是 读取与存储请求。
在该步骤S103的判断处理中,判断为选择电路205选择的访问请 求是读取与存储请求时,进入步骤S104,按照图5的流程图,对上述 的条件(a-l)进行检查。
即,如图5的流程图所示那样,在FP-TOQ-THp指向第m个项, 并且SP-TOQ-THp指向第n个项的情况下,表示选择电路205选择的 读取与存储请求是最旧的访问请求,因而可以开始执行,因此对变量"检
查"设定0,并且,为了表示线程p进入读取与存储请求的处理,对 FS-PEND-STATUS-THp设定1,在除此以外的时候,对变量"检查" 设定l,由此对上述的条件(a-l)进行检查。
另一方面,在图3的流程图的步骤S103的判断处理中,判断为选 择电路205选择的访问请求不是读取与存储请求时,进入步骤S105, 按照图6的流程图,对上述的条件(a-2)进行检查。
即,如图6的流程图所示,判断FS指令状态信息存储部209中存 储的关于线程p的FS-PEND-STATUS-THp的值是否是0,在该值是0 的情况(线程p未执行读取与存储请求的情况)下,对变量"检查"设 定0,在该值是1的情况(线程p正在执行读取与存储请求的情况)下, 由于读取与存储请求处于在先执行过程中所以不能执行选择电路205选 择的访问请求,因此对变量"检查"设定l,由此,对上述的条件(a-2) 进行检查。
接着,在图3的流程图的步骤S106中,判断变量"检查"的值是 否是0,在判断为变量"检查"的值是0时进入步骤S107,开始选择电 路205选择的线程p的访问请求的处理,另一方面,在判断为变量"检 查"的值是1时进入步骤S108,使选择电路205选择的线程p的访问 请求的处理待机,结束处理以等待在先请求的处理结束。随后,优先控制电路208在读取与存储请求的加载和存储处理结束 的时间点,将FS-PEND-STATUS-THp重置为0,重新开始4吏其待机的 其他请求的处理。
另一方面,优先控制电路208对于上述的条件(b),按照图7的流 程图进行其检查。
即,如图7的流程图所示那样,在通过FS指令状态信息存储部209 中存储的关于线程p的FS-PEND-STATUS-THp的值是0,判断出线程 p未执行读取与存储请求,并且通过FS指令状态信息存储部209中存 储的关于线程q的FS-PEND-STATUS-THq的值是O,判断出线程q未 执行读取与存储请求时,开始从高速緩存RAM 201输出相应的数据, 在除此以外的时候,使从高速緩存RAM 201输出相应的数据待机。
采用上述方式,根据本实施例,在SMT方式的处理器中,能够通 过简单的结构实现处理读取与存储请求时需要的互斥控制处理。
根据以上说明可知,在任意一个线程开始读取与存储请求的处理 后,到该处理结束为止的期间内,禁止所有其他线程的访问请求的处理。 这样会产生如下情况,即某个线程中连续发出多个读取与存储请求,仅 连续处理该线程的访问请求,其他线程中的处理全部无法推进。
因此,在读取与存储请求的处理结束后,在该线程的读取端口再次 选择读取与存储请求的项时,如果其他线程的读取端口中滞留了 一些访
问请求,则使该其他线程的访问请求至少完成一个,这样,通过在此之 前不进行读取与存储请求的处理,来避免其他线程请求的处理停滞。
为了实现上述方法,如图8所示,具备最后处理线程表示信号控制 电路210,该电路用于生成表示最后结束了处理的访问请求的线程的最 后处理线禾呈表示信号(REQ-TAKEN-THREAD )。
该最后处理线程表示信号控制电路210在一些访问请求的处理结束 时设置已结束该访问请求的线程的线程编号,由此生成 REQ-TAKEN-THREAD 。这样,例如在线程有两个的情况下,在 REQ-TAKEN-THREAD表示0时,意味着最后结束访问请求的处理的 线程是线程O,在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-l )、( a-2 )、 (b)、 (c),以对象数据一致为条件进行禁止。
图10中图示按照该方式实现互斥控制的一级高速緩存控制部200 的其他实施例。
在按照该实施例的情况下,FS指令状态信息存储部209采用如下 结构作为FS指令状态信息,除了存储上述的FS-PEND-STATUS-THO、 l以外,还使用寄存器存储与线程O对应存储的、表示线程O的读取与 存储请求的对象数据的地址的FS-PEND-ADRS-THO,并且还使用寄存 器存储与线程1对应存储的、表示线程1的读取与存储请求的对象数据的地址的FS-PEND-ADRS-TH1。
在这些寄存器中,在读取与存储请求的处理开始的时间点,设置 该对象数据的地址,FS-PEND國STATUS-THO、 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执行的情况下,对变量"检查"设定l,在除 此之外的情况下,对变量"检查"设定0。
如后所述,在对变量"检查,,设定0的情况下开始访问请求的处 理,在对变量"检查"设定l的情况下使访问请求的处理待机,因此, 按照该图12的流程图,对上述的条件(c)进行检查。
接着,在图11的流程图的步骤S702中,判断变量"检查"的值 是否是0,在判断为变量"检查"的值不是0而是l时,进入步骤S708, 使选择电路205选择的线程p的访问请求的处理待机,结束处理以等待在先请求的处理结束。
即,由于对方线程q在执行对相同数据的读取与存储请求,所以 使选择电路205所选择的线程p的访问请求的处理待机。
另一方面,在步骤S702的判断处理中,在判断为变量"检查,,的 值是0时,进入步骤S703,判断选择电路205所选择的访问请求是否 是读取与存储请求。
在该步骤S703的判断处理中,判断为选择电路205所选择的访问 请求是读取与存储请求时,进入步骤S703,按照图13的流程图,对上 述的条件(a-l)进行检查。
即,如图13的流程图所示,在FP-TOQ-THp指向第m个项,并 且SP-TOQ-THp指向第n个项的情况下,表示选择电路205选择的读 取与存储请求是最旧的访问请求,因而可以开始执行,因此对变量"检 查"设定O,除此之外,为了表示线程p进入读取与存储请求的处理, 对FS國PEND画STATUS國THp设定1,并且在FS-PEND-ADRS-THp中登 记地址;在除此以外的时候,对变量"检查,,设定l,由此对上述的条 件U-1)进行检查。
另一方面,在图11的流程图的步骤S703的判断处理中,判断为 选择电路205选择的访问请求不是读取与存储请求时,进入步骤S705, 按照图14的流程图,对上述的条件(a-2 )进行检查。
即,如图14的流程图所示,判断FS指令状态信息存储部209中 存储的关于线程p的FS-PEND-STATUS-THp的值是否是0,在该值是 l的情况(线程p正在执行读取与存储请求的情况)下,进一步判断选 择电路205选择的访问请求指定的地址是否与FS指令状态信息存储部 209中存储的关于线程p的FS-PEND-ADRS-THp的地址一致。
在这些判断处理中,在判断为线程p正在先行执行相同数据的读 取与存储请求的情况下,表示不能执行选择电路205所选择的访问请求, 因此对变量"检查"设定l,在除此之外的情况下,对变量"检查,,设 定O,由此,对上述的条件(a-2)进行检查。接着,在图11的流程图的步骤S706中,判断变量"检查"的值 是否是O,在判断为变量"检查"的值是O时进入步骤S707,开始选择 电路205所选择的线程p的访问请求的处理,另一方面,在判断为变量 "检查"的值是1时进入步骤S708,使选择电路205所选择的线程p 的访问请求的处理待机,结束处理以等待在先请求的处理结束。
随后,优先控制电路208在读取与存储请求的加载和存储处理结 束的时间点,将FS-PEND-STATUS-THp重置为0,重新开始4吏其待机 的其他请求的处理。
另一方面,优先控制电路208对于上述的条件(b),按照图15 的流程图进行其检查。
即,如图15的流程图所示,判断FS指令状态信息存储部209中 存储的关于线程p的FS-PEND-STATUS-THp的值是否是O,并且,在 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后面的步骤S604a中,判断线程q中是否存在等待读取与存储请求结束的访问请求(由于地址一致而使其待机的访问请求),在存在这种访问请求的情况下,进入步骤S604的处理,在不存在这种访问请求的情况下,进入步骤S606的处理。
釆用这种方式,优先控制电路208在以图10的方式构成的一级高速緩存控制部200中,也能按照图16的流程图,使用REQ-TAKEN-THREAD,以防止发生仅连续处理特定的线程的访问请求的情况的方式进行处理。
虽然按照图示的实施例说明了本高速緩存控制装置以及控制方法,但本高速緩存控制装置以及控制方法并不限定于此。例如,在实施例中,假设安装在两个线程动作的SMT方式的处理器中,但在三个以上的线程动作的情况下也能原样适用。
产业上的可利用性
本发明能够适用于SMT方式的处理器中的高速緩存控制,通过适用本发明,在SMT方式的处理器中能够通过筒单的结构实现在处理CAS指令等原子指令时需要的互斥控制处理。
权利要求
1、一种高速缓存控制装置,其特征在于,控制对同时执行的多个线程共享的高速缓存的访问请求,包括存储单元,存储与各线程对应设置的、在该线程进入不可分地执行多个处理的原子指令的执行的情况下表示第一规定值、在该原子指令结束的情况下表示与所述第一规定值不同的第二规定值的标记;判断单元,在从某个线程发出访问请求的情况下,通过参照所述存储单元存储的标记值,判断与发出了访问请求的线程不同的其他线程是否正在执行原子指令;以及执行单元,在所述判断单元判断为所述其他线程正在执行原子指令的情况下,执行使所述发出的访问请求待机的处理。
2、 根据权利要求l所述的高速緩存控制装置,其特征在于,包括 指示单元,在存在从高速緩存输出数据的请求的情况下,通过参照所述存储单元存储的标记值,来判断全部线程是否都不在执行原子指 令,在判断为全部线程都不在执行该指令的情况下,指示执行从高速緩 存输出数据的处理。
3、 根据权利要求1或2所述的高速緩存控制装置,其特征在于, 包括线程内互斥控制单元,通过参照所述存储单元存储的标记值,来执 行线程内的对原子指令的互斥控制。
4、 一种高速緩存控制装置,其特征在于,控制对同时执行的多个 线程共享的高速緩存的访问请求,包括存储单元,存储与各线程对应设置的、在该线程进入不可分地执行 多个处理的原子指令的执行的情况下表示第一规定值、在所述执行的原 子指令结束的情况下表示与所述第 一规定值不同的第二规定值的标记, 并且,在该线程进入原子指令的执行的情况下,存储执行的原子指令的 访问对象的地址信息;判断单元,在从某个线程发出访问请求的情况下,通过参照所述存 储单元存储的标记值,判断与发出了所述访问请求的线程不同的其他线 程是否正在执行原子指令,并且,在判断为所述其他线程正在执行原子 指令的情况下,通过参照所述存储单元存储的地址信息,判断所述其他 线程正在执行的原子指令的访问对象的地址信息与所述发出的访问请 求指定的地址信息是否一致;以及执行单元,在所述判断单元判断为所述其他线程正在执行原子指 令、并且判断为所述其他线程正在执行的原子指令的访问对象的地址信息与所述发出的访问请求指定的地址信息一致的情况下,执行使所述发 出的访问请求待机的处理。
5、 根据权利要求4所述的高速緩存控制装置,其特征在于,包括 指示单元,在存在从高速緩存输出数据的请求的情况下,通过参照所述存储单元存储的标记值以及地址信息,判断全部线程是否都不在执 行以与输出请求指定的地址信息一致的地址信息为访问对象的原子指 令,在判断为全部线程都不在执行该指令的情况下,指示执行从高速緩 存输出数据的处理。
6、 根据权利要求4或5所述的高速緩存控制装置,其特征在于, 包括线程内互斥控制单元,通过参照所述存储单元存储的标记值以及地 址信息,来执行线程内的对原子指令的互斥控制。
7、 根据权利要求1至6中任一项所述的高速緩存控制装置,其特 征在于,包括第二存储单元,存储表示最后进行了访问请求的处理的线程是哪个 线程的信息;第二判断单元,在从某个线程发出与原子指令有关的访问请求的情 况下,针对该线程以外的线程,判断是否存在通过所述待机处理而待机 的访问请,,;以及决定单元,在所述第二判断单元判断为存在通过所述待机处理而待 机的访问请求的情况下,通过参照所述第二存储单元存储的信息确定最 后进行访问请求的处理的线程,以该确定的线程以外的线程发出的访问 请求优先的方式,决定是选择所述从某个线程发出的与原子指令有关的 访问请求,还是选择该待机的访问请求。
8、 根据权利要求7所述的高速緩存控制装置,其特征在于,包括 第三判断单元,在从某个线程发出与非原子指令有关的访问请求的情况下,针对该线程以外的线程,判断是否存在与原子指令有关的访问 请求的发出请求;以及第二决定单元,在所述第三判断单元判断为存在与原子指令有关的 访问请求的发出请求的情况下,通过参照所述第二存储单元存储的信息 确定最后进行了访问请求的处理的线程,以该确定的线程以外的线程发 出的访问请求优先的方式,决定是选择所述从某个线程发出的与非原子 指令有关的访问请求,还是选择该存在发出请求的与原子指令有关的访 问请求。
9、 一种高速緩存控制方法,由控制对同时执行的多个线程共享的 高速緩存的访问请求的高速緩存控制装置执行,其特征在于所述高速緩存控制装置采用包括存储单元的结构,该存储单元存储 与各线程对应设置的、在该线程进入不可分地执行多个处理的原子指令 的执行的情况下表示第一规定值、在该原子指令结束的情况下表示与所 述第一规定值不同的第二规定值的标记;在线程进入原子指令的执行的 情况下,在该存储单元存储的相应标记中写入所述第一规定值,并且在 该原子指令结束的情况下写入所述第二规定值;在从某个线程发出访问请求的情况下,通过参照所述存储单元存储 的标记值,来判断与发出了访问请求的线程不同的其他线程是否正在执 行原子指令;以及在通过所述判断处理判断为所述其他线程正在执行原子指令的情 况下,执行使所述发出的访问请求待机的处理。
10、 根据权利要求9所述的高速緩存控制方法,其特征在于所述高速緩存控制装置,在存在从高速緩存输出数据的请求的情况 下,通过参照所述存储单元存储的标记值,来判断全部线程是否都不在 执行原子指令,在判断为全部线程都不在执行该指令的情况下,指示执 行从高速緩存输出数据的处理。
11、 一种高速緩存控制方法,由控制对同时执行的多个线程共享的 高速緩存的访问请求的高速緩存控制装置执行,其特征在于所述高速緩存控制装置采用包括存储单元的结构,该存储单元存储 与各线程对应设置的、在该线程进入不可分地执行多个处理的原子指令 的执行的情况下表示第一规定值、在所述执行的原子指令结束的情况下 表示与所述第一规定值不同的第二规定值的标记,并且在该线程进入原 子指令的执行的情况下,存储执行的原子指令的访问对象的地址信息; 在线程进入原子指令的执行的情况下,在该存储单元存储的相应标记中 写入所述第一规定值,并且在所述存储单元中写入该原子指令的访问对 象的地址信息,并且在该原子指令结束的情况下在该标记中写入所述第 二规定值;在从某个线程发出访问请求的情况下,通过参照所述存储单元存储 的标记值,来判断与发出了所述访问请求的线程不同的其他线程是否正 在执行原子指令,并且,在判断为所述其他线程正在执行原子指令的情 况下,通过参照所述存储单元存储的地址信息,来判断所述其他线程正 在执行的原子指令的访问对象的地址信息与所述发出的访问请求指定的地址信息是否一致;以及在通过所述判断处理判断为所述其他线程正在执行原子指令、并且 判断为所述其他线程正在执行的原子指令的访问对象的地址信息与所 述发出的访问请求指定的地址信息一致的情况下,执行使所述发出的访 问请求待机的处理。
12、根据权利要求ll所述的高速緩存控制方法,其特征在于 所述高速緩存控制装置在存在从高速緩存输出数据的请求的情况 下,通过参照所述存储单元存储的标记值以及地址信息,判断全部线程 是否都不在执行以与输出请求指定的地址信息一致的地址信息为访问 对象的原子指令,在判断为全部线程都不在执行该指令的情况下,指示 执行从高速緩存输出数据的处理。
全文摘要
为了控制对多个线程共享的高速缓存的访问请求,构成为具备存储与各线程对应设置的标记的存储单元,在线程进入原子指令的执行的情况下,在存储单元存储的标记中写入规定的值,并且在该原子指令结束的情况下写入与该值不同的规定的值,由此表示线程是否正在执行原子指令。并且,在从某个线程发出访问请求的情况下,通过参照存储单元的标记值,判断与该线程不同的其他线程是否正在执行原子指令,在判断为其他线程正在执行原子指令的情况下,使访问请求待机。据此,能够通过简单的结构实现在处理原子指令时需要的互斥控制处理。
文档编号G06F12/08GK101689143SQ20078005339
公开日2010年3月31日 申请日期2007年6月20日 优先权日2007年6月20日
发明者清田直宏 申请人:富士通株式会社