选择可实质同时处理的多重线程的系统与方法

文档序号:6562279阅读:178来源:国知局
专利名称:选择可实质同时处理的多重线程的系统与方法
技术领域
本发明涉及一种计算机处理器,特别涉及一种可平行处理的处理器。
背景技术
如图形处理之类的软件应用程序复杂度日益增加,导致对计算能力的需求亦日渐增多。为了应付上述需求,计算器硬件便更加精巧。例如多发指令(multiple-issue)处理器可在单一时钟中发出多个指令以提供更快处理速度,其计算加速的来源在于其具备平行处理的能力。
尽管处理器硬件的技术不断演进,但仍持续存在一股更高速处理器硬件的需求以应付日渐复杂的软件应用程序。

发明内容
本发明涉及多发指令处理器,其可实质地同时处理多个指令。在某些实施例中,本发明所揭露的多发指令处理器包含多个可同时执行指令的执行单元与一来源选择器。
此来源选择器判定上述的多个执行单元是否自不同来源读取指令。若此来源选择器判定每个执行单元是自不同来源读取其指令,则来自各不同来源的指令将提供至其所相对应的执行单元以供实质地同时处理。
另一实施例则包含一目的地选择器,其可判定上述的多个执行单元是否写入至不同目的地。若此目的地选择器判定每个执行单元是写入至不同目的地,则来自各不同来源的指令将提供至其所相对应的执行单元以供实质地同时处理。
另一实施例则包含一来源选择器与一目的地选择器。当每个执行单元的来源与目的地皆为相异时,始提供来自各不同来源的指令至其所相对应的执行单元。


图1是适用于一图形处理器的一处理环境实施例的一方块示意图;图2是图1示出的计算核心内部各组件的一方块示意图;图3是图2标出的执行单元其中一实施例的一方块示意图;图4是根据本发明一实施例的一选择器的一方块示意图;图5是根据本发明一实施例的判定两线程间是否发生冲突的一流程示意图;图6是根据本发明一实施例的判定两线程间是否发生冲突的一流程示意图;以及图7是根据本发明一实施例的判定两线程间是否发生冲突的一流程示意图。
附图符号说明105 计算核心110 纹理滤波器单元115 像素包装器120 命令串流处理器125 执行单元堆控制单元130 写回单元135 纹理地址产生器140 三角形设定单元205 内存存取单元210 第二阶快取225 执行单元输出230 执行单元堆235 执行单元输入240 执行单元245 内存接口选择器305 执行单元310 浮点运算单元315 定点数运算单元320 载/写单元355 执行单元
405 存储体410 存储体415 存储体420 存储体425 异或门430 屏蔽435 屏蔽输出440 偶数存储体445 奇数存储体505-525本发明一实施例的步骤605-625本发明一实施例的步骤705-735本发明一实施例的步骤具体实施方式
本发明在此所探讨的方向为一种处理器。为了能彻底地了解本发明,将在下列的描述中提出详尽的步骤及其组成。显然地,本发明的施行并未限定在处理器的技艺者所熟习的特殊细节。另一方面,众所周知的组成或步骤并未描述在细节中,以避免造成本发明不必要的限制。本发明的较佳实施例会详细描述如下,然而除了这些详细描述之外,本发明还可以广泛地施行在其它的实施例中,且本发明的范围不受限定,其以所附的专利范围为准。
多发指令(multiple-issue)处理器提供较快的处理速度,这种处理器可同时执行多个线程。每个线程相关的不同指令可自一个以上的来源缓存器读入。当指令执行过后,其结果被写入一个以上的目的地缓存器。
通常,上述的多发指令处理器具有多个处理单元以同时处理各线程,据此比无法平行处理的处理器提供更高的效率。在此所揭露的实施例用于描述增进处理器效率的方法。
将于其后详述的本发明所提供的系统与方法,是将具有互不冲突(non-conflicting)指令的线程进行配对以便同时执行。本发明所指涉的互不冲突指令是指自不同来源缓存器/存储体(bank)所读入与/或写入不同目的地缓存器/存储体的指令。以下的范例仅用于说明而非限定本发明。
此范例包含第零线程自第零存储体与第四存储体读取指令并且写回第零存储体;第二线程自第零存储体与第二存储体读取指令并且写回第零存储体;以及第六线程自第二存储体与第六存储体读取指令并且写回第二存储体。
在上述范例中,第零线程与第二线程之间具有一来源缓存器冲突,因为它们都自第零存储体读取指令。此外,第零线程与第二线程之间也具有一目的地缓存器冲突,由于它们都写回第零存储体。据此,第零线程与第二线程是相互冲突的线程。
同样地,第二线程与第六线程之间也具有一来源缓存器冲突,因为它们都自第二存储体读取指令。故第二线程与第六线程是相互冲突的线程。
然而,第零线程与第六线程之间并无冲突,因为第零线程的来源缓存器与第六线程的来源缓存器不同,而且因为第零线程的目的地缓存器也不同于第六线程的目的地缓存器。
在上述范例中,若一执行单元已选择执行第零线程,则另一执行单元于同时应选择互不冲突的第六线程。若无法找到与第零线程互不冲突的任何线程时,则仅能单独发送属于第零线程的指令。
上述关于线程的选择/仲裁(arbitration)动作是由一个以上的选择器(arbitrator)来进行,其用于判定线程之间是否具有来源或目的地冲突。上述判定选择的过程将在下面详述。
参考图1所示,其是适用于一图形处理器的一处理环境实施例的一方块示意图。图1并无示出影像处理所需的全部组件,然而熟悉此项技艺者应可自图1所示的组件了解此类图形处理器的一般功能与架构。上述处理环境的中心为可执行多种指令的一计算核心105。在多发指令处理器中的计算核心105可在单一时钟中发出多个指令。
如图1所示,此图形处理器的相关组件包含上述的计算核心105、一纹理滤波器(texture filter)单元110、一像素包装器(pixel packer)115、一命令串流(command stream)处理器120、一写回单元130与一纹理地址产生器135。图1亦示出一执行单元堆(pool)控制单元125,其更包含一顶点(vertex)快取与/或一串流快取。此计算核心105可自其它组件接收输入并且输出至其它不同组件。
例如在图1中,上述的纹理滤波器单元110通过输入点A与B提供纹素(texel)数据至计算核心105。在某些实施例中,所提供的纹素数据是512位长度的数据,其可对应至底下所定义的数据结构。
上述的像素包装器115通过输入点C与D提供同样为512位长度的像素阴影(shader)至计算核心105。此外,像素包装器115要求上述的执行单元堆控制单元125给予像素阴影工作(task),此控制单元125将分配一执行单元代码与一线程代码至此像素包装器115。由于像素包装器与纹理滤波器已为人所习知,故以下不再进行详细讨论。虽然图1示出的像素与纹素封包是512位长度的数据封包,然而在其它实施例中可具有不同封包长度,其封包大小取决于此图形处理器所欲达到的性能特征。
上述的命令串流处理器120提供三角形顶点索引值至执行单元堆控制单元125。在图1所示的实施例中,上述的索引值为256位长度。此执行单元堆控制单元125自串流快取的输入中组合顶点阴影(vertex shader),并且通过输入点E将数据送入上述的计算核心105。此执行单元堆控制单元125亦组合几何阴影(geometry shader),并且通过通过输入点F将数据送入上述的计算核心105。再者,执行单元堆控制单元125尚控制执行单元输入235与执行单元输出225。换言之,此执行单元堆控制单元125控制此计算核心105的输入与输出数据流。
在处理过程中,此计算核心105通过输出点J1与J2将像素阴影提供至上述的写回单元130。上述的像素阴影包含习知技艺中的红/绿/蓝/阿法值信息。在此实施例的数据结构中,上述的像素阴影输出是两个长度512位的数据串流。
如同上述的像素阴影输出,计算核心105通过输出点K1与K2将包含UVRQ信息的纹理坐标输出至纹理地址产生器135。此纹理地址产生器135送出一纹理要求(T# Req)至上述计算核心105的输入点X,而计算核心105通过输出点W将纹理数据(T# data)传送至纹理地址产生器135。由于纹理地址产生器135与写回单元130已为人所习知,故以下将省略关于这两个组件的详细讨论。同样地,虽然图1所示的红/绿/蓝/阿法值与UVRQ坐标值是512位长度,然而其它实施例可适用其它长度的参数值。在图1标出的实施例中,总线被分为两个512位的信道(channel),而每个信道可保留128位的红/绿/蓝/阿法颜色值与128位的四个像素纹理坐标。
上述的执行单元堆控制单元125与计算核心105互相移转512位长度的顶点快取溢散(spill)数据。此外,计算核心105尚通过输出点M1与M2将两个512位长度的顶点快取写入数据传送至纹理地址产生器135以进行额外的处理。
在描述完上述计算核心105对外的数据交换情况后,请参考图2所示,其是此计算核心105内部各组件的一方块示意图。如图2所示,此计算核心105包含一内存存取单元205以通过一内存接口选择器245连接一第二阶快取210。
此第二阶快取210通过输入点G自图1标出的执行单元堆控制单元125接收顶点快取溢散数据,并且由输出点H提供顶点快取溢散数据至执行单元堆控制单元125。再者,此第二阶快取210通过输入点X自图1标出的纹理地址产生器135接收纹理要求(T# Req),并且利用输出点W送出纹理数据(T#data)至上述的纹理地址产生器135以响应所接收的纹理要求。
上述的内存接口选择器245提供一控制接口至局部影像内存,亦即框架缓冲区(frame buffer)。图上并未示出的一总线接口单元提供一接口至系统,例如PCI Express总线。上述的内存接口选择器245与总线接口单元提供内存与第二阶快取210之间的一沟通接口。在某些实施例中,此第二阶快取210通过上述的内存存取单元205以连接至上述的内存接口选择器245与总线接口单元。此内存存取单元205将来自第二阶快取210的虚拟内存地址转译成物理内存地址。
此内存接口选择器245为此第二阶快取210提供读取与写入的内存存取功能、提取指令/常数/数据/纹理、直接存取内存、提供暂时储存存取的索引、缓存器溢散(register spill)以及顶点快取内容溢散等等功能。
上述的计算核心105亦包含一执行单元堆230,其包含多个执行单元240a至240h(在此通称标号为240)。每个执行单元240包含一执行单元控制信号与未示于图中的局部内存。每个执行单元240可在单一时钟中处理多个指令。据此,上述的执行单元堆230在其颠峰运转情况下可同时实质处理多个线程。上述的执行单元240以及其实质平行处理的能力将在以下详述。图2中示出八个执行单元240,标示为第零执行单元至第七执行单元,应注意本发明并不限定执行单元的数目为八个,其它实施例可应用或多或少个执行单元。
此计算核心105更包含一执行单元输入235与一执行单元输出225,其分别用于提供此执行单元堆230的输入与输出。此执行单元输入235与一执行单元输出225可为交错网络(crossbar)、总线或其它习知的连结网络。
上述的执行单元输入235自图1标出的执行单元堆控制单元125接收顶点阴影输入(输入点E)与几何阴影输入(输入点F),并且将此信息提供至此执行单元堆230的各个执行单元240。此外,上述的执行单元输入235自输入点C与D接收像素阴影以及自输入点A与B接收纹素封包,并且将此信息转送至此执行单元堆230的各个执行单元240。再者,此执行单元输入235亦自上述的第二阶快取210接收信息,并且将其转送至此执行单元堆230。
在图2示出的实施例的一执行单元输出225被分为一偶数输出225a与一奇数输出225b。与上述执行单元输入235类似,此执行单元输出225可为交错网络(crossbar)、总线或其它习知的连结网络。上述的偶数输出225a负责处理偶数号执行单元240a、240c、240e与240g的输出;同时,上述的偶数输出225b是负责处理偶数号执行单元240b、240d、240f与240h的输出。总合而言,上述两个执行单元输出225a与225b接收如红/绿/蓝/阿法值与UVRQ坐标值等信息的执行单元堆230的输出。上述两种与其它输出可直接输出至第二阶快取210,或通过输出点J1与J2输出至图1标出的写回单元130,或通过输出点K1与K2输出至图1标出的纹理地址产生器135。
请参考图3所示,其是图2标出的执行单元240其中之一实施例的一方块示意图。图3的实施例示出一执行单元240,其具有四个浮点运算单元310a至310d、两个定点数运算单元315a与315b与两个载/写单元320a与320b。据此,上述的执行单元240可同时在单一时钟中执行四个浮点运算指令。在某些实施例中,此执行单元240可逻辑性地一分为二,故此执行单元的第一半部305处理所谓「偶数」号线程,而此执行单元的另一半部355处理所谓「奇数」号线程。至于「偶数」号与「奇数」号线程,将在以下详细讨论。在此实施例中,此执行单元的每一半部305与355可实质同时处理两个浮点运算线程。
在图1至图3所示的架构中,可得知处理过程中获得最高效率的时候是发生在当所有的执行单元240皆同时执行指令之时。换言之,当所有执行单元240以最大容量执行时,此执行单元堆230的总处理量会是最大。据此,为达到上述的最大处理能量,则应提供可在所有处理单元(如上述的浮点运算单元310a至310d、定点数运算单元315a与315b)同时执行的多个指令。然而在某些时候,由于发生资源冲突而令上述各处理单元无法同时处理指令。本发明将在图4中详细讨论上述的资源冲突的情况,其将对执行单元的输出与输入作一简短介绍以清楚地解释何以会造成一资源冲突的情况。
上述执行单元240的输入与输出是分别自一个以上的缓存器文件读取与写入数据。在某些实施例中,此缓存器文件可为具有八个存储体的缓存器文件,而每一个存储体可为具有一读取端口、一写入端口与一读写端口的128乘128位的缓存器文件。在一实施例中,各线程可被分类为「偶数」号与「奇数」号线程,而各缓存器存储体亦可分类为「偶数」号线程所专用以及「奇数」号线程专用。
在此实施例中的读取端口与写入端口是指令执行时,用于读写存取的执行单元数据路径。一线程控制器负责将不同线程的指令配对,并且确保这些已配对的指令不会对缓存器文件存储体造成读取或写入冲突。此外,程序编译器(compiler)则须负责在线程文本(context)中避免造成冲突。
执行单元输出入控制逻辑是使用上述的读写端口以自执行单元堆或其余模块加载线程初始输入数据以及写入线程最终输出数据。通过利用执行单元数据路径中不同的读取端口与写入端口以及输出入存取,线程输出入的加载/卸载以及线程的执行便可平行地同时进行。上述作法亦可避免执行单元数据数据路径与输出入要求之间不必要的选择,此种选择将大幅度地增加硬件的复杂度。上述的读写端口由执行单元的输出入所共享,在某些实施例中,写入动作的优先度要高于读取动作。
在前述缓存器的一架构中,其所对应的数据结构可为一具有1024位的快取线(line),其具有两个512位长度的数据单位(entry)。上述两个512位长度的数据单位可再各自切分为四个长度为128位的数据单元,每个数据单位可与128乘以128位的缓存器文件存储体相互配合。每个128位的数据单位包含一缓存器文件索引值与一线程识别码。在某些实施例中,上述的缓存器文件索引值可为最小位(LSB)之前八个位,而线程识别码可为接下来的五个位。据此,在某些实施例中,结合上述八个位的缓存器文件索引值与五个位的线程识别码将产生一个独特的十三位地址。每个数据单位所具有的十三位长度地址可对应至一特定线程与一相对应的缓存器文件。
由于每一个1024位长度的线具有两个512位长度的数据单元,亦称之为字(word)。每个字储存在四个存储体中,故利用上述缓存器文件索引值的前两个最小位(LSB)加入至现行线程的存储体位移(bank offset)以产生存储体选择码。上述的对应关系允许不同线程所使用的缓存器可共存于一缓存器文件中,以更有效率地利用内存。由于执行单元堆的资源监视器(resourcemonitor)负责追踪缓存器文件的内存使用情况,并且在执行单元堆安存储体一新工作的执行时程前先确保缓存器的齐备,因此当写入动作要求缓存器时,最好有空闲的线存在,据以减少或完全消除缓存器的使用权重复(over lap)的情况。
当加载数据进入缓存器文件时,此512位长度的输入数据将被加载四个不同存储体(第零存储体至第三存储体)以避免任何冲突。在此实施例中,除了数据本身与此512位的基地址外,做为缓存器文件索引值一部份的两位长度的一信道索引值亦被传送,以指明输入数据所加载的起始缓存器存储体。例如假定线程基底存储体位移(based bank offset)为0,若其起始信道索引值被指定为1,则自最小位起的头128位将被加载至第一存储体。接着,第二个128位则是第二存储体;第三个128位是第三存储体;而最后的128位则是第零存储体。
在某些实施例中,上述五位长度的线程识别码中的最小两位可用于产生一基底存储体位移值,据以随机产生每个线程的起始缓存器存储体位置。上述的随机机制可更减少任何产生冲突的机会。
在上述的数据结构中,可轻易地自数据结构本身分辨出来源缓存器与目的地缓存器。在此情况下,为同时发出多个指令,故希望寻找出没有于来源缓存器、目的地缓存器或同时于来源缓存器与目的地缓存器使用权重复的线程。上述目标可通过图4所示的一状态机器(state machine)达成,其是一选择器。
请参考图4所示,其是根据本发明一实施例的一选择器的一方块示意图,其中,上述的选择器用于判定两个不同线程之间是否具有任何来源缓存器存储体冲突。应注意的是,在某些实施例中,此选择器可为处于图1示出的计算核心105外部的一独立状态机器。无论此选择器的实际位置如何,此选择器的功能用于判定是否会产生一线程间的冲突,并且将任何关于冲突的信息送往相关的组件,致使互不冲突的线程可适当地置于数据路径上以供上述的执行单元240执行。在某些实施例中,当两线程的来源操作数与来源缓存器互相重复时,则会产生冲突。
如上所述的某些实施例中,数据本身已包含了一缓存器文件索引值与一线程识别码,其可用于指定来源与目的地缓存器。例如,若第零线程的地址位显示第零线程欲自一缓存器文件的第零存储体与第二存储体读取数据,而且第一线程的地址位显示第零线程欲自一缓存器文件的第二存储体与第六存储体读取数据;则可对上述地址位进行一异或(XOR)运算以判定在第零线程及第一线程之间具有一来源冲突。
取得上述缓存器文件索引值与线程识别码的位位置后,针对此地址位进行一异或(XOR)运算可用于判定是否会产生一来源冲突。据此,在图4所示的实施例中,包含一异或门425以自两个线程(亦即第零线程及第一线程)接收上述的地址位。这些地址位将进行异或运算。此异或门/功能方块425的输出被馈入一屏蔽(mask)430,其更输出一位串流435以指明冲突是否存在。当然,本发明亦可适用于其它非异或运算的布尔或逻辑运算以评估是否会发生冲突。
图4用于判定是否会发生来源冲突,而亦可使用一类似方式以判定是否会发生目的地冲突。应注意的是,利用多个选择器即可于单一时钟中同时比较许多个线程。在此情况下,当两个线程通过上述的选择器机制判定为互不冲突(来源与目的地)时,即可将此两线程置于数据路径以便同时执行。反之,若所有线程皆互有冲突时,则在某些实施例中,将会进行单一线程,直至发现互不冲突的线程为止。
以上揭露选择线程的系统,根据本发明的其它实施例亦揭露选择线程的方法。此种方法的几个实施例示于以下将要进行讨论的图5、6和7。
请参考图5所示,其是根据本发明一实施例的判定两线程间是否发生冲突的一流程示意图。如图5所示,在某些实施例中,此流程开始于步骤505,识别一第一线程的一个以上的来源操作数,以及步骤510,识别一第二线程的一个以上的来源操作数。接着在步骤515中比较已识别的第一线程的来源操作数与已识别的第二线程的来源操作数,以判断此两个线程的操作数间是否重复。若第一线程的来源操作数不同于第二线程的来源操作数,则进行步骤525,插入上述第一与第二线程的指令在一数据路径中以便进行实质同时运算。在某些实施例中,上述的实质同时运算是指在同一时钟中执行指令。反之,若第一线程的来源操作数与第二线程的来源操作数发生重复,则进行步骤520,亦即仅有单一个指令可进入数据路径执行。在某些实施例中,具有较高优先度的指令较低优先度的指令先进入数据路径。请注意的是,上述的指令优先度可利用线程的存在时间(age)、指令中的一优先度位(在某些实施例的数据结构中具有优先度位)或其它方法来决定。
应注意在图5所示的识别步骤505与510是顺序执行,然而在某些实施例中,此两识别步骤505与510是实质地同时进行。
请参考图6所示,其是根据本发明另一实施例的判定两线程间是否发生冲突的一流程示意图。图5是关于来源操作数的选择,而图6则关于目的地操作数的选择。
如图6所示,在某些实施例中,此流程开始于步骤605,识别一第一线程的一个以上的目的地操作数,以及步骤610,识别一第二线程的一个以上的目的地操作数。接着在步骤615中比较已识别的第一线程的目的地操作数与已识别的第二线程的目的地操作数,以判断此两个线程的操作数间是否重复。若第一线程的目的地操作数不同于第二线程的目的地操作数,则进行步骤625,在一数据路径中插入上述第一与第二线程的指令以便进行实质同时运算。在某些实施例中,上述的实质同时运算是指在同一时钟中执行指令。反之,若第一线程的目的地操作数与第二线程的目的地操作数发生重复,则进行步骤620,亦即仅有单一个指令可进入数据路径执行。在某些实施例中,具有较高优先度的指令较低优先度的指令先进入数据路径。
请参考图7所示,其是根据本发明另一实施例的判定两线程间是否发生冲突的一流程示意图。在图7所示的实施例中,仅当两线程之间既不发生来源冲突且又不发生目的地冲突时,始将两线程的指令置在数据路径中。同上所述,图7的流程开始于步骤705与715,同时识别两线程的来源操作数;以及在步骤710与720,同时识别两线程的目的地操作数。
当完成此两线程的识别步骤后,进行步骤725,判定此两线程之间是否会发生冲突。在某些实施例中,若来源操作数发生重复时,则此方法判定会发生冲突。在某些实施例中,若目的地操作数发生重复时,则此方法判定会发生冲突。此外,在某些实施例中,若来源操作数与目的地操作数同时发生重复时,则此方法判定会发生冲突。
无论如何,当判定会发生冲突时,则进行步骤730,仅有单一个指令可进入数据路径执行。反之,若判定不会发生冲突时,则在步骤735中,在一数据路径中插入此二线程的指令以便进行实质同时运算。
显然地,依照上面实施例中的描述,本发明可能有许多的修正与差异。因此需要在其附加的权利要求项的范围内加以理解,除了上述详细的描述外,本发明还可以广泛地在其它的实施例中施行。上述仅为本发明的较佳实施例而已,并非用以限定本发明的申请专利范围;凡其它未脱离本发明所揭示的精神下所完成的等效改变或修饰,均应包含在下述申请专利范围内。
本案要求下列的优先权在2005年9月19日提交的美国临时申请案第11/229,808号。
本申请所对应的美国申请案与以下待决美国专利申请有关,其与本发明同一日提交并具有共同受让人以及至少一个共同发明人。
序号提交日期 发明名称11/229,884 9/19/2005 Merging Entries in Processor Caches11/229,939 9/19/2005 Buffering Missed Requests in ProcessorCaches。
权利要求
1.一种处理指令的方法,包含识别一第一线程相关的一来源操作数;识别一第二线程相关的一来源操作数;识别该第一线程相关的一目的地操作数;识别该第二线程相关的一目的地操作数;判定该第一线程相关的来源操作数是否与该第二线程相关的来源操作数互相冲突;判定该第一线程相关的目的地操作数是否与该第二线程相关的目的地操作数互相冲突;以及当判定该第一线程与该第二线程的来源操作数与目的地操作数之间互不冲突时,实质地同时进行令该第一线程进入一第一执行单元;以及令该第二线程进入一第二执行单元。
2.根据权利要求1所述的处理指令的方法,其中,该识别该第一线程相关的来源操作数的步骤更包含识别一至三个来源操作数,以及其中,该识别该第二线程相关的来源操作数的步骤更包含识别一至三个来源操作数。
3.根据权利要求1所述的处理指令的方法,其中,该判定该第一线程相关的来源操作数是否与该第二线程相关的来源操作数互相冲突的步骤更包含判定该第一与第二线程相关的来源操作数是否指明其欲进行的运算尚包含下列可能变化之一自一执行单元的常数缓冲区进行一读取动作;自一执行单元的共同缓存器文件进行一读取动作;以及自一执行单元的纯量缓存器文件进行一读取动作。
4.根据权利要求1所述的处理指令的方法,其中,该判定该第一线程相关的目的地操作数是否与该第二线程相关的目的地操作数互相冲突的步骤更包含判定该第一与第二线程相关的目的地操作数是否指明其欲进行的运算尚包含下列可能变化之一自一执行单元的共同缓存器文件进行一写入动作;自一执行单元的纯量缓存器文件进行一写入动作;以及自一执行单元发预测缓存器文件进行一写入动作。
5.根据权利要求1所述的处理指令发方法,更包含检验指令执行一运算所需发执行单元是否齐备。
6.根据权利要求1所述的处理指令发方法,其中,实质地同时进行如下三个群组之一该前四个识别步骤;该前四个识别步骤与两个判定步骤;该两个判定步骤。
7.一种多发指令发处理器,包含一来源选择器以判定一第一来源是否异于一第二来源;一第一执行单元以自该第一来源进行读取动作并且对一第一目的地进行写入动作;以及一第二执行单元以自该第二来源进行读取动作并且对一第二目的地进行写入动作,以响应该来源选择器判定该第一来源异于该第二来源发情况。
8.根据权利要求7所述的多发指令发处理器,更包含判定该第一目的地是否异于该第二目的地发一判定装置。
9.根据权利要求8所述的多发指令发处理器,其中,该判定装置包含一逻辑异或运算装置。
10.根据权利要求7所述的多发指令的处理器,更包含一目的地选择器以判定一第一目的地是否异于一第二目的地。
11.根据权利要求10所述的多发指令的处理器,更包含当该第一目的地异于该第二目的地时,该第二执行单元始进行读取动作。
12.根据权利要求1所述的多发指令的处理器,其中,实质地同时进行如下群组的一的个别的判定动作该来源选择器与目的地选择器;该第一执行单元与第二执行单元。
13.根据权利要求12所述的多发指令的处理器,其中,该实质地同时进行包含在同一时钟中进行。
14.根据权利要求7所述的多发指令的处理器,其中,该第一执行单元与第二执行单元各自包含一浮点运算处理单元。
15.根据权利要求7所述的多发指令的处理器,更包含一缓存器文件,该缓存器文件更包含该第一来源;该第二来源;该第一目的地;以及该第二目的地。
16.一指令执行的方法,包含判定一第一线程相关的一来源是否异于一第二线程相关的一来源;以及实质地同时进行下列步骤读取该第一线程相关的一指令;以及读取该第二线程相关的一指令以响应当判定该第一线程相关的来源异于该第二线程相关的来源的情况。
17.根据权利要求16所述的指令执行的方法,更包含判定该第一线程相关的一目的地是否异于该第二线程相关的一目的地。
18.根据权利要求17所述的指令执行的方法,其中,该读取该第二线程相关的指令更响应当判定该第一线程相关的目的地异于该第二线程相关的目的地的情况。
19.根据权利要求17所述的指令执行的方法,其中,该判定来源与判定目的地的步骤是实质地同时进行。
全文摘要
本发明所揭露的处理器包含多个可同时执行指令的执行单元与一来源选择器。此来源选择器判定上述的多个执行单元是否自不同来源读取指令。若此来源选择器判定每个执行单元是自不同来源读取其指令,则来自各不同来源的指令将提供至其所相对应的执行单元以供实质地同时处理。
文档编号G06F9/38GK1936833SQ200610139888
公开日2007年3月28日 申请日期2006年9月19日 优先权日2005年9月19日
发明者焦阳, 陈义平, 陈文中 申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1