用於數位訊號處理的方法、系統和裝置與流程
2023-12-04 21:34:26 1

本申請是2012年10月26日提交的申請號為201210418444.8的同名專利申請的分案申請。
背景技術:
數位訊號處理被廣泛地應用於各種應用。這些應用很多是實時的,數據處理存在時間限制是因為時間限制對終端用戶是有意義的和有用的。這種應用的示例是數字廣播流,例如數位電視和數字廣播。數位訊號處理系統需要能足夠快地處理和解碼實時流以能夠在接收到實時流時(不包括緩存)儘快輸出數據。
除了使用多個通用數位訊號處理器,數位訊號處理系統經常使用一個或多個專用硬體外圍設備。硬體外圍設備是處理模塊,被設計用來以快速和有效的方式執行特定的信號處理任務(例如,特定類型的錯誤糾正)。數位訊號處理系統能以定義的順序地直接連接(例如,硬接線)外圍設備在一起以符合特定類型實時數據的需要。
但是,不同類型的實時數據的要求差別是很大的。例如,世界各地使用的各種不同的數位電視和廣播標準往往有不同結構的實時數據,例如,使用不同的類型或不同的用於編碼、交織、均衡等的參數。因此,如果使用專用的互聯的硬體外圍設備,則需要為每一種實時數據的類型構造不同的數位訊號處理系統。
以下描述的實施例不僅限於解決已知的數位訊號處理系統中任何或所有缺點的實現。
技術實現要素:
提供本部分以簡化的方式介紹一部分概念,所述概念將在下面進一步地詳細描述。本部分並不意圖確定所述權利要求主題的關鍵特徵或基本特徵,也並不意圖作為輔助來確定所述權利要求主題的範圍。
本文描述了一種用於在數位訊號處理系統中傳輸數據的技術。在一個示例中,所述數位訊號處理系統包括若干硬體外圍設備,每一個所述硬體外圍設備連接到存儲器訪問控制器並且每一個所述硬體外圍設備都被配置為從存儲器設備讀取數據,執行對數據的一個或多個操作,並且寫入數據到所述存儲器設備。為避免將所述硬體外圍設備硬接線在一起,並且為了提供可配置的數位訊號處理系統,多線程處理器控制在所述硬體外圍設備和所述存儲器之間的所述數據傳輸。每一個處理線程被分配了存儲器訪問通道並且這些線程被配置為檢測事件的發生,響應於所述事件的發生,控制所述存儲器訪問控制器使所選的硬體外圍設備通過所述線程的存儲器訪問通道從所述存儲器設備讀取數據或寫入數據到所述存儲器設備。
根據一個方面,提出了一種數位訊號處理系統,包括:存儲器設備、存儲器訪問控制器、多個專用硬體模塊和處理器,其中所述存儲器訪問控制器提供多個用於訪問所述存儲器設備的通道,所述多個專用硬體模塊每一個都連接到所述存儲器訪問控制器並且每一個都被配置為通過所述通道中的一個從所述存儲器設備讀取數據,執行一個或多個對所述數據的操作,並通過所述通道中的一個寫入數據到所述存儲器設備;處理器耦合到所述存儲器訪問控制器並且被配置為執行多個線程,每一個線程被安排為控制所述通道中的一個,其中至少一個所述線程被配置為檢測事件的發生,並響應於檢測事件的發生,控制利用與線程相關聯的通道從所述存儲器設備到所選的專用硬體模塊的數據的供應。
根據另一方面,提出了一種在數位訊號處理系統中傳輸數據的方法,包括:執行處理器上的多個線程,其中每一個線程獨立地執行序列的操作,包括:等待,直到預定義的事件被檢測到;響應所述預定義事件,通過與該線程相關聯的存儲器訪問通道,控制存儲器訪問控制器使得專用硬體模塊能夠從存儲器設備讀取數據和寫入數據到存儲器設備。
本文描述的方法可以由在有形存儲介質中的機器可讀形式的軟體來執行,所述軟體例如是電腦程式的形式,所述電腦程式包括電腦程式代碼模塊,其當所述程序在計算機上執行並且所述電腦程式可以體現在計算機可讀介質中,適用於執行本文描述的任何方法的所有步驟。有形(或非有形)存儲介質的示例包括磁碟、快閃記憶體盤、存儲卡等並且不包括傳播信號。所述軟體可以適用於在並行處理器或串行處理器中執行使得所述方法的步驟可以以任何適當的順序執行,或同時地執行。
這承認固件和軟體是有價值的、可單獨交易的商品。其意圖是包含軟體,所述軟體控制「非智能」或標準的硬體或在其上運行,以執行所需的功能。其還意圖包括「描述」或定義硬體的所述配置的軟體,例如hdl(硬體描述語言)軟體,所述軟體用於設計矽晶片,或用於配置通用可編程晶片來執行所需的功能。
上述的特徵可以進行適當的組合,這對於本領域的技術人員來說顯而易見的,並且上述的特徵可以與示例中的任何方面進行組合。
附圖說明
將參考下列附圖以示例方式描述實施例,其中:
圖1示出了可配置的數位訊號處理系統;
圖2示出了所述可配置數位訊號處理系統對示例性實時信號執行的序列操作;
圖3示出了用於所述可配置數位訊號處理系統的控制信令結構;
圖4示出了示例性事件標誌引擎結構;
圖5示出了由在控制信令結構中對事件進行動作的線程執行的方法的流程圖;
圖6示出了示例性的基於線程的配置和用於硬體外圍設備的數據傳輸;和
圖7示出了用於控制圖6中所述硬體外圍設備的示例性隊列集合、標誌和指令。
貫穿於圖中使用的共同的標號指示類似的特徵。
具體實施方式
僅用示例方法描述下面的實施例。這些示例表示了本申請目前已知的、用於將所述實施例付諸於實踐的最佳方法,雖然這些方法可能不是實現最佳方法的唯一方法。描述闡述了示例的功能以及用於構造和操作示例的步驟序列。但是,可以由不同的示例完成相同的或等同的功能和序列。
下面描述的是可配置的數位訊號處理系統,所述數位訊號處理系統使用了通用數位訊號處理器和專用硬體外圍設備二者,這就避免了將這些元件硬接線為特定的結構,因而避免了限制系統的可配置性。這可以用如下方式實現:利用快速的數據傳輸系統,以快速和有效的方式使硬體外圍設備能被配置並被用來處理數據。所述數據傳輸系統利用了多線程處理器的組合有效的信令系統,其中所述多線程處理器的組合用來控制存儲器傳輸到硬體外圍設備或控制從硬體外圍設備傳輸到存儲器,所述信令系統使系統元件通信事件的發生。這使數位訊號處理系統能被有效地配置以適應不同的標準,同時保持處理實時數據所需的計算性能。
首先參考圖1,圖1示出了示例性可配置數位訊號處理系統的結構。系統包括用於存儲數據的存儲器設備102。在圖1的示例中,存儲器設備102能被用來存儲正在被處理的數據和用於操作數位訊號處理系統的配置數據二者。在其他的示例中,這兩類數據能在不同的存儲器設備之間被分開。存儲器設備102可以是任何適當形式的隨機訪問存儲器(ram)。
連接到存儲器設備102的有一個或多個數位訊號處理器(dsp)104。dsp104是可編程的處理器,比如用來執行對數據的信號處理計算,例如快速傅立葉變換和均衡。當不考慮通用存儲器時,dsp104與下面描述的硬體外圍設備相比是可配置的。dsp104執行程序代碼/指令來從存儲器設備102讀取數據,對數據執行信號處理操作並且將數據寫回到存儲器設備102。
連接到存儲器設備102的還有存儲器訪問控制器106,所述存儲器訪問控制器106用來為多個硬體外圍設備108提供對存儲器設備102的訪問。在一些示例中,存儲器訪問設備106可以是直接存儲器訪問(dma)控制器的形式。存儲器訪問控制器106提供了多個存儲器訪問通道(例如,dma通道),所述通道能被硬體外圍設備108使用,使其能夠從存儲器102中讀取數據或寫入數據到存儲器102。注意除了在硬體外圍設備和存儲器設備之間傳輸數據,在一些示例中存儲器訪問控制器也能被配置為從一個硬體外圍設備直接向另一硬體外圍設備傳輸數據。
如上面所指出的,硬體外圍設備108是專門的、專用的硬體模塊,被配置為執行特定的信號處理任務。例如,一個硬體外圍設備可能是專門的維特比解碼塊,而另一硬體外圍設備可能是專門的去交織塊。硬體外圍設備也可被稱為固定功能加速器。每一個硬體外圍設備都獨立於彼此而執行。通過向硬體外圍設備提供專用於特定任務的操作參數,可以配置硬體外圍設備,但是它們不能被設置為改變其任務(例如,維特比模塊不能被重新配置為去交織塊)。因此,相對於dsp104,硬體外圍設備更適合處理特定的任務。但是,硬體外圍設備被安排成以非常快速和有效的方式執行其專門的任務。
連接到存儲器設備102的還有通用控制處理器110,所述通用控制處理器110能被用來初始化、配置和控制數位訊號處理系統的操作,將在下面詳細描述。
上面描述的數位訊號處理系統在信號處理操作中提供了靈活性。例如,該系統能被安排以操作使得不同的dsp104和硬體外圍設備108以任意期望的配置或順序處理數據。每一個硬體外圍設備或dsp能夠操作一個或多個數據塊(此處也稱為數據緩存),所述數據塊由系統其它部分提供並存儲在存儲器設備中,並且產生和存儲一個或多個系統其它元件使用的數據緩存。這使數位訊號處理系統能被用於各種不同類型的信號,例如,不同的廣播/電信標準的信號。
圖2示出了圖1中的系統如何被配置為處理特定類型的信號。在圖2的示例中,純粹是為便於說明,系統用於處理輸入的數位電視信號。數位化的基帶信號被數位訊號處理系統接收,並且系統被配置為使用第一dsp執行快速傅立葉變換(fft)來首先處理該數據,第一dsp用dsp(0)202表示。隨後第二dsp對dsp(0)202輸出的數據執行均衡和逆映射,第二dsp用dsp(2)204表示。接著硬體外圍設備hw(1)206對數據執行去交織,然後將其傳輸到另一硬體外圍設備hw(3)208,所述硬體外圍設備hw(3)208執行維特比解碼。下一硬體外圍設備hw(0)210從維特比解碼取得數據並執行裡德-索羅門解碼。解碼的數據可以被額外的dsp、硬體外圍設備或被其他所需的但圖2中未示出的處理器進一步處理。
圖2中的示例示出了圖1中系統的不同模塊如何被組合在一起來形成整個信號處理系統,所述信號處理系統適用於特定類型的信號。因為圖2中的模塊沒有被硬連線到一起,而是使用圖1中的存儲器設備102來交換數據,所以同樣的信號處理系統能被配置為以不同的方式操作不同類型的信號。
對於圖1中的系統操作圖2示出的類型序列,一旦硬體外圍設備或數位訊號處理已經完成處理,則對新生成的數據進行操作的下個硬體外圍設備被配置和激活來執行它們的處理操作。這些硬體外圍設備的任何配置和激活的延遲會降低系統的吞吐量,這對於實時信號的情況是不利的。因此這些延遲應該被最小化,這可以利用控制信令結構來實現,所述控制信令結構參考圖3並在下面描述。
圖3示出了用於可配置數位訊號處理系統的控制信令結構,所述系統能使該系統的不同元件以快速和有效的方式傳遞消息和信令。這種結構還能使元件快速地對事件做出反應,使得硬體外圍設備在需要沒有顯著的延遲時能被配置且被激活。
由多線程處理器302控制硬體外圍設備108的配置和激活,所述多線程處理器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在下面將更詳細地描述。事件標誌引擎304被安排來當數位訊號處理系統內發生特定的事件時通知多線程處理器302。線程能從事件標誌引擎304讀取信息並相應地對其做出反應。例如,線程可以執行「等待」指令,其使得線程操作的執行暫停直到事件(由數據標誌引擎通知)發生。當事件發生時,這使得線程激活和執行等待指令之後的線程的指令/操作。
這可以用來快速地向硬體外圍設備傳輸數據或從硬體外圍設備傳輸數據。特定的線程能被安排來等待事件(例如前面的系統元件完成處理),並響應事件的發生,使用與該線程相關聯的存儲器訪問通道,控制存儲器訪問控制器傳輸配置數據並且數據將被硬體外圍設備處理。另一線程則被安排為等待該數據被硬體外圍設備處理,隨後使用與線程相關聯的存儲器訪問通道,控制存儲器訪問控制器來將處理的數據傳輸回存儲器設備。這個示例將參考圖5至圖7進行更詳細的描述。
爭用管理技術能通過給每一線程分配優先級來實現。例如,如上面提出的,每一個線程被分配了從0到k的序列標識符。在多於一個線程在同一時間執行衝突使得它們不能全部地執行其操作情況下,則給線程分配比如最低級的標識符。顯然,在可選的示例中,可以應用不同的優先級系統,比如最高級的標識符。系統能被配置使得最重要的或系統關鍵的硬體外圍設備被最高優先級的線程處理來確保它們在爭用情況下得到服務。
通過獨立執行線程管理每一個存儲器訪問通道,響應時間要顯著地快於普通單線程處理器管理去往/來自硬體外圍設備的數據的所有傳輸的響應時間。此外,線程能被安排以使等待指令放置在其控制軟體中的點,這樣減少了下個系統元件被激活之前的延遲。例如,儘可能多的操作可被放置在等待指令之前,使這些操作能在等待事件之前被線程執行,因而減少了事件發生後需要執行的操作的數量。換句話說,線程儘可能地執行預計算。
除了多線程處理器302,dsp104和通用控制處理器110也接收來自事件標誌引擎304的輸入,使這些元件也能對事件做出響應。這在下面更詳細的概述。
為了使數位訊號處理系統的元件對事件做出響應,有效的信令系統被用來使系統的不同元件之間能夠通信。信令系統基於一組隊列306,其攜帶了系統部件之間的信號。在示例中,隊列306能包括多個fifo隊列。每一個隊列能夠保持多個與信息相關的數據項,被從一個系統元件傳遞到另一個系統元件。例如,隊列中的信息可以指示數據已準備好被特定的硬體外圍設備或dsp處理。數據項可以是如下形式:比如指令地址或其他標識符、分支標籤、存儲器地址或任意其他類型的系統元件希望將其傳遞到另一元件的信息。
數據項能通過多線程處理器302、dsp104或通用控制處理器110寫入隊列。另外,在任何隊列頭部的數據項能被多線程處理器302、dsp104或通用控制處理器110讀取,並且任何隊列頭部的數據項能被任何的這些系統元件移除。多線程處理器302、dsp104和通用控制處理器110使用數據總線讀取、寫入和/或修改隊列306。由總線仲裁器308管理對總線的訪問,所述總線仲裁器308處理總線的爭用。
每一個隊列具有相關聯的通知邏輯(圖3未示出)。通知邏輯被安排為斷言一標誌(或任何其他適當的二進位指示符)以指示其相關聯的隊列何時包含至少一個項目。換句話說,標誌指示其相關聯的隊列是空的還是非空的。
來自隊列的通知邏輯的標誌被提供給事件標誌引擎304。事件標誌引擎304也能接收其它標誌(例如指示硬體外圍設備或埠的狀態)形式的輸入。一般來說,事件標誌引擎304作為矩陣或網格,其將對其中的信息進行響應的隊列與處理元件相聯繫。在一些示例中,可以由通用控制處理器110設置在隊列、線程和dsp之間的事件標誌引擎304的連接性。
在圖4中可以看到可配置邏輯的類型的示例,其中所述可配置邏輯能被應用於事件標誌引擎304。在一些示例中,任意dcp線程都能夠檢查提供給事件標誌引擎的任意標誌的狀態,如402所示。這使任意線程都被配置為等待任意標誌被斷言(指示在特定隊列中存在數據項)。此外或可選地,布爾邏輯的層級可被應用於標誌以使得各種標誌能夠被組合,使得僅在定義情況的集合時,事件被通知到系統元件。
例如,圖4示出了邏輯門404的組合,所述組合被用來向dsp(0)提供事件通知。在其他示例中,類似的門的組合可被用來向任何其他處理元件提供事件通知,例如在多線程處理器302、通用控制處理器110或其他dsp104上的dcp線程。在圖4的示例中,通過將「與門」層連接在「或門」層之後構造形成門404,其中在門之間有可配置的連接。
在這個示例中,第一與門406從表示的與隊列相關聯的標誌q1和表示的與隊列相關聯的標誌q3接收輸入。因此,如果這些標誌被斷言,即,指示這兩個隊列都具有項目,則與門406輸出為「真」。類似地,第二與門408從q7和f3接收輸入,其中q7表示與隊列相關聯的標誌,f3表示不與隊列相關聯的另一標誌,例如指示硬體外圍設備的狀態。再次說明,如果這兩個標誌被斷言,則與門408輸出為「真」。
來自兩個與門406、408的輸出被提供給或門410。或門410還直接從q12表示的另一隊列標誌接收第三輸入,而沒有通過與門傳遞。因此,當或門410的三個輸入中一個或多個被斷言時,或門410的輸出被斷言。來自或門的輸出被提供給dsp(0)(在本示例中),用於指示一事件以及觸發一動作。
在一些示例中,從或門接收輸出的系統元件想知道或門的哪個輸入或哪些輸入使輸出被斷言。這是因為元件可以依賴於什麼使得或門的輸出被斷言而執行不同的操作。為實現這一點,可以包括額外的邏輯(圖4未示出)來將其指示給處理元件。例如,這個邏輯可以採用多路轉換器的形式。
此外,因為可以同時斷言一個以上的或門的輸入,優先級系統可被應用於或門輸入來決定系統元件對哪一個事件進行響應。例如,在圖4中,或門410有三個輸入,在三個輸入中,頂部輸入412(如圖所示)被分配了最高優先級,底部輸入414為最低優先級,和中部輸入416有中間的優先級。因此,當或門輸入被斷言時,處理元件能使用額外的邏輯電路來確定哪一個或門輸入被斷言並對最高優先級的輸入進行響應。因為標誌、與門、和或門輸入之間的連接是可配置的,所以它們可被配置使得最重要的標誌被連接到最高優先級的或門輸入。
上面描述的事件標誌引擎結構實現了以靈活的方式向不同的處理元件通知系統中發生的事件(例如在隊列中等待的信息)。邏輯門的使用是非常快速的,從而確保了通知具有低延遲,並且或門輸入的優先級使處理元件能對最緊急的事件進行響應。如上面提出的,根據系統的需求,可以為任意系統元件配置根據上文描述的門的不同組合和標誌。
現在參考圖5至7,示出了示例性過程,其示出了其中線程和信令結構如何一起工作以配置和使用硬體外圍設備以對數據緩存執行一些處理。首先,圖5示出了在多線程處理器302上執行的線程執行的操作的高等級流程圖。在步驟502,線程等待預定義的事件發生。如上面提出的,這是由事件標誌引擎304定義的,所述事件標誌引擎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(2)604被當作「從」線程,其被dcp(1)602控制。這可以通過如下方式實現:dcp(1)602通過一個或多個隊列306將信號發送給dcp(2)604,使得dcp(2)執行所需的指令,如下面的圖7中更詳細的描述。硬體外圍設備hw(1)206包括配置寄存器606和數據存儲608,其中所述配置寄存器606裝有配置硬體外圍設備的數據,所述數據存儲608用於保持正在被處理的數據。注意在一些示例中,硬體外圍設備數據存儲608可以是內部的緩存,但是也可以是管道緩衝區的形式,所述管道緩衝區保持正在被處理的輸入和傳出的數據。使用管道緩衝區避免了硬體外圍設備需要保持所有的待處理數據,並且也意味著可以並行執行輸入和輸出dma操作。
三塊數據被存儲在存儲器設備102並用在這個操作中。第一塊數據是dma配置數據610。dma配置數據610包括由線程載入存儲器訪問控制器106的數據,以便配置和啟動去往或者來自硬體外圍設備的數據傳輸。這是下面詳細描述的概述。第二塊數據是硬體外圍設備寄存器配置數據612。這個數據塊包括用於配置硬體外圍設備來執行特定任務的數據,並且通過存儲器訪問控制器106對特定的dma配置數據610的響應,這個數據塊被載入硬體外圍設備配置寄存器606。第三塊數據是數據緩存614,所述數據緩存614包括將要被或者已經被硬體外圍設備處理的數據。通過存儲器訪問控制器106對特定的dma配置數據610的響應,該數據塊被載入到硬體外圍設備數據存儲608或從硬體外圍設備數據存儲608中讀取。
對使用圖6中結構的示例性操作的操作如下。線程dcp(1)602對事件進行響應並使得hw1regdma616表示的dma配置數據610的塊從存儲器設備102被加載到存儲器訪問控制器106。hw1regdma616配置數據包括四個數據項:(i)在存儲器設備102中的存儲器地址,保持硬體外圍設備寄存器配置數據,在本示例中用hw1regconfiga618表示;(ii)在硬體外圍設備中的寄存器地址,指示何處的硬體外圍設備寄存器配置數據應被加載,在本示例中用hw1regstart表示;(iii)模式指示符,指示傳輸的方向,即存儲器設備向硬體外圍設備的方向或相反方向,在本示例中用mem2perip表示;和(iv)長度值,指示正在被傳輸的數據的長度,在本示例中用hw1numregs表示。
加載hw1regdma616到存儲器訪問控制器106使得,利用與線程dcp(1)602相關聯的存儲器訪問通道,存儲器訪問控制器106開始從指定的存儲器地址hw1regconfiga618(其為硬體外圍設備寄存器配置數據612的一部分)傳輸數據到硬體外圍設備的寄存器606。hw1regconfiga618包括多個數據項,所述數據項配置硬體外圍設備的寄存器來執行所需任務。
一旦硬體外圍設備hw(1)被以這種方式配置,則線程dcp(1)使得dma配置數據610的第二塊,其用hw1indma620表示,被從存儲器設備102加載到存儲器訪問控制器106。hw1indma620配置數據又包括了四個數據項:(i)在存儲器設備102中的存儲器地址,用於保持數據緩存,在本示例中用hw1ipa622表示;(ii)在硬體外圍設備中的寄存器地址,指示何處的數據緩存應該被加載,在本示例中用hw1inreg表示;(iii)模式指示符,指示傳輸的方向,即存儲器設備向硬體外圍設備的方向或相反方向,在本示例中用mem2perip表示;和(iv)長度值,指示正在被傳輸的數據的長度,在本示例中用hw1joblength表示。
加載hw1indma620到存儲器訪問控制器106使得存儲器訪問控制器利用與線程dcp(1)602相關聯的存儲器訪問通道,開始從指定的存儲器地址hw1ipa622(其為數據緩存614的一部分)傳輸數據到硬體外圍設備數據存儲608。注意線程dcp(1)602被用於傳輸配置數據和數據緩存二者到硬體外圍設備。hw1ipa622包括按照其配置由硬體外圍設備操作的數據。
上面的操作涵蓋了使用dcp(1)602輸入數據到硬體外圍設備206。在下面描述dcp(2)604控制從硬體外圍設備外發的數據的傳輸。在一些示例中,用於傳輸從硬體外圍設備外發的數據的存儲器訪問通道的啟動和建立可在數據被輸入硬體外圍設備之前執行。dcp(1)602(主線程)使得dcp(2)604(從線程)能夠控制dma配置數據610的第三塊(其用hw1outdma624表示)從存儲器設備102被加載到存儲器訪問控制器106。hw1outdma624配置數據還包括四個數據項:(i)在存儲器設備102中緩存數據的存儲器地址,在本示例中用hw1opa626表示;(ii)在硬體外圍設備中的存儲器地址,指示何處的數據緩存被加載,在本示例中用hw1outreg表示;(iii)模式指示符,指示傳輸的方向,即存儲器設備向硬體外圍設備的方向或相反方向,在本示例中用perip2mem表示;和(iv)長度值,指示正在被傳輸的數據的長度,在本示例中用hw1joblength表示。
加載hw1outdma624到存儲器訪問控制器106使得存儲器訪問控制器利用與線程dcp(2)604相關聯的存儲器訪問通道,開始從指定的硬體外圍設備存儲器地址hw1outreg622(其為數據存儲608的一部分)傳輸數據到存儲器設備102的數據緩存614。注意是使用線程dcp(2)604(不是dcp(1))來從硬體外圍設備向外傳輸。hw1opa626包括按照其配置由硬體外圍設備處理的數據。
因此,圖6示出了與線程相關聯的存儲器訪問通道如何管理去往或來自硬體外圍設備的數據的移動。因為通過對配置數據的預定義塊進行直接存儲器傳輸實現硬體外圍設備的配置,所以可以非常快速地執行這種配置,從而最小化配置的延遲。注意雖然以上圖6的描述概述了所執行操作的特定序列,但在一些示例中這種序列可以是不同的,例如可以對序列的一些方面進行流水線處理以便於更快速的操作。
現參考圖7,圖7示出了一組示例性隊列狀態和能被線程執行的指令以實現如圖6示出的相同過程。在本示例中,列702示出了q2表示的(僅用於說明目的)隊列的內容。本示例中的過程在項目「hw1inhandler」被放置到q2時開始。這可以由例如完成任務並產生數據以由hw(1)進一步處理的另一系統元件而引發。hw1inhandler放置在q2使得與q2相關聯的標誌被斷言,如列704所示。標誌被提供給事件標誌引擎304,所述事件標誌引擎304被配置為向線程dcp(1)通知事件發生。事件標誌引擎304設置orvec表示的寄存器的值來指示哪個隊列引發導致事件的標誌(例如,如上面描述的從或門的輸入)。orvec的狀態在列706中示出,並且列706中示出了引發事件的隊列的標識是2。
列708示出了由線程dcp(1)執行的示例性偽代碼。dcp(1)被配置為當事件由事件標誌引擎304通知時,執行標籤為「despatcher」的例程。despatcher代碼讀取orvec的值(例如2)並且存儲為變量qnum。然後despatcher代碼用標識qnum(即q2)讀取隊列的頭部的數據項並存儲為變量startaddrm(這個變量有值hw1inhandler)。通過清除分別如列702和列704所示的項目和標誌二者,在q2頭部的項目被移除。despatcher代碼則指示線程跳轉到從隊列頭部讀取的標籤(即hw1inhandler)的代碼部分。
hw1inhandler代碼對配置文件進行控制,並將數據讀入硬體外圍設備中。但是,開始是通過準備另一線程來管理從硬體外圍設備輸出的數據使其在適當的時候準備好執行。換句話說,主線程dcp(1)觸發從線程dcp(2)來準備向其他方向傳輸數據。這通過向示例性隊列q4寫入數據項「hw1outhandler」完成,其狀態在列710中示出。這使得用於列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)的配置。這使得配置塊hw1regdma616被加載到存儲器訪問控制器106並且配置被傳輸到硬體外圍設備,如上面參考圖6的描述。線程dcp(1)等待這個操作結束,並用命令startdmajob(hw1indma)啟動數據緩存從存儲器設備102向硬體外圍設備hw(1)傳輸。這使得配置塊hw1indma620被加載到存儲器訪問控制器106並且數據緩存被傳輸到硬體外圍設備,如上面參考圖6的描述。數據緩存隨後被硬體外圍設備處理。再次地,線程等待這個操作結束,並等待q5通知從線程dcp(2)已經結束。
再次返回到列714中的線程dcp(2),hw1outhandler代碼被線程dcp(2)執行,通過startdmajob(hw1outdma)命令,dcp(2)啟動處理後的數據(當準備好時)從硬體外圍設備hw(1)傳輸到存儲器設備。這使得配置塊hw1outdma624被加載到存儲器訪問控制器106並且數據緩存被傳輸給存儲器設備102,如上面參考圖6的描述。線程dcp(2)等待這個操作結束,並通過將值「finished」寫入q5通知dcp(1)。這由列716中q5狀態示出並且其相關聯的標誌在列718一直被斷言。線程dcp(2)則通過分支返回到標籤「slavewait」恢復到等待。
如上面提出的,主線程dcp(1)一直等待q5標誌被斷言,並且對此響應清除了q5和q5的標誌。線程dcp(1)通過將下一個起始地址(用nextstartaddr表示)的值寫入到下一個正在被使用的隊列(用nextq表示)來通知下一個系統元件硬體外圍設備操作已經完成。dcp(1)隨後返回到despatcher代碼,並且當接下來q2被寫入時,重複此過程。
上面描述的操作示出了執行線程如何進行響應並使用隊列中的信息來管理去往硬體外圍設備和從硬體外圍設備的數據的傳送和配置。代碼是緊湊的並可以迅速地執行,但又足夠靈活來使數位訊號處理系統被配置以用於不同類型的數據、硬體外圍設備和處理需求。信令系統授予處理器資源共享的優先級,並且處理器處理事件的日常開銷是非常低的,同時仍然可以使系統元件對最重要的事件作出反應。
本文中使用的詞語「處理器」和「計算機」是指任何具有處理能力使得其可以執行指令的設備。本領域的專業人員將認識到這樣的處理能力被結合到很多不同的設備中,因而詞語「計算機」包括機頂盒、多媒體播放器、數字收音機、個人電腦、伺服器、行動電話、個人數字助手和很多其他設備。
本領域的專業人員將認識到用來存儲程序指令或數據的存儲設備可以被跨網絡地分布。例如,遠程計算機可以存儲描述為軟體的示例性過程。本地的或終端的計算機可以訪問遠程計算機並下載部分或全部的軟體來執行程序。可選地,本地計算機可以下載所需要的軟體片段,或執行一些軟體指令在本地終端中和執行一些在遠程計算機中(或計算機網絡中)。本領域的專業人員還將認識到通過利用本領域的專業人員所知的常規技術,全部或部分的軟體指令可以由類似於專用電路、可編程邏輯陣列來執行。
在不失去所尋求的效果的情況下,本文給出的任何範圍或設備值可以被擴展或者改變,這對本領域技術人員而言將是顯而易見的。
需要明確的是上面描述好處和優點可能是與一個實施例或可能是與數個實施例相關的。實施例並不限於解決任何或所有上述的問題的那些實施例,或那些具有任何或所有的上述的好處和優點的實施例。
任何引用「一個」項是指一個或多個這些項。本文中使用的詞語「包括」意味著包括塊或元件確定的方法,但這些塊或元件不包括排除列表並且方法或設備可以包含額外的塊或元件。
本文描述的方法的步驟可以以任何適當的順序執行,或在適當情況下同時地執行。可選地,在不脫離本文描述的主題的精神和範圍的情況下,在任意方法中可以刪除某些塊。在不失去所尋求的效果的情況下,上面描述的任何示例的方面可以與描述的任何其他示例的方面相結合來形成其它示例。
需要明確的是上面對優選實施例的描述僅是通過示例的方式給出,並且本領域的技術人員可以做出各種修改。雖然上面描述的各種實施例有一定程度的特定性,或參考了一個或多個個別的實施例,但是本領域的技術人員可以在不脫離示例精神和範圍的情況對公開的實施例做出眾多變更。