CN105528252A - 电脑系统 - Google Patents

电脑系统 Download PDF

Info

Publication number
CN105528252A
CN105528252A CN201510683419.6A CN201510683419A CN105528252A CN 105528252 A CN105528252 A CN 105528252A CN 201510683419 A CN201510683419 A CN 201510683419A CN 105528252 A CN105528252 A CN 105528252A
Authority
CN
China
Prior art keywords
instruction
signal
processing unit
signal intensity
buffer
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.)
Withdrawn
Application number
CN201510683419.6A
Other languages
English (en)
Inventor
赖吉昌
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.)
MediaTek Inc
Original Assignee
MediaTek Inc
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 MediaTek Inc filed Critical MediaTek Inc
Publication of CN105528252A publication Critical patent/CN105528252A/zh
Withdrawn legal-status Critical Current

Links

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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • 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
    • 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
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

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

Abstract

本发明提供一种电脑系统,包含:缓存单元;以及第一处理单元,用于运行第一程序线程,并执行指令来将信号变化事件的信息通过缓存隐藏操作储存进缓存单元,其中该信号变化事件由该第一程序线程启动来提醒第二程序线程。本发明所公开的够有效减少程序线程间传递信号变化事件时的延迟。

Description

电脑系统
优先权
本申请要求2014年10月20日申请的申请号为62/065,780的美国临时案的优先权,该申请整体以参考形式纳入本申请。
技术领域
本发明所的实施例有关于一种程序线程之间的软件信令(程序线程可在同一处理单元或在不同处理单元上运行),更具体地,尤指一种用于通过缓存隐藏(cashstashing)来通知信号变化事件的电脑系统。
背景技术
在并行电脑系统中具有多个处理单元,多个程序线程通常依靠信号来从其他线程获取注意并同步工作的流程。在第一处理单元上运行的第一程序线程所产生的信号的变化要获取在第二处理单元上运行的第二程序线程的注意,需通过由第二处理单元启动的查询操作(pollingoperation)或是由第一处理单元启动的中断操作(interruptoperation)来实现。但是,由查询操作或中断操作所引起的额外延迟会在线程级的并行度更细微密集时变得愈发显著。
因此,需要一种新的信令设计,其能够在一个程序线程与另一个程序线程间传递信号变化事件时减少延迟。
发明内容
根据本发明的实施例,提出一种电脑系统以解决上述问题。
根据本发明的第一实施例提供一种电脑系统,包含:缓存单元;以及第一处理单元,用于运行第一程序线程,并执行指令来将信号变化事件的信息通过缓存隐藏操作储存进缓存单元,其中该信号变化事件由该第一程序线程启动来提醒第二程序线程。
根据本发明的第二实施例提供一种电脑系统,包含:缓存单元,用于储存信号变化事件的信息,以回应缓存隐藏操作,其中该信号变化事件由第一程序线程启动;以及第一处理单元,用于运行第二程序线程,并执行由该第二程序线程启动的指令,来获取该信号变化事件的信息。
本发明所公开的电脑系统能够有效减少程序线程间传递信号变化事件时的延迟。
本发明的这些及其他的目的对于本领域的技术人员来说,在阅读了下述优选实施例的详细说明以后是很容易理解和明白的,所述优选实施例通过多幅图予以揭示。
附图说明
图1显示本发明第一实施例的电脑系统的示意图。
图2显示本发明第二实施例的电脑系统的示意图。
图3显示本发明第三实施例的电脑系统的示意图。
图4显示本发明第四实施例的电脑系统的示意图。
图5显示本发明第五实施例的电脑系统的示意图。
图6显示本发明第六实施例的电脑系统的示意图。
具体实施方式
本说明书及权利要求书使用了某些词语代指特定的组件。本领域的技术人员可理解的是,制造商可能使用不同的名称代指同一组件。本文件不通过名字的差别,而通过功能的差别来区分组件。在以下的说明书和权利要求书中,词语“包括”是开放式的,因此其应理解为“包括,但不限于...”。
本发明提出一种使用缓存隐藏的软件信令方法。并且,提出的信令设计通过缓存隐藏机制将信号变化事件从一个程序线程(可运行在一个处理单元)传递给另一个程序线程(可运行在同一个处理单元或在另一个处理单元)。具体地,提出的信令设计基于生产者-消费者模型,其包含一个或多个生产者来变化一个信号以及一个或多个消费者收到信号变化的警报。由一个生产者(例如一个程序线程)发出的信号变化可需要转换为一个逻辑事件来提醒一个或多个消费者(例如一个或多个程序线程)。一个消费者需要在由一个或多个生产者变化的一个或多个信号的一定的信号变化条件下等待。缓存隐藏机制用来对由一个生产者启动的信号变化事件传递(signalchangeeventdelivery)与由一个消费者启动的信号变化事件获取(signalchangeeventacquisition)进行协调。依靠缓存隐藏机制的帮助,消费者可在由生产者启动的信号变化事件传递之前或之后启动信号变化事件获取。如此,一旦信号变化事件获取并未在生产者启动信号变化传递时启动,消费者的处理器执行流可不停止(halted)或被困住(trapped),如此利用查询操作或中断操作解决了传统信令设计中碰到的延迟问题。下面将介绍提出的信令设计的具体细节。
图1显示本发明的第一实施例的电脑系统的示意图。电脑系统100是一个并行计算系统,因此包含了多个处理单元(例如处理器核心)。为了清楚及简便起见,所示电脑系统100包含两个处理单元102与104,它们通过外部总线110互相通信,其中处理单元104中有一个缓存单元106。如图1所示,一个程序线程107_1运行于处理单元102之上,另一个程序线程107_2运行于处理单元104之上。可是,这仅仅是为了展示,并非本发明的限制。另外,程序线程107_1与107_2可在同一个处理单元104上运行。在本实施例中,处理单元102执行一个信号-存储-释放指令来传递一个由程序线程107_1启动的信号变化事件,以提醒运行在处理单元104上的程序线程107_2。并且,处理单元102扮演“生产者”处理单元,处理单元104扮演“消费者”处理单元。在一个实施例中,信号-存储-释放指令是一个应用在地址区域的信令操作专用的存储-释放指令。在另一个实施例中,信号-存储-释放指令是一个信令操作专用的存储-释放类型的指令。需要注意的是,一个存储-释放指令会保证所有之前的指令都在存储-释放指令完成之前完成。
对于扮演“消费者”处理单元处理单元104来说,其执行由程序线程107_2启动的等待-信号(wait-on-signal)指令(例如,信号-加载-获取指令),用来获取信号变化事件的信息。在一个实施例中,信号-加载-获取指令是用在地址区域的信令操作专用的加载-获取指令。在另一个实施例中,信号-加载-获取指令是一个信令操作专用的加载-获取类型的指令。需要注意的是,除非观察到期望的信号变化事件,一个信号-加载-获取指令才会结束。而且,加载-获取指令会保证只有在加载-获取指令完成后所有后续指令才完成。
在第一种情形中,当程序线程107_1启动信号-存储-释放指令时,程序线程107_2启动信号-加载-获取指令,进入的信号变化事件被当下执行的信号-加载-获取指令及时观察到。而且,信号变化事件与其相关的变化的数值被程序线程107_2即刻接收到,而没有隐藏到缓存单元106中。也就是说,当程序线程107_2在有进入的信号变化事件的情况下启动信号-加载-获取指令时,由程序线程107_1启动的信号-存储-释放指令被硬件(例如缓存单元)转化为缓存隐藏操作,但是没有被信令状态机108所记录来影响任何缓存单元106的任何缓存状态,该信令状态机108与缓存单元106相关。
在第二种情形下,当程序线程107_2在程序线程107_1启动信号-存储-释放指令之后启动信号-加载-获取指令,由程序线程107_1启动的信号-存储-释放指令被硬件(例如处理单元104)转化为执行的缓存隐藏操作。换句话说,当进入的信号变化事件并不立刻由处理单元104接收时(具体是程序线程107_2),缓存单元106(具体是与缓存单元106相关的信令状态机108)储存由处理单元104接收的信号变化事件的信息,其为在处理单元102上由信号-存储-释放指令启动的缓存隐藏操作,其中信号变化事件是由程序线程107_1启动的,用于提醒在处理单元104上运行的程序线程107_2。在此实施例中,缓存单元106具有该信令状态机108来指派预定状态“Change-Locked”给缓存入口109,以作为对信号变化事件的信息的缓存隐藏的回应,其中预定状态“Change-Locked”是用来指示信号变化事件的信息已经在相关的缓存入口109被记录了。当程序线程107_2在信号变化事件的信息被缓存隐藏进缓存单元106后启动信号-加载-获取指令,因缓存单元106中的“Change-Locked”缓存入口109的匹配而观察到信号变化事件,并且信号-加载-获取指令从缓存单元106加载信号变化事件的信息来完成此刻的执行。而且,一个记录缓存状态的“matching”表示记录的缓存状态是一个信号操作的信号变量与信号-加载-获取指令操作的信号变量是一样的。
在第三种情形下,其中程序线程107_2在程序线程107_1启动信号-存储-释放指令之前启动信号-加载-获取指令,处理单元104的处理器指令流被停止来等待在处理单元102上运行的程序线程107_1所启动的信号变化事件。并且,当程序线程107_1启动信号-存储-释放指令要传递信号变化事件时,进入的信号变化事件被观察到,信号-加载-获取指令获取到信号变化事件来完成其执行。
在此实施例中,信号-加载-获取指令用来与一信号变化事件匹配来继续信号变化探测(signalchangesensing)。相比于将存储的数据从一个指定的地址直接/无条件地加载的传统的加载-获取指令,信号-加载-获取指令只有在当其匹配“Change-Locked”缓存入口或一个进入的信号变化事件时,将储存的数据加载以完成其执行。另外,信号-加载-获取指令可有另外具有一期望值(expectedvalue)的条件码(conditionalcode)来与信号的预期的变化值(prospectivechangedvalue)相匹配。也就是说,信号-加载-获取指令仅在信号变化事件被观察到具有与期望值匹配的变化值时才完成其执行。
图2显示根据本发明第二实施例的电脑系统的示意图。电脑系统200是一个并行电脑系统,并包含多个处理单元(例如处理器核心)。为了清楚与简便起见,所示的电脑系统200包含处理单元204与前述的处理单元102,通过外部总线110相互通信,其中处理单元204具有内建的缓存206,并有程序线程207在处理单元204上运行。可是,这仅是用来展示,并非本发明的限制。另外,程序线程107_1及207可在同一个处理单元204上运行。处理单元204执行等待-信号(wait-on-signal)指令,例如非阻挡信号-加载-获取指令(non-blockingsignal-load-acquireinstruction,下文称作信号-加载-获取-nb指令),其由程序线程207启动,用来获取信号变化事件的信息。处理单元102扮演“生产者”处理单元,且处理单元204扮演“消费者”处理单元。在一个实施例中,信号-加载-获取-nb指令是一个用在地址区域的信令操作专用的加载-获取指令。在另一个实施例中,信号-加载-获取-nb指令是一个信令操作专用的加载-获取类型的指令。需要注意的是,从处理单元设计的角度来看,信号-加载-获取-nb指令可在没有期望的信号变化事件时,在其第一次操作时完成,也可在观察到信号变化事件时在后续的执行中完成。换句话说,提出的非阻挡信号-加载-获取指令总在执行时完成,而不论信号变化的情况如何。
在第一种情形中,程序线程207在程序线程107_1启动信号-存储-释放指令的时候启动信号-加载-获取-nb指令,进入的信号变化事件立刻被信号-加载-获取-nb指令的即时执行所观察到。而且,信号变化事件与其相关的变化值立刻被程序线程207所接收到,而没有被隐藏到缓存单元206中。也就是说,当程序线程207在有信号变化事件进入时,启动信号-加载-获取-nb指令,由程序线程207启动的信号-存储-释放指令被硬件(例如缓存单元206)转换为缓存隐藏操作,但并不记录在与缓存单元206相关的信令状态机208中,以影响缓存单元206的缓存状态。
在第二种情形下,当程序线程107_1启动信号-存储-释放指令后,程序线程207启动信号-加载-获取-nb指令,由程序线程107_1启动的信号-存储-释放指令被转化为硬件(例如缓存单元206)操作的缓存隐藏操作,然后记录在与缓存单元206相关的信令状态机208中。换句话说,当进入的信号变化事件并没有立刻被处理单元204接收时(具体是程序线程207),缓存单元206(具体是与缓存单元206相关的状态机208)储存由处理单元204接收的信号变化事件的信息,这是由在处理单元102上运行的信号-存储-释放指令启动的缓存隐藏操作,其中信号变化事件由程序线程107_1所启动,用来提醒在处理单元204上运行的程序线程207。在本实施例中,缓存单元206具有信令状态机208,用来指派预定状态“Change-Locked”给缓存入口209,以回应信号变化事件的信息的缓存隐藏,其中预定状态“Change-Locked”是用来表示信号变化事件的信息已经记录在相关的缓存入口209中。当程序线程207在信号变化事件的信息被隐藏进缓存单元206之后启动信号-加载-获取-nb指令,因为“Change-Locked”的缓存入口209的匹配令信号变化事件被观察到,而信号-记载-获取-nb指令从缓存单元206加载信号变化时间的信息以完成其执行。举例来说,记录的缓存状态的匹配(“matching”)意味着,记录的缓存状态是与一个信号操作有关,该操作的信号变量与信号-加载-获取-nb指令操作的信号变量一样。
在第三种情形下,程序线程207在程序线程107_1启动信号-存储-释放指令之前启动信号-加载-获取-nb指令,处理单元204的处理器执行流并没有停止来等待在处理单元102上运行的程序线程107_1启动的信号变化事件。相反,程序线程207因没有期望的信号变化而在其第一次执行时就完成信号-加载-获取-nb指令(也即当前由信号-加载-获取-nb指令加载的信号值对后续的指令是无效/无意义的),并在后面时间执行加载-获取指令(例如提出的信号-加载-获取指令,信号-加载-获取-nb指令,信号-加载-获取-nbcb指令,以及信号-加载-获取-int指令中的一个)以检查是否可观察到信号变化事件。因为加载-获取指令(例如信号-加载-获取-nb指令)可被处理器执行流选择并用来检查是否在后面需要时该信号变化事件是否可用,当信号变化事件没有在其第一次执行时被信号-加载-获取-nb指令观察到时,程序线程207的处理器执行流不被停止。而且,在程序线程107_1启动信号-存储-释放指令来传递信号变化事件时,当处理单元204执行信号-加载-获取-nb指令时观察到进入的信号变化事件或信号变化事件被隐藏到缓存单元206中。需要注意的是,信号-加载-获取-nb指令在其每次执行的时候都会完成,而不论信号变化的探测结果。换句话说,由信号-加载-获取-nb指令得到的信号变化的探测结果可为有效或无效的,这取决于期望的信号变化事件是否发生。
在第三种情形下,程序线程207在程序线程107_1启动信号-存储-释放指令之前启动信号-加载-获取-nb指令,信令状态机208可被进一步用来指派预定状态“Wait-Locked”给缓存入口209,以回应信号变化事件的错失,其中预定状态“Wait-Locked”被用来表示信号线程207有启动等待-信号指令(wait-on-signal,例如信号-加载-获取-nb指令),以等待信号变化事件。如果由程序线程207启动的信号-加载-获取-nb指令没有完成,但是程序线程207因为被另一个更高优先级的程序线程的抢占而变得不活动(inactive),可使能一个错误处理机制。举例来说,信号-加载-获取-nb指令可转变为另一个信号-加载-获取指令,例如信号-加载-获取-int指令,该指令后面会讨论。当由程序线程107_1启动希望的信号变化事件匹配该“Wait-Locked”缓存入口209时,程序线程207能通过信号-加载-获取-int指令加载希望的信号变化事件的信息。
在本实施例中,信号-加载-获取-nb指令用来与一个信号变化事件匹配,来继续信号变化的探测。相比于将存储的数据直接/无条件地从指定地址加载的传统加载-获取指令,信号-加载-获取-nb指令在其匹配到“Change-Locked”缓存入口或进入的信号变化事件时,可加载存储的数据来完成其执行。另外,信号-加载-获取-nb指令可有一个具有一个期望值的条件码来匹配信号的预期变化值。也即,当观察到信号变化事件有与期望值匹配的变化值时,信号变化探测流程是成功的。
图3显示本发明第三实施例的电脑系统的示意图。T电脑系统300是并行电脑系统,并包含多个处理单元(例如处理器核心)。为了清楚与简单起见,所示的电脑系统300包含处理单元304以及前面的处理单元102,通过外部总线110互相通信,其中处理单元304具有内建的缓存单元306,与在处理单元304上运行的程序线程307。可是,这仅是展示之用,并非本发明的限制。另外,程序线程107_1与307可在同一处理单元304上运行。处理单元304执行等待-信号指令(wait-on-signal),例如具有回调(callback)的非阻挡信号-加载-获取指令(下文称作信号-加载-获取-nbcb),该指令由程序线程307所启动,用来获取信号变化事件的信息。处理单元102扮演“生产者”处理单元,处理单元304扮演“消费者”处理单元。在一个实施例中,信号-加载-获取-nbcb指令是一个用于地址区域的信令操作专用的指定加载-获取指令。在另一个实施例中,信号-加载-获取-nbcb指令是一个专用于信令操作的加载-获取类型指令。需要注意的是,从处理单元设计的角度来看,当没有期望的信号变化事件时,信号-记载-获取-nbcb指令在第一执行时就完成,而当观察到期望的信号变化事件时,可在后续的执行中完成。换句话说,提出的具有回调的非阻挡信号-加载-获取指令总是在执行时完成,而不论信号变化情形。
在第一种情形下,程序线程307在程序线程107_1启动信号-存储-释放指令的时候启动信号-记载-获取-nbcb指令,进入的信号变化事件被信号-加载-获取-nbcb指令的当前执行及时观察到。而且,信号变化事件及其相关的变化值被程序线程307立刻接收而不被隐藏到缓存单元306中。也就是说,当程序线程307在有进入的信号变化事件时启动信号-加载-获取-nbcb指令时,由程序线程107_1启动的信号-存储-释放指令被硬件(例如缓存单元306)转换为缓存隐藏操作,但不记录在与缓存单元306相关的信令状态机308中,来影响缓存单元306的任何缓存状态。
在第二种情形下,当程序线程307在程序线程107_1启动信号-存储-释放指令之后启动信号-加载-获取-nbcb指令,由程序线程107_1启动的信号-存储-释放指令被硬件(例如缓存单元306)转换为缓存隐藏操作,然后记录到与缓存单元306相关的信令状态机308。换句话说,当进入的信号变化事件没有立刻被处理单元304(具体地,程序线程307)接收,缓存单元306(具体地,与缓存的单元306相关的信令状态机308)储存由处理单元304接收的信号变化事件的信息,其为一个在处理单元102运行的由信号-存储-释放指令启动的缓存隐藏操作,其中由程序线程107_1启动的信号变化事件用来提醒在处理单元304上运行的程序线程307。在本实施例中,缓存单元306具有信令状态机308,用来把一个预定状态“Change-Locked”指派给缓存入口309,以回应信号变化事件的信息的缓存隐藏,其中预定状态“Change-Locked”用来表示信号变化事件的信息已经被记录在相关的缓存入口309中。当程序线程307在信号变化事件的信息被隐藏到缓存单元306之后启动信号-加载-获取-nbcb指令,信号变化事件因与“Change-Locked”的缓存入口309匹配而被观察到,信号-加载-获取-nbcb指令从缓存单元306加载信号变化事件的信息来完成其执行。举例来说,记录缓存状态的“匹配(matching)”表示记录的缓存状态相关的信号操作的信号变量与信号-加载-获取-nbcb指令操作的信号变量是一样的。
在第三种情形下,其中程序线程307在程序线程107_1启动信号-存储-释放指令之前启动信号-加载-获取-nbcb指令,处理单元304的处理器执行流并不停止来等待在处理单元102上运行的程序线程107_1所启动的信号变化事件。而且,信令状态机308用来指派预定状态“Wait-Locked”给缓存入口309,并相应于信号变化事件的错失记录一个与“Wait-Locked”缓存入口309相关的回调操作数(operand),其中预定状态“Wait-Locked”用来指示程序线程307已经启动等待-信号指令(例如信号-加载-获取-nbcb指令)来等待信号变化事件。当信号变化事件由运行在处理单元102上的程序线程107_1所启动时,信号变化事件匹配该“Wait-Locked”缓存入口309,且基于记录的回调操作数激活一个回调函数来重新定向处理器执行流回到程序线程307来继续信号变化探测。如上所述,信号-加载-获取-nbcb指令总是在执行时完成,不论信号变化情形。而且,当加载-获取指令由于激活的回调函数与信号-加载-获取-nbcb指令一样时,加载-获取-指令应被认为是在之前执行的信号-加载-获取-nbcb指令完成之后执行的一个新指令。在本实施例中,回调操作数可指示之前发出该信号-加载-获取-nbcb指令的程序线程307中的一个子程序地址。另外,进入信号变化事件的信息被隐藏进缓存单元306,任何加载-获取指令(例如提出的信号-加载-获取指令,信号-加载-获取-nb指令,信号-加载-获取-nbcb指令,以及信号-加载-获取-int指令中的一个)可被执行以回应回调函数,该回调函数因为“Wait-Locked”缓存入口309的匹配而激活。
如果由程序线程307启动的信号-加载-获取-nbcb指令完成,并记录了回调操作数,但是程序线程307因为内容切换变得不活动(inactive),可能会使能错误处理机制。但是,这仅是为了展示,并非本发明的限制。
在本实施例中,信号-加载-获取-nbcb指令用来匹配信号变化事件,以继续信号变化探测。相比于直接/无条件地从制定地址加载存储的数据的传统加载-获取指令,信号-加载-获取-nbcb指令当执行时匹配“Change-Locked”缓存入口时,或者当其执行中对应进入的信号变化事件匹配“NORMAL”缓存入口时,可加载存储的数据来完成其执行而不需要记录回调操作数。另外,信号-加载-获取-nbcb指令可具有一个有期望值的条件码来与信号的预期变化值来匹配。也即,当观察到信号变化时间具有匹配期望值的变化值的时候,信号变化探测流程成功。
图4显示根据本发明的第四实施例的电脑系统的示意图。电脑系统400是并行电脑系统,并包含多个处理单元(例如处理器核心)。为了清楚与简单起见,所示的电脑系统400包含处理单元404及前面的处理单元102,它们通过外部总线110互相通信,其中处理单元404具有内建的缓存单元406,程序线程407在处理单元404上运行。可是,这仅是展示之用,并非本发明的限制。另外,程序线程107_1及407可在同一处理单元404上运行。处理单元404执行等待-信号指令,例如具有中断能力的非阻挡信号-加载-获取指令(signal-load-acquire-int,下文称作信号-加载-获取-int指令),其由程序线程407启动来获取信号变化事件的信息。处理单元102扮演“生产者”处理单元,处理单元404扮演“消费者”处理单元。在一个实施例中,信号-加载-获取-int指令是一个应用在地址区域的信令操作专用加载-获取指令。在另一个实施例中,信号-加载-获取-int指令是一个专用于信令操作的加载-获取类型指令。需要注意的是,从处理单元设计的角度来看,信号-加载-获取-int指令可在当没有期望的信号变化事件时在第一次执行时就完成,而当观察到期望信号变化事件时,在后面执行中完成。换句话说,具有中断能力(例如中断旗标)的非阻挡信号-加载-获取指令总是在执行时完成,无论信号变化的情形。
在第一种情形下,程序线程407在程序线程107_1启动信号-存储-释放指令时启动信号-加载-获取-int指令,进入的信号变化事件被信号-加载-获取-int指令的当下执行所及时观察到。而且,信号变化事件及与其相关的变化值立刻被程序线程407所接收,并没有隐藏到缓存单元406中。也即,当有进入信号变化事件时,程序线程407启动信号-加载-获取-int指令,由程序线程107_1启动的信号-存储-释放指令被硬件(例如缓存单元406)转换为缓存隐藏操作,当是并没有记录到与缓存单元406有关的信令状态机408,来影响缓存单元406的任何缓存状态。
在第二种情形中,程序线程407在程序线程107_1启动信号-存储-释放指令之后启动信号-加载-获取-int指令,由程序线程107_1启动的信号-存储-释放指令被硬件(例如缓存单元406)转换为缓存隐藏操作,然后被记录在与缓存单元406相关的信令状态机408中。换句话说,当信号变化事件没有被处理单元404(具体地,程序线程407)及时接收时,缓存单元406(具体地,与缓存单元406相关的信令状态机408)将由处理单元404接收的信号变化事件的信息储存,其为在处理单元102上运行的由信号-存储-释放指令启动的缓存隐藏操作,其中由程序线程107_1启动的信号变化事件用来提醒在处理单元404上运行的程序线程407。在本实施例中,缓存单元406具有信令状态机408,用来指派预定状态“Change-Locked”给缓存入口409,以回应信号变化事件的信息的缓存隐藏,其中预定状态“Change-Locked”用来指示信号变化事件的信息已经存储在相关缓存入口409中。当程序线程407在信号变化事件的信息隐藏进缓存单元406之后启动信号-加载-获取-int指令,信号变化事件因“Change-Locked”缓存入口409的匹配而被观察到,信号-加载-获取-int指令将信号变化事件的信息从缓存单元406加载以完成其执行。举例来说,记录的缓存状态的匹配“matching”表示记录的缓存状态与操作于一个信号变量的信号操作相关,而该信号变量与信号-加载-获取-int指令操作的信号变量是一样的。
在第三种情形下,程序线程407在程序线程107_1启动信号-存储-释放指令之前启动信号-加载-获取-int指令,处理单元404的处理器执行流并没有停止来等待在处理单元102上运行的程序线程107_1启动的信号变化事件。另外,信号状态408用来指派预定状态“Wait-Locked”给缓存入口409,并给“Wait-Locked”缓存入口分配一个中断使能逻辑来回应信号变化事件的错失,其中预定状态“Wait-Locked”用来指示程序线程407启动等待-信号指令(例如信号-加载-获取-int指令)来等待信号变化事件。当信号变化事件由在处理单元102上运行的程序线程107_1启动时,信号变化事件匹配“Wait-Locked”缓存入口309,基于中断使能逻辑触发一个中断事件来最终困住(trap)处理单元404,以提供中断事件来继续信号变化探测。如上所属,信号-加载-获取-int指令在执行时总是完成,无论信号变化情形如何。而且,当因中断使能逻辑触发而执行的加载-获取指令是同样的信号-加载-获取-int指令时,加载-获取指令应被认为是在之前执行的信号-加载-获取-int指令完成后的新指令。在本实施例中,进入信号变化事件的信息被隐藏进缓存单元406中,任何类型的加载-获取指令(例如提出的信号-加载-获取指令,信号-加载-获取-nb指令,信号-加载-获取-nbcb指令,以及信号-加载-获取-int指令中的一种),可因中断使能逻辑而执行,该中断逻辑使能是因为“Wait-Locked”缓存入口409的匹配而触发。
在本实施例中,信号-加载-获取-int指令用来匹配信号变化事件来继续信号变化探测。相比于直接/无条件地从指定地址加载存储的数据的传统加载-获取指令,信号-加载-获取-int指令在执行时匹配“Change-Locked”缓存入口或者当执行时对应进入信号变化事件其匹配“NORMAL”缓存入口时,可加载储存的数据来完成其执行,而不需要记录一个中断旗标。另外,信号-加载-获取-int指令可有一个具有期望值的条件码,来匹配一个信号的预期变化值。也即,当观察到信号变化事件具有一匹配该期望值的变化值时,信号变化探测流程是成功的。
在图1-4的每个实施例中,缓存单元106/206/306/406内建于“消费者”处理单元104/204/304/404中,通过总线110耦接到“生产者”处理单元102。可是,这仅是为了展示之用,并非本发明的限制。缓存单元的位置可被调整,这取决于实际的设计考虑。下面介绍几种不同的设计。
图5显示本发明第五实施例的电脑系统的示意图。电脑系统500是一个并行电脑系统,包含多个处理单元(例如处理核心)。为了清楚与简单起见,所示的电脑系统500包含处理单元504及前面的处理单元102,它们通过外部总线110互相通信,其中程序线程507在处理单元504上运行。处理单元102可执行由程序线程107_1启动的信号-存储-释放指令,来提醒在处理单元504上运行的程序线程507。处理单元504执行由程序线程507启动的等待-信号指令(例如提出的信号-加载-获取指令,信号-加载-获取-nb指令,信号-加载-获取-nbcb指令,以及信号-加载-获取-int指令中的一种),来获取信号变化事件的信息。而且,处理单元102扮演“生产者”处理单元,处理单元504扮演“消费者”处理单元。在本实施例中,缓存单元506在处理单元102与504的外部,其中缓存单元506具有缓存入口509,进一步具有一个信令状态机508,用来指派一个预定状态(例如“NORMAL”,“Change-Locked”或“Wait-Locked”)给缓存入口509。而且,信号-存储-释放指令与信号-等待指令(例如提出的信号-加载-获取指令,信号-加载-获取-nb指令,信号-加载-获取-nbcb指令,以及信号-加载-获取-int指令中的一种)通过外部总线110的总线交换来承载。当提出的信号-存储-释放总线交换被缓存单元506接收时,缓存单元506被命令来与一个等待-信号匹配,该等待-信号是当前或之前发送到缓存单元506,或者缓存单元506被命令用相关的地址与数据值一起来记录信号-存储-释放总线交换,以与之后发送到缓存单元506的等待-信号匹配。不像传统的加载-获取总线交换,提出的等待-信号总线交换(具体地,整个流程要探测期望的信号变化事件)会直到其与一个发到缓存单元506的信号-存储-释放总线交换匹配才获成功。一个具体的等待-信号总线交换(例如信号-加载-获取-nbcb总线交换或信号-加载-获取-int总线交换)可请求缓存单元506在后续的匹配中用其相关的地址与数据值一起记录该交换,然后具体的等待-信号总线交换可完成,并允许处理单元504继续其处理器执行流。当后续匹配出现时,回调参数或中断参数因之前发出的具体等待-信号总线指令(例如信号-加载-获取-nbcb总线交换或信号-记载-获取-int总线交换)而存储进缓存单元506,等待-信号总线指令是由总线交换来承载并通知处理单元504。
因为本领域技术人员在阅读了前面关于电脑系统100-400的段落,应能轻易了解电脑系统500的细节,此处为了简洁不再赘述。
图6显示本发明第六实施例的电脑系统的示意图。电脑系统600是一个并行电脑系统,包含多个处理单元(例如处理器核心)。为了清楚与简单起见,电脑系统600包含处理单元602与前面的处理单元502,它们通过外部总线互相通信,其中程序线程607在处理单元602上运行。处理单元602可执行由程序线程607启动的信号-存储-释放指令,来提醒在处理单元504上运行的程序线程507。处理单元504执行由程序线程507启动的等待-信号指令(例如提出的信号-加载-获取指令,信号-加载-获取-nb指令,信号-加载-获取-nbcb指令,以及信号-加载-获取-int指令中的一种)来获取信号变化事件的信息。而且,处理单元602扮演“生产者”处理单元,处理单元504扮演“消费者”处理单元。在本实施例中,缓存单元606内建在处理单元602中,其中缓存单元606包含缓存入口609,而且进一步包含一个信令状态机608来指派一个预定状态(例如“NORMAL”,“Change-Locked”或“Wait-Locked”)给缓存入口609。并且,信号-存储-释放指令在处理单元602中传送,同时等待-信号指令(例如提出的信号-加载-获取指令,信号-加载-获取-nb指令,信号-加载-获取-nbcb指令,以及信号-加载-获取-int指令中的一种)被通过外部总线110的总线交换发送。因为本领域技术人员在阅读了前面关于电脑系统100-500的段落,应能轻易了解电脑系统600的细节,此处为了简洁不再赘述。
信令状态机(例如108,208,308,408,508或608)被实施来调节信号生产者(例如102或602)及信号消费者(例如104,204,304,404,或504)之间的同步。举例来说,而非限制,信令状态机具有多个状态,包含“NORMAL”状态,“Change-Locked”状态,“Wait-Locked”状态,及“ERROR”状态。指派“NORMAL”状态的缓存入口不是用来处理信号生产者与信号消费者之间的信号同步。指派“Change-Locked”状态的缓存入口因为对应等待-信号指令的缺失已经记录信号变化事件(例如信号-加载-获取指令,信号-加载-获取-nb指令,信号-加载-获取-nbcb指令,或信号-加载-获取-int指令)。指派“Wait-Locked”状态的缓存入口表示等待-信号指令(例如信号-加载-获取指令,信号-加载-获取-nb指令,信号-加载-获取-nbcb指令或信号-加载-获取-int指令),一直等待还没发生的对应信号变化事件。指派“ERROR”状态的缓存入口表示在基于硬件缓存隐藏的软件信令操作中发生错误。举例来说,对应信号-加载-获取-nbcb指令的操作,设定“ERROR”状态的旗标,在对应信令状态是具有中断旗标的“Wait-Locked”时执行该信号-加载-获取-nbcb。另外一个实施例中,当对应的信令状态是“Wait-Locked”并具有有效的回调操作数时,为回应一个信号-加载-获取-int指令而设定“ERROR”状态被旗标。错误处理机制被使能来完成信号变化探测流程。上面说明为展示所用,并非本发明的限制。在实际中,信令状态机可被修改来支持其他状态。
本领域的技术人员将注意到,在获得本发明的指导之后,可对所述装置和方法进行大量的修改和变换。相应地,上述公开内容应该理解为,仅通过所附加的权利要求的界限来限定。

Claims (20)

1.一种电脑系统,包含:
缓存单元;以及
第一处理单元,用于运行第一程序线程,并执行指令来将信号变化事件的信息通过缓存隐藏操作储存进缓存单元,其中该信号变化事件由该第一程序线程启动来提醒第二程序线程。
2.如权利要求1所述的电脑系统,其特征在于,该缓存单元内建在处理单元内,该第二程序线程运行于该处理单元上。
3.如权利要求1所述的电脑系统,其特征在于,该第二程序线程运行于该电脑系统的第二处理单元上,该缓存单元在该第一处理单元及该第二处理单元之外。
4.如权利要求1所述的控制器,其特征在于,该缓存单元内建在该第一处理单元中。
5.如权利要求1所述的电脑系统,其特征在于,该指令是一个应用于地址区域的信令操作专用的存储-释放指令。
6.如权利要求1所述的电脑系统,其特征在于,该指令是信令操作专用的存储-释放类型的指令。
7.如权利要求1所述的电脑系统,其特征在于,该缓存单元在该第二程序线程执行指令来获取该信号变化事件的信息之前将该信号变化事件的信息储存;该缓存单元包含信令状态机,用于指派预定状态给缓存入口,以回应该信号变化事件的信息的缓存隐藏,其中该预定状态用于指示指示该信号变化事件的信息已经被储存在该缓存入口中。
8.一种电脑系统,包含:
缓存单元,用于储存信号变化事件的信息,以回应缓存隐藏操作,其中该信号变化事件由第一程序线程启动;以及
第一处理单元,用于运行第二程序线程,并执行由该第二程序线程启动的指令,来获取该信号变化事件的信息。
9.如权利要求8所述的电脑系统,其特征在于,该缓存单元是内建在该第一处理单元中。
10.如权利要求8所述的电脑系统,其特征在于,该第一程序线程运行在该电脑系统的第二处理单元上,该缓存单元在该第一处理单元与该第二处理单元之外。
11.如权利要求8所述的电脑系统,其特征在于,该缓存单元内建在处理单元中,该第一程序线程运行于该处理单元上。
12.如权利要求8所述的电脑系统,其特征在于,该指令是应用于地址区域的信令操作专用的加载-获取指令。
13.如权利要求8所述的电脑系统,其特征在于,该指令是信令操作专用的加载-获取类型指令。
14.如权利要求8所述的电脑系统,其特征在于,该指令是信号-加载-获取指令,其在观察到该信号变化事件时才完成。
15.如权利要求8所述的电脑系统,其特征在于,该信号变化事件在该第一处理单元执行该指令时未被观察到,该指令并不停止该第一处理单元的处理器执行流。
16.如权利要求15所述的电脑系统,其特征在于,该信号变化事件在该第一处理单元执行该指令之后由该第一程序线程启动;以及该缓存单元包含信令状态机,用于指派预定状态给该缓存单元的缓存入口以回应该信号变化事件的错失,其中该预定状态用于指示该第二程序线程已经启动该指令来等待该信号变化事件。
17.如权利要求15所述的电脑系统,其特征在于,当该信号变化事件与该预定状态匹配时,回调函数被激活来重新定向该第一处理单元的该处理器执行流回到该第二程序线程,来继续信号变化探测。
18.如权利要求17所述的电脑系统,其特征在于,该信号变化事件在该第一处理单元执行该指令之后由该第一程序线程启动;以及该缓存单元包含信令状态机,用于指派预定状态给该缓存单元的缓存入口,并记录与该缓存入口相关的回调操作数,以回应该信号变化事件的错失,其中该预定状态用来指示该第二程序线程已经启动该指令来等待该信号变化事件。
19.如权利要求15所述的电脑系统,其特征在于,当该信号变化事件与具有该预定状态的该缓存入口匹配时,中断事件被触发来困住该第一处理单元,以让该中断事件继续信号变化探测。
20.如权利要求19所述的电脑系统,其特征在于,该信号变化事件在该第一处理单元执行该指令之后由该第一程序线程启动;以及该缓存单元包含信令状态机,用于指派预定状态给该缓存单元的缓存入口,并给该缓存入口关联中断使能逻辑,以回应该信号变化事件的错失,其中该预定状态用来指示该第二程序线程已经启动该指令来等待该信号变化事件。
CN201510683419.6A 2014-10-20 2015-10-20 电脑系统 Withdrawn CN105528252A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201462065780P 2014-10-20 2014-10-20
US62/065,780 2014-10-20
US14/720,986 US10146595B2 (en) 2014-10-20 2015-05-26 Computer system for notifying signal change event through cache stashing
US14/720,986 2015-05-26

Publications (1)

Publication Number Publication Date
CN105528252A true CN105528252A (zh) 2016-04-27

Family

ID=55749149

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510683419.6A Withdrawn CN105528252A (zh) 2014-10-20 2015-10-20 电脑系统

Country Status (2)

Country Link
US (1) US10146595B2 (zh)
CN (1) CN105528252A (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106293970B (zh) * 2016-08-09 2019-02-15 浪潮(北京)电子信息产业有限公司 一种基于ipc的进程间异步处理方法及系统
US11263137B2 (en) * 2020-05-27 2022-03-01 Arm Limited Core-to-core cache stashing and target discovery

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060161919A1 (en) * 2004-12-23 2006-07-20 Onufryk Peter Z Implementation of load linked and store conditional operations
US20110289284A1 (en) * 2010-05-19 2011-11-24 Won-Seok Jung Multi-processor device and inter-process communication method thereof
CN102971708A (zh) * 2010-10-19 2013-03-13 英派尔科技开发有限公司 多线程程序的低功率执行
CN103729166A (zh) * 2012-10-10 2014-04-16 华为技术有限公司 程序的线程关系确定方法、设备及系统

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6154785A (en) 1998-07-17 2000-11-28 Network Equipment Technologies, Inc. Inter-processor communication system
US8006069B2 (en) 2006-10-05 2011-08-23 Synopsys, Inc. Inter-processor communication method
US20080229325A1 (en) * 2007-03-15 2008-09-18 Supalov Alexander V Method and apparatus to use unmapped cache for interprocess communication
US8099557B2 (en) * 2008-02-26 2012-01-17 Globalfoundries Inc. Push for sharing instruction
US7774522B2 (en) 2008-11-17 2010-08-10 Applied Micro Circuits Corporation Cache stashing processor control messages
US20110246138A1 (en) 2010-04-01 2011-10-06 Yi-Jen Chung Hardware status detecting circuit for generating one hardware status detecting signal having information of multiple hardware status detectors, related hardware status identifying circuit, related hardware status detecting system, and related methods
US8514232B2 (en) * 2010-06-28 2013-08-20 International Business Machines Corporation Propagating shared state changes to multiple threads within a multithreaded processing environment

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060161919A1 (en) * 2004-12-23 2006-07-20 Onufryk Peter Z Implementation of load linked and store conditional operations
US20110289284A1 (en) * 2010-05-19 2011-11-24 Won-Seok Jung Multi-processor device and inter-process communication method thereof
CN102971708A (zh) * 2010-10-19 2013-03-13 英派尔科技开发有限公司 多线程程序的低功率执行
CN103729166A (zh) * 2012-10-10 2014-04-16 华为技术有限公司 程序的线程关系确定方法、设备及系统

Also Published As

Publication number Publication date
US20160110203A1 (en) 2016-04-21
US10146595B2 (en) 2018-12-04

Similar Documents

Publication Publication Date Title
US8004533B2 (en) Graphics input command stream scheduling method and apparatus
TWI428763B (zh) 支援複數繪圖處理器之互動的方法與系統
KR101730781B1 (ko) 경쟁 상태를 검출하는 기법
CN101702231A (zh) 绘图处理单元同步系统与方法
JPH03212755A (ja) マルチプロセッサ・システムおよび割り込み方法
JP2005539322A5 (zh)
CN105528252A (zh) 电脑系统
JP2006309276A (ja) デバッグ機構およびデバッグレジスタ
JP5397546B2 (ja) マルチコアプロセッサシステム、制御プログラム、および制御方法
US9430419B2 (en) Synchronizing exception control in a multiprocessor system using processing unit exception states and group exception states
JP2010020363A (ja) 演算処理装置
EP0435249A2 (en) Pipelined computer with half machine cycle alternating write control for avoiding usage conflicts in general registers
JP5429395B2 (ja) 情報処理装置、情報処理プログラム、および情報処理方法
JP5803721B2 (ja) データ処理装置
JP2008262557A (ja) 制御装置のタスク管理装置、及び、制御装置のタスク管理方法
KR102556413B1 (ko) 세마포어를 이용한 가상화 머신 관리 방법 및 이를 위한 장치
JP3506920B2 (ja) 全命令トレースデータの2次記憶装置への格納競合防止方法
US20050210172A1 (en) Processing real-time command information
JP5621896B2 (ja) マルチプロセッサシステム、制御プログラム、および制御方法
JP2011129130A5 (zh)
JPH0731527B2 (ja) プログラマブルコントロ−ラ
JPH0279122A (ja) 浮動小数点演算機構
JP2880658B2 (ja) マルチタスクプログラムの暴走検出装置
JPH01147640A (ja) マルチプログラミング・デバッグ装置
US9342359B2 (en) Information processing system and information processing method

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WW01 Invention patent application withdrawn after publication

Application publication date: 20160427

WW01 Invention patent application withdrawn after publication