KR101166803B1 - 비휘발성 메모리 및 휘발성 메모리를 포함하는 메모리 시스템 및 그 시스템을 이용한 처리 방법 - Google Patents
비휘발성 메모리 및 휘발성 메모리를 포함하는 메모리 시스템 및 그 시스템을 이용한 처리 방법 Download PDFInfo
- Publication number
- KR101166803B1 KR101166803B1 KR1020100140281A KR20100140281A KR101166803B1 KR 101166803 B1 KR101166803 B1 KR 101166803B1 KR 1020100140281 A KR1020100140281 A KR 1020100140281A KR 20100140281 A KR20100140281 A KR 20100140281A KR 101166803 B1 KR101166803 B1 KR 101166803B1
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- data
- sub
- layer
- read
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- 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/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
본 발명은 비휘발성 메모리 및 휘발성 메모리를 포함하는 메모리 시스템 및 그 시스템을 이용한 동작 처리 방법에 관한 것으로서, 보다 상세하게는, 읽기 참조 및 쓰기 참조를 병렬적으로 수행하는 비휘발성 메모리 및 휘발성 메모리를 포함하는 시스템 및 그 시스템을 이용한 동작 처리 방법에 관한 것이다.
복수의 계층의 메모리로 구성된 메모리 시스템은 휘발성 메모리로 구성된 제 1 메모리 계층, 비휘발성 메모리로 구성된 제 2 메모리 계층 및 상기 제 1 메모리 계층 및 제 2 메모리 계층 사이에 배치되고, 복수의 메모리를 포함하며, 상기 제 1 메모리 계층에서 발생한 메모리 참조 실패에 응답하여 읽기 참조 실패가 발생한 데이터 및 쓰기 참조 실패가 발생한 데이터를 로딩(loading)하는 제 3 메모리 계층을 포함할 수 있다.
복수의 계층의 메모리로 구성된 메모리 시스템은 휘발성 메모리로 구성된 제 1 메모리 계층, 비휘발성 메모리로 구성된 제 2 메모리 계층 및 상기 제 1 메모리 계층 및 제 2 메모리 계층 사이에 배치되고, 복수의 메모리를 포함하며, 상기 제 1 메모리 계층에서 발생한 메모리 참조 실패에 응답하여 읽기 참조 실패가 발생한 데이터 및 쓰기 참조 실패가 발생한 데이터를 로딩(loading)하는 제 3 메모리 계층을 포함할 수 있다.
Description
본 발명은 비휘발성 메모리 및 휘발성 메모리를 포함하는 메모리 시스템 및 그 시스템을 이용한 동작 처리 방법에 관한 것으로서, 보다 상세하게는, 읽기 참조 및 쓰기 참조에 대응하는 데이터를 로딩하는 비휘발성 메모리 및 휘발성 메모리를 포함하는 시스템 및 그 시스템을 이용한 처리 방법에 관한 것이다.
최근 전자 장치의 이용 범위가 점차 확장됨에 따라 산업 활동뿐만 아니라 사람의 개인 생활에도 다양한 전자 장치가 이용되고 있다. 특히 인터넷 등의 통신 기술의 발달로 인하여, 데스크탑(desktop), 노트북(notebook) 등의 컴퓨터뿐만 아니라 스마트폰(smart phone), PDA(personal digital assistant), 태블릿 PC 등 휴대용 단말 등이 널리 보급되고 있다.
이러한 전자 장치는 대부분 프로그램 등의 구동을 위하여 메모리를 포함하고 있으며, 이러한 메모리의 성능 및 크기에 따라 전자 장치의 성능 및 크기가 영향을 받을 정도로 메모리의 성능이 점차 중요시되고 있다.
도 1은 종래의 기술에 따른 메모리 시스템에 적용되는 메모리 계층 구조를 도시한 도면이다.
종래의 기술에 따른 메모리 시스템(1)은 L1/L2 캐시(cache) 메모리 계층(10), 메인 메모리 계층(20) 및 저장 장치(30)를 포함하여 중앙 처리 장치(central processing unit, CPU)로 데이터를 제공한다.
L1/L2 캐시(cache) 메모리 계층(10) 및 메인 메모리 계층(20)은 SRAM, DRAM 등의 휘발성 메모리로 구성되며, 저장 장치(30)는 플래시 메모리(flash memory) 또는 하드 디스크 드라이브(hard disk drive, HDD) 등의 비휘발성 메모리로 구성된다.
일반적으로 메모리의 계층 구조는 상위 계층의 메모리일수록 읽기/쓰기 속도가 빠른 고가의 메모리가 사용되며, 하위 계층의 메모리일수록 읽기/쓰기 속도가 상대적으로 느리며 저가의 메모리가 사용된다. 도 1에 도시된 실시예에서는 L1/L2 캐시 메모리 계층(10)이 가장 상위의 메모리 계층이 될 것이며, 저장장치(30)이 가장 하위의 메모리 계층이 될 것이다.
도 1에 도시된 종래의 기술에서 CPU(40)는 프로그램 등의 실행을 위하여 저장 장치(30)로부터 데이터를 획득하며, 이 과정에서 획득한 데이터를 L1/L2 캐시(cache) 메모리 계층(10) 및 메인 메모리 계층(20)에 저장한다.
CPU(40)는 데이터의 읽기(read) 또는 쓰기(write) 동작을 수행하기 위하여 필요한 데이터를 L1/L2 캐시(cache) 메모리 계층(10)에 요구, 즉 메모리 참조를 요구하며, 요구된 데이터가 L1/L2 캐시(cache) 메모리 계층(10)에 존재하지 않는 경우 참조 실패(cache miss)가 발생할 수 있다.
참조 실패(cache miss)가 발생하는 경우, 참조 실패가 발생한 데이터에 대하여 메인 메모리 계층(20)에 다시 읽기 참조 또는 쓰기 참조의 처리가 요청된다.
이처럼 종래의 기술에 따르면, 최상위 메모리 계층, 예를 들어 L1/L2 캐시(cache) 메모리 계층에서 참조 실패가 발생한 경우, 최상위 메모리 계층보다 하위 계층인 메인 메모리 계층에 대하여 읽기 참조 또는 쓰기 참조를 수행하며, 최상위 메모리 계층 및 메인 메모리 계층이 모두 휘발성 메모리로 구성된다.
휘발성 메모리와 비휘발성 메모리는 집적도(density), 읽기 및 쓰기 속도, 전력 소모 등에서 서로 다른 특성을 갖는데, 통상 휘발성 메모리는 비휘발성 메모리 보다 읽기 및 쓰기 속도가 빠르며, 비휘발성 메모리는 휘발성 메모리보다 집적도가 높은 편이다.
최근 비휘발성 메모리에 대한 개발이 활발히 진행됨에 따라 비휘발성 메모리의 접근 속도가 점점 개선되고 있다. 특히 읽기 속도는, 쓰기 속도에 비해 휘발성 메모리와의 성능 차이가 많이 줄어들고 있다. 따라서, 휘발성 메모리뿐만 아니라 비휘발성 메모리를 포함하여, 휘발성 메모리 및 전술한 개선된 비휘발성 메모리의 특성을 살릴 수 있는 메모리 시스템에 대한 개발이 요구되고 있다.
본 발명의 일 실시예는 휘발성 메모리와 비휘발성 메모리의 상이한 동작 특성을 이용하여 비휘발성 메모리로 구성된 읽기 메모리 계층과 휘발성 메모리로 구성된 쓰기 메모리 계층으로 분리된 구조를 갖는 고성능 및 저전력 시스템을 구현하고자 한다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 발명의 제 1 측면에 따른 메모리 시스템은, 휘발성 메모리로 구성된 제 1 메모리 계층, 비휘발성 메모리로 구성된 제 3 메모리 계층 및 상기 제 1 메모리 계층 및 제 3 메모리 계층 사이에 배치되고, 상기 제 1 메모리 계층에서 발생한 메모리 참조 실패에 응답하여 읽기 참조 실패가 발생한 데이터 및 쓰기 참조 실패가 발생한 데이터가 각각 로딩되는 제 1 서브 메모리와 제 2 서브 메모리를 포함하는 제 2 메모리 계층을 포함한다.
또한, 본 발명의 제 1 측면에서, 상기 제 1 서브 메모리는 상기 읽기 참조 실패가 발생한 데이터를 로딩하고, 상기 제 2 서브 메모리는 상기 쓰기 참조 실패가 발생한 데이터를 로딩하며, 상기 제 1 메모리의 읽기 속도 및 쓰기 속도의 차이는 상기 제 2 메모리의 읽기 속도 및 쓰기 속도의 차이보다 더 클 수 있다.
또한, 본 발명의 제 1 측면에서, 상기 제 1 서브 메모리는 하나 이상의 비휘발성 메모리를 포함할 수 있으며, 상기 제 1 서브 메모리에 포함된 비휘발성 메모리가 복수 개 존재하는 경우, 상기 복수개의 비휘발성 메모리는 서로 접근 속도가 상이할 수 있고, 상기 복수개의 비휘발성 메모리는 접근 속도에 기초하여 상기 제 1 메모리 계층에 대해 계층화되어 구성될 수 있다.
본 발명의 제 2 측면에 따른 메모리 시스템은, 휘발성 메모리로 구성된 제 1 메모리 계층, 비휘발성 메모리로 구성된 제 3 메모리 계층 및 상기 제 1 메모리 계층 및 제 3 메모리 계층 사이에 배치되고, 제 1 서브 메모리와 제 2 서브 메모리를 포함하는 제 2 메모리 계층을 포함하고, 상기 제 1 메모리 계층에서 발생한 메모리 참조 실패에 응답하여, 상기 제 2 서브 메모리에 참조 실패가 발생한 데이터가 로딩되며, 상기 제 1 서브 메모리는 상기 제 2 서브 메모리에 로딩된 데이터 중 읽기 참조 가 주로 발생한 데이터가 저장되는 것을 특징으로 한다.
본 발명의 제 3 측면에 따른 메모리 시스템은, 중앙 처리 장치(central processing unit, CPU)로 저장한 데이터를 전송하는 제 1 메모리 계층, 상기 제 1 메모리 계층에서 발생한 참조 실패에 응답하여 읽기 참조 실패가 발생한 데이터 및 쓰기 참조 실패가 발생한 데이터를 로딩하는 제 2 메모리 계층 및 상기 중앙 처리 장치에 의해 구동되는 프로그램에 대한 데이터를 상기 제 2 메모리 계층 및 상기 제 1 메모리를 통해 상기 중앙 처리 장치로 전송하는 제 3 메모리 계층을 포함하고, 상기 제 2 메모리 계층은 읽기 속도 및 쓰기 속도의 차이가 서로 상이한 복수의 메모리를 포함한다.
본 발명의 제 4 측면을 따른 메모리 시스템은, 중앙 처리 장치(central processing unit, CPU)로 데이터를 제공하는 캐쉬 메모리(cache memory)에서 발생한 읽기 참조 실패에 대응하는 데이터를 로딩하는 제 1 서브 메모리 및 상기 캐쉬 메모리에서 발생한 쓰기 참조 실패에 대응하는 데이터를 로딩하는 제 2 서브 메모리를 포함하고, 상기 제 1 메모리의 읽기 속도 및 쓰기 속도의 차이는 상기 제 2 메모리의 읽기 속도 및 쓰기 속도의 차이보다 더 큰 것을 특징으로 한다.
본 발명의 제 5 측면을 따른 메인 메모리는, 중앙 처리 장치(central processing unit, CPU)로 데이터를 제공하는 캐쉬 메모리(cache memory)에서 발생한 참조 실패에 대응하는 데이터를 로딩하는 제 2 서브 메모리, 상기 제 2 서브 메모리의 로딩 가능한 용량이 미리 설정된 임계 값 이하인 경우, 상기 캐쉬 메모리에서 발생한 메모리 참조 유형에 기초하여 선택된 데이터가 저장되는 제 1 서브 메모리를 포함하고, 상기 제 1 메모리의 읽기 속도 및 쓰기 속도의 차이는 상기 제 2 메모리의 읽기 속도 및 쓰기 속도의 차이보다 더 큰 것을 특징으로 한다.
전술한 본 발명의 과제 해결 수단에 의하면, 집적도(density)가 높고 읽기 속도 성능이 개선된 비휘발성 메모리에 읽기 참조가 발생한 데이터를 로딩하고, 비휘발성 메모리에 비하여 쓰기 속도가 우수한 휘발성 메모리에 쓰기 참조가 발생한 데이터를 로딩하여, 비휘발성 메모리 및 휘발성 메모리의 장점을 모두 이용하는 높은 효율의 메모리 시스템을 제공할 수 있다.
또한, 전술한 본 발명의 과제 해결 수단에 의하면, 프로그램의 데이터 별로 읽기 참조 또는 쓰기 참조의 발생 횟수를 미리 파악하여, 읽기 참조가 주로 발생하는 데이터는 비휘발성 메모리에 저장하고 쓰기 참조가 주로 발생하는 데이터는 휘발성 메모리에 로딩하여 참조 처리 속도 및 메모리의 수명을 보다 더 증가시킬 수 있다.
도 1은 종래의 기술에 따른 메모리 시스템에 적용되는 메모리 계층 구조를 도시한 도면,
도 2는 본 발명의 일 실시예에 따른 비휘발성 메모리 및 휘발성 메모리를 포함하는 메모리 시스템을 도시한 도면,
도 3은 본 발명의 일 실시예에 따른 비휘발성 메모리 및 휘발성 메모리를 포함하는 메모리 시스템을 도시한 도면,
도 4는 본 발명의 다른 실시예에 따른 비휘발성 메모리 및 휘발성 메모리를 포함하는 메모리 시스템을 도시한 도면,
도 5는 본 발명의 다른 실시예에 따른 비휘발성 메모리 및 휘발성 메모리를 포함하는 메모리 시스템을 도시한 도면,
도 6은 본 발명의 일 실시예 및 다른 실시예에 따른 메모리 관리 유닛(3200)의 구성을 도시한 도면,
도 7은 본 발명의 실시예에서 적용되는 휘발성 메모리 및 비휘발성 메모리의 종류 및 특성을 나타낸 테이블,
도 8은 본 발명의 일 실시예에서 메모리 관리 유닛이 메모리 로딩을 수행하는 방법의 흐름을 도시한 도면,
도 9는 본 발명의 다른 실시예에서 메모리 관리 유닛이 중간 메모리 계층의 휘발성 메모리에 로딩된 데이터를 비휘발성 메모리에 로딩시키는 방법의 흐름을 도시한 순서도.
도 2는 본 발명의 일 실시예에 따른 비휘발성 메모리 및 휘발성 메모리를 포함하는 메모리 시스템을 도시한 도면,
도 3은 본 발명의 일 실시예에 따른 비휘발성 메모리 및 휘발성 메모리를 포함하는 메모리 시스템을 도시한 도면,
도 4는 본 발명의 다른 실시예에 따른 비휘발성 메모리 및 휘발성 메모리를 포함하는 메모리 시스템을 도시한 도면,
도 5는 본 발명의 다른 실시예에 따른 비휘발성 메모리 및 휘발성 메모리를 포함하는 메모리 시스템을 도시한 도면,
도 6은 본 발명의 일 실시예 및 다른 실시예에 따른 메모리 관리 유닛(3200)의 구성을 도시한 도면,
도 7은 본 발명의 실시예에서 적용되는 휘발성 메모리 및 비휘발성 메모리의 종류 및 특성을 나타낸 테이블,
도 8은 본 발명의 일 실시예에서 메모리 관리 유닛이 메모리 로딩을 수행하는 방법의 흐름을 도시한 도면,
도 9는 본 발명의 다른 실시예에서 메모리 관리 유닛이 중간 메모리 계층의 휘발성 메모리에 로딩된 데이터를 비휘발성 메모리에 로딩시키는 방법의 흐름을 도시한 순서도.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
도 2 및 도 3은 본 발명의 일 실시예에 따른 비휘발성 메모리 및 휘발성 메모리를 포함하는 메모리 시스템을 도시한 도면이다.
본 발명의 일 실시예에 따른 메모리 시스템(1000)은 최상위 메모리 계층(1100), 중간 메모리 계층(1200) 및 최하위 메모리 계층(1300)을 포함한다.
중앙 처리 장치(central processing unit, CPU)(2000)는 특정 프로그램의 실행 등을 위하여 최하위 메모리 계층(1300)에 저장된 데이터를 중간 메모리 계층(1200)을 통해 불러들인다. 불러들인 데이터는 최상위 메모리 계층(1100) 및 중간 메모리 계층(1200)에 저장되어 사용된다.
중앙 처리 장치(2000)는 이후 해당 데이터를 다시 처리할 경우 읽기/쓰기 속도가 가장 빠른 최상위 메모리 계층(1100)에 저장된 데이터를 이용하여 읽기 또는 쓰기 동작을 신속히 처리할 수 있다.
최상위 메모리 계층(1100)은 L1/L2 캐시(cache) 메모리 등을 포함하며, 도 3에 도시된 바와 같이, SRAM 또는 DRAM 등의 휘발성 메모리로 구성된다. 최상위 메모리 계층(1100)은 중앙 처리 장치(CPU)(2000)로부터 읽기(read) 또는 쓰기(write)를 위한 특정 데이터의 요청을 수신하고, 요청된 데이터가저장되어 있는지 검색한다.
메모리 검색 결과, 최상위 메모리 계층(1100)의 메모리에 요청된 읽기 동작 또는 쓰기 동작을 위한 데이터가 존재하지 않는 경우, 즉 참조 실패(cache miss)가 발생한 경우, 최상위 메모리 계층(1100)은 중간 메모리 계층(1200)으로 참조 실패가 발생한 데이터를 요청한다.
최상위 메모리 계층(1100)은 참조 실패가 발생한 경우, 중간 메모리 계층(1200)의 제 1 서브 메모리(1210) 및 제 2 서브 메모리(1220)로 참조 실패가 발생한 데이터를 요청한다.
중간 메모리 계층(1200)은 최상위 메모리 계층(1100)보다 읽기/쓰기 속도 성능이 낮은 메모리 계층이다. 하지만 최상위 메모리 계층(1100) 보다 높은 집적도를 가질 수 있다.
최상위 메모리 계층(1100)은, 제 1 서브 메모리(1210) 또는 제 2 서브 메모리(1220)에 요청한 데이터가 존재하는 경우, 해당 데이터를 제 1 서브 메모리(1210) 또는 제 2 서브 메모리(1220)로부터 획득할 수 있다.
중간 메모리 계층(1200)은 제 1 서브 메모리(1210) 및 제 2 서브 메모리(1220)를 포함한다.
본 발명의 일 실시예에서는 제 1 서브 메모리(1210)는 제 1 비휘발성 메모리(1212) 및 제 2 비휘발성 메모리(1214) 등 하나 이상의 비휘발성 메모리를 포함할 수 있다. 또한, 제 2 서브 메모리(1220)는 제 1 휘발성 메모리(1222) 및 제 2 휘발성 메모리(1224) 등 하나 이상의 휘발성 메모리를 포함할 수 있다. 즉, 제 1 서브 메모리(1210)는 제 2 서브 메모리(1220)보다 읽기/쓰기 속도 성능이 낮은 저가의 메모리들로 구성될 수 있다.비 휘발성 메모리는 휘발성 메모리에 비해 읽기/쓰기 속도 성능이 모두 낮지만, 읽기 속도는 상대적으로 쓰기 속도에 비해 우수한 편이다. 일반적으로 메모리의 읽기 속도가 쓰기 속도보다 빠르기 때문에 비 휘발성 메모리의 읽기 속도와 쓰기 속도의 차이는 휘발성 메모리의 읽기 속도와 쓰기 속도의 차이보다 크다고 할 것이다.
따라서, 제 1 서브 메모리(1210)가 비휘발성 메모리로 구성된다면 읽기 속도와 쓰기 속도의 차이는, 휘발성 메모리로 구성된 제 2 서브 메모리(1220)의 읽기 속도와 쓰기 속도의 차이보다 더 크고 할 것이다. 즉, 제 1 서브 메모리(1210)는 제 2 서브 메모리(1220)보다 읽기/쓰기 속도가 모두 낮지만, 자체의 읽기 속도와 쓰기 속도를 비교하였을 때는 읽기 속도 성능이 더 우수한 메모리라고 할 것이다.
도 2와 도 3을 참조하면, 제 1 서브 메모리(1210)에 포함되는 비휘발성 메모리는 MRAM(212), PRAM(214) 또는 FRAM(도시 생략) 등을 포함할 수 있으며, 복수의 비휘발성 메모리가 포함되는 경우, 그 중에서 메모리 접근 속도가 가장 빠른 비휘발성 메모리가 최상위 메모리 계층(1100)측에 위치하도록 물리적 위치가 결정될 수 있다.
또한, 제 2 서브 메모리(1220)에 포함되는 휘발성 메모리는 SRAM(222) 또는 DRAM(224) 을 포함할 수 있으며, 복수의 휘발성 메모리가 포함되는 경우, 그 중에서 메모리 접근 속도가 빠른 휘발성 메모리가 최상위 메모리 계층(1100)측에 위치하도록 물리적 위치가 결정될 수 있다.
제 1 서브 메모리(1210)는, 최상위 메모리 계층(1100)에 읽기 참조 실패가 발생한 데이터가 제 1 서브 메모리(1210) 및 제 2 서브 메모리(1220)에 모두 존재하지 않는 경우, 참조 실패가 발생한 데이터를 최하위 메모리 계층으로부터 로딩한다.
제 1 서브 메모리(1210)는 읽기 속도가 상이한 복수의 비휘발성 메모리, 예를 들어 제 1 비휘발성 메모리(1212) 및 제 1 비휘발성 메모리보다 메모리 접근 속도가 느린 제 2 비휘발성 메모리(1214)를 포함할 수 있다.
이처럼 제 1 서브 메모리(1210)가 메모리 접근 속도가 상이한 복수의 비휘발성 메모리를 포함하고, 최상위 메모리 계층(1100)으로부터 메모리 참조 요청이 있는 경우, 참조 요청된 데이터는 접근 속도를 기준으로 제 1 비휘발성 메모리(1212) 및 제 2 비휘발성 메모리(1214)에서 순차적으로 검색될 수 있다.
제 2 서브 메모리(1220)는, 최상위 메모리 계층(1100)에 쓰기 참조 실패가 발생한 데이터가 제 1 서브 메모리(1210) 및 제 2 서브 메모리(1220)에 모두 존재하지 않는 경우, 참조 실패가 발생한 데이터를 최하층 메모리 계층으로부터 로딩한다.
제 2 서브 메모리(1220)는 접근 속도가 상이한 복수의 휘발성 메모리, 예를 들어 제 1 휘발성 메모리(1222) 및 제 1 휘발성 메모리보다 상대적으로 접근 속도가 느린 제 2 휘발성 메모리(1224)를 포함할 수 있다.
이처럼 제 2 서브 메모리(1220)가 접근 속도가 상이한 복수의 휘발성 메모리를 포함하고, 최상위 메모리 계층(1100)으로부터 메모리 참조 요청이 있는 경우, 참조 요청된 데이터는 접근 속도를 기준으로 제 1 휘발성 메모리 및 제 2 휘발성 메모리에서 순차적으로 검색될 수 있다.
최하위 메모리 계층(1300)은 프로그램의 수행을 위한 모든 데이터를 저장한다. 최하위 메모리 계층(1300)은 비휘발성 메모리로 구성되며, 도 3에 도시된 바와 같이 플래시 메모리(flash memory) 또는 하드 디스크 드라이브(hard disk drive, HDD)로 구성될 수 있다.
최하위 메모리 계층(1300)은 중앙 처리 장치(2000)의 요청에 따라 저장한 데이터를 중간 메모리 계층(1200) 및 최상위 메모리 계층(1100)을 통해 중앙 처리 장치(2000)에 제공한다.
한편, 제 2 서브 메모리(1220)는 최초 데이터를 로딩할 때, 최하위 메모리 계층(1300)으로부터 데이터를 로딩하여 최상위 메모리 계층(1100)으로 제공할 수 있다. 이처럼 본 발명의 일 실시예에서, 최하위 메모리 계층(1300)으로부터 최상위 메모리 계층(1100)으로 최초로 제공되는 데이터는 우선 휘발성 메모리로 구성된 제 2 서브 메모리(1220)를 통해 최상위 메모리 계층(1100)으로 제공되며, 최상위 메모리 계층(1100)에서 메모리 참조 실패가 발생한 경우, 최상위 메모리 계층(1100)은 제 1 서브 메모리(1210) 및 제 2 서브 메모리(1220)에 모두 해당 데이터를 요청(request)하여 제 1 서브 메모리(1210) 및 제 2 서브 메모리(1220)로부터 해당 데이터를 제공받을 수 있다.
또한, 요청한 데이터가 제 1 서브 메모리(1210) 및 제 2 서브 메모리(1220)에 존재하지 않는 경우, 읽기 참조 실패가 발생한 데이터는 제 1 서브 메모리(1210)에 의해 로딩되고, 쓰기 참조 실패가 발생하는 데이터는 제 2 서브 메모리(1220)에 의해 로딩되어 추후 최상위 메모리 계층(1100)으로 제공될 수 있다.
따라서, 최초 로딩된 데이터는 제 2 서브 메모리(1220)에 모두 로딩되지만, 최상위 메모리 계층(1100)에서의 읽기 참조 실패 또는 쓰기 참조 실패가 발생함에 따라, 제 1 서브 메모리(1210)에는 읽기 참조 가능성이 높은 데이터가 저장되고, 제 2 서브 메모리에는 쓰기 참조 가능성이 높은 데이터가 저장될 것이다.
전술한 바와 같이, 제 1 서브 메모리(1210)는 제 2 서브 메모리(1220)보다 메모리 접근 속도는 떨어지지만, 읽기 속도 성능은 쓰기 속도 성능에 비해 상대적으로 우수하기 때문에 중간 메모리 계층(1200)은 각각의 메모리 들이 가진 장점을 최대한 활용하여 효율적으로 데이터 처리를 수행할 수 있다.
도 4 및 도 5는 본 발명의 다른 실시예에 따른 비휘발성 메모리 및 휘발성 메모리를 포함하는 메모리 시스템을 도시한 도면이다.
본 발명의 다른 실시예에 따른 메모리 시스템(3000)은 최상위 메모리 계층(3100), 메모리 관리 유닛(3200), 중간 메모리 계층(3300) 및 최하위 메모리 계층을 포함한다.
중앙 처리 장치(central processing unit, CPU)(2000)는 도 2에서 설명한 바와 같이 특정 프로그램의 실행 등을 위하여 최하위 메모리 계층(1300)에 저장된 데이터를 중간 메모리 계층(3300)을 통해 불러들이며, 이후 해당 데이터를 다시 처리할 경우 최하위 메모리 계층(1300)이 아닌 최상위 메모리 계층(1100)에 저장된 데이터를 이용하여 읽기 또는 쓰기 동작을 신속히 처리할 수 있다.
최상위 메모리 계층(3100)은 L1캐시 또는 L1/L2 캐시 메모리 등을 포함하며, 도 5에 도시된 바와 같이, SRAM(310)등의 휘발성 메모리로 구성된다. 최상위 메모리 계층(3100)은 중앙 처리 장치(CPU)(2000)로부터 읽기(read) 또는 쓰기(write)를 위한 특정 데이터의 요청을 수신하고, 요청된 데이터를 최상위 메모리 계층(3100)의 메모리로부터 검색한다.
메모리 검색 결과, 최상위 메모리 계층(3100)의 메모리에 요청된 읽기 동작 또는 쓰기 동작을 위한 데이터가 존재하지 않는 경우, 즉 참조 실패(cache miss)가 발생한 경우, 최상위 메모리 계층(3100)은 중간 메모리 계층(1200)으로 참조 실패가 발생한 데이터를 요청한다.
최상위 메모리 계층(3100)은 참조 실패가 발생한 경우, 중간 메모리 계층(3200)의 제 1 서브 메모리(3210) 및 제 2 서브 메모리(3220)로 참조 실패가 발생한 데이터를 요청하고, 제 1 서브 메모리(3210) 또는 제 2 서브 메모리(3220)에 요청한 데이터가 존재하는 경우, 해당 데이터를 제 1 서브 메모리(3210) 또는 제 2 서브 메모리(3220)로부터 획득할 수 있다.
도 4 및 도 5에 도시된 실시예에서도 제 1 서브 메모리(3310)는 제 1 비휘발성 메모리(3312) 및 제 2 비휘발성 메모리(3314) 등 하나 이상의 비휘발성 메모리를 포함할 수 있다. 또한, 제 2 서브 메모리(3320)는 제 1 휘발성 메모리(3322) 및 제 2 휘발성 메모리(3324) 등 하나 이상의 휘발성 메모리를 포함할 수 있다. 즉, 제 1 서브 메모리(3310)는 제 2 서브 메모리(3320)보다 읽기/쓰기 속도 성능이 떨어지는 저가의 메모리들로 구성될 수 있다. 비 휘발성 메모리는 휘발성 메모리에 비해 읽기/쓰기 속도 성능이 모두 떨어지지만, 읽기 속도는 쓰기 속도에 비해 우수한 편이다. 일반적으로 메모리의 읽기 속도가 쓰기 속도보다 빠르기 때문에 비 휘발성 메모리의 읽기 속도와 쓰기 속도의 차이는 휘발성 메모리의 읽기 속도와 쓰기 속도의 차이보다 크다고 할 것이다. 도 5에 도시된 바와 같이 제 1 서브 메모리(3310)에 포함되는 비휘발성 메모리는 MRAM(312), PRAM(314) 또는 FRAM(도시 생략) 등을 포함할 수 있으며, 복수의 비휘발성 메모리가 포함되는 경우, 접근 속도가 빠른 비휘발성 메모리가 최상위 메모리 계층(3100)측에 위치하도록 물리적 위치가 결정될 수 있다.
또한, 제 2 서브 메모리(3320)에 포함되는 휘발성 메모리는 SRAM(322) 또는 DRAM(324) 을 포함할 수 있으며, 복수의 휘발성 메모리가 포함되는 경우, 쓰기 속도가 빠른 휘발성 메모리가 최상위 메모리 계층(3100)측에 위치하도록 물리적 위치가 결정될 수 있다.
한편, 메모리 관리 유닛(3200)은 최상위 메모리 계층(3100)에서 참조 실패가 발생한 데이터가 최하위 메모리 계층(3400)으로부터 중간 메모리 계층(3300)으로 로딩되는 것을 제어한다.
즉, 메모리 관리 유닛(3200)은, 최상위 메모리 계층(3100)에서 참조 실패가 발생한 데이터가 중간 메모리 계층에 존재하지 않는 경우, 해당 데이터를 최하위 메모리 계층(3400)으로부터 중간 메모리 계층(3300)으로 로딩시킨다.
본 발명의 다른 실시예에서, 메모리 관리 유닛(3200)은 본 발명의 일 실시예에서와 달리, 최상위 메모리 계층(3100)에서 발생한 참조 실패의 유형에 관계없이, 즉 읽기 참조 실패인지 쓰기 참조 실패인지 여부와 관계없이, 참조 실패가 발생한 데이터를 모두 제 2 서브 메모리(3320)로 로딩시킨다.
또한, 메모리 관리 유닛(3200)은 데이터 별로 참조가 발생한 처리 동작의 유형을 기록하여, 데이터 별로 최상위 메모리 계층(3100)에서 읽기 참조가 주로 발생하는지 또는 쓰기 참조가 주로 발생하는지 여부를 파악한다.
메모리 관리 유닛(3200)은, 제 2 서브 메모리(3320)에 참조 실패가 발생한 블록을 로딩하여 저장 가능한 용량이 미리 설정된 임계 값 이하가 되는 경우, 읽기 참조 발생율이 높은 데이터를 제 2 서브 메모리(3320)로부터 제 1 서브 메모리(3310)로 전달하여 저장시킨다. 예를 들어, 상기 임계값은 잔여 용량이 0~25% 사이에서 결정될 수 있다. 여기서, 임계값을 0%인 경우는, 제 2 서브 메모리(3320)의 저장 용량이 모두 소진되었을 경우를 의미한다. 이러한 메모리 저장 용량의 소진은 완전 연관 (Fully associative) 매핑 방식을 사용하는 경우에는 모든 용량을 다 사용 했는가로, 집합 연관 (set-associative) 매핑 방식을 사용하는 경우는 참조 실패된 블록이 저장될 수 있는 해당 집합 (set)에 존재하는 용량이 모두 사용되었는가로 판단될 수 있다.
여기서, 최상위 메모리 계층(3100)에서 읽기 참조만이 발생된 데이터는 내용 변경없이 읽기에만 사용된 데이터라고 할 것이다. 이와 같이, 저장된 데이터가 읽기에만 사용되고 내용이 변경이 없는 경우에는 클린 데이터 블록이라 칭한다
반대로, 최상위 메모리 계층(3100)에서 쓰기 참조 가 발생된 데이터는 내용 변경이 발생한 데이터이다. 이와 같이, 저장된 데이터가 내용이 변경된 경우에는 더티 데이터 블록이라 칭한다
1차적으로, 제 2 서브 메모리(3320)의 저장 가능한 용량이 미리 설정된 임계 값 이하가 될 때마다, 클린 데이터 블록이 제 1 서브 메모리(3310)로 전달되어 저장될 수 있다. 이와 같은 동작에 의해, 제 1 서브 메모리(3310)에는 클린 데이터 블록이 저장되고, 제 2 서브 메모리(3320)에는 더티 데이터 블록이 저장될 수 있다.
만약, 제 2 서브 메모리(3320)에 더 이상 클린 데이터 블록이 존재하지 않는 다면, 더티 데이터 블록 각각의 읽기 참조 발생율과 쓰기 참조 발생율을 산출하여 전술한 알고리듬에 따라서 제 2 서브 메모리(3320)의 데이터를 제 1 서브 메모리(3310)에 저장시킬 수 있을 것이다. 또는 일반적인 블록 교체 (block replacement) 방법을 사용하여 제 2 서브 메모리 (3320)의 더티 데이터 블록 중에서 선택하여 해당 블록은 제 1 서브 메모리 (3310)에 저장시킬 수 있을 것이다.
따라서, 이후에 최상위 메모리 계층(3100)에서 참조 실패가 발생한 경우, 최상위 메모리 계층은 읽기 참조 실패가 발생한 데이터를 제 1 서브 메모리(3310)로부터 획득할 수 있으며, 쓰기 참조 실패가 발생한 데이터를 제 2 서브 메모리(3320)로부터 획득할 수 있다.
전술한 실시예에 따르면, 제 1 서브 메모리(3310)는 제 2 서브 메모리(3320)보다 메모리 접근 속도는 떨어지지만, 읽기 속도 성능은 쓰기 속도 성능에 비해 상대적으로 우수하기 때문에 중간 메모리 계층(3300)은 각각의 메모리 들이 가진 장점을 최대한 활용하여 효율적으로 데이터 처리를 수행할 수 있다.
한편, 제 1 서브 메모리(3310)는 접근 속도가 상이한 복수의 비휘발성 메모리, 예를 들어 제 1 비휘발성 메모리(3312) 및 제 1 비휘발성 메모리(3312)보다 상대적으로 접근 속도가 느린 제 2 비휘발성 메모리(3314)를 포함할 수 있다.
제 1 서브 메모리(3310)는 메모리 관리 유닛(3200)의 제어에 의해 제 2 서브 메모리(3320)로부터 읽기 참조 발생율이 높은 데이터를 수신하여 저장할 수 있으며, 최상위 메모리 계층(3100)의 요청에 응답하여 요청된 데이터를 최상위 메모리 계층(3100)에 제공할 수 있다.
제 2 서브 메모리(3320)는 최상위 메모리 계층(3100)에 최초로 제공되는 데이터를 최하위 메모리 계층(3300)으로부터 로딩하여 최상위 메모리 계층(3100)으로 제공하며, 최상위 메모리 계층(3100)에서 메모리 참조 실패가 발생하고 제 1 서브 메모리(3310) 및 제 2 서브 메모리(3320)에 존재하지 않는 데이터를 최하위 메모리 계층(3400)으로부터 획득하여 최상위 메모리 계층(3100)에 제공한다.
제 2 서브 메모리(3320)는 메모리 관리 유닛(3200)의 요청에 응답하여 제 2 서브 메모리(3320)에 저장된 데이터 중 메모리 관리 유닛(3200)에 의해 요청된 데이터를 제 1 서브 메모리(3310)로 전송한다. 전술한 바와 같이, 제 2 서브 메모리(3320)로부터 제 1 서브 메모리(3310)로 전송되는 데이터는 읽기 참조의 발생율이 높은 데이터를 포함할 수 있다.
제 2 서브 메모리(3220)는 읽기 속도가 상이한 복수의 휘발성 메모리, 예를 들어 제 1 휘발성 메모리(3322) 및 제 1 휘발성 메모리(3322)보다 상대적으로 접근 속도가 느린 제 2 휘발성 메모리(3324)를 포함할 수 있다.
최하위 메모리 계층(3400)은 프로그램의 수행을 위한 모든 데이터를 저장한다. 최하위 메모리 계층(3400)은 비휘발성 메모리로 구성되며, 도 3에 도시된 바와 같이 플래시 메모리(flash memory) 또는 하드 디스크 드라이브(hard disk drive, HDD)로 구성될 수 있다.
최하위 메모리 계층(3400)은 중앙 처리 장치(2000)의 요청에 따라 저장한 데이터를 최상위 메모리 계층(3100), 중간 메모리 계층(3300)를 통해 중앙 처리 장치(2000)에 제공한다.
상술한 본 발명의 다른 실시예에서, 메모리 컨트롤러(3200)는 메모리 시스템(3000)과 별개의 구성 요소로 설명되었으나 이에 한정되는 것은 아니며, 메모리 시스템(3000) 또는 중앙 처리 장치(CPU)(2000)에 포함될 수도 있다.
상술한 설명에서, 메모리 관리 유닛은 도 4 및 도 5에 도시된 실시예에서만 설명되었으나, 이에 한정되는 것은 아니며, 본 발명의 도 2 및 도 3에 도시된 실시예에 따른 메모리 시스템도 메모리 관리 유닛을 포함할 수 있다.
이러한 경우, 본 발명의 일 실시예에서 메모리 관리 유닛은 최상위 메모리 계층에서 발생한 참조 실패의 유형을 파악하고, 읽기 참조 실패가 발생한 경우 해당 데이터를 하나 이상의 비휘발성 메모리를 포함하는 제 1 서브 메모리에 로딩하고, 쓰기 참조 실패가 발생한 경우 해당 데이터를 하나 이상의 휘발성 메모리를 포함하는 제 2 서브 메모리에 로딩할 수 있다.
도 6은 본 발명의 일 실시예 및 다른 실시예에 따른 메모리 관리 유닛(3200)의 구성을 도시한 도면이다.
본 발명의 다른 실시예에 따른 메모리 관리 유닛(3200)은 데이터별 동작 로그 수집부(3210), 데이터별 참조 유형 분류부(3220), 참조 유형 판단부(3230) 및 데이터 저장 관리부(3240)를 포함한다.
데이터별 동작 로그 수집부(3210)는 최상위 메모리 계층(도시 생략)에서 발생한 참조의 유형을 데이터 별로 수집한다. 즉, 데이터별 동작 로그 수집부(3210)는 각각의 데이터에 대하여 읽기 참조 및 쓰기 참조가 발생한 횟수 등을 데이터 별로 수집하여 기록한다.
데이터별 참조 유형 분류부(3220)는 데이터별 동작 로그 수집부(3210)에 의해 수집된 기록에 기초하여 각각의 데이터의 참조 유형을 분류한다.
즉, 데이터별 참조 유형 분류부(3220)는 데이터별 동작 로그 수집부(3210)에 의해 수집된 데이터별 읽기 참조 횟수 및 쓰기 참조 횟수에 기초하여 해당 데이터에 대하여 읽기 참조가 주로 발생하는지 쓰기 참조가 주로 발생하는지 여부를 판단하고, 판단 결과를 기초로 해당 데이터의 참조 유형을 결정한다.
데이터별 참조 유형 분류부(3220)는 읽기 참조의 횟수 및 쓰기 참조 횟수의 비율을 기준으로 참조 유형을 결정할 수 있다.
참조 유형 판단부(3230)는 최상위 메모리 계층에서 발생한 참조의 유형을 판단한다. 즉 참조 유형 판단부(3230)는, 최상위 메모리 계층에서 참조가 발생한 경우, 발생한 참조가 읽기 참조인지 또는 쓰기 참조 인지 여부를 판단한다.
데이터 저장 관리부(3240)는 최하위 메모리 계층의 데이터를 미리 설정된 기준에 따라 제 1 서브 메모리 또는 제 2 서브 메모리에 저장시킨다.
즉, 최상위 메모리 계층에서 참조 실패가 발생한 이후 최하위 메모리 계층의 데이터를 데이터의 참조 유형에 따라 제 1 서브 메모리 또는 제 2 서브 메모리에 로딩하도록 설정된 경우, 데이터 저장 관리부(3240)는 최상위 메모리 계층에서 참조 실패가 발생한 데이터의 참조 유형에 기초하여 해당 데이터를 제 1 서브 메모리 또는 제 2 서브 메모리에 저장시킨다.
예를 들어, 최상위 메모리 계층에서 발생한 참조 실패가 읽기 참조인 경우, 데이터 저장 관리부(3240)는 해당 데이터를 하나 이상의 비휘발성 메모리를 포함하는 중간 메모리 계층의 제 1 서브 메모리에 저장시킬 수 있다.
또한, 최상위 메모리 계층에서 발생한 참조 실패가 쓰기 참조인 경우, 데이터 저장 관리부(3240)는 해당 데이터를 하나 이상의 휘발성 메모리를 포함하는 중간 메모리 계층의 제 2 서브 메모리에 로딩시킬 수 있다.
이와 달리 최하위 메모리 계층의 데이터를 항상 하나 이상의 휘발성 메모리를 포함하는 제 2 서브 메모리에 로딩하도록 설정된 경우, 데이터 저장 관리부(3240)는 최상위 메모리 계층에서 참조 실패가 발생한 데이터의 참조 유형에 관계없이 최하위 메모리 계층의 데이터를 우선적으로 제 2 서브 메모리에 로딩시킬 수 있다.
이 경우, 데이터 저장 관리부(3240)는 제 2 서브 메모리의 저장 가능 용량이 미리 설정된 임계 값 이하인지 여부를 판단하고, 제 2 서브 메모리의 저장 가능 용량이 미리 설정된 임계 값 이하인 경우, 제 2 서브 메모리에 저장된 데이터 중에서 참조 유형 판단부(3230)에 의해 읽기 참조 유형으로 판단된 데이터(예를 들어, 클린 데이터 블록)를 하나 이상의 비휘발성 메모리를 포함하는 제 1 서브 메모리에 저장시킬 수 있다.
도 7은 본 발명의 실시예에서 적용되는 휘발성 메모리 및 비휘발성 메모리의 종류 및 특성을 나타낸 테이블이다.
도 7에 도시된 바와 같이, 비휘발성 메모리인 MRAM 및 PRAM은 읽기(read) 특성은 휘발성 메모리인 eDRAM 및 SRAM과 유사하거나 조금 열등하지만, 이에 비해 쓰기(write) 특성은 휘발성 메모리인 SRAM에 비해 크게 낮은 성능을 나타낸다.
또한, 비휘발성 메모리인 MRAM 및 PRAM은 휘발성 메모리인 eDRAM 및 SRAM에 비해 높은 집적도(density)를 가지므로, 동일한 용량의 메모리에 대하여 비휘발성 메모리가 휘발성 메모리에 비하여 적은 면적을 차지한다.
도 8은 본 발명의 일 실시예에서 메모리 관리 유닛이 메모리 로딩을 수행하는 방법의 흐름을 도시한 도면이다.
단계(S105)에서, 메모리 관리 유닛은 최상위 메모리 계층으로부터 특정 데이터에 대한 메모리 참조 실패 정보를 수신한다.
단계(S110)에서, 메모리 관리 유닛은 단계(S105)에서 수신한 메모리 참조 실패 정보로부터 참조 실패의 유형을 판단한다. 즉, 메모리 관리 유닛은 단계(S105)에서 수신한 메모리 참조 실패 정보로부터 최상위 메모리 계층에서 발생한 참조 실패가 발생한 데이터가 중간 메모리 계층에 존재하는지 여부를 판단하고, 참조 실패가 발생한 데이터가 중간 메모리 계층에 존재하지 않는 경우, 최상위 메모리 계층에서 발생한 참조 실패가 읽기 참조 실패인지 또는 쓰기 참조 실패인지 여부를 판단한다.
단계(S115)에서는, 단계(S110)에서 읽기 참조 실패가 발생한 것으로 판단된 경우, 메모리 관리 유닛은 읽기 참조 실패가 발생한 데이터를 최하위 메모리 계층으로부터 하나 이상의 비휘발성 메모리를 포함하는 제 1 서브 메모리로 로딩시킨다.
단계(S120)에서는, 단계(S110)에서 쓰기 참조 실패가 발생한 것으로 판단된 경우, 메모리 관리 유닛은 쓰기 참조 실패가 발생한 데이터를 최하위 메모리 계층으로부터 하나 이상의 휘발성 메모리를 포함하는 제 2 서브 메모리로 로딩시킨다.
이처럼 단계(S115) 및 단계(S120)에서 참조 실패 유형에 따라 제 1 서브 메모리 또는 제 2 서브 메모리에 로딩된 데이터는, 최상위 메모리 계층에서 참조 실패가 발생한 경우, 최상위 메모리 계층의 요청에 의해 제 1 서브 메모리 또는 제 2 서브 메모리로부터 최상위 메모리 계층으로 제공될 수 있다.
도 9는 본 발명의 다른 실시예에서 메모리 관리 유닛이 중간 메모리 계층의 휘발성 메모리에 로딩된 데이터를 비휘발성 메모리에 로딩시키는 방법의 흐름을 도시한 순서도이다.
단계(S210)에서, 메모리 관리 유닛은 최상위 메모리 계층으로부터 메모리 참조 실패 정보를 수신한다. 수신된 메모리 참조 실패 정보는 참조 실패가 발생한 데이터 정보 및 참조 실패의 유형 정보를 포함한다.
단계(S220)에서, 메모리 관리 유닛은 단계(S210)에서 수신한 메모리 참조 실패 정보에 기초하여 참조 실패가 발생한 데이터를 최하위 메모리 계층으로부터 획득하여 하나 이상의 휘발성 메모리를 포함하는 제 2 서브 메모리에 로딩한다.
단계(S230)에서, 메모리 관리 유닛은 단계(S230)에서 로딩한 데이터 별로 참조 유형을 기록한다. 즉, 메모리 관리 유닛은 각 데이터마다 참조가 발생할 때마다 참조의 유형을 기록하므로, 각각의 데이터 별로 어떠한 유형의 참조가 어느 정도 발생하는지에 대한 정보를 생성할 수 있다.
따라서, 메모리 관리 유닛은 각 데이터마다 읽기 참조 발생율 및 쓰기 참조 발생율을 산출할 수 있다.
한편, 여기서 참조 유형의 기록은 단순히 내용 변경이 있었는지에 관한 클린 데이터 블록인지 더티 데이터 블록인지만을 식별하여 기록하는 것을 포함한다.
단계(S240)에서, 메모리 관리 유닛은 단계(S220)에서 참조 실패한 데이터를 로딩하는 하나 이상의 휘발성 메모리를 포함하는 제 2 서브 메모리에 참조 실패가 발생한 데이터 블록을 저장할 수 있는 저장 공간이 미리 설정된 임계 값 이하인지 여부를 판단한다.
단계(S220)에서와 같이 참조 실패한 데이터를 제 2 서브 메모리에 로딩하는 과정이 반복되면, 제 2 서브 메모리에 로딩되는 데이터가 증가하게 되며, 이로 인해 제 2 서브 메모리의 로딩 가능한 용량이 점차 감소하게 된다.
따라서, 메모리 관리 유닛은 제 2 서브 메모리의 사용 가능한, 즉 로딩 가능한 용량이 미리 설정된 임계 값 이하인지 여부를 판단한다. 예를 들어, 제 2 서브 메모리에 새로운 메모리 블록을 저장할 수 있는 저장공간이 남아 있는지의 여부를 판단할 수 있다. 이러한 동작은 완전 연관 (Fully associative) 매핑 방식을 사용하는 경우에는 모든 용량을 다 사용 했는가로, 집합 연관 (set-associative) 매핑 방식을 사용하는 경우는 참조 실패된 블록이 저장될 수 있는 해당 집합 (set)에 존재하는 용량이 모두 사용되었는가로 판단할 수 있다.
단계(S250)에서는, 단계(S240)에서 제 2 서브 메모리의 로딩 가능한 용량이 미리 설정된 임계 값 이하인 것으로 판단되는 경우, 메모리 관리 유닛은 단계(S230)에서 기록한 데이터별 참조 유형 정보에 기초하여 제 2 서브 메모리에 로딩된 데이터마다 읽기 참조 율을 산출하고, 산출한 읽기 참조 율에 기초하여 제 2 서브 메모리에 로딩된 데이터를 하나 이상의 비휘발성 메모리를 포함하는 제 1 서브 메모리로 이동시킨다.
즉, 메모리 관리 유닛은 제 2 서브 메모리에 저장된 데이터 중 읽기 참조율이 높은 데이터를 하나 이상의 비휘발성 메모리를 포함하는 제 1 서브 메모리에 저장시켜, 제 2 서브 메모리에 참조 실패가 발생한 블록을 저장할 수 있는 공간을 확보하고, 읽기 속도가 쓰기 속도에 비해 우수한 비 휘발성 메모리를 포함하는 제 1 서브 메모리에 읽기 참조 율이 높은, 즉 읽기 참조 발생율이 높은 데이터를 저장시킨다. 여기서, 읽기 참조 발생율이 높은 데이터로서 클린 데이터 블록이 우선적으로 선택될 수 있다.
단계(S260)에서, 메모리 관리 유닛은 최상위 메모리 계층에서 참조 실패가 발생한 데이터 중 제 1 서브 메모리 또는 제 2 서브 메모리에 저장된 데이터를 검색하여 최상위 메모리 계층에 제공한다.
상술한 단계(S210) 내지 단계(S260)이 반복됨에 따라 결과적으로 읽기 참조 발생율이 높은 데이터는 하나 이상의 비휘발성 메모리를 포함하는 제 1 서브 메모리에 저장되며, 쓰기 참조 실패의 발생율이 높은 데이터는 하나 이상의 휘발성 메모리를 포함하는 제 2 서브 메모리에 저장될 수 있으며, 이로 인해 각 메모리의 특성에 따른 데이터 처리의 효율이 증가될 수 있다.
본 발명의 일 실시예는 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파와 같은 변조된 데이터 신호의 기타 데이터, 또는 기타 전송 메커니즘을 포함하며, 임의의 정보 전달 매체를 포함한다.
본 발명의 방법 및 시스템은 특정 실시예와 관련하여 설명되었지만, 그것들의 구성 요소 또는 동작의 일부 또는 전부는 범용 하드웨어 아키텍처를 갖는 컴퓨터 시스템을 사용하여 구현될 수 있다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
1000 : 메모리 시스템
1100 : 최상위 메모리 계층 1200 : 중간 메모리 계층
1300 : 최하위 메모리 계층
2000 : 중앙 처리 장치
3100 : 최상위 메모리 계층 3200 : 메모리 관리 유닛
3300 : 중간 메모리 계층 3400 : 최하위 메모리 계층
1100 : 최상위 메모리 계층 1200 : 중간 메모리 계층
1300 : 최하위 메모리 계층
2000 : 중앙 처리 장치
3100 : 최상위 메모리 계층 3200 : 메모리 관리 유닛
3300 : 중간 메모리 계층 3400 : 최하위 메모리 계층
Claims (35)
- 복수의 메모리 계층을 포함하는 메모리 시스템에 있어서,
휘발성 메모리로 구성된 제 1 메모리 계층,
비휘발성 메모리로 구성된 제 3 메모리 계층 및
상기 제 1 메모리 계층 및 제 3 메모리 계층 사이에 배치되고, 상기 제 1 메모리 계층에서 발생한 메모리 참조 실패에 응답하여 읽기 참조 실패가 발생한 데이터 및 쓰기 참조 실패가 발생한 데이터가 각각 상기 제 3 메모리 계층으로부터 로딩되는 제 1 서브 메모리와 제 2 서브 메모리를 포함하는 제 2 메모리 계층을 포함하되,
상기 제 1 서브 메모리 또는 제 2 서브 메모리에 로딩된 데이터는 상기 제 1 메모리 계층으로 로딩되는 메모리 시스템.
- 제 1 항에 있어서,
상기 제 1 서브 메모리는 상기 읽기 참조 실패가 발생한 데이터를 로딩하고, 상기 제 2 서브 메모리는 상기 쓰기 참조 실패가 발생한 데이터를 로딩하며,
상기 제 1 서브 메모리의 읽기 속도 및 쓰기 속도의 차이는 상기 제 2 서브 메모리의 읽기 속도 및 쓰기 속도의 차이보다 더 큰 것인 메모리 시스템.
- 제 2 항에 있어서,
상기 제 1 서브 메모리는 하나 이상의 비휘발성 메모리를 포함하는 것인 메모리 시스템.
- 제 3 항에 있어서,
상기 제 1 서브 메모리에 포함된 비휘발성 메모리가 복수 개 존재하는 경우, 상기 복수개의 비휘발성 메모리는 서로 읽기 속도가 상이한 것인 메모리 시스템.
- 제 4 항에 있어서,
상기 복수개의 비휘발성 메모리는 상기 제 1 메모리 계층의 하위 계층에 계층 구조를 갖도록 구성되되, 상기 계층 구조는 접근 속도가 빠른 비휘발성 메모리일수록 상위 계층에 배치시키는 구조인 것인 메모리 시스템.
- 복수의 메모리 계층을 포함하는 메모리 시스템에 있어서,
휘발성 메모리로 구성된 제 1 메모리 계층,
비휘발성 메모리로 구성된 제 3 메모리 계층 및
상기 제 1 메모리 계층 및 제 3 메모리 계층 사이에 배치되고, 제 1 서브 메모리와 제 2 서브 메모리를 포함하는 제 2 메모리 계층을 포함하고,
상기 제 1 메모리 계층에서 발생한 메모리 참조 실패에 응답하여, 상기 제 2 서브 메모리에 읽기 참조 실패가 발생한 데이터 및 쓰기 참조 실패가 발생한 데이터가 상기 제 3 메모리 계층으로부터 로딩되며,
상기 제 1 서브 메모리는 상기 제 2 서브 메모리에 로딩된 데이터 중 읽기 참조 실패가 발생한 데이터가 우선적으로 교체되어 저장되되, 상기 제 1 서브 메모리 또는 제 2 서브 메모리에 로딩된 데이터는 상기 제 1 메모리 계층으로 로딩되는 것인 메모리 시스템.
- 제 6 항에 있어서,
상기 제 1 메모리 계층에서 발생한 메모리 참조 실패에 응답하여 상기 제 2 메모리 계층에 데이터가 로딩된 경우, 상기 로딩된 데이터의 참조 유형에 대한 정보를 각 로딩된 데이터별로 수집하는 메모리 관리 유닛을 더 포함하되, 상기 참조 유형은 읽기 참조 및 쓰기 참조 발생 여부에 대한 정보를 포함하는 메모리 시스템.
- 제 7 항에 있어서,
상기 메모리 관리 유닛은 상기 제 1 메모리 계층에서 발생한 메모리 참조 실패에 응답하여 상기 메모리 참조 실패가 발생한 데이터를 상기 제 2 서브 메모리에 로딩시키고, 상기 제 2 서브 메모리의 로딩 가능한 용량이 미리 설정된 임계 값 이하인 경우, 상기 읽기 참조 횟수에 기초하여 상기 제 2 서브 메모리에 저장된 데이터를 상기 제 1 서브 메모리에 저장시키는 것인 메모리 시스템.
- 제 8 항에 있어서,
상기 제 서브 1 메모리의 읽기 속도 및 쓰기 속도의 차이는 상기 제 2 서브메모리의 읽기 속도 및 쓰기 속도의 차이보다 더 큰 것인 메모리 시스템.
- 복수의 메모리 계층을 포함하는 메모리 시스템에 있어서,
중앙 처리 장치(central processing unit, CPU)로 저장한 데이터를 전송하는 제 1 메모리 계층,
상기 제 1 메모리 계층에서 발생한 참조 실패에 응답하여 읽기 참조 실패가 발생한 데이터 또는 쓰기 참조 실패가 발생한 데이터를 로딩하는 제 2 메모리 계층 및
상기 중앙 처리 장치에 의해 구동되는 프로그램에 대한 데이터를 상기 제 2 메모리 계층 및 상기 제 1 메모리 계층을 통해 상기 중앙 처리 장치로 전송하는 제 3 메모리 계층을 포함하고,
상기 제 2 메모리 계층은 읽기 속도 및 쓰기 속도의 차이가 서로 상이한 제 1 서브 메모리 및 제 2 서브 메모리를 포함하고, 상기 제 1 서브 메모리 또는 제 2 서브 메모리에 로딩된 데이터는 상기 제 1 메모리 계층으로 로딩되는 메모리 시스템.
- 제 10 항에 있어서,
상기 제 2 메모리 계층은 상기 제 1 메모리 계층에서 발생한 참조 실패에 응답하여 읽기 참조 실패가 발생한 데이터 및 쓰기 참조 실패가 발생한 데이터를 서로 다른 메모리에 로딩(loading)하는 것인 메모리 시스템.
- 제 11 항에 있어서,
상기 제 2 메모리 계층은 제 1 서브 메모리 및 제 2 서브 메모리를 포함하고,
상기 제 1 서브 메모리는 상기 읽기 참조 실패가 발생한 데이터를 로딩하고, 상기 제 2 서브 메모리는 상기 쓰기 참조 실패가 발생한 데이터를 로딩하며,
상기 제 1 서브 메모리의 읽기 속도 및 쓰기 속도의 차이는 상기 제 2 서브메모리의 읽기 속도 및 쓰기 속도의 차이보다 더 큰 것인 메모리 시스템.
- 제 12 항에 있어서,
상기 제 1 서브 메모리는 하나 이상의 비휘발성 메모리를 포함하는 것인 메모리 시스템.
- 제 13 항에 있어서,
상기 제 1 서브 메모리에 포함된 비휘발성 메모리가 복수 개 존재하는 경우, 상기 복수개의 비휘발성 메모리는 서로 접근 속도가 상이한 것인 메모리 시스템.
- 제 14 항에 있어서,
상기 복수개의 비휘발성 메모리는 상기 제 1 메모리 계층의 하위 계층에 계층 구조를 갖도록 구성되되, 상기 계층 구조는 접근 속도가 빠른 비휘발성 메모리일수록 상위 계층에 배치시키는 구조인 것인 메모리 시스템.
- 제 12 항에 있어서,
상기 제 2 서브 메모리는 하나 이상의 휘발성 메모리를 포함하는 것인 메모리 시스템.
- 제 10 항에 있어서,
상기 제 1 메모리 계층에서 발생한 메모리 참조에 응답하여 상기 제 2 메모리 계층에 데이터가 로딩된 경우, 상기 로딩된 데이터의 참조 유형에 대한 정보를 각 로딩된 데이터별로 수집하는 메모리 관리 유닛을 더 포함하되, 상기 참조 유형은 읽기 참조 및 쓰기 참조 발생 여부에 대한 정보를 포함하는 메모리 시스템.
- 제 17 항에 있어서,
상기 제 2 메모리 계층은 제 1 서브 메모리 및 제 2 서브 메모리를 포함하고,
상기 메모리 관리 유닛은 상기 제 1 메모리 계층에서 발생한 메모리 참조 실패에 응답하여 상기 메모리 참조 실패가 발생한 데이터를 상기 제 2 서브 메모리에 로딩시키고, 상기 제 2 서브 메모리에 상기 참조 실패가 발생하여 로딩한 데이터를 저장 가능한 용량이 미리 설정된 임계 값 이하인 경우, 읽기 참조 횟수에 기초하여 상기 제 2 서브 메모리에 저장된 데이터를 상기 제 1 서브 메모리에 저장시키는 것인 메모리 시스템.
- 제 18 항에 있어서,
상기 제 1 메모리의 읽기 속도 및 쓰기 속도의 차이는 상기 제 2 메모리의 읽기 속도 및 쓰기 속도의 차이보다 더 큰 것인 메모리 시스템.
- 제 18 항에 있어서,
상기 메모리 관리 유닛은,
상기 제 1 메모리 계층에서 발생한 참조 유형 정보를 상기 제 1 메모리 계층에 로딩된 데이터 별로 생성하는 데이터별 동작 로그 수집부,
상기 데이터별 동작 로그 수집부에 의해 생성된 데이터별 참조 유형 정보에 기초하여 상기 제 1 메모리 계층에 로딩된 데이터의 참조 유형을 분류하는 데이터별 참조 유형 분류부 및
상기 제 2 서브 메모리의 로딩 가능한 용량이 미리 설정된 임계 값 이하인 경우, 상기 분류된 참조 유형에 기초하여 상기 제 2 서브 메모리에 저장된 데이터를 상기 제 1 서브 메모리에 교체하여 저장시키는 데이터 저장 관리부
를 포함하는 것인 메모리 시스템.
- 복수의 메모리를 포함하는 메인 메모리에 있어서,
중앙 처리 장치(central processing unit, CPU)로 데이터를 제공하는 캐쉬 메모리(cache memory)에서 발생한 읽기 참조 실패에 대응하는 데이터를 하위 계층의 저장장치로부터 로딩하는 제 1 서브 메모리 및
상기 캐쉬 메모리에서 발생한 쓰기 참조 실패에 대응하는 데이터를 상기 하위 계층의 저장장치로부터 로딩하는 제 2 서브 메모리를 포함하고,
상기 제 1 메모리의 읽기 속도 및 쓰기 속도의 차이는 상기 제 2 메모리의 읽기 속도 및 쓰기 속도의 차이보다 더 큰 것이고,
상기 제 1 서브 메모리 또는 제 2 서브 메모리에 로딩된 데이터는 상기 캐쉬 메모리로 로딩되는 메인 메모리.
- 제 21 항에 있어서,
상기 제 1 서브 메모리는 읽기 속도가 상이한 복수의 비휘발성 메모리를 포함하는 것인 메인 메모리.
- 제 22 항에 있어서,
상기 복수의 비휘발성 메모리는 상기 캐쉬 메모리의 하위 계층에 계층 구조를 갖도록 구성되되, 상기 계층 구조는 접근 속도가 빠른 비휘발성 메모리일수록 상위 계층에 배치시키는 구조인 메인 메모리.
- 제 21 항에 있어서,
상기 제 2 서브 메모리는 접근 속도가 상이한 복수의 휘발성 메모리를 포함하는 것인 메인 메모리.
- 제 24 항에 있어서,
상기 복수의 휘발성 메모리는 상기 캐쉬 메모리의 하위 계층에 계층 구조를 갖도록 구성되되, 상기 계층 구조는 접근 속도가 빠른 휘발성 메모리일수록 상위 계층에 배치시키는 구조인 메인 메모리.
- 복수의 메모리를 포함하는 메인 메모리에 있어서,
중앙 처리 장치(central processing unit, CPU)로 데이터를 제공하는 캐쉬 메모리(cache memory)에서 발생한 참조 실패에 대응하는 데이터를 하위 계층의 저장장치로부터 로딩하는 제 2 서브 메모리,
상기 제 2 서브 메모리의 로딩 가능한 용량이 미리 설정된 임계 값 이하인 경우, 상기 캐쉬 메모리에서 발생한 메모리 참조 유형에 기초하여 선택된 데이터가 저장되는 제 1 서브 메모리를 포함하고,
상기 제 1 서브 메모리의 읽기 속도 및 쓰기 속도의 차이는 상기 제 2 서브 메모리의 읽기 속도 및 쓰기 속도의 차이보다 더 큰 것이고,
상기 제 1 서브 메모리 또는 제 2 서브 메모리에 로딩된 데이터는 상기 캐쉬 메모리로 로딩되는 메인 메모리.
- 제 26 항에 있어서,
상기 제 1 서브 메모리는 상기 캐쉬 메모리에서의 읽기 참조 발생율에 기초하여 선택된 데이터가 제 2 서브 메모리로부터 교체되어 저장되는 것인 메인 메모리.
- 제 26 항에 있어서,
상기 제 1 서브 메모리는 접근 속도가 상이한 복수의 비휘발성 메모리를 포함하는 것인 메인 메모리.
- 제 28 항에 있어서,
상기 복수의 비휘발성 메모리는 상기 캐쉬 메모리의 하위 계층에 계층 구조를 갖도록 구성되되, 상기 계층 구조는 접근 속도가 빠른 비휘발성 메모리일수록 상위 계층에 배치시키는 구조인 메인 메모리.
- 메모리 관리 유닛이 메모리에 로딩된 데이터를 처리하는 방법에 있어서,
(a) 캐쉬 메모리로부터 수신한 메모리 참조 실패 정보에 기초하여 참조 실패가 발생한 데이터를 하위 계층의 저장장치로부터 제 2 서브 메모리에 로딩하는 단계,
(b) 상기 제 2 서브 메모리에 로딩한 데이터 별로 상기 수신한 메모리 참조 정보에 기초하여 참조 유형을 기록하는 단계 및
(c) 상기 제 2 서브 메모리의 로딩 가능한 용량이 미리 설정된 임계 값 이하인 경우, 상기 (b) 단계에서 기록한 참조 유형에 기초하여 상기 제 2 서브 메모리에 로딩된 데이터를 제 1 서브 메모리에 저장하는 단계를 포함하고,
상기 제 1 서브 메모리의 읽기 속도 및 쓰기 속도의 차이는 상기 제 2 서브 메모리의 읽기 속도 및 쓰기 속도의 차이보다 더 큰 것이고,
상기 제 1 서브 메모리 또는 제 2 서브 메모리에 로딩된 데이터는 상기 캐쉬 메모리로 로딩되는 데이터 처리 방법.
- 제 30 항에 있어서,
상기 (b) 단계는,
(b1) 상기 기록한 참조 유형에 기초하여 데이터 별 읽기 참조의 발생율을 산출하는 단계
를 포함하고,
상기 (c) 단계에서, 상기 제 2 서브 메모리의 로딩 가능한 용량이 미리 설정된 임계 값 이하인 경우, 상기 (b1) 단계에서 산출된 읽기 참조 발생율에 기초하여 선택된 데이터를 제 2 서브 메모리로부터 상기 제 1 서브 메모리로 교체하여 저장하는 것인 데이터 처리 방법.
- 제 30 항에 있어서,
상기 제 1 서브 메모리는 접근 속도가 상이한 복수의 비휘발성 메모리를 포함하는 것인 데이터 처리 방법.
- 메모리 관리 유닛이 메모리에 로딩된 데이터를 처리하는 방법에 있어서,
(a) 캐쉬 메모리로부터 수신한 메모리 참조 실패 정보에 기초하여, 읽기 참조 실패가 발생한 데이터를 하위 계층의 저장장치로부터 제 1 서브 메모리에 로딩하는 단계 및
(b) 캐쉬 메모리로부터 수신한 메모리 참조 실패 정보에 기초하여, 쓰기 참조 실패가 발생한 데이터를 하위 계층의 저장장치로부터 제 2 서브 메모리에 로딩하는 단계를 포함하고,
상기 제 1 서브 메모리 및 제 2 서브 메모리는 상기 캐쉬 메모리의 하위 계층 메모리에 포함되며,
상기 제 1 서브 메모리의 읽기 속도 및 쓰기 속도의 차이는 상기 제 2 서브 메모리의 읽기 속도 및 쓰기 속도의 차이보다 더 큰 것이고,
상기 제 1 서브 메모리 또는 제 2 서브 메모리에 로딩된 데이터는 상기 캐쉬 메모리로 로딩되는 데이터 처리 방법.
- 제 33 항에 있어서,
상기 제 1 서브 메모리는 접근 속도가 상이한 복수의 비 휘발성 메모리를 포함하는 것인 데이터 처리 방법.
- 제 33 항에 있어서,
상기 제 2 서브 메모리는 접근 속도가 상이한 복수의 휘발성 메모리를 포함하는 것인 데이터 처리 방법.
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100140281A KR101166803B1 (ko) | 2010-12-31 | 2010-12-31 | 비휘발성 메모리 및 휘발성 메모리를 포함하는 메모리 시스템 및 그 시스템을 이용한 처리 방법 |
PCT/KR2011/004259 WO2012091234A1 (ko) | 2010-12-31 | 2011-06-10 | 비휘발성 메모리 및 휘발성 메모리를 포함하는 메모리 시스템 및 그 시스템을 이용한 처리 방법 |
US13/932,081 US9411719B2 (en) | 2010-12-31 | 2013-07-01 | Memory system including nonvolatile and volatile memory and operating method thereof |
US15/205,807 US10140060B2 (en) | 2010-12-31 | 2016-07-08 | Memory system including a nonvolatile memory and a volatile memory, and processing method using the memory system |
US16/166,013 US10558395B2 (en) | 2010-12-31 | 2018-10-19 | Memory system including a nonvolatile memory and a volatile memory, and processing method using the memory system |
US16/724,273 US11188262B2 (en) | 2010-12-31 | 2019-12-21 | Memory system including a nonvolatile memory and a volatile memory, and processing method using the memory system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100140281A KR101166803B1 (ko) | 2010-12-31 | 2010-12-31 | 비휘발성 메모리 및 휘발성 메모리를 포함하는 메모리 시스템 및 그 시스템을 이용한 처리 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20120078096A KR20120078096A (ko) | 2012-07-10 |
KR101166803B1 true KR101166803B1 (ko) | 2012-07-26 |
Family
ID=46383292
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020100140281A KR101166803B1 (ko) | 2010-12-31 | 2010-12-31 | 비휘발성 메모리 및 휘발성 메모리를 포함하는 메모리 시스템 및 그 시스템을 이용한 처리 방법 |
Country Status (3)
Country | Link |
---|---|
US (4) | US9411719B2 (ko) |
KR (1) | KR101166803B1 (ko) |
WO (1) | WO2012091234A1 (ko) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101166803B1 (ko) | 2010-12-31 | 2012-07-26 | 세종대학교산학협력단 | 비휘발성 메모리 및 휘발성 메모리를 포함하는 메모리 시스템 및 그 시스템을 이용한 처리 방법 |
KR20150033859A (ko) | 2013-09-25 | 2015-04-02 | 삼성전자주식회사 | 반도체 메모리 장치 및 메모리 시스템 |
US9471129B2 (en) | 2014-08-07 | 2016-10-18 | Empire Technology Development Llc | Determining a write operation |
KR102370678B1 (ko) | 2015-06-25 | 2022-03-07 | 삼성전자주식회사 | 전자 장치의 터치 센싱 모듈 제어 방법 및 전자 장치, 전자 장치에 구비된 터치 센싱 모듈의 동작 방법 및 터치 센싱 모듈 |
US10534545B2 (en) * | 2017-12-20 | 2020-01-14 | International Business Machines Corporation | Three-dimensional stacked memory optimizations for latency and power |
KR101952827B1 (ko) | 2018-06-29 | 2019-02-27 | 주식회사 맴레이 | 메모리 제어 장치 및 이를 포함하는 메모리 시스템 |
US11307796B2 (en) * | 2018-09-27 | 2022-04-19 | International Business Machines Corporation | Mapping memory allocation requests using various memory attributes |
US10996890B2 (en) | 2018-12-19 | 2021-05-04 | Micron Technology, Inc. | Memory module interfaces |
KR20200092710A (ko) * | 2019-01-25 | 2020-08-04 | 주식회사 리얼타임테크 | 이기종 스토리지 기반의 데이터베이스 관리시스템에서 하이브리드 색인장치 |
CN112068765B (zh) | 2019-06-10 | 2024-04-26 | 伊姆西Ip控股有限责任公司 | 管理存储***的方法、设备和计算机程序产品 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9825102D0 (en) * | 1998-11-16 | 1999-01-13 | Insignia Solutions Plc | Computer system |
US6691205B2 (en) * | 2001-03-05 | 2004-02-10 | M-Systems Flash Disk Pioneers Ltd. | Method for using RAM buffers with simultaneous accesses in flash based storage systems |
US7269708B2 (en) * | 2004-04-20 | 2007-09-11 | Rambus Inc. | Memory controller for non-homogenous memory system |
JP2006302466A (ja) * | 2005-04-25 | 2006-11-02 | Elpida Memory Inc | 半導体記憶装置 |
US7461229B2 (en) * | 2006-05-23 | 2008-12-02 | Dataram, Inc. | Software program for managing and protecting data written to a hybrid solid-state disk drive |
WO2008055269A2 (en) * | 2006-11-04 | 2008-05-08 | Virident Systems, Inc. | Asymmetric memory migration in hybrid main memory |
KR101406493B1 (ko) * | 2007-07-19 | 2014-06-12 | 엘지전자 주식회사 | 플래쉬 메모리를 구비한 컴퓨터 및 플래쉬 메모리의구동방법 |
JP2009205335A (ja) * | 2008-02-27 | 2009-09-10 | Hitachi Ltd | 2種のメモリデバイスをキャッシュに用いるストレージシステム及びそのストレージシステムを制御する方法 |
KR20100005539A (ko) * | 2008-07-07 | 2010-01-15 | 삼성전자주식회사 | 캐시 메모리 시스템 및 캐시의 프리페칭 방법 |
US9280466B2 (en) * | 2008-09-09 | 2016-03-08 | Kabushiki Kaisha Toshiba | Information processing device including memory management device managing access from processor to memory and memory management method |
US9208084B2 (en) * | 2009-06-29 | 2015-12-08 | Oracle America, Inc. | Extended main memory hierarchy having flash memory for page fault handling |
US8296496B2 (en) * | 2009-09-17 | 2012-10-23 | Hewlett-Packard Development Company, L.P. | Main memory with non-volatile memory and DRAM |
US8914568B2 (en) * | 2009-12-23 | 2014-12-16 | Intel Corporation | Hybrid memory architectures |
KR101166803B1 (ko) * | 2010-12-31 | 2012-07-26 | 세종대학교산학협력단 | 비휘발성 메모리 및 휘발성 메모리를 포함하는 메모리 시스템 및 그 시스템을 이용한 처리 방법 |
-
2010
- 2010-12-31 KR KR1020100140281A patent/KR101166803B1/ko active IP Right Grant
-
2011
- 2011-06-10 WO PCT/KR2011/004259 patent/WO2012091234A1/ko active Application Filing
-
2013
- 2013-07-01 US US13/932,081 patent/US9411719B2/en active Active
-
2016
- 2016-07-08 US US15/205,807 patent/US10140060B2/en active Active
-
2018
- 2018-10-19 US US16/166,013 patent/US10558395B2/en active Active
-
2019
- 2019-12-21 US US16/724,273 patent/US11188262B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US10558395B2 (en) | 2020-02-11 |
US20160321013A1 (en) | 2016-11-03 |
KR20120078096A (ko) | 2012-07-10 |
US20140019674A1 (en) | 2014-01-16 |
WO2012091234A1 (ko) | 2012-07-05 |
US9411719B2 (en) | 2016-08-09 |
US20200125296A1 (en) | 2020-04-23 |
US20190056889A1 (en) | 2019-02-21 |
US11188262B2 (en) | 2021-11-30 |
US10140060B2 (en) | 2018-11-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101166803B1 (ko) | 비휘발성 메모리 및 휘발성 메모리를 포함하는 메모리 시스템 및 그 시스템을 이용한 처리 방법 | |
US9418700B2 (en) | Bad block management mechanism | |
KR101498673B1 (ko) | 반도체 드라이브, 그것의 데이터 저장 방법, 그리고 그것을포함한 컴퓨팅 시스템 | |
US9582208B2 (en) | Memory system performing incremental merge operation and data write method | |
WO2010066098A1 (zh) | 用较大容量dram参与闪存介质管理构建高速固态存储盘的方法及装置 | |
US20130198453A1 (en) | Hybrid storage device inclucing non-volatile memory cache having ring structure | |
JP2012108912A (ja) | データ格納装置、使用者装置及びそれの住所マッピング方法 | |
US20180107601A1 (en) | Cache architecture and algorithms for hybrid object storage devices | |
US11537305B1 (en) | Dissimilar write prioritization in ZNS devices | |
US8583890B2 (en) | Disposition instructions for extended access commands | |
US20130191591A1 (en) | Method for volume management | |
KR101298171B1 (ko) | 메모리 시스템 및 그 관리 방법 | |
US20120017052A1 (en) | Information Handling System Universal Memory Wear Leveling System and Method | |
CN106909323B (zh) | 适用于dram/pram混合主存架构的页缓存方法及混合主存架构*** | |
CN103019963B (zh) | 一种高速缓存的映射方法及存储设备 | |
CN115203079A (zh) | 一种将数据写入固态硬盘的方法 | |
JP2013030081A (ja) | データ記憶装置、メモリ制御装置及びメモリ制御方法 | |
Lv et al. | Zonedstore: A concurrent zns-aware cache system for cloud data storage | |
Wu et al. | CAGC: A content-aware garbage collection scheme for ultra-low latency flash-based SSDs | |
Park et al. | Management of virtual memory systems under high performance PCM-based swap devices | |
Kumar et al. | A survey on flash translation layer for NAND flash memory | |
Kwon et al. | FARS: A page replacement algorithm for NAND flash memory based embedded systems | |
US11604592B2 (en) | Data management for efficient low power mode handling in a storage device | |
Jung et al. | Temporal Locality with a Long Interval: Hybrid Memory System for High-Performance and Low-Power | |
Fan | Improving Storage Performance with Non-Volatile Memory-based Caching Systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20150623 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20160701 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20180625 Year of fee payment: 7 |