首页 / 专利库 / 人工智能 / 决策逻辑 / 高吞吐量处理器

高吞吐量处理器

阅读:91发布:2020-05-12

专利汇可以提供高吞吐量处理器专利检索,专利查询,专利分析的服务。并且算法 匹配流 水 线编译器和可重复使用的算法流水线核包括高吞吐量处理器系统。可重复使用的算法流水线核是具有流水线结构的可重新配置的处理核,该流水线结构包括:具有用于对如由设置数据确定的多个操作中的任一者进行编程的设置 接口 的处理器、用于对查找表进行编程的逻辑决策处理器、循环计数器和常量寄存器、以及 存储器 块 。这可以用来执行多个功能。一种可重新配置的可编程的 电路 将数据和结果从一个核路由到另一个核和/或10 控制器 和/或中断发生器,如在算法的处理期间完成算法所需要的那样,而无需来自中央或外围处理器的进一步干预。,下面是高吞吐量处理器专利的具体信息内容。

1.一种高吞吐量处理器,包括:
算法匹配流线编译器;和
可重新配置图的阵列,其中,所述可重新配置图块的阵列由所述算法匹配流水线编译器编程,使得所述可重新配置图块的阵列中的每个所述可重新配置图块为RAPC,以及所述可重新配置图块的阵列被布置成使得在用于加载初始输入数据的初始延迟时段之后,在每个时钟上都将结果从所述可重新配置图块的阵列中的一个可重新配置图块传递到所述可重新配置图块的阵列中的另一个可重新配置图块,其中,所述算法匹配流水线编译器配置所述可重新配置图块的阵列,使得所述可重新配置图块的阵列作为计算机处理器以每个时钟一个结果的吞吐率执行算法计算而无传播延迟。
2.如权利要求1所述的高吞吐量处理器,其中,每个RAPC为8位RAPC。
3.如权利要求2所述的高吞吐量处理器,还包括预编译器,其中,所述预编译器处理不是针对所述高吞吐量处理器而是针对传统类型的不可重新配置的处理器所编写的标准更高级软件语言,以及所述预编译器为所述算法匹配流水线编译器提供用于编程所述可重新配置图块的阵列的指令。
4.如权利要求1所述的高吞吐量处理器,其中,所述可重新配置图块的阵列内的每个所述可重新配置图块均包括至少一个LUT。
5.如权利要求4所述的高吞吐量处理器,其中,所述至少一个LUT实现逻辑模块。
6.如权利要求5所述的高吞吐量处理器,其中,所述可重新配置图块的阵列内的每个所述可重新配置图块可重新配置地联接到所述可重新配置图块的阵列内的一个或多个相邻的可重新配置图块,使得数据能够被所述可重新配置图块的阵列处理成8位数据、16位数据、32位数据、64位数据、和8位数据的任何其它倍数。
7.如权利要求1所述的高吞吐量处理器,其中,所述可重新配置图块的阵列被配置成完成任务而没有来自处理单元的任何另外的开销。
8.如权利要求1所述的高吞吐量处理器,其中,所述可重新配置图块的阵列内的每个所述可重新配置图块可重新配置地联接到所述可重新配置图块的阵列内的一个或多个相邻的可重新配置图块,从而提供点对点连接而不必与任何其它逻辑模块共享任何通信通道或总线。
9.一种包括根据权利要求1所述的高吞吐量处理器的系统,包括以下步骤:
在延迟时段期间初始地输入数据;以及
在所述延迟时段之后,在每个时钟上计算结果。
10.如权利要求9所述的系统,其中,配置有1位RAPC的所述高吞吐量处理器的时钟速率是配置有8位RAPC的所述高吞吐量处理器的时钟速率的八倍快。
11.如权利要求10所述的系统,其中,配置有多个1位RAPC或多个4位RAPC的所述高吞吐量处理器的输出数据精度与配置有8位RAPC的所述高吞吐量处理器的输出数据精度相同。
12.如权利要求11所述的系统,还包括以下步骤:在单个ASIC芯片封装内可重新配置地布置多个根据权利要求1所述的高吞吐量处理器。

说明书全文

高吞吐量处理器

相关申请的交叉引用

本申请要求在2017年6月22日递交的美国临时申请62,523,528的权益,该美国临时申请的全部内容通过引用并入在本文中。

技术领域

领域涉及计算机编程以及微处理器设计和编程,尤其涉及通用软件指令的可重新配置的流线和并行处理。

背景技术

图1A示出传统处理器的编译器。诸如Intel微处理器和ARM微处理器的传统处理器是众所周知的。例如,图1B中示出了传统处理器的概念示图。这些处理器是用于现代计算机和设备的中央处理单元的核心(heart),并且用于处理算法。传统处理器的一个问题在于,这些类型的处理器是通用的且不能以任何切实可行的方式进行重新配置而允许针对特定应用增强其性能。另一个问题在于,程序执行控制给算法功能的处理增加了大量开销,所述算法功能的处理诸如修改处理流程的数学运算和逻辑决策。可以使用更高级编程语言对传统处理器进行编程,并且编译器将更高级编程语言中的指令转换为用于特定处理器架构的机器代码。该机器代码被提供到处理器可访问的存储位置,并连同由系统架构提供的任何BIOS(基本输入输出系统)或其它调用一起提供用于处理器硬件的操作的指令。在大多数情况下,数学和逻辑处理方向指向算术逻辑单元(Arithmetic Logic Unit,ALU),该ALU将解决方案返回到处理器的程序执行控制部分,该程序执行控制部分管理开销,诸如通过求解数学算法、逻辑决策,处理数据等的正确顺序来引导处理器。从程序存储器中连续获取机器代码指令,以便控制数据处理。这种开销极大地限制了机器性能。
例如,下面示出了传统编译器用“C”编程语言编译数学运算的步骤,所述“C”编程语言是可被编译以创建用于特定传统处理器的机器代码的更高级编程语言的示例。一个简单的数学运算分配“var i1;”、“var i2;”和“var s;”来定义变量il、i2和结果s的数据存储位置。然后,可以使用指令“s=il+i2”对在数据位置il和i2上分配的变量求和。编译器(a)首先为数据分配存储位置(例如,il,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)或将现场可编程门阵列的内部资源从任何外部连接任务释放的交叉开关(cross-bar switch),如美国专利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)是已知的。例如,用户指南“
4AXI4TM、AXI4-LiteTM和AXI4-StreamTM协议声明(Protocol Assertion),修订版:r0p1,用户指南(User Guide)”,版权所有2010、2012(称为ARM DUI0534B、ID072312),教导了高速且可由本领域普通技术人员实现的用于矩阵总线开关的系统。该用户指南为希望确认设计符合相关AMBA4协议的系统设计人员、系统集成人员和验证工程师而编写。例如,AMBA4协议可以是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均可以被配置为并行地处理算法。在一个示例中,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被实时配置以解决新的逻辑和数学方程式,同时例如在先进先出(first in first out)或最后使用最后重新配置(last used last reconfigured)的基础上适当保持旧的逻辑和数学配置,则这会自然地发生。如果经常使用的话,为特定目的重新配置的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处理器上运行的代码的不同的结构。
在一个示例中,对于能够由AMPC重新配置的硬件,ICAT架构和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的传统处理器和AMPC,该AMPC用于将传统高级源代码编译成用于传统处理器建立RAPC的指令。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或现场可编程门阵列)上可用的流水线技术得到,并且AMPC输出用于不可重新配置的处理器的代码,在提供用于使用可重新配置的核或处理器的指令之前,该代码指示不可重新配置的处理器配置可重新配置的核或处理器。可重复使用的(或可重新配置的)算法流水线核(或计算机)或RAPC被定义为具有流水线结构的可重新配置的处理核,该流水线结构包括:DSP,该DSP包括用于编程多个运算(诸如整数和浮点数学运算)中的任何运算的设置接口,该DSP具有用于操作数数据的四个输入,该操作数数据可以与由设置数据确定的数学函数的各种组合串联或用由设置数据确定的数学函数的各种组合进行操作,以及该DSP包括作为结果数据和状态数据输出的48位的累加器;LDP,该LDP具有可以用于执行功能的用于编程查找表、循环计数器和常量寄存器以及存储器块的设置接口;以及MBS。MBS被定义为可重新配置的可编程电路,该可重新配置的可编程电路根据需要将来自一个RAPC的数据和结果路由到另一个RAPC以及从输入/输出控制器和/或中断发生器路由数据和结果/将数据和结果路由到输入/输出控制器和/或中断发生器,以完成算法,而在算法处理期间无需来自中央处理器或外围处理器的任何进一步的干预。
另一个示例解决了传统冯·诺依曼处理器中固有的进位链传播延迟的问题,该问题不可避免地导致吞吐量瓶颈。术语冯·诺伊曼(von Neumann)是为约翰·冯·诺伊曼(John von Neumann)命名的,他是现代计算机架构背后理论的开发者。早期的计算机在运行时会收到程序和数据进行处理。冯·诺依曼提出了存储程序计算机背后的理念,这是我们的标准模型,也称为冯·诺依曼架构。在冯·诺依曼架构中,程序和数据被保存在内存中;处理器和内存是分开的,且数据在两者之间移动。在这种配置中,延迟是不可避免的,尤其是随着处理器速度的提高和访问计算机内存时的延迟传播。这限制了现代计算机的速度和/或精度。解决该问题的方法通过添加数据高速缓存、多线程并提高从内存到处理器以及从处理器回到内存的传输速率而掩盖了固有瓶颈。其它解决方案利用专用算术和浮点处理器将计算分流到单独的专用处理器上,该专用处理器提供足够的精度而不延迟计算机的中央处理单元。这些解决方案均不能真正地解决问题,并且这些解决方案带来附加问题,诸如不可接受的错误以及检测和纠正此类错误的开销。
在一个示例中,处理器通过引入不受链传播延迟影响的用于数据传输的架构来解决冯·诺依曼处理中固有的问题。在用于引发数据流水线的短暂延迟之后,分时多路复用(time share multiplexing)允许计算任何宽度的数据值而不必担心过多的进位链延迟,从而允许针对任何数据宽度以1时钟/结果(每个结果一个时钟)地流式传输数据。例如,整数数学可用于任何值,无论所需的精度如何,这是因为数据宽度不受限制,而不会由于数据宽度增加而导致额外的进位链延迟。RAPC处理器的速度得益于分时多路复用数据流水线,该分时多路复用数据流水线提供了往返于这类处理器的恒定数据流,而没有严重的进位链延迟且数学精度不受限制,只有用于初始填充流水线的短暂延迟。
一种高吞吐量处理器的一个示例包括:算法匹配流水线编译器;和可重新配置图块(tile)的阵列,其中,所述可重新配置图块的阵列由所述算法匹配流水线编译器编程,使得所述可重新配置图块的阵列中的每个所述可重新配置图块为RAPC,以及所述可重新配置图块的阵列被布置成使得在用于加载初始输入数据的初始延迟时段之后,在每个时钟上都将结果从所述可重新配置图块的阵列中的一个可重新配置图块传递到所述可重新配置图块的阵列中的另一个可重新配置图块,其中,所述算法匹配流水线编译器配置所述可重新配置图块的阵列,使得所述可重新配置图块的阵列作为计算机处理器以每个时钟一个结果的吞吐率执行算法计算而无传播延迟。例如,每个RAPC是8位RAPC。例如,预编译器可以处理不是针对高吞吐量处理器而是针对传统类型的不可重新配置的处理器所编写的标准更高级软件语言,以及该预编译器为算法匹配流水线编译器提供用于编程包括多个RAPC的所述可重新配置图块的阵列的指令。可重新配置图块的阵列内的每个可重新配置图块可以包括至少一个LUT。例如,该至少一个LUT实现逻辑模块。可重新配置图块的阵列内的每个可重新配置图块可以可重新配置地联接到可重新配置图块的阵列内的一个或多个相邻的可重新配置图块,使得数据可被可重新配置图块的阵列处理成8位数据、16位数据、32位数据、64位数据、和8位数据的任何其它倍数。可重新配置图块的阵列可以被配置成完成任务而没有来自处理单元的任何另外的开销。例如,可重新配置图块的阵列内的每个可重新配置图块可重新配置地联接到可重新配置图块的阵列内的一个或多个相邻的可重新配置图块,从而提供点对点连接而不必与任何其它逻辑模块共享任何通信通道或总线。
初始输入数据的步骤可以发生在高吞吐量处理器的延迟时段期间。该过程通过在延迟时段之后在每个时钟上计算结果来进行。高吞吐量处理器的时钟速率可以用1位(1-bit)RAPC来配置,该时钟速率是配置有8位RAPC的相同高吞吐量处理器的时钟速率的八倍快;并且令人惊讶的是,配置有1位RAPC的高吞吐量处理器的输出数据精度可以与配置有8位RAPC的高吞吐量处理器的输出数据精度相同。单个ASIC芯片封装可以可重新配置地在该单个ASIC芯片封装内布置多个根据权利要求1所述的高吞吐量处理器。

附图说明

以下附图是说明性示例且不进一步限制可最终发布的任何权利要求。
图1A示出了传统编译器的现有技术流程图
图1B示出了用于传统计算机的现有技术处理器。
图2示出了来自美国专利No.5,684,980的框图。
图3是示出了用于与图1A中的流程图进行比较的AMPC编译器的示例的流程图。
图4是ICAT架构的示例。
图5示出了程序员可如何使用AMPC的示例的流程图。
图6是可重复使用的算法流水线计算机的示意性示例。
图7示出了用AMPC编译器对代码示例1进行编译所得到的硬件配置图的示意图。
图8示出了通过消费电子设备中的实时无损数据压缩而得到的来自图7的示例的原始处理能力的显著收益。
图9示意性地示出了用于为高吞吐量处理器配置RAPC的一位(single bit)LUT的示例。
图10示意性地示出了在RAPC中使用8个一位LUT的示例。
图11示出了用于高吞吐量处理器的可重新配置图块架构的示意性示例。
图12示出了使用可重新配置图块的阵列的架构的示例。
图13提供了在应用程序中用于数据处理的高吞吐量处理器的示例。
图14示出了单个RAPC和RAPC开关的示例。
当使用相同的附图标记时,这些标签在附图所示的示例中指代相似的部分。

具体实施方式

例如,ICAT架构模仿任何标准的微处理器单元架构。该架构利用流水线和集成电路(诸如一个或多个现场可编程门阵列(FPGA))中更为丰富的门密度,该集成电路被设计成在制造之后由客户或设计人员配置,以在与具有相同时钟速度的单个标准微处理器架构进行1:
1比较时在MIPS中实现100:1的优势。FPGA包含可编程逻辑块的阵列和具有可重新配置的互连的层次结构,这些互连允许将这些块“连接在一起”,就像许多可以以不同配置互连的逻辑门一样。逻辑块可以被配置成执行复杂的组合功能或仅简单的逻辑门(如AND和XOR)。在大多数FPGA中,逻辑块还包括存储元件,这些存储元件可以是简单的触发器或更完整的存储块。
例如,性能的极大跳跃允许将处理器用于数据密集型应用,诸如机器视觉、视频处理、音频处理、机器人控制系统、多轴控制系统、移动通信、虚拟现实人工智能、现场直播、生物特征监控、物联网、超级计算、量子计算、航天控制系统、复杂系统的仿真和建模、以及信号处理应用。
在一个示例中,较少功率用于算法的计算密集处理。例如,对于在标准微处理单元上实现的相同计算,ICAT架构的能源使用减少,从而减少了热量和功耗。能源使用的减少可以是传统处理器的100倍-1000倍。
在一个示例中,ICAT可以在应用所需的许多并行处理器的配置中运行,与标准微处理器相比甚至进一步提高了性能。例如,可以同时运行多个处理器架构。例如,旧代码可以在与旧代码兼容的虚拟机上运行,而新的虚拟机运行专门为新架构编写的代码。在一个示例中,这减少了对大量回归测试的需求,诸如使旧代码适应新系统架构所需要的回归测试。
在一个应用中,将ICAT架构的速度和可扩展性应用于旧系统,这些旧系统无法为代码和/或硬件运行受到限制的客户处理原始速度和可扩展性所需的数据量。
在一个示例中,在通电时或通电之前编译重新配置,从而大大简化了计划且对最终产品的性能影响很小。例如,FPGA是该架构的主机硬件。可以轻松添加每秒数百万条指令(MIPS),而无需对现有代码进行大量重写。除了重新编译现有代码外,现有代码几乎可以未修改地运行。例如,需要并行处理大量公共输入的算法是该ICAT架构的理想候选。
在一个示例中,旧处理器和新处理器并行运行。可以重新编译现有代码且其运行几乎不受影响,其中,具有最少的回归测试以确保不发生改变。例外情况将是时序影响架构的操作以及更改硬件外设。例如,可以使用ICAT架构来提高原始计算速度,并且可以在需要时通过转换硬件来实现代码的加速。
在一个示例中,ICAT架构包括前端预编译器,该前端预编译器捕获任何潜在的代码不兼容问题。该前端预编译器自动解决这些潜在的代码不兼容问题。例如,ICAT架构可以模拟不同开发人员熟悉的各种处理器架构。例如,ICAT架构可以模拟多于一个的处理器,从而允许针对多个开发人员偏爱的处理器编码项目且同时在多个不同虚拟处理器上运行代码。在一个示例中,多个不同处理器将在多处理环境中运行不同的代码集,并且程序开发人员为与该代码兼容的多个域之一编译代码。
在一个示例中,预编译器是算法匹配流水线编译器,其生成各种处理算法所需的硬件配置代码。可以从用于多个处理任务的逻辑和数学方程式生成用于配置ICAT架构的固件
例如,可以以矩阵阵列配置多个处理器,用以运行低性能任务和高性能任务的混合体。
ICAT架构包括使用更高级语言开发的处理代码,这是因为ICAT架构提供原始速度优势,该优势压倒了通过以仅适用于一种特定多处理环境的机器语言进行编程所获得的任何速度优势,从而大大减少了完成开发项目的时间。
ICAT架构包括编译器或预编译器,该编译器或预编译器针对硬件专用命令检查旧代码,该硬件专用命令被优化以与高级编程语言(诸如C或C++)一起使用。例如,图1和图3的比较示出了算法匹配流水线编译器(AMPC)中包括的附加步骤。
在一个示例中,具有内置协调性的一组标准多处理/多任务外设由ICAT架构提供。可以采用实时操作系统(Real Time Operating System,RTOS)。例如,将多任务实时操作系统并入到ICAT架构中。例如,微控制器操作系统(Micro-Controller Operating System,MicroC/OS)是由嵌入式软件开发商Jean J.Labrosse在1991年设计的实时操作系统。它是用于微处理器的基于优先级的先发制人式实时操作系统,其主要以C编程语言(一种高级编程语言)来编写。例如,ICAT架构的原始速度允许使用这种RTOS。MicroC/OS允许以C语言定义若干功能,每个功能都可以作为独立的线程或任务执行。各个任务以不同优先级运行,并且每个任务都认为自己拥有ICAT架构的虚拟处理器。优先级较低的任务可以随时被优先级较高的任务抢占。优先级较高的任务可以使用操作系统服务(诸如延迟或事件)来允许优先级较低的任务执行。存在提供用于任务管理、任务间通信、内存管理以及用于为MicroC/OS计时的操作系统服务。MicroC/OS是开源的且可适应于几种不同的处理器架构。
为ICAT架构提供PCBA布局软件和工程工具,从而允许将现有设计转换为ICAT架构。
在一个示例中,使用标准Verilog或VHDL代码实现流水线架构。例如,可以在ICAT架构中提供1024字指令高速缓存、数据高速缓存和多级内存高速缓存架构。ICAT架构的流水线可以包括学习算法,该学习算法检测关于决策处理的分支倾向于哪种方式发生,使该路径在未来作为默认路径通过学习算法。在另一示例中,中断代码被隔离,并且中断处理程序专用于具有专用码位置的特定输入。在一个示例中,ICAT架构包括多处理器调试器。例如,现有代码可以由预处理调试器处理以确保对现有代码进行良好分区,从而使功能分开。然后,可以在每个独立的操作线程上运行单个调试器。
例如,可以在2英寸芯片封装中提供可重新配置的算法流水线核(RAPC),该芯片封装提供的MIPS和Mega FLOPS相当于1000个以上的Intel i7微处理器,更优选地10,000个以上的Intel i7微处理器。
在一个示例中,ICAT架构与现有的调试工具可兼容。在另一个示例中,ICAT架构被实现为运行不包含处理器间通信的现有的旧代码。ICAT特定硬件统一为所有旧代码共用的单个经过良好调试的块。例如,针对ICAT架构克隆精确模仿共用多处理单元的主要功能的外围设备。例如,超集外围设备允许客户轻松布置硬件布置。
在一个示例中,ICAT架构的编译器或预编译器检测对时钟周期进行计数的低级代码计时循环、允许指令获取的延迟、以及其它不兼容的计时代码,并手动地或自动地标记这些项以供修复或替换,其中,在ICAT架构内提供可兼容的更高级编程。
在一个示例中,ICAT架构提供优于传统架构的4:1的MIPS优势。在另一个示例中,该优势为至少100:1。
在一个示例中,ICAT架构包括算法匹配流水线编译器(AMPC),该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。在本示例中,针对相同的if-then-else逻辑,AMPC生成消除传统处理系统的开销的硬件配置,诸如代码获取、数据加载、数据存储、分支和子例程。
图4示出了ICAT架构的示例。在一个示例中,可以使用传统编译器(诸如Visual Studio)生成在主处理系统101上运行的ICAT配置程序。这提供了一种用于配置和重新配置可重新编程的硬件池的方法,该可重新编程的硬件池可被重新配置成运行和处理芯片中各种类型的处理算法。传统处理系统(例如Intel、ARM、IBM、AMD微处理器)不能被重新配置成运行各种算法,这是因为在传统处理系统中只能改变软件而不能改变硬件。通过使用ICAT架构,消除了传统处理系统的所有获取代码指令和执行代码指令的开销。图4的ICAT架构提供了可重新配置的硬件,该可重新配置的硬件可配置成利用在片上系统(System On Chip,SOC)设备100中实现的并行处理器资源池来执行数据的有效处理。
[0081] 例如,之后是逻辑处理器108和可配置的矩阵路由109的数学处理器池107实现了并行处理资源池102。该架构能够流水线式处理资源以对于特定应用优化处理性能。在一个示例中,处理器池102独立于主处理器101执行多个处理任务,而不从主处理器接收进一步的指令。每个ICAT可以被配置成作为独立的处理器系统处理整个算法。因此,一旦被配置成执行算法,ICAT就可以被认为是系统,在该系统内部不需要任何开销就能完成算法的处理。例如,ICAT可以被配置成执行if-then-else指令集且之后可以被重新配置成执行完全不同的指令集,诸如快速傅立叶变换或另一种数学算法方案。与传统处理器相比,通过减少不必要的活动周期,ICAT架构降低了功耗、产生更少的热量并提高了处理数据的速度。当数据在ICAT资源102输入端准备好被处理时,ICAT资源102为空闲的,直到这些资源得以配置。当不需要时,所有处理器都保持处于空闲状态,从而减少了不必要的开销所产生的热量。ICAT资源池中的每个处理器都比传统处理器的开销少,这是因为ICAT不获取和执行代码。而是,硬件被配置成执行特定操作且仅在提供需要使用ICAT架构提供的配置算法来处理的数据时才是激活的。在一个示例中,单个ICAT处理器使用数学处理器池107、逻辑处理器108、和由可配置的矩阵路由109引导的输出。该相同的ICAT处理器可用于简单的处理任务(诸如if-then-else)或用于非常高级的复杂算法(诸如面部识别中使用的算法)。例如,通过使用多个ICAT资源组或ICAT资源池102、数学处理器池107、逻辑处理器108、以及由可配置的矩阵路由109引导的输出,ICAT架构可以用于处理需要在流水线架构中进行多次计算的任务,诸如运动、形状或身份检测。
在一个示例中,该算法控制ICAT处理器的互连总线结构,并且ICAT架构处理来自输出设备112的输入数据流,诸如来自先前处理步骤的视频、传感器或数据。例如,可以从数据存储缓冲器、实时输入数据或来自其它处理步骤110、111的任何数据来流式传输先前结果。例如,可以将处理结果直接输出到设备113,诸如控制输出或视频输出。
例如,ICAT资源池可以包含三种类型的处理器模块,诸如数学模块,逻辑模块和结果路由模块。数学模块执行数学功能。逻辑模块执行逻辑功能。结果路由模块执行分支和数据路由功能。例如,在图6中示意性地示出了可重复使用的算法流水线计算机(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上运行的代码,该代码配置在并行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)、输入寄存器组选择(Input Register Bank Select)、和其它DSP输入功能,DSP ALU模式寄存器可以控制加、减、乘、除、右移、左移、旋转、和、或、异或、或非、与非、和其它逻辑过程,以及DSP多路复用器选择(Multiplexor Selects)可以控制移位和输入选择(Shifts and Input Selects)。DSP可以针对每个ICAT利用一个DSP48E1。例如,可以在Xilinx 7系列的现场可编程门阵列中提供DSP48E1器件。例如,ICAT存储器和逻辑运算105可以用于控制存储器和存储器逻辑运算。
在一个示例中,以C语言编写运动检测算法,以供在通用计算机上使用。
代码示例1:以C语言(高级编程语言)编写的运动检测算法:
图7示出了用AMPC编译器对代码示例1进行编译所得到的硬件配置图的示意图。视频设备111具有两个输出:实时视频像素流113和延迟缓冲流112。对于RGB输出,每个像素包括红色、绿色和蓝色。DSP 115进行实时馈送和延迟馈送的比较,并将结果流水线化117到LDP 
116,LDP 116确定是否检测到运动。结果由RAPC 114的MBS输出。单个RAPC被配置成实现在每个时钟周期并行执行的3个处理块。相比之下,传统处理系统需要执行37条指令来处理各个视频像素以检测运动。这些指令中的大多数指令在传统的、不可重新配置的且非流水线式的处理器上执行时占用多于3个的时钟周期。即使平均指令在3个时钟周期内执行(这对于未优化的通用处理器来说是慷慨的),但是也要占用111个CPU时钟周期来处理每个像素。
随着现代相机上像素数量的增加,很明显,现代单核和多核处理器可用的周期时间不足以完成该工作。
相反,来自代码示例1的由AMPC编译器配置的单个RAPC处理器的示例性配置使用视频的像素时钟来处理连续的像素流。在具有三个时钟周期的延迟的FPGA的流水线式的流式配置中实现三个处理块(DSP、LDP和MBS),但是在填充流水线之后(在视频的像素时钟的前三个时钟周期之后)的每个时钟周期处理像素的输出,与每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技术(包括多个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可以在其输出端处具有两个流水线寄存器,这两个流水线寄存器具有对于结果数据的同步清除使能。
该详细描述提供了包括权利要求的特征和要素的示例,目的是使本领域的普通技术人员能够实现和使用权利要求中记载的发明。但是,这些示例不意图直接限制权利要求的范围。相反,这些示例提供了权利要求的在这些描述、权利要求和附图中已公开的特征和要素,可以以本领域中已知的方式对这些特征和要素进行改变和组合。
在一个示例中,分时多路复用允许计算任何宽度的数据值,而不必担心进位链延迟。这实现了数据流式进出处理器而没有冯·诺依曼传播延迟。针对每个时钟输出一个结果。在一个时钟周期内输出一个结果而没有传播延迟的处理器是令人惊讶且出乎意料的。通常,由于结果的传播,计算的控制和时序需要许多延迟周期。这些传播延迟在现代处理器中不可避免,这些现代处理器包括协处理器、图形卡、存储器以及可能的若干核,这需要相关开销来控制在适当时间并按适当顺序提供数据或计算。在数据具有固定宽度的现代计算机架构中,即使流水线和并行处理也要承受这些延迟。因此,现代计算机架构需要许多时钟周期才能实现单个结果。可以使用超频来提高周期的速率,但不增加每个结果的周期数。分时多路复用对于任何数据宽度都允许每个结果一个时钟,这是另一个令人惊讶的结果。该结果通过在将数据加载到队列中时为任何特定数据宽度配置短暂的延迟时段来实现。此后,一个时钟将结果输入提供到分时多路复用系统中。在本文中,如电子学中所理解的那样,将时钟定义为单位周期或信号。例如,信号可以在高低状态之间振荡且可以像节拍器一样用于协调数字电路的动作。为了实现更高的性能,可以将半个周期视为一个时钟。在现代电子产品中,可通过改变频率电压来调整时钟速率以实现稳定的结果,这可取决于硬件移除过多热量的能力。在一些架构中,可以通过调整电压和频率使处理器或图形卡从认证的时钟速度变为超频或欠频。这也可以在RAPC处理器中完成。因此,最好的比较不是FLOPS,而是每个时钟的结果。FLOPS可用作在相似时钟频率下操作的处理器的比较。RAPC处理器可包括三个处理模块:能够实现加、减、乘和除的数学模块;用于处理逻辑决策(即数据与其它数据的比较)、常数或阈值的逻辑模块;以及在计算或进程中将数据路由到计下一步骤的路由模块。例如,数学模块和逻辑模块中的一者或两者可以被实现为LUT或查找表。在一个示例中,每个RAPC可以包括一个或多个LUT。例如,逻辑模块可以控制路由模块中的数据。在一个示例中,路由模块可以是在其各输出端处具有流水线寄存器的多路复用器开关。在一个示例中,可以使RAPC图块化以将数据流从一个RAPC提供到另一相邻的RAPC。
查找表(LUT)结构可用于实现逻辑门。LUT可以被认为是存储设备。输入逻辑项可以选择所需的输出项。LUT设备可以用于实现组合真值表以代替组合逻辑门结构。到LUT的地址输入类似于到门结构的逻辑输入。例如,输出数据的每一位都类似于是来自门结构的输出项。LUT可具有可预测的从输入到输出的传播时间,这与正在执行的逻辑功能无关,从而提供了无需与中央处理单元进行通信即可操作的结构。随着输入项的变化,逻辑门结构可以具有变化的传播时间。例如,LUT可用于在FPGA(现场可编程门阵列)中实现逻辑结构。可替选地,LUT可用于在ASIC中构建可重新配置的逻辑门结构。例如,当添加输入项(地址位)时,LUT存储器结构呈指数增长。因此,对于实现需要许多输入项的逻辑结构来说,LUT还未被认为是实用的。例如,如果8位RAPC被实施在单个LUT(1,769,472位)中,则该8位RAPC可需要
65,536个地址,其包含27位数据字。然而,在以下示例中克服了该缺点。例如,图9示出了用于配置RAPC处理器的一位LUT,而图10示意性地示出了用于RAPC处理器的8个一位LUT。例如,图10显示了三个逻辑链输入。这三个输入可用于在RAPC之间生成图块化架构,诸如多个RAPC之间的PSP(流水线式流式处理器)架构。如果将RAPC配置成独立处理器,则可以忽略这些输入。在所示的示例中,在包含多个RAPC的高吞吐量处理器的全部8个LUT上实现了双向3位(3-bit)逻辑链。LUT通过控制由AMPC配置的LUT存储设备的逻辑链信号输出驱动器上的三态驱动器来提供逻辑链的双向控制。该示例示出了AMPC编译器如何配置逻辑链以在执行被编程的处理功能所需的方向上传输逻辑信号,所述被编程的处理功能诸如左移和/或右移、乘和/或除等。例如,还提供了三个逻辑链输出,用于将RAPC链接成PSP处理配置。
RAPC可以被配置成1到8位处理器。小于8位的RAPC可以超频,因为异步逻辑链延迟更短。
1位RAPC可以以8位RAPC的时钟速度的8倍运行。
2位RAPC可以以8位RAPC的时钟速度的4倍运行。
4位RAPC可以以8位RAPC的时钟速度的2倍运行。
这些RAPC中的任一者均可用于实现PSP处理器。使这些RAPC超频提高了性能,并且低位较小的RAPC仍可被配置成PSP处理器以处理精度较大的数据字。在一个示例中,四个4位RAPC被配置成PSP处理器,并且这四个4位RAPC能够处理16位数据字,同时以4位RAPC的时钟速率流式传输结果,这例如可以比16位RAPC更快。由4位RAPC使用的较高时钟速度可能会产生更多的热量,就像它们在传统处理系统中那样。
RAPC可以被配置成1到8位处理器。可以使小于8位的RAPC超频,因为异步逻辑链延迟更短。1位RAPC可以以8位RAPC的时钟速度的8倍运行。2位RAPC可以以8位RAPC的时钟速度的4倍运行。4位RAPC可以以8位RAPC的时钟速度的2倍运行。这些RAPC中的任一者均可用于实现PSP处理器。
使这些RAPC超频提高了性能,但是较小的RAPC仍可被配置成PSP处理器以处理精度较大的数据字(即,配置成PSP处理器的4位RAPC可以处理16位数据字并以由4位RAPC处理器提供的较高性能流式传输结果)。较高时钟速度将产生更多的热量,就像它们在传统处理系统中那样。
在图10中,八个1位LUT构成一个8位RAPC高吞吐量处理器。例如,八个LUT被配置成状态机且使用3位逻辑链互接。这些逻辑链将状态信息从每个位的1位LUT传达到下一个更高和/或下一个更低位的LUT。因此,这些链接的LUT一起充当8位RAPC,而没有开销。该8位RAPC包括256个LUT地址和6位数据字,该6位数据字仅是1,536位的数据,而不是1,769,472位的数据。例如,在替选示例中,例如,高吞吐量处理器可以包括任意规格的RAPC,诸如从1位到8位。较小的RAPC位规格可以以较高的时钟速度运行。例如,4位RAPC将以8位RAPC的两倍快运行。两倍的处理器速度相当于性能的四倍。高吞吐量处理器的示例可以在速度(即处理器性能)与数据准确性之间、或在处理器性能与功率之间、或在自定义输入/输出与可重新配置的RAPC输入/输出之间进行权衡。该配置取决于应用程序,因为RAPC架构可以是可重新配置的。可以通过将LUTS加载到高吞吐量处理器中的RAPC和数据传输状态机(Data Transfer State Machine,DTSM)中来配置算法处理功能。AMPC可以按位级(bit level)配置算法。例如,a+b=c可以实现为位a加位b(进位输入(carryin))等于位c(进位输出(carryout))。因此,与传统处理器和传统查找表架构相比,RAPC使用的内存量非常有限。对于本示例,8位RAPC仅需要八个8×2位存储位置或总共128位。相比之下,用于8位RAPC的单个传统LUT将需要8位a,8位b和低位进位输入,这等于17位地址×24位数据字或总计3,145,728位。在传统LUT中,总的内存位大小以指数方式大于针对数据传输状态机(DTSM)所提供的示例,该DTSM在专用配置总线上配置所有RAPC LUT。例如,可重新配置的DTSM类似于RAPC处理器且在功能上由LUT配置。DTSM可以用于配置RAPC并管理RAPC、存储内存和外部数据接口之间的数据传输。数据传输和数据处理的可配置矩阵可以包括DTSM和RAPC高吞吐量处理器,提高了可重新配置的处理性能,消除了代码获取和执行开销,可由更高级编程语言(诸如“C”)实现为可在DTSM和RAPC LUT中直接针对算法(诸如数学、逻辑、分支等)配置的功能。RAPC和DTSM包括流水线式的矩阵结构且可以在初始输入延迟时段之后在每个时钟上流式传输数据。可以在任何时间重新配置ASIC设备,以及高吞吐量处理器可以将结果存储在内存寄存器或高速缓存中以供通常执行的各种应用程序或算法使用。例如,可以根据需要存储用于校正和学习的算法以供重复使用。在所示的示例中,可以在任何时间由外部处理器或设备重新配置RAPC处理器中的LUT,实现可占用多个ASIC或FPGA的自修改算法。例如,可以通过互连高吞吐量处理器来轻松定义神经网络,其中,神经网络的特定节点上的算法优化通过改变RAPC之间的互连来实现。
例如,图11示意性地示出了包括4个RAPC 1101、1102、1103、1104的可重新配置图块,其示出了可以如何将RAPC中的数据配置成图块。图块化设计允许RAPC 1112之间以及图块
1111之间的点对点连接,而不必与任何其它逻辑模块共享任何通信通道或总线。图块化设计还可以提供紧凑性,这是由于物理连接的位置以及用于每个物理连接的全带宽。例如,图块化可以使用静态交换连接或中继RAPC来提供线性处理扩展性,这取决于编译器(诸如AMPC)进行的图块化设计和配置。图12示意性地示出了图块架构中的另外多个RAPC U1-U16之间的信号互连,其中,每个RAPC通过RAPC开关可重新配置地连接到其它RAPC。图14示出了图12中所示的RAPC U1-U16之一。在该示例中,图14中的RAPC与开关电路联接,该开关电路用于建立图块化架构(诸如PSP架构)内的其它RAPC之间的互连。
在图13中,在高数据吞吐量应用中实现了具有图块架构的RAPC高吞吐量处理器。主机CPU通过40个信号通道联接,以配置RAPC高吞吐量处理器中的多个RAPC。高吞吐量处理器联接到输入数据和/或信号以及利用输出数据和/或信号的设备。例如,存储设备联接到RAPC高吞吐量处理器且可以包括AMPC编译器和其它存储的用于为一个或多个数据处理应用配置RAPC的算法。图13可以例如是ASIC,其被合并到聚合为任何期望宽度的多个8位数据通道中。每个数据通道可以包括10个引脚:8个数据引脚、1个时钟(CLK)引脚和1个数据/控制(DATA/CONTROL)引脚。数据流结构和过程可以包括输入级,该输入级在将输入值分配到乘法器期间实现用于初始数据输入延迟的单位延迟堆栈。例如,系数可以被存储在RAPC中。
例如,高吞吐量系统可以用于数据处理。在该示例中,单位延迟是时钟周期。在初始输入延迟后,针对每个时钟周期提供一结果。乘法运算是随着位宽增加而平方地增长的运算。
作为使用64位输入数据的极端示例,每个整数64位乘法都需要1024×8位RAPC的矩阵,产生
128位的结果。所有加法都将是产生128位流式输出的128位加法。如果需要,则可以使用移位操作将该128位输出标准化为64位。对于256个样本的有限脉冲响应(Finite Impulse Response,FIR)过滤器,乘法器的数量为256。所需的8位RAPC的总数为256*1024=262,144个用于乘法的8位RAPC,以及需要256×16=4,096个8位RAPC作为加法器。单位延迟输入分布堆栈为256×8=2,048个8位RAPC。系数可以被存储在RAPC中,且对于64位乘法来说需要
256×8=2,048个8位RAPC。通过将以任何裸片尺寸可用的RAPC的数量除以所需的RAPC的数量,我们可以确定每个裸片中可以装多少个FIR过滤器。在本示例中,在加载初始数据的初始延迟之后,FIR将努力实时运行,从而在每一个时钟周期产生一个输出。一旦输出第一数据,则输入数据时钟频率等于输出数据频率而没有传播延迟。在将初始数据输入到高吞吐量处理器中时,在一些少量时钟周期的延迟之后,4GHz输入信号将计算并生成4GHz输出信号。输出数据是实时流,不需要数据压缩等。根据数据宽度和芯片大小,可以在单个芯片上同时运行多个FIR过滤器。如果需要,则每个FIR过滤器可以连接到单独的时钟且可以按选择的时钟频率运行。下表总结了在图块架构中使用RAPC的高吞吐量处理器的优势,该图块架构独立于任何外部中央处理单元处理数据且无传播延迟开销。FIR和IIR的数字信号处理可以按对于任何其它架构(可重新配置的或以其它方式的)是不可能的频率实时提供。以前已知的传统CPU或FPGA都没有达到该里程碑。此外,因为乘法器是全精度的,所以不会损失精度。实时处理信号无需压缩或没有数据丢失。在一个示例中,动态运行期重新配置意味着可以在任何时间更改系数和数据流结构以创建任何类型的过滤器。在一个示例中,FIR或IIR过滤器是自适应的且性能随着时间而提高。典型的ASIC使用内置到ASIC架构中的固定算法,但是使用RAPC的高吞吐量处理器可以根据需要改变。
例如,RAPC的图块化消除了在图块区域中使用任何缓冲区和所有缓冲区,这使更多空间可用于RAPC。消除直接连接的RAPC图块之间的缓冲区确保在每个时钟周期来自图块的结果,并且可以通过组合多个RAPC调整图块大小以提供任何所需精度的数据。在用于数据输入的初始延迟之后,RAPC消除了任何硬件传播延迟。不存在“气泡”。相反,图块化的RAPC完全同步工作。
例如,图块架构可用于配置乘法器,该乘法器在单个时钟周期内提供流式乘法结果,而不考虑最终结果所需的精度。该结果令人惊讶且出乎意料,因为传统上认为更高的精度结果在传统处理器中需要更长的处理时间和许多时钟周期才能实现。而是,该示例保证一旦处理器输出结果,则每个时钟周期有一个乘法结果,并且对于后续乘法运算和加法运算路由位的行动是这些示例所特有的。
在一个示例中,引脚级应用数据接口允许多个ASIC之间的灵活连接,每个ASIC包括多个RAPC。例如,通道API系统允许包括多个RAPC的任意数量的ASIC以电路板(board)设计者所需的任何拓扑结构连接,而不重新配置每个ASIC硬件。
在一个示例中,通过时钟路由来管理功率。例如,每个RAPC将输入时钟与结果一起路由。输入时钟和得到的数据的组合允许功率的管理且消除了在整个芯片上创建时钟树的任何需求。例如,一个优点是不同的流可以使用不同的时钟频率,而不会在芯片设计中引入额外开销。
在一个示例中,将RAPC配置成存储常量和变量以供后续使用。在需要常量和局部变量的程序中,每个RAPC可以配置成使用专用于存储值的存储器存储常量和变量。图示出了为至少一个常量和至少一个变量的局部专用存储设计的RAPC的简单示意图。
在一个示例中,使用元数据标记和跟踪数据。通过包括多个RAPC的处理器的流式传输数据的量和速率超越任何已知的处理器。通过使用元数据,诸如“流的开始”、“流的结束”、“奇偶校验”、“被零除”等,可以实时跟踪异常并使其与每个时钟周期输出的特定结果相关联。这不需要架构变化,因为数据精度已经不受限制。在该示例中,可以配置与数据路径一起运行并遵循该数据路径的位集,以提供该额外的异常跟踪。专用于元数据的位数可以通过所需的精度级别和/或处理器的目标应用程序来确定。例如,在RAPC处理器配置中的数据可以具有任意宽度,以反映现实世界。例如,可以将数据以其全宽度计时到系统中以使吞吐量最大化。在一示例中,数据可以是一位。在另一示例中,数据可以是4096位(或甚至大于
4096位,因为这不受RAPC架构的限制)。无论如何,数据可以按1位/时钟来传送,并且如果选择的宽度比单个芯片(诸如RAPC ASIC)上的引脚线的宽度宽,则数据可以并行跨越多个芯片,而不引入额外开销。
在一个示例中,比特流既被加密又可路由。例如,可以对用于配置多个RAPC的比特流进行加密。加密比特流防止了对比特流进行反向工程或拦截。例如,在编译期间,比特流可具有嵌入到该比特流中的路由数据。例如,在RAPC ASIC内部以及在多个RAPC ASIC上对比特流数据的解码和路由可以由每个ASIC内编码的支持逻辑来处理。
在一个示例中,将进位链分时多路复用应用于RAPC ASIC。在替选方案中,将进位链分时多路复用应用于具有冯·诺依曼架构的芯片。
在一个示例中,多个RAPC可以用作智能缓冲器。每个RAPC可具有正向加2的直通输出,因此芯片的一个区域中的多个RAPC可以用于将数据移动到正确位置,目的是与其它RAPC进行时域共享操作。这消除了在RAPC ASIC上包括单独的智能缓冲器的需求,使得可以在任何芯片上包括更多RAPC且带来无限的可扩展性。高吞吐量处理器的优点之一是可以在特定位数下保持数据的准确性。64位RAPC处理器的精度为64位。在本领域已知的传统处理器和FPGA中,逻辑链(诸如用于加法的进位链)限制了数据精度。长计算的最终结果中的有效位的数量可以在计算过程中减少。出于该原因,经常使用浮点硬件来保持计算的准确性和精度。甚至长表派生的计算都可能降低最终结果的精度,该精度可以被降低到6位到12位。因此,需要这些已知的处理器来仔细检查结果是否存在可能的传播误差。
在一个示例中,如下所示的BITFILE(位文件)包含用于配置RAPC ASIC的整个系统的加密信息。BITFILE可以分为多个部分。例如,每个部分可包含一个模糊的配置字节序列,该序列要么意图被当前设备使用、要么意图被重新发送到特定端口上的另一设备。每个芯片可以处理BITFILE流中的仅属于该特定芯片的那部分,借助指定端口重新传输任何其它部分。
在一个示例中,诸如PORTNUM、DEVICENUM、FIRST、NEXT的字段由设备处理。另一字段CONFIGURATION只有当该部分意图用于当前设备时,设备才会处理。例如,不管使用情况如何,位文件的格式都可以被定义为通用的,以及例如,这一个文件可以包含用于系统中所有设备的比特流而不管拓扑结构无关,从而在这些变得可用时使该格式可与新的软件前向兼容。当序列化为位时,将首先发送最高有效位。多字节字段可采用大端序格式,其中,第一字节是最高有效字节。例如,字符串字段可以以NULL终止(0),并在末尾使用NULL来填充。例如,双线以下的所有内容都可以被加密。
示例1:例如,在没有以任何方式进行限制的情况下,可以在单个 FPGA
芯片上配置3325个RAPC,其中, 和 是Xilinx有限公司的商标,该芯片以
100MHz的适度时钟频率运行。在每个时钟上,每个RAPC都可以处理1个或2个逻辑运算和一数学运算。因此,该配置产生332吉拍(GigaFLOPS)。例如,该配置针对四个数学运算(例如加、减、乘、除)和四个逻辑运算(例如大于、小于、等于、不等于)中的每一者使用查找表(LUT)。标准LUT存储器大小为512字节。另外,除了其它逻辑运算LUT之外,还可以提供“大于可配置的恒定值”LUT。在一个示例中,LUT的输出信号用于控制总线多路复用器开关,所述总线多路复用器开关用于在RAPC之间引导结果。AMPC编译器对为冯·诺依曼架构编写的更高级程序语言的源代码进行预编译,以及AMPC编译器为RAPC正在执行的每个运算选择LUT,从而从为冯·诺依曼架构编写的源代码生成非冯·诺依曼处理器。与任何传统的冯·诺依曼处理器相比,332吉拍(其中,吉拍被定义为每秒10亿个浮点运算)是相当数量的,尤其是在理解到这是没有对芯片的任何特殊冷却要求的情况下获得的时。相比之下,传统的冯·诺依曼处理系统对于每个数学、逻辑和分支运算都需要单独的获取和执行周期,而RAPC对于每个数学、逻辑和分支运算不需要单独的获取和执行周期。
在一个示例中,计算表明,时钟速度为741MHz的 Virtex ZU13芯片(其中,
Xilinx和Virtex是Xilinx有限公司的商标)可以配置有236,250个RAPC,给予该芯片以大于
175,000吉拍执行的能力,这是非凡的结果,对于本领域技术人员而言是出乎意料且令人惊讶的。该结果是可能的,这因为RAPC对于执行的每个数学、逻辑和分支运算不需要单独的获取和执行周期。RAPC架构消除了传播延迟。通用计算机处理器的冯·诺依曼架构产生的这个问题和其它问题使用RAPC和ICAT架构被解决。为具有冯·诺依曼架构的处理器(即所有已知的现代通用计算机处理器)编写的程序无需被重写以在ICAT架构上运行,这对于本领域普通技术人员甚至专家来说都是非常令人惊讶且出乎意料的结果。
在一个示例中,可以将如下8个输入位输入到RAPC中:2个输入位为操作数A输入数据、2个输入位为操作数B输入数据、1个进位输入位、1个等号输入位、1个大于输入位、和1个总和>恒定值位。为了无限精度,提供这些位实现了LUT设备之间的算法链。AMPC编译器着眼于高级编程语言源代码并为执行的每个运算选择LUT表。针对在代码段中执行的每个运算选择且互连RAPC。识别彼此独立的代码段,并且这些代码段被AMPC设置为在并行进程中运行。在一个示例中,如果有足够的RAPC可用,则可以同时并行运行附加程序。不需要主控制程序即可并行运行多个应用程序,这是因为AMPC可以被配置成将多个程序分配给可用的ICAT资源。ICAT架构得到简化,这是因为依赖于来自其它源代码进程的结果的源代码进程被AMPC自动直接连接到生成所需结果的进程。在一个示例中,在RAPC中使用的LUT可以被选择成大小相同且可以被配置用于任何标准的更高级编程语言功能。例如,AMPC可以在选定位置输出用于每个RAPC的LUT数据表。例如,由于LUT数据可以在ICAT架构运行期间保留在内存中,直到由AMPC重新配置为止,因此可以通过嵌入式处理器或使用来自外部处理器的外部接口将LUT数据加载到内存中。在一个示例中,AMPC加载用于实现为ASIC设备的ICAT架构的程序。可替选地,可以使用加密的HDL文件配置FPGA。
格式为纯文本的位文件配置(BITFILE CONFIGURATION)字段
对配置数据加密。其用于设备接收后进行解密。该配置是可分为子部分的字节流。按顺序次序执行这些子部分。可以使用预配置来布置任意非RAPC逻辑的可选配置。该子部分可以包含对于设备逻辑的功率控制、端口配置管理、本地内存初始化等。例如,RAPC逻辑的配置可以是16字节LUT表条目的大型阵列。对于每个RAPC可具有一个LUT表。任意非RAPC逻辑的可选后配置可以完成直到对RAPC逻辑初始化后才能初始化的任何逻辑的配置。例如,该子部分的另一用途可以是向系统的其余部分确认已经配置了该特定设备。
位文件加载算法(BITFILE Load Algorithm)
位文件可用于加载OEM已经在电路板设计中已实现的任意拓扑结构。例如,当具有N个端口的设备通电时,所有端口默认为输入端口且正在侦听位文件加载或某些其它命令,诸如流重置等。例如,通电时通常使用的将是借助系统中的某个任意端口加载位文件。
位文件部分(BITFILE SECTION)
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈