信号处理装置和半导体装置转让专利

申请号 : CN201310052963.1

文献号 : CN103336716B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 松田圭介

申请人 : 瑞萨电子株式会社

摘要 :

本发明涉及信号处理装置和半导体装置。为了把将被保存的信息的量限制到必要的最小限度并且抑制在用于对诸如图像信号之类的流数据执行多任务的信号处理装置中发生与优先处理请求关联的任务切换时保存和返回所需的时间开销,信号处理装置包括指示与由信号处理单元进行的处理的进展对应的流数据中的数据的位置信息的指针。当请求优先任务处理时,信号处理装置仅仅保存指针值。在返回时,基于保存的指针值,信号处理装置获得返回的任务中接下来将输出的输出流数据的位置信息,并且获得需要被输入到信号处理单元以便计算数据的所有输入数据中的首输入数据的在输入流中的位置信息,并且恢复处理。

权利要求 :

1.一种信号处理装置,包括:

信号处理单元,接收由多段输入数据组成的输入流,对流数据运行预定的任务,并且输出由多段输出数据组成的输出流,以及用于存储输入流并且写入输出流的存储器以及任务切换控制单元,

其中输入流的输入数据被顺序地输入到信号处理单元,并且构成输出流的输出数据被顺序地从信号处理单元输出,其中信号处理装置包括指针,所述指针指示与由信号处理单元进行的处理的进展对应的流数据中的数据的位置信息,其中当在运行第一任务期间请求第二任务的优先处理时,信号处理装置在保存由指针保持的值之后运行第二任务,其中在完成第二任务时,基于保存的指针值,信号处理装置获得第一任务中接下来将输出的输出数据的在输出流中的位置信息,并且获得需要被输入到信号处理单元以便计算接下来将输出的输出数据的所有输入数据中的首输入数据的在输入流中的位置信息;

其中信号处理单元包括输入地址寄存器和输出地址寄存器,

其中输入地址寄存器保持信号处理单元读取的输入数据的在存储器中的地址,并且输出地址寄存器保持信号处理单元写入的输出数据的在存储器中的地址,其中在完成第二任务时,任务切换控制单元基于保存的指针值利用输出位置函数计算第一任务中接下来将输出的输出数据的在输出流中的位置信息,基于输出位置函数的输出利用输出地址函数计算接下来将输出的输出数据的在存储器中的地址,并且将所述地址写入到输出地址寄存器,其中任务切换控制单元基于保存的指针值利用输入位置函数计算首输入数据的在输入流中的位置信息,利用输入地址函数计算首输入数据的在存储器中的地址,并且将所述地址写入到输入地址寄存器,其中第一任务是包括多段信号处理的信号处理任务,在所述多段信号处理中通过由信号处理单元对输入流执行信号处理而获得的输出流依次是下一个信号处理的输入流,其中每个信号处理具有用于输出需要被输入到信号处理单元以便计算接下来将输出的输出数据的所有输入数据中的首输入数据的位置信息的部分位置函数,其中保存的指针值被输入到与多段信号处理中的在第一任务中最后运行的信号处理对应的部分位置函数,并且与多段信号处理中的在第一任务中随后运行的信号处理对应的部分位置函数的输出被输入到与先前刚刚运行的信号处理对应的部分位置函数,因此依次执行嵌套以便配置输入位置函数。

2.根据权利要求1所述的信号处理装置,其中流数据是图像数据,并且指针保持已经被信号处理单元输出的输出数据的在输出流中的像素编号、行编号、块编号、帧编号或者其组合,其中输出位置函数基于保存的指针值来计算第一任务中接下来将输出的输出数据的像素编号、行编号、块编号、帧编号或者其组合,其中输入位置函数基于保存的指针值来计算首输入数据的在输入流中的像素编号、行编号、块编号、帧编号或者其组合。

3.根据权利要求1所述的信号处理装置,

其中流数据是图像数据,并且指针保持已经被信号处理单元输出的输入数据的在输入流中的像素编号、行编号、块编号、帧编号或者其组合,其中输出位置函数基于保存的指针值来计算第一任务中接下来将输出的输出数据的像素编号、行编号、块编号、帧编号或者其组合,其中输入位置函数基于保存的指针值来计算首输入数据的在输入流中的像素编号、行编号、块编号、帧编号或者其组合。

4.根据权利要求1所述的信号处理装置,

其中流数据是图像数据,并且由信号处理单元执行的信号处理是n×n空间滤波,n是等于或者大于三的奇数,其中与空间滤波对应的部分位置函数输入其输出被完成的行编号并且输出保存的指针值的(n-1)/2行之前的行编号,其中输入位置函数包括与空间滤波对应的部分位置函数。

5.根据权利要求1所述的信号处理装置,

其中流数据是图像数据,并且由信号处理单元执行的信号处理是垂直尺寸V的图像的垂直翻转处理,所述垂直翻转处理用于读取从头开始的第(V-n+1)行上的输入流并且输出从头开始的第n行上的输入流,其中指针保持在垂直翻转处理中其输出被完成的行编号p,

其中与垂直翻转处理对应的部分位置函数输出第(V-p)行。

6.根据权利要求1所述的信号处理装置,

其中当在运行第一任务期间请求第二任务的优先处理时,信号处理装置在保存由指针保持的第一值之后运行第二任务,其中当在运行第二任务期间请求第三任务的优先处理时,信号处理装置在保存由指针保持的第二值之后运行第三任务,其中在完成第三任务时,基于保存的指针的第二值,信号处理装置获得第二任务中接下来将输出的输出数据的位置信息并且恢复第二任务,其中在完成第二任务时,基于保存的指针的第一值,信号处理装置获得第一任务中接下来将输出的输出数据的位置信息并且恢复第一任务。

7.一种半导体装置,在其中CPU、存储器和信号处理单元被耦接到总线,信号处理单元包括:信号处理模块;以及

信号处理控制单元,

其中信号处理模块接收由多段输入数据组成的输入流,对流数据运行预定的信号处理,并且输出由多段输出数据组成的输出流,其中信号处理控制单元包括指示与由信号处理模块进行的处理的进展对应的处理数据的在流数据中的位置信息的指针,通过指定读取地址而从存储器中读取输入数据并且将输入数据输入到信号处理模块,并且通过指定写入地址将信号处理模块的输出数据输出到存储器,其中当在运行第一任务期间请求第二任务的优先处理时,CPU允许信号处理单元在保存由指针保持的值之后运行第二任务,其中在完成第二任务时,CPU返回保存的指针值,并且基于返回的指针值,获得用于存储第一任务中接下来将输出的输出数据的存储器中的地址并且设定写入地址,并且获得用于存储需要被输入到信号处理单元以便计算接下来将输出的输出数据的所有输入数据中的首输入数据的地址并且设定读取地址,其中信号处理控制单元包括用于保持读取地址的读取地址寄存器、用于保持写入地址的写入地址寄存器、以及用于保持指针值的指针寄存器,其中当请求优先处理时,CPU将指针寄存器的第一值保存到存储器中,

其中在完成第二任务时,CPU将第一值从存储器返回到指针寄存器,

其中CPU基于第一值利用输出位置函数来计算第一任务中接下来将输出的输出数据的在输出流中的位置信息,基于输出位置函数的输出利用输出地址函数来计算第一任务中接下来将输出的输出数据的在存储器中的地址,并且将所述地址写入到写入地址寄存器,其中CPU基于第一值利用输入位置函数来计算首输入数据的在输入流中的位置信息,利用输入地址函数来计算首输入数据的在存储器中的地址,并且将所述地址写入到读取地址寄存器,其中第一任务是包括多段信号处理的信号处理任务,在所述多段信号处理中通过由信号处理单元对输入流执行信号处理而获得的输出流依次是下一个信号处理的输入流,其中每个信号处理具有用于输出需要被输入到信号处理单元以便计算接下来将输出的输出数据的所有输入数据中的首输入数据的位置信息的部分位置函数,其中保存的指针值被输入到与多段信号处理中的在第一任务中最后运行的信号处理对应的部分位置函数,并且与多段信号处理中的在第一任务中随后运行的信号处理对应的部分位置函数的输出被输入到与先前刚刚运行的信号处理对应的部分位置函数,因此依次执行嵌套以便配置输入位置函数。

8.根据权利要求7所述的半导体装置,

其中信号处理控制单元还包括参数寄存器,

其中信号处理模块根据由参数寄存器保持的参数来运行信号处理,

其中当请求优先处理时,CPU在没有保存的情况下丢弃由参数寄存器保持的值,并且将用于允许信号处理模块运行第二任务的参数写入到参数寄存器。

9.根据权利要求8所述的半导体装置,

其中存储器存储用于由信号处理模块运行的处理的每个处理内容的参数,其中当请求处理任务时,CPU从存储器读取与处理任务的处理内容对应的参数,并且将参数写入到参数寄存器。

10.一种半导体装置,在其中CPU、存储器、信号处理单元和上下文处理单元被耦接到总线,信号处理单元包括:

信号处理模块;以及

信号处理控制单元,

其中信号处理模块接收由多段输入数据组成的输入流,对流数据运行预定的信号处理,并且输出由多段输出数据组成的输出流,其中信号处理控制单元包括指示与由信号处理模块进行的处理的进展对应的处理数据的在流数据中的位置信息的指针,通过指定读取地址而从存储器中读取输入数据并且将输入数据输入到信号处理模块,并且通过指定写入地址将信号处理模块的输出数据输出到存储器,其中上下文处理单元包括上下文位置存储单元和复原单元,

其中当在运行第一任务期间请求第二任务的优先处理时,上下文处理单元允许信号处理单元在将由指针保持的值保存到上下文位置存储单元中之后运行第二任务,其中在完成第二任务时,上下文处理单元返回保存的指针值,其中基于返回的指针值,复原单元获得用于存储第一任务中接下来将输出的输出数据的存储器中的地址并且设定写入地址,并且获得用于存储需要被输入到信号处理单元以便计算接下来将输出的输出数据的所有输入数据中的首输入数据的地址并且设定读取地址,其中信号处理控制单元包括用于保持读取地址的读取地址寄存器、用于保持写入地址的写入地址寄存器、以及用于保持指针值的指针寄存器,其中当请求优先处理时,上下文处理单元将指针寄存器的第一值保存到上下文位置存储单元中,其中在完成第二任务时,上下文处理单元将第一值从上下文位置存储单元返回到指针寄存器,其中复原单元基于第一值利用输出位置函数来计算第一任务中接下来将输出的输出数据的在输出流中的位置信息,基于输出位置函数的输出利用输出地址函数来计算第一任务中接下来将输出的输出数据的在存储器中的地址,并且将所述地址写入到写入地址寄存器,其中复原单元基于第一值利用输入位置函数来计算首输入数据的在输入流中的位置信息,利用输入地址函数来计算首输入数据的在存储器中的地址,并且将所述地址写入到读取地址寄存器,其中第一任务是包括多段信号处理的信号处理任务,在所述多段信号处理中通过由信号处理单元对输入流执行信号处理而获得的输出流依次是下一个信号处理的输入流,其中每个信号处理具有用于输出需要被输入到信号处理单元以便计算接下来将输出的输出数据的所有输入数据中的首输入数据的位置信息的部分位置函数,其中保存的指针值被输入到与多段信号处理中的在第一任务中最后运行的信号处理对应的部分位置函数,并且与多段信号处理中的在第一任务中随后运行的信号处理对应的部分位置函数的输出被输入到与先前刚刚运行的信号处理对应的部分位置函数,因此依次执行嵌套以便配置输入位置函数。

11.根据权利要求10所述的半导体装置,

其中信号处理控制单元还包括参数寄存器,

其中信号处理模块根据由参数寄存器保持的处理参数来运行信号处理,

其中当请求优先处理时,复原单元在没有保存的情况下丢弃由参数寄存器保持的值,并且将用于允许信号处理模块运行第二任务的处理参数写入到参数寄存器。

12.根据权利要求11所述的半导体装置,

其中存储器存储用于由信号处理模块运行的处理的每个内容的处理参数,其中当请求任务时,复原单元将与所述任务的处理内容对应的处理参数从存储器传送到参数寄存器。

13.根据权利要求10所述的半导体装置,

其中当在运行第一任务期间请求第二任务的优先处理时,上下文处理单元将由指针保持的值与第一任务的上下文编号关联并且保存到上下文位置存储单元中,其中在完成第二任务时,复原单元基于保存的上下文编号和返回的指针值来设定写入地址和读取地址。

14.根据权利要求13所述的半导体装置,

其中存储器存储用于由信号处理模块运行的处理的每个内容的处理参数,其中在完成优先处理时,复原单元基于保存的上下文编号将与第一任务的处理内容对应的处理参数从存储器传送到参数寄存器。

15.根据权利要求14所述的半导体装置,

其中当在运行第一任务期间请求第二任务的优先处理时,上下文处理单元将由指针保持的第一任务的指针值与第一任务的上下文编号关联并且保存到上下文位置存储单元中,其中当在运行第二任务期间请求第三任务的优先处理时,上下文处理单元将由指针保持的第二任务的指针值与第二任务的上下文编号关联并且保存到上下文位置存储单元中,其中在完成第三任务时,复原单元基于第二任务的上下文编号返回第二任务的处理参数并且复原第二任务的指针值,其中在完成第二任务时,复原单元基于第一任务的上下文编号返回第一任务的处理参数并且复原第一任务的指针值。

说明书 :

信号处理装置和半导体装置

[0001] 相关申请的交叉引用
[0002] 2012年2月17日提交的日本专利申请No.2012-032685的公开内容(包括说明书、附图和摘要)通过参考而被全部并入于此。

背景技术

[0003] 本发明涉及用于运行多个信号处理任务的装置和LSI,并且特别涉及在抑制与向优先处理的任务切换关联的开销(overhead)方面有效的技术。
[0004] 在用于处理图像的数字装置(例如蜂窝电话、数字式照相机和汽车导航系统)中,存在图像分辨率变得更高并且功能变得更先进和复杂的趋势;因此,要求用于对流数据(例如图像)执行信号处理的LSI等运行多个图像处理任务。在这时候,在信号处理装置中,与优先处理请求关联的任务切换发生,并且要求抑制与任务切换关联的开销。与优先处理请求关联的任务切换指的是用于在运行当前任务期间接收对于另外的任务的优先处理的请求、暂停当前运行任务、运行优先任务并且在完成优先处理之后返回到原始的任务的操作。通常,将称为上下文(context)切换的方法用于任务切换。上下文切换是用于在任务切换时保存作为关于运行中的任务的进展(progress)的信息的寄存器的值和状态、切换任务以便执行优先处理、以及在完成优先处理之后复原(restore)保存的信息以便恢复(resume)原始的任务的方法。由于与通常的软件相比,流数据(诸如图像)的信号处理的任务涉及大量的信息,因此花费许多时间来将运行中的任务的进展保存到存储器中以及返回,这不利地增大开销。
[0005] 特别地,通常以帧为单位执行图像处理,并且每当完成一个帧的图像处理时进行通知(诸如中断)并且该通知用作触发器使得系统执 行各种处理。处理的图像的较高分辨率(较大尺寸)以及图像处理的复杂化正进一步增加每一帧的处理时间以及数据量。因此,花费更多时间来将图像处理的运行中的任务的进展保存到存储器中以及返回,这不利地进一步增大开销。
[0006] 日本未经审查的专利公开No.2009-86789在段0007中描述了,在图像处理中,由于将以集体的方式处理的数据的量大(例如,用于一个屏幕的图像),因此不能执行上下文切换(即使不是不可能,也非常低效)。对于多任务图像处理,多个图像处理装置被设置并且并行操作以用于调度以防止发生上下文切换。
[0007] 日本未经审查的专利公开No.2006-197548公开了用于在其中通过拍摄获取的图像数据被图像处理单元压缩并且存储的图像拾取装置中的压缩处理中以优先级为基础来执行显示的技术。在该装置中,图像处理单元不被用于显示;因此,通过在以优先级为基础的显示期间停止图像处理单元,处理的中间状态被维持,并且在从优先处理返回之后,图像处理单元能够按照原样被恢复。也就是说,没有在图像处理单元中发生上下文切换。

发明内容

[0008] 在本申请中公开的一个实施例中,一个目的是把将被保存的信息的量限制到必要的最小限度,并且抑制在用于对流数据执行多任务的信号处理装置中发生与优先处理请求关联的任务切换时保存和返回所需的时间的开销。
[0009] 根据本说明书和附图的描述,本发明的以上和其它目的以及新颖的特征将变得清晰。
[0010] 如下将简要地描述本申请中公开的典型的实施例。
[0011] 一种信号处理装置包括指针,所述指针指示与由信号处理单元进行的处理的进展对应的流数据中的数据的位置信息。当请求优先任务处理时,信号处理装置仅仅保存指针值。在返回时,基于保存的指针值,信号处理装置获得返回的任务中接下来将输出的输出流数据的位 置信息,获得需要被输入到信号处理单元以便计算数据的所有输入数据中的首(head)输入数据的在输入流中的位置信息,并且恢复处理。
[0012] 如下将简要地描述本申请中公开的典型的实施例所获得的效果。
[0013] 将被保存的信息的量仅仅是指针值(其是必要的最小限度),并且没有保存和返回大量的信息,这使得可以抑制保存和返回所需的时间开销。

附图说明

[0014] 图1是根据第一实施例的信号处理装置的功能框图。
[0015] 图2是根据第一实施例的半导体装置的框图。
[0016] 图3是示出在运行信号处理任务期间收到对于运行另外的信号处理任务的请求时的处理流程的流程图。
[0017] 图4是示出在完成优先处理之后恢复原始信号处理时的处理流程的流程图。
[0018] 图5是示出在任务切换之前的信号处理单元的状态的说明图。
[0019] 图6是示出在任务切换之后正执行优先处理的信号处理单元的状态的说明图。
[0020] 图7是示出在完成优先处理并且从优先处理返回之后的信号处理单元的状态的说明图。
[0021] 图8是示出根据第一实施例的任务切换的效果的说明图。
[0022] 图9是示出与空间滤波对应的图像位置函数的概念的说明图。
[0023] 图10是示出与垂直翻转(flip-vertical)处理对应的图像位置函数的概念的说明图。
[0024] 图11是示出与混合(blending)对应的图像位置函数的概念的说明图。
[0025] 图12是用于说明块(block)处理中的任务切换的图。
[0026] 图13是用于执行帧间(inter-frame)处理的信号处理装置的功能框图。
[0027] 图14是用于说明通过在优先处理期间请求另外的优先处理而执 行的任务切换的图。
[0028] 图15是包括上下文处理单元的半导体装置的框图。

具体实施方式

[0029] 1、实施例的概述
[0030] 首先,将概述在本申请中公开的本发明的示例性实施例。在示例性实施例的概述性描述中利用应用于其的括号提及的在附图中的附图标记仅仅是用附图标记标明的组件的概念中包含的那些组件的例示。
[0031] [1]仅仅保存指针并且基于指针计算返回之后的首输入数据的位置
[0032] 包括信号处理单元(10)的信号处理装置如下操作,该信号处理单元接收由多段输入数据组成的输入流(11),对流数据运行预定的任务,并且输出由多段输出数据组成的输出流(12)。
[0033] 输入流的输入数据被顺序地输入到信号处理单元,并且构成输出流的输出数据被顺序地从信号处理单元输出。信号处理装置包括指针(21),该指针指示与由信号处理单元进行的处理的进展(progress)对应的流数据中的数据的位置信息。
[0034] 当在运行第一任务期间请求第二任务的优先处理时(81),信号处理装置在保存由指针保持的值(84)之后运行第二任务(86)。
[0035] 在完成第二任务时(87),基于保存的指针值,信号处理装置获得第一任务中接下来将输出的输出数据的在输出流中的位置信息(90),并且获得需要被输入到信号处理单元以便计算接下来将输出的输出数据的所有输入数据中的首输入数据的在输入流中的位置信息(90)。
[0036] 因此,将被保存的信息的量仅仅是指针值(其是必要的最小限度),不保存和返回大量的信息,并且仅仅根据指针值计算返回后恢复信号处理所必需的输入数据的位置信息,这使得可以抑制保存和返回要求的时间开销。
[0037] [2]输入和输出位置函数以及输入和输出地址函数
[0038] 根据第1项的信号处理装置还包括用于存储输入流并且写入输出流的存储器(40)以及任务切换控制单元(50),并且如下操作。
[0039] 信号处理单元包括输入地址寄存器(23)和输出地址寄存器(22)。输入地址寄存器保持信号处理单元读取的输入数据的在存储器中的地址,并且输出地址寄存器保持信号处理单元写入的输出数据的在存储器中的地址。
[0040] 在完成第二任务时,任务切换控制单元基于保存的指针值利用输出位置函数来计算第一任务中接下来将输出的输出数据的在输出流中的位置信息,基于输出位置函数的输出利用输出地址函数(52)计算接下来将输出的输出数据的在存储器中的地址,并且将该地址写入到输出地址寄存器。
[0041] 在完成第二任务时,任务切换控制单元基于保存的指针值利用输入位置函数计算首输入数据的在输入流中的位置信息,利用输入地址函数(51)计算首输入数据的在存储器中的地址,并且将该地址写入到输入地址寄存器。
[0042] 这简化了通过任务切换控制单元进行的地址计算。
[0043] [3]指针保持输出的行编号等
[0044] 在第2项中,流数据是图像数据,并且指针保持已经被信号处理单元输出的输出数据的在输出流中的像素编号、行编号、块编号、帧编号或者其组合。
[0045] 输出位置函数基于保存的指针值计算第一任务中接下来将输出的输出数据的像素编号、行编号、块编号、帧编号或者其组合。
[0046] 输入位置函数基于保存的指针值计算首输入数据的在输入流中的像素编号、行编号、块编号、帧编号或者其组合。
[0047] 这使得输出位置函数能够仅仅将保存的指针值加一以用于输出,因此被简化。
[0048] [4]指针保持输入的行编号等
[0049] 在第2条中,流数据是图像数据,并且指针保持已经被信号处理 单元输出的输入数据的在输入流中的像素编号、行编号、块编号、帧编号或者其组合。
[0050] 输出位置函数基于保存的指针值计算第一任务中接下来将输出的输出数据的像素编号、行编号、块编号、帧编号或者其组合。
[0051] 输入位置函数基于保存的指针值计算首输入数据的在输入流中的像素编号、行编号、块编号、帧编号或者其组合。
[0052] 这使得输入位置函数能够仅仅将保存的指针值加一以用于输出,因此被简化。
[0053] [5]位置函数通过嵌套(nest)部分位置函数来配置
[0054] 在第2、3或4项中,第一任务是包括多段信号处理的信号处理任务,在该多段信号处理中通过由信号处理单元对输入流执行信号处理而获得的输出流依次是下一个信号处理的输入流,并且如下操作。
[0055] 每个信号处理具有用于输出需要被输入到信号处理单元以便计算接下来将输出的输出数据的所有输入数据中的首输入数据的位置信息的部分位置函数。保存的指针值被输入到与多段信号处理中的第一任务中最后运行的信号处理对应的部分位置函数,并且与多段信号处理中的第一任务中随后运行的信号处理对应的部分位置函数的输出被输入到与先前刚刚运行的信号处理对应的部分位置函数,因此依次执行嵌套以便配置输入位置函数。
[0056] 利用这一点,即使信号处理是多段信号处理的组合,也可以适当地配置输入位置函数和输出位置函数。
[0057] [6]空间滤波(FIR滤波器)
[0058] 在第5项中,流数据是图像数据,并且由信号处理单元执行的信号处理是n×n空间滤波(n是等于或者大于三的奇数)。与空间滤波对应的部分位置函数输入其输出被完成的行编号并且输出保存的指针值的(n-1)/2行之前的行编号。输入位置函数包括与空间滤波对应的部分位置函数。
[0059] 这使得可以提供其中信号处理包括图像空间滤波的实施例。
[0060] [7]垂直翻转处理
[0061] 在第5项中,流数据是图像数据,并且由信号处理单元执行的信号处理是垂直尺寸V的图像的垂直翻转处理,所述垂直翻转处理用于读取从头开始的第(V-n+1)行上的输入流并且输出从头开始的第n行上的输入流。指针保持在垂直翻转处理中其输出被完成的行编号p。与垂直翻转处理对应的部分位置函数输出第(V-p)行。
[0062] 这使得可以提供其中信号处理包括图像垂直翻转处理的实施例。
[0063] [8]多重优先处理中的任务切换
[0064] 在第1-7项中的任何一项中,操作如下。
[0065] 当在运行第一任务期间请求第二任务的优先处理时,信号处理装置在保存由指针保持的第一值之后运行第二任务。此外,当在运行第二任务期间请求第三任务的优先处理时,信号处理装置在保存由指针保持的第二值之后运行第三任务。
[0066] 在完成第三任务时,基于保存的指针的第二值,信号处理装置获得第二任务中接下来将输出的输出数据的位置信息并且恢复第二任务。此外,在完成第二任务时,基于保存的指针的第一值,信号处理装置获得第一任务中接下来将输出的输出数据的位置信息并且恢复第一任务。
[0067] 这使得能够进行多重优先处理中的任务切换。
[0068] [9]半导体装置
[0069] 一种在其中CPU(45)、存储器(40)和信号处理单元(10)与总线(55)耦接的半导体装置被如下地配置。信号处理单元包括信号处理模块(30)以及信号处理控制单元(20)。
[0070] 信号处理模块接收由多段输入数据组成的输入流(11),对流数据运行预定的信号处理,并且输出由多段输出数据组成的输出流(12)。
[0071] 信号处理控制单元包括指示与由信号处理模块进行的处理的进展对应的处理数据的在流数据中的位置信息的指针(21),通过指定读取地址而从存储器中读取输入数据并且将输入数据输入到信号处理模块,并且通过指定写入地址将信号处理模块的输出数据输出到存储器。
[0072] 当在运行第一任务期间请求第二任务的优先处理时,CPU允许信号处理单元在保存由指针保持的值之后运行第二任务。在完成第二任务时,CPU返回保存的指针值,并且基于返回的指针值,获得用于存储第一任务中接下来将输出的输出数据的存储器中的地址并且设定写入地址。此外,CPU获得用于存储需要被输入到信号处理单元以便计算接下来将输出的输出数据的所有输入数据中的首输入数据的地址并且设定读取地址。
[0073] 这使得可以提供用于抑制保存和返回所需的时间开销的半导体装置。
[0074] [10]CPU控制任务切换
[0075] 在第9项中,信号处理控制单元包括用于保持读取地址的读取地址寄存器(23)、用于保持写入地址的写入地址寄存器(22)、以及用于保持指针值的指针(21)寄存器。
[0076] 当请求优先处理时,CPU将指针寄存器的第一值保存到存储器中。
[0077] 在完成第二任务时,CPU将第一值从存储器返回到指针寄存器。此外,CPU基于第一值利用输出位置函数来计算第一任务中接下来将输出的输出数据的在输出流中的位置信息,基于输出位置函数的输出利用输出地址函数来计算第一任务中接下来将输出的输出数据的在存储器中的地址,并且将所述地址写入到写入地址寄存器。此外,CPU基于第一值利用输入位置函数来计算首输入数据的在输入流中的位置信息,利用输入地址函数来计算首输入数据的在存储器中的地址,并且将所述地址写入到读取地址寄存器。
[0078] 这简化了通过任务切换控制单元进行的地址计算。
[0079] [11]信号处理参数寄存器
[0080] 在第9或10项中,信号处理控制单元还包括参数寄存器(24)。信号处理模块根据由参数寄存器保持的参数来运行信号处理。当请求优先处理时,CPU在没有保存的情况下丢弃由参数寄存器保持的值,并且将用于允许信号处理模块运行第二任务的参数写入到参数寄存 器。
[0081] 利用这个,由于没有保存信号处理参数,因此可以抑制保存和返回所需的时间开销。
[0082] [12]信号处理参数从存储器的传送
[0083] 在第11项中,存储器存储用于由信号处理模块运行的处理的每个处理内容的参数。当请求处理任务时,CPU从存储器读取与处理任务的处理内容对应的参数,并且将参数写入到参数寄存器。
[0084] 这简化了信号处理参数的管理。
[0085] [13]上下文处理单元
[0086] 一种在其中CPU(45)、存储器(40)、信号处理单元(10)和上下文处理单元(70)与总线(55)耦接的半导体装置被如下地配置。
[0087] 信号处理单元包括信号处理模块(30)以及信号处理控制单元(20)。
[0088] 信号处理模块接收由多段输入数据组成的输入流(11),对流数据运行预定的信号处理,并且输出由多段输出数据组成的输出流(12)。
[0089] 信号处理控制单元包括指示与由信号处理模块进行的处理的进展对应的处理数据的在流数据中的位置信息的指针(21),通过指定读取地址(23)而从存储器中读取输入数据并且将输入数据输入到信号处理模块,并且通过指定写入地址(22)将信号处理模块的输出数据输出到存储器。
[0090] 上下文处理单元包括上下文位置存储单元(72)和复原单元(73)。
[0091] 当在运行第一任务期间请求第二任务的优先处理时,上下文处理单元允许信号处理单元在将由指针保持的值保存到上下文位置存储单元中之后运行第二任务。在完成第二任务时,上下文处理单元返回保存的指针值。
[0092] 基于返回的指针值,复原单元获得用于存储第一任务中接下来将输出的输出数据的存储器中的地址并且设定写入地址,并且获得用于存储需要被输入到信号处理单元以便计算接下来将输出的输出数据的所有输入数据中的首输入数据的地址并且设定读取地址。
[0093] 这使得可以抑制保存和返回所需的时间开销并且在没有将负荷放置在CPU上的情况下运行任务切换。
[0094] [14]通过上下文切换单元的任务切换控制
[0095] 在第13项中,信号处理控制单元包括用于保持读取地址的读取地址寄存器(23)、用于保持写入地址的写入地址寄存器(22)、以及用于保持指针值的指针寄存器(21),并且如下地操作。
[0096] 当请求优先处理时,上下文处理单元将指针寄存器的第一值保存到上下文位置存储单元中。
[0097] 在完成第二任务时,上下文处理单元将第一值从上下文位置存储单元返回到指针寄存器。此外,复原单元基于第一值利用输出位置函数来计算第一任务中接下来将输出的输出数据的在输出流中的位置信息,基于输出位置函数的输出利用输出地址函数来计算第一任务中接下来将输出的输出数据的在存储器中的地址,并且将所述地址写入到写入地址寄存器。此外,复原单元基于第一值利用输入位置函数来计算首输入数据的在输入流中的位置信息,利用输入地址函数来计算首输入数据的在存储器中的地址,并且将所述地址写入到读取地址寄存器。
[0098] 这简化了通过任务切换控制单元进行的地址计算。
[0099] [15]信号处理参数寄存器
[0100] 在第13或14项中,信号处理控制单元还包括参数寄存器(24)。信号处理模块根据由参数寄存器保持的处理参数来运行信号处理。
[0101] 当请求优先处理时,复原单元在没有保存的情况下丢弃由参数寄存器保持的值,并且将用于允许信号处理模块运行第二任务的处理参数写入到参数寄存器。
[0102] 利用这个,由于没有保存信号处理参数,因此可以抑制保存和返回所需的时间开销。
[0103] [16]上下文处理单元从存储器传送信号处理参数
[0104] 在第15项中,存储器存储用于由信号处理模块运行的处理的每个内容的处理参数。当请求任务时,复原单元将与所述任务的处理内 容对应的处理参数从存储器传送到参数寄存器。
[0105] 这简化了信号处理参数的管理。
[0106] [17]上下文编号与指针的关联
[0107] 在第13-16项中的任何一项中,操作如下。
[0108] 当在运行第一任务期间请求第二任务的优先处理时,上下文处理单元将由指针保持的值与第一任务的上下文编号关联并且保存到上下文位置存储单元中。在完成第二任务时,复原单元基于保存的上下文编号和返回的指针值来设定写入地址和读取地址。
[0109] 这简化了返回处理。
[0110] [18]信号处理参数的返回
[0111] 在第17项中,存储器存储用于由信号处理模块运行的处理的每个内容的处理参数。在完成优先处理时,复原单元基于保存的上下文编号将与第一任务的处理内容对应的处理参数从存储器传送到参数寄存器。
[0112] 这简化了信号处理参数的管理。
[0113] [19]多重优先处理
[0114] 在第18项中,操作如下。
[0115] 当在运行第一任务期间请求第二任务的优先处理时,上下文处理单元将由指针保持的第一任务的指针值与第一任务的上下文编号关联并且保存到上下文位置存储单元中。
[0116] 当在运行第二任务期间请求第三任务的优先处理时,上下文处理单元将由指针保持的第二任务的指针值与第二任务的上下文编号关联并且保存到上下文位置存储单元中。
[0117] 在完成第三任务时,复原单元基于第二任务的上下文编号返回第二任务的处理参数并且复原第二任务的指针值。此外,在完成第二任务时,复原单元基于第一任务的上下文编号返回第一任务的处理参数并且复原第一任务的指针值。
[0118] 这使得能够进行多重优先处理。
[0119] 2、实施例的细节
[0120] 下面将更详细地描述实施例。
[0121] 第一实施例
[0122] 将描述根据第一实施例的信号处理装置的配置。图1是根据第一实施例的信号处理装置的功能框图。
[0123] 根据第一实施例的信号处理装置包括信号处理单元10,并且如下操作,该信号处理单元接收由多段输入数据组成的输入流11,对流数据运行预定的任务,并且输出由多段输出数据组成的输出流12。
[0124] 构成输入流11的输入数据被顺序地输入到信号处理单元10,并且构成输出流12的输出数据被顺序地从信号处理单元10输出。信号处理单元10包括指针21,该指针指示与信号处理的进展对应的流数据中的数据的位置信息。
[0125] 当在运行第一任务期间请求第二任务的优先处理时,信号处理装置在保存由指针21保持的值之后运行第二任务。在完成第二任务时,基于保存的指针值,信号处理装置获得第一任务中接下来将输出的输出数据的在输出流12中的位置信息,并且获得需要被输入到信号处理单元10以便计算输出数据的所有输入数据中的首输入数据的在输入流11中的位置信息。
[0126] 可以通过具有保存的指针值p作为输入的函数(51,52)来分别计算输入数据和输出数据的位置信息。
[0127] 在图1中,虚线内的部分是第一实施例的本质部分。
[0128] 信号处理装置包括用于存储输入流11并且写入输出流12的存储器40、以及任务切换控制单元50,并且信号处理单元10中的控制单元20包括输入地址寄存器23和输出地址寄存器22,如图1所示。输入地址寄存器23保持信号处理单元10读取的输入数据的在存储器40中的地址,并且输出地址寄存器22保持信号处理单元10写入的输出数据的在存储器40中的地址。信号处理单元10还包括信号处理模块30。信号处理模块30接收由信号处理单元10中的输入地址寄存器23指定的输入数据流11,执行设定的信号处理,并且将输出数据流12写入到由输出地址寄存器22指定的地址。
[0129] 用于在完成优先处理之后恢复原始处理的时候利用保存的指针值作为输入获得输入数据和输出数据的位置信息的函数(51,52)的运算可以作为任务切换控制单元50的功能被实现。
[0130] 信号处理装置可以由半导体装置(例如图2或图15中示出的)实现。稍后将描述利用半导体装置的实施例。
[0131] 将描述根据第一实施例的信号处理装置的操作。
[0132] 图3是示出在运行信号处理任务期间收到对于另外的信号处理任务的运行的请求时的处理流程的流程图。图4是示出在完成优先处理之后恢复原始信号处理的时候的处理流程的流程图。这是其中信号处理任务是图像处理的示例,但是通常可以被应用于其中作为输入数据的时序的(time-series)数据被顺序地输入并且经历预定处理并且与输入数据相同类型的时序的数据被顺序地输出的信号处理。这是因为,在预定处理中,如果将输出的数据的位置被提供,则为计算该数据所必需的输入数据被唯一地确定,使得可以通过函数等导出将被恢复以便输出数据的首输入数据。
[0133] 当请求图像处理任务(第二任务)的优先处理(步骤81)时,确定是否已经在运行另一个图像处理任务(第一任务)(步骤82)。如果在请求第二任务的优先处理时在运行第一任务,则确定第一任务和第二任务中的哪一个具有更高的优先级(步骤83)。如果第二任务具有更高优先级,则暂停第一任务的图像处理,并且保存指针21的值(步骤84)。然后,设定用于运行第二任务的图像处理的参数(步骤85),并且开始该处理(步骤86)。
[0134] 另一方面,如果第二任务具有更低的优先级,则第二任务在步骤82中等待直到第一任务结束。在第一任务结束之后,设定用于运行第二任务的图像处理的参数(步骤85),并且开始第二任务的处理(步骤86)。
[0135] 在完成第二任务的图像处理(步骤87)时,确定是否请求了暂停的图像处理任务(步骤88)。如果没有请求暂停的图像处理任务,则图像处理结束(步骤92)。另一方面,如果请求暂停的图像处理任 务,则再次设定用于运行暂停的任务的参数(步骤89)。此外,读取在步骤84中保存的指针值,并且基于该值获得用于恢复暂停的任务的输入地址和输出地址(步骤90)。可以基于保存的指针值,即通过基于保存的指针值获得第一任务中接下来将输出的输出数据的在输出流12中的位置信息并且将其转换为用于存储数据的存储器中的地址,来导出输出地址。可以基于保存的指针值来导出输入地址作为需要被输入到信号处理单元10以便计算输出数据的所有输入数据中的首输入数据的地址。
[0136] 然后,恢复暂停的第一图像处理任务(步骤91)。
[0137] 因此,将被保存的信息的量仅仅是指针值(其是必要的最小限度),没有保存和返回大量的信息,并且仅仅根据指针值计算返回之后恢复信号处理所必需的输入数据的位置信息,这使得可以抑制保存和返回所需的时间开销。
[0138] 将参考图5-7更详细地描述根据第一实施例的信号处理装置的操作。
[0139] 图5是示出在任务切换之前的信号处理单元的状态的说明图。图6是示出在任务切换之后正执行优先处理的信号处理单元的状态的说明图。图7是示出在完成优先处理并且从优先处理返回之后的信号处理单元的状态的说明图。
[0140] 在图5-7的示例中,信号处理单元10特别地是用于执行图像处理的图像处理单元10,其包括用于执行图像处理的图像处理模块30以及包含用于保持指示图像处理的内容的参数的参数寄存器24的控制单元20,并且任务切换控制单元50包括用于计算读取地址的读取地址函数51以及用于计算写入地址的写入地址函数52。
[0141] 将描述在运行图像处理X期间发生对于图像处理Y的优先处理的任务切换的示例。输入数据41在存储器40的地址A作为首地址的情况下被存储,并且输出数据42在地址A'作为首地址的情况下被写入。在存储器40中,图像处理Y的输入数据43在地址B作为首地址的情况下被存储,并且用于在地址B'作为首地址的情况下存储图像处 理Y的输出数据44的存储区被保留。读取(输入)地址寄存器23以及写入(输出)地址寄存器22的各个值根据图像处理的进展而变化。指针寄存器21存储指示图像处理的进展的指针值。可以使用其图像处理和输出完成的行的行编号、块编号、帧编号等作为指针值。行编号适合用于以行为单位执行的处理,并且块编号适合用于块处理。
[0142] 图5示出在收到对于图像处理Y的优先处理请求时的状态。用于图像处理X的参数X被存储在参数寄存器24中,指针寄存器21指示图像处理X已经完成了p个行的输出,读取地址寄存器23的值是在这时候的输入数据的地址a,并且写入地址寄存器22的值是在这时候的输出数据的地址a'。
[0143] 在收到优先处理请求时,如图3中的步骤81-83中所述地比较运行中的图像处理X和请求的图像处理Y的优先级。如果确定第二个任务具有更高优先级,则任务切换控制单元暂停图像处理X并且保存指针寄存器21的值p(图3中的步骤84)。在这时候,仅仅保存指针值p,而读取地址寄存器23的值a、写入地址寄存器22的值a'以及参数寄存器24的参数X全部被丢弃。完全没有保存用于保持图像处理模块30中的内部信息以及图像处理X的进展的这些值和各种值,并且将被保存的信息仅仅是指针值p。这使得暂停处理的时间能够非常短。
[0144] 接下来,如图6所示,对于图像处理Y,参数Y被设定在参数寄存器24中,用于存储输入数据43的首数据的地址B被设定在读取地址寄存器23中,用于存储输出数据44的首数据的地址B'被设定在写入地址寄存器22中,并且指针寄存器21被初始化到0。取决于图像处理的内容,数据处理顺序可以与存储顺序不同。在该情况下,将首先输入和输出的数据的地址可以被设定在读取和写入地址寄存器23和22中,并且指针也可以根据处理内容被适当地设定,使得指针从终点开始顺序地变小以及从零开始顺序地增大。
[0145] 通过由读取地址寄存器23指定地址b,输入数据43被从存储器40顺序地读取到图像处理模块30,并且被处理。通过在写入地址寄 存器22中指定地址b',输出处理结果。同时,指针寄存器21存储指示图像处理Y的进展的指针值。
[0146] 在完成图像处理Y的任务时,如图7所示地执行到暂停的图像处理X的返回处理。指针值p被返回到指针寄存器21。在恢复图像处理X之后将首先输出的数据的地址被设定在写入地址寄存器22中,并且在恢复图像处理X之后将首先输入的数据的地址被设定在读取地址寄存器23中。通过将指针值p输入到任务切换控制单元中的读取地址函数51和写入地址函数52来计算这些地址。
[0147] 在该示例中,由于指针值p是其输出在暂停之前被完成的行的数量,因此关于写入地址,通过将用于存储与指针值p的行数对应的输出数据的地址加上首输出数据的地址A',获得用于存储在恢复之后首先输出的数据的地址。写入地址函数52指的是写入地址G(p)=G(Pl'(p))。此外,利用读取地址函数51,读取地址F(p)=F(Pl(p))被计算并且被设定在读取地址寄存器23中。在公式中,Pl'(p)表示用于根据指针值计算在恢复图像处理X之后将首先输出的数据的行编号的写入图像位置函数,并且Pl(p)表示用于根据指针值计算在恢复图像处理X之后将首先输入的数据的行编号的读取图像位置函数。可以根据首地址A'和每一行的地址的数量计算写入地址,并且可以根据首地址A和每一行的地址的数量计算读取地址。每一行的地址的数量指的是存储器跨距(memory stride)尺寸,其不一定匹配图像的每一行的数据项的数量。在存储器中分配(allocate)图像数据时为了便于计算用于存储相邻像素的数据的地址值,通常将比图像的每一行的数据项的数量大并且使每个行地址对齐(align)的值用作跨距尺寸。在该情况下,存在像素的地址与它的垂直相邻的像素的地址之间的跨距尺寸的差。
[0148] 读取图像位置函数Pl(p)和写入图像位置函数Pl'(p)分别通过图像输入数据41和图像输出数据42的行编号等来指定图像位置。在该示例中,写入图像位置函数Pl'(p)=p+1。由于指针值p是其输出在暂停之前被完成的行的数量,因此在恢复之后从下一行开始恢复输 出。如果确定在恢复图像处理X之后将首先输出的数据,则可以计算将输入以便获得图像处理X中的输出数据的先前输入数据的量。通过提前获得这个,定义读取图像位置函数Pl(p)。例如,在空间滤波的情况下,可以根据抽头(tap)的数量确定将输入的先前的行的数量。虽然稍后将描述空间滤波、垂直翻转处理和混合的示例,但是可以根据图像处理的内容确定将输入的先前输入数据的量;因此,可以基于其定义读取图像位置函数Pl(p)。
[0149] 读取地址函数F(p)和写入地址函数G(p)分别将读取图像位置函数Pl(p)和写入图像位置函数Pl'(p)的输出转换为存储器中的实际地址。
[0150] 再次在参数寄存器24中设定用于允许图像处理模块30运行图像处理X的参数X。参数是对于图像处理特有的值并且与处理的进展无关。例如,在图像空间滤波的情况下,该参数是滤波系数或者抽头的数量。在返回到图像处理X时,以诸如如同开始图像处理一样传送提前保持在程序中的值那样的方式,相同的值可以被再次设定为该参数。
[0151] 因此,即使保存的数据仅仅是指针值p,也可以在写入地址寄存器22、读取地址寄存器23和参数寄存器24中适当地设定恢复后的值。
[0152] 然而,不可以从指针值中获得将被再次设定在参数寄存器中的参数的类型。这是因为指针值指示暂停的图像处理的进展而参数指示与进展无关的图像处理的内容,使得没有必要保存该参数,这是本实施例的本质。因此,在恢复时定义指示将被再次设定在参数寄存器中的图像处理的参数的上下文编号并且将它与指针值一起保存也是有效的。稍后将描述这种实施例。
[0153] 虽然读取地址函数51和写入地址函数52在本实施例中由图像位置函数表示,但是在可以基于指针值计算将被恢复的输入和输出地址的情况下未必需要使用图像位置函数。虽然用于存储输入/输出数据的地址取决于用于运行图像处理任务的硬件环境;但是通过使用用于输入数据的位置、算术运算中的数据的位置和输出数据的位置的图像位 置函数,图像处理的进展由每个流中的图像数据的位置表示,这可以使得图像位置函数与硬件环境无关。这简化了通过任务切换控制单元进行的地址计算。例如,在将用于描述图像处理任务的软件移植到其它硬件环境的情况下,可以仅仅对关于如何将输入/输出数据映射在存储器中的信息(诸如用于存储数据的首地址和每一行的数据的量)执行匹配。此外,在图像处理模块30运行多段图像处理的情况下,通过各个图像位置函数和输入/输出地址函数的表示简化了地址计算。将在第五实施例中描述多段图像处理的运行。
[0154] 将描述根据第一实施例的信号处理装置的效果。
[0155] 图8是示出根据第一实施例的任务切换的效果的说明图。横轴指示时间,表示图像处理的流程。情况(a)示出在没有用于请求优先处理的中断的情况下的正常处理。在该示例中,对于每个图像帧运行处理任务。在任务结束时,帧处理的结束被通知给软件,诸如用于管理图像处理的OS。在现有技术中,可以有两种用于响应在帧1的处理期间请求优先处理另一个图像处理任务的中断的方法。情况(b)示出其中在结束帧1之后开始优先图像处理Y的任务的情况。情况(c)示出其中一开始优先图像处理Y的任务就暂停帧1的处理并且在结束Y之后恢复处理以返回到帧1的最前头的情况。
[0156] 在情况(b)中,在结束帧1之后执行暂停处理,并且随后运行优先图像处理Y的任务。在完成优先处理之后,暂停之前的图像处理从已经结束的帧1之后的帧2的最前头开始恢复。由于没有在中途暂停帧1的处理,因此将被保存的信息仅仅是关于帧1的完成的信息,并且由于可以从完成的帧1之后的帧2开始恢复处理,因此不存在将被返回的信息。然而,存在优先图像处理Y的开始被延迟直到当前帧处理结束为止的问题。
[0157] 另一方面,在情况(c)中,帧1的处理被强制地暂停。信息(诸如算术运算的进展)全部被丢弃,并且优先图像处理Y被运行。这解决了优先图像处理Y的开始被延迟直到当前帧处理结束为止的问题。然而,如果关于帧1的暂停的处理的进展的信息没有保存,则在恢复 时必须再次从帧1的最前头开始执行处理;因此,在优先处理中断之前运行的帧1的处理被浪费。
[0158] 包括图像处理的信号处理涉及大量的数据,这导致与通常的软件相比关于处理的进展的数据的量巨大。例如,在3×3图像空间滤波的情况下,为了计算关于中心像素的数据,要求输入关于八个周围的像素的数据。抽头的数量越大,需要输入的数据项越多。在该情况下,如果要求如通常的软件的上下文切换中一样地保存处理中的全部数据;则在关于像素的算术运算之后的暂停之后,为了从下一像素开始恢复,要求保存已经输入并且在未来任务中涉及的所有像素数据以及为输入所必需的周围像素数据。这显然导致与通常的软件相比将保存大量的数据。因此,实际上不能容许以与通常的软件的上下文切换相同的方式保存关于处理的进展的全部信息,并且在现有技术中,情况(b)或者(c)被采用以用于优先处理。
[0159] 在本实施例中,保存的数据仅仅是指针值p,并且指针值是已经由图像处理单元输出的输出数据的行编号。由于仅仅必需的读取地址和写入地址被根据保存的指针值p计算并且被设定在地址寄存器22、23中并且参数寄存器24在返回时被再次设定,如情况(d)所示,为暂停处理和恢复处理所需的时间非常短,如情况(b)和(c)中一样。由于如在情况(c)中一样,在优先处理中断之后,在帧1的图像处理的中途执行暂停处理,并且立即开始优先图像处理Y,没有如在情况(b)中那样地延迟优先图像处理Y的开始,并且在恢复处理之后从帧1的输出的第p行之后的行开始(而不是如情况(c)中那样返回到帧的最前头)恢复处理;因此,已经运行的处理不被浪费。
[0160] 虽然如本实施例中所述地,指针值是输出的行的行编号,但是指针值可以是输出流中的像素编号、行编号、块编号、帧编号或者其组合。可替代地,指针值可以是输入的输入数据的输入流(而不是输出)中的像素编号、行编号、块编号、帧编号或者其组合。
[0161] 在包括图像处理的信号处理中,顺序地输入输入数据,对其执行算术处理,并且顺序地输出输出数据。虽然在任务切换中理想的是保 存并且返回关于算术运算的进展的全部信息,但是如上所述这实际上是不能容许的。本发明人已经发现可以通过再次输入一定量的先前的输入数据来再现算术运算的进展。通过仅仅保存指示图像处理的进展的指针值、在返回时基于指针值获得接下来将输出的数据的位置、并且恢复处理以返回到为计算输出所必需的全部输入数据的最前头,可以在恢复之后的图像处理任务的行进的情况下再现暂停的处理的进展,计算接下来将输出的数据,并且以无缝的方式从暂停的位置开始恢复图像处理。
[0162] 此外,虽然仅仅保存指针值是足够的,但是也可以进一步保存例如指示将被恢复的图像处理的内容的上下文编号。指针值和上下文编号具有有限值,其至多仅仅要求1到2字节。与保存关于图像处理的进展的全部信息相比,保存非常少量的信息是足够的。
[0163] 第二实施例
[0164] <空间滤波(FIR滤波器)>
[0165] 将描述其中由图像处理模块30运行的图像处理是图像空间滤波的实施例。使用第一实施例中的与空间滤波对应的图像位置函数,并且其它配置和操作与第一实施例的那些相同。
[0166] 图9是示出与空间滤波对应的图像位置函数的概念的说明图。对水平尺寸H和垂直尺寸V的图像数据执行由3×3FIR滤波器表示的空间滤波,并且输出相同的尺寸的图像数据。H×V输入图像数据在首地址作为A的情况下被存储在存储器40中,并且在地址A'作为首地址的情况下被输出。图像的水平尺寸H可以等于或者不同于存储器跨距尺寸h。由于输入数据41和输出数据42具有相同的结构而具有不同的首地址,因此图9仅仅示出输入数据41,并且未示出输出数据42。
[0167] FIR滤波器是“有限脉冲响应滤波器”的缩写。为了获得像素的值,FIR滤波器将关于围绕该像素的像素的数据乘以预定的系数以用于加权相加。3×3FIR滤波器使用关于围绕中心输出像素的八个像素的数据。在图像数据平面的情况下,FIR滤波器计算关于3×3方形的 输入区域中的中心像素的输出数据。5×5FIR滤波器输入在离开中心两个像素的范围内的数据,并且7×7FIR滤波器输入在离开中心三个像素的范围内的数据。3×3、5×5或者7×7的尺寸被称为抽头的数量或者次数(order)。
[0168] 假设在完成从最前头开始的第C行的输出时,请求优先处理并且暂停空间滤波。在这时候,指针值p是C,并且任务切换控制单元50保存这个值。此时,由读取地址寄存器完成第(C+1)行的读出。这是因为,由于3×3FIR滤波器输入并且计算关于全部八个周围像素的数据以便获得输出像素数据,因此第C行输出的完成表示第(C+1)行输入的完成。
[0169] 在完成优先处理并且从优先处理返回时,输出从暂停之前完成其输出的第C行之后的第(C+1)行开始被恢复。因此,写入图像位置函数Pl'(p)=p+1。第C行输入数据是为计算第(C+1)行数据必需的数据的首数据。因此,读取图像位置函数Pl(p)=p。在该情况下,读取地址函数F(p)=A+(p-1)×h,并且写入地址函数G(p)=A'+p×h,其中h表示存储器跨距尺寸。
[0170] 虽然图9示出由3×3FIR滤波器进行的空间滤波,但是通常在由N×N(N为奇数)FIR滤波器进行的空间滤波的情况下,写入图像位置函数Pl'(p)=p+1,并且读取图像位置函数Pl(p)=(p+1)-(N-1)/2。由于输出从保存的指针值之后的行开始被恢复,因此写入图像位置函数与由3×3FIR滤波器进行的空间滤波中相同。读取图像位置函数被如上定义,因为需要输入关于先前(N-1)/2行的数据来获得第(p+1)行输出。
[0171] 在由3×3FIR滤波器进行的空间滤波的情况下,在完成第C行输出并且暂停时,关于(C+1)行的数据已经被输入到图像处理模块30。在与通常的软件的上下文切换相同的方法中,输入从第(C+2)行开始被恢复以便从第(C+1)行开始恢复输出。然而,为了实现这个,必须保存已经输入到图像处理模块30的关于第C行和第(C+1)行的全部数据。图像的水平尺寸在VGA中为640像素并且由于更高 分辨率正增大到800到1024像素。在每个像素有8比特的亮度数据的情况下,一行的数据达到约1千字节(Kbytes),使得两行的数据量达到每个颜色约2千字节并且三种颜色总共达到约6千字节。随着滤波器抽头的数量增大,将被保存的数据的行的数量增大,这导致将保存大量的数据。实际上不能容许保存图像处理数据。
[0172] 在本实施例中,作为保存和返回两行的输入数据的代替,再次输入这些行的数据。因此,从第C行而不是第(C+2)行开始恢复输入。因此,将被保存的数据仅仅为指针值。在本实施例中,指针值为仅仅至多要求两个字节的行编号。
[0173] 如上所述,指针为其输出被完成的行的数量;然而,指针可以为其输入被完成的行的数量。在该情况下,输入图像位置函数Pl(p)=p-2,并且输出图像位置函数Pl'(p)=p-1。
[0174] 在本实施例中,在一行的中间请求优先处理时,在完成该行的处理之后执行暂停处理,或者强制地结束并且暂停该行的处理并且在恢复之后从该行的开头开始恢复该处理。对于进一步改进,为了在行的中间暂停并且恢复该处理,指针可以由行的数量和像素的数量组成。以同样方式,将被保存和返回的数据仅仅为指针值,但是指针不仅包括行的数量而且包括像素的数量,这导致将保存和返回更大量的数据,但是使得可以在没有等待行处理的结束的情况下开始优先处理或者在没有丢弃处理的进展的情况下从行处理的中间开始恢复。这使得可以进一步抑制保存和返回所需的时间开销以执行任务切换。
[0175] 关于H×V矩形图像的周边部分,如果原始必需的像素对应于H×V矩形的外侧,则不能获得将输入的数据。在该情况下,图像空间滤波中的公知的图像边缘处理一般也可以被应用于本实施例。
[0176] 在本实施例中,以FIR滤波器作为用于输入关于垂直地邻近处理行的行的数据的信号处理的示例。同样在缩放(scaling)中,需要输入关于垂直地邻近处理行的行的数据以用于插值或者抽取(decimation);因此,可以以同样方式配置图像位置函数和地址函数。
[0177] 第三实施例
[0178] <垂直翻转处理>
[0179] 将描述其中由图像处理模块30运行的图像处理是图像垂直翻转处理的实施例。使用第一实施例中的与垂直翻转处理对应的图像位置函数,并且其它配置和操作与第一实施例的那些相同。
[0180] 图10是示出与垂直翻转处理对应的图像位置函数的概念的说明图。对水平尺寸H和垂直尺寸V的图像数据执行垂直翻转处理,并且输出相同的尺寸的图像数据。H×V输入图像数据在首地址作为A的情况下被存储在存储器40中,并且在地址A'作为首地址的情况下被输出。图像的水平尺寸H可以等于或者不同于存储器跨距尺寸h。由于输入数据41和输出数据42具有相同的结构而具有不同的首地址,因此图10仅仅示出输入数据41,并且未示出输出数据42。
[0181] 垂直翻转处理包括按从顶部开始的顺序输入数据并且按从底部开始的顺序输出数据的方式以及按从底部开始的顺序输入数据并且按从顶部开始的顺序输出数据的方式。在按从顶部开始的顺序输入数据并且按从底部开始的顺序输出数据的方式中,即使输入没有被完成直到底部也可以开始处理。然而,至于输出,由于最后输出首数据,因此通常不能开始下一处理,直到首数据被输出为止。另一方面,在按从底部开始的顺序输入数据并且按从顶部开始的顺序输出数据的方式中,不能开始处理,直到输入数据被全部输入为止。然而,由于输出数据从首数据开始被顺序地输出,因此可以依次开始下一处理。
[0182] 将描述按从底部开始的顺序输入数据并且按从顶部开始的顺序输出数据的实施例。
[0183] 指针保持输出的行的数量。如果在从底部开始的C个行已经被输入并且C个行已经被输出时请求优先处理,则保存的指针值p=C。在图10中,黑的阴影线部分是输入数据41中的被输入的区域。利用垂直翻转处理,从底部开始的C个行上的输入数据被输出在具有地址A'作为首地址(未示出)的区域中的从顶部开始的C个行中。
[0184] 由于在返回之后接下来将输出第(C+1)行数据,因此写入图像 位置函数Pl'(p)=p+1。在该情况下,写入地址函数G(p)=A'+p×h。
[0185] 至于读取图像位置函数,由于从底部开始的C个行在暂停之前已经被输入并且对应的反转的输出在垂直翻转处理中已经被完成,因此在恢复之后需要输入作为存储器中的第(V-C)行的从底部开始的第(C+1)行。因此,读取图像位置函数Pl(p)=V-p,并且读取地址函数F(p)=A+(V-p-1)×h。
[0186] 在本实施例中,以垂直翻转处理作为其中为处理行所需的行的顺序不同于处理行的顺序的示例。同样在水平翻转处理和旋转处理中,可以以同样方式配置图像位置函数和地址函数。
[0187] 如果在垂直翻转处理和水平翻转处理中对称轴没有处于屏幕的中心或者在旋转处理中要求图像末端处理,则公知的图像边缘处理也可以被应用于本实施例。
[0188] 第四实施例
[0189] <混合>
[0190] 将描述其中由图像处理模块30运行的图像处理是多个图像的混合的实施例。使用第一实施例中的与混合对应的图像位置函数,并且其它配置和操作与第一实施例的那些相同。
[0191] 图11是示出与混合对应的图像位置函数的概念的说明图。
[0192] 为了简单起见,将描述两个图像的合成。存储在存储器40中的具有地址Ap作为首地址的Hp×Vp母屏幕以及在地址Ac作为首地址的情况下存储的Hc×Vc子屏幕被合成,并且合成的图像在地址A'作为首地址的情况下被输出。母屏幕、子屏幕和输出图像的存储器跨距尺寸分别由hp、hc和h表示。通过以Hc×Vc子屏幕代替从Hp×Vp母屏幕的左上方加上水平偏移Hoff和垂直偏移Voff的区域来获得合成的图像。
[0193] 指针保持输出的行的数量。如果在C个行被输出时请求优先处理,则保存的指针值p=C。
[0194] 由于在返回之后接下来将输出第(C+1)行数据,因此写入图像位置函数Pl'(p)=p+1。在该情况下,写入地址函数G(p)=A'+p×h。
[0195] 至于读取图像位置函数,用于母屏幕的Plp(p)和用于子屏幕的Plc(p)被定义。至于读取地址函数,用于母屏幕的Fp(p)和用于子屏幕的Fc(p)被定义。
[0196] 合成图像中的第(C+1)行输出要求来自母屏幕的第(C+1)行输入;因此,Plp(p)=p+1,并且地址函数Fp(p)=Ap+p×hp。
[0197] 如果C-Voff≥0,合成图像中的第(C+1)行输出要求来自子屏幕的第(C-Voff+1)行输入;因此,Plc(p)=p-Voff+1,并且地址函数Fc(p)=Ac+(p-Voff)×hc。如果C-Voff<0,则子屏幕不与母屏幕交迭,因此,没有必要输入子屏幕上的数据。
[0198] 因此,在输入多个图像的情况下,针对各个输入图像准备读取图像位置函数和读取地址函数。
[0199] 第五实施例
[0200] <多段处理的组合>
[0201] 将描述其中由图像处理模块30运行的图像处理是多段图像处理的组合的实施例。使用第一实施例中的与多段图像处理对应的图像位置函数,并且其它配置和操作与第一实施例的那些相同。
[0202] 虽然存在多段图像处理的各种组合,但是将描述用于对输入图像运行图像处理X和对它的输出运行图像处理Y以便获得输出图像的延续处理。
[0203] 在输出图像中,指针值p是输出的行的行编号并且在暂停处理中被保存。第(p+1)行是在返回之后首先将输出的行。在图像处理Y中,图像位置函数Ply(p)被定义为使得输入将输出的行编号并且输出必要的输入数据的最前头的行编号。在这时候,在前级中的图像处理X中,图像位置函数Plx(p)被定义为使得输入图像处理Y首先需要的输入数据的最前头的行编号,即Ply(p),并且输出必要的输入数据的最前头的行编号。
[0204] 地址函数F(p)被定义为使得提供由Plx(p)指定的数据的在存储器中的地址。让A'表示输出图像的首地址并且h表示存储器跨距尺寸,地址函数F(p)可以被如下定义:F(p)=A'+(Plx(Ply(p))-1)×h。
[0205] 由于图像位置函数和地址函数足以能够通过合成计算正确的地址,因此图像位置函数的输入/输出通常可以被定义为输出的行的数量、输入的行的数量、整个屏幕上的行编号等。
[0206] 在上述组合中,如果输入图像、X的输出图像、Y的输入图像和最终输出图像全部具有相同的尺寸,并且图像位置函数的输入和输出全部被定义为从最前头开始的行编号,则函数耦接(coupling)被简化。也就是说,在没有在多段图像处理的图像位置函数之间执行诸如偏移之类的处理的情况下,后续处理的图像位置函数的输出可以被嵌套作为先前的处理的图像位置函数的输入,例如在本实施例中其是Plx(Ply(p))。即使Ply(p)的输出被定义为从图像的最前头开始的行的数量,但是如果Plx的输入被定义为从图像的底部开始的行的数量,也不能简单地采用Plx(Ply(p))。因此,它需要使用图像的垂直尺寸V被校正到例如Plx(V-Ply(p))。
[0207] 如上所述,指针是输出的行的行编号;然而,即使具有通过指示图像处理的进展的另一个方法实现的指针,本实施例也还可适用。即使指针是像素编号、块编号、帧编号或者其组合以及行编号;通过以同样的方式定义图像位置函数并且获得返回后的输入开始地址,也可以获得相同的效果。此外,即使图像位置函数的输入和输出全部都不被定义为行编号并且包括使用像素编号、块编号、帧编号或者其组合的函数,也可以在后续处理的图像位置函数的输出被嵌套作为先前的处理的图像位置函数的输入时进行调节。基于保存的指针值,为了返回后的输出可以从暂停的点开始恢复,计算输出所必需的输入数据的最前头被依次计算,并且指定数据的在存储器中的地址以便恢复输入。
[0208] 因此,将被保存的信息的量仅仅是指针值(其是必要的最小限度),没有保存和返回大量的信息,并且仅仅根据指针值计算返回之后恢复信号处理所必需的输入数据的位置信息,这使得可以抑制保存和返回所需的时间开销。
[0209] 第六实施例
[0210] <块处理>
[0211] 在一些类型的图像处理中,图像被分割成方形块,并且以块为单位运行处理。例如,离散余弦变换是用于通常对8×8像素块运行矩阵运算并且将它们转换成频域数据的处理。块形状通常是方形,但是不限于此。
[0212] 同样在块处理中,也可以如行处理中一样以行为单位顺序地读取数据并且对输入到图像处理模块的块顺序运行处理。虽然图像处理模块需要包括用于几个块的缓冲器,但是读取地址控制可以被简化。在该情况下,指针可以由行的数量表示,如上所述。如果指针是行编号,即使内部处理是块处理,第一实施例也可以按照原样被应用。
[0213] 在以块而不是行为单位输入和输出的情况下,读取和写入地址控制变得更复杂,但是不要求用于保持还没有处理的数据的内部缓冲器,因为仅仅必要的数据被输入到图像处理模块。在该情况下,指针可以是输入或输出的块的块编号。
[0214] 图12是用于说明块处理中的任务切换的图。用于指示图像处理模块30执行块处理的参数W被存储在设置在图像处理单元10的控制单元20中的参数寄存器24中。输入数据41在地址A作为首地址的情况下被存储在存储器40中,并且输出数据42在地址A'作为首地址的情况下被存储。块尺寸是M×M,并且在存储器的横向方向上存储L个块。输出数据42也被以相同的形状存储在存储器中。
[0215] 指针保持输出的块的块编号q,并且在优先处理请求并且暂停时,q个块的输出数据42已经被输出并且(q+1)个块的输入数据41已经被输入。任务切换控制单元保存指针值q并且允许运行优先处理,并且在完成时基于指针值q计算读取和写入地址。让块编号q=i×L+j(0≤j
[0216] 恢复之后首先将输出的块是第(q+1)块。如果q+1=i×L+j,则写入地址=A'+i×L×M^2+(j-1)×M。为其输出所需的输入块是第(q+1)块,并且读取地址=A+i×L×M^2+(j-1)×M。
[0217] 虽然用于基于块编号获得地址的函数不简单,但是概念与行编号 作为指针的概念相同。基于保存的指针值q获得在恢复之后首先将输出的块,并且根据为其输出所必需的输入块的位置获得用于存储数据的存储器中的地址,并且从该地址开始恢复处理。
[0218] 因此,将被保存的信息的量仅仅是作为指针值的块编号(其是必要的最小限度),没有保存和返回大量的信息,并且仅仅根据指针值计算返回之后恢复信号处理所必需的输入数据的位置信息,这有利地使得可以以同样方式抑制保存和返回所需的时间开销。
[0219] 此外,相同的概念可以被应用于块处理和行处理的组合。
[0220] 第七实施例
[0221] <帧间处理>
[0222] 在一些类型的图像处理中,帧间数据被参考以用于运行处理。例如,对于运动补偿,获得与一帧的先前的图像的差别以便计算运动的存在与否、方向、幅度等。
[0223] 图13是用于执行帧间处理的信号处理装置的功能框图。
[0224] 在输入数据41中,除了在地址A作为首地址的情况下存储的处理帧之外,在地址A-1帧作为首地址的情况下存储的一帧先前的数据也需要被输入到图像处理模块30。输出数据42在地址A'作为首地址的情况下被写入在存储器40中。指针21保持例如输出的行的行编号。以同样的方式,在暂停时保存指针值p,基于保存的指针值p在恢复处理之后首先将输出的数据的位置被获得作为第(p+1)行,并且设定与其对应的写入地址。另一方面,至于读取地址,用于处理帧和一帧先前的帧的各自的图像位置函数和各自的地址函数被定义,并且用于这些帧的各自的读取地址寄存器被设置。在大多数情况下,处理图像数据和为处理所必需的一帧先前的图像数据具有相同的在帧中的相对位置;因此,各自的地址函数等具有刚好一帧的差别。
[0225] 因此,即使在帧间处理中,将被保存的信息的量也仅仅是指针值。由于指针值可以是行编号,因此将被保存的信息的量是必要的最低量。以与其它实施例中相同的方式,没有保存和返回大量的信息,并且仅仅根据指针值计算返回之后恢复信号处理所必需的输入数据的 位置信息,这有利地使得可以抑制保存和返回所需的时间开销。此外,本实施例通过分别准备图像位置函数和地址函数也适用于使用多个帧的数据以用于运动补偿的图像处理。
[0226] 第八实施例
[0227] <多重优先处理>
[0228] 图14是用于说明通过在优先处理期间请求另外的优先处理执行的任务切换的图。
[0229] 在图14中,越小的数字指示越高的优先级。
[0230] 开始具有优先级3的图像处理X。
[0231] 当在处理X中间请求具有优先级2的处理Y时,保存指示处理X中已经处理的行的指针值Px,暂停处理X,初始化指针,并且随后开始处理Y。
[0232] 此外,当在处理Y中间请求具有优先级1的处理Z时,保存指示处理Y中已经处理的行的指针值Py,暂停处理Y,初始化指针,并且随后开始处理Z。
[0233] 在完成处理Z时,为了恢复暂停的处理中的具有最高优先级的处理Y,根据保存的指针值Py获得恢复地址并且恢复该处理。
[0234] 在完成处理Y时,为了恢复最后的处理X,根据保存的指针值Px获得恢复地址并且恢复该处理。
[0235] 指针值可以被保存到例如公知的压弹式堆栈(push-pop stack)并且从该公知的压弹式堆栈返回。
[0236] 虽然图14示出两个优先处理中断;但是即使在中途进行三个或更多个请求,也可以以同样的方式通过执行在前流程图示出的处理来利用一个指针执行多重优先处理。
[0237] 第九实施例
[0238] <半导体装置>
[0239] 将描述向其应用根据第一实施例的信号处理装置的图像处理系统。图像处理系统可以被实现为半导体装置。
[0240] 图2是向其应用根据第一实施例的信号处理装置的半导体装置 46的框图。
[0241] 图像处理单元10经由总线55耦接到图像输入单元63、图像输出单元64、CPU45和存储器40。CPU45用作任务切换控制单元50并且也控制整个系统。存储器40被用来存储在系统中使用的图像数据。图像输入单元63经由总线55将从输入装置61(诸如照相机或者电视广播)发送的图像数据写入到存储器40。图像处理单元10对从存储器40输入的数据执行必要的图像处理(缩放、图像合成、滤波等),并且将处理后的图像数据再次存储到存储器40中。图像输出单元64是用于输出到显示装置62(诸如LCD)的接口,通过其处理后的图像数据被从存储器40读取,被输出到系统外部并且被显示。CPU45利用硬件和软件的协作执行上述控制。
[0242] 虽然在图2中省略了内部配置,但是图像处理单元10可以通过图1、12、13等中示出的实施例来配置。图像处理模块可以由分别用于执行多段图像处理的多段硬件配置。可替代地,图像处理模块可以由一个可编程的加速器、其组合或者对CPU进行操作的软件实现。
[0243] 在图1、12、13等所示出的实施例中的任务切换控制单元50的功能可以由CPU45实现。在暂停处理中,指针值从指针寄存器21中读取并且写到存储器40。在恢复处理中,CPU45从存储器40中读取指针值并且将它代入图像位置函数和地址函数中以便获得恢复后的读取和写入地址,该读取和写入地址被设定在各自的地址寄存器23和22中。指针可以根据使用压弹式堆栈的公知的技术被保存和返回,如在诸如正常的中断之类的异常处理中一样。各种图像处理参数被提前存储在存储器40中,并且与请求的处理或者将被恢复的处理的内容对应的参数被读取和设定在图像处理单元10的参数寄存器24中,以便允许图像处理模块
30运行对应的处理。虽然仅仅保存指针是足够的,但是也可以进一步保存指示暂停的图像处理的内容的上下文编号。在恢复时,暂停的图像处理的上下文编号以及保存的指针值被读取,以便根据编号确定图像处理内容,使得必要的参数可以从存储器40中读取并且设定在参数寄存器24中。
[0244] 由于参数是对于图像处理内容特有的值而与处理的进展无关并且处理的进展仅仅通过指针指示,因此不必在暂停处理中保存参数值并且仅仅保存指针值是足够的,这使得可以抑制保存和返回所需的时间开销。此外指示暂停的图像处理的内容的上下文编号的保存使得更易于在恢复时再次设定必要的参数。
[0245] 第十实施例
[0246] <上下文处理单元>
[0247] 图15是包括上下文处理单元的半导体装置的框图。
[0248] 半导体装置包括上下文处理单元70,作为第九实施例中由CPU45的软件实现的任务切换控制单元50的功能。
[0249] 上下文处理单元70包括控制单元71、上下文位置存储单元72和复原单元73。当请求优先处理时,上下文位置存储单元72读取指针值p并且将其存储在存储单元76中,并且还存储暂停的处理的上下文编号75。指针值p和上下文编号75彼此关联以用于存储。这些值可以以压栈-出栈的方式被存储,或者可以与指示堆栈的顺序的控制编号一起被存储。
[0250] 当完成优先处理并且恢复暂停的处理时,复原单元73基于存储在上下文位置存储单元72中的指针值获得恢复后的读取和写入地址,并且将它们设定在读取地址寄存器23和写入地址寄存器22中。此外,复原单元73基于上下文编号75确定暂停的处理内容,从存储在存储器40中的参数组读取对应的参数,并且将其设定在参数寄存器24中。在来自存储器40的参数传送中,上下文处理单元70可以充当用于直接存储器存取的总线主控(bus master)。可替代地,上下文处理单元70可以在复原单元73中提前存储参数组以用于传送,或者可以请求CPU45执行这种传送控制。
[0251] 这使得可以减少CPU45上的负荷以便执行任务切换。
[0252] 虽然已经基于示出的实施例具体描述了上面本发明人进行的本发明,但是本发明不限于此。不用说,在不脱离本发明精神和范围的情况下可以对其进行各种修改和变化。
[0253] 例如,虽然在实施例中主要对图像信号执行信号处理,但是还可以容易地实现其中作为输入数据的时序的数据被顺序地输入并且经受预定处理并且与输入数据相同的类型的时序的数据被顺序地输出的实施例。这是因为,在顺序地输出的数据由于优先处理而暂停时,获得在返回时在暂停之后无缝的输出所必需的输出数据的位置,并且恢复输入以返回到为输出数据所必需的全部输入数据的最前头。