상기와 같은 본 발명의 목적을 달성하고 상술한 종래 기술의 문제점을 해결하기 위한 본 발명에 따른 플래시 메모리의 매핑 장치는, 상기 플래시 메모리의 물리 블록들의 수보다 적은 수의 카운터들, 및 상기 플래시 메모리의 상기 물리 블록들 중 적어도 하나 이상에 대한 소거 명령에 대응하여 상기 카운터들 중 적어도 하나 이상의 카운터의 값을 변경하고, 상기 카운터들의 값에 기초하여 상기 물리 블록들 중 적어도 하나를 논리 블록으로 매핑하는 제어부를 포함한다.
본 발명의 일측에 따르면, 상기 제어부는 상기 카운터들의 값에 기초하여 상기 물리 블록들의 각각의 소거 횟수에 대응하는 추정치를 상기 물리 블록들의 각각에 대하여 계산하고, 상기 물리 블록들의 각각에 대응하는 상기 추정치에 기초하여 상기 물리 블록들 중 적어도 하나를 논리 블록으로 매핑한다. 이때, 상기 추정치가 작은 물리 블록에 대하여 논리 블록으로의 매핑(mapping)의 우선 순위가 주어진다.
본 발명의 또 다른 일측에 따르면, 상기 플래시 메모리의 복수 개의 물리 블록들 중 적어도 하나 이상에 대한 소거 명령에 대응하여 상기 물리 블록들의 수보 다 적은 수의 카운터들 중 적어도 하나 이상의 카운터의 값을 변경하는 제1 단계, 및 상기 카운터들의 값에 기초하여 상기 물리 블록들 중 적어도 하나를 논리 블록으로 매핑하는 제2 단계를 포함하는 플래시 메모리의 매핑 방법이 제공된다.
본 발명의 또 다른 일측에 따르면, 상기 제2 단계는, 상기 카운터들의 값에 기초하여 상기 물리 블록들의 각각의 소거 횟수에 대응하는 추정치를 상기 물리 블록들의 각각에 대하여 계산하는 단계, 및 상기 물리 블록들의 각각에 대응하는 상기 추정치에 기초하여 상기 물리 블록들 중 적어도 하나를 논리 블록으로 매핑하는 단계를 포함할 수 있다. 이때, 상기 물리 블록들의 각각에 대응하는 상기 추정치가 작은 순서로 상기 물리 블록들 중 적어도 하나를 논리 블록으로 매핑한다.
본 발명에 따른 마모도 평준화 기법은, 마모도 평준화를 위해 반드시 정확한 전기적 소거 횟수를 유지할 필요가 없다는 점에 착안하여, 각 블록의 전기적 소거 횟수의 근사값만을 유지함으로써 메모리의 낭비와 정보 유지 오버헤드를 줄일 수 있어 궁극적으로 전체적인 성능 향상을 기대할 수 있다. 본 발명에 따른 방식은 전체 n개의 플래시 메모리 블록에 대해 (k << n)을 만족하는 k개의 카운터를 각 블록의 전기적 소거 횟수를 추정하기 위한 자료구조로 유지한다.
이하 첨부 도면들 및 첨부 도면들에 기재된 내용들을 참조하여 본 발명의 바람직한 실시예를 상세하게 설명하지만, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 2는 본 발명의 일례에 따른 플래시 메모리의 매핑 장치의 동작을 설명하 기 위한 도면이다.
도 2에 도시된 플래시 메모리(Flash memory)(230)는 1번째 물리 블록(231), p번째 물리 블록(232), 및 n번째 물리 블록(233)의 n개의 물리 블록(physical block)으로 이루어져 있다. 본 발명에서는 이러한 물리 블록들의 수보다 적은 수의 카운터들(counters)을 유지한다. 도 2에서, 카운터(220)는 모두 k개가 유지되는데, 총 카운터들의 수 k는 물리 블록들의 수 n보다 작다.
제어부(210)는 플래시 메모리(230)의 상기 물리 블록들(231, 232, 233) 중 적어도 하나 이상에 대한 소거 명령에 대응하여 상기 카운터들(220) 중 적어도 하나 이상의 카운터의 값을 변경하고, 상기 카운터들(220)의 값에 기초하여 상기 물리 블록들(231, 232, 233) 중 적어도 하나를 논리 블록으로 매핑하는 역할을 수행한다. 제어부(210)의 동작에 관해서는 뒤에서 더 상세히 설명한다.
도 3은 본 발명의 일례에 따라 블록의 소거 시마다 수행되는 동작의 순서를 도시한 흐름도이다.
종래에는 플래시 메모리의 물리 블록의 소거 시마다 상기 물리 블록에 대응하는 카운터의 값을 증가시킴으로써, 해당 물리 블록의 정확한 소거 횟수 정보를 기록하고, 이에 기초하여 마모도 평준화를 수행하였다. 그러나, 본 발명은 마모도 평준화를 위해 반드시 정확한 전기적 소거 횟수를 유지할 필요가 없다는 점에 착안하여, 플래시 메모리의 물리 블록의 수보다 적은 카운터를 유지하고, 상기 카운터의 값을 이용하여 각 물리 블록의 전기적 소거 횟수의 추정치를 계산한다.
단계(310)에서, 플래시 메모리(230)의 물리 블록들의 수 n보다 적은 수의 카 운터들이 유지된다. 상기 카운터들의 수는 k개로 플래시 메모리(230)의 물리 블록들의 수 n보다 훨씬 작은 수가 사용될 수 있다. 상기 카운터들은 본 발명에 따른 카운터 변수를 저장하기 위한 것으로, 레지스터, DRAM 등 다양한 형태의 저장 장치가 사용될 수 있다.
단계(320)에서 제어부(210)는 플래시 메모리(230)의 복수 개의 물리 블록들(231, 232, 233) 중 적어도 하나 이상에 대한 소거 명령을 수신한다. 예를 들어, 제어부(210)는 플래시 메모리(230)의 p번째 블록(232)에 대한 소거 명령을 수신한다. 앞서 설명한 바와 같이, 플래시 메모리에 있어서 소거는 블록 단위로 수행된다.
단계(320)에서 제어부(210)가 플래시 메모리(230)의 복수 개의 물리 블록들(231, 232, 233) 중 적어도 하나 이상에 대한 소거 명령을 수신하였으면, 단계(330)에서 제어부(210)는 상기 소거 명령에 대응하여 상기 카운터들(220) 중 적어도 하나 이상의 카운터의 값을 변경한다. 카운터들(220)은 추후 플래시 메모리(230)의 블록들(231, 232, 233) 각각에 대한 소거 횟수의 추정치를 계산하는데 사용된다.
단계(340)에서 제어부(210)는 소거 요청된 블록을 소거한다. 예를 들어, 플래시 메모리(230)의 p번째 블록(232)에 대해 소거 요청을 수신한 경우, p번째 블록(232)을 소거한다.
본 실시예에서, 단계(340)는 단계(330)의 다음에 수행하는 것으로 설명되었으나, 단계(340)이 단계(330)보다 먼저 수행될 수도 있다.
도 4는 본 발명의 일례에 따라 물리 블록을 논리 블록으로 매핑하는 동작의 순서를 도시한 흐름도이다.
본 발명에서는 플래시 메모리의 물리 블록들의 수보다 적은 수의 카운터의 값을 블록의 소거 시마다 변경하고, 상기 카운터들의 값에 기초하여 물리 블록들 중 적어도 하나를 논리 블록으로 매핑한다. 이를 도 4를 참조하여 설명한다.
단계(410)에서 제어부(210)는 카운터들(220)의 값에 기초하여 물리 블록들(231, 232, 233)의 각각의 소거 횟수에 대응하는 추정치를 상기 물리 블록들(231, 232, 233)의 각각에 대하여 계산한다.
그 다음, 제어부(210)는, 단계(420)에서, 물리 블록들(231, 232, 233)의 각각에 대응하는 상기 추정치에 기초하여 상기 물리 블록들(231, 232, 233) 중 적어도 하나를 논리 블록으로 매핑한다. 예를 들어, 제어부(210)는 상기 추정치가 작은 물리 블록에 대하여 논리 블록으로의 매핑의 우선 순위를 줄 수 있다. 즉, 제어부(210)는 상기 물리 블록들의 각각에 대응하는 상기 추정치가 작은 순서로 상기 물리 블록들 중 적어도 하나를 논리 블록으로 매핑한다.
본 발명에 따른 마모도 평준화 기법에서 각 블록의 전기적 소거 횟수를 추정하기 위해 사용되는 카운터 X의 구조를 도 5를 참조하여 설명한다.
우선 n개의 물리 블록들을 갖는 플래시 메모리의 상기 n개의 물리 블록들 각각에 대응하여 n개의 엔트리를 갖는 마모도 평준화 벡터(wear leveling vector)(510) V = (V(1), V(2), ..., V(n))가 유지된다. 도 5에서 마모도 평준화 벡터(510)의 엔트리의 각각은 n개의 물리 블록의 각각에 대응된다. p(1 ≤ p ≤ n)번째 물리 블록에 대응하는 마모도 평준화 벡터의 엔트리는 V(p)이다.
상기 마모도 평준화 벡터를 설명하기 위하여, 우선 마모도 평준화 벡터 집합(wear leveling vector set) Sn = {V1, V2, ..., Vh}를 설명한다. 상기 h개의 벡터들 V1, V2, ..., Vh의 각각은 n개의 엔트리를 가지는 벡터이며, 상기 V1, V2, ..., Vh 간에 다음 식 1, 2, 3의 관계가 만족되는 경우, 상기 V1, V2, ..., Vh의 각각은 마모도 평준화 벡터 집합 Sn에 속한다고 정의한다.
즉, 마모도 평준화 벡터 집합 Sn에 속하는 h개의 벡터들의 각 엔트리는 -1 또는 1의 값을 가진다. 이 때, 마모도 평준화 벡터 집합 Sn에 속하는 h개의 벡터들의 각 p번째 엔트리 Vi(p)와 각 q 번째 엔트리 Vi(q)가 (-1, -1) 또는 (-1, 1) 또는 (1, -1) 또는 (1, 1)의 값을 가질 확률은 고르게 1/4씩이고, 따라서, 이들의 곱 Vi(p)Vi(q)의 평균은 0이다. 이와 유사하게, 마모도 평준화 벡터 집합에 속하는 h개의 벡터들의 각 p, q, r번째 엔트리들의 곱 Vi(p)Vi(q)Vi(r)의 평균도 0 이고, 각 p, q, r, s번째 엔트리들의 곱 Vi(p)Vi(q)Vi(r)Vi(s)의 평균도 0이다. 여기서, Vi(p)는 n개의 엔트리를 갖는 벡터 Vi 의 p번째 엔트리를 의미한다. 본 발명에서 n개의 물리 블록에 대하여 정의된 마모도 평준화 벡터(510) V는 마모도 평준화 벡터 집합 Sn에 속하는 벡터이다.
그리고, 카운터(520) X는 식 4와 같이 정의된다.
여기서, f(p)는 p번째 블록의 전기적 소거 횟수, V(p)는 마모도 평준화 벡터 V의 p번째 엔트리의 값을 의미한다. 그러면, V(p)X는 다음의 식 5에 의해 p번째 블록의 전기적 소거 횟수 f(p)의 불편추정량(unbiased estimate)으로 사용될 수 있다.
이는 마모도 평준화 벡터 V가 앞에서 정의된 마모도 평준화 변수 집합에 속하기 때문에, 식 2와 식 3에 의해 E[V(p)2] = 1 이고, E[V(p)V(q), p ≠ q] = 0 이 성립하기 때문이다.
본 발명에 따른 마모도 평준화 기법에서는 각 블록의 전기적 소거 횟수의 추정치의 오차를 줄이기 위해, k개의 마모도 평준화 벡터(510) Vi (1 ≤ i ≤ k)와 k개의 카운터(620) Xi (1 ≤ i ≤ k)를 유지한다. 이때, 상기 k개의 마모도 평준화 벡터(510) Vi (1 ≤ i ≤ k)는 모두 같은 마모도 평준화 벡터 집합에 속한 서로 다른 벡터들이다. 또한, k = s1 x s2 로서, s1은 정확도를 높이는 데에 기여하고 s2는 신뢰도를 높이는 데에 기여한다.
이제 도 6를 참조하여, 본 발명의 일례에 따라 블록 q에 대한 전기적 소거 횟수의 추정치를 구하는 방법을 상세하게 설명한다.
도 6에 도시된 바와 같이, n개의 물리 블록을 가지는 플래시 메모리의 n개의 물리 블록들의 각각에 대응하여 k개의 마모도 평준화 벡터(610)가 유지된다. 즉, 하나의 물리 블록에 대하여 k개의 마모도 평준화 벡터 엔트리가 유지된다. 도 6을 참조하면, 1번째 물리 블록에 대응하여, V1(1), V2(1), ..., Vk(1)의 k개의 마모도 평준화 벡터 엔트리(611)가 준비된다. 마찬가지로, p번째 물리 블록에 대응하여, V1(p), V2(p), ..., Vk(p)의 k개의 마모도 평준화 벡터 엔트리(612)가 준비되고, n번째 물리 블록에 대응하여, V1(n), V2(n), ..., Vk(n)의 k개의 마모도 평준화 벡터 엔트리(613)가 준비된다.
상기 k개의 마모도 평준화 벡터들은 상기 n개의 물리 블록들의 각각에 대응하는 k개의 마모도 평준화 벡터 엔트리들 간에 식 1, 2, 3의 관계를 만족한다. 예를 들어, 1번째 물리 블록에 대응하는 k개의 마모도 평준화 벡터 엔트리들(611) V1(1), V2(1), ..., Vk(1)의 각각은 -1 또는 1의 값을 가진다. 마찬가지로, p번째 물리 블록에 대응하는 k개의 마모도 평준화 벡터 엔트리들(612) V1(p), V2(p), ..., Vk(p)의 각각은 -1 또는 1의 값을 가진다.
또한, 예를 들어, 상기 n개의 물리 블록들에 대하여 1번째 물리 블록에 대응하는 k개의 마모도 평준화 벡터 엔트리들(611) V1(1), V2(1), ..., Vk(1)과 p번째 물리 블록에 대응하는 k개의 마모도 평준화 벡터 엔트리들(612) V1(p), V2(p), ..., Vk(p)이 (-1, -1) 또는 (-1, 1) 또는 (1, -1) 또는 (1, 1)의 값을 가질 확률은 고르 게 1/4씩이고, V1(1)V1(p), V2(1)V2(p), ..., Vk(1)Vk(p)의 평균은 0이다. 마찬가지로, n개의 물리 블록들에 대하여 p번째 물리 블록에 대응하는 k개의 마모도 평준화 벡터 엔트리들(612) V1(p), V2(p), ..., Vk(p)과 n번째 물리 블록에 대응하는 k개의 마모도 평준화 벡터 엔트리들(613) V1(n), V2(n), ..., Vk(n)이 (-1, -1) 또는 (-1, 1) 또는 (1, -1) 또는 (1, 1)의 값을 가질 확률은 고르게 1/4씩이고, V1(p)V1(n), V2(p)V2(n), ..., Vk(p)Vk(n)의 평균은 0이다.
도 7은 본 발명의 일례에 따른 마모도 평준화 기법을 위하여 블록의 소거 시마다 수행되는 동작의 순서를 도시한 흐름도이다. 본 발명에 따른 마모도 평준화 기법에서 어떤 블록 p가 전기적으로 소거될 때마다 블록 p에 대응하는 k개의 마모도 평준화 벡터 엔트리 Vi(p)(1 ≤ i ≤ k)를 k개의 카운터 Xi(1 ≤ i ≤ k)에 더함으로써 자료구조를 유지하는 절차를 도 6과 도 7를 참조하여 설명한다.
우선 단계(710)에서 제어부는 플래시 메모리의 n개의 물리 블록들 중 p번째 블록에 대한 소거 요청(소거 명령)을 수신한다.
그러면, 제어부(710)는, 단계(720)에서 상기 플래시 메모리의 n개의 물리 블록들 중 p(1 ≤ p ≤ n)번째 블록에 대한 소거 명령에 대응하여 상기 p번째 블록에 대응하는 k개의 상기 마모도 평준화 벡터 엔트리(612)의 각각을 대응하는 상기 k개의 카운터(620)에 더한다. 즉, 카운터 X1에 V1(p)를 더하고, X2에 V2(p)를 더하고, Xk에 Vk(p)를 더하는 등과 같이 p번째 블록에 대응하는 k개의 상기 마모도 평준화 벡터 엔트리의 각각을 대응하는 상기 k개의 카운터에 더한다. 이를 식으로 표현하면, 식 6과 같다.
여기서, Xi는 i번째 카운터의 값, f(p)는 p번째 블록의 전기적 소거 횟수이고, Vi(p)는 마모도 평준화 벡터 Vi의 p번째 엔트리의 값을 의미한다. 따라서, 식 6은 p번째 블록의 전기적 소거 시마다 (1 ≤ i ≤ k)인 각 i에 대하여 마모도 평준화 벡터 Vi의 p번째 엔트리 Vi(p)의 값을 Xi의 값에 더하는 것을 의미한다.
그 다음, 제어부는, 단계(730)에서 소거 요청된 p번째 물리 블록을 소거한다.
도 8은 본 발명의 일례에 따라 블록 q의 전기적 소거 횟수에 대한 추정치를 구하는 동작의 순서를 도시한 흐름도이다. 본 발명에 따른 마모도 평준화 기법에서 어떤 블록 q의 전기적 소거 횟수가 필요할 때마다 블록 q에 대응하는 k개의 마모도 평준화 벡터 엔트리 Vi(q)(1 ≤ i ≤ k)와 k개의 카운터 Xi (1 ≤ i ≤ k)로부터 블록 q의 전기적 소거 횟수 f(q)의 추정치를 구하는 절차를 도 6과 도 8을 참조하여 설명한다.
우선 단계(810)에서 플래시 메모리의 n개의 물리 블록들 중 q번째 블록에 대한 전기적 소거 횟수가 요청된다.
그러면, 제어부는, 단계(820)에서, 식 7에 의하여 Vi(q)Xi(1 ≤ i ≤ k)를 s1개씩 단위로 총 s2개의 평균(630) Yj(q) (1 ≤ j ≤ s2)를 계산한다.
즉, q번째 블록에 대한 전기적 소거 횟수가 요청된 경우, V1(q)X1, V2(q)X2, ..., Vs1(q)Xs1의 평균 Y1(q)를 계산하고, Vs1 +1(q)Xs1+1, Vs1 +2(q)Xs1+2, ..., V2s1(q)X2s1의 평균 Y2(q)를 계산하는 등으로 하여, Y1(q), Y2(q), ..., Yj(q), ..., Ys2(q) 등을 계산한다.
단계(830)에서 제어부는 식 8에 의하여, (1 ≤ j ≤ s2)인 각 j 대해 산출된 평균(630) Yj(q) 중에서 중앙값(640) F(q)를 산출한다. 즉, Y1(q), Y2(q), ..., Yj(q), ..., Ys2(q)의 중앙값(medium value) F(q)을 계산한다. 중앙값은 Y1(q), Y2(q), ..., Yj(q), ..., Ys2(q)을 크기 순으로 나열했을 때 중간에 위치하는 값이다.
단계(840)에서 상기 계산된 F(q)는 플래시 메모리의 q번째 블록에 대한 전기적 소거 횟수 f(q)의 추정치로 반환된다.
따라서, 본 발명은 플래시 메모리의 물리 블록을 논리 블록으로 매핑할 때, 도 8에 따라, 상기 플래시 메모리의 n개의 물리 블록들의 각각에 대해 전기적 소거 횟수의 추정치인 F(q)를 계산하고, 상기 F(q)가 작은 물리 블록에 대하여 논리 블록으로의 매핑의 우선 순위를 준다.
또한 본 발명의 실시예들은 다양한 컴퓨터로 구현되는 동작을 수행하기 위한 프로그램 명령을 포함하는 컴퓨터 판독 가능 매체를 포함한다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로 그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.