KR20150030226A - 반도체 저장매체에 대한 구성 파라미터를 결정하는 장치, 시스템, 및 방법 - Google Patents

반도체 저장매체에 대한 구성 파라미터를 결정하는 장치, 시스템, 및 방법 Download PDF

Info

Publication number
KR20150030226A
KR20150030226A KR20150026666A KR20150026666A KR20150030226A KR 20150030226 A KR20150030226 A KR 20150030226A KR 20150026666 A KR20150026666 A KR 20150026666A KR 20150026666 A KR20150026666 A KR 20150026666A KR 20150030226 A KR20150030226 A KR 20150030226A
Authority
KR
South Korea
Prior art keywords
module
storage
data
storage medium
storage cell
Prior art date
Application number
KR20150026666A
Other languages
English (en)
Inventor
우드 로버트
현 지
선 헤어롱
Original Assignee
퓨전-아이오, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/189,402 external-priority patent/US8380915B2/en
Application filed by 퓨전-아이오, 인크. filed Critical 퓨전-아이오, 인크.
Publication of KR20150030226A publication Critical patent/KR20150030226A/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/026Detection or location of defective auxiliary circuits, e.g. defective refresh counters in sense amplifiers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • G11C16/28Sensing or reading circuits; Data output circuits using differential sensing or reference cells, e.g. dummy cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/021Detection or location of defective auxiliary circuits, e.g. defective refresh counters in voltage or current generators
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check

Abstract

본 발명에 따르면, 반도체 저장매체에 대한 하나 이상의 구성 파라미터를 결정함으로써 반도체 저장매체의 유용성을 개선시키기 위한 장치, 시스템, 및 방법이 개시된다. 매체특징 모듈은 필요한 반도체 저장매체의 저장셀 세트에 대한 하나 이상의 저장매체 특징을 참조하고, 구성 파라미터 모듈은, 하나 이상의 저장매체 특징에 근거하여, 저장셀 세트에 대한 구성 파라미터를 결정하고, 저장셀 구성 모듈은 결정된 구성 파라미터를 사용하는 저장셀 세트를 구성한다.

Description

반도체 저장매체에 대한 구성 파라미터를 결정하는 장치, 시스템, 및 방법 {APPARATUS, SYSTEM, AND METHOD FOR DETERMINING A CONFIGURATION PARAMETER FOR SOLID-STATE STORAGE MEDIA}
본 발명은 반도체 저장매체에 관한 것으로서, 특히 반도체 저장매체에 대한 구성 파라미터(configuration parameter)에 관한 것이다.
본 출원은 미국 특허출원 번호 13/015,458 "독출전압 임계값을 결정하기위한 장치, 시스템, 및 방법"(출원인: John Strasser 외, 출원일: 2011년 1월 27) 및 미국 특허출원 번호 13/175,637 "단층 셀 모드에서 다층 셀 저장을 위한 장치, 시스템, 및 방법"(출원인: Robert Wood 외, 출원일: 2011년 7월 1일)에 대한 우선권 주장 출원으로서, 이 두 특허를 참고로서 본 명세서에 포함시킨다. 미국 특허출원 번호 13/015,458은 미국 가출원 번호 61/298,861 "반도체 저장매체에 대한 독출전압 임계값을 결정하기 위한 장치, 시스템, 및 방법"(출원인: John Strasser 외, 출원일: 2010년 1월 27일) 및 미국 가출원 번호 61/305,205 "반도체 저장매체에 대한 독출전압 임계값을 결정하기 위한 장치, 시스템, 및 방법"(출원인: John Strasser 외, 출원일: 2010년 2월 17일)에 대한 우선권 주장 출원으로서, 이 두 특허를 참고로서 본 명세서에 포함시킨다.
많은 반도체 저장장치가 저장셀(storage cell)에 저장되는 각기 다른 이진 값들에 따라 구별된다. 저장셀에의 저장은, 저장셀의 독출전압 레벨(read voltage level)을 바탕으로, 저장셀의 저항률(resistivity)을 바탕으로, 또는 저장셀의 그 밖의 구성 파라미터(configuration parameter)를 바탕으로 이루어진다. 반도체 저장장치는, 저장셀에 저장되는 이산값(discrete values)을 분리하기 위하여 독출전압 임계값, 저항률 임계값 등을 하나 이상 사용할 수 있다.
그러나 저장셀에 대한 임계값 또는 그 밖의 구성 파라미터는 시간이 지남에 따라 변화될 수 있다. 예를 들어, 저장셀 손상, 저장셀 누설, 온도, 그 밖의 저장셀에 대한 방해요인으로 인해 저장셀에 대한 임계값이 변동될 수 있어서, 저장셀에 대한 보다 더 적합한 다른 구성 파라미터들을 만들어야 한다. 누설량 및 기타 방해 요인은 저장셀의 사용 기간이 늘어남에 따라 증가된다. 저장셀의 독출전압 레벨 또는 그 밖의 구성 파라미터의 변동이 저장셀에 대한 임계값을 넘는 경우에는, 저장셀에서 독출한 데이터 값이 저장셀에 기입되는 데이터 값과 다르기 때문에 데이터 오류가 발생하게 된다.
전술한 설명에서 볼 때, 반도체 저장매체의 유용성을 개선하는 장치, 시스템 및 방법에 관한 필요성이 존재함이 명백하다. 본 발명의 장치, 시스템, 및 방법은 구성 파라미터를 최적화하기 위한, 반도체 저장매체에 대한 하나 이상의 구성 파라미터를 결정함으로써 반도체 저장매체의 유용성을 개선할 수 있는 장점이 있다.
본 발명은 현재의 기술 상황에 대응하여 개발되었다. 구체적으로 말하자면, 현재 존재하고 있는 반도체 저장장치가 아직 완전히 해결하지 못한 기술상의 문제점 및 필요성에 대응하여 개발된 것이다. 따라서 본 발명은 위에서 설명한 해당 기술의 문제점 전부 또는 많은 부분을 극복하는, 반도체 저장매체의 유용성 개선을 위한 장치, 시스템, 및 방법을 제공하기 위해 개발된 것이다.
본 발명은, 반도체 저장매체의 유용성을 개선하기 위한 방법을 제공한다. 일실시예에서, 본 방법은 반도체 저장매체의 저장셀 세트에 대한 하나 이상의 저장매체 특징을 참조하는 과정을 포함한다. 다른 실시예에서, 본 방법은 하나 이상의 저장매체 특징에 근거하여, 저장셀 세트에 대한 구성 파라미터를 결정하는 과정을 포함한다. 또다른 실시예에서, 본 방법은 결정된 구성 파라미터를 사용하는 저장셀 세트를 구성하는 과정을 포함한다.
일실시예에서, 본 방법은 업데이트 이벤트에 대한 응답으로서, 저장셀 세트에 대한 하나 이상의 저장매체 특징을 업데이트하는 과정을 추가로 포함한다. 다른 실시예에서, 상기 업데이트 이벤트는, 저장셀 세트를 포함하는 반도체 저장매체의 배경 스캔을 포함한다. 또다른 실시예에서, 상기 업데이트 이벤트는 저장셀 세트에 대한 독출 요청을 포함한다. 추가 실시예에서, 상기 업데이트 이벤트는 저장셀 세트에 인접한 저장셀에 대한 독출 요청을 포함한다. 또다른 실시예에서, 상기 업데이트 이벤트는 저장셀 세트를 포함하는 장치의 개시 작용을 포함한다. 다른 실시예에서, 상기 업데이트 이벤트는 저장셀 세트를 포함하는 장치의 종료 작용을 포함한다. 또다른 실시예에서, 상기 업데이트 이벤트는 저장셀 세트에 대한 가비지 취합 작용을 포함한다.
일실시예에서, 본 방법에는 하나 이상의 저장매체 특징의 변화에 대한 응답으로서, 저장셀 세트에 대한 구성 파라미터를 업데이트하는 과정이 추가로 포함된다. 또다른 실시예에서, 본 방법에는 반도체 저장매체의 다수의 서로 다른 저장셀 세트를 위한 다수의 추가 구성 파라미터를 결정하는 과정이 포함된다. 일실시예에서, 이 다수의 추가 구성 파라미터는 다수의 서로 다른 저장셀 세트에 대한 저장매체 특징을 기초로 한다. 다른 실시예에서, 본 방법에는 이 다수의 추가 구성 파라미터를 사용하는 다수의 서로 다른 저장셀 세트를 구성하는 과정이 추가로 포함된다.
일실시예에서, 상기 구성 파라미터는 인터페이스를 통해 변경가능한 저장셀 세트의 파라미터를 포함한다. 다른 실시예에서, 상기 구성 파라미터는 독출 전압을 포함한다. 또다른 실시예에서, 상기 구성 파라미터는, 증가형 계단 펼스를 이용한 프로그래밍 작용에서의 펄스 계단의 크기를 포함한다. 다른 실시예에서, 상기 구성 파라미터는 증가형 계단 펼스를 이용한 프로그래밍 작용의 최대 반복실행 수를 포함한다. 추가 실시예에서 상기 구성 파라미터는 프로그래밍 작용에 사용되는 프로그래밍 검증 임계값을 포함한다. 다른 실시예에서, 상기 구성 파라미터는 증가형 계단 펄스를 이용한 프로그래밍 작용 실행시의 초기 편향을 포함한다. 또다른 실시예에서, 상기 구성 파라미터는 증가형 계단 펼스를 이용한 소거 작용에서의 펄스 계단의 크기를 포함한다. 추가 실시예에서, 상기 구성 파라미터는, 증가형 계단 펼스를 이용한 소거 작용의 최대 반복실행 수를 포함한다. 다른 실시예에서, 상기 구성 파라미터는 소거 작용에 사용되는 소거 검증 임계값을 포함한다. 또다른 실시예에서, 상기 구성 파라미터는, 증가형 계단 펄스를 이용한 소거 작용 실행시의 초기 편향을 포함한다.
일실시예에서, 결정된 구성 파라미터를 사용하는 저장셀 세트를 구성하는 과정은, 트리거에 대한 응답으로서 수행된다. 다른 실시예에서, 상기 트리거는 하나 이상의 저장매체 특징의 변화를 포함한다. 또다른 실시예에서, 상기 트리거는 저장셀 세트에 대한 독출 요청을 포함한다. 추가 실시예에서, 상기 트리거는 저장셀 세트를 포함하는 장치에 대한 개시 작용을 포함한다. 다른 실시예에서, 상기 트리거는 저장셀 세트를 포함하는 장치에 대한 정상적인 종료 작용을 포함한다.
일실시예에서, 저장매체 특징은 저장셀 세트에 대한 프로그램/소거 사이클 수를 포함한다. 또다른 실시예에서, 저장매체 특징은 저장셀 세트에 대한 독출 수를 포함한다. 다른 실시예에서, 저장매체 특징은 저장셀 세트에 대한 이전의 기입 이후의 보존 시간을 포함한다. 추가 실시예에서, 저장매체 특징은 저장셀 세트에 대한 온도를 포함한다. 특정 실시예에서, 저장매체 특징은 저장셀 세트에 대한 사용례를 포함한다. 또다른 실시예에서, 저장매체 특징은 및 저장셀 세트에 대한 오류 통계자료를 포함한다.
일실시예에서, 상기 결정된 구성 파라미터는 목표 저장셀 세트를 근거로 결정된다. 다른 실시예에서, 상기 목표 저장셀 세트는 조절된 사용 특징을 갖는다. 또다른 실시예에서, 저장셀 세트에 대해 결정된 구성 파라미터는 목표 저장셀 세트에 대해 결정된 구성 파라미터를 기반으로 한다. 추가 실시예에서, 상기 결정된 구성 파라미터는 목표 저장셀 세트에 대한 하나 이상의 저장매체 특징을 기반으로 한다.
일실시예에서, 저장셀 세트에 대한 구성 파라미터를 결정하는 과정은, 저장셀 세트에 대한 하나 이상의 저장매체 특징을 목표 저장셀 세트에 대한 적어도 하나 이상의 저장매체 특징과 비교하는 과정을 포함한다. 다른 실시예에서, 저장셀 세트에 대한 구성 파라미터를 결정하는 과정은, 저장셀 세트에 대한 적어도 하나의 저장매체 특징과 목표 저장셀 세트에 대한 적어도 하나의 저장매체 특징 사이의 차이에 근거하여, 저장셀 세트에 대한 구성 파라미터를 결정하는 과정을 포함한다.
본 발명에 따른, 반도체 저장매체의 유용성을 개선시키기 위한 장치에는, 반도체 저장매체의 유용성을 개선시키기 위해 기능적으로 실행가능한 단계들로 구성되는 다수의 모듈이 제공된다. 개시된 실시예에서, 이들 모듈에는 매체특징 모듈, 구성 파라미터 모듈, 저장셀 구성 모듈, 특징 업데이트 모듈, 구성 업데이트 모듈이 포함된다.
일실시예에서, 매체특징 모듈은 필요한 반도체 저장매체의 저장셀 세트에 대한 하나 이상의 저장매체 특징을 참조한다. 일실시예에서, 구성 파라미터 모듈은, 하나 이상의 저장매체 특징에 근거하여, 저장셀 세트에 대한 구성 파라미터를 결정한다. 또다른 실시예에서, 저장셀 구성 모듈은 결정된 구성 파라미터를 사용하는 저장셀 세트를 구성한다.
일실시예에서, 특징 업데이트 모듈은, 업데이트 이벤트에 대한 응답으로서, 저장셀 세트에 대한 하나 이상의 저장매체 특징을 업데이트한다. 다른 실시예에서, 구성 업데이트 모듈은, 하나 이상의 저장매체 특징의 변화에 대한 응답으로서, 저장셀 세트에 대한 구성 파라미터를 업데이트한다.
일실시예에서, 상기 매체특징 모듈은 저장셀 세트에 대한 하나 이상의 저장매체 특징을 저장매체 특징 저장소에 유지시킨다. 다른 실시예에서, 상기 저장매체 특징 저장소는 반도체 저장매체의 다수의 서로 다른 저장셀 세트에 대한 저장매체 특징을 포함한다.
일실시예에서, 상기 구성 파라미터 모듈은 저장셀 세트에 대한, 결정된 구성 파라미터를 저장매체 특징 저장소에 유지시킨다. 일실시예에서, 상기 구성 파라미터 저장소는 반도체 저장매체의 다수의 서로 다른 저장셀 세트에 대한 구성 파라미터를 포함한다.
일실시예에서, 저장매체 특징은 저장셀 세트에 대한 프로그램/소거 사이클 수를 포함한다. 또다른 실시예에서, 저장매체 특징은 저장셀 세트에 대한 독출 수를 포함한다. 추가 실시예에서, 저장매체 특징은 저장셀 세트에 대한 이전의 기입 이후의 보존 시간을 포함한다. 다른 실시예에서, 저장매체 특징은 저장셀 세트에 대한 온도를 포함한다. 또다른 실시예에서, 저장매체 특징은 저장셀 세트에 대한 사용례를 포함한다. 일시예에서, 저장매체 특징은 및 저장셀 세트에 대한 오류 통계자료를 포함한다.
본 발명은 또한 반도체 저장매체의 유용성을 개선시키기 위한 시스템을 제공한다. 이 시스템은 반도체 저장매체를 포함하는 반도체 저장장치로 구현할 수 있다. 특정 실시예에서, 이 시스템은 매체특징 모듈, 구성 파라미터 모듈, 저장셀 구성 모듈을 포함한다.
일실시예에서, 상기 매체특징 모듈은, 필요한 반도체 저장매체의 저장셀 세트에 대한 하나 이상의 저장매체 특징을 참조한다. 다른 실시예에서, 상기 구성 파라미터 모듈은, 하나 이상의 저장매체 특징에 근거하여, 저장셀 세트에 대한 구성 파라미터를 결정한다. 일실시예에서, 상기 저장셀 구성 모듈은 결정된 구성 파라미터를 사용하는 저장셀 세트를 구성한다.
일실시예에서, 본 시스템은 반도체 저장장치와 통신하는 호스트 장치를 추가로 포함한다. 다른 실시예에서, 매체특징 모듈, 구성 파라미터 모듈, 및/또는 저장셀 구성 모듈의의 적어도 일부분은 상기 호스트 장치에 설치된 반도체 저장장치를 위한 장치 드라이버의 일부이다.
본 명세서 전체에서, 기능과 장점에 대한 언급, 또는 이와 유사한 언어 표현이, 모든 기능과 장점을 특정 실시예 하나에서 실현할 수 있다는 것을 의미하는 것은 아니다. 오히려, 기능과 장점을 설명하는 표현을, 특정 기능, 장점, 특징이 하나 이상의 실시예에 포함된다는 의미로 이해해야 한다. 따라서 본 명세서 전반에 걸쳐 기능과 장점의 설명 및 유사한 언어 표현들이 동일한 실시예를 언급할 경우도 있지만 반드시 그러한 것은 아니다.
또한, 실시예들에 관해 설명한 기능, 장점 및 특징은 임의의 적절한 방식으로 결합할 수 있다. 관련 분야에서 숙련된 자(당업자)는 이들 실시예가, 특정 실시예의 하나 이상의 특정 기능이나 장점 없이도 구현가능함을 알게 될 것이다. 다른 경우에, 특정 실시예에서, 모든 실시예에서 개시할 수는 없는 추가적인 기능과 장점을 알 수 있을 것이다.
다양한 실시예의 이러한 기능과 장점은 이하의 상세한 설명 및 특허청구범위에 의해 보다 완전해질 것이며, 설명한 실시예들의 실시에 의해서 확실히 알게 될 것이다.
본 발명에 따르면, 구성 파라미터를 최적화하기 위하여 반도체 저장매체에 대한 하나 이상의 구성 파라미터를 결정하기 때문에, 반도체 저장매체의 유용성을 개선할 수 있다. 즉, 본 발명은, 종래 기술의 많은 문제점(저장셀에 대한 임계값 또는 그 밖의 구성 파라미터가 시간이 지남에 따라 변화되어, 저장셀에서 독출한 데이터 값이 저장셀에 기입되는 데이터 값과 다르게 되는 데이터 오류가 발생하는 문제 등)을 극복한다.
본 발명의 장점을 쉽게 이해할 수 있도록, 첨부 도면에 도시된 특정 실시예를 참조하여 본 발명에 대해 좀 더 구체적으로 설명할 것이다. 이하의 도면들은 본 발명의 전형적인 실시예를 도시하는 것에 불과한 것으로서, 발명의 범위를 제한하는 것으로 간주하면 안된다는 것을 이해할 것이다. 이하, 본 발명을 이하의 도면을 통해서 보다 더 구체적이고 상세하게 설명하고자 한다.
도 1은 본 발명에 따른, 반도체 저장매체의 유용성 개선을 위한 시스템의 일실시예를 설명하는 블록도이다.
도 2는 본 발명에 따른, 반도체 저장매체를 위한 반도체 저장장치 제어기의 일실시예를 설명하는 블록도이다.
도 3a는 본 발명에 따른, 반도체 저장매체에 대한 기입데이터 파이프라인 및 독출데이터 파이프라인을 갖는 반도체 저장 제어부의 일실시예를 설명하는 블록도이다.
도 3b는 본 발명에 따른, 반도체 저장장치 제어기의 다른 실시예를 설명하는 블록도이다.
도 4는 본 발명에 따른 구성 모듈의 일실시예를 설명하는 블록도이다.
도 5는 본 발명에 따른 사전구성 모듈의 일실시예를 설명하는 블록도이다.
도 6a는 본 발명에 따른, 반도체 저장매체의 저장요소 어레이의 일실시예를 설명하는 블록도이다.
도 6b는 본 발명에 따른, 반도체 저장매체의 저장요소 어레이의 다른 실시예를 설명하는 블록도이다.
도 6c는 본 발명에 따른 반도체 저장매체의 다층 저장셀 세트에 대한 구성 파라미터의 일실시예를 설명하는 블록도이다.
도 6d는 본 발명에 따른, 반도체 저장매체의 다층 저장셀 세트에 대한, 조정된 구성 파라미터의 일실시예를 설명하는 블록도이다.
도 7a는 본 발명에 따른 매체특징 모듈 및 저장매체 특징 저장소의 일실시예를 설명하는 블록도이다.
도 7b는 본 발명에 따른 저장매체 특징 저장소의 일실시예를 설명하는 블록도이다.
도 8a는 본 발명에 따른 구성 파라미터 모듈과 구성 파라미터 저장소의 일실시예를 설명하는 블록도이다.
도 8b는 본 발명에 따른 구성 파라미터 저장소의 일실시예를 설명하는 블록도이다.
도 9는 본 발명에 따른, 반도체 저장매체의 유용성을 개선하는 방법의 일실시예를 설명하는 플로우챠트이다.
도 10은 본 발명에 따른, 반도체 저장매체의 유용성을 개선하기 위한 방법의 다른 실시예를 설명하는 플로우챠트이다.
본 명세서에서 설명한 많은 기능 단위들을 그 구현상의 독립성을 강조하기 위해 '모듈'이라고 명명하였다. 예를 들어, 모듈은 커스텀 VLSI 회로 또는 게이트어레이와, 로직 칩·트랜지스터 등의 기성품 반도체, 또는 그 밖의 개별 부품 등으로 구성되는 하드웨어 회로로 구현된다. 모듈은 또한, 전계 프로그램가능 게이트어레이(field programmable gate array), 프로그램가능 어레이 로직(programmable array logic), 프로그램가능 논리 소자(programmable logic device) 등의 프로그램가능 하드웨어 장치 내에서 구현할 수 있다.
모듈은 또한, 다양한 종류의 프로세서로 실행하기 위한 소프트웨어로 구현될 수 있다. 예를 들어, 실행 가능한 코드로 이루어진 특정 모듈은 컴퓨터 명령어의 하나 이상의 물리적 또는 논리적 블록으로 구성될 수 있다(여기서 컴퓨터 명령어는, 예를 들어, 객체, 절차, 또는 함수로 구성할 수 있다). 그럼에도 불구하고, 특정 모듈의 실행가능한 코드들은 물리적으로 함께 위치해야 할 필요는 없고, 서로 다른 명령어들을 서로 다른 위치에 저장하여서 모듈을 구성할 수도 있다(이들이 논리적으로 서로 연동됨으로써 모듈을 구성하게 되며 모듈의 상기 언급한 목적을 이루게 됨).
실행가능한 코드로 된 모듈은 단일 명령일 수도 또는 다수의 명령일 수도 있으며, 심지어는 몇 개의 서로 다른 코드 세그먼트에 걸쳐서, 서로 다른 프로그램 사이에, 그리고 몇 개의 메모리 소자에 걸쳐서 분산될 수 있다. 마찬가지로, 연산 데이터를 본 명세서에서는 모듈 내에서 특정하고 설명하였는바, 연산 데이터를 임의의 적절한 형태로 구현하고 임의의 적절한 데이터 구조 유형 내에서 조직화할 수 있다. 연산 데이터는 하나의 데이터 세트(data set)로서 취합되거나, 또는, 서로 다른 위치(서로 다른 저장장치도 포함되는 개념임)에 걸쳐서 분산될 수 있고, 또한, 시스템이나 네트워크 상의 최소한 일부에 단순히 전자 신호로서 존재할 수도 있다. 모듈 또는 모듈 일부를 소프트웨어로 구현하는 경우에는, 이 소프트웨어 부분은 하나 이상의 컴퓨터 판독가능한 매체에 저장된다.
본 명세서 전체에서, "일실시예", "실시예", 또는 이와 유사한 문구가 의미하는 것은, 이 실시예에 관련하여 설명한 구체적인 기능, 구조, 또는 특징이 본 발명의 적어도 일실시예에 포함된다는 것이다. 따라서 본 명세서 전체에서 "일실시예에서", "실시예에서", 및 이와 유사한 문구의 외형은(반드시는 아니지만) 모두 동일 일실시예를 지칭할 수 있다.
컴퓨터 판독가능 매체는, 기계가 읽을 수 있는 명령어들을 디지털 처리장치의 메모리소자에 저장할 수 있는 한, 어떠한 형태의 것이라도 될 수 있다. 컴퓨터 판독가능 매체는 콤팩트 디스크(CD), 디지털 비디오 디스크(DVD), 자기 테이프, 베르누이(Bernoulli) 드라이브, 자기 디스크, 펀치 카드, 플래시 메모리, 집적회로, 기타 디지털 처리장치의 메모리소자에 의해 구현할 수 있다.
나아가, 여기서 설명한 본 발명의 기능, 구조, 또는 특징은 하나 이상의 실시예에 적절한 임의의 방식으로 결합될 수 있다. 이하의 설명에서는 발명의 실시예의 철저한 이해를 위하여, 다양한 구체적인 세부 사항, 즉, 프로그래밍 예, 소프트웨어 모듈, 사용자 선택사항, 네트워크 트랜잭션(transaction), 데이터베이스 질의(query), 데이터베이스 구조, 하드웨어 모듈, 하드웨어 회로, 하드웨어 칩 등에 대한 설명을 제공하기로 한다. 그러나 관련 기술 분야에서 숙련된 자(당업자)는 하나 이상의 구체적인 세부 사항, 또는 다른 방법, 다른 구성 요소, 다른 자료 등이 없이도 본 발명을 실시할 수 있음을 알게 될 것이다. 본 발명의 관점을 모호하게 하지 않도록 하기 위해, 어떠한 경우에는, 잘 알려진 구조, 자료, 연산(또는 동작)에 대해서 상세하게 설명하지 않았다.
여기에 포함된 플로우챠트는 전반적인 논리적 흐름을 나타내고 있다. 따라서 도시한 순서 및 명명한 단계는 제시된 방법의 일실시예를 나타내는 것이다. 도시한 방법의 하나 이상의 단계, 또는 부분에 대한 기능, 논리, 또는 효과면와 등가인, 다른 단계 및 방법을 착안해낼 수 있을 것이다. 또한, 채택한 형식 및 부호는 본 방법의 논리적 단계를 설명하기 위해 제공된 것으로, 본 방법의 범위를 제한하는 것으로 이해해서는 안된다. 다양한 화살표 및 선 종류를 플로우챠트에서 사용하지만, 이들이 본 방법의 범위를 제한하는 것이 아님을 이해해야 한다. 사실, 몇몇 화살표 또는 다른 연결자들은 본 방법의 논리적 흐름만을 나타내는 데 사용할 수 있다. 예를 들어, 화살표는, 본 방법의 나열된 단계들 사이에서의 불특정 기간 동안 대기하거나 모니터링하는 시간을 나타낼 수 있다. 또한, 특정 방법이 일어나는 순서는 도시한 해당 단계의 순서를 엄격하게 준수할 수도 있고 그렇지 않을 수도 있다.
반도체 저장 시스템(SOLID-STATE STORAGE SYSTEM)
도 1은 본 발명에 따른 반도체 저장매체(110)의 유용성 개선을 위한 시스템(100)의 일실시예를 설명하는 블록도이다. 이 시스템(100)은 반도체 저장장치(102), 반도체 저장 제어부(104), 기입데이터 파이프라인(write data pipeline)(106), 독출데이터 파이프라인(read data pipeline)(108), 반도체 저장매체(110), 컴퓨터(112), 클라이언트(114), 그리고 컴퓨터 네트워크(116)를 포함한다. 이들에 대해 이하에서 설명한다.
시스템(100)에는 최소한 하나의 반도체 저장장치(102)가 포함되어 있다. 다른 실시예에서 시스템(100)에는 두 개 이상의 반도체 저장장치(102)가 포함되어 있다. 각 반도체 저장장치(102)에는, 플래시 메모리, 나노 랜덤액세스 메모리(nano random access memory)("nano RAM 또는 NRAM"), 자기저항 RAM(magneto-resistive RAM)("MRAM"), 동적 RAM(dynamic RAM)("DRAM"), 상변화 RAM(phase change RAM)("PRAM"), 레이스트랙 메모리(racetrack memory), 멤리스터 메모리(memristor memory), 나노크리스탈선 메모리(nanocrystal wire memory), 실리콘산화물 기반 10나노미터 이하급 프로세스 메모리(silicon-oxide based sub-10 nanometer process memory), 그래핀 메모리(graphene memory), 실리콘 산화물 질화물 산화물 실리콘 메모리(silicon-oxide-nitride-oxide-silicon memory)("SONOS"), 저항성 RAM(resistive RAM)("RRAM"), 프로그램가능 금속셀(programmable metallization cell)("PMC"), 전도성 브리지 RAM(conductive-bridging RAM)("CBRAM") 등과 같은 비휘발성 반도체 저장매체(110)가 포함될 수 있다. 반도체 저장장치(102)에 대해서 도 2, 3a 및 3b에 자세히 설명되어 있다.
반도체 저장장치(102)는, 컴퓨터 네트워크(116)를 통해 하나 이상의 클라이언트(114)에 연결된 컴퓨터(112) 안에 도시되어 있다. 일실시예에서, 반도체 저장장치(102)는 컴퓨터(112) 내부에 있으며, 주변장치 고속 연결 버스(peripheral component interconnect express bus)("PCI-e 버스"), 진보적 직렬기술 부착(SATA) 규격 버스(Serial Advanced Technology Attachment bus, "직렬 ATA 버스") 등과 같은 시스템 통신 버스를 이용해 연결된다. 다른 실시예에서, 반도체 저장장치(102)는 컴퓨터(112) 외부에 있으며, 범용 직렬 버스("USB") 연결선, 전기전자 기술자협회("IEEE")의 1394 버스("FireWire") 등의 외부 통신 버스를 사용하여 연결된다. 다른 실시예에서는 반도체 저장장치(102)는, 전기적 또는 광학적 외부 버스 연장선이나 버스 네트워킹 솔루션(인피니밴드(Infiniband) 또는 진보된 PCI 고속 스위칭(PCI Express Advanced Switching )("PCIe-AS") 등)을 사용하는 주변장치 상호연결("PCI") 고속 버스와 같은 통신 버스를 사용하여 연결된다.
다양한 실시예에서, 반도체 저장장치(102)는, 듀얼 인라인 메모리 모듈 형태("DIMM"), 도터(daughter) 카드, 또는 마이크로모듈의 형태일 수 있다. 다른 실시예에서, 반도체 저장장치(102)는 랙장착형 블레이드(rack~mounted blade) 내에 장착되는 한 구성요소가 된다. 다른 실시예에서, 반도체 저장장치(102)는 상위 단계의 조립체(예컨대, 머더보드, 랩톱 컴퓨터, 그래픽 프로세서)에 직접 장착되는 패키지 내에 포함된다. 다른 실시예에서, 반도체 저장장치(102)를 포함하는 개별 구성요소는 중간 패키지없이 상위 단계의 조립체에 직접 탑재된다.
반도체 저장장치(102)는 기입데이터 파이프라인(106) 및 독출데이터 파이프라인(108)를 포함할 수 있는 하나 이상의 반도체 저장 제어부(104) 및 반도체 저장매체(110)를 포함한다. 이들에 대해서는 도 2, 3a 및 3b를 참조하여 아래에 자세히 설명되어 있다. 상기 하나 이상의 반도체 저장 제어부(104)는 반도체 저장매체(110)를 관리하는데, 반도체 저장매체(110)의 저장셀에 대한 구성 파라미터(configuration parameter)를 결정하고, 이들 구성 파라미터에 따라 저장셀(storage cell)을 구성한다.
여기에 사용되는 바와 같이, 저장셀 세트(set of storage cell)에 대한 구성 파라미터는 인터페이스를 통해 변경가능한 파라미터이다. 인터페이스는 공개된 인터페이스 또는 사적 인터페이스일 수 있으며, 특정 명령어의 사용, 및/또는 특정 파라미터·레지스터 설정·드라이버 설정·제어기 설정·특정 군의 명령어 시퀀스·그 밖에 저장셀 세트와 인터페이스하거나 이를 관리하는 데 사용되는 일반 명령(범용 명령) 또는 설정 등의 사용이 포함될 수 있다. 구성 파라미터는 저장셀에의 기입(write)(또는 프로그래밍), 저장셀로부터의 독출(read), 저장셀의 소거(erase), 저장셀의 관리(manage), 저장셀용 장치 드라이버(device driver) 또는 저장 제어기 설정 등과 관련될 수 있는 파라미터이다. 저장셀 세트에 대한 구성 파라미터는 반도체 저장장치(102)용 장치 드라이버, 반도체 저장 제어부(104) 등과 관련될 수 있고, 이 장치 드라이버 및/또는 반도체 저장 제어부(104)를 어떻게 사용 및 관리하고 저장셀 세트 및/또는 반도체 저장매체(110)와 어떻게 상호 작용하는지에 관련될 수 있다.
특정 실시예에서, 구성 파라미터에는 독출전압 임계값(read voltage threshold), 저항률 임계값(resistivity threshold), 프로그래밍 임계값(programming threshold), 소거 임계값(erase threshold), 하드웨어 드라이버 레벨 임계값(hardware driver level threshold), 저장 제어기 레벨 임계값(a storage controller level threshold) 등과 같은 하나 이상의 임계값이 포함될 수 있다. 구성 파라미터는, 반도체 저장매체(110)로 입력된 각 명령과 동적으로 연동되는 이 반도체 저장매체(110)의 초기화 시에 또는 이벤트 또는 시간 간격 등의 트리거에 대한 응답으로서, 반도체 저장매체(110)가 동작하는 동안에 한 번 설정(set)될 수 있다. 일실시예에서, 반도체 저장 제어부(104)는, 오류를 줄이기 위해서, 반도체 저장매체(110)의 유용성을 개선하기 위해서, 그리고 그 밖의 목적을 위해서, 반도체 저장매체(110)의 저장셀에 대한 하나 이상의 구성 파라미터를 사전에 설정한다.
시스템(100)에는 반도체 저장장치(102)에 연결된 하나 이상의 컴퓨터(112)가 포함되어 있다. 컴퓨터(112)는 호스트, 서버, 저장 영역 네트워크(storage area network)("SAN")의 저장 제어기, 워크스테이션, 퍼스널 컴퓨터, 랩톱 컴퓨터, 휴대용 컴퓨터, 수퍼 컴퓨터, 컴퓨터 클러스터, 네트워크 스위치, 라우터 또는 어플라이언스(appliance), 데이터베이스 또는 저장 어플라이언스, 데이터 취득 또는 데이터캡처 시스템, 진단 시스템, 테스트 시스템, 로봇, 휴대용 전자기기, 무선기기 등일 수 있다. 다른 실시예에서는, 컴퓨터(112)가 클라이언트일 수 있으며, 반도체 저장장치(102)는 이 컴퓨터(112)로부터 전송된 데이터 요청 신호를 처리하기 위해 자율적으로 동작한다. 이 실시예에서는 컴퓨터(112)와 반도체 저장장치(102)를, 컴퓨터(112)와 자율 반도체 저장장치(102) 사이의 연결에 적합한 컴퓨터 네트워크, 시스템 버스, 기타 통신 수단을 사용하여 연결할 수 있다.
일실시예에서, 시스템(100)은 하나 이상의 컴퓨터 네트워크(116)를 통해 하나 이상의 컴퓨터(112)에 연결되는 하나 이상의 클라이언트(114)를 포함한다. 클라이언트(114)는 호스트, 서버, SAN의 저장 제어기, 워크스테이션, 퍼스널 컴퓨터, 랩톱 컴퓨터, 휴대용 컴퓨터, 수퍼 컴퓨터, 컴퓨터 클러스터, 네트워크 스위치, 라우터 또는 어플라이언스, 데이터베이스 또는 저장 어플라이언스, 데이터 취득 또는 데이터 캡처 시스템, 진단 시스템, 테스트 시스템, 로봇, 휴대용 전자기기, 무선기기 등일 수 있다. 컴퓨터 네트워크(116)에는, 인터넷, 광역 네트워크("WAN"), 도심 지역 네트워크("MAN"), 근거리 네트워크("LAN"), 토큰 링(token ring), 무선 네트워크, 광채널 네트워크, SAN, 네트워크 부착형 저장소("NAS"), ESCON 등, 또는 이들 네트워크의 조합을 포함할 수 있다. 컴퓨터 네트워크(116)는 또한, IEEE 802 계열 네트워크 기술(이더넷, 토큰 링, 와이파이(WiFi), 와이맥스(WiMax) 등)의 네트워크를 포함할 수 있다.
컴퓨터 네트워크(116)는 서버, 스위치, 라우터, 케이블, 라디오, 및 기타 컴퓨터(112)와 클라이언트(114)의 네트워크화를 촉진하는 데 사용되는 장비를 포함할 수 있다. 일실시예에서, 시스템(100)은 컴퓨터 네트워크(116)를 통해 피어(peer)로서 통신하는 다수의 컴퓨터(112)를 포함한다. 다른 실시예에서, 시스템(100)은 컴퓨터 네트워크(116)를 통해 피어(peer)로서 통신하는 다수의 반도체 저장장치(102)를 포함한다. 당업자는 이와 다른 컴퓨터 네트워크(116)도 알게 될 것이다. 다른 컴퓨터 네트워크(116)에는, 하나 이상의 클라이언트(114) 또는 하나 이상의 반도체 저장장치(102)를 갖는 컴퓨터 사이에서 또는 하나 이상의 컴퓨터(112)에 연결되어 있는 하나 이상의 반도체 저장장치(102) 사이에서 단일 또는 다중으로 연결되어 있는 하나 이상의 컴퓨터 네트워크(116) 또는 관련 장비가 포함된다. 일실시예에서, 시스템(100)에는 컴퓨터(112) 없이, 컴퓨터 네트워크(116)를 통해 클라이언트(114)에 연결되는 두 개 이상의 반도체 저장장치(102)가 포함된다. 특정 실시예에서, 반도체 저장 제어부(104)는, 하나 이상의 위에서 설명한 통신 버스를 통해, 컴퓨터(112) 프로세서로부터 및/또는 클라이언트(114)로부터 반도체 저장매체(110)에 저장할 소스 데이터를 수신한다.
반도체 저장장치(SOLID-STATE STORAGE DEVICE)
도 2는 본 발명에 따른 반도체 저장장치(102)에 기입데이터 파이프라인(106) 및 독출데이터 파이프라인(108)가 포함되어 있는 반도체 저장장치 제어기(202)의 일실시예(200)를 설명하는 블록도이다. 반도체 저장장치 제어기(202)는 소프트웨어로 하드웨어로 또는 하드웨어와 소프트웨어를 조합하여 구현할 수 있다. 반도체 저장장치 제어기(202)는 다수의 반도체 저장 제어부 0~N(104a~n)(각각이 반도체 저장매체(110)를 제어함)를 포함할 수 있다. 도면에 나타낸 실시예에서는 두 개의 반도체 제어기, 즉, 반도체 저장 제어부 0(104a)과 반도체 저장 제어부 N(104n)만 표시하였는데, 이들이 각각 반도체 저장매체(110a~n)를 제어한다. 도면에 나타낸 실시예에서, 반도체 저장 제어부 0(104a)은 반도체 저장매체(110a)에 데이터가 저장되도록 데이터 채널을 제어한다. 반도체 저장 제어부 N(104n)은 저장된 데이터에 관련된 인덱스 메타데이터(index meta data) 채널을 제어하며, 관련 반도체 저장매체(110n)에 인덱스 메타데이터가 저장된다. 다른 방식의 실시예에서, 반도체 저장장치 제어기(202)는 하나의 반도체 저장매체(110a)를 갖는 하나의 반도체 제어기(104a)를 포함한다. 다른 실시예에서는 다수의 반도체 저장 제어부(104a~n) 및 관련된 반도체 저장매체(110a~n)가 있다. 일실시예에서는, 해당 반도체 저장매체(110a~110n-1)에 연결되어 있는 하나 이상의 반도체 제어기(104a~104n-1)가 데이터를 제어하고, 반면에, 해당 반도체 저장매체(110n)에 연결되어 있는 적어도 하나의 반도체 저장 제어부(104n)는 인덱스 메타데이터를 제어한다.
일실시예에서, 적어도 하나의 반도체 제어부(104)는 전계(field) 프로그램가능 게이트어레이("FPGA")를 포함하여 제어기 기능이 이 FPGA 속에 프로그래밍된다. 특정 실시예에서, FPGA는 자일링스(Xilinx)® FPGA를 사용한다. 다른 실시예에서, 반도체 저장 제어부(104)는 사용자맞춤형 집적회로("ASIC") 또는 커스텀 로직 솔루션(custom logic solution)과 같은 반도체 저장 제어부(104)로 특별하게 설계된 구성 요소를 포함한다. 각 반도체 저장 제어부(104)는 일반적으로, 도 3a에 도시한 것과 같이 기입데이터 파이프라인(106) 및 독출데이터 파이프라인(108)를 포함하고 있다. 다른 실시예에서, 적어도 하나의 반도체 저장 제어부(104)는 FPGA, ASIC 및 커스텀 로직으로 구성된다. 특정 실시예에서는, 반도체 저장 제어부(104)의 적어도 한 부분은 컴퓨터(112) 상에서 실행되는 장치 드라이버 등에 통합되거나, 그 일부이거나, 또는 이와 통신한다(또는 통합되고 그 일부이며 이와 통신한다).
반도체 저장장치(Solid-State Storage)
반도체 저장매체(110)는 각 뱅크(bank)(214) 별로 배열되어 있으며 양방향 저장 입출력("I/O") 버스(210)를 통해 병렬로 액세스되는 비휘발성 반도체 저장요소(216, 218, 220)의 어레이로 이루어진다. 일실시예에서 저장 I/O 버스(210)는 어떤 경우에도 한 번에 한 방향으로만 데이터가 지날 수 있는 단방향 통신을 한다. 예를 들어, 반도체 저장매체(110)에 데이터가 기입되고 있는 동안에는 데이터를 반도체 저장매체(110)에서 읽을 수 없다. 다른 실시예에서는 데이터가 동시에 양방향으로 흐를 수 있다. 그러나 데이터 버스에 관하여 여기서 사용한 양방향 버스라는 것은, 한 번에 한 방향으로만 데이터가 흐를 수 있되, 양방향 데이터 버스 상에서 한 방향으로 흐르던 데이터가 중단되어야 반대 방향으로 데이터가 흐를 수 있는 데이터 통로를 의미한다.
반도체 저장요소(예컨대, SSS 0.0(216a))는 일반적으로 칩으로 구성하거나(하나 이상의 다이(die)를 패키지 내에 포함시킴), 또는 회로기판 상에 다이를 탑재하여 구성한다. 도시된 바와 같이, 몇 개의 구성요소들을 하나의 칩 패키지, 칩 패키지 적층, 또는 다른 패키지 요소 내에 함께 패키징하더라도, 어느 반도체 저장요소(예컨대, 216a)는 다른 반도체 저장요소(예컨대, 218a)와 독립적으로 또는 반(semi) 독립적으로 동작한다. 도시된 바와 같이, 일렬의 반도체 저장요소들(216a, 216b, 216m)이 뱅크 214에 지정되어 있다. 도시된 바와 같이, 반도체 저장매체(110) 내에, "n"개의 뱅크(214a~n)가 있도록, 그리고 각 뱅크당 "m"개의 반도체 저장요소(216a~m, 218a~m, 220a~m)를 n×m의 반도체 저장요소(216, 218, 220)로 배열할 수 있다. 물론 n과 m을 다르게 구성하는 실시예도 가능하다. 일실시예에서, 반도체 저장매체(110a)에는 8개 뱅크(214)의 각 뱅크당 20개의 반도체 저장요소(216, 218, 220)가 포함되어 있다. 일실시예에서, 반도체 저장매체(110a)에는 8개 뱅크(214)의 각 뱅크당 24개의 반도체 저장요소(216, 218, 220)가 포함되어 있다. n×m 저장요소(216, 218, 220) 이외에도, 하나 이상의 추가 열(column) P개를 지정하여 다른 반도체 저장요소(216a, 216b, 216m)와 병렬로 하나 이상의 행(row) 별로 동작시킬 수 있다. 일실시예에서 추가된 P개의 열은, 특정 뱅크에 대해서 m개의 저장요소가 배열되는 ECC 청크(chunk)(예컨대, ECC 코드워드(codeword))의 일부에 대한 패리티 데이터(parity data)를 저장한다. 일실시예에서 각 반도체 저장요소(216, 218, 220)는 단층 셀("SLC", single-level cell) 장치로 구성된다. 다른 실시예에서, 각 반도체 저장요소(216, 218, 220)는 다층 셀("MLC", multi-level cell) 장치로 구성된다.
일실시예에서, 공통의 저장 I/O 버스(210a)를 공유하고 있는 반도체 저장요소(예컨대, 216b, 218b, 220b)는 함께 패키징된다. 일실시예에서, 반도체 저장요소(216, 218, 220)는 칩당 하나 이상의 다이를 가질 수 있는데, 하나 이상의 칩이 수직으로 적층되고, 각 다이에 독립적으로 액세스할 수 있다. 다른 실시예에서, 반도체 저장요소(예컨대, SSS 0.0(216a))는 다이당 하나 이상의 가상 다이(virtual die)를 그리고 칩당 하나 이상의 다이를 가질 수 있는데, 하나 이상의 칩이 수직으로 적층되며, 각 가상 다이를 독립적으로 액세스할 수 있다. 다른 실시예에서, 반도체 저장요소(SSS 0.0(216a))는 다이당 하나 이상의 가상 다이를 그리고 칩당 하나 이상의 다이를 가질 수 있는데, 하나 이상의 다이의 일부 또는 전부를 수직으로 적층할 수 있으며, 각 가상 다이를 독립적으로 액세스할 수 있다.
일실시예에서는, 두 다이를 수직으로 적층하되 한 그룹당 4개가 적층되도록 하여 각 개별 뱅크(214a~n) 내에 8개의 저장요소(예컨대, SSS 0.0~SSS 8.0)(216a~220a)를 구성한다. 다른 실시예에서는, 24개의 저장요소(예컨대, SSS 0.0~SSS 0.24)(216)가 논리적 뱅크(214a)를 구성하여, 8개의 논리적 뱅크 각각이 24개의 저장요소(예컨대, SSS0.0~SSS 8.24)(216, 218, 220)를 갖도록 한다. 데이터는 반도체 저장매체(110)로 보내지는데, 저장 I/O 버스(210)를 통해 특정 그룹의 저장요소(SSS 0.0~SSS 8.0)(216a, 218a, 220a)의 모든 저장요소로 보내진다. 특정 뱅크(예컨대, 뱅크 0(214a))를 선택하기 위하여 저장 제어 버스(212a)를 사용함으로써, 모든 뱅크(214)에 연결된 저장 I/O 버스(210)를 통해 수신한 데이터가 상기 선택한 뱅크(214a)에 곧바로 저장된다.
특정 실시예에서, 저장 제어 버스(212) 및 저장 I/O 버스(210)는, 주소 지정 정보, 저장요소 명령 정보, 및 저장하고자 하는 데이터를 통신하기 위해 반도체 제어부(104)에 의해 함께 사용된다. 당업자는, 이 주소, 데이터, 및 명령 정보가 이들 버스(212)(210) 중 어느 하나를 사용하여, 또는 제어 정보의 각 유형에 따른 별도의 버스를 사용하여 통신할 수 있다는 것을 알게 될 것이다. 일실시예에서, 저장 I/O 버스(210)와 저장 제어 버스(212) 상을 지나는 주소지정 정보, 저장요소 명령 정보, 및 저장 데이터가 뱅크를 활성화하고, 저장 I/O 버스(210) 상의 데이터는 주소지정 정보, 저장요소 명령 정보, 또는 저장 데이터를 식별하기 위한 신호를 구성한다.
예를 들어, 제어 신호 "command enable"이 저장 제어 버스(212) 상에 있으면, 이는 저장 I/O 버스(210)에 있는 데이터가, 프로그램, 소거, 리셋, 독출 등과 같은 저장요소 명령임을 나타내는 것이다. "address enable" 제어 신호가 저장 제어 버스(212)에 있으면, 이는 저장 I/O 버스(210)에 있는 데이터가 소거 블록 식별자, 페이지 식별자, 그리고 선택사항으로서 특정 저장요소 내의 페이지 내에서의 옵셋과 같은 주소지정 정보라는 것을 나타낸다. 마지막으로, "command enable"과 "address enable" 제어 신호 모두가 저장 제어 버스(212)에 없으면, 이는 저장 I/O 버스(210) 상의 데이터가, 저장요소 보다 먼저 주소 지정되었던 소거 블록(erase block), 물리적 페이지(physical page), 및 선택사항으로서 특정 저장요소의 페이지 내에서의 옵셋(offset)에 저장되어야 할 저장 데이터임을 나타낸다.
일실시예에서, 저장 I/O 버스(210)는 하나 이상의 독립적 I/O 버스(independent IO bus)("IIOBa~m")(210a.a~m, 210n.a~m을 포함)를 포함하는데, 여기서, 각 칼럼(열) 내의 반도체 저장요소는, 각 반도체 저장요소(216, 218, 220)에 병렬로 액세스되는 독립적 I/O 버스들 중 하나를 공유함으로써, 모든 뱅크(214)가 동시에 액세스되도록 한다. 예를 들어, I/O 버스(210) 중의 한 채널은 각 뱅크(214a~n)의 제1 반도체 저장요소(216a, 218a, 220a)에 동시에 액세스할 수 있다. 저장 I/O 버스(210)의 제2 채널은 각 뱅크(214a~n)의 제2 반도체 저장요소(216b, 218b, 220b)에 동시에 액세스할 수 있다. 반도체 저장요소(216a, 216b, 216m)의 각 행은 동시에 액세스된다. 일실시예에서, 반도체 저장요소(216, 218, 220)가 (물리적으로 적층된) 다층인 경우에, 반도체 저장요소(216, 218, 220)의 모든 물리적 층을 동시에 액세스할 수 있다. 여기에 사용한 "동시"란 용어에는, 스위칭 잡음을 피하기 위하여 장치에 약간 다른 시간 간격으로 거의 동시에 액세스하는 것도 포함된다. 본 명세서에서 사용한 동시란 용어는 명령어 및/또는 데이터를 각각 차례대로, 순차적으로, 또는 직렬로 액세스하는 것과 구별하기 위하여 사용한 것이다.
일반적으로 뱅크(214a~n)는 저장 제어 버스(212)를 사용하여 독립적으로 선택된다. 일실시예에서는 칩 이네이블(chip enable) 또는 칩 셀렉트(chip select)를 이용하여 뱅크(214)를 선택한다. 칩 이네이블 및 칩 셀렉트가 모두 가능한 경우에, 저장 제어 버스(212)는 다층 반도체 저장요소(216, 218, 220) 중의 한 층을 선택할 수 있다. 다른 실시예에서는, 다른 명령어를 저장 제어 버스(212)를 통해 사용하여 다층 반도체 저장요소(216, 218, 220) 중의 한 층을 개별적으로 선택한다. 반도체 저장요소(216, 218, 220)는 또한, 저장 I/O 버스(210) 및 저장 제어 버스(212) 상에서 전달되는 제어 및 주소 정보를 통해서 선택할 수 있다.
일실시예에서, 각 반도체 저장요소(216, 218, 220)는 소거 블록들(erase blocks)으로 분할되며, 각 소거 블록은 페이지들(pages)로 분할된다. 반도체 저장요소(216, 218, 284)의 소거 블록은 물리적 소거 블록 "PEB"(physical erase block)로 부를 수 있다. 전형적인 페이지 크기는 2000 바이트("2kB")이다. 한 예로, 반도체 저장요소(예컨대, SSS 0.0)는 2개의 레지스터를 포함하고 두 페이지를 프로그램할 수 있다. 이로써 2개 레지스터를 갖는 반도체 저장요소(216, 218, 220)는 4kB의 용량을 갖게 된다. 따라서 20개의 반도체 저장요소(216a, 216b, 216m)의 뱅크(214)는 80kB의 용량을 갖는 페이지들을 갖게 될 것이다. 이들 페이지에는 저장 I/O 버스(210)의 채널 밖으로, 동일한 주소로 액세스할 수 있다.
80kB의 반도체 저장요소(216a, 216b, 216m)의 뱅크(214) 내의 페이지들로 이루어진 페이지 그룹을 논리적 페이지(logical page) 또는 가상 페이지(virtual page)라고 부를 수 있다. 마찬가지로, 뱅크(214a)의 각 저장요소(216a~m)의 소거 블록을 그룹화하여 논리적 소거 블록 또는 가상 소거 블록을 구성할 수 있다. 일실시예에서, 반도체 저장요소(216, 218, 220) 내의 페이지의 소거 블록은 반도체 저장요소(216, 218, 220) 내에 소거 명령이 들어올 때 소거된다. 반도체 저장요소(216, 218, 220) 내의 소거 블록, 페이지, 평면(plane), 또는 그 밖의 논리적 및 물리적 분할공간(division)의 크기 및 개수는 기술의 발전에 힘입어 향후 계속해서 변화될 것으로 예상됨에 비추어, 새로운 구성으로 구현되는 많은 실시예들이 출현될 것이며 본 명세서에서의 전반적인 설명과 일치하게 될 것으로 기대된다.
일반적으로 패킷(packet)을 반도체 저장요소(216, 218, 220)의 특정 위치에 기입시 이 패킷을 특정 뱅크의 특정 저장요소의 특정 물리적 소거 블록에 지정된 특정 페이지 내의 위치에 기입하는 경우에, 물리적 주소가 저장 I/O 버스(210)에 전송되고 난 다음에 패킷이 전송된다. 물리적 주소는, 페이지 내의 지정 위치로 패킷을 보낼 수 있도록 반도체 저장요소(216, 218, 220)에 대한 충분한 정보를 포함하고 있다. 저장요소(예컨대, SSS 0.0~SSS N.0)(216a, 218a, 220a)의 열(column)에 있는 모든 저장요소는 저장 I/O 버스(210a.a) 내의 적절한 버스에 의해 동시에 액세스되기 때문에, 적절한 페이지에 도달하도록 하기 위하여 그리고 저장요소(SSS 0.0~SSS N.0)(216a, 218a, 220a)의 열에 있는 페이지 중에서 유사한 주소가 지정된 페이지로 데이터 패킷이 기입되지 못하도록 하기 위하여, 데이터 패킷이 기입되어야 할 올바른 페이지를 갖는 반도체 저장요소 SSS 0.0(216a)를 포함하는 뱅크(214a)를 저장 제어 버스(212)를 이용해 동시에 선택한다.
마찬가지로 저장 I/O 버스(210) 상의 독출 명령을 만족하기 위해서는, 단일 뱅크(214a) 및 이 뱅크(214a) 내에 있는 적절한 페이지를 선택하기 위한 동시 동작 신호가 저장 제어 버스(212) 상에 있어야 한다. 일실시예에서, 독출 명령은 전체 페이지를 독출한다. 그리고 뱅크(214)에 다수의 반도체 저장요소(216a, 216b, 216m)가 병렬로 있기 때문에, 전체 논리적 페이지를 독출 명령으로 읽을 수 있다. 그러나 독출 명령은 다수의 하위 명령으로 세분할 수 있다. 이에 대해, 뱅크 인터리브(bank interleave)로서 차후 설명하겠다. 논리적 페이지도 또한 기입 작용(write operation) 실행시에 액세스할 수 있다.
특정 소거 블록을 삭제하기 위하여, 특정 소거 블록의 주소를 갖는 저장 I/O 버스(210)을 통해 소거 블록 삭제 명령을 전송할 수 있다. 일반적으로 논리적 소거 블록을 삭제하기 위한 소거 블록 삭제 명령은 병렬 경로의 저장 I/O 버스(210)를 통해 전송할 수 있는데, 각 경로에는 특정 소거 블록을 삭제하기 위한 특정 소거 블록의 주소가 포함된다. 동시에, 모든 뱅크(뱅크 1~N(214b~n))에 있는 유사하게 주소지정된 소거 블록의 삭제를 방지하기 위하여, 저장 제어 버스(212)를 통해 특정 뱅크(예컨대, 뱅크 0)(214a))를 선택한다. 다른 방식으로는, 모든 뱅크(뱅크 1~N)(214b~n))에 유사하게 주소 지정된 소거 블록을 동시에 삭제할 수 있도록 저장 제어 버스(212)를 통해 아무런 특정 뱅크(예컨대, 뱅크 0)(214a))도 선택하지 않는다. 저장 I/O 버스(210)와 저장 제어 버스(212)를 조합 사용하여 다른 명령을 특정 위치로 전송할 수 있다. 당업자는 양방향 저장 I/O 버스(210) 및 저장 제어 버스(212)를 사용하여 특정 저장 위치를 선택하는 다른 방법을 알게 될 것이다.
일실시예에서, 패킷은 반도체 저장매체(110)에 순차적으로 기입된다. 예를 들어, 패킷은 저장요소(216)의 뱅크(214a)의 기입 버퍼에 스트리밍되는데, 이 버퍼가 가득 차면, 이 패킷을 지정된 논리적 페이지로 보내도록 프로그래밍되어 있다. 그 다음에, 패킷이 기입 버퍼를 다시 채우고, 가득 차면, 차순위 논리적 페이지에 기입된다. 차순위 논리적 페이지는 같은 뱅크(214a)에 있을 수도 있고 다른 뱅크(예컨대, 214b)에 있을 수도 있다. 이러한 처리과정은 논리적 페이지마다 계속 진행되는데, 대개는 논리적 소거 블록("LEB")이 가득 찰 때까지 계속된다. 다른 실시예에서, 스트리밍은, 논리적 소거 블록마다 프로세스가 계속됨에 따라, 논리적 소거 블록의 경계를 지나면서 계속 진행될 수 있다.
독출(read), 변경(modify), 기입(write) 동작시에 피요청 데이터(requested data)와 관련된 데이터 패킷의 위치가 정해지고, 독출 작용(read operation)에 의해 독출된다. 변경된 피요청 데이터의 데이터 세그먼트는, 데이터가 독출된 위치에는 기입되지 않는다. 대신에, 변경된 데이터 세그먼트는 다시 데이터 패킷으로 변환되어, 현재 기입되고 있는 논리적 페이지에서 사용 가능한 다음 위치에 순차적으로 기입된다. 각 데이터 패킷의 인덱스 항목(index entry)은 변경된 데이터 세그먼트를 포함하는 패킷을 가리키도록 변경된다. 변경되지 않은 동일한 피요청 데이터와 관련된 데이터 패킷의 인덱스의 항목(들)에는, 변경되지 않은 데이터 패킷의 원래 위치를 가리키는 포인터(pointer)가 포함될 것이다. 따라서, 예컨대 이전 버전의 피요청 데이터를 유지하기 위해 원본 피요청 데이터를 보유하고 있는 한, 원본 피요청 데이터는 원래 기입된 채로 모든 데이터 패킷을 가리키는 포인터를 인덱스 내에 갖게 될 것이다. 새로운 피요청 데이터는, 원본 데이터 패킷 중 일부 패킷을 가리키는 포인터를 인덱스 내에 갖게 될 것이고, 논리적 페이지에 현재 기입되고 있는 있는 변경된 데이터 패킷을 가리키는 포인터를 갖게 될 것이다.
복사 동작시에, 인덱스는 반도체 저장매체(110)에 저장된 많은 패킷에 매핑된 원본 피요청 데이터에 대한 항목을 포함하게 된다. 복사가 실행되면, 피요청 데이터의 새 복사본이 만들어지고, 피요청 데이터의 새로운 복사본을 원본 패킷으로 매핑하여 인덱스에 새로운 항목이 만들어진다. 피요청 데이터의 새 사본은 또한, 인덱스에 새로운 항목으로 매핑된 위치에서 반도체 저장매체(110)에 기입된다. 피요청 데이터 패킷의 새 복사본은, 요청 데이터의 복사본으로 전달되지 않았고 그 인덱스가 분실 또는 손상된, 원본 피요청 데이터 내에서 변경된 경우에 참조된, 원본 피요청 데이터 내의 패킷을 식별하는 데 사용할 수 있다.
순차적으로 패킷을 기입함으로써 반도체 저장매체(110)의 보다 더 균일한 사용이 가능해지며, 반도체 장치 제어기(202)로 하여금 반도체 저장매체(110)에 있는 다양한 논리적 페이지 층의 저장 열점(storage hot spot) 및 층 사용량(level usage)을 모니터링할 수 있게 되는 이점이 있다. 또한 패킷의 순차적 기입에 의해서 강력하고 효율적인, 가비지 취합(garbage collection) 시스템(추후에 상세히 설명함)이 가능해진다. 당업자는 데이터 패킷의 순차 저장의 다른 이점을 알게 될 것이다.
반도체 저장장치 제어기(Solid-State Storage Device Controller)
다양한 실시예에서, 반도체 저장장치 제어기(202)는 또한, 데이터 버스(204), 로컬 버스(206), 버퍼 제어기(208), 버퍼 0~N(222a~n), 주제어기(224), 직접 메모리 액세스(direct memory access)("DMA") 제어기(226), 메모리 제어기(228), 동적 메모리 어레이(230), 정적 랜덤 메모리 어레이(232), 관리 제어기(234), 관리 버스(236), 시스템 버스(240)와의 연결 브리지(238), 및 기타 로직(242)을 포함한다. 각각에 대해서는 아래에서 설명할 것이다. 다른 실시예에서, 시스템 버스(240)는 하나 이상의 네트워크 인터페이스 카드("NIC")(244)(이 NIC의 일부에는 원격 DMA("RDMA") 제어기(246)가 포함될 수 있음), 하나 이상의 중앙 처리 장치("CPU")(248), 하나 이상의 외부 메모리 제어기(250) 및 이에 관련된 외부 메모리 어레이(252), 하나 이상의 저장 제어기(254), 피어(peer) 제어기(256), 그리고 주문형 프로세서(application specific processor)(258)와 연결된다. 각각에 대해서는 아래에서 설명할 것이다. 시스템 버스(240)에 연결되는 구성요소들(244~258)은 컴퓨터(112) 안에 위치할 수도 있고, 또는 다른 장치들일 수도 있다.
일반적으로 반도체 저장 제어부(들)(104)는 저장 I/O 버스(210)를 통해서 반도체 저장매체(110)와 데이터 통신을 한다. 반도체 저장장치가 뱅크(214) 내에 배치되고 각 뱅크(214)에 병렬로 액세스되는 다수의 저장요소(216a, 216b, 216m)가 포함되는 전형적인 실시예에서, 저장 I/O 버스(210)는, 뱅크(214)에 포함되는 저장요소(216, 218, 220)의 각 열(column)에 해당되는 버스들의 어레이이다. 여기서 사용한 용어 "저장 I/O 버스"는 하나의 저장 I/O 버스(210) 또는 데이터에 무관한 버스(204)들의 어레이를 지칭할 수 있다. 일실시예에서 저장요소(예컨대, 216a, 218a, 220a)의 열을 액세스하는 각 저장 I/O 버스(210)에는, 저장요소(216a, 218a, 220a)의 열에 액세스되는 저장 분할공간(division)(예컨대, 소거 블록)에 대한 논리->물리 매핑작용이 포함될 수 있다. 이러한 매핑(또는 불량 블록의 재매핑)에 의해서, 첫번째 저장 분할공간이 불량인 경우, 부분적으로 불량인 경우, 액세스 불가능한 경우, 또는 그 밖의 문제를 갖고 있는 경우에, 이 저장 분할공간의 물리적 주소로 매핑된 논리적 주소를 다른 저장 부분으로 재매핑할 수 있게 된다.
데이터는 또한, 시스템 버스(240), 브리지(238), 로컬 버스(206), 버퍼(들)(222), 및 마지막으로 데이터 버스(204)를 통해 요청 장치(requesting device)(155)에서 반도체 저장 제어부(들)(104)로 전달된다. 데이터 버스(204)는 일반적으로 버퍼 제어기(208)의 제어를 받는 하나 이상의 버퍼(222a~n)에 연결되어 있다. 버퍼 제어기(208)는 일반적으로 로컬 버스(206)에서 버퍼(222)까지의 데이터 전송을 제어하고, 데이터 버스(204)를 통해 파이프라인 입력 버퍼(306)와 출력 버퍼(330)로의 전송을 제어한다. 버퍼 제어기(208)는 일반적으로, 데이터 충돌을 막기 위해, 또는 서로 다른 클럭 도메인(clock domain)을 고려하기 위해, 요청하는 장치에서 오는 데이터를 버퍼(222)에 임시로 저장한 다음에 데이터 버스(204)로 전송하는 방식(또는 그 반대 방식)을 제어한다. 버퍼 제어기(208)는 일반적으로 데이터 흐름을 조정하기 위해 주제어기(224)와 함께 작동한다. 데이터가 도착하면, 데이터가 시스템 버스(240)에 도착하여 브리지(238)를 통해 로컬 버스(206)로 전송될 수 있도록 한다.
주제어기(224) 및 버퍼 제어기(208)의 지시에 따라 일반적으로 데이터는 하나 이상의 데이터 버퍼(222)에 로컬 버스(206)로부터 전송된다. 데이터는 그 다음, 버퍼(들)(222) 밖으로 흘러 나가 반도체 제어부(104)를 통해 데이터 버스(204)로 가서, NAND 플래시 또는 기타 저장매체와 같은 반도체 저장매체(110)로 간다. 일실시예에서, 데이터 및 이 데이터와 함께 도착하는 관련된 대역외 메타데이터("meta data")는, 하나 이상의 반도체 저장 제어부(104a~104n-1) 및 관련 저장매체(110a~110n-1)를 이용해 통신된다. 반면에 적어도 하나의 채널(반도체 저장 제어부(104n), 반도체 저장매체(110n))은 인밴드(in-band) 메타데이터(가령, 인덱스 정보 및 반도체 저장장치(102) 내부적으로 생성된 기타 메타데이터)만 취급한다.
로컬 버스(206)는 일반적으로, 반도체 저장장치 제어기(202)의 내부 장치 사이에서 및 반도체 저장장치(102)의 내부 장치와 시스템 버스(241)에 연결되어 있는 장치들(244~258) 사이에서 데이터와 명령어를 통신할 수 있도록 하는 양방향 버스 또는 1군의 버스들이다. 브리지(238)는 로컬 버스(206)와 시스템 버스(241) 간의 통신을 용이하게 한다. 당업자들은 버스(240, 206, 204 210)와 버스(238)를 링 형태(ring) 또는 별 형태 스위칭(switched star) 구조 및 기능으로 다르게 구현할 수 있음을 알게 될 것이다.
시스템 버스(240)는 일반적으로 반도체 저장장치(102)가 설치 또는 연결되어 있는 컴퓨터(112) 또는 기타 장치의 버스이다. 일실시예에서, 시스템 버스(240)는 PCI-E 버스, 진보적 직렬기술 부착 규격("직렬 ATA") 버스, 병렬 ATA 등일 수 있다. 다른 실시예에서, 시스템 버스(240)는 소형 컴퓨터 시스템 인터페이스(small computer system interface)("SCSI"), 파이어와이어(FireWire), 광섬유 채널(Fiber Channel), USB, PCIe-AS 등의 외부 버스이다. 반도체 저장장치(102)를 장치 내부에 설치되도록 또는 외부에서 연결하는 장치로서 패키징할 수 있다.
반도체 저장장치 제어기(202)에는 반도체 저장장치(102)의 고급 기능을 제어하는 주제어기(224)가 포함된다. 다양한 실시예의 주제어기(224)는 객체 요청 및 다른 요청을 해석하여 데이터 흐름을 제어하고, DMA 요청을 처리하여 관련 데이터의 객체 식별자를, 관련 데이터의 물리적 위치로 매핑하는 인덱스를 생성하도록 지휘한다. 여기서 설명한 많은 기능들은 주제어기(224)에 의해 전적으로 혹은 부분적으로 제어된다.
일실시예에서, 주제어기(224)는 임베디드 제어기(들)를 사용한다. 다른 실시예에서, 주제어기(224)는 동적 메모리 어레이(230)(dynamic random access memory, "DRAM"), 정적 메모리 어레이(232)(static random access memory, "SRAM") 등의 로컬 메모리를 사용한다. 일실시예에서 로컬 메모리는 주제어기(224)를 사용하여 제어된다. 다른 실시예에서, 주제어기(224)는 메모리 제어기(228)를 통해 로컬 메모리를 액세스한다. 다른 실시예에서, 주제어기(224)는 리눅스 서버를 실행하고, 월드와이드웹, 하이퍼 텍스트 마크업 언어("HTML") 등의 다양한 일반 서버 인터페이스을 지원할 수 있다. 다른 실시예에서, 주제어기(224)는 나노 프로세서를 사용한다. 주제어기(224)는 프로그램가능 로직, 표준 로직, 또는 위에 나열된 제어기 유형들의 조합을 사용하여 구성할 수 있다. 주제어기(224)는 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어의 조합으로 구현된다. 당업자는 주제어기(224)에 대한 많은 구현예를 알게 될 것이다.
저장장치/반도체 저장장치 제어기(202)가 여러 개의 데이터 저장장치/반도체 저장매체(110a~n)를 관리하는 일실시예에서, 주제어기(224)는 반도체 저장 제어부(104a~n)와 같이, 내부 제어기들 간의 작업부하(work load)를 나눈다. 예를 들어, 주제어기(224)는, 데이터 저장장치(예컨대, 반도체 저장매체(110a~n))에 기입할 객체를 분할함으로써, 부착되어 있는 데이터 저장 장치에 이 객체의 일부분이 기입될 수 있도록 한다. 이 기능에 의해 객체의 빠른 저장 및 액세스가 가능해져 성능이 향상된다. 일실시예에서, 주제어기(224)는 FPGA를 사용하여 구현된다. 다른 실시예에서, 주제어기(224) 내의 펌웨어는 관리 버스(236), NIC(244)에 연결된 네트워크를 통한 시스템 버스(240), 또는 시스템 버스(241)에 연결된 그 밖의 장치를 통해 업데이트될 수 있다
일실시예에서, 객체를 관리하는 주제어기(224)는, 저장장치/반도체 저장장치(102)에 연결된 컴퓨터(112) 또는 기타 장치가 저장장치/반도체 저장장치(102)를 블록 저장장치로 보고 저장장치/반도체 저장장치(102)에 있는 특정 물리적 주소로 데이터를 전송하도록 블록 저장을 에뮬레이트(emulate)한다. 그 다음, 주제어기(224)는 블록을 분할하여, 데이터 블록을 객체인 것처럼 저장한다. 그 다음, 주제어기(224)는 블록과 함께 전송된 블록들과 물리적 주소를, 주제어기(224)에 의해 결정된 실제 위치로 매핑한다. 매핑은 객체 인덱스에 저장된다. 일반적으로 블록 에뮬레이션에 있어서, 블록 장치의 응용 프로그램 인터페이스(application program interface, "API")가 저장장치/반도체 저장장치(102)를 블록 저장장치로서 사용하고자 하는 컴퓨터(112), 클라이언트(114), 또는 기타 장치에 설치된 드라이버에 제공된다.
다른 실시예에서, 주제어기(224)는 데이터 세트(data set) 및 명령어 세트(instruction set)를 적시에 RDMA 전송하기 위하여 NIC 제어기(244) 및 임베디드 RDMA 제어기(246)와 협동한다. NIC 제어기(244)는 사용자 맞춤(커스텀) 드라이버의 사용을 활성화하기 위해 투명하지 않은 포트 뒤에 숨겨져 있을 수 있다. 또한 클라이언트가(114)에 있는 드라이버는, NIC(244)와 함께 동작하고 표준 스택 API를 이용하는 I/O 메모리 드라이버를 통해 컴퓨터 네트워크(116)에 액세스할 수 있다.
일실시예에서, 주제어기(224)는 또한, 독립적인 드라이브 제어기의 중복 배열("RAID")이다. 데이터 저장장치/반도체 저장장치(102)가 하나 이상의 다른 데이터 저장장치/반도체 저장장치(102)와 네트워크 연결(networking)되어 있는 경우에, 주제어기(224)는 단일 계층(tier) RAID, 다중 계층 RAID, 진보적 RAID 등을 위한 RAID 제어기 역할을 할 수 있다. 주제어기(224)는 또한, 일부 객체를 RAID 어레이에 저장시킬 수 있고, 그 밖의 객체를 RAID 없이 저장시킬 수 있다. 다른 실시예에서, 주제어기(224)는 분산 RAID 제어기의 일 요소가 될 수 있다. 다른 실시예에서, 주제어기(224)는 다수 RAID, 분산 RAID, 그리고 다른 곳에서 설명한 다른 기능들을 포함할 수 있다. 일실시예에서, 주제어기(224)는, 논리적 페이지의 하나 이상의 저장요소(216, 218, 220)에 패리티 정보가 저장되는 RAID와 유사한 구조로의 데이터 저장을 제어한다. 여기서, 이 패리티 정보는, 동일한 논리적 페이지의 다른 저장요소(216, 218, 220)에 저장된 데이터를 보호한다.
일실시예에서, 주제어기(224)는 라우팅 설정을 위해, 대역폭 사용·장애 조치 등을 균형화시키기 위해, 그리고 그 밖의 목적을 위해, 단일의 또는 복수의 네트워크 관리자(예컨대, 스위치)와 연동된다. 다른 실시예에서, 주제어기(224)는 주문형 통합 로직(integrated application specific logic) 및 관련 드라이버 소프트웨어와 (로컬 버스(206)를 통해) 연동된다. 다른 실시예에서, 주제어기(224)는 부착된 주문형 프로세서(application specific processor)(258) 또는 로직 및 관련 드라이버 소프트웨어와 (외부 시스템 버스(241)를 통해) 연동된다. 다른 실시예에서, 주제어기(224)는 원격 주문형 로직 및 관련 드라이버 소프트웨어와 (컴퓨터 네트워크(116)를 통해) 연동된다. 다른 실시예에서, 주제어기(224)는 로컬 버스(206) 또는 외부 버스가 연결된 하드 디스크 드라이브("HDD") 제어기와 연동된다.
일실시예에서, 주제어기(224)는, 저장장치/반도체 저장장치(102)가 SCSI 버스, 인터넷 SCSI("iSCSI"), 광섬유 채널 등을 통해 연결되는 저장장치로서 구성될 수 있는 하나 이상의 저장 제어기(254)와 통신한다. 한편, 저장장치/반도체 저장장치(102)는 자율적으로 객체를 관리할 수 있으며, 객체 파일 시스템이나 분산 객체 파일 시스템으로 구성될 수 있다. 주제어기(224)는 또한, 피어 제어기(256) 및/또는 주문형 프로세서(258)에 의해 액세스될 수 있다.
다른 실시예에서, 주제어기(224)는 자율 통합관리 제어기와 연동하여, FPGA 코드 및/또는 제어기 소프트웨어를 주기적으로 검증하고, 동작중에 FPGA 코드를 검증(리셋) 및/또는 전원 ON시 제어기 소프트웨어를 검증(리셋)하고, 외부 리셋 요청을 지원하고, 워치독(watchdog) 시간 초과에 따른 리셋 요청을 지원하고, 전압, 전류, 전력, 온도 및 기타 환경 척도 및 임계값 인터럽트의 설정을 지원한다. 다른 실시예에서, 주제어기(224)는 소거 블록의 재사용을 할 수 있도록 가비지 취합을 관리한다. 다른 실시예에서, 주제어기(224)는 열화 수준(wear leveling)을 관리한다. 다른 실시예에서, 주제어기(224)는 데이터 저장장치/반도체 저장장치(102)가 다수의 논리적 장치로 분할될 수 있도록 하며 파티션 기반의 매체 암호화(partition-based media encryption)를 가능케 한다. 다른 실시예에서, 주제어기(224)는 진보적 다중비트 ECC 보정 기능이 있는 반도체 저장장치 제어부(104)를 지원한다. 당업자는 저장장치 제어기(202), 더 구체적으로는, 반도체 저장장치(102)에 있는 주제어기(224)의 그 밖의 특징과 기능을 알게 될 것이다.
일실시예에서, 반도체 저장장치 제어기(202)에는 동적 랜덤 메모리 어레이(230) 및/또는 정적 랜덤 메모리 어레이(232)를 제어하는 메모리 제어기(228)가 포함되어 있다. 위에서 언급한 바와 같이, 메모리 제어기(228)는 독립적이거나 또는 주제어기(224)에 통합될 수 있다. 메모리 제어기(228)는 일반적으로 DRAM(동적 랜덤 메모리 어레이(230))과 SRAM(정적 랜덤 메모리 어레이(232))과 같은 종류의 휘발성 메모리를 제어한다. 다른 예에서 메모리 제어기(228)는 또한, 전기적으로 소거 가능한 프로그램가능 독출전용 메모리("EEPROM") 등과 같은, 다른 유형의 메모리를 제어한다. 다른 실시예에서는 메모리 제어기(228)가 두 개 이상의 메모리 유형을 제어하고, 메모리 제어기(228)가 하나 이상의 제어기를 포함할 수 있다. 일반적으로, 메모리 제어기(228)는 실현 가능한 만큼만 SRAM(232)을 제어하고 SRAM(232)을 보완하기 위해 DRAM(230)을 함께 사용한다.
일실시예에서, 객체 인덱스는 메모리(230)(232)에 저장된 후 반도체 저장매체(110n) 또는 기타 비휘발성 메모리의 채널에 주기적으로 오프로드(off-load)된다. 당업자는 메모리 제어기(228), 동적 메모리 어레이(230), 및 정적 메모리 어레이(232)의 그 밖의 용도 및 구성을 알게 될 것이다.
일실시예에서, 반도체 저장장치 제어기(202)는 저장장치/반도체 저장장치(102) 및 하나 이상의 외부 메모리 제어기(250)와, 관련된 외부 메모리 어레이(252) 및 CPU(248) 간의 DMA 동작을 제어하는 DMA 제어기(226)를 포함한다. 외부 메모리 제어기(250)와 외부 메모리 어레이(252)에 '외부'를 사용한 이유는 이들이 저장장치/반도체 저장장치(102)의 외부에 있기 때문이다. 또한 DMA 제어기(226)는 또한, NIC(244) 및 관련 RDMA 제어기(246)를 통해 요청 장치와 함께 RDMA 동작을 제어할 수 있다.
일실시예에서, 반도체 저장장치 제어기(202)에는 관리 버스(236)에 연결된 관리 제어기(234)가 포함되어 있다. 일반적으로 관리 제어기(234)는 저장장치/반도체 저장장치(102)의 환경 척도 및 상태를 관리한다. 관리 제어기(234)는 관리 버스(236)를 통해 장치 온도, 팬 속도, 전원 공급 장치 설정 등을 모니터링할 수 있다. 관리 제어기(234)는 FPGA 코드 및 제어기 소프트웨어의 저장을 위한 소거가능한 프로그램가능 독출전용 메모리("EEPROM")의 독출과 프로그래밍을 지원할 수 있다. 일반적으로 관리 버스(236)는 저장장치/반도체 저장장치(102) 내의 다양한 구성 요소에 연결된다. 관리 제어기(234)는 로컬 버스(206)를 통해 경고 신호, 인터럽트 신호 등을 통신할 수 있고, 시스템 버스(241) 또는 다른 버스에 연결되는 별도의 연결선을 포함할 수 있다. 일실시예에서, 관리 버스(236)는 "I2C"(inter-integrated circuit) 버스이다. 당업자는 관리 버스(236)에 의해 저장장치/반도체 저장장치(102)의 구성 요소에 연결된 관리 제어기(234)의 그 밖의 관련 기능과 용도를 알게 될 것이다.
일실시예에서, 반도체 저장장치 제어기(202)에는 특정 응용에 맞게 설계할 수 있는 기타 로직(242)이 포함되어 있다. 반도체 장치 제어기(202) 또는 주제어기(224)를 FPGA나 그 밖의 제어기로 구성할 경우에는, 일반적으로, 특정 응용, 고객 요구사항, 저장 요구사항 등에 근거하여 사용자 맞춤 로직을 포함시킬 수 있다.
데이터 파이프라인(DATA PIPELINE)
도 3a는 본 발명에 따른 반도체 저장장치(102) 내에 있는, 기입데이터 파이프라인(write data pipeline)(106) 및 독출데이터 파이프라인(read data pipeline)(108)을 갖는 반도체 저장 제어부(104)의 일실시예(300)를 설명하는 블록도이다. 이 실시예(300)는 데이터 버스(204), 로컬 버스(206) 및 버퍼 제어기(208)를 포함하는데, 이들은 도 2의 반도체 저장장치 제어기(202)와 관련하여 설명한 것과 사실상 유사하다. 기입데이터 파이프라인(106)에는 패킷화기(packetizer)(302) 및 오류수정 코드(error-correcting code, "ECC") 인코더(304)가 포함되어 있다. 다른 실시예에서 기입데이터 파이프라인(106)에는 입력 버퍼(306), 기입 동기화(write synchronization) 버퍼(308), 기입 프로그램(write program) 모듈(310), 압축(compression) 모듈(312), 암호화(encryption) 모듈(314), 가비지 취합기 바이패스(garbage collector bypass)(316)(독출데이터 파이프라인(108)에도 일부 포함됨), 편향(bias) 모듈(318), 및 기입 버퍼(320)가 포함된다. 독출데이터 파이프라인(108)에는 독출 동기화(read synchronization) 버퍼(328), ECC 디코더(322), 패킷해제기(depacketizer)(324), 정렬(alignment) 모듈(326), 그리고 출력 버퍼(330)가 포함되어 있다. 다른 실시예에서 독출데이터 파이프라인(108)은 역편향(inverse bias) 모듈(332), 가비지 취합기 바이패스(316)의 일부, 암호해독(decryption) 모듈(334), 압축해제(decompression) 모듈(336), 그리고 독출 프로그램(read program) 모듈(338)을 포함할 수 있다.
반도체 저장 제어부(104)는 또한, 제어 및 상태(control and status) 레지스터(340) 및 제어 대기열(control queue)(342), 뱅크 인터리브(bank interleave) 제어기(344), 동기화 버퍼(346), 저장 버스 제어기(348), 멀티플렉서("MUX")(350)를 포함하고 있다. 도면에 나타낸 실시예에서, 반도체 저장 제어부(104)는 기입데이터 파이프라인(106)의 일부 및/또는 독출데이터 파이프라인(108)의 일부이거나, 또는 기입데이터 파이프라인(106) 및 독출데이터 파이프라인(108)과 독립적인, 구성(configuration) 모듈(352)을 포함한다. 반도체 제어부(104) 및 이와 관련된 기입데이터 파이프라인(106)과 독출데이터 파이프라인(108)의 구성 요소들에 대해서 아래에서 설명한다. 다른 실시예에서는 동기형 반도체 저장매체(110)를 사용할 수 있으며, 이 때에는 동기화 버퍼(308, 328)가 제외될 수 있다.
기입데이터 파이프라인(Write Data Pipeline)
기입데이터 파이프라인(106)은, 다른 단의 기입데이터 파이프라인(106)을 통해 직접적 또는 간접적으로 반도체 저장장치에 기입되는 데이터 또는 메타데이터 세그먼트(meta data segment)를 수신하는 패킷화기(302)를 포함하고, 반도체 저장매체(110)의 크기에 맞는 하나 이상의 패킷을 생성한다. 데이터 또는 메타데이터 세그먼트는 일반적으로, 객체와 같이 데이터 구조의 일부일 뿐만 아니라 전체 데이터 구조를 포함할 수도 있다. 다른 실시예에서, 데이터 세그먼트는 데이터의 일부 블록일 뿐만 아니라 데이터의 전체 블록을 포함할 수도 있다. 일반적으로, 데이터 구조 등의 데이터 세트는 컴퓨터(112), 클라이언트(114), 또는 다른 컴퓨터 또는 장치에서 수신되고 반도체 저장장치(102) 또는 컴퓨터(112)로 스트리밍되는 데이터 세그먼트 형태로 반도체 저장장치(102)로 전송된다. 데이터 세그먼트는 다른 이름으로 부르기도 하지만(에컨대 데이터 꾸러미(parcel)), 여기서는 데이터 구조 또는 데이터 블록의 전부 또는 일부를 포함하는 것으로 사용하고 있다.
각 데이터 구조는 하나 이상의 패킷으로 저장된다. 각 데이터 구조는 하나 이상의 컨테이너 패킷을 포함할 수 있다. 각각의 패킷은 헤더를 포함하고 있다. 헤더는 헤더 유형 필드를 포함할 수 있다. 유형 필드에는 데이터, 속성, 메타데이터, 데이터 세그먼트 구분자(다중 패킷의 경우), 데이터 구조, 데이터 링크 등이 포함될 수 있다. 헤더는 또한 패킷의 크기(가령, 패킷에 포함된 데이터의 바이트 수)에 관한 정보를 포함할 수 있다. 패킷의 길이는 패킷 유형에 따라 설정될 수 있다. 헤더는 데이터 구조에 대한 패킷의 관계를 설정하는 정보를 포함할 수 있다. 예를 들어, 데이터 구조 내에서 데이터 세그먼트의 위치를 식별할 수 있는 데이터 패킷 헤더에서 옵셋을 사용하는 것을 예로 들 수 있다. 당업자는 패킷화기(302)에 의해서 헤더 내에서 데이터에 포함될 수 있는 다른 정보 및 데이터 패킷에 추가될 수 있는 다른 정보에 대해서 알게 될 것이다.
각 패킷은 헤더를 포함하며, 데이터 또는 메타데이터 세그먼트로부터의 데이터를 포함할 수 있다. 각 패킷의 헤더는 패킷을 이 패킷이 속하는 데이터 구조에 연관시키는 관련 정보를 포함한다. 예를 들어, 헤더는 객체 식별자(identifier) 또는 다른 데이터 구조 식별자, 그리고 데이터 세그먼트·객체·데이터 구조·또는 데이터 패킷을 형성한 데이터 블록을 나타내는 옵셋을 포함할 수 있다. 헤더는 패킷을 저장하기 위해 저장 버스 제어기(348)가 사용하는 논리적 주소를 포함할 수 있다. 헤더는 또한, 패킷에 포함된 바이트 수와 같은 패킷 크기에 관한 정보를 포함할 수 있다. 헤더에는 또한, 데이터 세그먼트 또는 데이터 구조를 재구성할 때에 데이터 구조 내에 있는 다른 패킷에 대해서 데이터 세그먼트가 어디에 속해 있는지를 식별하는 시퀀스 번호가 포함될 수 있다. 헤더에는 헤더 유형 필드가 포함될 수 있다. 유형 필드에는 데이터, 데이터 구조, 속성, 메타데이터, 데이터 세그먼트 구분자(다중 패킷의 경우), 데이터 구조 유형, 데이터 구조 링크 등이 포함될 수 있다. 당업자는 패킷화기(302)에 의해서 헤더 내에서 데이터 또는 메타데이터에 포함될 수 있는 다른 정보 및 패킷에 추가될 수 있는 다른 정보에 대해서 알게 될 것이다.
기입데이터 파이프라인(106)에는, 패킷화기(302)으로부터 받은 하나 이상의 패킷에 대한 하나 이상의 오류수정 코드("ECC")를 생성하는 ECC 인코더(304)가 포함된다. ECC 인코더(304)는 일반적으로, 하나 이상의 데이터 패킷과 함께 저장되는 ECC 검사비트(checkbit)를 생성하는 오류 수정 알고리즘을 사용한다. ECC 코드와 연관된 하나 이상의 데이터 패킷과 함께 ECC 인코더(304)에 의해 생성된 ECC 코드가 ECC 청크(chunk)를 구성한다. 하나 이상의 데이터 패킷과 함께 저장된 ECC 데이터는, 전송 및 저장 시에 데이터에 발생된 오류를 검출하고 수정하는 데 사용된다. 일실시예에서, 패킷은 길이 N의 인코드되지 않은 블록으로서 ECC 인코더(304) 내로 스트리밍된다. 길이 S의 신드롬(syndrome)을 계산하고 첨부하여 길이 N+S의 인코딩된 블록으로서 출력한다. N과 S 값은, 특정 성능, 효율, 및 견고성 척도를 달성하기 위해 선택한 알고리즘의 특징에 따라 달라진다. 일실시예에서, ECC 블록과 패킷 사이의 관계는 고정되어 있지 않다. 패킷에 하나의 ECC 블록보다 많이 포함될 수 있고, ECC 블록에 하나의 패킷보다 많이 포함될 수 있으며, 제1패킷이 ECC 블록 내에서 어디에서나 끝날 수 있고 제2패킷이 동일한 ECC 블록 내에서 제1패킷의 종료 후에 시작될 수 있다. 일실시예에서, ECC 알고리즘은 동적으로 변경되지 않는다. 일실시예에서, 데이터 패킷과 함께 저장된 ECC 데이터는 두 비트 이상에 발생한 오류를 수정하기에 충분한 정도로 강력하다.
단일 비트 이상의 수정 또는 심지어 이중 비트 수정을 가능케 하는 강력한 ECC 알고리즘을 사용하면 반도체 저장매체(110)의 수명을 연장할 수 있는 이점이 있다. 예를 들어, 플래시 메모리를 반도체 저장매체(110)의 저장매체로 사용할 경우, 이 플래시 메모리에 오류 없이 소거 사이클당 약 100,000회 기입 할 수 있다. 이 사용 한도를, 강력한 ECC 알고리즘을 사용함으로써 연장할 수 있다. 반도체 저장장치(102)에 ECC 인코더(304) 및 해당 ECC 디코더(322)를 장착함으로써, 반도체 저장장치(102)는 내부적으로 오류를 수정할 수 있고, 덜 강력한 ECC 알고리즘을 사용하는 경우(가령, 단일 비트 수정 알고리즘)보다 수명이 더 길어진다. 그러나 다른 실시예에서, ECC 인코더(304)는 덜 강력한 알고리즘을 사용할 수 있고 단일 비트 또는 더블 비트 오류를 수정할 수 있다. 다른 실시예에서, 반도체 저장매체(110)의 용량을 늘리기 위해 다층 셀("MLC") 플래시와 같이 신뢰성이 더 낮은 저장장치로 반도체 저장매체(110)를 구성할 수 있다. 이 경우에 이 저장매체는 보다 더 강력한 ECC 알고리즘없이는 충분히 신뢰할 수 없다.
일실시예에서, 기입 파이프라인(106)은, 반도체 저장매체(110)에 기입할 데이터 세그먼트를 수신하고, 수신되는 데이터 세그먼트를 패킷화기(302)와 같은 기입데이터 파이프라인(106)의 다음 단계(또는 보다 더 복잡한 기입데이터 파이프라인(106)의 다음 단계)가 다음번 데이터 세그먼트를 처리할 준비를 할 때까지 저장하는 입력 버퍼(306)를 포함한다. 입력 버퍼(306)는 일반적으로, 데이터 세그먼트가 수신되는 속도 및 기입데이터 파이프라인(106)에 의해 처리되는 속도와의 차이를, 적정 크기의 데이터 버퍼를 사용하여 완충시킨다. 또한, 데이터 버스(204)의 동작 효율을 향상시키기 위해 입력 버퍼(306)는 데이터 버스(204)로 하여금, 데이터를 기입데이터 파이프라인(106)에 의해 유지될 수 있는 속도보다 큰 속도로 기입데이터 파이프라인(106)으로 전송하도록 한다. 일반적으로, 기입데이터 파이프라인(106)에 입력 버퍼(306)가 포함되지 않는 경우에는, 그 외의 곳, 가령, 컴퓨터(112) 내의 반도체 저장장치(102) 내에서, 기입데이터 파이프라인(106) 외부(예를 들어 원격 DMA("RDMA")를 사용하는 경우에는 네트워크 인터페이스 카드("NIC") 내 또는 그 밖의 장치)에서 버퍼링 기능이 수행된다.
다른 실시예에서, 기입데이터 파이프라인(106)에는 또한, 반도체 저장매체(110)에 패킷을 기입하기 전에 ECC 인코더(304)에서 받은 패킷을 버퍼링하는 기입 동기화 버퍼(308)가 포함되어 있다. 기입 동기화 버퍼(308)는 로컬 클럭 도메인과 반도체 저장장치 클럭 도메인 사이의 경계에 위치하고, 클럭 도메인의 차이를 완충하기 위한 버퍼링 기능을 제공한다. 다른 실시예에서는 동기형 반도체 저장매체(110)를 사용할 수 있으며 이 때에는 동기화 버퍼(308)(328)를 사용하지 않을 수 있다.
일실시예에서, 기입데이터 파이프라인(106)에는 또한, 패킷화기(302)에서 하나 이상의 패킷을 직접 혹은 간접적으로 받는 편향(bias) 모듈(318)이 포함되어 있다. 편향 모듈(318)은 반도체 저장매체(110)의 저장셀의 편향 방향으로 데이터 패킷의 비트를 편향시킨다. 여기서 사용한 "편향(bias)"이란 용어는 특정 데이터 패턴을 표현하기 위하여 하나의 비트군(bit set)에 속하는 비트들에 대한 우선도, 확률, 경향, 또는 선호도 값을 의미한다. 편향은 본연의 특성, 설계된 속성, 또는 저장매체에 대한 동작 수행 상의 특성이거나, 또는 무작위로 발생할 수 있다. 데이터 자체에 편향이 있을 수 있고, 데이터 저장매체에 편향이 있을 수 있다. 편향은 이진수 1 쪽으로, 이진수 0쪽으로, 이진수 1과 0의 균형이 이루어지는 쪽으로, 특정 비트에 대한 특정 이진값 쪽으로 향하여 일어날 수 있다.
예를 들어, 일실시예에서, 데이터 파일의 끝 부분에 이진수 0을 덧붙여서 이 끝 부분을 저장하는 데이터 패킷이 이진수 0쪽으로 편향되도록, 즉, 데이터 패킷이 이진수 1보다 더 많은 이진수 0을 갖도록 할 수 있다. 다른 데이터 패킷들은 이진수 0보다 이진수 1을 더 많이 가질 수 있거나, 이진수 1 및 이진수 0의 수가 균분될 수 있다. 데이터 패킷이 패킷 내의 데이터를 바탕으로 개별적으로 편향될 수도 있지만, 반도체 저장매체(110) 저장셀의 편향은 특정 이진 값 또는 패턴의 저장, 또는 저장셀의 일부 특성에 관련된 몇 가지 이점에 기반을 둘 수 있다. 저장셀의 특성의 일례로서, NAND 플래시 저장셀은 현재, 제조자에 의해서 제조시에 모두 이진수값 1 또는 거의 모두 이진수값 1로 편향되고 있다. 또한, NAND 플래시 저장셀에서 소거 작용을 실행하면 저장셀의 프로그래밍에 의해 특정 저장셀이 이진수 값 0으로 변경되도록 각 저장셀에 있는 이진수 값이 이진수 1로 설정된다. 모든 이진수값 1 또는 거의 모든 이진수값 1에 대한 이러한 제조시 또는 소거시의 편향은 비휘발성 반도체 저장매체의 저장셀에 대한 빈 상태의 한 예를 나타낸다.
일실시예에서, 저장요소(216, 218, 220) 각각은, 편향을 띠는 다수의 저장셀에 이진 데이터를 저장한다. 각 저장셀은 하나 이상의 이진수 비트, 또는 값을 저장한다. 플래시 메모리 저장셀에는 각 셀이 단일의 이진 비트를 저장하는 단층 셀("SLC")과, 각 셀이 둘 이상의 이진 비트를 저장하는 다층 셀("MLC")이 포함된다. 저장셀의 예로는 트랜지스터, 커패시터, 자성 요소, 기계 요소, 광학 요소 등이 포함된다. 플래시 메모리에서 각 저장셀은 일반적으로 부동 게이트(floating-gate) 트랜지스터이다. NRAM, MRAM, DRAM, PRAM 등의 다양한 반도체 저장장치에 다양한 유형의 저장셀이 포함될 수 있으며, 저장셀당 하나의 이진 비트 또는 둘 이상의 이진 비트를 저장할 수 있다.
일실시예에서, 빈 상태 또는 소거된 상태로 저장요소(216, 218, 220)에 있는 저장셀이 초기 이진 값을 저장한다. 초기 이진 값은 저장셀에 대한 편향을 나타낸다. 예를 들어, 저장셀들은 저장셀에 특정값을 기본 레벨(디폴트값)로 저장시키는 물리적, 전기적, 기계적 또는 기타 성능을 갖고 있다. 다른 실시예에서, 편향은 반도체 저장매체(110)의 설계 고려사항 또는 호환성 문제 등에 기반하여 의도적으로 선정할 수 있으며, 저장셀의 기본 특성에 따라서는 선정하지 않을 수도 있다.
예를 들어, 일실시예에서, 저장요소(216, 218, 220)의 각 저장셀들은 제조자가 납품시에 이진수 1을 저장할 수 있으며, 전형적인 플래시 메모리에서 프로그래밍(또는 기입)하기 전에 1의 값으로 소거될 수 있다. 다른 실시예에서, 저장요소(216, 218, 220)의 저장셀은, 이진수 0 방향으로, 이진수 1과 0의 균형이 이루어지는 방향, 즉 이진수 1의 수 및 0의 수가 같은 방향으로, 다수 비트에 대한 특정 이진수 값 방향으로, 이진 패턴 방향 등으로 편향될 수 있다.
특정 실시예에서, 하나 이상의 저장셀의 편향은, 하나 이상의 저장셀에 물리적으로 인접해 있거나 그렇지 않으면 가까이 있는 다른 저장셀의 상태에 의해서 또는 이 상태에 기초하여 영향을 받을 수 있다. 예를 들어, 저장셀과 다른 기타 저장셀 사이의 셀 간 간섭을 최소화하기 위해, 저장셀에 저장된 데이터를 편향시키는 것이 바람직할 수 있다. 셀 간 간섭은 물리적으로 인접해 있는 저장셀 사이의 전압 차이에 의해 일어날 수 있으며, 특정 실시예에서, 저장셀의 물리적 형상을 바탕으로 저장셀 간의 전압 차이를 줄이거나 최소화하기 위하여 데이터를 편향시킴으로써 셀 간 간섭을 줄일 수 있다. 일실시예에서, 반도체 저장매체(110)의 저장셀에는, 저장셀 및 기타 물리적으로 인접한 저장셀 사이에 미리 정의된 전압 차이의 임계값을 만족하는 이진 패턴 쪽으로의 편향이 있을 수 있다.
국부적으로 일어나는 셀 간 간섭 이외에도, 대형 멀티셀 구조(비트 스트링(bit string), 워드라인(word line) 등)에 의해 셀 간 간섭이 발생할 수 있다. 이진수 1 또는 이진수 0의 줄무늬와 같은, 데이터의 특정 줄무늬 또는 기타 패턴은 대형 멀티셀 구조의 검출 앰프(sense amp) 및/또는 기타 관리 회로의 정확성이나 효율성에 방해가 될 수 있으며, 데이터를 이러한 줄무늬 또는 다른 패턴으로부터 멀리 편향시키는 것이 유리할 수 있다.
SLC 플래시 메모리와 같은 특정 유형의 저장셀에 있어서는, 저장셀의 전압 레벨 및 이와 관련된, 저장셀들 사이의 전압 차이가 각 저장셀의 단일 비트값을 기초로 할 수 있고, 데이터 편향에는 데이터 패킷 내에 있는 및/또는 저장셀의 물리적 영역 내에 있는 이진값 1과 이진값 0 사이의 최소의 천이를 갖는 이진 패턴을 향한 데이터 편향이 포함될 수 있다. MLC 플래시 메모리와 같은 다른 유형의 저장셀에 있어서는, 저장셀의 전압 레벨 및 이와 관련된, 저장셀들 사이의 전압 차이가 서브 패턴이나 부호를 형성하는 비트 그룹을 기초로 할 수 있고, 데이터 편향에는 특정 서브패턴 또는 부호 사이에서 최소의 전환을 갖는 이진 패턴을 향한 데이터 편향이 포함될 수 있다. 일례로서, 서브패턴이나 부호를 사용하는 것에는, 다수의 이진 값을 MLC 저장셀 내에서 전하 레벨로 이진 매핑 또는 그레이 코드(Grey code) 매핑하는 것이 포함된다. 특정 실시예에서, 단일의 MLC 저장셀에 의해 저장된 비트는, 인접한 주소를 갖지 않으며, 서로 다른 물리적인 페이지 또는 논리적 페이지 등에 저장될 수 있다.
일실시예에서, 편향 모듈(318)은 다른 편향 기법과 별도로, 이 대신에, 또는 이와 더불어 수행되는 별도의 단계로서 셀 간 간섭을 줄이기 위하여 소스데이터를 편향시킨다. 예를 들어, 뒤집기(flipping), 백색화(whitening), 압축(compressing), 재배치(relocating), 및/또는 기타 방법으로 소스데이터를 편향시킴으로써, 소스데이터의 개별 블록은 여전히 셀 간 간섭을 일으키는 패턴을 띠게 될 것인데, 편향 모듈(318)은 소스데이터의 개별 블록의 하나 이상을 셀 간 간섭을 최소화하는 패턴 방향으로 편향시킬 수 있다.
편향 모듈(318)은 패킷을 편향시킬 때 반도체 저장매체(110)의 저장셀의 편향과 보다 더 가깝게 일치되도록 패킷의 편향을 변경하여 편향시킨다. 편향 모듈(318)은 가역적 방식(reversible manner)으로 패킷을 편향시킴으로써, 역편향(inverse bias) 모듈(332)로 하여금 패킷을 원래 소스 데이터 값으로 변환하여 원래의 소스 편향을 가질 수 있도록 한다. 일실시예에서, 편향 모듈(318)이 편향시키는 패킷은, 반도체 저장매체(110)의 특정 논리적 또는 물리적 저장 영역 또는 구획(즉, 소거 블록, 가상 소거 블록, 페이지, 가상 페이지, ECC 청크, 페이지 내 구획 등)에 저장될 수 있는 크기로 맞춰진다. 일실시예에서, 편향 모듈(318)은 패킷의 편향에 기반하여 특정 패킷을 선택적으로 편향시키고, 다른 패킷은 편향시키지 않을 수 있다.
당업자들은 편향 모듈(318)이, 다른 방식으로, 데이터 패킷의 하위군(subset)을 형성하는 하나 이상의 데이터 세그먼트에 대해 작용할 수 있음을 알게 될 것이다. 마찬가지로, 역편향 모듈(332)도 데이터 세그먼트에 대해서 작용할 수 있다. 일실시예에서, 추가 방식으로 또는 추가적으로, 데이터 패킷(데이터 세그먼트와 같은 데이터 패킷 하위군)은 반도체 저장매체(110)에 있는 저장 영역의 크기, 버스 또는 버퍼의 크기, 파이프라인(106)(108)의 크기, 표시자(indicator)의 저장을 위하여 마련된 여분 비트의 수 등에 기초하여 그 크기를 정할 수 있다.
저장셀의 편향 방향으로 데이터 패킷을 편향시킴으로써 편향 모듈(318)은 반도체 저장매체(110) 및 반도체 저장장치(102)의 성능 및 내구성을 증가시킨다. 예를 들어, 저장셀의 편향과 보다 더 가깝게 일치되도록 패킷을 편향함으로써 기입 시간과 소거 시간이 줄어든다. 왜냐하면 이들 작용을 실행하기 위해서 변경되어야 할 실제 저장셀이 더 적게 되기 때문이다. 이로써 또한 저장셀의 기입 횟수 측면에서의 수명이 증가된다. 왜냐하면, 저장셀에서 실행되는 동작 횟수가 더 적으면 저장셀의 열화가 성능/안정성에 영향을 주기 시작할 때까지의 저장셀 수명이 더 길어질 것이기 때문이다. 특정 실시예에서, 데이터 패킷을 편향시킴으로써 전력 소모가 감소하거나 다른 추가적인 이득을 얻을 수 있다. 일실시예에서, 프로그램되거나 기입되기 직전에 편향을 만족하는 초기 이진값이 저장셀에 저장되기 때문에, 저장셀의 편향에 데이터 패킷의 매칭이 가까울수록, 데이터 패킷을 저장하기 위해 변경되는 저장셀의 개수가 적어지며, 편향된 상태로 남아있는 저장셀은 더 많아진다.
도시된 바와 같이, 편향 모듈(318)은 패킷을 ECC 인코더(304)로 보내기 전에 하나 이상의 패킷을 편향시킨다. 다른 실시예에서, 패킷을 편향시키기 위해 편향 모듈(318)을 사용하는 방식에 따르면, 편향 모듈(318)은 기입데이터 파이프라인(106)에 있는 ECC 인코더(304)에 이어서 데이터를 수신할 수 있거나, 기입데이터 파이프라인(106)에서 다른 위치에 배치될 수 있다. 예를 들어, 특정 실시예에서는 편향 모듈(318)이 편향시키는 데이터로부터 떨어지도록 ECC 데이터를 유지하는 것이 유리할 수도 있고, 반면에 다른 실시예에서는 편향 모듈(318)로 하여금 ECC 인코더(304)로부터의 ECC 데이터를 포함하는 데이터를 편향시키는 것이 유리할 수도 있다.
일실시예에서, 편향 모듈(318)은 데이터 세그먼트를 ECC 인코더(304)에 전송하기 전에 하나 이상의 데이터 세그먼트를 편향시킨다. 일실시예에서 데이터 세그먼트는 데이터 패킷보다 더 작은 비트군일 수 있다. 이러한 실시예에서 데이터 세그먼트는 기입데이터 파이프라인(106)의 폭(단위: 비트/바이트)을 포함할 수 있다. 마찬가지로, 역편향 모듈(332)은 데이터 세그먼트를 독출한 후에, 편향된 데이터 세그먼트를 원래의 소스 상태로 역변환할 수 있다. 데이터 세그먼트를 편향 및 역편향시킴으로써 기입데이터 파이프라인(106) 및 독출데이터 파이프라인(108)에 있는 편향 모듈(318)과 역편향 모듈(332)의 사용을 용이하게 할 수 있다. 왜냐하면 데이터 세그먼트의 크기를 파이프라인(106)(108)을 통해 스트리밍되는 데이터의 크기(버스 폭)에 맞출 수 있기 때문이다.
다른 실시예에서, 편향 모듈(318)은 압축 모듈(312), 암호화 모듈(314), ECC 인코더(304) 등과 같은 기입데이터 파이프라인(106) 내의 다른 요소들과 통합가능하다. 편향 모듈(318)은 데이터 패킷이 기입되기 전에 데이터 패킷을 편향시키고, 역편향 모듈(332)은 편향된 데이터 패킷을, 데이터패킷이 읽혀진 다음에 원래의 소스 상태로 역변환하기 때문에, 편향 모듈(318) 및 이에 대응하는 역편향 모듈(332)은 반도체 저장매체(110)의 성능을 투명하게 향상시킨다.
다른 실시예에서, 기입데이터 파이프라인(106)에는 또한, 패킷화기(302)에 데이터 세그먼트를 전송하기 전에 직접적 또는 간접적으로 입력 버퍼(306)로부터 수신된 데이터 또는 메타데이터 세그먼트를 암호화하는 암호화 모듈(314)이 포함된다. 여기서 데이터 세그먼트 암호화는 데이터 세그먼트와 함께 받은 암호화 키를 사용하여 이루어진다. 데이터를 암호화하는 암호화 모듈(314)에 의해 사용되는 암호화 키는 반도체 저장장치(102) 내에 저장된 모든 데이터에 대해 공통인 것이 아니라 데이터 구조마다 다를 수 있다. 데이터 세그먼트의 수신시에 함께 받는 것에 대해서는 아래에서 설명한다. 예를 들어, 암호화 모듈(314)에 의해 데이터 세그먼트를 암호화하기 위해 사용되는 암호화 키는, 데이터 세그먼트와 함께 수신할 수 있다. 또는 데이터 세그먼트가 속하는 데이터 구조를 작성하기 위한 명령어의 일부로서 수신할 수 있다. 반도체 저장장치(102)는 암호화 키와 함께 사용되는 각 데이터 구조 패킷에 있는 공개된(비밀성없는) 암호기술상의 랜덤값(nonce)을 사용하고 저장할 수 있다. 모든 패킷에 각각 다른 랜덤값(nonce)을 저장할 수 있다. 암호화 알고리즘에 의한 보호성을 개선하기 위하여 데이터 세그먼트를 고유의 랜덤값(nonce)을 갖는 다수의 패킷으로 분할할 수 있다.
암호화 키는 클라이언트(114), 다른 컴퓨터, 키 관리자, 또는 데이터 세그먼트를 암호화하는 데 사용되는 암호화 키를 갖고 있는 다른 장치로부터 받을 수 있다. 일실시예에서, 암호화 키는 반도체 저장장치(102), 컴퓨터(112), 클라이언트(114), 또는 개인키 및 공용키를 안전하게 전송하고 보호하기 위한 산업계 표준 방법을 실행하는 능력을 갖고 있는 다른 외부 에이전트 중 하나로부터 반도체 저장 제어부(104)로 전송된다 .
일실시예에서, 암호화 모듈(314)은, 제1패킷과 함께 받은 제1 암호화 키와 함께 이 제1패킷을 암호화하고, 제2패킷과 함께 받은 제2 암호화 키와 함께 이 제2패킷을 암호화한다. 다른 실시예에서 암호화 모듈(314)은 패킷과 함께 받은 제1 암호화 키와 함께 이 제1패킷을 암호화하고, 제2 데이터 패킷을 암호화하지 않고 다음 단계로 넘긴다. 반도체 저장장치(102)의 기입데이터 파이프라인(106)에 포함된 암호화 모듈(314)에 의해, 하나의 파일 시스템 없이도, 또는 해당 데이터 구조 또는 데이터 세그먼트를 저장하기 위하여 서로 다른 암호화 키를 계속 추적하는 그 밖의 외부 시스템 없이도, 데이터 구조별로 또는 세그먼트별로 암호화가 가능해지는 이점이 있다. 각 요청 장치(155) 또는 관련 키 관리자는 요청 장치(155)가 보낸 데이터 구조 또는 데이터 세그먼트만을 암호화하는 데 사용되는 암호화 키를 독립적으로 관리한다.
일실시예에서, 암호화 모듈(314)은 반도체 저장장치(102)에 고유한 암호화 키를 사용하여 하나 이상의 패킷을 암호화할 수 있다. 암호화 모듈(314)은 이러한 매체 암호화를 독립적으로 수행할 수 있다. 또는, 위에서 설명한 암호화에 추가하여 수행할 수 있다. 일반적으로 헤더를 포함하여 전체 패킷이 암호화된다. 다른 실시예에서는 헤더가 암호화되지 않는다. 암호화 모듈(314)에 의한 매체 암호화는 반도체 저장매체(110)에 저장되는 데이터의 보안 등급을 제공한다. 예를 들어, 특정 반도체 저장장치(102)에 고유한 매체 암호화에 의해 데이터를 암호화하는 경우에, 만일 반도체 저장매체(110)가 다른 반도체 저장 제어부(104), 반도체 저장장치(102), 또는 컴퓨터(112)에 연결되어 있다면, 반도체 저장매체(110)의 내용은 일반적으로, 큰 노력없이 반도체 저장매체에 데이터를 기입하는 동안 사용되는 것과 동일한 암호화 키를 사용하지 않고는 읽을 수 없을 것이다.
다른 실시예에서, 기입데이터 파이프라인(106)에는, 패킷화기(302)로 데이터 세그먼트를 보내기 이전에 메타데이터 세그먼트의 데이터를 압축하는 압축 모듈(312)이 포함되어 있다. 압축 모듈(312)은 일반적으로, 세그먼트의 저장 크기를 줄이기 위하여 당업자에게 알려져 있는 압축 루틴을 사용하여 데이터 또는 메타데이터 세그먼트를 압축한다. 예를 들어, 데이터 세그먼트가 512개의 영(0)을 갖는 문자열을 포함하는 경우에, 압축 모듈(312)은 이 512개의 0을 512개의 0을 나타내는 코드 또는 토큰(token)(이 코드는 512개의 0이 점유하는 공간보다 훨씬 더 콤팩트하다)으로 대체한다.
일실시예에서, 압축 모듈(312)은 제1 압축 루틴으로 제1 세그먼트를 압축하고, 제2 세그먼트를 압축하지 않고 넘긴다. 다른 실시예에서, 압축 모듈(312)은 제1 압축 루틴으로 제1 세그먼트를 압축하고 제2 압축 루틴으로 제2 세그먼트를 압축한다. 반도체 저장장치(102)에 이러한 유연성을 부여하는 것은 유용한데, 반도체 저장장치(102)에 데이터를 기입하는 클라이언트(114) 또는 다른 장치가 각각 압축 루틴을 지정할 수 있고, 또는, 하나가 압축 루틴을 지정하는 반면에 다른 것은 압축을 지정하지 않을 수도 있다. 압축 루틴은 또한, 데이터 구조 유형 또는 데이터 구조 등급을 기준으로 한 기본 설정(디폴트 세팅)에 따라 선택할 수 있다. 예를 들어, 특정 데이터 구조의 제1 데이터 구조는 압축 루틴 기본 설정을 무시할 수 있고, 동일한 데이터 구조 등급 및 데이터 구조 유형의 제2 데이터 구조는 압축 루틴 기본 설정을 사용할 수 있고, 동일한 데이터 구조 등급 및 데이터 구조 유형의 제3 데이터 구조는 압축을 사용하지 않을 수 있다.
일실시예에서, 기입데이터 파이프라인(106)에는, 가비지 취합 시스템으로 데이터를 우회(bypass)시키기 위하여 독출데이터 파이프라인(108)에서 데이터 세그먼트를 수신하는 가비지 취합기 바이패스(316)가 포함되어 있다. 가비지 취합 시스템은, 통상적으로, 패킷에 삭제 표시가 됨으로써 또는 패킷이 변경되고 이 변경된 데이터가 서로 다른 위치에 저장됨으로써 더 이상 유효하지 않게 된 패킷에다 표시를 한다. 어떤 시점에서, 가비지 취합 시스템은 저장장치의 특정 섹션을 복원할 수 있음을 결정한다. 이러한 결정은, 사용 가능한 저장 용량이 부족할 때, 유효하지 않다고 표시된 데이터의 비율이 소정의 임계값에 도달한 때, 유효한 데이터를 병합할 때, 저장장치의 해당 섹션에 대한 오류 검출률이 임계값에 도달한 때, 또는 데이터 분포를 기반으로 성능을 개선하고자 할 때 등의 경우에 실시할 수 있다. 가비지 취합 알고리즘이 저장장치 섹션을 복원할 시점을 결정하도록 하기 위하여 많은 요인들을 고려할 수 있다.
일단 저장장치의 한 섹션의 복구를 위해 표시하면, 대개는, 해당 섹션에 있는 유효한 패킷을 이전해야 한다. 가비지 취합기 바이패스(316)는, 패킷이 독출데이터 파이프라인(108) 속으로 읽힐 수 있도록 하고, 그 다음에 패킷이 반도체 저장 제어부(104) 밖으로 보내지 않은채 기입데이터 파이프라인(106)으로 직접 보낸다. 일실시예에서, 가비지 취합기 바이패스(316)는 반도체 저장장치(102) 내에서 작동하는 자율적인 가비지 취합기 시스템의 일부이다. 이는, 반도체 저장장치(102)가 데이터를 관리하되, 데이터가 체계적으로 반도체 저장매체(110) 전체에 걸쳐 분산되도록 함으로써, 성능 및 데이터 안정성을 향상시키고, 반도체 저장매체(110)의 임의의 위치 또는 영역의 지나친 사용 및 부족한 사용을 방지하며, 반도체 저장매체(110)의 사용 수명을 연장시킨다.
가비지 취합기 바이패스(316)는 클라이언트(114) 또는 다른 장치에 의해 기입되고 있는 다른 세그먼트와 함께, 기입데이터 파이프라인(106)으로 세그먼트를 삽입하는 역할을 맡고 있다. 도면에 나타낸 실시예에서, 가비지 취합기 바이패스(316)는 기입데이터 파이프라인(106)에 있는 패킷화기(302) 이전에 있고, 독출데이터 파이프라인(108)에 있는 패킷해제기(324) 이후에 있다. 그러나 기입 및 독출데이터 파이프라인(106)(108) 내의 다른 곳에 위치할 수도 있다. 가비지 취합기 바이패스(316)는 반도체 저장매체(110) 내에서의 저장의 효율성을 향상시키고 그에 따라 가비지 취합의 빈도를 줄이기 위하여, 가상 페이지의 나머지 부분을 채우기 위해 기입 파이프라인(108)을 비우는(flush) 동안에 사용할 수 있다.
일실시예에서, 기입데이터 파이프라인(106)에는 효율적인 기입 작용(write operation)의 실행을 위하여 데이터를 버퍼링하는 기입 버퍼(320)가 포함되어 있다. 일반적으로 기입 버퍼(320)는 반도체 저장매체(110)에 적어도 하나의 가상 페이지를 채울 패킷에 대한 충분한 용량을 포함한다. 이로써 기입 작용 실행시에, 중단없이 반도체 저장매체(110)에 데이터의 전체 페이지를 보낼 수 있다. 기입데이터 파이프라인(106)의 기입 버퍼(320)와 독출데이터 파이프라인(108) 내의 버퍼들의 크기를 반도체 저장매체(110) 내의 저장 기입 버퍼와 동일하거나 더 큰 용량으로 맞춤으로써, 데이터를 기입하고 독출하는 것이 더 효율적으로 된다. 왜냐하면, 반도체 저장매체(110)에 데이터의 가상 페이지 전체를 보내는 데 다수의 기입 명령어 대신에 하나의 기입 명령어를 만들 수 있기 때문이다.
기입 버퍼(320)가 채워지고 있는 동안에, 반도체 저장매체(110)에 대해 다른 독출 작용을 실행시킬 수 있다. 이러한 방식의 장점은, 저장장치 기입 버퍼에 데이터를 쓸 때에, 기입 버퍼가 작거나 또는 기입 버퍼가 없는 다른 반도체 장치는 반도체 저장장치를 정지시킬 가능성이 있고 저장장치로 흘러 들어가던 데이터가 멈추게 되기 때문이다. 독출 작용의 실행은 전체의 저장장치 기입 버퍼가 채워지고 프로그램될 때까지 차단될 것이다. 기입 버퍼가 없거나 기입 버퍼가 작은 시스템에 대한 추가적 접근방식으로, 독출 작용을 활성화시키기 위해 완전히 채워지지 않은 저장장치 기입 버퍼를 비우는(flush) 것이 있다. 다시 말하자면, 이 방식은 비효율적인데, 그 이유는 페이지를 채우기 위해 많은 기입/프로그램 사이클이 필요하기 때문이다.
가상 페이지보다 더 큰 크기의 기입 버퍼(320)를 갖는 도면에 나타낸 실시예에 있어서, 많은 하위 명령어(subcommand)를 포함하는 하나의 기입 명령 다음에, 각 반도체 저장요소(216, 218, 220)에 있는 저장 기입 버퍼로부터의 데이터 페이지를 각 반도체 저장요소(216, 218, 220)에 있는 지정된 페이지로 전송하는 하나의 프로그램 명령이 따라 올 수 있다. 이 기법에 의해 페이지 부분 프로그래밍(데이터 신뢰성과 내구성을 감소시키는 것으로 알려져 있음)이 없어지게 되고, 버퍼가 채워지는 동안에 독출 명령어 및 여타 명령어에 대한 목적 뱅크(destination bank)를 개방시키는 장점을 얻게 된다.
일실시예에서, 기입 버퍼(320)는 핑퐁(ping-pong) 버퍼로서, 이 핑퐁 버퍼의 일측이 채워지는 동안에 다른 측이 채워지고 나서 적절한 시점에 전송이 지정된다. 다른 실시예에서, 기입 버퍼(320)는 데이터 세그먼트의 가상 페이지보다 큰 용량의 선입선출 ("FIFO", first-in first-out) 레지스터를 포함한다. 당업자는 데이터를 반도체 저장매체(110)에 기입 전에 데이터의 가상 페이지를 저장시킬 수 있는 구성을 갖는 다른 기입 버퍼(320)에 대해서 알게 될 것이다.
다른 실시예에서, 기입 버퍼(320)의 크기는, 한 페이지 보다 적은 정보를 반도체 저장매체(110)의 저장장치 기입 버퍼에 쓸 수 있도록 가상 페이지보다 작게 맞춰진다. 이 실시예에서, 독출 작용의 정지에 의한 기입데이터 파이프라인(106)의 멈춤을 방지하기 위해, 가비지 취합 과정의 일부로서 한 위치에서부터 다른 위치로 이동해야 할 필요가 있는 가비지 취합 시스템을 사용하여 데이터를 대기열에 둔다. 기입데이터 파이프라인(106)에서의 데이터 멈춤의 경우에, 이 데이터를 가비지 취합기 바이패스(316)를 통해서 기입 버퍼(320)로 공급한 다음에 데이터를 프로그래밍하기 전에 가상 페이지의 페이지를 채우기 위해 반도체 저장매체(110)에 있는 저장장치 기입 버퍼로 공급할 수 있다. 이런식으로, 기입데이터 파이프라인(106)에서의 데이터 멈춤에 의해 반도체 저장장치(102)로부터의 독출이 멈춰지지 않게 될 것이다.
다른 실시예에서, 기입데이터 파이프라인(106)에는, 기입데이터 파이프라인(106) 내에서 하나 이상의 사용자 정의 기능을 갖는 기입 프로그램 모듈(310)이 포함되어 있다. 기입 프로그램 모듈(310)은 사용자가 기입데이터 파이프라인(106)을 사용자 맞춤으로 설정(customize)할 수 있도록 한다. 사용자는 특정 데이터 요구사항 또는 응용에 기반하여, 기입데이터 파이프라인(106)을 맞춤 설정할 수 있다. 반도체 저장 제어부(104)가 FPGA인 경우에, 사용자는 사용자 설정 명령어 및 함수를 이용하여 비교적 쉽게 기입데이터 파이프라인(106)을 프로그램할 수 있다. 사용자는 또한, ASIC을 이용한 사용자 맞춤 기능을 포함시키기 위하여 기입 프로그램 모듈(310)을 사용할 수 있다. 그러나 ASIC으로 사용자 맞춤하는 것은 FPGA를 이용하는 것보다 더 어려울 수 있다. 기입 프로그램 모듈(310)에는, 제1 데이터 세그먼트는 기입 프로그램 모듈(310)에서 실행될 수 있도록 하고 제2 데이터 세그먼트는 기입데이터 파이프라인(106)를 통해 계속될 수 있도록 하는 버퍼와 바이패스 메커니즘이 포함될 수 있다. 다른 실시예에서, 기입 프로그램 모듈(310)은 소프트웨어를 통해 프로그래밍할 수 있는 프로세서 코어를 포함할 수 있다.
기입 프로그램 모듈(310)이 입력 버퍼(306)와 압축 모듈(312) 사이에 도시되어 있지만, 이 기입 프로그램 모듈(310)은 기입데이터 파이프라인(106) 내의 어떠한 곳에 있어도 되며, 각 단계(302~320) 사이에 분산되어 있어도 된다. 또한 독립적으로 프로그램되고 동작하는 각 단계(302~320) 사이에 다수의 기입 프로그램 모듈(310)이 분산될 수도 있다. 또한 각 단계(302~320)의 순서를 변경할 수 있다. 당업자는 특정 사용자 요구사항에 기초하여 각 단계의 순서(302~320)를 적절하게 변경할 수 있음을 알게 될 것이다.
독출데이터 파이프라인(Read Data Pipeline)
독출데이터 파이프라인(108)은, 만일 ECC 블록에 데이터 오류가 존재하는 경우에, 반도체 저장매체(110)로부터 받은 피요청 패킷(requested packet)을 결정하는 ECC 디코더(322)를 포함한다. 이때는 피요청 패킷의 각 ECC 블록과 함께 저장된 ECC를 사용한다. 이때 만일 오류가 존재한다면, ECC 디코더(322)는 피요청 패킷에 있는 모든 오류를 수정하는데, 오류는 ECC를 사용하여 수정가능하다. 예를 들어, ECC가 6 비트의 오류를 검출할 수는 있지만 3 비트 오류를 수정할 수 밖에 없다면, ECC 디코더(322)는 피요청 패킷의 ECC 블록을 3 비트 오류까지만 수정하게 된다. ECC 디코더(322)는 오류 있는 비트를 올바른 1 또는 0 상태로 변경함으로써 오류 있는 비트를 수정하는데, 이로써, 피요청 데이터 패킷은 이 패킷이 반도체 저장매체(110)에 기입되었을 때 그리고 이 패킷에 대해서 ECC가 생성되었을 때와 동일한 상태가 된다.
특정 실시예에서, ECC 디코더(322)는 오류 비트의 위치, 오류 비트에 대한 값, 및/또는 기타 오류 정보와 같은 수정가능한 오류 정보를 구성 모듈(352)(아래에서 설명함)에 제공할 수 있다. 예를 들어, ECC 디코더(322)는 오류가 발생한 데이터 세트의 하나 이상의 비트를 나타내는 오류 편향(error bias)을 구성 모듈(352)에 제공할 수 있다. 본 발명에서 오류 편향은 데이터 세트에서 검출된 하나 이상의 비트 오류를 나타낸다. 일실시예에서, 오류 편향은 데이터 세트에서 검출된 비트 오류의 위치(location) 또는 자리(position)를 포함한다. 다른 실시예에서, 오류 편향은 검출된 비트 오류에 대한 값을 포함한다. 검출된 오류에 대한 값에는 오류 비트 오류 수정 값, 오류 비트의 오류 값 등이 포함될 수 있다. 예를 들어, 일실시예에서 ECC 디코더(322)는, 수정하지 않은 데이터 세트 및 오류 편향(검출된 비트 오류의 위치를 나타냄)을 구성 모듈(352)에 제공하고, 구성 모듈(352)은 상기 위치에 있는 비트를 반전시켜서(inverting) 즉 뒤집어서(flipping) 기지의 편향(known bias)을 결정할 수 있다. 다른 실시예의 예를 들자면, ECC 디코더(322)는 오류수정한 데이터 세트 및 오류 편향(검출된 비트 오류의 위치를 나타냄)을 구성 모듈(352)에 제공할 수 있고, 구성 모듈(352)은 상기 위치에 있는 비트를 반전시켜서 즉 뒤집어서 독출 편향을 결정할 수 있다.
만일 ECC 디코더(322)가, 피요청 패킷이 ECC보다 더 많은 오류 비트를 포함하고 있다고 판단한 경우에는, ECC 디코더(322)는 피요청 패킷의 손상된 ECC 블록에서 오류를 수정할 수 없고 인터럽트 신호를 전송한다. 일실시예에서, ECC 디코더(322)는 피요청 패킷에 오류가 발생한 사실을 알리는 메시지와 함께 인터럽트 신호를 보낸다. 이 메시지에는 ECC 디코더(322)가 오류를 수정할 수 없다는 정보, 또는 오류를 수정할 능력이 ECC 디코더(322)에 없다는 것을 암시할 수 있는 정보가 포함될 수 있다. 다른 실시예에서, ECC 디코더(322)는 피요청 패킷의 손상된 ECC 블록을 인터럽트 및/또는 메시지와 함께 전송한다.
일실시예에서, ECC 디코더(322)에 의해 해결할 수 없는, 피요청 패킷의 손상된 ECC 블록 또는 이 손상된 ECC 블록의 일부는 주제어기(224)에 의해 독출되고, 수정되고, ECC 디코더(322)로 보내져서 독출데이터 파이프라인(108)에 의해 추가 처리되도록 한다. 일실시예에서는, 피요청 패킷의 손상된 ECC 블록 또는 이 손상된 ECC 블록의 일부가 데이터를 요청한 장치(requesting device)로 전송된다. 요청 장치(155)는 ECC 블록을 수정하거나 백업 사본 또는 미러 카피(mirror copy)와 같은 다른 복사본을 이용하여 데이터를 대체할 수 있고, 그 다음에 피요청 데이터 패킷의 대체 데이터를 사용하거나 이를 독출데이터 파이프라인(108)으로 돌려 보낼 수 있다. 요청 장치(155)는 오류 발생한 피요청 패킷의 헤더 정보를 사용하여, 손상된 피요청 패킷을 대체하거나 패킷이 속해 있는 데이터 구조를 대체하는 데 필요한 데이터를 식별할 수 있다. 다른 실시예에서, 반도체 저장 제어부(104)는, 일종의 RAID를 사용하여 데이터를 저장하고, 손상된 데이터를 복구할 수 있다. 다른 실시예에서, ECC 디코더(322)는 인터럽트 및/또는 메시지를 보내고, 이를 수신하는 장치는 피요청 데이터 패킷과 관련된 독출 작용을 하지 않는다. 당업자는, 피요청 패킷의 하나 이상의 ECC 블록이 손상되었으며 ECC 디코더(322)로 이 오류를 수정할 수 없다는 ECC 디코더(322)의 판단 결과를 받아들이는 데 있어서의 다른 방식 및 작용에 대해서 알게 될 것이다.
독출데이터 파이프라인(108)에는 ECC 디코더(322)로부터 피요청 패킷의 ECC 블록을 직접 또는 간접적으로 수신하여 하나 이상의 패킷 헤더를 체크하고 제거하는 패킷해제기(324)가 포함되어 있다. 패킷해제기(324)는 헤더 내의 패킷 식별자, 데이터 길이, 데이터 위치 등을 체크하여 패킷 헤더를 검증할 수 있다. 일실시예에서, 헤더에는 독출데이터 파이프라인(108)으로 전달된 패킷이 피요청 패킷임을 검증하는 데 사용할 수 있는 해시(hash) 코드가 포함되어 있다. 패킷해제기(324)는 또한, 패킷화기(302)에 의해 추가된 피요청 패킷에서 헤더를 제거한다. 패킷해제기(324)는 특정 패킷들에 대해서는 작용하지 않고 아무런 변경없이 이들을 앞으로 넘기도록 설계할 수 있다. 한 가지 예로서, 인덱스 재구성을 위해 헤더 정보가 필요한 재구성 프로세스(rebuild process) 과정 동안에 요구되는 컨테이너 라벨(container label)을 예로 들 수 있다. 다른 예로서, 반도체 저장장치(102) 내에서 사용하도록 정해진 다양한 종류의 패킷을 전송하는 것을 들 수 있다. 다른 실시예에서, 패킷해제기(324)의 작용은 패킷의 유형에 의존할 수 있다.
독출데이터 파이프라인(108)에는 패킷해제기(324)로부터 데이터를 수신하고 원치 않는 데이터를 제거하는 정렬 모듈(326)이 포함되어 있다. 일실시예에서, 반도체 저장매체(110)로 전송된 독출 명령이 데이터 패킷을 검색한다. 데이터를 요청한 장치가 검색된 패킷 내의 모든 데이터를 필요로 하는 것은 아닌바, 이때 정렬 모듈(326)은 불필요한 데이터를 제거한다. 만일 검색된 페이지 내의 모든 데이터가 곧 요청받은 데이터(피요청 데이터)인 경우에는, 정렬 모듈(326)은 아무 데이터도 제거하지 않는다.
정렬 모듈(326)은, 데이터 세그먼트를 요청한 장치와 호환되는 형식으로 데이터 구조의 데이터 세그먼트를 재포맷한다. 이 동작은 데이터 세그먼트를 다음 단계로 전달하기 전에 이루어진다. 일반적으로 데이터가 독출데이터 파이프라인(108)에 의해 처리될 때에, 데이터 세그먼트 또는 패킷의 크기는 여러 단계로 변경된다. 정렬 모듈(326)은 수신 데이터를 이용하여 이 데이터를, 요청 장치(155)에 전송하기에 적합한 데이터 세그먼트로 포맷하고 이를 결합하여 응답신호를 구성한다. 예를 들어, 제1 데이터 패킷 중 일부의 데이터를 제2 데이터 패킷의 일부 데이터와 결합할 수 있다. 만일 데이터 세그먼트가 요청 장치(155)가 요청한 데이터보다 크면, 정렬 모듈(326)은 불필요한 데이터를 삭제한다.
일실시예에서, 독출데이터 파이프라인(108)에는 반도체 저장매체(110)에서 독출한 하나 이상의 피요청 패킷을 독출데이터 파이프라인(108)에 의해 처리하기 전에 버퍼링시키는 독출 동기화 버퍼(328)가 포함되어 있다. 독출 동기화 버퍼(328)는 반도체 저장장치 클럭 도메인과 로컬 버스 클럭 도메인 사이의 경계에 있으며, 클럭 도메인의 차이를 완충하기 위한 버퍼링 기능을 한다.
다른 실시예에서, 독출데이터 파이프라인(108)에는 정렬 모듈(326)로부터의 피요청 패킷을 수신하고, 요청 장치(155)로 전송하기 전에 이 패킷을 저장하는 출력 버퍼(330)가 포함되어 있다. 출력 버퍼(330)는 데이터 세그먼트를 독출데이터 파이프라인(108)의 단계들로부터 수신할 때 및 데이터 세그먼트를 반도체 저장 제어부(104)의 다른 부분으로 또는 요청 장치(155)로 전송할 때 사이의 차이를 완충하는 기능을 한다. 출력 버퍼(330)는 또한, 데이터 버스(204)의 동작 효율성을 향상시키기 위해, 데이터 버스(204)가 독출데이터 파이프라인(108)으로부터 데이터를, 독출데이터 파이프라인(108)에 의해 지속될 수 있는 것보다 더 큰 속도로 수신할 수 있도록 한다.
일실시예에서, 반도체 저장 제어부(104)에는 반도체 저장매체(110)에 대한 구성 파라미터(독출전압 임계값 등)를 설정하고 조정하는 구성 모듈(352)이 포함되어 있다. 다른 실시예에서, 구성 모듈(352)은 반도체 저장매체(110)에 통합할 수 있는데, 이로써 독출데이터 파이프라인(108) 및/또는 기입데이터 파이프라인(106)에 무관하게 독립적으로 작용한다. 특정 실시예(도 4와 도 5의 사전구성 모듈(424)에 관하여 상세하게 설명하였음)에서, 구성 모듈(352)은 반도체 저장매체(110)의 저장셀에 대한 하나 이상의 구성 파라미터를, 저장셀에 대한 저장매체 특징에 기반하여, 저장셀로부터의 피드백이 거의 없거나 전혀없는 개방 루프(open loop) 방식으로 사전에 결정한다. 도면에 나타낸 실시예에서, 구성 모듈(352)은 다양한 구성 파라미터를 사용하는 반도체 저장매체(110)의 저장셀을 구성하기 위하여 저장 제어 버스(212) 및 저장 버스 제어기(348)와 통신한다. 다른 실시예에서, 구성 모듈(352)은 반도체 저장 제어부(104) 및/또는 반도체 저장장치(102)에 대한 구성 파라미터 및/또는 설정을 관리한다.
다른 실시예에서 구성 모듈(352)은 저장셀로부터 피드백되는 독출 데이터 세트를 이용한 폐쇄 루프 방식으로 해당 저장셀에 대한 구성 파라미터를 결정하기 위해, 반도체 저장매체(110)로부터 데이터 세트를 직접 또는 간접적으로 받을 수 있다. 특정 실시예에서 구성 모듈(352)은 ECC 디코더(322)로부터 하나 이상의 편향된 피요청 패킷을 받을 수 있다. 다른 실시예에서, 구성 모듈(352)은 독출 동기화 버퍼(328)로부터, 저장 I/O 버스(210)로부터 직접, 역편향 모듈(332) 등으로부터 데이터 세트를 받을 수 있다. 구성 모듈(352)에 대해서는 도 4를 참조하여 더 자세히 설명하기로 한다. 구성 모듈(352)이 ECC 디코더(322) 및 역편향 모듈(332) 모두로부터 입력을 받는 다른 실시예에 대해서는 도 3b를 참조하여 아래에서 설명한다.
일반적으로 구성 모듈(352)은 반도체 저장매체(110)의 하나 이상의 저장셀에 대한 하나 이상의 구성 파라미터(즉, 독출전압 임계값, 저항률(resistivity) 임계값, 프로그래밍 임계값, 소거 임계값 등)를 설정 및 조정한다. 독출전압 임계값은 반도체 저장매체(110)의 저장셀에 저장된 이산 값(discrete value)을 구분하기 위한 전압 레벨이다. 서로 다른 반도체 저장장치 기술이, 이산 상태(discrete state) 간 구별을 위한 전압 이외의 다른 임계값을 사용할 수 있다. 위상 변경(phase change) RAM 또는 PRAM은, 예를 들어, 서로 다른 상태의 서로 다른 전기 저항률을 갖는 칼코게나이드(chalcogenide) 글라스에 데이터를 저장한다. PRAM의 경우, 구성 모듈(352)은 이산 저장 상태를 구분하는 저항률 임계값을 결정, 설정, 및/또는 조정할 수 있다. 당업자는 본 발명의 개시 내용에 따라, 구성 모듈(352)이 독출전압 임계값에 관해 설명한 것과 거의 유사한 방식으로 저항률 임계값 또는 그 밖의 구성 파라미터를 결정, 설정, 및 조정할 수 있음을 알게 될 것이다.
하나의 이진 값을 저장하는 SLC 저장셀의 경우, 독출전압 임계값은 이진수 1 상태 및 이진수 0 상태 사이의 경계값이다. 예를 들어, 일실시예에서, 독출전압 임계값보다 작은 독출전압 레벨을 갖는 저장셀은 이진수 0을 저장하는 반면, 독출전압 임계값보다 큰 독출전압 레벨을 갖는 저장셀은 이진수 1을 저장한다. MLC 저장셀과 같은 유형의 저장셀은 두 개 이상의 이산 상태를 구분하기 위해 다수의 독출전압 임계값을 가질 수 있다.
*예를 들어, 일실시예에서, 2 비트를 저장하는 MLC 저장셀은 이진수 값 11, 01, 00, 10을 구분하는 세 개의 독출전압 임계값을 가질 수 있다. 이들 세 독출전압 임계값의 예는 x [Volt], y [Volt], z [Volt]일 수 있다. 이에 대해서는 도 6c에서 독출전압 임계값(662)과 관련하여 자세하게 설명하였다. 저장셀에서 독출한 전압이 Vmin과 x [Volt] 사이의 전압이라고 하면, 이진수값 11의 상태가 표시된다. 특정 실시예에서는 Vmin이 음(마이너스) 전압일 수도 있다. 저장셀에서 독출한 전압이 x [Volt]와 y [Volt] 사이에 있다고 하면, 이진수 상태 01이 표시된다. 저장셀에서 독출한 전압이 y [Volt]와 z [Volt] 사이에 있다고 하면, 이진수 상태 00이 표시된다. 저장셀에서 독출한 전압이 z [Volt]와 Vmax [Volt] 사이에 있다고 하면, 이진수 상태 10이 표시된다.
Vmin, Vmax, x, y, z의 전압은 저장셀의 제조자에 따라 다를 수 있다. 독출전압은 예를 들어, -3.5 ~ 5.8 [Volt]의 전압 범위에 있을 수 있으며, 또는 소정의 다른 전압 범위 사이에 있을 수 있다. 마찬가지로, 독출전압 임계값에 대해 이진수 상태의 변화 순서 11, 01, 00, 10은 사용하는 인코딩 유형(가령, 그레이 코드 인코딩 형식, 이진 코드 인코딩 타입 등)에 따라 달라질 수 있다. 인코딩 유형의 일례를 도 6c를 참조해 아래에서 설명하였다. 도 6c에 자세히 설명한 것과 같이, 비록 단일의 MLC 저장셀이 다수의 비트를 저장하더라도, 단일 저장셀로부터의 비트들은 서로 인접한 주소에 있지 않을 수 있으며, 다른 물리적 페이지, 논리적 페이지 등에 포함될 수 있다.
특정 실시예에서는, 전압 임계값은, 이산값들 사이의 경계를 의미하는 것이 아니라 전압 레벨의 범위(최대 및 최소)로 이루어지는 것이다. 범위로 주어지는 전압 임계값은 이 범위의 어느 한쪽 끝 또는 양쪽 끝에서의 경계를 변화시킴에 의해 조절할 수 있다. 일실시예에서 반도체 저장매체(110)에 대한 독출전압 임계값이나 기타 구성 파라미터는, 기본 레벨으로 최초 설정된다(이 기본 레벨은 제조자가 정할 수 있다). 주로, 이러한 구성 파라미터의 기본 레벨은 반도체 저장매체(110)의 광범위한 일반 용도를 수용하도록, 즉, 범용으로 설정된다. 구성 모듈(352)의 실시예에 의해 반도체 저장매체(110)를, 보다 구체적인 사용 특징(use characteristic)에 따라 최적으로 사용하는 것이 가능해지는 이점이 있다. 특정 실시예에서, 구성 모듈(352)은 반도체 저장매체(110)의 저장매체 특징에 기초하여 하나 이상의 구성 파라미터를 서로 다른 레벨로 설정함으로써, 하나 이상의 구성 파라미터에 대한 기본 레벨을 무시한다. 구성 모듈(352)은 구성 파라미터를, 반도체 저장매체(110)에 발생할 수 있는 오류량을 기본 레벨에 비해 감소시키는 수준으로, 검출 및 수정할 수 있는 오류량을 기본 레벨에 비해 증가시키는 수준으로, 반도체 저장매체(110)의 초당 입출력 처리수(the number of input/output operations per second)("IOPS")를 기본 레벨에 비해 증가시키는 수준으로, 반도체 저장매체(110)의 사용 가능한 수명을 기본 수준보다도 연장시키는 수준으로, 그리고/또는 반도체 저장매체(110)의 유용성을 기본 레벨에 비해 향상시키는 수준으로 설정할 수 있다.
저장셀 및 기타 구성 파라미터의 독출전압 레벨은 또한, 반도체 저장매체(110)의 누설 및 다른 교란으로 인해, 시간이 지남에 따라 변할 수 있다. 누설 속도 또한 반도체 저장매체(110)의 열화 및 사용기간에 따라 증가될 수 있다. 저장셀의 독출전압 레벨이 독출전압 임계값을 지나서 바뀌는 경우에는, 저장셀에서 독출한 데이터 값이 저장셀에 기입된 데이터 값과 다르기 때문에, 데이터 오류가 발생한다. 일실시예에서 구성 모듈(352)은, 저장셀의 독출전압 레벨의 변화를 보상하기 위하여 반도체 저장매체(110)의 하나 이상의 저장셀에 대한 독출전압 임계값이나 기타 구성 파라미터를 조정한다. 사전에 그리고/또는 동적으로 독출전압 임계값을 조정함으로써, 구성 모듈(352)은 반도체 저장매체(110)에 저장된 데이터의 유지율 및/또는 신뢰성을 증가시키고 반도체 저장매체(110) 자체의 사용 수명을 연장시키며 반도체 저장매체(110)의 유용성을 개선시킨다.
일실시예에서, 구성 모듈(352)은 독출전압 임계값이나 기타 구성 파라미터를 조정하기 위하여 반도체 저장매체(110)로부터의 데이터 세트 또는 패킷의 기지의 편향(known bias)을 사용한다. 편향 모듈(318)에 관련하여 위에서 설명한 것과 같이, 편향은 특정 데이터 패턴을 나타내기 위하여 1군의 비트에 대한 값의 우선도, 확률, 경향, 또는 선호도이다. 편향은 본연의 특성, 설계된 속성, 저장매체에 대한 작용을 수행하는 특성 등이거나, 또는 무작위로 발생될 수 있다. 편향은 이진수 1 쪽으로, 이진수 0쪽으로, 이진수 1과 0의 차 쪽으로, 특정 비트에 있어서는 특정 이진 값 쪽으로, 이진수 1과 이진수 0의 특정 비율 쪽으로, 또는 이진 패턴 쪽으로 향하여 일어날 수 있다.
일실시예에서, 구성 모듈(352)이 받는 데이터 세트 또는 패킷은 기지의 편향(known bias)을 갖는다. 데이터 세트 또는 패킷은 적어도 세 가지 이유 중 하나에 의해 기지의 편향을 갖는다. 첫째, 데이터 세트 또는 패킷을 기입할 때 편향 모듈(318)이 데이터 세트 또는 패킷을 편향시켰다면, 데이터 세트 또는 패킷은 기지의 편향을 가질 수 있다. 일실시예에서, 편향 모듈(318) 및/또는 역편향 모듈(332)은 구성 모듈(352)과 협력하여, 이 기지의 편향을 구성 모듈(352)로 전달한다. 둘째, 데이터 세트 또는 패킷이 반도체 저장매체(110)의 처녀 영역, 즉, 기입되지 않은 영역에서 독출할 경우에 데이터 세트 또는 패킷은 기지의 편향을 가질 수 있다. 예를 들어, 일실시예에서, 반도체 저장매체(110)의 기입되지 않은 처녀 영역은 일반적으로, 기입되지 않은 상태의 배타적 이진수 1 또는 배타적 이진수 0의 기지의 편향을 가질 수 있다. 셋째, ECC 디코더(322)가 데이터 세트 또는 패킷을 수정하였고 오류 상태에 있던 데이터 세트의 하나 이상의 비트의 원래의 올바른 값을 판단했다면 데이터 세트 또는 패킷은 기지의 편향을 가질 수 있다. 데이터 세트의 비트에 대한 올바른 값은 이러한 기지의 편향을 포함한다. 데이터 세트에서의 오류로 인해, 기지의 편향에서 벗어나는 것을 오류 편향(error bias)이라고 한다.
일실시예에서, 구성 모듈(352)은, 데이터 세트 또는 패킷에 대한 독출 편향(read bias)이 기지의 편향으로부터 이탈(deviation)하는지를 판단하고, 그리고 독출 편향과 기지의 편향 사이의 차이를 근거로 하여 데이터 세트 별 이탈 방향을 판단한다. 다른 실시예에서, 구성 모듈(352)은 데이터 세트에 해당되는 저장셀의 독출전압 임계값 또는 다른 독출 임계값(저항률 임계값 등)을 이탈 방향을 기준으로 조정(adjust)한다. 예를 들어, 일실시예에서, 데이터 세트가 기지의 편향을 근거로 예상한 것보다 더 많은 이진수 0을 갖는다면, 구성 모듈(352)은 독출전압 임계값을, 이전의 독출전압 임계값으로부터 저장셀에 대한 새로운 독출전압 임계값으로 낮출 수 있다. 일실시예에서, MLC 저장셀에 있어서, 데이터 세트는 서로 다른 주소, 서로 다른 페이지 등에서 온 데이터를 포함할 수 있는데, 이로써 이 데이터 세트는 관련 저장셀에 저장된 모든 데이터를 포함하게 된다. 구성 모듈(352)은 저장셀의 물리적 및/또는 전기적 구조(아키텍처)를 기반으로 하는 저장셀의 기지의 특징, 예컨대, 저장셀에 사용된 인코딩 형식을 이용하여 독출전압 임계값을 조정할 수 있다. 다른 실시예에서, 구성 모듈(352)은 기지의 편향, 독출 편향, 및/또는 MLC 저장셀에 대한 기지의 편향으로부터의 이탈을 용이하게 판단하기 위해, 다른 주소 또는 페이지로부터 온 데이터를 변환(transform), 해독(translate), 또는 결합(combine)할 수 있다. 다른 실시예에서, MLC 저장셀에 있어서, 구성 모듈(352)은 MLC 저장셀에 의해 저장된 데이터의 하위군(subset)을 바탕으로 MLC 저장셀에 대한 독출전압 임계값을 조정할 수 있다.
일실시예에서 구성 모듈(352)은 데이터 세트를 새로운 독출전압 임계값으로 재독출할 것을 요청할 수 있다. 이 구성 모듈(352)은 재독출한 데이터 세트가 기지의 편향에서 벗어나는 독출 편향을 갖는지 여부를 판단할 수 있고, 데이터 세트의 독출 편향이 기지의 편향으로부터 임계값(0일 수도 있음)보다 더 크게 더 이상 벗어나지 않을 때까지, 또는 ECC 디코더(322)가 데이터 세트에서 오류를 수정할 수 있을 때까지 독출전압 임계값을 새로운 독출전압 임계값으로 반복적으로 조정할 수 있다. 일실시예에서, 구성 모듈(352)은 새로운 독출전압 임계값을 저장하여, 반도체 저장매체(110)에서 후속적으로 데이터를 읽는 동안에도 이 새로운 독출전압 임계값이 유지되도록 한다. 다른 실시예에서, 반도체 저장매체(110)는 이 새로운 독출전압 임계값을 후속 데이터를 읽는 동안에 저장한다.
일실시예에서, 구성 모듈(352)은 각 독출한 패킷의 독출 편향을 모니터링할 수 있고, 독출 요청에 응하여 패킷 또는 데이터 세트의 편향을 기지의 편향과 비교할 수 있다. 다른 실시예에서, 구성 모듈(352)은 각 독출한 패킷의 독출 편향을 모니터링할 수 있고, 데이터 오류(예를 들어, ECC 디코더(322)가 해결할 수 없는 수정불가 비트 오류 등)에 응하여 데이터 세트 또는 패킷의 편향을 기지의 편향과 비교할 수 있다. 다른 실시예에서, 구성 모듈(352)은 각 독출한 패킷의 독출 편향을 모니터링할 수 없고, 데이터 오류에 응하여서만 데이터 세트 또는 패킷의 편향을 기지의 편향과 비교할 수 있다. 특정 실시예에서, 도 4와 도 5의 사전구성 모듈(424)과 관련하여 아래에 설명한 바와 같이, 구성 모듈(352)은 독출한 데이터 세트나 패킷에 기초한 조절 대신에(또는 이와 더불어) 저장매체의 특징을 바탕으로 독출전압 임계값이나 기타 구성 파라미터를 사전에 설정 또는 조정한다.
일실시예에서, 반도체 저장 제어부(104)는, 반도체 저장매체(110) 내의 여러 채널, 저장요소, 다이(die), 칩, 물리적 소거 블록("PEB"), 저장셀군 등(이들 각각이 독립적으로 독출전압 임계값을 가질 수 있음)으로부터의 데이터 패킷에서 데이터를 읽을 수 있다. 채널, 저장요소, 다이, 칩, 및/또는 저장셀군의 제조자는 각 채널, 저장요소, 다이, 칩, 및/또는 저장셀군에 대한 독출전압 임계값을 반도체 저장 제어부(104)에 의해 독립적으로 조정할 수 있게끔 만들 수 있다. 다른 방식으로서, 또는 이와 더불어, 채널, 저장요소, 다이, 칩, 및/또는 저장셀군의 제조자는 채널 그룹, 저장요소 그룹, 다이 그룹, 칩 그룹, 및/또는 저장셀군의 그룹에 대한 독출전압 임계값을 반도체 저장장치 제어부(104)에 의해 별도의 그룹으로서 조정할 수 있게끔 만들 수 있다.
일실시예에서, ECC 인코더(304)는 각 채널, 저장요소, 다이, 칩, PEB, 또는 저장셀의 다른 그룹에 대한 ECC 검사비트를 생성한다. ECC 검사비트는 다수의 저장셀군에 걸쳐서 분산되지 않고, 데이터와 함께 특정 군에 저장된다. ECC 검사비트가 생성되어 각 저장셀군에 독립적으로 저장되는 경우에, 구성 모듈(352)은 데이터 오류에 대한 응답으로서 ECC 검사비트를 어떻게 저장셀군에 기입하는지를 위해 ECC 검사비트와 기지의 구조(아키텍쳐)를 사용하여 어느 저장셀군 내에서 데이터 오류가 일어났는지를 판정하여 해당 그룹의 독출전압 임계값을 조정할 수 있다. 만일 데이터 패킷에 대한 ECC 검사비트가 다수의 저장셀군에 걸쳐서 저장되는 경우라면, 구성 모듈(352)은 각 저장셀군으로부터 데이터 세트의 독출 편향을 개별적으로 검사하여 해당 독출전압 임계값의 하나 이상을 조정할 수 있다. 다수 채널을 갖는 저장요소의 어레이구조에 대해서 도 6A 및 6b를 참조하여 더 자세히 설명할 것이다.
일실시예에서, 독출데이터 파이프라인(108)은 역편향 모듈(332)을 포함하는데, 이 모듈은 하나 이상의 편향된 피요청 패킷을 ECC 디코더(322)로부터 직접 또는 간접적으로 수신하고, 하나 이상의 피요청 패킷을 패킷해제기(324)로 보내기 전에 편향 모듈(318)의 편향 프로세스를 반전시킴으로써 하나 이상의 피요청 패킷을 다시 원본 소스로 변환한다. 일실시예에서, 역편향 모듈(332)은 편향된 패킷을 다시 원본 소스 데이터로 변환하기 위하여 편향 모듈(318)에 의해 저장된 하나 이상의 표시자(indicator)를 사용할 수 있다. 특정 실시예에서, 역편향 모듈(332)은 패킷이나 다른 데이터 세트에 대한 기지의 편향, 독출 편향, 및/또는 기지의 편향으로부터의 이탈을 구성 모듈(352)로 제공할 수 있다. 이에 대해서는 차후 도 3b를 참조하여 설명한다.
다른 실시예에서, 역편향 모듈(332)은 표시자를 사용하지 않고, 편향된 패킷을 다시 원래의 소스 데이터로 변환한다. 표시자를 사용하는 대신에, 역편향 모듈(332)은 편향 모듈(318)을 역동작시키는 알고리즘을 채용할 수 있다. 이 알고리즘은 수신된 각 데이터 패킷에 대한 편향을 역전시킬 수 있고/있거나, 수신된 데이터 패킷의 번호를 선택할 수 있다. 도면에 나타낸 실시예에서, 역편향 모듈(332)은 ECC 디코더(322)와 패킷해제기(324) 사이에 위치하고 있다. 다른 실시예에서, 역편향 모듈(332)은 기입데이터 파이프라인(106)에 있는 편향 모듈(318)의 위치를 기반으로 하여, 독출데이터 파이프라인(108)에서 어디에든 위치할 수 있다.
다른 실시예에서, 독출데이터 파이프라인(108)에는 출력 버퍼(330)로 데이터 세그먼트를 보내기 전에 패킷해제기(324)에 의해 포맷된 데이터 세그먼트의 암호를 해독하는 암호해독 모듈(334)이 포함되어 있다. 데이터 세그먼트는, 독출 동기화 버퍼(328)로부터 받은 피요청 패킷의 검색을 시작하는 독출 요청과 함께 받은 암호화 키를 사용하여 해독할 수 있다. 암호해독 모듈(334)은 제1패킷에 대한 독출 요청과 함께 수신한 암호화 키를 이용하여 제1패킷을 해독할 수 있고, 다른 암호화 키를 이용하여 제2패킷을 해독하거나, 해독하지 않고 독출데이터 파이프라인(108)의 다음 단계로 제2패킷을 넘길 수 있다. 패킷이 비밀성없는 암호기술상의 랜덤값(nonce)을 사용하여 저장했었다면, 데이터 패킷을 해독하기 위한 암호화 키와 함께 이 랜덤값을 사용한다. 암호화 키는 클라이언트(114), 컴퓨터(112), 키 관리자 또는 반도체 저장 제어부(104)에서 사용되는 암호화 키를 관리하는 다른 장치에서 받을 수 있다.
다른 실시예에서, 독출데이터 파이프라인(108)에는 패킷해제기(324)에 의해 포맷된 데이터 세그먼트의 압축을 해제(decompress)하는 압축해제 모듈(336)이 포함되어 있다. 일실시예에서, 압축해제 모듈(336)은 압축 모듈(312)에 의해 데이터를 압축할 때 사용하는 것과 상보적 루틴을 선택하기 위하여 패킷 헤더 및 컨테이너 라벨 중 하나 또는 둘 다 모두에 저장된 압축 정보를 사용한다. 다른 실시예에서, 압축해제 모듈(336)에서 사용하는 압축 해제 루틴은 압축할 데이터 세그먼트를 요청한 장치가 결정한다. 다른 실시예에서, 압축해제 모듈(336)은 데이터 구조 유형 또는 데이터 구조 등급 기준으로 한 기본 설정에 따라 압축해제 루틴을 선택한다. 제1객체의 제1패킷은 기본 압축해제 루틴을 무시할 수 있고, 동일한 데이터 구조 등급 및 데이터 구조 유형의 제2 데이터 구조의 제2패킷은 기본 압축해제 루틴을 사용할 수 있고, 동일한 데이터 구조 등급 및 데이터 구조 유형의 제3 데이터 구조의 제3패킷은 압축해제를 사용하지 않을 수 있다.
다른 실시예에서, 독출데이터 파이프라인(108)에는 독출데이터 파이프라인(108) 내에서 하나 이상의 사용자 정의 기능을 포함하는 독출 프로그램 모듈(338)이 포함되어 있다. 독출 프로그램 모듈(338)은 기입 프로그램 모듈(310)와 유사한 특징을 가지고 있으며, 사용자가 독출데이터 파이프라인(108)에 맞춤 기능을 제공할 수 있다. 독출 프로그램 모듈(338)은 도 3a에서와 같이 위치할 수도 있고, 독출데이터 파이프라인(108) 내의 추가위치에 있을 수도 있고, 또는 독출데이터 파이프라인(108) 내의 여러 군데에 위치하는 여러 개의 부분을 포함할 수도 있다. 또한, 독립적으로 작용하는 독출데이터 파이프라인(108) 내의 여러 위치에서 여러 개의 프로그램 모듈(338)이 있을 수도 있다. 당업자는 독출데이터 파이프라인(108) 내에 다른 형태의 독출 프로그램 모듈(338)이 구성될 수 있음을 알게 될 것이다. 기입데이터 파이프라인(106)처럼, 독출데이터 파이프라인(108)을 구성하는 단계들을 재배치할 수 있으며 당업자는 이 독출데이터 파이프라인(108)의 구성들의 다른 순서가 가능함을 알게 될 것이다.
반도체 저장 제어부(104)는 제어 및 상태 레지스터(340) 및 이에 대응되는 제어 대기열(342)이 포함되어 있다. 제어 및 상태 레지스터(340) 및 제어 대기열(342)은 기입 및 독출데이터 파이프라인(106)(108)에서 처리되는 데이터와 관련된 제어 및 시퀀싱 명령어 및 하위 명령어의 사용을 용이하게 한다. 예를 들어, 패킷화기(302)에 있는 데이터 세그먼트는 ECC 인코더(304)와 관련된 제어 대기열(342)에 있는 하나 이상의 해당 제어 명령이나 지령을 가질 수 있다. 데이터 세그먼트가 패킷화(packetize)되면서 명령어 중 일부는 패킷화기(302) 내에서 실행될 수 있다. 그 밖의 명령어는, 데이터 세그먼트에서 생성된 새로 형성된 데이터 패킷이 다음 단계로 넘겨지는 것과 같이, 제어 및 상태 레지스터(340)를 통해서 다음 제어 대기열(342)로 넘겨진다.
명령어들은 기입데이터 파이프라인(106)으로 제공될 패킷을 위한 제어 대기열(342)에 동시에 입력되는데, 각각의 패킷이 파이프라인의 단계에서 실행되기 때문에 파이프라인의 각 단계가 적절한 명령어를 끌어당긴다. 마찬가지로, 명령어들은 독출데이터 파이프라인(108)으로부터 요청될 패킷을 위한 제어 대기열(342)에 동시에 입력되는데, 각각의 패킷이 파이프라인의 단계에서 실행되기 때문에 파이프라인의 각 단계가 적절한 명령어를 끌어당긴다. 당업자는 제어 및 상태 레지스터(340)와 제어 대기열(342)의 다른 특징과 기능을 알게 될 것이다.
반도체 저장장치 제어부(104) 및/또는 반도체 저장장치(102)는 또한, 뱅크 인터리브 제어기(344), 동기화 버퍼(346), 저장 버스 제어기(348), 그리고 멀티플렉서("MUX")(350)를 포함할 수 있다.
저장셀 구성하기(CONFIGURING STORAGE CELLS)
도 3b는 반도체 저장 제어부(104)의 다른 실시예(301)를 설명하는 블록도이다. 도면에 나타낸 실시예(301)에서 반도체 저장 제어부(104)에는 장치인자(device factor) 모듈(354), 역편향(inverse bias) 모듈(332), ECC 디코더(322), 그리고 구성(configuration) 모듈(352)이 포함되어 있다. 도 3b에 도시된 것은 아니지만, 도 3b에 나타낸 실시예의 반도체 저장 제어부(104)는 또한, 특정 실시예로서, 도 3a를 통해 위에서 설명한 반도체 저장 제어부(104)로부터의 하나 이상의 추가 모듈 또는 다른 요소들을 포함할 수 있다.
도면에 나타낸 실시예(301)에서, 구성 모듈(352)은 역편향 모듈(332), ECC 디코더(322), 및 장치인자 모듈(354)로부터 신호를 입력받고, 구성 모듈(352)은 이 입력으로부터 구성 파라미터 조정량(358)을 결정한다. 다른 실시예에서 구성 모듈(352)은 역편향 모듈(332)로부터만, 장치인자 모듈(354)로부터만, ECC 디코더(322)로부터만, 또는 역편향 모듈(332), ECC 디코더(322), 및/또는 장치인자 모듈(354)의 서로 다른 조합으로부터 입력 신호를 받을 수 있다.
일실시예에서 역편향 모듈(332)은 데이터 세트의 기지의 편향 및/또는 실제의 독출 편향을 구성 모듈(352)로 출력한다. 역편향 모듈(332)은, 편향 모듈(318)이 반도체 저장매체(110)에 기입된 데이터에 적용한 가역적 편향 알고리즘을 이용하여, 기지의 편향을 예상 편향(expected bias)으로서 출력할 수 있다. 특정 실시예에서 상기 예상 편향은 정확한 편향일 수 있는데, 이 때 편향 모듈(318)은 데이터를 편향시키는 가역적 편향 알고리즘(reversible bias algorhithm)을 사용하여 정확하게 편향에 매치시킨다. 예를 들어, 편향 모듈(318)은 데이터 세트에 패딩(padding) 데이터를 추가함으로써, 이 데이터 세트가, 예컨대, 이진수 1의 수 및 이진수 0의 수가 정확하게 균분되도록 할 수 있다. 이에 기지의 편향이 정확해질 수 있다.
다른 실시예에서, 역편향 모듈(332)은, 편향 모듈(318)이 데이터에 적용한 가역적 편향 알고리즘을 기반으로 한 범위, 분산, 평균, 추정 등으로서의 예상 편향을 출력할 수 있다. 예를 들어, 역편향 모듈(332)은, 역편향 모듈(332)이 반도체 저장매체(110)에서 독출한 데이터에 역편향 알고리즘을 적용할 때, 시간의 경과에 따라 예상 편향을 측정(measure) 또는 탐지(learn)할 수 있게 된다. 일실시예에서, 예상 편향은 수학적일 수도 있고, 또는 편향 모듈(318)의 가역적 편향 알고리즘으로부터 도출된, 가능한 혹은 있을 수 있는 편향의 범위 내지는 분산일 수 있다.
예를 들어, 바이어스 모듈(318)이 데이터를 1/2의 이진수 1과 1/2의 이진수 0이 서로 균분되는 방향으로 편향시키는 경우에(이를 직류("DC") 균형이라고 부름), 편향된 데이터에 대한 실제 편향의 범위는 대략 46%~54%의 이진수 1 등과 같이 될 수 있다. 또한 다른 실시예에서, 데이터 세트의 기지의 편향 및 독출 편향은 오직 개별적인 이진수 1과 이진수 0만을 기반으로 하는 대신에, 다중 비트(멀티비트) 부호나 패턴을 기반으로 할 수도 있다. 도면에 나타낸 실시예(301)에서 역편향 모듈(332)이 구성 모듈(352)에 입력을 제공하는 반면에, 특정 실시예에서 편향 모듈(318)은 구성 모듈(352)에 기지의 편향으로서 예상 편향을 제공할 수 있다. 여기서 기지의 편향은 하드코딩된 것(hard coded)이거나, 구성 모듈(352) 내에 프로그램된 것이거나, 기타의 것일 수 있다.
일실시예에서, 역편향 모듈(332)은 반도체 저장매체(110)에서 독출한 데이터 세트의 독출 편향을 구성 모듈(352)에 제공한다. 예를 들어, 역편향 모듈(332)이, 편향 모듈(318)의 편향 처리 과정을 역으로 처리함으로써, 편향된 데이터 패킷이나 기타 데이터 세트를 그 원본 소스 형태로 다시 변환할 때, 역편향 모듈(332)은 데이터 패킷 또는 다른 데이터 세트의 독출 편향을 결정, 측정, 또는 검출할 수 있다. 역편향 모듈(332)은 사용되는 편향 절차에 따라, 편향 처리 과정을 역처리하기 전에, 역처리하는 동안에, 또는 역처리한 이후에 독출 편향을 결정할 수 있다. 특정 실시예에서, 역편향 모듈(332)이, 데이터 세트의 독출 편향이 이 데이터 세트의 기지의 편향/예상 편향에서 벗어나는 것을 판정하는 경우에, 역편향 모듈(332)은 데이터 세트를 구성 모듈(352)로 보내어 데이터 세트의 저장셀에 대한 구성 파라미터 조정량(358)을 만들어 이 데이터 세트가 읽힐 수 있도록 해 줄 수 있다. 도 3a에서 설명한 것과 같이, 다른 실시예에서는, 구성 모듈(352)은, 역편향 모듈(332)이 데이터 세트를 수신하기 전에, 데이터 세트에 대한 독출전압 임계값을 조정할 수 있다. 당업자는 본 명세서를 통해, 구성 모듈(352), 역편향 모듈(332), 그리고 ECC 디코더(322)의 본 발명의 범위 내에 속하는 다른 구성에 대해서 알게 될 것이다.
일실시예에서 ECC 디코더(322)는 데이터 세트에 대한 기지의 편향 및/또는 독출 편향을 구성 모듈(352)에 제공한다. ECC 디코더(322)는 데이터 세트의 비트의 정확한 상태를 갖는 데이터 세트에 대한 기지의 편향을 출력할 수 있다. 예를 들어, 일단 ECC 디코더(322)가 데이터 세트에 있는 하나 이상의 수정가능한 비트 오류를 수정했으면, ECC 디코더(322)는 데이터 세트의 오류수정된 비트를, 반도체 저장매체(110)에 데이터 세트를 기입할 때 사용되었던 기지의 편향으로서, 구성 모듈(352)로 보낼 수 있다. 다른 실시예에서, ECC 디코더(322)는 데이터 세트를 반도체 저장매체(110)에서 읽을 때 오류가 있었던 데이터 세트의 하나 이상의 비트를 표시하는 오류 편향으로서 데이터 세트에 대한 독출 편향을 출력할 수 있다.
수정가능 오류에 대해서는 ECC 디코더(322)가 데이터 세트의 정확하고, 처음의, 올바른 비트값(기지의 편향) 및 데이터 세트의 오류 비트의 정확한 위치(오류 편향)를 결정하므로, 구성 모듈(352)은 기지의 편향으로부터 데이터 세트가 이탈하는 편차를 정확하게 찾을 수 있다. 이러한 이유로 특정 실시예에서는, 구성 모듈(352)을, 역편향 모듈(332)로부터의 예상 편향 및 독출 편향일 사용하는 대신에, 가능하면 ECC 디코더(322)로부터의 기지의 편향 및 오류 편향을 사용하도록 구성하여 보다 정확한 구성 파라미터 조정량(358)을 만들 수 있다.
일실시예에서, 구성 모듈(352)은 데이터 세트에 있는 하나 이상의 수정가능한 비트 오류에 대한 응답으로서, ECC 디코더(322)로부터의 데이터 세트에 대한 기지의 편향 및/또는 오류 편향을 사용한다. 다른 실시예에서, 구성 모듈(352)은 기지의 편향으로서, 가역적 편향 알고리즘을 기반으로 하는 예상 편향을 사용한다. 특정 실시예에서, 상기 예상 편향은 데이터 세트에 있는 하나 이상의 수정불가 비트 오류에 대해 응답하기 위하여 기지의 편향으로서 사용된다. 수정불가 비트 오류의 조건에 의해 편향이 정의되지 못하기 때문에, ECC 디코더(322)로부터의 오류 편향은 수정불가 비트 오류에 대해서는 구성 모듈(352)에 사용하지 못할 수도 있다. 특정 실시예에서, 데이터 세트에 있는 수정불가 비트 오류의 경우, 데이터 세트의 독출 편향은, 오류의 심각성 때문에 데이터 세트에 대한 기지의 예상 편향으로부터의 이탈이, 수정가능 비트 오류의 경우에서보다 더 많이 생길 수 있다. 수정불가 비트 오류에 있어서는 데이터 세트의 기지의 예상 편향로부터 데이터 세트의 독출 편향의 이탈 정도가 더 크기 때문에, 역편향 모듈(332)로부터 나오는 편향 정보는, 수정가능 비트 오류에 대해서보다 수정불가 비트 오류의 경우에 더 좋은 구성 파라미터 조정량(358)용 지표 표시자가 될 수 있다.
일실시예에서 장치인자 모듈(354)은 반도체 저장장치(102)에 대한 하나 이상의 통계자료를 구성 모듈(352)에 제공한다. 특정 실시예에서 구성 모듈(352)은 하나 이상의 통계자료에 근거하여 구성 파라미터 조정량(358)을 만들거나, 하나 이상의 통계자료를 이용하여 역편향 모듈(332) 및/또는 ECC 디코더(322)로부터의 정보를 보완하는 등의 작용을 할 수 있다. 일실시예에서 반도체 저장장치(102)에 대한 하나 이상의 통계자료는, 반도체 저장장치(102)의 저장셀의 독출전압에 영향을 미칠 수 있는 통계자료를 포함한다. 예를 들어, 특정 실시예에서, 하나 이상의 통계자료는 반도체 저장장치(102)의 온도, 반도체 저장장치(102)의 오류율(예컨대, 수정불가 비트 오류율 "UBER(uncorrectable bit error rate" 등), 반도체 저장장치(102)의 소거 사이클 수(erase cycle count), 반도체 저장장치(102)의 저장요청 지연시간(storage request latency)(예컨대, 저장요청을 실행하기 위한 평균, 최대, 또는 기타 지연시간), 반도체 저장장치(102)의 사용 기간(age), 및/또는 기타 통계자료 또는 특징을 포함할 수 있다.
도면에 나타낸 실시예(301)에서, 장치인자 모듈(354)은 하나 이상의 센서(356)로부터 입력을 받는다. 하나 이상의 센서(356)는 반도체 저장장치(102)에 대한 통계자료나 특성(예컨대, 온도, 수분, 운동, 및/또는 기타 통계자료)을 각각 검출한다. 예를 들어, 다양한 실시예에서, 하나 이상의 센서(356)는 온도 센서, 수분 센서, 가속도계, 및/또는 그 밖의 반도체 저장장치(102)용 센서 종류를 포함할 수 있다. 일실시예에서, 장치인자 모듈(354) 및/또는 구성 모듈(352)은 하나 이상의 다른 모듈 또는 구성요소로부터 반도체 저장장치(102)에 대한 하나 이상의 통계자료를 받을 수 있다. 예를 들어, 장치인자 모듈(354) 및/또는 구성 모듈(352)은 ECC 디코더(322)로부터, 반도체 저장장치(102)의 오류율(UBER 등)을 받을 수 있다.
다양한 실시예에서 구성 모듈(352)은 역편향 모듈(332), ECC 디코더(322), 및/또는 장치인자 모듈(354)로부터 받은 하나의 입력 또는 입력들의 조합을 바탕으로 구성 파라미터 조정량(358)을 만들 수 있다. 특정 실시예에서 역편향 모듈(332), ECC 디코더(322), 및/또는 장치인자 모듈(354)로부터의 하나 이상의 입력은 데이터 세트에 대해 사용하지 못할 수도 있다. 예를 들어, ECC 디코더(322)가 수정불가 비트 오류를 갖는 데이터 세트에 대한 오류 편향 및 기지의 편향을 출력하지 못할 수도 있다. 또는, 역편향 모듈(332)이 예상 편향을 결정하고 있는 탐지(learning) 기간 동안에 역편향 모듈(332)은 데이터 세트에 대한 기지의 예상 편향 또는 독출 편향을 출력하지 못할 수도 있다. 또는, 장치인자 모듈(354)이 초기 시작 기간 동안에는 하나 이상의 통계자료를 출력하지 못할 수도 있다.
일실시예에서, 구성 모듈(352)은 입력의 미리 정의된 계층조직(hierarchy)이나 순위(ranking)에 따라 가장 잘 사용될 수 있는 입력에 근거하여 구성 파라미터 조정량(358)을 만든다. 예를 들어, 구성 모듈(352)은 구성 파라미터 조정량(358)을 만들 때, 가능한 경우에는 ECC 디코더(322)로부터의 기지의 편향 및 오류 편향을 기준으로, ECC 디코더(322)로부터의 입력을 사용할 수 없는 경우에는 역편향 모듈(332)로부터의 기지의 예상 편향 및 독출 편향을 기준으로, ECC 디코더(322) 및 역편향 모듈(332) 둘 다로부터의 입력을 사용할 경우에는 장치인자 모듈(354)로부터의 하나 이상의 통계자료를 기준으로 사용한다.
다른 실시예에서, 만일 역편향 모듈(332), ECC 디코더(322), 장치인자 모듈(354)의 각각으로부터의 입력을 사용할 수 없다면, 구성 모듈(352)은 데이터 오류 등에 대한 응답으로서, 임의의(무작위의) 구성 파라미터 조정량(358)을 만들 수 있다. 예를 들어, 구성 모듈(352)은 일방향으로의 구성 파라미터 조정량(358)을 만들어, 데이터 세트를 다시 읽고 오류를 검사하여, 그래도 오류가 계속 남아있게 되면 다른 방향으로의 구성 파라미터 조정량(358)을 만들도록 해 볼 수 있다.
다른 실시예에서, 구성 모듈(352)은 역편향 모듈(332), ECC 디코더(322), 및/또는 장치인자 모듈(354)로부터의 입력을 조합함으로써 다중 입력을 기준으로 하여 구성 파라미터 조정량(358)을 만들 수 있다. 구성 모듈(352)은 이러한 입력의 조합을 촉진하기 위해 입력을 촉소하거나, 입력에 가중치를 주거나, 입력을 일반 단위로 변환하는 등의 조치를 취할 수 있다. 예를 들어, 일실시예에서, 구성 모듈(352)은 각 입력을 개별적인 예비 임계값 조정량들로 변환하고, 그 다음에 이 예비 임계값 조정량들을 합하여 구성 파라미터 조정량(358)을 만들 수 있다. 이 예에서 구성 모듈(352)은 해당 입력의 미리 정의된 계층조직이나 순위를 기반으로 각 예비 임계값 조정량에 가중치를 줄 수 있다. 예를 들어, ECC 디코더(322)로부터의 기지의 편향 및 오류 편향이 일방향으로의 구성 파라미터 조정량(358)이고 역편향 모듈(332)로부터의 기지의 예상 편향 및 독출 편향이 다른 방향으로의 구성 파라미터 조정량(332)를 나타낸다고 할 경우에, 미리 정의된 계층조직이나 순위에서 가중치 또는 우선 순위가 더 큰 입력이 구성 파라미터 조정량(358)의 방향을 주도하게 될 것이다.
도 4는 구성 모듈(352)의 일실시예를 설명하는 블록도이다. 도면에 나타낸 실시예에서, 구성 모듈(352)은 데이터 세트 독출(data set read) 모듈(402), 이탈(deviation) 모듈(404), 방향(direction) 모듈(406), 조정(adjustment) 모듈(408), 지속(persistence) 모듈(410), ECC 모듈(412), 분배(distribution) 모듈(414), 데이터 세트 소스(data set source) 모듈(422), 사전 구성(proactive configuration) 모듈(424), 및 기입전압(write voltage) 모듈(416)을 포함한다. 기입전압 모듈(416)은 구성 모듈(352)에 통합되거나 구성 모듈(352)과 별개로 구성될 수 있다. 도 3a 및 도 3b의 구성 모듈(352)과 관련하여 위에서 설명한 것처럼, 구성 모듈(352)이 독출전압 임계값 및/또는 그 밖의 반도체 저장매체(110)의 하나 이상의 저장셀에 대한 다른 구성 파라미터를 조정할 수 있도록, 구성 모듈(352)은 기입데이터 파이프라인(106)의 일부, 또는 독출데이터 파이프라인(108)의 일부, 또는 반도체 저장매체(110)의 일부일 수 있다. 구체적인 실시예를 구성 파라미터의 예로서 독출전압 임계값을 사용하여 설명하였지만, 구성 모듈(352)은 다른 구성 파라미터도 이와 유사하게 결정하고 조정할 수 있을 것이다.
일실시예에서, 구성 모듈(352)은 사전구성 모듈(424)를 사용하여 개방형 루프 모델(open loop model)을 써서 구성 파라미터를 사전에(proactively) 설정한다. 다른 실시예에서, 구성 모듈(352)은 데이터 세트 독출 모듈(402), 이탈 모듈(404), 방향 모듈(406), 및/또는 조정 모듈(408)을 사용하여 폐쇄형 루프 모델(closed loop model)을 써서 구성 파라미터를 반응적으로(reactively) 설정한다. 특정 실시예에서 구성 모듈(352)은 몇 가지의 구성 파라미터 조정 계층(layer) 또는 단계(phase)를 만들어서, 사전구성 모듈(424)를 사용하여 구성 파라미터를 사전에 결정하고 반도체 저장매체(110)로부터의 데이터 세트를 데이군 독출 모듈(402)로 읽어서 구성 파라미터를 반응적으로 조정할 수 있다.
일실시예에서, 데이터 세트 독출 모듈(402)은 반도체 저장매체(110)의 저장셀에서 데이터 세트를 독출한다. 데이터 세트 독출 모듈(402)은 반도체 저장매체(110)로부터 데이터 세트를 직접 또는 간접적으로 독출할 수 있다. 예를 들어, 일실시예에서, 데이터 세트 독출 모듈(402)은 독출데이터 파이프라인(108), 반도체 저장매체(110) 등에 있는 다른 모듈 또는 구성요소로부터 데이터 세트를 받을 수 있다.
일실시예에서, 데이터 세트 독출 모듈(402)은 테스트 동작에 대한 응답으로서 데이터 세트를 독출하며, 이 데이터 세트는 테스트 동작의 일부로서 독출한 샘플 데이터 세트일 수 있다. 다른 실시예에서, 데이터 세트 독출 모듈(402)은 클라이언트의 독출 요청에 응답하여 데이터 세트를 독출하며, 이 데이터 세트는 클라이언트가 요청한 데이터 세트일 수 있다. 일실시예에서 데이터 세트는 전체 패킷일 수도 있고, 패킷의 일부일 수도 있고, 그 밖의 경우일 수도 있다. 다른 실시예에서, 데이터 세트의 크기는 테스트 동작에 의해 설정될 수도 있고, 클라이언트로부터의 독출 요청에 의해 설정될 수도 있고, 그 밖의 경우에 의해 설정될 수도 있다. 다른 실시예에서, 데이터 세트는 패킷이나 기타 데이터 구조와 무관한, 반도체 저장매체(110)로부터의 원시 데이터일 수 있다.
다른 실시예에서 데이터 세트는 처음에, 기지의 편향과 함께 저장셀에 저장되었던 것이다. 예를 들어, 이 데이터 세트는, 편향 모듈(318)이 편향시켰던 패킷으로부터 올 수도 있고, 예컨대 반도체 저장매체(110)의 제조자 등에 의해서 기본 데이터 또는 반도체 저장매체(110)에 프로그램된 다른 데이터가 기지의 편향과 함께 저장되어 있는, 처녀 상태의 반도체 저장매체(110)의 저장셀로부터 올 수도 있다.
일실시예에서, 데이터 세트는 편향 모듈(318)이 패킷을 편향시키기 위해 사용하는 편향 방식에 따라 그 크기가 정해질 수 있다. 예를 들어, 일실시예에서, 데이터 세트는 편향 모듈(318)이 패킷을 편향시키기 위해 사용하는 의사난수(pseudorandom) 이진 시퀀스와 같은 결정론적 시퀀스(deterministic sequence)를 근거로 그 크기를 정할 수 있다. 데이터 세트의 크기가 의사난수 이진 시퀀스 시간의 정수배에 가까우면 가까울수록, 결과로서 나오는 데이터 세트의 편향이 기지의 편향과 매치될 확률이 높아진다. 다른 실시예에서, 편향 모듈(318)은, 미리 정의된 크기의 데이터 세트의 편향이 기지의 편향으로부터, 임계값 크기보다 더 많게는 이탈하지 않는다는 것을 보증할 수 있다. 임계값 크기는 0에서부터 소정의 정수 값 또는 퍼센트 값에 이를 정도로 다양할 수 있다.
위에서 설명한 바와 같이, 편향(bias)은 특정 데이터 패턴을 표현하기 위하여 비트군 내의 비트들에 대한 값의 우선도(preferene), 확률, 또는 경향을 의미한다. 일실시예에서, 상기 기지의 편향(known bias)은 1군의 비트 또는 비트군 그룹 내에 있는 이진수 1의 개수와 이진수 0의 개수의 기지의 비율을 의미한다. 일실시예에서 기지의 비율은 0과 1 사이의 비율 또는 백분율로, 한 값만의 편향을 나타내는 0의 비율로, 다른 값만의 편향을 나타내는 1의 비율로서 표시할 수 있다. 일실시예에서, 기지의 비율은 0보다는 크고 1보다는 작은데, 이것의 의미는, 하나의 이진값만의 비율과 다른 이진값만의 비율 사이에서 기지의 비율이 옵셋된다는 뜻이다. 기지의 비율이 0보다 크고 1보다 작으면, 데이터 세트의 독출 편향에서의 이탈이 기지의 비율로부터 어느 한 쪽 방향으로 일어나게 될 수 있으며, 구성 모듈(352)은 여전히 이를 검출할 수 있게 된다.
도면에 나타낸 실시예에서, 데이터 세트 독출 모듈(402)은 감시 모듈(418) 및 독출 오류 모듈(420)을 포함한다. 일실시예에서, 데이터 세트 독출 모듈(402)은 감시 모듈(418) 및/또는 독출 오류 모듈(420)를 사용하여 데이터 세트를 읽을 수 있다.
일실시예에서, 감시 모듈(418)은 컴퓨터(112) 또는 기타 클라이언트(114)로부터의 독출 요청에 대응하여 반도체 저장매체(110)에서 독출한 데이터 세트를 모니터링한다. 감시 모듈(418)은 반도체 저장매체(110)로부터 독출되는 각 데이터 세트를 모니터링하거나, 저장장치 클라이언트 등으로부터의 명령 또는 지령에 응하여 미리 정의된 간격으로, 반도체 저장매체(110)로부터 독출되는 특정 데이터 세트를 선택할 수 있다. 반도체 저장매체(110)에서 독출되는 데이터 세트를 모니터링하기 위하여 감시 모듈(418)를 사용함으로써, 구성 모듈(352)은 동적으로 반도체 저장매체(110)에 대한 독출전압 임계값을 조정할 수 있어서, 수정불가 데이터 오류의 발생을 방지할 수 있다.
* 일실시예에서, 독출 오류 모듈(420)은 데이터 세트에서 확인된 데이터 오류에 응하여 데이터 세트를 읽는다. 예를 들어, ECC 디코더(322) 또는 다른 모듈은 데이터 오류가 발생했음을 확인할 수 있다. 일실시예에서, 데이터 오류는, ECC 디코더(322)가 수정하기 위한 충분한 정보를 가지고 있지 않는 수정불가 비트 오류이다. 구체적으로, 일실시예에서, ECC 디코더(322)는, 데이터 세트에서 오류가 발생한 특정 비트의 개수(#BER: # of bits in error)를 검출하여 이 개수까지 수정하도록 구성된다. 오류 비트의 개수가 #BER을 초과하면, ECC 디코더(322)는 수정불가 데이터 오류, 수정불가 비트 오류 등의 신호를 출력할 수 있다.
데이터 오류는 반도체 저장매체(110)의 하나 이상의 저장셀에 유지되는 전압 레벨의 변화로 인해 발생할 수 있다. 이 저장셀의 유지 전압 레벨을 독출전압 레벨이라 부른다. 일실시예에서, 독출 오류 모듈(420)은 테스트 동작의 일부로서 데이터 세트를 독출한다. 구성 모듈(352)은 데이터 오류에 대한 응답으로 또는 초기 교정 동작 등에 대한 응답으로 테스트 동작을 수행할 수 있다. 독출 오류 모듈(420)에 의해 사용되는 데이터 세트는 클라이언트가 요청한 패킷으로부터 오거나, 테스트 동작의 일부인 샘플 독출 데이터일 수 있다.
특정 실시예에서, 데이터 세트 독출 모듈(402)은, 테스트 동작에 대한 응답으로서 샘플 데이터의 데이터 세트를 읽을 때, 또는 주기적으로, 또는 모니터링 시에, 샘플 데이터 세트의 크기를 반도체 저장매체(110)의 초과 독출 대역폭(excess read bandwidth) 내로 맞출 수 있다. 일실시예에서, 샘플 데이터의 크기를 반도체 저장매체(110)의 초과 독출 대역폭 내로 맞춤으로써, 샘플 데이터를 독출하는 것에 의해서는 반도체 저장매체(110)로의 독출 요청을 처리하기 위한 독출 대역폭 또는 반도체 저장매체(110)의 독출 처리량이 영향을 받지 않게 된다. 일실시예에서, 데이터 세트 독출 모듈(402)은, 독출전압 임계값 등의 조정을 결정하는 데 사용하는 구성 모듈(352)에 보다 더 큰 비트 샘플 크기를 제공하기 위하여 독출 요청에 의해 요청되는 것보다 더 많은 데이터량을 갖는 반도체 저장매체(110)에서 데이터 세트를 읽을 수 있다. 특정 실시예에서, 피요청 데이터의 양보다 큰 샘플 크기가 독출전압 임계값 조정의 정확성을 향상시킬 수 있다.
예를 들어, 일실시예에서, 사용자 응용 프로그램이 512 바이트의 데이터 바이트를 요청하고 반도체 저장매체(110)가 512 바이트의 데이터와 거의 같은 속도에서 독출 요청에 의해서 800 바이트 데이터를 읽을 수 있다면, 데이터 세트 독출 모듈(402)은 독출전압 임계값 조정을 위해 800 바이트의 데이터 세트를 읽을 수 있고, 요청받은 512 바이트(800 바이트 데이터 세트의 하위군)를 독출 작용 실행 시간에 영향을 미치지 않고 사용자 응용 프로그램에 제공할 수 있다. 일실시예에서, 데이터 세트 독출 모듈(402)은 최소 데이터 세트 요청 크기를 설정하고, 적어도 각 독출 요청에 대한 최소 데이터 세트 요청 크기의 데이터량를 검색한다. 이는 독출 요청이 최소 데이터 세트 요청 크기보다 작은 경우라 하더라도 수행된다. 특정 실시예에서 최소 데이터 세트 요청 크기는, 반도체 저장매체(110)의 초과 대역폭 내의 하나 이상의 ECC 청크, 하나 이상의 페이지 등의 경계 내로 맞춰지도록 선택할 수 있다. 일실시예에서, 최소 데이터 세트 요청 크기는, 반도체 저장매체(110) 또는 독출데이터 파이프(108) 등의 구조 또는 형태를 근거로 선택할 수 있다.
일실시예에서, 이탈 모듈(404)은 데이터 세트의 최초 저장시에 함께 저장되었던 기지의 편향으로부터 이탈하는 데이터 세트에 대한 독출 편향을 결정한다. 데이터 세트의 독출 편향은 독출 편향과 기지의 편향 사이에 차이가 있을 때에 기지의 편향으로부터 이탈된다. 일실시예에서, 기지의 편향이 정확한 경우, 즉, 기지의 편향이 오류 수정된 비트 값을 포함하는 경우 또는 편향 모듈(318)이 정확한 편향쪽으로 편향 작용을 수행하는 경우에, 이탈 모듈(404)은 독출 편향과 기지의 편향 사이의 어떠한 차이점에도 기지의 편향으로부터 이탈이 일어난다는 것을 판단할 수 있다. 다른 실시예에서 기지의 편향은 평균 편향, 추정 편향, 편향의 분포, 편향의 범위 등을 포함할 수 있다. 이들 실시예에 있어서 이탈 모듈(404)은 기지의 편향의 범위나 분포 밖의 독출 편향, 또는 기지의 편향으로부터 미리 설정된 최소한의 이탈 임계값 등이 기지의 편향으로부터 이탈됨을 결정할 수 있다.
일실시예에서, 기지의 편향 및 데이터 세트의 독출 편향 사이의 차이는 이진수 1의 수와 이진수 0의 수의 비율의 차이일 수 있다. 다른 실시예에서는, 기지의 편향 및 데이터 세트의 편향 사이의 차이는 이진수 형태의 차이, 또는 멀티비트 이진수 부호 등의 차이일 수 있다. 다양한 실시예에서, 도 3b에 관한 위의 설명과 같이, 이탈 모듈(404)은 ECC 디코더(322), 역편향 모듈(332) 등으로부터의 데이터 세트에 대한 독출 편향 및/또는 원래의 기지의 편향을 수신할 수 있다.
일실시예에서 이탈 모듈(404)은 데이터 세트에 있는 이진수 1의 개수와 이진수 0의 개수를 계수하여 데이터 세트에 있는 이진수 1과 이진수 0의 비율을 산정하고 이 비율을 기지의 편향의 비율과 비교함으로써, 독출 편향을 기지의 편향과 비교할 수 있다. 다른 실시예에서 이탈 모듈(404)은 기지의 편향의 예상 패턴이나 그 밖의 예상 속성의 발생을 탐색 및/또는 계수하고, 데이터 세트에서 이와 유사하게 탐색 및/또는 계산한 결과를 상기 예상 속성과 비교한다. 특정 실시예에서 ECC 디코더(322)는 구성 모듈(352) 등에 데이터 세트에 대한 오류 편향을 제공함으로써, 기지의 편향으로부터 데이터 세트의 독출 편향이 이탈한다는 사실을, 이탈 모듈(404)에 알려 준다.
기지의 편향에 비트의 패턴, 멀티비트 이진수 부호 등이 포함되는 실시예에서, 이탈 모듈(404)은 기지의 편향으로부터 데이터 세트의 독출 편향이 이탈하는지 여부를 판단하기 위해, 데이터 세트의 비트에 대한 변환을 수행하거나 데이터 세트의 비트의 하위군을 분석할 수 있다. 예를 들어, 이탈 모듈(404)은 그레이 코드 인코딩 형식, 이진수 코드 인코딩 형식 등, 반도체 저장매체(110)의 저장셀에 사용된 인코딩 형식에 기초하여 변환을 수행할 수 있다. 특정 실시예에서 이 변환은 반도체 저장매체(110)의 저장셀의 물리적 및/또는 전기적 구조를 기반으로 수행할 수 있다.
예를 들어, 도 6c와 관련하여 아래에서 설명하겠지만, 다층 저장셀은 적어도, 최대 유효 비트("MSB")와 최소 유효 비트("LSB")를 저장한다. 특정 실시예에서 MSB와 LSB는 비록 동일한 물리적 다층 저장셀의 일부이지만, 반도체 저장매체(110)의 다른 페이지(110)에 할당될 수 있다. 특정 실시예에서는 다수의 다층 저장셀이 물리적 페이지로서 반도체 저장매체(110)(예컨대, NAND 플래시 등)에 포함된다. 특정 반도체 저장매체(110)에서, 물리적 페이지는, 반도체 저장매체(110)에 기입할 수 있는 가장 작은 단위이다. 이러한 실시예에서는 다층 저장셀이 페이지 쌍(page pair)에 연계될 수 있다. 페이지 쌍이란 1군의 물리적 다층 저장셀과 연계된 한 쌍의 페이지(상위 및 하위 페이지)를 의미한다. 예를 들어, 다층 저장셀은 상위 페이지 및 하위 페이지를 포함하는 페이지 쌍과 연계될 수 있다. 상부 페이지는 MSB와 연계될 수 있고, 하위 페이지는 LSB에 연결될 수 있다(이와 반대도 가능하다).
따라서, 동일한 다층 저장셀 내의 MSB와 LSB는 저장장치(102)에 있는 서로 다른 주소를 가질 수 있다. 특정 실시예에서 상위 페이지는 다수의 다층 저장셀의 MSB을 포함하고, 하위 페이지는 동일한 다층 저장셀들의 LSB를 포함한다. 따라서 하위 페이지에의 기입은 연계된 다층 저장셀의 LSB의 변화만을 일으키고, 상위 페이지에의 기입은 연계된 다층 저장셀의 LSB의 변화만을 일으킨다.
특정 실시예에서, 도 6c에 관하여 아래에서 더 자세히 설명하겠지만, 데이터 세트 독출 모듈(402)은 다층 저장셀군에 의해 저장된 비트의 하위군만을 포함하는 데이터 세트를 독출할 수 있고, 이탈 모듈(404)은 비트의 하위군을 기반으로, 기지의 편향으로부터 데이터 세트의 독출 편향이 이탈하는지 여부를 판단할 수 있다. 예를 들어, 데이터 세트는 LSB로부터의 데이터값(하위 페이지)만을 또는 MSB로부터의 데이터값(상위 페이지)만을 포함할 수 있다. 다른 실시예에서, 이탈 모듈(404)은 반도체 저장매체(110)의 저장셀에 사용된 인코딩 형식, 또는 저장매체(110)의 저장셀의 물리적 및/또는 전기적 구조에 적어도 부분적으로 기반하여, 기지의 편향으로부터 데이터 세트의 독출 편향이 이탈하는지 여부를 결정할 수 있다. 다른 실시예에서 이탈 모듈(404)은 LSB와 MSB 비트 및/또는 다른 데이터 세트으로부터의 페이지를 조율하기 위하여 또는 하나의 데이터 세트에 LSB와 MSB 비트를 모두 포함시키기 위하여, 서로 다른 페이지로부터의 데이터를 결합할 수 있는 데이터 세트에서의 변환을 수행할 수 있다.
*일실시예에서, 이탈 모듈(404)은 데이터 세트 독출 모듈(402)이 독출하는 각 데이터 세트의 독출 편향을 검사한다. 예를 들어, 데이터 세트 독출 모듈(402)에서 감시 모듈(418)을 사용할 경우에, 이탈 모듈(404)은 반도체 저장매체(110)에서 데이터 세트의 독출 편향을 읽을 때에 정기적으로 데이터의 독출 편향을 감시할 수 있다. 일실시예에서, 감시 모듈(418)은 클라이언트가 요청한 각 데이터 세트의 독출 편향을 비교할 수 있다. 다른 실시예에서, 감시 모듈(418)은, 가령, 정기적으로 및/또는 명령에 의해서 피요청 데이터 세트의 독출 편향을 검사할 수 있다. 다른 실시예에서, 데이터 세트 독출 모듈(402)이 독출 오류 모듈(420)을 사용하는 경우에는, 이탈 모듈(404)은 테스트 동작의 일부로서, 또는 데이터 오류에 대한 응답으로서 데이터 세트의 독출 편향을 검사할 수 있다.
일실시예에서, 방향 모듈(406)은 데이터 세트에 대한 이탈의 방향을 판단한다. 일실시예에서 이탈의 방향은 기지의 편향과 데이터 세트의 독출 편향 사이의 차이이다. 이 방향 또는 차이는, 값, 부호(즉, 양수 또는 음수), 관계(즉, ~보다 큼, ~보다 작음), 방향(즉, 위, 아래) 등으로 표현할 수 있다. 특정 실시예에서 방향 모듈(406)은 반도체 저장매체(110)의 저장셀에 사용된 인코딩 형식에 근거하여 또는 저장매체(110)의 저장셀의 물리적 및/또는 전기적 구조에 근거하여 이탈의 방향을 판단할 수 있다. 예를 들어, 방향 모듈(406)은, 다단계(multi-phase) 프로그래밍 모델의 페이지를 독출한 저장매체의 유형(2비트 MLC, 3비트 MLC, n비트 MLC)을 기반으로, 반도체 저장매체(110)에 대한 인코딩 형식(예컨대, 그레이코드 인코딩 형식, 이진 코드 인코딩 형식 등)을 기반으로, 그리고/또는 판단된 이탈의 크기를 기반으로 하여 이탈의 방향을 결정하기 위하여 데이터 세트에서의 편향 이탈을 조사할 수 있다.
일실시예에서 방향 모듈(406)은 데이터 세트의 독출 편향의 표현으로부터 기지의 편향의 비율, 비례, 기타 표현을 뺌으로써 방향을 결정할 수 있다. 예를 들어, 일실시예에서, 방향 모듈(406)은 데이터 세트에 있는 이진수 1, 0, 다중비트 이진 부호 등의 비율로부터 기지의 편향에 근거하여 예상되는 이진수 1, 0, 다중비트 이진 부호 등의 비율을 뺄 수 있다. 이진수 1의 비율이 비교되는지 이진수 0의 비율이 비교되는지 여부, 그리고 높은 전압이 이진수 1을 나타내는지 또는 이진수 0을 나타내는지, 또는 저장셀의 다른 구체적인 구조를 나타내는지 여부에 따라, 방향 모듈(406)은 차이값을 반전(invert)시키거나 다른 변환을 수행하여 방향을 결정한다.
ECC 디코더(322)로부터의 오류 편향을 사용할 수 있는 실시예에서 방향 모듈(406)은 오류 편향에 의해 표시되는 오류있는 데이터 세트의 하나 이상의 비트를 기반으로 이탈의 방향을 결정할 수 있다. 다른 실시예에서, 도 3b에 관한 위의 설명과 같이, 방향 모듈(406)은 역편향 모듈(332), ECC 디코더(322), 및/또는 장치인자 모듈(354) 로부터의 입력을 기반으로 방향을 결합하여 이탈의 방향을 결정할 수 있다.
일실시예에서 이진수 0은 독출전압 임계값 아래의 전압을 나타내며, 이진수 1은 독출전압 임계값 위의 전압을 나타낸다. 한 예로서 데이터 세트는 0.5의 기지의 편향값으로 저장되는데, 이것이 나타내는 것은 데이터 세트의 예상 편향이 이진수 1의 1/2이어야 한다는 것, 즉, DC 균형(DC balance)되었다는 것이다. 이 예에서 데이터 세트는 저장셀에서 독출하며, 데이터 세트는 0.7의 독출 편향을 가지고 있다(이 의미는 데이터 비트의 70%가 이진수 1이라는 것임). 방향을 결정하기 위해, 일실시예 따른 방향 모듈(406)은 데이터 세트의 독출 편향 0.7로부터 예상 편향 0.5를 빼서 방향 0.2를 얻는다. 방향은 전체적 결과(즉, "0.2"), 또는 결과의 부호(즉, "양수"), 또는 관계(즉, "~보다 큼"), 또는 방향(즉, "위"), 또는 0.5의 예상 편향과 0.7의 독출 편향 간의 차를 나타내는 다른 지표일 수 있다.
또 다른 예에서, 데이터 세트의 독출 편향이 0.3인 경우, 즉, 데이터 비트의 30%가 이진수 1인 경우, 일실시예에 따른 방향 모듈(406)은 0.3의 데이터 세트의 독출 편향에서 예상 편향 0.5를 뺄 것이고, 이로써 -0.2의 차를 얻게 된다. 이 예에서는 방향이 위의 첫번째 예의 경우보다 반대로 된다. 즉, "-2", "음수", "~보다 작다", "아래"와 같이 나타낼 수 있다.
예상 편향을 알고 있기 때문에, 독출 편향을 기지의 편향과 비교함으로써 알 수 있는 것은 기지의 편향을 만족해야 했던 특정 비트가 현재는 만족하지 않다는 것이다. 그 이유는, 데이터 오류로 인해서일 수도 있고, 또는 저장장치에 기입된 후에 저장셀에 저장된 전압 레벨의 변화로 인해서일 수도 있다. 또한 그 차가 양수인지 음수인지 결정함으로써 알 수 있는 것은 독출전압이 커져야 하는지 낮아져야 하는지인데, 이로써 데이터 세트의 재독출에 의해서 기지의 편향과 같거나 보다 근접한 독출 편향을 얻게 된다. 일실시예에서 구성 모듈(352)은 방향 모듈(406)이 표시하는 방향과 동일한 방향으로 독출전압의 레벨을 조정한다.
독출전압 임계값을 조정할 방향을 나타냄(indicate)으로써, 새로 조정된 독출전압 레벨을 확인하는 데 필요한 시간과 자원이 상당히 감소하는 이점이 생긴다. 독출전압 임계값을 정할 방향을 모를 경우에는, 다른 가능한 독출전압 임계값을 설정하고 테스트하고 나서, 필요에 따라 조정해야 하기 때문에, 새로운 독출전압 임계값을 확인하는 것은 시행착오의 수고와 시간이 많이 드는 과정이 필요해질 수 있다. 새로운 독출전압 임계값을 찾기 위한 처리과정이 필요할 수도 있는데, 이 처리과정에서는 기지의 편향과 사실상 일치하는 데이터 패킷을 재독출해야 한다.
일실시예에서, 조정(adjustment) 모듈(408)은 방향 모듈(406)이 결정하는 이탈의 방향에 근거하여 반도체 저장매체(110)의 저장셀에 대한 독출전압 임계값을 조정한다. 일실시예에서 조정 모듈(408)은 독출전압 임계값을 이탈 방향으로 또는 이탈 방향에서 먼 쪽으로 또는 그 이외로 조정할 수 있다. 예를 들어, 일실시예에서, 조정 모듈(408)은, 방향 모듈(406)이 기지의 편향에서 예상되는 것보다 더 많은 이진수 1들을 검출할 경우에는 이전의 독출전압 임계값을 상승시킬 수 있고, 예상보다 더 적은 이진수 1들을 검출할 경우에는 독출전압 임계값을 낮출 수 있다. 상대적 방향은 반도체 저장매체(110)의 저장셀 및 채용된 저장 방식의 특성에 근거하여 변경할 수 있지만, 조정 모듈(408)은 방향 모듈(406)이 판정한 차이를 수정하거나 보상하기 위해 독출전압 임계값을 조정한다.
다른 실시예에서, 조정 모듈(408)은 방향의 진폭 또는 방향 모듈(406)에 의해 결정된 차의 진폭을 근거로 하여 독출전압 임계값을 조정하기 위한 양을 결정한다. 다른 실시예에서, 조정 모듈(408)은 방향 모듈(406)로부터의 진폭을 축소하거나 조정할 수 있고, 조정된 양만큼 독출전압 임계값을 조정할 수 있다. 예를 들어, 일실시예에서 조정 모듈(408)은 방향의 진폭을 근거로 하여, 1회 조정 시에 여러 조정 레벨을 이용해 독출전압 임계값을 조정할 수 있다. 다른 실시예에서, 조정 모듈(408)은 반도체 저장매체(110)의 사용 기간, 열화 정도, 사용 이력, 오류 이력, 또는 기타 측면 등의 추가 요인을 기반으로 하여 독출전압 임계값을 조정하기 위한 양을 선택할 수 있다. 특정 실시예에서 도 3b에 관한 위의 설명과 같이, 조정 모듈(408)은 구성 모듈(352)이 장치인자 모듈(354)로부터 받은 반도체 저장장치(102)에 대해 하나 이상의 통계자료에 근거하여, 독출전압 임계값 조정을 할 수 있다.
다른 실시예에서, 조정 모듈(408)은 이탈의 방향에 근거하여 독출전압 임계값을 결정하기 위한 탐색 알고리즘을 사용한다. 예를 들어, 현재의 독출전압 임계값으로부터의 이탈 방향으로의 전압 범위가 이 탐색 알고리즘의 탐색 공간이 된다. 일실시예에서 조정 모듈(408)은 독출전압 임계값을 결정하기 위하여 선형 탐색 또는 이진 탐색 등을 사용할 수 있다. 탐색 알고리즘의 일부인 각 단계를 확인하기 위하여, 데이터 세트 독출 모듈(402)은 각 조정에 대한 응답으로서 데이터 세트를 재독출할 수 있다. 그리고 이탈 모듈(404)은 재독출한 데이터 세트의 독출 편향이 기지의 편향으로부터 이탈하는지 여부를 재결정할 수 있다. 방향 모듈(406)은 탐색을 더 진행하기 위해 재독출한 데이터에 대한 이탈의 방향을 재결정할 수 있다. 조정 모듈(408)은, 이탈 모듈(404)이 재독출한 데이터 세트의 독출 편향이 기지의 편향을 이탈하지 않는다고 판단할 때까지 또는 독출전압 임계값 레벨이 테스트된 때까지, 및/또는 데이터 세트가 ECC 검사비트를 사용하여 수정될 수 있을 때까지, 재결정된 이탈 방향에 근거하여 독출전압 임계값을 반복적으로 재조정할 수 있다.
일실시예에서, 일단 재시도 임계값이 만족되면, 조정 모듈(408)은 독출전압 임계값의 재조정을 중지한다. 예를 들어, ECC 디코더(322)가 데이터 오류를 수정할 수 없을 경우 및/또는 데이터 세트에 대한 독출 편향이, 이 데이터 세트에 대한 재시도 임계값이 만족되어는데도 계속해서 기지의 편향에서 벗어나는 경우, 조정 모듈(408)은 독출전압 임계값의 조정을 중지할 수 있다. 재시도 임계값은, 가능한 독출전압 임계값 레벨 등을 근거로 선택할 수 있다. 일실시예에서, 재시도 임계값은 조정 모듈(408)이 독출전압 임계값을 조정할 수 있는 시간 횟수를 설정한다. 다른 실시예에서, 재시도 임계값은 조정 모듈(408)이 독출전압 임계값의 조정을 수행할 수 있는 시간 양을 설정할 수 있다. 특정 실시예에서 반도체 저장장치 제어부(104)는, 만족되고 있는 재시도 임계값에 대한 응답으로서, 추가적인 교정 조치(remedial action), 가령, 데이터 세트에 연계된 저장셀을 차단하거나 데이터 세트에 연결된 저장셀을 논리적으로 대체하는 등의 조치를 취할 수 있다.
일실시예에서는, 이탈 모듈(404)이 데이터 세트의 독출 편향이 기지의 편향으로부터 이탈하는 것, 데이터 오류가 발생한 것, 재시도 임계값이 만족되지 않은 것 등을 판단한 경우라 하더라도, 조정 모듈(408)은 독출전압 임계값을 조정하지 않는다. 특정 실시예에서 조정 모듈(408)은 저장셀군의 조정에 관련된 하나 이상의 위험 요인에 근거하여, 독출전압 임계값을 선택적으로 조정할 수 있다. 상기 위험 요인은, 예를 들어, 저장셀군에 대한 오류율(예컨대, UBER 등), 저장셀군에 대한 소거 사이클의 수, 저장셀군에 대한 저장요청 지연시간(예컨대, 평균치, 최대치, 또는 기타 저장요청 실행 지연시간), 저장셀군의 사용 기간, 저장셀군의 독출전압 임계값의 이전(previous) 조정 횟수, 및/또는 잠재적인 위험 요인 등을 포함할 수 있다. 일실시예에서, 조정 모듈(408)은 위험 임계값을 만족하는 하나 이상의 위험 요인에 대한 응답으로서, 독출전압 임계값의 조정을 취소하거나 지연시킬 수 있다. 다른 실시예에서, 반도체 저장 제어부(104)는 위험 임계값을 만족하는 하나 이상의 위험 요인에 대한 응답으로서 추가적 교정 조치를 취할 수 있다.
일실시예에서, 조정 모듈(408)은 반도체 저장매체(110)의 제조자가 제공한 절차 또는 명령어를 사용하여 독출전압 임계값을 조정한다. 예를 들어, 일실시예에서 조정 모듈(408)은, 반도체 저장매체(110)의 레지스터 설정값을 기입함으로써, 반도체 저장매체(110)로 독출전압 임계값 파라미터를 보냄으로써, 또는 그 밖에, 반도체 저장매체(110)로 독출전압 임계값에 대한 조정량를 전달함으로써, 독출전압 임계값을 조정할 수 있다. 조정 모듈(408)은 상기 조정량를, 독출전압 임계값의 절대값으로서 또는 독출전압 임계값의 조정량 등으로 전달할 수 있다. 다른 실시예에서, 반도체 저장매체(110)는 독출전압 임계값을 조정할 수 있는 다수의 이산 레벨(즉, 2~15의 각 레벨)을 제공한다. 다른 실시예에서 독출전압 임계값 조정량의 크기는, 반도체 저장매체(110)의 제조자 또는 판매자에 의해 정의하거나 추천할 수 있다.
일실시예에서, 조정 모듈(408)은 다이, 칩, PEB, 또는 반도체 저장매체(110)의 기타 개별 세그먼트에 대해 개별적으로 독출전압 임계값을 조정한다. 다른 실시예에서, 조정 모듈(408)은 각 저장셀에 대한 다수의 독출전압 임계값을 조정한다. 예를 들어, 일실시예에서, 반도체 저장매체(110)의 저장셀은, 셀 당 다수의 전압 임계값을 갖는 MLC 저장셀이다(가령, 2비트 MLC 저장셀은 세 개의 서로 다른 독출전압 임계값을 가질 수 있음). 조정 모듈(408)은 다수의 독출전압 임계값 각각을 함께 또는 개별적으로 이동시킬 수 있다.
저장셀이 다수의 독출전압 임계값을 갖는 실시예에서, 각 독출전압 임계값은 소정의 분리 간격으로 분리된다. 일실시예에서 각 독출전압 임계값 사이의 분리 간격은 일정하다. 다른 실시예에서, 조정 모듈(408)은 하나의 명령이나 절차로 다수의 독출전압 임계값을 조정하고, 다수의 독출전압 임계값들 사이의 분리 간격들은 조정에 의해서 축소된다. 예를 들어, 일실시예에서, 독출전압 임계값 사이의 분리 간격은 독출전압 임계값이 크면 증가하고 독출전압 임계값이 낮으면 감소할 수 있다. 일실시예에서, 조정에 의해 독출전압 임계값 사이의 분리 간격을 축소함으로써 독출전압 임계값의 분포가 한층 일정해진다. 이로써, 전압 범위의 양단의 범위는 줄어들지 않고 확장되며, 중간부 범위는 그대로 유지된다.
일실시예에서, 지속 모듈(410)은 독출전압 임계값의 상태를 저장한다. 일실시예에서 지속 모듈(410)은 반도체 저장 제어부(104)의 일부이다. 다른 실시예에서 지속 모듈(410)은 각 독출 작용을 통해서 반도체 저장매체(110)에 독출전압 임계값을 보낼 수 있다. 또다른 실시예에서, 지속 모듈(410)은 반도체 저장매체(110)의 일부로서, 반도체 저장매체(110)로 하여금, 조정 모듈(408)이 생성하는 독출전압 임계값 조정량를 유지하도록 한다. 일실시예에서, 지속 모듈(410)은 다수의 독출전압 임계값을 저장하는데, 각 독출전압 임계값은 반도체 저장매체(110)의 저장셀군의 서로 다른 세그먼트 또는 그룹에 대한 것이다.
일실시예에서, 반도체 저장매체(110)의 제조자는 칩, 물리적 소거 블록, 물리적 페이지, 또는 다이 등, 사전 정의된 저장셀군에 대한 독출전압 임계값을 조정하는 명령어나 절차를 제공한다. 또다른 실시예에서, 지속 모듈(410)은 조정 모듈(408)이 제조자가 제공한 명령어 또는 절차를 사용하여 조정할 수있는 사전 정의된 저장셀군보다 작은 하위 저장셀군에 대한 독출전압 임계값을 저장한다. 그 다음, 또다른 실시예로서 조정 모듈(408)은, 하위군(sub-grouping)으로부터 데이터 세트를 읽을 때에, 지속 모듈(410)이 저장하고 있는 독출전압 임계값을 기반으로 독출전압 임계값을 재조정할 수 있다. 하위군의 예로는 PEB, 페이지, ECC 청크, 또는 그 밖에, 저장셀군의 다른 물리적 또는 논리적 분할공간을 들 수 있다.
예를 들어, 저장셀의 제1 하위군에서 설정한 데이터에 대한 독출 요청에 응하여, 조정 모듈(408)은 전체 저장셀군의 독출전압 임계값을 지속 모듈(410)이 제1 하위군에 대해 저장하고 있는 레벨로 조정할 수 있다. 일실시예에서, 제2 하위군에서 설정한 데이터에 대한 독출 요청에 응하여, 조정 모듈(408)은 전체 저장셀군의 독출전압 임계값을 지속 모듈(410)이 제2 하위군에 대해 저장하고 있는 레벨로 조정할 수 있다. 이로써, 구성 모듈(352)은 반도체 저장매체(110)에서 사용가능한 명령어나 절차에서 제공받을 수 있는 것보다 더 세밀한 범위로 반도체 저장매체(110)에 대한 독출전압 임계값을 조정할 수 있다. 예를 들어, 제조자는 다이, 칩 등의 저장셀군에 대한 독출전압 임계값을 조정하기 위한 명령, 절차, 또는 방법론을 제공할 수 있고, 조정 모듈(408)은 이 명령, 프로 시저, 또는 방법론에 따라 PEB 등의 하위군 각각에 대한 독출전압 임계값을 조정할 수 있다.
일실시예에서, 구성 모듈(352)은 앞에서 설명한 수정불가 데이터 오류(ECC 디코더(322)에 의해 수정할 수 없다는 것을 의미함. 본 명세서에서 설명한 것과 같이, 수정은 독출전압 임계값의 조정 이후에 가능하다)에 대한 데이터 세트를 처리하고, 데이터 오류가 더 이상 수정불가 상태가 아닐 때까지, 즉, 데이터 세트에 대한 ECC 검사비트를 사용하여 수정할 수 있게 될 때까지 독출전압 임계값을 1회 이상 조정한다. 일실시예에서, ECC 모듈(412)은 ECC 디코더(322)와 협력하여 ECC 디코더(322)가 데이터 세트의 오류를 수정할 수 있는지 없는지를 확인한다. 다른 방식으로서, 구성 모듈(352)은 ECC 디코더(322)와 협력하여 ECC 디코더(322)가 데이터 세트의 오류를 수정할 수 있는지 여부를 확인한다.
일실시예에서, 구성 모듈(352)은 ECC 디코더(322)가 오류를 수정할 수 있는지 ECC 모듈(412)이 판단할 때까지 상술한 처리 단계를 반복한다. 예를 들어, 다른 실시예에서, 데이터 세트 독출 모듈(402), 이탈 모듈(404), 방향 모듈(406), 및 조정 모듈(408)은 데이터 세트를 반복적으로 독출하고, 기지의 편향에서 데이터 세트의 독출 편향이 이탈하는지를 판단하고, 데이터 세트에 대한 이탈의 방향을 결정하고, ECC 디코더(322)가 오류를 수정할 수 있다고 ECC 모듈(412)이 판단할 때까지 위에서 설명한대로 독출전압 임계값을 조정할 수 있다.
일실시예에서, 도 6a와 6b와 관련하여 자세히 설명한 바, 데이터 세트는 수 개의 다이, 칩, 채널, 저장요소, PEB 등의 저장셀군에 걸쳐서 저장될 수 있다. 일실시예에서 ECC 검사비트는 각 저장셀군에 대해서 독립적으로 계산 및 저장할 수 있다. 또다른 실시예에서, ECC 검사비트는, 예컨대 ECC 청크의 일부로서 각 저장셀군과 함께 저장된다.
다른 실시예에서, ECC 모듈(412)은, 다이, 칩, 채널, 저장요소, PEB 등, 반도체 저장매체(110)의 저장셀군의 세트 중 어느 특정 군에서 수정불가 오류가 발생했는지 판단하기 위하여 ECC 검사비트를 사용한다. 일실시예에서 ECC 모듈(412)은 ECC 검사비트를 사용하여 각 저장셀군의 데이터 세트를 검증하여, 저장셀군에서 어느 특정 그룹에 수정불가 오류가 있는지를 판단한다. 일실시예에서, 구성 모듈(352)은 수정불가 오류를 갖는 특정 저장셀군 내에 있는 하나 이상의 독출전압 임계값을 조정한다.
일실시예에서, 분포 모듈(414)은 데이터 세트의 독출 편향이 기지의 편향의 예상 분포 내에 있어서 독출전압 임계값을 추가로 조정하지 않아도 되는지 판단한다. 다른 실시예에서, 데이터 세트 독출 모듈(402), 이탈 모듈(404), 방향 모듈(406), 및 조정 모듈(408)은 새로운 독출전압 임계값으로 데이터 세트를 계속해서 재독출하고, 데이터 세트에 대한 독출 편향이 기지의 편향에서 이탈하는지를 재판단하고, 데이터 세트에 대한 이탈 방향을 재판단하고, 분포 모듈(414)이 데이터 세트의 독출 편향이 예상 분포 내에 있음을 판단할 때까지 독출전압 임계값을 재조정한다.
일실시예에서 분포 모듈(414)은 이탈 모듈(404)과 협력하거나 함께 통합된다. 일실시예에서, 구성 모듈(352)은 독출전압 임계값의 조정을 언제 수행해야할지 또는 언제 끝내야 할지를 판단하기 위하여 ECC 모듈(412) 또는 분포 모듈(414) 중 하나를 사용한다. 다른 실시예에서 분포 모듈(414)은 수 개의 다이, 칩, 채널, 저장요소, PEB 등, 반도체 저장매체(110)의 저장셀군으로부터의 데이터 세트의 독출 편향을, 기지의 편향의 분포와 비교하여, 저장셀군의 어느 그룹에서 오류가 발생했는지를 판단한다. 그리고 구성 모듈(352)은 오류가 있는 저장셀군의 하나 이상의 독출전압 임계값을 조정한다.
일실시예에서, ECC 모듈(412) 및/또는 분포 모듈(414)은 데이터 세트 소스 모듈(422)과 협력한다. 일실시예에서 데이터 세트 소스 모듈(422)은 어느 특정 저장셀군에서 데이터 세트가 독출되었는지를 결정한다. 예를 들어, 데이터 세트 소스 모듈(422)은 다이, 칩, 채널, 저장요소, PEB 등의 저장셀군 중에서 어느 그룹에 데이터 세트의 소스가 있는지 판단할 수 있다. 일실시예에서, 데이터 세트 소스 모듈(422)은, 데이터 세트가 기지의 편향에서 이탈되는 독출 편향을 갖는지 또는 데이터 세트에 데이터 오류가 있는지 등을 판단하는 이탈 모듈(404), ECC 모듈(412), 및/또는 분포 모듈(414)에 대한 응답으로서, 어느 특정 저장셀군으로부터 데이터가 독출되었는지를 판단한다.
일실시예에서, 데이터 세트 소스 모듈(422)은 어느 특정 저장셀군에서 데이터 세트가 독출되었는지를, 데이터 세트의 시퀀스 내에 데이터 세트의 위치를 기반으로 하여 판단한다. 예를 들어, 일실시예에서, 반도체 저장매체(110)는 다수의 저장셀군을 포함할 수 있으며, 독출 작용 실행시에 각 저장셀군을 병렬로 읽을 수 있다. 일실시예에서 데이터 세트 소스 모듈(422)은 기입데이터 파이프라인(106) 및/또는 독출데이터 파이프라인(108)이 어떻게 데이터를 처리하는지에 관한 알려진 정보 및 다수의 저장셀에 관한 알려진 정보를 사용하여, 어느 저장셀군에서 데이터 세트가 독출되었는지를 판단할 수 있다.
예를 들어, 일실시예에서, 기입데이터 파이프라인(106) 및 독출데이터 파이프라인(108)은 각각 64 비트(8 바이트)의 데이터 경로(path)를 가질 수 있고, 반도체 저장매체(110)는 24개 다이를 배열할 수 있는 폭으로 형성할 수 있고, 독출 작용 실행시에 24개 다이 각각으로부터 8 바이트가 병렬로 독출되어, 독출 동작 1회당 총 192바이트가 독출될 수 있다. 일실시예에서, 데이터 세트 소스 모듈(422)은 이러한 정보를 바탕으로, 어느 다이 또는 다른 저장셀군으로부터 데이터가 독출되었는지를 192바이트 내에 있는 8바이트 데이터 세트의 위치를 근거로 판단할 수 있다.
다른 실시예에서 데이터 세트 소스 모듈(422)은 데이터 세트의 순서 중에서 데이터 세트의 위치를 찾기 위하여 독출 작용의 일부로서 처리되는 데이터 세트의 개수를 세거나 추적할 수 있다. 예를 들어, 처리 중에 24개 다이로부터(첫번째 다이부터 시작하여) 8바이트를 독출할 수 있고, 이때 ECC 모듈(412) 및/또는 분포 모듈(414)이 데이터 세트의 5번째 8바이트에 대한 연산 중에 독출 편향 이탈 또는 데이터 오류를 검출하였다면, 데이터 세트 소스 모듈(422)은 24개 다이 중의 5번째 다이로부터 받은 이 8바이트 군의 데이터를 확인한다.
일실시예에서, 데이터 세트의 순서에서의 데이터 세트의 위치 및 기타 알려진 정보를 이용함으로써, 데이터 세트 소스 모듈(422)은 식별자 또는 기타 외부 정보를 사용하지 않고도, 어느 저장셀군으로부터 데이터 세트가 독출되었는지를 판단할 수 있다. 독출 편향의 차를 나타내는 다이, 칩, 채널, PEB 등의 저장셀을 확인함으로써, 즉각적인 교정 조치(가령, 독출전압 임계값을 변경하기, 저장셀군을 예약된 군(grouping)으로 교체하기 등)를 취하는 것이 가능해진다.
일실시예에서, 사전구성 모듈(424)은 반도체 저장매체(110)의 저장셀에 대한 구성 파라미터를 사전에 설정 및 조정함으로써 반도체 저장매체(110)의 유용성을 개선시킨다. 사전구성 모듈(424)은, 오류가 발생하기 전에 미리 구성 파라미터를 결정함으로써, 독출 행위를 다시 시도하거나 예방할 오류에 대한 다른 교정 조치를 수행해야 하는 불이익이 없이도 특정 오류가 발생하는 것을 방지할 수 있다. 특정 실시예에서, 사전구성 모듈(424)은 반도체 저장장치(102)의 사용례에 대한 구성 파라미터를 최적화하여, 기본 파라미터를 사용하는 대신에 사용례에 대한 저장셀을 최적화하게 된다.
위에서 설명한 바와 같이, 구성 파라미터는, 독출 임계값, 기입 또는 프로그램 임계값, 소거 임계값 등과 같은 인터페이스를 통해 변경가능한 저장셀 세트의 파라미터이다. 구성 파라미터를 변경하는 인터페이스는 프로그램가능 데이터 레지스터, 반도체 저장매체(110)에 대한 제어 버스의 명령 인터페이스, 반도체 저장장치(102)의 장치 드라이버의 API, 반도체 저장 제어부(104)를 위한 제어 파라미터 등을 포함할 수 있다.
사전구성 모듈(424)은 저장셀 세트에 대한 구성 파라미터를 결정하기 위해 저장셀 세트에 대한 하나 이상의 저장매체 특징을 참조한다. 저장매체 특징은 반도체 저장매체(110)의 속성에 관련된 통계적 서술자(statistic descriptor), 발견적 서술자(heuristic descriptor), 또는 그 밖의 서술자이다. 저장셀 세트에 대한 저장매체 특징은 사실상 정적일 수 있거나, 동적으로서 시간에 따라 변경될 수 있다. 일실시예에서 저장매체 특징에는, 반도체 저장장치(102) 및/또는 반도체 저장매체(110)에 대한 구성, 모델, 제조자, 제품 버전 등이 포함되거나 이들과 관련된다. 또다른 실시예에서, 저장매체 특징은 특정 저장셀 세트에 대한 속성 또는 통계자료, 가령, 저장셀 세트에 대한 프로그램/소거 사이클 수, 저장셀 세트에 대한 독출 수, 저장셀 세트에 대한 이전의 기입 이후으 유지 기간, 저장셀 세트에 대한 오류 통계자료 등을 기술한다. 다른 실시예에서 저장매체 특징은, 온도, 사용례(예를 들어, 캐시(cache) 사용례, 자료(archive) 사용례, 서버 사용례, 기업 사용례, 소비자 사용례 등)와 같은 환경 조건이나 반도체 저장장치(102) 및/또는 반도체 저장매체(110)의 사용을 포함하거나 이들과 관련되어 있다.
사전구성 모듈(424)은, 저장셀 세트에 대한 구성 파라미터의 결정에 대한 응답으로서, 결정된 구성 파라미터를 사용하는 저장셀 세트를 구성한다. 사전구성 모듈(424)는 저장셀 세트에 대한 저장매체 특징을 주기적으로 업데이트할 수 있고, 저장셀 세트에 대한 구성 파라미터를 업데이트할 수 있고, 저장셀 세트를 재구성하여, 업데이트된 구성 파라미터를 사용하도록 할 수 있다. 사전구성 모듈(424)은, 입력/출력 작용의 실행 중에, 또는 개시 작용 실행 동안에, 또는 변경된 저장매체 특징을 표시하는 저장셀 세트의 배경 스캔(background scan)에 대한 응답으로서, 구성 파라미터를 이용해 저장셀을 구성할 수 있다.
특정 실시예에서 사전구성 모듈(424)은, 조정 모듈(408)과 관련하여 위에서 설명한 조정과 독립적으로 저장셀을 구성한다. 예를 들어, 사전구성 모듈(424)은 구성 모듈(352)과 분리될 수 있거나, 또는, 구성 모듈(352) 없이 사전구성 모듈(424)이 저장 제어부(104)의 일부가 될 수 있거나, 그 밖의 구성도 가능하다. 다른 실시예에서 조정 모듈(408)과 사전구성 모듈(424)은 서로 협력할 수 있다. 예를 들어, 조정 모듈(408)은, 사전구성 모듈(424)이 개방형 루프 모델 등을 사용하여 설정했던 하나 이상의 구성 파라미터에 대한 조정에 기반하여 폐쇄형 루프 피드백을 실시할 수 있다.
일실시예에서, 기입전압 모듈(416)은 반도체 저장매체(110)의 저장셀에 데이터를 기입하기 위한 기입전압 레벨을 설정한다. 이 기입전압 레벨은, 저장셀의 상태를 프로그램하거나 변경하는 데 사용되는 최소 또는 최대 전압을 지정하는 프로그래밍 전압, 증가형 계단 펼스를 이용한 프로그래밍 작용에서의 펄스 계단의 크기, 증가형 계단 펼스를 이용한 프로그래밍 작용의 최대 반복실행 수, 프로그래밍 작용의 실행에 사용되는 프로그램 검증 임계값, 증가형 계단 펄스를 이용한 프로그래밍 작용의 초기 편향 등이다. 일실시예에서, 기입전압 모듈(416)은 구성 모듈(352) 및/또는 사전구성 모듈(424)과 통합될 수 있다.
예를 들어, NAND 플래시 반도체 저장장치에 있어서, 기입전압 및/또는 기타 프로그램에 관련된 구성 파라미터는 저장셀의 상태를 이진수 1에서 이진수 0으로 변화시킨다. 일실시예에서 기입전압 모듈(416)은, 알고 있는 패턴을 저장셀에 기입하고 나서, 이 패턴을 다시 독출하여 전압 임계값을 결정하고, 원하는 독출 임계값에 도달될 때까지 기입 임계값을 조정한다. 다른 실시예에서, 기입전압 모듈(416)은, 저장셀의 사용 기간(age)에 관련된 저장셀의 내구성 및 데이터 보존성 요건을 기반으로 기입전압의 크기값을 지정하는 수학적 모델에 근거하여 기입전압 레벨을 조정한다. 일실시예에서, 저장셀의 사용 기간사용 기간램 사이클 및 소거 사이클을 참작하여 계산한다. 일실시예에서 기입전압 모듈(416)은 하나 이상의 저장셀에 시험 기입(test write)을 수행하고, 저장셀 중 적어도 하나의 독출전압을 검출하고, 이 독출전압이 임계값에 이를 때까지 기입전압 레벨을 조정한다. 다른 실시예에서, 기입전압 모듈(416)은 저장셀에 기지의 편향과 함께 데이터 세트를 기입하여 시험 기입을 수행하고, 독출 데이터 세트의 독출 편향이 기지의 편향에서 이탈되는지 판단하여 독출전압을 테스트한다.
일실시예에서 기입전압 모듈(416)의 동작은 최소 기입전압에서부터 시작하고, 독출전압이 임계값에 도달할 때까지 기입전압을 증가시킬 수 있다. 다른 실시예에서, 기입전압 모듈(416)의 동작은 최대 기입전압에서부터 시작하고, 독출전압이 임계값에 도달할 때까지 기입전압을 감소시킬 수 있다. 일실시예에서 기입전압 모듈(416)은, 저장셀에 대한 원하는 내구성 및/또는 데이터 보존성과 저장셀 프로그램에 소요되는 시간의 균형을 맞추는 기입전압 레벨을 선택할 수 있다.
사전 구성 (PROACTIVE CONFIGURATION)
도 5는 사전구성 모듈(424)의 일실시예를 도시한다. 특정 실시예에서, 사전구성 모듈(424)은 도 4에 관해 위에서 설명한 사전구성 모듈(424)과 거의 유사하다. 도면에 나타낸 실시예에서, 사전구성 모듈(424)은 매체 특징(media characteristic) 모듈(502), 구성 파라미터(configuration parameter) 모듈(504), 저장셀 구성(storage cell configuration) 모듈(506), 특징 업데이트(characteristic update) 모듈(508), 구성 업데이트(configuration update module) 모듈(510), 및 구성 적응(adaptive configuration) 모듈(512)을 포함한다. 매체특징 모듈(502), 구성 파라미터 모듈(504), 저장셀 구성 모듈, 특징 업데이트 모듈(508), 구성 업데이트 모듈(510), 및 구성 적응화 모듈(512)은 컴퓨터(112), 또는 반도체 저장 장치(102)를 위한 다른 호스트 장치에 설치된 장치 드라이버의 일부일 수 있으며, 그리고/또는 반도체 저장장치에 사용되는 하드웨어(가령, FPGA나 ASIC 등의 펌웨어)의 일부일 수 있다.
일실시예에서, 매체특징 모듈(502)은 반도체 저장매체(110)의 저장셀 세트에 대한 하나 이상의 저장매체 특징을 참조한다. 매체특징 모듈(502)은 하나 이상의 저장매체의 특징 자체를 결정하거나, 다른 모듈로부터 저장매체 특징을 받거나, 저장매체 특징 저장소에서 저장매체 특징을 검색하는 등의 기능을 할 수 있다. 위에서 설명한 바와 같이, 저장매체 특징은 통계적 서술자(descriptor), 발견적 서술자, 또는 반도체 저장매체(110)의 속성에 관련된 다른 서술자이다. 저장매체 특징은 반도체 저장 장치(102) 및/또는 반도체 저장매체(110)의 구성, 모델, 제조자, 제품 버전 등; 저장셀 세트에 대한 속성 또는 통계자료; 반도체 저장 장치(102) 및/또는 반도체 저장매체(110)의 환경 조건 또는 사용례; 및/또는 통계적 서술자, 발견적 서술자, 또는 반도체 저장매체(110)의 속성에 관련된 다른 서술자를 포함하거나(포함하고) 이들에 관련될 수 있다.
저장셀 세트에 대한 저장매체 특징은 저장셀 세트에 대한 구성 파라미터의 결정에 영향을 주거나 정보를 준다. 일실시예에서, 저장매체 특징은 저장셀 세트에 대한 프로그램/소거 사이클수를 포함한다. 또다른 실시예에서, 저장매체 특징은 저장셀 세트에 대한 독출 수를 포함한다. 다른 실시예에서, 저장매체 특징은 저장셀 세트에 대한 이전의 기입 이후의 유지 시간을 포함한다. 또 다른 다른 실시예에서, 저장매체 특징은 저장셀 세트에 대한 온도를 포함한다. 특정 실시예에서 저장매체 특징은 저장셀 세트에 대한 사용례를 포함한다. 또 다른 실시예에서, 저장매체 특징은 UBER 등, 저장셀 세트에 대한 오류 통계자료를 포함한다. 다른 실시예에서, 저장매체 특징은 저장셀 세트에 대한 이전 구성 파라미터 또는 구성 파라미터 이력, 다른 저장셀 세트에 대한 구성 파라미터 또는 저장매체 특징, 등을 포함할 수 있다.
특정 실시예에서 매체특징 모듈(502)은 저장매체 특징의 취합 및/또는 유지를 관리한다. 매체특징 모듈(502)은 저장매체 특징 저장소 내에 저장매체 특징을 유지시킬 수 있고, 그리고/또는 저장매체 특징 저장소로부터 저장매체 특징을 검색할 수 있다. 저장매체 특징 저장소의 일례를 도 7a 및 7b를 참조하여 아래에서 더 자세히 설명한다. 특정 실시예에서, 매체특징 모듈(502)은 몇가지 서로 다른 저장셀 세트(가령, 반도체 저장 장치(102)의 각 저장매체 영역 또는 저장매체 분할공간)에 대한 저장매체 특징을 참조, 결정, 및/또는 관리한다. 저장매체 영역에는 소거 블록(논리적 또는 물리적), 페이지, 논리적 페이지, ECC 청크, 페이지를 갖는 분할공간, 다이, 다이 평판, 칩 등이 포함될 수 있다.
일실시예에서, 매체특징 모듈(502)은 도 3b에 관하여 위에서 설명한 장치인자 모듈(354)과 유사, 함께 동작, 그리고/또는 통합될 수 있다. 예를 들어, 저장매체 특징은 장치인자 모듈(354)에 대해 앞에서 설명한 하나 이상의 통계자료, 가령, 반도체 저장장치(102)의 온도, 반도체 저장장치(102)의 오류율(예컨대, 수정불가 비트 오류율(UBER) 등), 반도체 저장장치(102)의 소거 사이클 수, 반도체 저장장치(102)의 저장요청 지연시간(storage request latency)(예컨대, 저장요청을 실행하기 위한 평균, 최대, 또는 기타 지연시간), 반도체 저장장치(102)의 사용 기간(age), 및/또는 기타 통계자료 또는 특징들을 포함할 수 있다. 특정 실시예에서 매체특징 모듈(502)은 하나 이상의 센서(356)로부터 또는 다른 모듈 또는 구성요소(가령, ECC 디코더(322)) 등으로부터 직접 또는 간접적으로 입력신호를 수신한다.
일실시예에서 구성 파라미터 모듈(504)은 저장셀 세트에 대한 매체특징 모듈(502)로부터 받은 하나 이상의 저장매체 특징에 근거하여, 저장셀 세트에 대한 구성 파라미터를 결정한다. 위에서 설명한 바와 같이, 구성 파라미터는 인터페이스를 통해으로 변경가능한, 저장셀 세트의 파라미터이다. 구성 파라미터는 저장셀에의 기입 또는 프로그래밍, 저장셀에서의 독출, 저장셀의 소거, 그리고/또는 저장셀의 다른 파라미터에 관련될 수 있다. 구성 모듈(506)은, 아래에서 설명한 것과 같이 구성 파라미터 모듈(504)이 저장셀 세트를 구성할 때 사용할 수 있는 절대 데이터값, 또는 데이터값에 대한 옵셋 또는 조정치, 또는 기타 파라미터로서 구성 파라미터를 결정할 수 있다.
저장셀에서의 독출을 위한 구성 파라미터의 일실시예는, 독출전압 임계값, 저항률 임계값 등과 같은 독출 임계값이다. 저장셀의 기입/프로그래밍을 위한 구성 파라미터의 다양한 실시예에는, 증가형 계단 펼스를 이용한 프로그래밍 작용에서의 펄스 계단의 크기, 증가형 계단 펼스를 이용한 프로그래밍 작용의 최대 반복실행 수, 프로그래밍 작용에 사용되는 프로그래밍 검증 임계값, 증가형 계단 펄스를 이용한 프로그래밍 작용 실행시의 초기 편향 등이 포함될 수 있다. 특정 실시예에서 저장셀 소거를 위한 구성 파라미터에는, 증가형 계단 펼스를 이용한 소거 작용에서의 펄스 계단의 크기, 증가형 계단 펼스를 이용한 소거 작용의 최대 반복 수, 소거 작용에 사용되는 소거 검증 임계값, 증가형 계단 펄스를 이용한 소거 작용 실행시의 초기 편향 등이다. 당업자는 본 명세서를 참고하여, 인터페이스를 통해 변경 가능한, 저장셀에 대한 다른 구성 파라미터를 알게 될 것이다.
구성 파라미터 모듈(504)은 구성 파라미터를 결정하기 위해, 방정식 또는 룩업(lookup) 테이블("LUT") 또는 매트릭스 등의 내부에 하나 이상의 저장매체 특징을 입력함으로써, 하나 이상의 저장매체 특징에 대해 사전 정의한 변환이나 연산을 수행함으로써, 그 밖에 하나 이상의 저장매체 특징을 참조 및/또는 조작함으로써, 하나 이상의 저장매체 특징에 근거하여 구성 파라미터를 만들 수 있다. 구성 파라미터 방정식, LUT, 매트릭스 등은 시험 데이터나 이력자료 등과 같은 경험적 데이터를 바탕으로 할 수 있다. 일실시예에서, 설계 기술자 등은, 다양한 제조자가 만든 반도체 저장매체 등과 같은 다양한 저장매체 특징들을 갖는 저장셀 세트를 테스트하여, 다양한 저장매체 특징들을 갖는 저장셀에 대한 최적의 구성 파라미터를 결정할 수 있다. 예를 들어, 방정식, LUT, 매트릭스 등을, 제조자 X가 생산한 반도체 저장매체(110)를 1,000회의 프로그램/소거 주기로 사용한 후에 셀 수치의 자연적 변화량은 Y이며, 이를 보완하기 위하여 독출 임계값을 Z [Volt] 만큼 증가시킨다는 것을 표시하도록 구성할 수 있다.
일실시예에서, 저장셀 세트에 대한 저장매체 특징에는 온도가 포함된다. 저장셀 세트에 대한 온도는 저장셀 세트에 있는 하나 이상의 다른 저장매체 특징의 동작 속도에 영향을 줄 수 있다. 예를 들어, 높은 온도에서 원시 비트 오류율(RBER) 및 데이터 보존 시간과 같은 오류 통계자료에 관련된 저장매체 특징의 변화 속도가 증가할 수 있고, 구성 파라미터를 조정하여 이러한 동작을 완화시킬 수 있다. 특정 실시예에서 구성 파라미터 모듈(504)은 온도의 영향을 보상하기 위해, 온도를 이용하여 구성 파라미터 또는 저장매체 특징 등을 조정하거나 축소함으로써, 온도에 관한 데이터를 정규화할 수 있다. 저장셀 세트의 온도는 평균 온도, 슬라이딩 윈도우 위의 온도, 현재 온도, 반도체 저장 장치(102)의 온도, 또는 하나 이상의 저장셀 세트에 관련된 그 밖의 온도일 수 있다.
일실시예에서 하나 이상의 저장매체 특징은 구성 파라미터의 경향이나 최적화 등을 구성 파라미터 모듈(504)에 알려주고, 구성 파라미터 모듈(504)은 이 경향이나 최적화를 만족하기 취해 구성 파라미터를 결정한다. 예를 들어, 프로그램/소거 사이클 수, 독출 수, UBER, 또는 다른 저장매체 특징값의 크기는 독출전압이 변했다는 것을 나타낼 수 있으며, 구성 파라미터 모듈(504)은 저장셀로부터의 직접적인 피드백(가령, 독출, 독출 재시도 등)없이 저장매체 특징을 바탕으로 독출전압 또는 다른 구성 파라미터를 결정할 수 있다.
일실시예에서 구성 파라미터 모듈(504)은 반도체 저장매체(110)의 다른 저장 영역 또는 저장 분할공간의 저장셀 세트에 대한 구성 파라미터를 구성 파라미터 저장소 내에 유지시킨다. 구성 파라미터 저장소의 한 예로서, 도 8a와 8b를 참조하여 아래에 자세히 설명하고 있다. 특정 실시예에서 사전 설정 모듈(424)은 다른 저장 영역에 대한 별도의 저장매체 특징 및/또는 구성 파라미터를 결정하고 관리함으로써, 각 저장 영역에 대한 구성 파라미터를 개별적으로 사용자 맞춤할 수 있고, 이를 통해 오류를 줄여서 반도체 저장매체(110)의 유용성을 증가시키고, 반도체 저장매체(110)의 수명을 연장하는 등의 효과를 얻게 된다.
특정 실시예에서 구성 파라미터 모듈(504)은 목표 저장셀 세트를 기반으로 하나의 저장셀 세트에 대한 구성 파라미터를 결정할 수 있다. 목표 저장셀 세트는 구성 파라미터 모듈(504)이 다른 저장셀 세트에 대한 구성 파라미터를 결정하기 위해 사용하는 알고 있는(known) 그리고/또는 조절된(controlled) 사용 특징(예컨대, 저장매체 특징 등)을 가질 수 있다. 특히, 구성 파라미터 모듈(504)은 목표 저장셀 세트의 저장매체 특징을, 현재 구성되고 있는 저장셀 세트의 저장매체 특징과 비교할 수 있다. 이러한 비교는 저장셀 세트에 대해 결정된 구성 파라미터를 보다 더 최적화하기 위하여 사용할 수 있다. 목표 저장셀 세트는 알고 있는 데이터(메타데이터, 시스템 데이터, 기지의 데이터 패턴 등)를 저장할 수 있으며, 구성 파라미터 모듈(504)은 이 알고 있는 데이터를 이용하여 다른 데이터 세트에 대한 구성 파라미터를 결정할 수 있다.
또 다른 실시예에서 구성 파라미터 모듈(504)은 목표 저장셀 세트에 대해 결정된 구성 파라미터에 근거하여, 또는 목표 저장셀 세트에 대한 하나 이상의 저장매체 특징 등에 근거하여, 저장셀 세트에 대한 구성 파라미터를 결정한다. 예를 들어, 구성 파라미터 모듈(504)은 목표 저장셀 세트에 대한 구성 파라미터를 또다른 저장셀 세트에 대한 구성 파라미터로서 사용하거나, 또다른 저장셀 세트에 대한 구성 파라미터를 결정하는 데 사용하기 위해 목표 저장셀 세트의 구성 파라미터를 조정하거나, 또다른 저장셀 세트에 대한 구성 파라미터를 결정하기 위해 목표 저장셀 세트에 대한 저장매체 특징을 사용하거나 할 수 있다. 이러한 방법에 있어서, 목표 저장셀 세트는 다른 저장셀 세트를 관리하는 데 사용하기 위한 제어 그룹으로서의 역할을 한다. 특정 실시예에서 목표 저장셀 세트는 저장 장치(102)의 수명 동안에 구성 파라미터를 변경하기 위한 하드 디스크 드라이브 기술에서 사용되어 왔던 "시스템 추적" 방식과 유사한 방식으로 사용할 수 있다. 다른 실시예에서 구성 파라미터 모듈(504)은 저장셀 세트에 대한 하나 이상의 저장매체 특징을 목표 저장셀 세트에 대한 하나 이상의 저장매체 특징과 비교하고, 저장셀 세트에 대한 구성 파라미터를 저장매체 특징들의 차이에 기초하여 결정한다.
특정 실시예에 구성 파라미터 모듈(504)은 저장셀 세트에 대한 알려진 저장매체 특징이 없다는 것에 대한 응답으로서, 구성 파라미터를 부트스트랩(bootstrap)하기 위한 목표 저장셀 세트를 기반으로 저장셀 세트에 대한 구성 파라미터를 만든다. 구성 파라미터 모듈(504)은 동작 개시 시에 저장셀 세트에 대한 구성 파라미터를 부트스트랩할 수 있다. 또는, 구성 파라미터 모듈(504)은 다른 동작 시에, 즉, 저장셀 세트에 대한 저장매체 특징이 아직 사용가능해질 수 없지만 저장매체 특징 또는 기타 데이터가 목표 저장셀 세트에 대해서는 사용 가능해질 수 있는 동작 시에 저장셀 세트에 대한 구성 파라미터를 부트스트랩할 수 있다. 예를 들어, 반도체 저장매체(110)의 메타데이터 영역에 저장된 메타데이터는 알고 있거나 조절된(known or controlled) 프로그램/소거 횟수를 가질 수 있고, 구성 파라미터 모듈(504)은 메타데이터 영역에 대한, 이 알고 있거나 조절된 프로그램/소거 횟수에 기반하여, 사용자 데이터를 저장하고 있는 반도체 저장매체(110)의 영역에 대한 구성 파라미터를 만들 수 있다.
일실시예에서, 저장셀 구성 모듈(506)은 구성 파라미터 모듈(504)이 저장셀 세트에 대해 결정하는 구성 파라미터를 사용하는 저장셀 세트를 구성한다. 저장셀 구성 모듈(506)은 저장셀 세트를 구성하기 위하여 저장셀 세트의 인터페이스를 사용한다. 인터페이스는 공개적으로 알려진 인터페이스 또는 개인적인 인터페이스를 포함할 수 있다. 구성 모듈(506)은 데이터 레지스터를 설정함으로써, 또는 반도체 저장매체(110)에 대한 제어 버스의 명령 인터페이스를 통해 명령을 전송함으로써, 또는 반도체 저장 장치(102)의 장치 드라이버의 API를 호출함으로써, 또는 반도체 저장 제어부(104)에 대한 제어 파라미터를 설정하거나, 그렇지 않으면 저장셀 세트를 구성함으로써, 저장셀 세트를 구성할 수 있다. 저장셀 구성 모듈(506)은 특정 명령어와 특정 명령어의 순서(시퀀스)를 이용할 수 있고, 그리고/또는 특정 파라미터, 레지스터 설정, 또는 저장셀 세트과 인터페이스하기 위해 사용하는 정규 명령어(범용 명령어)들의 차이를 이용할 수 있다. 저장셀 구성 모듈(506)은 구성 파라미터 모듈(504)로부터 구성 파라미터를 받을 수 있고, 구성 파라미터 저장소 등에서 구성 파라미터를 검색할 수 있다.
일실시예에서 저장셀 구성 모듈(506)은 트리거 신호에 응하여, 결정된 구성 파라미터를 사용하는 저장셀 세트를 구성한다. 특정 실시예에서 트리거는 반도체 저장 장치(102) 및/또는 반도체 저장매체(110)의 구조를 기반으로 선택된다. 예를 들어, 특정 반도체 저장 장치(102) 및/또는 반도체 저장매체(110)는 다수의 입/출력 작용에 걸쳐서 구성 파라미터를 유지할 수 있고, 반면에 다른 반도체 저장 장치(102) 및/또는 반도체 저장매체(110)는 각 입/출력 작용 시실행시에 설정되는 구성 파라미터를 필요로 할 수 있다. 저장셀 구성 모듈(506)은 반도체 저장매체(110)의 초기화 중에, 이벤트 또는 시간 간격에 응하여 또는 다른 트리거에 응하여, 반도체 저장매체(110)의 동작 중에 저장셀 세트에서 출력된 각 명령어를 이용하여 동적으로 저장셀 세트를 한 번 구성할 수 있다.
일실시예에서, 저장셀 구성 모듈(506)을 위한 트리거는, 어느 저장셀 세트에 대한 저장매체 특징의 변화, 또는 이 저장셀 세트에 대한 저장매체 특징의 사전 정의된 크기의 변화 등을 포함하고, 이 저장셀 구성 모듈(506)은 저장매체 특징의 변화에 응하여 상기 저장셀 세트를 구성한다. 또 다른 실시예에서, 저장셀 구성 모듈(506)을 위한 트리거는 독출 요청, 기입 요청, 소거 요청 등, 저장셀 세트에 대한 입/출력 요청을 포함하고 있다. 예를 들어, 특정 실시예에서, 저장셀 구성 모듈(506)은, 저장셀에 대한 독출 요청에 응하여, 독출 구성 파라미터를 사용하는 저장셀 세트를 구성할 수 있고, 저장셀에의 기입 요청에 응하여, 기입 구성 파라미터를 사용하는 저장셀 세트를 구성할 수 있고, 소거 요청에 응하여, 소거 구성 파라미터를 사용하는 저장셀 세트를 구성할 수 있다.
다른 실시예에서, 저장셀 구성 모듈(506)로 하여금 저장셀 세트 중 하나 이상을 구성하도록 하는 트리거는, 반도체 저장 장치(102)에 대한 개시 작용(startup operation) 또는 반도체 저장 장치(102)에 대한 정상적인 종료 작용(shutdown operation) 등이다. 특정 실시예에서, 일단 저장셀 구성 모듈(506)이 개시 작용에 응하여, 구성 파라미터를 갖는 저장셀 세트를 구성하면, 이 저장셀 세트는 종료 작용 및 그 다음의 개시 작용이 실행될 때까지 해당 구성 파라미터를 유지하게 된다. 저장셀 세트가 구성 파라미터를 어떻게 유지하는지는, 구성 파라미터의 유형, 저장셀 세트의 구조 등에 따라 달라진다.
일실시예에서, 특징 업데이트 모듈(508)은 저장셀 세트에 대한 업데이트 이벤트에 대한 응답으로서, 저장셀 세트에 대한 하나 이상의 저장매체 특징을 업데이트한다. 업데이트 이벤트는 트리거의 일종으로서, 이에 응하여 특징 업데이트 모듈(508)은 저장매체 특징을 업데이트한다. 반도체 저장 장치의(102) 및/또는 반도체 저장매체(110)의 특정 저장매체 특징(구성, 모델, 제조자, 제품 버전 등)은 실질적으로 정적(static)일 수 있고, 특정 실시예에서, 특징 업데이트 모듈(508)은 이러한 저장매체 특징을 업데이트하지 않을 수도 있고, 이러한 저장매체 특징을 매우 적은 빈도로 업데이트할 수도 있다. 다른 저장매체 특징(프로그램/소거 사이클 수, 독출 수, 유지 시간, 온도, 사용례, 오류 통계자료 등)은 동적(dynamic)으로서 수시로 변경될 수 있다.
일실시예에서, 반도체 저장매체(110)에 대한 배경 스캔(background scan)이 업데이트 이벤트일 수 있다. 예를 들어, 특징 업데이트 모듈(508)은, 배경 스캔을 하는 동안에 저장셀 세트를 스캔하는 것에 대한 응답으로서, 반도체 저장매체(110)의 배경 스캔을 수행하고 저장셀 세트에 대한 저장매체 특징 기록을 업데이할 수 있다. 또 다른 실시예에서, 저장셀 세트에 대한 또는 인접 저장셀 세트에 대한 입/출력 요청(독출 요청, 기입 요청, 소거 요청 등)이 업데이트 이벤트이며, 특징 업데이트 모듈(508)은 이 입/출력 요청에 응하여 저장셀 세트에 대한 저장매체 특징을 업데이트한다. 다른 실시예에서, 특징 업데이트 모듈(508)에 대한 업데이트 이벤트에는 반도체 저장 장치(102)에 대한 개시 작용 및/또는 종료 작용이 포함될 수 있다. 특정 실시예에서는 저장셀 세트에 대한 가비지 취합 작용이 업데이트 이벤트이다. 예를 들어, 특징 업데이트 모듈(508)은 가비지 취합 작용이 실행되어 저장셀 세트의 저장 용량이 복구되는 등의 때에, 저장셀 세트에 대한 저장매체 특징을 업데이트할 수 있다.
일실시예에서 특징 업데이트 모듈(508)은 매체특징 모듈(502)과 협동하거나 매체특징 모듈(502)을 이용하거나 하여 저장매체 특징을 업데이트한다. 특정 실시예에서 특징 업데이트 모듈(508)은 도 7a 및 7b와 관련하여 아래에서 자세히 설명하는 바와 같이, 저장매체 특징 저장소에 저장되어 있는 저장매체 특징을 업데이트할 수 있다.
일실시예에서, 구성 업데이트 모듈(510)은 저장셀 세트에 대한 구성 파라미터를 업데이트한다. 특정 실시예의 구성 업데이트 모듈(510)은 구성 파라미터에 상응하는 하나 이상의 저장매체 특징의 변화에 응하여 구성 파라미터를 업데이트한다. 특징 업데이트 모듈(508)은 이 특징 업데이트 모듈(508)이 저장매체 특징을 업데이트했음을 구성 업데이트 모듈(510)에 통지할 수 있거나, 구성 업데이트 모듈(510)은 변경 사항을 알기 위해 저장매체 특징을 주기적으로 스캔할 수 있거나, 구성 업데이트 모듈(510)은 저장셀 세트에 대한 구성 트리거에 응답하여, 저장매체 특징의 변경 사항을 검사할 수 있거나 할 수 있다.
특정 실시예에서 구성 업데이트 모듈(510)은 사전 정의된 변경 임계값보다 큰 저장매체 특징의 변화에 응답하여, 구성 파라미터를 업데이트한다. 일실시예에서 구성 업데이트 모듈(510)은 구성 파라미터 모듈(504)과 협력하거나 구성 파라미터 모듈(504)을 사용하거나 하여 구성 파라미터를 업데이트한다. 또다른 실시예에서, 구성 업데이트 모듈(510)은 구성 파라미터 저장소에 저장되어있는 구성 파라미터를 업데이트할 수 있다. 이에 대해서는 도 8a, 8b를 참조하여 아래에서 더 자세히 설명한다.
일실시예에서, 구성 적응화 모듈(512)은, 반도체 저장 장치(102) 및/또는 반도체 저장매체(110)에 대한 하나 이상의 구성 파라미터, 임계값, 관리 기법 등을 동적으로 조정하여(adjust) 적응시킨다(adapt). 특정 실시예에서 구성 적응화 모듈(512)은 반도체 저장 장치(102)의 사용 기간이 경과함에 따라, 또는 반도체 저장 장치(102)의 사용례가 변화함에 따라, 조정 및 적응을 실시할 수 있다. 사용례의 예로서 캐시(cache) 사용례, 자료(archive) 사용례, 서버 사용례, 기업 사용례, 소비자 사용례 등을 들 수 있다.
일실시예에서, 구성 적응화 모듈(512)은 반도체 저장 장치(102)에 대한 선험적 지식, 또는 반도체 저장 장치(102)에 대해 취합한 실행시간(런타임) 통계자료, 또는 반도체 저장 장치(102)의 저장셀에 대한 저장매체 특징전지 등에 에 근거하여 조정 또는 적응을 실시한다. 자기(magnetic) 저장장치와는 달리, 반도체 저장장치의 매체 속성은 통상, 저장 장치의 사용 가능한 수명 동안에 변하게 된다. 예를 들어, 독출 방해(read disturb) 현상을 관리하고 신뢰성있는 데이터 보존성을 보장하기 위해, 반도체 저장매체(110)의 저장 영역에 대해 저장 용량 복구 또는 가비지 취합 처리를 주기적으로 수행할 수 있다.
반도체 저장매체(110)에서, 독출 방해 현상이란 특정 저장셀을 선택하고 독출할 때에 선택되지 않은 인접 저장셀에서 발생할 수 있는데, 이로 인해, 선택되지 않은 저장셀의 부동 게이트 상에 전하가 모이게 되어, 의도적으로 인가하지 않은 높은 전압이 이 선택하지 않은 저장셀에서 발생되도록 한다. 이 독출 방해 현상을 방지하기 위한 한 가지 접근 방식으로서, 이 방해받는 저장셀 밖으로 유효 데이터를 이동시켜서 이 저장셀 내의 데이터값을 계속해서 결정할 수 있도록 한다. 이 유효 데이터는 새로운 물리적 위치로 재기입하고, 방해받은 셀은 소거하여 독출 방해 현상을 제거한다. 이러한 접근 방식을 리프레시(refresh)라고 하며, 이 리프레시 동작 사이의 시간 간격을 데이터 리프레시 간격이라고 부른다. 독출 방해 임계값은 독출 방해 현상을 없애기 위해 교정 조치가 필요하게 될 때까지의 인접 저장셀의 독출 횟수이다. 데이터 리프레시 간격에서 저장 영역에서는 저장 용량의 복구 및/또는 데이터 리프레시가 일어나는데, 이는 수명이 거의 끝난 반도체 저장 장치(102)에는 적합하지만, 수명 초기의 반도체 저장 장치(102)에 대해서는 너무 가혹할 수 있다.
다양한 실시예에서 구성 적응화 모듈(512)은, 반도체 저장장치(102)의 사용 기간(절대 시간, 전원 온 시간, 사용자가 기입한 데이터량 등)을 기반으로 하여 데이터 리프레시 간격을 동적으로 조정하거나 적응시키고, 또는, 반도체 저장 장치(102)의 열화를 기반으로, 독출 방해 임계값(즉, 독출 방해 현상을 없애기 위해 데이터 리프레시를 행하기 전까지의 독출 작용의 실행 횟수)을 동적으로 조정하거나 적응시키고, 또는 반도체 저장 장치(102)의 사용 기간을 기반으로, 소거 블록 삭제 정책을 동적으로 조정하거나 적응시키고, 또는, 호스트의 작업부하(workload)를 기반으로, 반도체 저장장치(102)에 대한 가비지 취합 방법을 동적으로 조정하거나 적응시키고, 또는, 활성 및 비활성 데이터 사이 또는 반도체 저장 장치(102)의 사용 기간이 경과함에 따른 스크러빙(scrubbing)을 증대시키기 위한 스크러빙 간격 사이에서의 동작을 최소화하기 위한 활동량의 수준을 기반으로, 반도체 저장 장치(102)의 영역별 가비지 취합 방식을 동적으로 조정하거나 적응시킬 수 있다.
도 6a는 본 발명에 따른 N개의 저장요소(606)의 어레이(600) 실시예를 설명하는 블록도이다. 도면에 나타낸 실시예에서 ECC 청크(616)는 여러 저장요소(606)의 데이터(612)를 포함한다. 다른 실시예에서, ECC 청크(616)에 대한 ECC 검사비트는 또한 여러 저장요소(606)에 걸쳐서 저장된다.
일실시예에서, 저장요소(606)의 어레이(600)는 N 개의 저장요소(606a, 606b, 606c,..., 606n)를 포함한다. 각 저장요소(606)는 장치, 칩, 칩의 일부, 다이 등을 포함할 수 있다. 도면에 나타낸 실시예에서, 저장요소(606a~n)가 뱅크(602a)를 형성하고 있다. 일실시예에서 어레이(600)에는 다수의 뱅크(602a, ..., 602m)가 포함되어 있다. 도면에 나타낸 실시예에서, 뱅크(602a, ..., 602m)는 다수의 채널(604a, 604b, 604c, ..., 604n)을 포함한다. 일실시예에서, 패킷 또는 데이터 세트는 여러 채널(604a~n)에 걸쳐서 기입되고, 데이터는 각 채널(604a~n)로부터 별도로 독출되어 패킷으로 재구성된다. 또다른 실시예에서, ECC 청크(616), 패킷, 또는 데이터 세트는 여러 채널(604a~n)에 걸쳐 기입되고, 데이터는 모든 채널(604a~n)로부터 병렬로 독출된다. 뱅크(602)에서의 1회의 독출 동작으로 ECC 청크(616), 패킷, 또는 데이터 세트 모두, 또는 ECC 청크(616), 패킷, 또는 데이터 세트의 일부를 독출하여 ECC 청크(616), 패킷, 또는 데이터 세트 전체를 재구성할 수 있다. 도면에 나타낸 실시예에서, 각 채널은 각 뱅크(602)에 적어도 하나의 저장요소(606)를 포함하고 있다.
덧붙여, 일실시예에서 각 저장요소(606)에는 물리적 소거 블록 또는 "PEB"(608)가 포함되어 있다. 예를 들어, 저장요소1(606a)이 PEB1(608)을 포함한다. 물리적 소거 블록은 일반적으로, 하나의 다이, 칩, 또는 기타 저장요소(606)에 위치한 소거 블록이다. 각 PEB(608)에 m개의 물리적 페이지(610)가 포함되어 있다. 예를 들어, PEB1(608a)은 페이지0(610a) 내지 페이지m(614a)을 포함한다. 각 물리적 페이지(610a)는 일부의 데이터("D")(612) 및 이 데이터(612)와 함께 분포되는 ECC 검사비트를 저장한다.
일실시예에서, PEB 그룹(PEB1(608a)~PEBm(608m))은 논리적 소거 블록("LEB")을 형성하고 있다. LEB는 N개의 저장요소(600) 배열에 걸쳐있다. 또한, 일실시예에서는 논리적 페이지("LP")가 다수의 물리적 페이지(610)에 일려로 배열된다. 또다른 실시예에서, 논리적 페이지는 N개의 저장요소(606a~n)에 걸쳐 있다.
일실시예에서, ECC는 데이터와 함께 분포되는 블록 코드이다. 또한, 이 데이터 및 ECC가 특정 물리적 하드웨어의 경계와 전혀 일치하지 않을 수도 있다. 결론적으로 ECC 코드에 의한 오류 수정은 특정 하드웨어 구성에 의존하는 것이 아니다. 따라서 ECC와 해당 데이터가 ECC 청크(616)를 구성할 수 있고, ECC의 청크를 N개의 저장요소(606a~n) 중 하나 이상에 나누어 저장할 수 있다. ECC 청크(616)는 일반적으로, 데이터 및 데이터(612a, 612b, ... 612m)에서 생성된 ECC가 N 개의 저장요소(606a~n)에 분산되어 있는 논리적 페이지의 다수의 물리적 페이지(610) 중 적어도 일부에 걸쳐 있다. 일실시예에서, LP는 다수의 ECC 청크(616)를 포함한다. 물리적 페이지(610)는 ECC 청크(616)의 하나 이상의 데이터 바이트를 포함할 수 있다. ECC 청크(616)는 물리적 페이지(610) 내에서 여러 행으로 배열될 수 있고, 물리적 페이지(610)는 다수의 ECC 청크(616)를 포함할 수 있다.
도면에 나타낸 실시예에서, 하나 이상의 저장요소(606a~n)에서 발생하는 독출 전압의 변동으로 인해 데이터 오류가 발생할 때 ECC 청크(616)에 대한 ECC 검사비트는 여러 저장요소(606a~n) 및 채널(604a~n)에 걸쳐 분포되기 때문에, ECC 모듈(412)은 독출전압 임계값을 조정하여 수정가능한 오류를 어느 저장요소(606)가 갖고 있는지 확인할 수 없다. 일실시예에서, 분포 모듈(414)은 기지의 편향의 예상 분포 밖에 있는 독출 편향을 갖는 데이터를 어느 저장요소(606) 또는 채널(604)이 갖고 있는지 판단하고, 구성 모듈(352)은 분포 모듈(414)에 의해 판단된 저장요소(606)의 독출전압 임계값을 조정한다.
일실시예에서, 이탈 모듈(404), ECC 모듈(412) 및/또는 분포 모듈(414)은 데이터 세트가 오류를 갖는지 또는 기지의 편향에서 이탈된 독출 편향을 갖는지를 판단하고, 데이터 세트 소스 모듈(422)은 어느 저장요소(606)로부터 데이터 세트가 독출되었는지를 판단한다. 예를 들어, 일실시예에서, 어레이(600)는 24개의 채널(604)을 가질 수 있고, 독출 동작시에 1개의 뱅크(602)의 24개의 저장요소(606)로부터 병렬로 8 바이트를 독출하여 독출 동작 1회당 총 192바이트를 독출할 수 있다. 이 정보를 바탕으로, 일실시예에 따른 데이터 세트 소스 모듈(422)은 어느 저장요소(606)로부터 데이터 세트가 독출되었는지를 이 192 바이트 내의 8 바이트 데이터 세트의 위치를 이용하여 판단할 수 있다. 일실시예에서, 이 192 바이트가 ECC 청크(616)를 구성한다.
각 채널(604a~n)의 데이터의 독출 편향을 기지의 편향과 비교함으로써, 구성 모듈(352)은 특정 채널(들)에 대한 독출 전압의 변화로 발생하는 데이터 오류를 ECC 검사비트가 없이도 수정할 수 있다. 채널(604a~n)의 데이터의 독출 편향을 기지의 편향과 비교하지 않는다면, 채널들(604a~n)의 각각의 조합에 대해서 모든 가능한 독출전압 임계값 조정을 해야하기 때문에 많은 시행착오가 ㅇ요구될 것이다. 채널(604a~n)의 데이터의 독출 편향을 기지의 편향과 비교함으로써, 구성 모듈(352)은 조정해야 할 채널(604)을 정확하게 결정할 수 있게 된다. 또한, 해당 채널에 대한 이탈 방향을 판단함으로써, 구성 모듈(352)은 해당 채널에 대한 독출전압 임계값의 탐색 공간을 절반으로 감소시킨다.
적절히 조정된 독출전압 임계값을 위한 검색 공간의 잠재적 크기를 설명하기 위해, ECC 청크(616)(즉, 데이터 및 해당 ECC 검사비트를 모두 포함하는 ECC 코드워드)가 저장요소(606a~606n)에 저장된다고 가정하자. 또한, ECC 청크(616)가 저장되는 저장요소(606a~606n)의 어레이(600)는 각각 독립적으로 조절되는 독출전압 임계값을 갖고 있다고 가정하자. 예를 들어, 일실시예에서, 어레이(600)에 대한 독출전압 임계값 설정치의 다양한 조합의 개수는 수식 (1)로 주어진다.
Figure pat00001
위 식에서
Figure pat00002
는 채널(604a~n)의 개수, λ는 독출전압 임계값이 채널당 설정될 수 있는 전압레벨의 개수, x는 조정이 필요한 독출전압 임계값을 갖는 채널의 개수이다.
일실시예에서, 채널(604a~n)의 개수
Figure pat00003
까지의 모든 순열에 대해, 어레이(600)에 대한 독출전압 임계값 설정치의 다양한 조합의 수는 아래의 수식 (2)로 주어진다.
Figure pat00004
예를 들어, 수식 1을 사용할 경우, 24개의 채널(606a~n)이 있는 경우라면(즉,
Figure pat00005
=24), 각 채널(606) 당 8개의 가능한 독출전압 임계값 설정치를 갖게 되고(즉, λ=8), 24개의 채널(606a~n) 중 2개만 조정해야 할 전 독출전압 임계값을 갖게 되어(x=2), 독출전압 임계값 설정치의 조합은 총 17,644 가지가 있게 된다. 조정해야 할 독출전압 임계값을 갖는 채널(606)의 수가 3개로 늘어나면, 상기 조합의 개수는 1,036,288로 증가한다. 구성 모듈(352)은 어느 채널(606a~n)이 조정필요 독출전압 임계값을 갖는지 검출하여 상기 조합 개수를 크게 줄여 준다. 또한, 저장 군(storage grouping)에 있는 매체 상의 데이터의 기지의 편향을 현재의 편향과 비교함으로써, 독출전압 임계값을 조정하는 방향을 알게 된다. 독출전압 임계값을 조절하는 방향을 알게 되면, 데이터 오류를 갖고있는 것으로 판독된 채널에 있는 적절한 전압에 대해서 검색 공간이 크게 줄어든다.
결과적으로, 구성 모듈(352)이 기지의 편향을 이용하여 어느 채널이 조정해야 할 독출전압 임계값과 조정 방향을 갖는지 판단하기 때문에, 시도해볼 필요가 있는 조합수의 수가 x=2인 경우의 17,644가지에서 32가지로, 그리고 x=3인 경우의 1,036,288가지에서 256가지로 줄어든다. 그러나 이러한 조합 수를 모두 다 사용할 필요가 없을 수도 있다. 왜냐하면, 조정 작용은 반복적으로 이루어지기 때문에 어느 방향에 대해서 각 후속 조정을 해야하는지 데이터의 기지의 편향이 계속해서 알려주게 되어, 각 반복시에 잠정적으로 최소한 절반의 탐색 공간이 감축될 수 있기 때문이다. 적절한 조정된 독출전압 임계값을 신속하게 찾기 위하여 다양한 탐색 알고리즘을 사용할 수 있다(가령, 이진 탐색).
도 6b는 본 발명에 따른 N개의 저장요소(606)의 어레이(650) 실시예를 설명하는 블록도이다. 도면에 나타낸 실시예에서 어레이(650)는 도 6a의 어레이(600)와 거의 비슷하지만, ECC 청크(652)가 여러 저장요소(606a~n)에 걸쳐 있는 데이터를 포함하는 게 아니라, 하나의 저장요소(606a)에 있는 데이터(612a)를 포함하고 있다. 일실시예에서, ECC 청크(652)의 ECC 검사비트는 하나의 저장요소(606a)에 저장된다. 일실시예에서 각 저장요소(606a~n) 또는 채널(604a~n)이 각각 개별적으로 ECC 검사비트를 가지고 있기 때문에, ECC 모듈(412)은 개별 ECC 검사비트를 사용하여 어느 저장요소(606a~n) 또는 채널(604a~n)에서 오류가 발생했는지를 판단하고, 그리고, 구성 모듈(352)은 ECC 모듈(412)에 의해 판단된 특정 저장소 요소(들)(606)의 독출전압 임계값을 조정한다.
도 6c는 예제 인코딩 또는 프로그래밍 모델을 사용하여, MLC NAND 플래시 저장셀 등과 같은 다층 저장셀 세트에 대해 구성 파라미터(662a~c)를 구현한 예를 보여준다. 사용한 인코딩 모델에 본래부터 내재된 한계가 다른 모든 인코딩 모델에 반드시 적용되는 것이 아니며, 본 발명이 본질적으로 이러한 한계를 포함하는 것으로 해석하는 것은 바람직하지 못하다. 도시한 실시예에서, 독출전압의 상태는 그레이코드 인코딩 모델을 사용하여 인코딩하는데, 여기서 인접 상태에 대한 이진값은 인코딩 시에 단일 비트로써 분리시킨다.
도 6c에 도시한바, "11"의 값은 가장 낮은 독출전압 상태(L0, "소거" 상태임)와 연계되고, "01"은 그 다음으로 가장 낮은 독출전압 상태(L1)와 연계되고, "00"은 이보다는 더 높은 독출전압 상태(L2)에 연계되고, "10"은 가장 높은 독출전압 상태(L3)에 연계되어 있다. 도 6c에서 가장 낮은 독출전압 상태 L0는 음(마이너스) 전압으로 표시되어 있다. 독출전압 값, 크기, 폭 등은 제조자 및 반도체 저장셀의 종류에 따라 다를 수 있는데, 각각 본 발명에 포함된다. 도면에 나타낸 실시예에서, 구성 파라미터(662)가 위에서 설명한 상태 L0, L1, L2, L3을 분리시키는 독출전압 임계값이다. 반도체 저장 제어부(104)는 다층 저장셀에 저장된 전압의 4개의 이산값을 두 개의 이진수 비트로 표시하도록 번역한다. 두 비트 중 한 비트는 셀 인코딩시에 MSB로 표시되고, 다른 비트는 셀 인코딩시에 LSB로 표시된다. 위에서 설명한 바와 같이, 다른 프로그래밍 및 인코딩 모델도 사용할 수 있다. 또한 특정 반도체 저장매체(110)는 하나의 단층 저장셀에 저저장될 수 있는 두 개의 이진값보다 더 많은 상태가 될 수 있도록 네 가지 이사상의 상태를 가질 수도 있다. 전압 레벨 L0, L1, L2 및 L3은 연속될 수도 있고 연속되지 않을 수도 있다. 예를 들어 특정 실시예에서 전압 레벨을 가드 밴드(guard band)라 부르는 대역 간극(band gap)으로 분리한다. 예를 들어, L0와 L1을 0.3V로 분리할 수 있다.
일실시예에서, LSB는 데이터의 하위 페이지에 해당되고, MSB는 데이터의 상위 페이지에 해당된다. 특정 실시예에서 다층 저장셀은 MSB를 기입할 수 있게 되기 LSB를 기입해야 하는(또는 그 반대) 2 단계 프로그래밍 모델(추후 설명함)을 적용할 수도 있다. 또다른 실시예에서 LSB와 MSB를 반도체 저장 제어부(104)에 의해 개별적으로 프로그래밍할 수 있다. 이러한 접근 방식은 페이지 공유(page pairing)(즉, MLC의 LSB 비트를 다른 MLC의 MSB 비트와 공유함) 및 페이지 주소지정(page addressing)(즉, LSB 페이지는 MSB 페이지보다 먼저 프로그래밍 해야 함. 또는 그 반대로 해야 함)에 대한 판매자 및 제조자의 요구 사항에 따라 채택될 수 있다. 특정의 경우에, MSB를 기입하기 전에 LSB를 기입해야 하고, 또는, LSB를 기입하기 전에 MSB를 기입해야 한다.
특정 실시예에서, 반도체 저장매체(110)는 2 단계 프로그래밍 모델을 사용할 수 있다. 이러한 모델에서는 하위 페이지에 먼저 기입하라는 명령어를 통해 이진수 값을 LSB에 먼저 기입한다. 기입 명령에 의해서 다층 저장셀은 그 초기 상태(예를 들어, L0에서 11)로부터 후속적으로 00 상태가 독출되도록 설정되어 있는 중간 상태(L1과 L2 사이의 하위-중간 상태(LM 상태))로 바뀐다. 예를 들어, 하위페이지에 "0"을 기입하면 다층 저장셀은 L0 상태(LSB와 MSB가 모두 1)에서 L2 상태(LSB가 0으로 변경)로 바뀐다. 계속해서 상위 페이지에 "0"을 기입하면 다층 저장셀은 중간 상태(대개, L1 상태 및 L2 상태의 사이)로부터 MLC의 두 비트가 모두 "0"인 L2 상태로 바뀐다. 따라서 이러한 실시예에서, 중간 상태를 통해 저장셀이 전환되기 때문에 그리고 MLC 장치에서는 하위 페이지가 상위 페이지보다 먼저 프로그램되어야 하고 중간에 소거 작용이 없이는 페이지의 부분적인 프로그램이 허용되지 않기 때문에, L0에서 L2로 다층 셀을 변화시키는 데 두 번의 기입(즉, 상위 페이지에 한 번, 하위 페이지에 한 번)이 필요하다. 상위 페이지 또는 하위 페이지 중 하나에 "1"을 기입함으로써 MLC는 그 때의 하위 페이지의 이진 값에 따라 L1이나 L3 중 하나로 전환될 것이다. 또한, 특정 반도체 매체 판매자는 하위 페이지를 상위 페이지보다 먼저 기입해야 한다는 등의 요건을 부과할 수 있다. 다른 실시예에서 반도체 저장매체(110)는 상위 페이지에 먼저 기입하라는 명령어를 통해 이진값을 MSB에 먼저 기입하는 2 단계 프로그래밍 모델을 채택할 수 있다.
일실시예에서, 구성 모듈(352)은 다층 저장셀이 상위 페이지만 또는 하위 페이지만을 저장하는 이진수 데이터의 하위군을 기반으로, 하나 이상의 독출전압 임계값(662)을 조정한다. 이러한 실시예에서, LSB 비트(들)의 상태 변화를 조사함으로써 다층 저장셀 내의 전압이 변화하고 있는 방향을 알 수 있다. 비트 값의 그레이코드 인코딩(도 6c 참조) 및 이진 코드 인코딩 모두에 있어서, 다층 저장셀의 LSB는, 중간의 두 상태, 즉, 도면에 나타낸 실시예에서의 L1 상태와 L2 상태 사이에서 이진수 0과 이진수 1 사이에서 전환된다. 다른 인코딩 모델의 경우, MSB는 중간의 두 상태 사이에서 이진수 0과 이진수 1 사이에서 전환될 수 있다. 그레이 코드 또는 이진 코드 인코딩 모델의 경우, LSB는 낮은 범위(하위의 두 상태, 즉, L0 및 L1을 포함하는 범위)에서의 독출전압으로 "1"을 갖고, 높은 범위(상위의 두 상태, 즉, L2 및 L3을 포함하는 범위)에서의 독출전압으로 "0"을 갖는다. 일실시예에서, 구성 모듈(352)은 독출 편향이 기지의 편향에서 이탈되는지를 확인하기 위해 MLC 저장셀의 LSB만을 사용함으로써, SLC 저장셀에 있어서 독출 편향이 기지의 편향에서 이탈되는 것을 확인하기 위하여 LSB 데이터 세트 등의 이진수 1 및/또는 이진수 0을 세거나 자동계산(tally)하는 방식과 사실상 유사한 방식으로 확인을 할 수 있다.
다층 저장셀의 특정 유형의 경우, 중간 독출전압 임계값(662b) 및 인접한 L1, L2 상태는 독출전압을 이동시킬 수 있는 독출 방해 또는 다른 요인들에 보다 더 민감할 수 있다. 또한, 위에서 설명한 것과 같이, 특정 실시예에서, 단일 다층 저장셀의 LSB 및 MSB가 다른 물리적 페이지에 저장된 데이터를 나타낼 수 있다. 일실시예에서 다수의 다층 저장셀 각각의 단일 비트를 데이터 세트으로서 사용하여 데이터 세트를 검색하는 독출 작용의 횟수를 줄일 수 있다. 다른 실시예에서, 다수의 다층 저장셀 각각의 단일 비트를 하위 페이지에 사용함으로써, 다층 저장셀에 있어서의 기지의 편향에서 독출 편향이 이탈하는 것 및 그 방향을 검출하는 과정이 단순화된다.
일실시예에서, 방향 모듈(406)은 다층 저장셀의 하나 이상의 하위 페이지로부터의 데이터를 포함하는 데이터 세트를 기반으로 하여, 다층 저장셀군에 대한 이탈의 방향을 판단한다. 특정 실시예에서 하위 페이지가 LSB를 포함하기 때문에, 방향 모듈(406)은, LSB에 대한 저장셀 값들이 이진수 0에서 이진수 1로 전환되었다는 것을 표시하는, 하위 페이지에 대한 독출 편향과 하위 페이지에 대한 기지의 편향 사이의 차에 대한 응답으로서, 독출전압 임계값(662)이 보다 큰 독출전압 쪽으로 이탈하는 것을 판단한다. 이진수 1에서 이진수 0으로 전환하는 LSB에 있어서, 도 6c의 인코딩 모델을 사용하는 다층 저장셀에 대한 독출전압은 L0 또는 L1 상태 중 어느 하나로부터 L2 또는 L3 상태로 변해야 한다. 이것이 나타내는 것은 하나 이상의 독출전압 임계값(662)이 증가해서 독출전압을 다시 원래의 L0 또는 L1 상태로 되돌려야 한다는 것이다.
마찬가지로 특정 실시예에서 방향 모듈(406)은, LSB에 대한 저장셀 값들이 이진수 1에서 이진수 0으로 전환되었다는 것을 표시하는, 하위 페이지에 대한 독출 편향과 하위 페이지에 대한 기지의 편향 사이의 차에 대한 응답으로서, 독출전압 임계값(662)이 보다 작은 독출전압 쪽으로 이탈하는 것을 판단한다. 이진수 0에서 이진수 1로 전환하는 LSB에 있어서, 도 6c의 인코딩 모델을 사용하는 다층 저장셀에 대한 독출전압은 L3 또는 L2 상태 중 어느 하나로부터 L1 또는 L0 상태로 변해야 한다. 이것이 나타내는 것은 하나 이상의 독출전압 임계값(662)이 감소해서 독출전압을 다시 원래의 L3 또는 L2 상태로 되돌려야 한다는 것이다. 특정 실시예에서는 여러 상태에 걸쳐서의 이탈은 없을 수도 있으며, LSB를 사용하여 검출 가능한 이탈은 L1 및 L2 상태 사이에 있을 수 있는바, 이것은 어느 방향으로든지의 명확한 이탈 방향을 나타낸다.
또다른 실시예에서, 방향 모듈(406)은 반도체 저장매체(110)의 저장셀에 사용된 인코딩 형식, 반도체 저장매체(110)의 저장셀의 물리적 및/또는 전기적 구조 등을 적어도 부분적으로 기반하여, 이탈의 방향을 결정한다. 예를 들어, 도 6c의 인코딩 모델을 사용하는 경우 방향 모듈(406)은, 2 비트 MLC 저장매체 유형을 기반으로 하거나, 데이터 세트가 상위 페이지 또는 하위 페이지를 포함하는지 여부를 기반으로 하거나, 도시된 그레이코드 인코딩 형식을 기반으로 하거나, 판단된 이탈의 정도(크기)를 기반으로 하거나 하여 이탈의 방향을 결정할 수 있다. 다른 실시예에서, 방향 모듈(406)은 LSB 및 MSB를 별도의 또는 이종의 주소(가령, 다른 물리적 페이지 등)로부터 하나의 데이터 세트 내로 변형 또는 결합시키든지, 그렇지 않으면 LSB 및 MSB를 이용하여 이탈 방향을 판단할 수 있다.
특정 실시예에서 다층 저장셀에 저장되어 있는 각각의 비트를 사용하여 독출전압 임계값 조정을 판단함으로써 독출전압 임계값 조정의 정확도를 높일 수 있지만, 이 판단을 위해서 독출 작용의 횟수가 늘어나거나 복잡성이 커질 수 있다. 일실시예에서 ECC 디코더(322)가 다층 저장셀군의 상위 페이지에서 데이터 오류를 검출한다면, 데이터 세트 독출 모듈(402)은 상기 군에 해당되는 하나 이상의 하위 페이지를 검색하고 구성 모듈(352)은 이들 하위 페이지를 기반으로 이 군에 대한 독출전압 임계값을 조정한다.
도 6d는 반도체 저장매체(110)의 다층 저장셀 세트에 대하여 조정된 구성 파라미터(672a~c)를 나타낸다. 특정 실시예에서 도 6c의 구성 파라미터(662a~c)는 제조자나 판매자 등이 설정한 기본(디폴트) 파라미터이며, 구성 모듈(352) 및/또는 사전구성 모듈(424)은 이 기본 구성 파라미터(662a~c)를 조정 또는 구성하여, 조정된 구성 파라미터(672a~c)로 만든다.
조정된 구성 파라미터(672a~c)는 기본 구성 파라미터(662a~c)보다 도 6d의 저장셀 상태의 실제 분포에 보다 더 가깝게 일치한다. 해당 저장셀 세트가 도 6d의 저장셀 분포를 갖는 기본 구성 파라미터(662a~c)를 사용한다고 가정하면, 이 분포의 일부는 기본 구성 파라미터(662a~c)의 위치를 지나서 이동하게 될 것이기 때문에 데이터 오류가 발생하게 될 것이다. 조정된 구성 파라미터(672a~c)를 사용하도록 해당 저장셀 세트를 구성함으로써, 구성 모듈(352)은 잠재적인 데이터 오류를 방지, 회피, 또는 수정하게 된다.
일실시예에서, 구성 모듈(352)은 조정된 구성 파라미터(672a~c)를, 앞에서 설명한 것과 같이 이탈 모듈(404), 방향 모듈(406), 조정 모듈(408) 등을 사용하여 반응적으로(reactively) 결정한다. 또다른 실시예에서, 구성 모듈(352)은 조정된 구성 파라미터(672a~c)를, 해당 저장셀 세트에 대한 저장매체 특징에 기초하여, 앞에서 설명한 것과 같이 사전구성 모듈(424)을 사용하여 사전에(proactively) 결정한다.
도 7a는 매체특징 모듈(502) 및 저장매체 특징 저장소(702)의 일실시예를 도시한다. 도면에 나타낸 실시예에서, 매체특징 모듈(502)은 다수의 다른 저장셀 세트의 저장매체 특징을 저장매체 특징 저장소(702)에 저장하여 유지시킨다. 저장매체 특징 저장소(702)는 반도체 저장매체(110)의 저장셀 세트에 대한 저장매체 특징을 나타내는 항목을 저장한다. 저장매체 특징 저장소(702)는 하나 이상의 표, 행렬, 배열, 데이터베이스, 파일, 또는 기타 저장매체 특징을 저장하는 데이터 구조로써 구현될 수 있다.
매체특징 모듈(502)은, 반도체 저장매체(110)의 하나 이상의 메타데이터 영역, 또는 반도체 저장장치(120) 및/또는 컴퓨터(112)의 휘발성 메모리, 또는 컴퓨터(112)의 비휘발성 저장장치에 저장된 반도체 저장장치(102)용 구성 파일, 또는 반도체 저장 장치(102) 전용 비휘발성 저장장치 등에 저장매체 특징 저장소를 보관할 수 있다. 매체특징 모듈(502)은 저장매체 특징 저장소(702) 및/또는 저장매체 특징을 하나의 위치에 저장할 수도 있고, 여러 위치에 분할하여 저장할 수도 있다.
예를 들어, 일실시예에서, 매체특징 모듈(502)은, 제조자 또는 판매자가 프로그램해 놓은, 프로그램가능 독출 전용 메모리("PROM") 등에 있는 반도체 저장 장치(102)의 비휘발성 저장장치로부터, 반도체 저장 장치(102) 및/또는 반도체 저장매체(110)에 대한 정적 저장매체 특징(구성, 모델, 제조자, 제품 버전 등)에 액세스할 수 있다. 매체특징 모듈(502)은 반도체 저장장치(102) 및/또는 컴퓨터(112)의 휘발성 메모리, 반도체 저장매체(110)의 메타데이터 등에 있는 동적 저장매체 특징(프로그램/소거 사이클 수, 독출 수, 보존 시간, 온도, 사용례, 오류 통계자료 등)을 저장할 수 있다. 특정 실시예에서 만일 매체특징 모듈(502)이 휘발성 메모리에 매체 특징 저장소(702)의 적어도 일부를 보관하고 있다면, 매체특징 모듈(502)은 저장매체 특징 저장소(702)의 데이터를 반도체 저장매체(110) 또는 다른 비휘발성 저장장치로 주기적으로 저장한다. 이로써, 매체특징 모듈(502)은 정전이나 부적절한 전원차단 등에 대응하여 저장매체 특징 저장소(702)를 재건할 수 있게 된다.
도 7b는 저장매체 특징 저장소(702)의 또 다른 실시예를 도시한다. 저장매체 특징 저장소(702)에 다수의 저장셀 세트 항목(708)이 포함되어 있다. 도면에 나타낸 실시예에서, 저장셀 세트는 저장매체 영역(706)으로 구성되는데, 저장매체 특징 저장소(702)의 항목들(708)은 각 저장매체 영역(706) LEB 0 ~ LEB N에 기록된다. 도면에 나타낸 실시예에서는 저장매체 영역(706)을 위에서 설명한 것과 같이 논리적 소거 블록 LEB 0 ~ LEB N으로 설명하고 있지만, 다른 실시예에서는 저장매체 영역(706)을 물리적 소거 블록, 페이지, 논리적 페이지, ECC 청크, 페이지 내의 분할, 다이, 다이 평면, 칩 등을 포함할 수 있는 것으로 설명한다.
각 항목(708)은 해당 저장매체 영역(706)에 대한 저장매체 특징(704)을 추가로 포함한다. 도면에 나타낸 실시예에서, 저장매체 특징(704)은 프로그램/소거 사이클 수(704a), 독출 수(704b), 유지 시간(704c), 온도(704d), 및 비트 오류율(704e)을 포함한다. 특징 업데이트 모듈(508)은 위에서 설명한 것과 같이, 저장매체 특징 저장소(702)를 업데이트하는 매체특징 모듈(502)과 협력할 수 있다.
도 8a는 구성 파라미터 모듈(504) 및 구성 파라미터 저장소(802)의 일실시예를 도시한다. 도면에 나타낸 실시예에서 구성 파라미터 모듈(504)은 다수의 저장셀 세트에 대한 구성 파라미터를 구성 파라미터 저장소(802)에 저장하고 유지시킨다. 특정 실시예에서 구성 파라미터 저장소(802)는 저장매체 특징 저장소(702)와 통합되어 하나의 저장소(702)(802)가 될 수 있다. 구성 파라미터 저장소(802)는 반도체 저장매체(110)의 저장셀 세트에 대한 구성 파라미터를 나타내는 항목들을 저장한다. 구성 파라미터 저장소(802)는 하나 이상의 표, 행렬, 배열, 데이터베이스, 파일, 기타 구성 파라미터를 저장하는 다른 데이터 구조에 의해 구현할 수 있다.
도 8b는 구성 파라미터 저장소(802)의 다른 실시예를 도시한다. 구성 파라미터 저장소(802)는 다수의 저장셀 세트 항목(808)을 포함한다. 도면에 나타낸 실시예에서, 저장셀 세트는 저장매체 영역(706)에 의해 구성되며, 항목(808)은 LEB 0 ~ LEB N의 저장매체 영역(706)에 대응된다. 각 항목(808)은 해당 저장매체 영역(706)에 대한 구성 파라미터(804)를 추가로 포함한다. 도면에 나타낸 실시예에서, 구성 파라미터(804)는 독출전압 임계값 조정치(804a~c)를 포함하는데, 이들은 각각 독출값 R1(804a), 독출값 R2(804b), 독출값 R3(804c)이다. 이들 각 항목은 기본 독출 전압 임계값으로부터 16진 옵셋(hexadecimal offset)되어 있다.
도면에 나타낸 실시예에서는, 위에서 설명한 것처럼, 구성 파라미터(804)를 독출전압 임계값 조정치로서 설명하였지만, 다른 실시예에서는 구성 파라미터(804)를 저항률 임계값, 기입 또는 프로그램 임계값, 소거 임계값, 및/또는 기타, 반도체 저장매체(110)의 변경가능한 파라미터를 포함할 수 있는 것으로 설명한다. 위에서 설명한 것과 같이, 구성 파라미터(804)는 절대 데이터값, 데이터값의 옵셋 또는 조정치, 또는 다른 파라미터를 포함할 수 있다. 구성 업데이트 모듈(510)은 위에서 설명한 것처럼 구성 파라미터 저장소(802)를 업데이트하기 위해 구성 파라미터 모듈(504)과 협력할 수 있다.
플로우챠트 (FLOW CHART)
도 9는 반도체 저장매체(110)의 유용성을 개선하는 방법(900)의 일실시예를 도시하는 플로우챠트이다. 본 방법(900)이 시작되면 매체특징 모듈(502)은 반도체 저장매체(110)의 저장셀 세트에 대한 하나 이상의 저장매체 특징을 참조한다(902). 구성 파라미터 모듈(504)은 하나 이상 참조(902)한 저장매체 특징을 근거로, 저장셀 세트에 대한 구성 파라미터를 결정한다(904). 저장셀 구성 모듈(506)은 결정한(904) 구성 파라미터를 사용하는 저장셀 세트를 구성(906)하고, 본 방법(900)이 종료된다.
도 10은 반도체 저장매체(110)의 유용성을 개선하는 방법(1000)의 다른 실시예를 도시하는 플로우챠트이다. 본 방법(1000)이 시작되면, 특징 업데이트 모듈(508)은 반도체 저장매체(110)의 저장셀 세트에 대해 업데이트 이벤트가 발생했는지 여부를 판단한다(1002). 특징 업데이트 모듈(508)이 업데이트 이벤트가 발생한 것으로 판단하면(1002), 이 특징 업데이트 모듈(508)은 저장셀 세트에 대한 하나 이상의 저장매체 특징을 저장매체 특징 저장소(702)에 업데이트한다(1004). 업데이트 이벤트가 발생하지 않은 것으로 특징 업데이트 모듈(508)이 판단하면(1002), 특징 업데이트 모듈(508)은 저장셀 세트에 대한 하나 이상의 저장매체 특징을 업데이트(1004)하지 않는다.
특징 업데이트 모듈(508)이 하나 이상의 저장매체 특징을 업데이트(1004)하면, 구성 업데이트 모듈(510)은 저장셀 세트에 대한 하나 이상의 저장매체 특징에 변화가 있는지 여부를 판단한다(1006). 구성 업데이트 모듈(510)이 저장셀 세트에 대한 하나 이상의 저장매체 특징에 변화가 있다고 판단(1006) 하면, 매체특징 모듈(502)은 저장셀 세트에 대한 하나 이상의 저장매체 특징을 참조하고(1008), 구성 파라미터 모듈(504) 및/또는 구성 업데이트 모듈(510)은 저장셀 세트에 대한 구성 파라미터를 결정/업데이트한다(1010). 구성 업데이트 모듈(510)이 저장셀 세트에 대한 하나 이상의 저장매체 특징에 변화가 없다고 판단하면(1006), 본 방법(1000)은 상기 참조 단계(1008)와 결정/업데이트 단계(1010)를 건너 뛴다.
저장셀 구성 모듈(506)이 저장셀 세트에 대해 구성 트리거가 발생했는지 여부를 판단한다(1012). 저장셀 구성 모듈(506)이 구성 트리거가 발생했음을 판단하면(1012), 저장셀 구성 모듈(506)은 결정/업데이트된(1010) 구성 파라미터를 사용하는 저장셀 세트를 구성하고(1014), 본 방법(1000)은 처음으로 돌아가 반복된다. 저장셀 구성 모듈(506)이 구성 트리거가 발생하지 않은 것으로 판단하면(1012), 그대로 본 방법(1000)은 처음으로 돌아가서 반복된다.
본 발명은 발명 사상이나 본질적인 특징에서 벗어니지 않은 상태로 다른 특정 형태로 구현가능하다. 이상에서 설명한 실시예는 모든 측면에서 한정적이지 않은 예시적인 것으로 참작해야 한다. 따라서 본 발명의 범위는 첨부한 특허청구범위에 의해 정해지는 것이지 위에서 설명한 것으로 정해지는 것이 아니다. 특허청구범위와 등가의 의미 및 범위 내에서 이루어지는 모든 변경사항은 본 발명의 범위에 포함되어야 한다.
100: 본 발명에 따른 반도체 저장매체(110)의 유용성 개선을 위한 시스템
200: 반도체 저장장치(102)에 기입데이터 파이프라인(106) 및 독출데이터 파이프라인(108)이 포함되어 있는 반도체 저장장치 제어기
300: 반도체 저장장치(102) 내에 있는, 기입데이터 파이프라인(write data pipeline)(106) 및 독출데이터 파이프라인(read data pipeline)(108)을 갖는 반도체 저장 제어부
301: 반도체 저장 제어부(104)의 다른 실시예
356: 센서
600: N개의 저장요소(606)의 어레이 구조
650: N개의 저장요소(606)의 어레이 구조
662a~c: 다층 저장셀 세트에 대한 구성 파라미터
672a~c: 다층 저장셀 세트에 대한 조정된 구성 파라미터
700: 매체특징 모듈(502) 및 저장매체 특징 저장소(702)의 일실시예
702: 저장매체 특징 저장소
708: 다수의 저장셀 세트 항목
800: 구성 파라미터 모듈(504) 및 구성 파라미터 저장소(802)의 일실시예
802: 구성 파라미터 저장소
808: 다수의 저장셀 세트 항목
900: 본 방법의 플로우챠트
1000: 본 방법의 플로우챠트

Claims (23)

  1. 반도체 저장매체를 운용하는 방법으로서,
    반도체 저장매체의 저장셀 세트에 대한 하나 이상의 저장매체 특징을 참조하는 과정,
    상기 하나 이상의 저장매체 특징에 근거하여, 상기 저장셀 세트에 대한 구성 파라미터를 결정하는 과정, 및
    상기 결정된 구성 파라미터를 사용하는 저장셀 세트를 구성하는 과정을 포함하며,
    상기 구성 파라미터는 인터페이스를 통해 변경 가능한 저장셀 세트의 파라미터를 포함하는 것을 특징으로 하는, 반도체 저장매체를 운용하는 방법.
  2. 제1항에 있어서, 업데이트 이벤트에 대한 응답으로서, 상기 저장셀 세트에 대한 하나 이상의 저장매체 특징을 업데이트하는 과정을 더 포함하는 것을 특징으로 하는, 반도체 저장매체를 운용하는 방법.
  3. 제2항에 있어서, 상기 업데이트 이벤트는, 상기 저장셀 세트, 상기 저장셀 세트에 대한 독출 요청, 상기 저장셀 세트에 인접한 저장셀에 대한 독출 요청, 상기 저장셀 세트를 포함하는 장치의 개시 작용, 상기 저장셀 세트를 포함하는 장치의 종료 작용, 및 상기 저장셀 세트에 대한 가비지 취합 작용을 포함하는 반도체 저장매체의 하나 이상의 배경 스캔(background scan)을 포함하는 것을 특징으로 하는, 반도체 저장매체를 운용하는 방법.
  4. 제1항에 있어서, 상기 하나 이상의 저장매체 특징의 변화에 대한 응답으로서, 상기 저장셀 세트에 대한 상기 구성 파라미터를 업데이트하는 과정을 더 포함하는 것을 특징으로 하는, 반도체 저장매체를 운용하는 방법.
  5. 제1항에 있어서, 다수의 서로 다른 저장셀 세트에 대한 저장매체 특징을 근거로, 반도체 저장매체의 상기 다수의 서로 다른 저장셀 세트에 대한 다수의 추가 구성 파라미터를 결정하는 과정과, 상기 다수의 추가 구성 파라미터를 사용하는 상기 다수의 서로 다른 저장셀 세트를 구성하는 과정을 더 포함하는 것을 특징으로 하는, 반도체 저장매체를 운용하는 방법.
  6. 제1항에 있어서, 상기 구성 파라미터는, 독출 전압, 증가형 계단 펼스를 이용한 프로그래밍 작용에서의 펄스 계단의 크기, 증가형 계단 펼스를 이용한 프로그래밍 작용의 최대 반복실행 수, 프로그래밍 작용에 사용되는 프로그래밍 검증 임계값, 증가형 계단 펄스를 이용한 프로그래밍 작용 실행시의 초기 편향, 증가형 계단 펼스를 이용한 소거 작용에서의 펄스 계단의 크기, 증가형 계단 펼스를 이용한 소거 작용의 최대 반복실행 수, 소거 작용에 사용되는 소거 검증 임계값, 및 증가형 계단 펄스를 이용한 소거 작용 실행시의 초기 편향을 포함하는 그룹에서 선택되는 것을 특징으로 하는, 반도체 저장매체를 운용하는 방법.
  7. 제1항에 있어서, 상기 결정된 구성 파라미터를 사용하는 상기 저장셀 세트를 구성하는 과정은, 트리거에 대한 응답으로서 상기 결정된 구성 파라미터를 사용하는 상기 저장셀 세트를 구성하는 과정을 더 포함하는 것을 특징으로 하는, 반도체 저장매체를 운용하는 방법.
  8. 제7항에 있어서, 상기 트리거는 상기 하나 이상의 저장매체 특징의 변화, 상기 저장셀 세트에 대한 독출 요청, 상기 저장셀 세트를 포함하는 장치에 대한 개시 작용, 및 상기 저장셀 세트를 포함하는 장치에 대한 정상적인 종료 작용 중 하나를 포함하는 것을 특징으로 하는, 반도체 저장매체를 운용하는 방법.
  9. 제1항에 있어서, 상기 하나 이상의 저장매체 특징은 상기 저장셀 세트에 대한 프로그램/소거 사이클 수, 상기 저장셀 세트에 대한 독출 수, 상기 저장셀 세트에 대한 이전의 기입 이후의 보존 시간, 상기 저장셀 세트에 대한 온도, 상기 저장셀 세트에 대한 사용례, 및 상기 저장셀 세트에 대한 오류 통계자료 중 하나 이상을 포함하는 것을 특징으로 하는, 반도체 저장매체를 운용하는 방법.
  10. 제1항에 있어서, 상기 결정된 구성 파라미터는, 조절된 사용 특징을 갖는 목표 저장셀 세트에 근거하는 것을 특징으로 하는, 반도체 저장매체를 운용하는 방법.
  11. 제10항에 있어서, 상기 저장셀 세트에 대해 결정된 상기 구성 파라미터는, 상기 목표 저장셀 세트에 대해 결정된 구성 파라미터, 및 상기 목표 저장셀 세트에 대한 하나 이상의 저장매체 특징 중 하나를 기반으로 하는 것을 특징으로 하는, 반도체 저장매체를 운용하는 방법.
  12. 제10항에 있어서, 상기 저장셀 세트에 대하여 상기 구성 파라미터를 결정하는 과정은,
    상기 저장셀 세트에 대한 상기 하나 이상의 저장매체 특징 중 적어도 하나를 상기 목표 저장셀 세트에 대한 적어도 하나의 저장매체 특징과 비교하는 과정, 및
    상기 저장셀 세트에 대한 상기 적어도 하나의 저장매체 특징과 상기 목표 저장셀 세트에 대한 상기 적어도 하나의 저장매체 특징 사이의 차이에 근거하여, 상기 저장셀 세트에 대한 상기 구성 파라미터를 결정하는 과정을 포함하는 것을 특징으로 하는, 반도체 저장매체를 운용하는 방법.
  13. 반도체 저장매체를 운용하는 장치에 있어서,
    반도체 저장매체의 저장셀 세트에 대한 하나 이상의 저장매체 특징을 참조하는 매체특징 모듈,
    상기 하나 이상의 저장매체 특징에 근거하여, 상기 저장셀 세트에 대한 구성 파라미터를 결정하는 구성 파라미터 모듈, 및
    상기 결정된 구성 파라미터를 사용하는 상기 저장셀 세트를 구성하는 저장셀 구성 모듈을 포함하며,
    상기 저장셀 구성 모듈은, 저장셀 세트의 인터페이스를 이용하여 상기 저장셀 세트를 구성하는 것을 특징으로 하는, 반도체 저장매체를 운용하는 장치.
  14. 제13항에 있어서, 업데이트 이벤트에 대한 응답으로서, 상기 저장셀 세트에 대한 상기 하나 이상의 저장매체 특징을 업데이트하는 특징 업데이트 모듈을 더 포함하는 것을 특징으로 하는, 반도체 저장매체를 운용하는 장치.
  15. 제13항에 있어서, 상기 하나 이상의 저장매체 특징의 변화에 대한 응답으로서, 상기 저장셀 세트에 대한 상기 구성 파라미터를 업데이트하는 구성 업데이트 모듈을 더 포함하는 것을 특징으로 하는, 반도체 저장매체를 운용하는 장치.
  16. 제13항에 있어서, 상기 매체특징 모듈은 반도체 저장매체의 다수의 서로 다른 저장셀 세트에 대한 저장매체 특징을 포함하고 있는 저장매체 특징 저장소에 상기 저장셀 세트에 대한 상기 하나 이상의 저장매체 특징을 유지시키는 것을 특징으로 하는, 반도체 저장매체를 운용하는 장치.
  17. 제13항에 있어서, 상기 구성 파라미터 모듈은 반도체 저장매체의 다수의 서로 다른 저장셀 세트에 대한 구성 파라미터를 포함하고 있는 저장매체 특징 저장소에 상기 저장셀 세트에 대한 상기 하나 이상의, 결정된 구성 파라미터를 유지시키는 것을 특징으로 하는, 반도체 저장매체를 운용하는 장치.
  18. 제13항에 있어서, 상기 하나 이상의 저장매체 특징은 상기 저장셀 세트에 대한 프로그램/소거 사이클 수, 상기 저장셀 세트에 대한 독출 수, 상기 저장셀 세트에 대한 이전의 기입 이후의 보존 시간, 상기 저장셀 세트에 대한 온도, 상기 저장셀 세트에 대한 사용례, 및 상기 저장셀 세트에 대한 오류 통계자료 중 하나 이상을 포함하는 것을 특징으로 하는, 반도체 저장매체를 운용하는 장치.
  19. 반도체 저장매체를 운용하는 시스템으로서,
    반도체 저장매체를 포함하는 반도체 저장장치,
    상기 반도체 저장매체의 저장셀 세트에 대한 하나 이상의 저장매체 특징을 참조하는 매체특징 모듈,
    상기 하나 이상의 저장매체 특징에 근거하여, 상기 저장셀 세트에 대한 구성 파라미터를 결정하는 구성 파라미터 모듈, 및
    상기 결정된 구성 파라미터를 사용하는 상기 저장셀 세트를 구성하는 저장셀 구성 모듈을 포함하며,
    상기 저장셀 구성 모듈은, 저장셀 세트의 인터페이스를 이용하여 상기 저장셀 세트를 구성하는 것을 특징으로 하는, 반도체 저장매체를 운용하는 시스템.
  20. 제19항에 있어서, 상기 반도체 저장장치와 통신하는 호스트 장치를 더 포함하고, 상기 매체특징 모듈, 상기 구성 파라미터 모듈, 및 상기 저장셀 구성 모듈 중 하나 이상의 적어도 일부분은 상기 호스트 장치에 설치된 상기 반도체 저장장치용 장치 드라이버의 일부인 것을 특징으로 하는, 반도체 저장매체를 운용하는 시스템.
  21. 제1항에 있어서, 상기 하나 이상의 저장매체 특징은 상기 저장셀 세트의 사용기간(age)를 포함하는 것을 특징으로 하는, 반도체 저장매체를 운용하는 방법.
  22. 제13항에 있어서, 상기 하나 이상의 저장매체 특징은 상기 저장셀 세트의 사용기간(age)를 포함하는 것을 특징으로 하는, 반도체 저장매체를 운용하는 장치.
  23. 제19항에 있어서, 상기 하나 이상의 저장매체 특징은 상기 저장셀 세트의 사용기간(age)를 포함하는 것을 특징으로 하는, 반도체 저장매체를 운용하는 시스템.
KR20150026666A 2011-07-22 2015-02-25 반도체 저장매체에 대한 구성 파라미터를 결정하는 장치, 시스템, 및 방법 KR20150030226A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/189,402 US8380915B2 (en) 2010-01-27 2011-07-22 Apparatus, system, and method for managing solid-state storage media
US13/189,402 2011-07-22

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020120080003A Division KR101755730B1 (ko) 2011-07-22 2012-07-23 반도체 저장매체에 대한 구성 파라미터를 결정하는 장치, 시스템, 및 방법

Publications (1)

Publication Number Publication Date
KR20150030226A true KR20150030226A (ko) 2015-03-19

Family

ID=47115196

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020120080003A KR101755730B1 (ko) 2011-07-22 2012-07-23 반도체 저장매체에 대한 구성 파라미터를 결정하는 장치, 시스템, 및 방법
KR20150026666A KR20150030226A (ko) 2011-07-22 2015-02-25 반도체 저장매체에 대한 구성 파라미터를 결정하는 장치, 시스템, 및 방법

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020120080003A KR101755730B1 (ko) 2011-07-22 2012-07-23 반도체 저장매체에 대한 구성 파라미터를 결정하는 장치, 시스템, 및 방법

Country Status (4)

Country Link
EP (1) EP2549482B1 (ko)
JP (2) JP5789226B2 (ko)
KR (2) KR101755730B1 (ko)
CN (1) CN102890621B (ko)

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2549482B1 (en) * 2011-07-22 2018-05-23 SanDisk Technologies LLC Apparatus, system and method for determining a configuration parameter for solid-state storage media
US8874863B2 (en) 2011-08-01 2014-10-28 Actifio, Inc. Data replication system
KR102131802B1 (ko) * 2013-03-15 2020-07-08 삼성전자주식회사 비휘발성 메모리 장치의 데이터 독출 방법, 비휘발성 메모리 장치, 및 메모리 시스템의 구동 방법
US20140359202A1 (en) * 2013-05-31 2014-12-04 Western Digital Technologies, Inc. Reading voltage calculation in solid-state storage devices
US9218890B2 (en) * 2013-06-03 2015-12-22 Sandisk Technologies Inc. Adaptive operation of three dimensional memory
KR102164630B1 (ko) * 2013-06-28 2020-10-12 삼성전자주식회사 메모리 컨트롤러 및 상기 메모리 컨트롤러의 동작 방법
US9619324B2 (en) * 2013-09-27 2017-04-11 Intel Corporation Error correction in non—volatile memory
WO2015074033A1 (en) * 2013-11-18 2015-05-21 Madhav Mutalik Copy data techniques
KR102187643B1 (ko) * 2013-12-04 2020-12-08 삼성전자주식회사 메모리 시스템 및 그것을 포함하는 유저 장치
CN107037984B (zh) * 2013-12-27 2019-10-18 威盛电子股份有限公司 数据储存装置及其数据写入方法
US9582354B2 (en) * 2014-01-28 2017-02-28 Infineon Technologies Ag Apparatus and method for improving data storage by data inversion
US9898201B2 (en) 2014-03-24 2018-02-20 Hitachi, Ltd. Non-volatile memory device, and storage apparatus to reduce a read retry occurrence frequency and prevent read performance from lowering
CN105138472B (zh) * 2014-06-06 2018-06-26 华为技术有限公司 闪存磨损优化方法及设备
KR102293082B1 (ko) * 2014-07-29 2021-08-26 삼성전자주식회사 저장 장치, 저장 장치의 동작 방법, 및 저장 장치를 액세스하는 액세스 방법
US9362000B2 (en) 2014-09-05 2016-06-07 Kabushiki Kaisha Toshiba Memory system and management method thereof
US10552043B2 (en) 2014-09-09 2020-02-04 Toshiba Memory Corporation Memory system
US10235056B2 (en) * 2014-09-26 2019-03-19 Western Digital Technologies, Inc. Storage device health diagnosis
US20160093397A1 (en) * 2014-09-30 2016-03-31 Emc Corporation Method and system for improving flash storage utilization using read-threshold tables
FR3028373A1 (fr) * 2014-11-07 2016-05-13 Orange Delegation d'intermediation sur un echange de donnees chiffrees.
US9785383B2 (en) 2015-03-09 2017-10-10 Toshiba Memory Corporation Memory system and method of controlling nonvolatile memory
EP3285492B1 (en) * 2015-04-13 2021-06-02 Sony Corporation Reproduction device and reproduction method
US9659637B2 (en) * 2015-08-11 2017-05-23 Western Digital Technologies, Inc. Correlating physical page addresses for soft decision decoding
CN106779008A (zh) * 2015-11-23 2017-05-31 杭州海康威视数字技术股份有限公司 Sd卡、摄像机和sd卡可靠性预警系统
US10204043B2 (en) 2016-03-08 2019-02-12 Toshiba Memory Corporation Memory controller, method of controlling nonvolatile memory and memory system
TWI587304B (zh) * 2016-03-09 2017-06-11 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置
US20170272073A1 (en) * 2016-03-18 2017-09-21 Altera Corporation Dynamic parameter operation of an fpga
KR20170111649A (ko) * 2016-03-29 2017-10-12 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR20170120741A (ko) * 2016-04-21 2017-11-01 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR20180017608A (ko) * 2016-08-10 2018-02-21 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법
CN106775491B (zh) * 2016-12-30 2019-05-31 北京联想核芯科技有限公司 数据处理方法及存储设备
US9747158B1 (en) * 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US10403366B1 (en) 2017-04-28 2019-09-03 EMC IP Holding Company LLC Method and system for adapting solid state memory write parameters to satisfy performance goals based on degree of read errors
US10545685B2 (en) * 2017-08-30 2020-01-28 Micron Technology, Inc. SLC cache management
US10096370B1 (en) * 2017-08-31 2018-10-09 Micron Technology, Inc. Voltage degradation aware NAND array management
US10269422B2 (en) * 2017-09-08 2019-04-23 Cnex Labs, Inc. Storage system with data reliability mechanism and method of operation thereof
US10936205B2 (en) 2017-10-05 2021-03-02 International Business Machines Corporation Techniques for retention and read-disturb aware health binning
US10332580B2 (en) * 2017-10-12 2019-06-25 Nanya Technology Corporation DRAM and method for determining binary logic using a test voltage level
CN107911414B (zh) * 2017-10-20 2020-10-20 英业达科技有限公司 数据存取系统
US10719394B2 (en) * 2017-10-25 2020-07-21 Innogrit Technologies Co., Ltd. Systems and methods for fast access of non-volatile storage devices
US10824352B2 (en) 2017-12-06 2020-11-03 International Business Machines Corporation Reducing unnecessary calibration of a memory unit for which the error count margin has been exceeded
KR102421103B1 (ko) * 2018-01-04 2022-07-14 에스케이하이닉스 주식회사 컨트롤러, 이를 포함하는 메모리 시스템 및 그것들의 동작 방법
US11132133B2 (en) 2018-03-08 2021-09-28 Toshiba Memory Corporation Workload-adaptive overprovisioning in solid state storage drive arrays
US10475519B2 (en) 2018-03-23 2019-11-12 Micron Technology, Inc. Methods for detecting and mitigating memory media degradation and memory devices employing the same
US10699791B2 (en) 2018-08-24 2020-06-30 International Business Machines Corporation Adaptive read voltage threshold calibration in non-volatile memory
US10789126B2 (en) 2018-10-09 2020-09-29 Micron Technology, Inc. Multiple memory devices having parity protection
CN109491606B (zh) * 2018-11-01 2021-10-15 郑州云海信息技术有限公司 一种全闪存储空间管理方法、系统、设备及计算机介质
KR20200060155A (ko) * 2018-11-22 2020-05-29 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
CN109741783A (zh) * 2018-12-19 2019-05-10 山东华芯半导体有限公司 一种选择最佳NAND Flash读操作电平的方法
CN111522500A (zh) * 2019-02-01 2020-08-11 睿宽智能科技有限公司 重复读取方法
JP2022522437A (ja) * 2019-04-30 2022-04-19 長江存儲科技有限責任公司 コントローラ、機器および方法
CN110275677B (zh) 2019-05-22 2022-04-12 华为技术有限公司 硬盘格式转换方法、装置及存储设备
US11404131B2 (en) 2019-07-12 2022-08-02 Micron Technology, Inc. Decision for executing full-memory refresh during memory sub-system power-on stage
US11188244B2 (en) * 2020-04-14 2021-11-30 Micron Technology, Inc. Adjusting trim settings to improve memory performance or reliability
CN112068895B (zh) * 2020-08-10 2023-12-19 深圳市鼎盛光电有限公司 代码配置方法、装置、视频播放设备及存储介质
CN114333965B (zh) * 2020-09-30 2023-09-08 长鑫存储技术有限公司 存储器和存储器的测试方法
US20220244870A1 (en) * 2021-02-03 2022-08-04 Alibaba Group Holding Limited Dynamic memory coherency biasing techniques
EP4310846A1 (en) * 2022-07-05 2024-01-24 Samsung Electronics Co., Ltd. Storage controllers, operating methods of storage controllers, and operating methods of storage devices including storage controllers
CN116089320B (zh) * 2022-08-31 2023-10-20 荣耀终端有限公司 垃圾回收方法和相关装置

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03288948A (ja) * 1990-04-05 1991-12-19 Matsushita Electric Ind Co Ltd 磁気記録再生装置
TW338165B (en) * 1996-09-09 1998-08-11 Sony Co Ltd Semiconductor nand type flash memory with incremental step pulse programming
JP2003242787A (ja) * 2002-02-14 2003-08-29 Mitsubishi Electric Corp 不揮発性半導体記憶装置
KR100550789B1 (ko) * 2002-07-18 2006-02-08 주식회사 하이닉스반도체 플래시 메모리 소자의 프로그램/소거 전압 공급 회로
US7173852B2 (en) 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
US7359231B2 (en) * 2004-06-30 2008-04-15 Intel Corporation Providing current for phase change memories
US7408810B2 (en) 2006-02-22 2008-08-05 Micron Technology, Inc. Minimizing effects of program disturb in a memory device
JP2008047273A (ja) * 2006-07-20 2008-02-28 Toshiba Corp 半導体記憶装置およびその制御方法
KR100926475B1 (ko) * 2006-12-11 2009-11-12 삼성전자주식회사 멀티 비트 플래시 메모리 장치 및 그것의 프로그램 방법
KR100907218B1 (ko) * 2007-03-28 2009-07-10 삼성전자주식회사 읽기 레벨 제어 장치 및 그 방법
US7957187B2 (en) * 2008-05-09 2011-06-07 Sandisk Corporation Dynamic and adaptive optimization of read compare levels based on memory cell threshold voltage distribution
ATE539403T1 (de) * 2008-06-24 2012-01-15 Sandisk Il Ltd Verfahren und vorrichtung zur fehlerkorrektur nach der löschanzahl eines festkörperspeichers
CN101727293B (zh) * 2008-10-23 2012-05-23 成都市华为赛门铁克科技有限公司 一种固态硬盘ssd存储的设置方法、装置和系统
KR101541812B1 (ko) * 2008-11-19 2015-08-06 삼성전자주식회사 비휘발성 메모리 장치
US8072805B2 (en) 2009-08-18 2011-12-06 Skymedi Corporation Method and system of finding a read voltage for a flash memory
JP5349256B2 (ja) * 2009-11-06 2013-11-20 株式会社東芝 メモリシステム
EP2549482B1 (en) * 2011-07-22 2018-05-23 SanDisk Technologies LLC Apparatus, system and method for determining a configuration parameter for solid-state storage media

Also Published As

Publication number Publication date
JP5789226B2 (ja) 2015-10-07
KR20130012062A (ko) 2013-01-31
JP2015079495A (ja) 2015-04-23
JP2013025821A (ja) 2013-02-04
EP2549482B1 (en) 2018-05-23
CN102890621B (zh) 2016-06-29
KR101755730B1 (ko) 2017-07-07
CN102890621A (zh) 2013-01-23
EP2549482A1 (en) 2013-01-23

Similar Documents

Publication Publication Date Title
KR101755730B1 (ko) 반도체 저장매체에 대한 구성 파라미터를 결정하는 장치, 시스템, 및 방법
US8380915B2 (en) Apparatus, system, and method for managing solid-state storage media
US9208897B2 (en) Configuring storage cells
US8982619B2 (en) Managing non-volatile media
US8315092B2 (en) Apparatus, system, and method for determining a read voltage threshold for solid-state storage media
US10656993B2 (en) Apparatus, system, and method to increase data integrity in a redundant storage system
US9424930B2 (en) Apparatus, system, and method for non-volatile storage element programming
US9595318B2 (en) Reduced level cell mode for non-volatile memory
US8892980B2 (en) Apparatus, system, and method for providing error correction
EP2297742B1 (en) Apparatus, system, and method for detecting and replacing failed data storage
US8074011B2 (en) Apparatus, system, and method for storage space recovery after reaching a read count limit
CN113297096A (zh) 用于固态存储装置服务质量的可变读取扫描

Legal Events

Date Code Title Description
A107 Divisional application of patent
N231 Notification of change of applicant
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
E902 Notification of reason for refusal