CN114254577A - 基于带有具有扫描寄存器的数据寄存器的微扇区基础架构的逻辑结构 - Google Patents

基于带有具有扫描寄存器的数据寄存器的微扇区基础架构的逻辑结构 Download PDF

Info

Publication number
CN114254577A
CN114254577A CN202110980694.XA CN202110980694A CN114254577A CN 114254577 A CN114254577 A CN 114254577A CN 202110980694 A CN202110980694 A CN 202110980694A CN 114254577 A CN114254577 A CN 114254577A
Authority
CN
China
Prior art keywords
data
read
micro
register
sector
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.)
Pending
Application number
CN202110980694.XA
Other languages
English (en)
Inventor
S·R·阿特萨特
I·K·加努索夫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN114254577A publication Critical patent/CN114254577A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/343Logical level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/347Physical level, e.g. placement or routing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17724Structural details of logic blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Geometry (AREA)
  • Biophysics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Logic Circuits (AREA)
  • Information Transfer Systems (AREA)

Abstract

本文所述的系统和方法可涉及提供能够使用微扇区粒度来编程的动态可配置电路。此外,可使用写操作对现有配置写入新配置以选择性地对可编程逻辑的一部分重新编程来执行选择性部分重新配置操作。从可编程逻辑的部分之间设置的访问寄存器接收数据和命令的准延迟不敏感(QDI)移位寄存器和/或控制电路可实现所述操作的至少一些。

Description

基于带有具有扫描寄存器的数据寄存器的微扇区基础架构的 逻辑结构
技术领域
本公开一般涉及使用基于微扇区(microsector)的可编程结构的集成电路装置。
背景技术
这一部分意在向读者介绍可与本公开的各个方面(在下面描述和/或要求保护)相关的现有技术的各个方面。本论述被认为有助于为读者提供背景信息,以促进对本公开的各个方面的更好理解。相应地,应当理解,这些陈述要在此方面阅读,而不是作为对现有技术的承认。
微电子的进步已经实现多种集成电路装置和通信技术的晶体管密度和带宽的持续增加。实际上,诸如现场可编程门阵列(FPGA)或者其他可编程逻辑装置之类的一些先进集成电路可包括大量晶体管,所述晶体管使越来越广泛的可编程电路设计能够被编程到可编程结构中,以供大量不同功能的实现。在一些情况下,通过功能所生成的数据可被分包并且向或者从其他装置路由,以执行操作或者传递操作的结果。但是,由于可编程逻辑装置的电路设计可由用户为特定应用定制,因此这些装置的逻辑结构中使用的较大的基于扇区的寄存器可能为电路设计过度分配逻辑结构内的区域。
附图说明
在阅读以下详细描述并且参照附图时,本公开的优点可变得明显,附图包括:
图1是按照实施例、用于对集成电路进行编程的系统的框图;
图2是按照实施例、图1的集成电路的框图;
图3是按照实施例、包括图1的集成电路和存储器的应用系统的框图;
图4A是按照实施例、使用扇区分配所实现的图1的集成电路的可编程逻辑的框图;
图4B是按照实施例、使用微扇区分配所实现的图1的集成电路的可编程逻辑的框图;
图5是按照实施例、图4B的可编程逻辑的框图;
图6是按照实施例、图5的可编程逻辑的微扇区的框图;
图7是按照实施例的可编程逻辑的一部分以及可编程逻辑的所述一部分的至少部分控制电路的框图;
图8是按照实施例、行控制器以及图6的微扇区的框图;
图9是按照实施例、用于控制图8的行控制器的操作的数据分组的图示;
图10是按照实施例、图8的行控制器和微扇区的框图;
图11是按照实施例、图4B的可编程逻辑的部分重新配置的方法的流程图;
图12是按照实施例、另一个示例行控制器以及图6的具有数据寄存器的另一个示例的微扇区的框图;
图13是按照实施例、使用第一示例自适应逻辑元件(ALE)的图12的行控制器和微扇区的框图;
图14是按照实施例、具有自适应逻辑元件(ALE)的第二示例的图12的行控制器和微扇区的框图;以及
图15是按照实施例、具有自适应逻辑元件(ALE)的第三示例的图12的行控制器和微扇区的框图。
具体实施方式
下面将描述本公开的一个或多个具体实施例。为了提供对这些实施例的简明描述,在本说明书中并非描述实际实现的全部特征。应当理解,在任何这种实际实现的开发中,如同任何工程或设计项目中一样,必须进行许多实现特定的判定以取得开发人员的特定目标,例如与系统相关和业务相关约束(所述约束可按照实现改变)的顺应性。此外,应当理解,这种开发工作可能是复杂且费时的,但仍然是获益于本公开的技术人员进行的设计、制作和制造的日常事务。本文所述并且要求保护的技术被引用并且应用于明显改进本技术领域的实用性的实物和具体示例,并且因此不是抽象、无形或者纯理论的。
在介绍本公开的各个实施例的元件时,冠词“一个”、“该”和“所述”预计表示存在元件的一个或多个。术语“包含”、“包括”和“具有”预计包含在内,并且表示可存在除了列示元件之外的附加元件。另外应当理解,本公开的“一个实施例”或“实施例”的引用并不是意在被理解为排除也结合了所述特征的附加实施例的存在。此外,词语A“基于”B意在表示A至少部分基于B。此外,除非另加明确说明,否则术语“或者”预计是包含性(例如逻辑OR)而不是排他性(例如逻辑“异或”(XOR))。换言之,词语A“或者”B预计表示A、B或者A和B两者。
可编程逻辑装置越来越多地渗透市场,并且越来越使客户能够实现逻辑结构(例如可编程逻辑)中的电路设计。由于可编程逻辑装置的高度可定制性质,逻辑结构在与电路设计对应的电路的使用之前将被配置有电路设计。当实现逻辑结构中的设计时,扇区可用于对电路的实现分配逻辑结构的部分。但是,至少部分由于数据寄存器和可编程逻辑装置的互连的物理布置,扇区可能是总逻辑结构面积的相对不准确和/或较大的分配。
通过重新布置可编程逻辑装置的互连的部分和/或通过缩减数据寄存器的数据宽度,用于实现逻辑结构中的电路设计的系统和过程可得到改进。例如,通过进行这些变更的部分,扇区的大小可减小并且形成微扇区,从而准许指配的较细粒度用于对电路设计分配逻辑结构。这例如可准许对相应电路设计的资源的更有效分配,并且因此使电路设计能够在实现中使用更少资源。
由于可编程逻辑装置的电路设计可由用户为特定应用于定制,因此以细粒度并且并行地划分和控制装置的配置(如可通过互连的重新布置和/或数据寄存器的数据宽度的缩减来提供)的能力实现具有可编程逻辑的装置特定的多个优点。优点的部分可在于装置的构造,以及一些优点在于所实现(例如所实现或准许的用例)的装置的使用模型。对于装置的构造,细粒度的可配置区域可以是实现构建具有用于那个装置的实现的适当或定制资源量的装置的机制。与用于可编程逻辑装置编程的其他系统和方法相比,通过对装置的较小区域的更快配置、更快部分重新配置和更快单事件更新(SEU)检测,来实现新使用模型的部分。
系统实现的这些变更还可改进(例如减少)总配置时间,包括减少执行部分重新配置时使用的配置时间,以及还可实现更快的单事件更新(SEU)检测。例如,本文所述的所建议结构变更可使部分重新配置能够按照与正常配置相似的时间量进行。
微扇区基础架构(infrastructure)可在单个结构行(行区域)中使用较少列数(例如8列对50列)。行区域可从较小数据寄存器(例如1位数据寄存器,如与32位数据寄存器相对)接收数据。由于微扇区可表示可编程逻辑装置的面积的较小百分比(例如小于总结构面积的1%),因此使微扇区成为部分重新配置量子可以是可行的。这可使部分重新配置成为只写操作,这避免每次部分重新配置将对微扇区进行时执行读-修改-写,由此节省部分重新配置的时间和资源。在一些情况下,部分重新配置时间可减少为原来的五分之一或六分之一,即,较高的性能改进量。此外,由于列数减少,因此等待数据传输完成(对行区域或者来自行区域)所花费的时间量减少,由此改进可编程逻辑装置的操作。
如通过图12-15的论述可理解,有时可期望将一个或多个扫描寄存器从微扇区的自适应逻辑元件(ALE)移动到服务于微扇区的数据寄存器。这样做可将用于支持微扇区的操作的扫描寄存器的数量减少为例如原来的十分之一。以附加结构调整将扫描寄存器移出ALE,可实现其他性能改进。例如,包括准延迟不敏感(QDI)电路可使用户数据能够较快移出从微扇区的配置存储器(CRAM)所读取的帧,并且可使未使用的用户数据能够滤出该帧,由此增加处理速度。当经过串行耦合寄存器传送数据时,QDI电路可以不使用时钟信号,而是使用握手信号经过充当寄存器的电路来传送数据。实际上,QDI电路可以在没有使用时钟的上升沿进行传输的情况下移动(shift)数据。通过一般不使用时钟信号,QDI电路可相对不易受到通过时钟的支出和/或基于时钟的寄存器的不一致性所引入的延迟所影响,并且因此可改进数据访问操作。还可通过这些系统和方法来实现其他有益效果。要注意,ALE有时可称作“自适应逻辑模块”(ALM),并且在本文中可互换地使用。
鉴于以上所述,图1示出可实现算术运算的系统10的框图。设计人员可期望实现集成电路装置12(例如,可编程逻辑装置,例如现场可编程门阵列(FPGA)或专用集成电路(ASIC))上的功能性(例如本公开的算术运算)。在一些情况下,设计人员可指定将被实现的高级程序(例如OpenCL程序),该高级程序可使设计人员能够更有效和简易地提供编程指令以配置集成电路12的可编程逻辑单元集合,而无需低级硬件描述语言(例如Verilog或VHDL)的具体知识。例如,由于OpenCL与其他高级编程语言(例如C++)颇为相似,因此与被要求学习不熟悉的低级硬件描述语言以实现集成电路12中的新功能性的设计人员相比,熟悉这类编程语言的可编程逻辑的设计人员可具有简化的学习曲线。
设计人员可使用设计软件14(例如INTEL CORPORATION的INTEL® QUARTUS®的某个版本)来实现高级设计。设计软件14可使用编译器16将高级程序转换为更低级描述。编译器16可向主机18和集成电路12提供表示高级程序的机器可读指令。主机18可接收主程序22,其可通过内核程序20来实现。要实现主程序22,主机18可经由通信链路24(该通信链路24可以是例如直接存储器存取(DMA)通信或高速外设部件互连(PCIe)通信)将指令从主机程序22传递给集成电路12。在一些实施例中,内核程序20和主机18可实现集成电路12上的逻辑块26的配置。逻辑块26可包括电路和/或其他逻辑元件,并且可配置成实现算术运算(例如加法和乘法)。
设计人员可使用设计软件14来生成和/或指定低级程序,例如上述低级硬件描述语言。此外,在一些实施例中,系统10可在没有独立主机程序22的情况下实现。此外,在一些实施例中,本文所述的技术可作为不可编程电路设计在电路中实现。因此,本文所述的实施例意在是说明性的,而不是进行限制。
现在转向集成电路12的更详细论述,图2示出作为可编程逻辑装置(例如现场可编程门阵列(FPGA))的集成电路装置12的示例的框图。此外应当理解,集成电路12可以是任何其他适当类型的可编程逻辑装置(例如ASIC和/或专用标准产品)。如所示,集成电路12可具有输入/输出电路42,以用于从装置来驱动信号,并且用于经由输入/输出引脚44从其他装置接收信号。诸如全局和本地垂直和水平导电线路和总线和/或配置资源(例如硬连线耦合、不是由用户逻辑所实现的逻辑耦合)之类的互连资源46可用于在集成电路12上路由信号。另外,互连资源46可包括固定互连(导电线)和可编程互连(即,相应固定互连之间的可编程连接)。可编程逻辑48可包括组合和时序逻辑电路。例如,可编程逻辑48可包括查找表、寄存器和复用器。在各个实施例中,可编程逻辑48可配置成执行定制逻辑功能。与互连资源关联的可编程互连可被理解为可编程逻辑48的一部分。
可编程逻辑装置(例如集成电路12)可包括可编程元件50,其中具有可编程逻辑48。例如,如上所述,设计人员(例如客户)可对可编程逻辑48(重新)编程(例如(重新)配置),以执行一个或多个预期功能。作为举例,可通过使用掩模编程布置配置可编程元件50对一些可编程逻辑装置进行编程,这在半导体制造期间执行。在半导体制作操作已经完成之后,例如通过使用电编程或激光编程对可编程元件50进行编程来配置其他可编程逻辑装置。一般来说,可编程元件50可基于任何适当可编程技术,例如熔丝、反熔丝、电可编程只读存储器技术、随机存取存储器单元、掩模编程元件等。
许多可编程逻辑装置是电编程的。通过电编程布置,可编程元件50可由一个或多个存储器单元来形成。例如,在编程期间,配置数据使用引脚44和输入/输出电路42来加载至存储器单元中。在一个实施例中,存储器单元可实现为随机存取存储器(RAM)单元。本文所述的基于RAM技术的存储器单元的使用意在仅作为一个示例。此外,由于这些RAM单元在编程期间被加载有配置数据,因此它们有时称作配置RAM单元(CRAM)。这些存储器单元各可提供对应静态控制输出信号,该信号控制可编程逻辑48中的关联逻辑组件的状态。例如,在一些实施例中,输出信号可被施加到可编程逻辑48内的金属氧化物半导体(MOS)晶体管的栅极。
记住图1和图2的论述,用户(例如设计人员)可利用设计软件14在集成电路12的可编程逻辑48上实现逻辑块26。特别是,设计人员可在高级程序中指定被执行的数学运算(例如加法和乘法)。编译器16可将高级程序转换为更低级描述,该更低级描述用于对可编程逻辑48进行编程,以执行加法。
一旦经过编程,集成电路12可处理数据集60,如图3所示。图3是包括集成电路12和存储器64的应用系统62的框图。应用系统62可表示一种装置,该装置使用集成电路12基于来自集成电路12的计算结果等执行操作。集成电路12可直接接收数据集60。数据集60可在到集成电路12的传输之前、期间或同时地被存储至存储器64中。
随着带宽和处理预期增加,例如响应于第五代(5G)和更高通信技术的出现和/或神经网络(例如机器学习(ML)和/或人工智能(AI)计算)广泛用于执行计算,可预计集成电路12操控数据集60的大小随时间推移的后续增加。还可预计集成电路12执行对于使用5G或更高技术所传送的信号(例如更高吞吐量和/或高数据传输带宽的信号)的数字信号处理操作以及ML操作。还可在运行时期间,例如在部分重新配置(该部分重新配置在集成电路的运行时操作期间引起集成电路12的一部分的配置而没有引起集成电路12的另一个部分的配置)期间,动态地实现这些预期应用。至少由于这些原因,可期望改进配置方法以满足技术计算的复杂度和定时规范。为了这样做,至少包括可编程逻辑48、输入/输出引脚44和互连资源46的可编程逻辑66可利用1位数据寄存器,以使用微扇区来(重新)配置可编程逻辑48。使用微扇区对可编程逻辑48中的电路功能进行编程可提供如下优点:实现只写重新配置、较小区域SEU检测(例如1位检测区域)、重新配置区域的较小粒度以及较大并行配置(例如1位宽度的数据通道的并行配置)操作。如本文所使用的术语“微扇区”表示具有比较小的数据寄存器的可编程逻辑的扇区。在一个示例中,微扇区具有1位数据寄存器。在一些实施例中,微扇区可具有较大数据寄存器,但是仍然可比扇区中通常存在的要小(例如可小于32位、小于16位、小于8位)。
为了详述重新配置区域的较小粒度,图4A是示例可编程逻辑66的框图。可编程逻辑66可包括控制器76,以便对可编程逻辑66进行编程。当被编程时,可编程逻辑66的电路可用于执行数字信号处理、机器学习处理、计算、逻辑功能等(例如通过部分78所表示)。但是,可编程逻辑66可被分为较大逻辑扇区,并且因此部分80可被分配给电路,如与对应于部分78的电路的区域相反。资源的这个过度分配可能浪费电路,因为部分80与部分78之间的大小差表示利用不足的可编程逻辑66。要注意,当部分重新配置可编程逻辑66时,可期望某些速度度量被满足(例如可期望部分重新配置在较快时间量中完成)。例如,在这些情况下,资源的过度分配可发生,因为可改进资源的分配的较慢配置速度可能是不合需要的。
实际上,如果在多个扇区的可编程逻辑中构建装置,则该装置也许可能具有比预期被分配给构建该装置的更多或更少的逻辑(例如逻辑算术块(LAB)、数字信号处理(DSP)块)。这个过度分配可发生,因为矩形数量的扇区用于实现示例装置。通过重新布置互连和/或缩减数据寄存器的数据宽度以形成微扇区,可对装置的实现分配相对更准确的逻辑量(例如更精确数量的LAB或DSP块)。
如图4B所示,当实现通过使用微扇区逻辑划分的可编程逻辑66中的部分78所表示的电路时,当实现该电路时可浪费较少可编程逻辑66。图4B是使用微扇区所实现的可编程逻辑66的框图。实际上,微扇区可准许与部分78对应的电路在部分82所表示的区域中实现。虽然未按比例绘制,但是实现与部分78对应的电路的部分82有效地利用可编程逻辑66,其中实现部分78的部分80原本可能低效地利用可编程逻辑66。
为了进一步详述微扇区架构,图5是可编程逻辑66的框图。可编程逻辑66可使用互连资源46来耦合在微扇区92之间。实际上,互连资源46可包括能够用于将数据从可编程逻辑66内和/或集成电路12内的第一位置移动到第二位置的数据移位寄存器、寄存器、逻辑门、直接耦合、可重编程电路等的任何适当组合。一个或多个微扇区92可由控制器76采用信息来编程,以执行电路(例如与部分78对应的电路)的功能。但是,由于控制器76可传送配置数据(或者任何适当数据),因此用于将功能编程到可编程逻辑66中的区域的粒度可减小。当这些粒度减小或者变得更精确(例如更小)时,可编程逻辑66的编程可得到改进,因为可在可编程逻辑66中更有效地配置电路设计。要注意,可编程逻辑66和/或集成电路12可以是任何适当类型的软件或硬件或者它们两个的组合。集成电路12和/或可编程逻辑66可以是或者包括可编程逻辑48、可编程元件50等,以便使一个或多个部分能够是可重编程的(例如可重新配置的)。控制器76可使用互连资源46与微扇区92进行接口,所述互连资源46可包括接口总线,例如高级接口总线(AIB)和/或嵌入式多管芯互连桥接器(EMIB)。如上所述,可编程逻辑66可以是能够执行大量任务的可重编程电路。
图6是两个示例微扇区92(例如微扇区92A、微扇区92B)的框图。本申请描述微扇区92的特定架构,但是应当理解,可使用任何适当架构。实际上,每个微扇区92可包括一个或多个逻辑访问块(LAB)104(例如八个LAB),所述LAB能够与互连资源46进行对接(在这里示为经由地址寄存器106(AR)与微扇区92进行通信)。实际上,互连资源46可包括一个或多个AR 106,以便从微扇区92传送和/或接收信号,以及或者作为替代包括其他控制电路、逻辑电路(例如“与”门、“或”门、“或非”门、“异或”门、触发器、开关重置(SR)锁存器)等。还应当理解,相同或相似电路可被包含在每个微扇区92中。
LAB 104可经过地址线缓冲器(ALB)108从AR 106接收数据。ALB 108各自可包括数字信号处理(DSP)电路和/或控制电路,其将数据从用于到微扇区92A的传输的适当格式转换成供LAB 104的电路使用的适当格式。
每个LAB 104可包括一些数量的算术逻辑元件电路系统(ALE)110电路(例如十个ALE 110)。微数据寄存器(μDR)112可被设置在ALE 110的至少部分上,例如在用于物理形成集成电路的硅或另一材料的另一个层中。μDR 112在通信上将每个LAB 104耦合到ALB 108。LAB 104的每个ALE 110可共享和/或耦合到LAB范围的控制块(LCB)114。LAB 104通过路由结构116(例如配置随机存取存储器(CRAM)、配置存储器)相互分离。在这个示例中,μDR 112经由与微扇区92A对应的一行电路的中心穿过LCB 114。
为了进一步详述AR 106与微扇区92之间的互连,图7是AR 106中实现的多行区域(行区域)124和行控制器126的框图,示出来自图6的行控制器126与微扇区92之间的通信耦合。要注意,微扇区92有时可根据行区域124来表示,因为例如制造商设计(例如制造商IP)或用户设计(例如用户IP)可被加载至微扇区92中以供实现。AR 106可包括任何适当控制系统电路和/或逻辑电路。实际上,AR 106可以是来自INTEL CORPORATION的INTEL® STRATIX10®或INTEL® AGILEX®的地址寄存器。此外,AR 106示为被设置在至少两个微扇区92之间,但是存在一些情况,其中AR 106可以只通过微扇区92的一个列区域128来设置(例如在AR 106的右侧或者在AR 106的左侧所定向),以适应可编程逻辑66或集成电路12的物理边界,或者避免支持左和右数据移动模式。各种行区域124和列区域128被布置为相同物理主板上的网格。
每个行控制器126可控制微扇区的行区域124,并且因此关联或者作为先前所述的ALB 108。对于微扇区实现,AR 106可在微扇区92的列区域128(例如列区域128A、列区域128B、列区域128C、列区域128D)之间重复和共享。例如,列区域128A与列区域128B共享AR106A,并且与列区域128C相邻地设置。列区域128C的微扇区92可与列区域128D的微扇区92共享AR 106B。因此,可与经由AR 106A所传送的至少部分信号无关地使用由AR 106B的行控制器126所生成和/或传送的信号来控制列区域128C的微扇区92。虽然是同一行区域124的一部分,但是可以采用与微扇区92B不同的方式来控制微扇区92C,因为微扇区92与不同列区域128关联。此外,虽然是同一列区域(例如列区域128C)的组成部分,但是可以采用与微扇区92D不同的方式来控制微扇区92C,因为微扇区92从独立行控制器126(例如行控制器126A、行控制器126B)接收控制信号。可形成微扇区92,以便将行区域124分为更小部分,并且因此提供更小粒度。
行控制器126可使用任何适当通信协议从相应微扇区92传送和/或接收信号。例如,行控制器126可使用流播协议(例如AXI 4流播)在内部写寄存器(例如相应行控制器126的内部)处在同一符号(例如同一分组传输)中接收地址以及与该地址对应的数据。
每个AR 106可包括AR 106列区域的底部或顶部的本地扇区管理器(LSM)130(例如LSM 130A、LSM 130B)。例如,LSM 130A示为在AR 106A列区域的顶部并且在通信上与其耦合。LSM 130A还被设置在可编程逻辑66外部。如所示,每AR 106可包括一个LSM 130,但是应当理解,LSM 130可由两个或更多AR 106来共享,使得一个LSM 130控制两个或更多AR 106。
LSM 130有时可与AR列管理器(CM)132(例如CM 132A、CM 132B)相集成,以形成相应扇区列管理器(SCM)。CM 132可负责管理其对应AR 106与互连资源46之间的事物。例如,CM 132A可与LSM 130A进行协调,以便向微扇区92A和微扇区92B传送命令。CM和LSM 130可涉及从集成电路12的其他部分或者从其他微扇区92向某些微扇区92路由命令。在互连资源46涉及芯片上网络的使用的情况下,CM 132可管理芯片上网络与对应AR 106之间的事务。这个布置可准许经由互连资源46所实现的主与从桥接器之间的较高带宽数据移动,因为例如CM 132可帮助协调多个微扇区和/或多个AR 106之间的传输,使得传输可被并行化或者至少部分在时间和/或在序列上被协调。
控制器(例如控制器76)可向LSM 130和/或CM 132的每个传送分组,所述分组包括数据和命令,以执行配置以及该配置的测试。为了实现配置,一个或多个LSM 130可生成由相应行控制器126可解释的相应命令,其中相应命令可用于控制一个或多个微扇区92的配置。从控制器76传送给LSM 130的数据和命令可对应于通过将要在被管理(例如在通信上耦合)到相应LSM 130的微扇区92的子集中实现的配置所表示的电路设计的一部分。一旦在可编程逻辑66中实现(或者至少部分实现)配置,一个或多个LSM 130可测试所实现配置,以验证配置如预期进行操作。可使用由LSM 130从控制器76所接收的数据和命令的一部分来执行测试。LSM 130可在时间上与可编程逻辑66的附加部分的编程(例如配置)至少部分重叠地(例如在一个或多个其他行区域124、列区域128或微扇区92继续被编程(例如配置)的同时)测试与列区域128和行区域124的相应相交点对应的电路设计的相应部分。一旦可编程逻辑66的每个部分被编程,则LSM 130可在操作中进行协调,并且执行对一个或多个微扇区92中实现的一个或多个电路设计的系统范围测试。除了检查整个电路如何操作之外,所执行的测试还可包括验证电路的部分如何操作。每个LSM 130可作为其微扇区92的本地集合的管理引擎进行操作。
实际上,每个行控制器126可从其对应LSM 130接收命令,并且可对命令进行解码以生成控制信号。控制信号可控制微扇区92的对应行区域124的操作。例如,被耦合在微扇区92C与微扇区92E之间的行控制器126A可生成用于控制同一行区域124中设置的微扇区92C和微扇区92E的操作的控制信号。此外,如与LSM 130控制多个列区域128相反,每个LSM130可控制两个列区域128。
例如,LSM 130可生成与读和写操作关联的命令。在一些情况下,LSM 130还命令行控制器126在将与命令关联的数据传送给相应微扇区92之前对数据进行解压缩(例如解码)。行控制器126可被认为是配置端点,该配置端点可由LSM 130和/或控制器76经由互连资源来读取和/或写入,以便读取数据(例如配置数据、测试数据)或者将数据写到微扇区92。要注意,虽然示为包括43个行区域124和43个行控制器126,但是任何适当数量的行区域124、列区域128等可用于集成电路12中以实现本文所述的系统和方法。
为了进一步详述访问微扇区92,图8是相应行控制器126和相应微扇区92的框图。为了便于说明,参照行控制器126A和微扇区92A。但是应当理解,这些描述可适用于每个行控制器126和/或微扇区92。
行控制器126可经由数据通路144从LSM 130接收命令。实际上,LSM 130可使用数据通路144将命令作为一个或多个分组(例如数据分组)来传送。标识符解码器(ID解码)块146可对分组的标识符(ID)进行解码。通过读取分组的ID,ID解码块146可识别分组是否与行控制器126A相关和/或分组是否被预计由行控制器126A接收。数据通路144可由相应AR106的每个行控制器126共享。因此,数据通路144还可继续到AR 106A的后一行控制器126。
当ID解码块146识别分组用于行控制器126A时,有限状态机(FSM)148可执行逻辑测序,以便将分组移出数据通路144。从分组所接收的寄存器值可被存储在配置随机存取存储器(CRAM)寄存器150中。要注意,CRAM寄存器150备选地可在触发器电路或其他逻辑电路中实现,但是基于CRAM的寄存器可在使用较小占用面积的同时向触发器电路或其他逻辑电路提供适当存储器存储能力。
寄存器值可由整个行控制器126A中的其他组件引用。例如,FSM 148和/或ID解码块146可从分组接收指示寄存器值(R)的信号。响应于寄存器值,FSM 148可生成指示状态机状态(S)的信号。状态机状态可由FSM 148保持,其中FSM 148的FSM的状态可响应于从CRAM寄存器150所接收的寄存器值(R)和/或响应于来自ID解码块146的输出而变化。FSM 148可向CRAM寄存器150输出状态机状态(S)。开关电路可响应于从FSM 148所输出的状态机状态(S)而改变状态,以改变行控制器126A内部的数据通路。
CRAM寄存器150的部分可以不响应于分组被行控制器126A所接收而变化。例如,可在行控制器126A的初始配置的时间设置控制器标识符(ID)寄存器153中存储的标识符数据。但是,如果没有采用ID寄存器153中存储的标识符数据预先设置行控制器126A,则行控制器126A可将ID寄存器153(例如所存储标识符)的值设置成分组中包含的所识别值。
CRAM寄存器150可包括控制(CNTL)寄存器154,该控制寄存器154存储控制位。控制位可定义行控制器126A如何与数据通路144进行交互,例如行控制器126A将如何接收和/或访问来自数据通路144的分组。例如,控制位可向ID解码块146指示分组的哪一个子集与行控制器126A相关,并且因此应当从数据通路144中取出。CRAM寄存器150还可包括用于存储配置位的配置(CNFG)寄存器156。配置位可传送给FSM 148和/或FSM 158,以改变行控制器126的操作,例如基于FSM 148和/或FSM 158的状态所执行的操作。AR寄存器160可存储由AR106(例如AR 106A)所设置的配置位,例如以定义行控制器126的一个或多个的操作。
由FSM 148所生成的状态机状态(S)可由FSM 158接收。因此,FSM 158的状态可基于FSM 148的状态。FSM 158可使用状态机状态(S)和/或所接收寄存器值(R)来管理测序,所述测序用于执行读取微扇区92A的CRAM的读操作、读取微扇区92A的CRAM的写操作、读取微扇区92A的用户寄存器的读操作、写入微扇区92A的用户寄存器的写操作,和/或执行检测微扇区92A的编程中的差错的SEU检测操作。
在一些情况下,行控制器126A的随机存取存储器(RAM)162还可接收FSM 148所生成的状态机状态(S)。RAM 162可用作配置操作的存储装置。由于RAM 162包括易失性存储器,因此经由RAM 162所提供的存储装置可以是临时存储装置。来自数据通路144的分组和/或将被传送给数据通路144的分组可在经由数据通路144的传输之前和/或之后被暂时存储在RAM 162中。用于从RAM 162进行读取的操作可基于读指针(RPTR)块164所指示的数据。用于对RAM 162进行写入的操作可基于写指针(WPTR)块166所指示的数据。通过RPTR块164的数据所指示的指针可用于增加从RAM 162读取数据时被提供给RAM 162的地址,由此提供对用于访问RAM 162所存储的数据的指针的实时调整。要注意,在RAM 162未被包含在行控制器126A时的情况下,可省略支持电路。例如,在没有RAM 162的情况下,可省略一些开关电路(例如152B、152C)以及FPGA结构接口控制信号的部分或全部,因为可经由通过μDR 112的传送来执行数据加载。在一些情况下,FSM 148可在向或者从数据通路144移动数据时控制RPTR块164和/或WPTR 166所指示的地址,和/或FSM 158可在向或者从微扇区92A移动数据时控制RPTR块164和/或WPTR 166所指示的地址。
行控制器126A可通过使用解码器块168(独热解码)将WPTR块166所指示的地址转换成独热解码值(例如温度计编码值10000000、00000001)。独热解码值可用于选择将被写入或读取的CRAM。要注意,通过独热编码值,整数值(例如地址或另一个整数编码变量)可被替换(例如转化)为新二进制变量,其中可为每个唯一整数值添加二进制值(如在111110编码的情况下的逻辑低位“0”或者逻辑高位“1”)。这样,基于编码是使用“1”还是“0”来表示各种整数值,十的地址可表示为“0000000001”或“1111110”,而四的地址可表示为“0001”或“1110”。可基于特定系统实现来使用其他格式。
行控制器126A还可包括并行-串行转换器块170(P2P S2P)。并行-串行转换器块170可将数据的格式从并行改变成串行,反过来也是一样,使得数据可向和/或从μDR 112串行移动,所述μDR 112可包括串行耦合的单独数据寄存器172(例如数据寄存器(DR)172A、DR172B、DR 172C、DR 172N)。
每个DR 172可包括逻辑门电路和/或串行移位电路的任何适当组合。例如,DR172A可包括一个或多个触发器、SR锁存器、复用电路等,以便使行控制器126A能够将数据移入和/或移出与微扇区92A关联的相应可编程逻辑66(例如设置在区域174中)。实际上,与微扇区92A对应的可编程逻辑66的区域174可包括以上至少针对图6所述的LAB 104、ALE 110、LCB 114和/或路由结构116。
微扇区92A有时可包括扫描寄存器(μSR)176。μSR 176可具有任何适当的数据宽度,并且示为1位宽寄存器。实际上,μSR 176可包括一个或多个扫描寄存器178(例如扫描寄存器(SR)178A、SR 178B、SR 178C、SR 178N)。行控制器126A可使用SR 178来扫进和扫出用户寄存器(例如DR 172)的数据,以测试被编程到可编程逻辑66的区域174中的功能,如图11中详述。
要注意,经由数据通路144所接收的命令可具有任何适当格式或长度。一种示例格式在图9中示出。
图9是被传送给行控制器126的示例命令的图示。经由数据通路144所传送的分组190有时示为流播数据分组,如与直接传送的数据分组相反。这样,AR 106的每个行控制器126可监测数据通路144,并且从所传送数据190本身来识别分组190是否与相应行控制器126的操作相关(例如针对相应行控制器126)。可使用例如Avalon流播或AXI 4流播等的协议来发送流播数据分组190。
分组190示为包括报头192、写数据194以及读数据的时隙(slot)196。分组190并且因此报头192、写数据194和时隙196的每个可由分别对应于字或16位或2字节的数据198的部分组成,但是这些大小可以是基于用于传送分组190的特定实现和/或特定协议可配置的。分组190的报头192可描述目标行控制器126的地址以及将由目标行控制器126所执行的操作。通过报头192所指示的地址可按照不同行控制器126可解释的方式来识别目标行控制器126,使得目标行控制器126可识别分组190预计用于自身的时间(例如经由包括其自己的地址的报头192或者匹配目标行控制器126的标识符的至少一部分)。例如,第一行控制器126可访问报头192,以确定报头192是否将它标识为目标行控制器126。当报头192识别第一行控制器126(例如标识符之间的匹配发生)时,第一行控制器126可从数据通路144(例如共享数据通路144)移动数据分组190以供完成所指示操作(例如命令)。但是,当报头识别另一个行控制器126时,第一行控制器126可将分组190返回到数据通路144,使得分组190可传送到相对于所述行控制器126被设置在数据通路144下游的另一个或随后耦合的行控制器126。数据分组的后续部分包括将被包含在分组190中的写数据194和/或读数据的时隙,以供到控制器76、LSM 130和/或CM 132或者其他适当电路的返回传输。
报头192本身可包括命令。例如,不同报头192包括不同命令以及支持不同命令的执行和/或指示的不同附加数据量。报头192有时包括例如通过使用命令编码的8位所编码的命令。通过将指示命令的数据压缩为更小大小,编码命令可提供功能性的扩展,和/或增加报头192中包含的信息量,以命令目标行控制器126。更多或更少位可用于执行命令编码。例如,一些报头192可指示寄存器写命令,而其他报头192可指示写数据命令和/或读时隙命令。生成分组190的组件可包括未分配命令空间,以便为其他截取装置保留时隙,以例如在后来但是在经由数据通路144进行传送之前将命令添加到报头192。
在一些情况下,目标行控制器126接收断言分组结束信号,该信号指示符号(例如数据的部分)是分组的最后一个符号。分组结束信号可由控制器76、LSM 130和/或CM 132或者其他适当电路来生成并且传送给行控制器126。在一些情况下,目标行控制器可访问分组长度参数,并且跟踪(例如使用计数器)所接收符号的数量,以确定符号是分组的最后一个符号的时间。
通过与报头192A对应的编码命令所指示的寄存器写命令可配置目标行控制器96以及请求进行读操作(例如指示读操作)。报头192A的寄存器写命令可被认为是单循环消息,该消息包括将被写到行控制器126的寄存器(例如CRAM寄存器150的一个或多个)的立即数据。关键寄存器写消息之一是准许对寄存器地址处存储的数据的读取。
为了进一步详述微扇区92A的操作,图10是微扇区92A和行控制器126A的框图。图10从配置角度示出微扇区92A的相应LAB 104,但是应当理解,可存在本文中没有特别示出或描述的LAB 104的许多附加功能。要注意,LAB 104包括ALE 110和LCB 114,以及微扇区92A包括DR 172和SR 178,所述DR 172和SR 178与LAB 104分离,但是互连到ALE 110和/或LCB 114。
LAB 104的组件可与配置存储器(例如配置RAM(CRAM)210(C)或者能够在(重新)配置操作(或者部分重新配置操作)期间将被配置的可编程逻辑66的部分)进行对接。微扇区架构可支持两类操作—CRAM操作和用户寄存器操作。CRAM操作可由控制μDR 112的逻辑来支持,而用户寄存器操作可由控制μSR 176的逻辑来支持。
μDR 112可至少部分通过跨DR 172的每个设置操作模式来工作在多种操作模式。例如,开关电路212A可用于控制相应DR 172工作在哪一种操作模式。当开关电路212各自设置成“0”时,μDR 112可工作在CRAM写模式(例如示例写序列)。也就是说,当每个相应DR 172将为模式“0”时,准许CRAM写数据通过DR A寄存器214来移动。DR A寄存器214可包括触发器,该触发器串行耦合到附加触发器,其中DR 172的每个可包括DR A寄存器214的另一个。写信号(未示出)可准许采用于自DR A寄存器214的数据来驱动数据线(DL)。当μDR 112工作在CRAM写模式的同时,可断言将被写入的CRAM 210的行的地址线218(CRAM地址),从而准许数据被写至地址CRAM帧中。作为提醒,被写到地址线218的地址可以是通过独热解码值(例如00001、10000、001)所表示的地址,由此使单个逻辑高位能够用于选择CRAM 210的哪一个用于特定写入(或者如以下描述的读操作)。
当开关电路212各自设置成“2”时,μDR 112有时可工作在CRAM读模式(例如示例读序列)。也就是说,当每个相应DR 172设置成模式“2”时,读信号可准许采用于自所选CRAM210的数据来驱动DL 216。可使用地址线218来选择CRAM 210的一部分。例如,可断言将被读取的CRAM 210的行的地址线218,从而使数据的那个CRAM帧被驱动到DL 216上。来自CRAM210的所选行的读数据被输出给DL 216,并且被加载至DR A寄存器214中。在微扇区92A的行尾(例如当数据已经下移到图8所示的DR 172N时),来自DR A寄存器214的DR In Next信号被耦合到DR Out Prior信号通路(例如输入至DR B寄存器220中),从而准许来自所选CRAM210的数据被移回微扇区92A。要注意,DR In Next信号通路和/或DR Out Prior信号通路可以是1位宽或者任何适当数据宽度。这样,读数据可通过DR A寄存器214的至少一部分以及DR B寄存器220的至少一部分(例如各自的至少一个触发器)从所选CRAM 210传输到微扇区92A。
当开关电路212各自设置成“1”时,μDR 112在另一时间又可工作在CRAM SEU检测模式(例如示例序列)。也就是说,当每个相应DR 172将为模式“1”时,当前读CRAM 210的值在被加载至DR A寄存器214之前可与来自一个或多个先前CRAM列移位读数据进行“异或”。
微扇区92A还可包括扫描寄存器(μSR)176,例如以便用于执行一个或多个设计验证操作。μSR 176示为1位宽寄存器。实际上,μSR 176可包括一个或多个SR 178。SR 178可用于从RAM 162扫入和扫出用户寄存器(例如DR 172)的数据,以测试被编程到可编程逻辑66的区域174中的功能,如图8所述。实际上,用户数据(例如实现数据)可经由数据通路226(例如LAB Scan In数据通路226A、ALB Scan Out数据通路226B)通过下列任一个来移动:ALE110的顶部集合(ALE 110A至ALE 110E)的用户寄存器222和扫描触发器224;或者ALE 110的底部集合(例如ALE 110J至ALE 110F)的用户寄存器222和扫描触发器224。
当处于扫描模式时,从μDR 112向上经过最顶部扫描触发器224并且然后向下经过每个扫描触发器224回到μDR 112来形成扫描链。ALB 104顶部的ALE 110A的扫描触发器224的D输入上的复用器接收来自μDR输出(例如LAB Scan In数据通路226A)的扫描输入。最顶部ALE 110A行与μDR 112之间的SCAN块接收从其上方所设置的ALE 110行进入LAB Scan In数据通路226A上的复用器的扫描输入。
例如,为了执行验证操作,测试数据可在被移至ALE 110的底部集合(例如ALE110J至ALE 110F)中之前被移至ALE 110的顶部集合(例如ALE 110A至ALE 110E)中。ALE110的哪些之间的切换可经由开关电路228进行,所述开关电路228例如从控制器76、行控制器126、CRAM寄存器150等接收“选择顶部”(SEL TOP)控制信号。这个过程可对每个微扇区92重复进行,直到每个微扇区92使每个μSR 176被加载。在一些情况下,该过程至少部分并行地重复进行。一旦被加载,扫描加载信号(未示出)可例如由控制器76、LSM 130和/或CM 132来断言,以经由LAB Scan In数据通路226A将扫描值加载至用户寄存器222中。在将扫描值加载至用户寄存器22中之后,扫描加载信号被解除断言,并且用户寄存器222被定时。对于一个或多个微扇区92,来自用户寄存器的值被加载至对应SR 178中,并且经由LAB ScanOut数据通路226B被移出,从而准许测试数据的新值被加载至用户寄存器(例如ALE 110)中。
当行控制器126包括RAM 162时,来自ALE 110的用户数据可被暂时存储在RAM 162中,同时例如通过验证基于测试数据的计算结果将如预计和/或通过验证重新加载SR 178的定时匹配预计定时值和/或处于预计定时值的差的阈值之内来验证操作。一旦测试完成,可使用类似数据移动过程从RAM 162将用户数据重新加载至ALE 110中。
为了进一步详述如何通过μSR 176串行移动数据,在将测试数据加载至用户寄存器222中时,第一SR 178A可首先在其触发器230处接收测试数据。触发器230可经由LABScan Out数据通路226B将数据从用户寄存器222输出到第二SR 178B的随后耦合的下一个触发器230。这可重复进行,直到来自用户寄存器222的用户数据到达最后一个SR 178N的触发器230。来自用户寄存器222的用户数据被定时到触发器234,因为来自开关电路228(例如Scan In Next信号通路)的输出被耦合到最后一个SR 178N中的触发器234(例如Scan OutPrior信号通路)的输入,从而准许用户数据被重新定时到相应行控制器126以供在RAM 162中的暂时存储,同时继续将测试数据加载至用户寄存器222的每个中。要注意,Scan InNext信号通路和/或Scan Out Prior可以是1位宽或者任何适当数据宽度。可使用与用于加载测试数据相同的过程重新加载用户数据,但是可从每个相应行控制器126的RAM 162来读取用户数据以供分别加载至微扇区92A中。
为了对配置存储器(CRAM 210)进行编程,某些操作可进行。这些操作可包括写命令、读命令等的序列。例如,为了最初配置微扇区92A,控制器76可为微扇区92A指配特定标识符(例如将标识符写到ID解码块146的写命令),并且对微扇区92A的行控制器126A的CRAM寄存器150执行热重置。热重置可在已知安全功能状态中操作微扇区92A的控制寄存器,而没有影响微扇区92A和/或行控制器126A的电路的配置状态。控制器76然后可改变一个或多个开关电路(例如开关电路152、其他复用器电路)的状态,以便为微扇区92A内的CRAM功率复用器供电。控制器76可着手写入冗余度和操作条件(例如功率(P)、电压(V)、温度(T))控制设定、访问控制设定、认证设定等。当微扇区92A和/或行控制器126A被配置有上述初始操作设定时,控制器76可写入冻结控制,并且准许微扇区92A离开或进入用户模式,以准许微扇区92A使电路设计或者电路设计的一部分被加载至配置存储器和/或电路中。
另一个命令示例是“写入RAM内容、读取RAM内容”控制序列,例如可在行控制器126包括RAM 162的情况下使用。这些命令可由控制器76用于向/从数据通路144写入/读取RAM162的内容以供经由数据通路144访问。向RAM 162的写入可对RAM 162中的本地地址(LADDR)执行,其中待写入数据经由数据通路144随分组190传送。从RAM 162的读取可从RAM162中的LADDR来执行,以及待读取数据被放入消息时隙(例如时隙196)中。类似地,从/向微扇区92A内的配置存储器(例如CRAM 210)和/或其他电路(例如LAB 104)的读取/写入可使用经由RAM 162向/从数据通路144的数据传递的相同方法进行。这样,将被写到配置存储器的数据可从数据通路144来访问,并且在被写到配置存储器之前被存储在RAM 162中。反过来也适用,其中将要从配置存储器所读取的数据在作为出局分组190的时隙196中存储的数据被写到数据通路144之前被写到RAM 162。
为了进一步详述集成电路12及其系统的示例操作,图11是用于执行具有微扇区架构的可编程逻辑66的部分重新配置的过程248的流程图。要注意,虽然按照特定顺序示出,但是过程248的框可以不表示操作的详尽列表,而是可执行更多或更少的操作,和/或可完全省略至少部分框。如本文所述,过程248被描述为由控制器76所执行,但是应当理解,任何适当处理和/或控制电路可执行控制器76的操作的部分或全部,例如CM 132、LSM 130或者集成电路12的其他控制电路的一个或多个。
此外要注意,由于这个过程表示CRAM 210的部分重新配置,因此过程248的操作可适用于如下两种情况:μSR 176用于访问用户寄存器222(例如参照图10一般描述);以及准延迟不敏感(QDI)移位寄存器和/或Data In移位寄存器用于访问用户寄存器222(例如将参照图12-15所述)。
在框250,控制器76可将第一配置数据写到配置存储器(例如CRAM 210)的第一部分,并且可将第二配置数据写到配置存储器(例如CRAM 210)的第二部分。第一配置数据和第二配置数据可以是与将一个或多个电路设计或计算功能实现到可编程逻辑66中关联并且因此可与将由装置的提供商或制造商随装置所包含或者通过任何适当设计软件所生成的用户电路设计和/或电路设计关联的配置数据。在将配置写至可编程逻辑66中之后,控制器76可确定调整配置,例如调整使用可编程逻辑66所执行的操作、调整使用可编程逻辑66所执行的计算、将附加特征添加到CRAM 210的两个部分中实现的电路设计等。
响应于确定调整配置,在框252,控制器76可确定至少部分通过对已经存储的第一配置数据写入第三配置数据来调整经由配置存储器的第一部分所执行的操作。这可以是直写操作,该操作没有涉及调整第一配置数据的读出和修改操作。
要这样做,在框254,控制器76可将与配置存储器的第一部分关联的用户逻辑与配置存储器的第二部分隔离。可沿微扇区92的边界重新配置配置存储器,其中配置存储器的第一部分可属于第一微扇区92,并且其中配置存储器的第二部分可属于第二微扇区92。通过使用本文所述的寻址技术来引用DR 172和CRAM 210和/或用户寄存器222的相交点,与配置存储器的第一部分对应的用户逻辑可在功能上与配置存储器的其他部分(包括配置存储器的第二部分)隔离。以上例如参照作为示例的图10所述的寻址技术可准许第一ALE 110A的配置存储器210与任何其他ALE 110(例如ALE 110B、ALE 110C等)的配置存储器210和/或也被包含在第一ALE 110A内的配置存储器分开被引用。要注意,没有隔离操作可用于配置存储器210。微扇区实际上可以这样做。但是,CRAM 210控制的功能用户逻辑可在功能上被隔离。意味着如果用户逻辑正执行第一操作(例如变换A)并且被重新配置成执行第二操作(例如变换B),则在编程操作中的转变发生的同时数据将停止流经用户逻辑。在第二操作的配置完成之后,可例如通过变化区域外部的接口处在重新配置期间保持稳定的就绪和有效信号(例如来自FSM 158的微扇区控制信号)将数据返回到用户逻辑。
要注意,当集成电路12的一部分未用于特定数据传输或处理操作时,集成电路12的所述部分可经过功率选通或者工作在低功率状态。在这些降低功率消耗状态中,集成电路12可消耗更少功率,由此总体上降低应用系统62的功率消耗。
一旦被隔离,在框256,控制器76可将第三配置数据直接写到配置存储器的第一部分,而不调整或读取配置存储器的第二部分。一旦被写入,在框258,控制器76可基于配置存储器的第一部分中写入的第三配置数据并且基于配置存储器的第二部分中写入的第二配置数据来执行操作。
记住以上所述,有时可期望将一个或多个扫描触发器224(例如扫描寄存器)从微扇区92的ALE 110移动到数据寄存器172。这样做可将用于支持微扇区92的操作的扫描触发器224的数量减少例如原来的十分之一。通过将扫描触发器224移动到ALE 110外部的结构调整与附加结构调整相组合,可实现其他性能改进。例如,包括准延迟不敏感(QDI)电路可使用户数据能够较快移出从微扇区92的用户寄存器222(例如帧读操作),并且可使未使用的用户数据能够滤出该帧,由此增加处理速度。作为另一个示例,使用Data In移位寄存器和QDI电路使用户数据能够更快移入微扇区92的用户寄存器222中(例如帧写操作)。还可通过这些系统和方法来实现附加或备选有益效果。
为了进行详述,图12是示例行控制器126、行控制器270A以及包括准延迟不敏感(QDI)移位寄存器(SR)272的示例微扇区92A的框图。QDI SR 272包括多个串行耦合的准延迟不敏感(QDI)Load移位电路274,以提供移位寄存器架构。微扇区92A还包括从至少多个串行耦合的Data In移位电路278所形成的Data In移位寄存器(SR)276。所示电路的部分执行与以上参照图8所述相似的操作,并且因此本文中依靠所述电路。实际上,从图8所修改的电路至少包括FSM 148、FSM 158、CRAM寄存器150、P2S S2P块170、复用器152A,并且下面一般论述对这些组件操作的变更。为了便于说明,参照行控制器270A和微扇区92A。但是应当理解,这些描述可适用于使用QDI SR 272和/或Data In SR 276的每个行控制器270和/或微扇区92。要注意,所示的布置是可用于实现本文所述过程的电路的适当宽度和组合的一个示例。
LSM 130可指示行控制器270A执行对其存储器的访问。实际上,LSM 130可使用经由数据通路144所传送的数据分组190来指示读操作、写操作或者作为读-修改-写(RMW)操作的两种操作。行控制器270A可经由数据通路144从LSM 130接收命令。标识符解码器(ID解码)块146可对分组的标识符(ID)进行解码。通过读取分组的ID,ID解码块146可识别分组是否与行控制器126A相关和/或分组是否被预计由行控制器126A接收。数据通路144可由相应AR 106的每个行控制器270来共享,并且因此行控制器270A和微扇区92A可用于至少图7所示的布置中。因此,数据通路144还可继续到AR 106A的后一行控制器270。
行控制器270A还包括FSM 148。FSM 148在用于行控制器270A中时可经过修改,并且支持附加命令(例如经由数据通路144所接收的命令)的解码,例如用于控制内部数据通路和/或FSM 158的命令。实际上,FSM 148可与行控制器270A的其他电路配合工作,以指示读操作、写操作或者两种操作(例如RMW操作)。来自LSM 130的命令可向行控制器270A指示访问CRAM 210或者访问用户寄存器222,有时称作“帧的寄存器”或者“帧寄存器”。行控制器270A可对访问操作的每个组合指示操作的至少略微不同的集合。例如,行控制器270A可将μDR 112用于访问如先前所述的配置存储器(例如CRAM 210),并且可将QDI SR 272和/或Data In SR 276用于访问用户寄存器222。
为了进行详述,将行控制器270A与行控制器126A进行比较,可通过用于从用户寄存器222的读操作(和RMW操作)的QDI SR 272以及用于向用户寄存器222的写操作的DataIn SR 276来取代μSR 176。行控制器270A可使用从FSM 158所输出的信号来指示这各种读和写操作,在图12中示为经过修改,以适应QDI SR 272和Data In SR 276的添加,并且适应μSR 176的去除。要注意,Data In SR 276也可以是1位宽数据寄存器,从而使它与用于写操作的μSR 176在功能上相似。
由于CRAM 210的访问对于行控制器270A和行控制器126A是相似的,因此不重复描述。但是论述用于从当前所选用户寄存器222(例如根据解码器块168所输出的地址所选)进行读取的读操作以及向当前所选用户寄存器222进行写入的写操作。当从用户寄存器222读取数据时,经由QDI SR 272的传输可绕过(bypass)和/或不涉及Data In SR 276。反过来也成立。当向用户寄存器222写入数据时,经由Data In SR 276的传输可绕过和/或不涉及QDISR 272。
用于读取用户寄存器222的命令可指示供FSM 148和/或FSM 158在指示读操作时的实现的选项。例如,命令可经由选项的指示来指示滤出从未使用用户寄存器222所读取的数据和/或读数据的压缩。当读数据将被过滤时,可使用QDI SR 272的硬件和/或软件从微扇区92返回读数据,以执行转变中的过滤。过滤可从移位数据中去除占位符数据,所述占位符数据原本指示可编程存储器的部分(例如用户寄存器222)未使用的时间。因此,当读数据从QDI SR 272移动并且存储在RAM 162中时,所存储的读数据不包括来自未使用(例如未编程)电路(例如存储器)的数据。可访问RAM 162中存储的数据,以供进一步处理和/或供传送给数据通路144。
当执行RMW操作时,可在按照命令的指令来修改读数据之前并且在经修改数据被写回其对应用户寄存器222之前执行读操作。当确定哪一个数据要修改以及如何将经修改数据写到用户寄存器222时,可参照在从用户寄存器222读取数据的同时使用从QDI SR 272所输出的移位二进制数据所生成的位置掩码。这在下面参照QDI SR 272的操作及其输出进一步论述。
写操作可涉及采用写数据来写入当前所选用户寄存器222(例如根据解码器块168所输出的地址所选)。用于写入用户寄存器222的命令可指示供FSM 148和/或FSM 158在指示写操作时的实现的选项。例如,命令可经由选项的指示来指示在存储于用户寄存器222中之前对写数据进行解压缩(或者不解压缩)。当指示解压缩时,行控制器270A可进行操作以在将写数据写到用户寄存器222之前按照解码或解压缩过程对写数据进行解压缩。
由FSM 148和/或FSM 158所输出的控制信号(S)指示微扇区270A的电路访问存储器。例如,来自FSM 148的控制信号(S)可从QDI FIFO缓冲器282中选择要读回与行控制器270A对应的LSM 130A的数据,控制信号(S)可通过根据向并行-串行(P2S)块280的指令使写数据经过Data In移位电路278移动来指示向用户寄存器222写入数据,以便将Data In SR276输出写数据等。
当指示向用户寄存器22写入数据时,FSM 158可指示P2S块280向Data In SR 276输出写数据以供经过一个或多个Data In移位电路278移动。P2S块280将写数据传送给第一Data In移位电路278A的第一输入。FSM 158可传送时钟,以发起将写数据移入根据来自解码器块168的输出(例如Addr)所寻址的用户寄存器222中。
为了进一步详述微扇区270A的存储器存取操作,更详细论述每个读操作、RMW操作和写操作。当指示这些操作的任一个时,解码器块168可存储和输出目标用户寄存器222的地址。这个地址可从指示操作的数据分组190得出。要注意,与RMW操作关联的写操作一般可与经由命令所指示的写操作是相同的,并且与RMW操作关联的读操作可一般与经由命令所指示的读操作是相同的。因此下面论述每个。
为了执行用户寄存器222的读操作,FSM 158可传送控制信号,按照数据分组190的命令所指示的指令对QDI Load移位电路274进行编程。FSM 158可生成模式信号(例如QDI_M输入),以便对QDI Load移位电路274中的读操作进行编程,其中读操作可与RMW操作关联。一旦被编程,FSM 158可将第一令牌传送给与QDI Load移位电路274串行耦合的起动块284。第一令牌可以是FSM 158所生成的脉冲,和/或可以是从时钟信号所得出的脉冲。
实际上,起动块284将第一令牌插入QDI Load移位电路274N中,以便从左(例如QDILoad移位电路274A)到右(例如QDI Load移位电路274N)开始数据移动。令牌本身经过QDISR 272从右到左传送。一般来说,从左到右的移位由FSM 158通过将令牌传送给起动块284来开始,其中起始令牌是时钟脉冲。具有在FSM 158所预期的时间发起移位的定时的任何适当时钟可用于向起动块284提供令牌。FSM 158有时使用被提供给被读取的用户寄存器222的相同时钟,例如当数据将在自激时钟上同步捕获时。FSM 158有时使用作为被提供给用户寄存器222的时钟的补充的时钟,例如当被读取的数据与集成电路12的时钟异步被取样时和/或在帧中被提供给用户寄存器222的时钟未运行(例如禁用)时。要注意,被传送给起动块284的时钟信号发起读数据的移动,并且可能不是到起动块284的持续传输。一旦第一脉冲被传送给起动块284,时钟的传输可停止,因为可采用脉冲来发起握手操作。
可使用QDI_M输入(例如QDI_M参数)来设置的示例行为包括过滤或者无过滤操作、顶部选择操作、底部选择操作、压缩或者无压缩操作等。
当指示顶部选择操作时,QDI Load移位电路274可使用端子286(U_T)和端子288(D_T)从微扇区92A的上半部接收数据。当指示底部选择操作时,QDI Load移位电路274可使用端子288(D_B)和端子290(U_B)从微扇区92A的下半部接收数据。当指示压缩操作时,QDILoad移位电路274可在将移位数据输出到QDI FIFO缓冲器282之前对读数据进行编码或压缩。当指示无过滤操作(或者没有指示过滤操作)时,QDI Load移位电路274各自可将令牌、读数据和读已使用位(U)插入移位数据中,而与读已使用位的值无关。但是,当指示过滤操作时,QDI Load移位电路274可以不将令牌插入将被输出到QDI FIFO缓冲器282的移位数据(例如读数据(D_T、D_L、D_B、D_R)和读已使用位(U_T、U_L、U_B、U_R))中。
进一步详述过滤操作,为了在读数据被移动到QDI FIFO缓冲器282的同时过滤读数据,每个相应QDI Load移位电路274可在已使用位清除时通过来自相邻QDI Load移位电路274的所接收移位数据,或者在已使用位被设置时将数据位插入移位数据中。每个QDILoad移位电路274可响应使用中的位(例如在从顶部已使用位(U_T)接收数据的端子286处或者在从底部已使用位(U_B)接收数据的端子290处所接收的信号)而插入令牌,由此使QDIFIFO缓冲器282接收与已使用用户寄存器222对应的一个或多个令牌。响应接收每个令牌,QDI FIFO缓冲器282可基于指示使用哪些用户寄存器222的每个令牌来生成位置掩码。还可在至少与图13-15关联的论述中进一步详述位置掩码。
为了压缩读数据,QDI Load移位电路274可包括压缩读数据的硬件或软件。可执行任何适当编码和/或压缩操作,以减少表示读数据的位数。压缩读数据可例如在时隙196中作为数据分组的组成部分从行控制器270A来传送。
QDI移位寄存器272可包括多个QDI Load移位电路274,所述QDI Load移位电路274各自接收QDI_M输入,并且因此各自基于命令来编程。实际上,在编程之后并且一旦起动块292接收第一令牌,从目标用户寄存器222读取数据可开始。
QDI SR 272可向QDI FIFO缓冲器282输出从寄存器帧读取的数据和已使用位。这个输出操作可使用QDI握手技术。QDI相关组件(例如QDI SR 272和QDI FIFO缓冲器282)可支持存储元件之间的数据移动和/或计算,而无需每个相应传输的时钟,而是使用元件之间的定时无关单向或双向握手的形式。QDI握手技术可准许以比被提供给寄存器帧的时钟要快得多的速率从寄存器帧移动数据。每个QDI Load移位电路274A可使用例如用于建立不同装置之间的路由器连接和/或其他通信操作的握手信号来传送二进制数据。
使用QDI Load移位电路274之间的握手过程可准许数据传输速率相对于其他技术增加,因为在传送下一个握手信号之前可以不等待确认信号(由于握手本身可向下游QDILoad移位电路274传送位),例如相对于使用时钟信号向/从用户寄存器222移动数据的μSE176。作为示例,当用户寄存器222和/或微扇区92A被定时在1千兆赫兹(GHz)时,QDI SR 272可在时钟的逻辑高电平(例如“1”脉冲)内移出超过5位(例如对1 GHz时钟在1纳秒(ns)的时长具有逻辑高电平的脉冲)。QDI握手技术还可准许从QDI SR 272所移出的读数据的过滤和/或解压缩。
QDI FIFO缓冲器282可从QDI SR 272接收串行数据,并且可将读数据提供给P2S块280和/或提供给RAM 162。指示微扇区92A的一部分中的存储器的哪些部分被使用而存储器的哪些部分未使用的位置掩码也可被传送给P2S块280(例如已使用)。
为了详述使用与以上所述相似的读操作的RMW操作,P2S块280可在执行RMW操作时将经修改数据写到存储器之前修改数据(例如基于位置掩码来执行选择性写操作)。当命令指示RMW操作时,读数据在作为写操作的组成部分被写回用户寄存器222之前被输出到P2S块280以供修改。
由解码器块168所指示的地址在执行RMW操作的同时未改变。因此,用于指示用户寄存器222的地址在修改操作和写操作期间与在读操作期间是相同的。P2S块280可通过使用QDI FIFO缓冲器282所生成的位置掩码来修改读数据,以执行选择性写操作(例如修改一个或多个用户寄存器222的数据)。
P2S块280可基于位置掩码来修改数据,以便对与所寻址用户寄存器222对应的特定位执行选择性写操作。实际上,通过位置掩码的位放置(例如来自端子281的输出的二进制序列)所指示的相对位置可对应于从端子283所传送的移位读数据(数据,来自用户寄存器222的读数据)的位放置。通过参照位置掩码,P2S块280可基于值(例如“0”与“1”)以及从端子281所输出的位(例如位置掩码位)的相对序列将从端子283所输出的位(例如读数据)与相对存储器位置相互关连。P2S块280可在将经修改数据写回用户寄存器222之前确定哪些位要修改时参照位置掩码。要注意,如果经由命令(例如来自行控制器270、来自LSM 130、MCM 132或者集成电路12和/或系统10的任何其他适当控制或处理电路的命令)所请求,则位置掩码位也可从QDI FIFO缓冲器282输出。一旦经过修改,可指示P2S块280将经修改数据作为写操作的组成部分写到所寻址用户寄存器222。与RMW操作关联的写操作一般可与经由命令所指示的写操作是相同的。因此两者均在下面论述。
为了详述写操作,P2S块280可向Data In SR 276传送写数据(例如对于RMW操作的情况的修改后读数据、来自数据分组190的写数据)。当命令指示这样做时,P2S块280可在将写数据写到存储器之前对写数据进行解压缩。写数据移动到Data In SR 276可响应来自FSM 158的时钟信号而发起。
实际上,基于命令中指示的数据封装模式,P2S块280可在用户寄存器222中进行存储之前对写数据进行解压缩,以恢复数据分组190的压缩数据以供写入。在执行任何解压缩之后,可响应FSM 158所指示的时钟信号而写入写数据。
在一些情况下,例如当执行RMW操作时,基于位置掩码来执行写操作。在这些情况下,可假定FSM 148对当前用户寄存器222的读取已经测序,以便使已使用位是正确的。P2S块280可使用命令中指示的位置掩码将写数据与从QDI FIFO缓冲器282所接收的数据相组合。例如,采用从QDI FIFO缓冲器282所接收的读数据以及从RAM 162或CRAM 150所接收的写数据来写入与每个掩码位设置为1的位置对应的读数据,其中当重叠时,写数据用于在写回至寄存器帧和/或CRAM 210中之前作为修改操作的组成部分来改写读数据。
记住以上所述,示例用户寄存器222读取可涉及控制器76采用命令集合来初始化LSM 130,所述命令集合指示数据从某个行控制器270被读取以供传送给一个或多个端点地址。端点地址可表示来自行控制器270的读数据的消费者,并且因此可对应于可编程逻辑66的其他部分、由互连资源46可访问的端点,例如实现路由电路的芯片上网络(NOC),所述路由电路具有用于读数据、待写入数据、待处理数据等的灵活带宽或者可配置目标地址。这可与其他直接存储器存取(DMA)类型操作相似,所述DMA类型操作可作为命令列表的函数将数据从一个存储器位置移动到另一个存储器位置。
作为示例,命令列表可指示LSM 130初始化相应行控制器270A,从微扇区96A的一个或多个用户寄存器222读取数据,并且将读数据从微扇区270A传送给数据通路144。LSM130可生成命令,并且将一个或多个命令传送给一个或多个行控制器270(包括行控制器270A),以读取预期数据。
LSM 130例如可经由数据通路144向微扇区270A传送第一命令。一旦由ID解码块146识别为与微扇区270A相关,FSM 148和/或FSM 158可按照用于读操作的第一命令中指示的一个或多个选项(例如过滤或者无过滤选项、顶部选择选项、底部选择选项)来初始化读操作。一旦被初始化,微扇区270A可接收指示读操作的第二命令。一旦由ID解码块146识别为与微扇区270A相关,FSM 148和/或FSM 158可指示通过第二命令所指示的读操作,并且可将数据从用户寄存器222读取到QDI FIFO缓冲器282。在读取数据期间或之后,LSM 130可经由数据通路144向微扇区270A传送第三命令,指示微扇区270A将读数据从QDI FIFO缓冲器282传送给LSM 130。一旦由ID解码块146识别为与微扇区270A相关,FSM 148和/或FSM 158可例如在读数据被添加到数据分组190的时隙196之后指示从QDI FIFO缓冲器282到数据通路144的读数据的传输,所述数据分组190在其报头192中传送第三命令。在一些情况下,第三命令还可包括报头192中的目标地址(例如端点地址)目标地址,该目标地址向路由电路和/或其他行控制器270指示一旦被发送给数据通路144时传送具有读数据的数据分组190的位置。
如以上一般描述,微扇区92A可包括逻辑电路,以存储与配置数据对应的值。配置存储器(例如CRAM 210)用于存储这些值。不同访问电路可被包含在微扇区92中,以准许行控制器270访问配置存储器。访问电路的一个示例在图13中示出。
为了进一步详述,图13是图12的行控制器270A和微扇区92A的框图。图13可使用与图12和图10所示的相同电路的至少部分,并且因此本文中为了便于说明而依靠这些描述。但是,图12与图10之间的一个变更是选择电路(SEL O电路)300的使用。实际上,SEL O电路300包括与扫描触发器224中包含的电路不同的电路。至少部分对于与QDI SR 272和DataIn SR 276的数据访问兼容性进行这些变更。用户存储器222、CRAM 210以及如何访问和/或使用微扇区92的那些部分的每个保持不变,并且与适应QDI SR 272和/或Data In SR 276而进行的变更交叉兼容。
SEL O电路300可包括实现关联用户寄存器222的逻辑电路。当解码器块168中存储的地址以及经由来自FSM 158的控制信号所实现的选项的组合在存储器(例如用户寄存器222)的所选行和所选列相交时,可访问用户寄存器222。
当解码器块168将逻辑高值电压(例如“1”定时到逻辑门302的输入时,SEL O电路300A可传送ALE 110A的用户寄存器222中存储的数据。当地址(ADDR)、用户寄存器222中存储的数据(D)和使用中的位(例如使用中)的组合使逻辑门302激活和改变输出的状态时,逻辑门302进行传送。逻辑门302示为AND逻辑门,但是应当理解,任何适当组合逻辑电路在这里可用于响应寻址信号而执行输出数据的类似操作。使用中的位可从CRAM 210B的一部分(即,专用于存储指示用户寄存器222是否正在使用的值并且存储用户值的的CRAM 210的一部分的示例)进行传送。专用于存储使用中的位值的CRAM 210可被设置在同一列中,并且可按照任何适当方式(例如经由μDR 112)来访问。使用中的位还可从CRAM 210B传送给逻辑门304,以控制逻辑门304在使用地址(ADDR)被访问时是否传送逻辑高值电压(例如“1”)。因此,当用户寄存器222被指示为正在使用时,来自用户寄存器222的数据在对应QDI Load移位电路274C被传送给QDI SR 272。当使用中的位被指示为不在使用中(例如通过逻辑门304不传送逻辑高值电压)时,从SEL O电路300所输出的数据是逻辑低值电压(例如“0”,系统参考电压),该逻辑低值电压向QDI Load移位电路274C指示用户寄存器222在寻址时不在使用中。QDI Load移位电路274C使来自SEL O电路300的读数据和/或读已使用位值能够使用QDISR 272例如通过使用异步逻辑过程被回传给行控制器270A。
可包括Data In SR 276,以提供直接程序选项,该直接程序选项准许行控制器270对相应用户寄存器222直接编程。μDR 112可将数据移入CRAM 210中,以及Data In SR 276可将数据移动到用户寄存器222。将数据从Data In SR 276移动到用户寄存器222可涉及Data In移位电路278内设置的附加路由电路,以便将移位数据从Data In SR 276传送给ALE 110A-110E(例如微扇区92A的顶部)和/或ALE 110F-110J(例如微扇区92A的底部)以供存储。要注意,QDI SR 272可与来自用户寄存器222的数据读取通路关联,以及Data In SR276可与行控制器270A用于将数据写到用户寄存器222的数据写入通路一般关联。
不同的电路可用于代替SEL O电路300的逻辑电路,以直接访问用户寄存器222。例如,图14是具有ALE 110电路的另一个示例的微扇区92A的框图。图14的ALE 110与图13和图10的其他ALE 110有所不同,至少因为它包括QDI电路320。实际上,图14所示电路的部分与先前所述相同,包括CRAM 210、μDR 112、QDI SR 272、Data In SR 276(S)等。
如与使用于自解码器块168的地址来选择用户寄存器相反,CRAM 210用于选择每个ALE 110列中的哪一个用户寄存器222将被读取。来自所选用户寄存器222的数据被读入垂直QDI移位寄存器322中,该垂直QDI移位寄存器322由一个或多个QDI电路320所组成。这可准许微扇区92A的每个用户寄存器222在使用中时被读取,如与花费每次一个读取每个用户寄存器222的时间相反。
QDI电路320可接收与图13的SEL O电路300相似的输入。QDI电路320可基于使用中的位(已使用,U)将所读取用户数据(数据,D)和使用中的数据输出到QDI SR 272,以供返回给行控制器270。QDI电路320可包括生成所读取用户数据输出并且生成使用中的位数据以供QDI SR 272传输的任何适当电路。类似地,Data In SR 276可使用与以上所述相似的方法将数据写到用户寄存器222。
其他电路可用于代替SEL O电路300的逻辑电路,以直接访问用户寄存器222。例如,图15是具有ALE 110电路的另一个示例的微扇区92A的框图。图15的ALE 110与图14、图13和图10的其他ALE 110有所不同,至少因为它包括逻辑电路340。实际上,图14所示电路的部分与先前所述相同,包括CRAM 210、μDR 112、QDI SR 272、Data In SR 276(S)等。
来自用户寄存器222的每个输出以及来自CRAM 342的每个对应使用中的位在到相应QDI SR 272的相应数据通路中被路由到LCB 114。实际上,QDI SR 272被复制,使得来自用户寄存器和存储使用中的位的CRAM 342的垂直传送位的每个可并行地被移出。因此,水平QDI SR 272为10位宽,并且包括QDI Load移位块274的10倍的数量,以形成每个相应QDISR 272。这个并行传输通过通路344上所指示的10的数据宽度来表示。在期望较高数据读取速度的情况下,可使用这个设计,因为可并行地读出LAB 104的列中的每个用户寄存器。要注意,QDI FIFO缓冲器282以及从QDI SR 272接收数据的任何其他支持组件也可被缩放,以支持10并行QDI SR 272的接收。要注意,Data In SR 276可使用与以上所述相似的方法将数据写到用户寄存器222。在一些情况下,Data In SR 276数据通路可被缩放,以准许并行写入操作,与参照并行QDI SR 272所述的并行读取操作相似。
虽然本公开所述的实施例可容许各种修改和备选形式,但是作为举例在附图中示出并且在本文中详细描述具体实施例。例如,可实现本文所述实施例和/或技术的任何适当组合。此外,可使用多种格式(例如单精度浮点、半精度浮点、bfloat16、扩展精度等)的任何适当组合。此外,每个DSP电路和/或DSP架构可包括任何适当数量的元件(例如加法器、乘法器64、路由等)。相应地应当理解,本公开不是要局限于所公开的特定形式。本公开涵盖落入以下所附权利要求书所限定的本发明的精神和范围之内的全部修改、等效和备选方案。
本公开的技术效果包括提供微扇区架构的系统和方法。本文所述的微扇区架构可通过准许可编程结构的编程对结构的较小区域进行,有益于可编程逻辑装置(例如现场可编程门阵列和/或其他可配置装置)的操作。所述的系统和方法涉及提供用于读和写操作的ALE用户寄存器的基于帧的选择,如与对ALE用户寄存器的基于扫描的访问相反。系统可使用准延迟不敏感(QDI)电路作为QDI移位寄存器的组成部分。QDI SR可用于以比其他技术和/或比使用时钟方法从ALE用户寄存器读出数据更快的速率来执行寄存器读取。QDI电路可执行本地过滤和/或解压缩操作,以改进传递时的读数据。此外,读-修改-写操作可与从自QDI电路所输出的数据所生成的掩码相组合,以实现ALE用户寄存器的帧内的数据的选择性写入。这些系统和方法可与附加QDI SR(该附加QDI SR与ALE用户寄存器串行设置)结合使用以形成垂直移位寄存器,或者与从帧的每个ALE用户寄存器(例如与逻辑访问块(ALB)关联的每个ALE)并行接收数据的多个水平QDI移位寄存器结合使用。相对于其他可编程结构设计,每个组合可改进数据读取和写入时间,和/或改进部署用户设计的单元精度。
本文所述并且要求保护的技术被引用并且应用于明显改进本技术领域的实用性的实物和具体示例,并且因此不是抽象、无形或者纯理论的。此外,如果附于本说明书结尾的任何权利要求包含表示为“用于[执行][功能]...的部件”或者“用于[执行][功能]...的步骤”的一个或多个元件,则预计这类元件要根据35 U.S.C. 112(f)来解释。但是,对于包含按照任何其他方式所表示的元件的任何权利要求,预计这类元件不根据35 U.S.C. 112(f)来解释。
本公开的示例实施例
下列编号条款限定本公开的某些示例实施例。
条款1。
一种集成电路,包括:
第一微扇区,包括:
存储器,配置成存储第一数据和第二数据;
数据寄存器,配置成将第一数据写到存储器;
第一移位寄存器,配置成从存储器接收第二数据,其中第二数据在到第一移位寄存器的传输中绕过数据寄存器;以及
行控制器,耦合到第一微扇区,其中行控制器响应于向第一移位寄存器传送指示读取第二数据的控制信号而接收第二数据。
条款2。
示例实施例1的集成电路,其中,行控制器在分组的一个或多个时隙中传送从存储器所读取的数据。
条款3。
示例实施例1的集成电路,其中,多个逻辑门用于响应指示地址的信号、从存储器所读取的数据以及准许从存储器所读取的数据的访问的使用中的信号而访问从存储器所读取的数据。
条款4。
示例实施例1的集成电路,包括行控制器下方所设置的附加行控制器,其中附加行控制器和所述行控制器被耦合到共享数据通路,并且其中所述行控制器配置成在准许附加行控制器检查报头之前访问经由共享数据通路所传送的数据分组的报头。
条款5。
示例实施例4的集成电路,其中,行控制器配置成:
确定报头匹配与行控制器关联的标识符的至少一部分;以及
从共享数据通路移动数据分组,以停止经由共享数据通路的数据分组的传输。
条款6。
示例实施例1的集成电路,其中,存储器配置成直接耦合到第一移位寄存器,并且其中第一微扇区包括:
附加存储器,设置在与存储器相同的列中;以及
第二移位寄存器,包括与第一移位寄存器相同数量的电路,其中第二移位寄存器和第一移位寄存器配置成并行地移动从存储器所读取的数据以及从附加存储器所读取的数据。
条款7。
示例实施例1的集成电路,其中,第一微扇区包括第二移位寄存器,所述第二移位寄存器配置成将从存储器所读取的数据传送给第一移位寄存器,其中第一移位寄存器和第二移位寄存器包括串行耦合的多个准延迟不敏感(QDI)电路。
条款8。
示例实施例7的集成电路,其中,多个QDI电路的每个相应QDI电路使用握手来传送从存储器所读取的数据。
条款9。
示例实施例8的集成电路,其中,数据寄存器包括1位宽数据通路、第一触发器和第二触发器,并且其中1位宽数据通路耦合在第一触发器与第二触发器之间。
条款10。
一种方法,包括:
从数据通路接收数据分组;
使用有限状态机来生成多个控制信号,以响应数据分组而至少部分通过使用准延迟不敏感(QDI)移位寄存器将所读取的存储数据从寄存器移动到缓冲器从微扇区的寄存器来读取所存储数据,其中QDI移位寄存器接收来自寄存器的读数据位以及来自配置存储器的使用中的位;
插入所读取的存储数据,以便将一个或多个位添加到数据分组的一个或多个时隙;以及
向数据通路传送包括所读取的存储数据的数据分组。
条款11。
示例实施例10的方法,包括:
生成模式信号,该模式信号配置成向QDI移位寄存器指示作为移位的组成部分来过滤所读取的存储数据;以及
向QDI移位寄存器传送模式信号。
条款12。
示例实施例10的方法,包括:
确定数据分组,包括:
匹配解码器中存储的标识符的报头;
与将被存储在第一寄存器中的配置数据对应的第一数据部分;以及
与将被写入配置存储器中的数据对应的第二数据部分;
在第一寄存器中存储第一数据部分;以及
在易失性存储器中存储第二数据部分。
条款13。
示例实施例12的方法,包括经由可编程逻辑装置的可编程逻辑外部所设置的本地扇区管理器来生成数据分组,其中报头配置成指示所读取的存储数据的读取。
条款14。
示例实施例10的方法,包括:
从数据通路接收包括报头的后一数据分组,其中数据通路被耦合到多个行控制器;
确定报头不匹配解码器中存储的标识符;以及
将后一数据分组返回到数据通路,以供传送给多个行控制器的另一个行控制器。
条款15。
一种系统,包括:
可编程逻辑,包括多个配置存储器和寄存器;以及
控制电路,设置在系统主板上的可编程逻辑的部分之间,其中控制电路配置成:
从数据通路接收数据分组;以及
使用有限状态机来生成多个控制信号,以响应数据分组而至少部分通过使用准延迟不敏感(QDI)移位寄存器将所读取的存储数据从寄存器移动到缓冲器从微扇区的寄存器来读取所存储数据,其中QDI移位寄存器配置成至少部分基于握手操作来传送所读取的存储数据。
条款16。
示例实施例15的系统,其中,QDI移位寄存器接收来自寄存器的读数据以及来自多个配置存储器的子集的使用中的位,其中QDI移位寄存器至少部分基于使用中的位来确定从所读取的存储数据中过滤读数据位。
条款17。
示例实施例15的系统,其中,控制电路配置成至少部分基于目标数据经过微扇区的每个1位数据寄存器不超过一次的移动将数据写到微扇区的多个配置存储器的子集。
条款18。
示例实施例15的系统,其中,握手操作准许进行所读取的存储数据到缓冲器的传输,而无需使用时钟的上升沿来进行传输。
条款19。
示例实施例15的系统,包括附加控制电路,所述附加控制电路设置在可编程逻辑外部和相同主板上,其中控制电路包括行控制器,并且其中附加控制电路配置成生成数据分组以指示行控制器访问微扇区的所存储数据的命令。
条款20。
示例实施例19的系统,其中,行控制器配置成接收数据分组,并且在检查数据分组包括具有与行控制器的标识符匹配的标识符的报头之后,生成多个控制信号以实现报头所指示的命令。

Claims (20)

1.一种集成电路,包括:
第一微扇区,包括:
存储器,配置成存储第一数据和第二数据;
数据寄存器,配置成将所述第一数据写到所述存储器;
第一移位寄存器,配置成从所述存储器接收所述第二数据,其中,所述第二数据在到所述第一移位寄存器的传输中绕过所述数据寄存器;以及
行控制器,耦合到所述第一微扇区,其中,所述行控制器响应于向所述第一移位寄存器传送指示读取所述第二数据的控制信号而接收所述第二数据。
2.如权利要求1所述的集成电路,其中,所述行控制器在分组的一个或多个时隙中传送从所述存储器读取的所述第一数据和第二数据。
3.如权利要求1所述的集成电路,其中,多个逻辑门用于响应于指示地址的信号、从所述存储器读取的所述数据以及准许对从所述存储器读取的所述数据的访问的使用中的信号而访问从所述存储器读取的所述数据。
4.如权利要求1所述的集成电路,包括所述行控制器下方设置的附加行控制器,其中所述附加行控制器和所述行控制器被耦合到共享数据通路,并且其中所述行控制器配置成在准许所述附加行控制器检查所述报头之前访问经由所述共享数据通路传送的数据分组的报头。
5. 如权利要求4所述的集成电路,其中,所述行控制器配置成:
确定所述报头匹配与所述行控制器关联的标识符的至少一部分;以及
从所述共享数据通路移动所述数据分组,以停止所述数据分组经由所述共享数据通路的传输。
6. 如权利要求1至4中的任一项所述的集成电路,其中,所述存储器配置成直接耦合到所述第一移位寄存器,并且其中所述第一微扇区包括:
附加存储器,设置在与所述存储器相同的列中;以及
第二移位寄存器,包括与所述第一移位寄存器相同数量的电路,其中所述第二移位寄存器和所述第一移位寄存器配置成并行地移动从所述存储器读取的所述数据以及从所述附加存储器读取的数据。
7.如权利要求1至4中的任一项所述的集成电路,其中,所述第一微扇区包括第二移位寄存器,所述第二移位寄存器配置成将从所述存储器读取的所述数据传送给所述第一移位寄存器,其中所述第一移位寄存器和所述第二移位寄存器包括串行耦合的多个准延迟不敏感(QDI)电路。
8.如权利要求7所述的集成电路,其中,所述多个QDI电路的每个相应QDI电路使用握手来传送从所述存储器读取的所述数据。
9.如权利要求8所述的集成电路,其中,所述数据寄存器包括1位宽数据通路、第一触发器和第二触发器,并且其中所述1位宽数据通路耦合在所述第一触发器与所述第二触发器之间。
10.一种方法,包括:
从数据通路接收数据分组;
使用有限状态机来生成多个控制信号,以响应于所述数据分组而至少部分通过使用准延迟不敏感(QDI)移位寄存器将读取的存储数据从寄存器移动到缓冲器,来从微扇区的所述寄存器读取所述存储数据,其中所述QDI移位寄存器接收来自所述寄存器的读数据位以及来自配置存储器的使用中的位;
插入所读取的存储数据,以将一个或多个位添加到所述数据分组的一个或多个时隙;以及
向所述数据通路传送包括所读取的存储数据的所述数据分组。
11.如权利要求10所述的方法,包括:
生成模式信号,所述模式信号配置成向所述QDI移位寄存器指示过滤所读取的存储数据作为所述移位的一部分;以及
向所述QDI移位寄存器传送所述模式信号。
12.如权利要求10或11所述的方法,包括:
确定所述数据分组,包括:
匹配解码器中存储的标识符的报头;
与将被存储在第一寄存器中的配置数据对应的第一数据部分;以及
与将被写入所述配置存储器中的数据对应的第二数据部分;
在所述第一寄存器中存储所述第一数据部分;以及
在易失性存储器中存储所述第二数据部分。
13.如权利要求12所述的方法,包括经由可编程逻辑装置的可编程逻辑外部所设置的本地扇区管理器来生成所述数据分组,其中所述报头配置成指示所读取的存储数据的所述读取。
14.如权利要求10或11所述的方法,包括:
从所述数据通路接收包括报头的后一数据分组,其中所述数据通路被耦合到多个行控制器;
确定所述报头不匹配解码器中存储的标识符;以及
将所述后一数据分组返回到所述数据通路,以便传送给所述多个行控制器的另一个行控制器。
15.一种系统,包括:
可编程逻辑,包括多个配置存储器和寄存器;以及
控制电路,设置在相同主板上和所述可编程逻辑的部分之间,其中所述控制电路配置成:
从数据通路接收数据分组;以及
使用有限状态机来生成多个控制信号,以响应于所述数据分组而至少部分通过使用准延迟不敏感(QDI)移位寄存器将读取的存储数据从所述寄存器移动到缓冲器,来从微扇区的所述寄存器读取存储数据,其中所述QDI移位寄存器配置成至少部分基于握手操作来传送所读取的存储数据。
16.如权利要求15所述的系统,其中,所述QDI移位寄存器接收来自所述寄存器的读数据位以及来自所述多个配置存储器的子集的使用中的位,其中所述QDI移位寄存器至少部分基于使用中的位来确定从所读取的存储数据中过滤所述读数据位。
17.如权利要求15所述的系统,其中,所述控制电路配置成至少部分基于目标数据经过所述微扇区的每个1位数据寄存器不超过一次的移动将数据写到所述微扇区的所述多个配置存储器的子集。
18.如权利要求15-17中的任一项所述的系统,其中,所述握手操作准许所读取的存储数据到所述缓冲器的所述传输的进展,而不使用时钟的上升沿使所述传输进展。
19.如权利要求15-17中的任一项所述的系统,包括附加控制电路,所述附加控制电路设置在所述可编程逻辑外部和相同主板上,其中所述控制电路包括行控制器,并且其中所述附加控制电路配置成生成数据分组以指示所述行控制器访问所述微扇区的所述存储数据的命令。
20.如权利要求19所述的系统,其中,所述行控制器配置成接收所述数据分组,并且在验证所述数据分组包括具有与所述行控制器的标识符匹配的标识符的所述报头之后,生成所述多个控制信号以实现所述报头指示的命令。
CN202110980694.XA 2020-09-25 2021-08-25 基于带有具有扫描寄存器的数据寄存器的微扇区基础架构的逻辑结构 Pending CN114254577A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/033,348 US11960734B2 (en) 2020-09-25 2020-09-25 Logic fabric based on microsector infrastructure with data register having scan registers
US17/033348 2020-09-25

Publications (1)

Publication Number Publication Date
CN114254577A true CN114254577A (zh) 2022-03-29

Family

ID=74102256

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110980694.XA Pending CN114254577A (zh) 2020-09-25 2021-08-25 基于带有具有扫描寄存器的数据寄存器的微扇区基础架构的逻辑结构

Country Status (4)

Country Link
US (1) US11960734B2 (zh)
EP (1) EP3975428A3 (zh)
JP (1) JP2022054419A (zh)
CN (1) CN114254577A (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210117359A1 (en) * 2020-12-24 2021-04-22 Krishna Kumar Nagar User Signals for Data Transmission Over a Bus Interface Protocol
CN113961494B (zh) * 2021-10-21 2023-09-15 上海安路信息科技股份有限公司 一种pcie总线与axi总线的桥接系统

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6255848B1 (en) 1999-04-05 2001-07-03 Xilinx, Inc. Method and structure for reading, modifying and writing selected configuration memory cells of an FPGA
US7571303B2 (en) 2002-10-16 2009-08-04 Akya (Holdings) Limited Reconfigurable integrated circuit
US9432298B1 (en) 2011-12-09 2016-08-30 P4tents1, LLC System, method, and computer program product for improving memory systems
US10523207B2 (en) 2014-08-15 2019-12-31 Altera Corporation Programmable circuit having multiple sectors
WO2017040049A1 (en) 2015-09-01 2017-03-09 Flex Logix Technologies, Inc. Block memory layout and architecture for programmable logic ic, and method of operating same
US11257526B2 (en) * 2018-01-11 2022-02-22 Intel Corporation Sector-aligned memory accessible to programmable logic fabric of programmable logic device
US10673440B1 (en) 2019-08-13 2020-06-02 Xilinx, Inc. Unified programmable computational memory and configuration network
US20210013885A1 (en) * 2020-09-25 2021-01-14 Sean R. Atsatt Logic fabric based on microsector infrastructure
US20230251839A1 (en) * 2022-02-10 2023-08-10 SambaNova Systems, Inc. Head Of Line Blocking Mitigation In A Reconfigurable Data Processor

Also Published As

Publication number Publication date
US20210011636A1 (en) 2021-01-14
EP3975428A2 (en) 2022-03-30
JP2022054419A (ja) 2022-04-06
EP3975428A3 (en) 2022-06-15
US11960734B2 (en) 2024-04-16

Similar Documents

Publication Publication Date Title
US6483342B2 (en) Multi-master multi-slave system bus in a field programmable gate array (FPGA)
Huebner et al. Real-time LUT-based network topologies for dynamic and partial FPGA self-reconfiguration
EP2923279B1 (en) Processing system with interspersed processors; dma-fifo
US7446561B2 (en) I/O circuitry shared between processor and programmable logic portions of an integrated circuit
US10210914B2 (en) Programmable logic accelerator in system on chip
CN112703491A (zh) 片上网络(noc)的部分重新配置
US8788756B2 (en) Circuit for and method of enabling the transfer of data by an integrated circuit
US7268581B1 (en) FPGA with time-multiplexed interconnect
CN114254577A (zh) 基于带有具有扫描寄存器的数据寄存器的微扇区基础架构的逻辑结构
US7730244B1 (en) Translation of commands in an interconnection of an embedded processor block core in an integrated circuit
JP2008537268A (ja) 可変精度相互接続を具えたデータ処理エレメントの配列
CN110825691A (zh) 可编程逻辑设备的管芯间通信
GB2466821A (en) An FPGA with an embedded bus and dedicated bus interface circuits
KR20200121301A (ko) 시스템-온-칩에 대한 메모리 서브시스템
EP3975427A2 (en) Logic fabric based on microsector infrastructure
US20040243384A1 (en) Complete graph interconnect structure for the hardware emulator
US8185720B1 (en) Processor block ASIC core for embedding in an integrated circuit
US10680615B1 (en) Circuit for and method of configuring and partially reconfiguring function blocks of an integrated circuit device
US7830172B1 (en) Accessing user registers in an integrated circuit
US20220196735A1 (en) Debug trace microsectors
EP4020246A1 (en) Micro-network-on-chip and microsector infrastructure
Hamre Framework for self reconfigurable system on a Xilinx FPGA.

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