用于可编程逻辑器件的配置或数据高速缓存的制作方法

文档序号:18214083发布日期:2019-07-19 22:30阅读:210来源:国知局
用于可编程逻辑器件的配置或数据高速缓存的制作方法

本公开涉及对用于快速编程到可编程逻辑器件上的配置程序或数据进行高速缓存。

本部分意图向读者介绍可能与下面描述和/或要求保护的本公开的各种方面有关的技术的各种方面。相信本讨论有助于向读者提供背景信息以便于更好地理解本公开的各种方面。因此,可以理解的是,将从这个角度而不是作为现有技术的许可来阅读这些陈述。

可编程逻辑器件是可被编程以实行各种各样操作的一类集成电路。可编程逻辑器件可以包括由被称作配置随机存取存储器(cram)的一种形式的存储器编程的可编程逻辑元件。因此,为了将电路设计编程到可编程逻辑器件中,可以将电路设计编译成比特流并且编程到cram单元中。被编程到cram单元中的值定义了可编程逻辑器件的可编程逻辑元件的操作。

可编程逻辑器件的高度灵活的性质使它们极好地适合于加速许多计算任务。因此,可编程逻辑器件越来越多地被用作用于机器学习、视频处理、语音识别、图像识别以及许多其他高度专业化的任务尤其是在运行在处理器上的软件中太慢或效率太低的那些的加速器。此外,在被称作部分重新配置的过程中,可以按请求将定义了特定加速器功能的比特流编程到可编程逻辑器件中。然而,即使这样也花费一些时间量来实行。尽管部分重新配置可以非常快速地发生(大约几毫秒),但是一些任务可能要求甚至更快的计算(大约几微秒或更快)。

附图说明

在阅读以下详细描述并且在参考附图时,可以更好地理解本公开的各种方面,在附图中:

图1是根据实施例的利用电路设计进行编程的可编程逻辑器件的框图;

图2是根据实施例的包括其中结构管芯(fabricdie)与基部管芯(basedie)垂直堆叠的可编程逻辑器件的封装的框图;

图3是根据实施例的可编程逻辑器件的示例逻辑布置的框图;

图4是示出了根据实施例的可编程逻辑器件的结构管芯和可编程逻辑器件的基部管芯的框图,该结构管芯包含可编程逻辑结构,该基部管芯主要包含操作可编程逻辑结构的非结构电路;

图5是根据实施例的结构管芯的示例拓扑结构的框图;

图6是根据实施例的基部管芯的示例拓扑结构的框图;

图7是根据实施例的基部管芯的扇区对齐存储器的示意性框图,该扇区对齐存储器可以支持针对结构管芯的对应扇区的快速配置和/或高速缓存;

图8是根据实施例的用以对接本地存储器和可编程逻辑结构以使得能够实现使用扇区控制器的快速配置和/或高速缓存的电路的框图;

图9是根据实施例的用以对接存储器和可编程逻辑结构以使得能够实现使用扇区控制器和用于流水线化的存储器管理器的快速配置和/或高速缓存的电路的框图;

图10是根据实施例的用于实行针对可编程逻辑器件的配置程序的快速配置和/或高速缓存的方法的流程图;

图11是根据实施例的用于在配置可编程逻辑器件之前对配置程序进行预先高速缓存的方法的流程图;

图12是图示了根据实施例的使用图8的电路,在高速缓存未命中时对配置程序进行高速缓存的示例的框图;

图13是图示了根据实施例的使用图8的电路,在高速缓存命中时利用来自本地存储器的配置程序对可编程逻辑器件进行快速配置的示例的框图;

图14是图示了根据实施例的使用图8的电路对配置程序进行预先高速缓存的示例的框图;

图15是图示了根据实施例的使用图9的电路,在高速缓存未命中时对配置程序进行高速缓存的示例的框图;

图16是图示了根据实施例的使用图9的电路,在高速缓存命中时利用来自本地存储器的配置程序对可编程逻辑器件进行快速配置的示例的框图;

图17是图示了根据实施例的使用图9的电路对配置程序进行预先高速缓存的示例的框图;

图18是根据实施例的用于在可编程逻辑器件的一个配置与可编程逻辑器件的另一配置之间快速切换的方法的流程图;以及

图19是根据实施例的可以使用可编程逻辑器件以快速响应数据处理请求的数据处理系统的框图。

具体实施方式

下面将描述一个或多个具体实施例。为了提供这些实施例的简明描述,并未在说明书中描述实际实现方式的全部特征。可以领会的是,在任何这样的实际实现方式的开发中(如在任何工程或设计项目中),必须做出众多实现方式特定的决策以实现开发者的具体目标,该目标诸如遵守系统相关和业务相关的约束,该约束可能逐实现方式而变化。此外,可以领会的是,这样的开发努力可能是复杂且耗时的,但是无论如何对于具有本公开的益处的普通技术人员来说是设计、制造和加工的例行任务。

在介绍本公开的各种实施例的元件时,冠词“一”、“一个”和“该”意图意味着存在一个或多个元件。术语“包括”、“包含”和“具有”意图是包括的,并且意味着可能存在除所列元件之外的附加元件。附加地,应当理解的是,对本公开的“一个实施例”或“实施例”的引用并不意图被解释为排除也结合了所记载特征的附加实施例的存在。此外,短语a“基于”b意图意味着a至少部分地基于b。此外,除非另行明确陈述的,术语“或者”意图是包括的(例如,逻辑的or)而不是排他的(例如,逻辑的xor)。换言之,短语a“或者”b意图意味着a、b或者a和b两者。

可编程逻辑器件的高度灵活的性质使它们极好地适合于加速许多计算任务。因此,可编程逻辑器件越来越多地被用作用于机器学习、视频处理、语音识别、图像识别以及许多其他高度专业化的任务尤其是在运行在处理器上的软件中太慢或效率太低的那些的加速器。此外,在被称作部分重新配置的过程中,可以按请求将定义特定加速器功能的比特流编程到可编程逻辑器件中。为了增加在可编程逻辑器件上可以发生配置(包括部分重新配置)的速度,以及为了更好地控制功耗、减少加工成本以及其他的,本公开描述了采用可编程逻辑器件的系统和方法,可以使用被高速缓存在本地存储器中的配置程序来对该可编程逻辑器件进行快速配置,该本地存储器对可编程逻辑器件结构是本地可访问的。本地存储器可以能够对用于快速编程的程序(例如,比特流、数据和/或配置)进行高速缓存,并且因此可以被称为“结构高速缓存存储器”。在一些情况下,结构高速缓存存储器可以与可编程逻辑结构的特定扇区相关联,并且因此可以被描述为“扇区对齐存储器”。

在一些情况下,可编程逻辑器件可以由至少两个单独的管芯组成。可编程逻辑器件可以包括:第一管芯,其主要包含可编程逻辑结构;以及第二管芯,其包含用以支持可编程逻辑结构的操作的结构支持电路。例如,第二管芯可以包含可以操作可编程逻辑结构的至少一些结构支持电路(例如,第二管芯的结构支持电路对于第一管芯的可编程逻辑结构的操作可能是至关重要的)。因此,结构支持电路可以包括:器件控制器(有时被称为安全器件管理器(sdm))、扇区控制器(有时被称为本地扇区管理器(lsm))、片上网络(noc)、片上配置网络(cnoc)、数据路由电路、被用来对配置程序(比特流)或数据进行存储和/或高速缓存的本地(例如,扇区化或扇区对齐)存储器、被用来对可编程逻辑结构进行编程的存储器控制器、用于可编程逻辑结构的输入/输出(i/o)接口或模块、外部存储器接口(例如,用于高带宽存储器(hbm)器件)、嵌入式处理器(例如,加利福尼亚州圣克拉拉的英特尔公司的嵌入式intel®xeon®处理器)或连接到处理器的接口(例如,对加利福尼亚州圣克拉拉的英特尔公司的intel®xeon®处理器的接口)、电压控制电路、热监控电路、去耦电容器、功率钳或静电放电电路以及其他的,仅列举可能存在于第二管芯上的几个电路元件。实际上,在一些实施例中,第一管芯可以完全或几乎完全包含可编程逻辑结构,并且第二管芯可以包含控制可编程逻辑结构的全部或几乎全部结构支持电路。

结构支持电路可以包括被用来对配置程序(例如,比特流)进行高速缓存的本地存储器。该被高速缓存的配置程序可以被用来快速配置可编程逻辑器件,因为在本地存储器与可编程逻辑结构之间可能发生的物理距离(和/或事务的数量)可以远小于在外部存储器与可编程逻辑器件之间可能发生的物理距离(和/或事务的数量)。本地存储器也可以被扇区化并且与可编程逻辑结构的对应扇区相关联。这可以允许本地存储器被保护以免被可编程逻辑器件的其他扇区访问。此外,取决于包含可编程逻辑结构的第一管芯和包含结构支持电路(例如,本地存储器)的第二管芯的物理布置,本地存储器可以被流水线化(pipeline)到可编程逻辑结构的配置存储器(例如,配置随机存取存储器(cram)或非易失性配置存储器)中,从而允许甚至更快的配置。

考虑到这一点,图1图示了可以采用可重新配置可编程逻辑器件12的系统10的框图,该可重新配置可编程逻辑器件12可以将配置程序高速缓存在本地存储器中以用于快速配置或重新配置。使用系统10,设计者可以在集成电路上实现电路设计功能性,该集成电路诸如例如现场可编程门阵列(fpga)之类的可重新配置可编程逻辑器件12。设计者可以使用设计软件14(诸如加利福尼亚州圣克拉拉的英特尔公司的一个版本的intel®quartus®)来实现要被编程到可编程逻辑器件12上的电路设计。设计软件14可以使用编译器16来生成由配置数据(比特流)18定义的低级电路设计,该低级电路设计有时被称为程序对象文件和/或配置程序,其对可编程逻辑器件12进行编程。因此,编译器16可以向可编程逻辑器件12提供表示电路设计的机器可读指令。例如,可编程逻辑器件12可以接收一个或多个配置程序(比特流)18,其描述应该存储在可编程逻辑器件12中的硬件实现方式。可以将配置程序(例如,比特流)18作为配置程序20而编程到可编程逻辑器件12中。在一些情况下,配置程序20可以表示用以针对机器学习、视频处理、语音识别、图像识别或其他高度专业化任务而实行的加速器功能。

为了执行本公开的系统和方法,可编程逻辑器件12可以采用任何适合的形式,该形式包括具有足够容量和带宽来对可编程逻辑结构进行快速重新编程的本地存储器(例如,利用不同配置程序(例如,比特流)对可编程逻辑结构的可配置随机存取存储器快速重新编程)。在一些情况下,可以由扇区对来自与该扇区相关联的本地存储器的可编程逻辑结构的区域进行编程,该区域在本公开中被称为“扇区对齐存储器”。扇区对齐存储器可以并入到集成电路管芯上的可编程逻辑器件中,该集成电路管芯与保持扇区可编程逻辑结构的集成电路管芯分离但是在附近,如将在下面进一步描述的。如果扇区对齐存储器具有存储用于对可编程逻辑结构的该扇区进行编程的全部或部分配置数据(比特流)的能力,则扇区对齐存储器也可以并入到包含可编程逻辑结构的集成电路管芯中。

因此,可编程逻辑器件12可以具有两个单独的集成电路管芯,其中可编程逻辑结构中的至少一些与操作可编程逻辑结构的结构支持电路中的至少一些分离,该结构支持电路可以包括诸如结构高速缓存存储器和/或扇区对齐存储器之类的本地存储器。在图2中示出了可编程逻辑器件12的一个示例,但是可以使用任何适合的可编程逻辑器件,其具有用作结构高速缓存存储器的足够带宽和容量的本地存储器。在图2的示例中,可编程逻辑器件12包括经由微凸起26彼此连接的结构管芯22和基部管芯24。尽管结构管芯22和基部管芯24在图2中以一对一关系出现,但是可以使用其他关系。例如,单个基部管芯24可以附接到若干个结构管芯22,或者若干个基部管芯24可以附接到单个结构管芯22,或者若干个基部管芯24可以附接到若干个结构管芯22(例如,沿着x-和/或y-方向以交错的模式)。外围电路28可以附接到基部管芯24、嵌入到基部管芯24中和/或布置在基部管芯24的顶部上,并且散热片30可以被用来减少可编程逻辑器件12上的热量的积累。如描画的,散热片30可以出现在封装的上方和/或下方(例如,作为双面热沉)。基部管芯24可以经由c4凸起34附接到封装衬底32。在图2的示例中,两对结构管芯22和基部管芯24被示出经由硅桥36(例如,嵌入式多管芯互连桥(emib))和在硅桥接口39处的微凸起38彼此通信地连接。

以组合的形式,结构管芯22和基部管芯24可以作为诸如现场可编程门阵列(fpga)之类的可编程逻辑器件进行操作。例如,结构管芯22和基部管芯24可以作为fpga40以组合的形式进行操作,如在图3中示出的。应当理解的是,当结构管芯22和基部管芯24两者以组合的形式进行操作时,在图3中示出的fpga40意图表示电路的类型和/或可编程逻辑器件的逻辑布置。换言之,可以在结构管芯22中找到在图3中示出的fpga40的电路中的一些,并且可以在基部管芯24中找到在图3中示出的fpga40的电路中的一些。此外,出于本示例的目的,fpga40被称为fpga,但是应当理解的是,该器件可以是任何合适类型的可编程逻辑器件(例如,专用集成电路和/或专用标准产品)。

在图3的示例中,fpga40可以包括收发器电路(hssi)44,以用于驱散fpga40的信号以及用于接收来自其他器件的信号。收发器电路(hssi)可以是结构管芯22、基部管芯24或完全分离的管芯的部分。互连源46可以被用来通过fpga40路由诸如时钟或数据信号之类的信号。图3的fpga40被示出为被扇区化,这意味着可编程逻辑源可以通过许多分立的可编程逻辑扇区48而进行分布。每一个可编程逻辑扇区48可以包括许多可编程逻辑元件50,该可编程逻辑元件50具有由配置存储器52(例如,配置随机存取存储器(cram))定义的操作。可编程逻辑元件50可以包括组合的或顺序的逻辑电路。例如,可编程逻辑元件50可以包括查找表、寄存器、多路复用器、路由线等。设计者可以对可编程逻辑元件50进行编程以实行各种各样期望的功能。电源54可以向配电网络(pdn)56提供电压和电流源,该配电网络56将电力分配给fpga40的各种组件。操作fpga40的电路使得从配电网络56提取电力。

在fpga40上可以存在任何合适数量的可编程逻辑扇区48。实际上,虽然此处示出了29个可编程逻辑扇区48,但是应当领会的是,在实际实现方式中可以出现更多或更少个(例如,在一些情况下,大约50、100或1000个扇区或更多个)。每一个可编程逻辑扇区48可以包括控制可编程逻辑扇区48的操作的扇区控制器(sc)58。每一个扇区控制器58可以与器件控制器(dc)60通信。每一个扇区控制器58可以接受来自器件控制器60的命令和数据,并且可以基于来自器件控制器60的控制信号从其配置存储器52读取数据并且将数据写入到其配置存储器52中。除了这些操作之外,扇区控制器58和/或器件控制器60可以被扩充有众多附加的能力。这样的能力可以包括协调本地结构内(in-fabric)存储器(例如,被用于数据存储的本地结构存储器或cram)与关联于该特定可编程逻辑扇区48的扇区对齐存储器之间的存储器事务、解密配置数据(比特流)18以及对读取和写入进行本地排序以在配置存储器52上实现错误检测和校正,并且对测试控制信号进行排序以实现各种测试模式。

扇区控制器58和器件控制器60可以被实现为状态机和/或处理器。例如,扇区控制器58或器件控制器60的每一个操作可以被实现为在包含控制程序的存储器中的单独例程。该控制程序存储器可以被安装在只读存储器(rom)中或者存储在诸如随机存取存储器(ram)之类的可写存储器中。rom可以具有的大小比将被用来存储每一个例程的仅一个拷贝的大小更大。这可以允许每一个例程具有多个变体,这取决于本地控制器可以被放置到其中的“模式”。当控制程序存储器被实现为随机存取存储器(ram)时,可以利用新例程来写ram,以将新的操作和功能性实现到可编程逻辑扇区48中。这可以以有效且易于理解的方式来提供可用的可扩展性。这可能是有用的,因为新的命令可能以器件控制器60与扇区控制器58之间的仅少量通信的代价而在扇区内引起大量本地活动。

因此,每一个扇区控制器58可以与器件控制器60通信,该器件控制器60可以协调扇区控制器58的操作并且传送从fpga器件40外部发起的命令。为了支持该通信,互连源46可以充当器件控制器60与每一个扇区控制器58之间的网络。互连源可以支持器件控制器60与每一个扇区控制器58之间的各种各样的信号。在一个示例中,可以作为通信包来传输这些信号。

fpga40可以是电编程的。利用电编程布置,可编程元件50可以包括一个或多个逻辑元件(导线、栅极、寄存器等)。例如,在编程期间,使用引脚44和输入/输出电路42将配置数据加载到配置存储器52中。在一个示例中,配置存储器52可以被实现为配置随机存取存储器(cram)单元。在本文中描述的基于ram技术的配置存储器52的使用意图仅是一个示例。此外,配置存储器52可以遍及fpga40的各种可编程逻辑扇区48进行分布(例如,作为ram单元)。配置存储器52可以提供对应的静态控制输出信号,其控制相关联的可编程逻辑元件50或互连源46的可编程组件的状态。配置存储器52的输出信号可以被应用于金属氧化物半导体(mos)晶体管的栅极,其控制可编程逻辑元件50或互连源46的可编程组件的状态。

如上文陈述的,在图3中示出的fpga40的逻辑布置可以由结构管芯22和基部管芯24的组合得到。可以以任何适合的方式划分结构管芯22和基部管芯24的电路。在一个示例中,在图4中以框图形式中示出的,结构管芯22主要包含诸如可编程逻辑元件50和配置存储器52之类的可编程逻辑结构源。在一些情况下,这也可能需要某些结构控制电路,诸如扇区控制器(sc)58或器件控制器(dc)60。基部管芯24可以包括用以操作可编程逻辑元件50和配置存储器52的支持电路。在此示出的,基部管芯24包括扇区1支持电路70a和扇区2支持电路70b,以支持结构管芯22的可编程逻辑元件50和配置存储器52的两个对应扇区。基部管芯24还可以包括用于结构管芯22的其他扇区的支持电路。

因此,尽管结构管芯22可以主要包括诸如可编程逻辑元件50和配置存储器52之类的可编程逻辑结构源,但是基部管芯24可以包括:器件控制器(dc)60、扇区控制器(sc)58、片上网络(noc)、片上配置网络(cnoc)、数据路由电路、被用来对配置程序(比特流)或数据进行存储和/或高速缓存的扇区对齐存储器、被用来对可编程逻辑结构进行编程的存储器控制器、用于可编程逻辑结构的输入/输出(i/o)接口或模块、外部存储器接口(例如,用于高带宽存储器(hbm)器件)、嵌入式处理器(例如,加利福尼亚州圣克拉拉的英特尔公司的嵌入式intel®xeon®处理器)或用以连接到处理器的接口(例如,对加利福尼亚州圣克拉拉的英特尔公司的intel®xeon®处理器的接口)、电压控制电路、热监控电路、去耦电容器、功率钳和/或静电放电(esd)电路以及其他的,仅列举可能存在于基部管芯24上的几个元件。应当理解的是,可以是基部管芯24的结构支持电路的部分的这些元件中的一些可以附加地或替换地是结构管芯22的一部分。例如,器件控制器(dc)60和/或扇区控制器(sc)58可以是结构管芯22的部分。

尽管图4表示了其中结构管芯22主要包含在其中大多数其他组件位于基部管芯24中的情况下的可编程逻辑结构的示例,但是结构管芯22可以包含其他组件中的一些以支持可编程逻辑结构。因此,在一些实施例中,结构管芯22可以包括下述各项中的一个或多个:器件控制器(dc)60、扇区控制器(sc)58、片上网络(noc)、片上配置网络(cnoc)、数据路由电路、被用来对配置程序(比特流)或数据进行存储和/或高速缓存的扇区对齐存储器、被用来对可编程逻辑结构进行编程的存储器控制器、用于可编程逻辑结构的输入/输出(i/o)接口或模块、外部存储器接口(例如,用于高带宽存储器(hbm)器件)、嵌入式处理器(例如,加利福尼亚州圣克拉拉的英特尔公司的嵌入式intel®xeon®处理器)或用以连接到处理器的接口(例如,对加利福尼亚州圣克拉拉的英特尔公司的intel®xeon®处理器的接口)、电压控制电路、热监控电路、去耦电容器、功率钳和/或静电放电(esd)电路,以及可以布置在基部管芯24上的其它元件。

由图5和图6示出了结构管芯22和基部管芯24的一个示例物理布置。在图5中,结构管芯22被示出包含结构扇区80的阵列,该结构扇区80包括结构源82(例如,由cram编程的可编程元件和/或诸如扇区控制器(sc)58或器件控制器(dc)60之类的某些结构控制电路)以及接口电路84。接口电路84可以包括数据路由和/或时钟源,或者可以包括对基部管芯24上的数据路由和/或时钟源的接口。因此,接口电路84可以与微凸起(ubump)接口连接以连接到基部管芯24。

图6提供了基部管芯24的互补布置。基部管芯24可以表示具有由外围电路28和硅桥接口39包围的若干个扇区90的有源中介层(interposer)。每一个扇区90可以包括各种各样的结构支持电路,诸如扇区对齐存储器92、存储器控制电路93、非用户输入控制电路94、非用户输出控制电路95、诸如全集成电压调节器(fivr)96之类的电压调节器、一个或多个热传感器97、数据和配置路由器98、和/或数据或配置路径99。存储器控制电路93可以被用来对结构管芯22的扇区对齐存储器92、cram或其两者进行编程。非用户输入控制电路94和非用户输出控制电路95可以允许扇区90的电路交换数据和/或控制信号(例如,经由可配置数据路由片上网络(noc)或片上配置网络(cnoc))。在一个示例中,非用户输入控制电路94和非用户输出控制电路95可以作为针对对应的结构扇区80的扇区控制器(sc)58进行操作(如在图5中示出的)。fivr96和一个或多个热传感器97可以被用来向对应的结构扇区80提供期望的电压(如在图5示出的),从而使得能够选择性地按比例放大或缩小或移除电压,这取决于电力和热规格(例如,至少部分地基于如由热传感器97测量的温度和/或根据动态电压和频率缩放(dvfs)方案)。即使热传感器97与可编程逻辑结构元件的管芯处于分离的管芯中,当基部管芯24如在该示例中那样直接邻近结构管芯22时,由基部管芯24中的热传感器97测量的温度可以足够好地对应于结构管芯22以允许基于温度的操作(例如,关闭对应的结构扇区80的电力以防止永久拒绝服务(pdos)条件)。

通过垂直地对齐结构管芯22和基部管芯24,位于基部管芯24中的存储器可以是对结构管芯22的结构扇区80并行地可访问的。图7示出了其中扇区对齐存储器92可以包含在基部管芯24中的示例。扇区对齐存储器92可以是对结构管芯22的相应结构扇区80可访问的,并且可以包含用户数据(由被编程到基部管芯24的可编程逻辑结构中的电路设计生成或可访问的)或者可以被用来对基部管芯24的可编程逻辑结构进行编程的配置数据。在图7的示例中,结构扇区80可以访问扇区对齐存储器92的具体区域。例如,存在可以同时(例如,并行地)被n个对应的结构扇区80访问的扇区对齐存储器92的n个区域。在一些情况下,扇区对齐存储器92可以是对一个以上的结构扇区80可访问的,或者扇区对齐存储器92的多个扇区可以是对单个结构扇区80可访问的。扇区对齐存储器92在图7中被示为垂直堆叠存储器。这可以允许大量存储器位于基部管芯24内。然而,在一些实施例中,扇区对齐存储器92可以占据基部管芯24的单个平面。

无论其精确放置如何,扇区对齐存储器92可以被定位得足够接近于可编程逻辑器件12的可编程逻辑结构的特定区域,以能够提供非常快速的数据传送。这可以使得扇区对齐存储器92能够被用于对可以被编程到可编程逻辑结构中的数据和/或配置程序进行高速缓存。可以使用扇区对齐存储器92的电路的一个示例出现在图8中。在图8中示出的各种组件可以位于单个管芯中,或者可以通过若干个管芯进行分布(例如,通过结构管芯22或基部管芯24进行分布)。实际上,当可编程逻辑器件12包括结构管芯22和基部管芯24时,可以按需要在结构管芯22和基部管芯24中的至少一个中找到由图8的框图表示的电路中的每个元件。然而,在许多情况下,扇形对齐存储器92可能具有在结构管芯22中可能不适合的足够高的容量,并且因此其可以位于基部管芯24中。

在图8中示出的电路包括器件控制器(dc)60,其可以接收配置数据(比特流)18以及其他的。配置数据(比特流)18可以表示配置数据,其可以对可编程逻辑元件(fpga结构)50的特定扇区的配置存储器(cram)52进行编程。器件控制器60可以接收来自外部数据源(例如,外部数据存储设备或外部存储器设备)的配置数据(比特流)18,并且可以经由片上配置网络(cnoc)100或任何其他适合的路径将配置数据(比特流)18引导到特定扇区的扇区控制器(sc)58。

路由电路102(例如,多路复用器)可以经由主数据通路104将配置数据(比特流)18提供给扇区控制器(sc)58。配置数据(比特流)18可以通知扇区控制器(sc)58是接收来自cnoc100的配置数据(比特流)18的附加数据还是从扇区对齐存储器92获得它,和/或是否将配置数据(比特流)18高速缓存或预先高速缓存(例如,在高速缓存预取中)到扇区对齐存储器92中。在一个示例中,配置数据(比特流)18可以包含可以被加密的命令,以指导扇区控制器(sc)58是接收来自cnoc100的配置数据(比特流)18的附加数据还是从扇区对齐存储器92获得它。在另一示例中,配置数据(比特流)18的一部分可以具有唯一地标识配置数据(比特流)18的标识序列(例如,唯一序列、散列、加密值、唯一前导码,属于特定配置数据(比特流)18的初始比特集)。根据该唯一序列,扇区控制器(sc)58可以识别出在扇区对齐存储器92中先前接收并且高速缓存了相同配置数据(比特流)18,并且因此可以从扇区对齐存储器92获得配置数据(比特流)18的数据。扇区控制器(sc)58可以独立地管理在扇区对齐存储器92中何处存储或检索数据,或者可以由配置数据(比特流)18指导在扇区对齐存储器92中何处存储或检索数据。

因此,取决于配置数据(比特流)18的内容,扇区控制器(sc)58可以在选择路径106上发出选择信号以控制路由电路102。取决于在选择路径106上的选择信号,路由电路102可以在cnoc100上或者在数据路径108上提供从扇区对齐存储器92到扇区控制器(sc)58的数据。控制路径110可以使得能够控制扇区控制器(sc)58与扇区对齐存储器92之间的通信。取决于配置数据(比特流)18的内容,扇区控制器(sc)58可以在控制路径110上发出控制信号,以使得扇区对齐存储器92从扇区对齐存储器92中检索数据或将数据存储到扇区对齐存储器92中。

存储器地址寄存器/数据寄存器(ar/dr)112可以基于在控制路径116上来自扇区控制器(sc)58的指令并且使用在数据路径118上接收到的数据对配置存储器(cram)52和/或结构内存储器114进行编程。以这种方式,ar/dr112可以利用当如此指导时直接来自扇区对齐存储器92的配置数据(比特流)18对cram52和/或结构内存储器114快速编程,这可以发生得比经由cnoc100接收整个配置数据(比特流)18所涉及的时间快得多。在一些情况下,利用直接来自扇区对齐存储器92的配置数据(比特流)18对cram52和/或结构内存储器114进行编程比利用来自cnoc100的配置数据(比特流)18对cram52和/或结构内存储器114进行编程可能快50%、前者是后者的两倍快、5倍快、10倍快、20倍快、50倍快、100倍快、200倍快、500倍快、1000倍快或更快。此处,还可以注意的是,在结构内存储器114中可用的存储量可以比扇区对齐存储器92中可用的存储量小得多。实际上,扇区对齐存储器92的容量可以是结构内存储器114的容量的很多倍(例如,10倍、100倍、1000倍或更多)。

对于甚至更快的编程,cram52和/或结构内存储器114的编程可以被流水线化,如在图9中示出的。存储器管理器120可以经由控制路径122和124协调ar/dr112的控制。存储器管理器120可以位于结构管芯22中和/或基部管芯24中。存储器管理器120可以被实现为状态机和/或为运行软件或固件的处理器,并且可以控制在数据路径126上去往和/或来自扇区对齐存储器92和ar/dr112的数据传送。数据路径126可以比可以通过cnoc100提供的更快速地传送数据。数据路径126可以具有更快频率和/或可以比cnoc100更广泛地并行地携带数据。

取决于配置数据(比特流)18的内容,扇区控制器(sc)58可以与ar/dr112和存储器管理器120协调以经由数据路径128接收来自cnoc100或者来自扇区对齐存储器92的配置数据(比特流)18。如上文提到的,配置数据(比特流)18可以通知扇区控制器(sc)58是接收来自cnoc100的配置数据(比特流)18的附加数据还是从扇区对齐存储器92获得它,和/或是否将配置数据(比特流)18高速缓存或预先高速缓存(例如,在高速缓存预取中)到扇区对齐存储器92中。在一个示例中,配置数据(比特流)18可以包含可以被加密的命令,以指导扇区控制器(sc)58是接收来自cnoc100的配置数据(比特流)18的附加数据还是从扇区对齐存储器92获得它。在另一示例中,配置数据(比特流)18的一部分可以具有唯一地标识配置数据(比特流)18的标识序列(例如,唯一序列、散列、加密值、唯一前导码,属于特定配置数据(比特流)18的初始比特集)。根据该唯一序列,扇区控制器(sc)58可以识别出在扇区对齐存储器92中先前接收并且高速缓存了相同配置数据(比特流)18,并且因此可以从扇区对齐存储器92获得配置数据(比特流)18的数据。扇区控制器(sc)58可以独立地管理在扇区对齐存储器92中何处存储或检索数据,或者可以由配置数据(比特流)18指导在扇区对齐存储器92中何处存储或检索数据。

可以将来自cnoc100或扇区对齐存储器92的配置数据(比特流)18和/或数据加载到ar/dr112中,并且经由流水线化电路130流水线化到cram52和/或结构内存储器114中。流水线化电路130可以允许在ar/dr112一次(atonce)对配置存储器(cram)52的多个单元进行编程(例如,代替一次一个单元地对配置存储器(cram)52进行编程)之前,通过将多个数据位流水线化到ar/dr112的寄存器中来一次对配置存储器(cram)52的多个单元进行编程。这可以允许来自扇区对齐存储器92的大量数据快速进入cram52单元以将对应的可编程逻辑元件50进行迅速编程。如上文指出的,这可以发生得比经由cnoc100来接收整个配置数据(比特流)18所涉及的时间快得多。在一些情况下,利用直接来自扇区对齐存储器92的配置数据(比特流)18对cram52和/或结构内存储器114进行编程比利用来自cnoc100的配置数据(比特流)18对cram52和/或结构内存储器114进行编程可能快50%、前者是后者的两倍快、5倍快、10倍快、20倍快、50倍快、100倍快、200倍快、500倍快、1000倍快或更快。

在包括扇区对齐存储器92的任何适合的配置中,包括但不限于在图8和图9中示出的那些,数据和/或配置程序(比特流)18可以被高速缓存在扇区对齐存储器92中,并且被用来对配置存储器(cram)52进行快速编程。可以使用任何合适的高速缓存协议。在一个示例中,由图10的流程图140示出的,配置数据(比特流)18可以由器件控制器(dc)60发送到与特定结构扇区80(例如,控制可编程逻辑元件50的特定扇区的配置存储器52的特定扇区)相关联的特定扇区控制器(sc)58,以发起该结构扇区80的配置(图10的框142)。扇区控制器(sc)58可以确定是否存在高速缓存命中(图10的判定框144)。在本公开中,“高速缓存命中”意指配置数据(比特流)18向扇区控制器(sc)58指示扇区控制器(sc)58应该使用位于扇区对齐存储器92中而不是来自cnoc100的数据来对配置存储器(cram)52和/或结构内存储器114进行编程。配置数据(比特流)18可以包含可以被加密的命令,以指导扇区控制器(sc)58从扇区对齐存储器92获得数据。在另一示例中,配置数据(比特流)18的一部分可以具有唯一地标识配置数据(比特流)18的标识序列(例如,唯一序列、散列、加密值、唯一前导码,属于特定配置数据(比特流)18的初始比特集)。根据唯一序列,扇区控制器(sc)58可以识别出在扇区对齐存储器92中先前接收并且高速缓存了相同配置数据(比特流)18,并且因此可以从扇区对齐存储器92获得配置数据(比特流)18的数据。照此,在确定高速缓存命中时,可以使用已经存储在扇区对齐存储器92中的数据来对配置存储器(cram)52和/或结构内存储器114进行编程(图10的框146)。

如果没有高速缓存命中(判定框144),则这可以指示被称为“高速缓存未命中”的状况。在本公开中,“高速缓存未命中”意指配置数据(比特流)18向扇区控制器(sc)58指示扇区控制器(sc)58应该使用来自cnoc100而不是扇区对齐存储器92的数据来对配置存储器(cram)52和/或结构内存储器114进行编程。例如,配置数据(比特流)18可以包含可以被加密的命令,以指导扇区控制器(sc)58从cnoc100而不是从扇区对齐存储器92获得数据。在另一示例中,配置数据(比特流)18的一部分可以具有唯一地标识配置数据(比特流)18的标识序列(例如,唯一序列、散列、加密值、唯一前导码,属于特定配置数据(比特流)18的初始比特集)。根据唯一序列,扇区控制器(sc)58可以识别先前未在扇区对齐存储器92中接收和/或高速缓存的相同配置数据(比特流)18。

照此,在确定高速缓存未命中时,可以使用来自cnoc100的数据(例如,配置数据(比特流)18的其余部分)来对配置存储器(cram)52和/或结构内存储器114进行编程(图10的框148)。附加地或替换地,在将数据编程到配置存储器(cram)52和/或结构内存储器114的同时或之后,可以将来自cnoc100的数据(例如,配置数据(比特流)18的其余部分)存储到扇区对齐存储器92中(图10的框150)。

在由图11的流程图160示出的一个示例中,如果期望的话,可以在配置或编程之前将配置数据(比特流)18和/或数据预先高速缓存(例如,在高速缓存预取过程中)到扇区对齐存储器92中。之后,当被提供有来自器件控制器(dc)60的某些配置数据(比特流)18(例如,命令、唯一序列等)以发起配置时(图11的框164),扇区控制器(sc)58可以使得利用来自扇区对齐存储器92的预先高速缓存的数据来对配置存储器(cram)52和/或结构内存储器114进行编程(图11的框166)。

图12表示使用上文参考图8所描述的电路的“高速缓存未命中”的示例。照此,可以在以上文本中找到具有与图8中的那些具有相同编号的元件的附加描述。参考图12,在高速缓存未命中状况中,配置数据(比特流)18可以向扇区控制器(sc)60指示使用cnoc100而不是扇区对齐存储器92作为数据源。照此,扇区控制器(sc)60可以引导路由电路102将信号从cnoc100朝向ar/dr112传递。附加地或替换地,配置数据(比特流)18可以向扇区控制器(sc)60指示将来自cnoc100的数据高速缓存到扇区对齐存储器92中。扇区控制器(sc)60可以沿着控制路径110向扇区对齐存储器92发出控制信号,并且扇区对齐存储器92可以在数据路径108上接收来自cnoc100的数据。

图13表示使用上文参考图8所描述的电路的“高速缓存命中”的示例。照此,可以在以上文本中找到具有与图8中的那些具有相同编号的元件的附加描述。参考图13,在高速缓存命中状况中,配置数据(比特流)18可以向扇区控制器(sc)60指示使用扇区对齐存储器92而不是cnoc100作为数据源。照此,扇区控制器(sc)60可以引导路由电路102将信号从数据路径108传递到ar/dr112。扇区控制器(sc)60可以使用控制路径110和116上的控制信号精心组织来自扇区对齐存储器92的结构内存储器114和/或配置存储器(cram)52的配置。

如上文指出的,可以在高速缓存预取过程中对配置数据(比特流)18和/或数据进行预先高速缓存。在图14中示出了使用图8的电路的该过程的一个示例。照此,可以在以上文本中找到与在图8中的那些具有相同编号的元件的附加描述。参考图14,在高速缓存预取过程中预先高速缓存可以涉及配置数据(比特流)18向扇区控制器(sc)60指示使用cnoc100而不是扇区对齐存储器92作为数据源。然而,尽管扇区控制器(sc)60可以引导路由电路102将信号从cnoc100传递到数据路径104和108上,但是可以在控制路径116上向ar/dr112发出(或不发出)控制信号,以使得ar/dr112可以不对配置存储器(cram)52和/或结构内存储器114进行编程。扇区控制器(sc)60可以沿着控制路径110向扇区对齐存储器92发出控制信号,并且扇区对齐存储器92可以在数据路径108上接收来自cnoc100的数据。

图15表示使用上文参考图9所描述的电路的“高速缓存未命中”的示例。照此,可以在以上文本中找到与在图9中的那些具有相同编号的元件的附加描述。参考图15,在高速缓存未命中状况中,配置数据(比特流)18可以向扇区控制器(sc)60指示使用cnoc100而不是扇区对齐存储器92作为数据源。照此,扇区控制器(sc)60可以与存储器管理器120协调,以使用ar/dr112利用来自cnoc100的数据对配置存储器(cram)52和/或结构内存储器114进行编程。附加地或替换地,配置数据(比特流)18可以向扇区控制器(sc)60指示将来自cnoc100的数据高速缓存到扇区对齐存储器92中。因此,扇区控制器(sc)60可以在控制路径124上向扇区对齐存储器92、存储器管理器120和/或ar/dr112发出控制信号。这些电路元件可以协调以沿着数据路径126从ar/dr112检索数据并且将其存储在扇区对齐存储器92中。这可以在ar/dr112正对配置存储器(cram)52和/或结构内存储器114进行编程的同时或者在ar/dr112已经完成对配置存储器(cram)52和/或结构内存储器114进行编程之后(例如,通过将其读取到扇区对齐存储器92中)而发生。

图16表示使用上文参考图9所描述的电路的“高速缓存命中”的示例。照此,可以在以上文本中找到与在图9中的那些具有相同编号的元件的附加描述。参考图16,在高速缓存命中状况中,配置数据(比特流)18可以向扇区控制器(sc)60指示使用扇区对齐存储器92而不是cnoc100作为数据源。照此,扇区控制器(sc)60可以引导存储器管理器120精心组织使用来自扇区对齐存储器92的数据利用ar/dr112进行编程。

在图17中示出了使用图9的电路在高速缓存预取过程中对配置数据(比特流)18进行预先高速缓存。可以在以上文本中找到与在图9中的那些具有相同编号的元件的附加描述。参考图17,在高速缓存预取过程中进行的预先高速缓存可以涉及配置数据(比特流)18向扇区控制器(sc)60指示使用cnoc100而不是扇区对齐存储器92作为数据源。然而,尽管扇区控制器(sc)60可以引导存储器管理器120和ar/dr112接收来自cnoc100的数据信号,但是ar/dr112可以不对配置存储器(cram)52和/或结构内存储器114进行编程。而是,扇区控制器(sc)60可以向扇区对齐存储器92、存储器管理器120和ar/dr112发出控制信号,并且可以将数据从ar/dr112移动到扇区对齐存储器92中。

使用本公开的高速缓存和预先高速缓存系统和方法,可以利用不同加速器对可编程逻辑器件进行快速重新编程以实行各种各样的任务。专门的加速器可以实行多样的计算任务,诸如机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排名、生物信息学、网络安全模式识别、空间导航等。在由图18的流程图200示出的方法中,在第一次,可以通过片上配置网络(cnoc)初始地接收第一加速器功能并将其编程到可编程逻辑器件中(图18的框202)。也可以将第一加速器功能高速缓存到扇区对齐存储器中(图18的框204)。在第二次,可以通过片上配置网络(cnoc)初始地接收第二加速器功能并且在第一加速器功能上将第二加速器功能编程到可编程逻辑器件中(图18的框206)。也可以将第二加速器功能高速缓存到扇区对齐存储器中(图18的框208)。之后,当要将第一加速器功能重新编程到可编程逻辑器件上时,这可以非常快速地发生,至少部分地源自扇区对齐存储器而不是整个源自cnoc(图18的框210)。

可编程逻辑器件12可以是数据处理系统,或者可以是数据处理系统的组件。例如,可编程逻辑器件12可以是数据处理系统260的组件,在图19中示出的。数据处理系统260包括主处理器262、存储器和/或存储电路264,以及网络接口266。数据处理系统260可以包括更多或更少组件(例如,电子显示器、用户接口结构、专用集成电路(asic))。主处理器262可以包括可以管理针对数据处理系统260的数据处理请求(例如,用以实行机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排名、生物信息学、网络安全模式识别、空间导航等)的任何适合的处理器,诸如intel®xeon®处理器或精简指令处理器(例如,精简指令集计算机(risc)、高级risc机器(arm)处理器)。存储器和/或存储电路264可以包括随机存取存储器(ram)、只读存储器(rom)、一个或多个硬盘驱动器、闪速存储器等。存储器和/或存储电路264可以保存要由数据处理系统260处理的数据。在一些情况下,存储器和/或存储电路264还可以存储用于对可编程逻辑器件12进行编程的配置程序(比特流)。网络接口266可以允许数据处理系统260与其他电子设备通信。数据处理系统260可以包括若干个不同封装,或者可以被包含在单个封装基板上的单个封装内。

在一个示例中,数据处理系统260可以是处理各种各样不同请求的数据中心的部分。例如,数据处理系统260可以经由网络接口266接收数据处理请求,以实行机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排名、生物信息学、网络安全模式识别、空间导航或一些其他专门的任务。主处理器262可以使得可编程逻辑器件12的可编程逻辑结构被利用与所请求的任务相关的特定加速器进行编程。例如,主处理器262可以指导存储在存储器/存储装置264上的或被高速缓存在可编程逻辑器件12的扇区对齐存储器中的配置数据(比特流)被编程到可编程逻辑器件12的可编程逻辑结构中。配置数据(比特流)可以表示用于与所请求的任务相关的特定加速器功能的电路设计。由于可编程逻辑结构的高密度、大量扇区对齐存储器与可编程逻辑结构的接近度、或者此处描述的可编程逻辑器件12的其他特征,可编程逻辑器件12可以在实行所请求的任务方面快速地协助数据处理系统260。实际上,在一个示例中,通过使用扇区对齐存储器对加速器进行高速缓存和编程,对加速器进行编程以协助语音识别任务可以发生得比几毫秒更快(例如,大约几微秒)。

可以将本公开的方法和器件并入到任何适合的电路中。例如,可以将该方法和器件合并到诸如微处理器或其他集成电路之类的众多类型的器件中。示例性集成电路包括可编程阵列逻辑(pal)、可编程逻辑阵列(pla)、现场可编程逻辑阵列(fpla)、电可编程逻辑器件(epld)、电可擦可编程逻辑器件(eepld)、逻辑单元阵列(lca)、现场可编程门阵列(fpga)、专用标准产品(assp)、专用集成电路(asic)和微处理器,仅举几例。

此外,尽管已经以具体次序描述了方法操作,但是应当理解的是,可以在所描述的操作之间实行其他操作,可以调整所描述的操作以使得它们以稍微不同的时间发生,或者所描述的操作可以被分布在允许以与处理相关联的各种间隔发生处理操作的系统中,只要重叠操作的处理按期望实行即可。

在本公开中阐述的实施例可以容许各种修改和替换形式,具体实施例已经借助于附图中的示例示出,并且在本文中已经进行详细地描述。然而,可以理解的是,本公开并不意图受限于所公开的特定形式。本公开要覆盖落入如由以下所附权利要求限定的本公开的精神和范围内的全部修改、等同方案和替换方案。此外,本文中呈现和要求保护的技术被引用并应用于具有实际性质的材料对象和具体示例,其明显地改善了本技术领域,并且照此不是抽象的、无形的或纯理论的。此外,如果附加到本说明书末尾的任何权利要求包含被指定为“用于[实行][功能]……的装置”或“用于[实行][功能]……的步骤”的一个或多个元件,则意图的是,将根据35u.s.c.112(f)解释这样的元件。然而,对于包含以任何其他方式指定的元件的任何权利要求,意图的是将不根据35u.s.c.112(f)来解释这样的元件。

本公开的示例实施例

以下编号的条款限定了本公开的某些示例实施例。

条款1.一种集成电路器件,其包括:

可编程逻辑结构,其包括:配置存储器和由该配置存储器控制的可编程逻辑元件,其中该配置存储器的第一扇区被配置成利用第一配置数据进行编程;以及

与该可编程逻辑结构分离的扇区对齐存储器,其中该扇区对齐存储器包括:扇区对齐存储器的第一扇区,其被配置成对第一配置数据进行高速缓存,同时在第一次利用第一配置数据对该配置存储器的第一扇区进行编程。

条款2.根据条款1的集成电路器件,其中将可编程逻辑结构布置在第一集成电路管芯上,并且将扇区对齐存储器布置在第二集成电路管芯上。

条款3.根据条款2的集成电路器件,其中:

第一集成电路管芯与第二集成电路管芯垂直堆叠;以及

配置存储器的第一扇区与扇区对齐存储器的第一扇区对齐。

条款4.根据条款1、2或3的集成电路器件,其中扇区对齐存储器的第一扇区具有的容量大于或等于配置存储器的第一扇区的容量。

条款5.根据条款1、2、3或4的集成电路器件,其中:

配置存储器的第一扇区被配置成通过经由集成电路器件外部的数据源接收第一配置数据而第一次利用第一配置数据进行编程;以及

配置存储器的第一扇区被配置成通过接收来自扇区对齐存储器的第一扇区的被高速缓存的第一配置数据而在第二次利用第一配置数据进行编程。

条款6.根据条款1、2、3、4或5的集成电路器件,其中:

配置存储器的第一扇区被配置成通过经由片上配置网络接收第一配置数据而在第一次利用第一配置数据进行编程;以及

配置存储器的第一扇区被配置成通过接收来自扇区对齐存储器的第一扇区的被高速缓存的第一配置数据而在第二次利用第一配置数据进行编程。

条款7.根据条款1、2、3、4、5或6的集成电路器件,其中:

配置存储器的第二扇区被配置成利用第二配置数据进行编程;以及

扇区对齐存储器包括扇区对齐存储器的第二扇区,其被配置成对第二配置数据进行高速缓存,同时配置存储器的第二扇区在第一次利用第二配置数据进行编程。

条款8.根据条款7的集成电路器件,其中扇区对齐存储器的第一扇区被配置成对第一配置数据进行高速缓存,同时扇区对齐存储器的第二扇区对第二配置数据进行高速缓存。

条款9.根据条款1、2、3、4、5、6或7的集成电路器件,其中配置存储器的第一扇区被配置成以流水线化的方式进行编程。

条款10.一种用于对可编程逻辑器件进行快速编程的方法,该方法包括:

从可编程逻辑器件外部的数据源将第一配置数据接收到可编程逻辑器件中;

将第一配置数据高速缓存到与可编程逻辑器件的可编程逻辑结构的第一扇区相对应的可编程逻辑器件的扇区对齐存储器的第一扇区中;以及

通过使用被高速缓存在所述扇区对齐存储器的第一扇区中的第一配置数据对第一扇区的配置存储器进行编程来配置可编程逻辑器件的可编程逻辑结构的第一扇区。

条款11.根据条款10的方法,其中第一配置数据在第一次被高速缓存到扇区对齐存储器的第一扇区中,同时第一扇区的配置存储器在第一次使用第一配置数据进行编程,其中通过使用被高速缓存在扇区对齐存储器的第一扇区中的第一配置数据对第一扇区的配置存储器进行编程来配置可编程逻辑器件的可编程逻辑结构的第一扇区在第二次发生。

条款12.根据条款10或11的方法,其中在第一次使用第一配置数据配置可编程逻辑结构的第一扇区之前,第一配置数据被高速缓存到扇区对齐存储器的第一扇区中。

条款13.根据条款10、11或12的方法,其中:

第一配置数据被高速缓存到扇区对齐存储器的第一扇区中,同时在第一次使用第一配置数据配置可编程逻辑结构的第一扇区;以及

继在第一次通过使用被高速缓存在扇区对齐存储器的第一扇区中的第一配置数据对第一扇区的配置存储器进行编程之后,在第二次使用第一配置数据来配置可编程逻辑结构的第一扇区。

条款14.根据条款10、11、12或13的方法,其中响应于通过第一配置数据指示要对第一配置数据进行高速缓存,第一配置数据被高速缓存到扇区对齐存储器的第一扇区中。

条款15.根据条款14的方法,其中该指示包括指导对第一配置数据进行高速缓存的命令或者指示第一配置数据尚未存储在扇区对齐存储器的第一扇区中的标识序列,或其两者。

条款16.根据条款15的方法,包括:

从可编程逻辑器件外部的数据源将第二配置数据接收到可编程逻辑器件中;以及

通过使用第二配置数据对第一扇区的配置存储器进行编程来配置可编程逻辑器件的可编程逻辑结构的第一扇区;

其中,在使用第二配置数据配置第一扇区之后,通过使用被高速缓存在扇区对齐存储器的第一扇区中的第一配置数据对第一扇区的配置存储器进行编程来配置可编程逻辑器件的可编程逻辑结构的第一扇区。

条款17.一种数据处理系统,其包括:

被配置成管理数据处理请求的处理器;

被配置成存储与数据处理请求有关的第一配置数据的存储器或存储设备;以及

可编程逻辑器件,其包括被配置成响应于通过处理器的指令利用第一配置数据进行编程的可编程逻辑结构,其中可编程逻辑器件被配置成接收来自存储器或存储设备的第一配置数据,并且在利用第一配置数据对可编程逻辑结构进行编程之前或同时,将第一配置数据高速缓存在可编程逻辑器件的结构高速缓存存储器中。

条款18.根据条款17的数据处理系统,其中通过处理器的指令包括:用以使用被高速缓存在结构高速缓存存储器中的一个版本的第一配置数据将第一配置数据编程到可编程逻辑器件的可编程逻辑结构中的指令。

条款19.根据条款17或18的数据处理系统,其中通过处理器的指令包括:用以当使用从存储器或存储设备接收的一个版本的第一配置数据将第一配置数据编程到可编程逻辑器件的可编程逻辑结构中时将第一配置数据高速缓存在结构高速缓存存储器中的指令。

条款20.根据条款17、18或19的数据处理系统,其中数据处理请求包括:机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排名、生物信息学、网络安全模式识别、空间导航或其组合。

条款21.一种用于对可编程逻辑器件进行快速编程的硬件实现方法,该方法包括:

从可编程逻辑器件外部的数据源将第一配置数据接收到可编程逻辑器件中;

将第一配置数据高速缓存到与可编程逻辑器件的可编程逻辑结构的第一扇区相对应的可编程逻辑器件的扇区对齐存储器的第一扇区中;以及

通过使用被高速缓存在扇区对齐存储器的第一扇区中的第一配置数据对第一扇区的配置存储器进行编程来配置可编程逻辑器件的可编程逻辑结构的第一扇区。

条款22.根据条款21的硬件实现方法,其中第一配置数据在第一次被高速缓存到扇区对齐存储器的第一扇区中,同时第一扇区的配置存储器在第一次利用第一配置数据进行编程,其中通过使用被高速缓存在扇区对齐存储器的第一扇区中的第一配置数据对第一扇区的配置存储器进行编程来配置可编程逻辑器件的可编程逻辑结构的第一扇区在第二次发生。

条款23.根据条款21的硬件实现方法,其中在第一次使用第一配置数据配置可编程逻辑结构的第一扇区之前,第一配置数据被高速缓存到扇区对齐存储器的第一扇区中。

条款24.根据条款21、22或23的硬件实现方法,其中:

第一配置数据被高速缓存到扇区对齐存储器的第一扇区中,同时在第一次使用第一配置数据配置可编程逻辑结构的第一扇区;以及

继在第一次通过使用被高速缓存在扇区对齐存储器的第一扇区中的第一配置数据对第一扇区的配置存储器进行编程之后,在第二次使用第一配置数据来配置可编程逻辑结构的第一扇区。

条款25.根据条款21、22、23或24的硬件实现方法,其中响应于通过第一配置数据指示要对第一配置数据进行高速缓存,第一配置数据被高速缓存到扇区对齐存储器的第一扇区中。

条款26.根据条款25的硬件实现方法,其中该指示包括指导对第一配置数据进行高速缓存的命令或者指示第一配置数据尚未存储在扇区对齐存储器的第一扇区中的标识序列,或其两者。

条款27.根据条款21、22、23、24、25或26的硬件实现方法,其包括:

从可编程逻辑器件外部的数据源将第二配置数据接收到可编程逻辑器件中;以及

通过使用第二配置数据对第一扇区的配置存储器进行编程来配置可编程逻辑器件的可编程逻辑结构的第一扇区;

其中,在使用第二配置数据配置第一扇区之后,通过使用被高速缓存在扇区对齐存储器的第一扇区中的第一配置数据对第一扇区的配置存储器进行编程来配置可编程逻辑器件的可编程逻辑结构的第一扇区。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1