KR102645140B1 - Fpga를 포함하는 메모리 시스템 및 이의 동작 방법 - Google Patents

Fpga를 포함하는 메모리 시스템 및 이의 동작 방법 Download PDF

Info

Publication number
KR102645140B1
KR102645140B1 KR1020180156277A KR20180156277A KR102645140B1 KR 102645140 B1 KR102645140 B1 KR 102645140B1 KR 1020180156277 A KR1020180156277 A KR 1020180156277A KR 20180156277 A KR20180156277 A KR 20180156277A KR 102645140 B1 KR102645140 B1 KR 102645140B1
Authority
KR
South Korea
Prior art keywords
data
interface
ecc
memory
performs
Prior art date
Application number
KR1020180156277A
Other languages
English (en)
Other versions
KR20200069110A (ko
Inventor
신동민
손홍락
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020180156277A priority Critical patent/KR102645140B1/ko
Priority to US16/547,425 priority patent/US11169874B2/en
Priority to CN201911239438.4A priority patent/CN111290705B/zh
Publication of KR20200069110A publication Critical patent/KR20200069110A/ko
Priority to US17/499,499 priority patent/US11669395B2/en
Application granted granted Critical
Publication of KR102645140B1 publication Critical patent/KR102645140B1/ko

Links

Images

Classifications

    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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/1048Adding 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 arrangements adapted for a specific error detection or correction feature
    • 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
    • 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/0638Organizing or formatting or addressing of data
    • 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/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/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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/409Read-write [R-W] circuits 
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • H03M13/095Error detection codes other than CRC and single parity bit codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

메모리 시스템 및 이의 동작방법이 개시된다. 본 개시의 실시 예에 따른 메모리 시스템은, 메모리 장치; 제1 인터페이스, 제2 인터페이스, 및 상기 메모리 장치로부터 독출된 독출 데이터에 대해 제1 데이터 처리를 수행하여 상기 제1 및 제2 인터페이스 중 하나로 출력하는 제1 데이터 처리기를 포함하는 메모리 컨트롤러; 및 상기 제1 인터페이스와 연결된 제3 인터페이스, 상기 제2 인터페이스와 연결된 제4 인터페이스, 외부와 연결된 제5 인터페이스, 및 상기 제3 인터페이스로부터 수신한 데이터에 대해 제2 데이터 처리를 수행하여 상기 제5 인터페이스로 출력하는 제2 데이터 처리기를 포함하는 FPGA(Field Programmable Gate Array)를 포함할 수 있다.

Description

FPGA를 포함하는 메모리 시스템 및 이의 동작 방법{MEMORY SYSTEM INCLUDING FPGA AND METHOD OF OPERATION THEREOF}
본 개시의 기술적 사상은 메모리 시스템 및 이의 동작방법에 관한 것으로서, 상세하게는 FPGA(Field Programmable Gate Array)를 포함하는 메모리 시스템 및 이의 동작방법에 관한 것이다.
비휘발성 메모리로서 플래시 메모리는 전원이 차단되어도 저장하고 있는 데이터를 유지할 수 있다. 최근 eMMC(embedded Multi-Media Card), UFS(Universal Flash Storage), SSD(Solid State Drive), 및 메모리 카드 등의 플래시 메모리를 포함하는 스토리지 장치가 널리 사용되고 있으며, 스토리지 장치는 많은 양의 데이터를 저장하거나 이동시키는데 유용하게 사용되고 있다. 스토리지 장치가 널리 사용됨에 따라, 스토리지 장치의 수명 연장을 위한 방안이 지속적으로 연구되고 있다.
본 개시의 기술적 사상은 메모리 시스템에 관한 것으로서, 제1 데이터 처리기를 구비하는 메모리 컨트롤러와 제2 데이터 처리기를 구비하는 FPGA를 포함하는 메모리 시스템 및 이의 동작방법을 제공한다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일 측면에 따른 메모리 시스템은, 메모리 장치; 제1 인터페이스, 제2 인터페이스, 및 상기 메모리 장치로부터 독출된 독출 데이터에 대해 제1 데이터 처리를 수행하여 상기 제1 및 제2 인터페이스 중 하나로 출력하는 제1 데이터 처리기를 포함하는 메모리 컨트롤러; 및 상기 제1 인터페이스와 연결된 제3 인터페이스, 상기 제2 인터페이스와 연결된 제4 인터페이스, 외부와 연결된 제5 인터페이스, 및 상기 제3 인터페이스로부터 수신한 데이터에 대해 제2 데이터 처리를 수행하여 상기 제5 인터페이스로 출력하는 제2 데이터 처리기를 포함하는 FPGA(Field Programmable Gate Array)를 포함할 수 있다.
한편, 본 개시의 기술적 사상의 다른 일 측면에 따른 메모리 시스템은, 메모리 셀 어레이를 포함하는 메모리 장치; 상기 메모리 셀 어레이로부터 독출된 데이터를 바이패스하여 출력하거나, 입력 받은 데이터에 제1 데이터 처리 동작을 수행하여 상기 메모리 장치로 출력하는 제1 데이터 처리기; 및 상기 메모리 컨트롤러와 연결되는 인터페이스, 및 외부로부터 입력 받은 프로그램에 기반하여, 상기 인터페이스를 통해 수신한 데이터에 대해 제2 데이터 처리 동작을 수행하여 호스트로 출력하는 제2 데이터 처리기를 포함하는 FPGA를 포함할 수 있다.
한편, 본 개시의 기술적 사상의 또 다른 일 측면에 따라 프로그램에 기반하여 동작하는 FPGA 및 메모리 장치를 포함하는 메모리 시스템의 동작 방법은, 상기 메모리 장치에 제1 데이터를 기입하기 위하여 노멀 경로 및 높은 신뢰성 경로 중 하나를 선택하는 단계; 상기 높은 신뢰성 경로를 선택함에 응답하여, 제1 데이터에 대해, 상기 프로그램에 기반하여 가변하는 ECC 패리티 비트를 생성하는 제2 ECC 인코딩을 수행하는 단계; 상기 제2 ECC 인코딩이 수행된 제1 데이터에 대해 제1 ECC 인코딩을 수행하는 단계; 및 상기 제1 ECC 인코딩이 수행된 제1 데이터를 제1 기입 방식에 따라 상기 메모리 장치에 저장하는 단계를 포함할 수 있다.
본 개시의 기술적 사상에 따른 메모리 시스템은, 메모리 컨트롤러 외에 FPGA에 데이터 처리기를 구비함에 따라, 에러 정정 능력 정도나 데이터 기입/독출 방식에 대한 자율성을 지원할 수 있다. 이를 통해, 유저의 선호에 기반하여 데이터에 대한 에러 정정 능력이 향상될 수 있고, 이에 기인하여 메모리 시스템의 수명이 연장될 수 있다.
도 1은 본 개시의 예시적 실시 예에 따른 메모리 시스템을 포함하는 데이터처리 시스템의 일 예를 개략적으로 나타내는 블록도이다.
도 2는 본 개시의 예시적 실시 예에 따른 메모리 시스템을 나타내는 블록도이다.
도 3a 및 도 3b는 본 개시의 예시적 실시 예에 따른 데이터의 이동을 설명하는 도면이다.
도 4는 본 개시의 예시적 실시 예에 따른 메모리 시스템의 동작을 나타내는 순서도를 도시한다.
도 5는 본 개시의 예시적 실시 예에 따라 ECC 인코딩 된 데이터의 구성을 개략적으로 설명하는 도면이다.
도 6a 및 도 6b는 본 개시의 예시적 실시 예에 따른 데이터의 이동을 설명하는 도면이다.
도 7은 본 개시의 예시적 실시 예에 따른 메모리 시스템의 동작을 나타내는 순서도를 도시한다.
도 8은 도 6b에 개시된 FPGA H-matrix를 개략적으로 나타내는 도면이다.
도 9는 본 개시의 예시적 실시 예에 따른 메모리 시스템 및 이의 데이터 독출 동작을 나타내는 블록도이다.
도 10은 본 개시의 다른 예시적 실시 예에 따른 메모리 시스템 및 이의 데이터 독출 동작을 나타내는 블록도이다.
도 11은 본 개시의 다른 실시 예에 따른 메모리 시스템의 동작을 나타내는 순서도를 도시한다.
도 12는 본 개시의 다른 예시적 실시 예에 따른 메모리 시스템을 나타내는 블록도이다.
도 13은 본 개시의 다른 예시적 실시 예에 따른 메모리 시스템을 나타내는 블록도이다.
도 14는 본 개시의 다른 예시적 실시 예에 따른 메모리 시스템을 나타내는 블록도이다.
도 15는 본 개시의 다른 예시적 실시 예에 따른 메모리 시스템을 나타내는 블록도이다.
도 16은 본 개시의 다른 예시적 실시 예에 따른 메모리 시스템을 나타내는 블록도이다.
도 17은 본 개시의 다른 예시적 실시 예에 따른 메모리 시스템을 나타내는 블록도이다.
도 18은 본 개시의 예시적 실시 예들에 따른 메모리 시스템을 SSD 시스템에 적용한 예를 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시 예에 대해 상세히 설명한다.
도 1은 본 개시의 예시적 실시 예에 따른 메모리 시스템을 포함하는 데이터처리 시스템의 일 예를 개략적으로 나타내는 블록도이다.
데이터 처리 시스템(1)은 전자 장치에 내장(embedded)되거나 또는 전자 장치로 구현될 수 있다. 전자 장치는 예를 들어, PC(personal computer), 데이터 서버, UMPC(Ultra Mobile PC), 워크스테이션, 넷북(net-book), 네트워크-결합 스토리지(network-attached storage, NAS), 스마트 텔레비전(smart television), IoT(Internet of Things) 장치, 또는 휴대용 전자 기기로 구현될 수 있다. 휴대용 전자 기기는, 랩탑 컴퓨터, 이동 전화기, 스마트폰, 태블릿 PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라, 디지털 비디오 카메라, 오디오 장치, PMP(portable multimedia player), PND(personal navigation device), MP3 플레이어, 휴대용 게임 콘솔(handheld game console), e-북(e-book), 웨어러블 기기 등일 수 있다.
도 1을 참조하면, 데이터 처리 시스템(1)은 호스트(HT) 및 메모리 시스템(10)을 포함할 수 있다. 호스트(HT)는 메모리 시스템(10)에 데이터를 저장하고, 메모리 시스템(10)으로부터 데이터를 독출할 수 있다. 호스트(HT)는 CPU(Central Processing Unit), 프로세서, 마이크로프로세서 또는 어플리케이션 프로세서(Application Processor, AP) 등과 같이 데이터를 처리할 수 있는 데이터 처리 장치를 의미할 수 있다. 예를 들어, 호스트(HT)는 시스템 온 칩(System-On-Chip, SoC)으로 구현될 수 있다.
호스트(HT)는 다양한 인터페이스를 통하여 메모리 시스템(10)과 통신할 수 있다. 호스트(HT)는 메모리 시스템(10)에 데이터 기입 또는 데이터 독출을 위한 액세스 요청(REQ) 및 액세스 하고자 하는 위치를 나타내는 주소, 즉 논리 주소(Logical Address, LA)를 전송할 수 있다. 액세스 요청(REQ)은 기입 요청 또는 독출 요청을 포함하는 커맨드일 수 있다. 메모리 시스템(10)은 액세스 요청(REQ)에 응답하여 동작할 수 있다.
메모리 시스템(10)은 호스트(HT)로부터 수신되는 액세스 요청(REQ), 즉 기입/독출 요청에 응답하여 동작하며, 호스트(HT)로부터 수신되는 데이터(DT)를 저장할 수 있다. 호스트(HT)로부터 수신되는 데이터(DT)는 유저 데이터로 명명될 수 있다. 즉, 메모리 시스템(10)은 호스트(HT)의 스토리지 장치로 사용될 수 있다.
메모리 시스템(10)은 호스트(HT)와 연결되는 호스트 인터페이스 프로토콜에 따라 다양한 종류의 저장 장치들 중 하나로 구현될 수 있다. 예를 들면, 메모리 시스템(10)은 전자 장치에 내장되는(embedded) 내부(internal) 메모리일 수 있다. 예를 들어, 메모리 시스템(10)은 eMMC(embedded Multimedia Card), MMC, SSD(Solid State Drive), UFS(Universal Flash Storage), 임베디드 UFS(Universal Flash Storage), RS-MMC(Reduced Size MMC), micro-MMC 형태의 멀티 미디어 카드(MMC: Multi Media Card), RS-MMC(Reduced Size MMC), CF(Compact Flash) 카드, SD(Secure Digital) 카드, mMicro-SD(Micro Secure Digital) 카드, Mini-SD(Mini Secure Digital), xD(extreme Digital), 스마트 미디어(Smart Media) 카드, 및 메모리 스틱(Memory Stick) 등과 같은 다양한 종류의 저장 장치 들 중 어느 하나로 구현될 수 있다.
메모리 시스템(10)은 메모리 컨트롤러(100), FPGA(Field Programmable Gate Array)(200) 및 메모리 장치(300)를 포함할 수 있다. 예시적 실시 예에 있어서, 메모리 컨트롤러(100), FPGA(200) 및 메모리 장치(300)는 하나의 반도체 장치로 집적될 수 있다.
메모리 장치(300)는 메모리 셀 어레이(310)를 포함할 수 있고, 메모리 컨트롤러(100)의 제어에 따라 메모리 셀 어레이(310)에 대한 기입 및 독출 동작을 수행하는 회로들을 더 포함할 수 있다. 일 예로, 메모리 셀 어레이(310)가 플래시(flash) 메모리 셀들을 포함함에 따라, 메모리 장치(300)는 플래시 메모리 장치로 지칭될 수 있고, 메모리 시스템(10)은 플래시 메모리 시스템으로 지칭될 수 있다. 다만, 본 개시의 기술적 사상은 이에 한정되지 않고, 메모리 셀 어레이(310)는 ReRAM(resistive RAM), PRAM(phase change RAM), MRAM(magnetic RAM)과 같은 저항형 메모리 셀들을 포함할 수도 있다.
예시적 실시 예에 있어서, 메모리 셀 어레이(310)에 포함된 각 메모리 셀은 1 비트 데이터를 저장하는 싱글 레벨 셀(single level cell, SLC)일 수 있다. 다른 실시 예에서, 메모리 셀 어레이(310)에 포함된 각 메모리 셀은 2 비트 이상의 데이터를 저장하는 멀티 레벨 셀(multi level cell, MLC)일 수 있다. 예를 들어서, 메모리 셀 어레이(310)에 포함된 각 메모리 셀은 3 비트 데이터를 저장하는 트리플 레벨 셀(triple level cell, TLC) 또는 4 비트 데이터를 저장하는 쿼드러플 레벨 셀(quadruple level cell, QLC)일 수 있다.
예시적 실시 예에 있어서, 메모리 셀 어레이(310)는 2차원 수평 구조의 낸드 플래시 메모리로 구현되는 2차원 메모리 어레이일 수 있다. 다른 예시적 실시 예에 있어서, 메모리 셀 어레이(310)는 3차원(3D) 수직 구조의 낸드 플래시 메모리로 구현되는 3D 메모리 어레이일 수 있다. 3D 메모리 어레이는 실리콘 기판 위에 배치되는 활성 영역과, 메모리 셀들의 동작과 관련된 회로로서 상기 기판 상에 또는 상기 기판 내에 형성된 회로를 가지는 메모리 셀 어레이들의 적어도 하나의 물리적 레벨에 모놀리식으로 형성된다. 상기 용어 "모놀리식"은 상기 어레이를 구성하는 각 레벨의 층들이 상기 어레이 중 각 하부 레벨의 층들의 바로 위에 적층되어 있음을 의미한다. 본 개시의 기술적 사상에 의한 일 실시 예에서, 상기 3D 메모리 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직 방향으로 배치된 버티컬 NAND 스트링들을 포함한다. 상기 적어도 하나의 메모리 셀은 전하 트랩층을 포함할 수 있다. 미국 특허공개공보 제7,679,133호, 동 제 8,553,466호, 동 제8,654,587호, 동 제8,559,235호, 및 미국 특허출원공개공보 제2011/0233648호는 3D 메모리 어레이가 복수 레벨로 구성되고 워드 라인들 및/또는 비트라인들이 레벨들간에 공유되어 있는 3D 메모리 어레이에 대한 적절한 구성들을 상술하는 것들로서, 본 명세서에 인용 형식으로 결합된다.
메모리 컨트롤러(100)는 제1 인터페이스(IF_1), 제2 인터페이스(IF_2) 및 제1 데이터 처리기(110)를 포함할 수 있다. 또한, FPGA(200)는 제3 인터페이스(IF_3), 제4 인터페이스((IF_4), 제5 인터페이스(IF_5) 및 제2 데이터 처리기(210)를 포함할 수 있다. 예시적 실시 예에 있어서, 제1 인터페이스(IF_1) 및 제3 인터페이스(IF_3)는 상호 전기적으로 연결되어 데이터 및 각종 신호를 주고 받을 수 있다. 또한, 제2 인터페이스(IF_2) 및 제4 인터페이스(IF_4)는 상호 전기적으로 연결되어 데이터 및 각종 신호를 주고 받을 수 있다. 또한, 제5 인터페이스(IF_5)는 호스트(HT)(또는, 호스트(HT)에 구비된 인터페이스)와 전기적으로 연결되어 데이터 및 각종 신호를 주고 받을 수 있다. 예를 들어, 제1 내지 제5 인터페이스(IF_1~IF_5) 각각은 USB, MMC, PCI-E, ATA(Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI, ESDI, 그리고 IDE(Integrated Drive Electronica) 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나로서 구성될 수 있다. 도시되지는 않았으나, 메모리 컨트롤러(100)는 호스트(HT)와 직접 연결되어 호스트(HT)와 상호 신호를 교환하도록 구성되는 인터페이스를 더 포함할 수도 있다.
메모리 컨트롤러(100)는 메모리 장치(300)에 데이터(DT')를 기입하거나, 또는 메모리 장치(300)에 저장된 데이터(DT')를 독출하도록 메모리 장치(300)를 제어할 수 있다. 예를 들어, 메모리 컨트롤러(100)는 FPGA(200)를 거쳐 제2 인터페이스(IF_2)를 통해 수신된 호스트(HT)로부터의 기입/독출 요청에 응답하여 메모리 장치(300)에 데이터(DT')를 기입하도록, 또는 메모리 장치(300)에 저장된 데이터(DT')를 독출하도록 메모리 장치(300)를 제어하는 각종 신호를 출력할 수 있다.
예시적 실시 예에 있어서, 제1 데이터 처리기(110)는 메모리 장치(300)로부터 독출된 데이터(DT')에 대해 제1 데이터 처리를 수행하고, 이를 제1 및 제2 인터페이스(IF_1, IF_2) 중 하나로 출력할 수 있다. 또한, 제1 데이터 처리기(110)는 제1 및 제2 인터페이스(IF_1, IF_2) 중 하나로부터 수신한 데이터에 대해 제1 데이터 처리를 수행하고, 이로써 생성된 데이터(DT')를 메모리 장치(300)로 출력할 수 있다. 일 예로, 제1 데이터 처리기(110)는 ECC(Error Correction Code) 엔진, 신호 프로세서(signal processor), 랜더마이저(randomizer), 암호화기/복호화기(encryptor/decryptor) 및 연산기 중 적어도 하나를 포함할 수 있다.
FPGA(200)는 프로그램이 가능한 반도체 장치로서, 예를 들어 유저가 입력한 프로그램(PGM)(또는, 유저의 회로 변경)에 기반하여 각종 동작을 수행할 수 있다. FPGA(200)는, 입력 프로그램에 따라 다양한 동작을 수행할 수 있는 비제한적인 형태의 장치로 대체될 수 있다. 예시적 실시 예에 있어서, FPGA(200)에 구비된 제2 데이터 처리기(210)는 제3 인터페이스(IF_3)로부터 수신한 데이터에 대해 제2 데이터 처리를 수행하고, 이를 제5 인터페이스(IF_5)로 출력할 수 있다. 다시 말해서, 제2 데이터 처리기(210)는 메모리 장치(300)로부터 독출된 데이터(DT')에 대해 제2 데이터 처리를 수행하고, 이를 호스트(HT)로 출력할 수 있다.
또한 예시적 실시 예에 있어서, 제2 데이터 처리기(210)는 제5 인터페이스(IF_5)로부터 수신한 데이터(DT)에 대해 제2 데이터 처리를 수행하고, 이를 제3 인터페이스(IF_3)로 출력할 수 있다. 제3 인터페이스(IF_3)로 출력된 데이터는 제1 데이터 처리기(110)로 제공되어, 제1 데이터 처리가 수행될 수 있다. 이로써, 호스트(HT)로부터 수신한 데이터(DT)는 제2 데이터 처리 및 제1 데이터 처리가 순차적으로 수행됨으로써, 데이터(DT')로서 메모리 장치(300)에 저장될 수 있다. 일 예로, 제2 데이터 처리기(210)는 ECC 엔진, 신호 프로세서, 랜더마이저, 암호화기/복호화기 및 연산기 중 적어도 하나를 포함할 수 있다.
예시적 실시 예에 있어서, FPGA(200)는 제5 인터페이스(IF_5)를 통해 호스트(HT)로부터 수신한 데이터(DT)를, 제4 인터페이스(IF_4)를 통해 바로 메모리 컨트롤러(100)로 전달할 수 있다. 이로써, 데이터(DT)는 제1 데이터 처리만 수행됨으로써, 데이터(DT')로서 메모리 장치(300)에 저장될 수도 있다.
제1 및 제2 데이터 처리기(110, 210)는 각각 메모리 컨트롤러(100) 및 FPGA(200) 내에서 다양한 형태로 구현될 수 있으며, 실시 예에 따라 하드웨어 형태, 소프트웨어 형태 또는 펌웨어와 같이 소프트웨어와 하드웨어가 결합된 형태로 구현될 수 있다. 본 개시의 기술적 사상에 따른 메모리 시스템(10)은 제2 데이터 처리기(210)를 포함하는 FPGA(200)를 구비함에 따라, 다양한 방식에 따른 데이터 기입/독출 동작을 수행할 수 있다. 일 예로, 제2, 제4 및 제5 인터페이스(IF_2, IF_4, IF_5)와 제1 데이터 처리기(110)를 포함하는 경로에 따라 데이터를 기입/독출 함으로써 데이터에 대해 제1 데이터 처리 동작만을 수행할 수 있다. 또한, 제1, 제3 및 제5 인터페이스(IF_1, IF_3, IF_5)와 제1 및 제2 데이터 처리기(110, 210)를 포함하는 경로에 따라 데이터를 기입/독출함으로써 데이터에 대해 제1 및 제2 데이터 처리 동작을 각각 수행할 수 있다. 또한, 제2 데이터 처리기(210)는 프로그램(PGM)에 따라 제2 데이터 처리 동작을 다양하게 가변할 수 있으므로, 데이터 기입/독출 방식(또는 데이터 기입/독출 정책)의 자유도가 더욱 향상될 수 있다.
도 2는 본 개시의 예시적 실시 예에 따른 메모리 시스템을 나타내는 블록도이다.
도 2를 참조하면, 제1 데이터 처리기(110a)는 제1 ECC 엔진(112a)을 포함할 수 있다. 또한, 제2 데이터 처리기(210a)는 제2 ECC 엔진(212a)을 포함할 수 있다. 예시적 실시 예에 있어서, 제1 ECC 엔진(112a)은 제1 인터페이스(IF_1a) 및 제2 인터페이스(IF_2a) 중 하나로부터 수신한 데이터에 대한 제1 ECC 인코딩을 수행하고, 메모리 장치(300a)로부터 독출된 데이터(DT')에 대한 제1 ECC 디코딩을 수행할 수 있다. 또한 예시적 실시 예에 있어서, 제2 ECC 엔진(212a)은 제5 인터페이스(IF_5a)를 통해 수신한 데이터(DT)에 대한 제2 ECC 인코딩을 수행하고, 제3 인터페이스(IF_3a)를 통해 수신한 데이터에 대한 제2 ECC 디코딩을 수행할 수 있다. 예를 들어, 제1 ECC 엔진(112a) 및 제2 ECC 엔진(212a)은 각각 LDPC 코드(Low Density Parity Check code), RS 코드(Read-Solomon Code), 헤밍 코드(Hamming code), CRC(Cyclic Redundancy Code)등과 같은 알고리즘에 기반하여 ECC 인코딩 및 ECC 디코딩 동작을 수행할 수 있다.
예시적 실시 예에 있어서, 메모리 시스템(10a)은 노멀 경로(normal path) 및 높은 신뢰성 경로(high reliable path) 중 하나의 경로를 선택하고, 선택된 경로를 통해 데이터를 ECC 인코딩하여 메모리 셀 어레이(310a)에 기입하거나, 메모리 셀 어레이(310a)에 저장된 데이터를 독출하여 ECC 디코딩을 수행할 수 있다.
예를 들어 노멀 경로는 제1 데이터 처리기(110a), 제2 인터페이스(IF_2a), 제4 인터페이스(IF_4a) 및 제5 인터페이스(IF_5a)로 구성될 수 있다. 노멀 경로를 통해 기입/독출 되는 데이터는 제1 ECC 엔진(112a)을 통한 ECC 인코딩 및 ECC 디코딩이 수행될 수 있다.
예를 들어 높은 신뢰성 경로는 제1 데이터 처리기(110a), 제1 인터페이스(IF_1), 제3 인터페이스(IF_3a), 제2 데이터 처리기(210a) 및 제5 인터페이스(IF_5a)로 구성될 수 있다. 높은 신뢰성 경로를 통해 기입/독출 되는 데이터는 제1 ECC 엔진(112a) 및 제2 ECC 엔진(212a)을 통한 ECC 인코딩이 수행될 수 있다. 또한, 높은 신뢰성 경로를 통해 기입/독출 되는 데이터는 제1 ECC 엔진(112a) 및 제2 ECC 엔진(212a) 중 하나를 통한 ECC 디코딩이 수행될 수 있다.
도 3a 및 도 3b는 본 개시의 예시적 실시 예에 따른 데이터의 이동을 설명하는 도면이다. 예를 들어, 도 3a는 노멀 경로를 통한 기입 데이터의 이동을, 도 3b는 높은 신뢰성 경로를 통한 기입 데이터의 이동을 각각 나타낼 수 있다.
도 3a를 참조하면, 제5 인터페이스(IF_5a)를 통해 외부로부터 데이터(DT)가 입력될 수 있다(①). 데이터(DT)는 제4 인터페이스(IF_4a)로 전달되고(②), 제4 인터페이스(IF_4a)를 통해 메모리 컨트롤러(100a)로 출력될 수 있다(③). 메모리 컨트롤러(100a)는 제2 인터페이스(IF_2a)를 통해 수신한 데이터(DT)를 제1 ECC 엔진(112a)으로 전달할 수 있다(④). 제1 ECC 엔진(112a)은 제2 인터페이스(IF_2a)를 통해 수신한 데이터(DT)에 대해 제1 ECC 인코딩을 수행함으로써 코드워드를 생성하고, 생성된 코드워드를 포함하는 데이터(DT')를 메모리 장치(300a)에 제공할 수 있다(⑤). 예를 들어, 데이터(DT')는 코드워드 비트들 및 제1 ECC 인코딩에 따른 패리티 비트들을 포함할 수 있다. 메모리 장치(300a)는 수신한 데이터(DT')를 메모리 셀 어레이(310a)에 저장할 수 있다.
도 3b를 참조하면, 제5 인터페이스(IF_5a)를 통해 외부로부터 데이터(DTa)가 입력될 수 있다(①-a). FPGA(200a)는 제5 인터페이스(IF_5a)를 통해 수신한 데이터(DTa)를 제2 ECC 엔진(212a)으로 전달할 수 있다(②-a). 제2 ECC 엔진(212a)은 데이터(DTa)에 대해 제2 ECC 인코딩을 수행함으로써 코드워드를 생성하고, 생성된 코드워드를 포함하는 데이터를 제3 인터페이스(IF_3a)로 전달할 수 있다(③-a). FPGA(200a)는 제3 인터페이스(IF_3a)를 통해 제2 ECC 인코딩이 수행된 데이터를 메모리 컨트롤러(100a)로 출력할 수 있다(④-a). 예를 들어, 제2 ECC 인코딩이 수행된 데이터는 코드워드 비트들 및 제2 ECC 인코딩에 따른 패리티 비트들을 포함할 수 있다. 이 때, 제2 ECC 인코딩이 수행된 데이터에 포함된 코드워드 비트들은 제2 ECC 인코딩의 기반이 된 H-matrix의 조건을 만족하지 않을 수도 있고, 이에, 모조 코드워드 비트들(pseudo codeword bits)로 명명될 수 있다.
메모리 컨트롤러(100a)는 제1 인터페이스(IF_1a)를 통해 수신한 데이터를 제1 ECC 엔진(112a)으로 전달할 수 있다(⑤-a). 제1 ECC 엔진(112a)은 제1 인터페이스(IF_1a)를 통해 수신한 데이터(또는, 제2 ECC 인코딩이 수행된 데이터)에 대해 제1 ECC 인코딩을 수행함으로써 코드워드를 생성하고, 생성된 코드워드를 포함하는 데이터(DTa')를 메모리 장치(300a)에 제공할 수 있다(⑥-a). 예를 들어, 데이터(DTa')는 코드워드 비트들, 제1 ECC 인코딩에 따른 패리티 비트들 및 제2 ECC 인코딩에 따른 패리티 비트들을 포함할 수 있다. 이 때, 데이터(DTa')에 포함된 코드워드 비트들은 제1 인코딩의 기반이 된 H-matrix 및 제2 인코딩의 기반이 된 H-matrix 각각의 조건을 만족하는 온전한 코드워드 비트들일 수 있다.
도 4는 본 개시의 예시적 실시 예에 따른 메모리 시스템의 동작을 나타내는 순서도를 도시한다. 예를 들어, 도 4는 도 2의 메모리 시스템(10a)의 데이터 기입동작의 일 예를 나타낼 수 있다.
도 4를 참조하면, 메모리 시스템(10a)은 데이터 기입을 위하여, 노멀 경로와 높은 신뢰성 경로 중 하나를 선택할 수 있다(S10). 예를 들어, FPGA(200a)에 입력되는 프로그램(또는, FPGA(200a)의 회로 변경)에 기반하여 메모리 시스템(10a)은 노멀 경로 및 높은 신뢰성 경로 중 하나를 선택할 수 있다.
데이터 기입을 위하여 노멀 경로를 선택한 경우, 메모리 시스템(10a)은 입력 데이터(DT)에 대해 제1 ECC 인코딩을 수행하고(S30), 제1 ECC 인코딩이 수행된 데이터를 메모리 셀 어레이(310a)에 저장할 수 있다(S40). 구체적으로, FPGA(200a)는 제5 인터페이스(IF_5a)를 통해 입력 받은 데이터(DT)를 제4 인터페이스(IF_4a)를 거쳐 메모리 컨트롤러(100a)로 출력하고, 메모리 컨트롤러(100a)는 제2 인터페이스(IF_2a)를 통해 이를 수신할 수 있다. 메모리 컨트롤러(100a)는 제2 인터페이스(IF_2a)를 통해 수신한 데이터(DT)에 대해, 제1 ECC 엔진(112a)에서 제1 ECC 인코딩을 수행하여 메모리 장치(300a)로 출력할 수 있다.
데이터 기입을 위하여 높은 신뢰성 경로를 선택한 경우, 메모리 시스템(10a)은 입력 데이터(DT)에 대해 제2 ECC 인코딩을 수행할 수 있다(S20). 구체적으로, FPGA(200a)는 제5 인터페이스(IF_5a)를 통해 입력 받은 데이터(DT)에 대해, 제2 ECC 엔진(212a)에서 제2 ECC 인코딩을 수행할 수 있다. FPGA(200a)는 제2 ECC 인코딩이 수행된 데이터를 제3 인터페이스(IF_3a)를 통해 메모리 컨트롤러(100a)로 출력할 수 있다.
다음, 메모리 시스템(10a)은 제2 인코딩이 수행된 데이터에 대해 제1 ECC 인코딩을 수행할 수 있다(S30). 구체적으로, 메모리 컨트롤러(100a)는 제1 인터페이스(IF_1a)를 통해 입력 받은 데이터(또는, 제2 ECC 인코딩이 수행된 데이터)에 대해, 제1 ECC 엔진(112a)에서 제1 ECC 인코딩을 수행할 수 있다. 메모리 컨트롤러(100a)는 제2 ECC 인코딩과 제1 ECC 인코딩이 순차적으로 수행된 데이터(DT')를 메모리 장치(300a)로 출력할 수 있다. 메모리 장치(300a)는 입력 받은 데이터(DT')를 메모리 셀 어레이(310a)에 저장할 수 있다.
도 5는 본 개시의 예시적 실시 예에 따라 ECC 인코딩 된 데이터의 구성을 개략적으로 설명하는 도면이다. 예를 들어, 도 5는 높은 신뢰성 경로에 따른 데이터 기입 시 메모리 장치에 저장된 데이터의 구성을 나타낼 수 있다. 이하, 도 5는 도 3b를 더 참조하여 설명된다.
도 5를 참조하면, 데이터(DTa')는 입력 데이터 비트들(DTa), 제2 ECC 패리티 비트들(PB_2) 및 제1 ECC 패리티 비트들(PB_1)을 포함할 수 있다. 예를 들어, 데이터(DTa')는 제2 ECC 인코딩 및 제1 ECC 인코딩이 순차적으로 수행되어 메모리 장치(300a)로 전달된 형태일 수 있다.
예를 들어, 입력 데이터 비트들(DTa)은 제1 및 제2 ECC 인코딩에 따라 생성된 코드워드 형태일 수 있다. 제1 패리티 비트들(PB_1)은 제1 ECC 인코딩에 따라 생성된 패리티 비트들이고, 제2 패리티 비트들(PB_2)은 제2 ECC 인코딩에 따라 생성된 패리티 비트들일 수 있다. 예시적 실시 예에 있어서, 입력 데이터 비트들(DTa)의 수 및 제2 패리티 비트들(PB_2)의 수는 유저의 프로그램(도 1의 PGM)에 기반하여 가변할 수 있다. 예를 들어, FPGA(200a)가 메모리 시스템(10a)의 데이터 신뢰성을 높이는 방향으로 프로그램 됨에 따라(또는, 회로가 변경됨에 따라), 입력 데이터 비트들(DTa)의 수는 감소하고 제2 패리티 비트들(PB_2)의 수는 증가할 수 있다. 또는, FPGA(200a)가 메모리 시스템(10a)의 저장 데이터 용량을 높이는 방향으로 프로그램 됨에 따라(또는, 회로가 변경됨에 따라), 입력 데이터 비트들(DTa)의 수는 증가하고 제2 패리티 비트들(PB_2)의 수는 감소할 수도 있다. 다시 말해서, 본 개시의 기술적 사상에 따른 메모리 시스템은 에러 정정 능력 정도에 대한 자율성을 지원할 수 있다. 이로써, 유저의 선호에 기반하여 데이터에 대한 에러 정정 능력이 향상될 수 있고, 이에 기인하여 메모리 시스템의 수명이 더욱 개선될 수 있다.
도 6a 및 도 6b는 본 개시의 예시적 실시 예에 따른 데이터의 이동을 설명하는 도면이다. 예를 들어, 도 6a는 노멀 경로를 통한 독출 데이터의 이동을, 도 6b는 높은 신뢰성 경로를 통한 독출 데이터의 이동을 각각 나타낼 수 있다.
도 6a를 참조하면, 메모리 장치(300a)는 메모리 셀 어레이(310a)에서 독출된 데이터(DT')를 메모리 컨트롤러(100a)로 출력할 수 있다(①-b). 메모리 컨트롤러(100a)는 입력 받은 데이터(DT')를 제1 ECC 엔진(100a)에 전달하고, 제1 ECC 엔진(100a)은 데이터(DT')에 대해 제1 ECC 디코딩을 수행할 수 있다. 예를 들어, 제1 ECC 엔진(100a)은 제1 H-matrix(HM-1)에 기반하여 데이터(DT')에 대해 제1 ECC 디코딩을 수행할 수 있다. 예를 들어, 데이터(DT')는 제1 ECC 인코딩에 따라 생성된 코드워드 및 제1 ECC 패리티 비트들을 포함할 수 있다.
제1 ECC 디코딩이 수행된 데이터(DT)는 제2 인터페이스(IF_2a)로 전달되고(②-b), 메모리 컨트롤러(100a)는 제2 인터페이스(100a)를 통해 FPGA(200a)로 제1 ECC 디코딩이 수행된 데이터(DT)를 출력할 수 있다(③-b). FPGA(200a)는 제4 인터페이스(IF_4a)를 통해 제1 ECC 디코딩이 수행된 데이터(DT)를 수신하여 제5 인터페이스(IF_5a)로 전달할 수 있다(④-b). FPGA(200a)는 제5 인터페이스(IF_5a)를 통해 제1 디코딩이 수행된 데이터(DT)를 외부(예를 들어, 호스트(HT))로 출력할 수 있다(⑤-b).
도 6b를 참조하면, 메모리 장치(300a)는 메모리 셀 어레이(310a)에서 독출된 데이터(DTa')를 메모리 컨트롤러(100a)로 출력할 수 있다(①-c). 예시적 실시 예에 있어서, 데이터(DTa')는 제1 ECC 패리티 비트들 및 제2 ECC 패리티 비트들을 포함할 수 있다. 또한, 데이터(DTa')는 제1 ECC 인코딩 및 제2 ECC 인코딩에 따라 생성된 코드워드를 포함할 수 있다.
예시적 실시 예에 있어서, 제1 데이터 처리기(110a)는 메모리 장치(300a)로부터 수신한 데이터(DTa')를 바이패스(bypass)하여 제1 인터페이스(IF_1a)로 전달할 수 있다. 다시 말해서, 높은 신뢰성 경로를 선택한 메모리 시스템(10a)은, 제1 및 제2 ECC 인코딩이 수행된 데이터(DTa')에 대한 ECC 디코딩을 FPGA(200a)에서 수행할 수 있도록 데이터 독출 동작 시 제1 ECC 엔진(112a)을 바이패스 할 수 있다. 메모리 컨트롤러(100a)는 제1 인터페이스(IF_1a)를 통해 데이터(DTa')를 FPGA(200a)로 출력할 수 있다(②-c).
FPGA(200a)는 제3 인터페이스(IF_3a)를 통해 수신한 데이터(DTa')를 제2 ECC 엔진(212a)으로 전달할 수 있다(③-c). 제2 ECC 엔진(212a)은 FPGA H-matrix(HM-F)에 기반하여 데이터(DTa')에 대해 ECC 디코딩을 수행할 수 있다. 예시적 실시 예에 있어서, FPGA H-matrix(HM-F)는 제1 ECC 디코딩을 위한 제1 H-matrix(HM-1) 및 제2 ECC 디코딩을 위한 제2 H-matrix를 포함할 수 있다. 이에 대한 자세한 설명은 도 8에서 후술하기로 한다.
FPGA(200a)는 제2 ECC 엔진(212a)에서 ECC 디코딩이 수행된 데이터(DTa)를 제5 인터페이스(IF_5a)로 전달할 수 있다(④-c). FPGA(200a)는 제5 인터페이스(IF_5a)를 통해 데이터(DTa)를 외부(예를 들어, 호스트(HT))로 출력할 수 있다(⑤-c).
도 7은 본 개시의 예시적 실시 예에 따른 메모리 시스템의 동작을 나타내는 순서도를 도시한다. 예를 들어, 도 7은 도 2의 메모리 시스템(10a)의 데이터 독출 동작의 일 예를 나타낼 수 있다.
도 7을 참조하면, 메모리 시스템(10a)은 데이터 독출을 위하여, 저장된 데이터가 FPGA(200a)에서 제2 ECC 인코딩이 수행된 데이터인지 여부를 판단할 수 있다(S110). 다시 말해서, 메모리 시스템(10a)은 저장된 데이터가 노멀 경로에 따라 메모리 셀 어레이(310a)에 기입되었는지, 혹은 저장된 데이터가 높은 신뢰성 경로에 따라 메모리 셀 어레이(310a)에 기입되었는지 여부에 따라 데이터 독출 경로를 달리할 수 있다. 예를 들어, 저장된 데이터가 제2 ECC 인코딩 된 데이터가 아닌 경우(다시 말해서, 저장된 데이터가 제1 ECC 인코딩만 수행된 데이터인 경우) 메모리 시스템(10a)은 메모리 컨트롤러(100a)에 구비된 제1 ECC 엔진(112a)에서 데이터(DT')에 대해 제1 ECC 디코딩을 수행할 수 있다(S140). 제1 ECC 디코딩이 수행된 데이터(DT)는 제2 인터페이스(IF_2a), 제4 인터페이스(IF_4a) 및 제5 인터페이스(IF_5a)를 거쳐 외부(예를 들어, 호스트(HT))로 출력될 수 있다(S150).
저장된 데이터가 제2 ECC 인코딩 된 데이터인 경우, 메모리 시스템(10a)은 독출 데이터(DT')를 제1 ECC 엔진(112a)에 바이패스 시킬 수 있다(S120). 메모리 컨트롤러(100a)는 제1 ECC 엔진(112a)에서 바이패스 된 데이터(DT')를 제1 인터페이스(IF_1a)를 통해 FPGA(200a)로 출력할 수 있다.
제3 인터페이스(IF_3a)를 통해 데이터(DT')를 수신한 FPGA(200a)는 데이터(DT')를 제2 ECC 엔진(212a)으로 전달하고, 제2 ECC 엔진(212a)에서 데이터(DT')에 대한 ECC 디코딩이 수행될 수 있다(S130). 예를 들어, 제2 ECC 엔진(212a)은 제1 ECC 디코딩을 위한 제1 H-matrix(HM-1) 및 제2 ECC 디코딩을 위한 제2 H-matrix를 포함하는 FPGA H-matrix(HM-F)에 기반하여 데이터(DT')에 대한 ECC 디코딩을 수행할 수 있다. FPGA(200a)는 제2 ECC 엔진(212a)에서 ECC 디코딩이 수행된 데이터(DT)를 제5 인터페이스(IF_5a)를 통해 외부(예를 들어, 호스트(HT))로 출력할 수 있다(S150).
도 8은 도 6b에 개시된 FPGA H-matrix를 개략적으로 나타내는 도면이다.
도 8을 참조하면, FPGA H-matrix(HM-F)는 제1 H-matrix(HM-1), 제2 H-matrix(HM-2) 및 Zero-matrix(ZM)를 포함할 수 있다. 예시적 실시 예에 있어서, 제1 H-matrix(HM-1)는 제1 ECC 엔진(112a)의 제1 ECC 인코딩/디코딩 동작에 이용될 수 있다. 또한, 제2 H-matrix(HM-2)는 제2 ECC 엔진(212a)의 제2 ECC 인코딩/디코딩 동작에 이용될 수 있다. 또한, Zero-matrix(ZM)는 모든 원소가 0인 matrix일 수 있다.
제2 ECC 엔진(212a)이 FPGA H-matrix(HM-F)를 구비함으로써, 제2 ECC 엔진(212a)은 제1 및 제2 ECC 인코딩이 수행된 데이터에 대한 ECC 디코딩 동작을 수행할 수 있다. 다시 말해서, 메모리 시스템(10a)은 높은 신뢰성 경로에 따른 데이터 기입 시에 제2 ECC 엔진(212a) 및 제1 ECC 엔진(112a) 각각에서 ECC 인코딩을 순차적으로 수행하고, 높은 신뢰성 경로에 따른 데이터 독출 시에는 제2 ECC 엔진(212a)에서 ECC 디코딩을 한번에 수행할 수 있다.
도 9는 본 개시의 예시적 실시 예에 따른 메모리 시스템 및 이의 데이터 독출 동작을 나타내는 블록도이다. 예를 들어, 도 9는 높은 신뢰성 경로를 통한 데이터 독출을 설명하는 도면일 수 있다.
도 9를 참조하면, 메모리 장치(300b)는 메모리 셀 어레이(310b)에서 독출된 데이터(DTb')를 메모리 컨트롤러(100b)로 출력하고, 메모리 컨트롤러(100b)는 입력받은 데이터(DTb')를 제1 데이터 처리기(110b)에 바이패스하여 제1 인터페이스(IF_1b)로 전달할 수 있다(①-d). 메모리 컨트롤러(100b)는 제1 인터페이스(IF_1b)를 통해 데이터(DTb')를 FPGA(200b)로 출력할 수 있다(②-d).
FPGA(200b)는 제3 인터페이스(IF_3b)를 통해 수신한 데이터(DTb')를 제2 데이터 처리기(210b)로 전달할 수 있다(③-d). 예시적 실시 예에 있어서, 제2 데이터 처리기(210b)는 신호 처리기(214b) 및 랜더마이저(216b)를 더 포함할 수 있다. 데이터(DTb')를 전달받은 제2 데이터 처리기(210b)는 데이터(DTb')에 대한 제2 ECC 엔진(212b), 신호 처리기(214b) 및 랜더마이저(216b) 각각의 동작을 순차적으로 수행할 수 있다. 일 예로, 제2 ECC 엔진(212b)은 FPGA H-matrix(HM-F)에 기반하여 데이터(DTb')에 대한 ECC 디코딩 동작을 수행하고, 신호 처리기(214b)는 ECC 디코딩 된 데이터의 다양한 연산을 위한 각종 신호처리를 수행할 수 있다. 또한, 랜더마이저(216b)는 신호처리 된 데이터에 대해 디랜더마이즈(derandomize) 동작을 수행하고, 랜덤성이 제거된 데이터를 제5 인터페이스(IF_5b)로 전달할 수 있다(④-d). FPGA(200b)는 제5 인터페이스(IF_5b)를 통해 데이터(DTb)를 외부(예를 들어, 호스트(HT))로 출력할 수 있다(⑤-d).
도 10은 본 개시의 다른 예시적 실시 예에 따른 메모리 시스템 및 이의 데이터 독출 동작을 나타내는 블록도이다. 예를 들어, 도 10은 높은 신뢰성 경로를 통한 데이터 독출을 설명하는 도면일 수 있다.
도 10을 참조하면, 메모리 장치(300c)는 메모리 셀 어레이(310c)에서 독출된 데이터(DTc')를 메모리 컨트롤러(100c)로 출력하고, 메모리 컨트롤러(100c)는 입력받은 데이터(DTc')를 제1 ECC 엔진(112c)에 바이패스하여 제1 인터페이스(IF_1b)로 전달할 수 있다(①-e). 메모리 컨트롤러(100c)는 제1 인터페이스(IF_1c)를 통해 데이터(DTc')를 FPGA(200c)로 출력할 수 있다(②-e).
FPGA(200c)는 제3 인터페이스(IF_3c)를 통해 수신한 데이터(DTc')를 제2 ECC 엔진(212c)으로 전달하고(③-e), 제2 ECC 엔진(212c)은 FPGA H-matrix(HM-F)에 기반하여 데이터(DTc')에 대한 ECC 디코딩을 수행할 수 있다. FPGA(200c)는 ECC 디코딩 된 데이터를 제4 인터페이스(IF_4c)로 전달하여(④-e) 메모리 컨트롤러(100c)로 출력할 수 있다(⑤-e).
메모리 컨트롤러(100c)는 제2 인터페이스(IF_2c)를 통해 수신한 데이터를 제1 데이터 처리기(110c)로 전달할 수 있다(⑥-e). 예시적 실시 예에 있어서, 제1 데이터 처리기(110c)는 신호 처리기(114c) 및 랜더마이저(116c)를 더 포함할 수 있다. 데이터를 전달받은 제1 데이터 처리기(110c)는 데이터에 대한 신호 처리기(114c) 및 랜더마이저(116c) 각각의 동작을 순차적으로 수행하고, 신호 처리 및 디랜더마이즈된 데이터(DTc)를 제2 인터페이스(IF_2c)로 전달할 수 있다(⑦-e). 메모리 컨트롤러(100c)는 데이터(DTc)를 제2 인터페이스(IF_2c)를 통해 FPGA(200c)로 출력할 수 있다(⑧-e). FPGA(200c)는 제4 인터페이스(IF_4c)를 통해 수신한 데이터(DTc)를 제5 인터페이스(IF_5c)로 전달(⑨-e) 및 제5 인터페이스(IF_5c)를 통해 데이터(DTc)를 외부로 출력할 수 있다(⑩-e).
도 11은 본 개시의 다른 실시 예에 따른 메모리 시스템의 동작을 나타내는 순서도를 도시한다. 이하, 도 11은 도 2를 더 참조하여 설명된다.
도 11을 참조하면, 메모리 시스템(10a)은 메모리 컨트롤러(100a)에서 수행되는 제1 ECC 엔진(112a)에 따른 오류 정정의 신뢰 여부를 결정할 수 있다(S210). 일 예로, 상기 신뢰 여부는 메모리 장치(300a)에 대한 데이터 프로그램 횟수 정보에 기반하여 결정될 수 있다. 또는, 상기 신뢰 여부는 호스트(HT)로부터 입력 받은 정보에 기반하여 결정될 수도 있다.
메모리 컨트롤러(100a)에서 수행되는 제1 ECC에 따른 오류 정정이 신뢰되지 않는 것으로 결정된 경우, 메모리 컨트롤러(100a)는 데이터 프로그램 방식을 변경할 수 있다(S220). 예시적 실시 예에 있어서, 메모리 컨트롤러(100a)는 메모리 셀 어레이(310a)의 각 메모리 셀에 n 비트(n은 2 이상의 양의 정수) 데이터를 저장하는 데이터 프로그램 방식을, 각 메모리 셀에 n-1 비트 데이터를 저장하는 데이터 프로그램 방식으로 변경할 수 있다. 일 예로, 메모리 컨트롤러(100a)는 QLC 방식에 따른 데이터 프로그램 방식을 TLC 방식으로, 또는 MLC 방식에 따른 프로그램 방식을 SLC 방식으로 각각 변경할 수 있다. 이로써, 메모리 컨트롤러(100a)는 비교적 신뢰성이 보장되는 데이터 프로그램 방식을 선택할 수 있고, 이를 통해 메모리 시스템(10a)의 수명이 개선될 수 있다.
다음, FPGA(200a)는 제2 ECC 엔진(212a)의 제2 ECC 인코딩에 따라 생성되는 제2 ECC 패리티 비트 수를 변경할 수 있다(S230). S220 단계에서 프로그램 방식의 변경으로 저장 데이터의 용량이 감소됨에 따라, FPGA(200a)는 제2 ECC 인코딩에 따라 생성되는 제2 ECC 패리티 비트 수를 감소시킬 수 있다. FPGA(200a)는 변경된 제2 ECC 패리티 비트 수에 기반하여 데이터에 대해 제2 ECC 인코딩을 수행할 수 있다(S240). 예를 들어, 제2 ECC 인코딩이 수행된 데이터는 메모리 컨트롤러(100a)에 구비된 제1 ECC 엔진(112a)에서 제1 ECC 인코딩이 더 수행된 다음 메모리 장치(300a)로 출력되고, 메모리 장치(300a)는 수신한 데이터를 메모리 셀 어레이(310a)에 저장할 수 있다(S250).
도 12는 본 개시의 다른 예시적 실시 예에 따른 메모리 시스템을 나타내는 블록도이다. 도 12에 개시된 구성 중, 도 2와 중복되는 구성에 대한 설명은 생략하기로 한다.
도 12를 참조하면, 제1 데이터 처리기(110d)는 제1 암호화기/복호화기(encryptor/decryptor)(117d)를 포함할 수 있다. 또한, 제2 데이터 처리기(210d)는 제2 암호화기/복호화기(217d)를 포함할 수 있다. 예시적 실시 예에 있어서, 제1 암호화기/복호화기(117d)는 제1 인터페이스(IF_1d) 및 제2 인터페이스(IF_2d) 중 하나로부터 수신한 데이터에 대한 제1 암호화 동작을 수행하고, 메모리 장치(300d)로부터 독출된 데이터(DTd')에 대한 제1 복호화 동작을 수행할 수 있다. 또한, 예시적 실시 예에 있어서, 제2 암호화기/복호화기(217d)는 제5 인터페이스(IF_5d)를 통해 수신한 데이터(DTd)에 대한 제2 암호화 동작을 수행하고, 제3 인터페이스(IF_3d)를 통해 수신한 데이터에 대한 제2 복호화 동작을 수행할 수 있다. 예를 들어, 제1 암호화기/복호화기(117d) 및 제2 암호화기/복호화기(217d)는 각각 MD5(Message-Digest algorithm), SHA(Secure Hash Algorithm), RSA(Rivest Shamir Adleman), AES(Advanced Encryption Standard), DES(Data Encryption Standard) 등 다양한 알고리즘에 기반하여 암호화 및 복호화 동작을 수행할 수 있다.
예시적 실시 예에 있어서, 메모리 시스템(10d)은 외부로부터 수신한 데이터(DTd)에 대해 제2 암호화 동작 및 제1 암호화 동작을 순차적으로 수행하여 메모리 셀 어레이(310d)에 저장할 수 있다. 일 예로, 제5 인터페이스(IF_5d)를 통해 수신한 데이터(DTd)에 대해 제2 암호화기/복호화기(217d)가 제2 암호화 동작을 수행하고, 이를 제3 인터페이스(IF_3d)를 통해 메모리 컨트롤러(100d)로 출력할 수 있다. 메모리 컨트롤러(100d)는 제1 인터페이스(IF_1d)를 통해 제2 암호화 동작이 수행된 데이터를 수신하고, 이에 대해 제1 암호화기/복호화기(117d)에서 제1 암호화 동작을 수행할 수 있다.
예시적 실시 예에 있어서, 메모리 셀 어레이(310d)에서 독출된 데이터(DTd')에 대해, 제1 암호화기/복호화기(117d)에서 제1 복호화 동작이 수행되고 그 다음 제2 암호화기/복호화기(217d)에서 제2 복호화 동작이 수행될 수 있다. 다른 예시적 실시 예에 있어서, 메모리 셀 어레이(310d)에서 독출된 데이터(DTd')에 대해, 메모리 컨트롤러(100d)는 제1 암호화기/복호화기(117d)를 바이패스하여 FPGA(200d)로 출력하고, 제2 암호화기/복호화기(217d)에서 제1 및 제2 복호화 동작을 한번에 수행할 수도 있다.
도 13은 본 개시의 다른 예시적 실시 예에 따른 메모리 시스템을 나타내는 블록도이다. 도 13에 개시된 구성 중, 도 2와 중복되는 구성에 대한 설명은 생략하기로 한다.
도 13을 참조하면, 제1 데이터 처리기(110e)는 제1 연산기(118e)를 포함할 수 있다. 또한, 제2 데이터 처리기(210f)는 제2 연산기(218e)를 포함할 수 있다. 예시적 실시 예에 있어서, 제1 연산기(118e)는 제1 인터페이스(IF_1e) 및 제2 인터페이스(IF_2e) 중 하나로부터 수신한 데이터 또는 메모리 장치(300e)로부터 독출된 데이터(DTe')에 대한 제1 연산 동작을 수행할 수 있다. 또한, 예시적 실시 예에 있어서, 제2 연산기(218e)는 제5 인터페이스(IF_5e)를 통해 수신한 데이터(DTe) 또는 제3 인터페이스(IF_3e)를 통해 수신한 데이터에 대한 제2 연산 동작을 수행할 수 있다.
제1 연산기(118e)는 제1 복잡도를 갖는 제1 연산 동작을 수행하고, 제2 연산기(218e)는 제2 복잡도를 갖는 제2 연산 동작을 수행할 수 있다. 예시적 실시 예에 있어서, 제2 연산 동작의 제2 복잡도는 제1 연산 동작의 제1 복잡도보다 높을 수 있다. 예를 들어, 제1 연산기(118e)는 데이터에 대한 덧셈, 곱셈, 나눗셈 등의 사칙연산을 지원할 수 있다. 또한, 제2 연산기(218e)는 데이터에 대하여, exponential 함수, sin/cos 함수 등 다양한 연산을 지원할 수 있다.
예를 들어, 데이터 독출 시 낮은 복잡도의 연산이 요구되는 경우, 메모리 셀 어레이(310e)에서 독출된 데이터(DTe')는 제1 연산기(118e)에서 제1 연산 동작이 수행되고, 제2 인터페이스(IF_2e), 제4 인터페이스(IF_4e) 및 제5 인터페이스(IF_5e)를 통해 외부로 출력될 수 있다. 다른 예로, 데이터 독출 시 높은 복잡도의 연산이 요구되는 경우, 메모리 셀 어레이(310e)에서 독출된 데이터(DTe')는 제1 연산기(118e)에서 제1 연산 동작이 수행되고, 제1 인터페이스(IF_1e)를 통해 FPGA(200e)로 출력될 수 있다. FPGA(200e)는 제3 인터페이스(IF_3e)를 통해 수신한 데이터를 제2 연산기(218e)를 통해 제2 연산 동작을 수행하고, 제5 인터페이스(IF_5e)를 통해 외부로 출력할 수 있다. 이에 따라, 제1 인터페이스(IF_1e) 및 제3 인터페이스(IF_3e) 사이에 송/수신되는 데이터는, 제2 인터페이스(IF_2e) 및 제4 인터페이스(IF_4e) 사이에 송/수신되는 데이터와 상이한 포맷을 가질 수 있다.
도 14는 본 개시의 다른 예시적 실시 예에 따른 메모리 시스템을 나타내는 블록도이다. 도 14에 개시된 구성 중, 도 2와 중복되는 구성에 대한 설명은 생략하기로 한다.
도 14를 참조하면, 제1 데이터 처리기(110f)는 제1 랜더마이저(randomizer)(119f)를 포함할 수 있다. 또한, 제2 데이터 처리기(210f)는 제2 랜더마이저(219f)를 포함할 수 있다. 예시적 실시 예에 있어서, 제1 랜더마이저(119f)는 제1 인터페이스(IF_1f) 및 제2 인터페이스(IF_2f) 중 하나로부터 수신한 데이터에 대한 제1 랜더마이즈 동작을 수행하고, 메모리 장치(300f)로부터 독출된 데이터(DTf')에 대한 제1 디랜더마이즈 동작을 수행할 수 있다. 또한, 예시적 실시 예에 있어서, 제2 랜더마이저(219f)는 제5 인터페이스(IF_5f)를 통해 수신한 데이터(DTf)에 대한 제2 랜더마이즈 동작을 수행하고, 제3 인터페이스(IF_3f)를 통해 수신한 데이터에 대한 제2 디랜더마이즈 동작을 수행할 수 있다. 예를 들어 데이터는, 제1 및 제2 랜더마이즈 동작을 통해 랜덤성이 부가되고, 제1 및 제2 디랜더마이즈 동작을 통해 제1 및 제2 랜더마이즈 동작을 통해 부가된 랜덤성을 제거할 수 있다.
예시적 실시 예에 있어서, 메모리 시스템(10f)은 외부로부터 수신한 데이터(DTf)에 대해 제2 랜더마이즈 동작 및 제1 랜더마이즈 동작을 순차적으로 수행하여 메모리 셀 어레이(310f)에 저장할 수 있다. 일 예로, 제5 인터페이스(IF_5f)를 통해 수신한 데이터(DTf)에 대해 제2 랜더마이저(219f)가 제2 랜더마이즈 동작을 수행하고, 이를 제3 인터페이스(IF_3f)를 통해 메모리 컨트롤러(100f)로 출력할 수 있다. 메모리 컨트롤러(100f)는 제1 인터페이스(IF_1f)를 통해 제2 랜더마이즈 동작이 수행된 데이터를 수신하고, 이에 대해 제1 랜더마이저(119f)에서 제1 랜더마이즈 동작을 수행할 수 있다.
예시적 실시 예에 있어서, 메모리 셀 어레이(310f)에서 독출된 데이터(DTf')에 대해, 제1 랜더마이즈(119f)에서 제1 디랜더마이즈 동작이 수행되고 그 다음 제2 랜더마이저(219f)에서 제2 디랜더마이즈 동작이 수행될 수 있다. 다른 예시적 실시 예에 있어서, 메모리 셀 어레이(310f)에서 독출된 데이터(DTf')에 대해, 메모리 컨트롤러(100f)는 제1 랜더마이저(119f)를 바이패스하여 FPGA(200f)로 출력하고, 제2 랜더마이저(219f)에서 제1 및 제2 디랜더마이즈 동작을 한번에 수행할 수도 있다.
도 15는 본 개시의 다른 예시적 실시 예에 따른 메모리 시스템을 나타내는 블록도이다. 도 15에 개시된 구성 중, 도 2와 중복되는 구성에 대한 설명은 생략하기로 한다.
도 15를 참조하면, 제2 데이터 처리기(210g)는 RAID(Redundant Array of Independent Disks) 컨트롤러(221g)를 포함할 수 있다. 예를 들어, 메모리 장치(300g)는 RAID 방식에 따라 패리티들을 데이터와 함께 저장하고, RAID 컨트롤러(221g)는 메모리 셀 어레이(310g) 등 메모리 장치(300g)에 물리적인 에러가 발생하는 경우 패리티 데이터를 사용하여 손상된 데이터를 복구할 수 있다.
예시적 실시 예에 있어서, 메모리 장치(300g)에 물리적인 에러가 발생한 경우, 메모리 컨트롤러(100g)는 독출 데이터(DTg')를 바이패스하고 제1 인터페이스(IF_1g)를 통해 FPGA(200g)로 출력할 수 있다. FPGA(200g)는 제3 인터페이스(IF_3g)를 통해 입력 받은 독출 데이터(DTg')를 RAID 컨트롤러(221g)에 전달하고, RAID 컨트롤러(221g)는 RAID 패리티 데이터에 기반하여 손상된 독출 데이터(DTg')를 복구할 수 있다. 본 실시 예에서는 RAID 컨트롤러(221g)가 패리티 기반 RAID 방식에 기반하여 동작하는 것으로 설명되었으나, 다른 실시 예에서 RAID 컨트롤러(221g)는 미러링(mirroring) 기반 RAID 방식에 기반하여 동작할 수 있음은 충분히 이해될 것이다.
도 16은 본 개시의 다른 예시적 실시 예에 따른 메모리 시스템을 나타내는 블록도이다.
도 16을 참조하면, 메모리 시스템(10h)은 메모리 컨트롤러(100f) 및 메모리 장치(300h)를 포함하고, 메모리 컨트롤러(100f)는 제1 데이터 처리기(110h), 제2 데이터 처리기(210h), 제1 인터페이스(IF_1h) 및 제2 인터페이스(IF_2h)를 포함할 수 있다. 다시 말해서, 전술한 실시 예들에 비해, 메모리 시스템(10h)은 메모리 컨트롤러(100f)가 제1 및 제2 데이터 처리기(110h, 210h)를 모두 포함할 수 있다. 이로써, 예를 들어 노멀 경로에서 기입 데이터(DTh)는 제2 인터페이스(IF_2h), 제1 데이터 처리기(110h) 및 제1 인터페이스(IF_1h)를 통해 메모리 장치(300h)로 전달될 수 있다. 또한, 높은 신뢰성 경로에서 기입 데이터(DTh)는 제2 인터페이스(IF_2h), 제2 데이터 처리기(210h), 제1 데이터 처리기(110h) 및 제1 인터페이스(IF_1h)를 통해 메모리 장치(300h)로 전달될 수 있다.
도 17은 본 개시의 다른 예시적 실시 예에 따른 메모리 시스템을 나타내는 블록도이다. 도 17에 개시된 구성 중, 도 2와 중복되는 구성에 대한 설명은 생략하기로 한다.
도 17을 참조하면, 제1 데이터 처리기(110i)는 제1 압축기(compressor)(115i)를 포함할 수 있다. 또한, 제2 데이터 처리기(210i)는 제2 압축기(215i)를 포함할 수 있다. 예시적 실시 예에 있어서, 제1 압축기(115i)는 제1 인터페이스(IF_1i) 및 제2 인터페이스(IF_2i) 중 하나로부터 수신한 데이터에 대한 제1 압축 동작을 수행하고, 메모리 장치(300i)로부터 독출된 데이터(DTi')에 대한 제1 압축해제 동작을 수행할 수 있다. 또한, 예시적 실시 예에 있어서, 제2 압축기(215i)는 제5 인터페이스(IF_5i)를 통해 수신한 데이터(DTi)에 대한 제2 압축 동작을 수행하고, 제3 인터페이스(IF_3i)를 통해 수신한 데이터에 대한 제2 압축해제 동작을 수행할 수 있다.
예시적 실시 예에 있어서, 메모리 시스템(10i)은 외부로부터 수신한 데이터(DTi)에 대해 제2 압축 동작 및 제2 압축 동작을 순차적으로 수행하여 메모리 셀 어레이(310i)에 저장할 수 있다. 일 예로, 제5 인터페이스(IF_5i)를 통해 수신한 데이터(DTi)에 대해 제2 압축기(215i)가 제2 압축 동작을 수행하고, 이를 제3 인터페이스(IF_3i)를 통해 메모리 컨트롤러(100i)로 출력할 수 있다. 메모리 컨트롤러(100i)는 제1 인터페이스(IF_1i)를 통해 제1 압축 동작이 수행된 데이터를 수신하고, 이에 대해 제1 압축기(115i)에서 제1 압축 동작을 수행할 수 있다.
예시적 실시 예에 있어서, 메모리 셀 어레이(310i)에서 독출된 데이터(DTi')에 대해, 제1 압축기(115i)에서 제1 압축해제 동작이 수행되고 그 다음 제2 압축기(215i)에서 제2 압축해제 동작이 수행될 수 있다. 다른 예시적 실시 예에 있어서, 메모리 셀 어레이(310f)에서 독출된 데이터(DTi')에 대해, 메모리 컨트롤러(100i)는 제1 압축기(115i)를 바이패스하여 FPGA(200i)로 출력하고, 제2 압축기(215i)에서 제1 및 제2 압축해제 동작을 한번에 수행할 수도 있다.
도 18은 본 개시의 예시적 실시 예들에 따른 메모리 시스템을 SSD 시스템에 적용한 예를 나타내는 블록도이다.
도 18을 참조하면, SSD 시스템(1000)은 호스트(1100) 및 SSD(1200)를 포함할 수 있다. SSD(1200)는 신호 커넥터(signal connector)를 통해 호스트(1100)와 신호를 주고 받으며, 전원 커넥터(power connector)를 통해 전원을 입력 받을 수 있다. SSD(1200)는 SSD 컨트롤러(1210) 및 복수의 메모리 장치들(1230, 1240, 1250)을 포함할 수 있다. 이 때, SSD 컨트롤러(1200)는 FPGA(1211) 및 메모리 컨트롤러(1212)를 포함할 수 있다. 예시적 실시 예에 따라, 메모리 컨트롤러(1212) 및 FPGA(1211)는 각각 도 1 내지 도 17에 도시된 제1 및 제2 데이터 처리기를 포함할 수 있다. 이로써, SSD 시스템(1000)은 에러 정정 능력 정도나 데이터 기입/독출 방식에 대한 자율성을 지원할 수 있다. 이를 통해, 예를 들어 유저의 선호에 기반하여 데이터에 대한 에러 정정 능력이 향상될 수 있고, 이에 기인하여 SSD 시스템(1000)의 수명이 더욱 개선될 수 있다.
본 개시의 예시적 실시 예에 따른 메모리 시스템은 SSD 시스템(1000)뿐만 아니라, 메모리 카드 시스템, 컴퓨팅 시스템, UFS 등에 탑재되거나 적용될 수 있다. 또한, 본 개시의 예시적 실시 예에 따른 메모리 시스템은 비휘발성 메모리가 탑재되는 다양한 종류의 전자 시스템에 적용될 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시 예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시 예들을 설명하였으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 메모리 장치;
    제1 인터페이스, 제2 인터페이스, 및 상기 메모리 장치로부터 독출된 독출 데이터에 대해 제1 데이터 처리를 수행하여 상기 제1 및 제2 인터페이스 중 하나로 제1 에러 정정된 데이터를 출력하는 제1 데이터 처리기를 포함하는 메모리 컨트롤러; 및
    상기 제1 인터페이스와 연결된 제3 인터페이스, 상기 제2 인터페이스와 연결된 제4 인터페이스, 외부와 연결된 제5 인터페이스, 및 상기 제3 인터페이스로부터 수신한 상기 제1 에러 정정된 데이터에 대해 제2 데이터 처리를 수행하여 상기 제5 인터페이스로 제2 에러 정정된 데이터를 출력하는 제2 데이터 처리기를 포함하는 FPGA(Field Programmable Gate Array)를 포함하는 메모리 시스템.
  2. 제1 항에 있어서,
    상기 제2 데이터 처리기는, 상기 제3 인터페이스로부터 수신한 데이터에 대해 ECC(Error Correction Code) 디코딩을 수행하여 출력하는 제2 ECC 엔진을 더 포함하는 메모리 시스템.
  3. 제2 항에 있어서,
    상기 제1 데이터 처리기는, 상기 제1 데이터 처리로서 상기 독출 데이터를 바이패스(bypass)하여 상기 제1 인터페이스로 전달하고,
    상기 제2 ECC 엔진은, 상기 제2 데이터 처리로서 상기 독출 데이터에 대해 ECC 디코딩을 수행하는 것을 특징으로 하는 메모리 시스템.
  4. 제2 항에 있어서,
    상기 제1 데이터 처리기는, 상기 제1 및 제2 인터페이스 중 하나로부터 수신한 데이터에 대해 제1 H-matrix에 따라 ECC 인코딩을 수행하여 상기 메모리 장치로 출력하는 제1 ECC 엔진을 더 포함하고,
    상기 제2 ECC 엔진은, 상기 제1 H-matrix에 기반하여 상기 ECC 디코딩을 수행하는 것을 특징으로 하는 메모리 시스템.
  5. 제1 항에 있어서,
    상기 제1 데이터 처리기는, 상기 제1 데이터 처리로서 상기 독출 데이터에 대해 복호화 동작을 수행하여 상기 제1 인터페이스로 출력하는 제1 복호화기를 더 포함하고,
    상기 제2 데이터 처리기는, 상기 제2 데이터 처리로서 상기 제3 인터페이스로부터 수신한 데이터에 대해 복호화 동작을 수행하여 상기 제5 인터페이스로 출력하는 제2 복호화기를 더 포함하는 메모리 시스템.
  6. 제1 항에 있어서,
    상기 제1 데이터 처리기는, 상기 제1 데이터 처리로서 상기 독출 데이터에 대해 제1 복잡도를 갖는 연산 동작을 수행하여 상기 제1 인터페이스로 출력하는 제1 연산기를 더 포함하고,
    상기 제2 데이터 처리기는, 상기 제2 데이터 처리로서 상기 제3 인터페이스로부터 수신한 데이터에 대해 상기 제1 복잡도보다 높은 제2 복잡도를 갖는 연산 동작을 수행하여 상기 제5 인터페이스로 출력하는 제2 연산기를 더 포함하는 메모리 시스템.
  7. 제1 항에 있어서,
    상기 제1 데이터 처리기는, 상기 제1 데이터 처리로서 상기 독출 데이터에 대해 디랜더마이즈(derandomize) 동작을 수행하여 출력하는 제1 랜더마이저를 더 포함하고,
    상기 제2 데이터 처리기는, 상기 제2 데이터 처리로서 상기 제3 인터페이스로부터 수신한 데이터에 대해 디랜더마이즈 동작을 수행하여 상기 제5 인터페이스로 출력하는 제2 랜더마이저를 더 포함하는 메모리 시스템.
  8. 제1 항에 있어서,
    상기 제2 데이터 처리기는, 상기 제2 데이터 처리로서 상기 제3 및 제4 인터페이스 중 하나로부터 수신한 데이터에 대해 RAID(Redundant Array of Independent Disks) 디코딩 동작을 수행하여 상기 제5 인터페이스로 출력하는 RAID 컨트롤러를 더 포함하는 메모리 시스템.
  9. 제1 항에 있어서,
    상기 제4 인터페이스는 상기 제2 인터페이스로부터 수신한 데이터를 상기 제5 인터페이스로 출력하는 것을 특징으로 하는 메모리 시스템.
  10. 메모리 셀 어레이를 포함하는 메모리 장치;
    상기 메모리 셀 어레이로부터 독출된 데이터를 바이패스 또는 제1 에러 정정된 데이터를 생성하여 출력하거나, 입력 받은 데이터에 제1 데이터 처리 동작을 수행하여 상기 메모리 장치로 출력하는 제1 데이터 처리기를 포함하는 메모리 컨트롤러; 및
    상기 메모리 컨트롤러와 연결되는 인터페이스, 및 외부로부터 입력 받은 프로그램에 기반하여, 상기 인터페이스를 통해 수신한 상기 제1 에러 정정된 데이터에 대해 제2 데이터 처리 동작을 수행하여 호스트로 출력하는 제2 데이터 처리기를 포함하는 FPGA를 포함하는 메모리 시스템.
  11. 제10 항에 있어서,
    상기 제1 데이터 처리기는,
    상기 입력 받은 데이터에 제1 데이터 처리 동작으로서 제1 ECC 인코딩 동작을 수행하는 제1 ECC 엔진을 더 포함하는 메모리 시스템.
  12. 제11 항에 있어서,
    상기 제1 ECC 엔진은,
    상기 메모리 셀 어레이로부터 독출된 데이터에 ECC 디코딩 동작을 수행하여 상기 인터페이스를 통해 상기 FPGA로 출력하고,
    상기 FPGA는 상기 인터페이스를 통해 상기 ECC 디코딩 동작이 수행된 데이터를 수신하고, 상기 ECC 디코딩 동작이 수행된 데이터를 상기 호스트로 출력하는 것을 특징으로 하는 메모리 시스템.
  13. 제11 항에 있어서,
    상기 제2 데이터 처리기는,
    상기 호스트로부터 수신한 데이터에 제2 ECC 인코딩 동작을 수행하여 상기 인터페이스를 통해 상기 메모리 컨트롤러로 출력하는 제2 ECC 엔진을 더 포함하는 메모리 시스템.
  14. 제10 항에 있어서,
    상기 제2 데이터 처리기는,
    상기 인터페이스를 통해 수신한 데이터의 연산을 위한 신호처리를 수행하는 신호 처리기; 및
    상기 신호처리가 수행된 데이터에 대한 디랜더마이즈 동작을 수행하여 상기 호스트로 출력하는 랜더마이저를 더 포함하는 메모리 시스템.
  15. 제10 항에 있어서,
    상기 제2 데이터 처리기는,
    상기 인터페이스를 통해 수신한 데이터에 대해 ECC 디코딩 동작을 수행하여 상기 인터페이스를 통해 상기 메모리 컨트롤러로 출력하는 ECC 엔진을 더 포함하고,
    상기 제1 데이터 처리기는,
    상기 인터페이스로부터 수신한 데이터의 연산을 위한 신호처리를 수행하는 신호 처리기; 및
    상기 신호처리가 수행된 데이터에 대한 디랜더마이즈 동작을 수행하여 상기 FPGA로 출력하는 랜더마이저를 더 포함하는 메모리 시스템.
  16. 프로그램에 기반하여 동작하는 FPGA, 메모리 컨트롤러 및 메모리 장치를 포함하는 메모리 시스템의 동작 방법에 있어서,
    상기 FPGA가, 외부로부터 입력 받은 상기 프로그램에 따라, 상기 메모리 장치에 제1 데이터를 기입하기 위하여 제1 경로 및 제2 경로 중 하나를 식별하는 단계;
    상기 FPGA가, 상기 제2 경로를 식별함에 응답하여, 제1 데이터에 대해, 상기 프로그램에 기반하여 가변하는 ECC 패리티 비트를 생성하는 제2 ECC 인코딩을 수행하는 단계;
    상기 메모리 컨트롤러가, 상기 제2 ECC 인코딩이 수행된 제1 데이터에 대해 제1 ECC 인코딩을 수행하는 단계; 및
    상기 메모리 컨트롤러가, 상기 제1 ECC 인코딩이 수행된 제1 데이터를 제1 기입 방식에 따라 상기 메모리 장치에 저장하는 단계를 포함하는 메모리 시스템의 동작 방법.
  17. 제16 항에 있어서,
    상기 제2 ECC 인코딩을 수행하는 단계는 상기 FPGA가 제2 H-matrix에 기반하여 상기 제2 ECC 인코딩을 수행하고,
    상기 제1 ECC 인코딩을 수행하는 단계는 상기 메모리 컨트롤러가 상기 제2 H-matrix와 상이한 제1 H-matrix에 기반하여 상기 제1 ECC 인코딩을 수행하는 것을 특징으로 하는 메모리 시스템의 동작 방법.
  18. 제17 항에 있어서,
    상기 메모리 컨트롤러가, 상기 메모리 장치에 저장된 제1 데이터를 독출하는 단계; 및
    상기 FPGA가, 상기 제1 H-matrix 및 상기 제2 H-matrix를 포함하는 FPGA H-matrix에 기반하여 상기 독출된 제1 데이터에 대해 ECC 디코딩을 수행하는 단계를 더 포함하는 메모리 시스템의 동작 방법.
  19. 제16 항에 있어서,
    상기 메모리 컨트롤러가, 상기 제1 기입 방식을 상기 제1 기입 방식과 상이한 제2 기입 방식으로 변경하는 단계;
    상기 메모리 컨트롤러가, 상기 제2 기입 방식에 기반하여 상기 ECC 패리티 비트의 비트 수를 변경하는 단계;
    상기 FPGA가, 외부로부터 수신한 제2 데이터에 대해, 상기 비트 수가 변경된 ECC 패리티 비트를 생성하는 제2 ECC 인코딩을 수행하는 단계;
    상기 메모리 컨트롤러가, 상기 제2 ECC 인코딩이 수행된 제2 데이터에 대해 상기 제1 ECC 인코딩을 수행하는 단계; 및
    상기 메모리 컨트롤러가, 상기 제1 ECC 인코딩이 수행된 제2 데이터를 상기 제2 기입 방식에 따라 상기 메모리 장치에 저장하는 단계를 포함하는 메모리 시스템의 동작 방법.
  20. 제19 항에 있어서,
    상기 제1 기입 방식은, 상기 메모리 장치에 포함된 각 메모리 셀에 n 비트(n은 2 이상의 양의 정수) 데이터를 저장하는 데이터 기입 방식이고,
    상기 제2 기입 방식은, 상기 각 메모리 셀에 n-1 비트 데이터를 저장하는 데이터 기입 방식인 것을 특징으로 하는 메모리 시스템의 동작 방법.
KR1020180156277A 2018-12-06 2018-12-06 Fpga를 포함하는 메모리 시스템 및 이의 동작 방법 KR102645140B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020180156277A KR102645140B1 (ko) 2018-12-06 2018-12-06 Fpga를 포함하는 메모리 시스템 및 이의 동작 방법
US16/547,425 US11169874B2 (en) 2018-12-06 2019-08-21 Memory system including field programmable gate array (FPGA) and method of operating same
CN201911239438.4A CN111290705B (zh) 2018-12-06 2019-12-06 包括现场可编程门阵列的存储器系统及其操作方法
US17/499,499 US11669395B2 (en) 2018-12-06 2021-10-12 Memory system including field programmable gate array (FPGA) and method of operating same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180156277A KR102645140B1 (ko) 2018-12-06 2018-12-06 Fpga를 포함하는 메모리 시스템 및 이의 동작 방법

Publications (2)

Publication Number Publication Date
KR20200069110A KR20200069110A (ko) 2020-06-16
KR102645140B1 true KR102645140B1 (ko) 2024-03-07

Family

ID=70971914

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180156277A KR102645140B1 (ko) 2018-12-06 2018-12-06 Fpga를 포함하는 메모리 시스템 및 이의 동작 방법

Country Status (3)

Country Link
US (2) US11169874B2 (ko)
KR (1) KR102645140B1 (ko)
CN (1) CN111290705B (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102645140B1 (ko) * 2018-12-06 2024-03-07 삼성전자주식회사 Fpga를 포함하는 메모리 시스템 및 이의 동작 방법
KR102612588B1 (ko) * 2023-05-15 2023-12-12 메티스엑스 주식회사 프로그램가능 반도체 소자, 이를 포함하는 전자 장치, 및 프로그램가능 반도체 소자에 의해 연산을 수행하는 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100232550A1 (en) * 2009-03-15 2010-09-16 Lg Electronics Inc. Transmitting/receiving system and method of processing broadcasting signal in transmitting/receiving system

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100634436B1 (ko) * 2004-09-23 2006-10-16 삼성전자주식회사 멀티 칩 시스템 및 그것의 부트코드 페치 방법
KR100652386B1 (ko) * 2004-11-16 2006-12-06 삼성전자주식회사 호스트와 하드디스크 드라이브 사이의 어플리케이션공유에 의한 작업 효율 증대방법 및 장치
KR101079591B1 (ko) * 2006-11-21 2011-11-07 삼성전자주식회사 화상통화기능을 가진 디스플레이장치, 그 제어방법 및화상통화시스템
US8225181B2 (en) * 2007-11-30 2012-07-17 Apple Inc. Efficient re-read operations from memory devices
US8495465B1 (en) * 2009-10-15 2013-07-23 Apple Inc. Error correction coding over multiple memory pages
US8533564B2 (en) * 2009-12-23 2013-09-10 Sandisk Technologies Inc. System and method of error correction of control data at a memory device
KR101861247B1 (ko) * 2011-04-06 2018-05-28 삼성전자주식회사 메모리 컨트롤러, 이의 데이터 처리 방법, 및 이를 포함하는 메모리 시스템
JP5764392B2 (ja) * 2011-06-13 2015-08-19 株式会社メガチップス メモリコントローラ
US8862967B2 (en) 2012-03-15 2014-10-14 Sandisk Technologies Inc. Statistical distribution based variable-bit error correction coding
KR101997794B1 (ko) * 2012-12-11 2019-07-09 삼성전자주식회사 메모리 제어기 및 그것을 포함한 메모리 시스템
US9230687B2 (en) 2013-04-22 2016-01-05 International Business Machines Corporation Implementing ECC redundancy using reconfigurable logic blocks
KR102081588B1 (ko) * 2013-08-08 2020-02-26 삼성전자 주식회사 Ecc 디코더의 동작 방법 및 그것을 포함하는 메모리 컨트롤러
US9467477B2 (en) * 2013-11-06 2016-10-11 Intuit Inc. Method and system for automatically managing secrets in multiple data security jurisdiction zones
US9342402B1 (en) 2014-01-28 2016-05-17 Altera Corporation Memory interface with hybrid error detection circuitry for modular designs
US9419655B2 (en) 2014-04-04 2016-08-16 Seagate Technology Llc Error correction code (ECC) selection using probability density functions of error correction capability in storage controllers with multiple error correction codes
US9430326B2 (en) 2014-07-22 2016-08-30 HGST Netherlands B.V. Multiple ECC codeword sizes in an SSD
KR102214556B1 (ko) * 2014-08-19 2021-02-09 삼성전자주식회사 메모리 장치 및 모듈
US9798622B2 (en) 2014-12-01 2017-10-24 Intel Corporation Apparatus and method for increasing resilience to raw bit error rate
US10432353B2 (en) * 2014-12-04 2019-10-01 Samsung Display Co., Ltd. Memory-efficient methods of transporting error correction codes in a symbol encoded transmission stream
US9654148B2 (en) 2015-01-06 2017-05-16 Samsung Electronics Co., Ltd. Reconfigurable ECC for memory
US9772899B2 (en) * 2015-05-04 2017-09-26 Texas Instruments Incorporated Error correction code management of write-once memory codes
KR102496988B1 (ko) * 2016-02-19 2023-02-09 에스케이하이닉스 주식회사 반도체 메모리 장치의 컨트롤러 및 이의 동작 방법
US20170279464A1 (en) * 2016-03-22 2017-09-28 Lg Electronics Inc. Method of ldpc code encoding for reducing signal overhead and apparatus therefor
US10348333B2 (en) 2016-09-22 2019-07-09 Everspin Technologies, Inc. Two bit error correction via a field programmable gate array
KR102631351B1 (ko) * 2016-10-07 2024-01-31 삼성전자주식회사 피어-투 피어 통신을 수행할 수 있는 저장 장치와 이를 포함하는 데이터 저장 시스템
DE102018125297A1 (de) * 2017-11-17 2019-05-23 Samsung Electronics Co., Ltd. Speichereinrichtung, die Peer-to-Peer-Kommunikation mit externer Einrichtung ohne Eingriff eines Host durchführt
KR102557379B1 (ko) * 2018-10-23 2023-07-19 삼성전자주식회사 디스플레이장치, 그 제어방법 및 기록매체
KR102645140B1 (ko) * 2018-12-06 2024-03-07 삼성전자주식회사 Fpga를 포함하는 메모리 시스템 및 이의 동작 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100232550A1 (en) * 2009-03-15 2010-09-16 Lg Electronics Inc. Transmitting/receiving system and method of processing broadcasting signal in transmitting/receiving system

Also Published As

Publication number Publication date
CN111290705A (zh) 2020-06-16
KR20200069110A (ko) 2020-06-16
CN111290705B (zh) 2023-11-14
US20220035703A1 (en) 2022-02-03
US11669395B2 (en) 2023-06-06
US11169874B2 (en) 2021-11-09
US20200183785A1 (en) 2020-06-11

Similar Documents

Publication Publication Date Title
US9063857B2 (en) Memory system and error correction method
US9195541B2 (en) Controlling nonvolatile memory device and nonvolatile memory system
JP6284351B2 (ja) メモリ制御器及びそれを含むメモリシステム
CN107037982B (zh) Raid-6数据存储装置以及包括其的数据处理系统
US10923192B2 (en) Memory system and operating method thereof
US20130318420A1 (en) Code modulation encoder and decoder, memory controller including them, and flash memory system
US20200241956A1 (en) Memory system and operating method thereof
KR20130079850A (ko) 멀티-레벨 메모리 장치를 제어하는 메모리 제어기 및 그것의 에러 정정 방법
US10324785B2 (en) Decoder using low-density parity-check code and memory controller including the same
US10303394B2 (en) Memory system and operating method thereof
US11669395B2 (en) Memory system including field programmable gate array (FPGA) and method of operating same
US11599282B2 (en) Memory system for updating firmware when SPO occurs and operating method thereof
KR20220093982A (ko) 파편화율을 이용하는 메모리 컨트롤러, 및 스토리지 장치 및 이의 동작 방법
US20170345456A1 (en) Programmable error-correcting code for a host device
US20190026222A1 (en) Controller and operation method thereof
US11194512B2 (en) Data storage device which selectively performs a cache read or a normal read operation depending on work load and operating method thereof
KR20200128825A (ko) 분리된 rpmb 기능을 가지는 스토리지 시스템 및 그 구동 방법
US11144246B2 (en) Memory system using available bad block based on data storage reliability and operating method thereof
US20240193041A1 (en) Operation method of memory controller configured to control memory device
EP4386556A1 (en) Operation method of memory controller configured to control memory device
TW202301074A (zh) 控制充電電壓的方法
KR20180091268A (ko) Bch 디코더 및 이의 동작 방법

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