控制异步管线的级的操作速度的制作方法

文档序号:17123692发布日期:2019-03-16 00:05阅读:147来源:国知局
控制异步管线的级的操作速度的制作方法

本发明是在能源部(doe)授予的基本合同号de-ac52-07na27344、转包合同号b609201下在政府支持下进行的。政府在本发明中拥有某些权利。



背景技术:

相关技术的描述

处理系统通常实施包括用于处理指令的一系列级的管线架构。每个级执行对输入数据进行操作以产生输出数据的任务。由寄存器在所述级之间传送数据,所述寄存器可以实施为触发器或锁存器。所述级从输入寄存器存取输入数据并且将输出数据提供到输出寄存器。管线的级的输入寄存器可以接收由所述管线的较早的级提供到对应的输出寄存器的输出数据作为输入数据,并且所述级的所述输出寄存器可以是后续级的输入数据。管线中的级在一些情况下对多个输入数据集同时进行操作。举例来说,实施单指令多数据(simd)操作的管线架构可以同时执行相同的指令多输入数据集,所述指令多输入数据集称为“波”或“计算波”。波是由对应于不同的输入数据集的多个工作项目构成。工作项目的执行时间通常依据输入数据而变,并且因此每个波中的工作项目可以在不同时间完成。

附图说明

通过参考附图,可以更好地理解本公开,并且使其众多特征和优势对于本领域技术人员显而易见。在不同图式中使用相同的参考符号会指示类似或等同的项目。

图1是根据一些实施方案的包括异步管线的处理系统的框图。

图2是根据一些实施方案的异步管线的一部分的框图。

图3是根据一些实施方案的包括复制关键路径的异步管线的一部分的框图。

图4是根据一些实施方案的异步管线的一部分的框图。

图5是根据一些实施方案的在复制关键路径中实施中间完成状态检测的异步管线的一部分的框图。

图6是根据一些实施方案的实施中间完成状态检测的异步管线的一部分的框图。

图7是根据一些实施方案的实施并行处理的异步管线的一部分的框图。

图8是根据一些实施方案的用于修改异步管线中的级的操作速度的方法的流程图。

具体实施方式

执行管线的级是同步的,在那种情况下,使用相同的时钟信号对级之间的寄存器进行计时,或者所述寄存器是异步的,在那种情况下,管线的每个级是自定时的,使得不同的级可以与其他级独立地读取输入数据,执行指令,并且写入输出数据。在任一情况下,所述级以可变的等待时间完成它们的任务,所述可变的等待时间取决于由所述级执行的操作的类型、由所述级操作的数据以及由所述级操作的数据值的序列。比其他级更早地完成它们的任务的级在等待其他级完成时保持闲置,这降低了管线的总吞吐量并且浪费了闲置的级所消耗的静态功率。通常在同步管线的硬件的逻辑合成和物理布局期间基于跨越所述同步管线的所有级的关键路径的等待时间来调整所述同步管线的时序以试图使所述同步管线的操作频率最大化。然而,同步管线通常执行多种多样的操作,所述操作具有与在所述同步管线的设计期间所使用的关键路径的等待时间不同的等待时间。因此,所述同步管线的性能并非始终最佳或者如预期般高能效。

可以通过基于第一级的完成状态与异步管线中的至少一个其他(第二)级的完成状态的比较来修改所述异步管线的所述(第一)级的操作速度而提高异步管线的性能和能量效率。在一些实施方案中,修改所述异步管线的所述第一级的所述操作速度包括修改施加到所述第一级(或者其部分)的操作电压或者修改施加到所述第一级中的一个或多个驱动缓冲器的缓冲器驱动强度。举例来说,将第一级的完成状态设定为“完成”以指示所述第一级已经完成对输入数据的操作并且产生了其输出数据。同时,将输入数据提供到所述第一级的相邻级的完成状态以及从所述第一级接收输出数据的另一相邻级的完成状态都被设定为“处理”以指示它们尚未完成它们对它们的输入数据的操作。在那种情况下,可以减小所述第一级的缓冲器驱动强度或电压供应以在相邻级完成处理时节约所述第一级中的能量。对于另一示例,如果第一级的完成状态是“处理”,而将输入数据提供到所述第一级的相邻级的完成状态以及从所述第一级接收输出数据的另一相邻级的完成状态都是“完成”,那么可以增加所述第一级的缓冲器驱动强度或电压供应以加速所述第一级的处理,从而减小其等待时间并且减小所述第二级中的闲置时间。

可以通过响应于所述第一级和所述第二级起始计算波的执行而监测由所述第一级和所述第二级产生的输出信号来确定所述第一级和所述第二级的完成状态。在一些变化中,通过以下操作来确定所述第一级和所述第二级的完成状态:将输入信号施加到所述第一级和所述第二级中的复制关键路径,同时起始所述第一级和所述第二级中的计算波的执行,并且随后响应于检测到所述复制关键路径的输出处的输出信号而确定所述第一级和所述第二级完成。基于级的电路模拟来界定所述复制关键路径。在一些实施方案中,所述级的完成状态指示所述级或所述级的部分的所估计的完成时间。举例来说,可以使用查找表来确定所述第一级和所述第二级的完成状态,所述查找表基于指令类型(由指令操作码指示)和输入数据的特性来提供完成时间的估计。在其他实施方案中,基于监测级的逻辑云内部的信号或输出信号的活动性来确定所述级的完成状态。举例来说,如果来自级的所有输出信号在一段时间内保持不变,那么所述级可能已经完成了其任务。对于另一示例,如果级的逻辑云内部的预定位置处的一个或多个信号保持不变,那么所述级可能已经完成了其计算的特定百分比,例如,所述级可能已经完成了其操作的50%。

图1是根据一些实施方案的包括异步管线105的处理系统100的框图。如本文所使用,术语“异步管线”指示所述异步管线的级根据不与由处理系统100内的所述异步管线外部的实体使用的全局时钟或时序参考同步的时钟或时序参考进行操作。此外,所述异步管线内的个别级不一定彼此同步,并且在一些情况下能够根据它们的自身的内部时钟进行操作。所述异步管线中的级有时称为“自定时”级。如本文论述,异步管线的级的操作速度因此可以与所述异步管线中的其他级的操作速度独立地变化。

异步管线105包括多个级110、111、112、113、114,所述多个级在本文统称为“级110-114”。使用管线寄存器120、121、122、123、124、125(在本文统称为“寄存器120-125”)将数据存储在异步管线105中的各个点处,可以使用触发器、锁存器或其他存储装置来实施所述管线寄存器。在所说明的实施方案中,级110对存储在寄存器120中的输入数据执行逻辑操作,可以将所述寄存器实施为触发器。级110产生存储在寄存器121中的输出数据,可以将所述寄存器实施为锁存器。级111对存储在寄存器121中的输入数据执行乘法操作并且产生存储在寄存器122中的输出数据,可以将所述寄存器实施为锁存器。级112对存储在寄存器122中的输入数据执行加法操作并且产生存储在寄存器123中的输出数据,可以将所述寄存器实施为锁存器。级113对存储在寄存器123中的输入数据执行归一化操作并且产生存储在寄存器124中的输出数据,可以将所述寄存器实施为锁存器。级114对存储在寄存器124中的输入数据执行舍入操作并且产生存储在寄存器125中的输出数据,可以将所述寄存器实施为触发器。虽然在异步管线105中示出五个级和对应数目的管线寄存器,但异步管线105的一些实施方案包括执行相同或不同操作的更多或更少的级以及更多或更少的管线寄存器。

输入控制器130将时钟信号131和有效信号132提供到寄存器120和模块135。时钟信号131与在将数据提供到寄存器120的同步域中使用的外部时钟信号同步。模块135因此例如通过将信号从所述同步域转换为管线105的异步域来充当所述同步域与异步管线105之间的边界。模块135提供反馈133,所述反馈指示异步管线105是否准备好处理额外的数据。举例来说,反馈133可以指示逻辑110准备好处理额外的数据,输入控制器130随后将所述额外的数据计时到寄存器120中。模块140用于控制从异步管线105输出的信号。模块140的一些实施方案充当异步管线105的异步域与处理系统100内的同步域之间的边界。举例来说,模块140可以提供有效信号141以指示准备好将有效数据计时到寄存器125中。模块140和寄存器140还可以接收时钟信号145,所述时钟信号与在同步域中使用的外部时钟信号同步。

模块150、151、152(在本文统称为“模块150-152”)结合模块135、140进行操作以协调级110-114的操作。举例来说,模块150从级111接收指示级111的完成状态的完成状态信号155,并且从模块135接收指示对存储在寄存器121中的输入数据的任务的执行已经由级111起始的开始信号156。模块150提供:反馈157,所述反馈指示下一个级112准备好开始对下一组数据执行任务;锁存器控制信号158,所述锁存器控制信号控制对由级111提供到寄存器122中的数据的锁存以及由级112从寄存器122对数据的存取。模块150还提供开始信号159,所述开始信号起始对存储在寄存器122中的数据操作的任务的执行并且向后续模块151指示已经起始执行。模块135、140、151、152提供并接收对应的信号,出于清楚起见,不通过对应的参考数字来指示所述信号。

级控制器161、162、163、165(在本文统称为“级控制器161-164”)用于控制异步管线105中的级111-114的操作。级控制器162的一些实施方案被配置成基于由模块150提供的用于指示级111的完成状态信息的信号165以及由模块151提供的用于指示级113的完成状态信息的信号166来控制级112。级控制器162提供控制信号167,所述控制信号用于设定或修改级112的操作速度。级控制器162基于级111的完成状态、级112的完成状态、级113的完成状态或其组合来确定级112的操作速度(或者其修改)。如本文论述,级控制器161、163、164能够基于其他级中的一者或多者的完成状态来控制对应的级111、113、114的操作速度。出于清楚起见,不提供参考数字来指示由级111、113、114提供或接收的所有对应的信令。

在一些实施方案中,通过在级111-114中实施的一个或多个缓冲器的驱动强度、级111-114的操作电压或其组合来确定级111-114的操作速度。举例来说,级控制器162能够根据表1基于级111-113的完成状态来确定对级112的操作速度的修改。

表1

表1中的完成状态指示对应的级是否仍然在执行其当前任务(处理)或对应的级是否已经完成执行当前任务(完成)并且因此准备好接受要执行的新的任务。可以修改操作速度以节省能量或者加速级112的处理。举例来说,如果级111的完成状态是处理,级112的完成状态是完成,并且级113的完成状态是处理,那么级控制器162减小提供给级112的缓冲器驱动强度和电压供应以减小级112的能量消耗。对于另一示例,如果级111的完成状态是完成,级112的完成状态是处理,并且级113的完成状态是完成,那么级控制器162增加提供给级112的缓冲器驱动强度和电压供应以加速级112的处理。如本文论述,表1的一些实施方案可以存储在查找表中。

修改对级111-114的电压供应会影响级111-114内的所有逻辑的操作速度。然而,在一些实施方案中,供应给级111-114的部分或区的电压与级111-114的其他部分或区分开地经过修改以控制单独的部分或区的操作速度,如本文论述。修改级111-114内的缓冲器的驱动强度会影响在所述缓冲器的上游的级111-114的部分或区。举例来说,修改在每个级111-114的开始、中间或末尾处的缓冲器的驱动强度可以用于修改级111-114的对应部分中的路径的操作速度。还可以将可配置的驱动缓冲器置于级111-114的逻辑内部的长电线上以控制路由延迟。增加缓冲器的驱动强度通常会减少信号沿着级111-114中的路径的传播时间,这可以减少沿着所述路径的计算时间。在一些实施方案中,通过使用单独的电压源供应互连逻辑来控制信号传播速度。所述单独的电压源与用于供应级111-114中的逻辑的其他部分的另一电压源独立地受到控制。在一些变化中,所述电压细粒度地控制,例如,可以在电压状态之间的短至一纳秒的转变时间下以10毫伏(mv)的步长修改所述电压。可以使用脚晶体管来用于级111-114的逻辑的部分的电源门控或电压控制。

处理系统100的一些实施方案包括连接到输入控制器130或级控制器161-164的管线控制器170。管线控制器170确定管线级110-114的完成时间。级控制器161-164可以尝试基于异步管线105的总完成时间来调整对应的级110-114的完成时间。如本文论述,所述调整包括级110-114的逻辑锥中的供应电压改变以及缓冲器的驱动强度的修改。举例来说,管线控制器170能够控制由计算机单元实施的异步单指令多数据(simd)管线的线路中的指令的异步执行。计算机单元内的其他电路或管线可以按照同步的方式操作并且经由专用的缓冲器来与异步simd管线通信。管线控制器170可以通过以下操作来帮助消除线路分歧(即,指令跨越波中的所有simd线路的完成时间的变化):跨越异步simd管线的线路监测单个指令的执行的进度,并且再平衡任务完成的速度(可能在上一个管线级114处,以使复杂性最小化)以使得所有线路在大致相同的时间完成它们的针对相同指令的任务。使用管线控制器170控制线路分歧可以简化(a)绕过数据到达可以在simd管线中跟随的其消费者指令的逻辑,和(b)将结果写回到同步域中的vrf的逻辑。在一些变化中,个别的级控制器161-164通过在较少的总时间内完成指令的执行来改进时序并且减少能量消耗。

图2是根据一些实施方案的异步管线的一部分200的框图。部分200包括级205,所述级从输入寄存器210存取输入数据并且将输出数据提供到输出寄存器215。于在图1中示出的异步管线105的一些实施方案中使用部分200。在一些变化中,输入寄存器210和输出寄存器215用于实施在图1中示出的寄存器121-124中的一者或多者,并且级225用于实施在图1中示出的级110-114中的对应一者。级205包括逻辑区220、221、222(在本文统称为“逻辑区220-222”),所述逻辑区实施用于执行分配给级205的任务的多个部分的逻辑。逻辑区220-222通过互连网络进行连接,所述互连网络包括将驱动电流提供到部分200中的逻辑的上游区的缓冲器225、226、227(在本文统称为“缓冲器225-227”)。缓冲器225-227是能够在基于由缓冲器225-227接收的控制信号而确定的可变的驱动强度下操作的可配置缓冲器。

部分200还包括级控制器230,所述级控制器基于异步管线中的其他级(未示出)的完成状态来设定或修改级205(或者其部分)的操作速度。在一些变化中,级控制器230对应于在图1中示出的级控制器161-164中的一者。级控制器230的一些实施方案修改级205的操作电压以修改级205的操作速度。可以修改施加到整个级205的操作电压以修改逻辑区220-222的操作速度,或者可以单独地修改施加到逻辑区220-222的操作电压以修改逻辑区220-222中的一者或多者的一个或多个操作速度。级控制器230的一些实施方案修改缓冲器225-227中的一者或多者的驱动强度以修改在对应的缓冲器225-227下游的逻辑的操作速度。举例来说,级控制器230可以修改缓冲器225的驱动强度以修改例如逻辑区222和逻辑区221的下游逻辑的操作速度。

部分200的一些实施方案包括查找表(lut)235,所述查找表并入级控制器230中或者存储在可以由级控制器230存取的存储器中。查找表235包括条目,所述条目包括可以由级205执行的不同类型的指令的完成时间的估计。举例来说,查找表235中的每个条目包括通过指令操作码、指令类型、输入数据值等编制索引的完成时间的估计。在一些变化中,使用级205的目标或随机电路模拟来确定完成时间的估计。级控制器230随后可以基于操作码或由级205执行的指令的类型或由指令操作的数据的值(例如,存储在输入寄存器215中的数据的值)来估计级205的完成状态。举例来说,级控制器230可以从模块(例如,在图1中示出的模块135、140、150-152中的一者)接收指示级205起始执行包括所述指令的任务的开始时间的信号。级控制器230通过将当前时间与开始时间加上基于查找表235中的条目而确定的所估计的完成时间进行比较来估计级205的完成状态。级控制器230的一些实施方案基于存储在查找表235中的信息来估计其他级(例如,将输入数据提供到输入寄存器210的级或从输出寄存器215存取输出数据的级)的完成时间。

图3是根据一些实施方案的包括复制关键路径的异步管线的一部分300的框图。部分300包括级305,所述级从输入寄存器310存取输入数据并且将输出数据提供到输出寄存器315。于在图1中示出的异步管线105的一些实施方案中使用部分300。在一些变化中,输入寄存器310和输出寄存器315用于实施在图1中示出的寄存器121-124中的一者或多者,并且级305用于实施在图1中示出的级110-114中的对应一者。

级305与复制关键路径320相关联,所述复制关键路径包括逻辑,所述逻辑被构造成复制级305中的一个或多个关键路径的时序,使得复制关键路径320在与级305中的关键路径完成对输入数据的处理所需的时间相对应的时间间隔之后完成对输入数据的处理。举例来说,复制关键路径320可以包括与沿着级305的关键路径实施的一定数目的门匹配的一定数目的门。复制关键路径320还可以被构造成与沿着级305的关键路径的门的扇入值和扇出值匹配。复制关键路径320的一些实施方案包括不一定与级305中的关键路径的逻辑等同的逻辑。而是,复制关键路径320的逻辑被构造成使得输入信号随着它们流过复制关键路径320的门而改变值,从而有助于监测信号沿着复制关键路径320的流动。可以使用电路模拟来确定复制关键路径320与实际关键路径之间的等待时间。

部分300还包括提供和接收用于估计级305的完成状态的信号的模块325、330。模块325、330用于实施在图1中示出的模块120、125、150-152的一些实施方案。模块325的一些实施方案提供开始信号335以致使复制关键路径320开始处理输入数据。与用于由级305起始对存储在输入寄存器310中的输入数据的处理的开始信号同时地提供所述开始信号335。模块330响应于开始信号335而监测由复制关键路径320产生的输出信号340以确定复制关键路径320的完成状态。在一些变化中,模块330通过以下操作来确定复制关键路径320已经完成对输入数据的操作:检测输出信号340的特定模式,或者确定存储在输出寄存器中的与复制关键路径320相关联的数据已经达到稳态。可以将等待时间添加到由用于复制关键路径320的模块330确定的完成时间或者从所述完成时间减去所述等待时间来补偿级305的所估计的完成时间与实际完成时间之间的差。

图4是根据一些实施方案的异步管线的一部分400的框图。部分400包括级405,所述级从输入寄存器410存取输入数据并且将输出数据提供到输出寄存器415。于在图1中示出的异步管线105的一些实施方案中使用部分400。在一些变化中,输入寄存器410和输出寄存器415用于实施在图1中示出的寄存器121-124中的一者或多者,并且级405用于实施在图1中示出的级110-114中的对应一者。

状态模块420被配置成监测由级405提供的输出信号。状态模块420使用输出信号的特性来确定级405的完成状态。举例来说,状态模块420可以监测由级405产生的输出信号的改变。如果输出信号的值在改变,那么状态模块420确定级405正在处理其当前任务。在一些变化中,如果输出信号的值处于稳态或者以低于阈值的速率改变,那么状态模块420确定级405已经完成处理其当前任务。

部分400还包括提供和接收用于估计级405的完成状态的信号的模块425、430。模块425、430用于实施在图1中示出的模块120、125、150-152的一些实施方案。模块425的一些实施方案将开始信号435提供到状态模块420以指示级405已经开始使用存储在输入寄存器410中的输入数据来处理其任务。与用于由级405起始对存储在输入寄存器410中的输入数据的处理的开始信号同时地提供所述开始信号435。如上文所论述,模块430响应于开始信号435而开始监测由级405产生的输出信号以确定级405的完成状态。状态模块420将指示级405的完成状态的信号提供到模块430。举例来说,状态模块420可以在级405的完成状态是“处理”时向模块430断言逻辑低信号,并且随后响应于级405的完成状态转变为“完成”而向模块430断言逻辑高信号。

图5是根据一些实施方案的在复制关键路径中实施中间完成状态检测的异步管线的一部分500的框图。部分500包括级505,所述级从输入寄存器510存取输入数据并且将输出数据提供到输出寄存器515。于在图1中示出的异步管线105的一些实施方案中使用部分500。在一些变化中,输入寄存器510和输出寄存器515用于实施在图1中示出的寄存器121-124中的一者或多者,并且级505用于实施在图1中示出的级110-114中的对应一者。

级505与复制关键路径520相关联,所述复制关键路径包括逻辑,所述逻辑被构造成复制级505中的一个或多个关键路径的时序,使得复制关键路径520在与级505中的关键路径完成对输入数据的处理所需的时间相对应的时间间隔之后完成对输入数据的处理。复制关键路径520共享在图3中示出的复制关键路径320的一些特征。然而,复制关键路径520不同于复制关键路径320,原因在于复制关键路径520包括用于确定复制关键路径520的开始和结束之间的位置处的中间完成状态的逻辑525(例如,寄存器、触发器、锁存器或其他电路)。举例来说,逻辑525可以包括寄存器以在复制关键路径520中的过程的执行中途的点处存储由复制关键路径520产生的结果。

部分500还包括提供和接收用于估计级505的完成状态的信号的模块530、535。模块530、535可以用于实施在图1中示出的模块120、125、150-152的一些实施方案。模块530的一些实施方案提供开始信号540以致使复制关键路径520开始处理输入数据。还将开始信号540提供到逻辑525。与用于由级505起始对存储在输入寄存器510中的输入数据的处理的开始信号同时地提供所述开始信号540。逻辑525能够响应于开始信号540例如通过监测由复制关键路径520在逻辑525处产生的信号的特性来确定复制关键路径520的中间完成状态。举例来说,逻辑525可以通过以下操作来确定复制关键路径520已经完成对输入数据的操作:检测由逻辑525接收的信号的特定模式,或者确定存储在与逻辑525相关联的寄存器中的数据已经达到稳态。逻辑525能够将指示复制关键路径520的中间完成状态的信号提供到模块535。如本文论述,可以将等待时间添加到由用于复制关键路径520的逻辑525确定的中间完成时间或者从所述中间完成时间减去所述等待时间来补偿级505的所估计的中间完成时间与实际中间完成时间之间的差。

级控制器(例如,级控制器161-164)使用所述中间完成状态来修改级505的部分的操作速度。举例来说,级控制器可以使用由逻辑525产生的完成状态来修改在逻辑525前面的级505的一部分(例如,在逻辑525上游的电路)的操作速度或者在逻辑525后面的级505的一部分(例如,在逻辑525下游的电路)的操作速度。虽然在图5中示出单个逻辑525,但复制关键路径520的一些实施方案包括可以定位在复制关键路径520内的不同位置处的额外的完成状态逻辑。此外,在一些实施方案中,用于检测复制关键路径520的一个或多个中间完成状态的逻辑与用于检测复制关键路径520的总完成状态的逻辑(例如,于在图3中示出的模块330中实施的逻辑)进行组合。

图6是根据一些实施方案的实施中间完成状态检测的异步管线的一部分600的框图。部分600包括级605,所述级从输入寄存器610存取输入数据并且将输出数据提供到输出寄存器615。于在图1中示出的异步管线105的一些实施方案中使用部分600。在一些变化中,输入寄存器610和输出寄存器615用于实施在图1中示出的寄存器121-124中的一者或多者,并且级605用于实施在图1中示出的级110-114中的对应一者。

级605包括用于执行分配给级605的任务的一部分的电路的区620,和用于执行分配给级605的任务的另一部分的电路的区625。在区620、625的中间实施一组寄存器630。寄存器630被配置成存储由区620执行的处理的结果并且将所述结果提供到区625以在级605中进行额外的处理。寄存器630连接到状态监测器635,所述状态监测器被配置成监测由区620提供到寄存器630的输出信号。状态模块635使用存储在寄存器630中的值的特性来确定区620的完成状态。举例来说,状态模块635可以监测由区620产生的输出信号的改变,并且在存储在寄存器630中的输出信号的值在改变的情况下确定区620正在处理其当前任务。状态模块630的一些变化还可以在存储在寄存器630中的值处于稳态或者以低于阈值的速率改变的情况下确定区620已经完成处理其当前任务。

部分600还包括提供和接收用于估计级605的中间完成状态的信号的模块640、645。模块640、645用于实施在图1中示出的模块120、125、150-152的一些实施方案。模块640的一些实施方案将开始信号650提供到状态模块635以指示级605已经开始使用存储在输入寄存器610中的输入数据来处理其任务。与用于由级605起始对存储在输入寄存器610中的输入数据的处理的开始信号同时地提供所述开始信号650。如上文所论述,状态模块635响应于开始信号650而开始监测提供到寄存器630的输出信号以确定区620的完成状态。状态模块635随后将指示区620的完成状态的信号655提供到模块645。举例来说,状态模块635可以在区620的完成状态是“处理”时向模块645断言逻辑低信号,并且随后响应于区620的完成状态转变为“完成”而向模块645断言逻辑高信号。

级控制器(例如,在图1中示出的级控制器161-164)使用所述中间完成状态来修改级605的区620、625的操作速度。举例来说,级控制器可以使用由状态模块635产生的完成状态来修改区620、区625或其组合的操作速度。虽然在图6中示出单组寄存器630和单个状态模块635,但部分600的一些实施方案包括定位在级605内的不同位置处的额外的完成状态逻辑。此外,在一些实施方案中,用于检测区620、625的一个或多个中间完成状态的逻辑与用于检测级605的总完成状态的逻辑(例如,于在图4中示出的模块420中实施的逻辑)进行组合。

图7是根据一些实施方案的实施并行处理的异步管线的一部分700的框图。部分700包括以相对较高的速率或速度完成任务的快级705,和以相对较慢的速率或速度完成任务的慢级710。于在图1中示出的异步管线105的一些实施方案中实施部分700。在一些变化中,在图1中示出的级110-114中的每一者表示并行操作的一个以上级。举例来说,级111表示被配置成对不同的输入数据并行地执行乘法操作的至少一对级。所述级中的一者可以在相对高的速率或速度下完成任务,并且其他级中的一者可以在相对低的速率或速度下完成任务。

异步管线在分叉715处开始并行级705、710的执行,并且在接合点720处组合并行级705、710的操作的结果。并行分支无法完成接合点720,直到并行级705、710对任务的执行都完成为止。因此,一个或多个级控制器(例如,在图1中示出的级控制器161-164)基于它们的完成状态来协调级705、710的操作。举例来说,级控制器可以降低相对快的级705的操作速度,增加相对慢的级710的操作速度,或者执行这些修改的组合,使得级705、710在大致等于并行级705、710的目标完成时间的时间处完成。

图8是根据一些实施方案的用于修改异步管线中的级的操作速度的方法800的流程图。于在图1中示出的处理系统100的一些实施方案中实施方法800。级接收由左侧相邻级产生的输入数据并且产生输出数据,将所述输出数据作为输入数据提供到右侧相邻级。所述级的一些实施方案对应于在图1中示出的级112。左侧相邻级于是对应于级111,并且右侧相邻级对应于在图1中示出的级113。

在框805处,级控制器(例如,在图1中示出的级控制器162)存取指示级的完成状态的信息。所述完成状态可以包括指示所述级尚未完成在所述级上执行的任务的信息,在那种情况下,所述级的完成状态是“处理”。所述完成状态还可以包括指示所述级已经完成所述任务的信息,在那种情况下,所述级的完成状态是“完成”。所述完成状态还可以包括指示与所述级的部分或区相关联的中间完成状态的信息,如本文论述。

在框810处,级控制器存取指示左侧相邻级的完成状态的信息。所述完成状态可以包括指示所述左侧相邻级尚未完成在所述左侧相邻级上执行的任务的信息,在那种情况下,所述左侧相邻级的完成状态是“处理”。所述完成状态还可以包括指示所述左侧相邻级已经完成所述任务的信息,在那种情况下,所述左侧相邻级的完成状态是“完成”。所述完成状态还可以包括指示与所述左侧相邻级的部分或区相关联的中间完成状态的信息,如本文论述。所述级的一些实施方案不与异步管线的左侧相邻级相关联。举例来说,在图1中示出的级110不与左侧相邻级相关联,在那种情况下,可以绕过框810。

在框815处,级控制器存取指示右侧相邻级的完成状态的信息。所述完成状态可以包括指示所述右侧相邻级尚未完成在所述右侧相邻级上执行的任务的信息,在那种情况下,所述右侧相邻级的完成状态是“处理”。所述完成状态还可以包括指示所述右侧相邻级已经完成所述任务的信息,在那种情况下,所述右侧相邻级的完成状态是“完成”。所述完成状态还可以包括指示与所述右侧相邻级的部分或区相关联的中间完成状态的信息,如本文论述。所述级的一些实施方案不与异步管线的右侧相邻级相关联。举例来说,在图1中示出的级114不与右侧相邻级相关联,在那种情况下,可以绕过框815。

在框820处,级控制器基于所述级的完成状态、左侧相邻级的完成状态(如果可用)以及右侧相邻级的完成状态(如果可用)来修改所述级的操作速度。如本文论述,可以通过修改施加到所述级或其部分的缓冲器驱动强度或电压来修改操作速度。

在一些实施方案中,上文所描述的设备和技术实施于包括一个或多个集成电路(ic)装置(还称为集成电路封装或微芯片)(例如,上文参考图1至图8所描述的异步管线)的系统中。通常在这些ic装置的设计和制造中使用电子设计自动化(eda)和计算机辅助设计(cad)软件工具。这些设计工具通常表示为一个或多个软件程序。所述一个或多个软件程序包括可以由计算机系统执行以便进行以下操作的代码:操纵计算机系统对表示一个或多个ic装置的电路的代码进行操作,以便执行用于设计或调适制造系统来制造电路的过程的至少一部分。此代码可以包括指令、数据或指令与数据的组合。表示设计工具或制造工具的软件指令通常存储在计算系统可存取的计算机可读存储介质中。同样,表示ic装置的设计或制造的一个或多个阶段的代码可以存储在同一计算机可读存储介质或不同计算机可读存储介质中并且从所述同一计算机可读存储介质或不同的计算机可读存储介质进行存取。

计算机可读存储介质可以包括可以由计算机系统在使用期间存取以将指令和/或数据提供给计算机系统的任何非暂时性存储介质,或非暂时性存储介质的组合。此类存储介质可以包括(但不限于)光学介质(例如,压缩光盘(cd)、数字多功能光盘(dvd)、蓝光光盘)、磁性介质(例如,软盘、磁带或磁性硬盘驱动器)、易失性存储器(例如,随机存取存储器(ram)或缓存)、非易失性存储器(例如,只读存储器(rom)或快闪存储器),或基于微机电系统(mems)的存储介质。计算机可读存储介质可以嵌入计算系统(例如,系统ram或rom)中、固定地附接到计算系统(例如,磁性硬盘驱动器)、可移除地附接到计算系统(例如,光盘或基于通用串行总线(usb)的快闪存储器),或经由有线或无线网络耦合到计算机系统(例如,网络可存取存储装置(nas))。

在一些实施方案中,上文所描述的技术的某些方面可以由执行软件的处理系统的一个或多个处理器实施。所述软件包括存储在或另外有形地体现在非暂时性计算机可读存储介质上的一组或多组可执行指令。所述软件可以包括命令和特定数据,所述指令和特定数据当由一个或多个处理器执行时会操纵所述一个或多个处理器执行上文所描述的技术的一个或多个方面。所述非暂时性计算机可读存储介质可以包括(例如)磁盘或光盘存储装置、例如快闪存储器的固态存储装置、缓存、随机存取存储器(ram)或一个或多个其他非易失性存储器装置等。存储在非暂时性计算机可读存储介质上的可执行指令可以呈由一个或多个处理器解译或另外可执行的源代码、汇编语言代码、目标代码,或其他指令格式。

应注意,并不需要在一般描述中的上文描述的所有活动或要素,可能不需要特定活动或装置的一部分,并且可以执行一个或多个其他活动,或者包括除了所描述的要素之外的要素。此外,列举活动的次序不一定是执行活动的次序。而且,已经参考特定实施方案描述了概念。然而,本领域技术人员应了解,可以在不脱离所附权利要求书中所陈述的本公开的范围的情况下作出各种修改和改变。因此,可以在说明性意义而不是限制性意义上对待说明书和图,并且所有此类修改意在包括在本公开的范围内。

上文已关于特定实施方案描述了益处、其他优势和问题的解决方案。然而,这些益处、优势、问题的解决方案以及可以致使任何益处、优势或解决方案发生或变得更加突出的任何特征不应被解释为任何或所有权利要求的关键、必需或本质的特征。另外,上文公开的特定实施方案仅是说明性的,因为所公开的主题可以按受益于本文教导的本领域技术人员显而易见的不同但等效的方式加以修改和实践。除了所附权利要求书中所描述的内容之外,无意对本文示出的构造或设计的细节进行限制。因此显然的是,可以更改或修改上文所公开的特定实施方案,并且所有此类变化都被视为在所公开的主题的范围内。因此,本文寻求的保护在所附权利要求书中予以陈述。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1