TW201333681A - 在一多重核心處理器架構內的監視執行緒執行過程的方法以及執行緒層級偵錯控制器 - Google Patents

在一多重核心處理器架構內的監視執行緒執行過程的方法以及執行緒層級偵錯控制器 Download PDF

Info

Publication number
TW201333681A
TW201333681A TW102117391A TW102117391A TW201333681A TW 201333681 A TW201333681 A TW 201333681A TW 102117391 A TW102117391 A TW 102117391A TW 102117391 A TW102117391 A TW 102117391A TW 201333681 A TW201333681 A TW 201333681A
Authority
TW
Taiwan
Prior art keywords
controller
debug
thread
trace
interface
Prior art date
Application number
TW102117391A
Other languages
English (en)
Other versions
TWI475376B (zh
Inventor
Mark David Lippett
Ayewin Oung
Original Assignee
Coware Inc
Fujitsu Ltd
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 Coware Inc, Fujitsu Ltd filed Critical Coware Inc
Publication of TW201333681A publication Critical patent/TW201333681A/zh
Application granted granted Critical
Publication of TWI475376B publication Critical patent/TWI475376B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本發明揭示一種監視在一多重核心處理器架構內執行緒之執行過程的方法,其中該架構包含用於處理該等執行緒之複數個互連的處理器元件,而該方法包含接收複數個執行緒參數指示器來代表關於一或多個執行緒之功能及/或識別及/或執行位置的一或多個參數,並將至少一個該等執行緒參數指示器與具有第一複數個預先定義且各個皆代表一有興趣之指示器的標準,將兩者相比較,並由於上述比較結果所識別出為有興趣之執行緒參數指示器的輸出。

Description

在一多重核心處理器架構內的監視執行緒執行過程的方法以及執行緒層級偵錯控制器
本發明係關於一種用於在多重核心架構中進行偵錯的方法及裝置。
近年來已有一種朝向生產包含多重核心之處理器的趨勢,係為了將矽的效率最大化(即「應用程式可用」之MIPs/mm2或MIPs/mW)。這種多重核心架構理想上適合於執行基於執行緒之應用程式,因為一個執行緒定義了包含有一執行狀態、指令流及資料組之一獨立包裝,其在定義上可與其它執行緒同步執行。但是,此種執行的同步化會將額外的問題帶到用於這些多重核心架構上之軟體偵錯處理過程。軟體偵錯為用於定位及修正在一電腦應用程式的執行過程中的錯誤之概略用語。
在軟體偵錯中所面對的關鍵問題之一為Heisenberg錯誤(亦稱之為「探針效應」)。任何為了偵測的目的而加入的 程式碼,例如可增加系統診斷的層級,有可能微妙地改變了同步及/或平行執行的執行緒之時序。此即造成了會遮蓋錯誤的風險,且有可能在該相同應用程式的正式量產版本中才會被發現。當擴充後的偵錯碼出現在建構程式中,要能擷取出有意義的效能量測及測量方法亦是很困難的。此係因為第二階效應(像是快取)及互連效能會受到額外程式碼的影響,同時亦對於程式碼大小會有更為明顯的影響。
此外,由於在其生產中所使用的延伸資源,對於改善這種多重核心架構所產生的軟體之重覆使用性有逐漸增加的需求。在過去,用於多重核心架構之應用程式曾是以訂製的方式撰寫,因此造成不具有可攜性的硬體特定應用程式。在擴充時,這些應用程式的偵錯已經變為非常特殊化。
根據本發明之第一態樣,係提供一種監視在一多重核心處理器架構內部執行緒之執行過程的方法,其中該架構包含用於處理該等執行緒之複數個互連的處理器元件,而該方法包含接收複數個執行緒參數指示器來代表關於該函數及/或一執行緒或多執行緒之識別的一或多個參數,並將至少某些的執行緒參數指示器與具有第一複數個預先定義且各個皆代表一有興趣之指示器的標準,此兩者相比較,並產生出一根據由於上述比較結果而識別出為有興趣之執行緒參數指示器的輸出。
此可提供偵錯及追跡一應用程式的能力、並在該執行緒階層上運行一多重核心處理器架構,而不需要特別為了 執行緒階層之偵錯而加入程式碼。此外,其亦提供了致能該多重核心架構應用程式之偵錯的優點,而不需要引入額外的程式碼,而造成探針效應。
根據本發明另一態樣,其提供了用於一具有複數個互連處理器元件之多重核心處理器架構的執行緒層級的軟體偵錯控制器,,每個元件提供了處理執行緒之資源,該偵錯控制器係與各個上述處理器元件進行通信,並包含有監視邏輯以監視在該多重核心處理器架構內執行緒的配置與執行。
10‧‧‧未定義
20‧‧‧未定義
101‧‧‧外部中斷群組
102‧‧‧系統控制群組
105‧‧‧偵錯控制聚集
111‧‧‧內部控制群組
112‧‧‧偵錯介面群組
115‧‧‧互連
120‧‧‧執行緒管理及配置控制器客戶端
130‧‧‧控制器
135‧‧‧資料區塊
140‧‧‧系統記憶體
141‧‧‧偵錯存取埠
142‧‧‧追跡聚集點
143‧‧‧選擇性整合追跡緩衝器
144‧‧‧追跡埠
145‧‧‧處理資源指令區塊
150‧‧‧處理資源
151‧‧‧偵錯與追跡單元
152‧‧‧選擇性本地追跡緩衝器
160‧‧‧系統互連
170‧‧‧互連代理
180‧‧‧專屬記憶體匯流排
190‧‧‧專屬記憶體
191‧‧‧記憶體位址匯流排
192‧‧‧記憶體讀取資料匯流排
193‧‧‧記憶體寫入資料匯流排
194‧‧‧記憶體寫入致能
195‧‧‧記憶體讀取致能
200‧‧‧子區塊
290‧‧‧伺服器夾片
300‧‧‧偵錯有限狀態機器
330‧‧‧比較器
340‧‧‧位址比較
350‧‧‧減法器
360‧‧‧位址偏移
380‧‧‧觸發位址
400‧‧‧偵錯控制器
410‧‧‧偵錯介面
420‧‧‧時間
430‧‧‧輔助偵錯介面
440‧‧‧追跡緩衝器
470‧‧‧執行緒管理及配置控制器中斷
500‧‧‧偵錯機器
520‧‧‧事件服務模組
521‧‧‧ActionList指令解碼
522‧‧‧比較器
600‧‧‧靜態事件過濾器
610‧‧‧過濾器表格
611‧‧‧事件過濾器遮罩
660‧‧‧過濾的執行緒管理及配置事件
700‧‧‧追跡資料格式化器壓縮器
720‧‧‧兩個登錄項先進先出
730‧‧‧欄位基礎關連器
750‧‧‧內部符號運行長度編碼器
770‧‧‧內部符號運行長度編碼器
780‧‧‧可變長度封包器
本發明可用多種方式實行,現在將僅藉由範例,並參考所附圖面來說明一些具體實施例,其中:第1圖所示為一典型的多重核心處理器架構系統之邏輯配置的架構方塊圖;第2圖所示為第1圖之邏輯佈局的一範例性實施之架構方塊圖,其中在一泛用型多重核心處理器架構連同一專屬的記憶體裝置與一控制器客戶端內與一執行緒管理及配置控制器合併;第3圖係再次以一方塊圖型式顯示加入有第2圖之元件的一互補式系統晶片(SoC)匯流排為主的架構之範例;第4圖所示為第1圖,第2圖及第3圖之控制器的外部連接之細部圖面;第5圖所示為第2圖及第3圖之記憶體裝置的更詳細的圖面;第6圖所示為第2圖,第3圖及第4圖之控制器的 內部組成之細部圖面;第7圖所示為如第2圖及第3圖所示的一控制器客戶端之架構方塊圖;第7B圖所示為在以一單一控制器客戶端做為多重處理資源之一代理伺服器的系統之架構方塊圖;第8圖所示為一硬體控制器客戶端之更詳細的架構方塊圖;第9圖所示為一執行緒描述符、控制器、處理資源及共享的系統記憶體之間典型的關係;第10圖所示為根據本發明一具體實施例中加入一偵錯架構的一典型多重核心處理器架構系統的邏輯配置之範例性實施的架構方塊圖。在第10圖中該控制器做為用於偵錯控制的中央仲裁器。
第10b圖所示為根據本發明一具體實施例中加入一偵錯架構的一典型多重核心處理器架構系統的邏輯配置之另一範例性實施的架構方塊圖。在第10b圖中,有一額外的組件(其並非本發明的一部份)提供了在該多重核心處理器架構內所有核心之間的偵錯事件聚集,並包括該控制器;第11圖所示為第10圖及第10b圖之執行緒偵錯控制器的外部連接之細部圖面;第12a圖所示為第10圖及第10b圖之執行緒偵錯控制器內的追跡緩衝器的外部連接之細部圖面;第12b圖所示為第12a圖之追跡緩衝器的典型輸出之時序圖; 第13圖所示為外部連接到第10圖及第10b圖之執行緒偵錯控制器的另一個詳細圖面,其中包括連接到第2圖之控制器的子區塊;第14圖所示為第11圖之執行緒偵錯管理器的內部組成之功能方塊圖;第15圖所示為第14圖之偵錯機器之一的邏輯方塊圖;第16圖所示為第14圖之偵錯機器之一的實體方塊圖;第17圖所示為第14圖之偵錯機器的連鎖能力之範例;第18圖所示為在單一字元EvenWatch的情況下於一偵錯機器內的指令資料流;第19圖所示為在雙重字元EvenWatch的情況下於一偵錯機器內的指令資料流;第20圖所示為第14圖之範例性靜態事件過濾器模組的功能方塊圖;第21圖所示為第20圖之靜態事件過濾器模組內之事件過濾器遮罩的範例性配置;及第22圖所示為第14圖之追跡資料格式化裝置/壓縮器模組的範例之架構圖。
第1圖所示為一典型多重核心處理器架構之範例的系統框架邏輯圖。該框架包含複數個處理資源150,每個資源 可類似於也可不類似於在該多重核心架構中的其它處理資源150。一處理資源150可為任何能夠執行一指令的硬體型式,或其均等物,因此可包括泛用型處理資源150或具有一有效限制指令集之處理資源150,例如一輸入輸出裝置。
該系統框架亦包含一集中式執行緒管理及配置系統,其系統包括一執行緒管理及配置控制器130,及一透過記憶體介面180連接到該控制器之專屬緊密耦合記憶體190。每個處理資源150可以透過一互連115來存取該控制器130。吾人可瞭解到在實施第1圖的配置時不需要特殊的互連方式(即該控制器130用於與每個處理資源150相互通訊之配置,反之亦然,以及每個處理資源150與該等系統資源相互通信的配置,例如記憶體140);尤其是可均等地使用點對點鏈結、一中央系統匯流排、或甚至一管路化架構,除了只有每個處理資源150必須能直接或間接地與該控制器130通信(即透過其它處理資源150或其它)。
第2圖所示為再次僅藉由範例來顯示實施第1圖之邏輯配置的一多重核心處理器。第2圖的多重核心處理器使用複數個處理資源150,其各個資源經由一系統互連160來連接。該系統互連160依此地與該控制器130透過輸入介面100與輸出介面110來通信。在第3圖的範例中,該系統互連160係佈置成一將各個處理資源150與彼此以及該控制器130以及該共用的系統資源140(例如一系統記憶體)之間相互連接的傳統中央匯流排。與共用的系統資源140之介面可透過一些目前可用之介面技術中任何一種來達到。該記憶體可由任何 目前可用的中央電腦記憶體技術所組成,例如靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM)、或雙重資料率隨機存取記憶體(DDR RAM)。
如第2圖所示,每個多重處理資源150具有一設置來由該中央控制器130接收控制資訊,並根據所接收的控制資訊管理該等處理資源150之相關控制器客戶端120。該等控制器客戶端120之功能及目的在以下詳細說明。每個處理資源150亦具有一相關的互連代理170以透過該系統互連160與該控制器130通信。該互連代理170提供一泛用介面到該控制器客戶端120,其係獨立於在該系統互連160上所使用的底部互連協定轉譯,即其提供了在該系統互連160上使用之通信協定與該控制器客戶端120所使用之通信協定,兩者之間的協定轉譯。由於使用一互連代理170,本發明之具體實施例之控制器客戶端120可使用於目前可用的任何系統互連協定。實際上,透過該控制器客戶端120與該控制器130通信的該介面協定115,對於用來致能在該處理資源150與共用系統資源140之間通信之任何或所有的介面協定160(例如系統記憶體)而言,可說是有著實質上截然不同的天生差異。
該多重核心處理器10整體係設置來執行一目標應用程式,其可分解成一些個別的工作,稱之為執行緒。每個處理資源150係由該控制器130配置一適當的執行緒。此配置根據一些參數來進行,包括(但不限於)有問題之執行緒的優先性、每個處理資源150之可用性、一特定處理資源150對執行一特定執行緒之適用性。
然而吾人要瞭解到該控制器130之外加部份與其專屬的記憶體190並不另外需要重新設計該處理器10之電路佈局。
一特定的配置顯示於第3圖此配置以方塊圖的形式顯示出一典型的晶片上系統(SoC)架構,且此配置例示出多種可放置於一實際應用中該控制器130之控制之下的處理資源150。吾人將可注意到該處理資源150相較之下特別具有通用的能力性,像是DSP,或可相較下具有受限的功能性,例如週邊I/O。
第4圖所示為該控制器130及其相關的輸入介面群組100、輸出介面群組110、及雙向介面群組160及180,每個群組係位於該控制器130之週邊。
該系統控制群組102包含用以保證該控制器130正確運作的多種信號。這些包括一系統時脈、一即時時脈及一重置信號(RST)。所有來自該控制器130之輸出信號係同步於該系統時脈,雖然它們可與其它該系統所需要的時脈領域不同步。所有傳輸至該控制器130的輸入信號皆在處理之前與該系統時脈同步。該RST輸入為一同步重置信號,用於重置該控制器130。
該外部中斷群組101由來自該執行緒管理與配置系統之外的一外部中斷群組所組成。在該外部中斷群組101中的信號可由,例如從具有外部世界之輸入介面或透過針腳直接由該多重核心處理器之外部來驅動。該外部中斷輸入數目可在該多重核心處理器10設計階段之期間來定義。
該內部控制群組111由每個控制器客戶端120之一同步中斷與其相關的處理資源150所組成。因此該信號的數目基本上將對應於該系統之內的處理資源150的數目,並將在該多重核心處理器10設計階段之期間來定義。該內部中斷信號為一內部執行緒預備中斷信號,其代表已預備好執行的一執行緒,且其係被指定到關連於該控制器客戶端120之特定處理資源150。
該偵錯介面群組112由三個次群組所組成:
1.該輔助偵錯介面,其致能一外部偵錯代理以整體地取得整體地偵錯存取到該控制器130與該系統。透過此介面,可以同時內部及外部設定中斷點與監看點,且可讀取系統狀態資訊。
2.該追跡緩衝器輸出,其為一串流輸出,提供了根據一組預先設置的過濾指引的執行時間系統狀態,並在該偵錯管理器400的最終控制之下。
3.該外部偵錯致能信號,其係在他們的自身權利中可用來當作中斷點信號,或可與處理資源結合,以特定致能。
以上偵錯介面群組之特定格式、架構及使用將在以下詳細說明。
該緊密耦合記憶體介面群組180將構成該控制器130與其本身專屬的緊密耦合記憶體資源190之介面。
第5圖所示為該專屬緊密耦合記憶體190之典型結構。該位址路徑與該資料路徑之寬度係在該多重核心處理器10設計階段期間定義。該專屬緊密耦合的記憶體介面180包 括一記憶體位址匯流排191、一記憶體讀取資料匯流排192、一記憶體寫入資料匯流排193、及寫入194與讀取196致能信號。
該附加的記憶體係假設為一同步SRAM裝置。該專屬的緊密耦合記憶體190包含整數個控制器記憶體元件195,其根據該目標應用之需求來在該多重核心處理器10設計階段期間定義。在目前較佳的具體實施例中,每個控制器記憶體元件195消耗了256位元的記憶體空間。再次地於目前較佳的具體實施例中,該控制器支援了最高65536個控制器記憶體元件(即一16 Mb記憶體)。雖然如下述的佇列描述符會耗用控制器記憶體元件195,在一典型的系統中,所需要的該控制器記憶體元件195之數目將主要是供執行緒支援需求。舉例而言,能夠在該控制器130內同時支援400個執行緒之系統將需要大約128 kb之附加記憶體。
第4圖之互連介面群組160符合於所選擇的互連協定,或是使用在該多重核心處理器10當中的協定,以及在該多重核心處理器設計階段期間定義的該互連代理170。如果有數個不同的互連結構,該互連介面群組160可由多個可能不相同的介面組成。在所示的具體實施例中,係使用一匯流排介面。然而吾人將可瞭解到其它不同形式的介面皆可同等地使用,如先前所建議。
控制器子區塊描述及功能
第6圖所示為該控制器130之主要邏輯組件。該控制器130之功能係分成四個主要的內部平行處理子區塊,其 執行以下的功能:
1.一執行緒輸入管理器(TSIM,Thread Input Manager)200,其配置為在該專屬的緊密耦合的記憶體190內維護一系列的自由控制器記憶體元件195,並監視控制器記憶體元件195恢復。
2.一執行緒同步化管理器(TSPM,Thread synchronisation manager)210,其配置為在該專屬緊密耦合的記憶體90內維護等候表列及一時間佇列,並執行執行緒之間的同步化,並視需要執行促進執行緒到該專屬緊密耦合的記憶體190內之預備佇列結構。該執行緒同步化管理器210透過在該專屬緊密耦合的記憶體190內之等候執行緒描述符的插入及擷取動作,來維護該等候與計時器佇列結構之整合性。
3.一執行緒輸出管理器(TSOM,Thread output manager)220,其配置為維護在該專屬緊密耦合的記憶體190內的預備佇列結構,及該專屬緊密耦合的記憶體190內之每個處理資源150之分派佇列。該執行緒輸出管理器(TSOM,Thread output manager)220另可用來產生傳送到該控制器客戶端120之中斷110。該預備佇列結構整合性之維護係由在該專屬緊密耦合的記憶體190內部,位於控制器記憶體元件195中所持有的執行緒符的插入及擷取動作來執行。
4.一執行緒時程管理器(TSSM,Thread schedule manager)230,其配置為提供位於該專屬緊密耦合記憶體190內之該預備佇列結構中每個處理資源150之排程決策。
額外地,一些次級處理子區塊提供的支援功能如下:
5.一執行緒記憶體管理器(TSMM,Thread memory manager)240,其配置為提供聚集存取到該附加的專屬緊密耦合記憶體190,並包括互斥性及鎖定。
6.一中斷管理器(TSIC)250,其配置為將進入外部系統中斷轉換成為內部同步化根基。
7.一時間管理器(TSTC)260,其配置於提供同步化目的之計時器功能及監視計時器功能給每個處理資源150。
8.一系統介面(TSIF)280,其配置於提供互連介面及組態以及運行時間存取到該多重核心處理資源150及該控制器130內個別的子區塊。
9.一伺服器夾片(TSSS)290,其配置於提供該控制器130與該多重核心處理資源150之間的實體介面115。
以上列出的每個主要及次級子區塊亦包括一形成偵錯介面112之一部份的偵錯輸出,並用於在對應至該信號之每個子區塊內事件發生時通知本發明之偵錯控制器400。當一命令可在特定條件下完成時,狀態旗標係在該子區塊內管理。
概言之,該控制器130藉由維持在該專屬控制器記憶體190內一定數量的佇列結構來管理執行緒。這些佇列結構包括等候、預備、計時器與分派佇列。執行緒等待執行係保持在一或多個這些佇列中,並在一旦它們預備好之後即配置到適當的處理資源150。在該等佇列內執行緒的操縱方式主要使用推進、彈出及排序作業來進行。該控制器130之作業的完整細節係在共同申請之美國專利申請編號10/308,895中描述,其內容併呈於此以供參考。
現在將根據在該控制器130內之上述主要及次級處理子區塊之互動做詳細說明。
每個子區塊提供了一組功能給其它子區塊,使各者可指示它的點來在該專屬緊密耦合記憶體190內之其個別維護的結構上執行操縱。功能係由一特定子區塊在接收一類似在一控制器軟體應用程式化介面(API)處接收者時所呼叫。
執行緒輸入管理器函數:
該執行緒輸入管理器200提供三個公開函數給其它該控制器130內的子區塊。
該FreeListStatus函數回傳在該控制器記憶體元件195自由表列內部的標頭指標及元件數目。該自由表列為目前未用到之控制器記憶體元件195之表列。此函數僅可由該系統介面280於該控制器130軟體API處接收到一類似命令時所呼叫。
該PushFreeIndex函數係用來推進一釋放的控制器記憶體元件195索引回到該自由表列上。此函數僅可由該執行緒時程管理器230所呼叫。
該PopFreeIndex函數係用來彈出來自該自由表列的一自由控制器記憶體元件195索引。其基本上由該系統介面280內之API呼叫服務程序所呼叫。
執行緒同步化管理器函數:
該執行緒同步化管理器210提供七個公開函數給其它該控制器130內的子區塊。
以下的五個函數僅可由該系統介面280呼叫,以回 應於由該控制器130軟體API接收的類似命令。
該PushPendingDescriptor函數係於該開機處理期間使用來加入一等候佇列描述符到該等候佇列描述符的表列。
該PushThread函數係在執行期間使用來加入一相依執行緒到一給定的等候佇列。
該GetTimerStatus函數回傳在該計時器佇列內之該標頭指標及元件數目。
該SetTimerStatus函數設定該標頭指標及在該計時器佇列內元件數目。
該SetPendingStatus函數設定該等候佇列描述符表列之狀態。
該GetPendingStatus函數回傳在該等候描述符佇列內之該標頭指標及元件數目。
該SyncEvent函數係用來發出一同步化根基到一給定等候佇列。此函數由該執行緒中斷管理器250或該系統介面280所呼叫。
該TimeEvent函數係用來發出以計時器為主之同步化根基到該計時器佇列。此函數僅由該時間管理器260呼叫。
執行緒輸出管理器函數:
該執行緒輸出管理器220提供五個公開函數給其它該控制器130內的子區塊。
該Push函數放置一執行緒描述符在該預備佇列結構內。該方法可由該系統介面280或該執行緒同步化管理器210呼叫,且其可用高優先性呼叫來促進處理速率(例如處理 中斷)。當執行緒為獨立時(立即可預備好),該呼叫將由該系統介面280來達成,其中原本與該呼叫間具相依性之該執行緒描述符係由該執行緒同步化管理器210所達成。
以下的函數僅可由該系統介面280呼叫,以回應於在該控制器130軟體API處接收到的一類似命令。
該GetDispatch佇列Status函數回傳在該分派佇列表列之該標頭指標及內元件數目。
該SetDispatch佇列Status函數設定在該分派佇列表列內之該標頭指標及元件數目。
該Dispatch佇列SetMetrics函數設定了目前執行中的執行緒之計量,使得已通知的先佔決策可順利達成。
該Dispatch佇列Event函數傳遞來自該預備佇列結構之排程事件到該由該執行緒輸出管理器(TSOM)220所管理之分派佇列。此函數僅可由該執行緒時程管理器(TSSM)230呼叫。
該Dispatch佇列Pop函數由一分派佇列之頭端彈出一執行緒描述符。
該DispatchWork佇列Push函數推進一分派佇列到該執行緒輸出管理器220工作佇列上。此函數僅可由使用此函數來通知該輸出管理器220在當時程更新時在該分派佇列中所需改變的該執行緒時程管理器230呼叫。
執行緒時程管理器函數:
該執行緒時程管理器230提供三個公開函數給位於該控制器130之內的該執行緒輸出管理器220與該系統介面 280。
該PushPushWorkEvent函數由該執行緒輸出管理器220呼叫,其係在加入一執行緒描述符到一預備佇列結構之後呼叫。
該PushPopWorkEvent函數由該執行緒輸出管理器220,在增添一執行緒描述符到一預備佇列結構之後立即地呼叫。
一FreeIndex函數致能一控制器記憶體元件195之釋放,以適當地與在該執行緒時程管理器230內進行中的排程活動同步。該呼叫可在該控制器130軟體API處接收一類似命令時發出,或是由於在該執行緒輸出管理器220內的一彈出作業之故。
控制器客戶端
如上所述,該用語「處理資源」150係應用到任何 可以執行一指令的資源,不論該指令是否為初步。因此亦可包括具有一固定函數的資源,例如一輸入/輸出模組。根據處理資源150之種類,透過該控制器客戶端120並位於該系統互連160與該處理資源150之間的連接可為單向或雙向。
第7圖所示為用於該控制器130之一控制器客戶端120之範例。
一適當的處理資源150中(例如通用型處理器或數位信號處理器),該控制器客戶端120基本上將以軟體實施。但是,當該處理資源150之功能為有限時,該控制器客戶端120會需要一硬體組件。
當該系統互連160與該處理資源150之間使用一硬體組件時,該控制器客戶端120仍使用相同介面與該處理資源150做為介面。也就是說,該控制器客戶端120提出一相同的介面到該互連代理170,如同該處理資源150到該控制器客戶端120。在某些狀況下,較適當地處理方式為該資料路徑進入至該處理資源150中,而不是將該資料路徑由該處理資源150往外出,例如在一輸入/輸出裝置的例子。
除了該主介面之外,該控制器客戶端120亦提供頻帶外介面做為運行時間與偵錯事件的輸出。當使用一軟體控制器客戶端120時,這些係使用標準中斷來提供,呼叫適當的服務程序、或形成輸入到處理資源150特定偵錯及追跡單元151。
作業的控制器客戶端模式:
每個控制器客戶端120為完全中斷驅動。在接收到來自該控制器130之內部中斷時,該控制器客戶端120由關連於該特定處理資源150之分派佇列之標頭端彈出該執行緒描述符,其係保持在該專屬緊密耦合的記憶體190。在該執行緒描述符內的獨特參考編號則用來讀取另外的執行緒控制資訊、該執行緒控制區塊(TCB),其皆來自該主記憶體資源140。在該TCB內含有的資訊可為下列中任一項:
1.控制器客戶端120設置內容。此資訊可用於設置控制器客戶端120系統資源使用監督、位址或資料匯流排觸發設置(為了偵錯的目的)、資料呈現模式等等。
2.處理資源150設置內容。此為預備該處理資源 150執行一特定執行緒所需要的資訊。此可包括由此執行緒的一先前部份執行的恢復,或一專門硬體加速器之設置,例如一音訊CODEC。
3.指令內容。在一固定功能硬體加速器之案例中,該「指令」在該目標的硬體處理資源150中將是不言明的,以一輸出指令為例而言,當該處理資源150為為一輸出模組時,則任何需要的特別化或設置將可容納在該設置資訊中。在一軟體控制器客戶端120之內文中,此基本上將為一指標到關連於該執行緒之函數碼。
4.資料內容。此內容可定義在該系統記憶體140中的開始位址或多重位址,及該執行緒會操作到的資料範圍。
5.處理器客戶端120之後續處理內容。此內容決定了在完成該執行緒執行之後的該控制器客戶端120之動作。
該控制器客戶端120有三個不同的作業階段:
1.設置階段,其中該處理資源150及該控制器客戶端120係預備執行一特定執行緒。在最簡單的例子中,該設置階段將為無效。
2.執行階段,其中該執行緒正在執行,且該控制器客戶端120可正在供應資料或監視資源使用率。
3.完成階段。處理完成後即造成沒有動作,產生另一個執行緒,發出一同步化根基,或執行緒產生及同步化的組合。再者,該控制器客戶端120亦需要設置或更新排程器計量及終止執行緒。在執行該執行緒期間的事件中,需要另外的記憶體來儲存結果,該控制器客戶端120亦必須執行此 伺服器方法。
在一個別硬體控制器客戶端120b在活動期間完全使用可用之系統互連160頻寬的情況下,一最佳的方案將可允許一控制器客戶端120b來操作成一多重硬體處理資源150之代理主機。這種配置示於第7B圖。如先前例子,該代理主機控制器客戶端120b為中斷驅動,然而在先前範例中,僅有一單一中斷為由該控制器130導引,在該代理主機控制器客戶端模式中,每個處理資源150有一個中斷。根據自該控制器130接收的該中斷之索引,該代理主機控制器客戶端120b執行相同的步驟於該識別的處理資源150上。在該代理主機控制器客戶端模型中,當需要系統互連160使用監督時,一硬體配接器120c將仍維持在該處理資源150與該系統互連160之間。
如前所述,該控制器客戶端120可以軟體實施。在此例中,該控制器客戶端120之部份功能,例如共用資源使用監督,基本上將利用既有的已經出現在該處理資源150硬體中之硬體組件(例如一記憶體管理單元MMU)。
因此,該軟體控制器客戶端120架構及實施係為該處理資源150之特定部份。
硬體控制器客戶端120根據該相關處理資源150之習性亦可具有專門需求。以下的段落描述了一泛用架構,其將可適用於大多數的案例。
一硬體控制器客戶端的一般範例
該硬體控制器客戶端120之基本結構係示於第8 圖。在該設計的功能核心為該控制器客戶端有限狀態機器(FSM)300。此有限狀態機器(FSM)300可在所有三個階段期間啟動。該控制器客戶端FSM 300由來自該控制器130之一中斷111所啟動。
首先該控制器客戶端FSM 300主控該系統互連160以讀取來自該共用記憶體資源140之TCB,其包含一參考到其本身的指令。在設置階段期間該控制器客戶端120可以主控該處理資源介面、轉譯設置命令、及轉譯它們成為發出到該處理資源150之寫入循環。再者,該控制器客戶端120設置其本身的資源監督。由該設置狀態轉換到該執行狀態之方法為特定的處理資源150,但可由一明確的執行根基所標示、或僅為一登錄項到一資料轉換狀態。
由一控制器客戶端120的觀點,最簡單的架構是同時在該處理資源150及該系統側兩者上具有相同的介面協定。在此例中,於執行階段期間,處理資源150讀取及寫入循環僅映射跨至該系統介面,並在適當處進行檢查。
該最簡單控制器客戶端120實施將需要一在該系統至處理資源310與處理資源至系統320路徑兩者中之FIFO型態的介面。於此種控制器客戶端120之執行階段期間,資料可由訊息或串流模式來提供給一處理資源150。訊息模式為整個資料組在處理之前於該控制器客戶端120內局部地累積,並會引起一更為粗粒的區塊式互連行為,該行為會構成更為複雜的互連仲裁器。串流模式中資料係由該系統記憶體140直接串流到該處理資源150中,其可提供一更有矽效率方案, 而需要更為謹慎地考慮連線程序,並呈現出微粒互連傳輸,並緊密耦合到互連效能。
由從該執行至該完成階段的轉換過程可推論出,藉由量測該資料到該處理資源150的呈現、或明確地由該處理資源150本身發信。於該完成階段期間,該控制器客戶端120再一次地執行由該原始執行緒控制區塊所提供的該組指令。
請注意在某些案例中,以不同的方式處理該進入該處理資源150之資料路徑(例如一輸入/輸出裝置)與離開該處理資源150之路徑,是適當的方式。相反地,其在某些案例中(例如演算法加速器,像是DSP)將在相同的控制器客戶端120框架中將資料的消耗者與產生者彼此耦合將會是自然的方式。
為了提供某個程度的處理資源150與其它系統資源之間的解耦,亦可由該控制器客戶端120提供一些額外的設施。
a)由該處理資源150產生的位址可透過使用一比較器330及一比較位址暫存器340,從一基礎位址與偏移定義所定義的預期行為來進行檢查。
b)由該處理資源150所產生的位址可使用一減法器350及偏移位址暫存器360來偏移,並致能該處理資源150以具有任何給定的執行緒之位址圖的正規觀點,基本上約在位址0x0之處做正規化。
c)一偵錯監看暫存器可包含在內,其中該處理資源為有限功能,因此並未包括其本身指令層次的偵錯硬體。這 種暫存器即可用於監視位址使用,以致能指令層次的偵錯能力達到其他方面缺乏的固定功能硬體資源150。
目的
在該控制器130內使用的資料種類之實例被區分成公開(可全部由該系統看到及操縱)及私密可見度(僅可在該控制器130內看到,並僅可由該控制器130子區塊所操縱)。為了保證該設計在多個終端應用程式之間的可攜性,所有的執行緒、佇列、及聚集的佇列描述符皆使用一共用基礎類別及該控制器記憶體元件195來儲存在該專屬的緊密耦合記憶體190內部。
控制器記憶體元件
每個控制器記憶體元件195可代表下列十個描述符種類中的任何一種:
1.自由表列元件。此元件可由其它描述符種類中的任何一種所自由使用。且不需要使用者初始化或運行時間操縱。
2.執行緒描述符(TD)。此為代表一應用程式/管理執行緒之資料結構。此描述符可存在於該專屬緊密耦合記憶體190內的一等候佇列、一預備佇列、或一分派佇列。其不需要使用者初始化,但需要運行時間操縱。
3.排程器根部描述符(SRD)。此為一排程器架構之最上端描述符。其需要使用者初始化,但不需要運行時間操縱。該根描述符沒有親代,但其子代可為下列中任一項:SSTD,DSTD或TD。
4.靜態排程器層級描述符(SSTD)。此為一靜態排程器層級描述符,其親代可為一SRD或另一SSTD。該SSTD的子代可為下列中任一項:另一個SSTD,DSTD或TD。
5.動態排程器層級描述符(DSTD)。此為一動態排程器層級描述符。其不需要使用者初始化,但需要運行時間操縱。一DSTD的親代可為一SRD或一SSTD,但一DSTD僅可具有TD的子代。
6.分派佇列描述符。此種描述符描述了一系列正等待由相關的處理資源150彈出作業的執行緒描述符。其需要使用者初始化,但不需要運行時間操縱。
7.等候佇列描述符。此種描述符描述了一系列正等待一同步化事件的執行緒描述符。其需要使用者初始化,但不需要運行時間操縱。
8.池附加節點(PAN)。PAN係用來附加該排程器根層級到該處理資源150池根層級。其需要使用者初始化,但不需要運行時間操縱。
9.池靜態節點(PSN)。PSN係用來附加該排程器根層級到該處理資源150池根層級。其需要使用者初始化,但不需要運行時間操縱。
10.池根節點(PRN)。每個處理資源150池有一單一PRN。其需要使用者初始化,但不需要運行時間操縱。
第9圖所示為一在執行緒描述符、該控制器130、一處理資源150與該共用的系統記憶體140之間的典型關係。每個執行緒根基包含一獨特參考編號pReference。此參 考編號並未轉譯,或由該控制器130所修正。pReference提供了一指標到系統記憶體140中的一資料結構,並定義了要被執行的工作。基本上此將為一控制器客戶端控制區塊125,且將包含至少以下的元件:一函數指標(如第9圖所示,做為一處理資源指令區塊145)、一堆疊指標、及一引數指標(共同示於第9圖,做為一資料區塊135)。提供了在共享系統資源之上的頻段內設置或安全性額外的欄位可被定義。
但是根據該應用程式及/或目標處理資源150,該控制器客戶端控制區塊125之複雜度可以改變。特別是須注意到其可包括其它的間接層級,並給定了適當的「控制」指令碼及相對應的「資料路徑」碼,並可致能不同的處理資源150在如此狀況下對相同的資料執行相同的函數。在此例中,每種處理資源150皆有指標,對應於不同處理資源150所需要的特定指令串流。允許不同處理資源來執行相同執行緒之能力,亦可致能負載平衡,以實現在該多重核心架構中可用的所有處理資源。再者,處理資源可以在一起共用。
處理器資源池致能一特定處理資源150的實例為聚合體,並形成一單一分配節點。該分配節點即可對屬於一特定處理資源池之個別處理資源150提供負載平衡、智慧型先佔、及功率管理。
第10圖及第10b圖所示為加入有根據本發明具體實施例之特徵的偵錯系統框架之基本架構配置。在第10圖中,本發明提供了全系統的偵錯控制之聚集點,藉此在第10圖中,本發明即可用類似於所有其它偵錯及追跡單元的方式來 連接到一外部集中化的偵錯控制聚集組件。
基本上每個處理資源150提供一指令層級偵錯及追跡單元151,其在該指令層級或均等者使用,且僅侷限於該相關處理資源150之處。這些為特定之處理資源150,然而使用相同或類似的資料來操作。
廣泛而言,該等偵錯的方法可分為兩個領域。當該系統在擷取偵錯資訊時為中止的靜態作業,以及當資訊於運行時間當中被收集、監視及分配的動態作業。
此外靜態作業包括中斷點及監看點之設定組態、該中止及單一步驟之管理、系統狀態及記憶體負載之簡要,觀察與分析。
此外動態作業包括對於處理器週期、快取作業、處理器間通信、及系統互連(如匯流排)傳輸的監視。此種監視係共同稱之為追跡,且其用於系統行為的「輪廓化」。動態偵錯或追跡資訊基本上係由該嵌入式系統之組件自主地產生。
該本地指令層級偵錯與追跡單元151包含了造成在相關處理資源150內指令的處理在某些預先定義的狀況之下中止的嵌入式「觸發」邏輯,但亦可用來啟始或終止追跡資訊或一些其它功能的累積。該觸發基本上為一事件位元,其代表已經觀察到該預先定義的「觸發序列」。
至少這種觸發邏輯基本上包括了在當遇到一給定的指令時即發出一中斷(觸發)到該本地處理資源150的中斷點邏輯,其。包含在這些單元內的功能數目為特定之處理資源150,但是當需要時,如前所述,該控制器客戶端120可包括 偵錯監看暫存器以提供最小程度之指令層級偵錯及追跡能力。此在當該處理資源150為有限功能時即會需要,例如一專屬的音訊CODEC。
每個指令層級偵錯及追跡單元151具有連接到一偵錯存取埠141之雙向介面155,與透過一或多個選擇性的本地追跡暫存器152、一追跡聚集點142、及一選擇性的整合追跡暫存器143,來連接至一追跡埠144的一追跡輸出介面105。
該偵錯存取埠141允許一外部「偵錯主控台」控制及存取該偵錯處理。基本上,這些主控台透過一序列埠或其它類似的低速連接介面協定做為介面。
該追跡埠144提供到該追跡資料到外部裝置的存取。此可允許該追跡資料的觀察過程發生,做為該軟體偵錯處理的一部份。
該選擇性本地追跡緩衝器152及整合的追跡緩衝器143係用來在輸出之前暫時儲存追跡資料。此即允許該系統的一運行「簡要」被儲存起來,然後稍後透過該追跡埠144讀出。藉此,該追跡埠144不需要具有所需要的可能高傳輸速率,而應該是要即時地輸出該偵錯資料。此可除去了對於專屬(至少部份)該偵錯資料輸出之大量輸出針腳的需求。目前來說,這是相當重要的,該輸入/輸出墊的數目可適合於任何特定的積體電路(IC)晶片,並限制了該IC晶片的尺寸,而與該功能性邏輯本身之尺寸成相反對比。
該追跡聚集點142僅做為多工化,並從該本地偵錯及追跡單元151將該多重偵錯追跡串流105輸出至一單一輸 出串流中,以預備好儲存在該整合的追跡緩衝器143當中,或是就未整合的追跡緩衝器143所提供部分而言,僅用於輸出交跨該追跡埠介面144。
在第10圖中,連接到每個本地偵錯及追跡單元151,係本發明之執行緒偵錯控制器400。此執行緒偵錯控制器400亦再次透過一或多個選擇性的本地及整合的追跡緩衝器,來連接到該控制器130、偵錯存取埠141及該追跡輸出埠144。在第10圖的該偵錯框架圖中,該控制器130提供一初始偵錯致能信號450到個別的DTU 151,該DTU會建議一種在初始時由在該控制器內所觀察到的事件所導出的偵錯策略。
在第10b圖中,每個指令層級偵錯及追跡單元151接收來自一偵錯控制聚集單元的一偵錯致能信號,並由於對一預先定義的事件序列之觀察而產生這種致能,而事件序列可包括那些由本發明所產生的事件。第10b圖的框架致能一可由本地偵錯及追跡單元151或本發明所啟始的偵錯策略。
第11圖所示為本發明一具體實施例之執行緒偵錯控制器400的特定輸入及輸出。
每個控制器130子區塊200到280具有一用於承載信號到該執行緒偵錯控制器400中的偵錯介面410。這些輸入信號通知在該控制器130之每個相對應的子區塊中發生中之事件內的該執行緒偵錯控制器400,因為該等子區塊互動來管理及配置個別處理資源150之間的個別執行緒。該執行緒偵錯控制器400亦可對於追跡及觸發資訊來過濾子區塊事件。
在該控制器130之每個子區塊內的命令執行會造成傳送一EventID欄位及一EventData欄位到該執行緒偵錯控制器400。每個事件所相關的子區塊係由發送此些欄位的介面來決定,因為每個子區塊具有其本身的專屬介面440到該執行緒偵錯控制器400。該EventID欄位為使用者可定義,因此可為N位元長,但是在本發明一較佳具體實施例中,該EventID為四位元長。每個個別EventID欄位可識別出在一特定子區塊200到280內發生的一個別事件。
會發生在該等子區塊內的事件範例包括由佇列推進或彈出執行緒、讀取/寫入存取到一控制器記憶體元件195、產生同步化事件、及提供了處理資源150與該控制器130之間低層級通訊形式的事件。
附有每個EventID之EventData欄位在目前的較佳具體實施例中為32位元長。此欄位包含由目前正在被執行之事件所使用的主要資料。通常此包含該控制器記憶體元件195之32位元長的pReference欄位,但是當每個資料種類小於32位元長時,其亦可包括一定數量其它資料種類中的任何一種,或這些資料種類的組合。這些其它資料種類之範例包括控制器記憶體元件195索引、中斷遮罩、計時器數值與次模組ID。
該執行緒偵錯控制器400亦具有一時間介面420。此介面提供一個由該執行緒偵錯控制器400來對所有登入之事件進行時間標記的32位元時間表示,因為該執行緒偵錯控制器400透過該子區塊輸入介面410由每個個別控制器130 之子區塊接收它們。
該輔助偵錯介面430為一雙向介面,以用致能標準外部軟體偵錯及系統視覺化與控制工具來存取該執行緒偵錯控制器400。這些外部軟體偵錯工具係用於在該系統初始化時設定該等偵錯參數,與補捉及顯示所得到的追跡資料兩者。所支援的介面範例包括IEEE 1149.1 JTAG介面,及更為有用的IEEE Nexus 5001 AUX埠介面。
原本做為晶片裝置之邊界掃描的JTAG,為基於一四線介面之技術,並包含序列鏈結與低速計時策略,是於多重核心架構內正被廣泛地用來致能偵錯資料存取。由於其頻寬限制,且事實上該介面藉由在一低速序列鏈結上之該偵錯主控台來進行主控,JTAG的使用基本上受限於靜態作業。然而,因為其相當便宜(從矽領域及晶片I/O角度)且易於實施,JTAG已經成為晶片上偵錯目的之標準實體層。
Nexus 5001 AUX埠介面提供了一較為豐富的偵錯能力組合,其中包括大量的動態活動,例如動態存取到該執行緒偵錯控制器400內部的偵錯暫存器。
該追跡緩衝器介面440係設計用於任何目前可用之緩衝器技術。在該特定具體實施例中,該追跡資料係透過一簡單的位元組寬度的先進先出介面輸出。第12a圖所示為該位元組寬度介面及其相關的控制信號,而第12b圖所示為形成這些資料及控制輸入/輸出之電子信號的時序。當顯示出一單一位元組寬度介面時,專業人士將可瞭解到本發明並不受限於此範圍。
請回頭參考第11圖,在第10圖所述的架構中,該外部偵錯致能信號群組450皆為本地偵錯及追跡單元151致能信號。在該多重核心架構10內部所顯示的本地偵錯及追跡單元151各者皆提供一個訊號,因此準確的數目係在設計階段期間來設定。每個這些信號可在偵測到一觸發事件時,致能一特定的本地偵錯與追跡單元151。藉由使用這種本地偵錯及追跡單元151致能信號,且由於該控制器130之作業內含的執行緒等級之擷取,該執行緒偵錯控制器400提供一執行緒(即巨觀架構性)層級偵錯能力,其可利用該本地偵錯及追跡單元151之本地指令(微觀架構性)層級來閘控。此可同時提供一粗粒執行緒式之偵錯,與一較微粒的指令式之偵錯給軟體工程師,藉此構成該偵錯處理,而不需要引入可能會造成探針效應的額外偵錯軟體。
請再參考第11圖,在第10b圖所述的框架中,該外部偵錯致能信號群組450為在該偵錯控制聚集區塊中所有本地偵錯及追跡單元151致能信號之致能信號的聚合。這些信號之實際數目係由該系統設計者希望傳遞到該偵錯控制聚集區塊之分散事件的數目所決定。然後這成為該偵錯控制聚集區塊的責任,來過濾所有偵錯致能來源,並在偵測到一觸發事件時確立該適當的本地偵錯及追跡單元151。如前述,藉由使用這種當地偵錯及追跡單元151致能信號,且由於該控制器130作業之內含的執行緒層級之擷取,該執行緒偵錯控制器400提供一執行緒(即巨觀架構性)層級偵錯能力,其可利用該本地偵錯及追跡單元151之本地指令(微觀架構性)層級來 閘控。但是在此例中,一觸發序列不會由該控制器所啟始。
吾人應注意到該執行緒偵錯控制器400亦提供了一定數量之微粒的偵錯能力給該等子區塊,而組成該工作配置控制器130。這些將在以下參考第13圖來詳細說明。
該內部偵錯致能信號群組460係由透過該執行緒偵錯控制器400傳送到組成該工作配置控制器130之每個個別子區塊(200-280)的信號組成。這些係用來允許該執行緒偵錯控制器400能根據該執行緒偵錯控制器400之組態,使得每個子區塊單一步驟通過其下一個指令,或整個中止該子區塊。
該執行緒偵錯控制器中斷信號群組470由兩個信號組成。它們允許來自該執行緒偵錯控制器400之中斷回授到該控制器130。這些中斷以如同所有其它外部中斷到該控制器130之相同方式來處理。這些信號的使用係完全可程式化,但它們用途的典型範例將包括在該應用程式中需要注意事件之統計的收集,以及在一特定處理資源150中一偵錯監視器執行緒之啟動。
該TSIF系統介面412允許該控制器130之介面管理器次模組280與該執行緒偵錯控制器400之間的通信。此介面同時包含一SubBlockCmd從動輸入介面490及一GenericReg主控輸出介面480。所有位在該多重核心處理器與該TSTF子區塊內部之處理資源150,可透過該SubBlockCmd從動輸入介面490存取該執行緒偵錯控制器400來進行正常與偵錯作業,例如在執行應用程式時間期間程式化該等偵錯參數。相同地,該執行緒偵錯控制器400可透過該GenericReg 主控輸出介面480來給予完整的存取到該控制器130之內部所有的子區塊。
第13圖所示為該控制器130中每個子區塊與該執行緒偵錯控制器400之間連接的詳細圖。該執行緒偵錯控制器400透過使用了該泛用暫存器GenericReg介面480的該介面管理器(280)存取該控制器130之每個子區塊內的資源。此介面亦允許該執行緒偵錯控制器400來致能偵錯,並獨立地對於每個子區塊執行單一步驟。
該執行緒偵錯控制器400亦提供一定數量系統寬度封閉迴路偵錯能力。首先,該中斷管理器(TSIC)250具有額外的執行緒偵錯控制器400回授中斷470。這些中斷係由該執行緒偵錯控制器400所用以指示出正被監看的使用者可定義事件之特定組合已經發生。此中斷則可用來使得該中斷管理器(TSIC)250產生SyncEvents來釋放正等待該特定SyncEvent之系統管理執行緒。依此方式,該偵錯系統可在特定系統事件的偵測過程時觸發系統管理執行緒。
其次,專屬的TSIF系統介面280命令可產生能夠保持32位元資料的TSIF偵錯Events。這些則可用來產生事件,例如指示處理狀態的變化,或做為在一主控偵錯器與每個處理資源150之間的一低位元率通信頻道。
第14圖所示為該執行緒偵錯控制器400之內部功能性實施。
該動態偵錯介面540係用來控制該執行緒偵錯控制器400之動態作業的特定內容,例如該執行緒偵錯控制器400 所要找尋的那些系統管理與配置事件,以及當觀察到一特定事件時要由該執行緒偵錯控制器400所進行的動作。
該靜態偵錯介面530係用來控制該執行緒偵錯控制器400之靜態作業的特定內容,例如該靜態事件過濾器。
該SubBlockCmd介面490允許該控制器130之介面管理器280來存取該動態偵錯介面540。一特別設計的多工器560僅允許存取到來自該SubBlockCmd介面490之動態偵錯介面540。該Nexus協定轉換器435將一來自使用IEEE Nexus 5001協定標準外部偵錯主控台之信號轉換成為適合控制該執行緒偵錯控制器400之偵錯作業的內部信號。依此方式,該轉換器435亦提供了該Nexus建議的暫存器之子集合。外部偵錯主控台被允許來透過該多工器560同時存取該動態偵錯介面540與該靜態偵錯介面530。該外部偵錯主控台亦被允許透過該介面管理器280泛用介面,來存取該控制器130之所有內部子區塊200-280。
第15圖所示為該偵錯機器500之一的邏輯圖。該偵錯機器500的數目為任選,並可在設計時間設定。
偵錯機器500提供了設定多重中斷或監看點之具彈性與使用者設置的方法,以及對該等處理資源150之任何個別、池或任選的群組提供複雜的觸發方案。該偵錯機器500亦可由於觀察到一觸發方案的發生後,致能/除能內部追跡記錄模組及靜態事件過濾器600。
每個偵錯機器500包含一EvenWatchInst先進先出(FIFO)暫存器510,用於儲存由該偵錯機器500監看的事件, 及一ActionListInst FIFO暫存器515,用於儲存在偵測到來自該EvenWatchInst FIFO 510的一特殊事件時進行的該動作。這些暫存器透過該動態偵錯介面540使用其個別的指令來程式化。每個偵錯機器500亦包含一從該EvenWatchInst及ActionListInst暫存器兩者獲取輸出的事件服務模組520,並將它們與來自該控制器130之個別子區塊所輸入的該系統管理及配置事件進行比較。該事件服務模組則輸出下列中一至多項:一偵錯Enable信號450,用於致能該相對應處理資源150之本地偵錯及追跡單元151;一來致能(或除能)該靜態事件過濾器600,以將該追跡資訊輸出到該追跡緩衝器440之TraceEnable/Disable 550;一SyncEnable信號555,用於控制與目前偵錯機器500連接在一起的其它偵錯機器。為了偵錯程式化的目的,該等偵錯機器500亦具有來自該動態偵錯介面540之輸入。
第16圖所示為在此所述之本發明特定具體實施例中該等偵錯機器500之實體實施。在此具體實施例中,該EvenWatchInst FIFO 510a及ActionListInst FIFO 515a實際上係實施成共用於所有偵錯機器500之間的兩個指令暫存器檔案。這些整合的暫存器檔案510a及515a透過讀取506及寫入505控制邏輯系統來存取成邏輯上獨立的FIFO。此實施可允許每個偵錯機器500之FIFO深度個別設置成適合該使用者的一特殊實施。
第17圖所示為該等偵錯機器500之串聯能力。此提供了程式化多個複雜邏輯觸發組合的能力。該等偵錯機器500 之SyncEnable信號555係用於產生這些複雜的觸發組合。在所示的觸發方案中,個別觸發事件的單一序列必須接著三個觸發序列的組合,然後在進行一動作之前必須接著另一個單一觸發序列。由於多個偵錯機器500的供給,組合的觸發關係可以同時評估。
EvenWatch指令係用來補捉來自該控制器130內一特定子區塊200到280之單一事件。控制每個偵錯機器500之有限狀態機器(FSM)將尋找在該EvenWatch指令中所指定的該等子區塊事件,並執行在相關ActionList指令中定義的該動作(例如中斷點致能等)。
每個EventWatch指令為44位元寬。有兩個主要種類的EventWatch指令,單一及雙重字元EventWatch指令。雙重字元EventWatch指令為88位元長,並佔用該EventWatchInst FIFO 510內的兩個登錄項。這兩個種類顯示如下:
單一字元EventWatch指令格式
雙重字元EventWatch指令格式
兩種EventWatch指令的個別欄位為:
1. EWOpcode():此為定義該作業格式的一3位元碼。此可為下列中任何一項:
2. SubModuleID():此5位元碼定義了該事件所關連的該子區塊:
3. EventID():此4位元碼定義了該個別子區塊事件,如構成該控制器130之每個子區塊200到280透過介面410提供的每個事件之內所提供的EventID所描述。
4. EventData():此32位元碼定義了正在被監看的個別子區塊200到280,例如在控制器專屬的控制器記憶體190內的pReference欄位。
第18圖所示為對於一單一字元事件監看之偵錯機器500內的資料流。
對於一單一字元事件監看,下一個EventWatch指令係先由EventWatchInst FIFO 510載入到該事件服務模組520內的兩個EventWatch指令緩衝器中的第一個。接著,該等 SubModuleID,EventID及EventData部份係使用一比較器522與該進入控制器130事件相比較。雖然這些僅包含EventID及EventData,然而該SubModuleID仍為已知,是因為每個子區塊具有其本身特定的介面410。該比較的結果則與其它由其它偵錯機器500所進行之比較結果做「OR相加」運算,如果可用的話係使用該OR邏輯區塊523。該OR功能區塊的輸出係用來控制一EventWatch指令解碼器524之輸出,並將包含在該EventWatch指令內的EWOpcode加以解碼。該EventWatch指令解碼器524本身的輸出控制了該ActionList指令解碼器521之輸出,並將關連於該EventWatch指令的ActionList指令加以解碼,該指令係透過一ActionList緩衝器516由ActionList指令FIFO 515於先前所載入。該ActionList指令解碼器521之輸出可為下列中任一項:一偵錯Enable信號,用於控制與所提到之偵錯機器500相關聯的該處理資源150之本地偵錯及追跡單元151;一TraceEnable信號,用於致能來自此點之後的追跡資料之輸出;一SynEnable信號,用於致能偵錯機器500之間的同步化。
除了在一單一字元EventWatch指令內存在的欄位,該雙重字元EventWatch指令包含一組遮罩,其係在對於該EventWatch指令欄位評估之前,根據在該MaskOp欄位指定的指令,而應用到SubmoduleID,EventID及EventData輸入。該MaskOP欄位可為以下數值中任一項:
第19圖所示為在雙重字元EvenWatch正在執行的情況下於一偵錯機器500內的資料流。與一單一字元EventWatch指令之執行的主要差異在於該雙重字元EventWatch指令的字元1之SubModuleID,EventID及EventData欄位與該雙重字元EventWatch指令的字元0進行AND,OR或XOR運算,其係根據上述的MaskOp碼種類。
單一及雙重EventWatch指令皆使用相同的ActionList指令。該ActionList指令致能該等偵錯機器500以執行複雜的中斷點觸發、追跡致能或除能、及多個偵錯機器500之間的同步化,並包含以下的欄位:
第20圖所示為該靜態事件過濾器600之功能方塊圖,該過濾器在傳送它們出去到該追跡資料格式化器壓縮器模組700上以用來補捉之前,執行系統管理及配置事件的過濾。該過濾器模組600亦執行自該控制器130接收之所有事件的時間標記,並使用來自該時間介面420之32位元輸入。
該靜態事件模組透過該靜態介面530,提供一組使用者可程式化之事件過濾器遮罩611到613,其係用來選擇來自一特定子區塊200到280之一特定事件是否必須被補捉。該事件過濾器遮罩係應用到該SubModuleID,EventID及EventData欄位。對於該資料的每一個單一位元而言,在每個事件過濾器遮罩中配置有兩個位元。此即造成將一76位元的過濾器遮罩分派給每個事件過濾器遮罩。這兩個位元之每一個的作業意義如下:
事件過濾器遮罩611到613之使用者可定義的數目可以配置到四個事件過濾器遮罩表610中的一個。每個事件過濾器表610可以包含一使用者可定義數目的事件過濾器遮罩611到613。但是在此特定具體實施例中,這些表格必須包含連續的過濾器遮罩。這些表格透過提供過濾器遮罩子集合,允許更多的可程式能力與硬體資源之有效使用,其可將個別的偵錯機器500致能來使用。
第21圖所示為配置特定的事件過濾器遮罩611到613到特定的事件過濾器遮罩表610。請注意在此範例中,並未使用該過濾器表編號3。
第22圖所示為此處所述之本發明的特定具體實施例之追跡資料格式化器壓縮器700的一功能方塊圖。
該追跡資料格式化器壓縮器模組700壓縮該追跡資料來保證該最佳可能的用途係由有限容量之晶載追跡緩衝器模組所構成。雖然壓縮模組可以與該追跡聚集裝置142或整 合的追跡緩衝器143共同提供,這些仍係設計成聚集及壓縮指令層級或同等者,來自關連於每個處理資源150之每個本地偵錯及追跡單元151之偵錯及追跡資料。當該資料的性質皆為熟知及具有類似的種類時,則該壓縮為最佳化。因此此壓縮器700在從該執行緒偵錯控制器400輸出至統一聚集點142(若顯現的話)之前,作用於熟知的種類及由該靜態事件過濾器600取得的類似形式資料上。
該追跡資料格式化器壓縮器700包含一導引所有已過濾及已具有時間標記的子區塊事件到下一個可用之兩個登錄項FIFO 720的事件開關710,,並形成該等輸入到該欄位基礎關連器730。該FIFO為兩個登錄項並允許儲存單一或雙重字元事件。該事件開關710能夠接受來自該控制器130之十個子區塊200到280內之十個同時的事件。該事件開關永遠寫入到目前可用之最低編號的FIFO 720。
一旦所有的FIFO 720包含至少一個登錄項,或一旦一內部計時器到期時,表示目前FIFO負載循環的結束,然後該等FIFO即推進到該欄位基礎關連器。該內部計時器在當至少一個登錄項進駐於該十個FIFO 720中任一個時載入一固定值,且在當讀出該等事件時重新載入。
該欄位基礎關連器730在每個固定長度事件欄位上執行固定功能作業,以將輸出欄位中的零之數目最大化。此係由參考到該第一FIFO而開拓每個欄位內的空間與時間關連性來完成。因此該第一FIFO即維持不變。FIFO 2到10所得到的總合固定長度欄位及未改變的FIFO 1則在輸入到一內 部符號運行長度編碼器750中之前,輸出到另一個欄位關連的FIFO 740。此內部符號運行長度編碼器750對每個輸入符號執行零運行長度編碼,並造成一組可變長度的輸出符號。這些再次地於載入到一產生最終輸出位元流之內部符號運行長度編碼器770中之前,儲存在一組輸出FIFO 760中。該最終輸出位元流藉由一可變長度封包器780,被封包化成適用於該追跡緩衝器介面440的可變長度封包而。
該追跡封包資料之格式與實體層相關。當該實體層不具有一明確的封包開始信號的情況下,一接收器FSM可使用該固定的訊號標頭與封包長度欄位來超過一些封包,以達到對於該封包輪廓的鎖定。一範例封包格式:
請回頭參考第14圖,該執行緒偵錯控制器500之內部偵錯控制模組580提供在該控制器130內子區塊200到280之個別的子區塊偵錯致能信號及單一步驟功能性。在接收來自任一偵錯機器500的內部偵錯Enable信號時,該內部偵錯控制模組580將該指定的子區塊放置到偵錯模式中。該使用者亦可透過該動態偵錯介面540單一步驟化指定的子區塊。
當本發明的一特定具體實施例已經揭示時,吾人應 可瞭解到此係僅做為範例且可考慮到各種修改方式正。再者,本發明為使用一多重核心處理器之任何裝置或應用程式中的泛用應用,例如像是(但不限於)一行動電話或網際網路協定上的語音(VoIP)閘道器。因此,該特定具體實施例不應視為由下列申請專利範圍所決定之保護範圍的限制。
10‧‧‧未定義
20‧‧‧未定義
115‧‧‧互連
130‧‧‧控制器
140‧‧‧系統記憶體
150‧‧‧處理資源
160‧‧‧系統互連
180‧‧‧專屬記憶體匯流排
190‧‧‧專屬記憶體

Claims (9)

  1. 一種用於一多核心處理器架構之偵錯控制器,其中該多核心處理器架構包含複數個用於處理執行緒的互連處理器元件,該偵錯控制器包含:一執行緒管理器與配置事件輸入,該執行緒管理器與該配置事件輸入配置成接收複數個執行緒參數指示器,該等執行緒參數指示器參數作為複數個參數的指示,該等參數相關於在該多核心處理器架構內至少一個執行緒之功能與/或識別與/或執行位置;複數個偵錯機器,該等偵錯機器之每一者配置成將來自該等複數個執行緒參數指示器之至少一個執行緒參數指示器與一第一複數個預先定義的標準進行比較,其中該等第一複數個預先定義的標準之每一者皆代表一有興趣之執行緒參數指示器,並且產生一追跡致能信號以回應所述比較結果;一靜態事件過濾器,該靜態事件過濾器配置成將複數個執行緒參數指示器之每一者與一第二複數個預先定義的標準進行比較以回應該追跡致能信號,並且基於該等複數個執行緒參數指示器以及該等複數個執行緒參數指示器與該第二複數個預先定義的標準之所述比較結果來產生用於一追跡緩衝之一追跡輸出。
  2. 如申請專利範圍第1項所述之偵錯控制器,其中該等複數個偵錯控制器之每一者包含:一事件監看先進先出(first-in-first-out)暫存器,該暫存器配置成儲存一序列之第一複數個預先定義標準;一動作表列先進先出暫存器,該動作表列先進先出暫存器配置成儲存 一序列之動作指令,該序列之動作指令對應至儲存於該事件監看暫存器之該序列,該等動作指示之每一者指示出待執行動作;以及一事件服務模組,該事件服務模組配置成判斷是否該至少一個執行緒參數指示器匹配於該第一複數個預先定義的標準,其中該等第一複數個預先定義的標準係先進入該序列,假設判斷結果為該至少一個執行緒參數指示器匹配於該第一複數個預先定義的標準,則判斷該相應動作指令是否有指示出一將被致能的追跡動作,假設判斷結果為該相應動作指令有指示出一將被致能的追跡動作,則產生該追跡致能信號。
  3. 如申請專利範圍第1項所述之偵錯控制器,更包含:一靜態介面,該靜態介面配置成按照一使用者程式化之事件過濾器遮罩的形式,將該第二複數個預先定義的標準提供至該靜態事件過濾器。
  4. 如申請專利範圍第1項所述之偵錯控制器,其中該多核心處理器架構更包含一處理器控制器,該處理器控制器包含一些互連個別子單元。
  5. 如申請專利範圍第4項所述之偵錯控制器,更包含:一動態偵錯介面,該動態偵錯介面用於藉由在該等複數個偵錯機器與該靜態事件過濾器之間的介面接合來控制該控制器之該動態作業;以及一子區塊命令介面,該子區塊命令介面用於允許該處理器控制器存取該動態偵錯介面。
  6. 如申請專利範圍第3或5項所述之偵錯控制器,更包含: 一輔助偵錯介面,該輔助偵錯介面配置成允許一外部偵錯主控台存取該靜態介面或該動態偵錯介面。
  7. 如申請專利範圍第1項所述之偵錯控制器,更包含一追跡資料格式化器壓縮器模組,該追跡資料格式化器壓縮器模組配置成接收複數個經產生之追跡輸出且壓縮該等經產生之追跡輸出;一追跡緩衝介面,該追跡緩衝介面用於將來自該追跡資料格式化器壓縮器模組之該等經壓縮之追跡輸出提供至該追跡緩衝。
  8. 如申請專利範圍第7項所述之偵錯控制器,其中該追跡資料格式化器壓縮器模組包含:複數個雙登錄項先進先出暫存器,該等複數個雙登錄項先進先出暫存器包含一第一雙登錄項先進先出暫存器;一事件開關,該事件開關配置成接收經產生之追跡輸出之每一者且將該經產生之追跡輸出引導至該等複數個雙登錄項先進先出暫存器之一者;一欄位基礎關連器(correlator),該欄位基礎關連器配置成接收來自該等複數個雙登錄項先進先出暫存器之該等經產生之追跡輸出且藉由在該經產生之追跡輸出上執行固定功能作業來處理該等經產生之追跡輸出,以藉由參考該經產生之追跡輸出而開拓空間與時間的關連性之方式來極大化零的數目,其中該經產生之追跡輸出係在該第一先進先出暫存器內;複數個欄位關連先進先出暫存器,該等欄位關連先進先出暫存器配置成接收該等經處理之追跡輸出,該等經處理之追跡輸出之每一者包含複數 個符號;一內部符號(intra-symbol)運行長度編碼器,該內部符號運行長度編碼器配置成接收來自該等複數個欄位關連先進先出暫存器之該等經處理之追跡輸出,且藉由對該等經處理之追跡輸出之每一符號執行零運行長度編碼而將該等經處理之追跡輸出進行編碼,造成經編碼之追跡輸出包含可變長度符號;複數個輸出先進先出暫存器,該等輸出先進先出暫存器配置成接收來自該內部符號運行長度編碼器之該等經編碼之追跡輸出;一內部符號(inter-symbol)運行長度編碼器,該內部符號運行長度編碼器配置成基於來自該等複數個輸出先進先出暫存器的該經編碼之追跡輸出來產生一輸出位元流;以及一可變長度封包器,該可變長度封包器配置成從該輸出位元流產生可變長度封包,該等可變長度封包器適於該追跡緩衝器介面。
  9. 如申請專利範圍第1項所述之偵錯控制器,其中該靜態事件過濾器更包含一時間介面,該時間介面配置成提供一時間指示,該時間指示用於將該追跡輸出加以時間標記。
TW102117391A 2004-09-14 2005-09-14 在一多重核心處理器架構內的監視執行緒執行過程的方法以及執行緒層級偵錯控制器 TWI475376B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB0420442A GB0420442D0 (en) 2004-09-14 2004-09-14 Debug in a multicore architecture

Publications (2)

Publication Number Publication Date
TW201333681A true TW201333681A (zh) 2013-08-16
TWI475376B TWI475376B (zh) 2015-03-01

Family

ID=33306559

Family Applications (3)

Application Number Title Priority Date Filing Date
TW094131673A TWI408547B (zh) 2004-09-14 2005-09-14 在一多重核心處理器架構內的監視執行緒執行過程的方法以及執行緒層級偵錯控制器
TW102117390A TWI474162B (zh) 2004-09-14 2005-09-14 在一多重核心處理器架構內的監視執行緒執行過程的方法以及執行緒層級偵錯控制器
TW102117391A TWI475376B (zh) 2004-09-14 2005-09-14 在一多重核心處理器架構內的監視執行緒執行過程的方法以及執行緒層級偵錯控制器

Family Applications Before (2)

Application Number Title Priority Date Filing Date
TW094131673A TWI408547B (zh) 2004-09-14 2005-09-14 在一多重核心處理器架構內的監視執行緒執行過程的方法以及執行緒層級偵錯控制器
TW102117390A TWI474162B (zh) 2004-09-14 2005-09-14 在一多重核心處理器架構內的監視執行緒執行過程的方法以及執行緒層級偵錯控制器

Country Status (7)

Country Link
EP (1) EP1805621B1 (zh)
JP (3) JP5610668B2 (zh)
KR (3) KR101365121B1 (zh)
CN (3) CN101084488B (zh)
GB (1) GB0420442D0 (zh)
TW (3) TWI408547B (zh)
WO (1) WO2006030195A2 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI617986B (zh) * 2014-03-27 2018-03-11 萬國商業機器公司 在電腦中分派多執行緒
TWI633489B (zh) * 2013-11-01 2018-08-21 高通公司 於多核心處理器中並行功能之高效率硬體分派及相關之處理器系統、方法及電腦可讀媒體
TWI739806B (zh) * 2016-04-13 2021-09-21 南韓商三星電子股份有限公司 提供無競爭並列資料堆疊的方法

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9038070B2 (en) 2004-09-14 2015-05-19 Synopsys, Inc. Debug in a multicore architecture
GB0519981D0 (en) 2005-09-30 2005-11-09 Ignios Ltd Scheduling in a multicore architecture
CN100451972C (zh) 2006-09-26 2009-01-14 杭州华三通信技术有限公司 提高多核系统访问临界资源速度的方法和装置
GB2443277B (en) * 2006-10-24 2011-05-18 Advanced Risc Mach Ltd Performing diagnostics operations upon an asymmetric multiprocessor apparatus
US8341604B2 (en) * 2006-11-15 2012-12-25 Qualcomm Incorporated Embedded trace macrocell for enhanced digital signal processor debugging operations
US8380966B2 (en) 2006-11-15 2013-02-19 Qualcomm Incorporated Method and system for instruction stuffing operations during non-intrusive digital signal processor debugging
US8484516B2 (en) * 2007-04-11 2013-07-09 Qualcomm Incorporated Inter-thread trace alignment method and system for a multi-threaded processor
US7962885B2 (en) * 2007-12-04 2011-06-14 Alcatel-Lucent Usa Inc. Method and apparatus for describing components adapted for dynamically modifying a scan path for system-on-chip testing
KR100958303B1 (ko) 2007-12-12 2010-05-19 한국전자통신연구원 멀티코어 시스템 환경에서 내부 코어 간 통신채널을 이용한 모듈 디바이스의 동적 적재 및 실행을 통한 부하 균등화 시스템 및 방법
AT505630B1 (de) * 2008-02-05 2009-03-15 Ver Fachhochschule Technikum W Einrichtung zum koordinierten testen und zur fehlersuche in verteilten eingebetteten mikroprozessorsystemen
JP2010117813A (ja) * 2008-11-12 2010-05-27 Nec Electronics Corp デバッグシステム、デバッグ方法、デバッグ制御方法及びデバッグ制御プログラム
US8495344B2 (en) * 2010-01-22 2013-07-23 Via Technologies, Inc. Simultaneous execution resumption of multiple processor cores after core state information dump to facilitate debugging via multi-core processor simulator using the state information
TWI470421B (zh) * 2010-03-16 2015-01-21 Via Tech Inc 微處理器及其除錯方法
KR101151284B1 (ko) * 2010-04-06 2012-06-08 주식회사 안철수연구소 인젝션 스레드의 네트워크 행위 차단 시스템 및 그 방법
US8766666B2 (en) 2010-06-10 2014-07-01 Micron Technology, Inc. Programmable device, hierarchical parallel machines, and methods for providing state information
CN102655440A (zh) * 2011-03-03 2012-09-05 中兴通讯股份有限公司 对多套Turbo译码器进行调度的方法和装置
TWI497419B (zh) * 2011-10-20 2015-08-21 Via Tech Inc 電腦裝置及其中斷任務分配方法
CN102819218B (zh) * 2012-07-19 2015-04-29 西安交通大学 基于事件控制函数的离散事件系统监控器及其控制方法
US9672041B2 (en) * 2013-08-01 2017-06-06 Andes Technology Corporation Method for compressing variable-length instructions including PC-relative instructions and processor for executing compressed instructions using an instruction table
KR20150019457A (ko) 2013-08-14 2015-02-25 삼성전자주식회사 시스템 온 칩, 이의 동작 방법, 및 이를 포함하는 시스템
CN104331388B (zh) * 2013-08-28 2018-09-11 威盛电子股份有限公司 微处理器及在微处理器的处理核间同步的方法
CN104572515B (zh) * 2013-10-28 2019-05-31 锐迪科(重庆)微电子科技有限公司 跟踪模块、方法、系统和片上系统芯片
CN103631752A (zh) * 2013-12-19 2014-03-12 无锡美森微电子科技有限公司 一种众核处理器片上网络实时通信时间戳方法及系统
US9626265B2 (en) 2015-06-29 2017-04-18 International Business Machines Corporation Efficiency of cycle-reproducible debug processes in a multi-core environment
CN105740155A (zh) * 2016-03-09 2016-07-06 惠州Tcl移动通信有限公司 一种Modem CPU的调试实现方法及实现系统
US9875167B1 (en) * 2017-03-29 2018-01-23 Google Inc. Distributed hardware tracing
US10365987B2 (en) 2017-03-29 2019-07-30 Google Llc Synchronous hardware event collection
CN107678892B (zh) * 2017-11-07 2021-05-04 黄淮学院 基于跳跃恢复链的连续数据保护方法
US10579501B2 (en) 2018-04-04 2020-03-03 International Business Machines Corporation Testing and reproduction of concurrency issues
US11074078B2 (en) * 2018-05-07 2021-07-27 Micron Technology, Inc. Adjustment of load access size by a multi-threaded, self-scheduling processor to manage network congestion
US11513838B2 (en) * 2018-05-07 2022-11-29 Micron Technology, Inc. Thread state monitoring in a system having a multi-threaded, self-scheduling processor
US11513840B2 (en) * 2018-05-07 2022-11-29 Micron Technology, Inc. Thread creation on local or remote compute elements by a multi-threaded, self-scheduling processor
US11513839B2 (en) * 2018-05-07 2022-11-29 Micron Technology, Inc. Memory request size management in a multi-threaded, self-scheduling processor
US11119782B2 (en) * 2018-05-07 2021-09-14 Micron Technology, Inc. Thread commencement using a work descriptor packet in a self-scheduling processor
CN113352329A (zh) * 2021-06-28 2021-09-07 珠海市一微半导体有限公司 机器人多系统调试信息的实时序列化方法及机器人
CN116340188B (zh) * 2023-05-26 2023-08-04 深流微智能科技(深圳)有限公司 Gpu芯片渲染任务的调试方法及系统

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2538897B2 (ja) * 1987-01-14 1996-10-02 富士通株式会社 デ−タ処理装置
JP2627464B2 (ja) * 1990-03-29 1997-07-09 三菱電機株式会社 集積回路装置
JPH05324399A (ja) * 1992-03-23 1993-12-07 Toshiba Corp 情報監視装置
JPH06161817A (ja) * 1992-11-18 1994-06-10 Yokogawa Electric Corp スレッドオンラインデバッグ装置
JP2866591B2 (ja) * 1994-01-10 1999-03-08 インターナショナル・ビジネス・マシーンズ・コーポレイション オブジエクトの使用可能性の通知方法及び装置
JPH0816430A (ja) * 1994-06-27 1996-01-19 Mitsubishi Electric Corp 並列プログラムトレース装置
US5835705A (en) * 1997-03-11 1998-11-10 International Business Machines Corporation Method and system for performance per-thread monitoring in a multithreaded processor
UA55489C2 (uk) * 1997-10-07 2003-04-15 Каналь+ Сосьєте Анонім Пристрій для багатопотокової обробки даних (варіанти)
JPH11338733A (ja) * 1998-02-27 1999-12-10 Toshiba Corp デバッグ装置及び記録媒体
US6625635B1 (en) * 1998-11-02 2003-09-23 International Business Machines Corporation Deterministic and preemptive thread scheduling and its use in debugging multithreaded applications
US6593940B1 (en) * 1998-12-23 2003-07-15 Intel Corporation Method for finding errors in multithreaded applications
JP3604029B2 (ja) * 1999-01-12 2004-12-22 日本電気株式会社 マルチスレッドプロセッサ
US6587967B1 (en) * 1999-02-22 2003-07-01 International Business Machines Corporation Debugger thread monitor
US7013415B1 (en) * 1999-05-26 2006-03-14 Renesas Technology Corp. IC with internal interface switch for testability
DE60038976D1 (de) * 1999-09-01 2008-07-03 Intel Corp Registersatz zur verwendung in einer parallellen mehrfachdrahtprozessorarchitektur
WO2001018651A1 (en) * 1999-09-07 2001-03-15 Koninklijke Philips Electronics N.V. Thread-oriented debugging
US6487683B1 (en) * 1999-10-01 2002-11-26 Stmicroelectronics Limited Microcomputer debug architecture and method
US6668275B1 (en) * 1999-12-17 2003-12-23 Honeywell International Inc. System and method for multiprocessor management
US6625654B1 (en) * 1999-12-28 2003-09-23 Intel Corporation Thread signaling in multi-threaded network processor
JP2002014841A (ja) * 2000-06-30 2002-01-18 Esol Co Ltd デバッグカーネルシステム
US7448025B2 (en) * 2000-12-29 2008-11-04 Intel Corporation Qualification of event detection by thread ID and thread privilege level
US7823131B2 (en) * 2001-06-29 2010-10-26 Mentor Graphics Corporation Debugger for a hardware-implemented operating system
CN1170225C (zh) * 2001-08-28 2004-10-06 华为技术有限公司 自动测试系统的仪器模块驱动实现方法
JP2003131902A (ja) * 2001-10-24 2003-05-09 Toshiba Corp ソフトウェアデバッガ、システムレベルデバッガ、デバッグ方法、及びデバッグプログラム
JP2003263331A (ja) * 2002-03-07 2003-09-19 Toshiba Corp マルチプロセッサシステム
JP2004021751A (ja) * 2002-06-19 2004-01-22 Matsushita Electric Ind Co Ltd デバッグ装置、デバッグプログラム、およびデバッグプログラム記録媒体
GB0407384D0 (en) * 2004-03-31 2004-05-05 Ignios Ltd Resource management in a multicore processor
JP2006053835A (ja) * 2004-08-13 2006-02-23 Sony Corp 情報処理装置、デバッグ方法及びそのプログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI633489B (zh) * 2013-11-01 2018-08-21 高通公司 於多核心處理器中並行功能之高效率硬體分派及相關之處理器系統、方法及電腦可讀媒體
TWI617986B (zh) * 2014-03-27 2018-03-11 萬國商業機器公司 在電腦中分派多執行緒
TWI739806B (zh) * 2016-04-13 2021-09-21 南韓商三星電子股份有限公司 提供無競爭並列資料堆疊的方法

Also Published As

Publication number Publication date
JP5610668B2 (ja) 2014-10-22
TWI475376B (zh) 2015-03-01
CN102521137B (zh) 2015-10-28
EP1805621B1 (en) 2016-08-17
JP2013127782A (ja) 2013-06-27
CN102508781B (zh) 2015-10-14
GB0420442D0 (en) 2004-10-20
CN101084488A (zh) 2007-12-05
KR20070083590A (ko) 2007-08-24
WO2006030195A2 (en) 2006-03-23
TW201333680A (zh) 2013-08-16
TWI408547B (zh) 2013-09-11
CN101084488B (zh) 2012-03-14
KR20130032413A (ko) 2013-04-01
CN102508781A (zh) 2012-06-20
TWI474162B (zh) 2015-02-21
KR101311846B1 (ko) 2013-09-27
JP2013239196A (ja) 2013-11-28
TW200613964A (en) 2006-05-01
JP2008513853A (ja) 2008-05-01
EP1805621A2 (en) 2007-07-11
KR20120097422A (ko) 2012-09-03
WO2006030195A3 (en) 2007-02-22
CN102521137A (zh) 2012-06-27
KR101365121B1 (ko) 2014-03-12
JP5492280B2 (ja) 2014-05-14
JP5492332B2 (ja) 2014-05-14
KR101248175B1 (ko) 2013-03-27

Similar Documents

Publication Publication Date Title
TWI475376B (zh) 在一多重核心處理器架構內的監視執行緒執行過程的方法以及執行緒層級偵錯控制器
US9830241B2 (en) Debug in a multicore architecture
US7870437B2 (en) Trace data timestamping
US20110239196A1 (en) Micro-Task Pipeline Visualization
US9639447B2 (en) Trace data export to remote memory using remotely generated reads
JP2011243110A (ja) 情報処理装置
JP2014142946A (ja) マルチスレッドプロセッサのためのインタースレッドトレースアライメント方法およびシステム
GB2404753A (en) Trace source correlation in a data processing apparatus
EP2847683B1 (en) Processor device with instruction trace capabilities
Kristiansen et al. A methodology to model the execution of communication software for accurate network simulation
Stollon Multicore Debug
Stollon et al. Nexus IEEE 5001
Ciordas Monitoring-aware network-on-chip design
Jung et al. A Fast Performance Analysis Tool for Multicore, Multithreaded Communication Processors
Elmahi Verification of the Performance Properties of Embedded Streaming Applications via Constraint-Based Scheduling