CN103354977A - 在集成电路内进行处理器系统的扩展 - Google Patents

在集成电路内进行处理器系统的扩展 Download PDF

Info

Publication number
CN103354977A
CN103354977A CN2011800654255A CN201180065425A CN103354977A CN 103354977 A CN103354977 A CN 103354977A CN 2011800654255 A CN2011800654255 A CN 2011800654255A CN 201180065425 A CN201180065425 A CN 201180065425A CN 103354977 A CN103354977 A CN 103354977A
Authority
CN
China
Prior art keywords
described process
processor system
circuit
special circuit
psc
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
CN2011800654255A
Other languages
English (en)
Other versions
CN103354977B (zh
Inventor
布雷德利·L·泰勒
卢廷
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.)
Xilinx Inc
Original Assignee
Xilinx Inc
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 Xilinx Inc filed Critical Xilinx Inc
Publication of CN103354977A publication Critical patent/CN103354977A/zh
Application granted granted Critical
Publication of CN103354977B publication Critical patent/CN103354977B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/7889Reconfigurable logic implemented as a co-processor
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Logic Circuits (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Stored Programmes (AREA)
  • Advance Control (AREA)

Abstract

描述一种集成电路(200、300、400)的实施例。该集成电路包括:处理器系统(202、302、402),该处理器系统经配置以运行程序代码(315,415);以及在所述集成电路的可编程电路系统(204、304、404)内实施的过程专用电路(282、320、440、445),其中所述过程专用电路耦接到所述处理器系统并且经配置以执行由所述处理器系统所卸载的过程,其中所述处理器系统经配置以将所述过程卸载给所述过程专用电路来代替运行程序代码,从而执行所述过程。

Description

在集成电路内进行处理器系统的扩展
技术领域
本说明书所揭示的一个或多个实施例涉及集成电路(IC)。更确切地说,一个或多个实施例涉及对在IC内实施的处理器系统扩展。
背景技术
集成电路(IC)可以经实施以执行所规定的功能。一种类型的IC为可编程IC,例如,现场可编程门阵列(FPGA)。FPGA通常包括可编程单元片阵列。这些可编程单元片可以包括,例如,输入/输出块(IOB)、可配置逻辑块(CLB)、专用随机存取存储器块(BRAM)、乘法器、数字信号处理块(DSP)、处理器、时钟管理器、延迟锁定环路(DLL)等等。
每个可编程单元片通常都包括可编程互连电路系统和可编程逻辑电路系统。可编程互连电路系统通常包括不同长度的大量互连线,这些互连线由可编程互连点(PIP)互连。可编程逻辑电路系统使用可编程元件来实施用户设计的逻辑,这些可编程元件可以包括,例如,函数发生器、寄存器、算术逻辑等等。
可编程互连电路系统和可编程逻辑电路系统的编程方式通常为,将配置数据流载入到内部配置存储器单元中,所述内部配置存储器单元对如何配置可编程元件进行了定义。配置数据可以从存储器读取(例如,从外部PROM读取)或可以通过外部装置写入FPGA中。随后,各个存储器单元的集体状态可以确定FPGA的功能。
另一种类型的可编程IC为复杂可编程逻辑装置(CPLD)。CPLD包括用互连开关矩阵连接在一起并且连接到输入/输出(I/O)资源的两个或多个“功能块”。CPLD的每个功能块都包括与可编程逻辑阵列(PLA)和可编程阵列逻辑(PAL)装置中所使用结构相似的二级AND/OR结构。在CPLD中,配置数据通常片上存储在非易失性存储器中。在一些CPLD中,配置数据首先片上存储在非易失性存储器中,然后作为初始配置(编程)序列的一部分被下载到易失性存储器。
对于所有这些可编程IC,装置的功能性由提供给装置以控制装置功能性的数据位来控制。数据位可以存储在易失性存储器(例如,像FPGA和一些CPLD中的静态存储器单元)中、非易失性存储器(例如,像一些CPLD中的FLASH存储器)中或任何其他类型的存储器单元中。
其他可编程IC通过使用处理层(例如,金属层)而得到编程,所述处理层可编程地将装置上的各元件互连。这些可编程IC称为掩模可编程装置。可编程IC也可以用其他方式来实施,例如,使用熔丝技术或反熔丝技术。短语“可编程IC”可以包括但不限于这些装置,而且可以另外包含仅部分可编程的装置,包括,例如,专用集成电路(ASIC)。例如,另一种类型的可编程IC包括硬编码晶体管逻辑和可编程交换组构的组合,所述可编程交换组构可编程地与硬编码晶体管逻辑互连。
一些现代IC,包括上文论述的各种IC中的一些IC,其包括能够运行程序代码的嵌入式处理器。该处理器可以制造为同一裸片的一部分,该裸片包括可编程逻辑电路系统以及可编程互连电路系统,这两者也被统称为IC中的“可编程组构”。应了解,在处理器内运行程序代码有别于对在IC上可用的可编程组构进行“编程”或“配置”。对IC中的可编程组构进行编程或配置的行为,会按照在该可编程组构内的配置数据的规定引起不同物理电路系统的实施。
发明内容
本说明书内所揭示的一个或多个实施例涉及集成电路(IC),更确切地说,涉及对在IC内实施的处理器系统进行扩展。
集成电路的一个实施例可以包括:处理器系统,该处理器系统经配置以运行程序代码;以及在该集成电路的可编程电路系统内实施的过程专用电路,其中该过程专用电路可以耦接到该处理器系统并且可以经配置以执行由该处理器系统所卸载的过程,其中该处理器系统可以经配置以将该过程卸载给该过程专用电路而不是运行程序代码,从而执行该过程。
在该实施例的一方面中,该处理器系统可以进一步经配置以根据功率消耗减少量来确定是否将该过程卸载给该过程专用电路,所述功率消耗减少量是通过使用过程专用电路而不是使用该处理器系统来实施该过程所获得的。
在该实施例的另一方面中,该处理器系统可以进一步经配置以根据完成时间改进量来确定是否将该过程卸载给该过程专用电路,所述完成时间改进量是通过使用该过程专用电路而不是使用该处理器系统来实施该过程所获得的。
在该实施例的又另一方面中,该处理器系统可以进一步经配置以根据时延减少量来确定是否将该过程卸载给该过程专用电路,所述时延减少量是通过使用该过程专用电路而不是使用该处理器系统来实施该过程所获得的。
在该实施例的另一方面中,该可编程电路系统可以为可编程组构,并且通过使用该过程专用电路而不是使用该处理器系统来实施该过程所获得的完成时间改进量进一步包括用于对该可编程组构中的至少一部分动态地进行重新配置以实施该过程专用电路所需的时间的测量值。
在该实施例的又另一方面中,通过使用该过程专用电路而不是使用该处理器系统来实施该过程所获得的完成时间改进量取决于多个存储器中用于将该过程所需的源数据提供给该过程专用电路的存储器。
在该实施例的另一方面中,该处理器系统可以进一步经配置以确定在该可编程组构内是否存在大量可用空间来实施该过程专用电路。
在该实施例的又另一方面中,该可编程电路系统可以为可编程组构,并且该处理器系统可以进一步经配置以启动该可编程组构中的至少一部分的动态重新配置以实施该过程专用电路。
在集成电路内对处理器系统进行扩展的方法的实施例可以包括:在该处理器系统内运行程序代码,所述处理系统在该集成电路内实施,其中该集成电路可以包括可编程电路系统,并且其中该处理器系统可以耦接到该可编程电路系统;使用在该可编程电路系统内实施的过程专用电路执行过程,来代替运行程序代码以在该处理器系统上执行该过程;以及从对该处理器系统可用的该过程专用电路中形成该过程的结果。
在该实施例的一方面中,该方法可以进一步包括根据功率使用减少量来确定是否使用该过程专用电路来执行该过程,所述功率减少量是通过使用该过程专用电路而不是使用该处理器系统来实施该过程所获得的。
在该实施例的另一方面中,该方法可以进一步包括根据时延减少量来确定是否使用该过程专用电路来执行该过程,所述时延减小量是通过使用该过程专用电路而不是使用该处理器系统来实施该过程所获得的。
在该实施例的又另一方面中,该方法可以进一步包括根据完成时间减少量来确定是否使用该过程专用电路来执行该过程,所述完成时间减少量是通过使用该过程专用电路而不是使用该处理器系统来实施该过程所获得的。
在该实施例的另一方面中,通过使用该过程专用电路而不是使用该处理器系统来实施该过程所获得的完成时间减少量可以进一步包括用于对该可编程电路系统中的至少一部分动态地进行重新配置以实施该过程专用电路所需的时间的测量值。
在该实施例的又另一方面中,通过使用该过程专用电路而不是使用该处理器系统来实施该过程所获得的完成时间改进量的测量值可以取决于多个存储器中用于提供源数据的存储器,所述源数据是该过程专用电路为执行该过程而所需的。
在该实施例的另一方面中,该方法可以进一步包括确定在该可编程组构内是否存在足够量的可用空间来实施该过程专用电路。
在该实施例的又另一方面中,该方法可以进一步包括对该可编程组构中的至少一部分动态地进行重新配置以实施该过程专用电路。
在该实施例的另一方面中,该方法可以进一步包括:从由该程序代码规定的多个过程中选择该过程;选择规定过程专用电路的配置数据,所述过程专用电路以硬件形式实施所选过程;以及载入所选配置数据以在该集成电路的可编程电路系统内实施该过程专用电路。
在集成电路内对处理器系统进行扩展的方法的另一实施例可以包括:在处理器系统内运行程序代码,其中该程序代码规定多个过程;从由该程序代码规定的多个过程中选择一个过程;选择规定过程专用电路的配置数据,所述过程专用电路以硬件形式实施所选过程;载入所选配置数据以在该集成电路的可编程组构内实施该过程专用电路;以及使用该过程专用电路而不是该处理器系统来执行所选过程。
在该实施例的一方面中,该方法可以进一步包括该处理器系统将过程描述符储存于该处理器系统内的存储器中,所述存储器可以由该过程专用电路存取,其中该过程描述符规定了用于所选过程的源数据。
在该实施例的另一方面中,该方法可以进一步包括该过程专用电路通过从该处理器系统内的存储器中存取该过程描述符来确定该源数据。
在该实施例的又另一方面中,该方法可以进一步包括该过程专用电路将所选过程的结果提供给该处理器系统。
附图说明
图1为图示根据本说明书内所揭示的一个实施例的集成电路(IC)架构的第一方框图。
图2为图示根据本说明书内所揭示的另一个实施例的IC的第二方框图。
图3为图示根据本说明书内所揭示的另一个实施例的配置用于对处理器系统进行扩展的IC的第三方框图。
图4为图示根据本说明书内所揭示的另一个实施例的配置用于对处理器系统进行扩展的IC的第四方框图。
图5为图示根据本说明书内所揭示的另一个实施例的在IC内对处理器系统进行扩展的方法的第一流程图。
图6为图示根据本说明书内所揭示的另一个实施例的将过程卸载给在IC的可编程组构内实施的电路系统的方法的第二流程图。
图7为图示根据本说明书内所揭示的另一个实施例的将过程卸载给在IC的可编程组构内实施的电路系统的方法的第三流程图。
图8为图示根据本说明书内所揭示的另一个实施例的将过程卸载给在IC的可编程组构内实施的电路系统的方法的第四流程图。
具体实施方式
尽管本说明书是以权利要求书作为结论,权利要求书限定了新颖的一个或多个实施例的特征,但是应相信,可以通过考虑结合附图所做的描述而更好地理解所述一个或多个实施例。按照要求,本说明书内揭示了一个或多个详细实施例。但是,应了解,所述一个或多个实施例仅仅为示例性的。因此,本说明书内所揭示的特定结构及功能细节不应解释为限制性的,而是仅仅作为权利要求书的依据,以及作为用于教示本领域技术人员在实际中的任何恰当详细结构中以各种方式应用该一个或多个实施例的代表性依据。此外,本文所使用的术语和短语并不意图用作限制,而是意图提供对本文所揭示的一个或多个实施例的可理解的描述。
本说明书内所揭示的一个或多个实施例涉及集成电路(IC),更确切地说,涉及对在IC内实施的处理器系统进行扩展。IC可以经实施以包括耦接到可编程组构部分的处理器系统。该处理器系统的功能性可以通过利用该可编程组构与该处理器系统相结合操作(例如,以互补方式)的能力而得到扩展。由或可以由该处理器系统执行的一个或多个过程(例如,通过程序代码的运行)可以被卸载到在该可编程组构内实施的电路系统,例如,硬件。在一些情况中,在电路系统中实施软件过程与在该处理器系统内通过程序代码的运行来实施该过程相比,要求较少的完成时间,具有较少的时延,以及/或者使用较少的能量。
相应地,可以选择一个或多个过程并将其卸载到在该可编程组构内实施的电路系统。该电路系统经特别设计以实施卸载过程。例如,在由该处理器系统运行的程序代码中所规定的特殊算法或流程可以以硬件形式在该可编程组构内实施。该处理器系统可以指导该电路系统(例如,过程专用电路)来执行该过程。因此,该过程是由在该可编程组构内的过程专用电路来执行的,而不是通过在该处理器系统内运行程序代码来执行的。
要卸载的过程的选择以及关于何时卸载过程的确定可以由该处理器系统使用各种不同技术来执行。在一个方面中,此类确定可以预先进行确定。例如,可以将指示符置于由该处理器系统运行的程序代码内,所述处理器系统规定了要被卸载的过程。在另一方面中,对于过程选择以及何时将所选过程卸载到该可编程组构的问题,该处理器系统可以做出更加动态且智能的决策。
图1为图示根据本说明书内所揭示的一个实施例的用于IC的架构100的第一方框图。架构100可以在,例如,现场可编程门阵列(FPGA)类型的IC内实施。如图所示,架构100包括若干不同类型的可编程电路,例如,逻辑、块。例如,架构100可以包括大量不同的可编程单元片,包括多吉比特收发器(MGT)101、可配置逻辑块(CLB)102、随机存取存储器块(BRAM)103、输入/输出块(IOB)104、配置和时序逻辑(CONFIG/CLOCK)105、数字信号处理块(DSP)106、专门输入/输出块(I/O)107(例如,配置端口和时钟端口),以及其他可编程逻辑108,诸如数字时钟管理器、模/数转换器、系统监控逻辑等等。
在一些可编程IC中,每一可编程单元片都包括可编程互连元件(INT)111,该INT具有通往和来自在每一相邻单元片中的对应INT111的标准化连接。因此,这些INT111一起实施所示IC的可编程互连结构。如图1顶部处所包括的实例所示,每个INT111还包括通往和来自同一单元片内的可编程逻辑元件的连接。
例如,CLB102可以包括可配置逻辑元件(CLE)112,该CLE可以经编程以实施用户逻辑外加单个INT111。除了一个或多个INT111之外,BRAM103还可以包括BRAM逻辑元件(BRL)113。通常,在一个单元片中所包括的INT111的数目取决于该单元片的高度。在所图示的实施例中,一个BRAM单元片具有同五个CLB相同的高度,但是也可以使用其他数目(例如,四个)。除了合适数目的INT111之外,DSP单元片106还可以包括DSP逻辑元件(DSPL)114。除了INT111的一个实例之外,IOB104还可以包括,例如,输入/输出逻辑元件(IOL)115的两个实例。所属领域的技术人员将会清楚,连接至(例如)IOL115的实际I/O板通常并不局限于IOL115的区域。
在图1所示的实例中,裸片中心附近的列状区域(图1中用阴影示出)用于配置、时钟以及其他控制逻辑。由此列延伸的水平区域109用于在可编程IC的整个宽度上分布时钟与配置信号。
利用图1所示架构的一些可编程IC包括使规则的列状结构分裂的额外逻辑块,这些额外逻辑块构成该可编程IC的大部分。所述额外逻辑块可以是可编程块和/或专用电路系统。例如,描绘为PROC110的处理器块跨越了若干列的CLB及BRAM。
PROC110可以实施为硬连线处理器,该硬连线处理器被制造成实施IC的可编程组构的裸片中一部分。PROC110可以表示各种不同的处理器类型和/或系统中的任一者,从复杂性上说,涵盖从单个处理器(例如,能够运行程序代码的单个核心)到具有一个或多个核心、模块、协处理器、接口及类似者的完整处理器系统。
在更复杂的布置中,例如,PROC110可以包括一个或多个核心(例如,中央处理单元)、缓存存储器、存储器控制器,单向和/或双向接口,所述单向和/或双向接口可配置成直接耦接到该可编程IC的I/O引脚以及/或者耦接到该可编程IC的可编程组构。短语“可编程组构”可以指代在IC内的可编程电路系统,例如本文所描述的各种可编程或可配置电路块或单元片,以及根据载入到该IC中的配置数据选择性地将各种电路块、单元片及/或元件耦接的互连电路系统。
使用在PROC110内可用的各种接口,由PROC110运行的程序代码所定义的过程可以被卸载到在该可编程组构内实施的电路系统。例如,载入到具有所述架构的IC中的配置数据可以在该可编程组构内实施一个或多个过程专用电路(PSC)。PROC110可以选择与硬件实施方案(即PSC或规定PSC的配置数据)相关联的一个或多个过程,并卸载所述过程以便在该可编程组构内实施。
图1意图仅说明可以用于实施可编程IC的示例性架构。例如,一列中的逻辑块数目、这些列的相对宽度、列的数目与次序、这些列中所包括的逻辑块类型、逻辑块的相对大小,以及图1顶部处所包括的互连/逻辑实施方案均纯粹为示例性的。在实际可编程IC中,例如,在CLB出现的任何地方通常都包括一个以上邻近列的CLB,以促进用户电路设计的有效实施。然而,相邻CLB列的数目可以随可编程IC的总大小变化。
图2为图示根据本说明书内所揭示的另一个实施例配置的IC200的第二方框图。IC200可以使用各种不同架构中的任一者来实施,所述不同架构包括耦接到可编程电路系统(例如可编程组构204)的处理器系统(PS)202。例如,IC200可以使用与图1所示的架构100相同的或相似的架构来实施,尽管并非一定如此。一般而言,IC200更详细地图示了可以用于将PS202与在可编程组构204内实施的电路系统耦接的各种接口,用于促成将基于软件的过程从PS202卸载到硬件。
在图2所示的实例中,所图示的PS202占据了IC200裸片的近三分之二,而所示的可编程组构204占据了同一裸片的近三分之一。然而,图2并不意图为IC200的尺度表示。相反,所提供的图2是出于说明的目的,并且它并不意图作为对本说明书内所揭示的一个或多个实施例的限制。
一般而言,PS202被实施为IC200内的硬连线系统。对于在PS202内的各种组件或模块通过带箭头的线(例如,信号或通信链路)来耦接的情形来说,此类箭头意图示出控制的方向或控制的流向。以此而言,被图示为具有方向箭头的线的信号大体指示出,对于该信号的控制是由发出箭头的源组件所施加的,而不是由目标组件所施加的。这些箭头一般并不意图指示出数据的单向流动或者信号的方向性。以此而言,尽管存在方向箭头,但信号仍可以实施为双向信号或双向通信链路。
在本说明书内,相同的参考符号用于指代端子、信号线、导线以及它们的对应信号。以此而言,在本说明书内,术语“信号”、“导线”、“连接”、“端子”以及“引脚”有时可以互换使用。还应了解,术语“信号”、“导线”或类似者可以表示一个或多个信号,例如,单个位通过单个导线的传送,或者是多个并行位通过多个并行导线的传送。另外,根据具体情况,所图示的每个导线或每个信号都可以表示由该信号或导线连接的两个或多个组件之间的双向通信。
如图所示,PS202可以包括核心复合体206。核心复合体206可以包括核心208和210、DSP单元212和214、中断请求单元(IRQ)216以及窥探控制单元(SCU)218。核心208和210中的每一者都可以包括嵌入在其中的1级(L1)缓存器(未图示)。尽管在本文所揭示的实施例中可以使用各种不同类型的处理器核心和/或DSP单元中的任何一种,但是核心208和210均可以实施为ARM CortexTM-A9类型的处理器核心,其中每一者均具有32KB的指令缓存器以及32KB的数据缓存器。DSP单元212和214可以实施为NEONTM媒体和/或浮点处理引擎的形式。DSP单元212和214中的每一者均可以提供基于128位向量的DSP功能。ARM CortexTM-A9处理器核心和NEONTM媒体和/或浮点处理引擎均可以从英国剑桥的ARM技术有限公司(ARM Holdings ofCambridge,UK)(ARM)购得。
在PS202内,核心复合体206耦接到2级(L2)缓存器220以及芯片上存储器(OCM)222。L2缓存器220可以实施为256KB的存储器。OCM222也可以实施为256KB的存储器。核心208和210以及DSP单元212和214可以直接存取L2缓存器220和OCM222。一般而言,OCM222提供本地存储器,该本地存储器对于PS202和/或可编程组构204(例如,在可编程组构204内实施的电路)为可用的。通过比较,L2缓存器220(它也是存储器)用作PS202的缓存器。相应地,L2缓存器220可以存储小块或小部分的数据,例如,256位,它们为存储在RAM中的数据位的有效副本,例如,通过运行芯片外存储器。例如,如果针对存储在L2缓存器220中的数据发出一个读取请求,那么该数据会从L2缓存器220中读取出,而不是从RAM中撷取出。
PS202另外可以包括复位单元224、时钟单元226以及存储器控制器228。复位单元224可以接收自IC200外部的源处产生的一个或多个信号,例如信号230。信号230可以指导复位单元224使PS202和/或PS202内的一个或多个组件或所有组件复位。时钟单元226也可以从IC200外部的源处接收一个或多个参考信号,例如信号232。时钟单元226,例如,可以实施为或可以包括能够与接收到的信号232同步化的锁相环电路系统。时钟单元226可以生成可以在整个PS202内分布的一个或多个不同频率的一个或多个时钟信号(未图示)。另外,时钟单元226可以生成一个或多个不同频率的一个或多个时钟信号,该一个或多个时钟信号可以分布到可编程组构204以供在其中实施的电路使用。
存储器控制器228可以经实施以与定位在IC200外部(例如,“芯片外”)的一个或多个不同类型的RAM进行通信。例如,存储器控制器228可以经实施以存取(例如,读取和/或写入)各种类型的存储器,包括但不限于,双数据速率(DDR)2、DDR3、低功率(LP)DDR2类型的存储器,无论是16位、32位、带有ECC的16位存储器等。存储器控制器228能够与之通信的不同存储器类型的列表仅出于说明的目的提供出,并且该列表并不意图作为限制或做到详尽无遗。
PS202还可以包括直接存储器存取(DMA)接口234,该DMA接口耦接到核心交换机236并且耦接到可编程组构204。PS202进一步包括存储器交换机238,OCM222以及存储器控制器228,存储器交换机238耦接到将在本说明书内更详细描述的接口256中的一者,即接口256D。
如图所示,核心交换机236可以在PS202的各个组件之间路由信号。在一个实施例中,核心交换机236可以直接耦接到PS202的内部总线(未图示)。在此类实施例中,PS202内与核心交换机236连接的每一其他组件都可以通过该内部总线而耦接到核心交换机236。例如,接口240、242、246和248均可以经由该内部总线而耦接到核心交换机236。该内部总线可以实施为多种不同总线中的任何一种,例如,高级外围总线(APB)。
一般来说,PS202可以包括大约四类I/O。PS202可以提供闪存类型的接口、较高性能接口、较低性能接口以及调试接口。对于第一类I/O,PS202可以包括一个或多个闪存接口240,图示为240A和240B。例如,一个或多个闪存接口240可以实施为经配置以进行4位通信的四串行外围接口(Quad-SerialPeripheral Interface,QSPI)。一个或多个闪存接口240可以实施为并行8位的NOR/SRAM类型的接口。一个或多个闪存接口240可以实施为经配置以进行8位和/或16位通信的NAND接口。应了解,所描述的特定接口是出于说明而非限制的目的而提供。可以使用具有不同位宽度的其他接口。
对于第二类I/O,PS202可以包括所提供的性能水平高于第一类I/O的一个或多个接口242。接口242A至242C中的每一者都可以分别耦接到DMA控制器244A至244C。例如,一个或多个接口242可以实施为通用串行总线(USB)类型的接口。一个或多个接口242可以实施为吉比特以太网类型的接口。一个或多个接口242可以实施为安全数字(SD)类型的接口。
对于第三类I/O,PS202可以包括所提供的性能水平低于第二类I/O的一个或多个接口246,例如接口246A至246D。例如,一个或多个接口246可以实施为通用I/O(GPIO)类型的接口。一个或多个接口246可以实施为通用异步接收器/发射器(UART)类型的接口。一个或多个接口246可以实施为串行外围接口(SPI)总线类型的接口形式。一个或多个接口246可以实施为控制器区域网(CAN)类型的接口形式。一个或多个接口246可以实施为三重定时器计数器(TTC)和/或监视计时器(WDT)类型的接口形式。
对于第四类I/O,PS202可以包括一个或多个调试接口248,例如,处理器JTAG(PJTAG)端口或接口248A和跟踪接口248B。PJTAG端口248A可以向PS202提供外部调试接口。跟踪接口248B可以提供用于从可编程组构204接收调试(例如,跟踪)信息的端口、用于将PS202的调试数据向外发送至可编程组构204的端口,以及交叉触发端口。该交叉触发端口使在该可编程组构204内的电路系统能够触发在PS202内的调试功能,例如跟踪。相似地,PS202可以在可编程组构204内实施的电路内启动调试功能。
如图所示,接口240、242、246和248中的每一者都可以耦接到多工器250。多工器250提供了可以直接路由或耦接到IC200外部引脚的多个输出端,例如内部设置有IC200的封装内的球。例如,IC200的多个I/O引脚,例如,53个引脚,可以在接口240、242、246和248之间共用。用户可以将多工器250配置为PS202的一部分以用于选择在接口240至248中所使用的接口,并且因此,选择其中经由多工器250耦接到IC200的I/O引脚的接口。
如图所示,接口242至248还可以选择性地耦接到组构多工器输入/输出(FMIO)接口252。相应地,基于IC200的用户配置,更确切地说是PS202的用户配置,I/O类型二、三或四中的任一者,即接口242至248,可以经由FMIO接口252耦接到IC200的可编程组构204。这使经由接口242至248中的任一者通信的数据能够路由到在可编程组构204内的电路系统以进行进一步的处理和/或监控。
控制寄存器254可以经配置以控制PS202的各方面(如果不是大部分)。可以将一个或多个命令写入控制寄存器254以控制或调控PS202的操作。例如,可编程组构204内的电路可以通过接口(例如,接口256B)对控制寄存器254进行写入操作,本文将对此进行进一步详细描述。控制寄存器254可以控制或调控功能,例如控制知识产权(IP)启用重设,对时钟单元226产生的时钟频率进行设置,规定I/O驱动强度,以及其他系统级功能。控制寄存器254可以调控额外的功能,例如,使PS202电源关闭、单独使PS202的特定接口电源关闭或停用等等。控制寄存器254可以通过总线来存取,例如将控制寄存器254耦接到核心交换机236的APB(未图示)。
PS202也可以包括直接与可编程组构204耦接的一个或多个接口256,图中所示为接口256A至256D。在一个实施例中,接口256中的一个或多个或所有接口均可以根据由ARM公布的AMBA AXI协议规范(AXI)来实施。例如,接口256中的每一者都可以根据AMBA AXI协议规范v.2.0来实施。一般来说,AXI为一种高性能高频率的接口,其适用于亚微米互连。
再次参看图2,接口256A和256B,例如,每个均可以经实施以提供两个32位信道,这两个信道将可编程组构204与核心交换机236耦接起来。接口256A可以实施为通用主接口。接口256A,例如,可以用于执行从PS202和/或其中的DMA控制器到可编程组构204的通用数据传递。接口256B可以实施为通用从属接口。例如,接口256B可以用于执行PS202与可编程组构204之间的通用数据传递。
通过接口256A至256B以及核心交换机236,可编程组构204内实施的电路可以存取接口240、242、246和248中的各个接口。通过与核心交换机236组合的接口256A和/或256B,可编程组构204内的电路进一步可以直接存取OCM222以及通过存储器控制器228存取芯片外存储器等等。
接口256C可以实施为64位的从属接口,它将可编程组构204直接与核心复合体206耦接起来,且更确切地说是,直接与SCU218耦接起来。通过接口256C和SCU218,可编程组构204内实施的电路具备对以下装置的直接存取能力:核心208和210中每一者内的L1缓存器、IRQ216、L2缓存器220以及OCM222。相应地,可编程组构204内的电路可以对这些存储器进行读取和/或写入操作,并且可以检测核心复合体206内生成或断定的中断。此外,信号290可以表示来自可编程组构204的一个或多个中断,这些中断可以作为端口或信号提供给IRQ216;以及/或者表示来自PS202且尤其是来自核心复合体206的一个或多个中断副本,这些中断副本可以作为端口或信号提供给可编程组构204。在另一个实施例中,接口256C可以提供对核心复合体206的一致存取,该核心复合体适合供充当协处理器的电路来使用。例如,在可编程组构204内以PSC形式(例如,PSC282)实施的软处理器可以经由接口256C与PS202进行通信。
接口256D可以经实施以提供多个(例如,四个)64位的从属接口。接口256D可以用于有效地在PS202与可编程组构204内实施的电路之间交换大量数据。如图所示,接口256D能够使可编程组构204内实施的电路经由存储器交换机238存取OCM222,并经由存储器交换机238和存储器控制器228来存取芯片外存储器。
PS202进一步包括处理器配置存取端口(PCAP)258。如图所示,PCAP258可以耦接到配置控制器260以及系统监控器块262,这两块均位于可编程组构204内。
配置控制器260和系统监控器块262可以采用硬连线电路系统的形式来实施。配置控制器260负责将配置数据写入配置存储器单元,由此物理性地实施可编程组构204内配置数据所规定的电路系统。系统监控器块262可以执行以下功能,例如,模数转换、电压监控、电流监控和/或温度监控。
可编程组构204可以经实施以包括一个或多个可编程电路块,这些块可以使用可编程互连电路系统耦接在一起。可编程电路块以及可编程互连电路系统可以经配置以基于载入到IC200中的配置数据来实施一个或多个不同的物理电路,例如,用户电路系统280和/或PSC282。应了解,可编程组构204(除了其中实施的各种硬连线电路之外)是不运行或运转的,直到有配置数据载入到配置存储器中致使物理电路系统将在可编程组构204内实施为止。
可编程组构204还可以经配置以实施采用硬连线电路形式的一个或多个接口。例如,JTAG接口264、一个或多个MGT266A至266D、外围组件互连高速(PCIe)接口268、内部配置存取端口(ICAP)270以及安全端口272可以作为硬连线电路而被包含在内,尽管它们位于IC200的可编程组构部分内。参照可编程组构204所描述的各个接口示出了可以被实施的示例性接口,这些接口并不意图为限制性的或对本说明书内所揭示的一个或多个实施例构成限制。
例如,配置数据可以载入到IC200中,并由配置控制器260接收。在一个实施例中,配置数据可以通过PS202进行接收,该PS202可以控制IC200的配置过程。配置控制器260可以将从PS202经由PCAP258接收到的配置数据载入到IC200的配置存储器(未图示)内。可以按照载入到IC200的配置存储器中的特定配置数据的规定,在可编程组构204内实施或形成不同的物理电路,例如,用户电路系统280和/或PSC282。应了解,由于使用了硬连线电路系统,通过这种方式来载入配置数据不要求有可编程组构204的初始配置。由于载入配置数据而在可编程组构204内实施的电路,尽管这些电路是物理电路,但是通常也被称作“软(的)”,因为该电路系统形成于可编程组构内,而不是使用硬连线或是以其他方式固定于IC200内。
PSC282以及用户电路系统280可以通过所描述的各个接口中的任一者耦接到PS202。经由接口256可以实现直接存取,然而,通过FMIO接口252可以帮助实现对PS202的进一步存取。应了解,被卸载到PSC282的具体功能性及过程将大体上确定与PS202通信所必需的接口类型。
图3为图示根据本说明书内所揭示的另一个实施例的配置用于对处理器系统进行扩展的IC300的第三方框图。IC300可以基本上按照参考图2所示IC200的描述来实施。但是,图3所示为IC300的抽象图,其图示了将基于软件的过程从PS302卸载到在可编程组构304内的电路系统,例如PSC320。
图3所示为运行程序代码315的核心310。程序代码315可以包括或规定一个或多个不同的过程。为便于图示,程序代码315在图中示为包括过程1、过程2、过程3以及过程4。过程2上覆有阴影以说明过程2与一个PSC相关联,在此实例中为PSC320。如图所示,PSC320在可编程组构304内实施。相应地,核心310可以经编程以确定对于过程2存在一个PSC。不同于运行过程2,核心310可以将原本会由PS302通过运行程序代码来执行的处理卸载给可编程组构304。例如,核心310可以进行安排以使得对于执行过程2所必需的任何源数据成为对PSC320可用的输入。一旦由PSC320所进行的处理完成,由PSC320所生成的任何结果数据可以被提供回PS302以供核心310处理或使用。
在一个实施例中,可以对过程2进行识别或是以其他方式在程序代码315内进行标记以便在可编程组构304内实施。例如,核心315可以识别一个指示符,该指示符规定过程2将不运行,而是由PSC320以硬件形式执行。在另一个实施例中,过程2可以简单地为指令,这些指令告知核心315将具体过程卸载给PSC320或是使用PSC320来执行过程。在该情况中,过程2不需要包括规定要执行的该过程的实际程序代码。相反,在研发期间,可以做出相应决策,以在硬件内而不是在软件中实施过程2。过程2可以有效地更换为指导PS302将该过程卸载到PSC320的指示符。在又另一实施例中,可以动态地做出将过程2卸载到PSC320的决策,例如在IC300的操作期间现场做出。
不论是在IC300内实施的系统的设计循环期间还是由PS302在现场动态地执行决策,所述决策将以PSC形式来实施具体过程,该决策仍可以基于一项或多项不同的成本措施或者简单来说即“成本”来做出。可以对这些成本进行评估以确定运行成本,该运行成本反映了与在PS302中以软件形式执行该过程相关联的一项或多项成本。可以进一步对一项或多项成本进行评估以确定用于将该过程卸载到可编程组构304中的PSC320的实施成本。一般来说,当实施成本小于运行成本时,或者小于运行成本达一个预先确定的量或百分比时,可以将过程卸载到对应的PSC。
在一个实施例中,该运行成本及该实施成本可以均包括时间分量,或功率分量,或者是以某种方式组合的时间分量以及功率分量。在一些情况中,将过程从PS302卸载到可编程组构304是有益的,因为该PSC执行该过程可以比PS302运行该过程来得更快。在其他情况中,该PSC执行该过程所用能量,要小于PS302运行该过程所用能量。在另外的其他情况中,该PSC执行该过程所用时间和能量均比PS302要少。可以对运行成本和实施成本进行计算和比较,以识别出将过程卸载会实现时间节省,或功率节省,或时间和功率两方面的节省的情形。
在一个实施例中,可以根据时延来测量该时间分量。例如,是否将过程卸载的决策可以取决于该PSC执行该过程所用时延是否要少于PS302运行该过程所用时延。在一个实例中,一个或多个PSC可以在可编程组构304内实施,每一PSC都可以经配置以处置或处理提供给图2中的IRQ216的中断。PS302的一个或多个中断可以经由该IRQ暴露于在可编程组构304中的电路系统,例如一个或多个PSC。一旦检测到中断之后,该中断可以由可编程组构304内的该PSC来处置,而不是通过在PS302内运行例外处置程序代码(exceptionhandling program code)来处置。使用PSC处置中断可以通过使PS302能够对其他任务或请求作出响应来减少系统时延。
图4为图示根据本说明书内所揭示的另一个实施例的配置用于对处理器系统进行扩展的IC400的第四方框图。IC400可以基本上按照参考图2所示IC200的描述来实施。图4类似于图3,图中所示为IC400的抽象图,用于展示将基于软件的过程从PS402卸载到在可编程组构404内的电路系统。
图4所示为运行程序代码415的核心410。程序代码415可以包括或规定一个或多个不同的过程。为便于说明,程序代码415在图中示为包括过程1、过程2、过程3以及过程4。过程2和4被覆有阴影以说明该两个过程均与规定PSC的对应配置数据相关联。过程2与过程2配置数据相关联。过程4与过程4配置数据相关联。
例如,过程2以程序代码来实施,并且还与图中示为“过程2配置数据”的配置数据相关联。当过程2配置数据载入到IC400中时,PSC440在可编程组构404内实施。过程4以程序代码来实施,并且还与图中示为“过程4配置数据”的配置数据相关联。当过程4配置数据载入到IC400中时,PSC445实施在可编程组构404内实施。
PSC440以及PSC445在图中被示为方框,用于说明要求在可编程组构404内实施每一相应电路的区域。实施PSC440及445所要求的区域可以是已知的并且储存为程序代码415中的一部分,或者储存于在IC400内别处的存储器内以供需要时使用。
在一个实施例中,在研发期间每一PSC都可以在可编程组构中实施,以使得该PSC的大小可以得到估计或确定。在另一个实施例中,该PSC的大小可以得到估计或计算,依据是在一个程序代码行(LOC)或指令与实施该LOC或指令所需的该可编程组构中的组件的平均数目之间的关系。例如,每一指令都可以要求实施特定数目的LUT。因此,用于给定过程的PSC的大小可以被确定为用于该过程的LOC乘以实施每一LOC所需的硬件单元的数目。
如图所示,可编程组构404包括用户电路系统420,所述用户电路系统420表示已在可编程组构404内实施的用户电路设计。IC400还包括配置控制器425,配置控制器425经配置以将配置数据载入到配置存储器单元中,从而在可编程组构404内实施电路系统。可用空间430表示可编程组构404中的未使用部分。可用空间430的大小也可以是已知的,或确定的,并且对于核心410为可用的。例如,配置控制器425可以计算可用空间430并且使该信息通过标准化应用编程接口(API)而为PS402可用。
相应地,在一个实施例中,当决定是否在可编程组构404内实施诸如过程2的具体过程来代替运行过程2时,核心410可以确定在可编程组构404内的可用空间430是否足够用于实施PSC440。如图所示,可用空间430足够大到能实施PSC440,但不是PSC445。
应了解,在IC400的操作期间,可用空间430的量可以改变,例如,当在现场的同时IC400有时会经历动态部分重新配置、完整重新配置或类似者时。相应地,是否可以以硬件形式实施给定过程可以取决于已经简要论述的各个因素以及将过程卸载可能需要的特定时间处的可用空间430的量。
如所提及,在确定是否要将具体过程卸载到该可编程组构时,可以将运行成本与实施成本进行比较。一般来说,该实施成本和该运行成本均可以取决于时间(例如,可以执行该过程的速度)、时延、功率(例如,执行该过程所消耗或所需要的功率的量),或者是时间、时延和/或功率的某种组合。
可以使用各种不同的技术来计算该运行成本。在一方面中,例如,该运行成本可以根据要运行的过程的LOC数目来确定。在另一方面中,该运行成本可以根据运算的数目和/或要运行的每一相应运算的类型来确定。例如,可以已知一个加法运算需要第一时间量以及第一功率量来运行。可以已知一个具体的DSP运算需要第二时间量以及第二功率量来运行。关于功率消耗以及运行时间的信息大体上可获自该处理器或PS的制造商或提供商。
因此,对于给定的处理器或PS,运行LOC或运行一个特定运算所需要的时间大体上是已知的。相似地,运行LOC或运行给定类型的运算所需要的功率量大体上是已知的。将由PS运行的程序代码中的每一可被卸载过程都可以与能够规定该运行成本的配置文件相关联。该运行成本可以反映功率消耗、运行时间、时延,或者是功率消耗、运行时间和/或时延中的两者或两者以上的组合。
也可以使用各种不同的技术来确定该实施成本。例如,实施成本可以取决于为建立(setup)该过程的卸载而必须由PS执行的一个或多个运算。为建立卸载,例如,该PS可能首先需要确保该PSC所需要的源数据作为输入是可用的。因此,该PS可能需要从源存储器读取数据,计算该源数据,将该源数据写入到一个可以供该PSC存取该源数据的目的地存储器,以及/或者执行一个或多个地址转译。以此而言,由该PS执行的建立可以具有必须包含在该实施成本中的功率和/或时间花费。
此外,存取(例如,读取和/或写入)存储器所需要的时间量可以取决于该存储器的位置。相同原理对于功率消耗也适用。一般来说,位于该PS内部的存储器存取所用的时间及功率花费可以比位于该IC外部的存储器要少,例如,通过该存储器控制器存取的RAM。另外,L1缓存器存取所用时间可以比L2缓存器要少,并且L1或L2缓存器存取所用时间可以比OCM要少。
当尚未在该编程组构内实施该PSC时,需要额外时间将该配置数据载入到配置存储器中以实施该PSC。实施该PSC所需要的时间可以取决于,例如,要载入的配置数据的量以及可以从外部源载入该配置的速度。在该可编程组构内实施该PSC所需要的时间和功率可以被估计并计入该实施成本中。
就将要由该PSC执行的实际处理而言,可以根据诸如要执行的运算的数目和/或类型、要执行这些运算的具体电路等因素来关于完成卸载过程所需要的功率消耗和时间对PSC进行简要描述。通常,可以根据将要由该PSC执行的运算的数目、将要由该PSC执行的运算的类型以及将要实施卸载过程的运算的该PSC中的具体电路元件来确定功率消耗及速度。
实施成本也可以取决于将卸载过程的结果从该PSC返回到该PS的方式。如所提及,储存结果的具体存储器以及将这些结果发送到该PS所通过的通信信道可以影响时间及功率,因此,影响该实施成本。
除了时间及功率以外,如图4所示,在该可编程组构内必须有足够的空间可用于实施PSC。例如,每一过程都可以与运行成本、实施成本以及规定实施该过程的PSC的配置数据相关联。该实施成本可以包括,或规定,在该可编程组构内实施该PSC所需要的面积的估计。因此,在一个方面中,可以储存针对每一过程的运行成本。可以储存该过程的实施成本的一个或多个因素。如所提及,但是,由于在IC自身内的变化条件,例如,是否已实施该PSC,在该可编程组构内的可用空间是否足够等,可能需要动态地计算一个或多个其他因素,例如,在现场的运算期间。
一般来说,可以通过将所描述的各个单个的成本分量进行求和来计算实施成本和/或运行成本。如所提及,这些成本分量中的一者或多者可以加权,例如,乘以某一因子,该因子会将总体实施成本和/或运行成本计算内的具体成本分量的权提升或降低。为便于说明而提供用于确定运行成本和实施成本的不同方法和技术,同样地,并非意图将其限制在本说明书内所揭示的一个或多个实施例中。
在一个实施例中,被卸载到PSC的过程可以是涉及到将数据输入到IC和PS或者将数据从该IC和/或PS输出的过程。该PSC可以有效地实施该PS的I/O外围设备。例如,PSC可以经配置以接受传入的数据,执行该数据的初始处理,以及将该数据储存于可由该PS存取的RAM内。相应地,该PS可以在需要时从该RAM存取该数据。数据在该RAM内的储存以及预处理可以由该PSC执行而不涉及该PS。相似地,储存于诸如RAM的存储器中的数据可以由PSC输出而不涉及该PS。该PSC可以从指定的存储器读取数据,在需要时执行任何处理,以及输出所得数据而不涉及该PS。例如,该PS可以使用在本说明书内所描述的技术中的一者或多者来通知将要输出的数据的PSC。说明将PSC用作上述I/O外围设备的一个实例处于视频处理的背景中。该PSC可以执行一个或多个预处理任务,并将所得数据储存于存储器中以供该PS使用。
图5为图示根据本说明书内所揭示的另一个实施例的在IC内对处理器系统进行扩展的方法500的流程图。方法500可以由如本说明书内所描述的IC来实施,例如包括与可编程组构耦接的PS的一个IC。方法500大体图示用于在该IC的操作期间以动态方式对PS进行扩展的可以在现场应用的技术。但是,应了解,所描述的各种成本以及用于从中选择一个过程来在该可编程组构内实施的技术,也可以在系统的研发期间应用,以将此类决策“硬编码”到由该PS运行的程序代码中,以及/或者确定应由该PS来处置的过程,以及应实施为PSC的过程,例如,不管实施为I/O外围设备、中断处置器或类似者。
在该PS确定动态实施的过程的实施例中(例如,在操作期间以及在现场运行时),由该PS所运行的程序代码可以包括参考图5所描述的智能以及决策制定。另外,在简要描述软件过程中所用到的各种量以及实施这些软件过程的PSC可以储存为在该PS内运行的程序代码中的一部分,以一种可以由该PS在该程序代码的运行期间存取的方式储存于该IC内的其他地方,或者在运行时进行计算。
相应地,方法500可以从步骤505开始,在步骤505中该IC的PS运行程序代码。如所提及,该程序代码可以包括多个不同的过程。这些过程中的一者或多者可以卸载到该可编程组构。由该PS运行的程序代码可以进一步包括在选择用于卸载的过程以及确定何时卸载此类过程方面参考图5所描述的功能性。
在步骤510中,该PS可以确定在正被运行的程序代码中用于作为PSC卸载到该可编程组构候选过程。在一个实施例中,该PS可以识别预计将要在预定量的时间内运行的一个或多个过程,例如,将要运行的下一个过程,在接下来的“N”个过程内的过程,其中N为预先确定的整数值,或者是估计将要在未来预先确定数目的时钟循环内运行的过程。例如,该PS可以利用选择该候选过程的先行函数(look-ahead function)。
在步骤515中,该PS可以确定该候选过程是否与PSC相关联。当该候选过程与PSC相关联时,方法500可以继续。当该候选过程不与PSC相关联时,方法500可以环回以选择不同的候选过程。
在步骤520中,该PS可以确定该PSC是否在该可编程组构内实施。一个或多个PSC可能已在该可编程组构内实施。当该PSC已在该可编程组构内实施时,实施成本的时间分量和功率分量将小于在该PSC卸载之前在该可编程组构内实施所需要的时间分量和功率分量。当尚未在该可编程组构内实施该PSC时,实施成本的时间分量和成本分量将均大于已在该可编程组构内实施的PSC的时间分量和成本分量。另外,该PS必须确定在该可编程组构内是否存在足够的可用空间来实施该PSC。相应地,当在该可编程组构内实施该PSC时,方法500可以前进到步骤535。当未在该可编程组构内实施该PSC时,方法500可以前进到步骤525。
在步骤525中,该PS可以确定在该可编程组构内的可用空间的量。如所提及,可用空间的量可以是未使用的可编程组构的量,所述可编程组构可用于实施诸如PSC的其他电路设计。在步骤530中,该PS可以确定在该可编程组构内的可用空间的量是否足够用于实施该PSC。当在该可编程组构内存在足够的可用空间来实施该PSC时,方法500可以前进到步骤535。当在该可编程组构内不存在足够的空间来实施该PSC时,方法500可以环回至步骤510以选择用于卸载的不同的候选过程(如果存在的话)。
在步骤535中,该PS可以计算或确定该PSC的实施成本以及在该PS内的该过程的运行成本。如所提及,如果需要的话,运行成本以及实施成本可以反映一个或多个时间分量、一个或多个功率分量,或者是一个或多个时间分量以及一个或多个功率分量的组合。不管考虑时间、功率或这两者,都可以使用一个函数来对并入到实施成本计算中的各个分量进行加权。例如,在实施成本计算内,较之于功率,可以给予时间更大的权重,例如给予更大的重要性。或者,较之于时间,可以给予功率更大的权重。可以使用一个不同的函数来对并入到运行成本计算中的各个成本分量进行加权。
在另一个实施例中,用于计算实施成本和/或运行成本的多个函数可以通过对时间、功率或两者的组合给予不同重要性的方式来储存。可以由该PS根据在现场在操作期间的操作状态、操作环境或提供给该IC的其他指令来动态地选择用于计算实施成本和/或运行成本的具体函数。因此,通过在现场改变实施成本计算和/或运行成本计算,可以动态地随时改变做出卸载给定过程的决策的方式。
在又另一实施例中,应了解,可用空间确定可以并入到实施成本确定步骤中。例如,该可编程组构是否包括足够可用空间的确定,可以作为二进制类型变数直接并入到实施成本中,该二进制类型变数可以覆盖由实施成本计算所产生的任何结果。在另一实例中,当在该可编程组构内不存在足够的可用空间来实施该PSC时,可以使用一个乘法器,该乘法器足够大到确保该PSC不会在该可编程组构内实施,因为实施成本显然要大于运行成本。
如所提及,该实施成本及该运行成本一般来说可以是已知的,或者是在设计过程期间确定的,以及是在该程序代码内规定的。但是,一个或多个成本分量可以随着该IC的当前操作状态而变化,所述状态包括但不限于在该IC的可编程组构内的可用空间的量以及正被评估的具体过程是否已在该可编程组构内作为PSC实施。如所提及,该PS可以进一步选择用于确定实施成本和/或运行成本的具体方式或函数。
在步骤540中,该PS可以将实施成本与运行成本相比较。在步骤545中,该PS可以确定是否应将该过程卸载到该可编程组构。当该运行成本超过该实施成本或超过该实施成本达某一百分率或一个预先确定的量时,该PS可以确定将该过程卸载到该可编程组构是否值得以及是否要执行这一操作。当该过程未被卸载到该可编程组构时,方法500环回至步骤510以评估作为正被执行的程序代码的一部分的一个或多个额外过程。当要卸载该过程时,方法500可以前进到步骤550。
在步骤550中,该PS可以确定该PSC是否在该可编程组构内实施。出于清晰以及便于说明的目的图示步骤550,但不需要作为独立处理步骤来执行此步骤,因为例如,来自步骤520的信息已经为PS所知。例如,图示步骤550是为了说明在当该PSC未在该可编程组构内实施时,必须执行一个配置过程来实施该PSC。
在任何情况中,当该过程已作为PSC在该可编程组构内实施时,方法500可以前进到步骤560。当该过程未作为PSC在该可编程组构内实施时,方法500可以前进到步骤555。在步骤555中,在该可编程组构内实施该PSC。该PSC可以通过载入规定要实施的PSC的配置数据来实施。在一个实施例中,该可编程组构的配置可以由该PS控制,例如启动。例如,该PS可以将配置数据从外部源载入到IC中,并将该配置数据提供给配置控制器。如所提及,该可编程组构可以完整地被重新配置,或者该可编程组构中的一部分可以经历动态部分重新配置。该可编程组构的配置完成之后,在其中物理地实施该PSC。
在步骤560中,该PS可以将该过程卸载到该PSC。在步骤565中,该PSC可以执行卸载过程。相应地,在步骤570中,在卸载过程的性能方面,由该PSC所生成的任何结果数据都可以成为对该PS可用的。
图6至图8所示为用于实施将过程卸载到在该IC的可编程组构内的电路系统的各种技术。图6至图8中的每一者都可以使用在本说明书内所描述的IC来实施。图6至图8中的每一者都可以以一种状态开始,其中已确定将该过程卸载到该可编程组构,进一步,即以已实施在该可编程组构内的PSC。
图6为图示将过程卸载到在IC的可编程组构内实施的电路系统的方法600的第二流程图。图6所示为卸载大部分(如果不是全部的话)由该PS驱动的情况。方法600所示为可以在要被卸载的过程高度复杂并且对相对小的数据集合进行运算时应用的使用情况。在图6所示的实例中,数据被从该PS推送至该可编程组构,并且结果由该PS从该可编程组构获得。
在步骤605中,该PS可以任选地计算将作为输入提供给该过程专用电路的源数据。在步骤610中,该PS可以将该源数据直接推送给该PSC。例如,该PS可以经由诸如接口256B的从属接口来推送该源数据,建立DMA以将该源数据推送至该PSC,或者将数据经由FMIO接口252发送至该PSC。在步骤615中,该PSC可以处理该源数据。当该PSC完成该源数据的处理时,该PSC可以储存在该可编程组构内的某一存储器位置处生成的任何结果数据以供该PS撷取。
在步骤620中,该PS可以对在该可编程组构内的电路系统进行轮询以确定该PSC何时完成对该源数据的处理。例如,该处理器可以对在该可编程组构内的具体寄存器进行轮询,该寄存器指示了该PSC的状态,忙线(busy)还是闲置(free)。该寄存器可以是该PSC的一部分,或者可以位于该PSC的外部,但是仍位于该可编程组构内。忙线状态指示该PSC未完成对该源数据的处理。闲置状态指示了该PSC已完成了对该源数据的处理以及/或者结果数据可用。
在步骤625中,该PS可以确定该PSC的状态。完成时,结果数据为可用的,并且方法600可以前进到步骤630。当未完成时,该PSC未完成对该源数据的处理,并且方法600可以环回至步骤620以继续轮询该PSC状态。前进到步骤630,当结果数据可用时,该PS可以从位于该可编程组构内的存储器读取结果数据。例如,数据可以通过DMA传递或类似方法来读取。
图7为图示将过程卸载到在IC的可编程组构内实施的电路系统的方法700的第三流程图。图6所示为由该PS驱动的卸载技术,图7所示为更紧密的整合存在于该PS与该PSC之间的实例。相应地,在步骤705中,该PS可以任选地计算将作为输入提供给该PSC的任何源数据,以便于计算。在一个实施例中,当要卸载的该过程需要源数据作为输入时,该PS可以计算或获得该源数据。为了促成与该可编程组构的更紧密整合,该PS可以将该源数据储存于位于该PS外部的存储器内的存储器位置处。例如,一旦计算完成,该源数据可以储存在位于该OCM、L1缓存器或L2缓存器内的地址处。
在步骤710中,该PS可以生成并储存一个描述符。该描述符可以是存储器块或区段,该存储器块或区段包括用于实施或执行要卸载的过程的用于该PSC的引用和/或指令。类似于该源数据,该描述符可以被储存在该OCM、L1缓存器或L2缓存器中。该描述符可以包括对于该源数据的指针或引用、关于何处储存结果数据的指令,例如哪一地址及存储器,等。
在一个实施例中,在生成该描述符时,该PS可以执行地址转译以将虚拟地址转译成物理地址,反之亦然。一般来说,该PS可以理解并解译虚拟地址。但是,该可编程组构,包括其中所实施的任何电路系统,不能将物理地址转译成虚拟地址,也不能将虚拟地址转译成物理地址。该可编程组构仅理解物理地址。同样地,在该描述符内规定的任何地址必须规定为物理地址以供该可编程组构使用。
在步骤715中,该PS可以通知该PSC有一过程预备卸载。该通知可以指示,例如,该源数据可用于供PSC处理。该PS可以使用各种不同机构中的任一者来通知该PSC。例如,该PS可以经由接口256或FMIO接口252中的一者来写入在该可编程组构内由该PSC监控的寄存器中或者是在该PSC自身内的寄存器中。在步骤720中,响应于该PSC确定该寄存器被写入或被写入一具体值,该PSC可以从该处理器内的存储器中读取该描述符。例如,该PSC可以经配置以读取在该PS内的一个具体存储器地址,出于通知目的,在写入该寄存器时描述符储存于或位于该存储器地址中。
在步骤725中,该PSC可以撷取、或读取由该描述符规定的源数据。在步骤730中,该PSC可以处理该源数据以及生成或输出结果数据。在步骤735中,该PSC可以将该结果数据储存于由该描述符规定的位置中。该结果数据还可以储存于该PS的内部存储器中,例如,OCM、L1缓存器,或L2缓存器。
在步骤740中,该PSC可以通知该PS结果数据可用。例如,该PSC可以写入由该PS监控的内部存储器的地址中,例如,位于该OCM、L2缓存器或L2缓存器的地址中。在一个实施例中,写入或提供该通知的地址还可以由该描述符来规定。当该PS确定该存储器地址已被写入某个值时,例如,所述值指示已预备来自该PSC的结果数据,该PS可以从该PSC储存由该描述符规定的结果数据的位置读取该结果数据。应了解,当使用特定端口(例如,接口256C)时可以达成缓存一致性。其他接口,例如接口256A、256B和/或256D,可能不会提供对该PS的缓存器或内部存储器的存取。在步骤745中,该PS可以撷取或读取该结果数据。
应了解,描述符的使用允许储存该源数据以及任何结果数据的位置发生改变,即使同一PSC每次被呼叫也是如此。该PSC可以读取由该描述符规定的物理地址以从所列举的位置获得源数据,并将结果数据储存在所列举的位置处。在意图用于相同PSC或不同PSC的多个描述符中的每一者上,此类位置可以是不同的。
图8为图示将过程卸载到在IC的可编程组构内实施的电路系统的方法800的第四流程图。图8所示为一种卸载机构,在该卸载机构中该PS可以利用该PSC来实施过程的多个细粒度的运算而不会受到事务建立以及诸如在该PSC与该PS之间的交握等活动的压制。图8所示为同样利用描述符的使用的图7中的替代机构。一般来说,可以将多个描述符提供给该PSC。该PSC可以运行如下文所描述的串列形式的不中断的描述符中的每一者。
在步骤805中,该PS可以任选地计算将作为输入提供给该PSC的任何源数据,以便于计算。如所提及,一旦计算完成,该源数据可以被储存在该OCM、L1缓存器或L2缓存器内。在另一个实施例中,该源数据可以被储存在位于该IC的可编程组构中的存储器内。
在步骤810中,该PS可以生成并储存多个描述符。每一描述符都可以是存储器块或区段,该存储器块或区段包括用于实施或执行要卸载的过程的用于该PSC的引用和/或指令。在一个实施例中,该PS可以将该多个描述符储存于该PS的内部储存器中的一者内。在另一个实施例中,该PS可以将该多个描述符储存于存储器中,诸如可由该PSC存取或位于该PSC内的该可编程组构内的行列。
如所提及,每一描述符可以规定获取将作为输入使用的任何源数据的位置(例如,物理存储器地址)以及应储存任何结果数据的位置。为了实现该多个描述符的处理,除了先前提及的信息以外,每一描述符都可以在该多个描述符中包括或规定针对下一个描述符的指针,从而形成描述符的链接链路。在该描述符链路中的最后一个描述符可以用针对下一描述符的指针的缺乏来表征。
可以在描述符内规定的额外信息可以包括,例如,用于以硬件形式执行的计算步骤的指示符、关于从何处获得数据或应将数据储存于何处的缓冲器指针、用于通知该PS或与该PS通信的邮箱或寄存器地址。通过使用如所描述的多个描述符,该PSC可以继续处理直至不存在其他描述符为止。例如,该PSC可以经配置以检测何时将描述符储存于具体存储器内或行列内。该PSC可以在未获得来自该PS的进一步指令的情况下继续自动处理该多个描述符中的每一者直至最后一个描述符被处理为止。该布置需要对于在该多个描述符中的第一描述符的处理的建立。但是,用于随后描述符的建立被最小化或消除。
在步骤815中,该PSC可以取得该多个描述符中的一个描述符例如,该PSC可以经配置以检查一个预先确定的存储器位置以检查由该PS生成及储存的该多个描述符中的第一描述符的存在。该PSC可以取得用于处理的描述符来作为当前描述符。在步骤820中,该PSC可以处理该当前描述符。例如,该PSC可以撷取任何规定的源数据,处理该源数据以生成结果数据,以及储存由该当前描述符所指示的结果数据。
在步骤825中,该PSC可以确定是否存在仍需处理的下一个描述符。例如,该PSC可以确定当前描述符是否规定了针对下一个描述符的指针。当该当前描述符规定针对下一描述符的指针时,该PSC可以前进到步骤830。在步骤830中,该PSC选择由该指针所规定的下一个描述符并环回至步骤815。当当前描述符未规定针对下一个描述符的指针时,该PSC确定当前描述符为最后一个描述符。相应地,该PSC可以停止对描述符的处理并前进到步骤835。
在步骤835中,当该PSC完成该多个描述符中的每一者的处理时,该PSC可以通知该PS结果数据为可用的。在一个实施例中,该PSC响应于完成对该等描述符的处理,可以将结果数据储存于一个具体位置中,该PS可以从该具体位置撷取该结果数据。该位置可以不同于可以储存来自该等描述符中的一个或多个单个位置的结果数据的中间位置。
响应于接收到该指示,该PS可以获得该结果数据。例如,该PS可以运行独立线程,进而允许该PS执行其他任务同时等待来自该PSC的结果数据的可用性。在另一个实施例中,该PS可以利用邮箱、信标或中断来通知该PS。
一般来说,如果使用了不恰当的用于将过程卸载的技术,可以导致任何时间及/或功率的节省会被诸如将源数据提供给该可编程组构或恒定的轮询等逻辑运算所压制。以此而言,当计算完该实施成本时,应了解,该实施成本将随着用于将该过程卸载到该可编程组构的具体技术而变化。因此,例如,所选过程的实施成本将根据是否使用图6、图7或图8的方法执行卸载而变化。
附图中的流程图图示了根据本说明书内揭示的一个或多个实施例的系统、方法以及计算机程序产品的可行实施方案的结构、功能和操作。以此而言,流程图中的每个方框可以表示模块、区段或代码的一部分,该代码包括实施规定逻辑功能的可执行程序代码的一个或多个部分。
应注意,在一些替代性实施方案中,在各方框中提到的功能可以用与图中不一致的顺序出现。例如,连续示出的两个方框实际上可以基本并行地执行,或各方框有时可以按照相反的顺序来运行,这取决于所涉及的功能。还应了解,流程图图示中的每个方框,以及流程图图示中的方框的组合可以通过基于硬件的专用系统来实施,该等专用系统执行规定的功能或动作,或专用硬件和可运行指令的组合。
一个或多个实施例可以用硬件或者硬件和软件的组合加以实现。一个或多个实施例可以在一个系统中以集中方式实现,或者以不同元件散布在若干互连系统上的分布方式来实现。任何种类的数据处理系统或适于实行本文所描述方法至少一部分的其他设备都可适用。
一个或多个实施例进一步可以嵌入在诸如计算机程序产品之类的装置中,这种装置包括能实施本文所述方法的所有特征。该装置可以包括数据存储媒体,例如,非暂时性计算机可用或计算机可读媒体,用于储存程序代码,该程序代码在载入到系统(包括存储器和处理器)中并运行时,会致使该系统执行本说明书内所描述的功能的至少一部分。数据存储媒体的实例可以包括,但不限于,光学媒体、磁性媒体、诸如随机存取存储器或硬盘之类的计算机存储器,等等。
本文中的术语“计算机程序”、“软件”、“应用程序”、“计算机可用程序代码”、“程序代码”、“可运行代码”,及其变体和/或组合,指的是一组指令的任何表示法,包括任何语言、代码或符号,该指令意图使具有信息处理能力的系统执行特定功能,无论是直接执行,还是在以下行为中的一者或两者之后执行:a)转换为另一种语言、代码或符号;b)采用不同的材料形式进行复制。例如,程序代码可以包括,但不限于,子例程、函数、流程、目标方法、目标实施方案、可运行应用程序、小应用程序、小服务程序、源代码、目标代码、共享库/动态加载库和/或设计用于在计算机系统上运行的其他指令序列。
本文中所用术语“一/一个”被定义为一个或一个以上。本文中所用的术语“多个”被定义为两个或两个以上。本文中所用的术语“另一/另一个”被定义为至少第二个或更多。本文中所用的术语“包括”和/或“具有”被定义为包括,即开放式语言。本文中所用术语“耦接”被定义为连接,无论是直接连接,不存在任何中间元件,还是间接连接,存在一个或多个中间元件,除非另有指示。两个元件也可以按照机械方式、电方式或通信链接方式通过通信信道、路径、网络或系统来耦接。
在不脱离实施例的精神或基本属性的前提下,本说明书内所揭示的一个或多个实施例也可以通过其他形式来实施。因此,应参考以上权利要求,而不是参考上述指示一个或多个实施例的范围的说明书。

Claims (15)

1.一种集成电路,包括:
处理器系统,所述处理器系统经配置以运行程序代码;以及
在所述集成电路的可编程电路系统内实施的过程专用电路,其中所述过程专用电路耦接到所述处理器系统,并且经配置以执行由所述处理器系统所卸载的过程,
其中所述处理器系统经配置以将所述过程卸载给所述过程专用电路来代替运行程序代码,从而执行所述过程。
2.如权利要求1所述的集成电路,其中所述处理器系统进一步经配置以根据功率消耗的减少来确定是否将所述过程卸载给所述过程专用电路,所述功率消耗的减少是通过使用所述过程专用电路代替使用所述处理器系统来实施所述过程所获得的。
3.如权利要求1所述的集成电路,其中所述处理器系统进一步经配置以根据完成时间的改进来确定是否将所述过程卸载给所述过程专用电路,所述完成时间的改进是通过使用所述过程专用电路代替使用所述处理器系统来实施所述过程所获得的。
4.如权利要求1所述的集成电路,其中所述处理器系统进一步经配置以根据时延的减少来确定是否将所述过程卸载给所述过程专用电路,所述时延的减少是通过使用所述过程专用电路代替使用所述处理器系统来实施所述过程所获得的。
5.如权利要求3所述的集成电路,其中所述可编程电路系统为可编程组构,并且通过使用所述过程专用电路代替使用所述处理器系统来实施所述过程所获得的完成时间的改进进一步包括用于对所述可编程组构中的至少一部分动态地进行重新配置以实施所述过程专用电路所需的时间的测量值。
6.如权利要求3所述的集成电路,其中通过使用所述过程专用电路代替使用所述处理器系统来实施所述过程所获得的完成时间的改进取决于多个存储器中用于将所述过程所需的源数据提供给所述过程专用电路的存储器。
7.如权利要求1至6中任一项所述的集成电路,其中所述处理器系统进一步经配置以确定在所述可编程组构内是否存在一定量的可用空间来实施所述过程专用电路。
8.如权利要求1至7中任一项所述的集成电路,其中所述可编程电路系统为可编程组构,并且所述处理器系统进一步经配置以启动所述可编程组构中的至少一部分的动态重新配置来实施所述过程专用电路。
9.一种在集成电路内对处理器系统进行扩展的方法,所述方法包括:
在所述处理器系统内运行程序代码,其在所述集成电路内实施,其中所述集成电路包括可编程电路系统,并且其中所述处理器系统耦接到所述可编程电路系统;
使用在所述可编程电路系统内实施的过程专用电路执行过程,来代替运行程序代码,以在所述处理器上执行所述过程;以及
使从所述过程专用电路的所述过程的结果可用于所述处理器系统。
10.如权利要求9所述的方法,其进一步包括:
根据功率使用的减少来确定是否使用所述过程专用电路来执行所述过程,所述功率使用的减少是通过使用所述过程专用电路代替使用所述处理器系统来实施所述过程所获得的。
11.如权利要求9所述的方法,其进一步包括:
根据时延的减少来确定是否使用所述过程专用电路来执行所述过程,所述时延的减少是通过使用所述过程专用电路代替使用所述处理器系统来实施所述过程所获得的。
12.如权利要求9所述的方法,其进一步包括:
根据完成时间的减少来确定是否使用所述过程专用电路来执行所述过程,所述完成时间的减少是通过使用所述过程专用电路代替使用所述处理器系统来实施所述过程所获得的。
13.如权利要求12所述的方法,其中通过使用所述过程专用电路代替使用所述处理器系统来实施所述过程所获得的完成时间的减少进一步包括用于对所述可编程电路系统中的至少一部分动态地进行重新配置以实施所述过程专用电路所需的时间的测量值。
14.如权利要求12所述的方法,其中通过使用所述过程专用电路代替使用所述处理器系统来实施所述过程所获得的完成时间的改进的测量值取决于多个存储器中用于提供由所述过程专用电路执行所述过程所需的源数据的存储器。
15.如权利要求9至14中任一项所述的方法,其进一步包括:
从由所述程序代码规定的多个过程中选择所述过程;
选择规定以硬件形式实施所选过程的所述过程专用电路的配置数据;以及
载入所选配置数据以在所述集成电路的所述可编程电路系统内实施所述过程专用电路。
CN201180065425.5A 2011-01-13 2011-12-08 在集成电路内进行处理器系统的扩展 Active CN103354977B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/005,962 2011-01-13
US13/005,962 US9135213B2 (en) 2011-01-13 2011-01-13 Extending a processor system within an integrated circuit and offloading processes to process-specific circuits
PCT/US2011/064038 WO2012096735A1 (en) 2011-01-13 2011-12-08 Extending a processor system within an integrated circuit

Publications (2)

Publication Number Publication Date
CN103354977A true CN103354977A (zh) 2013-10-16
CN103354977B CN103354977B (zh) 2016-11-16

Family

ID=45446196

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180065425.5A Active CN103354977B (zh) 2011-01-13 2011-12-08 在集成电路内进行处理器系统的扩展

Country Status (6)

Country Link
US (1) US9135213B2 (zh)
EP (1) EP2664067B1 (zh)
JP (1) JP6008874B2 (zh)
KR (1) KR101519771B1 (zh)
CN (1) CN103354977B (zh)
WO (1) WO2012096735A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107291655A (zh) * 2017-06-14 2017-10-24 北方电子研究院安徽有限公司 一种带APB总线接口的SoC自举IP电路
TWI604326B (zh) * 2016-10-27 2017-11-01 財團法人工業技術研究院 基於fpga之系統功率評估裝置與方法

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9436623B2 (en) * 2012-09-20 2016-09-06 Intel Corporation Run-time fabric reconfiguration
US9497050B2 (en) * 2012-09-24 2016-11-15 Xilinx, Inc. Clock domain boundary crossing using an asynchronous buffer
US10079019B2 (en) 2013-11-12 2018-09-18 Apple Inc. Always-on audio control for mobile device
US9778728B2 (en) 2014-05-29 2017-10-03 Apple Inc. System on a chip with fast wake from sleep
US10031000B2 (en) 2014-05-29 2018-07-24 Apple Inc. System on a chip with always-on processor
US9619377B2 (en) 2014-05-29 2017-04-11 Apple Inc. System on a chip with always-on processor which reconfigures SOC and supports memory-only communication mode
US10089197B2 (en) 2014-12-16 2018-10-02 Intel Corporation Leverage offload programming model for local checkpoints
CN104951334B (zh) * 2015-05-22 2018-01-23 中国电子科技集团公司第十研究所 FPGA双片QSPI flash的程序加载方法
US9678150B2 (en) * 2015-10-27 2017-06-13 Xilinx, Inc. Methods and circuits for debugging circuit designs
US10268847B2 (en) * 2016-04-21 2019-04-23 LDA Technologies Ltd. System and method for repurposing communication ports as host interface or data card connections
US10482054B1 (en) 2016-09-09 2019-11-19 Xilinx, Inc. AXI-CAPI adapter
US10394991B2 (en) 2016-10-06 2019-08-27 Altera Corporation Methods and apparatus for dynamically configuring soft processors on an integrated circuit
US11023025B2 (en) * 2016-11-16 2021-06-01 Cypress Semiconductor Corporation Microcontroller energy profiler
US10528513B1 (en) 2018-04-30 2020-01-07 Xilinx, Inc. Circuit for and method of providing a programmable connector of an integrated circuit device
CN110825530B (zh) * 2018-08-10 2022-12-23 昆仑芯(北京)科技有限公司 用于人工智能芯片的指令执行方法和装置
CN110825514B (zh) 2018-08-10 2023-05-23 昆仑芯(北京)科技有限公司 人工智能芯片以及用于人工智能芯片的指令执行方法
US11025544B2 (en) 2019-06-07 2021-06-01 Intel Corporation Network interface for data transport in heterogeneous computing environments

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1615141A2 (en) * 2004-07-01 2006-01-11 Harman Becker Automotive Systems GmbH A computing architecture for a mobile multimedia system used in a vehicle

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5581482A (en) 1994-04-26 1996-12-03 Unisys Corporation Performance monitor for digital computer system
US5903281A (en) * 1996-03-07 1999-05-11 Powertv, Inc. List controlled video operations
US5867644A (en) 1996-09-10 1999-02-02 Hewlett Packard Company System and method for on-chip debug support and performance monitoring in a microprocessor
US5835702A (en) 1996-10-21 1998-11-10 International Business Machines Corporation Performance monitor
US6233531B1 (en) 1997-12-19 2001-05-15 Advanced Micro Devices, Inc. Apparatus and method for monitoring the performance of a microprocessor
US7085670B2 (en) 1998-02-17 2006-08-01 National Instruments Corporation Reconfigurable measurement system utilizing a programmable hardware element and fixed hardware resources
US6480952B2 (en) * 1998-05-26 2002-11-12 Advanced Micro Devices, Inc. Emulation coprocessor
JP3636986B2 (ja) * 2000-12-06 2005-04-06 松下電器産業株式会社 半導体集積回路
US6961919B1 (en) * 2002-03-04 2005-11-01 Xilinx, Inc. Method of designing integrated circuit having both configurable and fixed logic circuitry
US7657861B2 (en) * 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
US7308564B1 (en) 2003-03-27 2007-12-11 Xilinx, Inc. Methods and circuits for realizing a performance monitor for a processor from programmable logic
JP2007207136A (ja) * 2006-02-06 2007-08-16 Nec Corp データ処理装置、データ処理方法、及びデータ処理プログラム
JP2009163328A (ja) * 2007-12-28 2009-07-23 Toshiba Corp 情報処理装置及びその制御方法
US20090271536A1 (en) * 2008-04-24 2009-10-29 Atmel Corporation Descriptor integrity checking in a dma controller
JP2010226524A (ja) * 2009-03-24 2010-10-07 Fuji Xerox Co Ltd プログラマブル論理回路、半導体集積回路装置、情報処理システムおよび制御プログラム
US8443263B2 (en) * 2009-12-30 2013-05-14 Sandisk Technologies Inc. Method and controller for performing a copy-back operation

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1615141A2 (en) * 2004-07-01 2006-01-11 Harman Becker Automotive Systems GmbH A computing architecture for a mobile multimedia system used in a vehicle

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
HAUSER J.ETC: "Garp:a MIPS processor with a reconfigurable coprocessor", 《IEEE》, 16 April 1997 (1997-04-16) *
JEFFREY M.ETC: "software configurable processors", 《IEEE》, 1 September 2006 (2006-09-01) *
MICHALIS D.ETC: "speedups and energy savings of microprocessor platforms with a coarse-Grained Reconfigurable Data-Path", 《IEEE》, 1 March 2007 (2007-03-01) *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI604326B (zh) * 2016-10-27 2017-11-01 財團法人工業技術研究院 基於fpga之系統功率評估裝置與方法
US10324517B2 (en) 2016-10-27 2019-06-18 Industrial Technology Research Institute FPGA-based system power estimation apparatus and method
CN107291655A (zh) * 2017-06-14 2017-10-24 北方电子研究院安徽有限公司 一种带APB总线接口的SoC自举IP电路
CN107291655B (zh) * 2017-06-14 2020-10-09 北方电子研究院安徽有限公司 一种带APB总线接口的SoC自举IP电路

Also Published As

Publication number Publication date
WO2012096735A1 (en) 2012-07-19
US20120185674A1 (en) 2012-07-19
JP6008874B2 (ja) 2016-10-19
EP2664067A1 (en) 2013-11-20
JP2014509106A (ja) 2014-04-10
US9135213B2 (en) 2015-09-15
KR20130107361A (ko) 2013-10-01
EP2664067B1 (en) 2015-08-12
KR101519771B1 (ko) 2015-05-12
CN103354977B (zh) 2016-11-16

Similar Documents

Publication Publication Date Title
CN103354977A (zh) 在集成电路内进行处理器系统的扩展
CN105308571B (zh) 基于活动处理器的动态电压和频率管理
US8281265B2 (en) Method and device for processing data
JP5826865B2 (ja) プログラマブル回路と埋込型プロセッサシステムとを伴う集積回路
CN102567109B (zh) 中断分配方案
US8230433B2 (en) Shared performance monitor in a multiprocessor system
CN101048763B (zh) 一种配置处理器的高速缓冲存储器的方法与处理器
US9652252B1 (en) System and method for power based selection of boot images
CN103370878B (zh) 集成电路内的电源管理
JP2003524969A5 (zh)
US10615800B1 (en) Method and apparatus for implementing configurable streaming networks
US20100122064A1 (en) Method for increasing configuration runtime of time-sliced configurations
CN112771498A (zh) 用于实施智能处理计算架构的系统和方法
Lari et al. Hierarchical power management for adaptive tightly-coupled processor arrays
US10042659B1 (en) Caching virtual contexts for sharing of physical instances of a hardware resource
CN101681274B (zh) 接口处理器
US9503096B1 (en) Multiple-layer configuration storage for runtime reconfigurable systems
US20220113694A1 (en) Systems and methods to reduce voltage guardband
US9853644B2 (en) Multiple-layer configuration storage for runtime reconfigurable systems
US7724029B1 (en) Power management for integrated circuits such as programmable logic devices
US11899551B1 (en) On-chip software-based activity monitor to configure throttling at a hardware-based activity monitor
EP1550950A1 (en) Semiconductor device
CN117882028A (zh) 基于限制硬件强制的功率控制的功率管理
Jung et al. Optimal processor interface for CGRA-based accelerators implemented on FPGAs
CN103403701B (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