TWI550514B - Computer execution method and computer system for starting a computer system having a plurality of processors - Google Patents
Computer execution method and computer system for starting a computer system having a plurality of processors Download PDFInfo
- Publication number
- TWI550514B TWI550514B TW104102017A TW104102017A TWI550514B TW I550514 B TWI550514 B TW I550514B TW 104102017 A TW104102017 A TW 104102017A TW 104102017 A TW104102017 A TW 104102017A TW I550514 B TWI550514 B TW I550514B
- Authority
- TW
- Taiwan
- Prior art keywords
- task
- tasks
- chart
- dependent
- dtc
- Prior art date
Links
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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4405—Initialisation of multiprocessor systems
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Description
本發明主要涉及電腦領域,尤其涉及一種優化的用於啟動具有複數個處理器(CPUs)的電腦的電腦執行方法及其電腦系統。
工作站、個人電腦和/或伺服器(以下簡稱“電腦系統”或“電腦”)通常包括基本輸入/輸出系統(BIOS),所述BIOS充當電腦硬體和安裝在該電腦上的至少一個作業系統之間的介面。所述BIOS還可能具有用於觸發和初始化電腦硬體服務的至少一個軟體代碼和/或韌體和/或指令,例如晶片組驅動、視頻、基本鍵盤、I/O埠、磁碟機等主機板服務。除初始化服務外,BIOS也可以尋找與外設卡相關的硬體和駐留在外設卡之上的控制器,其中所述外設卡可包括但不限於PCI卡。BIOS指令和/或韌體和/或指令通常儲存在電腦的快閃記憶體內,所述快閃記憶體儲存在某個位置,當電腦系統開啟時,所述位置由電腦的處理器讀取並處理。當電腦系統開機時,所述BIOS指令也被初始化。
進一步地,所述電腦的快閃記憶體也可包括專門用來檢查系統中的特定硬體的軟體。當系統開機時,所述軟體進行上電自檢(POST),以檢查所述電腦系統中的硬體。所述處理器也可基於所述快閃記憶體中的軟體的指令進行冷開機的磁碟機POST和隨機存取記憶體(RAM)上電自檢(POST);另外,為減少系統的啟動時間,啟動過程中,所述軟體也可指示所述處理器跳過對一個或複數個硬體設備的POST。
第1圖示出了傳統電腦系統的典型啟動過程。如第1圖所示,當系統開機時,從BIOS處開始啟動。BIOS進行上電自檢(POST)以初始化所有設備,包括RAM和CPU,以及其他設備,如鍵盤、顯示器等。若所述系統是一個多核或多處理器系統,將其中一個CPU確定為啟動CPU用以執行BIOS和內核初始化代碼。剩餘處理器通常稱為應用處理器(AP),其在被作業系統(OS)的內核初始化之前都處於空閒狀態。一旦BIOS初始化完成,定位啟動設備,將開機載入程式載入到RAM中,並將控制邏輯傳遞給所述開機載入程式。所述開機載入程式確定啟動OS的哪個內核,將確定的OS載入到RAM中並將控制邏輯傳遞給所述確定的OS。當OS的內核開始執行時,其初始化資源和資料結構,可包括但不限於剩餘應用處理器的初始化,並最終執行用於初始化電腦系統所有服務的初始化腳本。
傳統意義上講,電腦系統通過使用單個CPU按循序執行啟動過程。為優化連續處理的啟動時間,目前可使用各種方法。以下提到幾種現存的優化啟動時間的方法: 1.減小啟動/作業系統的大小。 2.多線程執行服務和/或初始化腳本的至少一個路線的初始化。 3.硬體輔助/加速啟動步驟使用更快緩存/存放裝置。 4.並存執行使用多處理器/多核的某些啟動步驟。啟動處理器/內核將BIOS的某個任務塊調度到其他內核進行並存執行。啟動處理器/內核等到/檢測到其他內核完成了它們的任務,繼續啟動過程。第2圖示出了BIOS/初始化腳本的並行化。 5.快照啟動方法。
雖然上述方法用來優化電腦系統的啟動時間,在啟動過程中和減少啟動時間上,這些方法仍然具有耗費時間的巨大缺陷。
為避免上述缺陷、優化啟動時間,“華為技術有限公司”於2012年在專利申請號PCT/CN2013/072764中提出了“具有多個處理器的電腦系統的啟動方法”(以下簡稱先前技術)。所述先前技術中公開了具有多個處理器的電腦系統的啟動方法,其提供了使用任務描述圖表(TDC)的整個啟動過程的並行處理框架。TDC包括使電腦系統正常工作而必須執行的所有任務。所述先前技術公開了整個啟動過程的完全並行化。PCT/CN2013/072764的先前技術中,調度程式取決於目標的TDC。實際調度發生在啟動期間。任務調度期間,檢查優先順序、依賴關係和任務狀態。第3圖示出了多核/處理器上的並行啟動方法。
雖然先前技術申請通過並存執行整個啟動過程來優化啟動時間,所公開的方法仍然存在缺陷。以下提到其中幾種缺陷: 1.在任務調度過程中對優先順序、依賴關係和任務狀態的檢查增加了系統的性能開銷。 2.啟動時間內任務量大時(這一情況通常存在於許多系統中),調度開銷增大。 3.調度發生在目標上,因而增加了啟動過程的開銷。 4.依賴關係檢查在目標上完成,也增加了啟動過程的開銷。 5.認為目標上有記憶體需求,啟動過程管理可能會增加一定的開銷。 6.同樣,依賴關係檢查和線上調度決策可能會阻礙內核的完全利用。
雖然優化啟動過程時間的技術正在增強,但仍然需要優化具有多個CPU的電腦的啟動時間。相應地,一種優化的低開銷、啟動時間少的用於啟動具有多個處理器(CPUs)的電腦的方法和系統是值得擁有的,但還未提供。
本發明內容介紹了低開銷、啟動時間少的用於優化具有複數個處理器(CPUs)的電腦啟動時間的電腦系統及電腦執行方法相關的內容,下面進一步詳細描述這些內容。
本發明內容不旨在確定所要求保護的本發明的基本特徵,也不旨在確定或限定所要求保護的本發明的範圍。
上述問題得到了處理,且本發明技術方案提供了一種優化的低開銷、啟動時間少的用於啟動具有複數個處理器(CPUs)的電腦的電腦執行方法和電腦系統。
因此,本發明的主要目的是提供一種優化的低開銷、啟動時間少的用於啟動具有複數個處理器(CPUs)的電腦的電腦執行方法和電腦系統。
相應地,本發明一實施例公開了一種電腦執行方法,當由複數個CPU的複數個初始化CPU執行時,所述電腦執行方法用於啟動具有複數個處理器(CPUs)的電腦系統。所述電腦執行方法可以回應啟動指令,所述啟動指令在電腦系統開機時發起。根據所述方法,訪問儲存在所述電腦系統的任務描述圖表(TDC)。所述訪問的TDC可包括啟動過程的複數個任務的位址資訊和選擇資訊。所述複數個任務可包括使電腦系統正常工作而必須執行的所有任務。所述訪問的TDC的分類是基於TDC中的複數個任務的依賴關係。
對TDC進行分類,以生成一個獨立任務圖表(ITC)和一個依賴任務圖表(DTC)。ITC包括獨立於任何其他任務的一組任務。DTC包括對TDC的任何其他任務有至少一種依賴關係的一組任務。所述方法還包括將DTC分成第一依賴任務圖表(DTC 1)和第二依賴任務圖表(DTC 2)。DTC 1包括來自DTC的對從ITC的一組任務中選擇的至少一個任務有至少一種依賴關係的一組任務。DTC 2包括來自DTC的對從DTC 1的一組任務中選擇的至少一個任務或從DTC 2的一組任務中選擇的至少一個任務有至少一種依賴關係的一組任務。
根據所述方法,選擇並執行所述ITC中的至少一個任務。由於所有任務按優先順序排列,基於相對於ITC中其他任務的所述任務的優先順序從ITC中選擇至少一個任務。檢查所選擇的至少一個任務是否已經執行。若所述任務之前沒有執行,執行所述任務,然後基於優先順序從ITC選擇並執行下一個任務。若所述任務已經執行,基於優先順序從ITC選擇下一個任務。任務的執行狀態可從狀態位元寄存器中獲取,所述狀態位元寄存器儲存任務執行情況的所有資訊。
當ITC中的所有任務都執行後,所述方法從DTC 1選擇任務。基於任務的選擇資訊,更具體地講,基於DTC 1中任務的優先順序選擇DTC 1中的所有任務。DTC 1的優先順序是基於DTC 1的任務對ITC的依賴關係。所述方法從DTC 1選擇至少一個任務,並檢查所選擇的任務是否已經執行。若所述任務之前沒有執行,執行所述任務,然後基於優先順序從DTC 1選擇並執行下一個任務。若所述任務已經執行,基於優先順序從DTC 1選擇下一個任務。相應地,檢查所述狀態位元寄存器來確定未執行的任務。
在一種實現中,DTC 1任務基於優先順序排列。DTC 1中的任務只對ITC中的任務有依賴關係。因此,在DTC 1任務的執行過程中,所述任務按優先順序排列,因此,調度程式可以彈出並執行任務。
不需要其他的檢查。基於保存在狀態寄存器中的位元遮罩執行所述任務,因此,執行速度更快。具體的運行方式將在下面的部分進行解釋。
當DTC 1中的所有任務都執行後,所述方法從DTC 2選擇任務。基於任務的選擇資訊,更具體地講,基於DTC 2中任務的優先順序選擇DTC 2中的所有任務。DTC 2的優先順序是基於來自DTC 2的任務對DTC 1和DTC 2的依賴關係。所述方法從DTC 2選擇至少一個任務,並檢查所選擇的任務是否已經執行。若所述任務之前沒有執行,執行所述任務,然後基於優先順序從DTC 2選擇並執行下一個任務。若所述任務已經執行,基於優先順序從DTC 2選擇下一個任務。相應地,檢查所述狀態位元寄存器來確定未執行的任務。
本發明另一實施例中公開了一種電腦系統,當由複數個處理器(CPU)的複數個初始化CPU執行時,所述電腦系統用於優化具有複數個處理器(CPUs)的電腦系統的啟動時間。所述電腦系統可以回應啟動指令,所述啟動指令在電腦系統開機時發起。當由與記憶體耦合的複數個CPU中的複數個初始化CPU執行時,所述系統包括複數個處理器(CPUs)。所述記憶體中可儲存複數個指令。所述指令由與所述記憶體耦合的複數個(CPUs)執行。根據所述系統,當所述指令在啟動時間內發起時,所述複數個處理器(CPUs)訪問儲存在電腦系統中的任務描述圖表(TDC)。所述訪問的TDC可包括啟動過程的複數個任務的位址資訊和選擇資訊。所述複數個任務可包括使電腦系統正常工作而必須執行的所有任務。所述訪問的TDC的分類是基於TDC中的複數個任務的依賴關係。對所述訪問的TDC進行分類,以生成一個獨立任務圖表(ITC)和一個依賴任務圖表(DTC)。ITC包括獨立於任何其他任務的一組任務。DTC包括對TDC的任何其他任務有至少一種依賴關係的一組任務。所述系統進一步將DTC分成第一依賴任務圖表(DTC 1)和第二依賴任務圖表(DTC 2)。DTC 1包括來自DTC的對從ITC的一組任務中選擇的至少一個任務有至少一種依賴關係的一組任務。
DTC 2包括來自DTC的對從DTC 1的一組任務中選擇的至少一個任務或從DTC 2的一組任務中選擇的至少一個任務有至少一種依賴關係的一組任務。
根據所述系統,選擇並執行所述ITC中的至少一個任務。基於所述選擇資訊,更具體地講,基於相對於ITC中的其他任務的所述任務的優先順序從ITC選擇所述至少一個任務。檢查所選擇的至少一個任務是否已經執行。若所述任務之前沒有執行,執行所述任務,然後基於優先順序從ITC選擇並執行下一個任務。若所述任務已經執行,基於優先順序從ITC選擇下一個任務。任務的執行狀態可從狀態位元寄存器中獲取,所述狀態位元寄存器儲存任務執行情況的所有資訊。
當ITC中的所有任務都執行後,所述系統從DTC 1選擇任務。基於任務的選擇資訊,更具體地講,基於DTC 1中任務的優先順序選擇DTC 1中的所有任務。DTC 1的優先順序是基於DTC 1的任務對ITC的依賴關係。所述系統從DTC 1選擇至少一個任務,並檢查所選擇的任務是否已經執行。若所述任務之前沒有執行,執行所述任務,然後基於優先順序從DTC 1選擇並執行下一個任務。若所述任務已經執行,基於優先順序從DTC 1選擇下一個任務。相應地,檢查所述狀態位元寄存器來確定未執行的任務。
當DTC 1中的所有任務都執行後,所述系統從DTC 2選擇任務。基於任務的選擇資訊,更具體地講,基於DTC 2中任務的優先順序選擇DTC 2中的所有任務。DTC 2的優先順序是基於來自DTC 2的任務對DTC 1和DTC 2的依賴關係。所述系統從DTC 2選擇至少一個任務,並檢查所選擇的任務是否已經執行。若所述任務之前沒有執行,執行所述任務,然後基於優先順序從DTC 2選擇並執行下一個任務。若所述任務已經執行,基於優先順序從DTC 2選擇下一個任務。相應地,檢查所述狀態位元寄存器來確定未執行的任務。
在本發明的另一實施例中,ITC/DTC的不同變體可離線創建。在一個示例中,所提出的系統可創建僅有相互依賴的任務的DTC。因此,這些組任務完全可以在同一列表中進行管理,並基於所述系統分配到具體的CPU核。若系統有8核,DTC可以在核6和核7中進行處理,並且可以由系統或使用者動態決定。可離線做出這些決定。
雖然給出了ITC和DTC的概念來說明具體問題,DTC的變體很可能基於系統優化調度。結合附圖,上述以及其他的特點和優點從下面實施例的詳細描述中得以明確。
為使上述的本發明的目的、技術方案以及優點更容易理解,下面將結合附圖來描述實施例。
結合所附申請專利範圍和圖式,從下面詳細描述中,所屬技術領域具有通常知識者將更明確本發明的目的、優點和其他進步性特點。
可以理解的是,傳統意義上,當電腦系統開機時,基本輸入/輸出系統(BIOS)進行上電自檢(POST)以初始化包括隨機存取記憶體(RAM),處理器、鍵盤、顯示器等的設備。通常,電腦系統中的處理器(CPU)是一種功能性硬體單元,包括單個CPU或複數個CPU(經常稱為單核處理器或多核處理器)。或者,電腦系統可包括複數個處理器。若電腦系統包括複數個CPU(例如,複數個處理器系統或多核處理器系統的形式),所述CPU中的一個CPU可以被確定為“啟動CPU”,為啟動過程執行BIOS初始化代碼和內核初始化代碼。剩餘的CPU(通常稱為應用處理器(APs))在作業系統(OS)開始執行之前都處於空閒狀態。
一旦BIOS初始化完成,識別出啟動設備,將開機載入程式從所述啟動設備載入到RAM中,並將控制邏輯傳遞到所述開機載入程式。所述開機載入程式確定啟動哪個OS(例如,內核),將確定的OS從所述啟動設備載入到RAM中,並將控制邏輯傳遞給所述OS。一旦OS開始執行,其初始化資源、資料結構和剩餘的CPU,並執行用於初始化各種服務的初始化腳本。
下面介紹了回應啟動命令的用於啟動具有至少一個處理器(CPU)的電腦系統的系統及方法。當由所提出的電腦系統的複數個CPU的複數個初始化CPU執行時,可能已儲存在電腦系統的記憶體中的任務描述圖表(TDC)被複數個處理器(CPUs)604訪問和處理。
所述訪問的TDC可包括啟動過程的複數個任務的位址資訊和選擇資訊。所述複數個任務可包括使電腦系統正常工作而必須執行的所有任務。基於TDC中的複數個任務的依賴關係,系統對TDC進行分類。任TDC可離線分類創建兩套調度圖表,以生成一個獨立任務圖表(ITC)和一個依賴任務圖表(DTC)。ITC包括獨立於任何其他任務的一組任務;DTC包括對TDC的任何其他任務有至少一種依賴關係的一組任務。
基於DTC對ITC或TDC中可用的任何其他任務的依賴關係, DTC可進一步分為第一依賴任務圖表(DTC 1)和第二依賴任務圖表2(DTC 2)。DTC 1可包括來自DTC的對ITC的至少一個任務有至少一種依賴關係的一組任務;DTC 2可包括來自DTC的對DTC 1的至少一個任務或DTC 2的至少一個任務有至少一種依賴關係的一組任務。
系統從ITC選擇並執行至少一個任務,因為這些任務是使電腦系統安全正常工作所需要的基本任務。基於所述選擇資訊,更具體地講,基於相對於ITC中的其他任務的所述任務的優先順序從ITC選擇所述至少一個任務。
可基於優先順序資訊將任務排列成隊。檢查所選擇的任務是否已經執行。若所述任務之前沒有執行,選擇並執行所述任務,然後基於優先順序從ITC選擇並執行下一個任務。若所述任務已經執行,基於優先順序從ITC選擇下一個任務。任務的執行狀態可從狀態位元寄存器中獲取,所述狀態位元寄存器儲存任務執行情況的所有資訊。這些任務可在佇列中找到,從而該系統可以很容易地從佇列中獲取下一個任務。
當ITC中的所有任務都執行後,所述系統從DTC 1選擇任務。基於任務的選擇資訊,更具體地講,基於DTC 1中任務的優先順序選擇DTC 1中的所有任務。DTC 1的優先順序是基於DTC 1的任務對ITC的依賴關係。在一個示例中,可首先執行依賴ITC任務的任務,然後按ITC的優先順序執行接下來的任務。所述系統從DTC 1選擇至少一個任務,並檢查所選擇的任務是否已經執行。若所述任務之前沒有執行,執行所述任務,然後基於優先順序從DTC 1選擇並執行下一個任務。若所述任務已經執行,基於優先順序從DTC 1選擇下一個任務。
相應地,可以檢查所述狀態位元寄存器來確定未執行的任務。
當DTC 1中的所有任務都執行後,所述系統從DTC 2選擇任務。基於任務的選擇資訊,更具體地講,基於DTC 2中任務的優先順序選擇DTC 2中的所有任務。DTC 2的優先順序是基於來自DTC 2的任務對DTC 1和DTC 2的依賴關係。所述系統從DTC 2選擇至少一個任務,並檢查所選擇的任務是否已經執行。若所述任務之前沒有執行,執行所述任務,然後基於優先順序從DTC 2選擇並執行下一個任務。若所述任務已經執行,基於優先順序從DTC 2選擇下一個任務。相應地,檢查所述狀態位元寄存器來確定未執行的任務。
因為本發明涉及通過提供離線調度演算法來優化並行啟動框架的調度,在一個示例中,TDC一次只可被一個CPU訪問。所述選擇資訊可包括表示複數個任務的優先順序的優先順序欄位;所述至少一個CPU基於優先順序的升冪從所述複數個任務中選擇所述至少一個任務。
所述選擇資訊也可包括依賴欄位、鎖定欄位和狀態欄位。可以基於複數個任務的依賴關係對TDC中的所有任務進行分類。ITC和DTC中的所有任務按獨立於任何其他任務的一組任務的優先順序的升冪進行排列和執行。DTC的任務可以依賴的任何其他任務可以是DTC 1或DTC 2的任何任務或者是來自ITC的任何任務。首先執行ITC中的所有任務,隨後執行DTC 1的任務,然後執行DTC 2的任務。
儘管所描述的回應啟動命令的用於啟動具有至少一個處理器(CPU)的電腦系統的系統及方法的各個方面可以通過複數個不同的電腦系統、環境和/或配置實現,所述實施例以下面系統為例進行描述。
儘管下面描述了本發明的示例實施例,可以理解的是,即使沒有詳細的說明,也可以實現本發明。同時可以為此處描述的本發明做出許多實現的具體決定,以實現開發者的特殊目標,例如,遵循系統相關的和業務相關的約束,這將隨系統的變化而變化,且開發工作複雜且耗時。然而,對於所屬技術領域具有通常知識者,掌握本發明公開的益處是一項常規工作。例如,所選方面都以框圖形式而非細節形式示出,以避免對本發明造成模糊或者不適當限制。所屬技術領域具有通常知識者利用這些描述和陳述向所屬技術領域的其他具有通常知識者描述以及傳達他們工作的內容。本發明將結合下面描述的附圖進行描述。
在整個啟動過程的完全並行化上,專利申請號PCT/CN2013/072764是當前發明的主要先前技術。後續部分將介紹對專利申請號PCT/CN2013/072764的改進及優化。下面對本發明的描述和陳述也可包括本發明與專利申請號PCT/CN2013/072764的對比。
現參考第1圖,其示出了先前技術中系統開機時的一般啟動過程,已在背景技術中公開。
現參考第2圖,其示出了本發明實施例的優化啟動時間過程(先前技術)中BIOS/初始化腳本的並行化,已在「先前技術」中公開。
現參考第3圖,其示出了先前技術(專利申請號PCT/CN2013/072764)公開的在多核/處理器上執行的並行啟動方法,已在「先前技術」中公開。在一個示例中,該圖式公開了在多核/處理器上執行的並行啟動方法。第3圖示出了專利申請號PCT/CN2013/072764中並行啟動過程中的啟動時間的優化。
現參考第4圖,其示出了TDC的創建方法。所屬技術領域具有通常知識者都很理解,創建任務描述圖表(TDC)可能需要三個模組,可包括但不限於BIOS模組、開機載入程式和/或OD內核。如先前技術(專利申請號PCT/CN2013/072764)所公開的,描述電腦任務的基本操作的TDC可根據各任務的至少一個如下屬性生成:優先順序、依賴關係、位址、尺寸、錯誤代碼、鎖和狀態。進一步地,所屬技術領域具有通常知識者也知道,若電腦系統包括複數個CPU(例如,複數個處理器系統或多核處理器系統的形式),所述CPU中的一個CPU可以被確定為“啟動CPU”,為啟動過程執行BIOS初始化代碼和內核初始化代碼。剩餘的CPU(通常稱為應用處理器(APs))在OS開始執行之前都處於空閒狀態。一旦BIOS初始化完成,識別出啟動設備,將開機載入程式從所述啟動設備載入到RAM中,並將控制邏輯傳遞到所述開機載入程式。所述開機載入程式確定啟動哪個OS(例如,內核),將確定的OS從所述啟動設備載入到RAM中,並將控制邏輯傳遞給所述OS。一旦OS開始執行,其初始化資源、資料結構和剩餘的CPU,並執行用於初始化各種服務的初始化腳本。
下面描述了先前技術(專利申請號PCT/CN2013/072764)中公開的TDC創建過程;為實現啟動過程中多CPU的執行,所述三個模組可交互排列在叫做“模組化”的過程中,
例如,每個模組可分成幾個部分。每個部分可包括一個或複數個獨立的或非同步的步驟。如第4圖所示,在BIOS模組中,步驟init () 可分成相互獨立的步驟init_0_0 () 和init_0_1 ()。這裡還提供了BIOS模組上的另一個具體的模組化示例。BIOS模組中的週邊設備的初始化步驟通常按循序執行,因為配置寄存器可以只由給定時間/實例的一個進程進行修改。在本實施例中,週邊設備的初始化步驟可分為兩小組步驟。除了配置寄存器的修改,還有初始化設備的初始化步驟,以及基於所述初始化步驟修改所述配置寄存器的註冊步驟。因此,初始化複數個週邊設備的初始化步驟能夠由複數個並行CPU執行;如有需要,之後可由一個CPU依次執行所述複數個週邊設備的註冊步驟。類似模組化可在啟動模組和內核模組上實現。
通過使用鎖,共用資源可被複數個CPU同時訪問。
模組化步驟可分離出來形成獨立的任務。例如,BIOS中的模組化步驟可分組成bios_task1 ()和bios_task2 ()。可同時執行分組任務中的至少兩個任務。任務的順序可根據每個任務的設定的優先順序確定。例如,來自開機載入程式的任務可設定為與來自BIOS模組的任務並存執行。因此,BIOS模組完成自己所執行任務的同時,內核複制與解壓等任務可以實現。
在本發明的一個實施例中,基於每個獨立系統創建任務描述符資料結構。離線創建所有圖表。離線圖表包含任務資訊。可基於任務屬性離線創建複數個圖表。因此,在目標上的調度得到了優化。在先前技術中,單個任務描述圖表是離線創建的。
在一種實現中,離線任務表創建的輸入是帶所有屬性的任務清單。這可以基於產品架構手動創建。可將創建的清單提供給可以將資訊轉換成資料結構的軟體。在啟動時間內,可以知道任務列表,以便於任務執行。從這一列表,基於優先順序和依賴關係創建資料結構。這一離線資料結構用於優化啟動時間。
現參考第5a圖,其示出了先前技術(專利申請號PCT/CN2013/072764)公開的TDC的結構及內容。TDC可根據各任務的至少一個如下屬性生成:優先順序、依賴關係、位址、尺寸、錯誤代碼、鎖和狀態。在一個示例中,TDC包括複數個任務的位址資訊和選擇資訊。啟動過程中,CPU可基於從系統的RAM中獲得的選擇資訊從TDC中選擇至少一個任務。處理器基於所獲得的資訊執行所述任務。在一個示例中,TDC可包括與所述任務相關的欄位,如狀態欄位,優先順序欄位和依賴關係欄位以及其它與任務相關的欄位等。第5b圖公開了所述選擇資訊的細節。
如專利申請號PCT/CN2013/072764中所公開的,需要基於優先順序等來鎖定DPC並處理每個任務。在本發明中,不需要做其他檢查。在本發明中,將任務基於包括但不限於依賴關係和優先順序等的屬性安排到不同的任務圖表(TDC’s)中。因此,在目標上或CPU執行任務時,調度程式可彈出相應圖表中的任務並執行該任務。
現參考第5b圖,圖中示出了典型的任務1至任務3的選擇資訊。如專利申請號PCT/CN2013/072764(先前技術)中所公開的,如果啟動過程中有複數個CPU,當任何一個CPU選擇並執行TDC時,基於優先順序,即TDC的一個屬性,訪問TDC中的任務。這些任務可從基於優先順序提供FIFO任務的佇列中獲得。第5b圖所示的依賴關係欄位顯示了所述任務對任何其他任務的依賴關係。第5b圖以表格的形式示出了典型的選擇資訊。
現參考第6圖,其公開了一種用於優化具有至少一個處理器(CPU)的電腦系統602的啟動時間的電腦系統602。所述電腦系統602可以回應啟動指令,所述啟動指令在電腦系統開機時發起。當由與記憶體608耦合的複數個CPU中的複數個初始化CPU執行時,所述系統602包括複數個處理器(CPUs)604。記憶體608中可儲存複數個指令。所述指令由與所述記憶體608耦合的複數個處理器(CPUs)604執行。
在一個實施例中,電腦系統602可包括複數個處理器(CPUs)604/處理器604、介面606和記憶體608,其中所述複數個處理器(CPUs)604/處理器604可以是多核處理器,所述介面606可以是I/O介面。所述至少一個處理器604可以通過一個或複數個微處理器、微型電腦、微型控制器、數位訊號處理器、中央處理器、狀態機、邏輯電路和/或任意基於操作指示處理信號的設備來實現。在其他能力中,所述至少一個處理器604用於獲取和執行所述記憶體608中儲存的電腦可讀指示。
所述I/O介面606可包括多種軟體和硬體介面,例如,web介面和圖形使用者介面等。所述I/O介面606可以允許所述電腦系統602直接或者通過使用者端設備(未示出)和用戶進行交互。進一步地,所述I/O介面606可以使所述電腦系統602和其他電腦設備通信,如web伺服器和外部資料伺服器(未示出)。所述I/O介面606能夠在多種網路和協定類型中促進多種通信,包括如LAN和線纜等的有線網路和如WLAN、蜂窩或衛星等的無線網路。所述I/O介面606可包括一個或複數個埠,所述一個或複數個埠使一些設備相互連接或連接至其他伺服器。
所述記憶體608可包括本領域已知的任意電腦可讀介質,例如,易失性記憶體,如靜態隨機存取記憶體(SRAM)和動態隨機存取記憶體(DRAM),和/或非易失性記憶體,如唯讀記憶體(ROM)、可擦除可程式設計ROM、快閃記憶體、硬碟、光碟和磁帶。
所述記憶體608可包括但不限於複數個指令,任務描述圖表(TDC/’s)610,和/或狀態位元寄存器612。
根據所述電腦系統602,當所述指令在啟動時間內發起時,所述處理器604訪問儲存在所述電腦系統602中的任務描述圖表(TDC)610。所述訪問的TDC 610可包括啟動過程的複數個任務的位址資訊和選擇資訊。所述複數個任務可包括使電腦系統602正常工作而必須執行的所有任務。所述訪問的TDC 610的分類是基於TDC 610中的複數個任務的依賴關係。對TDC 610進行分類,以生成一個獨立任務圖表(ITC)和一個依賴任務圖表(DTC)。ITC包括獨立於任何其他任務的一組任務。DTC包括對TDC的任何其他任務有至少一種依賴關係的一組任務。所述系統進一步將DTC分成第一依賴任務圖表(DTC 1)和第二依賴任務圖表(DTC 2)。DTC 1包括來自DTC的對從ITC的一組任務中選擇的至少一個任務有至少一種依賴關係的一組任務。DTC 2包括來自DTC的對從DTC 1的一組任務中選擇的至少一個任務或從DTC 2的一組任務中選擇的至少一個任務有至少一種依賴關係的一組任務。
進一步地,所述電腦系統602從ITC選擇並執行至少一個任務。基於所述選擇資訊,更具體地講,基於相對於ITC中的其他任務的所述任務的優先順序從ITC選擇所述至少一個任務。檢查所選擇的至少一個任務是否已經執行。若所述任務之前沒有執行,執行所述任務,然後基於優先順序從ITC選擇並執行下一個任務。若所述任務已經執行,基於優先順序從ITC選擇下一個任務。任務的執行狀態可從狀態位元寄存器612中獲取,所述狀態位元寄存器612儲存任務執行情況的所有資訊。相應地,檢查所述狀態位元寄存器612來確定未執行的任務。在一個示例中,狀態位元遮罩可以用來標記任務已在目標上完成。當任何一個任務標記為完成或執行,在保存在所述狀態位元寄存器612中的狀態位元遮罩中設置一個比特位。
當ITC中的所有任務都執行後,所述電腦系統602從DTC 1選擇任務。基於任務的選擇資訊,更具體地講,基於DTC 1中任務的優先順序選擇DTC 1中的所有任務。
DTC 1的優先順序是基於DTC 1的任務對ITC的依賴關係。所述系統602從DTC 1選擇至少一個任務,並檢查所選擇的任務是否已經執行。若所述任務之前沒有執行,執行所述任務,然後基於優先順序從DTC 1選擇並執行下一個任務。若所述任務已經執行,基於優先順序從DTC 1選擇下一個任務。相應地,檢查所述狀態位元寄存器612來確定未執行的任務。在一個示例中,狀態位元遮罩可以用來標記任務已在目標上完成。當任何一個任務標記為完成或執行,在保存在所述狀態位元寄存器612中的狀態位元遮罩中設置一個比特位。
當DTC 1中的所有任務都執行後,所述電腦系統602從DTC 2選擇任務。基於任務的選擇資訊,更具體地講,基於DTC 2中任務的優先順序選擇DTC 2中的所有任務。DTC 2的優先順序是基於來自DTC 2的任務對DTC 1和DTC 2的依賴關係。所述電腦系統602從DTC 2選擇至少一個任務,並檢查所選擇的任務是否已經執行。若所述任務之前沒有執行,執行所述任務,然後基於優先順序從DTC 2選擇並執行下一個任務。若所述任務已經執行,基於優先順序從DTC 2選擇下一個任務。相應地,檢查所述狀態位元寄存器612來確定未執行的任務。
由於本發明涉及通過提供離線調度演算法來優化並行啟動框架的調度,在一個示例中,TDC610一次只可被一個CPU訪問。所述選擇資訊可包括表示所述複數個任務的優先順序的優先順序欄位;所述至少一個CPU基於優先順序的升冪從所述複數個任務中選擇所述至少一個任務。所述選擇資訊也可包括依賴欄位、鎖定欄位和狀態欄位。可以基於複數個任務的依賴關係對TDC610中的所有任務進行分類。ITC和DTC中的所有任務按獨立於任何其他任務的一組任務的優先順序的升冪進行排列和執行。DTC的任務可以依賴的任何其他任務可以是DTC 1或DTC 2的任何任務或者來自ITC的任何任務。
首先執行ITC中的所有任務,隨後執行DTC 1的任務,然後執行DTC 2的任務。
在一種實現中,已執行/完成任務的資訊可以直接保存在儲存區內,記憶體608不需要有顯示狀態位元寄存器。
所述離線調度演算法可以與先前技術PCT/CN2013/072764中公開的演算法相同,或者所屬技術領域具有通常知識者可以理解的是,用於並行啟動框架的離線調度的現有演算法可在本發明中使用。
現參考第7圖,其示出了本發明實施例的電腦系統的啟動方法。所述方法可以在電腦可執行指令的廣義語境中描述。一般來講,所述電腦可執行指令包括常式、程式、物件、元件、資料結構、步驟、模組和功能等,可完成特定的功能或者實現特定的抽象資料類型。所述方法也可在分散式運算環境中實現,其中功能由通過通信網路連結的遠端處理設備實現。在分散式運算環境中,所述電腦可執行指令可以位於包括記憶體存放裝置的本地和遠端電腦儲存介質。
描述所述方法的次序並不旨在被解釋為限制,並且任何數量的所述方法塊都可以按任何次序組合來執行所述方法或另一種方法。另外,在不脫離本發明的精神和範圍的情況下,可從所述方法中刪除獨立方法塊。進一步地,所述方法可以在任何合適的硬體、軟體、韌體或其組合中實現。但為便於說明,下述實施例中,所述方法可認為是在上述電腦系統602中實現的。
在步驟702中,可訪問使用離線調度演算法生成的TDC 610。在一種實現中,TDC 610可以儲存在所述記憶體608中,並基於各個系統創建任務描述符資料結構。該離線圖表包含任務資訊。
先前技術中存在單一任務描述圖表。可基於任務屬性離線創建複數個圖表。因此,在目標上的調度得到了優化。TDC 610一次只能被一個CPU 604訪問。TDC 602可包括啟動過程的複數個任務的位址資訊和選擇資訊。
在步驟704中,對所訪問的TDC 610進行分類,以生成ITC和DTC。在一種實現中,基於複數個任務的依賴關係對TDC 610進行分類。ITC可包括獨立於任何其他任務的一組任務;DTC可包括對任何其他任務有至少一種依賴關係的一組任務。ITC中的所有任務按獨立於任何其他任務的一組任務的優先順序的升冪進行排列和執行。來自ITC的一組任務首先被執行。DTC中的任務按所述一組任務的優先順序的升冪和所述對任何其他任務的至少一種依賴關係進行排列。
在步驟706中,進一步對DTC進行分類,以生成DTC 1和DTC 2。在一種實現中,DTC 1包括來自DTC的對從ITC的一組任務中選擇的至少一個任務有至少一種依賴關係的一組任務。類似地,DTC 2包括來自DTC的對從DTC 1的一組任務中選擇的至少一個任務或從DTC 2的一組任務中選擇的至少一個任務有至少一種依賴關係的一組任務。DTC 1的一組任務在ITC的一組任務執行後執行。來自DTC 2的一組任務在來自ITC的一組任務和來自DTC 1的一組任務都執行後執行。基於DTC 2中一組任務的依賴關係執行來自DTC 2的一組任務。
在一種實現中,DTC按所述一組任務的優先順序的升冪和所述對任何其他任務的至少一種依賴關係進行排列。所述任何其他任務是從ITC的一組任務,或DTC的一組任務,或DTC 2的一組任務中選擇的至少一個任務。
在步驟708中,從ITC中選擇至少一個任務。基於儲存在TDC中的選擇資訊,即儲存在ITC中的選擇資訊,從ITC中選擇任務。然後執行所選擇的任務。
當執行完所選擇的任務後,所述系統檢查來自ITC的至少一個未執行的任務,其優先順序可能低於已執行的任務。可基於所述系統的記憶體中的狀態位元寄存器612選擇所述未執行的任務。
較佳地,在步驟710中,執行完每個所選的ITC的任務後,更新所述狀態位元寄存器612。可用來標記任務已在目標上完成的狀態位元遮罩也保存在所述狀態位元寄存器612中。
當任務標記為執行或完成時,在狀態位元遮罩中設置一個比特位。
在步驟712中,檢查ITC中所有任務的執行情況。若任何一個任務未執行,選擇並執行該任務。若ITC中的所有任務均已執行,則所述系統可以從DTC 1中選擇並執行任務。
在步驟714中,當ITC的所有任務都執行後,選擇來自DTC 1的至少一個任務。基於儲存在TDC中的選擇資訊,即儲存在DTC 1中的選擇資訊,從DTC 1中選擇任務。然後執行所選擇的任務。當執行完所選擇的任務後,所述系統檢查來自ITC的至少一個未執行的任務,其優先順序可能低於已執行的任務。可基於所述系統的記憶體中的狀態位元寄存器612選擇所述未執行的任務。DTC 1的一組任務在ITC的一組任務執行後執行。
較佳地,在步驟716中,執行完每個所選的DTC 1的任務後,更新所述狀態位元寄存器612。可用來標記任務已在目標上完成的狀態位元遮罩也保存在所述狀態位元寄存器612中。
當任務標記為執行或完成時,在狀態位元遮罩中設置一個比特位。
在步驟718中,檢查DTC 1中所有任務的執行情況。若任何一個任務未執行,選擇並執行該任務。若DTC 1中的所有任務均已執行,則所述系統可以從DTC 2中選擇並執行任務。
在步驟720中,當DTC 1的所有任務都執行後,選擇來自DTC 2的至少一個任務。
來自DTC 2的任務的選擇是基於選擇資訊和對從DTC 1的一組任務中選擇的至少一個任務或從DTC 2的一組任務中選擇的至少一個任務的依賴關係,其中所述選擇資訊和依賴關係儲存在TDC 610中,即儲存在DTC 2中。然後執行所選擇的任務。當執行完所選擇的任務後,所述系統檢查來自ITC的至少一個未執行的任務,其優先順序可能低於已執行的任務。可基於所述系統的記憶體中的狀態位元寄存器612選擇所述未執行的任務。DTC 2的一組任務在DTC 1的一組任務和ITC的一組任務都執行後執行。
較佳地,在步驟722中,執行完每個所選的DTC 2的任務後,更新所述狀態位元寄存器612。可用來標記任務已在目標上完成的狀態位元遮罩也保存在所述狀態位元寄存器612中。
當任務標記為執行或完成時,在狀態位元遮罩中設置一個比特位。
在步驟722中,檢查DTC 2中所有任務的執行情況。若任何一個任務未執行,選擇並執行該任務。
現參考第8圖,其示出了本發明實施例中執行用於啟動本發明中的電腦系統的任務的流程圖。
在步驟802中,訪問儲存在所述記憶體608中的TDC 610。TDC 610可包括儲存在其中的複數個任務。
在步驟804中,選擇TDC 610,並對其進行分類。
在步驟806中,檢查來自TDC 610的所有任務對任何其他任務的依賴關係。
在步驟808中,若某個任務不依賴任何其他任務,將該任務劃分到ITC中。
在步驟810中,若某個任務依賴任何其他任務,將該任務劃分到DTC中。
在步驟812中,選擇並執行ITC中的至少一個任務。ITC中的所有任務按獨立於任何其他任務的一組任務的優先順序的升冪進行排列。
在步驟814中,執行從ITC中選擇的至少一個任務。ITC中的所有任務按獨立於任何其他任務的一組任務的優先順序的升冪進行排列和執行。
在步驟816中,基於任務的執行情況更新所述狀態位元寄存器612。執行完每個所選的ITC的任務後,更新所述狀態位元寄存器612。可用來標記任務已在目標上完成的狀態位元遮罩也保存在所述狀態位元寄存器612中。當任務標記為執行或完成時,在狀態位元遮罩中設置一個比特位。
在步驟818中,所述電腦系統602可以檢查ITC中的所有任務的執行情況。若ITC中的所有任務均已執行,所述系統從DTC 1選擇任務。若ITC中的任何一個任務未執行,再次執行步驟812至816。
在步驟819中,檢查來自DTC的所有任務,判斷所述任務是否依賴ITC。
在步驟820中,若DTC中的任務依賴ITC中的任何一個任務,將相應的任務劃分到DTC 1中。
在步驟822中,選擇並執行DTC 1中的至少一個任務。DTC 1中的所有任務按獨立於任何其他任務的一組任務的優先順序的升冪進行排列。
在步驟824中,執行從DTC 1中選擇的至少一個任務。DTC 1中的所有任務按依賴於ITC任務的一組任務的優先順序的升冪進行排列和執行。
在步驟826中,基於任務的執行情況更新所述狀態位元寄存器612。執行完每個所選的DTC 1的任務後,更新所述狀態位元寄存器612。可用來標記任務已在目標上完成的狀態位元遮罩也保存在所述狀態位元寄存器612中。當任務標記為執行或完成時,在狀態位元遮罩中設置一個比特位。
在步驟828中,所述電腦系統602可以檢查DTC 1中所有任務的執行情況。若DTC 1中的所有任務均已執行,所述系統從DTC 2選擇任務。若DTC 1中的任何一個任務未執行,再次執行步驟822至826。
在步驟830中,若DTC中的任務不依賴ITC中的任何一個任務,將相應的任務劃分到DTC 2中。
在步驟832中,選擇並執行DTC 2中的至少一個任務。DTC 1中的所有任務按所述一組任務的優先順序的升冪和對任何其他任務的依賴關係進行排列,其中所述依賴關係可以是對DTC 1或DTC 2的任務的依賴關係。
在步驟834中,執行從DTC 2中選擇的至少一個任務。DTC 1的所有任務均已執行。
在步驟836中,基於任務的執行情況更新所述狀態位元寄存器612。執行完每個所選的DTC 2的任務後,更新所述狀態位元寄存器612。可用來標記任務已在目標上完成的狀態位元遮罩也保存在所述狀態位元寄存器612中。當任務標記為執行或完成時,在狀態位元遮罩中設置一個比特位。
在步驟838中,所述電腦系統系統602可以檢查DTC 2中所有任務的執行情況。若DTC 2中所有任務均已執行,系統退出啟動過程並開始執行正常操作。
若DTC 2中的任何一個任務未執行,再次執行步驟832至836。
現參考第9圖,其示出了本發明的總體處理。在一種實現中,通過以下三個步驟實現在目標或者CPU上優化調度程式: 1.離線處理TDC,並為所有啟動的任務創建調度佇列。 2.在目標上彈出並執行這些任務。 3.在特定內核上的狀態位元寄存器中儲存各任務的完成情況。
在本發明的一個實施例中,系統可執行下述步驟來實現調度程式的優化: 1.離線處理TDC(任務描述圖表),創建兩組調度圖表。 2.第一組調度圖表ITC(獨立任務圖表)包含不依賴需要執行的任何其他任務的所有任務。這些任務按照優先順序排列。這些任務最終可以在目標上並行調度,無需檢查它們的優先順序或依賴關係。成功執行後,將這些任務的狀態設置為完成。 3.第二組調度圖表(依賴任務圖表)包含按依賴關係資訊的優先順序順序排列的所有剩餘任務。這些任務被進一步劃分到DTC 1和DTC 2。DTC 1是依賴ITC任務的任務組。與ITC一樣,DTC 1沒有任何依賴關係資訊,因為它們僅在ITC執行後執行,而此時不存在依賴關係。 4.DTC 2是依賴ITC、DTC 1或DTC 2中任務的任務組。這些任務有依賴關係資訊。 5.在目標上或處理系統中,首先使用獨立任務圖表,且將其並存執行完畢。這樣節省了優先順序和依賴關係檢查所需的開銷。 6.當ITC的所有任務都執行後,調度程式轉移到DTC以進一步執行任務。DTC 1將先被執行,因為執行完ITC後,DTC 1的依賴關係消失了。 7.執行完DTC 1後,調度程式轉移到DTC 2。在這裡檢查各個任務的依賴關係,並相應地執行各個任務。 8.這些任務按優先順序,順序地保存在目標上,可從佇列(FIFO)中獲取這些任務。在每個可用的CPU/內核上,這些任務被彈出並執行。 9.在特定內核上的狀態位元寄存器中儲存各任務的完成情況。
由於TDC的離線處理,所提出的系統為離線記憶體預算提供了有效的解決方案,其可通過以下實現: 1.任務組在執行之前是已知的,這些任務的記憶體需求也是預先可知的。 2.記憶體初始化任務能夠分階段進行優化,以在多處理器系統中使用這一資訊。 3.可以更好地預算目標上的記憶體需求。 4.離線調度圖表有助於基於依賴關係和優先順序創建ITC和DTC。DTC能夠在不同層面上管理所有任務,從而減少目標上的調度開銷。 5.系統進一步基於ITC和DTC提供記憶體需求資訊。同樣地,可以得出離線啟動時記憶體的預算投入。有助於避免在目標上的記憶體處理,從而避免了相應的開銷。
在一個示例中,通過以下步驟計算任務執行的順序: 說明: 任務數量=N 先前技術: 預處理時間+後處理時間=XP(非常數) 實際任務執行時間=XE(非常數) 所需的總時間=N(XP+XE) 調度程式優化後: 預處理時間+後處理時間=0.1XP(非常數) 實際任務執行時間=XE(非常數) 所需的總時間=N(0.1XP+XE) 例如:N=50, XP=0.5s, XE=3s 先前技術:50(0.5+3)=175s 調度程式優化後:50(0.1x0.5+3)=152.5s 改進=22.5s(總體)[12.86%] [總體改進百分比取決於N、XP和XE]
現參考第10圖,其示出了先前技術(PCT/CN2013/072764)與本發明的總體技術之間的對比。在一個示例中,該圖示出了先前技術的總體處理與所提出的優化啟動時間的處理之間的對比。
現參考第11圖,其示出了先前技術(PCT/CN2013/072764)的TDC與本發明的TDC的分類。在一個示例中,該圖示出了先前技術中生成的TDC與本發明中生成的TDC的離線處理。
現參考第12圖,其示出了按照本發明描述的執行過程的流程圖。在一個示例中,在本發明中的這些任務按照先入先出的方式排成佇列。當任務從佇列中彈出時,執行過程就開始了。若佇列為空,過程結束,進入系統啟動後的過程。若佇列不為空,系統將彈出的任務標記為已獲取或正在執行。處理器執行任務,當任務執行完成後,將該任務標記為已完成或已執行。
這就是本發明中的執行過程的工作方式。
現參考第13圖,其示出了先前技術(PCT/CN2013/072764)的處理過程與本發明的處理過程之間的對比。其中(a)為先前技術,(b)為本發明。
雖然已經以具體到結構特徵和/或方法的語言對回應啟動命令的用於啟動具有至少一個處理器(CPU)的電腦系統的實現方式進行了描述,但可以理解的是,所附申請專利範圍並不一定侷限於所描述的具體特徵或方法。更確切地說,這些具體特徵和方法被作為回應啟動命令的用於啟動具有至少一個處理器(CPU)的電腦系統的實現方式的實例公開。
上述討論的示例性實施例提供了某些優點。雖然不需要實施本發明的各個方面,這些優點可包括: 1.離線調度使系統避免了從TDC查找依賴關係和優先順序的開銷,從而提供了更好的性能。 2.與之前的方案相比,對於ITC和DTC 1中的任務,獲得下一個記錄的速度更快,因為其只是一個從佇列中彈出的操作。不需要遍歷TDC,也不需要檢查優先順序和依賴關係,從而減少了相應的開銷。 3.與之前的方案相比,對於ITC和DTC 1中的任務,在任務執行前後,不需要鎖定/解鎖TDC。此外,無需等待鎖定的TDC。 4.與之前的方案相比,對於DTC 2中的任務,無需檢查優先順序。 5.記憶體管理可利用調度資訊分階段初始化所需記憶體。 6.進一步地,離線調度方法可應用於嵌入式或預定義的任務組的設備。 7.此提出的解決方案可用於減少具有複數個內核或複數個處理器且啟動過程中有複數個任務的任何系統的啟動時間。
最後應理解的是:以上實施例僅用以解釋,而非對本發明技術方案進行限制。儘管參照前述優選實施例對本發明進行了詳細的說明,應理解的是,在本發明的保護範圍內,所屬技術領域具有通常知識者依然可以對前述各實施例所記載的技術方案進行修改或者等同替換,而這些修改或者替換涵蓋在本發明所附的申請專利範圍之中。進一步地,ITC和DTC的概念可以基於目標系統進行延伸。在一個示例中,基於整體的啟動任務組,設計者可以依據內核親和性(若有的話)決定ITC和DTC的組合,優化啟動調度。
602‧‧‧電腦系統
604‧‧‧處理器
606‧‧‧介面
608‧‧‧記憶體
610‧‧‧任務描述圖表
612‧‧‧狀態位元寄存器
702~724‧‧‧步驟
802~838‧‧‧步驟
604‧‧‧處理器
606‧‧‧介面
608‧‧‧記憶體
610‧‧‧任務描述圖表
612‧‧‧狀態位元寄存器
702~724‧‧‧步驟
802~838‧‧‧步驟
詳細描述將結合附圖進行說明。附圖中,元件符號最左邊的數字表示所述元件符號首次出現的附圖。附圖中使用相同的編號代表類似的特徵和部件。
對應的參考字元表示所有附圖中的相應部分。此處圖例以一種形式闡釋了本發明的較佳實施例,但並不以任何方式限制本發明的範圍。 第1圖示出了先前技術中系統開機時的一般啟動過程的示意圖。 第2圖示出了先前技術的優化啟動時間過程中BIOS/初始化腳本的並行化的示意圖。 第3圖示出了先前技術(PCT/CN2013/072764)公開的在多核/處理器上執行的並行啟動方法的示意圖。 第4圖示出了先前技術(PCT/CN2013/072764)公開的針對啟動過程處理器進行的TDC離線創建的示意圖。 第5a圖示出了先前技術(PCT/CN2013/072764)公開的TDC的結構及內容的示意圖。 第5b圖示出了先前技術(PCT/CN2013/072764)公開的任務的選擇資訊的示意圖。 第6圖示出了本發明實施例的電腦系統的一種結構示意圖。 第7圖示出了本發明實施例的電腦系統的啟動方法的一種流程示意圖。 第8圖示出了本發明實施例中執行用於啟動本發明中的電腦系統的任務的流程示意圖。 第9圖示出了本發明實施例中本發明的總體處理的示意圖。 第10圖示出了先前技術(PCT/CN2013/072764)與本發明的總體技術之間的對比的示意圖。 第11圖示出了先前技術(PCT/CN2013/072764)的TDC與本發明的TDC的分類的示意圖。 第12圖示出了按照本發明描述的執行過程的流程示意圖。 第13圖示出了(a)先前技術(PCT/CN2013/072764)的處理過程與(b)本發明的處理過程之間的對比的示意圖。
可以理解的是,所述附圖旨在闡釋本發明的一些概念,可能不按比例繪製。
702~724‧‧‧步驟
Claims (32)
- 一種用於啟動具有複數個處理器的電腦系統的電腦執行方法,該電腦執行方法由複數個處理器的複數個初始化處理器執行時,回應啟動命令,該電腦執行方法包括以下步驟: 訪問儲存在一電腦系統的一任務描述圖表,其中,該任務描述圖表包括啟動過程的複數個任務的位址資訊和啟動過程的複數個任務的選擇資訊;對該訪問的任務描述圖表進行分類,以生成包括獨立於任何其他任務的一組任務的一獨立任務圖表,以及 包括對任何其他任務有至少一種依賴關係的一組任務的一依賴任務圖表;其中 該依賴任務圖表進一步分為一第一依賴任務圖表和一第二依賴任務圖表,其中該第一依賴任務圖表包括來自該依賴任務圖表的對從該獨立任務圖表的一組任務中選擇的至少一個任務有至少一種依賴關係的一組任務,該第二依賴任務圖表包括來自該依賴任務圖表的對從該第一依賴任務圖表的一組任務中選擇的至少一個任務或從該第二依賴任務圖表的一組任務中選擇的至少一個任務有至少一種依賴關係的一組任務; 基於該選擇資訊從該獨立任務圖表中選擇該至少一個任務並執行所選擇的至少一個任務;檢查來自該獨立任務圖表的至少一個未執行的任務,從而基於該選擇資訊從該第一依賴任務圖表中選擇該至少一個任務並執行所選擇的至少一個任務; 檢查來自該第一依賴任務圖表的至少一個未執行的任務,從而基於該選擇資訊從該第二依賴任務圖表中選擇該至少一個任務,並基於該對從該第一依賴任務圖表的一組任務中選擇的至少一個任務或從該第二依賴任務圖表的一組任務中選擇的至少一個任務的至少一種依賴關係執行所選擇的至少一個任務; 檢查來自該第二依賴任務圖表的至少一個未執行的任務。
- 如申請專利範圍第1項所述之電腦執行方法,其中,該任務描述圖表一次只能被該複數個處理器中的一個該處理器訪問。
- 如申請專利範圍第1項所述之電腦執行方法,其中,該選擇資訊包括表示該複數個任務的優先順序的優先順序欄位; 該至少一個任務是該複數個處理器基於該選擇資訊所選擇出的,其中該選擇資訊按優先順序的升冪排列。
- 如申請專利範圍第1項所述之電腦執行方法,其中,該選擇資訊包括依賴欄位、鎖定欄位或狀態欄位。
- 如申請專利範圍第1項所述之電腦執行方法,其中,該任務描述圖表是基於該複數個任務的依賴關係被分類。
- 如申請專利範圍第1項所述之電腦執行方法,其中,該獨立任務圖表是按獨立於任何其他任務的一組任務的優先順序的升冪進行排列和執行。
- 如申請專利範圍第1項所述之電腦執行方法,其中,該依賴任務圖表是按該一組任務的優先順序的升冪和該對任何其他任務的至少一種依賴關係進行排列。
- 如申請專利範圍第7項所述之電腦執行方法,其中,該任何其他任務是從升冪獨立任務圖表的一組任務中選擇的至少一個任務。
- 如申請專利範圍第7項所述之電腦執行方法,其中,該任何其他任務是從該第一依賴任務圖表的一組任務中選擇的至少一個任務。
- 如申請專利範圍第7項所述之電腦執行方法,其中,該任何其他任務是從該第二依賴任務圖表的一組任務中選擇的至少一個任務。
- 如申請專利範圍第1項所述之電腦執行方法,其中,首先執行來自該獨立任務圖表的一組任務。
- 如申請專利範圍第1項該之電腦執行方法,其中,來自該第一依賴任務圖表的一組任務在來自該獨立任務圖表的一組任務執行後執行。
- 如申請專利範圍第1項所述之電腦執行方法,其中,來自該第二依賴任務圖表的一組任務在來自該獨立任務圖表的一組任務和來自該第一依賴任務圖表的一組任務都執行後執行。
- 如申請專利範圍第1項所述之電腦執行方法,其中,來自該第二依賴任務圖表的一組任務是基於該第二依賴任務圖表中的一組任務的依賴關係被執行。
- 如申請專利範圍第1項所述之電腦執行方法,其中,該啟動過程的複數個任務排列成隊。
- 如申請專利範圍第1項所述之電腦執行方法,其中,維護一個狀態位元寄存器,其保存各個任務的完成狀態,該狀態位元寄存器用於檢查該至少一個未執行的任務;該狀態位元寄存器儲存在記憶體內。
- 一種電腦系統,包括: 複數個處理器; 與該複數個處理器耦合的一記憶體; 該複數個處理器用於執行該記憶體中的複數個指令,該指令的執行會使該複數個處理器訪問儲存在該電腦系統中的一任務描述圖表,該任務描述圖表包括啟動過程的複數個任務的位址資訊和啟動過程的複數個任務的選擇資訊;對該訪問的該任務描述圖表進行分類;生成包括獨立於任何其他任務的一組任務的一獨立任務圖表,以及包括對任何其他任務有至少一種依賴關係的一組任務的一依賴任務圖表,其中該依賴任務圖表進一步分為一第一依賴任務圖表和一依賴任務圖表,其中該第一依賴任務圖表包括來自該依賴任務圖表的對從該獨立任務圖表的一組任務中選擇的至少一個任務有至少一種依賴關係的一組任務,該第二依賴任務圖表包括來自該依賴任務圖表的對從該第一依賴任務圖表的一組任務中選擇的至少一個任務或從該第二依賴任務圖表的一組任務中選擇的至少一個任務有至少一種依賴關係的一組任務;基於該選擇資訊從該獨立任務圖表中選擇該至少一個任務並執行所選擇的至少一個任務;檢查來自該獨立任務圖表的至少一個未執行的任務,從而基於該選擇資訊從該第一依賴任務圖表中選擇該至少一個任務並執行所選擇的至少一個任務;檢查來自該第一依賴任務圖表的至少一個未執行的任務,從而基於該選擇資訊從該第二依賴任務圖表中選擇該至少一個任務,並基於該對從該第一依賴任務圖表的一組任務中選擇的至少一個任務或從該第二依賴任務圖表的一組任務中選擇的至少一個任務的至少一種依賴關係執行所選擇的至少一個任務;檢查來自該第二依賴任務圖表的至少一個未執行的任務。
- 如申請專利範圍第17項所述之電腦系統,其中,該任務描述圖表一次只能被該複數個處理器中的一個該處理器訪問。
- 如申請專利範圍第17項所述之電腦系統,其中,該選擇資訊包括表示該複數個任務的優先順序的優先順序欄位;該至少一個任務是該複數個處理器基於該選擇資訊選擇出的,其中該選擇資訊按優先順序的升冪排列。
- 如申請專利範圍第17項所述之電腦系統,其中,該選擇資訊包括依賴欄位、鎖定欄位或狀態欄位。
- 如申請專利範圍第17項所述之電腦系統,其中,該任務描述圖表是基於該複數個任務的依賴關係被分類。
- 如申請專利範圍第17項所述之電腦系統,其中,該獨立任務圖表是按獨立於任何其他任務的一組任務的優先順序的升冪進行排列和執行。
- 如申請專利範圍第17項所述之電腦系統,其中,該依賴任務圖表是按該一組任務的優先順序的升冪和該對任何其他任務的至少一種依賴關係進行排列。
- 如申請專利範圍第23項所述之電腦系統,其中,該任何其他任務是從該獨立任務圖表的一組任務中選擇的至少一個任務。
- 如申請專利範圍第23項所述之電腦系統,其中,該任何其他任務是從該第一依賴任務圖表的一組任務中選擇的至少一個任務。
- 如申請專利範圍第23項所述之電腦系統,其中,該任何其他任務是從該第二依賴任務圖表的一組任務中選擇的至少一個任務。
- 如申請專利範圍第17項所述之電腦系統,其中,首先執行來自該獨立任務圖表的一組任務。
- 如申請專利範圍第17項所述之電腦系統,其中,來自該第一依賴任務圖表的一組任務在該來自該獨立任務圖表的一組任務執行後執行。
- 如申請專利範圍第17項所述之電腦系統,其中,來自該第二依賴任務圖表的一組任務在來自該獨立任務圖表的一組任務和來自該第一依賴任務圖表的一組任務都執行後執行。
- 如申請專利範圍第17項所述之電腦系統,其中,來自該第二依賴任務圖表的一組任務是基於該第二依賴任務圖表中的一組任務的依賴關係被執行。
- 如申請專利範圍第17項所述之電腦系統,其中,該啟動過程的複數個任務排列成隊。
- 如申請專利範圍第17項所述之電腦系統,其中,還包括一狀態位元寄存器,其保存各個任務的完成狀態,並用於檢查該至少一個未執行的任務;該狀態位元寄存器儲存在該記憶體內。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN2355CH2014 | 2014-05-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201546715A TW201546715A (zh) | 2015-12-16 |
TWI550514B true TWI550514B (zh) | 2016-09-21 |
Family
ID=54392090
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104102017A TWI550514B (zh) | 2014-05-09 | 2015-01-22 | Computer execution method and computer system for starting a computer system having a plurality of processors |
Country Status (5)
Country | Link |
---|---|
US (1) | US9639374B2 (zh) |
EP (1) | EP2962192B1 (zh) |
BR (1) | BR112016026264B1 (zh) |
TW (1) | TWI550514B (zh) |
WO (1) | WO2015169068A1 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10528358B2 (en) * | 2015-01-23 | 2020-01-07 | Hewlett-Packard Development Company, L.P. | Initialize port |
JP6832291B2 (ja) * | 2015-10-23 | 2021-02-24 | オラクル・インターナショナル・コーポレイション | アプリケーションサーバを並列起動するためのシステムおよび方法 |
KR102447854B1 (ko) * | 2016-02-29 | 2022-09-27 | 삼성전자주식회사 | 전자 장치 및 이의 부팅 방법 |
US10437604B2 (en) * | 2016-02-29 | 2019-10-08 | Samsung Electronics Co., Ltd. | Electronic apparatus and booting method thereof |
CN106951264A (zh) * | 2017-03-28 | 2017-07-14 | 上海与德科技有限公司 | 一种开机时间优化方法和装置 |
US20180365425A1 (en) * | 2017-06-15 | 2018-12-20 | Qualcomm Incorporated | Systems and methods for securely booting a system on chip via a virtual collated internal memory pool |
US10402567B2 (en) | 2017-06-25 | 2019-09-03 | Microsoft Technology Licensing, Llc | Secure boot for multi-core processor |
US10503892B2 (en) | 2017-06-25 | 2019-12-10 | Microsoft Technology Licensing, Llc | Remote attestation for multi-core processor |
US10708061B2 (en) * | 2017-06-25 | 2020-07-07 | Microsoft Technology Licensing, Llc | Secure key storage for multi-core processor |
US11074085B2 (en) * | 2017-09-26 | 2021-07-27 | Intel Corporation | Methods and apparatus for boot time reduction in a processor and programmable logic device environment |
CN108376087B (zh) * | 2018-03-09 | 2020-11-20 | 联想(北京)有限公司 | 一种电子设备的启动控制方法、装置及服务器 |
CN112684974B (zh) * | 2019-10-18 | 2024-04-16 | 伊姆西Ip控股有限责任公司 | 用于作业管理的方法、设备和计算机程序产品 |
GB2597082B (en) * | 2020-07-14 | 2022-10-12 | Graphcore Ltd | Hardware autoloader |
CN111736904B (zh) | 2020-08-03 | 2020-12-08 | 北京灵汐科技有限公司 | 多任务并行处理方法、装置、计算机设备及存储介质 |
CN115291957B (zh) * | 2022-10-08 | 2022-12-30 | 北京大禹智芯科技有限公司 | 多处理器主板的初始化方法和装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6158000A (en) * | 1998-09-18 | 2000-12-05 | Compaq Computer Corporation | Shared memory initialization method for system having multiple processor capability |
TW482960B (en) * | 2000-06-23 | 2002-04-11 | Inventec Corp | Method for preventing process contradiction between each processors in a multi-processor computer |
US20070204271A1 (en) * | 2006-02-28 | 2007-08-30 | Andrew Gaiarsa | Method and system for simulating a multi-CPU/multi-core CPU/multi-threaded CPU hardware platform |
CN100422935C (zh) * | 2005-11-08 | 2008-10-01 | 河南科技大学 | 一种基于网络的虚拟多处理器系统及处理方法 |
TW201142702A (en) * | 2010-01-06 | 2011-12-01 | Apple Inc | Policy-based switching between graphics processing units |
CN101794239B (zh) * | 2010-03-16 | 2012-11-14 | 浙江大学 | 一种基于数据流模型的多处理器任务调度管理方法 |
TW201333827A (zh) * | 2011-11-09 | 2013-08-16 | Nvidia Corp | 運算任務狀態的封裝 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6336185B1 (en) * | 1998-09-24 | 2002-01-01 | Phoenix Technologies Ltd. | Use of other processors during BIOS boot sequence to minimize boot time |
US6732264B1 (en) | 1999-12-14 | 2004-05-04 | Intel Corporation | Multi-tasking boot firmware |
US20030009508A1 (en) * | 2001-06-26 | 2003-01-09 | Troia Terry A. | Method and system for providing processor task scheduling |
US7181609B2 (en) | 2003-08-15 | 2007-02-20 | Intel Corporation | System and method for accelerated device initialization |
US7987336B2 (en) | 2008-05-14 | 2011-07-26 | International Business Machines Corporation | Reducing power-on time by simulating operating system memory hot add |
US8307198B2 (en) * | 2009-11-24 | 2012-11-06 | Advanced Micro Devices, Inc. | Distributed multi-core memory initialization |
US20130198760A1 (en) * | 2012-01-27 | 2013-08-01 | Philip Alexander Cuadra | Automatic dependent task launch |
RU2630171C2 (ru) | 2013-03-15 | 2017-09-05 | Хуавей Текнолоджиз Ко., Лтд. | Способ начальной загрузки компьютерной системы с множеством центральных процессоров |
-
2014
- 2014-10-29 BR BR112016026264-6A patent/BR112016026264B1/pt active IP Right Grant
- 2014-10-29 EP EP14821034.7A patent/EP2962192B1/en active Active
- 2014-10-29 WO PCT/CN2014/089760 patent/WO2015169068A1/en active Application Filing
-
2015
- 2015-01-22 TW TW104102017A patent/TWI550514B/zh active
- 2015-06-09 US US14/734,660 patent/US9639374B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6158000A (en) * | 1998-09-18 | 2000-12-05 | Compaq Computer Corporation | Shared memory initialization method for system having multiple processor capability |
TW482960B (en) * | 2000-06-23 | 2002-04-11 | Inventec Corp | Method for preventing process contradiction between each processors in a multi-processor computer |
CN100422935C (zh) * | 2005-11-08 | 2008-10-01 | 河南科技大学 | 一种基于网络的虚拟多处理器系统及处理方法 |
US20070204271A1 (en) * | 2006-02-28 | 2007-08-30 | Andrew Gaiarsa | Method and system for simulating a multi-CPU/multi-core CPU/multi-threaded CPU hardware platform |
TW201142702A (en) * | 2010-01-06 | 2011-12-01 | Apple Inc | Policy-based switching between graphics processing units |
CN101794239B (zh) * | 2010-03-16 | 2012-11-14 | 浙江大学 | 一种基于数据流模型的多处理器任务调度管理方法 |
TW201333827A (zh) * | 2011-11-09 | 2013-08-16 | Nvidia Corp | 運算任務狀態的封裝 |
Also Published As
Publication number | Publication date |
---|---|
EP2962192A4 (en) | 2016-04-06 |
BR112016026264A2 (pt) | 2018-08-07 |
WO2015169068A1 (en) | 2015-11-12 |
US9639374B2 (en) | 2017-05-02 |
BR112016026264B1 (pt) | 2022-01-18 |
EP2962192B1 (en) | 2017-12-06 |
TW201546715A (zh) | 2015-12-16 |
EP2962192A1 (en) | 2016-01-06 |
US20150339129A1 (en) | 2015-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI550514B (zh) | Computer execution method and computer system for starting a computer system having a plurality of processors | |
US9690595B2 (en) | Booting method for computer system with multiple central processing units | |
TWI525540B (zh) | 具有橫跨多個處理器之平行資料執行緒的映射處理邏輯 | |
US20160154678A1 (en) | Reverting tightly coupled threads in an over-scheduled system | |
US8082315B2 (en) | Programming idiom accelerator for remote update | |
US8145723B2 (en) | Complex remote update programming idiom accelerator | |
US8904386B2 (en) | Running a plurality of instances of an application | |
US8788795B2 (en) | Programming idiom accelerator to examine pre-fetched instruction streams for multiple processors | |
US8886919B2 (en) | Remote update programming idiom accelerator with allocated processor resources | |
JP6336399B2 (ja) | マルチスレッドコンピューティング | |
US20130061231A1 (en) | Configurable computing architecture | |
US8589938B2 (en) | Composite contention aware task scheduling | |
US20150254113A1 (en) | Lock Spin Wait Operation for Multi-Threaded Applications in a Multi-Core Computing Environment | |
US20120284720A1 (en) | Hardware assisted scheduling in computer system | |
CN104520811A (zh) | 优化具有多个中央处理器的计算机的启动时间的系统及方法 | |
US11366690B2 (en) | Scheduling commands in a virtual computing environment | |
US20220405135A1 (en) | Scheduling in a container orchestration system utilizing hardware topology hints | |
JP2022079764A (ja) | 同期制御システムおよび同期制御方法 | |
US10360652B2 (en) | Wavefront resource virtualization | |
US20240311202A1 (en) | Multi-runtime workload framework | |
CN110879744B (zh) | 利用多线程执行计算图的方法和系统 | |
US10802878B2 (en) | Phased start and stop of resources in a mainframe environment | |
US8656375B2 (en) | Cross-logical entity accelerators | |
CN118467113A (zh) | 一种容器感知调度方法、产品、装置及介质 |