可编程逻辑器件的可编程逻辑结构可访问的扇区对齐存储器的制作方法

文档序号:18221611发布日期:2019-07-19 23:03阅读:194来源:国知局
可编程逻辑器件的可编程逻辑结构可访问的扇区对齐存储器的制作方法

本公开内容涉及使用可编程逻辑器件的可编程逻辑结构来访问扇区对齐存储器。

该部分旨在向读者介绍可以与以下描述和/或要求保护的、本公开内容的各个方面相关的技术的各个方面。相信该讨论有助于向读者提供背景信息以促进对本公开内容的各个方面的更好的理解。因此,可以理解,这些陈述将以这种方式理解,而不是作为对现有技术的承认。

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

可编程逻辑器件的高度灵活性使它们非常适合于加速许多计算任务。因此,可编程逻辑器件越来越多地用作用于机器学习、视频处理、语音辨识、图像辨识以及许多其他高度专业化的任务(尤其是用处理器上运行的软件将太慢或效率太低的任务)的加速器。定义加速器功能的电路设计可以受益于对存储在存储器中的大量数据的访问。然而,访问外部存储器设备可能是相对慢的过程,并且因此一些可编程逻辑器件可以包括采用可编程逻辑结构可访问的本地存储器阵列形式的结构内存储器。

然而,结构内存储器的容量是受空间限制的,这是因为结构内存储器可以占用否则将包含用于可编程逻辑元件的配置存储器的管芯空间。因此,增加结构内存储器的量会减少可用的可编程逻辑元件的数量。作为结果,加速器设计者可能面临较快的操作时间及较低容量的结构内存储器与较慢操作时间及较高容量的外部存储器之间困境。

附图说明

在阅读以下详细描述并参考附图之后,可以更好地理解本公开内容的各个方面,在所述附图中:

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

图2是根据实施例的包括可编程逻辑器件的封装的框图,其中,结构管芯与基本管芯垂直堆叠。

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

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

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

图6是根据实施例的基本管芯的示例性拓扑的框图;

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

图8是根据实施例的用于与基本管芯的扇区对齐存储器相接的结构管芯的存储器接口的框图;

图9是根据实施例的可以促进由可编程逻辑结构使用扇区控制器来对扇区对齐存储器的访问的电路的框图;

图10是根据实施例的可以促进由可编程逻辑结构使用用于流水线输送的扇区控制器和存储器管理器来对扇区对齐存储器访问的电路的框图;

图11是根据实施例的用于由可编程逻辑结构将数据从可编程逻辑结构传送到扇区对齐存储器的方法的流程图。

图12是根据实施例的示出由扇区控制器使用图9的电路来将数据从可编程逻辑结构传送到扇区对齐存储器的示例的框图;

图13是根据实施例的示出由可编程逻辑结构中的软逻辑控制器使用图9的电路来将数据从可编程逻辑结构传送到扇区对齐存储器的示例的框图;

图14是根据实施例的示出由用于流水线输送的扇区控制器和存储器管理器使用图10的电路来将数据从可编程逻辑结构传送到扇区对齐存储器的示例的框图;

图15是根据实施例的示出由可编程逻辑结构中的软逻辑控制器使用图10的电路来将数据从可编程逻辑结构传送到扇区对齐存储器的示例的框图;

图16是根据实施例的用于将数据从扇区对齐存储器传送到可编程逻辑结构的方法的流程图。

图17是根据实施例的示出由扇区控制器使用图9的电路来将数据从扇区对齐存储器传送到可编程逻辑结构的示例的框图;

图18是根据实施例的示出由可编程逻辑结构中的软逻辑控制器使用图9的电路来将数据从扇区对齐存储器传送到可编程逻辑结构的示例的框图;

图19是根据实施例的示出由用于流水线输送的扇区控制器和存储器管理器使用图10的电路来将数据从扇区对齐存储器传送到可编程逻辑结构的示例的框图;

图20是根据实施例的示出由可编程逻辑结构中的软逻辑控制器使用图10的电路来将数据从可编程逻辑结构传送到扇区对齐存储器的示例的框图;以及

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

具体实施方式

以下将描述了一个或多个具体实施例。为了提供对这些实施例的简明描述,并未在说明书中描述实际实施方式的所有特征。可以领会,在任何这样的实际实施方式的开发中(如在任何工程或设计项目中),必须做出许多实施方式特定的决策以实现开发人员的特定目标(例如,遵从与系统相关的约束和与业务相关的约束),所述目标可以从一个实施方式到另一实施方式而变化。此外,可以领会,这样的开发工作可能是复杂且耗时的,但无论如何对于受益于本公开内容的普通技术人员而言将仍然是设计、制作和制造的常规任务。

当介绍本公开内容的各种实施例的元素时,冠词“一”、“一个”和“该”旨在意指存在元素中的一个或多个。术语“包括”、“包含”和“具有”旨在是包括性的,并且意指可以存在不同于所列出的元素的另外的元素。另外,应当理解的是,对本公开内容的“一个实施例”或“实施例”的引用不旨在被解释为排除也包括了所记载的特征的另外的实施例的存在。此外,短语a“基于”b旨在意指a至少部分地基于b。此外,除非另有明确声明,否则术语“或”旨在是包括性的(例如,逻辑否(or))而不是排他性的(例如,逻辑异或(xor))。换言之,短语a“或”b旨在意指a、b或a和b二者。

可编程逻辑器件的高度灵活性使其非常适合于加速许多计算任务。因此,可编程逻辑器件越来越多地用作用于机器学习、视频处理、语音辨识、图像辨识以及许多其他高度专业化的任务(尤其是用处理器上运行的软件将太慢或效率太低的任务)的加速器。定义加速器功能的电路设计可以受益于对存储在存储器中的大量数据的访问。由于访问外部存储器设备可能是相对慢的过程,并且结构内存储器的容量可能是有限的,因此本公开内容描述了既不直接在可编程结构内也不在可编程逻辑器件外部的本地存储器。在本公开内容中,存储器被称为“扇区对齐存储器”,这是因为存储器可以具有可由可编程逻辑结构的不同相应区域访问的某些区域。

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

结构支持电路可以包括可编程逻辑结构可访问的扇区对齐存储器。由于扇区对齐存储器可以位于与可编程逻辑结构分开的管芯上,因此扇区对齐存储器可以具有比本地结构内存储器的容量大得多的容量。实际上,在一些情况下,扇区对齐存储器可以具有是本地结构内存容量的一千倍或多于本地结构内存容量的一千倍的容量。

扇区对齐存储器不仅可以具有高于本地结构内存储器的容量,而且扇区对齐存储器还可以具有高于外部存储器设备的带宽。可以通过以下操作将高带宽变得可能:通过将扇区对齐存储器物理地放置在可编程逻辑结构附近(例如,在与结构管芯垂直对齐的基本管芯中),并且/或者通过物理地或逻辑地将扇区对齐存储器划分成可以将数据并行传输到可编程逻辑结构的对应不同扇区的单独的扇区。这还可以允许扇区对齐存储器免受可编程逻辑结构的其他扇区的访问。此外,取决于包含可编程逻辑结构的第一管芯和包含结构支持电路的第二管芯(例如,扇区对齐存储器)的物理布置,扇区对齐存储器可以被流水线输送到可编程逻辑结构中,以允许更快的数据利用率。

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

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

因此,可编程逻辑器件12可以具有两个单独的集成电路管芯,其中,可编程逻辑结构中的至少一些与操作可编程逻辑结构的结构支持电路中的至少一些分离,所述结构支持电路可以包括本地存储器,例如扇区对齐存储器。可编程逻辑器件12的一个示例如图2所示,但是可以使用具有足够带宽和容量的本地存储器的任何合适的可编程逻辑器件。在图2的示例中,可编程逻辑器件12包括结构管芯22和基本管芯24,它们经由微凸块26彼此连接。尽管结构管芯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所示。应当理解,图3所示的fpga40意在表示当结构管芯22和基本管芯24二者组合操作时可编程逻辑器件的电路类型和/或逻辑布置。换言之,图3所示的fpga40的电路中的一些可以在结构管芯22中找到,图3所示的fpga40的电路中的一些可以在基本管芯24中找到。另外,出于该示例的目的,fpga40被称为fpga,但是应当理解,器件可以是任何合适类型的可编程逻辑器件(例如,专用集成电路和/或专用标准产品)。

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

在fpga40上可以存在任何合适数量的可编程逻辑扇区48。实际上,虽然这里示出了29个可编程逻辑扇区48,但是应当领会,在实际实施方式中可以出现更多或更少的可编程逻辑扇区48(例如,在一些情况下,在50、100或1000个扇区或更多的数量级上)。每个可编程逻辑扇区48可以包括控制可编程逻辑扇区48的操作的扇区控制器(sc)58。每个扇区控制器58可以与设备控制器(dc)60进行通信。每个扇区控制器58可以接受来自设备控制器60的命令和数据,并且可以基于来自设备控制器60的控制信号来从其配置存储器52中读取数据并将数据写入到其配置存储器52中。除了这些操作之外,扇区控制器58和/或设备控制器60还可以用众多另外的能力来扩充。这样的能力可以包括:协调本地结构内存储器(例如,正用于数据存储的本地结构存储器或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的输出信号可以配置或可以应用于控制可编程逻辑元件50或互连资源46的可编程组件的状态的金属氧化物半导体(mos)晶体管的栅极。

如上所述,图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)设备)、嵌入式处理器(例如,加利福尼亚州圣克拉拉的英特尔公司的嵌入式处理器)或用于连接到处理器的接口(例如,到加利福尼亚州圣克拉拉的英特尔公司的处理器的接口)、电压控制电路、热监测电路、去耦合电容器、电源钳和/或静电放电(esd)电路等等(仅列举可以存在于基本芯片24上的几个元件)。应当理解,可以是基本管芯24的结构支持电路的部分的、这些元件中的一些元件可以另外地或替代地是结构管芯22的一部分。例如,设备控制器(dc)60和/或扇形控制器(sc)58可以是结构管芯22的部分。

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

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

图6提供了基本管芯24的补充布置。基本管芯24可以表示具有由外围电路28和硅桥接口39围绕的若干扇区90的有源中介层。每个扇区90可以包括各种结构支持电路,例如扇区对齐存储器92、存储器控制电路93、非用户输入控制电路94、非用户输出控制电路95、诸如完全集成电压调节器(fivr)96之类的电压调节器、一个或多个热传感器97、数据和配置路由器98和/或数据或配置通路99。存储器控制电路93可以用于对扇区对齐存储器92、结构管芯22的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的可编程逻辑结构进行编程的配置数据。在本公开内容中,“可直接访问”指的是与特定结构扇区80相关联的扇区对齐存储器92的区域与该特定结构扇区80之间的连接。在一些实施例中,与特定结构扇区80相关联的扇区对齐存储器92的每个相应区域可以是可由该特定结构扇区80直接访问的,从而向每个结构扇区80提供对扇区对齐存储器92的该区域的直接访问。例如,可以存在扇区对齐存储器92的n个区域,所述n个区域可以是可由n个对应的结构扇区80同时(例如,并行)访问的。在一些情况下,扇区对齐存储器92可以是可由多于一个的结构扇区80访问的,或者扇区对齐存储器92的多个扇区可以是可由单个结构扇区80访问的。因此,在一些情况下,扇区对齐存储器92的相同区域可以是可由多个结构扇区80直接访问的,而在其他情况下,扇区对齐存储器92的区域可以是仅可由单个结构扇区80直接访问的。在图7的示例中,结构扇区80可以访问扇区对齐存储器92的特定区域。扇区对齐存储器92在图7中被示出为垂直堆叠的存储器。这可以允许大量存储器位于基本管芯24内。然而,在一些实施例中,扇区对齐存储器92可以占据基本芯片24的单个平面。

如图8所示,基本管芯24的扇区对齐存储器92可以是可由结构芯片22的可编程逻辑结构(例如,可编程逻辑元件50和相关联的配置存储器52)经由存储器接口(i/f)138访问的。对于每个结构扇区可以存在一个或多个存储器接口(i/f)138,以允许不同的结构扇区并行访问扇区对齐存储器92的它们各自的扇区。存储器接口(i/f)138可以占据结构扇区80的一行,并且可以由硬化逻辑或软逻辑或二者构成。在图8的示例中,存储器接口(i/f)138可以占据结构扇区80的最外面的一行。这可以允许存储器接口(i/f)138不仅促进与存储器接口(i/f)138所在的结构扇区80中的可编程逻辑元件50和相关联的配置存储器的行的通信,而且还促进与相邻的结构扇区80中的可编程逻辑元件50和相关联的配置存储器52的行的通信。

存储器接口(i/f)138可以经由数据路径140接收或发送去往存储器数据接口(i/f)142的数据,并且可以经由控制信号路径144传送去往和来自存储器控制器接口(i/f)146的控制信号。存储器接口(i/f)138可以接收控制和/或数据信号并经由路由电路148通过可编程逻辑元件50和相关联的配置存储器52的行将控制和/或数据信号路由到特定存储器地址或逻辑元件。控制信号路径144和数据路径140可以表示可编程逻辑结构的第一扇区和扇区对齐存储器92的第一扇区之间的第一物理连接。应当理解,类似的通路可以表示可编程逻辑结构的第二扇区与扇区对齐存储器92的第二扇区之间的第二物理连接。

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

图9所示的电路包括可以接收比特流18等的设备控制器(dc)60。比特流18可以表示可以由设备控制器(dc)60接收的数据,例如可以对可编程逻辑元件(fpga结构)50的特定扇区的配置存储器(cram)52进行编程的配置数据和/或可以由可编程逻辑结构处理的数据(例如,在用于加速计算任务的请求中)。设备控制器60可以从外部数据源(例如,外部数据存储设备或外部存储器设备)接收比特流18,并且可以经由片上配置网络(cnoc)100或任何其他合适的通路将比特流18引导到特定扇区的扇区控制器(sc)58。

当图9的电路用于通过对配置存储器(cram)52进行编程来配置可编程逻辑器件元件50时,路由电路102(例如,复用器)可以经由主信号路径104向扇区控制器(sc)58提供比特流18。当由比特流18引导时,当由在扇区控制器(sc)58上运行的例程确定时,和/或当由被编程到可编程逻辑元件50中的电路设计指示时,扇区控制器(sc)58可以在选择通路106上发出选择信号以引导路由电路102从cnoc100接收比特流18或从扇区对齐存储器92接收数据,和/或是否将比特流18高速缓存到扇区对齐存储器92中。基于选择通路106上的选择信号,路由电路102可以在cnoc100上或在数据通路108上提供从扇区对齐存储器92到扇区控制器(sc)58的数据。控制通路110可以实现扇区控制器(sc)58与扇区对齐存储器92之间的控制通信。扇区控制器(sc)58可以使用控制通路110使扇区对齐存储器92从扇区对齐存储器92中检索数据或将数据存储到扇区对齐存储器92中。

在可编程逻辑结构中实现的配置程序20(如由可配置存储器(cram)52编程的可编程逻辑元件50的配置所定义的)可以利用扇区对齐存储器92。被编程到可编程逻辑元件50中的配置程序20可以以若干种方式这样做。在一个示例中,配置程序20可以经由耦合到控制接口(ctrli/f)142的控制通路140和耦合到数据接口(datai/f)146的数据通路144直接访问(例如,从中读取或向其写入)扇区对齐存储器,所述ctrli/f142和datai/f146用于可编程逻辑结构与扇区对齐存储器92之间的直接数据传输。配置程序20可以包括用于在可编程逻辑元件50中实现的扇区对齐存储器92的存储器控制器,其可以被称为用软逻辑实现的存储器控制器,或者硬化存储器控制器可以是可由控制接口(ctrli/f)142和数据接口(datai/f)146访问的。在另一示例中,配置程序20可以经由控制通路140将控制信号传送到扇区控制器(sc)58,以指令扇区控制器(sc)58协调去往或来自扇区对齐存储器92的数据传输。因此,配置程序20可以包括用于以该方式与扇区控制器(sc)58通信的软处理器或软状态机,或者硬化控制电路可以设置在可编程逻辑元件50之间以与扇区控制器(sc)58通信。

存储器地址寄存器/数据寄存器(ar/dr)112可以基于来自控制通路116上的扇区控制器(sc)58的指令并且使用在数据通路118上接收的数据来对配置存储器(cram)52和/或结构内存储器114进行编程。以该方式,ar/dr112可以用数据来快速对cram52和/或结构内存储器114进行编程,所述数据例如来自在cnoc100上接收的比特流18的数据或在被指令时直接来自扇区对齐存储器92的数据。与经由cnoc100接收整个比特流18(这可能由于访问可编程逻辑器件12外部的存储器设备而面临延时)中涉及的时间相比,这可以快得多地发生。在一些情况下,与用来自cnoc100的比特流18对cram52和/或结构内存储器114进行编程相比,用直接来自扇区对齐存储器92的数据对cram52和/或结构内存储器114进行编程可以快50%、两倍快、5倍快、10倍快、20倍快、100倍快、200倍快、500倍快、1000倍快、或更快。这里,还可以注意到在结构内存储器114中可用的存储器的量可以远小于扇区对齐存储器92中可用的存储器的量。事实上,扇区对齐存储器92可以具有是结构内存储器114的容量的许多倍(例如,10倍、100倍、1000倍、或更多)的容量。

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

扇区控制器(sc)58可以与ar/dr112和存储器管理器120相协调以经由数据通路128从cnoc100或从扇区对齐存储器92接收比特流18。如上所述,扇区控制器(sc)58可以控制是从cnoc100接收比特流18的数据还是从扇区对齐存储器92获得它,和/或是否将比特流18高速缓存或预高速缓存(例如,在高速缓存预取中)到扇区对齐存储器92中。

与图9的电路一样,在图10的电路中,由配置存储器(cram)52编程的可编程逻辑元件50的配置所定义的在可编程逻辑结构中实现的配置程序20可以利用扇区对齐存储器92。被编程到可编程逻辑元件50中的配置程序20可以以若干种方式这样做。在一个示例中,配置程序20可以经由耦合到控制接口(ctrli/f)142的控制通路140和耦合到数据接口(datai/f)146的数据通路144直接访问(例如,从中读取或向其写入)扇区对齐存储器,以用于可编程逻辑结构和扇区对齐存储器92之间的直接数据传输。配置程序20可以包括用于在可编程逻辑元件50中实现的扇区对齐存储器92的存储器控制器,其可以被称为用软逻辑实现的存储器控制器,或者硬化存储器控制器可以由控制接口(ctrli/f)142和数据接口(datai/f)146访问。在另一示例中,配置程序20可以经由控制通路140将控制信号传送到扇区控制器(sc)58和/或存储器管理器120。配置程序20可以指令扇区控制器(sc)58和/或存储器管理器120协调去往或来自扇区对齐存储器92的数据传输。因此,配置程序20可以包括用于以该方式与扇区控制器(sc)58通信的软处理器或软状态机,或者硬化控制电路可以设置在可编程逻辑元件50之间以与扇区控制器(sc)58和/或存储器管理器120通信。

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

在包括扇区对齐存储器92的任何合适的配置(包括但不限于图9和图10所示的配置)中,数据可以被传送到扇区对齐存储器92或从扇区对齐存储器92传送,并且可以由可编程逻辑结构(例如,由可编程逻辑元件实现的电路设计)使用。在一个示例中,由图11的流程图160示出,诸如配置程序20之类的电路设计可以使控制接口(ctrli/f)142在控制通路140上向扇区对齐存储器92、扇区控制器(sc)58和/或存储器管理器120发出控制信号(图11的框162)。控制信号可以请求从本地结构存储器(例如,结构内存储器114或可编程逻辑元件50的寄存器)到扇区对齐存储器92的数据传输。控制电路(例如,在可编程逻辑元件50中实现的软或硬化的控制器)、控制接口(ctrli/f)142和数据接口(datai/f)146、扇区控制器(sc)58和/或存储器管理器120可以使本地结构存储器(例如,结构内存储器114或可编程逻辑元件50的寄存器)的期望的内容被存储在扇区对齐存储器92中(图11的框164)。

图12表示使用以上参考图9描述的电路从结构内存储器114到扇区对齐存储器92的数据传输的示例。如此,对具有与图9中的元素相同编号的元素的另外的描述可以在以上文本中找到。这里,配置程序20、控制电路(例如,在可编程逻辑元件50中实现的软或硬化的控制器)、控制接口(ctrli/f)142和数据接口(datai/f)146和/或扇区控制器(sc)58可以协调从结构内存储器114到扇区对齐存储器92的数据传输。来自结构内存储器114的数据可以在扇区控制器(sc)58的引导下被下载到ar/dr112中,并且ar/dr112可以将数据传递到扇区对齐存储器92。

图13表示使用以上参考图9描述的电路从结构内存储器114和/或可编程逻辑元件50的寄存器到扇区对齐存储器92的数据传输的另一示例。如此,对具有与图9中的元素相同编号的元素的另外的描述可以在以上文本中找到。这里,配置程序20、控制电路(例如,在可编程逻辑元件50中实现的软或硬化的控制器)和/或控制接口(ctrli/f)142和数据接口(datai/f)146可以协调从结构内存储器114和/或可编程逻辑元件50的寄存器到扇区对齐存储器92的数据传输。来自结构内存储器114和/或可编程逻辑元件50的寄存器的数据可以由控制接口(ctrli/f)142在来自控制通路140上的控制信号的指令下使用数据通路144来从数据接口(datai/f)146传输到扇区对齐存储器92。

图14表示使用以上参考图10描述的电路从结构内存储器114到扇区对齐存储器92的数据传输的示例。如此,对具有与图10中的元素相同编号的元素的另外的描述可以在以上文本中找到。这里,配置程序20、控制电路(例如,在可编程逻辑元件50中实现的软或硬化的控制器)、控制接口(ctrli/f)142和数据接口(datai/f)146、扇区控制器(sc)58和/或存储器管理器120可以协调从结构内存储器114到扇区对齐存储器92的数据传输。例如,配置程序20、控制电路(例如,在可编程逻辑元件50中实现的软或硬化的控制器)和/或控制接口(ctrli/f)142和数据接口(datai/f)146可以指令扇区控制器(sc)58使存储器管理器120执行数据传输。来自结构内存储器114的数据可以在存储器管理器120的控制下使用流水线电路130以流水线方式被下载到ar/dr112中,这可以使得大量数据能够从结构内存储器114快速传输到扇区对齐存储器92。

图15表示使用以上参考图10描述的电路从结构内存储器114和/或可编程逻辑元件50的寄存器到扇区对齐存储器92的数据传输的另一示例。如此,对具有与图10中的元素相同编号的元素的另外的描述可以在以上文本中找到。这里,配置程序20、控制电路(例如,在可编程逻辑元件50中实现的软或硬化的控制器)和/或控制接口(ctrli/f)142和数据接口(datai/f)146可以协调从结构内存储器114和/或可编程逻辑元件50的寄存器到扇区对齐存储器92的数据传输。来自结构内存储器114和/或可编程逻辑元件50的寄存器的数据可以由控制接口(ctrli/f)142在来自控制通路140上的控制信号的指令下使用数据通路144来从数据接口(datai/f)146传输到扇区对齐存储器92。

还可以将数据从扇区对齐存储器92传输到结构内存储器114和/或可编程逻辑结构(例如,由可编程逻辑元件实现的电路设计)中的配置程序20。在一个示例中,如由图16的流程图190示出的,诸如配置程序20之类的电路设计可以使控制接口(ctrli/f)142在控制通路140上向扇区对齐存储器92、扇区控制器(sc)58和/或存储器管理器120发出控制信号(图11的框192)。控制信号可以请求从扇区对齐存储器92到本地结构存储器的数据传输,所述本地结构存储器例如结构内存储器114或可编程逻辑元件50的寄存器。控制电路(例如,在可编程逻辑元件50中实现的软或硬化的控制器)、控制接口(ctrli/f)142和数据接口(datai/f)146、扇区控制器(sc)58和/或存储器管理器120可以引起扇区对齐存储器92的期望的内容被传输到本地结构存储器,例如结构内存储器114或可编程逻辑元件50的寄存器(图16的框194)。传输的数据可以存储到结构内存储器114和/或可编程逻辑元件50的寄存器中(图16的框196)。

图17表示使用以上参考图9描述的电路从扇区对齐存储器92到结构内存储器114的数据传输的示例。如此,对具有与图9中的元素相同编号的元素的另外的描述可以在以上文本中找到。这里,配置程序20、控制电路(例如,在可编程逻辑元件50中实现的软或硬化的控制器)、控制接口(ctrli/f)142和数据接口(datai/f)146和/或扇区控制器(sc)58可以发起从扇区对齐存储器92到结构内存储器114的数据传输。来自扇区对齐存储器92的数据可以被上载到ar/dr112中,所述ar/dr112可以在扇区控制器(sc)58的引导下将数据编程到结构内存储器114中。

图18表示使用以上参考图9描述的电路从扇区对齐存储器92到结构内存储器114和/或可编程逻辑元件50的寄存器的数据传输的另一示例。如此,对具有与图9中的元素相同编号的元素的另外的描述可以在以上文本中找到。这里,配置程序20、控制电路(例如,在可编程逻辑元件50中实现的软或硬化的控制器)和/或控制接口(ctrli/f)142和数据接口(datai/f)146可以协调从扇区对齐存储器92到结构内存储器114和/或可编程逻辑元件50的寄存器的数据传输。由控制接口(ctrli/f)142在来自控制通路140上的控制信号的指令下使用数据通路144,来自扇区对齐存储器92的数据可以在数据接口(datai/f)146上被接收并且被提供给结构内存储器114和/或可编程逻辑元件50的寄存器。

图19表示使用以上参考图10描述的电路从扇区对齐存储器92到结构内存储器114的数据传输的示例。如此,对具有与图10中的元素相同编号的元素的另外的描述可以在以上文本中找到。这里,配置程序20、控制电路(例如,在可编程逻辑元件50中实现的软或硬化的控制器)、控制接口(ctrli/f)142和数据接口(datai/f)146、扇区控制器(sc)58和/或存储器管理器120可以协调从结构内存储器114到扇区对齐存储器92的数据传输。例如,配置程序20、控制电路(例如,在可编程逻辑元件50中实现的软或硬化的控制器)和/或控制接口(ctrli/f)142和数据接口(datai/f)146可以指令扇区控制器(sc)58使存储器管理器120执行数据传输。来自扇区对齐存储器92的数据可以在存储器管理器120的控制下使用流水线电路130以流水线方式被上载到ar/dr112中并被编程到结构内存储器114中。这可以使得大量数据能够从扇区对齐存储器92快速传输到结构内存储器114。

图20表示使用以上参考图10描述的电路从结构内存储器114和/或可编程逻辑元件50的寄存器到扇区对齐存储器92的数据传输的另一示例。如此,对具有与图10中的元素相同编号的元素的另外的描述可以在以上文本中找到。这里,配置程序20、控制电路(例如,在可编程逻辑元件50中实现的软或硬化的控制器)和/或控制接口(ctrli/f)142和数据接口(datai/f)146可以协调从扇区对齐存储器92到结构内存储器114和/或可编程逻辑元件50的寄存器的数据传输。来自扇区对齐存储器92的数据可以由控制接口(ctrli/f)142在来自控制通路140上的控制信号的指令下使用数据通路144传输到数据接口(datai/f)146到扇区对齐存储器92,并且随后被编程到结构内存储器114和/或可编程逻辑元件50的寄存器中。

可编程逻辑器件12可以是数据处理系统,或者可以是数据处理系统的组件。例如,可编程逻辑器件12可以是图21所示的数据处理系统260的组件。数据处理系统260包括主机处理器262、存储器和/或存储电路264、以及网络接口266。数据处理系统260可以包括更多或更少的组件(例如,电子显示器、用户界面结构、专用集成电路(asic))。主机处理器262可以包括可以管理对数据处理系统260(例如,用于执行机器学习、视频处理、语音辨识、图像辨识、数据压缩、数据库搜索排名、生物信息学、网络安全模式识别、空间导航等)的数据处理请求的任何合适的处理器,例如处理器或精简指令处理器(例如,精简指令集计算机(risc)、先进risc机器(arm)处理器)。存储器和/或存储电路264可以包括随机存取存储器(ram)、只读存储器(rom)、一个或多个硬盘驱动器、闪速存储器等。存储器和/或存储电路264可以被认为是可编程逻辑器件12的外部存储器,并且可以保存供数据处理系统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)和微处理器,仅举几例。

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

本公开内容中阐述的实施例可以易于各种修改和替代形式,具体实施例已经通过示例的方式在附图中示出并且已经在本文中详细描述。然而,可以理解的是,本公开内容不旨在限于所公开的特定形式。本公开内容将覆盖落入如由以下所附权利要求限定的公开内容的精神和范围内的所有修改、等同物和替代物。此外,本文提出和要求保护的技术被引用并应用于实际性质的材料对象和具体实例,所述技术显然改进了本技术领域,并且如此不是抽象的、无形的或纯理论的。此外,如果附于本说明书的任何权利要求包含一个或多个被指定为“用于[执行][功能]……的单元”或“用于[执行][功能]……的步骤”的元素,则意图是这样元素要根据美国专利法§112(f)进行解释。然而,对于任何包含以任何其他方式指定的元素的权利要求,意图是这样的元素不将根据美国专利法§112(f)进行解释。

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