TW201830256A - 用於循環緩衝區之自主硬體管理之裝置及方法 - Google Patents

用於循環緩衝區之自主硬體管理之裝置及方法 Download PDF

Info

Publication number
TW201830256A
TW201830256A TW107103657A TW107103657A TW201830256A TW 201830256 A TW201830256 A TW 201830256A TW 107103657 A TW107103657 A TW 107103657A TW 107103657 A TW107103657 A TW 107103657A TW 201830256 A TW201830256 A TW 201830256A
Authority
TW
Taiwan
Prior art keywords
circular buffer
indicator
data
data element
host processor
Prior art date
Application number
TW107103657A
Other languages
English (en)
Inventor
雅各布 L. 拉孫
莫登 W. 隆德
Original Assignee
美商微晶片科技公司
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 美商微晶片科技公司 filed Critical 美商微晶片科技公司
Publication of TW201830256A publication Critical patent/TW201830256A/zh

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控制器大致上僅在大量資料傳送情況中更有效率。
各種實施例係關於存取在記憶體中之資料之方法。該等方法可包括配置該記憶體之一循環緩衝區域,以供由一自主循環緩衝區控制器使用;在藉由一輸入指標所指向之後續輸入位置處,傳送輸入資料元素至該循環緩衝區域;及在藉由一輸出指標所指向之後續輸出位置處,自該循環緩衝區域傳送輸出資料元素。在一實施例中,該輸入指標及該輸出指標之各者經組態以:回應於存取一目前資料元素位置而更新以指向至在該循環緩衝區域中之一下一資料元素位置;及回應於到達該循環緩衝區域之一結束位址而繞回至該循環緩衝區域之一開始位址。
本文描述之其他實施例係關於一種系統。該系統可包括一第一介面、一第二介面及一自主循環緩衝區控制器。該第一介面可經組態以在一第一匯流排上通訊以用於可操作上與一或多個周邊裝置及一主機處理器耦合。該第二介面可經組態以在一第二匯流排上通訊以用於可操作上與一記憶體耦合。該自主循環緩衝區控制器可經組態以定義及存取該記憶體之一循環緩衝區域。該自主循環緩衝區可進一步經組態以:控制一頭指標以用於逐步通過該循環緩衝區域及自一結束位址繞回至一開始位址;控制一尾指標以用於逐步通過該循環緩衝 區域及自該結束位址繞回至該開始位址;自該第一介面移動一第一資料元素至藉由該頭指標所指向的在該循環緩衝區域中之一位置;及自藉由該尾指標所指向的在該循環緩衝區域中之一位置移動一第二資料元素至該第一介面。
本文描述之其他實施例係關於一種系統。該系統可包括一主機處理器、一或多個周邊、一第一介面、及一自主循環緩衝區控制器。該第一介面可經組態以在一第一匯流排上通訊以用於可操作上與該一或多個周邊裝置及該主機處理器耦合。該自主循環緩衝區控制器可經組態以定義及存取該記憶體之一循環緩衝區域。該自主循環緩衝區可進一步經組態以:控制一頭指標以用於逐步通過該循環緩衝區域及自一結束位址繞回至一開始位址;控制一尾指標以用於逐步通過該循環緩衝區域及自該結束位址繞回至該開始位址;及將一第一資料元素自藉由該尾指標所指向的在該循環緩衝區域中之一位置移動至該第一介面。
本文描述之其他實施例係關於一種系統。該系統可包括一主機處理器、一第一周邊裝置及一第二周邊裝置。該第二周邊裝置可包含一第一介面,該第一介面經組態以在一匯流排上通訊而可操作上耦合至該主機處理器及該第一周邊。在一實施例中,該第二周邊裝置經組態以提供介於該主機處理器與第一周邊之間之一多通道自主通訊路徑。
100‧‧‧通用同步/非同步接收器/傳輸器(USART)
101‧‧‧接收移位暫存器
102‧‧‧兩位元組緩衝區;接收資料緩衝區
103‧‧‧接收資料
104‧‧‧時脈復原
105‧‧‧資料復原
106‧‧‧同位檢查器
107‧‧‧接收控制
108‧‧‧Pin控制
200‧‧‧循環緩衝區
201‧‧‧頭指標;輸入指標
202‧‧‧尾指標;輸出指標
203‧‧‧暗陰影區塊(在循環緩衝區中之包括有效資料元素之位置)
204‧‧‧淺陰影區塊(空的位置或已自循環緩衝區移除資料元素之位置)
300‧‧‧運算系統;控制系統
301‧‧‧自主循環緩衝區(ACB)控制器
302‧‧‧周邊裝置;周邊
303‧‧‧記憶體
304‧‧‧主機處理器;CPU
305‧‧‧周邊匯流排
306‧‧‧SRAM匯流排;記憶體匯流排
307‧‧‧事件系統匯流排
400‧‧‧自主循環緩衝區(ACB)
401‧‧‧控制或命令暫存器
402‧‧‧ACB_DATA_WRITE暫存器
403‧‧‧ACB_DATA_READ暫存器
404‧‧‧狀態暫存器
405‧‧‧空缺計數器
406‧‧‧填充計數器
407‧‧‧寫入資料緩衝區
408‧‧‧讀取資料緩衝區
410‧‧‧ACB控制器
411‧‧‧事件系統
412‧‧‧SRAM匯流排
420‧‧‧ACB控制器
421‧‧‧命令解譯器
422‧‧‧緩衝區頭暫存器
423‧‧‧緩衝區尾暫存器
424‧‧‧緩衝區開始暫存器
425‧‧‧緩衝區大小暫存器
426‧‧‧周邊位址
500‧‧‧實例記憶體配置圖
501‧‧‧循環緩衝區區域
502‧‧‧ACB緩衝區開始位置
503‧‧‧ACB緩衝區結束位置
504‧‧‧尾指標
505‧‧‧下一可用位置
506‧‧‧頭指標
507‧‧‧下一可用寫入位置
508‧‧‧空缺區域
509‧‧‧已填入區域
602‧‧‧程序區塊
604‧‧‧程序區塊
606‧‧‧程序區塊
608‧‧‧程序區塊
610‧‧‧程序區塊
612‧‧‧程序區塊
614‧‧‧程序區塊
700‧‧‧自主循環緩衝區(ACB)
702‧‧‧N層級先進先出(FIFO)緩衝區
703‧‧‧FIFO資料暫存器
704‧‧‧周邊
705‧‧‧資料暫存器
706‧‧‧觸發
720‧‧‧ACB控制器
721‧‧‧RAMPx
722‧‧‧FIFO_OUT暫存器
723‧‧‧FIFO_IN暫存器
724‧‧‧FIFO_SIZE暫存器
725‧‧‧控制暫存器(CCRx)
726‧‧‧控制暫存器位元(或位元組)
727‧‧‧查詢表
801‧‧‧n通道自主通訊路徑(ACP)
802‧‧‧CPU
803‧‧‧RAM
804‧‧‧通用同步/非同步接收器/傳輸器(USART)
所屬技術領域中具有通常知識者可自[實施方式]結合附圖瞭解本揭露之實施例之目的及優點,附圖包括:圖1係經組態為一接收器之一通用同步/非同步接收器/傳輸器的方塊圖。
圖2係繪示一循環緩衝區的示意圖。
圖3係一運算系統的方塊圖,該運算系統包括一主機處理器、記憶體、一周邊裝置,及一自主循環緩衝區控制器。
圖4係自主循環緩衝區控制器的詳細方塊圖。
圖5繪示展示在一記憶體配置圖中之一循環緩衝區域的實例記憶體配置圖。
圖6係繪示與組態及使用該自主循環緩衝區相關聯之程序的流程圖。
圖7A及圖7B係一自主循環緩衝區控制器的方塊圖,其展示資料移動。
圖8係介於一CPU與一周邊之間之一自主通訊路徑的方塊圖。
下文實施方式將參考形成其部分之附圖,並且其中利用圖解方式展示其中可實踐本揭露之數個具體實例實施例。充分詳細描述這些實施例以使所屬技術領域中具有通常知識者能夠實踐本揭露。然而,可利用其他實施例,並且可進行結構、材料及程序變更,而未脫離本揭露之範疇。本文中呈現之圖解闡釋非意指係任何特定方法、系統、裝置、或結構之實際視圖,而僅是經採用以描述本揭露之實施 例的理想化表示。本文中呈現之圖式非必然按比例繪製。為了讀者便利,在各種圖式中之相似結構或組件可保持相同或相似編號;然而,編號之相似性非意謂結構或組件之大小、組成、組態、或任何其他性質必然相同。
應易於明白,如本文中大致上描述及圖式中所繪示之實施例之組件可依各式各樣不同組態予以排列及設計。因此,下文描述之各種實施例非意圖限制本揭露之範疇,而僅是表示各種實施例。雖然在圖式中可呈現實施例之各種態樣,然而該等圖式非必然按比例繪製,除非具體指示。
另外,所展示及描述之具體實施方案僅係實例且不應解讀為實施本揭露之唯一方式,除非本文中另有指明。元件、電路、及功能可依方塊圖形式予以展示,以免不必要的細節混淆本揭露。反之,所展示及描述之具體實施方案僅係例示性且不應解讀為實施本揭露之唯一方式,除非本文中另有指明。另外,區塊定義及各種區塊之間之邏輯分割係一具體實施方案之例示。所屬技術領域中具有通常知識者將易於明白,可藉由許多其他分割解決方案實踐本揭露。在絕大多數情況中,已省略關於時序及類似者考量之細節,其中此類細節不是徹底瞭解本揭露所必須者且係在相關技術領域中具有通常知識者之能力內。
所屬技術領域中具有通常知識者將瞭解可使用任何各式各樣不同科技及技術來表示資訊及信號。例如,可藉由電壓、電流、電磁波、磁場或粒子、光學場或粒子、或其等之任何組合來表示本說 明書通篇中所引用的資料、指令、命令、資訊、信號、位元、符號、及碼片(chip)。為了清楚呈現及說明,一些圖式可將信號繪示為一單一信號。所屬技術領域中具有通常知識者將理解,該信號可表示一匯流排之信號,其中該匯流排可具有各式各樣位元寬度,並且本揭露可實施在任何數目個資料信號,包括一單一資料信號。
可用一般用途處理器、特殊用途處理器、數位信號處理器(DSP)、特殊應用積體電路(ASIC)、場可程式化閘陣列(FPGA)或經設計以執行本文描述之功能的其他可程式化邏輯裝置、離散閘或電晶體邏輯、離散硬體組件、或其等之任何組合來實施或執行結合本文中揭示之實施例所描述的各種說明性邏輯區塊、模組、及電路。一般用途處理器(本文中亦可稱為主機處理器或簡單地稱為主機)可係一微處理器,但是在替代方案中,該處理器可係任何習知處理器、控制器、微控制器、或狀態機。一處理器亦可實作為運算裝置之一組合,諸如一DSP與一微處理器之一組合、複數個微處理器、一或多個微處理器與一DSP核心結合,或任何其他此類組態。一般用途電腦包括視為特殊用途電腦之處理器,而該一般用途電腦經組態以執行與本揭露之實施例相關的運算指令(例如,軟體程式碼)。
亦應注意,可就描繪為一流程圖(flowchart/flow diagram)、一結構圖、或一方塊圖的一程序而論來描述實施例。雖然一流程圖可描述操作動作為一循序程序,但是許多這些動作可依另一序列、平行、或實質上同時執行。此外,可重新排列動作順序。一程序可對應於一方法、一執行緒、一函式、一程序、一副常式、一副程 式等。另外,本文中揭示之方法可以硬體、軟體、或兩者實作。若以軟體實作,則函式可作為在電腦可讀取媒體上之一或多個指令或程式碼予以儲存或傳輸。電腦可讀取媒體包括電腦儲存媒體及通訊媒體兩者,包括促進在不同地點之間傳送一電腦程式的任何媒體。
應理解,本文中使用諸如「第一(first)」、「第二(second)」等標號對一元件的任何指涉非限制該等元件之數量或順序,除非明確指明此類限制。反而是,本文中可使用這些標號作為區別兩個或更多個元件或一元件之例項的便利方法。因此,對第一元件及第二元件的指涉非意謂可採用僅兩個元件,亦非意謂該第一元件必須以某種方式在該第二元件之前。此外,除非另有指明,否則一組元件可包含一或多個元件。
本文描述之元件可包括相同元件之多個例項。這些元件可普遍藉由一數值指示項(例如,110)予以指示及藉由該數值指示項後續接著一字母指示項(例如,110A)或之前有一「破折號」之一數值指示項(例如,110-1)予以具體指示。為了易於下文說明,在絕大多數情況中,元件符號指示項以簡介或最充分論述元件之圖式的圖號開始。因此,例如,在圖1上之元件識別項將大部分係以數值格式1xx及在圖4之元件識別項將大部分係以4xx。
如本文中所使用,對一給定參數、性質、或條件引用用語「實質上」意指且包括所屬技術領域中具有通常知識者將瞭解該給定參數、性質、或條件在小變化程度內符合例如諸如可接受之製造容限內的程度。舉實例而言,取決於實質上符合的特定參數、性質、或 條件,該參數、性質、或條件可係至少90%符合、至少95%符合、或甚至至少99%符合。
整份說明書引用之「一項實施例」、「一實施例」、或相似語言意指結合所指示實施例描述的一特定特徵、結構、或特性被包括在本揭露之至少一實施例中。因此,在整份說明書中,片語「在一項實施例」、「在一實施例中」、或相似語言可(但非必)皆指涉相同實施例。
本文描述之實施例包括在記憶體中之循環緩衝區之自主硬體管理。該等循環緩衝區可由一主機處理器、一或多個周邊裝置、或其等之一組合予以存取,而無需直接參考至在記憶體中之循環緩衝區之位址。根據本揭露實施例之一自主循環緩衝區控制器可經組態以控制一暫時儲存裝置,其確保介於軟體工作與硬體裝置之間或兩個硬體裝置之間之一有效率非同步資料傳送。
大部分(若非全部)內嵌系統通常在一分開之記憶體使用資料緩衝。緩衝可用以緩解即時需求,而且亦可用以確保持續輸送量。在一些系統中,緩衝可使用一直接記憶體存取(DMA)控制器以硬體實作,或以軟體實作。
DMA緩衝在其區塊資料傳送之一般用途中有效率,其中在移動相對大資料區塊前先予以備妥。可設定DMA程序,其中該DMA程序及硬體將處置往返於記憶體之資料移動(例如,介於諸如一串列通訊周邊之一周邊與一記憶體之間)。此DMA程序有效率地卸載主機處理器,但具有與管理該DMA控制器、在記憶體中之緩衝區、 及判定何時適合執行DMA操作相關聯之額外負荷。因此,DMA程序傾向於僅對於較大資料厚塊(data chunk)有效率。再者,直到整個資料封裝(data package)備妥才開始一DMA傳送大致上不可行,其會造成顯著傳送延時,且隨後可意謂當使用DMA時不可能保持持續高輸送量。此外,當使用DMA時緩衝係線性,意指DMA自一開始位址開始讀取/寫入,及當達到區塊之結束時停止,此係因為此係傳送完成時。
當以軟體實作緩衝時,線性緩衝區係亦一選項,但是一循環緩衝區通常更具引人注目,此係因為當正在自該循環緩衝區讀取資料時,資料可持續寫入至該循環緩衝區。另外、一循環緩衝區可像是一習知DMA程序般處置到達或離開的高載(burst)資料區塊,而且亦可處置可依更多個規則時間間隔到達或離開該循環緩衝區的串流資料。
圖1係經組態為一接收器之一通用同步/非同步接收器/傳輸器(USART)100的方塊圖。一些系統經設計使得一定位準之緩衝新增至周邊。此USART 100包括在接收方向之一相對小形式之雙緩衝。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係一運算系統300的方塊圖,該運算系統包括一主機處理器304、記憶體303(SRAM)、一周邊裝置302、及一自主循環緩衝區(ACB)控制器301。舉非限制性實例,運算系統300可係一微控制器類型內嵌系統、一使用者類型電腦、一檔案伺服器、一運算伺服器、一筆記型電腦、一平板電腦、一手持式裝置、一行動裝置,或用於執行軟體之其他相似電腦系統。本文中可互換使用電腦、運算系統、及伺服器,以指示一種用於實踐本揭露實施例之系統。運算系統300經組態用於執行含有運算指令之軟體程式且包括一或多個處理器、記憶體、儲存裝置、使用者介面元件、及一或多個通訊元件。
主機處理器304係一中央處理單元(CPU),其可經組態用於執行各式各樣作業系統及包括用於實行本揭露實施例之全部或部分之運算指令之應用程式。
記憶體303可用以保存運算指令、資料結構、及用於執行各式各樣工作之其他資訊,包括執行本揭露之實施例。舉實例而言,而非限制性,該記憶體可包括同步隨機存取記憶體(SRAM)、動態RAM(DRAM)、唯讀記憶體(ROM)、快閃記憶體、及類似者。
記憶體303可包括經組態以儲存資訊之其他類型記憶體裝置,包括揮發性儲存裝置或非揮發性儲存裝置。其他類型記憶體之實例包括奈米RAM或(NRAM)、以奈米結晶線為基礎之記憶體、以氧化矽為基礎之次10奈米程序記憶體、石墨烯記憶體、矽-氧化矽-氮化 矽-氧化矽-矽(Silicon-Oxide-Nitride-Oxide-Silicon,SONOS)、電阻式隨機存取記憶體(RRAM)、可程式化金屬化胞(PMC)、導電橋接式RAM(CBRAM)、磁阻式RAM(MRAM)、相變RAM(PCRAM)、相變記憶體、或其他固態儲存媒體。
在所闡釋之實施例中,主機裝置(即,CPU)304在一SRAM匯流排306上與一記憶體303(即,SRAM)通訊。CPU 304亦在一周邊匯流排305上與周邊裝置302通訊。周邊裝置302亦可耦合至一事件系統匯流排307。關於一種類型事件系統及事件匯流排之額外詳細,以及總體微控制器系統組態,可在2013年6月27日申請之美國專利第9,256,399號標題為「BREAKING PROGRAM EXECUTION ON EVENTS」中找到,該案以全文引用方式併入本文中。
ACB控制器301經組態以在SRAM匯流排306、周邊匯流排305、及事件系統匯流排307上通訊。
當然,所屬技術領域中具有通常知識者將理解,可依其他系統組態使用本揭露之實施例。例如,實施例可依使用一中斷類型系統用於事件控制之一電腦類型系統予以組態。另外,此類型系統可具有一分開之匯流排(例如,一輸入/輸出匯流排),用於介於CPU 304與任何周邊裝置302之間之通訊。此外,此類型系統可包括在記憶體匯流排(即,SRAM匯流排)306上通訊之ACB控制器301,該ACB控制器可與記憶體303及CPU 304直接耦合,且在此一I/O匯流排上與周邊裝置302通訊。
用於本揭露實施例之許多其他系統組態係可行的。關於一種類型微控制器系統組態之額外詳細可在2010年3月26日申請之美國專利第8,402,180號標題為「AUTONOMOUS MULTI-PACKET TRANSFER FOR UNIVERSAL SERIAL BUS」中找到,該案以全文引用方式併入本文中。
圖4係根據本揭露實施例之ACB控制器301的詳細方塊圖。ACB控制器301可經組態為用於暫時儲存裝置之一控制器,其確保介於軟體工作與硬體裝置之間或兩個硬體裝置(例如,兩個周邊)之間之一有效率非同步(或同步)資料傳送。
簡言之,雖然DMA良好地適用於大資料區塊,但是當處置像是一循環緩衝區之單一位元組時,DMA缺乏能力及/或有缺點,並且遺缺在已組譯一整個封裝之前起始資料移動之能力。軟體實作之循環緩衝區可包括用以處置寫入至指標及程序以及自指標及程序讀取兩者的大量額外負荷。另外,軟體實作之循環緩衝區不會像DMA一樣自主處置至/自一周邊之異動(例如,無需受一主機處理器監督)。
運用本揭露之ACB控制器301,藉由以硬體實作一ACB(其可操作以與諸如通訊模組、計時器、類比轉數位控制器(ADC)及數位轉類比控制器(DAC)等其他周邊密切共同作業),可卸載可已由控制系統300之CPU 304處置的額外負荷程序。此一ACB可相似於一傳統DMA(即,經設定以處置線性資料)起作用並且可經設定為一旦已到達資料之結束就「繞回」且再次重頭開始。當自例如一DAC產生波形時此程序可尤其實用。
應注意,本文中,一ACB控制器及在記憶體中之循環緩衝區域可統稱為一自主循環緩衝區(ACB)。
在本揭露之實施例中,ACB控制器301控制在插入於周邊302與CPU 304之間之記憶體303(或另一記憶體)中之一循環緩衝區,使得CPU 304寫入至該循環緩衝區,而非讓CPU 304寫入至周邊302。當周邊302就緒以接收資料時,ACB控制器301可將資料自在記憶體中之循環緩衝區303移動至目的地(例如,周邊裝置302),只要在該循環緩衝區中有資料。自CPU 304至該循環緩衝區及自該循環緩衝區至周邊302之這些傳送可循序發生或可平行發生,只要在該循環緩衝區中有有效資料。
當然,傳送可發生在其他方向。換言之,該ACB控制器可移動來自周邊裝置302之資料至該循環緩衝區及自該循環緩衝區移動資料至CPU 304。
一ACB控制器301可不自動傳送所有資料至一目的地,反而是管理該循環緩衝區且從而顯著降低軟體額外負荷。在該組態中,一ACB可作為一周邊模組而被存取:有可能透過一暫存器介面讀取或寫入位元組,而該ACB(即,ACB控制器301)之DMA功能性實際上儲存/提取資料至/自一SRAM(即,記憶體303)對在CPU 304上的軟體程序完全透通。CPU 304不需要使一實際記憶體存取操作與該SRAM相關。反而是,該CPU只有寫入至該ACB中之具體位址,或自該ACB中之具體位址讀取。
轉向圖4,例如,在一周邊至主機資料傳送中,一周邊寫入至ACB_DATA_WRITE暫存器402。一寫入資料緩衝區407可耦合至ACB_DATA_WRITE暫存器402以在資料被寫入至在SRAM中之循環緩衝區域之前持有資料。ACB控制器420可使用在緩衝區頭暫存器422中之一值以寫入該資料至在該SRAM之該循環緩衝區域中之適當位置。該資料可來自資料緩衝區407(若存在),或直接來自ACB_DATA_WRITE暫存器402。緩衝區頭暫存器422之遞增、遞減、及繞回在上文參考圖2予以解說並且下文參考圖5予以補充描述。
在背景中(即,主機或周邊不查看或管理),ACB控制器420可使用在緩衝區尾暫存器423中之一值以自在該SRAM之該循環緩衝區域中之適當位置讀取資料。該資料可置放在一讀取資料緩衝區408中(若存在),或直接置放在一ACB_DATA_READ暫存器403中。緩衝區尾暫存器423之遞增、遞減、及繞回在上文參考圖2予以解說並且下文參考圖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,該命令解譯器可用以控制存取類型(例如,預覽(peek)、寫入/讀取前導資料元素,寫入/讀取結尾資料元素等)。
因此,ACB控制器410能夠與周邊共同作業。例如,ACB控制器420「瞭解」一周邊之狀態,且從而知道是否一周邊就緒以傳輸輸出資料。相似地,ACB控制器420「瞭解」是否一周邊具有經接收之新資料,並且可收集此資料及置放此資料在該循環緩衝區中。接收到資料時,ACB控制器420可經組態以向一CPU(或另一周邊) 通知新資料可用,及接著,一CPU可檢查狀態暫存器404以得知有多少資料及自ACB 400收集資料。ACB控制器420可經設定以使用事件系統411來向該CPU或周邊通知各資料元素或針對一給定大小之一封裝進行通知。
ACB控制器420之一擴充功能(extension)可經組態以使其感知協定,藉由組態該擴充功能使得該擴充功能知道在該協定中的哪(些)位元組含有關於該封裝大小及在封包內之資料位置之資訊。此可允許ACB 400僅當接收到一整個封裝時才中斷一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展示在一讀取操作中之資料移動方向,即,其中一CPU(圖中未展示)寫入資料至ACB 700,猶如該ACB係一周邊,及周邊704接收來自ACB 700之資料。當周邊704就緒以接收資料時, ACB控制器720可將資料自緩衝區702移動至周邊704之一資料暫存器705,只要在緩衝區702中有資料。自一CPU至ACB 700之傳送及自ACB 700至周邊704之傳送可循序發生或可平行發生,只要在緩衝區702中有有效資料。在一實施例中,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)可供周邊或CPU使用,例如,在一peak()操作中。
圖7B展示在一寫入操作中之資料移動方向,即,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具有雙向通訊需求,且因此ACP 801之至少一通道可促進讀取通訊,及ACP 801之至少一其他通道可促進實質上同時寫入通訊。可回應於一CPU發出針對該RAM 803傳送資料至USART 804之一DMA請求而起始通訊。ACP 801處置讀取/寫入操作、使用經程式化I/O使CPU免於繁重的傳送工作,對於一習知DMA控制器,該等讀取/寫入操作太小而無法逕行設定額外負荷。
ACP 801可搭配包括一緩衝區之任何周邊使用或將受益於一緩衝區。可按需要新增額外通道,包括實作用於其他通道之控制特徵(例如,傳送在佇列中之下一DMA請求之一描述項)。
雖然圖8展示兩個使用者之間之多通道通訊,然而在一些實施例中,該ACP可促進一對多目的地之通訊,例如,各通道可經組態以促進至數個不同周邊之通訊。該ACP亦可促進多對一目的地之通訊。在另一實施例中,該ACP可經組態以藉由提供例如兩個周邊之間之可同時寫入至其及自其讀取之數個通道來實現高位元速率通訊。
具有通常知識者將理解,此程序可在自一周邊裝置至該CPU之另一方向移動資料。替代地,該程序可於兩個周邊裝置之間移 動資料。亦應指明,雖然未直接圖解闡釋,但是在程序區塊606中之資料移動及在程序區塊608中之資料移動可重疊,使得在藉由該CPU完全寫入該字元字串「Hello world」之前,該字元字串之一些可開始移動至該USART。
在絕大多數情況中,本文中已就位元組而論來論述資料移動。然而,本揭露之實施例可經組態使用用於個別資料元素之許多其他大小,例如,諸如16位元字組(bit word)、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以獲得表示該等儲存之信號及/或狀態的信號,以執行對應之軟體指令。
雖然本文中已關於某些所繪示之實施例描述本揭露,但是所屬技術領域中具有通常知識者將理解及明白,本發明不如此受限制。反而是,可對所繪示及描述之實施例進行許多新增、刪除及修改,而未脫離本發明之範疇,如下文申請專利範圍連同其法律均等物。此 外,來自一實施例之特徵可與另一實施例之特徵組合,然而仍然涵蓋在本發明之範疇內,如發明人所預期。

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之系統,其中該主機處理器係一微控制器之部分,且該第一周邊係一數位轉類比轉換器或一類比轉數位轉換器。
TW107103657A 2017-02-13 2018-02-01 用於循環緩衝區之自主硬體管理之裝置及方法 TW201830256A (zh)

Applications Claiming Priority (4)

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

Publications (1)

Publication Number Publication Date
TW201830256A true TW201830256A (zh) 2018-08-16

Family

ID=63105903

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107103657A TW201830256A (zh) 2017-02-13 2018-02-01 用於循環緩衝區之自主硬體管理之裝置及方法

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
CN111542117A (zh) * 2019-02-06 2020-08-14 Abb瑞士股份有限公司 无线工业网络中的循环时隙操作
TWI724608B (zh) * 2019-11-04 2021-04-11 鴻海精密工業股份有限公司 微控制器架構及架構內資料讀取方法
TWI810095B (zh) * 2022-10-18 2023-07-21 慧榮科技股份有限公司 資料儲存裝置與寫入緩存器管理方法

Families Citing this family (10)

* 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 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
CN108833237B (zh) 2018-07-20 2021-01-26 京东方科技集团股份有限公司 智能家居网关及其管控方法
JP2020144534A (ja) * 2019-03-05 2020-09-10 キオクシア株式会社 メモリ装置およびキャッシュ制御方法
CN114375445B (zh) 2019-08-29 2022-12-27 微芯片技术股份有限公司 使用自主存储器访问对数据进行预处理及相关系统、方法和设备
CN111708495A (zh) * 2020-06-19 2020-09-25 深圳前海微众银行股份有限公司 环形队列存储方法、装置及计算设备、存储介质
CN113407240B (zh) * 2021-07-07 2022-09-09 浙江大学 一种C64x+ DSP软件流水循环缓冲机制的模拟方法
US11630671B1 (en) * 2022-01-21 2023-04-18 Stmicroelectronics (Beijing) R&D Co., Ltd. Circular buffer accessing device, system and method

Family Cites Families (19)

* 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
US9037768B2 (en) * 2008-04-28 2015-05-19 Hewlett-Packard Development Company, L.P. Virtual-interrupt-mode interface and method for virtualizing an interrupt mode
US8417842B2 (en) * 2008-05-16 2013-04-09 Freescale Semiconductor Inc. Virtual direct memory access (DMA) channel technique with multiple engines for DMA controller
KR101202738B1 (ko) * 2008-12-22 2012-11-20 한국전자통신연구원 멀티 채널 데이터 전송 장치
US9032114B2 (en) * 2009-09-11 2015-05-12 Commissariat à l'énergie atomique et aux énergies alternatives Direct memory access controller, corresponding method and computer program
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
CN104714918B (zh) * 2013-12-15 2018-01-12 中国航空工业集团公司第六三一研究所 主机环境下高速fc总线数据接收及缓冲方法
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

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111542117A (zh) * 2019-02-06 2020-08-14 Abb瑞士股份有限公司 无线工业网络中的循环时隙操作
CN111542117B (zh) * 2019-02-06 2023-09-26 日立能源瑞士股份公司 无线工业网络中的循环时隙操作
TWI724608B (zh) * 2019-11-04 2021-04-11 鴻海精密工業股份有限公司 微控制器架構及架構內資料讀取方法
TWI810095B (zh) * 2022-10-18 2023-07-21 慧榮科技股份有限公司 資料儲存裝置與寫入緩存器管理方法

Also Published As

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

Similar Documents

Publication Publication Date Title
TW201830256A (zh) 用於循環緩衝區之自主硬體管理之裝置及方法
US10114589B2 (en) Command control for multi-core non-volatile memory
US11635902B2 (en) Storage device processing stream data, system including the same, and operation method
US9092275B2 (en) Store operation with conditional push of a tag value to a queue
CN114443529B (zh) 内存直接访问架构、系统、方法、电子设备和介质
JP7162102B2 (ja) メモリアクセス技術およびコンピュータシステム
US10558367B2 (en) Adaptive transaction layer packet for latency balancing
US10740000B2 (en) Adaptive transaction layer packet for latency balancing
JP2006502491A (ja) Usbおよび類似用途向けのdmaコントローラ
PT2245545E (pt) Proporcionamento de um endereço de dados indirecto para um bloco de controlo num subsistema de canal de um sistema de processamento de e/s
KR20090101195A (ko) Nand 플래시 메모리의 커맨드 기반 제어
US11989556B2 (en) Detecting infinite loops in a programmable atomic transaction
US11985078B2 (en) Packet arbitration for buffered packets in a network device
CN107870866B (zh) Io命令调度方法与nvm接口控制器
CN111538694B (zh) 一种用于网络接口支持多链接和重传的数据缓存方法
US9910771B2 (en) Non-volatile memory interface
US10178041B2 (en) Technologies for aggregation-based message synchronization
US9244824B2 (en) Memory sub-system and computing system including the same
KR20140067403A (ko) 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법
CN107085557A (zh) 直接存储器访问系统以及相关方法
CN113031849A (zh) 直接内存存取单元及控制部件
US11113102B2 (en) Data storage device
CN117632787A (zh) 优选主机的存储器操作
CN117632792A (zh) 存储器侧高速缓存请求处置