コンピュータシステムで用いられる方法であって、前記コンピュータシステムのプロセッサにより、前記コンピュータシステムのプレブート段階中にファームウェアモジュールにメモリを割り当て、前記メモリはACPIAdvancedConfigurationandPowerInterface又はEFIExtensibleFirmwareInterfaceに準拠した複数のメモリ形式に基づいて割り当てられ、前記プロセッサにより、複数のフラグメントを含むメモリのフラグメンテーションを決定し、各フラグメントは同じメモリ形式の連続ブロックを有し、前記フラグメンテーションが閾値より大きい場合に、前記プロセッサにより、前記複数のメモリ形式に基づいて前記ファームウェアモジュールに割り当てられたメモリの少なくとも一部を併合し、前記プロセッサにより、前記コンピュータシステムのオペレーティングシステムをブートすることを有する方法。本発明は、コンピュータシステムで用いられる方法であって、前記コンピュータシステムのプロセッサにより、前記コンピュータシステムのプレブート段階中にファームウェアモジュールにメモリを割り当て、前記メモリはACPIAdvancedConfigurationandPowerInterface又はEFIExtensibleFirmwareInterfaceに準拠した複数のメモリ形式に基づいて割り当てられ、前記プロセッサにより、複数のフラグメントを含むメモリのフラグメンテーションを決定し、各フラグメントは同じメモリ形式の連続ブロックを有し、前記フラグメンテーションが閾値より大きい場合に、前記プロセッサにより、前記複数のメモリ形式に基づいて前記ファームウェアモジュールに割り当てられたメモリの少なくとも一部を併合し、前記プロセッサにより、前記コンピュータシステムのオペレーティングシステムをブートすることを有する方法を特徴とする。本発明の非限定的且つ非網羅的な実施例について、以下の図面を参照して説明する。図面において、特別の定めがない限り、同様の参照符号は様々な図面を通じて同様の部分を示す。以下の説明では、本発明の実施例の完全な理解を提供するために、複数の特定の詳細が示されている。しかし、特定の詳細のうち1つ以上がなくても、又は他の方法、構成要素、物質等を用いて、本発明の実施例が実施され得ることを、当業者は認識する。その他に、本発明の理解をあいまいにしないように、周知の構造、物質又は動作は図示又は記載していない。明細書を通じて一実施例又は実施例への言及は、実施例に関して説明する特定の機能、構造又は特徴が本発明の少なくとも1つの実施例に含まれることを意味する。従って、一実施例では又は実施例ではという語句が明細書を通じて様々な位置に現れることは、必ずしも同じ実施例を示しているとは限らない。更に、特定の機能、構造又は特徴は、1つ以上の実施例で如何なる適切な方法で組み合わされてもよい。ここに記載するファームウェア環境の実施例は、実質的にEFIExtensibleFirmwareInterfacehttpdeveloperintelcomtechnologyefiで入手可能なExtensibleFirmwareInterfaceSpecificationVersion110December12002に従って実装されてもよい。EFIは、ドライバのようなファームウェアモジュールの形式のファームウェアが、様々な異なるリソースフラッシュメモリ装置、オプションのROMReadOnlyMemory、ハードディスクのような他の記憶装置、CDROMCompactDiskReadOnlyMemoryを含むから又はコンピュータネットワーク上の1つ以上のコンピュータシステムからロードされることを可能にする。EFI仕様の実装の一実施例は、以下でフレームワークと呼ばれるIntelPlatformInnovationFrameworkforEFIArchitectureSpecification-DraftforReviewVersion09September162003wwwintelcomtechnologyframeworkで入手可能に記載されている。本発明の実施例は、フレームワーク又はEFI仕様に従った実装に限定されないことがわかる。図1を参照すると、メモリフラグメンテーションを低減する実施例が図示されている。プレブートメモリマップ102は、プレブート段階中の物理メモリのメモリアドレス0~Xの割り当て110で示すを記述している。一実施例では、プレブートメモリマップ102は、ACPIAdvancedConfigurationandPowerInterfaceE820テーブルAdvancedConfigurationandPowerInterfaceSpecificationversion20bOctober112002を有する。一般的に、E820テーブルは、何の物理メモリがOSに利用可能であるか、システムに確保されているか、又は存在しないかを記述する。プレブート中に、様々なメモリ形式がファームウェアモジュール130134に割り当てられる。一実施例では、ファームウェアモジュールは、一式の関係する命令一般的にコードと呼ばれる及び/又はデータバッファを有してもよい。図1では、ファームウェアモジュール130は、命令130Aとデータバッファ130Bとを有する。データバッファ130Bは、様々な目的で様々なデータを保管して取り出すために、命令130Aにより使用されてもよい。命令及びデータバッファは、必ずしも連続メモリアドレスに割り当てられなくてもよいが、別々のメモリアドレスブロックに存在してもよい。ファームウェアモジュールは、EFIドライバのようなドライバ、関数呼び出し、プロトコル等を有してもよい。或る実施例のファームウェアモジュールはOSランタイムに存続しなくてもよく、或るファームウェアモジュールはプレブート及びOSランタイム中に利用可能になる。ファームウェアモジュールのロード処理中に、ファームウェアモジュールは、ファームウェアメモリマネージャ106から様々なサイズの1つ以上のメモリ形式のメモリ割り当てを要求してもよい。一実施例では、ファームウェアメモリマネージャ106は、OSランタイムに存続してもよい。ファームウェアメモリマネージャ106は、要求されたメモリ形式に対応するファームウェアモジュールのメモリアドレスを割り当ててもよい。このメモリの割り当ては、プレブートメモリマップ102のフラグメンテーションを生じることがある。ここで使用されるフラグメントは、特定の形式のメモリの連続ブロックを有する。図1の実施例では、リブートメモリマップ102は、4つの形式のメモリ形式14に断片化されている。例えば、フラグメント120はメモリ形式2で構成される。103に示す併合coalescingの後に、101に示すようにプレブートメモリマップ102が併合される。併合は、同じメモリ形式が一緒に動かされ、連続ブロックを形成するように、メモリ形式に基づく。一実施例では、全てのメモリフラグメントが併合されてもよい。他の実施例では、メモリフラグメンテーションが所定の閾値レベルの下になるまで、プレブートメモリマップが同時に1つのファームウェアモジュールに併合されてもよい以下に説明する。例えば図1では、形式2のメモリのフラグメント120及びフラグメント121は、形式2のメモリのフラグメント122に併合される。従って、2つのフラグメントが1つのフラグメントに併合される。一実施例では、メモリ形式は、ACPI仕様に記載の形式を有する。これらのACPIメモリ形式を以下の表1に示す。ACPI準拠のシステムでは、プレブート中に、ファームウェアはE820テーブルをOSPMOperatingSystemdirectedconfigurationandPowerManagementに報告する。要するに、OSPMはオペレーティングシステムとACPI機能との間のインタフェースである。OSが制御を受け持つと、OSは自分のメモリマッピングを構築するためにE820テーブルを使用する。ACPI準拠のシステムでは、ファームウェアがメモリマッピングをOSPMに伝達する様々な方法が存在する。或る方法では、プレブートメモリマップをOSに伝達するために、IAIntelArchitectureシステムでINT15BIOSインタフェースが使用される。他の方法では、メモリリソースが動的に追加又は削除され得る場合に、メモリ装置は、メモリリソースにより記述されたリソース情報を伝達するACPINamespaceに規定される。EFI準拠のシステムでは、プレブートメモリマップをOSローダに伝達するために、EFIBootServices関数GetMemoryMapが使用されてもよい。このマッピングは、OSローダによりOSPMに伝達される。GetMemoryMapは、様々なEFIメモリ記述子を戻す。これらのEFIメモリ記述子は、全ての設置されているRAMRandomAccessMemory及びファームウェアにより確保されている物理メモリ範囲のシステムメモリマッピングを規定する。以下の表2は、EFIメモリ形式及び対応するACPIアドレス範囲形式とのサンプリングを示している。ここでの実施例は、メモリフラグメンテーションを低減することを提供する。例えば、RedHatLinux及びSuseLinuxは、32フラグメントを超えるプレブートメモリマップをサポートしないことがある。ACPIシステムでは、これは32のE820テーブルエントリに相当する。他の例では、Windows登録商標サーバオペレーティングシステムは、64のフラグメントより大きいプレブートメモリマップをサポートしないことがある。プラットフォームの複雑性が増加し、ファームウェア環境がロバストになってくると、フラグメンテーションは32のフラグメントを超過することがある。ここでの実施例は、動的なプレブートメモリマップのデフラグを提供する。静的な方式では、様々なメモリ形式のバケツbucketが予め割り当てられ得る。プレブート中に、メモリ形式毎の使用プロファイルが、初期ブートに基づいて不揮発性記憶装置に保存されてもよい。次に、システムがリブートされ、バケツが使用プロファイルに基づいて再分配される。しかし、このような静的な方式は実用的ではない。まず、このような静的な方式は、プレブートメモリマップのフラグメンテーションを変更し得るシステム構成の変更を提供しない。更に、サーバのような或るプラットフォームは、59の作動要件を満たさなければならない。59は、サーバが99999の時間に利用可能でなければならないという標準的な顧客の要件である。この59の可用性は、1年に1分のみの許容停止時間に等しい。このような要件は、静的な方式のように、プレブートメモリマップを併合する長いブート処理を容認することができない。ここでの実施例は、コンピュータシステムのリブートを必要とせずに、プレブートメモリマップのデフラグを可能にする。図2を参照すると、メモリフラグメンテーションの低減をサポートするコンピュータシステム200の実施例が図示されている。ファームウェア204はハードウェア202の上のレイヤにある。オペレーティングシステム206はファームウェア204の上のレイヤにある。ハードウェア202は、プロセッサ210と、フラッシュメモリ212と、メモリ208とを有する。一実施例では、ここに記載するメモリフラグメンテーションを低減する機械アクセス可能命令がフラッシュメモリ212に格納される。他の実施例では、EFI仕様に実質的に準拠するメモリフラグメンテーションを低減する命令がフラッシュメモリ212に格納される。代替実施例では、フラッシュメモリ212の代わりに、又はフラッシュメモリ212に加えて、ROMReadOnlyMemoryのような他の形式の不揮発性記憶装置が使用されてもよい。ファームウェアレイヤ204は、プレブートメモリマップ102と、ファームウェアメモリマネージャ106と、ファームウェアモジュール130134と、ディスパッチャ220と、閾値240とをサポートする。図2の実施例では、ファームウェアメモリマネージャ106は、併合プロトコルcoalesceprotocol216と、フラグメンテーション検索プロトコルretrievefragmentationprotocol218とを提供する。一実施例では、ファームウェアメモリマネージャ106と併合プロトコル216とフラグメンテーション検索プロトコル218とをサポートする命令がフラッシュメモリ212に格納される。ファームウェアメモリマネージャ106と併合プロトコル216とフラグメンテーション検索プロトコル218とについて、以下に更に説明する。一実施例では、プレブートメモリマップ102により記述されたメモリが併合される必要があるか否かを決定する際に、閾値240が使用される。一実施例では、閾値240は32のフラグメントに相当する。他の実施例では、閾値240は64のフラグメントに相当する。更に他の実施例では、閾値240はコンピュータシステム200の不揮発性記憶装置に他のシステム構成情報と共に格納される。このような不揮発性記憶装置は、フラッシュメモリ212、又はEFI変数を格納しているNVRAMNonVolatileRandomAccessMemoryを有してもよい。一実施例では、ディスパッチャ220は、図4と共に以下に説明するフラグメンテーションを低減する選択optinの実装で使用されてもよい。フレームワークの一実施例では、ディスパッチャ220は、BDSBootDeviceSelectionプロトコルを有する。一般的に、ディスパッチャ220は、併合プロトコルに選択を報告するファームウェアモジュールからハンドルhandleを受信する。ハンドルは、ディスパッチャ220によりファームウェアモジュールを特定して連絡する手段を提供する。ディスパッチャ220は、併合をサポートするファームウェアモジュールを登録する。図3を参照すると、メモリフラグメンテーションを低減するフローチャート300の実施例が図示されている。ブロック302で始まり、コンピュータシステムが起動又はリセットされる。ブロック304に進み、プレブート中に、ファームウェアメモリマネージャによりメモリがファームウェアFWモジュールに割り当てられる。ファームウェアモジュールが起動されると、ファームウェアモジュールは、ファームウェアメモリマネージャからメモリ形式の割り当てを要求する。ファームウェアメモリマネージャは、要求された形式のメモリアドレス範囲をファームウェアモジュールに割り当てる。判定ブロック306に進み、ファームウェアがオペレーティングシステムをブートする準備ができているか否かをロジックが決定する。EFI準拠の環境では、ReadyToBootイベントがシステムに発行される。EFIシステムでは、ファームウェアモジュールのようなファームウェアエンティティは、所定のセットのイベントに注意するように登録する。ReadyToBootイベントのようなイベントの起動時に、エンティティが通知され、エンティティはそれに応じて様々なタスククリーンアップ等を実行する。一実施例では、これらのタスクはここに記載する併合を有してもよい。判定ブロック306への回答がNOである場合、ロジックはブロック304に戻り、ファームウェアモジュールにメモリを割り当て続ける。判定ブロック306への回答がYESである場合、ロジックはブロック308に進む。ブロック308において、メモリのフラグメンテーションが検索される。一実施例では、フラグメンテーション検索プロトコルが呼び出され、フラグメンテーション検索プロトコルは、プレブートメモリマップのフラグメントの数を戻す。ブロック310に進み、プレブートメモリマップのフラグメンテーションが閾値の上であるか否かをロジックが決定する。回答がNOである場合、ロジックはブロック312に進み、オペレーティングシステムをブートする。回答がYESである場合、ロジックはブロック314に進み、ファームウェアモジュールに割り当てられたメモリを併合する。一実施例では、併合は、ファームウェアモジュールのデータバッファのようなファームウェアモジュールの一部を同様のメモリ形式の連続ブロックにマッピングする。これによって、メモリのフラグメンテーションを低減する。例えば、この特定の実施例では、ファームウェアモジュールの命令部分は、もともと割り当てられているメモリ位置に留まってもよいが、データバッファ部分は併合の一部として新しい位置に動かされてもよい。他の実施例では、全体のファームウェアモジュールが併合される。一実施例では、併合プロトコルは、ファームウェアモジュールを併合するために呼び出される。併合プロトコルは、ファームウェアモジュールの新しいメモリ位置へのポインタを戻してもよい。メモリ又はハードディスクのような記憶媒体をデフラグする方法は当業者に周知であることがわかる。判定ブロック316に進み、併合する更なるファームウェアモジュールが存在するか否かをロジックが決定する。回答がYESである場合、ロジックはブロック308に戻る。拝呈ブロック316への回答がNOである場合、ロジックはブロック312に進み、OSをブートする。図4を参照すると、フローチャート400は、メモリフラグメンテーションを低減する一実施例を示している。フローチャート400は、ファームウェアモジュールが併合をサポートするようにコード化されているか否かを登録するファームウェアモジュール選択方式を示している。ブロック402で始まり、コンピュータシステムが起動又はリセットされる。ブロック404に進み、ファームウェアメモリマネージャにより併合プロトコルがファームウェアモジュールに広告される。一実施例では、併合プロトコルを広告するために、ファームウェアメモリマネージャは、併合プロトコルのメモリアドレスを示すポインタをファームウェアモジュールに渡す。ブロック405に進み、ファームウェアメモリマネージャによりメモリがプレブート中にロードしたファームウェアモジュールに割り当てられる。ブロック406に進み、ファームウェアモジュールが併合をサポートする場合、この情報がディスパッチャに登録される。判定ブロック408に進み、システムがオペレーティングシステムをブートする準備ができているか否かをロジックが決定する。判定ブロック408への回答がNOである場合、ロジックはブロック405に戻る。判定ブロック408への回答がYESである場合、ロジックはブロック410に進む。ブロック410において、フラグメンテーション検索プロトコルを使用してメモリのフラグメンテーションが検索される。判定ブロック412に進み、フラグメンテーションが閾値の上であるか否かをロジックが決定する。回答がNOである場合、ロジックはブロック414に進み、OSをブートする。判定ブロック412への回答がYESである場合、ロジックはブロック416に進み、ファームウェアモジュールの併合プロトコルを起動する。一実施例では、ファームウェアモジュールが併合プロトコルを呼び出す。他の実施例では、ディスパッチャが併合プロトコルを呼び出す。判定ブロック418に進み、併合プロトコルをサポートする更なるファームウェアモジュールが存在するか否かをロジックが決定する。一実施例では、ディスパッチャにより維持されている併合をサポートする登録済のファームウェアモジュールのリストが調べられる。判定ブロック418への回答がNOである場合、ロジックはブロック414に進み、OSをブートする。判定ブロック418への回答がYESである場合、ロジックはブロック410に進み、メモリのフラグメンテーションを検索する。図4の実施例では、ファームウェアモジュールは、ここに記載する併合を利用するようにコード化されることがわかる。ここでの実施例は、併合の関与と非関与との混合であるファームウェアモジュールのセットで動作してもよい。フローチャート400の選択方式は、ファームウェアモジュールのプロバイダが要望通りに併合を利用することを可能にする。図5を参照すると、フローチャート500は、メモリフラグメンテーションを低減する一実施例を示している。フローチャート500は、ファームウェアメモリマネージャにより併合が指示される実施例を示している。この実施例では、ファームウェアメモリマネージャは、メモリ割り当ての全能の知識を利用する。ブロック502で始まり、コンピュータシステムが起動/リセットされる。ブロック504に進み、ファームウェアメモリマネージャは、メモリをファームウェアモジュールに割り当てる。ブロック505に進み、ファームウェアメモリマネージャは、ファームウェアメモリマネージャがファームウェアモジュールに併合の後の新しいメモリ位置を通知することを可能にするファームウェアモジュールインタフェースを、ファームウェアモジュールから受信する。判定ブロック506に進み、システムがOSをブートする準備ができているか否かをロジックが決定する。判定ブロック506への回答がNOである場合、ロジックはブロック504に戻る。判定ブロック506への回答がYESである場合、ロジックはブロック508に進む。ブロック508において、ファームウェアメモリマネージャによりフラグメンテーション検索プロトコルを使用して、メモリのフラグメンテーションが検索される。判定ブロック510に進み、フラグメンテーションが閾値より大きいか否かをロジックが決定する。回答がNOである場合、ブロック512に示すようにOSがブートされる。回答がYESである場合、ロジックはブロック514に進む。ブロック514において、ファームウェアメモリマネージャは、ファームウェアモジュールの併合プロトコルを起動する。判定ブロック516に進み、併合処理を終えていない更なるファームウェアモジュールが存在するか否かをロジックが決定する。判定ブロック516への回答がYESである場合、ロジックはブロック508に戻る。判定ブロック516への回答がNOである場合、ロジックはブロック518に進み、ファームウェアメモリマネージャは、併合されているファームウェアモジュールに新しいメモリ位置を通知する。一実施例では、ファームウェアメモリマネージャは、ファームウェアモジュールにそのデータバッファの新しい位置へのポインタを渡す。一実施例では、ファームウェアメモリマネージャは、ブロック505でファームウェアメモリマネージャに渡されたファームウェアモジュールインタフェースを使用して、ファームウェアモジュールに通知してもよい。ここでの実施例は、動的に、コンピュータシステムのリブートを必要とせずに、メモリフラグメンテーションを低減することを提供する。いくつかのIA32及びEM64TExtendedMemory64Technologyオペレーティングシステムは、32より多くのE820テーブルエントリをサポートしない。要するに、EM64Tは、32ビットシステムが4ギガバイトラインより上のメモリを指定することを可能にする。EFI準拠のシステムでは、E820テーブルは、基本的にはEFIメモリマップの変換であるため、E820エントリの数は、EFIファームウェアモジュールのフラグメンテーションの程度に比例する。図6は、本発明の実施例が実装され得る例示的なコンピュータシステム600の一実施例の図である。コンピュータシステム600は、チップセット606に結合されたプロセッサ602及びメモリ604を有する。記憶装置612、不揮発性記憶装置NVS605、ネットワークインタフェース614及び入出力IO装置618もまたチップセット606に結合されてもよい。コンピュータシステム600の実施例は、デスクトップコンピュータ、ノートブックコンピュータ、サーバ、携帯情報端末、ネットワークワークステーション等を含み、これらに限定されない。一実施例では、コンピュータシステム600は、メモリ604に結合されたプロセッサ602を少なくとも有し、プロセッサ602はメモリ604に格納された命令を実行する。プロセッサ602は、IntelCorporationのx86、Pentium登録商標、Xeon又はItaniumファミリのプロセッサ等を有してもよいが、これらに限定されない。一実施例では、コンピュータシステム600は、複数のプロセッサを有してもよい。メモリ604は、DRAMDynamicRandomAccessMemory、SRAMStaticRandomAccessMemory、SDRAMSynchronizedDynamicRandomAccessMemory、RDRAMRambusDynamicRandomAccessMemory等を有してもよいが、これらに限定されない。チップセット606は、MCHMemoryControllerHub、ICHInputOutputControllerHub等を有してもよい。チップセット606はまた、システムクロックのサポート、電力管理のサポート、オーディオのサポート、グラフィックのサポート等を有してもよい。一実施例では、チップセット606は、プロセッサ602及びメモリ604用のソケットを有する基板に結合される。コンピュータシステム600の構成要素は、PCIPeripheralComponentInterconnectバス、SMBUSSystemManagementbus、LPCLowPinCountバス、SPISerialPeripheralInterfaceバス、AGPAcceleratedGraphicsPortインタフェース等を含み、様々なバスにより接続されてもよい。IO装置618は、キーボード、マウス、ディスプレイ、プリンタ、スキャナ等を有してもよい。コンピュータシステム600は、ネットワークインタフェース614を通じて外部ネットワークにインタフェース接続してもよい。ネットワークインタフェース614は、モデム、NICnetworkinterfacecard又はコンピュータシステムを他のコンピュータシステムに結合する他のインタフェースを有してもよいが、これらに限定されない。搬送波信号623は、ネットワークインタフェース614により受信/送信される。図6に示す実施例では、搬送波信号623は、コンピュータシステム600をネットワーク624LANLocalAreaNetwork、WANWideAreaNetwork、インターネット又はこれらの何らかの組み合わせ等にインタフェース接続するために使用される。一実施例では、コンピュータシステム600及びコンピュータシステム625がネットワーク624で通信し得るように、ネットワーク624はコンピュータシステム625に更に結合される。コンピュータシステム600はまた、ファームウェア及び/又はデータが格納され得る不揮発性記憶装置605を有する。不揮発性記憶装置は、ROMReadOnlyMemory、フラッシュメモリ、EPROMErasableProgrammableReadOnlyMemory、EEPROMElectronicallyErasableProgrammableReadOnlyMemory、NVRAMNonVolatileRandomAccessMemory等を有してもよいが、これらに限定されない。記憶装置612は、磁気ハードディスク、磁気テープ、光ディスク等を有するが、これらに限定されない。プロセッサ602により実行可能な命令は、記憶装置612、メモリ604、不揮発性記憶装置605に存在してもよく、ネットワークインタフェース614を介して送信又は受信されてもよいことがわかる。一実施例では、コンピュータシステム600は、OSOperatingSystemソフトウェアを実行してもよいことがわかる。例えば、本発明の一実施例は、コンピュータシステム600のオペレーティングシステムとして、MicrosoftWindows登録商標を利用する。コンピュータシステム600で使用され得る他のオペレーティングシステムは、AppleMacintoshオペレーティングシステム、Linuxオペレーティングシステム、Unix登録商標オペレーティングシステム等を有するが、これらに限定されない。明細書上で、機械アクセス可能媒体は、機械例えば、コンピュータ、ネットワーク装置、携帯情報端末、製造ツール、1つ以上のプロセッサのセットを備えた何らかの装置等により読み取り可能又はアクセス可能な形式で情報を提供すなわち、格納及び/又は送信する何らかの機構を有する。例えば、機械アクセス可能媒体は、記録可能/記録不可能媒体例えば、ROMReadOnlyMemory、RAMRandomAccessMemory、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリ装置等を有するが、これらに限定されない。更に、機械アクセス可能媒体は、電気信号、光信号、音響信号又は他の形式の伝搬信号例えば、搬送波、赤外線信号、デジタル信号等のような伝搬信号を有してもよい。本発明の様々な動作の実施例について説明した。これらの動作は、プロセッサ、ASICApplicationSpecificIntegratedCircuit、FPGAFieldProgrammableGateArray等を使用した機械により実装され得る。一実施例では、記載の動作のうち1つ以上は、機械アクセス可能媒体に格納された命令を構成してもよい。機械アクセス可能媒体に格納された命令は、機械により実行されると、機械に記載の動作を実行させる。動作の一部又は全部が記載される順序は、これらの動作が必ずしも順序に依存することを示すように解釈されるべきではない。代替の順序も、この説明の利益を享受した当業者にわかる。更に、全ての動作が本発明の各実施例に必ずしも存在するとは限らないことがわかる。要約書に記載したものを含み、本発明の図示の実施例の前記の説明は、網羅的でなく、開示された正確な形式に実施例を限定することを意図するものではない。本発明の特定の実施例及び例が説明の目的でここに記載されているが、当業者にわかるように、様々な変更も可能である。これらの変更は、前記の詳細な説明を鑑みて、本発明の実施例に行われ得る。特許請求の範囲で使用される用語は、本発明を限定するものとして解釈されるべきではない。むしろ、特許請求の範囲は、請求項の解釈の確立した原則に従って解釈されるべきである。以上の実施例に関し、更に、以下の項目を開示する。1コンピュータシステムのプレブート段階中にファームウェアモジュールにメモリを割り当て、前記メモリは複数のメモリ形式に基づいて割り当てられ、メモリのフラグメンテーションを決定し、フラグメントは同じ形式のメモリの連続ブロックを有し、前記フラグメンテーションが閾値より大きい場合に、前記複数のメモリ形式に基づいて前記ファームウェアモジュールに割り当てられたメモリの少なくとも一部を併合し、前記コンピュータシステムによりオペレーティングシステムをブートすることを有する方法。2前記ファームウェアモジュールに割り当てられたメモリを併合することと、前記オペレーティングシステムをブートすることとの間に、前記コンピュータシステムはリセットされない1に記載の方法。3前記ファームウェアモジュールに割り当てられたメモリは、前記ファームウェアモジュールが併合をサポートする場合に併合される1に記載の方法。4前記ファームウェアモジュールが併合をサポートする場合に、前記ファームウェアモジュールをディスパッチャに登録することを更に有し、前記ディスパッチャは、併合をサポートするファームウェアモジュールを追跡する3に記載の方法。5前記併合は、前記ファームウェアモジュールと前記ディスパッチャとのうち1つにより起動される3に記載の方法。6前記ファームウェアモジュールに割り当てられたメモリの少なくとも一部を併合することは、ファームウェアメモリマネージャにより前記併合を起動し、前記併合の結果として、前記ファームウェアモジュールの少なくとも一部の新しいメモリ位置を、前記メモリマネージャにより前記ファームウェアモジュールに通知する1に記載の方法。7前記複数のメモリ形式は、ACPIAdvancedConfigurationandPowerInterfaceメモリ形式を有する1に記載の方法。8前記ファームウェアモジュールに割り当てられたメモリの少なくとも一部を併合することは、前記ファームウェアモジュールによりデータバッファとして使用されるメモリを併合することを有する1に記載の方法。9実行されたときに、コンピュータシステムのプレブート段階中にファームウェアメモリマネージャによりファームウェアモジュールにメモリを割り当て、前記メモリは複数のメモリ形式に基づいて割り当てられ、フラグメンテーション検索プロトコルを起動し、プレブートメモリマップにより記述されるメモリのフラグメンテーションを決定し、フラグメントは同じ形式のメモリの連続ブロックを有し、前記フラグメンテーションが閾値より大きい場合に、併合プロトコルを起動し、前記複数のメモリ形式に基づいて前記ファームウェアモジュールに割り当てられたメモリの少なくとも一部を併合し、前記コンピュータシステムでオペレーティングシステムをブートすることを有する動作を実行する複数の命令を有する機械アクセス可能媒体を有する製造物。10前記併合プロトコルを起動することと、前記オペレーティングシステムをブートすることとの間に、前記コンピュータシステムはリセットされない9に記載の製造物。11前記ファームウェアモジュールは、命令部分とデータバッファ部分とを有し、前記併合プロトコルは、前記データバッファ部分を併合する9に記載の製造物。12前記ファームウェアモジュールが前記併合プロトコルをサポートするようにコード化される場合に、前記ファームウェアモジュールに割り当てられたメモリは併合される9に記載の製造物。13前記複数の命令の実行は、前記ファームウェアモジュールが前記併合プロトコルをサポートするようにコード化されている場合に、前記ファームウェアモジュールをディスパッチャに登録することを有する動作を更に実行する12に記載の製造物。14前記併合プロトコルを起動することは、前記ファームウェアメモリマネージャにより前記併合プロトコルを起動し、併合の結果としての前記ファームウェアメモリマネージャによる前記ファームウェアモジュールの少なくとも一部の新しいメモリ位置を、前記ファームウェアモジュールに通知することを有し、前記ファームウェアメモリマネージャは、前記ファームウェアモジュールから受信したファームウェアモジュールインタフェースを使用して、前記新しいメモリ位置を前記ファームウェアモジュールに通知する9に記載の製造物。15前記複数のメモリ形式は、ACPIAdvancedConfigurationandPowerInterfaceメモリ形式を有する9に記載の製造物。16前記複数の命令は、実質的にEFIExtensibleFirmwareInterface仕様に準拠する9に記載の製造物。17プロセッサと、前記プロセッサに結合されたSDRAMSynchronizedDynamicRandomAccessMemoryユニットと、前記プロセッサに結合された記憶ユニットとを有するコンピュータシステムであって、前記記憶ユニットは、前記プロセッサにより実行されたときに、前記コンピュータシステムのプレブート段階中にファームウェアモジュールにSDRAMを割り当て、前記SDRAMは複数のACPIAdvancedConfigurationandPowerInterfaceメモリ形式に基づいて割り当てられ、フラグメンテーション検索プロトコルを起動し、プレブートメモリマップにより記述された前記SDRAMのフラグメンテーションを決定し、フラグメントは、同じACPIメモリ形式のSDRAMの連続ブロックを有し、前記フラグメンテーションが閾値より大きい場合に、併合プロトコルを起動し、前記複数のACPIメモリ形式に基づいて前記ファームウェアモジュールに割り当てられたSDRAMの少なくとも一部を併合し、前記コンピュータシステムでオペレーティングシステムをブートすることを有する動作を前記プロセッサが実行する複数の命令を有するコンピュータシステム。18前記併合プロトコルを起動することと、前記オペレーティングシステムをブートすることとの間に、前記コンピュータシステムはリセットされない17に記載のシステム。19前記ファームウェアモジュールが前記併合プロトコルをサポートする場合に、前記ファームウェアモジュールに割り当てられたSDRAMは併合される17に記載のシステム。20前記併合プロトコルを起動することは、前記ファームウェアメモリマネージャにより前記併合プロトコルを起動し、前記併合プロトコルによる前記併合の結果としての前記ファームウェアモジュールの少なくとも一部の新しいメモリ位置を前記ファームウェアモジュールに通知することを有する17に記載のシステム。