多核處理器故障處理方法及多核處理器的製作方法
2023-09-21 22:38:40 1
專利名稱:多核處理器故障處理方法及多核處理器的製作方法
技術領域:
本發明涉及通信技術領域,具體涉及一種多核處理器故障處理方法及多核處理器。
技術背景
多核處理器例如數位訊號處理器(digital signal processor, DSP)是一種是以 數位訊號來處理大量信息的器件,是數位化電子世界中日益重要的電腦晶片。隨著語音、視 頻和數據「三合一」服務成為業界潮流,下一代有線和無線基礎設施對DSP的處理能力要求 越來越高。為了滿足大量並行處理能力需求,業界廠商相繼推出了多核DSP,即處理器中集 成有兩個或多個完整的內核的DSP。多核DSP可以通過並行處理來實現性能可擴展性,並允 許多個內核在單個晶片上處理多條線程。基於多核DSP的系統能通過共享硬體隊列來實現 顯著的性能提升。
現有的多核DSP中,各個內核的運行一般是相互獨立的。當其中一個內核發生異 常時,該內核會掛起,此時其它內核繼續運行。內核發生異常的原因有兩種,一是該內核自 身發生異常,二是其它內核發生異常,因跨核讀寫導致核間幹擾,引起該內核異常。由於核 間相互獨立,當其中一個內核異常掛起時,其它內核繼續運行,不能保留異常發生時的多核 現場,無法提取完整的多核信息;這就導致在因核間幹擾引起內核掛起時,由於未保留多核 現場,信息不全,無法定位引起核間幹擾的內核,從而無法對異常原因進行分析。發明內容
本發明實施例提供一種多核處理器故障處理方法和相應的多核處理器。
一種多核處理器故障處理方法,包括
各個內核檢測自身的運行狀態,或者,
確定一個內核作為主內核,所述主內核檢測其它內核的運行狀態;
當一個內核被檢測到出現異常後,同步掛起所有內核。
一種多核處理器,包括
檢測單元,用於檢測內核的運行狀態;
處理單元,用於當一個內核被檢測到出現異常後,同步掛起所有內核。
本發明實施例採用在任一個內核發生異常時,由該異常內核或者預先確定的主內 核同步掛起所有內核的技術方案,可以在異常發生時保留多核現場。
圖1是本發明提供的多核處理器故障處理方法實施例的流程圖2是本發明提供的多核處理器實施例的示意圖。
具體實施方式
本發明實施例提供一種多核處理器故障處理方法,採用在任一個內核發生異常3時,由該異常內核或者預先確定的主內核同步掛起所有內核的技術方案,可以在異常發生 時保留多核現場。本發明實施例還提供相應的多核處理器。以下分別進行詳細說明。
請參考圖1,本發明實施例提供一種多核處理器故障處理方法,包括以下步驟
101、各個內核檢測自身的運行狀態,或者,確定一個內核作為主內核,該主內核檢 測其它內核的運行狀態。
一種實施方式中,如果多核處理器提供有內存保護機制,則每個內核都可以檢測 自身的運行狀態。
在另一種實施方式中,可以從多核處理器的多個內核中確定一個內核作為住內 核,由該主內核檢測其它內核的運行狀態。
可以隨機確定一個內核作為主內核;也可以根據歷史記錄的內核異常次數,選定 一個異常次數最少的內核作為主內核;還可以在運行過程中,改變已確定的主內核,例如, 將發生異常的內核改為主內核;當然,還可以根據其它方式確定主內核。
已確定的主內核被用來檢測其它內核的運行狀態,可以按照預設的周期定時檢 測,也可以按照預定的時刻檢測,還可以按照其它的方式進行檢測。所說的運行狀態主要包 括正常和異常,發生異常的內核將在一定時間內停止運行。每個內核可以預設一個用於表 示其運行狀態的狀態參數,主內核可以通過讀取並判斷其它內核的狀態參數來檢測其它內 核的運行狀態。
102、當一個內核被檢測到出現異常後,同步掛起所有內核。
在一種實施方式中,發生異常的內核可以按照預設的方式將所有內核同步掛起, 包括先掛起異常內核以外其它內核,再自行掛起。
在另一種實施方式中,主內核檢測到主內核以外其它內核中的任意一個異常後, 該主內核可以按照預設的方式將所有內核同步掛起,包括先掛起主內核以外其它內核,再 自行掛起。
採用本實施例的方法,多核處理器的任一個內核發生異常時,可以同步掛起所有 內核,保留了異常發生時的多核現場及完整的信息,從而可以定位引發異常的內核,可以對 掛起的原因進行分析。
在其它實施例中,步驟102中同步掛起所有內核可以採用多種方式實現
在一個實施例中,可以通過改寫內核的被保護存儲地址掛起內核。
本實施例方法基於多核處理器提供的內存保護機制。內存保護機制為每一個內核 設有一個被保護的存儲地址,若發生的異常致使該存儲地址中的數據被改寫,則該內核即 掛起。
本實施例是通過由發生異常的內核同步改寫異常內核以外其它內核的被保護存 儲地址同步掛起異常內核以外其它內核;或者,主內核同步改寫主內核以外其它內核的被 保護存儲地址,實現將主內核以外其它內核掛起。
其中,發生異常的內核可以根據內存保護機制下記錄的異常訪存源地址,計算分 析造成該主內核異常的內核,將其掛起。
在一個實施例中,可以通過觸發核間共享信號量掛起內核。
本實施例方法基於多核處理器提供的核間共享信號量機制。信號量通常用來協調一組相互競爭的任務對它們共享資源的訪問。信號量有一個非負整數的內部計數(count),它對應於可以獲得的資源的數目。信號量隊列中的每一個任務在進入就緒隊列之前,必須 獲得一個信號量。如果一個等待的任務獲得的信號量的計數值大於0,則該任務可以進入 就緒隊列,不會阻塞,同時該信號量的計數值會減1 ;如果一個等待的任務獲得的信號量的 計數值為0,說明當前沒有可以利用的資源,則該任務會掛起(停止運行)。任務掛起後的 等待時間由預設的超時參數確定,超時參數包括0、預設時間和無限等待(SYS_F0REVER)三 種。如果超時參數為無限等待,該掛起的任務為一直異常,直到獲得不為0的信號量。
本實施例中,多核處理器預先設置一個核間共享信號量並賦予初值,所賦的初值 為0。一個實施例中,開啟並使用了內存保護機制的多核處理器,其任一個內核可以自檢到 本核異常,從而發生異常的內核檢測到自身異常後,可以在自行掛起之前,觸發該核間共享 信號量,則異常內核以外其它內核獲得該核間共享信號量後掛起。另一個實施例中,主內核 在檢測到任意一個內核異常後,觸發該核間共享信號量,主內核以外其它內核獲得該核間 共享信號量後掛起。各個內核可以添加優先級最高的任務,將任務的超時參數設置為無限 等待。這樣,在獲得異常內核或者主內核觸發的核間共享主內核發送的信號量後,可以在第 一時間掛起。
在一個實施例中,可以通過觸發核間中斷掛起內核。
本實施例方法基於多核處理器提供的核間中斷機制。處理器在執行程序的過程 中,當出現異常情況或特殊請求時,處理器停止現當前程序的運行,轉向對這些異常情況或 特殊請求的處理,處理結束後再返回當前程序的間斷處,這就是「中斷」。中斷是現代計算機 能有效合理地發揮效能和提高效率的一個十分重要的功能。
多核處理器提供四種不同類型的執行線程用於中斷硬體中斷,軟體中斷、任務和 後臺線程。每一類線程又具有不同的執行、搶先和懸掛特性。
硬體中斷是從外部影響應用程式進行的一種方式,典型的硬體中斷是由片上外圍 器件或者外部設備引起的。中斷觸發後,處理器將轉向相應的中斷向量表。中斷處理的完 成一般需要兩個程序一個是設置各種中斷寄存器的程序,一般在主程序中完成;另一個 是中斷服務子程序ISR,一般用於響應中斷。
本實例可以通過硬體中斷的方式來實現多核同步掛起首先,多核處理器預先設 置一個核間硬體中斷。一個實施例中,開啟並使用了內存保護機制的多核處理器,其任一個 內核可以自檢到本核異常,從而發生異常的內核檢測到自身異常後,可以在自行掛起之前, 觸發該核間中斷,通知異常內核以外其他內核,其他內核在中斷服務程序中,執行系統掛起 操作,實現同步掛起。另一個實施例中,主內核在檢測到任意一個內核異常後,觸發核間中 斷,通知主內核以外其他內核,其他內核在中斷服務程序中,執行系統掛起操作,實現同步 掛起。
軟體中斷的優先級低於硬體中斷,但高於任務和後臺線程,它必須等到所有未結 束的硬體中斷都執行完才會開始執行。軟體中斷是通過調用DSP/BI0S的API函數觸發的, 它必須執行到完成。軟體中斷可以通過調用軟體中斷函數來觸發,一種觸發方式是用軟體 中斷指令(Software Interrupt, SWI)的 API (Application Programming Interface)函數 通過對SWI對象的存儲空間進行操作來啟動。每個SWI對象都有一個存儲空間例如32bit 的郵箱,它可以作為軟體中斷函數裡的一個可修改的值,用來決定是否觸發一個軟體中斷。
本實例也可以通過軟體中斷的方式來實現多核同步掛起首先,多核處理器預先設置一個軟體中斷向量;一個實施例中,開啟並使用了內存保護機制的多核處理器,其任一 個內核可以自檢到本核異常,從而發生異常的內核檢測到自身異常後,可以在自行掛起之 前,觸發該核間中斷,異常內核以外其他內核在中斷服務程序中,執行系統掛起操作,實現 同步掛起。另一個實施例中,主內核在檢測到任意一個內核異常後,觸發軟體核間中斷,主 內核以外其他內核在中斷服務程序中,執行系統掛起操作,實現同步掛起。
本實施例中,還可以通過其它中斷方式來實現多核同步掛起。需要說明的是,本實 施例需要多核處理器提供核間中斷資源共享。
在上述若干個實施例基礎上,異常內核同步掛起異常內核以外其它內核之後自行 掛起,或者主內核在同步掛起主內核以外其它內核後自行掛起。
本發明實施例提供了基於內存保護機制、核間共享信號量機制和核間中斷機制等 多種在異常發生時可以使多個內核同步掛起的方法,以保留異常發生時的多核現場。從而, 任何提供了上述三種機制中的一種的數位訊號處理器,都可以採用本發明實施例方法同步 掛起多個內核,來定位引發異常的內核,對掛起的原因進行分析。
請參考圖2,本實施例提供一種多核處理器,包括
檢測單元201,用於檢測內核的運行狀態。
處理單元202,用於當一個內核被檢測到出現異常後,,同步掛起所有內核。
在一個實施例中,檢測單元201包括分設於各個內核中的子檢測單元。各個內核 可以通過所設的子檢測單元檢測自身是否出現異常,各個內核可以掛起所有內核。
在另一個實施例中,檢測單元201設於主內核中,用於檢測所有內核的運行狀態。
在一個實施例中,處理單元202,具體用於通過同步改寫該處理單元所在內核以外 其它內核的被保護存儲地址同步掛其它內核。
在一個實施例中,處理單元202,具體用於通過觸發核間共享信號量同步掛起該處 理單元所在內核以外其它內核。
在一個實施例中,處理單元202,具體用於通過觸發核間中斷同步掛起該處理單元 所在內核以外其它內核。
本實施例的多核處理器,其處理單元可以基於內存保護機制、核間共享信號量機 制和核間中斷機制等多種方式,可以在異常發生時使所有內核同步掛起,以保留異常發生 時的多核現場及完整的信息,從而可以定位引發異常的內核,可以對掛起的原因進行分析。
以上對本發明實施例所提供的多核處理器故障處理方法及多核處理器進行了詳 細介紹,本文中應用了具體實施例對本發明的原理及實施方式進行了闡述,以上實施例的 說明只是用於幫助理解本發明的方法及其核心思想不應理解為對本發明的限制。權利要求
1.一種多核處理器故障處理方法,其特徵在於,包括 各個內核檢測自身的運行狀態,或者,確定一個內核作為主內核,所述主內核檢測其它內核的運行狀態; 當一個內核被檢測到出現異常後,同步掛起所有內核。
2.根據權利要求1所述的方法,其特徵在於,所述同步掛起所有內核包括異常內核通過同步改寫異常內核以外其它內核的被保護存儲地址同步掛異常內核以 外其它內核;或者所述主內核通過同步改寫主內核以外其它內核的被保護存儲地址同步掛主內核以外 其它內核。
3.根據權利要求1所述的方法,其特徵在於,所述同步掛起所有內核包括 異常內核通過觸發核間共享信號量同步掛起異常內核以外其它內核;或者 所述主內核通過觸發核間共享信號量同步掛起主內核以外其它內核。
4.根據權利要求1所述的方法,其特徵在於,所述同步掛起所有內核包括 異常內核通過觸發核間中斷同步掛起異常內核以外其它內核;或者 所述主內核通過觸發核間中斷同步掛起主內核以外其它內核。
5.根據權利要求2、3或4所述的方法,其特徵在於,異常內核同步掛起異常內核以外其 它內核之後還包括異常內核自行掛起。
6.根據權利要求2、3或4所述的方法,其特徵在於,主內核同步掛起主內核以外其它內 核之後還包括主內核自行掛起。
7.根據權利要求1所述的方法,其特徵在於,所述主內核檢測其它內核的運行狀態具 體包括所述主內核按照預設的周期檢測其它內核的運行狀態。
8.一種多核處理器,其特徵在於,包括 檢測單元,用於檢測內核的運行狀態;處理單元,用於當一個內核被檢測到出現異常後,同步掛起所有內核。
9.根據權利要求8所述的多核處理器,其特徵在於 所述檢測單元包括分設於各個內核中的子檢測單元。
10.根據權利要求8所述的多核處理器,其特徵在於 所述檢測單元設於主內核中。
11.根據權利要求8所述的多核處理器,其特徵在於所述處理單元,具體用於通過同步改寫該處理單元所在內核以外其它內核的被保護存 儲地址同步掛其它內核。
12.根據權利要求8所述的多核處理器,其特徵在於所述處理單元,具體用於通過觸發核間共享信號量同步掛起該處理單元所在內核以外 其它內核。
13.根據權利要求8所述的多核處理器,其特徵在於所述處理單元,具體用於通過觸發核間中斷同步掛起該處理單元所在內核以外其它內核。
全文摘要
本發明公開了一種多核處理器故障處理方法,包括各個內核檢測自身的運行狀態,或者,確定一個內核作為主內核,所述主內核檢測其它內核的運行狀態;當一個內核被檢測到出現異常後,同步掛起所有內核。本發明實施例還提供相應的多核處理器。本發明技術方案可以實現在異常發生時將多個內核同步掛起。
文檔編號G06F15/16GK102043690SQ20101061992
公開日2011年5月4日 申請日期2010年12月31日 優先權日2010年12月31日
發明者石健偉, 謝思敏, 顧雪芹 申請人:上海華為技術有限公司