在专用功能硬件和使用软件例程间切换以生成结果数据的制作方法

文档序号:6428411阅读:150来源:国知局
专利名称:在专用功能硬件和使用软件例程间切换以生成结果数据的制作方法
技术领域
本发明涉及数据处理系统的领域。更具体地,本发明涉及包括用于执行程序指令和专用功能硬件的数据处理系统,该专用功能硬件与处理电路相耦合,以用于执行专用处理操作。
背景技术
提供数据处理系统是已知的,该数据处理系统包括用于执行程序指令流的通用处理器和专用功能硬件二者。专用功能硬件可以是例如被设计和提供来执行诸如对大量媒体数据的压缩或解压缩之类的具体处理功能的加速硬件。另一个示例可以是通用处理器,该通用处理器设置有用于执行某些操作的协同处理器(coprocessor)。在该情形中,如果在实现方式中未出现协同处理器,则试图利用该协同处理器的软件通常将触发异常,并且使得原本将由协同处理器(专用功能硬件)执行的处理被运行在通用处理器上的仿真软件执行。因此,对协同处理器的使用取决于协同处理器是否出现。

发明内容
从本发明的一方面来看,其提供了一种用于处理数据的装置,包括处理电路,该处理电路被配置为执行数据处理操作;指令译码器电路,该指令译码器电路与所述处理电路相耦合并响应于程序指令流来生成控制信号,以控制所述处理电路执行所述数据处理操作;以及专用功能硬件,该专用功能硬件与所述处理电路相耦合,并且被配置为从所述处理电路接收输出数据并对所述输出数据执行专用处理操作以生成硬件生成的结果数据;其中所述指令译码器电路响应于结束指令和软件处理标志生成控制信号,以控制所述处理电路结束当前的软件例程、生成所述输出数据、并且执行以下操作(i)如果所述软件处理标志具有第一值,则触发所述专用功能硬件从所述处理电路接收所述输出数据,并且执行所述专用处理操作以生成所述硬件生成的结果数据;或者(ii)如果所述软件处理标志具有第二值,则触发所述处理电路对所述输出数据执行进一步的软件例程,以生成软件生成的结果数据,而非所述硬件生成的结果数据。本技术认识到,即便在总设置有专用功能硬件的实施例中,也存在希望不使用该专用功能硬件而使用软件例程来执行某些所希望的处理的情形。另外,本技术寻求提供一种机制,该机制允许切换到使用软件例程而非专用功能硬件,同时这种切换的控制具有低硬件和性能开销。当前的软件例程以结束指令结束,并且负责对该结束指令译码的指令译码器被修改,以响应于指示软件例程应当被使用的标志来触发该软件例程的执行。否则,默认的行为将是使用总存在的专用功能硬件。通过这种方式,可获得额外的灵活性,从而使不容易由专用功能硬件提供的特定特征的处理可被软件例程执行。应当理解,处理电路可包括响应于程序指令流的单个处理器。可替换地,处理电路可包括多个处理器,并且,指令译码器电路可包括多个指令译码器,每个处理器与对应的指令译码器相耦合。然后,这些处理器和指令译码器的组合中的每一个可响应于它们自身的程序指令流。这提供了并行的执行环境。当前的软件例程和进一步的软件例程可以被不同的处理器执行。但是,共同的处理器执行当前的软件例程并随后执行进一步的软件例程是方便的,因为这样将避免以下开销和复杂度必须切换处理器以及确保由当前的软件例程所生成的数据对进一步的软件例程是可用的。由系统所执行的处理可以是多线程的。可以存在运行在单个处理器上的多个线程,以及跨越多个处理器的多个线程。虽然本技术具有通用的适应性,但是,当装置是专用图形处理电路时,其将非常适于使用。这种专用图形处理电路通常是高度计算密集型的,其任务被分割成多个部分,这些部分的某些适于由专用功能硬件执行,而同时其他的更适于由编程的通用处理器执行。在此图形处理电路的上下文中,当前的软件例程可以是生成输出数据(其为像素颜色值)的片段着色器。在这种情形中,专用功能硬件可以是混合功能硬件,该混合功能硬件响应于输出像素颜色值和存储在帧缓冲器中的至少一个当前的像素颜色值,以生成将被存储在帧缓冲存储器中以替代当前的像素颜色值的结果像素颜色值。这种先片段处理接着混合处理的模式是典型的图形处理环境。如果所设置的混合功能硬件不能提供所希望的处理特性,则本技术辅助了可被触发的为混合着色器的进一步的软件例程,该混合着色器响应于输出像素颜色值和存储在帧缓冲器中的至少一个当前的像素颜色值,以生成将被存储在帧缓冲存储器中以替代当前的像素颜色值的结果像素颜色值。专用功能硬件可响应于一个或多个配置参数,以修改由专用功能硬件所执行的专用处理操作。因此,专用功能硬件能够在其执行的处理中有某些变化,但是,并不能像执行程序指令流的通用处理器(诸如进一步的软件例程)一样灵活。专用功能硬件可被触发以开始其专用处理操作的方式是通过将输出数据存储到存储器中(这种存储操作被在硬件中检测到)并随后触发对专用处理硬件的操作来进行的。终止当前的软件例程的结束指令还可被用于终止进一步的软件例程。这从指令编码的角度来看是高效的。在这种情形中,可以提供例程标志,以指示处理电路当前是否正在执行当前的软件例程。因此,如果例程标志并未指示处理电路正在执行当前的软件例程,则对进一步的软件例程的执行的触发将被抑制。可编程分支地址可被存储作为指定了进一步的软件例程的开始地址的配置参数。结束指令可被布置,使得其触发分支到由结束指令自身所指定的目标地址,直到一个或多个预定依赖条件被满足为止。因此,由专用功能硬件或进一步的软件例程所进行的处理的开始可通过使结束指令执行其分支功能来根据一个或多个预定依赖条件而被开启(而非触发由专用功能硬件或由进一步的软件例程所进行的处理)。从本发明的另一方面来看,提供了一种用于处理数据的设备,包括处理装置,该处理装置用于执行数据处理操作;指令译码装置,该指令译码装置用于生成控制信号,以控制所述处理电路响应于程序指令流来执行所述数据处理操作;以及
专用功能硬件装置,该专用功能硬件装置用于从所述处理装置接收输出数据并对所述输出数据执行专用处理操作,以生成硬件生成的结果数据;其中所述指令译码装置响应于结束指令和软件处理标志生成控制信号,以控制所述处理装置结束当前的软件例程、生成所述输出数据、并且执行以下操作(i)如果所述软件处理标志具有第一值,则触发所述专用功能硬件装置从所述处理装置接收所述输出数据,并且执行所述专用处理操作以生成所述硬件生成的结果数据; 或者(ii)如果所述软件处理标志具有第二值,则触发所述处理装置对所述输出数据执行进一步的软件例程,以生成软件生成的结果数据,而非所述硬件生成的结果数据。从本发明的又一方面来看,提供了一种处理数据的方法,包括如下步骤利用处理电路来执行数据处理操作;对程序指令流译码以生成控制信号,从而控制所述处理电路执行所述数据处理操作;以及从所述处理电路接收输出数据,并且对所述输出数据执行专用处理操作,以利用专用功能硬件生成硬件生成的结果数据;其中所述译码步骤响应于结束指令和软件处理标志生成控制信号,以控制所述处理设备结束当前的软件例程、生成所述输出数据、并且执行以下操作(i)如果所述软件处理标志具有第一值,则触发所述专用功能硬件从所述处理设备接收所述输出数据,并且执行所述专用处理操作以生成所述硬件生成的结果数据;或者(ii)如果所述软件处理标志具有第二值,则触发所述处理设备对所述输出数据执行进一步的软件例程,以生成软件生成的结果数据,而非所述硬件生成的结果数据。本发明的以上及其他对象、特征和优点将从下面结合附图阅读的对说明性实施例的详细的描述中变得明显。


图1示意性地示出了图形处理系统的一部分,该图形处理系统包括专用功能硬件和将被用于替代专用功能硬件的进一步的软件例程二者;图2示意性地示出了响应于程序指令流的通用处理器;图3示意性地示出了包括处理器阵列和存储器的图形处理装置,该存储器存储图形上下文状态和与图形处理相关联的其他数据;图4是示意性地示出了当对结束指令进行译码时指令译码器的操作的流程图;以及图5是示出了根据本技术的一个实施例的结束指令的功能的伪代码。
具体实施例方式图1示意性地示出了图形处理系统2。光栅化器(rasterizer)硬件4负责读取指定要绘制的图形原语(graphics primitive)(例如,原语三角形)的图形上下文状态6,并从其生成通常与要绘制的像素相对应的图形片段流以作为已被光栅化的图形原语的表示的一部分。将意识到,应当理解,在光栅化器硬件4的动作之前可以执行进一步的图形处理操作,诸如空间变换、顶点和原语分类等。光栅化器硬件4生成标识了要绘制的片段(像素)的数据流。它们被传递给片段着色器(fragment shader)软件8,用以确定与每个片段相关联的像素颜色值。片段着色器8以运行在图形处理系统2的通用处理器上的软件例程的形式被提供。通常,许多通用处理器被并行地设置在图形处理系统中,使得多个像素可被并行处理,并且可以并行执行其他处理操作。片段着色器8 (当前软件例程)以结束指令完成。该结束指令直到预定依赖条件满足才分支回自身。通过这种方式,对由片段着色器8所生成的像素颜色值的进一步处理可被延迟,直到达到在处理序列中的合适点为止(对应于所有的依赖关系被满足),并且, 像素颜色值可被向前传递以用于混合。结束指令被正执行片段着色器的通用处理器中的指令译码器译码。指令译码器执行以产生控制信号,该控制信号控制混合处理如何被执行。与对像素值(单个处理例程)的处理相关联的图形上下文状态6包括blend_shader_enabled标志和in_fragment_shader 标志。如果当结束指令被译码时blend_Shader_enabled标志为真,则这表明混合处理应当被混合着色器10 (进一步的软件例程)执行,而非被专用混合功能硬件12执行。专用混合功能硬件12和混合着色器10 二者被设置在系统中。因此,如果blend_Shader_enabled 标志为真,则混合着色器10将处理像素颜色值,以利用在帧缓冲存储器14中的对应位置处的当前像素值执行混合操作,以产生软件生成的结果像素颜色值,该结果像素颜色值被写回到帧缓冲存储器14中的对应位置。或者,如果blend_Shader_enabled标志为假,则像素颜色值被专用混合功能硬件12处理,该专用混合功能硬件默认表现为生成硬件生成的结果像素颜色值,该结果像素颜色值同样被写回到帧缓冲存储器14中。因此,取决于blend_ shader_enabled标志,在片段着色器8(当前的软件例程)中的相同的结束指令可被用于触发专用混合功能硬件12或混合着色器10 (进一步的软件例程)的使用。另一特征是对irufragmentshader标志的使用。其被提供作为能被用于终止片段着色器8和混合着色器10 二者的相同的结束指令。当终止混合着色器10时,由另一混合着色器10触发对来自混合着色器10的输出的处理是不合适的。因此,如果in_fragment_ shader标志表明当该结束指令被遇到并译码时通用处理器正执行片段着色器8,则该结束指令将仅调用混合着色器10。图2示出了可被用于执行片段着色器8和/或混合着色器10的类型的图形处理单元中的通用处理器16。组成片段着色器8或混合着色器10的程序指令被提供到指令管道(pipeline) 18。指令译码器20响应于这些程序指令以生成控制信号22,该控制信号在处理存储在寄存器沈中的数据值时控制由数据路径M所执行的处理操作。指令译码器20 还可控制处理器16,以将数据存储到分开的存储器中,并且从这些分开的存储器读取数据。 寄存器沈以堆积的形式被示出,该形式指示处理器16的多线程能力,该能力通过当在不同执行线程(不同程序指令流)间切换时使用在不同寄存器库中的切换而得到辅助。图3示出了包括处理器16的阵列28的图形处理单元。这种阵列28高度辅助了非常适于图形处理操作的类型的并行处理。存储器30存储被处理器16的各个实例执行的混合着色器程序34和片段着色器程序32。存储器30还包括帧缓冲器14,结果像素颜色值由混合处理集合到帧缓冲器14中。存储器30还存储图形上下文状态6和可编程分支目标地址36,该可编程分支目标地址36指示混合着色程序34的开始地址,当结束指令触发对进一步的软件例程(混合着色器10)的使用时,混合着色器程序34将被执行。图4是示意性地示出了对结束指令的译码的流程图。结束指令具有助记符号 (mnemonic)BRNDEND(分支无依赖结束)。步骤38等待,直到接收到结束指令为止。当接收到结束指令时,步骤40确定与该处理线程(以及由此与结束指令)相关联的所有依赖关系是否已被满足。当所有依赖关系并未满足时,处理返回到步骤38。在步骤40,当所有依赖关系被满足时,则处理进行到步骤42,在步骤42,确定 blend_shader_enabled标志是否为真。如果blend_shader_enabled标志为假,则处理进行到步骤44,在步骤44,来自片段着色器8的颜色像素值被输出(例如,被写入到存储器30), 并且用于计算该像素颜色值的片段着色器线程8被终止。将像素颜色值写入存储器30触发了专用混合功能硬件12从存储器30读取该像素颜色值,并且随之开始对其进行专用处理操作。如果在步骤42确定blend_shader_enabled标志为真,则处理进行到步骤46,在步骤46,确定in_fragment_shader标志是否为真。如果in_fragment_shader标志为假, 则处理再次进行到步骤44。在这种情形中,颜色像素值将再次被输出,并且线程将被终止。 但是,由于所终止的线程不是片段着色器8,因此调用专用混合功能硬件12的处理是不合适的。颜色像素值以及其他状态数据所存储的位置用来指示专用混合功能硬件12是否应当在步骤44中输出颜色像素值时被调用。如果在步骤46确定in_fragment_shader标志为真,则处理进行到步骤48,在步骤48,in_fragment_shader标志被设置为假。这是因为混合着色器10将被调用,并且由此 irufragmentshader标志应当表明将发生的程序指令受控处理并非片段着色器处理。步骤 50是到目标地址的分支,该目标地址由存储在存储器30中的blend_shader_address指示并对应于混合着色器程序34的开始地址。步骤52执行混合着色器10,并且生成被再次写入到帧缓冲存储器14中的结果像素颜色值。图5是示意性地示出了当结束指令M被译码时所执行的处理操作的伪代码。这些处理操作被在图4中示出。虽然此处已经参照附图详细描述了发明的说明性实施例,但是,应当理解,发明并不限于这些精确的实施例,并且,本领域技术人员可产生多种变更例和修改例,只要不偏离由权利要求所定义的发明的范围和精神即可。
权利要求
1.一种用于处理数据的装置,包括处理电路,该处理电路被配置为执行数据处理操作;指令译码器电路,该指令译码器电路与所述处理电路相耦合并响应于程序指令流来生成控制信号,以控制所述处理电路执行所述数据处理操作;以及专用功能硬件,该专用功能硬件与所述处理电路相耦合,并且被配置为从所述处理电路接收输出数据并对所述输出数据执行专用处理操作以生成硬件生成的结果数据;其中所述指令译码器电路响应于结束指令和软件处理标志生成控制信号,以控制所述处理电路结束当前的软件例程,生成所述输出数据,并且执行以下操作(i)如果所述软件处理标志具有第一值,则触发所述专用功能硬件从所述处理电路接收所述输出数据,并且执行所述专用处理操作以生成所述硬件生成的结果数据;或者( )如果所述软件处理标志具有第二值,则触发所述处理电路对所述输出数据执行进一步的软件例程以生成软件生成的结果数据,而非所述硬件生成的结果数据。
2.如权利要求1所述的装置,其中,所述处理电路包括多个处理器,所述指令译码器电路包括多个指令译码器,并且所述多个处理器中的每个处理器与所述多个指令译码器中的一个指令译码器相耦合,所述指令译码器响应于程序指令流而生成控制信号以控制所述处理器。
3.如权利要求2所述的装置,其中,所述当前的软件例程和所述进一步的软件例程被所述多个处理器中的一个共同的处理器执行。
4.如权利要求2所述的装置,其中,所述处理器中的每一个响应于多个程序指令流执行多个处理线程。
5.如权利要求1所述的装置,其中,所述处理电路响应于多个程序指令流执行多个处理线程。
6.如权利要求1所述的装置,其中,所述装置是专用图形处理电路。
7.如权利要求6所述的装置,其中,所述当前的软件例程是片段着色器,并且所述输出数据是输出像素颜色值。
8.如权利要求7所述的装置,其中,所述专用功能硬件是混合功能硬件,该混合功能硬件响应于所述输出像素颜色值和当前存储在帧缓冲存储器中的至少当前的像素颜色值,以生成将被存储在所述帧缓冲存储器中以替代所述当前的像素颜色值的结果像素颜色值。
9.如权利要求8所述的装置,其中,所述进一步的软件例程是混合着色器,该混合着色器响应于所述输出像素颜色值和当前存储在帧缓冲存储器中的至少当前的像素颜色值,以生成将被存储在所述帧缓冲存储器中以替代所述当前的像素颜色值的结果像素颜色值。
10.如权利要求1所述的装置,其中,所述专用功能硬件响应于一个或多个配置参数以修改由所述专用功能硬件所执行的所述专用处理操作。
11.如权利要求1所述的装置,其中,如果所述软件处理标志具有所述第一值,则所述结束指令触发所述处理电路以将所述输出数据存储到存储器,从而触发所述专用功能硬件从所述存储器读取所述输出数据并且执行所述专用处理操作。
12.如权利要求1所述的装置,其中,所述结束指令终止所述当前的软件例程和所述进一步的软件例程,并且所述指令译码器当对所述结束指令译码时响应于指示所述处理电路是否正在执行所述当前的软件例程的例程标志,以在所述例程标志并不指示所述处理电路正在执行所述当前的软件例程的情况下抑制触发所述进一步的软件例程的执行。
13.如权利要求1所述的装置,其中,所述指令译码器响应于可编程分支地址,该可编程分支地址作为所述装置的配置参数存储并指定了所述进一步的软件例程的开始地址。
14.如权利要求1所述的装置,其中,所述结束指令分支到由所述结束指令所指定的目标地址,直到一个或多个预定依赖条件被满足为止。
15.一种用于处理数据的设备,包括处理装置,该处理装置用于执行数据处理操作;指令译码装置,该指令译码装置用于生成控制信号,以控制所述处理装置响应于程序指令流来执行所述数据处理操作;以及专用功能硬件装置,该专用功能硬件装置用于从所述处理装置接收输出数据并对所述输出数据执行专用处理操作,以生成硬件生成的结果数据;其中所述指令译码装置响应于结束指令和软件处理标志生成控制信号,以控制所述处理装置结束当前的软件例程,生成所述输出数据,并且执行以下操作(i)如果所述软件处理标志具有第一值,则触发所述专用功能硬件装置从所述处理装置接收所述输出数据,并且执行所述专用处理操作以生成所述硬件生成的结果数据;或者( )如果所述软件处理标志具有第二值,则触发所述处理装置对所述输出数据执行进一步的软件例程以生成软件生成的结果数据,而非所述硬件生成的结果数据。
16.一种处理数据的方法,包括如下步骤 利用处理电路来执行数据处理操作;对程序指令流译码以生成控制信号,从而控制所述处理电路执行所述数据处理操作;以及利用专用功能硬件从所述处理电路接收输出数据,并且对所述输出数据执行专用处理操作,以生成硬件生成的结果数据;其中所述译码步骤响应于结束指令和软件处理标志生成控制信号,以控制所述处理设备结束当前的软件例程,生成所述输出数据,并且执行以下操作(i)如果所述软件处理标志具有第一值,则触发所述专用功能硬件从所述处理设备接收所述输出数据,并且执行所述专用处理操作以生成所述硬件生成的结果数据;或者( )如果所述软件处理标志具有第二值,则触发所述处理设备对所述输出数据执行进一步的软件例程以生成软件生成的结果数据,而非所述硬件生成的结果数据。
17.如权利要求16所述的方法,其中,所述处理电路包括多个处理器,所述译码由多个指令译码器执行,并且所述多个处理器中的每个处理器与所述多个指令译码器中的一个指令译码器相耦合,所述指令译码器响应于程序指令流以生成控制信号来控制所述处理器。
18.如权利要求17所述的方法,所述当前的软件例程和所述进一步的软件例程被所述多个处理器中的一个共同的处理器执行。
19.如权利要求17所述的方法,所述处理器中的每一个响应于多个程序指令流执行多个处理线程。
20.如权利要求16所述的方法,所述处理电路响应于多个程序指令流执行多个处理线程。
21.如权利要求16所述的方法,其中,所述方法是专用图形处理方法。
22.如权利要求21所述的方法,其中,所述当前的软件例程是片段着色器,并且所述输出数据是输出像素颜色值。
23.如权利要求22所述的方法,其中,所述专用功能硬件是混合功能硬件,该混合功能硬件响应于所述输出像素颜色值和当前存储在帧缓冲存储器中的至少当前的像素颜色值, 以生成将被存储在所述帧缓冲存储器中以替代所述当前的像素颜色值的结果像素颜色值。
24.如权利要求23所述的方法,其中,所述进一步的软件例程是混合着色器,该混合着色器响应于所述输出像素颜色值和当前存储在帧缓冲存储器中的至少当前的像素颜色值, 以生成将被存储在所述帧缓冲存储器中以替代所述当前的像素颜色值的结果像素颜色值。
25.如权利要求16所述的方法,其中,所述专用功能硬件响应于一个或多个配置参数, 以修改由所述专用功能硬件所执行的所述专用处理操作。
26.如权利要求16所述的方法,其中,如果所述软件处理标志具有所述第一值,则所述结束指令触发所述处理电路以将所述输出数据存储到存储器,从而触发所述专用功能硬件从所述存储器读取所述输出数据,并且执行所述专用处理操作。
27.如权利要求16所述的方法,其中,所述结束指令终止所述当前的软件例程和所述进一步的软件例程,并且所述指令译码器当对所述结束指令译码时响应于指示所述处理电路是否正在执行所述当前的软件例程的例程标志,以在所述例程标志并不指示所述处理电路正在执行所述当前的软件例程的情况下抑制对所述进一步的软件例程的执行的触发。
28.如权利要求16所述的方法,其中,所述指令译码器响应于可编程分支地址,该可编程分支地址作为所述装置的配置参数存储并指定了所述进一步的软件例程的开始地址。
29.如权利要求16所述的方法,其中,所述结束指令分支到由所述结束指令所指定的目标地址,直到一个或多个预定依赖条件被满足为止。
全文摘要
本发明公开了在专用功能硬件和使用软件例程间切换以生成结果数据。提供了用于处理数据的装置2,包括处理电路24,该处理电路24响应于程序指令流由指令译码器20控制。还提供了专用功能硬件12,该专用功能硬件12被配置为从处理电路接收输出数据并执行专用处理操作。指令译码器20响应于结束指令54和软件处理标志(blend_shade_enabled),以控制处理电路结束当前的软件例程、生成输出数据,并且取决于软件处理标志执行以下操作触发专用功能硬件对输出数据的处理,或者触发处理电路对输出数据执行进一步的软件例程以生成软件生成的结果数据,而非由专用硬件电路生成的硬件生成的结果数据。
文档编号G06F9/455GK102314345SQ201110193998
公开日2012年1月11日 申请日期2011年7月7日 优先权日2010年7月7日
发明者安德烈亚斯·恩格-哈尔斯特韦德特, 西蒙·琼斯, 阿斯克·西蒙·克里斯坦森 申请人:Arm有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1