KR20140035776A - 임베디드 멀티미디어 카드, 이를 제어하는 호스트, 및 이들의 동작 방법 - Google Patents

임베디드 멀티미디어 카드, 이를 제어하는 호스트, 및 이들의 동작 방법 Download PDF

Info

Publication number
KR20140035776A
KR20140035776A KR1020120102488A KR20120102488A KR20140035776A KR 20140035776 A KR20140035776 A KR 20140035776A KR 1020120102488 A KR1020120102488 A KR 1020120102488A KR 20120102488 A KR20120102488 A KR 20120102488A KR 20140035776 A KR20140035776 A KR 20140035776A
Authority
KR
South Korea
Prior art keywords
command
data
host
emmc
queue
Prior art date
Application number
KR1020120102488A
Other languages
English (en)
Other versions
KR101988260B1 (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 KR1020120102488A priority Critical patent/KR101988260B1/ko
Priority to US14/025,866 priority patent/US9619175B2/en
Publication of KR20140035776A publication Critical patent/KR20140035776A/ko
Application granted granted Critical
Publication of KR101988260B1 publication Critical patent/KR101988260B1/ko

Links

Images

Classifications

    • 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
    • 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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0688Non-volatile semiconductor memory arrays
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers

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)
  • Information Transfer Systems (AREA)
  • Memory System (AREA)

Abstract

임베디드 멀티미디어 카드(eMMC), 이를 제어하는 호스트, 및 이들의 동작 방법이 개시된다. 본 발명의 eMMC는 플래시 메모리; 및 호스트로부터 제1 명령을 수신하고 상기 플래시 메모리에 대하여 상기 제1 명령에 상응하는 동작을 완료하기 전에 상기 호스트로부터 제2 명령을 수신하여 저장하는 디바이스 컨트롤러를 포함한다.

Description

임베디드 멀티미디어 카드, 이를 제어하는 호스트, 및 이들의 동작 방법 {EMBEDDED MULTIMEDIA CARD(eMMC), HOST FOR CONTROLLING THE eMMC, AND METHODS FOR OPERATING THE eMMC AND THE HOST}
본 발명의 개념에 따른 실시 예는 임베디드 멀티미디어 카드((embedded Multimedia Card(eMMC))에 관한 것으로, 특히 리드(read)/라이트(write) 성능을 개선할 수 있는 eMMC, 상기 eMMC를 제어하는 호스트, 및 이들의 동작 방법에 관한 것이다.
멀티미디어 카드(MultiMediaCard(MMC)는 플래시(flash) 메모리의 메모리 카드 표준이다.
eMMC는 JEDEC에서 표준으로 정한 내장형 MMC에 대한 표준이다. eMMC 통신은 10개의 신호 버스(10-signal bus)에 기반한다. eMMC은 스마트폰과 같은 이동 통신 장치에 내장되어 사용될 수 있다.
본 발명이 이루고자 하는 기술적인 과제는 리드(read)/라이트(write) 성능을 개선할 수 있는 eMMC, 상기 eMMC를 제어하는 호스트, 및 이들의 동작 방법을 제공하는 것이다.
본 발명의 실시 예에 따른 임베디드 멀티미디어 카드(embedded Multimedia Card(eMMC))는 플래시 메모리; 및 호스트로부터 제1 명령을 수신하고 상기 플래시 메모리에 대하여 상기 제1 명령에 상응하는 동작을 완료하기 전에 상기 호스트로부터 제2 명령을 수신하여 저장하는 디바이스 컨트롤러를 포함한다.
상기 제1 명령 및 상기 제2 명령은 각각 명령의 종류를 나타내는 명령 타입, 명령을 수행할 어드레스, 및 데이터 크기를 포함할 수 있다.
상기 디바이스 컨트롤러는 각각이 명령 정보를 저장할 수 있는 N(2이상의 자연수)개의 명령 정보 레지스터들을 포함하고, 상기 제1 명령에 상응하는 제1 명령 정보는 상기 N개의 명령 정보 레지스터들 중 제1 명령 레지스터에 저장하고 상기 제2 명령에 상응하는 제2 명령 정보는 상기 N개의 명령 정보 레지스터들 중 제2 명령 레지스터에 저장할 수 있다.
상기 플래시 메모리는 상기 N 개수를 저장하기 위한 Extended CSD 레지스터를 더 포함할 수 있다.
상기 디바이스 컨트롤러는 상기 N개의 명령 정보에 상응하는 데이터를 저장하기 위한 M(2이상의 자연수)개의 데이터 버퍼들을 포함할 수 있다.
상기 제1 명령 및 상기 제2 명령 정보는 각각 상기 명령 타입, 상기 어드레스, 및 상기 데이터 크기를 포함하고, 상기 명령 타입은 멀티 큐 리드 명령 및 멀티 큐 라이트 명령을 포함할 수 있다.
본 발명의 실시 예에 따르면, 호스트와 클락 버스, 명령 버스, 및 데이터 버스를 통해 연결되는 임베디드 멀티미디어 카드(embedded Multimedia Card(eMMC))의 동작 방법은 호스트로부터 제1 명령을 수신하여 N(2이상의 자연수) 명령 레지스터들 중 제1 명령 레지스터에 저장하는 단계; 및 상기 호스트로부터 제2 명령을 수신하여 상기 명령 레지스터들 중 제2 명령 레지스터에 저장하는 단계를 포함하며, 상기 제2 명령은 상기 제1 명령에 상응하는 동작이 완료되기 전에 상기 호스트로부터 수신된다.
상기 제1 명령 및 상기 제2 명령은 각각 명령의 종류를 나타내는 명령 타입, 명령을 수행할 어드레스, 및 데이터 크기를 포함할 수 있다.
본 발명의 실시 예에 따른 임베디드 멀티미디어 카드(embedded Multimedia Card(eMMC))를 제어하는 호스트의 동작 방법은 제1 명령을 명령 버스를 통해 상기 eMMC로 전송하는 단계; 상기 제1 명령에 상응하는 데이터를 데이터 버스를 통해 상기 eMMC로 전송하거나, 상기 eMMC로부터 수신하는 단계; 및 상기 데이터 전송 중에 또는 상기 데이터 전송 전에 제2 명령을 상기 명령 버스를 통해 상기 eMMC로 전송하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따르면, 호스트는 eMMC의 리드/라이트 동작이 완료되기 전에 다음 리드/라이트 명령을 eMMC에 보낼 수 있다. 따라서, eMMC의 리드/라이트 동작 중에도 다음 리드/라이트 명령에 대한 준비 동작을 수행할 수 있다. 따라서, eMMC의 리드/라이트 성능을 향상시킬 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 임베디드 멀티미디어 카드(embedded multimedia card(eMMC)) 시스템의 블록도를 나타낸다.
도 2는 본 발명의 일 실시예에 따른 eMMC 장치의 블록도이다.
도 3a는 도 2에 도시된 명령 레지스터들의 일 실시예를 나타낸다.
도 3b는 도 3a의 레지스터에 저장되는 멀티 큐 명령 정보의 일 실시예를 나타낸다.
도 4는 본 발명의 일 실시 예에 따른 eMMC 펌웨어의 구성을 나타내는 블록도이다.
도 5는 도 2에 도시된 멀티 큐 자료 구조의 구성의 일 실시 예를 나타낸다.
도 6은 도 5에 도시된 멀티 큐 자료 구조 내에 저장되는 멀티 큐 명령 정보의 일 예를 나타낸다.
도 7은 본 발명의 일 실시 예에 따른 멀티 큐를 이용한 eMMC 동작 방법을 나타내는 플로우차트이다.
도 8은 본 발명의 일 실시 예에 따른 멀티 큐 리드 동작 방법과 통상의 eMMC의 리드 동작 방법을 비교하기 위한 개략적인 타이밍 도이다.
도 9a 및 도 9b는 본 발명의 일 실시 예에 따른 펌웨어의 동작 방법을 나타내는 플로우차트이다.
도 10은 도 9에 도시된 일부 단계를 보다 상세하게 나타내는 플로우챠트이다.
도 11은 본 발명의 다른 실시 예에 따른 멀티 큐 리드 동작 방법과 종래 기술에 따른 패킷화된 리드(Packed read) 동작 방법을 비교하기 위한 개략적인 타이밍 도이다.
도 12a 및 도 12b는 본 발명의 다른 실시 예에 따른 펌웨어의 동작 방법을 나타내는 플로우차트이다.
도 13은 도 12a 및 12b에 도시된 일부 단계를 보다 상세하게 나타내는 플로우챠트이다.
도 14는 본 발명의 일 실시 예에 따른 멀티 큐 라이트 동작 방법과 통상의 eMMC의 라이트 동작 방법을 비교하기 위한 개략적인 타이밍 도이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
본 명세서는 JEDEC(http://www.jedec.org)에 의해 2011년 6월에 공개된 Embedded Multimedia Card(eMMC), Electrical Standard 4.51, 즉 JESD84-B451을 레퍼런스(reference)로 포함한다.
따라서, 본 명세서의 용어들과 정의들(terms and definitions)이 JESD84-B451의 용어들과 정의들과 다르게 정의되지 않는 한, 본 명세서의 용어들과 정의들은 JESD84-B451의 용어들과 정의들과 동일하다.
본 발명의 개념에 따른 다양한 실시 예들은, 호스트(host)와 장치(device) 사이에서 주고받는 데이터의 전송 속도를 높이고 노이즈 면역성(noise immunity)을 높이기 위해, 기존의 10-와이어 버스(10-wire bus) 이외에 추가 라인들(또는 채널들)을 더 포함할 수 있다.
본 명세서에서 신호 또는 전압을 전송하는 채널(channel)은 호스트 패드, eMMC 패드, 버스, 라인, 드라이버(실시 예에 따라, 차동 증폭기를 포함), 수신기(실시 예에 따라, 차동 증폭기를 포함), 또는 이들 중에서 적어도 두 개의 조합을 의미할 수 있다.
상기 라인들의 기능과, 상기 라인들을 통해 전송되는 신호들을 생성하는 회로들과 방법들이 본 명세서에서 상세히 설명될 것이다.
본 명세서에서는 특별한 의도를 가지고 명시적으로 구분하지 않는 한, 설명의 편의를 위해 기능 회로, 예컨대 버스(bus), 와이어(wire), 패드(또는 핀(pin)), 드라이버(driver), 수신기(receiver), 및/또는 차동 증폭기 등의 전송 지연 (propagation delay)은 고려하지 않는다.
도 1은 본 발명의 일 실시 예에 따른 임베디드 멀티미디어 카드(embedded multimedia card(eMMC)) 시스템(100)의 블록 도를 나타낸다.
도 1을 참조하면, eMMC 시스템(100)은 호스트(200)와 장치(300), 예컨대 eMMC 장치(300)를 포함한다.
호스트(200)는 eMMC 장치(300)의 데이터 처리 동작, 예컨대 데이터 리드 동작 또는 데이터 라이트 동작 등을 제어할 수 있다. 상기 데이터 처리 동작은 SDR (single data rate) 또는 DDR로 수행될 수 있다.
호스트(200)는 CPU(central processing unit), 프로세서, 마이크로프로세서 (microprocessor) 또는 애플리케이션 프로세서(application processor) 등과 같이 데이터를 처리할 수 있는 데이터 처리 장치를 의미할 수 있고, 상기 데이터 처리 장치는 전자 장치에 내장(embedded) 또는 구현될 수 있다.
상기 전자 장치는 PC(personal computer), 랩탑 컴퓨터(laptop computer), 이동 전화기, 스마트폰(smartphone), 태블릿(tablet) PC, PDA(personal digital assistant), EDA (enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), 오디오 장치(audio device), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), MP3 플레이어, 휴대용 게임 콘솔(handheld game console), 또는 e-북(e-book)으로 구현될 수 있다.
eMMC 장치(300)는 호스트(200)와 데이터 통신을 위해 상기 전자 장치와 접속 수단들(예컨대, 패드들(pads), 핀들(pins), 버스(bus), 또는 통신 라인들)을 통하여 전기적으로 서로 접속될 수 있다.
본 발명의 일 실시예에 따른 호스트(200)는 프로세서(215), 메모리(220), 및 호스트 컨트롤러(230)를 포함할 수 있다. 프로세서(215)에 의해 운영 시스템(OS) 및/또는 호스트 펌웨어(210)가 구동될 수 있다.
도시된 구성 요소 이외에도 호스트(200)는 클락 생성기(미도시), 상태 제어 유닛(미도시) 등을 더 포함할 수 있다.
클락 생성기는 호스트(200)와 eMMC 장치(300)에서 사용될 클락 신호(CLK)를 생성한다. 예컨대, 클락 생성기는 위상 동기 루프(phase locked loop(PLL))로 구현될 수 있다.
프로세서(215)는 명령(CMD)의 생성, 응답(RES)의 해석, Extended(EXT)_CSD 레지스터(371)에 저장된 데이터, 및/또는 데이터 처리 동작을 제어할 수 있는 하드웨어를 의미할 수 있다. 프로세서(215)는 OS/펌웨어(210)를 구동하여 상기와 같은 동작들을 수행할 수 있다.
호스트 컨트롤러(230)는 eMMC(300)와 인터페이스하기 위한 블록이다.
호스트 컨트롤러(230)는 eMMC(300)로 명령(CMD)을 발급하고(issuing), 명령(CMD)에 대한 응답(RES)을 받으며, eMMC 장치(300)에 저장될 라이트 데이터를 전송하고, eMMC 장치(300)로부터 리드한 리드 데이터를 수신한다.
도 1에 도시된 eMMC 버스는 종래(예컨대, eMMC 4.51에 규정된) 10개의 버스(101, 102, 및 103)를 포함할 수 있다. 그러나, 본 발명의 실시예가 이에 한정되는 것은 아니다. 예컨대, eMMC 버스는 종래의 10개의 버스(101, 102, 및 103) 외에 리턴 클락 신호(미도시)를 eMMC(300)로부터 호스트(200)로 전송할 수 있는 단방향 리턴 클락 버스(미도시)를 더 포함할 수 있다.
클락 버스(101)는 클락 신호(CLK)를 전송하고, 양방향(bidirectional) 명령 버스(102)는 명령(CMD)을 eMMC 장치(300)로 전송하고 명령(CMD)에 대한 응답(RES)을 호스트(200)로 전송한다. 양방향 데이터 버스(103)는 데이터 라이트 동작을 위한 라이트 데이터(DAT[7:0])를 eMMC 장치(300)로 전송하거나 데이터 리드 동작을 위한 리드 데이터(DAT[7:0])를 호스트(200)로 전송할 수 있다.
호스트(200)는 리셋 라인(미도시)을 통하여 하드웨어 리셋 신호를 eMMC 장치 (300)로 전송할 수 있다.
호스트(200)는 eMMC(300)의 동작에 필요한 동작 전압들을 생성하여 eMMC(300)로 전송할 수 있다.
도 2는 본 발명의 일 실시예에 따른 eMMC 장치(300)의 블록도이다.
이를 참조하면, eMMC 장치(300)는 장치 컨트롤러, 예컨대 eMMC 컨트롤러(310)와 플래시 메모리(370)를 포함한다.
eMMC 컨트롤러(310)는 호스트(200)와 플래시 메모리(370) 사이에서 데이터 통신을 제어한다.
eMMC 컨트롤러(310)는 eMMC 호스트 인터페이스(320), CPU(330), 메모리(340), 오류 검출/정정 블록(ECC, 360) 및 플래시 인터페이스(365)를 포함한다.
eMMC 호스트 인터페이스(320)는 호스트로부터 클락 신호 (CLK)와 명령(CMD)을 수신하고, 수신된 명령(CMD)을 해석하고 해석의 결과에 따라 응답(RES)을 생성하고 생성된 응답(RES)과 응답(RES)에 기초하여 생성된 데이터를 호스트로 전송한다.
eMMC 호스트 인터페이스(320)는 멀티 큐 리드 및/또는 멀티 큐 라이트 동작을 위한 명령 레지스터들(325)을 포함한다.
도 3a는 도 2에 도시된 명령 레지스터들(325)의 일 실시예를 나타낸다.
도 3a를 참조하면, 명령 레지스터들(325)은 N(2이상의 자연수)개의 레지스터들(325-1~325-N)을 포함한다. N은 명령 레지스터의 사이즈(즉, 개수)를 나타내며, 2이상의 자연수이다. N을 멀티 큐 뎁쓰(multi queue depth)라 정의한다.
따라서, eMMC 호스트 인터페이스(320)는 최대 멀티 큐 뎁쓰 만큼의 멀티 큐 명령을 호스트로부터 수신하여 레지스터들(325-1~325-N)에 저장할 수 있다.
멀티 큐 명령은 호스트로부터 수신된 명령을 eMMC(300)에 저장함으로써, 상기 명령에 대한 동작을 완료하기 전(예컨대, 플래시 메모리(370)로부터 리드한 데이터를 상기 호스트로 전송하기 전, 또는 호스트로부터 수신한 데이터를 플래시 메모리(370)에 프로그램하기 전)에 다음 명령을 또 수신할 있도록 호스트(200)와 eMMC(300) 간에 미리 정의된 명령이다.
멀티 큐 명령은 eMMC(300)로부터 데이터를 리드하기 위한 멀티 큐 리드 명령, eMMC(300)에 데이터를 라이트하기 위한 멀티 큐 라이트 명령 및 멀티 큐 리드 명령에 응답하여 리드된 데이터를 호스트로 읽어가기 위한 데이터 리드 아웃 명령을 포함할 수 있으나, 이에 한정되는 것은 아니다.
각 레지스터(325-1~325-N)는 호스트에서 발급된 멀티 큐 명령에 대한 정보(이하, 명령 정보라 함)를 저장한다. 예컨대, eMMC 호스트 인터페이스(320)는 제1 멀티 큐 명령에 대한 정보(Queue I command 정보)는 제1 명령 레지스터(325-1)에 저장하고, 제1 멀티 큐 명령 다음에 수신되는 제2 멀티 큐 명령에 대한 정보(Queue I command정보)는 제2 명령 레지스터(325-2)에 저장하는 식으로, 최대 N개의 멀티 큐 명령을 수신하여 각 명령 정보를 각 레지스터(325-1~325-N)에 저장할 수 있다.
도 3b는 도 3a의 레지스터에 저장되는 멀티 큐 명령 정보의 일 실시예를 나타낸다. 이를 참조하면, 레지스터에 저장되는 멀티 큐 명령 정보는 명령 타입(command type), 어드레스(address), 및 데이터 크기(data size)를 포함할 수 있으나, 이에 한정되는 것은 아니다.
명령 타입(command type), 어드레스(address), 및 데이터 크기(data size)는 호스트로부터 발급되는 멀티 큐 명령에 포함되어 eMMC(300)로 전송될 수 있다.
명령 타입은 명령의 종류를 나타내는 필드로, 멀티 큐 리드 명령 및 멀티 큐 라이트 명령을 포함한다. 즉, 명령 타입은 멀티 큐 명령이 리드 또는 라이트 명령인지를 나타낸다. 어드레스는 멀티 큐 명령을 수행할 어드레스를 나타낸다. 데이터 크기(data size)는 멀티 큐 명령을 수행할 데이터의 크기이다. 예를 들어, 멀티 큐 명령이 리드 명령이고 어드레스는 100, 데이터 크기가 1024이면, 100번 어드레스에서 1024 바이트(bytes)만큼의 데이터를 리드하라는 의미일 수 있다.
그러나, 데이터 크기의 단위가 바이트(bytes)로 한정되는 것은 아니며, 다른 단위(예컨대, 특정 사이즈로 정의된 블록의 수, 페이지 수 등)일 수 있다.
CPU(330)는 각 인터페이스(330과 360)의 동작을 제어하고, eMMC 장치(300)의 동작을 전반적으로 제어한다.
메모리(340)는 인터페이스들(330과 360) 사이에서 주거나 받는 데이터를 일시적으로 저장한다. 메모리(340)는 휘발성 메모리로 구현될 수 있다.
메모리(340)는 멀티 큐 자료 구조(345) 및 디바이스 펌웨어(350)를 저장할 수 있다. 디바이스 펌웨어(350)는 메모리(340)에 저장되고, CPU(330)에 의해 실행될 수 있다. 디바이스 펌웨어(350) 및 멀티 큐 자료 구조(345)의 구성에 대해서는 도 4 및 도 5를 참조하여 후술한다.
플래시 메모리(370)는 데이터를 저장하고, 플래시 메모리(370)가 NAND 플래시 메모리로 구현될 때 플래시 인터페이스(365)는 NAND 플래시 인터페이스로 구현될 수 있다. 플래시 메모리(370)는 장치 특성들(device properties)과 선택된 모드들을 저장할 수 있는 EXT_CSD 레지스터(371)를 포함한다.
디바이스(300)는 EXT_CSD 레지스터(371) 외의 호스트 제어 레지스터(미도시)를 더 포함할 수 있다. 호스트 제어 레지스터란 호스트가 명령 등을 통하여 제어할 수 있는 혹은 설정할 수 있는 레지스터를 의미한다.
플래시 메모리(370)는 다수의 메모리 소자들(CE0~CE3)을 포함할 수 있다. 도 2에서는 4개의 메모리 소자들(CE0~CE3)이 예시적으로 도시되나, 이에 한정되는 것은 아니다. 플래시 메모리(370)는 둘 이상의 채널을 지원하는 구조를 가질 수 있다.
호스트(200)는 SEND_EXT_CSD 명령(=CMD8)을 송신하여(by issuing) EXT_CSD 레지스터(371)를 읽을 수 있다. eMMC 장치(300)는 512 바이트 길이(bytes long)의 EXT_CSD 레지스터(371)를 데이터 블록으로서 전송한다.
멀티 큐 뎁쓰(depth)는 EXT_CSD 레지스터(371)의 유보 필드(reserved field)에 설정될 수 있다. 다른 실시예에서는, 멀티 큐 뎁쓰(depth)는 다른 호스트 제어 레지스터(미도시)에 설정될 수도 있다.
도 4는 본 발명의 일 실시예에 따른 eMMC 펌웨어(350)의 구성을 나타내는 블록도이다. 이를 참조하면, eMMC 펌웨어(350)는 호스트 인터페이스 관리모듈(351), FTL(Flash Translation Layer)(352), 멀티-큐 관리모듈(353), 큐 데이터 버퍼 관리 모듈(354)을 포함한다.
호스트 인터페이스 관리모듈(351)은 호스트(200)와의 데이터 및 정보를 주고 받기 위한 프로토콜를 관장하는 모듈이다. 만약 호스트 인터페이스가 eMMC 4.5라면, 호스트 인터페이스 모듈은 eMMC4.5의 표준(spec)에서 규정한 내용대로 구현되며 동작한다. FTL(352)은 플래시 메모리(370)에 데이터를 리드/라이트하는 모듈로써, 플래시 메모리(370)의 리드/프로그램/소거 단위가 다름을 고려하여 호스트가 요청하는 주소를 변환(translation)하여 호스트가 요청하는 리드/라이트를 플래시 메모리(370)에 수행한다.
멀티 큐 관리모듈(353)은 멀티 큐 리드 명령, 멀티 큐 라이트 명령을 호스트가 보낼 경우, 멀티 큐 리드 명령/멀티 큐 라이트 명령 정보를 관리하는 모듈이다.
큐 데이터 버퍼 관리 모듈(354)은 멀티 큐 명령에 연관된 데이터를 저장하기 위한 데이터 버퍼(도 5의 346-1~346-M, M은 2이상의 자연수)를 관리하는 모듈이다.
도 5는 도 2에 도시된 멀티 큐 자료 구조(345)의 일 실시예를 나타낸다.
도 5를 참조하면, 멀티 큐 자료 구조(345)는 명령 정보(345-1~345-N) 및 큐 데이터 버퍼(346-1~346-M)를 포함한다.
멀티 큐 리드 명령 정보 및 멀티 큐 라이트 명령 정보는 메모리(340)의 멀티 큐 자료 구조(345)내에, 멀티 큐 명령 정보(Queue 1 Command 정보 내지 Queue N Command 정보)로 관리된다.
멀티 큐 자료 구조(345)내에 저장되는 멀티 큐 명령 정보의 일 예가 도 6에 도시된다.
도 6을 참조하면, 멀티 큐 자료 구조(345)의 멀티 큐 명령 정보는 도 3b에 도시된 명령 타입(command type), 어드레스(address), 및 데이터 크기(data size)를 외에 "Queue empty", "Queue Data Buffer Pointer", "Queue operation complete"를 더 포함할 수 있으나, 이에 한정되는 것은 아니다.
"Queue empty"는 상응하는 레지스터가 비어 있는지 혹은 점유되어 있는지를 나타내는 레지스터 점유 정보이다. 예컨대, N번째 멀티 큐 명령 정보(Queue N Command 정보)의 "Queue empty"는 N번째 명령 레지스터(325-N)가 비어있는지 혹은 명령이 저장되어 있는지(즉, 점유되어 있는지)를 나타낼 수 있다.
"Queue Data Buffer Pointer"는 멀티 큐 리드 또는 멀티 큐 라이트 명령을 수행할 때 데이터가 포함된 버퍼를 가리키는 포인터로서, 멀티 큐 자료 구조(345) 내의 M개의 데이터 버퍼들(도 5의 346-1~346-M)중 하나를 가리킨다.
예컨대, N번째 멀티 큐 명령 정보(Queue N Command 정보)의 명령 타입이 멀티 큐 리드 명령인 경우, N번째 멀티 큐 명령 정보(Queue N Command 정보)의 "Queue Data Buffer Pointer"는 해당 멀티 큐 리드 명령에 응답하여 플래시 메모리(370)로부터 읽은 데이터가 저장된 데이터 버퍼(도 5의 346-1~346-M 중 하나)의 주소 정보일 수 있다.
"Queue operation complete"는 해당 멀티 큐 명령의 처리가 완료되었음을 나타내기 위한 정보이다. 예컨대, N번째 멀티 큐 명령 정보(Queue N Command 정보)의 명령 타입이 멀티 큐 리드 명령인 경우, N번째 멀티 큐 명령 정보(Queue N Command 정보)의 "Queue operation complete"는 호스트가 데이터 버퍼 (346-1~346-M)로부터 데이터를 읽을 수 있다는 것을 나타낸다.
예를 들어, eMMC(300)에 전원이 인가되고, 호스트(200)가 멀티 큐 명령을 eMMC(300)로 보내기 전에는 멀티 큐 자료구조(345) 내, "Queue empty"는 모두 비어있음("empty")로 설정되어 있으며, 명령 타입(command type), 어드레스(address), 데이터 크기(data size), 큐 데이터 버퍼 포인터(queue data buffer pointer), 및 동작 완료(Queue operation complete)는 모두 의미 없는 상태가 된다.
상술한 바와 같이, 멀티 큐 명령 정보는 하드웨어 구성(예컨대, 멀티 큐 명령 레지스터들)을 이용하여 관리될 수도 있고, 메모리(340)에 자료 구조로서 관리될 수도 있으며 둘의 조합(즉 하드웨어 구성과 자료 구조를 함께 사용)으로 관리될 수도 있다.
도 7은 본 발명의 일 실시예에 따른 멀티 큐를 이용한 eMMC 동작 방법을 나타내는 플로우차트이다.
먼저, 멀티-큐 리드/라이트를 위하여 eMMC(300)를 초기화한다(S110). 이 단계(S110)에서는, 멀티-큐 명령을 수행하기 전에 상술한 명령 레지스터들(325), 멀티 큐 자료 구조(345) 등이 초기화될 수 있다. 이 단계(S110)는 eMMC(300)에 전원이 인가된 후, 또는 eMMC(300)의 리셋 후에 수행될 수 있다.
호스트(200)로부터 멀티 큐 명령이 수신되는지를 확인하여(S130), 멀티 큐 명령을 수신하지 않으면, 노말 동작을 수행한다(S120). 여기서, 노말 동작이란 멀티 큐 명령에 따른 동작이 아닌 통상의 명령에 따른 동작을 의미한다.
호스트(200)로부터 멀티 큐 명령을 수신하면(S130의 YES), 멀티 큐 명령이 멀티-큐 리드 명령인지(S140), 멀티-큐 라이트 명령인지를 확인하고(S160), 이에 따라, 멀티-큐 리드 명령인 경우 멀티 큐 리드 동작을 수행하고(S150), 멀티-큐 라이트 명령인 경우 멀티 큐 라이트 동작을 수행한다(S170).
도 8은 본 발명의 일 실시예에 따른 멀티 큐 리드 동작 방법과 통상의 eMMC의 리드 동작 방법을 비교하기 위한 개략적인 타이밍도이다.
도 8의 (a)는 통상의 리드 동작 방법을 나타내고, 도 8의 (b)는 본 발명의 일 실시예에 따른 멀티 큐 리드 동작 방법을 나타낸다.
도 8의 (a)에 도시된 통상의 리드 동작 방법에 따르면, 호스트가 명령 버스를 통해 데이터 리드 명령(RD, 411)을 eMMC로 보내면, eMMC는 데이터 리드 명령(RD, 411)에 대한 응답(R1, 412)을 명령 버스를 통해 호스트로 전송한다. eMMC는 데이터 리드 명령(RD, 411)에 응답하여 플래시 메모리(NAND)로 데이터를 읽을 준비를 하고(431), 플래시 메모리 셀로부터 데이터를 리드하고(432~433), 리드된 데이터는 데이터 버스를 통해 호스트로 전송된다(421).
호스트는 데이터 리드 명령(RD, 411)에 대한 데이터(421)를 수신한 후에야 다음 데이터 리드 명령(414, RD)를 eMMC로 보낼 수 있다.
따라서, 호스트는 데이터 리드 명령(RD, 411)에 대한 응답(R1, 412)을 받고 나서 데이터(421)를 수신할 때까지 대기할 수 밖에 없다(413).
한편, 도 8의 (b)를 참조하면, 본 발명의 실시예에 따르면, 호스트(200)는 첫 번째 멀티 큐 리드 명령(RD, 441)를 eMMC(300)로 보낸다. eMMC(300)는 멀티 큐 리드 명령(RD, 441)에 대한 응답(R1, 442)을 호스트(200)로 전송한다. 아울러, 첫 번째 멀티 큐 리드 명령(RD, 441)에 응답하여 플래시 메모리(CE0)로부터 데이터를 독출하여(461~462), 데이터 버퍼(346-1~346-M)에 저장한다(463).
호스트(200)는 eMMC(300)로부터 응답(R1, 442)을 수신하면, 다음 멀티 큐 리드 명령(RD, 443)를 eMMC(300)로 보낸다. 즉, 호스트(200)는 멀티 큐 리드 명령(RD, 441)에 대한 리드 데이터를 수신하지 않은 상태에서 eMMC(300)로 다음 데이터를 읽기 위한 명령인 멀티 큐 리드 명령(RD, 443)를 eMMC(300)로 보낼 수 있다.
eMMC는 멀티 큐 리드 명령(RD, 443)에 대한 응답(R1, 444)을 호스트로 전송하고, 또한, 두 번째 멀티 큐 리드 명령(RD, 443)에 응답하여 플래시 메모리(CE1)로부터 데이터를 독출하여(471~472), 데이터 버퍼(346-1~346-M)에 저장한다(473).
이와 같은 방식으로, 호스트(200)는 최대 멀티 큐 뎁쓰(Multi-Queue depth, N)의 멀티 큐 리드 명령을 보낼 수 있다. 예컨대, 멀티 큐 뎁쓰(N)가 4인 경우, 호스트(200)는 최대 4개까지 멀티 큐 리드 명령을 보낼 수 있다.
멀티 큐 뎁쓰(N)는 eMMC(300)의 Extended CSD 레지스터(371)에 저장될 수 있다. 호스트(200)는 특정 명령(예컨대, SEND_EXT_CSD 명령)을 이용하여 Extended CSD 레지스터(371)를 읽고, 멀티 큐 뎁쓰(N)를 알 수 있다.
eMMC(300)는 플래시 메모리(370)로부터 병렬동작으로 데이터를 리드할 수 있다. 예컨대, eMMC(300)는 멀티 플레인 리드(Multi plane Read) 방식으로 플래시 메모리(370)의 제1 칩(CE0)으로부터 데이터를 읽어오는 동작(461~463)과 플래시 메모리(370)의 제2 칩(CE1)으로부터 데이터를 읽어오는 동작(471~473)을 병렬적으로 수행할 수 있다.
호스트(200)는 데이터 버퍼(346-1~346-M)에 저장된 데이터를 읽어가기 위하여, 데이터 리드 아웃 명령(RO, 445)을 eMMC(300)로 전송한다. eMMC는 데이터 리드 아웃 명령(RO, 445)에 응답하여 응답(R1, 446)을 보내고, 또한, 데이터 버퍼(346-1~346-M)에 저장된 데이터를 데이터 버스를 통해 호스트로 전송한다. 이 때 전송되는 데이터(451)는 첫 번째 멀티 큐 리드 명령(RD, 441)에 응답하여 플래시 메모리(CE0)로부터 리드된 데이터(463)일 수 있다. 데이터 리드 아웃 명령(RO, 445)은 본 발명의 실시예에 따른 멀티 큐 리드/라이트 동작을 위해 호스트(200)와 eMMC(300) 간에 새롭게 정의된 명령일 수 있다.
호스트(200)는 데이터 버퍼(346-1~346-M)에 저장된 다음 데이터를 읽어가기 위하여, 데이터 리드 아웃 명령(RO, 447)을 eMMC(300)로 전송한다. eMMC(300)는 데이터 리드 아웃 명령(RO, 447)에 응답하여 응답(R1, 448)을 보내고, 또한, 데이터 버퍼(346-1~346-M)에 저장된 데이터를 데이터 버스를 통해 호스트로 전송한다. 이 때 전송되는 데이터(452)는 두 번째 멀티 큐 리드 명령(RD, 443)에 응답하여 플래시 메모리(CE1)로부터 리드된 데이터(473)일 수 있다.
상술한 바와 같이, 본 발명의 실시예에 따르면, 통상의 기술 대비, 명령과 명령 사이의 아이들 타임(idle time)이 축소됨에 따라 리드 성능이 향상된다.
이와 같이, 멀티 큐 리드 명령을 미리 받아, 다음 리드 동작에 대한 준비(예컨대, 플래시 메모리에서 큐 데이터 버퍼로 미리 데이터를 읽어 오는 준비)를 동시에 혹은 병렬적으로 할 수 있기 때문에, 리드 성능을 향상시킬 수 있다.
도 9a 및 도 9b는 본 발명의 일 실시예에 따른 펌웨어의 동작 방법을 나타내는 플로우차트이다.
이를 참조하면, 멀티 큐 동작을 위하여 eMMC를 초기화한다(S210). S210 단계에서는, 명령 레지스터들(S325) 및 자료구조(345) 등이 초기화될 수 있다. 또한, 현 멀티 큐 뎁쓰(current depth)를 0으로 초기화하고(S215), 현 멀티 큐 동작(current multi-queue operation)을 "NO"로 초기화한다. 현 멀티 큐 동작이 "NO"라는 것은 현재 멀티 큐 동작이 수행되고 있지 않음을 나타낸다. 현 멀티 큐 동작이 "NO"로 설정되어 있는 경우, eMMC(300)는 노말 동작을 수행한다(S231). 호스트(200)로부터 멀티 큐 명령이 전송되었는지 판단하고(S225), 멀티 큐 명령이 멀티 큐 리드 명령 또는 데이터 리드 아웃 명령인지를 판단한다(S230).
멀티 큐 리드 명령 또는 데이터 리드 아웃 명령이면, 현 멀티 큐 동작이 "NO" 또는 "Read"인지를 판단하고(S235), 이에 해당하지 않으면, "멀티 큐 리드 동작 오류"로 처리한다(S245).
멀티 큐 리드 명령이면, 현 멀티 큐 동작을 "Read"로 설정한다(S250). 현 멀티 큐 뎁쓰가 최대 멀티 큐 뎁쓰(max multi-queue depth)보다 같은지 판단하여(S250), 같으면 "멀티 큐 리드 동작 오류"로 처리한다(S245).
현 멀티 큐 뎁쓰가 최대 멀티 큐 뎁쓰보다 작으면, 멀티 큐 리드 명령을 호스트로부터 수신하여 멀티 큐 명령 정보(Queue N command 정보)를 설정한다(S260). 그리고, 현 멀티 큐 뎁쓰를 1 증가시킨다(S265). 또한, 큐 데이터 버퍼 관리 모듈(354)을 동작시켜, 멀티 큐 명령 정보를 해석하고, 플래시 메모리로부터 데이터를 읽어와 큐 데이터 버퍼에 저장한다(S270).
한편, 호스트로부터 수신된 명령이 데이터 리드 아웃 명령이면(S240에서 NO), 큐 데이터 버퍼 관리 모듈을 동작시켜 큐 데이터 버퍼의 데이터를 호스트로 전송한다(S275). 그리고, 현 멀티 큐 뎁쓰를 1 감소시킨다(S280). 현 멀티 큐 뎁쓰가 0인지 판단하여(S285), 0이라면 현 멀티 큐 동작을 "NO"로 설정한다(S290).
S270, S285, 또는 S290 단계 후에 S225단계로 복귀하여 반복 수행될 수 있다.
도 9에서의 도시된 단계들의 순서는 하나의 실시예에 불과하며, 단계의 순서가 달라질 수 있으며, 또한 둘 이상의 단계들이 병렬적으로 수행될 수도 있다.
도 10은 도 9에 도시된 일부 단계를 보다 상세하게 나타내는 플로우챠트이다.
이를 참조하면, 큐 데이터 버퍼 관리 모듈은 FTL로 큐 명령 정보를 전달하고(S310), 데이터 리드를 요청한다(S320). FTL은 플래시 메모리로 리드 명령을 보낸다(S320). S320 단계에서의 리드 명령은 멀티 플레인 리드 명령일 수 있다.
FTL은 플래시 메모리의 페이지 버퍼에 저장된 데이터를 큐 데이터 버퍼로 로드하기 위하여 DMA(direct memory access)를 시작시킨다(S330). DMA가 완료되면, 플래시 메모리는 DMA 인터럽트를 발생시킨다(S340). 그러면, 인터럽트 핸들러에서 큐 명령 정보(Queue 1 Command 정보)의 "queue operation complete" 필드를 "동작 완료"로 설정한다(S350).
S310 내지 S350 단계는 도 9의 S270 단계의 세부 단계일 수 있다.
호스트로부터 데이터 리드아웃 명령을 수신하면(S360), 큐 데이터 버퍼의 데이터를 호스트로 전송한다(S370)
도 11은 본 발명의 다른 실시예에 따른 멀티 큐 리드 동작 방법과 종래 기술에 따른 패킷화된 리드(Packed read) 동작 방법을 비교하기 위한 개략적인 타이밍도이다.
도 11의 (a)는 종래 기술에 따른 Packed 리드 동작 방법을 나타내고, 도 11의 (b)는 본 발명의 다른 실시예에 따른 멀티 큐 리드 동작 방법을 나타낸다.
도 11의 (a)를 참조하면, 호스트가 명령 버스를 통해 데이터 리드 명령(RD, 511)을 eMMC로 보내고, 데이터 버스를 통해 패킷화된 명령(HDR, 521)을 eMMC로 보낸다. eMMC는 패킷화된 명령(HDR, 521)을 파싱(parsing)하고 분석하여(531), 플래시 메모리 칩(CE0)에 억세스하여, 제1 데이터(DAT1)를 리드하고(532, 533), 플래시 메모리 칩(CE1)에 억세스하여, 제2 데이터(DAT2)를 리드한다(542, 543). 따로 도시되지는 않았지만, 리드한 제1 및 제2 데이터(DAT1, DAT2)에 대하여 에러 발생 여부가 체크된다.
만약, 제2 데이터(DAT2)에 에러가 발생하였다면, 에러 정정을 통해 제2 데이터(DAT2)를 복구한다(545).
그런데, Packed 리드 동작 방법에 따르면, 제2 데이터(DAT2)에만 에러가 있고, 제1 데이터(DAT1)에는 에러가 없는 경우에도, 제2 데이터(DAT2)가 복구된 이후에야 제1 및 제2 데이터(DAT1, DAT2)가 호스트로 전송될 수 있다(522, 523).
한편, 도 11의 (b)를 참조하면, 본 발명의 실시예에 따르면, 호스트(200)는 첫 번째 멀티 큐 리드 명령(RD, 551)를 eMMC(300)로 보낸다. eMMC(300)는 멀티 큐 리드 명령(RD, 551)에 대한 응답(R1, 552)을 호스트(200)로 전송한다. 아울러, 첫 번째 멀티 큐 리드 명령(RD, 551)에 응답하여 플래시 메모리(CE0)로부터 데이터를 독출하여(571~572), 데이터 버퍼(346-1~346-M)에 저장한다(573).
호스트(200)는 eMMC(300)로부터 응답(R1, 552)을 수신하면, 다음 멀티 큐 리드 명령(RD, 553)를 eMMC(300)로 보낸다. eMMC(300)는 멀티 큐 리드 명령(RD, 553)에 대한 응답(R1, 554)을 호스트(200)로 전송하고, 또한, 두 번째 멀티 큐 리드 명령(RD, 553)에 응답하여 플래시 메모리(CE1)로부터 데이터를 독출하여(581~582), 데이터 버퍼(346-1~346-M)에 저장한다(583).
이와 같은 방식으로, 호스트(200)는 최대 멀티 큐 뎁쓰(Multi-Queue depth, N)의 멀티 큐 리드 명령을 보낼 수 있다. 예컨대, 멀티 큐 뎁쓰(N)가 4인 경우, 호스트(200)는 최대 4개까지 멀티 큐 리드 명령을 보낼 수 있다.
만약, 플래시 메모리(CE0)로부터 리드된 데이터(DAT2)에 에러가 발생하였다면, eMMC(300)의 ECC(360)가 에러 정정을 통해 제2 데이터(DAT2)를 복구한다(584).
제2 데이터(DAT2)의 데이터 복구가 완료되기 전에(즉, 제2 데이터와 무관하게), 호스트(200)는 데이터 버퍼(346-1~346-M)에 저장된 제1 데이터(DAT1)를 읽어가기 위하여, 데이터 리드 아웃 명령(RO, 555)을 eMMC(300)로 전송한다. eMMC(300)는 데이터 리드 아웃 명령(RO, 555)에 응답하여 응답(R1, 556)을 보내고, 또한, 데이터 버퍼(346-1~346-M)에 저장된 데이터(DAT1)를 데이터 버스를 통해 호스트(200)로 전송한다(561).
제2 데이터(DAT2)가 복구된 후 호스트(200)는 데이터 버퍼(346-1~346-M)에 저장된 다음 데이터(DAT2)를 읽어가기 위하여, 데이터 리드 아웃 명령(RO, 557)을 eMMC(300)로 전송한다. eMMC(300)는 데이터 리드 아웃 명령(RO, 557)에 응답하여 응답(R1, 558)을 보내고, 또한, 데이터 버퍼(346-1~346-M)에 저장된 데이터(DAT2)를 데이터 버스를 통해 호스트(200)로 전송한다(562).
상술한 바와 같이, eMMC에서 리드한 데이터의 에러로 인해 데이터 복구가 필요할 경우, 종래기술(Packed Read)에 따르면, 데이터 복구를 포함하여 데이터 준비가 완료되었을 때, 호스트는 eMMC로부터 데이터를 읽어갈 수 있다.
하지만, 본 발명의 실시예에 따르면, 리드 명령 단위로 호스트(200)는 eMMC(300)로부터 데이터를 읽어갈 수 있으므로, N개의 멀티 큐 리드 명령 중, N-K번째 리드 명령에 대해 데이터 복구가 필요할 경우, 호스트(200)는 N-K-1번째까지의 리드 명령에 대한 데이터를 eMMC(300)로부터 읽어갈 수 있다.
도 12a 및 도 12b는 본 발명의 다른 실시예에 따른 펌웨어의 동작 방법을 나타내는 플로우차트이다.
이를 참조하면, 멀티 큐 동작을 위하여 eMMC를 초기화한다(S710). S710 단계에서는, 명령 레지스터들(S325) 및 자료구조(345) 등이 초기화될 수 있다. 또한, 현 멀티 큐 뎁쓰(current depth)를 0으로 초기화하고(S715), 현 멀티 큐 동작(current multi-queue operation)을 "NO"로 초기화한다(S720). 현 멀티 큐 동작이 "NO"라는 것은 현재 멀티 큐 동작이 수행되고 있지 않음을 나타낸다. 현 멀티 큐 동작이 "NO"로 설정되어 있는 경우, eMMC(300)는 노말 동작을 수행한다(S731). 호스트(200)로부터 멀티 큐 명령이 전송되었는지 판단하고(S725), 멀티 큐 명령이 멀티 큐 라이트 명령인지를 판단한다(S730). S730 단계에서의 판단 결과, 멀티 큐 라이트 명령이 아니면 면, 현 멀티 큐 동작이 "NO" 또는 "Read"인지를 판단하고(S235), 노말 동작을 수행한다(S731).
S730 단계에서의 판단 결과, 멀티 큐 라이트 명령이면, 현 멀티 큐 동작이 "NO" 또는 "Write"인지를 판단하고(S735), 이에 해당하지 않으면, "멀티 큐 라이트 동작 오류"로 처리한다(S745).
멀티 큐 라이트 명령이면, 현 멀티 큐 동작을 "Write"로 설정한다(S750). 현 멀티 큐 뎁쓰가 최대 멀티 큐 뎁쓰(max multi-queue depth)와 같은지 판단하여(S755) 같으면 큐 데이터 버퍼에 저장된 데이터를 플래시 메모리로 데이터 라이트를 완료하였는지 판단한다(S740).
현 멀티 큐 뎁쓰가 최대 멀티 큐 뎁쓰보다 작으면(S755의 NO), 멀티 큐 라이트 명령을 호스트로부터 수신하여 멀티 큐 명령 정보(Queue i command 정보)를 설정한다(S760). 그리고, 현 멀티 큐 뎁쓰를 1 증가시킨다(S765). 또한, 큐 데이터 버퍼 관리 모듈(354)을 동작시켜, 멀티 큐 명령 정보(Queue i command 정보)를 해석하고, 호스트로부터 수신한 데이터를 큐 데이터 버퍼에 저장한다(S770).
또한, 멀티 큐 명령 정보(Queue i command 정보)를 FTL로 전달하여 큐 데이터 버퍼에 저장된 데이터를 플래시 메모리에 라이트하도록 한다(S771).
한편, S740 단계에서의 판단결과, 큐 데이터 버퍼에 저장된 데이터를 플래시 메모리로 데이터 라이트를 완료하였다면(S740의 YES), 해당 멀티 큐 명령 정보(Queue i command 정보)의 "queue operation complete" 필드를 "동작 완료"로 설정한다(S775). 또한, 해당 멀티 큐 명령 정보(Queue i command 정보)의 "queue empty"필드를 "empty"로 설정한다(S780).
그리고, 현 멀티 큐 뎁쓰를 1 감소시킨다(S790). 현 멀티 큐 뎁쓰가 0인지 판단하여(S795), 0이라면 현 멀티 큐 동작을 "NO"로 설정한다(S800).
S795, S800 단계 후에 S755단계로 복귀할 수 있고, 또한, S775 단계이후에 S725 단계로 복귀하여 다음 단계들을 반복 수행될 수 있다.
도 12a 및 12b에서의 도시된 단계들의 순서는 하나의 실시예에 불과하며, 단계의 순서가 달라질 수 있으며, 또한 둘 이상의 단계들이 병렬적으로 수행될 수도 있다.
도 13은 도 12a 및 12b에 도시된 일부 단계를 보다 상세하게 나타내는 플로우챠트이다.
이를 참조하면, 큐 데이터 버퍼 관리 모듈은 호스트로부터 전송되는 멀티 큐 라이트 명령과 데이터를 수신하고(S410), 큐 명령 정보(Queue 1 Command 정보)를 설정할 수 있다(S405).
큐 데이터 버퍼 관리 모듈은 FTL로 큐 명령 정보를 전달하고(S310), 플래시 메모리에 데이터 라이트를 요청한다(S410). FTL은 플래시 메모리로 프로그램을 위한 어드레스를 전송하고(S420). 큐 데이터 버퍼의 데이터를 플래시 메모리의 페이지 버퍼에 저장할 수 있다(S430). 그리고, 플래시 메모리로 프로그램 명령을 인가한다(S450). 플래시 메모리는 프로그램 명령에 응답하여 페이지 버퍼의 데이터를 메모리셀들로 프로그램하고, 프로그램을 완료하면 인터럽트를 발생할 수 있다(S455). 그러면, 인터럽트 핸들러에서 큐 명령 정보(Queue 1 Command 정보)의 "queue operation complete" 필드를 "동작 완료"로 설정한다(S470).
S401단계에서 호스트로부터 수신된 멀티 큐 라이트 명령에 따른 데이터 라이트 동작을 완료하기 전에, 큐 데이터 버퍼 관리 모듈은 다음 멀티 큐 라이트 명령 및 데이터를 수신하여(S461), 큐 명령 정보(Queue 2 Command 정보)를 설정할 수 있다(S465).
도 14는 본 발명의 일 실시예에 따른 멀티 큐 라이트 동작 방법과 통상의 eMMC의 라이트 동작 방법을 비교하기 위한 개략적인 타이밍도이다.
도 14의 (a)는 통상의 라이트 동작 방법을 나타내고, 도 14의 (b)는 본 발명의 일 실시예에 따른 멀티 큐 라이트 동작 방법을 나타낸다.
도 14의 (a)에 도시된 통상의 라이트 동작 방법에 따르면, 호스트가 명령 버스를 통해 데이터 라이트 명령(WR, 611)을 eMMC로 보내면, eMMC는 데이터 라이트 명령(WR, 611)에 대한 응답(R1, 612)을 명령 버스를 통해 호스트로 전송한다.
호스트는 응답(R1, 612)을 수신하면, 데이터 라이트 명령(WR, 611)에 연관된 데이터(DAT)를 데이터 버스를 통해 eMMC로 전송하고(621), eMMC는 호스트로부터 수신한 데이터(DAT)를 플래시 메모리에 프로그램한다. eMMC가 호스트로부터 수신한 데이터(DAT)를 플래시 메모리에 프로그램 완료할 때까지는, eMMC는 비지(busy) 상태가 된다. eMMC는 데이터 버스 중의 하나(예컨대, DAT[0])를 통해 비지(busy) 상태임을 호스트로 알려줄 수 있다.
호스트는 플래시 메모리에 데이터 라이팅을 완료하기 대기(613)한 후에야 다음 데이터 라이트 명령(WR, 614)를 eMMC로 보낼 수 있다.
한편, 도 14의 (b)를 참조하면, 본 발명의 실시예에 따르면, 호스트(200)는 첫 번째 멀티 큐 라이트 명령(WR, 631)를 eMMC(300)로 보낸다. eMMC(300)는 멀티 큐 라이트 명령(WR, 631)에 대한 응답(R1, 632)을 호스트(200)로 전송한다.
호스트(200)는 응답(R1, 632)을 수신하면, 첫 번째 멀티 큐 라이트 명령(WR, 631)에 연관된 데이터(DAT)를 데이터 버스를 통해 eMMC로 전송하면서(661), 또한 두 번째 멀티 큐 라이트 명령(WR, 633)를 eMMC(300)로 보낼 수 있다. eMMC(300)는 첫 번째 멀티 큐 라이트 명령(WR, 631)에 연관된 데이터(DAT)를 플래시 메모리에 프로그램 완료하기 전에 두 번째 멀티 큐 라이트 명령(WR, 633)을 호스트로부터 수신하고 이에 대한 응답(R1, 634)을 호스트(200)로 보낼 수 있다.
이와 같은 방식으로, 호스트(200)는 최대 멀티 큐 뎁쓰(Multi-Queue depth, N)의 멀티 큐 라이트 명령을 보낼 수 있다. 예컨대, 멀티 큐 뎁쓰(N)가 4인 경우, 호스트(200)는 최대 4개까지 멀티 큐 라이트 명령을 보낼 수 있다.
eMMC(300)는 병렬동작으로 플래시 메모리(370)에 데이터를 라이트할 수 있다. 예컨대, eMMC(300)는 멀티 플레인 프로그램(Multi plane program) 방식으로 플래시 메모리(370)의 제1 칩(CE0)에 데이터를 프로그램하는 동작과 플래시 메모리(370)의 제2 칩(CE1)에 데이터를 프로그램하는 동작을 병렬적으로 수행할 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100; eMMC 시스템
200; 호스트
300; eMMC 장치
210; OS/Host Firmware
215; 프로세서
220; RAM
230; 호스트 컨트롤러
310; 장치 컨트롤러
320; 호스트 인터페이스
325; 명령 레지스터
330; CPU
340; 메모리
345; 멀티 큐 자료 구조
350; 디바이스 펌웨어
360; ECC
365; 플래시 인터페이스
370; 플래시 메모리

Claims (25)

  1. 플래시 메모리; 및
    호스트로부터 제1 명령을 수신하고 상기 플래시 메모리에 대하여 상기 제1 명령에 상응하는 동작을 완료하기 전에 상기 호스트로부터 제2 명령을 수신하여 저장하는 디바이스 컨트롤러를 포함하는 임베디드 멀티미디어 카드(embedded Multimedia Card(eMMC)).
  2. 제1항에 있어서, 상기 제1 명령 및 상기 제2 명령은 각각
    명령의 종류를 나타내는 명령 타입, 명령을 수행할 어드레스, 및 데이터 크기를 포함하는 eMMC.
  3. 제2항에 있어서, 상기 디바이스 컨트롤러는
    각각이 명령 정보를 저장할 수 있는 N(2이상의 자연수)개의 명령 정보 레지스터들을 포함하고,
    상기 제1 명령에 상응하는 제1 명령 정보는 상기 N개의 명령 정보 레지스터들 중 제1 명령 레지스터에 저장하고
    상기 제2 명령에 상응하는 제2 명령 정보는 상기 N개의 명령 정보 레지스터들 중 제2 명령 레지스터에 저장하는 임베디드 멀티미디어 카드(embedded Multimedia Card(eMMC)).
  4. 제3항에 있어서, 상기 플래시 메모리는
    상기 N을 저장하기 위한 Extended CSD를 포함하는 Host 제어 레지스터를 더 포함하는 eMMC.
  5. 제3항에 있어서, 상기 디바이스 컨트롤러는
    상기 N개의 명령 정보에 상응하는 데이터를 저장하기 위한 M(2이상의 자연수)개의 데이터 버퍼들을 포함하는 eMMC.
  6. 제5항에 있어서, 상기 제1 명령 및 상기 제2 명령 정보는 각각
    상기 명령 타입, 상기 어드레스, 및 상기 데이터 크기를 포함하고,
    상기 명령 타입은 멀티 큐 리드 명령 및 멀티 큐 라이트 명령을 포함하는 eMMC.
  7. 제6항에 있어서, 상기 제1 명령 및 상기 제2 명령 정보는 각각
    상기 M개의 데이터 버퍼들 중 어느 하나를 지정하기 위한 데이터 버퍼 포인터, 상기 제1 명령 또는 상기 제2 명령에 따른 동작이 완료되었는지 여부를 나타내는 동작 완료 정보 및 상기 N개의 레지스터 중 어느 하나가 비어 있는지 여부를 나타내는 레지스터 점유 정보를 더 포함하는 eMMC.
  8. 제6항에 있어서,
    상기 제1 명령 및 상기 제2 명령의 명령 타입은 동일한 eMMC.
  9. 제8항에 있어서,
    상기 제1 명령 및 상기 제2 명령의 명령 타입은 멀티 큐 리드 명령이고,
    상기 디바이스 컨트롤러는
    상기 제1 명령에 응답하여 상기 플래시 메모리로부터 데이터를 리드하여 상기 M개의 데이터 버퍼들 중 제1 데이터 버퍼에 저장하고, 상기 제2 명령에 응답하여 상기 플래시 메모리로부터 데이터를 리드하여 상기 M개의 데이터 버퍼들 중 제2 데이터 버퍼에 저장한 후,
    상기 호스트로부터의 제3 명령에 응답하여 상기 데이터 버퍼에 저장된 데이터의 적어도 일부를 상기 호스트로 전송하는 eMMC.
  10. 제9항에 있어서, 상기 디바이스 컨트롤러는
    상기 제3 명령에 응답하여 상기 데이터 버퍼에 저장된 데이터 중 상기 제1 명령에 상응하는 데이터를 상기 호스트로 전송하고,
    상기 호스트로부터의 제4 명령에 응답하여 상기 데이터 버퍼에 저장된 데이터 중 상기 제2 명령에 상응하는 데이터를 상기 호스트로 전송하는 eMMC.
  11. 제9항에 있어서, 상기 디바이스 컨트롤러는
    상기 제1 명령에 상응하는 데이터와 상기 제2 명령에 상응하는 데이터를 멀티 플레인 리드 명령을 이용하여 상기 플래시 메모리로부터 리드하는 eMMC.
  12. 제8항에 있어서,
    상기 제1 명령 및 상기 제2 명령의 명령 타입은 멀티 큐 라이트 명령이고,
    상기 디바이스 컨트롤러는
    상기 제1 명령에 응답하여 상기 호스트로부터 전송된 데이터를 상기 M개의 데이터 버퍼들 중 제1 데이터 버퍼에 저장하고, 상기 제2 명령에 응답하여 상기 호스트로부터 전송된 데이터를 상기 M개의 데이터 버퍼들 중 제2 데이터 버퍼에 저장하며, 상기 제1 및 제2 데이터 버퍼에 저장된 데이터를 상기 플래시 메모리로 프로그램하는 eMMC.
  13. 제12항에 있어서, 상기 디바이스 컨트롤러는
    상기 제1 명령에 상응하는 데이터를 상기 플래시 메모리로 프로그램 완료하기 전에 상기 제2 명령을 수신하는 eMMC.
  14. 제12항에 있어서,
    상기 호스트로부터 상기 eMMC로 상기 제1 명령에 상응하는 데이터의 전송과 상기 호스트로부터 상기 eMMC로 상기 제2 명령의 전송은 병렬적으로 이루어지는 eMMC.
  15. 제12항에 있어서, 상기 디바이스 컨트롤러는
    상기 제1 명령에 상응하는 데이터와 상기 제2 명령에 상응하는 데이터를 멀티 플레인 프로그램 명령을 이용하여 상기 플래시 메모리로 병렬적으로 라이트하는 eMMC.
  16. 호스트와 클락 버스, 명령 버스, 및 데이터 버스를 통해 연결되는 임베디드 멀티미디어 카드(embedded Multimedia Card(eMMC))의 동작 방법에 있어서,
    호스트로부터 제1 명령을 수신하여 N(2이상의 자연수) 명령 레지스터들 중 제1 명령 레지스터에 저장하는 단계; 및
    상기 호스트로부터 제2 명령을 수신하여 상기 명령 레지스터들 중 제2 명령 레지스터에 저장하는 단계를 포함하며,
    상기 제2 명령은 상기 제1 명령에 상응하는 동작이 완료되기 전에 상기 호스트로부터 수신되는 eMMC의 동작 방법.
  17. 제16항에 있어서, 상기 제1 명령 및 상기 제2 명령은 각각
    명령의 종류를 나타내는 명령 타입, 명령을 수행할 어드레스, 및 데이터 크기를 포함하는 eMMC의 동작 방법.
  18. 제17항에 있어서,
    상기 제1 명령 및 상기 제2 명령의 명령 타입은 멀티 큐 리드 명령이고,
    상기 방법은
    상기 제1 명령에 상응하는 응답을 상기 호스트로 전송하는 단계; 및
    상기 제2 명령에 상응하는 응답을 상기 호스트로 전송하는 단계를 더 포함하고,
    상기 제2 명령은 상기 제1 명령에 상응하는 응답을 상기 호스트가 수신한 직후 상기 호스트에 의해 발급되는 eMMC의 동작 방법.
  19. 제18항에 있어서, 상기 방법은
    상기 제1 명령에 응답하여 플래시 메모리로부터 제1 데이터를 리드하여 제1 데이터 버퍼에 저장하는 단계; 및
    상기 제2 명령에 상응하는 상기 플래시 메모리로부터 제2 데이터를 리드하여 제2 데이터 버퍼에 저장하는 단계를 더 포함하는 eMMC의 동작 방법.
  20. 제19항에 있어서, 상기 방법은
    상기 호스트로부터의 제3 명령에 응답하여 상기 제1 데이터 버퍼에 저장된 상기 제1 데이터를 상기 호스트로 전송하는 단계; 및
    상기 호스트로부터의 제4 명령에 응답하여 상기 제2 데이터 버퍼에 저장된 상기 제2 데이터를 상기 호스트로 전송하는 단계를 더 포함하는 eMMC의 동작 방법.
  21. 제17항에 있어서,
    상기 제1 명령 및 상기 제2 명령의 명령 타입은 멀티 큐 라이트 명령이고,
    상기 방법은
    상기 제1 명령에 상응하는 제1 데이터를 상기 호스트로부터 수신하여 제1 데이터 버퍼에 저장하는 단계;
    상기 제2 명령에 상응하는 제2 데이터를 상기 호스트로부터 수신하여 제2 데이터 버퍼에 저장하는 단계를 더 포함하고,
    상기 제2 명령은 상기 제2 명령에 상응하는 제2 데이터의 전송 중에 상기 호스트로부터 수신되는 eMMC의 동작 방법.
  22. 제21항에 있어서, 상기 방법은
    상기 제1 명령에 응답하여 플래시 메모리로 상기 제1 데이터를 프로그램하는 단계; 및
    상기 제2 명령에 응답하여 상기 플래시 메모리로 상기 제2 데이터를 프로그램하는 단계를 더 포함하는 eMMC의 동작 방법.
  23. 임베디드 멀티미디어 카드(embedded Multimedia Card(eMMC))를 제어하는 호스트의 동작 방법에 있어서,
    제1 명령을 명령 버스를 통해 상기 eMMC로 전송하는 단계;
    상기 제1 명령에 상응하는 데이터를 데이터 버스를 통해 상기 eMMC로 전송하거나, 상기 eMMC로부터 수신하는 단계; 및
    상기 데이터 전송 중에 또는 상기 데이터 전송 전에 제2 명령을 상기 명령 버스를 통해 상기 eMMC로 전송하는 단계를 포함하는 호스트의 동작 방법.
  24. 제23항에 있어서, 상기 호스트의 동작 방법은
    호스트 멀티 큐 뎁스를 저장하는 단계를 더 포함하며,
    상기 제1 명령에 상응하는 데이터의 전송 중 또는 상기 데이터의 전송 전에 상기 eMMC로 발급할 수 있는 명령의 최대 수는 상기 최대 멀티 큐 뎁스인 호스트의 동작 방법.
  25. 제24항에 있어서, 상기 호스트 멀티 큐 뎁스를 저장하는 방법은
    상기 eMMC로부터 Extended CSD 레지스터의 정보를 읽는 단계; 및
    상기 Extended CSD 레지스터 정보에 포함된 멀티 큐 뎁스를 추출하여 상기 호스트 멀티 큐 뎁스로 저장하는 단계를 포함하는 호스트의 동작 방법.
KR1020120102488A 2012-09-14 2012-09-14 임베디드 멀티미디어 카드, 및 이의 동작 방법 KR101988260B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120102488A KR101988260B1 (ko) 2012-09-14 2012-09-14 임베디드 멀티미디어 카드, 및 이의 동작 방법
US14/025,866 US9619175B2 (en) 2012-09-14 2013-09-13 Embedded multimedia card (eMMC), host for controlling the eMMC, and methods of operating the eMMC and the host

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120102488A KR101988260B1 (ko) 2012-09-14 2012-09-14 임베디드 멀티미디어 카드, 및 이의 동작 방법

Publications (2)

Publication Number Publication Date
KR20140035776A true KR20140035776A (ko) 2014-03-24
KR101988260B1 KR101988260B1 (ko) 2019-06-12

Family

ID=50340071

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120102488A KR101988260B1 (ko) 2012-09-14 2012-09-14 임베디드 멀티미디어 카드, 및 이의 동작 방법

Country Status (2)

Country Link
US (1) US9619175B2 (ko)
KR (1) KR101988260B1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150110091A (ko) * 2014-03-24 2015-10-02 삼성전자주식회사 데이터 저장 장치의 동작 방법과 상기 데이터 저장 장치를 포함하는 시스템의 동작 방법
KR20170020308A (ko) * 2014-06-16 2017-02-22 샌디스크 테크놀로지스 엘엘씨 마스타-슬레이브 환경에서 커맨드 데이터를 전달하는 시스템 및 방법
KR20190033920A (ko) * 2017-09-22 2019-04-01 삼성전자주식회사 스토리지 장치 및 그 동작 방법
US11048435B2 (en) 2018-03-29 2021-06-29 SK Hynix Inc. Memory controller and method of operating the same
US11194510B2 (en) 2017-09-22 2021-12-07 Samsung Electronics Co., Ltd. Storage device and method of operating the same

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9189389B2 (en) * 2013-03-11 2015-11-17 Kabushiki Kaisha Toshiba Memory controller and memory system
KR102111741B1 (ko) * 2014-01-10 2020-05-15 삼성전자주식회사 임베디드 멀티미디어 카드 및 이의 동작 방법
US9454310B2 (en) * 2014-02-14 2016-09-27 Micron Technology, Inc. Command queuing
US10402319B2 (en) * 2014-07-25 2019-09-03 Micron Technology, Inc. Apparatuses and methods for concurrently accessing different memory planes of a memory
US9502125B2 (en) 2014-09-08 2016-11-22 Micron Technology, Inc. Concurrently reading first and second pages of memory cells having different page addresses
JP6543122B2 (ja) * 2015-07-17 2019-07-10 キヤノン株式会社 情報処理装置と、前記情報処理装置による不揮発記憶装置の初期化方法、及びプログラム
US10318193B2 (en) 2015-09-14 2019-06-11 Sandisk Technologies Llc Systems and methods of command authorization
TWI615771B (zh) * 2015-09-17 2018-02-21 慧榮科技股份有限公司 資料儲存裝置及其資料讀取方法
CN106547480B (zh) * 2015-09-17 2019-04-12 慧荣科技股份有限公司 数据储存装置及其数据读取方法
CN105390163B (zh) * 2015-12-15 2018-05-08 深圳佰维存储科技股份有限公司 Emmc测试装置
JP6544246B2 (ja) * 2016-01-15 2019-07-17 富士通株式会社 不揮発性ストレージおよび不揮発性ストレージの処理方法
US9959044B2 (en) * 2016-05-03 2018-05-01 Macronix International Co., Ltd. Memory device including risky mapping table and controlling method thereof
US10684795B2 (en) 2016-07-25 2020-06-16 Toshiba Memory Corporation Storage device and storage control method
TW202314512A (zh) 2017-12-28 2023-04-01 慧榮科技股份有限公司 快閃記憶體控制器、安全數位卡、使用於快閃記憶體控制器的方法以及存取安全數位卡的主機
US10866746B2 (en) 2017-12-28 2020-12-15 Silicon Motion Inc. Memory addressing methods and associated controller, memory device and host
US10929285B2 (en) * 2018-02-27 2021-02-23 Western Digital Technologies, Inc. Storage system and method for generating a reverse map during a background operation and storing it in a host memory buffer
TWI768731B (zh) * 2021-02-25 2022-06-21 威盛電子股份有限公司 電腦系統
US11429312B1 (en) 2021-06-09 2022-08-30 Hewlett-Packard Development Company, L.P. Multiplexed storage accesses
US11989458B2 (en) * 2022-09-12 2024-05-21 Western Digital Technologies, Inc. Splitting sequential read commands

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5526484A (en) * 1992-12-10 1996-06-11 International Business Machines Corporation Method and system for pipelining the processing of channel command words
US6323867B1 (en) * 1999-04-26 2001-11-27 Mediaq Inc. Parsing graphics data structure into command and data queues
US6496192B1 (en) * 1999-08-05 2002-12-17 Matsushita Electric Industrial Co., Ltd. Modular architecture for image transposition memory using synchronous DRAM
US20090094678A1 (en) * 2007-10-05 2009-04-09 Nokia Corporation Mulimode device
US20100318842A1 (en) * 2009-06-12 2010-12-16 Kabushiki Kaisha Toshiba Controller, storage medium, and information control method
US20110208905A1 (en) * 2008-12-09 2011-08-25 Rambus Inc. Non-Volatile Memory Device For Concurrent And Pipelined Memory Operations

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6081860A (en) * 1997-11-20 2000-06-27 International Business Machines Corporation Address pipelining for data transfers
JP2003203490A (ja) 2002-01-08 2003-07-18 Seiko Epson Corp 半導体記憶装置、制御装置、および半導体記憶装置の制御方法
JP4082913B2 (ja) * 2002-02-07 2008-04-30 株式会社ルネサステクノロジ メモリシステム
JP2006252079A (ja) 2005-03-09 2006-09-21 Kyodo Printing Co Ltd 情報記録媒体、情報通信システム、情報通信方法及び情報通信プログラム
JP2007058518A (ja) 2005-08-24 2007-03-08 Renesas Technology Corp メモリカード
WO2008068612A1 (en) * 2006-12-08 2008-06-12 Marvell World Trade Ltd. System and method for peripheral device communications
US20100131701A1 (en) 2008-11-25 2010-05-27 Samsung Electronics Co., Ltd. Nonvolatile memory device with preparation/stress sequence control
US8386736B2 (en) * 2008-12-18 2013-02-26 Spansion Llc Rapid memory buffer write storage system and method
KR20100115583A (ko) 2009-04-20 2010-10-28 삼성전자주식회사 데이터 저장 시스템
KR20100120518A (ko) 2009-05-06 2010-11-16 삼성전자주식회사 데이터 저장 장치 및 그것의 읽기 커멘드 처리 방법
TWI454906B (zh) 2009-09-24 2014-10-01 Phison Electronics Corp 資料讀取方法、快閃記憶體控制器與儲存系統
US8407407B1 (en) * 2009-10-06 2013-03-26 Marvell International Ltd. Solid state drive access control system with equalized access timing
US8489803B2 (en) 2009-12-14 2013-07-16 Smsc Holdings S.A.R.L. Efficient use of flash memory in flash drives
JP2011242884A (ja) 2010-05-14 2011-12-01 Toshiba Corp メモリシステム及びそのデータ転送方法
TW201227391A (en) 2010-12-16 2012-07-01 Walton Advanced Eng Inc Storage device with a hidden space and its operation method
US20130019053A1 (en) * 2011-07-14 2013-01-17 Vinay Ashok Somanache Flash controller hardware architecture for flash devices

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5526484A (en) * 1992-12-10 1996-06-11 International Business Machines Corporation Method and system for pipelining the processing of channel command words
US6323867B1 (en) * 1999-04-26 2001-11-27 Mediaq Inc. Parsing graphics data structure into command and data queues
US6496192B1 (en) * 1999-08-05 2002-12-17 Matsushita Electric Industrial Co., Ltd. Modular architecture for image transposition memory using synchronous DRAM
US20090094678A1 (en) * 2007-10-05 2009-04-09 Nokia Corporation Mulimode device
US20110208905A1 (en) * 2008-12-09 2011-08-25 Rambus Inc. Non-Volatile Memory Device For Concurrent And Pipelined Memory Operations
US20100318842A1 (en) * 2009-06-12 2010-12-16 Kabushiki Kaisha Toshiba Controller, storage medium, and information control method

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150110091A (ko) * 2014-03-24 2015-10-02 삼성전자주식회사 데이터 저장 장치의 동작 방법과 상기 데이터 저장 장치를 포함하는 시스템의 동작 방법
KR20170020308A (ko) * 2014-06-16 2017-02-22 샌디스크 테크놀로지스 엘엘씨 마스타-슬레이브 환경에서 커맨드 데이터를 전달하는 시스템 및 방법
KR20190033920A (ko) * 2017-09-22 2019-04-01 삼성전자주식회사 스토리지 장치 및 그 동작 방법
US10795594B2 (en) 2017-09-22 2020-10-06 Samsung Electronics Co., Ltd. Storage device
US11194510B2 (en) 2017-09-22 2021-12-07 Samsung Electronics Co., Ltd. Storage device and method of operating the same
US11048435B2 (en) 2018-03-29 2021-06-29 SK Hynix Inc. Memory controller and method of operating the same

Also Published As

Publication number Publication date
US9619175B2 (en) 2017-04-11
US20140089568A1 (en) 2014-03-27
KR101988260B1 (ko) 2019-06-12

Similar Documents

Publication Publication Date Title
KR101988260B1 (ko) 임베디드 멀티미디어 카드, 및 이의 동작 방법
KR101932920B1 (ko) 비휘발성 메모리 카드를 제어하는 호스트, 이를 포함하는 시스템 및 이의 동작 방법
KR101919903B1 (ko) 임베디드 멀티미디어 카드, 이를 제어하는 호스트, 및 이들의 동작 방법
KR102111741B1 (ko) 임베디드 멀티미디어 카드 및 이의 동작 방법
KR20160049200A (ko) 데이터 저장 장치의 작동 방법, 이를 포함하는 모바일 컴퓨팅 장치, 및 이의 작동 방법
CN115495389B (zh) 存储控制器、计算存储装置以及计算存储装置的操作方法
KR20200025184A (ko) 불휘발성 메모리 장치, 이를 포함하는 데이터 저장 장치 및 그 동작 방법
KR20210098717A (ko) 컨트롤러, 컨트롤러의 동작 방법 및 이를 포함하는 저장 장치
US20220350655A1 (en) Controller and memory system having the same
KR20200085966A (ko) 데이터 저장 장치 및 그 동작 방법
KR102100707B1 (ko) 데이터 저장 장치
EP4105771A1 (en) Storage controller, computational storage device, and operational method of computational storage device
KR102434840B1 (ko) 데이터 저장 장치
KR20100120518A (ko) 데이터 저장 장치 및 그것의 읽기 커멘드 처리 방법
EP4398084A1 (en) Storage device and operating method thereof
US20240231698A1 (en) Storage devices and operating methods thereof
US20230136654A1 (en) Memory system and command determination method
KR101175250B1 (ko) 낸드 플래시 메모리 장치와 그의 컨트롤러 및 이들의 라이트 오퍼레이션 방법
KR20240110440A (ko) 스토리지 장치 및 그의 동작 방법
CN114694700A (zh) 存储器控制器、非易失性存储器装置及其存储装置
CN117806535A (zh) 操作固态驱动器的方法和固态驱动器

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant