CN101770357B - 减少处理器中的指令冲突 - Google Patents
减少处理器中的指令冲突 Download PDFInfo
- Publication number
- CN101770357B CN101770357B CN200810191060.0A CN200810191060A CN101770357B CN 101770357 B CN101770357 B CN 101770357B CN 200810191060 A CN200810191060 A CN 200810191060A CN 101770357 B CN101770357 B CN 101770357B
- Authority
- CN
- China
- Prior art keywords
- instruction
- technology
- selection
- functional unit
- select
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 24
- 238000005516 engineering process Methods 0.000 claims description 138
- 230000004044 response Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 14
- 230000000052 comparative effect Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- CNQCVBJFEGMYDW-UHFFFAOYSA-N lawrencium atom Chemical compound [Lr] CNQCVBJFEGMYDW-UHFFFAOYSA-N 0.000 description 2
- 101100524346 Xenopus laevis req-a gene Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
一种用于从发布队列中选择用于在多个功能单元执行的指令同时减少指令冲突的机会的技术实施例。处理器中每一功能单元可以包括从发布队列中选择具体指令用于执行的选择逻辑电路。为了避免指令冲突,功能单元可以具有可以从指令队列中选择两个指令的选择逻辑电路:一个指令是根据第一选择技术选择的,一个指令是根据第二选择技术选择的。然后,通过对由第一选择技术选择的指令和由另一功能单元的选择逻辑电路选择的指令进行比较,如果由于由第一选择技术选择的指令与在不同功能单元处选择的指令相同而存在指令冲突,那么代替地使用由第二技术选择的指令。
Description
技术领域
本发明涉及超标量计算机,更特别地,本发明涉及可以从指令发布队列中选择指令以在多个功能单元处执行的方法和系统。
背景技术
在计算机体系结构中,超标量计算机,也就是以下计算机,其具有多个处理部件,这些部件在一起可以在每一时钟周期执行一个以上的指令,该计算机可以用于计算密集的应用。通常,超标量计算机将使用中央处理单元(CPU),其包括多个执行资源,诸如一个或多个功能单元,用于同时执行多个指令。功能单元的示例可以包括算数逻辑单元、比特移位器或者乘法器。与另外可能利用单个功能单元一次执行一个指令相比,利用多个功能单元同时执行多个指令可以允许整个CPU的较快的吞吐量。
就具有多个功能单元的CPU而言,每一功能单元可以与指令选择逻辑电路相关联,该指令选择逻辑电路从指令队列中逻辑地选择要执行的指令。
然而,可能碰巧用于两个不同功能单元的选择逻辑在同一周期也就是同一时间选择相同的指令用于执行。这种情形被称为指令冲突,并且浪费计算时间和工作量。因为同时执行同一指令的多个功能单元可能引起数据错误或者其他的问题,处理器通常禁止这样同时执行指令。所以,当指令冲突出现时,处理器选择其中一个功能单元来执行该指令,并且使得试图执行该指令的所有其他功能单元改为执行“空操作指令”(NOP),该“空操作指令”实际上是一种通常用于无有用目的的等待状态。
发明内容
本发明提供了一种处理器,包括:第一指令选择逻辑电路,其可操作以将第一选择的指令传送到第一功能单元;以及第二指令选择逻辑电路,其可操作以当且仅当第二选择的指令不同于该第一选择的指令时,将该第二选择的指令传送到第二功能单元。
本发明还提供了一种计算机可读存储介质,具有计算机可执行指令以可操作用于:在发布队列处存储指令;根据第一指令选择技术选择在第一功能单元处执行的指令;根据第一指令选择技术选择在第二功能单元处执行的指令;确定用于在该第一功能单元处执行的所选指令与用于在该第二功能单元处执行的所选指令是相同的指令;以及响应于此,根据第二指令选择技术选择不同的指令以在该第二功能单元处执行。
本发明还提供了一种在处理器中执行指令的方法,包括:在指令发布队列中存储指令;使用第一指令选择技术以从该指令队列中选择指令用于在第一功能单元处执行;使用该第一指令选择技术选择指令用于在第二功能单元处执行,但是如果在该第二功能单元处选择的指令与在该第一功能单元处选择的指令相同,那么使用第二指令选择技术选择指令用于在该第二功能单元处执行;以及执行所选择的指令。
本发明还提供了一种在处理器中执行指令的方法,包括:在指令发布队列中存储指令;使用第一指令选择技术以从该指令发布队列中选择指令用于在第一功能单元处执行;使用该第一指令选择技术选择指令用于在第二功能单元处执行,并且使用第二指令选择技术选择指令用于在第二功能单元处执行;以及在该第二功能单元处,如果由该第一指令选择技术选择的指令与用于在第一功能单元处执行的所选择的指令相同,那么执行由该第二指令选择技术选择的指令。
本发明还提供了一种系统,包括:处理器和耦合到该处理器的集成电路,其中所述处理器包括:第一指令选择逻辑电路,其可操作以将第一选择的指令传送到第一功能单元;第二指令选择逻辑电路,其可操作以当且仅当该第二选择的指令与该第一选择的指令不同时,将第二选择的指令传送到第二功能单元;以及耦合到该第一和第二指令选择逻辑电路的指令发布队列。
附图说明
结合附图参考以下详细描述,使得可以较容易地明白在此公开的主题的实施例。
图1是根据在此公开的主题的实施例,当利用多个功能单元执行指令时,可操作以减少指令冲突的处理器的图示。
图2是使用基于位置的选择技术从指令队列中选择指令以在功能单元处执行的系统图示。
图3是使用先进先出(oldest first)选择技术以从指令队列中选择指令以在功能单元中执行的系统图示。
图4是当从指令队列中选择指令以由两个或多个功能单元执行时,用于防止指令冲突的另外的选择逻辑的图示。
图5是根据在此公开的主题的实施例,包括以下选择逻辑的处理器的图示,该选择逻辑用于从发布队列中选择指令以在一个功能单元处执行,其中该选择逻辑可以减少功能单元响应于指令冲突而执行空操作指令的机会。
图6是根据在此公开的主题的实施例,用于选择指令以同时在多个功能单元处执行的方法的流程图。
图7是根据在此公开的主题的实施例,包括图5的处理器的计算系统的图示。
具体实施方式
提出以下的讨论以使得本领域技术人员能够进行和运用在此公开的主题。在不脱离在此公开的主题的精神和范围的情况下,可以将在此公开的一般原理应用到除了以上那些详细描述之外的实施例和应用。该公开内容不限于所示的实施例,而是赋予与在此所公开的或讨论的原理和特征相一致的最宽的范围。
作为一种概述,根据在此公开的主题形成的方法和系统可以从指令发布队列中选择指令以在多个功能单元处执行,同时减少指令冲突的机会,其中当一个以上功能单元试图执行指令发布队列中相同的指令时,指令冲突可能导致执行NOP指令。在一实施例中,系统中的每一功能单元可以包括指令选择逻辑电路,其从指令发布队列中选择具体的指令用于执行。例如,根据具体的选择技术,例如如以下所述的先进的指令先出技术、基于队列中指令的位置/顺序的技术等等,可以实现每一指令选择逻辑电路。为了避免导致执行NOP指令的指令冲突,一个或多个功能单元可以具有可以从指令发布队列中选择两个指令的指令选择逻辑电路:一个指令是根据第一选择技术选择的,一个指令是根据第二选择技术选择的。然后,将由例如第一指令选择技术所选择的指令与另一功能单元的指令选择逻辑电路所选择的指令进行比较。如果两个指令不同,那么将不会出现冲突并且可以在相应的功能单元中执行每一个选择的指令。然而,在比较之后,如果这两个指令被识别为是相同的指令,那么可以由第二功能单元执行在第二功能单元处由第二指令选择技术选择的第二指令以避免所识别的指令冲突,并由此避免由第二功能单元执行NOP指令。以下详细描述这些和其他的方面。
图1是根据在此公开的主题的实施例的处理器100的图示,该处理器100当同时在多个功能单元中执行指令时,可操作以减少指令冲突。一般来说,例如,处理器100可以对来自/去往指令源诸如功能单元190a-190d(尽管示出了四个功能单元,但是处理器100可以具有少于或多于四个的功能单元)的指令流进行控制。作为处理器100一部分的执行控制发送单元103可以将指令发送到发布级101和执行级102。为了有效地分布指令以由各种执行资源(例如功能单元190a-190d)执行,指令可以在发布级101排队直到准备好由执行级102执行。在执行之后,将每一执行过的指令的结果返回到处理器100的执行控制接收单元195。
在发布级101内,指令载入器104可以接收和分类指令,并且将分类过的指令载入指令发布队列110。指令发布队列110用作一种缓冲器,其有效地将执行控制发送单元103与功能单元190a-190d(也就是执行级102)解耦合。在一实施例中,指令发布队列110可以保持准备好执行的32个指令。指令发布队列110内每一存储位置(未在图1中示出)可以认为是指令分布队列110中的相应位置,并且可以保持将被执行的指令,而不管指令的大小或性质。当执行一个(或多个)指令时,在指令发布队列110中的其上指令刚被执行的每一具体位置中产生相应的“空位”。例如,如果四个功能单元190a-190d执行来自发布队列110的四个指令,则现在在指令被执行之前最近所存储的地方存在四个空位(也就是指令发布队列110中空的存储位置)。
指令载入器104通常包括以下逻辑,即确定在一个或多个指令被执行之后哪些指令被发送以填充到各种空位中。在一个实施例中,剩余指令中的合适指令可以移位到左边以填充一个或多个空位(使用上述示例,留下最右边四个空位置)。然后使来自指令载入器104的接下来的一个或多个指令填充右边的一个或多个空位。作为替换,可以向右边移位或者指令发布队列110中剩余的指令根本不移位并且简单地使来自指令载入器104的下一指令填充空位。针对以下图2的实施例,更详细地描述用于填装指令发布队列110和填充位置空位的技术。
在执行周期期间,每一功能单元190a-190d可以从发布队列110中选择具体的指令用于执行。为了产生具体的选择,每一功能单元190a-190d可以包括选择逻辑191a-191d,其用于确定来自指令队列110中的哪一指令将开始执行。选择逻辑191a-191d根据对于每一功能单元190a-190d唯一的选择技术来选择具体的指令。该选择技术可以以以下逻辑实现,即确定功能单元是否能够实际执行特定的指令。例如,简单的加法功能单元仅可操作用于执行加法和减法指令,而乘法器功能单元能够执行加法和减法指令以及更为复杂的乘法指令。
此外,如果指令选择逻辑191确定相应的功能单元能够执行指令发布队列110中一个以上的指令,那么指令选择逻辑191也选择这些指令中的哪些指令要被执行。例如,指令发布队列110中可能有两个加法指令准备执行,因此指令选择逻辑191选择一个加法指令而不是另一加法指令用于执行。以下结合图2-图5来讨论选择逻辑191如何选择一个指令而不是另一指令。
如以上所讨论的那样,在同一时钟周期期间,当两个功能单元190的指令选择逻辑191每个都选择相同的指令用于执行时,产生指令冲突。然而,期望在每一指令周期期间以多个功能单元190的每一功能单元执行指令的时候,处理器100避免指令冲突。也就是,期望在不引起任一功能单元190a-190d执行NOP指令的情况下避免冲突。随着单个处理器中功能单元数目的增加,这变得越加重要了。
根据在此公开的各种实施例,可以有用于从指令发布队列110中选择指令用于由功能单元190执行的一种或多种选择技术。如以下所述,图2示出了一种使用基于位置选择技术的处理器的实施例,图3示出了一种使用先进先出选择技术的处理器的实施例,图4示出了另外一种逻辑,其利用基于优先权的技术以防止指令冲突,但是所采用的方式消耗了不希望的执行周期数目,以及图5示出了使用选择技术组合的处理器的实施例。在随后的整个描述中,仅为清楚和说明的目的,相同的部件使用相同的参考数字。
图2是根据基于位置选择技术从指令发布队列110中选择指令以在功能单元190a执行的指令选择逻辑191a的实施例的示图。尽管所使用的参考数字涉及第一功能单元190a和其相关联的指令选择逻辑191a,但是以下的描述可以应用到任一功能单元190a-190d及其相应的指令选择逻辑电路191a-191d。
选择逻辑191a可以实施基于位置的选择技术,其根据指令发布队列110内的指令的位置(例如从一到三十二的位置)从指令发布队列110中选择下一可用指令以准备执行。通过使用一系列级联的判定器单元(例如判定器单元230a,230h和240a)来实施这种选择技术,所述级联的判定器单元以以下段落所讨论的最左分级方式来选择指令。
例如,利用三十二个指令来填装发布队列110,这些指令以“一”处于最右位置并且“三十二”处于最左位置的方式被放置在从一到三十二的位置上。在该实施例中,从左到右载入指令,以至于在执行指令期间形成空位之后,指令从右向左进行移位。例如,在初始化时,来自指令载入器(图2未示出)的第一个三十二个指令从左到右进行载入(也就是,第一最高优先权指令被载入到三十二的位置,第二最高优先权指令被载入到三十一的位置,等等)。随着指令被执行,通过向左移位剩余的指令来填充空位。例如,如果在位置六一指令被执行,那么处于位置七到位置三十二的指令保持相同的位置,并且位置一到位置五的指令向左移位,以至于处于位置五的指令移位到位置六,处于位置四的指令移位到位置五等等。位置一从指令载入器104(图1)接收新的指令。
指令发布队列110中每一位置(一到三十二)可以耦合到第一判定器单元级230处一个判定器单元的两个逻辑信号线,即请求线和许可线。第一判定器单元级230中的每一判定器单元(仅示出了第一230a和最后230h)可以经由成组的请求/许可线而耦合到指令发布队列110内的四个指令位置。例如,第一判定器单元级230的判定器单元230a被示出具有四个请求位(req32,req31,req30和req29)(以及四个相关联的许可位grant32,grant31,grant30和grant29)。这些组可以唯一地耦合到一个指令发布队列110位置。例如,位置三十二可以耦合到判定器单元230a的req32和grant32并且位置一可以耦合到判定器单元230h的req1和grant1。
第一判定器单元级230中每一判定器单元也可以包括可以耦合到第二判定器单元级240的使能(enable)线231a和任意请求(any-request)线232a。第二判定器单元级240与第一判定器单元级230相似之处在于:第二级240中的每一判定器单元(在该示例中,有两个,但仅示出了第二级别240的第一判定器单元240a)也可以具有四个单元位置,每一单元位置具有成组的请求/许可线(以相似的方式注释)。这样,第一组可以耦合到第一判定器单元230a的使能线231a和任意请求线232a。最后,可以以相似的方式将根级判定器单元250耦合到每一第二级240判定器单元。
当准备好执行指令发布队列110中的指令时,与具体位置相关联的逻辑(未详细示出)可以设置其请求线。第一级中的每一判定器单元可以通过被设置的最左请求线到其任意请求线。接着,每一第二级判定器单元通过其最左请求线到其相应的任意请求线。在根级,同样通过最左请求线到功能单元190,如果功能单元190能够执行该指令,那么该功能单元190发布许可信号。如果发布了许可信号,那么该许可信号通过根据被设置请求线的模式的判定器级而向回传送。然后,使用图2中省略的电路,选择逻辑191a将与许可信号相关联的指令传送到功能单元190a以执行。
在该方式中,指令发布队列110内最左位置上准备执行的指令具有随后被执行的优先级。当指令被执行时,指令发布队列110中每一指令向左边移位以填充刚被执行的指令所留下的空位。
利用该基于位置的选择技术,能够理解如果两个功能单元(例如图1中的功能单元190a和190b)能够执行特定的指令并且具有相同的指令选择逻辑(例如,基于位置的选择逻辑191a和191b),那么会经常出现每一功能单元选择相同指令用于执行的情况,所以导致指令冲突。当然,如以上所述的方案是有问题的,因为当相同指令执行两次用于非有用目的时(并且可能导致错误)要求至少一个功能单元(“失败的”功能单元)执行NOP指令,而另一功能单元(“获胜的”功能单元)执行该指令,所以用于执行不同指令的执行机会被浪费。
图3是图1的选择逻辑191b的实施例图示,其根据先进的指令先出的选择技术以从指令发布队列110中选择一指令用于在功能单元190b处执行。在该选择技术中,每一指令也可以包括包含“年龄数据”的数据字段,也就是,与该指令处于指令发布队列110多长时间有关的数据。在一示例中,每一指令可以包括四位年龄字段,其指示指令处于指令发布队列110中的执行周期的数目。如果在第一执行周期,没有选择一指令用于执行,那么年龄字段中第一位被设置为一。相似的,如果在第二执行周期,没有选择该指令用于执行,那么将年龄字段中第二位设置为一等等。简而言之,准备被执行的具有最大年龄字段值的指令具有高于其他指令的优先级。所述先进先出选择技术以以下讨论的选择逻辑191b来实现。
在该选择逻辑中,发布队列110中每一指令的年龄字段的第一位A4可以耦合到第一OR门310,也耦合到第一二至一多路复用器311的输入。如果该第一位A4被设置为一,那么多路复用器311将该信号传送到第一AND门312的输入以及第二多路复用器321的第二输入。如果没有其他年龄字段被设置为一,那么该信号经由每一多路复用器321、331和341传播以变成对于相关指令的选择信号。也就是说,因为不存在其他更老的指令(也就是,第二位A3、第三位A2和第四位A1都被设置为零),所以年龄字段的第一年龄字段位被设置为一的第一可用指令将被选择用于执行。
然而,如果另一指令具有其中第二位被设置(指示该指令是较老的)的年龄字段,那么第一AND门312的输出被设置为一并且与该指令相关联的选择信号经由每一多路复用器而进行传播,因为第二多路复用器321通过第二OR门320的输出而被设置。再次地,如果其第三和第四年龄字段位被设置为一的指令存在,那么包含第三和第四OR门330和340以及第三和第四AND门332和342的输出的相似信号进行传播。在该方式中,具有最多年龄字段位设置的指令将在具有较少年龄字段位设置的指令之前被选择。
图3的选择逻辑191b示出了用于处理多达四位年龄字段的选择逻辑。设想其他的实施例,其中每一指令包括具有或多或少位的年龄字段,诸如具有与发布队列中所存在的位置相同数目的位。所以,指令发布队列中每一指令必然可以具有唯一的年龄字段值,以至于仅一指令可以被选择并且其将是最老的。然而,三十二位年龄字段太累赘,并且四位年龄字段是一种考虑速度的对精确性的适当折衷。尽管如此,仅具有四位年龄字段,指令冲突仍可能以一种无法接受的比率出现。
在以上相对于图2和图3描述的这两种指令选择技术中的每一种中,当具有相似或相同选择逻辑的两个功能单元选择相同的指令用于执行时,指令冲突以及它们所引起的问题仍将出现。
图4是当从指令队列中选择指令以在两个或多个功能单元处执行时,防止指令冲突的另外选择逻辑的图示。每一功能单元(图4中未示出)可以与以级联方式向功能单元提供优先权的各个判定器(以及如图2和图3所述的指令选择逻辑)相关联。在具有两个功能单元判定器410和420的图4的简单示例中,第一功能单元判定器410具有优先权。如果第一功能单元判定器410在req 0接收信号,相关联的第一功能单元可以在grant 0发布或不发布许可。如果grant0被设置以指示第一功能单元发布请求的许可,那么AND门421防止req 0信号传播到下一功能单元判定器。如果不存在许可信号,那么AND门421允许req 0信号被传送到第二判定器420用于可能的执行。按照所需要的功能单元的数目重复这种关系和逻辑,所以防止了指令冲突的任何可能性,因为一旦一功能单元许可请求以执行指令,那么判定器链,例如410和420,禁止任何其他功能单元执行该指令。
然而,图4的选择逻辑400中另外的级联逻辑由于另外的AND门而引入另外的时间延迟。例如对于操作在诸如例如2Ghz和以上的较高时钟频率的处理器而言,这样的选择用于执行的指令的另外的时间延迟被证实是太长的。
图5是根据在此公开主题的实施例的处理器500的图示,其包括用于从指令发布队列110选择指令以在功能单元191c和191d执行的指令选择逻辑电路。在该处理器500中,与第一功能单元190c相关联的指令选择逻辑191c可以根据第一选择技术510从指令发布队列110中选择指令。而且,与第二功能单元190d相关联的指令选择逻辑191d可以根据第一选择技术520或第二选择技术521从指令发布队列110中选择指令用于执行。另外,处理器500包括选择逻辑525,如果两个选择逻辑电路191c和191d通过相同的选择技术(例如选择技术510和选择技术520)而选择相同的指令,那么该选择逻辑525导致指令选择逻辑191d使用第二选择技术521以选择在第二功能单元190d处执行的指令。
在一实施例中,指令选择逻辑191c的选择技术510可以是以上结合图2而进行一般性描述的先进先出选择技术。另外,选择逻辑电路191d的第一选择技术520也可以是先进先出选择技术。指令选择逻辑电路191d的第二选择技术可以是如以上结合图3而进行一般性描述的基于位置的选择技术。设想其他的实施例,其中选择逻辑电路191d可以包括三个或更多选择技术。此外,尽管选择技术510和选择技术520在图5中都被示为是先进先出选择技术,但是实际上它们可以是彼此不同的选择技术。此外,在任意指令选择逻辑中可以使用与先进先出或基于位置的指令选择技术不同的其他指令选择技术。
在操作中,第一功能单元190c具有对由其指令选择逻辑电路191c根据其选择技术510而选择的指令进行执行的优先权。例如,在执行周期期间,指令选择逻辑电路191c可以从指令发布队列110中选择最老的指令(如以上所述的通过年龄字段所确定的那样)用于执行。这可以在不考虑与第二功能单元190d相关联的指令选择逻辑电路191d所产生的任意选择的情况下实现。
当通过第二功能单元190d选择指令用于执行时,指令选择逻辑电路191d中两个不同的选择技术520和521可以同时从指令发布队列110中选择指令。这些选择的指令中仅有一个指令被递送到第二功能单元190d用于执行。逻辑电路525用于一个或另一个的排他性选择。所以,如果第一指令选择技术520所选择的指令也与由指令选择技术510从第一功能单元指令选择逻辑电路191c中选择的指令相同,那么逻辑电路525导致使用由第二选择技术521所做的选择。
逻辑电路525利用具有两个输入的AND门530。第一输入可以耦合到第一比较器541的输出,该第一比较器可以比较由指令选择技术510和指令选择技术520所选择的指令。如果这些选择的指令相同,那么第一输入位被设置(也就是,设置在逻辑高电压信号处)。同样,AND门530的第二输入可以耦合到第二比较器540的输出,该第二比较器540比较由指令选择技术510和指令选择技术521选择的指令。如果这些选择的指令相同,那么第二输入位被设置。如果两个输入都被设置,那么AND门530的输出也就被设置了。该输出可以与以下所述的一对多路复用器531和532一起使用。
这些多路复用器中的第一多路复用器(也就是多路复用器532)可以根据其选择器输入而选择两个信号中的一个信号通过。第一多路复用器532的选择器输入可以耦合到第一比较器541的输出。多路复用器532的“0”输入可以耦合到根据第二指令选择技术520的逻辑并且“1”输入可以耦合到根据第三指令选择技术521的逻辑。如果第一比较器541的输出被设置(例如,第一指令选择技术510和第二指令选择技术520选择相同的指令),那么第一多路复用器532传送由第三指令选择技术521做出的指令选择。相似的是,如果第一比较器541的输出没有被设置(例如,第一指令选择技术510和第二指令选择技术520选择不同的指令),那么多路复用器532传送由第二指令选择技术520做出的指令选择。第一多路复用器532的输出然后被传送到第二多路复用器531的“0”输入。
可以使用第二多路复用器531,以使得由第三指令选择技术521做出的指令选择也不同于由第一指令选择技术510所选择的指令。第二多路复用器531的选择器输入可以耦合到第二比较器540的输出。所以,如果AND门530的输出没有被设置(也就是,由第一指令选择技术510和第三指令选择技术521选择的指令不同并且第二比较器540的输出没有被设置),那么可操作第二多路复用器531以传送由第一多路复用器532所传送的指令(例如,由第三指令选择技术521选择的指令)。然而,如果这些选择的指令相同(也就是,AND门530的输出被设置,指示了所有三个选择指令选择技术510、520和530选择了相同的指令),那么多路复用器将NOP指令传送到功能单元190d。
在其他的实施例中,代替经由多路复用器531的输入传送NOP,另一级联的多路复用器和比较器组(未示出)可以用来允许第四指令选择技术和相关逻辑(也没有示出)以将选择的指令传递到功能单元190d。设想指令选择技术逻辑的另外级,但在此不再讨论。
图6是根据在此公开主题的实施例,用于选择指令以在多个功能单元执行的方法流程图。由整个处理器控制机制进行的初始化,在步骤600开始该方法。在步骤602,加载具有指令的发布队列。在第一初始化期间,需要填装指令发布队列中的每一位置。随着指令发布队列中的指令被选择出来并且执行,用将被执行的新的指令来填充空位(如以上所述的那样)。
接下来,同时出现三个步骤。在步骤604,将在第一功能单元处被执行的指令经由与第一功能单元相关联的选择逻辑而被选择。相似的并且是同时的,在步骤606,与第二功能单元相关联的选择逻辑也根据第一指令选择技术选择指令。并且同时地,在步骤608,与第二功能单元相关联的选择逻辑也根据第二指令选择技术选择指令。
为防止指令冲突,进行以下的比较,即由与第一功能单元相关联的指令选择逻辑选择的指令与根据第一指令选择技术由与第二功能单元相关联的指令选择逻辑选择的指令之间的比较。然后,基于比较结果采取合适的动作以避免指令冲突。在判定步骤610,进行该比较。在步骤620,不管步骤620的比较结果,执行由第一功能单元选择的指令。如果步骤620的比较结果为与功能单元相关联的逻辑选择了不同的指令,那么在步骤622,第二功能单元也执行其选择的指令。然而,如果步骤620的比较结果为两个功能单元选择了相同的指令,那么执行根据第二指令选择技术在第二功能单元选择的指令(而不是第一选择的指令)。然后,在步骤650,该方法结束或者返回到步骤602以重复该方法。
在另一实施例中,附加的步骤(图6中未示出)可以对在第二功能单元处选择的第二指令与在第一功能单元处选择的第一指令进行比较。在这一方面上,如果第二选择的指令也与在第一功能单元处选择的指令相同,那么在第二功能单元处执行NOP指令或者利用第三指令选择技术以选择又一指令,该指令不同于根据第一和第二技术在第二功能单元处选择的指令。
在进一步的实施例中,可以扩展图6方法的概念以包括两个以上功能单元。例如,第三功能单元可以将其选择与第一功能单元、第二功能单元或两者进行比较。基于第三功能单元的比较结果,实现使用不同指令选择技术的相似判定。
图7是根据在此公开主题的实施例,包括图5的处理器500的计算系统790的图示。在该计算系统790中,处理器700可以包括一个以上处理实体(例如,流水线处理器等等),诸如流水线处理器711。在该实施例中,流水线处理器711可以包括如以上结合图5而一般性描述的多功能单元500。这些处理器710和711可以由处理器控制单元702控制。
所有这些部件可以共同耦合到系统总线740,该系统总线740可以提供到存储器750或协同处理器760的系统通信。本领域技术人员可以理解,图7所述的各种部件可以包括若干内部相关芯片或者是单个集成电路的一部分。
虽然在此讨论的主题可以容许各种修改和可选性结构,但是其某些图解实施例在附图中示出并且以上进行了详细的描述。而且,本领域技术人员将懂得,未在所有实施例中描述的各个方面,仍然可以存在于任意实施例中。然而,应该懂得,无意于将主题限制到所公开的具体形式,相反的是,本发明覆盖了落入公开主题的精神和范围内的所有的修改、可选性结构、以及等价物。
Claims (15)
1.一种处理器,包括:
指令发布队列,被配置为存储指令;
第一指令选择逻辑电路,其可操作以根据第一指令选择技术从所述指令发布队列选择第一指令并且将选择的所述第一指令传送到第一功能单元以用于执行;以及
第二指令选择逻辑电路,其可操作以根据不同于所述第一指令选择技术的第二指令选择技术从所述指令发布队列选择第二指令,并且当且仅当选择的所述第二指令不同于选择的所述第一指令时将选择的所述第二指令传送到第二功能单元以用于执行,
其中所述第二指令选择逻辑电路进一步包括:
用于根据第一选择技术选择指令的指令选择逻辑电路;
用于根据第二选择技术选择指令的指令选择逻辑电路;以及
用于将指令传送到所述第二功能单元用于执行的判定逻辑电路,
并且其中所述第二指令选择逻辑电路进一步包括以下指令选择逻辑电路,即用于根据第三选择技术选择指令,并且当且仅当根据所述第一选择技术和所述第二选择技术而选择的指令与由所述第一指令选择逻辑电路选择的指令相同时,传送根据所述第三选择技术选择的指令。
2.根据权利要求1所述的处理器,其中所述第一指令选择逻辑电路和所述第二指令选择逻辑电路被布置在单个集成电路芯片上。
3.根据权利要求1所述的处理器,其中所述第一指令选择技术包括以下之一:先进先出指令选择技术和基于位置的指令选择技术。
4.根据权利要求1所述的处理器,其中所述第一选择技术包括先进先出指令选择技术,所述第二选择技术包括基于位置的指令选择技术。
5.根据权利要求1所述的处理器,进一步包括当且仅当根据所述第一选择技术选择的指令与由第一指令选择逻辑电路选择的指令不同时传送根据所述第一选择技术选择的指令,否则传送根据所述第二选择技术选择的指令。
6.根据权利要求1所述的处理器,进一步包括选择逻辑电路,所述选择逻辑电路包括:
具有两个输入的AND门,其中如果由所述第一指令选择技术和所述第一选择技术选择的指令相同,则第一输入可操作地被设置,并且如果由所述第一指令选择技术和所述第二选择技术选择的指令相同,则第二输入可操作地被设置;
第一多路复用器,其可操作以如果由所述第一指令选择技术和所述第一选择技术选择的指令不同,则传送所述第一选择技术的指令选择,并且其可操作以如果由所述第一指令选择技术和所述第一选择技术选择的指令相同,则传送所述第二选择技术的指令选择;以及
第二多路复用器,其可操作以如果所述AND门的输出没有被设置,则传送由所述第一多路复用器传送的指令,并且其可操作以如果所述AND门的输出被设置,则传送NOP。
7.根据权利要求1所述的处理器,进一步包括:
耦合到所述指令发布队列并且可操作以从执行控制发送模块接收指令的指令载入器。
8.一种在处理器中执行指令的装置,包括:
用于在指令发布队列处存储指令的装置;
用于根据第一指令选择技术从所述指令发布队列选择在第一功能单元处执行的指令的装置;
用于根据所述第一指令选择技术从所述指令发布队列选择在第二功能单元处执行的指令的装置;
用于确定用于在所述第一功能单元处执行的所选指令与用于在所述第二功能单元处执行的所选指令是相同的指令的装置;以及
用于响应于此而根据不同于所述第一指令选择技术的第二指令选择技术从所述指令发布队列选择不同的指令以在所述第二功能单元处执行的装置。
9.一种在处理器中执行指令的方法,包括:
在指令发布队列中存储指令;
使用第一指令选择技术从所述指令发布队列中选择指令以用于在第一功能单元处执行;
使用所述第一指令选择技术从所述指令发布队列选择指令以用于在第二功能单元处执行,但是如果在所述第二功能单元处选择的指令与在所述第一功能单元处选择的指令相同,则使用不同于所述第一指令选择技术的第二指令选择技术选择指令以用于在所述第二功能单元处执行;以及
执行所选择的指令。
10.根据权利要求9所述的方法,进一步包括根据第一指令选择技术选择第一指令,所述第一指令选择技术基于读取与每一指令相关联的年龄字段并且选择具有最大年龄字段值的指令。
11.根据权利要求9所述的方法,进一步包括根据所述第二指令选择技术选择第二指令,所述第二指令选择技术基于所述指令发布队列中的位置。
12.根据权利要求9所述的方法,进一步包括使用所述第一指令选择技术在第三功能单元处选择指令,但是如果在所述第三功能单元处选择的所述指令与在所述第一功能单元或所述第二功能单元处选择的指令相同,则使用所述第二指令选择技术在所述第三功能单元处选择指令。
13.根据权利要求9所述的方法,进一步包括如果使用所述第二指令选择技术在所述第二功能单元处选择的指令与在所述第一功能单元处选择的指令相同,则使用第三指令选择技术在所述第二功能单元处选择指令。
14.根据权利要求9所述的方法,进一步包括:
在每一功能单元处执行每一所选择的指令;以及
将指令载入到所述指令发布队列以替代执行过的指令。
15.一种在处理器中执行指令的方法,包括:
在指令发布队列中存储指令;
使用第一指令选择技术以从所述指令发布队列中选择指令以用于在第一功能单元处执行;
使用所述第一指令选择技术从所述指令发布队列选择指令以用于在第二功能单元处执行,并且使用不同于所述第一指令选择技术的第二指令选择技术从所述指令发布队列选择指令以用于在第二功能单元处执行;以及
在所述第二功能单元处,如果由所述第一指令选择技术选择的指令与用于在第一功能单元处执行的所选择的指令相同,则执行由所述第二指令选择技术选择的指令。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810191060.0A CN101770357B (zh) | 2008-12-31 | 2008-12-31 | 减少处理器中的指令冲突 |
US12/631,098 US8521991B2 (en) | 2008-12-31 | 2009-12-04 | Reducing instruction collisions in a processor |
EP09180314.8A EP2207089B1 (en) | 2008-12-31 | 2009-12-22 | Reducing instruction collisions in a processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810191060.0A CN101770357B (zh) | 2008-12-31 | 2008-12-31 | 减少处理器中的指令冲突 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101770357A CN101770357A (zh) | 2010-07-07 |
CN101770357B true CN101770357B (zh) | 2014-10-22 |
Family
ID=42026421
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810191060.0A Active CN101770357B (zh) | 2008-12-31 | 2008-12-31 | 减少处理器中的指令冲突 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8521991B2 (zh) |
EP (1) | EP2207089B1 (zh) |
CN (1) | CN101770357B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9569222B2 (en) * | 2014-06-17 | 2017-02-14 | International Business Machines Corporation | Implementing out of order processor instruction issue queue |
CN106610816B (zh) * | 2016-12-29 | 2018-10-30 | 山东师范大学 | 一种risc-cpu中指令集之间冲突的规避方法及系统 |
US10120805B2 (en) * | 2017-01-18 | 2018-11-06 | Intel Corporation | Managing memory for secure enclaves |
US20210157638A1 (en) * | 2019-11-22 | 2021-05-27 | Huawei Technologies Co., Ltd. | Method and apparatus for functional unit assignment |
CN111857825A (zh) | 2020-07-20 | 2020-10-30 | 北京百度网讯科技有限公司 | 指令执行方法、装置、电子设备和计算机可读存储介质 |
US11327766B2 (en) * | 2020-07-31 | 2022-05-10 | International Business Machines Corporation | Instruction dispatch routing |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1936833A (zh) * | 2005-09-19 | 2007-03-28 | 威盛电子股份有限公司 | 选择可实质同时处理的多重线程的系统与方法 |
CN101154192A (zh) * | 2006-09-29 | 2008-04-02 | 国际商业机器公司 | 管理计算机存储器高速缓存中的访问冲突的方法和装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2908598B2 (ja) * | 1991-06-06 | 1999-06-21 | 松下電器産業株式会社 | 情報処理装置 |
KR100500002B1 (ko) * | 1996-08-27 | 2005-09-08 | 마츠시타 덴끼 산교 가부시키가이샤 | 복수의명령흐름을독립적으로처리하고,명령흐름단위로처리성능을유연하게제어하는멀티스레드프로세서 |
US6449710B1 (en) * | 1999-10-29 | 2002-09-10 | Stmicroelectronics, Inc. | Stitching parcels |
JP2008503827A (ja) * | 2004-06-25 | 2008-02-07 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 命令処理回路 |
US20060095732A1 (en) * | 2004-08-30 | 2006-05-04 | Tran Thang M | Processes, circuits, devices, and systems for scoreboard and other processor improvements |
US20070101332A1 (en) * | 2005-10-28 | 2007-05-03 | International Business Machines Corporation | Method and apparatus for resource-based thread allocation in a multiprocessor computer system |
US7484077B2 (en) * | 2005-11-10 | 2009-01-27 | Realtek Semiconductor Corp. | Skipping unnecessary instruction by multiplex selector using next instruction offset stride signal generated from instructions comparison results |
US7734897B2 (en) * | 2005-12-21 | 2010-06-08 | Arm Limited | Allocation of memory access operations to memory access capable pipelines in a superscalar data processing apparatus and method having a plurality of execution threads |
US7380104B2 (en) * | 2006-04-25 | 2008-05-27 | International Business Machines Corporation | Method and apparatus for back to back issue of dependent instructions in an out of order issue queue |
-
2008
- 2008-12-31 CN CN200810191060.0A patent/CN101770357B/zh active Active
-
2009
- 2009-12-04 US US12/631,098 patent/US8521991B2/en active Active
- 2009-12-22 EP EP09180314.8A patent/EP2207089B1/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1936833A (zh) * | 2005-09-19 | 2007-03-28 | 威盛电子股份有限公司 | 选择可实质同时处理的多重线程的系统与方法 |
CN101154192A (zh) * | 2006-09-29 | 2008-04-02 | 国际商业机器公司 | 管理计算机存储器高速缓存中的访问冲突的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US8521991B2 (en) | 2013-08-27 |
EP2207089A1 (en) | 2010-07-14 |
CN101770357A (zh) | 2010-07-07 |
EP2207089B1 (en) | 2014-08-27 |
US20100169616A1 (en) | 2010-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101770357B (zh) | 减少处理器中的指令冲突 | |
US11928512B2 (en) | Quiesce reconfigurable data processor | |
EP0096176B1 (en) | Method of logic simulation and logic simulation machine | |
CN100478871C (zh) | 从队列处理指令刷新的生存期计数器设计的系统和方法 | |
US20040136241A1 (en) | Pipeline accelerator for improved computing architecture and related system and method | |
CA2503617A1 (en) | Pipeline accelerator for improved computing architecture and related system and method | |
JPH0833875B2 (ja) | バス裁定システム | |
WO2004042562A2 (en) | Pipeline accelerator and related system and method | |
US7490219B2 (en) | Counter counts valid requests based on a judgment in a system having a plurality of pipeline processors | |
JP4743998B2 (ja) | 複数リソースアーキテクチャの管理システムと方法 | |
JPH06508704A (ja) | 非同期パイプラインにおける条件検出 | |
CN110603521B (zh) | 超线程处理器 | |
CN107403642A (zh) | 有源随机存取存储器 | |
US4432050A (en) | Data processing system write protection mechanism | |
US4245299A (en) | System providing adaptive response in information requesting unit | |
EP1025484A1 (en) | Autonomously cycling data processing architecture | |
EP4154102A1 (en) | Clearing register data | |
CN107204922B (zh) | 用于过滤事务的装置和方法 | |
US4217639A (en) | Logic for generating multiple clock pulses within a single clock cycle | |
CN101647002A (zh) | 多处理系统及方法 | |
US4472787A (en) | System for transferring words on a bus with capability to intermix first attempts and retrys | |
NL7905916A (nl) | Stelsel voor data-verwerking. | |
JPS59148952A (ja) | 優先順位回路 | |
US5241629A (en) | Method and apparatus for a high performance round robin distributed bus priority network | |
US20020120805A1 (en) | Method and apparatus for a dual mode PCI/PCI-X device |
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 |