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

基于编译器的用户级线程调度优化制造技术

技术编号:2822439 阅读:203 留言:0更新日期:2012-04-11 18:40
描述用于在没有操作系统干预下调度用户级OS独立“微程”的方法、设备和系统实施例。对于至少一个实施例,通过调度器例行程序而不是通过操作系统来调度微程用于执行。调度器例行程序可以从编译器接收由编译器生成的提示。编译器提示可以在没有用户提供的杂注的情况下由编译器生成,并且可以经由API类接口传递给调度器例行程序。该接口可以包括由编译器维护的调度提示数据结构。还描述了其它实施例并对这些实施例要求权利。

【技术实现步骤摘要】
【国外来华专利技术】
一般来说,本^^开涉及信息处理系统,更具体地说,涉及不通过 操作系统调度的用户级线程的调度效率的提高。
技术介绍
一种用来提高处理器性能的方法称为"多线程"。在软件多线程 中,可以将指令流分成多个可以并行执行的指令流。或者,可以并行 执行多个独立的软件流。在一种称为时间片多线程或时分复用("TMUX")多线程的方 法中,单个处理器在固定时期之后在线程间切换。在另一种方法中, 单个处理器在发生诸如长等待时间高速緩存不命中的触发事件之后 在线程间切换。在称为基于事件切换的多线程("SoEMT")的后一 种方法中,在给定时间,最多只有一个线程是活动的。多线程越来越多地在硬件中得到支持。例如,在一种方法中,在 诸如芯片多处理器("CMP")系统的多处理器系统中的多个处理器 可以同时分别对多个软件线程的其中一个进行操作。在另 一种称为同 时多线程("SMT")的方法中,使单个物理处理器对于操作系统和 用户程序来说看上去就像是多个逻辑处理器一样。对于SMT,多个软每个逻辑处理器维护一组完整的体系结构状态,但是共享该物理处理 器的许多其它资源,如高速緩存、执行单元、分支预测器、控制逻辑 和总线。对于SMT,来自多个软件线程的指令各自在不同的逻辑处理 器上同时执行。对于支持软件线程的同时执行的系统,如SMT和/或CMP系统,操作系统应用程序可以控制软件线程的调度和执行。但是,通常操作 系统控制规划得不是很好;操作系统应用程序在不负面影响性能的情 况下调度线程的能力一般局限于相对较少数量的线程。因此,可以将 系统实现成使得通过用户空间中的程序而不是通过操作系统来调度用户级线程。 一个这样的系统在2005年9月26日提交的共同待决的 申请美国序列号11/235865中有所论述。附图说明可以参照以下附图来理解本专利技术的实施例,附图中相同的元件用 相同的数字表示。这些图无意作为限制,而是用于说明至少部分基于 来自编译器的调度提示来在多线程化(multithreaded)系统中具有判断 力地调度用户级线程的计算机可访问介质、系统和方法的选定实施例。图1是呈示多循序器系统的通用并行编程方法的图形表示的框图。图2是示出用户级多线程的至少一个实施例的在线程和用户级线 程之中共享的存储器和状态的框图。图3是示出多循序器系统的各个实施例的框图。图4是示出支持用户级线程并从编译器接收调度提示的多循序器 多线程系统的至少一个实施例的数据流程图。图5是示出用于为用户级线程调度生成编译器提示的方法的至少 一个实施例的流程图。图6是示出能够利用编译器生成的提示来指导调度决策的运行时 用户级线程调度器的至少一个实施例的框图。图7是示出利用局部性提示来指导用户级线程调度决策的方法的 至少 一个实施例的数据流程图。图8是示出基于局部性的迁移的一个实例的概念性数据流程图。图9是示出能够执行公开的技术的系统的至少一个实施例的框图。具体实施例方式以下论述描述用于提高不是通过操作系统创建或调度的执行的多个同时执行的用户级线程(本文有时称为"微程(shred)")的调度 效率的方法、系统和制造产品的选定实施例。这些微程而是通过调度 器例行程序来调度,该调度器例行程序可以基于至少部分由编译器提 供的信息动态地调整微程调度。编译器提供的信息的本质是提示,调 度器可以在不影响程序正确性的情况下忽略该信息。该信息是在没有 用户指示或其它语用信息的情况下由编译器独立生成的。可以调度微程在一个或多个OS隔离的循序器(sequencer)上运行。 本文中有时将OS隔离的循序器称为"OS不可见";操作系统不会调 度工作在此类循序器上。本文描述的机制可以结合单核或多核多线程 系统来使用。在以下描述中,阐述了众多特定细节,如处理器类型、 多线程环境、系统配置以及多循序器系统中的循序器的数量、类型和 拓朴,以便更充分地理解本专利技术。但是,本领域的技术人员将明白, 在没有这些特定细节的情况下,也可以实现本专利技术。此外,没有详细 示出一些熟知的结构、电路等,以免不必要地使本专利技术晦涩难懂。可以在称为并行编程的方法中使用共享的存储器多处理范例。根 椐该方法,应用程序设计员可以将软件程序(有时称为"应用程序" 或"进程")拆分为将同时运行的多个任务,以便表现软件程序的并 行性。相同软件程序("进程")的所有线程共享共用的存储器逻辑 视图。图1是示出多循序器多线程系统上的并行编程方法的图形表示的 框图。图l示出对于操作系统("OS" ) 140可见的进程100、 103、 120。这些进程100、 103、 120可以是不同的软件应用程序,如字处 理程序、图形程序和电子邮件管理程序。通常,每个进程在不同的虚 拟地址空间中工作。操作系统("OS" ) 140 —般负责管理进程(如进程103和120 ) 的用户定义的任务。尽管每个进程具有至少一个任务(例如,参见分 别具有附图标记100和103的进程0和进程2 ),但其它进程也可以 具有多于一个任务(例如,具有附图标记120的进程1 )。不应将如 图1所示的进程的数量以及每个进程的用户定义的任务的数量视为是 限制性的。该图示只是为了说明的目的。图1示出,可以在操作系统140中创建与进程120关联的每个用 户定义的任务的不同线程125、 126,并且操作系统140可以将线程 125、 126映射到线程执行资源。(图1中没有示出线程执行资源,但 是下文将对此进行详细论述。)类似地,可以在操作系统140中创建 与进程103关联的用户定义的任务的线程127;同样也可以在操作系 统140中创建与进程0关联的用户定义的任务的线程124。OS 140—般负责调度这些线程125、 126、 127用于在执行资源上 执行。与相同进程关联的线程通常具有相同的虚拟存储器地址空间。因为OS 140负责创建、映射和调度线程,所以线程125、 126、 127对于OS 140是"可见的"。此外,本专利技术的实施例包含对于OS 140 不可见的附加用户级线程130-139。即,OS140不创建、管理、或以 其它方式确认或控制这些附加用户级线程130-139。这些附加线程既 不由OS 140创建也不由OS 140控制,它们可以经调度而相互同时执 行,本文有时将它们称为"微程"130-139,以便将它们与OS可见的 线程相区分,并进一步将它们与PTHREADS或对于相同的OS可见的 线程可能相互不同时执行的其它用户级线程相区分。微程由用户级程 序(称为"微程化程序")创建和管理,它们可以经调度而在与操作 系统隔离的循序器上运行。OS隔离的循序器通常与OS可见的循序器 共享一组共用的环0状态。这些共享的环-0体系结构状态通常是那些 负责支持OS可见的循序器与OS隔离的循序器之间共用的共享的存 储器地址空间的状态。例如,对于基于IA-32体系结构的实施例,CR0、 CR2、 CR3、 CR4是这些共享的环-0体系结构状态中的一些状态。因此,微程共享为与相同进程关联的线程而创建的相同执行环境(虚拟 地址映射)。本文所用的术语"线程"和"微程"至少包含将与进程的其它线 程和/或微程同时执行的一组指令的概念。因此,线程和"微程"这两 个术语涵盖一组软件原语或应用程序编程接口 (本文档来自技高网...

【技术保护点】
一种方法,包括:从编译器接收用户级的调度提示信息;以及考虑所述调度提示信息来执行用户级线程的动态运行时调度,其中所述用户级线程的所述调度是由用户空间中的调度器执行的。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:SW廖RN拉克维克RA汉金斯H王G吴G吕X田PM彼得森S沙T迪普J沈G钦亚
申请(专利权)人:英特尔公司
类型:发明
国别省市:US[美国]

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

1