KR101086876B1 - 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법 - Google Patents

예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법 Download PDF

Info

Publication number
KR101086876B1
KR101086876B1 KR1020090093594A KR20090093594A KR101086876B1 KR 101086876 B1 KR101086876 B1 KR 101086876B1 KR 1020090093594 A KR1020090093594 A KR 1020090093594A KR 20090093594 A KR20090093594 A KR 20090093594A KR 101086876 B1 KR101086876 B1 KR 101086876B1
Authority
KR
South Korea
Prior art keywords
block
replacement
blocks
logical
bad
Prior art date
Application number
KR1020090093594A
Other languages
English (en)
Other versions
KR20110035762A (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 KR1020090093594A priority Critical patent/KR101086876B1/ko
Priority to US12/647,185 priority patent/US8392647B2/en
Publication of KR20110035762A publication Critical patent/KR20110035762A/ko
Application granted granted Critical
Publication of KR101086876B1 publication Critical patent/KR101086876B1/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/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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

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

반도체 스토리지 시스템이 개시된다. 개시된 반도체 스토리지 시스템은, 복수의 메모리 블록을 포함하며, 상기 메모리 블록 내 불량 블록 발생시 상기 불량 블록의 교체용 블록들을 포함하는 플래시 메모리 영역, 및 상기 교체용 블록들을 포함하는 논리적 블록에 대해 논리적-물리적 어드레스 맵핑을 수행하고, 상기 불량 블록에 대응되도록 상기 논리적 블록의 논리적 어드레스를 이용하여 상기 교체용 블록들을 선택하는 메모리 컨트롤러를 포함한다.
플래시 메모리, 할당, 불량 블록,

Description

예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법{Solid State Storage System For Controlling of Reserved Area Flexibly and Method of Controlling the Same}
본 발명은 반도체 스토리지 시스템 및 그 제어 방법에 관한 것으로서, 보다 구체적으로는 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법에 관한 것이다.
일반적으로 비휘발성 메모리를 많은 휴대용 정보 기기의 저장용 메모리로 사용하고 있다. 더 나아가, 최근에는 PC(Personal Computer)에서 HDD(Hard Disk Drive)를 대신하여 낸드(NAND) 플래시 메모리를 사용한 SSD(Solid State Drive)가 출시되고 있어 급속도로 HDD 시장을 잠식할 것으로 전망되고 있다.
이러한 SSD를 사용하다 보면 불량 블록이 발생될 수 있다. 불량 블록은 플래시 메모리의 공정 결함에 의해 발생할 수 있고, 잦은 동작으로 인해 플래시 메모리 셀의 열화 특성에 기인할 수도 있다. 이러한 불량 블록은 예비 영역의 블록으로 대체되도록 하여 불량 블록의 물리적 영역이 다시 참조되지 않도록 해야 한다. 이를 위해, 예비 영역 공간을 할당한다. 즉, 별도의 물리적 영역을 할당하여 불량 블록 의 교체 전용으로 이용하도록 하고 있다.
잘 알려진 바와 같이, SSD에서는 블록의 효율적인 관리를 위해 어드레스 맵핑을 수행한다. 어스레스 맵핑은 외부로부터 제공되는 블록의 논리적 어드레스를 실제 저장되는 블록의 물리적 영역의 어드레스와 연결시키는 것이다. 이 때, 예비 영역은 불량 블록의 대체 전용으로 할당된 영역이므로, 노멀 데이터 영역과는 무관하므로 어드레스 맵핑에서 제외되었다. 그러나, 불량 블록의 위치 정보를 관리하기 위한 별도의 불량 블록 관리 맵의 추가적 할당이 필요하다. 이와 같이 불량 블록 관리 맵을 추가적으로 할당하는 것은 전체적인 메모리 효율을 저하시킨다. 더 나아가, 불량 블록의 발생이 적을 경우, 이미 할당된 잉여의 예비 영역에 대한 이용 효율은 저하된다.
본 발명의 기술적 과제는 불량 블록을 관리하는 반도체 스토리지 시스템을 제공하는 것이다.
본 발명의 다른 기술적 과제는 불량 블록을 관리하는 반도체 스토리지 시스템의 제어 방법을 제공하는 것이다.
본 발명의 기술적 과제를 달성하기 위하여, 본 발명의 일 실시예에 따른 반도체 스토리지 시스템은, 복수의 메모리 블록을 포함하며, 상기 메모리 블록 내 불량 블록 발생시 상기 불량 블록의 교체용 블록들을 포함하는 플래시 메모리 영역, 및 상기 교체용 블록들을 포함하는 논리적 블록에 대해 논리적-물리적 어드레스 맵핑을 수행하고, 상기 불량 블록에 대응되도록 상기 논리적 블록의 논리적 어드레스를 이용하여 상기 교체용 블록들을 선택하는 메모리 컨트롤러를 포함한다.
본 발명의 기술적 과제를 달성하기 위하여, 본 발명의 다른 실시예에 따른 반도체 스토리지 시스템은, 복수의 메모리 블록을 포함하며, 상기 메모리 블록 내 불량 블록 발생시 상기 불량 블록과 교체되는 교체용 블록들을 포함하는 플래시 메모리 영역, 및 상기 교체용 블록들에 대해 논리적 어드레스 및 물리적 어드레스를 할당하고, 불량 블록 발생시, 상기 불량 블록에 대응되도록 상기 교체용 블록들 중 어느 하나를 선택하고, 상기 불량 블록에 대응하여 교체되지 않은 잉여의 교체용 블록들에 대해서는 웨어 레벨링을 수행하도록 제어하는 메모리 컨트롤러를 포함한 다.
본 발명의 다른 기술적 과제를 달성하기 위하여, 반도체 스토리지 시스템의 제어 방법은, 교체용 블록들을 포함하여 논리적 블록 전체에 대해 어드레스 맵핑 테이블을 작성하는 단계, 불량 블록 발생 시, 상기 논리적 블록의 논리적 어드레스 최대값 및 포인터를 이용하여 상기 교체용 블록의 논리적 어드레스를 산출하는 단계, 상기 산출된 상기 교체용 블록이 맵핑된 물리적 어드레스를, 상기 불량 블록의 물리적 어드레스와 치환하는 단계 및 웨어 레벨링 시, 잉여 교체용 블록들에 대해서 웨어 레벨링을 수행하는 단계를 포함한다.
본 발명의 일 실시예에 따르면 불량 블록의 교체용인 예비 영역을 보다 유동적으로 관리할 수 있다. 예비 영역에 대해 어드레스 맵핑을 수행하고, 포인터를 이용하여 예비 영역내 블록들을 교체용 블록으로 선택함으로써, 별도의 관리 맵 없이도 예비 영역의 블록들의 선택이 용이하다. 또한, 예비 영역을 교체 전용으로 이용하지 않아도 되므로, 웨어 레벨링 수행시 데이터 블록처럼 이용 가능하다. 따라서, 시스템 메모리의 효율을 향상시킬 수 있고, 실질적인 메모리 셀의 데이터 저장 효율을 향상시킬 수 있으며, 플래시 수명을 향상시킬 수 있다.
이하에서는 본 발명의 일 실시예에 따른 반도체 스토리지 시스템에 대하여 첨부된 도면을 참조하여 설명하도록 한다.
먼저, 도 1을 참조하여, 본 발명의 실시예에 따른 반도체 스토리지 시스템에 대해서 설명하기로 한다.
도 1은 본 발명의 일 실시예에 따른 반도체 스토리지 시스템(100)의 블록도이다. 여기서, 반도체 스토리지 시스템(100)은 낸드 플래시 메모리를 이용한 스토리지 시스템으로 예시한다.
도 1을 참조하면, 반도체 스토리지 시스템(100)은 호스트 인터페이스(110), 버퍼부(120), MCU(130), 메모리 컨트롤러(140) 및 메모리 영역(150)을 포함한다.
우선, 호스트 인터페이스(110)는 버퍼부(120)와 연결된다. 호스트 인터페이스(110)는 외부 호스트 (미도시)와 버퍼부(120)간에 제어 명령, 어드레스 신호 및 데이터 신호를 송수신한다. 호스트 인터페이스(110)와 외부 호스트 (미도시)간의 인터페이스 방식은 직렬 ATA(Serial Advanced Technology Attachment;SATA), 병렬 ATA(Parallel Advanced Technology attachment;PATA) 및 SCSI, Express Card, PCI-Express 방식 중 어느 하나일 수 있으며 제한되지 않는다.
버퍼부(120)는 호스트 인터페이스(110)로부터의 출력 신호들을 버퍼링하거나, 논리적 어드레스 및 물리적 어드레스간의 맵핑 정보 및 메모리 영역의 블록 할당 정보, 외부로부터 수신된 데이터를 임시 저장한다. 버퍼부(120)는 SRAM(Static Random Access Memory)을 이용한 버퍼일 수 있다.
MCU(Micro Control Unit; 130)는 호스트 인터페이스(110)간에 제어 명령, 어드레스 신호 및 데이터 신호등을 송수신하거나, 이러한 신호들에 의해 메모리 컨트롤러(140)를 제어하기도 한다.
메모리 컨트롤러(140)는 메모리 영역(150)의 복수개의 낸드 플래시 메모리 소자 중 소정 낸드 플래시 메모리 소자(ND)를 선택하고, 라이트, 삭제 또는 리드 명령을 제공한다. 특히, 본 발명의 일 실시예에 따른 메모리 컨트롤러(140)는 불량 블록 발생 대비를 위한 예비 영역을 유동적으로 관리할 수 있다.
종래에는 각 블록마다 불량 블록에 대응할 소정 사이즈의 예비 영역을 할당 했다. 이 때, 예비 영역은 물리적으로 고정된 어드레스들을 갖고 있었다. 이는 이들 예비 영역에 대해서는 어드레스 맵핑이 적용되지 않음을 의미한다. 그리하여, 불량 블록 발생시마다 고정된 물리적 어드레스 범위내의 블록들이 선택되어 대체되었다. 이와 같이, 고정된 물리적 어드레스들을 갖는 예비 영역의 블록들이므로, 불량 블록으로 대체되지 않은 예비 영역들은 더 이상 이용하지도 못하고 잉여의 영역으로 존재했다. 또한, 예비 영역으로 할당된 블록들에 대해서는 불량 블록의 위치 정보들을 저장하기 위해 불량 블록 관리 맵을 추가로 할당해야 했다.
그러나, 본 발명의 일 실시예에 따른 메모리 컨트롤러(140)는 교체용 블록들, 즉 불량 블록에 대비한 예비 영역을 포함하여 어드레스 맵핑을 전체적으로 수행한다. 즉, 본 발명의 일 실시예에 따른 예비 영역은 물리적 어드레스 외에도 논리적 어드레스를 갖게 되는 것이다. 또한, 메모리 컨트롤러(140)는 논리적 블록의 어드레스 사이즈, 또는 논리적 블록의 최대 어드레스를 이용하여 할당된 예비 영역의 블록들을 선택할 수 있다. 그러므로, 예비 영역에 대한 불량 블록 관리 맵을 별도로 추가하지 않아도 된다. 또한, 이미 예비 영역으로 할당된 블록일지라도 불량 블록의 발생 빈도가 낮다면, 잉여의 예비 영역의 블록들은 노멀의 데이터 영역처럼 웨어 레벨링(wear-leveling)에 참여시킬 수 있고, 데이터 영역으로도 할당될 수 있 다.
이로써, 본 발명의 일 실시예에 따르면 메모리 효율을 높임과 동시에 예비 영역에 대한 이용 효율을 제고시킬 수 있다.
메모리 영역(150)은 메모리 컨트롤러(140)에 의해 제어되어 데이터의 라이트, 삭제 및 리드 동작이 수행된다. 여기서, 메모리 영역(150)은 낸드(NAND) 플래시 메모리일 수 있다. 본 발명의 일 실시예에서는 낸드(NAND) 플래시 메모리의 셀은 SLC(Single Level Cell) 또는 MLC(Multi Level Cell) 일 수 있다. 이러한 메모리 영역(150)은 다수의 페이지를 포함하는 다수의 블록으로 구성된 칩이 복수개 구비될 수 있다.
도 2는 도 1에 따른 예비 영역에 대한 어드레스 맵핑을 개념적으로 도시한 블록도이다.
도 2를 참조하면, 논리적 블록들은 0번부터 99번의 어드레스로 할당되는 것으로 예시되어 있다. 이러한 다수개의 논리 블록들 중 소정의 논리 블록들이 예비 영역(RA)으로 할당된다. 이 때, 예비 영역(RA)은 해당 영역내 블록들의 위치를 파악 또는 산출하기 용이하도록 일련의 논리적 어드레스 군으로 할당하는 것이 바람직하다.
본 발명의 일 실시예에서는 예비 영역(RA)에 대해서, 논리적 블록들의 어드레스의 최대값, 즉 MSB(Most Significant Bit)부터 차감하는 순으로 할당하는 것으로 예시하였다. 이는 추가의 맵핑 정보 없이, 간단히 논리적 블록 어드레스의 최대값 또는 논리적 블록 어드레스의 최대 사이즈를 이용하여 예비 영역(RA)에 대한 정 보를 제공하도록 하기 위함이다. 다시 말해서, 이로 인해 예비 영역(RA)을 나타낼 별도의 추가 관리 맵을 할당하지 않도록 하는 것이다. 이에 대해서는 도 3을 참조하여 자세히 설명하기로 한다.
본 발명의 일 실시예에 따르면, 예비 영역(RA)도 어드레스 맵핑 대상의 영역이므로, 메모리 컨트롤러(도 1의 140 참조)에 의해 논리적 어드레스 및 물리적 어드레스를 가질 수 있다.
예컨대, 예비 영역(RA)의 99번 어드레스를 갖는 논리적 블록은 물리적 블록의 3번 어드레스에 할당하도록 설정할 수 있는 것이다. 이를 논리적-물리적 어드레스 맵핑 테이블에는 (99, 3)으로 저장할 수 있을 것이다. 기타, 예비 영역(RA)의 언급되지 않은 다른 논리적 블록들도 물리적 어드레스를 갖는 것은 물론이다. 논리적 블록에서의 소정의 어드레스 군을 갖고 있는 예비 영역(RA)은 물리적 블록에서는 어드레스 맵핑에 의해 분산되어 위치함을 알 수 있다.
도 3은 도 1 및 도 2에 따라 불량 블록에 대해 예비 영역(RA)을 할당하는 것을 개념적으로 도시한 블록도이다.
도 3을 참조하면, 4번의 논리적 어드레스를 갖는 블록이 불량 블록이 된 경우를 나타내고 있다.
이에 대해, 4번의 논리적 어드레스의 블록대신 예비 영역(RA)중 어느 하나의 블록이 선택되어 대체되어야 할 것이다. 본 발명의 일 실시예에 따르면, 가장 처음 발생한 불량 블록에 대해서는 논리적 어드레스 최대값을 갖는 논리적 어드레스의 블록이 선택되도록 한다. 즉, 불량 블록 발생시마다 논리적 어드레스 최대값으로부 터 순차적으로 차감된 어드레스를 갖는 블록을 예비 영역(RA)의 블록으로 선택하도록 한다. 이 때, 순차적으로 차감하는 기준은 포인터(pointer)를 설정하는 것으로 가능하다.
구체적으로 설명하면, 우선 포인터를 0으로 초기화한다. 그리하여, 최초 불량 블록 발생시 논리적 어드레스 최대값으로부터 포인터 0를 차감하여 대체될 예비 영역(RA)의 논리적 블록을 선택하도록 한다. 이후, 불량 블록 발생시마다 1씩 증가시키며 포인터를 갱신한다. 이에 따라, 불량 블록 발생시마다 논리적 어드레스 최대값으로부터 포인터를 차감하게 되면, 실질적으로는 불량 블록 발생시마다 최대 어드레스값부터 순차적으로 차감된 논리적 어드레스를 갖는 블록들을 지정할 수 있고, 이러한 블록들은 불량 블록을 대체할 예비 영역(RA)의 블록들로 설정될 수 있게 된다. 따라서, 별도의 불량 블록 관리 맵 없이도, 포인터와 논리적 블록의 논리적 어드레스 최대값을 이용해서 예비 영역(RA)을 할당하고 선택할 수 있다. 포인터의 최대값 즉, 상한 임계치는 불량 블록 발생 빈도를 고려하여 설정할 수 있다. 그러므로, 이러한 포인터에 의해 예비 영역(RA)의 사이즈 또는 예비 영역(RA)의 블록 수가 결정될 수 있다.
계속해서, 4번의 논리적 어드레스를 갖는 블록이 불량 블록이 된 경우를 설명하기로 한다. 불량 블록의 어드레스 맵핑된 결과는 (4, 1), 즉 논리적 4번 어드레스의 블록은 1번의 물리적 어드레스를 갖도록 할당되었다. 이때, 불량 블록이 발생하였으므로 이 때, 논리적 어드레스의 최대값인 99번의 논리적 블록은 어드레스 맵핑 결과에 따라 3번 물리적 어드레스를 갖는 것으로 예시되어 있다.
그리하여, 불량 블록의 물리적 어드레스를 변경하기 위해, 불량 블록의 (4, 1) 대신 (4, 3)으로 할당하고, 예비 영역(RA)의 99번의 논리적 어드레스는 불량 블록의 실질적인 물리적 위치를 지정할 수 있도록 1번, 즉 (99, 1)으로 맵핑되도록 한다. 이로써, 불량 블록은 예비 영역으로 치환되어, 불량 블록의 논리적 어드레스는 그대로 유지하고 물리적 위치만 변경하도록 할 수 있다.
도 4는 도 1에 따른 반도체 스토리지 시스템의 제어 방법을 나타낸 순서도이다.
도 1 내지 도 4를 참조하면, 메모리 컨트롤러(140)가 예비 영역(RA)을 포함하여 어드레스 맵핑 테이블을 작성한다(S10).
본 발명의 일 실시예에 따른 예비 영역(RA)은 논리적 어드레스 및 물리적 어드레스를 모두 갖게 되어, 불량 블록 교체에 참여하지 않은 잉여의 예비 영역(RA)의 블록들은 데이터 블록처럼 사용될 수도 있다. 또한, 이후 사용될 포인터의 값도 이 때 초기화 시키는 것이 바람직하다. 예비 영역(RA)의 블록 선정시 기준으로 논리적 어드레스 번지를 사용할 것으로 예시한다면, 포인터는 0으로 초기화시키도록 한다.
실질적으로 라이트 및 리드 동작 중, 불량 블록이 발생하였는지 판단한다(S20).
만약, 불량 블록이 발생되었다면(Yes) 예비 영역(RA)의 블록들 중 어느 하나와 교체하기 위해, 예비 영역(RA)의 블록을 선택하는 것이 중요하다.
논리적 블록의 논리적 어드레스 최대값으로부터 포인터를 차감하여, 교체될 논리적 어드레스를 산출할 수 있다(S30).
전술한 바와 같이, 논리적 블록의 어드레스 최대값이면 초기화된 포인터는 0으로 설정되므로, 최초 불량 블록 발생 시에는 논리적 어드레스 최대값을 갖는 논리적 블록이 교체용 블록으로 선택될 수 있다.
산출된 예비 영역(RA)의 블록의 논리적 어드레스에 맵핑된 물리적 어드레스와, 발생된 불량 블록의 실제 물리적 어드레스를 상호 치환함으로써(S40), 불량 블록의 물리적 영역은 예비 영역(RA)의 블록으로 교체될 수 있다.
이 후, 포인터의 값을 1 증가시키며 갱신시킨다(S50). 그리하여, 다시 동작 도중 불량 블록이 발생하면 상기의 방법들(S20-S50)을 반복하며, 불량 블록에 대응하여 예비 영역(RA)의 다른 블록들로 순차적으로 교체할 수 있다.
한편, 동작이 소정 진행되는 도중 웨어 레벨링(wear leveling) 시점이 되었는지 판단하여(S60), 웨어 레벨링 시점이 아니라면 상기의 동작을 계속 반복하도록 한다. 그러나, 더 이상의 불량 블록도 발생하지 않으면서 동작이 소정 진행되어 예컨대 삭제 주기 횟수가 임계치에 이르렀다면 웨어 레벨링 시점임을 감지하여(Yes), 잉여의 예비 영역(RA)에 대한 처리를 수행한다(S70).
즉, 예비 영역(RA)내 포함된 블록들이 불량 블록의 교체용으로 모두 이용되지 않았다면, 이들 잉여의 예비 영역(RA)내 블록들을 데이터 영역처럼 이용하도록 한다. 그리하여, 잉여의 예비 영역(RA)내 블록들도 웨어 레벨링 수행 대상이 되도록 하여, 데이터 블록으로 선택될 수 있도록 한다. 잉여의 예비 영역(RA)은 최종 저장된 포인터 값을 이용하면 산출될 수 있다. 즉, 논리적 블록의 논리적 어드레스 최대값으로부터 최종 저장된 포인터를 차감하면, 잉여의 예비 영역(RA)내 블록임을 알 수 있다. 웨어 레벨링 수행시에는, 이들 잉여의 예비 영역(RA)내 블록들도 포함하여 데이터의 분산을 유도할 수 있다. 이로써, 더 많은 데이터 블록을 활용하게 됨으로써 데이터의 저장 영역 효율이 높아질 수 있다.
이와 같이, 본 발명의 일 실시예에 따르면 예비 영역(RA)을 고정된 영역이 아니라 유동적으로 이용할 수 있다. 즉, 예비 영역(RA)은 불량 블록의 교체용으로도 이용될 수 있지만, 예비 영역(RA)이 교체되지 않고 남아 있다면 데이터 블록으로도 이용될 수 있다. 또한, 예비 영역(RA)의 블록 선정을 위해 별도의 맵이 필요하지 않고, 오직 논리적 어드레스와 포인터를 이용해 간단히 선택 가능하므로 반도체 스토리지 시스템의 제어가 용이하다.
본 발명이 속하는 기술분야의 당업자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있으므로, 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
도 1은 본 발명의 일 실시 예에 따른 반도체 스토리지 시스템의 블록도,
도 2는 도 1에 따른 예비 영역의 어드레스 맵핑을 개념적으로 도시한 블록도,
도 3은 도 1에 따른 불량 블록의 교체 과정을 나타낸 개념적인 블록도, 및
도 4는 도 1에 따른 반도체 스토리지 시스템의 제어 방법을 나타낸 플로우 차트이다.
<도면의 주요 부분에 대한 부호의 설명>
110: 호스트 인터페이스 120: 버퍼부
130: MCU 140: 메모리 컨트롤러
150: 메모리 영역

Claims (18)

  1. 복수의 메모리 블록을 포함하며, 상기 메모리 블록 내 불량 블록 발생시 상기 불량 블록의 교체용 블록들을 포함하는 플래시 메모리 영역; 및
    상기 복수의 메모리 블록 및 상기 교체용 블록들을 포함하는 논리적 블록에 대한 논리적-물리적 어드레스 맵핑을 수행하고, 불량 블록 발생시 상기 교체용 블록의 논리적-물리적 어드레스 맵핑 정보를 이용하여 상기 교체용 블록들 중 어느 하나를 선택하는 메모리 컨트롤러를 포함하는 반도체 스토리지 시스템.
  2. 제 1항에 있어서,
    상기 메모리 컨트롤러는 상기 교체용 블록들의 위치 및 선택 순서를 결정하는 포인터를 설정하는 반도체 스토리지 시스템.
  3. 제 2항에 있어서,
    상기 불량 블록 발생 시, 상기 메모리 컨트롤러는, 상기 논리적 블록의 논리적 어드레스의 최대값으로부터 상기 포인터를 차감한 결과값을 논리적 어드레스로 갖는 블록을, 상기 불량 블록에 대응되는 교체 대상 블록으로 선택하는 반도체 스토리지 시스템.
  4. 제 3항에 있어서,
    상기 교체용 블록들의 범위는 상기 포인터의 초기값(initial value) 및 상한 임계치(limit value)에 의해 정의될 수 있는 반도체 스토리지 시스템
  5. 복수의 메모리 블록을 포함하며, 상기 메모리 블록 내 불량 블록 발생시 상기 불량 블록과 교체되는 교체용 블록들을 포함하는 플래시 메모리 영역; 및
    상기 복수의 메모리 블록 및 상기 교체용 블록들을 포함하는 논리적 블록에 대해 논리적 어드레스 및 물리적 어드레스를 할당하고, 불량 블록 발생시 상기 교체용 블록들의 논리적-물리적 어드레스 맵핑 정보를 이용하여 상기 교체용 블록들 중 어느 하나를 선택하고, 상기 불량 블록에 대응하여 교체되지 않은 적어도 하나의 잉여 교체용 블록에 대해서는 웨어 레벨링을 수행하여, 상기 잉여 교체용 블록이 데이터 블록으로 이용되도록 제어하는 메모리 컨트롤러를 포함하는 반도체 스토리지 시스템.
  6. 제 5항에 있어서,
    상기 메모리 컨트롤러는 상기 교체용 블록들의 위치 및 선택 순서를 결정하는 포인터를 설정하는 반도체 스토리지 시스템.
  7. 제 6항에 있어서,
    상기 불량 블록 발생 시, 상기 메모리 컨트롤러는, 상기 논리적 블록의 논리적 어드레스의 최대값으로부터 상기 포인터를 차감한 결과값을 논리적 어드레스로 갖는 블록을, 상기 불량 블록에 대응되는 교체 대상 블록으로 선택하는 반도체 스토리지 시스템.
  8. 제 6항에 있어서,
    상기 메모리 컨트롤러는, 상기 불량 블록 발생시마다 상기 포인터를 1씩 증가한 값으로 갱신하는 반도체 스토리지 시스템.
  9. 제 5항에 있어서,
    상기 메모리 컨트롤러는, 상기 불량 블록의 논리적 어드레스는 그대로 유지하고, 상기 불량 블록의 물리적 어드레스를 선택된 상기 교체용 블록의 물리적 어드레스와 치환하는 반도체 스토리지 시스템.
  10. 제 6항에 있어서,
    상기 메모리 컨트롤러는, 상기 포인터의 최종값을 이용하여 상기 교체용 블록을 노멀의 데이터 블록과 함께 상기 웨어 레벨링을 수행하도록 제어하는 반도체 스토리지 시스템.
  11. 제 6항에 있어서,
    상기 포인터의 최대값은 상기 교체용 블록 내 포함된 블록의 수들의 총합을 의미하는 반도체 스토리지 시스템.
  12. 제 11항에 있어서,
    상기 교체용 블록들의 범위는 상기 포인터의 초기값(initial value) 및 상한 임계치(limit value)에 의해 정의될 수 있는 반도체 스토리지 시스템
  13. 데이터 블록 및 교체용 블록들을 포함하는 논리적 블록 전체에 대해 어드레스 맵핑 테이블을 작성하는 단계;
    불량 블록 발생 시, 상기 논리적 블록의 논리적 어드레스 최대값 및 포인터를 이용하여 상기 교체용 블록의 논리적 어드레스를 산출하는 단계;
    상기 산출된 상기 교체용 블록이 맵핑된 물리적 어드레스를, 상기 불량 블록의 물리적 어드레스와 치환하는 단계; 및
    웨어 레벨링 시, 잉여 교체용 블록들에 대해서 웨어 레벨링을 수행하여 상기 잉여 교체용 블록이 데이터 블록으로 이용되도록 하는 단계를 포함하는 반도체 스토리지 시스템의 제어 방법.
  14. 제 13항에 있어서,
    상기 어드레스 맵핑 테이블을 작성하는 단계에서, 상기 교체용 블록들의 위치 및 선택 순서를 결정하는 상기 포인터를 초기화하여 설정하는 단계를 더 포함하는 반도체 스토리지 시스템의 제어 방법.
  15. 제 13항에 있어서,
    상기 교체용 블록의 논리적 어드레스를 산출하는 단계는, 상기 논리적 블록의 논리적 어드레스 최대값으로부터 상기 포인터를 차감하는 단계인 반도체 스토리지 시스템의 제어 방법.
  16. 제 13항에 있어서,
    상기 치환하는 단계는,
    상기 불량 블록의 논리적 어드레스는 그대로 유지하고, 선택된 상기 교체용 블록의 물리적 어드레스와 상기 불량 블록의 물리적 어드레스를 서로 교체하는 단계인 반도체 스토리지 시스템의 제어 방법.
  17. 제 13항에 있어서,
    상기 웨어 레벨링을 수행하는 단계는, 저장된 상기 포인터의 최종값을 이용하여 산출된 논리적 어드레스를 갖는 논리적 블록이 교체되었는지 판단하는 것을 더 포함하는 반도체 스토리지 시스템의 제어 방법.
  18. 제 17항에 있어서,
    상기 산출된 논리적 어드레스를 갖는 논리적 블록이 상기 교체 대상이 아니었다면, 상기 교체용 블록을 잉여의 교체용 블록으로 판단하여 노멀의 데이터 블록과 함께 상기 웨어 레벨링을 수행하도록 제어하는 반도체 스토리지 시스템의 제어 방법.
KR1020090093594A 2009-09-30 2009-09-30 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법 KR101086876B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090093594A KR101086876B1 (ko) 2009-09-30 2009-09-30 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법
US12/647,185 US8392647B2 (en) 2009-09-30 2009-12-24 Solid state storage system for controlling reserved area flexibly and method for controlling the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090093594A KR101086876B1 (ko) 2009-09-30 2009-09-30 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법

Publications (2)

Publication Number Publication Date
KR20110035762A KR20110035762A (ko) 2011-04-06
KR101086876B1 true KR101086876B1 (ko) 2011-11-25

Family

ID=43781566

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090093594A KR101086876B1 (ko) 2009-09-30 2009-09-30 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법

Country Status (2)

Country Link
US (1) US8392647B2 (ko)
KR (1) KR101086876B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220078222A (ko) 2020-12-03 2022-06-10 한국항공우주연구원 메모리의 블록 할당 시스템 및 그 할당 방법

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8671241B2 (en) 2011-09-13 2014-03-11 Dell Products Lp Systems and methods for using reserved solid state nonvolatile memory storage capacity for system reduced power state
US10379741B2 (en) * 2014-04-17 2019-08-13 Seagate Technology Llc Dynamic storage device region provisioning
KR102403266B1 (ko) 2015-06-22 2022-05-27 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
KR20180001681A (ko) * 2016-06-27 2018-01-05 에스케이하이닉스 주식회사 메모리 시스템, 이의 어드레스 맵핑 방법 및 억세스 방법
CN108170366A (zh) 2016-12-06 2018-06-15 华为技术有限公司 存储设备中的存储介质管理方法、装置和存储设备
US10445199B2 (en) 2016-12-22 2019-10-15 Western Digital Technologies, Inc. Bad page management in storage devices
CN110096450B (zh) * 2018-01-29 2021-05-11 北京思朗科技有限责任公司 多粒度并行存储系统及存储器
US10642728B2 (en) 2018-02-28 2020-05-05 Micron Technology, Inc. Storage class memory status
CN109144900B (zh) * 2018-09-04 2023-04-07 杭州阿姆科技有限公司 一种ssd中块转换层的实现方法
CN109491930B (zh) * 2018-11-16 2023-04-11 杭州阿姆科技有限公司 一种ssd中优化写地址分配的方法
US11373729B2 (en) * 2020-06-16 2022-06-28 Micron Technology, Inc. Grown bad block management in a memory sub-system
KR20220068535A (ko) * 2020-11-19 2022-05-26 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000011677A (ja) 1998-06-25 2000-01-14 Tokyo Electron Ltd フラッシュメモリシステム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7013376B2 (en) * 2000-12-20 2006-03-14 Hewlett-Packard Development Company, L.P. Method and system for data block sparing in a solid-state storage device
US6973531B1 (en) * 2002-10-28 2005-12-06 Sandisk Corporation Tracking the most frequently erased blocks in non-volatile memory systems
US7873885B1 (en) * 2004-01-20 2011-01-18 Super Talent Electronics, Inc. SSD test systems and methods
KR100622349B1 (ko) * 2004-08-04 2006-09-14 삼성전자주식회사 불량 블록 관리 기능을 가지는 플레시 메모리 장치 및플레시 메모리 장치의 불량 블록 관리 방법.
KR20090014823A (ko) 2007-08-07 2009-02-11 삼성전자주식회사 배드 블록을 리맵핑하는 플래시 메모리 장치 및 그것의배드 블록의 리맵핑 방법
US7675776B2 (en) * 2007-12-21 2010-03-09 Spansion, Llc Bit map control of erase block defect list in a memory
KR101535460B1 (ko) * 2008-08-25 2015-07-10 삼성전자주식회사 배드 블록 리맵핑 기능을 갖는 불휘발성 메모리 장치 및 그배드 블록 리맵핑 방법
TWI467369B (zh) * 2008-10-01 2015-01-01 A Data Technology Co Ltd 混合密度記憶體系統及其控制方法
TWI379194B (en) * 2009-01-15 2012-12-11 Phison Electronics Corp Block management method for flash memory, and storage system and controller using the same

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000011677A (ja) 1998-06-25 2000-01-14 Tokyo Electron Ltd フラッシュメモリシステム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220078222A (ko) 2020-12-03 2022-06-10 한국항공우주연구원 메모리의 블록 할당 시스템 및 그 할당 방법

Also Published As

Publication number Publication date
US20110078364A1 (en) 2011-03-31
US8392647B2 (en) 2013-03-05
KR20110035762A (ko) 2011-04-06

Similar Documents

Publication Publication Date Title
KR101086876B1 (ko) 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법
KR101343237B1 (ko) 메모리 블록 선택
US9298534B2 (en) Memory system and constructing method of logical block
US8060719B2 (en) Hybrid memory management
US8560770B2 (en) Non-volatile write cache for a data storage system
TWI474324B (zh) 平均讀寫記憶元件的方法及記憶體系統
KR101090394B1 (ko) 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법
US8296504B2 (en) Data management method and flash memory storage system and controller using the same
KR20100012938A (ko) 웨어 레벨링을 수행하는 반도체 스토리지 시스템 및 그제어 방법
US9465537B2 (en) Memory system and method of controlling memory system
KR20120081351A (ko) Ftl을 수행하는 비휘발성 메모리 장치 및 그의 제어 방법
US9312011B1 (en) Data writing method, memory storage device and memory control circuit unit
US10824340B2 (en) Method for managing association relationship of physical units between storage area and temporary area, memory control circuit unit, and memory storage apparatus
US10430288B2 (en) Data backup method, data recovery method and storage controller
KR101027687B1 (ko) 라이트 동작을 제어하는 반도체 스토리지 시스템 및 그 제어 방법
CN111639041B (zh) 存储器控制方法、存储器存储装置及存储器控制器
KR20100055201A (ko) 플래시 메모리장치, 및 데이터 기록방법
KR20100062191A (ko) 플래시 메모리장치, 및 그 제어방법
JP4952741B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Legal Events

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

Payment date: 20141021

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151020

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161024

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20171025

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20181022

Year of fee payment: 8