处理器以及处理器的控制方法与流程

文档序号:26446003发布日期:2021-08-27 13:46阅读:114来源:国知局
处理器以及处理器的控制方法与流程
本公开一般来说涉及一种处理器以及处理器的控制方法,更为详细地说涉及一种能够通过1个指令来执行多个处理的处理器以及处理器的控制方法。
背景技术
:专利文献1中记载的复合运算电路(处理器)利用乘法器将被存储到2个寄存器的各个寄存器中的数据相乘。然后,复合运算电路利用比较电路将乘法器的乘法运算值与被存储到不同于2个寄存器的其它寄存器中的其它数据进行比较,作为其比较结果,将表示选择乘法器的乘法运算值和其它数据中的哪一个的选择信号输出到选择器电路。选择器电路基于选择信号来选择乘法器的乘法运算值和其它数据中的较大的一方并进行输出。在专利文献1所记载的复合运算电路中,选择器电路的处理是与用于生成hog(histogramsoforientedgradients:定向梯度直方图)特征量的处理不同的处理,因此无法生成hog特征量。更为详细地说,上述的选择器电路基于选择信号来选择由比较电路比较后的乘法运算值和其它数据中的较大的一方并进行输出。但是,在生成hog特征量的情况下,上述的选择器电路需要根据比较器的比较结果来进行是否输出与上述其它数据不同的其它数据的处理。现有技术文献专利文献专利文献1:日本特开平3-105615号公报技术实现要素:本公开是鉴于上述理由而完成的,其目的在于提供一种能够更快速地生成hog特征量的处理器以及处理器的控制方法。在本公开的一个方式所涉及的处理器中,在第一寄存器中存储第一数据元素,在第二寄存器中存储第二数据元素,在第三寄存器中存储第一值。所述处理器通过1个指令执行乘法运算处理和比较处理。在所述乘法运算处理中,将所述第一数据元素与所述第一值相乘来计算乘法运算值。在所述比较处理中,将所述乘法运算值与所述第二数据元素进行比较。在本公开的一个方式所涉及的处理器的控制方法中,在第一寄存器中存储第一数据元素,在第二寄存器中存储第二数据元素,在第三寄存器中存储第一值。在该处理器的控制方法中,通过1个指令执行乘法运算处理和比较处理。在所述乘法运算处理中,将所述第一数据元素与所述第一值相乘来计算乘法运算值。在所述比较处理中,将所述乘法运算值与所述第二数据元素进行比较。附图说明图1是说明输入图像与固定区域的关系的说明图。图2是说明hog特征量的说明图。图3是说明向3×3像素的各像素分配符号的方法的一例的说明图。图4是说明直方图的等级(倾斜度等级)的说明图。图5是说明直方图的等级的边界值的说明图。图6是说明通过并行处理计算多个关注像素处的倾斜度的情况下的计算方法的说明图。图7是示出实施方式所涉及的处理器的结构的一例的结构图。图8是说明上述处理器的处理流程的示意图。图9是说明变形例1所涉及的处理器的处理流程的一部分的示意图。图10的a是示出变形例3中的移位处理前的第三矢量寄存器的示意图。图10的b是示出移位处理后的第三矢量寄存器的示意图。图11的a是示出变形例4中的移位处理前的第三矢量寄存器和第五矢量寄存器的示意图。图11的b是示出移位处理后的第三矢量寄存器和第五矢量寄存器的示意图。图12是说明变形例5中的多个助记符各自所读出的边界值倒数和倾斜度等级的组的示意图。图13是说明在变形例6所涉及的处理器中数据尺寸比第三数据元素大的情况下的从第一矢量寄存器向第四矢量寄存器存储数据的方法的说明图。图14是说明在上述处理器中向第四矢量寄存器存储数据的方法的另一例的说明图。图15是说明在上述处理器中数据尺寸比第三数据元素小的情况下的从第一矢量寄存器向第四矢量寄存器存储数据的方法的说明图。图16是说明在上述处理器中向第四矢量寄存器存储数据的方法的另一例的说明图。图17的a是示出实施方式中的指令代码的一例的示意图。图17的b是示出变形例7中的指令代码的一例的示意图。图18是示出变形例8中的指令代码的一例的示意图。图19是示出变形例9中的用于存储边界值倒数的通用寄存器以及用于存储倾斜度等级的通用寄存器的一例的示意图。具体实施方式以下,对实施方式所涉及的处理器进行说明。下面的实施方式只不过是本公开的各种实施方式的例子。另外,下面的实施方式只要能够实现本公开的目的,就能够根据设计等进行各种变更。参照图1~图8对本实施方式所涉及的处理器1进行说明。处理器1是能够在例如根据图像检测特定的物体(例如人)的物体检测处理中使用的处理器。此外,处理器是指令存储器、提取(fetch)部、解码部、寄存器文件、运算器组以及数据存储器中的全部包含在1个芯片中的处理器。但是,指令存储器和数据存储器也可以处于芯片外。在物体检测处理中,预先从映出特定的物体的大量样本图像中提取多个特征量来生成直方图,使用统计学习方法来学习特定的物体的特征,并获取示出特定的物体的特征的直方图(参照直方图)。然后,针对输入图像提取多个特征量来生成直方图,并将所生成的直方图与参照直方图进行比较。在该比较的结果为两者类似或一致的情况下,判定为在输入图像中映出了特定的物体。作为上述的特征量,能够使用hog(histogramsoforientedgradients:定向梯度直方图)特征量。hog特征量是将图像的固定区域的各像素处的边缘的倾斜度直方图化而得到的特征量。具体地说,如图1所示,求出输入图像f1的固定区域cr1内的各像素处的边缘eg1的倾斜度。然后,如图2所示,将求出的各像素处的边缘eg1的倾斜度直方图化。该直方图是针对固定区域cr1的hog特征量。此外,在图2的直方图中,横轴的等级是边缘的倾斜度,纵轴的度数是边缘的个数。横轴的等级被设定为例如将从0度到180度的范围进行8等分所得到的8个等级。将像这样求出的hog特征量(直方图)与上述的参照直方图进行比较,在两者一致或类似的情况下,判断为在固定区域cr1内映出了特定的物体。另外,在两者既不一致也不类似的情况下,判断为在固定区域cr1内没有映出特定的物体。对hog特征量的计算内容的概要进行说明。各像素处的边缘eg1的倾斜度θ能够如下面那样计算。如图3所示,考虑3×3像素kr1。图3中的符号p0~p9是用于识别各像素的符号,符号l0~l9是各像素p0~p9的亮度值。将中心的像素p4设为关注像素,计算关注像素p4处的边缘eg1的倾斜度θ。倾斜度θ是以3×3像素kr1的横轴为基准进行逆时针旋转得到的角度。将各像素p0~p9的亮度值设为l0~l9。如式1所示那样使用关注像素p0的上下的像素p1、p7的亮度值l1、l7的差分(l1-l7)和关注像素p0的左右的像素p5、p3的亮度值l5、l3的差分(l5-l3)来表现角度θ。此外,式1的arctan(反正切)是tan(正切)的倒数。θ=arctan((l1-l7)/(l5-l3))…式1将直方图的等级theta划分为多个(例如8个)倾斜度等级b0~b7(图4)。然后,针对图像f1的固定区域cr1的各像素计算角度θ,判定所计算出的角度θ属于8个倾斜度等级b0~b7中的哪个倾斜度等级b0~b7,并计入所属的倾斜度等级b0~b7的度数。例如将从0度到180度的范围进行8等分来构成倾斜度等级b0~b7。倾斜度等级b0~b7按b0、b1、…、b7的顺序从180度侧向0度侧排列。此外,在以下的说明中,将差分(l1-l7)也记载为上下差分l17,将差分(l5-l3)也记载为左右差分l53。对简化倾斜度θ的计算的方法进行说明。将式1的除法值((l1-l7)/(l5-l3))记载为angle(角度)。即,如式2那样定义angle。angle=(l1-l7)/(l5-l3)…式2式1的arctan的计算是复杂的,因此省略,基于式2仅计算angle。然后,判定angle的值属于直方图的8个倾斜度等级b0~b7中的哪个倾斜度等级。具体地说,如图5所示,预先设定直方图的8个倾斜度等级b0~b7的边界值a0~a7。然后,首先基于式2来针对所关注的3×3像素kr1计算angle的值。[表1]然后,如表1所示那样,从多个边界值a0~a7中的大的边界值起依次与angle的值进行大小比较。此外,多个边界值a0~a7与多个倾斜度等级b0~b7一一对应。具体地说,首先执行表1的第一行的if语句的大小关系(angle>a0)是否成立的判定。以下,将该判定也记载为成立与否判定。如果该大小关系成立,则判定为利用该angle的值求出的式1的角度θ属于与边界值a0对应的倾斜度等级b0。在该大小关系不成立的情况下,执行第二行的elseif语句的大小关系(angle>a1)的成立与否判定。如果该大小关系成立,则判定为利用该angle的值求出的式1的角度θ属于与边界值a1对应的倾斜度等级b1。然后,依次变更剩余的边界值a2~a7,并重复进行大小关系的成立与否判定。通过该处理,不进行arctan的计算,就能够判定角度θ属于8个倾斜度等级b0~b7中的哪个倾斜度等级。接着,对进一步简化倾斜度θ的计算的方法进行说明。[表2]由于式2的angle包含除法运算,因此运算花费时间。因此,将表1的第一行的if语句的大小关系(ange>a0)如表2的第一行的if语句的大小关系(1/a0×(l1-l7))>(l5-l3))那样变形为消除除法运算的形式。然后,执行大小关系的成立与否判定。同样地,表1的第二行以后的elseif语句的大小关系也如表2的第二行以后的elseif语句的大小关系那样变形,并执行大小关系的成立与否判定。此外,表2的1/a0、1/a1、…、1/a7作为已知数而给出。以下,将边界值倒数1/a0~1/a7也记载为边界值倒数a0~a7。此外,在表2中,第一行的if语句中的边界值倒数a0(=1/a0)和倾斜度等级b0构成一组。以后,有时将该组记载为组(a0、b0)。同样地,第二行以后的elseif语句中的边界值倒数和倾斜度等级的组有时也记载为组(a1、b1)、...、组(a7、b7)。详细地说明处理器1的结构。处理器1是通过执行表2的各行的大小关系的成立与否判定来生成hog特征量的处理器。即,处理器1一边相对于上下差分l17和左右差分l53使边界值倒数a0~a7和倾斜度等级b0~b7的组按顺序从组(a0、b0)到组(a7、b7)进行更换,一边判定关注像素p4处的倾斜度θ所属的倾斜度等级b0~b7。此时,处理器1通过一个矢量指令分别执行表2的各行的大小关系的成立与否判定。然后,针对固定区域cr1的所有像素(关注像素)执行表2的各行的大小关系的成立与否判定。由此,生成针对固定区域cr1的hog特征量。更为详细地说,如图6所示,处理器1通过并行处理来针对多个(例如4个)关注像素p4a~p4d中的各关注像素执行表2的各行的大小关系的成立与否判定。即,处理器1一边相对于多个关注像素p4a~p4d各自的上下差分l17a、l17b、l17c、l17d以及左右差分l53a、l53b、l53c、l53d使边界值倒数a0~a7和倾斜度等级b0~b7的组按顺序从组(a0、b0)到组(a7、b7)进行更换,一边判定关注像素p4a~p4d处的倾斜度θ所属的倾斜度等级theta-a~theta-d。此时,处理器1通过一个矢量指令来针对多个关注像素p4a~p4d的各关注像素分别执行表2的相同行的大小关系的成立与否判定。然后,针对固定区域cr1的所有像素(关注像素)执行表2的各行的大小关系的成立与否判定。由此,生成针对固定区域cr1的hog特征量。此外,图6中的上下差分l17a、l17b、l17c、l17d是关注像素p4a~p4d的上下像素的像素值的差分。左右差分l53a、l53b、l53c、l53d是关注像素p4a~p4d的左右像素的像素值的差分。如图7所示,处理器1具备处理部2、指令存储器3以及数据存储器7。处理部2具备第一矢量寄存器vra(第一寄存器)、第二矢量寄存器vrb(第二寄存器)、第三矢量寄存器vrc(第三寄存器)、第四矢量寄存器vrd(第四寄存器)、多个(例如4个)乘法器j1~j4、多个比较器k1~k4、选择器m1~m4、提取部4、解码部5以及执行部6。第一矢量寄存器vra~第四矢量寄存器vrd的存储容量例如为128比特。此外,在本实施方式中,第一矢量寄存器vra、第二矢量寄存器vrb以及第三矢量寄存器vrc包括在处理器1中,但也可以不包括在处理器1中。另外,指令存储器3和数据存储器7也可以不包括在处理器1中。另外,处理部2也可以包括第一矢量寄存器vra~第三矢量寄存器vrc以外的寄存器(例如矢量寄存器和通用寄存器)、执行部6、比较器k1~k4以及选择器m1~m4以外的运算器。如图8所示,第一矢量寄存器vra存储第一矢量数据vd1。第一矢量数据vd1由多个(例如,4个)第一数据元素vd11~vd14构成。第一数据元素vd11~vd14分别是表示关注像素p4a~p4d的上下像素的亮度值的差分的数据(上下差分数据)。第一矢量寄存器vra具有多个(例如4个)存储区域m11~m14。在存储区域的数量×存储区域的存储容量为矢量寄存器的存储容量的128比特这个范围内自由地设定存储区域m11~m14的数量及存储容量。因此,存储区域m11~m14的数量在本实施方式中为4个,但不限定于4个。多个第一数据元素vd11~vd14与多个存储区域m11~m14一一对应,并被存储在所对应的存储区域m11~m14内。各存储区域m11~m14例如为32比特,第一数据元素vd11~vd14例如是32比特数据。此外,一般来说,使存储区域的存储容量和数据元素的尺寸相互一致。因而,在第一数据元素为8比特数据的情况下,期望将存储区域也设定为8比特。在第一数据元素为8比特数据的情况下,第一数据元素的数量根据第一数据元素的尺寸而变化,第一数据元素的数量为16。此外,第二数据元素~第三数据元素也同样。需要与第一数据元素~第三数据元素的数量相匹配地改变要进行并行运算的第一数据元素~第三数据元素的数量或处理器的比较器、乘法器、选择器的数量,在该情况下为16。以下,将第一数据元素vd11~vd14也记载为上下差分数据vd11~vd14。如图8所示,第二矢量寄存器vrb存储第二矢量数据vd2。第二矢量数据vd2由多个(例如,4个)第二数据元素vd21~vd24构成。第二数据元素vd21~vd24分别是表示关注像素p4a~p4d的左右像素的亮度值的差分的数据(左右差分数据)。将第二数据元素vd21~vd24也记载为左右差分数据vd21~vd24。第二数据元素vd21~vd24是与第一数据元素vd11~vd14相关的数据。第二矢量寄存器vrb具有多个存储区域m21~m24。多个第二数据元素vd21~vd24与多个存储区域m21~m24一一对应,并被存储在所对应的多个存储区域m21~m24内。各存储区域m21~m24例如为32比特,第二数据元素vd21~vd24例如是8比特数据。如图8所示,第三矢量寄存器vrc存储边界值倒数a0(第一值)和倾斜度等级b0(第二值)。第三矢量寄存器vrc具有多个(例如4个)存储区域m31~m34。边界值倒数a0被存储在存储区域m34内,倾斜度等级b0被存储在存储区域m33内。在本实施方式中,不使用第三矢量寄存器vrc的存储区域m31、m32。各存储区域m31~m34例如为32比特,边界值倒数a0和倾斜度等级b0例如是8比特数据。此外,边界值倒数a0和倾斜度等级b0只要被存储在第三矢量寄存器vrc的预先决定的位置,就可以被存储在任意的位置,例如,边界值倒数a0和倾斜度等级b0也可以被存储在存储区域m31、m32内。在该情况下,在后述的处理中使用边界值倒数a0和倾斜度等级b0的情况下,从所决定的该位置取出边界值倒数a0和倾斜度等级b0。如图8所示,第四矢量寄存器vrd存储第三矢量数据vd3。第三矢量数据vd3由多个(例如,4个)第三数据元素vd31~vd34构成。第四矢量寄存器vrd具有多个(例如,4个)存储区域m41~m44。各存储区域m41~m44例如为32比特。多个第三数据元素vd31~vd34与多个存储区域m41~m44一一对应,并被存储在所对应的存储区域m41~m44内。如后述那样,多个存储区域m41~m44与多个选择器m1~m4一一对应。在存储区域m41~m44内存储从所对应的选择器m1~m4输出的选择结果。第三数据元素vd31~vd34由被存储到所对应的存储区域m41~m44内的选择结果构成。多个存储区域m11~m14、多个存储区域m21~m24、多个存储区域m31~m34、后述的多个乘法器j1~j4、后述的多个比较器k1~k4以及后述的多个选择器m1~m4分别一一对应。另外,多个第一数据元素vd11~vd14、多个第二数据元素vd21~vd24以及多个第三数据元素vd31~vd34分别一一对应。相互对应的第一数据元素vd11~vd14、第二数据元素vd21~vd23以及第三数据元素vd41~vd44被存储在3个矢量寄存器vra、vrb、vrd中的相互对应的存储区域内。指令存储器3是存储由处理器1执行的指令的易失性的存储器。提取部4是从指令存储器3读出要执行的指令的模块。解码器部5是解释由提取部4读出的指令的内容的模块。执行部6是执行由解码器部5解释的指令的模块。数据存储器7是保存通过从指令存储器3读出的指令而被进行处理的数据的存储器。在执行部6所执行的指令中,如图8所示那样包含通过1个指令执行乘法运算处理s1、比较处理s2以及置换处理s3的矢量指令。乘法运算处理s1、比较处理s2以及置换处理s3按该顺序执行。乘法运算处理s1是将存储在第一矢量寄存器vra中的第一数据元素vd11~vd14与存储在第三矢量寄存器vrc中的边界值倒数a0相乘来计算乘法运算值jt1~jt4的处理。比较处理s2是将乘法运算值jt1~jt4与存储在第二矢量寄存器vrb中的第二数据元素vd21~vd24进行比较的处理。置换处理s3是根据比较处理s2的比较结果,将存储在第四矢量寄存器vrd中的第三数据元素vd31~vd34置换为存储在第三矢量寄存器vrc中的倾斜度等级b0的处理。更为详细地说,在乘法运算处理s1中,将存储在第一矢量寄存器vra中的多个第一数据元素vd11~vd14分别与存储在第三矢量寄存器vrc中的边界值倒数a0相乘,来生成多个乘法运算值jt1~jt4。此外,多个乘法运算值jt1~jt4与多个第二数据元素vd21~vd24一一对应。在比较处理s2中,将存储在第二矢量寄存器vrb中的多个第二数据元素vd21~vd24分别与多个乘法运算值jt1~jt4中的对应的乘法运算值jt1~jt4进行比较,来生成多个比较结果kt1~kt4。多个比较结果kt1~kt4与多个第三数据元素vd31~vd34一一对应。在置换处理s3中,根据多个比较结果kt1~kt4中的对应的比较结果,将存储在第四矢量寄存器vrd中的多个第三数据元素vd31~vd34置换为存储在第三矢量寄存器vrc中的倾斜度等级b0。执行部6按照上述的矢量指令来执行乘法运算处理s1、比较处理s2以及置换处理s3。在乘法运算处理s1中,如图8所示,执行部6读出第一矢量寄存器vra的存储区域m11~m14内的第一数据元素vd11~vd14,并将读出的第一数据元素vd11~vd14输入到对应的乘法器j1~j4。另外,执行部6读出第三矢量寄存器vrc的存储区域m34内的边界值倒数a0,并将读出的边界值倒数a0输入到各乘法器j1~j4。针对这些输入,乘法器j1~j4将所输入的第一数据元素vd11~vd14与边界值倒数a0相乘来生成乘法运算值jt1~jt4。乘法器j1~j4将所生成的乘法运算值jt1~jt4输出到对应的比较器k1~k4。此外,多个乘法运算值jt1~jt4与多个比较器k1~k4一一对应。在比较处理s2中,如图8所示,执行部6读出第二矢量寄存器vrb的存储区域m21~m24内的第二数据元素vd21~vd24,并将读出的第二数据元素vd21~vd24输入到对应的比较器k1~k4。另外,如上所述那样向比较器k1~k4输入对应的乘法器j1~j4的乘法运算值jt1~jt4。针对这些输入,比较器k1~k4将所输入的乘法运算值jt1~jt4与第二数据元素vd21~vd24进行大小比较,并将其比较结果kt1~kt4输出到对应的选择器m1~m4。在置换处理s3中,如图8所示,执行部6读出第三矢量寄存器vrc的存储区域m33内的倾斜度等级b0,并将读出的倾斜度等级b0输入到各选择器m1~m4。另外,执行部6读出第四矢量寄存器vrd的存储区域m41~m44内的第三数据元素vd31~vd34,并将读出的第三数据元素vd31~vd34输入到对应的选择器m1~m4。另外,如上所述那样向选择器m1~m4输入对应的比较器k1~k4的比较结果kt1~kt4。针对这些输入,选择器m1~m4根据对应的比较结果kt1~kt4,将第四矢量寄存器vrd的存储区域m41~m44内的第三数据元素vd31~vd34置换为被输入的倾斜度等级b0。更为详细地说,在所输入的比较结果kt1~kt4是乘法运算值jt1~jt4比第二数据元素vd21~vd24大的结果的情况下(即,在表2的第一行的if语句的大小关系成立的情况下),选择器m1~m4从所输入的倾斜度等级b0和第三数据元素vd31~vd34中选择倾斜度等级b0。然后,选择器m1~m4将所选择出的倾斜度等级b0作为选择结果mt1~mt4,以覆盖的方式存储于第四矢量寄存器vrd中的对应的存储区域m41~m44。即,选择器m1~m4将第四矢量寄存器vrd内的与比较结果kt1~kt4对应的第三数据元素vd31~vd34置换为所输入的倾斜度等级b0。由此,根据比较结果kt1~kt4将第四矢量寄存器vrd内的第三数据元素vd31~vd34的内容更新为倾斜度等级b0。另一方面,在所输入的比较结果kt1~kt4是乘法运算值jt1~jt4为第二数据元素vd21~vd24以下这样的结果的情况下(即,在表2的第一行的if语句的大小关系不成立的情况下),选择器m1~m4从所输入的倾斜度等级b0和第三数据元素vd31~vd34中选择第三数据元素vd31~vd34。然后,选择器m1~m4将所选择出的第三数据元素vd31~vd34以覆盖的方式存储于第四矢量寄存器vrd中的对应的存储区域m41~m44。即,选择器m1~m4将第四矢量寄存器vrd内的与比较结果kt1~kt4对应的第三数据元素vd31~vd34置换为所输入的第三数据元素vd31~vd34。即,第四矢量寄存器vrd内的第三数据元素vd31~vd34不被更新地保持。这样,通过执行上述的矢量指令,针对4个关注像素p4a~p4d执行表2的第一行的if语句的大小关系的成立与否判定。然后,对于4个关注像素p4a~p4d中的上述的大小关系成立的关注像素,判定为其倾斜度θ属于倾斜度等级b0。然后,将该判定结果作为第三数据元素vd31~vd34存储于第四矢量寄存器vrd内的对应的存储区域m41~m44。然后,一边将存储在第三矢量寄存器vrc中的边界值倒数a0和倾斜度等级b0的组按顺序从下一组(a1、b1)到最后一组(a7、b7)进行更换,一边重复执行上述的矢量指令。由此,针对4个关注像素p4a~p4d依次执行表2的第二行以后的elseif语句的大小关系的成立与否判定。然后,将该判定结果(属于哪个倾斜度等级b0~b7的判定结果)作为第三数据元素vd31~vd34存储于第四矢量寄存器vrd内的对应的存储区域m41~m44。然后,对固定区域cr1的所有像素(关注像素)执行表2的各行的大小关系的成立与否判定。由此,生成针对固定区域cr1的hog特征量。[表3]表3示出将上述的矢量指令安装于处理器1的情况下的“助记符”、“数据类型”、“读出/写入”以及“动作”的一例。向表3的助记符一栏的pgrad.[d]的[d]中加入表示第一数据元素vd11~vd14、第二数据元素vd21~vd24以及第三数据元素vd31~vd34的数据类型的符号。表3的助记符的一栏的“vra”、“vrb”、“vrc”以及“vrd”用于指定要使用的矢量寄存器。“vra”对应于第一矢量寄存器vra,“vrb”对应于第二矢量寄存器vrb,“vrc”对应于第三矢量寄存器vrc,“vrd”对应于第四矢量寄存器vrd。在“vrd”中存储二进制的数据元素(第三数据元素vd31~vd34)。在本实施方式中,该数据元素的比特宽度与在vra、vrb以及vrc中存储的数据元素(第一数据元素vd11~vd14、第二数据元素vd21~vd24、边界值倒数a0以及倾斜度等级)的比特宽度相同。在表3的“数据类型”一栏中,“u8”表示无符号整数或固定小数点8比特。“s8”表示有符号整数或固定小数点8比特。“f16”表示半精度浮点数16比特。“f32”表示单精度浮点数32比特。“f64”表示倍精度浮点数64比特。表3的“读出/写入”一栏表示vra~vrd是用于读出还是用于写入。表3的“动作”一栏表示通过上述的矢量指令执行的处理(乘法运算处理s1、比较处理s2以及置换处理s3)。“动作”一栏的vrc[7:0]等的[7:0]表示比特位置从0到7的数据。此外,“vra[7:0]、vrc[7:0]”等部分对应于乘法运算处理s1,“umul(vra[7:0]、vrc[7:0])>vrb[7:0]”等部分对应于比较处理s2,关于“vrd[7:0]←(...)?vrc[7:0]:vrd[7:0]”等部分,在(...)内的关系成立的情况下,表示将vrc[7:0]输入到vrd[7:0],在(...)内的关系不成立的情况下,表示将vrd[7:0]输入到vrd[7:0],对应于置换处理s3。在表3的“动作”一栏中,记载了[d]为u8的情况下、[d]为s8的情况下以及[d]为u16的情况下的动作来作为一例。在本实施方式中,矢量寄存器vra~vrd是128比特的矢量寄存器,但矢量寄存器vra~vrd的比特宽度不限定于128比特,例如也可以是64比特、256比特、512比特或1024比特。如果矢量寄存器vra~vrd的比特宽度变化,则仅改变其中存储的数据元素的个数,动作的本质是相同的。在此,在本实施方式和比较例中,将执行3个处理s1~s3的时间进行比较。在本实施方式中,如上所述,通过一个矢量指令执行3个处理s1~s3。在比较例中,分别通过不同的矢量指令执行3个处理s1~s3。各处理s1~s3的处理本身通常不足1时钟(例如0.1时钟),但为了执行1个矢量指令,至少需要1时钟。在本实施方式中,通过1个矢量指令依次执行3个处理s1~s3,因此3个处理s1~s3本身在从发出矢量指令时起经过0.3时钟(=3×0.1时钟)时完成,在执行1个矢量指令所需时间的1时钟以内。因此,为了执行用于执行3个处理s1~s3的矢量指令,要花费1时钟。在比较例中,发出第一个矢量指令来执行第一个处理s1,在下一时钟发出第二个矢量指令来执行第二个处理s2,进而,在下一时钟发出第三个矢量指令来执行第三个处理s3。其结果,在比较例中,从发出第一个矢量指令到第三个处理s3完成为止,花费3时钟(=1时钟+1时钟+1时钟)。这样,如本实施方式那样,通过一个矢量指令执行3个处理s1~s3,由此能够更快速地执行一系列的3个处理s1~s3。因而,能够更快速地执行用于生成hog特征量的处理。以上,根据本实施方式所涉及的处理器1,能够通过一个矢量指令执行乘法运算处理s1、比较处理s2以及置换处理s3,因此能够更加快速地执行用于生成hog特征量的处理。(变形例)以下,说明上述的实施方式的变形例。以下的变形例也可以组合起来实施。上述的实施方式只不过是本公开的各种实施方式之一。上述的实施方式只要能够实现本公开的目的,就能够根据设计等进行各种变更。并且,上述的实施方式所涉及的方式不限于通过处理器1来具体化。例如,也可以通过处理器1的控制方法来将上述的实施方式所涉及的方式具体化。上述的处理器的控制方法包括以下处理:能够使用存储第一数据元素的第一寄存器、存储第二数据元素的第二寄存器以及存储第一值的第三寄存器来执行指令。所述指令是用于执行乘法运算处理和比较处理的1个指令。在所述乘法运算处理中,将存储在所述第一寄存器中的所述第一数据元素与存储在所述第三寄存器中的所述第一值相乘来计算乘法运算值。在比较处理中,将所述乘法运算值与存储在所述第二寄存器中的所述第二数据元素进行比较。此外,在以下的变形例的说明中,有时对与上述的实施方式相同的构成要素标注相同的附图标记并省略说明。(变形例1)在上述的实施方式中,边界值倒数1/a0~1/a7有时为1以下的值,因此表2的各行的大小关系的左边(不等式的左边)((1/a0×(l1-l7))、...、(1/a7×(l1-l7)))有时为1以下的数值。例如,如果设为1/a0~1/a7以及(l1-l7)为8比特且(l1-l7)为整数,则上述的左边为16比特,但在如上所述那样上述的左边的数值为1以下的数值的情况下,上述的左边的数值的小数点位置出现在从该数值的比特串的右端(低位比特侧)起第八比特的位置。另一方面,表2的各行的大小关系的右边(l5-l3)的数值例如是整数,因此上述的右边的数值的小数点位置出现在该数值的比特串的右端。也可以使上述的右边的数值的小数点位置与上述的左边的数值的小数点位置一致,使得在进行上述的大小关系的成立与否判定的运算时进行固定小数点运算。即,也可以使上述的右边的数值向左移位规定的移位量(例如8比特),来进行上述的大小关系的成立与否判定的运算。此外,根据第二数据元素vd21~vd24的数据类型,将规定的移位量设定为固定值。更为详细地说,如图9所示,也可以在矢量指令中追加使第二矢量寄存器vrb的存储区域m21~m24内的第二数据元素vd21~vd24向左移位规定的移位量(例如8比特)的移位处理s4(小数点移位处理)。然后,将移位了规定的移位量的第二数据元素vd21~vd24输入到对应的比较器k1~k4。之后的处理与上述的实施方式相同。[表4]表4示出将本变形例的矢量指令安装于处理器1的情况下的“助记符”、“数据类型”、“读出/写入”以及“动作”的一例。该变形例对浮点数没有效果,因此在“数据类型”中不包括浮点数。根据该结构,能够使第二数据元素vd21~vd24的小数点位置与在乘法运算处理s1中计算出的乘法运算值jt1~jt4的小数点位置相匹配或接近。因而,能够提高比较处理s2中的运算精度。其结果,能够更快速地生成hog特征量。(变形例2)在变形例1中,例如根据第二数据元素vd21~vd24的数据类型来用固定值设定规定的移位量,但也可以在指令(矢量指令)中用立即值指定规定的移位量。换言之,指令也可以具有能够输入规定的移位量的值的变量(立即值)。[表5]表5示出将本变形例的矢量指令安装于处理器1的情况下的“助记符”、“数据类型”、“读出/写入”以及“动作”的一例。表3的“助记符”一栏的“imm”是立即值(immediatevalue)。通过例如根据边界值倒数的值输入值,能够设定与边界值倒数相应的规定的移位量。该变形例对浮点数没有效果,因此在“数据类型”中不包括浮点数。根据该结构,能够根据对变量(立即值)的输入值来变更规定的移位量。在乘法运算处理s1中计算出的乘法运算值jt1~jt4的小数点位置根据边界值倒数a0~a7发生变化。因此,根据边界值倒数a0~a7改变对变量的输入值,从而改变规定的移位量,由此即使边界值倒数a0~a7变化,也能够提高比较处理s2中的运算精度。(变形例3)在上述的实施方式中,被存储在第三矢量寄存器vrc的存储区域m33、m34内的边界值倒数a0和倾斜度等级b0的组按顺序从下一组(a1、b1)到最后一组(a7、b7)进行更换。由此,向存储区域m33、m34提供在处理s1、s3中使用的边界值倒数和倾斜度等级。与此相对地,在本变形例中,如图10的a所示,在第三矢量寄存器vrc中预先存储多个组(例如组(a0、b0)和组(a1、b1))。然后,如图10的b所示,通过使该多个组向一个方向y1每次移位一个组的量,来向存储区域m33、m34提供在处理s1、s3中使用的边界值倒数和倾斜度等级。在图10的a中,作为多个组,组(a0、b0)和组(a1、b1)以排列成一列的方式被存储在第三矢量寄存器vrc中。组(a0、b0)被存储在存储区域m33、m34内,组(a1、b1)被存储在与存储区域m33、m34相邻的存储区域m31、m32内。与上述的实施方式同样地,通过本变形例的矢量指令来读出被存储在第三矢量寄存器vrc的存储区域m33、m34(规定区域)内的组的边界值倒数和倾斜度等级,来作为在乘法运算处理s1中使用的边界值倒数a0和在置换处理s3中使用的倾斜度等级b0。本变形例的矢量指令在执行了一系列的处理s1~s3之后,进一步执行使存储在第三矢量寄存器vrc中的上述多个组向一个方向y1(第一移位方向)移位一个组的量的移位处理(图10的b)。此外,一个方向y1是从存储区域m31朝向存储区域m34的方向,换言之,在本变形例中,是从高位比特侧朝向低位比特侧的方向。由此,被存储在第三矢量寄存器vrc的存储区域m33、m34(规定区域)的相邻的存储区域m31、m32(相邻的区域)内的组(a1、b1)移动到存储区域m33、m34(规定区域)。由此,向存储区域m33、m34内存储(提供)在接下来的一系列的处理s1~s3中使用的边界值倒数a1和倾斜度等级b1。此外,也可以使组(a0、b0)和组(a1、b1)在第三矢量寄存器vrc中的排列相反,从存储区域m31、m32读出组(a0、b0),在执行了一系列的处理s1~s3之后使存储区域m33、m34内的组(a1、b1)向与一个方向y相反的方向移位一个组的量来移动到存储区域m31、m32。此外,在上述的移位处理中,组(a0、b0)被从第三矢量寄存器vrc的存储区域内抽出而删除。另外,在移位处理后在存储区域m31、m32内例如存储0个数据而进行零初始化。此外,也可以用零以外的值(例如1)进行该初始化。表6示出将本变形例的矢量指令安装于处理器1的情况下的“助记符”、“数据类型”、“读出/写入”以及“动作”的一例。[表6]在表6的“动作”一栏中,“vrc[111:0]←vrc[127:16]、vrc[127:112]←0”等部分对应于移位处理。以上,根据本变形例,在第三矢量寄存器vrc中存储多个组(边界值倒数和倾斜度等级的组),通过使上述多个组移位,能够使上述多个组一个一个地依次移动到第三矢量寄存器vrc的存储区域m33、m34。由此,在第三矢量寄存器vrc中能够减少在一系列的处理s1~s3中使用的组(边界值倒数和倾斜度等级的组)的更换,能够提高一系列的处理s1~s3的处理速度。此外,如果在第三矢量寄存器vrc中存储有边界值倒数和倾斜度等级的组的所有组(即,从组(a0、b0)到组(a7、b7)的所有组),则能够不需要进行在一系列的处理s1~s3中使用的组的更换。(变形例4)本变形如图11的a所示那样,在变形例3中还具备第五矢量寄存器vrc+1(第五寄存器)。与第三矢量寄存器vrc同样地,第五矢量寄存器vrc+1具有多个(例如4个)存储区域m51~m54。第五矢量寄存器vrc+1的寄存器编号c+1是第三矢量寄存器vrc的寄存器编号c的连号。此外,在本变形例中,第五矢量寄存器vrc+1的寄存器编号c+1是第三矢量寄存器vrc的寄存器编号c的连号,但不限定于连号。例如,也可以将第五矢量寄存器表示为vre,将寄存器编号设为e。此外,寄存器编号是为了指定在处理中使用的寄存器而对寄存器设定的识别编号。如图11的a所示,多个(例如2个)组(组(a0、b0)和组(a1、b1))以从低位比特侧起依次排列成一列的方式被存储在第三矢量寄存器vrc的存储区域m31~m34内。多个(例如2个)组(组(a2、b2)和组(a3、b3))以从低位比特侧起依次排列成一列的方式被存储在第五矢量寄存器vrc+1的存储区域m51~m54内。即,多个组(从组(a0、b0)到组(a7、b7)的所有组)中的连续的4个组(例如从组(a0、b0)到组(a3、b3)的组)被存储在第三矢量寄存器vrc和第五矢量寄存器vrc+1中。此外,数据a0、b0、a1、b1分别被存储在第三矢量寄存器vrc的存储区域m34~m31内。数据a2、b2、a3、b3分别被存储在第五矢量寄存器vrc+1的存储区域m54~m51内。本变形例的移位处理在变形例3的移位处理中包括下述的第一处理和第二处理。如图11的b所示,在第一处理中,使存储在第五矢量寄存器vrc+1中的多个组(例如组(a2、b2)和组(a3、b3))向一个方向y2(第二移位方向)移位一个组的量。一个方向y2是从存储区域m51朝向存储区域m54的方向,换言之,在本变形例中是从第五矢量寄存器vrc+1的高位比特侧朝向低位比特侧的方向。在第一处理中变空的存储区域m51、m52存储有0个数据而被零初始化(参照图11的b)。此外,也可以通过存储零以外的值(例如1)来进行该初始化。在第二处理中,如图11的b所示那样使第五矢量寄存器vrc+1内的组(a2、b2)移动到第三矢量寄存器vrc中的组(a1、b1)的后邻的存储区域m31、m32。后邻是指与一个方向y1相反的方向的旁边。此外,组(a2、b2)是在第五矢量寄存器vrc+1中以排列成一列的方式存储的多个组(组(a2、b2)和组(a3、b3))中的位于一个方向y2的一端的组。另外,组(a1、b1)是在第三矢量寄存器vrc中排列成一列的多个组(组(a0、b0)和组(a1、b1))中的位于与一个方向y1相反的方向的一端的组。在本变形例中,在上述的移位处理中,第三矢量寄存器vrc内的多个组(组(a0、b0)和组(a1、b1))向一个方向y1移位一个组的量。与该移位并行地或者在该移位之后,在上述的移位处理中进一步使第五矢量寄存器vrc+1内的多个组(组(a2、b2)和组(a3、b3))也向一个方向y2移位一个组的量。然后,在上述的移位处理中,第五矢量寄存器vrc+1中的一个方向y2的一端的组(组(a2、b2))被补充到第三矢量寄存器vrc的多个组的后邻。由此,即使多个组(例如从组(a0、b0)到组(a3、b3)的4个组)被分开地存储在2个矢量寄存器vrc、vrc+1中,也能够进行处理以使得将这些多个组存储在1个矢量寄存器中。本变形例的矢量指令的助记符如表7所示那样示出。[表7]助记符pgrad.[d]vrd,vra,vrb,vrc,vrc+1此外,被存储到第三矢量寄存器vrc中的组(例如组(a0、b0)和组(a1、b1))对应于权利要求书中记载的第一组。另外,被存储到第五矢量寄存器vrc+1中的组(例如组(a2、b2)和组(a3、b3))对应于权利要求书中记载的第二组。(变形例5)在变形例3中,第三矢量寄存器vrc内的多个组(例如组(a0、b0)和组(a1、b1))通过一组一组地移位到存储区域m33、m34而从第三矢量寄存器vrc读出。但是,也可以不使第三矢量寄存器vrc内的多个组如上述那样移位,而是通过矢量指令在第三矢量寄存器vrc中指定存储有所读出的组的存储区域。然后,也可以从所指定的存储区域读出边界值倒数(第一值)和倾斜度等级(第二值)。更为详细地说,第三矢量寄存器vrc内的上述多个组(例如组(a0、b0)和组(a1、b1))被存储在第三矢量寄存器vrc中的互不相同的存储区域内。组(a0、b0)被存储在存储区域m33、m34内,组(a1、b1)被存储在存储区域m31、m32内。本变形例的矢量指令具有多个(例如2个)助记符(指令助记符)。多个助记符用于读出上述多个组中的被存储到互不相同的存储区域内的组的边界值倒数和倾斜度等级,来作为在乘法运算处理s1中使用的边界值倒数和在置换处理s3中使用的倾斜度等级。具体地说,如图12所示那样假定上述多个组为2个组(例如组(a0、b0)和组(a1、b1))的情况。在该情况下,本变形例的矢量指令具有pgrandh.[d]和pgrandl.[d],来作为2个助记符。pgrandh.[d]用于从存储有上述2个组中的高位比特侧的组(组(a1、b1))的存储区域m31、m32读出边界值倒数a1和倾斜度等级b1,来作为在乘法运算处理s1中使用的边界值倒数和在置换处理s3中使用的倾斜度等级。pgrandl.[d]用于从存储有2个组(组(a0、b0)和组(a1、b1))中的低位比特侧的组(组(a0、b0))的存储区域m33、m34读出边界值倒数a0和倾斜度等级b0。当将矢量指令安装于处理器1时,在读出高位比特侧的组(组(a1、b1))的边界值倒数a1和倾斜度等级b1的情况下,使用pgrandh.[d]来作为助记符。另一方面,在读出低位比特侧的组(组(a0、b0))的边界值倒数a0和倾斜度等级b0的情况下,使用pgrandl.[d]来作为助记符。根据本变形例,根据使用多个助记符(例如pgrandh.[d]和pgrandl.[d])中的哪个助记符,能够在第三矢量寄存器vrc中读出多个组(例如组(a0、b0)和组(a1、b1))中的被存储到互不相同的存储区域内的组的边界值倒数和倾斜度等级。即,在第三矢量寄存器vrc中不如变形例3、4那样使多个组移位,就能够读出被存储到不同的存储区域内的组(例如组(a0、b0)和组(a1、b1))的边界值倒数和倾斜度等级。其结果,能够提高生成hog特征量的处理速度。此外,为了指定使用被存储到第三矢量寄存器vrc的多个组中的哪个组,也可以使助记符仍为pgrad.[d],对助记符添加立即值“imm”,来用立即值进行指定。在该情况下,例如也可以使被存储到第三矢量寄存器vrc的多个(例如2个)组从低位比特起依次与0、1对应,当利用立即值指定0时,读出低位侧的组,当利用立即值指定1时,读出高位侧的组。(变形例6)在上述的实施方式中,第一数据元素vd11~vd14以及第二数据元素vd21~vd24(即,输入图像的数据)各自的比特宽度与第三数据元素vd31~vd34(即,hog特征量)的比特宽度相同,但也可以互不相同。如图13所示,第一数据元素vd11~vd14以及第二数据元素vd21~vd24各自的比特宽度也可以比第三数据元素vd31~vd38的比特宽度大。在图13的例子中,第一数据元素vd11~vd14以及第二数据元素vd21~vd24的比特宽度是16比特宽度(例如,在数据类型为u16的情况下),第三数据元素vd31~vd38的比特宽度是8比特宽度。此外,边界值倒数a0是16比特,倾斜度等级b0是8比特。第一矢量寄存器vra~第四矢量寄存器vrd是128比特宽度。此外,也可以将用于存储倾斜度等级b0的存储区域的比特宽度与边界值倒数a0一起设为16比特,在该情况下,倾斜度等级b0的有效数据为该16比特中的8比特。在图13的例子中,在第一矢量寄存器vra中存储8个第一数据元素vd11~vd18。在第二矢量寄存器vrb中也存储8个第二数据元素vd21~vd28。在第三矢量寄存器vrc中存储边界值倒数a0和倾斜度等级b0这2个数据。在第四矢量寄存器vrd中也存储8个第三数据元素vd31~vd38。第三数据元素vd31~vd38例如被存储在第四矢量寄存器vrd的低位侧一半的64比特宽度的存储区域内。在该情况下,第四矢量寄存器vrc的高位侧一半的64比特的存储区域不被使用而成为空的。边界值倒数a0和倾斜度等级b0例如被存储在第三矢量寄存器vrc的低位侧的24比特宽度的存储区域内。第三矢量寄存器vrc的剩余的104比特宽度的存储区域不被使用为成为空的。此外,在表8中示出将该情况下的矢量指令安装于处理器1的情况下的“助记符”、“数据类型”、“读出/写入”以及“动作”的一例。[表8]表8的“助记符”一栏的pgrad8.[d]的“8”表示存储在vrd中的数据元素(第三数据元素vd31~vd38)的比特宽度。此外,如图14所示,8个第三数据元素vd31~vd38也可以存储在第四矢量寄存器vrd的高位侧一半的64比特宽度的存储区域内。在该情况下,第四矢量寄存器vrd的低位侧一半的64比特的存储区域不被使用而成为空的。此外,也可以将图14的情况下的助记符表示为pgrad8h.[d],将图13的情况下的助记符表示为pgrad8l.[d]。由此,根据使用2个助记符(pgrad8h.[d]、pgrad8l.[d])中的哪一个助记符,能够选择是将第三数据元素vd31~vd38存储在第四矢量寄存器vrd的高位侧一半的存储区域内,还是存储在低位侧一半的存储区域内。另外,如图15所示,第一数据元素vd11~vd14以及第二数据元素vd21~vd24各自的比特宽度也可以比第三数据元素vd31~vd38的比特宽度小。在图15的例子中,第一数据元素vd11~vd14以及第二数据元素vd21~vd24各自的比特宽度是8比特宽度(例如,在数据类型为8u的情况下),第三数据元素的比特宽度是16比特宽度。此外,第一矢量寄存器vra~第四矢量寄存器vrd是128比特宽度。在图15的例子中,在第一矢量寄存器vra中存储8个第一数据元素vd11~vd18。在第二矢量寄存器vrb中也存储8个第二数据元素vd21~vd28。在第三矢量寄存器vrc中存储边界值倒数a0和倾斜度等级b0这2个数据。在第四矢量寄存器vrd中也存储8个第三数据元素vd31~vd38。第一数据元素vd11~vd18例如被存储在第一矢量寄存器vra的低位侧一半的64比特宽度的存储区域内,第一矢量寄存器vra的高位侧一半的64比特的存储区域不被使用而成为空的。同样地,第二数据元素vd21~vd28也被存储在第二矢量寄存器vrb的低位侧一半的64比特宽度的存储区域内,第二矢量寄存器vrb的高位侧一半的64比特的存储区域不被使用而成为空的。边界值倒数a0和倾斜度等级b0例如被存储在第三矢量寄存器vrc的低位侧的24比特宽度的存储区域内。第三矢量寄存器vrc的剩余的104比特宽度的存储区域不被使用而成为空的。此外,也可以将用于存储边界值倒数a0的存储区域的比特宽度与倾斜度等级b0一起设为16比特,在该情况下,边界值倒数a0的有效数据为该16比特中的8比特。此外,在表9中示出将该情况下的矢量指令安装于处理器1的情况下的“助记符”、“数据类型”、“读出/写入”以及“动作”的一例。[表9]表9的“助记符”一栏的pgrad16.[d]的“16”表示存储在vrd的数据元素(第三数据元素vd31~vd38)的比特宽度。此外,如图16所示,8个第一数据元素vd11~vd18也可以被存储到第一矢量寄存器vra的高位侧一半的64比特宽度的存储区域内。在该情况下,第一矢量寄存器vra的低位侧一半的64比特的存储区域不被使用而成为空的。另外,8个第二数据元素vd21~vd28也可以被存储到第二矢量寄存器vrb的高位侧一半的64比特宽度的存储区域内。在该情况下,第二矢量寄存器vrb的低位侧一半的64比特的存储区域不被使用而成为空的。此外,也可以将图16的情况下的助记符表示为pgrad16h.[d],将图15的情况下的助记符表示为pgrad16l.[d]。由此,根据使用2个助记符(pgrad16h.[d]、pgrad16l.[d])中的哪一个助记符,能够选择是从第一矢量寄存器vra和第二矢量寄存器vrb的高位侧一半的存储区域分别读出第一数据元素vd11~vd18以及第二数据元素vd21~vd28,还是从低位侧一半的存储区域分别读出第一数据元素vd11~vd18以及第二数据元素vd21~vd28。(变形例7)在上述的实施方式中,矢量指令的助记符如表10那样具有第一矢量寄存器vra~第四矢量寄存器vrd。[表10]助记符pgrad.[d]vrd,vra,vrb,vrc因此,在矢量指令的指令代码q1中,需要如图17的a所示那样指定第一矢量寄存器vra~第四矢量寄存器vrd的寄存器编号a~d。此外,寄存器编号是为了指定在处理中使用的寄存器而对寄存器设定的识别编号。在指令代码q1中,需要记载用于定义指令的操作代码和用于指定寄存器的寄存器编号。由于指令代码q1的指令长度是固定的(例如32比特),因此当指定4个矢量寄存器vra~vrd的寄存器编号a~d时,寄存器编号指定字段rf1的比特长度变长,操作代码的比特长度变短。寄存器编号指定字段rf1是用于指定寄存器编号的字段。其结果,利用指令代码q1无法定义更多的指令。在图17的a的例子中,操作代码是12比特,各寄存器编号a~d是5比特。此外,在该变形例中,作为一例,假定指令代码q1的指令长度是32比特且在具有32个矢量寄存器的处理器中安装。在本变形例中,将第一矢量寄存器vra、第二矢量寄存器vrb、第三矢量寄存器vrc以及第四矢量寄存器vrd中的至少1个矢量寄存器的寄存器编号设为针对其它矢量寄存器的寄存器编号而言的连号。如果决定了其它寄存器编号,则作为其它寄存器编号的连号的寄存器编号自动地被决定为其它寄存器编号的下一个寄存器编号或前一个寄存器编号。因此,不需要在指令代码中记载作为其它寄存器编号的连号的寄存器编号。其结果,能够使指令代码中的操作代码的比特长度更长,能够定义更多的指令。例如,也可以将第二矢量寄存器vrb的寄存器编号b设为第一矢量寄存器vra的寄存器编号a的连号、即编号a+1。即,也可以设为寄存器编号b=a+1。在该情况下,当指定第一矢量寄存器vra的寄存器编号a时,第二矢量寄存器vrb的寄存器编号a+1自动地被决定为寄存器编号a的下一个寄存器编号。该情况下的助记符如表11所示。[表11]助记符pgrad.[d]vrd,vra,vra+1,vrc另外,关于该情况下的指令代码q2,如图17的b所示那样记载第二矢量寄存器vrb的寄存器编号a+1以外的3个矢量寄存器vra、vrc、vrd的寄存器编号a、c、d。在该情况下,在指令代码q2中,寄存器编号指定字段rf2的比特长度变短了未记载第二矢量寄存器vrb的寄存器编号a+1时的量,操作代码变长相应的量。另外,也可以将第二矢量寄存器vrb的寄存器编号b设为第四矢量寄存器vrd的寄存器编号d的连号、即编号d+1。即,也可以设为寄存器编号b=d+1。该情况下的助记符如表12所示。另外,该情况下的指令代码q3如图17的b那样。此外,关于将矢量寄存器vra~vrd中的1个矢量寄存器的寄存器编号设为其它的哪个矢量寄存器的寄存器编号的连号,能够考虑各种各样的组合,且能够根据设计等进行各种变更。[表12]助记符pgrad.[d]vrd,vra,vrd+1,vrc(变形例8)在变形例7中,例如通过将第二矢量寄存器vrb的寄存器编号b设为其它矢量寄存器的寄存器编号的连号,来减少寄存器编号指定字段fr2的比特长度。但是,寄存器编号指定字段fr2的比特长度的减少方式不限定于上述方式。例如,也可以通过将4个矢量寄存器vra~vrd中的至少1个矢量寄存器的寄存器编号固定(即,设为固定值),来减少寄存器编号指定字段的比特长度。如果将寄存器编号固定,则不需要利用指令代码指定寄存器编号。由此,寄存器编号指定字段的比特长度变短,操作代码变长相应的量。例如,也可以将第三矢量寄存器vrc的寄存器编号c固定为编号0(零)。即,也可以设为寄存器编号c=0。该情况下的矢量指令的助记符既可以如表13的上段那样记载第三矢量寄存器vrc,也可以如表13的下段那样不记载第三矢量寄存器vrc。[表13]另外,关于该情况下的指令代码q3,如图18所示那样记载第三矢量寄存器vrc的寄存器编号0(零)以外的3个矢量寄存器vra、vrb、vrd的寄存器编号a、b、d。在该情况下,在指令代码q4中,寄存器编号指定字段rf3的比特长度变短了未记载第三矢量寄存器vrc的寄存器编号0(零)时的量,操作代码变长相应的量。(变形例9)在上述的实施方式中,存储边界值倒数a0和倾斜度等级b0的组的寄存器是矢量寄存器(第三矢量寄存器vrc),但也可以存储在通用寄存器中。在该情况下,处理器1如图19所示那样具备存储边界值倒数a0的通用寄存器rc和存储倾斜度等级b0的通用寄存器rc+1。在图19的例子中,为了减少指令代码中的通用寄存器编号指定字段,2个通用寄存器rc、rc+1的寄存器编号c、c+1被设定为连号。该情况下的矢量指令的助记符如表14所示。[表14]助记符pgrad.[d]vrd,vra,vrb,rc:rc+1(其它变形例)在上述的实施方式中,通过1个矢量指令执行乘法运算处理s1、比较处理s2以及置换处理s3,但也可以通过1个矢量指令执行3个处理s1~s3中的乘法运算处理s1和比较处理s2。在该情况下,通过其它矢量指令执行置换处理s3。在上述的实施方式中,针对图像生成hog特征量,但也可以针对图像以外的物理信息(例如声音(例如语音))生成hog特征量。在上述的实施方式中,通过并行处理来计算多个关注像素处的倾斜度等级,但也可以按每个关注像素计算倾斜度等级。(总结)在本公开的第一方式所涉及的处理器(1)中,在第一寄存器(vra)中存储第一数据元素(vd11~dv14),在第二寄存器(vrb)中存储第二数据元素(vd21~dv24),在第三寄存器(vrc)中存储第一值(a0)。处理器(1)通过1个指令执行乘法运算处理(s1)和比较处理(s2)。在乘法运算处理(s1)中,将第一数据元素(vd11~dv14)与第一值(a0)相乘来计算乘法运算值(jt1~jt4)。在比较处理(s2)中,将乘法运算值(jt1~jt4)与第二数据元素(vd21~dv24)进行比较。根据该结构,能够通过1个指令来执行生成hog特征量时的乘法运算处理(s1)和比较处理(s2),因此能够更快速地生成hog特征量。关于本公开的第二方式所涉及的处理器(1),在第一方式中,在第四寄存器(vrd)中存储第三数据元素(vd31~dv34),在第三寄存器(vrc)中还存储第二值(b0)。通过上述的1个指令还执行置换处理(s3)。在置换处理(s3)中,根据比较处理(s2)的比较结果(kt1~kt4),将存储在第四寄存器(vrd)中的第三数据元素(vd31~dv34)置换为第二值(b0)。根据该结构,能够通过1个指令执行生成hog特征量时的乘法运算处理(s1)、比较处理(s2)以及置换处理(s3),因此能够更快速地生成hog特征量。关于本公开的第三方式所涉及的处理器(1),在第二方式中,在第三寄存器(vrc)中存储多个组(例如,组(a0、b0)和组(a1、b1))。多个组分别由第一值(a0)和第二值(b0)构成。多个组被存储在第三寄存器(vrc)中的互不相同的存储区域内。上述的1个指令具有多个指令助记符(例如pgrandh.[d]和pgrandl.[d])。多个指令助记符用于读出多个组中的被存储在互不相同的存储区域内的组的第一值和第二值。根据该结构,根据使用多个指令助记符(例如pgrandh.[d]和pgrandl.[d])中的哪个指令助记符,能够在第三寄存器(vrc)中读出被存储在互不相同的存储区域内的组(例如组(a0、b0)和组(a1、b1))的第一值和第二值。即,在第三寄存器(vrc)中不使多个组移位,就能够读出被存储在不同的存储区域内的组的第一值和第二值。关于本公开的第四方式所涉及的处理器(1),在第二或第三方式中,第一数据元素(vd11~dv14)以及第二数据元素(vd21~dv24)各自的比特宽度与第三数据元素(vd31~dv34)的比特宽度不同。根据该结构,第一数据元素(vd11~dv14)以及第二数据元素(vd21~dv24)各自的比特宽度不受第三数据元素(vd31~dv34)的比特宽度限制,因此能够提高第一数据元素(vd11~dv14)以及第二数据元素(vd21~dv24)的比特宽度的自由度。关于本公开的第五方式所涉及的处理器(1),在第二~第四方式中的任一方式中,具备第一寄存器(vra)、第二寄存器(vrb)、第三寄存器(vrc)以及第四寄存器(vrd)。对第一寄存器(vra)、第二寄存器(vrb)、第三寄存器(vrc)以及第四寄存器(vrd)设定了作为识别编号的寄存器编号。第一寄存器(vra)、第二寄存器(vrb)、第三寄存器(vrc)以及第四寄存器(vrd)中的至少1个寄存器(例如vrb)的寄存器编号(例如c+1)是针对其它寄存器(例如vrc)的寄存器编号(例如c)而言的连号。根据该结构,能够从指令代码(q2、q3)的寄存器编号指定字段(rf2)中省略被设定为其它寄存器编号(例如c)的连号的寄存器(例如vrb)的寄存器编号(例如c+1)。由此,能够在指令代码(q2、q3)中缩短寄存器编号指定字段(rf2)的比特长度,并使操作代码的比特长度延长相应的量。由此,能够在操作代码中定义更多的指令。关于本公开的第六方式所涉及的处理器(1),在第二~第五方式中的任一方式中,具备第一寄存器(vra)、第二寄存器(vrb)、第三寄存器(vrc)以及第四寄存器(vrd)。第一寄存器(vra)、第二寄存器(vrb)、第三寄存器(vrc)以及第四寄存器(vrd)中的至少1个寄存器(例如vrc)的寄存器编号(例如c)被固定。根据该结构,能够从指令代码(q4)的寄存器编号指定字段(rf3)中省略将寄存器编号设为固定的寄存器(vrc)的寄存器编号(0(零))。由此,能够在指令代码(q4)中缩短寄存器编号指定字段(rf3)的比特长度,并使操作代码的比特长度延长相应的量。由此,能够在操作代码中定义更多的指令。关于本公开的第七方式的处理器(1),在第二~第六方式中的任一方式中,在第一寄存器(vra)中存储多个第一数据元素(vd11~dv14)。在第二寄存器(vrb)中存储多个第二数据元素(vd21~dv24)。在第四寄存器(vrd)中存储多个第三数据元素(vd31~dv34)。在乘法运算处理(s1)中,将多个第一数据元素(vd11~dv14)与第一值(a0)相乘来生成多个乘法运算值(jt1~jt4)。多个乘法运算值(jt1~jt4)与多个第二数据元素(vd21~dv24)对应。在比较处理(s2)中,将多个第二数据元素(vd21~dv24)与多个乘法运算值(jt1~jt4)中的对应的乘法运算值(jt1~jt4)进行比较,来生成多个比较结果(kt1~kt4)。多个比较结果(kt1~kt4)与多个第三数据元素(vd31~dv34)相对应。在置换处理(s3)中,将存储在第四寄存器(vrd)中的多个第三数据元素(vd31~dv34)根据多个比较结果(kt1~kt4)中的对应的比较结果(kt1~kt4)来置换为第二值(b0)。根据该结构,能够按每个对应的数据元素并行地处理多个第一数据元素(vr11~vr14)、多个第二数据元素(vr21~vr24)以及多个第三数据元素(vr31~vr34)。因而,能够同时计算多个第一数据元素(vr11~vr14)处的倾斜度等级。其结果,能够更快速地生成hog特征量。关于本公开的第八方式所涉及的处理器(1),在第七方式中,在第三寄存器(vrc)中存储多个组(例如,组(a0、b0)和组(a1、b1))。多个组分别由第一值和第二值构成。多个组排列成一列。通过上述的1个指令来读出存储在第三寄存器(vrc)的规定区域(m33、m34)内的组的第一值(a0)和第二值(b0),来作为在乘法运算处理(s1)中使用的第一值和在置换处理(s3)中使用的第二值。通过上述的1个指令还执行移位处理,在该移位处理中,使存储在第三寄存器(vrc)中的上述多个组向一个方向(y1)移位,以使存储在与规定区域(m33、m34)相邻的区域(m31、m32)内的组(组(a1、b1))移动到规定区域(m33、m34)。根据该结构,在第三寄存器(vrc)中存储多个组(例如组(a0、b0)和组(a1、b1)),通过使这些多个组移位,能够使多个组一个一个地依次移动到第三寄存器(vrc)的规定区域(m33、m34)。由此,不需要进行组的更换,能够提高生成hog特征量的处理速度。关于本公开的第九方式所涉及的处理器(1),在第八方式中,将上述的多个组设为多个第一组,将一个方向(y1)设为第一移位方向(y1)。在第五寄存器(vrc+1)中存储多个第二组(例如组(a2、b2)和组(a3、b3)),多个第二组分别由第一值和第二值构成。多个第二组排列成一列。上述的移位处理包括使多个第二组向第二移位方向(y2)移位一个组的量的处理。上述的移位处理包括以下处理:使多个第二组中的位于第二移位方向(y2)的一端的第二组(例如组(a2、b2))移动到第三寄存器(vrc)中的、多个第一组中的位于与第一移位方向(y1)相反的方向的一端的第一组(例如组(a1、b1))的相邻区域(m31、m32)。根据该结构,即使多个组(例如从组(a0、b0)到组(a3、b3)的4个组)被分开地存储在2个寄存器(第三寄存器(vrc)和第五寄存器)中,也能够进行处理以将多个组存储在1个寄存器中。关于本公开的第十方式所涉及的处理器(1),在第一~第九方式中的任一方式中,第一数据元素(vd11~dv14)和第二数据元素(vd21~dv24)是彼此相关的数据元素。根据该结构,能够生成第一数据元素(vd11~dv14)以及第二数据元素(vd21~dv24)彼此相关的情况下的hog特征量。关于本公开的第十一方式所涉及的处理器(1),在第一~第十方式中的任一方式中,通过上述的1个指令还执行移位处理(s4)。在移位处理(s4)中,使存储在第二寄存器(vrb)中的第二数据元素(vd21~dv24)移位规定的移位量。根据该结构,能够使第二数据元素(vd21~dv24)的小数点位置与在乘法运算处理(s1)中计算出的乘法运算值(jt1~jt4)的小数点位置一致或接近。因而,能够提高比较处理(s2)中的运算精度。关于本公开的第十二方式所涉及的处理器(1),在第一~第十一方式中的任一方式中,上述的1个指令具有能够输入规定的移位量的值的变量(imm)。根据该结构,能够根据对变量(imm)的输入值来变更规定的移位量。在乘法运算处理(s1)中计算出的乘法运算值(jt1~jt4)的小数点位置根据第一值(a0~a7)而发生变化。因此,根据第一值(a0~a7)改变对变量(imm)的输入值,来改变规定的移位量,由此,即使第一值(a0~a7)改变,也能够提高比较处理(s2)中的运算精度。关于本公开的第十三方式所涉及的处理器(1),在第一~第十二方式中的任一方式中,具备第三寄存器(vrc)。第三寄存器(vrc)是通用寄存器。根据该结构,第三寄存器(vrc)是通用寄存器,因此能够减少所使用的矢量寄存器的数量。由此,能够使处理器进一步小型化。在本公开的第十四方式所涉及的处理器(1)的控制方法中,在第一寄存器(vra)中存储第一数据元素(vd11~dv14),在第二寄存器(vrb)中存储第二数据元素(vd21~dv24),在第三寄存器(vrc)中存储第一值(a0)。在该处理器(1)的控制方法中,处理器(1)通过1个指令来执行乘法运算处理(s1)和比较处理(s2)。在乘法运算处理(s1)中,将第一数据元素(vd11~dv14)与第一值(a0)相乘来计算乘法运算值(jt1~jt4)。在比较处理(s2)中,将乘法运算值(jt1~jt4)与第二数据元素(vd21~dv24)进行比较。根据该结构,能够通过1个指令执行生成hog特征量时的乘法运算处理(s1)和比较处理(s2),因此能够更快速地生成hog特征量。附图标记说明1:处理器;2:处理部;a0~a7:边界值倒数(第一值);b0~b7:倾斜度等级(第二值);rf2、rf3:寄存器编号指定字段;imm:立即值(变量);jt1~jt4:乘法运算值;kt1~kt4:比较结果;m31、m32:存储区域(相邻的区域);m33、m34:存储区域(规定区域);q1~q4:指令代码;s1:乘法运算处理;s2:比较处理;s3:置换处理;vd11~vd14:第一数据元素;vd21~vd24:第二数据元素;vd31~vd34:第三数据元素;vra:第一矢量寄存器(第一寄存器);vrb:第二矢量寄存器(第二寄存器);vrc:第三矢量寄存器(第三寄存器);vrd:第四矢量寄存器(第四寄存器);vrc+1:第五矢量寄存器(第五寄存器);y1:一个方向(第一移位方向);y2:一个方向(第二移位方向)。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1