CN1639690A - 半导体装置 - Google Patents

半导体装置 Download PDF

Info

Publication number
CN1639690A
CN1639690A CNA028293924A CN02829392A CN1639690A CN 1639690 A CN1639690 A CN 1639690A CN A028293924 A CNA028293924 A CN A028293924A CN 02829392 A CN02829392 A CN 02829392A CN 1639690 A CN1639690 A CN 1639690A
Authority
CN
China
Prior art keywords
mentioned
software
register
drc
instruction
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.)
Pending
Application number
CNA028293924A
Other languages
English (en)
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of CN1639690A publication Critical patent/CN1639690A/zh
Pending legal-status Critical Current

Links

Images

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/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path

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)
  • Microcomputers (AREA)
  • Stored Programmes (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

提供一种半导体装置,在安装着可动态地重新配置的电路的半导体装置中,提供维持软件的互换性而与可动态地重新配置的电路的结构无关的功能。在执行软件的同时,自动生成重新配置可自动重新配置的电路的数据和使其工作的驱动器软件,从中途置换原始程序。这样,通过维持软件的互换性,能够共用原有的软件资产,同时在各种设备中能够使用相同的软件。

Description

半导体装置
技术领域
本发明涉及安装着可动态地重新配置的电路的半导体装置的结构和该装置的使用方法。
背景技术
近年来,伴随着信息处理设备的普及和高性能化,出现了各种应用,这些应用的主流是用软件进行描述,由通用处理器来执行的方式。但是,在应用中也有需要比通用处理器更高的运算处理能力的情况,要求利用处理器进一步提高处理能力。
因此,在特定的应用中,存在着除了通用处理器之外,还通过把特殊化的专用电路安装在1个芯片上来提高处理能力的例子。在日本专利申请特开平10-4345号公报和特开平10-335462号公报中,还公开了利用可动态地重新配置的电路(Dynamically ReconfigurableCircuit,下面,称为DRC)来构成该专用电路的例子。
在这样的现有技术中,在作成应用软件时预先作成DRC重新配置数据。利用DRC重新配置数据来重新配置DRC,由此,DRC作为用于特定应用的专用电路而起作用。在由通用处理器执行的软件中,包含着DRC重新配置数据和重新配置指令。
由此,通用处理器在执行应用中重新配置DCR使之作为专用电路而起作用,由此能够提高其处理能力。
本申请的发明人如上述现有技术那样,对照利用DRC重新配置数据和驱动器软件的DRC和芯片结构预先作了准备,觉察到:在软件内描述DRC重新配置指令和DRC重新配置数据的结构中,存在着不能由DRC结构不同的芯片来执行其软件的问题。这一点使得利用DRC结构能够应用的软件范围受到了限制,产生了虽然是具有相同指令组的处理软件,但是,由于DRC的结构不同而不能利用该软件的情况。
本发明的目的是,提供利用DRC来提高处理能力,同时还能够确保软件的互换性而与DRC的结构无关的半导体集成电路装置。
发明内容
对本申请中公开的有代表性的发明的概要,简单地说明如下。
一种执行包含运算指令的软件的半导体装置,其特征在于包括:运算电路,其包含多个运算单元和多个寄存器单元,可以设定运算单元执行的运算种类、和多个运算单元与多个寄存器单元间的布线连接;以及控制电路,其基于软件,生成设定运算单元的运算种类和布线连接的设定数据、和用于使用运算电路进行与软件等价的处理的驱动器软件。
在此,所谓运算种类,包含单元运算可以执行的“或”、“与”、“异”这样的逻辑运算;加减乘除这样的算术运算;以及比较运算。利用这样的结构可以在半导体装置上生成驱动器软件,能够确保软件的互换性。而且,通过在软件执行中作成驱动器软件,用户意识不到作成驱动器软件的开销(overhead),能够使用运算电路进行高速处理。
一种执行包含运算指令的软件的半导体装置,其特征在于,包括:寄存器;运算器;运算电路,其包含多个运算单元和多个寄存器单元,可以设定运算单元执行的运算种类、和多个运算单元与多个寄存器单元之间的布线连接;存储软件的第1存储区;存储用于使用运算电路进行与软件等价的处理的驱动器软件的第2存储区;以及对所执行的软件进行控制的控制电路,软件处理重复n次,从第1次到第i次(i<n)的处理,通过使用寄存器和运算器执行从第1存储器读出的软件来进行,控制电路接受第i次处理后把所执行的软件切换成驱动器软件,由此,从第i+1次到第n次的处理,通过使用运算电路执行从第2存储区读出的驱动器软件来进行。通过把这样的软件和驱动器软件存储在不同的存储区中,控制电路对软件与驱动器软件进行切换的结构,能够确保软件的互换性。
这样的结构特别是对于重复进行多次的软件(例如,形成了循环的软件)是有效的,这样的循环在图像处理和声音处理中是经常出现的处理。
附图说明
图1为示出本发明的半导体集成电路装置的结构的框图。
图2示出DRC驱动器SW的生成和执行的定时。
图3为示出DRC结构例的框图。
图4为示出作为DRC结构要素的输入输出寄存器单元IDRC的结构例的框图。
图5为示出作为DRC结构要素的运算单元CC的结构例的框图。
图6为示出重新配置判定单元CDU的结构例的框图。
图7为示出重新配置判定单元CDU的工作的流程图。
图8(A)为通常SW的工作一览表,图8(B)为由HW/SW生成单元GU从通常SW切出的通常SW的工作一览表,图8(C)为由HW/SW生成单元GU作成的DRC驱动器SW的工作一览表,图8(D)为程序中的指令的工作一览表。
图9为示出HW/SW生成单元GU的工作的流程图。
图10为CDFG的例子。
图11为进行了压缩处理的CDFG的例子。
图12为使用ALAP(尽可能晚的)算法进行了编程的CDFG的例子。
图13为还使用ALAP(尽可能晚的)算法进行了编程的CDFG的例子。
图14为示出本发明的半导体集成电路装置的不同结构的框图。
图15为示出本发明的半导体集成电路装置的又一个不同结构的框图。
具体实施方式
下面,按照附图详细地说明本发明的有代表性的实施方式。再有,下面,相同的附图标记表示相同或类似的部件。
本发明中不使用DRC,从由通用处理器执行的应用软件(下面,把这样的软件称为“通常SW”)中,自动生成用于使应用软件的一部分由DRC执行的DRC驱动器软件(下面,把这样的软件称为“DRC驱动器SW”),通用处理器通过把通常SW的一部分置换成DRC驱动器SW并加以执行来提高处理能力。
使用图8(A)-(D),说明通常SW与DRC驱动器SW的关系。图8(A)的例子是高速付里叶变换程序的一部分。高速付里叶变换是在多媒体处理中经常使用的处理。图8(A)的程序通过通用处理器的指令组来描述。程序中各指令的意义示于图8(D)。图8中使用的指令组是一个例子,本发明不限定于该指令组,这一点从下面的说明中可清楚地看到。
本实施例中,使DRC执行通常SW中重复执行的软件部分(循环)。这是因为可以认为,由于在通常SW的执行中自动生成DRC驱动器SW,所以作到使DRC执行被多次执行的软件部分是效率高的。在图8(A)的例子中,从第4行到第18行的程序为其对象(图8(B))。
本发明中,基于图8(B)的通常SW,生成DRC重新配置数据和DRC驱动器SW(图8(C))。DRC重新配置数据是用于设定DRC的数据,以使DRC执行按照图8(B)的程序执行的运算。此外,DRC驱动器SW是这样一种程序,即,用于执行在通常SW的程序中用DRC不能执行的指令,把数据从通用处理器输入到DRC,把由DRC执行的结果返回到通用处理器。因此,通用处理器通过执行图8(C)使用DRC执行运算来代替使用寄存器GR和运算器ALU执行图8(B),能够提高处理能力。
图1示出本发明的LSI芯片100的结构。LSI芯片100由总线状态控制器BSC、直接存储器存取控制器DMAC、芯片上存储器DCM、DRC驱动器SW存储存储器DSM、指令超高速缓存ICH、数据超高速缓存DCH、超高速缓存控制单元CCN、和CPU 101构式。CPU 101由DRC控制单元102、指令缓冲器IBF、取指令单元IFU、选择器SEL、指令译码器IDC、通用寄存器GR、运算器ALU、和DRC构成。DRC控制单元102由重新配置判定单元CPU、和硬件/软件生成单元GU(下面,描述为HW/SW生成单元)构成。
CPU 101执行的指令存储在指令超高速缓存ICH中,根据取指令单元IFU的指令装入信号把存储在指令超高速缓存ICH内的指令传送到指令缓冲器IBF。同时,重新配置判定单元CDU总在监视从指令超高速缓存ICH朝向指令缓冲器IBF传送的指令。
重新配置判定单元CDU在图8(A)的例子中检测有条件跳转指令BF,基于该指令作为利用DRC执行的、成为候补的程序切出图8(B)所示的软件部分,并进行存储。当确定用DRC执行的软件部分时,重新配置判定单元CDU对于HW/SW生成单元GU进行指示,作成DRC重新配置数据、DRC重新配置、和作成DRC驱动器SW。
HW/SW生成单元GU从已切出的程序生成DRC重新配置数据,进行DRC的重新配置。还生成用于利用已重新配置的DRC的DRC驱动器SW,把所生成的DRC驱动器SW存储在驱动器SW存储存储器DSM中。当这些处理结束时,HW/SW生成单元GU在把结束通知给重新配置判定单元CDU的同时,通知DRC驱动器SW被存储的起始地址。
再有,通常SW一般存储在芯片上存储器OCM或外部存储器芯片EXTM中。
CPU 101的程序的执行,如下述那样。通过图8的例子加以说明。最初,照原样执行图8(A)的通常SW。在从HW/SW生成单元GU接受了结束通知之后,当重新配置判定单元CDU确认:从指令超高速缓存ICH传送到指令缓冲器IBF的通常SW的在执行中的指令、一直到被置换成DRC驱动器SW的程序的有条件跳转指令(即与图8(A)的第18行相当的、图8(B)的第15行)都进行了处理的情况时,就通过取指令单元IFU切换选择器SEL,把输入到指令译码器IDC的指令从指令缓冲器IBF切换到判定单元CDU。接着,把将有条件跳转指令的跳转目的地址变换成存储DRC驱动器SW的起始地址的指令,通过选择器SEL输出到指令译码器IDC。在下一个CPU时钟周期中,切换判定单元CDU通过取指令单元IFU切换选择器SEL,把输入到指令译码器IDC的指令从判定单元CDU切换到指令缓冲器IBF。由此,以后就执行DRC驱动器SW。DRC驱动器的最后指令是朝向存储着已切出的通常SW的下一个指令的地址的无条件跳转指令(图8(C)第15行),通过执行该指令返回到执行通常SW。
在此,超高速缓存控制器CCN在接受指令译码器IDC的执行后,进行朝向指令超高速缓存ICH的指令的存储。超高速缓存控制器CCN的一个特征是,构成为除了对于作为处理器总线PRCB上的模块的芯片上存储器OCM、直接存储器存取控制器DMA、总线控制器BSC(朝向外部存储器芯片EXTM的存取时)之外,对于驱动器SW存储存储器DSM也可以执行存储器存取。
图2示出DRC驱动器SW的生成和执行的定时。
首先,执行通常SW,在产生了从存储在取指令单元IFU内的程序计数器中的当前执行中的指令的地址朝向以前的地址的跳转时(图8(A)第18行),重新配置判定单元CDU临时确定在通常SW中存在着循环。
重新配置判定单元CDU在以后的执行中,取得并存储从指令超高速缓存ICH到指令缓冲器IBF进行装入的指令、即图8(A)第4行-第18行的指令。在再一次返回到利用有条件跳转指令存储的起始指令时,判定为所存储的指令形成了循环,正式确定利用DRC。
HW/SW生成单元GU在第3次循环中,作成DRC重新配置数据,作成DRC驱动器SW,并重新配置DRC。由于在第3次循环中可以利用DRC,所以CPU 101通过第4次以后的循环执行DRC驱动器SW面作到利用DRC进行运算,来代替运算单元ALU的运算。再有,在第3次循环的执行中DRC的重新配置没有结束时,CPU 101一直到包含DRC的重新配置结束的瞬间的循环的最后都执行通常SW。
接着,使用图3-图5,详细地说明DRC的结构。图3示出DRC的内部结构。DRC由:输入输出寄存器单元IORC;运算单元CC;朝向输入输出寄存器单元IORC的数据输入端口200;寄存器指定输入端口201;单元输入线203a、203b、203c;DRC的数据输出端口202;来自各单元的单元输出线204a、204b;布线区205;以及布线程序元件206构成。布线程序元件206由用于确定布线区205中的布线相互间的接线的开关元件、和用于存储这些开关元件的通/断状态的未图示的存储元件(例如,SRAM、快速存储器等)构成。
在向DRC输入的数据时,把寄存器指定信号从指令译码器IDC输入到寄存器指定输入端口201,选择一个输入输出寄存器单元IORC。数据从数据输入端口200输入,只输入到所选择的输入输出寄存器单元IORC。此外,在输出来自DRC的数据时,寄存器指定信号从指令译码器IDC输入到寄存器指定输入端口201。由此,切换输出选择器OSEL,选择一个输入输出寄存器单元IORC的输出。数据从单元输出线204a进入输出选择器OSEL,从数据输出端口202只输出所选择的数据。
图4示出图3的输入输出寄存器单元IORC的结构。输入输出寄存器单元IORC由输入选择器ISEL、和单元寄存器CR构成。输入选择器ISEL根据来自寄存器指定输入端口201的输入,对于来自布线的单元输入线203a或来自数据输入端口200的输入进行切换。把通过输入选择器ISEL输入的数据保持在单元寄存器CR中。该单元寄CR与时钟输入301同步地工作,由复位输入302进行复位。再有,图3中省略了时钟和复位的布线,但是,它们与全部的输入输出寄存器单元IORC和运算单元CC连接着。在单元寄存器CR中保持的数据从单元输出线204a输出到外部。
再有,本实施例中,数据以8比特为单位进行输入输出,但不限定于该大小。
图5示出图3的运算单元CC的结构。运算单元CC由单元运算单元CALU、触发器FF、和运算程序单元400构成。单元运算单元CALU具有与CPU内的ALU相同的功能,利用运算程序单元400设定使用哪一个运算功能。运算程序单元400从单元运算单元CALU可以执行的“或”、“与”、“异”这样的逻辑运算;加减乘除这样的算术运算;以及比较运算中设定单元运算单元CALU执行的运算。
这样,通过运算单元CC的运算程序单元400的设定能够确定运算单元CC的运算内容。此外,通过布线程序单元206的设定能够设定把什么样的数据输入到输入输出寄存器单元IORC和运算单元CC,还能够确定把输入输出寄存器单元IORC的数据或运算单元CC的运算结果输出到哪里。这样,DRC重新配置数据包含运算程序单元400的设定值和布线程序单元206的设定值,能够实现所希望的运算。
图6示出重新配置判定单元CDU的结构,图7示出重新配置判定单元CDU的工作。重新配置判定单元CDU由跳转目的地址存储缓冲器BAB、循环计数器LC、指令地址判定单元IADU、DRC状态寄存器DSR、通常SW暂时存储缓冲器TBF、和跳转控制器BCL构成。而且,DRC状态寄存器DSR由表示HW/SW生成单元GU的状态的部分、存储朝向DRC驱动器SW的跳转地址的部分、和存储置换成DRC驱动器SW的通常SW的下一个指令所存在的地址的部分等这三个部分构成。
下面,就图7说明重新配置判定单元CDU的工作。首先,把从指令超高速缓存ICH朝向指令缓冲器IBF发送的指令取入到指令地址判定单元IADU(500)。指令地址判定单元IADU取出取指令单元IFU中的程序计数器PC内的地址,判定该当前执行中的指令的地址是否与驱动器SW存储存储器DSM的地址区相当(501)。
在相当时,意味着当前处于执行DRC驱动器SW中。此时,如果循环计数器LC为0以外的值(502),则由于指令是DRC驱动器SW第1行的指令(即,图8(C)第1行的MOV指令),所以把循环计数器LC复位成0,跳转控制器BCL使选择器SEL切换到指令缓冲器IBF侧。循环计数器LC为0时,跳转控制器就什么也不做。循环计数器LC中保持着在通常SW中连续执行的循环次数,由复位信号进行复位。
在不相当时,意味着当前处于执行通常SW中,因此,指令地址判定单元IADU判定指令是否是有条件跳转指令。如果不是有条件跳转指令,而且此时循环计数器LC的值为1,则结果是正在执行第2次循环。因此,为了取得通常SW(参照图2),指令地址判定单元IADU把指令存储在通常SW暂时存储缓冲器TBF中。
在步骤505中,指令地址判定单元IADU检验DRC状态寄存器DSR。DRC状态寄存器DSR由表示DRC状态的第1寄存器、存储向DRC驱动器SW跳转的跳转地址(例如,存储着图8(C)第1行的MOV指令的地址)的第2寄存器、和存储切换到DRC驱动器SW的通常SW的下一个地址(例如,图8(A)的L003:(第19行))的第3地址构成。第1寄存器中存储着“不能利用DRC”、“利用DRC的准备中”、和“利用DRC的准备结束”这三个状态的任一个。在接受CPU复位后,把第1寄存器更新为“不能利用DRC”的值,在依据HW/SW生成单元GU的利用DRC的准备开始时,将其更新为“利用DRC的准备中”的值,在利用DRC的准备结束时,将其更新为“利用DRC的准备结束”的值。在利用DRC的准备结束时,更新第2地址,在向GU通知工作开始时,更新第3地址。
如果DRC状态寄存器DSR的第1寄存器为“利用DRC的准备结束”的值,则跳转控制器BCL通过取指令单元IFU把选择器SEL切换到DRC控制单元CDU,使来自重新配置判写单元CDU的输出与指令译码器IDC连接。其后,发送把跳转指令的跳转目的地址变更成驱动器SW存储存储器DSM内的DRC驱动器SW的起始地址的跳转指令。
如果DRC状态寄存器DSR的第1寄存器是“利用DRC的准备结束”的值以外的值,则进行循环是否存在的判断(图2中的临时确定处理)。首先,指令地址判定单元IADU把当前的程序计数器PC与跳转目的地址加以比较(513)。当跳转目的地址那一方大时,由于循环不存在故把循环计数器LC定为0(514)。当程序计数器PC这一方大时,指令地址判定单元IADU进而把存储在跳转地址缓冲器BAB中的跳转目的地址与跳转指令的跳转目的地加以比较。跳转地址缓冲器BAB是在执行了跳转指令时,修改并保存其跳转目的地址的缓冲器。因此,如果跳转目的地与跳转地址缓冲器BAB的地址相同,则确定循环存在,跳转到生成DRC重新配置数据和DRC驱动器SW的处理。具体地说,如果在循环计数值上加1(509)其值为2的话(510),则指令地址判定单元IADU把跳转指令存储在通常SW暂时存储缓冲器TBF中,把将当前的PC值进1以后的值(例如,图8(A)的L003:(第19行)的地址)代入DRC状态寄存器DSR的第3寄存器中,对HW/SW生成单元GU发送利用DRC的准备的开始信号(511)。
另一方面,如果跳转目的地与跳转地址缓冲器BAB的地址不同,新循环就有存在的可能性。因此,指令地址判定单元IADU把1代入循环计数器LC,对于通常SW暂时存储缓冲器TBF进行汇总清零。
基于图8的程序例,说明上述工作如下。
在执行第1次循环中,循环计数器LC为0,图8(A)第1行-第17行的指令在图7的流程中什么也不执行。当取入第18行的有条件跳转指令BF时,在把循环计数器LC定为1的同时(508),在跳转地址缓冲器BAB中修改跳转目的地址(第4行)。
在执行第2次循环中,由于循环计数器LC为1,所以把第5行-第17行的各指令存储在通常SW暂时存储缓冲器TBF中(504)。当取入第18行的有条件跳转指令BF时,由于其跳转目的地址与存储在跳转地址缓冲器BAB中的地址一致(507),所以把循环计数器LC定为2(509),在把有条件跳转指令BF发送到通常SW暂时存储缓冲器TBF的同时,使HW/SW生成单元GU开始利用DRC的准备(510、511)。
在执行第3次循环中,由于循环计数器LC为2,所以第5行-第17行的各指令在图7的流程中什么也不执行。如果取入第18行的有条件跳转指令BF、且DRC为可以利用的状态,则通过把有条件跳转指令的跳转目的地址变更成DRC驱动器SW的起始地址(图8(C)第1行),以后的循环利用DRC来进行。
在DRC驱动器SW的执行中,通过JMP指令(图8(C)第15行)跳转到通常SW的L003(图8(A)第19行),恢复执行通常SW。
接着,以图9的流程图为基础,说明HW/SW生成单元GU的工作。HW/SW生成单元GU在接受来自重新配置判定单元CDU的指令从通常SW暂时存储缓冲器TBF取得通常SW(图8(B))的同时,把“利用DRC的准备中”的值输入到DRC状态寄存器DSR的第1寄存器中(600)。
HW/SW生成单元GU首先从已取得的通常SW作成图10所示那样的CDFG(控制数据流程图)(601)。在CDFG中,用结(指令)表示输入的通常SW中的各指令,用尖(箭头)表示指令操作数的数据依赖关系。再有,图10的框中的括孤内的数字表示图8(B)的对应行数。
图10中,从图8(B)的通常SW照原样作成CDFG。在依赖关系方面,有“控制上的依赖关系”和“数据上的依赖关系”这两种。所谓“控制上的依赖关系”是,例如,用DT指令来设定寄存器RO的值,根据寄存器RO的值执行有条件跳转指令BF这样的依赖关系。该依赖关系依赖于通用处理器的指令组,并且需要预先登录依赖关系。“数据上的依赖关系”是,例如,使用通过MOV指令传送的数据按照SUB进行运算这样的依赖关系。因此,需要根据程序的内容进行确定。把操作数中与其它指令的操作数没有依赖关系的操作数配置在最高位,根据依赖关系而配置在较低位。具体地说,“数据上的依赖关系”如下所述地确定。
图8(B)第2行-第4行、第10行指令的操作数由于与比其靠前的指令的操作数没有依赖关系,所以位于同一列上。所谓“MOV@R6,R2”,意思是“把存储在寄存器R6指示的地址中的数据传送到寄存器R2”。即,由于操作数右侧的值包含@的MOV指令是从外部把数据读入寄存器这样的指令,而且带有@的操作数是第1次出现在图8(B)内,所以该操作数作为“数据上的依赖关系”位于最高位。第5行指令“MUL”由于使用寄存器R2、R3的数据,所以与第3行-第4行指令有依赖关系。由于“MUL”的执行结果被输入到寄存器MACL中,所以第7行的指令是用于把寄存器MACL的数据传送到寄存器R7的指令。
对下下面的程序也同样地确定依赖关系,但是,在确定尖时需要注意:存在着即使是同一个名称的寄存器其内容也已更新了的情况。例如,第8行“SUB R7,R1”的意思是,“把寄存器R7的数据与寄存器R1的数据之差存储在寄存器R1中”。由于通过执行第8行指令而更新了数据,所以第9行“MOV R1,@R5”与第8行指令有依赖关系,但是,与第6行“MOV@R4,R1”不存在依赖关系。
这样,通过对于要注意的指令与在其以前执行的指令中在操作数中具有共同的寄存器名称的指令来设定依赖关系,能够作为CDFG。但是,当存在着多个具有共同的寄存器名称的指令时,考虑到寄存器的数据被更新的可能性,在与紧接着之前执行的指令之间来设定依赖关系。
把图10的CDFG压缩后,是图11的CDFG。通过压缩使DRC的电路结构简单化了,具有能够高速地进行使用DRC的运算处理这样的效果。
第1压缩方式是把701的两个指令(图10)压缩成801的1个指令(图11)。STS指令是一切运算处理都不进行只在寄存器间传送数据的指令。虽然在使用通用处理器进行处理时这样的传送在指令组的结构上成为需要的指令中存在,但是,在使用DRC进行处理时由于把存储着需要的数据的寄存器与运算单元直接连接起来即可,所以不需要在DRC结构中反映这样的指令。通过把这样的、在寄存器间传送数据的指令作为预先作为压缩对象的指令事先进行登录,就能够执行第一压缩。
第2压缩方式是把702的4个指令(图10)压缩成802的3个指令(图11)。由于在通用处理器中使用时间序列进行处理,所以能够产生即使寄存器的名称不同其内容也是相同的这样的情况。在用DRC进行处理时,由于把存储着需要的数据的寄存器与运算单元连接起来即可,所以不需要在DRC结构中反映这样的寄存器名称的不同。因此,对于运算指令(图8的例子中,MUL指令、ADD指令、SUB指令),将其寄存器的数据内容加以比较,作到当即使寄存器不同也存储着相同的数据时,进行指令压缩。例如,关于第8行的SUB指令和第11行的ADD指令的操作数,共同使用寄存器R7,而使用不同的寄存器R1、寄存器R3。但是,当分别探索数据上的依赖关系时,任一个寄存器中存储着的内容都是“寄存器R4指示的地址中存储着的数据”,所以,可以进行上述那样的压缩。
接着,HW/SW生成单元GU对于在步骤601中作成的图11所示CDFG的各结编制时间表,即,考虑到硬件资源的制约以后分配执行各结的时钟周期(602)。
作为该编制时间表的一种方法,图12和图13示出对于图11的CDFG并用ALAP算法和ASAP算法的应用例。ALAP(尽可能晚的)算法是从后边装入能够同时执行的指令来编制时间表。不能同时执行的指令的第1种是,具有相互依赖关系的指令。第2种是,在DRC的外部进行存取的指令在其周期内只能执行1个指令。该结果为图12。
进而,与图12的编制时间表不同,图13为应用了从前边装入能够同时执行的指令的ASAP(尽可能快的)算法的例子。通过尽可能在前面装入执行指令的周期,在处理时间方面产生裕量。
能够用1个时钟周期来执行被包含在1个周期内的指令,能够用周期1-8这8个时钟周期来执行全部的指令。
HW/SW生成单元GU从图13所示编制了时间表的CDFG生成DRC重新配置数据。具体地说明如下。把结部分分配给输入输出寄存器单元IORC和运算单元CC。对于MOV指令分配输入输出寄存器单元IORC,对于运算指令分配运算单元CC。根据运算指令的内容来作成运算程序单元400的设定数据,该数据进行运算单元运算内容的设定。此外,由于CDFG的尖表示数据的流动,所以根据CDFG的尖的连接关系来作成布线程序单元206的设定数据,以便输入输出寄存器单元IORC和运算单元CC相互布线(603)。该运算程序单元400的设定数据和布线程序单元206的设定数据是DRC重新配置数据。
HW/SW生成单元GU根据DRC重新配置数据来重新配置DRC的运算程序单元303和布线程序单元206(604)。与此并行,作成DRC驱动器SW(605)。
说明DRC驱动器SW的作成方法。从图13的CDFG来作成图8(C)所示的DRC驱动器SW。
首先,需要把存储在通用寄存器GR中的数据移动到DRC的输入输出寄存器单元IORC。例如,图8(B)第3行的“MOV@R6,R3”这样的指令是“把存储在通用寄存器R6指示的地址中的数据传送到通用寄存器R3中”的指令。为了用DRC来执行该指令,首先需要把通用寄存器R6的数据移动到DRC中。因此,设置图8(C)第1行“MOV R6 dR6”这样的指令。该指令的意思是“把存储在通用寄存器R6中的数据(地址)传送到DRC的输入输出寄存器单元dR6中”。这样的指令设置在图8(C)第1行-第3行中。
其后,在图13的各结中,把由DRC以外执行的指令设置在DRC驱动器SW中。图8(C)第5行-第12行的指令分别与被包含在图13周期1-8中的结对应。
图8(C)第5行的“MOV@r6,dR3”是“把存储在输入输出寄存器单元dR6指示的地址中的数据传送到输入输出寄存器单元dR3中”的指令,该指令与图13的周期1的“MOV@R6,R3”对应。下面是相同的,但是,例如在周期3中存在着“MOV@R4,R1”、“MUL”这两个结,且由于后者是DRC执行的指令,所以后者不出现在DRC驱动器SW中。此外,周期6中只存在“ADD”这样的,DRC执行的指令。此时,作为产生了无效周期而附加无操作指令(NOP)。
再有,对于运算指令为了用DRC执行,运算中所需要的数据不存储在通用寄存器GR中,而是存储在DRC的输入输出寄存器单元IORC中。因此,需要把运算执行后的值返回到通用寄存器GR中。因此,设置了图8(C)第13行和第14行的指令。例如,“MOV dR5,R5”是“把存储在输入输出寄存器单元dR5中的数据传送到通用寄存器R5中”的指令。
最后,为了恢复到执行通常SW,设置朝向通常SW中有条件跳转指令的下一个地址的无条件跳转指令(JMP)(图8(C)第15行)。该无条件跳转指令的跳转定为存储在DRC状态寄存器的第3寄存器中的地址。
这样,能够以图13的已编制时间表的CDFG为基础生成图8(C)的DRC驱动器SW。当排除超高速缓存的丢失和中断等外部主要原因来考虑时,在执行基本的通常SW的一次循环中需要占用14个周期,与此不同,用8个周期就能够实现循环的核心部分(图8(C)的第5行-第12行)。
把作成的DRC驱动器SW存储在驱动器SW存储存储器DSM中。关于存储的部位,第一次定为驱动器SW存储存储器DSW的起始地址,以后,在上次写入的部分的后面写入。在写入的区域不充分时,做到再一次从驱动器SW存储存储器DSM的起始地址写入。
当一直到步骤605结束时,HW/SW生成单元GU把“利用DRC的准备结束”的值写入DRC状态寄存器DSR的第1寄存器中,把存储着在步骤605中作成的DRC驱动器SW的存储器的起始地址写入DRC状态寄存器DSR的第2寄存器中(606)。
通过使HW/SW生成单元GU按照上述流程工作,在执行程序时能够自动地作成DRC重新配置数据并进行重新配置、和作成DRC驱动器SW。
使用图14,说明图1结构的变形例。该实施例是把图1所示的第1实施例的DRC、重新配置判写单元CDU、HW/SW生成单元GU与CPU101分离开来的例子。具体地说,把DRC与处理器总线PRCB连接,重新配置判定单元CDU直接控制选择器SEL的控制。此外,在选择器SEL之后配置有指令缓冲器IBF。
与图1结构的工作的不同之处在于,对DRC的输入输出寄存器单元IORC的存取通过指定地址来进行。由于DRC与驱动器总线PRC13直接连接着,所以例如,图8(C)DRC驱动器SW的第1行[MOV R6 dR6]等那样的、对于DRC的输入输出寄存器单元IORC进行存取的指令不是直接指定输入输出寄存器单元IORC的地址,而是间接指定。例如,成为[MOV R6@R12]那样的地址指定。该指令的意思是,把通用寄存器R6的数据传送到由通用寄存器R12指示的输入输出寄存器单元IORC中。
在该变形例中,由于把DRC配置在CPU的外部,所以与图1的结构相比较能够增大DRC的尺寸。此外,由于DRC、重新配置判定单元CDU、和HW/SW生成单元GU与CPU 101分离开来,所以变更设计较为容易。而且,CPU以外的模块也可以利用DRC。例如,能够通过直接存储器存取控制器DMA对于DRC上的输入输出寄存器单元IORC进行存取而利用DRC。此时,也可以利用DRC和CPU101同时执行不同的处理。
使用图15,说明又一个与图1结构不同的变形例。在该结构例中不同之处在于,用DRC控制专用处理器DCP来实现图1所示的DRC控制单元102的功能。在本结构例中,由于把DRC控制单元102的功能安装在DRC控制专用处理器DCP内,所以用软件来实现该处理器内部的重新配置判定单元CDU和HW/SW生成单元GU的工作。因此,只通过改换DRC控制专用处理器DCP的软件就能够容易地更新DRC控制单元102,利用本技术的LSI芯片即使是在制造后也能够提高本LSI的性能。当然,也可以把图13的结构与图14的结构组合起来加以实施。
而且,本发明可有各种变形。例如,也可以预备地执行要执行的通常SW,以便预先登录DRC重新配置数据和DRC驱动器SW。此时,由于在执行通常SW中不需要生成DRC重新配置数据和DRC驱动器SW的处理了,所以从第2次循环起就可以使用DRC来进行运算处理。
利用本发明的结构,在安装着处理器和DRC的半导体装置中,能够从软件自动生成DRC重新配置数据和DRC驱动器SW。在通过这样的结构利用DRC时,也不需要描述与DRC对照的专用的程序了,能够保持软件的互换性。这样,通过维持软件的互换性,能够共用原有的软件资产,同时,只要是靠相同的指令组起作用的处理器,至少就能够使用相同的软件。
工业上的利用可能性
本发明特别是对于重复进行多次的软件(例如,形成了循环的软件)是有效的,这样的循环在图像处理和声音处理中是经常出现的处理。

Claims (12)

1.一种半导体装置,是执行包含运算指令的软件的半导体装置,其特征在于包括:
寄存器;
运算器;
运算电路,其包含多个运算单元和多个寄存器单元,可以设定上述运算单元执行的运算种类、和上述多个运算单元与上述多个寄存器单元间的布线连接;以及
控制电路,其基于上述软件,生成设定上述运算单元的上述运算种类和上述布线连接的设定数据、和用于使用上述运算电路进行与上述软件等价的处理的驱动器软件。
2.根据权利要求1所述的半导体装置,其特征在于:上述控制电路构成为,使得在使用上述寄存器和上述运算器来执行上述软件的期间中,生成上述设定数据和上述驱动器软件。
3.根据权利要求2所述的半导体装置,其特征在于:上述软件处理重复n次,
从第1次到第i次(i<n)的处理,通过使用上述寄存器和上述运算器执行上述软件来进行,
从第i+1次到第n次的处理,通过使用上述运算电路执行上述驱动器软件来进行。
4.根据权利要求1所述的半导体装置,其特征在于:上述驱动器软件至少包含从上述寄存器向上述运算电路的上述寄存器单元发出的数据传送指令、和从上述运算电路的上述寄存器单元向上述寄存器发出的数据传送指令。
5.根据权利要求1所述的半导体装置,其特征在于:控制电路通过执行生成上述设定数据和上述驱动器软件的软件,来生成上述设定数据和上述驱动器软件。
6.根据权利要求1所述的半导体装置,其特征在于:上述运算电路与总线连接。
7.根据权利要求1所述的半导体装置,其特征在于:为了执行上述软件所需要的时钟周期数比为了执行上述驱动器软件所需要的时钟周期数少。
8.一种半导体装置,是执行包含运算指令的软件的半导体装置,其特征在于包括:
寄存器;
运算器;
运算电路,其包含多个运算单元和多个寄存器单元,可以设定上述运算单元执行的运算种类、和上述多个运算单元与上述多个寄存器单元间的布线连接;
存储上述软件的第1存储区;
存储用于使用上述运算电路进行与上述软件等价的处理的驱动器软件的第2存储区;以及
对所执行的软件进行控制的控制电路,
上述软件处理重复n次,
从第1次到第i次(i<n)的处理,通过使用上述寄存器和上述运算器执行从上述第1存储区读出的上述软件来进行,
上述控制电路接受上述第i次处理,把所执行的软件切换成上述驱动器软件,由此,从第i+1次到第n次的处理,通过使用上述运算电路执行从上述第2存储区读出的上述驱动器软件来进行。
9.根据权利要求8所述的半导体装置,其特征在于:上述控制电路,基于上述软件,生成设定上述运算单元的上述运算种类和上述布线连接的设定数据、和用于使用上述运算电路进行与上述软件等价的处理的驱动器软件。
10.根据权利要求8所述的半导体装置,其特征在于:
上述控制电路,具有设定运算电路的上述运算种类和上述布线连接的设定数据,
上述运算电路,在执行上述软件的期间中,利用上述设定数据来设定上述运算单元的上述运算种类和上述布线连接。
11.根据权利要求8所述的半导体装置,其特征在于:上述驱动器软件至少包含从上述寄存器向上述运算电路的上述寄存器单元发出的数据传送指令、和从上述运算电路的上述寄存器单元向上述寄存器发出的数据传送指令。
12.根据权利要求8所述的半导体装置,其特征在于:为了执行上述驱动器软件所需要的时钟周期数比为了执行上述软件所需要的时钟周期数少。
CNA028293924A 2002-09-13 2002-09-13 半导体装置 Pending CN1639690A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2002/009437 WO2004025468A1 (ja) 2002-09-13 2002-09-13 半導体装置

Publications (1)

Publication Number Publication Date
CN1639690A true CN1639690A (zh) 2005-07-13

Family

ID=31986105

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA028293924A Pending CN1639690A (zh) 2002-09-13 2002-09-13 半导体装置

Country Status (6)

Country Link
US (1) US20050272197A1 (zh)
EP (1) EP1550950A4 (zh)
JP (1) JPWO2004025468A1 (zh)
CN (1) CN1639690A (zh)
TW (1) TWI249130B (zh)
WO (1) WO2004025468A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4594666B2 (ja) * 2004-07-12 2010-12-08 富士通株式会社 再構成可能な演算装置
JP5617282B2 (ja) * 2010-03-09 2014-11-05 富士通セミコンダクター株式会社 データ処理システム
JP5971214B2 (ja) * 2013-08-16 2016-08-17 富士ゼロックス株式会社 データ処理装置及びデータ処理プログラム
JP6713410B2 (ja) * 2016-11-21 2020-06-24 日立オートモティブシステムズ株式会社 電子制御装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5752035A (en) * 1995-04-05 1998-05-12 Xilinx, Inc. Method for compiling and executing programs for reprogrammable instruction set accelerator
US6112020A (en) * 1996-10-31 2000-08-29 Altera Corporation Apparatus and method for generating configuration and test files for programmable logic devices
EP1059580A1 (de) * 1999-06-10 2000-12-13 Siemens Aktiengesellschaft Programmgesteuerte Einheit
JP3678270B2 (ja) * 1999-08-25 2005-08-03 富士ゼロックス株式会社 情報処理システムおよび情報処理方法
US6438737B1 (en) * 2000-02-15 2002-08-20 Intel Corporation Reconfigurable logic for a computer
JP3636986B2 (ja) * 2000-12-06 2005-04-06 松下電器産業株式会社 半導体集積回路
US6766406B1 (en) * 2001-10-08 2004-07-20 Lsi Logic Corporation Field programmable universal serial bus application specific integrated circuit and method of operation thereof
JP3940668B2 (ja) * 2002-12-05 2007-07-04 株式会社東芝 論理回路設計方法、論理回路設計プログラムおよび論理回路設計装置
FR2850768B1 (fr) * 2003-02-03 2005-11-18 St Microelectronics Sa Dispositif electronique configurable a granularite mixte

Also Published As

Publication number Publication date
TW200406701A (en) 2004-05-01
WO2004025468A1 (ja) 2004-03-25
JPWO2004025468A1 (ja) 2006-01-12
EP1550950A1 (en) 2005-07-06
TWI249130B (en) 2006-02-11
US20050272197A1 (en) 2005-12-08
EP1550950A4 (en) 2007-03-07

Similar Documents

Publication Publication Date Title
CN1308825C (zh) 用于在smt处理器中进行cpi负载平衡的系统和方法
Noguera et al. Multitasking on reconfigurable architectures: microarchitecture support and dynamic scheduling
CN1321270A (zh) 程序产品及数据处理系统
CN1121014C (zh) 具有risc结构的八位微控制器
CN1147794C (zh) 具有静态转移预测支持的去耦取指令-执行引擎
US20060026578A1 (en) Programmable processor architecture hirarchical compilation
CN1292343C (zh) 处理器及处理管线中例外反应的装置与方法
CN1601476A (zh) 用于smt处理器上的cpi调度的系统和方法
CN1720495A (zh) 基于软件的微处理器功率损耗控制
CN1653446A (zh) 具有可配置执行单元的高性能混合处理器
CN1655118A (zh) 处理器和编译器
CN1342940A (zh) 到一个共享的协处理器资源的多个逻辑接口
CN1834899A (zh) 使浮点格式实现指令级规格的设备及方法
CN1656445A (zh) 对宽存储器访问
CN1637737A (zh) 具有配置初始化功能的内电路配置结构
Ouyang et al. Active SSD design for energy-efficiency improvement of web-scale data analysis
CN1142485C (zh) 流水线控制相关延迟消除方法
US20050015573A1 (en) Digital architecture for reconfigurable computing in digital signal processing
CN1637736A (zh) 具有非挥发性配置储存装置的内电路配置结构
WO2002010994A1 (en) A data processor
CN1639690A (zh) 半导体装置
CN1148656C (zh) 面向线程的调试
CN1206145A (zh) 带有流水线处理电路的信号处理器及其方法
CN1144124C (zh) 程序执行方法及利用该方法的装置
CN1860436A (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
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication