CN1856770A - 具有多寄存器环境的数据处理系统及其方法 - Google Patents
具有多寄存器环境的数据处理系统及其方法 Download PDFInfo
- Publication number
- CN1856770A CN1856770A CNA038126249A CN03812624A CN1856770A CN 1856770 A CN1856770 A CN 1856770A CN A038126249 A CNA038126249 A CN A038126249A CN 03812624 A CN03812624 A CN 03812624A CN 1856770 A CN1856770 A CN 1856770A
- Authority
- CN
- China
- Prior art keywords
- registers
- contexts
- registers contexts
- register
- environment
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims description 20
- 238000012545 processing Methods 0.000 title abstract description 22
- 230000007613 environmental effect Effects 0.000 claims description 13
- 238000011282 treatment Methods 0.000 claims description 7
- 238000013507 mapping Methods 0.000 abstract description 17
- 230000014509 gene expression Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000010354 integration Effects 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000002708 enhancing effect Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000004321 preservation Methods 0.000 description 2
- 238000007493 shaping process Methods 0.000 description 2
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003760 hair shine Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明公开一种数据处理系统(10),具有多寄存器环境(34、35、36)。本发明的一个实施例使用用于多寄存器环境的每个环境的用户可编程环境控制寄存器(140)来允许将部分替换寄存器环境映射成当前的寄存器环境。环境控制寄存器也可用于提供公共堆栈指针在多寄存器环境中的共享。因此,当操作在当前的寄存器环境中时,环境控制寄存器可用于访问部分替换寄存器环境,而不是访问当前寄存器环境的相应部分。
Description
技术领域
本发明一般涉及数据处理系统,更具体涉及具有多寄存器环境的数据处理系统。
背景技术
在数据处理系统中,诸如微处理器中,使用处理器来控制操作的执行和处理。处理器包括储存寄存器环境的寄存器,处理器在正常操作和异常处理期间将使用寄存器环境。当发生中断或处理切换时,寄存器环境信息可能被破坏,因为中断处理程序或新的处理将使用相同的寄存器并可能改变其中的某些值。
上述问题的一种解决方案是,在开始处理中断或新的处理之前将寄存器当前的值保存在存储器中,当中断处理完成或当返回到当前的处理时再从存储器中把保存的寄存器环境值读出到寄存器中。但是,保存寄存器环境、加载新环境的开销在实时或高性能环境中是所不希望的。因此,需要一种在数据处理系统中灵活并降低开销的寄存器环境选择机制。
附图说明
通过举例并不限于附图来说明本发明,其中相似的标号表示类似的元素,并且,在附图中:
图1以框图形式说明了根据本发明一个实施例的数据处理系统;
图2以框图形式说明了根据本发明一个实施例的处理器;
图3说明了根据本发明一个实施例的寄存器环境;和
图4和5说明了根据本发明不同实施例的寄存器环境内的示例映射。
本领域技术人员可认识到,为了清楚简洁地说明图中元素,没有必要按比例绘制。例如,图中某些元素的尺寸相比其他元素可能较为夸大,这是为了帮助增进对本发明实施例的理解。
具体实施方式
如这里所使用的,术语“总线(bus)”用来指代多个信号或导线,其用于传输一种或多种不同类型的信息,诸如数据、地址、控制或状态。术语“声明(assert)”和“否定(negate,或deassert)”用于指代使信号、状态位等分别呈现其逻辑真或逻辑假状态。如果逻辑真状态是逻辑电平1,则逻辑假状态为逻辑电平0。如果逻辑真状态是逻辑电平0,则逻辑假状态是逻辑电平1。数字前的符号“$”表示该数字是十六进制或基十六形式(base sixteen form)的表示。
图1说明了通过数据总线4和地址总线6连接到外部设备2的数据处理系统10。数据处理系统10包括处理器12。在一个实施例中,数据处理系统10和外部设备2都实现为分别的集成电路。在替换的实施例中,数据处理系统10和外部设备2可以实现在一块集成电路上。在数据处理系统10内,处理器12通过内部数据总线13和内部地址总线14连接到系统集成电路22。
注意到,在本发明的某些实施例中,数据处理系统10形成在一块集成电路上。此外,在某些实施例中,数据处理系统10可以是单芯片的微控制器、微处理器、数字信号处理器或任何其他类型的数据处理系统。而且,数据处理系统10可以使用任意类型的电路来实现。外部设备2可以是任意类型的电路,包括存储器或任意类型的外围设备。替换实施例可包括更多、更少或不同的外部集成电路。此外,总线4和6可使用任意比特数来实现。
在操作中,系统集成22用于允许处理器12和外部设备2之间的通信。也就是说,处理器12将数据和地址信息通过内部总线14和13传递到系统集成22,然后系统集成22用适于外部设备2的方法和形式来通过总线4和6传递该数据和地址信息。下面将参考图2详细讨论处理器12。
图2说明了根据本发明一个实施例的部分处理器12。处理器12包括算术逻辑单元(ALU)24、地址发生器26、指令流水线28、指令解码电路30、寄存器文件集32和向量偏移发生器39。寄存器文件包括多寄存器环境(context),诸如环境034、环境135和环境N 36。因此,寄存器文件32包括N+1个寄存器环境,并且虽然在图2中只示出了3个,处理器12可包括任意数量的寄存器环境,其取决于硬件支持多少寄存器环境。寄存器文件32还包括控制寄存器文件38。内部地址总线14连接到地址发生器26,地址发生器26通过寄存器源总线40连接到寄存器文件32,还连接到内部数据总线13。向量偏移发生器39通过向量偏移总线27连接到地址发生器26。内部数据总线13连接到指令流水线28、ALU 24和寄存器文件32。指令解码电路30通过指令总线29双向连接到指令流水线28。寄存器文件32通过归档信息总线(filed information bus)42连接到ALU 24。
图3说明了根据本发明一个实施例的寄存器环境51。图3的寄存器环境51可表示图2的环境0到N中的任意一个。在图3的实施例中,寄存器环境51包括32个通用寄存器(GPR)50、一个链接寄存器、一个计数寄存器56、一个条件寄存器58、一个整形异常寄存器(integer exception register)60、一个机器状态寄存器62和一个环境控制寄存器64。链接寄存器54用于在从子程序调用和返回时保持子程序链接信息。计数寄存器56用于保持处理指令计数循环的计数信息。条件寄存器58用于保持条件代码计算的结果。整形异常寄存器60用于提供不同的异常状态。机器状态寄存器62用于控制和提供处理器12内的不同功能的状态。环境控制寄存器64,如下面更详细讨论的,用于提供根据本发明实施例的环境切换。同时注意到,GPR 50之一是堆栈指针寄存器52,保留用于储存当前的堆栈指针。
因此,寄存器环境指的是上述寄存器(环境51的寄存器)的内容。另外的实施例可定义寄存器环境为具有寄存器环境51中的全部或某些相同寄存器,或可包括与寄存器环境51不同的寄存器集合。因此,如这里所使用的,寄存器环境可被定义为具有任意数量和任意类型的寄存器。典型地,寄存器环境包含组成所有或部分编程者用于处理器的寄存器模型的寄存器资源。在正常操作期间或在上电或复位时,数据处理系统10可缺省使用环境0 34。(注意到,在另外的实施例中,正常操作可缺省使用不同的环境。)但是,当发生中断或处理切换时,为了不破坏环境0 34中的值,数据处理系统10选择新的环境(从环境1到N中)用于处理中断或执行新处理或线程。因此,中断管理和处理切换(例如多线程)可导致需要在数据处理系统10内的寄存器环境切换。同时,在某些实施例中,可能希望在寄存器环境中与另一寄存器环境共享部分寄存器。因此,如下面将要描述的,部分寄存器环境可映射到另一寄存器环境,以帮助在环境切换过程中减少开销并增加速度。
在数据处理系统10中,在指令流水线28的解码阶段或执行阶段识别异常和中断。因此,当指令提供到指令解码电路30并被解码时,可识别和处理中断,而不是正常指令处理。在此描述的一个实施例中,有多个中断级,其确定给定中断是否具有比任何其他中断更高的优先级。这样,具有高优先级的中断将比具有较低优先级的中断更快得到处理,较低优先级的中断必须等待处理。每个中断或中断类型或具有相同优先级的中断因此可共享相同的寄存器环境(如果希望)。
当接收到中断时,数据处理系统10开始执行异常处理序列。在该序列过程中,向量偏移发生器39通过向量偏移总线27向地址发生器26提供向量偏移值。地址发生器26使用向量偏移值来形成开始执行处理中断的指令地址。在一个实施例中,除了向量偏移值,向量偏移发生器还提供表示要用于中断处理的寄存器环境的环境选择器(context selector)。在一个实施例中,环境选择器是向量偏移值的一部分,或者可以是由向量偏移发生器39提供的单独的值。同时,环境选择器可以直接提供给寄存器文件32。在另外的实施例中,环境选择器可以是从存储器(未示出)中读取的值或者可以通过指令接收。在数据处理系统10在寄存器文件32中具有8个寄存器环境的例子中,环境选择器可以是用于识别寄存器环境之一的3比特值。
同时,数据处理系统10可能能够进行处理切换,其中处理器12能够从一种处理切换到另一种处理,每个处理都可在不同寄存器环境中操作。例如,在多线程应用中,处理器12可以在不同处理线程中连续地切换,其中不同的处理线程(或处理线程组)使用不同的寄存器环境。在处理切换的例子中,中断可用于向数据处理系统10表示处理切换(其中,中断管理包括切换处理)。另外,可使用其他方法向地址发生器26表示需要进行处理切换,以使地址发生器26能够产生新处理的起始地址。同时,在处理切换时,还提供环境选择器以表明新处理需要哪个寄存器环境。如上所述,可以多种不同方式(即,来自向量偏移发生器39、来自存储器、来自用户指令,等等)且可以直接或间接(例如通过地址发生器26)提供环境选择器给寄存器文件32,从而选择正确的寄存器环境。
一旦建立了寄存器环境,处理器12执行的指令将引用适当的通用寄存器(GPR 50)或专用寄存器(例如,LR 54、CTR 56、CR 58、XER 60、MSR 62或CTXCR 64),对应于当前建立的环境。其他环境内的寄存器将不受影响(除非如下面所述建立映射),这样,不需要在执行用于刚建立的环境的指令之前保存或储存替换的环境到存储器中。这提供了开销上的节省。
图4和5说明了可用于数据处理系统10内的寄存器环境内的示例映射。图4说明了三种寄存器环境:环境0 70、环境1 72和环境2 74。这些寄存器环境可表示图2的环境0到N内的三个环境。假定在图4的例子中,环境0 70对应于数据处理系统10的正常操作,环境1 72对应于关键(critical)中断(最高优先级),环境2对应于外部中断(较低优先级)。如上所述,在某些情况下,希望多寄存器环境“共享”一部分寄存器。因此,在图4的例子中,如箭头82所示,寄存器环境274的堆栈指针寄存器80映射到寄存器环境1 72的堆栈指针78,表明寄存器环境1 72和寄存器环境2 74能够共享相同的堆栈指针,从而在两个寄存器环境中使用相同的堆栈指针值。这样的映射减少了开销,并帮助维持堆栈指针的一致。因此,当处理外部中断时,环境2 74由数据处理系统10来选择。但是,由于堆栈指针寄存器80映射到堆栈指针寄存器78,在寄存器环境2 74的操作过程中访问寄存器环境1 72中的堆栈指针寄存器78以访问堆栈指针。换句话说,尽管操作当前环境值选择寄存器环境2 74,试图访问堆栈指针寄存器80的指令和其他操作被重定向来访问寄存器环境1 72内的堆栈指针寄存器78。这允许在环境1和环境2之间共享单独一致的堆栈和堆栈指针值,而免去了同步分别的堆栈指针寄存器80和78的开销。
注意到,(环境0 70的)堆栈指针寄存器76和(环境1 72的)堆栈指针寄存器78没有映射;因此,当在这些寄存器环境中操作时,在访问堆栈指针时不需要访问其他寄存器环境。每个寄存器环境70、72、74内的环境控制寄存器77、79和75分别表示是否映射了相应寄存器环境的堆栈指针,如果映射了,其映射到哪个其他的寄存器环境。环境控制寄存器的细节将在下面参考图6进行详细讨论。
图5说明了根据另一个例子的三种寄存器环境:寄存器环境1 90、寄存器环境2 92和寄存器环境3 94。如同图4,图5的寄存器环境可表示图2的寄存器环境0到N中的三个寄存器环境。在图5的例子中,寄存器环境1 90对应于处理A,寄存器环境2 92对应于处理B,寄存器环境3 94对应于处理C。因此,当数据处理系统10执行处理A时,数据处理系统10工作在寄存器环境1 90。当处理切换(诸如从处理A到处理B)时,环境选择器选择寄存器环境2 92以在执行处理B时使用。如上参考图4所述,每个堆栈指针寄存器能够映射到不同的寄存器环境。例如,在图5中,寄存器环境1 90的堆栈指针寄存器96映射到寄存器环境2 92的堆栈指针寄存器98,如箭头124所示。因此,当执行处理A(使用寄存器环境1 90)时,到堆栈指针的访问实际上导致了在不同寄存器环境(即寄存器环境2 92)内到堆栈指针寄存器98的访问。注意到,寄存器环境3 94的堆栈指针寄存器100没有映射。同时,在一个实施例中,有可能具有分层的映射。例如,就在堆栈指针寄存器96映射到堆栈指针寄存器98的时候,堆栈指针寄存器98还可映射到例如堆栈指针寄存器100。同时,特殊的堆栈指针寄存器可以具有映射到它的多堆栈指针寄存器。例如,堆栈指针寄存器100和96都可以映射到堆栈指针寄存器98。其他的映射也是有可能的。
图5的寄存器环境还包括寄存器的分组。例如,通用寄存器分组成四个寄存器的组。在寄存器环境190中,GPR 4-7一起分组到寄存器组102,GPR 8-11一起分组到寄存器组104,GPR 28-31一起分组到寄存器组106。因此,在图5的例子中,寄存器环境190包括三个组(组102、104和106),每个组具有四个寄存器,其中每个组可映射(作为一个组)到不同的寄存器环境。在替换的实施例中,可分组任意数量和类型的寄存器。可替换地,每个单个的寄存器可以被认为是一个单独的组,取决于所需的颗粒度(granularity)。类似地,寄存器环境292包括三个分组,每组四个寄存器:组114具有GPR 4-7,组116具有GPR 8-11,组118具有GPR 28-31。同时,寄存器环境394包括三个分组,每组四个寄存器:组108具有GPR 4-7,组110具有GPR 8-11,组112具有GPR 28-31。这些分组允许寄存器组在不同的寄存器环境中映射。
例如,如箭头120所示,寄存器环境292的分组118映射到寄存器环境190的分组106。如箭头126所示,寄存器环境394的分组112也映射到寄存器环境1 90的分组106。也就是说,寄存器组106由所有的三个寄存器环境(寄存器环境1 90、寄存器环境2 92和寄存器环境3 94)所共享。因此,当执行处理B或处理C时,到当前寄存器环境(分别是寄存器环境2 92或寄存器环境3 94)的GPR 28-31的访问实际上导致到寄存器环境190的GPR 28-31的访问。在图5中,如箭头122所示,寄存器环境1 90的分组104映射到寄存器环境2 92的分组116。也就是说,组116的寄存器由寄存器环境1 90和寄存器环境2 92所共享。因此,当执行处理A时,到当前寄存器环境的GPR 8-11的访问实际上导致到寄存器环境2 92的GPR 8-11的访问。因此,可存在任意数量的映射,无论是单寄存器(诸如堆栈指针寄存器96、98或100)还是寄存器组。同时,每个寄存器环境可以具有映射到一个寄存器环境的一些寄存器和映射到另一寄存器环境的其他寄存器。同时,寄存器或寄存器组可具有映射到它的多寄存器环境的寄存器。
每个寄存器环境的映射在每个寄存器环境的环境控制寄存器中定义(例如,图5的环境控制寄存器128、130和132)。因此,图2的每个寄存器环境0-N具有相应的环境控制寄存器,其可能包括在每个寄存器环境中(如在图4和5)或者可能分别地储存(诸如在图2的控制寄存器文件38中)。图6说明了根据本发明一个实施例的环境控制寄存器140的内容。环境控制寄存器140可以是图4的环境控制寄存器77、79、75,或者图5的环境控制寄存器128、130和132。在一个实施例中,环境控制寄存器是专用32比特寄存器,其具有多个不同的字段,用来控制寄存器的映射,并保持当前的、替换的和保存的环境信息。
环境控制寄存器140的比特0对应于环境使能字段142,其使多寄存器环境能够使用。例如,如果环境使能字段142为否定,则仅使能一个环境,忽略环境控制140中的所有其他控制字段,并将当前的环境设置为缺省寄存器环境(在图2所示的实施例中是寄存器环境034)。如果声明环境使能字段142,则使能多个环境。比特3-5对应于环境数量字段144,其是只读字段,表示硬件所支持的最高环境数量。在图6的例子中,值000表示支持一个环境,值111表示硬件支持八个环境。如果数据处理系统10可支持8个以上的寄存器环境,则可使用附加比特用于环境数量字段144。但是,在图6的实施例中,将假定支持最大的8个寄存器环境。
比特6-8对应于当前环境字段146,其定义了当前使能的寄存器环境。在一个实施例中,当复位以表示缺省寄存器环境是寄存器环境0时该字段被清零。当前环境字段146对应于上面讨论的、可以各种不同方式提供的环境选择器,诸如通过图2的向量偏移发生器39提供。因此,当环境切换(由中断或处理切换引起)时,现有环境字段146被设置为如环境选择器所表示的新的寄存器环境。例如,参看图5,如果数据处理系统10当前执行处理A,则在环境切换到处理B时,环境选择器表示寄存器环境2,值2写入到寄存器环境2 92的环境控制寄存器的当前环境字段。
注意到,尽管每个寄存器环境具有其自己的环境控制寄存器,某些字段可以在不同环境控制寄存器中间共享。例如,可以实现单独环境使能比特、单独环境数量字段和单独当前环境字段,由所有环境控制寄存器使用,因为值在不同环境控制寄存器中间总是相同的。替换的实施例可使用环境使能或环境数量字段或当前环境字段用于每个环境控制寄存器,但是通过使用用于每个的单独共享字段可以减少硬件需求。
比特9-11对应于保存的环境字段148,其定义了先前使能的环境。注意到,该字段也可以在复位时清零。因此,在从处理A切换到处理B的上述例子中(参看图5),当前环境字段设置为2(表示寄存器环境2 92),保存的环境字段设置为1(表示先前环境,寄存器环境1 90)。
比特12-14对应于替换的环境字段150,其定义了替换的使能环境,其用于为寄存器分组定义环境映射。比特15-18对应于映射字段151。比特15对应于寄存器组A(定义为GPR 4-7),比特16对应于寄存器组B(定义为GPR 8-11),比特17对应于寄存器组C(定义为GPR 16-23),比特18对应于寄存器组D(定义为GPR 27-31)。每个寄存器组A-D可独立地通过声明对应比特而使能。例如,如果声明比特15,组A使能,使组A映射到由替换环境字段定义的寄存器环境。如果比特15为否定,组A不映射。类似地,如果声明比特16、17或18,则对应的寄存器组(分别为B、C或D)映射到由替换环境字段定义的寄存器环境。如果比特16、17或18为否定,则对应的寄存器组(分别为B、C或D)不映射。因此,参看图5,寄存器环境1 90的环境控制寄存器在其替换环境字段中包括一个2,表示所选寄存器组映射到寄存器环境2 92。同时,声明比特16(对应于具有GPR 8-11的组B),使得寄存器环境1 90的分组104映射到寄存器环境2 92的分组116。
在示例环境控制寄存器,图6的环境控制寄存器140中,单独的替换环境字段可用,每个组(A-D)可使能以映射到相同的替换寄存器环境。也就是说,如果分组A映射到特殊寄存器环境,则分组C-D只能映射到相同的环境。但是,在替换实施例中,每个分别的寄存器分组(诸如分组A-D)可以具有相应的替换环境字段,使它们能够映射到不同的替换寄存器环境。另外,可将分别的替换环境字段用于分组的组(例如,一个替换环境字段用于分组A和B,另一个用于C和D)。同时,分组可以以任意方式定义。例如,每个分组可以具有多于或少于4个的寄存器,每个分组可以是一个寄存器,或者每个分组可以具有不同数量的寄存器。同时,在替换实施例中,可使用更多或更少的分组用于更多或更少的替换环境字段。因此,图6的环境控制寄存器140只是一个例子。同时,每个字段可使用更多或更少的比特,按需要,以表示字段的值。环境控制140包括未使用的比特1、2、19-23和28-31;但是,替换实施例可以不包括未使用的比特或可以需要多个寄存器来储存环境控制信息。
环境控制寄存器140的比特24对应于堆栈指针环境使能字段152,其使能堆栈指针的映射,如参看图4和图5讨论的。比特25-27对应于堆栈指针环境选择字段154,其为堆栈指针选择替换寄存器环境。因此,如果声明比特24,堆栈指针映射到堆栈指针环境选择字段154所指示的寄存器环境;但是,如果否定,则堆栈指针不映射(即,其保持由当前环境字段146所定义的当前环境)。堆栈指针环境选择字段154是3比特值,可表示在数据处理系统10中的8个寄存器环境中的哪个用作堆栈指针的替换环境。例如,值000可对应于寄存器环境0,值111对应于寄存器环境7。因此,如果堆栈指针环境选择字段154设置为001,(且声明堆栈指针环境使能字段152)则当前环境的堆栈指针映射到寄存器环境1。例如,参看图4,声明寄存器环境274的环境控制寄存器的堆栈指针环境使能字段,堆栈指针环境选择字段设置为001,表示堆栈指针寄存器80映射到寄存器环境172的堆栈指针寄存器78。同时注意到,替换实施例可包括除允许共享堆栈指针之外的允许映射其他个体寄存器的字段。
环境控制寄存器可以通过各种不同方式来编程。例如,在一个实施例中,每个环境控制寄存器可以是用户直接编程的。可替换地,环境控制寄存器可以使用当前环境控制寄存器的替换环境字段来间接映射。例如,在一个实施例中,当上电或复位时,数据处理系统缺省为寄存器环境0。替换环境字段然后可被设置为表示哪个寄存器环境的环境控制寄存器要被编程的值。例如,在寄存器环境0中,将值2写入寄存器环境0的环境控制寄存器的替换环境字段,允许通过专用寄存器访问寄存器环境2的环境控制寄存器的编程。在所有环境控制字段都被编程之后,它们都可以同时使能(在具有单个共享环境使能字段的情况中是通过声明该比特来实现的)。同时,在一个实施例中,可以在环境控制寄存器的编程过程中切断中断处理。
注意到,参考特殊字段和比特位置描述了环境控制寄存器140。注意到,替换实施例可以包括更多或更少的字段,按需要,每个字段可以包括更多或更少的比特。同时,在替换实施例中,环境控制寄存器可以位于数据处理系统10中的任意位置,或者可以位于数据处理系统10的外部。
因此,可以认识到环境控制寄存器可怎样通过减少的开销而用于提供灵活环境选择。当数据处理系统10内环境切换时,新寄存器环境的环境控制寄存器更新。例如,新寄存器环境写到当前环境字段,先前的环境写到保存的环境字段,当操作在新的寄存器环境内时,使用映射字段内提供的寄存器映射。寄存器映射允许不同的寄存器环境共享寄存器值。同时,寄存器映射允许访问当前寄存器环境之外的其他寄存器环境,如当前寄存器环境的环境控制寄存器所定义的。同时,用户可编程环境控制寄存器允许在怎样定义映射方面的灵活性。因此,在此所述的本发明的一个方面提供一种灵活的机制,将部分替换寄存器环境映射到当前寄存器环境(反之亦然),并且提供公用堆栈指针在多环境中间的灵活共享,从而带来增强的实时性能。通过将部分当前环境映射到替换环境,在操作环境之间传输信息值的开销可以被去除或者消除,从而带来增强的性能或灵活性。
在前面的说明书中,通过特定实施例描述了本发明。但是,本领域普通技术人员认识到,在不背离本发明如权利要求书所阐述的范围的前提下,可作出各种不同修改和改变。例如,框图可以具有与所说明的不同的框,可以有更多或更少的框,或者不同的布置。因此,说明书和附图只是说明性的而非限制性的,所有这样的修改都应该包括在本发明的范围中。
上面参考特定实施例描述了利益、其他优点和问题的解决方案。但是,利益、其他优点、问题的解决方案和任何能够带来任何利益、优点或使解决方案更加显著的元素不应被视为任意或所有权利要求的关键的、所需的或必需的特征和元素。如在此使用的,术语“包括、包含(comprises、comprising)”或其任意其他的变化都意旨涵盖非排他性的包涵,因此,包括一系列元素的过程、方法、物品或装置不仅包括所列出的元素,还包括其他未明确列出或这样的过程、方法、物品或装置所固有的元素。
Claims (10)
1.一种数据处理系统(10),包括:
多个寄存器环境(34、35、36);
存储电路(38),用于储存对应于所述多个寄存器环境的至少一部分的环境控制信息;和
处理电路(12),用于有选择地访问所述多个寄存器环境内的一部分替换寄存器环境,而不是所述多个寄存器环境内的当前寄存器环境的对应部分。
2.权利要求1的数据处理系统,其中,所述一部分替换寄存器环境由储存的环境控制信息来指示。
3.权利要求1的数据处理系统,其中,所述存储电路包括多个环境控制寄存器,其中所述多个环境控制寄存器中的每一个都对应于所述多个寄存器环境的相应寄存器环境。
4.权利要求1的数据处理系统,其中,所述一部分替换寄存器环境包括堆栈指针。
5.权利要求1的数据处理系统,其中,所述部分包括一组寄存器。
6.权利要求1的数据处理系统,其中,所述环境控制信息包括使能字段,其中,当声明所述使能字段时,所述处理电路访问所述一部分替换寄存器环境。
7.在一种具有多个寄存器环境的数据处理系统中,一种方法,包括:
在所述多个寄存器环境内的第一寄存器环境中操作,所述第一寄存器环境具有相应的环境控制信息,其中,在所述第一寄存器环境中的操作包括:
访问所述第一寄存器环境的第一部分;
基于所述第一寄存器环境的相应的环境控制信息,有选择地访问对应于所述第一寄存器环境的第二部分的第二寄存器环境的一部分。
8.权利要求7的方法,其中,所述环境控制信息包括使能字段,其中,当声明所述使能字段时,所述方法包括访问对应于所述第一寄存器环境的所述第二部分的所述第二寄存器环境的所述部分。
9.权利要求7的方法,还包括:
接收环境选择器;
基于所述环境选择器,在所述第二寄存器环境中操作,所述第二寄存器环境具有相应的环境控制信息;和
基于所述第二寄存器环境的相应的控制信息,有选择地访问对应于所述第二寄存器环境的第二部分的第三寄存器环境的一部分。
10.一种数据处理系统(10),包括:
多个寄存器环境(34、35、36),其中每个寄存器环境包括具有替换寄存器环境字段和映射字段的相应的环境控制寄存器;和
处理装置(12),用于有选择地访问所述多个寄存器环境内的一部分替换寄存器环境,而不是访问所述多个寄存器环境内的当前寄存器环境的对应部分,其中,所述一部分替换寄存器环境是由对应于当前寄存器环境的环境控制寄存器中的映射字段定义的,所述替换寄存器环境是由对应于当前寄存器环境的环境控制寄存器中的替换寄存器环境字段定义的。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/159,386 | 2002-05-31 | ||
US10/159,386 US7117346B2 (en) | 2002-05-31 | 2002-05-31 | Data processing system having multiple register contexts and method therefor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1856770A true CN1856770A (zh) | 2006-11-01 |
CN100472453C CN100472453C (zh) | 2009-03-25 |
Family
ID=29582888
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB038126249A Expired - Fee Related CN100472453C (zh) | 2002-05-31 | 2003-05-07 | 具有多寄存器上下文的数据处理系统及其方法 |
Country Status (8)
Country | Link |
---|---|
US (1) | US7117346B2 (zh) |
EP (1) | EP1573444A2 (zh) |
JP (1) | JP4409427B2 (zh) |
KR (1) | KR100989215B1 (zh) |
CN (1) | CN100472453C (zh) |
AU (1) | AU2003225300A1 (zh) |
TW (1) | TWI323847B (zh) |
WO (1) | WO2003102723A2 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103314338A (zh) * | 2011-01-03 | 2013-09-18 | 飞思卡尔半导体公司 | 集成电路装置以及实施数据条件否定的方法 |
CN103842959A (zh) * | 2011-10-03 | 2014-06-04 | 国际商业机器公司 | 在计算机系统中维持操作数活性信息 |
CN107548488A (zh) * | 2015-04-30 | 2018-01-05 | 密克罗奇普技术公司 | 具有dsp引擎及增强上下文切换能力的中央处理单元 |
CN110928574A (zh) * | 2019-11-20 | 2020-03-27 | 深圳市汇顶科技股份有限公司 | 微控制器、中断处理芯片、设备及中断处理方法 |
Families Citing this family (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040098568A1 (en) * | 2002-11-18 | 2004-05-20 | Nguyen Hung T. | Processor having a unified register file with multipurpose registers for storing address and data register values, and associated register mapping method |
US7631307B2 (en) * | 2003-12-05 | 2009-12-08 | Intel Corporation | User-programmable low-overhead multithreading |
US7401206B2 (en) * | 2004-06-30 | 2008-07-15 | Sun Microsystems, Inc. | Apparatus and method for fine-grained multithreading in a multipipelined processor core |
US7516311B2 (en) * | 2005-01-27 | 2009-04-07 | Innovasic, Inc. | Deterministic microcontroller context arrangement |
US7562207B2 (en) * | 2005-01-27 | 2009-07-14 | Innovasic, Inc. | Deterministic microcontroller with context manager |
KR100728899B1 (ko) * | 2005-10-27 | 2007-06-15 | 한국과학기술원 | 복수의 레지스터 집합과 하드웨어 작업 관리자를 가진고성능 멀티쓰레드 임베디드 프로세서 |
US7590774B2 (en) * | 2005-12-01 | 2009-09-15 | Kabushiki Kaisha Toshiba | Method and system for efficient context swapping |
WO2007143278A2 (en) | 2006-04-12 | 2007-12-13 | Soft Machines, Inc. | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
CN101627365B (zh) | 2006-11-14 | 2017-03-29 | 索夫特机械公司 | 多线程架构 |
WO2009022371A1 (ja) * | 2007-08-16 | 2009-02-19 | Netcleus Systems Corporation | タスク処理装置 |
WO2011048442A1 (en) * | 2009-10-22 | 2011-04-28 | Freescale Semiconductor, Inc. | Integrated circuits and methods for debugging |
KR101685247B1 (ko) | 2010-09-17 | 2016-12-09 | 소프트 머신즈, 인크. | 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측 |
US9766893B2 (en) | 2011-03-25 | 2017-09-19 | Intel Corporation | Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines |
KR101826121B1 (ko) | 2011-03-25 | 2018-02-06 | 인텔 코포레이션 | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트 |
EP2689330B1 (en) | 2011-03-25 | 2022-12-21 | Intel Corporation | Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines |
WO2012131437A1 (en) * | 2011-03-30 | 2012-10-04 | Freescale Semiconductor, Inc. | Integrated circuit device and method for enabling cross-context access |
EP2710481B1 (en) | 2011-05-20 | 2021-02-17 | Intel Corporation | Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines |
US9442772B2 (en) | 2011-05-20 | 2016-09-13 | Soft Machines Inc. | Global and local interconnect structure comprising routing matrix to support the execution of instruction sequences by a plurality of engines |
EP2783280B1 (en) | 2011-11-22 | 2019-09-11 | Intel Corporation | An accelerated code optimizer for a multiengine microprocessor |
US20150039859A1 (en) | 2011-11-22 | 2015-02-05 | Soft Machines, Inc. | Microprocessor accelerated code optimizer |
WO2013099414A1 (ja) | 2011-12-26 | 2013-07-04 | インターナショナル・ビジネス・マシーンズ・コーポレーション | レジスタ・マッピング方法 |
WO2014108747A1 (en) * | 2013-01-10 | 2014-07-17 | Freescale Semiconductor, Inc. | Integrated circuit processor and method of operating a integrated circuit processor |
EP2972836B1 (en) | 2013-03-15 | 2022-11-09 | Intel Corporation | A method for emulating a guest centralized flag architecture by using a native distributed flag architecture |
KR101708591B1 (ko) | 2013-03-15 | 2017-02-20 | 소프트 머신즈, 인크. | 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법 |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
WO2014150991A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
WO2014150971A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for dependency broadcasting through a block organized source view data structure |
WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
US10031770B2 (en) * | 2014-04-30 | 2018-07-24 | Intel Corporation | System and method of delayed context switching in processor registers |
US9996353B2 (en) | 2015-02-26 | 2018-06-12 | International Business Machines Corporation | Universal history buffer to support multiple register types |
US9971604B2 (en) | 2015-02-26 | 2018-05-15 | International Business Machines Corporation | History buffer for multiple-field registers |
US10067766B2 (en) * | 2015-02-26 | 2018-09-04 | International Business Machines Corporation | History buffer with hybrid entry support for multiple-field registers |
JP2017037370A (ja) | 2015-08-06 | 2017-02-16 | 富士通株式会社 | 計算機、プロセス制御方法およびプロセス制御プログラム |
GB2577729C (en) * | 2018-10-04 | 2021-10-27 | Advanced Risc Mach Ltd | Processor with Register Bank having Banked Versions of a Register each Associated with an Operating State of the Processor |
US11663010B2 (en) * | 2021-03-08 | 2023-05-30 | Unisys Corporation | System and method for securely debugging across multiple execution contexts |
US11816486B2 (en) | 2022-01-18 | 2023-11-14 | Nxp B.V. | Efficient inter-thread communication between hardware processing threads of a hardware multithreaded processor by selective aliasing of register blocks |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5142677A (en) | 1989-05-04 | 1992-08-25 | Texas Instruments Incorporated | Context switching devices, systems and methods |
JPH04242433A (ja) * | 1991-01-17 | 1992-08-31 | Nec Corp | マイクロプロセッサ |
US5386563A (en) * | 1992-10-13 | 1995-01-31 | Advanced Risc Machines Limited | Register substitution during exception processing |
GB2281986B (en) * | 1993-09-15 | 1997-08-06 | Advanced Risc Mach Ltd | Data processing reset |
US6029242A (en) | 1995-08-16 | 2000-02-22 | Sharp Electronics Corporation | Data processing system using a shared register bank and a plurality of processors |
US5701508A (en) | 1995-12-19 | 1997-12-23 | Intel Corporation | Executing different instructions that cause different data type operations to be performed on single logical register file |
US5812868A (en) | 1996-09-16 | 1998-09-22 | Motorola Inc. | Method and apparatus for selecting a register file in a data processing system |
US6145049A (en) | 1997-12-29 | 2000-11-07 | Stmicroelectronics, Inc. | Method and apparatus for providing fast switching between floating point and multimedia instructions using any combination of a first register file set and a second register file set |
US6154832A (en) | 1998-12-04 | 2000-11-28 | Advanced Micro Devices, Inc. | Processor employing multiple register sets to eliminate interrupts |
WO2000079394A1 (en) | 1999-06-21 | 2000-12-28 | Bops Incorporated | Methods and apparatus for providing manifold array (manarray) program context switch with array reconfiguration control |
EP1247195A4 (en) | 1999-12-22 | 2005-01-05 | Ubicom Inc | SYSTEM AND METHOD FOR MULTITHREADING WORKING ON COMMAND LEVEL IN AN EMBEDDED PROCESSOR WITH ZERO-TIME CONTEXT SWITCHING |
-
2002
- 2002-05-31 US US10/159,386 patent/US7117346B2/en not_active Expired - Lifetime
-
2003
- 2003-05-07 AU AU2003225300A patent/AU2003225300A1/en not_active Abandoned
- 2003-05-07 CN CNB038126249A patent/CN100472453C/zh not_active Expired - Fee Related
- 2003-05-07 WO PCT/US2003/014215 patent/WO2003102723A2/en active Search and Examination
- 2003-05-07 JP JP2004509742A patent/JP4409427B2/ja not_active Expired - Fee Related
- 2003-05-07 KR KR1020047019511A patent/KR100989215B1/ko not_active IP Right Cessation
- 2003-05-07 EP EP03722022A patent/EP1573444A2/en not_active Withdrawn
- 2003-05-27 TW TW092114269A patent/TWI323847B/zh not_active IP Right Cessation
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103314338A (zh) * | 2011-01-03 | 2013-09-18 | 飞思卡尔半导体公司 | 集成电路装置以及实施数据条件否定的方法 |
CN103314338B (zh) * | 2011-01-03 | 2016-02-10 | 飞思卡尔半导体公司 | 集成电路装置以及实施数据条件否定的方法 |
CN103842959A (zh) * | 2011-10-03 | 2014-06-04 | 国际商业机器公司 | 在计算机系统中维持操作数活性信息 |
CN103842959B (zh) * | 2011-10-03 | 2017-05-03 | 国际商业机器公司 | 在计算机系统中维持操作数活性信息 |
US10061588B2 (en) | 2011-10-03 | 2018-08-28 | International Business Machines Corporation | Tracking operand liveness information in a computer system and performing function based on the liveness information |
US10078515B2 (en) | 2011-10-03 | 2018-09-18 | International Business Machines Corporation | Tracking operand liveness information in a computer system and performing function based on the liveness information |
CN107548488A (zh) * | 2015-04-30 | 2018-01-05 | 密克罗奇普技术公司 | 具有dsp引擎及增强上下文切换能力的中央处理单元 |
CN107548488B (zh) * | 2015-04-30 | 2021-09-03 | 密克罗奇普技术公司 | 具有dsp引擎及增强上下文切换能力的中央处理单元 |
CN110928574A (zh) * | 2019-11-20 | 2020-03-27 | 深圳市汇顶科技股份有限公司 | 微控制器、中断处理芯片、设备及中断处理方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20050010508A (ko) | 2005-01-27 |
CN100472453C (zh) | 2009-03-25 |
KR100989215B1 (ko) | 2010-10-20 |
US20030226001A1 (en) | 2003-12-04 |
JP4409427B2 (ja) | 2010-02-03 |
WO2003102723A3 (en) | 2006-04-06 |
JP2006502470A (ja) | 2006-01-19 |
US7117346B2 (en) | 2006-10-03 |
EP1573444A2 (en) | 2005-09-14 |
AU2003225300A1 (en) | 2003-12-19 |
TWI323847B (en) | 2010-04-21 |
TW200401195A (en) | 2004-01-16 |
AU2003225300A8 (en) | 2003-12-19 |
WO2003102723A2 (en) | 2003-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100472453C (zh) | 具有多寄存器上下文的数据处理系统及其方法 | |
US6986025B2 (en) | Conditional execution per lane | |
US8521997B2 (en) | Conditional execution with multiple destination stores | |
CN100390729C (zh) | 利用规格字段指令编码的处理器 | |
US5577217A (en) | Method and apparatus for a branch target buffer with shared branch pattern tables for associated branch predictions | |
US6408382B1 (en) | Methods and apparatus for abbreviated instruction sets adaptable to configurable processor architecture | |
EP0565849A2 (en) | A method and system for synchronizing threads within a process | |
CN1290003C (zh) | 使处理器与协处理器接口的方法和设备 | |
JP2004185637A (ja) | 複数型レジスタ・セットを採用したriscマイクロプロセッサ・アーキテクチャ | |
US20240220258A1 (en) | Stream data unit with multiple head registers | |
CN1702773A (zh) | 可编程并行查找存储器 | |
US20050081021A1 (en) | Automatic register backup/restore system and method | |
CN1662904A (zh) | 具有级联simd结构的数字信号处理器 | |
EP1760580B1 (en) | Processing operation information transfer control system and method | |
WO1996038782A2 (en) | Apparatus and method for efficiently determining addresses for misaligned data stored in memory | |
CN1809819A (zh) | 选择替换用高速缓冲存储器路的方法与装置 | |
EP0363174A2 (en) | Branch on bit processing | |
US6886159B2 (en) | Computer system, virtual machine, runtime representation of object, storage media and program transmission apparatus | |
US8285975B2 (en) | Register file with separate registers for compiler code and low level code | |
EP1208427B1 (en) | A processor architecture | |
EP0543032A1 (en) | Expanded memory addressing scheme | |
US12019561B2 (en) | Pseudo-first in, first out (FIFO) tag line replacement | |
US20030200419A1 (en) | Non-copy shared stack and register file device and dual language processor structure using the same | |
JPH0256029A (ja) | 汎用レジスタ切換方式 | |
Styer | Pipelining and superscalar processors |
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 |
Address after: Texas in the United States Patentee after: NXP America Co Ltd Address before: Texas in the United States Patentee before: Fisical Semiconductor Inc. |
|
CP01 | Change in the name or title of a patent holder | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090325 Termination date: 20210507 |
|
CF01 | Termination of patent right due to non-payment of annual fee |