데이터 저장 시스템에서 심볼 빈도 레벨링

申请号 KR1020057003496 申请日 2003-08-29 公开(公告)号 KR1020050067142A 公开(公告)日 2005-06-30
申请人 샌디스크 엘엘씨; 发明人 공워,제프리,에스.; 그로스,스테판,제이.;
摘要 Methods and apparatus for transforming data into a format which may be efficiently stored in a non-volatile memory are disclosed. According to one aspect of the present invention, a method for storing information of a first data format in a memory system includes generating statistics associated with the first data format, and transforming the information from the first data format to a second data format using the statistics. Once the information is transformed into the second data format, the information is stored into a memory. Storing the information in the second data format in the memory includes storing an identifier that identifies a transformation used to transform the information to the second data format. In one embodiment, costs associated with storing the information in the second data format are less than or equal to costs associated with storing the information in the first data format.
权利要求
  • 제1 데이터 포맷으로 저장되는 정보를 메모리 시스템에 저장하는 방법으로서,
    상기 제1 데이터 포맷과 관련된 통계를 발생시키는 단계;
    상기 통계를 사용하여 정보를 상기 제1 데이터 포맷으로부터 제2 데이터 포맷으로 변환시키는 단계; 및,
    상기 정보를 상기 제1 데이터 포맷으로부터 상기 제2 데이터 포맷으로 변환시키는데 사용되는 변환을 나타내는 식별자를 상기 메모리에 저장하는 단계를 포함하는 상기 제2 데이터 포맷의 정보를 상기 메모리 시스템과 관련된 메모리에 저장하는 단계를 포함하는 정보를 메모리 시스템에 저장하는 방법 .
  • 제1항에 있어서, 상기 제1 데이터 포맷은 적어도 하나의 제1 심볼의 발생을 포함하고, 상기 제1 데이터 포맷과 관련된 상기 통계를 발생시키는 단계는:
    상기 제1 데이터 포맷의 제1 심볼의 밀도를 결정하는 단계를 포함하는데, 상기 밀도를 결정하는 단계는 상기 제1 데이터 포맷의 상기 제1 심볼의 발생과 관련된 수치값을 결정하는 단계를 포함하며, 상기 수치값은 상기 밀도를 나타내는 정보를 메모리 시스템에 저장하는 방법.
  • 제2항에 있어서, 상기 통계를 사용하여 상기 정보를 상기 제1 데이터 포맷으로부터 상기 제2 데이터 포맷으로 변환시키는 단계는:
    상기 정보 내에서 상기 제1 심볼의 밀도를 감소시키기 위하여 상기 정보를 상기 제1 데이터 포맷으로부터 상기 제2 데이터 포맷으로 변환시키는 단계를 포함하는 정보를 메모리 시스템에 저장하는 방법.
  • 제1항에 있어서, 상기 제1 데이터 포맷과 관련된 상기 통계를 발생시키는 단계는:
    상기 제1 데이터 포맷의 제1 심볼의 밀도를 결정하는 단계를 포함하는데, 상기 밀도를 결정하는 단계는 상기 제1 데이터 포맷의 제1 심볼의 발생과 관련된 퍼센티지를 결정하는 단계를 포함하는 정보를 메모리 시스템에 저장하는 방법.
  • 제4항에 있어서, 상기 통계를 사용하여 상기 정보를 상기 제1 데이터 포맷으로부터 상기 제2 데이터 포맷으로 변환시키는 단계는:
    상기 정보 내에서 상기 제1 심볼의 밀도를 증가시키기 위하여 상기 정보를 상기 제1 데이터 포맷으로부터 상기 제2 데이터 포맷으로 변환시키는 단계를 포함하는 정보를 메모리 시스템에 저장하는 방법.
  • 제1항에 있어서, 상기 제1 데이터 포맷의 정보를 상기 메모리 시스템상에서 수신하는 단계는:
    상기 메모리 시스템과 통신하는 호스트 시스템으로부터 상기 정보를 수신하는 단계를 포함하는 정보를 메모리 시스템에 저장하는 방법.
  • 제1항에 있어서, 상기 제2 데이터 포맷의 정보를 저장하는 단계와 관련된 비용은 상기 제1 데이터 포맷의 정보를 저장하는 단계와 관련된 비용보다 적어도 적거나 같은 정보를 메모리 시스템에 저장하는 방법.
  • 제1항에 있어서, 상기 제2 데이터 포맷의 정보를 저장하기 위하여 상기 메모리 시스템에 의해 사용되는 전력은 상기 제1 데이터 포맷의 정보를 저장하기 위하여 상기 메모리 시스템에 의해 사용되는 전력보다 적거나 같은 정보를 메모리 시스템에 저장하는 방법.
  • 메모리 시스템의 메모리에 제1 데이터 포맷으로 저장되는 정보를 검색하는 방법으로서,
    상기 정보를 상기 제1 데이터 포맷으로부터 제2 데이터 포맷으로 변환시키도록 사용하기 위하여 적어도 하나의 적절한 변환을 결정하는 단계를 포함하는 상기 제1 데이터 포맷의 정보를 분석하는 단계; 및,
    상기 적절한 변환을 사용하여 상기 정보를 상기 제1 데이터 포맷으로부터 상기 제2 데이터 포맷으로 변환시키는 단계를 포함하는 정보 검색 방법.
  • 제9항에 있어서, 상기 제2 데이터 포맷은 자신과 관련된 통계를 사용하여 초기에 변환되는 정보 검색 방법.
  • 제9항에 있어서, 상기 제1 데이터 포맷의 정보를 분석하는 단계는:
    상기 제1 데이터 포맷의 정보의 섹션을 판독하는 단계를 포함하는데, 상기 섹션은 상기 적절한 변환을 식별하는 심볼을 포함하는 정보 검색 방법.
  • 제9항에 있어서, 상기 메모리 시스템은 호스트 시스템과 통신하는데, 상기 방법은:
    상기 제2 데이터 포맷의 상기 변환된 정보를 상기 호스트 시스템에 제공하는 단계를 더 포함하는 정보 검색 방법.
  • 제9항에 있어서, 상기 제1 데이터 포맷의 정보를 저장하는 단계와 관련된 적어도 한 비용은 상기 제2 데이터 포맷의 정보를 상기 메모리에 저장하는 단계와 관련된 적어도 한 비용보다 크지 않는 정보 검색 방법.
  • 제9항에 있어서, 상기 제1 데이터 포맷의 정보를 메모리에 저장하기 위하여 상기 메모리 시스템에 의해 사용되는 전력은 상기 제1 데이터 포맷의 정보를 상기 메모리에 저장하기 위하여 상기 메모리 시스템에 의해 사용되는 전력보다 크지 않는 정보 검색 방법.
  • 메모리 장치로서,
    메모리;
    제1 데이터 포맷으로 배열된 정보를 수신하도록 배치된 입력 수신기;
    상기 제1 데이터 포맷과 관련된 통계를 발생시키기 위하여 배치되는 통계 발생기; 및,
    상기 정보를 상기 제1 데이터 포맷으로부터 제2 데이터 포맷으로 변환시키기 위하여 상기 통계를 사용하도록 배치되고, 또한 상기 제2 데이터 포맷의 정보를 상기 메모리에 저장하도록 배치된 변환기를 포함하는 메모리 장치.
  • 제15항에 있어서, 상기 제2 데이터 포맷의 정보를 저장하는 것과 관련된 비용은 상기 제1 데이터 포맷의 정보를 저장하는 것과 관련된 비용보다 적거나 같은 메모리 장치.
  • 제15항에 있어서, 상기 통계 발생기는 또한, 상기 제1 데이터 포맷의 제1 심볼의 발생과 관련된 수치값을 결정함으로써 상기 제1 데이터 포맷의 제1 심볼의 밀도를 결정하도록 배치되며, 상기 수치값은 상기 밀도를 나타내는 메모리 장치.
  • 제17항에 있어서, 상기 변환기는 또한, 상기 정보를 상기 제1 데이터 포맷으로부터 상기 제2 데이터 포맷으로 변환시키도록 배치되어 상기 정보 내에서 상기 제1 심볼의 밀도를 감소시키는 메모리 장치.
  • 제17항에 있어서, 상기 변환기는 상기 정보를 상기 제1 데이터 포맷으로부터 상기 제2 데이터 포맷으로 변환시키도록 배치되어 상기 정보 내에서 상기 제1 심볼의 밀도를 증가시키는 메모리 장치.
  • 제17항에 있어서, 상기 변환기는 또한, 상기 제2 데이터 포맷의 정보를 지닌 식별자를 저장하도록 배치되며, 상기 식별자는 상기 정보를 상기 제1 데이터 포맷으로부터 상기 제2 데이터 포맷으로 변환시키기 위하여 사용되는 적어도 하나의 변환을 실질적으로 식별하도록 배치되는 메모리 장치.
  • 제20항에 있어서, 상기 식별자를 판독하도록 배치되는 정보 처리기를 더 포함하는데, 상기 정보 처리기는 또한, 상기 변환기와 협동하도록 배치됨으로써, 상기 변환기가 적어도 하나의 적절한 변환을 식별하여 상기 정보를 상기 제2 데이터 포맷으로부터 상기 제1 데이터 포맷으로 변환시키는 메모리 장치.
  • 제21항에 있어서, 상기 입력 수신기는 호스트 시스템과 인터페이스 하도록 배치되고, 상기 변환기는 또한, 상기 변환기가 상기 정보를 상기 제2 데이터 포맷으로부터 상기 제1 데이터 포맷으로 변환시킨 후, 상기 데이터 포맷의 정보를 상기 호스트 시스템에 제공하도록 배치되는 메모리 장치.
  • 제15항에 있어서, 상기 입력 수신기는 상기 호스트 시스템과 인터페이스 하도록 배치되어 상기 호스트 시스템으로부터 상기 제1 데이터 포맷의 정보를 수신하는 메모리 장치.
  • 제15항에 있어서, 상기 메모리 시스템은 호스트 시스템과 인터페이스 하는 비휘발성 메모리 시스템인 메모리 장치.
  • 제24항에 있어서, 상기 비휘발성 메모리 시스템은 상기 호스트 시스템으로부터 제거될 수 있는 메모리 장치.
  • 제24항에 있어서, 상기 메모리는 비휘발성 메모리 소자인 메모리 장치.
  • 제24항에 있어서, 상기 메모리 장치는 PC 카드, 콤팩트 플래시 카드, 다매체카드, 보안 디지털 카드, 메모리 스틱 카드 및 스마트 매체 카드로 이루어진 그룹으로부터 선택되는 카드인 메모리 장치.
  • 제24항에 있어서, 상기 메모리 장치는 단일 칩 장치인 메모리 장치.
  • 호스트 시스템; 및,
    상기 호스트 시스템과 인터페이스 되도록 배치되어 상기 호스트 시스템으로부터 제1 데이터 포맷으로 배열된 정보를 얻는 메모리 장치로서, 상기 메모리 장치는 메모리, 통계 발생기, 및 변환기를 포함하는데, 상기 통계 발생기는 상기 제1 데이터 포맷과 관련된 통계를 발생시키도록 배치되고, 상기 변환기는 상기 통계를 사용하여 상기 정보를 상기 제1 데이터 포맷으로부터 상기 제2 데이터 포맷으로 변환시키도록 배치되며, 상기 변환기는 또한 상기 제2 데이터 포맷의 정보를 상기 메모리에 저장하도록 배치되는 시스템.
  • 제29항에 있어서, 상기 통계 발생기는 또한, 상기 제1 데이터 포맷의 제1 심볼의 발생과 관련된 퍼센티지를 결정함으로써 상기 제1 데이터 포맷의 제1 심볼의 밀도를 결정하도록 배치되는 시스템.
  • 제30항에 있어서, 상기 변환기는 상기 정보를 상기 제1 데이터 포맷으로부터 상기 제2 데이터 포맷으로 변환시키도록 배치되어 상기 정보 내에서 상기 제1 심볼의 밀도를 감소시키는 시스템.
  • 제30항에 있어서, 상기 변환기는 또한, 상기 정보를 상기 제1 데이터 포맷으로부터 상기 제2 데이터 포맷으로 변환시키도록 배치되어 상기 정보 내에서 상기 제1 심볼의 밀도를 증가시키는 시스템.
  • 제29항에 있어서, 상기 변환기는 또한, 상기 제2 데이터 포맷의 정보를 지닌 식별자를 저장하도록 배치되며, 상기 식별자는 상기 정보를 상기 제1 데이터 포맷으로부터 상기 제2 데이터 포맷으로 변환시키기 위하여 사용되는 적어도 하나의 변환을 실질적으로 식별하도록 배치되는 시스템.
  • 제33항에 있어서, 상기 메모리 장치는 정보 처리기를 더 포함하며, 상기 정보 처리기는 상기 식별자를 판독하도록 배치되며, 상기 정보 처리기는 또한, 상기 변환기와 협동하도록 배치됨으로써, 상기 변환기가 적어도 하나의 적절한 정보를 식별하여 상기 정보를 상기 제2 데이터 포맷으로부터 상기 제1 데이터 포맷으로 변환시키는 시스템.
  • 제34항에 있어서, 상기 메모리 장치는, 상기 변환기가 상기 정보를 상기 제2 데이터 포맷으로부터 상기 제1 데이터 포맷으로 변환시킨 후, 상기 제1 데이터 포맷의 정보를 상기 호스트 시스템에 제공하도록 배치되는 시스템.
  • 제33항에 있어서, 상기 호스트 시스템은 정보 처리기 및 제2 변환기를 포함하며, 상기 정보 처리기는 상기 식별자를 판독하도록 배치되며, 상기 정보 처리기는 또한 상기 제2 변환기와 협동하도록 배치됨으로써, 상기 제2 변환기가 적어도 하나의 적절한 변환을 식별하여 상기 정보를 상기 제2 데이터 포맷으로부터 상기 제1 데이터 포맷으로 변환시키는 시스템.
  • 제29항에 있어서, 상기 메모리 시스템은 비휘발성 메모리 시스템인 시스템.
  • 제37항에 있어서, 상기 비휘발성 메모리 시스템은 상기 호스트 컴퓨터로부터 제거될 수 있는 시스템.
  • 제37항에 있어서, 상기 비휘발성 메모리 시스템은 상기 호스트 시스템에 임베드되는 시스템.
  • 제37항에 있어서, 상기 메모리는 비휘발성 저장 소자인 시스템.
  • 제29항에 있어서, 상기 메모리 장치는 PC 카드, 콤팩트 플래시 카드, 다매체 카드, 보안 디지털 카드, 메모리 스틱 카드 및 스마트 매체 카드로 이루어진 그룹으로부터 선택되는 카드인 시스템.
  • 제29항에 있어서, 상기 메모리 장치는 단일 칩 장치인 시스템.
  • 제29항에 있어서, 상기 호스트 시스템은 상기 정보를 포착하고 상기 정보를 상기 제1 포맷으로 상기 메모리 장치에 제공하도록 배치되는 시스템.
  • 제43항에 있어서, 상기 호스트 시스템은 디지털 카메라, 비디오 카메라, 셀룰러 전화, 통신 장치, 오디오 플레이어 및 비디오 플레이어로 이루어진 그룹으로부터 선택된 것 중 하나인 시스템.
  • 제29항에 있어서, 상기 변환기는 또한 상기 정보에 대해 부가적인 변환을 수행하도록 배치되는데, 상기 부가적인 변환은 실질적으로 상기 통계를 사용하지 않는 시스템.
  • 메모리 장치로서,
    정보를 저장하는 수단;
    제1 데이터 포맷으로 배열된 상기 정보를 수신하도록 배치되는 입력 수신 수단;
    상기 제1 데이터 포맷과 관련된 통계를 발생시키도록 배치되는 통계 발생 수단; 및,
    상기 통계를 사용하여 상기 정보를 상기 제1 데이터 포맷으로부터 제2 데이터 포맷으로 변환시키도록 배치되는, 상기 정보를 변환시키는 수단을 포함하는 메모리 장치.
  • 제46항에 있어서, 상기 정보 변환 수단은 또한, 상기 제2 데이터 포맷의 정보를 상기 정보 저장 수단에 저장하도록 배치되는 메모리 장치.
  • 제46항에 있어서, 상기 정보 변환 수단은 또한, 부가적인 변환을 수행하도록 배치되는데, 상기 부가적인 변환은 상기 통계를 사용하지 않도록 배치된 메모리 장치.
  • 제46항에 있어서,
    상기 제2 데이터 포맷의 정보를 저장하는 것과 관련된 비용은 상기 제1 데이터 포맷의 정보를 저장하는 것과 관련된 비용보다 적거나 같은 메모리 장치.
  • 제46항에 있어서, 상기 제2 데이터 포맷의 정보를 저장하는 것과 관련된 전력 사용량은 상기 제1 데이터 포맷의 정보를 저장하는 것과 관련된 전력 사용량보다 적거나 같은 메모리 장치.
  • 제46항에 있어서, 상기 통계 발생 수단은 상기 제1 데이터 포맷의 제1 심볼의 발생과 관련된 퍼센티지를 결정함으로써 상기 제1 데이터 포맷의 제1 심볼의 밀도를 결정하는 수단을 포함하는 메모리 장치.
  • 제51항에 있어서, 상기 정보 변환 수단은 상기 정보를 상기 제1 데이터 포맷으로부터 상기 제2 데이터 포맷으로 변환시키도록 배치되어 상기 정보 내에서 상기 제1 심볼의 밀도를 감소시키는 메모리 장치.
  • 제51항에 있어서, 상기 정보 변환 수단은 또한, 상기 정보를 상기 제1 데이터 포맷으로부터 상기 제2 데이터 포맷으로 변환시키도록 배치되어 상기 정보 내에서 상기 제1 심볼의 밀도를 증가시키는 메모리 장치.
  • 제46항에 있어서, 상기 정보 변환 수단은 또한, 상기 제2 데이터 포맷의 정보와 관련된 식별자를 저장하도록 배치되며, 상기 식별자는 상기 정보를 상기 제1 데이터 포맷으로부터 상기 제2 데이터 포맷으로 변환시키는데 사용되는 적어도 하나의 변환을 실질적으로 식별하도록 배치되는 메모리 장치.
  • 제54항에 있어서, 상기 정보를 처리하는 수단을 더 포함하는데, 상기 정보 처리 수단은 상기 식별자를 판독하는 수단을 포함하며, 상기 정보 처리 수단은 또한, 상기 정보 변환 수단과 협동하도록 배치됨으로써, 상기 변환 수단이 적어도 하나의 적절한 변환을 식별하여 상기 정보를 상기 제2 데이터 포맷으로부터 상기 제1 데이터 포맷으로 변환시키는 메모리 장치.
  • 제55항에 있어서, 상기 입력 수신 수단은 호스트 시스템과 인터페이스 하도록 배치되고, 상기 정보 변환 수단은, 상기 정보 변환 수단이 상기 정보를 상기 제2 데이터 포맷으로부터 상기 제1 데이터 포맷으로 변환시킨 후, 상기 제1 데이터 포맷의 정보를 상기 호스트 시스템에 제공하는 수단을 포함하는 메모리 장치.
  • 제54항에 있어서, 상기 식별자를 판독하는 수단을 포함하는 상기 정보를 처리하는 수단; 및,
    상기 정보를 변환시키는 제2 수단으로서, 상기 정보 처리 수단은 상기 제2 정보 변환 수단과 협동하여 배치됨으로써, 상기 제2 정보 변환 수단이 적어도 하나의 적절한 변환을 식별하여 상기 정보를 상기 제2 데이터 포맷으로부터 상기 제1 데이터 포맷으로 변환시키는 메모리 장치.
  • 제46항에 있어서, 상기 입력 수신 수단은 호스트 시스템과 인터페이스 하도록 배치되어 상기 호스트 시스템으로부터 상기 제1 데이터 포맷의 정보를 수신하는 메모리 장치.
  • 제46항에 있어서, 상기 메모리 시스템은 호스트 시스템과 인터페이스 하는 비휘발성 메모리 시스템인 메모리 장치.
  • 제1 포맷으로부터 제2 포맷으로 데이터를 변환시키는 방법으로서,
    상기 제1 포맷과 관련된 제1 심볼의 제1 밀도를 결정하는 단계;
    상기 제1 포맷과 관련되는 제2 심볼의 제2 밀도를 결정하는 단계로서, 상기 제1 밀도는 상기 제2 밀도보다 큰, 결정 단계; 및,
    상기 제1 심볼을 상기 제2 심볼과 레벨링 되도록 하는 단계로서, 상기 제1 심볼을 상기 제2 심볼과 레벨링 되도록 하는 단계는 상기 제2 포맷과 관련되는 상기 제1 심볼의 제3 밀도를 생성하는 단계 및 상기 제2 포맷과 관련되는 제2 심볼의 제4 밀도를 생성하는 단계를 포함하는데, 상기 제3 밀도는 상기 제1 밀도보다 크지 않는, 레벨링 단계를 포함하는 제1 포맷으로부터 제2 포맷으로 데이터를 변환시키는 방법.
  • 제60항에 있어서, 상기 제4 밀도는 상기 제2 밀도보다 작지 않은 제1 포맷으로부터 제2 포맷으로 데이터를 변환시키는 방법.
  • 제60항에 있어서, 상기 제2 포맷은 표시자를 포함하는데, 상기 표시자는 상기 제1 심볼이 상기 제2 심볼과 레벨링 되었다는 것을 표시하도록 배치되는 제1 포맷으로부터 제2 포맷으로 데이터를 변환시키는 방법.
  • 제1 포맷으로부터 제2 포맷으로 데이터를 변환시키는 방법으로서,
    상기 제1 포맷과 관련된 제1 심볼의 제1 밀도를 결정하는 단계;
    상기 제1 포맷과 관련된 제2 심볼의 제2 밀도를 결정하는 단계로서, 상기 제1 밀도는 상기 제2 밀도보다 작지 않은, 결정 단계; 및,
    상기 제1 심볼을 상기 제2 심볼과 레벨링 되도록 하는 단계로서, 상기 제1 심볼을 상기 제2 심볼과 레벨링 되게 하는 단계는 상기 제2 포맷과 관련되는 상기 제1 심볼의 제3 밀도를 생성하는 단계 및 상기 제2 포맷과 관련되는 제2 심볼의 제4 심볼을 생성하는 단계를 포함하는데, 상기 제4 밀도는 상기 제2 밀도보다 작지 않는, 레벨링 되게 하는 단계를 포함하는 제1 포맷으로부터 제2 포맷으로 데이터를 변환시키는 방법.
  • 제63항에 있어서, 상기 제3 밀도는 상기 제1 밀도보다 크지 않는 제1 포맷으로부터 제2 포맷으로 데이터를 변환시키는 방법.
  • 제63항에 있어서, 상기 제2 포맷은 표시자를 포함하는데, 상기 표시자는 상기 제1 심볼이 상기 제2 심볼과 레벨링 되었다는 것을 표시하도록 배치되는 제1 포맷으로부터 제2 포맷으로 데이터를 변환시키는 방법.
  • 说明书全文

    데이터 저장 시스템에서 심볼 빈도 레벨링{SYMBOL FREQUENCY LEVELING IN A DATA STORAGE SYSTEM}

    본 발명은 일반적으로 대량 디지털 데이터 저장 시스템에 관한 것이다. 특히, 본 발명은, 거의 모든 데이터 패턴을 저장 시스템에 저장할 때, 수행성능 목표가 효율적으로 부합되도록, 저장 시스템에서 심볼 또는 상태 빈도 레벨링(symbol or state frequency leveling)을 자동으로 수행하는 시스템 및 방법에 관한 것이다.

    플래시 메모리 저장 시스템과 같은 비휘발성 메모리 시스템의 사용이 증가하고 있는데, 그 이유는 이와 같은 메모리 시스템의 콤팩트한 물리적인 크기 및 반복적으로 재프로그램되는 비휘발성 메모리 성능 때문이다. 플래시 메모리 저장 시스템의 콤팩트한 물리적 크기로 인해, 널리 퍼져 있는 장치에서 이와 같은 저장 시스템의 사용을 촉진시킨다. 플래시 메모리 저장 시스템을 사용하는 장치는 디지털 카메라, 디지털 캠코더, 디지털 뮤직 플레이어, 휴대용 컴퓨터, 및 위성 위치확인 장치를 포함하지만 이에 국한되지 않는다. 플래시 메모리 저장 시스템에 포함되는 비휘발성 메모리를 반복적으로 재프로그램하는 성능은 플래시 메모리 저장 시스템이 사용 및 재사용되도록 한다.

    비휘발성 메모리 시스템의 데이터 블록에 저장되는 데이터 세트는 거의 모든 가능한 데이터 값의 조합을 가질 수 있다. "m"개의 가능한 값들 중 한 값으로서 각각 저장될 수 있는 "N"개의 심볼을 포함하는 데이터 블록은 "m N "개의 가능한 데이터 값을 가질 수 있다. 모든 가능한 데이터 값이 데이터 블록에 저장되도록 함으로써, 저장 시스템은 통상, 모든 가능한 값들에 대한 수행성능 목표에 부합되도록 하는 방식으로 설계되는데, 이는 가장 보편적으로 저장된 데이터 패턴에 대해선 최적으로 되지 않을 수 있다. 즉, 덜 바람직한 경우 또는 발생 되지 않을 것 같은 경우를 포함하여, 수행성능 요구조건이 모든 가능한 데이터 값 또는 패턴에 부합될 수 있도록 하기 위하여, 가장 보편적이거나 바람직한 데이터 값과 관계되는 수행성능은 절충될 수 있다. 모든 가능한 데이터 값을 저장 시스템의 데이터 블록에 저장시키는 것은 또한, 설계를 상당히 복잡하게 하고, 신뢰성 문제를 증가시키고, 전력 소모를 크게 하고 비용을 많이 들게 할 수 있다.

    데이터 블록에 저장될 수 있는 데이터 패턴의 수는 상당히 높게 될 수 있다. 실질적으로 단지 2진 상태만이 데이터 블록에 저장될 수 있는 때조차도, 데이터 블록에 잠재적으로 저장될 수 있는 데이터 패턴의 수는 상당하다. 100개의 2진 비트를 저장할 수 있는 데이터 블록의 경우에, 데이터 블록이 2 100 개의 데이터 패턴을 저장하도록 배치되는 것이 효율적이다. 100개의 2진 비트를 저장하는 저장 시스템의 요구조건은, 최소 수행성능 요구조건에 부합하도록 하는데 전용 회로가 필요로 될 수 있거나 부가적인 전력을 소모할 수 있는 덜 바람직한 경우가 적은 수로 설정되거나 제한될 수 있다. 예를 들어, 어떤 시스템에서, 100개의 2진 비트를 "1"로서 저장하는 것은 "1" 및 "0"의 값의 혼합된 100개의 2진 비트 저장을 수반하는 보다 바람직한 경우가 필요로 한 것보다 값비싼 저장 시스템을 필요로 하는 덜 바람직한 경우일 수 있다. 대안적으로, 덜 바람직한 또는 드문 경우를 저장할 때 최소 수행성능 요구조건에 부합되는 저장 시스템은 보다 바람직한 경우를 저장하는 것과 관련된 수행성능을 절충할 수 있다. 덜 바람직한 경우를 저장하는 것과 관련된 최소 수행성능 요구조건이 부합되도록 바람직한 경우를 저장하는 것과 관련된 수행성능 레벨을 절충하는 것은 종종, 비효율적인 것으로 판명되었다.

    수행성능을 잠재적으로 절충시키는 것 이외에 또는 이 대신에, 모든 가능한 데이터 값을 저장 시스템의 데이터 블록에 저장시키면 종종, 모든 가능한 데이터 값을 저장하는 것과 관련된 회로의 제조 비용이 높게 될 수 있기 때문에, 제조 비용을 크게 한다. 이와 같은 회로는 또한, 상대적으로 많은 량의 전력을 소모할 수 있다. 모든 가능한 데이터 값을 저장하는 저장 시스템은 또한, 데이터 저장 및 덜 바람직한 경우의 저장을 수용하도록 하는 부가적인 회로를 포함하는 것에 비해서 신뢰성이 적다. 모든 가능한 데이터 값을 저장할 필요성은 또한, 모든 가능한 데이터 값을 저장하는 저장 시스템의 설계와 관련된 설계 문제로 인해 개발 시간을 증가시키고, 이 저장 시스템을 시판하는데 긴 소요 시간을 초래할 수 있다.

    그러므로, 바람직한 경우를 저장하는 것과 관련된 수행성능을 절충함이 없이, 덜 바람직한 경우를 비휘발성 메모리에 실질적으로 효율적으로 저장시키는 시스템이 바람직하다. 즉, 덜 바람직한 경우 및 바람직한 경우를 효율적으로 저장시키는 방법 및 장치가 필요로 된다.

    도1a는 본 발명의 실시예를 따른 비휘발성 메모리 장치를 포함하는 일반적인 호스트 시스템을 도시한 도면.

    도1b는 본 발명의 실시예를 따른 비휘발성 메모리 장치, 예를 들어 도1a의 비휘발성 메모리 장치(120)를 도시한 도면.

    도2a는 본 발명의 실시예를 따른 변환기를 포함하는 제1 비휘발성 메모리 시스템을 도시한 도면.

    도2b는 본 발명의 실시예를 따른 변환기를 포함하는 제2 비휘발성 메모리 시스템을 도시한 도면.

    도2c는 본 발명의 실시예를 따른 변환기를 포함하는 제3 비휘발성 메모리 시스템을 도시한 도면.

    도3a는 데이터가 본 발명의 실시예에 따라서 저장되기 전, 데이터에 대한 다수의 변환이 수행될 수 있는 제1 비휘발성 메모리 시스템과 통신하는 호스트를 도시한 도면.

    도3b는 데이터가 본 발명의 실시예에 따라서 저장되기 전 데이터에 대한 다수의 변환이 수행될 수 있는 제2 비휘발성 메모리 시스템과 통신하는 호스트를 도시한 도면.

    도4a는 본 발명의 실시예에 따라서 호스트에 의해 제공된 데이터를 비휘발성 메모리로 효율적으로 저장하는 한 가지 방법과 관련된 단계를 도시한 공정 흐름도.

    도4b는 본 발명의 실시예에 따라서 호스트에 의해 제공된 데이터를 비휘발성 메모리로 효율적으로 저장하는 또 다른 방법과 관련된 단계를 도시한 공정 흐름도.

    도5는 본 발명의 실시예에 따라서 엔코딩된 데이터를 디코드하는 변환기를 포함하는 비휘발성 메모리 시스템을 도시한 도면.

    도6은 본 발명의 실시예에 따라서 디코딩된 데이터를 호스트로 직접 제공하는 변환기를 포함하는 비휘발성 메모리 시스템 및 호스트를 도시한 도면.

    도7은 본 발명의 실시예에 따라서 디코딩된 데이터가 호스트에 제공되기 전 데이터를 디코딩하기 위하여 다수의 반복을 사용할 수 있는 변환기를 포함하는 비휘발성 메모리 시스템 및 호스트를 도시한 도면.

    도8은 본 발명의 실시예에 따라서 엔코딩된 데이터를 디코딩하는 것과 관련된 단계를 도시한 공정 흐름도.

    도9a는 본 발명의 실시예에 따라서 데이터를 엔코딩하는 변환기를 도시한 도면.

    도9b는 본 발명의 실시예에 따라서 도9a의 변환기(918)를 엔코딩하는 것과 관련된 변환을 도시한 도면.

    도10a는 본 발명의 실시예에 따라서 데이터를 디코딩하는 변환기를 도시한 도면.

    도10b는 본 발명의 실시예에 따라서 도9b의 엔코딩 변환기(918')에 의해 수행되는 엔코딩을 반전시키는데 적합한 디코딩 변환기를 도시한 도면.

    본 발명은 데이터를 비휘발성 메모리에 효율적으로 저장될 수 있는 포맷으로 변환시키는 시스템 및 방법에 관한 것이다. 본 발명의 한 양상을 따르면, 제1 데이터 포맷의 정보를 메모리 시스템에 저장하는 방법은 상기 제1 데이터 포맷과 관련된 통계를 발생시키는 단계 및 상기 통계를 사용하여 정보를 상기 제1 데이터 포맷으로부터 제2 데이터 포맷으로 변환시키는 단계를 포함한다. 정보가 상기 제2 데이터 포맷으로 변환되면, 이 정보는 상기 제2 데이터 포맷으로 메모리에 저장된다. 상기 제2 데이터 포맷의 정보를 상기 메모리에 저장하는 것은 정보를 상기 제1 데이터 포맷으로부터 상기 제2 데이터 포맷으로 변환시키는데 사용되는 변환을 나타내거나 식별하는 식별자를 상기 메모리에 저장하는 것을 포함한다. 상기 식별자를 인지하면, 일반적으로, 정보를 상기 제2 데이터 포맷으로부터 상기 제1 데이터 포맷으로 다시 변환시킨다. 일 실시예에서, 상기 제2 데이터 포맷의 정보를 저장하는 것과 관련된 비용은 상기 제1 데이터 포맷의 정보를 저장하는 것과 관련된 비용보다 적거나 같다.

    또 다른 실시예에서, 상기 제1 데이터 포맷은 적어도 하나의 제1 심볼의 발생을 포함하고, 상기 제1 데이터 포맷과 관련된 통계를 발생시키는 것은 상기 제1 데이터 포맷의 상기 제1 심볼의 밀도를 결정하는 것을 포함한다. 상기 밀도를 결정하는 단계는 상기 제1 데이터 포맷의 상기 제1 심볼의 발생과 관련된 퍼센티지를 결정하는 단계를 포함할 수 있다. 이와 같은 실시예에서, 상기 통계를 사용하여 정보를 상기 제1 데이터 포맷으로부터 상기 제2 데이터 포맷으로 변환시키는 것은 정보를 상기 제1 데이터 포맷으로부터 상기 제2 데이터 포맷으로 변환시켜 상기 정보 내에서 상기 제1 심볼의 밀도를 감소시키는 것을 포함할 수 있다.

    메모리 시스템에 저장되어야 하는 데이터는 많은 다양한 패턴을 가질 수 있다. 어떤 포맷이 덜 바람직한 경우를 허용할 수 있기 때문에, 어떤 포맷, 예를 들어, 논리 상태 또는 심볼의 조합은 저장 면에서 다른 포맷보다 덜 효율적일 수 있다. 덜 바람직한 경우의 저장이 수행성능 요구조건에 부합하려면, 덜 바람직한 경우, 예를 들어, 하나의 논리 상태가 실질적인 다수의 데이터 세트를 형성하는 경우는 전용 회로를 필요로 하거나 저장을 위하여 상당한 전력을 필요로 할 수 있다. 게다가, 덜 바람직한 경우의 저장을 위한 수행성능 요구조건에 부합하는 메모리 시스템은 보다 바람직한 경우, 예를 들어, 상대적으로 빈번하게 발생되는 경우의 저장과 관련된 수행성능과 절충할 수 있다. 예를 들어, 덜 바람직한 경우로부터 바람직한 경우처럼, 데이터를 저장하기 전 데이터 포맷을 변환시킴으로써, 덜 바람직한 경우가 바람직한 경우로서 효율적으로 저장되기 때문에, 실제 덜 바람직한 경우가 저장되는 것을 효율적으로 피하도록 할 수 있다. 따라서, 메모리 시스템에 데이터 전부를 보다 효율적으로 저장할 수 있다. 게다가, 메모리 시스템과 관련된 비용은 감소될 수 있고, 메모리 시스템의 신뢰성은 향상될 수 있다.

    본 발명의 또 다른 양상을 따르면, 메모리 시스템의 메모리에 제1 데이터 포맷으로 저장되는 정보를 검색하는 방법은 제1 데이터 포맷의 정보를 분석하는 단계를 포함한다. 제1 데이터 포맷의 정보를 분석하는 것은 정보를 제1 데이터 포맷으로부터 제2 데이터 포맷으로 변환시키는데 적합한 적어도 하나의 적절한 변환을 결정하는 것을 포함한다. 이 방법은 또한, 적절한 변환을 사용하여 정보를 상기 제1 데이터 포맷으로부터 상기 제2 데이터 포맷으로 변환시키는 것을 포함한다. 상기 제1 데이터 포맷의 정보를 상기 메모리에 저장하는 것과 관련된 비용은 상기 제2 데이터 포맷의 정보를 상기 메모리에 저장하는 것과 관련된 비용보다 많지 않다. 일 실시예에서, 상기 제1 데이터 포맷의 정보를 분석하는 것은 상기 제1 데이터 포맷의 정보의 섹션을 판독하여 적절한 변환을 식별하는 것을 포함한다. 또 다른 실시예에서, 상기 메모리 시스템은 호스트 시스템과 통신하고, 이 방법은 또한 상기 제2 데이터 포맷의 변환된 정보를 상기 호스트 시스템으로 제공하는 단계를 포함한다.

    본 발명의 또한 다른 양상을 따르면, 데이터를 변환하여 저장할 수 있는 시스템은 호스트 시스템 및 메모리 장치를 포함한다. 상기 메모리 장치는 상기 호스트 시스템과 인터페이스 하여 상기 호스트 시스템으로부터 제1 데이터 포맷으로 배열된 정보를 얻고, 메모리, 통계 발생기 및 변환기를 포함한다. 상기 통계 발생기는 상기 제1 데이터 포맷과 관련된 통계를 발생시키고, 상기 변환기는 상기 통계를 사용하여 정보를 상기 제1 데이터 포맷으로부터 제2 데이터 포맷으로 변환시킨다. 일 실시예에서, 상기 제2 데이터 포맷의 정보는 상기 제1 데이터 포맷의 정보로서 상기 메모리에 저장하는 것만큼 적어도 용이하게 저장된다.

    일 실시예에서, 변환기는 정보를 상기 제1 데이터 포맷으로부터 상기 제2 데이터 포맷으로 변환시키는데 사용되는 적어도 하나의 변환을 실질적으로 식별하는 제2 데이터 포맷의 정보의 일부로서 식별자를 저장한다. 이와 같은 실시예에서, 호스트 시스템은 정보 처리기 및 제2 변환기를 포함할 수 있다. 이와 같은 정보 처리기는 식별자를 판독할 수 있고, 제2 변환기와 협동하여 적어도 하나의 적절한 변환을 식별함으로써 정보를 상기 제2 데이터 포맷으로부터 상기 제1 데이터 포맷으로 변환시킨다. 상기 변환기 및 제2 변환기가 변환기들, 단일 변환기와 결합되는 변환기, 어떤 논리를 공유하는 변환기 또는 동일한 논리를 갖지만 심지어 서로 다르게 작용하도록 구성되는 별도의 변환기로 구별될 수 있다는 것을 이해하여야 한다.

    본 발명의 이들 및 그외 다른 장점이 이하의 상세한 설명 및 각 도면을 통해서 명백하게 될 것이다.

    본 발명이 첨부한 도면과 관련한 이하의 설명을 통해서 최적으로 이해될 것이다.

    데이터를 저장하기 전, 예를 들어 덜 바람직한 경우로부터 바람직한 경우처럼 데이터의 포맷을 변환시킴으로써, 덜 바람직한 경우가 바람직한 경우로서 효율적으로 저장되기 때문에, 실제 덜 바람직한 경우가 저장되는 것을 효율적으로 피할 수 있게 된다. 따라서, 덜 바람직한 경우의 저장이 일반적으로 바람직한 경우의 저장보다 많은 전력을 소모하지 않고 덜 바람직한 경우의 저장과 관련된 수행성능 패널티(penalties)가 피해질 수 있기 때문에, 데이터 전부를 메모리 시스템에 보다 효율적으로 저장할 수 있다. 게다가, 덜 바람직한 경우를 보다 바람직한 경우로서 저장하는 메모리 시스템에서, 데이터 저장과 관련된 회로는 덜 복잡하게 되는데, 예를 들어 설계하는데 시간이 덜 걸리고 제조하는데 다소 용이하게 된다. 즉, 전력 사용, 수행성능 패널티, 설계 문제, 및 제조 문제 중 적어도 하나와 관련된 전체 비용 또는 비용 유발 요인들이 감소될 수 있다. 예를 들어, 전력 소모와 관련된 비용은 감소될 수 있으며, 수행성능 패널티 또는 비용은 감소될 수 있으며, 복잡한 회로를 설계하는 것과 관련된 비용은 감소될 수 있고, 제조 비용이 감소될 수 있다.

    데이터가 비휘발성 메모리 장치와 같은 메모리 장치상에 저장될 때, 호스트 시스템은 데이터를 비휘발성 메모리 장치에 제공할 수 있다. 일 실시예에서, 비휘발성 메모리 장치는 데이터를 효율적으로 감소시켜 데이터 내에서 발생되는 논리 상태 및 심볼의 상태 밀도를 결정하고 나서, 이 상대 밀도를 토대로 적절한 변환을 선택하여 데이터를 효율적으로 저장된 패턴으로 변환시키도록 사용된다. 심볼은 비트 또는 실질적으로 임의 수의 비트의 조합일 수 있다. 효율적으로 저장가능하다라고 간주되는 데이터 포맷이 특정 시스템의 요구조건에 따라서 광범위게 변화될 수 있지만, 효율적으로 저장가능한 데이터 포맷은 실질적으로 균일한 논리 상태 분포를 포함하는 포맷, 최대 밀도의 특정 논리 상태를 최소화하는 포맷, 최소 밀도의 특정 논리 상태를 최소화하는 포맷을 포함할 수 있다.

    도1a를 우선 참조하면, 비휘발성 메모리 장치(120), 예를 들어, 콤팩트 플래시 메모리 카드를 포함하는 일반적인 호스트 컴퓨터가 서술될 것이다. 호스트 또는 컴퓨터 시스템(100)은 일반적으로, 마이크로프로세서(108), 랜덤 액세스 메모리(RAM)(112) 및 입력/출력 회로(116)를 통신시키는 시스템 버스(104)를 포함한다. 호스트 시스템(100)이 일반적으로, 다른 요소들, 예를 들어 디스플레이 장치 및 네트워킹 장치(도시되지 않음)를 포함할 수 있다는 것을 인지하여야 한다.

    일반적으로, 호스트 시스템(100)은 정지 영상 정보, 오디오 정보, 및 비디오 영상 정보를 포함하지만 이에 국한되지 않은 정보를 포착할 수 있다. 이와 같은 정보는 실시간으로 포착될 수 있고, 무선 방식으로 호스트 시스템(100)에 전송될 수 있다. 호스트 시스템(100)이 실질적으로 임의의 시스템일 수 있지만, 호스트 시스템(100)은 전형적으로 디지털 카메라, 비디오 카메라, 셀룰러 통신 장치, 오디오 플레이어 또는 비디오 플레이어와 같은 시스템이다. 그러나, 호스트 시스템(100)이 일반적으로, 데이터 또는 정보를 저장하고 데이터 또는 정보를 검색하는 임의의 시스템일 수 있다는 것을 인지하여야 한다.

    호스트 시스템(100)이 또한, 단지 데이터를 포착하거나 데이터를 검색하는 시스템일 수 있다. 즉, 호스트 시스템(100)은 데이터를 저장하는 전용 시스템일 수 있거나, 호스트 시스템(100)은 데이터를 판독하는 전용 시스템일 수 있다. 예를 들어, 호스트 시스템(100)은 단지 데이터를 기록 또는 저장하도록 배치된 메모리 라이터(writer)일 수 있다. 또한, 호스트 시스템(100)은 전형적으로 데이터를 판독 또는 검색하고 데이터를 포착하지 않도록 배치된 MP3 플레이어와 같은 장치일 수 있다.

    일 실시예에서, 제거가능한 비휘발성 메모리 장치인 비휘발성 메모리 장치(120)는 버스(104)와 인터페이스하여 정보를 저장하도록 배치된다. 선택적인 입력/출력 회로 블록(130)은 비휘발성 메모리 장치(120)가 버스(104)와 직접 인터페이스하도록 할 수 있다. 제공될 때, 입력/출력 회로 블록(130)은 당업자가 이해하는 바와 같이 버스(104) 상의 로딩을 감소시키도록 작용한다. 비휘발성 메모리 장치(120)는 비휘발성 메모리(124) 및 메모리 제어 시스템(128)을 포함한다. 일 실시예에서, 비휘발성 메모리 장치(120)는 단일 칩 또는 다이(die) 상에서 구현될 수 있다. 또한, 비휘발성 메모리 장치(120)는 다중-칩 모듈 또는 비휘발성 메모리 장치(120)로서 함께 사용될 수 있는 다수의 이산 요소 상에서 구현될 수 있다. 비휘발성 메모리 장치(120)에 대한 한 가지 실시예가 도1b와 관련하여 보다 상세하게 후술될 것이다.

    비휘발성 메모리(124)는 데이터가 액세스되고 필요에 따라서 판독될 수 있도록 데이터를 저장하도록 배치된다. 비휘발성 메모리(124)에 저장된 데이터는 또한, 적절하게 소거될 수 있지만, 비휘발성 메모리(124) 내의 어떤 데이터는 소거될 수 없다라는 것을 이해하여야 한다. 데이터 저장, 데이터 판독, 및 데이터 소거 공정은 일반적으로 메모리 제어 시스템(128)에 의해 제어된다. 일 실시예에서, 메모리 제어 시스템(128)은 비휘발성 메모리(124)의 동작을 관리하여, 근본적으로 비휘발성 메모리(124)의 섹션이 비휘발성 메모리의 수명과 동일하게 실질적으로 닳아서 없어지도록 함으로써 비휘발성 메모리(124)의 수명을 실질적으로 최대화시킨다.

    비휘발성 메모리 장치(120)는 일반적으로, 메모리 제어 시스템(128), 즉 제어기를 포함하는 것으로서 서술되었다. 종종, 비휘발성 메모리 장치(120)는 비휘발성 메모리(124) 및 메모리 제어 시스템(128), 즉 제어기 기능용의 별도의 칩을 포함할 수 있다. 예를 들어, PC 카드, 콤팩트 플래시 카드, 다매체 카드 및 보안 디지털 카드를 포함하지만 이에 국한되지 않는 비휘발성 메모리 장치가 별도의 칩상에서 구현될 수 있는 제어기를 포함하지만, 다른 비휘발성 메모리 장치는 별도의 칩 상에서 구현되는 제어기를 포함하지 않을 수 있다. 비휘발성 메모리 장치(120)가 별도의 메모리 및 제어기 칩을 포함하지 않는 실시예에서, 메모리 및 제어기 기능은 당업자에게 인지된 바와 같이 단일 칩으로 집적될 수 있다.

    도1b를 참조하여 비휘발성 메모리 장치(120)가 본 발명의 실시예에 따라서 보다 상세하게 설명될 것이다. 상술된 바와 같이, 비휘발성 메모리 장치(120)는 비휘발성 메모리(124) 및 메모리 제어 시스템(128)을 포함한다. 메모리(124) 및 제어 시스템(128), 즉 제어기는 비휘발성 메모리 장치(120)의 주 요소들이다. 메모리(124)는 반도체 기판상에 형성된 메모리 셀의 어레이일 수 있는데, 이 어레이에서, 메모리 셀의 각 저장 소자상의 2개 이상의 전하 레벨들중 한 레벨을 저장함으로써 하나 이상의 데이터 비트가 각 메모리 셀에 저장된다. 비휘발성 플래시 전기적으로 소거가능한 프로그램가능한 판독 전용 메모리(EEPROM)는 이와 같은 시스템을 위한 통상적인 유형의 메모리의 일 예이다.

    제어 시스템(128)은 버스(15)를 통해서 호스트 컴퓨터 또는 이외 다른 시스템과 통신하는데, 이는 데이터를 저장하기 위하여 메모리 시스템을 사용한다. 버스(15)는 일반적으로 도1a의 버스(104)의 일부이다. 제어 시스템(18)은 또한, 메모리 셀 어레이(11)를 포함할 수 있는 메모리(124) 동작을 제어하여 호스트에 의해 제공되는 데이터를 기록, 호스트에 의해 요청되는 데이터를 판독 및 동작중인 메모리(124)에서 각종 하우스키핑(housekeeping) 기능을 수행한다. 제어 시스템(128)은 일반적으로 소프트웨어 메모리 및 각종 논리 회로를 연관시키는 범용 마이크로프로세서를 포함한다. 특정 루틴의 수행성능을 제어하기 위하여 하나 이상의 상태 기계가 종종 포함된다.

    메모리 셀 어레이(11)는 전형적으로 어드레스 디코더(17)를 통해서 제어 시스템(128)에 의해 어드레스 된다. 디코더(17)는 정확한 전압을 어레이(11)의 비트 라인 및 게이트에 인가하여 제어 시스템(128)에 의해 어드레스 되는 메모리 셀 그룹에 데이터를 프로그램하며, 이 그룹으로부터 데이터를 판독하고 이 그룹을 소거한다. 부가적인 회로(19)는 셀의 어드레스 된 그룹으로 프로그램되는 데이터에 따르는 어레이의 소자에 인가되는 전압을 제어하는 프로그래밍 구동기를 포함한다. 회로(19)는 또한, 메모리 셀의 어드레스된 그룹으로부터 데이터를 판독하는데 필요한 감지 증폭기 및 이외 다른 회로를 포함한다. 어레이(11)로 프로그램될 데이터 또는 어레이(11)로부터 최근 판독된 데이터는 전형적으로 제어 시스템(128) 내의 버퍼 메모리(21)에 저장된다. 또한, 제어 시스템(128)은 통상적으로, 명령 및 상태 데이터 등을 일시 저장하는 각종 레지스터를 포함한다.

    어레이(11)는 메모리 셀의 많은 수의 BLOCKS 0-N으로 분할된다. 플래시 EEPROM, 시스템에 보편화 된 바와 같이, 블록은 소거 단위이다. 즉, 각 블록은 모두 소거되는 최소수의 메모리 셀을 포함한다. 각 블록은 전형적으로, 도1b에 도시된 바와 같이 페이지 수로 분할된다. 페이지는 프로그래밍 단위이다. 즉, 기본 프로그래밍 동작은 데이터를 최소 수인 셀의 한 페이지로 기록한다. 데이터의 하나 이상의 섹터는 전형적으로 각 페이지 내에 저장된다. 도1b에 도시된 바와 같이, 한 섹터는 사용자 데이터 및 오버헤드 데이터를 포함한다. 오버헤드 데이터는 전형적으로, 상기 섹터의 사용자 데이터로부터 계산된 에러 정정 코드(ECC)를 포함한다. 제어 시스템(128)의 부분(23)은 데이터가 어레이(11) 내로 프로그램될 때 ECC를 계산하고, 또한, 데이터가 어레이(11)로부터 판독될 때 ECC를 검사한다. 대안적으로, ECCs는 자신들이 속하는 사용자 데이터와 다른 페이지 또는 다른 블록에 저장된다.

    사용자 데이터의 섹터는 전형적으로, 자기 디스크 드라이브 내의 섹터 크기에 대응하는 512개의 바이트이다. 오버헤드 데이터는 전형적으로, 부가적인 128개의 바이트이다. 데이터의 한 섹터는 통상적으로, 각 페이지에 포함되지만, 2개 이상의 섹터는 이 대신에 페이지를 형성한다. 많은 수의 페이지, 예를 들어 8페이지로부터 최대 512, 1024 이상의 페이지가 임의의 장소에서 블록을 형성한다. 블록 수는 메모리 시스템을 위한 소망 데이터 저장 용량을 제공하도록 선택된다. 어레이(11)는 전형적으로, 몇 개의 서브-어레이(도시되지 않음)로 분할되는데, 이 서브- 어레이 각각은 블록의 부분을 포함하며, 이는 다소간 서로 무관하게 동작 되어 각종 메모리 동작의 실행시 병렬화 정도를 증가시킨다. 다수의 서브-어레이의 사용에 대한 일 예가 본원에 전반적으로 참조된 미국 특허 제5,890,192호에 개시되어 있다.

    비휘발성 메모리(124), 예를 들어 비휘발성 메모리(124) 내의 셀에 저장하기 위하여 도1a의 버스(104)를 통해서 비휘발성 메모리 장치(120)에 제공되는 데이터는 일반적으로, 바람직한 경우 및 덜 바람직한 경우를 포함할 수 있다. 바람직한 경우는 상대적으로 빈번한 데이터 패턴 또는 저장 또는 검색이 상대적으로 용이하다라고 간주 되는, 예를 들어, 상대적으로 거의 오버헤드 또는 전력을 필요로 하지 않는 심볼 밀도, 예를 들어 상태를 포함하는 데이터 패턴 중 어느 한 패턴을 포함할 수 있다. 다른 한편으로, 덜 바람직한 경우는 상대적으로 빈번하지 않게 발생되는 데이터 패턴 또는 상대적으로 저장 또는 검색하기 어렵다라고 간주되는 심볼 밀도를 포함하는 데이터 패턴 중 어느 한 패턴을 포함할 수 있다. 서술된 실시예에서, 바람직한 경우는 전형적으로, 비휘발성 메모리(124)로부터 저장 또는 검색하는 것이 상대적으로 용이하거나 효율적인 데이터 패턴인 반면에, 덜 바람직한 경우는 전형적으로 비휘발성 메모리(124)로부터 저장 또는 검색하는 것이 상대적으로 어렵거나 비효율적인 데이터 패턴이다.

    덜 바람직한 경우를 효율적으로 피하도록 하는데, 즉 덜 바람직한 경우가 보다 바람직한 경우처럼 변환되거나 엔코딩 되도록,데이터를 비휘발성 메모리(124)에 저장하기 전 데이터를 변환시키면 데이터가 효율적으로 저장된다. 실질적으로 모든 데이터 패턴은 상대적으로 바람직한 경우처럼 비휘발성 메모리(124)에 저장될 수 있도록 데이터를 변환 또는 조정하면, 상대적으로 값싸게 저장 동작을 행하게 된다.

    데이터를 변환시키면, 데이터를 저장하기 전 덜 바람직한 경우를 보다 바람직한 경우로 데이터 패턴을 동적으로 변환시킬 수 있다. 변환된 데이터를 비휘발성 메모리(124)에 저장하는 것 이외에도, 부가적인 데이터가 저장되어, 변환이 데이터에 대해 수행되는지 그리고 어느 유형의 변환이 수행되는지를 나타낸다. 데이터가 비휘발성 메모리(124)로부터 검색되어 이 데이터를 원래 상태로 재변환시킬 때, 이와 같은 정보가 사용된다. 즉, 데이터가 변환되어 저장될 때, 이 변환과 관계하는 정보는 또한, 변환된 데이터가 수신되어 이 데이터가 원래 상태로 효율적으로 복귀되는 경우, 상기 변환을 반전시키기 위하여 저장된다. 일 실시예에서, 이 변환과 관계하는 정보는 5비트로서 저장되지만, 이 비트수는 광범위하게 변화될 수 있다. 일반적으로, 이 변환과 관계하는 정보는 변환된 데이터 내에 프리펜드(prepend)되며, 첨가되며, 결합되거나 산재(intersperse)될 수 있다. 그러나, 데이터는 또한 변환된 데이터와 별도로 저장될 수 있다는 것을 이해하여야 한다.

    데이터 패턴이 특정 퍼센티지보다 많은 제1 심볼 및 특정 퍼센티지보다 적은 제2 심볼을 갖지 않도록 변환이 수행될 수 있다. 예를 들어, 최대 밀도의 특정한 임의의 심볼이 최소화될 수 있거나, 최소 밀도의 특정한 임의의 심볼이 최대화될 수 있다. 어떤 실시예에서, 특정한 최소 및 최대 퍼센티지의 서로 다른 심볼이 변환된 데이터 패턴에 부합되도록 변환이 효율적으로 발생될 수 있다. 특정 퍼센티지의 심볼이 성취되도록 함으로써, 예를 들어, 최대 밀도의 각 심볼이 최소화되도록 함으로써, 덜 바람직한 경우가 전반적으로 피해질 수 있다. 당업자에게 인지된 바와 같이, 심볼은 서로 다른 상태의 표현과 관계될 수 있다.

    일반적으로, 비휘발성 메모리 시스템 내의 데이터 블록에 저장되기 전 데이터가 변환될 수 있다. 데이터가 비휘발성 메모리 시스템에 제공되기 전 데이터 변환이 호스트 상에서 발생될 수 있지만, 데이터 변환은 통상적으로, 비휘발성 메모리 시스템 내에서 발생된다. 일 실시예에서, 데이터가 호스트로부터 비휘발성 메모리 시스템과 관계되는 버퍼에서 판독된 후 그러나 데이터가 데이터 블록에 저장되기 전에 데이터 변환이 발생된다. 도2a를 참조하면, 변환기를 포함하는 비휘발성 메모리 시스템의 일 실시예는 본 발명에 따라서 서술될 것이다. 비휘발성 메모리 시스템(202)은 호스트(206)와 통신하여, 이 호스트(206)가 데이터 값을 시스템(202)에 제공하도록 한다. 호스트(206)는 예를 들어, "원상태", 즉 변환되지 않은 데이터를 버퍼(210) 및 통계 발생기(214)에 제공한다. 일 실시예에서, 비휘발성 메모리 시스템(202')은 도2b에 도시된 바와 같이, 변환되지 않은 데이터를 버퍼(210)에 제공하지만 통계 발생기(214)에 제공하지 않는 호스트(206)와 통신할 수 있다. 이와 같은 실시예에서, 즉, 도2b에 도시된 실시예에서, 버퍼(210)는 변환되지 않은 데이터를 통계 발생기(214)에 제공하도록 배치될 수 있다.

    도2a를 참조하면, 버퍼(210)는 데이터가 변환기(218)에 의해 변환되기 전 데이터를 일시 저장하도록 배치되는 반면에, 통계 발생기(214)는 데이터를 분석하거나 그렇치 않다면 데이터를 감소시켜, 변환기(218)에 의해 사용될 변환을 결정하도록 사용되는 통계를 발생시킨다. 일 실시예에서, 통계 발생기(214)는 많은 각 심볼이 데이터에서 나타나는 방법을 결정하도록 배치된다. 통계 발생기(214)는 또한, 전체 데이터 스트림에 대해서 각 심볼의 전체 발생 퍼센티지를 결정하도록 배치될 수 있다.

    통계 발생기(214)에 의해 발생된 통계는 변환기(218)에 의해 사용되어, 바람직한 데이터 패턴으로서 데이터를 엔코딩한다. 일반적으로, 변환기(218)는 또한, 메모리 셀 또는 메모리 블록을 포함할 수 있는 비휘발성 메모리(222)에 엔코딩된 데이터를 저장한다. 당업자에게 인지된 바와 같이, 통계 발생기(214)에 의해 발생된 통계를 사용하는 변환기(218)는 비휘발성 메모리 시스템(202)과 관련된 다수의 변환기들중 단지 한 변환기일 수 있다. 예를 들어, 도2c와 관련하여 후술되는 바와 같이, 부가적인 변환은 변환기(218)에 의해 수행되는 변환 전 또는 후에 발생될 수 있다.

    변환기(218)는 또한, 엔코딩된 데이터가 상술된 바와 같이 비휘발성 메모리(222)로부터 얻어질 때, 엔코딩된 데이터가 디코딩되거나, 재변환되도록 하는 방법을 나타내도록 배치되는 엔코딩된 데이터에 비트를 부가할 수 있다. 일 실시예에서, 엔코딩된 데이터가 디코딩되도록 하는 방법을 나타내기 위하여 엔코딩된 데이터에 비트를 결합시키는 것이 아니라, 예를 들어, 엔코딩된 데이터가 저장되는 섹션과 다른 비휘발성 메모리(222)의 섹션과 관계되는 룩업 테이블에서 처럼 식별자가 별도로 저장될 수 있다. 그 후, 이와 같은 식별자는 저장 장보가 필요로 될때 또는 엔코딩된 데이터가 디코딩되어야 할 때 액세스될 수 있다.

    데이터가 이미 바람직하거나 소망의 데이터 패턴중 어느 한 형태일 때, 변환기(218)가 데이터를 엔코딩하지 않도록 선택될 수 있다는 것을 인지하여야 한다. 다른 말로서, 변환기(218)를 통과하는 모든 데이터가 변환되는 것은 아니다. 데이터 패턴이 변환기(218)에 의해 변환되지 않을 때, 데이터 패턴이 재변환되는 방법을 나타내는 비트가 근본적으로 필요로 되지 않기 때문에, 변환기(218)는 또한, 데이터를 비휘발성 메모리(222)에 저장하기 전 임의의 심볼 또는 비트를 데이터 패턴에 첨가, 프리펜드, 결합 또는 산재시킬 수 있다. 대안적으로, 변환기(218)는 데이터 패턴이 변환기(218)에 의해 처리되지만 변환되지 않는다는 것을 나타내는 데이터 패턴에 비트를 첨가, 프리펜드, 결합 또는 산재시킬 수 있다.

    데이터가 변환기(218)에 의해 처리되면, 처리된 데이터는 전형적으로 비휘발성 메모리(222)에 저장된다. 이하에 보다 상세하게 서술되는 바와 같이, 일 실시예에서, 변환기(218)를 통과하는 엔코딩된 데이터는 버퍼(210)에서 판독되어, 적어도 하나의 다른 변환이 변환기(218)에 의해 변환된 데이터에 대해 수행되도록 하여, 저장 동작이 수행되기 전 심볼 밀도, 예를 들어, 상태 밀도를 부가적으로 변환시킨다. 변환은 데이터 패턴에서 하나 이상의 심볼의 발생 빈도를 감소시키거나 데이터 패턴에서 하나 이상의 심볼의 발생 빈도를 증가시키도록 배치될 수 있는 레벨링 처리를 포함할 수 있다. 레벨링 처리는 또한, 데이터 패턴에서 하나 이상의 심볼의 발생 빈도를 감소시키고 데이터 패턴에서 하나 이상의 심볼의 발생 빈도를 증가시키도록 배치될 수 있다.

    상술된 바와 같이, 비휘발성 메모리 시스템은 하나 이상의 관련된 변환기를 가질 수 있다. 도2c는 본 발명의 실시예에 따라서 다수의 변환기를 포함하는 비휘발성 메모리 시스템과 통신하는 호스트를 도시한 도면이다. 비휘발성 메모리 시스템(202")은 호스트(206)와 통신하여, 이 호스트(206)가 데이터 값을 시스템(202")에 제공하도록 한다. 호스트(206)는 데이터, 예를 들어 "원상태", 즉 변환되지 않은 데이터를 실질적으로 임의의 적절한 변환 알고리즘을 사용하여 데이터를 변환시킬 수 있는 선택적인 제1 변환기(280)에 제공할 수 있다. 적절한 변환 알고리즘은 소정 변환 알고리즘, 적절한 변환을 식별하기 위하여 난수 발생기를 사용하는 것을 토대로 한 변환기, 또는 회전식 변환 알고리즘을 포함할 수 있지만, 이에 국한되지 않는다. 그 후, 선택적인 제1 변환기(280)에 의해 처리되는 데이터는 버퍼(210) 및 통계 발생기(214)에 제공될 수 있다.

    버퍼(210)는 데이터가 변환기(218)에 의해 변환되기 전 데이터를 일시 저장하도록 배치된다. 통계 발생기(214)는 데이터를 분석하거나 그렇치 않다면 감소시켜 변환기(218)에 의해 사용될 정보를 결정하도록 사용되는 통계를 발생시킨다. 일 실시예에서, 통계 발생기(214)는 얼마나 많은 각 심볼이 데이터, 즉 선택적인 제1 변환기(280)에 의해 처리되는 데이터 내에 나타나는지를 결정한다. 통계 발생기(214)는 또한, 전체 데이터 스트림에 대해서 각 심볼의 전체 발생 퍼센티지를 결정하도록 배치될 수 있다.

    변환기(218)는 통계 발생기(214)에 의해 발생되는 통계를 사용하여 바람직한 데이터 패턴으로서 데이터를 엔코딩한다. 서술된 실시예에서, 변환기(218)는 또한 엔코딩된 데이터를 제2 선택적인 변환기(282)로 제공하는데, 이 변환기(282)는 통계 발생기(214)에 의해 발생된 통계를 토대로 하지 않는 실질적으로 임의의 변환을 사용하여 엔코딩된 데이터를 변환시킬 수 있다. 즉, 변환기(218)는 엔코딩된 데이터를 제2 선택적인 변환기(282)에 제공할 수 있으며, 이 변환기(282)는 종래의 변환 방법을 사용하여 엔코딩된 데이터를 더욱 변환시킬 수 있다. 제2 선택적인 변환기(282)는 변환된 데이터를 비휘발성 메모리(222)에 저장할 수 있으며, 이 메모리는 메모리 셀 또는 메모리 블록을 포함할 수 있다. 제1 선택적인 변환기(280) 및 제2 선택적인 변환기(282) 중 어느 하나 또는 둘 다가 비휘발성 메모리 시스템(202")에 포함될 수 있다는 것을 인지하여야 한다.

    도3a는 데이터가 본 발명의 실시예에 따라서 저장되기 전 데이터에 대한 다수의 변환을 수행할 수 있는 비휘발성 메모리 시스템과 통신하는 호스트를 도시한 도면이다. 도2a의 비휘발성 메모리 시스템(202)과 유사하게, 비휘발성 메모리 시스템(302)은 버퍼(310), 변환기(318), 통계 발생기(314) 및 비휘발성 메모리(322)를 포함한다. 비휘발성 메모리(322)는 일반적으로, 데이터를 저장할 수 있는 블록 또는 셀을 포함한다. 시스템(302)은 호스트(306) 또는 소스와 통신하여, 이 호스트(306)가 데이터 값 또는 정보를 시스템(302)에 제공할 수 있도록 한다.

    호스트(306)는 심볼 형태의 데이터를 버퍼(310) 뿐만 아니라 통계 발생기(314)에 제공한다. 호스트(306)가 데이터를 통계 발생기(314)에 제공하지만, 일 실시예에서, 버퍼(310)는 이 대신에 도3b의 비휘발성 메모리 시스템(302')에 도시된 바와 같이 데이터를 통계 발생기(314)에 제공할 수 있다. 도3a를 참조하면, 버퍼(310)는 데이터를 일시 저장하도록 배치되는데, 예를 들어, 버퍼(310)는 데이터가 변환기(318)에 의해 변환되기 전, 데이터를 위한 스테이징 에리어로서 작용할 수 있다. 통계 발생기(314)는 변환기(318)에 의해 사용될 적절한 정보를 식별하도록 효율적으로 사용되는 데이터로부터 통계 정보를 발생시켜 데이터를 처리한다. 당업자가 이해하는 바와 같이, 발생된 통계 정보는 실질적으로 임의의 적절한 정보일 수 있는 반면에, 데이터 내의 특정 심볼 또는 상태의 밀도를 식별하는 통계가 특히 유용할 수 있다.

    데이터로부터 통계 발생기(314)에 의해 발생된 통계는 변환기(318)에 의해 사용되어 바람직한 데이터 패턴으로서 데이터를 엔코딩할 수 있다. 어떤 경우에, 바람직한 데이터 패턴이 단일 변환으로 성취될 수 있을지라도, 비휘발성 메모리(322)에 효율적으로 저장될 수 있는 바람직한 데이터 패턴은 다수의 변환을 사용하여 성취될 수 있다. 예를 들어, 회로 고려사항, 전력 고려사항, 설계 고려사항, 속도 고려사항의 임의의 조합으로 인해, 다수의 변환은 단일 변환에 비해서 바람직할 수 있다. 따라서, 변환된 데이터는 변환기(318)에 의해 버퍼(310) 및 통계 발생기(314)로 제공될 수 있다. 그 후, 통계 발생기(314)는 변환기(318)에 의해 사용될 수 있는 변환된 데이터를 토대로 통계를 발생시켜 데이터를 부가 변환시킬 수 있다. 변환기(318)에 의해 처리된 데이터가 최종적으로 엔코딩되어 관련된 데이터 패턴이 바람직한 경우가 되도록 할 때, 이 데이터는, 비휘발성 메모리(322)에 저장된 데이터 패턴을 생성하도록 사용되는 변환을 식별하는 비트와 함께, 비휘발성 메모리(322)에 저장된다. 일 실시예에서, 변환된 데이터를 완전히 디코딩하는데 필요로되는 실질적으로 모든 필요한 정보를 포함하는 정보는 초기 변환 동안 비휘발성 메모리(322)에 저장될 수 있는데, 예를 들어, 모든 변환과 관련된 정보는 초기 변환이 발생될 때에만 실질적으로 저장될 수 있다.

    도4a는 본 발명의 실시예에 따라서 비휘발성 메모리로 호스트에 의해 제공되는 데이터를 효율적으로 저장하는 것과 관련된 단계를 도시한 공정 흐름도이다. 데이터를 저장하는 공정(400)은 예를 들어 도2a의 비휘발성 메모리 시스템(202) 또는 도3a의 비휘발성 메모리 시스템(302)과 같은 비휘발성 메모리 시스템에 의해, 호스트로부터 데이터를 얻는 단계(404)에서 시작된다. 데이터가 호스트로부터 얻어지면, 데이터는 단계(408)에서 분석된다. 호스트로부터 얻어진 데이터를 분석하는 것은 데이터 내의 특정 심볼 또는 상태의 발생 퍼센티지 또는 밀도에 관한 통계를 발생시키는 것을 포함하지만 이에 국한되지 않는다.

    데이터가 단계(408)에서 분석된 후, 데이터는 단계(412)에서 변환된다. 서술된 실시예에서, 데이터는 단계(408)에서 수행되는 분석을 토대로 효율적으로 변환된다. 예를 들어, 이 분석이 데이터 내의 특정 심볼 또는 상태가 원하는 것보다 높은 밀도 또는 빈도로 발생되었다 라고 결정하면, 이 분석 결과가 사용되어, 선택된 변환이 이들 심볼 또는 상태의 밀도를 감소시키도록 배치될 수 있다. 데이터가 이미 바람직한 경우의 포맷일 때, 데이터는 반드시 변환될 필요가 없다는 것을 이해하여야 한다.

    일반적으로, 데이터가 단계(412)에서 변환될 때, 새로운 데이터 패턴이 발생된다. 새로운 데이터 패턴이 디코딩되도록 하거나 그렇치 않다면 "변환되지 않도록" 하여 호스트로부터 얻어진 원래 데이터 패턴을 효율적으로 재생하기 위하여, 일련의 비트는 새로운 데이터 패턴에 프리펜드, 첨가 또는 결합될 수 있다. 이와 같은 일련의 비트는 원래 데이터 패턴을 엔코딩 하기 위하여 사용되는 변환을 특정시키거나 원래 데이터 패턴으로 새로운 데이터 패턴을 디코딩하기 위하여 사용될 수 있는 적절한 역변환을 특정시키도록 배치될 수 있다.

    데이터의 변환이 완료되는지 여부에 대해 단계(416)에서 결정이 행해진다. 즉, 단계(412)에서 수행되는 변환이 효율적으로 저장될 수 있는 데이터 패턴을 생성하는데 유효한지가 결정된다. 이 변환이 완료되지 않았다라고 결정하면, 전형적으로, 변환된 데이터 패턴 내의 적어도 하나의 심볼 또는 상태가 너무 빈번하게 또는 충분히 빈번하지 않게 발생 된다 라고 나타낸다. 이와 같이, 변환된 데이터 패턴은 적어도 하나의 다른 시간에서 변환될 수 있다. 따라서, 공정 순서는 단계(416)에서 단계(420)로 진행하는데, 이 단계(420)에서 변환된 데이터는 분석되어 변환된 데이터에 관한 통계를 발생시킬 수 있다. 그 후, 단계(424)에서, 변환된 데이터는 분석 결과를 토대로 변환된다. 변환된 데이터가 단계(424)에서 변환된 후, 공정 흐름은 단계(426)로 귀환하는데, 이 단계에서 변환이 완료되었는지가 결정된다.

    데이터가 바람직한 경우로 성공적으로 변환되었다 라고 단계(416)에서 결정되면, 부가적인 변환이 데이터에 대해서 수행되지 않아야 한다 라고 나타낸다. 그러므로, 단계(428)에서, 변환된 데이터는 비휘발성 메모리에 저장되고 데이터를 효율적으로 저장하는 공정은 완료된다.

    호스트에 의해 제공된 데이터를 비휘발성 메모리에 저장하는 또 다른 적절한 방법이 도4b에 도시되어 있다. 도4b는 본 발명의 실시예에 따라서 호스트에 의해 제공된 데이터를 비휘발성 메모리로 효율적으로 저장하는 또 다른 방법과 관련된 단계를 도시하는 공정 흐름도이다. 데이터를 저장하는 공정(400')은 호스트로부터 데이터를 얻는 단계(404')에서 시작된다. 데이터가 호스트로부터 얻어지면, 데이터는 단계(408')에서 분석된다. 호스트로부터 얻어진 데이터를 분석하는 것은 상술된 바와 같이 데이터 내의 특정 심볼 또는 상태의 발생 퍼센티지 또는 밀도에 관한 통계를 발생시키는 것을 포함할 수 있다.

    데이터가 단계(408')에서 분석된 후, 예를 들어 단계(408')에서 수행되는 분석 결과를 사용하는 것처럼, 데이터는 단계(412')에서 변환된다. 데이터가 단계(412')에서 변환될 때, 새로운 데이터 패턴이 전형적으로 발생된다. 새로운 데이터 패턴이 디코딩되거나 그렇치 않다면 "변환되지 않도록"하여 호스트로부터 얻어진 원래 데이터 패턴을 효율적으로 재생하기 위하여, 일련의 비트는 새로운 데이터 패턴에 결합, 예를 들어 첨가될 수 있다. 이와 같이 첨가된 일련의 비트는 원래 데이터 패턴을 엔코딩 하기 위하여 사용되는 변환을 특정시키거나 원래 데이터 패턴으로 새로운 데이터 패턴을 디코딩하기 위하여 사용될 수 있는 적절한 역변환을 특정시키도록 배치될 수 있다.

    단계(412')에서 수행되는 변환이 효율적으로 저장될 수 있는 데이터 패턴을 생성하는데 유효한지가 단계(416')에서 결정된다. 이 변환이 완료되지 않았다라고 결정하면, 전형적으로, 변환된 데이터 패턴 내의 적어도 하나의 심볼 또는 상태가 너무 빈번하게 또는 충분히 빈번하지 않게 발생 된다 라고 나타낸다. 이와 같이, 변환된 데이터 패턴은 적어도 하나의 다른 시간에서 변환될 수 있다. 따라서, 공정 순서는 단계(416')에서 변환된 데이터를 변환시키는 단계(424')로 진행한다. 변환된 데이터가 단계(424')에서 변환된 후, 공정 흐름은 단계(416')로 복귀하는데, 이 단계(414')에서 변환이 완료되는지가 결정된다. 데이터가 바람직한 경우로 성공적으로 변환되었다 라고 단계(416)에서 결정되면, 부가적인 변환이 데이터에 대해서 수행되지 않아야 한다 라고 나타낸다. 그러므로, 단계(428')에서, 변환된 데이터는 비휘발성 메모리에 저장되고 데이터를 효율적으로 저장하는 공정은 완료된다.

    상대적으로 바람직한 경우로서 엔코딩되고 나서 비휘발성 메모리에 저장된 데이터는 효율적으로 저장될 수 있다. 예를 들어, 데이터를 저장하는 것과 관련된 시간은 상대적으로 낮고 데이터를 저장하는데 소모되는 전력은 상대적으로 낮다. 특히, 엔코딩된 데이터 저장과 관련된 시간 및 엔코딩된 데이터를 저장하는데 필요한 전력은, 심지어 덜 바람직한 경우가 상대적으로 바람직한 경우로 변환될 수 있을 때조차도, 저장되는 엔코딩된 데이터의 실질적으로 모든 경우에 대해 일정하게 유지될 수 있다. 게다가, 덜 바람직한 경우가 더 이상 바람직한 경우로 변환되지 않을 때, 덜 바람직한 경우가 바람직한 경우로 변환되는 데이터로서 저장되고 덜 바람직한 경우를 저장하는데 실제로 필요로 되는 회로가 실질적으로 필요로 되지 않는다.

    엔코딩된 데이터가 호스트로부터의 명령에 따라서 비휘발성 메모리로부터 얻어져야 할 때, 엔코딩된 데이터는 일반적으로 호스트에 제공되기 전 디코딩된다. 이와 같은 디코딩은 전형적으로, 비휘발성 메모리와 관련된 비휘발성 메모리 시스템 내에서 발생된다. 도5를 참조하면, 엔코딩된 데이터를 디코딩하는 변환기를 포함하는 비휘발성 메모리 시스템의 일 실시예가 본 발명에 따라서 설명될 것이다. 호스트(506)는 비휘발성 메모리 시스템(502)과 통신하여, 데이터 또는 정보가 호스트(506) 및 시스템(502)간에서 교환될 수 있도록 한다. 호스트(506)가 시스템(502)과 관련된 비휘발성 메모리(522)로부터 데이터를 검색하도록 시도할 때, 변환기에 의해 처리되는 예를 들어 도3의 변환기(318)에 의해 엔코딩되는 데이터는 변환기(518)에서 판독되어 변환 정보 처리기(515)에 제공된다.

    변환 정보 처리기(515)는 일반적으로, 처리된 데이터로부터 정보를 판독하여 변환기(518)에 의해 수행될 적절한 변환을 결정하여 처리된 데이터를 디코딩한다. 상술된 바와 같이, 변환된 데이터가 저장될 때, 변환된 데이터는 데이터를 변환시키기 위하여 어느 변환이 사용되는지 또는 대안적으로 데이터를 변환시키기 위하여 사용되는 변환을 반전시키는데 어느 역변환이 사용될 수 있는지를 표시하는 정보와 함께 저장된다. 그러므로, 변환 정보 처리기(515)는 엔코딩된 데이터로 저장된, 예를 들어 처리된 데이터 패턴 상으로 프리펜드되는 정보를 조사하고 변호나기(518)를 위한 적절한 역변환을 효율적으로 식별하여 엔코딩된 데이터를 디코딩한다. 엔코딩된 데이터가 디코딩될 때, 예를 들어, 엔코딩된 데이터가 원래 상태로 복귀될 때, 디코딩된 데이터는 시스템(502)의 버퍼(510)에 제공된다. 그 후, 버퍼(510)는 디코딩된 데이터를 호스트(506)에 제공한다.

    예를 들어, 적절한 반전 정보를 식별하는 정보가 처리된 데이터 패턴에 프리펜드되는 실시예와 같은 일 실시예에서, 버퍼(510)는 실질적으로 제거될 수 있다. 적절한 반전 정보를 식별하는 정보가 처리된 데이터 패턴에 프리펜드될 때, 적절한 반전 정보는 처리된 데이터 패턴이 변환기(518)에서 판독되기 전 효율적으로 공지된다. 따라서, 적절한 반전 정보를 식별하는 정보가 처리된 데이터에 프리펜드되기 때문에, 변환기(518)는 처리된 데이터가 판독되기 전 반전 정보를 수행하는 방법에 대해서 효율적으로 인식할 것이다. 그러므로, 처리된 데이터를 변환기(518)에 제공하기 전 처리된 데이터를 우선 버퍼링할 필요성이 효율적으로 제거되는데, 그 이유는 적절한 반전 정보가 처리된 데이터가 비휘발성 메모리(522)로부터 판독되기 전 프리펜드된 정보로부터 식별될 수 있기 때문이다.

    또 다른 실시예에서, 변환기는 호스트에 직접적으로 디코딩된 데이터를 제공할 수 있다. 도6은 본 발명의 실시예에 따라서 디코딩된 데이터를 호스트에 직접 제공하는 변환기를 포함하는 비휘발성 메모리 시스템 및 호스트를 도시한 도면이다. 호스트(606)가 비휘발성 메모리 시스템(602)으로부터 정보를 요청할 때, 시스템(602)의 비휘발성 메모리(622)는 처리된, 예를 들어 엔코딩된 데이터를 시스템(602)의 버퍼(610) 및 변환 정보 처리기(615)에 제공한다. 변환 정보 처리기(615)는 처리된 데이터를 처리하는데 어느 변환이 사용되는지 또는 원래 또는 디코딩된 변환으로 처리된 데이터를 복귀시키는데 어느 역변환이 적절한 지를 표시하는 비휘발성 메모리(622)로부터 수신된 처리된 데이터와 관련된 심볼을 판독한다.

    변환 정보 처리기(615)는 정보를 변환기(618)에 제공하여, 비휘발성 메모리(622)로부터 버퍼(610)를 통해서 처리된 데이터를 수신하는 변환기(618)가 처리된 데이터와 관련된 임의의 정보를 반전시키도록 한다. 즉, 변한 정보 처리기(615)에 의해 제공된 정보를 사용하는 변환기(618)는 비휘발성 메모리(622)에 저장되는 엔코딩된 데이터를 디코딩한다. 변환기(618)가 엔코딩된 데이터를 디코딩하면, 디코딩된 데이터는 호스트(606)에 제공된다.

    도3과 관련하여 상술된 바와 같이, 비휘발성 메모리와 관련된 저장 요구조건에 부합하도록 하기 위하여, 다수의 변환이 데이터에 대해서 수행되어, 이 데이터가 바람직한 경우로서 엔코딩 되도록 한다. 즉, 하나 이상의 변환이 데이터를 수용가능한 포맷이라고 간주될 수 있는 것으로 변환시켜, 예를 들어, 데이터와 관련된 최대 허용가능한 퍼센티지보다 작은 저장 소자 또는 셀이 효율적으로 임의의 단일 논리 상태가 되도록 한다. 다수의 변환을 사용하여 데이터를 변환시킬 때, 일반적으로, 다수의 역변환이 사용되어, 변환된 데이터를 디코딩하거나 그렇치 않다면 이 변환된 데이터를 이들의 원래, 즉 변환되지 않은 포맷으로 복귀시킨다.

    도7은 본 발명의 실시예에 따라서 디코딩된 데이터가 호스트에 제공되기 전 데이터를 디코딩하기 위하여 다수의 반복을 사용할 수 있는 변환기를 포함할 수 있는 비휘발성 메모리 시스템 및 호스트를 도시한 도면이다. 비휘발성 메모리 시스템(702)에 저장된 정보에 대한 호스트(706)로부터의 요청에 응답하여, 시스템(702)의 비휘발성 메모리(722)는 데이터, 예를 들어, 엔코딩된 데이터를 시스템(702)의 변환기(718) 및 변환 정보 처리기(715)에 제공한다. 변환 정보 처리기(715)는 엔코딩된 데이터를 처리하는데 어느 변환이 사용되는지 또는 원래 또는 디코딩된 변환으로 엔코딩된 데이터를 복귀시키는데 어느 역변환이 적절한 지를 표시하는 비휘발성 메모리(722)로부터 수신된 엔코딩된 데이터와 관련된 비트를 판독한다. 서술된 실시예에서, 관련된 정보 또는 반전 정보를 표시하는 심볼은 또한, 변환이 수행되는 순서 또는 대안적으로 역변환이 수행되어야 하는 순서를 표시하는 정보를 포함할 수 있다. 게다가, 심볼은 수행되는 다수의 변환에 관한 정보를 포함할 수 있다.

    변환 정보 처리기(715)는 변환기(718)에 정보를 제공하여, 변환기(718)가 엔코딩된 데이터에 대해 제1 반전 정보를 수행할 수 있도록 한다. 변환 정보 처리기(715)에 의해 변환기(718)에 제공되는 정보는 이 변환기(718)가 엔코딩된 데이터에 대해 적절한 역변환을 수행하도록 결정한다. 변환기(718)가 엔코딩된 데이터에 대해 제1 반전 변환을 수행하면, 변환기(718)는 적어도 부분적으로 디코딩된 데이터를 버퍼(710)에 제공한다.

    부가적인 변환이 부분적으로 디코딩된 데이터에 대해 수행되면, 버퍼(710)는 부분적으로 디코딩된 데이터를 변환기(718)에 제공하고 선택적으로 변환 정보 처리기(715)에 제공한다. 비휘발성 메모리(722)에 저장되는 엔코딩된 데이터가 완전하게 디코딩될 때, 버퍼(710)는 디코딩된 데이터를 호스트(706)에 제공한다. 데이터를 엔코딩 하도록 수행되는 변환 또는 엔코딩된 데이터를 디코딩하도록 작용할 수 있는 역변환을 표시하는 심볼이 변환기(718)에 의해 호스트(706)에 제공되는 데이터 패턴으로부터 전반적으로 제거된다는 것을 이해하여야 한다.

    일반적으로, 엔코딩된 데이터를 디코딩하는 것과 관계된 단계는 광범위하게 변화될 수 있다. 도8과 관련하여, 엔코딩된 데이터를 디코딩하는 한 가지 방법은 본 발명의 실시예에 따라서 서술될 것이다. 공정(800)은 비휘발성 메모리, 예를 들어, 전체 메모리 시스템의 일부인 비휘발성 메모리로부터 데이터를 얻는 단계(804)에서 시작된다. 전형적으로, 엔코딩된 데이터에 대한 요청이 호스트로부터 수신될 때, 특히, 엔코딩된 데이터는 비휘발성 메모리로부터 변환기 또는 버퍼로 판독된다.

    데이터가 비휘발성 메모리(804)로부터 얻어지면, 데이터는 단계(808)에서 변환 정보를 토대로 변환된다. 서술된 실시예에서, 역변환은 비휘발성 메모리에 저장된 데이터에 대해 수행된다. 상술된 바와 같이, 데이터에 대해 수행되는 역변환은 비휘발성 메모리에 저장된 데이터와 함께 저장되는 심볼을 판독함으로써 결정될 수 있다.

    데이터에 대한 변환이 완료되었는지에 대한 결정이 단계(812)에서 행해진다. 즉, 단계(804)에서 얻어진 데이터가 원래 포맷, 즉 데이터가 저장을 위하여 변환되기 전의 포맷으로 다시 변환되었는지가 결정된다. 데이터에 대한 변환이 완료되었다라고 결정하면, 데이터를 완전히 디코딩하는데 부가적인 역변환이 필요로 되지 않는다 라고 나타낸다. 다른 말로서, 데이터가 이미 디코딩되었다 라고 나타낸다. 이와 같이, 디코딩된 데이터는 단계(816)에서 호스트에 제공되고, 데이터를 디코딩하는 공정은 완료된다.

    대안적으로, 데이터에 대한 변환이 완료되지 않았다라고 단계(812)에서 결정하면, 데이터가 원래의 포맷으로 복귀되기 전 데이터에 대해 적어도 하나의 부가적인 변환이 수행되어야 한다는 것을 나타낸다. 그러므로, 공정 흐름은 단계(812)에서 이미 부분적으로 변환된 데이터, 즉 이미 부분적으로 디코딩된 데이터가 이 데이터와 함께 저장된 변환 정보를 토대로 또다시 변환되는 단계(820)로 이동한다. 부분적으로 변환된 데이터에 대한 변환이 완료되면, 공정 흐름은 단계(804)에서 얻어진 데이터에 대한 정보가 완료되었는지에 대한 결정을 행하는 단계(812)로 복귀한다.

    상술된 바와 같이, 변환기는 입력 데이터를 처리, 예를 들어, 엔코딩 하여 입력 데이터의 출력 데이터 버전을 생성한다. 변환기는 일반적으로 어떤 적절한 변환 또는 변환 알고리즘을 사용하여 입력 데이터를 처리할 수 있다. 도9a는 본 발명의 실시예에 따라서 데이터를 엔코딩하는 변환기를 도시한 도면이다. 도2a의 변환기(218) 또는 도3a의 변환기(318)로 도시될 수 있는 변환기(918)는 호스트로부터 입력(930)을 수신하도록 배치된다. 변환기(918)는 입력(930)을 처리하여 출력(934)을 발생시키는데, 이 출력은 전형적으로 입력(930)의 표시이다. 일 실시예에서, 입력(930)은 저장 면에서 상대적으로 비효율적이라고 간주될 수 있는 제1 데이터 포맷에 배치될 수 있다. 입력(930)이 제1 포맷일 때, 변환기(918)는 입력(930)을 처리하여, 출력(934)이 효율적으로 입력(930)의 변환된 또는 엔코딩된 버젼이 되도록 한다. 상술된 바와 같이, 입력(930)의 엔코딩된 표시 이외에도, 출력(934)은 전형적으로 출력(934)을 발생시키는데 사용되는 변환을 나타내는 정보를 포함한다. 이와 같은 정보는 셀 또는 과다 심볼, 예를 들어 2개의 셀 또는 2개의 과다 심볼에 저장될 수 있는데, 이는 입력(930)의 변환된 버전을 포함하는 출력(934) 내의 셀에 효율적으로 첨가된다.

    변환기(918)는 일반적으로, 실질적으로 임의의 심볼의 밀도를 레벨링 할 수 있는데, 예를 들어, 이 심볼의 밀도를 감소 또는 증가시킬 수 있다. 예를 들어, 변환기(918)는 심볼 또는 논리 상태를 최고 밀도와 레벨링 하여 심볼의 밀도를 감소시킨다. 일 실시예에서, 최고 밀도를 갖는 심볼은 최저 밀도를 갖는 심볼을 사용하여 레벨링될 수 있는데, 즉 최고 밀도를 갖는 심볼을 레벨링 아웃하는 것은 엔코딩되지 않은 포맷으로 최저 밀도를 갖는 심볼의 밀도를 증가시킴으로써 성취될 수 있다. 다수의 변환 또는 레벨링 공정은 변환된 출력이 예를 들어 비휘발성 메모리에 저장되기 전 각 심볼의 소망 밀도를 성취하도록 사용될 수 있다. 어떤 시스템에서, 심볼이 대략 50% 보다 큰 시간에서 나타나지 않도록 논리 상태를 레벨링 하면, 대략 5%의 수행성능 속도가 개선된다.

    레벨링 알고리즘의 일 예가 도9b에 도시되어 있다. 특히, 도9b는 본 발명의 실시예에 따라서 도9a의 엔코딩 변환기(918)와 관련된 변환을 도시한 도면이다. 도시된 바와 같이, 최고 조밀한 입력(930')의 심볼은 심볼 "D"로 라벨이 붙여진 반면에, 최저 조밀한 입력(930')의 심볼은 심볼 "D"로 라벨이 붙여진다. 서술된 실시예에서, 최고 조밀한 심볼 및 최저 조밀한 심볼은 입력(930')과 잠재적으로 관련된 16개의 심볼들중 2개의 심볼이다. 설명을 간단화하기 위하여, 우선 단지 심볼 "D" 및 "S"만이 도시되어 있다. 그러나, 입력(930')과 관련된 데이터 스트림 전체에 걸쳐서 어느 곳에서든 다른 심볼이 실질적으로 발생될 수 있다는 것을 인지하여야 한다. 다른 말로서, 다른 심볼은 입력(930')과 관련된 데이터 스트림 내에서 진행, 추종, 또는 산재될 수 있다. 예시를 위하여, 심볼 "F" 및 심볼 "G" 각각의 단일 발생이 입력(930')과 관련된 데이터 스트림에 도시되어 있지만, 심볼 "F" 및 "G"는 심볼 "S"보다 빈번히 입력(930)에서 나타난다. 서술된 실시예에서, 심볼 "F" 및 "G"의 사용을 수반하는 레벨링이 수행되지 않는다. 그러므로, 심볼 "F" 및 "G"의 발생은 변환기(918')에 의해 효율적으로 변환되지 않는다.

    입력(930')이 순서화된 데이터 스트림, 즉 엔코딩 변환기(918')에 순차적으로 제공되는 데이터 스트림인 반면에, 데이터 스트림은 비순서화된 포맷으로 제공될 수 있다. 데이터 스트림이 비순서화된 포맷으로 제공될 때, 엔코딩 변환기(918')와 관련된 공정은 비순서화된 데이터 스트림을 변환하도록 수정될 수 있다.

    입력(930')은 심볼 "S"을 사용하여 심볼 "D"을 레벨링하도록 배치된 엔코딩 변환기(918')에 제공된다. 즉, 엔코딩 변환기(918')는 심볼 "S"의 사용을 통해서 심볼 "D"의 밀도를 감소시키는 변환 알고리즘을 실행한다. 서술된 실시예에서, 엔코딩 변환기(918')는 심볼 "D" 또는 "S"의 제1 발생이 동일하게 유지되도록 한다. 특히, 어느 심볼이 입력(930') 내에서 먼저 발생되든지, 심볼 "D" 및 심볼 "S"간에선 동일한 심볼로 엔코딩된다. 다음 발생하는 모든 심볼 "S"는 가장 최근의 이전 엔코딩된 심볼 "D" 또는 "S"와 동일한 심볼로 엔코딩된다. 예를 들어, 가장 최근의 이전 심볼이 심볼 "S"로서 엔코딩되면, 현재 심볼 "S"은 심볼"S"로 엔코딩되거나, 가장 최근의 이전 엔코딩된 심볼이 심볼 "D"로 엔코딩되면, 현재 심볼"S"은 심볼"D"로 엔코딩된다. 다음 모든 경우의 입력 심볼 "D"은 가장 최근의 이전 엔코딩된 심볼과 대향되는 방식으로 엔코딩된다. 예를 들어, 가장 최근의 이전 심볼이 심볼 "S"로 엔코딩되면, 현재 심볼 "D"은 심볼 "D"로 엔코딩되고, 가장 최근의 이전 심볼이 심볼 "D"로 엔코딩되면, 현재 심볼 "D"은 심볼"S"로 엔코딩된다.

    도시된 바와 같이, 출력(934')은 보다 적게 발생되는 심볼 "D"을 포함하는 입력(930')의 레벨링된 표현이다. 다른 말로서, 심볼 "D"의 밀도는 출력(934')에서 감소된다. 심볼 "S"의 밀도가 증가된 것으로 도시되지만, 심볼 "S"의 밀도는 또 다른 심볼을 사용하여 심볼 "S"을 레벨링함으로써 감소될 수 있다는 것을 인지하여야 한다. 즉, 심볼 "S"은 출력(934')에서 소망 밀도보다 높은 것으로 식별될 수 있고 출력(934')을 새로운 입력으로서 엔코딩 변환기(918')에 제공함으로써 보다 낮은 밀도, 즉 성긴 밀도(sparse density)를 갖는 서로 다른 심볼을 사용하여 제2 변환을 수행시 레벨링될 수 있다.

    16개의 상태 또는 심볼이 존재하는 실시예의 경우에, 입력(918')에서 최고 조밀한 심볼 및 최저 조밀한 심볼을 레벨링 아웃하는데 유용하게 사용될 수 있는 거의 최대 240개의 변환 알고리즘이 존재할 수 있다. 이와 같은 실시예에서, 변환은 단일 쌍의 심볼을 레벨링하는 것을 포함할 수 있고 입력(930')과 관련된 최저 밀도 심볼은 변환 후 대략 6.67% 보다 작게 발생될 수 있다. 변환기(918')는 심볼을 레벨링하는데 사용되어, 대략 50%보다 큰 시간에서 변환된 데이터 패턴에서 심볼이 발생되지 않도록 한다. 예를 들어, 도시된 바와 같이, 심볼 "D"이 심볼 "S"와 레벨링되어, 심볼 "D" 또는 심볼 "S" 어느것도 대략 50% 보다 큰 시간에서 출력(934)에서 발생되지 않도록 한다.

    변환기(918')는 또한 예를 들어 다수의 변환을 순차적으로 수행함으로써 데이터를 순차적으로 엔코딩하는데 사용될 수 있다. 데이터가 순차적으로 엔코딩될 때, 변환기(918')는 최고 조밀한 상태 또는 심볼을 최저 조밀한 상태 또는 심볼과 레벨링 할 수 있다. 엔코딩된 데이터(934') 세트가 형성되면, 변환기(918')는 새로운 최고 조밀한 심볼, 즉 엔코딩된 데이터에서 최고 조밀한 심볼을 새로운 최고 성긴 심볼, 즉 엔코딩된 데이터에서 최고 성긴 심볼과 레벨과 레벨링할 수 있다. 2개의 순차적인 레벨링 공정이 16개의 심볼을 지닌 실시예에서 발생된 후, 대략 50% 보다 큰 시간에서 완료된 변환에서 발생되는 심볼은 존재하지 않는다. 일 실시예에서, 2개의 일련의 레벨링 공정이 발생된 후, 변환기(918')는 새로운 최고 조밀한 심볼을 새로운 최고 성긴 심볼과 레벨링 할 수 있는데, 즉 2회 엔코딩된 데이터에서 최고 조밀하고 최고 성긴 심볼을 레벨링 할 수 있다. 이와 같은 제3 변환에 따라서, 대략 50%의 보다 큰 시간에서 완료된 변환에서 심볼이 발생되지 않는다.

    변환기(918')는 실질적으로 동시에, 즉 병렬로 2개 이상의 조밀한 심볼을 레벨링 하도록 배치될 수 있다. 변환기(918')를 어떠한 통과 중에, 변환기(918')는 동시에 최고 조밀한 심볼을 최고 성긴 심볼과 레벨링 할 수 있을 뿐만 아니라 두번째 조밀한 심볼을 두번째 성긴 심볼과 레벨링 하도록 배치될 수 있다. 예를 들어, 상술된 바와 같이, 최고 조밀한 심볼을 최저 조밀한 심볼과 레벨링 할 때, 대략 50% 보다 큰 시간에서 엔코딩된 데이터 또는 출력(934)에서 심볼이 발생되지 않는다. 그러나, 엔코딩된 데이터 내의 최고 조밀한 심볼이 엔코딩된 데이터 내의 최고 성긴 심볼과 레벨링 되도록 하는 반면, 변환기(918')를 두번째 통과하는 동안, 엔코딩된 데이터 내의 두번째 조밀한 심볼은 엔코딩된 데이터 내의 두번째 성긴 심볼과 레벨링 되도록, 변환기(918')가 데이터를 순차적으로 엔코딩할 때, 2회 엔코딩된 데이터 내의 심볼은 대략 25% 보다 큰 시간에서 발생되지 않는다.

    데이터 세트에 대해 수행되는 반복적인 변환과 관련된 부가적인 복잡도를 가산하면, 상기 예에 도시된 바와 같이, 최대 심볼 밀도를 더욱 감소시킨다. 그러나, 상술된 바와 같이 최대 밀도의 심볼을 감소시키는 공정과 관련된 복잡도는, 증가되는 레벨링 정도와 관련된 이점들이 효율적으로 절충될 정도로 저장 동작의 전체 수행성능에 영향을 미칠 수 있다. 이 복잡도는 다수의 변환을 완료하는데 요구되는 부가적인 전력, 부가적인 회로, 또는 부가적인 계산 시간과 관련될 수 있다. 그러므로, 레벨링 또는 변환 공정과 관련된 복잡도 및 저장 이점들 간의 균형을 취할 수 있다. 게다가, 논리 비용, 예를 들어 변환을 병렬 또는 실질적으로 동시에 발생시키는데 필요로 되는 회로 및 다수의 변환을 순차적으로 수행하는데 필요로 되는 시간 간에 균형을 취할 수 있다.

    데이터가 엔코딩되거나 레벨링되면, 저장된 엔코딩된 데이터에 대한 검색이 요청될 때, 엔코딩된 데이터는 일반적으로 디코딩 변환기로 입력된다. 도10a는 본 발명의 실시예에 따라서 데이터를 디코딩하는 변환기를 도시한 도면이다. 디코딩 변환기(1018)는 일반적으로 도9a의 엔코딩 변환기(918)와 같은 엔코딩 변환기에 의해 처리, 예를 들어 엔코딩 되거나 레벨링 되는 입력(1030)을 수신한다. 일 실시예에서, 디코딩 변환기(1018) 및 도9a의 엔코딩 변환기(918)는 비휘발성 메모리 시스템과 관련된 전체 변환기의 부분일 수 있다. 디코딩 변환기(1018)는 입력(1030)을 디코딩하여 출력(1034)을 발생시킨다. 전형적으로, 출력(1034)은 엔코딩 변환기에 제공된 입력, 예를 들어 도9a의 입력과 동일한 포맷으로 이루어진다.

    도10b를 참조하면, 도9b의 엔코딩 변환기(918')에 의해 수행되는 엔코딩을 효율적으로 반전시키는데 적합한 디코딩 변환기가 본 발명의 실시예에 따라서 서술될 것이다. 도9b의 엔코딩 변환기(918')에 의해 엔코딩되는 입력(1030')은 디코딩 변환기(1018')에 제공된다. 디코딩 변환기(1018')는 입력(1030')에서 심볼, 예를 들어 입력(1030')으로 산재된 2개의 심볼을 판독함으로써 얻어진 정보를 사용하도록 배치되는데, 상기 2개의 심볼은 입력(1030')을 생성하는데 사용되는 변환을 식별하거나, 대안적으로, 입력(1030')을 디코딩하도록 사용되어 출력(1034')을 생성시키는 적절한 역변환을 식별한다.

    서술된 실시예에서, 디코딩 변환기(1018')는 제1 발생되는 심볼 "D" 또는 심볼 "S"중 어느 것도 변화시키지 않는다. 디코딩 변환기(1018')는, 현재 심볼 "S"의 발생은 입력(1030')에서 심볼 "D"의 발생 보다 심볼"S"의 발생보다 최근에 뒤에 있게 되면, 실질적으로 모든 심볼"S"의 발생을 심볼"S"로서 디코딩하도록 배치된다. 즉, 입력(1030')에서 보다 최근의 이전 심볼이 심볼 "S"이면, 현재 심볼"S"의 발생은 심볼 "S"로서 디코딩된다. 그렇치 않다면, 현재 심볼 "S"의 발생이, 현재 심볼 "S"의 발생이 최초 심볼"S"의 발생이지 않는 한, 심볼 "D"로 디코딩되고 최초 심볼 "D"의 발생전 발생되는데, 이 경우에 현재 심볼 "S"의 발생이 심볼 "S"로서 디코딩된다.

    디코딩 변환기(1018')는 또한, 현재 발생이 심볼 "S" 보다 심볼 "D"보다 최근에 뒤에 있다면 현재 심볼 "D"의 발생을 심볼 "S"로서 디코딩하고, 현재 발생이 심볼 "S"보다 최근에 뒤에 있다면 현재 심볼 "D"의 발생을 심볼 "D"로 디코딩한다. 최초 심볼"D"의 발생은, 입력(1030')에서 어떤 심볼"S"의 발생 전 발생되면, 심볼 "D"로 디코딩된다.

    특정 심볼 도는 상태의 최대 밀도가 최소화되도록 데이터가 변환될 수 있지만, 데이터는 또한, 효율적으로 각 심볼 또는 상태가 최소 밀도를 갖도록 변환될 수 있다. 예를 들어, 심볼이 "1" 또는 "0"중 어느 하나인 2진 시스템에서, 데이터는 도9b의 변환기(918')를 사용하여 변환되어, 변환된 데이터에서 심볼 "1"의 퍼센티지 및 변환된 데이터에서 심볼 "0"의 퍼센티지 각각이 최소 대략 33% 보다 크게되도록 한다.

    단지 몇 가지의 본 발명의 실시예가 서술되었지만, 본 발명의 원리 또는 범위를 벗어남이 없이 본 발명이 이외 다른 수많은 다양한 형태로 구현될 수 있다는 것을 인지하여야 한다. 예를 들어, 데이터 엔코딩 및 디코딩 공정은 일반적으로 호스트 시스템과 통신하는 메모리 장치상에서 발생되는 것으로 서술되었지만, 이 대신에, 엔코딩 및 디코딩 공정중 어느 한 공정 또는 둘 다가 호스트 시스템 상에서 발생될 수 있다. 다른 말로서, 호스트 시스템은 변환된 데이터가 메모리 장치 상에 저장되도록 하기 전 통계를 토대로 저장될 데이터에 관한 통계를 발생시키고 데이터를 서로 다른 포맷으로 변환시키도록 배치될 수 있다. 대안적으로, 호스트 시스템은 메모리 장치로부터 엔코딩된 데이터를 판독, 데이터를 디코딩하는데 적합한 변환을 결정하고 나서 데이터를 디코딩하도록 배치될 수 있다.

    본 발명은 일반적으로, 어떤 적절한 메모리 장치와 관련하여 구현될 수 있다. 상술된 바와 같은 적절한 메모리 장치는 PC 카드, 콤팩트 플래시 카드, 다매체 카드 및 보안 디지털 카드를 포함할 수 있다. 이외 다른 적절한 메모리 장치는 스마트 매체 카드 및 메모리 스틱 카드를 포함할 수 있지만 이에 국한되지 않는다.

    일 실시예에서, 호스트는 데이터 패턴 및 통계를 메모리 장치에 제공하기 전 데이터 패턴을 위한 통계를 발생시킬 수 있다. 호스트가 통계를 발생시킬 때, 메모리 장치는 어떤 통계를 발생시킴이 없이 데이터 패턴을 바람직한 포맷으로 변환시킬 수 있다. 즉, 호스트가 데이터 패턴과 관련된 통계를 발생시킬 때, 메모리 장치는 간단히 이들 통계를 사용하여 데이터 패턴을 변환시킬 수 있다.

    상술된 바와 같이, 소정 데이터 세트 또는 패턴에 대해 다수의 변환을 수행하여 데이터 세트를 저장을 위한 적절한 포맷으로 변환시킨다. 일 실시예에서, 다수의 변환의 각 변환이 완료된 후, 변환 또는 중간 변환은 통계 발생기에 의해 조사되거나 처리되어, 효율적으로 저장가능한 포맷을 생성하는데 부가적인 변환이 필요로되는지를 결정한다.

    데이터를 엔코딩하는 변환기가 데이터를 디코딩하는 변환기로와 별도로 설명되었지만, 단일 변환기가 일반적으로 데이터를 엔코딩 및 디코딩할 수 있다는 것을 인지하여야 한다. 즉, 비휘발성 메모리 시스템은 데이터를 엔코딩 및 디코딩하는 기능을 지닌 단일 변환기를 포함할 수 있다. 유사하게, 통계 발생기 및 변환 정보 처리기는 변환될 데이터와 관련된 통계를 결정하고 변환된 데이터가 변환되는 방법을 효율적으로 결정하도록 배치되는 단일 처리기의 부분이 될 수 있다.

    다수의 역변환은 실질적으로 임의의 비휘발성 메모리 시스템과 관련된 변환된 데이터에 대해 수행될 수 있다. 다른 말로서, 비휘발성 메모리로부터 변환기로 그 후 버퍼에서 데이터를 판독하는 시스템에서 다수의 역변환이 데이터를 변환하는데 사용하는데 적합한 것으로 설명되었지만, 다수의 역변환은 또한 변환된 데이터가 변환기에 의해 처리되기 전 버퍼에 제공되는 시스템에서 수행될 수 있다.

    덜 바람직한 데이터 패턴 또는 코너 경우(corner cases)로부터 바람직하거나 보다 보편적인 데이터 패턴을 효율적으로 생성하기 위한 데이터 변환이 데이터를 보다 효율적으로 저장시키는 것으로서 설명되었지만, 이외 다른 다양한 목적을 위하여 바람직한 데이터 패턴을 효율적으로 생성하도록 데이터를 변환할 수 있다는 것을 인지하여야 한다. 즉, 데이터 세트 내에 나타나는 심볼의 레벨링은 실질적으로 임의의 적절한 목적을 위하여 수행될 수 있다는 것을 인지하여야 한다. 예를 들어, 한 사이트로부터 또 다른 사이트로 전송되어야 하는 데이터 패턴 내의 레벨링 상태는 전송 공정이 보다 효율적으로 발생되도록 하고 수신 공정이 보다 효율적으로 발생되도록 할 수 있다. 이와 같은 전송 공정은 네트워크 내에서 유선 전송 또는 네트워크 내에서 무선 전송을 포함할 수 있다.

    또 다른 상태를 사용하여 한 상태를 레벨링 하도록 사용하는데 적합한 것으로서, 예를 들어, 도9b와 관련하여 변환이 상술되었다. 상술된 바와 같이, 하나 이상의 상태가 감소되어야 할 때, 다수의 변환이 사용될 수 있다. 이와 같은 변환기를 통과하는 하나만이 하나 이상의 상태를 감소시키도록 배치될 수 있다는 것을 인지하여야 한다. 예를 들어, 2개 이상의 심볼 또는 상태 쌍들은 이와 같은 변환기를 통과하는 하나에서 레벨링될 수 있다. 하나 이상의 상태 쌍이 이와 같은 변환기를 통과하는 하나에서 레벨링될 때, 데이터에 대한 소정 변환 또는 레벨링을 완료하는데 이 변환기를 통과하는 전체 몇 개가 필요로될 수 있다.

    일반적으로, 데이터를 엔코딩하고 디코딩하는 것과 관련된 단계는 광범위하게 변화될 수 있다. 단계들은 본 발명의 원리 또는 영역을 벗어남이 없이 부가, 제거, 변경 및 렌더링될 수 있다. 예를 들어, 엔코딩 또는 변환 공정에서, 상술된 바와 같이, 데이터 전체 변환을 완료하도록 사용되어야 하는 변환이 원상태 또는 변환되지 않은 데이터가 분석될 때를 결정하는 실시예에서, 변환된 데이터를 분석하는 단계는 실질적으로 제거될 수 있다. 대안적으로, 변환된 데이터를 분석하는 단계는 전체 변환이 완료되었는지에 대한 결정을 진행할 수 있다.

    데이터 세트 내의 상태의 변환 또는 레벨링은 데이터 세트의 변환된 버전 내에서 임의의 한 상태의 최대 밀도를 실질적으로 최소화하거나 데이터 세트의 변환된 버전 내에서 임의의 한 상태의 최소 밀도를 실질적으로 최대화하는데 사용하는데 적합한 것으로서 설명되었다. 상태 레벨링은 또한, 또 다른 상태의 최소 밀도를 실질적으로 최대화하면서 특정 상태의 최대 밀도를 실질적으로 최소화하도록 수행된다. 상태 레벨링은 또한, 데이터 세트의 변환된 버전의 모든 상태의 밀도가 효율적으로 소정 범위에 있도록 수행될 수 있다. 다른 말로서, 데이터 세트의 변환된 버전내에서, 상태가 상부 임계값을 초과하는 밀도를 갖지 않고 상태가 상부 임계값 보다 아래로 떨어지는 밀도를 갖지 않도록, 상태는 레벨링될 수 있다. 서로 다른 상태에 대한 상부 임계값이 실질적으로 동일하게 될 수 있고 서로 다른 상태에 대한 하부 임계값이 실질적으로 동일하게 될 수 있지만, 임계값은 또한 서로 상태에 대해서 상이하게 될 수 있다.

    데이터 패턴 또는 데이터 세트 내에서 특정 상태의 밀도를 결정하는 것은 데이터 패턴 내에서 특정 상태의 퍼센티지를 결정하는 것과 관련하여 설명된다. 일 실시예에서, 예를 들어, 데이터 패턴의 길이가 실질적으로 고정된 실시예에서, 특정 상태의 밀도를 결정하는 것은 실질적으로 단지 특정 상태의 발생을 카운트하는 것만을 수반할 수 있다. 이와 같이, 특정 상태의 밀도를 결정하는 것은 일반적으로, 카운트 또는 퍼센티지와 같은 수치값을 각 상태의 발생과 관계시키는 것을 수반한다.

    데이터 세트에 대해 수행되는 레벨링 또는 변환 량은 일반적으로, 데이터 세트의 변환된 버전 내의 상태가 소망의 최대 및 최소 밀도에 부합할 수 있도록 선택될 수 있지만, 레벨링 또는 변환 량은 또한 본 발명의 원리 또는 영역을 벗어남이 없이 어떤 기준을 토대로 선택될 수 있다. 예를 들어, 레벨링 량은 특정 계산 오버헤드 량이 초과되지 않도록 선택될 수 있다. 특정 계산 오버헤드 량이 초과되지 않도록 레벨링 량을 선택하면, 데이터를 변환시키고 저장시키는 것과 관련된 전체 시스템의 수행성능에 상당한 영향을 미치지 않고도 데이터를 저장하는 효율을 개선시킬 수 있다. 계산 오버헤드가 특정 레벨을 초과하지 않는다 라고 규정하는 실시예가 변환 공정을 다소 절충시킬 수 있지만, 예를 들어 특정 상태의 최대 밀도는 바람직한 것 보다 다소 높게될 수 있지만, 이 절충은 전체 시스템의 수행성능이 특정 레벨로 유지되면 수용되는 것으로 간주될 수 있다. 그러므로, 본 예들은 예시를 위한 것이지 제한하고자 하는 것이 아니고, 본 발명은 본원에 제공된 상세사항으로 국한되는 것이 아니라 첨부된 청구범위의 영역 내에서 수정될 수 있다.

    QQ群二维码
    意见反馈