CN108885543A - 具有可重新配置的算法流水线核和算法匹配流水线编译器的处理器 - Google Patents
具有可重新配置的算法流水线核和算法匹配流水线编译器的处理器 Download PDFInfo
- Publication number
- CN108885543A CN108885543A CN201780020270.0A CN201780020270A CN108885543A CN 108885543 A CN108885543 A CN 108885543A CN 201780020270 A CN201780020270 A CN 201780020270A CN 108885543 A CN108885543 A CN 108885543A
- Authority
- CN
- China
- Prior art keywords
- processor
- core
- icat
- reconfigurable
- algorithm
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000004422 calculation algorithm Methods 0.000 title claims abstract description 107
- 238000012545 processing Methods 0.000 claims abstract description 98
- 230000006870 function Effects 0.000 claims abstract description 28
- 230000002093 peripheral effect Effects 0.000 claims abstract description 17
- 238000000034 method Methods 0.000 claims description 34
- 230000008569 process Effects 0.000 claims description 22
- 239000011159 matrix material Substances 0.000 claims description 16
- 238000004364 calculation method Methods 0.000 claims description 10
- 230000008859 change Effects 0.000 claims description 8
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims description 5
- 238000005516 engineering process Methods 0.000 claims description 3
- 230000008676 import Effects 0.000 claims description 2
- 230000003068 static effect Effects 0.000 claims description 2
- 238000004148 unit process Methods 0.000 claims description 2
- 230000008520 organization Effects 0.000 abstract description 4
- 238000013461 design Methods 0.000 description 15
- 230000008901 benefit Effects 0.000 description 8
- 238000007620 mathematical function Methods 0.000 description 7
- 235000013399 edible fruits Nutrition 0.000 description 6
- 238000003860 storage Methods 0.000 description 6
- 238000001514 detection method Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- LHMQDVIHBXWNII-UHFFFAOYSA-N 3-amino-4-methoxy-n-phenylbenzamide Chemical compound C1=C(N)C(OC)=CC=C1C(=O)NC1=CC=CC=C1 LHMQDVIHBXWNII-UHFFFAOYSA-N 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- RVCKCEDKBVEEHL-UHFFFAOYSA-N 2,3,4,5,6-pentachlorobenzyl alcohol Chemical compound OCC1=C(Cl)C(Cl)=C(Cl)C(Cl)=C1Cl RVCKCEDKBVEEHL-UHFFFAOYSA-N 0.000 description 1
- 238000012935 Averaging Methods 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000001816 cooling Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000001066 destructive effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006698 induction Effects 0.000 description 1
- 230000008595 infiltration Effects 0.000 description 1
- 238000001764 infiltration Methods 0.000 description 1
- 238000012905 input function Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000008140 language development Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Classifications
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- 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
-
- 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/7885—Runtime interface, e.g. data exchange, runtime control
- G06F15/7889—Reconfigurable logic implemented as a co-processor
-
- 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/33—Design verification, e.g. functional simulation or model checking
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
- G06F30/331—Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
-
- 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/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Geometry (AREA)
- Evolutionary Computation (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Advance Control (AREA)
- Logic Circuits (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
- Microcomputers (AREA)
Abstract
算法匹配流水线编译器和可重复使用的算法流水线核包括系统。可重复使用的算法流水线核是具有流水线结构的可重新配置的处理核,该流水线结构包括:具有用于编程由设置数据确定的多个操作中的任何操作的设置接口的处理器;用于编程查找表、循环计数器和常量寄存器的逻辑决策处理器;以及存储器块。这可以用于执行功能。可重新配置的可编程电路在处理算法期间,根据需要将来自一个核的数据和结果路由到另一个核和/或IO控制器和/或中断发生器以完成算法,而无需来自中央或外围处理器的进一步干预。
Description
相关申请的交叉引用
本申请要求于2016年1月26日提交的名称为“Processor With ReconfigurableAlgorithmic Pipelined Core And Algorithmic Matching Pipelined Compiler”的美国临时申请62/287,265的优先权,其全部内容通过引用并入本文。
技术领域
领域涉及计算机编程和微处理器设计和编程,尤其是通用软件指令的可重新配置、流水线和并行处理。
背景技术
图1A示出了传统处理器的编译器。传统处理器,诸如Intel微处理器和ARM微处理器是众所周知的。例如,图1B中示出了传统处理器的概念图示。这些处理器是用于现代计算机和设备的中央处理单元的核心,并且用于处理算法。传统处理器的一个问题是这些类型的处理器是通用的,并且不能以任何实际的方式重新配置从而允许其性能针对特定应用得到增强。另一个问题是程序执行控制增加了算法函数处理(诸如数学运算和改变处理流程的逻辑决策)的大量开销(overhead)。可以使用更高级编程语言来编程传统处理器,并且编译器将更高级编程语言中的指令转换为用于特定处理器架构的机器代码。该机器代码被提供到处理器可访问的存储器位置,并与由系统架构提供的任何BIOS或其它调用一起提供用于处理器硬件的操作的指令。在大多数情况下,数学和逻辑处理方向指向算术逻辑单元(arithmetic logic unit,ALU),该算术逻辑单元向处理器的程序执行控制部分返回解决方案,该程序执行控制部分管理开销,诸如通过解决数学算法、逻辑决策、数据处理等的正确顺序来引导处理器。从程序存储器持续取得机器代码指令以便控制数据的处理。这种开销严重限制了机器性能。
例如,以下示出了传统编译器以“C”编程语言编译数学运算的步骤,该“C”编程语言是可以被编译以创建用于特定传统处理器的机器代码的更高级编程语言的示例。简单的数学运算分配“var i1;”、“var i2;”和“var s;”来定义变量i1、i2和结果s的数据存储位置。然后,指令“s=i1+i2;”可用于对在数据位置i1和i2中分配的变量求和。编译器,(a)首先为数据分配存储位置(例如i1、i2和s),并且(b)将源代码生成为机器代码。传统处理器将从存储代码的存储位置检索机器代码的全部或一部分。然后,传统处理器将执行机器代码。对于此示例,中央处理单元(central processing unit,CPU)将i1数据加载到存储器位置并将其发送到ALU,将i2数据加载到存储器位置并将其发送到ALU,并指示ALU将位于i1和i2中的数据相加。只有这样,ALU才会执行位于i1和i2的数据位置中的值的相加。这是有用的工作步骤,且CPU的设置是开销。然后,CPU可以从针对“s”的数据位置获得ALU结果,并可以将该ALU结果发送到输入和输出控制器。如果结果不是计算中的中间步骤,则这是呈现结果的必要步骤。传统处理器演进源于节省计算机程序开发时间的愿望,其允许为中央处理单元和外围设备的各种架构编译更高级编程语言。另外,由CPU执行的所有进程可以通过在系统环境中操作的各种程序共享ALU时共享该公共ALU。
构建成能够快速执行用于特定功能的计算的硬件电子电路的专用集成电路(application specific integrated circuit,ASIC)是已知的。这些专用集成电路通过将特定功能硬布线到硬件中来减少开销。
一些具有大量逻辑门和随机存取存储器(random access memory,RAM)块的现场可编程门阵列(field programmable gate array,FPGA)是已知的。这些FGPA用于实现复杂的数字计算。这种FPGA设计可以采用非常快速的输入/输出总线和双向数据总线,但是难以在设置时间和保持时间内验证有效数据的正确时序。平面布局使FPGA内的资源分配能够满足这些时间约束。FPGA可以用于实现ASIC芯片可以执行的任何逻辑函数。关于ASIC设计,在交付后更新功能的能力、设计的一部分的部分重新配置和低的非重复性工程成本为某些应用提供了优势(即使在考虑通常更高的单位成本时)。
然而,FPGA架构的渗透已经被限于狭隘的利基产品。用于(通过响应于一系列程序指令连续地重新配置一组FPGA而)执行那些指令的FPGA虚拟计算机在美国专利No.5,684,980中授权。图2示出了该FGPA架构的结构。该已颁发的专利包括在连续算法或指令的执行期间连续地改变配置的FPGA阵列。FPGA阵列的配置允许执行整个算法或指令集,而无需等待在执行各个计算步骤时下载各个指令。
FGPA的发展和与处理器的集成给出了提供在“运行时间(run time)”重新编程的能力的希望,但实际上,由于在出于此目的编程和配置这些架构中的困难,适应手头任务的可重新配置的计算或可重新配置的系统远未在实际应用中实现。
图2示出了虚拟计算机的框图,该虚拟计算机包括现场可编程门阵列和现场可编程互连设备(field programmable interconnection device,FPIN)或将现场可编程门阵列的内部资源从任何外部连接任务释放的交叉开关,如美国专利No.5,684,980中公开的,出于公开熟悉FPGA的技术人员的知识的目的,该专利的公开内容和附图其整体并入本文。
图2示出了被布置并用作协处理器以增强主计算机或虚拟计算机处理器内的性能以执行连续算法的现场可编程门阵列和现场可编程互连设备的阵列。必须将连续算法编程以与通常会在传统微处理器中执行的一系列常规指令相对应。然后,FPGA/FPIN阵列执行连续算法的特定计算任务的速率远小于传统微处理器执行的相应指令的速率。图2的虚拟计算机必须包含控制FPGA/FPIN阵列的重新配置的可重新配置控制部分。必须使用为此目的设计的软件包为可重新配置控制部分生成配置位文件。然后,必须将配置位文件发送到虚拟计算机中的相应FPGA/FPIN阵列。图2示出了阵列和双端口随机存取存储器(RAM)如何通过引脚连接到可重新配置控制部分、总线接口和计算机主存储器。总线接口连接到系统总线。
美国专利No.5,684,980示出了引脚如何提供时钟引脚和将可重新配置控制部分连接到FPGA/FPIN阵列的引脚,并且示出了可重新配置控制部分的示例。
美国专利No.4,291,372公开了一种具有专用指令格式化的微处理器系统,该系统与从属于逻辑模块的外部应用共同工作,该逻辑模块处理向外围设备发送数据和接收来自外围设备的数据的特定要求。微处理器提供具有专用指令格式的程序存储器。指令字格式提供用于选择程序计数器或存储器参考寄存器作为存储器地址源的单个位字段、定义要进行数据传输的路径的功能字段、以及用于寻址源和目标位置的源和目的字段。之前,外围控制器单元在系统中加载了基本模块中的处理器和控制电路,以处理特定要求。
数字信号处理(Digital Signal Processing,DSP)单元或DSP处理器阵列可以硬连线为优化某些图形密集型任务(诸如用于在输出屏幕(诸如监视器和电视机)上生成图像的像素处理)中的性能的并行阵列。这些是定制的,且包括专用于为数字信号处理器进行其工作所创建的图形加速环境的BIOS。
矩阵总线开关(matrix bus switching,MBS)是已知的。例如,用户指南“AXI4TM、AXI4-LiteTM和AXI4-StreamTM协议声明(Protocol Assertion),修订版:r0p1,用户指南(User Guide)”,版权所有2010、2012(引用为ARM DUI 0534B、ID072312),教导了高速且可由本领域普通技术人员实现的用于矩阵总线开关的系统。该用户指南为希望确认设计符合相关AMBA 4协议的系统设计人员、系统集成人员和验证工程师而编写。例如,AMBA 4协议可以是AXI4、AXI4-Lite或AXI4-Stream。所有商标均为ARM在欧盟和其它地方的注册商标。除此之外,该参考文献通过引用整体并入本文。MBS是用于数据输入和输出的高速总线,且该参考文献教导了系统工程师在处理器系统架构中集成MBS的示例的方法和硬件。
所有这些在本领域中是已知的,但是现有技术中没有示例消除了传统处理系统产生的几乎所有开销,同时保持处理各种算法和使用标准的更高级编程语言(诸如“C”)进行处理系统的软件开发的灵活性。
发明内容
芯片上的流水线并行处理器包括处理单元和由算法匹配流水线编译器编程的可重新配置的现场可编程门的阵列,所述算法匹配流水线编译器可以是预编译器,使得所述算法匹配流水线编译器预编译用于由所述处理单元处理的、被设计为用于在没有并行处理的标准处理器上运行的源代码,所述处理单元和所述算法匹配流水线编译器(称为AMPC或ASML)将所述现场可编程门配置为作为流水线式的并行处理器运行。例如,处理器可以被称为可重复使用的算法流水线核(reusable algorithmic pipelined core,RAPC)。并行处理器被配置为在没有来自处理单元的任何进一步开销(诸如用于控制算术处理单元的开销)的情况下完成任务。
在一个示例中,可重复使用的算法流水线处理器包括计算机池,该计算机池被配置为使用标准的更高级软件语言(诸如“C”、“C++”等)并行处理算法。例如,计算机池被重新编程以根据特定计算的需要基于AMPC的输出来运行不同的算法,该AMPC是使用可用的RAPC资源建立的。
例如,可重复使用的算法流水线核(RAPC)可以包括三个模块:智能总线控制器或逻辑决策处理器(logical decision processor,LDP)、数字信号处理器(DSP)和矩阵总线开关。逻辑决策处理器(LDP)包括可重新配置的逻辑函数,可根据需要重新编程,且用于控制主总线开关(master bus switch,MBS)。DSP包括用于执行数学运算的可重新配置的数学处理器。在一个示例中,由RAPC处理的所有数学运算由DSP处理。在一个示例中,由RAPC处理的所有逻辑函数由LDP处理。矩阵总线路由器或矩阵总线开关(MBR(matrix bus router)或MBS)被定义为可重新配置的可编程电路,其根据需要将来自一个RAPC的数据和结果路由到另一个RAPC以及从输入/输出控制器和/或中断发生器路由数据和结果/将数据和结果路由到输入/输出控制器和/或中断发生器,以完成算法,而在算法处理期间无需来自中央处理器或外围处理器的任何进一步的干预。因此,与需要由中央处理器或外围处理器干预以引导数据和结果导入算术处理单元和将数据和结果导出算术处理单元的静态、不可重新配置的硬件相比,通过流水线技术大大减少了开销。在一个示例中,LDP处理逻辑决策和迭代循环,并且由用于学习算法的LDP提供结果存储器。
在一个示例中,由RAPC处理的所有数学运算由DSP处理,并且所有逻辑函数由LDP处理。在一个示例中,多个RAPC被配置为核池,并且核池中的每个RAPC可以通过编程单独地重新配置,而无需对硬件进行任何改变。例如,所有RAPC均可以被配置为并行处理算法。在一个示例中,LDP使用存储器块作为用于常量值或学习值的查找表(Look Up Table,LUT)和寄存器。可以使用n位(n-bit)的LUT来使用由LDP建立的LUT将任何n输入(n-input)布尔(Boolean)逻辑函数编码为真值表。
在一个示例中,算法匹配流水线编译器(AMPC)用更高级的可编译软件语言(诸如“C”、“C++”、Pascal、Basic等)生成机器代码。为传统的不可重新配置的和非流水线的通用计算机处理器编写的标准源代码可以由AMPC处理,以生成用于配置一个或多个RAPC的机器代码。例如,AMPC从用于传统ARM处理器或传统Intel处理器的标准的、预先存在的代码生成机器代码,并且由该AMPC预编译器生成的机器代码使用ARM处理器或Intel处理器来配置RAPC。因此,新的计算机系统包括传统处理器(诸如现有的ARM处理器、Intel处理器、AMD处理器等)和多个RAPC,每个RAPC包括例如DSP、LDM和MBS。然而,与现有的协处理器或加速器不同,RAPC不仅仅是外围协处理器。而是,在预编译器或AMPC配置RAPC完成其工作之后,RAPC被重新配置为独立地解决复杂的数学和逻辑算法而无需传统处理器的进一步的干预。将值输入到配置的RAPC中,并将解决方案输出到MBS。在一个示例中,多个RAPC被布置在单个芯片(诸如可重新配置的ASIC)上。可重新配置的ASIC指的是被设计成包含RAPC的芯片,使得每个RAPC可针对由AMPC和现有的通用处理器架构(诸如ARM处理器、AMD处理器和Intel处理器等)进行的特定操作重新编程。通过这种方式,这种可重新配置的ASIC可以包含2000个RAPC,并且可以以500MHz的时钟速度每秒操作360万亿个指令。因此,包含2000个RAPC的单个可重新配置的ASIC可以比现今任何传统的通用处理器操作快100倍。所有RAPC都可以以流水线配置并行运行,同时数据是可用的。单个RAPC可以比标准处理器快100倍地执行指令。包含20个RAPC的、以500MHz的时钟速度运行的可重新配置ASIC,每秒可以执行300亿条指令。单个芯片可以在常规大小的ASIC中包含多达2000个RAPC。因此,包含2000个RAPC的常规大小的ASIC可以比传统处理系统快200,000倍地执行指令,而不必求助专用编程语言。而是,可以移植现有程序以与包括多个RAPC的可重新配置ASIC一起操作,并且从指令的流水线(并行)执行中受益,而基本上不需要重写现有的高级编程。在一个示例中,AMPC预编译用于ARM通用处理器架构的现有代码,该ARM通用处理器架构嵌入在包含多个RAPC的可重新配置ASIC上。这种新的处理器架构(ICAT)通过将ARM处理器架构和多个RAPC集成在一个芯片上,实现了令人惊讶和意想不到的性能。ICAT芯片上的嵌入式ARM处理器执行由AMPC从先前存在的用高级编程语言(诸如“C”)编写的程序生成的机器代码指令,AMPC在ICAT芯片上配置多个RAPC,以每秒执行令人惊讶的速度快速执行指令。ARM处理器还控制智能监控、诊断和与ICAT芯片外部的外围设备的通信。因此,对于外部世界来说,ICAT芯片呈现为非常快速的、不需要数学协处理器的ARM处理器。
在替选的示例中,ICAT芯片可以嵌入AMD处理器,并且可以对外部世界呈现为是AMD处理器。
在又一个示例中,ICAT芯片可以嵌入Intel处理器,并且可以对外部世界呈现为Intel处理器。
令人惊讶的是,尽管ICAT芯片对外部世界呈现为能够以仅与标准处理器相当的速率执行指令的、标准的不可重新配置的非流水线处理器,但ICAT芯片却以令人惊讶和意想不到的比面向世界的标准处理器快100倍到200,000倍的速率执行指令,而无需重写为标准处理器编写的程序。这种简化重写代码的繁琐工作以便在FPGA上运行,最终使普通程序员可以使用FPGA。在一个示例中,AMPC不生成ICAT芯片的运行时间代码。而是,它预编译程序并分离出最适合RAPC的指令。然后,AMPC生成用于在ICAT芯片上(或者在其它地方,在一个示例中,使用并行操作的多个ICAT芯片)设置多个RAPC中的各个RAPC的代码,然后RAPC流水线式且并行地操作。替选地,可以基于ICAT接收的指令或由ICAT芯片先前接收的历史指令,实时地重新配置RAPC。因此,如果ICAT芯片一直用于类似目的,则ICAT芯片可以随时间学习以越来越快的速度操作。如果RAPC被实时配置以解决新的逻辑和数学方程式,同时在例如先进先出或最新使用的最新重新配置的基础上适当保持旧的逻辑和数学配置,则这会自然发生。如果经常使用的话,为特定目的重新配置的RAPC的集合将不为另一个目的被重新配置,直到对于需要RAPC的新算法没有其它可用RAPC,例如,如果采用最新使用的最新重新配置的算法。通过这种方式,最常用的算法将不需要被配置,但在先前的使用中预先配置。
RAPC当由中央处理单元配置时,在没有开销的情况下操作,执行指令直到已经完成(RAPC已经被配置的)数学、逻辑和迭代指令。
在一个示例中,ICAT芯片包括设置寄存器,并且AMPC生成用于设置ICAT芯片的设置寄存器的指令,AMPC配置RAPC以完成特定指令。RAPC在初始化时连续运行,无需中央处理单元进一步监督。在一个示例中,AMPC从硬件编译器(诸如Verilog或Vivado硬件编译器)接收RAPC硬件数据。硬件文件可以由硬件编译器生成,并且可以由AMPC使用以生成写入ICAT芯片的设置寄存器(或者在一个示例中为多个ICAT芯片的设置寄存器)的配置数据的代码。
在一个示例中,AMPC从以高级编程语言(诸如“C”)为标准处理架构编写的程序中,提取用于ICAT芯片的设置寄存器的配置数据。例如,AMPC忽略开销指令并从用于以下程序生成用于ICAT芯片的设置寄存器的代码:1)算术指令和数据;2)逻辑决策和数据;3)分支或调用/返回指令和目标;4)迭代循环、决策和数据;5)DSP设置例程和数据;以及6)用于循环和分支的代码入口点标签。例如,AMPC使用这些指令来配置ICAT的设置寄存器,以配置DSP以完成数学算法,配置用于逻辑决策的LDP和用于LDP查找表的值,以及配置用于分支、调用和返回目标标签的MBS,该返回目标标签映射到ICAT硬件中的各种处理算法中的入口点和已分配地址。例如,RAPC硬件表是为各个RAPC构建的且包含DSP、LDP和MBS配置表。例如,DSP、LDP和MBS被配置为在RAPC中经常使用,但是当不需要DSP或LDP时,则可以重新配置RAPC,甚至可以省略AMPC和ICAT架构的这种常见结构。因此,虽然DSP、LDP和MBS存在于某些RAPC中,但其它RAPC可以具有特定于要在ICAT处理器上运行的代码的不同的结构。
在一个示例中,ICAT架构和AMPC彼此依赖于能够由AMPC重新配置的硬件。例如,如果目标RAPC在附近、或者数据正从DSP路由到LDP或者反之亦然,则AMPC可以通过将结果或数据直接连接到目标来实现ICAT架构内的目标的分支或调用,例如,使结果或数据直接可用于执行指令,而无需任何开销。替选地,AMPC可以使用MBS实现目标的分支或调用,并且结果和数据在高速流接口上传输到目标,该目标可以是另一个RAPC或其它目标,使得数据可用于通过高速流接口到目标进一步执行指令。
在一个示例中,AMPC知道RAPC资源,该RAPC资源由AMPC在预编译以高级编程语言编写的代码时分配。因此,ICAT架构可以由AMPC配置以优化RAPC资源的使用,诸如通过最小化由多个RAPC执行的指令之间的互连长度而优化RAPC资源的使用。可以通过迭代方法或反复试验方法来完成该优化。在一个示例中,AMPC包括学习算法,该算法基于某些指令的历史使用模式来改进优化(诸如通过最小化用于共同指令集的目标的分支或调用的MBS的使用),该算法无论是数学算法、逻辑算法还是数学算法和逻辑算法的组合。对于MBS实现的示例,参见背景技术中的ARM MBS的示例。
在一个示例中,RAPC被集成到芯片中,该芯片具有用于配置RAPC的传统处理器和用于将传统高级源代码编译成用于传统处理器以建立RAPC的指令的AMPC。RAPC包括DSP、LDP和MBS。在该示例中,每个DSP具有用于编程多个运算中的任何运算的设置接口,例如整数和浮点数学运算,诸如乘、除、加、减和其它数学函数。DSP可以具有用于操作数数据的输入,该输入可以与由设置数据确定的数学函数的各种组合串联或用由设置数据确定的数学函数的各种组合进行操作。在该示例中,每个DSP具有48位的累加器,该累加器是作为结果数据和状态数据的输出。状态数据例如包括,执行、等于、大于和小于。在该示例中,每个LDP具有用于编程查找表、循环计数器和常量寄存器的设置接口。每个LDP都有用于检测何时完成迭代算法的“循环计数器(Loop Counter)”。每个LDP都具有寄存器,所述寄存器可以保存用于输入到查找表的常量数据。每个LDP都具有存储器块,所述存储器块可用于执行功能。查找表功能可以包括:可以使用循环计数器来实现和顺序访问的查找表;用于控制目的的、可由DSP状态、常量寄存器或DSP结果数据实现和访问的查找表;和例如用于控制目的的、可以实现并输出各种逻辑信号的逻辑查找表。LDP可以将结果数据从其输入传递到其输出。例如,LDP可以在其输出处具有一个用于结果数据的流水线寄存器。替选地,LDP可以具有使其输出处的结果数据能够同步清零的两个流水线寄存器。例如,芯片可以是包含多个RAPC的ICAT芯片,每个RAPC包括DSP、LDP和MBS,并且每个RAPC由AMPC提供给传统处理器的代码设置。
在一个示例中,AMPC包括具有输入架构的编译器,该输入架构用于定义多个RAPC的数量和多个RAPC的位置。AMPC过滤高级源代码并识别能够通过配置多个RAPC中的一个或多个RAPC来优化的数学算法和逻辑算法。例如,如果识别出视频处理数学算法或逻辑算法,则AMPC建立一个或多个RAPC的DSP、LDP和MBS以执行视频处理数学算法和/或逻辑算法。例如,AMPC从“C”语言源代码创建机器代码,以用于操作传统处理器(诸如ARM处理器),且ARM处理器设置各个RAPC的各个DSP、LDP和MBS的将用于处理输入到处理器的数据和从处理器输出数据的部分。
对于处理器外部的系统,ICAT处理器将呈现为异常快速的传统处理器。在处理器内,RAPC的DSP、LDP和MBS将以比传统单核处理器快几十、几百甚至几千倍的速度处理数据。对于每个RPAC,DSP将在第一个时钟上执行其操作,LDP将在第二个时钟上测试结果并输出控制决策和结果数据,并且MBS将在第三个时钟上基于控制数据将结果数据路由到两个目标中的一个目标。因此,每个RAPC将具有从DSP到MBS的3个时钟的延迟。对于流数据,一旦启动,MBS可以在延迟期之后的每个后续时钟上输出数据。
在一个示例中,用于配置可重新配置处理器的系统包括:不可重新配置的处理器、多个可重新配置的核、以及能够接受以高级编程语言为不可重新配置的处理器编写的代码的算法匹配流水线编译器;其中,该编译器识别以高级编程语言编写的代码(该代码可以从多个可重新配置的核中的一个或多个核上可用的流水线得到),并输出用于不可重新配置的处理器的代码以设置所述多个不可重新配置的处理器中的一个或多个处理器。
在一个示例中,处理器包括不可重新配置的处理器核和耦合到该不可重新配置的处理器核的多个可重复使用的算法流水线核,使得不可重新配置的处理器核能够配置和重新配置多个可重复使用的算法流水线核中的每一个算法流水线核作为从算法匹配流水线编译器接收的指令的结果。例如,处理器包含在单个芯片中。在一个示例中,每个可重复使用的算法流水线核包括DSP、LDP和MBS,并且DSP流水线化到LDP,并且LDP流水线化到MBS,使得不可重新配置的处理器不控制任何在每个可重复使用的算法流水线核中发生的处理。
定义。算法匹配流水线编译器(Algorithmic Matching Pipelined Compiler)或AMPC是能够接受以高级编程语言为传统的不可重新配置的处理器编写的代码的编译器,其中,AMPC识别以高级编程语言编写的代码,该代码可以从在可重新配置的核或处理器(诸如RAPC或现场可编程门阵列)上可用的流水线技术得到,并输出用于不可重新配置的处理器的代码,在提供用于使用可重新配置的核或处理器的指令之前,该代码指示不可重新配置的处理器配置可重新配置的核心或处理器。可重复使用的(或可重新配置的)算法流水线核(或计算机)或RAPC被定义为具有流水线结构的可重新配置的处理核,该流水线结构包括:DSP,该DSP包括用于编程多个运算(诸如整数和浮点数学运算)中的任何运算的设置接口,该DSP具有用于操作数数据的四个输入,该四个输入可以与由设置数据确定的数学函数的各种组合串联或用由设置数据确定的数学函数的各种组合进行操作,以及该DSP包括作为结果数据和状态数据输出的48位的累加器;LDP,该LDP具有用于编程查找表、循环计数器和常量寄存器以及(可以用于执行功能的)存储器块的设置接口;以及MBS。MBS被定义为可重新配置的可编程电路,该可重新配置的可编程电路根据需要将来自一个RAPC的数据和结果路由到另一个RAPC以及从输入/输出控制器和/或中断发生器路由数据和结果/将数据和结果路由到输入/输出控制器和/或中断发生器,以完成算法,而在算法处理期间无需来自中央处理器或外围处理器的任何进一步的干预。
附图说明
以下附图是说明性示例,并且不进一步限制可以最后发布的任何权利要求。
图1A示出了现有技术中用于传统编译器的流程图。
图1B示出了现有技术中用于传统计算机的处理器。
图2示出了美国专利No.5,684,980的框图。
图3是示出了用于与图1A中的流程图进行比较的AMPC编译器的示例的流程图。
图4是ICAT架构的示例。
图5示出了程序员可以如何使用AMPC的示例的流程图。
图6是可重复使用的算法流水线计算机的示意性示例。
图7示出了用AMPC编译器进行代码示例(Code Example)1的编译产生的硬件配置的图解的示意图。
图8示出了来自图7的示例的(由于消费者电子设备中的实时无损数据压缩的)原始处理能力的显著益处。
当使用相同的附图标记时,这些标记指的是附图中所示的示例中的相似的部件。
具体实施方式
例如,ICAT架构模仿任何标准微处理器单元架构。其架构利用流水线技术和集成电路中设计的用于在制造后由客户或设计人员配置的更丰富的门密度,诸如当使用具有相同时钟速度的单个标准微处理器架构进行1:1比较时,一个或多个现场可编程门阵列(FPGA)可以在MIPS中实现100:1的优势。FPGA包含可编程逻辑块的阵列,以及允许块“线接在一起”的可重新配置的互连层次结构,就像许多可以在不同配置中相互线接的逻辑门一样。逻辑块可以被配置为执行复杂的组合功能,或仅仅是简单的逻辑门(如AND和XOR)。在大多数FPGA中,逻辑块还包括存储器元件,其可以是简单的触发器或更完整的存储器块。
性能的巨大提升允许处理器用于数据密集型应用,例如机器视觉应用、视频处理应用、音频处理应用、机器人控制系统应用、多轴控制系统应用、移动通信应用、虚拟现实应用、人工智能应用、直播应用、生物特征监测应用、物联网应用、超级计算应用、量子计算应用、航空航天控制系统应用、复杂系统的仿真和建模应用、以及信号处理应用。
在一个示例中,较少的功率用于算法的计算密集处理。例如,ICAT架构为在标准微处理单元上实现的同一计算提供100比1的能量使用减少,更优选地为1000:1的优势,从而减少热量和功率消耗。
在一个示例中,ICAT可以在和应用所需的一样多的并行处理器的配置中运行,与标准微处理器相比甚至进一步提高了性能。例如,可以同时运行多个处理器架构。例如,遗留代码可以在与遗留代码兼容的虚拟机上运行,而新虚拟机运行专门为新架构编写的代码。在一个示例中,这减少了对诸如用于将遗留代码适配到新系统架构所需的扩充的回归测试的需要。
在一个应用程序中,ICAT架构的速度和可扩展性适用于遗留系统,该遗留系统无法为代码和/或硬件已经遇到限制的客户处理原始速度和可扩展性所需的数据量。
在一个示例中,在上电时或之前编译重新配置,极大地简化了规划,而对最终产品性能几乎没有影响。例如,FPGA是该架构的主机硬件。可以轻松地每秒添加数百万条指令(Millions of instructions per second,MIPS),而无需对现有代码进行重大改写。除了重新编译现有代码之外,现有代码几乎不需要修改地运行。例如,需要并行处理大量公共输入的算法是该ICAT架构的理想候选者。
在一个示例中,新处理器和旧处理器并行运行。现有代码可以被重新编译并且运行几乎不受影响,同时进行最少的回归测试来确保不发生改变。例外情况是时序影响架构的运行以及硬件外围设备被改变。例如,ICAT架构可以用于增加原始计算速度,并且可以通过在需要时转换硬件来实现代码的加速。
在一个示例中,ICAT架构包括捕获任何潜在的代码不兼容问题的前端预编译器。此前端预编译器自动解决这些潜在的代码不兼容问题。例如,ICAT架构可以模拟不同开发者熟悉的各种处理器架构。例如,ICAT架构可以模拟多于一个处理器,允许为多个开发者的优选处理器编码项目并同时在多个不同的虚拟处理器上运行代码。在一个示例中,多个不同的处理器将在多处理环境中运行不同的代码集,并且程序开发者为与代码兼容的多个域中的一个域编译代码。
在一个示例中,预编译器是算法匹配流水线编译器,其生成各种处理算法所需的硬件配置代码。可以从用于多个处理任务的逻辑和数学方程生成用于配置ICAT架构的固件。例如,多个处理器可以被配置成矩阵阵列,以用于运行混合的低性能和高性能任务。
ICAT架构包括使用更高级语言开发的处理代码,因为ICAT架构提供了原始速度优势,该原始速度优势超越了以仅适用于一个特定多处理环境的机器语言编程所获得的任何速度优势,从而大大缩短了完成开发项目的时间。
ICAT架构包括编译器或预编译器,所述编译器或预编译器检查用于硬件特定命令的遗留代码,且使用高级编程语言(诸如C或C++)是最优化的。例如,图1和图3的比较示出了算法匹配流水线编译器(lgorithmic Matching Pipelining Compiler,AMPC)中包括的附加步骤。
在一个示例中,ICAT架构提供了具有内置协调的标准多处理/多任务外围设备的集合。可以采用实时操作系统(real time operating system,RTOS)。例如,多任务、实时操作系统被并入ICAT架构中。例如,微控制器操作系统(Micro-Controller OperatingSystem,MicroC/OS)是由嵌入式软件开发者Jean J.Labrosse于1991年设计的实时操作系统。它是一个基于优先级的用于微处理器的先发(pre-emptive)实时操作系统,其主要以C编程语言(更高级的编程语言)编写。例如,ICAT架构的原始速度允许使用这样的RTOS。MicroC/OS允许以C语言定义多个函数,每个函数都可以作为独立的线程或任务运行。每个任务以不同的优先级运行,并且每个任务都认为它拥有ICAT架构的虚拟处理器。较低优先级的任务可以在任何时候被更高优先级的任务抢占。较高优先级的任务可以使用操作系统服务,例如延迟或事件,以允许执行较低优先级的任务。提供了用于任务管理、任务间通信、存储器管理、以及用于定时MicroC/OS的操作系统服务。MicroC/OS是开源的,并且适用于多种不同的处理器架构。
为ICAT架构提供PCBA布局软件和工程工具,以便允许现有设计转换为ICAT架构。
在一个示例中,使用标准Verilog或VHDL代码实现流水线架构。例如,可以在ICAT架构中提供1024字(word)指令高速缓存、数据高速缓存和多级存储器高速缓存架构。ICAT架构的流水线可以包括学习算法,该算法检测决策处理上的分支(branching)趋向于在哪个路径发生,使得该路径成为未来的经过学习算法的默认路径。在另一个示例中,中断代码被隔离,并且中断处理程序专用于具有私有代码位置的特定输入。在一个示例中,ICAT架构包括多处理器调试器。例如,现有代码可以由预处理调试器处理,以确保现有代码被很好地分区,从而功能被分开。然后,可以在操作的每个独立线程上运行单个调试器。
例如,可以在2英寸芯片封装中提供可重新配置的算法流水线核心(RAPC),该芯片封装提供相当于超过1000个Intel i7微处理器(更优选地超过10,000个Intel i7微处理器)的MIPS和Mega FLOPS。
在一个示例中,ICAT架构与现有的调试工具兼容。在另一示例中,ICAT架构实现为运行不包含处理器间通信的现有遗留代码。ICAT特定硬件被统一为所有遗留代码共用的单个的、经过良好调试的块。例如,为ICAT架构克隆完全模仿常见多处理单元的主要功能的外围设备。例如,超集外围设备允许客户容易地布置硬件布置。
在一个示例中,ICAT架构编译器或预编译器检测对时钟周期计数的低级代码定时循环、允许指令获取的延迟、以及其它不兼容的定时代码,并且利用ICAT架构中提供的兼容的更高级编程,手动或自动标记这些项以进行修复或替换。
在一个示例中,ICAT架构提供优于传统架构的4:1MIPS的优势。在另一个示例中,优势至少是100:1。
在一个示例中,ICAT架构包括算法匹配流水线编译器(AMPC),该算法匹配流水线编译器是接受标准源代码格式的处理算法的编译器。AMPC生成用于可与ICAT架构一起操作的传统处理系统的固件。编译器生成配置ICAT硬件的指令,使得与不能由AMPC重新配置的传统微处理器相比,该架构以改进的性能处理算法。具体而言,AMPC使用流水线技术为需要进行算法密集型计算处理的应用程序优化处理器性能。例如,该固件可以在传统处理系统上运行,从而以最佳性能配置处理算法的(一个或多个)ICAT硬件架构。
在一个示例中,AMPC提供编译器,该编译器编译能够生成用于操作ICAT硬件的代码的传统编译器源代码,该ICAT硬件配置ICAT架构的处理器资源以直接处理算法。例如,AMPC使用与传统编译器(诸如C、C#、C++、Matlab或其它传统编译器)兼容的源代码。
在一个示例中,由AMPC生成的固件在ICAT架构的主处理系统上运行。例如,主处理系统是与ICAT架构的其余部分在同一芯片上的传统处理器,并且与ICAT架构无缝地操作。在此示例中,AMPC接受以用于源代码的高级编程语言(诸如C、C#、C++)编写的代码,并且AMPC输出用于在主处理系统上运行的ICAT架构的固件。这通过允许用于ICAT架构的固件以开发者熟悉的更高级编程语言编程,简化了用于操作ICAT架构的编码。ICAT架构的原始速度消除了损失,并减少了编程机器级代码以优化速度的任何需求。而是,更高级的编程语言基于针对特定应用程序待求解的算法来优化固件以优化性能。例如,作为示例,ICAT架构是可重构的以允许在固件中定义的至少一个虚拟机上的、用于机器人视觉系统的最佳性能。
与传统微处理器不同,在一个示例中,ICAT架构的AMPC可以将软件语法(例如if-then-else过程)编译成固件,该固件重新配置(例如,使用流水线技术重新配置)ICAT架构的硬件以在更少的时钟周期内最佳地执行该过程。通过运行固件来配置ICAT架构。相比之下,传统编译器构建所有传统处理器使用的固件,但传统处理器不由固件重新配置。例如,AMPC为ICAT架构构建固件,从而配置ICAT架构以在特定应用程序中实现最佳操作。在一个示例中,AMPC使用作为用于ICAT架构的处理器硬件的输入结构的算法来选择和构造ICAT硬件的配置。
例如,当由AMPC生成的固件进行配置时,AMPC优化ICAT架构的硬件架构以处理特定应用程序的速度性能。AMPC可以重新配置ICAT架构的硬件,而传统编译器无法重新配置ICAT的硬件或任何微处理器的硬件。
标准系统编译器不能改变传统处理器系统中的硬件架构。然而,在一个示例中,AMPC生成固件,该固件配置ICAT架构处理器以基于硬件中的先前结果直接执行流水线处理和数据路由。例如,输入到AMPC的if-then-else逻辑语句将构造ICAT架构的硬件以将数据结果路由到下一个ICAT。在该示例中,AMPC生成消除传统处理系统的开销(诸如代码获取、数据加载、数据存储、分支以及用于同一if-then-else逻辑的子例程)的硬件配置。
图4示出了ICAT架构的示例。在一个示例中,传统编译器(诸如Visual Studio)可以用于生成在主处理系统101上运行的ICAT配置程序。这提供了用于配置和重新配置可重新编程的硬件池的方法,可重新配置该硬件池以运行和处理芯片中各种类型的处理算法。传统处理系统(例如,Intel、ARM、IBM、AMD微处理器)不能被重新配置为运行各种算法,因为在传统处理系统中只有软件而不是硬件可以改变。通过使用ICAT架构,消除了传统处理系统的所有获取和执行代码指令的开销。图4的ICAT架构提供了可重新配置的硬件,可配置该硬件以用于利用在片上系统(system on chip,SOC)设备100中实现的并行处理器资源池来执行数据的有效处理。
例如,数学处理器池107(其后是逻辑处理器108和可配置矩阵路由109)实现并行处理资源池102。该架构能够流水线式处理资源以优化用于特定应用程序的处理性能。在一个示例中,处理器池102独立于主处理器101执行多个处理任务,而不从主处理器接收进一步的指令。每个ICAT可以被配置为将整个算法作为独立处理器系统处理。因此,ICAT可以被认为是其自身内的系统,一旦被配置为执行算法,就不需要开销来完成该算法的处理。例如,ICAT可以被配置为执行if-then-else指令集,并且可以稍后被重新配置以执行完全不同的指令集(诸如快速傅里叶(Fourier)变换或其它数学算法解决方案)。
与传统处理器相比,通过减少不必要的活动周期,ICAT架构降低了功耗、产生了更少的热量、并提高了处理数据的速度。当数据准备好在ICAT资源102的输入处进行处理时,该ICAT资源102空闲直到该ICAT资源102得到配置。所有处理器在不需要时都保持空闲状态,从而减少因任何不必要的开销而产生的热量。ICAT资源池中的每个处理器都比传统处理器具有更少的开销,因为ICAT不获取和执行代码。而是,硬件被配置为执行特定操作,并且仅在提供需要使用由ICAT架构提供的配置算法处理的数据时才处于活动状态。在一个示例中,单个ICAT处理器使用数学处理器107、逻辑处理器108和由可配置矩阵路由109操纵的输出的池。
该同一ICAT处理器可以用于简单的处理任务(诸如if-then-else),或者用于非常先进的复杂算法(诸如面部识别中使用的算法)。通过使用数学处理器107、逻辑处理器108、和由可配置矩阵路由109操纵的输出的池、多个ICAT资源组或资源池102,ICAT架构可用于处理在流水线架构中需要多个计算的任务(例如,诸如,移动、形状或身份检测)。
在一个示例中,算法控制ICAT处理器的互连总线结构,并且ICAT架构处理来自输出设备112的输入数据流(诸如视频数据、传感器数据或来自先前处理步骤的数据)。例如,可以从数据存储缓冲器、实时输入数据或来自其它处理步骤110、111的任何数据来流式传输出先前结果。处理结果可以直接输出到设备113(例如,诸如控制输出或视频输出)。
程序员可以利用AMPC来配置多个RAPC,如图5的示例中所示。替选地,例如,AMPC的使用可以是自动的并由片上系统在板上控制。图5示出了对于程序员的6步的流程图,该程序员最初将原始高级编程语言源代码插入第一编译器(AMPC被称为ASML)。在步骤2中,ASML预编译器从原始源中提取代码,这是自动发生的。然后,预编译器将新的源代码输出到第二编译器。在程序员确信新源被调试和优化之后,该步骤可以自动完成或作为单独的步骤由程序员完成。第二编译器编译为ICAT架构构建的固件。然后,将该固件加载到ICAT架构中,并且该固件配置ICAT架构的RAPC。例如,在程序员确信固件被调试和优化之后,程序员可以将该固件上传到ICAT架构中。
替选地,除了将原始源代码加载到ICAT架构中之外,每个步骤都可以是自动的并且可以在没有人为干预的情况下发生。通过将传统处理器与多个RAPC和AMPC组合,基于原始源代码中包含的指令,整个过程可以是自动的,使得传统处理器运行AMPC以重新编译原始源代码以生成由传统处理器用于建立RAPC的固件。
ICAT资源池可以包含三种类型的处理器模块,例如,诸如数学模块、逻辑模块和结果路由模块。数学模块执行数学函数。逻辑模块执行逻辑函数。结果路由模块执行分支和数据路由函数。例如,在图6中,示意性地示出了可重复使用的算法流水线计算机(ReusableAlgorithmic Pipelined Computer,RAPC)。通过由AMPC配置ICAT架构的设置寄存器来建立设置总线109。操作数指向数字信号处理器(DSP)110上的存储器位置A、B、C和D。DSP被配置为执行数学算法。算法的结果指向逻辑决策处理器(LDP)111。LDP执行逻辑指令。逻辑指令的结果直接或通过矩阵总线开关(MBS)传送到下一个RAPC。MBS将结果指向到下一个RAPC、或控制输入和输出以及中断,以在高速流接口上传送结果。
可以将硬件资源配置到ICAT协处理器系统中,所述ICAT协处理器系统以流水线结构互连以获得最佳性能。在一个示例中,一种用于设计可重新编程的硬件资源池的方法,该可重新编程的硬件资源池可重新配置、运行并处理芯片中的多个处理算法。用于配置ICAT处理器的硬件资源可以设计到芯片中,并且芯片中的硬件资源可以通过AMPC重新配置。例如,ICAT处理系统的架构由用于处理算法的源代码配置。因此,为传统处理器生成的代码可以在ICAT架构上更有效地运行,因为ICAT处理器的硬件由源代码配置以例如使用AMPC独立于处理器执行算法。因此,ICAT架构能够用为传统微处理器创建的源代码配置ICAT硬件架构,这在本领域中是未知的。在一个示例中,创建硬件资源池,其可由处理器配置和重新配置为算法矩阵结构,并且然后该硬件资源池实际上处理芯片中的多个处理算法。在一个示例中,硬件资源通过使用流水线技术独立于其它处理器的多个命令来处理数据。
在一个示例中,ICAT架构和算法匹配流水线编译器组合以实现本领域未知的结果,从而实现计算速度和效率。例如,AMPC配置用于运行多个处理算法的硬件资源。AMPC生成用于配置来自ICAT芯片中的ICAT资源池的处理算法的配置设置固件。这为程序员提供了一种工具,该工具接受为传统处理器设计的现有应用程序源代码、和用于匹配和分配ICAT硬件资源以在ICAT架构内创建单独硬件处理算法的新源代码。在用于特定目的的SOC的操作期间,AMPC生成运行主处理器的固件以配置ICAT硬件以独立于主处理器执行多个算法。
传统处理器使用类似的架构,包括程序存储器、用于逐步执行程序指令的获取和执行硬件;存储批量(堆)数据和程序堆栈结构所需的数据存储器;以及指令获取和执行周期、程序堆栈的管理、以及数据堆存储的管理,这些都在传统处理器架构中产生相当大的开销。
相比之下,在一个示例中,ICAT架构几乎消除了传统处理器系统的所有开销。ICAT硬件池由AMPC配置,且用于使用ICAT协处理器架构和流水线流数据结构来处理算法。因此,在一个示例中,使用ICAT架构的方法包括:AMPC访问定义芯片中可用的资源的ICAT硬件编译器表;硬件设计语言(诸如Verilog),用于编译针对给定处理器的ICAT硬件池102;硬件编译输出定义芯片内的ICAT资源池的结构的表;AMPC使用硬件编译器生成的这些数据的表来确定芯片中ICAT资源的位置和数量;AMPC分配硬件资源、配置数学运算和逻辑运算、并为各种算法创建互连,其中用于AMPC的源输入语法可以包括C#语法或标准数学语法,诸如Matlab;AMPC为来自可用的ICAT硬件资源103…111池的每个算法配置流水线结构;且这些流水线结构例如为每个算法形成ICAT协处理器。例如,AMPC输出在主处理系统101上运行的代码,该主处理系统101配置在并行ICAT(一个或多个)协处理器102上运行算法的资源的控制寄存器103、104、105、106。
例如,可以用ICAT资源池102配置协处理器系统结构,ICAT资源池102响应来自主处理器101的输入。替选地,如果主处理器架构包括与主处理器分开的输入/输出设备,则ICAT资源池102可以生成中断,并将数据输出到主处理器101或主处理器101的输入/输出设备。在一个示例中,ICAT资源池102可以由传统处理器101配置,然后ICAT资源池102自己运行直到被重新配置。
一旦ICAT处理器由固件配置,ICAT架构的处理器就将自行持续地并行处理数据流。相比之下,传统系统需要无休止地进入存储器并获取指令以确定各个处理步骤的处理流程。例如,AMPC可以将硬件资源组(诸如,数学逻辑和路由)分配给ICAT架构的特定ICAT处理器结构,以便例如执行用于处理特定算法的处理步骤。没有传统编译器选择和配置微处理器的硬件结构。例如,当AMPC构建ICAT架构的硬件结构时,它可以将用于ICAT架构的硬件资源配置为流水线架构中,以加速处理性能。传统编译器不能够这样做。
在图4的示例中,ICAT控制寄存器104是用于控制处理功能的寄存器的集合。例如,数字信号处理器(DSP)输入模式寄存器(Input Mode Register)可以包括分离输入字(Split Input Words)、预加法器控制(Pre-Adder Control)、输入寄存器组选择(InputRegister Bank Select)、和其它DSP输入函数,DSP ALU模式寄存器(Mode Register)可以控制加、减、乘、除、右移、左移、旋转、和(and)、或(or)、异或(xor)、或非(nor)、与非(nand)以及其它逻辑过程,且DSP多路复用器选择(Multiplexor Selects)可以控制移位(Shift)和输入选择(Input Select)。DSP可以为每个ICAT使用一个DSP48E1。例如,DSP48E1器件可以在Xilinx 7系列现场可编程门阵列中提供。例如,ICAT存储器和逻辑操作105可以用于控制存储器和存储器逻辑操作。
在一个示例中,以C语言编写移动检测算法以在通用计算机上使用。
代码示例1:用C语言(高级编程语言)编写的移动检测算法
图7示出了用AMPC编译器进行代码示例1的编译产生的硬件配置的图解的示意图。视频设备111具有两个输出:实时视频像素流113和帧延迟缓冲器流112。对于RGB输出,每个像素包括红、绿和蓝。DSP 115执行实时馈送和延迟馈送的比较,并且结果被流水线化117到LDP 116,该LDP 116确定是否检测到移动。结果由RAPC 114的MBS输出。单个RPAC被配置为实现在每个时钟周期并行执行的3个处理块。相比之下,传统处理系统需要执行37条指令来处理视频的每个像素以检测移动。大多数这些指令在传统的、不可重新配置且非流水线的处理器上执行时,花费超过3个时钟周期。即使平均指令在3个时钟周期内执行,这对于非优化的通用处理器来说是大量的,尽管如此,其将花费111个CPU时钟周期来处理每个像素。随着现代摄像机上像素数量的增加,很明显现代单核处理器和多核处理器可用的周期时间不足以完成工作。
相比之下,由代码示例1的AMPC编译器配置的单个RAPC处理器的示例性配置使用视频的像素时钟处理连续的像素流。三个处理模块(DSP、LDP和MBS)实现为具有三个延迟时钟周期的FPGA的流水线式的流式配置,但每个时钟周期在流水线填满后(在视频像素时钟的前三个时钟周期之后)处理像素(与每111个时钟周期一个像素相比这是每时钟周期一个像素)的输出。因此,单个RAPC的执行速度比传统处理系统的单核快至少111倍,即与传统处理器的每条指令37个指令×3个时钟周期或每个像素111个时钟周期相比,在ICAT上的每个时钟周期处理像素。由于可以在单个ICAT芯片上实现两千个(或更多个)RAPC处理器,因此组合处理能力可以比单核传统处理器快至少222,000倍。当前的传统处理器限于四核等,但是将核添加到传统处理器并非没有额外的开销。可以添加比传统处理核更多的RAPC,并且每个RAPC可以单独或与其它RAPC一起被重新配置为流水线。
代码示例1和图7的点是添加RAPC仅仅是芯片的密度和尺寸的问题,并且可以在不增加开销的情况下将数千个RAPC添加到ASIC。每个RAPC都是流水线式并行处理器。因此,添加核、添加高速缓存、和传统处理器的超频,永远无法使传统处理器接近具有几十个RAPC的单个ICAT芯片的性能。此外,推动传统处理器的所有努力都会导致传统的、不可重新配置的和非流水线式的处理器的过热、成本过高和尺寸过大。更不用说,这些相同的方法也可以用于提高ICAT架构的RAPC的性能。无论如何,相比于传统处理器架构,将RAPC添加到ICAT架构将总是显著提高性能,而不需要程序员专门针对ICAT架构进行编程。这是一个令人惊讶和意想不到的结果。所有的注意力都集中在从传统处理器中获得更多,而给出很少关注将可编程的可重新配置的架构添加到传统处理器以增强通用处理器的性能。
此外,在标准FPGA上实现代码示例1的相同解决方案会不仅仅需要重新编译标准的高级编程语言,如本示例所示。例如,要在Xilinx FPGA中成功开发矩阵乘法器、PID或任何复杂算法,需要以下技能:使用RTL和Verilog语言设计电路的工作知识;高级架构技能(并行处理、流水线、数据流、资源/性能权衡等);使用各种各样的硬件构建模块(诸如算术、逻辑决策、存储器设备、控制器设备、外围接口等)的设计经验;软件设计;使用各种版本的更高级编程语言的工作知识;使用用于监测和控制应用程序的数学算法的工作知识;以及如何使用Xilinx软件工具的知识,诸如将“C”代码编译为Xilinx硬件;验证硬件设计并在需要时进行架构修改以满足性能目标;构建“C”代码测试台;根据测试台结果验证硬件仿真结果;并在硬件中实现设计并对其进行测试。所有这些使得典型的FPGA项目既费时又昂贵,远远超出具有普通高级语言编程技能的人的能力。现有技术保留FPGA用于利基处理,其中性能是最重要的,并且定制设计和编程的延迟和成本是可接受的。
相比之下,任何优秀的高级语言程序员都可以编程ICAT技术,因为前端微处理器架构是熟悉的通用架构。RAPC由通用处理器和AMPC配置,AMPC使用每个RAPC的标准结构来基于用于前端处理器的标准代码重新配置一个或多个RAPC,例如如图7所示。因此,ICAT技术(该ICAT技术包括多个RAPC和用于使用面向世界的标准处理器架构来配置和重新配置RAPC的AMPC),相对于传统处理器和任何已知FPGA处理器是令人惊讶且意想不到的进步。
图8示出了将可重复使用的算法流水线核与算法匹配流水线编译器组合的微处理器的应用。传统微处理器视频处理速度的不足需要专门且昂贵的芯片的集合或后处理。如图所示,具有RAPC和AMPC的通用处理器提供了一种实时处理数百万个像素的解决方案,从而例如为来自消费者电子设备板上的通用ICAT芯片的视频提供动作感应、视频压缩和更快的上传和下载速度。
每个RAPC可以包括DSP、LDP和MBS。DSP可以具有用于编程所需类型的运算的设置接口(即整数和浮点、乘、除、加、减等)。DSP可以具有用于操作数数据的四个输入,该四个输入可以与由设置数据确定的数学函数的各种组合串联或用由设置数据确定的数学函数的各种组合进行操作,诸如图8中所示。DSP可以有48位的累加器,该累加器作为结果数据来和状态数据的输出。例如,状态数据包括,执行、等于、大于和小于。
例如,LDP可以具有用于对查找表、循环计数器和常量寄存器进行编程的设置接口。LDP可以具有循环计数器,该循环计数器用于检测何时完成迭代算法。LDP可以具有寄存器,该寄存器可以保存用于输入到查找表的常量数据。LDP可以具有可用于执行功能的存储器块。LUT功能可以包括:可以使用循环计数器来实现和顺序访问的查找表;用于控制目的的、可以由DSP状态、常量寄存器或DSP结果数据实现和访问的查找表;和用于控制目的的可以实现的和输出各种逻辑信号的逻辑查找表。LDP可以将结果数据从其输入传递到其输出。例如,LDP可以在其输出处具有一个用于结果数据的流水线寄存器。替选地,LDP可以在具有使其输出处的结果数据能够同步清零的两个流水线寄存器。
出于使得本领域普通技术人员能够制造和使用权利要求中记载的本发明的目的,该具体实施方式提供了包括权利要求的特征和要素的示例。然而,这些示例并非旨在直接限制权利要求的范围。而是,这些示例提供了权利要求的特征和要素,这些特征和要素已经在这些描述、权利要求和附图中公开,且可以以本领域已知的方式被改变和组合。
例如,在不受任何限制的情况下,3325个RAPC可以被配置在以100MHz的适中时钟速率运行的单个FPGA、FPGA芯片上,其中和是Xilinx公司(Inc.)的商标。在每个时钟上,每个RAPC都可以处理1个或2个逻辑运算和数学运算。因此,这种配置产生332每秒吉咖次浮点运算(GigaFLOPS)。例如,该配置对四个数学运算(例如,加、减、乘、除)和四个逻辑运算(例如,大于、小于、等于、不等于)中的每一个运算使用查找表(LUT)。标准LUT存储器大小为512字节。另外,除了其它逻辑运算LUT之外,还可以提供“大于可配置的常量值”LUT。在一个示例中,LUT的输出信号用于控制总线多路复用器开关以在RAPC之间操纵结果。AMPC编译器预编译为冯·诺依曼(von Neumann)架构编写的更高级程序语言的源代码,并且AMPC编译器为RAPC执行的每个操作选择LUT,从而生成来自于为冯·诺依曼架构编写的源代码的非冯·诺依曼处理器。
与任何传统的冯·诺依曼处理器相比,332GigaFLOPS是可观的,特别是当理解这是在没有任何对芯片的特殊冷却要求的情况下获得的时,其中GigaFLOPS被定义为每秒10亿个浮点运算。相比之下,传统的冯·诺依曼处理系统需要用于每个数学运算、逻辑运算和分支操作的单独的获取和执行周期,而RAPC不需要用于每个数学运算、逻辑运算和分支操作的单独的获取和执行周期。
在一个示例中,计算表明,具有741MHz时钟速度的Virtex ZU13芯片(其中Xilinx和Virtex是Xilinx公司的商标)可以被配置具有236,250个RAPC,使该芯片具有大于175,000gigaFLOPS的执行能力,这是非凡的结果,对于本领域技术人员而言是意想不到的和令人惊讶的。这种结果是可能的,因为RAPC不需要用于执行的每个数学运算、逻辑运算和分支操作的单独的获取和执行周期。使用本文描述的RAPC和架构解决了由通用计算机处理器的冯·诺依曼架构引起的这个问题和其它问题。为具有冯·诺依曼架构的处理器(即,所有已知的现代通用处理器)编写的程序不需要被重写而在所描述的架构上运行,这对于本领域普通技术人员甚至本领域专家来说是非常令人惊讶和意想不到的结果。
Claims (24)
1.一种可重复使用的算法流水线核,包括:
处理单元;
可重新配置的现场可编程门的阵列,其中,所述现场可编程门由算法匹配流水线编译器编程,使得所述算法匹配流水线编译器预编译用于由所述处理单元处理的、被设计为用于在没有并行处理的标准处理器上运行的源代码,并且所述处理单元和所述算法匹配流水线编译器将所述现场可编程门配置为作为流水线式的并行处理器运行。
2.如权利要求1所述的核,其中,所述算法匹配流水线编译器是预编译器。
3.如权利要求2所述的核,其中,所述预编译器被配置为预编译不是为所述核而是为传统的不可重新配置的类型的处理器编写的标准的更高级软件语言,并且所述预编译器通过利用所述传统的不可重新配置的类型的处理器来生成用于所述核的机器代码,为所述传统的不可重新配置的类型的处理器编写所述标准的更高级软件语言来生成机器代码以配置所述可重新配置的现场可编程门的阵列。
4.如权利要求3所述的核,其中,所述标准的更高级软件语言是C或C++。
5.如权利要求2所述的核,其中,所述核包括计算机池,所述计算机池被配置为基于来自所述预编译器的输出来处理特定计算所需的算法。
6.如权利要求1所述的核,其中,所述现场可编程门被配置为完成任务而没有任何来自所述处理单元的进一步的开销。
7.如权利要求5所述的核,还包括智能总线控制器或逻辑处理器,其中,所述智能总线控制器或逻辑处理器执行由所述核处理的所有逻辑函数。
8.如权利要求5所述的核,还包括逻辑处理器和主总线开关,并且所述逻辑处理器包括用于控制所述主总线开关的可重新配置的逻辑函数。
9.如权利要求7所述的核,还包括数字信号处理器,其中,所述数字信号处理器包括用于执行数学计算的可重新配置的数学处理器。
10.如权利要求8所述的核,其中,所述主总线开关是包括由所述预编译器和所述处理单元可重新配置地可编程的电路的矩阵总线路由器或矩阵总线开关,使得在处理算法期间,数据和结果从所述核路由到另一个核以完成所述算法,而无需来自中央处理器或外围处理器的任何进一步的干预,与需要中央处理器或外围处理器干预以将数据和结果导入算术处理单元以及将数据和结果从算数处理单元导出的静态的不可重新配置的硬件相比,这通过流水线技术减少了开销。
11.如权利要求9所述的核,其中,所述逻辑处理器处理逻辑决策和迭代循环,并且由用于学习算法的所述逻辑处理器提供结果存储器。
12.一种系统,所述系统包括多个根据权利要求1所述的核,包括步骤:
使用所述多个核中的一个或多个核的数字信号处理器处理所有数学运算;和
使用所述多个核中的一个或多个核的一个或多个逻辑处理器处理所有逻辑函数。
13.如权利要求11所述的系统,还包括将所述多个核配置为核池的步骤,并且所述核池中的每个核能够通过编程单独地重新配置,而无需对硬件进行任何改变。
14.如权利要求12所述的系统,其中,所述配置的步骤配置所有所述多个核以并行处理算法,而无需来自用于将数据和结果导入算术处理单元以及将数据和结果从算数处理单元导出的中央处理器或外围处理器的任何进一步干预。
15.如权利要求13所述的系统,其中,所述算法匹配流水线编译器是预编译器,并且所述多个核中的每个核的所述逻辑处理器使用由所述预编译器配置的存储器块作为用于常量值或学习值的查找表和寄存器。
16.如权利要求14所述的系统,还包括由所述逻辑处理器设置所述查找表,其中,所述查找表是n位的查找表,并且所述n位的查找表用于编码n位的布尔逻辑函数作为真值表。
17.如权利要求11所述的系统,还包括:使用用于所述多个核中的一个或多个核的所述算法匹配流水线编译器,用为传统的不可重新配置的和非流水线式的通用计算机处理器编写的标准的更高级软件语言生成机器代码。
18.如权利要求16所述的系统,其中,所述标准的更高级软件语言是为传统的不可重新配置的类型的处理器编写的,以及所述生成机器代码的步骤包括:作为预编译器的所述算法匹配流水线编译器利用所述传统的不可重新配置的类型的处理器,生成用于配置所述多个核中的每个核的可重新配置的现场可编程门的阵列的机器代码。
19.如权利要求17所述的系统,其中,所述系统包括:为其编写有所述标准的更高级软件语言的所述传统的不可重新配置的类型的处理器中的至少一个处理器,并且所述为其编写有所述标准的更高级软件语言的所述传统的不可重新配置的类型的处理器中的所述至少一个处理器生成用于配置所述多个核中的每个核的可重新配置的现场可编程门的阵列的机器代码。
20.如权利要求18所述的系统,其中,所述多个核中的每个核被配置为独立地解决复杂的数学算法和逻辑算法,而无需为其编写有所述标准的更高级软件语言的所述传统的不可重新配置的类型的处理器中的所述至少一个处理器的进一步干预。
21.如权利要求19所述的系统,还包括将值输入到所述系统中,以及所述系统将解决方案输出到所述系统的主总线开关,而无需进一步的干预。
22.如权利要求20所述的系统,其中,所述多个核包括2000个核。
23.如权利要求21所述的系统,其中,所述系统以500MHz的时钟速度每秒操作360万亿条指令。
24.如权利要求22所述的系统,其中,所述系统具有用于输入数据的延迟期,但是流水线技术减少了开销,使得所述系统被配置为在所述延迟期开始之后在每个核的每个时钟上执行计算并输出结果。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662287265P | 2016-01-26 | 2016-01-26 | |
US62/287,265 | 2016-01-26 | ||
PCT/US2017/015143 WO2017132385A1 (en) | 2016-01-26 | 2017-01-26 | Processor with reconfigurable algorithmic pipelined core and algorithmic matching pipelined compiler |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108885543A true CN108885543A (zh) | 2018-11-23 |
Family
ID=59359078
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780020270.0A Pending CN108885543A (zh) | 2016-01-26 | 2017-01-26 | 具有可重新配置的算法流水线核和算法匹配流水线编译器的处理器 |
Country Status (17)
Country | Link |
---|---|
US (3) | US20170212739A1 (zh) |
EP (1) | EP3408737A4 (zh) |
JP (1) | JP7015249B2 (zh) |
KR (1) | KR20180132044A (zh) |
CN (1) | CN108885543A (zh) |
AU (1) | AU2017211781B2 (zh) |
BR (1) | BR112018015276A2 (zh) |
CA (1) | CA3012781C (zh) |
CL (1) | CL2018002025A1 (zh) |
CO (1) | CO2018008835A2 (zh) |
IL (1) | IL279302B2 (zh) |
MX (1) | MX2018009255A (zh) |
MY (1) | MY191841A (zh) |
PH (1) | PH12018501591A1 (zh) |
RU (1) | RU2018130817A (zh) |
SG (1) | SG11201806395SA (zh) |
WO (1) | WO2017132385A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111444159A (zh) * | 2020-03-03 | 2020-07-24 | 中国平安人寿保险股份有限公司 | 精算数据处理方法、装置、电子设备及存储介质 |
CN111813526A (zh) * | 2020-07-10 | 2020-10-23 | 深圳致星科技有限公司 | 用于联邦学习的异构处理系统、处理器及任务处理方法 |
TWI740761B (zh) * | 2020-01-21 | 2021-09-21 | 大陸商上海商湯智能科技有限公司 | 數據處理裝置、人工智能晶片 |
CN117311247A (zh) * | 2023-11-30 | 2023-12-29 | 山东兴盛矿业有限责任公司 | 一种用于地下采矿的控制装置 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019193848A1 (ja) * | 2018-04-03 | 2019-10-10 | 日本電気株式会社 | 心不全増悪度判定システム及び心不全増悪度判定方法 |
CN108958852A (zh) * | 2018-07-16 | 2018-12-07 | 济南浪潮高新科技投资发展有限公司 | 一种基于fpga异构平台的系统优化方法 |
JP7123676B2 (ja) * | 2018-07-20 | 2022-08-23 | オムロンヘルスケア株式会社 | 生体データ測定システム及び生体データ測定方法 |
EP3611494A1 (en) * | 2018-08-17 | 2020-02-19 | Koninklijke Philips N.V. | System and method for providing an indication of a person's gum health |
WO2020099218A1 (en) * | 2018-11-15 | 2020-05-22 | My-Vitality Sàrl | Self-monitoring and care assistant for achieving glycemic goals |
KR101996842B1 (ko) * | 2018-12-26 | 2019-07-08 | (주)자람테크놀로지 | 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 risc-v 기반 연산 장치 및 그 방법 |
US11080227B2 (en) * | 2019-08-08 | 2021-08-03 | SambaNova Systems, Inc. | Compiler flow logic for reconfigurable architectures |
US20210076985A1 (en) * | 2019-09-13 | 2021-03-18 | DePuy Synthes Products, Inc. | Feature-based joint range of motion capturing system and related methods |
KR20210151525A (ko) * | 2020-06-05 | 2021-12-14 | 삼성전자주식회사 | 생체정보 추정 장치 및 방법 |
US11809908B2 (en) | 2020-07-07 | 2023-11-07 | SambaNova Systems, Inc. | Runtime virtualization of reconfigurable data flow resources |
US20220047165A1 (en) * | 2020-08-12 | 2022-02-17 | Welch Allyn, Inc. | Dermal image capture |
US11782729B2 (en) | 2020-08-18 | 2023-10-10 | SambaNova Systems, Inc. | Runtime patching of configuration files |
WO2022087032A1 (en) * | 2020-10-19 | 2022-04-28 | Woundmatrix, Inc. | Wound measurement |
US20220233093A1 (en) * | 2021-01-22 | 2022-07-28 | AsthmaTek, Inc. | Systems and methods to provide a physician interface that enables a physician to assess asthma of a subject and provide therapeutic feedback |
TWI768818B (zh) * | 2021-04-08 | 2022-06-21 | 緯創資通股份有限公司 | 混合式體溫量測系統及其方法 |
EP4105827B1 (en) * | 2021-06-14 | 2024-03-13 | Tata Consultancy Services Limited | Method and system for personalized eye blink detection |
CN113703843B (zh) * | 2021-09-24 | 2024-04-12 | 中国人民解放军军事科学院军事医学研究院 | 一种寄存器数据处理方法、装置及存储器 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010032327A1 (en) * | 2000-03-01 | 2001-10-18 | Winbond Electronics Corporation | System and method of processing memory |
US20020156998A1 (en) * | 1992-07-29 | 2002-10-24 | Steven Casselman | Virtual computer of plural FPG's successively reconfigured in response to a succession of inputs |
US20030066057A1 (en) * | 2001-02-23 | 2003-04-03 | Rudusky Daryl | System, method and article of manufacture for collaborative hardware design |
US20050010743A1 (en) * | 1998-12-03 | 2005-01-13 | Sun Microsystems, Inc. | Multiple-thread processor for threaded software applications |
US20080218202A1 (en) * | 2007-03-09 | 2008-09-11 | Quadric, Inc. | Reconfigurable array to compute digital algorithms |
US20120109849A1 (en) * | 2003-05-23 | 2012-05-03 | Washington University | Intelligent Data Storage and Processing Using FPGA Devices |
CN103324511A (zh) * | 2012-02-09 | 2013-09-25 | 阿尔特拉公司 | 配置可编程设备的方法、可编程设备及机器可读存储介质 |
CN104520825A (zh) * | 2012-08-06 | 2015-04-15 | 高通股份有限公司 | 使用释放一致性存储器排序模型的多核心计算高速缓存相干性 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4291372A (en) * | 1979-06-27 | 1981-09-22 | Burroughs Corporation | Microprocessor system with specialized instruction format |
US5966534A (en) | 1997-06-27 | 1999-10-12 | Cooke; Laurence H. | Method for compiling high level programming languages into an integrated processor with reconfigurable logic |
US20060081971A1 (en) * | 1997-09-30 | 2006-04-20 | Jeng Jye Shau | Signal transfer methods for integrated circuits |
US7000213B2 (en) * | 2001-01-26 | 2006-02-14 | Northwestern University | Method and apparatus for automatically generating hardware from algorithms described in MATLAB |
JP2006065786A (ja) | 2004-08-30 | 2006-03-09 | Sanyo Electric Co Ltd | 処理装置 |
US7818725B1 (en) * | 2005-04-28 | 2010-10-19 | Massachusetts Institute Of Technology | Mapping communication in a parallel processing environment |
US8214814B2 (en) * | 2008-06-24 | 2012-07-03 | International Business Machines Corporation | Sharing compiler optimizations in a multi-node system |
JP2014016894A (ja) | 2012-07-10 | 2014-01-30 | Renesas Electronics Corp | 並列演算装置、並列演算装置を備えたデータ処理システム、及び、データ処理プログラム |
-
2017
- 2017-01-26 MX MX2018009255A patent/MX2018009255A/es unknown
- 2017-01-26 AU AU2017211781A patent/AU2017211781B2/en active Active
- 2017-01-26 RU RU2018130817A patent/RU2018130817A/ru unknown
- 2017-01-26 KR KR1020187024664A patent/KR20180132044A/ko not_active Application Discontinuation
- 2017-01-26 WO PCT/US2017/015143 patent/WO2017132385A1/en active Application Filing
- 2017-01-26 JP JP2018558111A patent/JP7015249B2/ja active Active
- 2017-01-26 SG SG11201806395SA patent/SG11201806395SA/en unknown
- 2017-01-26 CN CN201780020270.0A patent/CN108885543A/zh active Pending
- 2017-01-26 CA CA3012781A patent/CA3012781C/en active Active
- 2017-01-26 US US15/416,972 patent/US20170212739A1/en not_active Abandoned
- 2017-01-26 EP EP17744897.4A patent/EP3408737A4/en active Pending
- 2017-01-26 BR BR112018015276A patent/BR112018015276A2/pt not_active Application Discontinuation
- 2017-01-26 MY MYPI2018702593A patent/MY191841A/en unknown
-
2018
- 2018-03-13 US US15/919,885 patent/US10515041B2/en active Active
- 2018-07-26 CL CL2018002025A patent/CL2018002025A1/es unknown
- 2018-07-26 PH PH12018501591A patent/PH12018501591A1/en unknown
- 2018-08-24 CO CONC2018/0008835A patent/CO2018008835A2/es unknown
-
2019
- 2019-11-06 US US16/675,876 patent/US10970245B2/en active Active
-
2020
- 2020-12-08 IL IL279302A patent/IL279302B2/en unknown
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020156998A1 (en) * | 1992-07-29 | 2002-10-24 | Steven Casselman | Virtual computer of plural FPG's successively reconfigured in response to a succession of inputs |
US20050010743A1 (en) * | 1998-12-03 | 2005-01-13 | Sun Microsystems, Inc. | Multiple-thread processor for threaded software applications |
US20010032327A1 (en) * | 2000-03-01 | 2001-10-18 | Winbond Electronics Corporation | System and method of processing memory |
US20030066057A1 (en) * | 2001-02-23 | 2003-04-03 | Rudusky Daryl | System, method and article of manufacture for collaborative hardware design |
US20120109849A1 (en) * | 2003-05-23 | 2012-05-03 | Washington University | Intelligent Data Storage and Processing Using FPGA Devices |
US20080218202A1 (en) * | 2007-03-09 | 2008-09-11 | Quadric, Inc. | Reconfigurable array to compute digital algorithms |
CN103324511A (zh) * | 2012-02-09 | 2013-09-25 | 阿尔特拉公司 | 配置可编程设备的方法、可编程设备及机器可读存储介质 |
CN104520825A (zh) * | 2012-08-06 | 2015-04-15 | 高通股份有限公司 | 使用释放一致性存储器排序模型的多核心计算高速缓存相干性 |
Non-Patent Citations (2)
Title |
---|
JOHN R. HAUSER 等: "Garp: A MIPS Processor with a Reconfigurable Coprocessor", 《THE 5TH ANNUAL IEEE SYMPOSIUM ON FIELD-PROGRAMMABLE CUSTOM COMPUTING MACHINES》 * |
M. WEINHARDT 等: "Pipeline vectorization for reconfigurable systems", 《SEVENTH ANNUAL IEEE SYMPOSIUM ON FIELD-PROGRAMMABLE CUSTOM COMPUTING MACHINES》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI740761B (zh) * | 2020-01-21 | 2021-09-21 | 大陸商上海商湯智能科技有限公司 | 數據處理裝置、人工智能晶片 |
CN111444159A (zh) * | 2020-03-03 | 2020-07-24 | 中国平安人寿保险股份有限公司 | 精算数据处理方法、装置、电子设备及存储介质 |
CN111444159B (zh) * | 2020-03-03 | 2024-05-03 | 中国平安人寿保险股份有限公司 | 精算数据处理方法、装置、电子设备及存储介质 |
CN111813526A (zh) * | 2020-07-10 | 2020-10-23 | 深圳致星科技有限公司 | 用于联邦学习的异构处理系统、处理器及任务处理方法 |
CN117311247A (zh) * | 2023-11-30 | 2023-12-29 | 山东兴盛矿业有限责任公司 | 一种用于地下采矿的控制装置 |
CN117311247B (zh) * | 2023-11-30 | 2024-03-26 | 山东盛泰矿业科技有限公司 | 一种用于地下采矿的控制装置 |
Also Published As
Publication number | Publication date |
---|---|
EP3408737A4 (en) | 2019-09-11 |
US20200142851A1 (en) | 2020-05-07 |
WO2017132385A1 (en) | 2017-08-03 |
BR112018015276A2 (pt) | 2018-12-18 |
AU2017211781A1 (en) | 2018-09-13 |
US20170212739A1 (en) | 2017-07-27 |
MY191841A (en) | 2022-07-18 |
JP2019506695A (ja) | 2019-03-07 |
AU2017211781B2 (en) | 2021-04-22 |
EP3408737A1 (en) | 2018-12-05 |
CO2018008835A2 (es) | 2018-11-13 |
CL2018002025A1 (es) | 2019-02-08 |
US10515041B2 (en) | 2019-12-24 |
RU2018130817A3 (zh) | 2020-04-16 |
RU2018130817A (ru) | 2020-02-27 |
SG11201806395SA (en) | 2018-08-30 |
US20180246834A1 (en) | 2018-08-30 |
IL279302A (en) | 2021-01-31 |
US10970245B2 (en) | 2021-04-06 |
KR20180132044A (ko) | 2018-12-11 |
CA3012781A1 (en) | 2017-08-03 |
IL279302B2 (en) | 2023-06-01 |
JP7015249B2 (ja) | 2022-02-02 |
PH12018501591A1 (en) | 2019-04-08 |
CA3012781C (en) | 2022-08-30 |
MX2018009255A (es) | 2019-03-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108885543A (zh) | 具有可重新配置的算法流水线核和算法匹配流水线编译器的处理器 | |
US20190228037A1 (en) | Checkpointing data flow graph computation for machine learning | |
WO2019191578A1 (en) | Data flow graph computation for machine learning | |
JP7183197B2 (ja) | 高スループットプロセッサ | |
DE102018006735A1 (de) | Prozessoren und Verfahren für konfigurierbares Clock-Gating in einem räumlichen Array | |
US20200174707A1 (en) | Fifo filling logic for tensor calculation | |
US20190138373A1 (en) | Multithreaded data flow processing within a reconfigurable fabric | |
US20190057060A1 (en) | Reconfigurable fabric data routing | |
US20190130269A1 (en) | Pipelined tensor manipulation within a reconfigurable fabric | |
US20190228340A1 (en) | Data flow graph computation for machine learning | |
Paul et al. | Resource-awareness on heterogeneous MPSoCs for image processing | |
Jesshope et al. | Design of SIMD microprocessor array | |
Giefers et al. | An FPGA-based reconfigurable mesh many-core | |
Neuendorffer et al. | The evolution of domain-specific computing for deep learning | |
WO2019113007A1 (en) | Pipelined tensor manipulation within a reconfigurable fabric | |
Imlig et al. | Programmable dataflow computing on PCA | |
Boutros et al. | Field-Programmable Gate Array Architecture for Deep Learning: Survey & Future Directions | |
Chickerur et al. | Reconfigurable Computing: A Review | |
Biedermann | Design Concepts for a Virtualizable Embedded MPSoC Architecture: Enabling Virtualization in Embedded Multi-Processor Systems | |
Elshimy et al. | A Near-Memory Dynamically Programmable Many-Core Overlay | |
KHALILI MAYBODI | A Data-Flow Threads Co-processor for MPSoC FPGA Clusters | |
Adário et al. | Reconfigurable computing: Viable applications and trends | |
Guccione | Software for Reconfigurable Computing | |
CEA et al. | ARCHITECTURES AND TECHNOLOGIES |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40008643 Country of ref document: HK |
|
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20181123 |