KR20150079917A - 반도체 기억 장치 및 그 제어 방법 - Google Patents

반도체 기억 장치 및 그 제어 방법 Download PDF

Info

Publication number
KR20150079917A
KR20150079917A KR1020157014282A KR20157014282A KR20150079917A KR 20150079917 A KR20150079917 A KR 20150079917A KR 1020157014282 A KR1020157014282 A KR 1020157014282A KR 20157014282 A KR20157014282 A KR 20157014282A KR 20150079917 A KR20150079917 A KR 20150079917A
Authority
KR
South Korea
Prior art keywords
data
memory
mirror
error
unit
Prior art date
Application number
KR1020157014282A
Other languages
English (en)
Other versions
KR101700057B1 (ko
Inventor
겐 다께우찌
슈헤이 다나까마루
Original Assignee
가코호진 쥬오 다이가쿠
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 가코호진 쥬오 다이가쿠 filed Critical 가코호진 쥬오 다이가쿠
Publication of KR20150079917A publication Critical patent/KR20150079917A/ko
Application granted granted Critical
Publication of KR101700057B1 publication Critical patent/KR101700057B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1009Cache, i.e. caches used in RAID system with parity

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)
  • Read Only Memory (AREA)

Abstract

신뢰성을 높이고, 또한, 하나의 계층으로 SSD를 효율적으로 제어한다.
본 발명에 따른 반도체 기억 장치는, 프라이머리 메모리(3)와, 프라이머리 메모리(3)에 저장되는 데이터에 대응하는 데이터가 저장되는 미러 메모리(4)와, 버퍼 메모리(5) 중 적어도 하나의 메모리와, 적어도 하나의 메모리를 제어하여, 적어도 하나의 메모리에 데이터를 저장하고, 적어도 하나의 메모리로부터 데이터를 판독하는 제어 장치(2)를 구비한다.

Description

반도체 기억 장치 및 그 제어 방법{SEMICONDUCTOR STORAGE DEVICE AND CONTROL METHOD FOR SAME}
[관련 출원에의 크로스 레퍼런스]
본 출원은, 일본 특허 출원2012-263033호(2012년 11월 30일 출원)의 우선권을 주장하는 것이며, 그 출원의 개시 전체를, 여기에 참조를 위하여 원용한다.
본 발명은 반도체 기억 장치 및 그 제어 방법에 관한 것으로서, 특히, 불휘발성 메모리를 구비하는 반도체 기억 장치 및 그 제어 방법에 관한 것이다.
최근 들어, 빅 데이터를 다루는 기업 등에 있어서, 고속, 저소비 전력이라고 하는 특징을 갖는 SSD(Solid State Drive)를 스토리지 시스템에 채용하는 것의 수요가 높아지고 있다.
종래의 스토리지 시스템은, 도 32에 도시하는 예와 같이, 서버, 디스크 어레이, SSD 및 NAND 플래시 메모리 등, 많은 계층을 갖는 구성으로 되어 있고, 각각의 계층에서, 데이터에 용장성을 갖게 하고, 또한, 에러 정정을 행함으로써, 신뢰성을 향상시키고 있었다.
또한, 복수의 기억 장치를 조합하여 신뢰성을 향상시키는 기술로서, 여러 종류의 RAID(Redundant Arrays of Independent Disks)가 제안되어 있다(예를 들어, 비특허문헌 1 참조).
선행기술문헌
비특허문헌
비특허문헌1: Mike Ault, "Oracle and RAID Usage", [online], [2012년 11월 22일 검색], 인터넷 <URL: http://www.dba-oracle.com/oracle_tips_raid_usage.htm>
빅 데이터를 다루는 스토리지 시스템에 있어서는, 계층을 초과하여 데이터를 카피하는 경우가 많다. 그러나, 종래의 스토리지 시스템은 많은 계층을 갖고, 각계층에 존재하는 컨트롤러가 독립하여, 데이터의 용장성이나 에러 정정을 최적화하고 있었기 때문에, 중복되어 있는 부분이 많아 효율이 나쁜 시스템이 되어 있는 것이 많았다.
따라서, 이러한 점을 감안하여 이루어진 본 발명의 목적은, 신뢰성이 높고, 또한, 하나의 계층으로 SSD를 효율적으로 제어할 수 있는 반도체 기억 장치 및 그 제어 방법을 제공하는 데 있다.
상기 과제를 해결하기 위해서, 본 발명에 따른 반도체 기억 장치는, 프라이머리 메모리와, 상기 프라이머리 메모리에 저장되는 데이터에 대응하는 데이터가 저장되는 미러 메모리와, 버퍼 메모리 중 적어도 하나의 메모리와, 상기 적어도 하나의 메모리를 제어하여, 상기 적어도 하나의 메모리에 데이터를 저장하고, 상기 적어도 하나의 메모리로부터 데이터를 판독하는 제어 장치를 구비한다.
또한, 본 발명에 따른 반도체 기억 장치에 있어서, 상기 제어 장치는, 호스트 장치로부터 수취한 데이터를 에러 정정 부호화하는 에러 정정 부호화부와, 페이지 단위의 데이터가 상기 에러 정정 부호화부에 기입될 때마다, 비트선 방향의 패리티 비트를 산출하여 상기 버퍼 메모리에 저장하는 페이지 RAID부와, 상기 페이지 RAID부로부터 수취한 데이터를 상기 프라이머리 메모리 및 상기 미러 메모리에 저장하는 역미러부이며, 상기 프라이머리 메모리에는 수취한 상기 데이터를 그대로 저장하고, 상기 미러 메모리에는, 수취한 상기 데이터의 순서를 변경하여 저장하는 역미러부와, 상기 프라이머리 메모리 및 상기 미러 메모리로부터 데이터를 판독하는 에러 저감부이며, 상기 프라이머리 메모리로부터 데이터를 판독하여 제1 데이터로 하고, 상기 미러 메모리로부터, 상기 제1 데이터에 대응하는 데이터를 판독하여 제2 데이터로 하고, 상기 제1 데이터와 상기 제2 데이터가 일치하는 경우에는, 상기 제1 데이터를 출력하고, 상기 제1 데이터와 상기 제2 데이터가 일치하지 않는 경우에는, 상기 제1 데이터와 상기 제2 데이터 중 어느 하나에서, 지배적인 방향의 비트 에러가 발생한 것으로 추정하여 얻어지는 데이터를 출력하는 에러 저감부와, 상기 에러 저감부로부터 수취한 데이터를 에러 정정 복호하는 에러 정정 복호부와, 상기 에러 정정 복호부로부터, 에러 정정 복호 시에 취득된 에러 위치 정보를 수취하는 에러 마스킹부이며, 상기 에러 위치 정보를 상기 버퍼 메모리, 상기 프라이머리 메모리 또는 상기 미러 메모리에 저장하고, 상기 에러 정정 복호부가 데이터를 에러 정정 복호할 때에 상기 버퍼 메모리, 상기 프라이머리 메모리 또는 상기 미러 메모리로부터 상기 에러 위치 정보를 판독하고, 상기 에러 정정 복호부에 제공하는 에러 마스킹부를 구비하는 것이 바람직하다.
또한, 상기 과제를 해결하기 위해서, 본 발명에 따른 반도체 기억 장치는, 프라이머리 메모리와, 상기 프라이머리 메모리에 저장되는 데이터에 대응하는 데이터가 저장되는 미러 메모리와, 수취한 데이터를 상기 프라이머리 메모리 및 상기 미러 메모리에 저장하는 제어 장치이며, 상기 프라이머리 메모리에는 수취한 상기 데이터를 그대로 저장하고, 상기 미러 메모리에는, 수취한 상기 데이터를 저장하는 페이지를 소정의 규칙에 기초하여 제어하여, 상기 데이터를 저장하는 제어 장치를 구비한다.
또한, 상기 과제를 해결하기 위해서, 본 발명에 따른 반도체 기억 장치는, 프라이머리 메모리와, 상기 프라이머리 메모리에 저장되는 데이터에 대응하는 데이터가 저장되는 미러 메모리와, 수취한 데이터를 상기 프라이머리 메모리 및 상기 미러 메모리에 저장하는 역미러부이며, 상기 프라이머리 메모리에는 수취한 상기 데이터를 그대로 저장하고, 상기 미러 메모리에는, 수취한 상기 데이터의 순서를 변경하여 데이터를 저장하는 역미러부를 구비한다.
또한, 상기 과제를 해결하기 위해서, 본 발명에 따른 반도체 기억 장치는, 프라이머리 메모리와, 상기 프라이머리 메모리에 저장되는 데이터에 대응하는 데이터가 저장되는 미러 메모리와, 수취한 데이터를 상기 프라이머리 메모리 및 상기 미러 메모리에 저장하는 시프트미러부이며, 상기 프라이머리 메모리에는 수취한 상기 데이터를 그대로 저장하고, 상기 미러 메모리에는, 수취한 상기 데이터를 저장하는 페이지를 시프트시켜서 저장하는 시프트미러부를 구비한다.
또한, 상기 과제를 해결하기 위해서, 본 발명에 따른 반도체 기억 장치는, 프라이머리 메모리와, 상기 프라이머리 메모리에 저장되는 데이터에 대응하는 데이터가 저장되는 미러 메모리와, 상기 프라이머리 메모리 및 상기 미러 메모리로부터 데이터를 판독하는 에러 저감부이며, 상기 프라이머리 메모리로부터 데이터를 판독하여 제1 데이터로 하고, 상기 미러 메모리로부터, 상기 제1 데이터에 대응하는 데이터를 판독하여 제2 데이터로 하고, 상기 제1 데이터와 상기 제2 데이터가 일치하는 경우에는, 상기 제1 데이터를 출력하고, 상기 제1 데이터와 상기 제2 데이터가 일치하지 않는 경우에는, 상기 제1 데이터와 상기 제2 데이터 중 어느 하나에서, 지배적인 방향의 비트 에러가 발생한 것으로 추정하여 얻어지는 데이터를 출력하는 에러 저감부를 구비한다.
또한, 상기 과제를 해결하기 위해서, 본 발명에 따른 반도체 기억 장치는, 버퍼 메모리와, 호스트 장치로부터 수취한 데이터를 에러 정정 부호화하는 에러 정정 부호화부와, 페이지 단위의 데이터가 상기 에러 정정 부호화부에 기입될 때마다, 비트선 방향의 패리티 비트를 산출하여 상기 버퍼 메모리에 저장하는 RAID부를 구비한다.
또한, 상기 과제를 해결하기 위해서, 본 발명에 따른 반도체 기억 장치는, 수취한 데이터를 에러 정정 복호하는 에러 정정 복호부와, 상기 에러 정정 복호부로부터, 에러 정정 복호 시에 취득된 에러 위치 정보를 수취하는 에러 마스킹부이며, 상기 에러 위치 정보를 상기 메모리에 저장하고, 상기 에러 정정 복호부가 데이터를 에러 정정 복호할 때에 상기 메모리로부터 이전의 상기 에러 위치 정보를 판독하고, 상기 에러 정정 복호부에 제공하는 에러 마스킹부를 구비한다.
또한, 상기 과제를 해결하기 위해서, 본 발명에 따른 반도체 기억 장치의 제어 방법은, 프라이머리 메모리와, 그 프라이머리 메모리에 저장되는 데이터에 대응하는 데이터가 저장되는 미러 메모리와, 버퍼 메모리 중 적어도 하나의 메모리를 구비하는 반도체 기억 장치의 제어 방법이며, 상기 적어도 하나의 메모리를 제어하여, 상기 적어도 하나의 메모리에 데이터를 저장하는 저장 스텝과, 상기 적어도 하나의 메모리를 제어하여, 상기 적어도 하나의 메모리로부터 데이터를 판독하는 판독 스텝을 포함한다.
본 발명에 따르면, 신뢰성이 높고, 또한, 하나의 계층으로 SSD를 효율적으로 제어할 수 있는 반도체 기억 장치 및 그 제어 방법을 제공할 수 있다.
도 1은 본 발명의 일 실시 형태에 따른 반도체 기억 장치의 개략 구성을 도시하는 도면이다.
도 2는 본 발명의 일 실시 형태에 따른 역미러부의 개략 구성을 도시하는 도면이다.
도 3은 NAND 플래시 메모리의 구성의 일례를 도시하는 도면이다.
도 4는 기입 BER의 상위 페이지/하위 페이지에의 의존성을 도시하는 그래프이다.
도 5는 데이터 유지 BER의 페이지 번호에의 의존성을 도시하는 그래프이다.
도 6은 프라이머리 메모리 및 미러 메모리에 데이터를 저장하는 모습의 일례를 도시하는 도면이다.
도 7a는 기입 에러 주요인 조건에 있어서의 데이터의 판독 방법의 일례이다.
도 7b는 데이터 유지 에러 주요인 조건에 있어서의 데이터의 판독 방법의 일례이다.
도 8a는 기입 에러 주요인 조건에 있어서, 역미러링을 적용한 경우에 BER이 개선되는 모습을 도시하는 그래프이다.
도 8b는 데이터 유지 에러 주요인 조건에 있어서, 역미러링을 적용한 경우에 BER이 개선되는 모습을 도시하는 그래프이다.
도 9는 본 발명의 일 실시 형태에 따른 에러 저감부의 개략 구성을 도시하는 도면이다.
도 10은 NAND 플래시 메모리의 기입 BER에 있어서의 에러 방향의 비대칭성을 도시하는 도면이다.
도 11은 본 발명의 일 실시 형태에 따른 에러 저감부의 처리를 도시하는 흐름도이다.
도 12는 본 발명의 일 실시 형태에 따른 에러 저감부가 출력을 판정하는 모습의 예를 도시하는 도면이다.
도 13은 역미러링 및 에러 저감을 적용한 경우에 BER이 개선되는 모습을 도시하는 그래프이다.
도 14a는 기입 BER의 재기입 횟수에의 의존성을 비교한 그래프이다.
도 14b는 기입 BER의 재기입 횟수에의 의존성을 비교한 그래프이다.
도 15a는 데이터 유지 BER의 재기입 횟수에의 의존성을 비교한 그래프이다.
도 15b는 데이터 유지 BER의 재기입 횟수에의 의존성을 비교한 그래프이다.
도 16은 본 발명의 다른 실시 형태에 따른 반도체 기억 장치의 개략 구성을 도시하는 도면이다.
도 17은 도 16의 시프트미러부의 개략 구성을 도시하는 도면이다.
도 18은 시프트미러링에 의해 프라이머리 메모리 및 미러 메모리에 데이터를 저장하는 모습의 일례를 도시하는 도면이다.
도 19는 시프트미러링에 의해 프라이머리 메모리 및 미러 메모리에 데이터를 저장하는 처리의 일례를 도시하는 도면이다.
도 20a는 기입 BER의 워스트의 시프트수에의 의존성을 도시하는 도면이다.
도 20b는 데이터 유지 BER의 워스트의 시프트수에의 의존성을 도시하는 도면이다.
도 21a는 시프트미러링을 적용한 경우에 기입 BER이 개선되는 모습을 도시하는 그래프이다.
도 21b는 시프트미러링을 적용한 경우에 데이터 유지 BER이 개선되는 모습을 도시하는 그래프이다.
도 22는 본 발명의 일 실시 형태에 따른 페이지 RAID부가 비트선 방향으로 패리티 비트를 생성하는 모습을 도시하는 도면이다.
도 23a는 유저 메모리에 대하여 필요한 버퍼비의 버퍼 메모리의 허용 재기입 횟수에의 의존성을 도시하는 도면이다.
도 23b는 에러 정정 후의 BER의 에러 정정 전의 BER에의 의존성을 비교한 그래프이다.
도 24는 NAND 플래시 메모리에 있어서의 데이터 유지 에러의 발생 모습의 일례를 도시하는 도면이다.
도 25는 본 발명의 일 실시 형태에 따른 제어 장치의 기입 시퀀스의 흐름도이다.
도 26은 본 발명의 일 실시 형태에 따른 제어 장치의 에러 마스킹 시퀀스의 흐름도이다.
도 27은 본 발명의 일 실시 형태에 따른 에러 마스킹부가 에러 위치 정보를 압축하는 모습의 일례를 도시하는 도면이다.
도 28은 BER의 데이터 유지 시간에의 의존성을 비교한 그래프이다.
도 29는 데이터 유지 BER의 데이터 유지 시간에의 의존성을 도시하는 그래프이다.
도 30은 기입 BER의 재기입 횟수에의 의존성을 도시하는 그래프이다.
도 31은 본 발명에 의한 효과를 정리한 표이다.
도 32는 종래의 스토리지 시스템의 구성의 일례이다.
이하, 본 발명에 따른 실시 형태에 대해서, 도면을 참조하여 설명한다.
[전체 구성]
도 1은, 본 발명의 일 실시 형태에 따른 반도체 기억 장치의 개략 구성을 도시하는 도면이다. 도 1에 도시한 바와 같이, 반도체 기억 장치는, 호스트 장치(1), 제어 장치(2), 프라이머리 메모리(3), 미러 메모리(4) 및 버퍼 메모리(5)를 구비한다.
또한, 도 1에 있어서는, 프라이머리 메모리(3), 미러 메모리(4) 및 버퍼 메모리(5)에 대하여 간략화하고, 각각 1개씩 나타냈지만, 이것은 간략화한 도면이며, 프라이머리 메모리(3), 미러 메모리(4) 및 버퍼 메모리(5)는 각각 복수개이어도 된 다.
도 1에 도시한 바와 같이, 본 발명의 일 실시 형태에 따른 반도체 기억 장치에 있어서는, 프라이머리 메모리(3), 미러 메모리(4) 및 버퍼 메모리(5)는 계층 구조를 갖지 않는다. 그로 인해, 제어 장치(2)는 동일한 기능을 중복시키지 않고, 프라이머리 메모리(3), 미러 메모리(4) 및 버퍼 메모리(5)를 일괄하여 제어할 수 있다.
데이터 기입 시에 있어서는, 제어 장치(2)는 호스트 장치(1)로부터 수취한 데이터에 대하여 에러 정정 부호화 등의 처리를 행하고, 프라이머리 메모리(3)에 저장한다. 또한, 제어 장치(2)는 데이터를 용장으로 저장하기 위해서, 프라이머리 메모리(3)에 저장하는 데이터에 대응하는 데이터를 미러 메모리(4)에 저장한다. 제어 장치(2)가 행하는 에러 정정 부호화 이외의 처리에 대해서는 후술한다.
데이터 판독 시에 있어서는, 제어 장치(2)는 프라이머리 메모리(3) 및 미러 메모리(4)로부터 데이터를 판독한다. 제어 장치(2)는 수취한 데이터에 대하여 에러 정정 복호 등의 처리를 행하고, 호스트 장치(1)에 에러 정정 복호 등의 처리를 한 데이터를 제공한다. 제어 장치(2)가 행하는 에러 정정 복호 이외의 처리에 대해서는 후술한다.
프라이머리 메모리(3) 및 미러 메모리(4)는 불휘발성의 메모리이며, 예를 들어 NAND 플래시 메모리이다. 신뢰성을 높이기 위해서, 프라이머리 메모리(3)와 미러 메모리(4)의 양쪽에 대응하는 데이터가 저장된다.
버퍼 메모리(5)는 일시적으로 데이터를 저장할 때에 사용되는 메모리이다. 버퍼 메모리(5)는 제어 장치(2)에 의해 데이터의 기입/판독이 빈번히 행하여진다. 따라서, 버퍼 메모리(5)에는, 기입/판독 시간이 짧아, 재기입 가능 횟수가 많다는 특성을 갖는 저항 변화형 메모리(ReRAM: Resistance Random Access Memory) 등을 사용하는 것이 바람직하다. 그러나, ReRAM인 것은 필수가 아니고, 버퍼 메모리(5)로서는, NAND 플래시 메모리, DRAM(Dynamic Random Access Memory), 자기 저항 메모리(MRAM: Magnetoresistive Random Access Memory), 상변화 메모리(PCRAM: Phase Change Random Access Memory), 강유전체 메모리(FeRAM: Ferroelectric Random Access Memory) 등, 여러가지 메모리를 사용할 수 있다.
또한, 이 실시 형태에서는, 버퍼 메모리(5)로서, 프라이머리 메모리(3) 및 미러 메모리(4)와는 다른 메모리를 사용하고 있지만, 프라이머리 메모리(3), 및/또는, 미러 메모리(4) 내의 일부 영역을 버퍼 메모리로서 사용하는 것도 가능하다.
제어 장치(2)는 에러 정정 부호화부(10), 페이지 RAID부(20), 역미러부(30), 에러 저감부(40), 에러 정정 복호부(50) 및 에러 마스킹부(60)를 구비한다.
데이터 기입 시에 있어서는, 에러 정정 부호화부(10)는 호스트 장치(1)로부터 수취한 데이터를 에러 정정 부호화한다. 계속해서, 페이지 RAID부(20)는 배타적 논리합(XOR)의 연산에 의해 패리티 비트를 생성한다. 역미러부(30)는 데이터를 역미러링하고, 원래의 데이터와 역미러링한 데이터를, 각각, 프라이머리 메모리(3)와 미러 메모리(4)에 저장한다. 「역미러링」의 기술적 의미에 대해서는 후술한다. 또한, 페이지 RAID부(20)가 배타적 논리합의 연산에 의해 패리티 비트를 생성하는 것은 일례이며, 기타의 연산 방법에 의해 패리티 비트를 생성해도 된다.
데이터 판독 시에 있어서는, 에러 저감부(40)는 프라이머리 메모리(3) 및 미러 메모리(4)로부터 데이터를 판독한다. 계속해서, 에러 정정 복호부(50)는 에러 정정 복호를 실행한다. 또한, 에러 정정 복호부(50)는 에러 정정 복호 시에 취득한 에러 위치 정보를 에러 마스킹부(60)에 제공한다. 또한, 에러 정정 복호부(50)는 에러 마스킹부(60)로부터, 이전의 판독 시에 있어서의 에러 위치 정보를 수취하고, 에러 위치에 있어서의 데이터를 정정한다.
제어 장치(2) 내의 각 블록의 기능의 상세에 대해서, 이하에 상세하게 설명한다.
[역미러링]
도 2는, 본 발명의 일 실시 형태에 따른 역미러부(30)의 개략 구성을 도시하는 도면이다. 도 2에 도시한 바와 같이, 역미러부(30)는 입력부(31), 프라이머리 출력부(32), 변환부(33) 및 미러 출력부(34)를 구비한다.
입력부(31)는 데이터를 수취하면, 프라이머리 출력부(32) 및 버퍼 메모리(5)에 데이터를 제공한다. 프라이머리 출력부(32)는 수취한 데이터를 그대로 프라이머리 메모리(3)에 저장한다.
변환부(33)는 버퍼 메모리(5)로부터 데이터의 순서를 반대로 하여 판독하여 미러 출력부(34)에 데이터를 제공한다. 미러 출력부(34)는 반대의 순서가 된 데이터를 미러 메모리(4)에 저장한다. 또한, 변환부(33)가 버퍼 메모리(5)를 통하여 입력부(31)로부터 데이터를 수취하는 것으로 하여 설명했지만, 버퍼 메모리(5)는 필수가 아니고, 변환부(33)는 입력부(31)로부터 직접 데이터를 수취하고 데이터의 순서를 반대로 해도 된다.
이하, 변환부(33)가 데이터의 순서를 반대로 함으로써, 프라이머리 메모리(3)와 미러 메모리(4)에 저장되는 데이터의 순서가 반대로 되는 것의 기술적 의미를 설명한다.
도 3은, 1 메모리 셀당 2비트의 MLC(Multiple Level Cell)의 NAND 플래시 메모리의 구성의 일례를 도시하는 도면이다. 도 3에 도시한 바와 같이, 1 메모리 셀당 2비트의 MLC의 NAND 플래시 메모리는, 각 메모리 셀이 하위 페이지와 상위 페이지를 갖고 2비트분의 데이터를 저장한다. 도 3에 도시하는 예에서는, 비트선 방향으로 128개의 메모리 셀이 있기 때문에, 그 2배의 256개의 페이지가 있고, 256비트의 데이터를 저장한다. 이하, 특별히 언급하지 않는 한, 프라이머리 메모리(3) 및 미러 메모리(4)는 1 메모리 셀당 2비트의 MLC의 NAND 플래시 메모리이며, 0부터 255까지의 페이지 번호를 갖는 것으로 하여 설명한다.
도 4는, 페이지 번호를 횡축, 데이터를 소정의 횟수만큼 재기입한 후에 기입한 데이터의 BER(Bit Error Rate)(이하, 「기입 BER」이라고 칭한다)을 종축으로 한 그래프이다. 도 4는, 재기입 횟수가 10k회(10×103회)인 경우의 BER의 측정 결과이다.
도 4에 도시한 바와 같이, NAND 플래시 메모리에 있어서는, 상위 페이지에 기입된 데이터의 기입 BER쪽이 하위 페이지에 기입된 데이터의 기입 BER보다도 작다. 따라서, 모든 데이터를 상위 페이지로부터 판독할 수 있는 것이 바람직하다.
도 5는, 페이지 번호를 횡축, 데이터를 소정의 횟수만큼 재기입한 후에 고온에서 소정의 시간을 경과한 시점의 BER(이하, 「데이터 유지 BER」이라고 칭한다)을 종축으로 한 그래프이다. 도 5는, 10k회 재기입한 후에 85℃에서 10시간 경과한 시점의 BER의 측정 결과이다.
도 5에 도시한 바와 같이, NAND 플래시 메모리에 있어서는, 페이지 번호가 커짐에 따라서 데이터 유지 BER이 열화되는 경향이 있다. 따라서, 모든 데이터가 페이지 번호가 작은 측의 페이지부터 판독할 수 있는 것이 바람직하다.
도 6에, 프라이머리 메모리(3)와는 데이터의 순서를 반대로 해서, 데이터를 미러 메모리(4)에 저장하는 모습을 도시한다. 도 6에 도시한 바와 같이, 데이터 0부터 데이터 255는, 미러 메모리(4)에 있어서는, 데이터 255부터 데이터 0의 순서로 페이지 0부터 페이지 255에 저장된다. 이에 의해, 프라이머리 메모리(3)에서는 하위 페이지에 기재되어 있었던 데이터를 미러 메모리(4)에서는 상위 페이지에 저장할 수 있다. 예를 들어, 데이터 0은 프라이머리 메모리(3)에서는 하위 페이지(페이지 0)에 저장되지만, 미러 메모리(4)에서는 상위 페이지(페이지 255)에 저장된다.
또한, 프라이머리 메모리(3)에서는 페이지 번호가 큰 페이지에 기재되어 있었던 데이터를 미러 메모리(4)에서는 페이지 번호가 작은 페이지에 저장할 수 있다. 예를 들어, 데이터 255는 프라이머리 메모리(3)에서는 페이지 255에 저장되지만, 미러 메모리(4)에서는 페이지 0에 저장된다.
도 7a에, 기입 에러가 주요인이 되는 조건(이하, 「기입 에러 주요인 조건」이라고 칭한다)에 있어서, 워스트 BER을 개선시키는 판독 방법의 예를 도시한다. 여기서, 워스트 BER이란, 모든 페이지 번호 중에서 가장 큰 BER이다. 도 7a에 도시한 바와 같이, 홀수 번호의 데이터(데이터 1, 데이터 3…)은 프라이머리 메모리(3)로부터 판독하고, 짝수 번호의 데이터(데이터 0, 데이터 2…)는 미러 메모리(4)로부터 판독함으로써, 모든 데이터를 상위 페이지로부터 판독할 수 있어 워스트 BER이 개선된다.
도 7b에, 데이터 유지 에러가 주요인이 되는 조건(이하, 「데이터 유지 에러 주요인 조건」이라고 칭한다)에 있어서, 워스트 BER을 개선시키는 판독 방법의 예를 도시한다. 도 7b에 도시한 바와 같이, 데이터 0부터 127은 프라이머리 메모리(3)로부터 판독하고, 데이터 128부터 255는 미러 메모리(4)로부터 판독함으로써, 모든 데이터를 페이지 번호가 작은 측의 페이지로부터 판독할 수 있어 워스트 BER이 개선된다.
도 8a에, 기입 에러 주요인 조건에 있어서, 기입 BER을, 종래의 경우와, 역미러링을 적용한 경우를 비교한 그래프를 도시한다. 흑색 사각이 종래의 측정 결과를 나타내고, 백색 사각이 역미러링을 적용한 측정 결과를 나타낸다. 도 8a에 도시한 바와 같이, 역미러링을 적용함으로써, 워스트 BER이 69% 개선되었다.
도 8b에, 데이터 유지 에러 주요인 조건에 있어서, 데이터 유지 BER을, 종래의 경우와, 역미러링을 적용한 경우를 비교한 그래프를 도시한다. 흑색 사각이 종래의 측정 결과를 나타내고, 백색 사각이 역미러링을 적용한 측정 결과를 나타낸다. 도 8b에 도시한 바와 같이, 역미러링을 적용함으로써, 워스트 BER이 41% 개선되었다.
이렇게 역미러링을 적용하여, 모든 데이터를 상위 페이지부터 판독하거나, 또는, 페이지 번호가 작은 측부터 판독함으로써, 워스트 BER을 개선시킬 수 있다. 어느 판독 방법을 선택할지는, 기입 에러 또는 데이터 유지 에러 중의 어느 것을 개선시킬지에 따라서 결정할 수 있다.
또한, 상기에서 설명한, 미러 메모리(4)에 데이터의 순서를 반대로 하여 저장하는 방법은 어디까지나 예시이며, 이것에 한정하는 것은 아니다. 최적의 데이터의 저장 방법은, 프라이머리 메모리(3) 및 미러 메모리(4)의 특성에 의해 바뀔 수 있다. 역미러부(30)는 프라이머리 메모리(3) 및 미러 메모리(4)의 특성에 따라, 최적의 순서로 되도록 데이터의 순서를 변경하고, 미러 메모리(4)에 데이터를 저장한다.
또한, 상기에서 설명한, 상위 페이지로부터만 데이터를 판독하는 방법, 및 페이지 번호가 작은 측만으로부터 데이터를 판독하는 방법은 어디까지나 예시이며, 이것에 한정하는 것은 아니다. 최적의 데이터의 판독 방법은, 프라이머리 메모리(3) 및 미러 메모리(4)의 특성에 따라 바뀔 수 있다. 예를 들어, 프라이머리 메모리(3) 및 미러 메모리(4)가 페이지 번호가 큰 쪽에서 BER이 작다는 특성을 갖는 경우에는, 페이지 번호가 큰 측으로부터 데이터를 판독하는 것이 바람직한 경우도 있을 수 있다.
또한, 본 실시 형태에서는, 변환부(33)는 후술하는 에러 저감부(40)와 협동하여, 워스트 BER을 저감하는 경우에는, 데이터의 순서를 반대로 할 뿐 아니라, 추가로 비트를 반전시켜서 데이터를 미러 메모리(4)에 저장한다. 여기서, 비트를 반전시킨다란, "0"의 데이터를 "1"로 하고, "1"의 데이터를 "0"으로 하는 것을 의미한다. 변환부(33)가 비트를 반전시키는 것의 기술적 의미에 대해서는, 에러 저감부(40)의 설명에서 상세하게 설명한다.
[에러 저감]
도 9는, 본 발명의 일 실시 형태에 따른 에러 저감부(40)의 개략 구성을 도시하는 도면이다. 도 9에 도시한 바와 같이, 에러 저감부(40)는 프라이머리 입력부(41), 미러 입력부(42), 비트 재반전부(43) 및 판정부(44)를 구비한다.
프라이머리 입력부(41)는 프라이머리 메모리(3)로부터 데이터를 판독하여 판정부(44)에 데이터를 제공한다.
미러 입력부(42)는 미러 메모리(4)로부터 데이터를 판독하여 비트 재반전부(43)에 데이터를 제공한다.
비트 재반전부(43)는 미러 입력부(42)로부터 수취한 데이터의 비트를 반전시키고, 반전시킨 데이터를 판정부(44)에 제공한다. 여기서, 비트 재반전부(43)가 비트를 반전시키는 것은, 역미러부(30)가 비트를 반전시켜서 미러 메모리(4)에 저장한 데이터를, 재반전시켜서 원래의 데이터로 되돌리기 위해서이다. 에러 저감부(40)가 역미러부(30)와 협동하여 BER을 저감할 때에 역미러부(30)가 비트를 반전하여 미러 메모리(4)에 저장하고, 에러 저감부(40)가 미러 메모리(4)로부터 판독한 데이터의 비트를 재반전하여 원상태로 돌리는 것의 기술적 의미에 대해서는 후술한다.
판정부(44)는 프라이머리 입력부(41) 및 비트 재반전부(43)로부터 수취한 데이터를 비교하여 올바르다고 추정되는 데이터를 판정하고, 추정한 데이터를 출력한다. 판정부(44)가 어떻게 올바르다고 추정되는 데이터를 판정하는지에 대해서는, 도 11의 흐름도 설명에서 상세하게 설명한다.
이하, 역미러부(30)에 의한 비트 반전, 및 에러 저감부(40)에 의한 비트 재반전의 기술적 의미를 설명한다.
도 10은, NAND 플래시 메모리의 기입 BER에 있어서의 에러 방향의 비대칭성을 도시하는 도면이다. 도 10에 도시한 바와 같이, 하위 페이지에서는, "1"이 "0"이 되는 에러 방향이 지배적이고, 상위 페이지에서는, "0"이 "1"이 되는 에러 방향이 지배적이다.
역미러부(30)는 프라이머리 메모리(3)와 미러 메모리(4)에서 상위 페이지와 하위 페이지가 페어가 되도록 데이터를 저장한다. 따라서, 프라이머리 메모리(3)에서 하위 페이지(상위 페이지)에 저장되어 있는 데이터는, 미러 메모리(4)에서는 상위 페이지(하위 페이지)에 저장되어 있다.
그렇게 하면, 역미러부(30)가 비트 반전하지 않고 미러 메모리(4)에 데이터를 저장했을 경우, 예를 들어, 프라이머리 메모리(3)에서 하위 페이지에 저장된 데이터와, 미러 메모리(4)에서 상위 페이지에 저장된 데이터는, 지배적인 에러 방향이 반대가 된다. 이 경우, 프라이머리 메모리(3)와 미러 메모리(4)로부터 판독한 데이터가 일치하지 않는 경우에, 올바른 데이터가 "0"과 "1"의 어느 쪽일지를 추정할 수 없다.
따라서, 역미러부(30)가 미러 메모리(4)에 저장하는 데이터를 비트 반전시킴으로써, 프라이머리 메모리(3)와 미러 메모리(4)에서 지배적인 에러 방향이 일치한다. 이에 의해, 프라이머리 메모리(3)와 미러 메모리(4)로부터 판독한 데이터가 일치하지 않는 경우에, 프라이머리 메모리(3)와 미러 메모리(4) 중 어느 하나에서, 지배적인 방향의 에러가 발생했다고 추정함으로써, 올바른 데이터가 "0"과 "1"의 어느 쪽일지를 추정할 수 있게 된다.
이 경우, 역미러부(30)가 비트를 반전시켜서 미러 메모리(4)에 데이터를 저장하기 위해서, 에러 저감부(40)는 비트를 재반전시켜서 데이터를 원상태로 돌린다.
상기한 바와 같이 NAND 플래시 메모리의 기입 BER에 있어서의 에러 방향에 강한 비대칭성이 있는 것으로부터, 에러 저감부(40)는 프라이머리 메모리(3)와 미러 메모리(4)로부터 판독한 데이터가 일치하지 않는 경우에, 올바른 데이터를 추정할 수 있다. 도 11의 흐름도에 따라, 에러 저감부(40)가 올바른 데이터를 추정하는 수순을 도시한다.
프라이머리 입력부(41)는 프라이머리 메모리(3)로부터 데이터를 판독한다(스텝 S101). 미러 입력부(42)는 대응하는 데이터를 미러 메모리(4)로부터 판독한다(스텝 S102). 또한, 스텝 S101과 S102는, 반대의 순서여도 상관없고, 동시여도 상관없다.
비트 재반전부(43)는 미러 입력부(42)로부터 수취한 데이터의 비트를 재반전시켜서 판정부(44)에 제공한다(스텝 S103).
판정부(44)는 프라이머리 입력부(41)로부터 수취한 데이터와 비트 재반전부(43)로부터 수취한 데이터가 일치하는지의 여부를 판정한다(스텝 S104).
스텝 S104에서, 데이터가 일치한다고 판정한 경우에는, 판정부(44)는 프라이머리 메모리(3)와 미러 메모리(4)의 어떤 경우든 에러가 발생되지 않은 것으로 추정하고, 프라이머리 메모리(3)에 저장되어 있었던 데이터를 출력한다(스텝 S105).
스텝 S104에서, 데이터가 일치하지 않는다고 판단한 경우에는, 판정부(44)는 또한, 프라이머리 메모리(3)로부터 판독한 데이터가, 하위 페이지와 상위 페이지 중의 어느 것으로부터 판독한 데이터인지를 판정한다(스텝 S106).
스텝 S106에서, 프라이머리 메모리(3)의 하위 페이지로부터 판독한 데이터라고 판정한 경우에는, 판정부(44)는 "1"이 올바른 데이터라고 추정하고, 데이터 "1"을 출력한다(스텝 S107).
스텝 S106에서, 프라이머리 메모리(3)의 상위 페이지로부터 판독한 데이터라고 판정한 경우에는, 판정부(44)는 "0"이 올바른 데이터라고 추정하고, 데이터 "0"을 출력한다(스텝 S108).
도 12는, 에러 저감부(40)의 처리 몇 가지의 구체예를 도시하는 표이다. 도 12는, 프라이머리 메모리(3)의 하위 페이지, 및 미러 메모리(4)의 상위 페이지로부터 데이터를 판독한 경우의 예이다.
케이스 1은 프라이머리 메모리(3)의 하위 페이지 데이터가 "1"이고, 미러 메모리(4)의 상위 페이지 데이터(비트 재반전 후의 데이터, 이하 동일)가 "1"인 경우이다. 이 경우, 데이터가 일치하므로, 에러 저감부(40)는 "1"이 올바른 데이터라고 추정하고 "1"을 출력한다.
케이스 2는 프라이머리 메모리(3)의 하위 페이지 데이터가 "1"이고, 미러 메모리(4)의 상위 페이지 데이터가 "1"로부터 "0"으로의 에러(비트 재반전 전에는, "0"으로부터 "1"로의 에러)를 일으킨 경우를 나타낸다. 이 경우, 데이터가 일치하지 않고, 프라이머리 메모리(3)의 데이터는 하위 페이지로부터 판독한 데이터이므로, 에러 저감부(40)는 "1"이 올바른 데이터라고 추정하고 "1"을 출력한다. 이 추정은 올바르다.
케이스 3은 프라이머리 메모리(3)의 하위 페이지 데이터가 "1"로부터 "0"으로의 에러를 일으키고, 미러 메모리(4)의 상위 페이지 데이터가 "1"인 경우를 나타낸다. 이 경우, 데이터가 일치하지 않고, 프라이머리 메모리(3)의 데이터는 하위 페이지로부터 판독한 데이터이므로, 에러 저감부(40)는 "1"이 올바른 데이터라고 추정하고 "1"을 출력한다. 이 추정은 올바르다.
케이스 4는 프라이머리 메모리(3)의 하위 페이지 데이터가 "1"로부터 "0"으로의 에러를 일으키고, 미러 메모리(4)의 상위 페이지 데이터도 "1"로부터 "0"으로의 에러(비트 재반전 전에는, "0"으로부터 "1"로의 에러)를 일으킨 경우를 나타낸다. 이 경우, 데이터가 일치하므로, 에러 저감부(40)는 "0"이 올바른 데이터라고 추정하고 "0"을 출력한다. 이 추정은 올바르지 않다. 이와 같이, 프라이머리 메모리(3)와 미러 메모리(4)의 양쪽에서 에러가 발생한 경우에는, 에러 저감부(40)는 올바른 값을 추정할 수 없다. 그러나, 프라이머리 메모리(3)와 미러 메모리(4)의 양쪽에서 동시에 에러가 발생할 확률은 매우 작기 때문에, 이 경우에 정확하게 추정 가능하지 않은 것의 영향은 작다.
케이스 5는 프라이머리 메모리(3)의 하위 페이지 데이터가 "0"이고, 미러 메모리(4)의 상위 페이지 데이터가 "0"인 경우를 나타낸다. 이 경우, 데이터가 일치하므로, 에러 저감부(40)는 "0"이 올바른 데이터라고 추정하고 "0"을 출력한다.
또한, 상기 설명에 있어서는, 역미러부(30)와 에러 저감부(40)에서 협동하여 BER을 저감하는 경우를 예로 들어 설명했지만, 에러 저감부(40)만을 독립하여 채용해도 된다. 역미러링을 채용하지 않는 경우에는, 에러 저감부(40)에 있어서의 비트 재반전은 실행하지 않는다. 또한, 역미러링을 채용하지 않는 경우에는, 역미러부(30)는 버퍼 메모리(5)를 필요로 하지 않는다.
또한, 상기 설명에 있어서는, 지배적인 에러 방향이 도 10에 도시하는 방향인 경우를 예로 들어 설명했지만, 이것은 어디까지나 일례이다. 예를 들어, 지배적인 에러 방향이 도 10에 도시하는 방향과 반대인 경우에도, 마찬가지의 사고 방식으로 올바른 데이터를 추정함으로써, 본원 발명은 적용 가능하다.
[역미러링 및 에러 저감의 효과]
도 13에, 기입 에러 주요인 조건에 있어서, 기입 BER을, 통상의 미러링을 채용하는 종래 기술의 경우와, 상기의 역미러링 및 에러 저감을 적용한 경우를 비교한 그래프를 도시한다. 흑색 사각이 종래의 측정 결과를 나타내고, 백색 사각이 역미러링 및 에러 저감을 적용한 측정 결과를 나타낸다. 도 13에 도시한 바와 같이, 역미러링 및 에러 저감을 적용함으로써, 워스트 BER이 91% 개선되었다.
도 14a, 14b, 15a 및 15b에, 통상의 미러링을 채용하는 종래 기술의 경우와, 상기의 역미러링을 적용한 경우와, 상기의 역미러링 및 에러 저감을 적용한 경우를 비교하는 측정 결과를 도시한다. 흑색 사각이 종래의 측정 결과, 백색 삼각이 역미러링을 적용한 경우의 측정 결과, 백색 사각이 역미러링 및 에러 저감을 적용한 경우의 측정 결과를 나타낸다.
도 14a 및 14b는, 횡축이 재기입 횟수, 종축이 블록 내의 워스트 기입 BER이다. 도 14a는, 사이즈가 2Xnm인 메모리 셀에 대한 측정 결과이다. 도 14b는, 사이즈가 1Xnm인 메모리 셀에 대한 측정 결과이다. 여기서, 사이즈가 2Xnm란 사이즈가 20 내지 30nm 정도인 것을 의미한다. 또한, 사이즈가 1Xnm란 사이즈가 10 내지 20nm 정도인 것을 의미한다. 이하의 설명에 있어서도 마찬가지이다.
도 14a에 도시된 바와 같이, 재기입 횟수가 10k회인 경우, 종래 기술에 대하여 역미러링을 적용함으로써 BER이 69% 개선되고, 역미러링에 추가로 에러 저감을 적용함으로써, 종래 기술에 대하여 BER이 91% 개선되었다.
또한, 도 14b에 도시된 바와 같이, 재기입 횟수가 6k회인 경우, 종래 기술에 대하여 역미러링을 적용함으로써 BER이 45% 개선되고, 역미러링에 추가로 에러 저감을 적용함으로써, 종래 기술에 대하여 BER이 85% 개선되었다.
도 15a 및 15b는, 횡축이 재기입 횟수, 종축이 블록 내의 워스트 데이터 유지 BER이다. 도 15a는, 사이즈가 2Xnm인 메모리 셀에 대하여 횡축에서 지정하는 재기입 횟수만큼 재기입한 후에, 85℃에서 506시간 경과시킨 후의 측정 결과이다. 도 15b는, 사이즈가 1Xnm인 메모리 셀에 대하여 횡축에서 지정하는 재기입 횟수만큼 재기입한 후에, 85℃에서 194시간 경과시킨 후의 측정 결과이다.
도 15a에 도시된 바와 같이, 재기입 횟수가 10k회인 경우, 종래 기술에 대하여 역미러링을 적용함으로써 BER이 41% 개선되고, 역미러링에 추가로 에러 저감을 적용함으로써, 종래 기술에 대하여 BER이 56% 개선되었다.
또한, 도 15b에 도시된 바와 같이, 재기입 횟수가 6k회인 경우, 종래 기술에 대하여 역미러링을 적용함으로써 BER이 14% 개선되고, 역미러링에 추가로 에러 저감을 적용함으로써, 종래 기술에 대하여 BER이 30% 개선되었다.
[시프트미러링]
상술한 「역미러링」 대신에 「시프트미러링」을 채용하는 실시 형태를 이하에 설명한다. 도 16은, 시프트미러링을 채용한 실시 형태에 따른 반도체 기억 장치의 개략 구성을 도시하는 도면이다. 도 1에 도시한 「역미러링」을 채용하는 반도체 기억 장치란, 제어 장치(2)가 역미러부(30) 대신 시프트미러부(70)를 구비하는 점, 및 시프트미러부(70)가 버퍼 메모리(5)에 접속되어 있지 않은 점에서 상이하다.
도 17은, 본 발명의 일 실시 형태에 따른 시프트미러부(70)의 개략 구성을 도시하는 도면이다. 도 17에 도시한 바와 같이, 시프트미러부(70)는 입력부(71), 프라이머리 출력부(72) 및 시프트 출력부(73)를 구비한다.
입력부(71)는 데이터를 수취하면, 프라이머리 출력부(72) 및 시프트 출력부(73)에 데이터를 제공한다. 프라이머리 출력부(72)는 수취한 데이터를 그대로 프라이머리 메모리(3)에 저장한다.
시프트 출력부(73)는 데이터를 저장하는 페이지를, 프라이머리 출력부(72)가 프라이머리 메모리(3)에 저장하는 페이지로부터, 시프트수 i(i는 정수)만큼 시프트시키고, 수취한 데이터를 미러 메모리(4)에 저장한다.
이하, 시프트 출력부(73)가 데이터를 저장하는 페이지를, 시프트수 i만큼 시프트시키는 것에 대하여 상세하게 설명한다.
도 18에, 미러 메모리(4)에 데이터를 저장하는 페이지를, 프라이머리 메모리(3)에 데이터를 저장하는 페이지로부터, 소정의 시프트수만큼 시프트시키는 모습의 일례를 도시한다. 이하, 도 18에 도시한 바와 같은 비트선 방향의 128개의 메모리 셀를 포함하는 단위를 「블록」이라고 칭하는 것으로 한다. 도 18에 도시한 바와 같이, 프라이머리 메모리(3)의 블록 n(n번째의 블록)에 있어서는, 페이지 0부터 페이지 255에, 데이터 n_0부터 데이터 n_255가 저장되어 있다. 한편, 미러 메모리(4)의 블록 n에 있어서는, 대응하는 데이터가, 소정의 시프트수만큼 시프트시킨 페이지에 저장되어 있다. 예를 들어, 데이터 n_0부터 데이터 n_128이, 페이지 127부터 페이지 255에 저장되어 있다. 또한, 데이터 n_129부터 데이터 n_255는, 도시하고 있지 않은 미러 메모리(4)의 블록 n+1에 저장되어 있다. 또한, 미러 메모리(4)의 블록 n에 있어서의, 페이지 0부터 페이지 126에는, 프라이머리 메모리(3)의 블록 n-1에 있어서, 페이지 129부터 페이지 255에 저장되어 있는 데이터 n-1_129부터 데이터 n-1_255가 저장되어 있다.
도 19에, 미러 메모리(4)에 데이터를 저장하는 페이지를, 프라이머리 메모리(3)에 데이터를 저장하는 페이지로부터 시프트시켜서 저장하는 처리의 일례를 도시한다. 프라이머리 메모리(3)의 블록 0에 있어서, 데이터 0_0을 페이지 0에 저장할 때, 미러 메모리(4)에 있어서는, 블록 0의 페이지 255-i에 데이터 0_0을 저장한다. 또한, 프라이머리 메모리(3)의 블록 0에 있어서, 데이터 0_i를 페이지 i에 저장할 때, 미러 메모리(4)에 있어서는, 블록 0의 페이지 255에 데이터 0_i를 저장한다. 또한, 프라이머리 메모리(3)의 블록 0에 있어서, 데이터 0_i+1을 페이지 i+1에 저장할 때, 미러 메모리(4)에 있어서는, 블록 1의 페이지 0에 데이터 0_i+1을 저장한다. 또한, 프라이머리 메모리(3)의 블록 0에 있어서, 데이터 0_255를 페이지 255에 저장할 때, 미러 메모리(4)에 있어서는, 블록 1의 페이지 254-i에 데이터 0_255를 저장한다.
도 19에 도시한 바와 같이, 시프트미러부(70)는 동일한 데이터를 프라이머리 메모리(3)와 미러 메모리(4)에 동시에 기입하는 것이 가능하기 때문에, 버퍼 메모리(5)가 불필요하다.
시프트수 i는 임의의 값으로 설정 가능하고, 프라이머리 메모리(3) 및 미러 메모리(4)의 특성에 따라서 적절한 값을 설정할 수 있다.
도 20a에, 기입 BER의 워스트를, 종래의 경우와, 역미러링을 적용한 경우와, 시프트미러링을 적용한 경우를 비교한 그래프를 도시한다. 횡축은 시프트수이며, 시프트미러링을 적용한 경우의 기입 BER의 워스트는, 시프트수에 의존하여 주기적으로 변화하고 있다. 시프트미러링을 적용한 경우, 시프트수로서, 기입 BER의 워스트가 낮아지는 값을 선택함으로써, 기입 BER의 워스트가 역미러링을 적용한 경우와 동등한 정도까지 개선시킬 수 있다.
도 20b에, 데이터 유지 BER의 워스트를, 종래의 경우와, 역미러링을 적용한 경우와, 시프트미러링을 적용한 경우를 비교한 그래프를 도시한다. 횡축은 시프트수이며, 시프트미러링을 적용한 경우의 데이터 유지 BER의 워스트는, 시프트수에 의존하여 변화하고 있다. 도 20b에 도시한 바와 같이, 시프트미러링을 적용한 경우, 시프트수가 110 내지 144 정도의 범위에서, 데이터 유지 BER의 워스트가 역미러링을 적용한 경우와 동등한 정도까지 개선되었다.
도 21a에, 기입 BER을, 종래의 경우와, 시프트미러링을 적용한 경우를 비교한 그래프를 도시한다. 흑색 사각이 종래의 측정 결과를 나타내고, 백색 사각이 시프트미러링을 적용한 측정 결과를 나타낸다. 도 21a에 도시한 바와 같이, 시프트미러링을 적용함으로써, 워스트 BER이 57% 개선되었다.
도 21b에, 데이터 유지 BER을, 종래의 경우와, 시프트미러링을 적용한 경우를 비교한 그래프를 도시한다. 흑색 사각이 종래의 측정 결과를 나타내고, 백색 사각이 시프트미러링을 적용한 측정 결과를 나타낸다. 도 21b에 도시한 바와 같이, 시프트미러링을 적용함으로써, 워스트 BER이 41% 개선되었다.
이렇게 시프트미러링을 적용하여, 미러 메모리(4)에 데이터를 저장하는 페이지를, 프라이머리 메모리(3)에 데이터를 저장하는 페이지로부터, 적절한 시프트수 i만큼 시프트시킴으로써 버퍼 메모리(5)를 사용하지 않고 워스트 BER을 개선시킬 수 있다.
또한, 미러 메모리(4)에 데이터를 저장하는 페이지를, 프라이머리 메모리(3)에 데이터를 저장하는 페이지로부터 시프트할 때는, 반드시 일률적으로 페이지를 시프트시키지 않아도 된다. 최적의 데이터의 저장 방법은, 프라이머리 메모리(3) 및 미러 메모리(4)의 특성에 따라 바뀔 수 있기 때문이다. 예를 들어, 최적으로 데이터를 저장하기 위해서, 미러 메모리(4)에 데이터를 저장하는 페이지를, 일률적으로 시프트시킨 것으로부터 일부 순서를 변경시켜도 된다.
[페이지 RAID]
도 22에, 페이지 RAID부(20)에 의해, 비트선(BL: Bit Line) 방향으로 패리티 비트를 부가하는 모습을 도시한다.
도 22에 도시한 바와 같이, 페이지 RAID부(20)는 종래의 워드선(WL: Word Line) 방향의 에러 정정 부호 외에, 비트선 방향에 대해서도, 각 메모리 셀의 데이터에 대하여 배타적 논리합을 연산함으로써, 패리티 비트를 산출한다. 페이지 RAID부(20)는 산출한 패리티 비트를 버퍼 메모리(5)에 저장한다.
페이지 RAID부(20)는 유저 데이터가 페이지 단위로 에러 정정 부호화부(10)에 기입될 때마다, 비트선 방향의 패리티 비트를 산출하고, 산출한 패리티 비트를 버퍼 메모리(5)에 저장한다. 버퍼 메모리(5)는 적어도 1페이지분의 용량을 갖고, 1페이지분의 패리티 비트를 갱신하여 저장한다. 버퍼 메모리(5)에는, 재기입 가능 횟수가 많은 ReRAM을 사용하는 것이 바람직하다.
페이지 RAID부(20)는 유저 데이터의 기입이 완료되면, 버퍼 메모리(5)에 저장하고 있는 패리티 비트를 기입이 완료된 유저 데이터의 후의 페이지에 기입한다. 패리티 비트는, 최후의 페이지(가장 페이지 번호가 큰 페이지)에 기입되는 경우도 있지만, 최후의 페이지에 한정하는 것은 아니고, 최후로부터 2번째의 페이지나 기타의 페이지에 기입되는 경우도 있다. 또한, 패리티 비트의 기입은 1페이지에 한정하는 것은 아니고, 복수의 페이지에 패리티 비트를 기입해도 된다.
페이지 RAID부(20)는 유저 데이터의 기입을 완료할 때까지에, 버퍼 메모리(5)를 최대로 (페이지수-1)회 갱신한다. 여기서, 페이지수란, 블록 내에 있어서의 페이지의 수이다. 도 22에 도시하는 예에 있어서는, 1개의 비트선에 메모리 셀이 128개 있고, 각각의 메모리 셀이 2페이지씩의 페이지를 갖기 때문에, 페이지수는 256이다.
NAND블록이 4k회 재기입 가능한 경우, 버퍼 메모리(5)는 4k×255≒106회 정도의 재기입이 가능할 것이 요구되나, 버퍼 메모리(5)에 ReRAM을 채용하면, ReRAM은 재기입 가능 횟수가 많기 때문에 대응 가능하다.
또한, 페이지 RAID부(20)는 빈번히 버퍼 메모리(5)에의 기입을 하기 때문에, 기입 액세스 시간의 관점에서, 기입 속도가 빠른 것이 바람직하다. 이 점으로부터도, 버퍼 메모리(5)에 ReRAM을 채용하는 것이 바람직하다.
도 23a는, 횡축을 버퍼 메모리(5)의 허용 재기입 횟수, 종축을 유저 메모리에 대하여 필요하게 되는 버퍼 메모리(5)의 비로 한 그래프이다. 도 23a에 도시한 바와 같이, ReRAM은, SLC NAND에 비하여, 재기입 가능 횟수가 약 100배이므로, 필요하게 되는 버퍼비가 약 100분의 1이다. 또한, 버퍼 메모리(5)에 ReRAM을 채용한 경우, 유저 메모리에 대하여 필요하게 되는 용량은 0.1% 이하이다.
도 23b는, 횡축을 에러 정정 전의 BER, 종축을 에러 정정 후의 BER로 한 그래프이다. 도 23b에 도시한 바와 같이, 에러 정정 후의 BER로서 시장에서 요구되는 레벨은 10-15이다. 1k바이트당 40비트를 정정한다는 전제로 검토하면, 페이지 RAID를 적용함으로써, 허용할 수 있는 BER이 45% 증대한다. 여기서, 허용할 수 있는 BER이란, 에러 정정 후에 10-15의 BER을 달성 가능한 에러 정정 전의 BER이다.
[에러 마스킹]
도 24에, NAND 플래시 메모리에 있어서 데이터 유지 에러가 발생되는 모습을 도시한다. 데이터 유지 에러는, 플로팅 게이트로부터 전자가 누출되는 것 등에 의해 발생한다. 도 24에 도시하는 예에 있어서는, 데이터의 기입으로부터 100일 경과하면, 좌측으로부터 3번째 및 우측으로부터 3번째의 메모리 셀에 있어서, 원래 "0"이었던 데이터가 "1"로 된다는 에러가 발생되어 있다. 일단 에러가 발생한 위치에 있어서는, 에러가 회복되는 경우는 없기 때문에, 200일 경과 후에 있어서도 좌측으로부터 3번째의 메모리 셀과 우측으로부터 3번째의 메모리 셀은, 에러가 발생한 상태 그대로이다. 도 24에 도시하는 예에 있어서는, 200일 경과 후에, 또한, 우측으로부터 2번째의 데이터도 "0"이었던 데이터가 "1"로 된다는 에러가 발생되어 있다.
제어 장치(2)는 NAND 플래시 메모리가 상기와 같은 데이터 유지 에러의 특성을 감안하여, 에러 정정 복호를 효율적으로 실행한다. 에러 마스킹에 있어서는, 제어 장치(2)는 에러 기입 시퀀스와 에러 마스킹 시퀀스의 2개의 시퀀스를 실행한다. 각각의 시퀀스에 대해서, 이하에 설명한다.
도 25는, 에러 기입 시퀀스의 흐름도이다.
에러 정정 복호부(50)는 에러 정정 부호화된 데이터를 판독한다(스텝 S201). 에러 정정 복호부(50)는 판독한 데이터에 대하여 에러 정정 복호를 실행하고, 에러 정정 복호 후의 데이터를 출력한다. 이때, 에러 정정 복호부(50)는 어느 위치의 메모리 셀에서 에러가 일어났는지의 정보(이하, 「에러 위치 정보」라고 칭한다)를 취득한다(스텝 S202).
에러 마스킹부(60)는 에러 정정 복호부(50)로부터 에러 위치 정보를 취득하고, 취득한 에러 위치 정보를 압축한다(스텝 S203). 에러 마스킹부(60)가 실행하는 압축 방법의 일례에 대해서는 후술한다. 또한, 에러 마스킹부(60)는 다른 방법으로 에러 위치 정보를 취득할 수도 있다. 예를 들어, 에러 마스킹부(60)는 신뢰성이 높은 메모리(예를 들어, 버퍼 메모리(5))에, 별도로, 기입한 데이터와, 프라이머리 메모리(3) 또는 미러 메모리(4) 등으로부터 판독한 데이터를 비교함으로써 에러 위치 정보를 취득할 수도 있다.
에러 마스킹부(60)는 압축한 에러 위치 정보를 버퍼 메모리(5)에 저장한다(스텝 S204).
도 26은, 에러 마스킹 시퀀스의 흐름도이다.
에러 마스킹부(60)는 버퍼 메모리(5)로부터 압축된 이전의 에러 위치 정보를 판독한다(스텝 S301). 에러 마스킹부(60)는 압축되어 있는 에러 위치 정보를 압축 풀기한다(스텝 S302).
에러 정정 복호부(50)는 에러 위치 정보를 에러 마스킹부(60)로부터 취득하고, 데이터 내의 에러를 삭제한다(스텝 S303). 에러 정정 복호부(50)는 에러 정정 복호를 실행한다(스텝 S304). 에러 정정 복호부(50)는 에러 정정 복호한 데이터를 출력한다(스텝 S305).
제어 장치(2)는 에러 기입 시퀀스와 에러 마스킹 시퀀스를 적절한 타이밍에서 실행함으로써, 에러 마스킹을 효과적으로 실행할 수 있다. 예를 들어, 데이터 기입 후, 소정의 시간까지의 데이터 판독 시에 있어서는, 에러 기입 시퀀스를 실행하고, 소정의 시간 후의 데이터 판독 시에 있어서는, 에러 마스킹 시퀀스를 실행하는 것으로 해도 된다. 또한, 제어 장치(2)는 소정의 시간 후의 데이터 판독 시에 있어서는, 에러 기입 시퀀스와 에러 마스킹 시퀀스를 양쪽 실행하는 것으로 해도 된다.
도 27에, 에러 마스킹부(60)가 에러 위치 정보를 압축하는 일례를 도시한다. 통상, 메모리 셀에 있어서 에러가 발생할 확률은 작기 때문에, 에러 마스킹부(60)는 이것을 이용하여 효율적으로 에러 위치 정보를 압축할 수 있다. 에러 위치 정보는, 예를 들어, 에러가 없는 위치를 "0", 에러가 발생되어 있는 위치를 "1"로 하는 테이블인데, 통상, 에러의 발생률은 낮기 때문에, 에러 위치 정보는, 대부분의 위치에서 "0"이 되고, 드물게, "1"이 된다.
에러 마스킹부(60)는 이렇게 특정한 정보가 연속하여 계속되는 에러 위치 정보를, 예를 들어 런렝스 압축(Run Length Encoding)에 의해 압축함으로써 효율적으로 압축할 수 있다. 예를 들어, BER이 1%인 경우, 런렝스 압축에 의해 데이터량을 16%로 저감할 수 있다. 또한, 런렝스 압축은 일례이며, 다른 압축 방법을 사용해도 된다.
도 28에, BER에 대해서, 에러 마스킹을 적용한 경우와, 에러 마스킹을 적용하지 않은 경우를 비교한 그래프를 도시한다. 도 28에 도시한 바와 같이, 에러 마스킹 시퀀스에 있어서, 에러 마스킹을 적용함으로써, 85℃로 하고 나서 200시간 경과 후의 비교에서 BER이 67% 개선되고, 85℃로 하고 나서 350시간 경과 후의 비교에서 BER이 55% 개선되었다.
또한, 에러 마스킹부(60)는 에러 위치 정보를 압축하는 것으로 하여 설명했지만, 이것은 필수적인 것은 아니다. 에러 마스킹부(60)는 에러 위치 정보를 압축하지 않고 버퍼 메모리(5)에 저장해도 된다.
또한, 상기 설명에 있어서는, 에러 위치 정보가 버퍼 메모리(5)에 저장되는 것으로 하여 설명했지만, 이것은 일례이다. 에러 위치 정보는, 프라이머리 메모리(3)나 미러 메모리(4) 등 다른 메모리에 저장해도 된다.
[측정 결과]
본원에서 설명한 역미러링, 에러 저감, 페이지 RAID 및 에러 마스킹을 적용하면, 데이터 유지 BER에 있어서, 허용할 수 있는 BER(ABER: Acceptable BER)이 6.2배가 된다. 도 29에 도시한 바와 같이, 이것은, 허용할 수 있는 재기입 횟수가 2배로 된 것, 및 허용할 수 있는 데이터 유지 시간이 34배로 된 것에 상당한다.
또한, 본원에서 설명한 역미러링, 에러 저감, 페이지 RAID 및 에러 마스킹을 적용하면, 기입 BER에 있어서, 허용할 수 있는 BER이 32배가 된다. 도 30에 도시한 바와 같이, 이것은, 허용할 수 있는 재기입 횟수가 4.2배로 된 것에 상당한다.
도 31에, 도 29 및 30에서 설명한 수치를 표로 정리하여 도시한다.
상술한 바와 같이, 본 발명에 따른 반도체 기억 장치는, 허용할 수 있는 BER을 개선함으로써, 신뢰성을 높이고, 또한, 하나의 계층으로 SSD를 효율적으로 제어하여 신뢰성을 향상시킬 수 있다.
또한, 본 발명에 따른 반도체 기억 장치는, 역미러링을 적용하여, 프라이머리 메모리(3)와 미러 메모리(4) 중, BER이 작은 메모리로부터 데이터를 판독함으로써, 워스트 BER을 개선할 수 있다.
또한, 본 발명에 따른 반도체 기억 장치는, 에러 저감을 적용하여, 프라이머리 메모리(3)와 미러 메모리(4)로부터 판독한 데이터가 일치하지 않는 경우에는, NAND 플래시 메모리에 있어서의 에러 방향의 비대칭성을 이용하여 올바른 데이터를 추정함으로써, 워스트 BER을 개선할 수 있다.
또한, 본 발명에 따른 반도체 기억 장치는, 페이지 RAID를 적용하여, 비트선 방향으로도 패리티 비트를 부가함으로써, 오류 정정 능력을 향상시킬 수 있다.
또한, 본 발명에 따른 반도체 기억 장치는, 에러 마스킹을 적용하여, 이전에 데이터를 판독했을 때의 에러 위치 정보를 이용함으로써, 워스트 BER을 개선할 수 있다.
본 발명을 여러 도면이나 실시예에 기초하여 설명해 왔지만, 당업자라면 본 개시에 기초하여 다양한 변형이나 수정을 행하는 것이 용이한 것에 주의하기 바란다. 따라서, 이러한 변형이나 수정은 본 발명의 범위에 포함되는 것에 유의하기 바란다.
예를 들어, 본 발명의 실시 형태는 NAND 플래시 메모리를 예로 들어 설명했지만, 본 발명은 이것에 한정하는 것은 아니고, 같은 특성을 나타내는 메모리라면 다른 메모리여도 된다.
또한, NAND 플래시 메모리로서, 1 메모리 셀당 2비트의 MLC로 페이지 번호가 0부터 255인 NAND 플래시 메모리를 예로 들어 설명했지만, 본 발명은 이것에 한정하는 것은 아니고, 다른 구성의 NAND 플래시 메모리여도 된다.
또한, 역미러링, 에러 저감, 페이지 RAID 및 에러 마스킹 모두를 적용 가능한 장치 구성으로 하고, 모두를 적용한 경우를 예로 하여 설명해 왔지만, 본 발명은 어느 하나 또는 2개 이상을 적용 가능한 장치 구성으로 하고, 어느 하나 또는 2개 이상을 적용하는 제어로 해도 된다. 이 경우, 당업자라면 기술 상식에 따라서 불필요한 블록을 생략할 수 있다. 예를 들어, 페이지 RAID만을 적용하는 경우에는, 미러링은 필수가 아니기 때문에, 미러 메모리(4)는 생략할 수 있다. 또한, 에러 마스킹만을 적용하는 경우에도 마찬가지로 미러링은 필수가 아니기 때문에, 미러 메모리(4)는 생략할 수 있다.
또한, 본 발명은 하나의 계층으로 SSD를 제어할 수 있지만, 복수의 계층을 포함하는 구성에 대해서도 적용 가능하다.
1: 호스트 장치
2: 제어 장치
3: 프라이머리 메모리
4: 미러 메모리
5: 버퍼 메모리
10: 에러 정정 부호화부
20: 페이지 RAID부
30: 역미러부
31: 입력부
32: 프라이머리 출력부
33: 변환부
34: 미러 출력부
40: 에러 저감부
41: 프라이머리 입력부
42: 미러 입력부
43: 비트 재반전부
44: 판정부
50: 에러 정정 복호부
60: 에러 마스킹부
70: 시프트미러부
71: 입력부
72: 프라이머리 출력부
73: 시프트 출력부

Claims (9)

  1. 프라이머리 메모리와, 상기 프라이머리 메모리에 저장되는 데이터에 대응하는 데이터가 저장되는 미러 메모리와, 버퍼 메모리 중 적어도 하나의 메모리와,
    상기 적어도 하나의 메모리를 제어하여, 상기 적어도 하나의 메모리에 데이터를 저장하고, 상기 적어도 하나의 메모리로부터 데이터를 판독하는 제어 장치
    를 구비하는 반도체 기억 장치.
  2. 제1항에 있어서, 상기 제어 장치는,
    호스트 장치로부터 수취한 데이터를 에러 정정 부호화하는 에러 정정 부호화부와,
    페이지 단위의 데이터가 상기 에러 정정 부호화부에 기입될 때마다, 비트선 방향의 패리티 비트를 산출하여 상기 버퍼 메모리에 저장하는 페이지 RAID부와,
    상기 페이지 RAID부로부터 수취한 데이터를 상기 프라이머리 메모리 및 상기 미러 메모리에 저장하는 역미러부이며,
    상기 프라이머리 메모리에는 수취한 상기 데이터를 그대로 저장하고,
    상기 미러 메모리에는, 수취한 상기 데이터의 순서를 변경하여 저장하는 역미러부와,
    상기 프라이머리 메모리 및 상기 미러 메모리로부터 데이터를 판독하는 에러 저감부이며,
    상기 프라이머리 메모리로부터 데이터를 판독하여 제1 데이터로 하고,
    상기 미러 메모리로부터, 상기 제1 데이터에 대응하는 데이터를 판독하여 제2 데이터로 하고,
    상기 제1 데이터와 상기 제2 데이터가 일치하는 경우에는, 상기 제1 데이터를 출력하고,
    상기 제1 데이터와 상기 제2 데이터가 일치하지 않는 경우에는, 상기 제1 데이터와 상기 제2 데이터 중 어느 하나에서, 지배적인 방향의 비트 에러가 발생한 것으로 추정하여 얻어지는 데이터를 출력하는 에러 저감부와,
    상기 에러 저감부로부터 수취한 데이터를 에러 정정 복호하는 에러 정정 복호부와,
    상기 에러 정정 복호부로부터, 에러 정정 복호 시에 취득된 에러 위치 정보를 수취하는 에러 마스킹부이며,
    상기 에러 위치 정보를, 상기 버퍼 메모리, 상기 프라이머리 메모리 또는 상기 미러 메모리에 저장하고,
    상기 에러 정정 복호부가 데이터를 에러 정정 복호할 때에 상기 버퍼 메모리, 상기 프라이머리 메모리 또는 상기 미러 메모리로부터 상기 에러 위치 정보를 판독하고, 상기 에러 정정 복호부에 제공하는 에러 마스킹부
    를 구비하는 반도체 기억 장치.
  3. 프라이머리 메모리와,
    상기 프라이머리 메모리에 저장되는 데이터에 대응하는 데이터가 저장되는 미러 메모리와,
    수취한 데이터를 상기 프라이머리 메모리 및 상기 미러 메모리에 저장하는 제어 장치이며,
    상기 프라이머리 메모리에는 수취한 상기 데이터를 그대로 저장하고,
    상기 미러 메모리에는, 수취한 상기 데이터를 저장하는 페이지를 소정의 규칙에 기초하여 제어하여, 상기 데이터를 저장하는 제어 장치
    를 구비하는 반도체 기억 장치.
  4. 프라이머리 메모리와,
    상기 프라이머리 메모리에 저장되는 데이터에 대응하는 데이터가 저장되는 미러 메모리와,
    수취한 데이터를 상기 프라이머리 메모리 및 상기 미러 메모리에 저장하는 역미러부이며,
    상기 프라이머리 메모리에는 수취한 상기 데이터를 그대로 저장하고,
    상기 미러 메모리에는, 수취한 상기 데이터의 순서를 변경하여 저장하는 역미러부
    를 구비하는 반도체 기억 장치.
  5. 프라이머리 메모리와,
    상기 프라이머리 메모리에 저장되는 데이터에 대응하는 데이터가 저장되는 미러 메모리와,
    수취한 데이터를 상기 프라이머리 메모리 및 상기 미러 메모리에 저장하는 시프트미러부이며,
    상기 프라이머리 메모리에는 수취한 상기 데이터를 그대로 저장하고,
    상기 미러 메모리에는, 수취한 상기 데이터를 저장하는 페이지를 시프트시켜서 저장하는 시프트미러부
    를 구비하는 반도체 기억 장치.
  6. 프라이머리 메모리와,
    상기 프라이머리 메모리에 저장되는 데이터에 대응하는 데이터가 저장되는 미러 메모리와,
    상기 프라이머리 메모리 및 상기 미러 메모리로부터 데이터를 판독하는 에러 저감부이며,
    상기 프라이머리 메모리로부터 데이터를 판독하여 제1 데이터로 하고,
    상기 미러 메모리로부터, 상기 제1 데이터에 대응하는 데이터를 판독하여 제2 데이터로 하고,
    상기 제1 데이터와 상기 제2 데이터가 일치하는 경우에는, 상기 제1 데이터를 출력하고,
    상기 제1 데이터와 상기 제2 데이터가 일치하지 않는 경우에는, 상기 제1 데이터와 상기 제2 데이터 중 어느 하나에서, 지배적인 방향의 비트 에러가 발생한 것으로 추정하여 얻어지는 데이터를 출력하는 에러 저감부
    를 구비하는 반도체 기억 장치.
  7. 버퍼 메모리와,
    호스트 장치로부터 수취한 데이터를 에러 정정 부호화하는 에러 정정 부호화부와,
    페이지 단위의 데이터가 상기 에러 정정 부호화부에 기입될 때마다, 비트선 방향의 패리티 비트를 산출하여 상기 버퍼 메모리에 저장하는 페이지 RAID부
    를 구비하는 반도체 기억 장치.
  8. 수취한 데이터를 에러 정정 복호하는 에러 정정 복호부와,
    상기 에러 정정 복호부로부터, 에러 정정 복호 시에 취득된 에러 위치 정보를 수취하는 에러 마스킹부이며,
    상기 에러 위치 정보를 메모리에 저장하고,
    상기 에러 정정 복호부가 데이터를 에러 정정 복호할 때에 상기 메모리로부터 이전의 상기 에러 위치 정보를 판독하고, 상기 에러 정정 복호부에 제공하는 에러 마스킹부를 구비하는 반도체 기억 장치.
  9. 프라이머리 메모리와, 그 프라이머리 메모리에 저장되는 데이터에 대응하는 데이터가 저장되는 미러 메모리와, 버퍼 메모리 중 적어도 하나의 메모리를 구비하는 반도체 기억 장치의 제어 방법이며,
    상기 적어도 하나의 메모리를 제어하여, 상기 적어도 하나의 메모리에 데이터를 저장하는 저장 스텝과,
    상기 적어도 하나의 메모리를 제어하여, 상기 적어도 하나의 메모리로부터 데이터를 판독하는 판독 스텝
    을 포함하는 반도체 기억 장치의 제어 방법.
KR1020157014282A 2012-11-30 2013-11-21 반도체 기억 장치 및 그 제어 방법 KR101700057B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2012263033 2012-11-30
JPJP-P-2012-263033 2012-11-30
PCT/JP2013/006852 WO2014083811A1 (ja) 2012-11-30 2013-11-21 半導体記憶装置およびその制御方法

Publications (2)

Publication Number Publication Date
KR20150079917A true KR20150079917A (ko) 2015-07-08
KR101700057B1 KR101700057B1 (ko) 2017-01-26

Family

ID=50827472

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157014282A KR101700057B1 (ko) 2012-11-30 2013-11-21 반도체 기억 장치 및 그 제어 방법

Country Status (5)

Country Link
US (1) US9684464B2 (ko)
JP (1) JP6327714B2 (ko)
KR (1) KR101700057B1 (ko)
CN (1) CN104969202B (ko)
WO (1) WO2014083811A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10133625B2 (en) 2015-08-11 2018-11-20 Western Digital Technologies, Inc. Storing parity data separate from protected data

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9529672B2 (en) * 2014-09-25 2016-12-27 Everspin Technologies Inc. ECC word configuration for system-level ECC compatibility
JP6700082B2 (ja) * 2016-03-29 2020-05-27 ラピスセミコンダクタ株式会社 半導体装置、電池監視システム、及びデータ読み出し方法
US10567006B2 (en) * 2016-08-05 2020-02-18 Sandisk Technologies Llc Data relocation
US10691533B2 (en) * 2017-12-12 2020-06-23 Micron Technology, Inc. Error correction code scrub scheme
US10789126B2 (en) * 2018-10-09 2020-09-29 Micron Technology, Inc. Multiple memory devices having parity protection

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0663651A (ja) * 1992-08-19 1994-03-08 Kaidate Sangyo Kk パイプ用端部加工方法
JPH06282449A (ja) * 1993-03-29 1994-10-07 Nec Corp メモリコントローラ
JPH07281961A (ja) * 1994-04-08 1995-10-27 N T T Data Tsushin Kk メモリ故障検出装置及び計算機
JP2002244932A (ja) * 2001-02-15 2002-08-30 Ricoh Co Ltd 制御装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6063651A (ja) 1983-09-17 1985-04-12 Nippon Telegr & Teleph Corp <Ntt> 記憶装置
JPS61272851A (ja) * 1985-05-28 1986-12-03 Mitsubishi Electric Corp 記憶装置
EP0306211A3 (en) * 1987-09-04 1990-09-26 Digital Equipment Corporation Synchronized twin computer system
US6330186B2 (en) * 1996-02-19 2001-12-11 Citizen Watch Co, Ltd. Non-volatile semiconductor memory device having electrically programable memory matrix array
JP4543317B2 (ja) 2004-12-07 2010-09-15 株式会社デンソー 不揮発性メモリのデータ制御方法
WO2008101316A1 (en) * 2007-02-22 2008-08-28 Mosaid Technologies Incorporated Apparatus and method for using a page buffer of a memory device as a temporary cache
JP2009294869A (ja) 2008-06-04 2009-12-17 Toshiba Corp メモリシステム
US9021188B1 (en) * 2013-03-15 2015-04-28 Virident Systems Inc. Small block write operations in non-volatile memory systems

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0663651A (ja) * 1992-08-19 1994-03-08 Kaidate Sangyo Kk パイプ用端部加工方法
JPH06282449A (ja) * 1993-03-29 1994-10-07 Nec Corp メモリコントローラ
JPH07281961A (ja) * 1994-04-08 1995-10-27 N T T Data Tsushin Kk メモリ故障検出装置及び計算機
JP2002244932A (ja) * 2001-02-15 2002-08-30 Ricoh Co Ltd 制御装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10133625B2 (en) 2015-08-11 2018-11-20 Western Digital Technologies, Inc. Storing parity data separate from protected data

Also Published As

Publication number Publication date
US9684464B2 (en) 2017-06-20
CN104969202B (zh) 2018-04-03
JP6327714B2 (ja) 2018-05-23
WO2014083811A1 (ja) 2014-06-05
KR101700057B1 (ko) 2017-01-26
CN104969202A (zh) 2015-10-07
JPWO2014083811A1 (ja) 2017-01-05
US20150309744A1 (en) 2015-10-29

Similar Documents

Publication Publication Date Title
US10459794B2 (en) Memory systems having extended product lifetime and methods of operating the same
US10572338B2 (en) Estimating an error rate associated with memory
CN111081308B (zh) 用于混合非易失性存储系统的系统和方法
KR101700057B1 (ko) 반도체 기억 장치 및 그 제어 방법
US20170139761A1 (en) Variable-Term Error Metrics Adjustment
US9092350B1 (en) Detection and handling of unbalanced errors in interleaved codewords
KR102407659B1 (ko) 메모리 내 데이터 복원 작업의 수행
US11861195B2 (en) TLC data programming with hybrid parity
TW201722090A (zh) 用於nand快閃記憶體的渦輪乘積碼
JP2015018451A (ja) メモリコントローラ、記憶装置およびメモリ制御方法
KR20130049464A (ko) 에러 정정 성능 신장 방법 및 이를 이용한 저장 장치
US10817372B2 (en) Systems and methods for ultra fast ECC with parity
Tanakamaru et al. Unified solid-state-storage architecture with NAND flash memory and ReRAM that tolerates 32× higher BER for big-data applications
US10756764B2 (en) Memory system and control method
US20240086282A1 (en) Multi-layer code rate architecture for copyback between partitions with different code rates
KR102007163B1 (ko) 인코더, 디코더 및 이를 포함하는 반도체 장치
US10922025B2 (en) Nonvolatile memory bad row management
TWI537971B (zh) Storage device and access method thereof
KR102593374B1 (ko) Qlc 데이터 프로그래밍
US11994947B2 (en) Multi-layer code rate architecture for special event protection with reduced performance penalty
US20240062839A1 (en) Performing block-level media management operations for block stripes in a memory device
US20240054046A1 (en) Error-handling management during copyback operations in memory devices

Legal Events

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

Payment date: 20191226

Year of fee payment: 4