CN109716318A - 配置硬件在运行时期间多种模式下操作的装置和方法 - Google Patents

配置硬件在运行时期间多种模式下操作的装置和方法 Download PDF

Info

Publication number
CN109716318A
CN109716318A CN201780056342.7A CN201780056342A CN109716318A CN 109716318 A CN109716318 A CN 109716318A CN 201780056342 A CN201780056342 A CN 201780056342A CN 109716318 A CN109716318 A CN 109716318A
Authority
CN
China
Prior art keywords
configurable
hardware cell
interconnection structure
configuration
cell
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
Application number
CN201780056342.7A
Other languages
English (en)
Other versions
CN109716318B (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN109716318A publication Critical patent/CN109716318A/zh
Application granted granted Critical
Publication of CN109716318B publication Critical patent/CN109716318B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7871Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7885Runtime interface, e.g. data exchange, runtime control
    • G06F15/7892Reconfigurable logic embedded in CPU, e.g. reconfigurable unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Logic Circuits (AREA)

Abstract

提供了一种配置硬件在运行时期间多种操作模式下操作的装置和方法,包括多个可配置硬件单元,各自具有用于接收操作数的多个操作数输入、用于输出结果的多个输出、以及用于接收至少一个硬件单元配置信号的至少一个硬件单元配置输入。还包括耦合在所述可配置硬件单元之间的可配置互连结构。所述可配置互连结构包括多个结构数据输入和结构数据输出,以及用于接收结构选择信号的结构选择输入。所述可配置互连结构用于根据所述结构选择信号互连所述可配置硬件单元。一种配置存储器,用于包含用于在一种或多种操作模式下操作所述装置并且用于在运行时操作期间配置所述硬件的至少一个配置位模式。

Description

配置硬件在运行时期间多种模式下操作的装置和方法
相关申请案交叉申请
本申请要求于2017年9月13日递交的发明名称为“配置硬件在运行时期间多种模式下操作的装置和方法”(APPARATUS AND METHOD FOR CONFIGURING HARDWARE TOOPERATE IN MULTIPLE MODES DURING RUNTIME)的第15/703,705号美国非临时专利申请案的在先申请优先权,而该专利申请案又要求于2016年9月16日递交的第62/396,023号美国临时专利申请案的在先申请优先权,这两个在先申请的全部内容均以引用的方式并入本文本中。
技术领域
本发明涉及可配置硬件,更具体地,涉及重配置用于执行不同操作的硬件。
背景技术
可重配置硬件通常采取多种形式(例如,现场可编程门阵列(field-programmablegate array,FPGA)、可编程阵列逻辑(programmable array logic,PAL)、复杂可编程逻辑器件(complex programmable logic device,CPLD)等)。这些类型的硬件中的每一种允许对硬件进行配置,以便适应特定应用或用例场景。尽管这种硬件允许进行配置,但是必须在运行时操作开始之前在设置或初始化时进行这种配置。
发明内容
提供了一种配置硬件在运行时期间多种操作模式下操作的装置和方法,包括多个可配置硬件单元,各自具有用于接收操作数的多个操作数输入、用于输出结果的多个输出、以及用于接收至少一个硬件单元配置信号的至少一个硬件单元配置输入。所述可配置硬件单元各自用于根据所述至少一个硬件单元配置信号在至少一部分所述操作数上执行计算操作和/或存储操作。
还包括耦合在所述可配置硬件单元之间的可配置互连结构。所述可配置互连结构包括多个结构数据输入、多个结构数据输出、以及用于接收至少一个结构选择信号的至少一个结构选择输入。所述可配置互连结构用于根据所述至少一个结构选择信号将至少一部分所述结构数据输出与至少一部分所述可配置硬件单元的所述操作数输入互连。而且,所述可配置互连结构用于根据所述至少一个结构选择信号将至少一部分所述结构数据输入与至少一部分所述可配置硬件单元的输出互连。
还提供了一种用于包含多个配置位模式的配置存储器。所述配置位模式包括用于生成第一硬件单元配置信号和第一硬件单元结构信号以便在运行时期间在第一操作模式下操作至少一部分所述可配置硬件单元和所述可配置互连结构的至少一部分的第一配置位模式。所述配置位模式还包括用于在运行时期间生成第二硬件单元配置信号和第二硬件单元结构信号以便在第二操作模式下操作至少一部分所述可配置硬件单元和所述可配置互连结构的至少一部分的第二配置位模式。
在第一实施例中,所述可配置硬件单元可以包括执行所述计算操作的计算单元。
在第二实施例(可以与第一实施例合并,也可以不与第一实施例合并)中,所述可配置硬件单元可以包括执行所述存储操作的数据单元。可选地,所述数据单元中的至少一个存储在所述第一操作模式下生成的数据,而包括所述至少一个数据单元的至少一部分所述可配置硬件单元用于在所述第二操作模式下操作,从而所述数据在所述第二操作模式下可用。
在第三实施例(可以与第一和/或第二实施例合并,也可以不与第一和/或第二实施例合并)中,所述可配置互连结构可以包括多个复用器。
在第四实施例(可以与第一、第二和/或第三实施例合并,也可以不与第一、第二和/或第三实施例合并)中,所述装置的第一部分可以在所述第一操作模式下操作,而所述装置的第二部分在所述第二操作模式下操作,从而所述装置同时在所述第一操作模式和所述第二操作模式下操作。
在第五实施例(可以与第一、第二、第三和/或第四实施例合并,也可以不与第一、第二、第三和/或第四实施例合并)中,所述可配置硬件单元还可以包括用于接收同步信号以发起所述计算操作和/或所述存储操作的至少一个同步输入。可选地,可以为不同硬件单元发布不同的同步信号,以便协调所述不同硬件单元的所述计算操作和/或所述存储操作的执行。
在第六实施例(可以与第一、第二、第三、第四和/或第五实施例合并,也可以不与第一、第二、第三、第四和/或第五实施例合并)中,在所述第一操作模式下操作的所述可配置硬件单元中的所述至少一部分和所述可配置互连结构的所述至少一部分与在所述第二操作模式下操作的所述可配置硬件单元中的所述至少一部分和所述可配置互连结构的所述至少一部分相同,这样,可以重配置为在所述第二操作模式下操作。
在第七实施例(可以与第一、第二、第三、第四、第五和/或第六实施例合并,也可以不与第一、第二、第三、第四、第五和/或第六实施例合并)中,在所述第一操作模式下操作的所述可配置硬件单元中的所述至少一部分和所述可配置互连结构的所述至少一部分与在所述第二操作模式下操作的所述可配置硬件单元中的所述至少一部分和所述可配置互连结构的所述至少一部分可以不同。可选地,所述可配置硬件单元和/或所述可配置互连结构的第一部分可以锁定,而所述可配置硬件单元和/或所述可配置互连结构的第二部分用于在所述第二操作模式下操作,这样,所述装置在所述第一操作模式下操作的同时所述装置配置为在所述第二操作模式下操作。
在第八实施例(可以与第一、第二、第三、第四、第五、第六和/或第七实施例合并,也可以不与第一、第二、第三、第四、第五、第六和/或第七实施例合并)中,所述第二配置位模式可以在所述装置在所述第一操作模式下操作时加载。
在第九实施例(可以与第一、第二、第三、第四、第五、第六、第七和/或第八实施例合并,也可以不与第一、第二、第三、第四、第五、第六、第七和/或第八实施例合并)中,所述配置存储器还可以用于包含第三配置位模式,用于在运行时期间生成第三硬件单元配置信号和第三硬件单元结构信号,以重配置在所述第二操作模式下操作的所述可配置硬件单元中的所述至少一部分和所述可配置互连结构的所述至少一部分,以便在第三操作模式下操作。
为此,在一些可选实施例中,上述装置和/或方法的一个或多个前述特征可以提供可以在运行时期间重配置的可配置硬件单元/互连结构。这反过来可能会导致芯片设计灵活性的提高,而这种灵活性是缺乏这种运行时可重配置性的系统中必然存在的。应注意的是,上述可能的优点仅是出于说明性目的而阐述,并且不应解释为以任何方式进行限制。
附图说明
图1示出了根据一实施例的一种用于在运行时期间多种操作模式下操作的装置;
图2示出了根据一实施例的一种配置硬件在运行时期间多种操作模式下操作的方法;
图3示出了根据另一实施例的一种用于在运行时期间多种操作模式下操作的装置;
图4示出了根据另一实施例的一种用于在运行时期间多种操作模式下操作的可配置硬件单元;
图5A示出了一种用于在运行时期间在第一操作模式下操作的可配置装置;
图5B示出了用于在运行时期间在第二操作模式下操作的图5A中的所述可配置装置;
图6示出了根据另一实施例的在配置硬件在运行时期间多种操作模式下操作中使用的配置位模式中的一段;
图7示出了根据另一实施例的使用同步信号协调可配置硬件单元的操作;
图8示出了根据一实施例的一种用于在运行时期间多种操作模式下操作的系统;
图9为根据一实施例的一种网络架构的图;
图10为根据一实施例的一种示例系统的图。
具体实施方式
图1示出了根据一实施例的一种用于在运行时期间多种操作模式下操作的装置100。如图所示,包括多个可配置硬件单元102,各自具有用于接收操作数的多个操作数输入104、用于输出结果的多个输出106、以及用于接收至少一个硬件单元配置信号的至少一个硬件单元配置输入108。还包括耦合(例如,直接、间接等)在可配置硬件单元102之间的可配置互连结构110。可配置互连结构110包括多个结构数据输入112、多个结构数据输出114、以及用于接收至少一个结构选择信号的至少一个结构选择输入113。
还提供了一种耦合(例如,直接、间接等)到可配置硬件单元102和可配置互连结构110的配置存储器120。在使用中,配置存储器120用于存储指令,这些指令采取多个配置位模式121的形式,允许在运行时期间配置(包括重配置)可配置硬件单元102和/或可配置互连结构110。现在将阐述有关每个前述组件及其互操作的更多信息。
在本说明书的上下文中,可配置硬件单元102可以包括能够被重配置、从而可以操作任何输入操作数(即通过图3所示的数据输入端口接收的任何数据等)以生成预期结果的任何硬件。例如,在各种可选实施例中,可配置硬件单元102可以包括一个或多个算术逻辑单元(arithmetic logic unit,ALU)或任何其它所需逻辑单元、存储器(例如,寄存器、缓冲器等)和/或任何其它所需硬件。这样,在不同后续实施例的描述中变得显而易见的是,可配置硬件单元102可以包括执行计算操作的计算单元和/或执行存储操作的数据单元。进一步地,可配置硬件单元102的配置(包括重配置)可以基于在各自可配置硬件单元102的硬件单元配置输入108处接收的至少一个硬件单元配置信号。
在本说明书中,可配置互连结构110还可以包括能够被配置(例如,被重配置等)为将结构数据输出114的至少一部分与可配置硬件单元102的至少一部分的操作数输入104互连、和/或将结构数据输入112的至少一部分与可配置硬件单元102的至少一部分的输出106互连的任何互连结构(例如,至少一部分可配置的连接)。为了实现这一点,在各种可选实施例中,可配置互连结构110可以包括多个复用器或者可以根据需要被重配置的任何其它互连结构。在使用过程中,这种配置可以基于在可配置互连结构110的结构选择输入113处接收的至少一个结构选择信号。
为此,可配置硬件单元102和/或可配置互连结构110可以被配置和/或被重配置。进一步地,这种可配置性可以在运行时期间进行,从而允许运行时可配置性,在本说明书中,运行时可配置性是指在上述硬件运行时配置和/或重配置硬件在不同模式下操作。例如,在一个实施例中,这种运行时可配置性可以发生在软件和/或由硬件执行的内嵌指令编译之后。
如前所述,配置存储器120包含在运行时期间配置(例如,重配置等)可配置硬件单元102和/或可配置互连结构110的配置位模式121。为了实现这一点,配置存储器120可以包括能够存储配置位模式121的任何内存。进一步地,配置位模式121可以包括能够用于生成对应的硬件单元配置信号和/或硬件单元结构信号的任何数字数据结构。在一个可能的实施例中,上述信号可以包括以串行和/或并行方式传送给对应硬件的相关配置位模式121的位(例如,1和0等)的集合。在其它实施例中,上述信号可以以任何期望的方式从配置位模式121中导出。
在使用中,配置位模式121可以包括用于生成第一硬件单元配置信号和第一硬件单元结构信号以便在运行时期间在第一操作模式下操作可配置硬件单元102的至少一部分和所述可配置互连结构110的至少一部分的第一配置位模式。在一个可能的实施例中,根据第一硬件单元配置信号和第一硬件单元结构信号执行的配置可以发生在运行时期间(例如,在启动时、在初始化时等)之前。在其它可能的实施例中,配置可以在运行时期间进行。
上述配置位模式121还包括用于在运行时期间生成第二硬件单元配置信号和第二硬件单元结构信号以便在第二操作模式下操作至少一部分可配置硬件单元102和所述可配置互连结构110的至少一部分的第二配置位模式。应注意的是,在相同(或不同)的运行时实例中可以发起任意次数的硬件重配置。举例而言,配置存储器120还可以用于包含第三配置位模式,用于在运行时期间生成第三硬件单元配置信号和第三硬件单元结构信号,以重配置在第二操作模式下操作的至少一部分可配置硬件单元102和可配置互连结构110的至少一部分,以便在第三操作模式下操作。
应注意的是,第一和第二操作模式至少可以部分地同时执行,也可以不同时执行。例如,在第一实施例中,第一操作模式可以在第二操作模式之前执行,在时间上没有任何重叠。在该实施例中,可配置硬件单元102和可配置互连结构110中在第一操作模式下操作的部分可能与在第二操作模式下操作的部分相同。
在另一实施例中,第一操作模式可以在第二操作模式期间并行执行。在又一实施例中,第一操作模式的持续时间可以部分地与第二操作模式的持续时间重叠,这样,第一操作模式和第二操作模式的部分重叠,而其它部分不重叠。在该实施例中,可配置硬件单元102和可配置互连结构110中在第一操作模式下操作的部分可能与在第二操作模式下操作的部分不同。具体地,在一个实施例中,装置100的第一部分可以在第一操作模式下操作,而装置100的第二部分在第二操作模式下操作,这样,装置100的不同部分同时(至少部分地)分别在第一操作模式和第二操作模式下操作。进一步可选地,硬件(例如,可配置硬件单元102和/或可配置互连结构110等)的第一部分可以被锁定,而硬件的第二部分用于在第二操作模式下操作,这样,装置100在第一操作模式下操作的同时装置100用于在第二操作模式下操作。有关包含这些特征的不同实施例的更多信息将在后续附图的描述中阐述。
在各种可选实施例中,可配置硬件单元102还可以各自包括用于接收同步信号以发起上述计算操作和/或存储操作的至少一个同步输入122。通过这一设计,可以为不同硬件单元102发布不同的同步信号,以便协调不同硬件单元102的计算操作和/或存储操作的执行。例如,可以为可配置硬件单元102中的第一个发布对应的同步信号,以在第一循环期间发起第一操作(例如,第一计算操作)来生成第一结果,而为可配置硬件单元102中的第二个发布不同的对应同步信号,以在第二循环期间发起对第一结果的第二操作(例如,第二计算操作)来生成第二结果。应注意的是,可配置硬件单元102可以用于并行或串行操作,并且不同的硬件单元102之间的任何数据输出和/或输入可以通过发送到各个硬件单元102的同步信号进行控制(例如,发起、允许等)。进一步地,预期有些可配置硬件单元102可能不一定需要同步信号,因此,会进行更为静态的操作。此外,虽然未示出,在一个实施例中,至少一个同步输入122可以与中央控制器(例如,处理器等)耦合,以允许从中央位置发布同步信号。
为此,在一些可选实施例中,上述可配置硬件单元/互连结构的一个或多个前述特征反过来可能会增加芯片设计灵活度,而这种灵活度在缺乏这种运行时可重配置性的系统中不可避免。应注意的是,上述可能的优点仅出于说明性目的而阐述,并且不应被解释为以任何方式进行限制。
现在将阐述有关各种可选架构以及根据用户需求可以实施或不实施上述方法的使用的更多说明性信息。例如,将阐述各种可以进一步增强上述运行时可重配置性的各种实施例。具体地,在一个可选实施例中,第二配置位模式可以在装置100在第一操作模式下运行时加载。为此,在根据先前加载的配置位模式执行操作的同时,可以在运行时期间加载其它的配置位模式。
另外可选地,在一些实施例中,可配置硬件单元102的数据单元可以存储在第一操作模式下生成的数据,而至少一部分可配置硬件单元102(包括数据单元)和可配置互连结构110的至少一部分用于在第二操作模式下操作。严格可选地,除了存储数据以外,数据单元还可以对数据进行某种程度的处理(例如,组织数据存取模式、作为数据流单元等)。这样,即使在重配置一些硬件单元102的过程中,这些硬件单元102的数据单元也可以保持不变(至少暂时地),以便用来存储重配置后可能使用的数据,从而允许数据在硬件单元102重配置过程中保留在硬件单元102内。
应注意的是,以下有关这些特征的信息仅是出于说明性目的而阐述,并且不应被解释为以任何方式进行限制。任何以下特征可以选择性地并入或者不并入所阐述的其它特征。
图2示出了根据一实施例的一种配置硬件在运行时期间多种操作模式下操作的方法200。可选地,方法200可以在任意先前和/或后续附图和/或其描述中阐述的实施例中的任意一个或多个的上下文中实施。例如,在一个可能的实施例中,方法200可以在图1的装置100的上下文中实施。但是,应理解的是,方法200可以在任何期望环境的上下文中实施。
如图所示,在步骤202处,在配置存储器(例如,图1的配置存储器120等)中加载多个配置位模式。在一个实施例中,配置位模式可以在运行时期间之前在初始化或设置时加载。
在一个可能的实施例中,前述配置位模式可以根据数据流图生成。这种数据流图可以包括与任务对应的任何数据结构,其中任务包括根据相对的数据关系(例如,依赖关系、排序等)以特定顺序发起的多个操作。在使用中,与每个数据流图/任务关联的操作和/或数据关系可以映射到关联的硬件(例如,图1的可配置硬件单元102和/或可配置互连结构110等),从而可以生成适当的位模式(例如,字等),以便配置硬件操作和传输各自的数据来执行相应的任务。因此,例如,如果有二十(20)个任务需要由特定硬件执行,则配置存储器中将存储二十(20)个位模式,以在运行时期间使用。
继续参考图2,可以在步骤206处识别待发起的特定操作模式。在各种实施例中,步骤206可以在软件和/或用户的控制下通过高层处理来执行(例如,通过检测传入命令和/或数据等),以便确定硬件使用的方式。进一步地,在一个实施例中,在启动时可能需要一种默认模式(例如,启动模式)。
在任何情况下,在步骤208处,根据在步骤206处确定的所需操作模式向配置存储器(例如,图1的配置存储器120等)输入索引(例如,地址等)。该索引因此可以用于搜索适当的配置位模式,这样,在210中检索该配置位模式。按照步骤212,配置位模式反过来可以用于生成硬件单元/互连配置信号。例如,在一个实施例中,配置位模式位本身可以被传送(例如,串行或并行)给适当的硬件,以对硬件进行配置。
然后,可以开始运行时操作。在运行时操作期间,可以协调发起不同硬件单元的操作。具体地,可以在决策214中确定是否在特定循环处发起特定硬件单元的操作。如果发起,则在步骤216处生成对应的同步信号并发布到特定硬件单元。在各种实施例中,描述同步信号时间和/或顺序的控制信息可以在步骤202处与配置位模式一同加载。在其它实施例中,这种同步信号的时间和/或顺序可以由上述软件决定(例如,通过检测传入命令和/或数据等)。
如前所述,与配置位模式的不同子集对应的不同操作模式可以串行和/或并行执行。进一步地,在运行时操作期间执行至少一种操作模式时,可以同时实现各种其它功能。
例如,可以重配置各种硬件(例如,硬件单元和/或互连结构部分等)执行其它任务。具体地,在使用特定硬件完成第一操作之后,该特定硬件可以使用最初在步骤202处加载的其它配置位模式(或其部分)重配置。在这种(以及其它)场景中,可以在决策218中确定是否在运行时期间发起重配置。在一个实施例中,可以通过正被处理的数据及其结果和/或接收到的促使这种处理的命令来动态地做出决策218。换言之,上述位模式可以按照预先确定的顺序存储,但根据所需处理按照动态确定的顺序检索和使用(以用于重配置)。在其它实施例中,决策218可以根据预期的数据处理时间遵循预先确定的方案(例如,顺序等)。例如,上述位模式可以根据时间、触发事件等,按照预先确定的顺序存储,并且按照这种顺序检索和使用(用于重配置)。
如果在决策218中确定将在运行时期间发起重配置,可以在步骤220中锁定硬件的至少一部分。锁定的这部分硬件可以是可能受到重配置影响的任何部分。例如,如果第一硬件部分可能在第二硬件部分重配置期间向第二硬件部分输出结果,或者如果第一硬件部分需要在第二硬件部分重配置期间第二硬件部分的输出,则可以锁定第一硬件部分。
应注意的是,在步骤220之后的上述硬件重配置期间,被重配置的硬件单元的数据单元可以用于存储在发起重配置之前生成和/或存储的任何中间数据。为此,这种存储的数据可以在重配置过程中一直保留,并且可用于后续操作模式期间重配置之后的硬件和/或任何其它硬件。
当一些硬件单元操作操作数时和/或当其它硬件单元在运行时期间被重配置时,还可以在决策222中确定是否应替换配置位模式中的一个或多个。例如,在配置存储器容量有限的一个实施例中,该存储器不一定有充足的空间来存储所有所需位模式。在该实施例中,当根据决策222确定需要额外的配置位模式时,按照步骤224,可以在配置存储器中加载配置位模式中的一个或多个(并且替换已经被使用或者已知不经常被使用的一个或多个配置位模式)。进一步地,可以在根据已经加载的配置位模式执行其它操作时在运行时期间完成该操作。但是,在其它实施例中,考虑配置存储器有充足的容量来存储执行运行时要求的所有或几乎所有重配置(或所有操作模式)所需的所有位模式。
继续参考图2,只要操作未完成,并且继续按照决策226,可以重复各个决策214、218和222。在一些可能的实施例中,方法200的步骤中的每一个在运行时期间都可能实时发生。例如,任何步骤可以在初始的一个或多个循环中发生,而另一步骤在初始的一个或多个循环后的后续一个或多个循环中发生。进一步地,考虑根据步骤220和206至212执行的任何重配置可能在一个循环中发生,以便提供从一种操作模式到另一种操作模式的无缝过渡。另外,在其它实施例中,只要没有冲突(例如,数据处理、输入/输出(input/output,I/O)冲突等),方法200的任意两个或多个步骤甚至可以在同一循环中发生。
图3示出了根据另一实施例的一种用于在运行时期间多种操作模式下操作的装置300。可选地,装置300可以在任意先前和/或后续附图和/或其描述中阐述的任意一个或多个实施例的上下文中实施。但是,应理解的是,装置300可以在任何期望环境的上下文中实施。
如图所示,包括多个可配置硬件单元302,各自具有用于接收操作数的多个操作数输入304、用于输出结果的多个输出306、以及用于接收至少一个硬件单元配置信号的硬件单元配置输入308。在使用中,可配置硬件单元302的配置(包括重配置)可以基于在各自可配置硬件单元302的硬件单元配置输入308处接收的至少一个硬件单元配置信号。在一个可能的实施例中,这可以通过提示任何组件(例如,ALU等计算单元、寄存器等数据单元等)的选择、启用、禁用、配置等的至少一个硬件单元配置信号完成,从而可配置硬件单元302以某种方式操作。
还包括(例如,直接、间接等)耦合在可配置硬件单元302之间的可配置互连结构310。可配置互连结构310包括耦合到输出306的多个结构数据输入312、耦合到操作数输入304的多个结构数据输出314、以及用于接收至少一个结构选择信号的结构选择输入313。在一个可能的实施例中,可配置互连结构310可以采取通用可重构路由结构(genericreconfigurable routing structure,GRRS)的形式。进一步地,可配置互连结构310包括用于与一个或多个外部系统传送输入/输出(input/output,I/O)的外部输入318和外部输出319。
在使用过程中,可配置互连结构310可以根据在可配置互连结构310的多个复用器317中每个的结构选择输入313处接收的至少一个结构选择信号进行配置。在一个可能的实施例中,这可以通过可配置互连结构310的多层复用器317中的每个的选择输入313来完成。例如,复用器317可以组织为任意可能连接的两个I/O终端之间的多层结构。在使用中,每个复用器317的选择位可以表示特定位模式的一部分,并且通过设定模式中所有位的值,对应的复用器317可以一起用于在可配置硬件单元302的任意终端对之间建立数据连接。
还提供了配置存储器320,用于包含允许在运行时期间配置/重配置可配置硬件单元302和/或可配置互连结构310的多个配置位模式。在一个实施例中,配置存储器320可以包括多个单独的存储单元,如图所示,这些存储单元与硬件单元配置输入308和结构选择输入313耦合,用于向其传送配置信号。例如,每个位模式可以存储为一个字,该字通过配置存储器320中的一个索引号(例如,地址值)指定。进一步地,重配置可以通过更改索引值来实现,从而从配置存储器320中读取不同的配置位模式。
另外,可以向任意可配置硬件单元302(以及甚至是互连结构310)传送同步信号330,用于发起可配置硬件单元302(或其组件,例如,计算单元、数据单元等)的操作,以便协调可配置硬件单元302的操作及其I/O。为此,在一个实施例中,装置300可以使用图2的方法200或者任意其它所需技术来配置可配置硬件单元302和可配置互连结构310。下面将阐述有关一个可能的可配置硬件单元设计的更多信息。
图4示出了根据另一实施例的一种用于在运行时期间多种操作模式下操作的可配置硬件单元400。可选地,可配置硬件单元400可以在任意先前和/或后续附图和/或其描述中阐述的任意一个或多个实施例的上下文中实施。例如,可配置硬件单元400可以在图1的可配置硬件单元102和/或图3的可配置硬件单元302的上下文中实施。但是,应理解的是,可配置硬件单元400可以在任何期望环境的上下文中实施。
如图所示,可配置硬件单元400包括用于数据连接的操作数输入402、输出404、以及用于配置可配置硬件单元400的功能的硬件单元配置输入406。可配置硬件单元400还包括同步输入408,其形式为用于将可配置硬件单元400的内部操作与外部系统(例如,其它可配置硬件单元等)进行同步的附加引脚。
图5A示出了一种用于在运行时期间在第一操作模式下操作的可配置装置500。与先前的实施例类似,可配置装置500包括可配置硬件单元502、包括多个复用器511的可配置互连结构510、以及配置存储器520。此外,图5B示出了用于在运行时期间在第二操作模式下操作的图5A中的可配置装置500。
如通过剖面线所示,图5A示出了装置500响应于输入到配置存储器520的索引X通过可配置互连结构510的第一路径550传送数据。此外,在图5B中,示出了装置500响应于输入到配置存储器520的索引Y通过可配置互连结构510的第二路径552传送数据。虽然未示出,图5A的可配置硬件单元502可以配置为与图5B的可配置硬件单元502的操作不同。
这样,呈现了连接方案的两个示例,其中可以通过选择有特定值的复用器511来进行引脚对引脚的连接。这两种方案通过在配置存储器520中的两个位置存储的两个配置位模式来指定。此外,两个索引值“索引X”或“索引Y”用作地址来读取适当的配置位模式。为此,可配置互连结构510可以用于通过配置可配置硬件单元502来实施数据流图,从而实现图中节点的各个功能,并且配置路由复用器511以在节点间创建所有定制化数据连接。
图6示出了根据另一实施例的在配置硬件在运行时期间多种操作模式下操作时所使用的配置位模式600中的一段。可选地,配置位模式600可以在任意先前和/或后续附图和/或其描述中阐述的任意一个或多个实施例的上下文中实施。但是,应理解的是,配置位模式600可以在任何期望环境的上下文中实施。
与先前的实施例类似,图6示出了一种可配置装置601,包括多个可配置硬件单元602中的一个、包括多个复用器611的可配置互连结构610、以及配置存储器620。如前所述,该配置存储器620可以包括任意内存或者一套寄存器。每个内存字或者寄存器存储多个配置位,配置位通过多个复用器611指定可配置硬件单元602之间(通过可配置互连结构610的)数据连接的连接模式以及可配置硬件单元602的功能。内存的地址线或者寄存器选择线进一步由配置信号索引630控制。
通过更改配置信号索引630,可配置硬件单元602之间的连接以及可配置硬件单元602的功能可以从一个模式更改为另一个模式。可配置互连结构610的这种动态重配置可以通过更改配置信号索引630的值来执行。对于可配置互连结构610,在一些实施例中,可以使用多个配置存储器620,从而通过单独更改每个配置存储器620上的地址线(配置信号索引630),可以部分地更改可配置互连结构610实施的功能。
图7示出了根据另一实施例的使用同步信号700协调可配置硬件单元702的操作。可选地,同步信号700的这种使用可以在任意先前和/或后续附图和/或其描述中阐述的任意一个或多个实施例的上下文中实施。但是,应理解的是,同步信号700的使用可以在任何期望环境的上下文中实施。
如图所示,可配置硬件单元702可以包括计算单元702A和数据单元704B。为了将控制依赖关系和信号活动减到最少,执行控制功能被分配到各个可配置硬件单元702中。这样,系统只需发送同步信号700就可以在每个可配置硬件单元702上启动序列。换言之,一个同步信号700可以负责可配置硬件单元702上的一个执行序列。在一些实施例中,通过这种全局性的同步方案,在任意两个可配置硬件单元702之间不一定需要任何控制相关的交互。例如,可配置硬件单元702间不一定需要发生状态和/或触发信号(例如,握手等)来协调可配置硬件单元702间的操作。
通过这一设计,在一些实施例中,运行时可重配置硬件可以用于通过为对应任务定制的定制化硬件特征实现极高的性能,并且提高功耗和芯片面积成本的性能效率。每种定制模式可以通过二进制位模式配置(例如,实施等)。此外,通过在不同的位模式之间进行变更,硬件单元可以有效地从一个模式变更到另一个模式。这样,使用场景可以分为单独的模式,对于每种模式,可配置硬件单元可以配置为对应的有效功能模式。此外,通过切换可配置硬件单元的模式,整体系统可以为所有这些使用场景提供最佳性能。
如前所述,在一些可能的实施例中,目标任务可以定制为优化实施可重配置结构,从而减少对共享存储器的数据访问,并且将控制握手和依赖关系减到最小。在映射到可重配置结构之前,目标任务可以表示为一个数据流图。这种图可以使用多种操作模式和多个数据连接构建。每个节点可以具有若干输入端口,每个输入端口代表该节点所表示的操作的一个操作数,并具有若干输出端口,每个输出端口代表节点操作生成的结果中的一个。每个数据连接提供了从源节点上的输出端口到目的节点上的输入端口的链接。
为此,数据流图可以用来表示一项任务的一系列操作。具体地,这种数据流图可以映射到可配置互连结构上。此外,数据单元可以用于减少上述结构执行期间的数据移动,以避免访问共享内存。另外,可以使用全局性的同步方案通过清除可配置硬件单元之间的一些或者所有控制交互来消除控制时延,从而将控制逻辑的信号活动减到最少。配置内存甚至还可以用于在执行期间在相同的结构上启动运行时重配置。
图8示出了根据一实施例的一种用于在运行时期间多种操作模式下操作的系统800。可选地,系统800可以通过任意先前和/或后续附图和/或其描述中阐述的任意一个或多个实施例的一个或多个特征实施。但是,应理解的是,系统800可以在任何期望环境的上下文中实施。
如图所示,提供了一种可配置硬件单元构件,其形式为可配置硬件单元模块852,包括对数据进行操作(例如,计算、存储等)的多个可配置硬件单元。在各种实施例中,可配置硬件单元模块852可以包括,但不限于图1的可配置硬件单元102、图3的可配置硬件单元302和/或具有上述功能的任意其它电路。
还包括一种可配置互连结构构件,其形式为与可配置硬件单元模块852通信的可配置互连结构模块854,用于提供可配置硬件单元模块852之间的可配置通信。在各种实施例中,可配置互连结构模块854可以包括,但不限于图1的可配置互连结构110、图3的可配置互连结构310和/或具有上述功能的任意其它电路。
继续参考图8,采取配置存储器模块856形式的配置存储器构件与可配置互连结构模块854和可配置硬件单元模块852通信,从而在运行时期间生成信号以配置可配置硬件单元模块852和/或可配置互连结构模块854。在各种实施例中,配置存储器模块856可以包括,但不限于图1的配置存储器120、图3的配置存储器320、至少一个处理器(之后说明)以及控制处理器的任意软件和/或具有上述功能的任意其它电路。
图9为根据一实施例的一种网络架构900的图。如图所示,提供了至少一个网络902。在各种实施例中,在说明任意先前附图过程中阐述的任意一个或多个组件/特征可以与至少一个网络902的组件中的任意一个或多个关联实施。
在当前网络架构900的上下文中,网络902可以采取任何形式,包括但不限于电信网络、局域网(local area network,LAN)、无线网络、互联网等广域网(wide areanetwork,WAN)、对等网、有线网络等。尽管只示出了一种网络,但应理解的是,可以提供两个或更多类似或不同的网络902。
有多个设备耦合到网络902。例如,服务器计算机912和计算机908可以耦合到网络902以进行通信。该计算机908可以包括台式电脑、笔记本电脑和/或任何其它类型的逻辑。此外,各种其它设备可以耦合到网络902,这些设备包括个人数字助理(personal digitalassistant,PDA)设备910、手机设备906、电视机904等。
图10为根据一实施例的一种示例系统1000的图。可选地,系统1000可以在图9的网络架构900的任意设备的上下文中实施。但是,应理解的是,系统1000可以在任何期望环境的上下文中实施。
如图所示,提供了系统1000,包括连接到总线1012的至少一个处理器1002。系统1000还包括内存1004(例如,硬盘驱动器、固态驱动器、随机存取存储器(random accessmemory,RAM)等)。内存1004可以包括一个或多个内存组件,并且甚至可以包括不同类型的内存。系统1000还包括触摸屏、独立显示器等形式的显示器1010。还包括耦合到显示器1010的图形处理器1008。
系统1000还可以包括辅助存储器1006。辅助存储器1006包括例如硬盘驱动器和/或可移动存储驱动器,相当于软盘驱动器、磁带驱动器、光盘驱动器等。可移动存储驱动器以一种众所周知的方式从可移动存储单元读取和/或向可移动存储单元写入。
计算机程序或计算机控制逻辑算法可以存储在内存1004、辅助存储器1006和/或用于这一目的的任何其它存储器中。这种计算机程序在执行时使得系统1000执行各种功能(例如,如上文所述的功能)。内存1004、辅助存储器1006和/或任何其它存储器包括非瞬时性计算机可读介质。
应注意,在一方面中,本文所述的技术实施于计算机可读媒体中存储的供指令执行机器、装置或设备使用或结合指令执行机器、装置或设备使用的可执行指令中,所述指令执行机器、装置或设备包括基于计算机或含有处理器的机器、装置或设备。本领域技术人员将理解,对于一些实施例,包含可以存储可由计算机访问的数据的其它类型的计算机可读介质,例如磁盒、闪存卡、数字视频光盘、伯努利匣、随机存取存储器(random accessmemory,RAM)、只读存储器(read-only memory,ROM)等。
此处使用的“计算机可读介质”包括一种或多种任何适合的用于存储计算机程序可执行指令的介质,从而指令执行机器、系统、装置或设备可以从计算机可读介质中读取(或者获取)指令并且执行这些指令,以执行所述方法。合适的存储格式包含电子、磁性、光学和电磁格式中的一种或多种。常规的示例性计算机可读介质的非穷举清单包括:便携式电脑磁盘、RAM、ROM、可擦除可编程只读存储器(erasable programmable read onlymemory,EPROM,或者闪存)、光存储设备包括便携式光盘(compact disc,CD)、便携式数字化视频光盘(digital video disc,DVD)、高清DVD(high definition DVD,HD-DVDTM)、蓝光光盘等。
应理解,所述图中示出的组件布置是示例性的,并且可能有其它布置。还应理解,由权利要求书界定的、下文描述的并且在各种框图中所说明的各种系统组件表示根据本文中所揭示的主题配置的一些系统中的逻辑组件。
例如,这些系统组件(和构件)中的一个或多个可以整体或部分地通过所述图中示出的布置中示出的组件中的至少一些实现。另外,尽管这些组件中的至少一个至少部分地实施为电子硬件组件并因此构成机器,但是其它组件可以实施于软件中,当包含于执行环境中时所述组件构成机器、硬件或软件和硬件的组合。
更具体地说,由权利要求书界定的至少一个组件至少部分地实施为电子硬件组件,例如指令执行机器(例如,基于处理器的或含有处理器的机器),和/或实施为专用电路或电路系统(例如,互连以执行专用功能的离散逻辑门)。其它组件可以实施于软件、硬件或软件和硬件的组合中。此外,可以组合这些其它组件中的一些或全部组件,可以完全省略一些组件并且可以添加其它组件,同时仍实现本文中描述的功能。因此,本文中描述的主题可以许多不同变化形式体现,且所有此类变化形式涵盖在权利要求书的范围内。
在以上描述中,除非另外指明,否则参考动作和由一个或多个设备执行的操作的符号表示来描述主题。因而,应理解,有时被称为计算机执行动作和操作的此类动作和操作包含构造形式的数据处理器的操作。这种操作对数据进行变换或将该数据保持在计算机的内存系统中的位置处,以本领域技术人员容易理解的方式重配置或改变设备的操作。数据作为数据结构保存在内存的物理位置处,数据结构具有由数据格式限定的特定性质。然而,虽然在前文上下文中描述了主题,但这并不表示对所述主题的限制,因为所属领域的技术人员将了解,下文中描述的各种动作和操作也可以在硬件中实施。
为了促进对本文中描述的主题的理解,根据动作顺序描述许多方面。由权利要求限定的这些方面中的至少一方面由电子硬件组件执行。例如,将认识到,可通过专用电路或电路系统,通过正由一个或多个处理器执行的程序指令或通过这两者的组合执行各种动作。本文中对任何动作顺序的描述并不意在暗示必须遵循用于执行此顺序而描述的特定次序。本文所述的所有方法可以以任何适当的次序来执行,除非本文中另有说明或上下文另有清楚否定。
描述主题的上下文中(尤其是所附权利要求的上下文中)的术语“一”、“一个”和“该”以及类似的指代词应被解释为涵盖单数和复数两者,除非另有说明或与上下文明显矛盾。在此引证数值的范围仅旨在用作单独地提及每个单独的数值属于所述范围内的速记方法,除非在此另有说明,并且每个单独的数值并入到本说明书中如同它被单独地在此引证一样。此外,上述描述仅出于说明目的,而不是出于限制目的,因为寻求保护的范围由附属权利要求及其任何等效物来限定。除非另外声明,否则使用本文提供的任何及所有示例或示例性语言(例如,“例如”)仅是为了更好地说明主题,并且不对本主题的范围产生限制。使用术语“基于”和其它类似短语指示在附属权利要求和书面描述中产生结果的条件,并不旨在排除产生所述结果的其它条件。本说明书中的任何语言都不应理解为指示实践本发明所必需的任何非主张的要素。
本文中所述的实施例包含发明人实施要求保护的主题已知一种或多种模式。应理解,所属领域的一般技术人员将通过阅读上述描述来清晰了解那些实施例的变体。本发明人期望熟练的业内人士适时采用此类变体,并且本发明人旨在以不同于本文中特定描述的其它方式来实践本发明所要求保护的主题。因此,所要求保护的主题包含可适用法律所准许的在附属权利要求中叙述的主题的所有变化和等效物。此外,除非本文另外指示或以其它方式明确指出与内容相矛盾,否则本发明涵盖上述要素以其所有可能的变体的任何组合。

Claims (37)

1.一种装置,其特征在于,包括:
多个可配置硬件单元,各自包括接收操作数的多个操作数输入、输出结果的多个输出、以及接收至少一个硬件单元配置信号的至少一个硬件单元配置输入,所述可配置硬件单元各自用于根据所述至少一个硬件单元配置信号在至少一部分所述操作数上执行计算操作或存储操作中的至少一项;
耦合在所述可配置硬件单元之间的可配置互连结构,包括多个结构数据输入、多个结构数据输出、以及接收至少一个结构选择信号的至少一个结构选择输入,所述可配置互连结构用于根据所述至少一个结构选择信号使用连接到所述可配置硬件单元的所述操作数输入的至少一部分所述结构数据输出以及连接到所述可配置硬件单元的所述输出的至少一部分所述结构数据输入至少一部分所述结构数据输入来互连所述可配置硬件单元的选择性子集;以及
耦合到所述可配置硬件单元和所述可配置互连结构的配置存储器,所述配置存储器用于包含多个配置位模式,包括用于生成第一硬件单元配置信号和第一硬件单元结构信号以便在运行时期间在第一操作模式下操作至少一部分所述可配置硬件单元和至少一部分所述可配置互连结构的第一配置位模式,以及用于在运行时期间生成第二硬件单元配置信号和第二硬件单元结构信号以便在第二操作模式下操作至少一部分所述可配置硬件单元和所述可配置互连结构的至少一部分的第二配置位模式。
2.根据权利要求1所述的装置,其特征在于,所述可配置硬件单元包括执行所述计算操作的计算单元。
3.根据权利要求1至2中任一项所述的装置,其特征在于,所述可配置硬件单元包括执行所述存储操作的数据单元。
4.根据权利要求1至3中任一项所述的装置,其特征在于,所述装置的配置为所述数据单元中的至少一个存储在所述第一操作模式下生成的数据,而包括所述至少一个数据单元的至少一部分所述可配置硬件单元用于在所述第二操作模式下操作,从而所述数据在所述第二操作模式下可用。
5.根据权利要求1至4中任一项所述的装置,其特征在于,所述可配置互连结构包括多个复用器。
6.根据权利要求1至5中任一项所述的装置,其特征在于,所述装置配置为所述装置的第一部分在所述第一操作模式下操作,而所述装置的第二部分在所述第二操作模式下操作,从而所述装置同时在所述第一操作模式和所述第二操作模式下操作。
7.根据权利要求1至6中任一项所述的装置,其特征在于,所述可配置硬件单元还包括用于接收同步信号以发起所述计算操作或所述存储操作中的至少一项的至少一个同步输入。
8.根据权利要求1至7中任一项所述的装置,其特征在于,所述装置还用于为不同硬件单元发布不同的同步信号,以便协调所述不同硬件单元的所述计算操作或所述存储操作中至少一项的执行。
9.根据权利要求1至8中任一项所述的装置,其特征在于,在所述第一操作模式下操作的所述可配置硬件单元中的所述至少一部分和所述可配置互连结构的所述至少一部分与在所述第二操作模式下操作的所述可配置硬件单元中的所述至少一部分和所述可配置互连结构的所述至少一部分相同。
10.根据权利要求1至9中任一项所述的装置,其特征在于,在所述第一操作模式下操作的所述可配置硬件单元中的所述至少一部分和所述可配置互连结构的所述至少一部分与在所述第二操作模式下操作的所述可配置硬件单元中的所述至少一部分和所述可配置互连结构的所述至少一部分不同。
11.根据权利要求1至10中任一项所述的装置,其特征在于,所述装置还用于锁定所述可配置硬件单元或所述可配置互连结构中至少一个的第一部分,而所述可配置硬件单元或所述可配置互连结构中至少一个的第二部分用于在所述第二操作模式下操作,从而所述装置在所述第一操作模式下操作的同时所述装置配置为在所述第二操作模式下操作。
12.根据权利要求1至11中任一项所述的装置,其特征在于,所述装置还用于在所述装置在所述第一操作模式下操作时加载所述第二配置位模式。
13.根据权利要求1至12中任一项所述的装置,其特征在于,所述配置存储器还用于包含第三配置位模式,用于在运行时期间生成第三硬件单元配置信号和第三硬件单元结构信号,以重配置在所述第二操作模式下操作的所述可配置硬件单元中的所述至少一部分和所述可配置互连结构的所述至少一部分,以便在第三操作模式下操作。
14.一种方法,其特征在于,包括:
使用耦合到多个可配置硬件单元和可配置互连结构的配置存储器存储多个配置位模式,其中:
所述多个可配置硬件单元各自包括接收操作数的多个操作数输入、输出结果的多个输出、以及接收至少一个硬件单元配置信号的至少一个硬件单元配置输入,并且所述可配置硬件单元各自用于根据至少一个收到的硬件单元配置信号在至少一部分收到的操作数上执行计算操作或存储操作中的至少一项;
所述可配置互连结构耦合在所述可配置硬件单元之间,并且包括多个结构数据输入、多个结构数据输出、以及接收至少一个结构选择信号的至少一个结构选择输入,并且所述可配置互连结构用于根据所述至少一个结构选择信号使用连接到所述可配置硬件单元的所述操作数输入的至少一部分所述结构数据输出以及连接到所述可配置硬件单元的所述输出的至少一部分所述结构数据输入至少一部分所述结构数据输入来互连所述可配置硬件单元的选择性子集;
使用第一配置位模式生成第一硬件单元配置信号和第一硬件单元结构信号,以便在运行时期间在第一操作模式下操作至少一部分所述可配置硬件单元和所述可配置互连结构的至少一部分;以及
使用第二配置位模式在在运行时期间生成第二硬件单元配置信号和第二硬件单元结构信号,以便在第二操作模式下操作至少一部分所述可配置硬件单元和所述可配置互连结构的至少一部分。
15.根据权利要求14所述的方法,其特征在于,所述可配置硬件单元包括执行所述计算操作的计算单元。
16.根据权利要求14至15中任一项所述的方法,其特征在于,所述可配置硬件单元包括执行所述存储操作的数据单元。
17.根据权利要求14至16中任一项所述的方法,其特征在于,还包括使用所述数据单元中的至少一个存储在所述第一操作模式下生成的数据,并包括所述至少一个数据单元的至少一部分所述可配置硬件单元用于在所述第二操作模式下操作,从而所述数据在所述第二操作模式下可用。
18.根据权利要求14至17中任一项所述的方法,其特征在于,所述可配置互连结构包括多个复用器。
19.根据权利要求14至18中任一项所述的方法,其特征在于,还包括在所述第二操作模式下操作的同时在所述第一操作模式下操作,从而同时在所述第一操作模式和所述第二操作模式下操作。
20.根据权利要求14至19中任一项所述的方法,其特征在于,还包括在所述可配置硬件单元中的一个或多个处接收同步信号,以发起所述计算操作或所述存储操作中的至少一项。
21.根据权利要求14至20中任一项所述的方法,其特征在于,还包括为不同的硬件单元发布不同的同步信号,以便协调所述不同硬件单元的所述计算操作或所述存储操作中至少一项的执行。
22.根据权利要求14至21中任一项所述的方法,其特征在于,在所述第一操作模式下操作的所述可配置硬件单元中的所述至少一部分和所述可配置互连结构的所述至少一部分与在所述第二操作模式下操作的所述可配置硬件单元中的所述至少一部分和所述可配置互连结构的所述至少一部分相同。
23.根据权利要求14至22中任一项所述的方法,其特征在于,在所述第一操作模式下操作的所述可配置硬件单元中的所述至少一部分和所述可配置互连结构的所述至少一部分与在所述第二操作模式下操作的所述可配置硬件单元中的所述至少一部分和所述可配置互连结构的所述至少一部分不同。
24.根据权利要求14至23中任一项所述的方法,其特征在于,还包括锁定所述可配置硬件单元或所述可配置互连结构中至少一项的第一部分,而所述可配置硬件单元或所述可配置互连结构中至少一项的第二部分用于在所述第二操作模式下操作,从而所述装置在所述第一操作模式下操作的同时所述装置配置为在所述第二操作模式下操作。
25.根据权利要求14至24中任一项所述的方法,其特征在于,还包括在所述第一操作模式下操作时加载所述第二配置位模式。
26.根据权利要求14至25中任一项所述的方法,其特征在于,还包括在运行时期间生成第三硬件单元配置信号和第三硬件单元结构信号,以重配置在所述第二操作模式下操作的所述可配置硬件单元中的所述至少一部分和所述可配置互连结构的所述至少一部分,以便在第三操作模式下操作。
27.一种设备,其特征在于,包括:
多个可配置硬件单元,各自包括接收操作数的多个操作数输入、输出结果的多个输出、以及接收至少一个硬件单元配置信号的至少一个硬件单元配置输入,所述可配置硬件单元各自用于根据所述至少一个硬件单元配置信号在至少一部分所述操作数上执行计算操作或存储操作中的至少一项;
耦合在所述可配置硬件单元之间的可配置互连结构,包括多个结构数据输入、多个结构数据输出、以及接收至少一个结构选择信号的至少一个结构选择输入,并且所述可配置互连结构用于根据所述至少一个结构选择信号使用连接到所述可配置硬件单元的所述操作数输入的至少一部分所述结构数据输出以及连接到所述可配置硬件单元的所述输出的至少一部分所述结构数据输入至少一部分所述结构数据输入来互连所述可配置硬件单元的选择性子集;以及
内存存储器,所述内存包括指令,当所述指令执行时,使所述设备:
生成第一硬件单元配置信号和第一硬件单元结构信号,以便在运行时期间在第一操作模式下操作至少一部分所述可配置硬件单元和所述可配置互连结构的至少一部分;以及
在运行时期间生成第二硬件单元配置信号和第二硬件单元结构信号,以便在第二操作模式下操作至少一部分所述可配置硬件单元和所述可配置互连结构的至少一部分。
28.根据权利要求27所述的设备,其特征在于,所述可配置硬件单元包括执行所述计算操作的计算单元。
29.根据权利要求27至28中任一项所述的设备,其特征在于,所述可配置硬件单元包括执行所述存储操作的数据单元。
30.根据权利要求27至29中任一项所述的设备,其特征在于,所述设备的配置为所述数据单元中的至少一个存储在所述第一操作模式下生成的数据,而包括所述至少一个数据单元的至少一部分所述可配置硬件单元用于在所述第二操作模式下操作,从而所述数据在所述第二操作模式下可用。
31.根据权利要求27至30中任一项所述的设备,其特征在于,所述可配置互连结构包括多个复用器。
32.根据权利要求27至31中任一项所述的设备,其特征在于,所述设备配置为所述设备的第一部分在所述第一操作模式下操作,而所述设备的第二部分在所述第二操作模式下操作,从而所述设备同时在所述第一操作模式和所述第二操作模式下操作。
33.根据权利要求27至32中任一项所述的设备,其特征在于,所述可配置硬件单元还包括用于接收同步信号以发起所述计算操作或所述存储操作中的至少一项的至少一个同步输入。
34.根据权利要求27至33中任一项所述的设备,其特征在于,所述设备还用于为不同硬件单元发布不同的同步信号,以便协调所述不同硬件单元的所述计算操作或所述存储操作中至少一项的执行。
35.根据权利要求27至34中任一项所述的设备,其特征在于,在所述第一操作模式下操作的所述可配置硬件单元中的所述至少一部分和所述可配置互连结构的所述至少一部分与在所述第二操作模式下操作的所述可配置硬件单元中的所述至少一部分和所述可配置互连结构的所述至少一部分相同。
36.根据权利要求27至35中任一项所述的设备,其特征在于,在所述第一操作模式下操作的所述可配置硬件单元中的所述至少一部分和所述可配置互连结构的所述至少一部分与在所述第二操作模式下操作的所述可配置硬件单元中的所述至少一部分和所述可配置互连结构的所述至少一部分不同。
37.根据权利要求27至36中任一项所述的设备,其特征在于,所述设备还用于锁定所述可配置硬件单元或所述可配置互连结构中至少一项的第一部分,而所述可配置硬件单元或所述可配置互连结构中至少一项的第二部分用于在所述第二操作模式下操作,从而所述设备在所述第一操作模式下操作的同时所述设备配置为在所述第二操作模式下操作。
CN201780056342.7A 2016-09-16 2017-09-15 配置硬件在运行时期间多种模式下操作的装置和方法 Active CN109716318B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662396023P 2016-09-16 2016-09-16
US62/396,023 2016-09-16
US15/703,705 2017-09-13
US15/703,705 US20180081834A1 (en) 2016-09-16 2017-09-13 Apparatus and method for configuring hardware to operate in multiple modes during runtime
PCT/CN2017/101889 WO2018050100A1 (en) 2016-09-16 2017-09-15 Apparatus and method for configuring hardware to operate in multiple modes during runtime

Publications (2)

Publication Number Publication Date
CN109716318A true CN109716318A (zh) 2019-05-03
CN109716318B CN109716318B (zh) 2021-11-30

Family

ID=61618638

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780056342.7A Active CN109716318B (zh) 2016-09-16 2017-09-15 配置硬件在运行时期间多种模式下操作的装置和方法

Country Status (4)

Country Link
US (1) US20180081834A1 (zh)
EP (1) EP3504630A4 (zh)
CN (1) CN109716318B (zh)
WO (1) WO2018050100A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113656345A (zh) * 2021-09-03 2021-11-16 西安紫光国芯半导体有限公司 一种计算器件、计算系统及计算方法

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013100783A1 (en) 2011-12-29 2013-07-04 Intel Corporation Method and system for control signalling in a data path module
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
US10402168B2 (en) 2016-10-01 2019-09-03 Intel Corporation Low energy consumption mantissa multiplication for floating point multiply-add operations
US10572376B2 (en) 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
US10416999B2 (en) 2016-12-30 2019-09-17 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10474375B2 (en) 2016-12-30 2019-11-12 Intel Corporation Runtime address disambiguation in acceleration hardware
US10558575B2 (en) 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10387319B2 (en) 2017-07-01 2019-08-20 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10445451B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US10515049B1 (en) 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
US10445234B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10467183B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods for pipelined runtime services in a spatial array
US10469397B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods with configurable network-based dataflow operator circuits
US10496574B2 (en) 2017-09-28 2019-12-03 Intel Corporation Processors, methods, and systems for a memory fence in a configurable spatial accelerator
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US10445098B2 (en) * 2017-09-30 2019-10-15 Intel Corporation Processors and methods for privileged configuration in a spatial array
US20190101952A1 (en) * 2017-09-30 2019-04-04 Intel Corporation Processors and methods for configurable clock gating in a spatial array
US10380063B2 (en) 2017-09-30 2019-08-13 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator
US10445250B2 (en) 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with a configurable spatial accelerator
US10417175B2 (en) 2017-12-30 2019-09-17 Intel Corporation Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
US10565134B2 (en) 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast in a configurable spatial accelerator
US10564980B2 (en) 2018-04-03 2020-02-18 Intel Corporation Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10459866B1 (en) 2018-06-30 2019-10-29 Intel Corporation Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US10678724B1 (en) 2018-12-29 2020-06-09 Intel Corporation Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator
US10965536B2 (en) 2019-03-30 2021-03-30 Intel Corporation Methods and apparatus to insert buffers in a dataflow graph
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US11029927B2 (en) 2019-03-30 2021-06-08 Intel Corporation Methods and apparatus to detect and annotate backedges in a dataflow graph
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
US11907713B2 (en) 2019-12-28 2024-02-20 Intel Corporation Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator
US11455272B2 (en) * 2020-12-10 2022-09-27 Axis Semiconductor, Inc. Energy efficient microprocessor with index selected hardware architecture

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1234923A (zh) * 1996-08-21 1999-11-10 新拉姆有限责任公司 可重新配置的计算系统
US7051150B2 (en) * 2002-07-29 2006-05-23 Freescale Semiconductor, Inc. Scalable on chip network
US20150169489A1 (en) * 2013-03-15 2015-06-18 Pico Computing, Inc. System and Method for Independent, Direct and Parallel Communication Among Multiple Field Programmable Gate Arrays

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7444454B2 (en) * 2004-05-11 2008-10-28 L-3 Communications Integrated Systems L.P. Systems and methods for interconnection of multiple FPGA devices
US7224184B1 (en) * 2004-11-05 2007-05-29 Xilinx, Inc. High bandwidth reconfigurable on-chip network for reconfigurable systems
US20090158293A1 (en) * 2005-09-05 2009-06-18 Nec Corporation Information processing apparatus
US7557605B2 (en) * 2007-09-14 2009-07-07 Cswitch Corporation Heterogeneous configurable integrated circuit
US8103853B2 (en) * 2008-03-05 2012-01-24 The Boeing Company Intelligent fabric system on a chip
CN102122275A (zh) * 2010-01-08 2011-07-13 上海芯豪微电子有限公司 一种可配置处理器
US8913601B1 (en) * 2010-10-01 2014-12-16 Xilinx, Inc. Programmable integrated circuit and method of asynchronously routing data in a circuit block of an integrated circuit
US9619658B2 (en) * 2014-01-07 2017-04-11 New York University Homomorphically encrypted one instruction computation systems and methods
US10069497B2 (en) * 2016-06-23 2018-09-04 Xilinx, Inc. Circuit for and method of implementing a scan chain in programmable resources of an integrated circuit

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1234923A (zh) * 1996-08-21 1999-11-10 新拉姆有限责任公司 可重新配置的计算系统
US7051150B2 (en) * 2002-07-29 2006-05-23 Freescale Semiconductor, Inc. Scalable on chip network
US20150169489A1 (en) * 2013-03-15 2015-06-18 Pico Computing, Inc. System and Method for Independent, Direct and Parallel Communication Among Multiple Field Programmable Gate Arrays

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113656345A (zh) * 2021-09-03 2021-11-16 西安紫光国芯半导体有限公司 一种计算器件、计算系统及计算方法
CN113656345B (zh) * 2021-09-03 2024-04-12 西安紫光国芯半导体有限公司 一种计算器件、计算系统及计算方法

Also Published As

Publication number Publication date
EP3504630A4 (en) 2019-07-31
WO2018050100A1 (en) 2018-03-22
EP3504630A1 (en) 2019-07-03
CN109716318B (zh) 2021-11-30
US20180081834A1 (en) 2018-03-22

Similar Documents

Publication Publication Date Title
CN109716318A (zh) 配置硬件在运行时期间多种模式下操作的装置和方法
US9792252B2 (en) Incorporating a spatial array into one or more programmable processor cores
US10452452B2 (en) Reconfigurable processor fabric implementation using satisfiability analysis
KR101551045B1 (ko) 요소 이용을 위한 상태 그룹화
CN102385504B (zh) 改进的处理器架构
CN113064852B (zh) 一种可重构处理器及配置方法
JP2012074051A (ja) 任意のアルゴリズムを並列計算するための再構成可能な論理回路装置
Wang et al. Reconfigurable hardware accelerators: Opportunities, trends, and challenges
CN113312283A (zh) 一种基于fpga加速的异构图学习系统
JP2007522571A5 (zh)
JP2013122764A (ja) 再構成可能プロセッサ及び再構成可能プロセッサのミニコア
EP3180860B1 (en) Reconfigurable integrated circuit with on-chip configuration generation
Milojicic Accelerators for artificial intelligence and high-performance computing
JP7250953B2 (ja) データ処理装置、及び人工知能チップ
CN102129495B (zh) 一种降低可重构算子阵列结构功耗的方法
CN111178492A (zh) 计算装置及相关产品、执行人工神经网络模型的计算方法
US20160283235A1 (en) Controlling data flow between processors in a processing system
CN112558937B (zh) 页面管理方法、装置、电子设备、介质及产品
Wiegand et al. Definition of a configurable architecture for implementation of global cellular automaton
JP2018206195A (ja) 演算システム、演算システムの制御方法およびプログラム
JP2007257216A (ja) 回路構成を動的に切り替える並列処理装置
CN113867793A (zh) 计算装置、集成电路芯片、板卡、电子设备和计算方法
de Frutos et al. Decision trees for obtaining active rules in transition p systems
CN106024056A (zh) 基于复用器的三态内容寻址存储器
Gong et al. Processing LSTM in memory using hybrid network expansion model

Legal Events

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