连续微操作的结果复用_5

文档序号:9304413阅读:来源:国知局
微操作复用另一个通道内的前面微操作的结果。每一个通道还能够复用由同一通道内的前面微操作产生的结果。通道O和通道I增加/减少与表条目相关联的同一锁定计数器。因此,如果一个通道锁定由在该通道内正在执行的微操作使用的条目,则直到锁定被移除为止,另一个通道不能将该条目重新分配给新的微操作。
[0108]图14的装置300同样也包含比较逻辑310,该比较逻辑310用于允许结果在由处理通道O和处理通道I在同一周期内分别处理的微操作之间被共享。在每一个周期内,比较逻辑310比较输入到各自通道的微操作,来看他们是否将给出一样的结果(因为微操作是同样的或者他们能够互相转换)。如果结果将是一样的,则“同样(same)”信号315生效,并且其将会沿通道I的流水线4-1向下传播。如果同样信号生效,则通道I的与门26-1清除当前微操作的使能信号,导致通道I内包含当前微操作的流水线阶段被时钟关闭。同样信号315和相应的微操作一起沿流水线向下传播。结果路径320被提供用于发送由通道O产生的结果到通道I内的多路复用器330。当同样信号315是高位时,多路复用器330从结果路径320选择输出结果,并且输出该输出结果以用于通道I。当同样信号315是低位时,则由多路控制器330输出流水线4-1的正常输出。同样,通道I的或门28-1接收使能信号10-1,通道I的击中信号和由比较逻辑310产生的同样信号315作为输入。如果这些信号中的任何一个是高位,则通道I有效信号生效,以指示该通道的输出是有效结果。
[0109]这个机制允许当两个通道正在(并行)执行给出相同结果的微操作时,由一个通道产生的结果将被另一个通道复用。这是十分有用的,因为在一些系统中,数据处理装置内的两个或更多通道很可能在同一时间处理同样的操作。例如,如图14所示的装置可能会被用于单指令多线程(single instruct1n multiple threading,SIMT)的环境,其中不同的线程在锁定步骤执行同样的程序。所有线程使用共同的程序计数器,其为作为整体的线程组而增加。即使一个线程不需要执行由程序计数器指示的当前指令(例如,对于当前线程,前面的转移指令(branch instruct1n)转移到由程序计数器指示的地址,而其他的线程没有转移,这样仍然需要由程序计数器指示的当前指令),直到程序计数器为作为整体的组增加为止,其他的线程才能移至下一个指令。每一个线程可使用由各自线程单独指定的操作数运行。这对例如图形处理应用是有利的,在图形处理应用中,图像的每个像素需要使用具有不同数据的同一操作集来处理。在这种情况下,线程可被分配给每个像素,并且不同的处理通道可为不同的像素执行处理。邻近的像素相当可能会共享同样的操作数,这样可能需要一样的结果。与邻近像素相应的线程可被分配至处理装置300的各个通道,这样不同的通道可能同时执行同样的操作,这样其中一个结果可以被另一个复用来节省能量。在包含两个处理通道的ALU内已经测量过,可能有多达55%的概率两个通道正在执行同样的操作。同样,发现两个通道装置内前面的和后面的操作之间的结果复用的概率在40%左右。因此,将用于在前面的和后面的操作之间共享结果的备忘表24(时间上的备忘)与用于在由不同通道在同一时间执行的操作之间共享结果的比较逻辑310 (空间上的备忘)相结合,提供了较大的能量节省。
[0110]如图14所示的装置的另一个应用可能是每个通道处理具有多个元素的操作数的各自的数据元素(例如,向量处理,Sn?或者MMD)。同样,很有可能同一操作数内的一些元素将包含相同的数据,这样在通道之间结果可被复用。
[0111]尽管在图14内没有说明,通过添加如图6中的包括预测逻辑90和历史缓存区92的预先的流水线阶段,对表24的查找和/或分配的过滤可以如图6的示例一样被提供。同样,图14内的装置可以用图9的简单结果检测逻辑或者图8的转换逻辑来扩展。
[0112]在图14的示例中,备忘表24的查找与由比较逻辑310提供的比较并行进行来提高性能。如果对于通道I在表24内有一个击中,则导致流水线被时钟关闭,并且不管由比较逻辑310比较的微操作是否给出一样的结果,使能信号都将失效。但是,在其他的实施例中,可能在查找备忘表24前面的周期内执行比较逻辑310的比较。这种情况下,如果比较逻辑310发现通道O和通道I的输入寄存器内的微操作给出一样的结果,则通道I的备忘表查找可被省略来节省能量。即使通道I的表查找被省略,而且通道O因为在备忘表24中击中,因而也没有产生实际结果,如果必要,第二发送路径可能会被提供用于发送从通道O的备忘表24-2中读取的结果至通道I的输出,来允许通道I输出正确的结果。
[0113]图15显示了数据处理装置400的另一个示例,其中有两个处理通道。在这种情况下,每一个通道都具有如图11和13所示的比较逻辑150,用于比较同一通道内的连续的微操作,来看它们是否给出相同的结果。每一个通道以如图11所示的方式运行,如果在一个流水线阶段内的微操作给出了与由该通道处理的最近有效微操作一样的结果,则时钟关闭该流水线阶段,并且如果mem0_Valid信号生效,则从输出寄存器16-0和16_1中输出之前的结果。但是,附加比较逻辑310被提供用来比较在同一周期内输入到各通道的微操作,来看它们是否给出一样的结果。如果是,则同样信号315生效,并且其沿通道I的流水线4-1向下传播,从而导致通道I的使能信号10-1失效(例如,如图14所示的,使用与门来使使能信号失效,为了简洁,在图15没有显示)。当同样信号315到达通道I的流水线结束处时,这指示该微操作的结果在结果路径320上可用,这样多路复用器330选择该结果。当同样信号生效,或门28-1生效有效信号,以指示输出结果有效。否则,通道O和通道I如图11所示工作。因此,在该示例中,存在在同一通道内的连续操作之间的时间上的备忘(如图11所示),也存在由两个通道处理的并行操作之间的空间上的备忘(如图14所示)。
[0114]在图14和图15中,如果在一个或多个周期内没有有效微操作输入到其中一个通道,则另一个通道接收到的有效微操作将通过比较逻辑210与由另一个通道处理的最近有效微操作比较,因为直到接收到新的有效微操作为止,每个通道的输入寄存器将持续保存最近的有效微操作。因此,尽管如图15所示的连续的比较逻辑150没有被提供,但是仍然会有一定程度的图14中的“时间上的备忘” 一一在一个周期中,只有一个通道包含有效微操作,则在该通道内的有效微操作和另一个通道内的之前的有效微操作之间将会有一个比较。
[0115]同样,可以提供多通道处理的装置,其中每个通道都如图13所示,具有备忘表24和连续的比较逻辑150。另外,比较逻辑310,发送路径320和多路复用器330可以以图14和图15同样的方式被添加,来允许由两个通道接收到的并行操作之间的结果复用。
[0116]装置也可以仅通过比较逻辑310,发送路径320和多路复用器330,而不提供备忘表24和连续的比较逻辑150的方式,来共享结果。
[0117]图14和图15显示了示例,其中当由不同的通道并行处理的操作给出一样的结果时,备忘被应用来实现能量节省,同样可以使用这种技术,通过阻止微操作被传递至一个通道来提升性能,其中,微操作的结果可从其他通道得到,这样另一个微操作可以被更早地处理。
[0118]图16显示了使用包括多处理通道的装置处理数据的方法。如步骤500所示,通道O以与图3 (对于图14的实施例)或者图12 (对于图15的实施例)同样的方式处理微操作。但是,当一个结果是由通道O的流水线产生时,则在步骤510处,该结果被传递至通道
1
[0119]另一方面,在步骤520处,对于通道I,比较逻辑310检查通道I的输入寄存器接收到的当前微操作是否会给出与通道O的输入寄存器识别到的当前微操作或者最近有效微操作一样的结果。如果不同,则方法进行到步骤530,通道I以与图3或图12同样的方式处理微操作。
[0120]如果在通道I内的当前微操作会给出与通道O内的当前或者最近的有效微操作一样的结果,则进行到步骤540,同样信号315生效,在步骤542处,这导致通道I的使能信号10-1被无效。在步骤544处,当前微操作被沿流水线向下传递,在步骤546处,无效的使能信号时钟关闭包含有当前微操作的阶段。在步骤548处,微操作到达流水线的结束处,并且由通道O产生的结果通过结果路径320被接收。在步骤550处,由来自通道O的结果被通道I作为当前微操作的结果输出。在步骤552处,生效的同样信号导致通道I的有效信号生效。该方法然后返回至开始处来处理各通道的下一个微操作。
[0121]因此,该方法允许通道中的一个,在其结果与由其他通道产生的结果相同时,节省會ti。
[0122]虽然图14和图15显示了有两个处理通道的示例,但是还可以提供多于两个处理通道的实施例。在这种情况下,可以在多于两个通道之间共享备忘表24,以便每个通道更新表,并且可以查找由这些通道中任一个放置在表中的结果。同样地,比较逻辑310可扩展来比较由每对通道各自处理的微操作。但是,随着通道数量变大,实现用于在不同通道之间共享结果和在每个通道内比较微操作的电路变得更昂贵。最后,实现比较和结果发送的区域和能量的消耗可能会超过由复用结果获得的节省,因此对特定通道限制微操作的比较和结果的复用可能会更有效。
[0123]例如,如图17所示,四个处理通道可以被分成两个子集,每个包含两个通道。只有在同一子集内的通道的微操作会被比较逻辑310比较。发送路径320和多路复用器330可以仅发送同一子集内的通道的结果。同样地,如果有备忘表24,则其只会被同一通道子集更新和查找结果(单独的备忘表24会被提供给其他子集)。因此,虽然由给定通道处理的微操作会给出与在不同通道子集内处理的另一个微操作一样的结果,但是结果不会被复用,相反,微操作将以正常方式被处理。实际上当通道被分成子集时,在同一子集内结果复用的数目通常要比跨不同子集的复用要大(假设线程以反映由线程代表的像素的空间位置或反映一个操作数内的数据元素的排列的方式被分配给通道)。因此,通过限制对通道子集的比较,可以提供整体更多能量和区域有效的实施例。
[0124]上述描述的技术可以在任何处理系统内使用,并且对很可能产生相同结果的不同微操作特别有用。本发明可能有用的非限制性示例的非详尽的清单如下所示:
[0125]1)CPU-(冯诺依曼,哈佛,变形,多线程的)
[0126]-指令解码
[0127]-浮点ALU
[0128]。在超标量体系结构核心内,空间上潜在的复用
[0129]。在多线程核心内,更多的同样的连续的操作能够被发现(尤其是线程处于锁定步骤)
[0130]示例单元:乘法器,除法器,加法器/减法器,倒数,点积,平方根,使用迭代算法实现(牛顿-拉普森)
[0131]-整数ALU(除法器,乘法器,其他类型的固定逻辑)
[0132]。更长的流水线获益更多
[0133]-SIMD单元(时间上和空间上(跨通道)潜在的复用)
[0134]-CISC微码获取/产生
[0135]。复杂的同样的指令的转换可以被加速或仅关闭。“模板”微指令序列的部分复用
[0136]-如下描述的uTLB,MMU,
[0137]2)DSP/GPU (冯诺依曼,哈佛,变形,多线程的
当前第5页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1