CN104111817B - 算术处理装置 - Google Patents

算术处理装置 Download PDF

Info

Publication number
CN104111817B
CN104111817B CN201410100282.2A CN201410100282A CN104111817B CN 104111817 B CN104111817 B CN 104111817B CN 201410100282 A CN201410100282 A CN 201410100282A CN 104111817 B CN104111817 B CN 104111817B
Authority
CN
China
Prior art keywords
instruction
stream
register
arithmetic processing
processing device
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.)
Active
Application number
CN201410100282.2A
Other languages
English (en)
Other versions
CN104111817A (zh
Inventor
吉村和浩
葛毅
堀尾生
堀尾一生
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of CN104111817A publication Critical patent/CN104111817A/zh
Application granted granted Critical
Publication of CN104111817B publication Critical patent/CN104111817B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computing Systems (AREA)

Abstract

公开了一种算术处理装置,该算术处理装置包括:算术单元,配置成执行算术运算;以及流引擎,该配置成执行流处理,其中,算术单元的数据总线和流引擎的数据总线彼此紧耦合。

Description

算术处理装置
技术领域
在本文中所讨论的实施例涉及一种算术处理装置。
背景技术
近年,随着诸如智能手机和平板型电脑的便携式终端的通信量的增长,更高速的无线通信系统引起了注意。作为这样的高速无线通信系统,例如长期演进(LTE)得到广泛使用,并且对作为更高性能下一代移动通信系统的LTE Advanced(长期演进升级版)进行了标准化,以及针对实际使用提出了各种提议。
例如,当采用LTE Advanced时,作为无线通信基带处理,要进行大量的矩阵算术运算处理。
这不仅限于LTE Advanced,而且对于包括微波接入全球互通2(WiMAX 2)和当前所使用的系统的各种无线通信系统(标准)也是如此。
通常,在无线通信基带处理中,进行与通信速度的增长成正比的大量的矩阵算术运算。例如,在LTE Advanced中,矩阵算术运算占整个算术运算的很大量。
为了以高速执行矩阵算术运算处理(流处理(stream processing)的一种),如下配置是适合的:在该配置中,串联连接其中存储有矩阵数据的存储器与算术单元;以及流引擎对从存储器所读出的数据进行矩阵算术运算并且将算术运算结果写出到存储器。
相应地,例如,为通用处理器的基本处理器与具有流引擎的协处理器的组合被提议作为用于进行LTE Advanced中的无线通信基带处理的算术处理装置(算术处理系统)。
此前,作为由基本处理器与具有流引擎的协处理器的组合所实现的算术处理系统,提议了各种系统。
现有技术的示例包括在日本公开专利公布第2011-197774号和日本公开专利公布第08-069377号中所公开的技术。
在这样的算术处理系统中,例如,当执行为协处理器指令的流指令时,基本处理器通过握手进行协处理器的状态监视、数据传输、执行的控制等。因此,发生开销。此开销被称为例如“通信周期开销”。
另外,例如,在当协处理器中的流引擎正在执行流处理时发生了中断的情况下,在进行等待直到流处理的执行完成为止之后进行中断处理。
即,在中断发生期间协处理器处于忙状态的情况下,基本处理器进行等待直到协处理器进入空闲状态为止。这进一步增加了通信周期开销。
发明内容
根据本发明的一个方面,算术处理装置包括:算术单元,配置成执行算术运算;流引擎,配置成执行流处理;指令发出单元,配置成发出指令;以及第一先进先出缓冲器,其中,所述算术单元的数据总线与所述流引擎的数据总线彼此紧耦合(tightly coupled),所述指令发出单元将指令发出到所述算术单元以及将指令发出到所述流引擎,所述流引擎包括:读出电路,配置成从存储器读出数据,执行电路,配置成对所读出的数据执行流处理;以及写入电路,配置成将通过所述流处理所获得的算术运算结果写入到所述存储器,所述第一先进先出缓冲器设置在所述存储器与所述读出电路之间,所述存储器经受直接存储器存取控制,以及用于控制所述读出电路的处理的第一微指令被停止,以填满所述第一先进先出缓冲器并且停止所述流引擎的管道处理。所述读出电路包括出栈单元和第一寄存器;以及所述出栈单元从在所述存储器中所包括的并且由起始地址和流长度所指示的第一存储器部分读出数据,并且将所读出的数据写入到所述第一寄存器。所述执行电路包括执行单元和第二寄存器,以及所述执行单元对在所述第一寄存器中所存储的数据执行流处理,并且将通过所述流处理所获得的算术运算结果存储在所述第二寄存器中。所述执行电路包括多个分层的执行单元和多个第三寄存器,所述多个第三寄存器设置在层中的所述执行单元之间。所述写入电路包括入栈单元,以及所述入栈单元将在所述第二寄存器中所存储的所述算术运算结果写入到在所述存储器中所包括的并且由起始地址和流长度所指示的第二存储器部分。由所述指令发出单元发出到所述流引擎的指令是单步指令,以及所述流引擎具有管道级,所述管道级中的每个管道级依照所述单步指令中的一个单步指令执行一个处理。由所述指令发出单元发出到所述流引擎的指令包括用于控制所述流引擎的对应的管道级的短位长微指令,所述指令是通过分离所述单步指令所获得的,以及每个管道级依照对应的微指令独立地执行处理。所述的算术处理装置还包括:第二先进先出缓冲器,设置在所述写入电路与所述存储器之间,其中,所述存储器经受直接存取存储器控制,以及用于控制所述写入电路的处理的第二微指令被停止,以清空所述第二先进先出缓冲器并且停止所述流引擎的管道处理。
将借助于在权利要求中具体地指出的元件和组合来实现并且获得本发明的目的和优点。
将理解,如所要求保护的,前述的一般描述和下面的详细描述两者均是示例性的和说明性的,并且不是对本发明的限制。
附图说明
图1是示出了算术处理装置的示例的框图;
图2是示出了根据本实施例的算术处理装置的示例的框图;
图3是示出了由根据本实施例的算术处理装置所进行的操作的框图;
图4是示出了根据本实施例的算术处理装置中的流引擎的停止操作的框图;
图5A和图5B是示出了由参照图4所描述的流引擎的停止操作所产生的优点的示例的图;
图6是示出了根据本实施例的算术处理装置中的读出电路的操作的示例的图;
图7是示出了根据本实施例的算术处理装置中的读出电路的操作的另一示例的图;
图8是示出了根据本实施例的算术处理装置中的执行电路的操作的示例的图;
图9是示出了根据本实施例的算术处理装置中的执行电路的操作的另一示例的图;
图10是示出了根据本实施例的算术处理装置中的写入电路的操作的示例的图;
图11是示出了根据本实施例的算术处理装置中的写入电路的操作的另一示例的图;
图12是示出了根据本实施例的算术处理装置中的参数信息的示例的图;
图13是示出了根据本实施例的算术处理装置中的单步指令(step instruction)的图(第1部分);
图14A至图14C是示出了根据本实施例的算术处理装置中的单步指令的图(第2部分);
图15是示出了根据本实施例的算术处理装置中的单步指令的修改例的图;
图16是示出了根据本实施例的算术处理装置中的微指令的图(第1部分);
图17A至图17C是示出了根据本实施例的算术处理装置中的微指令的图(第2部分);
图18A至图18C是示出了依照根据本实施例的算术处理装置中的微指令的存取控制的图;
图19示出了根据本实施例的算术处理装置中的微指令被嵌入到VLIW指令中的状态;
图20A至图20C是示出了根据图19所示的VLIW指令的前序处理的图;以及
图21A至图21C是示出了根据图19所示的VLIW指令的收尾处理的图。
具体实施方式
首先,在详细地描述算术处理装置的实施例之前,将参照图1描述算术处理装置的示例以及其问题。
图1是示出了算术处理装置的示例的框图。所示的算术处理装置(算术处理系统)是为通用处理器的基本处理器与具有流引擎的协处理器的组合。
在图1中,附图标记ID指示指令解释(Instruction Decode(指令解码))级,IF指示指令读出(Instruction Fetch(指令取出))级,以及RR/II指示指令发出(InstructionIssue(指令发出))级和寄存器读出(Register Read(寄存器读出))级。
附图标记EX指示执行(Execution(执行))级,MA指示存储器存取(Memory Access(存储器存取))级,以及RW指示寄存器写入(Register Write(寄存器写入))级。例如,图1所示的算术处理系统具有为通用处理器的基本处理器100和包括流引擎200的协处理器300。
在基本处理器100中,在IF级中,指令取出单元101从指令存储器108取出(读出)指令;在ID级中,指令解码单元102接收由指令取出单元101所读出的指令并且对指令进行解码(解释)。
在RR/II级中,寄存器读出单元103进行寄存器110的读出,并且指令发出单元104将由指令解码单元102所解释的指令发出到算术单元105。
在EX级中,算术单元105根据由指令发出单元104所发出的指令执行算术运算;在MA级中,存储器存取单元106对存储器(数据存储器)109进行存取,其涉及加载(读出)或存储(写入)。
在RW级中,寄存器写入单元107将由算术单元105所获得的算术运算结果或从数据存储器109所加载的数据写入到寄存器110。
如由图1中的附图标记P100所指示地,基本处理器100适于进行管道执行(pipeline execution),其将寄存器110与存储器109之间或寄存器110与算术单元105之间的处理作为根据单个指令的处理。
在协处理器300中,在IF级中,指令取出单元301从指令存储器108读出指令;在ID级中,指令解码单元302读出并且解释由指令取出单元301所读出的指令。
在RR/II级中,寄存器读出单元303进行寄存器310的读出,并且指令发出单元304将由指令解码单元302所解释的指令发出到流引擎200。流引擎200包括算术单元205和存储器存取单元206,存储器存取单元206对数据存储器400进行存取,其涉及加载或存储。
如由图1中的附图标记P200所指示地,从指令发出单元304到流引擎200的指令是流指令。当发出一个流指令时,进行管道执行直到存储器400与算术单元205之间的流处理的一个序列完成为止。
即,在EX和MA级中,流引擎200中的算术单元205和存储器存取单元206依照从指令发出单元304所发出的流指令进行处理直到流处理完成为止。在RW级中,寄存器写入单元307将经受了由流引擎200进行的流处理的数据(算术运算结果)写入到寄存器310。
在这种情况下,在图1中,附图标记P150指示基本处理器100对协处理器300所进行的处理,例如,通过将流指令发出到协处理器300来与协处理器300握手的处理。即,基本处理器100监视例如协处理器300的状态,控制协处理器300的执行,以及控制到协处理器300的数据传输。
以上参照图1所描述的、为基本处理器100与具有流引擎200的协处理器300的组合的算术处理系统,在流引擎200执行流处理时具有周期开销的问题。
即,在为协处理器指令的流指令的执行期间,基本处理器100通过握手来监视协处理器300的状态以与协处理器300进行数据传输并且控制协处理器300的执行。
因此,在基本处理器100与协处理器300之间发生开销(通信周期开销)。例如,在当协处理器300中的流引擎200正在执行流处理时发生中断的情况下,流引擎200进行等待直到流处理的执行完成为止,因此进一步增加了通信周期开销。
以下将参照附图详细地描述根据本实施例的算术处理装置。图2是示出了根据本实施例的算术处理装置的示例的框图。从图2与图1之间的比较中明显的是,图2所示的算术处理装置(处理器)1包括与图1所示的基本处理器100相对应的配置,并且还包括流引擎2。
更具体地,如图2所示,处理器1包括寄存器10、指令取出单元11、指令解码单元12、寄存器读出单元13、指令发出单元14、算术单元15、存储器存取单元16、寄存器写入单元17、指令存储器18以及数据存储器19。指令发出单元14不仅适于将指令发出到算术单元15,而且还适于将指令(例如,单步指令)发出到流引擎2。
流引擎2包括出栈单元21和执行单元23。出栈单元21从数据存储器4读出数据并且将所读出的数据写入到寄存器221和寄存器222;执行单元23对被写入到寄存器221和寄存器222的数据执行流处理,并且将生成的数据写入到寄存器24。流引擎2还包括将被写入到寄存器24的数据写入到数据存储器4的入栈单元25。
在图2中,附图标记IF、ID、RR/II、EX、MA以及RW指示与以上参照图1所描述的级相同或类似的级。
即,在IF级中,指令取出单元11从指令存储器18取出(读出)指令;在ID级中,指令解码单元102接收由指令取出单元101所取出的指令并且对指令进行解码(解释)。
在RR/II级中,寄存器读出单元13进行寄存器10的读出,并且指令发出单元14将由指令解码单元12所解释的指令发出到算术单元15和流引擎2。
在EX级中,算术单元15根据从指令发出单元14所发出的指令执行算术运算,并且流引擎2根据从指令发出单元14所发出的指令执行流处理。在这种情况下,如上所述,从指令发出单元14发出到流引擎2的指令是单步指令。
在MA级中,存储器存取单元16对存储器(数据存储器)19进行存取,其涉及加载或存储。另外,在MA级中,流引擎2(出栈单元21或入栈单元25)对存储器(数据存储器)4进行存取,其涉及加载(读出)或存储(写入)。
在RW级中,寄存器写入单元17将由算术单元15所获得的算术运算结果或从数据存储器19所加载的数据写入到寄存器10,并且寄存器写入单元17将经受了由流引擎2所执行的流处理的数据写入到寄存器10。
图3是示出了由根据本实施例的算术处理装置1所进行的操作的框图。从图3所示的附图标记P1与图1所示的附图标记P100之间的比较中明显的是,在与图1所示的基本处理100相对应的部分中进行管道执行,其将寄存器10与存储器19之间或寄存器10与算术单元15之间的处理作为根据单个指令的处理。
如由图3中的附图标记P21至附图标记P23所指示地,处理器1内建的流引擎2依照从指令发出单元14所发出的单步指令执行用于各自的单步的处理。
在这种情况下,处理P21是如下处理:在该处理中,流引擎2中的出栈单元21从数据存储器4读出数据,并且将所读出的数据写入到寄存器221和寄存器222。处理P22是如下处理:在该处理中,执行单元23对被写入到寄存器221和寄存器222的数据执行流处理并且将生成的数据写入到寄存器24。
另外,处理P23是如下处理:在该处理中,入栈单元25将被写入到寄存器24的数据写入数据存储器4。处理P21至处理P23经受了根据从指令发出单元14所发出的单步指令进行的管道执行。
在此,将对如下情况给出描述:在该情况中,流引擎2依照三个单步指令(具有三个单步指令的一个轮替(rotation))对三个处理P21至P23进行处理。然而,这仅为示例,并且无需说明,布置可以是如下布置:由四个处理或更多个处理构成一个轮替的处理,并且重复该一个轮替的处理多次以执行流处理。
图4是示出了根据本实施例的算术处理装置1中的流引擎2的停止操作的框图。例如,在当处理器1内建的流引擎2正在执行流处理时发生中断的情况下,指令发出单元14停止将单步指令发出到流引擎2。
当指令发出单元14停止将单步指令发出到流引擎2时,停止流引擎2中的处理P21至处理P23中的所有处理。即,出栈单元21停止处理P21,在处理P21中,从数据存储器4读出数据并且将所读出的数据写入到寄存器221和寄存器222。
执行单元23还停止处理P22,在处理P22中,对被写入到寄存器221和寄存器222的数据执行流处理并且将生成的数据写入到寄存器24。然后,入栈单元25停止处理P23,在处理P23中,将被写入到寄存器24的数据写入到数据存储器19。
如上所述,根据本实施例的算术处理装置依照单步指令对流引擎2的操作进行精细控制。因此,在流处理的执行期间发生中断的情况下,算术处理装置可以通过立即地停止流处理来进行中断处理。
即,依照根据本实施例的算术处理装置,例如,可以通过在发生中断期间停止发出单步指令来立即地停止流引擎2。换言之,依照根据本实施例的算术处理装置,在停止发出单步指令之后,可以自主地停止流引擎2中的管道级(处理P21至处理P23),因此使得可以减少周期开销并且提高处理速度。
图5A和图5B是示出了由以上参照图4所描述的流引擎2的停止操作所产生的优点的示例的图。更具体地,图5A示出了由图1所示的、以上所描述的算术处理系统所进行的操作,并且图5B示出了由以上参照图4所描述的算术处理装置所进行的操作。
作为前提,假设:流处理的一个序列的周期的数量(时钟周期的数量)为200个周期,算术运算数据总线的时延是10个周期,以及被用于流处理的一个序列的参数信息的位宽是320位。
还假设:外部与存储器19之间的数据传输与流处理重叠,并且隐藏数据传输周期。另外,还假设:在图5A中,基本处理器100与协处理器300之间的数据总线是32位数据总线,并且以10个周期将参数信息从基本处理器100传输到协处理器300。
因此,在图5A中,通信周期开销由例如下式给出:10[周期](数据传输)+10[周期](算术运算数据总线)=20[周期]。
在图5B中,因为数据总线“紧耦合”,所以假设以1个周期传输参数信息。在此所使用的术语“紧耦合”并不意味着以总线级耦合的处理器对共用存储器进行存取,而是意味着共用指令发出单元14将指令发出到算术单元15和流引擎2。
因此,在图5B中,通信周期开销由例如下式给出:1[周期](数据传输)+10[周期](算术运算数据总线)=11[周期]。
如5A图所示,在图1所示的算术处理系统中,例如,当在第三个流处理(A2)中的第50个周期处发生中断时,在第三个流处理的所有完成之后执行其他流处理(B0)。
相应地,在算术处理系统中,直到其他流处理(B0)完成为止,涉及200+20+200+20+50+150+20+200=860[周期]。
另一方面,在以上参照图4所描述的实施例中的算术处理装置(处理器)1中,例如,当在第三个流处理(A2)中的第50个周期处发生中断时,立即地停止第三个流处理并且执行流处理(B0)。
相应地,直到其他流处理(B0)完成为止,本实施例中的处理器1涉及200+11+200+11+50+11+200=683[周期]。
即,可以理解的是,对于进行同一处理,本实施例中的处理器1能够使得处理速度从860个周期到683个周期提高了177个周期。
图5A和图5B仅示出了流处理的示例,并且无需说明,例如,根据一个流指令的周期的数量越大则提高处理速度的优势就变得越大,或在流处理的执行期间中断发生的频率越高则提高处理速度的优势就变得越大。
图6是示出了根据本实施例的算术处理装置中的读出电路的操作的示例的图,并且图7是示出了根据本实施例的算术处理装置中的读出电路的操作的另一示例的图。
如图6和图7所示,读出电路210包括出栈单元21以及寄存器221和寄存器222,并且数据存储器4包括存储器部分41和存储器部分42。存储器部分41和存储器部分42代表例如在数据存储器4中不同地址(起始地址)处的联组的存储器区域,并且无需说明,数据存储器4包括除了两个存储器之外的任何数量的存储器。
如图6所示,读出电路210中的出栈单元21通过指定起始地址和流长度来从数据存储器4中的存储器部分(第一联组)41读出第一数据,并且将所读出的第一数据存储在寄存器221中。
另外,读出电路210中的出栈单元21通过指定起始地址和流长度来从数据存储器4中的存储器部分(第二联组)42读出第二数据,并且将所读出的第二数据存储在寄存器222中。读出电路210的处理对应于例如以上所述的并且图3所示的算术处理装置中的上述处理P21。
即,出栈单元21从数据存储器4读出流数据,将流数据输入(存储)到(在)读出级(出栈单元21)与用于流处理的执行级(执行单元23)之间的寄存器(管道寄存器)221和寄存器(管道寄存器)222中,并且执行管道处理。
因此,例如,指定起始地址和流长度来从联组到第一联组41和第二联组42中的数据存储器4读出流数据,使得可以减少存储器端口的数量并且使周期开销最小化。
如图7所示,例如,由直接存储器存取(DMA)单元5从存储器部分(第一联组)41和存储器部分(第二联组)42所读出的数据还可以通过先进先出(FIFO)缓冲器61和先进先出(FIFO)缓冲器62被提供给读出电路210。即,对来自数据存储器4的数据传输还可以被留给DMA单元5,以从FIFO缓冲器61和FIFO缓冲器62提取所读出的数据。
图8是示出了根据本实施例的算术处理装置1中的执行电路的操作的示例的图。如图8所示,执行电路230包括执行单元23和寄存器24。
执行电路230中的执行单元23对被写入到寄存器221和寄存器222的数据执行流处理,并且将其算术运算结果写入到寄存器24。执行电路230的处理对应于例如以上所述的并且图3所示的算术处理装置1中的处理P22。
即,执行单元23对输入到寄存器221和寄存器222的数据执行流处理,将其算术运算结果输入到在执行单元23与入栈单元25之间的寄存器(管道寄存器)24,并且执行管道处理。
图9是示出了根据本实施例的算术处理装置1中的执行电路的操作的另一示例的图。在此示例中,此执行电路230由多级的执行单元231至执行单元233以及寄存器241至寄存器243构成。
在这种情况下,在读出电路210中设置四个寄存器221a和221b以及222a和222b,以便与两个执行单元231和232相对应。
为了存储由三个执行单元231至233所获得的算术运算结果,在执行电路230中还设置了三个寄存器241至243。图9所示的执行电路230仅为示例,并且无需说明,还可以使用各种其他配置。
因此,执行电路230(算术单元的数据总线)可以具有多级配置。采用此配置,可以将算术运算结果输入到在执行单元233与入栈单元25之间的寄存器(管道寄存器)243以执行管道处理。
图10是示出了根据本实施例的算术处理装置1中的写入电路的操作的示例的图,并且图11是示出了根据本实施例的算术处理装置1中的写入电路的操作的另一示例的图。
如图10所示,写入电路250包括入栈单元25,并且写入电路250将在寄存器24中所存储的算术运算结果写入数据存储器4中的存储器部分43。即,写入电路250从在执行单元23与入栈单元25之间的管道寄存器24中提取输出数据,并且将输出数据写入到例如由起始地址和流长度所指示的存储器区域。
写入电路250的处理对应于例如以上所述的并且图3所示的算术处理装置1中的处理P23。在这种情况下,存储器单元43可以是例如数据存储器4中、不同于存储器部分41和存储器部分42的存储器区域。
图10所示的写入电路250将在寄存器24中所存储的算术运算结果直接写入到存储器部分43。相反,图11所示的写入电路250将在寄存器24中所存储的算术运算结果写入到FIFO缓冲器7,并且DMA单元8将被写入到FIFO缓冲器7的数据传输给存储器部分43。
即,图11所示的写入电路250适于将在寄存器24中所存储的算术运算结果顺序地写入到FIFO缓冲器7,并且将从FIFO缓冲器7到存储器部分43(数据存储器4)的数据传输留给DMA单元8。
图12是示出了根据本实施例的算术处理装置1中的参数信息的示例的图。例如,被用于流处理中的参数信息可以由每个流(i)的起始地址(ai)、每个流(i)的流长度(li)、算术运算操作码(o)以及算术运算模式(m)所代表;并且可以由单个长位长设定指令(设定指令:set(设定))所代表。
如同附图标记P10所指示地,从指令存储器18读出设定指令(参数信息),并且将其一次性地分配给(设定至)参数寄存器140。如附图标记P11所指示地,管道级(出栈单元21、执行单元23以及入栈单元25)参考参数寄存器140中的参数信息以进行管道执行。
图13至图14C是示出了根据本实施例的算术处理装置1中的单步指令的图。如图13至图14C所示,根据本实施例中的算术处理装置(流引擎2),可以依照所设定的指令进行控制。
即,如附图标记P20所指示地,从指令存储器18读出单步指令,并且执行单步指令以由此使得可以控制流引擎2中的各个管道级中的处理P21至处理P23。单步指令是例如由程序员预先所创建的指令。
在此示例中,从指令存储器18按顺序读出单步指令“单步1至单步N”,并且将其从指令发出单元14发出到流引擎2,以及执行管道处理P21至管道处理P23。
如图13所示,将单步指令从指令发出单元14发出到流引擎2,并且出栈单元21、执行单元23以及入栈单元25依照各自的单步指令执行对应的处理(处理P21、处理P22以及处理P23)。
即,如图14A所示,处理P21是如下处理:在该处理中,出栈单元21从数据存储器4读出数据并且将数据写入寄存器221和寄存器222。如图14B所示,处理P22是如下处理:在该处理中,执行单元23对被写入到寄存器221和寄存器222的数据执行流处理并且将生成的数据写入到寄存器24。
另外,如图14C所示,处理P23是如下处理:在该处理中,入栈单元25将被写入到寄存器24的数据写入到数据存储器19。这些处理P21至P23依照从指令发出单元14所发出的单步指令经受了管道执行。
图15是示出了根据本实施例的算术处理装置1中的单步指令的修改例的图。在以上参照图13所描述的情况下,从指令存储器18直接读出N个单步指令“单步1至单步N”,并且将其从指令发出单元14发出到流引擎2。
相反,在图15所示的修改例中,将设定指令与用于有效地执行连续地重复的处理(循环处理)的循环处理所专用的指令(零开销循环指令)进行组合。
即,将N个单步指令“单步1至单步N”与零开销循环指令(循环N个单步)进行组合,使得可以抑制指令序列的数量的增加。在零开销循环指令的情况下,例如,当中断发生时,在正在执行的单步中立即停止流的处理。
图16至图17C是示出了根据本实施例的算术处理装置中的微指令的图。如图16所示,从指令发出单元14发出到流引擎2的指令是微指令。
即,如由图16所示的附图标记P30所指示地,根据本实施例的算术处理装置适于从指令存储器18读出微指令并且执行微指令以控制流引擎2中各自的管道级中的处理P21至处理P23。
例如,出栈指令被分配给图17A所示的处理P21,执行指令被分配给图17B所示的处理P22,入栈指令被分配给图17C所示的处理P23,以及根据微指令执行处理P21至处理P23。此布置能够使得根据微指令分别地控制各自的管道级中的处理P21至处理P23。
图18A至18C是示出了依照根据本实施例的算术处理装置中的微指令的存取控制的图。
在这种情况下,图18A示出了发出出栈指令、执行指令以及入栈指令中的所有的情况,图18B示出了停止出栈指令的情况,以及图18C示出了停止入栈指令的情况。与图7和图11所示的配置类似地,算术处理装置包括DMA单元5和DMA单元8以及FIFO缓冲器61、FIFO缓冲器62和FIFO缓冲器7。
首先,如图18A所示,当发出出栈指令、执行指令以及入栈指令中的所有时,以对应的周期执行各自的管道级中的处理P21至处理P23。
接下来,如图18B所示,当停止出栈指令时,即,当仅执行执行指令和入栈指令时,出栈单元21停止从FIFO缓冲器61和FIFO缓冲器62读出数据。
作为由DMA单元(输入DMA单元)5所进行的数据传输的结果,FIFO缓冲器61和FIFO缓冲器62被填满,并且DMA单元5检测到FIFO缓冲器61和FIFO缓冲器62的填满状态以及进行自动停止。即,通过停止为微指令的出栈指令,可以停止流引擎2的管道处理。
此外,如图18C所示,当停止入栈指令时,即,当仅执行出栈指令和执行指令时,入栈单元25停止用于从寄存器24读出数据并且将数据存储在FIFO缓冲器7中的操作。
作为结果,FIFO缓冲器7变为空,并且DMA(输出DMA)单元8检测到FIFO缓冲器7的空状态以及进行自动停止。即,通过停止为微指令的入栈指令,可以停止流引擎2的管道处理。
微指令(即出栈指令、执行指令以及入栈指令)的使用,能够使得DMA单元5和DMA单元8例如在即使发生中断时也自主地控制存储器存取。即,可以简化存储器19与算术单元15之间的数据传输的控制,因此使得可以减少用于存储器存取控制的硬件的数量。
图19示出了根据本实施例的算术处理装置的微指令被嵌入(被打包到)VLIW指令中的状态。如以上参照图16至图18C所描述地,当使用微指令时,例如,将微指令嵌入超长指令字(VLIW)指令使得可以同时执行各个处理,由此使得可以减少执行周期的数量。
即,将多个微指嵌入VLIW指令中使得可以减少循环处理中的指令的数量,并且还使得可以减少循环中的执行周期的数量。这样的布置还使得可以有效地使用基本处理器(在算术处理装置1中,可以是VLIW处理器)的指令集架构。
图19示出了将M个微指令打包到N个VLIW指令中的状态。现在将参照图20A至图21C描述根据VLIW 1指令至VLIW 3指令的前序处理和根据VLIW N-2指令至VLIW N指令的收尾处理。
图20A至图20C是示出了根据图19所示的VLIW指令的前序处理的图。更具体地,图20A示出了根据VLIW 1指令的处理,图20B示出了根据VLIW 2指令的处理,以及图20C示出了根据VLIW 3指令的处理。
如图19所示,前序处理是用于激活流引擎2的处理并且是通过执行三个指令(即VLIW 1[出栈]、VLIW 2[出栈、执行]以及VLIW 3[出栈、执行、入栈])所实现的。
首先,如图20A所示,仅执行为VLIW 1指令的出栈指令。即,根据出栈指令执行处理P21,在处理P21中,出栈单元21从数据存储器4读出数据并且将数据写入到寄存器221和寄存器222。作为结果,将执行单元23要对其进行算术运算处理的数据输入到寄存器221和寄存器222。
接下来,如图20B所示,执行在VLIW 2指令中所包括的出栈指令和执行指令。即,根据出栈指令来执行处理P21,并且还根据执行指令来执行处理P22,在处理P22中,执行单元23对被写入到寄存器221和寄存器222的数据执行流处理,并且将生成的数据写入到寄存器24。
作为结果,将执行单元23要对其执行算术运算处理的数据输入到寄存器221和寄存器222,并且将入栈单元25要将其写入到数据存储器4的算术运算结果数据输入到寄存器24。
如图20C所示,执行在VLIW 3指令中所包括的出栈指令、执行指令以及入栈指令。根据出栈指令来执行处理P21,根据执行指令来执行处理P22,以及还根据入栈指令来执行处理P23:在处理P23中,入栈单元25将被写入到寄存器24的算术运算结果数据写入到数据存储器4。
在从以上所述的前序处理到以下参照图21所描述的收尾处理的处理中,根据可以与VLIW 3指令相同的指令(VLIW 4指令、VLIW 5指令、…)连续地执行涉及处理P21至处理P23的管道处理。
图21A至21C是示出了根据图19所示的VLIW指令的收尾处理的图。更具体地,图21A示出了根据VLIW N-2指令的处理,图21B示出了根据VLIW N-1指令的处理,以及图21C示出了根据VLIW N指令的处理。
如图19所示,收尾处理是用于停止操作中的流引擎2的处理,收尾处理与以上参照图20A至图20C所描述的前序处理相反。通过执行三个指令(即,VLIW N-2[出栈、执行、入栈]、VLIW N-1[执行、入栈]以及VLIW N[入栈])来实现收尾处理。
首先,如图21A所示,执行在VLIW N-2指令中所包括的出栈指令、执行指令以及入栈指令。VLIW N-2指令可以与以上参照图20C所描述的VLIW 3指令(即在处理P21至处理P23中连续地执行的管道处理中的指令)相同。
接下来,如图21B所示,执行在VLIW N-1指令中所包括的执行指令和入栈指令。即,因为省略了出栈指令,所以停止处理P21:在处理P21中,出栈单元21从数据存储器4读出数据并且将数据写入到寄存器221和寄存器222。作为结果,寄存器221和寄存器222变为空。
随后,如图21C所示,仅执行在VLIW N指令中所包括的入栈指令。即,因为省略了出栈指令和执行指令,所以不仅寄存器221和寄存器222变为空,而且寄存器24也变为空。
依照三个微指令(即,出栈指令、执行指令以及入栈指令)控制流引擎2仅为示例,并且无需说明,可以进行各种改变。例如,可以添加另一微指令或可以使用不同的微指令。
尽管通过示例的方式描述了进行LTE Advanced等中的矩阵算术运算处理的算术处理装置,但是本实施例不仅限于这种应用到无线通信装置的算术处理装置,而且还可以广泛地应用到各种算术处理装置。
在以上实施例中所描述的所有的示例和情况意在有助于对应用到本公开和技术的技术概念的理解,而不意在具体地限制本公开的范围。另外,本文中的这种描述不是意在指示本公开的优点和缺点。尽管详细地描述了本公开的实施例,但是将理解的是在不背离本公开的精神和范围的情况下可以进行各种改变、替换以及修改。

Claims (13)

1.一种算术处理装置,包括:
算术单元,配置成执行算术运算;
流引擎,配置成执行流处理;
指令发出单元,配置成发出指令;以及
第一先进先出缓冲器,
其中,
所述算术单元的数据总线与所述流引擎的数据总线彼此紧耦合,
所述指令发出单元将指令发出到所述算术单元以及将指令发出到所述流引擎,
所述流引擎包括:
读出电路,配置成从存储器读出数据,
执行电路,配置成对所读出的数据执行流处理;以及
写入电路,配置成将通过所述流处理所获得的算术运算结果写入到所述存储器,
所述第一先进先出缓冲器设置在所述存储器与所述读出电路之间,所述存储器经受直接存储器存取控制,以及用于控制所述读出电路的处理的第一微指令被停止,以填满所述第一先进先出缓冲器并且停止所述流引擎的管道处理。
2.根据权利要求1所述的算术处理装置,
其中,所述读出电路包括出栈单元和第一寄存器;以及
所述出栈单元从在所述存储器中所包括的并且由起始地址和流长度所指示的第一存储器部分读出数据,并且将所读出的数据写入到所述第一寄存器。
3.根据权利要求2所述的算术处理装置,
其中,所述执行电路包括执行单元和第二寄存器,以及
所述执行单元对在所述第一寄存器中所存储的数据执行流处理,并且将通过所述流处理所获得的算术运算结果存储在所述第二寄存器中。
4.根据权利要求3所述的算术处理装置,
其中,所述执行电路包括多个分层的执行单元和多个第三寄存器,所述多个第三寄存器设置在层中的所述执行单元之间。
5.根据权利要求3或4所述的算术处理装置,
其中,所述写入电路包括入栈单元,以及
所述入栈单元将在所述第二寄存器中所存储的所述算术运算结果写入到在所述存储器中所包括的并且由起始地址和流长度所指示的第二存储器部分。
6.根据权利要求5所述的算术处理装置,
其中,由所述指令发出单元发出到所述流引擎的指令是单步指令,以及
所述流引擎具有管道级,所述管道级中的每个管道级依照所述单步指令中的一个单步指令执行一个处理。
7.根据权利要求6所述的算术处理装置,
其中,参数信息被用于所述流处理中并且由单个长位长设定指令所代表。
8.根据权利要求7所述的算术处理装置,
其中,被用于所述流处理中的所述参数信息包括每个流的起始地址、每个流的流长度以及算术运算模式。
9.根据权利要求6所述的算术处理装置,还包括:
参数寄存器,将被用于所述流处理的参数信息一次性地设定在所述参数寄存器中,
其中,所述流引擎中的所述管道级中的每个管道级参考在所述参数寄存器中的所述参数信息以进行管道执行。
10.根据权利要求6所述的算术处理装置,
其中,由所述指令发出单元发出到所述流引擎的指令包括用于控制所述流引擎的对应的管道级的短位长微指令,所述指令是通过分离所述单步指令所获得的,以及
每个管道级依照对应的微指令独立地执行处理。
11.根据权利要求10所述的算术处理装置,其中,所述流处理为矩阵算术运算处理。
12.根据权利要求10所述的算术处理装置,还包括:
第二先进先出缓冲器,设置在所述写入电路与所述存储器之间,
其中,所述存储器经受直接存取存储器控制,以及用于控制所述写入电路的处理的第二微指令被停止,以清空所述第二先进先出缓冲器并且停止所述流引擎的管道处理。
13.根据权利要求10至12中任一项所述的算术处理装置,
其中,当依照超长指令字指令控制所述算术单元时,将用于控制所述流引擎中的每个管道级中的操作的微指令打包到所述超长指令字指令中。
CN201410100282.2A 2013-04-22 2014-03-18 算术处理装置 Active CN104111817B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2013089479A JP6094356B2 (ja) 2013-04-22 2013-04-22 演算処理装置
JP2013-089479 2013-04-22

Publications (2)

Publication Number Publication Date
CN104111817A CN104111817A (zh) 2014-10-22
CN104111817B true CN104111817B (zh) 2017-05-10

Family

ID=51708618

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410100282.2A Active CN104111817B (zh) 2013-04-22 2014-03-18 算术处理装置

Country Status (3)

Country Link
US (1) US9501282B2 (zh)
JP (1) JP6094356B2 (zh)
CN (1) CN104111817B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6094356B2 (ja) * 2013-04-22 2017-03-15 富士通株式会社 演算処理装置
CN106485321B (zh) * 2015-10-08 2019-02-12 上海兆芯集成电路有限公司 具有架构神经网络执行单元的处理器
CN107315715B (zh) * 2016-04-26 2020-11-03 中科寒武纪科技股份有限公司 一种用于执行矩阵加/减运算的装置和方法
CN112306558A (zh) * 2019-08-01 2021-02-02 杭州中天微系统有限公司 处理单元、处理器、处理系统、电子设备和处理方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6526430B1 (en) * 1999-10-04 2003-02-25 Texas Instruments Incorporated Reconfigurable SIMD coprocessor architecture for sum of absolute differences and symmetric filtering (scalable MAC engine for image processing)
CN1997962A (zh) * 2004-06-25 2007-07-11 皇家飞利浦电子股份有限公司 指令处理电路
CN101627367A (zh) * 2007-02-21 2010-01-13 高通股份有限公司 按需多线程多媒体处理器

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2719926B1 (fr) 1994-05-10 1996-06-07 Sgs Thomson Microelectronics Circuit électronique et procédé d'utilisation d'un coprocesseur.
JP3720371B2 (ja) * 1995-10-06 2005-11-24 アドバンスト・マイクロ・デバイシズ・インコーポレイテッド スーパースケーラープロセッサにおけるout−of−order実行のための統一化された機能オペレーションスケジューラ
JP2000207202A (ja) * 1998-10-29 2000-07-28 Pacific Design Kk 制御装置およびデ―タ処理装置
US8438208B2 (en) * 2009-06-19 2013-05-07 Oracle America, Inc. Processor and method for implementing instruction support for multiplication of large operands
JP2011034189A (ja) 2009-07-30 2011-02-17 Renesas Electronics Corp ストリームプロセッサ及びそのタスク管理方法
JP5555514B2 (ja) 2010-03-17 2014-07-23 ルネサスエレクトロニクス株式会社 プロセッサシステム
US9317482B2 (en) * 2012-10-14 2016-04-19 Microsoft Technology Licensing, Llc Universal FPGA/ASIC matrix-vector multiplication architecture
JP6094356B2 (ja) * 2013-04-22 2017-03-15 富士通株式会社 演算処理装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6526430B1 (en) * 1999-10-04 2003-02-25 Texas Instruments Incorporated Reconfigurable SIMD coprocessor architecture for sum of absolute differences and symmetric filtering (scalable MAC engine for image processing)
CN1997962A (zh) * 2004-06-25 2007-07-11 皇家飞利浦电子股份有限公司 指令处理电路
CN101627367A (zh) * 2007-02-21 2010-01-13 高通股份有限公司 按需多线程多媒体处理器

Also Published As

Publication number Publication date
CN104111817A (zh) 2014-10-22
US9501282B2 (en) 2016-11-22
JP6094356B2 (ja) 2017-03-15
JP2014215624A (ja) 2014-11-17
US20140317164A1 (en) 2014-10-23

Similar Documents

Publication Publication Date Title
US8230144B1 (en) High speed multi-threaded reduced instruction set computer (RISC) processor
CN104111817B (zh) 算术处理装置
US10778815B2 (en) Methods and systems for parsing and executing instructions to retrieve data using autonomous memory
JP5309703B2 (ja) 共有メモリの制御回路、制御方法及び制御プログラム
US20080282062A1 (en) Method and apparatus for loading data and instructions into a computer
CN116547644A (zh) 检测可编程原子事务中的无限循环
US11023277B2 (en) Scheduling of tasks in a multiprocessor device
CN103970714B (zh) 用于共享功能逻辑的设备和方法及其可重配置处理器
CN108701102A (zh) 直接存储器访问控制器、数据读取方法和数据写入方法
KR102332523B1 (ko) 연산 처리 장치 및 방법
CN116685943A (zh) 可编程原子单元中的自调度线程
WO2012131426A1 (en) Processor system with predicate register, computer system, method for managing predicates and computer program product
CN102388359A (zh) 信号保序方法和装置
CN102521042A (zh) 基于哈佛结构dsp的快速正文切换方法
CN102184090B (zh) 一种动态可重构处理器及其固定数的调用方法
CN102542525A (zh) 一种信息处理设备以及信息处理方法
JP6292324B2 (ja) 演算処理装置
US3405396A (en) Digital data processing systems
CN105468550B (zh) 一种可实现链表循环的系统及方法
US20150293766A1 (en) Processor and method
CN105637475A (zh) 并行访问方法及系统
JP2021086512A (ja) 情報処理装置
US20140351555A1 (en) Digital signal processor and method for addressing a memory in a digital signal processor
KR101191530B1 (ko) 복수의 이종 코어를 포함하는 멀티코어 프로세서 시스템 및 그 제어 방법
CN118210561A (zh) 一种fpga快速加载方法、装置、设备及介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant