提供用户级多线程操作的方法和系统的制作方法

文档序号:6367912阅读:154来源:国知局
专利名称:提供用户级多线程操作的方法和系统的制作方法
技术领域
本发明的实施例涉及计算机系统领域。具体来说,本发明的这些实施例涉及用于提供用户级多线程操作的方法和系统。
背景技术
多线程操作是程序或操作系统一次执行多于一个指令序列的能力。对程序或系统服务的每个用户请求(其中用户也可以是另一个程序)是作为具有各自身份的线程来被持续跟踪的。当程序代表对该线程的初始请求而工作并由其他请求中断时,代表该线程的工 作的状态被持续跟踪,直到该工作完成为止。计算机处理的类型包括单指令流单数据流,这是包括单指令流的常规串行冯·诺伊曼计算机。第二种处理类型是单指令流多数据流处理(SMD)。该处理方案可以包括多个算术逻辑处理器和单个控制处理器。每个算术逻辑处理器在锁定步骤中对数据执行操作,并由控制处理器对其同步。第三种类型是多指令流单数据流(MISD)处理,这包括通过执行不同指令流的处理器的线性阵列处理相同的数据流。第四种处理类型是多指令流多数据流(MIMD)处理,它使用多个处理器,每个处理器执行各自的指令流以处理馈送到每个处理器的数据流。MMD处理器可以具有多个指令处理单元、多个指令定序器以及由此具有多个数据流。今天的多线程微处理器采用的编程模型与传统共享存储器的多处理器相同多个线程被编程为好像它们运行在独立的CPU上一样。线程之间的通信通过主存储器来执行,并且线程创建/摧毁/调度由操作系统执行。多线程操作不是以程序员可以直接访问线程的结构可视方式提供的。

发明内容
根据第一实施例,本发明提供了一种在处理器中用于提供用户级多线程的设备,包括第一资源,用于为将由第一非特权用户指令创建的第一共享资源的线程(shred)保存每个共享资源的线程的应用状态;包括所述第一资源的副本的第二资源,所述第二资源用于为将由第二非特权用户指令创建的第二共享资源的线程保存每个共享资源的线程的应用状态;和至少可由所述第一共享资源的线程通过第三非特权用户指令直接访问以及所述第二共享资源的线程通过第四非特权用户指令直接访问的共享的资源,用于在所述第一共享资源的线程和所述第二共享资源的线程之间提供通信。


结合附图根据下文的详细说明,将更全面地理解和认识本发明的实施例,其中图I图示根据本发明一个实施例利用本发明方法和设备的示范计算机系统的框图;图2图示根据本发明一个实施例的示范芯片级多处理器;图3图示根据本发明一个实施例的示范同时多线程处理器;图4图示根据本发明一个实施例的示范非对称多处理器;图5图示根据本发明一个实施例用于提供用户级多线程操作的示范执行环境;图6图示根据本发明一个实施例的Shred与共享存储器的线程之间的示范关系;以及图7图示根据本发明一个实施例的用户级多线程操作的示范过程的流程图。
具体实施例方式公开一种用于提供用户级多线程操作的方法和系统。根据本发明技术的方法包括接收编程指令以通过指令集体系结构(ISA)来执行一个或多个共享资源的线程(Shred)。通过ISA来配置一个或多个指令指针;并且利用微处理器同时执行这一个或多个Shred,其中该微处理器包括多个指令定序器。在下文描述中,出于解释的目的提出特定的术语。但是,对于本领域技术人员来说,显然这些特定的细节并非是必不可少的。下文详细描述中的一些部分是依据对计算机存储器内的数据位进行操作的算法和符号表示来给出的。这些算法描述和表示是数据处理领域的技术人员向本领域的其他技术人员最有效地表达其工作内容的方式。在本文中以及一般来说,算法被构想为是促成期望结果的独立操作序列。这些操作是需要以物理方式操纵物理量的那些操作。通常但不一定,这些量采用能够被存储、传送、组合、比较和以其他方式操纵的电信号或磁信号的形式。以位、值、元素、符号、字符、术语、数字等提及这些信号时常被证明是方便的,主要是因为常用。但是切记,所有这些和相似的术语均与适合的物理量相关联,并且仅仅是应用于这些量的便于使用的标号。除非明确说明,否则从上面的讨论中来看显然会意识到,整个说明书中,使用诸如“处理”、“计算”、“演算”、“确定”、“显示”等术语的讨论涉及计算机系统或类似电子计算装置的动作和/或处理,这些装置把在计算机系统的寄存器和存储器中的表示成物理(如电子)量的数据处理和/或转换成在计算机系统的存储器、寄存器或其它此类信息存储、传输、或显示装置内的同样表示成物理量的其它数据。所提出的本发明实施例还涉及一种用于执行本文的操作的设备。该设备可以是针对所需目的专门设计的,或它可以包括由计算机中存储的计算机程序选择性激活或重新配置的通用计算机。此类计算机程序可以存储在计算机可读存储介质中,例如但不限于包括软盘、光盘、CD-ROM和磁光盘的任何类型的磁盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPR0M、磁卡或光卡、或适于存储电子指令的任何类型的介质,并且它们均耦合到计算机系统总线。本文提出的算法和显示并不固有地与任何特定的计算机或其他设备相关。多种通用系统可以结合根据本发明原理的程序来使用,或构造更专用的设备来执行所必需的方法可能证明是便利的。根据下文描述,将明了用于各种此类系统的必需的结构。此外,本发明的一个实施例不是参考任何特定的编程语言来描述的。将认识到,可以使用多种编程语言来实施本文所描述的本发明实施例的原理。在本说明书中所用的“用户”描述用户级软件,如应用程序、非特权代码和相似的软件。用户级软件与操作系统或相似的特权软件是不同的。根据本发明的一个实施例,以下描述适用于如上所述的MMD处理器。图I图示根据本发明一个实施例利用本发明方法和设备的示范计算机系统100的框图。计算机系统包括处理器105。芯片组110为系统100提供存储和I/O功能。更具体地来说,芯片组110包括图形和存储器控制器集线器(GMCH) 115。GMCH 115作为与处理器105通信的主控制器,还作为主存储器120的控制器。根据本发明一个实施例,处理器105使多线程操作能够扩展到用户级。GMCH 115还提供至与之耦合的高级图形端口(AGP)控制器125的接口。芯片组110还包括执行大量I/O功能的I/O控制器集线器(ICH) 135。ICH135耦合到系统管理总线(SM总线)140。ICH 135耦合到外设组件互连(PCI)总线155。超级1/0( “SID”)控制器170耦合到ICH 135,以提供至诸如键盘和鼠标175的输入装置的连接性。通用I/O(GPIO)总线195耦合到ICH 135。如图所示,USB端口 200耦合到ICH 135。可以在该总线上将如打印机、扫描仪、游戏杆等的USB设备添加到系统配置。集成驱动器电子部件(IDE)总线205耦合到ICH 135,以将IDE驱动器210连接到计算机系统。在逻辑上来说,ICH 135看上去像是单个物理组件内的多个PCI设备。包括在处理器105中的是指令集体系结构。指令集体系结构(ISA)是诸如处理器105的微处理器的一种抽象模型,它由状态单元(寄存器)和对那些状态单元操作的指令组成。指令集体系结构通过为程序员和微处理器设计人员提供微处理器行为的抽象规范而作为软件与硬件之间的分界。硅芯片上可提供的晶体管数量上的发展已经能够将多线程操作引入到通用微处理器。多线程操作可采用两种不同的方式来实施芯片级多处理器(CMP)和同时多线程处理器(SMT),二者都可以用作处理器105。
图2图示根据本发明一个实施例的示范芯片级多处理器。在如处理器200的芯片级多处理器中,多个CPU核210-213被集成到单个硅芯片200上。CPU核210-213的每一个都能够完成一个独立线程220-223的执行,即使一些资源(如高速缓存)可能为CPU核210-213中的一个以上所共享。图3图示根据本发明一个实施例的示范同时多线程处理器300。处理器105可以是如处理器300的同时多线程处理器。在同时多线程处理器300中,单个CPU核310能够完成多个线程的执行。CPU核310通过以极精细的粒度共享CPU资源使得对于软件来说看上去像是存在两个或两个以上处理器(常常基于逐个时钟来确定哪个线程利用每个资源来处理)。图4图示根据本发明一个实施例的示范非对称多处理器400。处理器105可以是如多处理器400的非对称多处理器。构建芯片级多处理器400、其中CPU核410-427具有不同的微体系结构但是具有相同的ISA,这是可能的。例如,可以将小量的高性能CPU核410-411与大量的低功率CPU核420-427集成。这种类型的设计可以实现高合计吞吐量以及高标量性能。这两种类型的CPU核可以对于软件来说像是常规共享存储器的线程或Shred或二者的某种组合。指令集体系结构(ISA)是诸如处理器105的微处理器的一种抽象模型,它由状态单元(寄存器)和对那些状态单元操作的指令组成。ISA通过为程序员和微处理器设计人员提供微处理器行为的抽象规范而作为软件与硬件之间的分界。本发明的编程模型使应用程序能够直接控制多个非对称CPU核。共享存储器的编程模型现有技术的多线程微处理器采用与现有技术的共享存储器的多处理器系统相同的编程模型。该编程模型如下文所述。微处理器向操作系统提供执行的多个线程。操作系统使用这些线程来并发运行多个应用(“进程”),和/或并发运行来自单个应用的多个线程(“多线程”)。在这两种情况中,对于软件来说线程看上去像是独立的CPU。主存储器为所有线程所共享,线程之间的通信经由主存储器来完成。CPU内的硬件资源也可以被共享,但是微体系结构将这种共享对软件隐藏。虽然传统的共享存储器的多处理器编程模型广泛地被多种操作系统和应用程序 所理解和支持,但是这种模型具有多个缺点。它们是I)线程之间的通信通过主存储器来完成,因此极慢。缓存可以缓解一些等待时间,但是通常必须将高速缓存行从一个CPU核传给另一个,以便利于共享。2)线程之间的同步使用基于存储器的信号量(semaphore)来完成,因此极慢。3)创建、摧毁、挂起和恢复线程需要操作系统介入,因此极慢。4)微处理器供应商无法提供最有效的多线程操作方法,因为CPU多线程操作中的改进被上面描述的存储器等待时间以及操作系统等待时间所抵消。多线程操作体系结构扩展出于有关现有技术系统的上述原因,本发明的方法和系统通过多线程操作体系结构扩展将处理器体系结构扩展为包括结构可视的多线程操作。提供在单个处理单元内的多个同时执行的线程、多个指令指针以及某种应用状态(寄存器)的多个副本。执行的多个线程不同于现有的共享存储器的线程,它们称为Shred或共享资源的线程。本发明的多线程操作体系结构扩展(它的一个示例在下文称为“MAX” )包括现有体系结构功能,另外还支持多个同时的Shred,它们均具有自己的指令指针、通用寄存器、FP寄存器、分支寄存器、预测寄存器和某些应用寄存器。创建非特权指令以创建并摧毁Shred。除共享的存储器外,Shred之间的通信还通过共享的寄存器来完成。对信号量的需求将减少,因为本发明的多线程操作体系结构扩展会保证对共享的寄存器的原子访问。此外,本发明的多线程操作体系结构扩展可以结合32位体系结构、如Intel .公司的32位体系结构,或64位体系结构、如Intel 公司的64位体系结构,或甚至16位体系结构来使用。根据本发明一个实施例,下表中示出常规共享存储器的多处理器线程与Shred之间的比较。
权利要求
1.ー种在处理器中用于提供用户级多线程的设备,包括 第一资源,用于为将由第一非特权用户指令创建的第一共享资源的线程(shred)保存每个共享资源的线程的应用状态; 包括所述第一资源的副本的第二资源,所述第二资源用于为将由第二非特权用户指令创建的第二共享资源的线程保存每个共享资源的线程的应用状态;和 至少可由所述第一共享资源的线程通过第三非特权用户指令直接访问以及所述第二共享资源的线程通过第四非特权用户指令直接访问的共享的资源,用于在所述第一共享资源的线程和所述第二共享资源的线程之间提供通信。
全文摘要
本发明的名称是“提供用户级多线程操作的方法和系统”。公开一种用于提供用户级多线程操作的方法和系统。根据本发明技术的方法包括接收编程指令以通过指令集体系结构(ISA)来执行一个或多个共享资源的线程(Shred)。通过ISA来配置一个或多个指令指针;并利用微处理器同时执行这一个或多个Shred,其中该微处理器包括多个指令定序器。
文档编号G06F9/48GK102779024SQ20121010528
公开日2012年11月14日 申请日期2005年3月31日 优先权日2004年3月31日
发明者E·T·格罗乔夫斯基, H·王, J·D·科林斯, J·P·沈, J·P·赫尔德, P·H·王, P·坎杜, R·莱维亚坦, T·-F·魏 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1