KR20100116396A - 컨트롤러, 이를 포함하는 데이터 저장 장치 및 데이터 저장 시스템, 및 그 방법 - Google Patents

컨트롤러, 이를 포함하는 데이터 저장 장치 및 데이터 저장 시스템, 및 그 방법 Download PDF

Info

Publication number
KR20100116396A
KR20100116396A KR20090035077A KR20090035077A KR20100116396A KR 20100116396 A KR20100116396 A KR 20100116396A KR 20090035077 A KR20090035077 A KR 20090035077A KR 20090035077 A KR20090035077 A KR 20090035077A KR 20100116396 A KR20100116396 A KR 20100116396A
Authority
KR
South Korea
Prior art keywords
address
cpus
address translation
bad block
controller
Prior art date
Application number
KR20090035077A
Other languages
English (en)
Other versions
KR101516580B1 (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 삼성전자주식회사
Priority to KR1020090035077A priority Critical patent/KR101516580B1/ko
Priority to US12/763,616 priority patent/US8700881B2/en
Publication of KR20100116396A publication Critical patent/KR20100116396A/ko
Priority to US14/207,974 priority patent/US9135167B2/en
Application granted granted Critical
Publication of KR101516580B1 publication Critical patent/KR101516580B1/ko

Links

Images

Classifications

    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/10Program control for peripheral devices
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

컨트롤러, 이를 포함하는 데이터 저장 장치 및 데이터 저장 시스템과 그 방법이 제공된다. 본 발명의 실시예에 따른 컨트롤러는 다채널 병렬 어레이 구조에서 다수 개의 로지컬-피지컬 어드레스 변환용 CPU들을 포함함으로써 다수의 명령어들을 병렬적으로 처리할 수 있고, 따라서 반도체 메모리 시스템의 성능을 향상시킬 수가 있다.

Description

컨트롤러, 이를 포함하는 데이터 저장 장치 및 데이터 저장 시스템, 및 그 방법{Controller, data storage device and data storage system having the same, and method thereof}
본 발명에 따른 실시예는 저장 장치에 관한 것으로서, 보다 구체적으로 다채널 병렬 어레이 구조에서 다수 개의 로지컬-피지컬 어드레스 변환용 CPU들을 포함함으로써 다수의 명령어들을 병렬적으로 처리함으로써 반도체 메모리 시스템의 성능을 향상시킬 수 있는 컨트롤러, 이를 포함하는 데이터 저장 장치 및 데이터 저장 시스템과 그 방법에 관한 것이다.
불휘발성 메모리 장치(NVM; non-volatile memory)는 드라이브 전원이 공급되지 않아도 셀에 기록된 데이터가 소멸되지 않고 유지된다. 불휘발성 메모리들 중에서도 플래시 메모리(flash memory)는 전기적으로 셀의 데이터를 일괄적으로 소거할 수 있는 기능을 갖기 때문에 컴퓨터 및 메모리 카드 등에 널리 사용되고 있다. 최근에는, 휴대 전화(cellular phone), PDA(portable digital assistance), 디지털 카메라 등과 같은 휴대용 정보기기의 사용이 급격하게 증가함에 따라, 하드 디스크를 대신하여 상기 플래시 메모리가 저장 장치로서 널리 사용되고 있다.
플래시 메모리는 셀과 비트 라인의 연결 상태에 따라 NOR형과 NAND형으로 구분될 수 있다. NOR형 플래시 메모리는 리드 속도가 빠르지만 라이트 속도가 느리기 때문에 주로 코드용 메모리로 사용될 수 있다. NAND형 플래시 메모리는 라이트 속도가 빠르고 단위 면적당 단가가 낮기 때문에 주로 대용량 저장 장치로서 사용된다.
플래시 메모리는 다른 메모리 소자와 비교하여, 비교적 낮은 단가로 빠른 리드 속도를 제공할 수 있는 이점이 있다. 하지만, 플래시 메모리에 데이터를 라이트하기 위해서는 이레이즈 연산이 반드시 선행되어야 하며 라이트되는 데이터의 단위보다 이레이즈되는 데이터의 단위가 더 크다. 이러한 특징은 플래시 메모리를 주 메모리로서 사용하는 것을 어렵게 할 뿐만 아니라, 플래시 메모리가 보조 기억 장치로 사용되는 경우에도 일반 하드 디스크용 파일 시스템(file system)을 그대로 활용하는 것을 저해하는 요인이 될 수 있다. 따라서, 플래시 메모리의 삭제 연산을 감추기 위해, 파일 시스템과 플래시 메모리 사이에 플래시 변환 계층(FTL; flash translation layer)이 사용될 수 있다.
종래에는, NCQ(native command queue)와 같은 호스트 커맨드 큐(host command queue)에 대해 다채널 병렬 어레이 구조를 갖는 솔리드 스테이트 드라이브 컨트롤러의 특성을 활용하지 못하여, 반도체 메모리 장치가 높은 성능을 구현하지 못하였다.
즉, 종래의 솔리드 스테이트 드라이브 컨트롤러는 하나의 플래시 변환 계층(FTL)만을 포함하여 다중 채널 병렬 어레이 구조에 대응하는 채널들을 모두 담당 하였기 때문에, NCQ 환경에서 다수 개의 명령어를 동시에 처리할 경우에 상기 플래시 변환 계층(FTL)의 처리가 반도체 메모리 장치의 성능을 제약하는 주요 원인이 되어 왔다.
따라서, 본 발명은 상기의 문제점을 해결하고자 안출된 것으로서 본 발명에 따른 실시예는 NCQ와 같은 명령어들을 병렬적으로 처리함으로써 데이터 처리 속도를 향상시킬 수 있는 솔리드 스테이트 드라이브 컨트롤러, 이를 포함하는 데이터 저장 장치, 및 데이터 저장 시스템과 그 방법을 제공하는 것이다.
상기의 기술적 과제를 해결하기 위한 컨트롤러는, 다수의 채널들을 포함하는 불휘발성 메모리 장치를 제어하기 위한 컨트롤러에 있어서, 각각이 호스트로부터 출력되는 명령어에 응답하여 상기 다수의 채널들 중에서 적어도 하나의 채널에 대한 로지컬-피지컬 어드레스 변환을 수행하는 다수의 어드레스 변환용 CPU들; 및 각각이, 상기 다수의 어드레스 변환용 CPU들 중에서 적어도 하나의 어드레스 변환용 CPU에서 출력된 제어신호에 응답하여 상기 다수의 채널들 중에서 적어도 하나의 채널에 대한 액세스 동작을 제어하기 위한 다수의 플래시 메모리 컨트롤러들을 포함할 수 있다.
상기 다수의 어드레스 변환용 CPU들 각각은, 서로 중첩되지 않는 채널에 대해 상기 로지컬-피지컬 어드레스 변환을 병렬적으로 수행할 수 있다.
상기 다수의 어드레스 변환용 CPU들 각각은, 상기 호스트로부터 출력된 로지컬 어드레스를 피지컬 어드레스로 변환하기 위한 어드레스 변환부; 상기 불휘발성 메모리 장치에 대해 웨어 레벨링 동작을 수행하고, 수행된 웨어 레벨링 정보를 상 기 어드레스 변환부에 전송하기 위한 웨어 레벨링부; 및 상기 불휘발성 메모리 장치에 포함된 배드 블록을 관리하여 배드 블록 정보를 상기 어드레스 변환부에 전송하기 위한 배드 블록 관리부를 포함할 수 있다.
상기 배드 블록 관리부는, 배드 블록 매핑 테이블이 저장된 배드 블록 매핑 레지스터; 상기 불휘발성 메모리 장치에 저장된 배드 블록 정보를 상기 배드 블록 매핑 레지스터로 로딩하기 위한 배드 블록 매핑 로딩부; 및 상기 배드 블록 매핑 레지스터에 저장된 리매핑 마크의 개수에 기초하여 리매핑 마크 플래그를 생성하고 생성된 상기 리매핑 마크 플래그를 상기 어드레스 변환부에 전송하기 위한 배드 블록 상태 제어부를 포함할 수 있다.
상기 배드 블록 상태 제어부는 상기 배드 블록 매핑 레지스터에 저장된 상기 리매핑 마크의 개수가 1 이상이면 하이 레벨로 설정된 상기 리매핑 마크 플래그를 출력하고, 상기 어드레스 변환부는 상기 하이 레벨로 설정된 상기 리매핑 마크 플래그에 응답하여 피지컬 어드레스로서 프리 블록 어드레스를 선택할 수 있다.
상기 웨어 레벨링부는, 상기 불휘발성 메모리 장치에 포함된 블록들의 소거 카운트 정보를 순차적으로 스캔하고, 상기 소거 카운트 정보를 상기 어드레스 변환부로 전송할 수 있다.
상기 어드레스 변환부는, 수신된 상기 소거 카운트 정보에 기초하여 소거 카운트가 상대적으로 작은 블록으로 상기 피지컬 어드레스를 선택할 수 있다.
상기 컨트롤러는, 상기 호스트로부터 출력된 상기 명령어를 처리하기 위한 호스트 CPU를 더 포함하고, 상기 호스트 CPU는 상기 명령어의 우선 순위를 결정하 고 결정된 우선 순위에 따라 상기 명령어를 상기 다수의 어드레스 변환용 CPU들로 분배할 수 있다.
상기 컨트롤러는, 상기 호스트 CPU 및 상기 다수의 어드레스 변환용 CPU 간의 통신을 제어하기 위한 IPC(inter processor communication) 모듈을 더 포함할 수 있다.
상기 다수의 플래시 메모리 컨트롤러들 각각은, 상기 불휘발성 메모리 장치의 적어도 일부에 대해서 에러 정정 코딩 동작을 수행하기 위한 에러 정정 코딩부를 포함할 수 있다.
상기 컨트롤러는, 로지컬 어드레스와 피지컬 어드레스 간의 매핑 정보가 기록된 매핑 테이블을 포함하는 버퍼; 및 상기 다수의 어드레스 변환용 CPU들이 상기 버퍼로의 액세스 경로를 제공하기 위한 버스 매트릭스를 더 포함할 수 있다.
상기 다수의 어드레스 변환용 CPU들 각각은, 시분할(time-sharing) 방식에 기초하여 상기 버스 매트릭스를 통해 상기 버퍼로 액세스할 수 있다.
상기 컨트롤러는, 상기 다수의 어드레스 변환용 CPU들 각각의 동작이 수행되도록 하는 명령어들이 저장되는 명령어 메모리 블록을 더 포함하고, 상기 명령어 메모리 블록은 상기 다수의 어드레스 변환용 CPU들 간에 공유될 수 있다.
상기의 기술적 과제를 해결하기 위한 데이터 저장 장치는, 다수의 채널들을 포함하는 불휘발성 메모리 장치; 플래시 변환 계층(FTL; flash translation layer)을 구비하여 로지컬-피지컬 어드레스 변환을 수행하고, 상기 불휘발성 메모리 장치를 제어하기 위한 컨트롤러; 및 상기 로지컬-피지컬 어드레스 변환을 위한 어드레 스 매핑 정보가 기록된 어드레스 매핑 테이블을 저장하는 랜덤 액세스 메모리를 포함하고, 상기 컨트롤러는, 각각이 호스트로부터 출력되는 명령어에 응답하여 상기 다수의 채널들 중에서 적어도 하나의 채널에 대한 상기 로지컬-피지컬 어드레스 변환을 수행하는 다수의 어드레스 변환용 CPU들; 및 각각이 상기 다수의 어드레스 변환용 CPU들 중에서 적어도 하나의 어드레스 변환용 CPU에서 출력된 제어신호에 응답하여, 상기 다수의 채널들 중에서 적어도 하나의 채널에 대한 액세스 동작을 제어하기 위한 다수의 플래시 메모리 컨트롤러들을 포함할 수 있다.
상기 어드레스 매핑 테이블은, 상기 다수의 어드레스 변환용 CPU들 각각이 수행하는 채널들에 대한 매핑 정보가 각각 독립적으로 구비될 수 있다.
상기의 기술적 과제를 해결하기 위한 데이터 저장 시스템은, 호스트; 및 상기 호스트로부터 출력된 명령어에 응답하여 데이터 저장 동작을 수행하기 위한 데이터 저장 장치를 포함하고, 상기 데이터 저장 장치는, 다수의 채널들을 포함하는 불휘발성 메모리 장치; 각각이 상기 다수의 채널들 중에서 적어도 하나의 채널에 대한 로지컬-피지컬 어드레스 변환 동작을 수행하는 다수의 어드레스 변환용 CPU들을 포함하는 컨트롤러; 및 상기 로지컬-피지컬 어드레스 변환을 위한 어드레스 매핑 정보가 기록된 어드레스 매핑 테이블을 저장하는 랜덤 액세스 메모리를 포함할 수 있다.
상기의 기술적 과제를 해결하기 위한 데이터 처리 방법은, 호스트 CPU가 호스트로부터 명령어를 수신하는 단계; 상기 호스트 CPU가 상기 명령어의 우선 순위를 결정하고 결정된 우선 순위에 따라 다수의 어드레스 변환용 CPU들에 상기 명령 어를 분배하는 단계; 및 상기 다수의 어드레스 변환용 CPU들 각각이 분배된 상기 명령어에 응답하여 로지컬-피지컬 어드레스 변환 동작을 수행하는 단계를 포함할 수 있다.
상기 데이터 처리 방법은, 상기 다수의 어드레스 변환용 CPU들 각각이 어드레스 매핑 테이블을 로딩하는 단계; 및 상기 다수의 어드레스 변환용 CPU들 각각이 비휘발성 메모리 장치의 웨어 레벨링 정보 또는 배드 블록 정보를 수신하는 단계; 및 상기 다수의 어드레스 변환용 CPU들 각각이 수신된 상기 웨어 레벨링 정보 또는 상기 배드 블록 정보에 기초하여 상기 로딩된 어드레스 매핑 테이블을 변경시키는 단계를 더 포함할 수 있다.
상기 다수의 어드레스 변환용 CPU들 각각이 어드레스 매핑 테이블을 로딩하는 단계는, 상기 다수의 어드레스 변환용 CPU들 각각이 시분할(time sharing) 방식에 기초하여 버스 매트릭스를 통하여 상기 어드레스 매핑 테이블에 액세스하는 단계를 포함할 수 있다.
본 발명의 실시예에 따른 솔리드 스테이트 드라이브 컨트롤러는 초당 입/출력 동작 수(IPOS)를 증가시킬 수 있다.
또한, 본 발명의 실시예에 따른 솔리드 스테이트 드라이브 컨트롤러는 NCQ와 같은 명령어를 병렬적으로 처리함으로써 반도체 메모리 시스템의 성능을 향상시킬 수 있다.
특정한 구조 내지 기능적 설명들은 단지 본 발명의 개념에 따른 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 개념에 따른 실시예들은 다양한 형태로 실시될 수 있으며 본 명세서 또는 출원에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니된다.
본 발명의 개념에 따른 실시예는 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있으므로 특정 실시예들은 도면에 예시하고 본 명세서 또는 출원에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시예들을 특정한 개시 형태에 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1 및/또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 한정되지는 않는다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소들로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성 요소는 제2 구성 요소로 명명될 수 있고, 유사하게 제2 구성 요소는 제1 구성 요소로도 명명될 수 있다.
어떠한 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떠한 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 또는 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하기 위한 다른 표현들, 즉 '∼사이에'와 '바로 ∼사이에' 또는 '∼에 이웃하는'과 '∼에 직접 이웃하는' 등의 표현도 마찬가지로 해석되어야 한다.
본 명세서에서 사용하는 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서 '포함하다' 또는 '가지다' 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전의 정의 되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명하도록 한다.
도 1은 본 발명의 실시예에 따른 데이터 저장 장치(1)의 개략적인 블록도이다. 본 발명의 실시예에 따른 데이터 저장 장치(1)는 솔리드 스테이트 드라이브 컨트롤러(solid state disk controller, 100), 불휘발성 메모리 장치(non-volatile memory device, 200), 및 랜덤 액세스 메모리(random access memory, 300)를 포함할 수 있다.
본 명세서에서는 데이터 저장 장치(1)의 일 예로서 솔리드 디스크 드라이브(solid state drive; SSD)를 예시하지만, 이는 본 발명의 용이한 이해를 위한 것 일뿐이며, 본 발명에 따른 실시예는 상기 예에 한정되지 않는다.
본 발명의 실시예에 따른 불휘발성 메모리 장치(200)는 적어도 하나의 불휘발성 메모리 셀을 포함할 수 있으며, 상기 불휘발성 메모리 셀은 EEPROM, 플래시 메모리, MRAM(magnetic RAM), 스핀전달토크 MRAM(spin-transfer torque MRAM), 컨덕티브 브리징 RAM(conductive bridging RAM, CBRAM), FeRAM(ferroelectric RAM), OUM(ovinic unified memory)라고도 불리는 PRAM(phase change RAM), 저항 메모리(resistive RAM; RRAM 또는 ReRAM), 나노튜브 RRAM(nanotube RRAM), 폴리머 RAM(polymer RAM; PoRAM), 나노 부유 게이트 메모리(nano floating gate memory; NFGM); 홀로그래픽 메모리(holographic memory); 분자 전자 메모리 소자(molecular electronics memory device), 또는 절연 저항 변환 메모리(insulator resistance change memory)를 포함할 수 있다. 상기 불휘발성 메모리 셀은 하나의 비트 또는 다수의 비트들을 저장할 수 있다.
또한, 상기 솔리드 스테이트 드라이브 컨트롤러(100)는 다수의 어드레스 변환용 CPU들(110-1, 110-2, ... , 110-N, 또는 집합적으로 '110'), 및 다수의 플래시 메모리 컨트롤러들(120-1, 120-2, ... , 120-M, 또는 집합적으로 '120')을 포함할 수 있다.
상기 어드레스 변환용 CPU(110)는 호스트(미도시)로부터 출력되는 명령어에 응답하여 상기 불휘발성 메모리 장치(200)에 포함된 다수의 채널들(210-1, 210-2,..., 210-L, 또는 집합적으로 '210') 중에서 적어도 하나의 채널에 대한 로지컬-피지컬 어드레스 변환(logical-physical address translation)을 수행할 수 있다.
이때, 상기 로지컬-피지컬 어드레스 변환에 대한 정보가 기록된 어드레스 매핑 테이블이 상기 랜덤 액세스 메모리(300)에 저장될 수 있다. 도 1에서는 상기 랜덤 액세스 메모리(300)가 상기 솔리드 스테이트 드라이브 컨트롤러(100)의 외부에 위치하는 것으로 예시하였지만, 상기 랜덤 액세스 메모리(300)와 상기 솔리드 스테이트 드라이브 컨트롤러(100)가 멀티 칩 패키지(MCP; multi chip package)로서 구현되는 실시예에서는 상기 랜덤 액세스 메모리(300)가 상기 솔리드 스테이트 드라이브 컨트롤러(100)의 내부에 포함될 수도 있다. 상기 랜덤 액세스 메모리(300)를 제어하기 위해서, 본 발명의 실시예에 따른 솔리드 스테이트 드라이브 컨트롤러(100)는 DRAM 컨트롤러(195)를 더 포함할 수 있다.
또한, 도 1에 도시된 바와 같이, 상기 다수의 어드레스 변환용 CPU들(110-1, 110-2, ... , 110-N)은 서로 독립적으로 구동할 수 있고 동시에 병렬 처리가 가능하므로, 단일의 플래시 변환 계층(FTL)을 구비함으로써 발생하는 병목(bottle-neck) 현상이 효과적으로 해결될 수 있다. 또한, 도 1에 도시된 실시예에서와 같이, 전용적인 어드레스 변환용 CPU(110)는 펌웨어(firmware)로서 구현될 수 있으며, 따라서 데이터 저장 회로 또는 이를 포함하는 시스템의 수정이나 변경이 용이할 수 있다.
또한, 상기 다수의 어드레스 변환용 CPU들(110-1, 110-2, ... , 110-N) 각각은 채널 단위로 구분된 상기 불휘발성 메모리 장치(200)의 적어도 일부에 대해 어드레스 변환 동작을 수행할 수 있다. 본 발명에 따른 실시예에서, 상기 채널(channel)은 하나의 입출력 핀(I/O pin)을 공유할 수 있는 플래시 메모리 칩들을 포함하며, 따라서 상기 불휘발성 메모리 장치(200)에 포함된 다수의 채널들(210-1, 210-2, ... 210-L) 각각은 적어도 하나의 플래시 메모리 칩을 포함할 수 있다.
이때, 상기 다수의 어드레스 변환용 CPU들(110-1, 110-2, ... , 110-N) 각각이 제어하는 채널의 범위는 서로 중첩되지 않을 수 있다. 예컨대, 상기 불휘발성 메모리 장치(200)에 포함된 제1 채널(210-1)이 제1 어드레스 변환용 CPU(110-1)에 의해 제어될 때에 상기 제1 채널(210-1)은 상기 제1 어드레스 변환용 CPU(110-1)에 의해서만 전용적으로 제어되고, 나머지 어드레스 변환용 CPU들(110-2 내지 110-N)에 의해서는 제어되지 않을 수 있다.
이러한 구성은 상기 다수의 플래시 메모리 컨트롤러들(120-1, 120-2, ... 120-M)에도 동일하게 적용될 수 있으며, 따라서 상기 다수의 플래시 메모리 컨트롤러들(110-1, 110-2, ... , 110-N) 각각이 동작을 수행하는 채널의 범위는 서로 중첩되지 않을 수 있다.
실시예에 따라, 상기 다수의 어드레스 변환용 CPU들(110-1, 110-2,..., 110-N) 각각이 제어하는 채널의 범위와 상기 다수의 플래시 메모리 컨트롤러들(120-1, 120-2, ... 120-M) 각각이 동작을 수행하는 채널의 범위가 일대일 대응(one-to-one correspondense)일 수 있다. 예컨대, 상기 제1 어드레스 변환 CPU(110-1)가 상기 불휘발성 메모리 장치(200)의 제1 채널(210-1)과 제2 채널(210-2)에 대한 어드레스 변환 동작을 제어한다고 가정하면, 상기 제1 어드레스 변환 CPU(110-1)에 대응하는 제1 플래시 메모리 컨트롤러(120-1)도 상기 제1 채널(210-1)과 제2 채널(210-2)에 대해 플래시 동작을 수행할 수 있다.
상기 플래시 메모리 컨트롤러(120)는 상기 어드레스 변환용 CPU(110)에서 출력된 제어 신호(미도시)에 응답하여 상기 불휘발성 메모리 장치(200)에 대한 동작을 제어할 수 있다. 상기 플래시 메모리 컨트롤러(120)가 제어할 수 있는 액세스 동작으로서는, 프로그램 동작(program operation), 라이트 동작(write operation), 리드 동작(read operation), 또는 이레이즈 동작(erase operation) 등을 예시할 수 있다.
또한, 상기 다수의 플래시 메모리 컨트롤러들(120-1, 120-2, ... 120-M) 각각은 상기 불휘발성 메모리 장치(200)의 적어도 일부에 대해서 에러 정정 코딩(error correction coding) 동작을 수행하기 위한 에러 정정 코딩부(121)를 포함할 수 있다. 예컨대, 상기 각 에러 정정 코딩부(121-1, 121-2, ... 121-M)는 대응하는 플래시 메모리 컨트롤러(120-1, 120-2, ... 120-M)가 동작을 수행하는 채널에 대해 상기 에러 정정 코딩 동작을 수행할 수 있다.
상기 에러 정정 코딩은, 상기 플래시 메모리에 비트 에러(bit error)가 존재하는 경우에 상기 비트 에러 정정을 위하여 추가 데이터(예컨대, 패리티 체크 데이터(parity check data))를 부가하는 과정을 포함할 수 있다. 상기 추가 데이터는 오리지널 데이터의 비트 순서를 나타내는 코드로서 계산되어 상기 오리지널 데이터 에 부가될 수 있으며, 상기 에러 정정 코딩부(121)는 데이터 리드시에 발생하는 코드값과 데이터 라이트시의 코드값을 비교함으로써 상기 비트 에러의 발생 여부를 체크할 수 있다.
또한, 상기 다수의 어드레스 변환용 CPU들(110-1, 110-2, ... , 110-N)은 멀티-CPU 구조를 가질 수 있고, 따라서 본 발명의 실시예에 따른 솔리드 스테이트 드라이브 컨트롤러(100)는 멀티-CPU 구조를 갖는 상기 다수의 어드레스 변환용 CPU들(110-1, 110-2, ... , 110-N)의 병렬 처리를 가능하게 하도록 호스트(미도시)로부터 출력되는 명령어를 분배하기 위한 호스트 CPU(130)를 더 포함할 수 있다.
상기 호스트 CPU(130)는 호스트로부터 출력되는 명령어 또는 데이터를 처리하기 위한 CPU로서, 상기 호스트 CPU(130)는 디램 버퍼(dram buffer)를 캐시 용도로 사용하면서 명령어를 관리할 수 있고, 명령어가 상기 다수의 어드레스 변환용 CPU들(110-1, 110-2, ... , 110-N)에 전송되면 상기 다수의 어드레스 변환용 CPU들(110-1, 110-2, ... , 110-N) 각각이 수신된 명령어를 처리할 수 있다.
이때, 상기 호스트 CPU(130)와 상기 다수의 어드레스 변환용 CPU들(110-1, 110-2, ... , 110-N) 간에 통신이 수행될 수 있도록 하기 위하여, 본 발명의 실시예에 따른 솔리드 스테이트 드라이브 컨트롤러(100)는 IPC(inter processor communication, 프로세스간 통신 모듈, 140)을 더 포함할 수 있다.
상기 IPC 모듈(140)은 프로그래머가 하나의 운영체계에서 동시에 수행될 개별 프로그램을 생성하고 다룰 수 있도록 해주는 프로그래밍 인터페이스의 집합으로서, 하나의 프로그램이 동시에 많은 사용자의 요구를 처리할 수 있도록 함을 목적 으로 한다. 상기 IPC 메쏘드(method)는 파이프(pipe), 네임드 파이프(named pipe), 메시지 큐잉(massage queueing), 세마포어(semaphore), 공유 메모리(shared memory), 소켓(socket) 등을 포함할 수 있다.
상기 호스트 CPU(130)가 소정의 파라미터(parameter)와 명령어를 상기 IPC 모듈(140)에 전송하면, 상기 IPC 모듈(140)은 인터럽트를 해당 어드레스 변환용 CPU(110)에 보내고, 상기 인터럽트를 수신한 해당 어드레스 변환용 CPU(110)는 인터럽트 처리 루틴에서 상기 파라미터와 명령어를 수신하여 해당 명령어를 처리할 수 있다. 실시예에 따라, 상기 IPC 모듈(140)은 동일 시스템(로컬 시스템) 내에서만 사용될 수 있고, 또는 다른 시스템(리모트 시스템) 간에도 사용될 수 있다.
또한, 도 1에 도시된 바와 같이, 본 발명의 실시예에 따른 솔리드 스테이트 드라이브 컨트롤러(100)는 인스트럭션 메모리(instruction memory, 161-1 및 161-2, 또는 집합적으로 '161')를 더 포함할 수 있다. 상기 인스트럭션 메모리(161)는 상기 다수의 어드레스 변환용 CPU들(110-1, 110-2, ... , 110-N)이 사용하는 인스트럭션 메모리(161-1)과 상기 호스트 CPU(130)가 사용하는 인스트럭션 메모리(161-2)를 포함할 수 있다.
상기 인스트럭션 메모리(161-1)에 저장된 인스트럭션(또는 명령어)은 상기 다수의 어드레스 변환용 CPU들(110-1, 110-2, ... , 110-N)의 동작에 필요한 프로그램에 관한 정보를 포함할 수 있다. 상기 다수의 어드레스 변환용 CPU들(110-1, 110-2, ... , 110-N) 각각은 상기 인스트럭션 메모리(161-1)로부터 명령어를 패치할 수 있으며, 상기 다수의 어드레스 변환용 CPU들(110-1, 110-2, ... , 110-N) 각 각은 ID가 서로 구분만 될 수 있으면 각각의 기능은 동일하기 때문에 상기 인스트럭션 메모리(161-1)를 모두 공유할 수 있다. 이러한 설명은 상기 호스트 CPU(130)를 위한 인스트럭션 메모리(161-2)에도 동일하게 적용될 수 있다.
또한, 도 1에 도시된 바와 같이, 본 발명의 실시예에 따른 솔리드 스테이트 드라이브 컨트롤러(100)는 데이터 메모리(data memory, 162-1, 162-2, ... 162-N, 163)를 더 포함할 수 있다. 상기 다수의 어드레스 변환용 CPU들(110-1, 110-2, ... , 110-N)에 대응되는 데이터 메모리(162-1, 162-2, ... 162-N, 또는 집합적으로 '162')는 상기 어드레스 변환용 CPU(110)의 동작에 필요한 글로벌 변수(global variable) 등을 저장할 수 있으며, 상기 데이터 메모리(162)는 상기 다수의 어드레스 변환용 CPU들(110-1, 110-2, ... , 110-N) 각각에 독립적으로 구비될 수 있다. 이러한 설명은 상기 호스트 CPU(130)를 위한 데이터 메모리(163)에도 동일하게 적용될 수 있다.
또한, 도 1에 도시된 바와 같이, 상기 인스트럭션 메모리(161) 및 상기 데이터 메모리(162 및 163)는 상기 버스 매트릭스(150)를 통하지 않고 로컬 버스(local bus)를 이용하여 상기 다수의 어드레스 변환용 CPU들(110) 및 상기 호스트 CPU(130)에 액세스할 수 있다.
또한, 본 발명의 실시예에 따른 솔리드 스테이트 드라이브 컨트롤러(100)는 버스 매트릭스(bus matrix, 150)를 더 포함할 수 있으며, 상기 버스 매트릭스(150)는 전체 시스템 버스에서 마스터 역할을 하는 상기 다수의 어드레스 변환용 CPU들(110)이 병렬로 버스 처리하는 것을 가능하게 한다.
이때, 상기 다수의 어드레스 변환용 CPU들(110)은 상기 버스 매트릭스(150)를 통해서 어드레스 매핑에 대한 정보가 저장된 상기 랜덤 액세스 메모리(300)에 액세스할 수 있으며, 이 경우 시분할(time sharing) 방식이 사용될 수 있다.
또한, 본 발명의 실시예에 따른 솔리드 스테이트 드라이브 컨트롤러(100)는 버퍼 매니저(buffer manager, 170)를 더 포함할 수 있다. 상기 버퍼 매니저(170)는 호스트에서 출력되는 데이터 또는 상기 불휘발성 메모리 장치(200)에서 출력되는 데이터를 버퍼에 라이트하거나 또는 리드하는 경우에 이를 처리하기 위한 블록으로서, 예컨대 버퍼 중재(buffer arbitration), 데이터 스캐터링(data scattering), 데이터 개더링(data gathering), 호스트 데이터 흐름 제어(host data flow control) 등을 수행할 수 있다.
또한, 본 발명의 실시예에 따른 솔리드 스테이트 드라이브 컨트롤러(100)는 호스트 인터페이스(host I/F, 190)를 더 포함할 수 있다. 예컨대, 상기 호스트 인터페이스(190)는 ATA(advanced technology architencture), SATA(serial advanced technology architecture), 또는 PATA(parallel advanced technology architencture) 인터페이스 일 수 있으며, NCQ와 같은 커맨드 큐(command queue)를 지원할 수 있는 시스템이다.
일반적인 서버 시스템에서는 상기 커맨드 큐를 지원하면서 성능 측정 단위로 IOPS(Input/Output Per Second)가 중요한 요소가 될 수 있다. 솔리드 스테이트 드라이브에서는 플래터(flatter)와 같은 기계적인 부분을 탐색해야하는 절차가 없기 때문에 상기 IOPS가 하드 디스크에 비해 상대적으로 우수하지만, 상기 커맨드 큐를 지원할 수 있는 상기 호스트 인터페이스(190)를 구비함으로서 보다 우수한 IOPS 특징이 획득될 수 있다.
또한, 본 발명의 실시예에 따른 솔리드 스테이트 드라이브 컨트롤러(100)는 호스트 FIFO(181) 및 플래시 FIFO(182)를 더 포함할 수 있다. 상기 호스트 FIFO(181)는 호스트에서 데이터를 처리하기 위한 클록과 데이터를 버퍼에 저장하기 위한 클록이 상이할 때에 이를 완충하는 역할을 수행할 수 있다. 또한, 상기 플래시 FIFO(182)는 플래시 버스에서 데이터를 처리하기 위한 클록과 데이터를 버퍼에 저장하기 위한 클록이 상이할 때에 이를 완충하는 역할을 수행할 수 있다.
상기 불휘발성 메모리 장치(200)는 다수의 채널들(210-1, 210-2, ... , 210-L)을 포함할 수 있으며, 하나의 채널은 하나의 입출력 핀(I/O pin)을 공유할 수 있는 적어도 하나의 플래시 메모리 칩을 포함할 수 있다. 예컨대, 실시예에 따라, 상기 불휘발성 메모리 장치(200)의 하나의 채널은 8개, 12개 또는 16개의 플래시 메모리 칩들을 포함할 수 있다.
즉, 본 발명의 실시예에 따른 상기 불휘발성 메모리 장치(200)는 다채널 병렬 어레이(multi-channel parallel array) 구조를 갖고, 상기 다수의 채널들(210-1, 210-2, ... , 210-L)에 대해 상기 다수의 어드레스 변환용 CPU들(110) 또는 상기 다수의 플래시 메모리 컨트롤러들(120)이 동시에 병렬적으로 동작함으로써, 종래에 단일의 어드레스 변환 엔진만을 구비함으로 인해 발생하는 병목 현상이 효율적으로 해결될 수 있으며, 따라서 IOPS 특성이 상당히 개선될 수 있다.
도 2는 본 발명의 실시예에 따른 어드레스 변환용 CPU(110)의 개략적인 블록 도이다. 도 1 및 도 2를 참조하면, 본 발명의 실시예에 따른 어드레스 변환용 CPU(110)은, 어드레스 변환부(logical to physical address transslation unit, 111), 웨어 레벨링부(wear leveling unit, 112), 및 배드 블록 관리부(bad-block management unit, 113)를 포함할 수 있다.
상기 어드레스 변환부(111)는 호스트에서 수신된 로지컬 어드레스(LA; logical address)를 피지컬 어드레스(PA; physical address)로 변환할 수 있다. 이때 상기 어드레스 변환부(111)는 어드레스 매핑 단위에 따라 페이지 단위 어드레스 매핑(page-level address mapping) 또는 블록 단위 어드레스 매핑(block-level address mapping) 동작을 수행할 수 있다.
또한, 최근에는 로그 블록 기법(log block scheme)이 제안되어 사용되고 있는데, 상기 로그 블록 기법은 로그 구조 파일 시스템(log structure file system)과 유사하게 데이터를 로그 형태로 저장할 수 있다. 로그 블록 기법은 페이지 단위 어드레스 매핑과 블록 단위 어드레스 매핑 기법을 병합한 형태로서, 비교적 큰 단위로 요청되는 입출력 데이터는 블록 단위로 처리하고, 작은 단위로 요청되는 입출력 데이터는 페이지 단위로 처리할 수 있다.
이때, 상기 어드레스 변환부(111)는 상기 랜덤 액세스 메모리(300, 도 1)에 저장된 어드레스 매핑 테이블(address mapping table)을 참조하여 상기 어드레스 변환 동작을 수행할 수 있다. 또한, 상기한 바와 같이, 상기 어드레스 매핑 테이블은 상기 솔리드 스테이트 드라이브 컨트롤러(100) 내부의 버퍼(미도시)에 저장될 수 도 있으며, 이 경우에는 상기 어드레스 변환부(111)는 상기 버퍼에 액세스하여 매핑 정보를 획득할 수도 있다.
또한, 상기 랜덤 액세스 메모리(300)에는 상기 다수의 어드레스 변환용 CPU들(110-1, 110-2, ... , 110-N) 각각에 대응하는 다수의 어드레스 매핑 테이블들이 독립적으로 구비될 수 있다. 상기 어드레스 변환부(111)의 어드레스 변환 동작에 대해서는 도 3a, 도 3b 및 도 4에서 상술하기로 한다.
상기 웨어 레벨링부(112)는 상기 불휘발성 메모리 장치(200)에 대해 웨어 레벨링 동작을 수행하고 수행된 웨어 레벨링 정보를 상기 어드레스 변환부(111)에 전송할 수 있다. 본 발명에 따른 실시예에서, 상기 웨어 레벨링은 메모리 블록에 대해 균등하게 라이트 횟수가 부여되도록 어드레스 매핑 테이블을 관리하는 것을 의미한다.
플래시 메모리의 이레이즈 동작은 일반적으로 라이트 동작에 비해 긴 시간이 소요되고, 플래시 메모리의 이레이즈 단위는 라이트 단위보다 더 큰 블록 단위로 수행되기 때문에 이레이즈되지 않아도 되는 부분까지 함께 이레이즈되는 결과가 초래될 수 있다. 이와 같이, 플래시 메모리는 이레이즈와 라이트 동작의 단위가 일치하지 않기 때문에 라이트 동작시에 수행 성능은 리드 동작에 비해 현저히 떨어진다. 플래시 메모리는 동일한 블록에 대해 약 10만번 정도의 이레이즈 동작을 수행하면 더 이상 그 블록에 대해 사용이 불가능하다. 따라서 플래시 메모리 컨트롤러는 특정 블록에 대한 이레이즈 동작이 반복되는 것을 예방하기 위하여 상기 웨어 레벨링 동작을 수행할 수 있다.
예컨대, 상기 웨어 레벨링부(112)는 외부로부터 소정의 데이터에 대한 라이 트 명령이 입력되었을 때에, 모든 데이터 블록들의 소거 카운트(erase count) 정보를 순차적으로 또는 규정된 방법에 따라 스캔할 수 있다. 스캔 결과, 데이터가 저장될 데이터 블록이 규정된 큰 소거 카운트에 도달하였을 경우에 상대적으로 소거 카운트가 적은 블록(예컨대, 프리 블록)으로 상기 데이터를 라이트할 수 있도록 데이터 블록의 피지컬 어드레스(PA)가 변경될 수 있다. 상기 웨어 레벨링부(112)의 구체적인 동작 및 기술에 대해서는 도 5a 내지 도 5c에서 상술하기로 한다.
상기 배드 블록 관리부(113)는 상기 불휘발성 메모리 장치(200)에 포함된 배드 블록의 정보를 관리하여 배드 블록 정보를 상기 어드레스 변환부(111)에 전송할 수 있다. 플래시 메모리 셀은 제조시에 또는 사용 중에 에러가 발생할 수 있는데, 에러가 발생한 셀에 데이터를 라이트 또는 프로그램하면 데이터의 신뢰성이 낮아지므로 에러가 발생한 배드 블록을 적절하게 관리해야 할 필요가 있다.
상기 배드 블록 관리부(113)는 상기 불휘발성 메모리 장치(200)에 포함된 배드 블록의 정보를 알고 있고, 이러한 배드 블록 정보가 상기 어드레스 변환부(111)로 전송되어 배드 블록에 어드레스가 매핑되는 것을 예방할 수 있다. 상기 배드 블록 관리부(113)의 구체적인 동작 및 기술에 대해서는 도 6a 및 도 6b에서 상술하기로 한다.
도 3a 및 도 3b는 본 발명의 일 실시예에 따른 어드레스 변환 동작을 설명하기 위한 예시 표이다.
도 1 내지 도 3a 및 도 3b를 참조하면, 본 발명의 실시예에 따른 솔리드 스테이트 드라이브 컨트롤러(100)에서 수행할 수 있는 로지컬-피지컬 어드레스 변환 은 다양한 방법으로 수행될 수 있으며, 도 3a 및 도 3b에서는 런(RUN) 단위의 어드레스 매핑 테이블을 기반으로 하여 로지컬-피지컬 어드레스 변환을 수행하는 것을 예시한다.
본 발명의 실시예에 따른 불휘발성 메모리 장치(200)는 복수 개의 메모리 블록들을 포함할 수 있고, 각 메모리 블록은 복수 개의 페이지들(또는 섹터들)을 포함할 수 있다. 이때, 페이지의 가상적 번호는 로지컬 페이지 번호(logical page number; LPN)라 불리고, 분할된 페이지에 물리적으로 할당된 번호는 피지컬 페이지 번호(physical page number; PPN)로 불릴 수 있다.
상기 로지컬 페이지 번호(LPN)와 상기 피지컬 페이지 번호(PPN)는 각각 상기 랜덤 액세스 메모리(300)에 저장된 상기 어드레스 매핑 테이블을 통해 일대일 매핑될 수 있다. 예컨대, 제1 로지컬 페이지 번호(LPN0)의 데이터는 제1 피지컬 페이지 번호(PPN0)에 저장되고, 제2 로지컬 페이지 번호(LPN1)의 데이터는 제2 피지컬 페이지 번호(PPN1)에 각각 저장될 수 있다.
도 3a에 도시된 어드레스 매핑 테이블(310)의 데이터 구성을 살펴보면, 로지컬 페이지 번호(LPN)와 피지컬 페이지 번호(PPN)의 배열이 어느 정도 연속된 형태로 배열되어 있음을 알 수 있다. 예컨대, 제1 내지 제8 로지컬 페이지 번호(LPN0 내지 LPN7)의 데이터는 제1 내지 제8 피지컬 페이지 번호(PPN0 내지 PPN7)에 연속적으로 저장되고, 제9 내지 제12 로지컬 페이지 번호(LPN8 내지 LPN11)의 데이터는 제21 내지 제24 피지컬 페이지 번호(PPN20 내지 PPN23)에 연속적으로 저장될 수 있다.
이러한 인접한 페이지들의 집합을 런(RUN)이라 명할 수 있으며, 도 3b에서는 런 단위를 기초로 하여 어드레스 매핑 테이블(320)을 구현하고 구현된 어드레스 매핑 테이블(320)을 기반으로 하는 어드레스 변환 동작을 예시하도록 한다.
도 3b는 본 발명의 실시예에 따른 런 단위 어드레스 매핑 테이블(320)을 예시한다. 도 3b에 도시된 어드레스 매핑 테이블(320)은 도 3a에 도시된 어드레스 매핑 테이블(310)을 런 단위로 재구성한 것이며, 시각적으로도 매핑 테이블 전체 사이즈가 상당히 감소된 것을 알 수 있다.
도 3b를 참조하면, 본 발명의 실시예에 따른 런 단위 어드레스 매핑 테이블(320)은 초기 로지컬 페이지 번호(초기 LPN), 초기 피지컬 페이지 번호(초기 PPN), 및 연속 피지컬 페이지 번호(연속 PPN 개수)로 구성될 수 있다. 상기 초기 로지컬 페이지 번호 항목에는 각각의 런에 대한 초기 로지컬 페이지 번호가 저장되고, 상기 초기 피지컬 페이지 번호 항목에는 각각의 런에 대한 초기 피지컬 페이지 번호가 저장될 수 있다. 또한, 상기 연속 피지컬 페이지 번호 항목에는 각각의 런에 포함된 페이지들의 개수가 저장될 수 있다. 즉, 도 3b에 도시된 어드레스 매핑 테이블(320)을 이용하면 플래시 메모리 기반 저장 장치에서 적은 메모리 용량을 가지고도 효율적인 매핑 정보 관리가 수행될 수 있다.
도 4는 본 발명의 다른 실시예에 따른 어드레스 변환 동작을 설명하기 위한 예시 표이다. 도 4에서는 블록 단위의 어드레스 매핑이 수행되는 것을 예시한다.
도 3a 및 도 3b에 도시된 바와 달리, 어드레스 매핑 테이블(330)은 도 4에 도시된 바와 같이 구현될 수 있으며, 상기 어드레스 매핑 테이블(330)은 블록 매핑 코드부(block mapping code unit)를 포함할 수 있다.
상기 블록 매핑 코드부는 피지컬 페이지 번호 블록(331), 페이지 상태 블록(332), 및 로지컬 페이지 번호 블록(333)을 포함하여, 실제 피지컬한 메모리 영역에 대한 위치 정보가 제공될 수 있다. 상기 페이지 상태 블록(332)은 4가지의 상태들(예컨대, 0은 LPN, 1은 무효한(invalid), 2는 연속성(sequence), 3은 자유 페이지)을 저장할 수 있다.
호스트로부터 LPN 번호가 입력되면 불휘발성 메모리 장치(200′)의 빈 페이지에 순차적으로 입력된다. 이때, 동일한 LPN에 수정 요청이 들어오면 기존의 페이지는 무효한(invalid) 상태가 되고 다음의 빈 페이지를 할당 받아 업데이트될 수 있다.
예컨대, 제0,2,3,5 블록이 빈 페이지를 포함하고 각 블록은 4 페이지로 구성되며 라이트 요청에 대한 LPN 번호 "0,0,0,2,2,2,3,1,1,1,1,3,3,3"이 순차적으로 입력된다고 가정한다. 먼저, 첫 번째 LPN 번호 '0'은 피지컬 메모리 영역(200′) 내의 빈 페이지를 갖는 제0 블록(BLOCK 0)의 첫 번째 페이지에 입력된다. 이어 두 번째 LPN 번호가 첫 번째 LPN 번호와 동일한 '0'의 수정 요청이 입력되면 해당되는 제0 블록(BLOCK 0)의 첫 번째 페이지에 무효 데이터가 저장된 것으로 처리한다(즉, I로표기). 그리고 두 번째 LPN 번호 '0'은 피지컬 메모리 영역(200′) 내의 다음 빈 페이지를 갖는 제0 블록(BLOCK 0)의 두 번째 페이지에 입력된다.
유사하게, 세 번째 LPN 번호가 두 번째 LPN 번호와 동일한 '0'이 입력되면, 제0 블록(BLOCK 0)의 첫 번째 페이지와 마찬가지로, 제0 블록(BLOCK 0)의 두 번째 페이지에 무효 데이터가 저장된 것으로 처리한다. 그리고 세 번째 LPN 번호 '0'은 피지컬 메모리 영역(200′) 내의 다음 빈 페이지를 갖는 제0 블록(BLOCK 0)의 세 번째 페이지로 입력될 수 있다.
상기의 방법을 동일하게 적용하면 도 4에 도시된 바와 같이 피지컬 메모리 영역(200′)이 정의될 수 있으며, 이때 해칭된 페이지가 유효한(valid) 데이터가 기록되어 있는 페이지임을 알 수 있다.
이러한 정보는 상기 블록 매핑 코드부에 기록될 수 있다. 보다 구체적으로, 상기 피지컬 페이지 번호 블록(331)은 상기 피지컬 메모리 영역(200′)에 유효한 데이터가 기록되어 있는 블록에 대한 정보를 저장한다. 따라서, 해칭으로 표시된 블록은 유효한 데이터가 기록되어 있는 블록인 제0, 2, 3, 5 블록을 나타낸다. 이때 정보 저장의 비트 수를 줄이기 위해서 각 블록 사이의 차이 값이 기록될 수 있으며, 따라서 상기 페이지 번호 블록(331)에는 '0212'가 기록될 수 있다.
상기 페이지 상태 블록(332)은 추출한 유효 페이지의 위치 정보를 포함할 수 있다. 이때, 로지컬 페이지 번호(LPN)가 기입되어 있는 유효한 페이지인 경우에는 '0'이 표시될 수 있고, 무효 데이터가 저장된 것으로 처리된 페이지(I로 표시)의 경우는 '1'이 표시될 수 있으며, 빈 페이지인 경우 '3'이 표시될 수 있다. 따라서, 상기 페이지 상태 블록(332)에는 '1101 1011 1101 1033'이 기록될 수 있다.
상기 로지컬 페이지 번호 블록(333)은 유효 페이지의 로지컬 섹터 번호 정보를 포함할 수 있다. 따라서, 해칭으로 표시된 유효 데이터의 값이 기록될 수 있으며 이에 따라 상기 로지컬 페이지 번호 블록(333)에는 '0213'이 기록될 수 있다.
상기와 같은 어드레스 매핑 테이블(330)을 구현하여 사용함으로써 매핑 테이블을 위한 메모리 사용량이 크게 감소될 수 있다. 따라서 종래에는 메모리의 용량이 커서 매핑 테이블을 모두 메인 메모리 상에서 로드할 수 없었던 것을 메모리의 용량이 커지더라도 적은 메모리 용량을 갖도록 어드레스 매핑 테이블(330)이 구현될 수 있다.
도 5a 내지 도 5c는 본 발명의 실시예에 따른 웨어 레벨링 동작을 설명하기 위한 개략도들이다.
도 1 내지 도 5a를 참조하면, 상기 어드레스 변환용 CPU(110)는 어드레스 변환부(111) 및 웨어 레벨링부(112)를 포함할 수 있다. 상기 어드레스 변환용 CPU(110)는 로지컬 어드레스(LA)를 입력받고, 입력된 상기 로지컬 어드레스(LA)를 매핑 테이블에 기초하여 피지컬 어드레스(PA)로 변환할 수 있다. 상기한 바와 같이, 상기 매핑 테이블은 상기 랜덤 액세스 메모리(300)에 저장될 수 있고, 또는 상기 불휘발성 메모리(200)의 메타 영역(220-4)에 저장되어 라이트 동작시에 상기 웨어 레벨링부(112)로 로딩될 수도 있다.
상기 웨어 레벨링부(112)는 웨어 레벨링을 수행하고 그 결과를 상기 어드레스 변환부(111)에 제공할 수 있다. 예컨대, 웨어 레벨링 조건이 만족하면, 상기 웨어 레벨링부(112)는 가장 작은 소거 카운트 값을 갖는 데이터 블록을 가장 큰 소거 카운트 값을 갖는 프리 블록과 교환하도록 제어할 수 있다. 상기 소거 카운트 값은 메모리 블록들 중에서 이레이즈 동작이 수행될 때마다 증가될 수 있다. 예컨대, 상기 소거 카운트 값은 상기 불휘발성 메모리(200)의 메타 영역(220-4)에 저장될 수 있다.
도 5b는 도 5a에 도시된 매핑 방법을 설명하기 위한 개념도이다. 도 5a 및 도 5b를 참조하면, 본 발명의 실시예에 따른 불휘발성 메모리(200)는 데이터 블록들을 포함하는 데이터 영역(220-1), 로그 블록들을 포함하는 로그 영역(220-2), 프리 블록들을 포함하는 프리 영역(220-3)을 포함할 수 있다.
상기 데이터 영역은 1 내지 604의 피지컬 블록 번호들(PBN)을 갖는 데이터 블록들(PBN 1 내지 PBN 604)을 포함할 수 있다. 상기 로그 영역은 701 내지 703의 피지컬 블록 번호들(PBN)을 갖는 로그 블록들(PBN 701 내지 PBN 703)을 포함할 수 있다. 또한, 상기 프리 영역은 801 내지 804의 피지컬 블록 번호들(PBN)을 갖는 프리 블록들(PBN 801 내지 PBN 804)을 포함할 수 있다. 제1 로그 블록(PBN 701)은 제1 데이터 블록(PBN 1)에 할당되어 있고, 제2 로그 블록(PBN 702)은 제3 데이터 블록(PBN 3)에 할당되어 있으며, 제3 로그 블록(PBN 703)은 제5 데이터 블록(PBN 5)에 할당되어 있다.
호스트로부터 데이터 라이트 요청이 수신되면, 상기 웨어 레벨링부(112)는 해당 데이터 블록에 할당된 로그 블록이 존재하는지를 판단할 수 있다. 해당 데이터 블록에 할당된 로그 블록이 존재하면 라이트 동작을 수행하기 위하여 로그 블록이 사용될 수 있다. 만약 해당 데이터 블록에 할당된 로그 블록이 존재하지 않으면 해당 데이터 블록은 프리 블록으로부터 새로운 로그 블록을 할당받을 수 있다. 새롭게 할당된 로그 블록에는 라이트 동작 이전에 이레이즈 동작이 수행되며, 이레이즈 동작 이후에 라이트 동작이 수행될 수 있다.
도 5c는 본 발명의 실시예에 따른 데이터 영역(220-1)의 피지컬 블록들(PBN 0 내지 PBN m)을 예시한다. 도 1 내지 도 5c를 참조하면, 피지컬 블록들(PBN0 내지 PBNm)은 N 개의 그룹들(Group 0 내지 Group N-1)로 가상적으로 분할될 수 있다. 각 그룹은 4개의 블록들을 포함하고 있으며, 이는 본 발명의 용이한 이해를 위한 예시일 뿐이다.
상기 웨어 레벨링부(112)는 웨어 레벨링 조건을 만족할 경우에 불휘발성 메모리 장치(200)의 모든 메모리 블록들에 대해서 소거 카운트 정보를 스캔할 수 있고, 또는 도 5c에서와 같이 그룹별로 분할하여 소거 카운트 정보를 스캔할 수 있다. 도 5c와 같이 그룹별로 소거 카운트 정보를 스캔하는 경우에는, 상기 소거 카운트 정보가 상기 불휘발성 메모리 장치(200)의 메타 영역(220-4)에 그룹별로 저장될 수 있다. 라이트 동작시에, 그룹 카운트 정보와 선택된 메모리 블록 그룹의 소거 카운트 정보가 상기 웨어 레벨링부(112)로 로딩될 수 있다.
도 6a 및 도 6b는 본 발명의 실시예에 따른 배드 블록 관리부(113)를 설명하기 위한 블록도 및 순서도이다.
도 1 내지 도 6a를 참조하면, 상기 어드레스 변환부(111)는 매핑 어드레스 테이블에 기초하여 로지컬 어드레스(LA)를 피지컬 어드레스(PA)로 변환할 수 있다. 이때, 상기 어드레스 변환부(111)는 상기 배드 블록 관리부(113)에서 출력되는 배드 블록 정보를 참고할 수 있다.
상기 배드 블록 관리부(113)는, 배드 블록 매핑 테이블이 저장된 배드 블록 매핑 레지스터(113-1), 불휘발성 메모리 장치(200)에 저장된 배드 블록 정보를 상 기 배드 블록 매핑 레지스터(113-1)로 로딩하기 위한 배드 블록 매핑 로딩부(113-3), 상기 배드 블록 매핑 레지스터(113-3)에 저장된 리매핑 마크의 개수에 기초하여 리매핑 마크 플래그를 생성하고 생성된 상기 리매핑 마크 플래그를 상기 어드레스 변환부(111)에 전송하기 위한 배드 블록 상태 제어부(113-2)를 포함할 수 있다.
상기한 바와 같이, 메모리 장치의 제작시 또는 사용중에 배드 블록이 발생할 수 있으며 이러한 정보는 상기 불휘발성 메모리 장치(200)의 임의의 영역(예컨대, 메타 영역(220-4))에 저장될 수 있다. 즉, 상기 메타 영역(220-4)에는 배드 블록에 대한 정보가 저장될 수 있으며, 상기 배드 블록에 대한 정보는 배드 블록 매핑 테이블의 형태로 저장될 수 있다. 상기 배드 블록 매핑 테이블은 특정 블록의 정상 동작 여부를 나타내는 리매핑마크(remapping mark), 블록의 피지컬 어드레스, 및 상기 피지컬 어드레스에 상응하는 예비 블록 어드레스 등을 포함할 수 있다.
상기 배드 블록 매핑 레지스터(113-1)는 다수의 레지스터들로 구성되어, 배드 블록 매핑 테이블을 저장할 수 있다. 상기 배드 블록 매핑 레지스터(113-1)에 저장된 상기 배드 블록 매핑 테이블을 기초로 하여 상기 어드레스 변환부(111)는 외부로부터 수신된 로지컬 어드레스(LA) 및 배드 블록 매핑 테이블의 배드 블록 어드레스를 비교할 수 있다. 예컨대, 상기 어드레스 변환부(111)는 상기 배드 블록 매핑 테이블의 리매핑 마크의 수만큼 비교 동작을 수행할 수 있다.
또한, 상기 어드레스 변환부(111)는 상기 비교 결과 및 배드 블록에 대한 정보를 기초로 하여, 수신된 로지컬 어드레스 또는 예비 블록 어드레스를 피지컬 어드레스로 선택할 수 있다. 리매핑 마크의 수가 0인 경우에는 배드 블록이 메모리에 존재하지 않는 것을 나타내므로, 수신되는 로지컬 어드레스에 대한 비교 동작과 무관하게 로지컬 어드레스와 동일한 피지컬 어드레스가 인가될 수 있다. 로지컬 어드레스와 피지컬 어드레스가 동일하고 리매핑 마크의 수가 1 이상이면, 상기 어드레스 변환부(111)는 상기 배드 블록 매핑 레지스터(113-1)로부터 제공되는 예비 블록 어드레스를 피지컬 어드레스로 선택하여 출력할 수 있다.
상기 배드 블록 상태 제어부(113-2)는 상기 어드레스 변환부(111)의 어드레스 선택 동작에 필요한 리매핑 마크 플래그(remapping mark flag)를 생성하여 출력할 수 있다. 상기 배드 블록 매핑 레지스터(113-1)에 저장된 리매핑 마크의 개수가 1 이상인 경우에, 상기 리매핑 마크 플래그는 하이 레벨로 설정될 수 있다.
또한, 상기 배드 블록 매핑 로딩부(113-3)는 최초 부팅시에 상기 불휘발성 메모리 장치(200)에 저장된 배드 블록에 대한 정보를 상기 배드 블록 매핑 레지스터(113-1)로 로딩하는 역할을 수행한다. 즉, 플래시 메모리의 액세스가 종료되면 배드 블록에 대한 정보는 상기 배드 블록 매핑 레지스터(113-1)로부터 메타 영역(220-4)에 저장될 수 있다. 플래시 메모리가 파워 오프되는 경우에도 불휘발성 메모리 장치(200)에 저장된 배드 블록에 대한 정보인 배드 블록 매핑 테이블은 지워지지 않는다. 따라서, 플래시 메모리의 부팅시에 메타 영역(220-4)에 저장된 배드 블록 매핑 테이블은 상기 배드 블록 매핑 로딩부(113-3)를 통해 상기 배드 블록 매핑 레지스터(113-1)에 저장될 수 있다.
도 6b는 본 발명의 실시예에 따른 배드 블록 관리부(113-3)의 동작에 대한 순서도이다.
도 1 내지 도 6b를 참조하면, 먼저 데이터 저장 장치(1)가 파워-오프된 상태에서 데이터 저장 장치(1)에 전원이 공급되어 부팅이 개시된다(S610). 파워-오프 상태에서는 상기 배드 블록 매핑 레지스터(113-3)에 저장된 배드 블록 정보는 소거된 상태이므로, 로지컬 어드레스의 피지컬 어드레스로의 선택 동작은 수행되지 않는다. 하지만, 상기 메타 영역(220-4)에 저장된 배드 블록 매핑 테이블은 소거되지 않고 유지된 상태가 된다.
데이터 저장 장치(1)가 부팅되면, 메타 영역(220-4)에 저장된 배드 블록 매핑 테이블은 배드 블록 매핑 레지스터(113-1)에 저장된다(S620). 배드 블록 매핑 로딩부(113-3)는 상기 메타 영역(220-4)의 매핑 테이블에 액세스하여 상기 배드 블록 매핑 레지스터(113-1)로 로딩할 수 있다.
외부로부터 로지컬 어드레스가 입력되면(S630), 상기 배드 블록 상태 제어부(113-2)는 상기 배드 블록 매핑 레지스터(200)에 저장된 배드 블록에 매핑 테이블의 리매핑 마크의 수를 계수할 수 있다(S640).
판단 결과 리매핑 마크의 개수가 0인 경우에, 상기 어드레스 변환부(111)는 로지컬 어드레스에 상응하는 피지컬 어드레스를 선택할 수 있다(S670).
판단 결과 리매핑 마크의 개수가 0이 아닌 경우에, 상기 배드 블록 상태 제어부(113-2)는 리매핑 마크 플래스를 발생할 수 있다. 상기 리매핑 마크 플래그를 수신한 상기 어드레스 변환부(111)는 로지컬 어드레스가 배드 블록 어드레스와 일치하는지 여부를 판단할 수 있다(S650). 일치하지 않는 경우 상기 S670단계를 반복할 수 있으며, 일치하는 경우에 상기 어드레스 변환부(111)는 로지컬 어드레스에 상응하는 예비 블록 어드레스를 피지컬 어드레스로 선택할 수 있다.
도 7은 종래의 솔리드 스테이트 드라이브 컨트롤러의 연산 속도와 본 발명의 실시예에 따른 솔리드 스테이트 드라이브 컨트롤러의 연산 속도를 비교하기 위한 개념도이다.
도 1 내지 도 7을 참조하면, (a)는 종래의 솔리드 스테이트 드라이브 컨트롤러 구조에서 하나의 어드레스 변환 엔진을 이용하여 3개의 리드 또는 라이트의 호스트 커맨드 큐를 처리하는 과정을 간략하게 나타낸 것이다. 도 7에 도시된 바와 같이, 하나의 어드레스 변환 엔진만을 이용하기 때문에 병렬적인 명령어 처리가 불가능하고, 따라서 명령어를 처리하는데 상당히 긴 시간(예컨대, t0∼t2)이 소비된다.
하지만, 본 발명의 실시예에 따른 솔리즈 스테이트 디스크 컨트롤러 구조에 따르면, (b)에 도시된 바와 같이 다수의 어드레스 변환용 CPU들(110)을 이용하여 다수의 명령어들을 동시에 병렬적으로 처리함으로써 명령어 처리에 필요한 시간(예컨대, t0∼t1)을 상당히 감소시킬 수 있다.
도 8은 도 1에 도시된 데이터 저장 시스템에 대한 다른 실시예를 나타내기 위한 블록도이다.
도 1에 도시된 데이터 저장 장치(1)는 다수의 어드레스 변환용 CPU들(110)을 포함하였지만, 도 8에 도시된 데이터 저장 장치(1′)는 자체 전용 하드웨어로 구현된 다수의 어드레스 변환용 엔진들(110′)을 포함할 수 있다. 따라서 상기 다수의 어드레스 변환용 엔진들(110′)은 IP 레벨에서 구현될 수 있으며, 이 경우에 도 1에서 구비되는 데이터 메모리, 인스트럭션 메모리, 및 IPC 등이 불필요할 수 있다. 나머지의 구성 요소들은 도 1에서 기술한 바와 실질적으로 동일하므로, 구체적인 기술은 생략하도록 한다.
또한, 본 발명에 따른 실시예는 컴퓨터로 판독할 수 있는 기록 매체에 컴퓨터가 판독할 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 판독할 수 있는 기록 매체는 컴퓨터 시스템에 의하여 판독될 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함할 수 있다. 컴퓨터가 판독할 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예컨대, 인터넷을 통한 전송)의 형태로 구현되는 것도 포함될 수 있다. 또한, 컴퓨터가 판독할 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산 방식으로 컴퓨터가 판독할 수 있는 코드로 저장되고 실행될 수 있다.
본 발명은 도면에 도시된 일 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야에서 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 것을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
본 발명의 상세한 설명에서 제공되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 실시예에 따른 데이터 저장 시스템의 개략적인 블록도.
도 2는 본 발명의 실시예에 따른 어드레스 변환용 CPU의 개략적인 블록도.
도 3a 및 도 3b는 본 발명의 일 실시예에 따른 어드레스 변환 동작을 설명하기 위한 예시 표.
도 4는 본 발명의 다른 실시예에 따른 어드레스 변환 동작을 설명하기 위한 예시 표.
도 5a 내지 도 5c는 본 발명의 실시예에 따른 웨어 레벨링 동작을 설명하기 위한 개략도들.
도 6a 및 도 6b는 본 발명의 실시예에 따른 배드 블록 관리부를 설명하기 위한 블록도 및 순서도.
도 7은 종래의 솔리드 스테이트 드라이브 컨트롤러의 연산 속도와 본 발명의 실시예에 따른 솔리드 스테이트 드라이브 컨트롤러의 연산 속도를 비교하기 위한 개념도.
도 8은 도 1에 도시된 데이터 저장 시스템에 대한 다른 실시예를 나타내기 위한 블록도.

Claims (19)

  1. 다수의 채널들을 포함하는 불휘발성 메모리 장치를 제어하기 위한 컨트롤러에 있어서,
    각각이, 호스트로부터 출력되는 명령어에 응답하여 상기 다수의 채널들 중에서 적어도 하나의 채널에 대한 로지컬-피지컬 어드레스 변환을 수행하는 다수의 어드레스 변환용 CPU들; 및
    각각이, 상기 다수의 어드레스 변환용 CPU들 중에서 적어도 하나의 어드레스 변환용 CPU에서 출력된 제어신호에 응답하여, 상기 다수의 채널들 중에서 적어도 하나의 채널에 대한 액세스 동작을 제어하기 위한 다수의 플래시 메모리 컨트롤러들을 포함하는 컨트롤러.
  2. 제1항에 있어서, 상기 다수의 어드레스 변환용 CPU들 각각은,
    서로 중첩되지 않는 채널에 대해 상기 로지컬-피지컬 어드레스 변환을 병렬적으로 수행하는 컨트롤러.
  3. 제1항에 있어서, 상기 다수의 어드레스 변환용 CPU들 각각은,
    상기 호스트로부터 출력된 로지컬 어드레스를 피지컬 어드레스로 변환하기 위한 어드레스 변환부;
    상기 불휘발성 메모리 장치에 대해 웨어 레벨링 동작을 수행하고, 수행된 웨 어 레벨링 정보를 상기 어드레스 변환부에 전송하기 위한 웨어 레벨링부; 및
    상기 불휘발성 메모리 장치에 포함된 배드 블록을 관리하여 배드 블록 정보를 상기 어드레스 변환부에 전송하기 위한 배드 블록 관리부를 포함하는 컨트롤러.
  4. 제3항에 있어서, 상기 배드 블록 관리부는,
    배드 블록 매핑 테이블이 저장된 배드 블록 매핑 레지스터;
    상기 불휘발성 메모리 장치에 저장된 배드 블록 정보를 상기 배드 블록 매핑 레지스터로 로딩하기 위한 배드 블록 매핑 로딩부; 및
    상기 배드 블록 매핑 레지스터에 저장된 리매핑 마크의 개수에 기초하여 리매핑 마크 플래그를 생성하고 생성된 상기 리매핑 마크 플래그를 상기 어드레스 변환부에 전송하기 위한 배드 블록 상태 제어부를 포함하는 컨트롤러.
  5. 제4항에 있어서,
    상기 배드 블록 상태 제어부는 상기 배드 블록 매핑 레지스터에 저장된 상기 리매핑 마크의 개수가 1 이상이면 하이 레벨로 설정된 상기 리매핑 마크 플래그를 출력하고,
    상기 어드레스 변환부는, 상기 하이 레벨로 설정된 상기 리매핑 마크 플래그에 응답하여 피지컬 어드레스로서 프리 블록 어드레스를 선택하는 컨트롤러.
  6. 제3항에 있어서, 상기 웨어 레벨링부는,
    상기 불휘발성 메모리 장치에 포함된 블록들의 소거 카운트 정보를 순차적으로 스캔하고, 상기 소거 카운트 정보를 상기 어드레스 변환부로 전송하는 컨트롤러.
  7. 제6항에 있어서, 상기 어드레스 변환부는,
    수신된 상기 소거 카운트 정보에 기초하여, 소거 카운트가 상대적으로 작은 블록으로 상기 피지컬 어드레스를 선택하는 컨트롤러.
  8. 제1항에 있어서, 상기 컨트롤러는,
    상기 호스트로부터 출력된 상기 명령어를 처리하기 위한 호스트 CPU를 더 포함하고,
    상기 호스트 CPU는, 상기 명령어의 우선 순위를 결정하고 결정된 우선 순위에 따라 상기 명령어를 상기 다수의 어드레스 변환용 CPU들로 분배하는 컨트롤러.
  9. 제8항에 있어서, 상기 컨트롤러는,
    상기 호스트 CPU 및 상기 다수의 어드레스 변환용 CPU 간의 통신을 제어하기 위한 IPC(inter processor communication) 모듈을 더 포함하는 컨트롤러.
  10. 제1항에 있어서, 상기 다수의 플래시 메모리 컨트롤러들 각각은,
    상기 불휘발성 메모리 장치의 적어도 일부에 대해서 에러 정정 코딩 동작을 수행하기 위한 에러 정정 코딩부를 포함하는 컨트롤러.
  11. 제1항에 있어서, 상기 컨트롤러는,
    로지컬 어드레스와 피지컬 어드레스 간의 매핑 정보가 기록된 매핑 테이블을 포함하는 버퍼; 및
    상기 다수의 어드레스 변환용 CPU들이 상기 버퍼로의 액세스 경로를 제공하기 위한 버스 매트릭스를 더 포함하는 컨트롤러.
  12. 제11항에 있어서, 상기 다수의 어드레스 변환용 CPU들 각각은,
    시분할(time-sharing) 방식에 기초하여 상기 버스 매트릭스를 통해 상기 버퍼로 액세스하는 컨트롤러.
  13. 제1항에 있어서, 상기 컨트롤러는,
    상기 다수의 어드레스 변환용 CPU들 각각의 동작이 수행되도록 하는 명령어들이 저장되는 명령어 메모리 블록을 더 포함하고,
    상기 명령어 메모리 블록은 상기 다수의 어드레스 변환용 CPU들 간에 공유되는 컨트롤러.
  14. 다수의 채널들을 포함하는 불휘발성 메모리 장치;
    플래시 변환 계층(FTL; flash translation layer)을 구비하여 로지컬-피지컬 어드레스 변환을 수행하고, 상기 불휘발성 메모리 장치를 제어하기 위한 컨트롤러; 및
    상기 로지컬-피지컬 어드레스 변환을 위한 어드레스 매핑 정보가 기록된 어드레스 매핑 테이블을 저장하는 랜덤 액세스 메모리를 포함하고,
    상기 컨트롤러는,
    각각이, 호스트로부터 출력되는 명령어에 응답하여 상기 다수의 채널들 중에서 적어도 하나의 채널에 대한 상기 로지컬-피지컬 어드레스 변환을 수행하는 다수의 어드레스 변환용 CPU들; 및
    각각이, 상기 다수의 어드레스 변환용 CPU들 중에서 적어도 하나의 어드레스 변환용 CPU에서 출력된 제어신호에 응답하여, 상기 다수의 채널들 중에서 적어도 하나의 채널에 대한 액세스 동작을 제어하기 위한 다수의 플래시 메모리 컨트롤러들을 포함하는 데이터 저장 장치.
  15. 제14항에 있어서, 상기 어드레스 매핑 테이블은,
    상기 다수의 어드레스 변환용 CPU들 각각이 수행하는 채널들에 대한 매핑 정보가 각각 독립적으로 구비되는 데이터 저장 장치.
  16. 호스트; 및
    상기 호스트로부터 출력된 명령어에 응답하여 데이터 저장 동작을 수행하기 위한 데이터 저장 장치를 포함하고,
    상기 데이터 저장 장치는,
    다수의 채널들을 포함하는 불휘발성 메모리 장치;
    각각이 상기 다수의 채널들 중에서 적어도 하나의 채널에 대한 로지컬-피지컬 어드레스 변환 동작을 수행하는 다수의 어드레스 변환용 CPU들을 포함하는 컨트롤러; 및
    상기 로지컬-피지컬 어드레스 변환을 위한 어드레스 매핑 정보가 기록된 어드레스 매핑 테이블을 저장하는 랜덤 액세스 메모리를 포함하는 데이터 저장 시스템.
  17. 호스트 CPU가 호스트로부터 명령어를 수신하는 단계;
    상기 호스트 CPU가 상기 명령어의 우선 순위를 결정하고 결정된 우선 순위에 따라 다수의 어드레스 변환용 CPU들에 상기 명령어를 분배하는 단계; 및
    상기 다수의 어드레스 변환용 CPU들 각각이 분배된 상기 명령어에 응답하여 로지컬-피지컬 어드레스 변환 동작을 수행하는 단계를 포함하는 데이터 처리 방법.
  18. 제17항에 있어서, 상기 데이터 처리 방법은,
    상기 다수의 어드레스 변환용 CPU들 각각이 어드레스 매핑 테이블을 로딩하는 단계; 및
    상기 다수의 어드레스 변환용 CPU들 각각이 비휘발성 메모리 장치의 웨어 레벨링 정보 또는 배드 블록 정보를 수신하는 단계; 및
    상기 다수의 어드레스 변환용 CPU들 각각이 수신된 상기 웨어 레벨링 정보 또는 상기 배드 블록 정보에 기초하여 상기 로딩된 어드레스 매핑 테이블을 변경시키는 단계를 더 포함하는 데이터 처리 방법.
  19. 제18항에 있어서, 상기 다수의 어드레스 변환용 CPU들 각각이 어드레스 매핑 테이블을 로딩하는 단계는,
    상기 다수의 어드레스 변환용 CPU들 각각이 시분할(time sharing) 방식에 기초하여 버스 매트릭스를 통하여 상기 어드레스 매핑 테이블에 액세스하는 단계를 포함하는 데이터 처리 방법.
KR1020090035077A 2009-04-22 2009-04-22 컨트롤러, 이를 포함하는 데이터 저장 장치 및 데이터 저장 시스템, 및 그 방법 KR101516580B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020090035077A KR101516580B1 (ko) 2009-04-22 2009-04-22 컨트롤러, 이를 포함하는 데이터 저장 장치 및 데이터 저장 시스템, 및 그 방법
US12/763,616 US8700881B2 (en) 2009-04-22 2010-04-20 Controller, data storage device and data storage system having the controller, and data processing method
US14/207,974 US9135167B2 (en) 2009-04-22 2014-03-13 Controller, data storage device and data storage system having the controller, and data processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090035077A KR101516580B1 (ko) 2009-04-22 2009-04-22 컨트롤러, 이를 포함하는 데이터 저장 장치 및 데이터 저장 시스템, 및 그 방법

Publications (2)

Publication Number Publication Date
KR20100116396A true KR20100116396A (ko) 2010-11-01
KR101516580B1 KR101516580B1 (ko) 2015-05-11

Family

ID=42993123

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090035077A KR101516580B1 (ko) 2009-04-22 2009-04-22 컨트롤러, 이를 포함하는 데이터 저장 장치 및 데이터 저장 시스템, 및 그 방법

Country Status (2)

Country Link
US (2) US8700881B2 (ko)
KR (1) KR101516580B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104077250A (zh) * 2014-06-27 2014-10-01 Tcl集团股份有限公司 一种智能终端与存储设备的连接处理方法及装置
KR20170061431A (ko) * 2015-11-26 2017-06-05 삼성전자주식회사 스토리지 컨트롤러의 동작 방법 및 상기 스토리지 컨트롤러를 포함하는 데이터 저장 장치의 동작 방법

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8316175B2 (en) 2009-11-03 2012-11-20 Inphi Corporation High throughput flash memory system
JP5559616B2 (ja) * 2010-06-17 2014-07-23 ラピスセミコンダクタ株式会社 半導体メモリ装置
US9058288B2 (en) * 2011-04-03 2015-06-16 Apple Inc. Redundant storage in non-volatile memory by storing redundancy information in volatile memory
JP2012221038A (ja) * 2011-04-05 2012-11-12 Toshiba Corp メモリシステム
US9170878B2 (en) 2011-04-11 2015-10-27 Inphi Corporation Memory buffer with data scrambling and error correction
US8687451B2 (en) 2011-07-26 2014-04-01 Inphi Corporation Power management in semiconductor memory system
US9158726B2 (en) 2011-12-16 2015-10-13 Inphi Corporation Self terminated dynamic random access memory
US8949473B1 (en) 2012-02-16 2015-02-03 Inphi Corporation Hybrid memory blade
JP2013171343A (ja) * 2012-02-17 2013-09-02 Toshiba Corp ストレージデバイス
US9230635B1 (en) 2012-03-06 2016-01-05 Inphi Corporation Memory parametric improvements
KR101979392B1 (ko) * 2012-05-17 2019-05-16 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법
US8861277B1 (en) * 2012-06-26 2014-10-14 Inphi Corporation Method of using non-volatile memories for on-DIMM memory address list storage
CN104854554A (zh) * 2012-09-06 2015-08-19 百科容(科技)公司 储存转换层
US9647799B2 (en) 2012-10-16 2017-05-09 Inphi Corporation FEC coding identification
US9734050B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for managing background operations in a multi-layer memory
US9223693B2 (en) * 2012-12-31 2015-12-29 Sandisk Technologies Inc. Memory system having an unequal number of memory die on different control channels
US9336133B2 (en) 2012-12-31 2016-05-10 Sandisk Technologies Inc. Method and system for managing program cycles including maintenance programming operations in a multi-layer memory
US9734911B2 (en) * 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for asynchronous die operations in a non-volatile memory
US9348746B2 (en) 2012-12-31 2016-05-24 Sandisk Technologies Method and system for managing block reclaim operations in a multi-layer memory
US9465731B2 (en) 2012-12-31 2016-10-11 Sandisk Technologies Llc Multi-layer non-volatile memory system having multiple partitions in a layer
US9170755B2 (en) 2013-05-21 2015-10-27 Sandisk Technologies Inc. Command and data selection in storage controller systems
US20150161038A1 (en) * 2013-12-10 2015-06-11 Conversant Intellectual Property Management Inc. System and Method of Operation for High Capacity Solid-State Drive
WO2015086846A2 (fr) * 2013-12-12 2015-06-18 Commissariat A L'energie Atomique Et Aux Energies Alternatives Systeme de gestion de l'usure d'une memoire electronique
US10025704B2 (en) * 2013-12-27 2018-07-17 Crossbar, Inc. Memory system including PE count circuit and method of operating the same
US10185499B1 (en) 2014-01-07 2019-01-22 Rambus Inc. Near-memory compute module
CN104850500B (zh) * 2014-02-14 2019-06-07 腾讯科技(深圳)有限公司 用于数据存储的数据处理方法和装置
US9553670B2 (en) 2014-03-03 2017-01-24 Inphi Corporation Optical module
US9874800B2 (en) 2014-08-28 2018-01-23 Inphi Corporation MZM linear driver for silicon photonics device characterized as two-channel wavelength combiner and locker
TWI556254B (zh) * 2014-10-14 2016-11-01 慧榮科技股份有限公司 資料儲存裝置及其資料存取方法
KR20160051367A (ko) * 2014-11-03 2016-05-11 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법
US9325419B1 (en) 2014-11-07 2016-04-26 Inphi Corporation Wavelength control of two-channel DEMUX/MUX in silicon photonics
US9473090B2 (en) 2014-11-21 2016-10-18 Inphi Corporation Trans-impedance amplifier with replica gain control
KR20160070920A (ko) * 2014-12-10 2016-06-21 에스케이하이닉스 주식회사 맵 테이블을 갖는 컨트롤러 및 반도체 메모리 장치를 포함하는 메모리 시스템 및 그것의 동작 방법
US9553689B2 (en) 2014-12-12 2017-01-24 Inphi Corporation Temperature insensitive DEMUX/MUX in silicon photonics
US9461677B1 (en) 2015-01-08 2016-10-04 Inphi Corporation Local phase correction
US9547129B1 (en) 2015-01-21 2017-01-17 Inphi Corporation Fiber coupler for silicon photonics
US9484960B1 (en) 2015-01-21 2016-11-01 Inphi Corporation Reconfigurable FEC
US9548726B1 (en) 2015-02-13 2017-01-17 Inphi Corporation Slew-rate control and waveshape adjusted drivers for improving signal integrity on multi-loads transmission line interconnects
US9632390B1 (en) 2015-03-06 2017-04-25 Inphi Corporation Balanced Mach-Zehnder modulator
KR20170013697A (ko) * 2015-07-28 2017-02-07 삼성전자주식회사 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템
US10042553B2 (en) 2015-10-30 2018-08-07 Sandisk Technologies Llc Method and system for programming a multi-layer non-volatile memory having a single fold data path
US10120613B2 (en) 2015-10-30 2018-11-06 Sandisk Technologies Llc System and method for rescheduling host and maintenance operations in a non-volatile memory
US10133490B2 (en) 2015-10-30 2018-11-20 Sandisk Technologies Llc System and method for managing extended maintenance scheduling in a non-volatile memory
US9778855B2 (en) 2015-10-30 2017-10-03 Sandisk Technologies Llc System and method for precision interleaving of data writes in a non-volatile memory
KR20170053278A (ko) * 2015-11-06 2017-05-16 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US20170147499A1 (en) * 2015-11-25 2017-05-25 Sandisk Technologies Llc Multi-Level Logical to Physical Address Mapping Using Distributed Processors in Non-Volatile Storage Device
US9847839B2 (en) 2016-03-04 2017-12-19 Inphi Corporation PAM4 transceivers for high-speed communication
JPWO2017158997A1 (ja) * 2016-03-16 2019-01-24 ソニー株式会社 メモリコントローラ、メモリシステム、情報処理システム、メモリ制御方法およびプログラム
US10176108B2 (en) * 2016-09-30 2019-01-08 Intel Corporation Accessing memory coupled to a target node from an initiator node
KR102409760B1 (ko) 2017-03-17 2022-06-17 에스케이하이닉스 주식회사 메모리 시스템
KR20190091035A (ko) * 2018-01-26 2019-08-05 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR20200095103A (ko) 2019-01-31 2020-08-10 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
KR20200117256A (ko) 2019-04-03 2020-10-14 에스케이하이닉스 주식회사 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법
CN110647296B (zh) * 2019-09-18 2022-10-04 北京机电工程研究所 一种无人智能装备遥测记录装置以及方法
US11042432B1 (en) 2019-12-20 2021-06-22 Western Digital Technologies, Inc. Data storage device with dynamic stripe length manager
CN112416810A (zh) * 2020-11-10 2021-02-26 深圳宏芯宇电子股份有限公司 存储级存储装置及其数据操作方法、电子设备
US11507319B2 (en) * 2021-02-04 2022-11-22 Silicon Motion, Inc. Memory controller having a plurality of control modules and associated server
CN117043752A (zh) * 2021-03-29 2023-11-10 美光科技公司 边带通信管理
CN117251117B (zh) * 2023-11-15 2024-01-26 中国科学院国家空间科学中心 一种基于串行总线轮询管理的星载固态存储系统

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL105638A0 (en) 1992-05-13 1993-09-22 Southwest Bell Tech Resources Storage controlling system and method for transferring information
JP3105092B2 (ja) 1992-10-06 2000-10-30 株式会社東芝 半導体メモリ装置
US8037234B2 (en) 2003-12-02 2011-10-11 Super Talent Electronics, Inc. Command queuing smart storage transfer manager for striping data to raw-NAND flash modules
US7243208B2 (en) * 2003-08-13 2007-07-10 Renesas Technology Corp. Data processor and IP module for data processor
US20090193184A1 (en) * 2003-12-02 2009-07-30 Super Talent Electronics Inc. Hybrid 2-Level Mapping Tables for Hybrid Block- and Page-Mode Flash-Memory System
JP5130646B2 (ja) 2005-06-06 2013-01-30 ソニー株式会社 記憶装置
JP2007048184A (ja) 2005-08-12 2007-02-22 Renesas Technology Corp メモリカード
US7711887B1 (en) * 2007-04-30 2010-05-04 Hewlett-Packard Development Company, L.P. Employing a native fully buffered dual in-line memory module protocol to write parallel protocol memory module channels
JP2009199414A (ja) * 2008-02-22 2009-09-03 Renesas Technology Corp マイクロコンピュータ
JP5032371B2 (ja) * 2008-03-01 2012-09-26 株式会社東芝 メモリシステム
US8327066B2 (en) * 2008-09-30 2012-12-04 Samsung Electronics Co., Ltd. Method of managing a solid state drive, associated systems and implementations
US8566508B2 (en) * 2009-04-08 2013-10-22 Google Inc. RAID configuration in a flash memory data storage device
KR101600951B1 (ko) * 2009-05-18 2016-03-08 삼성전자주식회사 고체 상태 드라이브 장치
US20110047316A1 (en) * 2009-08-19 2011-02-24 Dell Products L.P. Solid state memory device power optimization

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104077250A (zh) * 2014-06-27 2014-10-01 Tcl集团股份有限公司 一种智能终端与存储设备的连接处理方法及装置
KR20170061431A (ko) * 2015-11-26 2017-06-05 삼성전자주식회사 스토리지 컨트롤러의 동작 방법 및 상기 스토리지 컨트롤러를 포함하는 데이터 저장 장치의 동작 방법

Also Published As

Publication number Publication date
US20140195726A1 (en) 2014-07-10
KR101516580B1 (ko) 2015-05-11
US8700881B2 (en) 2014-04-15
US20100274952A1 (en) 2010-10-28
US9135167B2 (en) 2015-09-15

Similar Documents

Publication Publication Date Title
KR101516580B1 (ko) 컨트롤러, 이를 포함하는 데이터 저장 장치 및 데이터 저장 시스템, 및 그 방법
CN111684417B (zh) 用以存取异质存储器组件的存储器虚拟化
US20230334002A1 (en) Access Optimization in Aggregated and Virtualized Solid State Drives
US11573742B2 (en) Dynamic data placement for collision avoidance among concurrent write streams
US11966329B2 (en) Address map caching for a memory system
US10965751B2 (en) Just a bunch of flash (JBOF) appliance with physical access application program interface (API)
CN112130755B (zh) 具有多个主机接口的聚合和虚拟化固态驱动器
US11354262B2 (en) Parallel operations in aggregated and virtualized solid state drives
CN114258535A (zh) 使用PCIe连接的远存储器的存储器分层
KR20200016074A (ko) 데이터 처리 시스템 및 그의 동작 방법
US11461256B2 (en) Quality of service levels for a direct memory access engine in a memory sub-system
US11675724B2 (en) Memory sub-system with multiple ports having single root virtualization
CN112912834B (zh) 存取单元和管理片段存储器操作
KR20220070034A (ko) 로드 명령을 위한 타임 투 리브
US10861580B2 (en) Memory system for controlling nonvolatile memory
CN116643690A (zh) 存储器子系统处的主机限定区群组配置
US12056045B2 (en) Scratchpad cache for gaming and IoT hosts
US11995314B2 (en) Memory management

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190329

Year of fee payment: 5