CN102736956A - 线程通信和同步技术 - Google Patents

线程通信和同步技术 Download PDF

Info

Publication number
CN102736956A
CN102736956A CN201210089433XA CN201210089433A CN102736956A CN 102736956 A CN102736956 A CN 102736956A CN 201210089433X A CN201210089433X A CN 201210089433XA CN 201210089433 A CN201210089433 A CN 201210089433A CN 102736956 A CN102736956 A CN 102736956A
Authority
CN
China
Prior art keywords
thread
cache line
state
instruction
thread communication
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
CN201210089433XA
Other languages
English (en)
Other versions
CN102736956B (zh
Inventor
Q·雅各布森
H·王
J·沈
P·哈默隆德
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of CN102736956A publication Critical patent/CN102736956A/zh
Application granted granted Critical
Publication of CN102736956B publication Critical patent/CN102736956B/zh
Expired - Fee Related 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/22Microcontrol or microprogram arrangements
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/543Local

Abstract

本发明的名称是“线程通信和同步技术”。本发明公开一种线程同步和通信技术。更具体地说,本发明的实施例涉及对由一个或多个微处理器或微处理器核心执行的指令的两个或两个以上线程间的通信和同步的管理。

Description

线程通信和同步技术
本申请是申请日为2006年10月19日、申请号为200680038567.1、发明名称为“线程通信和同步技术”的专利申请的分案申请。
技术领域
本发明的实施例涉及微处理器架构。更具体地说,本发明的实施例涉及对在一个或多个微处理器或微处理器核心内执行的两个或两个以上线程间的通信和同步的管理。
背景技术
可以组织现代计算机程序内的指令以便根据各种指令串或“线程”来执行。通常,在处理资源内执行的指令的线程利用和/或生成一组对于特定线程唯一或至少与特定线程关联的状态信息。但是,各线程也可以共享状态信息或其它信息、例如将由一个或多个线程操作的数据,在此情况下,可能需要将信息从一个线程传递给另一个线程。
在典型的共享存储器的微处理器或处理系统中,各线程通过一个用于将信息存储在存储单元中的线程(发送线程)交换信息,该信息可以由另一个线程(接收线程)读取。通常,接收线程可以在各个时间轮询存储单元,以便检测发送线程何时更新了数据。在某些现有技术的实现中,检测机制可以检测何时写入共享信息,并且可以对此做出响应而向接收线程报警。
在后一情形中,检测机制检测共享信息何时写入到存储单元并向接收线程报警,在此情况下,一些现有技术利用监视或“探听”微处理器之间或微处理器与诸如DRAM的存储器之间的互连的特殊硬件检测逻辑。该检测逻辑可以配置成用于监视将在互连之间传送的到特定地址的命令,这可能需要用于每个将受监视的存储单元的检测逻辑。
诸如上述的现有技术在管芯面积和功率方面会很费成本。此外,这些现有技术在监视多个存储单元的更新时可能不易调整,从而导致软件开发的难题。
有这样一种现有技术,它涵盖了向在微处理器上运行的用户级线程直接报告事件而不需要操作系统的传统干预来通知中断或异常情况的机制。这些用户级中断或用户级异常基于具有这样一种机制,该机制保存关于线程的当前状态的足够信息并将线程重定向到执行“处理程序”代码的预定块以便响应事件。作为处理程序代码的一部分,线程可以执行它想要做的任何工作,然后可以返回到它在事件之前所处的执行路径。也可以选择不返回到该执行路径,而是继续执行完全不同的任务组。
发明内容
根据第一实施例,本申请提供了一种用于线程通信和同步的设备,包括:
高速缓存存储器,所述高速缓存存储器包括一致性状态字段以及一个或多个监视位字段,所述一致性状态字段用于存储与对应的高速缓存行有关的一致性信息,所述一个或多个监视位字段指示是否要为状态转换监视所述高速缓存行;
检测逻辑,用于在设置了所述一个或多个监视位字段中的监视位时,检测是否已经在一致性状态字段中发生对一致性信息的状态转换。
根据第二实施例,本申请提供了一种用于线程通信和同步的系统,包括:
高速缓存存储器,所述高速缓存存储器包括一致性状态字段以及多个监视位字段,所述一致性状态字段用于存储与高速缓存行有关的一致性信息,所述多个监视位字段用于指示是否要为对应的高速缓存行的状态改变监视所述高速缓存行;
第一存储器,所述第一存储器用于存储第一指令和第三指令,所述第一指令用于设置所述多个监视位字段内的位,所述第三指令用于启用检测逻辑以检测对所述一致性状态字段中的一致性信息的状态转换是否已经发生。
根据第三实施例,本申请提供了一种用于线程通信和同步的方法,包括:
使高速缓存行能被监视,看是否有通过发送线程内的指令写入到所述高速缓存行的数据;
对于所述高速缓存行检测对一致性信息的状态转换,以指示对与所述高速缓存行相对应的数据的修改;
响应于检测到状态转换而将所述数据递送给接收线程。
附图说明
附图的各图中举例而不是限制性地示出本发明的实施例,附图中,类似的附图标记表示类似的元件,并且其中:
图1示出可以结合本发明的至少一个实施例使用的处理系统的一部分。
图2示出可以根据本发明的一个实施例使用的高速缓存项及对应的一致性(coherency)和监视项。
图3是示出根据一个实施例在检测可以指示通过线程执行到高速缓存行的写入的一致性状态转换中涉及的操作的流程图。
图4示出可以在其中使用本发明的一个实施例的前端总线(FSB)计算机系统。
图5示出按照点对点(PtP)配置布置的计算机系统。
具体实施方式
本发明的实施例涉及微处理器架构。更具体地说,本发明的实施例涉及对由一个或多个微处理器或微处理器核心执行的指令的两个或两个以上线程间的通信和同步的管理。本发明的至少一个实施例提供一种通过线程来识别在任何其它线程修改了存储在一组存储单元中的值的情况下要通知的那些存储单元的机制。在一个实施例中,可以通过微处理器内的用户级中断/异常机制来执行通知,或通过计算系统内的某个其它逻辑或软件来实施通知。在一个实施例中,线程间的通信和同步是通过使得能够通知线程有关由一个或多个其它线程访问的高速缓存行的特定高速缓存一致性事件来实现的。
与某些现有技术的线程间通信技术不同,本发明的实施例可以利用处理器或计算机系统内的许多已有资源而不是利用特殊的检测硬件来监视发送线程所写入到的特定存储单元。具体来说,至少一个实施例利用早已存在于高速缓存行内的一致性信息来检测信息何时写入到对应于诸如DRAM的存储器内的单元的高速缓存行。更具体地说,当前处于允许本地读取对应于该行的数据值的状态(如“共享”状态)的高速缓存行必须在另一个线程修改对应于该行的任何数据值之前对其采取一致性动作。
与某些现有技术的线程间通信技术不同,本发明的实施例可以允许监视其它线程对存储单元所做的许多唯一的更新。具体来说,至少一个实施例利用共同报告机制来指示另一个线程是否已经更新了受监视的一个或多个存储单元。
本发明的一个实施例可以利用只用于检测高速缓存行状态转换的最少量的检测逻辑来检测高速缓存行状态转换,并利用用户级中断机制来通知接收线程,以便接收线程可以检索写入到高速缓存行的信息。在其它实施例中,可以将对高速缓存行状态转换的检测作为监视事件或“场景”编程到处理器的状态通道中。在其它实施例中,对高速缓存行状态转换的检测可以响应诸如中断、异常、陷阱、故障等硬件机制而发生。
在一个实施例中,可以通过将一个或多个监视位包含在高速缓存行内、或以其他方式将一个或多个监视位与高速缓存行关联来使一个或多个高速缓存行被监视或将这个或这些高速缓存行“标记”为将要被监视的高速缓存行。为了设置监视位,至少一个实施例可以利用命令或指令或某些其它方式。此外,可以利用多个监视位,以便用户的代码的某些部分可以独立于该代码的其它部分来配置所监视的高速缓存行。在检测到高速缓存行状态之后,可以经由清零命令或指令或某些其它方式来将监视位清零(clear)。
图1示出可以结合本发明的至少一个实施例使用的处理系统的一部分。具体来说,图1示出处理器或处理核心101,该处理器或处理核心101具有与它关联的高速缓存存储器105,该高速缓存存储器105可以由在处理器/核心101或某个其它处理资源(未示出)内执行的指令的一个或多个线程共享。在本发明的一个实施例中,高速缓存存储器105对于线程来说就像是由那个线程独占地使用一样,以便线程可以将信息存储在高速缓存行内而无需考虑正在使用该高速缓存行的其它线程。
图1中还示出存储器110,该存储器110可以由DRAM或诸如SRAM、磁盘或紧密盘等的某些其它存储器技术组成。在一个实施例中,高速缓存存储器105包括镜像存储器110的各项的子集的项。因此,高速缓存存储器可以包括用于通知从高速缓存存储器访问数据的代理有关特定高速缓存行(例如,图1中的高速缓存行“A”)何时包含无效数据(“I”状态)或该高速缓存行何时被修改(“M”状态)的一致性信息,从而使得在高速缓存行可以在各个代理、线程或程序之间共享时(“S”状态),以及在特定线程、代理或程序独占地使用该高速缓存行时(“E”状态),它不会包含与对应的存储器项(例如,图1中的存储器项“A”)相同的数据。
图2示出可以根据本发明的一个实施例使用的高速缓存项和对应的一致性和监视项。具体来说,高速缓存200的高速缓存行201可以在字段203存储对应于该高速缓存行的数据,在字段205存储地址标签和一致性信息,并在字段207存储监视信息。为了使对高速缓存行的状态改变能被监视,在监视信息字段中设置一个或多个位。此外,如果高速缓存由多个硬件线程共享(例如,每个硬件线程运行独立的软件线程),那么取决于线程内有多少个实例可以监视高速缓存行,每个线程可以对应于监视信息字段内的多个位。
例如,在图2中,标为“a”的监视位对应于第一个线程,在该线程内只有三个实例(可以重复)监视对应的高速缓存行。标为“b”的监视位对应于第二个线程,该线程有两个实例(可以重复)监视对应的高速缓存行。标为“d”的监视位对应于第三个线程,在该线程内只有一个实例(可以重复)监视对应的高速缓存行。因此,对应于每个线程内将监视对应高速缓存行的每个实例的每个位可以独立地设置或清零。
当然,高速缓存行中存在的监视位字段越多,一次就有越多的线程和线程内越多的实例可以监视高速缓存行。在一个实施例中,高速缓存行包含六个监视位字段,从而允许两个线程在每个线程内的三个不同的实例监视高速缓存行。在其它实施例中,可以使用更多或更少的位字段来启用可以监视高速缓存行的更多或更少的线程或线程内的实例。
在一个实施例中,将由共享高速缓存的一个线程相对于共享相同高速缓存的其它线程执行的存储器更新与来自不共享该高速缓存的其它线程的一致性事件一样处理。例如,如果一个线程更新了存储在高速缓存行内的一个值,那么设置了监视位的其它线程可以检测该更新,并通过诸如用户级中断机制的中断机制通知对应的线程。在其它实施例中,中断机制可以是用户看不见的中断机制。
在一个实施例中,可以在处理器内或在高速缓存存储器内的逻辑中执行两个独立的命令或指令,以便分别设置监视位和将监视位清零。例如,在一个实施例中,可以执行“加载监视”指令,该指令具有对应于高速缓存行的地址,并具有作为属性要写入到监视位的对应数据。类似地,在一个实施例中,可以执行“清零监视”指令,该指令具有对应于高速缓存行的地址,并具有作为属性要写入以便将监视位清零的对应数据。在一个实施例中,取决于指令的监视位属性的值,利用一个指令来设置监视位和将监视位清零。在另一个实施例中,利用一个指令来将每个高速缓存行处的所有特定属性清零。
对已经标记为将受监视(例如,在一个实施例中,通过设置对应的监视位)的高速缓存行的状态转换的检测可以用多种方式实现。例如,在一个实施例中,可以利用诸如执行布尔“或”函数(如“或”门)的逻辑的逻辑来检测高速缓存行是否设置了它的任何对应的监视位,如果有,那么检测高速缓存行的一致性位(图1中标为“c”)是否发生了状态转换,以指示另一个线程执行了对那个高速缓存行的写入。在一个实施例中,从允许本地读取对应数据的任何状态到I状态的状态转换可以指示线程已经或者正打算将信息写入到对应的高速缓存行。此外,还可以检测由共享高速缓存的另一个线程执行的对高速缓存行的写入以作为更新。
在其它实施例中,高速缓存行的一致性状态转换可以触发处理硬件内的中断、异常、故障、陷阱或其它信令机制,以便指示线程已经将信息写入到高速缓存行。在其它实施例中,可以利用其它机制来指示一致性状态转换,该一致性状态转换指示线程已经将数据写入到特定高速缓存行。
在一个实施例中,在每个线程的基础上监视事件,在该实施例中,可以定义称为“场景”的事件的逻辑组合以便检测可以指示已经将数据写入到高速缓存行的高速缓存行的一致性状态转换信息。在此情况下,称为“通道”的处理器状态存储区域可以编程为执行与上述用于检测高速缓存行的一致性状态转换的硬件和/或软件基本相同的逻辑功能。该场景的发生可以触发软屈服(yield)事件,如故障类或陷阱类屈服,它可以调用屈服事件处理程序来处理该场景。
在一个实施例中,用于通知线程有关指示所监视的行已经被修改或者不久将被修改的事件的机制可以具有掩码,该掩码可以编程为监视位的任意一个集合。例如,在一个实施例中,通过在通道掩码和将写入到通道的编程位之间执行诸如逻辑“与”运算的布尔运算来将通道编程。在一个实施例中,该机制是用户级中断机制,而在其它实施例中,该机制是用户看不见的中断机制。在一个实施例中,用于通知线程有关指示所监视的行已经被修改或者不久将被修改的事件的机制也可以响应诸如上下文切换到硬件中的软件线程的其它事件来通知软件线程。
不管是如何检测受监视的行的可能更新(指示已经或者可能将要把线程写入到特定高速缓存行),对该状态转换的检测可以调用处理程序来处理该检测。处理程序要执行的一个可能的任务是读取所监视的一个地址或所监视的一组地址,以便查看另一个线程是否已经用相关值更新了存储单元;如果存储单元已经更新为相关值,那么可以采取适当的动作,例如调用特定软件函数。
图3是示出根据一个实施例在检测可以指示通过线程执行到高速缓存行的写入的一致性状态转换中涉及的操作的流程图。在操作301,通过设置数量等于每个线程中将监视高速缓存行的实例的数量的多个监视位来使高速缓存行能够受一个或多个线程监视。在一个实施例中,通过执行属性对应于将设置的监视位的指令(如“加载监视”指令)来启用高速缓存行。在操作305,线程将信息写入到受监视的高速缓存行,从而引起一致性状态转换,然后在操作310,调用处理程序来检索写入到高速缓存行的信息,以便可以将信息递送给监视(接收)线程。
在一个实施例中,可以利用用于检测是否设置了监视位的逻辑来检测一致性状态转换,如果设置了监视位,那么该逻辑检测是否发生了一致性状态转换。在其它实施例中,一致性状态转换可以通过软件、硬件或其某个组合来检测。此外,在至少一个实施例中,通过将场景编程到处理器状态通道中来检测一致性状态转换,并通过用户级中断机制来将该一致性状态转换报告给接收线程。
在操作315,可以将对应于检测到的一致性状态转换的监视位清零,并视情况通过另一个线程或同一个线程内的监视实例重设。在一个实施例中,可以通过执行与设置监视位的指令不同的指令(如“清零监视”指令)来将监视位清零,这个不同的指令的属性对应于清零的监视位。在其它实施例中,可以使用用于设置监视位的同一个指令(如“加载监视”指令)通过使用对应于清零的监视位的属性来将监视位清零。
在一个实施例中,向用户的软件程序提供接口,软件可以在其中指定要监视的变量和对其响应所采取的动作。在一个实施例中,用户的软件程序可以提供特定的存储器变量、用于评估所指定的存储器变量的值的特定比较规则以及具有在存储器变量的值满足评估标准时调用的可选变元的函数指针。在该实施例中,软件可以通过诸如指令的方式或通过多个指令的集合来指定该信息。
此外,用户软件可以指定要监视的多个变量,每个变量对应于唯一的或共同的响应动作。在监视这个(这些)变量的同时,线程可以继续执行其它功能。当响应所监视的变量的出现而调用某个函数时,该函数可以将控制返回给线程,以便线程可以继续执行,从而提供可调整的灵活接口。
在一个实施例中,诸如上述的接口包括描述每个变量、该变量的比较规则和将调用的动作或函数及其变元的信息。在一个实施例中,该信息存储在诸如主计算机系统存储器(如DRAM)的存储区域内的表中。软件、固件或硬件可以在适当时读取该表,为每个项读取指定的变量,并执行比较规则以便确定是否应当调用动作。
此外,可以使用之前描述的用于标记高速缓存中将要监视的行的机制来标记对应于将要监视的变量的每一行。如果在所监视的行中检测到指示该行现在可能由另一个线程修改的事件,那么可以如上所述激活适当的软件、固件或硬件来评估表中的所有受监视的变量。如果没有变量满足它们的标准,那么该软件、固件或硬件将确保所有合适的行仍然受到监视,并且将返回到在调用它之前所执行的工作。
用于评估变量表并调用合适函数的软件、固件或硬件可以操纵线程存储栈,以便在它响应满足它的标准的变量而调用某个函数时,该函数可以直接返回到之前运行的任务。或者,该软件、固件或硬件可以操纵该栈,以使得函数将返回到特殊的代码片段,从而确保在最终返回到之前运行的任务之前对应于变量的所有高速缓存行受到适当的监视。另一个备选方法是具有特殊的返回指令,该指令将使用响应满足它的标准的变量而调用的函数。这个特殊的返回指令将确保在最终返回到之前运行的任务之前对应于变量的所有高速缓存行都受到适当的监视。
图4示出可以在其中使用本发明的一个实施例的前端总线(FSB)计算机系统。处理器505访问来自一级(L1)高速缓存存储器510和主存储器515的数据。在本发明的其它实施例中,该高速缓存存储器可以是二级(L2)高速缓存或计算机系统存储器层级内的另一个存储器。此外,在一些实施例中,图4中的计算机系统可以同时包含L1高速缓存和L2高速缓存。
图4中的处理器内示出机器状态的存储区域506。在一个实施例中,存储区域可以是一组寄存器,而在其它实施例中,存储区域可以是其它存储器结构。图4中还示出根据一个实施例的用于保存区域片段的存储区域507。在其它实施例中,保存区域片段可以存在于其它装置或存储器结构中。处理器可以具有任意数量的处理核心。但是,本发明的其它实施例可以在系统内的诸如独立的总线代理的其它装置中实施,或者在整个系统中分布在硬件、软件或其某个组合中。
主存储器可以在各种存储器源中实施,如动态随机存取存储器(DRAM)、硬盘驱动器(HDD)520或经由网络接口530设置在该计算机系统的远程位置的包含各种存储装置和技术的存储器源。高速缓存存储器可以位于处理器内或位于紧靠处理器的位置,例如位于处理器的局部总线507上。
此外,高速缓存存储器可以包含相对快速的存储元件,如六晶体管(6T)元件或具有近似相等或更快速的访问速度的其它存储元件。图4中的计算机系统可以是经由专用于点对点(PtP)网络上的每个代理的总线信号通信的诸如微处理器的总线代理的PtP网络。图5示出按照点对点(PtP)配置布置的计算机系统。具体来说,图5示出其中通过多个点对点接口将处理器、存储器和输入/输出装置互连的系统。
图5中的系统还可包括数个处理器,为清楚起见,图中只示出其中两个处理器670、680。处理器670、680可以各自包括用于与存储器22、24连接的局部存储器控制器集线器(MCH)672、682。处理器670、680可以经由点对点(PtP)接口650利用PtP接口电路678、688交换数据。处理器670、680可以各自经由单独的PtP接口652、654利用点对点接口电路676、694、686、698与芯片组690交换数据。芯片组690也可以经由高性能图形接口639与高性能图形电路638交换数据。本发明的实施例可以位于具有任意数量的处理核心的任何处理器内,或位于图5中的每个PtP总线代理内。
但是,本发明的其它实施例可以存在于图5中的系统内的其它电路、逻辑单元或装置中。此外,本发明的其它实施例可以分布在如图5所示的几个电路、逻辑单元或装置中。
本发明的实施例的各个方面可以利用互补金属-氧化物-半导体(CMOS)电路和逻辑装置(硬件)实施,而其它方面可以利用存储在机器可读介质上的指令(软件)实施,这些指令在由处理器执行时将使处理器执行用于实现本发明的实施例的方法。此外,本发明的一些实施例可以用硬件单独执行,而其它实施例可以用软件单独执行。
尽管参照说明性实施例描述了本发明,但不希望从限制含义解释该描述。对于本发明所属领域的技术人员显而易见的对这些说明性实施例以及其它实施例的各种修改被视为是在本发明的精神和范围内。

Claims (27)

1.一种用于线程通信和同步的设备,包括:
高速缓存存储器,所述高速缓存存储器包括一致性状态字段以及一个或多个监视位字段,所述一致性状态字段用于存储与对应的高速缓存行有关的一致性信息,所述一个或多个监视位字段指示是否要为状态转换监视所述高速缓存行;
检测逻辑,用于在设置了所述一个或多个监视位字段中的监视位时,检测是否已经在一致性状态字段中发生对一致性信息的状态转换。
2.如权利要求1所述的用于线程通信和同步的设备,进一步包括用于存储多个指令的存储器,所述多个指令包括用于设置所述监视位的第一指令、用于将所述监视位清零的第二指令以及用于启用所述检测逻辑的第三指令。
3.如权利要求2所述的用于线程通信和同步的设备,其中,所述第一指令和所述第二指令是相同的指令。
4.如权利要求1所述的用于线程通信和同步的设备,其中,所述状态转换通过中断机制或用户级中断机制进行通知。
5.如权利要求4所述的用于线程通信和同步的设备,其中,所述用户级中断机制使所述线程指示的指令被执行。
6.如权利要求1所述的用于线程通信和同步的设备,其中,所述状态转换用来指示已经由线程执行了对高速缓存行的写入。
7.如权利要求1所述的用于线程通信和同步的设备,其中,所述检测逻辑用于检测指示要将所述数据写入到所述高速缓存行的所述一致性状态字段的转换。
8.如权利要求7所述的用于线程通信和同步的设备,其中,所述一致性状态字段的所述转换包括从共享状态到无效状态的转换。
9.如权利要求1所述的用于线程通信和同步的设备,其中,写入到具有监视位集合的所述高速缓存行的数据被递送到设置该监视位的线程,且其中所述数据不被递送到不设置该监视位的线程。
10.一种用于线程通信和同步的系统,包括:
高速缓存存储器,所述高速缓存存储器包括一致性状态字段以及多个监视位字段,所述一致性状态字段用于存储与高速缓存行有关的一致性信息,所述多个监视位字段用于指示是否要为对应的高速缓存行的状态改变监视所述高速缓存行;
第一存储器,所述第一存储器用于存储第一指令和第三指令,所述第一指令用于设置所述多个监视位字段内的位,所述第三指令用于启用检测逻辑以检测对所述一致性状态字段中的一致性信息的状态转换是否已经发生。
11.如权利要求10所述的用于线程通信和同步的系统,进一步包括处理器,如果所述检测逻辑检测到已经将数据写入到所述高速缓存行并且已经在所述多个监视位字段内设置了对应于接收线程的监视位,那么所述处理器执行所述接收线程以便从所述高速缓存行读取数据。
12.如权利要求11所述的用于线程通信和同步的系统,其中,所述第一存储器包括用于将所述多个监视位字段中的至少一些监视位字段清零的第二指令。
13.如权利要求11所述的用于线程通信和同步的系统,其中,所述第一存储器用于存储多个指令,所述多个指令使检测逻辑能检测是否已经通过发送线程将数据写入到所述高速缓存行,其中所述多个指令和所述第三指令中的每个指令都具有关联的优先级。
14.如权利要求13所述的用于线程通信和同步的系统,其中,所述检测逻辑包括利用信息编程为用于检测场景的状态通道。
15.如权利要求10所述的用于线程通信和同步的系统,其中,所述状态转换通过中断机制或用户级中断机制进行通知。
16.如权利要求15所述的用于线程通信和同步的系统,其中,所述用户级中断机制使所述线程指示的指令被执行。
17.如权利要求10所述的用于线程通信和同步的系统,其中,所述检测逻辑包括用于响应写入到所述高速缓存行的数据而检测由异常、故障、陷阱、中断组成的组中之一的逻辑。
18.如权利要求10所述的用于线程通信和同步的系统,其中,写入到具有监视位集合的所述高速缓存行的数据被递送到设置该监视位的线程,且其中所述数据不被递送到不设置该监视位的线程。
19.一种用于线程通信和同步的方法,包括:
使高速缓存行能被监视,看是否有通过发送线程内的指令写入到所述高速缓存行的数据;
对于所述高速缓存行检测对一致性信息的状态转换,以指示对与所述高速缓存行相对应的数据的修改;
响应于检测到状态转换而将所述数据递送给接收线程。
20.如权利要求19所述的用于线程通信和同步的方法,其中,使所述高速缓存行能被监视包括执行指令以便设置对应于所述高速缓存行的监视位字段内的至少一个监视位。
21.如权利要求20所述的用于线程通信和同步的方法,进一步包括,使所述状态转换能被检测包括执行指令以便将状态通道逻辑编程为用于检测对应于要监视的所述高速缓存行的场景。
22.如权利要求21所述的用于线程通信和同步的方法,其中,使所述状态转换能被检测包括使检测逻辑能检测响应写入到所述高速缓存行的所述数据而断言的信号,所述信号选自由异常、故障、陷阱、中断组成的组。
23.如权利要求21所述的用于线程通信和同步的方法,其中,检测包括检测所述高速缓存行从第一状态到第二状态的一致性状态转换。
24.如权利要求23所述的用于线程通信和同步的方法,其中,所述第一状态是共享状态,而所述第二状态是无效状态。
25.如权利要求21所述的用于线程通信和同步的方法,其中,所述场景包括:检测是否要监视所述高速缓存行;如果要监视所述高速缓存行,则检测所述高速缓存行是否已经发生了从第一状态到无效状态的一致性状态转换。
26.如权利要求25所述的用于线程通信和同步的方法,其中,用于对状态通道逻辑编程的指令是用于对状态通道逻辑编程的多个指令之一,其中每个指令对应于一个或多个线程内将监视所述高速缓存行的不同的实例。
27.如权利要求26所述的用于线程通信和同步的方法,其中,所述多个指令中的每个指令具有唯一的优先权来控制执行所述多个指令的次序。
CN201210089433.XA 2005-10-19 2006-10-19 线程通信和同步技术 Expired - Fee Related CN102736956B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US11/254,286 US8019947B2 (en) 2005-10-19 2005-10-19 Technique for thread communication and synchronization
US11/254,286 2005-10-19
US11/254286 2005-10-19
CN2006800385671A CN101292226B (zh) 2005-10-19 2006-10-19 用于线程通信和同步的设备、系统和方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN2006800385671A Division CN101292226B (zh) 2005-10-19 2006-10-19 用于线程通信和同步的设备、系统和方法

Publications (2)

Publication Number Publication Date
CN102736956A true CN102736956A (zh) 2012-10-17
CN102736956B CN102736956B (zh) 2015-09-30

Family

ID=37757207

Family Applications (2)

Application Number Title Priority Date Filing Date
CN2006800385671A Expired - Fee Related CN101292226B (zh) 2005-10-19 2006-10-19 用于线程通信和同步的设备、系统和方法
CN201210089433.XA Expired - Fee Related CN102736956B (zh) 2005-10-19 2006-10-19 线程通信和同步技术

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN2006800385671A Expired - Fee Related CN101292226B (zh) 2005-10-19 2006-10-19 用于线程通信和同步的设备、系统和方法

Country Status (7)

Country Link
US (1) US8019947B2 (zh)
JP (2) JP5204656B2 (zh)
KR (1) KR101126820B1 (zh)
CN (2) CN101292226B (zh)
DE (1) DE112006002908T5 (zh)
GB (1) GB2446089B (zh)
WO (1) WO2007047959A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8019947B2 (en) 2005-10-19 2011-09-13 Intel Corporation Technique for thread communication and synchronization
US7610448B2 (en) 2006-12-27 2009-10-27 Intel Corporation Obscuring memory access patterns
US9081687B2 (en) 2007-12-28 2015-07-14 Intel Corporation Method and apparatus for MONITOR and MWAIT in a distributed cache architecture
JP5663941B2 (ja) * 2010-04-30 2015-02-04 富士ゼロックス株式会社 印刷文書変換装置およびプログラム
US8468531B2 (en) * 2010-05-26 2013-06-18 International Business Machines Corporation Method and apparatus for efficient inter-thread synchronization for helper threads
JP5505501B2 (ja) * 2010-06-22 2014-05-28 富士通株式会社 マルチコアプロセッサシステム、制御プログラム、および制御方法
GB2524085B (en) * 2014-03-14 2021-01-20 Advanced Risc Mach Ltd Exception handling in microprocessor systems
JP5776810B2 (ja) * 2014-03-20 2015-09-09 富士通株式会社 マルチプロセッサシステム、制御プログラム、および制御方法
US9898351B2 (en) * 2015-12-24 2018-02-20 Intel Corporation Method and apparatus for user-level thread synchronization with a monitor and MWAIT architecture
US10346306B2 (en) * 2016-04-02 2019-07-09 Intel Corporation Processor and method for memory performance monitoring utilizing a monitor flag and first and second allocators for allocating virtual memory regions
US10394678B2 (en) 2016-12-29 2019-08-27 Intel Corporation Wait and poll instructions for monitoring a plurality of addresses
US10649684B2 (en) 2017-03-16 2020-05-12 Arm Limited Memory access monitoring
CN109408248B (zh) * 2018-09-19 2021-12-24 福建星网智慧科技有限公司 一种Linux下线程间通信系统
US11080122B2 (en) * 2019-09-19 2021-08-03 International Business Machines Corporation Software-invisible interrupt for a microprocessor

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030097529A1 (en) * 2001-10-16 2003-05-22 International Business Machines Corp. High performance symmetric multiprocessing systems via super-coherent data mechanisms
CN1466716A (zh) * 2000-09-08 2004-01-07 ̫��΢ϵͳ���޹�˾ 以辅助处理器预取用于主要处理器的指令的方法和装置
US20050154838A1 (en) * 2004-01-14 2005-07-14 International Business Machines Corporation Method and apparatus for autonomically moving cache entries to dedicated storage when false cache line sharing is detected

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5202998A (en) * 1990-08-31 1993-04-13 International Business Machines Corporation Fast, simultaneous multi-processor system status communication interface
US5555398A (en) * 1994-04-15 1996-09-10 Intel Corporation Write back cache coherency module for systems with a write through cache supporting bus
JP2902976B2 (ja) * 1995-06-19 1999-06-07 株式会社東芝 キャッシュフラッシュ装置
JP3139392B2 (ja) 1996-10-11 2001-02-26 日本電気株式会社 並列処理システム
US6874087B1 (en) * 1999-07-13 2005-03-29 International Business Machines Corporation Integrity checking an executable module and associated protected service provider module
JP2002342163A (ja) 2001-05-15 2002-11-29 Fujitsu Ltd マルチスレッドプロセッサ用キャッシュ制御方式
JP3661614B2 (ja) 2001-07-12 2005-06-15 日本電気株式会社 キャッシュメモリ制御方法及びマルチプロセッサシステム
US20030126379A1 (en) * 2001-12-31 2003-07-03 Shiv Kaushik Instruction sequences for suspending execution of a thread until a specified memory access occurs
DE60308215T2 (de) * 2002-11-18 2007-08-23 Arm Ltd., Cherry Hinton Prozessorschaltung zwischen sicheren und nicht sicheren modi
GB2395583B (en) * 2002-11-18 2005-11-30 Advanced Risc Mach Ltd Diagnostic data capture control for multi-domain processors
US7269717B2 (en) * 2003-02-13 2007-09-11 Sun Microsystems, Inc. Method for reducing lock manipulation overhead during access to critical code sections
US7287126B2 (en) * 2003-07-30 2007-10-23 Intel Corporation Methods and apparatus for maintaining cache coherency
US7624236B2 (en) * 2004-12-27 2009-11-24 Intel Corporation Predictive early write-back of owned cache blocks in a shared memory computer system
US8019947B2 (en) 2005-10-19 2011-09-13 Intel Corporation Technique for thread communication and synchronization

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1466716A (zh) * 2000-09-08 2004-01-07 ̫��΢ϵͳ���޹�˾ 以辅助处理器预取用于主要处理器的指令的方法和装置
US20030097529A1 (en) * 2001-10-16 2003-05-22 International Business Machines Corp. High performance symmetric multiprocessing systems via super-coherent data mechanisms
US20050154838A1 (en) * 2004-01-14 2005-07-14 International Business Machines Corporation Method and apparatus for autonomically moving cache entries to dedicated storage when false cache line sharing is detected

Also Published As

Publication number Publication date
US20070088916A1 (en) 2007-04-19
GB2446089B (en) 2010-12-01
CN101292226B (zh) 2012-05-30
DE112006002908T5 (de) 2008-09-18
GB0808945D0 (en) 2008-06-25
JP5204656B2 (ja) 2013-06-05
GB2446089A (en) 2008-07-30
WO2007047959A1 (en) 2007-04-26
JP2012234561A (ja) 2012-11-29
CN102736956B (zh) 2015-09-30
KR101126820B1 (ko) 2012-03-23
CN101292226A (zh) 2008-10-22
JP5449472B2 (ja) 2014-03-19
JP2009512078A (ja) 2009-03-19
KR20080048543A (ko) 2008-06-02
US8019947B2 (en) 2011-09-13

Similar Documents

Publication Publication Date Title
CN101292226B (zh) 用于线程通信和同步的设备、系统和方法
US8731688B2 (en) Processing apparatus and method for acquiring log information
US8949671B2 (en) Fault detection, diagnosis, and prevention for complex computing systems
JP4505608B2 (ja) 工業用制御装置を冗長制御装置と同期化するための方法および装置
CN101529392B (zh) 在非侵入性数字信号处理器调试期间用于指令填充操作的方法和系统
JP4925973B2 (ja) 装置、システム、方法およびプログラム
US10445211B2 (en) Logging trace data for program code execution at an instruction level
CN1936847B (zh) 用于上下文状态管理的装置、方法和系统
CN102216904B (zh) 用于数据处理系统中的高速缓存的可编程错误动作
US11042469B2 (en) Logging trace data for program code execution at an instruction level
TW201835777A (zh) 記憶體存取監測
CN103809935A (zh) 在超前运行期间管理潜在无效结果
US6711651B1 (en) Method and apparatus for history-based movement of shared-data in coherent cache memories of a multiprocessor system using push prefetching
US20110252256A1 (en) Methods, systems, and computer program products for managing an idle computing component
US8468394B2 (en) Method of tracing selected activities within a data processing system by tagging selected items and tracing the tagged items
US11176042B2 (en) Method and apparatus for architectural cache transaction logging
JP2023538241A (ja) メモリロケーションに記憶されたデータが修正されたかどうかを識別するためのメモリロケーションの監視
WO2021061220A1 (en) Logging trace data for program code execution at an instruction level
JPH06139156A (ja) キャッシュメモリの故障検出装置
KR20080113052A (ko) 추적 데이터 생성 장치, 방법 및 컴퓨터 프로그램 제품
JP2001014183A (ja) バッファ制御装置、バッファ評価方法、バッファ評価装置、プログラムを記録した記録媒体、中央処理装置、情報処理装置
JPH11327947A (ja) 診断制御方式およびそのプログラム記録媒体

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
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: 20150930

Termination date: 20181019

CF01 Termination of patent right due to non-payment of annual fee