KR101609980B1 - 메모리 기반 저장장치의 주기적 갱신 장치 및 방법 - Google Patents

메모리 기반 저장장치의 주기적 갱신 장치 및 방법 Download PDF

Info

Publication number
KR101609980B1
KR101609980B1 KR1020150034453A KR20150034453A KR101609980B1 KR 101609980 B1 KR101609980 B1 KR 101609980B1 KR 1020150034453 A KR1020150034453 A KR 1020150034453A KR 20150034453 A KR20150034453 A KR 20150034453A KR 101609980 B1 KR101609980 B1 KR 101609980B1
Authority
KR
South Korea
Prior art keywords
block
memory
storage device
updated
channel
Prior art date
Application number
KR1020150034453A
Other languages
English (en)
Other versions
KR20150107661A (ko
Inventor
백승재
최종무
강동우
Original Assignee
단국대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 단국대학교 산학협력단 filed Critical 단국대학교 산학협력단
Publication of KR20150107661A publication Critical patent/KR20150107661A/ko
Application granted granted Critical
Publication of KR101609980B1 publication Critical patent/KR101609980B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration

Abstract

일정 시간이 지나 비휘발성 메모리에 저장되어 있는 데이터가 손실되는 것을 방지할 수 있는 메모리 기반 저장장치의 주기적 갱신 장치 및 방법이 제공된다. 주기적 갱신 방법은, 메모리 기반 저장장치의 컨트롤러에 탑재되거나 컨트롤러에 연결되는 외부의 파일 관리 시스템의 소프트웨어 계층에 탑재되는 주기적 갱신 장치에서 수행되는 메모리 기반 저장장치의 주기적 갱신 방법으로서, 컨트롤러 또는 상기 소프트웨어 계층으로부터 오는 명령어 가운데 상기의 저장장치에 대한 쓰기 명령을 감지하는 단계, 쓰기 명령에 대응하여 저장장치의 블록번호를 저장하는 단계, 블록번호를 토대로 저장장치의 갱신대상블록을 식별하는 단계, 및 갱신대상블록에 저장된 데이터를 비어있는 블록으로 복사하는 단계를 포함한다.

Description

메모리 기반 저장장치의 주기적 갱신 장치 및 방법{APPARATUS AND METHOD FOR PERIODICALLY UPDATING MEMORY BASED STORAGE DEVICE}
본 발명의 실시예들은 비휘발성 메모리의 데이터 손실 방지 기술에 관한 것으로, 더욱 상세하게는 일정 시간이 지나 비휘발성 메모리에 저장되어 있는 데이터가 손실되는 것을 방지할 수 있는 메모리 기반 저장장치의 주기적 갱신 장치 및 방법에 관한 것이다.
비휘발성 메모리는 스마트폰, 태블릿 PC(personal computer), SSD(solid state drive) 등의 저장장치로 광범위하게 사용되고 있다. 비휘발성 메모리는 ROM(read only memory), Mask ROM, PROM(programmable ROM), EPROM(erasable programmable ROM), EEPROM(electrically erasable programmable ROM), Flash ROM 등이 있으며 휘발성 메모리와 달리 전력이 차단되어도 저장된 데이터를 그대로 보관하는 특성이 있다.
예를 들어, 플래시 메모리 기반 저장장치는 스마트폰, 태블릿 PC 등의 소형 모바일 단말기를 위한 저장장치로부터 SSD 형태로 일반 테스크탑 컴퓨터에 이르기 까지 점차 그 적용범위를 넓혀가고 있다. 최근에는 플래시 메모리의 양산 기술 발전에 따른 가격 하락 및 SSD의 성능 향상으로 인해 서버급 엔터프라이즈 시스템의 저장 장치로도 그 사용범위가 확대되고 있다. 이에 따라 대용량의 고성능, 고신뢰 SSD를 구축하기 위한 기술이 필수적이다. 또한 플래시 메모리 대비 고성능, 저전력 특성을 보이는 PCM(phase-change memory), STT-MRAM(spin-transfer torque magnetic random access memory) 등의 차세대 메모리에 대한 연구가 진행되고 있으며, 이를 기반으로 한 저장장치 역시 활발히 연구되고 있다.
그러나, 메모리 기반의 저장장치는 반도체 장치 자체의 한계로 인하여 플로팅 게이트에 저장된 전하가 일정 시간이 지나면 손실된다. 즉, 상기한 메모리들에 저장된 데이터는 메모리 칩 별로 정의되어 있는 데이터 보존시간(data retention time)이 지나면 저장된 데이터가 소실되는 단점을 가진다. 다시 말해, 특정 메모리 셀에 데이터가 저장되어 있을 때, 해당 셀에 저장된 데이터에 대하여 읽기 연산만 수행하거나 혹은 소정 시간 이상 접근을 하지 않는다면 일정 시간이 지난 후에 해당 데이터가 손실되는 문제가 있다. 이는 메모리 기반 저장장치의 신뢰성에 치명적인 영향을 미친다. 따라서, 메모리 기반의 저장장치라도 장기간의 안정적인 데이터 보존(data retention)을 위해 정기적인 데이터 백업 등의 부가적인 유지관리가 필요하고 이에 따른 추가 비용이 발생하고 있는 실정이다.
본 발명의 배경이 되는 기술은 대한민국 공개특허공보 제10-2012-0028581호(2012.3.23.)에 개시되어 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 목적은 메모리 기반 저장장치의 신뢰성 향상을 위한 주기적 갱신 장치 및 방법을 제공하는데 있다.
다시 말하면, 본 발명의 목적은 메모리 기반의 저장장치에서 일정 시간 동안 데이터를 쓰지 않고 계속해서 데이터를 읽기만 수행하거나 접근을 하지 않는 경우에 발생할 수 있는 데이터 손실을 방지하기 위하여 데이터가 기록되어 있을 때 컨트롤러에 탑재한 특정 장치에서 손실이 예측되는 데이터를 다시 기록하여 데이터의 자연 손실을 방지할 수 있는 메모리 기반 저장장치의 주기적 갱신 장치와 전술한 주기적 갱신 장치에 의해 수행되는 메모리 기반 저장장치의 주기적 갱신 방법을 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명의 일 측면에서는 기존 칩 컨트롤러의 내부에 손실이 예측되는 데이터를 감지하고 감지한 데이터를 메모리의 다른 영역에 다시 쓰는 장치를 포함하는 메모리 기반 저장장치의 주기적 갱신 장치를 제공한다.
일실시예에서, 칩 컨트롤러에 탑재되는 주기적 갱신 장치는 다음과 같은 기능을 수행할 수 있다.
첫째, 컴퓨터 전원이 인가되는 시점에서부터 칩 컨트롤러로부터 내려오는 커맨드들 가운데 쓰기 명령에 한해서 명령이 발생한 GPT(GUID 파티션 테이블) 시간과 해당 블록번호를 함께 저장할 수 있다.
둘째, 장치 내부적으로 GPT 시간을 가지고 올 수 있도록 설계될 수 있으며, 혹은 칩 컨트롤러 내부나 외부의 호스트(host)로부터 시간 정보를 가지고 올 수 있다.
셋째, 메모리 칩에 저장된 데이터의 보존 기간이 만료될 예정인 블록들을 찾아서 관리할 수 있다. 찾는 주기는 내부적으로 설정될 수 있으며, 최소 분 단위에서 최대 월 단위까지 가능하다.
넷째, 저장되어 있는 GPT 시간을 기준으로 데이터 보존 기간이 만료할 블록들을 선정할 수 있다. 선정 기법은 가장 오래전 쓰기가 수행되었던 블록이 최우선 순위를 지닌다.
다섯째, 데이터 보존 기간이 만료될 예정인 블록들(갱신대상블록들)을 찾고 새로운 블록을 할당받아 새로운 비어있는 블록에 갱신대상블록들의 적어도 일부 데이터에 대한 복사를 수행할 수 있다.
상기 목적을 달성하기 위한 본 발명의 다른 측면에서는 메모리 기반 저장장치의 컨트롤러에 탑재되거나 컨트롤러에 연결되는 외부의 파일 관리 시스템의 소프트웨어 계층에 탑재되는 주기적 갱신 장치에서 수행되는 메모리 기반 저장장치의 주기적 갱신 방법으로서, 컨트롤러 또는 상기 소프트웨어 계층으로부터 오는 명령어 가운데 상기 저장장치에 대한 쓰기 명령을 감지하는 단계, 쓰기 명령에 대응하여 저장장치의 블록번호를 저장하는 단계, 블록번호를 토대로 저장장치의 갱신대상블록을 식별하는 단계, 및 갱신대상블록에 저장된 데이터를 비어있는 블록으로 복사하는 단계를 포함하는, 메모리 기반 저장장치의 주기적 갱신 방법을 제공할 수 있다.
여기에서, 갱신대상블록을 식별하는 단계는, 저장장치에 대한 가비지 컬렉션 수행 시 특정 시간 이후에 저장된 데이터를 보유하고 있는 블록들이 삭제 연산이 수행되는 삭제대상블록들로 선정될 때, 블록번호를 토대로 삭제대상블록들에서 갱신대상블록을 식별하는 것을 포함할 수 있다.
상기 목적을 달성하기 위한 본 발명의 또 다른 측면에서는, 메모리 기반 저장장치의 컨트롤러에 탑재되거나 컨트롤러에 연결되는 외부의 파일 관리 시스템의 소프트웨어 계층에 탑재되는 주기적 갱신 장치에서 수행되는 메모리 기반 저장장치의 주기적 갱신 방법으로서, 컨트롤러 또는 소프트웨어 계층으로부터 오는 명령어 가운데 저장장치에 대한 쓰기 명령을 감지하는 단계, 쓰기 명령에 대응하는 저장장치의 블록번호와 쓰기 명령에 대응하는 시간정보를 저장하는 단계, 블록번호와 시간정보를 토대로 저장장치의 데이터 중 보존 기간이 만료되는 데이터가 저장된 갱신대상블록을 식별하는 단계, 및 갱신대상블록에 저장된 데이터를 리프레시하는 단계를 포함하는, 메모리 기반 저장장치의 주기적 갱신 방법을 제공할 수 있다.
여기에서, 갱신대상블록을 식별하는 단계는, 주기적 갱신 장치의 내부 메모리에 정렬되어 보관 중인 시간정보와 저장장치의 메모리 칩에 대해 미리 설정된 데이터 보존기간을 비교하여 갱신대상블록을 식별하는 것을 포함할 수 있다.
여기에서, 시간정보를 저장하는 단계는, 저장장치에 대한 쓰기 명령에 따라 동일한 시간대에 쓰기가 수행되는 복수의 블록들에 대하여는 단일 시간정보를 저장할 수 있다.
여기에서, 리프레시하는 단계는, 갱신대상블록에 저장된 데이터를 비어있는 블록에 복사하여 쓰기 연산하는 것이나 갱신대상블록에 다시 쓰기 연산하는 것을 포함할 수 있다. 그리고, 리프레시하는 단계는 최소 분 단위에서 최대 월 단위에서 선택되는 주기를 가질 수 있다.
여기에서, 리프레시하는 단계는, 갱신대상블록이 연결된 채널에 읽기 요청이나 쓰기 요청이 있으면 갱신대상블록이 연결되어 있는 제1 채널과 다른 제2 채널 상의 비어있는 블록을 선택하여 데이터를 복사하고, 제1 채널에 읽기 요청이나 쓰기 요청이 없으면 제1 채널 상의 비어있는 블록을 선택하여 갱신대상블록의 데이터를 복사하는 것을 포함할 수 있다.
여기에서, 갱신대상블록을 식별하는 단계는, 주기적 갱신 장치의 내부 메모리에 저장 중인 시간정보를 기반으로 일정 시간 이상 오래된 블록을 갱신대상블록으로 선택하는 것을 포함할 수 있다.
여기에서, 리프레시하는 단계는, 저장장치에 대한 가비지 컬렉션 타임에 삭제될 갱신대상블록의 데이터를 가용 블록으로 복사하는 것을 포함할 수 있다.
여기에서, 리프레시하는 단계는, 갱신대상블록이 연결된 제1 채널에 읽기 요청이나 쓰기 요청이 있으면 갱신대상블록이 연결되어 있는 제1 채널과 다른 제2 채널 상의 비어있는 블록을 선택하여 데이터를 복사하고, 제1 채널에 읽기 요청이나 쓰기 요청이 없으면 제1 채널 상의 비어있는 블록을 선택하여 갱신대상블록의 데이터를 복사하는 것을 포함할 수 있다.
여기에서, 시간정보는, 주기적 갱신 장치의 내부, 컨트롤러의 내부 또는 파일 관리 시스템으로부터 획득될 수 있다.
상기 목적을 달성하기 위한 본 발명의 또 다른 측면에서는 전술한 실시예들 중 어느 하나의 메모리 기반 저장장치의 주기적 갱신 방법을 수행하는 프로그램을 기록한 컴퓨터 판독 가능한 기록매체를 제공할 수 있다.
상기 목적을 달성하기 위한 본 발명의 또 다른 측면에서는, 복수의 메모리 칩에 연결되고 칩 컨트롤러를 구비한 메모리 드라이버 장치에 탑재되어 메모리 기반 저장장치인 상기의 복수의 메모리 칩을 주기적으로 갱신하는 장치로서, 메모리 기반 저장장치의 칩 컨트롤러 또는 칩 컨트롤러에 연결되는 외부 호스트의 소프트웨어 계층으로부터 오는 명령어 가운데 저장장치에 대한 쓰기 명령을 감지하는 디텍터, 및 디텍터에 연결되는 내부 메모리를 포함하는 메모리 기반 저장장치의 주기적 갱신 장치를 제공할 수 있다. 여기서, 내부 메모리는 쓰기 명령에 대응하는 저장장치의 블록번호를 저장하거나 상기의 블록번호와 쓰기 명령에 대응하는 시간정보를 저장할 수 있다. 디텍터는 내부 메모리로부터 획득한 블록번호를 토대로 또는 블록번호와 시간정보를 토대로 저장장치의 데이터 중 보존 기간이 만료되는 데이터가 저장된 저장장치의 갱신대상블록을 식별할 수 있다. 그리고, 칩 컨트롤러는 디텍터로부터의 신호에 따라 갱신대상블록에 저장된 데이터를 업데이트할 수 있다.
여기에서, 디텍터는, 주기적 갱신 장치의 내부 메모리에 정렬되어 보관 중인 시간정보와 저장장치의 메모리 칩에 대해 미리 설정된 데이터 보존기간을 비교하여 갱신대상블록을 식별할 수 있다.
여기에서, 내부 메모리는 저장장치에 대한 쓰기 명령에 따라 동일한 시간대에 쓰기가 수행되는 블록들에 대하여는 단일 시간정보를 저장할 수 있다.
여기에서, 디텍터는, 주기적 갱신 장치의 내부 메모리에 저장 중인 시간정보를 기반으로 일정 시간 이상 오래된 블록을 갱신대상블록으로 선택할 수 있다.
여기에서, 디텍터는, 갱신대상블록이 연결된 제1 채널에 읽기 요청이나 쓰기 요청이 있으면 갱신대상블록이 연결되어 있는 제1 채널과 다른 제2 채널 상의 비어있는 블록을 선택하고, 제1 채널에 읽기 요청이나 쓰기 요청이 없으면 제1 채널 상의 비어있는 블록을 선택할 수 있다.
여기에서, 디텍터는, 저장장치에 대한 가비지 컬렉션 수행 시 특정 시간 이후에 저장된 데이터를 보유하고 있는 블록들이 삭제 연산이 수행되는 삭제대상블록들로 선정될 때, 상기의 블록번호를 토대로 삭제대상블록들에서 갱신대상블록을 식별할 수 있다. 칩 컨트롤러는 디텍터로부터의 신호에 따라 갱신대상블록의 데이터를 가용 블록에 복사하고 삭제대상블록에 대하여 삭제 연산을 수행할 수 있다. 디텍터로부터의 신호는 갱신대상블록에 대한 블록번호를 포함할 수 있다.
여기에서, 메모리 기반 저장장치는, 비휘발성 메모리를 포함하거나 또는 비휘발성 메모리를 구비하는 SSD(solid state drive) 및 eMMC(embedded multimedia card) 중 적어도 어느 하나 이상을 포함한다. 비휘발성 메모리는, ROM(read only memory), Mask ROM, PROM(programmable ROM), EPROM(erasable programmable ROM), EEPROM(electrically erasable programmable ROM), Flash ROM, PCM(phase-change memory), STT-MRAM(spin-transfer torque magnetic random access memory) 중 적어도 어느 하나 이상을 포함한다.
상기와 같은 본 발명에 따른 메모리 기반 저장장치의 주기적 갱신 장치 및 방법을 이용할 경우에는, 메모리 기반 저장장치에 저장된 데이터를 10년 이상의 장시간 동안 보존할 수 있다는 장점이 있다. 즉, 기존의 데이터 보존기간을 갖는 메모리 기반 저장장치와 달리 데이터의 자동 리프레시(refresh)의 수행을 통해 저장된 데이터의 신뢰성을 보장할 수 있는 장점이 있다.
또한, 비휘발성 메모리를 이용하여 SSD(solid state drive), eMMC(embedded multimedia card) 등의 메모리 기반 저장장치를 제조하는 업체 및 회사에서 저장장치에 기록된 데이터에 대한 신뢰성을 크게 높일 수 있는 장점이 있다.
도 1은 본 발명의 일실시예에 따른 메모리 기반 저장장치의 주기적 갱신 장치를 설명하기 위한 메모리 시스템의 구성도이다.
도 2는 도 1의 주기적 갱신 장치에 대한 블록도이다.
도 3은 본 발명의 다른 실시예에 따른 메모리 기반 저장장치의 주기적 갱신 방법에 대한 흐름도이다.
도 4는 도 3의 주기적 갱신 방법에 채용할 수 있는 갱신 대상 블록 선택 과정에 대한 상세 흐름도이다.
도 5는 본 발명의 또 다른 실시예에 따른 메모리 기반 저장장치의 주기적 갱신 방법에 대한 흐름도이다.
도 6은 도 5의 주기적 갱신 방법의 리프레시 결과에 대한 예시도이다.
도 7은 본 발명의 또 다른 실시예에 따른 메모리 기반 저장장치의 주기적 갱신 방법의 주요 과정에 대한 흐름도이다.
도 8은 본 발명의 또 다른 실시예에 따른 메모리 기반 저장장치의 주기적 갱신 방법의 리프레시 결과에 대한 예시도이다.
도 9는 본 발명의 또 다른 실시예에 따른 메모리 기반 저장장치의 주기적 갱신 장치를 설명하기 위한 메모리 관리 시스템에 대한 블록도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하 본 발명의 바람직한 실시예를 도면을 참조하여 상세히 설명한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다. 또한, 본 발명을 설명함에 있어 관련된 공지기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단된 경우 그 상세한 설명은 생략한다.
도 1은 본 발명의 일실시예에 따른 메모리 기반 저장장치의 주기적 갱신 장치를 설명하기 위한 메모리 시스템의 구성도이다.
본 실시예에서는 기존의 데이터 손실의 문제를 해결하기 위해 메모리 시스템의 칩 컨트롤러의 내부에 주기적으로 데이터를 다시 쓰는 주기적 갱신 장치를 제안한다. 주기적 갱신 장치의 구조는 도 1에 리프레셔(refresher, 14)로 나타낸 바와 같으나, 이에 한정되지는 않는다.
도 1을 참조하면, 메모리 시스템은 컨트롤러(10)와 메모리(17)를 포함한다. 컨트롤러(10)는 프로세서(11), 버퍼 관리자(12), 칩 컨트롤러(13) 및 리프레셔(14)를 구비한다. 컨트롤러(10)는 램(RAM: random access memory)이나 호스트 인터페이스(host interface, 16)를 구비할 수 있다. 컨트롤러(10)는 칩 컨트롤러(13)와의 혼동을 방지하기 위해 메모리 관리 유닛이나 메모리 컨트롤러로 지칭될 수 있다. 그리고, 메모리(17)는 복수의 메모리 칩들(memory chips, 18)을 포함한다. 복수의 메모리 칩들(18)은 그룹별로 복수의 채널들(CH1, CH2, CH3, CH4)을 통해 컨트롤러(10), 보다 구체적으로는, 칩 컨트롤러(13)에 연결될 수 있으나, 이에 한정되지 않는다. 메모리 칩들(18)은 단일 채널을 통해 컨트롤러(10)에 연결될 수 있다.
리프레셔(14)를 제외하고 메모리 시스템의 구성요소들(프로세서, 버퍼 관리자, 칩 컨트롤러, 램, 호스트 인터페이스, 메모리 칩)은 기존의 메모리 시스템과 실질적으로 동일한 장치나 부품을 이용하여 구현할 수 있으므로 이들에 대한 상세 설명은 생략한다.
리프레셔(14)는 본 실시예에서 제안하는 메모리 기반 저장장치의 주기적 갱신 장치의 약칭이다. 리프레셔(14)는 메모리 시스템의 메모리 칩(18)에 저장된 데이터 중 데이터 보존 기간이 만료되는 데이터에 대하여 리프레시(refresh) 연산을 수행함으로써 메모리 시스템에 저장된 데이터의 신뢰성을 보장하기 위한 장치이거나 수단일 수 있다. 리프레셔(14)는 칩 컨트롤러(13)의 적어도 일부 기능부나 구성부로 구현될 수 있으나, 이에 한정되지는 않는다. 리프레셔(14)는 컨트롤러(10) 내에서 칩 컨트롤러(13)와 결합하도록 구현될 수 있다.
리프레셔(14)의 리프레시 동작 또는 리프레셔(14)가 탑재되는 칩 컨트롤러(13)의 리프레시 동작은 SSD(static solid drive) 등의 응용 장치의 메모리 시스템 내부에서 수행되나, 이에 한정되지는 않는다. 예컨대, 이러한 메모리 시스템을 직접 관리하는 소프트웨어가 존재하고 상기 메모리 시스템에 연결되는 응용 장치의 해당 소프트웨어에서 수행될 수 있다. 즉, 리프레셔(14)는 다른 실시예에서 소정의 컴퓨팅 장비의 파일 관리 시스템의 소프트웨어 계층(software layer)에 탑재되어 메모리 시스템에서의 리프레시 동작을 직접 관리하는 수단이나 이러한 수단에 상응하는 기능을 수행하는 구성부를 지칭할 수 있다(도 9 참조).
리프레시 주기(또는 리프레시 동작 주기)는 소프트웨어적으로 설정(software programmable)될 수 있고, 최소 분 단위에서 최대 월 단위까지 가능하다. 리프레시 동작 주기는 별도의 하드웨어를 이용하여 측정하거나 기존 관리 소프트웨어에 의해 측정될 수 있다.
리프레시 동작은 메모리 칩의 특정에 따라 정의된다. 예를 들어 플래시 메모리인 경우, "쓰기 연산"으로 정의될 수 있다.
리프레시 동작 수행으로 인한 메모리 공간 측면에서의 오버헤드를 줄이기 위해, 리프레셔(14)는 메모리 칩에 저장되는 데이터마다 데이터 기록 시간을 저장하거나, 쓰기 연산된 데이터의 위치를 소정 기간 예컨대 하루(one day) 단위로 저장하거나, 혹은 쓰기 연산된 데이터의 위치만 저장할 수 있다.
또한, 리프레시 동작 수행으로 인한 성능 측면에서의 오버헤드를 줄이기 위하여, 리프레셔(14)는 유휴 시간(idle time)에 수행되거나, 유휴 채널을 사용하거나, 혹은 가비지 컬렉션(garbage collection)과 동시에 수행될 수 있다.
전술한 리프레셔(이하, 주기적 갱신 장치라 함)(14)는 다음과 같은 기능을 수행할 수 있다.
1. 컴퓨터나 컴퓨팅 장치의 전원이 인가되는 시점부터 칩 컨트롤러로부터 내려오는 커맨드들 가운데, 쓰기 명령에 한해서 명령이 발생한 GPT(GUID partition time) 시간과 해당 블록 번호를 함께 저장할 수 있다. 주기적 갱신 장치는 장치 내부적으로 GPT 시간을 가지고 올 수 있도록 설계될 수 있고, 혹은 구현에 따라서 칩 컨트롤러(13) 내부나 호스트 인터페이스(16)를 통해 연결되는 외부의 호스트(host)로부터 시간 정보를 가지고 올 수 있다.
2. 메모리 칩에 저장된 데이터의 보존 기간이 만료될 예정인 블록들을 찾아서 관리할 수 있다. 찾는 주기는 메모리 컨트롤러나 칩 컨트롤러 혹은 주기적 갱신 장치에 내부적으로 설정될 수 있으며, 최소 분 단위에서 최대 월 단위까지 설정 가능하다.
3. 내부 메모리(도 2의 142 참조)에 저장되어 있는 GPT 시간을 기준으로 데이터 보존 기간이 만료할 블록들을 선정할 수 있다. 선정 기법은 특정 시간을 기준으로 가장 오래전에 쓰기가 수행되었던 블록이 최우선 순위를 지닌다.
4. 데이터 보존 기간이 만료될 예정인 블록들(갱신대상블록들)을 찾고 새로운 블록(가용 블록 또는 비어있는 블록)을 할당받아 갱신대상블록에서 가용 블록으로의 데이터 복사를 수행할 수 있다.
도 2는 도 1의 주기적 갱신 장치에 채용할 수 있는 구성에 대한 블록도이다.
도 2를 참조하면, 본 실시예에 따른 주기적 갱신 장치(14)는 디텍터(detector, 141), 내부 메모리(memory, 142), RAM(143) 및 타이머(timer, 144)를 포함하여 구현될 수 있다. RAM(143)의 내부 메모리(142)의 일부분으로 내부 메모리(142)에 포함될 수 있다. 타이머(144)는 구현에 따라서 생략될 수 있다.
디텍터(141)는 메모리 기반 저장장치의 제어를 담당하는 칩 컨트롤러 또는 칩 컨트롤러에 연결되는 외부 호스트의 소프트웨어 계층으로부터 오는 명령어 가운데 상기의 저장장치에 대한 쓰기 명령을 감지한다. 또한, 디텍터(141)는 내부 메모리(142)로부터 획득한 블록번호를 토대로 갱신대상블록을 식별하거나 블록번호와 시간정보를 토대로 갱신대상블록을 식별한다.
블록번호는 쓰기 명령의 수행 대상이 되는 메모리 칩의 블록에 대한 번호를 지칭하고, 시간정보는 쓰기 명령을 감지한 시간, 쓰기 명령 이벤트가 발생한 시간, 또는 쓰기 명령에 따라 해당 블록에 쓰기 연산을 수행한 시간 등으로 설정될 수 있다. 그리고, 갱신대상블록은 저장장치에서 다른 블록에 비해 데이터 보존 기간이 먼저 만료되는 특정 블록을 지칭하나, 이에 한정되지 않으며, 리프레시 동작의 구현에 따라 상기의 특정 블록과 동일한 섹터에 위치하거나 동일한 메모리 칩에 위치하거나 동일한 채널에 연결되는 블록들을 더 포함하도록 구현될 수 있다.
본 실시예에서, 주기적 갱신 장치는 칩 컨트롤러에 탑재되어 직접 메모리 칩의 리프레시 동작을 제어하도록 구현될 수 있으나, 이에 한정되지 않는다. 예를 들면, 주기적 갱신 장치는 갱신대상블록을 선택한 후에 칩 컨트롤러에 리프레시 동작을 위한 신호를 전달하고, 칩 컨트롤러가 디텍터로부터의 신호에 응하여 갱신대상블록을 리프레시하거나 갱신대상블록에 저장된 데이터를 가용 블록으로 복사하도록 구현될 수 있다.
전술한 디텍터(141)는 주기적 갱신 장치의 구현에 따라서 다양한 동작을 수행할 수 있다.
디텍터(141)는 일실시예에서 주기적 갱신 장치의 내부 메모리에 정렬되어 보관 중인 시간정보와 저장장치의 메모리 칩에 대해 미리 설정된 데이터 보존기간을 비교하여 갱신대상블록을 식별할 수 있다. 이 경우, 내부 메모리(142)는 저장장치에 대한 쓰기 명령의 감지에 따라 동일한 시간대에 쓰기가 수행되는 블록들에 대하여는 단일 시간정보를 저장할 수 있다. 이러한 내부 메모리(142)의 동작에 의하면, 동일한 시간대에 쓰기를 수행한 블록들에 대하여 한 개의 시간 정보를 사용하기 때문에 적은 메모리 공간을 사용하여 리프레시 동작에 따른 메모리 공간의 오버헤드를 효과적으로 방지할 수 있다.
또한, 디텍터(141)는 다른 실시예에서 주기적 갱신 장치의 내부 메모리(142)에 저장 중인 시간정보를 기반으로 일정 시간 이상 동안 저장된 블록을 갱신대상블록으로 선택할 수 있다.
타이머(144)는 카운터로 지칭될 수 있고, 마이크로컴퓨터 시스템에서 타이밍 제어를 문제를 해결하는 기능을 담당한다. 타이머(144)는 복수의 카운터들을 구비할 수 있으며, 컨트롤러나 메모리 칩의 동작 주파수를 핸들링할 수 있다.
도 3은 본 발명의 다른 실시예에 따른 메모리 기반 저장장치의 주기적 갱신 방법(이하, 간략히 주기적 갱신 방법이라 함)에 대한 흐름도이다. 도 4는 도 3의 주기적 갱신 방법에 채용할 수 있는 갱신대상블록 선택 과정에 대한 상세 흐름도이다.
도 3을 참조하면, 본 실시예에 따른 주기적 갱신 방법은, 컨트롤러 또는 소프트웨어 계층으로부터 오는 명령어 가운데 메모리 기반 저장장치에 대한 쓰기 명령을 감지하는 단계(S31), 쓰기 명령에 대응하는 저장장치의 블록번호를 저장하는 단계(S32), 블록번호를 토대로 저장장치의 갱신대상블록을 식별하는 단계(S33), 및 갱신대상블록에 저장된 데이터를 비어있는 블록으로 복사하는 단계(S34)를 포함한다.
쓰기 명령을 감지하는 단계(S31)는 주기적 갱신 장치의 디텍터에 의해 수행될 수 있고, 블록번호를 저장하는 단계(S32)는 디텍터에 연결되는 내부 메모리에 의해 수행될 수 있으며, 갱신대상블록을 식별하는 단계(S33)는 디텍터에 의해 수행될 수 있고, 데이터를 복사하는 단계(S34)는 칩 컨트롤러에 탑재되는 디텍터에 의해 수행되거나 디텍터로부터의 신호에 따라 칩 컨트롤러에 의해 수행될 수 있다. 디텍터로부터의 신호는 갱신대상블록에 대한 정보가 포함될 수 있다.
전술한 갱신대상블록을 식별하는 단계(S33)를 좀더 상세히 설명하면, 도 4에 나타낸 바와 같이, 본 실시예에 따른 주기적 갱신 방법의 갱신대상블록의 식별 단계는, 먼저 메모리 시스템에서 메모리 칩에 대한 가비지 컬렉션(garbage collection)이 수행되는지를 판단하거나 감지한다(S331).
여기서, 가비지 컬렉션은 컴퓨터 시스템에서 더 이상 사용하지 않는 동적 할당된 메모리 블록 혹은 개체(object)를 찾아 자동으로 다시 사용 가능한 자원(가용 블록)으로 회수하는 것을 지칭한다.
그런 다음, 가비지 컬렉션에서 삭제 연산이 수행되는 블록들 중에서 내부 메모리에 저장된 블록번호를 토대로 갱신대상블록을 선택한다(S332).
본 실시예에 의하면, 특정 모드(예컨대, 주기적 갱신 모드) 하에서 메모리 블록의 쓰기 연산 시에 저장한 블록번호만을 토대로 가비지 컬렉션에서 삭제 연산 대상으로 선정되는 블록들 중 갱신대상블록을 추출할 수 있고, 그에 의해 보존해야 하는 데이터의 손실을 방지할 수 있다.
도 5는 본 발명의 또 다른 실시예에 따른 메모리 기반 저장장치의 주기적 갱신 방법에 대한 흐름도이다.
도 5를 참조하면, 본 실시예에 따른 주기적 갱신 방법은, 컨트롤러 또는 소프트웨어 계층으로부터 오는 명령어 가운데 메모리 기반 저장장치에 대한 쓰기 명령을 감지하는 단계(S31), 쓰기 명령에 대응하는 저장장치의 블록번호와 쓰기 명령에 대응하는 시간정보를 저장하는 단계(S32a), 블록번호와 시간정보를 토대로 저장장치의 갱신대상블록을 식별하는 단계(S33), 및 갱신대상블록에 저장된 데이터를 리프레시하는 단계(S34)를 포함한다.
컨트롤러의 디텍터는 쓰기 명령을 감지하는 단계(S31)에 있어서 내부 메모리에 정렬되어 보관 중인 시간정보와 메모리 칩에 대해 미리 설정된 데이터 보존기간을 비교하여 갱신대상블록을 식별 혹은 선택할 수 있다. 예를 들면, 디텍터는 현재 시간에서 특정 블록에 대하여 보관 중인 시간정보를 뺀 시간이 데이터 보존기간보다 작은 경우 해당 블록을 갱신대상블록으로 지정할 수 있다.
그리고, 디텍터나 칩 컨트롤러는 갱신대상블록에 저장된 데이터를 비어있는 블록으로 복사하는 쓰기 연산을 수행하거나 갱신대상블록에 다시 덮어쓰는 쓰기 연산을 수행할 수 있다. 이러한 리프레시 동작의 주기는 최소 분 단위에서 최대 월 단위에서 선택될 수 있다.
도 1을 참조하여 갱신대상블록의 선정 후의 리프레시 동작을 예를 들어 설명하면, 리프레셔(14)에 구비된 디텍터는 제1 채널(CH1)의 특정 메모리 칩의 제1 메모리 블록(B1)을 갱신대상블록으로 지정한 후, 다른 채널(CH3 또는 CH4)의 다른 메모리 칩의 메모리 블록(B2, B4)이나 동일 채널(CH1)의 다른 메모리 칩의 메모리 블록(B3) 중에서 선택되는 적어도 하나의 블록에 갱신대상블록의 데이터를 복사하여 저장할 수 있다.
도 6은 도 5의 주기적 갱신 방법의 리프레시 결과에 대한 예시도이다.
도 6에 나타낸 바와 같이, 본 실시예에 따른 주기적 갱신 방법의 리프레시 결과에 의하면, 내부 메모리(142)에 저장되는 쓰기 명령에 대응하는 시간정보(write time)와 블록번호(block #)는 리프레시 동작 전(a)과 후(b)에 업데이트된 것을 확인할 수 있다.
좀더 구체적으로 설명하면, 주기적 갱신 장치는 디텍터에 의해 내부 메모리(142)에 정렬된 정보를 기반으로 가장 과거에 기록된 데이터를 선정할 수 있다. 이 경우, 1월 1일에 쓰기 연산된 블록번호 1번이 갱신대상블록이 되며, 3월 30일의 리프레시 동작에 의해 새롭게 쓰기 연산이 수행된 블록은 2번이고, 새롭게 쓰기 연산이 수행된 블록에 대하여 새로운 블록번호 2번이 지정되어 저장된 것을 확인할 수 있다.
이와 같이, 본 실시예에 의하면, 비휘발성 메모리에서 메모리 자체의 한계(플로팅 게이트의 누설 등)로 인하여 데이터가 손실되는 것을 효과적으로 방지할 수 있다.
도 7은 본 발명의 또 다른 실시예에 따른 메모리 기반 저장장치의 주기적 갱신 방법의 주요 과정에 대한 흐름도이다.
도 7을 참조하면, 본 실시예에 따른 주기적 갱신 방법은, 컨트롤러 또는 소프트웨어 계층으로부터 오는 명령어 가운데 메모리 기반 저장장치에 대한 쓰기 명령을 감지하는 단계, 쓰기 명령에 대응하는 저장장치의 블록번호와 쓰기 명령에 대응하는 시간정보를 저장하는 단계, 블록번호와 시간정보를 토대로 저장장치의 갱신대상블록을 식별하는 단계(S33), 갱신대상블록이 연결되어 있는 채널과의 동일 채널 혹은 다른 채널에 읽기 또는 쓰기 요청이 있는지는 판단하는 단계, 및 판단 단계를 통해 선택되는 갱신대상블록을 리프레시하는 단계(S34a)를 포함한다.
리프레시하는 단계(S34a)는 갱신대상블록에 저장된 데이터를 다른 블록으로 복사하는 것 외에 갱신대상블록에 다시 쓰기를 수행하는 것을 포함할 수 있다.
읽기/쓰기 요청 있음을 판단하는 단계는, 갱신대상블록이 연결된 채널인 제1 채널에 읽기/쓰기 요청이 있는지는 판단하고(S333), 이 단계(S333)에서의 판단 결과 해당 요청이 없으면 동일 채널(제1 채널)의 가용 블록(제1 블록)을 선택하는 단계(S334)를 포함한다.
또한, 읽기/쓰기 요청 있음을 판단하는 단계는, 상기의 단계(S333)에서의 판단 결과 해당 요청이 있으면 제1 채널과 상이한 다른 채널(제2 채널)에 읽기/쓰기 요청이 있는지를 판단하고(S335), 이 단계(S335)에서의 판단 결과 해당 요청이 없으면 다른 채널(제2 채널)의 특정 메모리 칩의 메모리 블록(제2 블록)을 선택하는 단계(S336)를 포함한다.
또한, 읽기/쓰기 요청 있음을 판단하는 단계는, 상기의 단계(S335)에서의 파단 결과 해당 요청이 있으면 상기의 단계(S333)로 되돌아가 전술한 이후의 과정을 반복 수행할 수 있다.
본 실시예에 의하면, 외부의 읽기/쓰기 요청에 따라 리프레시 동작을 제어하여 메모리 시스템의 처리 속도와 효율을 향상시킬 수 있다. 즉, 리프레시 동작 중에 저장장치의 특정 채널의 메모리 칩에 대하여 읽기 또는 쓰기 요청이 들어오는 경우, 해당 채널에서 리프레시 동작을 수행하면, 읽기 또는 쓰기 요청이 지연되는 문제가 발생할 수 있다. 이를 방지하기 위하여 본 실시예에서는 읽기/쓰기 요청이 없는 채널에서 가용 블록을 선택한 후 갱신대상블록의 데이터를 복사하도록 구현될 수 있다.
도 8은 본 발명의 또 다른 실시예에 따른 메모리 기반 저장장치의 주기적 갱신 방법의 리프레시 결과에 대한 예시도이다.
본 실시예에 따른 주기적 갱신 방법은 도 5를 참조하여 앞서 설명한 주기적 갱신 방법과 유사할 수 있다. 다만, 본 실시예의 주기적 갱신 방법은, 갱신대상블록의 선택에 있어서, 주기적 갱신 장치의 내부 메모리에 저장 중인 시간정보를 기반으로 일정 시간 이상 오래된 블록을 갱신대상블록으로 선택하도록 구현될 수 있다.
이러한 주기적 갱신 방법에 의하면, 메모리 블록별로 리프레시 동작을 관리할 수 있다. 이것은 가비지 컬렉션 타임에 리프레시를 효과적으로 수행할 수 있음을 나타낸다. 즉, 가비지 컬렉션 수행 시, 가용 블록을 만들어 내기 위해 유효하지 않은 데이터들을 가지고 있는 블록(삭제대상블록)을 선택하고 선택한 삭제대상블록에서 유효한 데이터들만 새로운 블록(가용블록)에 저장한 후, 삭제대상블록을 삭제 연산을 통해 가용 블록으로 바꿀 수 있다. 이때, 주기적 갱신 장치는 선택되는 삭제대상블록들 가운데 내부 메모리에 저장된 시간정보를 활용하여 가장 오래된 블록을 가비지 컬렉션 수행 대상으로 선정할 수 있고, 그에 의해 가비지 컬렉션의 효율과 신뢰성도 높일 수 있다.
전술한 주기적 갱신 방법의 리프레시 과정을 도 8에 도시한 바와 같이 예시하면 다음과 같다.
1. 내부 메모리에 0, 1, …, 9까지, 총 10개의 블록이 있다고 가정하고, 데이터 보존 기간이 3개월이라고 가정한다.
2. 내부 메모리는 1월 1일, 3월 1일, 3월 2일과 같이 서로 다른 시간(또는 일자)의 쓰기 연산에 의해 데이터가 기록된 블록번호(Block #) 1, 3, 6의 블록(메모리 블록)에 대하여 쓰기 연산이 수행된 시간 정보를 저장한다. 현재 시점은 3월 30일이라고 가정한다.
그리고, 저장한 정보는 만료될 예정인 블록들을 찾을 때 사용된다. 만료 예정 블록을 찾는 기능은 주기적으로 수행되며, 본 실시예에서는 1일마다 수행된다고 가정한다.
3. 디텍터는 블록번호와 시간정보를 토대로 만료될 예정인 1번 블록을 찾아 낼 수 있으며, 해당 블록의 데이터를 비어있는 블록(여기서는 2번 블록이라 가정함)으로 복사를 수행한 후 2번 블록에 대한 시간정보(write time)를 3월 30일로 갱신한다.
4. 그 후 1번 블록에 대한 데이터의 가치가 사라졌으므로 1번 블록에 기록되어 있는 시간정보를 삭제한다.
본 실시예에 의하면, 메모리 칩에 저장된 데이터의 보존 기간이 만료될 예정인 블록들을 찾아서 관리할 수 있고, 그에 의해 수 십년 이상의 장기간 데이터 보존이 필요한 경우에도 데이터의 손실 없이 효과적으로 데이터를 갱신하여 보존할 수 있는 효과가 있다.
도 9는 본 발명의 또 다른 실시예에 따른 메모리 기반 저장장치의 주기적 갱신 장치를 설명하기 위한 메모리 관리 시스템에 대한 블록도이다.
도 9를 참조하면, 본 실시예에 따른 주기적 갱신 장치는, 메모리 소자의 일종인 플래시 소자(flash device, 20)와, 메모리 관리 유닛의 일종이며 플래시 소자(20)를 제어하고 구동하는 플래시 드라이버(flash driver, 30)와, 플래시 드라이버(30)에 연결되어 플래시 소자(20)의 리프레시 동작을 위한 신호나 명령어를 플래시 드라이버(30)에 전달하는 소프트웨어 계층(software layer, 40)을 포함한다. 소프트웨어 계층(40)은 플래시 드라이버(30)에 결합하는 파일 시스템이나 응용 장치(컴퓨팅 장치 등)에서 구동하는 응용 프로그램(예컨대, 메모리 관리 프로그램) 등으로 구현될 수 있다.
소프트웨어 계층(40)은 플래시 드라이버(30)에 쓰기 연산을 위한 신호(write sector 등)를 전송하고 플래시 드라이버(30)로부터 읽기 연산을 위한 신호(read sector 등)를 수신할 수 있다. 그리고, 플래시 드라이버(30)는 플래시 소자(20)로부터 읽기 연산을 위한 신호(read page 등)를 수신하고 플래시 소자(20)에 쓰기 연산을 위한 신호(write page 등)를 전송하거나 삭제 연산을 위한 신호(erase block 등)를 전송할 수 있다.
이와 같이, 본 실시예에 따른 주기적 갱신 장치는 메모리 기반 저장장치를 외부에서 메모리 기반 저장장치가 리프레시 동작을 수행하도록 구현된 응용 프로그램 등의 소프트웨어 계층(40)을 탑재한 응용 장치의 적어도 일부를 포함할 수 있다. 즉, 모바일 기기와 같이 메모리 칩이 전용 파일 시스템과 같은 소프트웨어에 의해 직접 관리되는 경우, 주기적 갱신 장치는 파일 시스템 내부에 소프트웨어 형태나 모듈 형태로 구현될 수 있다. 응용 장치는 프로세서를 탑재한 모바일 단말, 디지털 카메라, 멀티미디어 플레이어 등을 포함할 수 있다.
전술한 실시예에서 메모리 기반 저장장치는 비휘발성 메모리를 포함하거나 또는 비휘발성 메모리를 구비하는 SSD(solid state drive) 및 eMMC(embedded multimedia card) 중 적어도 어느 하나 이상을 포함할 수 있다. 비휘발성 메모리는, ROM(read only memory), Mask ROM, PROM(programmable ROM), EPROM(erasable programmable ROM), EEPROM(electrically erasable programmable ROM), Flash ROM, PCM(phase-change memory), STT-MRAM(spin-transfer torque magnetic random access memory) 중 적어도 어느 하나 이상을 포함한다.
한편, 전술한 실시예에 있어서, 메모리 기반 저장장치의 주기적 갱신 장치는 모바일 장치나 컴퓨팅 장치의 프로세서나 컨트롤러에 탑재되는 기능부일 수 있으나, 이에 한정되지 않는다. 전술한 주기적 갱신 장치는 메모리 기반 저장장치의 주기적 갱신 방법을 수행하는 소프트웨어 형태로 컴퓨터 판독 가능 매체(기록매체)에 저장되거나 혹은 캐리어 형태로 원격지에 전송되어 다양한 컴퓨팅 장치에서 동작하도록 구현될 수 있다. 그 경우, 컴퓨터 판독 가능 매체는 네트워크를 통해 연결되는 복수의 컴퓨터 장치나 클라우드 시스템에 결합할 수 있고, 복수의 컴퓨팅 장치나 클라우드 시스템 중 적어도 하나 이상은 메모리 시스템에 본 실시예의 주기적 갱신 방법을 수행하기 위한 프로그램이나 소스 코드 등을 저장할 수 있다.
컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하는 형태로 구현될 수 있다. 컴퓨터 판독 가능 매체에 기록되는 프로그램은 본 발명을 위해 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수 있다.
또한, 컴퓨터 판독 가능 매체는 롬(rom), 램(ram), 플래시 메모리(flash memory) 등과 같이 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치(메모리 시스템)를 포함할 수 있다. 프로그램 명령은 컴파일러(compiler)에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터(interpreter) 등을 사용해서 컴퓨터에 의해 실행될 수 있는 고급 언어 코드를 포함할 수 있다. 하드웨어 장치는 본 발명의 주기적 갱신 방법을 수행하기 위해 적어도 하나의 소프트웨어 모듈로 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시 예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시 예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
10: 컨트롤러 (또는 메모리 컨트롤러)
13: 칩 컨트롤러
14: 리프레셔 또는 주기적 갱신 장치
18: 메모리 칩
141: 디텍터
142: 내부 메모리

Claims (20)

  1. 메모리 기반 저장장치의 컨트롤러에 탑재되거나 상기 컨트롤러에 연결되는 외부의 파일 관리 시스템의 소프트웨어 계층에 탑재되는 주기적 갱신 장치에서 수행되는 메모리 기반 저장장치의 주기적 갱신 방법으로서,
    상기 컨트롤러 또는 상기 소프트웨어 계층으로부터 오는 명령어 가운데 상기 저장장치에 대한 쓰기 명령을 감지하는 단계;
    상기 쓰기 명령에 대응하는 상기 저장장치의 블록번호를 저장하는 단계;
    상기 블록번호를 토대로 상기 저장장치의 갱신대상블록을 식별하는 단계;
    상기 갱신대상블록에 저장된 데이터를 비어있는 블록으로 복사하는 단계를 포함하며,
    상기 복사하는 단계는, 상기 갱신대상블록이 연결된 채널에 읽기 요청이나 쓰기 요청이 있으면 상기 갱신대상블록이 연결되어 있는 제1 채널과 다른 제2 채널 상의 비어있는 블록을 선택하여 데이터를 복사하는,
    메모리 기반 저장장치의 주기적 갱신 방법.
  2. 청구항 1에 있어서,
    상기 갱신대상블록을 식별하는 단계는, 상기 저장장치에 대한 가비지 컬렉션 수행 시 특정 시간 이후에 저장된 데이터를 보유하고 있는 블록들이 삭제 연산이 수행되는 삭제대상블록들로 선정될 때, 상기 블록번호를 토대로 상기 삭제대상블록들에서 상기 갱신대상블록을 식별하는 것을 포함하는,
    메모리 기반 저장장치의 주기적 갱신 방법.
  3. 메모리 기반 저장장치의 컨트롤러에 탑재되거나 상기 컨트롤러에 연결되는 외부의 파일 관리 시스템의 소프트웨어 계층에 탑재되는 주기적 갱신 장치에서 수행되는 메모리 기반 저장장치의 주기적 갱신 방법으로서,
    상기 컨트롤러 또는 상기 소프트웨어 계층으로부터 오는 명령어 가운데 상기 저장장치에 대한 쓰기 명령을 감지하는 단계;
    상기 쓰기 명령에 대응하는 상기 저장장치의 블록번호와 상기 쓰기 명령에 대응하는 시간정보를 저장하는 단계;
    상기 블록번호와 상기 시간정보를 토대로 상기 저장장치의 데이터 중 보존 기간이 만료되는 데이터가 저장된 갱신대상블록을 식별하는 단계; 및
    상기 갱신대상블록에 저장된 데이터를 리프레시하는 단계를 포함하며,
    상기 리프레시하는 단계는, 상기 갱신대상블록이 연결된 채널에 읽기 요청이나 쓰기 요청이 있으면 상기 갱신대상블록이 연결되어 있는 제1 채널과 다른 제2 채널 상의 비어있는 블록을 선택하여 데이터를 복사하는,
    메모리 기반 저장장치의 주기적 갱신 방법.
  4. 청구항 3에 있어서,
    상기 갱신대상블록을 식별하는 단계는, 상기 주기적 갱신 장치의 내부 메모리에 정렬되어 보관 중인 상기 시간정보와 상기 저장장치의 메모리 칩에 대해 미리 설정된 데이터 보존기간을 비교하여 상기 갱신대상블록을 식별하는 것을 포함하는, 메모리 기반 저장장치의 주기적 갱신 방법.
  5. 청구항 4에 있어서,
    상기 시간정보를 저장하는 단계는, 상기 저장장치에 대한 상기 쓰기 명령에 따라 동일한 시간대에 쓰기가 수행되는 블록들에 대하여는 단일 시간정보를 저장하는, 메모리 기반 저장장치의 주기적 갱신 방법.
  6. 청구항 5에 있어서,
    상기 리프레시하는 단계는, 상기 갱신대상블록에 저장된 데이터를 비어있는 블록에 복사하여 쓰기 연산하는 것이나 상기 갱신대상블록에 다시 쓰기 연산하는 것을 포함하고, 최소 분 단위에서 최대 월 단위에서 선택되는 주기를 갖는,
    메모리 기반 저장장치의 주기적 갱신 방법.
  7. 청구항 6에 있어서,
    상기 리프레시하는 단계는, 상기 제1 채널에 읽기 요청이나 쓰기 요청이 없으면 상기 제1 채널 상의 비어있는 블록을 선택하여 상기 갱신대상블록의 데이터를 복사하는 것을 포함하는, 메모리 기반 저장장치의 주기적 갱신 방법.
  8. 청구항 3에 있어서,
    상기 갱신대상블록을 식별하는 단계는, 상기 주기적 갱신 장치의 내부 메모리에 저장 중인 상기 시간정보를 기반으로 일정 시간 이상 오래된 블록을 상기 갱신대상블록으로 선택하는 것을 포함하는,
    메모리 기반 저장장치의 주기적 갱신 방법.
  9. 청구항 8에 있어서,
    상기 리프레시하는 단계는, 상기 저장장치에 대한 가비지 컬렉션 타임에 삭제될 상기 갱신대상블록의 데이터를 가용 블록으로 복사하는 것을 포함하는,
    메모리 기반 저장장치의 주기적 갱신 방법.
  10. 청구항 8에 있어서,
    상기 리프레시하는 단계는, 상기 제1 채널에 읽기 요청이나 쓰기 요청이 없으면 상기 제1 채널 상의 비어있는 블록을 선택하여 상기 갱신대상블록의 데이터를 복사하는 것을 포함하는, 메모리 기반 저장장치의 주기적 갱신 방법.
  11. 청구항 8에 있어서,
    상기 시간정보는, 상기 주기적 갱신 장치의 내부, 상기 컨트롤러의 내부 또는 상기 파일 관리 시스템으로부터 획득되는, 메모리 기반 저장장치의 주기적 갱신 방법.
  12. 청구항 1 또는 3에 있어서,
    상기 메모리 기반 저장장치는, 비휘발성 메모리를 포함하거나 또는 상기 비휘발성 메모리를 구비하는 SSD(solid state drive) 및 eMMC(embedded multimedia card) 중 적어도 어느 하나 이상을 포함하고,
    상기 비휘발성 메모리는, ROM(read only memory), Mask ROM, PROM(programmable ROM), EPROM(erasable programmable ROM), EEPROM(electrically erasable programmable ROM), Flash ROM, PCM(phase-change memory), STT-MRAM(spin-transfer torque magnetic random access memory) 중 적어도 어느 하나 이상을 포함하는, 메모리 기반 저장장치의 주기적 갱신 방법.
  13. 청구항 1 내지 11항 중 어느 한 항의 메모리 기반 저장장치의 주기적 갱신 방법을 수행하는 프로그램을 기록한 컴퓨터 판독 가능한 기록매체.
  14. 복수의 메모리 칩에 연결되고 칩 컨트롤러를 구비한 메모리 드라이버 장치에 탑재되어 메모리 기반 저장장치인 상기 복수의 메모리 칩을 주기적으로 갱신하는 장치로서,
    메모리 기반 저장장치의 칩 컨트롤러 또는 상기 칩 컨트롤러에 연결되는 외부 호스트의 소프트웨어 계층으로부터 오는 명령어 가운데 상기 저장장치에 대한 쓰기 명령을 감지하는 디텍터; 및
    상기 디텍터에 연결되는 내부 메모리를 포함하고,
    상기 내부 메모리는 상기 쓰기 명령에 대응하는 상기 저장장치의 블록번호를 저장하거나 상기 블록번호와 상기 쓰기 명령에 대응하는 시간정보를 저장하고,
    상기 디텍터는 상기 내부 메모리로부터 획득한 상기 블록번호를 토대로 또는 상기 블록번호와 상기 시간정보를 토대로 상기 저장장치의 데이터 중 보존 기간이 만료되는 데이터가 저장된 상기 저장장치의 갱신대상블록을 식별하고,
    상기 칩 컨트롤러는 상기 디텍터로부터의 신호에 따라 상기 갱신대상블록에 저장된 데이터를 업데이트하며,
    상기 디텍터는 상기 갱신대상블록이 연결된 채널에 읽기 요청이나 쓰기 요청이 있으면 상기 갱신대상블록이 연결되어 있는 제1 채널과 다른 제2 채널 상의 비어있는 블록을 선택하는, 메모리 기반 저장장치의 주기적 갱신 장치.
  15. 청구항 14에 있어서,
    상기 디텍터는, 상기 주기적 갱신 장치의 내부 메모리에 정렬되어 보관 중인 상기 시간정보와 상기 저장장치의 메모리 칩에 대해 미리 설정된 데이터 보존기간을 비교하여 상기 갱신대상블록을 식별하는, 메모리 기반 저장장치의 주기적 갱신 장치.
  16. 청구항 15에 있어서,
    상기 내부 메모리는 상기 저장장치에 대한 상기 쓰기 명령에 따라 동일한 시간대에 쓰기가 수행되는 블록들에 대하여는 단일 시간정보를 저장하는, 메모리 기반 저장장치의 주기적 갱신 장치.
  17. 청구항 14에 있어서,
    상기 디텍터는, 상기 주기적 갱신 장치의 내부 메모리에 저장 중인 상기 시간정보를 기반으로 일정 시간 이상 오래된 블록을 상기 갱신대상블록으로 선택하는 것을 포함하는, 메모리 기반 저장장치의 주기적 갱신 장치.
  18. 청구항 14 내지 17 중 어느 한 항에 있어서,
    상기 디텍터는, 상기 제1 채널에 읽기 요청이나 쓰기 요청이 없으면 상기 제1 채널 상의 비어있는 블록을 선택하는, 메모리 기반 저장장치의 주기적 갱신 장치.
  19. 청구항 14에 있어서,
    상기 디텍터는, 상기 저장장치에 대한 가비지 컬렉션 수행 시 특정 시간 이후에 저장된 데이터를 보유하고 있는 블록들이 삭제 연산이 수행되는 삭제대상블록들로 선정될 때, 상기 블록번호를 토대로 상기 삭제대상블록들에서 상기 갱신대상블록을 식별하고,
    상기 칩 컨트롤러는 상기 갱신대상블록의 데이터를 가용 블록에 복사하고 상기 삭제대상블록에 대하여 삭제 연산을 수행하는, 메모리 기반 저장장치의 주기적 갱신 장치.
  20. 청구항 14에 있어서,
    상기 메모리 기반 저장장치는, 비휘발성 메모리를 포함하거나 또는 상기 비휘발성 메모리를 구비하는 SSD(solid state drive) 및 eMMC(embedded multimedia card) 중 적어도 어느 하나 이상을 포함하고,
    상기 비휘발성 메모리는, ROM(read only memory), Mask ROM, PROM(programmable ROM), EPROM(erasable programmable ROM), EEPROM(electrically erasable programmable ROM), Flash ROM, PCM(phase-change memory), STT-MRAM(spin-transfer torque magnetic random access memory) 중 적어도 어느 하나 이상을 포함하는, 메모리 기반 저장장치의 주기적 갱신 장치.
KR1020150034453A 2014-03-14 2015-03-12 메모리 기반 저장장치의 주기적 갱신 장치 및 방법 KR101609980B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20140030575 2014-03-14
KR1020140030575 2014-03-14

Publications (2)

Publication Number Publication Date
KR20150107661A KR20150107661A (ko) 2015-09-23
KR101609980B1 true KR101609980B1 (ko) 2016-04-06

Family

ID=54246047

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150034453A KR101609980B1 (ko) 2014-03-14 2015-03-12 메모리 기반 저장장치의 주기적 갱신 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101609980B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102515328B1 (ko) * 2020-08-14 2023-03-28 주식회사 엘지유플러스 앱 자동 설치를 위한 단말의 동작 방법 및 그 단말

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120066438A1 (en) * 2010-09-15 2012-03-15 Yoon Han Bin Non-volatile memory device, operation method thereof, and device having the same
US20120278533A1 (en) * 2011-04-28 2012-11-01 Hitachi, Ltd Semiconductor storage apparatus and method for controlling semiconductor storage apparatus

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120066438A1 (en) * 2010-09-15 2012-03-15 Yoon Han Bin Non-volatile memory device, operation method thereof, and device having the same
US20120278533A1 (en) * 2011-04-28 2012-11-01 Hitachi, Ltd Semiconductor storage apparatus and method for controlling semiconductor storage apparatus

Also Published As

Publication number Publication date
KR20150107661A (ko) 2015-09-23

Similar Documents

Publication Publication Date Title
CN107346290B (zh) 使用并行化日志列表重放分区逻辑到物理数据地址转换表
US9652386B2 (en) Management of memory array with magnetic random access memory (MRAM)
US9183136B2 (en) Storage control apparatus and storage control method
US8949506B2 (en) Initiating wear leveling for a non-volatile memory
US9367451B2 (en) Storage device management device and method for managing storage device
US10599345B2 (en) Memory device that writes data into a block based on time passage since erasure of data from the block
US20160342509A1 (en) Hierarchical FTL Mapping Optimized for Workload
US9202577B2 (en) Solid state drive management in power loss recovery
US10824362B2 (en) File migration to persistent memory
US8566513B2 (en) Semiconductor memory device that stores a rewrite frequency of a nonvolatile memory included in the semiconductor memory device
TW201619971A (zh) 耦合至主機dram之綠能與非固態硬碟(nand ssd)驅動器、gnsd應用程式及其操作方法和電腦系統主機、增加非揮發快閃記憶儲存器耐久性之方法
KR20130030241A (ko) 불휘발성 메모리 시스템들을 위한 위브 시퀀스 카운터
US20120210076A1 (en) User device performing data retention operation, storage device and data retention method
KR101652936B1 (ko) 전력 손실 복원에 있어서의 솔리드 스테이트 드라이브 관리
KR20210079549A (ko) 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법
CN105404468B (zh) 绿能与非固态硬盘应用及其驱动器
KR101609980B1 (ko) 메모리 기반 저장장치의 주기적 갱신 장치 및 방법
US20180181323A1 (en) Storing a plurality of contexts in a single band in a non-volatile memory device
KR101676175B1 (ko) 전원 손실 이후 데이터 손실을 방지하기 위한 메모리 저장 장치 및 방법
US10031699B1 (en) Read voltage determination in a memory device
US8850160B2 (en) Adaptive write behavior for a system having non-volatile memory
US10656846B2 (en) Operating method of memory system
KR101103201B1 (ko) 메모리 시스템
KR20090047880A (ko) 비휘발성 메모리의 관리 방법 및 관리 시스템
CN108984117A (zh) 一种数据读写方法、介质及设备

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
FPAY Annual fee payment

Payment date: 20190107

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20200102

Year of fee payment: 5