CN111183419A - 可编程设备和处理***在集成电路封装中的集成 - Google Patents
可编程设备和处理***在集成电路封装中的集成 Download PDFInfo
- Publication number
- CN111183419A CN111183419A CN201880063416.4A CN201880063416A CN111183419A CN 111183419 A CN111183419 A CN 111183419A CN 201880063416 A CN201880063416 A CN 201880063416A CN 111183419 A CN111183419 A CN 111183419A
- Authority
- CN
- China
- Prior art keywords
- programmable
- processing system
- interface
- package
- coupled
- 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.)
- Granted
Links
- 238000012545 processing Methods 0.000 title claims abstract description 183
- 230000010354 integration Effects 0.000 title description 5
- 230000002093 peripheral effect Effects 0.000 claims abstract description 171
- 239000000758 substrate Substances 0.000 claims abstract description 25
- 230000015654 memory Effects 0.000 claims description 86
- 238000004891 communication Methods 0.000 claims description 35
- 239000004065 semiconductor Substances 0.000 claims description 17
- 239000004744 fabric Substances 0.000 claims description 15
- 238000010586 diagram Methods 0.000 description 32
- 238000000034 method Methods 0.000 description 24
- 230000008569 process Effects 0.000 description 14
- 230000006870 function Effects 0.000 description 13
- 230000003068 static effect Effects 0.000 description 7
- 239000000872 buffer Substances 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 229910000679 solder Inorganic materials 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 150000003071 polychlorinated biphenyls Chemical class 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L23/00—Details of semiconductor or other solid state devices
- H01L23/52—Arrangements for conducting electric current within the device in operation from one component to another, i.e. interconnections, e.g. wires, lead frames
- H01L23/538—Arrangements for conducting electric current within the device in operation from one component to another, i.e. interconnections, e.g. wires, lead frames the interconnection structure between a plurality of semiconductor chips being formed on, or in, insulating substrates
- H01L23/5386—Geometry or layout of the interconnection structure
-
- 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
-
- 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/7892—Reconfigurable logic embedded in CPU, e.g. reconfigurable unit
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L23/00—Details of semiconductor or other solid state devices
- H01L23/48—Arrangements for conducting electric current to or from the solid state body in operation, e.g. leads, terminal arrangements ; Selection of materials therefor
- H01L23/50—Arrangements for conducting electric current to or from the solid state body in operation, e.g. leads, terminal arrangements ; Selection of materials therefor for integrated circuit devices, e.g. power bus, number of leads
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Power Engineering (AREA)
- Condensed Matter Physics & Semiconductors (AREA)
- Geometry (AREA)
- Logic Circuits (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Semiconductor Integrated Circuits (AREA)
- Microcomputers (AREA)
- Multi Processors (AREA)
Abstract
一种示例集成电路(IC)封装包括:布置在基板(118)上的处理***(104)和可编程IC(106),处理***通过基板的互连(112)耦合到可编程IC;处理***包括耦合到环形互连(210)的部件(202…208),部件包括处理器(202)和接口控制器(214)。可编程IC包括:通过互连耦合到接口控制器的接口端点(218);以及至少一个***设备(230),其耦合到接口端点并且被配置用于通过互连端点和接口控制器与处理***的环形互连通信。
Description
技术领域
本公开的示例一般地涉及电子电路,并且特别地涉及可编程设备和处理***在集成电路(IC)封装中的集成。
背景技术
现代中央处理器(CPU)是复杂的片上***(SoC)设备,其在单个半导体裸片上集成了多个微处理器内核、图形引擎和其他固定功能。CPU可以包括扩展总线接口,诸如***部件互连快速(PCIe)接口。在一个典型配置中,具有CPU的集成电路(IC)封装被安装到印刷电路板(PCB)。各种***设备以固定或可移除的方式被安装到CPU IC封装外部的PCB上。***设备通过PCB和CPU IC封装的针脚耦合到CPU的PCIe接口。这种配置具有较大的占地面积,至少需要多个IC安装在PCB上,并且在最差情况下需要用于扩展端口(具有***设备的其他PCB可以插到其中)的空间。
可编程集成电路(IC)通常用于根据用户可配置输入来实施数字逻辑运算。示例可编程IC包括复杂可编程逻辑器件(CPLD)和现场可编程门阵列(FPGA)。CPLD通常包括几个功能块,这些功能块是基于具有乘积和逻辑的可编程逻辑阵列(PLA)架构。可配置的互连矩阵在功能块之间传送信号。
一种类型的FPGA包括可编程区块的阵列。可编程区块包括各种类型的逻辑块,例如,可以包括输入/输出块(IOB)、可配置逻辑块(CLB)、专用随机存取存储器块(BRAM)、乘法器、数字信号处理块(DSP)、处理器、时钟管理器、延迟锁定环(DLL)、总线或网络接口(诸如,***部件互连快速(PCIe)和以太网等)。每个可编程区块通常包括可编程互连和可编程逻辑两者。可编程互连通常包括通过可编程互连点(PIP)互连的大量不同长度的互连线。可编程逻辑使用可编程元件来实施用户设计的逻辑,可编程元件可以包括例如函数发生器、寄存器、算术逻辑等。
可编程IC可以用于实施供CPU使用的***设备,诸如用作硬件加速器。与在通用CPU上执行的软件相比,硬件加速涉及使用硬件来更有效地执行一些功能。硬件加速器是专用硬件,其被设计成为一些应用实施硬件加速。示例应用包括神经网络、视频编码、解码、代码转换等、网络数据处理,等等。这种硬件加速器通常被实施为插到主板上插槽中的PCIe卡。CPU和可编程IC是两个独立的IC,它们通过主板上的部件而物理隔离。期望提供一种具有CPU和用作***设备的可编程IC的计算***的更有效的实施方式。
发明内容
描述了可编程设备和处理***在集成电路(IC)封装中的集成。在一个示例中,一种IC封装包括:布置在基板上的处理***和可编程IC,处理***通过基板的互连耦合到可编程IC;处理***包括耦合到环形互连的部件,部件包括处理器和接口控制器。可编程IC包括:通过互连耦合到接口控制器的接口端点;以及至少一个***设备,其耦合到接口端点并且被配置用于通过互连端点和接口控制器与处理***的环形互连通信。
在一些实施例中,可编程IC可以包括可编程结构。
在一些实施例中,可编程IC可以包括耦合到可编程结构的嵌入式处理***。
在一些实施例中,可以在可编程结构中对至少一个***设备进行编程。
在一些实施例中,接口控制器和接口端点可以均包括一个或多个端口,该一个或多个端口被配置用于使用至少一个流接口进行通信。
在一些实施例中,基板可以包括封装接口,并且可编程IC可以耦合到该封装接口。
在一些实施例中,IC封装还可以包括一个或多个其他IC,其耦合到处理***和可编程IC。
在另一示例中,一种IC封装包括:布置在半导体裸片上的处理***和可编程IC;处理***包括耦合到环形互连的部件,部件包括处理器和接口电路;可编程IC耦合到环形互连,并且包括被配置用于与所述环形互连通信的至少一个***设备。
在一些实施例中,可编程IC可以包括可编程结构。
在一些实施例中,可编程IC可以包括耦合到可编程结构的嵌入式处理***。
在一些实施例中,可以在可编程结构中对至少一个***设备进行编程。
在一些实施例中,处理器和可编程IC均可以包括一个或多个端口,该一个或多个端口被配置用于使用至少一个流接口进行通信。
在另一示例中,一种IC封装包括:布置在半导体裸片上的处理***和可编程IC;处理***包括耦合到环形互连的部件,部件包括处理器、接口电路和存储器;可编程IC耦合到环形互连,并且包括被配置用于与环形互连和至少一个存储器通信的至少一个***设备。
在一些实施例中,可编程IC的至少一个存储器可以不耦合到环形互连。
在一些实施例中,可编程IC的至少一个存储器可以耦合到环形互连。
在一些实施例中,IC封装还可以包括封装接口,并且可编程IC可以耦合到封装接口。
在一些实施例中,可编程IC可以包括可编程结构。
在一些实施例中,可编程IC可以包括耦合到可编程结构的嵌入式处理***。
在一些实施例中,可以在可编程结构中对至少一个***设备进行编程。
在一些实施例中,处理器和可编程IC均可以包括一个或多个端口,该一个或多个端口被配置用于使用至少一个流接口进行通信。
在另一示例中,一种IC封装包括:布置在半导体裸片上的处理***和可编程IC;处理***包括耦合到环形互连的部件,环形互连包括通过环到环连接器耦合到第二子环的第一子环,部件包括处理器和接口电路;可编程IC耦合到第一子环,并且包括被配置用于与所述第一子环通信的至少一个***设备。
在一些实施例中,部件还可以包括耦合到第二子环的图形处理单元(GPU)。
在一些实施例中,可编程IC可以包括可编程结构。
在一些实施例中,可编程IC可以包括耦合到可编程结构的嵌入式处理***。
在一些实施例中,可以在可编程结构中对至少一个***设备进行编程。
在一些实施例中,处理器和可编程IC可以均包括一个或多个端口,该一个或多个端口被配置用于使用至少一个流接口进行通信。
参考以下详细描述可以理解这些和其他方面。
附图说明
为了可以详细地理解上述特征的方式,可以通过参考示例实施方式来获得上面简要概述的更具体的描述,其中一些示例实施方式在附图中被图示。然而,应当注意,附图仅图示了通常的示例实施方式,因此不应当视为对其范围的限制。
图1是描绘根据一个示例的集成电路(IC)封装的框图。
图2是描绘图1的IC封装中的处理***和可编程IC的示例的框图。
图3是描绘根据一个示例的可编程IC中的***电路***的框图。
图4是根据一个示例更详细地描绘图3的***电路***的框图。
图5是描绘根据一个示例的计算***的框图。
图6是描绘根据一个示例的可编程IC的框图。
图7是描绘根据一个示例的可编程IC的片上***(SoC)实施方式的框图。
图8图示了可编程IC的现场可编程门阵列(FPGA)实施方式。
图9是描绘根据一个示例的操作IC封装中的可编程IC的方法的流程图。
图10是描绘根据另一示例的IC封装的框图。
图11是描绘图10的IC封装中的处理***的示例实施方式的框图。
图12是描绘图10的IC封装中的处理***的另一示例实施方式的框图。
图13是描绘图10的IC封装中的处理***的又一示例实施方式的框图。
图14是描绘被配置用于使用流接口进行通信的图1的IC封装的示例实施方式的框图。
图15是描绘被配置用于使用流接口进行通信的图10的IC封装的示例实施方式的框图。
图16是根据一个示例更详细地描绘***电路***的框图。
图17是描绘根据一个示例的在处理***中操作可编程IC的方法的流程图。
为了便于理解,在可能的地方使用了相同的附图标记来指定图中共有的相同元件。可以预期,一个示例的元件可以被有益地合并在其他示例中。
具体实施方式
在下文中参考附图描述各种特征。应当注意,附图可以按比例绘制,也可以不按比例绘制,并且贯穿附图,相同结构或功能的元件由相同的附图标记表示。应当注意,附图仅旨在促进对特征的描述。它们不旨在作为所要求保护的发明的详尽描述或作为对所要求保护的发明的范围的限制。另外,所说明的示例不必具有所示的所有方面或优点。结合特定示例描述的方面或优点不必限于该示例,并且可以在任何其他示例中被实践,即使未如此图示或未如此明确描述。
描述了可编程设备和处理***在集成电路(IC)封装中的集成。本文描述的示例技术将可编程结构(诸如现场可编程门阵列(FPGA)结构)集成到具有环形互连的高性能处理***中。在一个示例中,IC封装包括布置在基板上的处理***和可编程IC。处理***和可编程IC通过基板的互连耦合。处理***包括耦合到环形互连的部件,部件包括处理器和接口控制器。可编程IC包括通过基板上的互连耦合到接口控制器的接口端点。可编程IC还包括***设备,***设备耦合到接口端点并且被配置用于通过互连端点和接口控制器与处理***的环形互连通信。在一个示例中,可编程IC通过***部件接口快速(PCIe)连接而连接到处理***的环形互连。在一些示例中,可以基于可编程IC与处理***之间的基板互连的已知特性来优化可编程IC与处理***之间的PCIe连接的物理层。在其他示例中,可以使用其他芯片到芯片互连协议的优化版本代替PCIe,诸如快速路径互连(QPI)、Omnipath、Infiniband等。以这种方式,在可编程IC中实施的***设备可以用作处理***的加速器,而无需用于PCIe插槽的附加板空间,也无需具有带有PCIe连接器的可编程IC的附加板。
在另一示例中,一种IC封装包括布置在半导体裸片上的处理***和可编程IC(与布置在相同封装中形成对比)。处理***包括耦合到环形互连的部件(例如,处理器和接口电路)。可编程IC耦合到环形互连,并且包括被配置用于与环形互连通信的***设备。
在另一示例中,一种IC封装包括布置在半导体裸片上的处理***和可编程IC(与布置在相同封装中形成对比)。处理***包括耦合到环形互连的部件(例如,处理器接口电路和存储器)。可编程IC耦合到环形互连,并且包括被配置用于与环形互连和存储器通信的***设备。
在另一示例中,一种IC封装包括布置在半导体裸片上的处理***和可编程IC(与布置在相同封装中形成对比)。处理***包括耦合到环形互连的部件。环形互连包括通过环到环连接器耦合到第二子环的第一子环。部件包括处理器和接口电路。可编程IC耦合到第一子环并且包括被配置用于与第一子环通信的至少一个***设备。
下面关于附图描述示例技术的这些和另外的方面。
图1是描绘根据一个示例的集成电路(IC)封装102的框图。IC封装102包括处理***104和可编程IC 106。处理***104被实施在半导体裸片上,并且包括一个或多个中央处理单元(CPU)和其他固定功能,包括***接口控制器(例如,***部件互连快速(PCIe)接口控制器等)。在下面关于图2描述处理***104的一个示例实施方式。可编程IC 106被实施在另一半导体裸片上,并且可以是现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)、具有FPGA/CPLD功能的片上***(SoC)或其他类型的可编程设备。处理***104和可编程IC106被电气地和机械地安装到基板118(诸如中介层、封装基板等)。基板118被布置在IC封装102中,IC封装102可以在其上包括盖或半导体裸片的某种其他形式的封装。
处理***104可以通过形成在基板118上的互连112或通过直接裸片堆叠电耦合到可编程IC 106。如下面进一步描述的,处理***104可以包括接口控制器(例如,PCIe控制器),接口控制器通过互连112耦合到可编程IC 106中的接口端点(例如,PCIe端点)。IC封装102包括封装接口108。封装接口108可以包括焊球、焊料凸块、金属针脚等。封装接口108被配置为与印刷电路板(PCB)等对接,以便将IC封装102电气地和机械地安装到PCB上。处理***104可以包括通过形成在基板118上的互连116耦合到封装接口108的电路。可编程IC 106可以包括通过形成在基板118上的互连114耦合到封装接口108的电路。
封装接口108可以耦合到其他电路***,包括例如随机存取存储器(RAM)132、非易失性存储器(NVM)134、***设备136和支持电路138。RAM132可以包括动态RAM(DRAM)(例如,双倍数据速率(DDR)RAM等)、静态RAM(SRAM)等。NVM 134可以包括只读存储器(ROM)(例如,电可擦除可编程ROM(EEPROM)等)和/或非易失性RAM(NVRAM)(例如,闪存、固态存储等)。***设备136可以包括在本领域中已知的在计算***中使用的任何类型的***电路。支持电路138可以包括用于支持IC封装102的电源和类似类型的电路。如本文进一步描述的,RAM132、NVM 134和***设备136可以被称为“外部”RAM、NVM和/或***设备,以将这些电路与IC封装102内部实施的RAM、NVM和/或***设备区分开。
可编程IC 106包括***电路***110。***电路***110被配置用于通过接口(例如,PCIe接口)与处理***104通信。***电路***110包括硬化电路、编程电路或其组合。
如本文中所使用的,“硬化电路”被制造为IC的一部分。与可编程逻辑不同,硬化电路不是通过可编程逻辑在可编程IC中的配置来形成的。硬化电路***通常被认为具有例如专用电路块和互连,它们具有特定的功能并且无需首先将配置比特流加载到可编程IC 106中即可起作用。硬化电路***可以具有一个或多个操作模式,可以根据参数设定来设置或选择一个或多个操作模式。例如,可以通过将值存储在可编程IC 106内的一个或多个存储器元件(例如,寄存器)中来实现参数设定。可以例如通过将配置比特流加载到可编程IC106中来设置操作模式。尽管具有这种能力,但硬化电路***也不被认为是“可编程逻辑”。与硬化电路相反,编程电路是通过加载配置比特流而在可编程IC的可编程逻辑中配置的电路。
IC封装102包括供处理***104使用的***电路***110。***电路***110的部分可以是被配置在可编程IC 106的可编程逻辑中的编程电路***,从而允许***设备的特定类型和数目随时间动态改变。在下面进一步描述***电路***110的示例。与IC封装102外部的***设备136相反,***电路***110实施了片上或内部***设备。
在一个示例中,IC封装102可以包括一个或多个其他IC 120。每个IC 120被实施在半导体裸片上,该半导体裸片机械地和电气地耦合到基板118。其他IC 120可以通过基板118上的互连126被电连接到处理***104和/或通过基板118上的互连130被电连接到可编程IC 106。其他IC 120可以包括通过基板118上的互连128耦合到封装接口108的电路。在一个示例中,其他IC 120可以包括RAM 122和/或非易失性存储器(NVM)124。RAM 122可以耦合到可编程IC 106、处理***104或可编程IC 106和处理***104两者(例如,共享存储器)。同样,NVM 124可以耦合到可编程IC 106、处理***104或可编程IC 106和处理***104两者。RAM 122和/或NVM 124可以耦合到封装接口108。RAM 122和NVM 124可以分别是与RAM 132和NVM 134类似的设备。
在以上示例中,使用被安装到IC封装102内的基板118上的两个单独的半导体裸片来实施处理***104和可编程IC 106。在一个备选的示例中,使用布置在IC封装102内的单个半导体裸片来实施处理***104和可编程IC 106。在这种情况下,单个半导体裸片可以被安装到基板118,或者可以省略基板118。可以在与处理***104和可编程IC 106分离的一个或多个裸片上实施其他IC 120。备选地,可以在与处理***104和/或可编程IC 106相同的裸片上实施一个或多个其他IC 120。
在操作中,处理***104执行可以被存储在RAM 132和/或NVM 134中的软件代码。响应于执行软件代码,处理***104可以与可编程IC 106中的***电路***110通信。例如,***电路***110可以代表处理***104以硬件(例如,硬件加速器)执行一个或多个功能。当向IC封装102供电时,可编程IC 106可以被配置为:使用被存储在NVM 124和/或NVM 134中的配置数据(例如,配置比特流)来实施***电路***110的至少一部分。在初始配置之后,可编程IC 106可以被动态地重新配置(例如,使用部分重新配置)以改变***电路***110的全部或一部分的功能。在一个示例中,处理***104执行软件代码以重新配置可编程IC 106(例如,通过PCIe接口)。
图2是描绘处理***104和可编程IC 106的示例的框图。处理***104包括一个或多个CPU(例如,示出了多个CPU 202)、一个或多个高速缓冲存储器(例如,示出了多个高速缓冲存储器2-4)和接口电路206。CPU 202可以包括一个或多个核和相关联的电路***(例如,高速缓冲存储器、存储器管理单元(MMU)、中断控制器等)。在示例中,处理***104可以包括附加部件,诸如图形处理单元(GPU)208、专用电路(例如,机器学习电路)等。CPU 202、高速缓冲存储器、接口电路206和其他部件(例如,GPU 208、张量处理单元(TPU)209等)耦合到环形互连210。环形互连210是与其耦合的各个部件之间的裸片上总线。每个部件包括到环形互连210的本地接口。处理***104的各个部件可以通过环形互连210彼此通信。接口电路206向耦合到环形互连210的其他部件(例如,CPU 202和GPU 208)提供片外接口。
在一个示例中,环形互连210包括基于环形的拓扑,其具有用于每个连接的部件的接口。环形互连210可以是双向环,其具有特定宽度的数据总线,并具有用于请求、监听和确认的单独的线。CPU 202中的每个是环形互连210上的独特的部件。类似地,GPU 208(如果存在)是环形互连210上的独特部件。接口电路206可以共享到环形互连210的接口,或者接口电路206中的每个接口部件可以包括其自己的到环形互连210的接口。环形互连210可以包括各种拓扑(例如,环形、星形、网格等)。
高速缓存存储器204可以提供连接到环形互连210的共享的最后一级高速缓存(LLC)。可以向每个CPU 202分配共享的LLC高速缓存的一片。由高速缓存存储器204实施的LLC高速缓存也可以由环形互连210上的其他部件(例如,GPU 208)访问。
在一个示例中,接口电路206包括PCIe控制器214和一个或多个其他控制器216。取决于耦合到环形互连210的部件,其他控制器216可以包括存储器控制器、显示控制器等。CPU 202通过环形互连210耦合到PCIe控制器214。PCIe控制器214代表CPU 202实施PCIe根联合体。
可编程IC 106中的***电路***110包括PCIe端点电路(“PCIe端点218”)和一个或多个***设备230。可编程IC 106还可以包括其他电路***224。PCIe端点218通过互连112耦合到PCIe控制器214。PCIe端点218实施将***设备230耦合到PCIe控制器214的交换机。在一个示例中,***设备230被配置在可编程IC 106的可编程逻辑中,并且PCIe端点218是可编程IC 106内的硬化电路。在其他示例中,PCIe端点218的至少一部分可以被配置在可编程IC 106的可编程逻辑中。在其他示例中,***设备230中的一个或多个可以是可编程IC106中的硬化电路。其他电路***224可以包括被配置在可编程IC 106的可编程逻辑中的编程电路***、可编程IC 106内的硬化电路或它们的组合。
在其他示例中,每个***设备230可以包括其自己的PCIe端点,而不是包括在***设备230中间共享并且用作可编程IC 106中的交换机的单个PCIe端点。在另一示例中,可编程IC 106可以包括多个PCIe端点,每个PCIe端点在一组***设备230中间共享。
在示例中,PCIe控制器214包括耦合到IC封装102的封装接口108的接口220。这使得处理***104能够根据需要与IC封装102外部的附加***设备(例如,***设备136)通信。在一些示例中,可以省略接口220,并且PCIe控制器214仅与可编程IC 106中的PCIe端点进行通信。其他控制器216包括耦合到IC封装102的封装接口108和/或其他IC 120的接口222。可以使用处理***104和封装接口108之间的互连116来实施接口220和222。例如,其他控制器216可以包括用于控制对RAM 132和/或RAM 122的访问的存储器控制器。其他控制器216可以包括用于读取和写入NVM 134和/或NVM124的电路***。
在一个示例中,其他电路***224包括接口228。接口228可以耦合到IC封装102的封装接口108、可以耦合到其他IC 120(例如,图1中所示的NVM 124),或其组合。在示例中,***电路***110包括接口226,接口226耦合到IC封装102的封装接口108、耦合到其他IC120(例如,图1中所示的RAM 122)或其组合。这使得可编程IC 106外部的电路能够直接与***电路***110通信。在一些示例中,可以省略接口226。可以使用可编程IC 106和封装接口108之间的互连114和/或可编程IC 106和其他IC 120之间的互连130来实施接口226和228。在一个示例中,***电路***110包括到其他电路***224的接口229。可以使用可编程IC106中的专用和/或可编程互连来实施接口229。
在所示的示例中,可编程IC 106中的***电路***110,通过由PCIe控制器214和PCIe端点218实施的PCIe接口,耦合到环形互连210及其上的部件。可以采用其他类型的接口。例如,PCIe控制器214和PCIe端点218可以被快速路径互连(QPI)控制器和QPI端点代替。在另一示例中,PCIe控制器214和PCIe端点218可以被定制接口控制器和定制接口端点代替,该定制接口控制器和定制接口端点被专门设计为支持处理***104和可编程IC 106之间的通信。本领域技术人员将理解,可以采用各种接口来使能可编程IC 106中的***电路***110与环形互连210上的处理***104中的部件之间的通信。
图3是描绘根据一个示例的***电路***110的框图。***电路***110通常包括静态区域302和可编程区域304。静态区域302包括接口电路306(例如,图2中所示的PCIe端点218)。可编程区域304可以包括***设备230。在一些示例中,可编程区域304还包括一些接口电路306A。在一些示例中,***电路***110可以包括不止一个可编程区域304,可编程区域304中的每个可以单独地配置有***设备230。
静态区域302是“静态的”,因为其电路***跨可编程区域304的重新配置保持恒定。在一个示例中,接口电路306包括PCIe端点电路、直接存储器访问(DMA)控制器、互连、存储器控制器、存储器接口电路(例如,DDR接口)、解耦器电路(以支持部分重新配置)、闪存编程器、调试电路等。在一些示例中,可编程区域304不包括任何接口电路306。在其他示例中,上述接口电路中的一些(例如,DMA控制器)可以被实施在可编程区域304中(作为接口电路306A)。
图4是根据一个示例更详细地描绘***电路***110的框图。***电路***110包括接口电路306和***设备230。在该示例中,接口电路306包括PCIe端点218、DMA控制器404、互连电路(“互连406”)、存储器控制器410、存储器接口412、其他接口414。接口电路306可以包括其他电路(例如,解耦器电路、调试电路等),为了清楚起见,将其省略。PCIe端点218提供到***总线(例如,到PCIe控制器214)的物理接口。PCIe端点218可以包括用于控制实施***设备230的可编程逻辑的重新配置的介质配置访问端口(MCAP)402。DMA控制器404有助于处理***104和***电路***110之间的DMA操作。
互连406耦合DMA控制器404、***设备230、存储器控制器410和其他接口414。存储器控制器410耦合到存储器接口412。存储器接口412可以耦合到可编程IC 106外部的RAM(例如,RAM 122和/或RAM 132)、耦合到可编程IC 106内部的RAM(下面描述的示例),或其组合。其他接口414可以耦合到可编程IC 106中的其他电路***224(例如,其他硬化电路和/或编程电路)。
在示例中,使用被定义为高级微控制器总线架构标准的一部分的高级可扩展接口(AXI)互连来实施互连406。例如,互连406可以支持AXI4、AXI4-Lite和AXI4-Stream协议。AXI4协议定义了高性能的存储器映射接口。AXI4-Lite协议定义了低吞吐量的存储器映射接口。AXI4-Stream协议定义了高速流接口。AXI规范定义了单个AXI主设备和单个AXI从设备之间的接口。互连406将AXI主设备耦合到AXI从设备。AXI4和AXI4-Lite接口包括五个不同的通道(即,读取和写入地址通道、读取和写入数据通道以及写入响应通道)。AXI4-Stream协议定义了用于在主设备和从设备之间传输流数据的单个通道。在存储器映射的AXI(例如AXI4或AXI4-Lite)中,所有事务都涉及存储器空间内的目标地址和要传输的数据。在流式AXI(例如AXI-Stream)中,不存在或不需要地址的概念。DMA控制器404、***设备230、其他接口414和存储器控制器410中的每个包括一个或多个AXI主设备和一个或多个AXI从设备以在彼此中间进行通信。
在操作中,处理***104通过PCIe端点218访问***电路***110。处理***104可以使用由DMA控制器404处理的DMA事务,将数据移动到***电路***110,以及从***电路***110接收数据。处理***104可以将数据直接移动到***设备230,并且可以直接从***设备230接收数据。处理***104还可以将数据移动到存储器控制器410,并且可以从存储器控制器410接收数据。例如,不是直接向***设备230发送数据以及直接从***设备230接收数据,而是处理***104可以将数据移动到存储控制器410,以使用DMA事务存储在RAM中。***设备230可以访问和处理存储在RAM中的数据。然后,处理***104可以使用DMA事务从RAM中取回经处理的数据。在其他示例中,存储器控制器410中的一个或多个不可被处理***104访问,并且是***设备230私有的。
处理***104还可以将数据直接移动到其他接口414,并且可以直接从其他接口414接收数据。备选地,不是直接向其他接口414发送数据以及直接从其他接口414接收数据,而是处理***104可以将数据移动到存储控制器410,以使用DMA事务存储在RAM中。其他接口414可以访问和处理存储在RAM中的数据。然后,处理***104可以使用DMA事务从RAM中取回经处理的数据。在其他示例中,其他接口414中的一个或多个不可被处理***104访问,并且是***设备230私有的。
图5是描绘根据一个示例的计算***500的框图。计算***500包括硬件504和在硬件504上执行的软件506。硬件504包括至少具有处理***104和可编程IC 106的IC封装102(为了清楚起见,从图5中省略了其他IC 120)。硬件504还包括耦合到IC封装102的电路***,诸如RAM 132、NVM 134、支持电路138和***设备136。软件506包括操作***(OS)508、驱动器堆栈510和应用512。处理***104被配置用于执行软件506以执行本文描述的一个或多个操作,并且软件506可以被存储在RAM 132或其他存储设备中。在一个实施例中,IC封装102可以包括布置在处理***104和可编程IC 106之间的FIFO缓冲器(例如,FIFO缓冲器可以被布置在处理***104和/或可编程IC 106中的一个或两个中)。
OS 508可以是本领域中已知的任何商品操作***,诸如Microsoft等。驱动器堆栈510包括驱动器和库,该驱动器和库向***电路***110提供应用编程接口(API)以获得其命令和控制。应用512包括通过驱动器堆栈510调用***电路***110以执行一些工作的软件。应用512可以包括神经网络、视频处理、网络处理或类似类型的应用,其将一些功能从处理***104卸载到***电路***110。应用512还可以控制可编程IC 106的配置以改变***电路***110的功能。
驱动器堆栈510可以包括各种库、驱动器等,诸如DMA驱动器、硬件抽象层(HAL)驱动器和运行时库。运行时库提供了供应用512使用的API。运行时库提供了应用512与HAL驱动器之间的接口。HAL驱动器同样包括供运行时库使用的API。HAL驱动器提供了运行时库和DMA驱动器之间的接口。DMA驱动器包括用于控制***电路***110的API。特别地,DMA驱动器包括用于通过DMA控制器404而访问***设备230、存储器控制器410和/或其他接口414的API。
图6是描绘根据一个示例的可编程IC 106的框图。可编程IC 106包括可编程逻辑3、配置逻辑25和配置存储器26。可编程逻辑3包括逻辑单元30、支持电路31和可编程互连32。逻辑单元30包括可以被配置为实施多个输入的通用逻辑功能的电路。支持电路31包括专用电路,诸如收发器、输入/输出块、数字信号处理器、存储器等。支持电路31可以包括用于输入到逻辑单元30和从逻辑单元30输出的FIFO缓冲器。可以使用可编程互连32将逻辑单元和支持电路31互连。通过配置逻辑25将用于编程逻辑单元30的信息、用于设置支持电路31的参数的信息以及用于对可编程互连32进行编程的信息存储在配置存储器26中。配置逻辑25可以从非易失性存储器27或任何其他源(例如,DRAM 28或从其他电路29)获得配置数据。在一些示例中,可编程IC 106包括处理***2。处理***2可以包括微处理器、存储器、支持电路、IO电路等。处理***2可以被称为“嵌入式”处理***,以将其与IC封装102中的处理***104区分开。
图7是描绘根据一个示例的可编程IC 106的片上***(SoC)实施方式的框图。在该示例中,可编程IC 106包括处理***2和可编程逻辑3。处理***2包括各种处理单元,诸如实时处理单元(RPU)4、应用处理单元(APU)5、图形处理单元(GPU)6、配置和安全单元(CSU)12、平台管理单元(PMU)122等。处理***2还包括各种支持电路,诸如片上存储器(OCM)14、收发器7、***设备8、互连16、DMA电路9、存储器控制器10、***设备15和多路复用IO(MIO)电路13。处理单元和支持电路通过互连16互连。PL 3也耦合到互连16。收发器7耦合到外部针脚24。PL 3耦合到外部针脚23。存储控制器10耦合到外部针脚22。MIO 13耦合到外部针脚20。PS 2通常耦合到外部针脚21。APU 5可以包括CPU 17、存储器18和支持电路19。
在图7的示例中,***电路***110可以是布置在PL 3中的编程电路、硬化电路或其组合。在另一示例中,可以使用PS 2来实施***电路***110的一些部分。在另一示例中,可以通过***电路***110的其他接口414访问PS 2。在这种示例中,处理***104和/或***设备230可以访问PS 2。
参考PS 2,处理单元中的每个包括一个或多个CPU和相关联的电路,诸如存储器、中断控制器、DMA控制器、存储器管理单元(MMU)、浮点单元(FPU)等。互连16包括被配置用于互连处理单元,以及将PS 2中的其他部件互连到处理单元的各种交换机、总线、通信链路等。
OCM 14包括一个或多个RAM模块,其可以分布在整个PS 2中。例如,OCM 14可以包括电池支持RAM(BBRAM)、紧密耦合存储器(TCM)等。存储器控制器10可以包括用于访问外部DRAM的DRAM接口。***设备8、15可以包括向PS 2提供接口的一个或多个部件。例如,***设备136可以包括图形处理单元(GPU)、显示器接口(例如显示器端口、高清多媒体接口(HDMI)端口等)、通用串行总线(USB)端口、以太网端口、通用异步收发器(UART)端口、串行***设备接口(SPI)端口、通用IO(GPIO)端口、串行高级技术附件(SATA)端口、PCIe端口等。***设备15可以耦合到MIO 13。***设备8可以耦合到收发器7。收发器7可以包括串行器/解串器(SERDES)电路、MGT等。
图8图示了可编程IC 106的现场可编程门阵列(FPGA)实施方式。图7中所示的可编程IC 106的SoC实施方式中的PL 3也可以具有图8中所示的结构。FPGA实施方式包括大量不同的可编程区块,包括收发器37、可配置逻辑块(“CLB”)33、随机存取存储器块(“BRAM”)34、输入/输出块(“IOB”)36、配置和时钟逻辑(“CONFIG/CLOCKS”)42、数字信号处理模块(“DSP”)35、专用输入/输出模块(“I/O”)41(例如,配置端口和时钟端口)和其他可编程逻辑39(诸如数字时钟管理器、模数转换器、***监控逻辑等)。FPGA还可以包括PCIe接口40、模数转换器(ADC)38等。
在一些FPGA中,每个可编程区块可以包括至少一个可编程互连元件(“INT”)43,其具有到相同区块内的可编程逻辑元件的输入和输出端子48的连接,如由在图8的上部包括的示例所示的。每个可编程互连元件43还可以包括到相同区块或其他区块中的相邻可编程互连元件的互连段49的连接。每个可编程互连元件43还可以包括到逻辑块(未示出)之间的通用布线资源的互连段50的连接。通用布线资源可以包括逻辑块(未示出)之间的布线通道,其包括互连段(例如,互连段50)的轨道和用于连接互连段的交换机块(未示出)。通用布线资源的互连段(例如,互连段50)可以跨越一个或多个逻辑块。可编程互连元件43与通用布线资源一起实施了用于所图示的FPGA的可编程互连结构(“可编程互连”)。
在示例实施方式中,CLB 33可以包括可配置逻辑元件(“CLE”)44,其可以被编程为实施用户逻辑以及单个可编程互连元件(“INT”)43。除了一个或多个可编程互连元件之外,BRAM 34还可以包括BRAM逻辑元件(“BRL”)45。通常,区块中包括的互连元件的数目取决于区块的高度。在图示的示例中,BRAM区块具有与五个CLB相同的高度,但是也可以使用其他数目(例如四个)。除了适当数目的可编程互连元件之外,DSP区块35还可以包括DSP逻辑元件(“DSPL”)46。除了可编程互连元件43的一个实例之外,IOB 36还可以包括例如输入/输出逻辑元件(“IOL”)47的两个实例。本领域技术人员将清楚,连接到例如I/O逻辑元件47的实际的I/O垫通常不限于输入/输出逻辑元件47的区域。
在图示的示例中,靠近裸片的中心的水平区域(在图8中示出)用于配置、时钟和其他控制逻辑。从该水平区域或列延伸的垂直列51用于跨FPGA的宽度分配时钟和配置信号。
利用图8中图示的架构的一些FPGA包括附加逻辑块,该附加逻辑块破坏了构成FPGA很大一部分的规则柱状结构。附加逻辑块可以是可编程块和/或专用逻辑。
注意,图8仅旨在图示示例性FPGA架构。例如,一行中逻辑块的数目、行的相对宽度、行的数目和顺序、行中包括的逻辑块的类型、逻辑块的相对大小以及图8的上部包括的互连/逻辑实施方式纯粹是示例性的。例如,无论CLB出现在何处,实际的FPGA中通常包括一个以上的相邻CLB的行,以促进用户逻辑的有效实施,但是相邻CLB行的数目随FPGA的整体大小而变化。
图9是描绘根据一个示例的操作IC封装102中的可编程IC 106的方法900的流程图。方法900的各方面可以参考上面的图1-图8来理解。方法900包括三个主要阶段:在框902处,在IC封装102通电时配置可编程IC 106。在框908处,设备与可编程IC 106通信。在框916处,可编程IC 106在IC封装102的通电期间被重新配置。对于操作可编程IC 106的三个主要阶段中的每个阶段都有各种用例。
在IC封装102通电时,可以使用几个不同的过程来配置可编程IC 106。可编程IC106的配置逻辑25包括许多不同的配置模式,该许多不同的配置模式可以被分类成主模式和从模式。在主模式下,配置逻辑25驱动配置过程。示例主模式包括主串行***设备接口(SPI)模式、主字节***设备接口(BPI)模式、主串行模式和主SelectMAP模式。在主SPI模式中,配置逻辑25使用SPI协议从NVM加载配置比特流。NVM可以在IC封装102内部(例如,NVM124)或在IC封装102外部(例如,NVM 134)。主BPI模式类似地操作,但使用BPI协议代替SPI协议。主串行类似地操作,但使用串行协议。主SelectMAP模式类似地操作,但是使用并行接口而不是串行接口。在从模式中,外部设备驱动配置过程。示例从模式包括从串行模式和从SelectMAP模式(并行)。在这些从模式中的任一个中,外部设备可以是处理***104或某个其他微处理器或微控制器(例如,IC封装102中的其他IC 120的一部分或IC封装102外部的支持电路138的一部分)。外部设备从存储器(例如,NVM 124或NVM 134)读取配置数据,并且将配置数据提供给配置逻辑25。
在框904处,***电路***110的至少一部分被配置在可编程IC 106中。如果存在任何其他电路***224,则也可以在框904中配置这种其他电路***224的全部或一部分。例如,可以在框904中配置***电路***110的静态区域302。在框904中,可以将任何主模式或从模式用于可编程IC 106的配置。框904中的配置通常是硬件驱动的,即,功率被施加到IC封装102,并且由配置逻辑25(主模式)或由外部设备(从模式)来执行该配置过程。
在一些情况下,在框904处仅配置***电路***110的一部分(例如,静态区域302)。在这种情况下,可以在框906处配置***电路***110的其余部分。框906中的配置可以是如上所述的硬件驱动的或是软件驱动的。在软件驱动的过程中,例如,可编程IC 106可以被部分地重新配置,以使用处理***104通过MCAP 402实施***设备230。
在框908处,与可编程IC 106的通信可以被分为三个一般类别:在框910处,在处理***104和***电路***110之间执行通信。在框912处,在外部设备(在可编程IC 106外部)和***电路***110之间执行通信。在框914处,在内部设备(在可编程IC 106内部)和***电路***110之间执行通信。
在框910中,处理***104通过诸如PCIe等的接口向***电路***110发送数据和/或从***电路***110接收数据。处理***104可以使用DMA事务,通过接口将数据传输到***电路***110或者从***电路***110传输数据。备选地,处理***104可以通过接口将数据流传输到***电路***110。在一些情况下,处理***104可以通过共享存储器间接地向***电路***110提供数据或从***电路***110提供数据,该共享存储器可以被布置在可编程IC 106内部或被布置在可编程IC 106外部。
在框912中,可编程IC 106外部的设备与***电路***110通信。例如,在其他IC120、支持电路138或***设备136中的电路可以直接与***电路***110通信。备选地,这种电路可以通过共享存储器与***电路***110间接通信,该共享存储器可以被布置在可编程IC 106内部或被布置在可编程IC 106外部。
在框914中,可编程IC 106内部的设备与***电路***110通信。例如,其他电路***224中的电路可以与***电路***110直接通信。备选地,这种电路可以通过共享存储器与***电路***110间接通信,该共享存储器可以被布置在可编程IC 106内部或被布置在可编程IC 106外部。这种电路可以是可编程IC 106的可编程逻辑中的编程电路或可编程IC106中硬化电路(例如嵌入式处理***)。
在框916中,可以在对IC封装102施加功率时,重新配置可编程IC 106。例如,在框918处,可以使用与框902中描述的类似的过程来完全重新配置可编程IC 106。备选地,在框920处,可编程IC 106可以被部分地重新配置。例如,***电路***110的一个或多个***设备230可以被重新配置以实施不同的功能。
图10是描绘根据另一示例的IC封装1002的框图。在本示例中,IC封装1002包括形成在单个半导体裸片上的处理***104和可编程IC 106。如上所述,可编程IC 106包括***电路***110。可编程IC 106通过一个或多个环形互连耦合到处理***104中的其他部件,如以下示例中所描述的。处理***104通过IC封装1002中的互连1003耦合到封装接口1008。在示例中,IC封装1002可以包括耦合到处理***104的一个或多个其他IC 1020。因此,本示例与图1中的示例的不同之处在于,可编程IC 106耦合到处理***104内的内部环形互连,而不是通过诸如PCIe、QPI等的接口。
图11是描绘IC封装1002中的处理***104的示例实施方式的框图。在本示例中,处理***104包括CPU 202、高速缓冲存储器204和接口电路206,每个均耦合到环形互连210,如上面的示例中所描述的。特别地对于该示例,可编程IC 106也耦合到环形互连210。***电路***110可以被实施成可编程IC 106中的硬化电路、被实施成可编程IC 106的可编程逻辑中的编程电路,或其组合。如上所述,接口电路206包括PCIe控制器214和其他控制器216。备选地,PCIe控制器214可以被任何其他类似的接口控制器(例如,QPI控制器)代替。在示例中,处理***104可以包括耦合到环形互连210的其他部件,诸如GPU 208。
在本示例中,可编程IC 106可以与耦合到环形互连210的处理***104中的任何其他部件(例如,CPU 202、高速缓冲存储器204、接口电路206、GPU 208等)通信。可以由处理***104外部的电路通过接口电路206访问可编程IC 106。
图12是描绘IC封装1002中的处理***104的另一示例实施方式的框图。在本示例中,可编程IC 106耦合到环形互连210,如以上在图11的示例中所述的。在一个示例中,可编程IC 106包括诸如存储器1202(例如,随机存取存储器(RAM))和/或高速缓存1204的私有存储器。私有存储器1202、1204不能直接通过环形互连210访问。在另一示例中,可编程IC 106中的存储器1202、1204可以耦合到环形互连210,并且可以由环形互连210上的其他部件访问。在任一情况下,可编程IC 106还可以包括外部接口1206,以供处理***104外部的电路访问。这使得能够通过外部接口1206来直接访问可编程IC 106,而不是仅通过接口电路206来访问可编程IC 106。例如,外部接口1206可以包括用于配置可编程IC 106的配置接口。外部接口1206可以采用任何类型的接口,诸如PCIe、QPI等。为了清楚起见,可选的GPU 208被省略,但是可以被包括在图11中所示的处理***104中。
图13是描绘IC封装1002中的处理***104的又一示例实施方式的框图。在本示例中,处理***104包括通过环到环连接器1302耦合的两个子环210A和210B。环到环连接器1302可以是路由器、桥等。可编程IC 106与CPU 202、高速缓冲存储器204和接口电路206一起耦接到子环210B。CPU 202和高速缓冲存储器204耦合到子环210A。在一个示例中,其他部件可以耦合到子环210A和/或201B。例如,GPU 208可以耦合到子环210A。除了子环210A、210B之外,图13中所示的配置与图11的配置类似。本配置可以支持具有足够大带宽的可编程IC 106,在这种情况下,将环形互连210分成多个子环将是有益的。
当将处理***与可编程IC结合时,使用流接口的两者之间的通信是各种应用(诸如实时数据处理)中的一种高级通信模式。备选方案是直接存储器寻址,这是主要的通信范例。在示例中,除了存储器寻址模式之外,处理***104与可编程IC 106之间的互连还可以支持流模式。
图14是描绘被配置用于使用流接口进行通信的IC封装102的示例实施的框图。在该示例中,PCIe控制器214和PCIe端点218中的每个包括一个或多个端口1402。在一种模式中,端口1402可以被配置用于使用存储器寻址进行通信。在另一模式中,端口1402可以被配置用于使用流接口进行通信。一个示例流接口是AXI4流接口,但是可以使用其他流接口。在示例中,端口1402可以支持一个以上的流接口。
图15是描绘被配置用于使用流接口进行通信的IC封装1002的示例实施方式的框图。在该示例中,耦合到环形互连210的每个部件可以包括一个或多个端口1402。在一个模式中,端口1402可以被配置用于使用存储器寻址进行通信。在另一模式中,端口1402可以被配置用于使用流接口进行通信。一个示例流接口是AXI4流接口,但是可以使用其他流接口。在示例中,端口1402可以支持一个以上的流接口。
图16是根据示例更详细地描绘***电路***110的框图。如以上各种实施例中所描述的(例如,图10-图15),当将可编程IC 106布置在与处理***104相同的IC裸片上时,可以使用***电路***110的该示例。***电路***110包括接口电路1603和***设备230。在该示例中,接口电路1603包括环形接口1602、DMA控制器1604、互连电路(“互连1606”)、存储器控制器1610、存储器接口1612、其他接口1614。接口电路1603可以包括其他电路(例如,解耦器电路、调试电路等),为了清楚起见,将其省略。环形接口电路1602提供到环形互连210的物理接口。环形接口电路1602在环形互连210的协议和互连1606的协议之间转换。DMA控制器1604有助于处理***104和***电路***110之间的DMA操作。在一些示例中,DMA控制器1604可以被省略,并且可以将环形接口电路1602耦合到互连1606。
互连1606耦合DMA控制器1604、***设备230、存储器控制器1610和其他接口1614。存储器控制器410耦合到存储器接口1612。存储器接口1612可以耦合到可编程IC 106外部的RAM、耦合到可编程IC 106内部的RAM(例如,存储器1202和/或高速缓存1204),或其组合。其他接口1614可以耦合到可编程IC 106中的其他电路***(例如,其他硬化电路和/或编程电路)。
在示例中,使用被定义为高级微控制器总线架构标准的一部分的AXI互连来实施互连1606。例如,互连406可以支持AXI4、AXI4-Lite和AXI4-Stream协议。DMA控制器1604、***设备230、其他接口1614和存储器控制器1610中的每个包括一个或多个AXI主设备和一个或多个AXI从设备,以用于在彼此中间进行通信。
在操作中,处理***104通过环形接口电路1602访问***电路***110。处理***104可以使用存储器映射事务或流事务,将数据移动到***电路***110,以及从***电路***110接收数据。处理***104可以将数据直接移动到***设备230,或者可以直接从***设备230接收数据。处理***104还可以将数据移动到存储器控制器1610,并且可以从存储控制器1610接收数据。例如,不是直接向***设备230发送数据以及直接从***设备230接收数据,而是处理***104可以将数据移动到存储控制器1610,以使用DMA事务存储在RAM中。***设备230可以访问和处理存储在RAM中的数据。然后,处理***104可以使用DMA事务从RAM中取回经处理的数据。在其他示例中,存储器控制器1610中的一个或多个不可被处理***104访问,并且是***设备230私有的。
处理***104还可以将数据直接移动到其他接口1614,并且可以直接从其他接口1614接收数据。备选地,不是直接向其他接口1614发送数据以及直接从其他接口1614接收数据,而是处理***104可以将数据移动到存储控制器1610,以使用DMA事务存储在RAM中。其他接口1614可以访问和处理存储在RAM中的数据。然后,处理***104可以使用DMA事务从RAM中取回经处理的数据。在其他示例中,其他接口1614中的一个或多个不可被处理***104访问,并且是***设备230私有的。
图17是描绘根据一个示例的操作处理***104中的可编程IC 106的方法1700的流程图。方法900的各方面可以参考上面的图10-图16来理解(即,当将可编程IC 106布置在与处理***104相同的IC裸片上时)。方法1700包括三个主要阶段:在框1702处,在处理***104通电时配置可编程IC 106。在框1708处,设备与可编程IC 106通信。在框1716处,可编程IC 106在IC封装102的通电期间被重新配置。对于操作可编程IC 106的三个主要阶段中的每个阶段都有各种用例。
在处理***104通电时,可以使用几个不同的过程来配置可编程IC 106。可以使用主配置模式,使用布置在处理***104中或布置在处理***104外部的NVM来配置可编程IC106。可以使用从配置模式,使用布置在处理***104上的CPU 202或其他设备或者使用处理***104外部的设备来配置可编程IC 106。
在框1704处,***电路***110的至少一部分被配置在可编程IC 106中。如果存在任何其他电路***,则也可以在框1704中配置这种其他电路***的全部或一部分。在框1704中,可以将任何主模式或从模式用于可编程IC 106的配置。框1704中的配置通常是硬件驱动的,即,功率被施加到处理***104,并且由配置逻辑25(主模式)或由外部设备(从模式)来执行该配置过程。
在一些情况下,在框1704处仅配置***电路***110的一部分。在这种情况下,可以在框1706处配置***电路***110的其余部分。框1706中的配置可以是如上所述的硬件驱动的或是软件驱动的。在软件驱动的过程中,例如,可编程IC 106可以被部分地重新配置,以使用CPU 202,通过内部配置访问端口(ICAP)1616(图16)来实施***设备230。
在框1708处,与可编程IC 106的通信可以分为三个一般类别:在框1710处,在CPU202和***电路***110之间执行通信。在框1712处,在外部设备(在可编程IC 106外部)和***电路***110之间执行通信。在框1714处,在内部设备(在可编程IC 106内部)和***电路***110之间执行通信。
在框1710中,CPU 202通过环形互连210向***电路***110发送数据和/或从***电路***110接收数据。处理***104可以使用存储器映射事务或流事务,通过环形互连210,向***电路***110传输数据或从***电路***110传输数据。在一些情况下,处理***104可以通过共享存储器间接地向***电路***110提供数据,或从***电路***110提供数据,该共享存储器可以被布置在可编程IC 106内部或被布置在可编程IC 106外部。
在框1712中,可编程IC 106外部的设备与***电路***110通信。外部设备可以被布置在处理***104内部(例如,在环形互连210上)或被布置在处理***104外部。备选地,这种电路可以通过共享存储器与***电路***110间接通信,该共享存储器可以被布置在可编程IC 106内部或被布置在可编程IC 106外部。
在框1714中,可编程IC 106内部的设备与***电路***110通信。例如,可编程IC106中的编程电路或硬化电路可以与***电路***110直接通信。备选地,这种电路可以通过共享存储器与***电路***110间接通信,该共享存储器可以被布置在可编程IC 106内部或被布置在可编程IC 106外部。
在框1716中,可以在对处理***104施加功率时,重新配置可编程IC 106。例如,在框1718处,可以使用与框1702中描述的类似的过程来完全地重新配置可编程IC 106。备选地,在框1720处,可以部分地重新配置可编程IC 106。例如,***电路***110的一个或多个***设备230可以被重新配置以实施不同的功能。
尽管前述内容针对特定示例,但是在不脱离其基本范围的情况下可以设计其他和进一步的示例,并且其范围由所附权利要求确定。
Claims (15)
1.一种集成电路IC封装,包括:
布置在基板上的处理***和可编程IC,所述处理***通过所述基板的互连耦合到所述可编程IC;
所述处理***包括耦合到环形互连的部件,所述部件包括处理器和接口控制器;并且
所述可编程IC包括:通过所述互连耦合到所述接口控制器的接口端点;以及至少一个***设备,其耦合到所述接口端点并且被配置用于通过所述互连端点和所述接口控制器与所述处理***的所述环形互连通信。
2.根据权利要求1所述的IC封装,其中所述可编程IC包括可编程结构。
3.根据权利要求2所述的IC封装,其中所述可编程IC包括耦合到所述可编程结构的嵌入式处理***。
4.根据权利要求2所述的IC封装,其中所述至少一个***设备被编程在所述可编程结构中。
5.根据权利要求1所述的IC封装,其中所述接口控制器和所述接口端点均包括一个或多个端口,所述一个或多个端口被配置用于使用至少一个流接口进行通信。
6.根据权利要求1所述的IC封装,其中所述基板包括封装接口,并且其中所述可编程IC耦合到所述封装接口。
7.根据权利要求1所述的IC封装,还包括:
耦合到所述处理***和所述可编程IC的一个或多个其他IC。
8.一种集成电路IC封装,包括:
布置在半导体裸片上的处理***和可编程IC;
所述处理***包括耦合到环形互连的部件,所述部件包括处理器和接口电路;
所述可编程IC耦合到所述环形互连,并且包括被配置用于与所述环形互连通信的至少一个***设备。
9.根据权利要求8所述的IC封装,其中所述可编程IC包括可编程结构。
10.根据权利要求9所述的IC封装,其中所述可编程IC包括耦合到所述可编程结构的嵌入式处理***。
11.根据权利要求9所述的IC封装,其中所述至少一个***设备被编程在所述可编程结构中。
12.根据权利要求8所述的IC封装,其中所述处理器和所述可编程IC均包括一个或多个端口,所述一个或多个端口被配置用于使用至少一个流接口进行通信。
13.一种集成电路IC封装,包括:
布置在半导体裸片上的处理***和可编程IC;
所述处理***包括耦合到环形互连的部件,所述部件包括处理器、接口电路和存储器;
所述可编程IC耦合到所述环形互连,并且包括被配置用于与所述环形互连和至少一个存储器通信的至少一个***设备。
14.根据权利要求13所述的IC封装,其中所述可编程IC的所述至少一个存储器不耦合到所述环形互连。
15.根据权利要求13所述的IC封装,其中所述可编程IC的所述至少一个存储器耦合到所述环形互连。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410368756.5A CN118295958A (zh) | 2017-09-28 | 2018-09-24 | 可编程设备和处理***在集成电路封装中的集成 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/719,288 US10573598B2 (en) | 2017-09-28 | 2017-09-28 | Integration of a programmable device and a processing system in an integrated circuit package |
US15/719,288 | 2017-09-28 | ||
PCT/US2018/052413 WO2019067352A1 (en) | 2017-09-28 | 2018-09-24 | INTEGRATION OF A PROGRAMMABLE DEVICE AND A PROCESSING SYSTEM IN AN INTEGRATED CIRCUIT BOX |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410368756.5A Division CN118295958A (zh) | 2017-09-28 | 2018-09-24 | 可编程设备和处理***在集成电路封装中的集成 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111183419A true CN111183419A (zh) | 2020-05-19 |
CN111183419B CN111183419B (zh) | 2024-04-16 |
Family
ID=63858108
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880063416.4A Active CN111183419B (zh) | 2017-09-28 | 2018-09-24 | 可编程设备和处理***在集成电路封装中的集成 |
CN202410368756.5A Pending CN118295958A (zh) | 2017-09-28 | 2018-09-24 | 可编程设备和处理***在集成电路封装中的集成 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410368756.5A Pending CN118295958A (zh) | 2017-09-28 | 2018-09-24 | 可编程设备和处理***在集成电路封装中的集成 |
Country Status (6)
Country | Link |
---|---|
US (2) | US10573598B2 (zh) |
EP (2) | EP4254214A3 (zh) |
JP (2) | JP7244497B2 (zh) |
KR (1) | KR20200062244A (zh) |
CN (2) | CN111183419B (zh) |
WO (1) | WO2019067352A1 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11320995B2 (en) | 2018-10-31 | 2022-05-03 | Western Digital Technologies, Inc. | Transferring computational operations to controllers of data storage devices |
US10673439B1 (en) | 2019-03-27 | 2020-06-02 | Xilinx, Inc. | Adaptive integrated programmable device platform |
US11474826B1 (en) * | 2019-04-18 | 2022-10-18 | Xilinx, Inc. | Boot image file having a global partition for data processing engines of a programmable device |
US10990547B2 (en) * | 2019-08-11 | 2021-04-27 | Xilinx, Inc. | Dynamically reconfigurable networking using a programmable integrated circuit |
US11580057B2 (en) | 2019-10-28 | 2023-02-14 | Xilinx, Inc. | Subsystem for configuration, security, and management of an adaptive system |
US10720926B1 (en) | 2019-11-13 | 2020-07-21 | Xilinx, Inc. | Programmable device having hardened circuits for predetermined digital signal processing functionality |
US11481317B2 (en) * | 2020-06-26 | 2022-10-25 | Micron Technology, Inc. | Extended memory architecture |
KR102427978B1 (ko) * | 2020-12-23 | 2022-08-02 | 주식회사 뉴티씨 (Newtc) | Avr 기반 아두이노 호환 보드를 위한 통합 프로그래머 및 기능 자동 설정 방법 |
US11456951B1 (en) | 2021-04-08 | 2022-09-27 | Xilinx, Inc. | Flow table modification for network accelerators |
US11606317B1 (en) | 2021-04-14 | 2023-03-14 | Xilinx, Inc. | Table based multi-function virtualization |
US11971845B2 (en) * | 2022-06-16 | 2024-04-30 | Bae Systems Information And Electronic Systems Integration Inc. | DSP encapsulation |
US20240118671A1 (en) * | 2022-10-10 | 2024-04-11 | Schneider Electric Systems Usa, Inc. | Systems and methods for using memory-mapped memories in a microcontroller-based instrument |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5642058A (en) * | 1995-10-16 | 1997-06-24 | Xilinx , Inc. | Periphery input/output interconnect structure |
US20030200339A1 (en) * | 2001-07-02 | 2003-10-23 | Globespanvirata Incorporated | Communications system using rings architecture |
JP2006186546A (ja) * | 2004-12-27 | 2006-07-13 | Renesas Technology Corp | 半導体装置及び半導体装置の設計方法 |
US20080320181A1 (en) * | 2007-06-21 | 2008-12-25 | Seamicro Corp. | Hardware-Based Virtualization of BIOS, Disks, Network-Interfaces, & Consoles Using a Direct Interconnect Fabric |
CN103678250A (zh) * | 2013-12-31 | 2014-03-26 | 苏州君嬴电子科技有限公司 | ***级芯片及其设计方法 |
US20170153892A1 (en) * | 2015-11-30 | 2017-06-01 | Intel Corporation | Instruction And Logic For Programmable Fabric Hierarchy And Cache |
CN107111585A (zh) * | 2014-12-19 | 2017-08-29 | 亚马逊技术股份有限公司 | 包括多个计算子***的片上*** |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6120349A (ja) * | 1984-07-06 | 1986-01-29 | Hitachi Ltd | Lsi集合体 |
US6088421A (en) * | 1998-07-28 | 2000-07-11 | Intel Corporation | Method and apparatus for providing scaled ratio counters to obtain agent profiles |
JP2002016489A (ja) * | 2000-06-30 | 2002-01-18 | Fuji Xerox Co Ltd | プログラマブル論理回路装置、及び情報処理システム |
US6798239B2 (en) | 2001-09-28 | 2004-09-28 | Xilinx, Inc. | Programmable gate array having interconnecting logic to support embedded fixed logic circuitry |
US7187709B1 (en) | 2002-03-01 | 2007-03-06 | Xilinx, Inc. | High speed configurable transceiver architecture |
US7551564B2 (en) * | 2004-05-28 | 2009-06-23 | Intel Corporation | Flow control method and apparatus for single packet arrival on a bidirectional ring interconnect |
JP2011054041A (ja) * | 2009-09-03 | 2011-03-17 | Fuji Xerox Co Ltd | 画像処理装置 |
US8914672B2 (en) * | 2009-12-28 | 2014-12-16 | Intel Corporation | General purpose hardware to replace faulty core components that may also provide additional processor functionality |
US9037688B2 (en) * | 2011-12-27 | 2015-05-19 | Intel Mobile Communications GmbH | System having trace resources |
US10942815B2 (en) * | 2015-07-09 | 2021-03-09 | Hitachi, Ltd. | Storage control system managing file-level and block-level storage services, and methods for controlling such storage control system |
US9880966B1 (en) * | 2015-09-03 | 2018-01-30 | Xilinx, Inc. | Encapsulating metadata of a platform for application-specific tailoring and reuse of the platform in an integrated circuit |
US10229470B2 (en) * | 2016-08-05 | 2019-03-12 | Intel IP Corporation | Mechanism to accelerate graphics workloads in a multi-core computing architecture |
US10540318B2 (en) * | 2017-04-09 | 2020-01-21 | Intel Corporation | Graphics processing integrated circuit package |
US10102149B1 (en) * | 2017-04-17 | 2018-10-16 | Intel Corporation | Replacement policies for a hybrid hierarchical cache |
US11080810B2 (en) * | 2017-04-21 | 2021-08-03 | Intel Corporation | Dynamically reconfigurable memory subsystem for graphics processors |
US20180329855A1 (en) * | 2017-05-12 | 2018-11-15 | Intel Corporation | Alternate protocol negotiation in a high performance interconnect |
US11394649B2 (en) * | 2018-06-29 | 2022-07-19 | Intel Corporation | Non-random flowlet-based routing |
-
2017
- 2017-09-28 US US15/719,288 patent/US10573598B2/en active Active
-
2018
- 2018-09-24 JP JP2020517780A patent/JP7244497B2/ja active Active
- 2018-09-24 CN CN201880063416.4A patent/CN111183419B/zh active Active
- 2018-09-24 CN CN202410368756.5A patent/CN118295958A/zh active Pending
- 2018-09-24 EP EP23191968.9A patent/EP4254214A3/en active Pending
- 2018-09-24 KR KR1020207011292A patent/KR20200062244A/ko not_active Application Discontinuation
- 2018-09-24 WO PCT/US2018/052413 patent/WO2019067352A1/en active Search and Examination
- 2018-09-24 EP EP18786532.4A patent/EP3688604B1/en active Active
-
2020
- 2020-01-27 US US16/773,501 patent/US11024583B2/en active Active
-
2023
- 2023-03-09 JP JP2023036854A patent/JP2023078246A/ja active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5642058A (en) * | 1995-10-16 | 1997-06-24 | Xilinx , Inc. | Periphery input/output interconnect structure |
US20030200339A1 (en) * | 2001-07-02 | 2003-10-23 | Globespanvirata Incorporated | Communications system using rings architecture |
JP2006186546A (ja) * | 2004-12-27 | 2006-07-13 | Renesas Technology Corp | 半導体装置及び半導体装置の設計方法 |
US20080320181A1 (en) * | 2007-06-21 | 2008-12-25 | Seamicro Corp. | Hardware-Based Virtualization of BIOS, Disks, Network-Interfaces, & Consoles Using a Direct Interconnect Fabric |
CN103678250A (zh) * | 2013-12-31 | 2014-03-26 | 苏州君嬴电子科技有限公司 | ***级芯片及其设计方法 |
CN107111585A (zh) * | 2014-12-19 | 2017-08-29 | 亚马逊技术股份有限公司 | 包括多个计算子***的片上*** |
US20170153892A1 (en) * | 2015-11-30 | 2017-06-01 | Intel Corporation | Instruction And Logic For Programmable Fabric Hierarchy And Cache |
Also Published As
Publication number | Publication date |
---|---|
EP4254214A3 (en) | 2023-12-13 |
EP3688604B1 (en) | 2023-08-23 |
US11024583B2 (en) | 2021-06-01 |
US10573598B2 (en) | 2020-02-25 |
JP7244497B2 (ja) | 2023-03-22 |
EP4254214A2 (en) | 2023-10-04 |
US20190096813A1 (en) | 2019-03-28 |
JP2023078246A (ja) | 2023-06-06 |
US20200161247A1 (en) | 2020-05-21 |
JP2020535659A (ja) | 2020-12-03 |
CN111183419B (zh) | 2024-04-16 |
KR20200062244A (ko) | 2020-06-03 |
CN118295958A (zh) | 2024-07-05 |
EP3688604A1 (en) | 2020-08-05 |
WO2019067352A1 (en) | 2019-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111183419B (zh) | 可编程设备和处理***在集成电路封装中的集成 | |
US7856546B2 (en) | Configurable processor module accelerator using a programmable logic device | |
US11263169B2 (en) | Configurable network-on-chip for a programmable device | |
EP3360039B1 (en) | Multistage boot image loading and configuration of programmable logic devices | |
US20080028186A1 (en) | FPGA Co-Processor For Accelerated Computation | |
US9934175B2 (en) | Direct memory access for programmable logic device configuration | |
US9983889B1 (en) | Booting of integrated circuits | |
US10042808B1 (en) | Modeling SPI flash memory commands in hardware | |
US9864605B2 (en) | Multistage boot image loading by configuration of a bus interface | |
JP2018531461A6 (ja) | マルチステージブートイメージロードおよびプログラマブルロジックデバイスの構成 | |
US11182110B1 (en) | On-chip memory block circuit | |
US11474555B1 (en) | Data-driven platform characteristics capture and discovery for hardware accelerators | |
JP7383645B2 (ja) | システムオンチップにおけるプログラマブル論理マスタのためのハードウェアベースの仮想-物理アドレス変換 | |
CN114747143A (zh) | 可编程设备配置存储器*** | |
US10936486B1 (en) | Address interleave support in a programmable device | |
US11874768B1 (en) | Flash memory emulation | |
US9077341B1 (en) | Programmable matrix for the allocation of communication resources |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |