CN103098021A - 在多插槽系统中请求拥有链 - Google Patents

在多插槽系统中请求拥有链 Download PDF

Info

Publication number
CN103098021A
CN103098021A CN201280002803XA CN201280002803A CN103098021A CN 103098021 A CN103098021 A CN 103098021A CN 201280002803X A CN201280002803X A CN 201280002803XA CN 201280002803 A CN201280002803 A CN 201280002803A CN 103098021 A CN103098021 A CN 103098021A
Authority
CN
China
Prior art keywords
local
entry
cache line
request
address chain
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
Application number
CN201280002803XA
Other languages
English (en)
Other versions
CN103098021B (zh
Inventor
C·W·M·陈
M·坎达潘尼
J·Y·拉姆
R·斯维拉马克瑞斯南
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oracle International Corp
Oracle America Inc
Original Assignee
Oracle International Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Oracle International Corp filed Critical Oracle International Corp
Publication of CN103098021A publication Critical patent/CN103098021A/zh
Application granted granted Critical
Publication of CN103098021B publication Critical patent/CN103098021B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一种方法,包括:接收访问高速缓存行的多个本地请求;将与多个本地请求对应的多个条目插入地址链中;标识在地址链的头部的第一条目;响应标识出第一条目,并且响应所述第一条目对应于拥有高速缓存行的请求,开始地址链的遍历;在地址链的遍历期间,设定在第二条目中标识的状态元素;接收访问高速缓存行的外部请求;响应设定所述状态元素,将对应于所述外部请求的第三条目插入地址链中第二条目之后;和响应在地址链中的第二条目之后插入第三条目,在执行多个本地请求之后,将高速缓存行让给外部线程。

Description

在多插槽系统中请求拥有链
背景技术
线程是可被调度用于执行的最小处理单元。因而,线程可被视为一系列的指令,包括访问(即,读取和/或写入)高速缓存行的指令。许多计算机系统具有并行执行多个线程的两个或者更多的多线程处理器。尽管通常通过具有多个多线程处理器,改善了计算机系统的性能,不过取决于线程被准予访问的顺序,多个线程之间访问相同的高速缓存行的并行尝试可能造成性能问题。这由与插槽(socket)间高速缓存行转移相关的较长等待时间引起。尽管存在这种插槽间高速缓存行转移等待时间,不过具有多个多线程处理器的计算机系统架构仍然被广泛使用。
发明内容
在一个方面,本发明涉及一种管理高速缓存行的方法。所述方法包括:从在本地多线程处理器上执行的多个本地线程接收访问高速缓存行的多个本地请求;将与多个本地请求对应的多个条目插入与高速缓存行相关的地址链中;标识所述多个条目中在地址链的头部的第一条目;响应标识在头部的第一条目并且响应所述第一条目对应于拥有高速缓存行的请求(RTO),开始地址链的遍历;在地址链的遍历期间,设定在所述多个条目中的第二条目中标识的状态元素,其中所述状态元素对应于来自中央排序单元的对于与所述第二条目对应的本地请求的串行化确认;从在外部多线程处理器上执行的外部线程接收访问高速缓存行的外部请求;响应设定所述状态元素,将对应于所述外部请求的第三条目插入地址链中第二条目之后;和响应在地址链中的第二条目之后插入所述第三条目,在执行所述多个本地请求之后,将高速缓存行让给外部线程。
在一个方面,本发明涉及一种保存管理高速缓存行的指令的非临时性计算机可读存储介质。所述指令包括以下功能:从在本地多线程处理器上执行的多个本地线程接收访问高速缓存行的多个本地请求;将与多个本地请求对应的多个条目插入与高速缓存行相关的地址链中;标识所述多个条目中在地址链的头部的第一条目;响应第一条目在头部被标识并且响应所述第一条目对应于拥有高速缓存行的请求(RTO),开始地址链的遍历;在地址链的遍历期间,设定在所述多个条目中的第二条目中标识的状态元素,其中所述状态元素对应于来自中央排序单元的对于与所述第二条目对应的本地线程的串行化确认;从在外部多线程处理器上执行的外部线程接收访问高速缓存行的外部请求;响应所述状态元素被设定,将对应于所述外部请求的第三条目插入地址链中第二条目之后;和响应所述第三条目被插入在地址链中的第二条目之后,在执行所述多个本地请求之后,将高速缓存行让给外部线程。
在一个方面,本发明涉及一种管理高速缓存行的系统。所述系统包括:在本地多线程处理器上执行并且发出访问高速缓存行的多个本地请求的多个本地线程;在外部多线程处理器上执行,并且发出访问高速缓存行的外部请求的外部线程;和保存高速缓存行,并且包含保存对应于多个本地请求的多个本地条目和对应于外部请求的外部条目的地址链的本地高速缓冲存储器,其中本地高速缓冲存储器被配置成在地址链的遍历期间,设定在多个本地条目中标识并且对应于来自中央排序单元的串行化确认的状态元素,其中响应所述状态元素被设定,将所述外部条目插入地址链中所述多个本地条目之后,并且其中响应所述外部条目被插入地址链中所述多个本地条目之后,在执行所述多个本地请求之后,将高速缓存行让给外部线程。
根据以下说明和附加权利要求,本发明的其它方面将是显而易见的。
附图说明
图1表示按照本发明的一个或多个实施例的系统。
图2表示按照本发明的一个或多个实施例的高速缓存行。
图3表示按照本发明的一个或多个实施例的地址链。
图4表示按照本发明的一个或多个实施例的流程图。
图5表示按照本发明的一个或多个实施例的例子。
图6表示按照本发明的一个或多个实施例的计算机系统。
具体实施方式
下面参考附图,详细说明本发明的具体实施例。考虑到一致性,各个图中的相同元件用相同的附图标记表示。
在本发明的实施例的以下详细说明中,记载了众多的具体细节,以便更透彻地理解本发明。不过,对本领域的普通技术人员来说,显然可在没有这些具体细节的情况下实践本发明。在其它情况下,没有详细说明公知的特征,以避免不必要地使说明变复杂。
一般来说,本发明的实施例提供管理高速缓存行的系统和方法。具体地说,高速缓存行被保持在本地多线程处理器的高速缓冲存储器中,直到所有本地请求(即,由在本地多线程处理器上执行的线程发出的请求)都被处理为止。只有在处理了本地请求之后,高速缓存行才被让给由在外部处理器上执行的外部线程发出的外部请求。在本发明的一个或多个实施例中,本地多线程处理器包括对应于高速缓存行并且保存对应于本地请求的本地条目的地址链。慎重地设定由各个本地条目标识的状态元素,以迫使对应于外部请求的条目被插入在地址链的末端(即,尾部),从而在本地请求被处理之后才被处理。
图1表示按照本发明的一个或多个实施例的多插槽系统(100)。如图1中所示,多插槽系统(100)具有多个组件,包括中央排序单元(102)、存储器(142),和执行一个或多个线程(即,线程A1(107)、线程AN(109)、线程B1(127)、线程BN(129))的一个或多个多线程处理器(即,多线程处理器A(105)、多线程处理器B(125))。此外,每个多线程处理器(105,205)包括保存一个或多个高速缓存行(即,高速缓存行A(113)、高速缓存行B(133))和一个或多个地址链(即,地址链A(115)、地址链B(135))的高速缓冲存储器(即,高速缓冲存储器A(111)、高速缓冲存储器B(131))。
在本发明的一个或多个实施例中,线程(107,109,127,129)包括访问(即,读取和/或写入)存储器(142)中的一个或多个位置的指令(即,请求)。这些存储器位置可保存多个线程都能访问的共享资源(例如,锁、全局变量等),和/或只有特定线程才能访问的专有变量。为了加速这些指令的执行,这些存储器地址的内容可被本地保存在访问时间比存储器(142)快的高速缓冲存储器(111,131)中。具体地说,每个高速缓存行(113,133)对应于存储器(142)中的一块位置,是该块位置中的内容(即,共享资源、专有变量等)的本地副本。
在本发明的一个或多个实施例中,如果本地高速缓冲存储器(即,高速缓冲存储器A(111))未保存本地线程(例如,线程A1(107))请求的存储器地址的内容,那么从保存相应的高速缓存行的外部高速缓冲存储器(即,高速缓冲存储器B(131))转移该相应的高速缓存行(即,该外部线程让出该高速缓存行)。不过,如果没有外部高速缓冲存储器保存该高速缓存行,那么从存储器(142)取回该高速缓存行。
在本发明的一个或多个实施例中,取决于线程被准予访问的顺序,在线程(107,109,127,129)之间访问相同的高速缓存行的并行尝试可能造成性能问题。这由与插槽间高速缓存行转移(即,来往于外部高速缓冲存储器和本地高速缓冲存储器之间的转移)相关的较长等待时间引起。
例如,假定线程A1(107)具有对包含全局变量的高速缓存行A(113)的写访问,而线程AN(109)具有保存到相同全局变量的指令。线程AN(109)从线程A1(107)获得所述写访问需要10ns-20ns。不过,如果线程B1(127)具有保存到相同全局变量的指令,那么处理器间转移(即,高速缓存行A(113)到高速缓冲存储器B(131)的转移)可能花费不止100ns。为了改善所有线程经历的总等待时间,更为有效的是在将高速缓存行让给多线程处理器外部的线程之前,在该多线程处理器本地的多个线程内摊销将该高速缓存行引入该多线程处理器中的等待时间。
图2表示按照本发明的一个或多个实施例的多个高速缓存行(即,高速缓存行W(210)、高速缓存行Z(250))。高速缓存行(210,250)可对应于上面参考图1说明的高速缓存行A(113)或者高速缓存行B(133)任何一个。
如图2中所示,高速缓存行(210,250)可包括共享资源(例如,全局变量W(212))和/或专有变量(即,专有变量Z1(213)、专有变量Z2(214))。多个线程可并行发出访问高速缓存行W(210)的请求,以便读取和/或写入全局变量W(212)。这是真共享(即,多个线程并行发出访问高速缓存行中的一个或多个相同字节的请求)的例子。作为替代地,一个线程可发出访问高速缓存行Z(250),以便读取和/或写入专有变量Z1(213)的请求,而一个不同的线程可并行发出访问高速缓存行Z(250),以便读取和/或写入专有变量Z2(214)的请求。这是伪共享(即,多个线程并行发出访问高速缓存行中的非重叠字节的请求)的例子。单个高速缓存行可以既具有共享资源,又具有专有变量。
返回参见图1,每个高速缓冲存储器(111,131)包括与保存的高速缓存行(113,133)对应的一个或多个地址链(115,135)。地址链(115,135)控制/跟踪处理对高速缓存行(113,133)的请求的顺序。具体地说,地址链A(115)规定线程(107,109,127,129)访问高速缓存行A(113)的顺序。类似地,地址链B(135)规定线程(107,109,127,129)访问高速缓存行B(133)的顺序。
图3表示按照本发明的一个或多个实施例的地址链(即,地址链Q(310))。地址链Q(310)是上面参考图1说明的地址链A(115)的例子。如图3中所示,地址链Q(310)包括多个本地条目(即,本地条目A1(302)、本地条目A2(304)、本地条目A3(306)等)和至少一个外部条目(即,外部条目B1(308))。本地条目(302,304,306)对应于本地线程(例如,线程A1(107)、线程AN(109))访问高速缓存行A(113)的请求(即,本地请求)。外部条目B1(308)对应于外部线程(例如,线程B1(127))访问高速缓存行A(113)的请求(即,外部请求)。
在本发明的一个或多个实施例中,如果在多线程处理器A(105)上执行的多个线程发出对高速缓存行A(113)的存储请求,那么创建对应于这些“本地”存储的本地条目(302,304,306),并插入地址链Q(310)中。按照接收“本地”存储的顺序,处理这些“本地”存储。换句话说,串行处理这些“本地”存储(在任意特定时间,只处理地址链的一个成员)。在本发明的一个或多个实施例中,构造地址链Q(310),以致如果该地址链中的最旧的请求(即,在头部(312)的条目)是请求拥有(RTO)(例如,存储、交换(SWAP)操作、比较并交换(CAS)操作等),那么保证在高速缓存行被让与外部请求之前,完成地址链中的所有本地条目。换句话说,如果地址链(310)的头部(312)是RTO,那么与外部线程(例如,线程B1(127)、线程BN(129))作出的外部请求对应的外部条目B1(308)被追加在地址链(310)中的最新的本地条目之后,从而使得可以在外部请求开始被处理之前,完成所有本地链成员。
如上所述,多插槽系统(100)包括中央排序单元(102)。中央排序单元(102)选择将在系统(100)中有效的请求(即,线程发出的请求),并向选择为有效的线程发出串行化确认。在本发明的一个或多个实施例中,每个本地条目(302,304,306)包括称为mb_acked的状态元素。当收到来自中央排序单元(102)的串行化确认时,设定状态元素mb_acked。串行化确认指示对应于该本地条目的请求现在在系统中有效。在本发明的一个或多个实施例中,只有与在地址链(310)头部的条目对应的请求才能够收到来自中央排序单元(102)的串行化确认。
在本发明的一个或多个实施例中,只要最旧的成员(即,在头部(312)的条目)是RTO,就抢先对地址链(310)的较新成员设定mb_acked。换句话说,即使对于地址链(310)的较新成员,尚未从中央排序单元收到串行化确认,也将对较新的成员设定状态元素mb_acked,只要RTO在地址链的头部。此外,即使原来的最旧成员不是RTO,当RTO到达地址链的头部时,将遍历地址链,以设定所有的后续(即,较新)成员的mb_acked比特(即,设定mb_acked=1)。
在本发明的一个或多个实施例中,mb_acked状态元素被外部请求用于确定对应的外部条目B1(308)应被插入的地址链(310)中的位置。在本发明的一个或多个实施例中,外部请求在mb_acked被设定为1的最新的成员之后(即,在本地条目A3(306)之后),插入对应的外部条目B1(308)。
受益于上面的详细说明,本领域的技术人员会理解如果只有当请求从中央排序单元(即,上面参考图1说明的中央排序单元(102))收到串行化确认时,才设定mb_acked状态,那么由于在地址链的较新成员到达地址链的头部之前不能向中央排序单元(102)发送请求,因此当外部请求到达时,所述较新的成员可能不能使它们各自的mb_acked比特被设定。从而,在这样的情形下,可以紧接在地址链中的最旧的有效请求之后(即,紧接在本地条目A1(302)之后)插入外部条目B1(308),并在本地条目A1(302)的处理完成时将高速缓存行转移到外部高速缓冲存储器。
图4表示按照本发明的一个或多个实施例的流程图。图4中所示的处理可由多插槽系统(100)的一个或多个组件执行。在本发明的不同实施例之中,图4中所示的一个或多个步骤可被省略、重复和/或按不同的顺序进行。因而,本发明的实施例不应被认为局限于图4中所示步骤的具体数目和排列。
最初,从在本地多线程处理器上执行的多个本地线程接收访问高速缓存行的多个本地请求(步骤405)。该高速缓存行可包括由多个本地线程共享的资源(例如,全局变量)(即,真共享),和/或该高速缓存行可包括未被多个本地线程共享,但是保存在该高速缓存行的非重叠字节中的各个专有变量(即,假共享)。
在步骤410,对应于本地请求的多个本地条目被插入与该高速缓存行相关的地址链中。每个本地条目识别对应的本地线程和状态元素(即,mb_acked)。如果多线程处理器的高速缓冲存储器尚未保存该高速缓存行,那么将需要从保存该高速缓存行的外部高速缓冲存储器转移该高速缓存行。不过,如果没有外部高速缓冲存储器保存该高速缓存行,那么将需要从主存储器取回该高速缓存行。
在步骤415,确定在地址链的头部的本地条目(即,头部条目)对应于拥有该高速缓存行的请求(RTO)。如上所述,拥有请求的例子包括存储操作、交换操作、CAS操作等等。
在步骤420,响应确定头部条目对应于拥有该高速缓存行的请求,遍历地址链。换句话说,地址链的遍历由在地址链的头部的RTO触发。在所述遍历期间,设定地址链中的本地条目中的状态元素(即,mb_acked=1)。可在从中央排序单元收到对RTO头部条目的串行化确认之前或之后,进行所述遍历。
在步骤425,接收访问该高速缓存行的外部请求。该外部请求由在外部多线程处理器上执行的外部线程发出。创建关于该外部请求的外部条目,并插入地址链中。具体地说,在其状态元素被设定(即,mb_acked=1)的最新的本地条目之后插入该外部条目。因而,该外部条目实际上被插入在地址链的尾部,在地址链的头部和该外部条目之间的所有条目是本地条目。
在步骤430,在外部请求之前处理所有的本地请求,因为在地址链中,外部条目在本地条目之后。一旦处理了本地请求,就将高速缓存行让给对应于外部条目的外部线程。将高速缓存行让给外部线程可包括将高速缓存行从本地多线程处理器的高速缓冲存储器转移到执行该外部线程的外部多线程处理器的高速缓冲存储器。让与的高速缓存行可被保存在外部处理器的高速缓冲存储器中。
图5表示按照本发明的一个或多个实施例的例子。具体地说,图5中的例子包括两种情形:情形I(598)和情形II(599)。
在情形I(598)中,本地线程发出访问高速缓存行的多个本地存储请求。假定该高速缓存行已被保存在执行本地线程的本地多线程处理器的高速缓冲存储器中。因而,该高速缓存行的地址链(501)包括对应于存储请求的3个条目(即,存储X1(505)、存储X2(507)、存储X3(509))。此外,每个条目标识mb_acked状态元件。如在情形I(598)中所示,对地址链(501)中的存储X1(505),mb_acked状态元素被设定(即,mb_acked=1)。响应从中央排序单元收到对相应请求的串行化确认,设定存储X1(505)的mb_acked状态元素。不过,未设定剩余条目(507,509)中的mb_acked状态元素(即,mb_acked=0)。
仍然参见情形I(598),在对该高速缓存行的外部存储请求到达时,创建外部条目(即,存储Y1(511))。如在地址链(502)中所示,紧接在使mb_acked状态元素被设定的最新的本地条目之后(即,紧接在存储X1(505))之后,插入外部条目(即,存储Y1(511))。因而,一旦完成对应于存储X1(505)的本地请求的处理,存储Y1(511)是地址链(502)中的下一个条目,且该高速缓存行将被让给发出外部请求的外部多线程处理器。该高速缓存行最终将需要被归还给本地多线程处理器,以便处理剩余的本地条目(即,存储X2(507)、存储X3(509))。高速缓存行的让与和高速缓存的归还是费时的操作。
在情形II(599)中,本地线程发出访问高速缓存行的多个本地存储请求。假定该高速缓存行已被保存在执行本地线程的本地多线程处理器的高速缓冲存储器中。因而,该高速缓存行的地址链(552)包括对应于存储请求的3个条目(即,存储X1(505)、存储X2(507)、存储X3(509))。此外,每个条目标识mb_acked状态元素。当将地址链(552)中的头部条目标识为RTO时,遍历地址链(552),且设定地址链(552)中的所有后续(即,较新的)成员的mb_acked状态元素,即使较新的成员尚未收到串行化确认。如在情形II(599)中所示,对地址链(552)中的所有条目(即,存储X1(505)、存储X2(507)、存储X3(509))设定mb_acked状态元素(即,mb_acked=1)。
仍然参见情形II(599),在对该高速缓存行的外部存储请求到达时,创建外部条目(即,存储Y1(511))。如在地址链(554)中所示,紧接在使mb_acked状态元素被设定的最新的本地条目之后(即,紧接在存储X3(509))之后,插入外部条目(即,存储Y1(511))。因而,只有在所有本地请求(即,存储X1(505)、存储X2(507)和存储X3(509))的处理之后,高速缓存行才被让给发出外部请求的外部多线程处理器。通过在让与高速缓存行之前,处理所有的本地请求,不在本地处理器和外部处理器之间反复转移高速缓存行,从而减小由高速缓存行的反复转移引起的延迟。情形II(599)可以利用上面参考图1说明的多插槽系统(100),和/或上面参考图4说明的处理来实现。
作为另一个例子,假定存在执行8个本地线程的本地多线程处理器,和执行8个外部线程的外部处理器。此外,假定所有8个本地线程和所有8个外部线程都想对相同的高速缓存行进行更新。另外,假定插槽内等待时间(即,在本地线程之间转移高速缓存行的访问的等待时间)为20ns,而插槽间等待时间(即,在本地线程和外部线程之间转移访问的等待时间)为100ns,并且最初将高速缓存行从存储器提取到发出第一个请求的本地多线程处理器中的高速缓冲存储器需要100ns。在情形I(598)中,高速缓存行将在本地多线程处理器和外部多线程处理器之间被反复转移,访问准许之间的增量延迟为100ns,或者换句话说,用于所有16个线程进行它们各自的更新的总时间为16*100ns=1600ns。在情形II(599)中,本地多线程处理器中的所有8个线程将在将高速缓存行让给外部多线程处理器之前,开始对高速缓存行进行它们的更新,需要100ns+(7*20ns)=240ns。外部多线程处理器中的所有8个线程随后将能够依次更新高速缓存行,再次需要100ns+(7*20ns)=240ns。与情形I(598)中的1600ns相对,在情形II(599)中,所有16个线程完成其更新所用的总时间为240ns+240ns=480ns。
本发明的实施例实际上可以在任何种类的计算机上实现,与使用的平台无关。例如,如图6中所示,计算机系统(600)包括一个或多个处理器(602)(比如中央处理单元(CPU)、集成电路等),相关的存储器(604)(例如,随机存取存储器(RAM)、高速缓冲存储器、闪速存储器等)、存储装置(606)(例如,硬盘、诸如压缩盘驱动器或数字视频盘(DVD)驱动器之类的光驱、闪速记忆棒等),和目前的计算机特有的众多其它元件和功能(未示出)。计算机系统(600)还可包括输入装置,比如键盘(608)、鼠标(610)或麦克风(未示出)。此外,计算机系统(600)可包括输出装置,比如监视器(612)(例如,液晶显示器(LCD)、等离子体显示器或者阴极射线管(CRT)监视器)。计算机系统(600)可通过网络接口连接(未示出)而连接到网络(614)(例如局域网(LAN)、诸如因特网之类的广域网(WAN),或者任何其它种类的网络)。本领域的技术人员会理解存在许多不同种类的计算机系统,上述输入和输出装置可以采取其它形式。一般来说,计算机系统(600)至少包括实践本发明的实施例必需的最少的处理、输入和/或输出装置。
此外,在本发明的一个或多个实施例中,上述计算机系统(600)的一个或多个元件可以位于远程位置,并通过网络与其它元件连接。此外,可在具有多个节点的分布式系统上实现本发明的实施例,其中本发明的各个部分可以位于分布式系统内的不同节点上。在本发明的一个实施例中,所述节点对应于计算机系统。作为替代地,所述节点可对应于具有相关物理存储器的处理器。作为替代地,节点可以对应于处理器,或者具有共享存储器和/或资源的处理器的微内核。此外,呈实现本发明的实施例的计算机可读程序代码形式的软件指令可被临时或永久保存在有形的计算机可读存储介质上,比如保存在压缩盘(CD)、磁盘、固态存储器件、磁带、存储器或者任何其它非瞬时的有形计算机可读存储设备上。
虽然关于数目有限的实施例说明了本发明,不过受益于本公开,本领域的技术人员会理解可以作出不脱离这里公开的本发明的范围的其它实施例。因而,本发明的范围只应由附加的权利要求限定。

Claims (20)

1.一种管理高速缓存行的方法,包括:
从在本地多线程处理器上执行的多个本地线程接收所述访问高速缓存行的多个本地请求;
将与所述多个本地请求对应的多个条目插入与所述高速缓存行相关的地址链中;
标识在地址链的头部的所述多个条目中的第一条目;
响应标识在头部的第一条目,并且响应所述第一条目对应于拥有所述高速缓存行的请求RTO,开始所述地址链的遍历;
在所述地址链的遍历期间,设定在所述多个条目中的第二条目中标识的状态元素,其中所述状态元素对应于来自中央排序单元的对于与所述第二条目对应的本地请求的串行化确认;
从在外部多线程处理器上执行的外部线程接收访问所述高速缓存行的外部请求;
响应设定所述状态元素,将对应于所述外部请求的第三条目插入地址链中第二条目之后;和
响应将第三条目插入在地址链中第二条目之后,在执行所述多个本地请求之后,将所述高速缓存行让给外部线程。
2.按照权利要求1所述的方法,还包括:
响应收到所述多个本地请求中的至少一个,从操作上连接到所述本地多线程处理器的存储器取回所述高速缓存行;和
将所述高速缓存行保存在所述本地多线程处理器的高速缓冲存储器中,
其中所述高速缓存行包含用于所述多个本地线程和所述外部线程的全局变量。
3.按照权利要求1所述的方法,其中所述高速缓存行包含用于所述多个本地线程的多个专有变量。
4.按照权利要求1所述的方法,还包括:
在开始所述遍历之后,从中央排序单元接收对于与地址链中的第一条目对应的本地请求的串行化确认。
5.按照权利要求1所述的方法,其中外部请求对应于存储操作。
6.按照权利要求1所述的方法,其中所述RTO是交换操作。
7.按照权利要求1所述的方法,其中将高速缓存行让给外部线程包括将所述高速缓存行保存在外部多线程处理器的高速缓冲存储器中。
8.一种保存管理高速缓存行的指令的非临时性计算机可读存储介质,所述指令包括以下功能:
从在本地多线程处理器上执行的多个本地线程接收所述访问高速缓存行的多个本地请求;
将与所述多个本地请求对应的多个条目插入与所述高速缓存行相关的地址链中;
标识在地址链的头部的所述多个条目中的第一条目;
响应在头部标识出第一条目,并且响应所述第一条目对应于拥有所述高速缓存行的请求RTO,开始所述地址链的遍历;
在所述地址链的遍历期间,设定在所述多个条目中的第二条目中标识的状态元素,其中所述状态元素对应于来自中央排序单元的对于与所述第二条目对应的本地请求的串行化确认;
从在外部多线程处理器上执行的外部线程接收访问所述高速缓存行的外部请求;
响应设定所述状态元素,将对应于所述外部请求的第三条目插入地址链中第二条目之后;和
响应所述第三条目被插入在地址链中第二条目之后,在执行所述多个本地请求之后,将所述高速缓存行让给外部线程。
9.按照权利要求8所述的非临时性计算机可读存储介质,所述指令还包括以下功能:
响应收到所述多个本地请求中的至少一个,从操作上连接到所述本地多线程处理器的存储器取回所述高速缓存行;和
将所述高速缓存行保存在所述本地多线程处理器的高速缓冲存储器中,
其中所述高速缓存行包含用于所述多个本地线程和所述外部线程的全局变量。
10.按照权利要求8所述的非临时性计算机可读存储介质,其中所述高速缓存行包含用于所述多个本地线程的多个专有变量。
11.按照权利要求8所述的非临时性计算机可读存储介质,所述指令还包括以下功能:
在开始所述遍历之后,从中央排序单元接收对于与地址链中的第一条目对应的本地请求的串行化确认。
12.按照权利要求8所述的非临时性计算机可读存储介质,其中外部请求对应于存储操作。
13.按照权利要求8所述的非临时性计算机可读存储介质,其中所述RTO是交换操作。
14.按照权利要求8所述的非临时性计算机可读存储介质,其中将高速缓存行让给外部线程的指令包括以下功能:
将所述高速缓存行保存在外部多线程处理器的高速缓冲存储器中。
15.一种管理高速缓存行的系统,所述系统包括:
多个本地线程,在本地多线程处理器上执行,并且发出访问所述高速缓存行的多个本地请求;
外部线程,在外部多线程处理器上执行,并且发出访问所述高速缓存行的外部请求;和
本地高速缓冲存储器,保存所述高速缓存行并且包含地址链,所述地址链保存对应于所述多个本地请求的多个本地条目和对应于所述外部请求的外部条目,
其中本地高速缓冲存储器被配置成在地址链的遍历期间,设定在所述多个本地条目中标识的并且对应于来自中央排序单元的串行化确认的状态元素,
其中响应所述状态元素被设定,将所述外部条目插入地址链中所述多个本地条目之后,
其中响应所述外部条目被插入地址链中所述多个本地条目之后,在执行所述多个本地请求之后,将所述高速缓存行让给外部线程。
16.按照权利要求15所述的系统,其中响应地址链的头部是拥有高速缓存行的请求RTO,开始所述遍历。
17.按照权利要求16所述的系统,其中所述RTO是CAS操作。
18.按照权利要求15所述的系统,还包括:
外部高速缓冲存储器,配置成在所述高速缓存行被让与外部线程之后保存所述高速缓存行。
19.按照权利要求15所述的系统,其中所述高速缓存行包含用于所述多个本地线程的多个专有变量。
20.按照权利要求15所述的系统,还包括:
存储器,操作上连接到本地多线程处理器和外部多线程处理器,
其中响应所述多个本地请求中的至少一个从存储器取回所述高速缓存行,和
其中所述高速缓存行包含用于所述多个本地请求和所述外部请求的全局变量。
CN201280002803.XA 2011-05-13 2012-04-30 在多插槽系统中请求拥有链 Active CN103098021B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161486197P 2011-05-13 2011-05-13
US61/486,197 2011-05-13
US13/220,286 2011-08-29
US13/220,286 US8527712B2 (en) 2011-05-13 2011-08-29 Request to own chaining in multi-socketed systems
PCT/US2012/035757 WO2012158331A1 (en) 2011-05-13 2012-04-30 Request to own chaining in multi-socketed systems

Publications (2)

Publication Number Publication Date
CN103098021A true CN103098021A (zh) 2013-05-08
CN103098021B CN103098021B (zh) 2015-08-26

Family

ID=47142678

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280002803.XA Active CN103098021B (zh) 2011-05-13 2012-04-30 在多插槽系统中请求拥有链

Country Status (4)

Country Link
US (1) US8527712B2 (zh)
EP (1) EP2707793B1 (zh)
CN (1) CN103098021B (zh)
WO (1) WO2012158331A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8719504B2 (en) 2012-09-14 2014-05-06 International Business Machines Corporation Efficient processing of cache segment waiters

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040162951A1 (en) * 2003-02-13 2004-08-19 Jacobson Quinn A. Method and apparatus for delaying interfering accesses from other threads during transactional program execution
CN101253482A (zh) * 2005-08-30 2008-08-27 英特尔公司 公平可缩放的读者写者互斥
US7774552B1 (en) * 2007-01-30 2010-08-10 Oracle America, Inc. Preventing store starvation in a system that supports marked coherence

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8244988B2 (en) * 2009-04-30 2012-08-14 International Business Machines Corporation Predictive ownership control of shared memory computing system data
US20110296096A1 (en) * 2010-05-28 2011-12-01 Xiang Zou Method And Apparatus For Virtualized Microcode Sequencing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040162951A1 (en) * 2003-02-13 2004-08-19 Jacobson Quinn A. Method and apparatus for delaying interfering accesses from other threads during transactional program execution
CN101253482A (zh) * 2005-08-30 2008-08-27 英特尔公司 公平可缩放的读者写者互斥
US7774552B1 (en) * 2007-01-30 2010-08-10 Oracle America, Inc. Preventing store starvation in a system that supports marked coherence

Also Published As

Publication number Publication date
EP2707793A1 (en) 2014-03-19
WO2012158331A1 (en) 2012-11-22
US8527712B2 (en) 2013-09-03
EP2707793B1 (en) 2018-12-19
US20120290794A1 (en) 2012-11-15
CN103098021B (zh) 2015-08-26

Similar Documents

Publication Publication Date Title
US10642685B2 (en) Cache memory and processor system
US9870328B2 (en) Managing buffered communication between cores
US9665505B2 (en) Managing buffered communication between sockets
CN105359114B (zh) 用于在寻址方案之间进行迁移的方法和系统
US10019363B2 (en) Persistent memory versioning and merging
US20200042513A1 (en) Transaction control device, transaction control method
US10698851B1 (en) Data bit width converter and system on chip thereof
JP2006512657A (ja) メモリ・コントローラおよびメモリに書き込む方法
US9389997B2 (en) Heap management using dynamic memory allocation
KR20180027646A (ko) I/o 패킷 압축을 위한 레지스터 파일
US20210109762A1 (en) Multi-die and multi-core computing platform and booting method for the same
US6782463B2 (en) Shared memory array
US20200081654A1 (en) Command processing method and storage controller using the same
US9058301B2 (en) Efficient transfer of matrices for matrix based operations
US9715398B2 (en) Program code loading method of application and computing system using the same
US10191846B2 (en) Cache memory for particular data
US9507725B2 (en) Store forwarding for data caches
US6460121B1 (en) Method for providing an atomic memory read using a compare-exchange instruction primitive
CN103098021B (zh) 在多插槽系统中请求拥有链
CN106406745A (zh) 根据目录信息维护Cache数据一致性的方法及装置
CN112764897B (zh) 任务请求的处理方法、装置、系统及计算机可读存储介质
CN110716923B (zh) 数据处理方法、装置、节点设备及存储介质
US20120159087A1 (en) Ensuring Forward Progress of Token-Required Cache Operations In A Shared Cache
CN112860595A (zh) Pci设备或pcie设备、数据存取方法及相关组件
US8407420B2 (en) System, apparatus and method utilizing early access to shared cache pipeline for latency reduction

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