JP2008525915A - メモリフラグメンテーションの低減 - Google Patents

メモリフラグメンテーションの低減 Download PDF

Info

Publication number
JP2008525915A
JP2008525915A JP2007549494A JP2007549494A JP2008525915A JP 2008525915 A JP2008525915 A JP 2008525915A JP 2007549494 A JP2007549494 A JP 2007549494A JP 2007549494 A JP2007549494 A JP 2007549494A JP 2008525915 A JP2008525915 A JP 2008525915A
Authority
JP
Japan
Prior art keywords
memory
firmware
firmware module
merging
computer system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2007549494A
Other languages
English (en)
Other versions
JP4802197B2 (ja
Inventor
ロスマン,マイケル,エイ
ジマー,ヴィンセント,ジェイ
ブルス,マリク
Original Assignee
インテル コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2008525915A publication Critical patent/JP2008525915A/ja
Application granted granted Critical
Publication of JP4802197B2 publication Critical patent/JP4802197B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Stored Programmes (AREA)
  • Memory System (AREA)

Abstract

メモリフラグメンテーションを低減する。メモリは、複数のメモリ形式に基づいて、コンピュータシステムのプレブート段階中に割り当てられる。同じ形式のメモリの連続ブロックを有するメモリが決定され、フラグメントは同じ形式のメモリの連続ブロックを有する。フラグメンテーションが閾値より大きい場合に、少なくともファームウェアモジュールに割り当てられたメモリの部分は、複数のメモリ形式に基づいて併合される。オペレーティングシステムは、コンピュータシステムによりブートされる。

Description

本発明の実施例は、コンピュータシステムの分野に関し、排他的ではないが特にメモリフラグメンテーションを低減することに関する。
典型的なコンピュータアーキテクチャでは、BIOS(Basic Input/Output System)によるコンピュータシステムの初期化及び構成は、一般的にプレブート(preboot)段階と呼ばれている。プレブート段階は、一般的に、プロセッサのリセットとオペレーティングシステム(OS:Operating System)のローダとの間で動作するファームウェアとして定義される。プレブートの開始時に、ハードディスクのような媒体からロードしたオペレーティングシステムが引き継ぐことができる時点までにシステムを初期化することは、ファームウェアのコードの役目である。OSのロードの開始は、一般的にOSランタイムとして呼ばれる期間に始まる。OSランタイムの間に、ファームウェアは、コンピュータシステムのソフトウェア及びハードウェア構成要素との間のインタフェースとして動作すると共に、システム関連のタスクを処理し得る。コンピュータが高性能になってくるにつれて、OSレベルとハードウェアレベルとの間の動作環境は、一般的にファームウェア又はファームウェア環境と呼ばれている。
プレブート中に、オペレーティングシステムに渡されるプレブート・メモリマップが形成される。プレブート・メモリマップは、システム使用に確保されたメモリアドレスと、OSに利用可能なメモリアドレスとを示す。OSは、このプレブート・メモリマップを使用し、自分のメモリ管理方式を形成する。プレブート段階の複雑性の増加のため、プレブート・メモリマップは、多数の断片化セクションをしばしば有する。今日のオペレーティングシステムの多くは、過度のフラグメンテーションを有するプレブート・メモリマップをサポートすることができない。
本発明の非限定的且つ非網羅的な実施例について、以下の図面を参照して説明する。図面において、特別の定めがない限り、同様の参照符号は様々な図面を通じて同様の部分を示す。
以下の説明では、本発明の実施例の完全な理解を提供するために、複数の特定の詳細が示されている。しかし、特定の詳細のうち1つ以上がなくても、又は他の方法、構成要素、物質等を用いて、本発明の実施例が実施され得ることを、当業者は認識する。その他に、本発明の理解をあいまいにしないように、周知の構造、物質又は動作は図示又は記載していない。
明細書を通じて“一実施例”又は“実施例”への言及は、実施例に関して説明する特定の機能、構造又は特徴が本発明の少なくとも1つの実施例に含まれることを意味する。従って、“一実施例では”又は“実施例では”という語句が明細書を通じて様々な位置に現れることは、必ずしも同じ実施例を示しているとは限らない。更に、特定の機能、構造又は特徴は、1つ以上の実施例で如何なる適切な方法で組み合わされてもよい。
ここに記載するファームウェア環境の実施例は、実質的にEFI(Extensible Firmware Interface)(http://developer.intel.com/technology/efiで入手可能なExtensible Firmware Interface Specification, Version 1.10, December 1, 2002)に従って実装されてもよい。EFIは、ドライバのようなファームウェアモジュールの形式のファームウェアが、様々な異なるリソース(フラッシュメモリ装置、オプションのROM(Read-Only Memory)、ハードディスクのような他の記憶装置、CD-ROM(Compact Disk-Read Only Memory)を含む)から又はコンピュータネットワーク上の1つ以上のコンピュータシステムからロードされることを可能にする。EFI仕様の実装の一実施例は、以下で“フレームワーク”と呼ばれるIntel(R) Platform Innovation Framework for EFI Architecture Specification − Draft for Review, Version 0.9, September 16, 2003(www.intel.com/technology/frameworkで入手可能)に記載されている。本発明の実施例は、“フレームワーク”又はEFI仕様に従った実装に限定されないことがわかる。
図1を参照すると、メモリフラグメンテーションを低減する実施例が図示されている。プレブート・メモリマップ102は、プレブート段階中の物理メモリのメモリアドレス0〜Xの割り当て(110で示す)を記述している。一実施例では、プレブート・メモリマップ102は、ACPI(Advanced Configuration and Power Interface)E820テーブル(Advanced Configuration and Power Interface Specification, version 2.0b, October 11, 2002)を有する。一般的に、E820テーブルは、何の物理メモリがOSに利用可能であるか、システムに確保されているか、又は存在しないかを記述する。
プレブート中に、様々なメモリ形式がファームウェアモジュール130-134に割り当てられる。一実施例では、ファームウェアモジュールは、一式の関係する命令(一般的にコードと呼ばれる)及び/又はデータバッファを有してもよい。図1では、ファームウェアモジュール130は、命令130Aとデータバッファ130Bとを有する。データバッファ130Bは、様々な目的で様々なデータを保管して取り出すために、命令130Aにより使用されてもよい。命令及びデータバッファは、必ずしも連続メモリアドレスに割り当てられなくてもよいが、別々のメモリアドレスブロックに存在してもよい。ファームウェアモジュールは、EFIドライバのようなドライバ、関数呼び出し、プロトコル等を有してもよい。或る実施例のファームウェアモジュールはOSランタイムに存続しなくてもよく、或るファームウェアモジュールはプレブート及びOSランタイム中に利用可能になる。
ファームウェアモジュールのロード処理中に、ファームウェアモジュールは、ファームウェアメモリマネージャ106から様々なサイズの1つ以上のメモリ形式のメモリ割り当てを要求してもよい。一実施例では、ファームウェアメモリマネージャ106は、OSランタイムに存続してもよい。ファームウェアメモリマネージャ106は、要求されたメモリ形式に対応するファームウェアモジュールのメモリアドレスを割り当ててもよい。
このメモリの割り当ては、プレブート・メモリマップ102のフラグメンテーションを生じることがある。ここで使用されるフラグメントは、特定の形式のメモリの連続ブロックを有する。図1の実施例では、リブート・メモリマップ102は、4つの形式のメモリ(形式1-4)に断片化されている。例えば、フラグメント120はメモリ形式2で構成される。
103に示す併合(coalescing)の後に、101に示すようにプレブート・メモリマップ102が併合される。併合は、同じメモリ形式が一緒に動かされ、連続ブロックを形成するように、メモリ形式に基づく。一実施例では、全てのメモリフラグメントが併合されてもよい。他の実施例では、メモリフラグメンテーションが所定の閾値レベルの下になるまで、プレブート・メモリマップが同時に1つのファームウェアモジュールに併合されてもよい(以下に説明する)。例えば図1では、形式2のメモリのフラグメント120及びフラグメント121は、形式2のメモリのフラグメント122に併合される。従って、2つのフラグメントが1つのフラグメントに併合される。
一実施例では、メモリ形式は、ACPI仕様に記載の形式を有する。これらのACPIメモリ形式を以下の表1に示す。
Figure 2008525915
ACPI準拠のシステムでは、プレブート中に、ファームウェアはE820テーブルをOSPM(Operating System-directed configuration and Power Management)に報告する。要するに、OSPMはオペレーティングシステムとACPI機能との間のインタフェースである。OSが制御を受け持つと、OSは自分のメモリマッピングを構築するためにE820テーブルを使用する。
ACPI準拠のシステムでは、ファームウェアがメモリマッピングをOSPMに伝達する様々な方法が存在する。或る方法では、プレブート・メモリマップをOSに伝達するために、IA(Intel Architecture)システムでINT 15 BIOSインタフェースが使用される。他の方法では、メモリリソースが動的に追加又は削除され得る場合に、メモリ装置は、メモリリソースにより記述されたリソース情報を伝達するACPI Namespaceに規定される。
EFI準拠のシステムでは、プレブート・メモリマップをOSローダに伝達するために、EFI Boot Services関数(GetMemoryMap())が使用されてもよい。このマッピングは、OSローダによりOSPMに伝達される。GetMemoryMap()は、様々なEFIメモリ記述子を戻す。これらのEFIメモリ記述子は、全ての設置されているRAM(Random Access Memory)及びファームウェアにより確保されている物理メモリ範囲のシステムメモリマッピングを規定する。以下の表2は、EFIメモリ形式及び対応するACPIアドレス範囲形式とのサンプリングを示している。
Figure 2008525915
ここでの実施例は、メモリフラグメンテーションを低減することを提供する。例えば、Red Hat Linux及びSuse Linuxは、32フラグメントを超えるプレブート・メモリマップをサポートしないことがある。ACPIシステムでは、これは32のE820テーブルエントリに相当する。他の例では、Windows(登録商標)サーバ・オペレーティングシステムは、64のフラグメントより大きいプレブート・メモリマップをサポートしないことがある。プラットフォームの複雑性が増加し、ファームウェア環境がロバストになってくると、フラグメンテーションは32のフラグメントを超過することがある。
ここでの実施例は、動的なプレブート・メモリマップのデフラグを提供する。静的な方式では、様々なメモリ形式の“バケツ(bucket)”が予め割り当てられ得る。プレブート中に、メモリ形式毎の使用プロファイルが、初期ブートに基づいて不揮発性記憶装置に保存されてもよい。次に、システムがリブートされ、“バケツ”が使用プロファイルに基づいて再分配される。
しかし、このような静的な方式は実用的ではない。まず、このような静的な方式は、プレブート・メモリマップのフラグメンテーションを変更し得るシステム構成の変更を提供しない。
更に、サーバのような或るプラットフォームは、5-9の“作動”要件を満たさなければならない。5-9は、サーバが99.999%の時間に利用可能でなければならないという標準的な顧客の要件である。この5-9の可用性は、1年に1分のみの許容停止時間に等しい。このような要件は、静的な方式のように、プレブート・メモリマップを併合する長いブート処理を容認することができない。ここでの実施例は、コンピュータシステムのリブートを必要とせずに、プレブート・メモリマップのデフラグを可能にする。
図2を参照すると、メモリフラグメンテーションの低減をサポートするコンピュータシステム200の実施例が図示されている。ファームウェア204はハードウェア202の上のレイヤにある。オペレーティングシステム206はファームウェア204の上のレイヤにある。
ハードウェア202は、プロセッサ210と、フラッシュメモリ212と、メモリ208とを有する。一実施例では、ここに記載するメモリフラグメンテーションを低減する機械アクセス可能命令がフラッシュメモリ212に格納される。他の実施例では、EFI仕様に実質的に準拠するメモリフラグメンテーションを低減する命令がフラッシュメモリ212に格納される。代替実施例では、フラッシュメモリ212の代わりに、又はフラッシュメモリ212に加えて、ROM(Read-Only Memory)のような他の形式の不揮発性記憶装置が使用されてもよい。
ファームウェアレイヤ204は、プレブート・メモリマップ102と、ファームウェアメモリマネージャ106と、ファームウェアモジュール130-134と、ディスパッチャ220と、閾値240とをサポートする。図2の実施例では、ファームウェアメモリマネージャ106は、併合プロトコル(coalesce protocol)216と、フラグメンテーション検索プロトコル(retrieve fragmentation protocol)218とを提供する。一実施例では、ファームウェアメモリマネージャ106と併合プロトコル216とフラグメンテーション検索プロトコル218とをサポートする命令がフラッシュメモリ212に格納される。ファームウェアメモリマネージャ106と併合プロトコル216とフラグメンテーション検索プロトコル218とについて、以下に更に説明する。
一実施例では、プレブート・メモリマップ102により記述されたメモリが併合される必要があるか否かを決定する際に、閾値240が使用される。一実施例では、閾値240は32のフラグメントに相当する。他の実施例では、閾値240は64のフラグメントに相当する。更に他の実施例では、閾値240はコンピュータシステム200の不揮発性記憶装置に他のシステム構成情報と共に格納される。このような不揮発性記憶装置は、フラッシュメモリ212、又はEFI変数を格納しているNVRAM(Non-Volatile Random Access Memory)を有してもよい。
一実施例では、ディスパッチャ220は、図4と共に以下に説明するフラグメンテーションを低減する“選択(opt-in)”の実装で使用されてもよい。フレームワークの一実施例では、ディスパッチャ220は、BDS(Boot Device Selection)プロトコルを有する。
一般的に、ディスパッチャ220は、併合プロトコルに選択を報告するファームウェアモジュールから“ハンドル(handle)”を受信する。ハンドルは、ディスパッチャ220によりファームウェアモジュールを特定して連絡する手段を提供する。ディスパッチャ220は、併合をサポートするファームウェアモジュールを登録する。
図3を参照すると、メモリフラグメンテーションを低減するフローチャート300の実施例が図示されている。ブロック302で始まり、コンピュータシステムが起動又はリセットされる。ブロック304に進み、プレブート中に、ファームウェアメモリマネージャによりメモリがファームウェア(F/W)モジュールに割り当てられる。ファームウェアモジュールが起動されると、ファームウェアモジュールは、ファームウェアメモリマネージャからメモリ形式の割り当てを要求する。ファームウェアメモリマネージャは、要求された形式のメモリアドレス範囲をファームウェアモジュールに割り当てる。
判定ブロック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及びEM64T Extended Memory 64 Technology)オペレーティングシステムは、32より多くのE820テーブルエントリをサポートしない。要するに、EM64Tは、32ビットシステムが4ギガバイトラインより上のメモリを指定することを可能にする。EFI準拠のシステムでは、E820テーブルは、基本的にはEFIメモリマップの変換であるため、E820エントリの数は、EFIファームウェアモジュールのフラグメンテーションの程度に比例する。
図6は、本発明の実施例が実装され得る例示的なコンピュータシステム600の一実施例の図である。コンピュータシステム600は、チップセット606に結合されたプロセッサ602及びメモリ604を有する。記憶装置612、不揮発性記憶装置(NVS)605、ネットワークインタフェース614及び入出力(I/O)装置618もまたチップセット606に結合されてもよい。コンピュータシステム600の実施例は、デスクトップコンピュータ、ノートブックコンピュータ、サーバ、携帯情報端末、ネットワークワークステーション等を含み、これらに限定されない。一実施例では、コンピュータシステム600は、メモリ604に結合されたプロセッサ602を少なくとも有し、プロセッサ602はメモリ604に格納された命令を実行する。
プロセッサ602は、Intel Corporationのx86、Pentium(登録商標)、Xeon(R)又はItanium(R)ファミリのプロセッサ等を有してもよいが、これらに限定されない。一実施例では、コンピュータシステム600は、複数のプロセッサを有してもよい。メモリ604は、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)、SDRAM(Synchronized Dynamic Random Access Memory)、RDRAM(Rambus Dynamic Random Access Memory)等を有してもよいが、これらに限定されない。
チップセット606は、MCH(Memory Controller Hub)、ICH(Input/Output Controller Hub)等を有してもよい。チップセット606はまた、システムクロックのサポート、電力管理のサポート、オーディオのサポート、グラフィックのサポート等を有してもよい。一実施例では、チップセット606は、プロセッサ602及びメモリ604用のソケットを有する基板に結合される。
コンピュータシステム600の構成要素は、PCI(Peripheral Component Interconnect)バス、SMBUS(System Management bus)、LPC(Low Pin Count)バス、SPI(Serial Peripheral Interface)バス、AGP(Accelerated Graphics Port)インタフェース等を含み、様々なバスにより接続されてもよい。I/O装置618は、キーボード、マウス、ディスプレイ、プリンタ、スキャナ等を有してもよい。
コンピュータシステム600は、ネットワークインタフェース614を通じて外部ネットワークにインタフェース接続してもよい。ネットワークインタフェース614は、モデム、NIC(network interface card)又はコンピュータシステムを他のコンピュータシステムに結合する他のインタフェースを有してもよいが、これらに限定されない。搬送波信号623は、ネットワークインタフェース614により受信/送信される。図6に示す実施例では、搬送波信号623は、コンピュータシステム600をネットワーク624(LAN(Local Area Network)、WAN(Wide Area Network)、インターネット又はこれらの何らかの組み合わせ等)にインタフェース接続するために使用される。一実施例では、コンピュータシステム600及びコンピュータシステム625がネットワーク624で通信し得るように、ネットワーク624はコンピュータシステム625に更に結合される。
コンピュータシステム600はまた、ファームウェア及び/又はデータが格納され得る不揮発性記憶装置605を有する。不揮発性記憶装置は、ROM(Read-Only Memory)、フラッシュメモリ、EPROM(Erasable Programmable Read Only Memory)、EEPROM(Electronically Erasable Programmable Read Only Memory)、NVRAM(Non-Volatile Random Access Memory)等を有してもよいが、これらに限定されない。記憶装置612は、磁気ハードディスク、磁気テープ、光ディスク等を有するが、これらに限定されない。プロセッサ602により実行可能な命令は、記憶装置612、メモリ604、不揮発性記憶装置605に存在してもよく、ネットワークインタフェース614を介して送信又は受信されてもよいことがわかる。
一実施例では、コンピュータシステム600は、OS(Operating System)ソフトウェアを実行してもよいことがわかる。例えば、本発明の一実施例は、コンピュータシステム600のオペレーティングシステムとして、Microsoft Windows(登録商標)を利用する。コンピュータシステム600で使用され得る他のオペレーティングシステムは、Apple Macintoshオペレーティングシステム、Linuxオペレーティングシステム、Unix(登録商標)オペレーティングシステム等を有するが、これらに限定されない。
明細書上で、機械アクセス可能媒体は、機械(例えば、コンピュータ、ネットワーク装置、携帯情報端末、製造ツール、1つ以上のプロセッサのセットを備えた何らかの装置等)により読み取り可能又はアクセス可能な形式で情報を提供(すなわち、格納及び/又は送信)する何らかの機構を有する。例えば、機械アクセス可能媒体は、記録可能/記録不可能媒体(例えば、ROM(Read-Only Memory)、RAM(Random Access Memory)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリ装置等)を有するが、これらに限定されない。更に、機械アクセス可能媒体は、電気信号、光信号、音響信号又は他の形式の伝搬信号(例えば、搬送波、赤外線信号、デジタル信号等)のような伝搬信号を有してもよい。
本発明の様々な動作の実施例について説明した。これらの動作は、プロセッサ、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)等を使用した機械により実装され得る。一実施例では、記載の動作のうち1つ以上は、機械アクセス可能媒体に格納された命令を構成してもよい。機械アクセス可能媒体に格納された命令は、機械により実行されると、機械に記載の動作を実行させる。動作の一部又は全部が記載される順序は、これらの動作が必ずしも順序に依存することを示すように解釈されるべきではない。代替の順序も、この説明の利益を享受した当業者にわかる。更に、全ての動作が本発明の各実施例に必ずしも存在するとは限らないことがわかる。
要約書に記載したものを含み、本発明の図示の実施例の前記の説明は、網羅的でなく、開示された正確な形式に実施例を限定することを意図するものではない。本発明の特定の実施例及び例が説明の目的でここに記載されているが、当業者にわかるように、様々な変更も可能である。これらの変更は、前記の詳細な説明を鑑みて、本発明の実施例に行われ得る。特許請求の範囲で使用される用語は、本発明を限定するものとして解釈されるべきではない。むしろ、特許請求の範囲は、請求項の解釈の確立した原則に従って解釈されるべきである
本発明の教示に従ってメモリフラグメンテーションを低減する一実施例を示すブロック図 本発明の教示に従ってメモリフラグメンテーションの低減をサポートする環境の一実施例を示すブロック図 本発明の教示に従ってメモリフラグメンテーションを低減するロジック及び動作の一実施例を示すフローチャート 本発明の教示に従ってメモリフラグメンテーションを低減するロジック及び動作の一実施例を示すフローチャート 本発明の教示に従ってメモリフラグメンテーションを低減するロジック及び動作の一実施例を示すフローチャート 本発明の実施例を実装するコンピュータシステムの一実施例を示すブロック図

Claims (20)

  1. コンピュータシステムのプレブート段階中にファームウェアモジュールにメモリを割り当て、前記メモリは複数のメモリ形式に基づいて割り当てられ、
    メモリのフラグメンテーションを決定し、フラグメントは同じ形式のメモリの連続ブロックを有し、
    前記フラグメンテーションが閾値より大きい場合に、前記複数のメモリ形式に基づいて前記ファームウェアモジュールに割り当てられたメモリの少なくとも一部を併合し、
    前記コンピュータシステムによりオペレーティングシステムをブートすることを有する方法。
  2. 前記ファームウェアモジュールに割り当てられたメモリを併合することと、前記オペレーティングシステムをブートすることとの間に、前記コンピュータシステムはリセットされない請求項1に記載の方法。
  3. 前記ファームウェアモジュールに割り当てられたメモリは、前記ファームウェアモジュールが併合をサポートする場合に併合される請求項1に記載の方法。
  4. 前記ファームウェアモジュールが併合をサポートする場合に、前記ファームウェアモジュールをディスパッチャに登録することを更に有し、前記ディスパッチャは、併合をサポートするファームウェアモジュールを追跡する請求項3に記載の方法。
  5. 前記併合は、前記ファームウェアモジュールと前記ディスパッチャとのうち1つにより起動される請求項3に記載の方法。
  6. 前記ファームウェアモジュールに割り当てられたメモリの少なくとも一部を併合することは、
    ファームウェアメモリマネージャにより前記併合を起動し、
    前記併合の結果として、前記ファームウェアモジュールの少なくとも一部の新しいメモリ位置を、前記メモリマネージャにより前記ファームウェアモジュールに通知する請求項1に記載の方法。
  7. 前記複数のメモリ形式は、ACPI(Advanced Configuration and Power Interface)メモリ形式を有する請求項1に記載の方法。
  8. 前記ファームウェアモジュールに割り当てられたメモリの少なくとも一部を併合することは、前記ファームウェアモジュールによりデータバッファとして使用されるメモリを併合することを有する請求項1に記載の方法。
  9. 実行されたときに、
    コンピュータシステムのプレブート段階中にファームウェアメモリマネージャによりファームウェアモジュールにメモリを割り当て、前記メモリは複数のメモリ形式に基づいて割り当てられ、
    フラグメンテーション検索プロトコルを起動し、プレブート・メモリマップにより記述されるメモリのフラグメンテーションを決定し、フラグメントは同じ形式のメモリの連続ブロックを有し、
    前記フラグメンテーションが閾値より大きい場合に、併合プロトコルを起動し、前記複数のメモリ形式に基づいて前記ファームウェアモジュールに割り当てられたメモリの少なくとも一部を併合し、
    前記コンピュータシステムでオペレーティングシステムをブートすることを有する動作を実行する複数の命令を有する機械アクセス可能媒体を有する製造物。
  10. 前記併合プロトコルを起動することと、前記オペレーティングシステムをブートすることとの間に、前記コンピュータシステムはリセットされない請求項9に記載の製造物。
  11. 前記ファームウェアモジュールは、命令部分とデータバッファ部分とを有し、
    前記併合プロトコルは、前記データバッファ部分を併合する請求項9に記載の製造物。
  12. 前記ファームウェアモジュールが前記併合プロトコルをサポートするようにコード化される場合に、前記ファームウェアモジュールに割り当てられたメモリは併合される請求項9に記載の製造物。
  13. 前記複数の命令の実行は、前記ファームウェアモジュールが前記併合プロトコルをサポートするようにコード化されている場合に、前記ファームウェアモジュールをディスパッチャに登録することを有する動作を更に実行する請求項12に記載の製造物。
  14. 前記併合プロトコルを起動することは、
    前記ファームウェアメモリマネージャにより前記併合プロトコルを起動し、
    併合の結果としての前記ファームウェアメモリマネージャによる前記ファームウェアモジュールの少なくとも一部の新しいメモリ位置を、前記ファームウェアモジュールに通知することを有し、
    前記ファームウェアメモリマネージャは、前記ファームウェアモジュールから受信したファームウェアモジュールインタフェースを使用して、前記新しいメモリ位置を前記ファームウェアモジュールに通知する請求項9に記載の製造物。
  15. 前記複数のメモリ形式は、ACPI(Advanced Configuration and Power Interface)メモリ形式を有する請求項9に記載の製造物。
  16. 前記複数の命令は、実質的にEFI(Extensible Firmware Interface)仕様に準拠する請求項9に記載の製造物。
  17. プロセッサと、
    前記プロセッサに結合されたSDRAM(Synchronized Dynamic Random Access Memory)ユニットと、
    前記プロセッサに結合された記憶ユニットと
    を有するコンピュータシステムであって、
    前記記憶ユニットは、前記プロセッサにより実行されたときに、
    前記コンピュータシステムのプレブート段階中にファームウェアモジュールにSDRAMを割り当て、前記SDRAMは複数のACPI(Advanced Configuration and Power Interface)メモリ形式に基づいて割り当てられ、
    フラグメンテーション検索プロトコルを起動し、プレブート・メモリマップにより記述された前記SDRAMのフラグメンテーションを決定し、フラグメントは、同じACPIメモリ形式のSDRAMの連続ブロックを有し、
    前記フラグメンテーションが閾値より大きい場合に、併合プロトコルを起動し、前記複数のACPIメモリ形式に基づいて前記ファームウェアモジュールに割り当てられたSDRAMの少なくとも一部を併合し、
    前記コンピュータシステムでオペレーティングシステムをブートすることを有する動作を前記プロセッサが実行する複数の命令を有するコンピュータシステム。
  18. 前記併合プロトコルを起動することと、前記オペレーティングシステムをブートすることとの間に、前記コンピュータシステムはリセットされない請求項17に記載のシステム。
  19. 前記ファームウェアモジュールが前記併合プロトコルをサポートする場合に、前記ファームウェアモジュールに割り当てられたSDRAMは併合される請求項17に記載のシステム。
  20. 前記併合プロトコルを起動することは、
    前記ファームウェアメモリマネージャにより前記併合プロトコルを起動し、
    前記併合プロトコルによる前記併合の結果としての前記ファームウェアモジュールの少なくとも一部の新しいメモリ位置を前記ファームウェアモジュールに通知することを有する請求項17に記載のシステム。
JP2007549494A 2004-12-30 2005-12-21 メモリフラグメンテーションの低減 Expired - Fee Related JP4802197B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/027,715 US7278006B2 (en) 2004-12-30 2004-12-30 Reducing memory fragmentation
US11/027,715 2004-12-30
PCT/US2005/046576 WO2006073864A1 (en) 2004-12-30 2005-12-21 Reducing memory fragmentation

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2011145502A Division JP5167387B2 (ja) 2004-12-30 2011-06-30 メモリフラグメンテーションの低減

Publications (2)

Publication Number Publication Date
JP2008525915A true JP2008525915A (ja) 2008-07-17
JP4802197B2 JP4802197B2 (ja) 2011-10-26

Family

ID=36284019

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2007549494A Expired - Fee Related JP4802197B2 (ja) 2004-12-30 2005-12-21 メモリフラグメンテーションの低減
JP2011145502A Expired - Fee Related JP5167387B2 (ja) 2004-12-30 2011-06-30 メモリフラグメンテーションの低減

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2011145502A Expired - Fee Related JP5167387B2 (ja) 2004-12-30 2011-06-30 メモリフラグメンテーションの低減

Country Status (6)

Country Link
US (1) US7278006B2 (ja)
EP (1) EP1839140B1 (ja)
JP (2) JP4802197B2 (ja)
KR (1) KR100907722B1 (ja)
CN (1) CN100583035C (ja)
WO (1) WO2006073864A1 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7620769B2 (en) * 2000-01-06 2009-11-17 Super Talent Electronics, Inc. Recycling partially-stale flash blocks using a sliding window for multi-level-cell (MLC) flash memory
US20040078539A1 (en) * 2002-10-18 2004-04-22 Fulghum Patrick W. De-fragmenting memory by re-booting based on time
US7702757B2 (en) 2004-04-07 2010-04-20 Xiotech Corporation Method, apparatus and program storage device for providing control to a networked storage architecture
US7278006B2 (en) 2004-12-30 2007-10-02 Intel Corporation Reducing memory fragmentation
KR101355193B1 (ko) * 2007-12-11 2014-01-27 삼성전자주식회사 실시간 임베디드 시스템의 메모리 관리 장치 및 메모리할당/해제/관리 방법
US20100011176A1 (en) * 2008-07-11 2010-01-14 Burkey Todd R Performance of binary bulk IO operations on virtual disks by interleaving
US9792451B2 (en) * 2011-12-09 2017-10-17 Echarge2 Corporation System and methods for using cipher objects to protect data
US12072989B2 (en) 2011-12-09 2024-08-27 Sertainty Corporation System and methods for using cipher objects to protect data
US9811472B2 (en) 2012-06-14 2017-11-07 International Business Machines Corporation Radix table translation of memory
US9753860B2 (en) * 2012-06-14 2017-09-05 International Business Machines Corporation Page table entry consolidation
US9092359B2 (en) * 2012-06-14 2015-07-28 International Business Machines Corporation Identification and consolidation of page table entries
US9292337B2 (en) * 2013-12-12 2016-03-22 International Business Machines Corporation Software enabled and disabled coalescing of memory transactions
US9146774B2 (en) * 2013-12-12 2015-09-29 International Business Machines Corporation Coalescing memory transactions
US9348523B2 (en) * 2013-12-12 2016-05-24 International Business Machines Corporation Code optimization to enable and disable coalescing of memory transactions
US9348522B2 (en) * 2013-12-12 2016-05-24 International Business Machines Corporation Software indications and hints for coalescing memory transactions
KR102586628B1 (ko) 2015-06-05 2023-10-11 삼성전자 주식회사 전자 장치 및 전자 장치의 메모리 관리 방법
WO2017152037A1 (en) 2016-03-04 2017-09-08 1Usf, Inc. Systems and methods for media codecs and containers
US10303487B2 (en) * 2016-05-18 2019-05-28 Dell Products, L.P. System and method for booting an information handling system
US11113188B2 (en) 2019-08-21 2021-09-07 Microsoft Technology Licensing, Llc Data preservation using memory aperture flush order

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59146355A (ja) * 1983-02-09 1984-08-22 Hitachi Ltd 直接アクセス記憶装置のデ−タセツト再編成方法
JPS6362053A (ja) * 1986-09-03 1988-03-18 Fujitsu Ltd ガ−ベジコレクシヨン処理方式
JPH09231069A (ja) * 1996-02-22 1997-09-05 Canon Inc 情報処理方法及び装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5963982A (en) * 1997-07-02 1999-10-05 Webtv Networks, Inc. Defragmentation of stored data without pointer indirection
US6324631B1 (en) * 1999-06-17 2001-11-27 International Business Machines Corporation Method and system for detecting and coalescing free areas during garbage collection
US6496913B1 (en) 2000-02-22 2002-12-17 Hewlett-Packard Company System and method for detecting and correcting fragmentation on optical storage media
US6832303B2 (en) * 2002-01-03 2004-12-14 Hewlett-Packard Development Company, L.P. Method and system for managing an allocation of a portion of a memory
US7100009B2 (en) * 2003-09-18 2006-08-29 International Business Machines Corporation Method and system for selective memory coalescing across memory heap boundaries
US7278006B2 (en) 2004-12-30 2007-10-02 Intel Corporation Reducing memory fragmentation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59146355A (ja) * 1983-02-09 1984-08-22 Hitachi Ltd 直接アクセス記憶装置のデ−タセツト再編成方法
JPS6362053A (ja) * 1986-09-03 1988-03-18 Fujitsu Ltd ガ−ベジコレクシヨン処理方式
JPH09231069A (ja) * 1996-02-22 1997-09-05 Canon Inc 情報処理方法及び装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSND200401684010, 白崎博生, "「連載 FreeBSDのブートプロセスをみる 7 getmemsize」", UNIX MAGAZINE, 20040501, 2004年5月号(第19巻第5号), 第163〜173頁, JP, 株式会社アスキー *
CSND200500037007, "「今回の目からウロコ その2 インテルが新BIOS構想? BIOSの問題点と未来」", DOS/V magazine, 20040715, 第13巻第13号(通巻第257号), 第206〜207頁, JP, ソフトバンクパブリッシング(株) *

Also Published As

Publication number Publication date
JP2011238265A (ja) 2011-11-24
KR20070086786A (ko) 2007-08-27
US7278006B2 (en) 2007-10-02
WO2006073864A1 (en) 2006-07-13
EP1839140A1 (en) 2007-10-03
CN101088069A (zh) 2007-12-12
CN100583035C (zh) 2010-01-20
EP1839140B1 (en) 2013-08-07
KR100907722B1 (ko) 2009-07-14
JP4802197B2 (ja) 2011-10-26
JP5167387B2 (ja) 2013-03-21
US20060149913A1 (en) 2006-07-06

Similar Documents

Publication Publication Date Title
JP5167387B2 (ja) メモリフラグメンテーションの低減
US7082509B2 (en) Method and system for allocating memory during system boot to reduce operating system memory resource consumption at run-time
JP4831759B2 (ja) Dmaアドレス空間を割当てるための方法、システム、およびコンピュータ・プログラム
EP2259181A1 (en) Methods and systems for providing a level of access to a computing device
US8539214B1 (en) Execution of a program module within both a PEI phase and a DXE phase of an EFI firmware
US10318460B2 (en) UMA-aware root bus selection
JP5011584B2 (ja) ハードウェアデバイスをヘテロジニアス処理ユニット間でバインドし移行するためのチップセットサポート
US11263019B2 (en) Method for converting device tree data into ACPI data for edge device operating in a network
US7840792B2 (en) Utilizing hand-off blocks in system management mode to allow independent initialization of SMBASE between PEI and DXE phases
JP3327827B2 (ja) コンピュータ・システム内でバス・アドレスを動的に変換する方法及びシステム
US6868507B1 (en) Operating system independent
US7873807B1 (en) Relocating a program module from NVRAM to RAM during the PEI phase of an EFI-compatible firmware
US20050283599A1 (en) Exposing BIOS information to an ACPI aware operating system
US7577814B1 (en) Firmware memory management
US7103767B2 (en) Method and apparatus to support legacy master boot record (MBR) partitions
US20040123301A1 (en) Method and system for minimizing memory access latency in a computer system
US6832304B2 (en) System, method and computer program product for mapping system memory in a multiple node information handling system
US10185571B2 (en) Intelligent UEFI run-time services address space management
US8813075B2 (en) Virtual computer system and method of installing virtual computer system
US7240187B2 (en) Method and apparatus to support legacy master boot record (MBR) partitions
JP3693240B2 (ja) 異なる操作モードを利用してアダプタ構成ルーチンを実行する方法およびシステム
US11853799B2 (en) Initialization data memory space allocation system
US20090216987A1 (en) Method and apparatus for allocating host memory for a memory-less add-on devices
KR20050079579A (ko) 컴퓨터 부팅 속도 향상 방법 및 이를 이용한 시스템

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100810

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101109

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110301

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110630

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20110705

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110726

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110808

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140812

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4802197

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees