当前位置: 首页 > 专利查询>英特尔公司专利>正文

线程活锁单元制造技术

技术编号:2821421 阅读:184 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及用来在线程不能随着指令退休而前进时为该线程指定优先权的方法、设备和系统实施例。对于至少一个实施例,所述线程是多处理器系统中的多个激活线程的其中之一,该多处理器系统包括存储器活锁破坏器逻辑和/或饥饿避免逻辑。此外还描述了其他实施例并且要求保护所述其他实施例。

【技术实现步骤摘要】

本专利技术的公开内容总体涉及信息处理系统,并且尤其涉及检测和 校正多线程处理系统内的多个并发线程之间的活锁(livelock)。
技术介绍
的性能,已经采用了硬件和软件技术。在硬件侧,用于改进信息处理 器系统的性能的微处理器设计方法已经包括提高时钟速度、流水线式 处理、分支预测、超标量执行、无序执行以及高速緩存。许多此类方 法已经导致晶体管数量的增加,并且在某些事例中,晶体管数量的增 加速率已经大于性能改进的速率。除了尝试只通过附加的晶体管来改进性能之外,其他的性能增强 涉及软件技术。已经被采用来改进处理器性能的一种软件方法被称作 "多线程"。在软件多线程中,可以把一个指令流划分成多个指令流, 所述多个指令流可以被并行执行。或者,可以并行执行多个独立的软 件流。在一种被称作时间片多线程或者时间复用("TMUX")多线程 的方法中,单个处理器在预定的时间周期之后在各线程之间进行切换。 在另一种方法中,单个处理器在出现触发事件之后在各线程之间进行 切换,所述触发事件例如是长等待时间高速緩存器错失(cache miss )。 在被称作基于事件切换的多线程("SoEMT")的后一种方法中,在 给定时间最多只有一个线程激活。在硬件中越来越多地支持多线程。例如,在一种方法中,在例如 芯片多处理器("CMP,,)系统的多处理器系统中的各处理器可以并 发地对多个软件线程当中的一个进行操作。在被称作同时多线程 ("SMT")的另一种方法中,使得单个物理处理器对于操作系统和用户程序表现为多个逻辑处理器。对于SMT,、在不需要切换的情况下, 多个软件线程可以单个处理器上同时激活并且执行。也就是说,每一 个逻辑处理器维持一整套所述体系结构状态,但是所述物理处理器的 许多其他资源被共享,比如高速緩存器、执行单元、分支预测器、控 制逻辑以及总线。从而对于SMT,来自多个软件线程的指令在每个逻 辑处理器上并发地执行。对于支持软件线程的并发执行的系统(比如SMT和/或CMP系 统),存在发生以下情况的可能性在两个或多个并发激活线程之间 对共享资源的争用可能会阻止至少其中一个线程继续前进。由于与另 一个激活线程的资源争用而导致一个线程不能继续前进的情况可以被 称作"活锁"。附图说明可以参照附图来理解本专利技术的实施例,其中相同的附图标记指代 相同的元件。这些附图不是限制性的,而是用于说明其中的设备、系 统和方法的所选实施例,所述设备、系统和方法用于检测和校正多线 程处理系统内的多个并发线程之间的活锁。图1是一个处理器的至少一个实施例的方框图,该处理器包括多 个线程活锁单元,其中的每一个用来确定对应于多个逻辑处理器的其 中之一的线程前进。图2的方框图示出能够执行所公开的技术的多线程系统的至少一 个实施例。图3的方框图示出一个处理器的至少一个实施例的前端和执行内 核,该处理器包括对应于多个逻辑处理器当中的每一个的线程活锁单 元0图4的方框图示出一个处理系统的至少一个实施例的存储器分层 结构,该处理系统包括对应于多个逻辑处理器当中的每一个的线程活 锁单元。图5和6的状态图示出用于检测和减轻多个并发线程之间的活锁 的方法的至少一个实施例。图7的方框图示出进入图5和6所示的方法的空闲状态的复位条件。图8的流程图示出用予在多个处理器之间仲裁活锁优先权请求的 方法的至少一个实施例。图9的方框图示出在各线程活锁单元和一个存储器活锁单元之间 共享的活锁破坏器逻辑的至少一个实施例。具体实施方式面的理解,所述细节例如是处理器类型、多线程环境以及微体系结构。 然而,本领域技术人员应当理解,可以在无需这种具体细节的情况下 实践本专利技术。此外,没有详细示出某些公知的结构、电路等等,以避 免模糊本专利技术。这里公开的方法、设备和系统可以检测并且避免多线程处理系统 中的活锁。对于至少一个所公开的实施例,线程活锁单元包括用于跟 踪逻辑处理器的软件线程的指令的退休(retirement)的机制。跟踪退 休只是跟踪线程是否在前进的一种方法。虽然这里讨论的实施例专注 于指令退休以作为前进指标,但是本领域技术人员将意识到,其他实 施例可以利用不同的或者附加的指标来确定线程是否在前进。例如, 可以评估线程进展信号或寄存器,可以跟踪指令指针的前进,或者可 以评估任何其他指示进展的信号或指标。图1示出了用来执行多线程的处理器104和仲裁器180的至少一 个实施例。处理器104和仲裁器180可以驻留在单个芯片封装103内。 处理器104可以包括多个逻辑处理器150a-150n,以便支持并发多线程。 对于至少一个实施例,处理器104利用其多个逻辑处理器150a-150n来 提供SMT处理能力。对于这种实施例,每个逻辑处理器150a-150n具 有其自身的指令定序器(例如参见图3的340)。对于这种实施例,逻 辑处理器150维持其自身的体系结构状态版本,但是可以在所有的并 发SMT软件线程之间共享单个处理器内核104的执行资源。对于SMT,多个软件线程可以并发地运行,其中的每一个软件线 程在多个逻辑处理器150的其中之一上运行。逻辑处理器150a-150n在 这里可以被互换地称作"物理线程"。除非另行明确指明,在没有"物 理"或"软件"的前缀时,这里使用的术语"线程"总体指代激活逻 辑处理器以及该逻辑处理器正在执行的相关软件指令流。图1杀必了可以与每一个逻辑处理器150a-150n相关的线程活锁 单元("TLU" ) 165a-165n。因此,对于至少一个实施例,对于处理 器104的每一个物理线程150a-150n,在每线程的基础上复制TLU 165。 在这里,对应于特定物理线程150的TLU 165可以被简单地称作该物 理线程的"TLU"。图1示出处理器104还可以包括存储器活锁单元("MLU,, )166。 存储器活锁单元166可以执行以下操作1)基于存储器活锁指标检测 来自单个处理器104的各并发线程的各存储器操作之间的活锁,以及2 ) 采取动作以解决这种活锁。下面结合图5到7更详细地讨论TLU165的操作。 一般来说,线 程活锁单元165可以执行以下操作1 )基于特定的线程活锁指标确定 对应于其相关逻辑处理器的软件线程无法前进("被活锁,,),以及2) 采取动作以解决这种活锁。对于至少一个实施例,线程活锁单元165 通过对自从其逻辑处理器已经退休了一个指令之后的周期数进行计数 来确定没有前进,或者已经以其他方式证明了可能的前进。线程活锁 单元165所能检测的其中一个特定状况被称作"指令饥饿,,。指令饥 饿是这样一个状况,其中第一线程可能阻断或者过度延迟另一个线程 的指令获取。结果,我们称该另一个线程"指令饥饿"或者I饥饿。正 在经历指令饥饿的线程正在经历可用于执行的指令的缺乏,即该线程 由于没有用来退休的指令而无法前进。当线程活锁单元165采取动作以尝试解决活锁时,该线程活锁单 元165在这里被称为"激活,,。线程活锁单元165可以变为"激活" 以便执行几个活锁破坏器动作当中的任何一个,进行所述活锁破坏器 动作以便尝试刺激与该TLU 165相关的线程的前进。例如,响应于其 相关逻辑处理器150不能前进,第一逻辑处理器150的TLU 165可以 采取动作以便请求停滞一个或多个本文档来自技高网...

【技术保护点】
一种系统,包括: 存储器系统;以及 第一处理器内核,其具有至少第一逻辑处理器;以及 第二处理器内核; 第一处理器内核还包括第一活锁单元,用来确定第一逻辑处理器是否被活锁; 其中,第一活锁单元还用来响应于确定第一逻辑处理器被活锁而请求对第二处理器内核的停滞。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:D博恩斯K文卡特拉曼
申请(专利权)人:英特尔公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1