本申请是申请号为201380060515.4、申请日为2013年12月11日的同名称申请的分案申请。
本公开内容总体上涉及计算架构。更具体来说,本公开内容涉及可伸缩计算结构。
背景技术:
当前的计算系统通常是针对通用情况而设计的。举例来说,当前的计算系统包括针对多种指令集开发的至少一个中央处理单元(cpu)。一些计算系统还可以包括图形处理单元(gpu)。gpu通常是专用于处理图形工作负荷,其受益于并行地处理大块数据。cpu和gpu都包括用以实施算术和逻辑操作的专用电路,其可以被称作算术和逻辑单元(alu)。cpu和gpu的处理核心的尺寸都是固定的,并且与对应的处理器的其他核心完全相同。此外,当前的cpu和gpu的处理核心即使未处在使用中时也被通电。
附图说明
通过参照附图可以更好地理解后面的详细描述,其中包含所公开的主题内容的许多目的和特征的具体实例。
图1是可以根据一些实施例使用的计算设备的方框图。
图2是根据本发明的实施例的可伸缩计算结构的图示,其中示出了合并到共同结构中的典型cpu、gpu和固定功能硬件的各个组件;
图3是示出了根据一些实施例的simd处理单元的图示;
图4是示出了根据一些实施例的mimd定序器管线控制器的图示;
图5是根据一些实施例的用于提供可伸缩计算结构的方法的处理流程图;以及
图6是根据本发明的实施例的可伸缩计算结构的图示。
具体实施方式
正如前面所讨论的那样,系统中的计算元件或计算资源包括例如cpu、gpu、输入/输出(i/o)控制器、i/o总线、存储器设备以及其他专用逻辑块之类的各种组件,其通过固定方式连接并且无法被重新配置来支持特殊的处理管线和工作流程要求。此外,即使未处在使用中时,所述各种计算元件仍然可能保持在活跃的通电状态。本技术的实施例提供了一种可伸缩计算结构,其中各个计算元件可以按照需要来使用,并且可以被动态地配置来指派到计算元件之间的i/o连接和总线上的专用管线。通过这种方式,以动态的方式支持工作流程,这允许相应地调节性能和功率以便达到更好的功率和性能目标。此外,一些实施例提供了一种可伸缩计算结构,其中可以动态地重新配置各个计算元件或计算资源,以便服务于特定工作负荷和许多同时的工作负荷。此外,当未处在使用中时,计算元件可以被断电。所述可伸缩计算结构在运行时间被动态地配置成多条管线,其中每一条按照一定方式被控制和定序,从而在一个实施例中允许利用多种方法(其中包括队列、共享存储器命令和数据区段当中的一项或更多项)或者通过网络或互连上的通信协议流将多指令和多数据(mimd)流馈送到所述可伸缩计算结构中。
这里所使用的“活跃”指的是消耗电力并且“开启”的状态,而“不活跃”则指的是不生成电力并且“关闭”的状态或者被设定到低功率状态。低功率状态可以是与活跃状态相比较低。可以利用可伸缩计算阵列实施的计算应用包括而不限于图像处理、打印成像、显示成像、信号处理、计算机图形、媒体和音频处理、数据挖掘、视频分析法以及数值处理。
在后面的描述和权利要求书中,可以使用术语“耦合”和“连接”及其导出用语。应当理解的是,这些术语不意图作为彼此的同义词。相反,在特定实施例中,可以使用“连接”来表明两个或更多元件彼此直接物理或电接触。“耦合”可以意味着两个或更多元件直接物理或电接触。但是“耦合”还可以意味着两个或更多元件彼此没有直接接触,但是仍然彼此协作或交互。
可以通过硬件、固件和软件的其中之一或者其某种组合来实施一些实施例。一些实施例还可以被实施成存储在机器可读介质上的指令,其可以由计算平台读取并且执行来实施这里所描述的操作。机器可读介质可以包括用于通过可由机器(例如计算机)读取的形式来存储或传送信息的任何机制。举例来说,机器可读介质特别可以包括只读存储器(rom)、随机存取存储器(ram)、磁盘存储介质、光学存储介质、闪存设备。
一个实施例是一种实现方式或实例。在说明书中提到“某一实施例”、“一个实施例”、“一些实施例”、“各种实施例”或“其他实施例”意味着结合所述实施例描述的特定特征、结构或特性被包括在本发明的至少一些实施例中,而不一定被包括在所有实施例中。在各处出现的“某一实施例”、“一个实施例”或“一些实施例”不一定全部指代相同的实施例。来自一个实施例的各个元素或方面可以与另一个实施例的各个元素或方面相组合。
这里所描述和示出的所有组件、特征、结构、特性等等不需要都被包括在一个或多个特定的实施例中。如果说明书陈述例如“可以”或者“可能”包括某一组件、特征、结构或特性,并不要求包括该特定组件、特征、结构或特性。如果说明书或权利要求书提到“某一”或“一个”元件,这并不意味着仅有一个所述元件。如果说明书或权利要求书提到“一个附加”元件,这并不排除存在多于一个的所述附加元件。
应当提到的是,虽然参照特定实现方式描述了一些实施例,但是根据一些实施例其他实施方式也是可能的。此外,在附图中示出以及/或者在这里描述的电路元件或其他特征的设置和/或顺序不需要按照所示出和描述的特定方式来设置。根据一些实施例,许多其他设置是可能的。
在图中示出的每一个系统中,各个元件在某些情况下可能分别具有相同的附图标记或不同的附图标记,从而表明所表示的元件可以是不同的和/或相似的。但是一个元件可以是足够灵活的,从而具有不同的实现方式并且与这里所示出或描述的其中一些或所有系统一同工作。附图中示出的各个元件可以是相同的或不同的。哪一个元件被称作第一元件以及哪一个被称作第二元件是任意的。
图1是可以根据一些实施例使用的计算设备100的方框图。计算设备100例如特别可以是膝上型计算机、台式计算机、平板计算机、移动设备或者服务器。计算设备100可以包括被配置成执行所存储的指令的可伸缩计算结构102,以及存储可以由可伸缩计算结构102执行的指令的存储器设备104。在一些实施例中,可以使用应用编程接口(api)在运行时间配置可伸缩计算结构。此外,在一些实施例中,可以在引导时间列举可伸缩计算结构。通过这种方式,计算设备可以认识到可伸缩计算结构的硬件能力。
存储器设备104可以是可伸缩计算结构102的一个组件。可伸缩计算结构102可以通过总线106耦合到存储器设备104,并且被配置成实施在传统上由中央处理单元(cpu)实施的任何操作。此外,可伸缩计算结构102可以被配置成实施在传统上由图形处理单元(gpu)实施的任何数目的图形操作。举例来说,可伸缩计算结构102可以被配置成渲染或操纵将向计算设备100的用户显示的图形图像、图形帧、视频等等。
可伸缩计算结构102包括而不限于可以被动态地配置以及重新配置到各种处理管线中的几项处理资源。管线是被分组在一起从而实施特定处理任务的资源或计算元件的集合。所述管线可以实施动态可配置的功能。可伸缩计算结构102的管线可以被配置成基于指令的大小和类型而在运行时间执行一个指令集合。在一些实施例中,可以在运行时间调用应用编程接口(api),以便对于特定指令集合配置处理管线。举例来说,api可以规定创建五个simd处理单元,以便在64比特宽的指令的运行时间处理64比特宽的指令。api还可以向可伸缩计算结构102规定带宽。在一些实施例中,可伸缩计算结构102实施快速互连,其可以连同可伸缩计算结构102内的处理管线一起被动态地配置和重新配置。此外,所述快速互连可以是连接计算设备100的各项计算资源或计算元件的总线。还可以利用基本输入/输出系统(bios)对可伸缩计算结构102的管线进行预先配置。举例来说,当计算设备100被通电时,在引导规程期间运行的bios可以识别可伸缩计算结构102,其中包括可伸缩计算结构102的各种组件。bios随后可以对可伸缩计算结构102的管线进行预先配置。在一些实施例中,在所述预先配置之后可以在必要时重新配置所述管线。
所述可伸缩计算结构在运行时间被动态地配置成多条管线,每一条管线按照共享方式被控制和定序,从而允许将多指令和多数据(mimd)流馈送到可伸缩计算机结构管线中。在一个实施例中,可以利用一种或更多种方法(其包括但不限于队列、共享存储器命令和数据区段、互连总线、网络或互连上的通信协议流当中的一项或更多项)或者使用类似的方法将mimd命令数据流馈送到可伸缩计算结构中。此外,管线的动态配置涉及一个或更多mimd定序器或控制器,其接受用以配置多条管线的命令以及来自多项软件应用或者多个连接的系统的数据,mimd序列将其馈送到对应于计算、互连、存储器和固定功能逻辑块的管线化资源中,所述管线化资源被动态地配置到管线中以便实施特定任务。因此,所述管线是可以由一项或更多项软件应用或连接的系统使用的共享资源。
在可伸缩计算结构102内,可以有一个或更多alu阵列以及一个或更多寄存器阵列。alu阵列可以被用来对于存储在寄存器阵列中的数据实施算术和逻辑操作。寄存器阵列是可以被用来存储被用作针对alu的输入的数据的专用存储器,并且还可以存储从alu的操作得到的数据。所述数据可以在存储器设备104与寄存器之间传输。存储器设备104可以包括随机存取存储器(ram)、只读存储器(rom)、闪存或者任何其他适当的存储器系统。举例来说,存储器设备104可以包括动态随机存取存储器(dram)。
计算设备100包括图像捕获机制108。在一些实施例中,图像捕获机制108是摄影机、立体摄影机、红外传感器等等。此外,图像捕获机制108可以是通用串行总线(usb)摄影机,其利用usb线缆与计算设备100耦合。图像捕获机制108被用来捕获图像信息。在一些实施例中,所述图像捕获机制可以是利用根据移动行业处理器接口(mipi)摄影机串行接口(csi)联盟的规范开发的接口与可伸缩计算结构102接口的摄影机设备。举例来说,所述摄影机串行接口可以是mipicsi-1接口、mipicsi-2接口或者mipicsi-3接口。因此,所述摄影机串行接口可以是当前所开发或者未来开发的任何摄影机串行接口。在一些实施例中,摄影机串行接口可以包括数据传输接口,其是与数据和时钟信号的单向差分串行接口。此外,与可伸缩计算结构的摄影机接口还可以是当前所开发或者未来开发的任何摄影机并行接口(cpi)。在一些实施例中,可伸缩计算结构102被配置成用于成像操作的simd处理单元。可伸缩计算结构102可以取得来自工作负荷的simd指令以作为输入,并且并行地基于所述指令来实施操作。举例来说,图像捕获机制108可以被用来捕获图像以用于处理。图像处理工作负荷可以包含一个simd指令集合,并且可伸缩计算结构102可以被用来处理所述指令集合。
可伸缩计算结构102可以通过总线106连接到输入/输出(i/o)设备接口112,其被配置成把计算设备100连接到一个或更多i/o设备114。i/o设备114例如可以包括键盘和指示设备,其中所述指示设备特别可以包括触摸板或触摸屏。i/o设备114可以是计算设备100的内建组件,或者是外部连接到计算设备100的设备。
可伸缩计算结构102还可以通过总线106链接到显示器接口116,其被配置成把计算设备100连接到显示设备118。显示设备118可以包括作为计算设备100的内建组件的显示器屏幕。显示设备118特别还可以包括外部连接到计算设备100的计算机监视器、电视或投影仪。
计算设备100还包括存储设备120。存储设备120是例如硬盘驱动器、光盘驱动器、拇指驱动器、驱动器阵列或者其任何组合之类的物理存储器。存储设备120还可以包括远程存储驱动器。存储设备120包括被配置成在计算设备100上运行的任何数目的应用122。应用122可以被用来实施可伸缩计算结构。此外,应用122的指令集合可以包括而不限于超长指令字(vliw)和单指令多数据(simd)指令。所述指令集合可以利用可伸缩计算结构102来处理。计算设备100还可以包括网络接口控制器(nic)124。nic124可以被配置成将计算设备100通过总线106连接到网络126。网络126特别可以是广域网(wan)、局域网(lan)或因特网。
在一些实施例中,可伸缩计算结构可以把从经过处理的成像工作负荷得到的图像发送到打印引擎128。打印引擎128可以把所得到的成像工作负荷发送到打印设备130。打印设备130可以包括打印机、传真机以及可以利用打印对象模块132来打印所得到的图像的其他打印设备。在一些实施例中,打印引擎128可以通过网络126把数据发送到打印设备130。此外,在一些实施例中,打印设备130可以包括另一个可伸缩计算结构134,其可以被用来处理使用打印设备130的工作负荷。
应当理解的是,图1的方框图不意图表明计算系统100包括图1中示出的所有组件。相反,计算系统100可以包括更少的或者未在图1中示出的附加组件(例如传感器、电力管理集成电路、附加的网络接口等等)。
图2是根据本发明的实施例的可伸缩计算结构200的图示,其中示出了合并到共同结构中的典型cpu、gpu和固定功能硬件。可伸缩计算结构200例如可以是可伸缩计算结构102(图1)。可伸缩计算结构200还可以是作为打印设备(比如图1的打印设备130)的一个组件的可伸缩计算结构134。
可伸缩计算结构200允许现有的机器代码在对应于特定机器模式的核心上执行。因此,可以利用可伸缩计算结构200来执行将利用cpu执行的机器代码。此外,可以利用可伸缩计算结构200来执行将利用gpu执行的机器代码。因此,可伸缩计算结构200包括机器代码202,其被用来控制可执行特定机器代码202的单指令、单数据(sisd)处理核心204。在一些实施例中,所述处理核心可以是intel®architecture(ia)cpu核心或超线程。处理核心204可以执行由机器代码202规定的原生数据类型、指令、寄存器、寻址模式、存储器架构和中断应对。在可伸缩计算结构200中还包括单指令多数据(simd)和单指令单线程机器代码206。simd/sist机器代码206可以被用来指示一个或更多simd处理单元208。在一些实施例中,simd处理单元208包括合并到独立资源中的intel®advancedvectorextensions(avx)和执行单元(eu)。simd处理单元还可以被称作simd计算阵列。可以关于图3进一步描述simd处理单元208。
通过可编程的公平性策略和各种分配方案,为可伸缩计算结构200的每一条所配置的管线保证必要的总线带宽和执行优先权。固定功能硬件210可以被表示在可伸缩计算结构200中。举例来说,所述固定功能硬件可以包括图形、显示、媒体、安全性或感知计算单元。在一些实施例中,所述固定功能硬件可以利用可伸缩计算结构的资源或计算元件来实施。通过这种方式,可以通过具有较低功率或更加高效的计算的其他硬件来替代所述固定功能硬件。可伸缩计算结构200内的固定功能硬件单元可以被动态地锁定、共享以及指派到管线中。举例来说,对媒体工作负荷进行编码通常特别包括实施运动估计。在对二维(2d)视频进行编码时,可以在视频的每一帧上实施运动估计搜索,以便确定对应于每一帧的运动矢量。运动估计是这样一种技术,其中对一个帧序列中的对象的移动进行分析,以便获得代表所述对象在各帧之间的所估计的运动的矢量。通过运动估计,已编码媒体文件包括帧的被移动的部分而不包括帧的其他部分,从而节省了媒体文件中的空间,并且节省了媒体文件的解码期间的处理时间。帧可以被划分成各个宏块,并且运动矢量代表宏块在各帧之间的位置的改变。可以通过利用包括媒体固定功能单元的可伸缩计算结构200配置的管线来确定运动矢量。
可以包括环形总线212以用于固定功能硬件单元之间的通信。环形缓冲器212可以被用来通过组装管线传输数据。此外,外围组件快速互连(pcie)总线214和输入/输出控制器集线器(ich)总线216可以向可伸缩计算结构200中提供输入。但是本技术不限于这里所描述的互连方法,因为在一些实施例中可以使用多种其他互连方法。
多指令多数据(mimd)管线定序器218可以被用来基于传入指令按照需要把处理核心204、simd处理单元208以及固定功能硬件210组装到管线中。所述指令可以从指令队列220a获得。此外,mimd定序器可以从存储器中的指令控制块220b或者从网络或互连220c上的协议流接受数据和控制命令。可以利用动态地配置的管线锁定可伸缩计算结构200内的存储器资源。举例来说,还可以在可伸缩计算结构200中包括第2层(l2)高速缓存222和第3层(l3)高速缓存224以存储数据。
图3是示出了根据一些实施例的simd处理单元208的图示。simd处理单元208可以处在simd计算阵列内,所述simd计算阵列可以包括被合并到动态地可配置并且可共享的计算资源中的高级矢量扩展(avx)单指令多数据(simd)单元或执行单元(eu)当中的至少一项或更多项。每一个simd处理单元208是simd处理资源的一个切片。换句话说,每一个切片是一个独立的simd处理单元208。一个切片指的是一个巷道集合或分组,其中每一条巷道包括至少一个算术和逻辑单元(alu)和至少一个寄存器。simd处理单元208包括alu阵列302和寄存器阵列304。alu阵列302可以被用来对存储在寄存器阵列304中的数据实施算术和逻辑操作。寄存器阵列304是专用存储器,其可以被用来存储被用作针对alu阵列302的输入的数据,并且还可以存储从alu阵列302的操作得到的数据。寄存器阵列304可以是共享存储器的一个组件,所述共享存储器还包括共享机器情境(ctx)数据306。共享ctx数据306可以存储机器情境和相关联的数据,比如程序计数器、寄存器设定、时钟频率、电压水平以及所有其他机器状态数据。
根据将要处理的工作负荷的大小和类型,每一个simd处理单元208可以被配置成具有不同的宽度。通过这种方式,每一个simd处理单元的宽度是基于在计算机上运行的每一项软件中所解决的具体问题。每一个simd处理单元208的宽度是每一个切片中的巷道的数目。在图3中,simd处理单元208包括:simd4-alu切片308,其包括四条alu巷道;simd2-alu切片310,其包括两条巷道;simd4-alu切片312,其包括四条巷道;simd2-alu切片314,其包括两条巷道;以及simd4-alu切片316,其包括四条巷道。如图3中所示,simdalu切片308和simd切片314都被通电,正如每一个simd切片上方的通电状态320a所分别标示的那样。类似地,simdalu切片310、simdalu切片312和simdalu切片316都被断电,正如每一个simd切片上方的断电状态320b所分别标示的那样。
在一些实施例中,响应于确定simdalu切片310、simdalu切片312和simdalu切片内的alu单元不活跃,simdalu切片310、simdalu切片312和simdalu切片316都被断电。可以由监测alu的控制器确定不活跃性。当alu空闲的时间超出预定数量的时钟周期时,其可以被关闭。此外,可以使用程序计数器来确定哪些alu可以被关闭。
图4是根据一些实施例的示出了mimd定序器管线控制器218的图示。来自输入队列(比如图2的输入队列220)的信息被输入到mimd定序器管线控制器218。mimd定序器管线控制器218从指令队列220a(图2)取得信息,并且将所述信息路由到在可伸缩计算结构内形成的各条管线。在一些实施例中,mimd定序器可以从存储器中的指令控制块220b或者从网络或互连220c上的协议流接受数据和控制命令。
举例来说,每当指令队列所包含的指令包括计算傅立叶变换时,mimd定序器管线控制器218a可以保留快速傅立叶变换(fft)模块402。数字信号处理(dsp)应用常常包括使用fft处理核心。可以利用硬件或软件来实施fft模块402。由fft模块402使用的数据可以从存储器104中的缓冲器404a取回。一旦被处理,可以将所述数据写回到存储器中的缓冲器404b。因此,可以通过mimd定序器管线控制器218a来控制所述管线。
与mimd定序器管线控制器218a并行地,可以使用mimd定序器管线控制器218b来配置另一条管线进行图像处理。例如输入队列220a(图2)之类的指令队列可以指示mimd定序器管线控制器218b配置包含用于图像处理的各种模块的管线。响应于所述指令,mimd定序器管线控制器218b可以保留卷积固定功能硬件单元406a、形态固定功能硬件单元406b、媒体管线406c、simd处理单元406d和显示器模块406e。simd处理单元406d可以是如前面所描述的simd处理单元208。在一些实施例中,mimd定序器可以从存储器中的指令控制块220b或者从网络或互连220c上的协议流接受数据和控制命令。
卷积固定功能硬件单元406a可以从图像捕获机制(比如图1的图像捕获机制108)接收图像数据。可以利用卷积固定功能硬件单元406a和形态固定功能硬件单元406b对来自图像捕获机制的图像数据进行线性滤波。可以把来自卷积固定功能硬件单元406a的数据写入到存储器104中的缓冲器408a。形态固定功能硬件单元406b可以从缓冲器408a获得数据。媒体管线406c被用来对图像数据进行编码。可以从存储器104内的缓冲器408b获得图像数据。媒体管线406c是执行各种硬件和软件模块以编码图像数据的附加管线。举例来说,用于编码图像数据的媒体管线可以包括实施运动估计,以便确定图像数据内的各帧的运动矢量和宏块类型。此外,对图像数据进行编码可以包括对每一帧应用不同的比特率。在对图像数据进行编码时,将其转换成目标数据格式。随后将所述数据写入到存储器104中的缓冲器408c。
simd处理单元406d可以从存储器104中的缓冲器408c获得数据。可以由simd处理单元406d实施附加的图像处理,比如针对特定显示器优化数据。随后可以将所述数据写入到存储器104中的缓冲器408d。显示器模块406e可以从存储器104中的缓冲器408d获得数据,并且在显示器上渲染所述数据。
当在管线模块406与存储器104中的缓冲器408之间传递图像数据时,可以使用环形缓冲器212将数据从管线模块406传递到缓冲器408。此外,环形缓冲器212可以在不访问缓冲器408的情况下在管线模块406之间传输数据。举例来说,通常逐行地处理图像数据。卷积固定功能硬件单元406a可以处理一行的图像数据,并且将其放置在环形缓冲器212中。环形缓冲器可以将所述数据直接发送到形态固定功能硬件单元406b以进行进一步处理。如果形态固定功能硬件单元406b无法处理由卷积固定功能硬件单元406a发送的图像数据,则环形缓冲器212可以将所述数据放置在缓冲器408a中,直到形态固定功能硬件单元406b能够处理所述图像数据为止。
图5是根据一些实施例的用于提供可伸缩计算结构的方法的处理流程图。在方框502处,确定将由可伸缩计算结构处理的工作流程。所述工作流程可以是基于软件程序的指令集合。在一些实施例中,所述工作流程可以从指令队列获得。在方框504处,可以动态地配置管线以用于处理所述工作流程。所述管线可以包括处理核心、simd计算阵列或者其任何组合。simd计算阵列可以包括一个或更多simd处理单元。在一些实施例中,可以通过以下步骤来配置管线:为管线分配计算资源,为管线保留存储器资源和总线带宽,以及调度对于管线的工作流程使用。所述配置可以由控制器实施。在一些实施例中,所述控制器是mimd定序器管线控制器。此外,所述管线可以包括一个或更多处理核心以及一个或更多simd处理单元。至少一个处理核心或simd处理单元可以响应于工作流程的大小而被断电。此外,至少一个处理核心或simd处理单元可以响应于将资源动态配置到某一管线中以便支持某一工作流程而被断电。
在方框506处,可以利用所述管线来执行工作流程。在一些实施例中,可以利用计算设备的管线或者打印设备的管线来执行所述方法。执行所述工作流程可以包括例如以下处理:图像处理、图像增强、图像分析、计算机视觉、增强真实性、深度感测、手势辨识、面部辨识、计算机游戏、计算机图形、媒体处理、摄影机或传感器处理、摄影机处理、显示器处理、图像转换以及其任何组合。
图5的处理流程图不意图表明应当按照任何特定顺序来执行方法500的各个步骤,也不意图表明在每一种情况下都应当包括方法500的所有步骤。此外,取决于具体应用,在方法500内可以包括任何数目的附加步骤。举例来说,打印设备130可以打印先前利用可伸缩计算结构处理过的图像。
图6是根据本发明的实施例的可伸缩计算结构600的图示。可伸缩计算结构600例如可以是可伸缩计算结构102(图1)。可伸缩计算结构600还可以是作为打印设备(比如图1的打印设备130)的一个组件的可伸缩计算结构134。
外围组件快速互连(pcie)总线214和输入/输出控制器集线器(ich)216可以向可伸缩计算结构600提供输入/输出。可伸缩计算结构600还包括环形缓冲器212a、环形缓冲器212b和环形缓冲器212c。环形缓冲器212a允许pcie总线214和ich216向mimd定序器管线控制器218、sisd处理核心204、simd处理单元208和固定功能硬件210发送数据。此外,环形缓冲器212b允许固定功能硬件单元210向l3高速缓存222传递数据。虽然仅示出了l3高速缓存222,但是在可伸缩计算结构中可以存在任何数目的高速缓存。正如前面所讨论的那样,环形缓冲器212b允许从一个固定功能硬件单元向另一个固定功能硬件单元直接传递数据。环形缓冲器212c允许在mimd定序器管线控制器218、sisd处理核心204、simd处理单元208和固定功能硬件210之间直接传递数据。虽然示出了三个环形缓冲器,但是可伸缩计算结构可以包括任何数目的环形缓冲器。此外,可以基于指令动态地配置和重新配置环形缓冲器,所述指令比如是来自指令队列220a的指令。还可以基于来自存储器控制块220b或通信协议220c的数据重新配置环形缓冲器。
在一些实施例中,mimd定序器管线控制器可以包括优先权级别。因此,如果第一mimd定序器管线控制器具有高于第二mimd定序器管线控制器的优先权,则当第二mimd定序器管线控制器正在使用第一mimd定序器管线控制器希望使用的资源或计算元件时,第一mimd定序器管线控制器能够中断第二mimd定序器管线控制器。此外,可以在管线之间共享资源,并且mimd定序器基于可编程的策略来仲裁管线之间的资源共享,所述可编程的策略比如是优先权、期望带宽、性能或者被用来管理资源的任何其他策略。在一些实施例中,mimd定序器管线控制器仲裁可伸缩计算结构资源的使用。mimd定序器管线控制器还确保数据和指令将适合于所配置的管线。因此,多个mimd定序器管线控制器可以对可伸缩计算结构的资源实施仲裁、优先权排序、争用和管理。
在一些实施例中,可伸缩计算结构可以被使用在打印设备中,比如打印设备130。举例来说,打印设备可以包括能够扫描文档的扫描模块。打印设备可以将扫描文档转换成各种文件格式,比如pdf文件格式。打印设备还可以被用来增强扫描文档或者改动扫描文档内的图像。因此,利用可伸缩计算结构,可以配置管线以实施为打印机指派的各种任务,其中包括而不限于扫描、文件格式转换、增强以及图像改动。此外,在一些实施例中,可以将可伸缩计算结构与包括用于打印的资源的打印环境集成在一起。还可以把包括可伸缩计算结构的计算设备集成到打印环境中。
本技术创建可以针对给定的处理、数据流而被流线化和优化的管线。当前,按照通用方式设计soc架构以便总体上胜任为多种工作负荷服务。许多资源或计算元件不可用于单独的动态可配置的使用。举例来说,许多当前的gpu固定功能硬件计算资源不可用于单独的使用和配置到特定管线中。通过本技术,每一个组件、资源或计算元件是单独可用并且可访问的。此外,可以根据将要处理的特定工作负荷动态地配置或重新配置每一个组件、资源或计算元件。
实例1
这里提供了一种用于提供可伸缩计算结构的方法。提供用以确定由可伸缩计算结构处理的工作流程的逻辑。所述工作流程基于一个指令集合。提供用以动态地配置用于处理所述工作流程的管线的逻辑,并且提供用以利用所述管线执行所述工作流程的逻辑。可以通过以下步骤来配置管线:为管线分配计算资源,为管线保留存储器资源和总线带宽,以及调度管线的工作流程使用。所述管线可以由多项软件应用或者其他连接的系统同时使用,以便通过所述管线接受多指令多数据(mimd)流并且对各个mimd流进行定序。此外,多条管线可以被配置来接受同时的多指令多数据(mimd)流,并且各条管线可以在共享的计算、存储器、逻辑和互连资源上操作。此外,所述管线可以包括一个或更多处理核心。至少一个处理核心可以响应于工作流程的大小而被断电。此外,至少一个处理核心可以响应于将资源动态配置到某一管线中以便支持某一工作流程而被断电。
管线的全部或一部分可以被降低功率到较低功率状态、对应于较低性能的较低时钟速率或者被设定到对应于更高性能的更高时钟速率。可以调节管线中的电压以便获得更高的或较低的功率和性能速率。所述管线还可以包括simd计算阵列。simd计算阵列可以包括被合并到动态地可配置并且可共享的计算资源中的高级矢量扩展(avx)®单指令多数据(simd)单元或执行单元(eu)当中的至少一项或更多项。管线可以实施动态地可配置的功能。此外,执行工作流程可以包括图像处理、图像增强、图像分析、计算机视觉、增强真实性、深度感测、手势辨识、面部辨识、计算机游戏、计算机图形、媒体处理、摄影机或传感器处理、摄影机处理、显示器处理、图像转换或者其任何组合。此外,所提供的可伸缩计算结构可以被集成到打印环境中。
实例2
这里提供了一种具有可伸缩计算结构的计算设备。所述计算设备包括定序器和多个逻辑处理元件。所述多个逻辑处理元件包括处理核心、逻辑块、i/o设备、i/o通道、总线、显示设备以及存储器资源。定序器在成像管线中对命令和数据进行控制和定序,并且定序器、处理核心、逻辑块、i/o设备、i/o通道、总线、显示设备和存储器资源构成可以被动态地配置来生成所述成像管线的可伸缩计算结构。定序器还接受来自队列、共享存储器命令和数据区段、或者网络或互连上的通信协议流当中的一项或更多项的多指令多数据(mimd)流。
可以利用芯片上系统(soc)来实施可伸缩计算结构。此外,所述成像管线可以是动态地可重新配置的。还可以对成像管线进行预先配置。可以保留多个逻辑处理元件以供定序器使用,或者将所述多个逻辑处理元件分配到处理群组或管线中。此外,多个逻辑计算元件当中的至少一个或更多个可以响应于工作流程或计算活动的大小或者工作流程的无活动而被断电。可伸缩计算结构可以包括simd计算阵列,simd计算阵列包括算术和逻辑单元(alu)阵列(其包括多个alu)和寄存器阵列(其包括多个寄存器)。定序器可以被配置来保留和控制逻辑计算元件,并且将其组装到计算管线中,对于成像管线实施仲裁、优先权排序和争用管理。可伸缩计算结构还可以包括固定功能硬件单元。此外,所述计算设备可以是图像捕获设备或图像显示设备。所述计算设备还可以被集成到打印环境中。
实例3
这里描述了一种用以打印工作负荷的打印设备。所述打印设备包括打印对象模块。打印对象模块可以被配置来确定用于由可伸缩计算结构处理的工作流程,并且动态地配置用于处理所述工作流程的管线。利用所述管线来执行所述工作流程。所述工作流程可以是成像工作负荷。此外,处理所述工作流程可以包括以下各项当中的至少一项或更多项:图像处理、图像增强、图像分析、图像输入以及图像转换。
在前面的描述中,对所公开的主题内容的各个方面进行了描述。出于解释的目的,前面阐述了特定数字、系统和配置以便提供对于主题内容的透彻理解。但是受益于本公开内容的本领域技术人员将认识到,可以在没有这些具体细节的情况下实践主题内容。此外,对众所周知的特征、组件或模块进行了省略、简化、组合或分解,以免模糊所公开的主题内容。
所公开的主题内容的各个实施例可以通过硬件、固件、软件或者其组合来实施,并且可以参照或者结合程序代码来描述,所述程序代码比如是用于设计的仿真、模拟和制作的指令、函数、规程、数据结构、逻辑、应用程序、设计表示或格式,其在由机器访问时导致所述机器实施任务、定义抽象数据类型或低层级硬件情境或者产生结果。
对于仿真,程序代码可以利用硬件描述语言或者另一种功能描述语言(其实质上提供所设计的硬件预期会如何实施的模型)来表示硬件。程序代码可以是汇编或机器语言,或者是可以被编辑和/或解译的数据。此外,在本领域内常常以一种形式或另一种形式提到采取动作或导致结果的软件。这样的表示法仅仅是陈述由处理系统执行程序代码的一种简略方式,其导致处理器实施动作或产生结果。
程序代码例如可以被存储在易失性和/或非易失性存储器中,比如存储设备和/或相关联的机器可读或机器可访问介质,其中包括固态存储器、硬盘驱动器、软盘、光学存储装置、带、闪存、记忆棒、数字视频盘、数字通用盘(dvd)等等,以及例如机器可访问生物状态保存存储装置之类的更加特殊的介质。机器可读介质可以包括用于以可由机器读取的形式存储、传送或接收信息的任何有形机制,比如天线、光纤、通信接口等等。可以通过分组、串行数据、并行数据等形式来传送程序代码,并且可以在已压缩或已加密格式中使用。
程序代码可以被实施在可编程机器上所执行的程序中,所述可编程机器比如是移动或静止计算机、个人数字助理、机顶盒、蜂窝电话和寻呼机以及其他电子设备,其分别包括处理器、可由处理器读取的易失性和/或非易失性存储器、至少一个输入设备以及/或者一个或更多输出设备。可以将程序代码应用于利用输入设备输入的数据,以便实施所描述的实施例并且生成输出信息。可以将输出信息应用于一个或更多输出设备。本领域技术人员可以认识到,可以利用各种计算机系统配置来实践所公开的主题内容的实施例,所述计算机系统配置包括多处理器或多核处理器系统、小型计算机、大型计算机以及可以被嵌入到实际上任何设备中的普适或小型计算机或处理器。还可以在分布式计算环境中实践所公开的主题内容的实施例,其中可以由通过通信网络链接的远程处理设备来实施任务。
虽然各项操作可能被描述成顺序的处理,但是其中一些操作实际上可以被并行地、同时地以及/或者在分布式环境中实施,并且其中程序代码被本地存储和/或远程存储以供单处理器或多处理器机器访问。此外,在一些实施例中,在不背离所公开的主题内容的精神的情况下可以重新安排各项操作的顺序。程序代码可以由嵌入式控制器使用或者与之相结合来使用。
虽然已参照说明性实施例描述了所公开的主题内容,但是此描述不意图按照限制性意义来解释。所公开的主题内容所涉及的领域内的技术人员能够想到的说明性实施例的各种修改以及主题内容的其他实施例被认为落在所公开的主题内容的范围内。