KR102514268B1 - 데이터 마이그레이션 정책 스위칭 방법 및 장치 - Google Patents
데이터 마이그레이션 정책 스위칭 방법 및 장치 Download PDFInfo
- Publication number
- KR102514268B1 KR102514268B1 KR1020210092466A KR20210092466A KR102514268B1 KR 102514268 B1 KR102514268 B1 KR 102514268B1 KR 1020210092466 A KR1020210092466 A KR 1020210092466A KR 20210092466 A KR20210092466 A KR 20210092466A KR 102514268 B1 KR102514268 B1 KR 102514268B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- migration
- module
- segment
- stored
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- 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/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0638—Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0653—Monitoring storage devices or systems
-
- 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/0656—Data buffering arrangements
-
- 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/0673—Single storage device
- G06F3/068—Hybrid storage device
-
- 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)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 실시예들은 이종의 메모리가 적용된 하이브리드 메모리 시스템에서 어플리케이션 특성 및 메모리 쓰기 특성을 고려하여 마이그레이션 정책을 스위칭할 수 있는 방법 및 장치를 제공한다.
Description
본 발명이 속하는 기술 분야는 어플리케이션 특성 및 메모리 쓰기 특성에 따라 마이그레이션 정책을 스위칭하는 방법 및 장치에 관한 것이다.
이 부분에 기술된 내용은 단순히 본 실시예에 대한 배경 정보를 제공할 뿐 종래기술을 구성하는 것은 아니다.
DRAM(dynamic random access memory), DDR(N)(Double Data Rate SDRAM) 등과 같은 휘발성 메모리(Volatile Memory, VM)는 쓰기 속도가 빠르다는 장점이 있으나, 전원이 공급되지 않으면 데이터가 소실되며, 데이터를 유지하기 위해서는 주기적으로 리플레시를 수행해야 하므로 전력 소비가 증가한다는 단점이 있다.
상변화 메모리(Phase-Change Memory, PCM) 등와 같은 비휘발성 메모리(Non-Volatile Memory, NVM)는 휘발성 메모리보다 높은 집적도를 가져 고용량으로 구현하기에 유리하며, 전원이 인가되지 않아도 데이터가 유지되며, 대기 전력을 소비하지 않아 저전력 기기로 구현 가능하다는 장점이 있다. 그러나 NVM의 경우, 읽기(read) 속도에서는 VM과 유사한 수준을 나타내지만, 쓰기(write) 속도는 VM에 비해 크게 느려 병목 현상을 발생할 가능성이 높다는 단점과 함께 라이트 횟수에 제한이 있어 라이트 동작이 빈번하게 발생하는 어플리케이션에 적용하기에는 부적합하다는 단점이 있다.
메모리의 종류별 장단점을 고려하여 이종의 메모리를 사용하는 하이브리드 방식을 적용한다. 하이브리드 메모리는 VM와 NVM의 조합을 포함하며 VM과 NVM의 단점을 서로 보완한다. 하이브리드 메모리에서는 NVM의 비휘발성, 고집적도 및 저전력 소비의 장점을 이용하되, 느린 라이트 속도 및 라이트 횟수 제한에 따른 문제를 VM을 이용하여 해소하는데 중점을 두고 있다.
여러 종류의 메모리 디바이스들로 구성된 하이브리드 메모리 시스템에서 어플리케이션의 특성에 따라 마이그레이션 정책을 변경할 필요가 있다.
본 발명의 실시예들은 이종의 메모리가 적용된 하이브리드 메모리 시스템에서 어플리케이션 특성 및 메모리 쓰기 특성을 고려하여 마이그레이션 정책을 스위칭하는데 주된 목적이 있다.
본 발명의 명시되지 않은 또 다른 목적들은 하기의 상세한 설명 및 그 효과로부터 용이하게 추론할 수 있는 범위 내에서 추가적으로 고려될 수 있다.
본 실시예의 일 측면에 의하면 이종의 메모리를 포함하는 메모리 모듈; 및 저장된 어플리케이션 특징을 기준으로 상기 메모리 모듈에 적합한 마이그레이션 정책을 선택하는 메모리 매니저를 포함하는 마이그레이션 정책 스위칭 장치를 제공한다.
상기 메모리 매니저는, 상기 마이그레이션 정책에 따라 마이그레이션을 수행하는 마이그레이션 엔진; 및 상기 마이그레이션의 대상이 되는 데이터의 원래 주소와 새로운 주소를 저장하는 리매핑 테이블을 포함할 수 있다.
상기 마이그레이션 엔진은, 상기 어플리케이션 특징을 저장하는 컨트롤 레지스터; 상기 어플리케이션 특징을 기반으로 복수의 마이그레이션 정책 중에서 하나의 마이그레이션 정책을 선택하는 마이그레이션 정책 선택부; 상기 복수의 마이그레이션 정책을 저장하는 마이그레이션 정책 저장부; 및 상기 선택된 하나의 마이그레이션 정책을 진행하는 마이그레이션 정책 실행부를 포함할 수 있다.
상기 어플리케이션 특징은 민감도(sensitivity), 접근 빈도(access frequency), 쓰기 정도(write-intensity), 지역성(locality), 또는 이들의 조합을 포함할 수 있다.
상기 어플리케이션 특징은 어플리케이션 실행 초기에 운영체제에 의해 상기 컨트롤 레지스터에 저장될 수 있다.
상기 마이그레이션 정책 실행부가 상기 선택된 하나의 마이그레이션 정책을 진행하면, 상기 리매핑 테이블은 업데이트될 수 있다.
상기 메모리 모듈은 다수의 휘발성 메모리 셀을 포함하는 VM(Volatile Memory) 모듈 및 다수의 비휘발성 메모리 셀을 포함하는 NVM(Non-Volatile Memory) 모듈을 포함할 수 있다.
상기 마이그레이션 정책 실행부는 상기 NVM 모듈에 저장된 어플리케이션을 기지정된 세그먼트 단위로 구분하고, 각 세그먼트에 포함된 라이트 명령의 개수인 세그먼트 카운트를 획득하고 합산하여, 어플리케이션에 대한 라이트 카운트인 어플리케이션 카운트를 계산하고, 상기 어플리케이션 카운트가 기지정된 제1 문턱값 이상인 어플리케이션의 다수의 세그먼트 중 세그먼트 카운트가 기지정된 제2 문턱값 이상인 세그먼트를 선택하여 상기 VM 모듈에 저장된 데이터와 마이그레이션하고, 마이그레이션된 세그먼트의 데이터 어드레스를 리맵핑하는 상기 NVM 모듈에 저장된 어플리케이션을 기지정된 세그먼트 단위로 구분하고, 각 세그먼트에 포함된 라이트 명령의 개수인 세그먼트 카운트를 획득하고 합산하여, 어플리케이션에 대한 라이트 카운트인 어플리케이션 카운트를 계산하고, 상기 어플리케이션 카운트가 기지정된 제1 문턱값 이상인 어플리케이션의 다수의 세그먼트 중 세그먼트 카운트가 기지정된 제2 문턱값 이상인 세그먼트를 선택하여 상기 VM 모듈에 저장된 데이터와 마이그레이션하고, 마이그레이션된 세그먼트의 데이터 어드레스를 리맵핑할 수 있다.
상기 VM 모듈은 상기 VM 모듈에 저장되는 데이터에 대한 액세스를 제어하는 VM 컨트롤러를 포함하고, 상기 NVM 모듈은 상기 NVM 모듈에 저장되는 데이터에 대한 액세스를 제어하는 NVM 컨트롤러를 포함할 수 있다.
상기 마이그레이션 정책 실행부는 상기 NVM 모듈에 저장된 어플리케이션의 세그먼트를 선택적으로 상기 VM 모듈에 저장된 데이터와 마이그레이션시키고, 마이그레이션된 데이터에 대한 액세스 명령이 인가되면, 리맵핑된 데이터 어드레스에 대한 액세스 명령으로 수정할 수 있다.
상기 마이그레이션 정책 실행부는, 리드 또는 라이트 명령을 포함하는 액세스 명령이 인가되면, 인가된 액세스 명령을 분석하여, 리드 또는 라이트 명령과 어플리케이션 정보와 데이터 어드레스를 포함하는 라이트 요청 정보로 구분하는 명령 분석부를 포함할 수 있다.
상기 마이그레이션 정책 실행부는, 상기 라이트 요청 정보를 인가받아 인가된 어플리케이션을 다수의 세그먼트로 구분하고, 세그먼트 카운트와 어플리케이션 카운트를 획득하여 라이트 히스토리 테이블에 저장하며, 저장된 라이트 히스토리 테이블에 기초하여 상기 NVM 모듈에 저장된 프로그램의 세그먼트를 선택적으로 상기 VM 모듈의 대응하는 데이터와 마이그레이션시키고, 마이그레이션되어 변경된 데이터 어드레스를 획득하는 재할당부를 포함할 수 있다.
상기 마이그레이션 정책 실행부는, 세그먼트의 데이터가 저장된 데이터 어드레스와 변경된 데이터 어드레스를 리맵핑하여 저장하고, 상기 리드 또는 라이트 명령이 인가되면, 인가된 리드 또는 라이트 명령에서 지정되는 데이터 어드레스를 리맵핑된 데이터 어드레스로 수정하여 상기 VM 컨트롤러와 상기 NVM 컨트롤러로 출력하는 리맵핑부를 포함할 수 있다.
상기 마이그레이션 정책 실행부는, 상기 NVM 모듈과 상기 VM 모듈 사이에서 마이그레이션되는 데이터를 인가받아 임시 저장하여 상대 모듈로 전달하는 스왑 버퍼를 포함할 수 있다.
상기 재할당부는 상기 라이트 히스토리 테이블을 분석하여, 어플리케이션 카운트가 상기 제1 문턱값 이상인 어플리케이션을 스왑 후보 어플리케이션으로 설정하고, 설정된 스왑 후보 어플리케이션의 다수의 세그먼트 중 세그먼트 카운트가 상기 제2 문턱값 이상인 세그먼트를 마이그레이션이 수행되는 마이그레이션 대상 세그먼트로 선택할 수 있다.
상기 재할당부는 상기 마이그레이션 대상 세그먼트에 대한 데이터 어드레스를 상기 NVM 컨트롤러로 전달하여, 상기 NVM 컨트롤러의 제어에 따라 상기 NVM 모듈에 저장된 상기 마이그레이션 대상 세그먼트가 상기 스왑 버퍼와 상기 VM 컨트롤러를 통해 상기 VM 모듈에 저장되도록 할 수 있다.
상기 재할당부는 마이그레이션되는 세그먼트의 데이터 어드레스를 확인하여, 순차적으로 마이 그레이션되는 데이터의 데이터 어드레스 차이가 기지정된 기준 어드레스 단위 이하이면, 기지정된 개수의 데이터 스코프 중 동일한 데이터 스코프에 누적카운트하고, 기준 어드레스 단위를 초과하면 다른 데이터 스코프에 다시 누적 카운트하여 순차적으로 전달되는 데이터의 어드레스 변화를 기지정된 다수의 데이터 스코프에 누적 기록하며, 다수의 데이터 스코프에 누적 기록된 크기를 확인하고, 과반수 이상의 데이터 스코프에 누적 기록된 크기가 현재 설정된 마이그레이션 단위를 기준으로 미리 지정된 단위 유지 구간과 단위 감소 구간 및 단위 증가 구간 중 어느 구간에 해당하는지 확인하여 확인된 구간에 따라 마이그레이션되는 데이터의 마이그레이션 단위 크기를 조절할 수 있다.
상기 마이그레이션 정책 실행부는 마이그레이션 실행 중 액세스 명령이 인가되면, 마이그레이션되는 세그먼트의 데이터 중 스왑 버퍼로 전송되는 데이터의 전송 완료 후, 마이그레이션을 일시 중지시키고, 액세스 명령에 대응하는 동작을 수행할 수 있다.
상기 마이그레이션 정책 실행부는 상기 액세스 명령에 의해 지정되는 데이터가 상기 스왑 버퍼에 저장되어 있는지 판별하고, 상기 스왑 버퍼에 저장된 것으로 판별되면, 상기 스왑 버퍼에 저장된 데이터에 액세스를 수행하며, 상기 스왑 버퍼에 저장되지 않은 것으로 판별되면, 상기 VM 컨트롤러 또는 상기 NVM 컨트롤러를 통해 상기 VM 모듈 또는 상기 NVM 모듈에 저장된 데이터에 액세스를 수행할 수 있다.
본 실시예의 다른 측면에 의하면 마이그레이션 정책 스위칭 방법에 있어서, 어플리케이션 작성 과정 또는 컴파일 과정에서 어플리케이션 특징을 획득하는 단계; 어플리케이션 실행 초기에 운영체제에 의해 메모리 매니저의 컨트롤 레지스터에 상기 어플리케이션 특징을 입력하는 단계; 및 상기 컨트롤 레지스터에 저장된 어플리케이션 특징을 기준으로 마이그레이션 정책을 선택하는 단계를 포함하는 마이그레이션 정책 스위칭 방법을 제공한다.
상기 마이그레이션 정책을 선택하는 단계는, 메모리 접근 횟수 또는 수행 시간을 획득하는 단계; 상기 메모리 접근 횟수 또는 수행 시간을 기준치와 비교한 결과에 따라 마이그레이션 수행을 판단하는 단계; 상기 어플리케이션 특징을 기준으로 상기 마이그레이션 후보를 결정하는 단계; 상기 마이그레이션 후보에 따른 마이그레이션을 수행하는 단계; 및 상기 마이그레이션의 대상이 되는 데이터의 주소가 저장된 상기 리매핑 테이블을 업데이트하는 단계를 포함할 수 있다.
이상에서 설명한 바와 같이 본 발명의 실시예들에 의하면, 이종의 메모리가 적용된 하이브리드 메모리 시스템에서 어플리케이션 특성 및 메모리 쓰기 특성을 고려하여 마이그레이션 정책을 스위칭할 수 있는 효과가 있다.
여기에서 명시적으로 언급되지 않은 효과라 하더라도, 본 발명의 기술적 특징에 의해 기대되는 이하의 명세서에서 기재된 효과 및 그 잠정적인 효과는 본 발명의 명세서에 기재된 것과 같이 취급된다.
도 1 및 도 2는 본 발명의 일 실시예에 따른 마이그레이션 정책 스위칭 방법을 예시한 흐름도이다.
도 3 내지 도 6은 본 발명의 다른 실시예에 따른 마이그레이션 정책 스위칭 장치를 예시한 도면이다.
도 7 내지 도 12는 본 발명의 다른 실시예에 따른 마이그레이션 정책 스위칭 장치의 쓰기 특성을 고려한 마이그레이션 정책에 따른 마이그레이션 동작을 예시한 도면이다.
도 13은 본 발명의 다른 실시예에 따른 마이그레이션 정책 스위칭 장치의 마이그레이션 실행부를 예시한 도면이다.
도 14는 본 발명의 다른 실시예에 따른 마이그레이션 정책 스위칭 장치의 재할당부를 예시한 도면이다.
도 15는 본 발명의 다른 실시예에 따른 마이그레이션 정책 스위칭 장치의 마이그레이션 데이터 단위 크기를 결정하는 개념을 예시한 도면이다.
도 3 내지 도 6은 본 발명의 다른 실시예에 따른 마이그레이션 정책 스위칭 장치를 예시한 도면이다.
도 7 내지 도 12는 본 발명의 다른 실시예에 따른 마이그레이션 정책 스위칭 장치의 쓰기 특성을 고려한 마이그레이션 정책에 따른 마이그레이션 동작을 예시한 도면이다.
도 13은 본 발명의 다른 실시예에 따른 마이그레이션 정책 스위칭 장치의 마이그레이션 실행부를 예시한 도면이다.
도 14는 본 발명의 다른 실시예에 따른 마이그레이션 정책 스위칭 장치의 재할당부를 예시한 도면이다.
도 15는 본 발명의 다른 실시예에 따른 마이그레이션 정책 스위칭 장치의 마이그레이션 데이터 단위 크기를 결정하는 개념을 예시한 도면이다.
이하, 본 발명을 설명함에 있어서 관련된 공지기능에 대하여 이 분야의 기술자에게 자명한 사항으로서 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하고, 본 발명의 일부 실시예들을 예시적인 도면을 통해 상세하게 설명한다.
도 1 및 도 2는 본 발명의 일 실시예에 따른 마이그레이션 정책 스위칭 방법을 예시한 흐름도이다. 마이그레이션 정책 스위칭 방법은 마이그레이션 정책 스위칭 장치에 의해 수행될 수 있다.
마이그레이션 정책 스위칭 방법은, 어플리케이션 작성 과정 또는 컴파일 과정에서 어플리케이션 특징을 획득하는 단계(S10), 어플리케이션 실행 초기에 운영체제에 의해 메모리 매니저의 컨트롤 레지스터에 상기 어플리케이션 특징을 입력하는 단계(S20), 및 컨트롤 레지스터에 저장된 어플리케이션 특징을 기준으로 마이그레이션 정책을 선택하는 단계(S30)를 포함한다.
어플리케이션을 동작시키는 단계(S21) 이후에 마이그레이션 정책을 선택하는 단계(S30)를 수행한다.
마이그레이션 정책을 선택하는 단계(S30)는 메모리 접근 횟수 또는 수행 시간을 획득하는 단계(S31), 메모리 접근 횟수 또는 수행 시간을 기준치와 비교한 결과(예컨대 기준치를 초과하는 조건)에 따라 마이그레이션 수행을 판단하는 단계(S32), 어플리케이션 특징을 기준으로 마이그레이션 후보를 결정하는 단계(S33), 마이그레이션 후보에 따른 마이그레이션을 수행하는 단계(S34), 및 마이그레이션의 대상이 되는 데이터의 주소가 저장된 리매핑 테이블을 업데이트하는 단계(S35)를 포함할 수 있다.
리매핑 테이블을 업데이트하는 단계(S35)를 완료하면, 일반 메모리 동작을 수행하는 단계(S36)를 수행한다.
마이그레이션 수행을 판단하는 단계(S32)에 따른 결과가 마이그레이션 수행이 필요없음을 나타내면, 일반 메모리 동작을 수행하는 단계(S36)를 수행한다.
도 3 내지 도 6은 본 발명의 다른 실시예에 따른 마이그레이션 정책 스위칭 장치를 예시한 도면이다.
마이그레이션 정책 스위칭 장치는 이종의 메모리를 포함하는 메모리 모듈(200, 300) 및 저장된 어플리케이션 특징을 기준으로 메모리 모듈에 적합한 마이그레이션 정책을 선택하는 메모리 매니저(100)를 포함한다.
메모리 매니저(100)는, 마이그레이션의 대상이 되는 데이터의 원래 주소와 새로운 주소를 저장하는 리매핑 테이블(110) 및 마이그레이션 정책에 따라 마이그레이션을 수행하는 마이그레이션 엔진(120)을 포함할 수 있다.
마이그레이션 엔진(120)은, 어플리케이션 특징을 저장하는 컨트롤 레지스터(121), 어플리케이션 특징을 기반으로 복수의 마이그레이션 정책 중에서 하나의 마이그레이션 정책을 선택하는 마이그레이션 정책 선택부(122), 복수의 마이그레이션 정책을 저장하는 마이그레이션 정책 저장부(123), 및 선택된 하나의 마이그레이션 정책을 진행하는 마이그레이션 정책 실행부(124)를 포함할 수 있다.
컨트롤 레지스터(Control Register, 121)는 마이그레이션 정책 선택부(122)에서 결정에 필요한 정보를 담고 있다. 어플리케이션 특징은 어플리케이션 실행 초기에 운영체제에 의해 컨트롤 레지스터에 저장될 수 있다.
어플리케이션 특징은 컴파일러의 분석 또는 프로그래머의 기입을 통해 획득할 수 있다. 어플리케이션 특징은 민감도(sensitivity), 접근 빈도(access frequency), 쓰기 정도(write-intensity), 지역성(locality), 또는 이들의 조합을 포함할 수 있다. 어플리케이션 특징은 파일의 형태일 수도 있고 컴파일된 바이너리의 헤더에 존재할 수도 있고 컴파일러 지시자 #pragma의 전처리기에 존재할 수도 있다.
컨트롤 레지스터(121)는 시스템 메모리 맵에 메모리 매핑 I/O로 존재하여 자신의 주소가 있다. 운영체제는 메모리 매니저의 드라이버를 통해 컨트롤 레지스터에 어플리케이션 특징을 어플리케이션 실행 시작에 저장한다.
마이그레이션 정책 선택부(Migration Policy Selector, 122)는 컨트롤 레지스터의 정보를 바탕으로 어떠한 마이그레이션 정책을 적용할지 선택한다.
마이그레이션 정책 실행부(124)는 선택된 마이그레이션 정책을 바탕으로 마이그레이션을 진행하고 리매핑 테이블(110)을 업데이트한다. 마이그레이션 정책 실행부가 선택된 하나의 마이그레이션 정책을 진행하면, 리매핑 테이블에서 마이그레이션에 따라 해당하는 주소가 업데이트될 수 있다. 리매핑 테이블(110)은 마이그레이션 정책 실행부(124)에서 마이그레이션을 진행하면 해당 데이터들의 원래 주소와 새로운 주소를 저장한다.
메모리 모듈은 다수의 휘발성 메모리 셀을 포함하는 VM(Volatile Memory) 모듈 및 다수의 비휘발성 메모리 셀을 포함하는 NVM(Non-Volatile Memory) 모듈을 포함할 수 있다.
마이그레이션 정책 실행부는 NVM 모듈(300)에 저장된 어플리케이션을 기지정된 세그먼트 단위로 구분하고, 각 세그먼트에 포함된 라이트 명령의 개수인 세그먼트 카운트를 획득하고 합산하여, 어플리케이션에 대한 라이트 카운트인 어플리케이션 카운트를 계산하고, 어플리케이션 카운트가 기지정된 제1 문턱값 이상인 어플리케이션의 다수의 세그먼트 중 세그먼트 카운트가 기지정된 제2 문턱값 이상인 세그먼트를 선택하여 VM 모듈에 저장된 데이터와 마이그레이션하고, 마이그레이션된 세그먼트의 데이터 어드레스를 리맵핑하는 NVM 모듈에 저장된 어플리케이션을 기지정된 세그먼트 단위로 구분하고, 각 세그먼트에 포함된 라이트 명령의 개수인 세그먼트 카운트를 획득하고 합산하여, 어플리케이션에 대한 라이트 카운트인 어플리케이션 카운트를 계산하고, 어플리케이션 카운트가 기지정된 제1 문턱값 이상인 어플리케이션의 다수의 세그먼트 중 세그먼트 카운트가 기지정된 제2 문턱값 이상인 세그먼트를 선택하여 VM 모듈(200)에 저장된 데이터와 마이그레이션하고, 마이그레이션된 세그먼트의 데이터 어드레스를 리맵핑할 수 있다.
VM 모듈(200)은 VM 모듈에 저장되는 데이터에 대한 액세스를 제어하는 VM 컨트롤러(210)를 포함하고, NVM 모듈(300)은 NVM 모듈에 저장되는 데이터에 대한 액세스를 제어하는 NVM 컨트롤러(310)를 포함할 수 있다.
마이그레이션 정책 실행부는 NVM 모듈에 저장된 어플리케이션의 세그먼트를 선택적으로 VM 모듈에 저장된 데이터와 마이그레이션시키고, 마이그레이션된 데이터에 대한 액세스 명령이 인가되면, 리맵핑된 데이터 어드레스에 대한 액세스 명령으로 수정할 수 있다.
마이그레이션 정책 실행부(124)는, 리드 또는 라이트 명령을 포함하는 액세스 명령이 인가되면, 인가된 액세스 명령을 분석하여, 리드 또는 라이트 명령과 어플리케이션 정보와 데이터 어드레스를 포함하는 라이트 요청 정보로 구분하는 명령 분석부(320)를 포함할 수 있다.
마이그레이션 정책 실행부(124)는 라이트 요청 정보를 인가받아 인가된 어플리케이션을 다수의 세그먼트로 구분하고, 세그먼트 카운트와 어플리케이션 카운트를 획득하여 라이트 히스토리 테이블에 저장하며, 저장된 라이트 히스토리 테이블에 기초하여 NVM 모듈에 저장된 프로그램의 세그먼트를 선택적으로 VM 모듈의 대응하는 데이터와 마이그레이션시키고, 마이그레이션되어 변경된 데이터 어드레스를 획득하는 재할당부(132)를 포함할 수 있다.
마이그레이션 정책 실행부(124)는, 세그먼트의 데이터가 저장된 데이터 어드레스와 변경된 데이터 어드레스를 리맵핑하여 저장하고, 리드 또는 라이트 명령이 인가되면, 인가된 리드 또는 라이트 명령에서 지정되는 데이터 어드레스를 리맵핑된 데이터 어드레스로 수정하여 VM 컨트롤러와 NVM 컨트롤러로 출력하는 리맵핑부(133)를 포함할 수 있다.
마이그레이션 정책 실행부(124)는, NVM 모듈과 VM 모듈 사이에서 마이그레이션되는 데이터를 인가받아 임시 저장하여 상대 모듈로 전달하는 스왑 버퍼(134)를 포함할 수 있다.
재할당부는 라이트 히스토리 테이블을 분석하여, 어플리케이션 카운트가 제1 문턱값 이상인 어플리케이션을 스왑 후보 어플리케이션으로 설정하고, 설정된 스왑 후보 어플리케이션의 다수의 세그먼트 중 세그먼트 카운트가 제2 문턱값 이상인 세그먼트를 마이그레이션이 수행되는 마이그레이션 대상 세그먼트로 선택할 수 있다.
재할당부는 마이그레이션 대상 세그먼트에 대한 데이터 어드레스를 NVM 컨트롤러로 전달하여, NVM 컨트롤러의 제어에 따라 NVM 모듈에 저장된 마이그레이션 대상 세그먼트가 스왑 버퍼와 VM 컨트롤러를 통해 VM 모듈에 저장되도록 할 수 있다.
재할당부는 마이그레이션되는 세그먼트의 데이터 어드레스를 확인하여, 순차적으로 마이 그레이션되는 데이터의 데이터 어드레스 차이가 기지정된 기준 어드레스 단위 이하이면, 기지정된 개수의 데이터 스코프 중 동일한 데이터 스코프에 누적카운트하고, 기준 어드레스 단위를 초과하면 다른 데이터 스코프에 다시 누적 카운트하여 순차적으로 전달되는 데이터의 어드레스 변화를 기지정된 다수의 데이터 스코프에 누적 기록하며, 다수의 데이터 스코프에 누적 기록된 크기를 확인하고, 과반수 이상의 데이터 스코프에 누적 기록된 크기가 현재 설정된 마이그레이션 단위를 기준으로 미리 지정된 단위 유지 구간과 단위 감소 구간 및 단위 증가 구간 중 어느 구간에 해당하는지 확인하여 확인된 구간에 따라 마이그레이션되는 데이터의 마이그레이션 단위 크기를 조절할 수 있다.
마이그레이션 정책 실행부는 마이그레이션 실행 중 액세스 명령이 인가되면, 마이그레이션되는 세그먼트의 데이터 중 스왑 버퍼로 전송되는 데이터의 전송 완료 후, 마이그레이션을 일시 중지시키고, 액세스 명령에 대응하는 동작을 수행할 수 있다.
마이그레이션 정책 실행부는 액세스 명령에 의해 지정되는 데이터가 상기 스왑 버퍼에 저장되어 있는지 판별하고, 스왑 버퍼에 저장된 것으로 판별되면, 스왑 버퍼에 저장된 데이터에 액세스를 수행하며, 스왑 버퍼에 저장되지 않은 것으로 판별되면, VM 컨트롤러 또는 NVM 컨트롤러를 통해 VM 모듈 또는 NVM 모듈에 저장된 데이터에 액세스를 수행할 수 있다.
도 7 내지 도 12는 본 발명의 다른 실시예에 따른 마이그레이션 정책 스위칭 장치의 쓰기 특성을 고려한 마이그레이션 정책에 따른 마이그레이션 동작을 예시한 도면이다.
메모리 매니저(100)는 VM 모듈(200) 또는 NVM 모듈(300) 중 외부에서 인가되는 리드 명령에 대응하는 데이터가 저장된 모듈을 판별하고, 데이터가 모듈(200)에 저장된 것으로 판별되면, VM 컨트롤러(210)로 리드 명령을 전달하며, 데이터가 NVM 모듈(300)에 저장된 것으로 판별되면, NVM 컨트롤러(310)로 리드 명령을 전달한다. 그리고 VM 컨트롤러(210) 또는 VM 컨트롤러(210)로부터 대응하는 데이터를 인가받아 외부로 출력한다.
메모리 매니저(100)는 라이트 명령에 따라 VM 컨트롤러(210) 또는 VM 컨트롤러(210)로 저장될 데이터와 라이트 명령을 전달하여, VM 모듈(200) 또는 NVM 모듈(300)에 데이터가 저장되도록 한다. 라이트 명령과 함께 인가되는 데이터는 기본적으로 NVM 모듈(300)에 저장되지만, 라이트되는 데이터가 NVM 모듈(300)에서 VM 모듈(200)으로 이전에 마이그레이션되어 저장되어 있는 경우, VM 모듈(200)에 기저장된 데이터를 라이트되는 데이터로 오버라이트 (overwrite)하여 갱신할 수 있다.
메모리 매니저(100)는 NVM 모듈(300)에 저장된 데이터 중 VM 모듈(200)로 마이그레이션되어야 하는 데이터를 선별하고, 선별 결과를 VM 컨트롤러(210)와 NVM 컨트롤러(310)로 전달하여, NVM 모듈(300)과 VM 모듈 (200) 각각이 선별된 데이터와 대응하는 데이터를 상호 스왑하도록 한다.
메모리 매니저(100)는 VM 모듈(200)과 NVM 모듈(300) 사이에서 데이터 마이그레이션이 수행될 수 있도록 VM 컨트롤러(210)와 NVM 컨트롤러(310)에서 전달되는 데이터를 임시로 저장하는 스왑 버퍼를 포함할 수 있다.
VM 컨트롤러(210)는 메모리 매니저(100)의 관리에 따라 VM 모듈(200)을 제어한다. VM 컨트롤러(210)는 메모리 매니저(100)를 통해 인가되는 리드 명령에 응답하여, VM 모듈(200)에 저장된 데이터를 탐색하여 획득하고, 획득된 데이터를 메모리 매니저(100)로 전달한다. 그리고 라이트 명령에 응답하여, VM 모듈 (200)의 기지정된 메모리 어드레스에 인가된 데이터를 저장한다. 이때, VM 컨트롤러(210)는 VM 모듈(200)에서 획득되는 데이터 또는 메모리 매니저(100)에서 전달되어 VM 모듈(200)에 저장되어야 하는 데이터를 임시 저장하는 버퍼(220)를 포함할 수 있다.
VM 컨트롤러(210)는 기지정된 주기로 VM 모듈(200)에 저장된 데이터를 리플레시하여, VM 모듈(200)에 저장된 데이터가 소실되지 않도록 하며, 메모리 매니저(100)의 관리 하에 하이브리드 메모리 장치로 인가되는 전원이 차단되기 이전에 VM 모듈(200)에 저장된 데이터를 인가받아 메모리 매니저(100)의 스왑 버퍼를 통해 NVM 컨트롤러(310)로 전달할 수 있다.
NVM 컨트롤러(310)는 메모리 매니저(100)의 관리에 따라 NVM 모듈 (300)을 제어한다. NVM 컨트롤러(310)는 VM 컨트롤러(210)와 유사하게 메모리 매니저(100)를 통해 인가되는 리드 명령에 응답하여 NVM 모듈(300)에 저장된 데이터를 탐색하여 획득하고, 획득된 데이터를 메모리 매니저(100)로 전달하며, 라이트 명령에 응답하여 NVM 모듈(300)의 기지정된 메모리 어드레스에 인가된 데이터를 저장한다. 그리고 NVM 컨트롤러(310) 또한 NVM 버퍼(320)를 포함하여, NVM 모듈(300)에서 획득되는 데이터 또는 메모리 매니저(100)에서 전달되어 NVM 모듈(300)에 저장되어야 하는 데이터를 임시 저장할 수 있다.
NVM 컨트롤러(310)는 VM 컨트롤러(210)와 달리 NVM 모듈(300)에 저 장된 데이터에 대해 리플레시 동작을 수행할 필요가 없다. NVM 컨트롤러 (130)는 메모리 매니저(100)에 의해 선별되는 NVM 모듈(300)에 저장된 데이터를 인가받아, 스왑 버퍼를 통해 VM 컨트롤러(210)로 전달할 수 있다.
VM 모듈(200)은 다수의 VM 셀을 포함하여 전원이 인가되는 동안 데이터를 저장한다. VM 모듈(200)은 메모리 매니저(100)의 VM 컨트롤러(210)의 제어에 따라 데이터를 인가받아 저장하거나 리플레시하고, 저장된 데이터를 VM 컨트롤러(210)로 전달한다.
NVM 모듈(300)은 다수의 NVM 셀을 포함하여 전원 공급 여부에 무관하게 항시 데이터를 저장할 수 있다. NVM 모듈(300)은 메모리 매니저(100)의 NVM 컨트롤러(310)의 제어에 따라 데이터를 인가받아 저장하고, 저장된 데이터를 NVM 컨트롤러(310)로 전달한다.
메모리 매니저(100)는 프로그램(또는 어플리케이션)에 대한 데이터를 세그먼트(segment) 단위로 구분하여 관리한다. 세그먼트는 마이그레이션되기 위해 선별되는 데이터 단위를 나타낸다. NVM 모듈(300)에는 각각 다수의 세그먼트(Segment 0 ~ Segment 3)로 구성되는 다수의 프로그램(Program 0 ~ Program 3)이 저장될 수 있으며, 메모리 매니저(100)은 NVM 모듈(300)에 저장된 다수의 프로그램(Program 0 ~ Program 3) 각각에서 세그먼트를 선별하여 VM 모듈(200)로 마이그레이션시킬 수 있 다.
도 7에서는 NVM 모듈(300)에서 제0 및 제1 프로그램(Program 0, Program 1)에서 각각 하나의 세그먼트((segment 3), (segment 0))와 제2 프로그램 (Program 2)에서 2개의 세그먼트(segment 1, segment 2)가 선별되어 VM 모듈(200)로 마이그레이션되는 경우를 가정하여 도시하였다.
마이그레이션 정책 스위칭 장치는 VM과 NVM의 쓰기 특성을 고려하여 NVM의 라이트 횟수를 줄이고 쓰기 속도를 향상시킨다.
마이그레이션 정책 스위칭 장치는 프로그램(어플리케이션)을 세그먼트 단위로 구분하고, 구분된 세그먼트의 쓰기 명령 개수를 기반으로 마이그레이션 대상 세그먼트를 선별하여 마이그레이션을 수행하며, 마이그레이션 대상 세그먼트의 데이터 어드레스 변화에 기초하여 마이그레이션 단위 크기를 조절하여 쓰기 효율성을 향상시킨다.
NVM 모듈(300)에 저장된 프로그램(Program A, Program C)의 각 세그먼트에 포함된 라이트 명령의 개수를 카운트한다. 이때 메모리 매니저(100)는 외부로부터 라이트 되어야 하는 프로그램(Program A, Program C)가 인가되면, 인가되는 프로그램을 각 세그먼트 단위로 라이트 명령의 개수를 카운트하면서 NVM 모듈(300)에 저장하고, 프로그램이 저장되면, 카운트된 세그먼트 카운트를 합산하여 프로그램 카운트를 획 득할 수 있다. 여기서는 각 세그먼트별로 카운트된 라이트 명령의 개수를 세그먼트 카운트라 한다. 그리고 각 프로그램 데이터(Program A, Program C)에서 포함된 다수의 세그먼트에 대한 세그먼트 카운트의 누적합을 프로그램 카운트로 계산한다.
도 8을 참조하면, A 프로그램(Program A)에서는 4개의 세그먼트에 대한 세그먼트 카운트가 각각 (51, 20, 32, 24)로서 프로그램 카운트는 127로 계산된다. 그리고 C 프로그램(Program C)에서는 4개의 세그먼트에 대한 세그먼트 카운트가 각각 (49, 38, 77, 47)로서 프로그램 카운트는 211로 계산된다.
메모리 매니저(100)는 NVM 모듈(300)에 저장된 프로그램에서 데이터가 변경되면, 즉 세그먼트에 변화가 발생되면, 변화된 세그먼트에 따라 세그먼트 카운트를 업데이트하고, 이를 프로그램 카운트에 반영할 수 있다.
도 9는 NVM 모듈(300)의 초기 상태를 나타내며, 이에 실질적으로 프로그램(Program A ~ Program C)이 NVM 모듈(300)에 저장되지 않은 상태로서, 프로그램 카운트가 모두 0인 상태를 나타낸다.
도 10은 프로그램(Program A ~ Program C)이 NVM 모듈(300)에 저장된 상태로서, 메모리 매니저(100)는 각 프로그램(Program A ~ Program C)별 다수의 세그먼트 각각에 대한 라이트 개수를 확인하여 세그먼트 카운트를 획득하고, 획득된 세그먼트 카운트를 기반으로 프로그램 카운트를 계산한다. 여기서 프로그램 (Program A ~ Program C)별 프로그램 카운트는 각각 127, 79, 211인 것으로 가정한다.
프로그램 카운트가 계산되면, 메모리 매니저(100)는 계산된 프로그램 카운트 중 기지정된 제1 문턱값(예컨대, 100) 이상인 프로그램 카운트를 갖는 프로그램을 탐색한다. 프로그램 카운트가 제1 문턱값 이상인 프로그램(Program A, Program C)이 탐색되면, 탐색된 프로그램(Program A, Program C)을 스왑 후보 프로그램으로 선별한다.
선별된 스왑 후보 프로그램(Program A, Program C)에 포함된 각 세그먼트에 대한 세그먼트 카운트가 제1 문턱값 이하의 값으로 기지정된 제2 문턱값(예컨대, 50) 이상인 세그먼트를 탐색하고, 세그먼트 카운트가 제2 문턱값 이상인 세그먼트가 탐색되면 탐색된 세그먼트를 마이그레이션 대상으로 선별한다.
도 11에서는 스왑 후보 프로그램(Program A, Program C)에서 각 세그먼트의 세그먼트 카운트가 도 8과와 같은 것으로 가정하였으며, 이에 A 프로그램 (Program A)에서 세그먼트 카운트가 51인 제0 세그먼트가 마이그레이션 대상으로 선별되며, C 프로그램(Program C)에서는 세그먼트 카운트가 77인 제2 세그먼트가 마이그레이션 대상으로 선별된다. 일 예로서 프로그램(Program A, Program C)에서 각 1개의 세그먼트가 마이그레이션 대상으로 선별되는 경우를 도시 하였으나, 각 프로그램(Program A, Program C)에서 마이그레이션 대상으로 선별되는 세그먼트의 개수는 한정되지 않는다. 선별된 스왑 후보 프로그램(Program A, Program C)에서 세그먼트 카운트가 제2 문턱값 이상인 모든 세그먼트가 마이그레이션 대상 세그먼트로 선별될 수 있다.
스왑 후보 프로그램(Program A, Program C)으로 선별되지 않은 프로그램(Program B)에서는 세그먼트 카운트가 제2 문턱값 이상인 모든 세그먼트가 존재하더라도, 메모리 매니저(100)가 선별되지 않은 프로그램(Program B)의 세그먼트 카운트를 고려하지 않으므로, 마이그레이션 대상 세그먼트로 선별되지 않는다.
메모리 매니저(100)는 마이그레이션 대상 세그먼트가 선별되면, 도 12에서 도시된 바와 같이, NVM 모듈(300)에서 선별된 세그먼트가 VM 모듈 (200)로 마이그레이션되도록 VM 컨트롤러(210)와 NVM 컨트롤러(310)를 제어하여, NVM 모듈(300)에서 선별된 마이그레이션 대상 세그먼트를 VM 모듈(200)로 마이그레이션시킨다. NVM 모듈(300)에서 선별된 마이그레이션 대상 세그먼트는 NVM 컨트롤러(310)의 버퍼(320)를 통해 메모리 매니저(100)의 스왑 버퍼로 전달되고, 스왑 버퍼로 전달된 마이그레이션 대상 세그먼트는 VM 컨트롤러(210)의 버퍼(220)를 통해 VM 모듈(200)로 인가되어 저장될 수 있다.
메모리 매니저(100)는 선별된 마이그레이션 대상 세그먼트를 마이그레이션할 때, 마이그레이션되는 데이터의 단위 크기를 가변시킬 수 있다.
도 13은 본 발명의 다른 실시예에 따른 마이그레이션 정책 스위칭 장치의 마이그레이션 실행부를 예시한 도면이다.
명령 분석부(131)는 외부 장치에서 인가되는 리드 또는 라이트와 같은 명령을 분석하여, 리드 요청과 라이트 요청은 리매핑부(133)로 전달하고, 라이트 요청 정보는 재할당부(132)로 전달한다. 라이트 요청 정보에는 데이터 어드레스, 프로그램 정보 등이 포함될 수 있다.
하이브리드 메모리 장치에 저장된 프로그램(어플리케이션)은 외부 프로세서 등에 의해 실행될 수 있으며, 실행되는 과정에서 라이트 명령에 의해 데이터 변경이 발생하며, 변경된 데이터는 다시 하이브리드 장치에 저장되어야 한다. 명령 분석부(131)는 라이트 명령에 의해 변경된 데이터가 인가되면, 재할당부(132)로 변경된 데이터의 어드레스와 프로그램 정보 및 세그먼트 정보 등이 포함된 라이트 요청 정보를 전송하여, 이전 저장된 데이터가 변경된 데이터로 업데이트 되도록 한다. 명령 분석부(131)가 재할당부(132)로 라이트 요청 정보를 전달하는 것은 NVM 모듈(300)에 저장된 프로그램에서 프로그램 카운트와 세그먼트 카운트에 의해 VM 모듈(200)로 마이그레이션된 세그먼트에 대한 정보가 리매핑부(133)으로 전달되도록 하여, 리매핑부(133)가 정상적으로 데이터를 라이트하여 업데이트할 수 있도록 한다.
재할당부(132)는 인가된 프로그램이 이전 VM 모듈(200) 또는 NVM 모듈(300)에 저장되지 않은 신규 프로그램이면, 인가되는 프로그램을 세그먼트로 구분하고, 각 세그먼트에 라이트 명령이 포함된 개수를 카운트하여 세그먼트 카운트를 획득하며, 획득된 세그먼트 카운트를 기반으로 프로그램 카운트를 계산하여 저장한다. 재할당부(132)는 계산된 프로그램 카운트와 세그먼트 카운트에 따라 VM 모듈(200) 또는 NVM 모듈(300) 중 프로그램의 다수의 세그먼트가 각각 저장될 위치를 설정한다.
재할당부(132)는 인가되는 프로그램의 세그먼트들이 기본적으로 NVM 모듈(300)에 저장되도록 어드레스를 할당할 수 있다. 재할당부(132)는 저장된 프로그램 카운트와 세그먼트 카운트에 기반하여, 스왑 후보 프로그램을 선별 하고, 선별된 스왑 후보 프로그램에서 마이그레이션 대상 세그먼트를 선별하여, 선별된 마이그레이션 대상 세그먼트가 VM 모듈(200)에 저장되도록 어드레스를 할당할 수 있다.
선별되지 않은 프로그램의 세그먼트들과 스왑 후보 프로그램에서 마이그레이션 대상 세그먼트를 제외한 나머지 세그먼트들은 NVM 모듈(300)에 저장되도록 어드레스를 할당할 수 있다. 재할당부(132)는 신규 프로그램에 대한 세그먼트들을 모두 NVM 모듈(300)에 저장되도록 어드레스를 할당하여 저장하고, 이후, NVM 모듈(300)에 저장된 프로그램의 세그먼트 중 마이그레이션 대상 세그먼트를 선별하여 VM 모듈(200)에 마이그레이션되도록 할 수도 있다.
재할당부(132)는 VM 컨트롤러(210) 또는 NVM 컨트롤러(310)가 인가된 프로그램의 세그먼트를 저장한 이후, VM 컨트롤러(210) 또는 NVM 컨트롤러(310)로부터 저장된 데이터 어드레스를 인가받아 획득할 수도 있다.
재할당부(132)는 NVM 모듈(300)에 이전 저장된 프로그램에 대한 프로그램 카운트와 세그먼트 카운트를 분석하여, NVM 모듈(300)에 저장된 프로그램의 세그먼트를 선별적으로 VM 모듈(300)로 마이그레이션시킬 수 있다. 재할당부(132)는 신규 프로그램이 라이트될 때, 프로그램 카운트와 세그먼트 카운트를 획득하여 미리 저장하고 있으며, 라이트 요청 정보로부터 프로그램의 세그먼트에 변화가 확인되는 경우, 프로그램 카운트와 세그먼트 카운트를 다시 계산하여 업데이트하여 저장한다. 각 프로그램의 세그먼트들에 대한 라이트 히스토리를 미리 저장한다. 저장된 라이트 히스토리에 따라 프로그램의 세그먼트들 중 마이그레이션 대상 세그먼트를 선별하여 VM 모듈(300)로 마이그레이션시킨다. 이때, 재할당부(132)는 NVM 모듈(300)에서 마이그레이션 대상 세그먼트의 데이터 어드레스와 VM 모듈(200)로 마이그레이션된 세그먼트의 데이터 어드레스를 리매핑부(133)로 전달하여 리매핑부(133)가 마이그레이션된 데이터 어드레스의 변화를 저장하도록 한다.
재할당부(132)는 마이그레이션 대상 세그먼트의 데이터 어드레스를 분석하여, 마이그레이션되는 데이터의 단위 크기를 조절할 수 있다. 재할당부(132)가 마이그레이션되는 데이터의 단위 크기를 조절하는 방식에 대한 상세한 설명은 후술하도록 한다.
리매핑부(133)는 재할당부(132)로부터 마이그레이션에 의해 변경된 데이터 어드레스를 인가받아 저장하고, 명령 분석부(131)로부터 리드 명령 또는 라이트 명령을 인가되면, 저장된 데이터 어드레스를 기반으로 리드 명령과 라이트 명령을 수정하여, VM 컨트롤러(210) 또는 NVM 컨트롤러(310)로 전달한다.
리매핑부(133)는 재할당부(132)에 의해 마이그레이션된 데이터에 대한 데이터 어드레스가 인가되면, 기존의 데이터 어드레스와 마이그레이션된 데이터 어드레스를 리맵핑 테이블에 저장한다. 이후, 명령 분석부(131)로부터 리드 또는 라이트 명령이 인가되면, 리맵핑 테이블에 해당 데이터에 대해 재할당된 메모리 어드레스가 존재하는지 판별하고, 재할당부(132)에 의해 재할당된 메모리 어드레스가 존재하면, 리드 또는 라이트 명령을 재할당된 메모리 어드레스에 대한 명령으로 수정하여 VM 컨트롤러(210) 또는 NVM 컨트롤러(310)로 전달함으로써, VM 컨트롤러 (120) 또는 NVM 컨트롤러(310)가 재할당된 메모리 어드레스에서 데이터를 리드하거나 라이트할 수 있도록 한다.
스왑 버퍼(134)는 VM 모듈(200)에 저장된 데이터를 NVM 모듈(300)로 마이그레이션하거나, NVM 모듈(300)에 저장된 데이터를 VM 모듈(200)로 마이그레이션할 때, VM 컨트롤러(210) 및 NVM 컨트롤러(310)의 버퍼(220, 320)에서 전달되는 데이터를 임시 저장한 후, 상대 버퍼(220, 320)로 전달함으로써, 마이그레이션 도중 데이터 충돌이 발생하지 않도록 할 수 있다.
도 14는 본 발명의 다른 실시예에 따른 마이그레이션 정책 스위칭 장치의 재할당부를 예시한 도면이다.
재할당부(132)는 라이트 요청 정보 분석부(141), 라이트 히스토리 테이블(142), 마이그레이션 결정부(143) 및 마이그레이션 요청부(144)를 포함할 수 있다.
라이트 요청 정보 분석부(141)는 명령 분석부(131)에서 인가되는 라이트 요청 정보를 분석한다. 라이트 요청 정보 분석부(141)는 라이트 요청 정보로부터 프로그램 정보와 세그먼트 정보 및 데이터 어드레스 등을 확인하여, 라이트 히스토리 테이블(142)로 전달한다.
라이트 히스토리 테이블(142)은 라이트 요청 정보 분석부(141)에 서 확인되는 프로그램 정보와 세그먼트 정보로부터 프로그램을 세그먼트로 구분하고, 각 세그먼트에 라이트 명령이 포함된 개수를 카운트하여 세그먼트 카운트를 획 득하며, 획득된 세그먼트 카운트를 기반으로 프로그램 카운트를 계산한다. 그리고 계산된 프로그램 카운트와 세그먼트 카운트를 라이트 히스토리 테이블(142)에 저장한다.
마이그레이션 결정부(143)는 라이트 히스토리 테이블(142)에 저장된 프로그램 카운트로부터 스왑 후보 프로그램을 설정하고, 설정된 스왑 후보 프로 그램에 포함된 세그먼트들의 세그먼트 카운트로부터 마이그레이션 대상 세그먼트를 선별한다.
마이그레이션 요청부(144)는 마이그레이션 대상 세그먼트에 대한 데이터 어드레스를 VM 컨트롤러(210)와 NVM 컨트롤러(310)로 전달하여, 마이그레이션 대상 세그먼트가 VM 모듈(200) 또는 NVM 모듈(300)로 마이그레이션 되도록 한다.
마이그레이션 요청부(144)는 VM 컨트롤러(210)와 NVM 컨트롤러 (130)로부터 마이그레이션 된 이후의 데이터 어드레스를 인가받아 라이트 히스토리 테이블(142)에 저장하고 리매핑부(133)로 전달할 수 있다. 이때, 마이그레이션 요청부(144)는 세그먼트에 포함된 데이터의 데이터 어드레스를 기반으로 마이그레이션되는 데이터의 단위 크기를 조절할 수 있다.
도 15는 본 발명의 다른 실시예에 따른 마이그레이션 정책 스위칭 장치의 마이그레이션 데이터 단위 크기를 결정하는 개념을 예시한 도면이다.
마이그레이션 요청부(144)는 다수의 데이터 스코프(Scope0 ~ Scope5)를 포함할 수 있다. 데이터 스코프(Scope0 ~ Scope5)의 개수는 다양하게 조절될 수 있다. 데이터 스코프는 데이터가 시퀀셜하게 인가되는지 판별하기 위한 일종의 가상 카운터로서, 다수의 데이터 스코프(Scope0 ~ Scope5) 각각에서 구분되는 각 영역은 마이그레이션 수행시에 설정될 수 있는 데이터 마이그레이션 단위 크기를 설정하기 위한 카운트를 나타낸다.
다수의 데이터 스코프(Scope0 ~ Scope5) 각각의 전체 크기는 마이그레이션 가능한 최대 데이터 마이그레이션 단위 크기(예를 들면 128Kbyte)를 나타내도록 설정될 수 있다. 일 예로 도 9에서 각 데이터 스코프(Scope0 ~ Scope5)의 각 영역은 최소 데이터 마이그레이션 단위 크기 4Kbye를 나타내도록 설정되어, 다수의 데이터 스코프(Scope0 ~ Scope5) 각각은 32개의 영역으로 구분될 수 있다. 마이그레이션 단위 크기는 일반적으로 2의 자승 순서로 변경되므로, 각 영역이 4Kbye로부터 2의 승수에 따라 증가하는 마이그레이션 단위 크기를 나타내도록 설정될 수도 있다. 데이터 스코프의 각 영역이 순차적으로, 4, 8, 16, 32, ... , 128Kbyte 순서를 나타내도록 설정될 수도 있다.
마이그레이션 요청부(144)는 현재 설정된 마이그레이션 단위를 기준으로 더 작은 값을 갖는 제1 기준 마이그레이션 단위와 더 큰 값을 가는 제2 기준 마이그레이션 단위를 설정할 수 있다. 즉 현재 마이그레이션 단위를 중심으로 제1 기준 마이그레이션 단위와 제2 기준 마이그레이션 단위 사이의 구간을 단위 유지 구간으로 설정하고, 제1 기준 마이그레이션 단위 미만 구간을 단위 감소 구간으로 설정하며, 제1 기준 마이그레이션 단위 이상의 구간을 단위 증가 구간으로 설정한다.
이후 마이그레이션 요청부(144)는 순차적으로 접근하는 데이터 어드레스 사이의 어드레스 차이가 현재 설정된 기지정된 기준 어드레스 단위 이하이면, 다수의 데이터 스코프(Scope0 ~ Scope5) 중 하나의 데이터 스코프에서 각 영역을 순차적으로 채운다. 데이터 어드레스 차이가 계속해서 기준 어드레스 단위 이하이면 동일한 데이터 스코프에서 계속하여 영역을 채우는 반면, 데이터 어드레스 차이가 기준 어드레스 단위를 초과하게 되면, 다음 순서의 데이터 스코프에서 다시 각 영역을 순차적으로 채운다.
마이그레이션 요청부(144)는 상기한 과정을 반복 수행하며, 모든 데이터 스코프(Scope0 ~ Scope5)에 대해 각 영역이 채워지면, 다시 순환하여 데이터 스코프(Scope0 ~ Scope5)의 영역을 순차적으로 채울 수 있다.
마이그레이션 요청부(144)는 기지정된 구간 동안, 다수의 데이터 스코프(Scope0 ~ Scope5)에 채워진 영역의 크기를 계산하고, 다수의 데이터 스코프(Scope0 ~ Scope5) 중 절반 이상, 즉 과반수 이상의 데이터 스코프에 채워진 영역의 크기가 단위 유지 구간과 단위 감소 구간 및 단위 증가 구간 중에서 포함되는 구간을 판별한다. 만일 단위 유지 구간에 포함되는 것으로 판별되면, 현재 설정된 마이그레이션 단위를 유지하는 반면, 단위 감소 구간 또는 단위 증가 구간에 포함되는 것으로 판별되면, 설정된 마이그레이션 단위를 기지정된 단위로 증가시키 나 감소시킨다.
마이그레이션 요청부(144)가 마이그레이션 단위를 가변하는 것은 마이그레이션할 세그먼트에서 연속하는 데이터의 크기에 대응하여 한번에 마이그레이션되는 데이터의 크기를 증가 또는 감소시켜, 마이그레이션 수행 횟수 자체를 줄일 뿐만 아니라, VM 모듈(200)과 NVM 모듈(300)에서 라이트 횟수를 저감시켜 라이트 속도를 향상시킬 뿐만 아니라 NVM 모듈(300)의 내구성을 향상시킬 수 있다.
하이브리드 메모리 장치의 관리 방법은 우선 현재 저장된 프로그램의 데이터에 대해 마이그레이션을 수행해야 하는지 여부를 판별한다. 마이그레이션은 NVM 모듈(300)에 저장된 데이터와 VM 모듈 (200)에 저장된 데이터를 상호 스왑하도록 수행될 수 있다. NVM 모듈(300)에 저장된 데이터를 VM 모듈(200)과 마이그레이션하는 경우는 NVM 모듈(300)에 저장된 프로그램이 리드된 이후, 리드된 프로그램에 대해 실행될 수 있다. 더불어 마이그레이션은 라이트 명령으로 새로운 프로그램이 하이브리드 메모리 장치에 인가되어 저장되는 경우에도 수행될 수 있다. 그리고 마이그레이션이 수행되어야 하는 것으로 판별되면, 하이브리드 메모리 장치는 기지정된 방식으로 마이그레이션을 실행한다.
마이그레이션을 실행하는 단계에서는 먼저 다수의 프로그램 각각을 구성하는 다수의 세그먼트 각각에서 라이트 명령의 개수를 카운트하여 세그먼트 카운트를 획득하고, 획득된 세그먼트 카운트를 합산하여 각 프로그램에 대한 프로그램 카운트를 계산한다.
계산된 프로그램 카운트가 기지정된 제1 문턱값 이상인 프로그램을 판별한다. 만일 프로그램 카운트가 제1 문턱값 이상인 프로그램이 확인되면, 확인된 프로그램을 스왑 후보 프로그램으로 설정한다. 이후 설정된 스왑 후보 프로그램의 다수의 세그먼트 중 세그먼트 카운트가 제2 문턱값 이상인 세그먼트를 판별한다. 세그먼트 카운트가 제2 문턱값 이상인 세그먼트가 판별되면, 판별된 세그먼트를 마이그레이션 대상 세그먼트로 선택한다.
마이그레이션 대상 세그먼트에 대한 마이그레이션을 시작한다. 마이그레이션이 시작되면, 세그먼트에서 순차적으로 전달되는 데이터의 어드레스 차이를 확인하여, 확인되는 어드레스 차이가 기지정된 기준 어드레스 단위 이하이면, 동일한 데이터 스코프에 누적하고, 기준 어드레스 단위를 초과하면 다른 데이터 스코프에 누적하는 방식으로 순차적으로 전달되는 데이터의 어드레스 변화를 기지정된 개수의 데이터 스코프에 누적 기록한다. 그리고 기지정된 구간마다 다수의 데이터 스코프에 누적 기록된 크기를 확인하고, 다수의 데이터 스코프 중 과반수 이상의 데이터 스코프에 누적 기록된 크기가 현재 설정된 마이그레이션 단위를 기준으로 미리 지정된 단위 유지 구간과 단위 감소 구간 및 단위 증가 구간 중 어느 구간에 해당하는지 확인하여 마이그레이션 단위를 변경시킨다.
리드 또는 라이트 명령과 같이 데이터 액세스 명령이 인가되는지 판별한다. 만일 액세스 명령이 인가된 것으로 판별되면, 현재 VM 모듈(200)과 NVM 모듈(300) 사이에서 데이터 마이그레이션이 수행 중 인지 판별한다. 마이그레이션이 수행중인 것으로 판별되면, 현재 마이그레이션 중인 데이터가 스왑 버퍼(134)에 저장될 때까지 대기한 후, 마이그레이션을 일시 중지시킨다.
액세스 명령이 인가된 데이터가 스왑 버퍼(134)에 저장되어 있는지 판별한다. 데이터가 스왑 버퍼(134)에 저장된 것으로 판별되면, 스왑 버퍼(134)에 대해 액세스를 수행한다. 즉 데이터를 리드 또는 라이트 한다. 그리고 마이그레이션을 계속 수행한다.
스왑 버퍼(134)에 저장되지 않은 것으로 판별되면, VM 컨트 롤러(120) 또는 NVM 컨트롤러(310)를 통해 VM 모듈(200) 또는 NVM 모듈(300)에 저장된 데이터에 액세스를 수행한다. 또한 현재 마이그레이션이 수행 중이지 않은 경우에도, VM 컨트롤러(210) 또는 NVM 컨트롤러(310)를 통해 VM 모듈(200) 또는 NVM 모듈(300)에 저장된 데이터에 액세스를 수행한다.
마이그레이션 정책 스위칭 장치는 하드웨어, 펌웨어, 소프트웨어 또는 이들의 조합에 의해 로직회로 내에서 구현될 수 있고, 범용 또는 특정 목적 컴퓨터를 이용하여 구현될 수도 있다. 장치는 고정배선형(Hardwired) 기기, 필드 프로그램 가능한 게이트 어레이(Field Programmable Gate Array, FPGA), 주문형 반도체(Application Specific Integrated Circuit, ASIC) 등을 이용하여 구현될 수 있다. 또한, 장치는 하나 이상의 프로세서 및 컨트롤러를 포함한 시스템온칩(System on Chip, SoC)으로 구현될 수 있다.
마이그레이션 정책 스위칭 장치는 하드웨어적 요소가 마련된 컴퓨팅 디바이스 또는 서버에 소프트웨어, 하드웨어, 또는 이들의 조합하는 형태로 탑재될 수 있다. 컴퓨팅 디바이스 또는 서버는 각종 기기 또는 유무선 통신망과 통신을 수행하기 위한 통신 모뎀 등의 통신장치, 프로그램을 실행하기 위한 데이터를 저장하는 메모리, 프로그램을 실행하여 연산 및 명령하기 위한 마이크로프로세서 등을 전부 또는 일부 포함한 다양한 장치를 의미할 수 있다.
도 1 및 도 2에서는 각각의 과정을 순차적으로 실행하는 것으로 기재하고 있으나 이는 예시적으로 설명한 것에 불과하고, 이 분야의 기술자라면 본 발명의 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 도 1 및 도 2에 기재된 순서를 변경하여 실행하거나 또는 하나 이상의 과정을 병렬적으로 실행하거나 다른 과정을 추가하는 것으로 다양하게 수정 및 변형하여 적용 가능할 것이다.
본 실시예들에 따른 동작은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능한 매체에 기록될 수 있다. 컴퓨터 판독 가능한 매체는 실행을 위해 프로세서에 명령어를 제공하는 데 참여한 임의의 매체를 나타낸다. 컴퓨터 판독 가능한 매체는 프로그램 명령, 데이터 파일, 데이터 구조 또는 이들의 조합을 포함할 수 있다. 예를 들면, 자기 매체, 광기록 매체, 메모리 등이 있을 수 있다. 컴퓨터 프로그램은 네트워크로 연결된 컴퓨터 시스템 상에 분산되어 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수도 있다. 본 실시예를 구현하기 위한 기능적인(Functional) 프로그램, 코드, 및 코드 세그먼트들은 본 실시예가 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있을 것이다.
본 실시예들은 본 실시예의 기술 사상을 설명하기 위한 것이고, 이러한 실시예에 의하여 본 실시예의 기술 사상의 범위가 한정되는 것은 아니다. 본 실시예의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 실시예의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
Claims (16)
- 데이터 마이그레이션 정책 스위칭 장치에 있어서,
다수의 휘발성 메모리 셀을 포함하는 VM(Volatile Memory) 모듈 및 다수의 비휘발성 메모리 셀을 포함하는 NVM(Non-Volatile Memory) 모듈을 포함하는 메모리 모듈; 및
저장된 어플리케이션 특징을 기준으로 상기 메모리 모듈에 적합한 마이그레이션 정책을 선택하는 메모리 매니저를 포함하고,
상기 메모리 매니저는,
상기 마이그레이션 정책에 따라 데이터 마이그레이션을 수행하는 마이그레이션 엔진; 및
상기 데이터 마이그레이션의 대상이 되는 데이터의 원래 주소와 새로운 주소를 저장하는 리매핑 테이블을 포함하고,
상기 마이그레이션 엔진은,
상기 어플리케이션 특징을 저장하는 컨트롤 레지스터;
상기 어플리케이션 특징을 기반으로 복수의 마이그레이션 정책 중에서 하나의 마이그레이션 정책을 선택하는 마이그레이션 정책 선택부;
상기 복수의 마이그레이션 정책을 저장하는 마이그레이션 정책 저장부; 및
상기 선택된 하나의 마이그레이션 정책을 바탕으로 데이터 마이그레이션을 진행하는 마이그레이션 정책 실행부를 포함하고,
상기 어플리케이션 특징은 어플리케이션 작성 과정 또는 컴파일 과정에서 획득되어 어플리케이션에 기입되어 있고, 어플리케이션 실행 초기에 운영체제에 의해 상기 컨트롤 레지스터에 저장되는 것을 특징으로 하는 데이터 마이그레이션 정책 스위칭 장치. - 삭제
- 삭제
- 제1항에 있어서,
상기 어플리케이션 특징은 민감도(sensitivity), 접근 빈도(access frequency), 쓰기 정도(write-intensity), 지역성(locality), 또는 이들의 조합을 포함하는 것을 특징으로 하는 데이터 마이그레이션 정책 스위칭 장치. - 삭제
- 제1항에 있어서,
상기 마이그레이션 정책 실행부가 상기 선택된 하나의 마이그레이션 정책을 진행하면, 상기 리매핑 테이블은 업데이트되는 것을 특징으로 하는 데이터 마이그레이션 정책 스위칭 장치. - 제1항에 있어서,
상기 마이그레이션 정책 실행부는 상기 NVM 모듈에 저장된 어플리케이션을 기지정된 세그먼트 단위로 구분하고, 각 세그먼트에 포함된 라이트 명령의 개수인 세그먼트 카운트를 획득하고 합산하여, 어플리케이션에 대한 라이트 카운트인 어플리케이션 카운트를 계산하고, 상기 어플리케이션 카운트가 기지정된 제1 문턱값 이상인 어플리케이션의 다수의 세그먼트 중 세그먼트 카운트가 기지정된 제2 문턱값 이상인 세그먼트를 선택하여 상기 VM 모듈에 저장된 데이터와 마이그레이션하고, 마이그레이션된 세그먼트의 데이터 어드레스를 리맵핑하는 상기 NVM 모듈에 저장된 어플리케이션을 기지정된 세그먼트 단위로 구분하고, 각 세그먼트에 포함된 라이트 명령의 개수인 세그먼트 카운트를 획득하고 합산하여, 어플리케이션에 대한 라이트 카운트인 어플리케이션 카운트를 계산하고, 상기 어플리케이션 카운트가 기지정된 제1 문턱값 이상인 어플리케이션의 다수의 세그먼트 중 세그먼트 카운트가 기지정된 제2 문턱값 이상인 세그먼트를 선택하여 상기 VM 모듈에 저장된 데이터와 마이그레이션하고, 마이그레이션된 세그먼트의 데이터 어드레스를 리맵핑하는 것을 특징으로 하는 데이터 마이그레이션 정책 스위칭 장치. - 제7항에 있어서,
상기 VM 모듈은 상기 VM 모듈에 저장되는 데이터에 대한 액세스를 제어하는 VM 컨트롤러를 포함하고,
상기 NVM 모듈은 상기 NVM 모듈에 저장되는 데이터에 대한 액세스를 제어하는 NVM 컨트롤러를 포함하고,
상기 마이그레이션 정책 실행부는 상기 NVM 모듈에 저장된 어플리케이션의 세그먼트를 선택적으로 상기 VM 모듈에 저장된 데이터와 마이그레이션시키고, 마이그레이션된 데이터에 대한 액세스 명령이 인가되면, 리맵핑된 데이터 어드레스에 대한 액세스 명령으로 수정하는 것을 특징으로 하는 데이터 마이그레이션 정책 스위칭 장치. - 제8항에 있어서,
상기 마이그레이션 정책 실행부는,
리드 또는 라이트 명령을 포함하는 액세스 명령이 인가되면, 인가된 액세스 명령을 분석하여, 리드 또는 라이트 명령과 어플리케이션 정보와 데이터 어드레스를 포함하는 라이트 요청 정보로 구분하는 명령 분석부;
상기 라이트 요청 정보를 인가받아 인가된 어플리케이션을 다수의 세그먼트로 구분하고, 세그먼트 카운트와 어플리케이션 카운트를 획득하여 라이트 히스토리 테이블에 저장하며, 저장된 라이트 히스토리 테이블에 기초하여 상기 NVM 모듈에 저장된 프로그램의 세그먼트를 선택적으로 상기 VM 모듈의 대응하는 데이터와 마이그레이션시키고, 마이그레이션되어 변경된 데이터 어드레스를 획득하는 재할당부;
세그먼트의 데이터가 저장된 데이터 어드레스와 변경된 데이터 어드레스를 리맵핑하여 저장하고, 상기 리드 또는 라이트 명령이 인가되면, 인가된 리드 또는 라이트 명령에서 지정되는 데이터 어드레스를 리맵핑된 데이터 어드레스로 수정하여 상기 VM 컨트롤러와 상기 NVM 컨트롤러로 출력하는 리맵핑부; 및 상기 NVM 모듈과 상기 VM 모듈 사이에서 마이그레이션되는 데이터를 인가받아 임시 저장하여 상대 모듈로 전달하는 스왑 버퍼를 포함하는 것을 특징으로 하는 데이터 마이그레이션 정책 스위칭 장치. - 제9항에 있어서,
상기 재할당부는 상기 라이트 히스토리 테이블을 분석하여, 어플리케이션 카운트가 상기 제1 문턱값 이상인 어플리케이션을 스왑 후보 어플리케이션으로 설정하고, 설정된 스왑 후보 어플리케이션의 다수의 세그먼트 중 세그먼트 카운트가 상기 제2 문턱값 이상인 세그먼트를 마이그레이션이 수행되는 마이그레이션 대상 세그먼트로 선택하는 것을 특징으로 하는 데이터 마이그레이션 정책 스위칭 장치. - 제10항에 있어서,
상기 재할당부는 상기 마이그레이션 대상 세그먼트에 대한 데이터 어드레스를 상기 NVM 컨트롤러로 전달하여, 상기 NVM 컨트롤러의 제어에 따라 상기 NVM 모듈에 저장된 상기 마이그레이션 대상 세그먼트가 상기 스왑 버퍼와 상기 VM 컨트롤러를 통해 상기 VM 모듈에 저장되도록 하는 것을 특징으로 하는 데이터 마이그레이션 정책 스위칭 장치. - 제11항에 있어서,
상기 재할당부는 마이그레이션되는 세그먼트의 데이터 어드레스를 확인하여, 순차적으로 마이 그레이션되는 데이터의 데이터 어드레스 차이가 기지정된 기준 어드레스 단위 이하이면, 기지정된 개수의 데이터 스코프 중 동일한 데이터 스코프에 누적카운트하고, 기준 어드레스 단위를 초과하면 다른 데이터 스코프에 다시 누적 카운트하여 순차적으로 전달되는 데이터의 어드레스 변화를 기지정된 다수의 데이터 스코프에 누적 기록하며, 다수의 데이터 스코프에 누적 기록된 크기를 확인하고, 과반수 이상의 데이터 스코프에 누적 기록된 크기가 현재 설정된 마이그레이션 단위를 기준으로 미리 지정된 단위 유지 구간과 단위 감소 구간 및 단위 증가 구간 중 어느 구간에 해당하는지 확인하여 확인된 구간에 따라 마이그레이션되는 데이터의 마이그레이션 단위 크기를 조절하는 것을 특징으로 하는 데이터 마이그레이션 정책 스위칭 장치. - 제9항에 있어서,
상기 마이그레이션 정책 실행부는 데이터 마이그레이션 실행 중 액세스 명령이 인가되면, 마이그레이션되는 세그먼트의 데이터 중 스왑 버퍼로 전송되는 데이터의 전송 완료 후, 데이터 마이그레이션을 일시 중지시키고, 액세스 명령에 대응하는 동작을 수행하는 것을 특징으로 하는 데이터 마이그레이션 정책 스위칭 장치. - 제13항에 있어서,
상기 마이그레이션 정책 실행부는 상기 액세스 명령에 의해 지정되는 데이터가 상기 스왑 버퍼에 저장되어 있는지 판별하고, 상기 스왑 버퍼에 저장된 것으로 판별되면, 상기 스왑 버퍼에 저장된 데이터에 액세스를 수행하며, 상기 스왑 버퍼에 저장되지 않은 것으로 판별되면, 상기 VM 컨트롤러 또는 상기 NVM 컨트롤러를 통해 상기 VM 모듈 또는 상기 NVM 모듈에 저장된 데이터에 액세스를 수행하는 데이터 마이그레이션 정책 스위칭 장치. - 데이터 마이그레이션 정책 스위칭 방법에 있어서,
어플리케이션 작성 과정 또는 컴파일 과정에서 어플리케이션 특징을 획득하여 어플리케이션에 기입하는 단계;
어플리케이션 실행 초기에 운영체제에 의해 메모리 매니저의 컨트롤 레지스터에 상기 어플리케이션 특징을 저장하는 단계; 및
상기 컨트롤 레지스터에 저장된 상기 어플리케이션 특징을 기준으로, 다수의 휘발성 메모리 셀을 포함하는 VM(Volatile Memory) 모듈 및 다수의 비휘발성 메모리 셀을 포함하는 NVM(Non-Volatile Memory) 모듈을 포함하는 메모리 모듈에 적합한 마이그레이션 정책을 선택하는 단계를 포함하고,
상기 마이그레이션 정책을 선택하는 단계는,
상기 어플리케이션 특징을 기반으로 복수의 마이그레이션 정책 중에서 하나의 마이그레이션 정책을 선택하는 단계;
상기 선택된 하나의 마이그레이션 정책을 바탕으로 데이터 마이그레이션을 진행하는 단계; 및
상기 데이터 마이그레이션의 대상이 되는 데이터의 원래 주소와 새로운 주소를 저장하는 리매핑 테이블을 업데이트하는 단계를 포함하는 것을 특징으로 하는 데이터 마이그레이션 정책 스위칭 방법. - 제15항에 있어서,
상기 마이그레이션 정책을 선택하는 단계는,
메모리 접근 횟수 또는 수행 시간을 획득하는 단계; 및
상기 메모리 접근 횟수 또는 수행 시간을 기준치와 비교한 결과에 따라 데이터 마이그레이션 수행을 판단하는 단계를 더 포함하는 데이터 마이그레이션 정책 스위칭 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210092466A KR102514268B1 (ko) | 2021-07-14 | 2021-07-14 | 데이터 마이그레이션 정책 스위칭 방법 및 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210092466A KR102514268B1 (ko) | 2021-07-14 | 2021-07-14 | 데이터 마이그레이션 정책 스위칭 방법 및 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20230011787A KR20230011787A (ko) | 2023-01-25 |
KR102514268B1 true KR102514268B1 (ko) | 2023-03-24 |
Family
ID=85109840
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210092466A KR102514268B1 (ko) | 2021-07-14 | 2021-07-14 | 데이터 마이그레이션 정책 스위칭 방법 및 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102514268B1 (ko) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101697937B1 (ko) * | 2010-01-08 | 2017-02-01 | 삼성전자주식회사 | 멀티프로세서 시스템에서 동적 태스크 마이그레이션을 위한 방법 및 시스템 |
KR101130051B1 (ko) * | 2010-03-22 | 2012-03-28 | 한국과학기술원 | 메인 메모리 시스템, 관리방법, 컴퓨터 판독가능매체 |
US10372551B2 (en) * | 2013-03-15 | 2019-08-06 | Netlist, Inc. | Hybrid memory system with configurable error thresholds and failure analysis capability |
US10042750B2 (en) | 2013-03-15 | 2018-08-07 | Micron Technology, Inc. | Apparatuses and methods for adaptive control of memory using an adaptive memory controller with a memory management hypervisor |
KR20150043102A (ko) | 2013-10-14 | 2015-04-22 | 한국전자통신연구원 | 하이브리드 메모리의 데이터 관리 장치 및 방법 |
KR20170062615A (ko) * | 2015-11-27 | 2017-06-08 | 삼성전자주식회사 | 이종의 불휘발성 메모리를 갖는 스토리지 장치의 접근 방법 |
US10255190B2 (en) * | 2015-12-17 | 2019-04-09 | Advanced Micro Devices, Inc. | Hybrid cache |
KR20210046377A (ko) * | 2019-10-18 | 2021-04-28 | 에스케이하이닉스 주식회사 | 마이그레이션 동작을 위한 메모리 시스템 및 메모리 시스템의 동작방법 |
-
2021
- 2021-07-14 KR KR1020210092466A patent/KR102514268B1/ko active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
KR20230011787A (ko) | 2023-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102457071B1 (ko) | 다중 계층 메모리 시스템에서의 예측 데이터 오케스트레이션 | |
US10761780B2 (en) | Memory system | |
US9336133B2 (en) | Method and system for managing program cycles including maintenance programming operations in a multi-layer memory | |
US9734911B2 (en) | Method and system for asynchronous die operations in a non-volatile memory | |
US9734050B2 (en) | Method and system for managing background operations in a multi-layer memory | |
US9348746B2 (en) | Method and system for managing block reclaim operations in a multi-layer memory | |
US9465731B2 (en) | Multi-layer non-volatile memory system having multiple partitions in a layer | |
US9223693B2 (en) | Memory system having an unequal number of memory die on different control channels | |
CN111699477A (zh) | 在存储器***中经由数据串流隔离的加速数据存取 | |
US9244834B2 (en) | Method and apparatus for selecting a memory block for writing data, based on a predicted frequency of updating the data | |
CN111684435B (zh) | 实施于存储器***中的通过消息传递接口的存储器存取通信 | |
US9507719B2 (en) | Garbage collection in hybrid memory system | |
US20140189208A1 (en) | Method and system for program scheduling in a multi-layer memory | |
US20130227218A1 (en) | Data Migration between Memory Locations | |
US10929286B2 (en) | Arbitrated management of a shared non-volatile memory resource | |
US11763147B2 (en) | Data management device for supporting high speed artificial neural network operation by using data caching based on data locality of artificial neural network | |
KR20120030137A (ko) | 영구 가비지 컬렉션을 갖는 메모리 시스템 | |
CN106873912A (zh) | Tlc芯片固态硬盘的动态分区存储方法及装置、*** | |
US10838628B2 (en) | Storage system and control method of maintaining reliability of a mounted flash storage | |
KR102192325B1 (ko) | 인공신경망의 데이터 로컬리티 기반의 데이터 캐슁을 이용하여 고속의 인공신경망 오퍼레이션을 지원하는 데이터 관리 장치 | |
US10872015B2 (en) | Data storage system with strategic contention avoidance | |
US10552086B2 (en) | Global pool of garbage collection units (GCUs) in a shared non-volatile memory device | |
KR102482191B1 (ko) | 하이브리드 메모리 장치 및 이의 관리 방법 | |
KR102514268B1 (ko) | 데이터 마이그레이션 정책 스위칭 방법 및 장치 | |
US20200004448A1 (en) | Data storage system die set mapping |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |