KR20150083741A - 임베디드 멀티미디어 카드 및 이의 동작 방법 - Google Patents

임베디드 멀티미디어 카드 및 이의 동작 방법 Download PDF

Info

Publication number
KR20150083741A
KR20150083741A KR1020140003629A KR20140003629A KR20150083741A KR 20150083741 A KR20150083741 A KR 20150083741A KR 1020140003629 A KR1020140003629 A KR 1020140003629A KR 20140003629 A KR20140003629 A KR 20140003629A KR 20150083741 A KR20150083741 A KR 20150083741A
Authority
KR
South Korea
Prior art keywords
task
command
host
data
emmc
Prior art date
Application number
KR1020140003629A
Other languages
English (en)
Other versions
KR102111741B1 (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 KR1020140003629A priority Critical patent/KR102111741B1/ko
Priority to US14/592,114 priority patent/US9563368B2/en
Publication of KR20150083741A publication Critical patent/KR20150083741A/ko
Application granted granted Critical
Publication of KR102111741B1 publication Critical patent/KR102111741B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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
    • 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
    • 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
    • G06F2206/00Indexing scheme related to dedicated interfaces for computers
    • G06F2206/10Indexing scheme related to storage interfaces for computers, indexing schema related to group G06F3/06
    • G06F2206/1014One time programmable [OTP] memory, e.g. PROM, WORM

Abstract

임베디드 멀티미디어 카드(eMMC), 및 이의 동작 방법이 개시된다. 본 발명의 eMMC는 플래시 메모리, 및 상기 플래시 메모리를 제어하는 디바이스 컨트롤러를 포함하며, 상기 디바이스 컨트롤러는 호스트로부터 데이터 버스의 상태와 상관없이 상기 호스트로부터 전송되는 명령을 수신하여 태스크 아이디별로 태스크 정보를 저장하는 명령 저장부, 및 상기 태스크 아이디별로 태스크의 상태에 기초한 상태 정보를 저장하는 상태 저장부를 포함한다.

Description

임베디드 멀티미디어 카드 및 이의 동작 방법{EMBEDDED MULTIMEDIA CARD(eMMC), AND METHODS FOR OPERATING THE eMMC}
본 발명의 개념에 따른 실시 예는 임베디드 멀티미디어 카드((embedded Multimedia Card(eMMC))에 관한 것으로, 특히 입출력 레이턴시를 줄일 수 있는 eMMC, 및 이의 동작 방법에 관한 것이다.
멀티미디어 카드(MultiMediaCard(MMC)는 플래시(flash) 메모리의 메모리 카드 표준이다.
eMMC는 JEDEC에서 표준으로 정한 내장형 MMC에 대한 표준이다. eMMC 통신은 11개의 신호 버스(11-signal bus)에 기반한다. eMMC은 스마트폰과 같은 이동 통신 장치에 삽입되어 사용될 수 있다.
본 발명이 이루고자 하는 기술적인 과제는 리드(read)/라이트(write) 성능을 개선할 수 있는 eMMC, 상기 eMMC를 제어하는 호스트, 및 이들의 동작 방법을 제공하는 것이다.
본 발명의 실시 예에 따른 임베디드 멀티미디어 카드(embedded Multimedia Card(eMMC))는 플래시 메모리; 및 상기 플래시 메모리를 제어하는 디바이스 컨트롤러를 포함한다.
상기 디바이스 컨트롤러는 데이터 버스의 상태와 상관없이 호스트로부터 전송되는 명령을 수신하여 태스크 아이디별로 태스크 정보를 저장하는 명령 저장부; 및 상기 태스크 아이디별로 태스크의 상태에 기초한 상태 정보를 저장하는 상태 저장부를 포함한다.
상기 디바이스 컨트롤러는 상기 상태 정보를 업데이트하는 태스크 매니저를 더 포함할 수 있다.
상기 명령은 태스크 아이디, 데이터 전송 방향을 나타내는 전송 방향 정보, 상기 플래시 메모리에 라이트할 데이터 또는 상기 플래시 메모리로부터 리드할 데이터 크기를 지정하기 위한 크기 정보, 및 우선순위 정보를 포함하는 제1 명령; 및 상기 라이트할 데이터 또는 리드할 데이터의 시작 어드레스를 지정하기 위한 어드레스 정보를 포함하는 제2 명령을 포함할 수 있다.
상기 디바이스 컨트롤러는 상기 호스트로부터 상기 태스크 아이디를 포함하는 제3 명령을 수신하고, 상기 제3 명령에 응답하여, 상기 제3 명령에 포함된 태스크 아이디에 해당하는 데이터를 상기 호스트로 전송할 수 있다.
상기 디바이스 컨트롤러는 상기 호스트로부터 상기 태스크 아이디를 포함하는 제4 명령을 수신하고, 상기 제4 명령에 응답하여 상기 호스트로부터 상기 제4 명령에 포함된 태스크 아이디에 해당하는 데이터를 상기 호스트로부터 수신하여 버퍼에 저장할 수 있다.
상기 디바이스 컨트롤러는 상기 호스트로부터 제5 명령(CMD48)을 수신하고, 상기 제5 명령에 응답하여, 상기 명령 저장부에 저장된 태스크들 중 적어도 하나의 태스크를 취소 또는 재실행할 수 있다.
본 발명의 실시 예에 따른 임베디드 멀티미디어 카드(embedded Multimedia Card(eMMC))는 호스트로부터 출력된 클락 신호를 수신하는 클락 채널; 상기 호스트로부터 출력된 명령을 수신하는 명령 채널; 상기 호스트로 데이터를 전송하는 데이터 채널들; 및 상기 호스트로 상기 명령에 연관된 태스크의 실행 가능 여부를 알려주는 레디 신호를 송신하는 레디 신호 채널을 포함한다.
상기 eMMC는 상기 호스트로부터 전송되는 상기 명령을 수신하여 태스크 아이디별로 태스크 정보를 저장하는 명령 저장부; 및 상기 태스크 아이디별로 태스크의 상태에 기초한 상태 정보를 저장하는 상태 저장부를 더 포함할 수 있다.
상기 레디 신호는 상기 상태 정보에 기초한 신호일 수 있다.
상기 레디 신호는 상기 상태 저장부의 상태 정보들 중 하나 이상이 업데이트되면 제1 레벨에서 제2 레벨로 천이될 수 있다.
상기 eMMC는 상기 호스트로부터의 상태 확인 명령에 응답하여 상기 상태 저장부의 상태 정보들을 상기 호스트로 전송할 수 있다.
상기 레디 신호는 상기 상태 저장부의 상태 정보들을 포함할 수 있다.
본 발명의 실시 예에 따른 임베디드 멀티미디어 카드(embedded Multimedia Card(eMMC))의 동작 방법은 호스트와 클락 버스, 명령 버스, 및 데이터 버스를 통해 연결되는 eMMC의 동작 방법에 관한 것으로, 상기 호스트로부터 제1 태스크에 대한 적어도 하나의 명령을 수신하고, 제1 태스크 정보를 명령 저장부에 저장하는 단계; 상기 데이터 버스를 통해 상기 제1 태스크에 관련된 데이터를 상기 호스트로/로부터 전송하기 전에, 상기 호스트로부터 제2 태스크에 대한 적어도 하나의 명령을 수신하고, 제2 태스크 정보를 상기 명령 저장부에 저장하는 단계; 및 상기 호스트로부터 제1 태스크 아이디를 포함하는 실행 명령을 수신하고, 상기 실행 명령에 응답하여, 상기 제1 태스크에 관련된 데이터를 상기 호스트로부터 수신하거나 상기 호스트로 전송하는 단계를 포함한다.
상기 제1 태스크 정보 및 상기 제2 태스크 정보는 각각 태스크 아이디, 데이터의 전송 방향, 데이터 크기, 우선 순위 정보 및 시작 어드레스를 포함할 수 있다.
상기 방법은 상기 태스크 아이디별로 상기 제1 및 제2 태스크의 상태에 기초한 상태 정보를 상태 저장부에 저장하는 단계를 더 포함할 수 있다.
본 발명의 실시 예에 따르면, 호스트는 데이터 버스의 상태와 무관하게, 예컨대, 데이터 전송 중이든 아니든 혹은 데이터 프로그램 구간에도 다음 리드/라이트 명령을 eMMC에 보낼 수 있다. 따라서, eMMC는 이전 데이터의 전송 중에도 다음 리드/라이트 명령에 대한 준비 동작을 수행할 수 있다. 따라서, eMMC의 리드/라이트 성능을 향상시킬 수 있는 효과가 있다.
또한 본 발명의 실시예에 따르면, eMMC가 태스크의 상태 정보를 능동적으로 호스트에게 알릴 수 있어, 호스트의 폴링 오버헤드(polling overhead)를 감소시켜, 시스템의 성능 손실을 줄일 수 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 임베디드 멀티미디어 카드(embedded multimedia card(eMMC)) 시스템의 블록도를 나타낸다.
도 2는 도 1에 도시된 명령 레지스터들의 일 실시예를 나타낸다.
도 3은 도 1에 도시된 상태 레지스터의 일 실시예를 나타내는 도면이다.
도 4는 본 발명의 일 실시예에 따른 eMMC의 동작 방법을 나타내는 흐름도이다.
도 5a는 본 발명의 일 실시예에 따른 명령들의 정의를 나타내는 표이다.
도 5b는 도 5a에 도시된 'TM op-code'에 대한 실시예를 나타내는 표이다.
도 6은 본 발명의 일 실시예에 따른 eMMC 장치의 블록도이다.
도 7은 본 발명의 일 실시 예에 따른 임베디드 멀티미디어 카드(embedded multimedia card(eMMC)) 시스템의 블록도를 나타낸다.
도 8은 본 발명의 일 실시예에 따른 eMMC의 동작 방법을 나타내는 흐름도이다.
도 9는 본 발명의 일 실시예에 따른 eMMC의 동작 방법을 나타내는 흐름도이다.
도 10은 레디 신호(QRDY), 명령(CMD) 및 응답(RES)의 일 실시예를 나타내는 타이밍도이다.
도 11은 레디 신호(QRDY)의 일 실시예를 나타내는 타이밍도이다.
도 12는 본 발명의 일 실시예에 따른 호스트의 동작 방법을 나타내는 흐름도이다.
도 13a 내지 도 13c 각각은 본 발명의 일 실시예에 따른 호스트의 동작 방법을 나타내는 흐름도이다.
도 14 및 도 15는 본 발명의 일 실시예에 따른 eMMC 동작 방법과 통상의 eMMC의 동작 방법을 비교하기 위한 개략적인 타이밍도이다.
도 16은 본 발명의 실시예에 따른 전자 시스템의 실시예를 나타낸 블록도이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
본 명세서는 JEDEC(http://www.jedec.org)에 의해 2013년 9월에 공개된 Embedded Multimedia Card(eMMC), Electrical Standard 5.0, 즉 JESD84-B50을 레퍼런스(reference)로 포함한다.
따라서, 본 명세서의 용어들과 정의들(terms and definitions)이 JESD84-B50의 용어들과 정의들과 다르게 정의되지 않는 한, 본 명세서의 용어들과 정의들은 JESD84-B50의 용어들과 정의들과 동일하다.
본 발명의 개념에 따른 다양한 실시 예들은, JESD84-B50 표준에 따른 11-와이어 버스(11-wire bus)를 포함할 수 있고, 기존의 11-와이어 버스 이외에 추가 라인(또는 채널)을 더 포함할 수 있다.
본 명세서에서 신호 또는 전압을 전송하는 채널(channel)은 호스트 패드, eMMC 패드, 버스, 라인, 드라이버(실시 예에 따라, 차동 증폭기를 포함), 수신기(실시 예에 따라, 차동 증폭기를 포함), 또는 이들 중에서 적어도 두 개의 조합을 의미할 수 있다.
상기 라인들의 기능과, 상기 라인들을 통해 전송되는 신호들을 생성하는 회로들과 방법들이 본 명세서에서 상세히 설명될 것이다.
본 명세서에서는 특별한 의도를 가지고 명시적으로 구분하지 않는 한, 설명의 편의를 위해 기능 회로, 예컨대 버스(bus), 와이어(wire), 패드(또는 핀(pin)), 드라이버(driver), 수신기(receiver), 및/또는 차동 증폭기 등의 전송 지연 (propagation delay)은 고려하지 않는다.
도 1은 본 발명의 일 실시 예에 따른 임베디드 멀티미디어 카드(embedded multimedia card(eMMC)) 시스템(100A)의 블록도를 나타낸다.
도 1을 참조하면, eMMC 시스템(100A)은 호스트(200A)와 장치(300A), 예컨대 eMMC 장치(300A)를 포함한다.
호스트(200A)는 eMMC 장치(300A)의 데이터 처리 동작, 예컨대 데이터 리드 동작 또는 데이터 라이트 동작 등을 제어할 수 있다. 상기 데이터 처리 동작은 SDR (single data rate) 또는 DDR(double data rate) 로 수행될 수 있다.
호스트(200A)는 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 장치(300A)는 호스트(200A)와 데이터 통신을 위해 상기 전자 장치와 접속 수단들(예컨대, 패드들(pads), 핀들(pins), 버스(bus), 또는 통신 라인들)을 통하여 전기적으로 서로 접속될 수 있다.
본 발명의 일 실시예에 따른 호스트(200A)는 프로세서(215), 메모리(220), 및 호스트 컨트롤러(230A)를 포함할 수 있다. 프로세서(215)에 의해 운영 시스템(OS) 및/또는 호스트 펌웨어(210)가 구동될 수 있다.
도시된 구성 요소 이외에도 호스트(200A)는 클락 생성기(미도시), 상태 제어 유닛(미도시) 등을 더 포함할 수 있다.
클락 생성기는 호스트(200A)와 eMMC 장치(300A)에서 사용될 클락 신호(CLK)를 생성한다. 예컨대, 클락 생성기는 위상 동기 루프(phase locked loop(PLL))로 구현될 수 있다.
프로세서(215)는 명령(CMD)의 생성, 응답(RES)의 해석, eMMC(300A)의 레지스터, 예컨대, Extended(EXT)_CSD 레지스터(미도시)에 저장된 데이터, 및/또는 데이터 처리 동작을 제어할 수 있는 하드웨어를 의미할 수 있다. 프로세서(215)는 OS/펌웨어(210)를 구동하여 상기와 같은 동작들을 수행할 수 있다.
호스트 컨트롤러(230A)는 eMMC(300A)와 인터페이스하기 위한 블록이다.
호스트 컨트롤러(230A)는 eMMC(300A)로 명령(CMD)을 발급하고(issuing), 명령(CMD)에 대한 응답(RES)을 받으며, eMMC 장치(300A)에 저장될 라이트 데이터를 전송하고, eMMC 장치(300A)로부터 리드한 리드 데이터를 수신한다.
도 1에 도시된 eMMC 버스는 종래(예컨대, eMMC 5.0에 규정된) 11개의 버스(101, 102, 103, 및 104)를 포함할 수 있다. 그러나, 본 발명의 실시예가 이에 한정되는 것은 아니다. 예컨대, eMMC 버스는 데이터 스트로브 버스(104)를 제외한 10개의 버스(101, 102, 및 103)를 포함할 수도 있다.
클락 버스(101)는 클락 신호(CLK)를 호스트(200A)로부터 eMMC 장치(300A)로 전송하고, 양방향(bidirectional) 명령 버스(102)는 명령(CMD)을 호스트(200A)로부터 eMMC 장치(300A)로 전송하고 명령(CMD)에 대한 응답(RES)을 eMMC 장치(300A)로부터 호스트(200A)로 전송한다. 양방향 데이터 버스(103)는 데이터 라이트 동작을 위한 라이트 데이터(DAT[7:0])를 호스트(200A)로부터 eMMC 장치(300A)로 전송하거나 데이터 리드 동작을 위한 리드 데이터(DAT[7:0])를 eMMC 장치(300A)로부터 호스트(200A)로 전송할 수 있다.
데이터 스트로브 버스(104)는 데이터 스트로브 신호(DS)를 eMMC 장치(300A)로부터 호스트(200A)로 전송한다. 데이터 스트로브 신호(DS)는 eMMC 장치(300A)로부터 호스트(200A)로 전송되는 데이터와 동기된 클락 신호일 수 있다.
호스트(200A)는 리셋 라인(미도시)을 통하여 하드웨어 리셋 신호를 eMMC 장치(300A)로 전송할 수 있다.
호스트(200A)는 eMMC(300A)의 동작에 필요한 동작 전압들을 생성하여 eMMC(300A)로 전송할 수 있다.
eMMC 장치(300A)는 장치 컨트롤러, 예컨대 eMMC 컨트롤러(310A)와 플래시 메모리(370A)를 포함한다.
eMMC 컨트롤러(310A)는 명령 저장부(311) 및 상태 저장부(313)를 포함한다. eMMC 컨트롤러(310A)는 또한 태스크 매니저(315), 명령 디코더(CMD decoder, 321), 데이터 트랜스퍼 매니저(323), 버퍼 매니저(325), 버퍼 메모리(327), 직/병렬 변환기(SER/DES, 329), 및 플래시 인터페이스(365)를 더 포함할 수 있다.
명령 디코더(321)는 호스트(200A)로부터 수신된 명령을 디코딩하고, 디코딩된 명령이 명령 저장부(311)에 저장할 명령(예컨대, 후술하는 태스크 설정 명령(CMD44) 및 태스크 어드레스 명령(CMD45) 등)에 해당하는 경우 명령 저장부(311)에 저장하고, 그 외의 명령에 대해서는 데이터 트랜스퍼 매니저(321)로 전달할 수 있다. 명령 저장부(311)에 저장될 명령은 데이터 버스(103)의 상태와 무관하게 호스트(200A)로부터 eMMC(300A)로 발급될 수 있다. 데이터 버스(103)의 상태는 유휴 상태(idle), 데이터 송신 상태, 데이터 수신 상태 또는 비지 상태(busy)일 수 있다.
태스크 매니저(315)는 호스트(200A)로부터 수신된 명령 중 특정 명령에 대해서 태스크 아이디 단위로 태스크 정보를 명령 저장부(311)에 저장할 수 있다.
상태 저장부(313)는 명령 저장부(311)에 저장된 태스크의 상태를 저장한다.
태스크 매니저(315)는 명령 저장부(311) 및 상태 저장부(313)를 관리한다.
태스크 매니저(315)는 명령 저장부(311)에 저장된 태스크들을 기반으로 데이터 트랜스퍼 매니저(323)를 통해 데이터를 효율적으로 관리할 수 있다. 태스크 매니저(315)는 또한 상태 저장부(313)를 통해 태스크별 상태를 관리함으로써, 실행할 준비가 완료된 태스크, 즉 레디(ready)된 태스크에 대한 정보를 호스트(200A)의 요청에 따라 또는 호스트(200A)의 요청과 무관하게 능동적으로 호스트(200A)에 알려줄 수 있다.
태스크 매니저(315)는 명령 저장부(311)에 저장된 복수(2이상)의 태스크들의 준비 동작이나 병렬 처리를 관리할 수 있다.
버퍼 메모리(327)는 호스트(200A)로부터 수신한 데이터 또는 호스트(200A)로 전송할 데이터를 저장한다. 버퍼 매니저(325)는 버퍼 메모리(327)를 관리한다. 예컨대, 버퍼 매니저(325)는 명령 저장부(311)에 저장된 태스크에 해당하는 데이터를 호스트(200A)로부터 수신하여 버퍼 메모리(327)에 일시 저장하거나, 또는 플래시 메모리(370A)로부터 독출된 데이터를 호스트(200A)로 전송하기 전에 버퍼 메모리(327)에 일시 저장할 수 있다.
데이터 트랜스퍼 매니저(323)는 호스트(200A)와 eMMC 장치(300A) 간의 데이터 트랜스퍼 동작을 관리한다. 예컨대, 데이터 트랜스퍼 매니저(323)는 태스크 매니저(315)와 연계하여, 실행할 준비가 완료된 태스크, 즉 레디(ready)된 태스크에 해당하는 데이터를 호스트(200A)로 전송하거나, 호스트(200A)로부터 전송받도록 관리할 수 있다. 플래시 인터페이스(365)는 플래시 메모리(370A)와 인터페이스하기 위한 블록이다.
호스트(200A)로부터 데이터 버스(103)를 통해 전송되는 직렬 데이터는 직/병렬 변환기(SER/DES, 329)에서 병렬 데이터로 변환되어, 버퍼 메모리(327)에 저장된 후, 플래시 인터페이스(365)를 통해 플래시 메모리(370A)에 저장될 수 있다. 플래시 메모리(370A)에서 독출된 데이터는 플래시 인터페이스(365)를 통해 버퍼 메모리(327)에 저장된 후, 직/병렬 변환기(SER/DES, 329)에서 직렬 데이터로 변환되어 데이터 버스(103)를 통해 호스트(200A)로 전송될 수 있다.
통상의 라이트 명령(Write CMD)나 리드 명령(Read CMD)의 대해서는 명령 디코더(321)에서 디코딩되어 바로 데이터 트랜스퍼 매니저(323)로 전달되고, 데이터 트랜스퍼 매니저(323)가 해당 명령의 데이터 처리나 흐름(flow)를 관리할 수 있다.
반면, 명령 저장부(311)에 저장되는 태스크에 대해서는, 태스크 매니저(315)가 데이터 트랜스퍼 매니저(325)와 통신하여 아직 완료되지 않은 태스크의 데이터 처리를 위해 필요로 하는 동작을 미리 수행하거나 플래시 메모리(370A)의 인터리빙 동작 등을 이용하여 데이터를 미리 준비하는 등의 병렬 처리를 가능하게 한다. 따라서, eMMC의 성능(예컨대, 라이트 성능이나 리드 성능)이 향상될 수 있다.
도 2는 도 1에 도시된 명령 저장부의 일 실시예(311A)를 나타낸다. 도 2를 참조하면, 본 발명의 일 실시예에 따른 명령 저장부(311A)는 복수(2이상)의 명령 레지스터들을 포함하여 구현될 수 있다.
명령 저장부(311A)는 제1 내지 제N(2이상의 자연수) 레지스터 (311-1~311-N)을 포함한다. N은 명령 레지스터들의 사이즈(즉, 개수)를 나타내며, 2이상의 자연수이다. N을 멀티 큐 뎁쓰(multi queue depth)라 정의한다.
따라서, eMMC 컨트롤러(310A)는 최대 멀티 큐 뎁쓰(N) 만큼의 멀티 큐 명령을 호스트(200A)로부터 수신하여 명령 레지스터(311-1~311-N)에 저장할 수 있다. 명령 레지스터들(311A) 각각에는 태스크 아이디, 전송 방향 정보, 데이터 크기, 및 시작 어드레스를 포함하는 태스크 정보가 저장될 수 있다. 태스크 정보는 또한 우선 순위 정보를 더 포함할 수 있다. 태스크 정보는 호스트(200A)로부터 전송되는 명령의 아규먼트(argument)로 포함되어 eMMC 장치(300A)로 전송될 수 있다. 이에 대해서는 후술한다.
태스크 매니저(315)는 태스크의 우선 순위 정보 및/또는 전송 방향 정보를 이용하여, 데이터 트랜스퍼 매니저(323)를 제어함으로써 태스크의 실행 순서를 조절할 수 있다. 예컨대, 태스크 매니저(315)는 우선 순위가 높은 태스크가 먼저 처리되도록 제어할 수 있다. 또는 태스크 매니저(315)는 리드 태스크가 라이트 태스크보다 우선적으로 처리되도록 제어할 수 있다.
도 3은 도 1에 도시된 상태 저장부의 일 실시예(313A)를 나타내는 도면이다. 도 3을 참조하면, 본 발명의 일 실시예에 따른 상태 저장부(313)는 상태 레지스터(313A)로 구현될 수 있다.
상태 레지스터(313A)는 명령 레지스터들(311A)에 저장된 태스크의 상태를 저장한다.
태스크 매니저(315)는 명령 레지스터(311A) 및 상태 레지스터(313A)를 관리한다.
태스크 정보가 저장된 명령 레지스터, 즉 점유된 레지스터는 태스크 매니저(315)를 통해 관리되며, 태스크 매니저(315)는 명령 레지스터(311A)에 저장된 태스크를 실행하기 위해 필요로 하는 내부 동작을 완료한 이후에 상태 레지스터(313A)에 '레디(READY)' 정보를 업데이트할 수 있다.
상태 레지스터(313A)는 N비트의 상태 정보를 저장할 수 있다. 상태 레지스터(313A)에 저장되는 제1 내지 제N 비트는 각각 제1 내지 제N 명령 레지스터(311-1~311-N)에 저장된 태스크(설명의 편의상 제1 내지 제N 태스크라 함)의 상태를 나타내는 정보이다. 예컨대, 제1 비트(예컨대, LSB(least significant bit))는 제1 태스크가 실행 준비가 완료된 상태(이하, "ready" 상태라 함) 인지 혹은 실행 준비가 완료되지 않은 상태(이하, "not-ready" 상태) 인지를 나타내고, 제N 비트(예컨대, MSB(most significant bit))는 제N 태스크가 "ready" 상태 인지 혹은 "not-ready" 상태 인지를 나타낸다.
일 실시예에서, 상태 레지스터(313A)의 초기값은 모두 '0'일 수 있다. 제1 내지 제 N 태스크 중 어느 하나의 태스크가 "ready" 상태가 되면, 상태 레지스터(313A)의 해당 비트는 '1'로 변환된다. 태스크 매니저(315)는 명령 레지스터(311A)에 저장된 태스크의 상태를 확인하여, 상태 레지스터(313A)의 해당 비트들을 업데이트한다.
상기 실시예에서는, 각 태스크에 하나의 비트가 매핑되지만, 다른 실시예에서는, 각 태스크에 대하여 둘 이상의 비트들이 매핑될 수 있다. 즉, 태스크의 상태가 복수(2이상)의 비트로 표현될 수 있다.
예컨대, 태스크당 2비트의 상태 비트들을 할당하여, 각 태스크의 상태를 아이들(idle), 비지(busy), 레디(ready) 및 에러(error)의 네 가지 상태로 나타낼 수도 있다. 물론, 태스크당 상태 비트의 수는 3 이상으로 확장될 수도 있다.
또한 도 2 및 도 3에 도시된 실시예에서는, 명령 저장부(311) 및 상태 저장부(313)는 각각 명령 레지스터들(311A) 및 상태 레지스터(313A)로 구현되나, 본 발명의 실시예가 이에 한정되는 것은 아니다. 예를 들어, 명령 저장부(311)는 큐(queue) 또는 슬롯(slot)으로 구현될 수도 있고, SRAM이나 DRAM과 같은 메모리로 구현될 수도 있다. 호스트(200A)로부터 수신되는 명령은 순차적으로 명령 레지스터들(311A)에 저장될 수 있으나, 저장된 순서대로 태스크가 실행되는 것은 아닐 수 있다. 예컨대, 태스크의 우선순위에 따라 실행 순서가 달라질 수도 있다.
도 4는 본 발명의 일 실시예에 따른 eMMC의 동작 방법을 나타내는 흐름도이다. 도 5a는 본 발명의 일 실시예에 따른 명령들의 정의를 나타내는 표이다. 도 5a에 도시된 명령들은 기존의 eMMC Specification(eMMC5.0)에서는 정의되어 있지 않던 새로운 명령들이다. 도 5b는 도 5a에 도시된 'TM op-code'에 대한 실시예를 나타내는 표이다.
각 명령은 미리 정해진 길이(예컨대, 32비트)의 아규먼트(argument)를 포함하며, 호스트(200A)로부터 eMMC(300A)로 발급(issue)된다.
본 발명의 일 실시예에 따른 eMMC의 동작 방법은 도 1에 도시된 eMMC 시스템(100A)에 의해 수행될 수 있다. 도 4, 도 5a, 및 도 5b를 참조하면, 호스트(200A)는 제1 태스크(TASK1)에 대한 태스크 설정 명령(CMD44)을 eMMC(300A)로 전송하고, 또한 제1 태스크(TASK1)에 대한 어드레스 명령(CMD45)을 eMMC(300A)로 전송한다(S110). 데이터 버스(103)를 통하여 이전 데이터를 전송하는 도중에도, 호스트(200A)는 태스크 설정 명령(CMD44) 및 태스크 어드레스 명령(CMD45)을 eMMC(300A)로 전송할 수 있다(S110).
태스크 설정 명령(CMD44)은 태스크의 아이디 및 해당 태스크의 동작의 방향을 설정하는 명령이다. 동작의 방향이란 데이터의 전송 방향을 의미한다.
이를 위하여, 태스크 설정 명령(CMD44)은 태스크 아이디(TASK ID), 데이터 전송 방향을 나타내는 전송 방향 정보(DD), 및 상기 플래시 메모리에 라이트할 데이터 또는 상기 플래시 메모리로부터 리드할 데이터 크기를 지정하기 위한 크기 정보(number of blocks)를 아규먼트로서 포함할 수 있다.
일 실시예에서, 태스크 설정 명령(CMD44)의 32 비트 아규먼트 중 하위 16비트([15:0])는 데이터 크기를 블록 수(number of blocks)로 나타내고, 그 다음 하위 5비트([20:16])는 태스크 아이디(TASK ID)를 나타내고, [23]비트는 우선순위(priority)를 나타내고, [30]비트는 데이터 전송 방향(DD)을 나타낼 수 있다.
블록이란, 미리 정의된 사이즈를 갖는 데이터의 단위로서, 예컨대, 플래시 메모리의 한 페이지 또는 한 페이지의 배수에 해당할 수 있으나, 이에 한정되는 것은 아니다.
예컨대, 태스크 설정 명령(CMD44)의 32 비트 아규먼트 중 [30]비트(DD)가 '0'으로 설정되면, 해당 태스크가 eMMC(300A)로 데이터를 저장하는 "기입(write)" 태스크임을 의미하고, '1'로 로 설정되면 해당 태스크가 eMMC(300A)로부터 데이터를 독출하는 "독출(read)" 태스크임을 의미한다.
본 발명의 일 실시예에서, 하나의 명령(CMD44)에서 아규먼트의 설정을 달리하여, "기입(write)" 태스크와 "독출(read)" 태스크를 구분하지만, 다른 실시예에서는, "기입(write)" 태스크를 위한 명령과 "독출(read)" 태스크를 위한 명령이 별개로 정의될 수 있다.
또한 본 발명의 일 실시예에서는, 우선순위가 1 비트([23])로 표현되지만, 다른 실시예에서는, 2이상의 비트로 표현될 수도 있다.
태스크 어드레스 명령(CMD45)는 해당 태스크의 데이터의 시작 어드레스(data block address) 정보를 포함할 수 있다. 시작 어드레스는 논리 어드레스(logical address)일 수 있다.
예컨대, 해당 태스크가 "기입(write)" 태스크인 경우, 시작 어드레스 정보는 플래시 메모리에 라이트할 데이터의 시작 어드레스를 지정하기 위한 정보이고, 해당 태스크가 "독출(read)" 태스크인 경우, 시작 어드레스 정보는 플래시 메모리로부터 리드할 데이터의 시작 어드레스를 지정하기 위한 정보이다.
예를 들어, 태스크가 "독출(read)" 태스크이고, 시작 어드레스는 100, 데이터 크기가 10이면, 100번 시작 어드레스에서부터 10 블록(blocks)만큼의 데이터를 리드하는 태스크일 수 있다.
본 발명의 일 실시예에서는, 시작 어드레스 정보를 포함하는 태스크 어드레스 명령(CMD45)이 태스크 설정 명령(CMD44)과 별도로 정의되나, 본 발명의 다른 실시예에서는, 하나의 명령, 예컨대, 태스크 설정 명령(CMD44)에 데이터 크기 정보와 시작 어드레스 정보가 함께 포함될 수도 있다.
eMMC(300A)는 호스트(200A)로부터 전송되는 명령을 수신하여 태스크 아이디별로 태스크 정보를 명령 레지스터(311A)에 저장할 수 있다.
예를 들어, eMMC(300A)는 호스트(200A)로부터 제1 태스크에 대한 태스크 설정 명령(CMD44)을 수신하고, 제1 태스크에 대한 태스크 정보를 명령 레지스터들(311A) 중 하나의 레지스터(예컨대, 311-1)에 저장한다.
호스트(200A)로부터 수신되는 명령은 순차적으로 명령 레지스터들(311A)에 저장될 수 있으나, 저장된 순서대로 태스크가 실행되는 것은 아닐 수 있다. 예컨대, 태스크의 우선순위에 따라 실행 순서가 달라질 수도 있다.
또한, eMMC(300A)는 호스트(200A)로부터 제1 태스크에 대한 태스크 어드레스 명령(CMD45)을 수신하고, 제1 태스크에 해당하는 명령 레지스터(예컨대, 311-1)에 시작 어드레스 정보를 저장한다.
호스트(200A)는 제1 태스크(TASK1)에 대한 데이터를 eMMC(300A)로 전송하거나, eMMC(300A)로부터 전송받기 전에 다른 태스크인 제2 태스크(TASK2)에 대한 태스크 설정 명령(CMD44)을 eMMC(300A)로 전송하고, 또한 제2 태스크(TASK2)에 대한 어드레스 명령(CMD45)을 eMMC(300A)로 전송할 수 있다(S120). 그러면, eMMC(300A)는 호스트(200A)로부터 태스크 설정 명령(CMD44)을 수신하여, 제2 태스크에 대한 태스크 정보를 명령 레지스터들(311A) 중 하나의 레지스터(예컨대, 311-2)에 저장하고, 호스트(200A)로부터 태스크 어드레스 명령(CMD45)을 수신하여, 제2 태스크에 해당하는 명령 레지스터(예컨대, 311-2)에 시작 어드레스 정보를 저장할 수 있다.
도 4의 실시예에서는, 제1 태스크(TASK1)는 "기입(write)" 태스크이고, 제2 태스크(TASK2)는 "독출(read)" 태스크인 것으로 가정하지만, 이에 한정되는 것은 아니다.
다음으로, 호스트(200A)는 상태 레지스터(313A)의 상태를 체크하기 위하여 상태 확인 명령(Q_CHECK)을 eMMC(300A)로 전송한다(S130). 상태 확인 명령(Q_CHECK)은 명령 레지스터(311A)에 저장된 각 태스크의 준비 상태를 확인하기 위해 정의된 명령이다.
도 5a에 도시된 바와 같이, 호스트(200A)는 상태 확인 명령(Q_CHECK)으로 CMD13을 사용할 수 있다. 예컨대, CMD13의 아규먼트 중 미리 정해진 하나의 비트(예컨대, [15]비트)를 '1'로 설정하여, 상태 확인 명령(Q_CHECK)으로 사용할 수 있다.
상태 확인 명령(Q_CHECK)에 응답하여, eMMC(300A)는 상태 레지스터(313A)의 값들을 포함하는 상태 응답 메시지(Q_STATUS)를 호스트(200A)로 전송한다(S140). 호스트(200A)는 상태 응답 메시지(Q_STATUS)로부터 실행 준비가 완료된 태스크의 아이디를 확인한다. 예컨대, 상태 응답 메시지(Q_STATUS)는 상태 레지스터(313A)의 32비트 값들을 아규먼트로 포함할 수 있다. 상태 레지스터(313A)의 32비트 값 중 '1'은 해당 태스크가 실행 준비가 완료된 상태(ready)임을 나타낼 수 있고, 호스트(200A)는 상태 레지스터(313A)의 비트들 중 '1'에 해당하는 태스크를 확인할 수 있다.
S140 단계의 상태 응답 메시지(Q_STATUS)로부터 제1 태스크가 'ready'임을 확인하면, 호스트(200A)는 eMMC(300A)로 제1 태스크에 대한 기입 실행 명령(CMD47)을 전송하고(S150), 또한 제1 태스크에 관련된 라이트 데이터(WDATA)를 전송한다(S160).
eMMC(300A)는 기입 실행 명령(CMD47)에 응답하여, 라이트 데이터를 수신하여 버퍼 메모리(327)에 저장하고, 버퍼 메모리(327)에 저장된 데이터의 프로그램을 위하여 플래시 메모리로 프로그램 명령을 인가하여, 플래시 메모리로 라이트 데이터를 프로그램할 수 있다.
호스트(200A)는 주기적 또는 비주기적으로 상태 레지스터(313)의 상태를 체크하기 위하여 상태 확인 명령(Q_CHECK)을 eMMC(300A)로 전송할 수 있다.
S170 단계에서, 호스트(200A)는 상태 확인 명령(Q_CHECK)을 eMMC(300A)로 전송한다(S170). 상태 확인 명령(Q_CHECK)에 응답하여, eMMC(300A)는 상태 레지스터(313)의 값들을 포함하는 상태 응답 메시지(Q_STATUS)를 호스트(200A)로 전송한다(S180).
S180 단계의 상태 응답 메시지(Q_STATUS)로부터 제2 태스크가 'ready'임을 확인하면, 호스트(200A)는 제2 태스크에 대한 독출 실행 명령(CMD46)을 전송한다(S190). 독출 실행 명령(CMD46)에 응답하여 eMMC(300A)는 제2 태스크에 관련된 리드 데이터(RDATA)를 호스트(200A)로 전송한다(S195).
도 5a를 참조하면, 태스크를 관리하기 위한 태스크 관리 명령(CMD48)이 또한 정의된다. 태스크 관리 명령(CMD48)은 명령 저장부(311)에 저장된 태스크를 관리 또는 제어하기 위하여 정의된 명령이다. 태스크 관리 명령(CMD48)은 특정 태스크를 취소하거나 전체 태스크를 취소할 수 있다.
또한, 태스크 관리 명령(CMD48)은 특정 태스크를 재실행, 즉 리트라이(retry)시키기 위하여 사용될 수도 있다.
태스크 관리 명령(CMD48)은 아규먼트로서 태스크 아이디(TASk ID)와 태스크 관리 코드(TM op-code)를 포함할 수 있다. 태스크 관리 코드(TM op-code)로 4비트([3:0])가 지정될 수 있으나, 이에 한정되는 것은 아니다.
도 5b를 참조하면, 태스크 관리 코드(TM op-code)가 '1h'값으로 설정되면, 명령 저장부(313)에 저장된 전체 태스크를 취소(또는 폐기)하고, 태스크 관리 코드(TM op-code)가 '2h'값으로 설정되면, 명령 저장부(313)에 저장된 전체 태스크 중 특정 태스크(예컨대, 태스크 관리 명령(CMD48)에 포함된 태스크 아이디에 해당하는 태스크)만을 취소할 수 있다. 도 5b에서는, 태스크 관리 코드(TM op-code)의 다른 값들은 '유보(reserved)'되어 있으나, 각 값은 특정 관리 동작에 대응하도록 정의될 수 있다. 이에 따라, 태스크 관리 명령(CMD48)은 특정 태스크를 재실행시키거나, 우선 순위를 변경하는 등 적어도 하나의 태스크를 관리 또는 제어하는 용도로 사용될 수 있다
도 5a에 정의된 명령들 중 CMD44-CMD45는 쌍(pair)을 이루어 하나의 태스크를 구성하게 되고, 데이터의 전송(Data Transfer) 여부와 무관하게 eMMC(300A)로 발급되어 명령 저장부(311)에 저장될 수 있다. 명령 저장부(311)에 저장된 태스크 중 실행 준비가 완료된 태스크는 기입 태스크인 경우 CMD46, 기입 태스크인 경우 CMD47을 사용하여 특정 태스크를 지정하여 리드 및 기입 동작을 실행할 수 있다.
도 6은 본 발명의 일 실시예에 따른 eMMC 장치(300B)의 블록도이다.
이를 참조하면, eMMC 장치(300B)는 장치 컨트롤러, 예컨대 eMMC 컨트롤러(310B)와 플래시 메모리(370B)를 포함한다.
eMMC 컨트롤러(310B)는 호스트(200A)와 플래시 메모리(370B) 사이에서 데이터 통신을 제어한다.
eMMC 컨트롤러(310B)는 eMMC 호스트 인터페이스(320), CPU(330), 메모리(340), 오류 검출/정정 블록(ECC, 360) 및 플래시 인터페이스(365)를 포함한다.
eMMC 호스트 인터페이스(320)는 호스트(200A)로부터 클락 신호(CLK)와 명령(CMD)을 수신하고, 수신된 명령(CMD)을 해석하고 해석의 결과에 따라 응답(RES)을 생성하고 생성된 응답(RES)과 응답(RES)에 기초하여 생성된 데이터를 호스트로 전송한다.
CPU(330)는 각 인터페이스(330과 360)의 동작을 제어하고, eMMC 장치(300B)의 동작을 전반적으로 제어한다.
일 실시예에서, eMMC 호스트 인터페이스(320)는 상술한 명령 저장부(311) 및 상태 저장부(313)를 포함할 수 있다. 다른 실시예에서, 명령 저장부(311) 및 상태 저장부(313)는 메모리(340)에 구현될 수 있다.
메모리(340)는 인터페이스들(330과 360) 사이에서 주거나 받는 데이터를 일시적으로 저장한다. 메모리(340)는 휘발성 메모리로 구현될 수 있다.
메모리(340)는 태스크와 연관된 리드 데이터, 라이트 데이터 및 디바이스 펌웨어(350)를 저장할 수 있다. 디바이스 펌웨어(350)는 메모리(340)에 저장되고, CPU(330)에 의해 실행될 수 있다. 일 실시예에서, 상술한 태스크 매니저(315)는 디바이스 펌웨어(350)의 일부로 구현될 수 있다.
ECC(360)는 플래시 메모리(370B)로부터 리드된 데이터의 에러를 검출하고 에러 검출시 에러 정정을 수행할 수 있다.
플래시 메모리(370B)는 데이터를 저장하고, 플래시 메모리(370B)가 NAND 플래시 메모리로 구현될 때 플래시 인터페이스(365)는 NAND 플래시 인터페이스로 구현될 수 있다. 플래시 메모리(370B)는 장치 특성들(device properties)과 선택된 모드들을 저장할 수 있는 EXT_CSD 레지스터(미도시)를 포함할 수 있다.
플래시 메모리(370B)는 다수의 메모리 소자들(CE0~CE3)을 포함할 수 있다. 도 6에서는 4개의 메모리 소자들(CE0~CE3)이 예시적으로 도시되나, 이에 한정되는 것은 아니다. 플래시 메모리(370B)는 둘 이상의 채널을 지원하는 구조를 가질 수 있다.
호스트(200A)는 SEND_EXT_CSD 명령(=CMD8)을 이슈잉하여(by issuing) EXT_CSD 레지스터를 읽을 수 있다. eMMC 장치(300B)는 512 바이트 길이(bytes long)의 EXT_CSD 레지스터를 데이터 블록으로서 전송한다. 멀티 큐 뎁쓰(N)는 EXT_CSD 레지스터의 유보 필드(reserved field)에 설정될 수 있다.
도 7은 본 발명의 일 실시 예에 따른 임베디드 멀티미디어 카드(embedded multimedia card(eMMC)) 시스템(100C)의 블록도를 나타낸다.
도 7을 참조하면, eMMC 시스템(100C)은 호스트(200C)와 장치(300C), 예컨대 eMMC 장치(300C)를 포함한다. 도 7의 eMMC 시스템(100C)은 도 1의 eMMC 시스템(100A)와 유사하므로, 설명의 중복을 피하기 위하여 차이점을 위주로 기술한다.
도 7의 eMMC 시스템(100C)은 도 1의 eMMC 시스템(100A)에 비하여, 레디 신호(QRDY) 채널을 더 구비한다.
레디 신호(QRDY) 채널은 상태 저장부(313)가 업데이트될 때, 이를 호스트(200C)로 알려주는 역할을 수행한다.
태스크 매니저(315)는 명령 저장부(311)에 저장된 태스크들 중 태스크를 실행하기 위해 필요로 하는 내부 동작을 완료한 태스크, 즉 실행 준비가 완료되어 실행 가능한 태스크에 대해서는, 상태 저장부(313)에 '레디(READY)' 정보를 업데이트한다.
아울러, 태스크 매니저(315)는 레디 신호(QRDY)를 호스트(200C)로 전송하여, 상태 저장부(313)가 업데이트되었음을 알려준다.
도 8은 본 발명의 일 실시예에 따른 eMMC의 동작 방법을 나타내는 흐름도이다. 도 10은 레디 신호(QRDY), 명령(CMD) 및 응답(RES)의 일 실시예를 나타내는 타이밍도이다. 도 8에 도시된 본 발명의 일 실시예에 따른 eMMC의 동작 방법은 도 7에 도시된 eMMC 시스템(100C)에 의해 수행될 수 있다.
도 8 및 도 10을 참조하면, 호스트(200C)는 제1 태스크(TASK1)에 대한 태스크 설정 명령(CMD44)을 eMMC(300C)로 전송하고, 또한 제1 태스크(TASK1)에 대한 어드레스 명령(CMD45)을 eMMC(300C)로 전송한다(S210). 데이터 버스(103)의 상태와 상관없이, 예컨대, 데이터 버스(103)를 통하여 이전 데이터를 전송하는 도중에도, 호스트(200C)는 태스크 설정 명령(CMD44) 및 태스크 어드레스 명령(CMD45)을 eMMC(300C)로 전송할 수 있다(S210).
태스크 설정 명령(CMD44)은 제1 태스크(TASK1)의 태스크 아이디, 제1 태스크(TASK1)의 전송 방향 정보(W), 및 제1 태스크(TASK1)의 데이터 크기 정보를 포함할 수 있다. 태스크 설정 명령(CMD44)은 또한, 제1 태스크(TASK1)의 우선순위 정보를 포함할 수 있다.
태스크 어드레스 명령(CMD45)는 제1 태스크(TASK1)의 시작 어드레스 정보를 포함할 수 있다. 시작 어드레스는 논리 어드레스(logical address)일 수 있다.
본 발명의 실시예에서는, 제1 태스크(TASK1)는 기입(write)태스크이므로, 시작 어드레스 정보는 플래시 메모리에 라이트할 데이터의 시작 어드레스를 지정하기 위한 정보이다.
eMMC(300C)는 호스트(200C)로부터 제1 태스크(TASK1)에 대한 태스크 설정 명령(CMD44)을 수신하고, 제1 태스크에 대한 태스크 정보를 명령 레지스터들 중 하나의 레지스터(예컨대, 311-1)에 저장한다. 또한, eMMC(300A)는 호스트(200A)로부터 제1 태스크(TASK1)에 대한 태스크 어드레스 명령(CMD45)을 수신하고, 제1 태스크에 해당하는 명령 레지스터(예컨대, 311-1)에 시작 어드레스 정보를 저장한다.
호스트(200C)는 제1 태스크(TASK1)에 대한 데이터(즉, 라이트 데이터)를 eMMC(300C)로 전송하기 전에 제2 태스크(TASK2)에 대한 태스크 설정 명령(CMD44)을 eMMC(300C)로 전송하고, 또한 제2 태스크(TASK2)에 대한 어드레스 명령(CMD45)을 eMMC(300C)로 전송할 수 있다(S220). 그러면, eMMC(300C)는 호스트(200C)로부터 태스크 설정 명령(CMD44)을 수신하여, 제2 태스크에 대한 태스크 정보를 명령 레지스터들 중 하나의 레지스터(예컨대, 311-2)에 저장하고, 호스트(200c)로부터 태스크 어드레스 명령(CMD45)을 수신하여, 제2 태스크에 해당하는 명령 레지스터(예컨대, 311-2)에 시작 어드레스 정보를 저장할 수 있다.
eMMC(300C)의 태스크 매니저(315)는 명령 레지스터(311A)에 저장된 태스크들의 상태를 확인하여 상태 레지스터(313A)를 업데이트한다. 예컨대, 상태 레지스터(313A)의 모든 비트값들이 초기에는 'not-ready'(예컨대, '0')이었다가, 제1 태스크(TASK1)에 해당하는 비트가 'ready'(예컨대, '1')로 업데이트될 수 있다.
상태 레지스터(313A)의 적어도 하나의 비트가 'ready'(예컨대, '1')로 설정되면, eMMC(300C)는 레디 신호(QRDY)를 로우 레벨로 구동한다(S225).
예컨대, 상태 레지스터(313A)에 변화가 없는 동안에는 레디 신호(QRDY)는 하이 레벨을 유지하고, 상태 레지스터(313)가 업데이트되면, 레디 신호(QRDY)는 로우 레벨로 천이한다.
호스트(200C)는 로우 레벨의 레디 신호(QRDY)를 확인하고, 상태 레지스터(313A)의 어느 비트가 업데이트되었는지를 체크하기 위하여 상태 확인 명령(Q_CHECK, 도 10의 911)을 eMMC(300C)로 전송한다(S230). 상태 확인 명령(Q_CHECK)에 응답하여, eMMC(300C)는 상태 레지스터(313A)의 값들을 포함하는 상태 응답 메시지(Q_STATUS, 도 10의 912)를 호스트(200C)로 전송한다(S240). 호스트(200C)는 상태 응답 메시지(Q_STATUS)로부터 실행 준비가 완료된 태스크의 아이디를 확인한다.
S240 단계의 상태 응답 메시지(Q_STATUS)로부터 제1 태스크가 'ready'임을 확인하면, 호스트(200C)는 eMMC(300C)로 제1 태스크에 대한 기입 실행 명령(CMD47)을 전송하고(S250), 또한 제1 태스크에 관련된 라이트 데이터(WDATA)를 전송한다(S260).
eMMC(300C)는 기입 실행 명령(CMD47)에 응답하여, 라이트 데이터를 수신하여 버퍼 메모리(327)에 저장하고, 저장된 데이터의 프로그램을 위하여 플래시 메모리로 프로그램 명령을 인가하여, 플래시 메모리로 라이트 데이터를 프로그램할 수 있다.
제1 태스크가 실행된 후, 상태 레지스터(313)의 해당 비트는 'not-ready'로 리셋될 수 있다.
태스크 매니저(315)는 명령 레지스터(311)에 저장된 태스크들의 상태를 확인하여 제2 태스크(TASK2)에 해당하는 비트를 'ready'(예컨대, '1')로 업데이트할 수 있다. 그러면, eMMC(300C)는 레디 신호(QRDY)를 다시 로우 레벨로 구동한다(S265).
로우 레벨로 천이한 레디 신호(QRDY)에 응답하여, 호스트(200C)는 상태 레지스터(313A)의 상태를 체크하기 위하여 상태 확인 명령(Q_CHECK)을 eMMC(300C)로 전송한다(S270). 상태 확인 명령(Q_CHECK)에 응답하여, eMMC(300C)는 상태 레지스터(313A)의 값들을 포함하는 상태 응답 메시지(Q_STATUS)를 호스트(200C)로 전송한다(S280).
S280 단계의 상태 응답 메시지(Q_STATUS)로부터 제2 태스크가 'ready'임을 확인하면, 호스트(200C)는 제2 태스크에 대한 독출 실행 명령(CMD46)을 전송한다(S290). 독출 실행 명령(CMD46)에 응답하여 eMMC(300C)는 제2 태스크에 관련된 리드 데이터(RDATA)를 호스트(200C)로 전송한다(S295).
도 9는 본 발명의 일 실시예에 따른 eMMC의 동작 방법을 나타내는 흐름도이다. 도 11은 레디 신호(QRDY)의 일 실시예를 나타내는 타이밍도이다.
도 9의 eMMC의 동작 방법은 도 8의 eMMC의 동작 방법과 유사하므로, 설명의 중복을 피하기 위하여, 차이점 위주로 기술한다.
도 10에 도시된 레디 신호(QRDY)는 상태 레지스터(313)가 업데이트될 때 로우 레벨로 구동되는 신호이다. 이에 반해, 도 11에 도시된 레디 신호(QRDY)는 상태 응답 메시지(Q_STATUS)를 포함한다. 상태 응답 메시지(Q_STATUS)는 상태 레지스터(313A)의 비트값들을 포함한다. 즉, 별도의 레디 신호(QRDY) 채널로 전송되는 레디 신호(QRDY)에 상태 레지스터(313A)의 비트값들이 포함되어 있다.
도 11의 실시예에서는, eMMC(300C)는 상태 레지스터(313A)의 값들이 업데이트될 때마다, 상태 레지스터(313A)의 값들을 포함하는 레디 신호(QRDY)를 레디 신호(QRDY) 채널을 통해 호스트(200C)로 전송한다.
그러면, 호스트(200C)는 레디 신호(QRDY)로부터 실행 준비가 완료된 태스크의 아이디를 바로 확인할 수 있다. 이에 따라, 상태 레지스터(313A)의 값을 확인하기 위해 상태 확인 명령(Q_CHECK)을 명령 채널을 통해 eMMC(300C)로 전송할 필요가 없다.
도 9 및 도 11을 참조하면, S225 단계의 레디 신호(QRDY)로부터 제1 태스크가 'ready'임을 확인하면, 호스트(200C)는 eMMC(300C)로 제1 태스크에 대한 기입 실행 명령(CMD47)을 전송하고(S250), 또한 제1 태스크에 관련된 라이트 데이터(WDATA)를 전송한다(S260).
또한, S265 단계의 레디 신호(QRDY)로부터 제2 태스크가 'ready'임을 확인하면, 호스트(200C)는 제2 태스크에 대한 독출 실행 명령(CMD46)을 전송한다(S290). 독출 실행 명령(CMD46)에 응답하여 eMMC(300C)는 제2 태스크에 관련된 리드 데이터(RDATA)를 호스트(200C)로 전송한다(S295).
도 12는 본 발명의 일 실시예에 따른 호스트의 동작 방법을 나타내는 흐름도이다.
도 12를 참조하면, 호스트(200A 내지 200C 중 어느 하나, 이하 200)는 추가적인 리드/라이트 태스크가 필요한지 판단하여(S310), 추가적인 리드/라이트 태스크가 필요하면(S310에서 'Yes' 인 경우), 태스크 및 태스크의 시작 어드레스를 설정한다(S320, S330). 예를 들어, S320 단계에서, 호스트(200)는 태스크 아이디, 태스크의 전송 방향 정보, 데이터 크기 정보 및 우선순위 정보를 포함하는 태스크 정보를 설정하고, 태스크 정보를 포함하는 태스크 설정 명령(CMD44)을 eMMC(300A 내지 300C 중 어느 하나, 이하 300)로 전송할 수 있다.
S330 단계에서, 호스트(200)는 시작 어드레스 정보를 포함하는 태스크 어드레스 명령(CMD45)을 eMMC(300)로 전송함으로써, eMMC(300)에 태스크를 할당할 수 있다.
S310 단계에서 'No' 인 경우, 호스트(200)는 eMMC(300)에 기 할당된 태스크가 있는지를 판단하여(S340), 할당된 태스크가 있다면(S340에서 'Yes' 인 경우), 할당된 태스크들 중 실행 준비가 완료된 태스크, 즉 레디 태스크가 있는지를 확인한다(S350). 레디 태스크가 있는지를 확인하는 방법들에 대해서는 도 13a 내지 도 13c를 참조하여 상세히 후술한다.
확인 결과, 레디 태스크가 있으면, 데이터 트랜스퍼 중인지 판단하여(S360), 데이터 트랜스퍼 중이 아니면, 레디 태스크를 실행한다(S370). 예를 들어, S370 단계에서, 호스트(200)는 eMMC(300)로 레디 태스크에 대한 독출 실행 명령(CMD46)을 발급(issue)하여 해당 태스크를 실행하거나, 기입 실행 명령(CMD47)을 발급(issue)하여 해당 태스크를 실행할 수 있다.
도 13a 내지 도 13c 각각은 본 발명의 일 실시예에 따른 호스트의 동작 방법을 나타내는 흐름도이다.
도 13a를 참조하면, 호스트(200)는 eMMC(300)로 태스크를 할당한다(S405). S405 단계는 도 12에 도시된 S310 내지 S330 단계에 대응될 수 있다. 다음으로, 호스트(200)는 할당한 태스크가 실행할 준비가 되었는지를 확인한다(S410 내지 S430). 이를 위하여, 호스트(200)는 주기적 또는 비주기적으로 상태 저장부(313A)에 저장된 상태 정보를 얻기 위하여 상태 확인 명령을 eMMC(300)로 발급하고(S410), eMMC(300)로부터 상태 응답 메시지를 수신하여, 실행 준비된 태스크, 즉 레디 태스크가 있는지를 확인한다(S420). 확인 결과, 레디 태스크가 있으면, 해당 태스크를 실행한다(S440).
도 13b를 참조하면, 호스트(200)는 eMMC(300)로 태스크를 할당한다(S405). 다음으로, 호스트(200)는 할당한 태스크가 실행할 준비가 되었는지를 확인한다(S510 내지 S530). 이를 위하여, 호스트(200)는 eMMC(300)로부터 전송되는 레디 신호(QRDY)의 레벨이 변경되기를 기다린다(S510). 예컨대, 호스트(200)는 레디 신호(QRDY)를 체크하여 레디 신호(QRDY)가 제1 레벨(예컨대, 하이레벨)에서 제2 레벨(예컨대, 로우레벨)로 천이되었는지를 확인한다(S510). 레디 신호(QRDY)의 레벨이 천이되면, 호스트(200)는 상태 저장부(313)에 저장된 상태 정보를 얻기 위하여 상태 확인 명령을 eMMC(300)로 발급하고(S520), eMMC(300)로부터 상태 응답 메시지를 수신하여, 실행 준비된 태스크, 즉 레디 태스크가 있는지를 확인한다(S530). 확인 결과, 레디 태스크가 있으면, 해당 태스크를 실행한다(S440).
도 13c를 참조하면, 호스트(200)는 eMMC(300)로 태스크를 할당한다(S405). 다음으로, 호스트(200)는 할당한 태스크가 실행할 준비가 되었는지를 확인한다(S610). 이를 위하여, 호스트(200)는 각 태스크의 상태 정보를 패킷 형태로 포함하고 있는 레디 신호(QRDY)가 eMMC(300)로부터 수신되기를 기다린다(S610). 예를 들어, eMMC(300)는 상태 레지스터(313A)의 비트값이 업데이트되면, 상태 레지스터(313A)의 비트값들을 포함하는 레디 신호(QRDY)를 호스트(200)로 전송할 수 있고, 호스트(200)는 레디 신호(QRDY)로부터 상태 정보를 검출하여 실행 준비된 태스크, 즉 레디 태스크가 있는지를 확인할 수 있다(S610). 확인 결과, 레디 태스크가 있으면, 해당 태스크를 실행한다(S440).
도 14 및 도 15는 본 발명의 일 실시예에 따른 eMMC 동작 방법과 통상의 eMMC의 동작 방법을 비교하기 위한 개략적인 타이밍도이다.
도 14는 통상의 eMMC 동작 방법을 나타내고, 도 15는 본 발명의 일 실시예에 따른 eMMC 동작 방법을 나타낸다.
먼저 도 14를 참조하면, 이전 데이터(DAT-N)가 플래시 메모리에 저장되기 전까지는 호스트는 특정 명령-예컨대, 이전 명령을 중단시키기 위한 stop 명령 abort 명령 등-을 제외하고는, 플래시 메모리로 데이터를 리드하거나 라이트하기 위한 명령을 전송할 수 없다.
호스트는 이전 데이터(DAT-N)의 기입 절차(previous write sequence)가 완료된 후에야 통상의 데이터 기입 명령(CMD23, CMD25)을 eMMC로 보낼 수 있다. eMMC는 통상의 데이터 기입 명령(CMD23, CMD25)에 응답하여 호스트로부터 관련 데이터(DAT-a, DAT-b)를 수신하고, 수신한 데이터(DAT-a, DAT-b)를 플래시 메모리에 기입한다. 물론, 호스트는 데이터(DAT-a, DAT-b)의 기입 절차(write sequence)가 완료될 때까지 다음 명령(통상의 데이터 기입 명령이나 통상의 데이터 독출 명령)을 eMMC로 전송할 수 없다. 데이터(DAT-a, DAT-b)의 기입 절차(write sequence)가 완료된 후, eMMC는 통상의 데이터 리드 명령(CMD23, CMD18)을 eMMC로 보낼 수 있다.
eMMC는 통상의 데이터 리드 명령(CMD23, CMD18)에 응답하여 플래시 메모리로부터 관련 데이터(DAT-c, DAT-d)를 리드하고, 리드 데이터(DAT-c, DAT-d)를 호스트로 전송한다. 호스트는 통상의 데이터 리드 명령(CMD23, CMD18)을 eMMC로 보낸 후 eMMC로부터 리드 데이터(DAT-c, DAT-d)를 수신할 때까지 대기할 수 밖에 없다.
한편, 도 15를 참조하면, 본 발명의 실시예에 따르면, 데이터 전송 중이나, 또는 이전 데이터(DAT-N)의 기입 절차(previous write sequence)가 완료되기 전에 호스트(200A 또는 200C, 이하 200)는 제1 태스크에 대한 태스크 설정 명령 및 태스크 어드레스 명령(CMD44, CMD45)을 eMMC(300A, 300B, 또는 300C, 이하 300)로 보낸다.
eMMC(300)는 제1 태스크에 대한 태스크 설정 명령 및 태스크 어드레스 명령(CMD44, CMD45)에 응답하여 제1 태스크 정보를 명령 저장부(311)에 저장하고, 해당 태스크를 실행할 준비를 한다.
호스트(200)는 이전 데이터(DAT-N)의 기입 절차(previous write sequence)가 완료되면, 제1 태스크를 실행하기 위해 기입 실행 명령(CMD47)을 eMMC(300)로 전송한다. eMMC(300)는 기입 실행 명령(CMD47)에 응답하여, 호스트(200)로부터 제1 태스크에 연관된 라이트 데이터(DAT-a, DAT-b)를 수신하여 플래시 메모리에 프로그램한다.
호스트(200)는 제1 태스크에 연관된 라이트 데이터(DAT-a, DAT-b)가 전송 중에도 또는 제1 태스크에 연관된 라이트 데이터(DAT-a, DAT-b)를 플래시 메모리에 프로그램 완료하기 전에도, 다음 태스크인 제2 태스크에 대한 태스크 설정 명령 및 태스크 어드레스 명령(CMD44, CMD45)을 eMMC(300)로 발급할 수 있다.
eMMC(300)는 제2 태스크에 대한 태스크 설정 명령 및 태스크 어드레스 명령(CMD44, CMD45)에 응답하여 제2 태스크 정보를 명령 저장부(311)에 저장하고, 해당 태스크를 실행할 준비를 한다.
호스트(200)는 제1 태스크에 연관된 라이트 데이터(DAT-a, DAT-b)의 기입 절차(Task_1 write sequence)가 완료되면, 제2 태스크를 실행하기 위해 리드 실행 명령(CMD46)을 eMMC(300)로 전송한다. eMMC(300)는 리드 실행 명령(CMD46)에 응답하여, 제2 태스크에 연관된 리드 데이터(DAT-c, DAT-d)를 플래시 메모리로부터 독출하여 호스트(200)로 전송할 수 있다. 제2 태스크에 연관된 리드 데이터(DAT-c, DAT-d)의 전송 중에, 호스트(200)는 다음 태스크인 제3 태스크에 대한 태스크 설정 명령 및 태스크 어드레스 명령(CMD44, CMD45)을 eMMC(300)로 발급할 수 있다.
상술한 바와 같이, 본 발명의 실시예에 따른 eMMC는 내부에 복수(2이상)의 명령 레지스터를 가지고, 호스트로 하여금 데이터 전송 중에도 명령(예컨대, CMD44, CMD45)을 발급하여 다음 태스크를 미리 준비할 수 있도록 한다. 이에 따라, eMMC가 다음 데이터 트랜스퍼 처리를 위한 내부 동작을 현재 데이터 트랜스퍼와 오버랩하여 진행할 수 있어 병렬성을 높이는 동시에 실제 기입이나 리드 동작을 수행할 때 발생할 수 있는 디바이스의 지연시간(Latency)을 줄일 수 있다.
도 16은 본 발명의 실시예에 따른 전자 시스템의 실시예를 나타낸 블록도이다. 도 16을 참조하면, 전자 시스템(900)은 PC(personal computer), 데이터 서버, 또는 휴대용 전자 장치로 구현될 수 있다.
상기 휴대용 전자 장치는 랩탑(laptop) 컴퓨터, 이동 전화기, 스마트 폰 (smart phone), 태블릿 (tablet) PC, PDA(personal digital assistant), EDA (enterprise digital assistant), 디지털 스틸 카메라 (digital still camera), 디지털 비디오 카메라 (digital video camera), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), 또는 e-북(e-book)으로 구현될 수 있다.
전자 시스템(900)은 SoC(905), 파워 소스(910), 스토리지(920), 메모리(930), 입출력 포트(940), 확장 카드(950), 네트워크 디바이스(960), 및 디스플레이(970)를 포함한다. 실시 예에 따라. 전자 시스템(900)은 카메라 모듈(980)을 더 포함할 수 있다.
SoC(905)는 도 1에 도시된 호스트(100A) 또는 도 7에 도시된 호스트(100C)로 기능할 수 있다. SoC(905)는 구성 요소들(elements; 910~980) 중에서 적어도 하나의 동작을 제어할 수 있다.
파워 소스(910)는 구성 요소들(905, 및 910~980) 중에서 적어도 하나로 동작 전압을 공급할 수 있다.
스토리지(920)는 하드디스크 드라이브(hard disk drive) 또는 SSD(solid state drive)로 구현될 수 있다.
메모리(930)는 휘발성 메모리 또는 불휘발성 메모리로 구현될 수 있다. 실시 예에 따라, 메모리(930)에 대한 데이터 액세스 동작, 예컨대, 리드 동작, 라이트 동작(또는 프로그램 동작), 또는 이레이즈 동작을 제어할 수 있는 메모리 컨트롤러는 SoC(100)에 집적 또는 내장될 수 있다. 다른 실시 예에 따라, 상기 메모리 컨트롤러는 SoC(100)와 메모리(930) 사이에 구현될 수 있다.
스토리지(920)는 프로그램이나 데이터를 저장하며, 상술한 eMMC(200A, 200B, 또는 200C)로 구현될 수 있다.
메모리(930)는 프로그램이나 데이터를 저장하며, 휘발성 메모리 또는 불휘발성 메모리로 구현될 수 있다. 메모리(930)가 불휘발성 메모리로 구현되는 경우, 상술한 eMMC(200A, 200B, 또는 200C)로 구현될 수 있다.
입출력 포트(940)는 전자 시스템(900)으로 데이터를 전송하거나 또는 전자 시스템(900)으로부터 출력된 데이터를 외부 장치로 전송할 수 있는 포트들을 의미한다. 예컨대, 입출력 포트(940)는 컴퓨터 마우스와 같은 포인팅 장치(pointing device)를 접속하기 위한 포트, 프린터를 접속하기 위한 포트, 또는 USB 드라이브를 접속하기 위한 포트일 수 있다.
확장 카드(950)는 SD(secure digital) 카드 또는 MMC(multimedia card)로 구현될 수 있다. 실시 예에 따라, 확장 카드(950)는 SIM(subscriber identification module) 카드 또는 USIM(universal subscriber identity module) 카드일 수 있다.
네트워크 디바이스(960)는 전자 시스템(900)을 유선 네트워크 또는 무선 네트워크에 접속시킬 수 있는 장치를 의미한다.
디스플레이(970)는 스토리지(920), 메모리(930), 입출력 포트(940), 확장 카드(950), 또는 네트워크 디바이스(960)로부터 출력된 데이터를 디스플레이할 수 있다.
카메라 모듈(980)은 광학 이미지를 전기적인 이미지로 변환할 수 있는 모듈을 의미한다. 따라서, 카메라 모듈(980)로부터 출력된 전기적인 이미지는 스토리지(920), 메모리(930), 또는 확장 카드(950)에 저장될 수 있다. 또한, 카메라 모듈(980)로부터 출력된 전기적인 이미지는 디스플레이(970)를 통하여 디스플레이될 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100A, 100C; eMMC 시스템
200A, 200B; 호스트
300A, 300B, 300C; eMMC 장치
210; OS/Host Firmware
215: 프로세서
220; RAM
230; 호스트 컨트롤러
310; 장치 컨트롤러
311: 명령 레지스터
313: 상태 레지스터
315: 태스크 매니저
320; 호스트 인터페이스
330; CPU
340: 메모리
350; 디바이스 펌웨어
360; ECC
365: 플래시 인터페이스
370; 플래시 메모리

Claims (20)

  1. 플래시 메모리; 및
    상기 플래시 메모리를 제어하는 디바이스 컨트롤러를 포함하며,
    상기 디바이스 컨트롤러는
    데이터 버스의 상태와 상관없이 호스트로부터 전송되는 명령을 수신하여 태스크 아이디별로 태스크 정보를 저장하는 명령 저장부; 및
    상기 태스크 아이디별로 태스크의 상태에 기초한 상태 정보를 저장하는 상태 저장부를 포함하는 임베디드 멀티미디어 카드(embedded Multimedia Card(eMMC)).
  2. 제1항에 있어서, 상기 디바이스 컨트롤러는
    상기 상태 정보를 업데이트하는 태스크 매니저를 더 포함하는 eMMC.
  3. 제1항에 있어서, 상기 명령은
    태스크 아이디, 데이터 전송 방향을 나타내는 전송 방향 정보, 상기 플래시 메모리에 라이트할 데이터 또는 상기 플래시 메모리로부터 리드할 데이터 크기를 지정하기 위한 크기 정보, 및 우선순위 정보를 포함하는 제1 명령; 및
    상기 라이트할 데이터 또는 리드할 데이터의 시작 어드레스를 지정하기 위한 어드레스 정보를 포함하는 제2 명령을 포함하는 eMMC.
  4. 제3항에 있어서, 상기 디바이스 컨트롤러는
    상기 호스트로부터 상기 태스크 아이디를 포함하는 제3 명령을 수신하고, 상기 제3 명령에 응답하여, 상기 제3 명령에 포함된 태스크 아이디에 해당하는 데이터를 상기 호스트로 전송하는 eMMC.
  5. 제3항에 있어서, 상기 디바이스 컨트롤러는
    상기 호스트로부터 상기 태스크 아이디를 포함하는 제4 명령을 수신하고, 상기 제4 명령에 응답하여 상기 호스트로부터 상기 제4 명령에 포함된 태스크 아이디에 해당하는 데이터를 상기 호스트로부터 수신하여 버퍼에 저장하는 eMMC.
  6. 제3항에 있어서, 상기 디바이스 컨트롤러는
    상기 호스트로부터 제5 명령을 수신하고, 상기 제5 명령에 응답하여 상기 명령 저장부에 저장된 태스크들 중 적어도 하나의 태스크를 제어하는 eMMC.
  7. 제6항에 있어서, 상기 디바이스 컨트롤러는
    상기 제5 명령에 포함된 태스크 관리 코드에 응답하여 상기 제5 명령에 포함된 태스크 아이디에 해당하는 태스크만을 취소 또는 재실행하거나, 상기 명령 저장부에 저장된 모든 태스크들을 취소 또는 재실행하는 eMMC.
  8. 제1항에 있어서, 상기 디바이스 컨트롤러는
    상기 호스트로부터의 제6 명령에 응답하여, 상기 상태 레지스터에 저장된 상기 태스크 아이디별 상태 정보를 상기 호스트로 전송하는 eMMC.
  9. 제8항에 있어서, 상기 상태 정보는
    상기 명령 및 상기 명령에 대한 응답을 전송하는 채널 또는 상기 상태 정보를 위한 전용의 채널을 통해 상기 eMMC로부터 상기 호스트로 전송되는 eMMC.
  10. 호스트로부터 출력된 클락 신호를 수신하는 클락 채널;
    상기 호스트로부터 출력된 명령을 수신하는 명령 채널;
    상기 호스트로 데이터를 전송하는 데이터 채널들; 및
    상기 호스트로 상기 명령에 연관된 태스크의 실행 가능 여부를 알려주는 레디 신호를 송신하는 레디 신호 채널을 포함하는 임베디드 멀티미디어 카드(embedded Multimedia Card(eMMC)).
  11. 제10항에 있어서, 상기 eMMC는
    상기 호스트로부터 전송되는 상기 명령을 수신하여 태스크 아이디별로 태스크 정보를 저장하는 명령 저장부; 및
    상기 태스크 아이디별로 태스크의 상태에 기초한 상태 정보를 저장하는 상태 저장부를 더 포함하며,
    상기 레디 신호는 상기 상태 정보에 기초한 신호인 것을 특징으로 하는 임베디드 멀티미디어 카드(embedded Multimedia Card(eMMC)).
  12. 제11항에 있어서, 상기 레디 신호는
    상기 상태 저장부에 저장된 상태 정보들 중 하나 이상이 업데이트되면 제1 레벨에서 제2 레벨로 천이되는 eMMC.
  13. 제12항에 있어서, 상기 eMMC는
    상기 호스트로부터의 상태 확인 명령에 응답하여 상기 상태 저장부의 상태 정보들을 상기 호스트로 전송하는 eMMC.
  14. 제11항에 있어서, 상기 레디 신호는
    상기 상태 저장부의 상태 정보들을 포함하는 eMMC.
  15. 제10항에 있어서, 상기 명령은
    태스크 아이디, 데이터 전송 방향을 나타내는 전송 방향 정보, 플래시 메모리에 라이트할 데이터 또는 상기 플래시 메모리로부터 리드할 데이터 크기를 지정하기 위한 크기 정보, 및 우선순위 정보를 포함하는 제1 명령; 및
    상기 라이트할 데이터 또는 리드할 데이터의 시작 어드레스를 지정하기 위한 어드레스 정보를 포함하는 제2 명령을 포함하는 eMMC.
  16. 제15항에 있어서, 상기 eMMC는
    상기 호스트로부터 상기 태스크 아이디를 포함하는 제3 명령을 수신하고, 상기 제3 명령에 응답하여, 상기 제3 명령에 포함된 태스크 아이디에 해당하는 데이터를 상기 호스트로 전송하는 eMMC.
  17. 제15항에 있어서, 상기 eMMC는
    상기 호스트로부터 태스크 아이디를 포함하는 제4 명령을 수신하고, 상기 제4 명령에 응답하여 상기 호스트로부터 상기 제4 명령에 포함된 태스크 아이디에 해당하는 데이터를 상기 호스트로부터 수신하여 버퍼에 저장하는 eMMC.
  18. 제15항에 있어서, 상기 eMMC는
    상기 호스트로부터 제5 명령을 수신하고, 상기 제5 명령에 응답하여, 상기 명령 저장부에 저장된 태스크들 중 적어도 하나의 태스크를 제어하는 eMMC.
  19. 호스트와 클락 버스, 명령 버스, 및 데이터 버스를 통해 연결되는 임베디드 멀티미디어 카드(embedded Multimedia Card(eMMC))의 동작 방법에 있어서,
    상기 호스트로부터 제1 태스크에 대한 적어도 하나의 명령을 수신하고, 제1 태스크 정보를 명령 저장부에 저장하는 단계;
    상기 데이터 버스를 통해 상기 제1 태스크에 관련된 데이터를 상기 호스트로/로부터 전송하기 전에, 상기 호스트로부터 제2 태스크에 대한 적어도 하나의 명령을 수신하고, 제2 태스크 정보를 상기 명령 저장부에 저장하는 단계; 및
    상기 호스트로부터 제1 태스크 아이디를 포함하는 실행 명령을 수신하고, 상기 실행 명령에 응답하여, 상기 제1 태스크에 관련된 데이터를 상기 호스트로부터 수신하거나 상기 호스트로 전송하는 단계를 포함하며,
    상기 제1 태스크 정보 및 상기 제2 태스크 정보는 각각 태스크 아이디, 데이터의 전송 방향, 데이터 크기, 및 시작 어드레스를 포함하는 eMMC의 동작 방법.
  20. 제19항에 있어서, 상기 방법은
    상기 태스크 아이디별로 상기 제1 및 제2 태스크의 상태에 기초한 상태 정보를 상태 저장부에 저장하는 단계를 더 포함하는 eMMC의 동작 방법.
KR1020140003629A 2014-01-10 2014-01-10 임베디드 멀티미디어 카드 및 이의 동작 방법 KR102111741B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140003629A KR102111741B1 (ko) 2014-01-10 2014-01-10 임베디드 멀티미디어 카드 및 이의 동작 방법
US14/592,114 US9563368B2 (en) 2014-01-10 2015-01-08 Embedded multimedia card and method of operating the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140003629A KR102111741B1 (ko) 2014-01-10 2014-01-10 임베디드 멀티미디어 카드 및 이의 동작 방법

Publications (2)

Publication Number Publication Date
KR20150083741A true KR20150083741A (ko) 2015-07-20
KR102111741B1 KR102111741B1 (ko) 2020-05-15

Family

ID=53521403

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140003629A KR102111741B1 (ko) 2014-01-10 2014-01-10 임베디드 멀티미디어 카드 및 이의 동작 방법

Country Status (2)

Country Link
US (1) US9563368B2 (ko)
KR (1) KR102111741B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180013284A (ko) * 2016-07-29 2018-02-07 삼성전자주식회사 스토리지 장치, 이를 포함하는 시스템 및 그 동작 방법
KR20200076556A (ko) * 2018-12-19 2020-06-29 삼성전자주식회사 복수의 클라이언트들을 포함하는 통신 장치

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9824004B2 (en) 2013-10-04 2017-11-21 Micron Technology, Inc. Methods and apparatuses for requesting ready status information from a memory
KR102111741B1 (ko) * 2014-01-10 2020-05-15 삼성전자주식회사 임베디드 멀티미디어 카드 및 이의 동작 방법
US10108372B2 (en) * 2014-01-27 2018-10-23 Micron Technology, Inc. Methods and apparatuses for executing a plurality of queued tasks in a memory
US9454310B2 (en) * 2014-02-14 2016-09-27 Micron Technology, Inc. Command queuing
KR20160118836A (ko) * 2015-04-03 2016-10-12 에스케이하이닉스 주식회사 호스트 커맨드 큐를 포함하는 메모리 컨트롤러 및 그것의 동작 방법
US20170068480A1 (en) * 2015-09-09 2017-03-09 Mediatek Inc. Power Saving Methodology for Storage Device Equipped with Task Queues
US9880772B2 (en) 2015-09-21 2018-01-30 Micron Technology, Inc. Systems and methods for providing file information in a memory system protocol
CN105511806B (zh) * 2015-11-30 2018-09-07 华为技术有限公司 处理写请求的方法和移动终端
US9891945B2 (en) * 2016-03-21 2018-02-13 Qualcomm Incorporated Storage resource management in virtualized environments
US10580189B2 (en) * 2016-09-16 2020-03-03 Intel Corporation Apparatus and method for optimized ray tracing
KR20180053027A (ko) * 2016-11-11 2018-05-21 삼성전자주식회사 스토리지 장치 및 그 동작 방법
JP6877265B2 (ja) * 2017-06-27 2021-05-26 ルネサスエレクトロニクス株式会社 半導体装置、及びフラッシュメモリ制御方法
KR102549540B1 (ko) 2017-09-22 2023-06-29 삼성전자주식회사 스토리지 장치 및 그 동작 방법
US10303384B1 (en) 2017-11-28 2019-05-28 Western Digital Technologies, Inc. Task readiness for queued storage tasks
TWI734220B (zh) * 2019-07-10 2021-07-21 慧榮科技股份有限公司 主機輸出入命令的執行裝置及方法及電腦程式產品
KR20210041829A (ko) * 2019-10-08 2021-04-16 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 동작 방법
CN115686164A (zh) * 2021-07-26 2023-02-03 瑞昱半导体股份有限公司 供电端装置、供电系统以及非暂态电脑可读取媒体
CN116820898B (zh) * 2023-08-31 2024-01-02 合肥康芯威存储技术有限公司 一种eMMC的运行状态监控方法、系统及计算机可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140082267A1 (en) * 2012-09-14 2014-03-20 Kyung Phil Yoo EMBEDDED MULTIMEDIA CARD (eMMC), HOST CONTROLLING eMMC, AND METHOD OPERATING eMMC SYSTEM
US20150199137A1 (en) * 2014-01-10 2015-07-16 Myung Sub Shin Embedded multimedia card and method of operating the same

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4554016B2 (ja) 2000-01-20 2010-09-29 富士通株式会社 バス使用効率を高めた集積回路装置のバス制御方式
JP2003203490A (ja) 2002-01-08 2003-07-18 Seiko Epson Corp 半導体記憶装置、制御装置、および半導体記憶装置の制御方法
US6901461B2 (en) 2002-12-31 2005-05-31 Intel Corporation Hardware assisted ATA command queuing
US7480754B2 (en) 2003-06-27 2009-01-20 Seagate Technology, Llc Assignment of queue execution modes using tag values
JP2006252079A (ja) 2005-03-09 2006-09-21 Kyodo Printing Co Ltd 情報記録媒体、情報通信システム、情報通信方法及び情報通信プログラム
KR20100042885A (ko) 2008-10-17 2010-04-27 삼성전자주식회사 비휘발성 메모리 장치의 동작 방법
US20100131701A1 (en) 2008-11-25 2010-05-27 Samsung Electronics Co., Ltd. Nonvolatile memory device with preparation/stress sequence control
US8341338B2 (en) 2009-05-06 2012-12-25 Samsung Electronics Co., Ltd. Data storage device and related method of operation
JP2011242884A (ja) 2010-05-14 2011-12-01 Toshiba Corp メモリシステム及びそのデータ転送方法
JP2012128644A (ja) 2010-12-15 2012-07-05 Toshiba Corp メモリシステム
KR101988260B1 (ko) * 2012-09-14 2019-06-12 삼성전자주식회사 임베디드 멀티미디어 카드, 및 이의 동작 방법
US8954655B2 (en) * 2013-01-14 2015-02-10 Western Digital Technologies, Inc. Systems and methods of configuring a mode of operation in a solid-state memory
US9519440B2 (en) * 2013-09-10 2016-12-13 Qualcomm Incorporated Providing command queuing in embedded memories
US10108372B2 (en) * 2014-01-27 2018-10-23 Micron Technology, Inc. Methods and apparatuses for executing a plurality of queued tasks in a memory
US9454310B2 (en) * 2014-02-14 2016-09-27 Micron Technology, Inc. Command queuing

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140082267A1 (en) * 2012-09-14 2014-03-20 Kyung Phil Yoo EMBEDDED MULTIMEDIA CARD (eMMC), HOST CONTROLLING eMMC, AND METHOD OPERATING eMMC SYSTEM
US20150199137A1 (en) * 2014-01-10 2015-07-16 Myung Sub Shin Embedded multimedia card and method of operating the same

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180013284A (ko) * 2016-07-29 2018-02-07 삼성전자주식회사 스토리지 장치, 이를 포함하는 시스템 및 그 동작 방법
KR20200076556A (ko) * 2018-12-19 2020-06-29 삼성전자주식회사 복수의 클라이언트들을 포함하는 통신 장치

Also Published As

Publication number Publication date
US20150199137A1 (en) 2015-07-16
US9563368B2 (en) 2017-02-07
KR102111741B1 (ko) 2020-05-15

Similar Documents

Publication Publication Date Title
KR102111741B1 (ko) 임베디드 멀티미디어 카드 및 이의 동작 방법
US11151027B2 (en) Methods and apparatuses for requesting ready status information from a memory
KR101932920B1 (ko) 비휘발성 메모리 카드를 제어하는 호스트, 이를 포함하는 시스템 및 이의 동작 방법
KR101988260B1 (ko) 임베디드 멀티미디어 카드, 및 이의 동작 방법
KR101919903B1 (ko) 임베디드 멀티미디어 카드, 이를 제어하는 호스트, 및 이들의 동작 방법
US10108372B2 (en) Methods and apparatuses for executing a plurality of queued tasks in a memory
JP4799417B2 (ja) ホストコントローラ
EP2973572B1 (en) System and method of reading data from memory concurrently with sending write data to the memory
KR20160049200A (ko) 데이터 저장 장치의 작동 방법, 이를 포함하는 모바일 컴퓨팅 장치, 및 이의 작동 방법
US11016917B2 (en) Data storage system and method for multiple communication protocols and direct memory access
KR20190088734A (ko) 메모리 인터페이스와, 이를 포함하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
TW202011203A (zh) 指令處理方法及使用所述方法的儲存控制器
US20210019140A1 (en) Method for updating IC firmware
TW201344444A (zh) 主機板及應用於該主機板的資料處理方法
JP2014179066A (ja) ストレージ制御装置、ストレージシステム、およびストレージ制御方法
TW201604772A (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