CN114253505A - 具有预见的性能增强器的先进先出缓冲器 - Google Patents

具有预见的性能增强器的先进先出缓冲器 Download PDF

Info

Publication number
CN114253505A
CN114253505A CN202110961169.3A CN202110961169A CN114253505A CN 114253505 A CN114253505 A CN 114253505A CN 202110961169 A CN202110961169 A CN 202110961169A CN 114253505 A CN114253505 A CN 114253505A
Authority
CN
China
Prior art keywords
data
fifo
signal
packet
memory
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
CN202110961169.3A
Other languages
English (en)
Inventor
K·Y·富
S·Y·李
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 CN114253505A publication Critical patent/CN114253505A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0215Addressing or allocation; Relocation with look ahead addressing means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/08Clock generators with changeable or programmable clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/251Local memory within processor subsystem
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Communication Control (AREA)

Abstract

本发明涉及一种具有预见的性能增强器的先进先出缓冲器。当在存储和转发模式下操作时,FIFO可以使用预见电路通过减少FIFO操作周期来提高性能并减少数据传输延迟。预见电路可以增加使用不同时钟频率的两个集成电路设备之间的FIFO的数据传输速率。FIFO与预见电路的一起使用还可以降低FIFO的功耗,允许FIFO的存储介质更小,并为其它电路释放宝贵的管芯空间。

Description

具有预见的性能增强器的先进先出缓冲器
相关申请的交叉引用
本申请要求于2020年9月21日提交的题为“First-In First-Out Buffer withLookahead Performance Booster”的美国临时申请No.63/081,134的优先权,出于所有目的将其全文以引用方式并入本文。
技术领域
本公开总体上涉及先进先出缓冲器(FIFO),其可以有效地交叉转发数据同时避免时钟交叉错误。
背景技术
本部分旨在向读取者介绍可能与本公开的各个方面相关的技术的各个方面,这些方面在下面进行描述和/或要求保护。该讨论被认为有助于为读者提供背景信息以促进更好地理解本公开的各个方面。因此,可以理解的是,这些陈述将在此情况下阅读,而不是作为对现有技术的承认。
在许多电子设备中发现了集成电路设备。虽然以不同的时钟频率运行,但不同的集成电路设备越来越多地相互通信。当一个集成电路设备以比另一集成电路设备更高的时钟频率操作时,为了相互传输信息,可以使用称为先进先出缓冲器(FIFO)的电路。FIFO允许第一集成电路设备基于其时钟频率以第一速率将数据写入存储器设备,并且允许第二集成电路设备基于其时钟频率以第二速率从存储器设备读取出数据。
当第一集成电路设备的时钟频率比第二集成电路设备的时钟频率慢时,FIFO可以禁止在写入新数据的同时允许第二集成电路设备读取数据。例如,在第一和第二集成电路设备之间发送的数据可以被分组化—即,数据可以在群组(称为分组)中被传输和读取。针对FIFO的存储和转发模式操作可以允许第二集成电路设备仅在自第一集成电路设备写入数据以来经过最坏情况阈值时间量之后从FIFO的存储器读取,以确保整个分组已被写入FIFO的存储器。对于两个集成电路设备,大的时钟差异可能导致相当大的延迟。此外,FIFO可能包含大量存储器,占用宝贵的集成电路管芯空间。
附图说明
通过阅读取以下详细说明并参考附图,本发明的优点将变得显而易见,其中:
图1示出了根据实施例的包括FIFO的系统的框图,该FIFO可以执行预见操作以促进FPGA和集成电路之间的增强的数据通信;
图2描绘了根据实施例的可以包括具有预见电路的FIFO的数据处理系统;
图3描绘了根据实施例的具有可以以提高的性能传输数据的预见电路的FIFO的框图;
图4描绘了根据第一实施例和第二实施例的示出在图3的FIFO的操作周期期间输入数据和输出数据之间的关系的第一和第二表;
图5描绘了示出在存储和转发模式下操作而不执行预见操作的FIFO使长分组交叉的数据信号的数据图;
图6描绘了示出在执行预见操作和在存储和转发模式下操作时FIFO使长分组交叉的数据信号的数据图;
图7描绘了示出在存储和转发模式下操作而不执行预见操作的FIFO使短分组交叉的数据信号的数据图;以及
图8描绘了示出在执行预见操作和在存储和转发模式下操作时FIFO使短分组交叉的数据信号的数据图。
具体实施方式
下面将描述一个或多个具体实施例。为了提供这些实施例的简明描述,在说明书中并未描述实际实现的所有特征。应该意识到,在任何这种实际实现的开发中,就像在任何工程或设计项目中一样,必须做出许多特定于实现的决策来实现开发人员的特定目标,例如遵守与系统相关和与业务相关的约束,这可能因实现方式而异。此外,应当意识到,这样的开发工作可能是复杂和耗时的,但是对于受益于本公开的普通技术人员而言,它仍然是设计、装配和制造的例行工作。
当介绍本公开的各种实施例的元素时,冠词“一(a)”、“一(an)”和“该(the)”旨在表示存在一个或多个元素。术语“包括”和“具有”旨在是包含性的且表示除了所列元素之外可能还有其它元素。此外,应当理解,对本公开的“一些实施例”、“实施例”、“一个实施例”或“实施例”的引用并不旨在被解释为排除也并入所引用的特征的附加实施例的存在。此外,短语A“基于”B旨在表示A至少部分地基于B。此外,术语“或”旨在是包含性的(例如,逻辑OR)而不是排他性的(例如,逻辑XOR)。换句话说,短语A“或”B旨在表示A、B或A和B二者。
集成电路设备,例如专用集成电路(ASIC)或可编程逻辑设备(PLD),如现场可编程门阵列(FPGA),可以是与各种其它电子设备通信的电子设备的一部分。虽然以不同的时钟频率运行,但不同的集成电路设备越来越多地相互通信。例如,通信地耦合到第二集成设备的第一集成电路设备可以在比第二集成电路设备更低的时钟频率操作。
第一集成电路可以经由先进先出缓冲器(FIFO)向第二集成电路传送信息。FIFO允许第一集成电路设备以第一速率将数据写入FIFO的存储器,并允许第二集成电路设备以第二速率从存储器读取数据。第一速率可以基于与第一集成电路相关联的第一时钟频率,并且第二速率可以基于与第二集成电路相关联的第二时钟频率。此外,第一和第二集成电路设备可以以分组化的形式传输数据,也就是说,数据可以以被称为分组的群组的形式被写入到存储器中并且从存储器中读取。在每个分组中被分组在一起的数据位(或数据字节)的数量可以指示分组大小。
FIFO可以在FIFO操作周期期间执行FIFO操作以在第一集成电路和第二集成电路之间传输数据。例如,在每个FIFO操作周期中,第一集成电路设备可以使用比第二时钟频率慢的第一时钟频率向存储器写入分组。此外,FIFO可以防止第二集成电路设备在新数据被写入存储器时读取数据。
FIFO可以在存储和转发模式下操作以传输分组。当使用存储和转发模式时,FIFO可以允许第二设备仅在与在每个FIFO操作周期中接收到完整分组相关联的时间段之后从FIFO的存储器进行读取。也就是说,FIFO可以在允许传输(例如,时钟输出)数据之前接收并存储(例如,时钟输入)完整的数据分组。例如,阈值时间量可以包括用附加缓冲时间完全接收分组的足够时间,以确保整个分组已被写入FIFO的存储器。这样,当在两个集成电路设备之间传输数据时,在第一时钟频率和第二时钟频率之间的大时钟频率差异和大分组尺寸可能导致相当大的延迟。此外,FIFO可能需要大量存储器,占用集成电路设备上宝贵的管芯空间。
在本公开中,当在存储和转发模式下操作时,FIFO可以使用预见电路通过减少FIFO操作周期来提高性能并减少数据传输延迟。实际上,预见电路可以增加在使用不同时钟频率的两个集成电路设备之间的FIFO的数据传输速率。如将意识到的,FIFO与预见电路的一起使用还可以降低FIFO的功耗,允许FIFO的存储介质更小,并且为其它电路释放宝贵的管芯空间。此外,应当意识到,本文描述的电路和技术是作为示例,并且在不同的实施例中,可以使用不同的电路与使用具有相应FIFO的预见电路相关联地执行操作。
考虑到上述情况,图1示出了可以实现FIFO 22的系统20的框图。图1的系统20可以包括集成电路24和集成电路26。FIFO 22包括预见电路。在特定实施例中,集成电路24可以包括现场可编程门阵列。此外,集成电路26可实现硬化收发器协议,例如不同代的以太网、外围组件互连快速(PCIe)、计算快速链路(CXL)、高速串行接口(HSST)、硬知识产权(IP)核心,例如高带宽存储器(HBM)、超路径互连(UPI),以及其他事物。
系统20还可以包括桥互连电路28,例如高级接口总线(AIB),以及收发器(XCVR)30,包括FIFO 22,用于促进集成电路24和集成电路26之间的数据通信。在所描绘的实施例中,集成电路24可以经由桥互连电路28和收发器30向集成电路26传输数据。
应当意识到,在不同的实施例中,系统20的每个描绘的组件可以以不同的布置来实现。例如,在一些实施例中,收发器30可以由集成电路24、集成电路26或图1中未示出的其它集成电路来实现。在其它实施例中,收发器30可以实现为桥互连电路28和集成电路24或集成电路26之间的单独组件,或者可以集成到桥互连电路28中。
在不同的实施例中,集成电路24和集成电路26可以根据不同的时钟频率进行操作。在一个实施例中,集成电路24可以根据时钟频率(例如,在400兆赫(MHz)到500MHz之间)操作。也就是说,集成电路24的时钟频率可以是预定的或可编程的以使用400MHz到500MHz之间的时钟频率。此外,集成电路26可以根据更高的时钟频率(例如,600MHz、800MHz、1吉赫(GHz)、2GHz)操作。因此,如果没有补偿,则集成电路26可以为集成电路24的时钟输出的每4个数据位时钟输入10个数据位。此外,应当意识到,在其它实施例中,集成电路24和集成电路电路26可以使用不同的时钟频率。例如,集成电路24可以根据比集成电路26更高的时钟频率操作。
也就是说,FIFO 22可以通过补偿在发送设备(集成电路24)的时钟频率和接收设备(集成电路26)的时钟频率之间的差异来使得在集成电路24和集成电路26之间的通信数据交叉。FIFO 22可以根据存储和转发模式操作。此外,FIFO 22可以包括预见电路,用于在根据存储和转发模式操作时使用减少的FIFO操作周期来预见且连续地传输数据。虽然集成电路24通过示例被示为可以与FIFO 22一起使用的集成电路,但是应当理解,具有失配时钟的任何合适的集成电路都可以采用FIFO 22并受益于FIFO 22。
在一个实施例中,FIFO可以包含于数据处理系统40中。例如,图2的集成系统24可以包括FIFO。数据处理系统40可以包括主机处理器42(例如,中央处理单元(CPU))、存储器和/或存储电路44以及网络接口46。数据处理系统40可以包括更多或更少的组件(例如,电子显示器、用户界面结构、专用集成电路(ASIC))。
主机处理器42可以包括任何合适的处理器,例如
Figure BDA0003222376160000051
处理器或精简指令处理器(例如,精简指令集计算机(RISC)、高级RISC机器(ARM)处理器),其可以管理针对数据处理系统40的数据处理请求(例如,以执行加密、解密、机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排名、生物信息学、网络安全模式识别、空间导航、使用相控阵列进行传感或传输、经由MIMO无线系统通信等)。
存储器和/或存储电路44可以包括随机存取存储器(RAM)、只读取存储器(ROM)、一个或多个硬盘驱动器、闪存等。存储器和/或存储电路44可以保存待由数据处理系统40处理的数据。在一些情况下,存储器和/或存储电路44还可以存储用于对可编程逻辑设备进行编程的配置程序(比特流),该可编程逻辑设备可以包括FIFO。存储器和/或存储电路44可以另外或替代地存储用于对FIFO进行编程的指令。网络接口46可以允许数据处理系统40与其它电子设备通信。数据处理系统40可以包括若干不同的封装,或者可以包含在单个封装衬底上的单个封装内。
在一个示例中,数据处理系统40可以是处理各种不同请求的数据中心的一部分。例如,数据处理系统40可以经由网络接口46接收数据处理请求,以执行加密、解密、机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排名、生物信息学、网络安全模式识别、空间导航、数字信号处理或一些其它专门任务。数据处理系统40的一些或所有组件可以是在物理电路上运行的虚拟机组件(例如,由一个或多个管理程序或虚拟机管理器管理)。无论是物理组件还是虚拟机组件,数据处理系统40的各种组件可以位于相同位置或不同位置(例如,在不同的板上、在不同的房间、在不同的地理位置)。实际上,数据处理系统40可以经由计算服务提供商(CSP)访问,该CSP可以向客户提供接口以在云计算环境中使用数据处理系统40(例如,以运行程序和/或执行加速任务)。
具有预见性能增强器的FIFO的高级架构
图3描绘了具有预见电路62的FIFO 60的高级框图。FIFO 60可以是系统的一部分,所述系统例如图2的系统20。在一些实施例中,FIFO 60可以对应于图1的FIFO 22。在所描绘的框图中,FIFO 60可以在发送设备和接收设备之间传输基于分组的数据。例如,发送设备可以是集成电路24,并且接收设备可以是图1的集成电路26。FIFO 60可以接收与每个分组相关联的传输数据,并且将接收到的数据存储在FIFO 60的存储器64上。FIFO 60可以在被称为数据条目66的分段部分中将接收到的数据存储在存储器64中。例如,每个数据条目可能包括128个数据字节。取决于分组的大小,可以使用不同数量的数据条目66来存储分组。此外,FIFO 60可以使用存储和转发模式来传输所存储的数据。
发送设备和接收设备可以根据不同的时钟频率进行操作。如将意识到的,FIFO 60可以通过补偿在发送设备的时钟频率和接收设备的时钟频率之间的差异,使用预见电路62在存储和转发模式中连续地传输数据。FIFO 60可以使用预见电路62以在接收到完整分组之前或正在接收完整分组时基于接收到阈值数量的数据条目来预见并连续发送所存储的数据。
在不同的实施例中,完整的分组可以包括不同数量的数据位。因此,在不同的实施例中,分组可以包括不同的分组尺寸。例如,分组可以包括数据结构,该数据结构包括分组开始(SOP)70指示符、数据有效载荷72和分组结束(EOP)74指示符。在其它实施例中,分组可以包括不同的数据结构。
FIFO 60可以向发送设备提供就绪信号76以指示FIFO操作周期的完成或后续FIFO操作周期的开始。发送设备可以在接收到就绪信号76之后开始发送数据。FIFO 60的入口78可以接收发送的数据。在一个实施例中,FIFO 60可以基于接收写入使能信号80来开始接收发送的数据。在一个实施例中,预见电路62可以包括写入使能生成逻辑82,用于基于监视和检测到分组的SOP 70和EOP 74来生成写入使能信号80。例如,写入使能生成逻辑82可以在检测到SOP 70时提供写入使能信号80,并且在检测到EOP 74或没有检测到输入数据时可以移除写入使能信号80。在不同的实施例中,写入使能生成逻辑82可以是发送设备、FIFO 60或其它电路的一部分。
在不同的实施例中,入口78可以包括一个或多个数据总线以接收数据。FIFO 60然后可以以数据条目形式存储接收到的数据。FIFO 60可以使用从发送设备接收到的写入时钟信号84来对数据进行时钟输入(即,接收和存储)。也就是说,FIFO 60可以以写入时钟信号84所指示的速度存储接收到的数据。
考虑到前述内容,FIFO 60可以使用从接收设备接收到的读取时钟信号86来对接收到的数据进行时钟输出(即,允许传输)。在不同的实施例中,出口88还可包括一个或多个数据总线以传输数据。这样,FIFO 60可以允许以被接收和存储的原始形式传输每个分组。也就是说,输出数据可以包括SOP 70、数据有效载荷72和EOP 74。此外,接收写入时钟信号84和读取时钟信号86可允许FIFO 60根据完全同步或异步数据传输模式进行操作。
在每个FIFO操作周期中,FIFO 60可以使用预见电路62以基于检测到存储器64中的阈值数量的数据条目的存储或完整分组在存储器64上的存储来对数据进行时钟输出,以减少各自的FIFO操作周期。在一个实施例中,FIFO 60可以在相应的FIFO操作周期中检测到EOP 74之前对阈值数量的数据条目进行时钟输入。也就是说,FIFO 60可以开始对所存储的数据进行时钟输出,同时时钟输入相应分组的其余数据。因此,可以减少每个相应的FIFO操作周期的持续时间。
在另一个实施例中,FIFO 60可以在相应的FIFO操作周期中接收到阈值数量的数据条目之前对完整的分组进行时钟输入。在该实施例中,FIFO 60可以基于接收到EOP 74来开始对整个分组进行时钟输出。这样,可以基于在接收到EOP 74之后对存储的数据进行时钟输出来减少每个FIFO操作周期的持续时间,这可以消除在接收完整分组后不必要的缓冲时间,以保证接收完整分组。
此外,在每个FIFO操作周期中,FIFO 60可以基于接收到读取使能信号90来开始对所存储的数据进行时钟输出。例如,预见电路62可以包括用于跟踪在存储器64上的多个存储的数据条目66并在每个FIFO操作周期中检测相应的EOP 74的电路。预见电路62可以基于监视和检测存储器64中阈值数量的数据条目的存储或者基于监视和检测EOP 74来向FIFO60提供读取使能信号90,如将意识到的。
预见电路62还可以包括预见数据空闲检测电路92,用于在每次接收到新分组并将其存储在存储器64上时,跟踪关于数据条目66的读取指针的位置中的跳转。预见数据空闲检测电路92可以接收来自FIFO 60的预见数据94和来自接收设备的背压信号96。
在一个实施例中,预见数据94可以提供SOP 70和EOP 74在数据条目66上的当前存储位置,并且可以指示在存储器上是否存在空闲数据(例如,空数据)。基于预见数据94,预见数据空闲检测电路92可以输出指针跳转信号98,其指示输入分组的SOP 70和EOP 74的存储位置的跳转。随后,FIFO 60可以使用指针跳转信号98来重新排列SOP 70、数据有效载荷72和EOP 74在数据条目66上的存储位置,以允许当使用预见电路62时将存储的分组正确且不间断地传输到接收设备。
接收设备可向预见电路62提供背压信号96。在所描绘的实施例中,预见数据空闲检测电路92可接收背压信号96。例如,背压信号96可指示接收设备的存储器已满,或者以其他方式指示接收设备将无法接收额外的数据。此外,预见电路62可以基于背压信号96的状态来去除读取使能信号90以使FIFO 60空闲,如下文将讨论的。当FIFO 60空闲时,FIFO 60可以停止接收新数据,阻止将存储的数据传输到接收设备,或者这两者。因此,预见数据空闲检测电路92可以停止跟踪读取指针位置。
考虑到前述内容,FIFO 60可以向与预见电路62相关联的解码逻辑电路102提供FIFO间隙信号100。FIFO间隙信号100可以指示指针间隙值,该指针间隙值指示关于存储器64的数据条目66的存储器64的读取指针位置和写入指针位置之间的距离。FIFO 60可以在接收到指针跳转信号98并且重新排列数据条目66上的分组存储位置之后提供FIFO间隙信号100。此外,如将意识到的,FIFO 60可以基于在发送设备的时钟频率和接收设备的时钟频率之间的差异来提供指针间隙值。
在每个FIFO操作周期期间,解码逻辑电路102可以检测(或接收)每个分组的相应SOP 70并接收FIFO间隙信号100,以确定存储在存储器64上的数据条目的数量。例如,解码逻辑电路102可以在检测(或接收)SOP 70之后对存储的数据条目66的数量进行计数。随后,解码逻辑电路102可以向比较器电路108提供输出信号104,输出信号104指示在每个FIFO操作周期中存储的数据条目66的数量。
与解码逻辑的操作并行,预见电路62可以向比较器电路108提供读取使能阈值信号110。读取使能阈值信号110可以指示在对存储数据进行时钟输出之前由FIFO 60可以接收并且存储在存储器64上的数据条目的阈值数量。也就是说,读取使能阈值信号110可以在预定读取使能阈值信号112和可编程读取使能阈值信号114之间选择。预定读取使能阈值信号112可以指示预定读取使能阈值值。此外,可编程读取使能阈值信号114可以指示计算出的读取使能阈值值,并且可以不同于预定读取使能阈值值。
预定读取使能阈值信号112和可编程读取使能阈值信号114每一个均可以基于分组的大小、发送设备的时钟频率和接收设备的时钟电路来指示数据条目的阈值数量。预定读取使能阈值信号112可以基于在发送设备的时钟频率和接收设备的时钟频率之间的最大可能时钟频率差来预定。
这样,预定读取使能阈值信号112可以指示在发送设备的时钟频率和接收设备的时钟频率之间的最坏情况时钟频率差。因此,预定读取使能阈值信号112可以基于发送设备的最低时钟频率(例如,最小时钟频率)来预定。例如,如关于图1所描述的,图1的集成电路24可以使用400MHz的时钟频率来传输数据。此外,图1的集成电路26可以使用1GHz的时钟频率对来自FIFO 60的存储的数据进行时钟输入。
预见电路62可以基于检测到与最坏情况时钟频率差相比在发送设备的时钟频率和接收设备的时钟频率之间的较小的时钟频率差来确定可编程读取使能阈值信号114。当写入时钟信号84高于发送设备的最低时钟频率时,通过减小每个FIFO操作周期的持续时间,预见电路62可以使用可编程读取使能阈值信号114来微调和增强FIFO 60的性能。例如,在一些实施例中,集成电路24可以使用500MHz而不是400MHz的时钟频率,如关于图1所描述的。
此外,预见电路62可以使用复用器(MUX)118来将读取使能阈值信号110输出到比较器电路108。MUX 118可以接收预定读取使能阈值信号112、可编程读取使能阈值信号114以及可编程读取使能覆盖信号116。此外,MUX 118可以使用可编程读取使能覆盖信号116以在预定读取使能阈值信号112和可编程读取使能阈值信号114之间进行选择。在不同的实施例中,发送设备、接收设备、预见电路62或其它电路可以确定预定读取使能阈值信号112、可编程读取使能阈值信号114以及可编程读取使能覆盖信号116。
考虑到上述情况,比较器电路108可以比较解码逻辑电路102的输出信号104和读取使能阈值信号110,以确定阈值数量的数据条目是否存储在存储器64上。在每个FIFO操作周期中,当解码逻辑电路102的输出信号104指示与读取使能阈值信号110相比相等或更多数量的存储数据条目66时,比较器电路108可以输出阈值真信号120。因此,阈值真信号120指示FIFO 60包括存储在存储器64上的数据条目的阈值数量。此外,预见电路62可以响应于比较器电路108输出阈值真信号120而提供读取使能信号90。
如上所述,在每个FIFO操作周期中,FIFO 60可以基于接收到读取使能信号90,在接收相应分组的剩余部分的同时开始对所存储的数据进行时钟输出。在所描绘的实施例中,预见电路62可以使用OR逻辑门122以基于接收阈值真信号120或接收EOP 74来提供读取使能信号90。因此,FIFO 60可以在接收和存储完整分组之前对所存储的数据进行时钟输出,或在接收并存储完整分组之后对完整分组进行时钟输出。此外,预见电路62可以包括用于提供读取使能信号90的其它逻辑电路,如下所述。此外,应当意识到,在不同的实施例中,预见电路62可以包括用于提供读取使能信号90的不同电路。
在不同的实施例中,FIFO 60可以传输短分组或长分组。短分组和长分组可以基于数据条目66的大小以及在发送设备的时钟频率和接收设备的时钟频率之间的时钟频率差来定义。具体地,FIFO 60可以使用比数据条目的阈值数量更少的数据条目66来存储短分组。因此,当传输短分组时,FIFO 60可基于在相应FIFO操作周期中对每个短分组(检测每个短分组的相应EOP 74)进行完全时钟输入而从预见电路62接收读取使能信号90。因此,FIFO60可以开始对所存储的短分组进行时钟输出。
相比之下,当在相应的FIFO操作周期中传输相应的长分组时,FIFO 60可以在长分组完全存储在存储器64上之前开始对相应的长分组进行时钟输出,并且同时对相应的长分组的剩余部分进行时钟输入。如上所述,基于确定阈值数量的数据条目被接收并存储在存储器64上,预见电路62可以在每个相应的FIFO操作周期中提供读取使能信号90。
这样,当在存储和转发模式下操作时,预见电路62可以通过基于监视和检测阈值数量的数据条目存储在FIFO 60的存储器64上并基于监视和检测EOP 74来减少每个FIFO操作周期。FIFO 60可以在根据存储和转发模式操作时使用减少的交叉时间来接收长分组的剩余的部分的同时,对相应存储的短分组进行时钟输出或开始对长分组进行时钟输出。FIFO 60可以在不考虑用于接收完整分组的足够时间或额外缓冲时间的情况下操作以确保完整分组已被写入FIFO 60的存储器64。
如上所述,FIFO 60可以基于从接收设备接收到背压信号96而变得空闲。当接收到背压信号时,预见电路62可以去除就绪信号76以停止FIFO 60从发送设备接收输入数据并防止将数据条目66发送到接收设备。
在所描绘的实施例中,预见电路62可以使用AND逻辑门126以基于接收到OR逻辑门122的输出信号124和低背压信号来提供读取使能信号90。例如,在接收设备的正常操作期间,背压信号可能是低的。预见电路62可以包括反相逻辑门128,用于在接收设备的正常操作期间连同OR逻辑门122的输出信号124一起向AND逻辑门126提供高背压信号96。这样,当接收设备没有背压时,AND逻辑门126可以基于OR逻辑门122的输出来输出读取使能信号90。然而,当背压信号为高时,预见电路62的反相逻辑门128和AND逻辑门126可以去除读取使能信号90。此外,预见数据空闲检测电路92还可接收背压信号。预见数据空闲检测电路92可以基于接收到背压信号而中断跟踪读取指针位置。
在一个实施例中,FIFO 60可以使用PCIe存储和转发模式以将存储的数据时钟输出到硬化PCIe协议。在不同的实施例中,FIFO 60可以将数据传输到其它合适的协议,例如以太网、CXL、HBM等。例如,数据从FPGA通过Intel AIB接口被交叉到PCIe链路伙伴,如图1所示。也就是说,可以使用任何其它合适的集成电路和接口总线。硬化PCIe协议的性能可以基于数据传输延迟和时间段内接收到的分组的数量来测量。在每个PCIe存储和转发模式操作中,预见电路62可以使用读取使能信号90或EOP 74来减少每个FIFO操作周期并提高系统的性能。也就是说,FIFO 60可以使用预见电路62来实现从存储介质更快地进行数据传输,而不管接收到短分组还是长分组,由此提高系统中的硬化PCIe协议性能。事实上,使用图3的具有PCIe存储和转发模式的FIFO 60可以提高在存储和转发模式系统中的PCIe性能,减少系统延迟,并允许FIFO 60的存储介质更小,从而降低总功耗并释放宝贵的管芯空间。
图4描绘了关于图3的FIFO 60的第一实施例和第二实施例的FIFO操作周期140。具体来说,图4描绘了相对于图3的FIFO 60的第一实施例和第二实施例在FIFO操作周期140期间相对于累积数量的读取数据字节的累积数量的存储数据字节。在所描绘的第一和第二实施例中,第一表142和第二表144可以示出相对于第一表146的分段时间窗口和第二表148的分段时间窗口,在发送设备和接收设备之间FIFO 60传送具有相同大小的分组。第一和第二实施例的相应分组可以是长分组。也就是说,在第一和第二实施例中,FIFO 60可以在检测到相应分组的EOP之前开始对分组的存储数据进行时钟输出。然而,在第一实施例中,FIFO60基于检测到在对存储数据进行时钟输出之前存储在存储器64上的第一阈值数量的数据条目150进行操作,而在第二实施例中,FIFO 60基于检测到在对存储数据进行时钟输出之前存储在存储器64上的第二阈值数量的数据条目152进行操作,其中数据条目152的第二阈值数量不同于数据条目150的第一阈值数量。
第一表154的第一行可以示出第一累积写入数据字节156。第一累积写入数据字节156可以指示关于分段时间窗口的每个相应时间窗口被时钟输入到FIFO 60的存储的数据字节的累积数量。此外,第一表158的第二行可以示出第一累积读取数据字节160。第一累积读取数据字节160可以指示相对于每一分段时钟窗口被时钟输出到接收设备的读取数据字节的累积数量。
类似地,第二表162的第一行可以示出第二累积写入数据字节164。第二累积写入数据字节164指示相对于分段时间窗口的每个相应时间窗口被时钟输入到FIFO 60的存储数据字节的累积数量。此外,第二表166的第二行可以示出第二累积读取数据字节168。第二累积读取数据字节168可以指示相对于每个分段时间窗口被时钟输出到接收设备的读取数据字节的累积数量。
第一表142的每一列170可对应于第一表146的分段时间窗口的相应时间窗口。此外,第一表142的每一列170可以示出相对于第一表142的相应时间窗口中第一累积读取数据字节160的第一累积写入数据字节156。此外,第二表144的每一列172可以对应于第二表148的分段时间窗口的相应时间窗口。此外,第二表144的每列172可以示出相对于第二表144的相应时间窗口中第二累积读取数据字节的第二累积168写入数据字节164。
如以上关于图3所讨论的,当使用具有与用于计算预定读取使能阈值信号112的值的最小时钟频率相比更高频率的写入时钟信号(例如图3的写入时钟信号84)时,数据条目的阈值数量可以更小。例如,可以基于400MHz的最小时钟频率来计算预定读取使能阈值信号112。然而,当写入时钟信号以500MHz运行时,可编程读取使能阈值信号114可被计算以针对图3的读取使能阈值信号110提供较小阈值数量的数据条目。这样,与FIFO 60相关联的预见电路62可以使用可编程读取使能阈值信号114来减少FIFO操作周期140的持续时间并提高系统性能。
然而,当在FIFO存储和转发模式情况下使用预见电路62(如关于图3所述)时,使用不正确的阈值数量的数据条目可能导致功能错误。正确计算数据条目的阈值数量可以防止FIFO 60以比对数据字节进行时钟输入更快或相等的速率来对存储的数据字节进行时钟输出。也就是说,在FIFO操作周期140中,正确计算数据条目的阈值数量可以允许在FIFO 60的入口处对分组进行完全时钟输入之后的一个或多个时钟周期终止在FIFO 60(或图1的FIFO22)的出口处传输相应分组。
返回参考图4,第一表142和第二表144可以传输PCIe协议分组。PCIe协议分组可以包括16字节的报头信息和512字节的数据有效载荷。也就是说,PCIe协议分组可以包括4224个数据字节。此外,写入时钟信号可以在400MHz频率下运行,而读取时钟信号可以在1GHz频率下运行。这样,FIFO 60可以在第一表146的分段时间窗口和第二表148的分段时间窗口的每个相应时间窗口期间对256个数据字节时钟输出。例如,写入时钟信号可以与图1的集成电路24相关联,并且读取时钟信号可以与图1的集成电路26相关联。
基于写入时钟信号和读取时钟信号的相应频率,每10个读取时钟信号可以对应4个写入时钟信号。因此,如果不进行补偿,每10个读取时钟信号可以对应于至少6个无效数据位。返回参考图4,在第一实施例和第二实施例中,在对不同阈值数量的数据条目进行时钟输入之后,FIFO 60可以对所存储的数据条目进行时钟输出。第一阈值数量的数据条目150可以是13个数据条目,并且第二阈值数量的数据条目152可以是12个数据条目。每个数据条目可以包括128个数据字节。
基于在第一实施例中使用第一阈值数量的数据条目150或在第二实施例中使用第二阈值数量的数据条目152,FIFO 60可以尝试在对完整分组进行时钟输入之前或之后对相应分组的EOP进行时钟输出。在对完整分组进行时钟输入之前或之后对相应分组的EOP进行时钟输出还取决于系统使用的4224个数据字节的分组大小、400MHz的写入时钟信号频率和1GHz的读取时钟信号频率。
考虑到这一点,在第一表142中,FIFO 60可以在存储相应分组的13个数据条目(1664个数据字节)之后在第一时间窗口174处开始对所存储的数据进行时钟输出,同时对分组数据的剩余部分进行时钟输入。这样,在第一实施例中,FIFO 60可以在第二时间窗口176结束对数据进行时钟输入,并且可以在比第二时间窗口176更晚的时间在第三时间窗口178完成对所存储的数据进行时钟输出。因此,FIFO 60可以使用第一阈值数量的数据条目150(13个数据条目或1664个数据字节)成功地传输相应的分组。
此外,在第二表144中,FIFO 60可以在存储相应分组的12个数据条目(1536个数据字节)之后在第四时间窗口180处开始对所存储的数据进行时钟输出,同时对数据的其余部分进行时钟输入。然而,在第二实施例中,FIFO 60可以在第五时间窗口182处同时结束对数据进行时钟输入和对所存储的数据进行时钟输出。也就是说,当使用第二阈值数量的数据条目152时,FIFO 60可以尝试以与存储数据等价或更快的速率对所存储的数据进行时钟输出,这是因为较早开始对所存储的数据进行时钟输出(当仅1536个数据字节存储在存储器64上时)。基于写入时钟信号频率、读取时钟信号频率和分组大小,最小可能阈值数量的数据条目可以是13个数据条目,以用于提高性能并减少在存储和转发模式下FIFO 60的数据传输延迟。
图5-8描绘了示出了在不同的实施例中在具有和不具有预见电路(图3的预见电路62)的情况下在存储和转发模式下操作的FIFO的输入数据和输出数据的数据图,该预见电路用于传输(例如,交叉)长分组和短分组。在图5-8中,相应FIFO可以使用400MHz的写入时钟信号频率和1GHz的读取时钟信号频率来传送分组。
现在参考图5,数据图200可以示出当在存储和转发模式下操作以传输具有512个数据字节的长分组时使数据交叉的FIFO 202(未示出)的数据信号。与图5的数据图200相关联的FIFO 202可能不执行预见操作或包括预见电路。当FIFO 60不包括或不使用预见电路62时,FIFO 202的所描绘的信号可以关于上面关于图3所描述的信号来描述。例如,数据图200可以示出在EOP 74、写入使能信号80、正在写入的数据有效载荷72、读取使能信号90、正被读取的数据有效载荷72以及FIFO 202的核心时钟信号204之间的关系。仅在从对数据有效载荷72进行时钟输入开始以来最坏情况阈值时间量206之后,FIFO 202才允许传输来自FIFO 202的存储器的所存储的数据(数据有效载荷72)。在所描绘的示例中,最坏情况阈值时间量206对应于核心时钟信号204的37个时钟周期。最坏情况阈值时间量可以确保整个分组已被写入FIFO的存储器。
现在参考图6,数据图220可以示出在存储和转发模式下运行以使用预见操作传送具有256个数据字节的长分组时使数据交叉的图3的FIFO 60的数据信号。数据图220可示出在与SOP 70一起的写入使能信号80、数据有效载荷72和在入口78处写入FIFO 60的EOP 74之间的关系。此外,数据图220还可描绘相对于读取使能信号90、阈值真信号120、FIFO间隙信号100和与FIFO 60相关联的核心时钟信号204在出口88处从FIFO 60读取的数据有效载荷72、SOP 70和EOP 74。
在所描绘的实施例中,FIFO 60可以基于监视和检测存储器64中阈值数量的数据条目的存储来开始对所存储的数据进行时钟输出。在所描绘的实施例中,阈值数量的数据条目是22个数据条目(十六进制的16)。FIFO 60可以基于检测到阈值真信号120来开始对SOP 70进行时钟输出。例如,比较器(例如,比较器电路108)可以在FIFO间隙信号100变得等于或大于阈值数量的条目时示出阈值真信号120。
因此,在使用预见操作传输具有256个数据字节的长分组的FIFO 60的所描绘的实施例中,FIFO可以在对分组的22个数据条目进行时钟输入之后开始对分组进行时钟输出,以及时对所存储的数据进行时钟输出。阈值数量的数据条目可以基于预定读取使能阈值信号112或可编程读取使能阈值信号114。如图所示,可以在检测到阈值数量的所存储数据条目之后触发读取使能信号90。这样,FIFO 60在接收到写入使能信号80之后的9个时钟周期传输所存储的数据。
代替图6所示的具有256个数据字节的长分组,当FIFO 60通过执行预见操作来传输与图5的长分组类似的包括512个数据字节的长分组时,FIFO可以在接收到写入使能信号80之后开始对分组18时钟信号进行时钟输出。也就是说,对于类似的写入时钟信号84、读取时钟信号86和分组大小,当在存储和转发模式下执行预见操作时,总FIFO延迟可以减少>50%。
现在参考图7,数据图240可以示出当在存储和转发模式下操作以传输具有139个数据字节的短分组时交叉数据的FIFO 202(未示出)的数据信号。FIFO 202可以仅在检测到分组的EOP 74之后的最坏情况阈值时间量244之后才允许传输来自FIFO 202的存储器的所存储的数据(数据有效载荷72)。在所描绘的示例中,最坏情况阈值时间量244对应于核心时钟信号204的6个时钟周期。最坏情况阈值时间量可确保整个分组在对分组进行时钟输出之前已被写入FIFO的存储器。
在图8中,FIFO 60可用于在存储和转发模式中以与图7的实施例相同的具有139个数据字节的短分组来执行预见操作。FIFO 60可以在检测到分组的EOP 74之后仅2个时钟周期开始对分组进行时钟输出。这可以消除针对等待阈值时间量的需求以确保将分组存储在存储器64上。这是因为预见电路62可以基于检测到EOP 74来触发读取使能信号90,该读取使能信号90指示分组已被完全加载,即使它小于预期的分组大小或最坏情况的分组大小。
虽然在本公开中阐述的实施例可易于进行各种修改和替代形式,但具体实施例已经通过示例的方式在附图中示出并且已经在本文中进行了详细描述。然而,应当理解,本公开并不旨在限于所公开的特定形式。本公开将涵盖落入由以下所附权利要求限定的本公开的精神和范围内的所有修改、等同和替代。此外,本文提出和要求保护的技术被引用并应用于实际性质的实物和具体示例,它们明显改进了当前技术领域,并且因此不是抽象的、无形的或纯理论的。此外,如果附加到本说明书末尾的任何权利要求包含被指定为“用于[执行][功能]…的单元”或“用于[执行][功能]…的步骤”的一个或多个元素,则此类元素旨在根据35U.S.C 112(f)进行解释。然而,对于包含以任何其它方式指定的元素的任何权利要求,这些元素不应根据35U.S.C.112(f)进行解释。
本公开的示例性实施例
以下编号的条款定义了本公开的某些示例性实施例。
示例性实施例1、一种先进先出缓冲器(FIFO),包括:
存储器,其使用第一时钟信号将数据存储在存储器的多个存储器条目中,并且允许响应于接收到读取使能信号而使用第二时钟信号读取存储在多个存储器条目中的数据,其中数据与分组相关联;以及
预见电路,其检测数据是否被写入比存储器条目的数量更少的阈值数量的存储器条目中,其中预见电路基于检测到数据被写入至少阈值数量的存储器条目来提供读取使能信号。
示例性实施例2、根示例性实施例1的FIFO,其中,第一时钟信号是从第一集成电路接收的,并且第二时钟信号是从第二集成电路接收的,其中第一时钟信号具有比第二时钟信号低的时钟频率。
示例性实施例3、示例性实施例2的FIFO,其中,第二时钟信号以第一时钟信号的频率的至少两倍的频率操作。
示例性实施例4、示例性实施例1的FIFO,其中,多个存储器条目的相应存储器条目存储多个数据字节。
示例性实施例5、示例性实施例1的FIFO,其中,被写入到阈值数量的存储器条目中的数据与分组的一部分相关联,并且在完全存储分组之前接收读取使能信号。
示例性实施例6、示例性实施例1的FIFO,其中,FIFO被配置为允许读取与分组相关联的所存储的数据,同时存储与分组的剩余部分相关联的数据。
示例性实施例7、示例性实施例1的FIFO,其中,预见电路接收指示数据条目的阈值数量的读取使能阈值信号以及指示写入存储器条目的数量的FIFO间隙信号,将读取使能阈值信号与FIFO间隙信号进行比较,并基于比较来提供读取使能信号。
示例性实施例8、一种电子系统,包括:
第一集成电路,其使用第一时钟频率传输分组;
第二集成电路,使用第二时钟频率接收分组;以及
先进先出缓冲器(FIFO),包括:
存储器,其使用第一时钟信号将数据存储在存储器的多个存储器条目中,并且允许响应于接收到读取使能信号而使用第二时钟频率读取存储在所述多个存储器条目中的数据,其中数据与数据分组相关联;以及
预见电路,其检测数据是否被写入比存储器条目的数量更少的阈值数量的存储器条目中,其中预见电路至少部分地基于检测到数据被写入阈值数量的存储器条目来提供读取使能信号。
示例性实施例9、示例性实施例8的系统,其中,多个存储器条目中的每个存储器条目被配置为存储多个数据字节。
示例性实施例10、示例性实施例8的系统,其中,被写入到阈值数量的存储器条目中的数据与数据分组的一部分相关联,并且在完全存储数据分组之前接收读取使能信号。
示例性实施例11、示例性实施例8所述的系统,其中,FIFO被配置为允许读取与数据分组相关联的所存储的数据,同时存储与数据分组的剩余部分相关联的数据。
示例性实施例12、示例性实施例8的系统,其中,预见电路接收指示数据条目的阈值数量的读取使能阈值信号以及指示写入存储器条目的数量的FIFO间隙信号,将读取使能阈值信号与FIFO间隙信号进行比较,并至少部分地基于比较来提供读取使能信号。
示例性实施例13、示例性实施例8所述的系统,其中,第二时钟频率至少是第一时钟频率的两倍。
示例性实施例14、一种方法,包括:
通过先进先出缓冲器(FIFO),使用第一时钟信号从第一集成电路接收与分组相关联的数据;
使用第一时钟信号在FIFO的存储器上将数据存储在存储器的多个数据条目中;
通过与FIFO相关联的预见电路,基于检测到分组的一部分被写入少于数据条目的数量的阈值数量的数据条目,来提供读取使能信号;以及
通过FIFO允许响应于读取使能信号使用第二时钟信号将所存储的数据传输到第二集成电路,同时存储所述分组的剩余部分。
示例性实施例15、示例性实施例14的方法,其中,所存储的数据的传输导致在存储分组的结尾之后的一个或多个时钟周期传输分组的结尾。
示例性实施例16、示例性实施例14的方法,其中,将数据存储在多个数据条目中包括基于存储器的读取指针的位置来确定跳转指针值,并且在将数据存储到多个数据条目之前使用跳转指针值来调整读取指针。
示例性实施例17、示例性实施例14的方法,其中,在完全存储分组之前接收读取使能信号。
示例性实施例18、示例性实施例14的方法,其中,允许传输与分组相关联的所存储的数据与存储分组的剩余部分是同时的。
示例性实施例19、示例性实施例14的方法,其中,通过预见电路提供读取使能信号包括:
通过预见电路在指定值和编程值之间选择指示数据条目的阈值数量的读取使能阈值信号;
通过预见电路接收FIFO间隙信号,该FIFO间隙信号指示存储器中写入的数据条目的数量;以及
通过预见电路基于比较读取使能阈值信号和FIFO间隙信号来提供读取使能信号。
示例性实施例20、示例性实施例19的方法,其中:
至少部分地基于以下来确定指定值:
表示在第一时钟信号和第二时钟信号的时钟频率之间的最高预期差异的用于第一时钟信号和第二时钟信号的指定最坏情况值;以及
表示分组预计保存的最大数量的数据字节的分组的最坏情况大小;以及
基于确定在第一时钟信号和第二时钟信号的时钟频率之间的差低于指定最坏情况值,确定更短的分组大小或这两者,来确定编程值。
示例性实施例21、示例性实施例20的方法,其中,在运行时间之前确定所述指定值。

Claims (20)

1.一种先进先出缓冲器(FIFO),包括:
存储器,其使用第一时钟信号将数据存储在所述存储器的多个存储器条目中,并且允许响应于接收到读取使能信号而使用第二时钟信号读取存储在所述多个存储器条目中的数据,其中,所述数据与分组相关联;以及
预见电路,其检测所述数据是否被写入比所述存储器条目的数量更少的阈值数量的存储器条目中,其中,所述预见电路基于检测到所述数据被写入至少所述阈值数量的存储器条目来提供所述读取使能信号。
2.根据权利要求1所述的FIFO,其中,所述第一时钟信号是从第一集成电路接收的,并且所述第二时钟信号是从第二集成电路接收的,其中,所述第一时钟信号具有比所述第二时钟信号更低的时钟频率。
3.根据权利要求2所述的FIFO,其中,所述第二时钟信号以所述第一时钟信号的频率至少两倍的频率操作。
4.根据权利要求1所述的FIFO,其中,所述多个存储器条目的相应存储器条目存储多个数据字节。
5.根据权利要求1-4中任一项所述的FIFO,其中,被写入所述阈值数量的存储器条目中的数据与所述分组的一部分相关联,并且所述读取使能信号是在完全存储所述分组之前被接收的。
6.根据权利要求1-4中任一项所述的FIFO,其中,所述FIFO被配置为允许读取与所述分组相关联的所存储的数据,同时存储与所述分组的剩余部分相关联的数据。
7.根据权利要求1-4中任一项所述的FIFO,其中,所述预见电路接收指示存储器条目的阈值数量的读取使能阈值信号以及指示写入存储器条目的数量的FIFO间隙信号,将所述读取使能阈值信号与所述FIFO间隙信号进行比较,并且基于所述比较来提供所述读取使能信号。
8.一种电子系统,包括:
第一集成电路,其使用第一时钟频率传输数据分组;
第二集成电路,其使用第二时钟频率接收所述数据分组,其中,所述第二集成电路包括先进先出缓冲器(FIFO),所述FIFO包括:
存储器,其使用所述第一时钟频率将数据存储在所述存储器的多个存储器条目中,并且允许响应于接收到读取使能信号而使用所述第二时钟频率读取存储在所述多个存储器条目中的数据,其中,所述数据与所述数据分组相关联;以及
预见电路,其检测所述数据是否被写入比所述存储器条目的数量更少的阈值数量的存储器条目中,其中,所述预见电路至少部分地基于检测到所述数据被写入所述阈值数量的存储器条目来提供所述读取使能信号。
9.根据权利要求8所述的电子系统,其中,所述多个存储器条目中的每个存储器条目被配置为存储多个数据字节。
10.根据权利要求8所述的电子系统,其中,被写入到所述阈值数量的存储器条目中的数据与所述数据分组的一部分相关联,并且所述读取使能信号是在完全存储所述数据分组之前被接收的。
11.根据权利要求8-10中任一项所述的电子系统,其中,所述FIFO被配置为允许读取与所述数据分组相关联的所存储的数据,同时存储与所述数据分组的剩余部分相关联的数据。
12.根据权利要求8-10中任一项所述的电子系统,其中,所述预见电路接收指示所述数据条目的阈值数量的读取使能阈值信号以及指示写入存储器条目的数量的FIFO间隙信号,将所述读取使能阈值信号与所述FIFO间隙信号进行比较,并且至少部分地基于所述比较来提供所述读取使能信号。
13.根据权利要求8-10中任一项所述的电子系统,其中,所述第二时钟频率至少是所述第一时钟频率的两倍。
14.一种方法,包括:
通过先进先出缓冲器(FIFO),使用第一时钟信号从第一集成电路接收与分组相关联的数据;
使用所述第一时钟信号在所述FIFO的存储器中将所述数据存储在所述存储器的多个数据条目中;
通过与所述FIFO相关联的预见电路,基于检测到所述分组的一部分被写入比所述数据条目的数量更少的阈值数量的数据条目,来提供读取使能信号;以及
通过所述FIFO允许响应于所述读取使能信号使用第二时钟信号将所存储的数据传输到第二集成电路,同时存储所述分组的剩余部分。
15.根据权利要求14所述的方法,其中,所存储的数据的传输导致在存储所述分组的结尾之后的一个或多个时钟周期传输所述分组的结尾。
16.根据权利要求14所述的方法,其中,将所述数据存储在所述多个数据条目中包括基于所述存储器的读取指针的位置来确定跳转指针值,并且在将所述数据存储到所述多个数据条目之前使用所述跳转指针值来调整所述读取指针。
17.根据权利要求14所述的方法,其中,所述读取使能信号是在完全存储所述分组之前被接收的。
18.根据权利要求14-17中任一项所述的方法,其中,允许传输与所述分组相关联的所存储的数据与存储所述分组的剩余部分是同时的。
19.根据权利要求14-17中任一项所述的方法,其中,通过所述预见电路提供所述读取使能信号包括:
通过所述预见电路在指定值和编程值之间选择指示数据条目的阈值数量的读取使能阈值信号;
通过所述预见电路接收指示所述存储器中写入数据条目的数量的FIFO间隙信号;以及
通过所述预见电路基于比较所述读取使能阈值信号和所述FIFO间隙信号来提供所述读取使能信号。
20.根据权利要求19所述的方法,其中:
至少部分地基于以下来确定所述指定值:
针对所述第一时钟信号和所述第二时钟信号的指定最坏情况值,其表示在所述第一时钟信号和所述第二时钟信号的时钟频率之间的最高预期差异;以及
所述分组的最坏情况大小,其表示所述分组被预期保存的最大数量的数据字节;以及
所述编程值是基于以下来确定的:确定与所述指定最坏情况值相比在所述第一时钟信号和所述第二时钟信号的时钟频率之间更低的差,确定更短的分组大小,或这两者。
CN202110961169.3A 2020-09-21 2021-08-20 具有预见的性能增强器的先进先出缓冲器 Pending CN114253505A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063081134P 2020-09-21 2020-09-21
US63/081,134 2020-09-21
US17/133,928 US20210223815A1 (en) 2020-09-21 2020-12-24 First-In First-Out Buffer with Lookahead Performance Booster
US17/133,928 2020-12-24

Publications (1)

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

Family

ID=76858087

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110961169.3A Pending CN114253505A (zh) 2020-09-21 2021-08-20 具有预见的性能增强器的先进先出缓冲器

Country Status (3)

Country Link
US (1) US20210223815A1 (zh)
CN (1) CN114253505A (zh)
DE (1) DE102021121234A1 (zh)

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5884099A (en) * 1996-05-31 1999-03-16 Sun Microsystems, Inc. Control circuit for a buffer memory to transfer data between systems operating at different speeds
US6226698B1 (en) * 1997-11-10 2001-05-01 Sun Microsystems, Inc. Method and apparatus for dynamically calculating degrees of fullness of a synchronous FIFO
JPH11339464A (ja) * 1998-05-28 1999-12-10 Sony Corp Fifo記憶回路
US20040257856A1 (en) * 2003-06-23 2004-12-23 Texas Instruments Incorporated Dual-port functionality for a single-port cell memory device
WO2008001285A1 (en) * 2006-06-30 2008-01-03 Nxp B.V. Asynchronous data fifo that provides uninterrupted data flow
US7996704B2 (en) * 2007-08-21 2011-08-09 Richwave Technology Corp. Asynchronous first in first out interface and operation method thereof
GB2453732B (en) * 2007-10-16 2012-03-07 Virtensys Ltd Data switch
US9736086B1 (en) * 2011-04-29 2017-08-15 Altera Corporation Multi-function, multi-protocol FIFO for high-speed communication
US10025343B2 (en) * 2011-12-28 2018-07-17 Intel Corporation Data transfer between asynchronous clock domains
US9658822B1 (en) * 2014-12-11 2017-05-23 Xilinx, Inc. Rate controlled buffer for output at either a first or second rate responsive to a fill level
US9892067B2 (en) * 2015-01-29 2018-02-13 International Business Machines Corporation Multiprocessor cache buffer management
US9942146B2 (en) * 2016-01-05 2018-04-10 Knuedge Incorporated Router path selection and creation in a single clock cycle
US10216656B2 (en) * 2016-09-27 2019-02-26 International Business Machines Corporation Cut-through buffer with variable frequencies

Also Published As

Publication number Publication date
US20210223815A1 (en) 2021-07-22
DE102021121234A1 (de) 2022-03-24

Similar Documents

Publication Publication Date Title
KR102170644B1 (ko) 낮은 레벨 프로그래밍 가능한 시퀀서와 조합한 범용 프로그래밍 가능한 프로세서를 사용한 비휘발성 메모리 채널 제어
US6192428B1 (en) Method/apparatus for dynamically changing FIFO draining priority through asynchronous or isochronous DMA engines in response to packet type and predetermined high watermark being reached
US6912610B2 (en) Hardware assisted firmware task scheduling and management
US8117525B2 (en) Method for parallel data integrity checking of PCI express devices
JP5026660B2 (ja) 直接メモリアクセス(dma)転送バッファプロセッサ
EP2074756B1 (en) Method, system, and computer program product for resequencing of data segments received over a bonding channel set
US8127053B1 (en) System and method for peripheral device communications
EP1750202A1 (en) Combining packets for a packetized bus
US20040243739A1 (en) Method and apparatus for local and distributed data memory access ("DMA") control
US20130082851A1 (en) Compression format for high bandwidth dictionary compression
JP2006502491A (ja) Usbおよび類似用途向けのdmaコントローラ
US8335867B1 (en) Method and apparatus for reducing host processor activity during interaction with peripheral devices
CN112565115A (zh) Tcp数据的传输方法、装置、计算机设备及存储介质
US20050038946A1 (en) System and method using a high speed interface in a system having co-processors
US7747796B1 (en) Control data transfer rates for a serial ATA device by throttling values to control insertion of align primitives in data stream over serial ATA connection
WO2013048530A1 (en) Method and apparatus for high bandwidth dictionary compression technique using set update dictionary update policy
EP1396786A1 (en) Bridge circuit for use in retiming in a semiconductor integrated circuit
US6880047B2 (en) Local emulation of data RAM utilizing write-through cache hardware within a CPU module
US7610415B2 (en) System and method for processing data streams
US8745455B2 (en) Providing an on-die logic analyzer (ODLA) having reduced communications
CN114253505A (zh) 具有预见的性能增强器的先进先出缓冲器
US9306598B2 (en) Compression format for high bandwidth dictionary compression
US7373541B1 (en) Alignment signal control apparatus and method for operating the same
KR20070068809A (ko) 시스템 온 칩 시스템에서 데이터 전송을 위한 시스템 및방법
US9495320B2 (en) Removing upstream dead cycles in a data communications bus

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