用于促进对在计算系统处的软件程序中指令原子性违反行为的动态和高效管理的机构的制作方法

文档序号:9291646阅读:260来源:国知局
用于促进对在计算系统处的软件程序中指令原子性违反行为的动态和高效管理的机构的制作方法
【技术领域】
[0001] 本文描述的实施例一般地涉及计算机编程。更具体地,各个实施例涉及用 于促进对在计算系统处的软件程序中指令原子性违反行为(instruction atomicity violations)的动态和高效管理的机构。
【背景技术】
[0002] 多线程和/或多核处理器在目前是普遍的。它们被用在各种类型的计算装置中, 仅列举一些示例,诸如服务器、桌面计算机、笔记本、平板电脑、智能电话、和移动电话。随着 多核技术的增长,并行编程已经变得普遍存在,不断增加的更多线程和/或核心的趋势在 未来被预期会继续。不幸的是,由于诸多因素 (any number of factors),编写正确和高效 的并行程序对于许多开发者来说仍然是挑战。
[0003] 尤其对于调试的困难性有贡献的一个因素是这种软件执行的不确定性。例如,多 线程程序的线程可以从程序的一个执行到下一个执行不同地交错。在线程交错方面的这种 变化可以导致线程从程序的一个执行到下一个执行对共享存储器的访问排序的变化。例 如,线程可以在一次执行程序时按照一个特定交错次序访问共享存储器,但是线程可以在 程序另一次执行时按照不同的交错次序访问共享存储器。
[0004] 由于这种不确定的执行行为,一些类型的程序错误可能是尤其难以分析、调试和 改正的。例如,并发程序错误可能仅在一些而非所有线程交错和/或共享存储器访问排序 情况下发生。例如,并发程序错误可能在一次程序按照特定线程交错(和/或共享存储器访 问排序)执行时发生,但是并发程序错误可能在另一次程序按照不同的线程交错(和/或不 同的共享存储器访问排序)执行时不发生。这可能倾向于使得软件开发者、软件调试者等难 以知道(更不要说再现)导致并发程序错误的特定线程交错和/或共享存储器访问排序。
[0005] 这倾向于导致更严重的编程低效率,资源浪费(诸如电力、时间、性能、人力资源等 的浪费)以及进一步导致更高的软件开发成本和/或将多线程或并行处理软件推向市场的 潜在延迟。
【附图说明】
[0006] 在附图的图中作为示例而非作为限制图示了各个实施例,在附图中相似的附图标 记指代相似的元件。
[0007] 图1图示了根据一个实施例用于促进对软件程序中指令违反行为的基于记录/重 播(replay)的管理的程序重播机构。
[0008] 图2A图示了根据一个实施例的程序重播机构。
[0009] 图2B图示了一个实施例中的具有专用数据包编码的块数据包。
[0010] 图3图示了根据一个实施例的用于对在计算系统处的软件程序中的指令原子性 违反行为的动态和高效管理的架构。
[0011] 图4A图示了根据一个实施例的用于促进对软件程序中的指令原子性违反行为的 动态和高效管理的方法。
[0012] 图4B图示了根据一个实施例的用于促进对软件程序中的指令原子性违反行为的 动态和高效管理的方法。
[0013] 图5图示了根据一个实施例的适合于实施本公开的实施例的计算机系统。
【具体实施方式】
[0014] 在下面的描述中,许多特定细节被阐述。然而,如本文描述的实施例可以在没有这 些特定细节的情况下被实践。在其它实例中,为了不使对本描述的理解模糊,公知的电路、 结构和技术没有被详细示出。
[0015] 各个实施例提供用于诸如关于单个宏指令或在处理单个宏指令时正确检测、记录 和重播编程或计算指令内的指令原子性违反行为("IAV")。使用基于硬件的存储器竞争记 录(MMR)技术,可以实现对并行程序的"一刻不停(always-on)"的记录,该记录随后可以被 重播以便产生并行程序被初始执行导致的结果。另外,MMR可以使用块(表示来自单个线程 的多个顺序指令的逻辑分组)来高效地改善软件回播中它们在足迹方面减小的空间硬件的 指令排序和放松的排序限制。
[0016] 各个实施例提供了一种机构,该机构通过促进对程序记录的正确和精确的回播来 恰当地、动态地并且高效地检测与指令(诸如单个宏指令)一起发生的任何原子性违反行 为,从而克服了与基于块的MRR系统有关(诸如与重播MMR记录程序有关)的任何有挑战 的困境情况。常规系统对于正确重播所记录的程序的失效留下许多未检测到的并发违反 行为。各个实施例促进对所记录程序的准确重播,诸如对所记录的并行程序的正确和确定 的重播,以便如指令被记录的那样精确重播这些指令(包括来自其它线程的可能交错的指 令),从而检测和再现并行程序中的任何和所有并发违反行为。
[0017] 图1图示了根据一个实施例的用于促进对软件程序中指令违反行为的基于记录/ 重播的管理的程序重播机构110。计算装置100充当主机机器以便采用用于促进对在计算 装置(诸如计算装置100)处软件程序中基于指令的违反行为(例如,IAV)的基于记录和重 播的管理(包括再现)的程序重播机构("重播机构")110。在一个实施例中,违反行为管理 机构110采用或包括记录系统(例如,使用块的基于MRR的记录系统等)以便产生对编程指 令的记录,并且还采用或包括新颖记录播放器以便精确和高效地重播这种记录,以使得任 何违反行为(诸如指令原子性违反行为)可被准确再现和管理。要注意的是,比如"播放"和 "重播"之类的术语和比如"正在播放"、"正在重播"、"播放器"、"重播器"等之类的其它等同 术语遍及本文档可互换地使用。例如,"重播"绝不被限制为仅播放记录的多重或随后的实 例,而是它还可以包括第一时间播放。
[0018] 在一个实施例中,重播机构110促进所记录的程序的正确重播,诸如所记录的并 行程序的准确和确定的重播,以便如指令被精确记录的那样重播指令(包括来自其它线程 的可能交错的指令)从而检测和再现并行程序中的任何和所有并发违反行为。例如,使用重 播机构110,单个宏指令内的原子性违反行为可以使用MRR记录技术被精确重播。对所记录 程序的正确重播可以涉及对所记录程序的准确和确定重播以使得所重播的执行精确实施 或重新实施被初始记录的所有指令交错,同时既在每个指令执行之前又在每个指令执行期 间维持精确存储器状态。另外,在一个实施例中,对所记录程序指令的正确重播可以由重播 机构110执行,即使在新的指令被添加到现有指令集架构("ISA")时。
[0019] 计算装置100可以包括移动计算装置(诸如蜂窝电话,包括智能电话(例如, Apple? 的 iPhone?、Research in Motion? 的 BlackBerry?)、个人数字助理(PDA)等)、平板 计算机(例如Apple?的iPad?、Samsung?的Galaxy 3?等)、膝上型计算机(例如笔记本、上网 本、Ultrabook?等)、电子阅读器(例如 Amazon? 的 Kindle?、Barnes and Nobles? 的 Nook? 等)等。计算装置100还可以包括机顶盒(例如,基于互联网的有线电视机顶盒等),和更大 的计算装置,诸如桌面计算机、服务器计算机等。
[0020] 计算装置100包括操作系统(OS) 106,操作系统106充当计算装置100的任何硬 件或物理资源与用户之间的接口。计算装置100还包括一个或多个处理器102、存储器装 置104、网络装置、驱动器等以及输入输出(1/0)资源108,诸如触摸屏、触摸面板、触摸板、 虚拟或规则的键盘、虚拟或规则的鼠标等。要注意,比如"计算装置"、"节点"、"计算节点"、 "客户端"、"主机"、"服务器"、"存储器服务器"、"机器"、"装置"、"计算装置"、"计算机"、"计 算系统"等的术语遍及本文档可以互换地使用。
[0021 ] 图2A图示了根据一个实施例的程序重播机构110。在一个实施例中,程序重播机 构110包括多个组件,诸如检测逻辑202、处理逻辑204、执行/终止逻辑206、重播逻辑("播 放逻辑"、"播放器"或简单地称为"重播器")208以及通信/兼容性逻辑210。遍及本文档, "逻辑"可以互换地称为"组件"或"模块"并且作为示例可以包括软件、硬件和/或软件和 硬件的任何组合,诸如固件。
[0022] 在一个实施例中,程序重播机构110包括重播逻辑208,用于正确播放或重播记录 以便检测、播放、再现等任何和所有指令原子性违反行为(例如_asm inc ),指令原子性违反 行为可能在单个宏指令内发生并且可以被记录在MRR记录系统(诸如图3的基于硬件的MRR 系统308)上或由MRR记录系统记录。现在考虑单个inc汇编指令,其被扩展成其微操作(例 如存储器操作)组件,如下:
[0023] 该上述示例开始于说明单个宏操作如何可以导致指令原子性违反行为,如果例如 次要线程将在这种单个inc宏操作指令内的某些微操作之间精确执行的话。为了说明,例 如考虑下述情况:
[0024] 上面说明了两个相同inc指令,inc x和inc y,宏指令或宏操作在两个不同线程 (线程1和线程2)上并列运行。在这个示例中,线程1对共享变量X执行inc宏操作的加载 和inc部分。然而,线程2随后对共享存储器变量y执行完整的inc操作,从而在inc temp 处中断线程1上inc X微操作的最后一个(last)。同时,随着时间推移,当在线程2上执行 inc y的整个操作时,线程1随后重新开始并且把stale tmp值(例如st ox3,tmp)提交给 共享存储器变量X,以改写由线程2执行的对X的更新,从而导致丢失更新指令原子性违反 行为,其中inc操作之一被丢失。
[002
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1