CN110462599A - 用于循环缓冲器的自主硬件管理的设备和方法 - Google Patents

用于循环缓冲器的自主硬件管理的设备和方法 Download PDF

Info

Publication number
CN110462599A
CN110462599A CN201880018805.5A CN201880018805A CN110462599A CN 110462599 A CN110462599 A CN 110462599A CN 201880018805 A CN201880018805 A CN 201880018805A CN 110462599 A CN110462599 A CN 110462599A
Authority
CN
China
Prior art keywords
data
circular buffering
buffering region
peripheral equipment
host
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
Application number
CN201880018805.5A
Other languages
English (en)
Other versions
CN110462599B (zh
Inventor
J·L·拉森
W·L·莫腾
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.)
Microchip Technology Inc
Original Assignee
Microchip Technology Inc
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 Microchip Technology Inc filed Critical Microchip Technology Inc
Publication of CN110462599A publication Critical patent/CN110462599A/zh
Application granted granted Critical
Publication of CN110462599B publication Critical patent/CN110462599B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/122Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware performs an I/O function other than control of data transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4295Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using an embedded synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/16Memory access
    • 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)
  • Information Transfer Systems (AREA)

Abstract

结合本公开的各种实施方案描述了一种自主循环缓冲器。自主循环缓冲控制器可控制自主循环缓冲器的用户和外围设备之间的数据的移动。自主循环缓冲器可启用直接存储器访问型数据移动,包括用户和外围设备之间的移动。

Description

用于循环缓冲器的自主硬件管理的设备和方法
优先权声明
本专利申请要求于2017年2月13日提交的美国临时专利申请序列号62/458,362“DEVICES AND METHODS FOR AUTONOMOUS HARDWARE MANAGEMENT OF CIRCULAR BUFFERS”的提交日的权益。本专利申请还要求于2018年1月18日提交的美国专利申请号15/874,704“DEVICES AND METHODS FOR AUTONOMOUS HARDWARE MANAGEMENT OF CIRCULAR BUFFERS”的提交日的权益。
技术领域
本公开的实施方案整体涉及直接存储器访问控制,并且更具体地涉及对用于直接存储器访问的循环缓冲器的存储器访问的自主控制。
背景技术
在许多嵌入式控制系统和其他计算系统中,外围设备和主机之间或者外围设备和外围设备之间的数据的移动可以是可存在于此类系统中的各种总线上的大量数据流量。直接存储器访问(DMA)控制器可用于管理这些数据传输,因此主机不需要管理每个数据元的移动。然而,传统DMA控制器仍具有主机需要执行的重要开销管理,并且DMA控制器通常仅对于批量数据传输更有效。
发明内容
各种实施方案涉及访问存储器中的数据的方法。这些方法可包括分配存储器的循环缓冲区域以供自主循环缓冲控制器使用;在输入指针所指向的后续输入位置处将输入数据元传输到循环缓冲区域;以及在输出指针所指向的后续输出位置处从循环缓冲区域传输输出数据元。在一个实施方案中,输入指针和输出指针中的每一者被配置为:响应于对当前数据元位置的访问而更新以指向循环缓冲区域中的下一个数据元位置;并且响应于到达循环缓冲区域的结束地址而环绕到循环缓冲区域的起始地址。
本文所述的其他实施方案涉及一种系统。该系统可包括第一接口、第二接口和自主循环缓冲控制器。第一接口可被配置为在用于与一个或多个外围设备和主机处理器可操作地耦接的第一总线上通信。第二接口可被配置为在用于与存储器可操作地耦接的第二总线上通信。自主循环缓冲控制器可被配置为限定和访问存储器的循环缓冲区域。自主循环缓冲器还可被配置为:控制头指针以逐步通过循环缓冲区域并从结束地址环绕到起始地址;控制尾指针以逐步通过循环缓冲区域并从结束地址环绕到起始地址;将第一数据元从第一接口移动到循环缓冲区域中头指针所指向的位置;以及将第二数据元从循环缓冲区域中尾指针所指向的位置移动到第一接口。
本文所述的其他实施方案涉及一种系统。该系统可包括主机处理器、一个或多个外围设备、第一接口和自主循环缓冲控制器。第一接口可被配置为在用于与一个或多个外围设备和主机处理器可操作地耦接的第一总线上通信。自主循环缓冲控制器可被配置为限定和访问存储器的循环缓冲区域。自主循环缓冲器还可被配置为:控制头指针以逐步通过循环缓冲区域并从结束地址环绕到起始地址;控制尾指针以逐步通过循环缓冲区域并从结束地址环绕到起始地址;以及将第一数据元从循环缓冲区域中尾指针所指向的位置移动到第一接口。
本文所述的其他实施方案涉及一种系统。该系统可包括主机处理器、第一外围设备和第二外围设备。第二外围设备可包括第一接口,该第一接口被配置为在可操作地耦接到主机处理器和第一外围设备的总线上通信。在一个实施方案中,第二外围设备被配置为在主机处理器和第一外围设备之间提供多通道自主通信路径。
附图说明
通过结合附图的详细描述,本公开的实施方案的目的和优点对于本领域的普通技术人员将是显而易见的,附图包括:
图1是被配置为接收器的通用同步/异步接收器/发射器的框图。
图2是示出循环缓冲器的概念图。
图3是包括主机处理器、存储器、外围设备和自主循环缓冲控制器的计算系统的框图。
图4是自主循环缓冲控制器的详细框图。
图5示出了示出存储器映射中的循环缓冲区域的示例性存储器映射。
图6是示出与配置和使用自主循环缓冲器相关联的过程的流程图。
图7A和图7B是示出数据移动的自主循环缓冲控制器的框图。
图8是CPU和外围设备之间的自主通信路径的框图。
具体实施方式
在以下详细描述中,参考了形成其一部分的附图,并且在附图中以举例的方式示出了可实践本公开的具体示例性实施方案。充分详细地描述了这些实施方案,以使本领域的普通技术人员能够实践本公开。然而,可利用其他实施方案,并且可在不脱离本公开的范围的情况下进行结构、材料和方法的变化。本文所呈现的图示并不旨在为任何特定方法、系统、设备或结构的实际视图,而仅仅是用于描述本公开的实施方案的理想化表示。本文所呈现的附图未必按比例绘制。为了读者的方便,各附图中的类似结构或部件可保持相同或相似的编号;然而,编号的相似性并不意味着所述结构或部件在尺寸、组成、配置或任何其他特性方面必须是相同的。
应当容易理解,如本文一般所述并且在附图中示出的实施方案的部件可被布置和设计成多种不同的配置。因此,对各种实施方案的以下描述并不旨在限制本公开的范围,而是仅代表各种实施方案。虽然实施方案的各个方面可在附图中给出,但是附图未必按比例绘制,除非特别指明。
此外,所示出和描述的特定实施方式仅为示例,并且不应理解为实施本公开的唯一方式,除非本文另外指明。元件、电路和功能可以框图形式示出,以便不以不必要的细节模糊本公开。相反,所示出和描述的特定实施方式仅为示例性的,并且不应理解为实施本公开的唯一方式,除非本文另外指明。另外,块定义和各个块之间逻辑的分区是特定实施方式的示例。对于本领域的普通技术人员将显而易见的是,本公开可通过许多其他分区解决方案来实践。在大多数情况下,已省略了关于定时考虑等的细节,其中此类细节不需要获得本公开的完全理解,并且在相关领域的普通技术人员的能力范围内。
本领域的普通技术人员将会理解,可使用多种不同技术和技法中的任何一者来表示信息和信号。例如,可在整个本说明书中参考的数据、指令、命令、信息、信号、比特、符号和芯片可由电压、电流、电磁波、磁场或粒子、光场或粒子或者它们的任何组合来表示。为了清晰地呈现和描述,一些附图可以将信号示出为单个信号。本领域的普通技术人员应当理解,信号可表示信号总线,其中总线可具有多种位宽度,并且本公开可在包括单个数据信号在内的任意数量的数据信号上实现。
结合本文所公开的实施方案描述的各种例示性逻辑块、模块和电路可使用通用处理器、专用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者被设计成执行本文所述的功能的其他可编程逻辑设备、离散栅极或晶体管逻辑、离散硬件部件或它们的任何组合来实现或实施。通用处理器(在本文中也可称为主机处理器或仅称为主机)可以是微处理器,但在替代方案中,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器也可实现为计算设备的组合,诸如DSP和微处理器的组合、多个微处理器、与DSP核结合的一个或多个微处理器或任何其他此类配置。在通用计算机被配置为执行与本公开的实施方案相关的计算指令(例如,软件代码)时,包括处理器的通用计算机被认为是专用计算机。
而且,应当指出的是,可根据被描绘为流程图、流程图示、结构图或框图的过程来描述实施方案。尽管流程图可将操作行为描述为顺序过程,但是许多这些行为可按另一顺序、并行或基本上同时执行。此外,可重新安排动作的顺序。过程可以对应于方法、线程、功能、程序、子例程、子程序等。此外,本文所公开的方法可以在硬件、软件或两者中实现。如果在软件中实现,这些功能可作为一个或多个指令或代码存储或传输到计算机可读介质上。计算机可读介质包括计算机存储介质和通信介质两者,该通信介质包括有利于将计算机程序从一个位置传递到另一个位置的任何介质。
应当理解,本文中使用名称诸如“第一”、“第二”等对元件的任何提及不限制这些元件的数量或顺序,除非明确说明这种限制。相反,这些名称可在本文中用作在两个或更多个元件或元件的实例之间进行区分的便利方法。因此,提及第一元件和第二元件并不意味着在那里只能采用两个元件,或者第一元件必须以某种方式在第二元件之前。此外,除非另外指明,一组元件可包括一个或多个元件。
本文所述的元件可包括相同元件的多个实例。这些元件可由数字指示符(例如110)一般地指示,并且由后接字母指示符的数字指示符(例如,110A)或后接“短划线”在前的数字指示符(例如,110-1)具体地指示。为了便于遵循该描述,在大多数情况下,元件编号指示符以引入或最充分讨论元件的附图的编号开始。因此,例如,图1上的元件标识符将主要为数字格式1xx,并且图4上的元件将主要为数字格式4xx。
如本文所用,涉及给定参数、特性或条件的术语“基本上”是指并且包括在本领域的普通技术人员将会理解的给定参数、特性或条件满足小程度的方差的程度,诸如例如在可接受的制造公差内。以举例的方式,取决于基本上符合的具体参数、特性或条件,参数、特性或条件可至少满足90%、至少满足95%、或甚至至少满足99%。
在整个本说明书中提及“一个实施方案”、“实施方案”或类似的语言意味着结合所指示的实施方案描述的特定特征、结构或特性包括在本公开的至少一个实施方案中。因此,整个本说明书中的短语“在一个实施方案中”、“在实施方案中”和类似的语言可以但不必全部是指同一实施方案。
本文所述的实施方案包括对存储器中的循环缓冲器的自主硬件管理。循环缓冲器可由主机处理器、一个或多个外围设备或其组合访问,而不直接引用存储器中的循环缓冲器的地址。根据本公开的实施方案的自主循环缓冲控制器可被配置为控制临时存储装置,该临时存储装置确保软件任务和硬件设备之间或两个硬件设备之间数据的有效异步传输。
大多数(如果不是全部)嵌入式系统通常在单独的存储器中使用数据缓冲。缓冲可用于放宽实时要求,但也可用于确保可持续吞吐量。在一些系统中,可在硬件中使用直接存储器访问(DMA)控制器或在软件中实现缓冲。
DMA缓冲在其块数据传输的一般使用中是有效的,其中在移动数据之前准备相对大的数据块。可设置DMA过程,在这之后DMA过程和硬件将处理往返存储器(例如,外围设备诸如串行通信外围设备和存储器之间)的数据移动。该DMA过程有效地卸去主机处理器的负载,但具有与管理DMA控制器、存储器中的缓冲器以及确定何时适于执行DMA操作相关的开销。因此,DMA过程仅趋于对于较大数据块有效。此外,在准备整个数据包之前开始DMA传输通常是不可行的,这可能导致传输的显著延迟,并且随后可能意味着在使用DMA时不可能保持持续的高吞吐量。此外,使用DMA时的缓冲是线性的,这意味着DMA从起始地址开始读取/写入,并且在其到达块的结束时停止,因为这时传输完成。
当在软件中实现缓冲时,线性缓冲器也是一种选择,但循环缓冲器通常更具吸引力,因为在从循环缓冲器读取数据的同时可将数据连续地写入到循环缓冲器中。此外,循环缓冲器可处理像常规DMA过程那样到达或离开的数据的突发块,但也可处理可能以更规律的时间间隔到达或离开循环缓冲器的流数据。
图1是被配置为接收器的通用同步/异步接收器/发射器(USART)100的框图。一些系统被设计成使得向外围设备添加一定程度的缓冲。该USART100在接收方向上包括相对较小的双缓冲形式。USART 100在传输方向上包括单字节缓冲器(未示出)并且在接收方向上包括双字节缓冲器102。该缓冲放宽了外围设备和主机处理器的串行逐位性质之间的通信的基本实时要求。然而,大多数外围驱动器仍将使用附加缓冲来降低对主机处理器的开销要求。
图2是示出循环缓冲器200的概念图。循环缓冲器200可实现为先进先出(FIFO)缓冲器。浅色阴影块204指示在循环缓冲器中包括有效数据元的位置。深色阴影块203指示空的位置或已从循环缓冲器200中移除数据元的位置。
头指针201(在本文中也可被称为输入指针)指向最近写入的数据元。在这种情况下,在将下一个输入数据元写入到循环缓冲器200之前,头指针201将递增(或递减)以指向下一个可用位置。另选地,头指针201可被配置为指向用于写入到循环缓冲器200的下一个可用数据位置(即,标记为xn-11的位置,该位置当前包含已被移除的数据)。在这种情况下,在将当前输入数据元写入到循环缓冲器200之后,头指针201将递增(或递减)以指向下一个可用位置。
尾指针202(在本文中也可被称为输出指针)指向保存循环缓冲器200中可用于读取的最旧有效数据元的位置。在这种情况下,在从循环缓冲器200读取当前输出数据元之后,尾指针202将递增(或递减)以指向下一个可用位置。
在常规系统中,如果在主机处理器上运行的软件中的任务或功能将字符串写入USART诸如图1中所示的USART 100,则该功能将必须等待USART 100传输该字符串,直到代码执行可继续(如果没有缓冲)。这是一种所谓的“繁忙等待”情况,其会阻碍程序执行并影响系统的实时性能。
相反,如果写入字符串的功能可将字符串写入到循环缓冲器诸如循环缓冲器200,则每当USART 100准备好传输下一个字节时,USART中断例程可从循环缓冲器200获取新字符。然而,常规循环缓冲器的一个问题是,主机处理器仍必须管理循环缓冲器200,这在将数据写入到循环缓冲器200以及在再次读出该数据时均可导致不可避免的代码开销。
图3是包括主机处理器304、存储器303(SRAM)、外围设备302和自主循环缓冲(ACB)控制器301的计算系统300的框图。作为非限制性示例,计算系统300可以是微控制器型嵌入式系统、用户型计算机、文件服务器、计算服务器、笔记本电脑、平板电脑、手持式设备、移动设备或用于执行软件的其他类似计算机系统。计算机、计算系统和服务器可在本文中互换使用以指示用于实践本公开的实施方案的系统。计算系统300被配置用于执行包含计算指令的软件程序,并且包括一个或多个处理器、存储器、存储装置、用户界面元件和一个或多个通信元件。
主机处理器304是中央处理单元(CPU),其可被配置用于执行各种操作系统和应用程序,这些操作系统和应用程序包括用于执行本公开的实施方案的全部或部分的计算指令。
存储器303可用于保存用于执行各种任务(包括执行本公开的实施方案)的计算指令、数据结构和其他信息。以举例而非限制的方式,存储器可包括同步随机存取存储器(SRAM)、动态RAM(DRAM)、只读存储器(ROM)、闪存存储器等。
存储器303可包括被配置为存储信息的其他类型的存储器设备,包括易失性存储设备或非易失性存储设备。其他类型的存储器的示例包括纳米RAM或(NRAM)、基于纳米晶体线的存储器、基于氧化硅的亚10纳米工艺存储器、石墨烯存储器、硅氧化氮氧化硅(SONOS)、电阻随机存取存储器(RRAM)、可编程金属化单元(PMC)、导通桥联RAM(CBRAM)、磁阻式RAM(MRAM)、相变RAM(PCRAM)、相变存储器或其他固态存储介质。
在例示的实施方案中,主机设备(即,CPU)304在SRAM总线306上与存储器303(即,SRAM)通信。另外,CPU 304在外围总线305上与外围设备302通信。外围设备302还可耦接到事件系统总线307。关于一种类型的事件系统和事件总线以及整体微控制器系统配置的附加细节可见于2013年6月27日提交的标题为“BREAKING PROGRAM EXECUTION ON EVENTS”的美国专利No.9,256,399,该专利的公开内容全文以引用方式并入本文。
ACB控制器301被配置为在SRAM总线306、外围总线305和事件系统总线307上通信。
当然,本领域的普通技术人员将认识到,本公开的实施方案可用于其他系统配置中。例如,可在计算机型系统中使用用于事件控件的中断型系统来配置实施方案。此外,这种类型的系统可具有用于在CPU 304和任何外围设备302之间进行通信的单独总线(例如,输入/输出总线)。此外,这种类型的系统可将ACB控制器301包括为在存储器总线(即,SRAM总线)306(其可直接与存储器303和CPU 304耦接)上通信,并且在此类I/O总线上与外围设备302通信。
对于本公开的实施方案,许多其他系统配置是可能的。关于一种类型的微控制器系统配置的附加细节可见于2010年3月26日提交的标题为“AUTONOMOUS MULTI-PACKETTRANSFER FOR UNIVERSAL SERIAL BUS”的美国专利No.8,402,180,该专利的公开内容全文以引用方式并入本文。
图4是根据本公开的实施方案的ACB控制器301的详细框图。ACB控制器301可被配置为用于临时存储装置的控制器,该临时存储装置确保软件任务和硬件设备之间或在两个硬件设备(例如,两个外围设备)之间数据的有效异步(或同步)传输。
简而言之,虽然DMA适用于大数据块,但它在处理像循环缓冲器这样的单个字节时缺乏能力和/或有缺点,并且在组装整个包之前没有启动数据移动的能力。软件实现的循环缓冲器可包括用于处理写入指针和进程以及从其中读取的显著开销。此外,软件实现的循环缓冲器不像DMA那样自主地(例如,不受主机处理器的监督)处理往返外围设备的事务。
利用本公开的ACB控制器301,可通过在硬件中实现ACB来卸除可能已由控制系统300的CPU 304处理的开销过程的负载,该ACB可与其他外围设备诸如通信模块、定时器、模数转换器(ADC)和数模转换器(DAC)密切协作。此类ACB可与传统DMA的作用类似(即,被设置为处理线性数据),并且其被设置为一旦已到达数据的结束就“环绕”并重新开始。当由例如DAC生成波形时,该过程可能特别有用。
需注意,ACB控制器和存储器中的循环缓冲区域在本文中可被统称为自主循环缓冲器(ACB)。
在本公开的实施方案中,ACB控制器301控制插入外围设备302和CPU 304之间的存储器303(或另一存储器)中的循环缓冲器,使得CPU304写入到循环缓冲器而不是让CPU 304写入外围设备302。当外围设备302准备好接收数据时,只要在存储器303中的循环缓冲器中存在数据,ACB控制器301就可将数据从该循环缓冲器移动到目的地(例如,外围设备302)。只要在该循环缓冲器中存在有效数据,从CPU 304到循环缓冲器以及从循环缓冲器到外围设备302的这些传输就可相继发生或可并行发生。
当然,传输可在另一个方向上发生。换句话讲,ACB控制器可将来自外围设备302的数据移动到循环缓冲器并且从循环缓冲器移动到CPU304。
ACB控制器301可能不会自动地将所有数据传输到目的地,而是管理循环缓冲器,从而显著地降低软件开销。在该配置中,ACB可作为外围模块被访问:可通过寄存器接口读取或写入字节,而ACB的DMA功能(即,ACB控制器301)实际上是将数据存储在SRAM(即,存储器303)中/从SRAM中获取数据,这对于CPU 304上的软件过程来说是完全透明的。CPU 304不需要涉及对SRAM的实际存储器访问操作。相反,CPU只写入或读取ACB中的一个特定地址。
转到图4,例如,在外围设备到主机数据传输中,外围设备写入ACB_DATA_WRITE寄存器402。写入数据缓冲器407可耦接到ACB_DATA_WRITE寄存器402,以在将数据写入SRAM中的循环缓冲区域之前保存数据。ACB控制器420可使用缓冲器头寄存器422中的值来将数据写入SRAM的循环缓冲区域中的适当位置。数据可来自数据缓冲器407(如果存在),或直接来自ACB_DATA_WRITE寄存器402。上文参考图2解释了缓冲器头寄存器422的递增、递减和环绕,并且下文参考图5进行了补充说明。
在后台(即,未被主机或外围设备看到或管理),ACB控制器420可使用缓冲器尾寄存器423中的值来从SRAM的循环缓冲区域中的适当位置读取数据。可将数据放置在读取数据缓冲器408(如果存在)中,或直接放置在ACB_DATA_READ寄存器403中。上文参考图2解释了缓冲器尾寄存器423的递增、递减和环绕,并且下文参考图5进行了补充说明。
当主机开始读取数据时,其仅从ACB_DATA_READ寄存器403读取,其中ACB控制器420管理来自SRAM的循环缓冲区域的所有访问并通过ACB_DATA_READ寄存器403提供数据。
数据移动也可在从主机到外围设备的另一个方向上发生。在这种情况下,主机写入ACB_DATA_WRITE寄存器402,并且外围设备从ACB_DATA_READ寄存器403读取。
最后,数据移动可在两个外围设备之间发生,而不是在外围设备和主机之间发生。
ACB控制器420可包括寄存器以指示ACB控制器应在存储器中放置循环缓冲区域的位置。作为一个示例,寄存器可包括缓冲器起始寄存器424和缓冲器大小寄存器425,如图4所示。其他实施方案可使用缓冲器结束寄存器而不是缓冲器大小寄存器425,或用于识别循环缓冲器的范围的寄存器的任何其他组合。
ACB 400可包括状态寄存器,该状态寄存器提供关于循环缓冲器中的可用空间、存储在循环缓冲器中的字节的数量等的信息。可包括空位计数器以指示循环缓冲器中的多少个数据元当前未使用。类似地,可包括填充计数器以指示循环缓冲器中的多少个数据元当前包括有效数据。
ACB 400可包括控制寄存器或命令寄存器401,并且ACB控制器420可包括命令解释器421,该命令解释器可用于控制访问类型(例如,读取数据、写入/读取前导数据元、写入/读取拖尾数据元等)。
ACB控制器410因此能够与外围设备协作。例如,ACB控制器420“理解”外围设备的状态,从而知道外围设备是否准备好传输输出数据。类似地,ACB控制器420“理解”外围设备是否已接收到新数据,并且可收集该数据并将其放置在循环缓冲器中。在接收时,ACB控制器420可被配置为通知CPU(或另一外围设备)新数据可用,然后CPU可检查状态寄存器404以知道有多少数据并收集来自ACB 400的数据。ACB控制器420可被设置为使用事件系统411来通知每个数据元上的或针对给定大小的包的CPU或外围设备。
ACB控制器420的扩展可被配置为通过将其配置为使得其知道协议中的哪个(哪些)字节包含关于包大小和数据包内的数据位置的信息来使其具有协议意识。这可允许ACB400仅在接收到整个包时中断CPU,从而节省CPU带宽并降低功率消耗。
图5是示出存储器映射中的循环缓冲区域501的示例性存储器映射500。循环缓冲区域501从ACB缓冲器起始位置502扩展至ACB缓冲器结束位置503。尾指针504指向用于读取数据的下一个可用位置505,并且头指针506指向下一个可用写入位置507。
浅色阴影区域示出了循环缓冲区域501内的空置区域508,而深色阴影区域示出了循环缓冲区域501中包括当前有效数据的填充区域509。因此,可看到头指针506已经到达循环缓冲区域501的结束并且已环绕到缓冲器起始位置502,并从缓冲器起始位置502开始填充数据直到当前头指针位置507。当尾指针504在读出数据时递增时,尾指针504还将环绕到缓冲器起始位置502以继续从填充区域509读取有效数据。
图5中的示例示出了针对每个数据访问递增并从缓冲器结束环绕到缓冲器起始的尾指针和头指针。另选地,尾指针和头指针可被配置为递减并从缓冲器起始环绕到缓冲器结束。
图6是示出与配置和使用自主循环缓冲器相关联的过程的流程图。在过程框602处,CPU通过设置缓冲器起始地址和大小以及输入事件通道来初始化ACB控制器。在过程框604处,CPU初始化USART外围设备并设置输出事件通道。
在过程框606处,CPU将字符串“Hello world”写入ACB数据写入寄存器。然后,ACB控制器将字符串存储在SRAM的循环缓冲区域中。
在过程框608处,ACB控制器将字节从SRAM传输到USART外围设备。决策框610指示用于查看USART外围事件是否已发生的测试。如果没有发生,那么该过程循环以等待事件。
如果事件已发生,那么决策框612指示用于查看在SRAM的循环缓冲区域中是否存在更多有效数据的测试。如果存在,那么该过程循环回到过程框608,以将附加数据传输到USART。
如果SRAM的循环缓冲区域是空的,那么过程框614指示事务完成,并且可将可选中断发送到CPU。
图7A和图7B是根据本公开的实施方案的ACB 700的详细框图,该ACB包括在RAM中实现N级先进先出(FIFO)缓冲器702的ACB控制器720。
图7A示出了READ操作中的数据移动的方向,即其中CPU(未示出)如同其为外围设备一样将数据写入ACB 700,并且外围设备704从ACB 700接收数据。当外围设备704准备好接收数据时,只要在缓冲器702中存在数据,ACB控制器720就可将数据从缓冲器702移动到外围设备704的数据寄存器705。只要在缓冲器702中存在有效数据,从CPU到ACB 700以及从ACB 700到外围设备704的这些传输就可相继发生或可并行发生。在一个实施方案中,ACB控制器720不会立即将数据传输到外围设备704,而是在接收到外围设备704可用的事件通知时等待传输数据。
例如,在用户(例如,CPU)到外围数据传输中,用户写入FIFO数据寄存器703。在一个实施方案中,CB控制器720可包括控制寄存器(CCRx)725,并且可更新一个或多个控制寄存器位(或字节)726,例如TRG、DSZ、DIR和ADR。在一个实施方案中,控制寄存器位726可被配置为状态接口。在一个实施方案中,ACB控制器720可表示若干通道,并且可使用响应于通道标识符(例如,PTID)的查找表来访问控制位726。
在一个实施方案中,DSZ寄存器中的值可指示要从缓冲器702读取的数据的大小;DIR寄存器中的值可指示数据传输的方向(例如,CPU读取/CPU写入);ADR寄存器中的值可指示外围设备的数据寄存器705的地址;并且TRG寄存器中的值可指示用于触发传输的事件通道。
ACB控制器720可基于存储在FIFO_IN寄存器723、FIFO_OUT寄存器722和FIFO_SIZE寄存器724处的值来设置缓冲器702。FIFO_IN寄存器723中的值指示缓冲器尾指针,并且FIFO_OUT寄存器722中的值指示缓冲器头指针。
ACB控制器720可使用FIFO_IN寄存器723中的值来将数据写入RAM的缓冲器702中的适当位置。数据可来自FDR 703。ACB控制器720可使用DIR寄存器中的数据来确定存在可用于从FDR 703读取并写入缓冲器702的数据。ACB控制器720可响应于TRG控制寄存器中的值而将缓冲器702中的数据写入外围设备的数据寄存器705。当外围设备704准备就绪时,ACB控制器720可使用ADR寄存器中的地址来将数据写入外围设备704的适当数据寄存器705。
在各种实施方案中,ACB控制器720的控制寄存器726的控制位(例如,DSZ、DIR、ADR)中的一者或多者可例如在peak()操作中可用于外围设备或CPU。
图7B示出了WRITE操作中的数据移动的方向,即ACB控制器720将来自外围设备704的数据移动到缓冲器702并且从缓冲器702移动到CPU。响应于接收到命令“PTID”并将其与查找表727中的条目进行比较,ACB控制器720可更新一个或多个控制位寄存器726、TRG、DSZ、DIR和ADR。
ACB控制器720可使用FIFO_IN寄存器723中的值来将数据写入RAM的缓冲器702中的适当位置。数据可来自外围设备的数据寄存器705。ACB控制器720可使用DIR寄存器中的数据来确定存在可用于从缓冲器702读取的数据,并且使用FIFO_OUT寄存器722和DSZ寄存器中的值来从RAM的缓冲器702中的适当位置读取数据。ACB控制器720可将从缓冲器702读取的数据写入FIFO数据寄存器703。在一个实施方案中,可使可选中断生效以向CPU指示数据在FIFO数据寄存器703中可用。
参考图7A和图7B所述的ACB控制器720可用于实现两个用户之间的自主通信路径。图8是一侧上的CPU 802和RAM 803与USART 804之间的n通道自主通信路径(ACP)801的框图。每个通道可以是图7A和图7B中所示类型的ACB 700。USART具有双向通信要求,因此ACP801的至少一个通道可促进读取通信,并且ACP 801的至少一个其他通道可促进基本上同时的写入通信。可响应于CPU发出从RAM 803到USART 804的数据传输的DMA请求而发起通信。ACP 801处理读取/写入操作,使CPU免于使用编程I/O进行传输的繁重任务,这些编程I/O通常太小而不能为常规DMA控制器的设置开销提供依据。
ACP 801可与包括缓冲器的任何外围设备一起使用,或者将从缓冲器中受益。可根据需要添加附加通道,包括为其他通道实现控制特征(例如,为队列中的下一个DMA请求传输描述符)。
虽然图8示出了两个用户之间的多通道通信,但在一些实施方案中,ACP可促进从一个到多个目的地的通信,例如,每个通道可被配置为促进到多个不同外围设备的通信。ACP也可促进从多个到一个目的地的通信。在另一个实施方案中,ACP可被配置为通过提供可例如在两个外围设备之间同时写入和读取的若干通道来启用高比特率通信。
本领域的普通技术人员将认识到,该过程可在从外围设备到CPU的另一个方向上移动数据。另选地,该过程可以在两个外围设备之间移动数据。还应当指出的是,虽然未直接示出,但过程框606中的数据移动和过程框608中的数据移动可重叠,使得字符串“Helloworld”中的一些可在该字符串由CPU完全写入之前开始移动到USART。
在大多数情况下,本文从字节的角度讨论了数据移动。然而,本公开的实施方案可被配置有用于单独的数据元的许多其他大小,例如16位字、32位字、64位字和DRAM突发长度数据元。
总之,在本公开的实施方案中,CPU从软件中的处理缓冲中被卸载,这会影响最大吞吐量并影响系统的实时性能。此外,实现ACB控制器允许CPU在传输期间进入低功率模式。
因此,ACB控制器可降低功率消耗,增加可持续吞吐量并改善系统响应性,因为CPU不会因为轮询而被停止并且不忙于执行其他缓冲器管理过程。ACB控制器可消除未检测到的缓冲器溢出/欠载运行情况,并执行更快的缓冲器读取/写入。
利用ACB控制器,寄存器接口简化了访问,缓冲器管理在硬件(头/尾指针等)中被处理,并且可为典型函数诸如,get()、put()、peek()、flush()等提供支持。SRAM可用于存储数据,并且类DMA功能将数据从ACB寄存器移动到SRAM中的循环缓冲器。
ACB控制器可改善对许多外围设备的访问并向许多外围设备添加缓冲,以改善许多嵌入式控制功能,诸如DAC、ADC和脉宽调制控制。
ACB控制器:自动化往返外围设备的数据移动,放宽实时要求,由于中断较少而改善系统响应时间,在通信外围设备上启用增加和持续的吞吐量,在CPU干预最小的情况下启用高级波形生成,允许外围设备之间的复杂交互(例如,如果ADC结果>x,则将下一个值脉宽调制(PWM)信号加载到DAC中)。
本说明书中描述的许多功能单元可被标记为编程代码的模块、线程或其他分类,以便更具体地强调它们的实施独立性。模块可至少部分地以一种或另一种形式在硬件中实现。例如,模块可实现为硬件电路,该硬件电路包括定制的VLSI电路或门阵列、现有半导体诸如逻辑芯片、晶体管或其他分立部件。模块也可在可编程硬件设备诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备等中实现。
模块也可使用存储在物理存储设备(例如,计算机可读存储介质)上、存储器中或其组合以由各种类型的处理器执行的软件来实现。
可执行代码的所识别模块可例如包括计算机指令的一个或多个物理块或逻辑块,这些物理块或逻辑块可例如被组织为线程、对象、过程或功能。然而,所识别模块的可执行文件不需要物理地位于一起,而是可包括存储在不同位置的不同指令,这些指令在被逻辑地结合在一起时包括模块并实现模块的所述目的。
实际上,可执行代码的模块可以是单个指令或许多指令,并且甚至可分布在若干不同的代码段上、不同程序之间以及若干存储装置或存储器设备上。类似地,操作数据在本文中可在模块内被识别和示出,并且能够以任何合适的形式实施并在任何合适类型的数据结构内被组织。操作数据可作为单个数据集收集,或者可分布在不同位置上,包括分布在不同存储设备上,并且可至少部分地仅作为系统或网络上的电子信号存在。在模块或模块的部分在软件中实现的情况下,软件部分存储在一个或多个物理设备上,这些物理设备在本文中被称为计算机可读介质。
在一些实施方案中,软件部分以非暂态状态存储,使得软件部分或其表示在同一物理位置持续一段时间。另外,在一些实施方案中,软件部分存储在一个或多个非暂态存储设备上,这些非暂态存储设备包括能够存储非暂态状态和/或表示软件部分的信号的硬件元件,尽管非暂态存储设备的其他部分可能能够改变和/或传输信号。非暂态存储设备的一个示例包括只读存储器(ROM),该只读存储器可将表示软件部分的信号和/或状态存储一段时间。然而,存储信号和/或状态的能力不会因传输与所存储的信号和/或状态相同或表示所存储的信号和/或状态的信号的其他功能而减弱。例如,处理器可访问ROM以获得表示所存储的信号和/或状态的信号,以便执行对应的软件指令。
虽然本文结合某些图示实施方案描述了本发明,但本领域的普通技术人员将认识到并理解本发明不受此限制。相反,在不脱离下文所要求保护的本发明的范围及其法律等同形式的情况下,可对图示实施方案和所述实施方案进行许多添加、删除和修改。此外,来自一个实施方案的特性可与另一个实施方案的特性组合,同时仍被包括在发明人所设想的本发明的范围内。
权利要求书(按照条约第19条的修改)
1.一种访问存储器中的数据的方法,包括:
分配所述存储器的循环缓冲区域以供自主循环缓冲控制器使用;
在输入指针所指向的后续输入位置处将输入数据元传输到所述循环缓冲区域;以及
在输出指针所指向的后续输出位置处从所述循环缓冲区域传输输出数据元;
其中所述输入指针和所述输出指针中的每一者被配置为:
响应于对当前数据元位置的访问而更新以指向所述循环缓冲区域中的下一个数据元位置;以及
响应于到达所述循环缓冲区域的结束地址而环绕到所述循环缓冲区域的起始地址。
2.根据权利要求1所述的方法,其中:
所述输入指针与所述输出指针相等指示所述循环缓冲区域是空的;并且
所述输入指针与所述输出指针不相等指示所述循环缓冲区域包括有效数据。
3.根据权利要求1所述的方法,其中所述传输输入数据元和所述传输输出数据元均在所述循环缓冲区域不为空且未满时发生。
4.根据权利要求1所述的方法,其中在输入指针所指向的后续输入位置处将输入数据元传输到所述循环缓冲区域包括将输入数据元从寄存器接口传输到所述循环缓冲区域。
5.根据权利要求1所述的方法,其中在输出指针所指向的后续输出位置处从所述循环缓冲区域传输输出数据元包括接收指示外围设备可用的事件通知。
6.一种系统,包括:
第一接口,所述第一接口用于在与一个或多个外围设备和主机处理器可操作地耦接的第一总线上通信;
第二接口,所述第二接口用于在与存储器可操作地耦接的第二总线上通信;和
自主循环缓冲控制器,所述自主循环缓冲控制器用于限定和访问所述存储器的循环缓冲区域并且被配置为:
控制头指针以逐步通过所述循环缓冲区域并从结束地址环绕到起始地址;
控制尾指针以逐步通过所述循环缓冲区域并从所述结束地址环绕到所述起始地址;
将第一数据元从所述第一接口移动到所述循环缓冲区域中所述头指针所指向的位置;以及
将第二数据元从所述循环缓冲区域中所述尾指针所指向的位置移动到所述第一接口。
7.根据权利要求6所述的系统,还包括所述主机处理器和所述一个或多个外围设备,并且其中:
从所述一个或多个外围设备中的至少一个外围设备接收所述第一数据元;并且
将所述第二数据元发送到所述主机处理器。
8.根据权利要求6所述的系统,还包括所述主机处理器和所述一个或多个外围设备,并且其中:
从所述主机处理器接收所述第一数据元;并且
将所述第二数据元发送到所述一个或多个外围设备中的至少一个外围设备。
9.根据权利要求8所述的系统,其中所述一个或多个外围设备选自:通用同步/异步接收器-发射器、通用异步接收器-发射器、数模转换器、模数转换器、串行外围接口、两线接口和内部集成电路总线。
10.根据权利要求6所述的系统,其中所述自主循环缓冲控制器被配置为接收针对所述一个或多个外围设备中的一个外围设备的直接存储器访问请求的指示符。
11.根据权利要求6所述的系统,其中将所述第一接口、所述第二接口和所述自主循环缓冲控制器结合到外围设备中。
12.一种系统,所述系统包括:
主机处理器;
一个或多个外围设备;
第一接口,所述第一接口用于在与所述一个或多个外围设备和所述主机处理器可操作地耦接的第一总线上通信;和
自主循环缓冲控制器,所述自主循环缓冲控制器用于限定和访问存储器的循环缓冲区域并且被配置为:
控制头指针以逐步通过所述循环缓冲区域并从结束地址环绕到起始地址;
控制尾指针以逐步通过所述循环缓冲区域并从所述结束地址环绕到所述起始地址;
将第一数据元从所述循环缓冲区域中所述尾指针所指向的位置移动到所述第一接口。
13.根据权利要求12所述的系统,其中所述主机处理器被配置为将所述第一数据元写入到所述循环缓冲区域。
14.根据权利要求13所述的系统,其中所述自主循环缓冲控制器响应于中断而从所述循环缓冲区域中的所述位置移动所述第一数据元。
15.根据权利要求12所述的系统,其中所述自主循环缓冲控制器被配置为将第二数据元从所述一个或多个外围设备移动到所述尾指针所指向的所述循环缓冲区域,并通知所述主机处理器数据在所述循环缓冲区域中可用。
16.根据权利要求15所述的系统,其中所述自主循环缓冲控制器包括可由所述主机处理器访问的一个或多个状态寄存器。
17.根据权利要求16所述的系统,其中存储在所述一个或多个状态寄存器中的第一值指示所述第二数据元的大小。
18.一种系统,包括:
主机处理器;
第一外围设备;和
第二外围设备,所述第二外围设备包括第一接口,所述第一接口被配置为在可操作地耦接到所述主机处理器和所述第一外围设备的总线上通信,其中所述第二外围设备被配置为在所述主机处理器和所述第一外围设备之间提供多通道自主通信路径。
19.根据权利要求18所述的系统,其中将所述主机处理器、所述第一外围设备和所述第二外围设备与嵌入式系统结合。
20.根据权利要求19所述的系统,其中所述主机处理器是微控制器的一部分,并且所述第一外围设备是数模转换器或模数转换器。
21.根据权利要求18所述的系统,其中所述第二外围设备被配置为提供形成所述多通道通信路径的至少一部分的缓冲器。
22.根据权利要求21所述的系统,其中所述第二外围设备被配置为将所述缓冲器作为循环缓冲器控制。
23.根据权利要求22所述的系统,其中所述第一外围设备包括所述缓冲器。
24.根据权利要求22所述的系统,其中所述第二外围设备包括所述缓冲器。

Claims (20)

1.一种访问存储器中的数据的方法,包括:
分配所述存储器的循环缓冲区域以供自主循环缓冲控制器使用;
在输入指针所指向的后续输入位置处将输入数据元传输到所述循环缓冲区域;以及
在输出指针所指向的后续输出位置处从所述循环缓冲区域传输输出数据元;
其中所述输入指针和所述输出指针中的每一者被配置为:
响应于对当前数据元位置的访问而更新以指向所述循环缓冲区域中的下一个数据元位置;以及
响应于到达所述循环缓冲区域的结束地址而环绕到所述循环缓冲区域的起始地址。
2.根据权利要求1所述的方法,其中:
所述输入指针与所述输出指针相等指示所述循环缓冲区域是空的;并且
所述输入指针与所述输出指针不相等指示所述循环缓冲区域包括有效数据。
3.根据权利要求1所述的方法,其中所述传输输入数据元和所述传输输出数据元均在所述循环缓冲区域不为空且未满时发生。
4.根据权利要求1所述的方法,其中在输入指针所指向的后续输入位置处将输入数据元传输到所述循环缓冲区域包括将输入数据元从寄存器接口传输到所述循环缓冲区域。
5.根据权利要求1所述的方法,其中在输出指针所指向的后续输出位置处从所述循环缓冲区域传输输出数据元包括接收指示外围设备可用的事件通知。
6.一种系统,包括:
第一接口,所述第一接口用于在与一个或多个外围设备和主机处理器可操作地耦接的第一总线上通信;
第二接口,所述第二接口用于在与存储器可操作地耦接的第二总线上通信;和
自主循环缓冲控制器,所述自主循环缓冲控制器用于限定和访问所述存储器的循环缓冲区域并且被配置为:
控制头指针以逐步通过所述循环缓冲区域并从结束地址环绕到起始地址;
控制尾指针以逐步通过所述循环缓冲区域并从所述结束地址环绕到所述起始地址;
将第一数据元从所述第一接口移动到所述循环缓冲区域中所述头指针所指向的位置;以及
将第二数据元从所述循环缓冲区域中所述尾指针所指向的位置移动到所述第一接口。
7.根据权利要求6所述的系统,还包括所述主机处理器和所述一个或多个外围设备,并且其中:
从所述一个或多个外围设备中的至少一个外围设备接收所述第一数据元;并且
将所述第二数据元发送到所述主机处理器。
8.根据权利要求6所述的系统,还包括所述主机处理器和所述一个或多个外围设备,并且其中:
从所述主机处理器接收所述第一数据元;并且
将所述第二数据元发送到所述一个或多个外围设备中的至少一个外围设备。
9.根据权利要求8所述的系统,其中所述一个或多个外围设备选自:通用同步/异步接收器-发射器、通用异步接收器-发射器、数模转换器、模数转换器、串行外围接口、两线接口和内部集成电路总线。
10.根据权利要求6所述的系统,其中所述自主循环缓冲控制器被配置为接收针对所述一个或多个外围设备中的一个外围设备的直接存储器访问请求的指示符。
11.根据权利要求6所述的系统,其中将所述第一接口、所述第二接口和所述自主循环缓冲控制器结合到外围设备中。
12.一种系统,所述系统包括:
主机处理器;
一个或多个外围设备;
第一接口,所述第一接口用于在与所述一个或多个外围设备和所述主机处理器可操作地耦接的第一总线上通信;和
自主循环缓冲控制器,所述自主循环缓冲控制器用于限定和访问所述存储器的循环缓冲区域并且被配置为:
控制头指针以逐步通过所述循环缓冲区域并从结束地址环绕到起始地址;
控制尾指针以逐步通过所述循环缓冲区域并从所述结束地址环绕到所述起始地址;
将第一数据元从所述循环缓冲区域中所述尾指针所指向的位置移动到所述第一接口。
13.根据权利要求11所述的系统,其中所述主机处理器被配置为将所述第一数据元写入到所述循环缓冲区域。
14.根据权利要求13所述的系统,其中所述自主循环缓冲器响应于中断而从所述循环缓冲区域中的所述位置移动所述第一数据元。
15.根据权利要求12所述的系统,其中所述自主循环缓冲器被配置为将第二数据元从所述外围设备移动到所述尾指针所指向的所述循环缓冲区域,并通知所述CPU数据在所述循环缓冲区域中可用。
16.根据权利要求15所述的系统,其中所述自主循环缓冲器包括可由所述CPU访问的一个或多个状态寄存器。
17.根据权利要求16所述的系统,其中存储在所述一个或多个状态寄存器中的第一值指示所述第二数据元的大小。
18.一种系统,包括:
主机处理器;
第一外围设备;和
第二外围设备,所述第二外围设备包括第一接口,所述第一接口被配置为在可操作地耦接到所述主机处理器和所述第一外围设备的总线上通信,其中所述第二外围设备被配置为在所述主机处理器和所述第一外围设备之间提供多通道自主通信路径。
19.根据权利要求18所述的系统,其中将所述主机处理器、所述第一外围设备和所述第二外围设备与嵌入式系统结合。
20.根据权利要求19所述的系统,其中所述主机处理器是微控制器的一部分,并且所述第一外围设备是数模转换器或模数转换器。
CN201880018805.5A 2017-02-13 2018-01-29 用于循环缓冲器的自主硬件管理的设备和方法 Active CN110462599B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762458362P 2017-02-13 2017-02-13
US62/458,362 2017-02-13
US15/874,704 2018-01-18
US15/874,704 US10346324B2 (en) 2017-02-13 2018-01-18 Devices and methods for autonomous hardware management of circular buffers
PCT/US2018/015782 WO2018148049A1 (en) 2017-02-13 2018-01-29 Devices and methods for autonomous hardware management of circular buffers

Publications (2)

Publication Number Publication Date
CN110462599A true CN110462599A (zh) 2019-11-15
CN110462599B CN110462599B (zh) 2023-08-29

Family

ID=63105903

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880018805.5A Active CN110462599B (zh) 2017-02-13 2018-01-29 用于循环缓冲器的自主硬件管理的设备和方法

Country Status (5)

Country Link
US (1) US10346324B2 (zh)
CN (1) CN110462599B (zh)
DE (1) DE112018000790T5 (zh)
TW (1) TW201830256A (zh)
WO (1) WO2018148049A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108833237A (zh) * 2018-07-20 2018-11-16 京东方科技集团股份有限公司 智能家居网关及其管控方法
CN113407240A (zh) * 2021-07-07 2021-09-17 浙江大学 一种C64x+ DSP软件流水循环缓冲机制的模拟方法
CN116483442A (zh) * 2022-01-21 2023-07-25 世意法(北京)半导体研发有限责任公司 循环缓冲器访问设备、系统和方法

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10346324B2 (en) * 2017-02-13 2019-07-09 Microchip Technology Incorporated Devices and methods for autonomous hardware management of circular buffers
US10672367B2 (en) * 2017-07-03 2020-06-02 Arm Limited Providing data to a display in data processing systems
US10516621B2 (en) * 2017-09-28 2019-12-24 Citrix Systems, Inc. Systems and methods to minimize packet discard in case of spiky receive traffic
KR102521298B1 (ko) * 2018-02-14 2023-04-14 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
EP3694166B1 (en) * 2019-02-06 2022-09-21 Hitachi Energy Switzerland AG Cyclic time-slotted operation in a wireless industrial network
JP2020144534A (ja) * 2019-03-05 2020-09-10 キオクシア株式会社 メモリ装置およびキャッシュ制御方法
CN114375445B (zh) 2019-08-29 2022-12-27 微芯片技术股份有限公司 使用自主存储器访问对数据进行预处理及相关系统、方法和设备
TWI724608B (zh) * 2019-11-04 2021-04-11 鴻海精密工業股份有限公司 微控制器架構及架構內資料讀取方法
TWI810095B (zh) * 2022-10-18 2023-07-21 慧榮科技股份有限公司 資料儲存裝置與寫入緩存器管理方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090287857A1 (en) * 2008-05-16 2009-11-19 Freescale Semiconductor, Inc. Virtual Memory Direct Access (DMA) Channel Technique with Multiple Engines for DMA Controller
US20120173772A1 (en) * 2009-09-11 2012-07-05 Commissariat A L'energie Atomique Et Aux Ene Alt Direct memory access controller, corresponding method and computer program
CN104714918A (zh) * 2013-12-15 2015-06-17 中国航空工业集团公司第六三一研究所 主机环境下高速fc总线数据接收及缓冲方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4991217A (en) * 1984-11-30 1991-02-05 Ibm Corporation Dual processor speech recognition system with dedicated data acquisition bus
US5875289A (en) * 1996-06-28 1999-02-23 Microsoft Corporation Method and system for simulating auto-init mode DMA data transfers
US6298396B1 (en) * 1998-06-01 2001-10-02 Advanced Micro Devices, Inc. System for loading a current buffer desciptor register with a value different from current value to cause a previously read buffer descriptor to be read again
US7171509B2 (en) * 2002-01-09 2007-01-30 International Business Machines Corporation Method and apparatus for host messaging unit for Peripheral Component Interconnect busmaster devices
US20050223131A1 (en) * 2004-04-02 2005-10-06 Goekjian Kenneth S Context-based direct memory access engine for use with a memory system shared by devices associated with multiple input and output ports
US7809873B2 (en) * 2008-04-11 2010-10-05 Sandisk Il Ltd. Direct data transfer between slave devices
JP5108975B2 (ja) * 2008-04-28 2012-12-26 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. 仮想割り込みモードインターフェース及び割り込みモードを仮想化するための方法
KR101202738B1 (ko) * 2008-12-22 2012-11-20 한국전자통신연구원 멀티 채널 데이터 전송 장치
US8190794B2 (en) * 2009-10-21 2012-05-29 Texas Instruments Incorporated Control function for memory based buffers
US8402180B2 (en) 2010-03-26 2013-03-19 Atmel Corporation Autonomous multi-packet transfer for universal serial bus
KR102029806B1 (ko) * 2012-11-27 2019-10-08 삼성전자주식회사 선입선출 버퍼를 포함하는 시스템 온 칩, 응용 프로세서 및 그것을 포함하는 모바일 장치
US9256399B2 (en) 2013-06-27 2016-02-09 Atmel Corporation Breaking program execution on events
US9361145B1 (en) * 2014-06-27 2016-06-07 Amazon Technologies, Inc. Virtual machine state replication using DMA write records
US10210089B2 (en) * 2015-06-18 2019-02-19 Nxp Usa, Inc. Shared buffer management for variable length encoded data
WO2017099882A1 (en) * 2015-12-10 2017-06-15 Intel Corporation Accelerated touch processing at computing devices
US10346324B2 (en) * 2017-02-13 2019-07-09 Microchip Technology Incorporated Devices and methods for autonomous hardware management of circular buffers

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090287857A1 (en) * 2008-05-16 2009-11-19 Freescale Semiconductor, Inc. Virtual Memory Direct Access (DMA) Channel Technique with Multiple Engines for DMA Controller
US20120173772A1 (en) * 2009-09-11 2012-07-05 Commissariat A L'energie Atomique Et Aux Ene Alt Direct memory access controller, corresponding method and computer program
CN104714918A (zh) * 2013-12-15 2015-06-17 中国航空工业集团公司第六三一研究所 主机环境下高速fc总线数据接收及缓冲方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108833237A (zh) * 2018-07-20 2018-11-16 京东方科技集团股份有限公司 智能家居网关及其管控方法
US10812620B2 (en) 2018-07-20 2020-10-20 Boe Technology Group Co., Ltd. Home gateway and control method thereof
CN108833237B (zh) * 2018-07-20 2021-01-26 京东方科技集团股份有限公司 智能家居网关及其管控方法
CN113407240A (zh) * 2021-07-07 2021-09-17 浙江大学 一种C64x+ DSP软件流水循环缓冲机制的模拟方法
CN116483442A (zh) * 2022-01-21 2023-07-25 世意法(北京)半导体研发有限责任公司 循环缓冲器访问设备、系统和方法

Also Published As

Publication number Publication date
CN110462599B (zh) 2023-08-29
WO2018148049A1 (en) 2018-08-16
DE112018000790T5 (de) 2019-12-05
TW201830256A (zh) 2018-08-16
US10346324B2 (en) 2019-07-09
US20180232328A1 (en) 2018-08-16

Similar Documents

Publication Publication Date Title
CN110462599A (zh) 用于循环缓冲器的自主硬件管理的设备和方法
US20190317802A1 (en) Architecture for offload of linked work assignments
CN102402490B (zh) 具有与业务类别关联的端口的多端口存储器控制器
US20190075063A1 (en) Virtual switch scaling for networking applications
US20160124876A1 (en) Methods and systems for noticing completion of read requests in solid state drives
US9092275B2 (en) Store operation with conditional push of a tag value to a queue
EP3077914B1 (en) System and method for managing and supporting virtual host bus adaptor (vhba) over infiniband (ib) and for supporting efficient buffer usage with a single external memory interface
US11989556B2 (en) Detecting infinite loops in a programmable atomic transaction
US20210377150A1 (en) Memory pooled time sensitive networking based architectures
US11985078B2 (en) Packet arbitration for buffered packets in a network device
US20070011386A1 (en) Usb host controller with memory for transfer descriptors
CN116776781B (zh) 一种寄存器参数的管理方法、系统、设备及存储介质
US11803391B2 (en) Self-scheduling threads in a programmable atomic unit
WO2022086716A1 (en) Deferred communications over a synchronous interface
TW200406682A (en) Method, system and program for configuring components on a bus for input/output operations
US9087050B2 (en) Memory controller and operating method thereof
US20220121485A1 (en) Thread replay to preserve state in a barrel processor
US8462561B2 (en) System and method for interfacing burst mode devices and page mode devices
EP2799979B1 (en) Hardware abstract data structure, data processing method and system
US20220121483A1 (en) Thread execution control in a barrel processor
US12008243B2 (en) Reducing index update messages for memory-based communication queues
US11455262B2 (en) Reducing latency for memory operations in a memory controller
US20240143184A1 (en) Reducing index update messages for memory-based communication queues
US9104637B2 (en) System and method for managing host bus adaptor (HBA) over infiniband (IB) using a single external memory interface
US20220121394A1 (en) Identifying memory hotspots

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