KR101947286B1 - 메모리 컨트롤 장치 및 방법 - Google Patents

메모리 컨트롤 장치 및 방법 Download PDF

Info

Publication number
KR101947286B1
KR101947286B1 KR1020170161602A KR20170161602A KR101947286B1 KR 101947286 B1 KR101947286 B1 KR 101947286B1 KR 1020170161602 A KR1020170161602 A KR 1020170161602A KR 20170161602 A KR20170161602 A KR 20170161602A KR 101947286 B1 KR101947286 B1 KR 101947286B1
Authority
KR
South Korea
Prior art keywords
data
migration
grouping
groups
memory
Prior art date
Application number
KR1020170161602A
Other languages
English (en)
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 울산과학기술원
Priority to KR1020170161602A priority Critical patent/KR101947286B1/ko
Application granted granted Critical
Publication of KR101947286B1 publication Critical patent/KR101947286B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks

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)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

메모리를 컨트롤하는 장치 및 방법에 연관되며, 보다 특정하게는 플래시 메모리의 데이터를 컨트롤하는 장치 및 방법에 연관된다. 일실시예에 따르면, 메모리 컨트롤 장치는 메모리에 기록되는 데이터를 업데이트 확률 별로 복수 개의 그룹으로 그룹핑하는 그룹핑부 및 복수 개의 그룹을 각각 서로 다른 블록에 저장하여 관리하는 관리부를 포함할 수 있다.

Description

메모리 컨트롤 장치 및 방법{APPARATUS AND METHOD FOR CONTROLLING MEMORY}
메모리를 컨트롤하는 장치 및 방법에 연관되며, 보다 특정하게는 플래시 메모리의 데이터를 컨트롤하는 장치 및 방법에 연관된다.
플래시 메모리는 덮어쓰기가 불가능하다는 특징이 있으며, 기본적으로 삭제 후 다시 쓰기 형태로 덮어쓰기의 기능을 유사하게 구현한다. 데이터의 읽기 및 쓰기는 페이지(page) 단위로 이루어지며, 데이터의 삭제는 블록(block) 단위로 이루어진다.
플래시 메모리의 삭제가 블록 단위로 이루어지기 때문에, 삭제되는 블록에 유효 페이지가 포함되어있을 수 있으며, 삭제 속도가 느리고 삭제 후 다시 쓰기 형태로 덮어쓰기의 기능을 구현하는 경우 대상 블록 내부의 유효 페이지를 다른 블록으로 옮긴 후 대상 블록 전체의 데이터를 삭제하고, 옮겼던 유효 페이지를 다시 대상 블록으로 복사해야 하기 때문에 큰 오버헤드가 발생할 수 있다.
일측에 따르면, 메모리 컨트롤 장치는 메모리에 기록되는 데이터를 업데이트 확률 별로 복수 개의 그룹으로 그룹핑하는 그룹핑부 및 상기 복수 개의 그룹을 각각 서로 다른 블록에 저장하여 관리하는 관리부를 포함할 수 있다.
일실시예에 따르면, 상기 그룹핑부는 상기 데이터의 이주 횟수를 기 정해지는 복수의 범위 별로 구분하여, 상기 데이터를 상기 업데이트 확률 별로 그룹핑할 수 있다.
다른 일실시예에 따르면, 상기 이주 횟수를 카운트 하는 영역을 상기 데이터가 기록되는 페이지의 적어도 일부의 잉여 공간에 관리할 수 있다.
또 다른 일실시예에 따르면, 메모리 컨트롤 장치는 메모리에 기록되는 상기 데이터의 상기 업데이트 확률을 복수의 범위로 구분하여, 상기 업데이트 확률이 상기 복수의 범위의 적어도 하나 이상의 경계에 해당하는 상기 데이터의 상기 이주 횟수를 도출하고, 도출되는 적어도 하나 이상의 상기 이주 횟수를 상기 데이터의 상기 업데이트 확률 별 구분 기준으로 미리 결정하는 결정부를 더 포함할 수 있다.
또 다른 일실시예에 따르면, 상기 그룹핑부는 기 결정되는 상기 구분 기준이 하나인 경우, 상기 구분 기준보다 상기 이주 횟수가 적은 상기 데이터를 제1 그룹으로 그룹핑하고, 상기 이주 횟수가 상기 구분 기준보다 높은 상기 데이터를 제2 그룹으로 그룹핑할 수 있다.
또 다른 일실시예에 따르면, 상기 그룹핑부는 기 결정되는 상기 구분 기준이 복수개인 경우, 상기 데이터의 상기 이주 횟수를 상기 구분 기준을 경계로 나누어 상기 데이터를 복수개의 그룹으로 그룹핑할 수 있다.
다른 일측에 따르면, 메모리 컨트롤 방법은 메모리에 기록되는 데이터를 업데이트 확률 별로 복수 개의 그룹으로 그룹핑하는 단계 및 상기 복수 개의 그룹을 각각 서로 다른 블록에 저장하여 관리하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 그룹핑하는 단계는, 상기 데이터의 이주 횟수를 기 정해지는 복수의 범위 별로 구분하여, 상기 데이터를 상기 업데이트 확률 별로 그룹핑할 수 있다.
다른 일실시예에 따르면, 상기 이주 횟수를 카운트 하는 영역을 상기 데이터가 기록되는 페이지의 적어도 일부의 잉여 공간에 관리할 수 있다.
또 다른 일실시예에 따르면, 메모리 컨트롤 방법은 메모리에 기록되는 상기 데이터의 상기 업데이트 확률을 복수의 범위로 구분하여, 상기 업데이트 확률이 상기 복수의 범위의 적어도 하나 이상의 경계에 해당하는 상기 데이터의 상기 이주 횟수를 도출하고, 도출되는 적어도 하나 이상의 상기 이주 횟수를 상기 데이터의 상기 업데이트 확률 별 구분 기준으로 미리 결정하는 단계를 더 포함할 수 있다.
또 다른 일실시예에 따르면, 상기 그룹핑하는 단계는, 기 결정되는 상기 구분 기준이 하나인 경우, 상기 구분 기준보다 상기 이주 횟수가 적은 상기 데이터를 제1 그룹으로 그룹핑하고, 상기 이주 횟수가 상기 구분 기준보다 높은 상기 데이터를 제2 그룹으로 그룹핑할 수 있다.
또 다른 일실시예에 따르면, 상기 그룹핑하는 단계는, 기 결정되는 상기 구분 기준이 복수개인 경우, 상기 데이터의 상기 이주 횟수를 상기 구분 기준을 경계로 나누어 상기 데이터를 복수개의 그룹으로 그룹핑할 수 있다.
도 1은 일실시예에 따른 가비지 콜렉션 과정을 나타낸다.
도 2는 일실시예에 따라 페이지 내의 잉여공간에서 이주 횟수를 카운팅하는 구성을 나타낸다.
도 3은 일실시예에 따라 이주 횟수를 기준으로 같은 기준에 포함되는 적어도 하나 이상의 페이지를 같은 블록으로 그룹핑하는 과정을 나타낸다.
도 4는 일실시예에 따라 이주 횟수를 기준으로 그룹핑되는 페이지들을 포함하는 복수의 블록을 나타낸다.
도 5는 일실시예에 따라 기존의 가비지 콜렉션 방식과 이주 횟수를 기준으로 그룹핑하는 가비지 콜렉션 방식의 시뮬레이션 결과로 각 방식의 쓰기 횟수를 비교하는 그래프를 나타낸다.
이하에서, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 권리범위는 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
아래 설명에서 사용되는 용어는, 연관되는 기술 분야에서 일반적이고 보편적인 것으로 선택되었으나, 기술의 발달 및/또는 변화, 관례, 기술자의 선호 등에 따라 다른 용어가 있을 수 있다. 따라서, 아래 설명에서 사용되는 용어는 기술적 사상을 한정하는 것으로 이해되어서는 안 되며, 실시예들을 설명하기 위한 예시적 용어로 이해되어야 한다.
또한 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 설명 부분에서 상세한 그 의미를 기재할 것이다. 따라서 아래 설명에서 사용되는 용어는 단순한 용어의 명칭이 아닌 그 용어가 가지는 의미와 명세서 전반에 걸친 내용을 토대로 이해되어야 한다.
플래시 메모리는 데이터의 덮어쓰기가 불가능하여, 기본적으로 삭제 후 다시 쓰기 형태로 덮어쓰기의 기능을 유사하게 구현한다. 데이터의 읽기 및 쓰기는 페이지(page) 단위로 이루어지며, 데이터의 삭제는 블록(block) 단위로 이루어진다.
플래시 메모리의 삭제 후 다시 쓰기의 하나의 방법으로서, 삭제가 블록 단위로 이루어지기 때문에 대상 블록 내부의 유효 페이지를 다른 블록으로 옮긴 후, 대상 블록 전체의 데이터를 삭제하고, 옮겼던 유효 페이지를 다시 대상 블록으로 복사하는 방법이 있다. 이 방법은 많은 쓰기 횟수 등으로 인해 큰 오버헤드가 발생할 수 있고, 셀의 수명을 단축시키는 문제가 발생할 수 있다.
이에, 대상 블록의 유효 데이터를 새 블록으로 옮겨 적는 가비지 콜렉션(Garbage Collection) 연산을 적용할 수 있다.
도 1은 일실시예에 따른 가비지 콜렉션 과정을 나타낸다.
도 1을 참조하면, 플래시 메모리는 블록(100) 및 블록(100)에 포함되는 페이지(120, 130)로 구성될 수 있다. 이 때, 페이지(120, 130)에 기록되어 있는 유효 데이터는 FTL(Flash Translation Layer)을 통해 해당 데이터가 업데이트되는 경우 유효하지 않은 데이터로 변동될 수 있다.
FTL(Flash Translation Layer)은 데이터를 저장하는 물리적인 주소와 논리적인 주소 간의 주소 변환을 수행하는 방법이다. 파일이 저장되는 논리적인 주소가 물리적인 주소로서 어느 블록의 어느 페이지에 대응하는지를 나타내는 주소 변환용 매핑 테이블을 가지고 있다. 이 매핑 테이블을 참조하여 파일이 저장되는 논리적인 주소와 연결되는 물리적인 주소에 대응하는 페이지의 데이터에 접근한다.
도 1을 참조하여, FTL에 대해 보다 구체적으로 설명하면, 데이터 A가 저장되는 논리적인 주소에 연결되는 물리적 주소에 페이지(120)가 대응된다고 할 때, 데이터 A가 데이터 A'로 업데이트 되기 위하여, 데이터 A'를 페이지(130)에 기록하고, 데이터 A가 저장되었던 논리적 주소와 연결되는 물리적 주소에 대응하는 페이지를 페이지(130)로 변경한다. 이를 통해, 기존에 데이터 A가 저장되어있던 페이지(120)는 유효하지 않은 페이지가 되고, 새로 업데이트된 데이터 A'가 저장되는 페이지(130)가 유효 페이지가 된다.
플래시 메모리에서 삭제는 블록 단위로 이루어지기 때문에, 유효하지 않은 페이지(120) 만을 단독으로 삭제할 수 없다. 따라서, 삭제 후 옮겨 쓰기 형태로 덮어쓰기와 유사한 기능을 구현하는데, 이 과정에서 가비지 콜렉션이 적용될 수 있다.
가비지 콜렉션은 가비지 콜렉션 대상이 되는 대상 블록(100)의 유효 페이지들만을 새 블록(110)에 옮겨 쓰고 대상 블록(100) 전체를 삭제한다. 예를 들어, 블록(100)의 유효 페이지(130)를 새 블록(110)의 유효 페이지(140)로 옮겨 쓰기하며, 블록(100)의 유효하지 않은 페이지(120)는 남겨두었다가 대상 블록(100) 전체를 삭제하면서, 삭제되도록 할 수 있다. 이를 통해, 새 블록(110)에는 유효 페이지만이 남게 되며, 다른 방식들에 비해 적은 쓰기 횟수로 유효 페이지 덮어쓰기 기능의 구현이 가능하다.
가비지 콜렉션 방식은 Single Writing Pointer 방식과 Multiple Writing Pointer 방식이 있으며, Single Writing Pointer 방식은 가비지 콜렉션을 통해 옮겨 쓰기 되는 유효 페이지(140)들만을 새 블록(110)에 저장하는 것이 아니라, 외부에서 새롭게 쓰여져 저장되는 데이터들도 새 블록(110)에 저장되는 방식이다. 반면, Multiple Writing Pointer 방식은 가비지 콜렉션을 통해 옮겨 쓰기 되는 유효 페이지(140)들만을 새 블록(110)에 옮겨 적으며, 외부에서 새롭게 쓰여져 저장되는 데이터들은 가비지 콜렉션을 통해 옮겨 쓰기 되는 블록이 아닌 다른 블록에 저장되는 방식이다.
일실시예에 따라 본원의 가비지 콜렉션은 Multiple Writing Pointer 방식을 적용하여, 새 블록에는 가비지 콜렉션을 통해 옮겨 쓰기 되는 페이지들만이 모이도록 하여 구현될 수 있다.
도 2는 일실시예에 따라 페이지 내의 잉여공간에서 이주 횟수를 카운팅하는 구성을 나타낸다.
도 2를 참조하면, 플래시 메모리의 블록(200)에는 복수의 페이지(220, 230)가 존재할 수 있으며, 페이지에 저장되는 데이터 외의 잉여 저장 공간(210)에 이주 횟수를 카운트하여 기록하고, 이를 관리할 수 있다.
플래시 메모리의 쓰기 횟수는 메모리의 수명과 관련되어 있으며, 쓰기 횟수가 많은 연산을 동반할수록, 메모리의 수명은 줄어든다. 가비지 콜렉션 수행 시, 유효 데이터를 다시 옮겨 쓰는 연산이 수반되므로, 가비지 콜렉션에 있어 쓰기 연산을 줄이는 것이 매우 중요할 수 있다. 유효 페이지가 적은 블록을 가비지 콜렉션 대상 블록으로 정하여, 가비지 콜렉션 수행 시 쓰기 연산을 줄일 수 있어 메모리 수명 등에 있어 더 효율적일 수 있다.
업데이트가 자주 발생하는 데이터의 경우 해당 데이터를 저장하고 있는 페이지는 유효하지 않은 페이지가 될 확률이 높아지며, 그러한 페이지들을 많이 저장하고 있는 블록일수록 유효 페이지의 수가 적어질 수 있다. 즉, 업데이트가 자주 발생하는 데이터를 저장하는 페이지가 많이 포함되어 있는 블록에 대해 가비지 콜렉션을 수행하는 것이 쓰기 연산을 줄일 수 있어 메모리의 수명을 늘리는 것에 기여할 수 있다.
일실시예에 따라, 메모리에 기록되는 데이터들을 업데이트 확률 별로 구분하여 그룹핑할 수 있으며, 이들 그룹들을 각각 서로 다른 블록에 저장하여 관리함으로써, 업데이트 확률이 비슷한 데이터들을 저장하는 페이지들이 한 블록에 저장되어 관리되도록 할 수 있다.
일실시예에 따라, 데이터가 이미 많이 업데이트된 경우 앞으로도 업데이트될 확률이 높으며, 해당 이미 많이 업데이트가 된 데이터를 저장하는 페이지는 가비지 콜렉션에 의해 이주되지 않은 확률이 높을 것이다.
따라서, 일실시예에 따라 데이터의 업데이트 확률과 이주 횟수 사이에서 상관관계가 있다고 볼 수 있으며, 이 상관관계에 따라 이주 횟수를 카운팅하여 데이터의 업데이트 확률을 예측할 수 있다.
도 2와 같이, 페이지의 잉여 데이터 공간에 해당 페이지에 저장된 데이터의 이주 수행 횟수를 카운트하여 기록하고 이를 관리하여 해당 데이터의 업데이트 확률을 예측할 수 있다. 예를 들어, 카운트되는 이주 횟수가 적을수록 해당 데이터가 업데이트될 확률이 높고, 이주 횟수가 높을수록 해당 데이터가 업데이트될 확률이 낮다고 볼 수 있다.
일실시예에 따라 이주 수행 횟수가 비슷한 데이터들을 각각 서로 다른 블록에 모아 관리할 수 있다. 이주 수행 횟수가 적은 데이터들을 모아 저장하는 블록에는 업데이트 확률이 높은 데이터를 포함하고 있을 가능성이 높기 때문에, 블록에 유효하지 않은 페이지가 생길 확률이 높고 이에 따라 남아있는 유효 페이지의 수가 적어 해당 블록을 가비지 콜렉션 수행 대상 블록으로 정하는 경우 쓰기 횟수를 줄일 수 있게 된다. 즉, 일실시예에 따라 이주 수행 횟수가 적은 데이터들을 저장하는 블록에 대해 가비지 콜렉션을 수행하는 경우 전체 쓰기 횟수를 줄일 수 있다.
따라서 일실시예에 따라 이주 수행 횟수를 카운트하고, 카운트된 이주 수행 횟수가 적은 데이터들끼리, 높은 데이터들끼리 복수의 그룹으로 따로 그룹핑하여 서로 다른 블록에 관리함으로써, 이주 수행 횟수가 적은 데이터들을 저장하고 있는 블록을 가비지 콜렉션 수행 대상 블록으로 정할 수 있다.
도 3은 일실시예에 따라 이주 횟수를 기준으로 같은 기준에 포함되는 적어도 하나 이상의 페이지를 같은 블록으로 그룹핑하는 과정을 나타낸다.
도 3을 참조하면, 일실시예에 따라 이주 횟수를 카운트하여 비슷한 이주 횟수를 갖는 페이지들을 하나의 그룹으로 그룹핑하기 위해 이주 수행 횟수를 카운트하여 기록하는 페이지의 데이터 잉여공간(310, 330, 350, 370)을 필요로 할 수 있다.
이주 횟수가 0회인 페이지(302, 304, 306, 308)들을 모아 저장하고 있는 블록(300)에서 유효 페이지(304, 308)를 새 블록(320)으로 옮겨 쓰기 할 수 있다. 이 경우 옮겨 쓰기 되는 새 블록(320)에는 이주 횟수가 1회인 페이지(322, 324, 326, 328)들이 모아 저장되도록 할 수 있다.
또한 이주 횟수가 1회인 페이지들을 포함하고 있는 블록(320)에서 유효 페이지(324, 328)들을 새 블록(340)으로 옮겨 쓰기 할 수 있다. 이 경우 옮겨 쓰기 되는 새 블록(340)에는 이주 횟수가 2회인 페이지(342, 344, 346, 348)들이 모아 저장되도록 할 수 있다.
그리고 이주 횟수가 2회인 페이지들을 포함하고 있는 블록(340)에서 유효 페이지(342, 348)들을 새 블록(360)으로 옮겨 쓰기 할 수 있다. 이 경우 옮겨 쓰기 되는 새 블록(360)에는 이주 횟수가 3회인 페이지(362, 364)들이 모아 저장되도록 할 수 있다. 페이지(366, 368)에는 아직 데이터가 기록되지 않은 프리 페이지(free page)이다.
이주 횟수가 적을수록 업데이트가 많이 된 것이므로, 앞으로 업데이트될 확률이 높은 핫 데이터(hot data; 380)일 확률이 높다. 반면 이주 횟수가 높을수록 업데이트가 많이 되지 않은 데이터이므로, 앞으로 업데이트될 확률이 낮은 콜드 데이터(cold data; 386)일 확률이 높다. 이와 같이, 앞으로 데이터의 업데이트가 이루어질 확률에 따라 이를 네 단계로 구분하면 핫 데이터(hot data; 380), 웜 데이터(warm data; 382), 쿨 데이터(cool data; 384) 및 콜드 데이터(cold data; 386)로 구별할 수 있다. 웜 데이터(382)는 핫 데이터보다는 업데이트 확률이 낮으나, 쿨 데이터(384)보다는 업데이트 확률이 높은 데이터에 해당하며, 쿨 데이터(384)는 웜 데이터보다는 업데이트 확률이 낮으나, 콜드 데이터(386)보다는 업데이트 확률이 높은 데이터에 해당한다.
페이지에 저장되어있는 데이터의 업데이트에 따라, 데이터의 논리 주소는 기존의 물리 주소에서 다른 물리 주소를 지시할 수 있으며, 따라서 기존의 물리 주소에 저장되어있는 데이터는 유효하지 않은 데이터(invalid data; 388)가 된다.
블록에 포함되는 페이지 중 아직 데이터가 기록되지 않은 페이지는 프리 페이지(free page; 390)로 지칭하였으며, 하나의 페이지 중 데이터가 기록된 공간 이외의 잉여 공간을 스페어 페이지(spare page; 392)로 지칭하고, 이 스페어 페이지(392)에 카운트되는 이주 횟수를 기록할 수 있다.
일실시예에 따라 이주 횟수가 같거나 비슷한 페이지들끼리 한 블록에 모아 저장되도록 가비지 콜렉션을 수행할 수 있다.
도 4는 일실시예에 따라 이주 횟수를 기준으로 그룹핑되는 페이지들을 포함하는 복수의 블록을 나타낸다.
이주 횟수가 비슷한 페이지들이 하나의 블록에서 관리될 수 있도록 이주 횟수의 범위를 나누어 해당 범위 별로 페이지들을 그룹핑하고, 이들을 각각 서로 다른 블록에 가비지 콜렉션되면서 저장되도록 할 수 있다.
일실시예에 따라, 이주 횟수의 범위를 이주 횟수가 0회인 경우, 1회인 경우, 2회인 경우 및 3회 이상인 경우로 나눌 수 있다. 도 4를 참조하면, 카운트되는 이주 횟수가 0회인 경우, 1회인 경우, 2회인 경우 및 3회 이상인 경우로 페이지들을 구분하여 횟수 별로 그룹핑하고, 이렇게 생성되는 복수의 페이지 그룹들을 각각 서로 다른 블록에 저장하여 관리되도록 할 수 있다.
일실시예에 따라, 카운트되는 이주 횟수가 0회인 페이지들을 모아놓은 블록의 경우, 앞으로 데이터가 업데이트될 확률이 가장 높은 핫 데이터들이 가장 많이 포함되어있을 수 있다. 또한, 카운트되는 이주 횟수가 1회인 페이지들을 모아놓은 블록의 경우, 이주 횟수가 0회인 페이지들을 모아놓은 블록의 경우보다 핫 데이터들은 적게 포함되어있을 수 있으나, 웜 데이터들은 보다 많이 포함되어있을 수 있다. 이처럼, 블록에 저장되는 페이지들의 카운트되는 이주 횟수가 증가할수록 해당 블록에는 앞으로 데이터의 업데이트 확률이 낮은 페이지들이 저장되어있을 확률이 높다. 일실시예에 따라 이주 횟수가 3회 이상인 페이지들을 모아놓은 블록의 경우, 앞으로 업데이트 확률이 낮은 콜드 데이터들이 많이 모여있을 확률이 높다.
일실시예에 따라, 핫 데이터들이 많이 포함되어있는 블록에서 유효하지 않은 데이터가 발생할 확률이 높고, 따라서 이주 횟수가 적은 페이지들이 많이 포함되어있는 블록일수록 유효하지 않은 페이지가 생길 확률이 높아지므로 카운트되는 이주 횟수가 높은 페이지들보다, 카운트되는 이주 횟수가 낮은 페이지들을 모아 저장해놓은 해당 블록에 대해 가비지 콜렉션이 수행되도록 하는 경우 전체 쓰기 횟수를 줄일 수 있다.
즉, 이주 횟수를 카운트하여 저장하고, 이주 횟수 범위 별로 페이지들을 그룹핑하여 서로 다른 블록에 저장함으로써, 앞으로 업데이트가 일어날 확률이 높은 데이터들을 한 블록에 모일 수 있는 확률을 높임으로써, 해당 블록에 대해 가비지 콜렉션이 수행되도록 하여 전체 쓰기 횟수를 줄일 수 있다.
도 5는 일실시예에 따라 기존의 가비지 콜렉션 방식과 이주 횟수를 기준으로 그룹핑하는 가비지 콜렉션 방식의 시뮬레이션 결과로 각 방식의 쓰기 횟수를 비교하는 그래프를 나타낸다.
도 5를 참조하면, 해당 그래프의 결과를 도출한 시뮬레이터는 6개의 플래시 메모리로 구성되어 있으며, 페이지 크기는 4KB, 블록 크기는 1MB 이고, 블록 당 페이지 수는 256개이며, 6개의 플래시 메모리에는 각각 2개의 플래인(Plane)이 있고, 각 플래인에는 8192개의 블록으로 구성되어 있다.
각 연산의 시간 파라미터는 페이지 읽기는 60us, 페이지 쓰기는 800us 및 블록 삭제는 1.5ms로 하여 시뮬레이션을 수행하였다.
페이지 레벨의 FTL을 적용하였으며, OPS(Over Provisioning Space)는 5%로 할당하였고, Financial Trace Workload를 사용하였다.
그래프에서 Normal은 Multiple Writing Pointer 방식에 FTL 방식이 적용되는 가비지 콜렉션 수행 결과를 나타내며, MCHC(Migration Count based Hotness Classification)은 Multiple Writing Pointer 방식에, FTL 방식을 적용하고, 페이지의 잉여 공간에 이주 횟수를 카운트하여 기록한 뒤 이주 횟수의 범위에 따라 페이지들을 구분하여 그룹핑하고, 각각 서로 다른 블록에 관리되도록 한 가비지 콜렉션 수행 결과를 나타낸다.
시뮬레이션 결과, Normal의 경우보다 MCHC의 경우 IOPS(아이옵스; Input/Output Operations Per Second)가 25% 성능 향상 되었으며, WAF(Write Amplification Factor)가 33% 감소됨을 확인하였다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (13)

  1. 메모리에 기록되는 데이터를 업데이트 확률 별로 복수 개의 그룹으로 그룹핑하는 그룹핑부; 및
    상기 복수 개의 그룹을 각각 서로 다른 블록에 저장하여 관리하는 관리부
    를 포함하는 메모리 컨트롤 장치.
  2. 제1항에 있어서,
    상기 그룹핑부는 상기 데이터의 이주 횟수를 기 정해지는 복수의 범위 별로 구분하여, 상기 데이터를 상기 업데이트 확률 별로 그룹핑하는 메모리 컨트롤 장치.
  3. 제2항에 있어서,
    상기 이주 횟수를 카운트 하는 영역을 상기 데이터가 기록되는 페이지의 적어도 일부의 잉여 공간에 관리하는 메모리 컨트롤 장치.
  4. 제2항에 있어서,
    메모리에 기록되는 상기 데이터의 상기 업데이트 확률을 복수의 범위로 구분하여, 상기 업데이트 확률이 상기 복수의 범위의 적어도 하나 이상의 경계에 해당하는 상기 데이터의 상기 이주 횟수를 도출하고, 도출되는 적어도 하나 이상의 상기 이주 횟수를 상기 데이터의 상기 업데이트 확률 별 구분 기준으로 미리 결정하는 결정부
    를 더 포함하는 메모리 컨트롤 장치.
  5. 제4항에 있어서,
    상기 그룹핑부는 기 결정되는 상기 구분 기준이 하나인 경우, 상기 구분 기준보다 상기 이주 횟수가 적은 상기 데이터를 제1 그룹으로 그룹핑하고, 상기 이주 횟수가 상기 구분 기준보다 높은 상기 데이터를 제2 그룹으로 그룹핑하는 메모리 컨트롤 장치.
  6. 제4항에 있어서,
    상기 그룹핑부는 기 결정되는 상기 구분 기준이 복수개인 경우, 상기 데이터의 상기 이주 횟수를 상기 구분 기준을 경계로 나누어 상기 데이터를 복수개의 그룹으로 그룹핑하는 메모리 컨트롤 장치.
  7. 메모리에 기록되는 데이터를 업데이트 확률 별로 복수 개의 그룹으로 그룹핑하는 단계; 및
    상기 복수 개의 그룹을 각각 서로 다른 블록에 저장하여 관리하는 단계
    를 포함하는 메모리 컨트롤 방법.
  8. 제7항에 있어서,
    상기 그룹핑하는 단계는,
    상기 데이터의 이주 횟수를 기 정해지는 복수의 범위 별로 구분하여, 상기 데이터를 상기 업데이트 확률 별로 그룹핑하는 메모리 컨트롤 방법.
  9. 제8항에 있어서,
    상기 이주 횟수를 카운트 하는 영역을 상기 데이터가 기록되는 페이지의 적어도 일부의 잉여 공간에 관리하는 메모리 컨트롤 방법.
  10. 제8항에 있어서,
    메모리에 기록되는 상기 데이터의 상기 업데이트 확률을 복수의 범위로 구분하여, 상기 업데이트 확률이 상기 복수의 범위의 적어도 하나 이상의 경계에 해당하는 상기 데이터의 상기 이주 횟수를 도출하고, 도출되는 적어도 하나 이상의 상기 이주 횟수를 상기 데이터의 상기 업데이트 확률 별 구분 기준으로 미리 결정하는 단계
    를 더 포함하는 메모리 컨트롤 방법.
  11. 제10항에 있어서,
    상기 그룹핑하는 단계는,
    기 결정되는 상기 구분 기준이 하나인 경우, 상기 구분 기준보다 상기 이주 횟수가 적은 상기 데이터를 제1 그룹으로 그룹핑하고, 상기 이주 횟수가 상기 구분 기준보다 높은 상기 데이터를 제2 그룹으로 그룹핑하는 메모리 컨트롤 방법.
  12. 제10항에 있어서,
    상기 그룹핑하는 단계는,
    기 결정되는 상기 구분 기준이 복수개인 경우, 상기 데이터의 상기 이주 횟수를 상기 구분 기준을 경계로 나누어 상기 데이터를 복수개의 그룹으로 그룹핑하는 메모리 컨트롤 방법.
  13. 제7항 내지 제12항 중 어느 한 항의 메모리를 컨트롤하는 방법을 수행하는 프로그램을 수록한 컴퓨터 판독 가능 기록 매체.
KR1020170161602A 2017-11-29 2017-11-29 메모리 컨트롤 장치 및 방법 KR101947286B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170161602A KR101947286B1 (ko) 2017-11-29 2017-11-29 메모리 컨트롤 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170161602A KR101947286B1 (ko) 2017-11-29 2017-11-29 메모리 컨트롤 장치 및 방법

Publications (1)

Publication Number Publication Date
KR101947286B1 true KR101947286B1 (ko) 2019-02-12

Family

ID=65369128

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170161602A KR101947286B1 (ko) 2017-11-29 2017-11-29 메모리 컨트롤 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101947286B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050070092A (ko) * 2002-10-28 2005-07-05 샌디스크 코포레이션 블록 내 페이지들을 그룹짓기 위한 방법 및 장치
KR20090050382A (ko) * 2007-11-15 2009-05-20 삼성전자주식회사 스토리지 관리 방법 및 관리 시스템
WO2017086765A2 (ko) * 2015-11-22 2017-05-26 엘지전자(주) 비디오 신호를 엔트로피 인코딩, 디코딩하는 방법 및 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050070092A (ko) * 2002-10-28 2005-07-05 샌디스크 코포레이션 블록 내 페이지들을 그룹짓기 위한 방법 및 장치
KR20090050382A (ko) * 2007-11-15 2009-05-20 삼성전자주식회사 스토리지 관리 방법 및 관리 시스템
WO2017086765A2 (ko) * 2015-11-22 2017-05-26 엘지전자(주) 비디오 신호를 엔트로피 인코딩, 디코딩하는 방법 및 장치

Similar Documents

Publication Publication Date Title
US10649696B2 (en) Data set management
US9965217B2 (en) Managing data in a storage system
US9542105B2 (en) Copying volumes between storage pools
EP3118745B1 (en) A heuristic interface for enabling a computer device to utilize data property-based data placement inside a nonvolatile memory device
WO2018194772A1 (en) Persistent memory for key-value storage
US20140351515A1 (en) Providing data attributes to a storage manager to use to select a storage tier to use for a data set management operation
US20140351505A1 (en) Providing data attributes to a storage manager to use to select a storage tier to use for a data set management operation
US20190050163A1 (en) Using snap space knowledge in tiering decisions
JP7376488B2 (ja) スナップショットのコピーオンライトのデータ移動を回避するインフラストラクチャとしての重複除外
KR101544309B1 (ko) 스트림 기반의 비휘발성 메모리 제어 방법 및 장치
US10120583B2 (en) Performance penalty avoidance for solid state drive
US11042491B2 (en) Point in time copy operations from source volumes to space efficient target volumes in two stages via a non-volatile storage
US9927991B2 (en) Extent movement speed in multi-tiered systems
US9778927B2 (en) Storage control device to control storage devices of a first type and a second type
KR20180002259A (ko) 계층적 플래시 변환 레이어 구조 및 그 설계 방법
JP6724534B2 (ja) 情報処理装置、重複除去プログラム、及び重複除去方法
JP2021509981A (ja) システムガベージコレクションの方法およびソリッドステートディスクにおけるガベージコレクションの方法
KR102545067B1 (ko) 로그 구조 파일 시스템의 메타 데이터 저장 방법, 시스템 및 컴퓨터 판독 가능한 기록 매체
US9189407B2 (en) Pre-fetching in a storage system
US11199988B2 (en) Data migration across tiers in a multi-tiered storage area network
US20150121033A1 (en) Information processing apparatus and data transfer control method
KR101947286B1 (ko) 메모리 컨트롤 장치 및 방법
US10521156B2 (en) Apparatus and method of managing multi solid state disk system
KR101834082B1 (ko) 다중 ssd 시스템 관리 장치 및 방법
JP6427913B2 (ja) ストレージシステム、制御装置、ストレージ装置、入出力制御方法、及びプログラム

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant