对执行包括辅助子线程的线程的显式软件控制的方法和结构的制作方法

文档序号:6655427阅读:143来源:国知局
专利名称:对执行包括辅助子线程的线程的显式软件控制的方法和结构的制作方法
对执行包括辅助子线程的线程的显式软件控制的方法和结构 相关申请隶本申请案主张2004年3月31闩申请的标题为"Method And Structure For Explicit Software Control Of Execution Of A Thread Including A Helper Subthread"且发明者为 Christof Braun、 Quirm A. Jacobson、 Shailender Chaudhry和Marc Tremblay的美国临时屮 请案第60/558,690号的益处,所述申请案以全文引用的方式并入本文。技术领城本发明大体上涉及增强处理器的性能,且更确切地说涉及用于增强存储器级并行性 (MLP)以减少处理器在等待数据载入上耗费的总体时间的方法。为增强现代处理器的性能,使用各种技术来增加给定时间周期中执行的指令数目。 这些技术中的一种是预取处理器将来需要的数据。预取数据大体上是指预测不久以后将需要的数据并发布交易以使得所述数据尽可 能地靠近处理器的机制。使数据更加靠近处理器可在需要数据时减少存取所述数据的等 待时间。人们已提出许多种形式的数据预取来提高存储器级并行性(MLP)。-种形式的数 据预取使用基于各种试探法来预取数据的硬件机制。另一种形式的数据预取使用传统的 软件预取,其中将指示放置在指令流中以起始数据预取。大多指令设定架构具有一预取指令,其使得软件通知硬件不久后软件可能需要指令 中指定的一给定位置上的数据。随后,硬件通过将数据潜在地移动到处理器中的接近的 高速缓冲存储器来回应这些预取指令。为了使用预取指令,软件必须还包括用以计算地址的代码序列。这些代码序列不但 为程序的总体执行添加了额外开销,而且还需要分配在一定时段内指定给预取工作的一 些硬件资源,例如寄存器。数据预取在减少处理器花费在等待数据上的时间方面的潜在 益处通常会抵消超出数据预取的额外开销,但并非总是如此。这-一点尤其复杂,因为软 件充其量也无法完全提前知道哪些数据将已靠近处理器以及哪些数据需要预取。7发明内容根据本发明的一个实施例,用显式软件控制來在等待完成长等待时间操作的同时执 行辅助操作。此处,长等待时间指令是指其执行需要存取局部高速缓冲存储器中得不到 的信息或使用指令预备好执行时不可用的资源的指令。例如,在等待载入指令执行完成时,执行一个或一个以上预取指令,连同计算预取 指令地址所需的额外计算。以一旦预取指令执行完成,处理便返回到载入指令之后的原 始代码段且执行照常继续的方式來进行此举。因此,可识别出处理器空闲的时段,且仅在处理器空闲时预取数据的代码序列才会 运行。用以预取数据的代码序列的包含方式使得所述代码序列不会影响主程序的状态或 资源分配。在一个实施例中, 一种基于计算机的方法在显式软件控制下确定与长等待时间指令 相关联的项目是否可用。在所述确定发现与长等待时间指令相关联的项目不可用后,在 显式软件控制下执行一辅助子线程。在显式软件控制下执行辅助子线程会导致对一种状态进行定点检验以获得快照状 态。在一个实例中,所述状态为处理器状态。在显式软件控制下执行辅助子线程还会通 过执行辅助子线程中的指令而导致执行辅助操作。 一旦完成辅助操作,状态就退回至快 照状态,且使用项目的实际值执行原始代码段。或者,在所述确定发现与长等待时间指令相关联的项目可用后执行原始代码段。在 此情况下,不执行辅助子线程。对于此实施例, 一种结构包括用于在显式软件控制下确定与长等待时间指令相关 联的项目是否可用的构件;和用于在所述确定发现与长等待时间指令相关联的项目不可 用后,在显式软件控制下执行一辅助子线程的构件。用于在显式软件控制下执行辅助子线程的构件包括用于对一种状态进行定点检验 以获得快照状态的构件;用于通过执行辅助子线程中的指令而执行辅助操作的构件;用 于将所述状态退回至快照状态的构件。所述结构还包括用于使用项目的实际值来执行原 始代码段的构件。举例而言,可通过使用存储的计算机可执行指令和计算机系统中执行这些指令的处 理器來实施这些构件。所述计算机系统可为工作站、便携式计算机、客户端-服务器系统, 或联网计算机、存储媒体等的组合。对于此实施例, 一种计算机系统包括一处理器和一耦合到所述处理器的存储器。所述存储器包括存储在其中的指令,当在所述处理器上执行所述指令时, -种方法包括在显式软件控制下确定与长等待时间指令相关联的项目是否可用;和在所述确定发现与长等待时间指令相关联的项目不可用后,在显式软件控制下执行 一辅助子线程。同样,对于此实施例, 一种计算机程序产品包括一经配置以存储或传送用于上述方法的计算机可读代码的媒体,所述方法包括在显式软件控制下确定与长等待时间指令相关联的项目是否可用;和 在所述确定发现与长等待时间指令相关联的项目不可用后,在显式软件控制下执行一辅助子线程。在另一实施例中, 一种基于计算机的方法包括在显式软件控制下确定与长等待时间指令相关联的项目是否可用;和 执行以下操作之一(a) 在所述确定发现与长等待时间指令相关联的项目不可用后,在显式软件控制 下执行--辅助子线程;和在完成辅助子线程的执行之后,使用项目的实际值执行原始代码段;和(b) 在所述确定发现与长等待时间指令相关联的项目可用后使用项目的实际值执 行原始代码段。对于所述另一实施例, 一种结构包括用于在显式软件控制下确定与长等待时间指令相关联的项目是否可用的构件;和 用于执行以下操作之一的构件(a) 在所述确定发现与长等待时间指令相关联的项目不可用后,在显式软件控制 下执行一辅助子线程;和在完成辅助子线程的执行之后,使用项目的实际值执行原始代码段和(b) 在所述确定发现与长等待时间指令相关联的项目可用后使用项目的实际值执 行原始代码段。举例而言,可通过使用存储的计算机可执行指令和计算机系统中执行这些指令的处 理器来实施这些构件。所述计算机系统可为工作站、便携式计算机、客户端-服务器系统, 或联网计算机、存储媒体等的组合。同样, -种计算机系统包括一处理器和一耦合到所述处理器的存储器。所述存储器 中包括存储在其中的指令,当在所述处理器上执行所述指令时,一种方法包括在显式软件控制下确定与长等待时间指令相关联的项目是否可用;和执行以下操作之一(a) 在所述确定发现与长等待时间指令相关联的项目不可用后,在显式软件控制 下执行一辅助子线程;和在完成辅助子线程的执行之后,使用项目的实际值执行原始代码段;和(b) 在所述确定发现与长等待时间指令相关联的项目可用后使用项目的实际值执 行原始代码段。同样, -种计算机程序产品包括一经配置以存储或传送用于一种方法的计算机可读代码的媒体,所述方法包括在显式软件控制下确定与长等待时间指令相关联的项目是否可用和 执行以下操作之一(a) 在所述确定发现与长等待时间指令相关联的项目不可用后,在显式软件控制 下执行一辅助子线程;和在完成辅助子线程的执行之^,使用项目的实际值执行原始代码段和(b) 在所述确定发现与长等待时间指令相关联的项目可用后使用项目的实际值执 行原始代码段。關翻图1为包括一含有带辅助子线程的单线程代码序列的源程序的系统的方框图,其提 供根据本发明第一实施例的辅助操作的显式软件控制。图2为根据本发明一个实施例在一源计算机程序中的适当点插入带有辅助子线程的 单线程的一个实施例的处理流程图。图3为根据本发明一个实施例的对辅助子线程和辅助操作的显式软件控制的处理流 程图。图4为说明使用包含带辅助子线程的单线程的源程序的若干替代实施例的高级网络 系统图。在图式屮,具有相同参考数字的元件为相同或类似元件。同样,参考数字的第—-数 位指示图式号码,其中关联于所述参考数字的元件首次出现。
具体实施方式
根据本发明的--个实施例,例如当线程中的长等待时间指令等待数据时,执行一个 可执行有益工作的辅助子线程。如以下将更完整解释的,所述辅助子线程的执行是在显式软件控制下进行的。在计算机系统ioo的处理器no上执行带有辅助子线程的单线程代码序列mo中的—系列软件指令。对单线程代码序列140中的软件指令系列的执行引起计算机系统100(例如)(i)确定由长等待时间指令提供的数据是否可用,且当所述数据不可用时,(ii)对计算机系统100的状态进行快照(snapshot)并维持退回至所述快照状态的能力,(iii) 执行辅助子线程中的辅助指令,以及(W) —旦完成所述辅助子线程中的辅助指令的执 行,就退回至快照状态并继续执行。在一个实施例中,辅助子线程在等待长等待时间指令完成时预取数据。通过执行辅 助子线程检索到的数据不会影响(例如)处理器170的快照状态。通过执行辅助子线程 检索到的数据可在从快照状态继续执行时提高指令级并行性。使用者可在源程序130中使用显式软件控制來控制辅助子线程的执行。或者,例如, 一编译器或优化解释器在处理源程序130时可在预期存在长等待时间指令的点处插入提 供对辅助子线程的显式软件控制的指令。电于编译器或优化解释器可能不会确切地知道特定指令是否会在给定执行时具有 长等待时间,所以如果能够在软件控制下检验出指令是否会经历长等待吋间,则能保证 仅在特定指令遇到长等待时间时才执行辅助子线程。因此,如同下文更完整描述的那样, 在预期存在长等待时间的点处插入辅助子线程,但如果与长等待时间相关联的数据、功 能单元或其他因素可用,则代码继续而不执行辅助子线程。更确切地说,在--个实施例中,使用处理200修改程序代码,以便在选定位置插入 辅助子线程。在长等待时间指令检验操作201中,对执行指令是否预期将需要大量处理 器周期进行确定。如果指令预期不需要大量处理器周期,那么处理IH常继续,且不修改 代码以在程序代码中的所述点处包括辅助子线程。相反,如果指令预期需要大量处理器 周期,那么处理转到辅助子线程的显式软件控制操作202,其中用于执行辅助子线程的 显式软件控制指令包含于源程序130中。在此实施例中,向源程序130添加指令,所述指令一经执行便执行资源/信息可用检 验操作210。如以下更完全解释的那样,此指令的执行向程序提供对辅助子线程是否执 行的显式控制。如果资源或信息可用,那么处理TF.常继续。相反,如果资源或信息不可 用,那么资源/信息可用检验操作210将处理转到辅助子线程操作211。在此实施例中,在辅助子线程操作211中,包含指令从而使上述操作(ii)至(iv) 响应于辅助子线程的执行而执行。确切地说,软件指令引导处理器170对状态进行快照并管理对所述状态的所有后继改变,从而在必要时处理器170可回复到快照时的状态。所获得的快照取决于所捕捉的状态。在一个实施例中,所述状态为系统状态。在另 一实施例中,所述状态为机器状态,且在又一实施例中,所述状态为处理器状态。在毎 种情况下,后继操作是相同的。快照之后,执行辅助代码序列。请注意,辅助代码序列不需要导致长等待时间的指 令的结果。在完成辅助代码序列的执行后,使状态退回至快照状态且继续执行。对于有利的辅助代码序列的显式软件控制,软件应用程序理想地具有在长等待时间 之后有可利用所述结果的操作。最普通的原因是与频繁错过高速缓冲存储器的载入相类 似的长等待时间操作。在Quinn A. Jacobson的标题为"METHOD AND STRUCTURE FOR CONVERTING DATA SPECULATION TO CONTROL SPECULATION"的共同让渡美国专利序号第 10/349,425号中揭示了用于确定在源程序130中将辅助子线程插在何处(例如插入点) 的其他实施例。美国专利申请案序号第10/349,425号的发明内容

、"体实施 方式和其中引用的图式、权利要求书以及说明书摘要以全文引用的方式并入本文。图3是使用方法200进行添加以提供对执行辅助子线程的显式软件控制的指令的一 个实施例的方法300的更为详细的处理流程图。为进一步说明方法300,以下列出用于 各种实例的伪码。表l中列出一实例伪代码段。表11 Producer—OP A, B -> %rZ2 Consumer_OP %rZ, C -> D第l行(行数并非伪码的部分,且仅用于参考)是指令Producer—OP,其使用项冃 A和B并将操作的结果置于register %rz中。执行指令Producer_OP的结果可能直到长 等待时间之后才可用。指令Producer一OP可为指令集中支持的任何指令。项目A和B仅用作占位符以指 示此特定操作需要两个输入。本发明的各种实施例也适用于具有单输入或多于两个输入的操作。寄存器9brZ可为 任意寄存器。此外,在本文中,当提到一条指令采取行动或使用信息时,所属领域的技 术人员将了解,所述行动或使用是执行所述指令的结果。第2行是指令ConsumdOP。指令Co鹏umer—OP使用执行存储在寄存器免rZ中的 指令Producer一OP的结果。项目C和D仅用作占位符以指示此特定操作需要两个输入9fcRZ和C,且具有输出D。虽然在此实施例中指令Consumer_OP由单行伪码表示,但指令Consumer_OP农示一个使用执行指令ProdUcer_OP的结果的代码段。所述代码段可包含更多行软件代码 中的一行。表2的Insert—21至Insert—26行中列出通过使用用于表1中的伪码的方法200产生 的伪码。 表21 Producer—OP A, B -> %rZInsert一21 if %rZ unavailable, branch predictInsert一22 original:2 Consumer_OP %rZ, C -> DInsert—23 predict; Insert一24 checkpoint, original Insert_2S <Helper Subthread Code > Insert—2 6 Fail同样,行数并非伪码的部分,且仅用于参考。在此实例中,将第l行识别为一插入点,且因此使用方法200插入包含Insert—21、 lnsert_22、 Insert_23、 Insert_24、 lnsert_2S和Insert—26各行的代码段。此指令序列的 特定实施取决于包含以下某些或全部的因素(i)用于源程序130的计算机编程语言, (ii)用于计算机系统100的操作系统,以及(iii)处理器170的指令集。通过此揭示, 所属领域的技术人员可在任何相关系统中实施转换。首先讨论插入的行,随后更详细地考虑方法300。 InserL21行是有条件的流控制语 句,其一旦执行便确定指令是否具有长等待时间,例如执行指令Producer—OP的实际结 果是否可用。如果指令Producer—OP具有长等待时间,例如执行指令Producer_OP的结果不W用,那么处理就分支到标号predict,其为I咖ert—24行。否则,处理继续进行,通过标 号original (Insert—22行)到达第2行。请注意,对指令Producer—OP的执行是否会具 有长等待时间的判断是在运行时进行的,且因此并不依赖于事先知道执行指令 Producer—OP的结果。Insert_24行是引导处理器170进行状态快照并维持使状态退回至快照状态的能力 的指令。在此实例中,使用一定点检验指令。在Marc Tremblay、 Quinn A. Jacobson、 Shailender Chaudhry、 Mark S. Moir和Maurice P. Herlihy于2004年1月23円申请的标题为"Selectively Unmarking Load-Marked Cache Lines During Transactional Program Execution"的共同让渡关国专利中请案序号第 10/764,412号中说明关于定点检验指令的方法与结构的更详细描述。夷屈专利申请案序 号第10/764,412号的发明内容
具体实施方式
和其中引用的阁式、权利要求 书以及说明书摘要以全文引用的方式并入本文。在此实施例中,定点检验指令的语法为checkpoint, <label>其中指令checkpoint的执行引起处理器对此线程的状态进行快照。标号dabeb是 在定点检验(隐式地或显式地)失败时处理将转到的位置。在处理器对状态进行快照之后,处理器(例如)缓冲用于快照状态屮每一位置的新 数据。处理器还监视是否另一线程执行将阻止状态退回的操作,例如向定点检验状态i轩 的一位置进行写入,或在定点检验状态中的--位置中存储一值。如果检测到此--操作, 那么就清除推测工作,恢复快照状态,且处理分支到标号dabeb。这是定点检验的隐式 失败。定点检验的显式失败由语句Fail的执行引起,语句Fail是Insert—26行中的指令。 语句Fail的执行引起处理器使状态恢复至快照状态,并分支到标号dabeb。Inser^2S行是构成辅助子线程内的辅助指令的指令或代码段。使得一 个新的寄存器 集合对子线程可用,且举例而言,子线程将数据预取进所述新的寄存器集合中。 一旦完 成Insert_25行的执行,就执行指令Fail,其恢复定点检验状态并将处理转到标号 origimilo当于处理器170上执行表2中的代码段时,执行方法300。在数据可川检验操作310 中,进行检验以确定潜在长等待时间的指令所需要或产生的数据是否可用。举例來说, 如果此指令的结果可用,那么无需为获得数据而延迟就可正常地继续执行。因此,当数据可用时,检验操作310将处理转到执行原始代码段324。否则,当长等待时间指令的结果不可用时,检验操作310将处理转到辅助子线程320。在辅助子线程320的一个实施例中,引导硬件对状态进行定点检验操作321引起对 当前状态的快照,所述快照状态由处理器170获取。 一旦完成定点检验状态操作321, 处理就从操作321转到执行辅助操作322。执行辅助操作322执行进行辅助操作(例如预取数据)的指令集合。-旦完成,操 作322便转到退回至定点检验状态操作323。在操作323中,执行一条引起定点检验失败的指令。结果,快照状态被恢复为实际 状态,且处理转到执行原始代码324。执行原始代码操作324使用来自长等待时间指令 的实际值执行原始代码段。在一个实施例中,使用状态指令的分支的实施例(例如,寄存器未就绪状态指令的 分支)来实施检验操作310。在寄存器状态指令分支被调度时,寄存器状态指令分支的 执行测试处理器170的记分板173。如果寄存器状态为就绪,那么执行继续进行。如果 寄存器状态为未就绪,那么执行就分支到寄存器状态指令分支中指定的-标号。寄存器 状态指令分支的一个实施例的格式为Branch-if一not-ready %reg label其中免reg为记分板173中的寄存器,记分板173在此实施例中为硬件指令记分板,且 label为代码段中的标号。通过此指令,表2的伪码变为 表31 Producer一OP A, B -> %rZInsert一31 Branch一if一not—ready %rZ predictInsert一22 original:2 ConsumerJDP %rZ, C -> DInsert一23 predict; Insert_24checkpoint, original Insert一25<Helper Subthread Code >Insert一26 Fail重要的是,利用寄存器状态指令分支的代码了解调度分组规则和操作的预期等待时 间。如果在一载入指令之后立即发布未就绪指令的分支,那么指令通常将载入视为未就 绪,因为(例如)即使对于一级数据高速缓冲存储器命中(cachehit),载入仍具有三个 周期的最小等待时间。在Marc Tremblay、 Shailender Chaudhry和Quinn A. Jacobson (代理人档案号SUN04 0 062)的标题为"METHOD AND STRUCTURE FOR EXPLICIT SOFTWARE CONTROL USING SCOREBOARD STATUS INFORMATION "的共同申请、共同让渡的美闺专利申 请案序号第11/xxx,xxx号中对状态信息指令的新颖分支进行了更详细描述,所述美闺专 利申请案的发明内容具体实施方式
、权利要求书、说明书摘要以及这些部分中引用的 图式和相关

以全文引用的方式并入本文。所属领域的技术人员容易了解,在此实施例中,先前结合方法300提到的个别操作 是通过在计算机系统100的处理器170上执行计算机程序指令来执行的。在一个实施例 中, 一存储媒体上安装有用于方法440的计算机可读程序代码(图4),其中方法440在 一个实例中为方法300,且所述计算机可读程序代码的执行引起处理器170执行以上解 释的个别操作。在 个实施例中,计算机系统100为类似于个人计算机或工作站的硬件配置。然而, 在另一实施例中,计算机系统100为客户端-服务器计算机系统400的部分。对于客户端 -服务器计算机系统400或独立计算机系统100,存储器120通常包含易失性存储器(例 如主存储器410)与非易失性存储器411 (例如硬盘驱动器)。虽然存储器120在图1中说明为统-结构,但此不应解释为要求存储器120中的所 有存储器都处于相同的物理位置。存储器120的全部或部分可处于与处理器170不同的 物理位置。举例来说,方法440可存储在物现上位于与处理器170不同的位置的存储器 (例如,存储器584)中。处理器170应耦合到含有方法440的存储器。这可在一客户端-服务器系统、或者通 过经由调制解调器与模拟线路或数字接口与数字载波线路而与另--计算机的连接来完 成。举例来说,存储器120的全部或部分可位于万维网(WorldWideWeb)入[中,而 处理器170位于(例如)个人计算机中。更确切地说,在一个实施例中,计算机系统100可为便携式计算机、工作站、服务 器计算机,或可执行方法440的任何其他设备。类似地,在另一实施例中,计算机系统100可包含多个不同计算机、无线设备、服务器计算机,或通过互连以执行本文所述方16法440的这些设备的任意所需组合。本文中,计算机程序产品包括一媒体,其经配置以存储或传送用于方法440的计算 机可读代码,或其中巳存储用于方法440的计算机可读代码。计算机程序产品的—些实 例为CD-ROM光碟、ROM卡、软盘、磁带、计算机硬驱动机、网络上的服务器,以及 在网络上传输的表示计算机可读程序代码的信号。本文中,计算机存储器指易失性存储器、非易失性存储器或两者的组合。类似地, 计算机输入单元(例如键盘415和鼠标418)和显示单元416指在上述或等同的设备中 的任何一者中分别提供输入本文所述信息与显示本文所述信息所需的功能性的特性。考虑到本揭示,可用使用者感兴趣的操作系统和计算机编程语言以许多种计算机系 统配置来实施方法440。另外,方法440可作为不同的模块存储在不同设备的存储器中。 举例来说,方法440起初可存储在服务器计算机480中,且随后在必要时,方法440的 模块可被传送到一客户端设备并在所述客户端设备上执行。因此,方法440的一部分将 在服务器处理器482上执行,而方法440的另一部分将在客户端设备的处理器上执行。在又一实施例中,方法440存储在另一计算机系统的存储器中。存储的方法440通 过网络404传送到系统IOO中的存储器120。在一个实施例中,使用计算机源程序130来实施方法440。计算机程序可存储在类 似于(例如)软盘或光盘(CD)的任何通用数据载体上,以及类似于硬盘的任何通用计 算机系统的存储设备上。因此,本发明的一个实施例也涉及用于存储用以执行本发明性 方法的计算机源程序的数据载体。本发明的另一实施例也涉及一种使用计算机系统来执 行方法440的方法。本发明的又一实施例涉及一种具有存储媒体的计算机系统,所述存 储媒体上存储有用于执行方法440的计算机程序。虽然己结合本发明的一个实施例来解释上文中的方法440,但所属领域的技术人员 将容易了解,在不偏离本发明的精神与范围的情况下,可对此实施例做出修改。功能单元、寄存器文件171和记分板173仅为说明性的,且并不希望将本发明限制 于图1中说明的特定布局。处理器170可包含一单个芯片上的多个处理器。所述多个处 理器中的每一个都可具有一独立的寄存器文件和记分板,或可以某种方式共享或耦合所 述寄存器文件和记分板。类似地,寄存器文件171可由一个或一个以上寄存器文件组成。 同样,可用所属领域的技术人员已知的许多种方法来实施记分板173的功能性,例如, 可代替记分板来取样硬件状态位元。因此,使用记分板来获得状态信息仅为说明性的, 且并不希望将本发明限于仅使用记分板。
权利要求
1. 一种基于计算机的方法,其包括在显式软件控制下确定与一长等待时间指令相关联的一项目是否可用;和在所述确定发现与所述长等待时间指令相关联的所述项目不可用后,在显式软件控制下执行一辅助子线程。
2. 根据权利要求1所述的基于计算机的方法,其中所述在显式软件控制下执行一辅助 子线程进一步包括对一状态进行定点检验以获得一快照状态。
3. 根据权利要求2所述的基于计算机的方法,其中所述状态包括--处理器状态。
4. 根据权利要求2所述的基于计算机的方法,其中所述在显式软件控制下执行-辅助子线程进一歩包括通过执行所述辅助子线程中的指令来执行辅助操作。
5. 根据权利要求4所述的基于计算机的方法,其中所述在显式软件控制下执行一辅助子线程进一歩包括将所述状态退回至所述快照状态。
6. 根据权利要求5所述的基于计算机的方法,其进一歩包括使用所述项目的一实际值执行一原始代码段。
7. 根据权利要求1所述的基于计算机的方法,其进一歩包括在所述确定发现与所述长等待时间指令相关联的所述项目可用后,使用所述项目 的一实际值执行一原始代码段。
8. 根据权利要求1所述的基于计算机的方法,其中所述确定包括执行--寄存器状态指令分支。
9. 根据权利要求7所述的基于计算机的方法,其中所述寄存器状态指令分支是--就绪 指令分支。
10. —种结构,其包括用于在显式软件控制下确定与-'长等待时间指令相关联的--项目是否可用的构 件;和用于在所述确定发现与所述长等待时间指令相关联的所述项目不可用后,在显式 软件控制下执行一辅助子线程的构件。
11. 根据权利要求IO所述的结构,其中所述用于在显式软件控制下执行一辅助子线程 的构件进一歩包括用于对-状态进行定点检验以获得一快照状态的构件。
12. 根据权利要求ll所述的结构,其中所述状态包括一处理器状态。
13. 根据权利要求11所述的结构,其中所述用于在显式软件控制下执行一辅助子线程的构件进一步包括用于通过执行所述辅助子线程中的指令来执行辅助操作的构件。
14. 根据权利要求13所述的结构,其中所述用于在显式软件控制下执行一辅助子线程的构件进一步包括用于将所述状态退回至所述快照状态的构件。
15. 根据权利要求14所述的结构,其进一步包括用于使用所述项目的一实际值执行一原始代码段的构件。
16. 根据权利要求10所述的结构,其进一步包括用于在所述确定发现与所述长等待时间指令相关联的所述项目可用后,使用所述 项目的一实际值执行一原始代码段的构件。
17. 根据权利要求16所述的结构,其中所述确定包括用于执行一寄存器状态指令分支的构件。
18. 根据权利要求16所述的结构,其中所述寄存器状态指令分支是一就绪指令分支。
19. 一种计算机系统,其包括一处理器;和一存储器,其耦合到所述处理器且其中存储有指令,其中一旦在所述处理器上执 行所述指令,--种方法包括-在显式软件控制下确定与--长等待时间指令相关联的一项目是否可用和 在所述确定发现与所述长等待时间指令相关联的所述项目不可用后,在显式软 件控制下执行一辅助子线程。
20. —种计算机程序产品,其包括-经配置以存储或传送用于一方法的计算机可读代码 的媒体,所述方法包括在显式软件控制下确定与--长等待时间指令相关联的一项目是否可用;和 在所述确定发现与所述长等待时间指令相关联的所述项目不可用后,在显式软件 控制下执行一辅助子线程。
21. 根据权利要求20所述的计算机程序产品,其中所述方法进一步包括在所述确定发现与所述长等待时间指令相关联的所述项目可用后,使用所述项H 的一实际值执行一原始代码段。
22. --种基于计算机的方法,其包括在显式软件控制下确定与一长等待时间指令相关联的一项目是否可用;和 执行以下操作之一(a) 在所述确定发现与所述长等待时间指令相关联的所述项目不可用后,在 显式软件控制下执行一辅助子线程;和在完成所述执行所述辅助子线程之后,使用所述项目的一实际值执行--原始代 码段;和(b) 在所述确定发现与所述长等待时间指令相关联的所述项IH可用后,使用 所述项目的一实际值执行所述原始代码段。
23. --种结构,其包括\用于在显式软件控制下确定与一长等待时间指令相关联的一项目是否可用的构 件;和用于执行以下操作之一的构件(a) 在所述确定发现与所述长等待时间指令相关联的所述项目不可用后,在 显式软件控制下执行一辅助子线程;和在完成所述执行所述辅助子线程之后,使用所述项目的一实际值执行--原始代码段;和(b) 在所述确定发现与所述长等待时间指令相关联的所述项H可用后,使用 所述项目的--实际值执行所述原始代码段。
24. —种计算机系统,其包括一处理器和一存储器,其耦合到所述处理器且其中存储有指令,其中一旦在所述处理器上执行所述指令, 一种方法包括在显式软件控制下确定与-长等待时间指令相关联的一项目是否可用和 执行以下操作之一(a) 在所述确定发现与所述长等待时间指令相关联的所述项目不可月j后, 在显式软件控制下执行一辅助子线程;和在完成所述执行所述辅助子线程之后,使用所述项目的一实际值执行一原 始代码段;和(b) 在所述确定发现与所述长等待时间指令相关联的所述项目可用后,使 用所述项目的--实际值执行所述原始代码段。
25. —种计算机程序产品,其包括一经配置以存储或传送用于--方法的计算机可读代码 的媒体,所述方法包括在显式软件控制下确定与一长等待时间指令相关联的一项目是否可用和 执行以下操作之一(a)在所述确定发现与所述长等待时间指令相关联的所述项目不可用后,在 显式软件控制下执行一辅助子线程;和在完成所述执行所述辅助子线程之后,使用所述项目的一实际值执行--原始代 码段;和(b)在所述确定发现与所述长等待时间指令相关联的所述项目可用后,使用 所述项目的一实际值执行所述原始代码段。
全文摘要
在一计算机系统(100)的一处理器(170)上执行一带有一辅助子线程的单线程代码序列(140)中的软件指令。所述执行使计算机系统(100)进行例如(i)确定与长等待时间指令相关联的信息是否可用(310);且当所述数据不可用时,(ii)对所述计算机系统的一状态进行快照并维持退回至所述快照状态的一能力(321);(iii)执行所述辅助子线程中的所述辅助指令(322);以及(iv)一旦完成所述辅助子线程中的所述辅助指令的执行就退回至所述快照状态(323)并继续执行(324)。例如所述辅助子线程在等待所述长等待时间指令完成的同时预取数据。
文档编号G06F9/00GK101263452SQ200580009866
公开日2008年9月10日 申请日期2005年3月29日 优先权日2004年3月31日
发明者克里斯托夫·布朗, 奎因·A·雅各布森, 沙伊伦德尔·乔杜里, 马克·特伦布莱 申请人:太阳微系统公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1