CN1749955A - 控制处理器和协处理器间的数据传输的运算处理装置 - Google Patents
控制处理器和协处理器间的数据传输的运算处理装置 Download PDFInfo
- Publication number
- CN1749955A CN1749955A CNA2005101132723A CN200510113272A CN1749955A CN 1749955 A CN1749955 A CN 1749955A CN A2005101132723 A CNA2005101132723 A CN A2005101132723A CN 200510113272 A CN200510113272 A CN 200510113272A CN 1749955 A CN1749955 A CN 1749955A
- Authority
- CN
- China
- Prior art keywords
- coprocessor
- mentioned
- instruction
- data
- calculation process
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000012546 transfer Methods 0.000 title description 72
- 238000012545 processing Methods 0.000 claims description 236
- 238000000034 method Methods 0.000 claims description 154
- 230000008569 process Effects 0.000 claims description 152
- 238000004364 calculation method Methods 0.000 claims description 144
- 230000005540 biological transmission Effects 0.000 claims description 62
- 238000003860 storage Methods 0.000 claims description 22
- 238000004321 preservation Methods 0.000 claims description 13
- 230000002123 temporal effect Effects 0.000 claims description 8
- 238000001514 detection method Methods 0.000 claims description 3
- 238000013481 data capture Methods 0.000 claims description 2
- 230000006870 function Effects 0.000 description 16
- 230000008520 organization Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 241001269238 Data Species 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000001343 mnemonic effect Effects 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000010977 unit operation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
一种具备主处理器和协处理器的运算处理装置,主处理器具有:根据运算指令进行运算时用于保存运算对象或结果的多个寄存器、和逐次解释指令并进行根据指令的控制的指令解释控制部,此指令解释控制部利用操作数来指定:在上述协处理器中应执行的运算处理的种类、表示保存该运算处理对象的第一寄存器的信息和表示应保存上述协处理器进行运算处理的结果的第二寄存器的信息,通过解释用于请求向协处理器的运算的1条指令即协处理器运算指令,从而进行下述控制:在上述协处理器中,将第一寄存器的内容作为运算处理对象以执行该种类的运算处理,进而将由上述协处理器生成的此运算处理结果写入第二寄存器。
Description
技术领域
本发明涉及一种包括处理器和协处理器的运算处理装置,特别地,涉及一种处理器和执行规定运算的协处理器之间的运算对象及运算结果的数据传输控制技术。
背景技术
以往,作为计算机***中的运算处理装置,存在有包含通用处理器(以下称“主处理器”)和特定运算用的处理器(以下称“协处理器”)并协调这些多个处理器进行工作而构成的运算处理装置。
这种包含主处理器和协处理器的运算处理装置,例如应用于在MPEG(Moving Picture Experts Group:运动图像专家组)方式下的运动图像的编号化(encode)处理。
在占此编码处理中的大部分计算量的ME(Motion Estimation:运动估计)处理中,需要计算出构成作为处理对象的动画的各图像的像素数据之间的差分绝对值运算及它们之和,由于通常以非常多的像素数据作为计算对象,所以有关此差分绝对值运算及它们之和的运算次数变得非常多。
因此,在具有并行计算特殊化的运算器的协处理器上计算此差分绝对值运算及它们之和,除此之外,通过主处理器进行用于编码处理所必需的处理,来减少整个处理中所必需的时钟周期(以下简称为“周期”)的数量。
如此,主处理器和协处理器进行协调工作的运算处理装置与在由单一处理器构成的运算处理装置上执行处理的情况相比,显然地,由于能够以很少的周期数量完成目标的处理,所以即使将运算处理装置的工作频率抑制得比较低也能够完成其目标处理。
由于通常在用于提高运算处理装置的工作频率的技术开发中,需要较高的成本,所以减少用于完成目标处理的周期数量关系到所谓利用成本较低的运算处理装置可执行目标处理的效果,抑制运算处理装置的工作频率降低关系到所谓可将功耗抑制得较低的效果。
于是,以往,作为用于指示协处理器应执行的运算的指令,公知有协处理器·数据操作指令、协处理器·寄存器传输指令,作为用于指示主处理器和协处理器之间的运算对象和运算结果的数据传输的指令,公知有协处理器·寄存器传输指令(参照非专利文献1)。
此协处理器·寄存器传输指令是指定主处理器和协处理器之间的单方向的数据传输的指令。
具体地说,在此协处理器·寄存器传输指令中,仅作为运算对象的源数据及作为运算结果的目标数据的任意一个才能指定主处理器的寄存器。
图17表示在协处理器中执行运算的程序的例子。
在同一图的程序中,行L1中的指令MCR是伴随着向协处理器的数据传输对协处理器进行指示的协处理器·寄存器传输指令,其组成为:特定协处理器的第一操作数p0;特定协处理器的处理内容的第二操作数,当值为0时它表示执行需要三个周期的特定协处理器运算的含义;指定保存运算对象的源数据的主处理器内的寄存器的第三操作数r1;在协处理器内指定用于运算的寄存器的第四操作数Cr1及第五操作数Cr2。此外,行L2及行L3中的指令nop是耗费一周期而不执行特别处理的指令,行L4中的指令MRC是伴随来自协处理器的数据传输对协处理器进行指示的协处理器·寄存器传输指令,其组成为:特定协处理器的第一操作数p0;特定协处理器的处理内容的第二操作数,当值为1时它表示不执行运算的含义;指定应保存作为运算结果的目标数据的主处理器内的寄存器的第三操作数r0;在协处理器内指定用于运算的寄存器的第四操作数Cr1和第五操作数Cr2。
如此,源数据被保存在主处理器中,根据此源数据在协处理器中进行运算,必须将作为其运算结果生成的目标数据保存在主处理器内,在这种情况下,为了传输源数据并传输目标数据,两次发出协处理器·寄存器传输指令。
[非专利文献1的信息(日本文献)]:Steve Furber著,ア一ム株式会社(监译),“修正ARM处理器”,2001年12月18日(初版发行),CQ出版株式会社(发行),第122-126页。
发明内容
本发明为了能够获得由上述周期数减少引起的有用效果而进行,其目的在于,提供一种与现有技术相比能够减少主处理器和协处理器间的数据传输所需的周期数的运算处理装置,此外,其目的在于,提供一种生成应输入此运算处理装置的指令序列的指令序列生成装置。
为了实现上述目的,本发明的运算处理装置是装备有主处理器和协处理器的运算处理装置,其特征在于,上述主处理器具有逐次解释指令并进行根据指令的控制的指令解释控制部;上述指令解释控制部通过解释指定上述协处理器中应执行的运算处理的种类、保存该运算处理对象的第一存储区、应保存上述协处理器进行运算处理的结果的第二存储区的处理请求指令,进行如下控制:在上述协处理器中,将第一存储区的内容作为运算处理对象执行该种类的运算处理,进而,将由上述协处理器生成的某一运算处理结果写入第二存储区。
上述结构的运算处理装置在用于在协处理器中请求运算处理的处理请求指令同时包括:应由协处理器执行的运算处理的种类的指定、成为向协处理器的源数据的传输源的第一存储区的指定、成为来自协处理器的目标数据的传输目的地的第二存储区的指定的情况下,由于对应该处理请求指令可以工作,所以将为了完成目标处理所必需的周期数抑制得比较低。这是因为基本上运算处理装置由于执行1条指令需要1周期以上,所以如果减少用于实现相同目标的指令数量,与指令数多的情况相比,就能够抑制实现目标所必需的周期数。此外,在这种运算处理装置中,能够获得所谓的使用于执行处理请求指令的程序的码长度比原有的小的效果。由此,就能够实现减少指令存储器的容量。
在此,可以是上述主处理器具有:用于在根据运算指令进行运算时保存运算对象或结果的多个寄存器;处理请求指令包含:作为指定第一存储区的指令识别上述多个寄存器中任何一个的第一数据和作为指定第二存储区的指令识别上述多个寄存器中任何一个的第二数据;上述指令解释控制部进行如下控制:在上述协处理器中,将利用处理请求指令中所包含的第一数据识别的寄存器的内容作为运算处理对象,执行由该处理请求指令指定的种类的运算处理,进而,将由上述协处理器生成的某一运算处理结果写入利用该处理请求指令中所包含的第二数据识别的寄存器内。
由此,指定主处理器的寄存器组中任意一个寄存器作为源数据传输源及目标数据的传输目的地,对应于用于在协处理器上使运算进行的一个处理请求指令,运算处理装置进行工作,因此,将主处理器的运算结果提交给协处理器并进行特定的运算,并且,由于能够用一条指令记述将通过某一协处理器的运算结果作为主处理器运算对象这样的处理,所以就能够用很少的指令数的指令序列来记述对应于这种处理步骤重复构成的一系列处理的程序,作为其结果,就会比过去提高了对于其一系列处理的执行性能。
此外,可以是处理请求指令作为代码格式除了包含保存用于在上述主处理器可执行的指令组中将该处理请求指令识别为其它指令的指令识别码的字段外,还分别包含:保存表示协处理器中应执行的运算处理的种类的协处理器用指令码的字段、保存第一数据的字段和保存第二数据的字段;上述指令解释控制部控制成将处理请求指令中所包含的协处理器用指令码向上述协处理器送出,控制成将利用该处理请求指令中所包含的第一数据识别的寄存器的内容即源数据向上述协处理器送出,进而,控制成获取从上述协处理器送出的某一运算处理结果即结果数据并写入到利用该处理请求指令中所包含的第二数据识别的寄存器中;上述协处理器解释从上述主处理器送出的协处理器用指令码,获取从上述主处理器送出的源数据并作为运算处理对象,执行由该协处理器用指令码表示的种类的运算处理,将该运算处理结果即结果数据向上述主处理器送出。
由此,将主处理器的运算结果提交给协处理器并进行特定的运算,并且,能够用一条指令进行记述:将此特定的运算的运算结果进一步作为主处理器的运算对象这种处理中作为传输到协处理器的数据的传输源的主处理器寄存器的指定、应在协处理器中进行的运算处理的种类的指定、以及成为来自协处理器的数据传输目的地的主处理器寄存器的指定。
此外,可以是当将处理请求指令中所包含的协处理器用指令码向上述协处理器送出时,上述指令解释控制部将该处理请求指令中所包含的第二数据和该协处理器用指令码一起送出到上述协处理器;上述协处理器在将执行利用从上述主处理器送出的协处理器用指令码表示的种类的运算处理的结果即结果数据向上述主处理器送出时,将与该协处理器用指令码一起从上述主处理器送出的第二数据与该结果数据一起向上述主处理器送出;上述指令解释控制部获取从上述协处理器一起送出的结果数据和第二数据,控制成该结果数据写入到利用该第二数据识别的寄存器中。
由此,在主处理器侧,对应于处理请求指令,将成为协处理器中运算开始的触发信号即协处理器用指令码等送出之后,从经过几个周期到对应于该处理请求指令返回根据协处理器的运算结果之间,没有必要一直存储保持应保存根据该协处理器的运算结果的寄存器是哪一个,当一旦预置于协处理器之后,就根据返回的信息,只要在特定的寄存器中保存根据协处理器的运算结果即可。
此外,可以是上述指令解释控制部控制成写入到利用处理请求指令中所包含的第二数据识别的寄存器中的结果数据,是从上述协处理器送出的、且由该处理请求指令指定的运算处理结果;上述指令解释控制部按照上述运算处理的各个种类,预先存储表示运算处理时间的时间信息;将处理请求指令中所包含的上述协处理器用指令码和上述源数据向上述协处理器送出之后,经过对应由该协处理器用指令码表示的运算处理的种类而存储的时间信息所表示的运算处理时间时,控制成从上述协处理器送出的结果数据写入到利用该处理请求指令中所包含的第二数据识别的寄存器中。
由此,当对应于处理请求指令在协处理器中执行运算开始之后,虽然必须存储应返回通过协处理器的运算结果的寄存器,但即使没有从协处理器接收到对应于该处理请求指令的运算结束的含义的通知,主处理器也能够自己特定应获取协处理器输出到数据传输路径中的运算结果的时间,获取其运算结果,并能够保存在预先已存储的寄存器中。
此外,可以是当将从上述协处理器送出的结果数据写入到利用上述处理请求指令中所包含的第二数据识别的寄存器中时,上述指令解释控制部控制成将规定信号向上述协处理器送出;上述协处理器直至检测出由上述主处理器送出上述规定信号为止,继续上述结果数据的送出,经过该检测之后,停止该结果数据的送出。
由此,主处理器在执行包含处理请求指令的程序中,对应于此处理请求指令在协处理器中使运算开始之后,例如对应于来自外部的中断信号进行中断响应处理这样的情况等中,在协处理器的运算结束时刻,即使是主处理器作为协处理器的运算结果不能够将输出到数据传输路径上的数据快速地写入寄存器的这种的情况下,从变得能够进行此写入到写入时,即写入之前、写入时、写入之后,作为将该目的传送到协处理器的工作,由于直至进行此传送为止,协处理器继续输出运算结果,所以主处理器能够确实获得协处理器的运算结果。
此外,可以是上述协处理器是对由协处理器用指令码指定的各种类的运算处理而言、从运算处理开始都经过相同时间之后输出结果数据的协处理器;上述指令解释控制部控制成写入到利用处理请求指令中所包含的第二数据识别的寄存器的结果数据,该结果数据是从上述协处理器送出的、且由先于该处理请求指令解释的其他处理请求指令指定的运算处理结果的结果数据;上述指令解释控制部控制成:将处理请求指令中与第二数据一同包含的上述协处理器用指令码送出到上述协处理器之后,后续于该处理请求指令,在解释其他指令之前,将作为上述协处理器进行由先于该处理请求指令的处理请求指令指定的运算处理的结果传送的结果数据写入到利用该第二数据识别的寄存器中。
由此,例如,在以用流水线方式处理协处理器请求的运算为前提,对运算处理装置供给多个连续的处理请求指令并进行解释的情况下,在连续的处理请求指令的一个处理请求指令中,由于不仅指定保存赋予协处理器的数据的寄存器,还能够指定接收对应于据此先行的处理请求指令的协处理器的运算结果的寄存器,即由于能够以1个指令指定从主处理器向协处理器的数据传输和从协处理器向主处理器的数据传输所关联的主处理器内的数据保存位置,所以,与现有相比,就更能使用于实现这些目标所需指令数减少,能够抑制用于实现目标所必需的周期数。
此外,可以是上述指令解释控制部进行的、写入到利用处理请求指令中所包含的第二数据识别的寄存器内的上述控制是将在上述协处理器中执行由该处理请求指令指定种类的运算处理的结果写入到该寄存器中的控制。
由此,由于能够将主处理器用于接收在协处理器中执行由处理请求指令指定运算的结果的寄存器的指定包含在该处理请求指令中,所以与常规的运算指令相同,通过将保存与该运算指令相对应的运算结果的寄存器的指定作为操作数包含的指令形式,就变得能够决定在协处理器中进行运算的处理请求指令的指令形式,例如,有利于简化编程人员对指令的理解。
此外,可以是上述运算处理装置包括第一及第二协处理器;第二协处理器具有多个寄存器;上述处理请求指令包含:在第一协处理器中应执行的运算处理种类的指定、作为指定第一存储区的数据识别第二协处理器的多个寄存器中任意一个的第一数据、作为指定第二存储区的数据识别第二协处理器的多个寄存器中任意一个的第二数据;上述指令解释控制部进行下述控制:在第一协处理器中,将利用处理请求指令中所包含的第一数据识别的、第二协处理器内的寄存器的内容作为运算处理对象,执行由该处理请求指令指定的种类的运算处理,进而,将由第一协处理器生成的某一运算处理结果写入利用该处理请求指令中所包含的第二数据识别的、第二协处理器内的寄存器中。
由此,就能够以一个指令指示:根据某一协处理器内的数据,在另一协处理器中使运算进行,并将此运算结果返回到原来的协处理器内部。
此外,本发明涉及的指令序列生成装置,是根据输入的数据,生成用于在权利要求1的运算处理装置中与协处理器一同装备的主处理器中执行的机器语言的指令序列,其特征在于,该指令序列生成装置包括:存储单元;输入数据获取单元,获取输入的数据;以及指令序列生成单元,根据上述输入的数据,生成包含处理请求指令的机器语言的指令序列,并将该指令序列记录在上述存储单元内,该处理请求指令用于指定:在协处理器中应执行的运算处理的种类,保存该运算处理对象的该协处理器的外部的第一存储区、应保存上述协处理器进行运算处理的结果的该协处理器外部的第二存储区。
在需要能够向上述运算处理装置供给并使其解释执行的指令序列的情况下,利用该指令序列生成装置,就能够生成包含一个处理请求指令的指令序列,该该处理请求指令用于指定:根据协处理器外部的存储区的内容在协处理器中使运算进行,将此运算结果保存在协处理器外部的存储区。
在此,可以是由上述指令序列生成单元生成的处理请求指令,除了包含作为代码格式保存用于在上述主处理器能够执行的指令组中将该处理请求指令识别为其它指令的指令识别码的字段之外,还分别包含:保存表示协处理器中应执行的运算处理的种类的协处理器用指令码的字段;保存第一数据的字段,该第一数据作为指定第一存储区的数据、识别上述主处理器具有的多个寄存器中任意一个;以及保存第二数据的字段,该第二数据作为指定第二存储区的数据、识别上述主处理器具有的多个寄存器中的任意一个。
利用此指令序列生成装置,就能够生成包含一个处理请求指令的指令序列,该该处理请求指令用于指定:使用主处理器的寄存器的内容在协处理器中进行运算,将此运算结果保存在主处理器的寄存器中。
此外,可以是上述指令序列生成装置还包含:运算时间管理单元,按照协处理器能够执行的运算处理的各个种类,预先存储表示运算处理时间的时间信息;上述指令序列生成单元中,当以利用生成的处理请求指令中所包含的第二数据识别的上述主处理器的寄存器的内容作为运算对象的运算指令、生成在指令序列中在该处理请求指令后续的位置上时,上述指令序列生成单元根据利用上述运算时间管理单元存储的时间信息,特定关于由该处理请求指令中所包含的协处理器用指令码表示的种类的运算处理的运算处理时间,根据该处理请求指令,进行上述指令序列的生成,使得在空出相当于特定的运算处理时间的指令数量部分以上的间隔的位置上设置该运算指令。
由此,在以由处理请求指令指定的目标数据作为运算对象的运算指令后续于该处理请求指令的情况下,能够生成防止在执行此运算指令的时刻、发生根据处理请求指令在协处理器运算中根本不能生成目标数据这种情况的指令序列。
附图说明
图1是表示包含xexec指令的汇编程序的一部分的示例图。
图2是表示协处理器运算指令(xexec指令)的格式的图。
图3是表示实施方式1的运算处理装置的结构的方框图。
图4是详细表示寄存器组3500结构的结构图。
图5是关于协处理器运算指令的各处理的时序图。
图6是有关变形例1中的涉及协处理器运算指令的各处理的时序图。
图7是有关变形例2中的涉及协处理器运算指令的各处理的时序图。
图8是有关变形例2中的涉及协处理器运算指令的各处理的时序图,表示代表可以接收含义的信号延迟发出的情况下的例子。
图9是有关变形例3中的涉及协处理器运算指令的各处理的时序图。
图10是有关变形例3中的涉及协处理器运算指令的各处理的时序图,表示代表可接收含义的信号延迟发出的情况下的例子。
图11是有关变形例4中的涉及协处理器运算指令的各处理的时序图。
图12是有关变形例5中的涉及协处理器运算指令的各处理的时序图。
图13是有关变形例6中的涉及协处理器运算指令的各处理的时序图。
图14是表示实施方式3涉及的目标代码生成装置结构的方框图。
图15是表示源代码的示例图。
图16是表示根据图15所例示的源代码生成的目标代码的示例图。
图17表示在协处理器中进行运算的程序的例子。
具体实施方式
(实施方式1)
下面,说明本发明的实施方式1的运算处理装置。
(概要)
本发明的实施方式1的运算处理装置,装备有主处理器和协处理器;在成为主处理器中所获取、解释及执行的对象的指令***中,含有用于在协处理器中进行运算的协处理器运算指令。对于与此协处理器运算指令对应的xexec指令而言,由助记符号表示为以下形式。
xexec OPn,dstRn,srcRn
在此,协处理器运算指令即xexec指令是将所谓OPn、dstRn及srcRn这三个操作数的指定设为必需的指令。该OPn是协处理器中的运算处理的种类的指定,srcRn是保存协处理器的运算中所使用的源数据的主处理器侧的寄存器编号的指定,dstRn是用于保存协处理器的该运算结果的主处理器侧的寄存器编号的指定。
当获得此协处理器运算指令并进行解释时,通过主处理器将由srcRn指定的寄存器的内容即源数据和运算处理的种类传输到协处理器,向协处理器请求运算。接受这些的协处理器,使用源数据进行运算处理将运算结果即目标数据传输到主处理器,主处理器接收该目标数据并将其保存到由dstRn指定的寄存器中。
如此,通过一条协处理器运算指令同时具有应由协处理器执行的运算处理的种类的指定、从主处理器向协处理器传输的源数据的指定、和从协处理器向主处理器传输的目标数据的指定,能够使用该协处理器的运算指令的运算处理装置,就能够将用于实现目标的处理所必需的周期数抑制得比较低。基本上运算处理装置因为执行1条指令需要1个周期以上,所以与指令数多的情况相比,如果减少用于实现相同目标的指令数量,就能够抑制实现目标所必需的周期数。
图1是表示包含xexec指令的汇编程序的一部分的示例图。
主处理器能够解释并执行此程序(实际上是转换为机器语言后的程序代码)。
行L11是下述这样的xexec指令:使用寄存器r1的内容,在协处理器中执行根据OP0识别的运算处理,并指示将该运算结果保存在寄存器r0中。此外,行L12及行L13是分别耗费1个周期期间的指令。
假设当执行由协处理器的OP0识别的运算处理需要3个周期时,那么在后续于该程序例中的行L13的指令中,作为在寄存器r0中保存有预置xexec指令的执行结果的协处理器,就能够使用寄存器r0的内容。
下面,详细说明实施方式1的运算处理装置。
(协处理器运算指令格式)
首先,说明属于上述主处理器的指令***的1条指令即协处理器运算指令(xexec指令)的格式。
图2是表示协处理器运算指令(xexec指令)的格式的图。
如同一图中所示,xexec指令是指令长为16位的指令,包括:指令识别码字段21、用于指定操作数的协处理器用指令码字段22、目标寄存器指定字段23及源寄存器指定字段24。
在此,指令识别码字段21是设定用于识别在主处理器可译码、执行指令组中为xexec指令的六位指令识别码的字段,例如,其代码值可预先设定为100010b等。
协处理器用指令码字段22是对应于操作数OPn来设定用于识别在协处理器中应执行的运算处理种类的两位代码的字段。在此,假设协处理器能够进行四种以下的运算处理,从而确定其位长。
目标寄存器指定字段23是对应于操作数dstRn来设定用于特定主处理器中的寄存器组之一的四位数据的字段,为了指定应保存从协处理器传输的运算结果即目标数据的寄存器而进行使用。
此外,源寄存器指定字段24是对应于操作数srcRn来设定用于特定主处理器中的寄存器组之一的四位数据的字段,为了指定保存在协处理器中的运算处理中应使用的源数据的寄存器而进行使用。
(运算处理装置的构成)
图3是表示实施方式1的运算处理装置结构的方框图。
如同一图所示,运算处理装置100包括:主处理器3000、协处理器4000、保存包含协处理器运算指令的指令序列的指令存储器5000、以及成为主处理器的数据存取的对象的数据存储器6000。
在此,主处理器3000部分地改变了现有处理器的处理器,包括:指令解释控制电路3100、用于进行算术运算或逻辑运算的电路组即运算器3200、以进行和运算器3200之间的数据传输的方式而构成的寄存器组即寄存器组3500。该主处理器3000能够在协处理器4000上执行运算期间进行其它运算。
指令解释控制电路3100从指令存储器5000中所保存的指令序列中逐次读出指令加以解释,按照该解释对象的指令具有以下功能:进行向寄存器组3500及数据存储器6000的存取的控制即数据传输控制;在运算器3200中执行由指令指定的运算的控制;协处理器4000的控制;以及在指令存储器5000中的指令读出的控制等。再有,在指令解释控制电路3100解释上述协处理器运算指令的情况下,通过将该协处理器运算指令中所包含的运算处理的种类的指定传输到协处理器4000等,来进行协处理器4000的控制。此外,在此后将详细说明寄存器组3500的结构及其数据传输涉及的工作。
此外,协处理器4000是一种部分地改变了现有协处理器的处理器,包括:逻辑控制电路4100、进行特定的运算处理的电路即运算器4200、以进行与运算器4200之间的数据传输的方式而构成的寄存器组即寄存器组4500。再有,协处理器4000能够一个一个地逐次执行由主处理器3000指定的运算种类的运算处理。此外,主处理器3000和协处理器4000的工作频率相同。
逻辑电路4100接收自主处理器3000传输的运算处理的种类的指定,对其加以解释,根据该结果,具有以下功能:进行向寄存器组4500的数据传输控制;在运算器4200中执行特定的运算处理的控制;向主处理器的运算处理结束的通知等。此外,还具有以下机构:在逻辑控制电路4100内,存储有表示在执行各运算种类的运算处理时所需周期数的数据,对运算器的运算处理的执行中经过的周期数进行计数,通过与表示该存储的周期数的数据进行比对,来检测运算结束的时间。
运算器4200具有以下运算功能:例如,将在构成以MPEG方式的编码处理的ME处理中使用的差分绝对值运算及它们之和的并行计算,特别指定为可以按照相对高的速度来执行等的特殊用途。
再有,图3中,用细箭头标记线表示控制信号的传输路径(以下称为“控制信号线”),用粗箭头标记线表示包含指令的数据的传输用的总线(以下称为“数据传输路径”)。
控制信号线3010传输为了控制指令存储器5000而从指令解释控制电路3100送出的信号,对应于该控制信号,从指令存储器5000经由数据传输路径5010将指令向指令解释控制电路3100送出。
控制信号线3020为了控制运算器3200、控制信号线3030为了控制寄存器组3500、控制信号线3050为了控制数据存储器6000、并且控制信号线3040为了向协处理器传输运算处理的种类等,分别传输从指令解释控制电路3100送出的信号。
此外,在运算器3200和寄存器组3500之间,经由数据传输路径3060及数据传输路径3065传输数据;在寄存器组3500和数据存储器6000之间,经由数据传输路径3080及数据传输路径3085传输数据;在运算器4200和寄存器组4500之间,经由数据传输路径4060及数据传输路径4065传输数据;在主处理器3000的寄存器组3500和协处理器4000的寄存器组4500之间,经由数据传输路径3070及数据传输路径3075传输数据。
图4是详细表示寄存器组3500结构的结构图。
寄存器组3500包括:寄存器3600(R0)、寄存器3601(R1)~寄存器3615(R15),为了向寄存器写入数据而进行数据传输路径及寄存器的选择的选择器组即选择器3650、选择器3651~选择器3665及选择器3670、进行是否将从哪个寄存器输出的数据供给数据传输路径的选择的选择器3680。
该寄存器组和选择器组,以根据来自指令解释控制电路3100经由控制信号线3030施加的控制信号来进行工作的方式构成。
因此,指令解释控制电路3100根据指令的解释结果,在应将某一数据写入某一寄存器的情况下,通过适当地施加控制信号从而切换选择器3670、选择器3650、选择器3651~选择器3665,将从数据存储器6000输出到数据传输路径3080上的数据、从运算器3200输出到数据传输路径3060上的数据、和从协处理器4000输出到数据传输路径3070上的数据中的任一数据供给到应写入的寄存器中,并对该寄存器施加控制信号,从而将数据存储在寄存器中。此外,指令解释控制电路3100控制成:根据指令的解释结果,当应从某一寄存器向数据传输路径供给数据时,通过对该寄存器施加控制信号使数据输出、并且适当地对选择器3680施加控制信号,从而从该寄存器输出的数据出现在与运算器3200相连接的数据传输路径3065、与数据存储器6000相连接的数据传输路径3085、与协处理器4000相连接的数据传输路径3075。
(一般的运算指令涉及的工作)
在装备有上述结构的运算处理装置100中,利用主处理器3000,主要使用运算器3200来执行协处理器运算指令之外的运算指令。此情况下的主处理器3000的工作与一般的处理器相同。
例如,在指令解释控制电路3100从指令存储器5000读出并解释根据内部寄存器R0的内容执行某一运算并将此结果保存在内部寄存器R1中的这种运算指令的情况下,控制选择器3680使作为寄存器R0的内容的数据输出到数据传输路径3065等,控制运算器3200根据此输出的数据使此运算进行并使运算结果输出到数据传输路径3060,控制选择器3670及选择器3651和寄存器R1,使数据传输路径3060上的数据写入寄存器R1。
再有,从寄存器读出运算中使用的数据执行运算直至将此结果写入到寄存器为止的处理时间,例如是几个周期,周期数根据运算处理内容而不同。
就上述运算例的处理时间而言,包含执行从寄存器R0向运算器的数据传输的期间T1、接下来进行运算器中的运算的期间T2、此后将运算结果写入寄存器R1的期间T3。例如,横跨后续于包含期间T1的一个周期的一个或多个周期含有期间T2,此后的一个周期中含有期间T3。考虑以两个寄存器作为输入的运算的情况时,例如,在一个周期之间,不重复包含进行从一个寄存器向运算器的数据传输的期间T1和进行从另一个寄存器向运算器的数据传输的期间T1′。
(协处理器运算指令涉及的工作)
下面,说明装备有上述结构的运算处理装置100执行协处理器运算指令(xexec指令)时的各部分的工作。
主处理器3000的指令解释控制电路3100解释从指令存储器5000读出的指令,在判定为此指令是根据指令识别码识别的xexec指令时,根据指定此指令的操作数的各字段(参照图2)的内容,在一个周期内进行下面的两个处理。
首先,作为一个处理,指令解释控制电路3100经由控制信号线3040、将协处理器用指令码字段的内容即运算种类、及目标寄存器指令码字段的内容即运算结果保存用寄存器的指定传输到协处理器4000的逻辑控制电路4100。
此外,作为另一个处理,指令解释控制电路3100经由控制信号线3030,将各个控制信号施加到此寄存器及选择器3680上,所述各个控制信号用于从由源寄存器指定字段的内容指定的一个寄存器将数据输出到数据传输路径3075上。
响应这些处理,在协处理器4000中,逻辑控制电路4100根据接收的运算种类,控制寄存器组4500及运算器4200,使根据施加到数据传输路径3075上的源数据的运算处理执行。此运算处理所需的周期数,例如是3个周期,周期数根据运算种类而不同。
进而,逻辑控制电路4100保持所接收的运算结果保存用寄存器的指定,在运算处理结束时,即与根据表示存储的各运算处理执行所需要的周期数的数据而特定的此运算处理的结束时间一致,经由控制信号线4040,将包含此运算结果保存用寄存器的指定的运算结束的含义的信号传输到主处理器3000的指令解释控制电路3100。再有,在运算结束时刻,作为运算结果的数据,通过运算器4200输出到数据传输路径3070上。运算结果向主处理器3000的返回由该数据传输路径3070来执行。
并且,当从逻辑控制电路4100接收包含运算结果保存用寄存器的指定的运算结束的含义的信号时,指令解释控制电路3100经由控制信号线3030,将用于使数据传输路径3070上的数据写入到作为根据此信号的运算结果保存用寄存器指定的一个寄存器中的各控制信号施加给此寄存器及选择器3650~选择器3665。作为其结果,在几个周期前解释的xexec指令中,将协处理器4000的运算结果保存到由目标寄存器指定字段的内容所指定的寄存器中。
再有,指令解释控制电路3100进行这样的控制,即在一个周期内不重复包含:将对应于xexec指令的协处理器4000的运算结果写入某一寄存器的数据传输期间;以及将对应于后续在此xexec指令的任意的常规运算指令的内部运算器的运算结果写入其他寄存器的数据传输期间。
(工作时间)
下面,对协处理器运算指令的执行相关联的各处理的执行时间加以详细说明。
在此,进行以下说明:(1)主处理器3000逐次读出构成存储在指令存储器5000内的程序的各命令并解释执行时,当从外部接收中断信号时,就暂时中断此程序涉及的指令的执行,进行中断对应的处理后,再次开始原来程序的执行;在主处理器3000执行中断对应处理期间,协处理器4000进行所谓暂时停止运算处理的同步控制;(2)协处理器的运算器4200不能构成流水线结构,直至将前面的运算结果写入主处理器3000内的寄存器为止,不会接收下一条协处理器运算指令,一个运算处理的执行需要2个周期。
图5是有关协处理器运算指令涉及的各处理的时序图。在此时序图中,对控制信号而言,用上方、下方两阶段表示,上方表示成为处理契机的信号是激活的状态。
在周期C1中,执行指令数据获取处理111。即,通过指令解释控制电路3100经由控制信号线3010送出控制信号,由此从指令存储器5000获取指令。
在周期C2中,执行指令解码处理112。即,指令解释控制电路3100解释获取的指令,特定由xexec指令的操作数指定的各寄存器。
在周期C3中,执行向协处理器的数据交付处理113及向协处理器的控制交付处理114。即,利用经由控制信号线3030的指令解释控制电路3100的控制,由源寄存器指定字段指定的寄存器将数据输出到数据传输路径3075上、对协处理器4000交付数据,指令解释控制电路3100将运算种类和运算结果保存用寄存器的指定输出到控制信号线3040、并交付给协处理器4000。
在周期C4及周期C5中,执行协处理器运算处理115。即,逻辑控制电路4100根据经由控制信号线3040获取的运算种类,在周期C4中经由控制信号线4020传输控制信号,在运算器4200中,开始使用数据传输路径3075上的数据的运算;在周期C5中,将表示已经取得并保持的含有运算结果保存用的寄存器的指定的运算结束的含义的信号,经由控制信号线4040送出到主处理器3000。再有,在周期C5中,运算器4200结束运算,将其运算结果的数据输出到数据传输路径3070上。
在周期C6中,执行向主处理器的数据交付处理116。即,指令解释控制电路3100根据表示已接收的运算结束含义的信号中所包含的运算结果保存用寄存器的指定,通过经由控制信号线3030将控制信号传输到寄存器组3500,由此在此寄存器中使数据传输路径3070上的数据写入。
再有,主处理器3000开始执行协处理器运算指令涉及的处理之后,与此执行并行,进行后续此协处理器运算指令的指令涉及的处理,在图5的时序图上虽然没有进行表示,但例如,在周期C2中,从指令存储器5000获取后续于上述xexec指令的一般运算指令A;在周期C3中进行此运算指令A的解释;在周期C4中执行运算指令A涉及的运算对象数据从寄存器向运算器3200的传输;在周期C5中利用运算器3200进行依据运算指令A的运算;在周期C6中将此运算结果传输到寄存器;此外,在C3中从指令存储器5000获取后续于运算指令A的运算指令B;在周期C4中执行此运算指令B的解释,在周期C5中进行运算指令B涉及的运算对象数据从寄存器向运算器3200的传输;在周期C6中利用运算器3200进行依据运算指令B的运算;在周期C7中将此运算结果传输到寄存器。
(变形例1)
下面,说明上述运算处理装置100的变形例1。针对变形例1将上述原有例子称为基本例。
在上述基本例涉及的运算处理装置100中,协处理器4000一个一个地逐次执行由主处理器3000指定的运算种类的运算处理;变形例1涉及的运算处理装置,在协处理器以流水线方式并行执行各运算处理这点上不同于基本例涉及的运算处理装置100。再有,按照说明上的需要,使用与上述基本例涉及的运算处理装置100中的对应的各部分相同的符号来说明变形例1涉及的运算处理装置的各部分。
说明与此变形例1涉及的运算处理装置中的协处理器运算指令(xexec指令)的执行相关联的各处理的执行时间。
再有,进行以下说明:(1)主处理器进行中断对应处理期间,协处理器执行所谓暂时停止运算处理的同步控制;(2)协处理器的运算器是流水线结构,即使在将前面的运算结果写入主处理器内的寄存器之前,接收下一条协处理器运算指令,以流水线级数为2的流水线方式执行运算处理,一个运算处理的执行需要2个周期。
图6是有关变形例1中的协处理器运算指令涉及的各处理的时序图。
在此,着重说明作为都是协处理器运算指令的第n条指令和第n+1条指令。
在周期C1中,执行关于第n条协处理器运算指令的指令数据获取处理111。
在周期C2中,执行关于第n+1条协处理器运算指令的指令数据获取处理111,并且执行关于第n条协处理器运算指令的指令解码处理112。即,通过指令解释控制电路经由控制信号线3010送出控制信号,从指令存储器获取第n+1条协处理器运算指令,并且此指令解释控制电路解释在周期C1中获取的第n条协处理器运算指令。
在以后的周期也一样,在各周期内,分别对应多个协处理器运算指令,实施单独的处理。再有,在图6和在此之后使用的图7等中,赋予与图5相同符号表示的各处理的内容与基本例图5的上述内容基本相同,仅对其存在不同点的情况进行说明。
在周期C3中,对应于第n条协处理器运算指令,执行向协处理器的数据交付处理113及向协处理器的控制交付处理114,并且对应于第n+1条协处理器运算指令,执行指令解码处理112。
在周期C4中,对应于第n条协处理器运算指令,执行分割为2级的协处理器的运算处理的前半处理115a,并且对应于第n+1条协处理器运算指令,执行向协处理器的数据交付处理113及向协处理器的控制交付处理114。在协处理器的运算处理的前半处理115a中,逻辑控制电路对应于成为前半处理115a的对象的协处理器运算指令,继续保存已经获取的运算结果保存用的寄存器的指定,对应于已经获取的运算种类,经由控制信号线4020传输控制信号,在运算器4200中,开始使用数据传输路径3075上的数据的运算。再有,逻辑控制电路在内部具有用于至少保持流水线的阶段数部分的数量的、运算结果保存用的寄存器的指定的存储区,例如,此存储区的集合由以保存了的顺序使值取出的FIFO(First In First Out:先入先出)缓冲器来实现。
在周期C5中,对应于第n条协处理器运算指令来执行分割为2级的协处理器的运算处理的后半处理115b,并且对应于第n+1条协处理器运算指令,执行前半处理115a。再有,在协处理器运算处理的后半处理115b中,运算器4200继承前半处理115a的结果,进一步进行运算直到最后,并将运算结果的数据输出到数据传输路径3070上,此外,逻辑控制电路对应于第n条协处理器运算指令,经由控制信号线4040,将表示例如含有已经在FIFO缓冲器中保持的运算结果保存用寄存器指定的运算结束含义的信号向主处理器送出。
在周期C6中,对应于第n条协处理器运算指令来执行向主处理器的数据交付处理116,同时对应于第n+1条协处理器运算指令,执行后半处理115b。再有,在周期C6中,在主处理器的指令解释控制电路的控制下,将数据传输路径3070上的数据写入由第n条协处理器运算指令的目标寄存器指定字段表示的寄存器后,决定各工作时间以使对应于协处理器侧的运算器4200的第n+1条协处理器运算指令生成的运算结果输出到数据传输路径3070上。
在周期C7中,对应于第n+1条协处理器运算指令,执行向主处理器的数据交付处理116。
(变形例2)
下面,说明基本例涉及的运算处理装置100的变形例2。
在基本例涉及的运算处理装置100中,协处理器4000在主处理器3000执行中断对应处理期间,进行所谓暂时停止运算处理的同步控制;变形例2涉及的运算处理装置,在主处理器进行中断对应处理期间协处理器却继续运算处理这点上不同于基本例涉及的运算处理装置100。再有,按照说明上的需要,使用与上述基本例涉及的运算处理装置100中的相对应的各部分相同的符号来说明变形例2涉及的运算处理装置的各部分。
在此变形例2涉及的运算处理装置中,与基本例涉及的运算处理装置100相同,逻辑控制电路保持接收的运算结果保存用寄存器的指定,在运算器上进行运算使运算结果输出到数据传输路径3070上,此外,在运算处理结束时,将包含此运算结果保存用寄存器的指定的运算结束的含义的信号经由控制信号线4040传输到主处理器的指令解释控制电路。此后的处理是变形例2涉及的运算处理装置所特有的:接收了运算结束含义的信号的指令解释控制电路,在完成此运算结果的接收准备的阶段,经由控制信号线3040,将表示能够接收含义的信号传输到逻辑控制电路,在逻辑控制电路侧,没有接收表示此可以接收含义的信号的期间,每个周期重复送出运算结束含义的信号,不执行对数据传输路径3070输出数据的这种新运算,由此维持此数据传输路径3070上的数据。
下面,说明与变形例2涉及的运算处理装置中的协处理器运算指令(xexec指令)的执行相关联的各处理的执行时间。
再有,说明协处理器的运算器,没有形成为流水线结构,直到将前面的运算结果写入主处理器内的寄存器为止,不接收下一条协处理器运算指令,一个运算处理的执行需要2个周期。
图7是有关基于变形例2中的协处理器运算指令涉及的各处理的时序图。
在周期C1~C3期间,执行与图5所示的基本例涉及的运算处理装置100相同的工作。
在周期C4及周期C5中,执行协处理器运算处理115。即,逻辑控制电路根据经由控制信号线3040所获取的运算种类,在周期C4中经由控制信号线4020传输控制信号,在运算器4200中,开始使用数据传输路径3075上的数据的运算;在周期C5中,将表示含有已经取得并保存的运算结果保存用的寄存器的指定的运算结束含义的信号,经由控制信号线4040送出到主处理器。在运算器4200中,将结束运算后的运算结果的数据输出到数据传输路径3070上,经由控制信号线3040,等待表示可以接收含义的信号被传送过来。
在图7中,表示出主处理器不执行中断对应处理等而无特别延迟地产生表示可以接收含义的信号的例子。
在此例的情况下,逻辑控制电路由于在周期C5期间接收了可以接收含义的信号,所以,在运算器4200中,在周期C6期间就不进行将运算结果的数据输出到数据传输路径3070的控制。
在周期C6中,执行向主处理器的数据交付处理116。即,指令解释控制电路根据表示已接收的运算结束含义的信号中所包含的运算结果保存用寄存器的指定,通过经由控制信号线3030将控制信号传输到寄存器组3500,由此在此寄存器中使数据传输路径3070上的数据写入。
图8是有关变形例2中的协处理器运算指令涉及的各处理的时序图,表示延迟产生表示可以接收含义的信号的情况的例子。
同一图的例子是在主处理器侧解释协处理器运算指令并在协处理器中请求运算之后、进行中断对应处理等,在此结束前、结束根据请求的协处理器的运算的情况的例子。
在周期C1~C4期间,执行与图7例子相同的工作。
在周期C5中,将表示已经取得并保存的含有运算结果保存用的寄存器的指定的运算结束含义的信号,经由控制信号线4040向主处理器送出,在运算器4200中,使结束运算后的运算结果的数据输出到数据传输路径3070上,经由控制信号线3040,等待表示可以接收含义的信号被传送过来。
在周期C5中,由于逻辑控制电路没有接收可以接收含义的信号,所以,在运算器4200中,在周期C6中,将运算结果的数据输出到数据传输路径3070,再一次,将表示含有运算结果保存用的寄存器的指定的运算结束的含义的信号,通过控制信号线4040向主处理器送出。并且,在周期C6中,由于逻辑控制电路接收了可以接收含义的信号,所以,在运算器4200中,在周期C7中不进行使运算结果的数据输出到数据传输路径3070的控制。
在周期C7中,执行向主处理器的数据交付处理116。即,指令解释控制电路根据表示已接收的运算结束含义的信号中所包含的运算结果保存用寄存器的指定,经由控制信号线3030,通过将控制信号传输到寄存器组3500,由此在此寄存器中使数据传输路径3070上的数据写入。
(变形例3)
下面,说明基本例涉及的运算处理装置100的变形例3。
此变形例3涉及的运算处理装置与上述变形例1相同,包含协处理器为了以流水线方式执行各运算处理所必需的所有结构,并且,与上述变形例2相同,在主处理器执行中断对应处理期间,协处理器仍继续运算处理。再有,按照说明上的需要,使用与上述基本例涉及的运算处理装置100中的对应的各部分相同的符号来说明变形例3的运算处理装置的各部分。
在此变形例3涉及的运算处理装置中,与变形例2中相同,具备如下结构:接收了运算结束的含义的信号的指令解释控制电路,在完成此运算结果的接收准备的阶段,将表示可以接收含义的信号经由控制信号线3040传输到逻辑控制电路,在逻辑控制电路侧,没有接收表示此可以接收含义的信号的期间,每一周期重复送出运算结束含义的信号,不执行向数据传输路径3070输出数据这样的新运算,由此维持此数据传输路径3070上的数据。
下面,说明与变形例3涉及的运算处理装置中的协处理器运算指令(xexec指令)的执行相关联的各处理的执行时间。
再有,说明:协处理器的运算器是流水线结构,在将前面的运算结果写入主处理器内的寄存器之前,接收下一条协处理器运算指令,以流水线级数为2的流水线方式执行运算处理,一个运算处理的执行需要2个周期。
图9及图10是有关变形例3中基于协处理器运算指令涉及的各处理的时序图,在图10中,表示出与图9的例子相比,表示可以接收含义的信号延迟产生的情况的例子。
图9的例子及图10的例子这两方都在周期C1~C4期间,适用于图6,进行与对变形例1说明的工作相同的工作。
这两个例子在周期C5中,对应于第n条协处理器运算指令执行分割为2级的协处理器的运算处理的后半处理115b,并且对应于第n+1条协处理器运算指令,执行前半处理115a。再有,在协处理器运算处理的后半处理115b中,运算器4200继承前半处理115a的结果,进一步执行运算直到结束,并将运算结果的数据输出到数据传输路径3070上,此外,逻辑控制电路对应于第n条协处理器运算指令,经由控制信号线4040,将表示例如已经在FIFO缓冲器中保存的含有运算结果保存用的寄存器的指定的运算结束含义的信号向主处理器送出,并经由控制信号线3040,等待表示可以接收含义的信号被传送过来。
在图9的例子中,在周期C5中,由于产生与第n条协处理器运算指令相对应的、可以接收含义的信号,所以,在周期C6中,逻辑控制电路不反复送出对应于此第n条协处理器的运算指令的运算结束的含义的信号,执行对应于第n+1条协处理器运算指令的运算结束的含义的信号的送出,并且在运算器4200中,进行对应于第n+1条协处理器运算指令的协处理器运算处理的后半处理115b。
另一方面,在图10的例子中,在周期C5中,由于不产生与第n条协处理器运算指令相对应的、可以接收含义的信号,所以,在周期C6中,反复送出对应于此第n条协处理器运算指令的运算结束含义的信号,反复进行对数据传输路径3070输出对应于此第n条协处理器运算指令的运算器4200的运算结果,并且,遏止对应于第n+1条协处理器运算指令的协处理器运算处理的后半处理115b的开始。并且,在周期C6中,由于产生了可以接收含义的信号,所以在周期C7中,逻辑控制电路对应于第n+1条协处理器运算指令,进行例如已经在FIFO缓冲器中保存的含有运算结果保存用的寄存器的指定的运算结束含义信号的送出,等待表示可以接收含义的信号被传送过来。
如此,通过进行表示可以接收含义的信号的传输涉及的各处理,即使在变形例3涉及的运算处理装置中,主处理器和协处理器也能够适当地协同工作。
(变形例4)
下面,说明基本例涉及的运算处理装置100的变形例4。
此变形例4涉及的运算处理装置具有与上述变形例2涉及的运算处理装置相同功能的结构,不同之处仅在于协处理器的工作频率是主处理器的工作频率的2倍。
即,变形例4涉及的运算处理装置的协处理器的运算器没有形成流水线结构,直到将前面的运算结果写入主处理器内的寄存器为止,不接收下一条协处理器运算指令。
图11是有关变形例4中的协处理器运算指令涉及的各处理的时序图。同一图中,举例示出了执行协处理器的一个运算处理需要1个周期的情况。与图7对比时,由于协处理器运算处理115所需时间不同,所以省略其详细说明。
即使在变形例4,也与变形例2相同,通过进行表示可以接收含义的信号的传输的各种处理,主处理器和协处理器也能够适当地协同工作。
(变形例5)
下面,说明基本例涉及的运算处理装置100的变形例5。
此变形例5涉及的运算处理装置具有与上述变形例3涉及的运算处理装置相同的功能结构,不同之处仅在于协处理器的工作频率是主处理器的工作频率的2倍。
即,变形例5涉及的运算处理装置的协处理器的运算器是流水线结构,在将前面的运算结果写入主处理器内的寄存器之前,接收下一条协处理器运算指令,以流水线级数为2的流水线方式执行运算处理。
图12是有关变形例5中的协处理器运算指令涉及的各处理的时序图。同一图中,举例示出了执行协处理器的一个运算处理需要1个周期的情况。与图9对比时,由于协处理器运算处理的前半处理115a及后半处理115b所需时间不同,所以省略其详细说明。
即使在变形例5,也与变形例3相同,在指定FIFO缓冲器等中保存运算结果保存用的寄存器的指定,此外,通过进行表示可以接收含义的信号的传输涉及的各种处理,主处理器和协处理器就能够适当地协同工作。
(变形例6)
下面,说明基本例涉及的运算处理装置100的变形例6。
此变形例6涉及的运算处理装置具有与上述变形例2涉及的运算处理装置相同的功能结构,不同之处仅在于协处理器的工作频率是主处理器的工作频率的1/2。
由于对应于此工作频率的不同,变形例6涉及的运算处理装置的主处理器,还具有用于存储协处理器运算指令的目标寄存器指定字段的内容的缓冲器,指令解释控制电路具有在解释协处理器运算指令时,将此目标寄存器指定字段的内容即运算结果保存用的寄存器的指定保存在缓冲器中,此后,直到从缓冲器读出的此寄存器的指定、和从协处理器运算结束的含义的信号中所包含传输的寄存器的指定相一致为止,遏止将此指定的寄存器作为输入使用的这种运算指令的执行功能。
即,在与主处理器的工作频率相比协处理器的工作频率低的情况下,就必须进行特别控制,以便根据协处理器运算指令,在协处理器上请求运算从而在主处理器将此运算结果写入到寄存器之前,后续于此协处理器运算指令,不执行使用此运算结果这种常规的运算指令;为此,在变形例6涉及的运算处理装置中,在主处理器中,保持目标寄存器指定字段的内容,在由此指定的寄存器中保存协处理器运算指令的处理结果之后,设置暂时停止应执行将此寄存器作为输入来使用的后续运算指令、这种后续的运算指令的执行的功能。
下面,说明与变形例6涉及的运算处理装置的协处理器运算指令(xexec指令)和与后续于此的常规运算指令的执行相关的各处理。
再有,协处理器的运算器没有形成为流水线结构,直到将前面的运算结果写入主处理器内的寄存器为止,不接收下一条协处理器运算指令。
图13是有关变形例6中协处理器运算指令涉及的各处理的时序图。在此,举例示出了在协处理器中执行一个运算处理需要4个周期的情况。
在周期C1~C3期间,进行与图7所示的变形例2涉及的运算处理装置100相同的工作。但是,指令解释控制电路将协处理器运算指令的目标寄存器指定字段的内容保存在缓冲器中。
在周期C4~C7中,执行协处理器运算处理115。协处理器以2个周期为一个单位进行工作。首先,在周期C4及周期C5中,逻辑控制电路根据经由控制信号线3040获取的运算种类,在周期C4中经由控制信号线4020传输控制信号,在运算器4200中,开始使用数据传输路径3075上的数据的运算;在周期C6及C7中,经由控制信号线4040,将表示已经取得并保持的含有运算结果保存用的寄存器的指定的运算结束含义的信号向主处理器送出,在运算器4200中,使结束运算后的运算结果的数据输出到数据传输路径3070上,经由控制信号线3040,等待表示可以接收含义的信号被传送过来。
主处理器接收表示运算结束含义的信号时,经由控制信号线3040,将可以接收含义的信号传输给协处理器。再有,主处理器通过1个周期以上的期间,传输此可以接收含义的信号,以便工作频率低的协处理器可识别此可以接收含义的信号。
在周期C6及周期C7的期间,当接收表示可以接收含义的信号时,逻辑控制电路不进行下一个周期内的运算结束含义的信号的传输。
再有,主处理器在周期C2中,虽然图13中没有表示,但其解释协处理器运算指令,并且能够进行用于读出后续此指令的运算指令的指令数据获取处理111,关于此后续的运算指令,在周期C3中进行指令解码处理112。但是,此运算指令在运算输入用的指定寄存器与由先行的协处理器运算指令指定的运算结果保存用的寄存器一致,并且,在还没有进行向此寄存器保存协处理器的运算结果的情况下,直至执行此保存,延迟其后续的运算指令有关的运算器3200运算的开始。
在周期C8中,执行向主处理器的数据交付处理116。即,指令解释控制电路,根据表示已接收的运算结束含义的信号中所包含的运算结果保存用寄存器的指定,通过经由控制信号线3030将控制信号传输到寄存器组3500,由此在此寄存器中写入数据传输路径3070上的数据,此后,删除上述缓冲器中保持的寄存器的指定。当此缓冲器成为没有包含寄存器的指定的状态时,指令解释控制电路,假如存在为将此寄存器作为输入而等待的运算指令,就能开始此运算指令的运算器3200的运算。
(实施方式2)
下面,说明本发明的实施方式2涉及的运算处理装置。
在发明的实施方式2涉及的运算处理装置中,与上述实施方式1涉及的运算处理装置的变形例1、3、5分别相同的装置内部的协处理器按流水线方式执行运算。在实施方式2涉及的运算处理装置中,由于协处理器运算指令(xexec指令)的操作数的使用不同,所以与实施方式1涉及的运算处理装置相比,在一些装置结构上存在不同。
首先,对于xexec指令而言,与实施方式1相同,由助记符号表示为以下形式。
xexec OPn,dstRn,srcRn
在此,协处理器运算指令即xexec指令是指定所谓OPn、dstRn及srcRn这三个操作数所必需的指令。此OPn是协处理器中的运算处理的种类的指定,srcRn是保存协处理器的运算中所使用的源数据的主处理器侧的寄存器的编号的指定,到此为止与实施方式1是相同的,但dstRn不是用于保存协处理器的此运算结果的主处理器侧的寄存器编号的指定;而是,与仅对应于协处理器的流水线级数的周期的之前xexec指令相对应,用于保存仅此周期之前的、协处理器受到请求的运算的结果的主处理器侧的寄存器编号的指定。
当获得此协处理器运算指令并执行解释时,通过主处理器将由srcRn指定的寄存器的内容即源数据和运算处理的种类传输到协处理器,请求协处理器进行运算,此外,协处理器先行接收请求的运算的结果,并保存在由dstRn指定的寄存器中。
再有,就协处理器运算指令(xexec指令)的格式而言,其数据结构与使用图2由实施方式1所表示的相同。
由于实施方式2涉及的运算处理装置的结构和工作与实施方式1中说明的运算处理装置的结构和工作基本相同(参照图3及图4),所以,在此重点说明不同点。
主处理器的指令解释控制电路解释从指令存储器读出的指令,在判定为此指令是根据指令识别码的xexec指令的情况下,根据指定此指令的操作数的各字段(参照图2)的内容,在1个周期内进行下面的3个处理。
首先,作为第一个处理,指令解释控制电路经由控制信号线3040,将协处理器用指令码字段的内容即运算种类传输到协处理器的逻辑控制电路。此时,没有传输目标寄存器指定字段的内容。因此,逻辑控制电路也不具有保持此目标寄存器指定字段内容的结构。
此外,作为第二个处理,指令解释控制电路经由控制信号线3030,将各控制信号施加在寄存器组3500上,该控制信号用于从由源寄存器指定字段的内容指定的一个寄存器将数据输出到数据传输路径3075上。
协处理器的逻辑控制电路根据从主处理器传输的运算处理的种类的指定,进行向寄存器组4500的数据传输控制和在运算器4200进行执行特定的运算处理的控制,但即使运算处理结束的情况下,也不进行向主处理器通知运算结束含义的信号。因此,可省略控制信号线4040。再有,当运算处理结束时,运算器4200将作为运算结果的数据输出到数据传输路径3070上。
此外,作为第三个处理,指令解释控制电路经由控制信号线3030,将各控制信号施加给此寄存器和选择器3650~选择器3665,该控制信号用于在由关于此xexec指令的目标寄存器指定字段的内容指定的一个寄存器中写入数据传输路径3070上的数据。其结果为,对应于由此xexec指令在几个周期前解释的xexec指令的协处理器的运算结果被写入到主处理器的寄存器内。
再有,由于指令解释控制电路只要在1个周期内进行向一个寄存器的写入就可以,所以,就不需要特别调整:将与xexec指令对应的协处理器的运算结果写入某一寄存器的数据传输期间和将与其它的常规运算指令对应的内部运算器的运算结果写入其它寄存器的数据传输期间。
此外,指令解释控制电路不进行由实施方式1的几个变形例所示出的、经由控制信号线3040的可以接收含义的信号的发送。因此,即使在协处理器侧,也不进行等待可以接收含义的信号的这种控制。
根据这种的实施方式2涉及的运算处理装置的处理方式,保存在指令存储器中的程序,在包含协处理器运算指令的多数连续构成的部分的情况下,在主处理器侧、协处理器侧即使不特别地具有多个用于保持各指令的目标寄存器指定字段的内容的机构,也能够适当地执行处理。
但是,在程序中,在应保存由某一协处理器运算指令的操作数指定的目标数据的寄存器中,存在先行于此协处理器运算指令的协处理器运算指令,并且,若不是在将对应于此先行的协处理器运算指令的协处理器的运算结果输出到数据传输路径3070上的情况,则由于没有保存有效值,所以例如在程序设计人员直接描述程序的情况下,就会意识到此情况以致必须把握协处理器运算的执行所需的周期数之后记述程序。
(实施方式3)
下面,说明本发明的实施方式3涉及的目标代码生成装置。
实施方式3涉及的目标代码生成装置是由计算机和软件来实现的所谓的编译器,该目标代码生成装置是一种根据用高级语言记述的源代码、生成实施方式1中示出的由运算处理装置执行的指令序列构成的程序即目标代码的指令序列生成装置。
图14是表示实施方式3涉及的目标代码生成装置结构的方框图。再有,同一图中,附图标记表示源代码7001及目标代码7002。
如同一图所示,目标代码生成装置7000着眼于功能方面,装备有:源代码获取部7010、指令码存储部7020及目标代码生成部7030。
在此,源代码获取部7010具有例如将在硬盘装置等中记录的源代码7001读取到存储区并加以参照的功能。
指令码存储部7020存储成为目标代码的执行环境的运算处理装置中的主处理器的指令***中所包含的所有指令码涉及的信息,进而对应于协处理器运算指令,对每一运算种类即每一协处理器用指令码,存储表示协处理器执行运算所需周期数的周期信息。再有,在所有指令码涉及的信息中,还包含用于生成图2所示的格式的协处理器运算指令所必需的信息,还包含用于在高级语言中指定此协处理器运算指令的函数的定义信息。
目标代码生成部7030经由源代码获取部7010参照源代码,与常规的编译器相同,根据指令码的信息,将源代码中的各语句转换为指令序列。但是,作为与常规的编译程序不同的处理,参照上述的周期信息,特定从解释协处理器运算指令后开始,直至在用于保存由协处理器运算指令的操作数指定的目标数据的寄存器中反映出协处理器的运算结果为止的周期数,进行调整变换后的指令序列的顺序的处理,以便在此期间,使此寄存器不能用作输入其它指令。
图15是表示源代码的示例图。在此,表示C语言的例子。
行L51是data0至data5的变量的说明,行L52是表示以data3为自变量、作为所谓functionX01的协处理器运算用而调用预定的函数并将此运算结果设定为data0的含义语句。
此外,行L53是表示将data0与data3之和设定为data4的含义的语句,行L54是表示将data5与data1之和设定为data5的含义的语句,行L55是表示将data5与data2之和设定为data5的含义的语句。
图16是表示根据图15所例示的源代码生成的目标代码的示例图。再有,为了方便说明,目标代码用助记符号标记来进行表示。在此,add指令是指,将由第二操作数指定的寄存器的内容和由第三操作数指定的寄存器的内容相加,将其结果保存在由第一操作数指定的寄存器中的指令。
在此例中,是目标代码生成装置7000将变量data0~data5分别分配给寄存器R0~R5的例子,目标代码生成装置7000将源代码的行L52的functionX01转换为协处理器用指令码为OP01的协处理器运算指令,以生成行L21。行L21的xexec指令是以下指令:作为协处理器中的运算处理的种类指定OP01的指令、作为保存在协处理器的运算中使用的源数据的主处理器侧的寄存器指定寄存器R3的指令、以及作为用于保存协处理器的运算结果的主处理器侧的寄存器指定寄存器R0的指令。
即,当目标代码生成装置7000在源代码中发现此functionX01函数时,就转换为协处理器用指令码为OP01的xexec指令。分配作为此函数的自变量的变量的寄存器,变换为指定保存源数据的主处理器侧的寄存器的操作数;分配作为函数的恢复值的变量的寄存器,变换为指定用于保存协处理器的运算结果的主处理器侧的寄存器的操作数。
在此,协处理器用指令码若为OP01,则运算所需的周期数就为3(参照图14)。为此,作为对应于源代码的行L53的指令,虽然在行L21的下面,应生成所谓“add R4、R0、R3”的add指令,但如果不在所谓仅此3个周期数之后,协处理器运算指令的运算结果不能保存在寄存器R0中,所以此add指令就在行L24的位置上被生成。代替此,对应于图15的行L54和行L55的各语句的各指令在行L22和行L23的位置上被生成。
因此,根据此目标代码生成装置7000,记述源代码的程序设计人员,即使没有特别注意直到对应于协处理器运算指令、协处理器结束运算为止所需的周期数,也能够获得合适的目标代码。再有,图15的例子中,虽然结果使行L54的语句和行L55的语句比行L53的语句先执行,但由于数据的依赖关系等,也存在不能交换这种语句的顺序的情况。在此情况下,通过在协处理器运算指令之后使用此协处理器运算指令的运算结果应执行的其它运算指令之前***必要数量的nop指令,目标代码生成装置7000就生成不包含以没有保存对应于协处理器运算指令的运算结果的寄存器作为输入的运算指令的目标代码。
(补充)
虽然以上已经说明了本发明涉及的运算处理装置及目标代码生成装置的实施方式,但本发明并不限定于上述实施方式的内容。即,各实施方式所表示的运算处理装置或目标代码生成装置也可按如下所示进行部分变形。
(1)在实施方式1中,主处理器预先将协处理器运算指令的目标寄存器指定字段的内容传输到协处理器侧,在协处理器侧保持此内容,在运算结束时刻在运算结束含义的通知中包含此内容,并传输到主处理器;但是主处理器也可不传输协处理器运算指令的目标寄存器指定字段的内容而自己存储保持,当对应于此协处理器运算指令的运算结果从协处理器返回时接收运算结束含义的信号时,也可以将返回的运算结果保存在由自己存储保持的内容来指定的寄存器中。此目标寄存器指定字段的内容也可预先存储在例如FIFO缓冲器中。
除此之外,进而,也可为按不进行从协处理器侧传输运算结束含义的信号的方式,在此情况下,主处理器的指令解释控制电路,也可以按照运算种类预先存储对应于协处理器运算指令的运算结果直到从协处理器返回为止的时间,通过对周期数进行计数,检测获取返回的运算结果的时间,将此运算结果保存在由自己存储保持的内容来指定的寄存器中。作为此计数涉及的控制方法,也可在协处理器运算指令解释时根据运算种类预先设定合适的计数值,经过一个周期就减去一个计数值,当计数值例如变为0时,控制成将数据传输路径3070上的数据写入寄存器中。
再有,解释协处理器运算指令之后,为了在几个周期中由协处理器所得到的运算结果出现在数据传输路径3070上,使其与成为协处理器运算指令的协处理器指令用代码字段的内容的运算种类相对应并预先使其存储在指令解释控制电路上,在设计阶段应该考虑以下事项:主处理器内的寄存器的数据直到到达协处理器的运算器4200为止的周期数、每一运算种类在协处理器的运算器4200中进行运算所需要的周期数、运算结果从协处理器的运算器4200到达主处理器的寄存器组的周期数。
(2)在实施方式1的变形例中,虽然示出了协处理器的工作频率是主处理器的工作频率2倍的情况,但不限定于2倍,例如也可为4倍等;虽然示出了协处理器的工作频率是主处理器的工作频率1/2倍的情况,但不限定于1/2倍,例如也可为1/4倍等。
(3)在实施方式1、2涉及的各运算处理装置中,指令解释控制电路将协处理器运算指令的协处理器用指令代码字段的内容即运算种类传输到协处理器的逻辑控制电路,协处理器的逻辑控制电路进行此解释,但解释的分担不限定于此,例如,也可由指令解释控制电路解释协处理器用指令代码字段的内容,特定运算,并将表示此含义的信号传输给逻辑控制电路,逻辑控制电路在运算器4200上使由此指定的信号所特定的运算执行。
(4)实施方式1~3中示出的协处理器运算指令,仅能分别一个一个地指定保存源数据的寄存器及保存目标数据的寄存器,但也可多个地指定它们。在此情况下,也可分别多个设置从运算处理装置的主处理器向协处理器的数据传输路径和从协处理器向主处理器的数据传输路径,按照这些进行数据传输的控制。
(5)实施方式1中使用图5~图13说明的协处理器运算指令涉及的各处理,例如指令数据获取处理、指令解码处理和向协处理器的数据交付处理等,不一定必须是分别在1个周期中执行,例如也可以在1个周期中执行指令数据获取处理和指令解码处理。
(6)在实施方式1、2涉及的各运算处理装置中,协处理器虽然不直接访问指令存储器5000和数据存储器6000内的数据,但也可构成为设置专用的总线和指令、可进行读取。
(7)在实施方式1、2涉及的各运算处理装置中,将保存由协处理器运算指令指定的源数据的寄存器和保存目标数据的寄存器都作为主处理器侧的寄存器,运算处理装置具有多个协处理器,作为在某一协处理器A中用于使运算进行的协处理器的运算指令中保存指定的源数据及目标数据的寄存器,也可指定为另一协处理器B的寄存器。在此情况下,对应于协处理器运算指令,将主处理器的指令解释控制电路进行的向寄存器组3500的控制内容直接为向协处理器B的寄存器组的控制内容适用。此外,也可接受来自指令解释控制电路的指示,协处理器B中的逻辑控制电路执行向此协处理器B的寄存器组的控制。
(8)在实施方式1的几个变形例中,主处理器完成协处理器的运算结果的接收准备时,送出可以接收含义的信号,但也可以代替此可以接收的信号,将协处理器的运算结果写入寄存器之后送出写入结束含义的信号,在协处理器侧直至接收写入结束含义的信号为止、继续向数据传输路径3070上输出运算结果。
(9)实施方式1、2中示出的包含主处理器和协处理器的运算处理装置,作为半导体集成电路也可构成在一个半导体芯片上,其中,还可以包含指令存储器,还可以包含数据存储器。
(10)在实施方式3中,目标代码生成装置是根据用C语言等高级语言记述的源代码、生成目标代码的所谓的编译器,但目标代码生成装置例如也可是所谓的汇编器和汇编优化器等,源代码例如也可是由对应于实施方式1中所示出的运算处理装置的指令***的指令序列构成的代码,目标代码生成装置改变此代码的顺序,生成:不包含以没有保存对应于协处理器运算指令的运算结果的寄存器为输入的运算指令的目标代码,即,使用协处理器运算指令的运算结果的运算指令,比此协处理器运算指令仅偏后将此协处理器运算指令的运算结果应保存在寄存器中预定的周期数,由此配置构成的目标代码。
再有,作为实施方式2示出的运算处理装置生成可执行的程序即生成包含协处理器运算指令的方法,除程序设计人员直接记述程序外,也可通过自实施方式3示出的目标代码生成装置中,省略与协处理器运算指令有关地改变指令顺序来进行生成。
(11)也可在存储在实施方式3示出的目标代码生成装置的指令码存储部7020中的信息中,将周期信息转化为对应于其它协处理器的内容。由此,此目标代码生成装置就能够生成对应于将运算处理装置的协处理器转化为其它的情况的目标代码。
(12)在实施方式3示出的目标代码生成装置在生成包含协处理器运算指令的目标代码的情况下,保存由此协处理器运算指令指定的源数据的寄存器和保存目标数据的寄存器都作为主处理器侧的寄存器,但不限定于主处理器侧的寄存器,为了生成以具有多个协处理器的运算处理装置为对象的目标代码,作为保存在某一协处理器A中用于使运算进行的运算的源数据及目标数据的寄存器,也可输出指定其他协处理器B的寄存器的协处理器运算指令。
(13)将定义实施方式3示出的目标代码生成装置中执行的、根据存储在指令码存储部的信息和源代码生成目标代码的处理的计算机程序,记录在记录媒体或经由各种通信路径等使其流通发布。在这种记录媒体中,有快闪存储器、IC卡、光盘、软盘、ROM等。通过将流通、发布的计算机程序保存在计算机中可读出的存储器等中来提供利用,从而此计算机执行此计算机程序,实现由实施方式3示出的目标代码生成装置的各功能。
(14)实施方式1、2示出的协处理器,也可构成为在运算器4200内包含多个要素运算器和选择器,要素运算器进行加法、减法、乘法等运算,根据协处理器的指令和寄存器的设定,就能够动态改变运算种类。此外,也可彼此连接要素运算器,经由选择器将主处理器或协处理器内的寄存器及其它要素运算器的运算结果输入到要素运算器,根据协处理器的指令和寄存器的设定,就能够动态改变其输入目的地。
(15)实施方式1、2示出的运算处理装置也可由多个协处理器构成,协处理器的运算器4200,也可以以主处理器或自协处理器或其它协处理器的寄存器为输入,根据协处理器的指令和寄存器的设定,也能够动态改变其输入目的地。
此外,协处理器的运算器4200进行加法、减法、乘法等运算,根据协处理器的指令和寄存器的设定,也能够动态改变运算器4200的运算。进而,协处理器的逻辑控制电路4100,根据特殊的指令和寄存器的设定,也能够动态改变协处理器运算指令的格式等。即也可构成为能够动态地改变指令码、输入目的地、输出目的地、运算等的位分配的映射。
Claims (12)
1.一种运算处理装置,包括主处理器和协处理器,其中,
上述主处理器包含以下部分:
·指令解释控制部,
逐次解释指令并进行根据指令的控制,
通过解释处理请求指令,其中该处理请求指令指定:上述协处理器中应执行的运算处理的种类、保存该运算处理的对象的第一存储区和应保存上述协处理器进行运算处理的结果的第二存储区,从而进行如下控制:在上述协处理器中,将第一存储区的内容作为运算处理对象以执行该种类的运算处理,进而,将由上述协处理器生成的某一运算处理结果写入第二存储区。
2.根据权利要求1的运算处理装置,其中:
上述主处理器具有:用于在根据运算指令进行运算时保存运算对象或结果的多个寄存器,
处理请求指令包含:作为指定第一存储区的数据而识别上述多个寄存器中的任何一个的第一数据、和作为指定第二存储区的数据而识别上述多个寄存器中的任何一个的第二数据;
上述指令解释控制部进行如下控制:在上述协处理器中,将利用处理请求指令中所包含的第一数据识别的寄存器的内容作为运算处理对象,执行由该处理请求指令指定的种类的运算处理,进而,将由上述协处理器生成的某一运算处理结果写入利用该处理请求指令中所包含的第二数据识别的寄存器中。
3.根据权利要求2的运算处理装置,其中:
处理请求指令作为代码格式除了包含保存用于在上述主处理器能执行的指令组中将该处理请求指令识别为其它指令的指令识别码的字段之外,还分别包含:保存表示协处理器中应执行的运算处理种类的协处理器用指令码的字段、保存第一数据的字段、和保存第二数据的字段;
上述指令解释控制部控制成将处理请求指令中所包含的协处理器用指令码向上述协处理器送出,控制成将利用该处理请求指令中所包含的第一数据识别的寄存器的内容即源数据向上述协处理器送出,进而,控制成获取从上述协处理器送出的某一运算处理结果即结果数据并写入到利用该处理请求指令中所包含的第二数据识别的寄存器中;
上述协处理器解释从上述主处理器送出的协处理器用指令码,获取从上述主处理器送出的源数据并作为运算处理对象,执行由该协处理器用指令码表示的种类的运算处理,将该运算处理结果即结果数据向上述主处理器送出。
4.根据权利要求3的运算处理装置,其中:
上述指令解释控制部在将处理请求指令中所包含的协处理器用指令码向上述协处理器送出时,将该处理请求指令中所包含的第二数据和该协处理器用指令码一起送出到上述协处理器;
上述协处理器在将执行利用从上述主协处理器送出的协处理器用指令码表示的种类的运算处理的结果即结果数据向上述主处理器送出时,将与该协处理器用指令码一起从上述主处理器送出的第二数据与该结果数据一起向上述主处理器送出;
上述指令解释控制部控制成:获取从上述协处理器一起送出的结果数据和第二数据,将该结果数据写入到利用该第二数据识别的寄存器中。
5.根据权利要求3的运算处理装置,其中:
对于上述指令解释控制部控制成写入到利用处理请求指令中所包含的第二数据识别的寄存器中的结果数据而言,该结果数据是从上述协处理器送出的、且由该处理请求指令指定的运算处理的结果,
上述指令解释控制部按照上述运算处理的各个种类,预先存储表示运算处理时间的时间信息,
并控制成:将处理请求指令中所包含的上述协处理器用指令码和上述源数据向上述协处理器送出之后,经过对应由该协处理器用指令码表示的运算处理的种类而存储的时间信息所表示的运算处理时间之时,将从上述协处理器送出的结果数据写入到利用该处理请求指令中所包含的第二数据识别的寄存器中。
6.根据权利要求3的运算处理装置,其中:
上述指令解释控制部控制成:在将从上述协处理器送出的结果数据写入到利用上述处理请求指令中所包含的第二数据识别的寄存器中时,将规定信号向上述协处理器送出,
上述协处理器继续送出上述结果数据直至检测出由上述主处理器送出上述规定信号为止,在该检测后停止送出该结果数据。
7.根据权利要求3的运算处理装置,其中:
上述协处理器对于由协处理器用指令码指定的各种类的运算处理,从运算处理开始都经过相同时间后输出结果数据,
对于上述指令解释控制部控制成写入到利用处理请求指令中所包含的第二数据识别的寄存器中的结果数据而言,该结果数据是从上述协处理器送出的、由先于该处理请求指令解释的其他处理请求指令所指定的运算处理的结果数据,
上述指令解释控制部控制成:将处理请求指令中与第二数据一同包含的上述协处理器用指令码送出到上述协处理器之后,后续于该处理请求指令且在解释其他指令之前,将作为上述协处理器进行由先于该处理请求指令的处理请求指令指定的运算处理的结果传送的结果数据写入到利用该第二数据识别的寄存器中。
8.根据权利要求2的运算处理装置,其中:
上述指令解释控制部进行的、写入到利用处理请求指令中所包含的第二数据识别的寄存器内的上述控制是将在上述协处理器中执行由该处理请求指令指定的种类的运算处理的结果写入该寄存器中的控制。
9.根据权利要求1的运算处理装置,其中:
上述运算处理装置包括第一及第二协处理器;
第二协处理器具有多个寄存器;
上述处理请求指令包含:在第一协处理器中应执行的运算处理种类的指定、作为指定第一存储区的数据而识别第二协处理器的多个寄存器中任意一个的第一数据、和作为指定第二存储区的数据而识别第二协处理器的多个寄存器中任意一个的第二数据;
上述指令解释控制部进行下述控制:在第一协处理器中,将利用处理请求指令中所包含的第一数据识别的、第二协处理器内的寄存器的内容作为运算处理对象,执行由该处理请求指令指定的种类的运算处理,进而,将由第一协处理器生成的某一运算处理结果写入利用该处理请求指令中所包含的第二数据识别的、第二协处理器内的寄存器中。
10.一种指令序列生成装置,该指令序列生成装置根据输入的数据,生成用于在权利要求1的运算处理装置中与协处理器一同装备的主处理器中执行的机器语言的指令序列,该指令序列生成装置包含以下单元:
·存储单元;
·输入数据获取单元,获取输入的数据;以及
·指令序列生成单元,根据上述输入的数据,生成包含处理请求指令的机器语言的指令序列,并将该指令序列记录在上述存储单元内,该处理请求指令用于指定:在协处理器中应执行的运算处理的种类、保存该运算处理对象的该协处理器外部的第一存储区、应保存上述协处理器进行运算处理的结果的该协处理器外部的第二存储区。
11.根据权利要求10的指令序列生成装置,其中:
由上述指令序列生成单元生成的处理请求指令作为代码格式除了包含保存用于在上述主处理器能够执行的指令组中将该处理请求指令识别为其它指令的指令识别码的字段之外,还分别包含:保存表示协处理器中应执行的运算处理的种类的协处理器用指令码的字段;保存第一数据的字段,该第一数据作为指定第一存储区的数据,识别上述主处理器具有的多个寄存器中的任意一个;以及保存第二数据的字段,该第二数据作为指定第二存储区的数据,识别上述主处理器具有的多个寄存器中的任意一个。
12.根据权利要求11的指令序列生成装置,其中,还包含以下单元:
·运算时间管理单元,按照协处理器能够执行的运算处理的各个种类,预先存储表示运算处理时间的时间信息,
上述指令序列生成单元中,当以利用生成的处理请求指令中所包含的第二数据识别的上述主处理器的寄存器的内容作为运算对象的运算指令、生成在指令序列中在该处理请求指令后续的位置上时,根据利用上述运算时间管理单元存储的时间信息,特定与由该处理请求指令中所包含的协处理器用指令序列表示的种类的运算处理有关的运算处理时间,根据该处理请求指令,进行上述指令序列的生成,使得在空出相当于特定的运算处理时间的指令数量部分以上的间隔的位置上设置该运算指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004199138 | 2004-07-06 | ||
JP199138/04 | 2004-07-06 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1749955A true CN1749955A (zh) | 2006-03-22 |
CN100557565C CN100557565C (zh) | 2009-11-04 |
Family
ID=35542687
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005101132723A Active CN100557565C (zh) | 2004-07-06 | 2005-07-06 | 运算处理装置及指令序列生成装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7395410B2 (zh) |
CN (1) | CN100557565C (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102906726A (zh) * | 2011-12-09 | 2013-01-30 | 华为技术有限公司 | 协处理加速方法、装置及*** |
CN103793208A (zh) * | 2014-01-22 | 2014-05-14 | 芯原微电子(上海)有限公司 | 矢量dsp 处理器和协处理器协同运作的数据处理*** |
CN115113933A (zh) * | 2022-08-25 | 2022-09-27 | 旋智电子科技(上海)有限公司 | 用于加速数据运算的装置 |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7490223B2 (en) * | 2005-10-31 | 2009-02-10 | Sun Microsystems, Inc. | Dynamic resource allocation among master processors that require service from a coprocessor |
US8145882B1 (en) * | 2006-05-25 | 2012-03-27 | Mips Technologies, Inc. | Apparatus and method for processing template based user defined instructions |
US7925862B2 (en) * | 2006-06-27 | 2011-04-12 | Freescale Semiconductor, Inc. | Coprocessor forwarding load and store instructions with displacement to main processor for cache coherent execution when program counter value falls within predetermined ranges |
US7805590B2 (en) * | 2006-06-27 | 2010-09-28 | Freescale Semiconductor, Inc. | Coprocessor receiving target address to process a function and to send data transfer instructions to main processor for execution to preserve cache coherence |
US20070300042A1 (en) * | 2006-06-27 | 2007-12-27 | Moyer William C | Method and apparatus for interfacing a processor and coprocessor |
JP2008310693A (ja) * | 2007-06-15 | 2008-12-25 | Panasonic Corp | 情報処理装置 |
US20090019318A1 (en) * | 2007-07-10 | 2009-01-15 | Peter Cochrane | Approach for monitoring activity in production systems |
JPWO2009022371A1 (ja) | 2007-08-16 | 2010-11-04 | ネットクリアスシステムズ株式会社 | タスク処理装置 |
US9075623B2 (en) * | 2012-01-18 | 2015-07-07 | International Business Machines Corporation | External auxiliary execution unit interface for format conversion of instruction from issue unit to off-chip auxiliary execution unit |
KR20150035584A (ko) * | 2012-06-27 | 2015-04-06 | 다우 글로벌 테크놀로지스 엘엘씨 | 세라믹 허니콤 필터 내에 다공질 플러그를 제조하는 개선된 방법 |
US9582287B2 (en) * | 2012-09-27 | 2017-02-28 | Intel Corporation | Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions |
US20150261535A1 (en) * | 2014-03-11 | 2015-09-17 | Cavium, Inc. | Method and apparatus for low latency exchange of data between a processor and coprocessor |
US9733940B2 (en) * | 2014-11-17 | 2017-08-15 | International Business Machines Corporation | Techniques for instruction group formation for decode-time instruction optimization based on feedback |
CN107451090B (zh) * | 2016-06-01 | 2020-09-11 | 华为技术有限公司 | 数据处理***和数据处理方法 |
US11372711B2 (en) | 2019-06-29 | 2022-06-28 | Intel Corporation | Apparatus and method for fault handling of an offload transaction |
US11030000B2 (en) | 2019-06-29 | 2021-06-08 | Intel Corporation | Core advertisement of availability |
US10929129B2 (en) * | 2019-06-29 | 2021-02-23 | Intel Corporation | Apparatus and method for modifying addresses, data, or program code associated with offloaded instructions |
US11016766B2 (en) | 2019-06-29 | 2021-05-25 | Intel Corporation | Apparatus and method for compiler hints for inter-core offload |
US11321144B2 (en) * | 2019-06-29 | 2022-05-03 | Intel Corporation | Method and apparatus for efficiently managing offload work between processing units |
US11182208B2 (en) | 2019-06-29 | 2021-11-23 | Intel Corporation | Core-to-core start “offload” instruction(s) |
US10983796B2 (en) | 2019-06-29 | 2021-04-20 | Intel Corporation | Core-to-core end “offload” instruction(s) |
CN113254070B (zh) * | 2020-02-07 | 2024-01-02 | 阿里巴巴集团控股有限公司 | 加速单元、片上***、服务器、数据中心和相关方法 |
US12001848B2 (en) | 2022-01-30 | 2024-06-04 | Simplex Micro, Inc. | Microprocessor with time counter for statically dispatching instructions with phantom registers |
US11954491B2 (en) | 2022-01-30 | 2024-04-09 | Simplex Micro, Inc. | Multi-threading microprocessor with a time counter for statically dispatching instructions |
US20230393852A1 (en) * | 2022-06-01 | 2023-12-07 | Simplex Micro, Inc. | Vector coprocessor with time counter for statically dispatching instructions |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4715013A (en) * | 1983-04-18 | 1987-12-22 | Motorola, Inc. | Coprocessor instruction format |
US4914578A (en) * | 1983-04-18 | 1990-04-03 | Motorola, Inc. | Method and apparatus for interrupting a coprocessor |
US5446865A (en) * | 1990-03-13 | 1995-08-29 | At&T Corp. | Processor adapted for sharing memory with more than one type of processor |
JP2987308B2 (ja) * | 1995-04-28 | 1999-12-06 | 松下電器産業株式会社 | 情報処理装置 |
JP3510729B2 (ja) * | 1996-02-29 | 2004-03-29 | 三洋電機株式会社 | 命令実行方法および命令実行装置 |
US6032247A (en) * | 1996-03-18 | 2000-02-29 | Advanced Micro Devices, Incs. | Central processing unit including APX and DSP cores which receives and processes APX and DSP instructions |
EP0918280B1 (en) * | 1997-11-19 | 2004-03-24 | IMEC vzw | System and method for context switching on predetermined interruption points |
US6282634B1 (en) * | 1998-05-27 | 2001-08-28 | Arm Limited | Apparatus and method for processing data having a mixed vector/scalar register file |
US6247113B1 (en) * | 1998-05-27 | 2001-06-12 | Arm Limited | Coprocessor opcode division by data type |
US6434689B2 (en) * | 1998-11-09 | 2002-08-13 | Infineon Technologies North America Corp. | Data processing unit with interface for sharing registers by a processor and a coprocessor |
KR100308618B1 (ko) * | 1999-02-27 | 2001-09-26 | 윤종용 | 단일 칩 상의 마이크로프로세서-코프로세서 시스템을 구비한 파이프라인 데이터 처리 시스템 및 호스트 마이크로프로세서와 코프로세서 사이의 인터페이스 방법 |
GB2366426B (en) * | 2000-04-12 | 2004-11-17 | Ibm | Coprocessor data processing system |
US6826717B1 (en) * | 2000-06-12 | 2004-11-30 | Altera Corporation | Synchronization of hardware and software debuggers |
US6671793B1 (en) * | 2000-10-02 | 2003-12-30 | International Business Machines Corporation | Method and system for managing the result from a translator co-processor in a pipelined processor |
US6950929B2 (en) * | 2001-05-24 | 2005-09-27 | Samsung Electronics Co., Ltd. | Loop instruction processing using loop buffer in a data processing device having a coprocessor |
US7228401B2 (en) * | 2001-11-13 | 2007-06-05 | Freescale Semiconductor, Inc. | Interfacing a processor to a coprocessor in which the processor selectively broadcasts to or selectively alters an execution mode of the coprocessor |
EP1387258A3 (en) * | 2002-07-31 | 2008-01-02 | Texas Instruments Incorporated | Processor-processor synchronization |
US6986023B2 (en) * | 2002-08-09 | 2006-01-10 | Intel Corporation | Conditional execution of coprocessor instruction based on main processor arithmetic flags |
US7079147B2 (en) * | 2003-05-14 | 2006-07-18 | Lsi Logic Corporation | System and method for cooperative operation of a processor and coprocessor |
-
2005
- 2005-06-30 US US11/172,601 patent/US7395410B2/en active Active
- 2005-07-06 CN CNB2005101132723A patent/CN100557565C/zh active Active
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102906726A (zh) * | 2011-12-09 | 2013-01-30 | 华为技术有限公司 | 协处理加速方法、装置及*** |
WO2013082809A1 (zh) * | 2011-12-09 | 2013-06-13 | 华为技术有限公司 | 协处理加速方法、装置及*** |
US8478926B1 (en) | 2011-12-09 | 2013-07-02 | Huawei Technologies Co., Ltd. | Co-processing acceleration method, apparatus, and system |
CN102906726B (zh) * | 2011-12-09 | 2015-11-25 | 华为技术有限公司 | 协处理加速方法、装置及*** |
CN103793208A (zh) * | 2014-01-22 | 2014-05-14 | 芯原微电子(上海)有限公司 | 矢量dsp 处理器和协处理器协同运作的数据处理*** |
CN103793208B (zh) * | 2014-01-22 | 2016-07-06 | 芯原微电子(上海)有限公司 | 矢量dsp处理器和协处理器协同运作的数据处理*** |
CN115113933A (zh) * | 2022-08-25 | 2022-09-27 | 旋智电子科技(上海)有限公司 | 用于加速数据运算的装置 |
Also Published As
Publication number | Publication date |
---|---|
CN100557565C (zh) | 2009-11-04 |
US20060010305A1 (en) | 2006-01-12 |
US7395410B2 (en) | 2008-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1749955A (zh) | 控制处理器和协处理器间的数据传输的运算处理装置 | |
CN1101019C (zh) | 数据序列产生方法及设备、转换方法及计算机 | |
CN1271513C (zh) | 转移指令的方法和处理器 | |
CN100338568C (zh) | 开发片上***用的开发环境的生成方法 | |
CN100340975C (zh) | 计算机***、编译器装置以及编译方法 | |
CN100339824C (zh) | 高效执行特长指令字的处理器和方法 | |
CN1185592C (zh) | 并行处理器结构 | |
CN1280714C (zh) | 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器 | |
CN1264089C (zh) | 编译设备和编译方法 | |
CN1387641A (zh) | 并行处理器中的多线程执行 | |
CN1387644A (zh) | 并行处理器体系结构的sdram控制器 | |
CN1226026A (zh) | 数据处理装置 | |
CN1842779A (zh) | 用于执行simd运算的数据处理***及其方法 | |
CN1127016C (zh) | 计算机处理装置和方法 | |
CN1684058A (zh) | 处理器 | |
CN1802632A (zh) | 用于在程序代码转换期间执行解释器优化的方法和装置 | |
CN1918546A (zh) | 程序转换装置及程序转换方法 | |
CN1278226C (zh) | 模拟装置、模拟方法 | |
CN1934543A (zh) | 高速缓冲存储器及其控制方法 | |
CN1471077A (zh) | 浮点存储方法及浮点运算装置 | |
CN1851399A (zh) | 使用目标图案感知二维绝对位置的*** | |
CN1095133C (zh) | 多处理器计算机***中共享结果数据的方法,装置和*** | |
CN1143213C (zh) | 高速处理循环的编译器和处理器 | |
CN1254740C (zh) | 使用协处理器的数据处理 | |
CN1016383B (zh) | 基于操作数长度和对位的微码转移 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |