Global Sources
電子工程專輯
 
電子工程專輯 > 嵌入式技術
 
 
嵌入式技術  

複雜元件內部即時可視性的實現方法

上網時間: 2006年04月28日     打印版  Bookmark and Share  字型大小:  

關鍵字:數據採集  data collecting  SoC  系統級晶片  ASIC 

如果在一個系統中你擁有幾個處理器和週邊設備,要開發具有成本效益、可靠的產品,尤其是在今天產品開發時間相當短的條件下,了解這些晶片所有即時動態特性將變得非常重要。目前有許多即時嵌入式系統在多核心ASIC或系統單晶片(SoC)上實現,以利用這些元件所具有的低功耗、低成本和更高整合度的優點。

開發者所擁有的這些標準設計工具大多是根據了解舊有技術產品的內部執行情況來實現的,已經不適用於這些新型的、功能強大的多功能設計了。透過整合,SoC架構在單個晶片上擁有多個處理器、記憶體、週邊設備、控制器和其它重要的子系統組件。高速內部匯流排連接這些不同的組件,整體的性能決定於他們之間的數據串流的高效管理。瓶頸、延遲和對於像匯流排和記憶體等共享資源的競爭這些問題,對於即時數據傳輸來說是致命的。為了獲得最佳性能,開發者應比以前更了解晶片內部執行的具體情況。

然而,對系統組件之間的事務處理的監控不再是像以前那樣連接一個邏輯分析儀或者匯流排分析儀那麼簡單了,因為很多感興趣的訊號深‘埋’在晶片內部。對SoC的可視性必須使用一套軟硬體混合裝置來採集SoC本身內部的數據,並由特徵描述以及關聯工具提供支援,這些工具能協助開發者分析所採集的數據。

過去,設計人員也許曾採用不同的方式實現可視性。很多情況下,這些方式可透過觀察記憶體、系統匯流排和I/O埠來採集資訊。換言之,當評估過程本身影響到結果的時候,要評估匯流排利用率和記憶體競爭情況就很難。主要挑戰是如何在不影響系統性能的情況下採集和上傳數據點。

現實情況

傳統上,當沒有邏輯分析儀可用,或者太難進行設置時,開發人員可使用軟體測試工具來獲得其設計可視性。他們會向目標對象增加除錯程式碼來採集、處理和上傳除錯數據。例如在進入和離開一個函數時打開和關閉某個計時器,無論是過去還是現在,對於透過軟體分析器來對函數進行描述來說,這種方法都是一種的捷徑。

儘管這只需要對測試程式碼增加很少的C語言printf指令、對採集的數據進行格式化,並輸出到一個標準的I/O元件,但此時這些程式碼對程式碼的大小、記憶體利用、緩衝器性能、時序和系統資源競爭都有很大的影響。這些缺點使得printf只適合於測試非即時的控制程式碼。對於即時的或者確定性程式碼,如用在消費性媒體播放器和錄製設備、手持無線通訊設備、電信、機器人技術或汽車應用,則需要採用其它的對系統影響較小的技術,以避免干擾目標程式的執行,或者錯失即時期限。

減少干擾

有很多方法可以在增加可視性的同時減少干擾。從概念上來說,這些方法包含了對一個系統進行監測涉及到數據採集、數據緩衝、上傳來自目標元件的數據、後續處理以及進行顯示等。認真安排這些活動在什麼時候以及哪裡發生,可以將它們對系統性能的影響減到最小。減少與測試程式碼以及數據採集設備相關的記憶體區域,可以讓你採集更多的數據,並增加對系統即時行為測試的精密度或廣度。

一般來說,需要數據點幾倍大小的儲存空間來記錄關聯資訊,這些關聯資訊用於更準確地對其進行瞭解。例如,除了在採集時的數據值,設計人員可能需要標記數據相關聯的變量名字,獲得一個數據採集時間的時間戳記,並注意當在獲得時間戳記時正執行的函數等。有幾種方法用於獲得和組織這種關聯資訊,且不需要依賴printf和其字符串格式化功能。通常在數據中包含pattern,如果你用某種方式來採集數據,你可以推斷出一些這些額外的特性,而不需要將它們包含到緩衝器中。增加可視性的一些方法包括:

1. 記錄格式

如果你在緩衝器中採集一個變量,你不再需要對所採集的什麼變量進行標記。如果你在採集多個值,你可以製作一種記錄格式,每一個值對應一個特定的位置,如此將可避免你不得不對採集內容所做的註解。

2. 多個緩衝器

將相似的數據點放在一起可簡化循環緩衝管理,減少對每個數據點的採集延遲。同樣,如果你依優先級來對數據採集進行隔離,那麼當系統在100%的利用狀態時,你可能使循環緩衝器擷取到非關鍵資訊的溢出,而不是用一個非即時的上傳來弄亂即時系統的時限要求。在任何情況下,你都需要用來標記溢出的機制。並且如果緩衝器存在一些前提條件,如需要重構的時間戳記,則可能追蹤丟失了多少數據。

3. 採樣數據

配置硬體計時器並使其執行對系統的影響很小。無論如何,讀取一個計時器並上傳其值都是具有干擾性的。你對計時器的記錄越頻繁,你的記錄就越準確,但是,你的採集和上傳的干擾就越大。在確實需要更準確的資訊之前,應保持較低的記錄頻率。例如,一個記錄目前哪個函數在執行的週期性分析器能確保得到一個非常準確的程式碼使用百分比情況。這樣的分析器僅收集每個函數調用記錄期間所採集資訊的一部份,所以干擾很小。你也可以按低優先級任務來對數據點採樣,儘管這樣可能使你的結果產生一些偏差。

4. 確定性的數據

如果數據採樣擷取的頻率固定的話,你不必要加入一個時間戳記。作為一種替代選擇,如果數據必須通過一組連續的運算區塊,你只需記錄數據值和時間戳記,因為可以從時間戳記的次序確定實際的程式區塊。如果你擷取幾個值,可能更有效率,以確保數據串流能通過一系列的程式區塊,此時只需記錄函數和時間戳記,並採用數據記錄格式。

5. 動態/智慧記錄

在你對某些資訊感興趣的情況下,可透過只在你需要的時候採集數據,如此可減少數據採集產生的影響。利用幾個除錯標記,可以縮小採集的範圍。這可以透過設置一個特定的標記來實現,這個標記只有在感興趣的情況下才有效,透過這種方法,你不會因為上傳你不需要的資訊使系統過載。這也減少了擷取數據過程的開銷,節約緩衝器空間。設置或檢查一個標記只需要一個或者兩個處理器週期,因此這是非常有用的方法,即使是對於基於硬體的計時器亦是如此。

6. 塊狀記錄

在某些情況下,在不影響執行時有可能可以暫停對象,例如當沒有即時運算時。如果是這樣的話,你可以透過在能安全暫停的情況下觸發一次暫停來‘避免’緩衝期上傳開銷,然後在系統暫停的時候再上傳緩衝器。

7. 依區塊上傳

如果任務比較空閒,你可以在系統沒有完全利用的時候用來上傳緩衝器。儘管這不會減少上傳開銷,但是卻可以將上傳的影響轉移到一個對系統性能影響更小的時段。

8. RTOS監測

對於更複雜的監測,你可以在即時作業系統上找到支援。很多作業系統具有內建的機制和資料庫,能支援晶片上監測硬體,它們很容易配置,同時能為管理循環緩衝器和向外發送數據串流需要的基礎架構提供基本程式碼,並提供用於自監測的Hook函數。透過對記錄過程抽象化以及卸載數據,你可以快速地對監測的對象、監測的方式、監測的頻率、擷取數據的位置以及卸載方式等進行重新配置。在製作自己的基礎來測試你的程式碼之前,應先檢查RTOS提供的內容。

9. 避免存取記憶體和其他系統資源

只有在硬體機制不足的情況下,才應該用軟體方法作為補充,例如當你需要非常大的緩衝器或者當有限的處理降低整體干擾之際。理想的情況是,如果你在不使用系統匯流排或者記憶體的情況下,監測系統匯流排或者記憶體,你將能得到更準確的結果。如果你將採集的數據量控制到最小,就可以避免使用記憶體中的緩衝器,只是透過JTAG或者匯流排直接發送。

10. 數據採集

在過程中監測如果需要採集大量的數據,可以考慮連續採集。注意,因為你在每次執行時會採集到不同的資訊,你無法對結果進行關聯,因為時間戳記包含不同的測試延遲。在考慮從什麼地方開始發現問題的時候,這種方法最好。因為你可以降低概率,也能降低監測的等級。

11. 模組

如果你透過JTAG或者匯流排發送數據,你可以在目標和主機之間放置一個處理模組來處理時間戳記的產生和有限的數據處理。透過將時間戳記的工作卸載到該模組,你可以釋放測試匯流排的頻寬,用來發送更多的資訊。模組也是實現完全無干擾監測的非常有效的方法。例如,模組可以監測系統匯流排,監測測試匯流排上某個特定的記憶體地址範圍,或者使用直接記憶體存取(DMA)來觸發一次準即時的數據區塊擷取。

特定不同即時應用的特性,你將希望測試不同的採集方案,來確定哪些組合能實現最小的干擾的最高可視性。例如,如果你有多餘的記憶體,你可以增加緩衝器大小。這取決於你採集什麼樣的數據以及採集多少數據。

硬體輔助監測

在某些情況下,測試程式碼可能會對系統產生很大的影響,或是不夠準確,或是不能簡單地獲得流過複雜SoC之數據串流的動態特性所需要的資訊。目前,越來越多的SoC架構已包含用於輔助監測元件的硬體執行功能,以滿足這些需求:

1. 事件計時器

運用軟體監測一個事件時,並不容易發現很多細微細節。例如,記錄某個特定的CPU核心在等待存取共享資源(例如外部記憶體)時停止的次數,就無法採用軟體來實現。包含一些設置很好的計時器的硬體設計,能以很低的額外成本實現對系統動態特性的深入了解。數據可以透過除錯器的JTAG介面讀出,或者被週期性的讀出,例如,由軟體中的背景任務讀出並寫入到緩衝器中,以便在稍後的時間進行查詢。

2. 高水印計時器

開發者必須瞭解元件執行時的極限惡劣狀況,如服務中斷的最大時間,或輸入數據中的最小和最大抖動。高水印計時器(high-watermark counter)提供了能被配置為監測特定匯流排事件,並鎖存最大(高水印)或最小(低水印)時間參數的硬體。在不需要太大的開銷情況下,他們能提供非常寶貴的統計數據,否則需要用目標軟體來實現,或採集數據並發送到外部以作後續處理。

3. 追蹤

追蹤的成本雖然很高,但卻是非常有用的硬體輔助監測方法。在這種方法中,匯流排事務被記錄在專用的晶片上記憶體中,這樣一來,可以擷取導致產生一個事件的最後的N個匯流排事務。

上傳擷取的數據

一般來說,你會上傳數據到一個開發系統中(例如電腦),或者上傳到一個監控模組作進一步分析。一旦你確定需要採集什麼樣的除錯資訊,以及如何採集以盡量減少干擾,你必須決定如何從晶片向外發送數據-理想的情況是在應用程式還在執行時能夠發送。

你能做的就是在緩衝器深度和上傳頻率之間做出折衷。你的除錯數據緩衝器越小,上傳數據的頻率越高。頻繁上傳將對系統性能產生持續的影響。如果你有一個用於緩衝記憶體除錯數據的大記憶體,你採集數據時對系統性能的影響就會較小。然而,更大的緩衝器需要更多的目標記憶體,在元件執行期間上傳數據對系統性能的影響將更顯著。

在現場應用中,透過像串列匯流排、TCP/IP連接或USB埠等系統埠上傳數據可能非常有用。增加的數據運算量不僅消耗這些埠的頻寬,但也佔用處理器週期,不過,它們可用來處理協議並完成數據傳輸。

當你採集的數據比晶片上能即時提供的數據還多時,你無可避免會在擷取的數據中導入空隙。在這些情況中,有必要週期性地插入足夠的關聯資訊,以確保能成功地對在最終從晶片上擷取後的數據進行解碼。對數據封包或導入週期性的‘同步點’是在數據串流中提供這種額外資訊的兩種方法。你可以作為數據上傳過程的一部份來完成這個工作,這樣冗餘的資訊就不必儲存在晶片上。

如果在一個SoC中多個CPU核心共同工作,經常需要平行地對每個核心上傳擷取的資訊,以便展現完整的系統運作情況。如果多個上傳路徑不可用,你在上傳之前就必須將來自多個核心的數據整合起來放到一個緩衝器中,或是將它們依照某種方式再使用以共享上傳路徑。同樣地,針對這些問題作處理的最佳方法,必須考慮系統的動態特性和數據的相對重要性。如果有很多相對不重要的數據來自其中的一個核心,而另外一個核心偶爾會發送一些重要資訊,你必須採用能確保重要資訊能優先於次要資訊的方法。

可視化及分析

從SoC元件中產生的原始資訊轉換成一種易於瞭解的格式,對SoC本身是極大的挑戰。能採集到的數據種類、用於採集這些數據需要的特定硬體機制以及各類不同的應用,用戶需要解決所有這些特殊的問題,這就使得製作一個通用的可視化工具非常具有挑戰性。模組和定製化工具能進行定製,使其能用於特定的硬體、軟體和要解決的問題領域,這通常是克服這些挑戰所需的靈活性的最佳方法。使用一種模組化的框架使其很容易將來自不同的數據串流的數據進行關聯,針對特定類型的資訊分析關聯的數據,並以一種易於瞭解的形式顯示這些從數據中得到的資訊。這裡描述了這種框架應該提供的一些功能類型實例:

1. 關聯數據點

在解決一個多處理器SoC中的瓶頸、競爭或者負載均衡這類系統級問題時,你可能需要從多個處理器和加速器採集數據。在這種情況下,重構系統行為需要將多個記錄關聯到一個時間線。在某些系統上,系統時脈的實用性較高,因而可以簡化這個問題。對另外一些系統,則必須利用像DMA這樣的系統資源,透過從其它核心存取的方式利用時脈。如果公共時脈不可行,可以使用其他機制來週期性地同步多個核心的時間。其中的一個方法是使用中斷以將一個同步時間戳記透過共享記憶體傳遞。可視化工具可以適應這些不同的記錄關聯方法。

2. 分析基礎架構

一種模組框架能將常見的分析活動製作成模組,這些模組能用來實現很多不同的分析和可視化工具,例如:一種普通的可定製數據轉換器和表格,可以很容易用於製作一種消息記錄瀏覽器;一種能夠將基於一事件或者時間戳記的多個數據串流關聯起來的分析模組,可作為一個建構區塊,來建構送往其它分析模組的數據;一種用來分析過去一段時間的高水位標誌模組能為特定應用的數位儀表板(Dashboard)、頻寬利用率監測器等提供一些基本依據。

3. 可擴展性

儘管可以用一些普通組件來評估所採集的大量數據,但最好是能夠構造定製組件來擴展工具的環境。

4. 可配置性

可視化工具對於從大的緩衝器上傳中擷取有意義的資訊非常關鍵,開發者需要可配置工具來強調特殊的差異性和數據峰值以發現一般的行為和異常的行為。為了從目標對象上卸載數據處理,所用工具應該提供允許將智慧特性建構到工具中的可程式基本功能,並減少需要採集的數據量。還應提供足夠的控制以確定在任何特定的時間,來規定應該採集什麼樣的數據。

看看現實

獲得對即時SoC系統內部的可視性的挑戰當然並不是微不足道的小事。採集足夠的資訊以產生不需校正且有意義的結果,需要的是系統級的方法。使用軟體工具庫,利用硬體輔助監測以及對數據如何從晶片上發送出來的管理,增加準確性、寬度、深度和採集數據的粒度,使得開發者能採集更多的可靠資訊。新的靈活工具套件和軟體開發策略,將協助開發者因應具有高精密度和高可信度、即時應用且相當複雜的SoC架構挑戰。

作者:Brian Cruickshank

軟體架構師

Imtaz Ali

工程經理

德州儀器公司




投票數:   加入我的最愛
我來評論 - 複雜元件內部即時可視性的實現方法
評論:  
*  您還能輸入[0]個字
*驗證碼:
 
論壇熱門主題 熱門下載
 •   將邁入40歲的你...存款多少了  •  深入電容觸控技術就從這個問題開始
 •  我有一個數位電源的專利...  •  磷酸鋰鐵電池一問
 •   關於設備商公司的工程師(廠商)薪資前景  •  計算諧振轉換器的同步整流MOSFET功耗損失
 •   Touch sensor & MEMS controller  •  針對智慧電表PLC通訊應用的線路驅動器
 •   下週 深圳 llC 2012 關於PCB免費工具的研討會  •  邏輯閘的應用


EE人生人氣排行
 
返回頁首