상기 목적을 달성하기 위하여 본 발명의 메모리 장치의 접근을 제어하는 방법은 논리적 메모리 주소에 상응하는 메모리 블록이 배드 블록인지 여부를 나타내는 배드 블록 정보를 포함하는 배드 블록 비트맵으로부터 상기 논리적 메모리 주소에 상응하는 상기 배드 블록 정보(bad block information)를 얻는 단계 및 상기 배드 블록 정보가 배드 표시(bad indication)를 나타내는 경우에는 블록 매핑 테이블에서 상기 논리적 메모리 주소에 상응하는 물리적 메모리 주소를 얻고, 상기 얻은 물리적 메모리 주소를 기초로 리맵 테이블(remap table)을 검색하여 예약된 물리적 메모리 주소(reserved physical memory address)를 출력하는 단계를 포함한다.
또한, 상기 방법은 상기 배드 블록 정보가 배드 표시를 나타내지 않는 경우에는 상기 블록 매핑 테이블로부터 상기 논리적 메모리 주소에 상응하는 상기 물리적 메모리 주소를 출력하는 단계를 더 포함할 수 있다.
상기 예약된 물리적 메모리 주소를 출력하는 단계는 어플리케이션으로부터 발생된 상기 논리적 메모리 주소를 얻는 단계(obtaining), 상기 논리적 메모리 주소를 기초로 상기 블록 매핑 테이블로부터 상기 물리적 메모리 주소를 얻는 단계, 상기 얻은 물리적 메모리 주소를 기초로 상기 리맵 테이블을 검색하는 단계 및 상기 얻은 물리적 메모리 주소에 상응하는 상기 예약된 물리적 메모리 주소를 출력하는 단계를 포함할 수 있다.
상기 배드 블록 정보를 얻는 단계는 어플리케이션(application)으로부터 상기 논리적 메모리 주소를 입력받는 단계, 상기 입력받은 논리적 메모리 주소에 상응하는 상기 배드 블록 비트맵 내의 배드 블록 영역을 읽는 단계 및 상기 읽은 배드 블록 영역으로부터 상기 입력받은 논리적 메모리 주소에 상응하는 상기 배드 블록 정보를 읽는 단계를 포함할 수 있다.
상기 배드 블록 영역을 읽는 단계는 상기 입력받은 논리적 메모리 주소를 메모리 주소 연산의 처리 단위를 나타내는 N으로 나눈 몫에 상응하는 상기 배드 블록 비트맵 내의 상기 배드 블록 영역을 읽는 단계 및 상기 입력받은 논리적 메모리 주소를 상기 N으로 나눈 나머지에 상응하는 상기 배드 블록 영역 내의 상기 배드 블 록 정보를 읽는 단계를 포함할 수 있다.
예를 들어, 상기 메모리 장치는 플래시 메모리 장치에 상응할 수 있다.
상기 다른 목적을 달성하기 위하여 본 발명의 메모리 장치의 배드 블록 주소를 번역하는 방법은 논리적 메모리 주소를 기초로 얻은 물리적 메모리 주소에 상응하는 메모리 블록이 배드 블록인지 여부를 나타내는 배드 블록 정보를 포함하는 배드 블록 비트맵으로부터 상기 물리적 메모리 주소에 상응하는 배드 블록 정보(bad block information)를 얻는 단계 및 상기 배드 블록 정보가 배드 표시(bad indication)를 나타내는 경우에는 상기 물리적 메모리 주소를 기초로 리맵 테이블(remap table)을 검색하여 예약된 물리적 메모리 주소(reserved physical memory address)를 출력하는 단계를 포함한다.
또한, 상기 방법은 상기 배드 블록 정보가 배드 표시를 나타내지 않는 경우에는 상기 물리적 메모리 주소를 출력하는 단계를 더 포함할 수 있다.
상기 배드 블록 정보를 얻는 단계는 어플리케이션(application)으로부터 상기 논리적 메모리 주소를 입력받는 단계, 상기 입력받은 논리적 메모리 주소를 기초로 상기 블록 매핑 테이블로부터 상기 물리적 메모리 주소를 얻는 단계 및 상기 얻은 물리적 주소를 기초로 상기 배드 블록 비트맵으로부터 상기 배드 블록 정보를 얻는 단계를 포함할 수 있다.
상기 예약된 물리적 메모리 주소를 출력하는 단계는 상기 얻은 물리적 메모리 주소를 기초로 리맵 테이블(remap table)을 검색하는 단계 및 상기 물리적 메모리 주소에 상응하는 상기 예약된 물리적 메모리 주소를 출력하는 단계를 포함할 수 있다.
상기 리맵 테이블을 검색하는 단계는 상기 물리적 메모리 주소를 메모리 주소 연산의 처리 단위를 나타내는 N으로 나눈 몫에 상응하는 상기 배드 블록 비트맵 내의 상기 배드 블록 영역을 읽는 단계 및 상기 물리적 메모리 주소를 상기 N으로 나눈 나머지에 상응하는 상기 배드 블록 영역 내의 상기 배드 블록 정보를 읽는 단계를 포함할 수 있다.
예를 들어, 상기 메모리 장치는 플래시 메모리 장치에 상응할 수 있다.
상기 또 다른 목적을 달성하기 위하여 본 발명의 메모리 장치의 접근을 제어하는 장치는 논리적 메모리 주소에 상응하는 메모리 블록이 배드 블록인지 여부를 나타내는 배드 블록 정보를 포함하는 배드 블록 비트맵으로부터 상기 논리적 메모리 주소에 상응하는 상기 배드 블록 정보(bad block information)를 얻는 배드 블록 비트맵 참조부(bad block bitmap referencing unit) 및 상기 배드 블록 정보가 배드 표시(bad indication)를 나타내는 경우에는 블록 매핑 테이블에서 상기 논리적 메모리 주소에 상응하는 물리적 메모리 주소를 얻고, 상기 얻은 물리적 메모리 주소를 기초로 리맵 테이블(remap table)을 검색하여 예약된 물리적 메모리 주소(reserved physical memory address)를 출력하는 메모리 매핑부(memory mapping unit)를 포함한다.
상기 메모리 매핑부는 상기 배드 블록 정보가 배드 표시를 나타내지 않는 경우에는 상기 블록 매핑 테이블로부터 상기 논리적 메모리 주소에 상응하는 상기 물리적 메모리 주소를 출력할 수 있다.
상기 메모리 매핑부는 어플리케이션으로부터 발생된 상기 논리적 메모리 주소를 얻고, 상기 논리적 메모리 주소를 기초로 상기 블록 매핑 테이블로부터 상기 물리적 메모리 주소를 얻으며(obtain), 상기 얻은 물리적 메모리 주소를 기초로 상기 리맵 테이블을 검색하여 상기 얻은 물리적 메모리 주소에 상응하는 상기 예약된 물리적 메모리 주소를 출력할 수 있다.
상기 배드 블록 비트맵 참조부는 어플리케이션(application)으로부터 발생된 상기 논리적 메모리 주소를 입력받고, 상기 입력받은 논리적 메모리 주소에 상응하는 상기 배드 블록 비트맵 내의 배드 블록 영역을 읽으며, 상기 읽은 배드 블록 영역으로부터 상기 입력받은 논리적 메모리 주소에 상응하는 상기 배드 블록 정보를 읽을 수 있다.
상기 배드 블록 비트맵 참조부는 상기 입력받은 논리적 메모리 주소를 메모리 주소 연산의 처리 단위를 나타내는 N으로 나눈 몫에 상응하는 상기 배드 블록 비트맵 내의 상기 배드 블록 영역을 읽고, 상기 입력받은 논리적 메모리 주소를 상기 N으로 나눈 나머지에 상응하는 상기 배드 블록 영역 내의 상기 배드 블록 정보를 읽을 수 있다.
예를 들어, 상기 메모리 장치는 플래시 메모리 장치에 상응할 수 있다.
상기 또 다른 목적을 달성하기 위하여 본 발명의 메모리 장치의 접근을 제어하는 장치는 논리적 메모리 주소를 기초로 얻은 물리적 메모리 주소에 상응하는 메모리 블록이 배드 블록인지 여부를 나타내는 배드 블록 정보를 포함하는 배드 블록 비트맵으로부터 상기 물리적 메모리 주소에 상응하는 배드 블록 정보(bad block information)를 얻는 배드 블록 비트맵 참조부(bad block bitmap referencing unit) 및 상기 논리적 메모리 주소에 상응하는 상기 물리적 메모리 주소를 얻고, 상기 얻은 물리적 메모리 주소에 상응하는 배드 블록 정보가 배드 표시(bad indication)를 나타내는 경우에는 상기 물리적 메모리 주소를 기초로 리맵 테이블(remap table)을 검색하여 예약된 물리적 메모리 주소(reserved physical memory address)를 출력한다.
상기 메모리 매핑부는 상기 배드 블록 정보가 배드 표시를 나타내지 않는 경우에는 상기 물리적 메모리 주소를 출력할 수 있다.
상기 메모리 매핑부는 어플리케이션(application)으로부터 상기 논리적 메모리 주소를 입력받고, 상기 입력받은 논리적 메모리 주소를 기초로 상기 블록 매핑 테이블로부터 상기 물리적 메모리 주소를 얻고, 상기 배드 블록 비트맵 참조부는 상기 얻은 물리적 주소를 기초로 상기 배드 블록 비트맵으로부터 상기 배드 블록 정보를 얻을 수 있다.
상기 메모리 매핑부는 상기 얻은 물리적 메모리 주소에 상응하는 상기 배드 블록 정보가 배드 표시를 나타내는 경우에는 상기 얻은 물리적 메모리 주소를 기초로 리맵 테이블(remap table)을 검색하고, 상기 물리적 메모리 주소에 상응하는 상기 예약된 물리적 메모리 주소를 출력할 수 있다.
상기 배드 블록 비트맵 참조부는 상기 얻은 물리적 메모리 주소를 메모리 주소 연산의 처리 단위를 나타내는 N으로 나눈 몫에 상응하는 상기 배드 블록 비트맵 내의 상기 배드 블록 영역을 읽고, 상기 얻은 물리적 메모리 주소를 상기 N으로 나 눈 나머지에 상응하는 상기 배드 블록 영역 내의 상기 배드 블록 정보를 읽을 수 있다.
예를 들어, 상기 메모리 장치는 플래시 메모리 장치에 상응할 수 있다.
상기 또 다른 목적을 달성하기 위하여 본 발명의 메모리 장치 컨트롤러는 플래시 번역 레이어(FTL, flash translation layer)를 포함하고, 상기 플래시 번역 레이어는 논리적 메모리 주소에 상응하는 메모리 블록이 배드 블록인지 여부를 나타내는 배드 블록 정보를 포함하는 배드 블록 비트맵으로부터 상기 논리적 메모리 주소에 상응하는 배드 블록 정보(bad block information)를 얻는 배드 블록 비트맵 참조부(bad block bitmap referencing unit) 및 상기 배드 블록 정보가 배드 표시(bad indication)를 나타내는 경우에는 블록 매핑 테이블에서 상기 논리적 메모리 주소에 상응하는 물리적 메모리 주소를 얻고, 상기 얻은 물리적 메모리 주소를 기초로 리맵 테이블(remap table)을 검색하여 예약된 물리적 메모리 주소(reserved physical memory address)를 출력하는 메모리 매핑부(memory mapping unit)를 포함한다.
상기 메모리 매핑부는 상기 배드 블록 정보가 배드 표시를 나타내지 않는 경우에는 상기 블록 매핑 테이블로부터 상기 논리적 메모리 주소에 상응하는 상기 물리적 메모리 주소를 출력할 수 있다.
상기 메모리 매핑부는 어플리케이션으로부터 발생된 상기 논리적 메모리 주소를 얻고, 상기 논리적 메모리 주소를 기초로 상기 블록 매핑 테이블로부터 상기 물리적 메모리 주소를 얻으며(obtain), 상기 얻은 물리적 메모리 주소를 기초로 상 기 리맵 테이블을 검색하여 상기 얻은 물리적 메모리 주소에 상응하는 상기 매핑된 물리적 메모리 주소를 출력할 수 있다.
상기 배드 블록 비트맵 참조부는 어플리케이션(application)으로부터 상기 논리적 메모리 주소를 입력받고, 상기 입력받은 논리적 메모리 주소에 상응하는 상기 배드 블록 비트맵 내의 배드 블록 영역을 읽으며, 상기 읽은 배드 블록 영역으로부터 상기 입력받은 논리적 메모리 주소에 상응하는 상기 배드 블록 정보를 읽을 수 있다.
상기 배드 블록 비트맵 참조부는 상기 입력받은 논리적 메모리 주소를 메모리 주소 연산의 처리 단위를 나타내는 N으로 나눈 몫에 상응하는 상기 배드 블록 비트맵 내의 상기 배드 블록 영역을 읽고, 상기 입력받은 논리적 메모리 주소를 상기 N으로 나눈 나머지에 상응하는 상기 배드 블록 영역 내의 상기 배드 블록 정보를 읽을 수 있다.
예를 들어, 상기 메모리 장치 컨트롤러는 플래시 메모리 장치 컨트롤러에 상응할 수 있다.
상기 또 다른 목적을 달성하기 위하여 본 발명의 메모리 장치 컨트롤러는 플래시 번역 레이어(FTL, flash translation layer)를 포함하고, 상기 플래시 번역 레이어는 논리적 메모리 주소를 기초로 얻은 물리적 메모리 주소에 상응하는 메모리 블록이 배드 블록인지 여부를 나타내는 배드 블록 정보를 포함하는 배드 블록 비트맵으로부터 상기 물리적 메모리 주소에 상응하는 배드 블록 정보(bad block information)를 얻는 배드 블록 비트맵 참조부(bad block referencing unit) 및 상 기 논리적 메모리 주소에 상응하는 상기 물리적 메모리 주소를 얻고, 상기 얻은 물리적 메모리 주소에 상응하는 배드 블록 정보가 배드 표시(bad indication)를 나타내는 경우에는 상기 물리적 메모리 주소를 기초로 리맵 테이블(remap table)을 검색하여 예약된 물리적 메모리 주소(reserved physical memory address)를 출력하는 메모리 매핑부를 포함한다.
상기 메모리 매핑부는 상기 배드 블록 정보가 배드 표시를 나타내지 않는 경우에는 상기 물리적 메모리 주소를 출력할 수 있다.
상기 메모리 매핑부는 어플리케이션(application)으로부터 상기 논리적 메모리 주소를 입력받고, 상기 입력받은 논리적 메모리 주소를 기초로 상기 블록 매핑 테이블로부터 상기 물리적 메모리 주소를 얻고, 상기 배드 블록 비트맵 참조부는 상기 얻은 물리적 주소를 기초로 상기 배드 블록 비트맵으로부터 상기 배드 블록 정보를 얻을 수 있다.
상기 메모리 매핑부는 상기 얻은 물리적 메모리 주소에 상응하는 상기 배드 블록 정보가 배드 표시를 나타내는 경우에는 상기 얻은 물리적 메모리 주소를 기초로 리맵 테이블(remap table)을 검색하고, 상기 물리적 메모리 주소에 상응하는 상기 예약된 물리적 메모리 주소를 출력할 수 있다.
상기 배드 블록 비트맵 참조부는 상기 얻은 물리적 메모리 주소를 메모리 주소 연산의 처리 단위를 나타내는 N으로 나눈 몫에 상응하는 상기 배드 블록 비트맵 내의 상기 배드 블록 영역을 읽고, 상기 얻은 물리적 메모리 주소를 상기 N으로 나눈 나머지에 상응하는 상기 배드 블록 영역 내의 상기 배드 블록 정보를 읽을 수 있다.
예를 들어, 상기 메모리 장치 컨트롤러는 플래시 메모리 장치 컨트롤러에 상응할 수 있다.
따라서 본 발명에서는 메모리 블록이 배드 블록인지 여부를 나타내는 배드 블록 정보를 포함하는 배드 블록 비트맵을 이용하여 배드 블록 주소를 빠르게 번역할 수 있다. 또한, 본 발명에서는 배드 블록 비트맵을 이용하여 배드 블록을 효율적으로 관리할 수 있다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일 치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
한편, 어떤 실시예가 달리 구현 가능한 경우에 특정 블록 내에 명기된 기능 또는 동작이 순서도에 명기된 순서와 다르게 일어날 수도 있다. 예를 들어, 연속하는 두 블록이 실제로는 실질적으로 동시에 수행될 수도 있고, 관련된 기능 또는 동작에 따라서는 상기 블록들이 거꾸로 수행될 수도 있다.
이하 본 발명의 실시예들을 도면과 함께 설명하고자 한다.
도 1은 플래시 메모리 장치의 동작을 설명하기 위한 도면이다.
도 1을 참조하면, 플래시 메모리 장치 컨트롤러(120)는 파일 시스템(122) 및 플래시 번역 레이어(FTL, Flash Translation Layer)(124)를 포함한다.
파일 시스템(122)은 어플리케이션(110)이 플래시 메모리 장치(130)에 데이터를 쓸 수 있도록 일반적인 파일 시스템을 제공한다. 즉, 파일 시스템(122)은 어플리케이션(110)에 의하여 발생된 데이터를 메모리 장치의 종류에 무관하게(independent) 쓸 수 있는 인터페이스를 제공한다.
플래시 번역 레이어(124)는 파일 시스템(122)이 플래시 메모리 장치(130)에 데이터를 쓸 수 있도록 플래시 메모리 장치(130)에 대한 인터페이스를 제공한다. 플래시 번역 레이어(124)의 동작 방식은 후술한다.
도 2는 본 발명의 일 실시예에 따른 메모리 장치의 접근을 제어하는 장치를 나타내는 블록도이다.
도 2를 참조하면, 메모리 장치의 접근을 제어하는 장치(210)는 플래시 번역 레이어(124)에 포함될 수 있고, 배드 블록 비트맵 참조부(bad block bitmap referencing unit)(212) 및 메모리 매핑부(memory mapping unit)(214)를 포함한다.
배드 블록 비트맵 참조부(212)는 논리적 메모리 주소에 상응하는 메모리 블록이 배드 블록인지 여부를 나타내는 배드 블록 정보(bad block information)를 포함하는 배드 블록 비트맵(bad block bitmap)(222)으로부터 논리적 메모리 주소에 상응하는 배드 블록 정보를 얻는다. 예를 들어, 메모리 블록은 지우기 연산의 대상인 데이터 블록에 상응할 수 있고, 읽기 및 쓰기 연산의 대상인 페이지에 상응할 수도 있다.
배드 블록 비트맵 참조부(212)는 어플리케이션(application)으로부터 발생된 논리적 메모리 주소를 입력받고, 입력받은 논리적 메모리 주소에 상응하는 배드 블록 비트맵(222) 내의 배드 블록 영역을 읽으며, 읽은 배드 블록 영역으로부터 상기 입력받은 논리적 메모리 주소에 상응하는 상기 배드 블록 정보를 읽는다. 예를 들어, 배드 블록 비트맵 참조부(212)는 입력받은 논리적 메모리 주소를 메모리 주소 연산의 처리 단위를 나타내는 N으로 나눈 몫에 상응하는 배드 블록 비트맵(212) 내의 배드 블록 영역을 읽을 수 있고, 입력받은 논리적 메모리 주소를 N으로 나눈 나머지에 상응하는 배드 블록 영역 내의 배드 블록 정보를 읽을 수 있다.
메모리 매핑부(214)는 배드 블록 정보가 배드 표시(bad indication)를 나타내지 않는 경우에는 블록 매핑 테이블(224)로부터 논리적 메모리 주소에 상응하는 물리적 메모리 주소를 출력한다. 즉, 메모리 매핑부(214)는 블록 매핑 테이블(224)을 참조하여 논리적 메모리 주소를 물리적 메모리 주소로 직접 매핑한다.
메모리 매핑부(214)는 배드 블록 정보가 배드 표시(bad indication)를 나타내는 경우에는 블록 매핑 테이블(224)로부터 논리적 메모리 주소에 상응하는 물리적 메모리 주소를 얻고, 얻은 물리적 메모리 주소를 기초로 리맵 테이블(remap table)(226)을 검색하여 예약된 물리적 메모리 주소(reserved physical memory address)를 출력한다. 예를 들어, 메모리 매핑부(214)는 어플리케이션(110)으로부터 발생된 논리적 메모리 주소를 얻을 수 있다.
이하, 도 3 및 도 4를 참조하여 메모리 장치의 접근을 제어하는 장치(210)의 동작을 설명하기로 한다.
도 3은 메모리 장치의 접근을 제어하는 장치(210)의 동작을 나타내기 위한 플로우차트이고, 도 4는 메모리 장치의 접근을 제어하는 장치(210)의 동작을 설명하기 위한 도면이다.
메모리 장치의 접근을 제어하는 장치(210)는 어플리케이션(110)이 읽기, 쓰기 및 지우기 연산을 수행할 때 발생하는 논리적 메모리 주소를 입력받는다(단계 S310). 예를 들어, 논리적 메모리 주소는 도 4에 도시된 제1 논리적 메모리 주소(410) 또는 제2 논리적 메모리 주소(420)일 수 있다.
배드 블록 비트맵 참조부(212)는 배드 블록 비트맵(222)으로부터 논리적 메모리 주소에 상응하는 배드 블록 정보(bad block information)를 얻는다(단계 S320). 예를 들어, 제1 논리적 메모리 주소(410)는 0에 상응하므로, 배드 블록 비트맵 참조부(212)는 배드 블록 비트맵(222)의 0 번째 비트를 얻을 수 있다. 또한, 제2 논리적 메모리 주소(420)는 3에 상응하므로, 배드 블록 비트맵 참조부(212)는 배드 블록 비트맵(222)의 세 번째 비트를 얻을 수 있다.
메모리 매핑부(214)는 배드 블록 정보가 배드 표시(bad indication)를 나타내는지 여부를 조사한다(단계 S330). 예를 들어, 배드 블록 정보가 배드 표시(bad indication)를 나타내는 경우에는 제1 논리적 메모리 주소(410)처럼 배드 블록 정보가 비트 '1'에 상응할 수 있고, 배드 블록 정보가 배드 표시(bad indication)를 나타내지 않는 경우에는 제2 논리적 메모리 주소(420)처럼 배드 블록 정보가 비트 '0'에 상응할 수 있다.
메모리 매핑부(214)는 배드 블록 정보가 배드 표시(bad indication)를 나타내는 경우에는 블록 매핑 테이블(224)에서 논리적 메모리 주소에 상응하는 물리적 메모리 주소를 얻는다(단계 S340). 예를 들어, 제2 논리적 메모리 주소(420)는 논리적 메모리 주소가 3에 상응하므로, 메모리 매핑부(214)는 메모리 매핑 테이블(224)로부터 100에 상응하는 물리적 메모리 주소를 얻을 수 있다.
메모리 매핑부(214)는 메모리 매핑 테이블(224)로부터 얻은 물리적 메모리 주소를 기초로 리맵 테이블(226)을 검색한다(단계 S350). 예를 들어, 제2 논리적 메모리 주소(420)의 물리적 메모리 주소는 100에 상응하므로, 메모리 매핑부(214)는 리맵 테이블(226)로부터 100에 상응하는 물리적 메모리 주소를 검색할 수 있다.
메모리 매핑부(214)는 리맵 테이블(226)로부터 검색된 예약된 물리적 메모리 주소(reserved physical memory address)를 출력한다(단계 S360). 예를 들어, 제2 논리적 메모리 주소(420)의 예약된 물리적 메모리 주소는 20에 상응하므로, 메모리 매핑부(214)는 20에 상응하는 예약된 물리적 메모리 주소(440)를 출력할 수 있다.
메모리 매핑부(214)는 배드 블록 정보가 배드 표시(bad indication)를 나타내지 않는 경우에는 블록 매핑 테이블(224)에서 논리적 메모리 주소에 상응하는 물리적 메모리 주소를 출력한다(단계 S370). 예를 들어, 제1 논리적 메모리 주소(410)는 논리적 메모리 주소가 0에 상응하므로, 메모리 매핑부(214)는 메모리 매핑 테이블(224)로부터 80에 상응하는 물리적 메모리 주소(430)를 출력할 수 있다.
도 5A는 플래시 메모리 장치 컨트롤러에 의한 쓰기 연산의 성능을 나타내는 그래프이고, 도 5B는 플래시 메모리 장치 컨트롤러에 의한 읽기 연산의 성능을 나타내는 그래프이다.
도 5A 및 도 5B에서, 배드 블록 비트맵을 사용하지 않는 시스템과 비교할 경우 쓰기 연산의 성능은 약 6 % 상승하였고, 읽기 연산의 성능은 약 15 % 상승하였다.
도 6은 본 발명의 다른 일 실시예에 따른 메모리 장치의 접근을 제어하는 장치를 나타내는 블록도이다.
도 6을 참조하면, 메모리 장치의 접근을 제어하는 장치(610)는 플래시 번역 레이어(124)에 포함될 수 있고, 메모리 매핑부(memory mapping unit)(612) 및 배드 블록 비트맵 참조부(bad block bitmap referencing unit)(614)를 포함한다.
배드 블록 비트맵 참조부(614)는 논리적 메모리 주소를 기초로 얻은 물리적 메모리 주소에 상응하는 메모리 블록이 배드 블록인지 여부를 나타내는 배드 블록 정보를 포함하는 배드 블록 비트맵(222)으로부터 물리적 메모리 주소에 상응하는 배드 블록 정보(bad block information)를 얻는다.
예를 들어, 배드 블록 비트맵 참조부(614)는 입력받은 논리적 메모리 주소를 메모리 주소 연산의 처리 단위를 나타내는 N으로 나눈 몫에 상응하는 배드 블록 비트맵 내의 배드 블록 영역을 읽을 수 있고, 입력받은 논리적 메모리 주소를 상기 N으로 나눈 나머지에 상응하는 배드 블록 영역 내의 배드 블록 정보를 읽을 수 있다.
메모리 매핑부(612)는 논리적 메모리 주소에 상응하는 물리적 메모리 주소를 얻고, 얻은 물리적 메모리 주소에 상응하는 배드 블록 정보가 배드 표시(bad indication)를 나타내는 경우에는 물리적 메모리 주소를 기초로 리맵 테이블(remap table)(226)을 검색하여 예약된 물리적 메모리 주소(reserved physical memory address)를 출력한다.
메모리 매핑부(612)는 배드 블록 정보가 배드 표시를 나타내지 않는 경우에는 물리적 메모리 주소를 출력한다.
즉, 메모리 매핑부(612)는 어플리케이션(application)으로부터 논리적 메모리 주소를 입력받고, 입력받은 논리적 메모리 주소를 기초로 블록 매핑 테이블(224)로부터 물리적 메모리 주소를 얻은 후, 배드 블록 비트맵 참조부(614)는 상기 얻은 물리적 주소를 기초로 상기 배드 블록 비트맵으로부터 상기 배드 블록 정보를 얻는다.
메모리 매핑부(612)는 얻은 물리적 메모리 주소에 상응하는 배드 블록 정보가 배드 표시를 나타내는 경우에는 얻은 물리적 메모리 주소를 기초로 리맵 테이블(226)을 검색하고, 물리적 메모리 주소에 상응하는 예약된 물리적 메모리 주소를 출력한다.
이하, 도 7 및 도 8을 참조하여 메모리 장치의 접근을 제어하는 장치(610)의 동작을 설명하기로 한다.
도 7은 메모리 장치의 접근을 제어하는 장치(210)의 동작을 나타내기 위한 플로우차트이고, 도 8은 메모리 장치의 접근을 제어하는 장치(210)의 동작을 설명하기 위한 도면이다.
메모리 장치의 접근을 제어하는 장치(610)는 어플리케이션(110)이 읽기, 쓰기 및 지우기 연산을 수행할 때 발생하는 논리적 메모리 주소를 입력받는다(단계 S710). 예를 들어, 논리적 메모리 주소는 도 8에 도시된 제3 논리적 메모리 주소(810) 또는 제4 논리적 메모리 주소(820)일 수 있다.
메모리 매핑부(612)는 입력받은 논리적 메모리 주소를 기초로 블록 매핑 테이블(224)로부터 물리적 메모리 주소를 얻는다(단계 S720). 예를 들어, 제3 논리적 메모리 주소(810)는 0에 상응하므로, 메모리 매핑부(612)는 80에 상응하는 물리적 메모리 주소를 얻을 수 있다. 또한, 제4 논리적 메모리 주소(820)는 3에 상응하므로, 메모리 매핑부(612)는 100에 상응하는 물리적 메모리 주소를 얻을 수 있다.
배드 블록 비트맵 참조부(614)는 얻은 물리적 주소를 기초로 배드 블록 비트맵(222)으로부터 배드 블록 정보를 얻는다(단계 S730). 예를 들어, 제3 논리적 메모리 주소(810)에 상응하는 물리적 메모리 주소는 80에 상응하므로, 배드 블록 비트맵 참조부(614)는 배드 블록 비트맵(222)의 80번째 비트를 얻을 수 있다. 또한, 제4 논리적 메모리 주소(820)에 상응하는 물리적 메모리 주소는 100에 상응하므로, 배드 블록 비트맵 참조부(614)는 배드 블록 비트맵(222)의 100번째 비트를 얻을 수 있다.
메모리 매핑부(612)는 배드 블록 정보가 배드 표시(bad indication)를 나타내는지 여부를 조사한다(단계 S740). 예를 들어, 배드 블록 정보가 배드 표시(bad indication)를 나타내는 경우에는 제3 논리적 메모리 주소(810)처럼 배드 블록 정보가 비트 '1'에 상응할 수 있고, 배드 블록 정보가 배드 표시(bad indication)를 나타내지 않는 경우에는 제4 논리적 메모리 주소(820)처럼 배드 블록 정보가 비트 '0'에 상응할 수 있다.
메모리 매핑부(612)는 얻은 물리적 메모리 주소를 기초로 리맵 테이블(226)을 검색한다(단계 S750). 예를 들어, 제4 논리적 메모리 주소(820)의 물리적 메모리 주소는 100에 상응하므로, 메모리 매핑부(612)는 리맵 테이블(226)로부터 100에 상응하는 물리적 메모리 주소를 검색할 수 있다.
메모리 매핑부(612)는 물리적 메모리 주소에 상응하는 예약된 물리적 메모리 주소를 출력한다(단계 S760). 예를 들어, 제4 논리적 메모리 주소(820)의 예약된 물리적 메모리 주소는 20에 상응하므로, 메모리 매핑부(612)는 20에 상응하는 예약된 물리적 메모리 주소(840)를 출력할 수 있다.
메모리 매핑부(612)는 배드 블록 정보가 배드 표시(bad indication)를 나타나지 않는 경우에는 입력받은 논리적 메모리 주소에 상응하는 물리적 메모리 주소를 출력한다(단계 S770). 예를 들어, 제3 논리적 메모리 주소(810)는 논리적 메모리 주소가 0에 상응하므로, 메모리 매핑부(612)는 메모리 매핑 테이블(224)로부터 80에 상응하는 물리적 메모리 주소(830)를 출력할 수 있다.