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

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

Info

Publication number
KR101919903B1
KR101919903B1 KR1020120102483A KR20120102483A KR101919903B1 KR 101919903 B1 KR101919903 B1 KR 101919903B1 KR 1020120102483 A KR1020120102483 A KR 1020120102483A KR 20120102483 A KR20120102483 A KR 20120102483A KR 101919903 B1 KR101919903 B1 KR 101919903B1
Authority
KR
South Korea
Prior art keywords
data
host
emmc
command
instruction
Prior art date
Application number
KR1020120102483A
Other languages
English (en)
Other versions
KR20140035774A (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 KR1020120102483A priority Critical patent/KR101919903B1/ko
Priority to US14/024,786 priority patent/US9792072B2/en
Priority to DE102013110086.4A priority patent/DE102013110086A1/de
Priority to JP2013191126A priority patent/JP6622446B2/ja
Priority to CN201310421543.6A priority patent/CN103677665B/zh
Priority to DE102013016993.3A priority patent/DE102013016993B4/de
Publication of KR20140035774A publication Critical patent/KR20140035774A/ko
Application granted granted Critical
Publication of KR101919903B1 publication Critical patent/KR101919903B1/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
    • 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/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • 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)
  • Memory System (AREA)
  • Information Transfer Systems (AREA)
  • Read Only Memory (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 버퍼를 포함한다.
상기 명령 셋은 상기 플래시 메모리에 라이트할 데이터 또는 상기 플래시 메모리로부터 리드할 데이터 크기를 지정하기 위한 크기 지정 명령; 및 시작 어드레스를 지정하기 위한 어드레스 지정 명령을 포함할 수 있다.
상기 명령 레지스터는 각각이 상기 데이터 크기와 상기 시작 어드레스를 저장할 수 있는 N(2이상의 자연수)개의 레지스터 셋들을 포함하고, 상기 명령 셋을 최대 N개까지 상기 명령 레지스터에 저장할 수 있다.
상기 명령 셋은 상기 플래시 메모리로부터 데이터를 독출하기 위한 명령 셋이고,
상기 디바이스 컨트롤러는 상기 명령 레지스터의 각 레지스터 셋에 저장된 시작 어드레스로부터 해당 데이터 크기만큼의 데이터를 상기 플래시 메모리로부터 독출하여 상기 제2 버퍼에 저장할 수 있다.
상기 디바이스 컨트롤러는 상기 호스트로부터 데이터 리드 아웃 명령을 수신하고, 상기 데이터 리드 아웃 명령에 응답하여 상기 제2 버퍼에 저장된 데이터를 상기 호스트로 전송할 수 있다.
상기 명령 셋은 상기 플래시 메모리로 데이터를 저장하기 위한 명령 셋이고, 상기 디바이스 컨트롤러는 상기 호스트로부터 데이터 라이트 인 명령에 응답하여 상기 호스트로부터 전송되는 데이터를 수신하여 상기 제2 버퍼에 저장할 수 있다.
상기 디바이스 컨트롤러는 상기 명령 레지스터의 각 레지스터 셋에 저장된 데이터 크기만큼의 데이터를 상기 플래시 메모리의 해당 시작 어드레스로부터 프로그램할 수 있다.
상기 플래시 메모리는 상기 N을 저장하기 위한 Extended CSD 레지스터를 더 포함할 수 있다.
본 발명의 실시 예에 따르면, 호스트와 클락 버스, 명령 버스, 및 데이터 버스를 통해 연결되는 임베디드 멀티미디어 카드(embedded Multimedia Card(eMMC))의 동작 방법은 상기 데이터 버스를 통해 상기 호스트와 데이터를 전송(송신 또는 수신) 하는 단계; 및 상기 호스트와 데이터 전송 중에 상기 명령 버스를 통해 상기 호스트로부터 전송되는 명령 셋을 수신하여 명령 레지스터에 저장하는 단계를 포함한다.
상기 명령 셋은 데이터 크기를 지정하기 위한 크기 지정 명령 및 시작 어드레스를 지정하기 위한 어드레스 지정 명령을 포함할 수 있다.
본 발명의 실시 예에 따르면, 호스트는 데이터 전송 중에도 다음 리드/라이트 명령을 eMMC에 보낼 수 있다. 따라서, eMMC는 이전 데이터의 전송 중에도 다음 리드/라이트 명령에 대한 준비 동작을 수행할 수 있다. 따라서, eMMC의 리드/라이트 성능을 향상시킬 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 임베디드 멀티미디어 카드(embedded multimedia card(eMMC)) 시스템의 블록도를 나타낸다.
도 2는 본 발명의 일 실시예에 따른 eMMC 장치의 블록도이다.
도 3은 도 2에 도시된 명령 레지스터들의 일 실시예를 나타낸다.
도 4a 내지 도 4c는 멀티 큐 명령, 및 상기 명령에 포함된 정보를 나타내는 도면들이다.
도 5는 도 2에 도시된 버퍼의 일 실시예를 나타낸다.
도 6은 본 발명의 일 실시예에 따른 멀티 큐 리드 동작 방법을 개략적으로 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시예에 따른 멀티 큐 리드 동작 방법을 나타내는 플로우챠트이다.
도 8은 본 발명의 일 실시예에 따른 멀티 큐 리드 동작 방법과 통상의 eMMC의 리드 동작 방법을 비교하기 위한 개략적인 타이밍도이다.
도 9는 본 발명의 일 실시예에 따른 멀티 큐 라이트 동작 방법을 나타내는 플로우챠트이다.
도 10은 본 발명의 일 실시예에 따른 멀티 큐 라이트 동작 방법과 통상의 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(dual data rate) 로 수행될 수 있다.
호스트(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)을 포함한다.
도 3은 도 2에 도시된 명령 레지스터들(325)의 일 실시예를 나타낸다.
도 3을 참조하면, 명령 레지스터들(325)은 N(2이상의 자연수)개의 레지스터 셋(326-1~326-N 및 327-1~327-N)을 포함한다. N은 명령 레지스터 셋의 사이즈(즉, 개수)를 나타내며, 2이상의 자연수이다. N을 멀티 큐 뎁쓰(multi queue depth)라 정의한다.
따라서, eMMC 호스트 인터페이스(320)는 최대 멀티 큐 뎁쓰(N) 만큼의 멀티 큐 명령을 호스트로부터 수신하여 레지스터 셋(326-1~326-N 및 327-1~327-N)에 저장할 수 있다. 명령 레지스터들(325)은 데이터 크기(DS1~DSN)를 저장하기 위한 데이터 크기 레지스터(326-1~326-N)와 시작 어드레스(SA1~SAN)을 저장하기 위한 어드레스 레지스터(327-1~327-N)를 포함할 수 있다. 데이터 크기(DS1~DSN) 및 시작 어드레스(SA1~SAN)는 멀티 큐 명령에 포함된 정보일 수 있다.
멀티 큐 명령은 호스트(200)로부터 수신된 명령을 eMMC(300)에 저장해 둠으로써, 이전 명령에 대한 동작을 완료하기 전(예컨대, 플래시 메모리(370)로부터 리드한 데이터를 상기 호스트로 전송하기 전, 또는 호스트로부터 수신한 데이터를 플래시 메모리(370)에 프로그램하기 전)에 다음 명령을 또 수신할 있도록 호스트(200)와 eMMC(300) 간에 미리 정의된 명령이다.
멀티 큐 명령은 eMMC(300)로부터 데이터를 리드하기 위한 멀티 큐 리드 명령, 및 eMMC(300)에 데이터를 라이트하기 위한 멀티 큐 라이트 명령을 포함할 수 있다.
또한, 멀티 큐 명령은 멀티 큐 리드 명령에 응답하여 리드된 데이터를 호스트로 읽어가기 위한 데이터 리드 아웃 명령 및 멀티 큐 라이트 명령에 응답하여 큐 데이터 버퍼에 저장된 데이터를 플래시 메모리에 저장하기 위한 데이터 라이트 인 명령을 포함할 수 있으나, 이에 한정되는 것은 아니다.
각 레지스터 셋(326-1~326-N, 326-1~326-N)은 호스트(200)에서 발급된 멀티 큐 명령에 대한 정보를 저장한다.
도 4a 내지 도 4c는 멀티 큐 명령, 및 상기 명령에 포함된 정보를 나타내는 도면들이다.
먼저, 도 4a를 참조하면, 멀티 큐 명령은 두 개의 명령(CMD_ds, CMD_sa)을 포함하는 명령 셋(command set, CS)으로 구성될 수 있으나, 이에 한정되는 것은 아니다.
명령 셋(CS)의 첫 번째 명령(CMD_ds, 430)은 플래시 메모리로부터 읽을 데이터 또는 플래시 메모리에 저장할 데이터의 크기를 지정하기 위한 명령(이하, 크기 지정 명령이라 함)이고, 두 번째 명령(CMD_sa, 440)는 데이터의 위치를 나타내는 시작 어드레스를 지정하기 위한 명령(이하, 어드레스 지정 명령이라 함)일 수 있다. 본 발명의 실시예에서는 크기 지정 명령(CMD_ds)이 먼저 발급되고, 어드레스 지정 명령(CMD_sa)이 다음에 발급되는 것으로 도시되나, 그 순서는 변경될 수 있다.
도 4b를 참조하면, 크기 지정 명령(430)은 명령 타입(command type, 431), 및 데이터 크기(data size, 432)를 포함할 수 있다. 명령 타입은 명령의 종류를 나타내는 필드(field, 혹은 아규먼트(argument))이다. 일 실시예에서, 데이터 크기(432)는 블록 수(block count)일 수 있으나, 이에 한정되는 것은 아니다.
블록이란, 미리 정의된 사이즈를 갖는 데이터의 단위로서, 예컨대, 플래시 메모리의 페이지에 해당할 수 있으나, 이에 한정되는 것은 아니다.
크기 지정 명령(430)의 데이터 크기(432)는 레지스터 셋(325)의 데이터 크기 레지스터(326-1~326-N) 중 대응하는 하나에 저장될 수 있다.
도 4c를 참조하면, 어드레스 지정 명령(440)은 명령 타입(command type, 441), 및 시작 어드레스(start address, 442)를 포함할 수 있다. 어드레스 지정 명령(440)의 시작 어드레스(442)는 레지스터 셋(325)의 어드레스 레지스터(327-1~327-N) 중 대응하는 하나에 저장될 수 있다.
다시 도 3을 참조하면, 데이터 크기(DS) 및 시작 어드레스(SA)는 상술한 바와 같이 호스트로부터 발급되는 멀티 큐 명령에 포함되어 eMMC(300)로 전송될 수 있다.
시작 어드레스(SA)는 멀티 큐 명령을 수행할 시작 어드레스를 나타낸다. 데이터 크기(data size)는 멀티 큐 명령을 수행할 데이터의 크기이다. 예를 들어, 멀티 큐 명령이 리드 명령이고 시작 어드레스는 100, 데이터 크기가 10이면, 100번 시작 어드레스에서부터 10 블록(blocks)만큼의 데이터를 리드하라는 의미일 수 있다.
CPU(330)는 각 인터페이스(320과 365)의 동작을 제어하고, eMMC 장치(300)의 동작을 전반적으로 제어한다.
메모리(340)는 인터페이스들(320과 365) 사이에서 주거나 받는 데이터를 일시적으로 저장한다. 메모리(340)는 휘발성 메모리로 구현될 수 있다.
메모리(340)는 노말 버퍼(341), 큐 데이터 버퍼(345) 및 디바이스 펌웨어(350)를 저장할 수 있다. 디바이스 펌웨어(350)는 메모리(340)에 저장되고, CPU(330)에 의해 실행될 수 있다.
ECC(360)는 플래시 메모리(370)로부터 리드된 데이터의 에러를 검출하고 에러 검출시 에러 정정을 수행할 수 있다.
플래시 메모리(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)를 데이터 블록으로서 전송한다. 멀티 큐 뎁쓰(N)는 EXT_CSD 레지스터(371)의 유보 필드(reserved field)에 설정될 수 있다. 다른 실시예에서는, 멀티 큐 뎁쓰(N)는 EXT_CSD 레지스터(371)가 아닌 다른 호스트 제어 레지스터에 설정될 수도 있다.
도 5는 도 2에 도시된 버퍼(341, 345)의 일 실시예를 나타낸다.
도 5를 참조하면, 버퍼(341, 345)는 노말 버퍼(341) 및 큐 데이터 버퍼(345)를 포함한다. 버퍼(341, 345)는 호스트(200)로부터 수신하여 플래시 메모리(370)에 라이트할 데이터 혹은 플래시 메모리(370)로부터 리드하여 호스트(200)로 전송할 데이터를 일시적으로 저장한다.
노말버퍼(341)는 통상의 리드/라이트 동작에 사용되는 저장 장소이고, 큐데이터버퍼(345)는 멀티 큐 리드/라이트를 위해 사용되는 저장 장소이다. 물론 운영 방법이나 필요에 따라 노말버퍼(341)가 큐데이터버퍼(345)로 사용될 수 있으며, 큐데이터버퍼(345) 역시 노말버퍼(341)로 사용될 수 있다.
디바이스 컨트롤러(310) 내의 메모리(340)의 일부가 버퍼(341, 345)로 사용될 수 있으나, 디바이스 컨트롤러(310) 내부 또는 외부에 버퍼(341, 345)를 위한 메모리, 즉 버퍼 메모리가 별도로 구비될 수도 있다.
노말 버퍼(341)는 통상의 리드 명령 또는 통상의 라이트 명령에 따른 데이터를 저장하기 위한 버퍼이다.
큐 데이터 버퍼(345)는 본 발명의 실시예에 따른 멀티 큐 명령에 따른 데이터를 저장하기 위한 버퍼이다. 큐 데이터 버퍼(345)의 사이즈는 멀티 큐 뎁쓰(N)일 수 있으나, 이에 한정되는 것은 아니다.
상술한 바와 같이, 노말 버퍼(341)와 별도로 큐 데이터 버퍼(345)를 둠으로써, 노말 버퍼(341)의 데이터를 호스트(200)로 전송하거나 또는 호스트(200)로 데이터를 수신하여 노말 버퍼(341)에 저장하는 동안에도 멀티 큐 명령에 따른 데이터를 큐 데이터 버퍼(345)에 저장할 수 있다.
도 6은 본 발명의 일 실시예에 따른 멀티 큐 리드 동작 방법을 개략적으로 설명하기 위한 도면이다.
도 1 내지 도 6을 참조하면, 호스트(200)는 데이터(previous data, 401)의 전송 중에서도 멀티 큐 명령 셋(CS, 411~414)을 eMMC(300)로 전송할 수 있다.
이전 명령(previous command)에 따른 데이터(401)가 데이터 버스(103)를 통하여 호스트(200)로 전송 또는 eMMC(300)로 전송되고 있는 동안에도, 호스트(200)는 eMMC(300)가 다음 동작(데이터 리드 또는 데이터 라이트)을 미리 준비할 수 있도록 명령 버스(102)를 통하여 멀티 큐 명령 셋(CS, 411~414)을 eMMC(300)로 전송할 수 있다.
호스트(200)가 보낼 수 있는 멀티 큐 명령 셋(CS, 411~414)의 최대수는 멀티 큐 뎁쓰(N)일 수 있다.
각 멀티 큐 명령 셋(CS, 411~414)은 도 4a에 도시된 바와 같이, 크기 지정 명령과 어드레스 지정 명령을 포함할 수 있다. 본 실시예에서, 각 멀티 큐 명령 셋(CS, 411~414)은 도 4a 내지 도 4c에 도시된 바와 같이 명령 셋으로 구성되고, 리드 명령인 것으로 가정한다.
제1 멀티 큐 명령 셋(411)의 크기 지정 명령의 데이터 크기(DS1)는 명령 레지스터(325)의 데이터 크기 레지스터(326-1)에 저장되고, 제1 멀티 큐 명령 셋(411)의 어드레스 지정 명령의 시작 어드레스(SA1)는 명령 레지스터(325)의 어드레스 레지스터(327-1)에 저장된다. 제2 멀티 큐 명령 셋(412)의 크기 지정 명령의 데이터 크기(DS2) 및 어드레스 지정 명령의 시작 어드레스(SA2)는 각각 명령 레지스터(325)의 다음 레지스터 셋(326-2, 327-2)에 저장될 수 있다. 이와 마찬가지로, 제3 및 제4 멀티 큐 명령 셋(413, 414)의 각 데이터 크기(DS3, DS4) 및 시작 어드레스(SA3, SA4) 역시 레지스터 셋(326-3, 326-4, 327-3, 327-4)에 순차적으로 저장될 수 있다.
도 6에는 도시되지 않았지만, 호스트(200)로부터 크기 지정 명령 및 어드레스 지정 명령을 수신할 때마다 eMMC(300)는 명령에 대한 응답(R1)을 호스트(200)로 전송할 수 있다.
eMMC(300)는 레지스터 셋(326-1, 327-1)에 저장된 제1 멀티 큐 명령의 데이터 크기(DS1) 및 시작 어드레스(SA1)에 따라 플래시 메모리(CE0)로부터 해당 데이터(DAT-a)를 독출하여, 큐 데이터 버퍼(345)에 저장한다.
eMMC(300)는 레지스터 셋(326-2, 327-2)에 저장된 제2 멀티 큐 리드 명령의 데이터 크기(DS2) 및 시작 어드레스(SA2)에 따라 플래시 메모리(CE1)로부터 해당 데이터(DAT-b)를 독출하여, 큐 데이터 버퍼(345)에 저장한다.
이와 같은 방식으로, eMMC(300)는 레지스터 셋(326-3 및 327-3, 326-4 및 327-4)에 저장된 멀티 큐 리드 명령의 데이터 크기(DS3, DS4) 및 시작 어드레스(SA3, SA4)에 따라 플래시 메모리(CE3, CE3)로부터 나머지 데이터(DAT-c, DAT-d)를 독출하여 큐 데이터 버퍼(345)에 저장한다.
플래시 메모리(370)로부터의 데이터(DAT-a, DAT-b, DTA-c, DAT-d)의 독출은 순차적으로 이루어질 수도 있고, 병렬적으로 이루어질 수도 있다.
일 실시예에서, eMMC(300)는 플래시 메모리(370)로부터 병렬동작으로 데이터(DAT-a, DAT-b, DTA-c, DAT-d)를 리드할 수 있다. 예컨대, eMMC(300)는 멀티 플레인 리드(Multi plane Read) 방식으로 플래시 메모리(370)의 제1 칩(CE0) 내지 제4 칩(CE3)로부터 데이터를 읽어오는 동작을 병렬적으로 수행할 수 있다.
이전 데이터(401)의 전송이 완료되면, 호스트(200)는 큐 데이터 버퍼(345)에 저장된 데이터(DAT-a, DAT-b, DTA-c, DAT-d)를 읽어갈 수 있다.
호스트(200)는 큐 데이터 버퍼(345)에 저장된 데이터를 읽어가기 위하여, 별도의 명령, 즉 데이터 리드 아웃 명령을 eMMC(300)로 전송활 수 있다. eMMC(300)는 한 번의 데이터 리드 아웃 명령에 응답하여 데이터 버퍼(345)에 저장된 데이터(DAT-a, DAT-b, DTA-c, 및 DAT-d) 모두를 순차적으로 데이터 버스를 통해 호스트(200)로 전송할 수 있다. 본 실시예에 따르면, 호스트(200)는 큐 데이터 버퍼(345)에 저장된 데이터(DAT-a, DAT-b, DTA-c, 및 DAT-d) 각각에 상응하는 데이터 리드 아웃 명령을 인가할 필요없이, 한 번의 데이터 리드 아웃 명령으로 큐 데이터 버퍼(345)에 저장된 데이터를 출력할 수 있다.
도 7은 본 발명의 일 실시예에 따른 멀티 큐 리드 동작 방법을 나타내는 플로우챠트이다.
이를 참조하면, 호스트는 리드할 데이터의 크기를 지정하기 위한 크기 지정 명령(CMD_ds)을 디바이스 컨트롤러로 전송한다(S510). 디바이스 컨트롤러는, 크기 지정 명령(CMD_ds)에 응답하여 응답(R1)을 호스트로 보내고(S515), 크기 지정 명령(CMD_ds)의 데이터 크기를 레지스터 셋에 저장한다.
호스트는 eMMC로부터 응답(R1)을 받은 후, 어드레스 지정 명령(CMD_sa)을 디바이스 컨트롤러로 전송한다(S520). 디바이스 컨트롤러는, 어드레스 지정 명령(CMD_sa)을 응답하여 응답(R1)을 호스트로 보내고(S525), 시작 어드레스를 레지스터 셋에 저장한다.
이러한 과정(S510~S525)은 최대 멀티 큐 뎁쓰(N)만큼 반복될 수 있고, 또한 데이터 버스를 통해 이전 데이터가 전송되는 도중에도 이루어질 수 있다.
디바이스 컨트롤러는, 레지스터 셋에 저장된 시작 어드레스 및 데이터 크기 셋에 따라 플래시 메모리로 리드 명령을 보내어(S530), 플래시 메모리로부터 해당 데이터를 리드한다(S540). 리드한 데이터는 큐 데이터 버퍼에 저장된다(S545).
이전 데이터의 전송이 완료되면(S550에서 YES인 경우), 호스트는 데이터 리드 아웃 명령(CMD_ro)을 디바이스 컨트롤러로 전송한다(S555). 호스트로부터 데이터 리드아웃 명령(CMD_ro)에 응답하여, 디바이스 컨트롤러는 응답(R1)을 호스트로 전송한다(S560). 아울러, 큐 데이터 버퍼의 데이터를 호스트로 전송한다(S565).
도 8은 본 발명의 일 실시예에 따른 멀티 큐 리드 동작 방법과 통상의 eMMC의 리드 동작 방법을 비교하기 위한 개략적인 타이밍도이다.
도 8의 (a)는 통상의 리드 동작 방법을 나타내고, 도 8의 (b)는 본 발명의 일 실시예에 따른 멀티 큐 리드 동작 방법을 나타낸다.
도 8의 (a)에 도시된 통상의 리드 동작 방법에 따르면, 현 상태(current state)가 데이터 전송 상태일 때, 즉 데이터 버스를 통하여 데이터의 전송 중(610)에는 호스트는 특정 명령-예컨대, 이전 명령을 중단시키기 위한 stop 명령 abort 명령 등-을 제외하고는, 플래시 메모리로 데이터를 리드하거나 라이트하기 위한 명령을 전송할 수 없다.
호스트는 데이터 전송(610)이 완료된 후에야 통상의 데이터 리드 명령(620)을 eMMC로 보낼 수 있다. eMMC는 통상의 데이터 리드 명령(621, 623)에 응답하여 플래시 메모리로부터 데이터를 리드하고(tR, 625), 리드한 데이터를 호스트로 전송한다(627). eMMC가 플래시 메모리로부터 데이터를 리드하고 데이터를 호스트로 전송하는 동안(625, 627)에는 호스트는 다음 데이터 리드 명령을 보낼 수 없다.
따라서, 호스트는 데이터 리드 명령을 보낸 후 리드 데이터를 수신할 때까지 대기할 수 밖에 없다(413).
한편, 도 8의 (b)를 참조하면, 본 발명의 실시예에 따르면, 데이터 전송 중(710)에도, 호스트(200)는 멀티 큐 리드 명령 셋(720)을 eMMC(300)로 보낸다.
좀 더 구체적으로는, 먼저 호스트(200)는 크기 지정 명령(CMD57, 721)을 eMMC(300)로 전송하고, eMMC(300)는 크기 지정 명령(CMD57, 721)에 대한 응답(R1, 722)를 호스트(200)로 전송한다. 다음으로 호스트(200)는 어드레스 지정 명령(CMD58, 723)을 eMMC(300)로 전송하고, eMMC(300)는 어드레스 지정 명령(CMD58, 723)에 대한 응답(R1, 724)를 호스트(200)로 전송한다.
여기서, 크기 지정 명령(CMD57, 721)은 도 4b에 도시된 크기 지정 명령(CMD_ds, 430)에 해당하고, 어드레스 지정 명령(CMD58, 723)은 도 4c에 도시된 어드레스 지정 명령(CMD_sa, 440)에 해당한다.
호스트(200)는 CMD57 및 CMD58로 구성된 멀티 큐 리드 명령 셋을 N회 eMMC(300)로 보낼 수 있다.
eMMC(300)는 멀티 큐 리드 명령 셋(720)에 응답하여 플래시 메모리(370)로부터 데이터를 독출하여, 큐 데이터 버퍼(345)에 저장한다. 한편 전송중인 데이터(701)는 노말 버퍼(341)에 저장되어 있다.
호스트(200)는 이전 데이터(710)의 전송이 완료되면, 큐 데이터 버퍼(345)에 저장된 데이터(731~733)를 읽어가기 위하여, 데이터 리드 아웃 명령(CMD59, 726)을 eMMC(300)로 전송한다. eMMC(300)는 데이터 리드 아웃 명령(CMD59, 726)에 응답하여 응답(R1, 726)을 보내고, 또한, 큐 데이터 버퍼(345M)에 저장된 데이터(731~733)를 데이터 버스를 통해 호스트(200)로 전송한다.
도 9는 본 발명의 일 실시예에 따른 멀티 큐 라이트 동작 방법을 나타내는 플로우챠트이다.
이를 참조하면, 호스트는 라이트할 데이터의 크기를 지정하기 위한 크기 지정 명령(CMD_ds)을 디바이스 컨트롤러로 전송한다(S610). 디바이스 컨트롤러는, 크기 지정 명령(CMD_ds)에 응답하여 응답(R1)을 호스트로 보내고(S615), 크기 지정 명령(CMD_ds)의 데이터 크기를 레지스터셋에 저장한다.
호스트는 eMMC로부터 응답(R1)을 받은 후, 어드레스 지정 명령(CMD_sa)을 디바이스 컨트롤러로 전송한다(S620). 디바이스 컨트롤러는, 어드레스 지정 명령(CMD_sa)을 응답하여 응답(R1)을 호스트로 보내고(S625), 시작 어드레스를 레지스터셋에 저장한다.
이러한 과정(S610~S625)은 최대 멀티 큐 뎁쓰(N)만큼 반복될 수 있고, 또한 데이터 버스를 통해 이전 데이터가 전송되는 도중에도 이루어질 수 있다(미도시). 또한, 디바이스 컨트롤러가 이전 데이터의 프로그램을 위하여 플래시 메모리로 프로그램 명령을 인가하고(S630), 플래시 메모리로 데이터를 프로그램하는 도중(S640)에도 이루어 질 수 있다. 이 때, 전송중인 데이터 또는 플래시 메모리로 프로그램되는 데이터는 노말 버퍼(341)에 저장될 수 있다.
이전 데이터의 전송이 완료되면(S650에서 YES인 경우), 호스트는 데이터 라이트 인 명령(CMD_wr)을 디바이스 컨트롤러로 전송한다(S655). 호스트로부터 데이터 라이트 인 명령(CMD_wr)에 응답하여, 디바이스 컨트롤러는 응답(R1)을 호스트로 전송한다(S660). 그러면, 호스트는 라이트 데이터를 eMMC(300)로 전송한다(S665).
eMMC(300)는 라이트 데이터를 큐 데이터 버퍼에 저장한다(S670). 디바이스 컨트롤러는 큐 데이터 버퍼에 저장된 데이터의 프로그램을 위하여 플래시 메모리로 프로그램 명령을 인가하여(S675), 플래시 메모리로 데이터를 프로그램한다(S680).
도 10은 본 발명의 일 실시예에 따른 멀티 큐 라이트 동작 방법과 통상의 eMMC의 라이트 동작 방법을 비교하기 위한 개략적인 타이밍도이다.
도 10의 (a)는 통상의 라이트 동작 방법을 나타내고, 도 10의 (b)는 본 발명의 일 실시예에 따른 멀티 큐 라이트 동작 방법을 나타낸다.
도 10의 (a)에 도시된 통상의 라이트 동작 방법에 따르면, 이전 데이터(810)의 전송이 완료된 후, 호스트는 라이트 명령(CMD, 821)과, 라이트 명령(CMD, 821)에 따른 데이터(812)를 eMMC로 보낸다. eMMC는 수신한 데이터(DAT-a, 812)를 플래시 메모리에 프로그램한다(tPRG1). 플래시 메모리에 데이터 프로그램이 완료되어야 데이터(DAT-a) 전송이 완료된다.
따라서, 호스트는 플래시 메모리에 데이터(DAT-a)의 프로그램이 완료되기까지 대기한 후 다음 라이트 명령(CMD, 822)와 이에 따른 데이터(DAT-b, 813)을 eMMC로 보낸다.
한편, 도 10의 (b)를 참조하면, 본 발명의 실시예에 따르면, 데이터 전송 중(831)에도, 호스트(200)는 멀티 큐 라이트 명령 셋(841~844)을 eMMC(300)로 보낸다.
각 멀티 큐 라이트 명령 셋(841~844)은 도 4a 내지 도 4에 도시된 바와 같이, 크기 지정 명령과 어드레스 지정 명령으로 구성될 수 있다.
eMMC(300)는 멀티 큐 라이트 명령 셋(841~844)을 명령 레지스터(325)에 저장한다. 호스트(200)는 이전 데이터(831)의 전송과 프로그램(tPROG)이 완료되면, 데이터 라이트 인 명령(CMD, 845)와 이에 따른 데이터(DAT-a, DAT-b, DAT-c, DAT-d)를 eMMC(300)로 보낸다.
eMMC(300)는 데이터(DAT-a, DAT-b, DAT-c, DAT-d)를 큐 데이터 버퍼(345)에 저장하고, 큐 데이터 버퍼(345)에 저장된 데이터(DAT-a, DAT-b, DAT-c, DAT-d)를 플래시 메모리로 프로그램한다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100; eMMC 시스템
200; 호스트
300; eMMC 장치
210; OS/Host Firmware
215; 프로세서
220; RAM
230; 호스트 컨트롤러
310; 장치 컨트롤러
320; 호스트 인터페이스
325; 명령 레지스터
330; CPU
340; 메모리
341; 노말 버퍼
345; 큐 데이터 버퍼
350; 디바이스 펌웨어
360; ECC
365; 플래시 인터페이스
370; 플래시 메모리

Claims (17)

  1. 플래시 메모리; 및
    상기 플래시 메모리의 동작을 제어하는 eMMC 컨트롤러를 포함하며,
    상기 eMMC 컨트롤러는
    호스트로부터 제1 데이터의 전송(송신 또는 수신) 중에 상기 호스트로부터 다음 동작을 정의하는 명령 셋을 수신하여 저장할 수 있는 명령 레지스터;
    상기 제1 데이터를 저장하는 제1 버퍼; 및
    상기 명령 셋에 대응하는 데이터를 저장하는 제2 버퍼를 포함하며,
    상기 명령 레지스터는 유효한 명령 셋을 최대 N(2이상의 자연수)개까지 저장할 수 있는 N개의 레지스터 셋들을 포함하고,
    각 명령 셋은 상기 eMMC 컨트롤러에 의해 실행될 다음 동작 및 상기 다음 동작이 실행될 어드레스 정보를 포함하는 임베디드 멀티미디어 카드(embedded Multimedia Card(eMMC)).
  2. 제1항에 있어서,
    데이터 버스를 통한 상기 제1 데이터의 전송과 동시에, 상기 명령 셋은 명령 버스를 통해 수신되는 것을 특징으로 하는 eMMC.
  3. 제2항에 있어서, 상기 명령 셋은
    상기 플래시 메모리에 라이트할 데이터 또는 상기 플래시 메모리로부터 리드할 데이터 크기를 지정하기 위한 크기 지정 명령; 및
    시작 어드레스를 지정하기 위한 어드레스 지정 명령을 포함하며,
    상기 레지스터 셋들 각각은
    상기 데이터 크기와 상기 시작 어드레스를 저장하는 eMMC.
  4. 제3항에 있어서,
    상기 명령 셋은 상기 플래시 메모리로부터 데이터를 독출하기 위한 명령 셋이고,
    상기 eMMC 컨트롤러는
    상기 명령 레지스터의 각 레지스터 셋에 저장된 시작 어드레스로부터 해당 데이터 크기만큼의 데이터를 상기 플래시 메모리로부터 독출하여 상기 제2 버퍼에 저장하는 eMMC.
  5. 제4항에 있어서, 상기 eMMC 컨트롤러는
    상기 호스트로부터 데이터 리드 아웃 명령을 수신하고, 상기 데이터 리드 아웃 명령에 응답하여 상기 제2 버퍼에 저장된 데이터를 상기 호스트로 전송하는 eMMC.
  6. 제3항에 있어서,
    상기 명령 셋은 상기 플래시 메모리로 데이터를 저장하기 위한 명령 셋이고,
    상기 eMMC 컨트롤러는
    상기 호스트로부터 데이터 라이트 인 명령에 응답하여 상기 호스트로부터 전송되는 데이터를 수신하여 상기 제2 버퍼에 저장하는 eMMC.
  7. 제6항에 있어서, 상기 eMMC 컨트롤러는
    상기 명령 레지스터의 각 레지스터 셋에 저장된 데이터 크기만큼의 데이터를 상기 플래시 메모리의 해당 시작 어드레스로부터 프로그램하는 eMMC.
  8. 제1항에 있어서, 상기 플래시 메모리는
    상기 N을 저장하기 위한 Extended CSD 레지스터를 포함하는 eMMC.
  9. 제1항에 있어서, 상기 제1 버퍼 및 상기 제2 버퍼는
    상기 플래시 메모리와 별도로 구비되는 eMMC.
  10. 호스트와 클락 버스, 명령 버스, 및 데이터 버스를 통해 연결되는 임베디드 멀티미디어 카드(embedded Multimedia Card(eMMC))의 동작 방법에 있어서,
    상기 데이터 버스를 통해 상기 호스트와 제1 데이터를 전송(송신 또는 수신) 하는 단계; 및
    상기 호스트와 상기 제1 데이터의 전송과 동시에, 상기 명령 버스를 통해 상기 호스트로부터 다음 동작을 정의하는 명령 셋을 수신하여 명령 레지스터에 저장하는 단계를 포함하며,
    상기 명령 레지스터는 유효한 명령 셋을 최대 N(2이상의 자연수)개까지 저장할 수 있는 N개의 레지스터 셋들을 포함하고,
    각 명령 셋은 상기 eMMC 컨트롤러에 의해 실행될 다음 동작 및 상기 다음 동작이 실행될 어드레스 정보를 포함하는 eMMC의 동작 방법.
  11. 제10항에 있어서,
    상기 명령 셋은 데이터 크기를 지정하기 위한 크기 지정 명령 및 시작 어드레스를 지정하기 위한 어드레스 지정 명령을 포함하며,
    상기 레지스터 셋들 각각은
    상기 데이터 크기와 상기 시작 어드레스를 저장하는 eMMC의 동작 방법.
  12. 제11항에 있어서, 상기 제1 데이터는 제1 버퍼에 저장되고,
    상기 명령 셋에 따른 제2 데이터는 상기 제1 버퍼와 별도의 제2 버퍼에 저장되는 eMMC의 동작 방법.
  13. 제12항에 있어서,
    상기 명령 셋은 플래시 메모리로부터 데이터를 독출하기 위한 명령 셋이고,
    상기 방법은
    상기 명령 레지스터의 각 레지스터 셋에 저장된 시작 어드레스로부터 해당 데이터 크기만큼의 데이터를 상기 플래시 메모리로부터 독출하여 상기 제2 버퍼에 저장하는 단계를 더 포함하는 eMMC의 동작 방법.
  14. 제13항에 있어서, 상기 방법은
    상기 호스트로부터 데이터 리드 아웃 명령을 수신하는 단계; 및
    상기 데이터 리드 아웃 명령에 응답하여 상기 제2 버퍼에 저장된 상기 제2 데이터를 상기 호스트로 전송하는 단계를 더 포함하는 eMMC의 동작 방법.
  15. 제12항에 있어서,
    상기 명령 셋은 플래시 메모리로 데이터를 저장하기 위한 명령 셋이고,
    상기 방법은
    상기 호스트로부터 데이터 라이트 인 명령을 수신하는 단계;
    상기 데이터 라이트 인 명령에 응답하여 상기 호스트로부터 전송되는 상기 제2 데이터를 수신하여 상기 제2 버퍼에 저장하는 단계를 더 포함하는 eMMC의 동작 방법.
  16. 제15항에 있어서, 상기 방법은
    상기 명령 레지스터의 각 레지스터 셋에 저장된 데이터 크기만큼의 데이터를 상기 플래시 메모리의 해당 시작 어드레스로부터 프로그램하는 단계를 더 포함하는 eMMC의 동작 방법.
  17. 제10항에 있어서, 상기 방법은
    상기 호스트로부터 SEND_EXT_CSD 명령을 수신하는 단계; 및
    상기 SEND_EXT_CSD 명령에 응답하여 EXT_CSD 레지스터의 데이터를 상기 호스트로 전송하는 단계를 더 포함하며,
    상기 N은 상기 EXT_CSD 레지스터의 유보 영역에 저장되는 eMMC의 동작 방법.
KR1020120102483A 2012-09-14 2012-09-14 임베디드 멀티미디어 카드, 이를 제어하는 호스트, 및 이들의 동작 방법 KR101919903B1 (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR1020120102483A KR101919903B1 (ko) 2012-09-14 2012-09-14 임베디드 멀티미디어 카드, 이를 제어하는 호스트, 및 이들의 동작 방법
US14/024,786 US9792072B2 (en) 2012-09-14 2013-09-12 Embedded multimedia card (eMMC), host controlling eMMC, and method operating eMMC system
DE102013110086.4A DE102013110086A1 (de) 2012-09-14 2013-09-13 Embedded Multimedia Card (eMMC), einen Host steuernde eMMC und Verfahren zum Betreiben eineseMMC-Systems
JP2013191126A JP6622446B2 (ja) 2012-09-14 2013-09-13 エンベデッドマルチメディアカード(eMMC)、それを制御するホスト、及びeMMCシステムの動作方法
CN201310421543.6A CN103677665B (zh) 2012-09-14 2013-09-16 嵌入式多媒体卡、控制其的主机及操作其系统的方法
DE102013016993.3A DE102013016993B4 (de) 2012-09-14 2013-10-14 Embedded Multimedia Card (eMMC), einen Host steuernde eMMC und Verfahren zum Betreiben eines eMMC-Systems

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120102483A KR101919903B1 (ko) 2012-09-14 2012-09-14 임베디드 멀티미디어 카드, 이를 제어하는 호스트, 및 이들의 동작 방법

Publications (2)

Publication Number Publication Date
KR20140035774A KR20140035774A (ko) 2014-03-24
KR101919903B1 true KR101919903B1 (ko) 2018-11-19

Family

ID=50181886

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120102483A KR101919903B1 (ko) 2012-09-14 2012-09-14 임베디드 멀티미디어 카드, 이를 제어하는 호스트, 및 이들의 동작 방법

Country Status (5)

Country Link
US (1) US9792072B2 (ko)
JP (1) JP6622446B2 (ko)
KR (1) KR101919903B1 (ko)
CN (1) CN103677665B (ko)
DE (2) DE102013110086A1 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102111741B1 (ko) * 2014-01-10 2020-05-15 삼성전자주식회사 임베디드 멀티미디어 카드 및 이의 동작 방법
CN104461754B (zh) * 2014-12-10 2018-06-19 福州瑞芯微电子股份有限公司 一种监控eMMC的方法和装置
CN104409099B (zh) * 2014-12-15 2017-12-29 成都傅立叶电子科技有限公司 基于FPGA的高速eMMC阵列控制器
US10067688B2 (en) * 2015-01-23 2018-09-04 Qualcomm Incorporated Storage resource management in virtualized environments
CN106155580B (zh) * 2015-04-27 2019-04-12 华为技术有限公司 一种基于嵌入式多媒体卡eMMC的存储方法及系统
US10318193B2 (en) 2015-09-14 2019-06-11 Sandisk Technologies Llc Systems and methods of command authorization
US9880772B2 (en) * 2015-09-21 2018-01-30 Micron Technology, Inc. Systems and methods for providing file information in a memory system protocol
KR102641107B1 (ko) * 2016-07-29 2024-02-27 삼성전자주식회사 스토리지 장치, 이를 포함하는 시스템 및 그 동작 방법
TWI661352B (zh) * 2016-09-22 2019-06-01 慧榮科技股份有限公司 資料儲存裝置及其資料寫入方法
US10585624B2 (en) * 2016-12-01 2020-03-10 Micron Technology, Inc. Memory protocol
CN108228405A (zh) * 2016-12-15 2018-06-29 北京兆易创新科技股份有限公司 一种数据传输方法及装置
CN107729140B (zh) * 2017-09-22 2020-07-28 华南理工大学 一种并行实现多个eMMC主机接口命令排队功能的装置及方法
CN109977041B (zh) * 2017-12-27 2024-05-24 恩智浦有限公司 与嵌入式多媒体卡装置通信的主机装置
US10318179B1 (en) * 2017-12-27 2019-06-11 Nxp B.V. Host device to embedded multi-media card device communication
US10817363B2 (en) 2018-03-19 2020-10-27 Micron Technology, Inc. Health characteristics of a memory device
CN108958950A (zh) * 2018-05-29 2018-12-07 联发科技(新加坡)私人有限公司 电子存储设备的任务管理方法、主机和存储装置
CN111176566B (zh) * 2019-12-25 2023-09-19 山东方寸微电子科技有限公司 一种支持queue命令的eMMC读写控制方法及存储介质
US11029958B1 (en) * 2019-12-28 2021-06-08 Intel Corporation Apparatuses, methods, and systems for configurable operand size operations in an operation configurable spatial accelerator
JP2022010951A (ja) 2020-06-29 2022-01-17 キオクシア株式会社 半導体記憶装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007026041A (ja) 2005-07-15 2007-02-01 Renesas Technology Corp 情報処理装置
US20090094678A1 (en) 2007-10-05 2009-04-09 Nokia Corporation Mulimode device
JP2012128644A (ja) 2010-12-15 2012-07-05 Toshiba Corp メモリシステム
US20130019053A1 (en) 2011-07-14 2013-01-17 Vinay Ashok Somanache Flash controller hardware architecture for flash devices

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0797319B2 (ja) * 1986-03-11 1995-10-18 日本電気株式会社 マイクロコンピュータシステム
US6081860A (en) * 1997-11-20 2000-06-27 International Business Machines Corporation Address pipelining for data transfers
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
US8296467B2 (en) 2000-01-06 2012-10-23 Super Talent Electronics Inc. Single-chip flash device with boot code transfer capability
JP2002082830A (ja) * 2000-02-14 2002-03-22 Mitsubishi Electric Corp インターフェイス回路
US6785793B2 (en) 2001-09-27 2004-08-31 Intel Corporation Method and apparatus for memory access scheduling to reduce memory access latency
JP2003122702A (ja) 2001-10-10 2003-04-25 Hitachi Communication Technologies Ltd 記憶装置
KR20040051608A (ko) * 2001-10-16 2004-06-18 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 컴퓨터 시스템 및 컴퓨터 시스템의 작동 방법
KR100450080B1 (ko) * 2001-11-13 2004-10-06 (주)지에스텔레텍 유에스비기반의 이동형 저장장치 및 그 제어방법
JP4082913B2 (ja) * 2002-02-07 2008-04-30 株式会社ルネサステクノロジ メモリシステム
JP4460867B2 (ja) * 2003-09-26 2010-05-12 東芝ストレージデバイス株式会社 インターフェース装置及びパケット転送方法
KR100626371B1 (ko) * 2004-03-30 2006-09-20 삼성전자주식회사 캐쉬 읽기 동작을 수행하는 비휘발성 메모리 장치, 그것을포함한 메모리 시스템, 그리고 캐쉬 읽기 방법
US7366865B2 (en) * 2004-09-08 2008-04-29 Intel Corporation Enqueueing entries in a packet queue referencing packets
KR100626391B1 (ko) * 2005-04-01 2006-09-20 삼성전자주식회사 원낸드 플래시 메모리 및 그것을 포함한 데이터 처리시스템
KR100875978B1 (ko) 2007-02-06 2008-12-26 삼성전자주식회사 메모리 카드 및 그것을 포함한 메모리 시스템
KR20110010770A (ko) 2008-05-13 2011-02-07 램버스 인코포레이티드 메모리 디바이스를 위한 단편화 프로그램 명령
KR101541344B1 (ko) 2008-12-05 2015-08-03 삼성전자주식회사 메모리 장치 및 메모리 장치의 제어 방법
KR101505005B1 (ko) 2008-12-05 2015-03-24 삼성전자주식회사 메모리 장치 및 메모리 장치의 관리 방법
WO2010077414A1 (en) * 2008-12-09 2010-07-08 Rambus Inc. Non-volatile memory device for concurrent and pipelined memory operations
US8341338B2 (en) 2009-05-06 2012-12-25 Samsung Electronics Co., Ltd. Data storage device and related method of operation
TWI454906B (zh) 2009-09-24 2014-10-01 Phison Electronics Corp 資料讀取方法、快閃記憶體控制器與儲存系統
TW201111986A (en) 2009-09-29 2011-04-01 Silicon Motion Inc Memory apparatus and data access method for memories
US20110296131A1 (en) 2010-05-31 2011-12-01 Samsung Electronics Co., Ltd Nonvolatile memory system and the operation method thereof
CN103119573A (zh) * 2010-09-21 2013-05-22 三菱电机株式会社 Dma控制器以及数据读出装置
JP4966404B2 (ja) 2010-10-21 2012-07-04 株式会社東芝 メモリ制御装置、記憶装置、及びメモリ制御方法
US20120124272A1 (en) * 2010-11-12 2012-05-17 Ememory Technology Inc. Flash memory apparatus
CN102082798B (zh) 2011-01-21 2013-04-17 华南理工大学 基于sdio接口的多媒体信息协处理设备及其通信方法
KR101887688B1 (ko) 2011-02-25 2018-08-10 가부시끼 가이샤 구보다 짚 배출 세단 장치, 및 탈곡 장치
CN102663471B (zh) * 2012-04-17 2015-09-23 惠州Tcl移动通信有限公司 基于emmc芯片的移动终端安全信息存储方法及系统
CN102883471B (zh) 2012-08-30 2016-06-29 锐迪科科技有限公司 单芯片多卡多待手机及其冲突解决方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007026041A (ja) 2005-07-15 2007-02-01 Renesas Technology Corp 情報処理装置
US20090094678A1 (en) 2007-10-05 2009-04-09 Nokia Corporation Mulimode device
JP2012128644A (ja) 2010-12-15 2012-07-05 Toshiba Corp メモリシステム
US20130019053A1 (en) 2011-07-14 2013-01-17 Vinay Ashok Somanache Flash controller hardware architecture for flash devices

Also Published As

Publication number Publication date
US9792072B2 (en) 2017-10-17
DE102013016993B4 (de) 2021-10-28
KR20140035774A (ko) 2014-03-24
DE102013110086A1 (de) 2014-03-20
DE102013110086A8 (de) 2014-05-15
CN103677665B (zh) 2018-05-18
JP2014059872A (ja) 2014-04-03
US20140082267A1 (en) 2014-03-20
JP6622446B2 (ja) 2019-12-18
DE102013016993A1 (de) 2014-04-17
CN103677665A (zh) 2014-03-26

Similar Documents

Publication Publication Date Title
KR101919903B1 (ko) 임베디드 멀티미디어 카드, 이를 제어하는 호스트, 및 이들의 동작 방법
KR101932920B1 (ko) 비휘발성 메모리 카드를 제어하는 호스트, 이를 포함하는 시스템 및 이의 동작 방법
KR101988260B1 (ko) 임베디드 멀티미디어 카드, 및 이의 동작 방법
EP2973572B1 (en) System and method of reading data from memory concurrently with sending write data to the memory
US9563368B2 (en) Embedded multimedia card and method of operating the same
KR101986355B1 (ko) 임베디드 멀티미디어 카드, 상기 임베디드 멀티미디어 카드를 포함하는 임베디드 멀티미디어 카드 시스템 및 상기 임베디드 멀티미디어 카드의 동작 방법
KR20160049200A (ko) 데이터 저장 장치의 작동 방법, 이를 포함하는 모바일 컴퓨팅 장치, 및 이의 작동 방법
TW201518947A (zh) 資料儲存系統以及其管理方法
TWI626540B (zh) 一般及垃圾回收的資料存取方法以及使用該方法的裝置
WO2009115058A1 (zh) 提供闪存存储功能的主板及其存储方法
KR20130009536A (ko) 메모리 제어 장치 및 방법
KR101175250B1 (ko) 낸드 플래시 메모리 장치와 그의 컨트롤러 및 이들의 라이트 오퍼레이션 방법

Legal Events

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