KR20100132244A - 메모리 시스템 및 메모리 시스템 관리 방법 - Google Patents
메모리 시스템 및 메모리 시스템 관리 방법 Download PDFInfo
- Publication number
- KR20100132244A KR20100132244A KR1020090050968A KR20090050968A KR20100132244A KR 20100132244 A KR20100132244 A KR 20100132244A KR 1020090050968 A KR1020090050968 A KR 1020090050968A KR 20090050968 A KR20090050968 A KR 20090050968A KR 20100132244 A KR20100132244 A KR 20100132244A
- Authority
- KR
- South Korea
- Prior art keywords
- page
- pages
- list
- inactive
- write
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/205—Hybrid memory, e.g. using both volatile and non-volatile memory
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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 Of A Hierarchy Structure (AREA)
Abstract
가상 메모리를 이용하여 메모리를 관리하는 메모리 시스템이 개시된다. 일 양상에 따른 메모리 시스템은 비대칭 메모리를 DRAM의 스왑 스토리지로 이용한다. 비대칭 메모리는 바이트 단위 액세스가 가능하므로, 다이렉트 매핑을 통하여 프로세스는 비대칭 메모리로 스왑 아웃된 페이지에 직접 접근이 가능하다.
가상 메모리, 운영 체제, 비대칭 메모리, 스왑 아웃, 페이지 테이블
Description
하나 이상의 양상은 메모리 시스템에 관한 것으로, 더욱 상세하게는 가상 메모리를 이용하여 메모리를 관리하는 메모리 시스템에 관한 것이다.
운영체제는 가상 메모리를 이용하여 충분히 큰 용량의 디스크인 스왑 스토리지를 메모리의 일부분처럼 활용하여 물리적인 메모리 용량의 한계를 극복한다. 각 프로세스마다 실행에 필요한 메모리 크기만큼의 공간을 스왑 스토리지에 확보해두고 이들 중 당장 실행해야 하는 부분만 메모리에 적재한다. 당장 실행해야 하는 부분이 아니면 스왑 스토리지의 대응되는 영역에 현재의 내용을 그대로 복사해 두었다가 즉, 스왑 아웃하고, 이후에 실행해야 하는 시점이 되면 그대로 다시 메모리에 적재 즉, 스왑 인을 수행하여 실행을 계속한다.
바이트 어드레싱이 가능한 비대칭 메모리를 스왑 스토리지로 활용하는 메모리 시스템 및 그 메모리 시스템의 메모리 관리 방법에 제공된다.
일 양상에 따른 메모리 시스템은 비대칭 메모리를 DRAM의 스왑 스토리지로 이용한다. 메모리 시스템에서는 스왑 아웃된 페이지의 물리 주소를 페이지 테이블 엔트리에 반영하여 프로세스가 스왑 아웃된 페이지로의 직접 접근을 허용한다. 메모리 시스템은 읽기가 많이 발생하는 페이지들을 비대칭 메모리로 스왑 아웃하고, 스왑 아웃된 페이지들 중에서 쓰기가 빈번하다고 결정되는 페이지들을 우선적으로 다시 DRAM으로 이동시킨다.
이를 위해, 메모리 시스템은 스왑 아웃 대상 페이지에 쓰기가 빈번하게 일어나는 페이지들이 포함되지 않도록 쓰기가 빈번하게 일어나는 페이지들은 스왑 아웃의 대상에서 우선 순위를 낮출 수 있다.
또한, 페이지들은 최근에 참조가 된 페이지들로 구성된 액티브 리스트 최근에 참조되지 않은 페이지들로 구성된 인액티브 리스트로 관리될 수 있으며, 인액티브 리스트는 쓰기 발생 여부에 따라서 인액티브 쓰기 리스트 및 인액티브 읽기 리스트로 구분될 수 있다. 인액티브 쓰기 리스트, 인액티브 읽기 리스트를 스캐닝하여 최근에 2번 이상 참조된 페이지들이 액티브 리스트로 승격될 수 있다.
메모리 시스템은 스왑 아웃 대상이 되는 페이지를 선정하기 위해서, 액티브 리스트 축소, 인액티브 쓰기 리스트 축소 과정을 수행하고 인액티브 읽기 리스트를 스캐닝하면서 스왑 아웃 대상 페이지를 선정한다.
액티브 리스트는 최근에 참조되지 않은 것으로 결정되는 페이지에 대하여 각 페이지의 쓰기 발생 여부에 따라 인액티브 쓰기 리스트 및 인액티브 읽기 리스트로 이동되어 축소될 수 있다. 인액티브 쓰기 리스트상의 페이지 중에서 쓰기가 최근에 일어나지 않은 페이지들을 인액티브 읽기 리스트로 이동시켜서 인액티브 쓰기 리스트가 축소될 수 있다. 인액티브 쓰기 리스트 축소 후에 인액티브 읽기 리스트상의 페이지들 중 스왑 아웃될 페이지들이 선정될 수 있다. 한편, 인액티브 쓰기 리스트를 축소할 때, 스캔중인 페이지의 페이지 테이블 엔트리를 참조하여 페이지에 더티 비트 및 참조 비트가 설정되어 있지 않은 경우, 해당 페이지를 인액티브 읽기 리스트의 테일에 위치시킬 수 있다.
메모리 시스템은 스왑 아웃된 페이지들을 가장 최근에 쓰기가 일어난 페이지들의 순서에 따라 정렬된 LRW(Least Recently Written) 리스트로 관리하며, 가장 최근에 쓰기가 일어난 페이지들을 스왑 인 대상으로 선정할 수 있다. 이를 위해, 메모리 시스템은 LRW 리스트에서 스왑 아웃된 페이지들에 대하여 읽기 전용 허가를 초기 지정하고 스왑 아웃된 페이지에 쓰기 요청이 수신되면 쓰기 요청이 있는 페이지의 읽기 전용 허가를 읽기 쓰기 허가로 변경하여 페이지에 쓰기를 허용하고, 쓰기가 수행된 페이지를 LRW 리스트의 헤드로 이동시키는 과정을 포함하여 스왑 아웃된 페이지들을 관리할 수 있다. 메모리 시스템은 LRW 리스트를 스캐닝할 때 읽기 쓰기 허가가 지정된 페이지들을 마이그레이션 대상으로 마킹하고 해당 페이지들을 다시 읽기 전용으로 변경 지정하고, 마킹된 페이지들에 쓰기 접근이 있는 경우 마킹된 페이지들을 DRAM으로 이동시킬 수 있다.
다른 양상에 따른 비대칭 메모리 및 DRAM를 포함하는 메모리 시스템을 관리하기 위한 방법은 비대칭 메모리를 DRAM의 스왑 스토리지로 이용하여 DRAM에서 스 왑 아웃 대상이 되는 페이지를 비대칭 메모리로 이동한다.
일 실시예에 따르면, 비대칭 메모리를 스왑 스토리지로 이용하므로 하드 디스크나 NAND 메모리 등을 이용하는 경우에 비하여 매우 빠르게 스왑 아웃 및 스왑 인 동작을 수행할 수 있다. 또한, 비대칭 메모리는 DRAM과 같이 바이트 단위로 읽을 수 있으므로 통상적으로 스왑 인 과정에서 수행되는 DRAM으로 데이터를 복구하는 과정 없이 비대칭 메모리로부터 바로 데이터를 읽어냄으로써 메모리 읽기 성능을 개선할 수 있다. 또한, 비대칭 메모리는 DRAM에 비하여 리프레시하는데 전력을 사용하지 않으므로 비대칭 메모리를 스왑 스토리지로 이용하면 DRAM을 증설하는 경우에 비하여 전력을 절감할 수 있다.
이하, 첨부된 도면을 참조하여 본 발명의 일 실시예를 상세하게 설명한다. 본 발명을 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 또한, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 1은 일 실시예에 따른 메모리 시스템의 구성을 나타내는 도면이다.
일 실시예에 따른 메모리 시스템(100)은 제어부(110), 메인 메모리(120) 및 스토리지(130)를 포함한다. 실선은 데이터 및 명령이 전달되는 버스(bus)를 나타 낸다.
제어부(110)는 CPU(Central Processing Unit) 또는 마이크로컨트롤러(Microcontroller) 등을 포함하여 데이터를 처리하고 메인 메모리(120) 및 스토리지(130)로부터 데이터 읽기 및 쓰기를 수행한다.
일 실시예예 따른 메인 메모리(120)는 제어부(110)와 직접 데이터를 교환할 수 있는 메모리로, 제어부(110)에서 실행되는 운영체제 또는 애플리케이션의 실행 과정에서 이용되는 메모리이다. 메인 메모리(120)는 메인 메모리(120)는 DRAM(121) 및 비대칭 메모리(123, Asymmetric Memory, AMEM이라고 함)를 포함할 수 있다.
여기에서 비대칭 메모리(123)는 DRAM(121)과 같이 제어부(110)가 직접 바이트 단위로 읽기 또는 쓰기를 할 수 있으나, 읽기 성능과 쓰기 성능이 크게 차이가 나는 메모리를 의미한다. 비대칭 메모리(123)의 대표적인 예로 상변화 메모리(Phase Change Memory)가 있다. 상변화 메모리의 경우는 읽기 성능은 DRAM(121)과 유사한 수준이나 쓰기 성능은 읽기 성능에 비하여 10배 이상 떨어진다.
스토리지(130)는 전원 공급이 중단된 경우에도 저장된 데이터가 소멸되지 않으며, 메인 메모리(120)로부터 용량이 크기 때문에 데이터를 저장하기 위해서 사용된다. 스토리지(130)에 저장된 데이터는 메인 메모리(120)에 로드된 후, 제어부(110)에 의해 처리된다.
제어부(110)는 데이터 처리부(111), 메모리 관리부(Memory Management Unit, 113), 메모리 할당부(Memory Allocator, 115), 스왑 제어부(117) 및 페이지 폴트 핸들러(119)를 포함할 수 있다. 제어부(110)는 다른 기능 유닛을 추가적으로 포함할 수 있으며, 메모리 관리부(113), 메모리 할당부(115), 스왑 제어부(117), 페이지 폴트 핸들러(119)의 세부 기능은 일부 다른 기능 유닛에서 수행될 수 있으며, 제어부(110) 외부의 칩 셋으로 구현될 수 있으며, 제어부(110)에 포함된 기능 유닛의 일부는 운영체제의 프로그램 코드로 구현될 수 있는 등 제어부(110)의 구조는 다양하게 변형될 수 있다. 일 실시예에 따르면, 제어부(110)는 비대칭 메모리(123)를 DRAM(121)의 스왑 스토리지로 이용하여 DRAM(121)에서 스왑 아웃 대상이 되는 페이지를 비대칭 메모리로 이동시킴으로써 DRAM(121)으로부터 페이지를 회수하여 DRAM(121)의 프리 페이지를 늘리는데 이용한다.
이하에서는 제어부(110)에 포함되는 기능 유닛의 동작에 대하여 설명한다.
데이터 처리부(111)는 CPU 또는 마이크로컨트롤러로 구성되어 운영체제나 애플리케이션의 프로세스를 처리한다.
메모리 관리부(113)는 제어부(110)가 참조하는 메모리 영역의 가상 주소를 물리 주소로 변환한다. 메모리 관리부(113)는 각 가상 메모리 페이지가 어떤 물리 메모리 페이지에 매핑되는가를 기록하고 있는 페이지 테이블을 참조하여, 가상 주소를 물리 주소로 변환한다. 또한, 메모리 관리부(113)는 프로세스에 의하여 페이지에 데이터 읽기 또는 쓰기가 진행됨에 따라 페이지 테이블의 페이지 정보를 관리 및 갱신한다.
페이지 테이블에는 각 페이지의 가상 주소에 매핑된 물리 주소 외에도, 페이지마다 해당 페이지의 상태를 나타내는 필드가 포함된다. 페이지 상태를 나타내는 필드는 프로세스가 최근 해당 페이지를 참조했는지를 나타내는 참조 비트(reference bit), 프로세스가 해당 페이지 내용을 변경했는지를 나타내는 변경 비트(dirty bit), 읽기/쓰기에 대한 허가 여부를 나타내는 읽기/쓰기 비트(read/write bit)를 포함할 수 있다.
일 실시예에 따르면, 메모리 관리부(113)는 스왑 아웃된 페이지의 페이지 테이블에 비대칭 메모리의 물리 주소를 매핑하는 다이렉트 매핑을 수행하여 이후에 프로세스가 비대칭 메모리로 스왑 아웃된 페이지에 직접 접근할 수 있도록 할 수 있다. 따라서, 데이터 처리부(111)가 DRAM(121)에서 비대칭 메모리(123)로 스왑 아웃된 페이지를 읽을 때에는 메모리 관리부(113)는 바로 비대칭 메모리(123)의 물리적 주소를 데이터 처리부(111)에 전달하여, 비대칭 메모리(123)에 저장된 페이지의 데이터를 읽을 수 있다.
메모리 할당부(115)는 컴퓨터 프로그램을 수행하기 위하여 필요한 메인 메모리(120)를 할당한다. 메모리 할당부(115)는 DRAM(121) 및 비대칭 메모리(123)의 메모리 공간을 페이지 단위로 관리하기 위한 페이지 리스트를 관리할 수 있다. 메모리 할당부(115)는 쓰기가 빈번하게 일어나는 페이지들은 스왑 아웃의 대상에서 우선 순위를 낮추기 위하여 DRAM(121)의 페이지를 관리할 수 있다. 또한, 메모리 할당부(115)는 비대칭 메모리(123)로 스왑 아웃된 페이지들을 가장 최근에 쓰기가 일어난 페이지들의 순서에 따라 정렬된 LRW(Least Recently Written) 리스트로 관리할 수 있다.
스왑 제어부(117)는 DRAM(121)의 페이지를 비대칭 메모리(123)로 스왑 아웃 하여 DRAM(121)의 페이지를 회수한다. 스왑 제어부(117)는 메모리 할당부(115)의 제어에 따라 동작할 수 있다.
페이지 폴트 핸들러(119)는 페이지에 프로세스에 의해 허용되지 않는 동작 예를 들어, 읽기 전용(read only) 페이지에 쓰기 요청 동작이 발생한 경우 페이지 폴트(page fault)를 발생시키고, 페이지 폴트를 처리할 수 있다. 또한, 페이지 폴트 핸들러(119)는 스왑 아웃된 페이지에 페이지 폴트가 발생한 경우, 비대칭 메모리(123)의 페이지를 DRAM(121)으로 스왑 인 하여 비대칭 메모리(123)의 페이지를 회수하는 동작을 제어한다.
비대칭 메모리를 스왑 스토리지로 이용하면, 하드 디스크나 NAND 메모리 등을 이용하는 경우에 비하여 매우 빠르게 스왑 아웃 및 스왑 인 동작을 수행할 수 있다. 또한, 비대칭 메모리는 DRAM과 같이 바이트 단위로 읽을 수 있으므로 통상적으로 스왑 인 과정에서 수행되는 DRAM으로 데이터를 복구하는 과정 없이 비대칭 메모리로부터 바로 데이터를 읽어냄으로써 메모리 읽기 성능을 개선할 수 있다. 또한, 비대칭 메모리는 DRAM에 비하여 리프레시하는데 전력을 사용하지 않으므로 비대칭 메모리를 스왑 스토리지로 이용하면 DRAM을 증설하는 경우에 비하여 전력을 절감할 수 있다.
도 2는 일 실시예에 따른 스왑 아웃에 따른 다이렉트 매핑 동작을 나타내는 도면이다.
DRAM(121) 상에 프리 페이지가 부족하여 사용중인 페이지들을 회수하기 위하여 메모리 할당자(115)는 스왑 제어부(117)게 제어권을 넘긴다. 스왑 제어부(117) 는 비대칭 메모리(123)의 스왑 공간에 빈 페이지를 찾는다(210). 스왑 제어부(117)는 스왑 아웃 대상 페이지를 비대칭 메모리(123)의 빈 페이지로 복사한다(220). 그러면, 메모리 관리부(113)는 스왑 아웃된 페이지를 소유하고 있던 프로세스의 페이지 테이블 엔트리의 물리적 주소가 비대칭 메모리(123)상의 복사된 페이지를 가리키도록 매핑을 변경한다(230). 이때, 비대칭 메모리(120)에 복사된 페이지에 대한 액세스 허용은 읽기 전용으로 매핑될 수 있다. 또한, 메모리 할당부(115)는 스왑 아웃된 페이지를 LRW(Least Recently Written) 리스트의 헤드에 넣어서 관리할 수 있다.
하드 디스크 드라이브를 스왑 스토리지로 이용하는 경우에는, 프로세스가 스왑 아웃되어 있는 페이지를 접근한 경우 스왑 아웃된 페이지는 메모리상에 존재하지 않는 무효 페이지(invalid page)이므로 페이지 폴트가 발생된다. 프로세스가 스왑 아웃된 페이지의 데이터를 읽기 위해서는, 운영체제는 페이지 폴트가 발생된 페이지를 하드 디스크 드라이버에서 DRAM의 프리 페이지에 복사하고, 복사된 DRAM의 페이지를 해당 프로세스의 페이지 테이블에 매핑하고, 프로세스는 복사된 DRAM 페이지의 주소를 이용하여 DRAM에 복사된 페이지의 데이터을 읽을 수 있다.
그러나, 일 실시예에 따른 비대칭 메모리(123)를 스왑 스토리지로 사용하게 되면 다이렉트 매핑으로 인하여 많은 성능향상을 볼 수 있다. 우선, 프로세스가 스왑 아웃된 페이지에 접근하여 데이터를 읽는 경우, 페이지 폴트가 발생하지 않으며, 스왑 스토리지로부터 물리 메모리로 페이지를 복사해야 하는 오버헤드를 제거할 수 있게 된다. 그러므로, 스왑 스토리지로부터 물리 메모리로 페이지를 복사하 기 위해서 확보해야 할 물리 메모리 페이지 할당의 오버헤드도 제거할 수 있다. 또한, 스왑 스토리지로부터 물리 메모리로 페이지를 읽기 위해서 발생하는 블록 입출력(I/O) 작업이 필요 없어진다.
또한, HDD를 스왑 장치로 사용하는 시스템에서는 HDD의 랜덤 액세스 코스트가 크기 때문에 스왑인 과정에서 페이지 폴트가 발생한 페이지 이외에도 연속된 블록의 미리읽기를 하여 다른 페이지들까지 읽게 된다. 비대칭 메모리(123)는 HDD와 달리 랜덤 액세스 코스트가 크지 않기 때문에 스왑 페이지들에 대한 미리읽기와 같은 복잡한 루틴들을 제거할 수 있다.
비대칭 메모리(123)는 느린 쓰기 특성을 가지므로 비대칭 메모리(123)의 스왑 공간에 있는 페이지 중 쓰기(write)가 빈번하게 일어나는 페이지를 프로세스 페이지로 매핑하면 전체적인 성능이 감소하게 된다. 일 실시예에 따르면, 메모리 할당부(115)는 쓰기가 자주 일어나지 않는 페이지들을 우선적으로 스왑 공간으로 스왑 아웃하는 방법을 제안한다. 그 전에 도 3을 참조하여 LRU(Least Recently Used) 알고리즘에 따른 페이지 관리 방법에 대하여 설명하고 도 4 내지 7을 참조하여 스왑 아웃 대상이 되는 페이지를 선정하는 방법에 대하여 상세하게 설명한다.
도 3은 LRU 알고리즘에 따른 페이지 관리 방법을 나타내는 도면이다.
운영체제들은 페이지 회수를 위하여 스왑 아웃 대상 페이지를 선정하는 방식 중 하나로 LRU 알고리즘을 사용한다. LRU 알고리즘은 최근에 가장 사용되지 않은 페이지, 즉 사용된 지 가장 오래된 페이지를 스왑 아웃 대상으로 선택하는 방식이다. LRU 알고리즘을 이용하기 위하여 DRAM(121)의 페이지들은 액티브 리스트와 인 액티브 리스트로 관리된다.
액티브 리스트에 있는 페이지는 최근 가장 참조된 페이지들의 리스트로 헤드에서 테일 방향으로 정렬되며, 인액티브 리스트에 있는 페이지는 가장 오래 참조되지 않은 페이지의 리스트로 테일에서부터 헤드 방향으로 정렬된다.
운영체제는 현재 요구되는 DRAM(121)의 프리 메모리의 양 즉, 메모리 압력(memory pressure) 정도에 따라서 스캔할 페이지의 개수를 결정하고, 액티브 리스트를 스캔하여 액티브 리스트에서 자주 참조되지 않는 페이지들을 인액티브 리스트로 이동시키는 과정을 수행한 후, 인액티브 리스트를 스캔하여 회수 가능한 페이지들을 스왑 아웃 대상 페이지로 선정함으로써 페이지를 회수한다. 운영체제는 이렇게 회수된 페이지를 프리 메모리에 추가함으로써 메모리 요구에 대응한다.
운영체제는 액티브 리스트의 테일에서부터 리스트를 스캔하여 가장 최근에 참조한 페이지를 액티브 리스트에 헤드에 배치한다. 따라서, 액티브 리스트에 있는 페이지들은 시간이 흐름에 따라 테일 방향으로 이동하게 된다. 액티브 리스트의 테일에 위치한 페이지들은 액티브 리스트의 헤드에 새로운 페이지가 들어옴에 따라서 인액티브 리스트로 강등(demotion)된다. 액티브 리스트에서 강등된 페이지들은 인액티브 리스트의 헤드부터 채워진다. 또한, 운영체제가 인액티브 리스트의 테일에서부터 리스트를 스캔하여 최근에 참조된 페이지가 있으면 해당 페이지를 액티브 리스트의 헤드로 이동시킴으로써 해당 페이지를 액티브 리스트로 승격(promotion)시킨다. 그러나, 이와 같이, LRU 방식은 최근에 참조되었으나 자주 참조되지는 않는 페이지가 자주 참조되지만 최근에는 참조되지 않은 페이지를 스왑 아웃시키는 문제가 있다.
이러한 LRU에 대한 문제점을 고려하여 스왑 아웃 대상 페이지를 선정하는 과정에서 액티브 페이지로의 승격은 2번 이상 참조된 페이지에 대해서만 일어나도록 하는 이차 기회 LRU(second chance LRU) 알고리즘이 이용된다.
도 4는 일 실시예에 따른 프리 페이지 확보를 위한 페이지 회수 과정을 나타내는 도면이다.
일 실시예에 따르면, 인액티브 리스트는 읽기 리스트 및 쓰기 리스트로 나누어 관리된다. 메모리 할당부(115)는 현재의 메모리 압력에 따라서 스캐닝될 페이지의 수와 회수될 페이지의 수를 결정할 수 있다.
일 실시예에 따른 페이지 회수 과정은 액티브 리스트 축소(410), 인액티브 쓰기 리스트 축소(420) 및 스와핑 아웃(430)의 세 부분으로 나누어져 순서대로 진행된다. 원하는 페이지 개수만큼 회수하지 못한 경우(440), 인액티브 읽기 리스트의 테일까지 스캔 완료한 경우라면 액티브 축소 과정(410)으로 돌아가 페이지 회수 과정을 다시 시도한다. 이하에서, 도 5 내지 7을 참조하여 각 세부 동작에 대하여 상세하게 설명한다.
도 5는 일 실시예에 따른 액티브 리스트 축소 동작을 나타내는 도면이다.
메모리 할당부(115)는 현재의 메모리 압박에 따라서 스캐닝될 페이지의 수와 회수될 페이지의 수를 결정하게 된다. 메모리 할당부(115)는 정해진 스캐닝 범위만큼 액티브 리스트(510)를 스캐닝한다.
메모리 할당부(115)는 액티브 리스트(510)의 테일(20)부터 헤드(10) 방향으 로 회수 대상 페이지를 검색하고, 회수 대상 페이지의 쓰기 발생 여부에 따라서 인액티브 읽기 리스트(530) 또는 인액티브 쓰기 리스트(520)로 페이지를 이동시킨다. 이때, 메모리 할당부(115)는 회수 대상 페이지의 페이지 테이블 엔트리 조사하여 더티 비트(dirty bit)가 설정되어 있으면(501), 회수 대상 페이지를 인액티브 쓰기 리스트(520)의 헤드(30)로 이동하고, 그렇지 않으면(501), 회수 대상 페이지를 인액티브 읽기 리스트(530)의 헤드(50)로 이동한다.
도 6은 일 실시예에 따른 인액티브 쓰기 리스트 축소 동작을 나타내는 도면이다.
메모리 할당부(115)는 인액티브 쓰기 리스트(520)를 스캐닝하여 읽기 특성이 큰 페이지들을 인액티브 읽기 리스트(530)로 이동시켜 인액티브 쓰기 리스트(520)를 축소시킨다.
메모리 할당부(115)는 인액티브 쓰기 리스트(520)의 테일(40)에서부터 페이지를 스캐닝한다. 메모리 할당부(115)는 검색되고 페이지의 페이지 테이블 엔트리를 조사하여, 더티 비트가 지정되어 있다면(601), 인액티브 쓰기 리스트(520)의 헤드(30)로 이동시킨다. 더티 비트가 지정되어 있지 않은 경우(601), 메모리 할당부(115)는 페이지가 한 번 참조되었다면(603) 인액티브 읽기 리스트(530)의 헤드(50)로 이동시킨다. 메모리 할당부(115)는 페이지가 한 번 참조되지 않고(603), 두 번 참조되었다면(605), 액티브 리스트(510)의 헤드(10)로 이동시킨다.
페이지의 더티 비트가 지정되어 있지 않고(601), 참조 비트가 모두 지정되어 있지 않다면(603, 605), 메모리 할당부(115)는 최근에 페이지 접근이 없었다는 것 으로, 해당 페이지가 빠르게 회수될 수 있도록 인액티브 읽기 리스트(530)의 테일로 이동시킨다.
도 7은 일 실시예에 따른 인액티브 읽기 리스트 관리 동작을 나타내는 도면이다.
메모리 할당부(115)는 인액티브 읽기 리스트(530)의 테일(60)부터 헤드(50) 방향으로 스캔한다. 스캔중인 페이지에 더티 비트가 지정되어 있다면(701), 메모리 할당부(115)는 해당 페이지를 인액티브 쓰기 리스트(520)의 헤드(30)로 이동시킨다.
더티 비트가 지정되어 있지 않으면(701), 메모리 할당부(115)는 해당 페이지가 한 번 참조되었는지 확인하고(703), 한 번 참조되었다면 해당 페이지를 인액티브 읽기 리스트(530)의 헤드(50)로 이동시킨다. 해당 페이지가 2 번 참조되었다면(705), 메모리 할당부(115)는 해당 페이지를 액티브 리스트(510)의 헤드(10)로 이동시킨다.
메모리 할당부(115)는 페이지의 더티, 참조 비트가 모두 지정되어 있지 않다면 해당 페이지를 스왑 아웃 대상 페이지로 선정한다. 스왑 아웃 대상 페이지들은 마킹될 수 있고, 메모리 할당부(115)가 스왑 제어부(117)에 페이지 회수를 요청하면, 스왑 제어부(117)는 인액티브 읽기 리스트(530)를 스캔하여 스왑 아웃 대상 페이지들을 회수할 수 있다. 페이지가 회수되면, 메모리 관리부(113)는 스왑 아웃된 페이지의 페이지 테이블 엔트리에 읽기 전용 허가(read only permission)가 지정되고, 비대칭 메모리(123)로 스왑 아웃된 페이지의 물리 주소가 매핑되도록 페이지 테이블 엔트리를 변경할 수 있다.
도 8은 일 실시예에 따른 마이그레이션 데몬의 동작을 나타내는 도면이다.
메모리 할당부(115)는 DRAM(121)에서 프리 페이지(810)가 소정의 임계값 이상 확보되면 스왑 제어부(117)에 스왑 아웃된 페이지를 DRAM(121)으로 이동(migration)시키도록 요청할 수 있다. 소정의 임계값은 도 8에 도시된 바와 같이 상위 임계값 및 하위 임계값 사이의 값일 수 있다.
메모리 할당부(115)가 스왑 제어부(117)에 스왑 인을 요청하면, 스왑 제어부(117)는 마이그레이션 데몬(820)이라고 불리는 백그라운드 데몬을 제공하여 DRAM(121)의 프리 페이지가 일정 정도 이상 확보되면 LRW 리스트(830)를 헤드에서 테일 방향으로 스캔하여 스왑 인할 대상 페이지를 선정할 수 있다. 스왑 인된 페이지들은 통상 참조가 주로 되지 않는 페이지들이므로 이러한 특성의 페이지들을 모두 DRAM(121)으로 이동시키게 되면 시스템의 성능이 저하될 수 있다. 따라서, 프리페이지에 대한 임계값을 정하여 시스템의 프리 페이지(810)가 다 소진될 때까지 페이지가 스왑인되는 것을 방지할 수 있다.
일 실시예에 따르면, 스왑 제어부(117)는 LRW 리스트(830)의 헤드에 위치한 가장 최근에 쓰여진 스왑 페이지들이 우선적으로 DRAM(121)으로 이동되도록 한다.
도 9는 일 실시예에 따른 스왑 페이지의 LRW 관리를 나타내는 도면이다.
일 실시예에 따르면 비대칭 메모리(123)의 스왑 아웃된 페이지들은 LRW 리스트로 관리된다. 도 9는 모든 스왑 페이지가 최근에 쓰기가 일어난 페이지들의 순서대로 정렬된 LRW 리스트를 나타낸다. 페이지(901)이 스왑 아웃되어 읽기 전용 허가가 지정된 페이지인 경우, 시간 t0에서 프로세스가 페이지(901)에 쓰기 접근을 하는 경우, 쓰기 페이지 폴트가 발생한다.
쓰기 페이지 폴트가 발생된 페이지는 도 9에 도시된 바와 같이, 시간 t1에서 LRW의 헤드로 이동되고, 스왑 제어부(117)는 폴트가 발생한 페이지의 읽기 전용 허가를 읽기 쓰기 허가로 변경한다. 마이그레이션 데몬(820)이 LRW 리스트를 스캐닝하여 폴트가 발생한 페이지의 읽기 쓰기 허가를 새로 설정하기 전까지는 집중적으로 쓰기가 발생하더라도 더 이상 페이지 폴트가 발생하지 않도록 한다. DRAM(121)의 프리 메모리가 소진되어, 최근에 스왑 인된 페이지들을 다시 스왑 아웃해야 하는 경우를 방지하기 위하여, 마이그레이션 데몬(820)의 LRW 리스트 스캐닝은 DRAM(121)의 프리 메모리가 일정 값 이상 확보된 경우에만 수행될 수 있다.
마이그레이션 데몬(820)은 LRW 리스트의 헤드부터 스캐닝할 때 적어도 한 번 이상 프로세스에 의한 쓰기 접근이 있어서 읽기 쓰기 허가가 지정된 페이지들을 마이그레이션 대상으로 마킹하고, 해당 페이지의 페이지 테이블 엔트리에 읽기 쓰기 허용 비트를 읽기 전용으로 다시 설정한다. 이러한 과정을 통해서 LRW 리스트의 헤드에는 최근 쓰기가 발생한 페이지들이 모이게 된다. 마킹되고 읽기 전용으로 설정된 페이지들은 마이그레이션 데몬(820)에 의해 DRAM(121)으로 이동될 수 있다.
다른 방법으로, 마킹되고 읽기 전용으로 설정된 페이지들이 마이그레이션 대상으로 선정되지만, 실제 DRAM(121)으로의 마이그레이션은 추후에 이 마킹되고 읽기 전용으로 설정된 페이지들에 쓰기가 일어나는 경우에 발생될 수 있다. 이때 읽기 전용이므로 페이지 폴트가 발생되고, 페이지 폴트 핸들러(119)는 이들 페이지를 DRAM(121)으로 이동시킬 수 있다.
한편, 읽기 전용으로 설정된 페이지들에 쓰기가 일어나는 경우에도, DRAM(121)에서 프리 페이지가 임계값 이상 확보되지 않으면, 마이그레이션 데몬(820)은 마이그레이션을 수행하지 않고, 쓰기가 발생된 페이지를 LRW의 헤드로 이동시키고, 읽기 쓰기 허가 비트를 읽기 전용 허가에서 읽기 쓰기 허가로 다시 지정할 수 있다.
본 발명의 일 양상은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로서 구현될 수 있다. 상기의 프로그램을 구현하는 코드들 및 코드 세그먼트들은 당해 분야의 컴퓨터 프로그래머에 의하여 용이하게 추론될 수 있다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 디스크 등을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드로 저장되고 실행될 수 있다.
이상의 설명은 본 발명의 일 실시예에 불과할 뿐, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 본질적 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현할 수 있을 것이다. 따라서, 본 발명의 범위는 전술한 실시예에 한정되지 않고 특허 청구범위에 기재된 내용과 동등한 범위 내에 있는 다양한 실시 형태가 포함되도록 해석되어야 할 것이다.
도 1은 일 실시예에 따른 메모리 시스템의 구성을 나타내는 도면이다.
도 2는 일 실시예에 따른 스왑 아웃에 따른 다이렉트 매핑 동작을 나타내는 도면이다.
도 3은 LRU 알고리즘에 따른 페이지 관리 방법을 나타내는 도면이다.
도 4는 일 실시예에 따른 프리 페이지 확보를 위한 페이지 회수 과정을 나타내는 도면이다.
도 5는 일 실시예에 따른 액티브 리스트 축소 동작을 나타내는 도면이다.
도 6은 일 실시예에 따른 인액티브 쓰기 리스트 축소 동작을 나타내는 도면이다.
도 7은 일 실시예에 따른 인액티브 읽기 리스트 관리 동작을 나타내는 도면이다.
도 8은 일 실시예에 따른 마이그레이션 데몬의 동작을 나타내는 도면이다.
도 9는 일 실시예에 따른 스왑 페이지의 LRW 관리를 나타내는 도면이다.
Claims (20)
- 비대칭 메모리;DRAM; 및상기 비대칭 메모리를 상기 DRAM의 스왑 스토리지로 이용하여 상기 DRAM에서 스왑 아웃 대상으로 선정된 페이지를 상기 비대칭 메모리로 이동시키는 제어부를 포함하는 메모리 시스템.
- 제1항에 있어서,상기 제어부는 프로세스가 상기 스왑 아웃된 페이지에 직접 접근이 가능하도록 스왑 아웃된 페이지의 페이지 테이블에 직접 상기 비대칭 메모리로 스왑 아웃된 페이지의 주소를 매핑하는 포함하는 메모리 시스템.
- 제1항에 있어서,상기 제어부는 쓰기가 빈번하게 일어나는 페이지들은 스왑 아웃의 대상에서 우선 순위를 낮추는 메모리 시스템.
- 제3항에 있어서,상기 제어부는 페이지들을 최근에 참조가 된 페이지들로 구성된 액티브 리스트 최근에 참조되지 않은 페이지들로 구성된 인액티브 리스트로 관리하고, 상기 인 액티브 리스트는 쓰기 발생 여부에 따라서 인액티브 쓰기 리스트 및 인액티브 읽기 리스트로 구분되는 메모리 시스템.
- 제4항에 있어서,상기 제어부는 상기 인액티브 쓰기 리스트 및 상기 인액티브 읽기 리스트를 스캐닝하여 최근에 2번 이상 참조된 페이지들을 상기 액티브 리스트로 승격시키는 메모리 시스템.
- 제4항에 있어서,상기 제어부는 상기 액티브 리스트 중 최근에 참조되지 않은 것으로 결정되는 페이지를 각 페이지의 쓰기 발생 여부에 따라 상기 인액티브 쓰기 리스트 및 상기 인액티브 읽기 리스트로 이동시켜서 상기 액티브 리스트를 축소하고,상기 인액티브 쓰기 리스트상의 페이지 중에서 쓰기가 최근에 일어나지 않은 페이지들을 인액티브 읽기 리스트로 이동시켜서 인액티브 쓰기 리스트를 축소하고,상기 인액티브 쓰기 리스트 축소 후에 상기 인액티브 읽기 리스트상의 페이지들 중 스왑 아웃될 페이지들을 선정하는 메모리 시스템.
- 제6항에 있어서,상기 제어부는 상기 인액티브 쓰기 리스트를 축소할 때, 스캔중인 페이지의 페이지 테이블 엔트리를 참조하여 상기 페이지에 더티 비트 및 참조 비트가 설정되 어 있지 않은 경우, 상기 페이지를 인액티브 읽기 리스트의 테일에 위치시키는 메모리 시스템.
- 제1항에 있어서,상기 제어부는 상기 스왑 아웃된 페이지들을 가장 최근에 쓰기가 일어난 페이지들의 순서에 따라 정렬된 LRW 리스트로 관리하고, 상기 가장 최근에 쓰기가 일어난 페이지들을 스왑 인 대상으로 선정하는 메모리 시스템.
- 제8항에 있어서,상기 제어부는 상기 스왑 아웃된 페이지들에 대하여 읽기 전용 허가를 지정하고 상기 스왑 아웃된 페이지에 쓰기 요청이 수신되면 상기 쓰기 요청이 있는 페이지의 읽기 전용 허가를 읽기 쓰기 허가로 변경하여 상기 페이지에 쓰기를 허용하고, 상기 쓰기가 수행된 페이지를 상기 LRW 리스트의 헤드로 이동시키는 메모리 시스템.
- 제8항에 있어서,상기 제어부는 상기 LRW 리스트를 스캐닝할 때 읽기 쓰기 허가가 지정된 페이지들을 마이그레이션 대상으로 마킹하고 상기 페이지들을 다시 읽기 전용으로 변경 지정하고, 상기 마킹된 페이지들에 쓰기 접근이 있는 경우 상기 마킹된 페이지에 페이지 폴트를 발생시키고, 상기 페이지 폴트가 발생된 페이지들을 상기 DRAM으 로 이동시키는 메모리 시스템.
- 제1항에 있어서,상기 제어부는 상기 DRAM의 프리 페이지가 임계값 이상 확보되면 상기 스왑 아웃된 페이지들을 상기 DRAM으로 이동시키는 메모리 시스템.
- 비대칭 메모리 및 DRAM를 포함하는 메모리 시스템을 관리하는 방법으로서,상기 비대칭 메모리를 상기 DRAM의 스왑 스토리지로 이용하여 상기 DRAM에서 스왑 아웃 대상으로 선정된 페이지를 상기 비대칭 메모리로 이동시키는 방법.
- 제12항에 있어서,프로세스가 상기 스왑 아웃된 페이지에 직접 접근이 가능하도록 스왑 아웃된 페이지의 페이지 테이블에 직접 상기 비대칭 메모리로 스왑 아웃된 페이지의 주소를 매핑하는 단계를 더 포함하는 방법.
- 제12항에 있어서,쓰기가 빈번하게 일어나는 페이지들은 스왑 아웃의 대상에서 우선 순위를 낮추는 단계를 더 포함하는 방법.
- 제12항에 있어서,상기 스왑 아웃 대상이 페이지를 선정하기 위하여 페이지들을 최근에 참조가 된 페이지들로 구성된 액티브 리스트 최근에 참조되지 않은 페이지들로 구성된 인액티브 리스트로 관리하는 단계를 포함하고,상기 인액티브 리스트는 쓰기 발생 여부에 따라서 인액티브 쓰기 리스트 및 인액티브 읽기 리스트로 구분되는 방법.
- 제15항에 있어서,상기 인액티브 쓰기 리스트 및 상기 인액티브 읽기 리스트를 스캐닝하여 최근에 2번 이상 참조된 페이지들을 상기 액티브 리스트로 승격시키는 단계를 더 포함하는 방법.
- 제15항에 있어서,상기 페이지들을 관리하는 단계는,상기 액티브 리스트 중 최근에 참조되지 않은 것으로 결정되는 페이지에 대하여 각 페이지의 쓰기 발생 여부에 따라 상기 인액티브 쓰기 리스트 및 상기 인액티브 읽기 리스트로 이동시켜서 상기 액티브 리스트를 축소하는 단계;상기 인액티브 쓰기 리스트상의 페이지 중에서 쓰기가 최근에 일어나지 않은 페이지들을 인액티브 읽기 리스트로 이동시켜서 인액티브 쓰기 리스트를 축소시키는 단계; 및상기 인액티브 읽기 리스트상의 페이지들 중 스왑 아웃될 페이지들을 선정하 는 단계를 포함하는 방법.
- 제12항에 있어서,상기 스왑 아웃된 페이지들을 가장 최근에 쓰기가 일어난 페이지들의 순서에 따라 정렬된 LRW 리스트로 관리하는 단계; 및상기 가장 최근에 쓰기가 일어난 페이지들을 스왑 인 대상으로 선정하는 단계를 더 포함하는 방법.
- 제18항에 있어서,상기 스왑 아웃된 페이지를 관리하는 단계는,상기 스왑 아웃된 페이지들에 대하여 읽기전용 허가를 지정하는 단계;상기 스왑 아웃된 페이지에 쓰기 요청이 수신되면 상기 쓰기 요청이 있는 페이지에 대하여 읽기 쓰기 허가로 변경 지정하여 상기 페이지에 쓰기를 허용하는 단계; 및상기 쓰기가 수행된 페이지를 상기 LRW 리스트의 헤드로 이동시키는 단계를 더 포함하는 방법.
- 제18항에 있어서,상기 LRW 리스트를 스캐닝할 때 읽기 쓰기 허가가 지정된 페이지들을 마이그레이션 대상으로 마킹하고, 상기 페이지들을 다시 읽기 전용으로 변경 지정하는 단 계;상기 마킹된 페이지들에 쓰기 접근이 있는 경우 상기 마킹된 페이지에 페이지 폴트를 발생시키는 단계; 및상기 페이지 폴트가 발생된 페이지들을 상기 DRAM으로 이동시키는 단계를 더 포함하는 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090050968A KR101612922B1 (ko) | 2009-06-09 | 2009-06-09 | 메모리 시스템 및 메모리 시스템 관리 방법 |
US12/756,622 US20100312955A1 (en) | 2009-06-09 | 2010-04-08 | Memory system and method of managing the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090050968A KR101612922B1 (ko) | 2009-06-09 | 2009-06-09 | 메모리 시스템 및 메모리 시스템 관리 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20100132244A true KR20100132244A (ko) | 2010-12-17 |
KR101612922B1 KR101612922B1 (ko) | 2016-04-15 |
Family
ID=43301564
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020090050968A KR101612922B1 (ko) | 2009-06-09 | 2009-06-09 | 메모리 시스템 및 메모리 시스템 관리 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20100312955A1 (ko) |
KR (1) | KR101612922B1 (ko) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140075416A (ko) * | 2012-12-11 | 2014-06-19 | 삼성전자주식회사 | 모바일 장치 및 그것의 스왑을 통한 데이터 관리 방법 |
US9454496B2 (en) | 2013-03-14 | 2016-09-27 | Samsung Electronics Co., Ltd. | Memory system |
KR20200047814A (ko) * | 2018-10-24 | 2020-05-08 | 삼성전자주식회사 | 스토리지 모듈, 스토리지 모듈의 동작 방법, 및 스토리지 모듈을 제어하는 호스트의 동작 방법 |
WO2021108220A1 (en) * | 2019-11-25 | 2021-06-03 | Micron Technology, Inc. | User interface based page migration for performance enhancement |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9465745B2 (en) * | 2010-04-09 | 2016-10-11 | Seagate Technology, Llc | Managing access commands by multiple level caching |
US9032398B2 (en) * | 2010-07-12 | 2015-05-12 | Vmware, Inc. | Online classification of memory pages based on activity level represented by one or more bits |
KR20120112965A (ko) * | 2011-04-04 | 2012-10-12 | 삼성전자주식회사 | 비휘발성 메모리 장치, 이를 스왑 메모리로 이용하는 데이터 처리 장치, 및 이를 이용한 스왑 방법 |
JP2013196421A (ja) * | 2012-03-21 | 2013-09-30 | Nec Corp | 仮想化システム、仮想サーバ、メモリ管理方法及びメモリ管理プログラム |
KR101924022B1 (ko) | 2012-04-03 | 2019-02-22 | 삼성전자주식회사 | 메모리 시스템 및 그것의 페이지 교체 방법 |
CN104216837A (zh) * | 2013-05-31 | 2014-12-17 | 华为技术有限公司 | 一种内存系统、内存访问请求的处理方法和计算机系统 |
US10061532B2 (en) * | 2014-01-30 | 2018-08-28 | Hewlett Packard Enterprise Development Lp | Migrating data between memories |
KR102116984B1 (ko) | 2014-03-11 | 2020-05-29 | 삼성전자 주식회사 | 메모리 스왑 오퍼레이션 제어 방법 및 이를 적용하는 데이터 처리 시스템 |
US9678670B2 (en) | 2014-06-29 | 2017-06-13 | Plexistor Ltd. | Method for compute element state replication |
US10140029B2 (en) | 2014-12-10 | 2018-11-27 | Netapp, Inc. | Method and apparatus for adaptively managing data in a memory based file system |
US9851919B2 (en) * | 2014-12-31 | 2017-12-26 | Netapp, Inc. | Method for data placement in a memory based file system |
KR102314138B1 (ko) | 2015-03-05 | 2021-10-18 | 삼성전자 주식회사 | 모바일 장치 및 모바일 장치의 데이터 관리 방법 |
US9703492B2 (en) | 2015-05-19 | 2017-07-11 | International Business Machines Corporation | Page replacement algorithms for use with solid-state drives |
US10108555B2 (en) * | 2016-05-26 | 2018-10-23 | Macronix International Co., Ltd. | Memory system and memory management method thereof |
KR20180044095A (ko) | 2016-10-21 | 2018-05-02 | 삼성전자주식회사 | 전자 시스템 및 그것의 동작 방법 |
KR102674538B1 (ko) * | 2019-02-28 | 2024-06-13 | 엘지전자 주식회사 | 디지털 디바이스 및 그 제어 방법 |
US11436041B2 (en) | 2019-10-03 | 2022-09-06 | Micron Technology, Inc. | Customized root processes for groups of applications |
US11599384B2 (en) | 2019-10-03 | 2023-03-07 | Micron Technology, Inc. | Customized root processes for individual applications |
US11474828B2 (en) | 2019-10-03 | 2022-10-18 | Micron Technology, Inc. | Initial data distribution for different application processes |
CN115757193B (zh) * | 2019-11-15 | 2023-11-03 | 荣耀终端有限公司 | 一种内存的管理方法及电子设备 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU1447295A (en) * | 1993-12-30 | 1995-08-01 | Connectix Corporation | Virtual memory management system and method using data compression |
BR9507260A (pt) * | 1994-03-31 | 1997-09-30 | Unilever Nv | Composição detergente para lavagem de tecido |
JP3264319B2 (ja) * | 1997-06-30 | 2002-03-11 | 日本電気株式会社 | バスブリッジ |
TW416032B (en) * | 1999-03-05 | 2000-12-21 | Via Tech Inc | Memory pages management device and method for tracking memory access |
US6542955B1 (en) * | 1999-06-03 | 2003-04-01 | Programmable Microelectronics Corporation | Microcontroller virtual memory system and method |
US6661454B1 (en) * | 1999-06-14 | 2003-12-09 | Eastman Kodak Company | Digital camera with memory card fullness icon |
US20060004977A1 (en) * | 2004-06-30 | 2006-01-05 | Joefon Jann | Autonomically tuning the virtual memory subsystem of a computer operating system |
US7543123B2 (en) * | 2005-11-07 | 2009-06-02 | International Business Machines Corporation | Multistage virtual memory paging system |
US7519781B1 (en) * | 2005-12-19 | 2009-04-14 | Nvidia Corporation | Physically-based page characterization data |
KR100772863B1 (ko) * | 2006-01-13 | 2007-11-02 | 삼성전자주식회사 | 요구 페이징 기법을 적용한 시스템에서 페이지 교체 수행시간을 단축시키는 방법 및 장치 |
JP4209906B2 (ja) * | 2006-08-02 | 2009-01-14 | 株式会社日立製作所 | 低消費電力メモリ管理方法及びその方法を用いた計算機 |
US7774556B2 (en) * | 2006-11-04 | 2010-08-10 | Virident Systems Inc. | Asymmetric memory migration in hybrid main memory |
TWI320180B (en) * | 2007-01-12 | 2010-02-01 | A driving method and a driving system for writing the phase change memory | |
US7757035B2 (en) * | 2007-06-26 | 2010-07-13 | Intel Corporation | Method for optimizing virtualization technology and memory protections using processor-extensions for page table and page directory striping |
US20100169602A1 (en) * | 2008-12-29 | 2010-07-01 | Jared E Hulbert | Method and Apparatus for Efficient Memory Placement |
US20100169708A1 (en) * | 2008-12-29 | 2010-07-01 | John Rudelic | Method and apparatus to profile ram memory objects for displacment with nonvolatile memory |
-
2009
- 2009-06-09 KR KR1020090050968A patent/KR101612922B1/ko not_active IP Right Cessation
-
2010
- 2010-04-08 US US12/756,622 patent/US20100312955A1/en not_active Abandoned
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140075416A (ko) * | 2012-12-11 | 2014-06-19 | 삼성전자주식회사 | 모바일 장치 및 그것의 스왑을 통한 데이터 관리 방법 |
US9454496B2 (en) | 2013-03-14 | 2016-09-27 | Samsung Electronics Co., Ltd. | Memory system |
KR20200047814A (ko) * | 2018-10-24 | 2020-05-08 | 삼성전자주식회사 | 스토리지 모듈, 스토리지 모듈의 동작 방법, 및 스토리지 모듈을 제어하는 호스트의 동작 방법 |
WO2021108220A1 (en) * | 2019-11-25 | 2021-06-03 | Micron Technology, Inc. | User interface based page migration for performance enhancement |
Also Published As
Publication number | Publication date |
---|---|
KR101612922B1 (ko) | 2016-04-15 |
US20100312955A1 (en) | 2010-12-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20100132244A (ko) | 메모리 시스템 및 메모리 시스템 관리 방법 | |
JP5607943B2 (ja) | メモリシステム及びその磨耗度管理方法 | |
US9785564B2 (en) | Hybrid memory with associative cache | |
AU2012352178B2 (en) | Working set swapping using a sequentially ordered swap file | |
KR100771519B1 (ko) | 플래시 메모리를 포함한 메모리 시스템 및 그것의 머지방법 | |
US11341059B2 (en) | Using multiple memory elements in an input-output memory management unit for performing virtual address to physical address translations | |
US9535628B2 (en) | Memory system with shared file system | |
WO2014061064A1 (en) | Cache control apparatus and cache control method | |
JP2017138852A (ja) | 情報処理装置、記憶装置およびプログラム | |
KR20090037705A (ko) | 불휘발성 메모리 시스템 및 그것의 파일 데이터 관리 방법 | |
JP2009276853A (ja) | フラッシュメモリ装置 | |
US20110238908A1 (en) | Disc device | |
US20140013025A1 (en) | Hybrid memory with associative cache | |
US10430346B2 (en) | DDR storage adapter | |
KR20100089229A (ko) | 플래시 메모리의 주소 매핑에 의한 데이터 관리 방법 및 장치 | |
JP2016085677A (ja) | メモリ管理方法、メモリ管理プログラム及び情報処理装置 | |
EP3724774B1 (en) | Rinsing cache lines from a common memory page to memory | |
EP2381354A2 (en) | Data recording device | |
US12086447B2 (en) | Systems and methods for reducing instruction code memory footprint for multiple processes executed at a coprocessor | |
CN104424124A (zh) | 内存装置、电子设备和用于控制内存装置的方法 | |
JP4792065B2 (ja) | データ記憶方法 | |
EP4033346B1 (en) | Affinity-based cache operation for a persistent storage device | |
JP2005004282A (ja) | ディスクアレイ装置、ディスクアレイ装置の管理方法及び管理プログラム | |
JP6878341B2 (ja) | 管理装置、情報処理装置およびメモリ制御方法 | |
US11188238B2 (en) | Information processing apparatus, memory control method, and computer program product |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
LAPS | Lapse due to unpaid annual fee |