处理器控制的可编程逻辑器件修改的制作方法

文档序号:25814174发布日期:2021-07-09 13:51阅读:116来源:国知局
处理器控制的可编程逻辑器件修改的制作方法
处理器控制的可编程逻辑器件修改


背景技术:

1.本公开总体上涉及集成电路,例如处理器和/或可编程逻辑器件(例如,现场可编程门阵列(fpga))。更具体地,本公开涉及包含集成处理器和fpga的电子设备。
2.本部分旨在向读者介绍可以与本公开的各个方面相关的本领域的各个方面,下面将描述和/或要求保护这些内容。该讨论被认为有助于向读者提供背景信息,以促进对本公开的各个方面的更好的理解。因此,可以理解的是,这些声明应从这种角度来解读,而不是作为对现有技术的承认。
3.现代电子产品(例如,计算机、便携式设备、网络路由器、数据中心、互联网连接的装置等)往往包括至少一个集成电路设备。集成电路设备可以呈现多种形式,包括处理器(例如,中央处理单元(cpu))、存储器设备和可编程设备(例如,fpga),仅举几个示例。特别地,可编程器件可以包括逻辑的可编程结构,其可以在制造之后被编程(例如,被配置)和被重新编程(例如,被重新配置),以基于电路设计提供各种各样的功能。
4.可编程逻辑器件是可以被编程以执行各种各样的操作的一类集成电路。可编程逻辑器件可以包括被编程的可编程逻辑元件,这些可编程逻辑元件可以被编程以执行自定义操作或实现电路设计。为了将自定义操作和/或电路设计编程到可编程逻辑器件中,电路设计可以被编译为位流并且被编程到可编程逻辑器件中的配置存储器中。使用位流编程的值定义可编程逻辑器件的可编程逻辑元件的操作。在可编程逻辑器件中编程的特定功能可以是同步的。
5.在一些实施例中,可编程逻辑器件和处理器可以被集成在单个封装或设备中,其中一些操作可以由可编程逻辑器件和处理器协同地执行。例如,封装可以包括片上系统(soc),该片上系统包括处理器和可编程逻辑器件。然而,对可编程逻辑器件进行编程利用了包括要在可编程逻辑器件上实现的指令的低级编程语言。
附图说明
6.在阅读了以下详细的描述并参考了附图时,可以更好地理解本公开的各个方面,在附图中:
7.图1是根据本公开的实施例的计算系统;
8.图2是根据本公开的实施例的可编程逻辑器件;
9.图3是根据本公开的实施例的数据处理系统;
10.图4是根据本公开的实施例的经加速的数据处理系统的功能框图;
11.图5是根据本公开的实施例的处理器的处理流程图;以及
12.图6是根据本公开的相应的实施例的数据处理系统。
具体实施方式
13.下面将描述一个或多个具体实施例。为了提供对这些实施例的简要描述,在说明书中并未描述实际的实施方式的所有特征。应当理解,在任何这种实际的实施方式的开发
中,如在任何工程或设计项目中,都必须做出许多特定于实施方式的决策,以实现开发人员的具体目标,例如遵守系统相关的和业务相关的约束条件,这些约束条件可以因实施方式而异。此外,应当理解,这种开发工作可能是复杂且耗时的,但是对于受益于本公开的普通技术人员来说,将不过是设计、建造和制造的常规任务。
14.当介绍本公开的各种实施例的元素时,冠词“一”、“一个”和“该”旨在意指存在元素中的一个或多个。术语“包含”、“包括”和“具有”旨在是包含性的并且意指可以存在除了所列的元素之外的附加的元素。另外,应当理解,对本公开的“一个实施例”或“实施例”的引用并不旨在被解释为排除也包含所记载的特征的附加的实施例的存在。此外,短语a“基于”b旨在意指a至少部分地基于b。此外,除非另有明确声明,否则术语“或”旨在是包含性的(例如,逻辑or)而非排他性的(例如,逻辑xor)。换言之,短语a“或”b旨在意指a、b、或a和b二者。
15.可编程逻辑器件的高度灵活的本质使其非常适合于加速许多计算任务。因此,可编程逻辑器件被越来越多地用作加速器,以用于机器学习、视频处理、语音识别、图像识别和许多其他高度专业化任务,特别是那些在处理器上运行的软件中速度太慢或效率低下的任务。可以采用可编程逻辑器件的系统的尺寸和复杂度的增加可能导致设计软件的复杂度增加以及针对可编程逻辑器件中的可编程逻辑元件的设计灵活性的需要增加。
16.为了在可编程逻辑结构中实现电路设计,可编程逻辑器件的不同扇区、部分或区域可以对可以在区域之间进行交换的数据执行不同的操作。为了处理和交换数据,使在多个扇区(例如,区域)中发生的操作的时序同步可以是有用的。
17.通过介绍的方式,图1示出了根据本公开的实施例的系统10的框图,该系统10至少部分地基于在可编程逻辑器件12中编程的设计来执行操作。可编程逻辑器件12可以是可重新配置的(例如,现场可编程门阵列(fpga))。用户可以使用设计描述14来实现要被编程到可编程逻辑器件12上的电路设计。可编程逻辑器件12可以包括用于实现电路设计的一个或多个结构或核心。可编程逻辑器件12还可以包括与结构互连的其他子系统,以建立与其他处理设备的连接。子系统可以包括可编程逻辑器件12的预分配的不可配置的部分,其可以被内部地互连到芯片输入/输出引脚、其他子系统和/或包括可编程逻辑区域32的可编程结构。
18.设计描述14可以使用设计软件来设计或修改,该设计软件由计算系统18的一个或多个处理器16执行。计算系统18可以包括能够执行设计描述14的任何合适的设备(例如,台式计算机、膝上型计算机、移动电子设备、服务器等)。计算系统18可以访问、配置可编程逻辑器件12和/或与其通信。处理器16可以包括多个微处理器、一个或多个其他集成电路(例如,专用集成电路、现场可编程门阵列、精简指令集处理器等)或其某个组合。
19.一个或多个存储器设备20可以存储设计描述14。另外,存储器设备20可以存储与可编程逻辑器件12相关的信息(例如,控制软件、配置软件、查找表、配置数据等)。在一些实施例中,处理器16和/或存储器设备20可以在计算系统18的外部。无论存储器设备20的位置如何,存储器设备20可以各自包括有形的、非暂时性的且机器可读的介质,例如易失性存储器(例如,随机存取存储器(ram))和/或非易失性存储器(例如,只读存储器(rom))。存储器设备20可以存储多种信息并被用于各种目的。例如,存储器设备20可以存储机器可读的和/或处理器可执行的指令(例如,固件或软件)以供处理器16执行,例如用于以下操作的指令:确定可编程逻辑器件12的速度或可编程逻辑器件12的区域,确定在可编程逻辑器件12或可
编程逻辑器件12的区域中编程的设计的路径的临界状态(criticality),对可编程逻辑器件12或可编程逻辑器件12的区域中的设计进行编程等。存储器设备20可以包括一个或多个存储设备(例如,非易失性存储设备),这些存储设备可以包括只读存储器(rom)、闪速存储器、硬盘驱动器或任何其他合适的光学、磁性或固态存储介质、或其任何组合。
20.设计描述14被编译器22使用以生成有时被称为程序目标文件的程序24(位流)中的低级电路设计,该程序24对可编程逻辑器件12进行编程。即,编译器22可以将代表电路设计的机器可读指令提供给可编程逻辑器件12。例如,可编程逻辑器件12可以接收一个或多个程序24,这些程序24描述了应当被存储在可编程逻辑器件12中的硬件实施方式。程序24可以被编程到可编程逻辑器件12中作为配置程序26。配置程序26可以被表示为“配置数据”,该配置数据被路由到可编程逻辑器件的各个区域,即使当那些区域中的一个或多个被断电时也是如此。
21.图2是示出根据本公开的实施例的图1的可编程逻辑器件12的区域32的系统30的图。如图所示,可编程逻辑器件12是可编程电路(例如,现场可编程门阵列器件)。在替代实施例中,可编程逻辑器件12可以是专用集成电路、专用标准部件、片上系统等。系统30可以用在任何合适的应用中,例如数据中心、网络设备、服务器、路由器、交换机、网关、防火墙、桥接器、集线器、数据库、工作站、台式计算机、膝上型计算机、移动设备、无线接入点、无线接入设备等。
22.互连资源34可以用于通过可编程逻辑器件12来路由信号(例如,时钟或数据信号)。在一个实施例中,图2的可编程逻辑器件12可以包括在美国申请第2016/0049941号“programmable circuit having multiple sectors”中描述的类型的分区化的fpga,该申请出于所有目的通过引用将其全部内容并入本文。因此,可编程逻辑器件12的可编程逻辑资源或块可以通过多个分立的可编程逻辑扇区或区域32来分布。每个可编程逻辑区域32可以包括多个可编程逻辑元件36,这些可编程逻辑元件36具有由存储在配置存储器38(例如,配置随机存取存储器)中的设计描述14定义的操作。可编程逻辑元件36可以包括组合或顺序逻辑电路。例如,可编程逻辑元件36可以包括查找表、寄存器、复用器、路由线路等。用户可以对可编程逻辑元件36进行编程以执行多种期望的功能。操作可编程逻辑器件12的电路使得电力从配电网络42中汲取。可编程逻辑器件12可以包括收发器电路44(例如,高速串行接口电路),以用于将信号驱离可编程逻辑器件12并从其他设备接收信号。
23.在可编程逻辑器件12上可以存在任何合适数量的可编程逻辑区域32。实际上,尽管在图2中示出了29个可编程逻辑区域32,但是应当理解,更多或更少的区域可以出现在实际的实施方式中(例如,在一些情况下,数量为50到100的量级上的区域或更多)。每个可编程逻辑区域32可以包括控制可编程逻辑扇区32的操作的区域或扇区控制单元或电路(rcu)46。每个区域控制电路46可以与设备控制单元或电路(dcu)48通信。每个rcu 46可以接受来自dcu 48的命令和数据,并且可以基于来自dcu 48的控制信号来从其配置存储器38中读取数据并将数据写入其配置存储器38中。除了这些操作之外,还可以利用许多附加的能力来增强rcu 46。例如,这样的能力可以包括对读取和写入进行本地排序以在配置存储器38上实现错误检测和校正,以及对测试控制信号进行排序以产生各种测试模式。
24.rcu 46和dcu 48可以被实现为逻辑电路(例如,状态机和/或处理器)。例如,rcu 46或dcu 48中的每个操作可以被实现为包含控制程序的存储器中的单独的例程。该控制程
序存储器可以被固定在只读存储器(rom)中,也可以被存储在诸如随机存取存储器(ram)之类的可写存储器中。rom的大小可以大于将用于仅存储每个例程的一个副本的大小。这可以允许每个例程具有多个变体,这取决于本地控制器可以被置于的“模式”。当控制程序存储器被实现为随机存取存储器(ram)时,可以利用新的例程写入ram,以将新的操作和功能实现到可编程逻辑区域32中。这可以以一种高效且易于理解的方式提供可使用的可扩展性。这可以是有用的,这是因为新的命令可能在该区域内带来大量的本地活动,而代价仅仅是dcu 48和rcu 46之间的少量通信。
25.每个区域控制电路46因此可以与dcu 48通信,该dcu 48可以协调区域控制电路46的操作并且传达从可编程逻辑器件12的外部发起的命令。为了支持该通信,互连资源34可以充当dcu 48和每个区域控制电路46之间的网络。互连资源34可以支持dcu 48和每个区域控制电路46之间的各种各样的信号。在一个示例中,这些信号可以作为通信分组来传输。
26.可编程逻辑器件12可以被电编程。在电编程布置的情况下,可编程元件36可以包括一个或多个逻辑元件(导线、门、寄存器等)。例如,在编程期间,配置数据是使用可编程逻辑器件12的(例如,收发器电路44的)引脚和/或输入/输出电路来加载到配置存储器38中的。在一个示例中,配置存储器38可以被实现为配置随机存取存储器单元。本文所描述的基于ram技术的配置存储器38的使用旨在仅仅是一个示例。此外,配置存储器38可以遍布可编程逻辑器件12的各个可编程逻辑区域32地分布(例如,作为ram单元)。配置存储器38可以提供对应的控制输出信号,该控制输出信号控制互连资源34的可编程组件或相关联的可编程逻辑元件36的状态。配置存储器38的输出信号可以被应用到金属氧化物半导体(mos)晶体管的栅极,以控制互连资源34的可编程组件或可编程逻辑元件36的状态。
27.在图3中,系统50可以包括两个可编程逻辑器件12,这些可编程逻辑器件12被配置为与两个处理器52协调和连接地操作。附加地或可替代地,系统50可以包括任何数量的可编程逻辑器件12或处理器52。无论可编程逻辑器件12或处理器52的数量如何,系统50可以利用可编程逻辑器件12的内联数据路由和并行数据处理以及处理器52的顺序处理能力来实现使用系统50的灵活数据处理。处理器52可以是任何可行的处理器芯片,其具有用于具体设计需求的适当的处理单元,例如intel的处理器。可编程逻辑器件12可以包括具有可编程逻辑结构的fpga设备,以用于由设计者指定的具体设计任务。例如,fpga设备可以包括intel的stratix fpga。此外,处理器52可以执行各种功能,包括但不限于通过与计算系统10类似的操作来配置可编程逻辑器件12。系统50可以通过在可编程逻辑器件12中采用一个或多个加速器来执行经协调的数据处理。
28.数据可以来源于网络、传感器或其他可能的数据源,并且数据可以通过数据传输的任何可行的方式(例如,以太网电缆53)流入系统50中。以太网电缆53可以被连接到可编程逻辑器件12的接收器子系统54,并且可以在接收器子系统54处接收数据。在一些实施例中,接收器子系统54可以被编程到可编程逻辑器件12的一个或多个区域控制电路46上。附加地或可替代地,接收器子系统54可以是可编程逻辑器件12的预分配的子系统。接收器子系统54可以接收数据并且准备接收到的数据以用于使用可编程逻辑器件12的其他子系统进行处理。附加地或可替代地,接收器子系统可以准备数据以供可编程逻辑区域32的部分重新配置配置文件使用。部分重新配置配置文件可以被定义为用于配置一个或多个可编程逻辑区域32的位流程序,该可编程逻辑区域32可以在运行时间被配置而不改变可编程逻辑
器件12的其他区域的配置。
29.接收到的数据可以在可编程逻辑器件12中被处理和/或被传递到处理器52上以用于处理。在处理器52和可编程逻辑器件12之间,可以通过各种互连方法或电路来发送和接收数据,举例来说,可以在系统50中使用外围组件快速互连(pcie)总线55。pcie总线55还可以用作可编程逻辑器件12和非易失性存储器板58之间的物理接口,该非易失性存储器板58包括一个或多个非易失性存储器块。经处理的数据可以然后被用作针对其他处理任务的输入,通过以太网电缆53的方式被传输到外部外围设备,或者可以被保存到存储器块上。
30.非易失性存储器板58可以是闪速存储器,由一个或多个存储器块组成。非易失性存储器板58可以包含位流程序等等,这些位流程序通过计算系统18被加载到存储器板58的存储器上,并且非易失性存储器板58可以使用位流程序以在每个系统上电或重置时对可编程逻辑器件12进行编程。位流程序可以包含用于数据处理、通过可编程逻辑器件12的数据路由和/或与作为可编程逻辑器件12的整体或不同段的可编程逻辑器件12相关联的锁相环时钟速度的指令。
31.可编程逻辑器件12可以利用子系统60以与各种外围设备通信。子系统60可以通过根据与使用中的协议相关联的规则的数据加密的方式对数据进行编码和解码,来执行到pcie总线55上的数据接收和发送。数据接收和发送子系统60可以是可编程逻辑器件12的子系统或被编程到可编程逻辑区域32上的部分重新配置配置文件。pcie总线55可以是图3所示的外围设备之间的物理链路,但是除了pcie总线55之外或替代pcie总线55,还可以使用其他可行的数据总线。
32.处理器52可以利用存储器57和高速缓冲存储器以用于数据处理。高速缓冲存储器可以被嵌入在处理器52芯片内,或者可以被嵌入在通信地连接到处理器52的单独的芯片内。最后一级高速缓存(llc)存储器56可以与系统50中的处理器52相关联。存储器57可以向处理器52提供用于处理任务的易失性存储器存储可用性。存储器57可以存在也可以不存在于基于系统50的功能、要求和设计的最终设计中。存储器57可以采用各种存储器形式和技术,例如但不限于双倍数据速率同步动态随机存取存储器(ddr)。
33.可编程逻辑器件12可以通过利用在可编程逻辑区域32上实现并通过可编程逻辑元件36执行的rcu 46或dcu 48来执行数据的处理。可编程逻辑器件12的一个或多个可编程逻辑区域32可以被编程以对一个或多个随机存取存储器(ram)59执行读取和/或写入指令。可以经由可编程逻辑器件12、通过利用存储器子系统61的方式以及通过可编程逻辑器件12的输入和/或输出引脚来存取ram 59。存储器子系统61可以包括可编程逻辑器件12的子系统或者在可编程逻辑器件12的可编程逻辑区域中配置的部分重新配置配置文件。高带宽存储器接口(hbm)62也可以在可编程逻辑器件12的一些实施例中被利用,该可编程逻辑器件12可以使用例如3-d堆叠dram用途或高性能计算。基于数据处理任务所需的存储器存取带宽等等,hbm 62的使用可以仅仅是示例并且对于设计者而言是可选的。
34.可编程逻辑器件12可以通过将多个区域控制单元46编程到用于经加速的数据的处理的可编程逻辑区域32上来执行实时的和并行的数据处理。数据处理加速器或加速器可以在可编程逻辑器件12(或另一个位置)内实现,以提供可编程逻辑器件12和相应的存储器块之间的接口。即,在从存储器中读取数据之后或者在将接收到的数据保存在存储器内之前,加速器可以执行某种程度的数据处理。该可重复的数据操纵可以被加载到可编程逻辑
器件12(或另一个位置)上,以从处理器52卸载处理操作,用于加速数据的存储/取回和/或处理器52的其他操作。加速器可以被定义为执行数据处理任务,例如但不限于数据加密、数据解密、数据压缩和数据解压缩。可以通过从存储器设备20中加载程序24的方式在可编程逻辑器件12上定义加速器。存储器设备20可以包括存储器板58或ram 59。此外,程序24可以包括用于加速器的实施方式或对所实现的加速器的定义的部分修改的指令。
35.处理器52可以执行可以使用llc 56的数据的顺序处理。可编程逻辑器件12可以采用高速缓冲存储器,也可以不采用高速缓冲存储器。系统存储器中的一致性使得系统能够适当地运作。intel的专有一致性互连协议intel ultra path interconnect(upi)64可以是针对系统50中的处理器52和可编程逻辑器件12之间的一致性使用的一致性互连。upi协议64可以采用各种电路来在诸如pcie总线55之类的电路的处理组件之间创建一致性接口。upi协议64可以由用于在电路组件或设备之间交换数据分组的一组规则组成。upi的使用可以作为示例,并且可以在系统50中使用任何其他可行的一致性互连以在由处理器52使用的存储器和可编程逻辑器件12之间施加一致性。
36.upi协议64可以是低延迟、点对点、一致性互连,其实现可扩展的多处理器系统,并且如本文所讨论的,可以用于将处理器和可编程逻辑器件集成到具有经扩展的一致性的单个系统中。upi协议64可以通过利用诸如缓存代理(ca)和归属代理(ha)之类的协议的一致性元素的方式来保持一致性互连。在具有保持共享的存储器位置的本地缓存副本的多个处理器的多处理系统中,缓存代理和归属代理可以将共享的存储器的本地修改反映到其他存储器上,以保持跨系统的一致性数据。ca可以创建对一致性存储器(例如,相应的处理器52中的llc 56)的读取和写入请求。ca还可以响应于其他处理器的upi代理获取高速缓冲存储器之间的一致性数据。相应的ha可以从每个相应的处理器的角度管理存储器交互。协同与通信存储器和相应的存储器控制器相关联的存储器子系统61,ha可以将物理存储器地址转化为信道地址(或相反)。处理器52中的至少一个中的缓存代理和归属代理可以被集成为缓存和归属代理。缓存和归属代理可以在处理器52和/或可编程逻辑器件12内进行探听,以实现系统50中的一致性。系统50可以实现跨分布式存储器和集成式存储器控制器二者的高速缓存一致性。
37.upi可以实现一个或多个加速器的一个或多个配置的修改。加速器可以在可编程逻辑器件12中实现,例如在可编程逻辑区域32中。加速器可以用于卸载可以以其他方式被处理器52执行的可重复任务,以减少处理器52上的负载,从而潜在地增加系统50中的处理和/或能量效率。
38.使用处理器52的归属和缓存代理,系统50可以扩展到可编程逻辑器件12中。归属和缓存代理可以用于在系统50的运行时间期间实现对加速器的动态修改的执行。换言之,upi协议代理可以将upi协议64的访问扩展到可编程逻辑区域32,并且因此,扩展到与相应的可编程逻辑器件12相关联的加速器和存储器块和/或控制器(例如,存储器子系统61)。经扩展的upi协议64提供对可编程逻辑器件12的这样的组分(constituent)的访问,以使得处理器52能够与系统50的其余upi连接的存储器一致地且内联地执行与可编程逻辑器件12(例如,ram 59)相关联的数据的处理和操纵。经扩展的upi协议64可以利用可编程逻辑器件12中的upi堆栈66。每个upi堆栈66可以负责可靠的数据发送和接收以及对到相应的可编程逻辑器件12中的upi协议64的数据流控制。
39.图4提供了相应的处理器52和相应的可编程逻辑器件12之间的通信布置63的功能框图。通信布置63包括在系统50的处理器52和可编程逻辑器件12之间的通信中由可编程逻辑器件12对数据的内联处理。
40.通信布置63可以使用upi堆栈66和/或fpga接口单元(fiu)72来实现跨系统50的经扩展的一致性。
41.upi堆栈66可以包含upi链路层68和upi物理层70。upi链路层68可以实现两个upi协议或路由实体之间的可靠的数据传输。upi链路层68还可以控制可编程逻辑器件12和处理器52之间的流。upi链路层68可以用于防止协议死锁以及其他责任。upi物理层70线路承载信号和/或电路/逻辑,以支持经由upi协议64在数据的发送和接收中使用的辅助特征。在一些实施例中,upi物理层70可以采用pcie总线55的形式,作为upi链路层68功能的基础层。upi物理层70和upi链路层68可以为upi代理通过系统50进行探听提供基础以提供与处理器52的一致性互连。
42.除了其他事物之外,fiu 72还可以包括fiu子单元74,该fiu子单元74可以实现使用基于fiu的协议在可编程逻辑器件12和处理器52之间进行数据传输。因此,fiu接口76可以用作fiu子单元74和处理器52之间的接口或桥接器以用于数据传输。
43.如图所示,可编程逻辑器件12可以使用fiu 72和/或upi堆栈66被互连到寄存器传输级(rtl)块84。在一些实施例中,rtl块84可以使用从程序24加载到可编程逻辑器件12的可编程逻辑区域32中的配置来体现。rtl块84可以用于将数据发送和/或接收到诸如处理器52或存储器子系统61之类的外部单元。
44.此外,处理器52可以作为片上系统(soc)被集成到系统50。在这样的实施例中,处理器52可以被集成为硬处理器系统(hps)86。如以下所讨论的,hps 86可以用于控制rtl块84如何被配置为控制由rtl块84执行的内联数据修改。例如,rtl块84的配置可以被设置为执行针对任务(例如,加密/解密、压缩/解压缩等)的不同的参数,以加速系统50的操作。
45.如图所示,存储器子系统61可以包括存储器控制器80(例如,双倍数据速率(ddr)存储器控制器)。然而,存储器控制器80可以包括任何合适的存储器类型。存储器控制器80可以使得可编程逻辑器件12(经由rtl块84)能够将数据发送或接收到对应的存储器(例如,ram 59)。
46.如前所述,upi协议64可以使得upi协议代理能够访问存储器子系统61和存储器控制器80。实际上,upi协议64可以实现对rtl块84的配置的访问。此外,存储器控制器80可以通过在物理存储器地址和协议代理之间建立连接来将探听能力提供给协议代理。前述技术可以实现对耦合到可编程逻辑器件12的存储器块的一致性访问。即,耦合到可编程逻辑器件12的存储器块可以是可由一致性互连的处理器52访问和修改的。因此,耦合到可编程逻辑器件12的这种存储器(例如,ram 59)可以作为一致性系统存储器供所有处理器52使用。
47.在一些实施例中,hps 86可以将指令88提供给可编程逻辑器件12以修改rtl块84。hps 86可以利用指令88t,以通过修改对加速器的编程和/或将加速器的替代编程加载到可编程逻辑区域32中来在多个加速器设置之间改变加速器的配置。
48.hps 86可以接收修改指令88,以利用或修改在rtl块84中实现的加速器。用户可以通过应用程序接口(api)向处理器或hps 86提供指令88。api可以为用户提供接口。api可以接收使用高级编程语言(例如,c编程语言和其他高级编程语言)的指令。hps 86可以用于将
用户提供的指令转化为诸如硬件描述语言之类的低级编程语言,该低级编程语言可以由逻辑编程语言12使用以实现对rtl块84的改变。例如,hps 86可以实现编译器以执行这样的转化。因此,使用upi协议64和使用hps 86的动态编程,系统50可以在系统运行时间期间提供可编程逻辑器件12的动态编程,这可以增加系统的灵活性。
49.上面描述的经扩展的upi协议访问可以将可编程逻辑器件12和相应的组成块暴露给用户。即,用户可以通过使用高级编程语言将指令提供给hps 86来部分地修改或重新配置可编程逻辑器件12。前述方法可以实现由系统18在系统运行时间期间动态地对可编程逻辑器件12进行部分重新配置或修改。用户指令88可以修改rtl块84中使用的以用于存储数据、处理数据或将数据传输到存储器子系统61等等的处理技术。通过允许通过api 90的指令88的方式对可编程逻辑区域32进行部分修改或重新配置,经扩展的upi协议访问还可以增加系统50的设计灵活性。
50.在特定实施例中,用户指令88可以涉及使得rtl块84能够作为加速器执行任务。指令可以是可由hps 86读取的计算机可读指令。用户指令88可以涉及配置rtl块84以使用特定的技术加密数据。数据加密可以通过加速器的方式来执行,并且多于一个加速器可以可用于不同级别的数据加密。用于数据加密的各种配置可以以位流数据的形式驻留在存储器内,以供要在rtl块84中实现的用户指令选择。各种加密加速器也可以被预先实现到rtl块84上,并且用户指令可以针对数据加密的所选级别修改可编程逻辑区域32的部分。数据加密配置可以包括用于数据的加密、无损加密或有损加密或加密技术的其他分类的各种级别的功耗。
51.附加地或可替代地,用户指令88可以涉及用于执行数据解密的加速器。数据解密可以使用rtl块84来执行。多于一个加速器配置可以对于不同级别的数据解密是可用的。用于数据解密的各种加速器可以以位流数据的形式驻留在存储器中,该位流数据将通过要在rtl块84中实现的用户指令的方式来选择。各种解密加速器也可以在rtl块84中被预先实现,或者可以在运行时间处被重新配置。数据加密配置可以包括用于数据的解密、无损解密或有损解密或解密技术的其他分类的各种级别的功耗。除了加密和解密之外或者替代加密和解密,rtl块84还可以被配置为不同级别的压缩/解压缩。例如,当工作负载较低时,可以使用第一级压缩/解压缩,但是当工作负载较高时,可以使用第二级压缩/解压缩。除了不同级别的加密/解密或压缩/解压缩之外,其他配置也可以用于rtl块84。
52.图5可以描述由处理器52实现的过程92。系统50的处理器52可以利用upi协议64来访问和/或修改用于rtl块84的可编程逻辑器件12的配置。修改可以包括基于系统50的工作负载来决定利用针对rtl块84的特定配置。处理器52可以从确定系统50、处理器52和/或可编程逻辑器件12的工作负载开始(框94)。工作负载可以通过确定以下各项来定义:要被处理的数据量、在可编程逻辑器件12中使用的触发器(flip-flop)的数量、所生成的热量、处理的延时,或用于测量系统50、处理器52和/或可编程逻辑器件12的工作负载的任何其他合适的参数等等。
53.处理器52可以将所确定的工作负载与一个或多个先前定义的阈值进行比较(框96)。当工作负载低于阈值时,第一配置被加载到rtl块84中(框98)。当工作负载不低于阈值时,第二配置被加载到rtl块84中(框100)。第一配置可以是第一级加密/解密或压缩/解压缩。第二配置可以是与第一配置相比消耗较少的处理资源的第二级加密/解密或压缩/解压
缩。尽管过程92的所示实施例包括单个阈值,但是其他实施例可以采用多个阈值来与具有多于两个配置的所确定的工作负载进行比较。例如,除了阈值之外,还可以存在一种配置。
54.可编程逻辑器件12可以是数据处理系统(例如,系统50)或者可以是数据处理系统的组件。例如,可编程逻辑器件12可以是图6所示的数据处理系统102的组件。数据处理系统102包括处理器104(例如,处理器52)、存储器和/或存储电路106(例如,ram 59)以及网络接口108,并且可以呈现可以与系统50相关联的可行的实施例。数据处理系统102可以包括更多或更少的组件(例如,电子显示器、用户接口结构、专用集成电路(asic))。处理器104可以包括任何合适的处理器,例如处理器或精简指令处理器(例如,精简指令集计算机(risc)、高级risc机器(arm)处理器),其可以管理针对数据处理系统102的数据处理请求(例如,以执行机器学习、视频处理,语音识别、图像识别、数据压缩、数据库搜索排名、生物信息学、网络安全模式识别、空间导航等)。存储器和/或存储电路106可以包括随机存取存储器(ram)、只读存储器(rom)、一个或多个硬盘驱动器、闪速存储器等。存储器和/或存储电路106可以被认为是可编程逻辑器件12的外部存储器,并且可以保存要由数据处理系统102处理的数据。在一些情况下,存储器和/或存储电路106还可以存储用于对可编程逻辑器件12进行编程的配置程序(例如,位流)。网络接口108可以使得数据处理系统102能够与其他电子设备通信。数据处理系统102可以包括若干不同的封装,或者可以被包含在单个封装基板上的单个封装中。
55.在一个示例中,数据处理系统102可以是处理多种不同的请求的数据中心的一部分。例如,数据处理系统102可以经由网络接口108接收数据处理请求,以执行机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排名、生物信息学、网络安全模式识别、空间导航或某个其他专门的任务。处理器104可以使得编程可编程逻辑器件12的可编程逻辑结构被用与所请求的任务相关的特定的加速器编程。例如,处理器104可以命令存储在存储器/存储电路106上或缓存在可编程逻辑器件12的扇区对齐的存储器中的配置数据(位流)被编程到可编程逻辑器件12的可编程逻辑结构中。配置数据(位流)可以表示用于与所请求的任务相关的特定的加速器功能的电路设计。由于可编程逻辑结构的高密度、大量的扇区对齐的存储器与可编程逻辑结构的接近性或者此处描述的可编程逻辑器件12的其他特征,因此可编程逻辑器件12可以迅速地协助数据处理系统102执行所请求的任务。实际上,在至少一个示例中,加速器可以通过使用扇区对齐的存储器迅速地访问和处理加速器中的大量的数据来协助不到几毫秒(例如,在微秒的量级上)的语音识别任务。
56.虽然本公开所阐述的实施例可能易于受到各种修改和替代形式的影响,但是具体实施例已经在附图中通过示例的方式被示出并且已经在本文中被详细地描述。然而,应当理解,本公开并不旨在局限于所公开的特定的形式。本公开将涵盖落入由所附权利要求定义的本公开的精神和范围内的所有修改、等同物和替代方案。
57.本文所提出和要求保护的技术被引用并且被应用到具有实际性质的物质对象和具体示例,其明显地改进了现有技术领域,并且因此不是抽象的、无形的或纯理论的。此外,如果附于本说明书的任何权利要求包含被指定为“用于[执行][功能]
……
的单元”或“用于[执行][功能]
……
的步骤”的一个或多个元素,则这样的元素旨在根据美国专利法第112条f款进行解释。然而,对于包含以任何其他方式指定的元素的任何权利要求,这样的元素都旨在不根据美国专利法第112条f款进行解释。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1