(57)【要約】  複数の中央処理装置を備えたコンピュータシステムの立ち上げ方法が提供される。方法は、立ち上げプロセスの最初に複数のCPUの少なくとも2つのCPUを初期化するステップと、少なくとも2つの初期化されたCPUの各々によって、コンピュータシステムに格納されているタスク記述チャート(TDC)にアクセスするステップであって、TDCは、立ち上げプロセスの少なくとも2つのタスクの情報を含むステップと、少なくとも2つの初期化されたCPUの各々によって、TDCの少なくとも2つのタスクの選択情報により、少なくとも2つのタスクからタスクを選択するステップと、少なくとも2つの初期化されたCPUの各々によって、TDCの選択されたタスクのアドレス情報により、選択されたタスクを取得するステップと、初期化されたCPUによって、少なくとも部分的に並列して、選択されたタスクを実行するステップとを含む。
2016513839.tif 000002
【特許請求の範囲】
【請求項１】
複数の中央処理装置(CPU)を備えたコンピュータシステムを立ち上げるための方法であって、
立ち上げプロセスの最初に前記複数のCPUの少なくとも2つのCPUを初期化するステップと、
前記少なくとも2つの初期化されたCPUの各々によって、前記コンピュータシステムに格納されているタスク記述チャート(TDC)にアクセスするステップであって、前記TDCは、前記立ち上げプロセスの少なくとも2つのタスクの情報を含むステップと、
前記少なくとも2つの初期化されたCPUの各々によって、前記TDCの少なくとも2つのタスクの選択情報により、少なくとも2つのタスクから1つのタスクを選択するステップと、
前記少なくとも2つの初期化されたCPUの各々によって、前記TDCの選択されたタスクのアドレス情報により、前記選択されたタスクを取得するステップと、
前記初期化されたCPUによって、少なくとも部分的に並列して、前記選択されたタスクを実行するステップと
を含む方法。
【請求項２】
前記初期化されたCPUの第1のCPUが前記TDCにアクセスする場合、前記第1のCPUは前記TDCをロックし、前記ロックされたTDCは、前記第1のCPU以外のCPUによってアクセス可能ではない請求項1に記載の方法。
【請求項３】
前記選択情報は、前記少なくとも2つのタスクの各々の優先度を示す優先度フィールドをさらに含み、前記少なくとも2つのタスクの中でより高い優先度を備えたタスクは、前記第1のCPUによって最初に選択される請求項2に記載の方法。
【請求項４】
前記選択情報は、前記少なくとも2つのタスクにおいて第1のタスクが依存する第2のタスクを示す依存関係フィールドをさらに含み、完了済みとして前記第2のタスクに印が付けられている場合、前記第1のタスクは、前記第1のCPUによって選択可能である請求項2または3に記載の方法。
【請求項５】
前記選択情報は、前記少なくとも2つのタスクの各々が初期化されたCPUによってロックされているかどうかを示すロックフィールドをさらに含み、前記選択情報により、前記少なくとも2つのタスクにおいて前記第1のCPUが第3のタスクを選択した後に、前記第1のCPUは、ロック済みとして前記第3のタスクのロック領域に印を付け、前記ロック済みとして印が付けられている第3のタスクは、前記第1のCPU以外に前記初期化されたCPUによって選択可能ではない請求項2から4のいずれか一項に記載の方法。
【請求項６】
前記選択情報は、前記少なくとも2つのタスクの各々が完了しているかどうかを示す状態フィールドをさらに含み、前記少なくとも2つのタスクにおいて第4のタスクの実行を完了した後に、前記第1のCPUは、完了済みとして前記第4のタスクの状態フィールドに印を付け、前記完了済みとして印が付けられている第4のタスクは、前記初期化されたCPUによって選択可能ではない請求項2から5のいずれか一項に記載の方法。
【請求項７】
前記第1のCPUが前記選択を終了した後に、前記第1のCPUは、前記TDCのロックを解除する請求項2から6のいずれか一項に記載の方法。
【請求項８】
前記複数のCPUの少なくとも2つのCPUを初期化する前記ステップは、
前記コンピュータシステムの初期化回路によって、起動CPUとして前記複数のCPUの1つのCPUを初期化するステップと、
前記起動CPUによって、前記複数のCPUの他のCPUを初期化するステップと
を含む請求項1から7のいずれか一項に記載の方法。
【請求項９】
前記少なくとも2つのタスクは、前記初期化されたCPUによって並列して実行可能なタスクを含み、基本入出力システム(BIOS)モジュール、ブートローダモジュール、およびカーネルモジュールを含むコンピュータシステムの立ち上げプロセスからである請求項1から8のいずれか一項に記載の方法。
【請求項１０】
前記BIOSモジュール、前記ブートローダモジュール、および前記カーネルモジュールからのステップは、独立したステップまたは非同期のステップを含むステップへとモジュール化され、前記モジュール化されたステップは、前記少なくとも2つのタスクのタスクを形成するために分離される請求項9に記載の方法。
【請求項１１】
前記BIOSモジュールにおける周辺機器の初期化ステップは、構成レジスタを修正する以外にデバイスを初期化するための初期化ステップと、初期化ステップに基づいて構成レジスタを修正するための登録ステップとに分割され、前記初期化ステップおよび前記登録ステップは、前記少なくとも2つのタスクの異なるタスクを形成するために分離される請求項10に記載の方法。
【請求項１２】
前記TDCは、前記モジュール化および前記分離から生成されたタスクにより生成される請求項10または11に記載の方法。
【請求項１３】
前記選択情報は、前記少なくとも2つのタスクの各々のサイズを示すサイズフィールドをさらに含み、
前記第1のCPUは、タスクを実行するために使用可能なメモリにより、前記少なくとも2つのタスクの第5のタスクを実行するべきかどうかと、前記第5のタスクおよび前記使用可能なメモリで実行されるタスクのサイズフィールドとを決定する
請求項2から12のいずれか一項に記載の方法。
【請求項１４】
前記初期化のステップの後に、前記初期化されたCPUによるアクセス、選択、取得、および実行のステップは、その情報が前記TDCにあるすべてのタスクが実行されるまで繰り返される請求項1から13のいずれか一項に記載の方法。
【請求項１５】
メモリに結合された複数の中央処理装置(CPU)を含み、前記複数のCPUの少なくとも2つのCPUは、立ち上げプロセスの最初に初期化され、
前記メモリは、タスク記述チャート(TDC)および第1の命令を格納するように構成され、前記TDCは、前記立ち上げプロセスの少なくとも2つのタスクの情報を含み、
前記複数のCPUの前記少なくとも2つの初期化されたCPUは、前記第1の命令により、それぞれが前記TDCにアクセスするように構成され、それぞれが、前記TDCの少なくとも2つのタスクの選択情報により、前記少なくとも2つのタスクから1つのタスクを選択し、それぞれが、前記TDCの選択されたタスクのアドレス情報により、前記選択されたタスクを取得し、少なくとも部分的に並列して、前記選択されたタスクを実行する
コンピュータシステム。
【請求項１６】
前記初期化されたCPUの第1のCPUは、前記第1の命令により前記TDCにアクセスした後に、前記TDCをロックするようにさらに構成され、前記ロックされたTDCは、前記第1のCPU以外のCPUによってアクセス可能ではない請求項15に記載のコンピュータシステム。
【請求項１７】
前記選択情報は、前記少なくとも2つのタスクの各々の優先度を示す優先度フィールドをさらに含み、前記第1のCPUは、前記第1の命令により、前記少なくとも2つのタスクの中でより高い優先度を備えたタスクを最初に選択するようにさらに構成される請求項16に記載のコンピュータシステム。
【請求項１８】
前記選択情報は、前記少なくとも2つのタスクにおける第1のタスクが依存する第2のタスクを示す依存関係フィールドをさらに含み、前記第1のCPUは、前記第1の命令により、完了済みとして前記第2のタスクに印が付けられたときに、前記第1のタスクを選択するようにさらに構成される請求項16または17に記載のコンピュータシステム。
【請求項１９】
前記選択情報は、前記少なくとも2つのタスクの各々が初期化されたCPUによってロックされているかどうかを示すロックフィールドをさらに含み、前記第1のCPUは、前記第1のCPUが前記第3のタスクを選択した後に、前記第1の命令により、前記少なくとも2つのタスクにおいて第3のタスクのロックフィールドに印を付けるようにさらに構成され、ロック済みとして印が付けられている前記第3のタスクは、前記第1のCPU以外に前記初期化されたCPUによって選択可能ではない請求項16から18のいずれか一項に記載のコンピュータシステム。
【請求項２０】
前記選択情報は、前記少なくとも2つのタスクの各々が完了しているかどうかを示す状態フィールドをさらに含み、前記第1のCPUは、前記第1の命令により、前記第4のタスクの実行を完了した後に、完了済みとして前記少なくとも2つのタスクにおいて第4のタスクの状態フィールドに印を付けるようにさらに構成され、前記完了済みとして印が付けられている第4のタスクは、前記初期化されたCPUによって選択可能ではない請求項16から19のいずれか一項に記載のコンピュータシステム。
【請求項２１】
前記第1のCPUは、前記第1のCPUが選択を終了した後に、前記第1の命令により、前記TDCのロックを解除するようにさらに構成される請求項16から20のいずれか一項に記載のコンピュータシステム。
【請求項２２】
起動CPUとして前記複数のCPUの1つのCPUを初期化するように構成された初期化回路をさらに含み、前記起動CPUは、前記メモリに格納された第2の命令により、前記複数のCPUの他のCPUを初期化するように構成される請求項16から21のいずれか一項に記載のコンピュータシステム。
【請求項２３】
前記少なくとも2つのタスクは、前記初期化されたCPUによって並列して実行可能なタスクを含み、基本入出力システム(BIOS)モジュール、ブートローダモジュール、およびカーネルモジュールを含むコンピュータシステムの立ち上げプロセスからである請求項15から22のいずれか一項に記載のコンピュータシステム。
【請求項２４】
前記BIOSモジュール、前記ブートローダモジュール、および前記カーネルモジュールからのステップは、独立したステップまたは非同期のステップを含むステップへとモジュール化され、前記モジュール化されたステップは、前記少なくとも2つのタスクのタスクを形成するために分離される請求項23に記載のコンピュータシステム。
【請求項２５】
前記BIOSモジュールにおける周辺機器の初期化ステップは、構成レジスタを修正する以外にデバイスを初期化するための初期化ステップと、初期化ステップに基づいて前記構成レジスタを修正するための登録ステップとに分割され、前記初期化ステップおよび前記登録ステップは、前記少なくとも2つのタスクの異なるタスクを形成するために分離される請求項24に記載のコンピュータシステム。
【請求項２６】
前記選択情報は、前記少なくとも2つのタスクの各々のサイズを示すサイズフィールドをさらに含み、
前記第1のCPUは、タスクを実行するために使用可能なメモリにより、前記少なくとも2つのタスクの第5のタスクを実行するべきかどうかと、前記第5のタスクおよび前記使用可能なメモリで実行されるタスクのサイズフィールドとを決定するようにさらに構成される
請求項16から25のいずれか一項に記載のコンピュータシステム。
【請求項２７】
前記少なくとも2つの初期化されたCPUは、その情報が前記TDCにあるすべてのタスクが実行されるまで、前記TDCにより前記タスクを選択および実行することを継続するように構成される請求項15から26のいずれか一項に記載のコンピュータシステム。
【請求項２８】
複数の中央処理装置(CPU)を備えたコンピュータシステムを立ち上げるためのコードを含む非一時的コンピュータ可読媒体であって、前記複数のCPUの複数の初期化されたCPUによって実行されたときに、前記初期化されたCPUの各々によって、前記コンピュータシステムに格納されているタスク記述チャート(TDC)にアクセスするステップであって、前記TDCは、立ち上げプロセスの少なくとも2つのタスクの情報を含むステップと、
前記初期化されたCPUの各々によって、前記TDCの少なくとも2つのタスクの選択情報により、少なくとも2つのタスクから1つのタスクを選択するステップと、
前記初期化されたCPUの各々によって、前記TDCの選択されたタスクのアドレス情報により、前記選択されたタスクを取得するステップと、
前記初期化されたCPUによって、少なくとも部分的に並列して、前記選択されたタスクを実行するステップと
を実行する非一時的コンピュータ可読媒体。
【請求項２９】
少なくとも2つのタスクに対応する選択情報を示すように構成された選択情報フィールドと、
前記少なくとも2つのタスクに対応するアドレス情報を示すように構成されたアドレス情報フィールドと
を含み、
複数の中央処理装置(CPU)を備えたコンピュータシステムの複数の初期化されたCPUは、前記選択情報フィールドにより前記少なくとも2つのタスクからタスクを選択し、前記アドレス情報フィールドにより、前記選択されたタスクを取得し、少なくとも部分的に並列して、前記選択されたタスクを実行することを特徴とするタスク記述チャート(TDC)。
【請求項３０】
前記複数の初期化されたCPUの第1のCPUによって前記TDCがロックされているかどうかを示すように構成されたTDCロックフィールドをさらに含み、前記ロックされたTDCは、前記第1のCPU以外のCPUによってアクセス可能ではない請求項29に記載のタスク記述チャート。
【請求項３１】
前記選択情報フィールドは、前記少なくとも2つのタスクの各々の優先度を示す優先度フィールドを含み、前記少なくとも2つのタスクの中でより高い優先度を備えたタスクは、前記第1のCPUによって最初に選択される請求項30に記載のタスク記述チャート。
【請求項３２】
前記選択情報は、前記少なくとも2つのタスクにおいて第1のタスクが依存する第2のタスクを示す依存関係フィールドを含み、完了済みとして前記第2のタスクに印が付けられている場合、前記第1のタスクは、前記第1のCPUによって選択可能である請求項30または31に記載のタスク記述チャート。
【請求項３３】
前記選択情報は、前記少なくとも2つのタスクの各々が前記第1の初期化されたCPUによってロックされているかどうかを示すロックフィールドを含む請求項30から32のいずれか一項に記載のタスク記述チャート。
【請求項３４】
前記選択情報は、前記少なくとも2つのタスクの各々が完了しているかどうかを示す状態フィールドを含む請求項30から33のいずれか一項に記載のタスク記述チャート。
【請求項３５】
前記選択情報は、前記少なくとも2つのタスクの各々のサイズを示すサイズフィールドを含み、前記第1のCPUは、タスクを実行するために使用可能なメモリにより、前記少なくとも2つのタスクの第5のタスクを実行するべきかどうかと、前記第5のタスクおよび前記使用可能なメモリで実行されるタスクのサイズフィールドとを決定する請求項30から34のいずれか一項に記載のタスク記述チャート。
【請求項３６】
前記少なくとも2つのタスクは、前記複数の初期化されたCPUによって並列して実行可能なタスクを含み、基本入出力システム(BIOS)モジュール、ブートローダモジュール、およびカーネルモジュールを含むコンピュータシステムの立ち上げプロセスからである請求項30から35のいずれか一項に記載のタスク記述チャート。
【請求項３７】
前記BIOSモジュール、前記ブートローダモジュール、および前記カーネルモジュールからのステップは、独立したステップまたは非同期のステップを含むステップへとモジュール化され、前記モジュール化されたステップは、前記少なくとも2つのタスクのタスクを形成するために分離される請求項36に記載のタスク記述チャート。
【請求項３８】
前記BIOSモジュールにおける周辺機器の初期化ステップは、構成レジスタを修正する以外にデバイスを初期化するための初期化ステップと、前記初期化ステップに基づいて前記構成レジスタを修正するための登録ステップとに分割され、前記初期化ステップおよび前記登録ステップは、前記少なくとも2つのタスクの異なるタスクを形成するために分離される請求項34に記載のタスク記述チャート。
【請求項３９】
初期化モジュール、複数の処理モジュール、および格納するモジュール
を含み、
前記複数の処理モジュールの少なくとも2つの処理モジュールは、立ち上げプロセスの最初に初期化され、
前記格納モジュールは、タスク記述チャート(TDC)を格納するように構成され、前記TDCは、立ち上げプロセスの少なくとも2つのタスクの情報を含み、
前記複数の処理モジュールの前記初期化された処理モジュールは、それぞれ前記TDCにアクセスするように構成され、それぞれが、前記TDCの少なくとも2つのタスクの選択情報により、前記少なくとも2つのタスクから1つのタスクを選択し、それぞれが、前記TDCの選択されたタスクのアドレス情報により、前記選択されたタスクを取得し、少なくとも部分的に並列して、前記選択されたタスクを実行する
コンピュータシステムを立ち上げるための装置。
【請求項４０】
前記初期化された処理モジュールの第1の処理モジュールは、前記TDCにアクセスした後に、前記TDCをロックするようにさらに構成され、前記ロックされたTDCは、前記第1の処理モジュール以外に処理モジュールによってアクセス可能ではない請求項39に記載の装置。
【請求項４１】
前記選択情報は、前記少なくとも2つのタスクの各々の優先度を示す優先度フィールドをさらに含み、前記第1の処理モジュールは、前記少なくとも2つのタスクの中でより高い優先度を備えたタスクを最初に選択するようにさらに構成される請求項37に記載の装置。
【請求項４２】
前記選択情報は、前記少なくとも2つのタスクにおける第1のタスクが依存する第2のタスクを示す依存関係フィールドをさらに含み、前記第1の処理モジュールは、完了済みとして前記第2のタスクに印が付けられたときに、前記第1のタスクを選択するようにさらに構成される請求項40または41に記載の装置。
【請求項４３】
前記選択情報は、前記少なくとも2つのタスクの各々が初期化された処理モジュールによってロックされているかどうかを示すロックフィールドをさらに含み、前記第1の処理モジュールは、前記第1の処理モジュールが前記第3のタスクを選択した後に、前記少なくとも2つのタスクにおいて第3のタスクをロックするようにさらに構成され、ロック済みとして印が付けられている前記第3のタスクは、前記第1の処理モジュール以外に前記初期化された処理モジュールによって選択可能ではない請求項40から42のいずれか一項に記載の装置。
【請求項４４】
前記選択情報は、前記少なくとも2つのタスクの各々が完了しているかどうかを示す状態フィールドをさらに含み、前記第1の処理モジュールは、前記第4のタスクの実行を完了した後に、完了済みとして前記少なくとも2つのタスクにおいて第4のタスクの状態フィールドに印を付けるようにさらに構成され、完了済みとして印を付けられた前記第4のタスクは、前記初期化された処理モジュールによって選択可能ではない請求項40から43のいずれか一項に記載の装置。
【請求項４５】
前記第1の処理モジュールは、前記第1の処理モジュールが前記選択を終了した後に、前記TDCのロックを解除するようにさらに構成される請求項40から44のいずれか一項に記載の装置。
【請求項４６】
立ち上げ処理モジュールとして前記複数の処理モジュールの1つの処理モジュールを初期化するように構成された初期化モジュールをさらに含み、前記立ち上げ処理モジュールは、前記複数の処理モジュールの他の処理モジュールを初期化するように構成される請求項40から45のいずれか一項に記載の装置。
【請求項４７】
前記少なくとも2つのタスクは、前記初期化された処理モジュールによって並列に実行可能なタスクを含み、基本入出力システム(BIOS)モジュール、ブートローダモジュール、およびカーネルモジュールを含む立ち上げプロセスからである請求項40から46のいずれか一項に記載の装置。
【請求項４８】
前記BIOSモジュール、前記ブートローダモジュール、および前記カーネルモジュールからのステップは、独立したステップまたは非同期のステップを含むステップへとモジュール化され、前記モジュール化されたステップは、前記少なくとも2つのタスクのタスクを形成するために分離される請求項47に記載の装置。
【請求項４９】
前記BIOSモジュールにおける周辺機器の初期化ステップは、構成レジスタを修正する以外にデバイスを初期化するための初期化ステップと、前記初期化ステップに基づいて前記構成レジスタを修正するための登録ステップとに分割され、前記初期化ステップおよび前記登録ステップは、前記少なくとも2つのタスクの異なるタスクを形成するために分離される請求項48に記載の装置。
【請求項５０】
前記選択情報は、前記少なくとも2つのタスクの各々のサイズを示すサイズフィールドをさらに含み、
前記第1の処理モジュールは、タスクを実行するために使用可能なメモリにより、前記少なくとも2つのタスクの第5のタスクを実行するべきかどうかと、前記第5のタスクおよび前記使用可能なメモリで実行されるタスクのサイズフィールドとを決定するようにさらに構成される
請求項40から49のいずれか一項に記載の装置。
【請求項５１】
前記少なくとも2つの初期化された処理モジュールは、その情報が前記TDCにあるすべてのタスクが実行されるまで、前記TDCにより前記タスクを選択および実行することを継続するように構成される請求項39から50のいずれか一項に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、一般的にコンピュータ技術に関し、より具体的には、複数の中央処理装置(CPU)を有するコンピュータシステムを立ち上げるための方法に関する。
【背景技術】
【０００２】
コンピュータシステムの立ち上げは、ブートストラッピングプロセスである。コンピュータシステムの電源が投入されると、プロセスは、コンピュータシステムのハードウェアを初期化し、次いで、オペレーティングシステム(たとえばカーネル)を開始する。短い立ち上げ順序は、通常は、基本入出力システム(BIOS)、ブートローダ、次いで、カーネルから始まる。
【０００３】
コンピュータシステムの電源が投入されると、BIOSは、ランダムアクセスメモリ(RAM)、プロセッサ、キーボード、およびモニタなどを含むデバイスを初期化するパワーオンセルフテスト(POST)を実行する。通常、コンピュータシステムのプロセッサは、単一CPUまたは複数のCPUを含む機能ハードウェアユニットである(多くの場合、シングルコアプロセッサまたはマルチコアプロセッサと呼ばれる)。または、コンピュータシステムは、複数のプロセッサを含むことができる。コンピュータシステムが複数のCPUを含む場合(たとえばマルチプロセッサシステムまたはマルチコアプロセッサシステムの形で)、CPUの1つは、立ち上げプロセスのためにBIOS初期化コードおよびカーネル初期化コードを実行する「起動CPU」であると決定され得る。残りのCPU(多くの場合、アプリケーションプロセッサ(AP)と呼ばれる)は、OSが実行し始めるまでアイドル状態を維持する。BIOS初期化が終わると、ブートデバイスが識別され、ブートローダが、ブートデバイスからRAMにロードされ、制御はブートローダに渡される。ブートローダは、どのOS(たとえばカーネル)を立ち上げるかを決定し、決定されたOSをブートデバイスからRAMへとロードし、制御をOSに渡す。OSが実行を開始すると、それはリソースおよびデータ構造、残りのCPUを初期化し、様々なサービスを初期化する最初のスクリプトを実行する。
【０００４】
ほとんどの既存のコンピュータシステムでは、上記の立ち上げステップは、1つのCPUのみによって順次に実行される。立ち上げプロセスでは多くの時間が費やされ、立ち上げ時間を減らすことが大きな関心事である。
【発明の概要】
【課題を解決するための手段】
【０００５】
複数のCPUを備えたコンピュータシステムの立ち上げ時間を節約するために、本開示では様々な実施形態が提供される。
【０００６】
本開示の第1の態様として、複数のCPUを備えたコンピュータシステムを立ち上げるための方法が提供される。方法は、立ち上げプロセスの最初に複数のCPUの少なくとも2つのCPUを初期化するステップと、少なくとも2つの初期化されたCPUの各々によって、コンピュータシステムに格納されているタスク記述チャート(TDC)にアクセスするステップであって、TDCは、立ち上げプロセスの少なくとも2つのタスクの情報を含むステップと、少なくとも2つの初期化されたCPUの各々によって、TDCの少なくとも2つのタスクの選択情報により、少なくとも2つのタスクからタスクを選択するステップと、少なくとも2つの初期化されたCPUの各々によって、TDCの選択されたタスクのアドレス情報により、選択されたタスクを取得するステップと、初期化されたCPUによって、少なくとも部分的に並列して、選択されたタスクを実行するステップとを含む。
【０００７】
本開示の第2の態様として、コンピュータシステムが提供される。コンピュータシステムは、メモリに結合された複数のCPUを含み、複数のCPUの少なくとも2つのCPUは、立ち上げプロセスの最初に初期化され、メモリは、TDCおよび第1の命令を格納するように構成され、TDCは、立ち上げプロセスの少なくとも2つのタスクの情報を含み、複数のCPUの少なくとも2つの初期化されたCPUは、第1の命令により、それぞれがTDCにアクセスするように構成され、それぞれが、TDCの少なくとも2つのタスクの選択情報により、少なくとも2つのタスクから1つのタスクを選択し、それぞれが、TDCの選択されたタスクのアドレス情報により、選択されたタスクを取得し、少なくとも部分的に並列して、選択されたタスクを実行する。
【０００８】
本開示の第3の態様として、複数のCPUを備えたコンピュータシステムを立ち上げるためのコードを含む非一時的コンピュータ可読媒体が提供される。コードは、複数のCPUの複数の初期化されたCPUによって実行された場合、初期化されたCPUの各々によって、コンピュータシステムに格納されたTDCにアクセスするステップであって、TDCは、立ち上げプロセスの少なくとも2つのタスクの情報を含むステップと、初期化されたCPUの各々によって、TDCの少なくとも2つのタスクの選択情報により、少なくとも2つのタスクから1つのタスクを選択するステップと、初期化されたCPUの各々によって、TDCの選択されたタスクのアドレス情報により、選択されたタスクを取得するステップと、初期化されたCPUによって、少なくとも部分的に並列して、選択されたタスクを実行するステップとを実行する。
【０００９】
本開示の第4の態様として、データテーブルが提供される。データテーブルは、少なくとも2つのタスクに対応する選択情報を示すように構成された選択情報フィールドと、少なくとも2つのタスクに対応するアドレス情報を示すように構成されたアドレス情報フィールドとを含み、複数のCPUを備えたコンピュータシステムの複数の初期化されたCPUは、選択情報フィールドにより少なくとも2つのタスクからタスクを選択し、アドレス情報フィールドにより、選択されたタスクを取得し、少なくとも部分的に並列して、選択されたタスクを実行する。
【００１０】
本開示の第5の態様として、複数のCPUを備えたコンピュータシステムを立ち上げるための別の方法が提供され、方法は、コンピュータシステムの初期化回路によって、コンピュータシステムの1つまたは複数のCPUを初期化するステップと、初期化されたCPUの各々によって、コンピュータシステムに格納されたTDCにより、少なくとも2つのタスクから1つのタスクを選択するステップであって、各タスクは、TDCに記録されたその選択情報およびアドレス情報を有し、異なるタスクは、タスクの選択情報により、異なる初期化されたCPUによって最小の2つのタスクから選択されるステップと、初期化されたCPUの各々によって、選択されたタスクのアドレス情報により、選択されたタスクのプログラム命令を取得するステップと、初期化されたCPUによって、少なくとも部分的に同時に、選択されたタスクを実行するステップであって、TDCは、立ち上げプロセスに対するすべてのタスクの情報を含み、初期化されたCPUは、その情報がTDCにあるすべてのタスクが実行されるまで、TDCにより、タスクを選択および実行することを継続するステップとを含む。
【図面の簡単な説明】
【００１１】
【図１】本開示の実施形態によるコンピュータシステムを示すブロック図である。
【図２】本開示の実施形態による並列してタスクを実行するための方法を示す流れ図である。
【図３】本開示の実施形態によるタスク記述チャート(TDC)の構造を示す図である。
【図４】本開示の実施形態による、TDCからのCPUの選択および実行タスクの手順を示す流れ図である。
【図５】本開示の実施形態による、複数のCPUが並列してタスクを実行するのを示す流れ図である。
【図６】TDCの例示的な構造、および立ち上げプロセスのためにTDCを生成するモジュール化プロセスを示す図である。
【図７】コンピュータシステムを立ち上げるための装置を示すブロック図である。
【発明を実施するための形態】
【００１２】
本出願の前述の目的、技術的解決策、および利点をより理解しやすくするために、添付の図を用いて実施形態について以下に記述する。
【００１３】
図1は、本開示の実施形態によるコンピュータシステム100のブロック図である。コンピュータシステム100は、ランダムアクセスメモリ(RAM)104などのメモリと結合され、適宜、記憶ユニット106に結合されたプロセッサ101を含む。記憶ユニット106は、読み取り専用メモリ(ROM)または他の記憶媒体(たとえばハードディスクまたはフラッシュメモリなど)の場合がある。
【００１４】
プロセッサ101は、図1に示したCPU 0およびCPU 1など、複数のCPUを含むことができる。必要に応じて、コンピュータシステム100は、たとえば図1におけるプロセッサ101およびプロセッサ108など、2つ以上のプロセッサを含む。プロセッサ101および108の各々は、シングルコアプロセッサまたはマルチコアプロセッサのいずれかの場合がある。
【００１５】
プロセッサ101のCPUが実行する様々なコードは、RAM 104または記憶ユニット106のいずれかに格納され得る。必要に応じて、コード109は、プロセッサ101が実行するために記憶ユニット106からRAM 104にコピーされる。必要に応じて、記憶ユニットに格納されたコードは、限定しないが、BIOSモジュール、ブートローダモジュール、カーネルモジュールの1つまたは組み合わせを含む。記憶ユニットには、また、タスク記述チャート(TDC)、後で詳細に説明されるであろう第1の命令および第2の命令がある。
【００１６】
必要に応じて、コンピュータシステムは、出力デバイス102(たとえばLCD(液晶ディスプレイ)などのディスプレイデバイス、LED(発光ダイオード)ディスプレイ、CRT(陰極線管)またはプロジェクタ)、および入力デバイス103(たとえばマウス、キーボード、タッチ画面、またはユーザの入力を検出することができるセンサデバイス)をさらに含む。出力デバイス102は、画像による対話インターフェースを表示するために、プロセッサ101によって制御される。必要に応じて、コンピュータシステムは、外部ネットワークまたは他のデバイスとデータまたは信号を交換するための通信インターフェース105をさらに含む。プロセッサ101のCPUが実行する上記の様々なコード(BIOSモジュール、ブートローダモジュール、カーネルモジュール、TDC、第1の命令、および第2の命令のいずれか1つまたは組み合わせなど)は、他のデバイスから通信インターフェース105を通じて取得され得る。
【００１７】
コンピュータシステム100の上記の要素は、データバス、アドレスバス、制御バス、拡張バス、またはローカルバスなど、バスによって相互に結合され得る。
【００１８】
コンピュータシステム100は、デスクトップコンピュータ、ネットワークサーバ、携帯情報端末(PDA)、モバイル電話、タブレット、端末装置、テレコムデバイス、組み込みシステム、または図1に示したような同様の構造を有する任意の他のデバイスの場合がある。しかしながら、本開示は、特定のタイプのコンピュータシステムに制限されるものではない。
【００１９】
複数のCPUを備えたコンピュータシステムを立ち上げるための方法が提供される。図2は、方法の流れ図である。本明細書に記述された方法は、図1に示されたコンピュータシステム100において実装され得るが、そのようなシステムに制限されるものではない。
【００２０】
複数のCPUを含み、少なくとも2つのCPUが立ち上げプロセスに関係するコンピュータシステムについて、方法は以下のブロックを含む。
【００２１】
S100:立ち上げプロセスの最初に複数のCPUの少なくとも2つのCPUを初期化する
【００２２】
必要に応じて、立ち上げプロセスに関係する少なくとも2つのCPUは、コンピュータシステムのCPU(図1を参照)に結合された初期化回路110によって初期化される。初期化回路は、コンピュータシステムの電力投入またはリセット時に、立ち上げプロセスに関係する少なくとも2つのCPUを含む、コンピュータシステムの構成要素を初期化する。初期化回路は、また、少なくとも2つのCPUによって使用するためにRAM 104を初期化することができる。あるいは、初期化回路は、たとえば少なくとも2つのCPUの起動CPUなど、最初に少なくとも2つのCPUの一部を初期化し、次いで、残りを初期化することができる。たとえば、初期化された起動CPUは、記憶媒体106に格納されている第2の命令を取得するために、記憶媒体106にアクセスし、第2の命令により残りのCPUを初期化することができる。
【００２３】
S102:少なくとも2つの初期化されたCPUの各々が、コンピュータシステムに格納されているタスク記述チャート(TDC)にアクセスする。TDCは、立ち上げプロセスの少なくとも2つのタスクの情報を含む。
【００２４】
必要に応じて、初期化されたCPUの第1のCPUがTDCにアクセスする場合、第1のCPUはTDCをロックし、ロックされたTDCは、第1のCPU以外のCPUによってアクセス可能ではない。たとえば、図3に示すように、TDCは、「TDCロック」フィールドを含むことができる。TDCをロックするために、第1のCPUは、ロック済みとしてTDCのTDCロックフィールドに印を付けることができる。
【００２５】
S104:少なくとも2つの初期化されたCPUの各々は、TDCの少なくとも2つのタスクの選択情報により、少なくとも2つのタスクからタスクを選択する。
【００２６】
必要に応じて、選択情報は、少なくとも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のCPUが選択を終了した後に、第1のCPUは、TDCのロックを解除する。
【００３１】
S106:少なくとも2つの初期化されたCPUの各々は、TDCの選択されたタスクのアドレス情報により、選択されたタスクを取得する。
【００３２】
S108:初期化されたCPUは、少なくとも部分的に並列して、選択されたタスクを実行する。
【００３３】
必要に応じて、選択情報は、少なくとも2つのタスクの各々のサイズを示すサイズフィールドをさらに含み、第1のCPUは、タスクを実行するために使用可能なメモリにより、少なくとも2つのタスクの第5のタスクを実行するべきかどうかと、第5のタスクおよび使用可能なメモリで実行されるタスクのサイズフィールドとを決定する。
【００３４】
必要に応じて、初期化のステップの後に、初期化されたCPUによるアクセス、選択、取得、および実行のステップは、その情報がTDCにあるすべてのタスクが実行されるまで繰り返される。
【００３５】
上記のステップS102からS108nは、第1の命令により第1のCPUによって実施され得る。
【００３６】
必要に応じて、少なくとも2つのタスクは、初期化されたCPUによって並列して実行可能なタスクを含み、基本入出力システム(BIOS)モジュール、ブートローダモジュール、およびカーネルモジュールを含むコンピュータシステムの立ち上げプロセスからである。
【００３７】
必要に応じて、BIOSモジュール、ブートローダモジュール、およびカーネルモジュールからのステップは、独立したステップまたは非同期のステップを含むステップへとモジュール化され、モジュール化されたステップは、少なくとも2つのタスクのタスクを形成するために分離される。
【００３８】
必要に応じて、BIOSモジュールにおける周辺機器の初期化ステップは、構成レジスタを修正する以外にデバイスを初期化するための初期化ステップと、初期化ステップに基づいて構成レジスタを修正するための登録ステップとに分割され、初期化ステップおよび登録ステップは、少なくとも2つのタスクの異なるタスクを形成するために分離される。
【００３９】
必要に応じて、TDCは、モジュール化および分離から生成されたタスクにより生成される。
【００４０】
図3に示すように、例示的なTDCは、複数のタスクのアドレス情報および選択情報を含む(たとえば、タスク1からタスクN、N≧2)。立ち上げプロセスに含まれる初期化されたCPUの各々は、選択情報により、少なくとも2つのタスクの1つのタスクを選択し、タスクのアドレス情報により記憶ユニット106またはRAM 104から、選択されたタスクを取得し、取得されたタスクを実行する。
【００４１】
TDCは、TDCファイルに関する情報を示すTDCメタデータフィールドを含むことができ、これはファイル内容およびセキュリティ関連の問題を処理するためのプロセスなどによって使用され得る。TDCロックフィールドは、TDCメタデータフィールドの一部の場合がある。
【００４２】
以下は、2つの初期化されたCPU(たとえばCPU 1およびCPU 2)が、TDCにより異なる選択情報(ロック、状態、優先度、および依存関係など)を用いて、TDCにおける3つのタスクからタスクを選択する実例である(たとえば、タスク1、タスク2、およびタスク3)。タスク1から3の選択情報は、Table 1(表1)に示している。
【００４３】
【表１】
2016513839.tif 000003
【００４４】
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の命令により、プロセッサで実行されるスケジューラアプリケーションによって実施され得る。
【００４５】
立ち上げプロセスの間に、メモリ(RAM 104など)は、部分的に初期化され得る。したがって、並列して実行されている特定のサイズを有するタスクに利用可能なメモリ空間は制限されている。多数の大きなサイズのタスクが並列して実行される場合、別のタスクは、実行されない/またはメモリにコピーされる場合がある。この問題を解決するために、メモリを管理するために実施形態において、メモリマネージャ(たとえばCPUの1つによって実行されるメモリマネージャアプリケーション)が提供される。TDCは、タスクのサイズフィールドをさらに含むことができる。サイズフィールドは、対応するタスクのサイズを示す場合がある。スケジューラアプリケーションは、使用可能なメモリにより、現在、どのタスクが実行されるかべきか、または実行されるべきでないかをさらに決定することができ、それに関する情報は、メモリマネージャ、およびサイズフィールドによって提供される(実行されたタスクおよび後に実行されるタスクのサイズなど)。たとえば、スケジューラアプリケーションは、タスクの選択情報を修正するためにTDCにアクセスすることができる(ロックフィールド、状態フィールド、優先度フィールド、および依存関係フィールドのいずれかまたは任意の組み合わせなど)。したがって、タスクの実行順序は、メモリをより良好に使用するために動的に調整され得る。必要な場合、メモリマネージャは、また、メモリの他の部分の初期化をトリガーすることができる。メモリの他の部分の初期化は、他のタスクと並列して実行され得る。
【００４６】
実施形態では、タスクは、スケジューリングのためにピボットとして機能するTDCに基づいてスケジューリングされる。基本メモリ管理も、このTDCを使用することによって達成され得る。
【００４７】
必要に応じて、選択情報は、可能なデバッギングのためにエラーコードフィールドをさらに含むことができる。たとえば、メモリマネージャの実行、選択、または管理の間に、タスクに障害が生じた場合、対応するエラーコードは、そのタスクのエラーコードフィールドに入れられる。
【００４８】
たとえば、タスク、第1の命令、または第2の命令のプログラムコードは、記憶ユニット106に格納されるか、またはRAM 104に読み込まれ得る。第1の命令およびTDCにより、起動プロセスに関係する各初期化されたCPUは、それが選択したタスクを実行するために、記憶ユニット106またはRAM 104にアクセスすることができる。起動CPUとして機能する初期化されたCPUは、他のCPUを初期化し、スタートアップのプロセッサ間割り込み(IPI:inter-processor interrupt)を使用して、それらをアクティブ化することができる。初期化されたCPUの実行は、IPIメッセージによって指定された実際のモード開始アドレスから始めることができる。この開始アドレスは、TDCによりタスクを選択および実行するために、初期化されたCPUに対する第1の命令に対応する。
【００４９】
立ち上げ時間を短縮するために、立ち上げプロセスに関係する初期化されたCPUによって選択された少なくとも2つのタスクが、少なくとも部分的に同時に実行されることが命じられる。
【００５０】
本開示の上記実施形態の技術的解決策を通じて、タスクを実行するための時間は、少なくとも部分的に並列して実行によって短縮され得る。より多くのCPUがこの解決策によって利用され、立ち上げプロセスにおいてより多くの実行時間が節約され得ることを理解されるであろう。
【００５１】
図4は、本開示の実施形態により、CPUが、TDCからタスクを選択および実行するための例示的な手順の流れ図である。方法は、以下のブロックを含む。
【００５２】
ブロックS401では、CPUは、上記の第1の命令をロードし、第1の命令を実行し始める。以前に述べたように、第1の命令は、CPUがTDCによりタスクを選択および実行するために使用される。ブロックS401の後に、CPUは、最初に、ブロックS403を実行する。
【００５３】
ブロックS403では、CPUは、TDCがロックされているかどうかを決定する。TDCがロックされている場合、CPUはブロックS402を実行する。TDCがロックされていない場合、CPUはブロックS404を実行する。
【００５４】
ブロック402では、CPUは、しばらくの間、待機/ポーリングし、次いで、TDCがロックされているかどうかを再決定するためにブロックS403に行く。
【００５５】
ロック属性は、複数のプロセスの間で共有され得るTDCにおけるデータへのアクセスを限定/制限するために、この実施形態では同期機構として使用される。これにより、たとえば、CPUによって制御されている1つのプロセスが、所与の事例/時間において、そのデータにアクセスすることを許可する。このため、たとえば、複数のCPUによって制御されている複数のプロセスが、所与の事例/時間において、共用されたデータにアクセス/修正することができるが、そのデータにロックを有しているプロセスだけが、それにアクセス/修正することができる。このデータは、それがデータのロックを取得した場合のみ、別のプロセスによってアクセス/修正され得る(プロセスが以前にこのデータのロックを保持している場合、ロックを解放する)。
【００５６】
ブロックS404では、CPUは、TDCの対応するフィールドをロックする。たとえば、CPUは、他のCPUによってアクセスされることからTDCにおける同じデータを保護するために、CPUの識別でロック済みとしてTDCでそれによって実行されるタスクのロックフィールドに印を付けることができる。
【００５７】
ブロックS405では、CPUは、TDCのすべてのタスクが、タスクの選択情報により完了したかどうかを決定する。TDCに完了していないタスクがある場合、CPUは、ブロックS407を実行する。TDCのすべてのタスクが完了している場合、CPUは、ブロックS406を実行するか、またはブロックS416を直接的に実行することができる。
【００５８】
ブロックS406では、CPUは、TDCにおけるタスクのロックを解除する。たとえば、CPUは、「ロック解除」としてTDCのタスクのロックフィールドに印を付けることができる。次いで、CPUは、ブロックS416を実行することができる。
【００５９】
ブロックS407では、CPUは、TDCの選択情報によりTDCからタスクを選択し、選択されたタスクをロックする。特定のタスク選択戦略については、すでに上に記述した。簡潔さのために、ここで再び述べることはない。
【００６０】
ブロックS408では、CPUは、TDCにおけるタスクのロックを解除し、ブロックS409を実行しに行くか、またはブロックS411を実行しに直接的に行く。ブロックS408の後に、他のCPUは、タスク選択のためにTDCにアクセスすることができる。
【００６１】
ブロックS409では、CPUは、選択されたタスクがすでにRAMにあるかどうかを決定する。ある場合、CPUは、ブロックS411を実行しに行く。ない場合、CPUは、ブロックS410を実行しに行く。
【００６２】
ブロックS410では、CPUは、実行されるタスクをRAMにコピーする。次いで、CPUは、ブロックS411を実行しに行く。たとえば、CPUは、タスクのアドレス情報により、記憶ユニットのタスクのコードを検索し、実行するために記憶ユニットからRAMへとタスクのコードをコピーすることができる。
【００６３】
ブロックS411では、CPUは、選択されたタスクを実行する。選択されたタスクの実行を完了した後、CPUは、ブロックS413を実行しに行くことができる。必要に応じて、実行する前に、CPUは、タスクのアドレス情報によりRAMにおいて選択されたタスクを検索し、選択されたタスクを取得する。
【００６４】
ブロックS413では、CPUは、TDCがロックされているかどうかを決定する。TDCがロックされている場合、CPUは、ブロックS412を実行する。TDCがロックされていない場合、CPUは、ブロックS414を実行する。
【００６５】
ブロック412では、CPUは、しばらくの間、待機/ポーリングし、次いで、TDCがロックされているかどうかを再決定するためにブロックS413に行く。
【００６６】
ブロックS414では、CPUは、TDCにおけるタスクをロックする。次いで、CPUは、ブロックS415を実行しに行く。
【００６７】
ブロックS415では、CPUは、「完了済み」として完了したタスクの選択情報の状態フィールドに印を付ける。次いで、CPUは、ブロックS405に行くことができる。
【００６８】
ブロックS416では、CPUは、図4に示した選択および実行の手順を終了する。たとえば、CPUは、第1の命令の実行を停止することができる。
【００６９】
図5は、本開示の実施形態による、複数のCPUが並列してタスクを実行する流れ図である。
【００７０】
図5に示すように、オプションの段階1において、コンピュータシステムの電源投入またはリセットは、複数のCPUのすべてまたは一部を初期化することができる(たとえば、CPU 0〜NのCPU 0)。初期化されたCPUの一部またはすべては、起動プロセスに関係し得る。
【００７１】
必要に応じて、段階1の間に初期化される起動CPUとしてCPU 0のみがあり、他のCPUはアイドル状態(または初期化されていない状態)にある場合、初期化されたCPU 0は、オプションの段階2において、残りのCPUを初期化する。
【００７２】
段階3において、初期化されたCPUは、TDCのすべてのタスクが完了するまで、TDCからタスクを選択し、たとえば図4に示す方法で、独立して、および少なくとも部分的に同時にそれらを実行することができる。
【００７３】
複数のCPUによる上記の並列実行を通じて、複数のCPUを有するコンピュータシステムCPUにおける立ち上げプロセスにおいてタスクを実行するための時間は短縮され得る。たとえば、立ち上げ時間は、90/100*(X/N-N*D*X)へと短縮され得て、ここで、Xは、現在の立ち上げ時間であり、Nは、CPUの数であり、Dは、CPUがTDCにおいて次のタスクを選択するための時間期間である。これは推定にすぎず、特定の数を超えて拡張可能ではない場合がある。
【００７４】
複数のCPUによる並列実行に関する上記実施形態は、立ち上げプロセスだけでなく、コンピュータシステムにおける様々なプロセスにおいて実装され得ることを留意されたい。しかしながら、立ち上げプロセスは、並列実行からの大きな利益を得るものの可能性がある。上記のように、典型的な立ち上げプロセスは、BIOSモジュール、ブートローダモジュール、およびカーネルモジュールを含む。BIOSモジュールは、システムハードウェア構成要素を初期化および試験するために使用される。BIOSモジュールは、基本的な入力/出力システム、ユニファイドエクステンシブルファームウェアインターフェース(UEFI)、およびエクステンシブルファームウェアインターフェース(EFI)など、少なくともシステムハードウェア構成要素を初期化および試験する機能を実現する任意の種類のシステムの場合がある。ブートローダは、RAMにカーネルのイメージをロードするために、BIOSによって呼び出されるモジュールである。カーネルは、ほとんどのコンピュータオペレーティングシステムの主な構成要素である。それは、アプリケーションと、ハードウェアレベルで実行される実際のデータ処理との間の橋渡しである。ブートローダモジュールが終わった後、カーネルモジュールは、カーネルのリソースおよびデータ構造を初期化するために実行され得る。
【００７５】
各立ち上げプロセスにおける3つのモジュールは、それぞれ様々な実行ステップを含むことがよく知られている。図6に示すように、立ち上げプロセスにおいて複数のCPU実行を実装するために、3つのモジュールのステップは、「モジュール化」と呼ばれる手順で相互配置(inter-arrange)され得る。つまり、各モジュールは、セクションへと分解され得る。各セクションは、1つまたは複数の独立したステップまたは非同期のステップを含むことができる。図6を参照すると、たとえば、BIOSモジュールにおけるinit()のステップは、相互に独立したinit_0_0()およびinit_0_1()のステップへと分解され得る。BIOSモジュールにおける別の特定のモジュール化の実例もここで提供される。BIOSモジュールにおける周辺機器の初期化ステップは、構成登録は、所与の時間/事例に1つのプロセスによってのみ修正され得るので、順次に実行されるために使用され得る。この実施形態では、周辺機器の初期化ステップは、構成登録の修正以外にデバイスを初期化するための初期化ステップと、初期化ステップに基づいて構成登録を修正するための登録ステップという2つのより小さなステップのグループへと分解され得る。したがって、複数の周辺機器を初期化するための初期化ステップは、並列して複数のCPUによって実行され得る。また、必要な場合、複数の周辺機器に関する登録ステップは、後にCPUによって順次に実行され得る。同様のモジュール化は、起動モジュールおよびカーネルモジュールで実装され得る。共有されるリソースについて、同期するためにロックを使用して、複数のCPUによってアクセスされ得る。
【００７６】
次いで、モジュール化されたステップは、個々のタスクを形成するために分離され得る。たとえば、BIOSモジュールにおいてモジュール化されたステップは、bios_task1()およびbios_task2()のタスクへとグループ化され得る。グループ化されたタスクの少なくとも2つのタスクは、同時に実行可能なタスクの場合がある。タスクの順序は、各タスクの設定優先度により決定され得る。たとえば、ブートローダモジュールからのタスクは、BIOSモジュールからのタスクと並列に実行されるように設定され得る。したがって、BIOSモジュールがその実行を完了している間に、カーネルのコピーおよび解凍のようなタスクが達成され得る。これらのタスクを記述するTDCは、各タスクの少なくとも1つの次の属性により生成され得る:優先度、依存関係、アドレス、サイズ、エラーコード、ロック、状態、および依存関係。
【００７７】
必要に応じて、割り込みベクタテーブル(IVT)は、BIOSモジュールからの一部またはすべてのステップの実行の間に、すべてのCPUに対して初期化される。IVTは、割り込みおよび割り込みハンドラのマッピングを含むCPUに関連する表である。それは、特定の割り込みを受信したときに、どの割り込みハンドラ(プログラム/機能)を実行するべきかをCPUに伝える表である。
【００７８】
必要に応じて、RAMの初期化は段階的に行われる。各段階で、RAMの領域の一部だけが初期化される。たとえば、BIOSモジュールおよびブートローダモジュールのタスクをコピーするためのRAMの領域のみが、第1段階および/または第2段階で初期化される。カーネルモジュールのタスクをコピーするためのRAMの残りの領域の初期化は、第3段階で行われ得る。必要に応じて、TDCが各タスクのサイズを含むときに、RAMの初期化は、より細かな方法で処理され得る。たとえば、RAMの初期化は、TDCのタスクの順序およびサイズにより複数の段階で行われ得る。必要に応じて、TDCのタスクとしてのRAMの初期化は、他の起動タスクと並行して完了する。
【００７９】
図7に示すように、それはコンピュータシステムを立ち上げるための装置のブロック図である。装置は、複数の処理モジュール702(処理モジュール1および処理モジュール2など少なくとも2つの処理モジュールを含む)および格納モジュール703を含み、複数の処理モジュール702の少なくとも2つの処理モジュールは、立ち上げプロセスの最初に初期化され、格納モジュール703は、タスク記述チャート(TDC)を格納するように構成され、TDCは、立ち上げプロセスの少なくとも2つのタスクの情報を含み、複数の処理モジュールの初期化された処理モジュールは、それぞれTDCにアクセスするように構成され、それぞれが、TDCの少なくとも2つのタスクの選択情報により、少なくとも2つのタスクから1つのタスクを選択し、それぞれが、TDCの選択されたタスクのアドレス情報により、選択されたタスクを取得し、少なくとも部分的に並列して、選択されたタスクを実行する。
【００８０】
必要に応じて、複数の処理モジュール702は、図1のプロセッサ101および/またはプロセッサ108に対応する。格納モジュールは、図1の記憶ユニット106およびRAM 104に対応する。
【００８１】
必要に応じて、初期化された処理モジュールの第1の処理モジュールは、TDCにアクセスした後に、TDCをロックするようにさらに構成され、ロックされたTDCは、第1の処理モジュール以外に処理モジュールによってアクセス可能ではない。
【００８２】
必要に応じて、選択情報は、少なくとも2つのタスクの各々の優先度を示す優先度フィールドをさらに含み、第1の処理モジュールは、少なくとも2つのタスクの中でより高い優先度を備えたタスクを最初に選択するようにさらに構成される。
【００８３】
必要に応じて、選択情報は、少なくとも2つのタスクにおける第1のタスクが依存する第2のタスクを示す依存関係フィールドをさらに含み、第1の処理モジュールは、完了済みとして第2のタスクに印が付けられたときに、第1のタスクを選択するようにさらに構成される。
【００８４】
必要に応じて、選択情報は、少なくとも2つのタスクの各々が初期化された処理モジュールによってロックされているかどうかを示すロックフィールドをさらに含み、第1の処理モジュールは、第1の処理モジュールが第3のタスクを選択した後に、少なくとも2つのタスクにおいて第3のタスクをロックするようにさらに構成され、ロック済みとして印が付けられている第3のタスクは、第1の処理モジュール以外に初期化された処理モジュールによって選択可能ではない。
【００８５】
必要に応じて、選択情報は、少なくとも2つのタスクの各々が完了しているかどうかを示す状態フィールドをさらに含み、第1の処理モジュールは、第4のタスクの実行を完了した後に、完了済みとして少なくとも2つのタスクにおいて第4のタスクの状態フィールドに印を付けるようにさらに構成され、完了済みとして印を付けられた第4のタスクは、初期化された処理モジュールによって選択可能ではない。
【００８６】
必要に応じて、第1の処理モジュールは、第1の処理モジュールが選択を終了した後に、TDCのロックを解除するようにさらに構成される。
【００８７】
必要に応じて、装置は、立ち上げ処理モジュールとして複数の処理モジュールの処理モジュールを初期化するように構成された初期化モジュール701をさらに含み、立ち上げ処理モジュールは、複数の処理モジュールの他の処理モジュールを初期化するように構成される。
【００８８】
必要に応じて、少なくとも2つのタスクは、初期化された処理モジュールによって並列に実行可能なタスクを含み、基本入出力システム(BIOS)モジュール、ブートローダモジュール、およびカーネルモジュールを含む立ち上げプロセスからである。
【００８９】
必要に応じて、BIOSモジュール、ブートローダモジュール、およびカーネルモジュールからのステップは、独立したステップまたは非同期のステップを含むステップへとモジュール化され、モジュール化されたステップは、少なくとも2つのタスクのタスクを形成するために分離される。
【００９０】
必要に応じて、BIOSモジュールにおける周辺機器の初期化ステップは、構成レジスタを修正する以外にデバイスを初期化するための初期化ステップと、初期化ステップに基づいて構成レジスタを修正するための登録ステップとに分割され、初期化ステップおよび登録ステップは、少なくとも2つのタスクの異なるタスクを形成するために分離される。
【００９１】
必要に応じて、選択情報は、少なくとも2つのタスクの各々のサイズを示すサイズフィールドをさらに含む。および
【００９２】
必要に応じて、第1の処理モジュールは、タスクを実行するために使用可能なメモリにより、少なくとも2つのタスクの第5のタスクを実行するべきかどうかと、第5のタスクおよび使用可能なメモリで実行されるタスクのサイズフィールドとを決定するようにさらに構成される。
【００９３】
必要に応じて、少なくとも2つの初期化された処理モジュールは、その情報がTDCにあるすべてのタスクが実行されるまで、TDCによりタスクを選択および実行することを継続するように構成される。
【００９４】
当業者は、本出願の方法のステップのすべてまたは一部は、関連するハードウェアに指示するコンピュータプログラムによって実装され得ることを理解するべきである。プログラムは、コンピュータ可読記憶媒体に格納され得る。プログラムが実行されている場合、プログラムは、本出願の任意の実施形態で指定された方法を実行する。記憶媒体は、磁気ディスク、光ディスク、読み取り専用メモリ(ROM)、またはランダムアクセスメモリ(RAM)の場合がある。
【００９５】
最後に、上記の実施形態は、単に説明のために使用されるものであり、本出願の技術的解決策を制限するものではないことを理解するべきである。上記の好ましい実施形態に関する本出願の詳細な説明にもかかわらず、当業者は、本出願の範囲から逸脱することなく、本出願の特許請求の範囲で対象にされている、様々な修正、変更、または等価な交換を行うことができることを理解するべきである。
【符号の説明】
【００９６】
100  コンピュータシステム
101  プロセッサ
102  出力デバイス
103  入力デバイス
104  ランダムアクセスメモリ(RAM)
105  通信インターフェース
106  記憶ユニット
108  プロセッサ
109  コード
110  初期化回路
701  初期化モジュール
702  処理モジュール
703  格納モジュール
【図１】
2016513839.tif 000004
【図２】
2016513839.tif 000005
【図３】
2016513839.tif 000006
【図４】
2016513839.tif 000007
【図５】
2016513839.tif 000008
【図６】
2016513839.tif 000009
【図７】
2016513839.tif 000010
【手続補正書】
【提出日】平成27年10月28日(2015.10.28)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、一般的にコンピュータ技術に関し、より具体的には、複数の中央処理装置(CPU)を有するコンピュータシステムを立ち上げるための方法に関する。
【背景技術】
【０００２】
コンピュータシステムの立ち上げは、ブートストラッピングプロセスである。コンピュータシステムの電源が投入されると、プロセスは、コンピュータシステムのハードウェアを初期化し、次いで、オペレーティングシステム(たとえばカーネル)を開始する。短い立ち上げ順序は、通常は、基本入出力システム(BIOS)、ブートローダ、次いで、カーネルから始まる。
【０００３】
コンピュータシステムの電源が投入されると、BIOSは、ランダムアクセスメモリ(RAM)、プロセッサ、キーボード、およびモニタなどを含むデバイスを初期化するパワーオンセルフテスト(POST)を実行する。通常、コンピュータシステムのプロセッサは、単一CPUまたは複数のCPUを含む機能ハードウェアユニットである(多くの場合、シングルコアプロセッサまたはマルチコアプロセッサと呼ばれる)。または、コンピュータシステムは、複数のプロセッサを含むことができる。コンピュータシステムが複数のCPUを含む場合(たとえばマルチプロセッサシステムまたはマルチコアプロセッサシステムの形で)、CPUの1つは、立ち上げプロセスのためにBIOS初期化コードおよびカーネル初期化コードを実行する「起動CPU」であると決定され得る。残りのCPU(多くの場合、アプリケーションプロセッサ(AP)と呼ばれる)は、OSが実行し始めるまでアイドル状態を維持する。BIOS初期化が終わると、ブートデバイスが識別され、ブートローダが、ブートデバイスからRAMにロードされ、制御はブートローダに渡される。ブートローダは、どのOS(たとえばカーネル)を立ち上げるかを決定し、決定されたOSをブートデバイスからRAMへとロードし、制御をOSに渡す。OSが実行を開始すると、それはリソースおよびデータ構造、残りのCPUを初期化し、様々なサービスを初期化する最初のスクリプトを実行する。
【０００４】
ほとんどの既存のコンピュータシステムでは、上記の立ち上げステップは、1つのCPUのみによって順次に実行される。立ち上げプロセスでは多くの時間が費やされ、立ち上げ時間を減らすことが大きな関心事である。
【発明の概要】
【課題を解決するための手段】
【０００５】
複数のCPUを備えたコンピュータシステムの立ち上げ時間を節約するために、本開示では様々な実施形態が提供される。
【０００６】
本開示の第1の態様として、複数のCPUを備えたコンピュータシステムを立ち上げるための方法が提供される。方法は、立ち上げプロセスの最初に複数のCPUの少なくとも2つのCPUを初期化するステップと、少なくとも2つの初期化されたCPUの各々によって、コンピュータシステムに格納されているタスク記述チャート(TDC)にアクセスするステップであって、TDCは、立ち上げプロセスの少なくとも2つのタスクの情報を含むステップと、少なくとも2つの初期化されたCPUの各々によって、TDCの少なくとも2つのタスクの選択情報により、少なくとも2つのタスクからタスクを選択するステップと、少なくとも2つの初期化されたCPUの各々によって、TDCの選択されたタスクのアドレス情報により、選択されたタスクを取得するステップと、初期化されたCPUによって、少なくとも部分的に並列して、選択されたタスクを実行するステップとを含む。
【０００７】
本開示の第2の態様として、コンピュータシステムが提供される。コンピュータシステムは、メモリに結合された複数のCPUを含み、複数のCPUの少なくとも2つのCPUは、立ち上げプロセスの最初に初期化され、メモリは、TDCおよび第1の命令を格納するように構成され、TDCは、立ち上げプロセスの少なくとも2つのタスクの情報を含み、複数のCPUの少なくとも2つの初期化されたCPUは、本開示の第１の態様に記載の方法を実行するために、第1の命令により、それぞれがTDCにアクセスするように構成される。
【０００８】
本開示の第3の態様として、複数のCPUを備えたコンピュータシステムを立ち上げるためのコードを含む非一時的コンピュータ可読媒体が提供される。コードは、複数のCPUの複数の初期化されたCPUによって実行された場合、本開示の第１の態様に記載の方法を実行する。
【０００９】
本開示の第4の態様として、タスク記述チャートが提供される。タスク記述チャートは、少なくとも2つのタスクに対応する選択情報を示すように構成された選択情報フィールドと、少なくとも2つのタスクに対応するアドレス情報を示すように構成されたアドレス情報フィールドとを含み、複数のCPUを備えたコンピュータシステムの複数の初期化されたCPUは、選択情報フィールドにより少なくとも2つのタスクからタスクを選択し、アドレス情報フィールドにより、選択されたタスクを取得し、少なくとも部分的に並列して、選択されたタスクを実行する。
【００１０】
いくつかの例において、タスク記述チャートは、TDCが複数の初期化されたCPUの第1のCPUによってロックされているか、およびロックされたTDCが第1のCPU以外のCPUによってアクセス可能ではないか、どうかを示すように構成されたTDCロックフィールドをさらに含む。
【００１１】
本開示の第5の態様として、複数のCPUを備えたコンピュータシステムを立ち上げるための別の方法が提供され、方法は、コンピュータシステムの初期化回路によって、コンピュータシステムの1つまたは複数のCPUを初期化するステップと、初期化されたCPUの各々によって、コンピュータシステムに格納されたTDCにより、少なくとも2つのタスクから1つのタスクを選択するステップであって、各タスクは、TDCに記録されたその選択情報およびアドレス情報を有し、異なるタスクは、タスクの選択情報により、異なる初期化されたCPUによって最小の2つのタスクから選択されるステップと、初期化されたCPUの各々によって、選択されたタスクのアドレス情報により、選択されたタスクのプログラム命令を取得するステップと、初期化されたCPUによって、少なくとも部分的に同時に、選択されたタスクを実行するステップであって、TDCは、立ち上げプロセスに対するすべてのタスクの情報を含み、初期化されたCPUは、その情報がTDCにあるすべてのタスクが実行されるまで、TDCにより、タスクを選択および実行することを継続するステップとを含む。
【００１２】
本開示の第6の態様として、コンピュータシステムを立ち上げるための装置が提供される。前記装置は、本開示の第1の態様に記載の方法を実施するためのモジュールを含む。
【００１３】
いくつかの例において、初期化された第1のCPUがTDCにアクセスする場合、第１のCPUがTDCをロックし、ロックされたTDCは、第1のCPU以外のCPUによってアクセス可能ではない。
【００１４】
いくつかの例において、選択情報は、少なくとも２つのタスクのそれぞれの優先度を示す優先度フィールドをさらに含み、少なくとも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のCPUが選択を終了した後に、第1のCPUは、TDCのロックを解除する。
【００１９】
いくつかの例において、複数のCPUの少なくとも2つのCPUの初期化は、コンピュータシステムの初期化回路によって複数のCPUのCPUを起動CPUとして初期化することと、複数のCPUの他のCPUを起動CPUによって初期化することを含む。
【００２０】
いくつかの例において、少なくとも2つのタスクは、初期化されたCPUによって並列に実行可能なタスクを含み、基本入出力システム(BIOS)モジュール、ブートローダモジュール、およびカーネルモジュールを含むコンピュータシステムの立ち上げプロセスからである。
【００２１】
いくつかの例において、BIOSモジュール、ブートローダモジュール、およびカーネルモジュールからのステップは、独立したステップまたは非同期のステップを含むステップへとモジュール化され、モジュール化されたステップは、少なくとも2つのタスクのタスクを形成するために分離される。
【００２２】
いくつかの例において、BIOSモジュールにおける周辺機器の初期化ステップは、構成レジスタを修正する以外にデバイスを初期化するための初期化ステップと、初期化ステップに基づいて構成レジスタを修正するための登録ステップとに分割され、初期化ステップおよび登録ステップは、少なくとも2つのタスクの異なるタスクを形成するために分離される。
【００２３】
いくつかの例において、TDCは、モジュール化および分離から生成されたタスクにより生成される。
【００２４】
いくつかの例において、選択情報は、少なくとも2つのタスクの各々のサイズを示すサイズフィールドをさらに含み、第1のCPUは、タスクを実行するために使用可能なメモリにより、少なくとも2つのタスクの第5のタスクを実行するべきかどうかと、第5のタスクおよび使用可能なメモリで実行されるタスクのサイズフィールドとを決定する。
【００２５】
いくつかの例において、初期化のステップの後に、初期化されたCPUによるアクセス、選択、取得、および実行のステップは、その情報がTDCにあるすべてのタスクが実行されるまで繰り返される。
【図面の簡単な説明】
【００２６】
【図１】本開示の実施形態によるコンピュータシステムを示すブロック図である。
【図２】本開示の実施形態による並列してタスクを実行するための方法を示す流れ図である。
【図３】本開示の実施形態によるタスク記述チャート(TDC)の構造を示す図である。
【図４】本開示の実施形態による、TDCからのCPUの選択および実行タスクの手順を示す流れ図である。
【図５】本開示の実施形態による、複数のCPUが並列してタスクを実行するのを示す流れ図である。
【図６】TDCの例示的な構造、および立ち上げプロセスのためにTDCを生成するモジュール化プロセスを示す図である。
【図７】コンピュータシステムを立ち上げるための装置を示すブロック図である。
【発明を実施するための形態】
【００２７】
本出願の前述の目的、技術的解決策、および利点をより理解しやすくするために、添付の図を用いて実施形態について以下に記述する。
【００２８】
図1は、本開示の実施形態によるコンピュータシステム100のブロック図である。コンピュータシステム100は、ランダムアクセスメモリ(RAM)104などのメモリと結合され、適宜、記憶ユニット106に結合されたプロセッサ101を含む。記憶ユニット106は、読み取り専用メモリ(ROM)または他の記憶媒体(たとえばハードディスクまたはフラッシュメモリなど)の場合がある。
【００２９】
プロセッサ101は、図1に示したCPU 0およびCPU 1など、複数のCPUを含むことができる。必要に応じて、コンピュータシステム100は、たとえば図1におけるプロセッサ101およびプロセッサ108など、2つ以上のプロセッサを含む。プロセッサ101および108の各々は、シングルコアプロセッサまたはマルチコアプロセッサのいずれかの場合がある。
【００３０】
プロセッサ101のCPUが実行する様々なコードは、RAM 104または記憶ユニット106のいずれかに格納され得る。必要に応じて、コード109は、プロセッサ101が実行するために記憶ユニット106からRAM 104にコピーされる。必要に応じて、記憶ユニットに格納されたコードは、限定しないが、BIOSモジュール、ブートローダモジュール、カーネルモジュールの1つまたは組み合わせを含む。記憶ユニットには、また、タスク記述チャート(TDC)、後で詳細に説明されるであろう第1の命令および第2の命令がある。
【００３１】
必要に応じて、コンピュータシステムは、出力デバイス102(たとえばLCD(液晶ディスプレイ)などのディスプレイデバイス、LED(発光ダイオード)ディスプレイ、CRT(陰極線管)またはプロジェクタ)、および入力デバイス103(たとえばマウス、キーボード、タッチ画面、またはユーザの入力を検出することができるセンサデバイス)をさらに含む。出力デバイス102は、画像による対話インターフェースを表示するために、プロセッサ101によって制御される。必要に応じて、コンピュータシステムは、外部ネットワークまたは他のデバイスとデータまたは信号を交換するための通信インターフェース105をさらに含む。プロセッサ101のCPUが実行する上記の様々なコード(BIOSモジュール、ブートローダモジュール、カーネルモジュール、TDC、第1の命令、および第2の命令のいずれか1つまたは組み合わせなど)は、他のデバイスから通信インターフェース105を通じて取得され得る。
【００３２】
コンピュータシステム100の上記の要素は、データバス、アドレスバス、制御バス、拡張バス、またはローカルバスなど、バスによって相互に結合され得る。
【００３３】
コンピュータシステム100は、デスクトップコンピュータ、ネットワークサーバ、携帯情報端末(PDA)、モバイル電話、タブレット、端末装置、テレコムデバイス、組み込みシステム、または図1に示したような同様の構造を有する任意の他のデバイスの場合がある。しかしながら、本開示は、特定のタイプのコンピュータシステムに制限されるものではない。
【００３４】
複数のCPUを備えたコンピュータシステムを立ち上げるための方法が提供される。図2は、方法の流れ図である。本明細書に記述された方法は、図1に示されたコンピュータシステム100において実装され得るが、そのようなシステムに制限されるものではない。
【００３５】
複数のCPUを含み、少なくとも2つのCPUが立ち上げプロセスに関係するコンピュータシステムについて、方法は以下のブロックを含む。
【００３６】
S100:立ち上げプロセスの最初に複数のCPUの少なくとも2つのCPUを初期化する
【００３７】
必要に応じて、立ち上げプロセスに関係する少なくとも2つのCPUは、コンピュータシステムのCPU(図1を参照)に結合された初期化回路110によって初期化される。初期化回路は、コンピュータシステムの電力投入またはリセット時に、立ち上げプロセスに関係する少なくとも2つのCPUを含む、コンピュータシステムの構成要素を初期化する。初期化回路は、また、少なくとも2つのCPUによって使用するためにRAM 104を初期化することができる。あるいは、初期化回路は、たとえば少なくとも2つのCPUの起動CPUなど、最初に少なくとも2つのCPUの一部を初期化し、次いで、残りを初期化することができる。たとえば、初期化された起動CPUは、記憶媒体106に格納されている第2の命令を取得するために、記憶媒体106にアクセスし、第2の命令により残りのCPUを初期化することができる。
【００３８】
S102:少なくとも2つの初期化されたCPUの各々が、コンピュータシステムに格納されているタスク記述チャート(TDC)にアクセスする。TDCは、立ち上げプロセスの少なくとも2つのタスクの情報を含む。
【００３９】
必要に応じて、初期化されたCPUの第1のCPUがTDCにアクセスする場合、第1のCPUはTDCをロックし、ロックされたTDCは、第1のCPU以外のCPUによってアクセス可能ではない。たとえば、図3に示すように、TDCは、「TDCロック」フィールドを含むことができる。TDCをロックするために、第1のCPUは、ロック済みとしてTDCのTDCロックフィールドに印を付けることができる。
【００４０】
S104:少なくとも2つの初期化されたCPUの各々は、TDCの少なくとも2つのタスクの選択情報により、少なくとも2つのタスクからタスクを選択する。
【００４１】
必要に応じて、選択情報は、少なくとも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のCPUが選択を終了した後に、第1のCPUは、TDCのロックを解除する。
【００４６】
S106:少なくとも2つの初期化されたCPUの各々は、TDCの選択されたタスクのアドレス情報により、選択されたタスクを取得する。
【００４７】
S108:初期化されたCPUは、少なくとも部分的に並列して、選択されたタスクを実行する。
【００４８】
必要に応じて、選択情報は、少なくとも2つのタスクの各々のサイズを示すサイズフィールドをさらに含み、第1のCPUは、タスクを実行するために使用可能なメモリにより、少なくとも2つのタスクの第5のタスクを実行するべきかどうかと、第5のタスクおよび使用可能なメモリで実行されるタスクのサイズフィールドとを決定する。
【００４９】
必要に応じて、初期化のステップの後に、初期化されたCPUによるアクセス、選択、取得、および実行のステップは、その情報がTDCにあるすべてのタスクが実行されるまで繰り返される。
【００５０】
上記のステップS102からS108nは、第1の命令により第1のCPUによって実施され得る。
【００５１】
必要に応じて、少なくとも2つのタスクは、初期化されたCPUによって並列して実行可能なタスクを含み、基本入出力システム(BIOS)モジュール、ブートローダモジュール、およびカーネルモジュールを含むコンピュータシステムの立ち上げプロセスからである。
【００５２】
必要に応じて、BIOSモジュール、ブートローダモジュール、およびカーネルモジュールからのステップは、独立したステップまたは非同期のステップを含むステップへとモジュール化され、モジュール化されたステップは、少なくとも2つのタスクのタスクを形成するために分離される。
【００５３】
必要に応じて、BIOSモジュールにおける周辺機器の初期化ステップは、構成レジスタを修正する以外にデバイスを初期化するための初期化ステップと、初期化ステップに基づいて構成レジスタを修正するための登録ステップとに分割され、初期化ステップおよび登録ステップは、少なくとも2つのタスクの異なるタスクを形成するために分離される。
【００５４】
必要に応じて、TDCは、モジュール化および分離から生成されたタスクにより生成される。
【００５５】
図3に示すように、例示的なTDCは、複数のタスクのアドレス情報および選択情報を含む(たとえば、タスク1からタスクN、N≧2)。立ち上げプロセスに含まれる初期化されたCPUの各々は、選択情報により、少なくとも2つのタスクの1つのタスクを選択し、タスクのアドレス情報により記憶ユニット106またはRAM 104から、選択されたタスクを取得し、取得されたタスクを実行する。
【００５６】
TDCは、TDCファイルに関する情報を示すTDCメタデータフィールドを含むことができ、これはファイル内容およびセキュリティ関連の問題を処理するためのプロセスなどによって使用され得る。TDCロックフィールドは、TDCメタデータフィールドの一部の場合がある。
【００５７】
以下は、2つの初期化されたCPU(たとえばCPU 1およびCPU 2)が、TDCにより異なる選択情報(ロック、状態、優先度、および依存関係など)を用いて、TDCにおける3つのタスクからタスクを選択する実例である(たとえば、タスク1、タスク2、およびタスク3)。タスク1から3の選択情報は、Table 1(表1)に示している。
【００５８】
【表１】
2016513839.tif 000011
【００５９】
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の命令により、プロセッサで実行されるスケジューラアプリケーションによって実施され得る。
【００６０】
立ち上げプロセスの間に、メモリ(RAM 104など)は、部分的に初期化され得る。したがって、並列して実行されている特定のサイズを有するタスクに利用可能なメモリ空間は制限されている。多数の大きなサイズのタスクが並列して実行される場合、別のタスクは、実行されない/またはメモリにコピーされる場合がある。この問題を解決するために、メモリを管理するために実施形態において、メモリマネージャ(たとえばCPUの1つによって実行されるメモリマネージャアプリケーション)が提供される。TDCは、タスクのサイズフィールドをさらに含むことができる。サイズフィールドは、対応するタスクのサイズを示す場合がある。スケジューラアプリケーションは、使用可能なメモリにより、現在、どのタスクが実行されるかべきか、または実行されるべきでないかをさらに決定することができ、それに関する情報は、メモリマネージャ、およびサイズフィールドによって提供される(実行されたタスクおよび後に実行されるタスクのサイズなど)。たとえば、スケジューラアプリケーションは、タスクの選択情報を修正するためにTDCにアクセスすることができる(ロックフィールド、状態フィールド、優先度フィールド、および依存関係フィールドのいずれかまたは任意の組み合わせなど)。したがって、タスクの実行順序は、メモリをより良好に使用するために動的に調整され得る。必要な場合、メモリマネージャは、また、メモリの他の部分の初期化をトリガーすることができる。メモリの他の部分の初期化は、他のタスクと並列して実行され得る。
【００６１】
実施形態では、タスクは、スケジューリングのためにピボットとして機能するTDCに基づいてスケジューリングされる。基本メモリ管理も、このTDCを使用することによって達成され得る。
【００６２】
必要に応じて、選択情報は、可能なデバッギングのためにエラーコードフィールドをさらに含むことができる。たとえば、メモリマネージャの実行、選択、または管理の間に、タスクに障害が生じた場合、対応するエラーコードは、そのタスクのエラーコードフィールドに入れられる。
【００６３】
たとえば、タスク、第1の命令、または第2の命令のプログラムコードは、記憶ユニット106に格納されるか、またはRAM 104に読み込まれ得る。第1の命令およびTDCにより、起動プロセスに関係する各初期化されたCPUは、それが選択したタスクを実行するために、記憶ユニット106またはRAM 104にアクセスすることができる。起動CPUとして機能する初期化されたCPUは、他のCPUを初期化し、スタートアップのプロセッサ間割り込み(IPI:inter-processor interrupt)を使用して、それらをアクティブ化することができる。初期化されたCPUの実行は、IPIメッセージによって指定された実際のモード開始アドレスから始めることができる。この開始アドレスは、TDCによりタスクを選択および実行するために、初期化されたCPUに対する第1の命令に対応する。
【００６４】
立ち上げ時間を短縮するために、立ち上げプロセスに関係する初期化されたCPUによって選択された少なくとも2つのタスクが、少なくとも部分的に同時に実行されることが命じられる。
【００６５】
本開示の上記実施形態の技術的解決策を通じて、タスクを実行するための時間は、少なくとも部分的に並列して実行によって短縮され得る。より多くのCPUがこの解決策によって利用され、立ち上げプロセスにおいてより多くの実行時間が節約され得ることを理解されるであろう。
【００６６】
図4は、本開示の実施形態により、CPUが、TDCからタスクを選択および実行するための例示的な手順の流れ図である。方法は、以下のブロックを含む。
【００６７】
ブロックS401では、CPUは、上記の第1の命令をロードし、第1の命令を実行し始める。以前に述べたように、第1の命令は、CPUがTDCによりタスクを選択および実行するために使用される。ブロックS401の後に、CPUは、最初に、ブロックS403を実行する。
【００６８】
ブロックS403では、CPUは、TDCがロックされているかどうかを決定する。TDCがロックされている場合、CPUはブロックS402を実行する。TDCがロックされていない場合、CPUはブロックS404を実行する。
【００６９】
ブロック402では、CPUは、しばらくの間、待機/ポーリングし、次いで、TDCがロックされているかどうかを再決定するためにブロックS403に行く。
【００７０】
ロック属性は、複数のプロセスの間で共有され得るTDCにおけるデータへのアクセスを限定/制限するために、この実施形態では同期機構として使用される。これにより、たとえば、CPUによって制御されている1つのプロセスが、所与の事例/時間において、そのデータにアクセスすることを許可する。このため、たとえば、複数のCPUによって制御されている複数のプロセスが、所与の事例/時間において、共用されたデータにアクセス/修正することができるが、そのデータにロックを有しているプロセスだけが、それにアクセス/修正することができる。このデータは、それがデータのロックを取得した場合のみ、別のプロセスによってアクセス/修正され得る(プロセスが以前にこのデータのロックを保持している場合、ロックを解放する)。
【００７１】
ブロックS404では、CPUは、TDCの対応するフィールドをロックする。たとえば、CPUは、他のCPUによってアクセスされることからTDCにおける同じデータを保護するために、CPUの識別でロック済みとしてTDCでそれによって実行されるタスクのロックフィールドに印を付けることができる。
【００７２】
ブロックS405では、CPUは、TDCのすべてのタスクが、タスクの選択情報により完了したかどうかを決定する。TDCに完了していないタスクがある場合、CPUは、ブロックS407を実行する。TDCのすべてのタスクが完了している場合、CPUは、ブロックS406を実行するか、またはブロックS416を直接的に実行することができる。
【００７３】
ブロックS406では、CPUは、TDCにおけるタスクのロックを解除する。たとえば、CPUは、「ロック解除」としてTDCのタスクのロックフィールドに印を付けることができる。次いで、CPUは、ブロックS416を実行することができる。
【００７４】
ブロックS407では、CPUは、TDCの選択情報によりTDCからタスクを選択し、選択されたタスクをロックする。特定のタスク選択戦略については、すでに上に記述した。簡潔さのために、ここで再び述べることはない。
【００７５】
ブロックS408では、CPUは、TDCにおけるタスクのロックを解除し、ブロックS409を実行しに行くか、またはブロックS411を実行しに直接的に行く。ブロックS408の後に、他のCPUは、タスク選択のためにTDCにアクセスすることができる。
【００７６】
ブロックS409では、CPUは、選択されたタスクがすでにRAMにあるかどうかを決定する。ある場合、CPUは、ブロックS411を実行しに行く。ない場合、CPUは、ブロックS410を実行しに行く。
【００７７】
ブロックS410では、CPUは、実行されるタスクをRAMにコピーする。次いで、CPUは、ブロックS411を実行しに行く。たとえば、CPUは、タスクのアドレス情報により、記憶ユニットのタスクのコードを検索し、実行するために記憶ユニットからRAMへとタスクのコードをコピーすることができる。
【００７８】
ブロックS411では、CPUは、選択されたタスクを実行する。選択されたタスクの実行を完了した後、CPUは、ブロックS413を実行しに行くことができる。必要に応じて、実行する前に、CPUは、タスクのアドレス情報によりRAMにおいて選択されたタスクを検索し、選択されたタスクを取得する。
【００７９】
ブロックS413では、CPUは、TDCがロックされているかどうかを決定する。TDCがロックされている場合、CPUは、ブロックS412を実行する。TDCがロックされていない場合、CPUは、ブロックS414を実行する。
【００８０】
ブロック412では、CPUは、しばらくの間、待機/ポーリングし、次いで、TDCがロックされているかどうかを再決定するためにブロックS413に行く。
【００８１】
ブロックS414では、CPUは、TDCにおけるタスクをロックする。次いで、CPUは、ブロックS415を実行しに行く。
【００８２】
ブロックS415では、CPUは、「完了済み」として完了したタスクの選択情報の状態フィールドに印を付ける。次いで、CPUは、ブロックS405に行くことができる。
【００８３】
ブロックS416では、CPUは、図4に示した選択および実行の手順を終了する。たとえば、CPUは、第1の命令の実行を停止することができる。
【００８４】
図5は、本開示の実施形態による、複数のCPUが並列してタスクを実行する流れ図である。
【００８５】
図5に示すように、オプションの段階1において、コンピュータシステムの電源投入またはリセットは、複数のCPUのすべてまたは一部を初期化することができる(たとえば、CPU 0〜NのCPU 0)。初期化されたCPUの一部またはすべては、起動プロセスに関係し得る。
【００８６】
必要に応じて、段階1の間に初期化される起動CPUとしてCPU 0のみがあり、他のCPUはアイドル状態(または初期化されていない状態)にある場合、初期化されたCPU 0は、オプションの段階2において、残りのCPUを初期化する。
【００８７】
段階3において、初期化されたCPUは、TDCのすべてのタスクが完了するまで、TDCからタスクを選択し、たとえば図4に示す方法で、独立して、および少なくとも部分的に同時にそれらを実行することができる。
【００８８】
複数のCPUによる上記の並列実行を通じて、複数のCPUを有するコンピュータシステムCPUにおける立ち上げプロセスにおいてタスクを実行するための時間は短縮され得る。たとえば、立ち上げ時間は、90/100*(X/N-N*D*X)へと短縮され得て、ここで、Xは、現在の立ち上げ時間であり、Nは、CPUの数であり、Dは、CPUがTDCにおいて次のタスクを選択するための時間期間である。これは推定にすぎず、特定の数を超えて拡張可能ではない場合がある。
【００８９】
複数のCPUによる並列実行に関する上記実施形態は、立ち上げプロセスだけでなく、コンピュータシステムにおける様々なプロセスにおいて実装され得ることを留意されたい。しかしながら、立ち上げプロセスは、並列実行からの大きな利益を得るものの可能性がある。上記のように、典型的な立ち上げプロセスは、BIOSモジュール、ブートローダモジュール、およびカーネルモジュールを含む。BIOSモジュールは、システムハードウェア構成要素を初期化および試験するために使用される。BIOSモジュールは、基本的な入力/出力システム、ユニファイドエクステンシブルファームウェアインターフェース(UEFI)、およびエクステンシブルファームウェアインターフェース(EFI)など、少なくともシステムハードウェア構成要素を初期化および試験する機能を実現する任意の種類のシステムの場合がある。ブートローダは、RAMにカーネルのイメージをロードするために、BIOSによって呼び出されるモジュールである。カーネルは、ほとんどのコンピュータオペレーティングシステムの主な構成要素である。それは、アプリケーションと、ハードウェアレベルで実行される実際のデータ処理との間の橋渡しである。ブートローダモジュールが終わった後、カーネルモジュールは、カーネルのリソースおよびデータ構造を初期化するために実行され得る。
【００９０】
各立ち上げプロセスにおける3つのモジュールは、それぞれ様々な実行ステップを含むことがよく知られている。図6に示すように、立ち上げプロセスにおいて複数のCPU実行を実装するために、3つのモジュールのステップは、「モジュール化」と呼ばれる手順で相互配置(inter-arrange)され得る。つまり、各モジュールは、セクションへと分解され得る。各セクションは、1つまたは複数の独立したステップまたは非同期のステップを含むことができる。図6を参照すると、たとえば、BIOSモジュールにおけるinit()のステップは、相互に独立したinit_0_0()およびinit_0_1()のステップへと分解され得る。BIOSモジュールにおける別の特定のモジュール化の実例もここで提供される。BIOSモジュールにおける周辺機器の初期化ステップは、構成登録は、所与の時間/事例に1つのプロセスによってのみ修正され得るので、順次に実行されるために使用され得る。この実施形態では、周辺機器の初期化ステップは、構成登録の修正以外にデバイスを初期化するための初期化ステップと、初期化ステップに基づいて構成登録を修正するための登録ステップという2つのより小さなステップのグループへと分解され得る。したがって、複数の周辺機器を初期化するための初期化ステップは、並列して複数のCPUによって実行され得る。また、必要な場合、複数の周辺機器に関する登録ステップは、後にCPUによって順次に実行され得る。同様のモジュール化は、起動モジュールおよびカーネルモジュールで実装され得る。共有されるリソースについて、同期するためにロックを使用して、複数のCPUによってアクセスされ得る。
【００９１】
次いで、モジュール化されたステップは、個々のタスクを形成するために分離され得る。たとえば、BIOSモジュールにおいてモジュール化されたステップは、bios_task1()およびbios_task2()のタスクへとグループ化され得る。グループ化されたタスクの少なくとも2つのタスクは、同時に実行可能なタスクの場合がある。タスクの順序は、各タスクの設定優先度により決定され得る。たとえば、ブートローダモジュールからのタスクは、BIOSモジュールからのタスクと並列に実行されるように設定され得る。したがって、BIOSモジュールがその実行を完了している間に、カーネルのコピーおよび解凍のようなタスクが達成され得る。これらのタスクを記述するTDCは、各タスクの少なくとも1つの次の属性により生成され得る:優先度、依存関係、アドレス、サイズ、エラーコード、ロック、状態、および依存関係。
【００９２】
必要に応じて、割り込みベクタテーブル(IVT)は、BIOSモジュールからの一部またはすべてのステップの実行の間に、すべてのCPUに対して初期化される。IVTは、割り込みおよび割り込みハンドラのマッピングを含むCPUに関連する表である。それは、特定の割り込みを受信したときに、どの割り込みハンドラ(プログラム/機能)を実行するべきかをCPUに伝える表である。
【００９３】
必要に応じて、RAMの初期化は段階的に行われる。各段階で、RAMの領域の一部だけが初期化される。たとえば、BIOSモジュールおよびブートローダモジュールのタスクをコピーするためのRAMの領域のみが、第1段階および/または第2段階で初期化される。カーネルモジュールのタスクをコピーするためのRAMの残りの領域の初期化は、第3段階で行われ得る。必要に応じて、TDCが各タスクのサイズを含むときに、RAMの初期化は、より細かな方法で処理され得る。たとえば、RAMの初期化は、TDCのタスクの順序およびサイズにより複数の段階で行われ得る。必要に応じて、TDCのタスクとしてのRAMの初期化は、他の起動タスクと並行して完了する。
【００９４】
図7に示すように、それはコンピュータシステムを立ち上げるための装置のブロック図である。装置は、複数の処理モジュール702(処理モジュール1および処理モジュール2など少なくとも2つの処理モジュールを含む)および格納モジュール703を含み、複数の処理モジュール702の少なくとも2つの処理モジュールは、立ち上げプロセスの最初に初期化され、格納モジュール703は、タスク記述チャート(TDC)を格納するように構成され、TDCは、立ち上げプロセスの少なくとも2つのタスクの情報を含み、複数の処理モジュールの初期化された処理モジュールは、それぞれTDCにアクセスするように構成され、それぞれが、TDCの少なくとも2つのタスクの選択情報により、少なくとも2つのタスクから1つのタスクを選択し、それぞれが、TDCの選択されたタスクのアドレス情報により、選択されたタスクを取得し、少なくとも部分的に並列して、選択されたタスクを実行する。
【００９５】
必要に応じて、複数の処理モジュール702は、図1のプロセッサ101および/またはプロセッサ108に対応する。格納モジュールは、図1の記憶ユニット106およびRAM 104に対応する。
【００９６】
必要に応じて、初期化された処理モジュールの第1の処理モジュールは、TDCにアクセスした後に、TDCをロックするようにさらに構成され、ロックされたTDCは、第1の処理モジュール以外に処理モジュールによってアクセス可能ではない。
【００９７】
必要に応じて、選択情報は、少なくとも2つのタスクの各々の優先度を示す優先度フィールドをさらに含み、第1の処理モジュールは、少なくとも2つのタスクの中でより高い優先度を備えたタスクを最初に選択するようにさらに構成される。
【００９８】
必要に応じて、選択情報は、少なくとも2つのタスクにおける第1のタスクが依存する第2のタスクを示す依存関係フィールドをさらに含み、第1の処理モジュールは、完了済みとして第2のタスクに印が付けられたときに、第1のタスクを選択するようにさらに構成される。
【００９９】
必要に応じて、選択情報は、少なくとも2つのタスクの各々が初期化された処理モジュールによってロックされているかどうかを示すロックフィールドをさらに含み、第1の処理モジュールは、第1の処理モジュールが第3のタスクを選択した後に、少なくとも2つのタスクにおいて第3のタスクをロックするようにさらに構成され、ロック済みとして印が付けられている第3のタスクは、第1の処理モジュール以外に初期化された処理モジュールによって選択可能ではない。
【０１００】
必要に応じて、選択情報は、少なくとも2つのタスクの各々が完了しているかどうかを示す状態フィールドをさらに含み、第1の処理モジュールは、第4のタスクの実行を完了した後に、完了済みとして少なくとも2つのタスクにおいて第4のタスクの状態フィールドに印を付けるようにさらに構成され、完了済みとして印を付けられた第4のタスクは、初期化された処理モジュールによって選択可能ではない。
【０１０１】
必要に応じて、第1の処理モジュールは、第1の処理モジュールが選択を終了した後に、TDCのロックを解除するようにさらに構成される。
【０１０２】
必要に応じて、装置は、立ち上げ処理モジュールとして複数の処理モジュールの処理モジュールを初期化するように構成された初期化モジュール701をさらに含み、立ち上げ処理モジュールは、複数の処理モジュールの他の処理モジュールを初期化するように構成される。
【０１０３】
必要に応じて、少なくとも2つのタスクは、初期化された処理モジュールによって並列に実行可能なタスクを含み、基本入出力システム(BIOS)モジュール、ブートローダモジュール、およびカーネルモジュールを含む立ち上げプロセスからである。
【０１０４】
必要に応じて、BIOSモジュール、ブートローダモジュール、およびカーネルモジュールからのステップは、独立したステップまたは非同期のステップを含むステップへとモジュール化され、モジュール化されたステップは、少なくとも2つのタスクのタスクを形成するために分離される。
【０１０５】
必要に応じて、BIOSモジュールにおける周辺機器の初期化ステップは、構成レジスタを修正する以外にデバイスを初期化するための初期化ステップと、初期化ステップに基づいて構成レジスタを修正するための登録ステップとに分割され、初期化ステップおよび登録ステップは、少なくとも2つのタスクの異なるタスクを形成するために分離される。
【０１０６】
必要に応じて、選択情報は、少なくとも2つのタスクの各々のサイズを示すサイズフィールドをさらに含む。および
【０１０７】
必要に応じて、第1の処理モジュールは、タスクを実行するために使用可能なメモリにより、少なくとも2つのタスクの第5のタスクを実行するべきかどうかと、第5のタスクおよび使用可能なメモリで実行されるタスクのサイズフィールドとを決定するようにさらに構成される。
【０１０８】
必要に応じて、少なくとも2つの初期化された処理モジュールは、その情報がTDCにあるすべてのタスクが実行されるまで、TDCによりタスクを選択および実行することを継続するように構成される。
【０１０９】
当業者は、本出願の方法のステップのすべてまたは一部は、関連するハードウェアに指示するコンピュータプログラムによって実装され得ることを理解するべきである。プログラムは、コンピュータ可読記憶媒体に格納され得る。プログラムが実行されている場合、プログラムは、本出願の任意の実施形態で指定された方法を実行する。記憶媒体は、磁気ディスク、光ディスク、読み取り専用メモリ(ROM)、またはランダムアクセスメモリ(RAM)の場合がある。
【０１１０】
最後に、上記の実施形態は、単に説明のために使用されるものであり、本出願の技術的解決策を制限するものではないことを理解するべきである。上記の好ましい実施形態に関する本出願の詳細な説明にもかかわらず、当業者は、本出願の範囲から逸脱することなく、本出願の特許請求の範囲で対象にされている、様々な修正、変更、または等価な交換を行うことができることを理解するべきである。
【符号の説明】
【０１１１】
100  コンピュータシステム
101  プロセッサ
102  出力デバイス
103  入力デバイス
104  ランダムアクセスメモリ(RAM)
105  通信インターフェース
106  記憶ユニット
108  プロセッサ
109  コード
110  初期化回路
701  初期化モジュール
702  処理モジュール
703  格納モジュール
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の中央処理装置(CPU)を備えたコンピュータシステムを立ち上げるための方法であって、
立ち上げプロセスの最初に前記複数のCPUの少なくとも2つのCPUを初期化するステップと、
前記少なくとも2つの初期化されたCPUの各々によって、前記コンピュータシステムに格納されているタスク記述チャート(TDC)にアクセスするステップであって、前記TDCは、前記立ち上げプロセスの少なくとも2つのタスクの情報を含むステップと、
前記少なくとも2つの初期化されたCPUの各々によって、前記TDCの少なくとも2つのタスクの選択情報により、少なくとも2つのタスクから1つのタスクを選択するステップと、
前記少なくとも2つの初期化されたCPUの各々によって、前記TDCの選択されたタスクのアドレス情報により、前記選択されたタスクを取得するステップと、
前記初期化されたCPUによって、少なくとも部分的に並列して、前記選択されたタスクを実行するステップと
を含む方法。
【請求項２】
前記初期化されたCPUの第1のCPUが前記TDCにアクセスする場合、前記第1のCPUは前記TDCをロックし、前記ロックされたTDCは、前記第1のCPU以外のCPUによってアクセス可能ではない請求項1に記載の方法。
【請求項３】
前記選択情報は、
前記少なくとも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に記載の方法。
【請求項４】
前記第1のCPUが前記選択を終了した後に、前記第1のCPUは、前記TDCのロックを解除する請求項1から3のいずれか一項に記載の方法。
【請求項５】
前記複数のCPUの少なくとも2つのCPUを初期化する前記ステップは、
前記コンピュータシステムの初期化回路によって、起動CPUとして前記複数のCPUの1つのCPUを初期化するステップと、
前記起動CPUによって、前記複数のCPUの他のCPUを初期化するステップと
を含む請求項1から4のいずれか一項に記載の方法。
【請求項６】
前記少なくとも2つのタスクは、前記初期化されたCPUによって並列して実行可能なタスクを含み、基本入出力システム(BIOS)モジュール、ブートローダモジュール、およびカーネルモジュールを含むコンピュータシステムの立ち上げプロセスからである請求項1から5のいずれか一項に記載の方法。
【請求項７】
前記BIOSモジュール、前記ブートローダモジュール、および前記カーネルモジュールからのステップは、独立したステップまたは非同期のステップを含むステップへとモジュール化され、前記モジュール化されたステップは、前記少なくとも2つのタスクのタスクを形成するために分離される請求項6に記載の方法。
【請求項８】
前記BIOSモジュールにおける周辺機器の初期化ステップは、構成レジスタを修正する以外にデバイスを初期化するための初期化ステップと、初期化ステップに基づいて構成レジスタを修正するための登録ステップとに分割され、前記初期化ステップおよび前記登録ステップは、前記少なくとも2つのタスクの異なるタスクを形成するために分離される請求項7に記載の方法。
【請求項９】
少なくとも2つのタスクに対応する選択情報を示すように構成された選択情報フィールドと、
前記少なくとも2つのタスクに対応するアドレス情報を示すように構成されたアドレス情報フィールドと
を含み、
複数の中央処理装置(CPU)を備えたコンピュータシステムの複数の初期化されたCPUは、前記選択情報フィールドにより前記少なくとも2つのタスクからタスクを選択し、前記アドレス情報フィールドにより、前記選択されたタスクを取得し、少なくとも部分的に並列して、前記選択されたタスクを実行することを特徴とするタスク記述チャート(TDC)。
【請求項１０】
前記複数の初期化されたCPUの第1のCPUによって前記TDCがロックされているかどうかを示すように構成されたTDCロックフィールドをさらに含み、前記ロックされたTDCは、前記第1のCPU以外のCPUによってアクセス可能ではない請求項9に記載のタスク記述チャート。
【請求項１１】
前記選択情報フィールドは、
前記少なくとも2つのタスクの各々の優先度を示す優先度フィールドであって、前記少なくとも2つのタスクの中でより高い優先度を備えたタスクは、前記第1のCPUによって最初に選択される、優先度フィールド、
前記少なくとも2つのタスクにおいて第1のタスクが依存する第2のタスクを示す依存関係フィールドであって、完了済みとして前記第2のタスクに印が付けられている場合、前記第1のタスクは、前記第1のCPUによって選択可能である依存関係フィールド、
前記少なくとも2つのタスクの各々が前記第1の初期化されたCPUによってロックされているかどうかを示すロックフィールド、
前記少なくとも2つのタスクの各々が完了しているかどうかを示す状態フィールド、または、
前記少なくとも2つのタスクの各々のサイズを示すサイズフィールドであって、前記第1のCPUは、タスクを実行するために使用可能なメモリにより、前記少なくとも2つのタスクの第5のタスクを実行するべきかどうかと、前記第5のタスクおよび前記使用可能なメモリで実行されるタスクのサイズフィールドとを決定する、タスクフィールド、
のうちの少なくとも1つのフィールドをさらに含む請求項10に記載のタスク記述チャート。
【請求項１２】
初期化モジュール、複数の処理モジュール、および格納するモジュール
を含み、
前記複数の処理モジュールの少なくとも2つの処理モジュールは、立ち上げプロセスの最初に初期化され、
前記格納モジュールは、タスク記述チャート(TDC)を格納するように構成され、前記TDCは、立ち上げプロセスの少なくとも2つのタスクの情報を含み、
前記複数の処理モジュールの前記初期化された処理モジュールは、それぞれ前記TDCにアクセスするように構成され、それぞれが、前記TDCの少なくとも2つのタスクの選択情報により、前記少なくとも2つのタスクから1つのタスクを選択し、それぞれが、前記TDCの選択されたタスクのアドレス情報により、前記選択されたタスクを取得し、少なくとも部分的に並列して、前記選択されたタスクを実行する
コンピュータシステムを立ち上げるための装置。
【請求項１３】
前記初期化された処理モジュールの第1の処理モジュールは、前記TDCにアクセスした後に、前記TDCをロックするようにさらに構成され、前記ロックされたTDCは、前記第1の処理モジュール以外に処理モジュールによってアクセス可能ではない請求項12に記載の装置。
【請求項１４】
前記選択情報は、
前記少なくとも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に記載の装置。
【請求項１５】
前記初期化モジュールは、立ち上げ処理モジュールとして前記複数の処理モジュールの1つの処理モジュールを初期化するように構成され、前記立ち上げ処理モジュールは、前記複数の処理モジュールの他の処理モジュールを初期化するように構成される請求項12から14のいずれか一項に記載の装置。
【国際調査報告】
2016513839.tif 000012
2016513839.tif 000013