KR20200070686A - 저장 장치 및 그 동작 방법 - Google Patents

저장 장치 및 그 동작 방법 Download PDF

Info

Publication number
KR20200070686A
KR20200070686A KR1020180158103A KR20180158103A KR20200070686A KR 20200070686 A KR20200070686 A KR 20200070686A KR 1020180158103 A KR1020180158103 A KR 1020180158103A KR 20180158103 A KR20180158103 A KR 20180158103A KR 20200070686 A KR20200070686 A KR 20200070686A
Authority
KR
South Korea
Prior art keywords
data
parity
address
stored
updated
Prior art date
Application number
KR1020180158103A
Other languages
English (en)
Inventor
이동섭
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020180158103A priority Critical patent/KR20200070686A/ko
Priority to US16/510,557 priority patent/US11704055B2/en
Priority to CN201910838149.XA priority patent/CN111290703A/zh
Publication of KR20200070686A publication Critical patent/KR20200070686A/ko

Links

Images

Classifications

    • 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
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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
    • 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/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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
    • 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
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/781On-chip cache; Off-chip 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/0626Reducing size or complexity of storage systems
    • 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/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명은 저장 장치에 관한 것으로, 구체적으로 메모리 상에 저장된 데이터 및 패리티를 업데이트하는 저장 장치 및 그 동작 방법에 관한 것이다. 본 발명의 실시예에 따른 저장 장치는, 반도체 메모리 장치 및 반도체 메모리 장치를 제어하는 컨트롤러를 포함하되, 컨트롤러는 어드레스, 업데이트되는 데이터 비트들의 정보 및 업데이트되는 데이터 비트들에 대한 타겟 데이터를 기초로 하여, 어드레스가 지시하는 영역에 저장되는 데이터를 어드레스가 지시하는 영역에 기 저장된 원본 데이터에서 제1 데이터로 업데이트하는 데이터 업데이터 및 원본 데이터, 업데이트되는 데이터 비트들의 정보 및 전술한 타겟 데이터를 기초로 하여 계산된 제2 데이터를 이용하여, 어드레스가 지시하는 영역에 저장되는 데이터에 대한 패리티를 타겟 패리티로 업데이트하는 패리티 업데이터를 포함하도록 구성된다.

Description

저장 장치 및 그 동작 방법{STORAGE DEVICE AND OPERATING METHOD THEREOF}
본 발명은 전자 장치에 관한 것으로, 보다 구체적으로 저장 장치 및 그 동작 방법에 관한 것이다.
저장 장치(Storage Device)는 컴퓨터, 스마트폰과 같은 호스트(host)의 요청을 기초로 데이터를 저장하는 장치이다. 저장 장치는 하드 디스크 드라이브(HDD, Hard Disk Drive)와 같이 자기 디스크에 데이터를 저장하는 장치뿐 아니라, 솔리드 스테이트 드라이브(SSD, Solid State Drive), UFS(Universal Flash Storage) 장치, eMMC(embedded MMC) 장치 등과 같이 비휘발성 메모리에 데이터를 저장하는 장치를 포함한다.
비휘발성 메모리는 ROM(Read Only Memory), PROM(Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM(Electrically Erasable and Programmable ROM), 플래시 메모리, PRAM(Phase-change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), FRAM(Ferroelectric RAM) 등을 포함한다.
저장 장치는 호스트의 요청에 따라 비휘발성 메모리에 읽기 및 쓰기 동작을 수행하기 위해서, SoC(System On Chip) 및 이에 탑재되는 펌웨어(FW, firmware)를 포함할 수 있다.
저장 장치 내부에 포함된 펌웨어가 구동될 때, 펌웨어의 프로그램 코드 및 데이터들은 저장 장치 내에 포함된 메모리에 저장된다. 이 메모리는 SRAM(static RAM), DRAM(dynamic RAM), SDRAM(Synchronous DRAM) 등과 같이, 전원 공급이 차단되면 저장하고 있는 데이터가 소멸되는 것을 특징으로 하는 메모리이다.
본 발명의 실시예는 저장 장치 내의 메모리에 저장된 데이터가 업데이트되는 경우, 데이터 및 해당 데이터에 대한 패리티를 효율적으로 업데이트하기 위한 저장 장치 및 그 동작 방법을 제공한다.
본 발명의 실시예에 따른 저장 장치는, 반도체 메모리 장치 및 반도체 메모리 장치를 제어하는 컨트롤러를 포함하되, 컨트롤러는 어드레스, 업데이트되는 데이터 비트들의 정보 및 업데이트되는 데이터 비트들에 대한 타겟 데이터를 기초로 하여, 어드레스가 지시하는 영역에 저장되는 데이터를 어드레스가 지시하는 영역에 기 저장된 원본 데이터에서 제1 데이터로 업데이트하는 데이터 업데이터 및 원본 데이터, 업데이트되는 데이터 비트들의 정보 및 전술한 타겟 데이터를 기초로 하여 계산된 제2 데이터를 이용하여, 어드레스가 지시하는 영역에 저장되는 데이터에 대한 패리티를 타겟 패리티로 업데이트하는 패리티 업데이터를 포함하도록 구성된다.
본 발명의 실시예에 따른 컨트롤러는, 어드레스, 업데이트되는 데이터 비트들의 정보 및 업데이트되는 데이터 비트들에 대한 타겟 데이터를 기초로 하여, 어드레스가 지시하는 영역에 저장되는 데이터를 어드레스가 지시하는 영역에 기 저장된 원본 데이터에서 제1 데이터로 업데이트하는 데이터 업데이터 및 원본 데이터, 업데이트되는 데이터 비트들의 정보 및 전술한 타겟 데이터를 기초로 하여 계산된 제2 데이터를 이용하여, 어드레스가 지시하는 영역에 저장되는 데이터에 대한 패리티를, 제2 데이터를 이용하여 계산되는 타겟 패리티로 업데이트하는 패리티 업데이터를 포함한다.
본 발명의 실시예에 따른 메모리 장치는, 인버트 지시 정보가 입력되는 입력 단자, 하나의 워드 라인에 연결된 복수의 메모리 셀들 및 복수의 메모리 셀들과 연결된 인버팅 셀 어레이를 포함하고, 인버팅 셀 어레이는 복수의 인버팅 셀들을 포함하고, 각 인버팅 셀은 각 인버팅 셀과 연결된 메모리 셀에 저장된 값을 인버트한 값을 저장하고, 입력 받은 인버트 지시 정보의 각 비트의 값을 기초로, i) 인버트 지시 정보의 각 비트에 대응되는 인버팅 셀에 저장된 값 또는 ii) 복수의 메모리 셀들 중 인버트 지시 정보의 각 비트에 대응되는 메모리 셀에 저장된 값을 출력하는 것을 특징으로 한다.
본 발명의 실시예에 따른 저장 장치의 동작 방법은, 어드레스, 업데이트되는 데이터 비트들의 정보 및 업데이트되는 데이터 비트들에 대한 타겟 데이터를 기초로 하여, 어드레스가 지시하는 영역에 저장되는 데이터를 어드레스가 지시하는 영역에 기 저장된 원본 데이터에서 제1 데이터로 업데이트하는 단계, 원본 데이터, 업데이트되는 데이터 비트들의 정보 및 타겟 데이터를 기초로 하여 제2 데이터를 계산하는 단계 및 어드레스가 지시하는 영역에 저장되는 데이터에 대한 패리티를, 제2 데이터를 이용하여 계산되는 타겟 패리티로 업데이트하는 단계를 포함하는 것을 특징으로 한다.
본 발명의 실시예에 따르면, 메모리 장치상의 데이터의 일부분만이 업데이트되는 경우에, 데이터를 업데이트하면서 업데이트된 데이터에 대한 패리티를 업데이트하기 위해 발생하는 오버헤드를 줄일 수 있다.
도 1은 저장 장치의 구조를 도시한 도면이다.
도 2는 본 발명의 실시예에 따른 저장 장치를 개략적으로 도시한 도면이다.
도 3은 도 2의 컨트롤러의 구조의 일 예에 대한 구성도이다.
도 4는 데이터를 기초로 패리티를 계산하는 방법의 일 예를 도시한 도면이다.
도 5는 본 발명의 실시예에서, 원본 패리티 및 업데이트된 데이터 정보를 기초로 패리티를 계산하는 방법의 일 예를 도시한 도면이다.
도 6은 본 발명의 실시예에서, XOR 연산의 특성을 이용하여 원본 데이터에 대한 XOR 연산 값을 도출하는 원리를 설명한 도면이다.
도 7은 본 발명의 실시예에서, 데이터를 저장하는 제1 메모리 칩의 핀 구성을 도시한 도면이다.
도 8은 본 발명의 실시예에서, 패리티를 저장하는 제2 메모리 칩의 핀 구성을 도시한 도면이다.
도 9는 도 7 내지 도 8에서 설명한 메모리 칩의 내부 구성도이다.
도 10은 도 9의 메모리 칩의 동작을 설명하는 순서도이다.
도 11은 도 9의 메모리 칩에서 데이터의 n번째 비트에 대한 갱신 값 및 출력 값을 비교한 도면이다.
도 12는 도 7 및 도 8에서 설명한 메모리 칩으로 구현된 메모리 장치를 이용하는 컨트롤러의 구조를 설명하기 위한 구성도이다.
도 13은 본 발명의 실시예에서, 저장 장치의 동작 방법을 설명하기 위한 순서도이다.
도 14는 도 1의 반도체 메모리 장치의 구조를 설명하기 위한 도면이다.
본 발명의 이점 및 특징, 그리고 그것을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 통해 설명될 것이다. 그러나 본 발명은 여기에서 설명되는 실시예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 본 실시예들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
본 발명의 도면들에 있어서, 본 발명의 실시예들은 도시된 특정 형태로만 제한되는 것이 아니며 명확성을 기하기 위하여 표현된 것이다. 또한, 도면들과 명세서 전체에 걸쳐서 동일한 참조 번호로 표시된 부분들은 동일한 구성요소를 나타낸다.
본 명세서에서는 특정한 용어들이 사용되었으나 이는 본 발명을 설명하기 위한 목적에서 사용된 것이며, 의미 한정이나 특허 청구 범위에 기재된 본 발명의 권리 범위를 제한하기 위하여 사용된 것은 아니다.
본 명세서 또는 출원에 개시되어 있는 본 발명의 개념에 따른 실시예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 개념에 따른 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 개념에 따른 실시예들은 다양한 형태로 실시될 수 있으며 본 명세서 또는 출원에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명의 개념에 따른 실시예는 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있으므로 특정 실시예들을 도면에 예시하고 본 명세서 또는 출원에 상세하게 설명한다. 그러나 이는 본 발명의 개념에 따른 실시예를 특정한 개시 형태로만 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
본 명세서에서 '및/또는'이란 표현은 전후에 나열된 구성 요소 중 적어도 하나를 포함하는 의미로 사용된다. 제1 및/또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만 사용된다. 예컨대 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 서술된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
실시예를 설명함에 있어서, 본 발명이 속하는 기술 분야에 익히 알려져 있고 본 발명과 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다. 이는 불필요한 설명을 생략함으로써 본 발명의 요지를 흐리지 않고 더욱 명확히 전달하기 위함이다.
또한, 본 발명의 구성 요소를 설명하는 데 있어서, 제1, 제2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 어떤 구성 요소가 다른 구성요소에 "연결", "결합" 또는 "접속"된다고 기재된 경우, 그 구성 요소는 그 다른 구성요소에 직접적으로 연결되거나 또는 접속될 수 있지만, 각 구성 요소 사이에 또 다른 구성 요소가 "연결", "결합" 또는 "접속"될 수도 있다고 이해되어야 할 것이다.
전술한 바와 같이 SSD, UFS 장치, eMMC 장치 등의 저장 장치는 호스트의 요청에 대해, 프로토콜이 정의한 명령의 내용에 따라서 비휘발성 메모리 장치에 읽기 및 쓰기 동작을 수행한다.
SoC의 테크노드(Technode)가 낮아지고, 특히 28nm에서 16nm 또는 그 이하의 ASIC(Application Specific Integrated Circuit) 테크놀로지를 채용하면서, 저장 장치가 동작하는 로직과 함께 저장 장치가 동작하는 로직을 실행하는 프로그램 코드 및 데이터들을 저장하는 SRAM, DRAM 등의 메모리 장치의 밀도(density)가 점점 커진다. 또한, 더 높은 요구사항(requirement)을 만족하기 위하여, 저장 장치는 더 다양하고 복잡한 동작을 고속으로 수행할 필요가 있다.
반면 저장 장치가 장착되는 시스템의 환경에 대한 제약 사항은 지속적으로 증가하고 있다. 예를 들어 LCD의 사이즈와 리프레쉬율(refresh rate)은 지속적으로 증가하고 있으며, WiFi, LTE 등 통신 장비가 지원하는 데이터율(data rate) 역시 지속적으로 증가하고 있다.
따라서, 저장 장치가 이러한 시스템상에 위치하는 다른 장치들에 의해서 발생하는 파워 노이즈(power noise)에 내성을 가지기 위해서는 고가의 비용의 PCB(Printed Circuit Board) 및 부품이 필요하고, 이는 전체적인 BOM(Bills Of Materials)의 상승을 유발한다.
이러한 외부 요인에 의해서, 저장 장치상의 SRAM, DRAM 등의 메모리 장치에 저장된 데이터에 대하여 간헐적으로 비트 플립(bit flip)이 발생할 수 있다. 기존에 존재하는 알파 파티클에 의한 비트 플립뿐 아니라, 갈수록 열악해지는 시스템 환경으로 인해서, 더 높은 성능과 캐패시티를 가지는 메모리 장치가 정상적인 동작 조건 이외의 상황에 처할 가능성이 높다. 그리고 이러한 상황을 극복하기 위해 발생하는 비용 및 설계 검증에 대한 리스크 역시 지속적으로 증가하고 있다.
한편, 동작 온도, 전압 레벨, 저전력 설계 및 메인 보드의 환경 역시 전술한 문제점을 가중시키고 있다. 모바일(mobile) 장치뿐 아니라 특히 자동차(automotive) 등에서는 이러한 문제점이 중요한 주제로 부각되고 있다. 따라서, 적절한 노력과 비용으로 이러한 문제점을 해결하고 관련된 요구 사항을 만족시키기 위한 방법이 필요하다.
본 발명에서 설명하는 실시예는, 저장 장치에서 대용량의 SRAM, DRAM 등의 메모리 장치를 사용하는 경우에, 비트 플립 등으로 인한 소프트 에러(soft error)에 대해 대처하는 방안에 대해 설명한다. 특히 본 발명에서 설명하는 실시예는 프로텍션(protection) 단위는 크지만(e.g. 128바이트, 512바이트), 실제로 업데이트되는 데이터의 크기는 작은(e.g. 1비트) 요청을 처리하는 경우에, 소프트 에러에 대처하기 위하여 데이터 및 패리티를 관리하는 방안을 중점적으로 설명한다.
메모리 장치에서 발생하는 소프트 에러에 대처하는 기존의 방법은 크게 3가지로 분류할 수 있다.
1) 노 프로텍션(no protection)
ASIC 및 PKG 공정에서 최대한 스크리닝(screening)을 수행하고 내성이 있는 ASIC DIE를 정렬하여 시스템에 적용하되, 추가로 소프트 에러를 검출/정정하는 메커니즘은 사용하지 않는 방식이다.
2) 오버킬 프로텍션(overkill protection)
논리적인 최소의 쓰기 유닛(write unit) 단위로 EDC(Error Detection Code)/ECC(Error Correction Code) 패리티를 적용하는 방식이다. 예를 들어 최소의 쓰기 유닛 단위가 32비트인 경우 1비트의 EDC 패리티 또는 7비트의 ECC 패리티가 적용될 수 있다.
3) 컴프로마이즈드 프로텍션(compromised protection)
여러 개의 쓰기 유닛을 묶어 하나의 큰 프로텍션 단위를 구성하고, 하나의 프로텍션 단위 별로 EDC/ECC 패리티를 적용하는 방식이다. 예를 들어 128바이트, 256바이트 또는 512바이트의 프로텍션 단위의 데이터에 대해서 EDC/ECC 패리티를 구성하는 방식이다.
전술한 3가지 방법을 비교하면, 먼저 노 프로텍션(no protection) 방식은 ASIC screening에 의한 오버헤드가 존재하고, PKG, 시스템 비용이 증가하며, 예상하지 못한 비트 플립 발생에 취약하다는 문제점이 있다.
오버킬 프로텍션(overkill protection) 방식은 각 쓰기 유닛마다 패리티의 오버헤드가 추가되기 때문에, 데이터 대비 패리티의 오버헤드가 지나치게 크다는 문제점이 있다. 예를 들어 32비트의 쓰기 유닛당 1비트의 EDC 패리티를 사용할 경우 (1/32) ≒ 3%의 오버헤드가 발생하며, 7비트의 ECC 패리티를 사용할 경우 약 (7/32) ≒ 17%의 오버헤드가 발생한다.
마지막으로, 컴프로마이즈드 프로텍션(compromised protection) 방식은 오버킬 프로텍션(overkill protection) 방식에 비하여, 데이터 대비 패리티의 오버헤드를 상당히 줄일 수 있다는 장점이 있다. 예를 들어 128비트 당 1비트의 패리티를 사용하거나 256바이트 당 2바이트(=16비트)의 패리티를 사용할 수 있으며, 이 경우 데이터 대비 패리티의 오버헤드는 1% 미만이 될 수 있다.
하지만, 컴프로마이즈드 프로텍션(compromised protection) 방식은 지연 시간(latency) 측면에서 오버킬 프로텍션(overkill protection) 방식에 비해 불리하다는 단점이 있다. 여러 개의 쓰기 유닛을 묶어 하나의 프로텍션 단위를 구성할 경우, 프로텍션 단위 내의 일부의 쓰기 유닛에만 변경이 발생하는 경우에도 전체 프로텍션 단위의 데이터를 읽어서 패리티를 계산해야 하기 때문이다.
특히, CPU 등의 장치가 바이트(Byte), 해프-워드(Half-word), 풀-워드(Full-word) 단위의 부분 쓰기(partial write)를 메모리 장치에 저장된 데이터에 대해서 수행하는 경우에, 메모리 장치에 저장된 데이터에 대한 프로텍션 방법이 문제가 된다.
부분 쓰기(partial write)란, 프로텍션 단위보다 작은 단위의 쓰기 동작으로 정의될 수 있다. 예를 들어 프로텍션 단위가 512비트로 설정된 경우에, CPU가 512비트 전체에 대해 쓰기를 수행하는 대신에 그 중의 1비트, 2비트 또는 4비트에 대해서만 쓰기를 수행하는 경우가 부분 쓰기에 해당한다.
이 경우 전술한 오버킬 프로텍션(overkill protection) 방법을 사용하여 쓰기 유닛 단위로 쓰기 동작이 이루어지도록 할 수 있다. 오버킬 프로텍션(overkill protection) 방법을 사용하면, 쓰기 동작이 쓰기 유닛 단위에서만 이루어지므로 쓰기 동작 과정에서 접근하는 영역을 최소화할 수 있다는 장점이 있다.
그러나 오버킬 프로텍션(overkill protection)을 사용할 경우 패리티를 위해 사용되는 저장 공간이 커지는 문제가 발생한다.
일 예로 메모리 장치는 CPU의 최소 쓰기 단위인 8비트마다 패리티를 구성할 수 있으며, 이 때, 해밍(hamming) 규칙으로 생성되는 4비트의 값 및 SECDED(Single-Error-Correction Double-Error-Detection)를 위한 1비트의 체크섬(checksum)을 포함한 총 5비트의 패리티를 추가로 저장해야 한다. 이 경우 1MB의 데이터를 위해서 약 640KB의 패리티가 추가되기 때문에 저장 공간에 대한 오버헤드가 매우 크다.
컴프로마이즈드 프로텍션(compromised protection) 방식을 사용할 경우, 일 예로 메모리 장치는 256바이트의 프로텍션 단위마다 2바이트의 ECC 패리티를 구성할 수 있다. 이 경우 데이터 프로텍션을 위해 추가되는 패리티의 오버헤드는 1% 이내이므로, 저장 용량의 측면에서는 전술한 오버킬 프로텍션(overkill protection) 방식에 비해 이득이 있다.
반면, 컴프로마이즈드 프로텍션(compromised protection) 방법을 사용하는 경우에는, 프로텍션 단위의 데이터를 전부 읽은 다음, 변경될 부분의 데이터만 업데이트한 후에 다시 업데이트된 프로텍션 단위의 데이터에 대한 패리티를 계산하여, 전체 데이터 및 패리티를 메모리에 쓰는 방식을 취할 수밖에 없다는 단점이 있다.
예를 들어, 256바이트의 데이터 중 1바이트의 데이터만 업데이트되는 경우에도, 패리티를 계산하기 위해 전체 프로텍션 단위인 256바이트에 대해서 읽기-수정-쓰기(RMW, Read-Modify-Write) 작업이 수행되어야 하므로, 읽기/쓰기 측면에서의 오버헤드는 증가하는 문제가 있다.
따라서, 전체 프로텍션 단위에 비하여 업데이트되는 데이터의 비율이 매우 작은 부분 쓰기(partial write) 동작이 수행되는 경우에 데이터 및 패리티 갱신을 위한 오버헤드를 줄이기 위한 방법이 필요하다.
본 발명의 실시예에서는 컴프로마이즈드 프로텍션(compromised protection) 방식을 사용할 경우 발생할 수 있는, 부분 쓰기 동작 시의 오버헤드를 줄일 수 있는 저장 장치 및 그 동작 방법에 대해서 상세히 설명한다.
이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시예를 첨부된 도면을 참조하여 설명하기로 한다.
도 1은 저장 장치의 구조를 도시한 도면이다.
우선, 컨트롤러(10)는 호스트(50)로부터 요청을 입력 받아, 입력 받은 요청을 기초로 하여 반도체 메모리 장치(20)의 동작을 제어할 수 있다. 예를 들면 컨트롤러(10)는 반도체 메모리 장치(20)에 대한 쓰기, 읽기, 소거 및 백그라운드(background) 동작을 제어할 수 있다. 여기서, 백그라운드 동작은 일 예로 가비지 컬렉션(GC, Garbage Collection), 웨어 레벨링(WL, Wear Leveling), 배드 블록 관리(BBM, Bad Block Management) 동작 등이 될 수 있다.
컨트롤러(10)는 호스트 인터페이스(11), 프로세서(12), 플래시 인터페이스(13), 에러 정정부(14), 메모리 인터페이스(15), 램(16), 버스(17)를 포함할 수 있다.
호스트 인터페이스(11)는 외부의 호스트와의 통신을 위한 인터페이스를 제공한다.
플래시 인터페이스(13)는 반도체 메모리 장치(20)와의 통신을 위한 인터페이스를 제공한다.
에러 정정부(14)는 반도체 메모리 장치(20)에 저장되는 데이터에 대한 에러 정정을 수행할 수 있다.
램(16)은 컨트롤러(10)를 구동하기 위해 필요한 프로그램 코드, 커맨드 또는 데이터들을 저장할 수 있으며, SRAM 또는 DRAM일 수 있다.
만약 컨트롤러(10)에 별도의 DRAM이 없는 경우에는, 램(16)은 반도체 메모리 장치(20)를 관리하기 위한 맵 테이블을 저장할 수 있다. 이때, 램(16)에서 저장할 수 있는 데이터 사이즈가 제한적이므로, 램(16)은 반도체 메모리 장치(20)를 관리하기 위한 맵 테이블 전체를 로딩할 수 없다.
따라서, 램(16)은 맵 테이블의 일부를 캐싱(caching)하고, 필요한 경우 반도체 메모리 장치(20)에 저장된 맵 테이블 데이터를 반복적으로 로드/언로드한다.
메모리 인터페이스(15)는 프로세서(12)가 사용하는 동작 메모리, 캐시 메모리 또는 버퍼 메모리가 저장되는 버퍼로 사용될 수 있다. 메모리 인터페이스(15)는 내부적으로 SRAM 또는 DRAM을 포함할 수도 있다.
버스(17)는 컨트롤러(10)의 구성 요소들 사이의 채널을 제공하도록 구성될 수 있다.
프로세서(12)는 컨트롤러(10)의 제반 동작을 제어하고, 논리 연산을 수행할 수 있다. 프로세서(12)는 호스트 인터페이스(11)를 통해 외부의 호스트와 통신하고, 플래시 인터페이스(13)를 통해 반도체 메모리 장치(20)와 통신할 수 있다. 프로세서(12)는 에러 정정부(14)를 통해 반도체 메모리 장치(20)에 저장된 데이터에 대한 에러를 검출하고 필요한 경우 정정할 수 있다. 그리고 프로세서(12)는 메모리 인터페이스(15)를 통해 동작 메모리, 캐시 메모리 또는 버퍼 메모리를 사용하여, 램(16)에 데이터 읽기/쓰기 동작을 수행할 수 있다.
그리고 프로세서(12)는 플래시 변환 계층(FTL)의 기능을 수행할 수 있다. 프로세서(12)는 플래시 변환 계층(FTL)을 통해 호스트가 제공한 논리 블록 어드레스(LBA, logical block address)를 물리 블록 어드레스(PBA, physical block address)로 변환할 수 있다. 플래시 변환 계층(FTL)은 맵핑 테이블을 이용하여 논리 블록 어드레스(LBA)를 입력 받아, 물리 블록 어드레스(PBA)로 변환시킬 수 있다. 플래시 변환 계층의 주소 맵핑 방법에는 맵핑 단위에 따라 여러 가지가 있다. 대표적인 어드레스 맵핑 방법에는 페이지 맵핑 방법(Page mapping method), 블록 맵핑 방법(Block mapping method), 그리고 혼합 맵핑 방법(Hybrid mapping method)이 있다.
프로세서(12)는 호스트로부터 수신된 데이터를 랜더마이즈하도록 구성된다. 예를 들면, 프로세서(12)는 랜더마이징 시드(seed)를 이용하여 호스트로부터 수신된 데이터를 랜더마이즈할 것이다. 랜더마이즈된 데이터는 저장될 데이터로서 메모리 장치에 제공되어 메모리 셀 어레이에 프로그램된다.
프로세서(12)는 읽기 동작 시 메모리 장치로부터 수신된 데이터를 디랜더마이즈하도록 구성된다. 예를 들면, 프로세서(12)는 디랜더마이징 시드를 이용하여 메모리 장치로부터 수신된 데이터를 디랜더마이즈할 것이다. 디랜더마이즈된 데이터는 호스트로 출력될 것이다.
본 발명의 실시예에서, 프로세서(12)는 후술할 도 2 내지 도 3을 참조하여 설명된 데이터 업데이터(210) 및 패리티 업데이터(220)의 동작을 수행할 수 있다.
예를 들어, 프로세서(12)는, 메모리 장치에 저장되는 데이터에 부분 쓰기 시 데이터 및 패리티를 업데이트하는 동작을 수행하는 펌웨어를 구동할 수 있다. 전술한 펌웨어는 도 2에서 후술할 컨트롤러의 동작 방법에 따라 구동될 수 있다. 즉, 프로세서(12) 및 프로세서(12)에 구동되는 펌웨어에 따라서 데이터 업데이터(210) 및 패리티 업데이터(220)가 구현될 수 있다.
또한, 본 발명의 실시예에서, 램(16)은 후술할 도 3에서 설명된 제1 메모리 장치(230) 및 제2 메모리 장치(240)일 수 있다. 제1 메모리 장치(230) 및 제2 메모리 장치(240)는 물리적으로 분리된 램 칩으로 구성되거나, 또는 하나의 램 칩 내부에서 별도의 영역으로 분리되어 구성될 수도 있다.
도 2는 본 발명의 실시예에 따른 저장 장치를 개략적으로 도시한 도면이다.
도 2를 참조하면, 저장 장치(100)는 컨트롤러(200) 및 반도체 메모리 장치(300)를 포함할 수 있다.
컨트롤러(200)는 호스트(50)로부터의 요청을 수신하여, 수신된 요청을 기초로 반도체 메모리 장치(300)를 제어하고 필요한 경우 호스트(50)에 응답을 전송할 수 있다.
또한, 컨트롤러(200)는 외부의 호스트로부터 직접 요청을 수신하는 대신, 내부의 호스트 인터페이스를 통해서 요청을 수신하고, 수신된 요청을 기초로 반도체 메모리 장치(300)를 제어할 수도 있다.
컨트롤러(200)는 내부에 데이터 업데이터(210) 및 패리티 업데이터(220)를 포함한다. 구체적인 컨트롤러(200)의 구성 및 동작은 이하의 도 3에서 후술한다.
반도체 메모리 장치(300)는 데이터를 저장할 수 있다. 반도체 메모리 장치(300)는 컨트롤러(200)의 제어에 따라 동작한다.
반도체 메모리 장치(300)는 데이터를 저장하는 복수의 메모리 셀들을 포함하는 메모리 셀 어레이를 포함할 수 있다. 실시예에서, 반도체 메모리 장치(300)는 낸드 플래시 메모리(NAND flash memory), 수직형 낸드 플래시 메모리(Vertical NAND), 노어 플래시 메모리(NOR flash memory), 저항성 램(resistive random access memory: RRAM), 상 변화 메모리(phase-change memory: PRAM), 자기저항 메모리(magnetoresistive random access memory: MRAM), 강유전체 메모리(ferroelectric random access memory: FRAM), 스핀주입 자화 반전 메모리(spin transfer torque random access memory: STT-RAM) 등이 될 수 있다.
본 발명의 실시예에서, 반도체 메모리 장치(300)는 3차원 어레이 구조(three-dimensional array structure)로 구현될 수 있다. 본 발명은 전하 저장층이 전도성 부유 게이트(floating gate; FG)로 구성된 플래시 메모리 장치는 물론, 전하 저장층이 절연막으로 구성된 차지 트랩형 플래시(charge trap flash; CTF)에도 적용될 수 있다.
반도체 메모리 장치(300)는 컨트롤러(200)로부터 커맨드 및 어드레스를 수신하고, 메모리 셀 어레이 중 어드레스에 의해 선택된 영역을 액세스하도록 구성된다. 즉, 반도체 메모리 장치(300)는 어드레스에 의해 선택된 영역에 대해 커맨드에 해당하는 동작을 수행할 수 있다.
예를 들면, 반도체 메모리 장치(300)는 프로그램 동작, 읽기 동작 및 소거 동작을 수행할 수 있다. 프로그램 동작 시에, 반도체 메모리 장치(300)는 어드레스에 의해 선택된 영역에 데이터를 프로그램할 것이다. 읽기 동작 시에, 반도체 메모리 장치(300)는 어드레스에 의해 선택된 영역으로부터 데이터를 읽을 것이다. 소거 동작 시에, 반도체 메모리 장치(300)는 어드레스에 의해 선택된 영역에 저장된 데이터를 소거할 것이다.
호스트(50)는 적어도 하나의 운영 시스템을 포함할 수 있으며, 운영 시스템은 호스트(50)의 기능 및 동작을 전반적으로 관리 및 제어하고 저장 장치(100)와 호스트(50)간의 상호 동작을 제공할 수 있다. 호스트(50)는 전자 장치, 예를 들어 휴대폰, MP3 플레이어, 랩탑 컴퓨터, 데스크탑 컴퓨터, 게임기, TV, 프로젝터 등의 유무선 전자 장치들 중 하나가 될 수 있다.
도 3은 도 2의 컨트롤러의 구조의 일 예에 대한 구성도이다.
도 3을 참조하면, 컨트롤러(200)는 데이터 업데이터(210), 패리티 업데이터(220)를 포함할 수 있으며, 추가로 제1 메모리 장치(230) 및 제2 메모리 장치(240)를 포함할 수 있다.
데이터 업데이터(210)는 어드레스, 업데이트되는 데이터 비트들의 정보 및 업데이트되는 비트들에 대한 타겟 데이터를 기초로 하여, 어드레스가 지시하는 영역에 저장되는 데이터를 어드레스가 지시하는 영역에 기 저장된 원본 데이터에서 제1 데이터로 업데이트할 수 있다.
여기서, 제1 데이터는 전술한 원본 데이터에서 업데이트되는 비트들에 대한 타겟 데이터를 반영한 값으로 결정될 수 있다. 예를 들어 원본 데이터가 이진법으로 01101111로 표현되고, 각 데이터 비트의 인덱스는 0에서 7로 표현된다고 가정한다. 만약 인덱스 4에서 7의 데이터 비트가 1111 -> 1010으로 업데이트된다고 하면 제1 데이터는 01101010으로 결정될 수 있다.
한편, 본 발명의 실시예에서는 컨트롤러(200)가, 어드레스가 지시하는 영역에 저장되는 데이터 중에서 어떤 비트가 업데이트되는 지에 대한 정보를 입력 받는 것을 전제로 한다.
예를 들어 어드레스가 지시하는 영역에 512비트의 데이터가 저장되어 있고 그 중 1비트만 업데이트되는 경우를 가정하면, 이 경우 컨트롤러(200)는 업데이트되는 1비트가 어떤 비트인지 정보를 입력 받을 수 있고, 별도로 업데이트되는 데이터 비트가 512비트 중 어떤 비트인지를 파악하기 위한 추가 연산을 수행할 필요가 없다.
데이터 업데이터(210)는 어드레스가 지시하는 영역에 저장되는 데이터를 제1 데이터로 업데이트하기 위해서 제1 메모리 장치(230)를 이용할 수 있다.
일 예로, 데이터 업데이터(210)는 업데이트되는 데이터 비트들의 정보 및 업데이트되는 데이터 비트들에 대한 타겟 데이터를 기초로 데이터에 대한 인버트 지시 정보를 결정한 후에, 결정된 인버트 지시 정보를 제1 메모리 장치(230)로 전달한다. 즉, 데이터 업데이터(210)는 제1 메모리 장치(230)를 통해 어드레스가 지시하는 영역에 저장되는 데이터를 제1 데이터로 업데이트할 수 있다.
인버트 지시 정보란, 어드레스가 지시하는 영역에 기 저장된 원본 데이터에서 어떤 비트의 값을 인버트하여 출력할지 여부를 지시하는 정보이다. 여기서 비트의 값을 인버트(invert)한다는 의미는, 비트의 값이 "0"이면 "1"로 변경하고, 비트의 값이 "1"이면 "0"으로 변경한다는 의미이다.
데이터 업데이터(210)는 인버트 지시 정보를 통해, 제1 메모리 장치(230)가 어드레스가 지시하는 영역에 기 저장된 원본 데이터의 각 비트에 대해서 각 비트의 값을 인버트하여 출력할지 또는 그대로 출력할지 여부를 지시할 수 있다.
단, 데이터를 인버트하여 출력하는 것과 데이터의 값을 인버트 지시 정보를 이용하여 업데이트하는 것은 별도의 동작이다. 즉, 인버트 지시 정보를 기초로 출력된 데이터와 어드레스가 지시하는 영역에 실제 저장되는 데이터가 상이할 수 있다.
한편, 데이터 업데이터(210)가 제1 메모리 장치(230)에 인버트 지시 정보를 전달할 때, 어드레스가 지시하는 영역을 제1 메모리 장치(230)에 알려주기 위해서 데이터에 대한 어드레스가 전달된다.
패리티 업데이터(220)는 전술한 원본 데이터, 업데이트되는 데이터 비트들의 정보 및 타겟 데이터를 기초로 하여 계산된 제2 데이터를 이용하여, 어드레스가 지시하는 영역에 저장되는 데이터에 대한 패리티를 타겟 패리티로 업데이트 할 수 있다. 데이터에 대한 패리티를 계산하는 구체적인 방법의 일 예는 이하 후술할 도 4내지 도 5에서 설명한다.
패리티 업데이터(220)는 어드레스가 지시하는 영역에 저장되는 데이터에 대한 패리티를 타겟 패리티로 업데이트하기 위해서 제2 메모리 장치(240)를 이용할 수 있다.
일 예로 패리티 업데이터(220)는 제1 메모리 장치(230)로부터 출력된 제2 데이터를 기초로 타겟 패리티를 계산하여, 계산된 타겟 패리티를 제2 메모리 장치(240)로 전달할 수 있다. 그리고 제2 메모리 장치(240)는 어드레스가 지시하는 영역에 저장되는 데이터에 대한 패리티를 타겟 패리티로 업데이트할 수 있다.
이때, 타겟 패리티는 전술한 제2 데이터를 이용하여 계산되지만, 전술한 제1 데이터를 기초로 계산된 패리티 값과 동일하다. 제1 메모리 장치(230)로부터 출력된 제2 데이터를 기초로 제1 데이터에 대한 패리티를 계산하기 위한 원리 및 방법은 이하 후술할 도 4 내지 도 11의 도면을 통해 설명한다.
제1 메모리 장치(230)는 어드레스가 지시하는 영역에 저장되는 데이터를 저장할 수 있다. 제1 메모리 장치(230)는 어드레스 및 읽기/쓰기 요청 정보를 수신하면 어드레스에 대응되는 데이터에 대한 읽기/쓰기 동작을 수행할 수 있다.
구체적으로, 제1 메모리 장치(230)는 전술한 인버트 지시 정보를 입력 받아, 어드레스가 지시하는 영역에 저장되는 데이터를 제1 데이터로 업데이트하면서, 또한 어드레스가 지시하는 영역에 저장되는 데이터에 대한 패리티를 전술한 타겟 패리티로 업데이트하기 위해 사용되는 제2 데이터를 계산할 수 있다. 이때, 제1 메모리 장치(230)는 인버트 지시 정보를 입력 받기 위한 입력 단자를 포함할 수 있다.
이때, 제2 데이터는 전술한 원본 데이터, 업데이트되는 데이터 비트들의 정보 및 업데이트되는 데이터 비트들에 대한 타겟 데이터를 기초로 계산되며, 제1 데이터와 상이한 값이 될 수 있다.
제2 메모리 장치(240)는 어드레스가 지시하는 영역에 저장되는 데이터에 대한 패리티를 저장할 수 있다. 제1 메모리 장치(230)와 마찬가지로, 제2 메모리 장치(240) 역시 어드레스 및 읽기/쓰기 요청을 수신하면 어드레스에 대응되는 패리티에 대한 읽기/쓰기 동작을 수행할 수 있다. 이때, 제2 메모리 장치(240) 역시 제1 메모리 장치(230)와 동일하게 인버트 지시 정보를 입력 받기 위한 입력 단자를 포함할 수 있다.
제2 메모리 장치(240)는 제1 메모리 장치(230)에서 출력된 제2 데이터를 기초로 계산된 타겟 패리티를 전달받아, 어드레스가 지시하는 영역에 저장되는 데이터에 대한 패리티를 전술한 타겟 패리티로 업데이트할 수 있다.
이때, 제1 메모리 장치(230)와 제2 메모리 장치(240)는 물리적으로 분리된 장치일 수도 있지만, 하나의 물리적인 메모리 칩 내에 포함될 수 있다.
예를 들어 하나의 메모리 칩 상에서 특정 영역을 제1 메모리 장치(230)로 구성하고 다른 영역을 제2 메모리 장치(240)로 구성하는 것도 가능하다. 단, 본 발명의 실시예에서는 데이터와 데이터에 대한 패리티가 명확히 분리되어 저장되는 것을 전제로 하므로, 제1 메모리 장치(230)와 제2 메모리 장치(240)가 구성되는 영역은 상이하다.
그리고 제1 메모리 장치(230)와 제2 메모리 장치(240)는 도 2에서 도시한 바와 같이 컨트롤러(200)의 내부에 존재할 수 있지만, 컨트롤러(200)의 외부에 존재할 수도 있다. 만약 제1 메모리 장치(230)와 제2 메모리 장치(240)가 컨트롤러(200)의 외부에 존재하는 경우, 컨트롤러(200)의 메모리 인터페이스를 통해 제1 메모리 장치(230)와 제2 메모리 장치(240)와의 데이터 입출력을 수행할 수 있다.
이하, 도 7 내지 도 9에서는 제1 메모리 장치(230) 또는 제2 메모리 장치(240)를 구현하기 위해 사용할 수 있는 메모리 칩의 핀 구성 및 내부 구성에 대해서 설명한다.
전술한 바와 같이 데이터의 일부만 업데이트되는 경우에도, 데이터 및 해당 데이터에 대한 패리티를 계산하기 위해서, 원본 데이터 및 원본 패리티 전체를 읽은 후에 수정하고 다시 메모리에 저장하는 동작을 수행해야 한다.
그러나 본 발명의 실시예에서 설명하는 컨트롤러(200)는, 데이터를 업데이트하고 업데이트된 데이터에 대한 패리티를 계산하기 위해서, 원본 데이터 및 원본 패리티 전체를 다시 읽는 동작을 수행하지 않고도 바로 업데이트할 수 있도록 동작한다.
본 발명의 실시예에서 설명하는 컨트롤러(200)의 동작을 위해 데이터 및 패리티를 계산하는 원리는 이하 도 4 내지 도 6에서 후술한다.
이하, 도 4 내지 도 6에서는 SECDED 해밍 코드(Hamming Code) (13, 8)을 통해 데이터에 대한 패리티를 계산하는 경우를 예시를 들어 설명한다. 하지만, 본 발명의 실시예에서 설명하는 계산 방식은 이에 한정되지 않는다.
본 발명의 실시예에서 설명하는 계산 방식은 임의의 N(N은 1 이상의 자연수)비트의 데이터에 대해 M(M은 1 이상의 자연수)비트의 패리티를 계산하는 경우에도 적용될 수 있다. 예를 들어, 512비트의 데이터에 대해 16비트의 패리티를 계산하는 경우도 본 발명의 실시예에서 설명하는 계산 방식이 적용될 수 있다.
단, 본 발명의 실시예에 적용되는 계산 방식은 해밍 코드와 같이 선형적인 계산 방식인 것을 전제로 한다. 또한, 본 발명의 실시예에서는 데이터와 데이터에 대한 패리티가 명확히 구분이 가능하다는 것을 전제로 한다.
도 4는 데이터를 기초로 패리티를 계산하는 방법의 일 예를 도시한 도면이다.
도 4를 참조하면 8비트의 데이터에 대해서, 4비트의 ECC 패리티 및 1비트의 EDC 패리티를 계산할 수 있다. 이 경우 8비트의 데이터에 대해 총 5비트의 패리티가 도출되므로, 8비트의 데이터를 저장하기 위해 실제 필요한 공간은 8+5 = 13비트가 된다.
8비트의 데이터의 각 비트의 값을 M0, M1, M2, M3, M4, M5, M6, M7이라고 하면, 5비트 패리티를 구성하는 각 비트 P0, P1, P2, P3, P4는 다음과 같이 계산될 수 있다.
- P0 = M0 XOR M1 XOR M3 XOR M4 XOR M6
- P1 = M0 XOR M2 XOR M3 XOR M5 XOR M6
- P2 = M1 XOR M2 XOR M3 XOR M7
- P3 = M4 XOR M5 XOR M6 XOR M7
- P4 = M0 XOR M1 XOR M2 XOR M3 XOR M4 XOR M5 XOR M6 XOR M7 XOR P0 XOR P1 XOR P2 XOR P3
여기서, P0, P1, P2, P3는 ECC 패리티이고 P4는 EDC 패리티이다. P4는 M0 ~ M7, P0 ~ P3 전체 비트들에 대한 XOR 연산 값으로 구성되며, 이븐(EVEN)/오드(ODD) 패리티로 정의된다.
한편, 전술한 방식은 데이터 중 일부분만 업데이트되는 경우에도 데이터 전체에 대한 읽기/쓰기를 수행해야 하기 때문에, 읽기/쓰기 과정에서의 오버헤드가 크다는 단점이 있다.
예를 들어 먼저 M0 ~ M7의 8비트 원본 데이터를 읽은 후에 M4, M5, M6, M7을 각각 M4', M5', M6', M7'로 업데이트한 후 패리티 생성 동작을 수행하는 경우를 가정한다. 이때, 전술한 방식을 사용하면, 우선 8비트의 데이터를 읽은 후 그 중 4비트의 데이터를 업데이트하고, 다시 13비트(데이터 8비트, 패리티 5비트)의 쓰기를 수행하는 과정이 실행된다.
만약 원본 데이터의 크기가 8비트보다 더 커지게 되면, 동일한 작업을 위해 읽어야 하는 데이터의 양 및 쓰기를 수행해야 하는 데이터의 양도 역시 커지게 되며, 이 경우 데이터 및 패리티를 저장하는 메모리 장치의 대역폭(Bandwidth)과 읽기/쓰기 파워에도 영향을 미치는 문제가 있다.
이러한 문제점을 개선하기 위해, 도 5에서는 업데이트되는 데이터 비트에 대해서만 읽기를 수행하여 패리티를 계산하는 방법에 대해 설명한다.
도 5는 본 발명의 실시예에서, 원본 패리티 및 업데이트된 데이터 정보를 기초로 패리티를 계산하는 방법의 일 예를 도시한 도면이다.
도 5는 도 4에서 전술한 8비트의 데이터 중 M4, M5, M6, M7의 4비트의 데이터가 각각 M4', M5', M6', M7'로 업데이트되는 경우에 대해 설명한다.
도 4에서 설명한 방식에 비하여, 도 5에서 설명하는 방식은 이전의 패리티 값과 업데이트되는 비트들의 정보를 기초로 하여, 데이터를 읽고 쓰는 과정의 오버헤드를 업데이트되는 비트의 수 및 패리티의 비트 수로 제한할 수 있다는 장점이 있다.
즉, M0 ~ M7의 데이터를 모두 읽는 대신에 M4 ~ M7의 데이터만 읽고 M4, M5, M6, M7을 각각 M4', M5', M6', M7'로 업데이트한 후에, (M4 XOR M4'), (M5 XOR M5'), (M6 XOR M6'), (M7 XOR M7')을 계산한다.
그리고 계산된 (M4 XOR M4'), (M5 XOR M5'), (M6 XOR M6'), (M7 XOR M7')를 기초로 새로운 패리티 P0', P1', P2', P3', P4'를 계산한다. 그리고 M4', M5', M6' M7', P0', P1', P2', P3', P4'를 메모리 장치에 기록한다.
도 5에서 설명하는 방식을 사용할 경우, 업데이트되지 않는 나머지 4개의 데이터 비트들의 데이터에 대해서는 읽기/쓰기를 수행할 필요가 없기 때문에, 도 4에서 설명하는 방식에 비해서 읽기/쓰기 과정에서의 오버헤드가 줄어든다는 장점이 있다.
만약 매우 큰 데이터에 대해서 이와 같은 부분 쓰기가 수행될 경우에는 읽기/쓰기 과정에서의 오버헤드는 더 큰 폭으로 감소할 수 있다. 예를 들어 512비트의 데이터 중 8비트의 데이터에 대해서만 부분 쓰기가 수행되고 패리티는 13비트인 경우를 가정한다. 이 경우, 도 4에서 설명하는 방식을 사용하면 512 + 13 = 525비트에 대한 읽기/쓰기를 수행해야 하지만, 도 5에서 설명하는 방식을 사용하면 8 + 13 = 21비트에 대한 읽기/쓰기만 수행하면 된다.
단, 도 5에서 설명하는 방식을 사용하는 경우에도, 업데이트되는 비트에 대한 원본 데이터를 읽어야만 업데이트되는 데이터 비트의 값과 XOR 연산을 수행할 수 있다. 또한, 도 5에서 설명하는 방식 역시 XOR 연산이 수행된 결과값을 이용하여 변경되는 패리티를 계산하는 동작을 수행한다.
즉, 도 5에서 설명하는 방식 역시 이전 데이터와 업데이트되는 데이터 사이의 XOR 연산 수행 결과를 도출해야 하며, 업데이트되는 데이터 비트에 대한 이전 데이터가 필요하다.
만약 업데이트되는 데이터 비트에 대한 이전 데이터를 읽지 않은 상태에서, 이전 데이터와 업데이트되는 데이터와의 XOR 연산 수행 결과를 도출할 수 있다면 전체 읽기/쓰기에 수행되는 시간을 감소시킬 수 있다.
이하, 도 6에서 XOR 연산의 특성을 기초로 이전 데이터를 읽지 않고 이전 데이터와 업데이트될 데이터와의 XOR 연산 수행 결과를 도출하는 원리를 설명한다.
도 6은 본 발명의 실시예에서, XOR 연산의 특성을 이용하여 원본 데이터에 대한 XOR 연산 값을 도출하는 원리를 설명한 도면이다.
도 6을 참조하면, A와 B에 대해서 A XOR B는 다음과 같이 계산된다.
1) A = 0, B = 0이면 A XOR B = 0
2) A = 0, B = 1이면 A XOR B = 1
3) A = 1, B = 0이면 A XOR B = 1
4) A = 1, B = 1이면 A XOR B = 0
1), 3)의 경우를 살펴보면, B = 0일 경우에는 A XOR B의 값은 A의 값이 그대로 유지되는 것을 확인할 수 있다.
그리고 2), 4)의 경우를 살펴보면, B = 1일 경우에는 A의 값이 0 이면 A XOR B의 값은 1이고, A의 값이 1이면 A XOR B의 값은 0이다. 즉, B = 1일 때는 A XOR B의 값은 A의 값이 인버트된 것을 확인할 수 있다.
따라서, A의 값이 0인지 1인지 별도의 읽기 작업을 통해 확인을 하지 않더라도, B의 값에 따라 A의 값을 유지할지 또는 인버트할 지를 선택하여 A XOR B의 값을 도출할 수 있다. 즉, A XOR B를 계산하기 위해 메모리에 저장된 A의 값을 반드시 읽지 않아도 된다.
이하, 도 7 내지 도 11에서는 도 6에서 설명한 원리를 이용하여, 데이터 또는 패리티를 업데이트하면서 패리티의 계산에 사용되는 값들을 도출하기 위한 메모리 장치의 구조에 대해 설명한다.
도 7은 본 발명의 실시예에서, 데이터를 저장하는 제1 메모리 칩의 핀 구성을 도시한 도면이다.
도 7을 참조하면, 제1 메모리 칩(700)은 통상의 메모리 칩과 마찬가지로 En#, WE#, 어드레스 라인, 데이터 입출력 라인을 사용한다.
En# 라인은 제1 메모리 칩(700)이 동작 가능하다는 신호를 나타내며, En# 라인의 신호가 로우(low)로 떨어지면 칩의 동작이 가능하다는 것을 의미한다.
WE# 라인은 제1 메모리 칩(700)이 읽기 동작을 수행할 지 또는 쓰기 동작을 수행할 지 지시하는 신호를 나타내며, WE# 라인이 로우(low)인 경우 쓰기 동작을 지시하고, 하이(high)인 경우 읽기 동작을 지시한다.
어드레스 라인(A[m-1:0])은 입력 또는 출력될 데이터에 대한 어드레스 정보를 입력 받기 위해 사용된다.
데이터 입출력 라인(D[n-1:0])은 읽기 동작 시 데이터를 출력하거나, 쓰기 동작 시 데이터를 입력 받기 위해 사용된다.
한편, 제1 메모리 칩(700)은 어드레스에 대응되는 데이터의 각 비트에 대한 인버트 지시 정보를 입력 받는 핀이 추가된다는 점에서 통상의 메모리 칩과 차이가 있다. 즉, 제1 메모리 칩(700)은 인버트 지시 정보를 입력 받는 입력 단자로서 동작하는 핀을 포함한다.
즉, 제1 메모리 칩(700)은 En# 라인에 로우(low), WE# 라인에 하이(high)가 인가되어 m비트의 어드레스에 대한 n비트의 데이터에 대한 읽기 동작을 수행하는 경우(m, n은 1 이상의 임의의 자연수), INV[n-1:0] 핀을 통해서 m비트의 어드레스에 대한 n비트의 데이터의 각 비트에 대한 인버트 지시 정보를 입력 받을 수 있다.
예를 들어, 인덱스 i로 지시되는 비트에 대한 제1 메모리 칩(700)의 출력 값 D[i]은 해당 비트에 대응되는 인버트 지시 정보 INV[i]에 따라 다음과 같이 결정될 수 있다.
1) 만약 INV[i] = "0"이면 데이터를 저장하는 제1 메모리 칩(700)에 저장되어 있는 원본 데이터 값이 그대로 D[i]으로 출력된다.
2) INV[i] = "1"이면 데이터를 저장하는 제1 메모리 칩(700)에 저장되어 있는 원본 데이터 값을 인버트한 결과가 D[i]으로 출력된다.
도 6을 참고하면, 인덱스 i로 지시되는 비트에 대한 원본 데이터를 A라고 하고 인버트 지시 정보를 B라고 하면 D[i]으로 출력되는 값은 A XOR B가 되는 것을 확인할 수 있다. 즉, 원본 데이터 A를 읽지 않은 상태에서 A XOR B의 값이 D[i]으로 출력될 수 있다.
추가로, 제1 메모리 칩(700)은, 업데이트되는 데이터 비트에 대하여 업데이트될 값을 인버트 지시 정보를 입력 받는 핀을 통해 입력 받고, 업데이트되는 데이터 비트의 값을 인버트 지시 정보를 입력 받는 핀을 통해 입력 받은 값으로 업데이트하는 동작을 수행할 수 있다.
즉, 통상의 메모리는 쓰기 요청 시에 데이터 I/O 핀을 통해서 업데이트될 데이터를 입력 받지만, 제1 메모리 칩(700)은 읽기 요청 시에 인버트 지시 정보를 입력 받는 핀을 통해 수신한 인버트 지시 정보를 이용하여 데이터를 업데이트하는 것이 가능하다.
이 경우 원본 데이터가 A이고, 인버트 지시 정보를 통해 입력되는 갱신 데이터가 B라고 하면, 제1 메모리 칩(700)은 A에서 B로 업데이트를 수행하면서 동시에 A XOR B의 값을 출력할 수 있다. 즉, 별도의 추가 동작 없이 데이터를 업데이트하면서 동시에 원본 데이터와 갱신 데이터 간에 XOR 연산을 수행한 결과값을 출력할 수 있다.
도 8은 본 발명의 실시예에서, 패리티를 저장하는 제2 메모리 칩의 핀 구성을 도시한 도면이다.
도 8을 참조하면, 제2 메모리 칩(800) 역시, 도 7에서 설명한 제1 메모리 칩(700)과 동일한 핀 구성을 가진다. 단 데이터의 비트 수 n과 데이터에 대한 패리티의 비트 수 k가 상이할 수 있다는 점에서 차이가 있다.
도 7에서 설명한 제1 메모리 칩(700) 및 도 8에서 설명한 패리티를 저장하는 제2 메모리 칩(800)은 동일한 핀 구성을 가지므로, 내부 구성 역시 동일하게 구현될 수 있으며 하나의 물리적인 메모리 칩 상에서 구현되는 것도 가능하다.
도 9는 도 7 내지 도 8에서 설명한 메모리 칩의 내부 구성도이다.
도 9를 참조하면, 본 발명의 실시예에서 설명하는 메모리 칩은, 메모리 셀 어레이와 연결된 인버팅 셀 어레이(900)가 추가된다는 점에서 통상의 메모리와 차이점이 있다.
인버팅 셀 어레이(900)는 내부에 복수의 인버팅 셀(901 ~ 90N)을 포함할 수 있다. N 비트의 데이터에 대해서, 데이터의 각 비트마다 대응되는 하나의 인버팅 셀이 존재한다. 인버팅 셀 역시 통상의 메모리 셀과 유사하게, 값을 저장하기 위해 두 개의 인버터가 연결되어 셀을 구성하는 구조이다.
인버팅 셀과 해당 인버팅 셀과 연결된 메모리 셀은 BIT / BITbar 라인이 서로 반대로 연결되어 있다. 따라서 인버팅 셀에는 해당 인버팅 셀과 연결된 메모리 셀에 저장된 값의 인버트된 값이 저장된다. 즉, 메모리 셀에 저장된 값이 "1"이면 해당 메모리 셀과 연결된 인버팅 셀에는 "0"이 저장되고, 메모리 셀에 저장된 값이 "0"이면 해당 메모리 셀과 연결된 인버팅 셀에는 "1"이 저장된다.
예를 들어, 본 발명의 실시예에서 설명하는 메모리 장치에 읽기 요청이 입력되어, 하나의 워드 라인 WL_0(910)이 인가된 경우를 가정한다. 이때, 인가된 워드 라인 WL_O(910)에 연결된 N 개의 메모리 셀들(911 ~ 91N)에 대하여, 각 메모리 셀의 값에 대해 인버트된 값이 인버팅 셀 어레이(900) 상의 각 인버팅 셀에 저장된다.
예를 들어 인버팅 셀 901에는, 메모리 셀 911에 저장된 값에 대해 인버트된 값이 저장된다. 그리고 인버팅 셀 902에는, 메모리 셀 912에 저장된 값에 대해 인버트된 값이 저장된다. 그리고 인버팅 셀 90N에는, 메모리 셀 91N에 저장된 값에 대해 인버트된 값이 저장된다.
본 발명의 실시예에서 설명하는 메모리 장치는, 임의의 비트에 대한 데이터 출력 값을 결정하기 위해 해당 비트에 대한 인버트 지시 정보를 이용할 수 있다. 즉, 본 발명의 실시예에서 설명하는 메모리 칩은 해당 비트에 대한 인버트 지시 정보에 따라서 i) 해당 비트에 대응되는 인버팅 셀에 저장된 값 또는 ii) 해당 비트에 대응되는 메모리 셀에 저장된 값을 출력할 수 있다.
본 발명의 실시예에서 설명하는 메모리 칩은, 임의의 시간 이후에 전술한 인버트 지시 정보를 기초로 하여, 현재 인가된 워드 라인에 연결된 메모리 셀들의 데이터를 업데이트할 수 있다.
도 10은 도 9의 메모리 칩의 동작을 설명하는 순서도이다.
도 10은 인덱스 i로 지시되는 비트에 대하여 읽기 요청이 입력된 경우, 메모리 칩의 동작 순서를 설명한다.
도 10을 참조하면, 메모리 칩은 현재 인가된 워드 라인에 연결된 복수의 메모리 셀들 중에서 인덱스 i로 지시되는 비트에 대응되는 메모리 셀의 값을 읽는다(S1010).
그리고 메모리 칩은 S1010 단계에서 읽은 메모리 셀의 값을 인버트한 값을 해당 메모리 셀과 연결된 인버팅 셀에 저장한다(S1020). 도 9에서 전술한 바와 같이 메모리 셀과 인버팅 셀 사이의 BIT/BITbar 라인이 서로 반대로 연결되어 있기 때문에, 인버팅 셀에 저장되는 값은 메모리 셀에 저장되는 값이 인버트된 값이 된다.
그리고, 메모리 칩은 인덱스 i로 지시되는 비트에 대한 인버트 지시 정보를 판단하고(S1030), 판단 결과에 따라 출력될 값을 결정한다.
만약 해당 인버트 지시 정보가 "1"이면(S1030-Y), 메모리 칩은 인덱스 i로 지시되는 비트에 대응되는 인버팅 셀에 로드된 값을 출력한다(S1040). 반면, 해당 인버트 지시 정보가 "0"이라면(S1030-N), 메모리 칩은 S1010 단계에서 읽은 메모리 셀의 값을 그대로 출력한다(S1050).
한편, 전술한 S1030 단계에서는 해당 인버트 지시 정보가 "1"일 때 인덱스 i로 지시되는 비트에 대응되는 인버팅 셀에 로드된 값을 출력하는 경우에 대해 설명하였으나, 반대로 해당 인버트 지시 정보가 "0"일 때 인덱스 i로 지시되는 비트에 대응되는 인버팅 셀에 로드된 값을 출력하고, 해당 인버트 지시 정보가 "1"일 때는 독출한 메모리 셀의 값을 그대로 출력하도록 판단할 수도 있다.
이후, 메모리 칩은 해당 인버트 지시 정보를 기초로 하여 메모리 셀의 값을 업데이트할 수 있다(S1060). 일 예로 메모리 셀의 값은 해당 인버트 지시 정보의 값으로 업데이트될 수 있다.
이하, 도 7 내지 도 10에서 전술한 메모리 장치에서 데이터의 n번째 비트가 업데이트되는 경우, 해당 n번째 비트에 대한 갱신 값 및 출력 값을 비교한다.
도 11은 도 9의 메모리 칩에서 데이터의 n번째 비트에 대한 갱신 값 및 출력 값을 비교한 도면이다. 여기서 n은 임의의 자연수이다.
도 11을 참고하면, OLD[n]은 메모리 셀에 저장된 원래 값, INV[n]은 인버트 지시 정보의 값, INV_CELL[n]은 인버팅 셀에 저장되는 값, NEW[n]은 갱신될 값, D[n]은 출력되는 값을 의미한다.
본 발명의 실시예에서는, INV_CELL[n]은 OLD[n]의 값이 인버트된 값으로 결정된다. 그리고 NEW[n]의 값은 INV[n]으로 지시된 인버트 지시 정보의 값과 동일하게 결정된다. 그리고 출력되는 D[n]은 OLD[n] XOR NEW[n]의 값과 동일하게 결정된다.
즉, 부분 쓰기가 수행되는 n번째 비트에 대해서 메모리 셀에 업데이트될 NEW[n]의 값은 INV[n]의 값이 되고, 출력되는 D[n]의 값은 OLD[n] XOR NEW[n]의 값과 동일하다.
따라서, 원본 데이터를 신규 데이터로 갱신하면서 동시에 원본 데이터와 신규 데이터에 대해 XOR 연산을 수행한 값을 출력할 수 있다.
도 12는 도 7 및 도 8에서 설명한 메모리 칩으로 구현된 메모리 장치를 이용하는 컨트롤러의 구조를 설명하기 위한 구성도이다.
도 12를 참조하면, 도 3에서 설명한 제1 메모리 장치(230)는 도 7에서 설명한 제1 메모리 칩(700)을 통해 구현될 수 있으며, 도 3에서 설명한 제2 메모리 장치(240)는 도 8에서 설명한 제2 메모리 칩(800)을 통해 구현될 수 있다.
데이터 업데이터(210)는 어드레스, 업데이트되는 데이터 비트들의 정보 및 업데이트되는 데이터 비트들에 대한 타겟 데이터를 기초로 하여, 제1 메모리 칩(700)으로 인버트 지시 정보를 전달할 수 있다.
이때, 인버트 지시 정보는 제1 메모리 칩(700)에서 인버트 지시 정보를 입력 받기 위한 핀인 INV[n-1:0]으로 전달된다.
그리고 데이터에 대한 어드레스의 값은 제1 메모리 칩(700)에서 어드레스를 입력 받기 위한 핀인 A[m-1:0]으로 전달될 수 있다.
제1 메모리 칩(700)은 원본 데이터, 업데이트되는 데이터 비트들의 정보 및 타겟 데이터를 기초로 하여 계산된 제2 데이터를 D[n-1:0] 핀으로 출력할 수 있다. 제2 데이터로 출력되는 값이 계산되는 원리는 전술한 도 10에서 설명한 원리가 동일하게 적용될 수 있다.
이때, 제2 데이터는, 원래 제1 메모리 칩(700)에 저장되어 있던 데이터인, 어드레스가 지시하는 영역에 저장된 데이터 중에서 일부 비트의 값이 인버트된 값일 수 있다. 구체적으로, 어드레스가 지시하는 영역에 저장된 데이터 중에서 업데이트되는 데이터 비트들에 해당하고 동시에 해당 비트에 대응되는 타겟 데이터 값이 1인 조건을 만족하는 비트들의 값이 인버트된다.
패리티 업데이터(220)는 제1 메모리 칩(700)으로부터 제2 데이터를 전달받아서 타겟 패리티를 계산할 수 있다. 이때, 타겟 패리티를 계산하는 방법은 도 4에서 설명한 방법이 사용될 수 있다.
그리고 패리티 업데이터(220)는 계산된 타겟 패리티를 제2 메모리 칩(800)으로 전달할 수 있다. 계산된 타겟 패리티는 제2 메모리 칩(800)에서 인버트 지시 정보를 입력받기 위한 핀인 INV[n-1:0]을 통해 전달된다.
패리티에 대한 제2 메모리 장치(800)는 INV[n-1:0] 핀으로 전달받은 인버트 지시 정보 및 A[m-1:0] 핀으로 전달되는 패리티에 대한 어드레스 정보를 이용하여, 어드레스가 지시하는 영역에 저장되는 데이터에 대한 패리티를 타겟 패리티로 업데이트할 수 있다.
도 13은 본 발명의 실시예에서, 저장 장치의 동작 방법을 설명하기 위한 순서도이다.
이하, 도 2에서 설명한 저장 장치(100)에 의해서 본 방법이 실시되는 것을 예시로 설명한다.
도 13을 참조하면, 먼저 저장 장치(100)의 컨트롤러(200)는 어드레스, 업데이트되는 데이터 비트들의 정보 및 업데이트되는 데이터 비트들에 대한 타겟 데이터를 기초로 하여, 어드레스가 지시하는 영역에 저장되는 데이터를 어드레스가 지시하는 영역에 기 저장된 원본 데이터에서 제1 데이터로 업데이트할 수 있다(S1310).
그리고 저장 장치(100)의 컨트롤러(200)는 전술한 원본 데이터, 업데이트되는 데이터 비트들의 정보 및 타겟 데이터를 기초로 하여 제2 데이터를 계산할 수 있다(S1320).
일 예로, 도 2에서 설명한 바와 같이 저장 장치(100)의 컨트롤러(200)에 포함된 데이터 업데이터(210)는, 업데이트되는 비트들의 정보 및 업데이트될 비트들에 대한 타겟 데이터를 기초로 결정된 인버트 지시 정보를 제1 메모리 장치(230)로 전달할 수 있다. 그리고 제1 메모리 장치(230)는 어드레스가 지시하는 영역에 저장되는 데이터를 제1 데이터로 업데이트하고, 제2 데이터를 계산하여 출력할 수 있다.
그리고 저장 장치(100)의 컨트롤러(200)는 S1320 단계에서 계산된 제2 데이터를 이용하여 타겟 패리티를 계산하고, 어드레스가 지시하는 영역에 저장되는 데이터에 대한 패리티를 계산된 타겟 패리티로 업데이트할 수 있다(S1330).
이때, 전술한 바와 같이 타겟 패리티는 제2 데이터를 이용하여 계산하지만, 타겟 패리티는 제2 데이터가 아닌 제1 데이터에 대한 패리티가 된다.
구체적으로 저장 장치(100)의 컨트롤러(200)에 포함된 패리티 업데이터(220)는 타겟 패리티를 계산하여, 계산된 타겟 패리티를 제2 메모리 장치(240)로 전달한다. 그리고 제2 메모리 장치(240)는 어드레스가 지시하는 영역에 저장되는 데이터에 대한 패리티를 타겟 패리티로 업데이트할 수 있다.
본 발명의 실시예에 따른 저장 장치는, 부분 쓰기 과정에서 데이터 및 패리티를 업데이트하기 위해 소요되는 사이클 오버헤드를 감소시켜, 결과적으로 데이터 쓰기의 대역폭을 증가시키는 효과가 있다.
메모리에 저장된 데이터를 보호하기 위하여 통상적인 EDC/ECC 프로텍션 방법이 사용되는 경우에는, 프로텍션 단위의 데이터에 대한 부분 쓰기 시에는 업데이트되는 데이터에 대한 EDC/ECC 패리티를 구하기 위해서 데이터 및 패리티를 각각 RMW(Read-Modify-Write)해야 한다. 따라서, 데이터 및 패리티 업데이트 과정에서 2개의 사이클(cycle)이 수행되어야 한다.
하지만 본 발명의 실시예에 따른 저장 장치는, 패리티를 계산하기 위해 필요한 XOR 연산 값을 도출하기 위하여 특정한 비트의 값만을 선택적으로 인버트하여 출력하는 동작을 수행하고, 이러한 동작을 위해 최적화된 메모리 장치를 사용한다.
따라서, 본 발명의 실시예에 따른 저장 장치는 데이터를 업데이트하면서 바로 패리티 계산을 수행할 수 있으므로 1개의 사이클(cycle)에 데이터 및 패리티 업데이트를 완료할 수 있다.
결론적으로, 본 발명의 실시예에 따른 저장 장치는, CPU 등과 같이 메모리 접근을 바이트(Byte), 해프-워드(Half-Word), 풀-워드(Full-Word) 단위로 수행할 수 있는 모듈에 의해서 메모리에 저장된 데이터에 대한 부분 쓰기가 수행되는 경우에, 메모리에 저장된 데이터를 보호하기 위한 추가의 사이클 오버헤드가 발생하지 않는다는 장점이 있다.
도 14는 도 1의 반도체 메모리 장치의 구조를 설명하기 위한 도면이다.
도 14를 참조하면, 반도체 메모리 장치(3000)는 전압 발생기(3010), 어드레스 디코더(3020), 메모리 셀 어레이(3030), 제어 로직(3040), 데이터 읽기/쓰기 회로(3050) 및 데이터 입출력(3060) 회로를 포함할 수 있다.
우선, 메모리 셀 어레이(3030)는 복수의 메모리 블록들을 포함한다. 복수의 메모리 블록들에 대해서, 복수의 메모리 블록들은 행 라인들(RL)을 통해 어드레스 디코더(3020)에 연결된다. 복수의 메모리 블록들은 비트 라인들(BL[1:m])을 통해 데이터 읽기/쓰기 회로(3050)에 연결된다.
복수의 메모리 블록들 각각은 복수의 메모리 셀들을 포함한다. 복수의 메모리 셀들은 휘발성 메모리 셀들 또는 비휘발성 메모리 셀들일 수 있다. 복수의 메모리 셀들 중 동일 워드 라인에 연결된 메모리 셀들은 하나의 페이지로 정의된다. 즉, 메모리 셀 어레이(3030)는 다수의 페이지로 구성될 수 있다.
실시예에서, 메모리 셀 어레이(3030)에 포함된 복수의 메모리 블록들 각각은 복수의 더미 셀들을 포함할 수 있다. 더미 셀들은 드레인 선택 트랜지스터와 메모리 셀들 사이와 소스 선택 트랜지스터와 메모리 셀들 사이에서 적어도 하나 이상 직렬로 연결될 수 있다.
메모리 셀 어레이(3030)에 포함되는 메모리 셀들은 각각 하나의 데이터 비트를 저장하는 싱글 레벨 셀(Single Level Cell; SLC), 두 개의 데이터 비트들을 저장하는 멀티 레벨 셀(Multi Level Cell; MLC), 세 개의 데이터 비트들을 저장하는 트리플 레벨 셀(Triple Level Cell; TLC) 또는 네 개의 데이터 비트를 저장할 수 있는 쿼드 레벨 셀(Quad Level Cell; QLC)로 구성될 수 있다.
어드레스 디코더(3020)는 행 라인들(RL)을 통해 메모리 셀 어레이(3030)에 연결된다. 행 라인들(RL)은 드레인 선택 라인들, 워드 라인들, 소스 선택 라인들 및 공통 소스 라인을 포함할 수 있다. 실시예에서, 워드 라인들은 노멀 워드 라인들과 더미 워드 라인들을 포함할 수 있다. 실시예에서, 행 라인들(RL)은 파이프 선택 라인을 더 포함할 수 있다.
어드레스 디코더(3020)는 제어 로직(3040)의 제어에 응답하여 동작하도록 구성된다. 어드레스 디코더(3020)는 제어 로직(3040)으로부터 어드레스(ADDR)를 수신한다.
어드레스 디코더(3020)는 수신된 어드레스(ADDR) 중 블록 어드레스를 디코딩하도록 구성된다. 어드레스 디코더(121)는 디코딩된 블록 어드레스에 따라 메모리 블록들 중 적어도 하나의 메모리 블록을 선택한다. 어드레스 디코더(3020)는 수신된 어드레스(ADDR) 중 행 어드레스를 디코딩하도록 구성된다. 어드레스 디코더(3020)는 디코딩된 행 어드레스에 따라 전압 발생기(3010)로부터 제공된 전압들을 적어도 하나의 워드 라인(WL)에 인가하여, 선택된 메모리 블록 중 적어도 하나의 워드 라인을 선택할 수 있다.
프로그램 동작 시에, 어드레스 디코더(3020)는 선택된 워드 라인에 프로그램 전압을 인가하고 비 선택된 워드 라인들에 프로그램 전압보다 낮은 레벨의 패스 전압을 인가할 것이다. 프로그램 검증 동작 시에, 어드레스 디코더(3020)는 선택된 워드 라인에 검증 전압을 인가하고 비 선택된 워드 라인들에 검증 전압보다 높은 검증 패스 전압을 인가할 것이다.
읽기 동작 시에, 어드레스 디코더(3020)는 선택된 워드 라인에 읽기 전압을 인가하고, 비 선택된 워드 라인들에 읽기 전압보다 높은 패스 전압을 인가할 것이다.
실시예에서, 반도체 메모리 장치(3000)의 소거 동작은 메모리 블록 단위로 수행된다. 소거 동작 시에 반도체 메모리 장치(3000)에 입력되는 어드레스(ADDR)는 블록 어드레스를 포함한다. 어드레스 디코더(3020)는 블록 어드레스를 디코딩하고, 디코딩된 블록 어드레스에 따라 하나의 메모리 블록을 선택할 수 있다. 소거 동작 시, 어드레스 디코더(3020)는 선택된 메모리 블록에 입력되는 워드 라인들에 접지 전압을 인가할 수 있다.
실시예에서, 어드레스 디코더(3020)는 전달된 어드레스(ADDR) 중 열 어드레스를 디코딩하도록 구성될 수 있다. 디코딩된 열 어드레스(DCA)는 데이터 읽기/쓰기 회로(3050)에 전달될 수 있다. 예시적으로, 어드레스 디코더(3020)는 행 디코더, 열 디코더, 어드레스 버퍼 등과 같은 구성 요소들을 포함할 수 있다.
전압 발생기(3010)는 반도체 메모리 장치(3000)에 공급되는 외부 전원 전압을 이용하여 복수의 전압들을 발생하도록 구성된다. 전압 발생기(3010)는 제어 로직(3040)의 제어에 응답하여 동작한다.
실시예로서, 전압 발생기(3010)는 외부 전원 전압을 레귤레이팅(regulating)하여 내부 전원 전압을 생성할 수 있다. 전압 발생기(3010)에서 생성된 내부 전원 전압은 반도체 메모리 장치(3000)의 동작 전압으로서 사용된다.
실시예로서, 전압 발생기(3010)는 외부 전원 전압 또는 내부 전원 전압을 이용하여 복수의 전압들을 생성할 수 있다. 전압 발생기(3010)는 반도체 메모리 장치(3000)에서 요구되는 다양한 전압들을 생성하도록 구성될 수 있다. 예를 들어, 전압 발생기(3010)는 복수의 프로그램 전압들, 복수의 패스 전압들, 복수의 선택 읽기 전압들, 복수의 비 선택 읽기 전압들을 생성할 수 있다.
예를 들면, 전압 발생기(3010)는 내부 전원 전압을 수신하는 복수의 펌핑 커패시터들을 포함하고, 제어 로직(3040)의 제어에 응답하여 복수의 펌핑 커패시터들을 선택적으로 활성화하여 복수의 전압들을 생성할 것이다.
생성된 복수의 전압들은 어드레스 디코더(3020)에 의해 메모리 셀 어레이(3030)에 공급될 수 있다.
데이터 읽기/쓰기 회로(3050)는 제1 내지 제 m 페이지 버퍼들을 포함할 수 있다. 제1 내지 제 m 페이지 버퍼들은 각각 제1 내지 제 m 비트 라인들을 통해 메모리 셀 어레이(3030)에 연결된다. 제1 내지 제 m 페이지 버퍼들은 제어 로직(3040)의 제어에 응답하여 동작한다.
제1 내지 제 m 페이지 버퍼들은 데이터 입출력 회로(3060)와 데이터 통신을 수행한다. 프로그램 시에, 제1 내지 제 m 페이지 버퍼들은 데이터 입출력 회로(3060)를 통해 저장될 데이터(DATA)를 수신한다.
프로그램 동작 시, 제1 내지 제 m 페이지 버퍼들은 선택된 워드 라인에 프로그램 펄스가 인가될 때, 저장될 데이터(DATA)를 데이터 입출력 회로(3060)를 통해 수신한 데이터(DATA)를 비트 라인들을 통해 선택된 메모리 셀들에 전달할 것이다. 전달된 데이터(DATA)에 따라 선택된 페이지의 메모리 셀들은 프로그램된다. 프로그램 허용 전압(예를 들면, 접지 전압)이 인가되는 비트 라인과 연결된 메모리 셀은 증가한 문턱 전압을 가질 것이다. 프로그램 금지 전압(예를 들면, 전원 전압)이 인가되는 비트 라인과 연결된 메모리 셀의 문턱 전압은 유지될 것이다. 프로그램 검증 동작 시에, 제1 내지 제 m 페이지 버퍼들은 선택된 메모리 셀들로부터 비트 라인들을 통해 페이지 데이터를 읽는다.
읽기 동작 시, 데이터 읽기/쓰기 회로(3050)는 선택된 페이지의 메모리 셀들로부터 비트 라인들을 통해 데이터(DATA)를 읽고, 읽어진 데이터(DATA)를 데이터 입출력 회로(3060)로 출력한다.
소거 동작 시에, 데이터 읽기/쓰기 회로(3050)는 비트 라인들(BL)을 플로팅(floating)할 수 있다. 실시예로서, 데이터 읽기/쓰기 회로(3050)는 열 선택 회로를 포함할 수 있다.
데이터 입출력 회로(3060)는 데이터 라인들을 통해 제1 내지 제 m 페이지 버퍼들에 연결된다. 데이터 입출력 회로(3060)는 제어 로직(3040)의 제어에 응답하여 동작한다.
데이터 입출력 회로(3060)는 입력되는 데이터를 수신하는 복수의 입출력 버퍼들(미도시)을 포함할 수 있다. 프로그램 동작 시, 데이터 입출력 회로(3060)는 외부 컨트롤러(미도시)로부터 저장될 데이터(DATA)를 수신한다. 데이터 입출력 회로(3060)는 읽기 동작 시, 데이터 읽기/쓰기 회로(3050)에 포함된 제1 내지 제 m 페이지 버퍼들로부터 전달된 데이터를 외부 컨트롤러로 출력한다.
제어 로직(3040)은 어드레스 디코더(3020), 전압 발생기(3010), 데이터 읽기 /쓰기 회로(3050), 데이터 입출력 회로(3060)에 연결될 수 있다. 제어 로직(3040)은 반도체 메모리 장치(3000)의 제반 동작을 제어하도록 구성될 수 있다. 제어 로직(3040)은 외부 장치로부터 전달되는 커맨드(CMD)에 응답하여 동작할 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능하다. 그러므로 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출될 수 있는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
상술한 실시예들에서, 모든 단계는 선택적으로 수행의 대상이 되거나 생략의 대상이 될 수 있다. 또한, 각 실시예에서 단계들은 반드시 순서대로 일어날 필요는 없으며 뒤바뀔 수 있다.
한편, 본 명세서와 도면에 개시된 본 명세서의 실시예들은 본 명세서의 기술 내용을 쉽게 설명하고 본 명세서의 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 명세서의 범위를 한정하고자 하는 것은 아니다. 즉 본 명세서의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 명세서가 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다.
한편, 본 명세서와 도면에서 비록 특정 용어들이 사용되었으나, 이는 단지 본 발명의 기술 내용을 쉽게 설명하고 발명의 이해를 돕기 위한 의미로 사용된 것이지, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시예 외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명하다.
100: 저장 장치
200: 컨트롤러
300: 반도체 메모리 장치
210: 데이터 업데이터
220: 패리티 업데이터
230: 제1 메모리 장치
240: 제2 메모리 장치

Claims (16)

  1. 반도체 메모리 장치; 및
    상기 반도체 메모리 장치를 제어하는 컨트롤러;를 포함하되,
    상기 컨트롤러는,
    어드레스, 업데이트되는 데이터 비트들의 정보 및 상기 업데이트되는 데이터 비트들에 대한 타겟 데이터를 기초로 하여, 상기 어드레스가 지시하는 영역에 저장되는 데이터를 상기 어드레스가 지시하는 영역에 기 저장된 원본 데이터에서 제1 데이터로 업데이트하는 데이터 업데이터; 및
    상기 원본 데이터, 상기 업데이트되는 데이터 비트들의 정보 및 상기 타겟 데이터를 기초로 하여 계산된 제2 데이터를 이용하여, 상기 어드레스가 지시하는 영역에 저장되는 데이터에 대한 패리티를 타겟 패리티로 업데이트하는 패리티 업데이터;를 포함하는 저장 장치.
  2. 제 1항에 있어서,
    상기 컨트롤러는,
    상기 업데이트되는 데이터 비트들의 정보 및 상기 타겟 데이터를 기초로 결정되는 인버트 지시 정보를 제1 메모리 장치로 전달하고,
    상기 제1 메모리 장치는,
    상기 인버트 지시 정보가 입력되는 입력 단자를 포함하고,
    상기 어드레스가 지시하는 영역에 저장되는 데이터를 저장하고,
    상기 인버트 지시 정보를 이용하여, 상기 어드레스가 지시하는 영역에 저장되는 데이터를 상기 원본 데이터에서 제1 데이터로 업데이트하고, 상기 제2 데이터를 계산하는 것을 특징으로 하는 저장 장치.
  3. 제 2항에 있어서,
    상기 제1 메모리 장치는,
    하나의 워드 라인에 연결된 복수의 메모리 셀들과 연결된 인버팅 셀 어레이를 포함하고,
    상기 인버팅 셀 어레이는,
    복수의 인버팅 셀들을 포함하고,
    상기 각 인버팅 셀은,
    상기 각 인버팅 셀과 연결된 메모리 셀에 저장된 값을 인버트한 값을 저장하는 것을 특징으로 하는 저장 장치.
  4. 제 3항에 있어서,
    상기 제2 데이터 중에서 상기 업데이트되는 데이터 비트에 대응되는 값은,
    상기 인버트 지시 정보 중 상기 업데이트되는 데이터 비트에 대응되는 값에 따라, i) 상기 업데이트되는 데이터 비트에 대응되는 인버팅 셀에 저장된 값 또는 ii) 상기 복수의 메모리 셀들 중 상기 업데이트되는 데이터 비트에 대응되는 메모리 셀에 저장된 값으로 결정되는 것을 특징으로 하는 저장 장치.
  5. 제 4항에 있어서,
    상기 인버트 지시 정보 중 상기 업데이트되는 데이터 비트에 대응되는 값은, 상기 업데이트되는 비트에 대한 타겟 데이터의 값인 것을 특징으로 하는 저장 장치.
  6. 제 5항에 있어서,
    상기 복수의 메모리 셀들 중 상기 업데이트되는 데이터 비트에 대응되는 메모리 셀의 값은,
    상기 업데이트되는 데이터 비트에 대한 타겟 데이터로 업데이트되는 것을 특징으로 하는 저장 장치.
  7. 제 1항에 있어서,
    상기 컨트롤러는,
    상기 타겟 패리티를 기초로 결정되는 인버트 지시 정보를 제2 메모리 장치로 전달하고,
    상기 제2 메모리 장치는,
    상기 인버트 지시 정보가 입력되는 입력 단자를 포함하고,
    상기 어드레스가 지시하는 영역에 저장되는 데이터에 대한 패리티를 저장하고,
    상기 어드레스가 지시하는 영역에 저장되는 데이터에 대한 패리티를 상기 타겟 패리티로 업데이트하는 것을 특징으로 하는 저장 장치.
  8. 제 7항에 있어서,
    상기 제2 메모리 장치는,
    하나의 워드 라인에 연결된 복수의 메모리 셀들과 연결된 인버팅 셀 어레이를 포함하고,
    상기 인버팅 셀 어레이는,
    복수의 인버팅 셀들을 포함하고,
    상기 각 인버팅 셀은,
    상기 각 인버팅 셀과 연결된 메모리 셀에 저장된 값을 인버트한 값을 저장하는 것을 특징으로 하는 저장 장치.
  9. 제 8항에 있어서,
    상기 제2 메모리 장치는,
    상기 인버트 지시 정보의 각 비트의 값에 따라, i) 상기 인버트 지시 정보의 각 비트에 대응되는 인버팅 셀에 저장된 값 또는 ii) 상기 복수의 메모리 셀들 중 상기 인버트 지시 정보의 각 비트에 대응되는 메모리 셀에 저장된 값을 출력하는 것을 특징으로 하는 저장 장치.
  10. 반도체 메모리 장치를 제어하는 컨트롤러에 있어서,
    어드레스, 업데이트되는 데이터 비트들의 정보 및 상기 업데이트되는 데이터 비트들에 대한 타겟 데이터를 기초로 하여, 상기 어드레스가 지시하는 영역에 저장되는 데이터를 상기 어드레스가 지시하는 영역에 기 저장된 원본 데이터에서 제1 데이터로 업데이트하는 데이터 업데이터; 및
    상기 원본 데이터, 상기 업데이트되는 데이터 비트들의 정보 및 상기 타겟 데이터를 기초로 하여 계산된 제2 데이터를 이용하여, 상기 어드레스가 지시하는 영역에 저장되는 데이터에 대한 패리티를, 상기 제2 데이터를 이용하여 계산되는 타겟 패리티로 업데이트하는 패리티 업데이터;를 포함하는 컨트롤러.
  11. 제 10항에 있어서,
    상기 데이터 업데이터는,
    상기 업데이트되는 데이터 비트들의 정보 및 상기 타겟 데이터를 기초로 결정되는 인버트 지시 정보를 제1 메모리 장치로 전달하고,
    상기 제1 메모리 장치는,
    상기 인버트 지시 정보가 입력되는 입력 단자를 포함하고,
    상기 어드레스가 지시하는 영역에 저장되는 데이터를 저장하고,
    상기 인버트 지시 정보를 이용하여, 상기 어드레스가 지시하는 영역에 저장되는 데이터를 상기 원본 데이터에서 제1 데이터로 업데이트하고, 상기 제2 데이터를 계산하는 것을 특징으로 하는 컨트롤러.
  12. 제 10항에 있어서,
    상기 패리티 업데이터는,
    상기 타겟 패리티를 기초로 결정되는 인버트 지시 정보를 제2 메모리 장치로 전달하고,
    상기 제2 메모리 장치는,
    상기 인버트 지시 정보가 입력되는 입력 단자를 포함하고,
    상기 어드레스가 지시하는 영역에 저장되는 데이터에 대한 패리티를 저장하고,
    상기 어드레스가 지시하는 영역에 저장되는 데이터에 대한 패리티를 상기 타겟 패리티로 업데이트하는 것을 특징으로 하는 컨트롤러.
  13. 인버트 지시 정보가 입력되는 입력 단자;
    하나의 워드 라인에 연결된 복수의 메모리 셀들; 및
    상기 복수의 메모리 셀들과 연결된 인버팅 셀 어레이;를 포함하고,
    상기 인버팅 셀 어레이는,
    복수의 인버팅 셀들을 포함하고,
    상기 각 인버팅 셀은,
    상기 각 인버팅 셀과 연결된 메모리 셀에 저장된 값을 인버트한 값을 저장하고,
    상기 인버트 지시 정보의 각 비트의 값을 기초로, i) 상기 인버트 지시 정보의 각 비트에 대응되는 인버팅 셀에 저장된 값 또는 ii) 상기 복수의 메모리 셀들 중 상기 인버트 지시 정보의 각 비트에 대응되는 메모리 셀에 저장된 값을 출력하는 것을 특징으로 하는 메모리 장치.
  14. 반도체 메모리 장치 및 상기 반도체 메모리 장치를 제어하는 컨트롤러를 포함하는 저장 장치의 동작 방법에 있어서,
    어드레스, 업데이트되는 데이터 비트들의 정보 및 상기 업데이트되는 데이터 비트들에 대한 타겟 데이터를 기초로 하여, 상기 어드레스가 지시하는 영역에 저장되는 데이터를 상기 어드레스가 지시하는 영역에 기 저장된 원본 데이터에서 제1 데이터로 업데이트하는 단계;
    상기 원본 데이터, 상기 업데이트되는 데이터 비트들의 정보 및 상기 타겟 데이터를 기초로 하여 제2 데이터를 계산하는 단계; 및
    상기 어드레스가 지시하는 영역에 저장되는 데이터에 대한 패리티를, 상기 제2 데이터를 이용하여 계산되는 타겟 패리티로 업데이트하는 단계;를 포함하는 것을 특징으로 하는 저장 장치의 동작 방법.
  15. 제 14항에 있어서,
    상기 어드레스가 지시하는 영역에 저장되는 데이터를 제1 데이터로 업데이트하는 단계는,
    상기 업데이트되는 데이터 비트들의 정보 및 상기 타겟 데이터를 기초로 결정되는 인버트 지시 정보를 제1 메모리 장치로 전달하고,
    상기 제1 메모리 장치는,
    상기 인버트 지시 정보가 입력되는 입력 단자를 포함하고,
    상기 어드레스가 지시하는 영역에 저장되는 데이터를 저장하고,
    상기 인버트 지시 정보를 이용하여, 상기 어드레스가 지시하는 영역에 저장되는 데이터를 상기 원본 데이터에서 제1 데이터로 업데이트하고, 상기 제2 데이터를 계산하는 것을 특징으로 하는 저장 장치의 동작 방법.
  16. 제 14항에 있어서,
    상기 어드레스가 지시하는 영역에 저장되는 데이터에 대한 패리티를 타겟 패리티로 업데이트하는 단계는,
    상기 타겟 패리티를 기초로 결정되는 인버트 지시 정보를 제2 메모리 장치로 전달하고,
    상기 제2 메모리 장치는,
    상기 인버트 지시 정보를 수신하는 입력 단자를 포함하고,
    상기 어드레스가 지시하는 영역에 저장되는 데이터에 대한 패리티를 저장하고,
    상기 어드레스가 지시하는 영역에 저장되는 데이터에 대한 패리티를 상기 타겟 패리티로 업데이트하는 것을 특징으로 하는 저장 장치의 동작 방법.
KR1020180158103A 2018-12-10 2018-12-10 저장 장치 및 그 동작 방법 KR20200070686A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020180158103A KR20200070686A (ko) 2018-12-10 2018-12-10 저장 장치 및 그 동작 방법
US16/510,557 US11704055B2 (en) 2018-12-10 2019-07-12 Storage device, controller and method for operating thereof
CN201910838149.XA CN111290703A (zh) 2018-12-10 2019-09-05 存储装置、控制器及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180158103A KR20200070686A (ko) 2018-12-10 2018-12-10 저장 장치 및 그 동작 방법

Publications (1)

Publication Number Publication Date
KR20200070686A true KR20200070686A (ko) 2020-06-18

Family

ID=70971839

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180158103A KR20200070686A (ko) 2018-12-10 2018-12-10 저장 장치 및 그 동작 방법

Country Status (3)

Country Link
US (1) US11704055B2 (ko)
KR (1) KR20200070686A (ko)
CN (1) CN111290703A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11561729B2 (en) * 2020-08-19 2023-01-24 Micron Technology, Inc. Write determination counter

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6848071B2 (en) * 2001-04-23 2005-01-25 Sun Microsystems, Inc. Method and apparatus for updating an error-correcting code during a partial line store
US7240237B2 (en) * 2004-05-25 2007-07-03 Lsi Corporation Method and system for high bandwidth fault tolerance in a storage subsystem
US8386676B2 (en) * 2007-06-05 2013-02-26 Intel Corporation Systems, methods, and apparatuses for transmitting data mask bits to a memory device
KR101472797B1 (ko) * 2007-07-16 2014-12-15 삼성전자주식회사 데이터를 읽거나 쓰기 위한 방법 및 장치
KR101623119B1 (ko) 2010-02-01 2016-05-20 삼성전자주식회사 솔리드 스테이트 드라이브의 에러 제어 방법
JP5279785B2 (ja) * 2010-09-17 2013-09-04 株式会社東芝 コントローラ、記憶装置、およびプログラム
US9029829B1 (en) * 2012-05-02 2015-05-12 Adesto Technologies Corporation Resistive switching memories
US10891057B1 (en) * 2015-12-31 2021-01-12 EMC IP Holding Company LLC Optimizing flash device write operations
KR102479212B1 (ko) * 2016-08-17 2022-12-20 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 이의 동작 방법

Also Published As

Publication number Publication date
US20200183613A1 (en) 2020-06-11
CN111290703A (zh) 2020-06-16
US11704055B2 (en) 2023-07-18

Similar Documents

Publication Publication Date Title
CN110399311B (zh) 存储器系统及该存储器系统的操作方法
US10007573B2 (en) Preferred state encoding in non-volatile memories
US8417879B2 (en) Method for suppressing errors, and associated memory device and controller thereof
KR20210077586A (ko) Nand 메모리 내에서의 판독 방해를 방지하기 위한 기술들
US20100125701A1 (en) Multi-Level Non-Volatile Memory Device, Memory System Including the Same, and Method of Operating the Same
KR20130049332A (ko) 메모리 시스템 및 그것의 동작 방법
CN109697171B (zh) 控制器及其操作方法
CN108427536B (zh) 存储器系统及其操作方法
CN109656470B (zh) 存储器系统及其操作方法
US11675543B2 (en) Apparatus and method for processing data in memory system
US11467758B2 (en) Data writing method using different programming modes based on the number of available physical erasing units, memory control circuit unit and memory storage device
TW201919069A (zh) 記憶體系統及其操作方法
CN112542201A (zh) 存储设备及操作该存储设备的方法
US11625298B2 (en) Memory block defect detection and management
US11237976B2 (en) Memory system, memory controller and meta-information storage device
CN110197695B (zh) 存储器系统及其操作方法
US10997067B2 (en) Data storing method, memory controlling circuit unit and memory storage device
CN110196816B (zh) 控制器、其操作方法以及包括控制器的存储器系统
CN112447238A (zh) 存储器控制器及其操作方法
US11704055B2 (en) Storage device, controller and method for operating thereof
KR102178833B1 (ko) 메모리 시스템 및 이를 포함하는 컴퓨팅 시스템
US11467903B2 (en) Memory system and operating method thereof
CN112711377B (zh) 分布式存储系统的存储节点及其操作方法
CN112748870A (zh) 存储器系统、存储器控制器及操作存储器控制器的方法
US20230039982A1 (en) Memory system and operating method of memory system

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application