CN100538640C - 动态配置虚拟处理器资源的装置 - Google Patents

动态配置虚拟处理器资源的装置 Download PDF

Info

Publication number
CN100538640C
CN100538640C CNB2004800248016A CN200480024801A CN100538640C CN 100538640 C CN100538640 C CN 100538640C CN B2004800248016 A CNB2004800248016 A CN B2004800248016A CN 200480024801 A CN200480024801 A CN 200480024801A CN 100538640 C CN100538640 C CN 100538640C
Authority
CN
China
Prior art keywords
virtual
resources
virtual treatment
dummy multiprocessor
resource
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB2004800248016A
Other languages
English (en)
Other versions
CN1842771A (zh
Inventor
凯文·基塞尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Imagination Technologies Ltd
MIPS Tech LLC
Original Assignee
MIPS Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by MIPS Technologies Inc filed Critical MIPS Technologies Inc
Publication of CN1842771A publication Critical patent/CN1842771A/zh
Application granted granted Critical
Publication of CN100538640C publication Critical patent/CN100538640C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Advance Control (AREA)

Abstract

本装置包括一个虚拟多处理器上下文,一个或多个虚拟处理元件上下文,以及配置逻辑。该虚拟多处理器上下文,规定这些资源,并控制该虚拟多处理器的配置状态。该一个或多个虚拟处理元件上下文每一个专门地对应到该一个或多个虚拟处理元件中的一个。该一个或多个虚拟处理元件上下文每一个包括第一逻辑,用于规定是否该一个或多个虚拟处理元件中的该一个被允许配置这些资源;以及第二逻辑,用于规定被分配给该一个或多个虚拟处理元件的所述一个的资源的子集。该配置逻辑连接至该虚拟多处理器上下文,和一个或多个虚拟处理元件上下文。该配置逻辑检测是否该一个或多个虚拟处理元件中的该一个被允许配置这些资源,更新该虚拟多处理器上下文以指出该虚拟多处理器进入配置状态,以及通过更新一个被规定的虚拟处理元件上下文来配置这些资源。

Description

动态配置虚拟处理器资源的装置
【相关专利申请的交叉参考】
本专利申请主张下列美国临暂时专利申请的权利,它们被结合在此作为参考。
 
序号 申请日 标题
60/499180(MIPS.0188-00-US) 8/28/03 多线程(thread)应用特殊延伸
60/502358(MIPS.0188-02-US) 9/12/03 对一个处理器架构的多线程应用特殊延伸                          
60/502359(MIPS.0188-03-US) 9/12/03 对一个处理器架构的多线程应用特殊延伸                          
本专利申请是下列共有非临时美国专利申请的部分继续申请,下列专利申请的每一个都有相同的受让人和至少一个共同的发明人,它们被结合在此作为参考。
 
序号 申请日 标题
10/684350(MIPS.0188-01-US) 10/10/03 确保在一个多线程处理器上程序执行服务品质的机制                
10/684348(MIPS.0189-00-US) 10/10/03 在一个处理器中计算线程执行的暂停和解除分配的整合机制          
上述提及的两个共有非临时美国专利申请主张下列美国临时专利申请的权利。
 
序号 申请日 标题
60/499180(MIPS.0188-00-US) 8/28/03 多线程应用特殊延伸
60/502358(MIPS.0188-02-US) 9/12/03 对一个处理器架构的多线程应用特殊延伸                          
60/502359(MIPS.0188-03-US) 9/12/03 对一个处理器架构的多线程应用特殊延伸                          
本专利申请是和下列共有非临时美国专利申请有关,下列专利申请的每一个被结合在此作为参考。
 
序号 申请日 标题
(MIPS.0189-01-US) 8/27/04 在一个处理器中计算线程执行的暂停和解除分配的整合机制          
(MIPS.0192-00-US) 8/27/04 在一个多线程微处理器中指令流的同时开始的装置,方法,和指令    
(MIPS.0194-00-US) 8/27/04 多运算上下文(context)的软件管理的机制                         
【技术领域】
本发明总地来说涉及虚拟多处理器的领域,更具体的说,涉及一个或多个虚拟处理元件之间的一虚拟多处理器内的资源动态配置的一种机制。
【背景技术】
现今,设计者运用许多技术以增加微处理器的性能。大部份的微处理器均使用在一个固定的频率运行的时钟信号进行工作。在每一个时钟周期,微处理器的电路均执行他们相对应的功能。依据轩尼斯和派特森的方法,真实测量微处理器的性能是执行一个程序或是一群程序所需要的时间。从这个观点来说,微处理器的性能是它的时钟频率,执行一个指令所需要的平均时钟周期数目(换个说法,每个时钟周期执行指令的平均数目),和在该个程序或是该群程序中所执行的指令数目的函数。半导体科学家和工程师持续在技术上提供进展,使得微处理器能够运算在更快的时钟频率上。这些技术进展有效地缩减晶体管的大小,导致在一个集成电路中更快速的交换时间。执行的指令数目主要取决于将被该程序所执行的任务,虽然它也受微处理器指令集架构的影响。然而,大幅的性能提升已经由架构上和组织上的技术来达成,该技术提高了每时钟周期执行的指令数目,特别是通过允许指令平行执行的技术(也就是,平行处理理论)。
已经提高微处理器每个时钟周期的指令数目,和他们的时钟频率的平行处理技术是流水线的。以相当类似于装配线的阶段的方式,在微处理器流水线阶段内,流水线重叠多指令的执行。在一个理想情形,一个指令在每一个时钟周期向流水线下方移到一个新阶段,该新阶段对这些指令执行不同的功能。因此,虽然每一个各别指令花数个时钟周期来完成,因为各别指令的时钟周期有重叠,每个指令的平均时钟会被减少。在程序中指令允许的情形下实现流水线的性能提升,也就是一个指令的执行并不需要依赖它的前一个指令,因此可以和它先前的指令平行地执行,通常被称为指令级平行处理。另一种被当今微处理器所采用的指令级平行处理的方法,是在相同的时钟周期发出许多执行的指令给不同的功能单元,各单元执行他们被规定的功能。以这种方法完成指令级平行处理的微处理器,通常被视为“超级标量”微处理器。
以上所讨论的平行处理机制是和各别的指令级平行处理有关。然而,经由指令级平行处理的开发所达成的性能的改善是有限的。由有限的指令级平行处理所加诸的各种限制和其它性能限制的问题,最近重新引发开发利用在指令区块级,或指令序列级层,或指令流级层,或指令线程(thread)级层,平行处理的兴趣。该级的平行处理通常是指线程层平行处理。一个线程就是程序指令的一个序列或是流。依据一些调度原则,一个多线程微处理器同时执行许多的线程,该调度原则支配各式线程的指令的提取和发配,例如,交错,阻挡,或同时的多线程化。以一个同时进行的方式,一个多线程微处理器典型地允许许多线程来共享微处理器的功能单元(例如,指令提取和解码单元,高速缓存,分支预测单元,和加载与储存,整数,浮点,SIMD等执行单元)。然而,多线程微处理器包含多组的硬件/固件资源,或是线程上下文(thread context),用于储存每一个线程独特的状态,以实现线程间快速切换的能力,以提取和配发指令。例如每一个线程上下文包含它自己的程序计数器用于指令提取和线程识别信息,而且典型地也包含它自己的通用寄存器组。
一个由多线程微处理器所引发的性能限制问题的例子是由于贮存错失而必须对微处理器外的存储器进行存取,通常会有一个相对长的等待时间的事实。以现今基于微处理器架构的计算机系统的存储器的存取时间通常是在大于高速缓存命中存取时间的1至2个数量级之间。结果当流水线停顿等待来自存储器的数据,某些或是全部的单一线程微处理器的流水线阶段可能会闲置许多时钟周期而没有执行任何有用的工作。多线程微处理器,在存储器提取等待时间期间,通过发出从其它线程来的指令,可以缓和这个情形,因此可以使流水线阶段向前迈进执行有用的工作,有些类似一个操作系统为响应页面错误所执行的任务工作切换但以更精确的粒度水平。另一个性能限制问题的例子是流水线停顿和他们伴随的时钟闲置,由于错误的分支预测和伴随的流水线冲洗(pipelineflush),或是由于数据相依性,或是由于一个长等待时间指令,例如一个除法指令。再者,多线程微处理器从其它线程发配指令至空闲的流水线阶段的能力,将可以大幅地降低执行组成该些线程的程序或是程序群所需要的时间。另一个问题,特别是在嵌入式系统,是与中断服务相关联的浪费的开销。典型地,当一个输入/输出装置传送一个中断信号给微处理器,该微处理器将控制权切换至一个中断服务程序,该程序要求储存目前的程序状态,服务该中断,当中断被服务完成后回复目前的程序状态。一个多线程微处理器提供事件服务码成为他自己的线程的能力,该线程有他自己线程的上下文。因此,在响应输入/输出装置送出一个事件的信号,该微处理器能够很快的,或许在一个时钟周期内,切换至事件服务线程,因此避免发生传统的中断服务程序管开销。
正如指令级平行处理的程度指示一个微处理器可以利用流水线和超纯量指令发出的好处的范围,线程级平行处理的程度指示一个微处理器可以利用多线程执行好处的范围。线程的一个重要特色是它和其它在多线程微处理器上被执行的线程是完全独立无关的。一个线程与其它的线程的无关性达到它的指令不依赖在其它线程上的指令的程度。线程独立的特性使得微处理器可以同时执行不同线程的指令。也就是,微处理器可以发出一个线程的指令至执行单元,不必关心被其它线程所发出的指令。在线程存取共同数据的条件下,线程本身必须被程序化以相互同步数据存取,以确保适当的运算,如此,微处理器指令发出阶段不需要与相依性有关。
由前述观察可得,一个具有多线程上下文的处理器,同时执行许多线程,可以减少执行包括这些线程的程序或是程序群所需要的时间。然而,引进多线程上下文同时也引进一组新的问题,特别是对于系统软件,以管理多指令流和他们相关的线程上下文。本发明人已经指出在一个微处理器中提高与指令执行相关的平行处理所要求的另一级。在此和相关的应用,本发明人解决了在同一个微处理器中提供虚拟处理元件。应用至这一级,一个多线程虚拟处理元件,除了实施许多程序计数器和线程上下文以确保有效的切换程序线程之外,实现所需要的全部资源以提供一给定指令集和特许的资源架构的一单个例示,该架构是足以执行一个每处理器(per-processor)操作系统图像。实际上,一个实现N个虚拟处理元件的微处理器(也就是,一个虚拟微处理器有N个虚拟处理元件)呈现给操作系统软件的是一个N路(N-way)的对称多处理器。依据本发明的虚拟多处理器和一个传统对称多处理器之间的实际差别是,除了共享存储器和某种程度的连接性之外,在一个虚拟多处理器中的虚拟处理元件,也共享虚拟微处理器的单片资源或属性,例如指令提取和发出逻辑,地址转换逻辑(也就是,转换后备缓冲器逻辑),功能单元,例如整数单元,符点单元,多媒体单元,媒体加速单元,SIMD单元,和协处理器。此外,虚拟处理元件必须共享虚拟多处理器的性能属性或是利用方面(也就是带宽),这些是根据配置给每一个虚拟处理元件的线程数目所决定,当执行被需要的情形下,与一个虚拟处理元件相关联的线程可以比与其它虚拟处理元件相关联的线程有更高的优先权的程度,和给该虚拟处理元件的某些全处理器的资源(例如,加载和储存缓冲器)的配置。例如,考量一个其中两种不同处理同时发生的嵌入式系统:影音数据的实时压缩和使用者图形界面的运作。使用20世纪晚期的技术,这些任务可以通过使用两个不同的处理器来完成:一个实时的数字信号处理器用来处理多媒体数据和一个交互式处理器核心来执行一个多任务操作系统。本发明允许这两个功能在同一个的虚拟多处理器上执行。虚拟多处理器的两个虚拟处理元件将会被采用:一个专用于执行多媒体处理任务,而另一个专用于执行使用者界面工作。采用两个虚拟处理元件解决两种不同软件示例性的共同存在或是共同举例说明的问题,但并不保证像一个专用于处理器相同的实时性能的要求,因为该多媒体虚拟处理元件和使用者界面虚拟处理元件必须共享在虚拟多处理器内的某些资源和在一个虚拟多处理器上执行的应用程序的性能,如上述所提及,是基于如何将那些资源或属性发出给每一个虚拟处理元件。
在一个多处理应用呈现一个广泛和多样的资源需求的市场,去制造具有针对一个特殊多处理应用量身订做的资源的虚拟多处理器将会是耗费很多成本。因此,本发明人已经观察到,提供一个能够被用于横跨广泛多处理应用的虚拟多处理器,是很期望的。他进一步表示,该虚拟多处理器包含通过软件对各种虚拟处理元件进行资源配置的机制,是很期望的。这类机制应该允许该虚拟多处理器被配置一个或多个虚拟处理元件,其中每一个虚拟处理元件是被配置以执行一个或多个线程。此外,在运行时刻,可由被信赖的虚拟处理元件动态配置这些资源和提供一个撤回配置特权的机制是期望的。
【发明内容】
本发明是针对解决以上所提及的问题以及提出先前技术的其它问题,缺点,和限制。本发明提出优良的机制用于动态地配置一个虚拟多处理器的资源。在一个实施例中,一个装置被提供用于配置虚拟多处理器中一个或多个虚拟处理元件的资源。该装置包括一个虚拟多处理器装置,一个或多个虚拟处理元件装置,以及配置逻辑。该虚拟多处理器装置,规定这些资源,以及控制虚拟多处理器的配置状态。该一个或多个虚拟处理元件装置每一个唯一地对应至一个或多个虚拟处理元件。该一个或多个虚拟处理元件装置每一个具有第一逻辑,用于规定是否该一个或多个虚拟处理元件的一个被允许配置这些资源;以及第二逻辑,用于规定被分派至该一个或多个虚拟处理元件的一个的资源的子集。该配置逻辑连接至虚拟多处理器装置,和一个或多个虚拟处理元件装置。该配置逻辑检测是否一个或多个虚拟处理元件的一个被允许配置这些资源,更新虚拟多处理器装置以指出虚拟多处理器进入配置状态,以及通过更新一个被规定的虚拟处理元件装置来配置这些资源。
本发明的一个方面提供了一种资源配置装置,用于指派资源给虚拟多处理器中的一个或多个虚拟处理元件。该资源配置机制具有多个虚拟多处理器寄存器,一个或多个用于每一个虚拟处理元件的虚拟处理元件寄存器,和配置逻辑。虚拟多处理器寄存器规定这些资源,并控制虚拟多处理器的配置状态。每一个虚拟处理元件寄存器对应至这些虚拟处理元件中的一个别虚拟处理元件,用于规定是否一个对应的虚拟处理元件被允许指派这些资源,以及规定被分派至对应的虚拟处理元件的这些资源的一子集。配置逻辑连接至虚拟多处理器寄存器和虚拟处理元件寄存器。配置逻辑检测是否对应的虚拟处理元件被允许指派这些资源,更新虚拟多处理器寄存器以指出虚拟多处理器进入配置状态,以及通过更新被选取的虚拟处理元件寄存器的一些来指派这些资源。
本发明的再另一方面提供了一种用于为虚拟多处理器中的一个或多个虚拟处理元件配置资源的方法。该方法包括:经由一个虚拟多处理器装置,首先规定这些资源,并控制虚拟多处理器的配置状态;经由虚拟处理元件装置,每一个虚拟处理元件装置单独地对应至虚拟处理元件中的一个,第二规定是否一个虚拟处理元件被允许配置这些资源,以及第三规定被分派给一个虚拟处理元件的资源的子集;以及连接至该虚拟多处理器装置和该虚拟处理元件装置的配置逻辑,检测是否虚拟处理元件的一个被允许来配置这些资源,以及首先更新虚拟多处理器装置以指示该虚拟多处理器进入配置状态,以及通过第二更新一个规定的虚拟处理元件装置来配置这些资源。
本发明的再另一个方面提供了一种虚拟多处理系统。该虚拟多处理系统包括一个存储器和一个多虚拟处理器。该存储器储存和许多程序线程有关的程序指令。该虚拟多处理器被连接至该存储器。该虚拟多处理器在该虚拟多处理器中配置的一或多个虚拟处理元件上执行这些程序指令。该虚拟多处理器有一个虚拟多处理器装置,其规定该一个或多个虚拟处理元件的配置的资源,并控制该虚拟多处理器的配置状态。一个或多个虚拟处理元件的每一个包括一个虚拟处理元件装置和一个配置逻辑。该虚拟处理元件装置规定是否该一个或多个虚拟处理元件的每一个被允许配置这些资源,以及规定被分派给该一个或多个虚拟处理元件种被规定的一个的资源的子集。该配置逻辑被连接至该虚拟多处理器装置和该虚拟处理元件装置。该配置逻辑检测是否该一个或多个虚拟处理元件的每一个被允许来配置这些资源,更新该虚拟多处理器装置以指示该虚拟多处理器进入配置状态,以及通过更新与该一或多个虚拟处理元件中被规定的一个相对应的规定虚拟处理元件装置来配置这些资源。
【附图说明】
本发明的这些和其它目的,特征和优点,通过下列的描述和附图,将会更容易被了解。
图1是一个描述依据本发明的一个多处理环境的方框图;
图2是一个描述依据本发明的一个虚拟多处器流水线的方框图;
图3是一个显示依据本发明的一个动态可配置虚拟多处器的方框图;
图4是一个呈现与本发明的一个示例性实施例一致的虚拟多处理上下文寄存器的表格;
图5是一系列标描述图4的每一个虚拟多处理上下文寄存器的示例性实施例的方框图;
图6是一个描述依据本发明的用于虚拟处理器资源的动态配置的方法的流程图;以及
图7是一个描述依据本发明的用于虚拟处理器资源的动态配置的可撤销的方法的流程图。
【具体实施方式】
以下的描述是呈现给本领域的熟练技术人员以制造和使用本发明,如在一个特别的应用和它的要求的上下文之内。针对本最佳实施例的各式的修改,对本领域的熟练技术人员将是显而易见的,且定义在此的一般原则将可应用至其它实施例。因此,本发明不意欲被限制在此所描述和所示的特殊实施例,而是遵从和在此所揭露的原理和新特征一致的最广的范围。考虑到上述有关平行处理和相关的在当前处理器中被采用的多线程和多处理技术的背景讨论,本发明的讨论将会参照图1至图7来呈现。
参照图1显示,示出依据本发明的一个多处理环境100的一个方瑰圖方框图。该多处理环境100,包括连接至一个系统界面控制器105的一个虚拟多处理器101。该系统界面控制器105连接至一个系统存储器106和一个或多个输入/输出装置107。每一个输入/输出装置107提供一个中断要求线108至虚拟多处理器101。该虚拟多处理器101包括一个或多个虚拟处理元件102。每一个虚拟处理元件102有一个对应的虚拟处理元件上下文104和一个或多个对应的线程上下文103。该多处理环境100,可能但不限于,一个通用的可程序化的计算机系统,服务器计算机,工作站计算机,个人计算机,笔记型计算机,个人数字助理,或嵌入式系统,例如,但不限于,一个网络路由器或交换器,打印机,海量储存控制器,相机,扫瞄仪,汽车控制器等等。
系统存储器106可以被具体化成存储器,例如动态随机存取存储器RAM和只读存储器ROM,用于储存在虚拟多处理器101执行的程序指令,并用于储存依据程序指令待被虚拟多处理器101处理的数据。程序指令可包括一个或多个由虚拟多处理器101同时执行的程序线程。一个程序线程或是线程包括一个程序指令的序列或流和相关联的在虚拟多处理器101中的对应虚拟处理元件102内的状态变化序列,该状态变化序列和指令序列的执行有关。每一个线程上下文103包括支持相对应程序线程执行所需的硬件状态。在一个实施例中,每一个线程上下文包括一组通用寄存器,一个程序计数器,和其它寄存器保存执行线程的状态,例如,乘法器状态和协处理器状态。每一个虚拟处理元件102提供资源以支持一个完整指令集架构和特许的资源架构的示例,该些架构足以执行一个单全处理器操作系统图像。在一个实施例中,每一个虚拟处理元件102提供资源以支持一个完整MIPS32/MIPS64指令集架构和特许的资源架构的示例。每一个虚拟处理元件上下文104组成一个支持在一个相对应虚拟处理元件102中线程执行所需的硬件状态。在一个实施例中,每一个虚拟处理元件上下文104规定分配给一个相对应虚拟处理元件102的资源,例如,地址转换逻辑资源(例如,转换后备缓冲器输入),功能单元(例如,整数单元,浮点单元,多媒体单元,媒体加速单元,SIMD单元,协处理器)和性能属性。在一个特别实施例,该性能属性包括允许停止和配置分配给其它虚拟处理元件102的资源,线程列举的数目,相对应虚拟处理元件102的激活/抑制和虚拟多处理器101的与带宽相关的资源(例如,指令执行带宽或优先权,加载储存带宽等等),这些资源被分配给相对应虚拟处理元件102。本发明提供多种带宽配置技术包括调度提示,执行优先权指派,加载/储存缓冲器分配等等。
系统界面控制器105和虚拟多处理器101经由一个处理器总线相互连接。在一个实施例中,系统界面控制器105包括一个存储器控制器以控制系统存储器106。在一个实施例中,系统界面控制器105包括一个局部总线界面控制器以提供一个局部总线,例如,一个PCI总线,连接至输入/输出装置107。
输入/输出装置107可包括,但不限于,使用者输入装置,例如,键盘,鼠标,扫瞄仪等等;显示装置,例如,监视器,打印机等等。储存装置,例如,磁盘驱动器,磁带机,光驱等等;系统外围装置,例如,直接存储器存取控制器DMAC,时钟,定时器,输入/输出端口等等;网络装置,例如,用于以太网络,光纤网络,无限频带(infiniband),或其它高速网络界面的媒体存取控制器MAC;数据转换装置,例如,模拟—数字转换器,数字—模拟转换器等等。输入/输出装置107产生中断信号108给虚拟多处理器101以要求服务。有利地,虚拟多处理器101能够同时执行许多用以处理在中断要求线108上表示的事件的程序线程,不需要传统的与保存微处理器102状态,转移控制权给中断服务例程,和在完成中断服务例程之后回复状态相关联的开销。
在一个实施例中,虚拟多处理器101提供两种不同,但不互相排斥,的多线程能力。首先,虚拟多处理器包括一个或多个虚拟处理元件(VPEs)102以支持一个对应的一个或多个逻辑处理器上下文,经由在虚拟多处理器101中的资源共享,每个逻辑处理器上下文呈现给操作系统的是一个独立的处理元件。对一个操作系统,一个有N个VPEs102的虚拟多处理器101看起来像一个N路(N-way)对称多处理器(SMP),其允许存在SMP可操作系统来管理一个或多个VPEs 102。第二,每一个VPE 102可以包括一个或多个线程上下文103,以同时执行对应的一个或多个程序线程。因此,依据本发明,虚拟多处理器101提供一个多线程程序化模型,其中在典型的情况下,程序线程能够被产生和销毁而不需要操作系统的干预,且系统服务线程能够用最小的中断等待时间被调度以响应外部的条件(例如,输入/输出服务事件信号)。
在一个实施例中,每一个线程上下文包括一个或多个储存元件,例如,寄存器或锁存器,其中具有描述相对应线程的执行状态的字段(例如,位)。也就是,一个给定线程上下文103描述各自线程的状态,其对该线程是唯一的,而不是和在虚拟处理元件102上同时执行的其他线程共享的状态。一个线程,这里也被称为程序线程、执行的线程、或指令流,是一个指令序列。每一个虚拟处理元件102有能力同时处理许多线程。通过在线程上下文103内储存每一个线程的状态,在虚拟多处理器101中的每一个虚拟处理元件102被配置成能在线程间快速切换,以提取和发出指令。有利地,本发明的虚拟多处理器101是被配置成执行指令以在不同线程上下文103间搬移线程上下文信息,正如共有待审的美国专利申请(案卷编号:MIPS.0194-00-US),其标题为“多计算上下文软件管理的机制”所详细描述的。
在一个实施例中,每一个VPE上下文104包括一群的储存元件,例如,寄存器或锁存器,其中具有描述相对应VPE 102的执行状态的字段(例如,位),提供相对应VPE 102的资源的配置,例如,但不限于,地址转换资源,协处理资源(例如,浮点处理器,媒体处理器等等),线程容量和列举,特定VPE 102激活/抑制执行的允许,和配置特定VPE 102资源的允许。在一个实施例中,一个VPE 102可以通过更新它的VPE上下文104来配置它自己的资源。另外,一个VPE 102可以通过更新对应不同VPE 102的VPE上下文104来配置不同VPE 102的资源。因此,一个有N个VPE 102的虚拟多处理器101呈现给操作系统或是其它对称多处理应用是一个N路对称多处理器。在一个实施例中,VPE 102共享在虚拟多处理器101中特定的资源,例如,指令高速缓存,指令提取器,指令解码器,指令发出器,指令调度器,执行单元和协处理单元,和对于操作单元是显然的数据贮存。资源共享的范围和程度是由VPE上下文104所规定,且可以通过更新VPE上下文104,在运行时间或其它时间被动态地配置。对一个给定的VPE 102来配置它自己的资源,或规定给其它VPE102的资源,他自己的VPE上下文104必须规定该被给定的VPE 102是被允许配置虚拟多处理器101的资源,在下面将会有更详细的描述。因此,假如给定VPE 102的VPE上下文104指出该给定的VPE 102是被允许来配置资源,则该给定的VPE 102可以更新所有的VPE上下文104以提供动态资源配置,包括资源配置许可的修改,其中包括撤销配置许可的能力。在一个实施例中,每一个VPE 102基本上符合一个MIPS32或MIPS64指令集架构(ISA)和一个MIPS特许资源架构(PRA),且每一个VPE上下文104包括该MIPS PRA协处理器0和描述其一示例所需的系统状态。在一个实施例中,VPE上下文106包括图5D-5G所描述的,VPECONTROL寄存器504,VPECONF0寄存器505,VPECONF1寄存器506,和VPESCHEDULE寄存器592。在一方面,一个VPE 102可以被当成是一个异常域(exceptiondomain)。也就是当VPE 102的一个线程上下文103产生一个异常,在VPE 102上的多线程被暂停(也就是,只有与线程上下文104服务该异常相关联的指令流的指令被提取和发出),且每一个VPE上下文104包括服务该异常所需的状态。一但该异常被服务之后,异常处理器将会选择性地重新启动在VPE 102上的多重线程。
现在请参阅图2,其是说明依据本发明的一个虚拟多处理器内的虚拟多处理器流水线200的方框图。该流水线200包括许多的流水线阶段且另外包括一个或多个线程内容103。图2的示例性实施例显示四个线程上下文103。在一个实施例,每一个线程上下文103包括一个程序计数器(PC)222,用于储存提取在相关的指令流中的下一个指令的地址,一个通用寄存器(GPR)组224,用于储存依据程序计数器222的值,从线程所发出的指令流的中间执行结果,和其它每线程(per-thread)上下文226。在一个实施例中,流水线222包括一个乘法器单元(未显示于图中),且其它线程上下文226包括用于储存乘法器单元的结果的寄存器,这些结果与指令流中的乘法指令特别有关。在一个实施例中,其它线程上下文226包括用于唯一辨识每一个线程上下文103的信息。在一个实施例中,该线程辨识信息包括用于规定有关的线程的执行特权级的信息,例如,是否该线程是一个核心,监督者,或使用者层线程。在一个实施例中,该线程辨识信息包括用于辨识组成该线程的一个任务或过程的信息。特别的是,该任务识别信息可以被用作为一个地址空间标识符(ASID)以将实际地址转换成虚拟地址。
流水线200包括一个调度器216用于被虚拟多处理器100所同时执行的许多线程的调度。调度器216连接到VMP上下文210,图1的VPE上下文104,和其它每线程(per-thread)上下文226。特别的是,调度器216是负责调度从不同线程上下文104的程序计数器222中提取的指令,和调度将提取指令发出给虚拟多处理器100的执行单元212,如下所描述。依据虚拟多处理器100的调度原则,调度器216对线程的执行进行调度。调度原则可以包括,但不限于,任何下列的调度原则。在一个实施例中,调度器216采用一个循环,或时分多路复用,或交叉的调度原则,配置一个预先决定数目的时钟周期,或指令发出时段,以一个环绕的顺序给每一个就序的线程。循环原则在一个其中公平性是重要的和基本服务品质对于某些线程是需要的应用上是有用的,例如,实时应用程序线程。在一个实施例中,调度器216采用一个阻挡调度原则,其中,调度器216持续对正在执行线程的提取和发出进行调度,直到一个阻挡线程进一步进展的事件发生,例如,一个贮存失误,一个分支预测错误,一个数据相依性,或一个长等待时间的指令。在一个实施例中,流水线200包括一个采用许多执行单元212的超级标量流水线,且调度器216调度每时钟周期许多指令的发出,特别的是,每时钟周期来自多个线程的指令发出,一般被认为是同时多线程。在其它实施例,调度器216采用一个利用经由VPE上下文104提供的调度信息的调度原则,其中,调度信息指出配置给每一个VPE 102的带宽和/或带宽相关的资源。
流水线200包括一个指令高速缓存202,用于贮存从一个系统存储器提取出的程序指令。在一个实施例,流水线200提供虚拟存储器的能力,且提取单元204包括一个转换后备缓冲器(未示出)用于贮存实际到虚拟存储器页面转换。在这个实施例,在转换后备缓冲器内的资源(例如,入口)被分配给共享流水线200的每一个VPE 102,正如VPE上下文104所规定的。在一个实施例中,在流水线200内所执行的每一个程序或任务,被指派一个唯一的任务ID,或地址空间ID(ASID),其被用来执行存储器存取,及具体地执行存储器地址转换,且一个线程上下文103,也包括储存与该线程相关联的ASID。
流水线200还包括一个提取单元204,连接到指令高速缓存202,用于从指令高速缓存202和系统存储器提取程序指令。提取单元204从多路复用器244所提供的指令提取地址提取地址。多路复用器244从对应的多个程序计数器222,接收多个指令提取地址。每一个程序计数器222储存用于不同程序线程的当前指令提取地址。图2的实施例说明了与四个不同线程相关联的四个不同程序计数器222。依据由调度器216提供的一个选择输入,多路复用器244从四个程序计数器222中选择一个。在一个实施例中,在微处理器100上执行的不同线程共享该提取单元204。
流水线200还包括一个解码单元206,连接至提取单元204,用于解码由提取单元204所提取的程序指令。解码单元206解码操作码,操作数,和指令的其它字段。在一个实施例中中,在微处理器100上执行的不同线程共享一个解码单元206。
流水线200也包括执行单元212,用于执行指令。执行单元212可以包括,但不限于,一个或多个整数单元,用于执行整数算术,布尔运算,位移运算,旋转运算等等;用于执行浮点运算的浮点单元;用于执行存储器存取及特别地对连接到执行单元212的数据高速缓存242的存取的加载/储存单元;多媒体加速单元,用于执行多媒体运算;和一个分支解析单元,用于解析分支指令的结果和目标地址。在一个实施例中,数据高速缓存242包括一个转换后备缓冲器用于贮存实际到虚拟存储器页面转换。除了从数据高速缓存242所收到的操作数,执行单元212也从通用寄存器组224的寄存器接收操作数。具体地,一个执行单元212接收从线程上下文104的寄存器组224来的操作数,该线程上下文104是分配给该指令所属的线程。一个多路复用器248选择来自的适当寄存器组224的操作数提供给执行单元212。此外,多路复用器248接收从另一个线程上下文226和程序计数器222来的数据,以根据由执行单元212所执行的指令的线程上下文104来选择性地提供给执行单元212。在一个实施例中,不同的执行单元212可以同时执行从多个并存线程来的指令。
流水线200也包括一个指令发出单元208,该指令发出单元208连接到调度器216,并连接到解码单元206和执行单元212之间,用于依调度器216的指示发出指令给执行单元212,并响应有关被解码单元206所解码的指令的信息。特别的是,假如当指令和先前发出给执行单元212的其它指令有数据相依性,指令发出单元208确保这些指令不会发出给执行单元212。在一个实施例中,一个指令队列(未示于图中)被置于解码单元206和指令发出单元208之间,用于缓冲等待发出给执行单元212的指令,用以减少执行单元212空乏的可能性。在一个实施例中,在流水线200中的许多线程执行共享该指令发出单元208。
流水线200也包括一个写回单元214,其连接到执行单元212,用于将指令的结果写回到通用寄存器组224,程序计数器222,和其它线程上下文226。一个解多路复用器246接收从写回单元214来的指令结果,并将指令结果储存到适当的寄存器组224,程序计数器222,和其它跟该指令的线程有关的线程上下文226。该指令结果也被提供用于储存到VPE上下文104和一个虚拟多处理器(VMP)上下文210。
在一个实施例中,VMP上下文210包括一组储存元件,例如,寄存器或锁存器,在该储存元件有一个或多个字段(例如,字节)描述虚拟多处理器101的执行状态。特别的是,VMP上下文210储存关于在VPE102中被共享的虚拟多处理器101,全部资源的状态,如上所描述。具体地,VMP上下文规定在配置期间可以分配给VPEs102的资源,也控制虚拟多处理器101是否是在一个配置这些资源的配置状态。在一个实施例中,该VMP上下文210包括如下所述的图5A—5C的一个MVPCONTROL寄存器501,MVPCON0寄存器502,和MVPCON1寄存器503。
图2所示流水线200的具体阶段202,204,206,208,212,214被提供来清楚地说明本发明而不会模糊实质性方面。本领域的熟练技术人员可以领会流水线200的阶段化可通过增加或减少阶段的数目,或通过分配不同的功能给阶段而被修改以增进性能,而不会偏离本发明的精神和范围。
参照图3,显示依据本发明的一个动态可配置虚拟多处理器300的方框图。该多处理器300包括一个或多个VPEs 302-304,列举为VPE1302,VPE 2 303,直到VPE N 304。每一个VPE 302-304有一个对应的VPE上下文305-307。该些VPEs 302-304和VMP上下文210连接到执行逻辑212,如上参照图2所述。该执行逻辑212包括VPE配置逻辑310。该VPE配置逻辑310连接到一个例外信号311。该方框图中还示出有一个或多个资源322,324,326,328,它们分别被列举为RESOURCE1 322,RESOURCE2 324,RESOURCE3 326,直到RESOURCEM 328。
在操作上,资源322-328的配置是通过执行一个由被允许配置这些资源322-328的VPEs 302-304,所发出的配置指令序列而被实现的。在一个实施例中,配置资源322-328的允许权是由对应VPEs 302-304的VPE上下文305-307所规定。当一个配置指令序列是由流水线200中的执行逻辑212所接收,该VPE配置逻辑310存取对应于VPEs 302-304的VPE上下文305-307,VPEs 302-304的程序线程导致配置指令序列被提取以决定VPEs 302-304是否被允许配置这些资源322-328。如果不是,则配置逻辑310导致例外(exception)信号311被断言,且配置指令序列不被执行。如果VPEs 302-304被允许配置这些资源322-328,则VPE配置逻辑310执行配置指令序列以指引虚拟多处理器300进入配置状态,且更新一个或多个规定的VPE上下文305-307,因此,重新配置这些资源。在一个实施例中,配置指令序列通过更新VMP上下文210来指引虚拟多处理器300进入配置状态。在一个实施例中,配置指令的序列包括遵循MIPS32/MIPS64多线程(MT)应用特殊延伸(ASE)架构的指令。
该方框图示出一个由配置指令序列的执行导致的配置的资源322-328的具体实施例,且图表地描绘根据本发明,具体资源322-328如何能够被动态地配置,以最佳化在一个给定的多线程多处理应用中,同时执行线程的性能。例如,考虑到RESOURCE1 322图标分支对应于地址转换资源(例如,转换后备缓冲器输入)。从分支所示,VPE1 302是被规定为地址转换资源的一部份,且小于分配给剩余的VPEs 303-304的部分。或许,在VPE1 302执行的线程相对于其它线程是短的和反复的,因此,不需要扩大的地址转换资源。也考虑RESOURCE2 324代表对应到多线程协处理器的上下文(例如,浮点元件,媒体元件,SIMD元件等等)。VPE2 303,如在其VPE上下文306中所指定,相较于其它VPEs 302,307,是被配置较少的上下文数目,或许是由于由VPE2 303所发出指令线程所指引的运算,不需要大量的共处理资源。此外,考虑到RESOURCE3 326代表资源配置许可。如图表所呈现,只有VPE2 303被允许配置虚拟多处理器300中的资源302-304。也就是指明,已经获得配置许可的一个给定的VPE302-304(在这个例子为VPE2 303)可以授予配置许可给其它的VPEs302-304,或取消它们的配置许可,或取消它自己的配置许可。这是通过如这里所描述的更新规定的VPE上下文305-307来实现的。考虑到RESOURCE M 328是一个带宽资源,其根据如上所述的一被实现的调度原则,配置虚拟多处理器300的带宽给他的VPEs 302-304。因此,图表呈现每一个示例性的VPEs 302-304被给予相同部份的多处理器带宽,或者经由直接执行带宽配置,或通过设定几近相同的执行优先权,或通过其它用于规定带宽或与带宽相关的资源的技术。一个由本发明所尝试的规定与带宽相关的资源这样的技术,是加载/储存给VPEs 302-304的带宽的分配。例如,在VPEs 302-304间共享的在虚拟多处理器300中的存储器运算缓冲器的数目(未示出)小于执行线程的数目,则在执行一个与给定VPE302-304的线程有关的存储器运算之前,该虚拟多处理器300将会评估,是否要将给定的线程断开,因为,这样的运算可能会超过被规定用于给定的VPE302-304的与带宽相关的资源分配。这样一个带宽分配方案有利地解决了与VPEs302-304有关的小数量的线程,例如,产生一长串的贮存失误可能独占与带宽相关的资源(在该示例中未存储器运算缓冲器)的情况,因此,防止来自其它VPEs302-304的线程的执行。通过规定与带宽相关的资源的份额,依据本发明,这样的情况已经被排除在虚拟多处理器300外。
请参照图4,给出一表格400,其描绘的根据本发明的一示例性实施例的虚拟多处理上下文寄存器。该虚拟多处理上下文寄存器被采用以配置一个虚拟多处理器上下文210,或是一个虚拟处理元件上下文104,如上所述。该虚拟多处理上下文包括寄存器MVPCONTROL,MVPCONF0,和MVPCONF1。用于一个虚拟多处理器内的每一个VPE的虚拟处理元件上下文包括寄存器VPECONTROL,VPECONF0,VPECONF1,和VPESCHEDULE。表格400显示寄存器和到MIPS32/MIPS64指令集和特许资源架构的多线程应用特殊延伸一致,其中,规定一个CPO寄存器的数目和寄存器选择数目给每一个所示寄存器以存取其中的上下文。上述寄存器的架构和上下文将会参照图5来讨论。
图5是一系列方框图,描述图4的每一个虚拟多处理器上下文寄存器501-506,592的示例性实施例。图5A—5F包括每一个寄存器的字段和一个描述不同字段的表格的说明,特别相关的字段会在此详加讨论。图5所说明的每一个寄存器,可以选择性的由VPE读或写,依VPECONF0寄存器505中MVP字段553的值指出,VPE有动态配置这些资源的许可。在寄存器501-506,592中某些字段是只能由VPE写入,VPE的MVP字段553指出它有配置许可。否则,某些字段是只读,如同由配置逻辑310所控制的。
MVPCONTROL寄存器501有一个STLB字段511,一个VPC字段512,和一个EVP字段513。一个有如上所述配置许可的VPE102可以更新VPC字段512和EVP字段513以将虚拟多处理器101置于一个配置状态用于资源配置。清除VPC字段512和设定EVP字段513使新资源值被锁存在配置寄存器501-506,592中且用于虚拟处理以重新开始。一个有配置许可的VPE102可以更新STLB字段511以共享地址转换资源。
MVPCONF0寄存器502,和MVPCONF1寄存器503是只读寄存器,这些寄存器由一个有配置许可的VPE102所读取,以决定在一个给定虚拟多处理器101中设置的可配置这些资源的数目和范围。字段TLBS指出,地址转换资源是可共享的,且地址转换资源共享可以通过设定MVPCONTROL寄存器501的字段STLB511来配置。字段PVPE524规定由虚拟多处理器101所提供VPEs102的总数量。在图5的实施例,会采用多至16个VPEs102。字段PTC525指出由虚拟多处理器101所提供线程上下文103的总数量。在该示出的实施例中,多至256个线程上下文103将会被举例说明。字段C1M531指出可分配的协处理器是可多媒体延伸的。字段C1F532指出是否可分配的协处理器是可浮点的。字段533-535指出可用于分配给VPEs102的其它ISA特定资源的总数。
资源分配给具体VPE 104是通过将VPE数写到VPECONTROL寄存器504的字段TARGVPE334。一个写入字段334的实施例是经由上述的MIPSMTTR和MFTR指令。
在寄存器VPECONF0505中字段VPA552的值是被设定来起动/取消一个规定的VPE 102。字段MVP 553是设定为给予或取消资源配置许可。字段MINTC 554和MAXTC 555是被更新以配分配线程上下文103的数目和例举给一个规定的VPE 102。在本发明MIPS32/MIPS64多线程应用特殊延伸的实施例中,字段NCX 561,NCP2 562,和NCP1 563是被更新以配置协处理器资源给一个具体的VPE102。如上所述,图5E-5F的表格显示,该注明的资源分配字段552-555,561-563是只读的字段。所有VPEs 102没有资源配置许可,如VPECONF0寄存器505中MVP位553的状态所示。对于一个被授予资源配置许可的VPE102,配置逻辑310使注明的字段552-555,561-563能够被更新(也就是被写入)。
寄存器VPESCHEDULE 592包括一个调度器提示字段529,该字段529能够被更新以配置跨越在虚拟多处理器101中VPEs 102的带宽资源。
虽然图4和图5描述本发明的一示例性实施例,其中,某些资源能够在一个MIPS32/MIPS64多线程应用特殊延伸环境中被动态地配置,本发明人指出该示例性实施例是依据一个已知的指令集架构被提供的以教示本发明的多个方面。本发明人还指出,其它的架构同样的也可以被包含。
请参阅图6,示出一个说明依据本发明的用于虚拟处理器资源的动态配置的方法的流程图600。本方法由区块602开始,其中,依据本发明,一个VPE想要动态地配置这些资源。流程前进至区块604。
在区块604,对应至该请求VPE的VPE上下文被读取。流程前进至决定区块606。
在决定区块606,该VPE上下文被评估以决定是否该请求VPE被允许在虚拟多处理器中动态地配置这些资源。如果是,流程前进至区块608。如果不是,流程前进至区块607。
在区块607,因为该请求VPE没有资源配置许可,一个例外被宣告且流程前进至区块620。
在区块608,在虚拟多处理器中的虚拟处理被禁止,以允许资源配置。流程前进至区块610。
在区块610,在虚拟多处理器中一个配置状态被建立。流程前进至区块612。
在区块612,在虚拟多处理器中的一个VMP上下文被存取,以决定什么和多少资源是可用于配置。流程前进至区块614。
在区块614,一个目标VPE被选取用于它分配的资源的配置。流程前进至区块616。
在区块616,通过更新其相对应的VPE上下文,这些资源被配置用于选定的VPE。流程前进至区块618。
在区块618,用于选定的VPE的资源的新配置通过退出配置状态而被锁存,且在虚拟多处理器中的虚拟处理被再次起动。流程前进至区块620。
在区块620,该方法完成。
图7是一个流程图700描述依据本发明的用于虚拟处理器资源的动态配置的一可撤回的方法。图7的流程图700的所有的区块702-720等同于图6的流程图600的对应的区块602-620,其中百位数是由7所取代,除了一个额外的区块717,其中,被选定的VPE的VPE上下文被更新以撤销它的动态配置这些资源的许可。区块702的请求VPE,可以和区块717的被选定的VPE相同,因此,启动一个VPE来撤销它自己的配置许可。在区块718中锁存新配置之后,该请求VPE不能再配置这些资源。
虽然本发明和它的目的,特征,优点,已经被详细地描述,其它实施例被本发明所包括。例如,除了本发明使用硬件的实现方案外,本发明也可以例如,在一个计算机可使用(例如,可读取的)的媒体中配置的软件(例如,计算机可读取码,程序代码,指令和/或数据)来实现。这样的软件激活在这里描述的装置和方法的功能,制造,模型化,仿真,描述和/或测试。例如,可以由使用通常的程序语言(例如,C,C++,JAVA等等),GDSII数据库,包括Verilog HDL,VHDL的硬件描述语言(HDL)等等,或其它可用的程序,数据库,和/或电路(也就是,简图)捕捉工具来完成。这样的软件能够被配置在任何已知计算机可使用的(例如,可读取的)媒体,包括半导体存储器,磁盘,光盘(例如,CD-ROM,DVD-ROM等等)中,且作为在一个计算机可使用的(例如,可读取的)传输媒体(例如,载波或其它媒体包括数字,光学,或基于模拟的媒体)中的计算机数据信号。这样的软件可以在包括网际网络和内部网络的通讯网络上被传送。本发明可以软件(例如,作为半导体知识产权核心的一部分的HDL中,例如一个微处理器核心,或是一个系统级设计,例如单芯片系统或SOC)来实现和转换成硬件成为集成电路产品的一部分。本发明也可以由软件和硬件的结合来实施。
最后,本领域的熟练技术人员可以理解他们可以使用在此公开的概念和特定实施例为基础,设计或修改其它架构以实现本发明的相同目的,而不会背离如后附权利要求所定义的本发明的精神和范围。

Claims (47)

1、一种用于为一个虚拟多处理器中的一个或多个虚拟处理元件配置资源的装置,其包括:
一个虚拟多处理器装置,用于规定这些资源,且用于控制该虚拟多处理器的一配置状态;
一个或多个虚拟处理元件装置,每一个虚拟处理元件装置分别独占地对应至该一个或多个虚拟处理元件中的一个,所述每一个虚拟处理元件装置包含:第一逻辑,用于规定该一个或多个虚拟处理元件中的一个是否被允许配置这些资源;以及第二逻辑,用于规定被分配给该一个或多个虚拟处理元件中的一个的资源的一子集;以及
配置逻辑,连接至所述虚拟多处理器装置和所述一个或多个虚拟处理元件装置,用于检测所述一个或多个虚拟处理元件中的一个是否被允许配置这些资源,用于更新所述虚拟多处理器装置以指示该虚拟多处理器进入所述配置状态,以及用于通过更新一规定的虚拟处理元件装置来配置这些资源。
2、根据权利要求1所述的装置,其中该一个或多个虚拟处理元件在该虚拟多处理器内同时执行,以及其中该虚拟多处理器对一个对称多处理操作系统表现为一个对称多处理器。
3、根据权利要求1所述的装置,其中该一个或多个虚拟处理元件的每一个包括一个或多个线程上下文,这些线程上下文被配置以同时执行一个或多个线程。
4、根据权利要求3所述的装置,其中该一个或多个线程上下文的每一个共享配置的资源,其中所述配置的资源是指被分配给该一个或多个虚拟处理元件中的对应的一个的资源。
5、根据权利要求1所述的装置,其中这些资源包括该虚拟多处理器的一或多种属性,以及其中用于一个特定虚拟处理元件的资源的配置确定了所述特定虚拟处理元件相对于该虚拟多处理器中的该一个或多个虚拟处理元件中的所有其他虚拟处理元件执行操作的方式。
6、根据权利要求1所述的装置,其中这些资源包括转换先行缓冲器属性。
7、根据权利要求1所述的装置,其中这些资源包括共处理属性。
8、根据权利要求1所述的装置,其中这些资源包括浮点处理属性。
9、根据权利要求1所述的装置,其中这些资源包括媒体加速属性。
10、根据权利要求1所述的装置,其中这些资源包括配置这些资源的许可。
11、根据权利要求1所述的装置,其中这些资源包括线程上下文。
12、根据权利要求1所述的装置,其中这些资源包括该虚拟多处理器的带宽。
13、根据权利要求1所述的装置,其中这些资源包括虚拟处理元件启动。
14、根据权利要求1所述的装置,其中该一个或多个虚拟处理元件的每一个包括MIPS32/MIPS64指令的一例示和特许资源架构。
15、根据权利要求1所述的装置,其中所述规定的虚拟处理元件装置对应至该一个或多个虚拟处理元件中的一个。
16、根据权利要求15所述的装置,其中该一个或多个虚拟处理元件中的一个可以撤销它自己的配置这些资源的许可。
17、根据权利要求1所述的装置,其中所述规定的虚拟处理元件装置是一不同的虚拟处理元件装置,该不同的虚拟处理元件装置不同于与所述一个或多个虚拟处理元件中的该一个相独占地对应的该虚拟处理元件装置。
18、根据权利要求17所述的装置,其中该一个或多个虚拟处理元件中的该一个可以撤销对该不同的虚拟处理元件装置所对应至的一虚拟处理元件来配置这些资源的许可。
19、根据权利要求1所述的装置,其中所述虚拟多处理器装置包括一个或多个寄存器,以及其中所述配置状态通过写一个值到其中一配置状态字段而被控制。
20、根据权利要求1所述的装置,其中所述第一逻辑包括在一个或多个虚拟处理器装置寄存器中的一个主虚拟处理器字段,以及其中所述主虚拟处理器字段的一个特定值规定所述一个或多个虚拟处理元件中的一个是否被允许来配置这些资源。
21、根据权利要求1所述的装置,其中所述第二逻辑包括在一个或多个虚拟处理器装置寄存器中的一个或多个字段,以及其中所述一个或多个字段只能通过被允许配置这些资源的一给定虚拟处理元件而被更新。
22、根据权利要求21所述的装置,其中如果所述给定的虚拟处理元件不被允许配置这些资源,则所述配置逻辑导致一个异常。
23、根据权利要求1所述的装置,其中一个或多个程序指令通过所述一个或多个虚拟处理元件中的一个被执行,以建立所述配置状态和配置这些资源。
24、一种资源配置装置,用于分配资源给一个虚拟多处理器中的一个或多个虚拟处理元件,该资源配置装置包括:
多个虚拟多处理器寄存器,用于规定这些资源,并用于控制该虚拟多处理器的配置状态;
一个或多个虚拟处理元件寄存器,每一个虚拟处理元件寄存器对应至这些虚拟处理元件中的一个别虚拟处理元件,用于规定一个对应的虚拟处理元件是否被允许分派这些资源,且用于规定被分配给所述对应的虚拟处理元件的资源的子集;以及
配置逻辑,连接至所述虚拟多处理器寄存器和所述虚拟处理元件寄存器,用于检测所述对应虚拟处理元件是否被允许来分派这些资源,用于更新所述虚拟多处理器寄存器以指示该虚拟多处理器进入所述配置状态,并用于通过更新所述虚拟处理元件寄存器中选定的寄存器来分派这些资源。
25、根据权利要求24所述的装置,其中这些资源包括转换先行缓冲器属性。
26、根据权利要求24所述的装置,其中这些资源包括共处理属性。
27、根据权利要求24所述的装置,其中这些资源包括浮点处理属性。
28、根据权利要求24所述的装置,其中这些资源包括媒体加速属性。
29、根据权利要求24所述的装置,其中这些资源包括配置这些资源的许可。
30、根据权利要求24所述的装置,其中这些资源包括线程上下文。
31、根据权利要求24所述的装置,其中这些资源包括该虚拟多处理器的带宽。
32、根据权利要求24所述的装置,其中这些资源包括虚拟处理元件启动。
33、根据权利要求24所述的装置,其中该一个或多个虚拟处理元件中的每一个包括MIPS32/MIPS64指令的一例示和特许资源架构。
34、根据权利要求24所述的装置,其中所述对应虚拟处理元件可以撤销它自己的分派这些资源的许可。
35、根据权利要求24所述的装置,其中所述对应虚拟处理元件可以撤销对该多个虚拟处理元件中的另一个虚拟处理元件来配置这些资源的许可,其中该另一个处理元件不同于所述一个或多个虚拟处理元件中的该个别虚拟处理元件。
36、一种用于为一虚拟多处理器中的一个或多个虚拟处理元件配置资源的方法,该方法包括:
经由一个虚拟多处理器装置,首先规定这些资源,并控制该虚拟多处理器的一配置状态;
经由虚拟处理元件装置,每一个虚拟处理元件装置分别对应至该一个或多个虚拟处理元件中的一个,第二规定该一个或多个虚拟处理元件中的一个是否被允许配置这些资源,以及第三规定被分派给该一个或多个虚拟处理元件中的该一个的这些资源的一子集;以及
连接至该虚拟多处理器装置和该虚拟处理元件装置的配置逻辑,检测该一个或多个虚拟处理元件中的该一个是否被允许来配置这些资源,以及第一更新该虚拟多处理器装置以指示该虚拟多处理器进入所述配置状态,以及通过第二更新一个规定的虚拟处理元件装置来配置这些资源。
37、根据权利要求36所述的方法,其中所述第二更新包括分配该虚拟多处理器的一个或多个属性。
38、根据权利要求37所述的方法,其中所述分配包括:分派转换先行缓冲器属性。
39、根据权利要求37所述的方法,其中所述分配包括:分派共处理属性。
40、根据权利要求37所述的方法,其中所述分配包括:分派浮点处理属性。
41、根据权利要求37所述的方法,其中所述分配包括:分派媒体加速属性。
42、根据权利要求37所述的方法,其中所述分配包括:分派配置这些资源的许可。
43、根据权利要求37所述的方法,其中所述分配包括:分派线程上下文。
44、根据权利要求37所述的方法,其中所述分配包括:分派该虚拟多处理器的带宽。
45、根据权利要求37所述的方法,其中所述分配包括:启动一个给定虚拟处理元件。
46、根据权利要求36所述的方法,其中这些虚拟处理元件的每一个包括MIPS32/MIPS64指令的一例示和特许资源架构。
47、一种虚拟多处理系统,其包括:
一个存储器,被配置以储存与多个程序线程有关的程序指令;以及
一个虚拟多处理器,连接至所述存储器,被配置以在所述虚拟多处理器中的一个或多个虚拟处理元件上执行所述程序指令,其中所述虚拟多处理器有一个虚拟多处理器装置,该虚拟多处理器装置规定所述一个或多个虚拟处理元件的配置的资源,以及控制所述虚拟多处理器的一配置状态,其中所述一个或多个虚拟处理元件包括:一个虚拟处理元件装置,用于规定是否所述一个或多个虚拟处理元件的每一个被允许配置所述资源,且用于规定被分配给所述一个或多个虚拟处理元件中规定的一个的所述资源的一子集;以及配置逻辑,连接至所述虚拟多处理器装置和所述虚拟处理元件装置,用于检测所述一个或多个虚拟处理元件的每一个是否被允许来配置所述资源,用于更新所述虚拟多处理器装置以指示所述虚拟多处理器进入所述配置状态,以及用于通过更新与所述一个或多个虚拟处理元件中所述规定的一个相对应的一规定的虚拟处理元件装置来配置所述资源。
CNB2004800248016A 2003-08-28 2004-08-27 动态配置虚拟处理器资源的装置 Expired - Fee Related CN100538640C (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US49918003P 2003-08-28 2003-08-28
US60/499,180 2003-08-28
US60/502,359 2003-09-12
US60/502,358 2003-09-12
US10/684,350 2003-10-10
US10/684,348 2003-10-10

Publications (2)

Publication Number Publication Date
CN1842771A CN1842771A (zh) 2006-10-04
CN100538640C true CN100538640C (zh) 2009-09-09

Family

ID=37031160

Family Applications (4)

Application Number Title Priority Date Filing Date
CN 200480024800 Pending CN1842770A (zh) 2003-08-28 2004-08-26 一种在处理器中挂起和释放执行过程中计算线程的整体机制
CNB2004800248016A Expired - Fee Related CN100538640C (zh) 2003-08-28 2004-08-27 动态配置虚拟处理器资源的装置
CNB2004800247988A Expired - Fee Related CN100489784C (zh) 2003-08-28 2004-08-27 多线程微处理器及其新线程的创建方法和多线程处理系统
CN2004800248529A Expired - Fee Related CN1846194B (zh) 2003-08-28 2004-08-27 执行并行程序线程的方法和装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN 200480024800 Pending CN1842770A (zh) 2003-08-28 2004-08-26 一种在处理器中挂起和释放执行过程中计算线程的整体机制

Family Applications After (2)

Application Number Title Priority Date Filing Date
CNB2004800247988A Expired - Fee Related CN100489784C (zh) 2003-08-28 2004-08-27 多线程微处理器及其新线程的创建方法和多线程处理系统
CN2004800248529A Expired - Fee Related CN1846194B (zh) 2003-08-28 2004-08-27 执行并行程序线程的方法和装置

Country Status (1)

Country Link
CN (4) CN1842770A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102063286A (zh) * 2009-10-19 2011-05-18 Arm有限公司 程序流控制
CN107408036A (zh) * 2015-03-27 2017-11-28 英特尔公司 用户级分叉与结合处理器、方法、系统和指令

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9417914B2 (en) 2008-06-02 2016-08-16 Microsoft Technology Licensing, Llc Regaining control of a processing resource that executes an external execution context
WO2010095182A1 (ja) * 2009-02-17 2010-08-26 パナソニック株式会社 マルチスレッドプロセッサ及びデジタルテレビシステム
US8561070B2 (en) * 2010-12-02 2013-10-15 International Business Machines Corporation Creating a thread of execution in a computer processor without operating system intervention
CN102183922A (zh) * 2011-03-21 2011-09-14 浙江机电职业技术学院 Acs运动控制器实时暂停的实现方法
WO2011127862A2 (zh) * 2011-05-20 2011-10-20 华为技术有限公司 多线程访问多副本的方法和装置
CN104750607B (zh) * 2011-06-17 2018-07-06 阿里巴巴集团控股有限公司 一种选择性恢复测试执行的方法及装置
US9507638B2 (en) * 2011-11-08 2016-11-29 Nvidia Corporation Compute work distribution reference counters
CN102750132B (zh) * 2012-06-13 2015-02-11 深圳中微电科技有限公司 多线程虚拟流水线处理器的线程控制和调用方法及其处理器
CN103973600B (zh) * 2013-02-01 2018-10-09 德克萨斯仪器股份有限公司 用于分组处理旋转掩码合并和寄存字段指令的方法及装置
JP6122749B2 (ja) * 2013-09-30 2017-04-26 ルネサスエレクトロニクス株式会社 コンピュータシステム
CN104484223B (zh) * 2014-12-16 2018-02-16 北京奇虎科技有限公司 一种安卓系统应用关闭方法和装置
US9720693B2 (en) * 2015-06-26 2017-08-01 Microsoft Technology Licensing, Llc Bulk allocation of instruction blocks to a processor instruction window
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
US10169105B2 (en) * 2015-07-30 2019-01-01 Qualcomm Incorporated Method for simplified task-based runtime for efficient parallel computing
US9921838B2 (en) * 2015-10-02 2018-03-20 Mediatek Inc. System and method for managing static divergence in a SIMD computing architecture
GB2544994A (en) * 2015-12-02 2017-06-07 Swarm64 As Data processing
CN105700913B (zh) * 2015-12-30 2018-10-12 广东工业大学 一种轻量级裸片代码的并行运行方法
US10761849B2 (en) * 2016-09-22 2020-09-01 Intel Corporation Processors, methods, systems, and instruction conversion modules for instructions with compact instruction encodings due to use of context of a prior instruction
GB2569275B (en) * 2017-10-20 2020-06-03 Graphcore Ltd Time deterministic exchange
GB2569098B (en) * 2017-10-20 2020-01-08 Graphcore Ltd Combining states of multiple threads in a multi-threaded processor
GB201717303D0 (en) 2017-10-20 2017-12-06 Graphcore Ltd Scheduling tasks in a multi-threaded processor
CN109697084B (zh) * 2017-10-22 2021-04-09 刘欣 一个用于时分复用流水线处理器的快速访问存储器结构
CN108536613B (zh) * 2018-03-08 2022-09-16 创新先进技术有限公司 数据清理方法、装置、及服务器
CN110768807B (zh) * 2018-07-25 2023-04-18 中兴通讯股份有限公司 虚拟资源方法及装置、虚拟资源处理网元及存储介质
CN110955503B (zh) * 2018-09-27 2023-06-27 深圳市创客工场科技有限公司 任务调度方法及装置
GB2580327B (en) * 2018-12-31 2021-04-28 Graphcore Ltd Register files in a multi-threaded processor
CN111414196B (zh) * 2020-04-03 2022-07-19 中国人民解放军国防科技大学 一种零值寄存器的实现方法及装置
CN112395095A (zh) * 2020-11-09 2021-02-23 王志平 一种基于cpoc的进程同步方法
CN112579278B (zh) * 2020-12-24 2023-01-20 海光信息技术股份有限公司 用于同步多线程的中央处理单元、方法、设备及存储介质
TWI775259B (zh) * 2020-12-29 2022-08-21 新唐科技股份有限公司 直接記憶體存取裝置與使用其的電子設備
CN116701085B (zh) * 2023-06-02 2024-03-19 中国科学院软件研究所 RISC-V处理器Chisel设计指令集一致性的形式验证方法及装置
CN116954950B (zh) * 2023-09-04 2024-03-12 北京凯芯微科技有限公司 一种核间通信方法和电子设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5812811A (en) * 1995-02-03 1998-09-22 International Business Machines Corporation Executing speculative parallel instructions threads with forking and inter-thread communication

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102063286A (zh) * 2009-10-19 2011-05-18 Arm有限公司 程序流控制
CN102063286B (zh) * 2009-10-19 2015-09-16 瑞士优北罗股份有限公司 程序流控制
CN107408036A (zh) * 2015-03-27 2017-11-28 英特尔公司 用户级分叉与结合处理器、方法、系统和指令
CN107408036B (zh) * 2015-03-27 2021-08-31 英特尔公司 用户级分叉与结合处理器、方法、系统和指令

Also Published As

Publication number Publication date
CN1842771A (zh) 2006-10-04
CN1846194B (zh) 2010-12-15
CN100489784C (zh) 2009-05-20
CN1846194A (zh) 2006-10-11
CN1842769A (zh) 2006-10-04
CN1842770A (zh) 2006-10-04

Similar Documents

Publication Publication Date Title
CN100538640C (zh) 动态配置虚拟处理器资源的装置
EP1658563B1 (en) Apparatus, and method for initiation of concurrent instruction streams in a multithreading microprocessor
CN101160565B (zh) 无操作系统干预情况下调度os隔离定序器上的线程的机制
CN100357884C (zh) 用于处理指令的方法、处理器以及系统
JP3771957B2 (ja) プロセッサ・アーキテクチャにおける分散制御のための装置および方法
CA2338008C (en) Method and apparatus for identifying splittable packets in a multithreaded vliw processor
US20040216101A1 (en) Method and logical apparatus for managing resource redistribution in a simultaneous multi-threaded (SMT) processor
US20040216120A1 (en) Method and logical apparatus for rename register reallocation in a simultaneous multi-threaded (SMT) processor
EP1139215B1 (en) Method and apparatus for releasing functional units in a multithreaded VLIW processor
CN101542412A (zh) 用于多线程处理器中自动低功率模式调用的装置和方法
KR20010095069A (ko) 다중 스레드 초장 명령어 프로세서, 명령어 처리 방법 및그 제품
JP3777541B2 (ja) マルチスレッドvliwプロセッサにおけるパケット分割の方法および装置
US20090138880A1 (en) Method for organizing a multi-processor computer
WO2005022384A1 (en) Apparatus, method, and instruction for initiation of concurrent instruction streams in a multithreading microprocessor
JPH09274567A (ja) プログラムの実行制御方法及びそのためのプロセッサ

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: American California

Patentee after: Imagination Technologies Ltd.

Address before: American California

Patentee before: Imagination Technology Co.,Ltd.

Address after: American California

Patentee after: Imagination Technology Co.,Ltd.

Address before: American California

Patentee before: Mips Technologies, Inc.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090909

Termination date: 20200827