KR102547251B1 - 비휘발성 메모리 장치를 제어하는 제어기, 그것을 포함하는 저장 장치 및 그것의 동작 방법 - Google Patents

비휘발성 메모리 장치를 제어하는 제어기, 그것을 포함하는 저장 장치 및 그것의 동작 방법 Download PDF

Info

Publication number
KR102547251B1
KR102547251B1 KR1020220006688A KR20220006688A KR102547251B1 KR 102547251 B1 KR102547251 B1 KR 102547251B1 KR 1020220006688 A KR1020220006688 A KR 1020220006688A KR 20220006688 A KR20220006688 A KR 20220006688A KR 102547251 B1 KR102547251 B1 KR 102547251B1
Authority
KR
South Korea
Prior art keywords
read
host
data
dma
memory
Prior art date
Application number
KR1020220006688A
Other languages
English (en)
Other versions
KR20230076709A (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 US17/740,794 priority Critical patent/US11841767B2/en
Priority to TW111122779A priority patent/TW202321926A/zh
Priority to EP22181530.1A priority patent/EP4187398A1/en
Priority to CN202211303596.3A priority patent/CN116168748A/zh
Publication of KR20230076709A publication Critical patent/KR20230076709A/ko
Application granted granted Critical
Publication of KR102547251B1 publication Critical patent/KR102547251B1/ko
Priority to US18/501,689 priority patent/US20240061746A1/en

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • 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
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명에 따른 저장 장치의 동작 방법은, 호스트 장치로부터 호스트 리드 커맨드를 수신하는 단계, 상기 호스트 리드 커맨드에 대응하는 리드 패스가 제 1 DMA(Direct Memory Access) 리드 패스 인지를 판별하는 단계, 및 상기 리드 패스가 상기 제 1 DMA 리드 패스 일 때, 호스트 DMA 매니저에 의해 에러 정정 회로의 출력 버퍼의 리드 데이터를 상기 호스트 장치로 직접 출력하는 단계를 포함할 수 있다.

Description

비휘발성 메모리 장치를 제어하는 제어기, 그것을 포함하는 저장 장치 및 그것의 동작 방법{CONTROLLER FOR CONTROLLING NONVOLATILE MEMORY DEVICE, STORAGE DEVICE HAVING THE SAME, AND OPERATING METHOD THEREOF}
본 발명은 비휘발성 메모리 장치를 제어하는 제어기, 그것을 포함하는 저장 장치, 및 그것의 동작 방법에 관한 것이다.
일반적으로, 비휘발성 메모리 장치를 구비한 저장 장치는 USB(Universal Serial Bus) 드라이브, 디지털 카메라, 이동 전화기, 스마트폰, 태블릿, PC, 메모리 카드 및 SSD(Solid State Drive) 등에서 널리 사용되고 있다. 저장 장치는 많은 양의 데이터를 저장하거나 이동시키는데 유용하게 사용되고 있다. 최근 저장 장치는 소형화되어 전자 장치에 임베디드 형태로 구현되고 있다.
본 발명의 목적은 리드 동작에서 리드 레이턴시를 줄이는 제어기 및 그것을 갖는 저장 장치 및 그것의 동작 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 저장 장치의 동작 방법은, 호스트 장치로부터 호스트 리드 커맨드를 수신하는 단계; 상기 호스트 리드 커맨드에 대응하는 리드 패스가 제 1 DMA(Direct Memory Access) 리드 패스 인지를 판별하는 단계; 및 상기 리드 패스가 상기 제 1 DMA 리드 패스 일 때, 호스트 DMA 매니저에 의해 에러 정정 회로의 출력 버퍼의 리드 데이터를 상기 호스트 장치로 직접 출력하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 비휘발성 메모리 장치를 제어하는 제어기의 동작 방법은, 호스트 장치로부터 리드 요청을 수신하는 단계; 상기 리드 요청의 속성 혹은 사용자의 요청에 따라 리드 패스를 판별하는 단계; 상기 리드 요청에 대응하는 리드 커맨드를 상기 비휘발성 메모리 장치로 전송하는 단계; 상기 비휘발성 메모리 장치로부터 상기 리드 커맨드에 대응하는 리드 데이터를 수신하는 단계; 상기 리드 데이터에 대한 에러 정정 동작을 수행하는 단계; 상기 리드 패스에 따라 1-스테이지 DMA(Direct Memory Access) 동작 및 2-스테이지 DMA 동작 중 어느 하나를 수행하는 단계; 및 상기 1-스테이지 DMA 동작 및 상기 2-스테이지 DMA 동작 중 상기 어느 하나를 수행함으로써 상기 에러 정정된 리드 데이터를 상기 호스트 장치로 전송하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 저장 장치는 적어도 하나의 비휘발성 메모리 장치; 및 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 제어기를 포함하고, 상기 제어기는, 호스트 장치에 연결되는 호스트 인터페이스 회로; 상기 적어도 하나의 비휘발성 메모리 장치에 연결되는 비휘발성 인터페이스 회로; 상기 적어도 하나의 비휘발성 메모리 장치로부터 읽혀진 리드 데이터의 에러를 정정하고, 리드 패스가 제 1 리드 패스일 때 호스트 DMA(Direct Memory Access) 매니저에 의해 출력 버퍼의 제 1 리드 데이터를 상기 호스트 인터페이스 회로로 출력하는 에러 정정 회로; 및 상기 리드 패스가 제 2 리드 패스일 때 상기 에러 정정 회로의 상기 출력 버퍼로부터 상기 제 1 리드 데이터를 수신하고, 상기 호스트 DMA 매니저에 의해 제 2 리드 데이터를 상기 호스트 인터페이스 회로로 출력하는 버퍼 메모리를 포함할 수 있다.
본 발명의 실시 예에 따른 적어도 하나의 비휘발성 메모리 장치를 제어하는 제어기는, 적어도 하나의 프로세서; 호스트 장치와 인터페이싱을 수행하는 호스트 인터페이스 회로; 상기 적어도 하나의 비휘발성 메모리 장치와 인터페이싱을 수행하는 비휘발성 메모리 인터페이스 회로; 구동하는데 필요한 데이터를 임시로 저장하는 버퍼 메모리; 상기 적어도 하나의 비휘발성 메모리 장치로부터 읽혀진 데이터의 에러를 정정하는 에러 정정 회로; 상기 호스트 인터페이스 회로를 통하여 상기 에러 정정 회로의 출력 버퍼 혹은 상기 버퍼 메모리에 직접 접근하는 호스트 DMA(Direct Memory Access) 회로; 및 상기 비휘발성 메모리 인터페이스 회로를 통하여 상기 적어도 하나의 비휘발성 메모리 장치에 직접 접근하는 NVM(Non-Volatile Memory) DMA 회로를 포함하고, 리드 패스가 1-스테이지 DMA 동작에 대응할 때, 상기 호스트 DMA 회로는 상기 에러 정정 회로의 상기 출력 버퍼의 리드 데이터를 상기 호스트 인터페이스로 출력하고, 상기 리드 패스가 2-스테이지 DMA 동작에 대응할 때 상기 호스트 DMA 회로는 상기 에러 정정 회로의 상기 출력 버퍼의 리드 데이터를 상기 버퍼 메모리로 출력하고, 상기 버퍼 메모리의 데이터를 상기 호스트 인터페이스 회로로 출력하는 것을 특징으로 한다.
본 발명의 실시 예에 따른 비휘발성 메모리 장치를 제어하는 제어기, 그것을 포함하는 저장 장치 및 그것의 동작 방법은, 리드 동작에서 리드 요청의 속성 및 사용자의 요청에 따라 리드 패스를 최적화함으로써 리드 레이턴시를 줄이고, 그에 따른 성능 향상을 기대할 수 있다.
이하에 첨부되는 도면들은 본 실시 예에 관한 이해를 돕기 위한 것으로, 상세한 설명과 함께 실시 예들을 제공한다.
도 1은 본 발명의 실시 예에 따른 호스트 시스템(10)를 예시적으로 보여주는 도면이다.
도 2는 본 발명의 실시 예에 따른 비휘발성 메모리 장치(100)를 예시적으로 보여주는 도면이다.
도 3은 본 발명의 실시 예에 따른 메모리 블록(BLKi)의 회로도를 예시적으로 보여주는 도면이다.
도 4는 본 발명의 실시 예에 따른 제어기(200)를 예시적으로 보여주는 도면이다.
도 5는 본 발명의 실시 예에 따른 저장 장치(12)의 쓰기 패스를 예시적으로 보여주는 도면이다.
도 6a 및 도 6b는 본 발명의 실시 예에 따른 저장 장치(12)의 리드 패스를 예시적으로 보여주는 도면들이다.
도 7은 본 발명의 실시 예에 따른 제어기(200)의 리드 패스의 선택적 운용 방식을 예시적으로 보여주는 도면이다.
도 8은 본 발명의 실시 예에 따른 저장 장치(12)의 동작 방법을 예시적으로 보여주는 흐름도이다. 도 8을 참조하면, 저장 장치(12)는 다음과 같이 동작할 수 있다.
도 9는 본 발명의 실시 예에 따른 제어기의 동작 방법을 예시적으로 보여주는 흐름도이다.
도 10은 본 발명의 다른 실시 예에 따른 제어기의 동작 방법을 예시적으로 보여주는 흐름도이다.
도 11은 본 발명의 또 다른 실시 예에 따른 제어기의 동작 방법을 예시적으로 보여주는 도면이다.
도 12는 본 발명의 실시 예에 따른 호스트 시스템의 동작 방법을 예시적으로 보여주는 래더다이어그램이다.
도 13은 본 발명의 다른 실시 예에 따른 호스트 시스템의 동작 방법을 예시적으로 보여주는 래더다이어그램이다.
도 14는 본 발명의 실시 예에 따른 UFS 시스템(2000)을 예시적으로 보여주는 도면이다.
도 15는 본 발명의 실시 예에 따른 데이터 센터를 예시적으로 보여주는 도면이다.
아래에서는 도면들을 이용하여 본 발명의 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시 할 수 있을 정도로 본 발명의 내용을 명확하고 상세하게 기재할 것이다.
본 발명의 실시 예에 따른 비휘발성 메모리 장치를 제어하는 제어기, 그것을 포함하는 저장 장치 및 그것의 동작 방법은, 메모리 제어기의 버퍼 최적화와 랜덤 리드(random read) 성능 개선을 위한 버퍼 운용 기법을 개시한다. 본 발명의 실시 예에 따른 비휘발성 메모리 장치를 제어하는 제어기, 그것을 포함하는 저장 장치 및 그것의 동작 방법은, 메모리 제어기의 버퍼를 최적화하는 버퍼 운용 기법을 통하여 랜덤 리드 성능을 향상시킬 수 있다. 본 발명의 실시 예에 따른 비휘발성 메모리 장치를 제어하는 제어기, 그것을 포함하는 저장 장치 및 그것의 동작 방법은, 호스트 리드 요청의 속성에 따라 1-스테이지(1-Stage) DMA(Direct Memory Access) 리드 및 2-스테이지 DMA 리드 중에서 하나를 선택하여 리드 동작을 수행할 수 있다. 이로써, 랜덤 리드 레이턴시(latency)가 감소될 수 있다. 또한, 본 발명의 저장 장치는 버퍼 크기 감소로 인한 비용 절감을 기대할 수 있다. 일반적인 저장 장치는 호스트 리드 요청의 속성에 상관없이 하나의 리드 패스(read path)로 데이터 전송을 수행하고 있다. 반면에, 본 발명의 저장 장치는 호스트 리드 요청의 속성에 따라 이원화된 리드 패스 중 어느 하나를 선택하여 데이터를 전송할 수 있다.
도 1은 본 발명의 실시 예에 따른 호스트 시스템(10)를 예시적으로 보여주는 도면이다. 도 1을 참조하면, 호스트 시스템(10)은 호스트 장치(11) 및 저장 장치(12)를 포함할 수 있다.
호스트 시스템(10)은 서버 컴퓨터, PC(personal computer), 데스크 탑 컴퓨터, 랩-탑(lap-top) 컴퓨터, 워크스테이션(workstation) 컴퓨터, NAS(network-attached storage(NAS)), 데이터 센터(data center), 인터넷 데이터 센터(internet data center(IDC)) 혹은 모바일 컴퓨팅 장치로 구현될 수 있다. 예를 들어, 모바일 컴퓨팅 장치는 스마트폰, 태블릿(tablet) PC, 혹은 모바일 인터넷 장치(mobile internet device(MID))로 구현될 수 있다.
호스트 장치(11)는 저장 장치(12)의 데이터 처리 동작(예를 들어, 쓰기 동작 혹은 리드 동작)을 제어하도록 구현될 수 있다. 호스트 장치(11)는 적어도 하나의 CPU(Central Processing Unit), 버퍼 메모리, 메모리 장치, 메모리 제어기, 인터페이스 회로 등을 포함할 수 있다. 호스트 장치(11)는 집적회로(Integrated Circuit; IC)), 마더보드(motherboard), 혹은 시스템 온 칩(System on Chip; SoC)으로 구현될 수 있다. 실시 예에 따라, 호스트 장치(11)는 어플리케이션 프로세서(application processor) 혹은 모바일(mobile) 어플리케이션 프로세서로 구현될 수 있다.
CPU는 버스 구조(bus architecture; 210)를 통해 버퍼 메모리, 메모리 제어기, 및 인터페이스 회로와 커맨드 혹은 데이터를 교환할 수 있다. 실시 예에 있어서, 버스 구조는 AMBA(Advanced Microcontroller Bus Architecture), AXI(AMBA Advanced eXtensible Interface), 혹은 AHB(AMBA Advanced High-performance Bus)일 수 있다. 버퍼 메모리는 큐(queue)를 저장 할 수 있다. 실시 예에 있어서, 버퍼 메모리는 레지스터 혹은 SRAM(Static Random Access Memory)으로 구현될 수 있다. 큐는 서브미션 큐(submission queue)를 포함할 수 있다. 큐는 커맨드들(예를 들어, 쓰기 커맨드 혹은 리드 커맨드)을 저장할 수 있다. 실시 예에 있어서, 큐는 완료 큐(completion queue)를 더 포함할 수 있다.
메모리 장치는 휘발성 메모리 장치 혹은 비휘발성 메모리 장치로 구현될 수 있다. 여기서 휘발성 메모리는 RAM(Random Access Memory), SRAM, 혹은 DRAM(dynamic RAM)으로 구현될 수 있다. 비휘발성 메모리는 NAND 플래시 메모리, NOR 플래시 메모리, PRAM(phase change RAM), MRAM(magnetoresistive RAM), STT-MRAM(spin-transfer torque magnetic random-access memory), FRAM(ferroelectric RAM) 혹은 RRAM(resistive RAM)으로 구현될 수 있다. 메모리 제어기는, CPU의 제어에 따라, 메모리 장치에 데이터를 쓰거나 메모리 장치로부터 저장된 데이터를 읽을 수 있다. 실시 예에 있어서, 메모리 제어기는 DMA(direct memory access) 제어기의 기능을 포함할 수 있다. 인터페이스 회로는 사전에 결정된 인터페이스를 통해 저장 장치(12)의 호스트 인터페이스 회로(201, HIF)에 연결 될 수 있다. 실시 예에 있어서, 사전에 결정된 인터페이스는 NVMe(non-volatile memory express), PCIe(peripheral component interconnect express), SATA(serial at attachment), SCSI(small computer system interface), SAS(serial attached SCSI), UAS(USB(universal storage bus) attached SCSI), iSCSI(internet small computer system interface), Fiber Channel, FCoE(fiber channel over Ethernet) 중 적어도 하나를 포함할 수 있다.
저장 장치(12)는 적어도 하나의 비휘발성 메모리 장치(NVM(s), 100) 및 제어기(200)를 포함할 수 있다.
적어도 하나의 비휘발성 메모리 장치(100)는 데이터를 저장하도록 구현될 수 있다. 비휘발성 메모리 장치(100)는 낸드 플래시 메모리(NAND flash memory), 수직형 낸드 플래시 메모리, 노아 플래시 메모리(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) 등이 될 수 있다. 또한, 비휘발성 메모리 장치(100)는 3차원 어레이 구조(three-dimensional array structure)로 구현될 수 있다. 본 발명은 전하 저장층이 전도성 부유 게이트로 구성된 플래시 메모리 장치는 물론, 전하 저장층이 절연막으로 구성된 차지 트랩형 플래시(charge trap flash; CTF)에도 모두 적용 가능하다. 아래에서는 설명의 편의를 위하여 비휘발성 메모리 장치(100)가 수직형 낸드 플래시 메모리 장치(VNAND)라고 하겠다.
제어기(200)는 제어 신호들(예를 들어, CLE, ALE, CE(s), WE, RE, 등)을 전송하는 복수의 제어 핀들을 통하여 적어도 하나의 비휘발성 메모리 장치(100)에 연결될 수 있다. 또한, 제어 신호들(CLE, ALE, CE(s), WE, RE 등)을 이용하여 비휘발성 메모리 장치(100)를 제어하도록 구현될 수 있다. 예를 들어, 비휘발성 메모리 장치(100)는 CLE(command latch enable) 신호 및 ALE(address latch enable) 신호에 따라 WE(write enable) 신호의 엣지에서 커맨드(CMD) 혹은 어드레스(ADD)를 래치 함으로써, 프로그램 동작/리드 동작/이레이즈 동작을 수행 할 수 있다. 예를 들어, 리드 동작시 칩 활성화 신호(CE)는 활성화 되고, CLE는 커맨드의 전송 구간에 활성화 되고, ALE는 어드레스의 전송 구간에 활성화 되고, RE(read enable)는 데이터 신호 라인(DQ)을 통해 데이터가 전송되는 구간에서 토글링될 수 있다. 데이터 스트로브 신호(DQS)는 데이터 입출력 속도에 대응하는 주파수로 토글링할 수 있다. 리드 데이터는 데이터 스트로브 신호(DQS)에 동기화되어 순차적으로 전송될 수 있다.
또한, 제어기(200)는 저장 장치(12)의 전반적인 동작을 제어하도록 구현될 수 있다. 제어기(200)는 캐시/버퍼 관리, 펌웨어 관리, 가비지 컬렉션 관리, 웨어 레벨링 관리, 데이터 중복 제거 관리, 리드 리프레쉬/리클레임 관리, 배드 블록 관리, 멀티-스트림 관리, 호스트 데이터와 비휘발성 메모리의 맵핑 관리, QoS(quality of service) 관리, 시스템 리소스 할당 관리, 비휘발성 메모리 큐(queue) 관리, 리드 레벨 관리, 이레이즈/프로그램 관리, 핫/콜드 데이터 관리, 전력 손실 보호 관리, 동적 열관리, 초기화 관리, RAID(redundant array of inexpensive disk) 관리 등과 같은 다양한 관리 동작들을 수행할 수 있다.
또한, 제어기(200)는 호스트 인터페이스 회로(201, HIF), 비휘발성 메모리 인터페이스 회로(202, NIF), 버퍼 메모리(220), 및 에러 정정 회로(230)를 포함할 수 있다.
호스트 인터페이스 회로(201, HIF)는 호스트 장치(11)와 인터페이스 기능을 제공하도록 구현될 수 있다. 호스트 인터페이스 회로(201)는 NVMe, PCIe, SATA, SCSI, SAS, UAS, iSCSI, Fiber Channel, FCoE 등 과 같은 것을 통해 호스트 장치(11)와 데이터를 교환할 수 있다.
비휘발성 메모리 인터페이스 회로(202, NIF)는 비휘발성 메모리 장치(100)에 상술된 복수의 핀들을 통하여 데이터를 교환할 수 있다. 특히, 비휘발성 메모리 인터페이스 회로(202)는 확장 커맨드 프로토콜(extended command protocol)를 지원할 수 있다.
버퍼 메모리(220)는 저장 장치(12)의 동작에 필요한 데이터를 임시적으로 저장하도록 구현될 수 있다. 실시 예에 있어서, 버퍼 메모리(220)는 SRAM로 구현될 수 있다.
에러 정정 회로(230)는 쓰기 동작시 데이터의 에러 정정 코드를 생성하고, 리드 동작시 읽혀진 데이터를 대응하는 에러 정정 코드를 이용하여 에러를 정정하도록 구현될 수 있다.
한편, 저장 장치(12)의 제어기(200)는 리드 동작시 호스트 커맨드(혹은 리드 요청)의 속성에 따라 에러 정정 회로(230)의 출력 버퍼(233)에서 호스트 장치(11)로 한번의 DMA 동작에 의해 리드 데이터를 전송할 수 있다. 실시 예에 있어서, 제어기(200)는 옵션(호스트 커맨드의 속성 혹은 사용자의 요청)에 따라 에러 정정 회로(230)의 출력 버퍼(233)에서 호스트 장치(11)로 곧바로 리드 데이터를 전송하거나, 출력 버퍼(233)에서 버퍼 메모리(222)로 이동한 후 호스트 장치(11)로 리드 데이터를 전송할 수 있다. 즉, 제어기(200)는 제 1 리드 패스 및 제 2 리드 패스 중에서 어느 하나를 선택하고, 선택된 리드 패스를 이용하여 호스트 장치(11)로 리드 데이터를 전송할 수 있다. 여기서 제 1 리드 패스는 한 번의 DMA 동작을 이용하는 패스이고, 제 2 리드 패스는 두 번의 DMA 동작을 이용하는 패스이다.
일반적인 저장 장치의 제어기는, 리드 동작을 위하여 리드 버퍼로 사전에 결정된 크기(예를 들어, NAND 페이지 크기 x 낸드 채널의 개수 x 버퍼 비율)의 버퍼 메모리(예를 들어, SRAM)를 갖고 있다. 일반적인 제어기는 호스트 리드 커맨드의 속성에 상관없이 2-스테이지 DMA를 거쳐 호스트 장치로 리드 데이터를 전송하고 있다. 일반적인 제어기는 데이터를 모아서 전송할 필요는 없는 랜덤 리드 동작에서도 다른 리드 커맨드와 동일한 초기 레이턴시를 가진 후, 호스트 장치로 전송하고 있다.
반면에, 본 발명의 실시 예에 따른 저장 장치(12)의 제어기(200)는 랜덤 리드 혹은 사용자의 요청 따라, 에러 정정 회로(230)의 출력 버퍼(233)에서 한 번의 DMA 만으로 호스트 장치(11)로 리드 데이터를 전송할 수 있다. 이로써, 본 발명의 제어기(200)는 종래의 그것보다, 리드 동작의 레이턴시를 감소시키고, 리드 버퍼로 사용되는 버퍼 메모리(220, 예를 들어, SRAM)의 크기를 줄일 수 있다.
본 발명의 실시 예에 따른 저장 장치(12)는 랜덤 리드 동작에서 초기 레이턴시를 줄임으로써, 성능 향상을 기대할 수 있다. 또한, 본 발명의 저장 장치(12)는 내부의 버퍼 메모리(220)의 크기를 줄임으로써, 비용 절감을 기대할 수 있다.
도 2는 본 발명의 실시 예에 따른 비휘발성 메모리 장치(100)를 예시적으로 보여주는 도면이다. 도 2를 참조하면, 비휘발성 메모리 장치(100)는 메모리 셀 어레이(110), 로우 디코더(120), 페이지 버퍼 회로(130), 입출력 회로(140), 제어 로직(150), 전압 발생기(160), 및 셀 카운터(170)를 포함할 수 있다.
메모리 셀 어레이(110)는 워드라인들(WLs) 혹은 선택 라인들(SSL, GSL)을 통해 로우 디코더(120)에 연결될 수 있다. 메모리 셀 어레이(110)는 비트라인들(BLs)을 통해서 페이지 버퍼 회로(130)에 연결될 수 있다. 메모리 셀 어레이(110)는 복수의 셀 스트링들(cell strings)을 포함할 수 있다. 셀 스트링들의 각각의 채널은 수직 혹은 수평 방향으로 형성될 수 있다. 셀 스트링들의 각각은 복수의 메모리 셀들을 포함할 수 있다. 여기서, 복수의 메모리 셀들은 비트라인(BLs)이나, 워드라인(WLs)으로 제공되는 전압에 의해서 프로그램 되거나, 이레이즈 되거나, 읽혀질 수 있다. 일반적으로, 프로그램 동작은 페이지 단위로 수행되고, 이레이즈 동작은 블록단위로 수행되고 있다. 메모리 셀에 대한 자세한 것은, 미국 등록 특허 US 7,679,133, US 8,553,466, US 8,654,587, US 8,559,235, 및 US 9,536,970에 설명될 것이다. 실시 예에 있어서, 메모리 셀 어레이(330)는 2차원 메모리 셀 어레이를 포함할 수 있고, 2차원 메모리 셀 어레이는 행 방향 및 열 방향을 따라 배치된 복수의 낸드 스트링들을 포함할 수 있다.
로우 디코더(120)는 어드레스(ADD)에 응답하여 메모리 셀 어레이(110)의 메모리 블록들(BLK1 ~ BLKz) 중 어느 하나를 선택하도록 구현될 수 있다. 로우 디코더(120)는 어드레스(ADD)에 응답하여 선택된 메모리 블록의 워드라인들 중 어느 하나를 선택할 수 있다. 로우 디코더(120)는 선택된 메모리 블록의 워드라인에 동작 모드에 대응하는 워드라인 전압(VWL)을 전달할 수 있다. 프로그램 동작시 로우 디코더(120)는 선택 워드라인에 프로그램 전압과 검증 전압을 인가하고, 비선택 워드라인에 패스 전압을 인가할 수 있다. 리드 동작시 로우 디코더(120)는 선택 워드라인에 리드 전압을 인가하고, 비선택 워드라인에 리드 패스 전압을 인가할 수 있다.
페이지 버퍼 회로(130)는 쓰기 드라이버로 혹은 감지 증폭기로 동작하도록 구현될 수 있다. 프로그램 동작시, 페이지 버퍼 회로(130)는 메모리 셀 어레이(110)의 비트라인들로 프로그램 될 데이터에 대응하는 비트라인 전압을 인가할 수 있다. 리드 동작 혹은 검증 리드 동작시, 페이지 버퍼 회로(130)는 선택된 메모리 셀에 저장된 데이터를 비트라인(BL)을 통해서 감지할 수 있다. 페이지 버퍼 회로(130)에 포함되는 복수의 페이지 버퍼들의 각각은 적어도 하나의 비트라인에 연결될 수 있다.
입출력 회로(140)는 외부에서 제공되는 데이터를 페이지 버퍼 회로(130)로 제공할 수 있다. 입출력 회로(140)는 외부에서 제공되는 커맨드(CMD)를 제어 로직(150, 도 1 참조)에 제공할 수 있다. 입출력 회로(140)는 외부에서 제공된 어드레스(ADD)를 제어 로직(150)이나 로우 디코더(120)에 제공할 수 있다. 또한, 입출력 회로(140)는 페이지 버퍼 회로(130)에 의해서 센싱 및 래치된 데이터를 외부로 출력할 수 있다.
제어 로직(150)은 제어기(200)로부터 전달되는 커맨드(CMD)에 응답하여 로우 디코더(120), 페이지 버퍼 회로(130), 및 전압 발생기(160)를 제어하도록 구현될 수 있다. 또한, 제어 로직(150)은 셀 카운트 기반 다이나믹 리드 동작을 수행하도록 구현될 수 있다.
전압 발생기(160)는 제어 로직(150)의 제어에 따라 각각의 워드라인들로 인가될 다양한 종류의 워드라인 전압들, 메모리 셀들이 형성된 벌크(예를 들어, 웰 영역)로 공급될 웰 전압을 생성하도록 구현될 수 있다. 각각의 워드라인들로 인가되는 워드라인 전압들은, 프로그램 전압, 패스 전압, 리드 전압, 리드 패스 전압들 등을 포함할 수 있다.
셀 카운터(170)는 페이지 버퍼 회로(130)에 센싱된 데이터로부터 특정 문턱 전압 범위에 대응하는 메모리 셀들을 카운트하도록 구현될 수 있다. 예를 들어, 셀 카운터(170)는 복수의 페이지 버퍼들(PB1 ~ PBn) 각각에 센싱된 데이터를 처리함으로써, 특정 문턱 전압 범위의 문턱 전압을 갖는 메모리 셀들의 수를 카운트할 수 있다.
도 3은 본 발명의 실시 예에 따른 메모리 블록(BLKi, i는 2 이상의 정수)의 회로도를 예시적으로 보여주는 도면이다. 메모리 블록(BLKi)에 포함되는 복수의 메모리 낸드 스트링들은 상기 기판과 수직한 방향으로 형성될 수 있다.
도 3을 참조하면, 메모리 블록(BLKi)은 비트라인들(BL1, BL2, BL3)과 공통 소스 라인(CSL) 사이에 연결되는 복수의 메모리 낸드 스트링들(NS11 ~ NS33)을 포함할 수 있다. 복수의 메모리 낸드 스트링들(NS11 ~ NS33) 각각은 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC1, MC2, ... , MC8) 및 접지 선택 트랜지스터(GST)를 포함할 수 있다. 도 3에는 복수의 메모리 낸드 스트링들(NS11 ~ NS33) 각각이 8 개의 메모리 셀들(MC1, MC2, ... , MC8)을 포함하는 것으로 도시되나, 반드시 여기에 제한되지 않을 것이다.
스트링 선택 트랜지스터(SST)는 대응하는 스트링 선택 라인(SSL1, SSL2, SSL3)에 연결될 수 있다. 복수의 메모리 셀들(MC1, MC2, ... , MC8)은 각각 대응하는 게이트 라인(GTL1, GTL2, ..., GTL8)에 연결될 수 있다. 게이트 라인(GTL1, GTL2, ... , GTL8)은 워드라인들에 해당할 수 있으며, 게이트 라인(GTL1, GTL2, ... , GTL8)의 일부는 더미 워드라인에 해당할 수 있다. 접지 선택 트랜지스터(GST)는 대응하는 접지 선택 라인(GSL1, GSL2, GSL3)에 연결될 수 있다. 스트링 선택 트랜지스터(SST)는 대응하는 비트라인(BL1, BL2, BL3)에 연결되고, 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL)에 연결될 수 있다.
동일 높이의 워드라인(예를 들면, WL1)은 공통으로 연결되고, 접지 선택 라인(GSL1, GSL2, GSL3) 및 스트링 선택 라인(SSL1, SSL2, SSL3)은 각각 분리될 수 있다. 도 3에는 메모리 블록(BLK)이 8 개의 게이트 라인(GTL1, GTL2, ... , GTL8) 및 3 개의 비트라인들(BL1, BL2, BL3)에 연결되는 것으로 도시되나, 반드시 여기에 제한되지 않을 것이다.
도 4는 본 발명의 실시 예에 따른 제어기(200)를 예시적으로 보여주는 도면이다. 도 4를 참조하면, 제어기(200)는 호스트 인터페이스 회로(201), 휘발성 메모리 인터페이스 회로(202), 버스(203), 적어도 하나의 프로세서(210, CPU(s)), 버퍼 메모리(220), 에러 정정 회로(230, ECC), 호스트 DMA 회로(240) 및 비휘발성 메모리 DMA 회로(250)를 포함할 수 있다.
호스트 인터페이스 회로(201)는 호스트와 패킷(packet)을 송수신하도록 구현될 수 있다. 호스트로부터 호스트 인터페이스 회로(201)로 전송되는 패킷은 커맨드(command) 혹은 비휘발성 메모리(100)에 쓰여질 데이터를 포함할 수 있다. 호스트 인터페이스 회로(201)로부터 호스트로 전송되는 패킷은 커맨드에 대한 응답(response) 혹은 비휘발성 메모리(100)로부터 읽혀진 데이터를 포함할 수 있다.
메모리 인터페이스 회로(202)는 비휘발성 메모리(100)에 쓰여질 데이터를 비휘발성 메모리(100)로 송신하거나, 비휘발성 메모리(100)로부터 읽혀진 데이터를 수신할 수 있다. 이러한 메모리 인터페이스 회로(202)는 JDEC Toggle 혹은 ONFI와 같은 표준 규약을 준수하도록 구현될 수 있다.
적어도 하나의 프로세서(210, CPU(s))는 저장 장치(12)의 전반적인 동작을 제어하도록 구현될 수 있다. 프로세서(210)는 캐시/버퍼 관리, 펌웨어 관리, 가비지 컬렉션 관리, 웨어 레벨링 관리, 데이터 중복 제거 관리, 리드 리프레쉬/리클레임 관리, 배드 블록 관리, 멀티-스트림 관리, 호스트 데이터와 비휘발성 메모리의 맵핑 관리, QoS(Quality of Service) 관리, 시스템 리소스 할당 관리, 비휘발성 메모리 큐(queue) 관리, 리드 레벨 관리, 이레이즈/프로그램 관리, 핫/콜드 데이터 관리, 전력 손실 보호 관리, 동적 열관리, 초기화 관리, RAID(Redundant Array of Inexpensive Disk) 관리 등과 같은 다양한 관리 동작들을 수행할 수 있다. 이러한 관리 동작들은 하드웨어/펌웨어/소프트웨어적으로 구현될 수 있다.
버퍼 메모리(220)는 비휘발성 메모리 장치(100)에 기록될 데이터 혹은 비휘발성 메모리 장치(100)로부터 읽혀진 데이터를 임시로 저장할 수 있다. 실시 예에 있어서, 버퍼 메모리(220)는 제어기(200) 내에 구비되는 구성일 수 있다. 다른 실시 예에 있어서, 버퍼 메모리(220)는 제어기(200)의 외부에 배치될 수도 있다. 또한, 버퍼 메모리(220)는 휘발성 메모리(예를 들어, SRAM(Static Random Access Memory), DRAM(Dynamic RAM), SDRAM(Synchronous RAM) 등) 혹은 비휘발성 메모리 (플래시 메모리, PRAM(Phase-change RAM), MRAM(Magneto-resistive RAM), ReRAM(Resistive RAM), FRAM(Ferro-electric RAM) 등)로 구현될 수 있다.
에러 정정 회로(230)는 프로그램 동작시 에러 정정 코드(error correction code; ECC)를 생성하고, 리드 동작시 에러 정정 코드를 이용하여 데이터를 복구하도록 구현될 수 있다. 즉, 에러 정정 회로(230)는 비휘발성 메모리 장치(100)로부터 수신된 데이터의 페일 비트 혹은 에러 비트를 정정하기 위한 에러 정정 코드(ECC)를 생성할 수 있다. 또한, 에러 정정 회로(230)는 비휘발성 메모리 장치(100)로 제공되는 데이터의 에러 정정 인코딩을 수행함으로써, 패리티 비트가 부가된 데이터를 형성할 수 있다. 패리티 비트는 비휘발성 메모리 장치(100)에 저장 될 수 있다.
또한, 에러 정정 회로(230)는 비휘발성 메모리 장치(100)로부터 출력된 데이터에 대하여 에러 정정 디코딩을 수행할 수 있다. 에러 정정 회로(230)는 패리티를 사용하여 에러를 정정할 수 있다. 에러 정정 회로(230)는 LDPC(Low Density Parity Check) code, BCH code, turbo code, 리드-솔로몬 코드(Reed-Solomon code), convolution code, RSC(Recursive Systematic Code), TCM(Trellis-Coded Modulation), BCM(Block Coded Modulation) 등의 코디드 모듈레이션(coded modulation)을 사용하여 에러를 정정할 수 있다. 한편, 에러 정정 회로(230)에서 에러 정정이 불가능할 때, 리드 리트라이(read retry) 동작이 수행될 수 있다.
패킷 매니저는 호스트와 협의된 인터페이스의 프로토콜에 따른 패킷을 생성하거나, 호스트로부터 수신된 패킷으로부터 각종 정보를 파싱 할 수 있다. 암호 장치는, 제어기(200)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중에서 적어도 하나를, 대칭 키 알고리즘(symmetric-key algorithm)를 이용하여 수행할 수 있다. 암호 장치는 AES(Advanced Encryption Standard) 알고리즘을 이용하여 데이터의 암호화 및 복호화를 수행할 수 있다. 암호 장치는 암호화 모듈 및 복호화 모듈을 포함할 수 있다. 실시 예에 있어서, 암호 장치는 하드웨어/소프트웨어/펌웨어적으로 구현될 수 있다. 암호 장치는 SED(Self Encryption Disk) 기능 혹은 TCG(Trusted Computing Group) 보안 기능을 수행할 수 있다. SED 기능은 암호 알고리즘을 이용하여 비휘발성 메모리 장치(100)에 암호화된 데이터를 저장하거나, 비휘발성 메모리 장치(100)로부터 암호화된 데이터를 복호화 할 수 있다. 이러한 암/복호화 동작은 내부에서 생성된 암호화키를 사용하여 수행될 수 있다. TCG 보안 기능은 저장 장치(100)의 사용자 데이터에 대한 접근 제어를 가능하게 하는 메커니즘을 제공할 수 있다. 예를 들어, TCG 보안 기능은 외부 장치와 저장 장치(100) 사이의 인증 절차를 수행할 수 있다. 실시 예에 있어서, SED 기능 혹은 TCG 보안 기능은 옵션적으로 선택 가능하다.
호스트 DMA 회로(240)는 호스트 장치(11)와 제어기(200) 사이의 DMA 동작을 제어하도록 구현될 수 있다. 호스트 DMA 회로(240)는 호스트 제어기의 제어에 따라 프로그램 동작 시 호스트 인터페이스(201)를 통해 호스트 장치(11)로부터 입력된 데이터를 버퍼 메모리(220)에 저장시키는 동작을 수행할 수 있다. 또한, 호스트 DMA 회로(240)는 리드 동작 시 버퍼 메모리(220)에 저장된 데이터를 호스트 인터페이스(201)를 통해 호스트 장치(11)로 출력하는 동작을 수행할 수 있다. 실시 예에 있어서, 호스트 DMA 회로(240)는 호스트 제어기의 구성 요소로써 호스트 제어기에 포함되도록 구현될 수 있다.
비휘발성 메모리 DMA 회로(250)는 제어기(200)와 비휘발성 메모리 장치(100) 사이의 DMA 동작을 제어하도록 구현될 수 있다. 비휘발성 메모리 DMA 회로(250)는 비휘발성 메모리 제어기의 제어에 따라 프로그램 동작 시 버퍼 메모리(220)에 저장된 데이터를 비휘발성 메모리 인터페이스 회로(202)를 통해 비휘발성 메모리 장치(100)로 출력하는 동작을 수행할 수 있다. 또한, 비휘발성 메모리 DMA 회로(250)는 리드 동작 시 비휘발성 메모리 인터페이스 회로(202)를 통해 비휘발성 메모리 장치(100)에 저장된 데이터를 리드하는 동작을 수행할 수 있다.
또한, 비휘발성 메모리 DMA 회로(250)는 리드 동작 시 비휘발성 메모리 인터페이스 회로(202)로부터 리드 전송 단위로 분할된 적어도 하나의 데이터 그룹을 수신할 수 있다. 비휘발성 메모리 DMA 회로(250)는 각 데이터 그룹을 리드 전송 단위보다 작은 데이터 크기 단위를 갖는 적어도 2 개의 데이터 서브 그룹들로 분할할 수 있다. 여기서 분할된 데이터 서브 그룹들은 에러 정정 회로(230)에서 에러 정정된 데이터일 수 있다. 실시 예에 있어서, 제 1 리드 패스를 선택할 경우, 분할된 적어도 2개의 데이터 서브 그룹들은 호스트 DMA 회로(240)로 전송될 수 있다. 다른 실시 예에 있어서, 제 2 리드 패스를 선택할 경우, 분할된 적어도 두 개의 데이터 서브 그룹들은 순차적으로 버퍼 메모리(220)로 전송할 수 있다.
또한, 비휘발성 메모리 DMA 회로(250)는 버퍼 메모리(220)로 데이터 서브 그룹들을 전송할 때, 리드 스트리밍(read streaming) 개시를 알리는 정보를 버퍼 제어기로 출력할 수 있다. 예를 들어, 비휘발성 메모리 DMA 회로(250)는 비휘발성 메모리 제어기의 구성 요소로써 비휘발성 메모리 제어기에 포함되도록 구현될 수 있다.
도 5는 본 발명의 실시 예에 따른 저장 장치(12)의 쓰기 패스를 예시적으로 보여주는 도면이다.
HDMA 매니저(241)는 쓰기 동작시 호스트 DMA 회로(240)를 관리할 수 있다. 호스트 DMA 회로(240)는 호스트 장치(도 1의 11)의 데이터를 호스트 인터페이스 회로(도 1의 201)를 통해 수신할 수 있다. 호스트 DMA 회로(240)는 호스트 장치(11)로부터 전송 단위로 분할된 적어도 하나의 데이터 그룹을 순차적으로 전송 받을 수 있다. HDMA 매니저(241)는 전송 단위를 갖는 데이터 그룹을 적어도 두 개의 데이터 서브 그룹들로 분할하고, 분할된 적어도 두 개의 데이터 서브 그룹들을 순차적으로 버퍼 메모리(220)로 전송할 수 있다. 즉, HDMA 매니저(241)는 전송 단위의 데이터 크기를 갖는 하나의 데이터 그룹을 전송 단위보다 작은 분할 데이터 크기를 갖는 적어도 두 개의 데이터 서브 그룹들로 나누어 버퍼 메모리(220)로 전송할 수 있다.
한편, HDMA 매니저(241)는 적어도 두 개의 데이터 서브 그룹들 중 첫 번째 데이터 서브 그룹을 버퍼 메모리(220)로 전송할 때, 프로그램 스트리밍 스타트 신호를 버퍼 매니저(221)의 스케줄 엔진으로 출력할 수 있다. 여기서 스케줄 엔진은 프로그램 스트리밍 스타트 신호에 응답하여 데이터 저장 예약 신호를 버퍼 메모리(220)로 출력할 수 있다. 버퍼 메모리(220)는 데이터 저장 예약 신호에 응답하여 적어도 하나의 데이터 그룹의 총 데이터 크기와 동일한 저장 공간을 확보하여 버퍼 메모리(220)의 쓰기 동작을 준비할 수 있다.
또한, HDMA 매니저(241)는 적어도 두 개의 데이터 서브 그룹들 중 첫 번째 데이터 서브 그룹을 버퍼 메모리(220)로 전송한 이후에, 버퍼 메모리(220)로 전송 완료 신호를 HDMA 매니저(241)로 출력할 수 있다. HDMA 매니저(241)는 전송 완료 신호에 응답하여 버퍼 메모리(220)의 데이터 저장 공간 위치 정보를 포함하는 슬롯 인덱스(slot index)를 NDMA 매니저(251)로 출력할 수 있다.
NDMA 매니저(251)는 버퍼 메모리(220)에 두 개의 데이터 서브 그룹들 중 적어도 첫 번째 데이터 서브 그룹을 저장 완료한 후에 버퍼 메모리(220)에 저장된 데이터를 리드하여 비휘발성 메모리 인터페이스 회로(도 1의 202)를 통해 비휘발성 메모리 장치(100)로 출력하도록 비휘발성 메모리 DMA 회로(250)를 제어할 수 있다.
NDMA 매니저(251)는 슬롯 인덱스에 응답하여 구동 신호를 출력할 수 있다. 비휘발성 메모리 DMA 회로(250)는 구동 신호에 응답하여 버퍼 메모리(220)에 저장된 데이터를 리드하고, 리드된 데이터를 에러 정정 회로의 인코더(231)로 출력할 수 있다.
정리하면, 본 발명의 실시 예에 따른 저장 장치(12)는, 쓰기 동작시 호스트 DMA 회로(240)에 의해 호스트로부터 수신된 데이터를 버퍼 메모리(220)로 전송하는 동작을 수행하면서, 동시에 비휘발성 메모리 DMA 회로(250)에 의해 버퍼 메모리(220) 저장된 데이터를 에러 정정 회로(230)의 인코더(231)로 출력하는 동작을 수행할 수 있다.
도 6a 및 도 6b는 본 발명의 실시 예에 따른 저장 장치(12)의 리드 패스를 예시적으로 보여주는 도면들이다. 도 6a에서는 버퍼 메모리(220)를 경유하지 않는 제 1 리드 패스가 도시되고, 도 6b에서는 버퍼 메모리(220)를 경유하는 제 2 리드 패스가 도시되고 있다.
제 1 및 제 2 리드 패스의 선택에 상관없이, 리드 동작시 비휘발성 메모리 DMA 회로(250)는 비휘발성 메모리 장치(100)로부터 출력된 데이터를 비휘발성 메모리 인터페이스 회로(202)를 통해 수신 받을 수 있다. 여기서 수신된 데이터는 에러 정정 회로(230)의 디코더(232)를 통하여 에러 정정된 데이터일 수 있다. 실시 예에 있어서, 비휘발성 메모리 DMA 회로(250)는 비휘발성 메모리 장치(100)로부터 리드 전송 단위로 분할된 적어도 하나의 데이터 그룹을 순차적으로 전송 받을 수 있다.
도 6a를 참조하면, HDMA 매니저(241)는 ECC 디코더(232)의 출력 버퍼(233)에 저장된 데이터를 호스트 인터페이스 회로(201)를 통해 호스트 장치(11)로 출력하도록 호스트 DMA 회로(240)를 제어할 수 있다.
도 6b를 참조하면, HDMA 매니저(241)는 ECC 디코더(232)의 출력 버퍼(233)에 저장된 데이터를 버퍼 메모리(220)로 직접 전송하는 제 1 DMA 리드 동작을 수행하고, 버퍼 메모리(200)에 저장된 데이터를 호스트 인터페이스 회로(201)를 통해 호스트 장치(11)로 직접 전송하는 제 2 DMA 리드 동작을 수행하도록 호스트 DMA 회로(240)를 제어할 수 있다.
제 1 DMA 리드 동작에서, HDMA 매니저(241)는 리드 전송 단위를 갖는 데이터 그룹을 적어도 두 개의 데이터 서브 그룹들로 분할하고, 분할된 적어도 두 개의 데이터 서브 그룹들을 순차적으로 버퍼 메모리(220)로 전송할 수 있다. 즉, HDMA 매니저(241)는 리드 전송 단위의 데이터 크기를 갖는 하나의 데이터 그룹을 리드 전송 단위보다 작은 분할 데이터 크기를 갖는 적어도 두 개의 데이터 서브 그룹들로 나누어 버퍼 메모리(220)로 전송할 수 있다. HDMA 매니저(241)는 적어도 두 개의 데이터 서브 그룹들 중 첫 번째 데이터 서브 그룹을 버퍼 메모리(220)로 전송할 때, 리드 스트리밍 스타트 신호를 버퍼 매니저(221)의 스케줄 엔진으로 출력할 수 있다. 스케줄 엔진은 리드 스트리밍 스타트 신호에 응답하여 데이터 저장 예약 신호를 버퍼 메모리(220)로 출력할 수 있다. 버퍼 메모리(220)는 데이터 저장 예약 신호에 응답하여 적어도 하나의 데이터 그룹의 총 데이터 크기와 동일한 저장 공간을 확보하여 버퍼 메모리(220)의 쓰기 동작을 준비할 수 있다. 또한, HDMA 매니저(241)는 적어도 두 개의 데이터 서브 그룹들 중 첫 번째 데이터 서브 그룹을 버퍼 메모리(220)에 전송 한 후에, 버퍼 메모리(220)로 전송 완료 신호를 출력할 수 있다.
제 2 DMA 리드 동작에서, HDMA 매니저(241)는 버퍼 메모리(220)에 두 개의 데이터 서브 그룹들 중 적어도 첫번째 데이터 서브 그룹이 저장 완료된 후 버퍼 메모리(220)에 저장된 데이터를 호스트 인터페이스 회로(201)를 통해 호스트 장치(11)로 출력하도록 호스트 DMA 회로(240)를 제어할 수 있다. HDMA 매니저(241)는 슬롯 인덱스에 응답하여 호스트 DMA 회로(240)를 구동시키기 위한 구동 신호를 출력할 수 있다. 호스트 DMA 회로(240)는 구동 신호에 응답하여 버퍼 메모리(220)에 저장된 데이터를 리드하여 출력할 수 있다. 호스트 DMA 회로(240)는 버퍼 메모리(220)에 저장 완료된 데이터 서브 그룹들을 순차적으로 리드하여 호스트 인터페이스 회로(201)를 통해 호스트 장치(11)로 출력할 수 있다.
도 7은 본 발명의 실시 예에 따른 제어기(200)의 리드 패스의 선택적 운용 방식을 예시적으로 보여주는 도면이다.
도 7를 참조하면, 호스트 리드 패스는 2 개로 분류될 수 있다. 제 1 리드 패스는 한 번의 DMA 동작으로 호스트 장치(11)로 리드 데이터를 전송할 수 있다. 제 2 리드 패스는 두 번의 DMA 동작으로 호스트 장치(11)로 리드 데이터를 전송할 수 있다.
호스트 리드 패스로 제 1 리드 패스가 선택될 때, 에러 정정 회로(230, 도 1 참조)의 출력 버퍼(233)로부터 리드 데이터(예를 들어, 4KB 데이터)는 1-스테이지 DMA 동작을 통하여 호스트 장치(11)로 출력될 수 있다. 여기서 1-스테이지 DAM 동작은 에러 정정 회로(230)의 출력 버퍼(233)의 리드 데이터를 HDMA 매니저(241)에 의해 호스트 장치(11)로 전송하는 동작이다.
호스트 리드 패스로 제 2 리드 패스가 선택될 때, 에러 정정 회로(230, 도 1 참조)의 출력 버퍼(233)로부터 리드 데이터(예를 들어, 4KB)는 2-스테이지 DMA 동작을 통하여 호스트 장치(11)로 출력될 수 있다. 여기서 2-스테이지 DMA 동작은, 에러 정정 회로(230)의 출력 버퍼(233)의 리드 데이터(예를 들어, 4KB 데이터)를 HDMA 매니저(241)에 의해 버퍼 메모리(220, SRAM GC Buffer)로 전송하는 동작과, 버퍼 메모리(220)에 모여진 리드 데이터(예를 들어, 32KB 데이터)를 HDMA 매니저(241)에 의해 호스트 장치(11)로 전송하는 동작을 포함할 수 있다.
복수의 채널들(CH0, CH1, ?? CH#)의 각각에 연결된 적어도 하나의 비휘발성 메모리 장치를 제어하는 플래시 메모리 제어기(FMC)에 의해 읽혀진 데이터는 에러 정정 회로(ECC)에 에러 정정될 수 있다. 각 채널의 에러 정정된 데이터(예를 들어 4KB)는 에러 정정 회로(ECC)의 출력 버퍼에 저장될 수 있다. HDMA 매니저(241)는 출력 버퍼에 저장된 에러 정정된 데이터를 버퍼 메모리(220)으로 전송할 지 혹은 호스트 인터페이스 회로로 전송할 지를 결정할 수 있다.
본 발명의 실시 예에 따른 저장 장치(12)는 호스트 리드 패스를 2개로 분류하고, 호스트 커맨드의 속성 혹은 사용자의 요청에 따라 에러 정정 회로(230)의 출력 버퍼(233)에서 한 번의 DMA만으로 호스트 장치(11)로 데이터를 전송하거나, SRAM GC(Garbage Collection) Buffer(22)를 거쳤다가 호스트 장치(11)로 데이터를 전송할 수 있다. 이러한 리드 패스의 선택적 운영 방식은 리드 동작의 최적화를 기대할 수 있다. 특히, 제 1 리드 패스를 이용하는 리드 동작은, 한 번의 DMA 동작만으로 호스트 장치(11)로 데이터를 전송함으로써 리드 레이턴시를 감소시킬 수 있다. 즉, 본 발명의 실시 예에 따른 저장 장치(11)는 호스트 커맨드의 속성/사용자의 요청에 따라 리드 패스를 이원화시킴으로써, 리드 동작의 레이턴시를 단축할 수 있다.
또한, 본 발명의 버퍼 메모리(예를 들어, SRAM)의 크기는 종래의 리드 버퍼 크기보다 작게 설계가 가능하기 때문에, 이에 따른 비용 절감을 기대할 수 있다. 실시 예에 있어서, LDPC(Low Density Parity Check) 출력 SRAM을 리드 버퍼(Read Buffer)로 이용함으로써, 전용 리드 버퍼의 축소/제거가 가능하다.
한편, 도 7에 도시된 바와 같이, HDMA 매니저(241)는 리드 패스를 판별하는 패스 판별 엔진(242)을 포함할 수 있다. 패스 판별 엔진(242)은 리드 동작시 1-스테이지 DMA 동작을 수행할지 혹은 2-스테이지 DMA 동작을 수행할 지 리드 패스를 결정할 수 있다.
도 8은 본 발명의 실시 예에 따른 저장 장치(12)의 동작 방법을 예시적으로 보여주는 흐름도이다. 도 8을 참조하면, 저장 장치(12)는 다음과 같이 동작할 수 있다.
저장 장치(12)는 호스트 장치(11)로부터 호스트 리드 커맨드를 수신할 수 있다(S110). 저장 장치(12)는 리드 요청에 따라 1-스테이지 DMA 동작을 수행할 지를 판별할 수 있다(S120).
만일, 1-스테이지 DMA 동작을 이용한 리드 동작 시, 저장 장치(12)는 에러 정정 회로(230, 도 1 참조)의 출력 버퍼(233)의 리드 데이터를 호스트 장치(11)로 전송하기 위하여 HDMA 실행할 수 있다(S130). 반면에, 1-스테이지 DMA 동작을 이용한 리드 동작이 아닌 경우, 저장 장치(12)는 에러 정정 회로(230, 도 1 참조)의 출력 버퍼(233)의 리드 데이터를 버퍼 메모리(120, SRAM)로 전송하기 위하여 제 1 HDMA 실행할 수 있다(S140). 이후에, 저장 장치(12)는 버퍼 메모리(120, SRAM)의 리드 데이터를 호스트 장치(11)로 전송하기 위하여 제 2 HDMA 실행할 수 있다(S145).
도 9는 본 발명의 실시 예에 따른 제어기의 동작 방법을 예시적으로 보여주는 흐름도이다. 도 9를 참조하면, 제어기(200)의 동작은 다음과 같이 진행될 수 있다.
제어기(200)는 호스트 장치(11)로부터 리드 요청을 수신할 수 있다(S210). 제어기(200)는 리드 요청에 따라 리드 패스를 판별할 수 있다(S220). 여기서 리드 패스는 1-스테이지 DMA 동작을 위한 제 1 리드 패스와 2-스테이지 DMA 동작을 위한 제 2 리드 패스를 포함할 수 있다. 제어기(200)는 선택된 리드 패스를 통하여 리드 데이터를 출력할 수 있다(S230).
도 10은 본 발명의 다른 실시 예에 따른 제어기의 동작 방법을 예시적으로 보여주는 흐름도이다. 도 10을 참조하면, 제어기(200)의 동작은 다음과 같이 진행할 수 있다.
제어기(200)는 호스트 장치(11)로부터 리드 요청을 수신할 수 있다(S310). 제어기(200)는 리드 요청을 분석하여 랜덤 리드인 지를 판별할 수 있다(S320). 만일, 리드 동작이 랜덤 리드 동작일 때, 제어기(200)는 1-스테이지 DMA 동작을 이용하여 리드 데이터를 호스트 장치(11)로 출력할 수 있다(S330). 반면에, 리드 동작이 랜덤 리드 동작이 아닐 때, 제어기(200)는 2-스테이지 DMA 동작을 이용하여 리드 데이터를 호스트 장치(11)로 출력할 수 있다(S335).
도 11은 본 발명의 또 다른 실시 예에 따른 제어기의 동작 방법을 예시적으로 보여주는 도면이다. 도 11을 참조하면, 제어기(200)의 동작은 다음과 같이 진행할 수 있다.
제어기(200)는 호스트 장치(11)의 요청에 따라 리드 패스를 고정하기SFR(Special Feature Register)를 설정할 수 있다(S410). 호스트 장치(11)의 리드 요청시 제어기(200)는 우선적으로 SFR를 읽을 수 있다(S420). SFR에 따라 리드 패스가 1-스테이지 DMA 동작에 따른 리드 패스인지가 판별될 수 있다(S430).
만일, SFR이 1-스테이지 DMA 동작에 따른 리드 패스를 지시할 때, 제어기(200)는 리드 데이터를 호스트 장치(11)로 출력할 수 있다(S440). 반면에, SFR이 1-스테이지 DMA 동작에 따른 리드 패스를 지시하지 않을 때, 제어기(200)는 2-스테이지 DMA 동작을 이용하여 리드 데이터를 호스트 장치(11)로 출력할 수 있다(S445).
도 12는 본 발명의 실시 예에 따른 호스트 시스템의 동작 방법을 예시적으로 보여주는 래더다이어그램이다. 도 12를 참조하면, 호스트 시스템은 다음과 같이 동작할 수 있다.
호스트 장치(HOST)는 저장 장치의 제어기(CTRL)로 리드 요청을 전송할 수 있다(S12). 제어기(CTRL)는 리드 요청을 수신하고, 리드 패스를 결정할 수 있다(S13). 제어기(CTRL)는 리드 요청에 대응하는 리드 커맨드를 비휘발성 메모리 장치(NVM)로 전송할 수 있다(S14). 비휘발성 메모리 장치(NVM)는 리드 커맨드에 응답하여 리드 동작을 수행할 수 있다(S15). 비휘발성 메모리 장치(NVM)는 리드 데이터를 제어기(CTRL)로 출력할 수 있다(S16). 제어기(CTRL)는 리드 데이터의 에러 정정 동작을 수행할 수 있다(S17). 제어기(CTRL)는 에러 정정된 데이터에 대하여 선택된 리드 패스에 대응하는 DMA 동작을 수행할 수 있다(S18). 여기서 DMA 동작은 1-스테이지 DMA 동작 혹은 2-스테이지 DMA 동작일 수 있다. 이러한 DMA 동작에 따라 리드 데이터는 호스트 장치(HOST)로 출력될 수 있다(S19).
도 13은 본 발명의 다른 실시 예에 따른 호스트 시스템의 동작 방법을 예시적으로 보여주는 래더다이어그램이다. 도 13을 참조하면, 호스트 시스템은 다음과 같이 동작할 수 있다.
호스트 장치(HOST)는 DMA 패스에 관련된 SFR 설정을 제어기(CTRL)에 요청할 수 있다(S20). 제어기(CTRL)는 호스트 장치(HOST)의 요청에 따라 SFR를 설정할 수 있다(S21). 한편, 제어기(CTRL)는 호스트 장치(HOST)의 요청 없이도 내부적인 정책에 따라 SFR를 설정할 수도 있다.
이후에, 호스트 장치(HOST)는 저장 장치의 제어기(CTRL)로 리드 요청을 전송할 수 있다(S22). 제어기(CTRL)는 리드 요청을 수신하고, SRF에 대응하는 리드 패스를 결정할 수 있다(S23). 제어기(CTRL)는 리드 요청에 대응하는 리드 커맨드를 비휘발성 메모리 장치(NVM)로 전송할 수 있다(S24). 비휘발성 메모리 장치(NVM)는 리드 커맨드에 응답하여 리드 동작을 수행할 수 있다(S25). 비휘발성 메모리 장치(NVM)는 리드 데이터를 제어기(CTRL)로 출력할 수 있다(S26). 제어기(CTRL)는 리드 데이터의 에러 정정 동작을 수행할 수 있다(S27). 제어기(CTRL)는 에러 정정된 데이터에 대하여 선택된 리드 패스에 대응하는 DMA 동작을 수행할 수 있다(S28). 여기서 DMA 동작은 1-스테이지 DMA 동작 혹은 2-스테이지 DMA 동작일 수 있다. 이러한 DMA 동작에 따라 리드 데이터는 호스트 장치(HOST)로 출력될 수 있다(S29).
한편, 본 발명은 UFS(Universal Flash Storage) 시스템에 적용 가능하다.
도 14는 본 발명의 실시 예에 따른 UFS 시스템(2000)을 예시적으로 보여주는 도면이다. UFS 시스템(2000)은 UFS 호스트(2100), UFS 장치(2200) 및 UFS 인터페이스(2300)를 포함할 수 있다. 도 1 내지 도 13에서 설명된 호스트 시스템(10)에 대한 설명은, 도 14의 UFS 시스템(2000)에 적용 될 수 있다. 도 14를 참조하면, UFS 호스트(2100)와 UFS 장치(2200)는 UFS 인터페이스(2300)를 통해 상호 연결될 수 있다.
UFS 호스트(2100)는 UFS 호스트 제어기(2110), 어플리케이션(2120), UFS 드라이버(2130), 호스트 메모리(2140) 및 UIC(UFS interconnect) 레이어(2150)를 포함할 수 있다. UFS 장치(2200)는 UFS 장치 제어기(2210), 비휘발성 메모리(2220), 스토리지 인터페이스(2230), 장치 메모리(2240), UIC 레이어(2250) 및 레귤레이터(2260)를 포함할 수 있다. 비휘발성 메모리(2220)는 복수의 메모리 유닛(2221)으로 구성될 수 있으며, 이와 같은 메모리 유닛(2221)은 2D 구조 혹은 3D 구조의 V-NAND 플래시 메모리를 포함할 수 있으나, PRAM 혹은 RRAM 등의 다른 종류의 비휘발성 메모리를 포함할 수도 있다. UFS 장치 제어기(2210)와 비휘발성 메모리(2220)는 스토리지 인터페이스(2230)를 통해 서로 연결될 수 있다. 스토리지 인터페이스(2230)는 Toggle 혹은 ONFI와 같은 표준 규약을 준수하도록 구현될 수 있다.
어플리케이션(2120)은 UFS 장치(2200)의 기능을 이용하기 위해 UFS 장치(2200)와의 통신을 원하는 프로그램을 의미할 수 있다. 어플리케이션(2120)은 UFS 장치(2200)에 대한 입출력을 위해 입출력 요청(input-output request, IOR)을 UFS 드라이버(2130)로 전송할 수 있다. 입출력 요청(IOR)은 데이터의 리드 요청, 쓰기 요청 혹은 소거(discard) 요청 등을 의미할 수 있으나, 반드시 이에 한정되는 것은 아니다.
UFS 드라이버(2130)는 UFS-HCI(host controller interface)를 통해 UFS 호스트 제어기(2110)를 관리할 수 있다. UFS 드라이버(2130)는 어플리케이션(2120)에 의해 생성된 입출력 요청을 UFS 표준에 의해 정의된 UFS 커맨드로 변환하고, 변환된 UFS 커맨드를 UFS 호스트 제어기(2110)로 전달할 수 있다. 하나의 입출력 요청은 복수의 UFS 커맨드로 변환될 수 있다. UFS 커맨드는 기본적으로 SCSI 표준에 의해 정의된 커맨드일 수 있지만, UFS 표준 전용 커맨드일 수도 있다.
UFS 호스트 제어기(2110)는 UFS 드라이버(2130)에 의해 변환된 UFS 커맨드를 UIC 레이어(2150)와 UFS 인터페이스(2300)를 통해 UFS 장치(2200)의 UIC 레이어(2250)로 전송할 수 있다. 이 과정에서, UFS 호스트 제어기(2110)의 UFS 호스트 레지스터(2111)는 커맨드 큐(command queue, CQ)로서의 역할을 수행할 수 있다.
UFS 호스트(2100) 측의 UIC 레이어(2150)는 MIPI M-PHY(2151)와 MIPI UniPro(2152)를 포함할 수 있으며, UFS 장치(2200) 측의 UIC 레이어(2250) 또한 MIPI M-PHY(2251)와 MIPI UniPro(2252)을 포함할 수 있다.
UFS 인터페이스(2300)는 기준 클럭(REF_CLK)을 전송하는 라인, UFS 장치(2200)에 대한 하드웨어 리셋 신호(RESET_n)를 전송하는 라인, 차동 입력 신호 쌍(DIN_t와 DIN_c)을 전송하는 한 쌍의 라인 및 차동 출력 신호 쌍(DOUT_t와 DOUT_c)을 전송하는 한 쌍의 라인을 포함할 수 있다.
UFS 호스트(2100)로부터 UFS 장치(2200)로 제공되는 기준 클럭(REF_CLK)의 주파수 값은 19.2MHz, 26MHz, 38.4MHz 및 52MHz의 네 개의 값 중 하나일 수 있으나, 반드시 이에 한정되지는 않는다. UFS 호스트(2100)는 동작 중에도, 즉 UFS 호스트(2100)와 UFS 장치(2200) 사이에서 데이터 송수신이 수행되는 중에도 기준 클럭(REF_CLK)의 주파수 값을 변경할 수 있다. UFS 장치(2200)는 위상 동기 루프(phase locked loop, PLL) 등을 이용하여, UFS 호스트(2100)로부터 제공받은 기준 클럭(REF_CLK)으로부터 다양한 주파수의 클럭을 생성할 수 있다. 또한, UFS 호스트(2100)는 기준 클럭(REF_CLK)의 주파수 값을 통해 UFS 호스트(2100)와 UFS 장치(2200) 간의 데이터 레이트의 값을 설정 할 수도 있다. 즉, 데이터 레이트의 값은 기준 클럭(REF_CLK)의 주파수 값에 의존하여 결정될 수 있다.
UFS 인터페이스(2300)는 복수의 레인들(multiple lanes)을 지원할 수 있으며, 각 레인은 차동(differential) 라인 쌍으로 구현될 수 있다. 예를 들어, UFS 인터페이스(2300)는 하나의 수신 레인(receive lane)과 하나의 송신 레인(transmit lane)을 포함할 수 있다. 도 14에서, 차동 입력 신호 쌍(DIN_T와 DIN_C)을 전송하는 한 쌍의 라인은 수신 레인을, 차동 출력 신호 쌍(DOUT_T와 DOUT_C)을 전송하는 한 쌍의 라인은 송신 레인을 각각 구성할 수 있다. 도 14에서는 하나의 송신 레인과 하나의 수신 레인을 도시하였지만, 송신 레인과 수신 레인의 개수는 변경될 수 있다.
수신 레인 및 송신 레인은 직렬 통신 방식으로 데이터를 전송할 수 있으며, 수신 레인과 송신 레인이 분리된 구조에 의해 UFS 호스트(2100)와 UFS 장치(2200) 간의 full-duplex 방식의 통신이 가능하다. 즉, UFS 장치(2200)는 수신 레인을 통해 UFS 호스트(2100)로부터 데이터를 수신 받는 동안에도, 송신 레인을 통해 UFS 호스트(2100)로 데이터를 송신할 수 있다. 또한, UFS 호스트(2100)로부터 UFS 장치(2200)로의 커맨드와 같은 제어 데이터와, UFS 호스트(2100)가 UFS 장치(2200)의 비휘발성 메모리(2220)에 저장하거나 비휘발성 메모리(2220)로부터 읽혀질 사용자 데이터는 동일한 레인을 통해 전송될 수 있다. 이에 따라, UFS 호스트(2100)와 UFS 장치(2200) 간에는 한 쌍의 수신 레인과 한 쌍의 송신 레인 외에 데이터 전송을 위한 별도의 레인이 더 구비될 필요가 없다.
UFS 장치(2200)의 UFS 장치 제어기(2210)는 UFS 장치(2200)의 동작을 전반적으로 제어할 수 있다. UFS 장치 제어기(2210)는 논리적인 데이터 저장 단위인 LU(logical unit)(2211)를 통해 비휘발성 메모리(2220)를 관리할 수 있다. LU(2211)의 개수는 8개일 수 있으나, 이에 한정되는 것은 아니다. UFS 장치 제어기(2210)는 플래시 변환 계층(flash translation layer, FTL)을 포함할 수 있으며, FTL의 어드레스 매핑(address mapping) 정보를 이용하여 UFS 호스트(2100)로부터 전달된 논리적인 데이터 어드레스, 예를 들어 LBA(logical block address)를 물리적인 데이터 어드레스로, 예를 들어 PBA(physical block address)로 변환할 수 있다. UFS 시스템(2000)에서 사용자 데이터의 저장을 위한 논리 블록은 소정 범위의 크기를 가질 수 있다. 예를 들어, 논리 블록의 최소 크기는 4 Kbyte로 설정될 수 있다. 한편, 논리 블록의 크기는 여기에 제한되지 않는다고 이해되어야 할 것이다.
UFS 호스트(2100)로부터의 커맨드가 UIC 레이어(2250)를 통해 UFS 장치(2200)로 입력되면, UFS 장치 제어기(2210)는 입력된 커맨드에 따른 동작을 수행하고, 상기 동작이 완료되면 완료 응답을 UFS 호스트(2100)로 전송할 수 있다.
실시 예에 있어서, UFS 호스트(2100)가 UFS 장치(2200)에 사용자 데이터를 저장하고자 할 경우, UFS 호스트(2100)는 데이터 저장 커맨드를 UFS 장치(2200)로 전송할 수 있다. 사용자 데이터를 전송 받을 준비가 되었다(ready-to-transfer)는 응답을 UFS 장치(2200)로부터 수신하면, UFS 호스트(2100)는 사용자 데이터를 UFS 장치(2200)로 전송할 수 있다. UFS 장치 제어기(2210)는 전송 받은 사용자 데이터를 장치 메모리(2240) 내에 임시로 저장하고, FTL의 어드레스 매핑 정보에 기초하여 장치 메모리(2240)에 임시로 저장된 사용자 데이터를 비휘발성 메모리(2220)의 선택된 위치에 저장할 수 있다.
실시 예에 있어서, UFS 호스트(2100)가 UFS 장치(2200)에 저장된 사용자 데이터를 읽고자 할 경우, UFS 호스트(2100)는 데이터 리드 커맨드를 UFS 장치(2200)로 전송할 수 있다. 커맨드를 수신한 UFS 장치 제어기(2210)는 상기 데이터 리드 커맨드에 기초하여 비휘발성 메모리(2220)로부터 사용자 데이터를 읽고, 읽혀진 사용자 데이터를 장치 메모리(2240) 내에 임시로 저장할 수 있다. 이러한 읽기 과정에서, UFS 장치 제어기(2210)는 내장된 ECC(error correction code) 엔진을 이용하여, 읽혀진 사용자 데이터의 에러를 검출하고 정정할 수 있다.
구체적으로, ECC 엔진은 비휘발성 메모리(2220)에 쓰여질 쓰기 데이터에 대하여 패리티 비트들을 생성할 수 있으며, 이와 같이 생성된 패리티 비트들은 쓰기 데이터와 함께 비휘발성 메모리(2220) 내에 저장될 수 있다. 비휘발성 메모리(2220)로부터의 데이터 읽기 시, ECC 엔진은 리드 데이터와 함께 비휘발성 메모리(2220)로부터 읽혀진 패리티 비트들을 이용하여 리드 데이터의 에러를 정정하고, 에러가 정정된 리드 데이터를 출력할 수 있다.
또한, UFS 장치 제어기(2210)는 장치 메모리(2240) 내에 임시로 저장된 사용자 데이터를 UFS 호스트(2100)로 전송할 수 있다. 아울러, UFS 장치 제어기(2210)는 AES(advanced encryption standard) 엔진을 더 포함할 수 있다. AES 엔진은, UFS 장치 제어기(2210)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나를, 대칭 키 알고리즘(symmetric-key algorithm)을 이용하여 수행할 수 있다.
UFS 호스트(2100)는 커맨드 큐로 기능할 수 있는 UFS 호스트 레지스터(2111)에 UFS 장치(2200)로 송신될 커맨드들을 순서에 따라 저장하고, 순서대로 UFS 장치(2200)에 커맨드를 송신할 수 있다. 이 때, UFS 호스트(2100)는 이전에 송신된 커맨드가 아직 UFS 장치(2200)에 의해 처리 중인 경우에도, 즉 이전에 송신된 커맨드가 UFS 장치(2200)에 의해 처리가 완료되었다는 통지를 받기 전에도 커맨드 큐에 대기 중인 다음 커맨드를 UFS 장치(2200)로 송신할 수 있다. 이에 따라 UFS 장치(2200) 역시 이전에 송신된 커맨드를 처리하는 중에도 다음 커맨드를 UFS 호스트(2100)로부터 수신할 수 있다. 이와 같은 커맨드 큐에 저장될 수 있는 커맨드의 최대 개수(queue depth)는 예를 들어 32개일 수 있다. 또한, 커맨드 큐는 헤드 포인터(head point)와 테일 포인터(tail pointer)를 통해 큐에 저장된 커맨드 열의 시작과 끝을 각각 나타내는 서큘러 큐(circular queue) 타입으로 구현될 수 있다.
복수의 메모리 유닛들(2221)의 각각은 메모리 셀 어레이와 메모리 셀 어레이의 작동을 제어하는 제어 회로를 포함할 수 있다. 메모리 셀 어레이는 2차원 메모리 셀 어레이 혹은 3차원 메모리 셀 어레이를 포함할 수 있다. 메모리 셀 어레이는 복수의 메모리 셀을 포함할 수 있다. 각각의 메모리 셀은 1비트의 정보를 저장하는 셀(single level cell, SLC)일 수도 있지만, MLC(multi level cell), TLC(triple level cell), QLC(quadruple level cell)와 같이 2비트 이상의 정보를 저장하는 셀일 수도 있다. 3차원 메모리 셀 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직으로 배향되는 수직형 NAND 스트링을 포함할 수 있다.
UFS 장치(2200)는 전원 전압으로서 VCC, VCCQ, VCCQ2 등이 입력될 수 있다. VCC는 UFS 장치(2200)를 위한 주 전원 전압으로서, 2.4 ~ 3.6V의 값을 가질 수 있다. VCCQ는 낮은 범위의 전압을 공급하기 위한 전원 전압으로서, 주로 UFS 장치 제어기(2210)를 위한 것이며, 1.14 ~ 1.26V의 값을 가질 수 있다. VCCQ2는 VCC보다는 낮지만 VCCQ보다는 높은 범위의 전압을 공급하기 위한 전원 전압으로서, 주로 MIPI M-PHY(2251)와 같은 입출력 인터페이스를 위한 것이며, 1.7 ~ 1.95V의 값을 가질 수 있다. 전원 전압들은 레귤레이터(2260)를 거쳐 UFS 장치(2200)의 각 구성 요소들을 위해 공급될 수 있다. 레귤레이터(2260)는 상술된 전원 전압들 중 서로 다른 것에 각각 연결되는 단위 레귤레이터의 집합으로 구현될 수 있다.
한편, 본 발명의 저장 장치는 데이터 서버 시스템에 적용 가능하다.
도 15는 본 발명의 실시 예에 따른 메모리 장치가 적용된 데이터 센터를 예시적으로 보여주는 도면이다. 도 15를 참조하면, 데이터 센터(7000)는 어플리케이션 서버들(7100 내지 7100n) 및 저장 서버들(7200 내지 7200m)을 포함할 수 있다. 어플리케이션 서버들(7100 내지 7100n)의 개수 및 저장 서버들(7200 내지 7200m)의 개수는 실시 예에 따라 다양하게 선택될 수 있고, 어플리케이션 서버들(7100 내지 7100n)의 개수 및 저장 서버들(7200 내지 7200m)의 개수는 서로 다를 수 있다.
어플리케이션 서버(7100) 혹은 저장 서버(7200)는 프로세서(7110, 7210) 및 메모리(7120, 7220) 중 적어도 하나를 포함할 수 있다. 저장 서버(7200)를 예시로 설명하면, 프로세서(7210)는 저장 서버(7200)의 전반적인 동작을 제어할 수 있고, 메모리(7220)에 억세스하여 메모리(7220)에 로딩된 명령어 혹은 데이터를 실행할 수 있다. 메모리(7220)는 DDR SDRAM(Double Data Rate Synchronous DRAM), HBM(High Bandwidth Memory), HMC(Hybrid Memory Cube), DIMM(Dual In-line Memory Module), Optane DIMM 혹은 NVMDIMM(Non-Volatile DIMM)일 수 있다. 실시 예에 따라, 저장 서버(7200)에 포함되는 프로세서(7210)의 개수 및 메모리(7220)의 개수는 다양하게 선택될 수 있다. 실시 예에서, 프로세서(7210)와 메모리(7220)는 프로세서-메모리 페어를 제공할 수 있다. 실시 예에서, 프로세서(7210)와 메모리(7220)의 개수는 서로 다를 수도 있다. 프로세서(7210)는 싱글 코어 프로세서 혹은 멀티 코어 프로세서를 포함할 수 있다. 저장 서버(7200)에 대한 상기 설명은, 어플리케이션 서버(7100)에도 유사하게 적용될 수 있다. 실시 예에 따라, 어플리케이션 서버(7100)는 저장 장치(7150)를 포함하지 않을 수도 있다. 저장 서버(7200)는 적어도 하나의 저장 장치(7250)를 포함할 수 있다. 저장 서버(7200)에 포함되는 저장 장치(7250)의 개수는 실시 예에 따라 다양하게 선택될 수 있다.
어플리케이션 서버들(7100 내지 7100n) 및 저장 서버들(7200 내지 7200m)은 네트워크(7300)를 통해 서로 통신할 수 있다. 네트워크(7300)는 FC(Fiber Channel) 혹은 Ethernet 등을 이용하여 구현될 수 있다. 이 때, FC는 상대적으로 고속의 데이터 전송에 사용되는 매체이며, 고성능/고가용성을 제공하는 광 스위치를 사용할 수 있다. 네트워크(7300)의 억세스 방식에 따라 저장 서버들(7200 내지 7200m)은 파일 저장 매체, 블록 저장 매체, 혹은 오브젝트 저장 매체으로서 제공될 수 있다.
실시 예에서, 네트워크(7300)는 SAN(Storage Area Network)와 같은 저장 전용 네트워크일 수 있다. 예를 들어, SAN은 FC 네트워크를 이용하고 FCP(FC Protocol)에 따라 구현된 FC-SAN일 수 있다. 다른 예를 들어, SAN은 TCP/IP 네트워크를 이용하고 iSCSI(SCSI over TCP/IP 혹은 Internet SCSI) 프로토콜에 따라 구현된 IP-SAN일 수 있다. 다른 실시 예에서, 네트워크(7300)는 TCP/IP 네트워크와 같은 일반 네트워크일 수 있다. 예를 들어, 네트워크(7300)는 FCoE(FC over Ethernet), NAS(Network Attached Storage), NVMe-oF(NVMe over Fabrics) 등의 프로토콜에 따라 구현될 수 있다. 어플리케이션 서버(7100)에 대한 설명은 다른 어플리케이션 서버(7100n)에도 적용될 수 있고, 저장 서버(7200)에 대한 설명은 다른 저장 서버(7200m)에도 적용될 수 있다.
어플리케이션 서버(7100)는 사용자 혹은 클라이언트가 저장 요청한 데이터를 네트워크(7300)를 통해 저장 서버들(7200 내지 7200m) 중 하나에 저장할 수 있다. 또한, 어플리케이션 서버(7100)는 사용자 혹은 클라이언트가 리드 요청한 데이터를 저장 서버들(7200 내지 7200m) 중 하나로부터 네트워크(7300)를 통해 획득할 수 있다. 예를 들어, 어플리케이션 서버(7100)는 웹 서버 혹은 DBMS(Database Management System) 등으로 구현될 수 있다.
어플리케이션 서버(7100)는 네트워크(7300)를 통해 다른 어플리케이션 서버(7100n)에 포함된 메모리(7120n) 혹은 저장 장치(7150n)에 억세스할 수 있고, 혹은 네트워크(7300)를 통해 저장 서버(7200 ~ 7200m)에 포함된 메모리(7220 ~ 7220m) 혹은 저장 장치(7250 ~ 7250m)에 억세스할 수 있다. 이로써, 어플리케이션 서버(7100)는 어플리케이션 서버들(7100 ~ 7100n) 혹은 저장 서버들(7200 ~ 7200m)에 저장된 데이터에 대해 다양한 동작들을 수행할 수 있다. 예를 들어, 어플리케이션 서버(7100)는 어플리케이션 서버들(7100 ~ 7100n) 혹은 저장 서버들(7200 ~ 7200m) 사이에서 데이터를 이동 혹은 복사하기 위한 커맨드를 실행할 수 있다. 이 때 데이터는 저장 서버들(7200 ~ 7200m)의 저장 장치로(7250 ~ 7250m)부터 저장 서버들(7200 ~ 7200m)의 메모리들(7220 ~ 7220m)을 거쳐서, 혹은 바로 어플리케이션 서버들(7100 ~ 7100n)의 메모리(7120 ~ 7120n)로 이동될 수 있다. 네트워크(7300)를 통해 이동하는 데이터는 보안 혹은 프라이버시를 위해 암호화된 데이터일 수 있다.
저장 서버(7200)를 예시로 설명하면, 인터페이스(7254)는 프로세서(7210)와 제어기(7251)의 물리적 연결 및 NIC(7240)와 제어기(7251)의 물리적 연결을 제공할 수 있다. 예를 들어, 인터페이스(7254)는 저장 장치(7250)를 전용 케이블로 직접 접속하는 DAS(Direct Attached Storage) 방식으로 구현될 수 있다. 또한, 예를 들어, 인터페이스(1254)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe(NVM express), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC(embedded multi-media card), UFS(Universal Flash Storage), eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.
저장 서버(7200)는 스위치(7230) 및 NIC(7240)을 더 포함할 수 있다. 스위치(7230)는 프로세서(7210)의 제어에 따라 프로세서(7210)와 저장 장치(7250)를 선택적으로 연결시키거나, NIC(7240)과 저장 장치(7250)를 선택적으로 연결시킬 수 있다.
실시 예에서 NIC(7240)는 네트워크 인터페이스 카드, 네트워크 어댑터 등을 포함할 수 있다. NIC(7240)는 유선 인터페이스, 무선 인터페이스, 블루투스 인터페이스, 광학 인터페이스 등에 의해 네트워크(7300)에 연결될 수 있다. NIC(7240)는 내부 메모리, DSP, 호스트 버스 인터페이스 등을 포함할 수 있으며, 호스트 버스 인터페이스를 통해 프로세서(7210) 혹은 스위치(7230) 등과 연결될 수 있다. 호스트 버스 인터페이스는, 앞서 설명한 인터페이스(7254)의 예시들 중 하나로 구현될 수도 있다. 실시 예에서, NIC(7240)는 프로세서(7210), 스위치(7230), 저장 장치(7250) 중 적어도 하나와 통합될 수도 있다.
저장 서버(7200 ~ 7200m) 혹은 어플리케이션 서버(7100 ~ 7100n)에서 프로세서는 저장 장치(7130 ~ 7130n, 7250 ~ 7250m) 혹은 메모리(7120 ~ 7120n, 7220 ~ 7220m)로 커맨드를 전송하여 데이터를 프로그램 혹은 리드할 수 있다. 이 때 데이터는 ECC(Error Correction Code) 엔진을 통해 에러 정정된 데이터일 수 있다. 데이터는 데이터 버스 변환(Data Bus Inversion: DBI) 혹은 데이터 마스킹(Data Masking: DM) 처리된 데이터로서, CRC(Cyclic Redundancy Code) 정보를 포함할 수 있다. 데이터는 보안 혹은 프라이버시를 위해 암호화된 데이터일 수 있다.
저장 장치(7150 ~ 7150m, 7250 ~ 7250m)는 프로세서로부터 수신된 리드 커맨드에 응답하여, 제어 신호 및 커맨드/어드레스 신호를 NAND 플래시 메모리 장치(7252 ~ 7252m)로 전송할 수 있다. 이에 따라 NAND 플래시 메모리 장치(7252 ~ 7252m)로부터 데이터를 리드하는 경우, RE(Read Enable) 신호는 데이터 출력 제어 신호로 입력되어, 데이터를 DQ 버스로 출력하는 역할을 할 수 있다. RE 신호를 이용하여 DQS(Data Strobe)를 생성할 수 있다. 커맨드와 어드레스 신호는 WE(Write Enable) 신호의 상승 엣지 혹은 하강 엣지에 따라 페이지 버퍼에 래치 될 수 있다.
실시 예에 있어서, 저장 장치(7150 ~ 7150m, 7250 ~ 7250m)는 도 1 내지 도 13에서 설명된 리드 패스를 선택적으로 운용할 수 있다.
제어기(7251)는 저장 장치(7250)의 동작을 전반적으로 제어할 수 있다. 실시 예에서, 제어기(7251)는 SRAM(Static Random Access Memory)을 포함할 수 있다. 제어기(7251)는 라이트 커맨드에 응답하여 낸드 플래시(7252)에 데이터를 라이트 할 수 있고, 혹은 리드 커맨드에 응답하여 낸드 플래시(7252)로부터 데이터를 리드할 수 있다. 예를 들어, 라이트 커맨드 혹은 리드 커맨드는 저장 서버(7200) 내의 프로세서(7210), 다른 저장 서버(7200m) 내의 프로세서(7210m) 혹은 어플리케이션 서버(7100, 7100n) 내의 프로세서(7110, 7110n)로부터 제공될 수 있다. DRAM(7253)은 낸드 플래시(7252)에 라이트 될 데이터 혹은 낸드 플래시(7252)로부터 리드된 데이터를 임시 저장(버퍼링)할 수 있다. 또한, DRAM(7253)은 메타 데이터를 저장할 수 있다. 여기서, 메타 데이터는 사용자 데이터 혹은 낸드 플래시(7252)를 관리하기 위해 제어기(7251)에서 생성된 데이터이다.
본 발명의 실시 예에 따른 저장 장치 및 그것의 동작 방법은, LDPC output SRAM을 Read Buffer로 이용함으로써 전용 Read Buffer 축소 호는 제거할 수 있다.
본 발명의 실시 예에 따른 저장 장치 및 그것의 동작 방법은, Host Command 속성에 따라 혹은 사용자의 요청에 따라 Read Path 이원화 할 수 있다.
한편, 상술된 본 발명의 내용은 발명을 실시하기 위한 구체적인 실시 예들에 불과하다. 본 발명은 구체적이고 실제로 이용할 수 있는 수단 자체뿐 아니라, 장치 기술로 이용 할 수 있는 추상적이고 개념적인 아이디어인 기술적 사상을 포함 할 것이다.
10: 호스트 시스템
11: 호스트 장치
12: 저장 장치
100: 비휘발성 메모리 장치
150: 제어 로직
200: 제어기
201: 호스트 인터페이스 회로
202: 비휘발성 메모리 인터페이스 회로
241: 호스트 DMA 매니저
251: 비휘발성 메모리 DMA 매니저

Claims (20)

  1. 저장 장치의 동작 방법에 있어서,
    호스트 장치로부터 호스트 리드 커맨드를 수신하는 단계;
    상기 호스트 리드 커맨드에 대응하는 리드 패스가 제 1 DMA(Direct Memory Access) 리드 패스 인지를 판별하는 단계; 및
    상기 리드 패스가 상기 제 1 DMA 리드 패스 일 때, 호스트 DMA 매니저에 의해 에러 정정 회로의 출력 버퍼의 리드 데이터를 상기 호스트 장치로 직접 출력하는 단계를 포함하고,
    상기 제 1 DMA 리드 패스인 지를 판별하는 단계는, 상기 호스트 리드 커맨드의 속성 혹은 사용자의 요청에 따라 상기 리드 패스를 선택하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제 1 항에 있어서,
    상기 리드 패스가 상기 제 1 DMA 리드 패스가 아닐 때, 상기 에러 정정 회로의 상기 출력 버퍼의 상기 리드 데이터를 버퍼 메모리로 출력하는 단계; 및
    상기 호스트 DMA 매니저에 의해 상기 버퍼 메모리에 모여진 리드 데이터를 상기 호스트 장치로 출력하는 단계를 더 포함하는 방법.
  3. 삭제
  4. 제 1 항에 있어서,
    상기 제 1 DMA 리드 패스인 지를 판별하는 단계는,
    상기 호스트 리드 커맨드가 랜덤 리드 커맨드인 지를 판별하는 단계를 더 포함하는 방법.
  5. 제 1 항에 있어서,
    상기 제 1 DMA 리드 패스인 지를 판별하는 단계는,
    상기 제 1 DMA 리드 패스를 지시하는 SFR(Special Feature Register)를 읽는 단계를 더 포함하는 방법.
  6. 제 5 항에 있어서,
    상기 SFR를 설정하는 단계를 더 포함하는 방법.
  7. 제 6 항에 있어서,
    상기 호스트 장치에 요청에 따라 상기 SFR가 설정되는 것을 특징으로 하는 방법.
  8. 제 6 항에 있어서,
    상기 저장 장치의 내부 정책에 따라 상기 SFR가 설정되는 것을 특징으로 하는 방법.
  9. 제 1 항에 있어서,
    비휘발성 DMA 매니저에 의해 비휘발성 메모리 장치로부터 리드 데이터를 상기 에러 정정 회로로 직접 전송하는 단계를 더 포함하는 방법.
  10. 제 1 항에 있어서,
    상기 출력 버퍼는 LDPC(Low Density Parity Check) 회로의 SRAM(Static Random Access Memory)인 것을 특징으로 하는 방법.
  11. 비휘발성 메모리 장치를 제어하는 제어기의 동작 방법에 있어서,
    호스트 장치로부터 리드 요청을 수신하는 단계;
    상기 리드 요청의 속성 혹은 사용자의 요청에 따라 리드 패스를 판별하는 단계;
    상기 리드 요청에 대응하는 리드 커맨드를 상기 비휘발성 메모리 장치로 전송하는 단계;
    상기 비휘발성 메모리 장치로부터 상기 리드 커맨드에 대응하는 리드 데이터를 수신하는 단계;
    상기 리드 데이터에 대한 에러 정정 동작을 수행하는 단계;
    상기 리드 패스에 따라 1-스테이지 DMA(Direct Memory Access) 동작 및 2-스테이지 DMA 동작 중 어느 하나를 수행하는 단계; 및
    상기 1-스테이지 DMA 동작 및 상기 2-스테이지 DMA 동작 중 상기 어느 하나를 수행함으로써 상기 에러 정정된 리드 데이터를 상기 호스트 장치로 전송하는 단계를 포함하고,
    상기 1-스테이지 DMA 동작은 에러 정정 회로의 출력 버퍼에서 상기 호스트 장치로 상기 에러 정정된 리드 데이터를 직접 전송하고,
    상기 2-스테이지 DMA 동작은 상기 출력 버퍼에서 버퍼 메모리로 상기 에러 정정된 리드 데이터를 전송한 후, 상기 버퍼 메모리에서 적어도 2개의 에러 정정된 리드 데이터를 상기 호스트 장치로 직접 전송하는 것을 특징으로 하는 방법.
  12. 제 11 항에 있어서,
    상기 리드 요청의 속성은 수신된 어드레스를 이용하여 랜덤 리드인 지가 판별되는 것을 특징으로 하는 방법.
  13. 제 11 항에 있어서,
    상기 사용자의 요청에 따라 상기 리드 패스를 상기 1-스테이지 DMA 동작을 위한 제 1 리드 패스 혹은 상기 2-스테이지 DMA 동작을 위한 제 2 리드 패스가 SFR(Special Feature Register)에 설정되고,
    상기 SFR를 읽음으로써 상기 리드 패스가 판별되는 것을 특징으로 하는 방법.
  14. 제 13 항에 있어서,
    상기 SFR은 상기 호스트 장치의 요청 혹은 내부 정책에 따라 설정되는 것을 특징으로 하는 방법.
  15. 삭제
  16. 적어도 하나의 비휘발성 메모리 장치; 및
    상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 제어기를 포함하고,
    상기 제어기는,
    호스트 장치에 연결되는 호스트 인터페이스 회로;
    상기 적어도 하나의 비휘발성 메모리 장치에 연결되는 비휘발성 인터페이스 회로;
    상기 적어도 하나의 비휘발성 메모리 장치로부터 읽혀진 리드 데이터의 에러를 정정하고, 리드 패스가 제 1 리드 패스일 때 호스트 DMA(Direct Memory Access) 매니저에 의해 출력 버퍼의 제 1 리드 데이터를 상기 호스트 인터페이스 회로로 출력하는 에러 정정 회로; 및
    상기 리드 패스가 제 2 리드 패스일 때 상기 에러 정정 회로의 상기 출력 버퍼로부터 상기 제 1 리드 데이터를 수신하고, 상기 호스트 DMA 매니저에 의해 제 2 리드 데이터를 상기 호스트 인터페이스 회로로 출력하는 버퍼 메모리를 포함하고,
    상기 제어기는 상기 호스트 장치로부터 수신된 어드레스를 이용하여 리드 요청이 랜덤 리드 요청인 지를 판별하고, 상기 리드 요청이 랜덤 리드 요청일 때 상기 리드 패스로 상기 제 1 리드 패스를 선택하는 것을 특징으로 하는 저장 장치.
  17. 제 16 항에 있어서,
    상기 제어기는 상기 제 1 리드 패스 및 상기 제 2 리드 패스 중 어느 하나를 상기 리드 패스로 선택하는 것을 특징으로 하는 저장 장치.
  18. 삭제
  19. 제 16 항에 있어서,
    상기 제어기는 상기 리드 패스가 상기 제 1 리드 패스인지 상기 제 2 리드 패스인 지를 지시하는 값을 저장하는 SFR(Special Feature Register)를 더 포함하는 저장 장치.
  20. 제 16 항에 있어서,
    상기 버퍼 메모리는 SRAM(Static Random Access Memory)인 것을 특징으로 하는 저장 장치.
KR1020220006688A 2021-11-24 2022-01-17 비휘발성 메모리 장치를 제어하는 제어기, 그것을 포함하는 저장 장치 및 그것의 동작 방법 KR102547251B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
US17/740,794 US11841767B2 (en) 2021-11-24 2022-05-10 Controller controlling non-volatile memory device, storage device including the same, and operating method thereof
TW111122779A TW202321926A (zh) 2021-11-24 2022-06-20 儲存裝置及其操作方法、以及控制器的操作方法
EP22181530.1A EP4187398A1 (en) 2021-11-24 2022-06-28 Controller controlling non-volatile memory device, storage device including the same, and operating method thereof
CN202211303596.3A CN116168748A (zh) 2021-11-24 2022-10-24 存储设备、存储设备的操作方法以及控制器的操作方法
US18/501,689 US20240061746A1 (en) 2021-11-24 2023-11-03 Controller controlling non-volatile memory device, storage device including the same, and operating method thereof

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20210162954 2021-11-24
KR1020210162954 2021-11-24

Publications (2)

Publication Number Publication Date
KR20230076709A KR20230076709A (ko) 2023-05-31
KR102547251B1 true KR102547251B1 (ko) 2023-06-26

Family

ID=86542946

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220006688A KR102547251B1 (ko) 2021-11-24 2022-01-17 비휘발성 메모리 장치를 제어하는 제어기, 그것을 포함하는 저장 장치 및 그것의 동작 방법

Country Status (1)

Country Link
KR (1) KR102547251B1 (ko)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8724361B2 (en) * 2012-02-02 2014-05-13 Mauro Pagliato DMA architecture for NAND-type flash memory
KR20180049338A (ko) * 2016-10-31 2018-05-11 삼성전자주식회사 저장 장치 및 그것의 동작 방법
KR20190123984A (ko) * 2018-04-25 2019-11-04 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR20210112872A (ko) * 2020-03-06 2021-09-15 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법

Also Published As

Publication number Publication date
KR20230076709A (ko) 2023-05-31

Similar Documents

Publication Publication Date Title
US10496312B2 (en) Method of operating a storage device to compress or decompress data and a data storage system including the storage device
US11567685B2 (en) Storage controller and storage device including the same
US10922000B2 (en) Controller, operating method thereof, and memory system including the same
US11698855B2 (en) Method, memory controller and storage device to perform garbage collection based on fragmentation ratio of blocks
US20230092562A1 (en) System, device, and method for memory interface including reconfigurable channel
KR20200114212A (ko) 데이터 저장 장치 및 그것의 동작 방법
CN114637461A (zh) 存储设备和包括存储设备的存储系统
US20230075820A1 (en) Event log management method, controller and storage device
US20230153006A1 (en) Data processing method and data processing device
KR20210006556A (ko) 컨트롤러, 메모리 시스템 및 그것의 동작 방법
US11681638B2 (en) Method of synchronizing time between host device and storage device and system performing the same
US20220197510A1 (en) Storage device for executing processing code and operating method of the storage device
KR102547251B1 (ko) 비휘발성 메모리 장치를 제어하는 제어기, 그것을 포함하는 저장 장치 및 그것의 동작 방법
EP4187398A1 (en) Controller controlling non-volatile memory device, storage device including the same, and operating method thereof
US10515693B1 (en) Data storage apparatus and operating method thereof
US20230376247A1 (en) Embedded storage device, host system having the same, and method of operating the same
US11733875B2 (en) Method of writing data in nonvolatile memory device and nonvolatile memory device performing the same
US20230092380A1 (en) Operation method of memory controller configured to control memory device
KR20190037659A (ko) 불휘발성 메모리 장치, 불휘발성 메모리 장치의 동작 방법 및 불휘발성 메모리 장치를 포함하는 데이터 저장 장치
US11893270B2 (en) Storage device, and host-storage system including the storage device
US11842076B2 (en) Storage system and operating method for same
EP4152333A2 (en) Operation method of memory controller configured to control memory device
US20230409219A1 (en) Storage device and method of operating the same
US20230146540A1 (en) Storage device and an operating method of a storage controller thereof
US20230143943A1 (en) Method of operating storage device for retention enhancement and storage device performing the same

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant