TWI571744B - 數位信號處理資料傳送技術 - Google Patents
數位信號處理資料傳送技術 Download PDFInfo
- Publication number
- TWI571744B TWI571744B TW101137694A TW101137694A TWI571744B TW I571744 B TWI571744 B TW I571744B TW 101137694 A TW101137694 A TW 101137694A TW 101137694 A TW101137694 A TW 101137694A TW I571744 B TWI571744 B TW I571744B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- thread
- event
- digital signal
- memory device
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims description 68
- 238000012546 transfer Methods 0.000 title claims description 31
- 238000000034 method Methods 0.000 claims description 33
- 230000004044 response Effects 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 4
- 238000012544 monitoring process Methods 0.000 claims 1
- 230000002093 peripheral effect Effects 0.000 description 103
- 239000000872 buffer Substances 0.000 description 20
- 230000008569 process Effects 0.000 description 11
- 230000011664 signaling Effects 0.000 description 10
- 230000008901 benefit Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/25—Using a specific main memory architecture
- G06F2212/251—Local memory within processor subsystem
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Human Computer Interaction (AREA)
- Advance Control (AREA)
- Bus Control (AREA)
- Memory System (AREA)
Description
本發明係有關於數位信號處理資料傳送技術。數位信號處理廣泛用於各種應用中。許多此類應用在資料處理對時間存在約束以使得對終端使用者有意義或是有用之意義上為即時的。此類應用之一個實例為數位廣播流,諸如,數位電視及數位無線電。數位信號處理系統需要能夠足夠快速地處理及解碼即時流,以使得資料能夠如接收般快速地輸出(封鎖緩衝)。
除了多個以外通用數位信號處理器以外,數位信號處理系統通常利用一或多個專用硬體周邊設備。硬體周邊設備為經設計以以快速及有效之方式執行特定信號處理任務(例如,特定類型之錯誤校正)的處理方塊。數位信號處理系統可以已定義之順序直接將硬體周邊設備連接至一起(例如,藉由固線),以便滿足特定類型之即時資料之需要。
然而,不同類型之即時資料之要求可能會變化很大。舉例而言,全球所用之各種不同數位電視及無線電標準通常以不同方式構建即時資料,例如,使用不同類型或參數來編碼、交插、等化等。因此,若使用專用互聯硬體周邊設備,則不同數位信號處理系統需要針對每一類型之即時資料進行構建。
下文描述之實施例並不限於用以解決已知數位
信號處理系統之任何缺點或全部缺點之實施方案。
提供本發明內容,以便以簡要形式介紹下文實施方式中進一步描述之概念之部分。本發明內容並非意欲識別所主張標的之關鍵特徵或重要特徵,亦並非意欲用於輔助判斷所主張標的之範疇。
描述一種用於在數位信號處理系統中傳送資料之技術。在一個實例中,數位信號處理系統包含多個硬體周邊設備,每一者連接至記憶體存取控制器且每一者經組配來從記憶體裝置讀取資料、對資料執行一或多個操作,並將資料寫入至記憶體裝置。為了避免藉由固線將硬體周邊設備連接在一起,且為了提供可組配式數位信號處理系統,多執行緒處理器控制硬體周邊設備與記憶體之間的資料傳送。每一處理器執行緒經分配至記憶體存取通道,且執行緒經組配來檢測事件之存在,且回應於檢測到事件之存在而控制記憶體存取控制器,以使得選定硬體周邊設備能夠經由記憶體存取通道自記憶體裝置讀取資料或將資料寫入至記憶體裝置。
根據一個態樣,提供一種數位信號處理系統,包含記憶體裝置;提供多個通道以存取記憶體裝置之記憶體存取控制器;多個專用硬體方塊,每一者連接至記憶體存取控制器且每一者經組配來經由通道中之一者自記憶體裝置讀取資料、對資料執行一或多個操作,並經由通道中之
一者將資料寫入至記憶體裝置;以及處理器,其耦接至記憶體存取控制器且經組配來執行多個執行緒,每一執行緒經配置以控制通道中之一者,其中執行緒中之至少一者經組配來檢測事件之存在,且回應於檢測到事件之存在而控制使用執行緒之相關聯通道之自記憶體裝置至選定專用硬體方塊的資料提供。
根據一個態樣,提供一種用於在數位信號處理系統中傳送資料之方法,包含:執行處理器上之多個執行緒,其中每一執行緒獨立執行一系列操作,包含:等待直至檢測到預定義事件為止;以及回應於預定義事件而控制記憶體存取控制器,以使得專用硬體方塊能夠經由與執行緒相關聯之記憶體存取通道自記憶體裝置讀取資料或將資料寫入至記憶體裝置。
本文所描述之方法可由呈有形儲存媒體上之機器可讀取之形式的軟體來執行,諸如,呈包含電腦程式碼構件之電腦程式之形式的軟體,該電腦程式碼構件經調適以當程式在電腦上運作時及在電腦程式可實施於電腦可讀取媒體上的情況下執行本文所描述任何方法之所有步驟。有形(非暫時性)儲存媒體之實例包括碟片、大拇哥隨身碟、記憶體卡等,但並不包括傳播信號。軟體可適用於在平行處理器或串行處理器上執行,以使得方法步驟可以任何次序進行或同時進行。
此舉承認,韌體和軟體可為有價值之獨立交易商品。意欲涵蓋在「基本型」或標準硬體上運作或控制「基
本型」或標準硬體的軟體,以便執行所要功能。亦意欲涵蓋「描述」或定義硬體設置的軟體,諸如HDL(硬體描述語言)軟體,如用於設計矽晶片或用於設置通用可程式晶片,以便執行所要功能。
如熟習此項技術者將顯而易見的,上述特徵可進行適當組合,且可與實例之任何態樣進行組合。
102‧‧‧記憶體裝置
104、202、204‧‧‧數位信號處理器
106‧‧‧記憶體存取控制器
108、206~210‧‧‧硬體周邊設備
110‧‧‧一般控制處理器
302‧‧‧多執行緒處理器
304‧‧‧事件旗標引擎
306‧‧‧佇列
308‧‧‧匯流排仲裁器
402‧‧‧檢驗旗標狀態
404‧‧‧邏輯閘
406‧‧‧第一AND閘
408‧‧‧第二AND閘
410‧‧‧OR閘
412‧‧‧頂部輸入
414‧‧‧底部輸入
416‧‧‧中間輸入
502~516‧‧‧步驟
602、604‧‧‧執行緒
606‧‧‧組態暫存器
608‧‧‧資料儲存器
610‧‧‧DMA組態資料
612‧‧‧暫存器組態資料
614‧‧‧資料緩衝器
616‧‧‧HW1 regDMA
618‧‧‧HW1regConfigA
620‧‧‧HW1inDMA
622‧‧‧HW1ipA
624‧‧‧HW1outDMA
626‧‧‧HW1opA
702~718‧‧‧行
參閱以下圖式以實例描述實施例,圖式中:圖1圖示可組配式數位信號處理系統;圖2圖示用於即時信號實例之可組配式數位信號處理系統所執行之一系列操作;圖3圖示用於可組配式數位信號處理系統之控制發信結構;圖4圖示事件旗標引擎結構之實例;圖5圖示控制發信結構中執行緒對事件做出反應所執行之方法的流程圖;圖6圖示用於硬體周邊設備之基於執行緒之設置及資料傳送的實例;以及圖7圖示用於控制圖6之硬體周邊設備之一組實例佇列、旗標及指令。
所有圖中使用公用元件符號來代表類似特徵。
下文所描述之實施例僅以實例進行說明。此等實
例代表申請人當前已知之用以實施實施例之最佳方式,而不是可用以實施實施例之僅有方式。以下描述闡述實例之功能以及用於構建及操作實例之步驟的順序。然而,不同實例可達成相同或等效之功能及順序。
下文描述使用通用數位信號處理器以及專業硬體周邊設備兩者之可組配式數位信號處理系統,其避免了藉由固線將上述元件形成特定結構,且因此不對系統之可設置性形成限制。此可藉由使用快速資料傳送系統來使得硬體周邊設備能夠經設置及使用以以快速及有效之方式處理資料而達成。此系統利用多執行緒處理器之組合來控制傳自硬體周邊設備之記憶體傳送及傳至硬體周邊設備之記憶體傳送,且利用有效之發信系統來使得系統元件能夠傳達事件之發生。此舉使得數位信號處理系統能夠經充分組配來適用於不同標準,但仍維持處理即時資料所需之計算效能。
首先參閱圖1,圖1展示可組配式數位信號處理系統之實例的結構。系統包含記憶體裝置102,其用於儲存資料。在圖1之實例中,記憶體裝置102可用以儲存處理中資料及用於操作數位信號處理系統之組態資料。在其他實例中,此兩種類型之資料可分隔在不同記憶體裝置中。記憶體裝置102可為任何適當形式之隨機存取記憶體(RAM)。
一或多個數位信號處理器(DSP)104連接至記憶體裝置102。DSP 104為可程式化以對資料執行信號處理計算(諸如,快速傅里葉(Fourier)變換及等化)的處理器。儘管未視為通用處理器,DSP 104相比下文描述之硬體周邊設備
更易於設置。DSP 104執行程式碼/指令以自記憶體裝置102讀取資料,對資料執行信號處理操作,並將資料寫回至記憶體裝置102。
記憶體存取控制器106亦連接至記憶體裝置102,該記憶體存取控制器106針對多個硬體周邊設備108提供對記憶體裝置102之存取。在一些實例中,記憶體存取控制器106可呈直接記憶體存取(DMA)控制器之形式。記憶體存取控制器106提供多個記憶體存取通道(例如,DMA通道),硬體周邊設備108可使用上述多個記憶體存取通道以便能夠自記憶體裝置102讀取資料或將資料寫入至記憶體裝置102。應注意的是,在一些實例中,除了在硬體周邊設備與記憶體裝置之間傳送資料以外,記憶體存取控制器亦可經組配來從一個硬體周邊設備直接傳送資料至另一硬體周邊設備。
如上文所注意,硬體周邊設備108為經組配來執行特定信號處理任務之專業專用硬體方塊。舉例而言,一個硬體周邊設備可為專業維特比(Viterbi)解碼方塊,且另一硬體周邊設備可為專業去交插方塊。硬體周邊設備亦可為已知之固定功能加速器。硬體周邊設備中之每一者彼此獨立操作。硬體周邊設備可經充分設置以具備特定於其任務之操作參數,但無法經充分設置以改變其任務(例如,Viterbi方塊無法重設置為去交插方塊)。因此,對於特定任務而言,硬體周邊設備比DSP 104更專業。然而,硬體周邊設備經配置來以非常快速及有效之方式執行專業任務。
一般控制處理器110亦連接至記憶體裝置102,該一般控制處理器110可用以初始化、設置及控制數位信號處理系統之操作,如下文將更詳細描述。
上文所描述之數位信號處理系統提供信號處理操作之靈活性。舉例而言,系統可經配置以操作以使得不同DSP 104及硬體周邊設備108以任何所要設置或順序處理資料。每一硬體周邊設備或DSP可對系統之其他部分所提供及儲存在記憶體裝置中之一或多個資料方塊(下文亦稱作資料緩衝器)進行操作,並生成及儲存供系統之其他元件使用之一或多個資料緩衝器。此舉使得數位信號處理系統能夠用於各種不同類型之信號,例如,用於不同廣播/電信標準。
圖2圖示圖1之系統可如何經組配來處理特定類型之信號。在圖2之實例中,系統用以處理進入數位TV信號,此僅出於說明之目的。數位信號處理系統接收到數位化基頻信號,且系統經組配來起始使用第一DSP(表示為執行快速傅里葉變換(FFT)之DSP(0)202)處理此資料。隨後,第二DSP(表示為對自DSP(0)202)輸出之資料執行等化及去映射之DSP(2)204)。隨後硬體周邊設備HW(1)206對資料執行去交插,且隨後將資料傳遞至執行Viterbi解碼之另一硬體周邊設備HW(3)208。又一硬體周邊設備HW(0)210獲得經Viterbi解碼之資料,並執行里德-索洛蒙(Reed-Solomon)解碼。隨後,經解碼之資料可經額外DSP、硬體周邊設備或其他處理器(視需要但圖2未展示)處理。
圖2之實例圖示圖1之系統之不同方塊可如何組合至一起以形成適用於特定類型之信號的總信號處理系統。因為圖2之方塊並未藉由固線連接在一起,而是使用圖1之記憶體裝置102交換資料,相同信號處理系統可經組配來針對不同類型之信號以不同方式操作。
對於以圖2所展示之類型之順序操作的圖1之系統而言,一旦硬體周邊設備或DSP已完成處理,對最近生成之資料進行操作之下一硬體周邊設備經設置及啟動以執行其處理操作。此等硬體周邊設備之設置及啟動過程中之任何延遲會劣化系統通量,而此在即時信號之情況下有害。因此,此等延遲應最小化,且此可經由使用控制發信結構來達成,如下文參閱圖3所說明。
圖3展示用於可組配式數位信號處理系統之控制發信結構,該控制發信結構能夠使得系統之不同元件以快速及有效之方式傳遞訊息及發信。此結構亦使得元件能夠對事件做出快速反應,以使得硬體周邊設備可在需要時在無顯著延遲之情況下設置及啟動。
硬體周邊設備108之設置及啟動由圖1之多執行緒處理器302控制,在一些實例中多執行緒處理器302可稱作DMA控制處理器(DCP)。多執行緒處理器經配置以執行多個執行緒。每一執行緒獨立執行一系列指令或操作,儘管執行緒可共用處理器資源且是在處理器302上運作之較寬流程之全部部分。
多執行緒處理器302耦接至圖1之記憶體存取控
制器106,且可控制記憶體存取控制器106之操作。在一些實例中,多執行緒處理器302是與記憶體存取控制器106通信之獨立硬體元件,而在替代實例中,多執行緒處理器302與記憶體存取控制器106整合於一起。
下文中,多執行緒處理器302之執行緒表示為DCP(0)、DCP(1)....DCP(k)。每一執行緒經配置以直接控制記憶體存取控制器106所提供之記憶體存取通道(DMA通道)中之一者。換言之,每一執行緒能夠經由相關聯記憶體存取通道控制傳至或傳自硬體周邊設備108中之一或多者及記憶體裝置102之資料傳送。
多執行緒處理器302連接至事件旗標引擎304,其將在下文更詳細描述。事件旗標引擎304經配置以當數位信號處理系統內發生指定事件時通知多執行緒處理器302。執行緒可自事件旗標引擎304讀取資訊,並根據資訊做出反應。舉例而言,執行緒可執行「等待」指令,其使得執行緒操作之執行暫停,直至事件發生(由事件旗標引擎通知)為止。當事件發生時,執行緒啟動並執行等待指令之後之執行緒指令/操作。
此舉可用以將資料快速傳至及傳自硬體周邊設備。特定執行緒可經配置以等待事件(諸如,完成處理之前一系統元件),且回應於事件發生而控制記憶體存控制器使用相關聯記憶體存取通道將組態資料及待處理資料傳送至硬體周邊設備。另一執行緒可隨後經配置以等待將由硬體周邊設備處理之資料,且隨後控制記憶體存控制器使用相
關聯記憶體存取通道將已處理資料傳送回至記憶體裝置。下文將參閱圖5至圖7更詳細描述上述流程之一個實例。
可藉由向每一執行緒分配優先權而實施爭用管理技術。舉例而言,如上文所注意,每一執行緒經分配自0至k之順序識別符。在一個以上執行緒同時執行導致對撞以使得執行緒無法執行所有操作之情況下,可給予執行緒(例如)具有最低識別符之優先權。顯然,在替代實例中,可應用不同優先權系統,諸如,最高識別符。隨後,系統可經組配來使得最重要或系統關鍵型硬體周邊設備由最高優先權執行緒處理,以確保適用於爭用情況。
藉由使記憶體存取通道中之每一者由獨立執行之執行緒管理,相比正常之單執行緒處理器管理傳至/傳自硬體周邊設備之所有資料傳送的情形,回應時間大幅變快。此外,執行緒可經配置以在控制軟體之某處放置等待指令,從而縮短下一系統元件啟動之前的延遲。舉例而言,可在等待指令之前放置盡可能多之操作,以使得執行緒能夠在等待事件之前執行上述盡可能多之操作,藉此減少需要在事件發生之後執行之操作的數目。換言之,若可能,可由執行緒執行預計算。
除了多執行緒處理器302以外,DSP 104及一般控制處理器110亦自事件旗標引擎304接收輸入,從而使得此等元件亦能夠對事件做出反應。此將在下文進行更詳細概述。
為了能夠使數位信號處理系統之元件對事件做
出反應,可使用有效之發信系統在系統之不同元件之間進行通信。發信系統係基於在系統之部分之間載運信號之一組佇列306。在實例中,佇列306可包含多個FIFO佇列。
每一佇列可保持與將要自一個系統元件傳遞至另一系統元件之資訊相關的多個資料項。舉例而言,佇列中之資訊可指出資料已準備就緒由特定硬體周邊設備或DSP進行處理。資料項可呈以下形式:例如,指令位址或其他識別符、分支標簽、記憶體位址或系統元件想要傳遞至另一元件之任何其他類型的資訊。
資料項可由多執行緒處理器302、DSP 104或一般控制處理器110寫入至佇列。另外,任何佇列頂部之資料項可由多執行緒處理器302、DSP 104或一般控制處理器110讀取,且任何佇列頂部之資料項可由任何此等系統元件來移除。多執行緒處理器302、DSP 104或一般控制處理器110使用資料匯流排讀取、寫入及/或修改佇列306。對匯流排之存取由處理匯流排爭用之匯流排仲裁器308管理。
每一佇列具有相關聯之通知邏輯(圖3中未展示)。通知邏輯經配置以宣告旗標(或任何其他適當二進位指示符),以便指出其相關聯佇列何時含有至少一項。換言之,旗標指出相關聯佇列是否空白。
來自佇列之通知邏輯之旗標提供至事件旗標引擎304。事件旗標引擎304亦可接收呈其他旗標之形式的輸入,例如,指出硬體周邊設備或埠之狀態的其他旗標。一般而言,事件旗標引擎304充當矩陣或網,從而將佇列系結
至根據佇列中之資訊起作用之處理元件。在一些實例中,事件旗標引擎304在佇列與執行緒及DSP之間之連接性可由一般控制處理器110來設置。
圖4中可看到可應用至事件旗標引擎304之可組配式邏輯之類型的實例。在一些實例中,任何DCP執行緒可檢驗提供至事件旗標引擎之任何旗標的狀態,如402所指示。此舉使得任何執行緒能夠經組配來等待任何旗標宣告(指出項存在於特定佇列中)。另外或以其他方式,布爾(Boolean)邏輯層可應用至旗標,以使得各種旗標能夠組合,從而使得僅在一組已定義之情況下向系統元件通知事件。
舉例而言,圖4圖示用以向DSP(0)提供事件通知之邏輯閘404的組合。在其他實例中,閘之類似組合可用以向任何其他處理元件(諸如,多執行緒處理器302、一般控制處理器110或其他DSP 104上之DCP執行緒)提供事件通知。在圖4之實例中,閘404係由一層AND閘及其後之一層OR閘構建且其間存在可組配式連接。
在本實例中,第一AND閘406自與表示為Q1之佇列相關聯之旗標及與表示為Q3之佇列相關聯之旗標接收輸入。因此,若此兩個旗標經宣告而指出此兩個佇列中存在項,則AND閘406之輸出為正確(true)。類似地,第二AND閘408自與表示為Q7之佇列相關聯之旗標及不與佇列相關聯之另一旗標(例如,指出硬體周邊設備之狀態且表示為F3)接收輸入。同時,若此兩個旗標經宣告,則AND閘408之輸
出為正確。
來自兩個AND閘406、408之輸出提供至OR閘410。OR閘410亦自接收表示為Q12之另一佇列直接接收第三輸入,而並不經由AND閘。因此,每當三個輸入中之一或多者經宣告時,OR閘之輸出經宣告。來自OR閘之此輸出提供至DSP(0)(在本實例中),且用以指出事件並觸發動作。
在一些實例中,自OR閘接收輸出之系統元件可能會想要知曉OR閘之何輸入或何等輸入引起輸出經宣告。此是因為元件可能會取決於引起OR閘輸出經宣告之輸入而執行不同操作。為了達成此,可包括額外邏輯(圖4中未展示),以便向處理元件指出此資訊。舉例而言,此額外邏輯可呈多工器之形式。
此外,因為至OR閘之一個以上輸入可同時經宣告,優先權系統可應用至OR閘輸入,以便決定系統元件將對何事件做出反應。舉例而言,在圖4中,OR閘410具有三個輸入,且在此三個輸入中,頂部輸入412(如圖所示)經分配最高優先權,底部輸入414經分配最低優先權,且中間輸入416具有中間優先權。因此,當OR閘輸出經宣告時,處理元件可使用額外邏輯來判斷何OR閘輸入經宣告,且對具有最高優先權之輸入做出反應。因為旗標、AND閘及OR閘輸入之間之連接係可設置的,以上各者可經組配來使得最重要之旗標連接至OR閘之最高優先權輸入。
上文描述之事件旗標引擎結構達成了以針對不同處理元件之靈活方式通知系統中發生之事件(諸如,佇列
中之等待資訊)。邏輯閘之使用非常快速,從而確保通知之低延遲,且OR閘輸入之優先權機制使得處理元件能夠對最緊急之事件做出反應。如上文所注意,所說明之閘及旗標之不同組合可經組配來取決於系統要求而用於任何系統元件。
現參閱圖5至圖7,圖5至圖7圖示執行緒及發信結構如何共同操作以設置及利用硬體周邊設備來對資料緩衝器執行一些處理的實例流程。首先,圖5展示由多執行緒處理器302上執行之執行緒所執行之操作的高階流程圖。在步驟502,執行緒等待預定義事件發生。如上文所注意,此由事件旗標引擎304定義,其宣告在已定義條件下至多執行緒處理器302之輸出。此可呈如下形式:等待與佇列相關之特定旗標經宣告,或等待由邏輯閘定義之旗標之組合。
在步驟504判斷是否已偵測到事件。若未偵測到事件,則執行緒繼續等待。若偵測到事件,則在步驟506,執行緒自與觸發事件通知之旗標相關聯之佇列之頂部讀取資料項。在步驟508,隨後自佇列移除已讀取之資料項。在步驟510,隨後執行緒使用自佇列讀取之資料項來執行與事件相關聯之指令。舉例而言,資料項判斷執行緒執行何種類型之操作。此可包括(例如)設置硬體周邊設備(步驟512)、自記憶體裝置傳送資料至硬體周邊設備以供處理(步驟514),以及自硬體周邊設備傳送已處理資料至記憶體裝置(步驟516)。如上文所注意,執行緒使用相關聯之記憶體存取通道在記憶體裝置與硬體周邊設備之間傳送資料。
現參閱圖6,圖6圖示當執行諸如圖5所圖示之操作時執行緒所傳送之資料類型的實例。在此僅用於說明之實例中,硬體周邊設備HW(1)206正經設置及使用以處理來自記憶體裝置102之資料緩衝器,且已處理資料經寫回至記憶體裝置102。表示為DCP(1)602之實例執行緒用以控制傳至HW(1)206之資料傳送,且表示為DCP(2)604之實例執行緒用以控制傳自HW(1)206之資料傳送。在本實例中,執行緒DCP(1)602充當「主執行緒」,因為執行緒DCP(1)602起始及控制操作,而執行緒DCP(2)604充當「從屬執行緒」,因為執行緒DCP(2)604受DCP(1)602控制。此可藉由DCP(1)602經由佇列306中之一或多者發信至DCP(2)604,從而使DCP(2)執行所需指令來達成,如下文圖7中更詳細說明。硬體周邊設備HW(1)206包含組態暫存器606,其載入有資料以便設置硬體周邊設備,以及資料儲存器608,其用於保持處理中資料。應注意的是,在一些實例中,硬體周邊設備資料儲存器608可為內部緩衝器,但亦可呈保持進入及發出之處理中資料之管線緩衝器的形式。管線緩衝器之使用避免了硬體周邊設備保持所有待處理資料之需要,且亦意味輸入和輸出DMA操作可同時運作。
三個資料方塊儲存於記憶體裝置102上且用於此操作。第一資料方塊為DMA組態資料610。DMA組態資料610包含由執行緒載入至記憶體存取控制器106以便設置及起始傳至或傳自硬體周邊設備之資料傳送的資料。此將在下文更詳細概述。第二資料方塊為硬體周邊設備暫存器組
態資料612。此資料方塊包含用於設置硬體周邊設備以執行特定任務之資料,且該資料由記憶體存取控制器106回應於特定DMA組態資料610而載入至硬體周邊設備組態暫存器606。第三資料方塊為資料緩衝器614,其包含將由或已由硬體周邊設備處理之資料。該資料由記憶體存取控制器106回應於特定DMA組態資料610而載入至硬體周邊設備資料儲存器608或自硬體周邊設備資料儲存器608讀取。
使用圖6之結構之實例操作隨後如下操作。執行緒DCP(1)602對事件做出反應,並使得表示為HW1 regDMA616之DMA組態資料610之方塊自記憶體裝置102載入至記憶體存取控制器106。HW1 regDMA 616組態資料包含四個資料項:(i)記憶體裝置102中之記憶體位址,用於保持硬體周邊設備暫存器組態資料,在本實例中表示為HW1regConfigA 618;(ii)硬體周邊設備中之暫存器位址,用於指出何處應載入硬體周邊設備暫存器組態資料,在本實例中表示為HW1regStart;(iii)指出傳送方向之模式指示符,亦即,自記憶體裝置至硬體周邊設備,或反之亦然,在本實例中表示為mem2perip;以及(iv)指出正傳送之資料之長度的長度值,在本實例中表示為HW1numRegs。
將HW1 regDMA 616載入至記憶體存取控制器106使得記憶體存取控制器106開始使用與執行緒DCP(1)602相關聯之記憶體存取通道自指定記憶體位址HW1regConfigA 618(其為硬體周邊設備暫存器組態資料612之部分)傳送資料至硬體周邊設備之暫存器606。
HW1regConfigA 618包含用以設置硬體周邊設備之暫存器執行所要任務之多個資料項。
一旦硬體周邊設備HW(1)以此方式設置,執行緒DCP(1)使表示為HW1inDMA 620之第二方塊之DMA組態資料610自記憶體裝置102載入至記憶體存取控制器106。同樣,HW1inDMA 620組態資料包含四個資料項:(i)記憶體裝置102中之記憶體位址,用於保持資料緩衝器,在本實例中表示為HW1ipA 622;(ii)硬體周邊設備中之暫存器位址,用於指出何處應載入資料緩衝器,在本實例中表示為HW1inReg;(iii)指出傳送方向之模式指示符,亦即,自記憶體裝置至硬體周邊設備,或反之亦然,在本實例中表示為mem2perip;以及(iv)指出正傳送之資料之長度的長度值,在本實例中表示為HW1jobLength。
將HW1inDMA 620載入至記憶體存取控制器106使得記憶體存取控制器開始使用與執行緒DCP(1)602相關聯之記憶體存取通道自指定記憶體位址HW1ipA 622(其為資料緩衝器614之部分)傳送資料至硬體周邊設備資料儲存器608。應注意的是,執行緒DCP(1)602用於傳送至硬體周邊設備之組態資料及資料緩衝器兩者。HW1ipA 622包含將由硬體周邊設備根據組態進行操作之資料。
上文之操作涵蓋使用DCP(1)602輸入資料至硬體周邊設備206。DCP(2)604控制傳自硬體周邊設備之資料傳送,如下文描述。在一些實例中,用於自硬體周邊設備傳送資料之記憶體存取通道之起始及建立可在資料輸入至
硬體周邊設備之前執行,以使得資料一處理就準備就緒並就位。執行緒DCP(1)602(主執行緒)使得DCP(2)604(從屬執行緒)控制表示為HW1outDMA 624之第三方塊之DMA組態資料610自記憶體裝置102載入至記憶體存取控制器106。同樣,HW1outDMA 624組態資料包含四個資料項:(i)資料緩衝器在記憶體裝置102中之記憶體位址,在本實例中表示為HW1opA 626;(ii)硬體周邊設備中之記憶體位址,用於指出資料緩衝器定位於何處,在本實例中表示為HW1outReg;(iii)指出傳送方向之模式指示符,亦即,自硬體周邊設備至記憶體,或反之亦然,在本實例中表示為perip2mem;以及(iv)指出正傳送之資料之長度的長度值,在本實例中表示為HW1jobLength。
將HW1outDMA 624載入至記憶體存取控制器106使得記憶體存取控制器開始使用與執行緒DCP(2)604相關聯之記憶體存取通道自指定硬體周邊設備記憶體位址HW1outReg 622(其為資料儲存器608之部分)傳送資料至記憶體裝置102之資料緩衝器614。應注意的是,執行緒DCP(2)604(並非DCP(1))用以自硬體周邊設備傳送資料。隨後,HW1opA 626包含已由硬體周邊設備根據組態進行處理之資料。
因此,圖6圖示與記憶體存取通道相關聯之執行緒可如何管理移至及移自硬體周邊設備之資料移動。因為硬體周邊設備之組態係由組態資料之預定義方塊之直接記憶體傳送來達成,此可非常快速地執行,從而使設置延遲
最小化。應注意的是,儘管圖6之上述描述概述了所執行操作之特定順序,在一些實例中此順序可有所不同,舉例而言,順序之一些態樣可針對較快速之操作為管線式的。
現參閱圖7,圖7圖示可由執行緒執行以實施圖6中所展示之相同流程之一組實例佇列狀態及指令。在本實例中,行702展示表示為Q2之佇列的內容(僅出於說明之目的)。本實例中之流程在項「HW1inHandler」位於Q2時開始。舉例而言,此可由正完成任務且正生成資料以供HW(1)進一步處理之另一系統元件引起。HW1inHandler位於Q2使得與Q2相關聯之旗標經宣告,如行704所展示。此旗標提供至事件旗標引擎604,其經組配來向執行緒DCP(1)通知事件。事件旗標引擎604設定表示為ORvec之暫存器之值,以便指出何佇列觸發了引起事件之旗標(例如,來自OR閘輸入,如上文所描述)。行706展示ORvec之狀態,且此展示出觸發事件之佇列身份為2。
行708展示執行緒DCP(1)執行之實例假碼。DCP(1)經組配來當事件旗標引擎604通知此事件時執行帶有標簽「Despatcher」之常式。Despatcher碼讀取ORvec值(亦即,2),並將此值儲存為變數Qnum。隨後,Despatcher碼讀取帶有身份Qnum(亦即,Q2)之佇列之頂部的項,並將此項儲存為變數StartAddrM(此變數之值為HW1inHandler)。隨後移除Q2之頂部的項,如分別清空行702及704之項及旗標兩者所展示。隨後,Despatcher碼指示執行緒跳至帶有自佇列頂部讀取之標簽的部分碼,亦即,HW1inHandler。
HW1inHandler碼控制硬體周邊設備之資料之設置以及讀至硬體周邊設備中之資料讀取。然而,HW1inHandler碼藉由準備好另一執行緒來管理自硬體周邊設備之資料輸出而開始,以使得準備就緒進入預定進程。換言之,主執行緒DCP(1)觸發從屬執行緒DCP(2)準備好在另一方向傳送資料。此可藉由將資料項「HW1outHandler」寫入至實例佇列Q4來完成,且行710展示實例佇列Q4之狀態。此使得行712中之Q4之旗標經宣告。從屬執行緒DCP(2)已如行714所展示執行標簽為「SlaveWait」之碼,其使得DCP(2)等待直至項位於Q4為止。DCP(2)檢測Q4之旗標,喚醒,並將Q4之頂部之項讀取至變數StartAddrS。自Q4移除項,從而清空佇列及旗標。隨後DCP(2)跳至自佇列讀取之碼標簽「HW1outHandler」,如下文所描述。
同時,返回至行708中之DCP(1),DCP(1)藉由命令StartDMAjob(HW1regDMA)起始硬體周邊設備HW(1)之設置。此使得設置方塊HW1regDMA 616載入至記憶體存取控制器106,且組態傳送至硬體周邊設備,如上文參閱圖6所描述。執行緒DCP(1)等待上述操作完成,隨後藉由命令StartDMAjob(HW1inDMA)起始自記憶體裝置102至硬體周邊設備HW(1)之資料緩衝器的傳送。此使得設置方塊HW1inDMA 620載入至記憶體存取控制器106,且資料緩衝器傳送至硬體周邊設備,如上文參閱圖6所描述。隨後由硬體周邊設備處理資料緩衝器。同樣,執行緒等待此操作完成,隨後自Q5等待有關從屬執行緒DCP(2)已完成之通知。
再次返回至行714中之執行緒DCP(2),HW1outHandler碼得以執行,其中DCP(2)藉由命令StartDMAjob(HW1outDMA)起始已處理資料(準備就緒時)自硬體周邊設備HW(1)至記憶體裝置之傳送。此使得設置方塊HW1outDMA 624載入至記憶體存取控制器106,且資料緩衝器傳送至記憶體裝置102,如上文參閱圖6所描述。執行緒DCP(2)等待此操作完成,隨後藉由將值「Finished(已完成)」寫入至Q5來通知DCP(1)。此可由行716中之Q5的狀態及行718中之經宣告的相關聯旗標來展示。隨後執行緒DCP(2)藉由自分支返回至標簽「SlaveWait」而恢復等待。
如上文所注意,主執行緒DCP(1)已在等待Q5旗標經宣告,且回應於此,主執行緒DCP(1)清空Q5及其旗標。隨後執行緒DCP(1)藉由將下一開始位址(表示為nextStartAddr)寫入至正使用之下一佇列(表示為nextQ)而通知下一系統元件:硬體周邊設備操作已完成。隨後DCP(1)返回至Despatcher碼,且當Q2經再次寫入時流程重複。
上文所描述之操作展示執行執行緒可如何對佇列之資訊做出反應,且使用佇列之資訊來管理傳至及傳自硬體周邊設備之資料的設置及傳送。碼為緊密的、快速執行式的,且充分靈活以使得數位信號處理系統能夠經組配來用於不同類型之資料、硬體周邊設備及處理要求。發信系統給定處理器資源之優先權共享,且用於處理事件之處理器管理負擔非常低,但系統元件仍然能夠對最重要之事件做出反應。
本文所使用之「處理器」及「電腦」等詞代表具有處理能力之任何裝置,因此該等裝置可執行指令。熟習此項技術者將意識到,此類處理能力併入至許多不同裝置中,且因此「電腦」一詞包括機上盒、媒體播放器、數位無線電、PC、伺服器、行動電話、個人數位助理及許多其他裝置。
熟習此項技術者將意識到,用於儲存程式指令或資料之儲存裝置可分佈在網路中。舉例而言,遠端電腦可儲存描述為軟體之流程的實例。區域或終端電腦可對遠端電腦進行存取,並下載軟體之部分或全部以便運作程式。或者,區域電腦可視需要下載軟體之部分,或在區域終端機執行一些軟體指令並在遠端電腦(或電腦網路)執行一些軟體指令。熟習此項技術者亦將意識到,藉由利用熟習此項技術者已知之習知技術,軟體指令之全部或部分可由專用電路、可程式邏輯陣列等來執行。
如熟習此項技術者將顯而易見,本文給定之任何範圍或裝置值可在並不丟失所探求之效應的情況下進行擴展或更改。
應瞭解的是,上文所描述之益處及優勢可與一個實施例相關或可與若干實施例相關。實施例並不限於解決所述任何問題或全部問題之彼等實施例,或是具有所述任何益處及優勢或全部益處及優勢之彼等實施例。
本文中任何處提及「一/一個」項時,代表一或多個彼等項。本文所使用之「包含」一詞意謂包括所識別
之方法方塊或元件,但此類方塊或元件並不包含排他列表,且方法或設備可含有額外方塊或元件。
本文所描述之方法之步驟可以任何適當次序進行或在適當情況下同時進行。另外,可在並不偏離本文所描述之標的之精神及範疇的情況下自任何方法刪除個別方塊。上文所描述之任何實例之態樣可與所描述之任何其他實例之態樣組合,以便在並不丟失所探求之效應的情況下形成其他實例。
應瞭解的是,僅以實例給出較佳實施例之上述描述,且熟習此項技術者可進行各種修改。儘管上文在具有一定程度之特殊性的情況下或參閱一或多個個別實施例描述了各種實施例,熟習此項技術者可在並不偏離實例之精神或範疇的情況下對所揭示實施例進行各種更改。
104‧‧‧數位信號處理器
108‧‧‧硬體周邊設備
110‧‧‧一般控制處理器
302‧‧‧多執行緒處理器
304‧‧‧事件旗標引擎
306‧‧‧佇列
308‧‧‧匯流排仲裁器
Claims (21)
- 一種數位信號處理系統,包含:一記憶體裝置;一記憶體存取控制器,其提供用以存取該記憶體裝置之多個通道;多個專用硬體方塊,每一者連接至該記憶體存取控制器,且每一者經組配來經由該等通道中之一者自該記憶體裝置讀取資料、對該資料執行一或多個操作、及經由該等通道中之一者將資料寫入至該記憶體裝置;以及一處理器,其耦接至該記憶體存取控制器且經組配來執行多個執行緒,每一執行緒經配置以控制該等通道中之一者,其中該等執行緒中之至少一者經組配來檢測一事件之存在,且回應於檢測到該事件之該存在而控制使用該執行緒之相關聯通道自該記憶體裝置至一選定專用硬體方塊的資料提供。
- 如申請專利範圍第1項所述之數位信號處理系統,其中該至少一個執行緒執行一等待指令,該等待指令使得該執行緒停止執行其他指令直至檢測到該事件為止。
- 如申請專利範圍第1項之數位信號處理系統,其中該事件識別該等專用硬體方塊中之一者或一數位信號處理器所執行之操作的完成。
- 如申請專利範圍第1項所述之數位信號處理系統,進一步包含多個佇列,其經配置以保持回應於一操作之完成而由該處理器寫入之一或多個項目,以及用於每一佇列 之通知邏輯,其經配置以宣告一旗標以便指出其相關聯之佇列何時含有至少一項目。
- 如申請專利範圍第4項所述之數位信號處理系統,其中該至少一個執行緒經配置以取決於該等旗標中之至少一者之宣告而檢測該事件之該存在。
- 如申請專利範圍第4項所述之數位信號處理系統,進一步包含可組配式事件旗標引擎,其經配置以使用一系列定義供檢測該事件之存在用的條件之邏輯閘來組合來自多個佇列之旗標狀態,且經配置以於該事件發生時提供輸出至該至少一個執行緒。
- 如申請專利範圍第6項所述之數位信號處理系統,其中該等邏輯閘包含至少一個OR閘,其具有多個適於接收與多個事件相關之旗標的輸入。
- 如申請專利範圍第7項所述之數位信號處理系統,其中該OR閘之每一輸入經分配一優先權,且該至少一個執行緒經組配來判斷該OR閘之何等輸入經宣告,且經組配來執行一與該事件相關的操作,該事件引起在具有最高優先權宣告輸入上之旗標。
- 如申請專利範圍第5至8項中任一項所述之數位信號處理系統,其中該至少一個執行緒經進一步組配來從一與一已宣告旗標相關聯之佇列讀取一項目,並使用該項目選擇及組配該選定專用硬體方塊。
- 如申請專利範圍第4項所述之數位信號處理系統,其中該至少一個執行緒經進一步組配來回應於以下各者中 之至少一者而將一項目寫入至該等佇列中之一者:自該記憶體裝置讀取資料;對該資料執行一操作;以及將資料寫入至該記憶體裝置。
- 如申請專利範圍第1項所述之數位信號處理系統,其中來自該多個執行緒中之至少一個其他執行緒經組配來檢測另一事件之存在,且回應於檢測到該另一事件之存在而控制使用其相關聯通道自該選定專用硬體方塊至該記憶體裝置的資料提供。
- 如申請專利範圍第1項所述之數位信號處理系統,其中該處理器經組配來向一序列中之每一執行緒分配一順序識別符,且在一個以上執行緒爭用對該記憶體裝置之存取時基於一執行緒之識別符而對該執行緒給予優先權。
- 一種用於在數位信號處理系統中傳送資料之方法,包含:執行一處理器上之多個執行緒,其中每一執行緒獨立執行一系列操作,此等操作包含:等待直至檢測到一預定義事件為止;以及回應於該預定義事件而控制一記憶體存取控制器,以使得一專用硬體方塊能夠經由一與該執行緒相關聯之記憶體存取通道自一記憶體裝置讀取資料或寫入資料至該記憶體裝置。
- 如申請專利範圍第13項所述之方法,其中該預定義事件指出另一專用硬體方塊或一數位信號處理器已對該記憶體裝置中之該資料完成一操作。
- 如申請專利範圍第13項所述之方法,其中該預定義事件係藉由監測一旗標來檢測,其中該旗標之宣告指出該預定義事件之存在。
- 如申請專利範圍第15項所述之方法,其中該系列操作進一步包含:回應於檢測到該預定義事件而自一與該已宣告旗標相關聯之佇列讀取事件資訊。
- 如申請專利範圍第16項所述之方法,其中該系列操作進一步包含:在讀取該事件資訊之後自該佇列移除該事件資訊。
- 如申請專利範圍第16項所述之方法,其中該控制一記憶體存取控制器之步驟包含:使用該事件資訊自該記憶體裝置傳送組態資料至該記憶體存取控制器。
- 如申請專利範圍第18項所述之方法,其中該組態資料包含經配置以使得該記憶體存取控制器執行以下各者中之至少一者的參數:將組態資料自該記憶體裝置傳送至該專用硬體方塊;將一資料方塊自該記憶體裝置傳送至該專用硬體方塊以供處理;以及將一已處理資料之方塊自該專用硬體方塊傳送至該記憶體裝置。
- 一種包含電腦程式碼構件之電腦程式,該電腦程式碼構件適於在該程式在一電腦上運作時執行申請專利範圍第13至19項中任一項之方法的所有步驟。
- 如申請專利範圍第20項所述之電腦程式,其係實施於一電腦可讀媒體上。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1118534.5A GB2495959A (en) | 2011-10-26 | 2011-10-26 | Multi-threaded memory access processor |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201333711A TW201333711A (zh) | 2013-08-16 |
TWI571744B true TWI571744B (zh) | 2017-02-21 |
Family
ID=45373480
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101137694A TWI571744B (zh) | 2011-10-26 | 2012-10-12 | 數位信號處理資料傳送技術 |
Country Status (6)
Country | Link |
---|---|
US (4) | US8990522B2 (zh) |
EP (1) | EP2587384B1 (zh) |
JP (1) | JP6076686B2 (zh) |
CN (2) | CN103218329B (zh) |
GB (1) | GB2495959A (zh) |
TW (1) | TWI571744B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8789013B1 (en) * | 2006-08-28 | 2014-07-22 | Rockwell Automation Technologies, Inc. | Ordered execution of events in a data-driven architecture |
GB201314732D0 (en) * | 2013-08-16 | 2013-10-02 | Sparkle Coupon Services Ltd | A data transmission method and system |
GB201405323D0 (en) | 2014-03-25 | 2014-05-07 | Imagination Tech Ltd | Prioritsing events to which a processor is to respond |
US11068920B2 (en) | 2014-04-09 | 2021-07-20 | Orit Shifman | Methods, platforms and systems for paying persons for use of their personal intelligence profile data |
US20160094619A1 (en) * | 2014-09-26 | 2016-03-31 | Jawad B. Khan | Technologies for accelerating compute intensive operations using solid state drives |
CN105744442B (zh) * | 2016-04-27 | 2019-04-26 | 中科创达软件科技(深圳)有限公司 | 一种音频信号输出方法及装置 |
US10296393B2 (en) * | 2016-09-19 | 2019-05-21 | Texas Instruments Incorporated | Method for scheduling a processing device |
WO2018236349A1 (en) * | 2017-06-20 | 2018-12-27 | Hewlett-Packard Development Company, L.P. | SIGNAL MULTIPLEXER |
US10572259B2 (en) * | 2018-01-22 | 2020-02-25 | Arm Limited | Hints in a data processing apparatus |
CN109445854B (zh) * | 2018-10-31 | 2019-11-05 | 中科驭数(北京)科技有限公司 | 数据传输方法及装置 |
CN111240813A (zh) * | 2018-11-29 | 2020-06-05 | 杭州嘉楠耘智信息科技有限公司 | 一种dma调度方法、装置和计算机可读存储介质 |
CN111064799A (zh) * | 2019-12-25 | 2020-04-24 | 北京首信科技股份有限公司 | 应用于物联网的数据推送方法、装置、设备及存储介质 |
US20210081538A1 (en) * | 2020-09-30 | 2021-03-18 | Intel Corporation | Early platform hardening technology for slimmer and faster boot |
CN114328323A (zh) * | 2021-12-01 | 2022-04-12 | 北京三快在线科技有限公司 | 一种数据中转单元及基于数据中转单元的数据传输方法 |
CN114285704B (zh) * | 2022-03-03 | 2022-06-21 | 广州慧睿思通科技股份有限公司 | 上行信道估计方法、芯片、***及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6694385B1 (en) * | 1999-09-10 | 2004-02-17 | Texas Instruments Incorporated | Configuration bus reconfigurable/reprogrammable interface for expanded direct memory access processor |
US20080046668A1 (en) * | 2006-08-21 | 2008-02-21 | Newburn Chris J | Technique to perform memory reference filtering |
US20090070785A1 (en) * | 2007-09-11 | 2009-03-12 | Bea Systems, Inc. | Concurrency in event processing networks for event server |
US7685354B1 (en) * | 2004-06-30 | 2010-03-23 | Sun Microsystems, Inc. | Multiple-core processor with flexible mapping of processor cores to cache banks |
Family Cites Families (60)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6043535B2 (ja) * | 1979-12-29 | 1985-09-28 | 富士通株式会社 | 情報処理装置 |
GB2283596B (en) * | 1993-11-01 | 1998-07-01 | Ericsson Ge Mobile Communicat | Multiprocessor data memory sharing |
US6003129A (en) * | 1996-08-19 | 1999-12-14 | Samsung Electronics Company, Ltd. | System and method for handling interrupt and exception events in an asymmetric multiprocessor architecture |
US7272703B2 (en) * | 1997-08-01 | 2007-09-18 | Micron Technology, Inc. | Program controlled embedded-DRAM-DSP architecture and methods |
US6427196B1 (en) * | 1999-08-31 | 2002-07-30 | Intel Corporation | SRAM controller for parallel processor architecture including address and command queue and arbiter |
JP3258300B2 (ja) * | 1999-09-03 | 2002-02-18 | 松下電器産業株式会社 | Dma転送装置および画像復号装置 |
US6560667B1 (en) * | 1999-12-28 | 2003-05-06 | Intel Corporation | Handling contiguous memory references in a multi-queue system |
US6625654B1 (en) * | 1999-12-28 | 2003-09-23 | Intel Corporation | Thread signaling in multi-threaded network processor |
US6732203B2 (en) * | 2000-01-31 | 2004-05-04 | Intel Corporation | Selectively multiplexing memory coupling global bus data bits to narrower functional unit coupling local bus |
US6925641B1 (en) * | 2000-02-04 | 2005-08-02 | Xronix Communications, Inc. | Real time DSP load management system |
US7538772B1 (en) * | 2000-08-23 | 2009-05-26 | Nintendo Co., Ltd. | Graphics processing system with enhanced memory controller |
CN100399472C (zh) * | 2001-08-29 | 2008-07-02 | 联发科技股份有限公司 | 用于使用快速突发模式以改善处理器性能的方法和装置 |
WO2003094451A1 (en) * | 2002-05-04 | 2003-11-13 | Atheros Communications, Inc. | Flexible scheduling architecture for queues in a packet switched network |
US7376950B2 (en) * | 2002-05-08 | 2008-05-20 | Intel Corporation | Signal aggregation |
US7653912B2 (en) * | 2003-05-30 | 2010-01-26 | Steven Frank | Virtual processor methods and apparatus with unified event notification and consumer-producer memory operations |
JP2005202767A (ja) | 2004-01-16 | 2005-07-28 | Toshiba Corp | プロセッサシステム、dma制御回路、dma制御方法、dmaコントローラの制御方法、画像処理方法および画像処理回路 |
US7882504B2 (en) * | 2004-01-29 | 2011-02-01 | Klingman Edwin E | Intelligent memory device with wakeup feature |
US7769950B2 (en) * | 2004-03-24 | 2010-08-03 | Qualcomm Incorporated | Cached memory system and cache controller for embedded digital signal processor |
WO2006031551A2 (en) * | 2004-09-10 | 2006-03-23 | Cavium Networks | Selective replication of data structure |
EP1645968B1 (en) * | 2004-10-11 | 2008-03-19 | Texas Instruments Incorporated | Multi-threaded DMA |
GB2422926B (en) * | 2005-02-04 | 2008-10-01 | Advanced Risc Mach Ltd | Data processing apparatus and method for controlling access to memory |
CN100349150C (zh) | 2005-06-06 | 2007-11-14 | 北京中星微电子有限公司 | 通过直接存储器访问控制器传输数据的***及方法 |
US20070091104A1 (en) * | 2005-07-08 | 2007-04-26 | Singh Gajendra P | Computer system and method |
US7913255B2 (en) * | 2005-10-20 | 2011-03-22 | Qualcomm Incorporated | Background thread processing in a multithread digital signal processor |
JP4530971B2 (ja) | 2005-11-07 | 2010-08-25 | 株式会社ソニー・コンピュータエンタテインメント | 起動処理装置、dma転送システム、dma転送方法 |
EP2016496B1 (en) * | 2006-04-21 | 2014-03-12 | Oracle America, Inc. | Hiding system latencies in a throughput networking system |
US7917710B2 (en) * | 2006-06-05 | 2011-03-29 | Oracle America, Inc. | Memory protection in a computer system employing memory virtualization |
EP2038761A1 (en) * | 2006-07-03 | 2009-03-25 | Nxp B.V. | Method and system for configuration of a hardware peripheral |
US7489259B2 (en) * | 2006-08-01 | 2009-02-10 | Creative Technology Ltd. | Sample rate converter and method to perform sample rate conversion |
CN100533413C (zh) * | 2006-08-04 | 2009-08-26 | 北京中星微电子有限公司 | 数字信号处理器子***及其数据处理方法 |
GB2443277B (en) * | 2006-10-24 | 2011-05-18 | Advanced Risc Mach Ltd | Performing diagnostics operations upon an asymmetric multiprocessor apparatus |
US7698540B2 (en) | 2006-10-31 | 2010-04-13 | Hewlett-Packard Development Company, L.P. | Dynamic hardware multithreading and partitioned hardware multithreading |
US8099574B2 (en) * | 2006-12-27 | 2012-01-17 | Intel Corporation | Providing protected access to critical memory regions |
US7873757B2 (en) * | 2007-02-16 | 2011-01-18 | Arm Limited | Controlling complex non-linear data transfers |
US8407425B2 (en) * | 2007-12-28 | 2013-03-26 | Intel Corporation | Obscuring memory access patterns in conjunction with deadlock detection or avoidance |
WO2009091829A1 (en) * | 2008-01-14 | 2009-07-23 | Bivio Networks, Inc. | Systems and methods for asymmetric multiprocessing |
US20100030927A1 (en) * | 2008-07-29 | 2010-02-04 | Telefonaktiebolaget Lm Ericsson (Publ) | General purpose hardware acceleration via deirect memory access |
US8555016B2 (en) * | 2008-12-17 | 2013-10-08 | Intel Corporation | Unified optimistic and pessimistic concurrency control for a software transactional memory (STM) system |
WO2010069398A1 (en) * | 2008-12-19 | 2010-06-24 | Telefonaktiebolaget L M Ericsson (Publ) | Resolving contention between data bursts |
US20100281222A1 (en) * | 2009-04-29 | 2010-11-04 | Faraday Technology Corp. | Cache system and controlling method thereof |
JP4962921B2 (ja) * | 2009-08-26 | 2012-06-27 | 日本電気株式会社 | コンピュータのメモリ再配置制御方法およびプログラム並びにコンピュータシステム |
US8583896B2 (en) * | 2009-11-13 | 2013-11-12 | Nec Laboratories America, Inc. | Massively parallel processing core with plural chains of processing elements and respective smart memory storing select data received from each chain |
US8886994B2 (en) * | 2009-12-07 | 2014-11-11 | Space Micro, Inc. | Radiation hard and fault tolerant multicore processor and method for ionizing radiation environment |
US8054684B2 (en) * | 2009-12-18 | 2011-11-08 | Sandisk Technologies Inc. | Non-volatile memory and method with atomic program sequence and write abort detection |
US9081501B2 (en) * | 2010-01-08 | 2015-07-14 | International Business Machines Corporation | Multi-petascale highly efficient parallel supercomputer |
WO2011098664A1 (en) * | 2010-02-11 | 2011-08-18 | Nokia Corporation | Method and apparatus for providing multi-threaded video decoding |
US8819687B2 (en) * | 2010-05-07 | 2014-08-26 | Advanced Micro Devices, Inc. | Scheduling for multiple memory controllers |
JP5548037B2 (ja) * | 2010-06-11 | 2014-07-16 | パナソニック株式会社 | 命令発行制御装置及び方法 |
US8972995B2 (en) * | 2010-08-06 | 2015-03-03 | Sonics, Inc. | Apparatus and methods to concurrently perform per-thread as well as per-tag memory access scheduling within a thread and across two or more threads |
US8588228B1 (en) * | 2010-08-16 | 2013-11-19 | Pmc-Sierra Us, Inc. | Nonvolatile memory controller with host controller interface for retrieving and dispatching nonvolatile memory commands in a distributed manner |
US8239620B2 (en) * | 2010-09-27 | 2012-08-07 | Mips Technologies, Inc. | Microprocessor with dual-level address translation |
US8516205B2 (en) * | 2010-10-29 | 2013-08-20 | Nokia Corporation | Method and apparatus for providing efficient context classification |
US9405700B2 (en) * | 2010-11-04 | 2016-08-02 | Sonics, Inc. | Methods and apparatus for virtualization in an integrated circuit |
US9064116B2 (en) * | 2010-11-08 | 2015-06-23 | Intel Corporation | Techniques for security management provisioning at a data storage device |
US9471532B2 (en) * | 2011-02-11 | 2016-10-18 | Microsoft Technology Licensing, Llc | Remote core operations in a multi-core computer |
US10031888B2 (en) * | 2011-02-17 | 2018-07-24 | Hyperion Core, Inc. | Parallel memory systems |
US20120221785A1 (en) * | 2011-02-28 | 2012-08-30 | Jaewoong Chung | Polymorphic Stacked DRAM Memory Architecture |
US8694754B2 (en) * | 2011-09-09 | 2014-04-08 | Ocz Technology Group, Inc. | Non-volatile memory-based mass storage devices and methods for writing data thereto |
US9047090B2 (en) * | 2012-08-07 | 2015-06-02 | Qualcomm Incorporated | Methods, systems and devices for hybrid memory management |
US9626184B2 (en) * | 2013-06-28 | 2017-04-18 | Intel Corporation | Processors, methods, systems, and instructions to transcode variable length code points of unicode characters |
-
2011
- 2011-10-26 GB GB1118534.5A patent/GB2495959A/en not_active Withdrawn
-
2012
- 2012-10-05 US US13/646,649 patent/US8990522B2/en active Active
- 2012-10-12 TW TW101137694A patent/TWI571744B/zh active
- 2012-10-22 JP JP2012232839A patent/JP6076686B2/ja active Active
- 2012-10-22 EP EP12189414.1A patent/EP2587384B1/en active Active
- 2012-10-26 CN CN201210418444.8A patent/CN103218329B/zh active Active
- 2012-10-26 CN CN201710078663.9A patent/CN107066408B/zh active Active
-
2015
- 2015-02-19 US US14/625,719 patent/US9575900B2/en active Active
-
2017
- 2017-02-15 US US15/433,888 patent/US10268377B2/en active Active
-
2019
- 2019-03-25 US US16/363,587 patent/US11372546B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6694385B1 (en) * | 1999-09-10 | 2004-02-17 | Texas Instruments Incorporated | Configuration bus reconfigurable/reprogrammable interface for expanded direct memory access processor |
US7685354B1 (en) * | 2004-06-30 | 2010-03-23 | Sun Microsystems, Inc. | Multiple-core processor with flexible mapping of processor cores to cache banks |
US20080046668A1 (en) * | 2006-08-21 | 2008-02-21 | Newburn Chris J | Technique to perform memory reference filtering |
US20090070785A1 (en) * | 2007-09-11 | 2009-03-12 | Bea Systems, Inc. | Concurrency in event processing networks for event server |
Also Published As
Publication number | Publication date |
---|---|
US20130111159A1 (en) | 2013-05-02 |
TW201333711A (zh) | 2013-08-16 |
US20150161058A1 (en) | 2015-06-11 |
GB2495959A (en) | 2013-05-01 |
EP2587384B1 (en) | 2017-07-12 |
US8990522B2 (en) | 2015-03-24 |
US20190220199A1 (en) | 2019-07-18 |
US9575900B2 (en) | 2017-02-21 |
CN107066408B (zh) | 2020-10-30 |
CN103218329B (zh) | 2017-04-12 |
US10268377B2 (en) | 2019-04-23 |
JP6076686B2 (ja) | 2017-02-08 |
EP2587384A1 (en) | 2013-05-01 |
CN103218329A (zh) | 2013-07-24 |
CN107066408A (zh) | 2017-08-18 |
US11372546B2 (en) | 2022-06-28 |
JP2013093026A (ja) | 2013-05-16 |
GB201118534D0 (en) | 2011-12-07 |
US20170160947A1 (en) | 2017-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI571744B (zh) | 數位信號處理資料傳送技術 | |
US11531543B2 (en) | Backpressure control using a stop signal for a multi-threaded, self-scheduling reconfigurable computing fabric | |
US11573796B2 (en) | Conditional branching control for a multi-threaded, self-scheduling reconfigurable computing fabric | |
US11010161B2 (en) | Multiple types of thread identifiers for a multi-threaded, self-scheduling reconfigurable computing fabric | |
US11675598B2 (en) | Loop execution control for a multi-threaded, self-scheduling reconfigurable computing fabric using a reenter queue | |
US11275710B2 (en) | Loop thread order execution control of a multi-threaded, self-scheduling reconfigurable computing fabric | |
US11635959B2 (en) | Execution control of a multi-threaded, self-scheduling reconfigurable computing fabric | |
US20190303145A1 (en) | Efficient Loop Execution for a Multi-Threaded, Self-Scheduling Reconfigurable Computing Fabric | |
US11048656B2 (en) | Multi-threaded, self-scheduling reconfigurable computing fabric | |
US20130219130A1 (en) | Method, apparatus, and computer program product for inter-core communication in multi-core processors | |
JP2007133456A (ja) | 半導体装置 | |
TWI521352B (zh) | 用於數位信號處理之記憶體存取技術 | |
WO2024041625A1 (zh) | 多线程处理器的指令分发方法、装置和存储介质 | |
JP3982077B2 (ja) | マルチプロセッサシステム | |
JP2006195598A (ja) | リアルタイム処理システム | |
US9632793B2 (en) | Method and device for aborting transactions, related system and computer program product | |
CN117539801A (zh) | 一种远程访问内存的方法、装置及相关设备 | |
JP2006209480A (ja) | プロセッサおよび情報処理方法 |