CN112035397A - 包括fpga的电子系统及其操作方法 - Google Patents
包括fpga的电子系统及其操作方法 Download PDFInfo
- Publication number
- CN112035397A CN112035397A CN202010297936.0A CN202010297936A CN112035397A CN 112035397 A CN112035397 A CN 112035397A CN 202010297936 A CN202010297936 A CN 202010297936A CN 112035397 A CN112035397 A CN 112035397A
- Authority
- CN
- China
- Prior art keywords
- code
- intellectual property
- electronic system
- processing circuit
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000012545 processing Methods 0.000 claims abstract description 162
- 230000002194 synthesizing effect Effects 0.000 claims abstract description 4
- 238000011017 operating method Methods 0.000 claims description 5
- 238000004458 analytical method Methods 0.000 claims description 4
- 238000013461 design Methods 0.000 claims description 4
- 230000006870 function Effects 0.000 description 19
- 230000008569 process Effects 0.000 description 15
- 230000015572 biosynthetic process Effects 0.000 description 10
- 230000008859 change Effects 0.000 description 9
- 102100036464 Activated RNA polymerase II transcriptional coactivator p15 Human genes 0.000 description 8
- 101000713904 Homo sapiens Activated RNA polymerase II transcriptional coactivator p15 Proteins 0.000 description 8
- 229910004444 SUB1 Inorganic materials 0.000 description 8
- 238000003786 synthesis reaction Methods 0.000 description 8
- 238000013528 artificial neural network Methods 0.000 description 7
- 238000013135 deep learning Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 229910004438 SUB2 Inorganic materials 0.000 description 4
- 101100311330 Schizosaccharomyces pombe (strain 972 / ATCC 24843) uap56 gene Proteins 0.000 description 4
- 101150018444 sub2 gene Proteins 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic 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
- H03K19/17748—Structural details of configuration resources
- H03K19/1776—Structural details of configuration resources for memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7871—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/22—Microcontrol or microprogram arrangements
- G06F9/24—Loading of the microprogram
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/327—Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
- G06F30/343—Logical level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/51—Source to source
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/08—Intellectual property [IP] blocks or IP cores
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Logic Circuits (AREA)
Abstract
公开了一种电子系统及其操作方法。一种包括现场可编程门阵列(FPGA)的电子系统的方法,包括:通过处理电路将高级语言的代码综合为硬件描述语言的代码;通过处理电路根据硬件描述语言的代码设计包括在现场可编程门阵列中的知识产权(IP)块的电路;以及通过处理电路产生数据库,所述数据库包含与高级语言的代码相对应的参考汇编代码和与知识产权块的电路配置有关的信息。
Description
相关申请的交叉引用
本申请要求于2019年6月4日在韩国知识产权局提交的韩国专利申请No.10-2019-0066132的优先权,该申请的公开内容通过引用整体并入本文中。
技术领域
本公开的一些示例实施例涉及电子系统及其操作方法,并且更具体地,涉及包括现场可编程门阵列(FPGA)的电子系统及其操作方法。
背景技术
可以影响电子系统的性能的一些因素是主存储器或系统存储器的容量和处理量以及对它们的访问速度。多个功能块可以共享有限的资源。因此,将资源分配给用户不使用的不必要的功能块可以使得总系统速度降低和/或系统功耗增加。
发明内容
本公开的一些示例实施例涉及电子系统(比如,包括现场可编程门阵列(FPGA)的存储器系统)及其操作方法。
根据本发明的一些发明构思的一些示例实施例,提供了一种包括现场可编程门阵列(FPGA)的电子系统的操作方法,该操作方法包括:通过处理电路将高级语言的代码综合为硬件描述语言的代码;通过处理电路基于硬件描述语言的代码设计包括在FPGA中的知识产权(IP)块的电路;以及通过处理电路产生数据库,该数据库包含与高级语言的代码相对应的参考汇编代码和与IP块的电路配置有关的信息。
根据本发明的一些发明构思的一些示例实施例,提供了一种包括现场可编程门阵列(FPGA)的电子系统,该电子系统包括:处理电路,被配置为将高级语言的代码综合为硬件描述语言的代码;FPGA,包括至少一个知识产权(IP)块,该至少一个IP块具有基于处理器对高级综合程序的访问结果而设计的电路配置;以及存储设备,存储数据库,该数据库包含与高级语言的代码相对应的参考汇编代码以及与IP块的电路配置有关的信息。
根据本发明的一些发明构思的一些示例实施例,提供了一种包括现场可编程门阵列(FPGA)的电子系统的操作方法,该操作方法包括:通过处理电路从与要由电子系统处理的多个任务相对应的代码中选择第一代码和第二代码;通过处理电路分别将第一代码和第二代码转换为硬件描述语言的代码;通过处理电路根据从第一代码转换而成的硬件描述语言的代码将第一知识产权(IP)块加载到FPGA的第一子阵列中;以及通过处理电路根据从第二代码转换而成的硬件描述语言的代码将第二IP块加载到FPGA的第二子阵列中。
附图说明
根据以下结合附图进行的详细描述,将更清楚地理解本发明的一些构思的一些示例实施例,在附图中:
图1是根据本公开的一些示例实施例的电子系统的操作的流程图;
图2是根据本公开的一些示例实施例的电子系统的架构的框图;
图3A和图3B是根据本公开的一些示例实施例的电子系统的框图;
图4是根据本公开的一些示例实施例的电子系统的操作的流程图;
图5和图6将描述图4中的对应操作;
图7将描述根据本公开的一些示例实施例的电子系统的调度器的操作;
图8是根据本公开的一些示例实施例的特性表,当由加载到电子系统的嵌入式现场可编程门阵列(eFPGA)中的知识产权(IP)块处理应用时将特性存储在特性表中。
图9是示出了根据本公开的一些示例实施例的当由电子系统的硬件的不同部分分别处理任务时的特性的图形;
图10是根据本公开的一些示例实施例的电子系统的操作的流程图;
图11A和图11B将描述根据本公开的一些示例实施例的电子系统的操作;以及
图12A和图12B是根据本公开的一些示例实施例的电子系统中包括的eFPGA的框图。
具体实施方式
图1是根据本公开的一些示例实施例的电子系统的操作的流程图,并且是通过使用高级综合(HLS)程序来改变内部逻辑电路结构的方法的流程图。例如,电子系统可以应用于智能电话、智能TV、医疗没备、移动设备、图像显示设备、仪器设备、物联网(IoT)设备、机器人设备(比如,无人机或高级驾驶员辅助系统(ADAS)等),和/或可以安装在各种类型的电子系统之一上。
参考图1,在操作S10中,电子系统可以执行HLS操作,HLS操作将用高级语言描述的代码段D10转换为用硬件描述语言(HDL)描述的代码段D20。例如,当处理电路(例如,图3A的220)执行高级综合程序时,可以执行HLS操作。
例如,高级语言可以是C语言、C++语言等,但不限于此。例如,HDL可以是Verilog、超高速集成电路(VHSIC)硬件描述语言(VHDL)等。此处,用HDL描述的代码段D20可以具有集成电路的行为的抽象形式,例如可以在寄存器传输级(RTL)上定义。
根据一些示例实施例,电子系统可以在将可能难以被转换为HDL的高级语言的代码转换为可以被转换为HDL的另一高级语言的代码之后执行操作S10。
根据一些示例实施例,电子系统还可以包括能够执行神经网络运算的组件。电子系统可以被配置为通过使用包括可能难以被转换为HDL的高级语言的代码在内的函数的输入数据和输出数据来执行神经网络运算,并且根据通过神经网络运算导出的运算结果,将该函数转换为可以被转换为HDL的另一高级语言的函数。例如,可能难以将递归函数转换为HDL的代码。处理电路可以被配置为通过神经网络运算将递归函数的输入数据和输出数据转换为包括可以被转换为HDL的高级语言的代码在内的函数,并且基于转换后的高级语言的代码执行操作S10。
根据一些示例实施例,电子系统还可以包括能够执行深度学习处理的组件。电子系统可以被配置为对包括可以被转换为HDL的高级语言的代码在内的函数执行深度学习处理。基于执行深度学习处理的结果,可以将包括难以被转换为HDL的高级语言的代码在内的函数转换为包括可以被转换为HDL的另一高级语言的代码在内的函数。例如,电子系统可以通过深度学习处理将递归函数转换为包括可以被转换为HDL的高级语言的代码在内的函数,并且基于转换后的高级语言的代码执行操作S10。
根据一些示例实施例,电子系统的处理电路220可以被配置为基于将用高级语言描述的特定代码转换为HDL会是计算密集型(即,会涉及花费大量的计算资源)的预测在将该特定代码转换为另一高级语言的代码之后执行操作S10。例如,电子系统的处理电路220可以被配置为在将包括在高级语言的特定代码中的用于浮点运算的至少一些代码段转换为用于定点运算的代码段之后执行操作S10。处理电路220可以被配置为通过调整用于定点运算的代码段的位宽,来减少根据转换为用于定点运算的代码段而可能发生的错误。
在操作S20中,电子系统的处理电路220可以通过使用用HDL描述的代码段D20来执行逻辑综合操作以及布局和布线(P&R)操作。逻辑综合操作以及P&R操作可以通过处理电路220分别访问逻辑综合程序以及P&R程序来执行。由处理电路220执行的逻辑综合操作可以通过将用HDL描述的代码段D20转换为包括逻辑门的硬件形式来产生网表。由处理电路220执行的P&R操作可以对转换而成的逻辑门进行布局和布线。根据操作S20的执行,处理电路220可以被配置为改变电子系统中包括的可重新配置的逻辑器件的电路结构。例如,处理电路220可以被配置为改变现场可编程门阵列(FPGA)中包括的可重新配置的逻辑器件的硬件结构。
尽管图1分离地示出了操作S10和操作S20(所示的这两个操作是不同的),但是本公开不限于操作S10和操作S20被明确分离并作为两个单独的操作由处理电路执行的示例实施例。根据一些示例实施例,HLS操作可以包括操作S10和操作S20两者,即这两者通过接收用高级语言描述的代码段D10作为输入来创建电路结构并通过对其应用逻辑综合来改变电路结构。
根据一些示例实施例,电子系统的处理电路220可以被配置为接收高级语言作为输入并执行高达逻辑门级别的综合,因此用户可以通过使用高级语言而不直接使用HDL来轻松地设计和修改FPGA。
图2是根据本公开的一些示例实施例的电子系统的架构的框图。
参考图2,系统架构100可以包括硬件(HW)110、操作系统(OS)120、虚拟机(VM)130、库140和/或应用150。OS 120、VM 130、库140和/或应用150可以被组织为软件堆栈,并且可以存储在图3A的存储器230中。
HW 110可以包括:处理电路(例如,图3A的220),比如中央处理单元(CPU)112、图形处理单元(GPU)113、数字信号处理器(DSP)114等;存储器(例如,图3A的230),包括只读存储器(ROM)、随机存取存储器(RAM)等;存储设备,包括硬盘驱动器(HDD)、固态驱动器(SSD)等;以及其他外围设备。此外,HW 110可以包括嵌入式FPGA(eFPGA)111。然而,根据本公开的电子系统的一些其他示例实施例不限于在图2中示出或参考图2描述的示例。
执行OS 120的处理电路220可以被配置为操作电子系统,比如控制HW 110、支持应用150的执行等。例如,执行OS 120的处理电路220可以被配置为从应用150接收任务请求,设置用于处理所请求的任务的一系列任务,和/或将任务分配给HW 110。此外,执行OS 120的处理电路220可以被配置为将通过执行使用HW 110处理的该一系列任务而获得的结果发送到应用150。
根据一些示例实施例,OS 120可以是诸如Apple的macOSTM、Microsoft WindowsTM、UNIXTM或LinuxTM之类的OS,或者是诸如Apple的iOSTM或Google的AndroidTM之类的专用于移动设备的OS,但是根据本公开的一些示例实施例的范围不限于上述示例。
执行VM 130的处理电路220可以被配置为通过使用软件来实现计算环境,和/或可以是被配置为仿真计算机的软件。OS 120或应用150可以安装在VM 130上。例如,VM 130可以包括被配置为执行JavaTM字节代码的JavaTM VM。
根据一些示例实施例,电子系统的处理电路220可以被配置为设计eFPGA 111,使得HW 110处理要由VM 130执行的至少一些代码段。在这种情况下,eFPGA子系统可以包括eFPGA 111、eFPGA器件驱动器121和/或eFPGA库131,并且eFPGA器件驱动器121和/或eFPGA库131可以被配置为支持eFPGA 111。
当通过使用VM 130来分析和/或执行代码(例如,字节代码)时,处理速度会降低。因此,根据本公开的一些示例实施例的一些电子系统的处理电路220可以被配置为设计eFPGA 111,使得由HW 110通过对要由VM 130执行的至少一些代码段应用硬件加速来处理该至少一些代码段。由于以这种方式使用FPGA,因此一些示例实施例可以表现出提高的处理速度。
库140可以例如提供应用150需要的函数,或者将各种函数提供给应用150,使得应用150可以使用电子系统内部的有限资源。根据一些示例实施例,库140可以包括GPU库和DSP库,并且GPU库和DSP库可以提供当GPU 113和DSP 114分别根据应用150处理任务时所需的函数。
根据一些示例实施例,电子系统还可以包括能够执行神经网络运算的组件和/或能够执行深度学习处理的组件。能够执行神经网络运算的组件和/或能够执行深度学习处理的组件可以包括在软件堆栈中,但不限于此,可以将能够执行神经网络运算的组件和能够执行深度学习处理的组件作为硬件包括在电子系统中。
图3A和图3B是根据本公开的一些示例实施例的电子系统的框图。
参考图3A,电子系统200的示例实施例可以包括eFPGA 210、处理电路220和存储器230。eFPGA 210、处理电路220和存储器230可以通过系统总线240彼此连接。
在一些示例实施例中,处理电路220可以包括:硬件,例如逻辑电路;硬件/软件组合,例如执行软件的处理器;或二者的组合。例如,处理器可以包括但不限于中央处理单元(CPU)、算术逻辑单元(ALU)、数字信号处理器、微型计算机、现场可编程门阵列(FPGA)、片上系统(SoC)、可编程逻辑单元、微处理器、专用集成电路(ASIC)等。在一些示例实施例中,处理电路220可以对应于图2的CPU 112、GPU 113和DSP 114。也就是说,处理电路220可以包括能够执行随机指令集的至少一个核(例如,Intel架构-32(IA-32)、64位扩展IA-32、x86-64、PowerPC、Sparc、不具有互锁管线级(MIPS)的微处理器、高级精简指令集计算机(RISC)机器(ARM)、IA-64等)。处理电路220可以被配置为通过系统总线240访问存储器230和/或执行存储在存储器230中的指令。例如,存储器230可以被配置为存储HLS程序、逻辑综合程序和/或P&R程序,并且处理电路220可以被配置为执行HLS程序、逻辑综合程序和/或P&R程序以执行图1的操作S10和操作S20。
一些示例实施例可以包括存储器230(比如存储指令、数据等的存储设备),并且可以存储例如OS、各种程序和/或各种数据。存储器230可以是动态随机存取存储器(DRAM),但是不限于此。存储器230可以包括易失性存储器和/或非易失性存储器中的至少一种。非易失性存储器可以包括ROM、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除和可编程ROM(EEPROM)、闪存、相变RAM(PRAM)、磁RAM(MRAM)、电阻式RAM(RRAM)、铁电RAM(FRAM)等。易失性存储器可以包括DRAM、静态RAM(SRAM)、同步DRAM(SDRAM)等。此外,根据一些示例实施例,存储器230可以包括HDD、SSD、紧凑型闪存(CF)卡、安全数字(SD)卡、微型SD卡、迷你型SD卡、极限数字(xD)卡或记忆棒中的至少一种。
在一些示例实施例中,eFPGA 210可以包括eFPGA控制器211和/或至少一个知识产权(IP)块。eFPGA 210可以是图2的eFPGA 111。eFPGA控制器211可以被配置为当接收到IP块加载命令时,响应于IP块加载命令,在子eFPGA(也被称为eFPGA的“子阵列”)中实现IP块,其中每个子eFPGA包括可重新配置的逻辑器件。子eFPGA中的每个子eFPGA可以包括逻辑单元,和/或根据IP块的特性,要使用的逻辑单元的数量可以变化,和/或逻辑单元之间的连接关系可以变化。
例如,在一些示例实施例中,eFPGA 210可以包括第一IP块IP1和第二IP块IP2。第一IP块IP1和第二IP块IP2中的每个IP块可以通过HLS操作(例如,图1的操作S10)被实现为硬件(例如,被实现为特定电路)。根据一些示例实施例,第一IP块IP1和/或第二IP块IP2可以被分别实现在不同的子eFPGA中,和/或可以单独连接到系统总线240。也就是说,第一IP块IP1和第二IP块IP2可以被配置为通过系统总线240单独发送和/或接收数据。然而,本公开不限于此,并且在一些其他示例实施例中,第一IP块IP1和第二IP块IP2可以被实现在相同的子eFPGA中。
eFPGA 210可以包括各种类型的IP块。例如,在一些示例实施例中,IP块可以包括如下至少一项:处理单元、处理单元中包括的多个核、多格式编解码器(MFC)、视频模块(例如,相机接口、联合图像专家组(JPEG)处理器、视频处理器、混合器等)、三维(3D)图形核、音频系统、驱动器、显示驱动器、易失性存储器、非易失性存储器、存储器控制器、输入和输出接口块和/或高速缓冲存储器。第一IP块IP1和第二IP块IP2中的每个IP块可以包括各种类型的IP块中的至少一种IP块。
根据一些示例实施例,电子系统200可以被配置为对与存储器读/写有关的频繁使用的命令应用硬件加速。也就是说,eFPGA 210中的第一IP块IP1可以被设计、综合和/或配置为作为直接存储器存取(DMA)操作。例如,随着通过与存储器读/写相关的函数(比如,memcpy、strncpy、malloc、和calloc)进行的存储器读/写的次数增加,与使用处理电路220的直接执行相比,使用存储器相关的IP块(比如,DMA)的执行可以改善读/写性能,从而降低功耗。此外,当eFPGA 210的第一IP块IP1被设计、综合和/或配置为除DMA函数之外附加地执行诸如加法、除法、乘法、减法之类的简单运算时,与处理电路220中的直接执行相比,可以进一步改善eFPGA 210中的第一IP块IP1的性能。根据示例实施例,处理电路220可以被配置为计算用于改变eFPGA 210的电路配置使得eFPGA 210的电路配置对应于DMA要花费的时间、以及eFPGA 210执行DMA的操作要花费的时间。基于所计算的时间小于处理电路220执行DMA的操作要花费的时间,处理电路220可以被配置为改变eFPGA 210中的第一IP块IP1的电路配置,使得eFPGA 210中的第一IP块IP1的电路配置对应于DMA。
系统总线240可以被配置为使用例如ARM控股公司(ARM Holdings)的高级微控制器总线架构(AMBA)协议作为标准总线。AMBA协议的总线类型可以包括高级高性能总线(AHB)、高级外围总线(APB)、高级可扩展接口(AXI)、AXI4、AXI一致性扩展(ACE)等。上述总线类型之中的AXI是IP块之间的接口协议,并且可以提供多个出色的寻址功能、数据交织功能等。此外,其他类型的协议(比如,SONICs公司的uNetwork、IBM CoreConnect和OCP-IP的开放核协议)可以应用于系统总线240。
在一些示例实施例中,电子系统200还可以包括存储设备250。存储设备250可以被配置为存储电子系统200进行操作所需的各种数据库。例如,存储设备250可以被配置为存储图5的数据库(DB)和图8的特性表T_ip。
参考图3B,电子系统200a的示例实施例可以包括eFPGA 210a、处理电路220和存储器230。eFPGA 210a可以包括连接eFPGA控制器211a、第一IP块IP1以及第二IP块IP2的eFPGA总线217a。例如,eFPGA总线217a可以被配置为使用AHB、APB、AXI、AXI4和ACE之一作为标准总线,但是不限于此。
根据一些示例实施例,第一IP块IP1和第二IP块IP2可以被分别实现在不同的子eFPGA中,和/或第一IP块IP1和第二IP块IP2可以单独连接到eFPGA总线217a。也就是说,第一IP块IP1和第二IP块IP2可以被配置为通过eFPGA总线217a单独发送和/或接收数据。然而,本公开不限于此,并且在一些其他示例实施例中,第一IP块IP1和第二IP块IP2可以被实现在相同的子eFPGA中。
图4是根据本公开的一些示例实施例的电子系统的操作的流程图。图5和图6将描述图4中的对应操作。根据示例实施例,可以在执行图1的操作S20之后执行图4的操作S100。
参考图4和图5,在操作S110中,电子系统的处理电路220可以通过编译源代码来产生参考汇编代码。例如,基于通过执行图1的操作S20而确定的目标电路配置,处理电路220可以被配置为由编译器将用与所确定的目标电路配置相对应的高级语言描述的代码段(例如,图1中的高级语言的代码段D10)作为源代码进行编译,并且将其转换为参考汇编代码。这里,根据示例实施例,编译器可以是存储在图3A的存储器230中的软件,并且处理电路220可以被配置为访问编译器以执行操作S110,但是一些示例实施例不限于此,并且在一些其他示例实施例中,编译器可以被配置为硬件。
根据示例实施例,源代码可以对应于特定命令,该特定命令在由被实现为硬件的可重新配置的逻辑器件处理时比在由处理电路220执行的软件处理时在处理速度和/或功耗方面更为有利。例如,如上面在图3A的描述中所描述的,与存储器读/写有关的频繁使用的命令在由硬件通过硬件加速实现时比在由处理器执行时在处理速度和/或功耗方面会更为有利。
在操作S120中,电子系统的处理电路220可以通过存储在操作S110中转换而成的参考汇编代码的模式来产生用于参考汇编代码的DB。处理电路220可以被配置为在DB中存储如下信息,所述信息关于与参考汇编代码相对应的电路配置。例如,处理电路220可以被配置为在DB中存储如下信息,所述信息关于与参考汇编代码相对应的目标电路的布局,该目标电路是在图1的操作S20中产生的。
在一些示例实施例中,处理电路220可以被配置为将产生的DB存储在电子系统的存储设备中。转换而成的参考汇编代码可以根据用于转换的编译器的类型(例如,编译器1或编译器2)和编译器的选项(例如,Op1或Op2)而变化。因此,基于参考汇编代码存储在DB中,处理电路220可以被配置为存储与编译器的类型(例如,编译器1或编译器2)和编译器的选项(例如,Op1或Op2)有关的信息。
参考图4和图6,在操作S130中,处理电路220可以将机器代码转换为汇编代码。这里,机器代码可以与从外部新接收的代码相对应,或者例如,处理电路220可以被配置为在将从外部新接收的汇编代码存储在电子系统的存储器(例如,图3A的230)中的操作中,通过汇编器将新接收的汇编代码转换为新的机器代码来存储机器代码。备选地,例如,处理电路220可以被配置为在将从外部新接收的源代码存储在电子系统的存储器230中的操作中,通过编译器将新接收的源代码转换为新的机器代码来存储机器代码。也就是说,处理电路220可以被配置为在操作S130中将转换并存储在存储器230中的机器代码重新转换回汇编代码,以用于其后的操作。机器代码可以包括被配置为作为软件由处理电路220处理的指令。
在操作S140中,处理电路220可以将转换而成的汇编代码与存储在DB中的参考汇编代码进行匹配。处理电路220可以被配置为提取在操作S130中转换而成的汇编代码的模式和/或将所提取的模式与存储在DB中的参考汇编代码的模式进行比较。
在一些示例实施例中,处理电路220还可以被配置为对在操作S130中转换而成的汇编代码执行优化操作(比如,改变汇编代码的指令的顺序),由此汇编代码可能与存储在DB中的参考汇编代码不是一一对应的。根据一些示例实施例,处理电路220可以被配置为通过排除与当前正在执行的指令不相关的汇编代码来提取与当前正在执行的指令相关联的汇编代码和/或将所提取的汇编代码与存储在DB中的参考汇编代码进行匹配。例如,处理电路220可以被配置为基于与访问的寄存器、存储器地址等有关的信息来确定与当前正在执行的指令的关联。
在操作S150中,处理电路220可以构造eFPGA(例如,图3A的210)的电路以对应于匹配的参考汇编代码。也就是说,可以在eFPGA 210中实现与匹配的参考汇编代码相对应的IP块。
根据一些示例实施例,处理电路220可以被配置为基于与匹配的参考汇编代码相对应的硬件电路配置的输入/输出端口的大小大于或等于根据新的机器代码的输入/输出端口的大小,将eFPGA 210的电路改变为与匹配的参考汇编代码相对应的电路配置。处理电路220可以被配置为基于与匹配的参考汇编代码相对应的硬件电路配置的输入/输出端口的大小小于根据新的机器代码的输入/输出端口的大小,通过类型转换调整根据新的机器代码的输入/输出端口的大小。
根据一些示例实施例,处理电路220可以被配置为检查在操作S150中设计的eFPGA210的电路的输入/输出数据是否与基于作为软件被处理电路220处理的机器代码的输入/输出数据匹配。基于输入/输出数据彼此不匹配,处理电路220可以被配置为再次执行操作S140和操作S150。
在一些示例实施例中,即使在机器代码对应于从外部新接收的代码的条件下可能无法直接执行图1中所示的操作S10和操作S20,根据本公开的电子系统也可以包括DB,和/或处理电路220可以被配置为通过与存储在DB中的参考汇编代码进行匹配来改变eFPGA210的电路配置。因此,可以减少改变eFPGA 210的电路配置以通过eFPGA 210对作为软件要由处理电路220处理的任务进行处理要花费的时间。
此外,基于下载编译的二进制文件以操作电子系统中的新的应用,处理电路220可以被配置为将包括存储在二进制文件中的指令集在内的文件与DB进行比较,和/或在汇编语言级别上对该文件进行分析。基于通过这样的分析处理根据新的应用的任务,处理电路220可以被配置为确定任务是作为软件被处理电路220处理,还是通过构造eFPGA 210以对应于新的应用而作为硬件来处理。
图7将描述根据本公开的一些示例实施例的可以由电子系统的处理电路使用的调度器的操作。图8是根据本公开的一些示例实施例的特性表,当由加载到电子系统的eFPGA中的IP块处理应用时将特性存储在该特性表中。图9是示出了根据本公开的一些示例实施例的可以由电子系统的硬件中的不同部分分别处理的任务的特性的图形。
参考图7和图8,电子系统的处理电路220可以包括调度器123。通过处理电路220,调度器123可以将任务分配给硬件中的不同部分。通过处理电路220,调度器123可以基于特性表T_ip将多个任务(例如,根据第一应用151、第二应用152和第三应用153的各个任务)分配给CPU 112、GPU 113、DSP 114以及eFPGA 111。根据示例实施例,调度器123可以是作为图2的OS 120的一部分的软件,可以被存储在图3A的存储器230中,并且可以响应于处理电路220的访问而操作。然而,本公开不限于此,并且在一些示例实施例中,调度器123可以是硬件。
根据示例实施例,特性表T_ip可以包括与通过HLS操作(例如,图1的操作S10)被实现为硬件的eFPGA 111的IP块的特性有关的信息。特性表T_ip可以包括与根据图1的操作S20被实现为硬件的IP块的特性有关的信息。
例如,特性表T_ip可以包括关于如下项的信息:应用的线程标识符(ID),其对应于应用的ID(APP ID)、eFPGA的ID;加载时间;IP块的运行时间;操作开始时间;操作结束时间;IP块使用的资源的区域;IP块的操作时钟频率;是否执行/启用IP块的功率门控;和/或IP块的功耗。
处理电路220可以被配置为使用eFPGA111的ID来标识要将IP块加载到其中的子eFPGA,和/或基于用于将IP块加载到eFPGA 111中要花费的时间来指示或确定加载时间。IP块的运行时间可以是IP块根据应用执行任务要花费的时间,并且操作开始时间和操作结束时间可以分别指示IP块的操作的开始时间和结束时间。IP块使用的资源的区域可以包括IP块已在eFPGA 111中使用的资源的数量,即使用的逻辑单元的数量、使用的RAM的数量、输入/输出端口的大小等。IP块的操作时钟频率可以指示在IP块的操作中的适当的时钟信号的频率,并且是否执行/启用IP块的功率门控可以指示是否正在对提供给IP块的功率执行功率门控操作或者对提供给IP块的功率进行功率门控操作是否启用。IP块的功耗可以指示用于处理特定应用的任务要消耗的功率。
此外,除与eFPGA 111的IP块有关的信息之外,特性表T_ip还可以包括关于与应用的ID(APP ID)相对应的CPU 112、GPU 113和DSP114的信息。例如,与CPU112、GPU113和DSP114中的每一个处理特定应用的任务要花费的时间有关的信息以及与CPU112、GPU113和DSP114中的每一个处理特定应用的任务要消耗的功率有关的信息可以存储在特性表T_ip中。
根据一些示例实施例,电子系统的处理电路220还可以包括评测器(profiler),并且可以由评测器来存储在特性表T_ip中存储的多条信息。例如,处理电路220的评测器可以包括CPU评测器、GPU评测器、DSP评测器和eFPGA评测器。通过处理电路220,CPU评测器、GPU评测器、DSP评测器和eFPGA评测器可以分别测量CPU 112、GPU113、DSP114以及eFPGA111执行任务所花费的时间和所消耗的功率,并且与所需时间和功耗有关的信息可以存储在特性表T_ip中。根据示例实施例,评测器可以被实现为软件,但是本公开不限于此,并且评测器可以被实现为硬件。
参考图7至图9,通过处理电路220并基于特性表T_ip,调度器123可以计算CPU112、GPU 113、DSP 114以及eFPGA 111处理第一任务、第二任务和第三任务要花费的时间和/或要消耗的功率,第一任务、第二任务和第三任务是根据第一应用151、第二应用152和第三应用153的任务中的至少一些任务。根据一些示例实施例,基于第一应用151、第二应用152和第三应用153由各种电子系统频繁执行,处理电路220可以被配置为通过云计算与不同的电子系统共享计算结果。
通过处理电路220,调度器123可以基于由调度器123计算的用于执行第一任务、第二任务和第三任务所需时间和功耗,在CPU 112、GPU 113、DSP 114和eFPGA 111之中选择用于执行第一任务、第二任务和/或第三任务中的每一个任务的有利(例如,可选的)组合。例如,通过处理电路,调度器123可以就所需时间短且功耗低这两方面将第一任务分配给eFPGA 111,使得eFPGA 111处理第一任务;通过处理电路220,就所需时间短且功耗低这两方面将第二任务分配给DSP 114,使得DSP 114处理第二任务;和/或通过处理电路220,将第三任务分配给除eFPGA 111和DSP 114之外的CPU 112与GPU 113之中的GPU 113,使得GPU113处理第三任务。因此,根据本公开的电子系统的处理电路220可以通过考虑处理速度、功耗等来确定根据特定应用的任务是由软件处理还是由硬件处理,并且保持CPU 112、GPU113、DSP114以及eFPGA 111中的每一个的工作负载的平衡。
基于确定eFPGA 111处理第三任务,电子系统的处理电路220可以被配置为执行图1的操作S10和操作S20,以在eFPGA 111中加载用于处理第三任务的IP块。备选地,基于确定eFPGA 111处理第三任务,电子系统的处理电路220可以被配置为执行图4的操作S130至操作S150,以在eFPGA 111中加载用于处理第三任务的IP块。例如,与第三任务相对应的代码可以是图6的机器代码,并且电子系统的处理电路220可以被配置为将存储在DB(例如,图6的DB)中的参考汇编代码与从机器代码转换而成的汇编代码进行匹配,以在eFPGA 111中加载与匹配的参考汇编代码相对应的电路配置的IP块。
图10是根据本公开的一些示例实施例的电子系统的操作的流程图。根据一些示例实施例,图10的操作S200可以包括在图1的操作S20中或在图1的操作S20之后执行。根据示例实施例,图10的操作S200可以包括在图4的操作S150中或在图4的操作S150之后执行。
参考图10,在操作S210中,当所设计的eFPGA(即,eFPGA的IP块)执行任务时,电子系统的处理电路220可以分析功率特性。例如,处理电路220可以被配置为分析和/或确定eFPGA的IP块需要功率的时段和eFPGA的IP块不需要功率的时段。
在操作S210中,当所设计的eFPGA(即,eFPGA的IP块)执行任务时,电子系统的处理电路220可以分析时钟信号的特性。例如,电子系统的处理电路220可以被配置为分析包括在eFPGA的IP块中的触发器(flip-flop)的触变量(toggle amount),并确定是否存在不发生触变的时段。随着触发器的触变量增加,eFPGA的IP块会需要高频率的时钟信号。
在操作S230中,电子系统的处理电路220可以基于分析结果构造eFPGA的电路,使得eFPGA的IP块选择性地包括功率门控器件和/或时钟门控器件。例如,基于eFPGA的IP块需要功率的时段较短和eFPGA的IP块不需要功率的时段较长,处理电路220和/或eFPGA可以被配置为还包括功率门控器件。备选地,例如,基于包括在eFPGA的IP块中的触发器中不发生触变的时段,处理电路220和/或eFPGA可以被配置为还包括时钟门控器件。
然而,基于eFPGA的IP块需要持续的功率和/或包括在eFPGA的IP块中的触发器的触变量较大,处理电路220和/或eFPGA可以被配置为使得eFPGA的IP块既不包括功率门控器件也不包括时钟门控器件。
在一些示例实施例中,根据本公开的电子系统的处理电路220可以被设计为使得可以例如通过将处理电路220和/或eFPGA构造为选择性地包括更多的功率门控器件和时钟门控器件,来减少eFPGA中不必要消耗的功率。
图11A和图11B将描述根据本公开的示例实施例的电子系统的操作。图11A示出了由CPU、GPU和DSP执行应用的情况,并且图11B示出了由CPU、GPU、DSP和eFPGA执行应用的情况。
参考图11A,存储器(例如,图3A的230)可以存储用于执行应用的程序。例如,CPU代码段、GPU库和DSP库可以存储在存储器230中。处理电路220可以被配置为通过使用CPU代码段、GPU库和DSP库以CPU-GPU-CPU-DSP-CPU的顺序执行应用。
在这种情况下,电子系统的处理电路220可以被配置为确定可以通过图1的操作S10和操作S20将CPU代码段、GPU库和DSP库中的至少一部分实现为硬件。备选地,电子系统的处理电路220可以被配置为确定可以通过图4的操作S130和S140将CPU代码段、GPU库和DSP库中的至少一部分实现为硬件。例如,处理电路220可以被配置为确定用虚线示出的部分可以被实现为硬件。
参考图11A和图11B,电子系统的处理电路220可以被配置为将CPU代码段、GPU库和DSP库中的至少一部分转换为作为硬件的eFPGA,该至少一部分被确定为能够使其被实现为硬件,和/或通过eFPGA执行应用。根据一些示例实施例,基于在根据应用处理的应用处理速度或功耗方面的优势的确定,被确定为能够使其被实现为硬件的CPU代码段、GPU库和DSP库由被实现为硬件的eFPGA来执行,而不是由CPU、GPU和DSP来执行,电子系统的处理电路220可以被配置为将CPU代码段、GPU库和DSP库中的至少一部分转换为作为硬件的eFPGA。
eFPGA库可以存储在存储器230中。处理电路220可以被配置为通过使用CPU代码段、GPU库、DSP库和eFPGA库以CPU-GPU-eFPGA-CPU-DSP-eFPGA-CPU的顺序执行应用。使用图11B中所示的eFPGA的应用处理时间tb可以比图11A中所示的应用处理时间ta短。
图12A和图12B是根据本公开的一些示例实施例的电子系统中包括的eFPGA的框图。
参考图12A,eFPGA 210可以包括实现在第一子eFPGA SUB1中的第一IP块IP_A1和实现在第二子eFPGA SUB2中的第二IP块IP_A2。例如,eFPGA可以被配置为在第一子eFPGASUB1的至少一部分区域中实现第一IP块IP_A1,和/或在第二子eFPGA SUB2的至少一部分区域中实现第二IP块IP_A2。也就是说,第一子eFPGA SUB1和第二子eFPGA SUB2中的每个子eFPGA可以包括多个逻辑单元,eFPGA可以被配置为基于第一子eFPGA SUB1中包括的逻辑单元中的至少一些逻辑单元来实现第一IP块IP_A1,和/或基于第二子eFPGA SUB2中包括的逻辑单元中的至少一些逻辑单元来实现第二IP块IP_A2。
第一子eFPGA SUB1和第二子eFPGA SUB2可以单独连接到系统总线(例如,图3A的240)或单独连接到eFPGA总线(例如,图3B的217a)。
参考图12B,eFPGA控制器211可以被配置为基于IP块加载命令CMD_IL在子eFPGA中实现新的第三IP块IP_N。例如,基于确定eFPGA 210中包括的子eFPGA中存在没有加载IP块的子eFPGA,eFPGA控制器211可以被配置为在没有加载IP块的子eFPGA中实现新的第三IP块IP_N。
然而,根据一些示例实施例,基于确定eFPGA 210中包括的子eFPGA中不存在没有加载IP块的子eFPGA,eFPGA控制器211可以被配置为将新的第三IP块IP_N实现在加载有IP块的子eFPGA之中的具有要将新的第三IP块IP_N实现在其中的区域的子eFPGA中。备选地,根据一些示例实施例,eFPGA控制器211可以被配置为在另一子eFPGA中重新实现第一IP块IP_A1和第二IP块IP_A2中的一者或两者。例如,eFPGA可以被配置为在第一子eFPGA SUB1中重新实现第二IP块IP_A2,和/或在第二子eFPGA SUB2中实现第三IP块IP_N从而确保区域。
根据一些示例实施例,eFPGA控制器211可以被配置为检查第一子eFPGA SUB1和/或第二子eFPGA SUB2中的剩余区域(例如,查找表(LUT)、触发器、RAM、输入和输出焊盘等),以在第一子eFPGA SUB1的部分区域中实现新的第三IP块IP_N。电子系统的处理电路220可以被配置为基于剩余区域对与第一IP块IP_A1的电路配置相对应的代码重新执行HLS操作,并在第一子eFPGA SUB1中实现大小相对减小的第一IP块IP_A1′。处理电路220可以被配置为例如通过排除在其中实现第一IP块IP_A1’的区域剩余的第一子eFPGA SUB1的部分区域中实现新的第三IP块IP_N。然而,本公开的一些示例实施例不限于此。根据一些其他示例实施例,电子系统的处理电路220可以被配置为基于剩余区域对与第一IP块IP_A1的电路配置相对应的代码重新执行HLS操作,以改善第一IP块IP_A1的性能(例如,提高处理速度),和/或在第一子eFPGA SUB1中重新实现大小相对增大的第一IP块。
尽管已参考本发明构思的一些示例实施例具体示出和描述了本发明构思,但是应当理解,在不脱离所附权利要求的精神和范围的情况下,可以在形式和细节上进行各种改变。
Claims (20)
1.一种包括现场可编程门阵列的电子系统的操作方法,所述操作方法包括:
通过处理电路将高级语言的代码综合为硬件描述语言的代码;
通过所述处理电路根据所述硬件描述语言的代码设计包括在所述现场可编程门阵列中的知识产权块的电路;以及
通过所述处理电路产生数据库,所述数据库包含与所述高级语言的代码相对应的参考汇编代码和与所述知识产权块的电路配置有关的信息。
2.根据权利要求1所述的操作方法,
所述操作方法还包括:
通过所述处理电路将存储在所述电子系统的存储器中的机器代码转换为汇编代码;以及
通过所述处理电路将所述汇编代码与所述数据库中的参考汇编代码进行匹配;以及
所述设计包括:通过所述处理电路基于所述参考汇编代码设计所述知识产权块的所述电路。
3.根据权利要求2所述的操作方法,其中所述机器代码与被配置为执行存储在所述电子系统中的应用的代码相对应。
4.根据权利要求2所述的操作方法,其中所述机器代码能够由所述电子系统中的虚拟机执行。
5.根据权利要求2所述的操作方法,其中将所述汇编代码与所述数据库中的所述参考汇编代码进行匹配包括:通过所述处理电路将所述汇编代码的至少一个指令与所述参考汇编代码的至少一个指令进行匹配。
6.根据权利要求2所述的操作方法,还包括:
通过所述处理电路将要由所述电子系统处理的多个任务中的至少一些任务分配给所述现场可编程门阵列,
其中,所述机器代码与所述多个任务中的分配给所述现场可编程门阵列的所述至少一些任务相对应。
7.根据权利要求2所述的操作方法,还包括:
通过所述处理电路分析与所述参考汇编代码相对应的电路配置的功率特性和时钟信号特性以产生分析结果;以及
通过所述处理电路基于所述分析结果将所述知识产权块的所述电路设计为包括功率门控器件和时钟门控器件。
8.根据权利要求1所述的操作方法,还包括:
确定无法将所述高级语言的代码综合为所述硬件描述语言的代码;以及
通过所述处理电路基于确定无法将所述高级语言的代码综合为所述硬件描述语言的代码,将所述高级语言的代码转换为另一高级语言的代码;以及
通过所述处理电路将所述另一高级语言的代码综合为所述硬件描述语言的代码。
9.根据权利要求1所述的操作方法,还包括:
通过所述处理电路存储特性表,所述特性表包含根据所述知识产权块的所述电路配置的、与所述知识产权块的操作特性有关的信息。
10.一种电子系统,包括:
处理电路,被配置为将高级语言的代码综合为硬件描述语言的代码;
现场可编程门阵列,包括至少一个知识产权块,所述至少一个知识产权块具有根据执行所述高级语言的代码的访问结果而设计的电路配置;以及
存储设备,被配置为存储数据库,所述数据库包含与所述高级语言的代码相对应的参考汇编代码和与所述至少一个知识产权块的所述电路配置有关的信息。
11.根据权利要求10所述的电子系统,其中所述处理电路还被配置为根据编译器的类型对所述参考汇编代码进行分类,所述编译器被配置为将所述高级语言的代码转换为所述参考汇编代码。
12.根据权利要求10所述的电子系统,其中所述处理电路还被配置为将特性表存储在所述存储设备中,所述特性表包含根据所述至少一个知识产权块的所述电路配置的、与所述至少一个知识产权块的操作特性有关的信息。
13.根据权利要求12所述的电子系统,其中所述处理电路还被配置为在所述特性表中包括与任务的特性有关的信息,所述任务与所述至少一个知识产权块的所述电路配置相对应。
14.根据权利要求13所述的电子系统,其中所述处理电路还被配置为:
调度多个任务,以及
根据所述特性表将所述多个任务分配给所述现场可编程门阵列。
15.根据权利要求10所述的电子系统,其中
所述现场可编程门阵列还包括第一知识产权块和第二知识产权块,以及
所述第一知识产权块和所述第二知识产权块单独连接到系统总线,所述系统总线连接所述处理电路和所述现场可编程门阵列。
16.根据权利要求10所述的电子系统,其中
所述现场可编程门阵列还包括第一知识产权块、第二知识产权块和现场可编程门阵列总线,并且
所述第一知识产权块和所述第二知识产权块单独连接到所述现场可编程门阵列总线。
17.一种包括现场可编程门阵列的电子系统的操作方法,所述操作方法包括:
通过处理电路从与要由所述电子系统处理的多个任务相对应的代码之中选择第一代码和第二代码;
通过所述处理电路分别将所述第一代码和所述第二代码转换为硬件描述语言的代码;
通过所述处理电路基于从所述第一代码转换而成的所述硬件描述语言的代码,将第一知识产权块加载到所述现场可编程门阵列的第一子阵列中;以及
通过所述处理电路基于从所述第二代码转换而成的所述硬件描述语言的代码,将第二知识产权块加载到所述现场可编程门阵列的第二子阵列中。
18.根据权利要求17所述的操作方法,还包括:
通过所述处理电路将从与所述多个任务相对应的所述代码之中选择的第三代码转换为硬件描述语言的代码;以及
通过所述处理电路根据从所述第三代码转换而成的所述硬件描述语言的代码,将第三知识产权块加载到所述第一子阵列中。
19.根据权利要求18所述的操作方法,其中将所述第三知识产权块加载到所述第一子阵列中包括:
通过所述处理电路将所述第一代码重新转换为硬件描述语言的代码;以及
通过所述处理电路在所述第一子阵列中加载与从所述第一代码重新转换而成的所述硬件描述语言的代码相对应的知识产权块。
20.根据权利要求17所述的操作方法,其中
对所述第一代码和所述第二代码的选择基于所述第一知识产权块或所述第二知识产权块的操作速度或功耗。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2019-0066132 | 2019-06-04 | ||
KR1020190066132A KR20200139525A (ko) | 2019-06-04 | 2019-06-04 | Fpga를 포함하는 전자 시스템 및 이의 동작 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112035397A true CN112035397A (zh) | 2020-12-04 |
CN112035397B CN112035397B (zh) | 2024-04-16 |
Family
ID=73579667
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010297936.0A Active CN112035397B (zh) | 2019-06-04 | 2020-04-15 | 包括fpga的电子系统及其操作方法 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11012075B2 (zh) |
KR (1) | KR20200139525A (zh) |
CN (1) | CN112035397B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI776338B (zh) * | 2020-12-30 | 2022-09-01 | 國立成功大學 | 應用於圖形處理器的編譯器及非暫態電腦可讀式儲存媒體 |
CN115146782A (zh) * | 2021-03-31 | 2022-10-04 | 合肥本源量子计算科技有限责任公司 | 量子线路编译方法、装置、编译框架及量子操作系统 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200139525A (ko) * | 2019-06-04 | 2020-12-14 | 삼성전자주식회사 | Fpga를 포함하는 전자 시스템 및 이의 동작 방법 |
US20220321403A1 (en) * | 2021-04-02 | 2022-10-06 | Nokia Solutions And Networks Oy | Programmable network segmentation for multi-tenant fpgas in cloud infrastructures |
CN113255254B (zh) * | 2021-04-22 | 2024-01-19 | 江苏省电力试验研究院有限公司 | 一种dsp与zynq架构的控制器及数据传输设计方法 |
KR102678313B1 (ko) | 2022-02-23 | 2024-06-25 | 삼성전자주식회사 | 하드웨어 최적화를 위한 하이레벨 합성 방법 및 장치 |
KR20230144891A (ko) * | 2022-04-08 | 2023-10-17 | 네이버 주식회사 | 트랜스포머 기반 언어 서비스 가속화를 위한 저비용 다중 fpga 가속 시스템 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1372193A (zh) * | 2001-02-27 | 2002-10-02 | 韩国科学技术院 | 利用高级编程语言的电路内仿真的设备和方法 |
JP3735723B1 (ja) * | 2004-09-08 | 2006-01-18 | 国立大学法人金沢大学 | ハードウエア記述言語合成ツール及びそれを利用した集積回路の設計方法 |
CN1985256A (zh) * | 2004-06-30 | 2007-06-20 | 相干逻辑公司 | 硬件描述语言(hdl)程序的执行 |
CN101763280A (zh) * | 2008-09-30 | 2010-06-30 | Ics三重自动化软件有限公司 | 编译模型 |
CN102156655A (zh) * | 2011-05-05 | 2011-08-17 | 北京大学深圳研究生院 | 高级语言代码的生成方法及其产生器 |
CN102163248A (zh) * | 2011-04-02 | 2011-08-24 | 北京大学深圳研究生院 | 一种集成电路的高级综合方法 |
CN103324511A (zh) * | 2012-02-09 | 2013-09-25 | 阿尔特拉公司 | 配置可编程设备的方法、可编程设备及机器可读存储介质 |
CN104239115A (zh) * | 2014-07-24 | 2014-12-24 | 汕头大学 | 一种plc编程语言的编译方法 |
US9633158B1 (en) * | 2014-11-11 | 2017-04-25 | Altera Corporation | Selectable reconfiguration for dynamically reconfigurable IP cores |
US20190095566A1 (en) * | 2017-09-26 | 2019-03-28 | Intel Corporation | Method of reporting circuit performance for high-level synthesis |
CN110352400A (zh) * | 2017-03-08 | 2019-10-18 | 华为技术有限公司 | 用于处理报文的方法和装置 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5910898A (en) * | 1995-12-14 | 1999-06-08 | Viewlogic Systems, Inc. | Circuit design methods and tools |
US5841967A (en) * | 1996-10-17 | 1998-11-24 | Quickturn Design Systems, Inc. | Method and apparatus for design verification using emulation and simulation |
US6081473A (en) * | 1998-12-15 | 2000-06-27 | Lattice Semiconductor Corporation | FPGA integrated circuit having embedded sram memory blocks each with statically and dynamically controllable read mode |
US7240303B1 (en) * | 1999-11-30 | 2007-07-03 | Synplicity, Inc. | Hardware/software co-debugging in a hardware description language |
US7343594B1 (en) | 2000-08-07 | 2008-03-11 | Altera Corporation | Software-to-hardware compiler with symbol set inference analysis |
US7827510B1 (en) * | 2002-06-07 | 2010-11-02 | Synopsys, Inc. | Enhanced hardware debugging with embedded FPGAS in a hardware description language |
US7356672B2 (en) | 2004-05-28 | 2008-04-08 | The Regents Of The University Of California | Warp processor for dynamic hardware/software partitioning |
US8015395B1 (en) * | 2004-12-22 | 2011-09-06 | Rmt, Inc. | Computer having reconfigurable field programmable gate array |
US20060236278A1 (en) | 2005-04-19 | 2006-10-19 | International Business Machines Corporation | Method of automatic generation of micro clock gating for reducing power consumption |
US7386819B1 (en) * | 2005-07-28 | 2008-06-10 | Altera Corporation | Methods of verifying functional equivalence between FPGA and structured ASIC logic cells |
US8775147B1 (en) * | 2006-05-31 | 2014-07-08 | The Mathworks, Inc. | Algorithm and architecture for multi-argument associative operations that minimizes the number of components using a latency of the components |
JP2008282360A (ja) | 2007-05-14 | 2008-11-20 | Toshiba Corp | 低消費電力回路用高位合成装置及び高位合成方法及びそのプログラム |
US20120036138A1 (en) | 2009-03-31 | 2012-02-09 | Nec Corporation | Method and apparatus for design space exploration in high level synthesis |
JP2011192001A (ja) | 2010-03-15 | 2011-09-29 | Toshiba Corp | 高位合成装置及び高位合成方法 |
US8547136B1 (en) * | 2011-11-11 | 2013-10-01 | Altera Corporation | Logic block protection system |
JP5910108B2 (ja) | 2012-01-25 | 2016-04-27 | 株式会社ソシオネクスト | 高位合成装置,高位合成方法,高位合成プログラム,集積回路の設計方法 |
US8856708B1 (en) * | 2013-07-12 | 2014-10-07 | Hamilton Sundstrand Corporation | Multi-tier field-programmable gate array hardware requirements assessment and verification for airborne electronic systems |
US9922150B1 (en) | 2014-11-11 | 2018-03-20 | Altera Corporation | Method and apparatus for satisfying operating conditions in a system design using an electronic design automation tool |
TWI561007B (en) * | 2015-07-22 | 2016-12-01 | Nuvoton Technology Corp | Function programmable circuit and operation method thereof |
JP2017111591A (ja) | 2015-12-16 | 2017-06-22 | 株式会社ソシオネクスト | 設計方法、設計プログラム及び設計装置 |
US10546087B1 (en) * | 2016-03-28 | 2020-01-28 | Altera Corporation | Intellectual property (IP) blocks with customizable configuration status register (CSR) circuitry |
JP2018041129A (ja) | 2016-09-05 | 2018-03-15 | 三菱電機エンジニアリング株式会社 | 高位合成用記述変換装置及び高位合成用記述変換プログラム |
US11132207B2 (en) * | 2017-12-29 | 2021-09-28 | Lattice Semiconductor Corporation | Fast boot systems and methods for programmable logic devices |
KR20200139525A (ko) * | 2019-06-04 | 2020-12-14 | 삼성전자주식회사 | Fpga를 포함하는 전자 시스템 및 이의 동작 방법 |
-
2019
- 2019-06-04 KR KR1020190066132A patent/KR20200139525A/ko not_active Application Discontinuation
-
2020
- 2020-02-27 US US16/802,927 patent/US11012075B2/en active Active
- 2020-04-15 CN CN202010297936.0A patent/CN112035397B/zh active Active
-
2021
- 2021-04-28 US US17/242,737 patent/US11967952B2/en active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1372193A (zh) * | 2001-02-27 | 2002-10-02 | 韩国科学技术院 | 利用高级编程语言的电路内仿真的设备和方法 |
CN1985256A (zh) * | 2004-06-30 | 2007-06-20 | 相干逻辑公司 | 硬件描述语言(hdl)程序的执行 |
JP3735723B1 (ja) * | 2004-09-08 | 2006-01-18 | 国立大学法人金沢大学 | ハードウエア記述言語合成ツール及びそれを利用した集積回路の設計方法 |
CN101763280A (zh) * | 2008-09-30 | 2010-06-30 | Ics三重自动化软件有限公司 | 编译模型 |
CN102163248A (zh) * | 2011-04-02 | 2011-08-24 | 北京大学深圳研究生院 | 一种集成电路的高级综合方法 |
CN102156655A (zh) * | 2011-05-05 | 2011-08-17 | 北京大学深圳研究生院 | 高级语言代码的生成方法及其产生器 |
CN103324511A (zh) * | 2012-02-09 | 2013-09-25 | 阿尔特拉公司 | 配置可编程设备的方法、可编程设备及机器可读存储介质 |
CN104239115A (zh) * | 2014-07-24 | 2014-12-24 | 汕头大学 | 一种plc编程语言的编译方法 |
US9633158B1 (en) * | 2014-11-11 | 2017-04-25 | Altera Corporation | Selectable reconfiguration for dynamically reconfigurable IP cores |
CN110352400A (zh) * | 2017-03-08 | 2019-10-18 | 华为技术有限公司 | 用于处理报文的方法和装置 |
US20190095566A1 (en) * | 2017-09-26 | 2019-03-28 | Intel Corporation | Method of reporting circuit performance for high-level synthesis |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI776338B (zh) * | 2020-12-30 | 2022-09-01 | 國立成功大學 | 應用於圖形處理器的編譯器及非暫態電腦可讀式儲存媒體 |
US11567745B2 (en) | 2020-12-30 | 2023-01-31 | National Cheng Kung University | Compiler adapted in graphics processing unit and non-transitory computer-readable medium |
CN115146782A (zh) * | 2021-03-31 | 2022-10-04 | 合肥本源量子计算科技有限责任公司 | 量子线路编译方法、装置、编译框架及量子操作系统 |
Also Published As
Publication number | Publication date |
---|---|
US20200389171A1 (en) | 2020-12-10 |
US11967952B2 (en) | 2024-04-23 |
US20210250028A1 (en) | 2021-08-12 |
CN112035397B (zh) | 2024-04-16 |
US11012075B2 (en) | 2021-05-18 |
KR20200139525A (ko) | 2020-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112035397B (zh) | 包括fpga的电子系统及其操作方法 | |
CN114816664B (zh) | Gpu虚拟化 | |
Lin et al. | ASTRO: Synthesizing application-specific reconfigurable hardware traces to exploit memory-level parallelism | |
Kirchgessner et al. | VirtualRC: a virtual FPGA platform for applications and tools portability | |
US10289785B1 (en) | Platform architecture creation for a system-on-chip | |
US11232247B1 (en) | Adaptable dynamic region for hardware acceleration | |
US8578387B1 (en) | Dynamic load balancing of instructions for execution by heterogeneous processing engines | |
EP4152167A1 (en) | Scalable address decoding scheme for cxl type-2 devices with programmable interleave granularity | |
US20160364514A1 (en) | System, Method and Apparatus for a Scalable Parallel Processor | |
CN109983443B (zh) | 实现分叉非易失性存储器快速驱动器的技术 | |
CN114008589A (zh) | 用于在顺序处理器上进行多次执行的动态代码加载 | |
CN112214443B (zh) | 设置于图形处理器中的二次卸载装置和方法 | |
Vasiljevic et al. | OpenCL library of stream memory components targeting FPGAs | |
Van Lunteren et al. | Coherently attached programmable near-memory acceleration platform and its application to stencil processing | |
US20220222177A1 (en) | Systems, apparatus, articles of manufacture, and methods for improved data transfer for heterogeneous programs | |
Vieira et al. | gem5-ndp: Near-data processing architecture simulation from low level caches to DRAM | |
Brignone et al. | Array-specific dataflow caches for high-level synthesis of memory-intensive algorithms on FPGAs | |
Diamantopoulos et al. | Helmgemm: Managing gpus and fpgas for transprecision gemm workloads in containerized environments | |
CN112230931B (zh) | 适用于图形处理器的二次卸载的编译方法、装置和介质 | |
Ghasemi et al. | The Impact of Cache and Dynamic Memory Management in Static Dataflow Applications | |
US11620120B1 (en) | Configuration of secondary processors | |
US11947487B2 (en) | Enabling accelerated processing units to perform dataflow execution | |
US20230251989A1 (en) | Direct Access to External Storage from a Reconfigurable Processor | |
Faict | Exploring opencl on a cpu-fpga heterogeneous architecture | |
US20230136365A1 (en) | Methods and apparatus to allocate accelerator usage |
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 |