特表2016-513839(P2016-513839A)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ホアウェイ・テクノロジーズ・カンパニー・リミテッドの特許一覧
特表2016-513839複数の中央処理装置を備えたコンピュータシステムの立ち上げ方法
<>
  • 特表2016513839-複数の中央処理装置を備えたコンピュータシステムの立ち上げ方法 図000004
  • 特表2016513839-複数の中央処理装置を備えたコンピュータシステムの立ち上げ方法 図000005
  • 特表2016513839-複数の中央処理装置を備えたコンピュータシステムの立ち上げ方法 図000006
  • 特表2016513839-複数の中央処理装置を備えたコンピュータシステムの立ち上げ方法 図000007
  • 特表2016513839-複数の中央処理装置を備えたコンピュータシステムの立ち上げ方法 図000008
  • 特表2016513839-複数の中央処理装置を備えたコンピュータシステムの立ち上げ方法 図000009
  • 特表2016513839-複数の中央処理装置を備えたコンピュータシステムの立ち上げ方法 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】特表2016-513839(P2016-513839A)
(43)【公表日】2016年5月16日
(54)【発明の名称】複数の中央処理装置を備えたコンピュータシステムの立ち上げ方法
(51)【国際特許分類】
   G06F 9/50 20060101AFI20160411BHJP
   G06F 9/52 20060101ALI20160411BHJP
【FI】
   G06F9/46 462B
   G06F9/46 472A
【審査請求】有
【予備審査請求】未請求
【全頁数】40
(21)【出願番号】特願2015-561896(P2015-561896)
(86)(22)【出願日】2013年3月15日
(85)【翻訳文提出日】2015年10月28日
(86)【国際出願番号】CN2013072764
(87)【国際公開番号】WO2014139177
(87)【国際公開日】20140918
(81)【指定国】 AP(BW,GH,GM,KE,LR,LS,MW,MZ,NA,RW,SD,SL,SZ,TZ,UG,ZM,ZW),EA(AM,AZ,BY,KG,KZ,RU,TJ,TM),EP(AL,AT,BE,BG,CH,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HR,HU,IE,IS,IT,LT,LU,LV,MC,MK,MT,NL,NO,PL,PT,RO,RS,SE,SI,SK,SM,TR),OA(BF,BJ,CF,CG,CI,CM,GA,GN,GQ,GW,ML,MR,NE,SN,TD,TG),AE,AG,AL,AM,AO,AT,AU,AZ,BA,BB,BG,BH,BN,BR,BW,BY,BZ,CA,CH,CL,CN,CO,CR,CU,CZ,DE,DK,DM,DO,DZ,EC,EE,EG,ES,FI,GB,GD,GE,GH,GM,GT,HN,HR,HU,ID,IL,IN,IS,JP,KE,KG,KM,KN,KP,KR,KZ,LA,LC,LK,LR,LS,LT,LU,LY,MA,MD,ME,MG,MK,MN,MW,MX,MY,MZ,NA,NG,NI,NO,NZ,OM,PA,PE,PG,PH,PL,PT,QA,RO,RS,RU,RW,SC,SD,SE,SG,SK,SL,SM,ST,SV,SY,TH,TJ,TM,TN,TR,TT,TZ,UA,UG,US,UZ,VC
(71)【出願人】
【識別番号】504161984
【氏名又は名称】ホアウェイ・テクノロジーズ・カンパニー・リミテッド
(74)【代理人】
【識別番号】100146835
【弁理士】
【氏名又は名称】佐伯 義文
(74)【代理人】
【識別番号】100140534
【弁理士】
【氏名又は名称】木内 敬二
(72)【発明者】
【氏名】シャヨリ・ダス
(72)【発明者】
【氏名】アマン・シャイ
(57)【要約】
複数の中央処理装置を備えたコンピュータシステムの立ち上げ方法が提供される。方法は、立ち上げプロセスの最初に複数のCPUの少なくとも2つのCPUを初期化するステップと、少なくとも2つの初期化されたCPUの各々によって、コンピュータシステムに格納されているタスク記述チャート(TDC)にアクセスするステップであって、TDCは、立ち上げプロセスの少なくとも2つのタスクの情報を含むステップと、少なくとも2つの初期化されたCPUの各々によって、TDCの少なくとも2つのタスクの選択情報により、少なくとも2つのタスクからタスクを選択するステップと、少なくとも2つの初期化されたCPUの各々によって、TDCの選択されたタスクのアドレス情報により、選択されたタスクを取得するステップと、初期化されたCPUによって、少なくとも部分的に並列して、選択されたタスクを実行するステップとを含む。
【特許請求の範囲】
【請求項1】
複数の中央処理装置(CPU)を備えたコンピュータシステムを立ち上げるための方法であって、
立ち上げプロセスの最初に前記複数のCPUの少なくとも2つのCPUを初期化するステップと、
前記少なくとも2つの初期化されたCPUの各々によって、前記コンピュータシステムに格納されているタスク記述チャート(TDC)にアクセスするステップであって、前記TDCは、前記立ち上げプロセスの少なくとも2つのタスクの情報を含むステップと、
前記少なくとも2つの初期化されたCPUの各々によって、前記TDCの少なくとも2つのタスクの選択情報により、少なくとも2つのタスクから1つのタスクを選択するステップと、
前記少なくとも2つの初期化されたCPUの各々によって、前記TDCの選択されたタスクのアドレス情報により、前記選択されたタスクを取得するステップと、
前記初期化されたCPUによって、少なくとも部分的に並列して、前記選択されたタスクを実行するステップと
を含む方法。
【請求項2】
前記初期化されたCPUの第1のCPUが前記TDCにアクセスする場合、前記第1のCPUは前記TDCをロックし、前記ロックされたTDCは、前記第1のCPU以外のCPUによってアクセス可能ではない請求項1に記載の方法。
【請求項3】
前記選択情報は、前記少なくとも2つのタスクの各々の優先度を示す優先度フィールドをさらに含み、前記少なくとも2つのタスクの中でより高い優先度を備えたタスクは、前記第1のCPUによって最初に選択される請求項2に記載の方法。
【請求項4】
前記選択情報は、前記少なくとも2つのタスクにおいて第1のタスクが依存する第2のタスクを示す依存関係フィールドをさらに含み、完了済みとして前記第2のタスクに印が付けられている場合、前記第1のタスクは、前記第1のCPUによって選択可能である請求項2または3に記載の方法。
【請求項5】
前記選択情報は、前記少なくとも2つのタスクの各々が初期化されたCPUによってロックされているかどうかを示すロックフィールドをさらに含み、前記選択情報により、前記少なくとも2つのタスクにおいて前記第1のCPUが第3のタスクを選択した後に、前記第1のCPUは、ロック済みとして前記第3のタスクのロック領域に印を付け、前記ロック済みとして印が付けられている第3のタスクは、前記第1のCPU以外に前記初期化されたCPUによって選択可能ではない請求項2から4のいずれか一項に記載の方法。
【請求項6】
前記選択情報は、前記少なくとも2つのタスクの各々が完了しているかどうかを示す状態フィールドをさらに含み、前記少なくとも2つのタスクにおいて第4のタスクの実行を完了した後に、前記第1のCPUは、完了済みとして前記第4のタスクの状態フィールドに印を付け、前記完了済みとして印が付けられている第4のタスクは、前記初期化されたCPUによって選択可能ではない請求項2から5のいずれか一項に記載の方法。
【請求項7】
前記第1のCPUが前記選択を終了した後に、前記第1のCPUは、前記TDCのロックを解除する請求項2から6のいずれか一項に記載の方法。
【請求項8】
前記複数のCPUの少なくとも2つのCPUを初期化する前記ステップは、
前記コンピュータシステムの初期化回路によって、起動CPUとして前記複数のCPUの1つのCPUを初期化するステップと、
前記起動CPUによって、前記複数のCPUの他のCPUを初期化するステップと
を含む請求項1から7のいずれか一項に記載の方法。
【請求項9】
前記少なくとも2つのタスクは、前記初期化されたCPUによって並列して実行可能なタスクを含み、基本入出力システム(BIOS)モジュール、ブートローダモジュール、およびカーネルモジュールを含むコンピュータシステムの立ち上げプロセスからである請求項1から8のいずれか一項に記載の方法。
【請求項10】
前記BIOSモジュール、前記ブートローダモジュール、および前記カーネルモジュールからのステップは、独立したステップまたは非同期のステップを含むステップへとモジュール化され、前記モジュール化されたステップは、前記少なくとも2つのタスクのタスクを形成するために分離される請求項9に記載の方法。
【請求項11】
前記BIOSモジュールにおける周辺機器の初期化ステップは、構成レジスタを修正する以外にデバイスを初期化するための初期化ステップと、初期化ステップに基づいて構成レジスタを修正するための登録ステップとに分割され、前記初期化ステップおよび前記登録ステップは、前記少なくとも2つのタスクの異なるタスクを形成するために分離される請求項10に記載の方法。
【請求項12】
前記TDCは、前記モジュール化および前記分離から生成されたタスクにより生成される請求項10または11に記載の方法。
【請求項13】
前記選択情報は、前記少なくとも2つのタスクの各々のサイズを示すサイズフィールドをさらに含み、
前記第1のCPUは、タスクを実行するために使用可能なメモリにより、前記少なくとも2つのタスクの第5のタスクを実行するべきかどうかと、前記第5のタスクおよび前記使用可能なメモリで実行されるタスクのサイズフィールドとを決定する
請求項2から12のいずれか一項に記載の方法。
【請求項14】
前記初期化のステップの後に、前記初期化されたCPUによるアクセス、選択、取得、および実行のステップは、その情報が前記TDCにあるすべてのタスクが実行されるまで繰り返される請求項1から13のいずれか一項に記載の方法。
【請求項15】
メモリに結合された複数の中央処理装置(CPU)を含み、前記複数のCPUの少なくとも2つのCPUは、立ち上げプロセスの最初に初期化され、
前記メモリは、タスク記述チャート(TDC)および第1の命令を格納するように構成され、前記TDCは、前記立ち上げプロセスの少なくとも2つのタスクの情報を含み、
前記複数のCPUの前記少なくとも2つの初期化されたCPUは、前記第1の命令により、それぞれが前記TDCにアクセスするように構成され、それぞれが、前記TDCの少なくとも2つのタスクの選択情報により、前記少なくとも2つのタスクから1つのタスクを選択し、それぞれが、前記TDCの選択されたタスクのアドレス情報により、前記選択されたタスクを取得し、少なくとも部分的に並列して、前記選択されたタスクを実行する
コンピュータシステム。
【請求項16】
前記初期化されたCPUの第1のCPUは、前記第1の命令により前記TDCにアクセスした後に、前記TDCをロックするようにさらに構成され、前記ロックされたTDCは、前記第1のCPU以外のCPUによってアクセス可能ではない請求項15に記載のコンピュータシステム。
【請求項17】
前記選択情報は、前記少なくとも2つのタスクの各々の優先度を示す優先度フィールドをさらに含み、前記第1のCPUは、前記第1の命令により、前記少なくとも2つのタスクの中でより高い優先度を備えたタスクを最初に選択するようにさらに構成される請求項16に記載のコンピュータシステム。
【請求項18】
前記選択情報は、前記少なくとも2つのタスクにおける第1のタスクが依存する第2のタスクを示す依存関係フィールドをさらに含み、前記第1のCPUは、前記第1の命令により、完了済みとして前記第2のタスクに印が付けられたときに、前記第1のタスクを選択するようにさらに構成される請求項16または17に記載のコンピュータシステム。
【請求項19】
前記選択情報は、前記少なくとも2つのタスクの各々が初期化されたCPUによってロックされているかどうかを示すロックフィールドをさらに含み、前記第1のCPUは、前記第1のCPUが前記第3のタスクを選択した後に、前記第1の命令により、前記少なくとも2つのタスクにおいて第3のタスクのロックフィールドに印を付けるようにさらに構成され、ロック済みとして印が付けられている前記第3のタスクは、前記第1のCPU以外に前記初期化されたCPUによって選択可能ではない請求項16から18のいずれか一項に記載のコンピュータシステム。
【請求項20】
前記選択情報は、前記少なくとも2つのタスクの各々が完了しているかどうかを示す状態フィールドをさらに含み、前記第1のCPUは、前記第1の命令により、前記第4のタスクの実行を完了した後に、完了済みとして前記少なくとも2つのタスクにおいて第4のタスクの状態フィールドに印を付けるようにさらに構成され、前記完了済みとして印が付けられている第4のタスクは、前記初期化されたCPUによって選択可能ではない請求項16から19のいずれか一項に記載のコンピュータシステム。
【請求項21】
前記第1のCPUは、前記第1のCPUが選択を終了した後に、前記第1の命令により、前記TDCのロックを解除するようにさらに構成される請求項16から20のいずれか一項に記載のコンピュータシステム。
【請求項22】
起動CPUとして前記複数のCPUの1つのCPUを初期化するように構成された初期化回路をさらに含み、前記起動CPUは、前記メモリに格納された第2の命令により、前記複数のCPUの他のCPUを初期化するように構成される請求項16から21のいずれか一項に記載のコンピュータシステム。
【請求項23】
前記少なくとも2つのタスクは、前記初期化されたCPUによって並列して実行可能なタスクを含み、基本入出力システム(BIOS)モジュール、ブートローダモジュール、およびカーネルモジュールを含むコンピュータシステムの立ち上げプロセスからである請求項15から22のいずれか一項に記載のコンピュータシステム。
【請求項24】
前記BIOSモジュール、前記ブートローダモジュール、および前記カーネルモジュールからのステップは、独立したステップまたは非同期のステップを含むステップへとモジュール化され、前記モジュール化されたステップは、前記少なくとも2つのタスクのタスクを形成するために分離される請求項23に記載のコンピュータシステム。
【請求項25】
前記BIOSモジュールにおける周辺機器の初期化ステップは、構成レジスタを修正する以外にデバイスを初期化するための初期化ステップと、初期化ステップに基づいて前記構成レジスタを修正するための登録ステップとに分割され、前記初期化ステップおよび前記登録ステップは、前記少なくとも2つのタスクの異なるタスクを形成するために分離される請求項24に記載のコンピュータシステム。
【請求項26】
前記選択情報は、前記少なくとも2つのタスクの各々のサイズを示すサイズフィールドをさらに含み、
前記第1のCPUは、タスクを実行するために使用可能なメモリにより、前記少なくとも2つのタスクの第5のタスクを実行するべきかどうかと、前記第5のタスクおよび前記使用可能なメモリで実行されるタスクのサイズフィールドとを決定するようにさらに構成される
請求項16から25のいずれか一項に記載のコンピュータシステム。
【請求項27】
前記少なくとも2つの初期化されたCPUは、その情報が前記TDCにあるすべてのタスクが実行されるまで、前記TDCにより前記タスクを選択および実行することを継続するように構成される請求項15から26のいずれか一項に記載のコンピュータシステム。
【請求項28】
複数の中央処理装置(CPU)を備えたコンピュータシステムを立ち上げるためのコードを含む非一時的コンピュータ可読媒体であって、前記複数のCPUの複数の初期化されたCPUによって実行されたときに、前記初期化されたCPUの各々によって、前記コンピュータシステムに格納されているタスク記述チャート(TDC)にアクセスするステップであって、前記TDCは、立ち上げプロセスの少なくとも2つのタスクの情報を含むステップと、
前記初期化されたCPUの各々によって、前記TDCの少なくとも2つのタスクの選択情報により、少なくとも2つのタスクから1つのタスクを選択するステップと、
前記初期化されたCPUの各々によって、前記TDCの選択されたタスクのアドレス情報により、前記選択されたタスクを取得するステップと、
前記初期化されたCPUによって、少なくとも部分的に並列して、前記選択されたタスクを実行するステップと
を実行する非一時的コンピュータ可読媒体。
【請求項29】
少なくとも2つのタスクに対応する選択情報を示すように構成された選択情報フィールドと、
前記少なくとも2つのタスクに対応するアドレス情報を示すように構成されたアドレス情報フィールドと
を含み、
複数の中央処理装置(CPU)を備えたコンピュータシステムの複数の初期化されたCPUは、前記選択情報フィールドにより前記少なくとも2つのタスクからタスクを選択し、前記アドレス情報フィールドにより、前記選択されたタスクを取得し、少なくとも部分的に並列して、前記選択されたタスクを実行することを特徴とするタスク記述チャート(TDC)。
【請求項30】
前記複数の初期化されたCPUの第1のCPUによって前記TDCがロックされているかどうかを示すように構成されたTDCロックフィールドをさらに含み、前記ロックされたTDCは、前記第1のCPU以外のCPUによってアクセス可能ではない請求項29に記載のタスク記述チャート。
【請求項31】
前記選択情報フィールドは、前記少なくとも2つのタスクの各々の優先度を示す優先度フィールドを含み、前記少なくとも2つのタスクの中でより高い優先度を備えたタスクは、前記第1のCPUによって最初に選択される請求項30に記載のタスク記述チャート。
【請求項32】
前記選択情報は、前記少なくとも2つのタスクにおいて第1のタスクが依存する第2のタスクを示す依存関係フィールドを含み、完了済みとして前記第2のタスクに印が付けられている場合、前記第1のタスクは、前記第1のCPUによって選択可能である請求項30または31に記載のタスク記述チャート。
【請求項33】
前記選択情報は、前記少なくとも2つのタスクの各々が前記第1の初期化されたCPUによってロックされているかどうかを示すロックフィールドを含む請求項30から32のいずれか一項に記載のタスク記述チャート。
【請求項34】
前記選択情報は、前記少なくとも2つのタスクの各々が完了しているかどうかを示す状態フィールドを含む請求項30から33のいずれか一項に記載のタスク記述チャート。
【請求項35】
前記選択情報は、前記少なくとも2つのタスクの各々のサイズを示すサイズフィールドを含み、前記第1のCPUは、タスクを実行するために使用可能なメモリにより、前記少なくとも2つのタスクの第5のタスクを実行するべきかどうかと、前記第5のタスクおよび前記使用可能なメモリで実行されるタスクのサイズフィールドとを決定する請求項30から34のいずれか一項に記載のタスク記述チャート。
【請求項36】
前記少なくとも2つのタスクは、前記複数の初期化されたCPUによって並列して実行可能なタスクを含み、基本入出力システム(BIOS)モジュール、ブートローダモジュール、およびカーネルモジュールを含むコンピュータシステムの立ち上げプロセスからである請求項30から35のいずれか一項に記載のタスク記述チャート。
【請求項37】
前記BIOSモジュール、前記ブートローダモジュール、および前記カーネルモジュールからのステップは、独立したステップまたは非同期のステップを含むステップへとモジュール化され、前記モジュール化されたステップは、前記少なくとも2つのタスクのタスクを形成するために分離される請求項36に記載のタスク記述チャート。
【請求項38】
前記BIOSモジュールにおける周辺機器の初期化ステップは、構成レジスタを修正する以外にデバイスを初期化するための初期化ステップと、前記初期化ステップに基づいて前記構成レジスタを修正するための登録ステップとに分割され、前記初期化ステップおよび前記登録ステップは、前記少なくとも2つのタスクの異なるタスクを形成するために分離される請求項34に記載のタスク記述チャート。
【請求項39】
初期化モジュール、複数の処理モジュール、および格納するモジュール
を含み、
前記複数の処理モジュールの少なくとも2つの処理モジュールは、立ち上げプロセスの最初に初期化され、
前記格納モジュールは、タスク記述チャート(TDC)を格納するように構成され、前記TDCは、立ち上げプロセスの少なくとも2つのタスクの情報を含み、
前記複数の処理モジュールの前記初期化された処理モジュールは、それぞれ前記TDCにアクセスするように構成され、それぞれが、前記TDCの少なくとも2つのタスクの選択情報により、前記少なくとも2つのタスクから1つのタスクを選択し、それぞれが、前記TDCの選択されたタスクのアドレス情報により、前記選択されたタスクを取得し、少なくとも部分的に並列して、前記選択されたタスクを実行する
コンピュータシステムを立ち上げるための装置。
【請求項40】
前記初期化された処理モジュールの第1の処理モジュールは、前記TDCにアクセスした後に、前記TDCをロックするようにさらに構成され、前記ロックされたTDCは、前記第1の処理モジュール以外に処理モジュールによってアクセス可能ではない請求項39に記載の装置。
【請求項41】
前記選択情報は、前記少なくとも2つのタスクの各々の優先度を示す優先度フィールドをさらに含み、前記第1の処理モジュールは、前記少なくとも2つのタスクの中でより高い優先度を備えたタスクを最初に選択するようにさらに構成される請求項37に記載の装置。
【請求項42】
前記選択情報は、前記少なくとも2つのタスクにおける第1のタスクが依存する第2のタスクを示す依存関係フィールドをさらに含み、前記第1の処理モジュールは、完了済みとして前記第2のタスクに印が付けられたときに、前記第1のタスクを選択するようにさらに構成される請求項40または41に記載の装置。
【請求項43】
前記選択情報は、前記少なくとも2つのタスクの各々が初期化された処理モジュールによってロックされているかどうかを示すロックフィールドをさらに含み、前記第1の処理モジュールは、前記第1の処理モジュールが前記第3のタスクを選択した後に、前記少なくとも2つのタスクにおいて第3のタスクをロックするようにさらに構成され、ロック済みとして印が付けられている前記第3のタスクは、前記第1の処理モジュール以外に前記初期化された処理モジュールによって選択可能ではない請求項40から42のいずれか一項に記載の装置。
【請求項44】
前記選択情報は、前記少なくとも2つのタスクの各々が完了しているかどうかを示す状態フィールドをさらに含み、前記第1の処理モジュールは、前記第4のタスクの実行を完了した後に、完了済みとして前記少なくとも2つのタスクにおいて第4のタスクの状態フィールドに印を付けるようにさらに構成され、完了済みとして印を付けられた前記第4のタスクは、前記初期化された処理モジュールによって選択可能ではない請求項40から43のいずれか一項に記載の装置。
【請求項45】
前記第1の処理モジュールは、前記第1の処理モジュールが前記選択を終了した後に、前記TDCのロックを解除するようにさらに構成される請求項40から44のいずれか一項に記載の装置。
【請求項46】
立ち上げ処理モジュールとして前記複数の処理モジュールの1つの処理モジュールを初期化するように構成された初期化モジュールをさらに含み、前記立ち上げ処理モジュールは、前記複数の処理モジュールの他の処理モジュールを初期化するように構成される請求項40から45のいずれか一項に記載の装置。
【請求項47】
前記少なくとも2つのタスクは、前記初期化された処理モジュールによって並列に実行可能なタスクを含み、基本入出力システム(BIOS)モジュール、ブートローダモジュール、およびカーネルモジュールを含む立ち上げプロセスからである請求項40から46のいずれか一項に記載の装置。
【請求項48】
前記BIOSモジュール、前記ブートローダモジュール、および前記カーネルモジュールからのステップは、独立したステップまたは非同期のステップを含むステップへとモジュール化され、前記モジュール化されたステップは、前記少なくとも2つのタスクのタスクを形成するために分離される請求項47に記載の装置。
【請求項49】
前記BIOSモジュールにおける周辺機器の初期化ステップは、構成レジスタを修正する以外にデバイスを初期化するための初期化ステップと、前記初期化ステップに基づいて前記構成レジスタを修正するための登録ステップとに分割され、前記初期化ステップおよび前記登録ステップは、前記少なくとも2つのタスクの異なるタスクを形成するために分離される請求項48に記載の装置。
【請求項50】
前記選択情報は、前記少なくとも2つのタスクの各々のサイズを示すサイズフィールドをさらに含み、
前記第1の処理モジュールは、タスクを実行するために使用可能なメモリにより、前記少なくとも2つのタスクの第5のタスクを実行するべきかどうかと、前記第5のタスクおよび前記使用可能なメモリで実行されるタスクのサイズフィールドとを決定するようにさらに構成される
請求項40から49のいずれか一項に記載の装置。
【請求項51】
前記少なくとも2つの初期化された処理モジュールは、その情報が前記TDCにあるすべてのタスクが実行されるまで、前記TDCにより前記タスクを選択および実行することを継続するように構成される請求項39から50のいずれか一項に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、一般的にコンピュータ技術に関し、より具体的には、複数の中央処理装置(CPU)を有するコンピュータシステムを立ち上げるための方法に関する。
【背景技術】
【0002】
コンピュータシステムの立ち上げは、ブートストラッピングプロセスである。コンピュータシステムの電源が投入されると、プロセスは、コンピュータシステムのハードウェアを初期化し、次いで、オペレーティングシステム(たとえばカーネル)を開始する。短い立ち上げ順序は、通常は、基本入出力システム(BIOS)、ブートローダ、次いで、カーネルから始まる。
【0003】
コンピュータシステムの電源が投入されると、BIOSは、ランダムアクセスメモリ(RAM)、プロセッサ、キーボード、およびモニタなどを含むデバイスを初期化するパワーオンセルフテスト(POST)を実行する。通常、コンピュータシステムのプロセッサは、単一CPUまたは複数のCPUを含む機能ハードウェアユニットである(多くの場合、シングルコアプロセッサまたはマルチコアプロセッサと呼ばれる)。または、コンピュータシステムは、複数のプロセッサを含むことができる。コンピュータシステムが複数のCPUを含む場合(たとえばマルチプロセッサシステムまたはマルチコアプロセッサシステムの形で)、CPUの1つは、立ち上げプロセスのためにBIOS初期化コードおよびカーネル初期化コードを実行する「起動CPU」であると決定され得る。残りのCPU(多くの場合、アプリケーションプロセッサ(AP)と呼ばれる)は、OSが実行し始めるまでアイドル状態を維持する。BIOS初期化が終わると、ブートデバイスが識別され、ブートローダが、ブートデバイスからRAMにロードされ、制御はブートローダに渡される。ブートローダは、どのOS(たとえばカーネル)を立ち上げるかを決定し、決定されたOSをブートデバイスからRAMへとロードし、制御をOSに渡す。OSが実行を開始すると、それはリソースおよびデータ構造、残りのCPUを初期化し、様々なサービスを初期化する最初のスクリプトを実行する。
【0004】
ほとんどの既存のコンピュータシステムでは、上記の立ち上げステップは、1つのCPUのみによって順次に実行される。立ち上げプロセスでは多くの時間が費やされ、立ち上げ時間を減らすことが大きな関心事である。
【発明の概要】
【課題を解決するための手段】
【0005】
複数のCPUを備えたコンピュータシステムの立ち上げ時間を節約するために、本開示では様々な実施形態が提供される。
【0006】
本開示の第1の態様として、複数のCPUを備えたコンピュータシステムを立ち上げるための方法が提供される。方法は、立ち上げプロセスの最初に複数のCPUの少なくとも2つのCPUを初期化するステップと、少なくとも2つの初期化されたCPUの各々によって、コンピュータシステムに格納されているタスク記述チャート(TDC)にアクセスするステップであって、TDCは、立ち上げプロセスの少なくとも2つのタスクの情報を含むステップと、少なくとも2つの初期化されたCPUの各々によって、TDCの少なくとも2つのタスクの選択情報により、少なくとも2つのタスクからタスクを選択するステップと、少なくとも2つの初期化されたCPUの各々によって、TDCの選択されたタスクのアドレス情報により、選択されたタスクを取得するステップと、初期化されたCPUによって、少なくとも部分的に並列して、選択されたタスクを実行するステップとを含む。
【0007】
本開示の第2の態様として、コンピュータシステムが提供される。コンピュータシステムは、メモリに結合された複数のCPUを含み、複数のCPUの少なくとも2つのCPUは、立ち上げプロセスの最初に初期化され、メモリは、TDCおよび第1の命令を格納するように構成され、TDCは、立ち上げプロセスの少なくとも2つのタスクの情報を含み、複数のCPUの少なくとも2つの初期化されたCPUは、第1の命令により、それぞれがTDCにアクセスするように構成され、それぞれが、TDCの少なくとも2つのタスクの選択情報により、少なくとも2つのタスクから1つのタスクを選択し、それぞれが、TDCの選択されたタスクのアドレス情報により、選択されたタスクを取得し、少なくとも部分的に並列して、選択されたタスクを実行する。
【0008】
本開示の第3の態様として、複数のCPUを備えたコンピュータシステムを立ち上げるためのコードを含む非一時的コンピュータ可読媒体が提供される。コードは、複数のCPUの複数の初期化されたCPUによって実行された場合、初期化されたCPUの各々によって、コンピュータシステムに格納されたTDCにアクセスするステップであって、TDCは、立ち上げプロセスの少なくとも2つのタスクの情報を含むステップと、初期化されたCPUの各々によって、TDCの少なくとも2つのタスクの選択情報により、少なくとも2つのタスクから1つのタスクを選択するステップと、初期化されたCPUの各々によって、TDCの選択されたタスクのアドレス情報により、選択されたタスクを取得するステップと、初期化されたCPUによって、少なくとも部分的に並列して、選択されたタスクを実行するステップとを実行する。
【0009】
本開示の第4の態様として、データテーブルが提供される。データテーブルは、少なくとも2つのタスクに対応する選択情報を示すように構成された選択情報フィールドと、少なくとも2つのタスクに対応するアドレス情報を示すように構成されたアドレス情報フィールドとを含み、複数のCPUを備えたコンピュータシステムの複数の初期化されたCPUは、選択情報フィールドにより少なくとも2つのタスクからタスクを選択し、アドレス情報フィールドにより、選択されたタスクを取得し、少なくとも部分的に並列して、選択されたタスクを実行する。
【0010】
本開示の第5の態様として、複数のCPUを備えたコンピュータシステムを立ち上げるための別の方法が提供され、方法は、コンピュータシステムの初期化回路によって、コンピュータシステムの1つまたは複数のCPUを初期化するステップと、初期化されたCPUの各々によって、コンピュータシステムに格納されたTDCにより、少なくとも2つのタスクから1つのタスクを選択するステップであって、各タスクは、TDCに記録されたその選択情報およびアドレス情報を有し、異なるタスクは、タスクの選択情報により、異なる初期化されたCPUによって最小の2つのタスクから選択されるステップと、初期化されたCPUの各々によって、選択されたタスクのアドレス情報により、選択されたタスクのプログラム命令を取得するステップと、初期化されたCPUによって、少なくとも部分的に同時に、選択されたタスクを実行するステップであって、TDCは、立ち上げプロセスに対するすべてのタスクの情報を含み、初期化されたCPUは、その情報がTDCにあるすべてのタスクが実行されるまで、TDCにより、タスクを選択および実行することを継続するステップとを含む。
【図面の簡単な説明】
【0011】
図1】本開示の実施形態によるコンピュータシステムを示すブロック図である。
図2】本開示の実施形態による並列してタスクを実行するための方法を示す流れ図である。
図3】本開示の実施形態によるタスク記述チャート(TDC)の構造を示す図である。
図4】本開示の実施形態による、TDCからのCPUの選択および実行タスクの手順を示す流れ図である。
図5】本開示の実施形態による、複数のCPUが並列してタスクを実行するのを示す流れ図である。
図6】TDCの例示的な構造、および立ち上げプロセスのためにTDCを生成するモジュール化プロセスを示す図である。
図7】コンピュータシステムを立ち上げるための装置を示すブロック図である。
【発明を実施するための形態】
【0012】
本出願の前述の目的、技術的解決策、および利点をより理解しやすくするために、添付の図を用いて実施形態について以下に記述する。
【0013】
図1は、本開示の実施形態によるコンピュータシステム100のブロック図である。コンピュータシステム100は、ランダムアクセスメモリ(RAM)104などのメモリと結合され、適宜、記憶ユニット106に結合されたプロセッサ101を含む。記憶ユニット106は、読み取り専用メモリ(ROM)または他の記憶媒体(たとえばハードディスクまたはフラッシュメモリなど)の場合がある。
【0014】
プロセッサ101は、図1に示したCPU 0およびCPU 1など、複数のCPUを含むことができる。必要に応じて、コンピュータシステム100は、たとえば図1におけるプロセッサ101およびプロセッサ108など、2つ以上のプロセッサを含む。プロセッサ101および108の各々は、シングルコアプロセッサまたはマルチコアプロセッサのいずれかの場合がある。
【0015】
プロセッサ101のCPUが実行する様々なコードは、RAM 104または記憶ユニット106のいずれかに格納され得る。必要に応じて、コード109は、プロセッサ101が実行するために記憶ユニット106からRAM 104にコピーされる。必要に応じて、記憶ユニットに格納されたコードは、限定しないが、BIOSモジュール、ブートローダモジュール、カーネルモジュールの1つまたは組み合わせを含む。記憶ユニットには、また、タスク記述チャート(TDC)、後で詳細に説明されるであろう第1の命令および第2の命令がある。
【0016】
必要に応じて、コンピュータシステムは、出力デバイス102(たとえばLCD(液晶ディスプレイ)などのディスプレイデバイス、LED(発光ダイオード)ディスプレイ、CRT(陰極線管)またはプロジェクタ)、および入力デバイス103(たとえばマウス、キーボード、タッチ画面、またはユーザの入力を検出することができるセンサデバイス)をさらに含む。出力デバイス102は、画像による対話インターフェースを表示するために、プロセッサ101によって制御される。必要に応じて、コンピュータシステムは、外部ネットワークまたは他のデバイスとデータまたは信号を交換するための通信インターフェース105をさらに含む。プロセッサ101のCPUが実行する上記の様々なコード(BIOSモジュール、ブートローダモジュール、カーネルモジュール、TDC、第1の命令、および第2の命令のいずれか1つまたは組み合わせなど)は、他のデバイスから通信インターフェース105を通じて取得され得る。
【0017】
コンピュータシステム100の上記の要素は、データバス、アドレスバス、制御バス、拡張バス、またはローカルバスなど、バスによって相互に結合され得る。
【0018】
コンピュータシステム100は、デスクトップコンピュータ、ネットワークサーバ、携帯情報端末(PDA)、モバイル電話、タブレット、端末装置、テレコムデバイス、組み込みシステム、または図1に示したような同様の構造を有する任意の他のデバイスの場合がある。しかしながら、本開示は、特定のタイプのコンピュータシステムに制限されるものではない。
【0019】
複数のCPUを備えたコンピュータシステムを立ち上げるための方法が提供される。図2は、方法の流れ図である。本明細書に記述された方法は、図1に示されたコンピュータシステム100において実装され得るが、そのようなシステムに制限されるものではない。
【0020】
複数のCPUを含み、少なくとも2つのCPUが立ち上げプロセスに関係するコンピュータシステムについて、方法は以下のブロックを含む。
【0021】
S100:立ち上げプロセスの最初に複数のCPUの少なくとも2つのCPUを初期化する
【0022】
必要に応じて、立ち上げプロセスに関係する少なくとも2つのCPUは、コンピュータシステムのCPU(図1を参照)に結合された初期化回路110によって初期化される。初期化回路は、コンピュータシステムの電力投入またはリセット時に、立ち上げプロセスに関係する少なくとも2つのCPUを含む、コンピュータシステムの構成要素を初期化する。初期化回路は、また、少なくとも2つのCPUによって使用するためにRAM 104を初期化することができる。あるいは、初期化回路は、たとえば少なくとも2つのCPUの起動CPUなど、最初に少なくとも2つのCPUの一部を初期化し、次いで、残りを初期化することができる。たとえば、初期化された起動CPUは、記憶媒体106に格納されている第2の命令を取得するために、記憶媒体106にアクセスし、第2の命令により残りのCPUを初期化することができる。
【0023】
S102:少なくとも2つの初期化されたCPUの各々が、コンピュータシステムに格納されているタスク記述チャート(TDC)にアクセスする。TDCは、立ち上げプロセスの少なくとも2つのタスクの情報を含む。
【0024】
必要に応じて、初期化されたCPUの第1のCPUがTDCにアクセスする場合、第1のCPUはTDCをロックし、ロックされたTDCは、第1のCPU以外のCPUによってアクセス可能ではない。たとえば、図3に示すように、TDCは、「TDCロック」フィールドを含むことができる。TDCをロックするために、第1のCPUは、ロック済みとしてTDCのTDCロックフィールドに印を付けることができる。
【0025】
S104:少なくとも2つの初期化されたCPUの各々は、TDCの少なくとも2つのタスクの選択情報により、少なくとも2つのタスクからタスクを選択する。
【0026】
必要に応じて、選択情報は、少なくとも2つのタスクの各々の優先度を示す優先度フィールドをさらに含み、少なくとも2つのタスクの中でより高い優先度を備えたタスクは、第1のCPUによって最初に選択される。
【0027】
必要に応じて、選択情報は、少なくとも2つのタスクにおいて第1のタスクが依存する第2のタスクを示す依存関係フィールドをさらに含み、完了済みとして第2のタスクに印が付けられている場合、第1のタスクは、第1のCPUによって選択可能である。
【0028】
必要に応じて、選択情報は、少なくとも2つのタスクの各々が初期化されたCPUによってロックされているかどうかを示すロックフィールドをさらに含み、選択情報により、少なくとも2つのタスクにおいて第1のCPUが第3のタスクを選択した後に、第1のCPUは、ロック済みとして第3のタスクのロック領域に印を付け、ロック済みとして印が付けられている第3のタスクは、第1のCPU以外の初期化されたCPUによって選択可能ではない。
【0029】
必要に応じて、選択情報は、少なくとも2つのタスクの各々が完了しているかどうかを示す状態フィールドをさらに含み、少なくとも2つのタスクにおいて第4のタスクの実行を完了した後に、第1のCPUは、完了済みとして第4のタスクの状態フィールドに印を付け、完了済みとして印が付けられている第4のタスクは、初期化されたCPUによって選択可能ではない。
【0030】
必要に応じて、第1のCPUが選択を終了した後に、第1のCPUは、TDCのロックを解除する。
【0031】
S106:少なくとも2つの初期化されたCPUの各々は、TDCの選択されたタスクのアドレス情報により、選択されたタスクを取得する。
【0032】
S108:初期化されたCPUは、少なくとも部分的に並列して、選択されたタスクを実行する。
【0033】
必要に応じて、選択情報は、少なくとも2つのタスクの各々のサイズを示すサイズフィールドをさらに含み、第1のCPUは、タスクを実行するために使用可能なメモリにより、少なくとも2つのタスクの第5のタスクを実行するべきかどうかと、第5のタスクおよび使用可能なメモリで実行されるタスクのサイズフィールドとを決定する。
【0034】
必要に応じて、初期化のステップの後に、初期化されたCPUによるアクセス、選択、取得、および実行のステップは、その情報がTDCにあるすべてのタスクが実行されるまで繰り返される。
【0035】
上記のステップS102からS108nは、第1の命令により第1のCPUによって実施され得る。
【0036】
必要に応じて、少なくとも2つのタスクは、初期化されたCPUによって並列して実行可能なタスクを含み、基本入出力システム(BIOS)モジュール、ブートローダモジュール、およびカーネルモジュールを含むコンピュータシステムの立ち上げプロセスからである。
【0037】
必要に応じて、BIOSモジュール、ブートローダモジュール、およびカーネルモジュールからのステップは、独立したステップまたは非同期のステップを含むステップへとモジュール化され、モジュール化されたステップは、少なくとも2つのタスクのタスクを形成するために分離される。
【0038】
必要に応じて、BIOSモジュールにおける周辺機器の初期化ステップは、構成レジスタを修正する以外にデバイスを初期化するための初期化ステップと、初期化ステップに基づいて構成レジスタを修正するための登録ステップとに分割され、初期化ステップおよび登録ステップは、少なくとも2つのタスクの異なるタスクを形成するために分離される。
【0039】
必要に応じて、TDCは、モジュール化および分離から生成されたタスクにより生成される。
【0040】
図3に示すように、例示的なTDCは、複数のタスクのアドレス情報および選択情報を含む(たとえば、タスク1からタスクN、N≧2)。立ち上げプロセスに含まれる初期化されたCPUの各々は、選択情報により、少なくとも2つのタスクの1つのタスクを選択し、タスクのアドレス情報により記憶ユニット106またはRAM 104から、選択されたタスクを取得し、取得されたタスクを実行する。
【0041】
TDCは、TDCファイルに関する情報を示すTDCメタデータフィールドを含むことができ、これはファイル内容およびセキュリティ関連の問題を処理するためのプロセスなどによって使用され得る。TDCロックフィールドは、TDCメタデータフィールドの一部の場合がある。
【0042】
以下は、2つの初期化されたCPU(たとえばCPU 1およびCPU 2)が、TDCにより異なる選択情報(ロック、状態、優先度、および依存関係など)を用いて、TDCにおける3つのタスクからタスクを選択する実例である(たとえば、タスク1、タスク2、およびタスク3)。タスク1から3の選択情報は、Table 1(表1)に示している。
【0043】
【表1】
【0044】
CPU 1がTDCにアクセスする場合、CPU 1は選択情報により実行するためにタスク1を選択することができる。その理由は、タスク1は、タスク1から3の間で最高の優先順位を有しており、「ロック解除」として印が付けられているためである。タスク1を選択した後、CPU 1は、「ロック済み」としてタスク1のロックフィールドに印を付けることができる。次いで、CPU 2は、タスクを選択するためにTDCにアクセスする。理由:1)タスク1のロックフィールドは、タスク1がロックされていることを示している(つまり、最高の優先順位を備えたタスク1は、CPU 1によってすでに選択されている)、2)2番目に高い優先順位を備えたタスク2は、タスク1に依存する、3)タスク1の状態フィールドは、タスク1が未完了であることを示しており、CPU 2は、選択情報により実行するために3番目に高い優先順位を備えたタスク3を選択する。タスク3を選択した後、CPU 2は、「ロック済み」としてタスク3のロックフィールドに印を付けることができる。タスク1を実行した後、CPU 1は、TDCに再アクセスし、「完了済み」としてタスク1の状態フィールドに印を付け、実行するためにTDCにおける別のタスクを選択する。理由:1)タスク3のロックフィールドは、タスク3が「ロック済み」であることを示し、タスク1の状態フィールドは、タスク1が「完了済み」であることを示し(つまり、タスク1および3は選択可能ではない)、CPU 1は、タスク1の完了のためにここで選択可能なタスク2を選択することができる。上記のタスク選択および選択情報の修正は、第1の命令により、プロセッサで実行されるスケジューラアプリケーションによって実施され得る。
【0045】
立ち上げプロセスの間に、メモリ(RAM 104など)は、部分的に初期化され得る。したがって、並列して実行されている特定のサイズを有するタスクに利用可能なメモリ空間は制限されている。多数の大きなサイズのタスクが並列して実行される場合、別のタスクは、実行されない/またはメモリにコピーされる場合がある。この問題を解決するために、メモリを管理するために実施形態において、メモリマネージャ(たとえばCPUの1つによって実行されるメモリマネージャアプリケーション)が提供される。TDCは、タスクのサイズフィールドをさらに含むことができる。サイズフィールドは、対応するタスクのサイズを示す場合がある。スケジューラアプリケーションは、使用可能なメモリにより、現在、どのタスクが実行されるかべきか、または実行されるべきでないかをさらに決定することができ、それに関する情報は、メモリマネージャ、およびサイズフィールドによって提供される(実行されたタスクおよび後に実行されるタスクのサイズなど)。たとえば、スケジューラアプリケーションは、タスクの選択情報を修正するためにTDCにアクセスすることができる(ロックフィールド、状態フィールド、優先度フィールド、および依存関係フィールドのいずれかまたは任意の組み合わせなど)。したがって、タスクの実行順序は、メモリをより良好に使用するために動的に調整され得る。必要な場合、メモリマネージャは、また、メモリの他の部分の初期化をトリガーすることができる。メモリの他の部分の初期化は、他のタスクと並列して実行され得る。
【0046】
実施形態では、タスクは、スケジューリングのためにピボットとして機能するTDCに基づいてスケジューリングされる。基本メモリ管理も、このTDCを使用することによって達成され得る。
【0047】
必要に応じて、選択情報は、可能なデバッギングのためにエラーコードフィールドをさらに含むことができる。たとえば、メモリマネージャの実行、選択、または管理の間に、タスクに障害が生じた場合、対応するエラーコードは、そのタスクのエラーコードフィールドに入れられる。
【0048】
たとえば、タスク、第1の命令、または第2の命令のプログラムコードは、記憶ユニット106に格納されるか、またはRAM 104に読み込まれ得る。第1の命令およびTDCにより、起動プロセスに関係する各初期化されたCPUは、それが選択したタスクを実行するために、記憶ユニット106またはRAM 104にアクセスすることができる。起動CPUとして機能する初期化されたCPUは、他のCPUを初期化し、スタートアップのプロセッサ間割り込み(IPI:inter-processor interrupt)を使用して、それらをアクティブ化することができる。初期化されたCPUの実行は、IPIメッセージによって指定された実際のモード開始アドレスから始めることができる。この開始アドレスは、TDCによりタスクを選択および実行するために、初期化されたCPUに対する第1の命令に対応する。
【0049】
立ち上げ時間を短縮するために、立ち上げプロセスに関係する初期化されたCPUによって選択された少なくとも2つのタスクが、少なくとも部分的に同時に実行されることが命じられる。
【0050】
本開示の上記実施形態の技術的解決策を通じて、タスクを実行するための時間は、少なくとも部分的に並列して実行によって短縮され得る。より多くのCPUがこの解決策によって利用され、立ち上げプロセスにおいてより多くの実行時間が節約され得ることを理解されるであろう。
【0051】
図4は、本開示の実施形態により、CPUが、TDCからタスクを選択および実行するための例示的な手順の流れ図である。方法は、以下のブロックを含む。
【0052】
ブロックS401では、CPUは、上記の第1の命令をロードし、第1の命令を実行し始める。以前に述べたように、第1の命令は、CPUがTDCによりタスクを選択および実行するために使用される。ブロックS401の後に、CPUは、最初に、ブロックS403を実行する。
【0053】
ブロックS403では、CPUは、TDCがロックされているかどうかを決定する。TDCがロックされている場合、CPUはブロックS402を実行する。TDCがロックされていない場合、CPUはブロックS404を実行する。
【0054】
ブロック402では、CPUは、しばらくの間、待機/ポーリングし、次いで、TDCがロックされているかどうかを再決定するためにブロックS403に行く。
【0055】
ロック属性は、複数のプロセスの間で共有され得るTDCにおけるデータへのアクセスを限定/制限するために、この実施形態では同期機構として使用される。これにより、たとえば、CPUによって制御されている1つのプロセスが、所与の事例/時間において、そのデータにアクセスすることを許可する。このため、たとえば、複数のCPUによって制御されている複数のプロセスが、所与の事例/時間において、共用されたデータにアクセス/修正することができるが、そのデータにロックを有しているプロセスだけが、それにアクセス/修正することができる。このデータは、それがデータのロックを取得した場合のみ、別のプロセスによってアクセス/修正され得る(プロセスが以前にこのデータのロックを保持している場合、ロックを解放する)。
【0056】
ブロックS404では、CPUは、TDCの対応するフィールドをロックする。たとえば、CPUは、他のCPUによってアクセスされることからTDCにおける同じデータを保護するために、CPUの識別でロック済みとしてTDCでそれによって実行されるタスクのロックフィールドに印を付けることができる。
【0057】
ブロックS405では、CPUは、TDCのすべてのタスクが、タスクの選択情報により完了したかどうかを決定する。TDCに完了していないタスクがある場合、CPUは、ブロックS407を実行する。TDCのすべてのタスクが完了している場合、CPUは、ブロックS406を実行するか、またはブロックS416を直接的に実行することができる。
【0058】
ブロックS406では、CPUは、TDCにおけるタスクのロックを解除する。たとえば、CPUは、「ロック解除」としてTDCのタスクのロックフィールドに印を付けることができる。次いで、CPUは、ブロックS416を実行することができる。
【0059】
ブロックS407では、CPUは、TDCの選択情報によりTDCからタスクを選択し、選択されたタスクをロックする。特定のタスク選択戦略については、すでに上に記述した。簡潔さのために、ここで再び述べることはない。
【0060】
ブロックS408では、CPUは、TDCにおけるタスクのロックを解除し、ブロックS409を実行しに行くか、またはブロックS411を実行しに直接的に行く。ブロックS408の後に、他のCPUは、タスク選択のためにTDCにアクセスすることができる。
【0061】
ブロックS409では、CPUは、選択されたタスクがすでにRAMにあるかどうかを決定する。ある場合、CPUは、ブロックS411を実行しに行く。ない場合、CPUは、ブロックS410を実行しに行く。
【0062】
ブロックS410では、CPUは、実行されるタスクをRAMにコピーする。次いで、CPUは、ブロックS411を実行しに行く。たとえば、CPUは、タスクのアドレス情報により、記憶ユニットのタスクのコードを検索し、実行するために記憶ユニットからRAMへとタスクのコードをコピーすることができる。
【0063】
ブロックS411では、CPUは、選択されたタスクを実行する。選択されたタスクの実行を完了した後、CPUは、ブロックS413を実行しに行くことができる。必要に応じて、実行する前に、CPUは、タスクのアドレス情報によりRAMにおいて選択されたタスクを検索し、選択されたタスクを取得する。
【0064】
ブロックS413では、CPUは、TDCがロックされているかどうかを決定する。TDCがロックされている場合、CPUは、ブロックS412を実行する。TDCがロックされていない場合、CPUは、ブロックS414を実行する。
【0065】
ブロック412では、CPUは、しばらくの間、待機/ポーリングし、次いで、TDCがロックされているかどうかを再決定するためにブロックS413に行く。
【0066】
ブロックS414では、CPUは、TDCにおけるタスクをロックする。次いで、CPUは、ブロックS415を実行しに行く。
【0067】
ブロックS415では、CPUは、「完了済み」として完了したタスクの選択情報の状態フィールドに印を付ける。次いで、CPUは、ブロックS405に行くことができる。
【0068】
ブロックS416では、CPUは、図4に示した選択および実行の手順を終了する。たとえば、CPUは、第1の命令の実行を停止することができる。
【0069】
図5は、本開示の実施形態による、複数のCPUが並列してタスクを実行する流れ図である。
【0070】
図5に示すように、オプションの段階1において、コンピュータシステムの電源投入またはリセットは、複数のCPUのすべてまたは一部を初期化することができる(たとえば、CPU 0〜NのCPU 0)。初期化されたCPUの一部またはすべては、起動プロセスに関係し得る。
【0071】
必要に応じて、段階1の間に初期化される起動CPUとしてCPU 0のみがあり、他のCPUはアイドル状態(または初期化されていない状態)にある場合、初期化されたCPU 0は、オプションの段階2において、残りのCPUを初期化する。
【0072】
段階3において、初期化されたCPUは、TDCのすべてのタスクが完了するまで、TDCからタスクを選択し、たとえば図4に示す方法で、独立して、および少なくとも部分的に同時にそれらを実行することができる。
【0073】
複数のCPUによる上記の並列実行を通じて、複数のCPUを有するコンピュータシステムCPUにおける立ち上げプロセスにおいてタスクを実行するための時間は短縮され得る。たとえば、立ち上げ時間は、90/100*(X/N-N*D*X)へと短縮され得て、ここで、Xは、現在の立ち上げ時間であり、Nは、CPUの数であり、Dは、CPUがTDCにおいて次のタスクを選択するための時間期間である。これは推定にすぎず、特定の数を超えて拡張可能ではない場合がある。
【0074】
複数のCPUによる並列実行に関する上記実施形態は、立ち上げプロセスだけでなく、コンピュータシステムにおける様々なプロセスにおいて実装され得ることを留意されたい。しかしながら、立ち上げプロセスは、並列実行からの大きな利益を得るものの可能性がある。上記のように、典型的な立ち上げプロセスは、BIOSモジュール、ブートローダモジュール、およびカーネルモジュールを含む。BIOSモジュールは、システムハードウェア構成要素を初期化および試験するために使用される。BIOSモジュールは、基本的な入力/出力システム、ユニファイドエクステンシブルファームウェアインターフェース(UEFI)、およびエクステンシブルファームウェアインターフェース(EFI)など、少なくともシステムハードウェア構成要素を初期化および試験する機能を実現する任意の種類のシステムの場合がある。ブートローダは、RAMにカーネルのイメージをロードするために、BIOSによって呼び出されるモジュールである。カーネルは、ほとんどのコンピュータオペレーティングシステムの主な構成要素である。それは、アプリケーションと、ハードウェアレベルで実行される実際のデータ処理との間の橋渡しである。ブートローダモジュールが終わった後、カーネルモジュールは、カーネルのリソースおよびデータ構造を初期化するために実行され得る。
【0075】
各立ち上げプロセスにおける3つのモジュールは、それぞれ様々な実行ステップを含むことがよく知られている。図6に示すように、立ち上げプロセスにおいて複数のCPU実行を実装するために、3つのモジュールのステップは、「モジュール化」と呼ばれる手順で相互配置(inter-arrange)され得る。つまり、各モジュールは、セクションへと分解され得る。各セクションは、1つまたは複数の独立したステップまたは非同期のステップを含むことができる。図6を参照すると、たとえば、BIOSモジュールにおけるinit()のステップは、相互に独立したinit_0_0()およびinit_0_1()のステップへと分解され得る。BIOSモジュールにおける別の特定のモジュール化の実例もここで提供される。BIOSモジュールにおける周辺機器の初期化ステップは、構成登録は、所与の時間/事例に1つのプロセスによってのみ修正され得るので、順次に実行されるために使用され得る。この実施形態では、周辺機器の初期化ステップは、構成登録の修正以外にデバイスを初期化するための初期化ステップと、初期化ステップに基づいて構成登録を修正するための登録ステップという2つのより小さなステップのグループへと分解され得る。したがって、複数の周辺機器を初期化するための初期化ステップは、並列して複数のCPUによって実行され得る。また、必要な場合、複数の周辺機器に関する登録ステップは、後にCPUによって順次に実行され得る。同様のモジュール化は、起動モジュールおよびカーネルモジュールで実装され得る。共有されるリソースについて、同期するためにロックを使用して、複数のCPUによってアクセスされ得る。
【0076】
次いで、モジュール化されたステップは、個々のタスクを形成するために分離され得る。たとえば、BIOSモジュールにおいてモジュール化されたステップは、bios_task1()およびbios_task2()のタスクへとグループ化され得る。グループ化されたタスクの少なくとも2つのタスクは、同時に実行可能なタスクの場合がある。タスクの順序は、各タスクの設定優先度により決定され得る。たとえば、ブートローダモジュールからのタスクは、BIOSモジュールからのタスクと並列に実行されるように設定され得る。したがって、BIOSモジュールがその実行を完了している間に、カーネルのコピーおよび解凍のようなタスクが達成され得る。これらのタスクを記述するTDCは、各タスクの少なくとも1つの次の属性により生成され得る:優先度、依存関係、アドレス、サイズ、エラーコード、ロック、状態、および依存関係。
【0077】
必要に応じて、割り込みベクタテーブル(IVT)は、BIOSモジュールからの一部またはすべてのステップの実行の間に、すべてのCPUに対して初期化される。IVTは、割り込みおよび割り込みハンドラのマッピングを含むCPUに関連する表である。それは、特定の割り込みを受信したときに、どの割り込みハンドラ(プログラム/機能)を実行するべきかをCPUに伝える表である。
【0078】
必要に応じて、RAMの初期化は段階的に行われる。各段階で、RAMの領域の一部だけが初期化される。たとえば、BIOSモジュールおよびブートローダモジュールのタスクをコピーするためのRAMの領域のみが、第1段階および/または第2段階で初期化される。カーネルモジュールのタスクをコピーするためのRAMの残りの領域の初期化は、第3段階で行われ得る。必要に応じて、TDCが各タスクのサイズを含むときに、RAMの初期化は、より細かな方法で処理され得る。たとえば、RAMの初期化は、TDCのタスクの順序およびサイズにより複数の段階で行われ得る。必要に応じて、TDCのタスクとしてのRAMの初期化は、他の起動タスクと並行して完了する。
【0079】
図7に示すように、それはコンピュータシステムを立ち上げるための装置のブロック図である。装置は、複数の処理モジュール702(処理モジュール1および処理モジュール2など少なくとも2つの処理モジュールを含む)および格納モジュール703を含み、複数の処理モジュール702の少なくとも2つの処理モジュールは、立ち上げプロセスの最初に初期化され、格納モジュール703は、タスク記述チャート(TDC)を格納するように構成され、TDCは、立ち上げプロセスの少なくとも2つのタスクの情報を含み、複数の処理モジュールの初期化された処理モジュールは、それぞれTDCにアクセスするように構成され、それぞれが、TDCの少なくとも2つのタスクの選択情報により、少なくとも2つのタスクから1つのタスクを選択し、それぞれが、TDCの選択されたタスクのアドレス情報により、選択されたタスクを取得し、少なくとも部分的に並列して、選択されたタスクを実行する。
【0080】
必要に応じて、複数の処理モジュール702は、図1のプロセッサ101および/またはプロセッサ108に対応する。格納モジュールは、図1の記憶ユニット106およびRAM 104に対応する。
【0081】
必要に応じて、初期化された処理モジュールの第1の処理モジュールは、TDCにアクセスした後に、TDCをロックするようにさらに構成され、ロックされたTDCは、第1の処理モジュール以外に処理モジュールによってアクセス可能ではない。
【0082】
必要に応じて、選択情報は、少なくとも2つのタスクの各々の優先度を示す優先度フィールドをさらに含み、第1の処理モジュールは、少なくとも2つのタスクの中でより高い優先度を備えたタスクを最初に選択するようにさらに構成される。
【0083】
必要に応じて、選択情報は、少なくとも2つのタスクにおける第1のタスクが依存する第2のタスクを示す依存関係フィールドをさらに含み、第1の処理モジュールは、完了済みとして第2のタスクに印が付けられたときに、第1のタスクを選択するようにさらに構成される。
【0084】
必要に応じて、選択情報は、少なくとも2つのタスクの各々が初期化された処理モジュールによってロックされているかどうかを示すロックフィールドをさらに含み、第1の処理モジュールは、第1の処理モジュールが第3のタスクを選択した後に、少なくとも2つのタスクにおいて第3のタスクをロックするようにさらに構成され、ロック済みとして印が付けられている第3のタスクは、第1の処理モジュール以外に初期化された処理モジュールによって選択可能ではない。
【0085】
必要に応じて、選択情報は、少なくとも2つのタスクの各々が完了しているかどうかを示す状態フィールドをさらに含み、第1の処理モジュールは、第4のタスクの実行を完了した後に、完了済みとして少なくとも2つのタスクにおいて第4のタスクの状態フィールドに印を付けるようにさらに構成され、完了済みとして印を付けられた第4のタスクは、初期化された処理モジュールによって選択可能ではない。
【0086】
必要に応じて、第1の処理モジュールは、第1の処理モジュールが選択を終了した後に、TDCのロックを解除するようにさらに構成される。
【0087】
必要に応じて、装置は、立ち上げ処理モジュールとして複数の処理モジュールの処理モジュールを初期化するように構成された初期化モジュール701をさらに含み、立ち上げ処理モジュールは、複数の処理モジュールの他の処理モジュールを初期化するように構成される。
【0088】
必要に応じて、少なくとも2つのタスクは、初期化された処理モジュールによって並列に実行可能なタスクを含み、基本入出力システム(BIOS)モジュール、ブートローダモジュール、およびカーネルモジュールを含む立ち上げプロセスからである。
【0089】
必要に応じて、BIOSモジュール、ブートローダモジュール、およびカーネルモジュールからのステップは、独立したステップまたは非同期のステップを含むステップへとモジュール化され、モジュール化されたステップは、少なくとも2つのタスクのタスクを形成するために分離される。
【0090】
必要に応じて、BIOSモジュールにおける周辺機器の初期化ステップは、構成レジスタを修正する以外にデバイスを初期化するための初期化ステップと、初期化ステップに基づいて構成レジスタを修正するための登録ステップとに分割され、初期化ステップおよび登録ステップは、少なくとも2つのタスクの異なるタスクを形成するために分離される。
【0091】
必要に応じて、選択情報は、少なくとも2つのタスクの各々のサイズを示すサイズフィールドをさらに含む。および
【0092】
必要に応じて、第1の処理モジュールは、タスクを実行するために使用可能なメモリにより、少なくとも2つのタスクの第5のタスクを実行するべきかどうかと、第5のタスクおよび使用可能なメモリで実行されるタスクのサイズフィールドとを決定するようにさらに構成される。
【0093】
必要に応じて、少なくとも2つの初期化された処理モジュールは、その情報がTDCにあるすべてのタスクが実行されるまで、TDCによりタスクを選択および実行することを継続するように構成される。
【0094】
当業者は、本出願の方法のステップのすべてまたは一部は、関連するハードウェアに指示するコンピュータプログラムによって実装され得ることを理解するべきである。プログラムは、コンピュータ可読記憶媒体に格納され得る。プログラムが実行されている場合、プログラムは、本出願の任意の実施形態で指定された方法を実行する。記憶媒体は、磁気ディスク、光ディスク、読み取り専用メモリ(ROM)、またはランダムアクセスメモリ(RAM)の場合がある。
【0095】
最後に、上記の実施形態は、単に説明のために使用されるものであり、本出願の技術的解決策を制限するものではないことを理解するべきである。上記の好ましい実施形態に関する本出願の詳細な説明にもかかわらず、当業者は、本出願の範囲から逸脱することなく、本出願の特許請求の範囲で対象にされている、様々な修正、変更、または等価な交換を行うことができることを理解するべきである。
【符号の説明】
【0096】
100 コンピュータシステム
101 プロセッサ
102 出力デバイス
103 入力デバイス
104 ランダムアクセスメモリ(RAM)
105 通信インターフェース
106 記憶ユニット
108 プロセッサ
109 コード
110 初期化回路
701 初期化モジュール
702 処理モジュール
703 格納モジュール
図1
図2
図3
図4
図5
図6
図7
【手続補正書】
【提出日】2015年10月28日
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、一般的にコンピュータ技術に関し、より具体的には、複数の中央処理装置(CPU)を有するコンピュータシステムを立ち上げるための方法に関する。
【背景技術】
【0002】
コンピュータシステムの立ち上げは、ブートストラッピングプロセスである。コンピュータシステムの電源が投入されると、プロセスは、コンピュータシステムのハードウェアを初期化し、次いで、オペレーティングシステム(たとえばカーネル)を開始する。短い立ち上げ順序は、通常は、基本入出力システム(BIOS)、ブートローダ、次いで、カーネルから始まる。
【0003】
コンピュータシステムの電源が投入されると、BIOSは、ランダムアクセスメモリ(RAM)、プロセッサ、キーボード、およびモニタなどを含むデバイスを初期化するパワーオンセルフテスト(POST)を実行する。通常、コンピュータシステムのプロセッサは、単一CPUまたは複数のCPUを含む機能ハードウェアユニットである(多くの場合、シングルコアプロセッサまたはマルチコアプロセッサと呼ばれる)。または、コンピュータシステムは、複数のプロセッサを含むことができる。コンピュータシステムが複数のCPUを含む場合(たとえばマルチプロセッサシステムまたはマルチコアプロセッサシステムの形で)、CPUの1つは、立ち上げプロセスのためにBIOS初期化コードおよびカーネル初期化コードを実行する「起動CPU」であると決定され得る。残りのCPU(多くの場合、アプリケーションプロセッサ(AP)と呼ばれる)は、OSが実行し始めるまでアイドル状態を維持する。BIOS初期化が終わると、ブートデバイスが識別され、ブートローダが、ブートデバイスからRAMにロードされ、制御はブートローダに渡される。ブートローダは、どのOS(たとえばカーネル)を立ち上げるかを決定し、決定されたOSをブートデバイスからRAMへとロードし、制御をOSに渡す。OSが実行を開始すると、それはリソースおよびデータ構造、残りのCPUを初期化し、様々なサービスを初期化する最初のスクリプトを実行する。
【0004】
ほとんどの既存のコンピュータシステムでは、上記の立ち上げステップは、1つのCPUのみによって順次に実行される。立ち上げプロセスでは多くの時間が費やされ、立ち上げ時間を減らすことが大きな関心事である。
【発明の概要】
【課題を解決するための手段】
【0005】
複数のCPUを備えたコンピュータシステムの立ち上げ時間を節約するために、本開示では様々な実施形態が提供される。
【0006】
本開示の第1の態様として、複数のCPUを備えたコンピュータシステムを立ち上げるための方法が提供される。方法は、立ち上げプロセスの最初に複数のCPUの少なくとも2つのCPUを初期化するステップと、少なくとも2つの初期化されたCPUの各々によって、コンピュータシステムに格納されているタスク記述チャート(TDC)にアクセスするステップであって、TDCは、立ち上げプロセスの少なくとも2つのタスクの情報を含むステップと、少なくとも2つの初期化されたCPUの各々によって、TDCの少なくとも2つのタスクの選択情報により、少なくとも2つのタスクからタスクを選択するステップと、少なくとも2つの初期化されたCPUの各々によって、TDCの選択されたタスクのアドレス情報により、選択されたタスクを取得するステップと、初期化されたCPUによって、少なくとも部分的に並列して、選択されたタスクを実行するステップとを含む。
【0007】
本開示の第2の態様として、コンピュータシステムが提供される。コンピュータシステムは、メモリに結合された複数のCPUを含み、複数のCPUの少なくとも2つのCPUは、立ち上げプロセスの最初に初期化され、メモリは、TDCおよび第1の命令を格納するように構成され、TDCは、立ち上げプロセスの少なくとも2つのタスクの情報を含み、複数のCPUの少なくとも2つの初期化されたCPUは、本開示の第1の態様に記載の方法を実行するために、第1の命令により、それぞれがTDCにアクセスするように構成される。
【0008】
本開示の第3の態様として、複数のCPUを備えたコンピュータシステムを立ち上げるためのコードを含む非一時的コンピュータ可読媒体が提供される。コードは、複数のCPUの複数の初期化されたCPUによって実行された場合、本開示の第1の態様に記載の方法を実行する
【0009】
本開示の第4の態様として、タスク記述チャートが提供される。タスク記述チャートは、少なくとも2つのタスクに対応する選択情報を示すように構成された選択情報フィールドと、少なくとも2つのタスクに対応するアドレス情報を示すように構成されたアドレス情報フィールドとを含み、複数のCPUを備えたコンピュータシステムの複数の初期化されたCPUは、選択情報フィールドにより少なくとも2つのタスクからタスクを選択し、アドレス情報フィールドにより、選択されたタスクを取得し、少なくとも部分的に並列して、選択されたタスクを実行する。
【0010】
いくつかの例において、タスク記述チャートは、TDCが複数の初期化されたCPUの第1のCPUによってロックされているか、およびロックされたTDCが第1のCPU以外のCPUによってアクセス可能ではないか、どうかを示すように構成されたTDCロックフィールドをさらに含む。
【0011】
本開示の第5の態様として、複数のCPUを備えたコンピュータシステムを立ち上げるための別の方法が提供され、方法は、コンピュータシステムの初期化回路によって、コンピュータシステムの1つまたは複数のCPUを初期化するステップと、初期化されたCPUの各々によって、コンピュータシステムに格納されたTDCにより、少なくとも2つのタスクから1つのタスクを選択するステップであって、各タスクは、TDCに記録されたその選択情報およびアドレス情報を有し、異なるタスクは、タスクの選択情報により、異なる初期化されたCPUによって最小の2つのタスクから選択されるステップと、初期化されたCPUの各々によって、選択されたタスクのアドレス情報により、選択されたタスクのプログラム命令を取得するステップと、初期化されたCPUによって、少なくとも部分的に同時に、選択されたタスクを実行するステップであって、TDCは、立ち上げプロセスに対するすべてのタスクの情報を含み、初期化されたCPUは、その情報がTDCにあるすべてのタスクが実行されるまで、TDCにより、タスクを選択および実行することを継続するステップとを含む。
【0012】
本開示の第6の態様として、コンピュータシステムを立ち上げるための装置が提供される。前記装置は、本開示の第1の態様に記載の方法を実施するためのモジュールを含む。
【0013】
いくつかの例において、初期化された第1のCPUがTDCにアクセスする場合、第1のCPUがTDCをロックし、ロックされたTDCは、第1のCPU以外のCPUによってアクセス可能ではない。
【0014】
いくつかの例において、選択情報は、少なくとも2つのタスクのそれぞれの優先度を示す優先度フィールドをさらに含み、少なくとも2つのタスクのうち高い優先度のタスクが第1のCPUによって最初に選択される。
【0015】
いくつかの例において、選択情報は、少なくとも2つのタスクにおいて第1のタスクが依存する第2のタスクを示す依存関係フィールドをさらに含み、完了済みとして第2のタスクに印が付けられている場合、第1のタスクは、第1のCPUによって選択可能である。
【0016】
いくつかの例において、選択情報は、少なくとも2つのタスクの各々が初期化されたCPUによってロックされているかどうかを示すロックフィールドをさらに含む。選択情報により、少なくとも2つのタスクにおいて第1のCPUが第3のタスクを選択した後に、第1のCPUは、ロック済みとして第3のタスクのロック領域に印を付ける。ロック済みとして印が付けられている第3のタスクは、第1のCPU以外の初期化されたCPUによって選択可能ではない。
【0017】
いくつかの例において、選択情報は、少なくとも2つのタスクの各々が完了しているかどうかを示す状態フィールドをさらに含む。少なくとも2つのタスクにおいて第4のタスクの実行を完了した後に、第1のCPUは、完了済みとして第4のタスクの状態フィールドに印を付け、完了済みとして印が付けられている第4のタスクは、初期化されたCPUによって選択可能ではない。
【0018】
いくつかの例において、第1のCPUが選択を終了した後に、第1のCPUは、TDCのロックを解除する。
【0019】
いくつかの例において、複数のCPUの少なくとも2つのCPUの初期化は、コンピュータシステムの初期化回路によって複数のCPUのCPUを起動CPUとして初期化することと、複数のCPUの他のCPUを起動CPUによって初期化することを含む。
【0020】
いくつかの例において、少なくとも2つのタスクは、初期化されたCPUによって並列に実行可能なタスクを含み、基本入出力システム(BIOS)モジュール、ブートローダモジュール、およびカーネルモジュールを含むコンピュータシステムの立ち上げプロセスからである。
【0021】
いくつかの例において、BIOSモジュール、ブートローダモジュール、およびカーネルモジュールからのステップは、独立したステップまたは非同期のステップを含むステップへとモジュール化され、モジュール化されたステップは、少なくとも2つのタスクのタスクを形成するために分離される。
【0022】
いくつかの例において、BIOSモジュールにおける周辺機器の初期化ステップは、構成レジスタを修正する以外にデバイスを初期化するための初期化ステップと、初期化ステップに基づいて構成レジスタを修正するための登録ステップとに分割され、初期化ステップおよび登録ステップは、少なくとも2つのタスクの異なるタスクを形成するために分離される。
【0023】
いくつかの例において、TDCは、モジュール化および分離から生成されたタスクにより生成される。
【0024】
いくつかの例において、選択情報は、少なくとも2つのタスクの各々のサイズを示すサイズフィールドをさらに含み、第1のCPUは、タスクを実行するために使用可能なメモリにより、少なくとも2つのタスクの第5のタスクを実行するべきかどうかと、第5のタスクおよび使用可能なメモリで実行されるタスクのサイズフィールドとを決定する。
【0025】
いくつかの例において、初期化のステップの後に、初期化されたCPUによるアクセス、選択、取得、および実行のステップは、その情報がTDCにあるすべてのタスクが実行されるまで繰り返される。
【図面の簡単な説明】
【0026】
図1】本開示の実施形態によるコンピュータシステムを示すブロック図である。
図2】本開示の実施形態による並列してタスクを実行するための方法を示す流れ図である。
図3】本開示の実施形態によるタスク記述チャート(TDC)の構造を示す図である。
図4】本開示の実施形態による、TDCからのCPUの選択および実行タスクの手順を示す流れ図である。
図5】本開示の実施形態による、複数のCPUが並列してタスクを実行するのを示す流れ図である。
図6】TDCの例示的な構造、および立ち上げプロセスのためにTDCを生成するモジュール化プロセスを示す図である。
図7】コンピュータシステムを立ち上げるための装置を示すブロック図である。
【発明を実施するための形態】
【0027】
本出願の前述の目的、技術的解決策、および利点をより理解しやすくするために、添付の図を用いて実施形態について以下に記述する。
【0028】
図1は、本開示の実施形態によるコンピュータシステム100のブロック図である。コンピュータシステム100は、ランダムアクセスメモリ(RAM)104などのメモリと結合され、適宜、記憶ユニット106に結合されたプロセッサ101を含む。記憶ユニット106は、読み取り専用メモリ(ROM)または他の記憶媒体(たとえばハードディスクまたはフラッシュメモリなど)の場合がある。
【0029】
プロセッサ101は、図1に示したCPU 0およびCPU 1など、複数のCPUを含むことができる。必要に応じて、コンピュータシステム100は、たとえば図1におけるプロセッサ101およびプロセッサ108など、2つ以上のプロセッサを含む。プロセッサ101および108の各々は、シングルコアプロセッサまたはマルチコアプロセッサのいずれかの場合がある。
【0030】
プロセッサ101のCPUが実行する様々なコードは、RAM 104または記憶ユニット106のいずれかに格納され得る。必要に応じて、コード109は、プロセッサ101が実行するために記憶ユニット106からRAM 104にコピーされる。必要に応じて、記憶ユニットに格納されたコードは、限定しないが、BIOSモジュール、ブートローダモジュール、カーネルモジュールの1つまたは組み合わせを含む。記憶ユニットには、また、タスク記述チャート(TDC)、後で詳細に説明されるであろう第1の命令および第2の命令がある。
【0031】
必要に応じて、コンピュータシステムは、出力デバイス102(たとえばLCD(液晶ディスプレイ)などのディスプレイデバイス、LED(発光ダイオード)ディスプレイ、CRT(陰極線管)またはプロジェクタ)、および入力デバイス103(たとえばマウス、キーボード、タッチ画面、またはユーザの入力を検出することができるセンサデバイス)をさらに含む。出力デバイス102は、画像による対話インターフェースを表示するために、プロセッサ101によって制御される。必要に応じて、コンピュータシステムは、外部ネットワークまたは他のデバイスとデータまたは信号を交換するための通信インターフェース105をさらに含む。プロセッサ101のCPUが実行する上記の様々なコード(BIOSモジュール、ブートローダモジュール、カーネルモジュール、TDC、第1の命令、および第2の命令のいずれか1つまたは組み合わせなど)は、他のデバイスから通信インターフェース105を通じて取得され得る。
【0032】
コンピュータシステム100の上記の要素は、データバス、アドレスバス、制御バス、拡張バス、またはローカルバスなど、バスによって相互に結合され得る。
【0033】
コンピュータシステム100は、デスクトップコンピュータ、ネットワークサーバ、携帯情報端末(PDA)、モバイル電話、タブレット、端末装置、テレコムデバイス、組み込みシステム、または図1に示したような同様の構造を有する任意の他のデバイスの場合がある。しかしながら、本開示は、特定のタイプのコンピュータシステムに制限されるものではない。
【0034】
複数のCPUを備えたコンピュータシステムを立ち上げるための方法が提供される。図2は、方法の流れ図である。本明細書に記述された方法は、図1に示されたコンピュータシステム100において実装され得るが、そのようなシステムに制限されるものではない。
【0035】
複数のCPUを含み、少なくとも2つのCPUが立ち上げプロセスに関係するコンピュータシステムについて、方法は以下のブロックを含む。
【0036】
S100:立ち上げプロセスの最初に複数のCPUの少なくとも2つのCPUを初期化する
【0037】
必要に応じて、立ち上げプロセスに関係する少なくとも2つのCPUは、コンピュータシステムのCPU(図1を参照)に結合された初期化回路110によって初期化される。初期化回路は、コンピュータシステムの電力投入またはリセット時に、立ち上げプロセスに関係する少なくとも2つのCPUを含む、コンピュータシステムの構成要素を初期化する。初期化回路は、また、少なくとも2つのCPUによって使用するためにRAM 104を初期化することができる。あるいは、初期化回路は、たとえば少なくとも2つのCPUの起動CPUなど、最初に少なくとも2つのCPUの一部を初期化し、次いで、残りを初期化することができる。たとえば、初期化された起動CPUは、記憶媒体106に格納されている第2の命令を取得するために、記憶媒体106にアクセスし、第2の命令により残りのCPUを初期化することができる。
【0038】
S102:少なくとも2つの初期化されたCPUの各々が、コンピュータシステムに格納されているタスク記述チャート(TDC)にアクセスする。TDCは、立ち上げプロセスの少なくとも2つのタスクの情報を含む。
【0039】
必要に応じて、初期化されたCPUの第1のCPUがTDCにアクセスする場合、第1のCPUはTDCをロックし、ロックされたTDCは、第1のCPU以外のCPUによってアクセス可能ではない。たとえば、図3に示すように、TDCは、「TDCロック」フィールドを含むことができる。TDCをロックするために、第1のCPUは、ロック済みとしてTDCのTDCロックフィールドに印を付けることができる。
【0040】
S104:少なくとも2つの初期化されたCPUの各々は、TDCの少なくとも2つのタスクの選択情報により、少なくとも2つのタスクからタスクを選択する。
【0041】
必要に応じて、選択情報は、少なくとも2つのタスクの各々の優先度を示す優先度フィールドをさらに含み、少なくとも2つのタスクの中でより高い優先度を備えたタスクは、第1のCPUによって最初に選択される。
【0042】
必要に応じて、選択情報は、少なくとも2つのタスクにおいて第1のタスクが依存する第2のタスクを示す依存関係フィールドをさらに含み、完了済みとして第2のタスクに印が付けられている場合、第1のタスクは、第1のCPUによって選択可能である。
【0043】
必要に応じて、選択情報は、少なくとも2つのタスクの各々が初期化されたCPUによってロックされているかどうかを示すロックフィールドをさらに含み、選択情報により、少なくとも2つのタスクにおいて第1のCPUが第3のタスクを選択した後に、第1のCPUは、ロック済みとして第3のタスクのロック領域に印を付け、ロック済みとして印が付けられている第3のタスクは、第1のCPU以外の初期化されたCPUによって選択可能ではない。
【0044】
必要に応じて、選択情報は、少なくとも2つのタスクの各々が完了しているかどうかを示す状態フィールドをさらに含み、少なくとも2つのタスクにおいて第4のタスクの実行を完了した後に、第1のCPUは、完了済みとして第4のタスクの状態フィールドに印を付け、完了済みとして印が付けられている第4のタスクは、初期化されたCPUによって選択可能ではない。
【0045】
必要に応じて、第1のCPUが選択を終了した後に、第1のCPUは、TDCのロックを解除する。
【0046】
S106:少なくとも2つの初期化されたCPUの各々は、TDCの選択されたタスクのアドレス情報により、選択されたタスクを取得する。
【0047】
S108:初期化されたCPUは、少なくとも部分的に並列して、選択されたタスクを実行する。
【0048】
必要に応じて、選択情報は、少なくとも2つのタスクの各々のサイズを示すサイズフィールドをさらに含み、第1のCPUは、タスクを実行するために使用可能なメモリにより、少なくとも2つのタスクの第5のタスクを実行するべきかどうかと、第5のタスクおよび使用可能なメモリで実行されるタスクのサイズフィールドとを決定する。
【0049】
必要に応じて、初期化のステップの後に、初期化されたCPUによるアクセス、選択、取得、および実行のステップは、その情報がTDCにあるすべてのタスクが実行されるまで繰り返される。
【0050】
上記のステップS102からS108nは、第1の命令により第1のCPUによって実施され得る。
【0051】
必要に応じて、少なくとも2つのタスクは、初期化されたCPUによって並列して実行可能なタスクを含み、基本入出力システム(BIOS)モジュール、ブートローダモジュール、およびカーネルモジュールを含むコンピュータシステムの立ち上げプロセスからである。
【0052】
必要に応じて、BIOSモジュール、ブートローダモジュール、およびカーネルモジュールからのステップは、独立したステップまたは非同期のステップを含むステップへとモジュール化され、モジュール化されたステップは、少なくとも2つのタスクのタスクを形成するために分離される。
【0053】
必要に応じて、BIOSモジュールにおける周辺機器の初期化ステップは、構成レジスタを修正する以外にデバイスを初期化するための初期化ステップと、初期化ステップに基づいて構成レジスタを修正するための登録ステップとに分割され、初期化ステップおよび登録ステップは、少なくとも2つのタスクの異なるタスクを形成するために分離される。
【0054】
必要に応じて、TDCは、モジュール化および分離から生成されたタスクにより生成される。
【0055】
図3に示すように、例示的なTDCは、複数のタスクのアドレス情報および選択情報を含む(たとえば、タスク1からタスクN、N≧2)。立ち上げプロセスに含まれる初期化されたCPUの各々は、選択情報により、少なくとも2つのタスクの1つのタスクを選択し、タスクのアドレス情報により記憶ユニット106またはRAM 104から、選択されたタスクを取得し、取得されたタスクを実行する。
【0056】
TDCは、TDCファイルに関する情報を示すTDCメタデータフィールドを含むことができ、これはファイル内容およびセキュリティ関連の問題を処理するためのプロセスなどによって使用され得る。TDCロックフィールドは、TDCメタデータフィールドの一部の場合がある。
【0057】
以下は、2つの初期化されたCPU(たとえばCPU 1およびCPU 2)が、TDCにより異なる選択情報(ロック、状態、優先度、および依存関係など)を用いて、TDCにおける3つのタスクからタスクを選択する実例である(たとえば、タスク1、タスク2、およびタスク3)。タスク1から3の選択情報は、Table 1(表1)に示している。
【0058】
【表1】
【0059】
CPU 1がTDCにアクセスする場合、CPU 1は選択情報により実行するためにタスク1を選択することができる。その理由は、タスク1は、タスク1から3の間で最高の優先順位を有しており、「ロック解除」として印が付けられているためである。タスク1を選択した後、CPU 1は、「ロック済み」としてタスク1のロックフィールドに印を付けることができる。次いで、CPU 2は、タスクを選択するためにTDCにアクセスする。理由:1)タスク1のロックフィールドは、タスク1がロックされていることを示している(つまり、最高の優先順位を備えたタスク1は、CPU 1によってすでに選択されている)、2)2番目に高い優先順位を備えたタスク2は、タスク1に依存する、3)タスク1の状態フィールドは、タスク1が未完了であることを示しており、CPU 2は、選択情報により実行するために3番目に高い優先順位を備えたタスク3を選択する。タスク3を選択した後、CPU 2は、「ロック済み」としてタスク3のロックフィールドに印を付けることができる。タスク1を実行した後、CPU 1は、TDCに再アクセスし、「完了済み」としてタスク1の状態フィールドに印を付け、実行するためにTDCにおける別のタスクを選択する。理由:1)タスク3のロックフィールドは、タスク3が「ロック済み」であることを示し、タスク1の状態フィールドは、タスク1が「完了済み」であることを示し(つまり、タスク1および3は選択可能ではない)、CPU 1は、タスク1の完了のためにここで選択可能なタスク2を選択することができる。上記のタスク選択および選択情報の修正は、第1の命令により、プロセッサで実行されるスケジューラアプリケーションによって実施され得る。
【0060】
立ち上げプロセスの間に、メモリ(RAM 104など)は、部分的に初期化され得る。したがって、並列して実行されている特定のサイズを有するタスクに利用可能なメモリ空間は制限されている。多数の大きなサイズのタスクが並列して実行される場合、別のタスクは、実行されない/またはメモリにコピーされる場合がある。この問題を解決するために、メモリを管理するために実施形態において、メモリマネージャ(たとえばCPUの1つによって実行されるメモリマネージャアプリケーション)が提供される。TDCは、タスクのサイズフィールドをさらに含むことができる。サイズフィールドは、対応するタスクのサイズを示す場合がある。スケジューラアプリケーションは、使用可能なメモリにより、現在、どのタスクが実行されるかべきか、または実行されるべきでないかをさらに決定することができ、それに関する情報は、メモリマネージャ、およびサイズフィールドによって提供される(実行されたタスクおよび後に実行されるタスクのサイズなど)。たとえば、スケジューラアプリケーションは、タスクの選択情報を修正するためにTDCにアクセスすることができる(ロックフィールド、状態フィールド、優先度フィールド、および依存関係フィールドのいずれかまたは任意の組み合わせなど)。したがって、タスクの実行順序は、メモリをより良好に使用するために動的に調整され得る。必要な場合、メモリマネージャは、また、メモリの他の部分の初期化をトリガーすることができる。メモリの他の部分の初期化は、他のタスクと並列して実行され得る。
【0061】
実施形態では、タスクは、スケジューリングのためにピボットとして機能するTDCに基づいてスケジューリングされる。基本メモリ管理も、このTDCを使用することによって達成され得る。
【0062】
必要に応じて、選択情報は、可能なデバッギングのためにエラーコードフィールドをさらに含むことができる。たとえば、メモリマネージャの実行、選択、または管理の間に、タスクに障害が生じた場合、対応するエラーコードは、そのタスクのエラーコードフィールドに入れられる。
【0063】
たとえば、タスク、第1の命令、または第2の命令のプログラムコードは、記憶ユニット106に格納されるか、またはRAM 104に読み込まれ得る。第1の命令およびTDCにより、起動プロセスに関係する各初期化されたCPUは、それが選択したタスクを実行するために、記憶ユニット106またはRAM 104にアクセスすることができる。起動CPUとして機能する初期化されたCPUは、他のCPUを初期化し、スタートアップのプロセッサ間割り込み(IPI:inter-processor interrupt)を使用して、それらをアクティブ化することができる。初期化されたCPUの実行は、IPIメッセージによって指定された実際のモード開始アドレスから始めることができる。この開始アドレスは、TDCによりタスクを選択および実行するために、初期化されたCPUに対する第1の命令に対応する。
【0064】
立ち上げ時間を短縮するために、立ち上げプロセスに関係する初期化されたCPUによって選択された少なくとも2つのタスクが、少なくとも部分的に同時に実行されることが命じられる。
【0065】
本開示の上記実施形態の技術的解決策を通じて、タスクを実行するための時間は、少なくとも部分的に並列して実行によって短縮され得る。より多くのCPUがこの解決策によって利用され、立ち上げプロセスにおいてより多くの実行時間が節約され得ることを理解されるであろう。
【0066】
図4は、本開示の実施形態により、CPUが、TDCからタスクを選択および実行するための例示的な手順の流れ図である。方法は、以下のブロックを含む。
【0067】
ブロックS401では、CPUは、上記の第1の命令をロードし、第1の命令を実行し始める。以前に述べたように、第1の命令は、CPUがTDCによりタスクを選択および実行するために使用される。ブロックS401の後に、CPUは、最初に、ブロックS403を実行する。
【0068】
ブロックS403では、CPUは、TDCがロックされているかどうかを決定する。TDCがロックされている場合、CPUはブロックS402を実行する。TDCがロックされていない場合、CPUはブロックS404を実行する。
【0069】
ブロック402では、CPUは、しばらくの間、待機/ポーリングし、次いで、TDCがロックされているかどうかを再決定するためにブロックS403に行く。
【0070】
ロック属性は、複数のプロセスの間で共有され得るTDCにおけるデータへのアクセスを限定/制限するために、この実施形態では同期機構として使用される。これにより、たとえば、CPUによって制御されている1つのプロセスが、所与の事例/時間において、そのデータにアクセスすることを許可する。このため、たとえば、複数のCPUによって制御されている複数のプロセスが、所与の事例/時間において、共用されたデータにアクセス/修正することができるが、そのデータにロックを有しているプロセスだけが、それにアクセス/修正することができる。このデータは、それがデータのロックを取得した場合のみ、別のプロセスによってアクセス/修正され得る(プロセスが以前にこのデータのロックを保持している場合、ロックを解放する)。
【0071】
ブロックS404では、CPUは、TDCの対応するフィールドをロックする。たとえば、CPUは、他のCPUによってアクセスされることからTDCにおける同じデータを保護するために、CPUの識別でロック済みとしてTDCでそれによって実行されるタスクのロックフィールドに印を付けることができる。
【0072】
ブロックS405では、CPUは、TDCのすべてのタスクが、タスクの選択情報により完了したかどうかを決定する。TDCに完了していないタスクがある場合、CPUは、ブロックS407を実行する。TDCのすべてのタスクが完了している場合、CPUは、ブロックS406を実行するか、またはブロックS416を直接的に実行することができる。
【0073】
ブロックS406では、CPUは、TDCにおけるタスクのロックを解除する。たとえば、CPUは、「ロック解除」としてTDCのタスクのロックフィールドに印を付けることができる。次いで、CPUは、ブロックS416を実行することができる。
【0074】
ブロックS407では、CPUは、TDCの選択情報によりTDCからタスクを選択し、選択されたタスクをロックする。特定のタスク選択戦略については、すでに上に記述した。簡潔さのために、ここで再び述べることはない。
【0075】
ブロックS408では、CPUは、TDCにおけるタスクのロックを解除し、ブロックS409を実行しに行くか、またはブロックS411を実行しに直接的に行く。ブロックS408の後に、他のCPUは、タスク選択のためにTDCにアクセスすることができる。
【0076】
ブロックS409では、CPUは、選択されたタスクがすでにRAMにあるかどうかを決定する。ある場合、CPUは、ブロックS411を実行しに行く。ない場合、CPUは、ブロックS410を実行しに行く。
【0077】
ブロックS410では、CPUは、実行されるタスクをRAMにコピーする。次いで、CPUは、ブロックS411を実行しに行く。たとえば、CPUは、タスクのアドレス情報により、記憶ユニットのタスクのコードを検索し、実行するために記憶ユニットからRAMへとタスクのコードをコピーすることができる。
【0078】
ブロックS411では、CPUは、選択されたタスクを実行する。選択されたタスクの実行を完了した後、CPUは、ブロックS413を実行しに行くことができる。必要に応じて、実行する前に、CPUは、タスクのアドレス情報によりRAMにおいて選択されたタスクを検索し、選択されたタスクを取得する。
【0079】
ブロックS413では、CPUは、TDCがロックされているかどうかを決定する。TDCがロックされている場合、CPUは、ブロックS412を実行する。TDCがロックされていない場合、CPUは、ブロックS414を実行する。
【0080】
ブロック412では、CPUは、しばらくの間、待機/ポーリングし、次いで、TDCがロックされているかどうかを再決定するためにブロックS413に行く。
【0081】
ブロックS414では、CPUは、TDCにおけるタスクをロックする。次いで、CPUは、ブロックS415を実行しに行く。
【0082】
ブロックS415では、CPUは、「完了済み」として完了したタスクの選択情報の状態フィールドに印を付ける。次いで、CPUは、ブロックS405に行くことができる。
【0083】
ブロックS416では、CPUは、図4に示した選択および実行の手順を終了する。たとえば、CPUは、第1の命令の実行を停止することができる。
【0084】
図5は、本開示の実施形態による、複数のCPUが並列してタスクを実行する流れ図である。
【0085】
図5に示すように、オプションの段階1において、コンピュータシステムの電源投入またはリセットは、複数のCPUのすべてまたは一部を初期化することができる(たとえば、CPU 0〜NのCPU 0)。初期化されたCPUの一部またはすべては、起動プロセスに関係し得る。
【0086】
必要に応じて、段階1の間に初期化される起動CPUとしてCPU 0のみがあり、他のCPUはアイドル状態(または初期化されていない状態)にある場合、初期化されたCPU 0は、オプションの段階2において、残りのCPUを初期化する。
【0087】
段階3において、初期化されたCPUは、TDCのすべてのタスクが完了するまで、TDCからタスクを選択し、たとえば図4に示す方法で、独立して、および少なくとも部分的に同時にそれらを実行することができる。
【0088】
複数のCPUによる上記の並列実行を通じて、複数のCPUを有するコンピュータシステムCPUにおける立ち上げプロセスにおいてタスクを実行するための時間は短縮され得る。たとえば、立ち上げ時間は、90/100*(X/N-N*D*X)へと短縮され得て、ここで、Xは、現在の立ち上げ時間であり、Nは、CPUの数であり、Dは、CPUがTDCにおいて次のタスクを選択するための時間期間である。これは推定にすぎず、特定の数を超えて拡張可能ではない場合がある。
【0089】
複数のCPUによる並列実行に関する上記実施形態は、立ち上げプロセスだけでなく、コンピュータシステムにおける様々なプロセスにおいて実装され得ることを留意されたい。しかしながら、立ち上げプロセスは、並列実行からの大きな利益を得るものの可能性がある。上記のように、典型的な立ち上げプロセスは、BIOSモジュール、ブートローダモジュール、およびカーネルモジュールを含む。BIOSモジュールは、システムハードウェア構成要素を初期化および試験するために使用される。BIOSモジュールは、基本的な入力/出力システム、ユニファイドエクステンシブルファームウェアインターフェース(UEFI)、およびエクステンシブルファームウェアインターフェース(EFI)など、少なくともシステムハードウェア構成要素を初期化および試験する機能を実現する任意の種類のシステムの場合がある。ブートローダは、RAMにカーネルのイメージをロードするために、BIOSによって呼び出されるモジュールである。カーネルは、ほとんどのコンピュータオペレーティングシステムの主な構成要素である。それは、アプリケーションと、ハードウェアレベルで実行される実際のデータ処理との間の橋渡しである。ブートローダモジュールが終わった後、カーネルモジュールは、カーネルのリソースおよびデータ構造を初期化するために実行され得る。
【0090】
各立ち上げプロセスにおける3つのモジュールは、それぞれ様々な実行ステップを含むことがよく知られている。図6に示すように、立ち上げプロセスにおいて複数のCPU実行を実装するために、3つのモジュールのステップは、「モジュール化」と呼ばれる手順で相互配置(inter-arrange)され得る。つまり、各モジュールは、セクションへと分解され得る。各セクションは、1つまたは複数の独立したステップまたは非同期のステップを含むことができる。図6を参照すると、たとえば、BIOSモジュールにおけるinit()のステップは、相互に独立したinit_0_0()およびinit_0_1()のステップへと分解され得る。BIOSモジュールにおける別の特定のモジュール化の実例もここで提供される。BIOSモジュールにおける周辺機器の初期化ステップは、構成登録は、所与の時間/事例に1つのプロセスによってのみ修正され得るので、順次に実行されるために使用され得る。この実施形態では、周辺機器の初期化ステップは、構成登録の修正以外にデバイスを初期化するための初期化ステップと、初期化ステップに基づいて構成登録を修正するための登録ステップという2つのより小さなステップのグループへと分解され得る。したがって、複数の周辺機器を初期化するための初期化ステップは、並列して複数のCPUによって実行され得る。また、必要な場合、複数の周辺機器に関する登録ステップは、後にCPUによって順次に実行され得る。同様のモジュール化は、起動モジュールおよびカーネルモジュールで実装され得る。共有されるリソースについて、同期するためにロックを使用して、複数のCPUによってアクセスされ得る。
【0091】
次いで、モジュール化されたステップは、個々のタスクを形成するために分離され得る。たとえば、BIOSモジュールにおいてモジュール化されたステップは、bios_task1()およびbios_task2()のタスクへとグループ化され得る。グループ化されたタスクの少なくとも2つのタスクは、同時に実行可能なタスクの場合がある。タスクの順序は、各タスクの設定優先度により決定され得る。たとえば、ブートローダモジュールからのタスクは、BIOSモジュールからのタスクと並列に実行されるように設定され得る。したがって、BIOSモジュールがその実行を完了している間に、カーネルのコピーおよび解凍のようなタスクが達成され得る。これらのタスクを記述するTDCは、各タスクの少なくとも1つの次の属性により生成され得る:優先度、依存関係、アドレス、サイズ、エラーコード、ロック、状態、および依存関係。
【0092】
必要に応じて、割り込みベクタテーブル(IVT)は、BIOSモジュールからの一部またはすべてのステップの実行の間に、すべてのCPUに対して初期化される。IVTは、割り込みおよび割り込みハンドラのマッピングを含むCPUに関連する表である。それは、特定の割り込みを受信したときに、どの割り込みハンドラ(プログラム/機能)を実行するべきかをCPUに伝える表である。
【0093】
必要に応じて、RAMの初期化は段階的に行われる。各段階で、RAMの領域の一部だけが初期化される。たとえば、BIOSモジュールおよびブートローダモジュールのタスクをコピーするためのRAMの領域のみが、第1段階および/または第2段階で初期化される。カーネルモジュールのタスクをコピーするためのRAMの残りの領域の初期化は、第3段階で行われ得る。必要に応じて、TDCが各タスクのサイズを含むときに、RAMの初期化は、より細かな方法で処理され得る。たとえば、RAMの初期化は、TDCのタスクの順序およびサイズにより複数の段階で行われ得る。必要に応じて、TDCのタスクとしてのRAMの初期化は、他の起動タスクと並行して完了する。
【0094】
図7に示すように、それはコンピュータシステムを立ち上げるための装置のブロック図である。装置は、複数の処理モジュール702(処理モジュール1および処理モジュール2など少なくとも2つの処理モジュールを含む)および格納モジュール703を含み、複数の処理モジュール702の少なくとも2つの処理モジュールは、立ち上げプロセスの最初に初期化され、格納モジュール703は、タスク記述チャート(TDC)を格納するように構成され、TDCは、立ち上げプロセスの少なくとも2つのタスクの情報を含み、複数の処理モジュールの初期化された処理モジュールは、それぞれTDCにアクセスするように構成され、それぞれが、TDCの少なくとも2つのタスクの選択情報により、少なくとも2つのタスクから1つのタスクを選択し、それぞれが、TDCの選択されたタスクのアドレス情報により、選択されたタスクを取得し、少なくとも部分的に並列して、選択されたタスクを実行する。
【0095】
必要に応じて、複数の処理モジュール702は、図1のプロセッサ101および/またはプロセッサ108に対応する。格納モジュールは、図1の記憶ユニット106およびRAM 104に対応する。
【0096】
必要に応じて、初期化された処理モジュールの第1の処理モジュールは、TDCにアクセスした後に、TDCをロックするようにさらに構成され、ロックされたTDCは、第1の処理モジュール以外に処理モジュールによってアクセス可能ではない。
【0097】
必要に応じて、選択情報は、少なくとも2つのタスクの各々の優先度を示す優先度フィールドをさらに含み、第1の処理モジュールは、少なくとも2つのタスクの中でより高い優先度を備えたタスクを最初に選択するようにさらに構成される。
【0098】
必要に応じて、選択情報は、少なくとも2つのタスクにおける第1のタスクが依存する第2のタスクを示す依存関係フィールドをさらに含み、第1の処理モジュールは、完了済みとして第2のタスクに印が付けられたときに、第1のタスクを選択するようにさらに構成される。
【0099】
必要に応じて、選択情報は、少なくとも2つのタスクの各々が初期化された処理モジュールによってロックされているかどうかを示すロックフィールドをさらに含み、第1の処理モジュールは、第1の処理モジュールが第3のタスクを選択した後に、少なくとも2つのタスクにおいて第3のタスクをロックするようにさらに構成され、ロック済みとして印が付けられている第3のタスクは、第1の処理モジュール以外に初期化された処理モジュールによって選択可能ではない。
【0100】
必要に応じて、選択情報は、少なくとも2つのタスクの各々が完了しているかどうかを示す状態フィールドをさらに含み、第1の処理モジュールは、第4のタスクの実行を完了した後に、完了済みとして少なくとも2つのタスクにおいて第4のタスクの状態フィールドに印を付けるようにさらに構成され、完了済みとして印を付けられた第4のタスクは、初期化された処理モジュールによって選択可能ではない。
【0101】
必要に応じて、第1の処理モジュールは、第1の処理モジュールが選択を終了した後に、TDCのロックを解除するようにさらに構成される。
【0102】
必要に応じて、装置は、立ち上げ処理モジュールとして複数の処理モジュールの処理モジュールを初期化するように構成された初期化モジュール701をさらに含み、立ち上げ処理モジュールは、複数の処理モジュールの他の処理モジュールを初期化するように構成される。
【0103】
必要に応じて、少なくとも2つのタスクは、初期化された処理モジュールによって並列に実行可能なタスクを含み、基本入出力システム(BIOS)モジュール、ブートローダモジュール、およびカーネルモジュールを含む立ち上げプロセスからである。
【0104】
必要に応じて、BIOSモジュール、ブートローダモジュール、およびカーネルモジュールからのステップは、独立したステップまたは非同期のステップを含むステップへとモジュール化され、モジュール化されたステップは、少なくとも2つのタスクのタスクを形成するために分離される。
【0105】
必要に応じて、BIOSモジュールにおける周辺機器の初期化ステップは、構成レジスタを修正する以外にデバイスを初期化するための初期化ステップと、初期化ステップに基づいて構成レジスタを修正するための登録ステップとに分割され、初期化ステップおよび登録ステップは、少なくとも2つのタスクの異なるタスクを形成するために分離される。
【0106】
必要に応じて、選択情報は、少なくとも2つのタスクの各々のサイズを示すサイズフィールドをさらに含む。および
【0107】
必要に応じて、第1の処理モジュールは、タスクを実行するために使用可能なメモリにより、少なくとも2つのタスクの第5のタスクを実行するべきかどうかと、第5のタスクおよび使用可能なメモリで実行されるタスクのサイズフィールドとを決定するようにさらに構成される。
【0108】
必要に応じて、少なくとも2つの初期化された処理モジュールは、その情報がTDCにあるすべてのタスクが実行されるまで、TDCによりタスクを選択および実行することを継続するように構成される。
【0109】
当業者は、本出願の方法のステップのすべてまたは一部は、関連するハードウェアに指示するコンピュータプログラムによって実装され得ることを理解するべきである。プログラムは、コンピュータ可読記憶媒体に格納され得る。プログラムが実行されている場合、プログラムは、本出願の任意の実施形態で指定された方法を実行する。記憶媒体は、磁気ディスク、光ディスク、読み取り専用メモリ(ROM)、またはランダムアクセスメモリ(RAM)の場合がある。
【0110】
最後に、上記の実施形態は、単に説明のために使用されるものであり、本出願の技術的解決策を制限するものではないことを理解するべきである。上記の好ましい実施形態に関する本出願の詳細な説明にもかかわらず、当業者は、本出願の範囲から逸脱することなく、本出願の特許請求の範囲で対象にされている、様々な修正、変更、または等価な交換を行うことができることを理解するべきである。
【符号の説明】
【0111】
100 コンピュータシステム
101 プロセッサ
102 出力デバイス
103 入力デバイス
104 ランダムアクセスメモリ(RAM)
105 通信インターフェース
106 記憶ユニット
108 プロセッサ
109 コード
110 初期化回路
701 初期化モジュール
702 処理モジュール
703 格納モジュール
【手続補正2】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
複数の中央処理装置(CPU)を備えたコンピュータシステムを立ち上げるための方法であって、
立ち上げプロセスの最初に前記複数のCPUの少なくとも2つのCPUを初期化するステップと、
前記少なくとも2つの初期化されたCPUの各々によって、前記コンピュータシステムに格納されているタスク記述チャート(TDC)にアクセスするステップであって、前記TDCは、前記立ち上げプロセスの少なくとも2つのタスクの情報を含むステップと、
前記少なくとも2つの初期化されたCPUの各々によって、前記TDCの少なくとも2つのタスクの選択情報により、少なくとも2つのタスクから1つのタスクを選択するステップと、
前記少なくとも2つの初期化されたCPUの各々によって、前記TDCの選択されたタスクのアドレス情報により、前記選択されたタスクを取得するステップと、
前記初期化されたCPUによって、少なくとも部分的に並列して、前記選択されたタスクを実行するステップと
を含む方法。
【請求項2】
前記初期化されたCPUの第1のCPUが前記TDCにアクセスする場合、前記第1のCPUは前記TDCをロックし、前記ロックされたTDCは、前記第1のCPU以外のCPUによってアクセス可能ではない請求項1に記載の方法。
【請求項3】
前記選択情報は、
前記少なくとも2つのタスクの各々の優先度を示す優先度フィールドであって、前記少なくとも2つのタスクの中でより高い優先度を備えたタスクは、前記第1のCPUによって最初に選択される、優先度フィールド、
前記少なくとも2つのタスクにおいて第1のタスクが依存する第2のタスクを示す依存関係フィールドであって、完了済みとして前記第2のタスクに印が付けられている場合、前記第1のタスクは、前記第1のCPUによって選択可能である依存関係フィールド、
前記少なくとも2つのタスクの各々が初期化されたCPUによってロックされているかどうかを示すロックフィールドであって、前記選択情報により、前記少なくとも2つのタスクにおいて前記第1のCPUが第3のタスクを選択した後に、前記第1のCPUは、ロック済みとして前記第3のタスクのロック領域に印を付け、前記ロック済みとして印が付けられている第3のタスクは、前記第1のCPU以外に前記初期化されたCPUによって選択可能ではない、ロックフィールド、または、
前記少なくとも2つのタスクの各々が完了しているかどうかを示す状態フィールドであって、前記少なくとも2つのタスクにおいて第4のタスクの実行を完了した後に、前記第1のCPUは、完了済みとして前記第4のタスクの状態フィールドに印を付け、前記完了済みとして印が付けられている第4のタスクは、前記初期化されたCPUによって選択可能ではない、状態フィールド、
のうち少なくとも1つのフィールドをさらに含む、請求項2に記載の方法。
【請求項4】
前記第1のCPUが前記選択を終了した後に、前記第1のCPUは、前記TDCのロックを解除する請求項1から3のいずれか一項に記載の方法。
【請求項5】
前記複数のCPUの少なくとも2つのCPUを初期化する前記ステップは、
前記コンピュータシステムの初期化回路によって、起動CPUとして前記複数のCPUの1つのCPUを初期化するステップと、
前記起動CPUによって、前記複数のCPUの他のCPUを初期化するステップと
を含む請求項1から4のいずれか一項に記載の方法。
【請求項6】
前記少なくとも2つのタスクは、前記初期化されたCPUによって並列して実行可能なタスクを含み、基本入出力システム(BIOS)モジュール、ブートローダモジュール、およびカーネルモジュールを含むコンピュータシステムの立ち上げプロセスからである請求項1から5のいずれか一項に記載の方法。
【請求項7】
前記BIOSモジュール、前記ブートローダモジュール、および前記カーネルモジュールからのステップは、独立したステップまたは非同期のステップを含むステップへとモジュール化され、前記モジュール化されたステップは、前記少なくとも2つのタスクのタスクを形成するために分離される請求項6に記載の方法。
【請求項8】
前記BIOSモジュールにおける周辺機器の初期化ステップは、構成レジスタを修正する以外にデバイスを初期化するための初期化ステップと、初期化ステップに基づいて構成レジスタを修正するための登録ステップとに分割され、前記初期化ステップおよび前記登録ステップは、前記少なくとも2つのタスクの異なるタスクを形成するために分離される請求項7に記載の方法。
【請求項9】
少なくとも2つのタスクに対応する選択情報を示すように構成された選択情報フィールドと、
前記少なくとも2つのタスクに対応するアドレス情報を示すように構成されたアドレス情報フィールドと
を含み、
複数の中央処理装置(CPU)を備えたコンピュータシステムの複数の初期化されたCPUは、前記選択情報フィールドにより前記少なくとも2つのタスクからタスクを選択し、前記アドレス情報フィールドにより、前記選択されたタスクを取得し、少なくとも部分的に並列して、前記選択されたタスクを実行することを特徴とするタスク記述チャート(TDC)。
【請求項10】
前記複数の初期化されたCPUの第1のCPUによって前記TDCがロックされているかどうかを示すように構成されたTDCロックフィールドをさらに含み、前記ロックされたTDCは、前記第1のCPU以外のCPUによってアクセス可能ではない請求項9に記載のタスク記述チャート。
【請求項11】
前記選択情報フィールドは、
前記少なくとも2つのタスクの各々の優先度を示す優先度フィールドであって、前記少なくとも2つのタスクの中でより高い優先度を備えたタスクは、前記第1のCPUによって最初に選択される、優先度フィールド、
前記少なくとも2つのタスクにおいて第1のタスクが依存する第2のタスクを示す依存関係フィールドであって、完了済みとして前記第2のタスクに印が付けられている場合、前記第1のタスクは、前記第1のCPUによって選択可能である依存関係フィールド、
前記少なくとも2つのタスクの各々が前記第1の初期化されたCPUによってロックされているかどうかを示すロックフィールド、
前記少なくとも2つのタスクの各々が完了しているかどうかを示す状態フィールド、または、
前記少なくとも2つのタスクの各々のサイズを示すサイズフィールドであって、前記第1のCPUは、タスクを実行するために使用可能なメモリにより、前記少なくとも2つのタスクの第5のタスクを実行するべきかどうかと、前記第5のタスクおよび前記使用可能なメモリで実行されるタスクのサイズフィールドとを決定する、タスクフィールド、
のうちの少なくとも1つのフィールドをさらに含む請求項10に記載のタスク記述チャート。
【請求項12】
初期化モジュール、複数の処理モジュール、および格納するモジュール
を含み、
前記複数の処理モジュールの少なくとも2つの処理モジュールは、立ち上げプロセスの最初に初期化され、
前記格納モジュールは、タスク記述チャート(TDC)を格納するように構成され、前記TDCは、立ち上げプロセスの少なくとも2つのタスクの情報を含み、
前記複数の処理モジュールの前記初期化された処理モジュールは、それぞれ前記TDCにアクセスするように構成され、それぞれが、前記TDCの少なくとも2つのタスクの選択情報により、前記少なくとも2つのタスクから1つのタスクを選択し、それぞれが、前記TDCの選択されたタスクのアドレス情報により、前記選択されたタスクを取得し、少なくとも部分的に並列して、前記選択されたタスクを実行する
コンピュータシステムを立ち上げるための装置。
【請求項13】
前記初期化された処理モジュールの第1の処理モジュールは、前記TDCにアクセスした後に、前記TDCをロックするようにさらに構成され、前記ロックされたTDCは、前記第1の処理モジュール以外に処理モジュールによってアクセス可能ではない請求項12に記載の装置。
【請求項14】
前記選択情報は、
前記少なくとも2つのタスクの各々の優先度を示す優先度フィールドであって、前記第1の処理モジュールは、前記少なくとも2つのタスクの中でより高い優先度を備えたタスクを最初に選択するようにさらに構成される、優先度フィールド、
前記少なくとも2つのタスクにおける第1のタスクが依存する第2のタスクを示す依存関係フィールドであって、前記第1の処理モジュールは、完了済みとして前記第2のタスクに印が付けられたときに、前記第1のタスクを選択するようにさらに構成される、依存関係フィールド、
前記少なくとも2つのタスクの各々が初期化された処理モジュールによってロックされているかどうかを示すロックフィールドであって、前記第1の処理モジュールは、前記第1の処理モジュールが前記第3のタスクを選択した後に、前記少なくとも2つのタスクにおいて第3のタスクをロックするようにさらに構成され、ロック済みとして印が付けられている前記第3のタスクは、前記第1の処理モジュール以外に前記初期化された処理モジュールによって選択可能ではない、ロックフィールド、または、
前記少なくとも2つのタスクの各々が完了しているかどうかを示す状態フィールドであって、前記第1の処理モジュールは、前記第4のタスクの実行を完了した後に、完了済みとして前記少なくとも2つのタスクにおいて第4のタスクの状態フィールドに印を付けるようにさらに構成され、完了済みとして印を付けられた前記第4のタスクは、前記初期化された処理モジュールによって選択可能ではない、状態フィールド、
のうちの少なくとも1つのフィールドをさらに含む請求項13に記載の装置。
【請求項15】
前記初期化モジュールは、立ち上げ処理モジュールとして前記複数の処理モジュールの1つの処理モジュールを初期化するように構成され、前記立ち上げ処理モジュールは、前記複数の処理モジュールの他の処理モジュールを初期化するように構成される請求項12から14のいずれか一項に記載の装置。
【国際調査報告】