JP2015079511A - システムとモバイルコンピューティング装置 - Google Patents

システムとモバイルコンピューティング装置 Download PDF

Info

Publication number
JP2015079511A
JP2015079511A JP2014210919A JP2014210919A JP2015079511A JP 2015079511 A JP2015079511 A JP 2015079511A JP 2014210919 A JP2014210919 A JP 2014210919A JP 2014210919 A JP2014210919 A JP 2014210919A JP 2015079511 A JP2015079511 A JP 2015079511A
Authority
JP
Japan
Prior art keywords
memory
application
allocation request
dram
value
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.)
Pending
Application number
JP2014210919A
Other languages
English (en)
Inventor
富 珍 金
Pu Jin Kim
富 珍 金
姜 南 朴
Kang Nam Park
姜 南 朴
聖 煥 尹
Seong Hwan Yoon
聖 煥 尹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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
Priority claimed from US14/242,634 external-priority patent/US20140215177A1/en
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2015079511A publication Critical patent/JP2015079511A/ja
Pending legal-status Critical Current

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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Power Sources (AREA)

Abstract

【課題】性能偏差を減らし得るシステムとモバイルコンピューティング装置とを提供する。【解決手段】本発明のシステムは、プロセッサと、プロセッサに接続された第1メモリ及び第2メモリと、メモリ割り当て要請を受信するメモリ管理モジュールと、を含み、第1メモリ及び第2メモリのそれぞれは、帯域幅と消費電力とのうちから1つを含むハードウェア属性を有し、第1メモリのハードウェア属性の第1値は、第2メモリのハードウェア属性の第2値と互いに異なり、メモリ管理モジュールは、第1値及び第2値に基づいたメモリ割り当て要請に応答して、メモリ領域を第1メモリまたは第2メモリに割り当てる。【選択図】 図5A

Description

本発明は、メモリ管理技術に係り、特に、異種のメモリを管理する方法とシステムとに関する。
メモリ管理(memory management)とは、コンピュータで使用可能なメモリ領域を管理する方法である。最も単純な形態のメモリ管理は、プログラムによる要請がある時、メモリの一部領域をプログラムに割り当て(allocate)、メモリの一部領域に対する割り当てがこれ以上必要ではない時、後で一部領域を再び使用できるように、一部領域に対する割り当てを解除することである。メインメモリに対する管理は、コンピュータシステムにおいて必須である。
米国特許公開第2012/0144111号公報 米国特許第8423727号公報 米国特許公開第2013/0111221号公報 米国特許公開第2012/0137055号公報 米国特許公開第2012/0117320号公報 米国特許公開第2011/0035548号公報 米国特許公開第2010/0037017号公報 米国特許第8433686号公報 米国特許第7584335号公報 米国特許第6292874号公報 米国特許公開第2011/0283071号公報
本発明が解決しようとする技術的な課題は、異種のメモリのそれぞれのハードウェア特性を用いてアプリケーションが使うメモリ領域を異種のメモリのうちから何れか1つに割り当てることによって、性能(performance)を向上させ、性能偏差(performance deviation)を減らしうる異種のメモリを管理する方法と、該方法を行うシステムと、を提供することにある。
本発明の実施形態によるシステムは、プロセッサと、前記プロセッサに接続された第1メモリ及び第2メモリと、メモリ割り当て要請を受信するメモリ管理モジュールと、を含み、前記第1メモリと前記第2メモリのそれぞれは、帯域幅と消費電力とのうちから1つを含むハードウェア属性を有し、前記第1メモリの前記ハードウェア属性の第1値は、前記第2メモリの前記ハードウェア属性の第2値と互いに異なり、前記メモリ管理モジュールは、前記第1値及び前記第2値に基づいた前記メモリ割り当て要請に応答して、メモリ領域を前記第1メモリまたは前記第2メモリに割り当てる。
前記第1メモリの前記帯域幅及び前記消費電力を含む前記第1値は、前記第2メモリの前記帯域幅及び前記消費電力を含む前記第2値と互いに異なる。前記システムは、前記第1メモリを制御する第1メモリコントローラと、前記第2メモリを制御する第2メモリコントローラと、をさらに含む。前記第1メモリコントローラと前記第2メモリコントローラは、前記プロセッサを含む1つのチップに具現される。
実施形態によって、前記メモリ割り当て要請は、ハードウェア属性レベルを明示(specifies)し、前記メモリ管理モジュールは、前記メモリ割り当て要請で明示された前記ハードウェア属性レベルに基づいて、前記メモリ領域を前記第1メモリまたは前記第2メモリに割り当てる。前記ハードウェア属性は、前記帯域幅、前記消費電力、及びレイテンシのうちから1つを含む。
他の実施形態によって、前記メモリ管理モジュールは、前記メモリ割り当て要請を出力したアプリケーションのアプリケーションタイプに基づいて、前記メモリ領域を前記第1メモリまたは前記第2メモリに割り当てる。
さらに他の実施形態によって、前記メモリ管理モジュールは、前記第1値及び前記第2値に基づいた前記メモリ割り当て要請に応答して、前記メモリ領域を前記第1メモリまたは前記第2メモリに割り当て、前記第1値と前記第2値のそれぞれは、前記第1メモリと前記第2メモリのそれぞれの前記帯域幅、前記消費電力、及びレイテンシのうちから少なくとも1つを含む。さらに他の実施形態によって、前記メモリ管理モジュールは、前記第1値、前記第2値、前記メモリ割り当て要請を出力したアプリケーションの配定優先権(priority)に基づいた前記メモリ割り当て要請に応答して、前記メモリ領域を前記第1メモリまたは前記第2メモリに割り当てる。
さらに他の実施形態によって、前記メモリ管理モジュールは、第1配定優先権を有する第1アプリケーションから出力された前記メモリ割り当て要請に応答して、前記メモリ領域が、前記第1メモリで割り当てられなければならないという決定と、前記第1アプリケーションから出力された前記メモリ割り当て要請を満足するために、前記第1メモリで利用可能な自由メモリ領域が十分ではないという決定と、に基づいて、前記第1配定優先権よりも低い第2配定優先権を有する第2アプリケーションのために、前記第1メモリで既に割り当てられたバッファを前記第2メモリに移送し、次いで、前記メモリ割り当て要請に応答して、前記第1メモリの前記メモリ領域を前記第1アプリケーションに割り当てる。
さらに他の実施形態によって、前記メモリ管理モジュールは、前記バッファに対して十分なメモリ領域が前記第1メモリで使用可能になった時、前記第2アプリケーションのために割り当てられた前記バッファを前記第1メモリに移送する。
さらに他の実施形態によって、前記メモリ管理モジュールは、第1配定優先権を有する第1アプリケーションから出力された前記メモリ割り当て要請に応答して、前記メモリ領域が、前記第1メモリに割り当てられなければならないという決定と、前記第1アプリケーションから出力された前記メモリ割り当て要請を満足するために、前記第1メモリで利用可能な自由メモリ領域が十分ではないという決定と、に基づいて、前記第1配定優先権よりも低い第2配定優先権を有し、前記第1メモリで割り当てられたメモリ領域を有する第2アプリケーションをキル(kill)し、次いで、前記メモリ割り当て要請に応答して、前記第1メモリの前記メモリ領域を前記第1アプリケーションに割り当てる。
前記第1メモリ、前記第2メモリ、前記プロセッサのそれぞれは、互いに異なるチップに具現されうる。前記第1メモリと前記プロセッサは、第1パッケージとして具現され、前記第2メモリは、前記第1パッケージと互いに異なる第2パッケージとして具現可能である。
前記第1メモリは、TSV(Through Silicon Via)を通じて前記プロセッサと接続されうる。前記第1メモリは、WIDE I/O DRAMであり、第2メモリは、DRAMであり得る。
本発明の実施形態によるモバイルコンピューティング装置(mobile computing device)は、プロセッサと、前記プロセッサに接続されたディスプレイコントローラと、前記プロセッサに接続された第1メモリコントローラ及び第2メモリコントローラと、それぞれが前記第1メモリコントローラと前記第2メモリコントローラのそれぞれに接続された第1DRAM及び第2DRAMと、メモリ割り当て要請を受信するメモリ管理モジュールと、を含み、前記第1DRAMと前記第DRAMのそれぞれは、ハードウェア属性を有し、前記第1DRAMの前記ハードウェア属性の第1値は、前記第2DRAMの前記ハードウェア属性の第2値と互いに異なり、前記メモリ管理モジュールは、前記メモリ割り当て要請、前記第1値、及び前記第2値に応答してメモリを割り当てる。
前記ハードウェア属性は、帯域幅、消費電力、及びレイテンシを含む。
前記第1DRAM、前記第2DRAM、及び前記プロセッサのそれぞれは、互いに異なるチップに具現されうる。前記第1DRAMは、WIDE I/O DRAMであり、前記第2DRAMは、LPDDR(Low Power Double Data Rate)DRAMであり得る。
本発明の実施形態による方法と、該方法を行うシステムは、異種のメモリのそれぞれのハードウェア属性を用いて、実行されるアプリケーションによって使われるメモリ領域を異種のメモリのうちから何れか1つに割り当てることによって、システムの性能を向上させ、性能偏差を減らしうる。
本発明の実施形態による異種のメモリを含むシステムのブロック図。 図1に示されたシステムのメモリ管理方法の一実施形態を説明する概念図。 図1に示されたシステムのメモリ管理方法の他の実施形態を説明する概念図。 図1に示されたシステムのメモリ領域割り当て方法を説明するフローチャート。 図1に示されたシステムでハードウェア属性情報に基づいてメモリ領域を割り当てる方法の一実施形態を説明するフローチャート。 図1に示されたシステムでハードウェア属性情報に基づいてメモリ領域を割り当てる方法の他の実施形態を説明するフローチャート。 図1に示されたシステムでハードウェア属性情報に基づいてメモリ領域を割り当てる方法のさらに他の実施形態を説明するフローチャート。 図1に示されたシステムで行われる移送動作を説明する概念図。 図1に示されたシステムで行われるキルリング動作を説明する概念図。 図6と図7とに示された移送動作とキルリング動作とを説明するフローチャート。 従来のアプリケーションのランチング時間の偏差と、本発明の実施形態によるメモリ管理プログラムを利用したアプリケーションのランチング時間の偏差と、を示すグラフ。 従来のアプリケーションのランチング時間の偏差と、本発明の実施形態によるメモリ管理プログラムを利用したアプリケーションのランチング時間の偏差と、を示すグラフ。 従来のアプリケーションのランチング時間の偏差と、本発明の実施形態によるメモリ管理プログラムを利用したアプリケーションのランチング時間の偏差と、を示すグラフ。 従来のアプリケーションのランチング時間の偏差と、本発明の実施形態によるメモリ管理プログラムを利用したアプリケーションのランチング時間の偏差と、を示すグラフ。 図1に示されたシステムの構造を示す断面図の一実施形態。 図1に示されたシステムの構造を示す断面図の他の実施形態。 図1に示されたシステムの構造を示す断面図のさらに他の実施形態。 異種のメモリに対するレイテンシと帯域幅とを示すグラフ。 異種のメモリに対するレイテンシと帯域幅とを示すグラフ。
異種のメモリは、互いに異なる動作特性を有するメモリ、例えば、フラッシュメモリとDRAMなどを含む。たとえコンピュータシステムの多様な他種がメモリの他種を支援しても、現存するメモリ管理スキーム(schemes)は、バッファ割り当て要請(buffer allocation request)のようなメモリ割り当て要請が実行される時、多種のメモリの間で区別しない。
したがって、バッファ割り当て要請は、メモリ領域の完全に使われていない部分内で、どこでもメモリの割り当てを引き起こし得る。すなわち、他の特性を有する2種のメモリを有するシステムで、バッファ割り当て要請は、2種のメモリの如何なる部分からも満足することができる。この場合、アプリケーション(application)またはドライバ(driver)からのバッファ割り当てのための要請は、システムの全般的な性能を減少させうるアプリケーションまたはドライバによって生成されたメモリアクセスの種類に最もよく整合するメモリの領域に割り当てられないこともある。
本発明は、メモリの特性を考慮して、互いに異なる種類のメモリに領域を割り当てられるシステムと方法とを提供することである。
図1は、本発明の実施形態による異種のメモリを含むシステムのブロック図を示す。図1を参照すれば、システム100は、PC(Personal Computer)、サーバ(server)または携帯用電子装置(モバイル(mobile)装置またはモバイルコンピューティング(mobile computing)装置)として具現可能である。
携帯用電子装置は、ラップトップコンピュータ(laptop computer)、携帯電話、スマートフォン(smart phone)、タブレット(Tablet)PC、PDA(Personal Digital Assistant)、EDA(Enterprise Digital Assistant)、デジタルスチルカメラ(Digital Still Camera)、デジタルビデオカメラ(Digital VideoCamera)、PMP(Portable Multimedia Player)、PND(Personal Navigation DeviceまたはPortableNavigation Device)、携帯用ゲームコンソール(handheld game console)、モバイルインターネット装置(Mobile Internet Device;MID)、ウェアラブルコンピュータ、または電子ブック(e−book)として具現可能である。
システム100は、コントロール回路200、第1メモリ300、第2メモリ400、第3メモリ500、及びディスプレイ600を含む。
コントロール回路200は、第1メモリ300、第2メモリ400、第3メモリ500、及びディスプレイ600のそれぞれの動作を制御することができる。実施形態によって、コントロール回路200は、応用プロセッサ(Application Processor;AP)のような集積回路(IC)、システム・オン・チップ(System on Chip;SoC)、ハードウェア、または印刷回路基板(Printed CircuitBoard;PCB)として具現可能である。システム100が携帯用電子装置として具現される時、コントロール回路200は、モバイルアプリケーションプロセッサ(mobile application processor)として具現可能である。
コントロール回路200は、バス201、CPU(Central Processing Unit)210、第1メモリコントローラ220、第2メモリコントローラ230、第3メモリコントローラ240、複数のマルチメディアハードウェアIP(multimedia hardware intellectual properties;IPs)250−1、250−2、及びディスプレイコントローラ260を含む。
CPU210は、バス201を通じて各構成要素220、230、240、250−1、250−2、及び260の動作を制御することができる。CPU210は、複数のコアを含むマルチコアプロセッサとして具現可能である。
第1メモリコントローラ220は、対応するプログラム及び/または対応するデータを第1メモリ300にライトする動作及び第1メモリ300から対応するプログラム及び/または対応するデータをリードする動作を制御することができる。第2メモリコントローラ230は、対応するプログラム及び/または対応するデータを第2メモリ400にライトする動作及び第2メモリ400から対応するプログラム及び/または対応するデータをリードする動作を制御することができる。
第1メモリ300は、第1ハードウェア特性(または、属性(attribute))を有するメモリとして具現され、第2メモリ400は、第2ハードウェア特性(または、属性)を有するメモリとして具現可能である。特に、第1ハードウェア特性と第2ハードウェア特性は、帯域幅(bandwidth)、レイテンシ(latency)、及び/またはメモリの消費電力を含みうる。
例えば、第1メモリ300は、WIDE I/O DRAM(Dynamic Random Access Memory)として具現可能である。WIDE I/O DRAMに関連した内容は、“JEDEC STANDARD WIDE I/O SINGLE DATA RATE(WIDE I/O SDR)、JESD229、December 2011”に詳細に記載されており、本明細書は、JESD229に記載のあらゆる内容をレファレンス(reference)として含む。例えば、WIDE I/O DRAMの帯域幅は、12.8Gbyte/sであり得るが、本発明の技術的思想が、これに限定されるものではない。
第2メモリ400は、LPDDR DRAMとして具現可能である。LPDDR DRAMに関連した内容は、“JEDEC STANDARD LOW POWER DOUBLE DATE RATE 3 SDRAM(LPDDR3)、JESD209−3、May 2012”に詳細に記載されており、本明細書は、JESD209−3に記載のあらゆる内容をレファレンスとして含む。例えば、第2メモリ400の帯域幅は、6.4Gbyte/sであり得るが、本発明の技術的思想が、これに限定されるものではない。例えば、LPDDR DRAMは、LPDDRx DRAMを含み、xは、1、2、または3のような自然数である。
上述したように、第1メモリ300の帯域幅は、第2メモリ400の帯域幅よりも高いか、広い。しかし、第1メモリ300のレイテンシは、第2メモリ400のレイテンシよりも大きい。実施形態によって、第1メモリ300の消費電力は、第2メモリ400の消費電力よりも低い。
第1メモリ及び第2メモリのそれぞれのレイテンシと帯域幅は、図16Aと図16Bのそれぞれに示される。レイテンシ(または、待機時間)は、要請を受けた後、情報を伝達するメモリのための時間の量を意味する。すなわち、速い応答時間を有するメモリは、低い(low)レイテンシを有し、遅い応答時間を有するメモリは、高い(high)レイテンシを有する。
図16Aを参照すれば、時間0でメモリアクセス要請が第1メモリ300に受信されると仮定すれば、第1メモリ300は、T1の応答時間を有する。したがって、情報は、帯域幅BW1で第1メモリ300から伝送される。図16Bを参照すれば、第2メモリ400は、T2の応答時間を有する。したがって、情報は、帯域幅BW2で第2メモリ400から伝送される。
T1がT2よりも大きいために、第1メモリ300は、第2メモリ400よりもさらに高いレイテンシ(すなわち、さらに遅れた応答時間)を有する。しかし、BW1がBW2よりも大きいために、第1メモリ300によって伝送されるデータの帯域幅は、第2メモリ400によって伝送されるデータの帯域幅よりもさらに大きい。すなわち、互いに対して、第2メモリ400は、低いレイテンシ、低い帯域幅メモリと特徴づけられ、一方、第1メモリ300は、高いレイテンシ、高い帯域幅メモリと特徴づけられる。しかし、前述したことは、単に実施形態であり、本発明の技術的思想が、これに限定されるものではない。
第1メモリ300及び第2メモリ400のそれぞれは、メイン(mainまたはprimary)メモリとして使われる。実施形態によって、第1メモリ300及び第2メモリ400のそれぞれは、互いに異なる種類の揮発性メモリとして具現可能である。
揮発性メモリは、DRAM、SRAM(Static Random Access Memory)、T−RAM(Thyristor RAM)、Z−RAM(Zerocapacitor RAM)、またはTTRAM(Twin Transistor RAM)のように現存する揮発性メモリ(volatile memory)と現在開発中である揮発性メモリとを含む。
図1を再び参照すれば、第1メモリ300及び第2メモリ400のそれぞれが互いに分離されて示されているが、実施形態によって、第1メモリ300及び第2メモリ400は、TSVのような手段を通じて互いに電気的に接続されるか、1つのパッケージとしてパッケージングされうる。他の実施形態によって、パッケージは、コントロール回路200上に積層された第1メモリ300及び第2メモリ400を含みうる。例えば、各構成要素200、300、及び400が積層される順序は、実施形態によって多様に変形されうる。
第3メモリコントローラ240は、対応するプログラム及び/または対応するデータを第3メモリ500にライトする動作及び第3メモリ500から対応するプログラム及び/または対応するデータをリードする動作を制御することができる。第3メモリ500は、補助(auxiliaryまたはsecondary)メモリ装置として具現可能である。第3メモリ500は、フラッシュベースメモリ、MMC(multimedia card)、eMMC(embedded MMC)、UFS(Universal FlashStorage)、ソリッドステートドライブ(Solid State Drive;SSD)、eSSD(embedded SSD)、またはハードディスクドライブ(Hard Disc Drive)として具現可能である。第3メモリ500は、不揮発性メモリの集合を意味する。不揮発性メモリは、同種のメモリまたは互いに異なる種類のメモリとして具現可能である。
図1には、説明の便宜上、2つのマルチメディアハードウェアIP(または、マルチメディア回路)250−1、250−2が示されているが、これは例示的なものに過ぎない。
例えば、マルチメディアハードウェアIP(Multimedia HardwareIntellectual Property;IP)は、ビデオコーデック(Video Codec)またはマルチフォーマットコーデック(Multi Format Codec;MFC)として具現可能である。ビデオコーデックは、デジタルビデオデータを圧縮(compress)するか、圧縮解除(de−compress)することができるハードウェアを意味する。
また、マルチメディアハードウェアIP(または、回路)は、JPEG標準を支援するハードウェア、スケーラ(scaler)、ローテータ(rotator)、マルチメディアのためのハードウェアアクセラレータ(Hardware Accelerator)、3Dグラフィックスエンジン(3D graphics engine)、2Dグラフィックスエンジン、またはMP3プレーヤなどとして具現可能である。
ディスプレイコントローラ260は、ディスプレイ600の動作を制御することができる。例えば、ディスプレイコントローラ260は、複数のマルチメディアハードウェアIP250−1、250−2のうちの何れか1つから出力されたマルチメディアデータ、例えば、イメージデータまたは3Dイメージデータをディスプレイすることができる。
実施形態によって、ディスプレイコントローラ260は、タッチ入力(touch input)のためのタッチスクリーン(または、タッチスクリーンパネル)610を含みうる。ユーザは、タッチスクリーン610を用いてアプリケーションまたはプログラムを選択することができる。実施形態によって、タッチスクリーン610の動作を制御することができるタッチスクリーンコントローラ(図示せず)は、コントロール回路200の内部に、またはディスプレイ600の内部に具現されうる。
図2は、図1に示されたシステムのメモリ管理方法の一実施形態を説明する概念図であり、図3は、図1に示されたシステムのメモリ管理方法の他の実施形態を説明する概念図であり、図4は、図1に示されたシステムのメモリ領域割り当て方法を説明するフローチャートである。
図1から図4を参照すれば、システム100がブーティング(booting)される時(ステップS100)、第3メモリ500に保存された運用体制(Operating System;OS)、及び/またはプログラムは、構成要素210、220、及び/または240の制御によって第1メモリ300にロード(load)される(ステップS110)。
OSは、Android、BSD(Berkeley Software Distribution)、iOS、Linux(登録商標)、OS X、QNX、Symbian、Microsoft Windows(登録商標)、Windows Phone、及びIBM z/OS、または他の適したOSを含みうる。
例えば、カーネル(kernel)OS、メモリ管理プログラム311、ハードウェア属性(特性)情報313、少なくとも1つの装置ドライバ315、及び少なくとも1つのスケジューラ317は、構成要素210、220、及び/または240の制御によって第3メモリ500から第1メモリ300のカーネル領域310の各メモリ領域にロードされうる。第1メモリ300は、カーネル領域310とユーザデータを保存することができるユーザデータ領域320とを含む。
ハードウェア属性情報313は、各メモリ300、400の帯域幅、各メモリ300、400のレイテンシ、及び/または各メモリ300、400の消費電力についての情報を含み、アップデート可能なテーブルとして具現可能である。ハードウェア属性情報313は、構成要素210、220、及び/または240の制御によって第3メモリ500から第1メモリ300のカーネル領域310のメモリ領域にロードされうる。
次いで、メモリ管理プログラム311とハードウェア属性情報313は、CPU210にロードされる(ステップS120)。実施形態によって、ハードウェア属性情報313は、メモリ管理プログラム311に含まれて、または独立してCPU210にロードされる(ステップS120)。例えば、メモリ管理プログラム311とハードウェア属性情報313は、CPU210のL1キャッシュの命令キャッシュ(instruction cache)にロードされうる(ステップS10)。
1つまたはそれ以上のアプリケーション及び/または1つまたはそれ以上の装置ドライバが実行される時、メモリ管理プログラム311は、メモリ割り当てとメモリ管理とを行うことができる。実施形態によって、メモリ管理プログラム311は、メモリ管理モジュールの機能を行うことができる。
本明細書でモジュール(module)とは、本明細書で説明されるそれぞれの名称による機能と動作とを行うハードウェアを意味することもあり、または特定の機能と動作とを行うコンピュータプログラムコードを意味することもあり、または特定の機能と動作とを行わせるコンピュータプログラムコード付き電磁的記録媒体、例えば、プロセッサを意味することもある。言い換えれば、モジュールとは、本発明の技術的思想を行うためのハードウェア及び/またはハードウェアを駆動するためのソフトウェアの機能的及び/または構造的結合を意味する。
アプリケーションは、対応する装置ドライバ(例えば、マルチメディアドライバ)の駆動を要しない第1タイプアプリケーションと、対応する装置ドライバの駆動を必要とする第2タイプアプリケーションと、を含む。
図2を参照すれば、ユーザがアプリケーション410、例えば、第1タイプアプリケーションAPP1を実行させれば(ステップS130)、第2メモリ400に保存された第1タイプアプリケーションAPP1は、CPU210にロードされる(ステップS20)。例えば、第1タイプアプリケーションAPP1は、L1キャッシュの命令キャッシュにロードされうる(ステップS20)。
実施形態によって、第1タイプアプリケーションAPP1が、第1メモリ300、第2メモリ400、第3メモリ500または図示されていないメモリに保存されていながら第1タイプアプリケーションAPP1が実行されれば、CPU210にロードされうる。図2では、説明の便宜上、第1タイプアプリケーションAPP1は、第2メモリ400に保存または設けられたと仮定する。
CPU210にロードされた第1タイプアプリケーションAPP1は、第1タイプアプリケーションAPP1によって使われる第1メモリ領域(または、バッファ(buffer))の割り当てをメモリ管理プログラム311に要請する(ステップS30)。すなわち、第1タイプアプリケーションAPP1は、第1メモリ領域割り当て要請REQ1をメモリ管理プログラム311に出力する。
実施形態によって、第1メモリ領域割り当て要請REQ1は、第1タイプアプリケーションAPP1によって使われる第1メモリ領域のサイズについての情報を含みうる。他の実施形態によって、第1メモリ領域割り当て要請REQ1は、第1タイプアプリケーションAPP1によって使われる第1メモリ領域のサイズについての情報と、第1メモリ領域を含むメモリ300または400についてのハードウェア属性情報と、を含みうる。ハードウェア属性情報は、第1タイプアプリケーションAPP1によって使われるメモリの帯域幅、レイテンシ、及び/または消費電力についての情報を含みうる。
メモリ管理プログラム311は、実行される第1タイプアプリケーションAPP1の第1メモリ割り当て情報を分析する(ステップS140)。第1メモリ割り当て情報は、ハードウェア属性情報313及び/または第1メモリ領域割り当て要請REQ1を含みうる。例えば、メモリ管理プログラム311は、第1メモリ領域割り当て要請REQ1に応答してハードウェア属性情報313及び/または第1メモリ領域割り当て要請REQ1を分析することができる。
メモリ管理プログラム311は、第1メモリ割り当て情報についての分析の結果に基づいて、第1メモリ領域を第1メモリ300及び第2メモリ400のうちから如何なるメモリに割り当てるかを決定することができる(ステップS150)。第1タイプアプリケーションAPP1が速い応答性(fast response)を要求するアプリケーションである時、メモリ管理プログラム311は、低いレイテンシ(low latency)を有する第2メモリ400に第1メモリ領域420を割り当てる(ステップS40)。
しかし、図3に示したように、ユーザが装置ドライバ315の駆動を必要とするアプリケーション410、すなわち、第2タイプアプリケーションAPP2を実行させれば(ステップS130)、第2メモリ400に保存または設けられた第2タイプアプリケーションAPP2は、CPU210にロードされる(ステップS20)。CPU210にロードされた第2タイプアプリケーションAPP2は、第1メモリ300に保存された装置ドライバ315を呼び出す(call)か、または駆動することができる(ステップS21)。
第2タイプアプリケーションAPP2の要請によって、装置ドライバ315は、第1メモリ300からCPU210にロードされる(ステップS50)。例えば、第2タイプアプリケーションAPP2と装置ドライバ315は、L1キャッシュの命令キャッシュにロードされうる(ステップS50)。
実施形態によって、第1メモリ300、第3メモリ500または図示されていないメモリに保存された装置ドライバ315は、第2タイプアプリケーションAPP2が実行されれば、CPU210にロードされうる(ステップS50)。図3では、説明の便宜上、装置ドライバ315は、第1メモリ300のカーネル領域310に保存または設けられたと仮定する。装置ドライバ315は、複数のマルチメディアハードウェアIP(または、ハードウェア回路)250−1、250−2のうちから少なくとも1つを駆動(drive)させるプログラムである。
CPU210にロードされた装置ドライバ315は、装置ドライバ315に対応するマルチメディアハードウェアIP250−1または250−2によって使われる第2メモリ領域(または、バッファ)の割り当てをメモリ管理プログラム311に要請する(ステップS60)。すなわち、装置ドライバ315は、第2メモリ領域割り当て要請REQ2をメモリ管理プログラム311に出力する。
実施形態によって、第2メモリ領域割り当て要請REQ2は、装置ドライバ315に対応するマルチメディアハードウェアIP250−1または250−2によって使われる第2メモリ領域のサイズについての情報を含みうる。他の実施形態によって、第2メモリ領域割り当て要請REQ2は、装置ドライバ315に対応するマルチメディアハードウェアIP250−1または250−2によって使われる第2メモリ領域のサイズについての情報と前記第2メモリ領域を含むメモリ300または400についてのハードウェア属性情報とを含みうる。
ハードウェア属性情報は、装置ドライバ315に対応するマルチメディアハードウェアIP250−1または250−2によって使われるメモリの帯域幅、レイテンシ、及び/または消費電力についての情報を含みうる。
メモリ管理プログラム311は、実行される装置ドライバ315の第2メモリ割り当て情報を分析する(ステップS140)。第2メモリ割り当て情報は、ハードウェア属性情報313及び/または第2メモリ領域割り当て要請REQ2を含みうる。メモリ管理プログラム311は、第2メモリ割り当て情報についての分析の結果に基づいて、第2メモリ領域を第1メモリ300及び第2メモリ400のうちのどのメモリに割り当てるかを決定することができる(ステップS150)。
装置ドライバ315または装置ドライバ315に対応するマルチメディアハードウェアIP250−1または250−2が、広いか、または高い帯域幅(high or widebandwidth)を要求する時、メモリ管理プログラム311は、第2メモリ領域321を、広いか、または高い帯域幅を提供する第1メモリ300に割り当てる(ステップS70)。
アプリケーション、アプリケーションによって実行される装置ドライバ、または装置ドライバによって駆動されるマルチメディアハードウェアIPは、互いに関連しているので、本明細書では、アプリケーションによって使われるメモリ領域を異種のメモリのうちの何れか1つに割り当てるということは、(1)メモリ領域をアプリケーションに割り当てる場合、(2)メモリ領域を装置ドライバに割り当てる場合、及び(3)メモリ領域をマルチメディアハードウェアIP(または、マルチメディア回路)に割り当てる場合を含むものと広く解釈されうる。
マルチメディアハードウェアIP(または、マルチメディア回路)250−1または250−2は、第2メモリ領域321に保存されたマルチメディアデータを処理し、該処理されたマルチメディアデータを第1メモリ300の他のメモリ領域323にライトすることができる。
上述したように、メモリ管理プログラム311は、対応する構成410、または315のメモリ割り当て情報(例えば、アプリケーションAPP1またはAPP2の種類、ハードウェア属性情報313、及び対応する構成410または315から出力されたメモリ割り当て要請RERQ1またはREQ2)を分析し、該分析の結果によって対応する構成410、315、250−1または250−2によって使われるメモリ領域321または420を第1メモリ300または第2メモリ400に割り当てられる。
したがって、メモリ管理プログラム311を実行するシステム100は、異種のメモリ300、400のハードウェア属性情報と対応する構成410または315から出力されたメモリ領域割り当て要請REQ1またはREQ2とに応答して、異種のメモリ300、400のうちの何れか1つを対応する構成410、315、250−1または250−2によって使われるメモリとして割り当てられるので、システム100の性能を向上させ、アプリケーション410のランチング時間(launching time)の偏差を減らしうる効果がある。ランチング時間は、アプリケーション410がCPU210にロードされる時間またはアプリケーション410によって使われるメモリ領域を割り当てる時間を意味する。
さらに他の実施形態によれば、ユーザが第1タイプアプリケーションまたは第2タイプアプリケーションを実行させれば、第1メモリ300、第2メモリ400または図示されていないメモリに保存されていた第1タイプアプリケーションまたは第2タイプアプリケーションは、CPU210にロードされうる。例えば、第1タイプアプリケーションまたは第2タイプアプリケーションは、L1キャッシュの命令キャッシュにロードされうる。
この場合、メモリ管理プログラム311は、第1タイプアプリケーションまたは第2タイプアプリケーションからメモリ領域割り当て要請がないとしても、第1タイプアプリケーションまたは第2タイプアプリケーションによって使われるメモリ領域についての情報とメモリ領域を含むメモリ300または400についてのハードウェア属性情報とを分析することができる。
ハードウェア特性情報は、メモリ300または400の帯域幅、メモリ300または400のレイテンシ及び/またはメモリ300または400の消費電力についての情報を含み、メモリ領域についての情報は、第1タイプアプリケーションまたは第2タイプアプリケーションによって使われるメモリ領域を含むメモリ300または400の帯域幅、メモリ300または400のレイテンシ、及び/またはメモリ300または400の消費電力についての情報を含みうる。
メモリ管理プログラム311は、メモリ300または400に対する分析結果と前記メモリ領域に対する分析結果とに基づいて、メモリ領域を第1メモリ300及び第2メモリ400のうちの何れか1つに割り当てるかを決定することができる。
図5Aは、図1に示されたシステムでハードウェア属性情報に基づいてメモリ領域を割り当てる方法の一実施形態を説明するフローチャートである。図1から図5Aを参照すれば、システム100がブーティングされた後、ユーザによってアプリケーション410が選択され、CPU210によって実行されれば(ステップS210)、実行されるアプリケーション410は、第2メモリ400からCPU210にロードされる。前述したように、実行されるアプリケーション410は、第1タイプアプリケーションAPP1または第2タイプアプリケーションAPP2であり得る。また、アプリケーション410が、第1メモリ300、第2メモリ400、第3メモリ500または図示されていないメモリからCPU210にロードされうる。
第1タイプアプリケーションAPP1または装置ドライバ315は、メモリ領域割り当て要請REQ1またはREQ2をメモリ管理プログラム311に出力し、メモリ管理プログラム311は、メモリ領域割り当て要請REQ1またはREQ2に応答してハードウェア属性情報313を分析することができる(ステップS220)。
分析の結果、第1タイプアプリケーションAPP1または装置ドライバ315に該当するマルチメディアハードウェアIP250−1または250−2によって使われるメモリ領域が、高い帯域幅を必要とする時(ステップS230のYES)、メモリ管理プログラム311は、異種のメモリ300、400のうちから相対的に高い帯域幅を有するメモリ、例えば、第1メモリ300を割り当てる(ステップS241)。
しかし、第1タイプアプリケーションAPP1または装置ドライバ315に該当するマルチメディアハードウェアIP250−1または250−2によって使われるメモリ領域が、高い帯域幅よりは速い応答性を必要とする時(ステップS230のNOとステップS240のYES)、メモリ管理プログラム311は、異種のメモリ300、400のうちから相対的に速い応答性(例えば、低いレイテンシ)を有するメモリ、例えば、第2メモリ400を割り当てる(ステップS243)。
第1タイプアプリケーションAPP1または装置ドライバ315に該当するマルチメディアハードウェアIP250−1または250−2によって使われるメモリ領域が、帯域幅と応答性とを要しない時(ステップS230のNOとステップS240のNO)、メモリ管理プログラム311は、異種のメモリ300、400のうちからデフォルト(default)で指定されたメモリを割り当てる(ステップS245)。
本発明の実施形態によるメモリ管理プログラム311は、ランタイム(run−time)途中で動的(dynamic)で第1タイプアプリケーションAPP1、または装置ドライバ315に該当するマルチメディアハードウェアIP250−1または250−2によって使われるメモリ領域を異種のメモリ300、400のうちから何れか1つに設定できるだけではなく、静的割り当て(static allocation)を行うことができる。
静的割り当ては、コンパイル時間(compile time)に装置ドライバ(例えば、マルチメディアドライバ)に該当するマルチメディアハードウェアIPによって使われるメモリ領域を異種のメモリ300、400のうちから相対的に高い帯域幅を有するメモリに割り当て、第1タイプアプリケーションAPP1によって使われるメモリ領域は、異種のメモリ300、400のうちから相対的に低いレイテンシを有するメモリに割り当てることを意味する。
例えば、第2タイプアプリケーションAPP2が、低電力を要求するMP3プレーヤである時、メモリ管理プログラム311は、MP3プレーヤまたは前記MP3プレーヤに該当するマルチメディアハードウェアIP250−1または250−2によって使われるメモリ領域を第1メモリ300に割り当てる。
また、第2タイプアプリケーションAPP2が、低電力と高い帯域幅とを要求するビデオプレーヤである時、メモリ管理プログラム311は、ビデオプレーヤまたはビデオプレーヤに相応するマルチメディアハードウェアIP250−1または250−2によって使われるメモリ領域を第1メモリ300に割り当てる。しかし、第1タイプアプリケーションAPP1が、速い応答性を要求するアプリケーション、例えば、ウェブブラウザ(web browser)である時、メモリ管理プログラム311は、ウェブブラウザによって使われるメモリ領域を第2メモリ400に割り当てる。
図5Bは、図1に示されたシステムでハードウェア属性情報に基づいてメモリ領域を割り当てる方法の他の実施形態を説明するフローチャートである。
図5Aでは、メモリ領域割り当てのために、帯域幅要求条件が判断された後、レイテンシ要求条件が判断されたが、図5Bでは、メモリ領域割り当てのために、レイテンシ要求条件が判断された後、帯域幅要求条件が判断される。
実施形態によって、メモリ領域を割り当てるために、3つの要求条件(例えば、帯域幅要求条件、レイテンシ要求条件、及び消費電力要求条件)のうちから、ある要求条件が最も早く判断(または、考慮)され、3つの要求条件のうちから、ある要求条件が二番目に判断され、3つの要求条件のうちから、ある要求条件が三番目に判断されるかは、システム100の設計によって多様に変形されうる。したがって、消費電力要求条件が最も早く判断されることもある。
実施形態によれば、デフォルトで指定されたメモリが割り当てられる場合(ステップS245)、3つの要求条件以外にさらにデフォルトで指定されたメモリに余裕空間(または、メモリ領域(memory space))があるか否かをさらに判断する順序(または、過程)が追加されうる。したがって、デフォルトで指定されたメモリに余裕空間があれば、メモリ管理プログラム311は、異種のメモリ300、400のうちからデフォルトで指定されたメモリを割り当て、デフォルトで指定されたメモリに余裕空間がなければ、メモリ管理プログラム311は、異種のメモリ300、400のうちから余裕空間があるメモリを割り当てる。
図5Cは、図1に示されたシステムでハードウェア属性情報に基づいてメモリ領域を割り当てる方法のさらに他の実施形態を説明するフローチャートである。
図5Cで、メモリ領域を低電力を使うメモリに割り当てるかを決定する追加決定を除けば、図5Cに示された動作は、図5Bに示された動作と類似している。すなわち、メモリ割り当てのために、低いレイテンシメモリが要求されないということを決定した後(ステップS240)、そして、メモリ割り当てのために、高い帯域幅メモリが要求されないということを決定した後(ステップS230)、メモリ割り当てのために、低電力メモリが要求されるか否かが決定される(ステップS242)。低電力メモリが要求されれば、メモリ領域は、低電力ハードウェア特性を有するメモリに割り当てられ(ステップS244)、低電力メモリが要求されなければ、メモリ領域は、デフォルトで指定されたメモリに割り当てられる(ステップS245)。上述したように、S230、S240、及びS250の順序は、本発明の技術的思想を外れない範囲内で変更されうる。
図6は、図1に示されたシステムで行われる移送動作(migration operation)を説明する概念図である。メモリ管理プログラム311が自由メモリ領域を管理する時、自由メモリ領域は、ハードウェア属性に優れる第1メモリ300で優先的に管理されうる。
例えば、第1メモリ300で、各メモリ領域Buffer#1〜Buffer#Nが各アプリケーションAPP1〜APPNに既に割り当てられており、現在実行されるアプリケーションCAPPによって使われるメモリ領域が第1メモリ300では割り当てることができないが、第2メモリ400で割り当てることができる時、メモリ管理プログラム311は、各アプリケーションAPP1〜APPNに既に割り当てられた各メモリ領域Buffer#1〜Buffer#Nに保存されたデータのうちから非活性(inactive)データを選択し、該選択されたデータを第2メモリ400に移送させることができる。ここで、非活性データとは、データが第1メモリ300に保存されているが、現在使われていないデータまたは使われていないデータのうちから最も長時間使われていないデータであり得る。
他の実施形態によって、非活性データとは、現在第1メモリ300に割り当てられたメモリ領域に対応するアプリケーションAPP1〜APPNのうちから第1メモリ300に対する配定優先権が最も低いアプリケーションに対応するデータであり得る。第1メモリ300に対する配定優先権は、メモリ管理プログラム311によって当該メモリ領域を第1メモリ300に割り当てる時に決定されるか、各アプリケーションAPP1〜APPNが、メモリ管理プログラム311にメモリ領域割り当て要請を出力する時に決定されうる。
図6に示したように、メモリ管理プログラム311が、現在実行されたアプリケーションCAPPによって使われるメモリ領域を第1メモリ300に割り当てしようとする時、メモリ管理プログラム311は、第NアプリケーションAPPNに割り当てられたメモリ領域Buffer#Nに保存されたデータを第2メモリ400に移送(migrate)することができる。
移送の結果によって、自由メモリ領域Buffer#Nが生成される。したがって、メモリ管理プログラム311は、自由メモリ領域Buffer#Nの少なくとも一部を現在実行されたアプリケーションCAPPによって使われるメモリ領域に割り当て(または、リクレイム(reclaim))することができる。
しかし、現在実行されたアプリケーションCAPPによって使われるメモリ領域が、1つのメモリ領域に保存されたデータを移送させるのに足りない時、メモリ管理プログラム311は、少なくとも2つのアプリケーションに割り当てられたメモリ領域に保存されたデータを第2メモリ400に移送させて、現在実行されたアプリケーションCAPPによって使われる自由メモリ領域を確保することができる。
第NアプリケーションAPPNに割り当てられたメモリ領域Buffer#Nに保存されたデータが、第2メモリ400に移送された後、第1メモリ300内で保留(reserved)メモリ領域を有するアプリケーションが終了するか、キル(kill)されるか、割り当てられたメモリ領域を譲る時、追加メモリ領域は、第1メモリ300で生成されうる。この場合、メモリ管理プログラム311は、メモリ領域Buffer#Nを自由メモリ領域として確保することができる。
図7は、図1に示されたシステムで行われるキリング動作(killing operation)を説明する概念図である。第2メモリ400の各メモリ領域U_Buffer#11〜U_Buffer#16は、各アプリケーションAPP11〜APP16に既に割り当てられている。各アプリケーションAPP11〜APP16は、第1タイプアプリケーションまたは第2タイプアプリケーションであり得る。
第1メモリ300の各メモリ領域Buffer#1〜Buffer#Nが、各アプリケーションAPP1〜APPNに既に割り当てられており、現在実行されるアプリケーションCAPPによって使われるメモリ領域を、第1メモリ300及び第2メモリ400のそれぞれに割り当てることができない時、すなわち、第1メモリ300及び第2メモリ400に余裕空間(または、メモリ領域)がない時、メモリ管理プログラム311は、メモリ領域Buffer#1〜Buffer#Nを使うアプリケーションAPP1〜APPNのうちから1つまたはそれ以上のアプリケーションの実行を中止させることができる。メモリ管理プログラム311は、各アプリケーションAPP1〜APPNに割り当てた各メモリ領域Buffer#1〜Buffer#Nのサイズを記録(log)することができる。
メモリ管理プログラム311は、各アプリケーションAPP1〜APPNの配定優先権と各アプリケーションAPP1〜APPNに割り当てられた各メモリ領域Buffer#1〜Buffer#Nのサイズとに基づいて、中止されるか、またはキルされる少なくとも1つのアプリケーションを選択することができる。例えば、メモリ管理プログラム311は、低い優先権を有しながら大きなメモリ領域を割り当てられたアプリケーション(例えば、APP2)を中止またはキルされるアプリケーションで優先的に選択することができる。
1つまたはそれ以上のアプリケーションの実行が中止される(または、キリング(killing))ことによって、少なくとも1つのメモリ領域は自由メモリ領域になる。
図7に示したように、メモリ管理プログラム311が、現在実行されるアプリケーションCAPPによって使われるメモリ領域を第1メモリ300に割り当てしようとする時、メモリ管理プログラム311は、第2アプリケーションAPP2に割り当てられたメモリ領域Buffer#2を自由メモリ領域に確保するために、第2アプリケーションAPP2の実行を中止させることができる。したがって、メモリ管理プログラム311は、自由メモリ領域Buffer#2の少なくとも一部を現在実行されるアプリケーションCAPPによって使われるメモリ領域に割り当て(または、リクレイム)る。
図6と図7は、現在実行されるアプリケーションCAPPによって使われるメモリ領域が、第1メモリ300に割り当てられる場合を説明するが、現在実行されるアプリケーションCAPPによって使われるメモリ領域が、第2メモリ400に割り当てられる時、第2メモリ400に保存された非活性データは、第1メモリ300に移送されるか、中止されるか、またはキルされる少なくとも1つのアプリケーションは、各アプリケーションAPP11〜APP16の配定優先権と各アプリケーションAPP11〜APP16に割り当てられた各メモリ領域U_Buffer11〜U_Buffer16のサイズとに基づいて選択されうる。例えば、メモリ管理プログラム311は、低い配定優先権を有し、大きなメモリ領域を割り当てられたアプリケーションを中止されるアプリケーションで優先的に選択することができる。
図8は、図6と図7とに示された移送動作とキリング動作とを説明するフローチャートである。図6から図8を参照すれば、第1タイプアプリケーションAPP1または装置ドライバ315が実行されれば(ステップS310)、第1タイプアプリケーションAPP1は、第2メモリ400からCPU210にロードされ、装置ドライバ315は、第1メモリ300からCPU210にロードされる。実施形態によって、第1タイプアプリケーションAPP1は、第2メモリ400からCPU210にロードされうる。前述したように、第1タイプアプリケーション、第2タイプアプリケーション、または装置ドライバは、自分が保存されたメモリからCPU210にロードされうる。
第1タイプアプリケーションAPP1または装置ドライバ315は、メモリ領域割り当て要請REQ1またはREQ2をメモリ管理プログラム311に伝送する。メモリ管理プログラム311は、メモリ領域割り当て要請REQ1またはREQ2を受信し、ハードウェア属性情報313及び/またはメモリ領域割り当て要請REQ1またはREQ2を含むメモリ割り当て情報を分析する。
メモリ管理プログラム311は、第1タイプアプリケーションAPP1または装置ドライバ315に該当するマルチメディアハードウェアIP250−1または250−2によって使われるメモリ領域を異種のメモリ300、400で何れか1つに割り当てるために、第1メモリ300を優先的にスキャン(scan)する。
第1メモリ300で利用可能な領域が、メモリ領域割り当て要請REQ1またはREQ2に十分な空間を提供するかが決定される(ステップS330)。第1タイプアプリケーションAPP1または装置ドライバ315に該当するマルチメディアハードウェアIP250−1または250−2によって使われるメモリ領域を、第1メモリ300で十分に割り当てることができる時(ステップS330のYES)、メモリ管理プログラム311は、第1タイプアプリケーションAPP1または装置ドライバ315に該当するマルチメディアハードウェアIP250−1または250−2によって使われるメモリ領域を第1メモリ300に割り当てる(ステップS346)。
しかし、第1タイプアプリケーションAPP1または装置ドライバ315に該当するマルチメディアハードウェアIP250−1または250−2によって使われるメモリ領域を、第1メモリ300で十分に割り当てることができない時(ステップS330のNO)、メモリ管理プログラム311は、第2メモリ400をスキャンする。
第1タイプアプリケーションAPP1または装置ドライバ315に該当するマルチメディアハードウェアIP250−1または250−2によって使われるメモリ領域を、第2メモリ400で十分に割り当てることができる時(ステップS340のYES)、メモリ管理プログラム311は、図6を参照して説明したように、非活性データを第1メモリ300から第2メモリ400に移送する(ステップS342)。この移送によって、自由メモリ領域が、第1メモリ300に生成される。
メモリ管理プログラム311は、第1タイプアプリケーションAPP1または装置ドライバ315に該当するマルチメディアハードウェアIP250−1または250−2によって使われるメモリ領域を第1メモリ300の自由メモリ領域に割り当てる(ステップS346)。
第1タイプアプリケーションAPP1または装置ドライバ315に該当するマルチメディアハードウェアIP250−1または250−2によって使われるメモリ領域を、第2メモリ400で十分に割り当てることができない時(ステップS340のNO)、メモリ管理プログラム311は、図7を参照して説明したように、第1メモリ300で遂行中である少なくとも1つのプロセス(すなわち、第1メモリ300のメモリ領域を使う第2タイプアプリケーションAPP2または装置ドライバ315に該当するマルチメディアハードウェアIP250−1または250−2)を中止させるか、キルする(ステップS344)。中止動作またはキル動作によって、自由メモリ領域が、第1メモリ300に生成される。
メモリ管理プログラム311は、第1タイプアプリケーションAPP1または装置ドライバ315に該当するマルチメディアハードウェアIP250−1または250−2によって使われるメモリ領域を第1メモリ300の自由メモリ領域に割り当てる(ステップS346)。
実施形態によって、メモリ管理プログラム311が、メモリ領域割り当て要請REQ1またはREQ2を受信し、ハードウェア属性情報313とメモリ領域割り当て要請REQ1またはREQ2を含むメモリ割り当て情報とを分析する段階(ステップS320)の代わりに、アプリケーションAPP1またはAPP2が実行されれば、メモリ管理プログラム311は、ハードウェア属性情報313と、アプリケーションAPP1またはAPP2の実行に必要なメモリ300または400の帯域幅、レイテンシ、及び/または消費電力についての情報と、を分析することができる。
図9から図12は、従来のアプリケーションのランチング時間の偏差(deviation)と、本発明の実施形態によるメモリ管理プログラムを利用したアプリケーションのランチング時間の偏差と、を示すグラフである。
図9は、音楽プレーヤのランチング時間とランチング時間との偏差とを示す。GP1は、メモリ管理プログラム311を含むシステム100での音楽プレーヤのランチング時間を表わし、PP1は、メモリ管理プログラム311を含まないシステムでの音楽プレーヤのランチング時間を表わす。
図10は、ウェブブラウザのランチング時間とランチング時間との偏差とを示す。GP2は、メモリ管理プログラム311を含むシステム100でのウェブブラウザのランチング時間を表わし、PP2は、メモリ管理プログラム311を含まないシステムでのウェブブラウザのランチング時間を表わす。
図11は、計算器(calculator)のランチング時間とランチング時間との偏差とを示す。GP3は、メモリ管理プログラム311を含むシステム100での計算器のランチング時間を表わし、PP3は、メモリ管理プログラム311を含まないシステムでの計算器のランチング時間を表わす。
図12は、ギャラリ(gallery)のランチング時間とランチング時間との偏差とを示す。GP4は、メモリ管理プログラム311を含むシステム100でのギャラリのランチング時間を表わし、PP4は、メモリ管理プログラム311を含まないシステムでのギャラリのランチング時間を表わす。
図9から図12を参照すれば、メモリ管理プログラム311は、各アプリケーションのランチング時間を減少させ、ランチング時間の偏差を減少させうる。
本発明の実施形態によるシステムのメモリ割り当て方法は、コンピュータで読み取り可能なプログラムを記録したコンピュータで読み取り可能な記録媒体を含むコンピュータプログラム製品として具現可能である。また、本発明の実施形態によるシステムのメモリ割り当て方法は、コンピュータで読み取り可能な記録媒体に保存することができる。記録媒体は、第1メモリ300、第3メモリ500、またはCPU210のL1キャッシュの命令キャッシュを意味する。
図13は、図1に示されたシステムの構造を示す断面図の一実施形態である。図1と図13とを参照すれば、制御回路200は、アプリケーションプロセッサ(Application Processor;AP)であり、第1メモリ300は、WIDE I/ODRAMを意味する。図13は、AP200とWIDE I/O DRAM300とをダイツーダイ(die−to−die)で直接連結した半導体パッケージ700を示す。半導体パッケージ700は、第3メモリ500とディスプレイ600とを含まない。
図13に示された半導体パッケージ700は、AP200とWIDE I/O DRAM300のそれぞれをパッケージ(package)した後で、再びパッケージするPoP(Package on Package)方式ではないTSV技術を用いて、AP200とWIDE I/O DRAM300とを直接連結する。図13を参照すれば、半導体パッケージ700は、印刷回路基板(Printed Circuit Board;PCB)701上(on)に形成されたAP200を含み、AP200とWIDE I/O DRAM300は、TSVを通じて連結される。
図14は、図1に示されたシステムの構造を示す断面図の他の実施形態である。図14は、図13に示された半導体パッケージ700と類似した半導体パッケージ710上にLPDDR DRAM400を積層したPoPを示す。図14を参照すれば、PoPは、第1パッケージ710上に第2パッケージ720を積層する。PoPは、第3メモリ500とディスプレイ600とを含まない。
連結手段730を除けば、図13のパッケージ700の構造と図14の第1パッケージ710の構造は、実質的に同一である。第2パッケージ720は、PCB721上に形成されたLPDDR DRAM400を含み、PCB721とLPDDR DRAM400は、ワイヤ(wire)を通じて接続される。連結手段730は、第1パッケージ710のPCB711及び第2パッケージ720のPCB721を電気的に互いに接続する。
図15は、図1に示されたシステムの構造を示す断面図のさらに他の実施形態である。図15を参照すれば、第1パッケージ740及び第2パッケージ750のそれぞれは、ボード(board)にマウント(mount)される。図15を参照すれば、第1パッケージ740のAP200とWIDE I/O DRAM300は、TSVを通じて互いに接続され、第2パッケージ750のPCB751とLPDDR DRAM400は、ワイヤを通じて接続される。第1パッケージ740及び第2パッケージ760は、信号ライン760を通じて電気的に接続される。
本発明は、システムとモバイルコンピューティング装置とに利用されうる。
100:システム
200:コントロール回路
210:CPU
220:第1メモリコントローラ
230:第2メモリコントローラ
240:第3メモリコントローラ
250−1、250−2:マルチメディアハードウェアIPまたはハードウェア回路
300:第1メモリ
310:カーネル領域
313:メモリ管理プログラム
320:ユーザデータ領域
400:第2メモリ
500:第3メモリ
600:ディスプレイ

Claims (20)

  1. プロセッサと、
    前記プロセッサに接続された第1メモリ及び第2メモリと、
    メモリ割り当て要請を受信するメモリ管理モジュールと、を含み、
    前記第1メモリと前記第2メモリのそれぞれは、帯域幅と消費電力とのうちから1つを含むハードウェア属性を有し、前記第1メモリの前記ハードウェア属性の第1値は、前記第2メモリの前記ハードウェア属性の第2値と互いに異なり、
    前記メモリ管理モジュールは、前記第1値及び前記第2値に基づいた前記メモリ割り当て要請に応答して、メモリ領域を前記第1メモリまたは前記第2メモリに割り当てるシステム。
  2. 前記第1メモリの前記帯域幅及び前記消費電力を含む前記第1値は、前記第2メモリの前記帯域幅及び前記消費電力を含む前記第2値と互いに異なる請求項1に記載のシステム。
  3. 前記第1メモリを制御する第1メモリコントローラと、前記第2メモリを制御する第2メモリコントローラと、をさらに含む請求項1に記載のシステム。
  4. 前記第1メモリコントローラと前記第2メモリコントローラは、前記プロセッサを含む1つのチップに具現される請求項3に記載のシステム。
  5. 前記メモリ割り当て要請は、ハードウェア属性レベルを明示し、前記メモリ管理モジュールは、前記メモリ割り当て要請で明示された前記ハードウェア属性レベルに基づいて、前記メモリ領域を前記第1メモリまたは前記第2メモリに割り当てる請求項1に記載のシステム。
  6. 前記ハードウェア属性は、前記帯域幅、前記消費電力、及びレイテンシのうちから1つを含む請求項1に記載のシステム。
  7. 前記メモリ管理モジュールは、前記メモリ割り当て要請を出力したアプリケーションのアプリケーションタイプに基づいて、前記メモリ領域を前記第1メモリまたは前記第2メモリに割り当てる請求項1に記載のシステム。
  8. 前記メモリ管理モジュールは、前記第1値及び前記第2値に基づいた前記メモリ割り当て要請に応答して、前記メモリ領域を前記第1メモリまたは前記第2メモリに割り当て、前記第1値と前記第2値のそれぞれは、前記第1メモリと前記第2メモリのそれぞれの前記帯域幅、前記消費電力、及びレイテンシのうちから少なくとも1つを含む請求項1に記載のシステム。
  9. 前記メモリ管理モジュールは、前記第1値、前記第2値、前記メモリ割り当て要請を出力したアプリケーションの配定優先権に基づいた前記メモリ割り当て要請に応答して、前記メモリ領域を前記第1メモリまたは前記第2メモリに割り当てる請求項1に記載のシステム。
  10. 前記メモリ管理モジュールは、第1配定優先権を有する第1アプリケーションから出力された前記メモリ割り当て要請に応答して、前記メモリ領域が、前記第1メモリで割り当てられなければならないという決定と、前記第1アプリケーションから出力された前記メモリ割り当て要請を満足するために、前記第1メモリで利用可能な自由メモリ領域が十分ではないという決定と、に基づいて、前記第1配定優先権よりも低い第2配定優先権を有する第2アプリケーションのために、前記第1メモリで既に割り当てられたバッファを前記第2メモリに移送し、次いで、前記メモリ割り当て要請に応答して、前記第1メモリの前記メモリ領域を前記第1アプリケーションに割り当てる請求項1に記載のシステム。
  11. 前記メモリ管理モジュールは、前記バッファに対して十分なメモリ領域が前記第1メモリで使用可能になった時、前記第2アプリケーションのために割り当てられた前記バッファを前記第1メモリに移送する請求項10に記載のシステム。
  12. 前記メモリ管理モジュールは、第1配定優先権を有する第1アプリケーションから出力された前記メモリ割り当て要請に応答して、前記メモリ領域が、前記第1メモリに割り当てられなければならないという決定と、前記第1アプリケーションから出力された前記メモリ割り当て要請を満足するために、前記第1メモリで利用可能な自由メモリ領域が十分ではないという決定と、に基づいて、前記第1配定優先権よりも低い第2配定優先権を有し、前記第1メモリで割り当てられたメモリ領域を有する第2アプリケーションをキルし、次いで、前記メモリ割り当て要請に応答して、前記第1メモリの前記メモリ領域を前記第1アプリケーションに割り当てる請求項1に記載のシステム。
  13. 前記第1メモリ、前記第2メモリ、前記プロセッサのそれぞれは、互いに異なるチップに具現される請求項1に記載のシステム。
  14. 前記第1メモリと前記プロセッサは、第1パッケージとして具現され、前記第2メモリは、前記第1パッケージと互いに異なる第2パッケージとして具現される請求項13に記載のシステム。
  15. 前記第1メモリは、TSVを通じて前記プロセッサと接続される請求項14に記載のシステム。
  16. 前記第1メモリは、WIDE I/O DRAMであり、第2メモリは、DRAMである請求項1に記載のシステム。
  17. プロセッサと、
    前記プロセッサに接続されたディスプレイコントローラと、
    前記プロセッサに接続された第1メモリコントローラ及び第2メモリコントローラと、
    それぞれが前記第1メモリコントローラと前記第2メモリコントローラのそれぞれに接続された第1DRAM及び第2DRAMと、
    メモリ割り当て要請を受信するメモリ管理モジュールと、を含み、
    前記第1DRAMと前記第DRAMのそれぞれは、ハードウェア属性を有し、前記第1DRAMの前記ハードウェア属性の第1値は、前記第2DRAMの前記ハードウェア属性の第2値と互いに異なり、
    前記メモリ管理モジュールは、前記メモリ割り当て要請、前記第1値、及び前記第2値に応答してメモリを割り当てるモバイルコンピューティング装置。
  18. 前記ハードウェア属性は、帯域幅、消費電力、及びレイテンシを含む請求項17に記載のモバイルコンピューティング装置。
  19. 前記第1DRAM、前記第2DRAM、及び前記プロセッサのそれぞれは、互いに異なるチップに具現される請求項18に記載のモバイルコンピューティング装置。
  20. 前記第1DRAMは、WIDE I/O DRAMであり、前記第2DRAMは、LPDDR DRAMである請求項17に記載のモバイルコンピューティング装置。
JP2014210919A 2013-10-16 2014-10-15 システムとモバイルコンピューティング装置 Pending JP2015079511A (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201361891637P 2013-10-16 2013-10-16
US61/891,637 2013-10-16
US14/242,634 US20140215177A1 (en) 2012-08-02 2014-04-01 Methods and Systems for Managing Heterogeneous Memories
US14/242,634 2014-04-01

Publications (1)

Publication Number Publication Date
JP2015079511A true JP2015079511A (ja) 2015-04-23

Family

ID=51753036

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014210919A Pending JP2015079511A (ja) 2013-10-16 2014-10-15 システムとモバイルコンピューティング装置

Country Status (4)

Country Link
EP (1) EP2863312A1 (ja)
JP (1) JP2015079511A (ja)
KR (1) KR20150044370A (ja)
CN (1) CN104572496A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017097458A (ja) * 2015-11-19 2017-06-01 日本電気株式会社 メモリ割り当て装置、メモリ割当方法、および、プログラム
JP2019520636A (ja) * 2016-06-27 2019-07-18 アップル インコーポレイテッドApple Inc. 高密度低バンド幅メモリと低密度高バンド幅メモリを組み合わせたメモリシステム

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102417977B1 (ko) * 2017-10-19 2022-07-07 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR102067735B1 (ko) 2018-06-20 2020-01-17 연세대학교 산학협력단 가상화 시스템의 메모리 관리 장치 및 그 방법
KR102149153B1 (ko) * 2018-10-08 2020-08-28 울산과학기술원 이종 메모리를 활용한 범용 gpu에서의 페이징 방법 및 장치
KR102120033B1 (ko) 2019-01-23 2020-06-16 연세대학교 산학협력단 가상화 시스템의 메모리 관리 장치 및 그 방법
US11269780B2 (en) 2019-09-17 2022-03-08 Micron Technology, Inc. Mapping non-typed memory access to typed memory access
US11650742B2 (en) 2019-09-17 2023-05-16 Micron Technology, Inc. Accessing stored metadata to identify memory devices in which data is stored
US11494311B2 (en) 2019-09-17 2022-11-08 Micron Technology, Inc. Page table hooks to memory types
US10963396B1 (en) 2019-09-17 2021-03-30 Micron Technology, Inc. Memory system for binding data to a memory namespace
US11070621B1 (en) * 2020-07-21 2021-07-20 Cisco Technology, Inc. Reuse of execution environments while guaranteeing isolation in serverless computing
US20230359495A1 (en) * 2022-05-03 2023-11-09 Samsung Electronics Co., Ltd. System and method for heterogeneous memory

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2651037B2 (ja) * 1990-04-23 1997-09-10 株式会社日立製作所 アドレスバス制御装置
US6925542B2 (en) * 2003-03-21 2005-08-02 Freescale Semiconductor, Inc. Memory management in a data processing system
US7500078B2 (en) * 2006-08-25 2009-03-03 Dell Products L.P. Thermal control of memory modules using proximity information
US20080086603A1 (en) * 2006-10-05 2008-04-10 Vesa Lahtinen Memory management method and system
WO2009089914A1 (en) * 2008-01-18 2009-07-23 Abb Technology Ab A control system for controlling an industrial robot
US8990538B2 (en) * 2010-11-05 2015-03-24 Microsoft Corporation Managing memory with limited write cycles in heterogeneous memory systems

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017097458A (ja) * 2015-11-19 2017-06-01 日本電気株式会社 メモリ割り当て装置、メモリ割当方法、および、プログラム
JP2019520636A (ja) * 2016-06-27 2019-07-18 アップル インコーポレイテッドApple Inc. 高密度低バンド幅メモリと低密度高バンド幅メモリを組み合わせたメモリシステム
US10573368B2 (en) 2016-06-27 2020-02-25 Apple Inc. Memory system having combined high density, low bandwidth and low density, high bandwidth memories
US10916290B2 (en) 2016-06-27 2021-02-09 Apple Inc. Memory system having combined high density, low bandwidth and low density, high bandwidth memories
JP2021099850A (ja) * 2016-06-27 2021-07-01 アップル インコーポレイテッドApple Inc. 高密度低バンド幅メモリと低密度高バンド幅メモリを組み合わせたメモリシステム
US11468935B2 (en) 2016-06-27 2022-10-11 Apple Inc. Memory system having combined high density, low bandwidth and low density, high bandwidth memories
JP7169387B2 (ja) 2016-06-27 2022-11-10 アップル インコーポレイテッド 高密度低バンド幅メモリと低密度高バンド幅メモリを組み合わせたメモリシステム
JP2023017848A (ja) * 2016-06-27 2023-02-07 アップル インコーポレイテッド 高密度低バンド幅メモリと低密度高バンド幅メモリを組み合わせたメモリシステム
US11830534B2 (en) 2016-06-27 2023-11-28 Apple Inc. Memory system having combined high density, low bandwidth and low density, high bandwidth memories

Also Published As

Publication number Publication date
KR20150044370A (ko) 2015-04-24
CN104572496A (zh) 2015-04-29
EP2863312A1 (en) 2015-04-22

Similar Documents

Publication Publication Date Title
JP2015079511A (ja) システムとモバイルコンピューティング装置
US20140215177A1 (en) Methods and Systems for Managing Heterogeneous Memories
TWI750176B (zh) 對記憶體通道執行軟體調訓的電子裝置、其記憶體通道調訓方法及其系統
KR102519904B1 (ko) 영구 메모리 할당 및 구성
KR102094393B1 (ko) 불휘발성 메모리 시스템 및 그것의 동작 방법
US20140244960A1 (en) Computing device, memory management method, and program
US9286199B2 (en) Modifying memory space allocation for inactive tasks
JP2006302255A (ja) 異種の非揮発性メモリを持つデータ記憶装置とその駆動方法
KR20140142793A (ko) 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법 및 불휘발성 메모리 시스템
US11907129B2 (en) Information processing device, access controller, information processing method, and computer program for issuing access requests from a processor to a sub-processor
US20220114086A1 (en) Techniques to expand system memory via use of available device memory
JP2011028537A (ja) 外部記憶装置へのアクセスを高速化する方法および外部記憶システム
KR20210143611A (ko) 멀티 테넌시를 지원하는 스토리지 장치 및 이의 동작 방법
KR20200069905A (ko) 스토리지 시스템 및 스토리지 시스템의 동작 방법
US20190042415A1 (en) Storage model for a computer system having persistent system memory
CN108139983B (zh) 用于在多级系统存储器中固定存储器页面的方法和设备
TWI617972B (zh) 記憶體裝置及方法
CN110119245B (zh) 用于操作nand闪存物理空间以扩展存储器容量的方法和系统
US11210130B2 (en) Adaptive write acknowledgment for storage devices
US12093174B2 (en) Methods and apparatus for persistent data structures
TW202004504A (zh) 記憶體裝置、記憶體裝置的控制方法及記錄媒體
GB2516435A (en) Embedded memory management scheme for real-time applications
KR102353859B1 (ko) 컴퓨팅 장치 및 비휘발성 듀얼 인라인 메모리 모듈
CN112654965A (zh) 动态模块的外部分页和交换
US10394305B2 (en) Memory system and method of operating the same