KR101932920B1 - 비휘발성 메모리 카드를 제어하는 호스트, 이를 포함하는 시스템 및 이의 동작 방법 - Google Patents

비휘발성 메모리 카드를 제어하는 호스트, 이를 포함하는 시스템 및 이의 동작 방법 Download PDF

Info

Publication number
KR101932920B1
KR101932920B1 KR1020120102484A KR20120102484A KR101932920B1 KR 101932920 B1 KR101932920 B1 KR 101932920B1 KR 1020120102484 A KR1020120102484 A KR 1020120102484A KR 20120102484 A KR20120102484 A KR 20120102484A KR 101932920 B1 KR101932920 B1 KR 101932920B1
Authority
KR
South Korea
Prior art keywords
data
command
host
memory card
bus
Prior art date
Application number
KR1020120102484A
Other languages
English (en)
Other versions
KR20140036094A (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 KR1020120102484A priority Critical patent/KR101932920B1/ko
Priority to US14/025,334 priority patent/US9389804B2/en
Priority to AU2013228071A priority patent/AU2013228071A1/en
Priority to TW102133275A priority patent/TWI626544B/zh
Priority to DE102013110085.6A priority patent/DE102013110085B4/de
Priority to NL2011439A priority patent/NL2011439B1/en
Priority to CN201310421932.9A priority patent/CN103678193B/zh
Priority to JP2013192280A priority patent/JP6341642B2/ja
Publication of KR20140036094A publication Critical patent/KR20140036094A/ko
Priority to US15/191,749 priority patent/US10108373B2/en
Priority to US16/133,111 priority patent/US20190018615A1/en
Application granted granted Critical
Publication of KR101932920B1 publication Critical patent/KR101932920B1/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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1684Details of memory controller using multiple buses
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2153Using hardware token as a secondary aspect

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)
  • Read Only Memory (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

비휘발성 메모리 카드를 제어하는 호스트, 이를 포함하는 시스템 및 이의 동작 방법이 개시된다. 본 발명의 비휘발성 메모리 카드(non-volatile memory card)와 클락 버스, 명령 버스, 및 데이터 버스를 통해 연결되는 호스트의 동작 방법은 상기 명령 버스를 통해 상기 메모리 카드로 제1 명령을 송신하는 단계; 상기 제1 명령에 상응하는 제1 데이터를 상기 데이터 버스를 통해 상기 메모리 카드로 전송하거나, 상기 메모리 카드로부터 수신하는 단계; 및 상기 제1 데이터 전송 중에 또는 상기 제1 데이터 전송 전에 상기 명령 버스를 통해 제2 명령을 1회 이상 상기 메모리 카드로 전송하는 단계를 포함한다.

Description

비휘발성 메모리 카드를 제어하는 호스트, 이를 포함하는 시스템 및 이의 동작 방법{HOST FOR CONTROLLING NON-VOLATILE MEMORY CRAD, SYSTEM INCLUDING THE SAME AND OPERATING METHOD THERE-OF}
본 발명의 개념에 따른 실시 예는 비휘발성 메모리 카드를 제어하는 호스트에 관한 것으로, 특히 리드(read)/라이트(write) 성능을 개선할 수 있는 호스트, 이를 포함하는 시스템 및 이들의 동작 방법에 관한 것이다.
비휘발성 메모리 카드로는 대표적으로 멀티미디어 카드(MultiMediaCard(MMC)가 있다. 멀티미디어 카드는 플래시(flash) 메모리의 메모리 카드 표준이다.
eMMC는 JEDEC에서 표준으로 정한 내장형 MMC에 대한 표준이다. eMMC 통신은 10개의 신호 버스(10-signal bus)에 기반한다. eMMC은 스마트폰과 같은 이동 통신 장치에 내장되어 사용될 수 있다.
본 발명이 이루고자 하는 기술적인 과제는 리드(read)/라이트(write) 성능을 개선할 수 있는 비휘발성 메모리 카드를 제어하는 호스트, 이를 포함하는 시스템 및 이들의 동작 방법을 제공하는 것이다.
본 발명의 실시 예에 따른 비휘발성 메모리 카드(non-volatile memory card)와 클락 버스, 명령 버스, 및 데이터 버스를 통해 연결되는 호스트의 동작 방법은 상기 명령 버스를 통해 상기 메모리 카드로 제1 명령을 송신하는 단계; 상기 제1 명령에 상응하는 제1 데이터를 상기 데이터 버스를 통해 상기 메모리 카드로 전송하거나, 상기 메모리 카드로부터 수신하는 단계; 및 상기 제1 데이터 전송 중에 또는 상기 제1 데이터 전송 전에 상기 명령 버스를 통해 제2 명령을 1회 이상 상기 메모리 카드로 전송하는 단계를 포함한다.
상기 제2 명령은 상기 비휘발성 메모리 카드가 "비지" 상태일 때 전송될 수 있다.
상기 비휘발성 메모리 카드의 "비지" 상태는 상기 데이터 버스 중의 어느 하나의 라인에 의해 표시될 수 있다.
상기 동작 방법은 상기 명령 버스의 상태를 관리하기 위한 명령 버스 상태 머신을 동작시키는 단계; 및 상기 데이터 버스의 상태를 관리하기 위한 데이터 버스 상태 머신을 상기 명령 버스 상태 머신과 독립적으로 동작시키는 단계를 더 포함하며, 상기 데이터 버스 상태는 아이들 상태, 데이터 트랜스퍼 상태 및 응답 수신/대기 상태를 포함하고, 상기 제2 명령은 상기 데이터 버스에 대한 상태가 데이터 트랜스퍼 상태 또는 응답 수신/대기 상태인 경우에 상기 메모리 카드로 전송될 수 있다.
상기 제1 명령은 데이터를 수반하는 명령이고, 상기 제2 명령은 데이터를 수반하지 않는 명령일 수 있다.
상기 방법은 상기 제2 명령의 전송 횟수를 관리하는 단계를 더 포함할 수 있다.
본 발명의 실시 예에 따른 비휘발성 메모리 카드(non-volatile memory card)와 클락 버스, 명령 버스, 및 데이터 버스를 통해 연결되는 호스트를 포함하는 비휘발성 메모리 카드 시스템의 동작 방법은 상기 호스트가 상기 명령 버스를 통해 상기 메모리 카드로 제1 명령을 송신하는 단계; 상기 호스트와 상기 메모리 카드 사이에 상기 데이터 버스를 통해 상기 제1 명령에 상응하는 제1 데이터가 전송되는 단계; 및 상기 제1 데이터 전송 중에 상기 호스트가 상기 명령 버스를 통해 제2 명령을 상기 메모리 카드로 전송하는 단계를 포함한다.
상기 제2 명령을 상기 메모리 카드로 전송하는 단계는 상기 호스트가 동일한 명령 타입의 상기 제2 명령을 복수(2이상)개 상기 메모리 카드로 전송하는 단계를 포함하며, 상기 동작 방법은 상기 메모리 카드가 상기 제2 명령을 순차적으로 수신하여 명령 레지스터에 저장하는 단계를 더 포함할 수 있다.
상기 제2 명령은 리드할 데이터의 크기를 나타내는 데이터 크기 정보 및 시작 어드레스 정보를 포함하는 리드 준비 명령이고, 상기 데이터 크기 정보 및 상기 시작 어드레스 정보는 상기 명령 레지스터에 저장될 수 있다.
상기 동작 방법은 상기 비휘발성 메모리 카드가 상기 제2 명령에 응답하여 비휘발성 메모리 장치로부터 데이터를 독출하여 상기 비휘발성 메모리 카드 내의 데이터 버퍼에 저장하는 단계를 더 포함할 수 있다.
상기 동작 방법은 상기 호스트가 제3 명령을 상기 메모리 카드로 전송하는 단계; 및 상기 메모리 카드가 상기 제3 명령에 응답하여 상기 데이터 버퍼에 저장된 데이터를 상기 호스트로 전송하는 단계를 더 포함할 수 있다.
상기 동작 방법은 상기 호스트가 상기 복수개의 제2 명령 전부 또는 일부를 특정하여 취소하기 위한 취소 명령을 상기 비휘발성 메모리 카드로 전송하는 단계; 및 상기 메모리 카드가 상기 취소 명령에 응답하여 상기 취소 명령에 의해 특정된 제2 명령 또는 데이터를 무효화하는 단계를 더 포함할 수 있다.
상기 제2 명령은 라이트 준비 명령이고, 라이트 준비 명령은 라이트할 데이터의 크기를 나타내는 데이터 크기 정보 및 시작 어드레스 정보를 포함할 수 있다.
상기 동작 방법은 상기 호스트가 상기 복수개의 제2 명령 중 첫 번째 제2 명령에 상응하는 제2 데이터를 상기 데이터 버스를 통해 상기 비휘발성 메모리 카드로 전송하는 단계; 상기 메모리 카드가 상기 첫번째 제2 명령에 응답하여 상기 제2 데이터를 수신하여 상기 비휘발성 메모리 장치로 프로그램하는 단계; 상기 호스트가 상기 복수개의 제2 명령 중 두 번째 제2 명령을 상기 제2 데이터가 상기 데이터 버스를 통해 전송되는 도중에 상기 메모리 카드로 전송하는 단계; 상기 제2 데이터의 전송 완료 후, 상기 호스트가 상기 두 번째 제2 명령에 상응하는 제3 데이터를 상기 데이터 버스를 통해 상기 메모리 카드로 전송하는 단계; 및 상기 메모리 카드가 상기 두 번째 제2 명령에 응답하여 상기 제3 데이터를 수신하여 상기 비휘발성 메모리 장치로 프로그램하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 비휘발성 메모리 카드(non-volatile memory card)와 클락 버스, 명령 버스, 및 데이터 버스를 통해 연결되는 호스트는 상기 호스트의 동작을 전반적으로 제어하는 프로세서; 및 상기 프로세서에 전기적으로 연결되며, 상기 메모리 카드와 인터페이스하기 위한 호스트 컨트롤러를 포함한다.
상기 호스트 컨트롤러는 상기 명령 버스를 통해 상기 메모리 카드로 제1 명령을 송신하고, 상기 제1 명령에 상응하는 제1 데이터를 상기 데이터 버스를 통해 상기 eMMC로 전송하거나, 상기 eMMC로부터 수신하고, 상기 제1 데이터 전송 중에 또는 상기 제1 데이터 전송 전에 상기 명령 버스를 통해 제2 명령을 상기 메모리 카드로 전송한다.
본 발명의 실시 예에 따르면, 호스트는 데이터 전송 중 또는 eMMC의 리드/라이트 동작이 완료되기 전에 명령을 eMMC에 보낼 수 있다. 따라서, eMMC의 리드/라이트 동작 중에도 다음 리드/라이트 명령에 대한 준비 동작을 수행할 수 있다. 따라서, eMMC의 리드/라이트 성능을 향상시킬 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 비휘발성 메모리 카드 시스템의 블록도를 나타낸다.
도 2는 도 1에 도시된 호스트 컨트롤러의 일 실시예를 나타내는 블록도이다.
도 3은 본 발명의 일 실시예에 따른 eMMC 장치의 블록도이다.
도 4a는 도 3에 도시된 디바이스 명령 레지스터들의 일 실시예를 나타낸다.
도 4b는 도 4a의 명령 레지스터에 저장되는 명령 정보의 일 실시예를 나타낸다.
도 5는 도 3에 도시된 디바이스 명령 레지스터들의 다른 실시예를 나타낸다.
도 6은 본 발명의 일 실시예에 따른 명령 버스 상태 머신을 나타낸다.
도 7은 본 발명의 일 실시예에 따른 데이터 버스 상태 머신을 나타낸다.
도 8은 본 발명의 일 실시예에 따른 비휘발성 메모리 카드 시스템의 동작 방법을 나타내는 플로우차트이다.
도 9는 본 발명의 일 실시예에 따른 데이터 리드 동작 방법과 통상의 eMMC의 데이터 리드 동작 방법을 비교하기 위한 개략적인 타이밍도이다.
도 10은 본 발명의 다른 실시예에 따른 비휘발성 메모리 카드 시스템의 동작 방법을 나타내는 개략적인 타이밍도이다.
도 11은 본 발명의 다른 실시예에 따른 데이터 리드 동작 방법과 통상의 eMMC의 데이터 리드 동작 방법을 비교하기 위한 개략적인 타이밍도이다.
도 12는 본 발명의 일 실시예에 따른 라이트 동작 방법과 통상의 eMMC의 라이트 동작 방법을 비교하기 위한 개략적인 타이밍도이다.
도 13은 본 발명의 또 다른 실시예에 따른 리드 동작 방법을 나타내는 플로우챠트이다.
도 14는 본 발명의 또 다른 실시예에 따른 리드 동작 방법과 통상의 eMMC의 리드 동작 방법을 비교하기 위한 개략적인 타이밍도이다.
도 15는 본 발명의 다른 실시예에 따른 라이트 동작 방법을 나타내는 플로우챠트이다.
도 16은 본 발명의 다른 실시예에 따른 라이트 동작 방법과 통상의 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은 본 발명의 일 실시 예에 따른 비휘발성 메모리 카드 시스템(100)의 블록도를 나타낸다.
도 1을 참조하면, 비휘발성 메모리 카드 시스템(100)은 호스트(200)와 장치(300)를 포함한다. 장치(300)는 비휘발성 메모리 카드 장치로서, SD(Secure Digital) 카드, MMC(multimedia card), eMMC일 수 있으나, 이에 한정되는 것은 아니다.
본 실시예에서는, 장치(300)는 임베디드 멀티미디어 카드(embedded multimedia card(eMMC))인 것으로 가정한다.
호스트(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)가 구동될 수 있다. 메모리(220)는 DRAM 및 SRAM을 포함할 수 있으나, 이에 한정되는 것은 아니다.
도시된 구성 요소 이외에도 호스트(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)로부터 리드한 리드 데이터를 수신한다.
호스트 컨트롤러(230)는 eMMC 장치(300)로 송신한 명령들의 정보를 저장하기 위한 호스트 명령 레지스터(235)를 포함할 수 있다. 호스트 명령 레지스터들(235)은 호스트(200) 내의 메모리(예컨대, 220)와 별도로 구현될 수도 있고, 메모리(예컨대, 220)를 이용할 수도 있다.
도 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는 도 1에 도시된 호스트 컨트롤러의 일 실시예를 나타내는 블록도이다.
이를 참조하면, 호스트 컨트롤러(230)는 명령 생성 유닛(231), 데이터 입출력 유닛(234), 태스크 관리 유닛(232), 및 상태 제어 유닛(233)을 포함할 수 있다. 태스크 관리 유닛(232)은 태스크의 생성, 종료 등을 관리할 수 있다.
명령 생성 유닛(231)은 태스크의 요청에 따라 명령(CMD)을 생성하여 eMMC 장치(300)로 전송하고, 명령(CMD)에 대한 응답(RES)을 수신할 수 있다.
데이터 입출력 유닛(234)은 양방향 데이터 버스(103)를 통해 데이터 라이트 동작을 위한 라이트 데이터(DAT[7:0])를 eMMC 장치(300)로 전송하거나 플래시 메모리(370)로부터 리드된 리드 데이터(DAT[7:0])를 수신할 수 있다.
상태 제어 유닛(233)은 명령 버스(102)의 상태를 관리하기 위한 명령 버스 상태 머신과 데이터 버스(103)의 상태를 관리하기 위한 데이터 버스 상태 머신을 독립적으로 제어할 수 있다. 이에 대해서는, 도 6 및 도 7을 참조하여 설명될 것이다.
도 2에 도시된 호스트 컨트롤러(230)의 각 구성요소는 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어의 결합으로 구현될 수 있다. 예컨대, 도 2에 호스트 컨트롤러(230)의 구성요소들 중 일부 또는 전부는 펌웨어로 구현될 수 있다.
도 3은 본 발명의 일 실시예에 따른 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)을 포함할 수 있다. 디바이스 명령 레지스터들(325)은 디바이스 컨트롤러(310) 내의 메모리(예컨대, 340)와 별도로 구현될 수도 있고, 메모리(예컨대, 340)를 이용할 수도 있다.
도 4a는 도 3에 도시된 디바이스 명령 레지스터들의 일 실시예(325A)를 나타낸다.
도 4a를 참조하면, 일 실시예에 따른 명령 레지스터들(325A)은 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에서 정의된 명령이 아니라, eMMC 장치(300)가 동작(예컨대, 데이터 리드 동작 또는 데이터 라이트 동작 등) 중인 비지(busy) 상태에서도 다음 명령을 받음으로써 전체적인 데이터 전송 속도를 높이기 위하여 새롭게 정의된 명령일 수 있다,
통상의 eMMC 프로토콜에 따르면, 데이터 전송 중 또는 eMMC의 비지(busy) 상태에서는 호스트는 중지(stop, abort) 명령이나, 상태(status) 확인 명령만 eMMC로 전송 가능하고, 다른 명령(예컨대, 리드 명령이나 라이트 명령)은 전송할 수 없다. stop이나 abort 명령은 전송중인 데이터를 중단시키기 위한 명령이고, 상태(status) 확인 명령은 디바이스의 상태를 확인하기 위한 명령이다.
예컨대, 통상의 eMMC 프로토콜 상에서 데이터 송신 상태(sending-data state), 데이터 수신 상태(receive-data state), 프로그래밍 상태(programming state)동안에는 명령 전송이 불가능하며, 동작 완료(operation complete) 이후인 트랜스퍼 상태(transfer state) 동안에만 명령을 보낼 수 있다. 이로 인한 프로토콜 오버헤드로 성능이 떨이지게 된다.
본 발명의 실시예에서는, 데이터 전송 중 또는 eMMC의 비지(busy) 상태에서도 호스트가 eMMC 장치(300)로 명령을 미리 보내어 다음 데이터 전송을 준비할 수 있도록 함으로써 데이터 전송 성능을 높인다. 본 발명의 실시예에 따른 명령은 상술한 중지(stop, abort) 명령이나 상태(status) 확인 명령이 아닌, 다음 데이터 전송을 준비하기 위한 명령(즉, 준비 명령), 준비 명령을 취소하기 명령, 준비 명령에 의해 준비된 데이터를 읽어가기 위한 명령 등일 수 있다.
본 발명의 일 실시예에 따르면, 명령은 도 4a에 도시된 명령 레지스터들(325-1~325-N)에 저장될 수 있다.
각 레지스터(325-1~325-N)는 호스트에서 발급된 명령에 대한 정보(이하, 명령 정보라 함)를 저장한다. 예컨대, eMMC 호스트 인터페이스(320)는 제1 명령에 대한 정보는 제1 명령 레지스터(325-1)에 저장하고, 제1 명령 다음에 수신되는 제2 명령에 대한 정보는 제2 명령 레지스터(325-2)에 저장하는 식으로, 최대 N개의 명령을 수신하여 각 명령 정보를 각 레지스터(325-1~325-N)에 저장할 수 있다.
도 4b는 도 4a의 레지스터에 저장되는 명령 정보의 일 실시예를 나타낸다. 이를 참조하면, 레지스터에 저장되는 명령 정보는 명령 타입(command type), 어드레스(address), 및 데이터 크기(data size)를 포함할 수 있으나, 이에 한정되는 것은 아니다.
명령 타입(command type), 어드레스(address), 및 데이터 크기(data size)는 호스트로부터 발급되는 명령에 포함되어 eMMC(300)로 전송될 수 있다.
명령 타입은 명령의 종류를 나타내는 필드로, 리드 준비 명령 및 라이트 준비 명령을 포함할 수 있다. 어드레스는 명령을 수행할 어드레스를 나타낸다. 데이터 크기(data size)는 명령을 수행할 데이터의 크기이다. 예를 들어, 명령이 리드 준비 명령이고 어드레스는 100, 데이터 크기가 1024이면, 100번 어드레스에서 1024 바이트(bytes)만큼의 데이터를 리드하라는 의미일 수 있다.
그러나, 데이터 크기의 단위가 바이트(bytes)로 한정되는 것은 아니며, 다른 단위(예컨대, 특정 사이즈로 정의된 블록의 수, 페이지 수 등)일 수 있다.
도 5는 도 3에 도시된 디바이스 명령 레지스터들의 다른 실시예(325B)를 나타낸다. 도 5에 도시된 명령 레지스터들(325B)은 데이터 크기(DS1~DSN)를 저장하기 위한 데이터 크기 레지스터(326-1~326-N)와 시작 어드레스(SA1~SAN)을 저장하기 위한 어드레스 레지스터(327-1~327-N)를 포함할 수 있다. 데이터 크기(DS1~DSN) 및 시작 어드레스(SA1~SAN)는 명령에 포함된 정보일 수 있다.
본 발명의 일 실시예에서, 명령은 리드 또는 라이트할 데이터의 크기를 지정하기 위한 명령(이하, 크기 지정 명령이라 함)과 리드 또는 라이트할 데이터의 위치를 나타내는 시작 어드레스를 지정하기 위한 명령(이하, 어드레스 지정 명령이라 함)을 포함할 수 있다.
크기 지정 명령은 명령 타입(command type), 및 데이터 크기(data size)를 포함할 수 있다. 명령 타입은 명령의 종류를 나타내는 필드(field, 혹은 아규먼트(argument))이다. 일 실시예에서, 데이터 크기는 블록 수(block count)일 수 있으나, 이에 한정되는 것은 아니다.
블록이란, 미리 정의된 사이즈를 갖는 데이터의 단위로서, 예컨대, 플래시 메모리의 페이지에 해당할 수 있으나, 이에 한정되는 것은 아니다.
크기 지정 명령의 데이터 크기는 데이터 크기 레지스터(326-1~326-N) 중 대응하는 하나에 저장될 수 있다.
어드레스 지정 명령은 명령 타입(command type) 및 시작 어드레스(start address)를 포함할 수 있다. 어드레스 지정 명령의 시작 어드레스는 어드레스 레지스터(327-1~327-N) 중 대응하는 하나에 저장될 수 있다.
호스트(200)의 호스트 명령 레지스터(235)는 도 4a 또는 도 5에 도시된 디바이스 명령 레지스터와 유사할 수 있다.
호스트 컨트롤러(230)는 eMMC(300)로 전송하는 명령을 관리하기 위하여 호스트 명령 레지스터(235)를 구비하여, 명령 정보를 저장할 수 있다.
CPU(330)는 각 인터페이스(320과 365)의 동작을 제어하고, eMMC 장치(300)의 동작을 전반적으로 제어한다.
메모리(340)는 인터페이스들(320과 365) 사이에서 주거나 받는 데이터를 일시적으로 저장한다. 메모리(340)는 휘발성 메모리로 구현될 수 있다.
플래시 메모리(370)는 데이터를 저장하고, 플래시 메모리(370)가 NAND 플래시 메모리로 구현될 때 플래시 인터페이스(365)는 NAND 플래시 인터페이스로 구현될 수 있다. 플래시 메모리(370)는 장치 특성들(device properties)과 선택된 모드들을 저장할 수 있는 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)를 데이터 블록으로서 전송한다.
멀티 큐 뎁쓰는 EXT_CSD 레지스터(371)의 유보 필드(reserved field)에 설정될 수 있다. 그러나, 다른 실시예에서는, 멀티 큐 뎁쓰는 다른 호스트 제어 레지스터에 설정될 수도 있다. 호스트 제어 레지스터란 호스트가 제어할 수 있는 혹은 설정할 수 있는 레지스터를 의미한다.
도 6은 본 발명의 일 실시예에 따른 명령 버스 상태 머신을 나타내고, 도 7은 본 발명의 일 실시예에 따른 데이터 버스 상태 머신을 나타낸다.
도 6을 참조하면, 명령 버스 상태는 아이들(idle) 상태(S10), 명령 전송 상태(S11), 및 응답 수신 상태(S13)을 포함할 수 있다. 그러나, 명령 버스 상태가 도 6에 도시된 3개의 상태들에 한정되지는 않는다. 호스트 컨트롤러(230)는 eMMC(300)로 전송할 명령이 있는 경우 명령 버스 상태를 아이들 상태(S10)에서 명령 전송 상태(S11)로 천이하여 명령을 eMMC(300)로 전송한다. eMMC(300)로 명령을 전송한 후, 그 명령이 응답을 필요로 하는 명령인 경우 명령 버스 상태는 응답 수신 상태(S13)로 천이하고, eMMC(300)로부터 명령에 대한 응답을 수신한 경우 아이들 상태(S10)로 천이한다. eMMC(300)로 명령을 전송한 후, 그 명령이 응답을 필요로 하지 않는 명령인 경우 명령 전송 상태(S11)에서 아이들 상태(S10)로 천이한다.
응답 수신 상태(S13)에서 아이들 상태(S10)로 천이할 때, 또는 명령 전송 상태(S11)에서 아이들 상태(S10)로 천이할 때 특정 클락 싸이클을 대기하는 대기 상태(미도시)를 거칠 수 있다.
도 7을 참조하면, 데이터 버스 상태는 아이들(idle) 상태(S20), 데이터 전송 상태(S21), 및 응답 수신/대기 상태(S22)를 포함할 수 있다. 그러나, 데이터 버스 상태가 도 7에 도시된 3개의 상태들에 한정되지는 않는다. 호스트 컨트롤러(230)가 eMMC로 데이터 전송을 수반하는 명령(data transfer command, 이하 데이터 트랜스퍼 명령이라 함)를 전송한 경우, 데이터 버스 상태는 아이들 상태(S20)에서 데이터 전송 상태(S21)로 천이하여 데이터 트랜스퍼 명령에 상응하는 데이터를 전송한다. 데이터는 블록 단위로 전송될 수 있다. 예컨대, 한 블록의 데이터 전송이 완료되면, 응답 수신/대기 상태(S22)로 천이하여, 해당 블록에 대한 CRC 상태 응답을 수신할 때까지 대기한다.
CRC 상태 응답을 수신하면, 다시 데이터 전송 상태(S21)로 천이하여 다음 블록의 데이터를 전송하고, 다시 응답 수신/대기 상태(S22)가 된다. 모든 블록의 데이터 전송이 완료되면, 아이들 상태(S20)로 천이한다.
본 발명의 실시예에 따르면, 상태 제어 유닛(233)은 명령 버스 상태 머신과 데이터 버스 상태 머신은 독립적으로 동작시킨다. 물론 명령 버스 상태와 데이터 버스 상태가 서로 관련될 수는 있다. 그러나, 명령 버스 상태와 데이터 버스 상태가 하나의 상태 머신으로 동작되는 것이 아니라, 별개로 동작된다.
예컨대, 데이터 버스 상태가 아이들 상태가 아닐 때, 즉 데이터 버스 상태가 데이터 트랜스퍼 상태 또는 응답 수신/대기 상태에서도 호스트(200)는 eMMC(300)로 명령(예컨대, 데이터 전송을 수반하지 않는 명령이나, 취소 명령 등)을 전송할 수 있다.
명령은 크게 두 가지 타입으로 나뉠 수 있다. 하나는 데이터 트랜스퍼를 수반하는 명령(데이터 트랜스퍼 명령), 다른 하나는 데이터 트랜스퍼를 수반하지 않는 명령(비 데이터 트랜스퍼 명령)이다.
도 8은 본 발명의 일 실시예에 따른 비휘발성 메모리 카드 시스템의 동작 방법을 나타내는 플로우차트이다. 도 8에 도시된 시스템의 동작 방법은 도 1에 도시된 시스템(100)에 의해 구현될 수 있다.
이를 참조하면, 호스트(200)는 리드 준비 명령(PR)을 디바이스 컨트롤러(310)로 전송한다(S110). 디바이스 컨트롤러(310)는, 리드 준비 명령(PR)에 응답하여 응답(R1)을 호스트로 보내고(S115), 리드 준비 명령 정보를 명령 레지스터에 저장할 수 있다.
리드 준비 명령(PR)은 eMMC(300)로 하여금 데이터 리드 준비를 할 수 있게 하는 명령으로서, 데이터 트랜스퍼를 수반하지 않는 명령의 일종이다.
리드 준비 명령(PR)은 데이터 전송 중 또는 eMMC(300)의 비지 상태에서도 보내질 수 있으며, 또한 복수(예컨대, 멀티 큐 뎁쓰)개의 리드 준비 명령(PR)이 전송될 수 있다. 예컨대, S110 및 S115 단계가 복수 회 반복될 수 있다. 호스트는 리드 준비 명령(PR)의 전송 개수를 카운트하기 위한 명령 카운터(미도시)를 더 구비할 수 있다.
리드 준비 명령(PR)은 리드할 데이터의 크기 및 시작 어드레스를 지정하기 위한 데이터 크기 및 시작 어드레스 정보를 포함할 수 있다. 데이터 크기 및 시작 어드레스 정보는 도 4a 또는 도 5에 도시된 바와 같이, 명령 레지스터에 저장될 수 있다.
디바이스 컨트롤러(310)는, 명령 레지스터에 저장된 시작 어드레스 및 데이터 크기에 따라 플래시 메모리로 리드 명령을 보내어(S120), 플래시 메모리로부터 해당 데이터를 리드한다(S125). 리드한 데이터는 데이터 버퍼에 저장된다(S130).
데이터 버퍼는 리드 준비 명령에 따른 데이터를 저장하기 위한 버퍼로서, 도 3의 메모리(340)가 사용될 수 있다.
이전 데이터의 전송이 완료되면(S135에서 YES인 경우), 호스트(200)는 데이터 리드 아웃 명령(RO)을 디바이스 컨트롤러(310)로 전송한다(S140). 호스트(200)로부터 데이터 리드아웃 명령(RO)에 응답하여, 디바이스 컨트롤러(310)는 응답(R1)을 호스트(200)로 전송한다(S145). 아울러, 데이터 버퍼의 데이터를 호스트(200)로 전송한다(S150).
데이터 리드 아웃 명령(RO)은 리드 준비 명령(PR)에 따라 데이터 버퍼에 저장되어 있는 데이터를 호스트(200)로 읽어 가기 위한 명령으로, 데이터 트랜스퍼를 수반하는 명령이다. 데이터 리드 아웃 명령(RO)은 이전 데이터의 전송이 완료되어 데이터 버스 상태가 아이들 상태일 때, eMMC(300)로 전송될 수 있다.
도 9는 본 발명의 일 실시예에 따른 데이터 리드 동작 방법과 통상의 eMMC의 데이터 리드 동작 방법을 비교하기 위한 개략적인 타이밍도이다.
도 9의 (a)는 통상의 리드 동작 방법을 나타내고, 도 9의 (b)는 본 발명의 일 실시예에 따른 리드 동작 방법을 나타낸다.
도 9의 (a)에 도시된 통상의 리드 동작 방법에 따르면, 호스트가 명령 버스를 통해 데이터 리드 명령(RD, 911)을 eMMC로 보내면, eMMC는 데이터 리드 명령(RD, 911)에 응답하여 플래시 메모리로부터 데이터를 리드하여(912), 리드 데이터를 데이터 버스(DAT)를 통해 호스트로 전송한다(913). 호스트는 데이터 버스(DAT)를 통해 리드 데이터를 수신하여 호스트 메모리에 저장한다(914).
호스트는 데이터 리드 명령(RD, 911)에 상응한 리드 데이터(913)를 수신한 후에야 다음 데이터 리드 명령(RD, 915)를 eMMC로 보낼 수 있다.
따라서, 호스트는 데이터 리드 명령(RD, 911)을 전송한 후 리드 데이터(913)를 수신할 때까지 대기할 수 밖에 없다.
한편, 도 9의 (b)를 참조하면, 본 발명의 실시예에 따르면, 호스트(200)는 첫 번째 리드 준비 명령(RD, 921)를 eMMC(300)로 보낸다. eMMC(300)는 리드 준비 명령(RD, 441)에 응답하여 플래시 메모리로부터 데이터를 독출하여, 데이터 버퍼에 저장한다(922).
호스트(200)는 데이터 버퍼에 저장된 데이터를 읽어오기 위하여 데이터 리드 아웃 명령(RO, 923)를 eMMC(300)로 보낸다. eMMC(300)는 데이터 리드 아웃 명령(RO, 923)에 응답하여 데이터 버퍼에 저장된 데이터를 데이터 버스(DAT)를 통해 호스트로 전송한다(924). 호스트(200)는 데이터 버스(DAT)를 통해 리드 데이터를 수신하여 호스트 메모리에 저장한다(925). 한편, 호스트(200)는 데이터 전송(924)이 완료되지 않은 상태에서, 즉 데이터 전송 중에 다음 리드 준비 명령(PR, 926)을 eMMC(300)로 전송함으로써, 다음 리드 데이터를 미리 준비할 수 있도록 한다.
eMMC(300)는 리드 준비 명령(PR, 926)에 응답하여 플래시 메모리로부터 데이터를 독출하여, 데이터 버퍼에 저장한다(927).
이와 같은 방식으로, 호스트(200)는 데이터 전송 중에도 또는 eMMC(300)가 비지(busy) 상태일 때도, 리드 준비 명령(PR)을 eMMC(300)로 전송하여, 다음 리드 데이터를 미리 준비하게 함으로써, 데이터 리드 성능을 높일 수 있다. 즉, 리드 준비 명령(PR)을 미리 받아, 다음 리드 동작에 대한 준비(예컨대, 플래시 메모리에서 데이터 버퍼로 미리 데이터를 읽어 오는 준비)를 할 수 있기 때문에, 리드 성능을 향상시킬 수 있다.
도 9 (b)의 실시예에서는, 리드 아웃 명령(RO)과 리드 준비 명령(PR)은 일대일로 상응하나, 본 발명의 실시예가 이에 한정되는 것은 아니다. 다른 실시예에서는, 복수(2이상)의 리드 준비 명령(PR)으로 준비된 리드 데이터를 한 번의 리드 아웃 명령(RO)으로 호스트(200)로 읽어 올 수도 있다.
도 10은 본 발명의 다른 실시예에 따른 eMMC 시스템의 동작 방법을 나타내는 개략적인 타이밍도이다.
도 10을 참조하면, 호스트(200)는 제1 리드 준비 명령(PR, 951)을 eMMC(300)로 보낸다. eMMC(300)는 리드 준비 명령(PR, 951)에 응답하여 플래시 메모리로부터 데이터를 독출하여, 데이터 버퍼에 저장한다(952).
호스트(200)는 데이터 버퍼에 저장된 데이터를 읽어오기 위하여 데이터 리드 아웃 명령(RO, 953)를 eMMC(300)로 보낸다. eMMC(300)는 데이터 리드 아웃 명령(RO, 953)에 응답하여 데이터 버퍼에 저장된 데이터를 데이터 버스(DAT)를 통해 호스트로 전송한다(954). 호스트(200)는 데이터 버스(DAT)를 통해 리드 데이터를 수신하여 호스트 메모리에 저장한다(956).
데이터 전송 중(954), 호스트(200)는 제2 리드 준비 명령(PR, 957)과 제3 리드 준비 명령(PR, 959)를 연속적으로 eMMC(300)로 보낸다. eMMC(300)는 제2 리드 준비 명령(PR, 957)에 응답하여 플래시 메모리로부터 데이터를 독출하여 데이터 버퍼에 저장하고(958), 또한, 제3 리드 준비 명령(PR, 959)에 응답하여 플래시 메모리로부터 데이터를 독출하여 데이터 버퍼에 저장한다(961). 호스트(200)는 데이터 버퍼에 저장된 데이터를 읽어오기 전에 제3 리드 준비 명령(PR, 959)을 취소할 수 있다.
예컨대, 호스트(200)는 제3 리드 준비 명령에 대한 취소 명령(960)을 eMMC(300)로 전송할 수 있다. 취소 명령(960)은 그 전에 전송된 준비 명령들 중 일부 혹은 전부를 특정하여 취소할 수 있다. eMMC(300)는 제3 리드 준비 명령에 대한 취소 명령(960)에 응답하여 제3 리드 준비 명령(PR, 959)을 무효화한다. 예컨대, 제3 리드 준비 명령(PR, 959)에 따른 데이터 리드 동작을 수행하기 전이라면, 데이터 리드 동작을 수행하지 않고, 명령 레지스터에서 제3 리드 준비 명령을 삭제할 수 있다. 제3 리드 준비 명령(PR, 959)에 따른 데이터 리드 동작이 수행되어 리드된 데이터가 데이터 버퍼에 저장되어 있다면, 데이터 버퍼의 데이터를 삭제하거나 무효화할 수 있다.
호스트(200)는 데이터 버퍼에 저장된 데이터를 읽어오기 위하여 데이터 리드 아웃 명령(RO, 962)를 eMMC(300)로 보낸다. eMMC(300)는 데이터 리드 아웃 명령(RO, 962)에 응답하여 데이터 버퍼에 저장된 데이터(958)를 데이터 버스(DAT)를 통해 호스트로 전송한다(963). 호스트(200)는 데이터 버스(DAT)를 통해 리드 데이터를 수신하여 호스트 메모리에 저장한다(964).
도 11은 본 발명의 다른 실시예에 따른 데이터 리드 동작 방법과 통상의 eMMC의 데이터 리드 동작 방법을 비교하기 위한 개략적인 타이밍도이다.
도 11의 (a)는 통상의 리드 동작 방법을 나타내고, 도 11의 (b)는 본 발명의 다른 실시예에 따른 리드 동작 방법을 나타낸다.
도 11의 (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).
한편, 도 11의 (b)를 참조하면, 본 발명의 실시예에 따르면, 호스트(200)는 제1 리드 준비 명령(PR, 441)를 eMMC(300)로 보낸다. eMMC(300)는 제1 리드 준비 명령(PR, 441)에 대한 응답(R1, 442)을 호스트(200)로 전송한다. 아울러, 제1 리드 준비 명령(PR, 441)에 응답하여 플래시 메모리(CE0)로부터 데이터를 독출하여(461~462), 데이터 버퍼에 저장한다(463).
호스트(200)는 eMMC(300)로부터 응답(R1, 442)을 수신하면, 다음 리드 준비 명령(PR, 443)를 eMMC(300)로 보낸다. 즉, 호스트(200)는 제1 리드 준비 명령(PR, 441)에 대한 리드 데이터를 수신하지 않은 상태에서 eMMC(300)로 다음 데이터를 읽기 위한 명령인 제2 리드 준비 명령(PR, 443)를 eMMC(300)로 보낼 수 있다.
eMMC는 제2 리드 준비 명령(PR, 443)에 대한 응답(R1, 444)을 호스트(200)로 전송하고, 또한, 제2 리드 준비 명령(PR, 443)에 응답하여 플래시 메모리(CE1)로부터 데이터를 독출하여(471~472), 데이터 버퍼에 저장한다(473).
이와 같은 방식으로, 호스트(200)는 최대 멀티 큐 뎁쓰(Multi-Queue depth, N)의 리드 준비 명령(PR)을 보낼 수 있다. 예컨대, 멀티 큐 뎁쓰(N)가 4인 경우, 호스트(200)는 최대 4개까지 리드 준비 명령(PR)을 보낼 수 있다.
멀티 큐 뎁쓰(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)는 데이터 버퍼에 저장된 데이터를 읽어가기 위하여, 데이터 리드 아웃 명령(RO, 445)을 eMMC(300)로 전송한다. eMMC는 데이터 리드 아웃 명령(RO, 445)에 응답하여 응답(R1, 446)을 보내고, 또한, 데이터 버퍼에 저장된 데이터를 데이터 버스를 통해 호스트(200)로 전송한다. 이 때 전송되는 데이터(451)는 제1 리드 준비 명령(PR, 441)에 응답하여 플래시 메모리(CE0)로부터 리드된 데이터(463)일 수 있다. 데이터 리드 아웃 명령(RO, 445)은 본 발명의 실시예에 따른 데이터 리드 동작을 위해 호스트(200)와 eMMC(300) 간에 새롭게 정의된 명령일 수 있다.
호스트(200)는 데이터 버퍼에 저장된 다음 데이터를 읽어가기 위하여, 데이터 리드 아웃 명령(RO, 447)을 eMMC(300)로 전송한다. eMMC(300)는 데이터 리드 아웃 명령(RO, 447)에 응답하여 응답(R1, 448)을 보내고, 또한, 데이터 버퍼에 저장된 데이터를 데이터 버스를 통해 호스트(200)로 전송한다. 이 때 전송되는 데이터(452)는 제2 리드 준비 명령(PR, 443)에 응답하여 플래시 메모리(CE1)로부터 리드된 데이터(473)일 수 있다.
상술한 바와 같이, 본 발명의 실시예에 따르면, 통상의 기술 대비, 명령과 명령 사이의 아이들 타임(idle time)이 축소됨에 따라 리드 성능이 향상된다.
이와 같이, 리드 준비 명령(PR)을 미리 받아, 다음 리드 동작에 대한 준비(예컨대, 플래시 메모리에서 데이터 버퍼로 미리 데이터를 읽어 오는 준비)를 동시에 혹은 병렬적으로 할 수 있기 때문에, 리드 성능을 향상시킬 수 있다.
도 12는 본 발명의 일 실시예에 따른 라이트 동작 방법과 통상의 eMMC의 라이트 동작 방법을 비교하기 위한 개략적인 타이밍도이다.
도 12의 (a)는 통상의 라이트 동작 방법을 나타내고, 도 12의 (b)는 본 발명의 일 실시예에 따른 라이트 동작 방법을 나타낸다.
도 12의 (a)에 도시된 통상의 라이트 동작 방법에 따르면, 호스트가 명령 버스를 통해 라이트 명령(WR, 511)을 eMMC로 보내면, eMMC는 라이트 명령(WR, 511)에 대한 응답(R1, 512)을 명령 버스를 통해 호스트로 전송한다.
호스트는 응답(R1, 512)을 수신하면, 데이터 라이트 명령(WR, 511)에 연관된 데이터(DAT)를 데이터 버스를 통해 eMMC로 전송하고(521), eMMC는 호스트로부터 수신한 데이터(DAT)를 플래시 메모리(NAND)에 프로그램한다(525). eMMC가 호스트로부터 수신한 데이터(DAT)를 플래시 메모리에 프로그램 완료할 때까지는, eMMC는 비지(busy) 상태가 된다. eMMC는 데이터 버스 중의 하나(예컨대, DAT[0])를 통해 비지(busy) 상태임을 호스트로 알려줄 수 있다.
호스트는 플래시 메모리에 데이터 라이팅을 완료하기까지 대기한(513) 후에야 다음 데이터 라이트 명령(WR, 514)를 eMMC로 보낼 수 있다.
한편, 도 12의 (b)를 참조하면, 본 발명의 실시예에 따르면, 호스트(200)는 제1 라이트 명령(WR, 531)를 eMMC(300)로 보낸다. eMMC(300)는 제1 라이트 명령(WR, 531)에 대한 응답(R1, 532)을 호스트(200)로 전송한다.
호스트(200)는 응답(R1, 532)을 수신하면, 제1 라이트 명령(WR, 531)에 연관된 데이터(DAT)를 데이터 버스를 통해 eMMC로 전송하면서(541), 또한 제2 라이트 명령(WR, 533)를 eMMC(300)로 보낼 수 있다. eMMC(300)는 제1 라이트 명령(WR, 531)에 연관된 데이터(DAT, 541)를 플래시 메모리에 프로그램(545) 완료하기 전에 제2 라이트 명령(WR, 533)을 호스트(200)로부터 수신하고 이에 대한 응답(R1, 634)을 호스트(200)로 보낼 수 있다.
이와 같은 방식으로, 호스트(200)는 최대 멀티 큐 뎁쓰(Multi-Queue depth, N)의 라이트 명령(WR)을 보낼 수 있다. 예컨대, 멀티 큐 뎁쓰(N)가 4인 경우, 호스트(200)는 최대 4개까지 라이트 명령을 보낼 수 있다.
eMMC(300)는 순차적으로 플래시 메모리(370)에 데이터를 라이트할 수 있다(545, 546). 다른 실시예에서는, eMMC(300)는 병렬동작으로 플래시 메모리(370)에 데이터를 라이트할 수 있다. 예컨대, eMMC(300)는 멀티 플레인 프로그램(Multi plane program) 방식으로 플래시 메모리(370)의 제1 칩(CE0)에 데이터를 프로그램하는 동작과 플래시 메모리(370)의 제2 칩(CE1)에 데이터를 프로그램하는 동작을 병렬적으로 수행할 수 있다.
도 13은 본 발명의 또 다른 실시예에 따른 리드 동작 방법을 나타내는 플로우챠트이다.
이를 참조하면, 호스트(200)는 리드할 데이터의 크기를 지정하기 위한 크기 지정 명령(CMD_da)을 디바이스 컨트롤러(310)로 전송한다(S510). 디바이스 컨트롤러(310)는, 크기 지정 명령(CMD_da)에 응답하여 응답(R1)을 호스트(200)로 보내고(S515), 크기 지정 명령(CMD_da)의 데이터 크기를 명령 레지스터(325)에 저장한다.
호스트(200)는 eMMC로부터 응답(R1)을 받은 후, 어드레스 지정 명령(CMD_sa)을 디바이스 컨트롤러(310)로 전송한다(S520). 디바이스 컨트롤러(310)는, 어드레스 지정 명령(CMD_sa)에 응답하여 응답(R1)을 호스트(200)로 보내고(S525), 시작 어드레스를 명령 레지스터(325)에 저장한다.
이러한 과정(S510~S525)은 최대 멀티 큐 뎁쓰(N)만큼 반복될 수 있고, 또한 데이터 버스를 통해 이전 데이터가 전송되는 도중에도 이루어질 수 있다.
크기 지정 명령(CMD_da)와 어드레스 지정 명령(CMD_sa)은 상술한 리드 준비 명령(PR)에 해당할 수 있다. 즉, 리드 준비 명령(PR)이 하나의 명령이 아닌 둘 이상의 명령을 포함하는 명령 셋(command set)으로 구현될 수 있다.
디바이스 컨트롤러(310)는, 명령 레지스터(325)에 저장된 시작 어드레스 및 데이터 크기에 따라 플래시 메모리로 리드 명령을 보내어(S530), 플래시 메모리로부터 해당 데이터를 리드한다(S540). 리드한 데이터는 데이터 버퍼에 저장된다(S545).
이전 데이터의 전송이 완료되면(S550에서 YES인 경우), 호스트(200)는 데이터 리드 아웃 명령(CMD_ro)을 디바이스 컨트롤러(310)로 전송한다(S555). 호스트(200)로부터 데이터 리드아웃 명령(CMD_ro)에 응답하여, 디바이스 컨트롤러(310)는 응답(R1)을 호스트(200)로 전송한다(S560). 아울러, 데이터 버퍼의 데이터를 호스트로 전송한다(S565). 데이터 리드 아웃 명령(CMD_ro)은 상술한 데이터 리드 아웃 명령(RO)과 동일한 명령일 수 있다.
도 14는 본 발명의 또 다른 실시예에 따른 리드 동작 방법과 통상의 eMMC의 리드 동작 방법을 비교하기 위한 개략적인 타이밍도이다.
도 14의 (a)는 통상의 리드 동작 방법을 나타내고, 도 14의 (b)는 본 발명의 또 다른 실시예에 따른 멀티 큐 리드 동작 방법을 나타낸다.
도 14의 (a)에 도시된 통상의 리드 동작 방법에 따르면, 현 상태(current state)가 데이터 전송 상태일 때, 즉 데이터 버스를 통하여 데이터의 전송 중(610)에는 호스트는 특정 명령-예컨대, 이전 명령을 중단시키기 위한 stop 명령 abort 명령 등-을 제외하고는, 플래시 메모리로 데이터를 리드하거나 라이트하기 위한 명령을 전송할 수 없다.
호스트는 데이터 전송(610)이 완료된 후에야 통상의 데이터 리드 명령(620)을 eMMC로 보낼 수 있다. eMMC는 통상의 데이터 리드 명령(621, 623)에 응답하여 플래시 메모리로부터 데이터를 리드하고(tR, 625), 리드한 데이터를 호스트로 전송한다(627). eMMC가 플래시 메모리로부터 데이터를 리드하고 데이터를 호스트로 전송하는 동안(625, 627)에는 호스트는 다음 데이터 리드 명령을 보낼 수 없다.
따라서, 호스트는 데이터 리드 명령을 보낸 후 리드 데이터를 수신할 때까지 대기할 수 밖에 없다.
한편, 도 14의 (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)은 도 13에 도시된 크기 지정 명령(CMD_ds)에 해당하고, 어드레스 지정 명령(CMD58, 723)은 도 13에 도시된 어드레스 지정 명령(CMD_sa)에 해당한다. 또한, 리드 준비 명령(720)은 크기 지정 명령(CMD57)과 어드레스 지정 명령(CMD58, 723)을 포함하는 명령 셋으로 구현된다.
호스트(200)는 CMD57 및 CMD58로 구성된 리드 준비 명령을 N(1이상의 정수)회 eMMC(300)로 보낼 수 있다.
eMMC(300)는 리드 준비 명령(720)에 응답하여 플래시 메모리(370)로부터 데이터를 독출하여, 데이터 버퍼에 저장한다. 한편 전송중인 데이터(701)는 데이터 버퍼와 별도의 노말 버퍼에 저장될 수 있다.
호스트(200)는 이전 데이터(710)의 전송이 완료되면, 데이터 버퍼에 저장된 데이터(731~733)를 읽어가기 위하여, 데이터 리드 아웃 명령(CMD59, 726)을 eMMC(300)로 전송한다. eMMC(300)는 데이터 리드 아웃 명령(CMD59, 726)에 응답하여 응답(R1, 726)을 보내고, 또한, 데이터 버퍼에 저장된 데이터(731~733)를 데이터 버스를 통해 호스트(200)로 전송한다.
도 15는 본 발명의 다른 실시예에 따른 라이트 동작 방법을 나타내는 플로우챠트이다.
이를 참조하면, 호스트(200)는 라이트할 데이터의 크기를 지정하기 위한 크기 지정 명령(CMD_da)을 디바이스 컨트롤러(310)로 전송한다(S610). 디바이스 컨트롤러(310)는, 크기 지정 명령(CMD_da)에 응답하여 응답(R1)을 호스트(200)로 보내고(S615), 크기 지정 명령(CMD_da)의 데이터 크기를 명령 레지스터(325)에 저장한다.
호스트(200)는 eMMC(300)로부터 응답(R1)을 받은 후, 어드레스 지정 명령(CMD_sa)을 디바이스 컨트롤러(310)로 전송한다(S620). 디바이스 컨트롤러(310)는, 어드레스 지정 명령(CMD_sa)을 응답하여 응답(R1)을 호스트(200)로 보내고(S625), 시작 어드레스를 명령 레지스터(325)에 저장한다.
이러한 과정(S610~S625)은 최대 멀티 큐 뎁쓰(N)만큼 반복될 수 있고, 또한 데이터 버스를 통해 이전 데이터가 전송되는 도중에도 이루어질 수 있다(미도시). 또한, 디바이스 컨트롤러(310)가 이전 데이터의 프로그램을 위하여 플래시 메모리로 프로그램 명령을 인가하고(S630), 플래시 메모리로 데이터를 프로그램하는 도중(S640)에도 이루어 질 수 있다. 이 때, 전송중인 데이터 또는 플래시 메모리로 프로그램되는 데이터는 노말 버퍼에 저장될 수 있다.
이전 데이터의 전송이 완료되면(S650에서 YES인 경우), 호스트(200)는 데이터 라이트 인 명령(CMD_wr)을 디바이스 컨트롤러(310)로 전송한다(S655). 호스트(200)로부터 데이터 라이트 인 명령(CMD_wr)에 응답하여, 디바이스 컨트롤러(310)는 응답(R1)을 호스트(200)로 전송한다(S660). 그러면, 호스트(200)는 라이트 데이터를 eMMC(300)로 전송한다(S665).
eMMC(300)는 라이트 데이터를 데이터 버퍼에 저장한다(S670). 디바이스 컨트롤러(310)는 데이터 버퍼에 저장된 데이터의 프로그램을 위하여 플래시 메모리로 프로그램 명령을 인가하여(S675), 플래시 메모리로 데이터를 프로그램한다(S680).
도 15의 실시예에서, 크기 지정 명령(CMD_da)과 어드레스 지정 명령(CMD_sa)은 데이터 전송을 수반하지 않는 비데이터 트랜스퍼 명령의 일종인 라이트 준비 명령을 구성할 수 있다. 데이터 라이트 인 명령(CMD_wr)은 라이트 데이터의 전송을 수반하는 데이터 트랜스퍼 명령일 수 있다.
도 16은 본 발명의 다른 실시예에 따른 라이트 동작 방법과 통상의 eMMC의 라이트 동작 방법을 비교하기 위한 개략적인 타이밍도이다.
도 16의 (a)는 통상의 라이트 동작 방법을 나타내고, 도 16의 (b)는 본 발명의 다른 실시예에 따른 라이트 동작 방법을 나타낸다.
도 16의 (a)에 도시된 통상의 라이트 동작 방법에 따르면, 이전 데이터(810)의 전송이 완료된 후, 호스트는 라이트 명령(CMD, 821)과, 라이트 명령(CMD, 821)에 따른 데이터(812)를 eMMC로 보낸다. eMMC는 수신한 데이터(DAT-a, 812)를 플래시 메모리에 프로그램한다(tPRG1). 플래시 메모리에 데이터 프로그램이 완료되어야 데이터(DAT-a) 전송이 완료된다.
따라서, 호스트는 플래시 메모리에 데이터(DAT-a)의 프로그램이 완료되기까지 대기한 후 다음 라이트 명령(CMD, 822)와 이에 따른 데이터(DAT-b, 813)을 eMMC로 보낸다.
한편, 도 16의 (b)를 참조하면, 본 발명의 실시예에 따르면, 데이터 전송 중(831)에도, 호스트(200)는 라이트 준비 명령(CS, 841~844)을 eMMC(300)로 보낸다. 여기서는, 4개의 라이트 준비 명령(CS, 841~844)이 전송되는 것으로 가정하나, 라이트 준비 명령(CS)의 전송 횟수는 달라질 수 있다.
라이트 준비 명령(CS, 841~844)은 도 15에 도시된 바와 같이, 크기 지정 명령(CMD_ds)과 어드레스 지정 명령(CMD_sa)으로 구성될 수 있다.
eMMC(300)는 라이트 준비 명령(CS, 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)를 데이터 버퍼에 저장하고, 큐 데이터 버퍼에 저장된 데이터(DAT-a, DAT-b, DAT-c, DAT-d)를 플래시 메모리로 프로그램한다.
상술한 실시예에서는, eMMC를 예로 들어 설명하였으나, 본 발명의 실시예가 이에 한정되는 것은 아니며, 명령 버스와 데이터 버스를 별도로 구비하는 비휘발성 메모리 카드 및 이를 제어하는 호스트에는 모두 적용될 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100; eMMC 시스템
200; 호스트
300; eMMC 장치
210; OS/Host Firmware
215; 프로세서
220; RAM
230; 호스트 컨트롤러
310; 장치 컨트롤러
320; 호스트 인터페이스
325; 명령 레지스터
330; CPU
340; 메모리
360; ECC
365; 플래시 인터페이스
370; 플래시 메모리

Claims (32)

  1. 비휘발성 메모리 카드(non-volatile memory card)와 클락 버스, 명령 버스, 및 데이터 버스를 통해 연결되는 호스트의 동작 방법에 있어서,
    상기 명령 버스를 통해 상기 메모리 카드로 제1 명령을 송신하는 단계;
    상기 제1 명령에 상응하는 제1 데이터를 상기 데이터 버스를 통해 상기 메모리 카드로 전송하거나, 상기 메모리 카드로부터 수신하는 단계; 및
    상기 제1 데이터 전송 중에 또는 상기 제1 데이터 전송 전에 상기 명령 버스를 통해 제2 명령을 1회 이상 상기 메모리 카드로 전송하는 단계를 포함하고,
    상기 제2 명령은
    리드할 데이터의 크기를 나타내는 데이터 크기 정보 및 리드할 데이터의 시작 어드레스 정보를 포함하는 리드 준비 명령, 또는 라이트할 데이터의 크기를 나타내는 데이터 크기 정보 및 라이트할 데이터의 시작 어드레스 정보를 포함하는 라이트 준비 명령인 호스트의 동작 방법.
  2. 제1항에 있어서, 상기 제2 명령은
    상기 비휘발성 메모리 카드가 "비지" 상태일 때 전송되는 호스트의 동작 방법.
  3. 제2항에 있어서, 상기 비휘발성 메모리 카드의 "비지" 상태는
    상기 데이터 버스 중의 어느 하나의 라인에 의해 표시되는 호스트의 동작 방법.
  4. 제1항에 있어서, 상기 동작 방법은
    상기 명령 버스의 상태를 관리하기 위한 명령 버스 상태 머신을 동작시키는 단계; 및
    상기 데이터 버스의 상태를 관리하기 위한 데이터 버스 상태 머신을 상기 명령 버스 상태 머신과 독립적으로 동작시키는 단계를 더 포함하며,
    상기 데이터 버스 상태는 아이들 상태, 데이터 트랜스퍼 상태 및 응답 수신/대기 상태를 포함하고,
    상기 제2 명령은 상기 데이터 버스에 대한 상태가 데이터 트랜스퍼 상태 또는 응답 수신/대기 상태인 경우에 상기 메모리 카드로 전송되는 호스트의 동작 방법.
  5. 제1항에 있어서,
    상기 제1 명령은 데이터를 수반하는 명령이고,
    상기 제2 명령은 데이터를 수반하지 않는 명령인 호스트의 동작 방법.
  6. 제1항에 있어서, 상기 방법은
    상기 제2 명령의 전송 횟수를 관리하는 단계를 더 포함하는 호스트의 동작 방법.
  7. 제6항에 있어서, 상기 호스트의 동작 방법은
    호스트 멀티 큐 뎁스를 저장하는 단계를 더 포함하며,
    상기 제2 명령의 전송 횟수의 최대 값은 상기 호스트 멀티 큐 뎁스인 호스트의 동작 방법.
  8. 제7항에 있어서, 상기 호스트 멀티 큐 뎁스를 저장하는 방법은
    상기 비휘발성 메모리 카드로부터 Extended CSD 레지스터의 정보를 읽는 단계; 및
    상기 Extended CSD 레지스터 정보에 포함된 멀티 큐 뎁스를 추출하여 상기 호스트 멀티 큐 뎁스로 저장하는 단계를 포함하는 호스트의 동작 방법.
  9. 삭제
  10. 제1항에 있어서,
    상기 비휘발성 메모리 카드는 상기 제2 명령에 응답하여 비휘발성 메모리 장치로부터 데이터를 독출하여 상기 비휘발성 메모리 카드 내의 데이터 버퍼에 저장하고,
    상기 방법은
    상기 데이터 버퍼에 저장된 데이터를 상기 호스트로 읽어가기 위한 제3 명령을 상기 비휘발성 메모리 카드로 전송하는 단계를 더 포함하는 호스트의 동작 방법.
  11. 제10항에 있어서,
    상기 제3 명령은 상기 1회 이상의 제2 명령 전부 또는 일부를 특정하고,
    상기 비휘발성 메모리 카드는 상기 제3 명령에 응답하여 상기 특정된 명령에 상응하는 데이터만을 상기 호스트로 전송하는 호스트의 동작 방법.
  12. 제10항에 있어서, 상기 방법은
    상기 1회 이상의 제2 명령 전부 또는 일부를 특정하여 취소하기 위한 취소 명령을 상기 비휘발성 메모리 카드로 전송하는 단계를 더 포함하는 호스트의 동작 방법.
  13. 삭제
  14. 제1항에 있어서, 상기 방법은
    상기 1회 이상의 제2 명령 중 첫 번째 제2 명령에 상응하는 데이터를 데이터 버스를 통해 상기 비휘발성 메모리 카드로 전송하는 단계를 더 포함하며,
    상기 1회 이상의 제2 명령 중 두 번째 제2 명령은 상기 첫 번째 제2 명령에 상응하는 데이터가 상기 데이터 버스를 통해 전송되는 도중에 상기 비휘발성 메모리 카드로 전송되는 호스트의 동작 방법.
  15. 제1항에 있어서, 상기 방법은
    상기 제2 명령에 상응하는 데이터를 전송하기 위한 제3 명령을 상기 명령 버스를 통해 상기 비휘발성 메모리 카드로 전송하는 단계; 및
    상기 데이터 버스를 통해 상기 제2 명령에 상응하는 데이터를 상기 비휘발성 메모리 카드로 전송하는 단계를 더 포함하는 호스트의 동작 방법.
  16. 비휘발성 메모리 카드(non-volatile memory card)와 클락 버스, 명령 버스, 및 데이터 버스를 통해 연결되는 호스트를 포함하는 비휘발성 메모리 카드 시스템의 동작 방법에 있어서,
    상기 호스트가 상기 명령 버스를 통해 상기 메모리 카드로 제1 명령을 송신하는 단계;
    상기 호스트와 상기 메모리 카드 사이에 상기 데이터 버스를 통해 상기 제1 명령에 상응하는 제1 데이터가 전송되는 단계; 및
    상기 제1 데이터 전송 중에 상기 호스트가 상기 명령 버스를 통해 제2 명령을 상기 메모리 카드로 전송하는 단계를 포함하고,
    상기 제2 명령은
    리드할 데이터의 크기를 나타내는 데이터 크기 정보 및 리드할 데이터의 시작 어드레스 정보를 포함하는 리드 준비 명령, 또는 라이트할 데이터의 크기를 나타내는 데이터 크기 정보 및 라이트할 데이터의 시작 어드레스 정보를 포함하는 라이트 준비 명령인는 비휘발성 메모리 카드 시스템의 동작 방법.
  17. 제16항에 있어서, 상기 제2 명령을 상기 메모리 카드로 전송하는 단계는
    상기 호스트가 동일한 명령 타입의 상기 제2 명령을 복수(2이상)개 상기 메모리 카드로 전송하는 단계를 포함하며,
    상기 동작 방법은
    상기 메모리 카드가 상기 제2 명령을 순차적으로 수신하여 명령 레지스터에 저장하는 단계를 더 포함하는 비휘발성 메모리 카드 시스템의 동작 방법.
  18. 제17항에 있어서,
    상기 데이터 크기 정보 및 상기 시작 어드레스 정보는 상기 명령 레지스터에 저장되는 비휘발성 메모리 카드 시스템의 동작 방법.
  19. 비휘발성 메모리 카드(non-volatile memory card)와 클락 버스, 명령 버스, 및 데이터 버스를 통해 연결되는 호스트에 있어서,
    상기 호스트의 동작을 전반적으로 제어하는 프로세서; 및
    상기 프로세서에 전기적으로 연결되며, 상기 메모리 카드와 인터페이스하기 위한 호스트 컨트롤러를 포함하며,
    상기 호스트 컨트롤러는
    상기 명령 버스를 통해 상기 메모리 카드로 제1 명령을 송신하고, 상기 제1 명령에 상응하는 제1 데이터를 상기 데이터 버스를 통해 상기 eMMC로 전송하거나, 상기 eMMC로부터 수신하고, 상기 제1 데이터 전송 중에 또는 상기 제1 데이터 전송 전에 상기 명령 버스를 통해 제2 명령을 상기 메모리 카드로 전송하는 호스트.
  20. 제19항에 있어서, 상기 제2 명령은
    상기 비휘발성 메모리 카드가 "비지" 상태일 때 전송되는 호스트.
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
KR1020120102484A 2012-09-14 2012-09-14 비휘발성 메모리 카드를 제어하는 호스트, 이를 포함하는 시스템 및 이의 동작 방법 KR101932920B1 (ko)

Priority Applications (10)

Application Number Priority Date Filing Date Title
KR1020120102484A KR101932920B1 (ko) 2012-09-14 2012-09-14 비휘발성 메모리 카드를 제어하는 호스트, 이를 포함하는 시스템 및 이의 동작 방법
US14/025,334 US9389804B2 (en) 2012-09-14 2013-09-12 Host, system, and methods for transmitting commands to non-volatile memory card
TW102133275A TWI626544B (zh) 2012-09-14 2013-09-13 用於控制非揮發性記憶卡的主機、以及操作主機及系統的方法
DE102013110085.6A DE102013110085B4 (de) 2012-09-14 2013-09-13 Nicht-flüchtige speichervorrichtung
AU2013228071A AU2013228071A1 (en) 2012-09-14 2013-09-13 Host for controlling non-volatile memory card, system including the same, and methods operating the host and the system
NL2011439A NL2011439B1 (en) 2012-09-14 2013-09-13 Host for controlling non-volatile memory card, system including the same, and methods operating the host and the system.
CN201310421932.9A CN103678193B (zh) 2012-09-14 2013-09-16 控制非易失性存储卡的主机、包括主机的系统、操作方法
JP2013192280A JP6341642B2 (ja) 2012-09-14 2013-09-17 ホスト、不揮発性メモリ装置、及び不揮発性メモリカードシステム
US15/191,749 US10108373B2 (en) 2012-09-14 2016-06-24 Host, system, and methods for transmitting commands to non-volatile memory card
US16/133,111 US20190018615A1 (en) 2012-09-14 2018-09-17 Host for controlling non-volatile memory card, system including the same, and methods operating the host and the system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120102484A KR101932920B1 (ko) 2012-09-14 2012-09-14 비휘발성 메모리 카드를 제어하는 호스트, 이를 포함하는 시스템 및 이의 동작 방법

Publications (2)

Publication Number Publication Date
KR20140036094A KR20140036094A (ko) 2014-03-25
KR101932920B1 true KR101932920B1 (ko) 2019-03-18

Family

ID=49640124

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120102484A KR101932920B1 (ko) 2012-09-14 2012-09-14 비휘발성 메모리 카드를 제어하는 호스트, 이를 포함하는 시스템 및 이의 동작 방법

Country Status (8)

Country Link
US (3) US9389804B2 (ko)
JP (1) JP6341642B2 (ko)
KR (1) KR101932920B1 (ko)
CN (1) CN103678193B (ko)
AU (1) AU2013228071A1 (ko)
DE (1) DE102013110085B4 (ko)
NL (1) NL2011439B1 (ko)
TW (1) TWI626544B (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9166918B1 (en) * 2013-09-30 2015-10-20 Juniper Networks, Inc. Methods and apparatus for scheduling transmission of data in a network
US8935465B1 (en) * 2014-06-16 2015-01-13 Sandisk Technologies Inc. System and method of communicating command data in a master-slave environment
US9367392B2 (en) 2014-08-01 2016-06-14 Winbond Electronics Corporation NAND flash memory having internal ECC processing and method of operation thereof
US9851902B2 (en) 2014-10-09 2017-12-26 Memobit Technologies Ab Searching memory for a search key
US10067688B2 (en) * 2015-01-23 2018-09-04 Qualcomm Incorporated Storage resource management in virtualized environments
US10127172B2 (en) * 2015-06-22 2018-11-13 Qualcomm Technologies International, Ltd. Single SDIO interface with multiple SDIO units
US9542269B1 (en) * 2015-06-29 2017-01-10 SK Hynix Inc. Controller controlling semiconductor memory device and operating method thereof
CN105046296B (zh) * 2015-06-30 2018-06-22 上海玮舟微电子科技有限公司 安全数码卡的数据传输方法及装置
KR102615659B1 (ko) * 2016-07-08 2023-12-20 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법
KR102558947B1 (ko) * 2016-08-25 2023-07-25 에스케이하이닉스 주식회사 데이터 저장 장치
KR102618699B1 (ko) * 2016-09-28 2024-01-02 삼성전자주식회사 호스트에 의해 제어되는 스토리지 장치를 포함하는 컴퓨팅 시스템
CN107885671B (zh) 2016-09-30 2021-09-14 华为技术有限公司 一种非易失性内存的持久化方法和计算设备
CN108228405A (zh) * 2016-12-15 2018-06-29 北京兆易创新科技股份有限公司 一种数据传输方法及装置
US10394456B2 (en) * 2017-08-23 2019-08-27 Micron Technology, Inc. On demand memory page size
US11210019B2 (en) 2017-08-23 2021-12-28 Micron Technology, Inc. Memory with virtual page size
KR102430983B1 (ko) * 2017-09-22 2022-08-09 삼성전자주식회사 스토리지 장치 및 그 동작 방법
KR102536637B1 (ko) 2018-03-29 2023-05-26 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
KR102686917B1 (ko) * 2018-10-31 2024-07-19 삼성전자주식회사 스토리지 장치의 구동 방법, 이를 수행하는 스토리지 장치 및 이를 이용한 스토리지 시스템의 구동 방법
KR20210012439A (ko) * 2019-07-25 2021-02-03 삼성전자주식회사 마스터 지능 소자 및 이의 제어 방법
US11397684B2 (en) * 2019-11-13 2022-07-26 Sandisk Technologies Llc Command interface and pre-fetch architecture
CN111176566B (zh) * 2019-12-25 2023-09-19 山东方寸微电子科技有限公司 一种支持queue命令的eMMC读写控制方法及存储介质
EP3869315B1 (en) 2020-02-20 2024-07-31 Samsung Electronics Co., Ltd. Storage device and storage system including the same
WO2022133397A1 (en) * 2020-12-14 2022-06-23 Micron Technology, Inc. Exclusion regions for host-side memory address translation
US11734193B2 (en) 2020-12-14 2023-08-22 Micron Technology, Inc. Exclusion regions for host-side memory address translation
US11989458B2 (en) * 2022-09-12 2024-05-21 Western Digital Technologies, Inc. Splitting sequential read commands

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090094678A1 (en) * 2007-10-05 2009-04-09 Nokia Corporation Mulimode device

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0990980B1 (en) * 1990-11-09 2003-03-12 Seagate Technology LLC Multiple microcontroller hard disk drive control architecture
US5526484A (en) * 1992-12-10 1996-06-11 International Business Machines Corporation Method and system for pipelining the processing of channel command words
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
US7243185B2 (en) 2004-04-05 2007-07-10 Super Talent Electronics, Inc. Flash memory system with a high-speed flash controller
US6496192B1 (en) * 1999-08-05 2002-12-17 Matsushita Electric Industrial Co., Ltd. Modular architecture for image transposition memory using synchronous DRAM
JP2003233993A (ja) 2002-02-08 2003-08-22 Matsushita Electric Ind Co Ltd 不揮発性記憶装置の書き換え方法
KR100437454B1 (ko) * 2002-07-30 2004-06-23 삼성전자주식회사 소오스 싱크로너스 전송 방식을 이용한 비동기 메모리 및그것을 포함한 시스템
US6870774B2 (en) 2002-12-10 2005-03-22 Micron, Technology, Inc. Flash memory architecture for optimizing performance of memory having multi-level memory cells
JP4460867B2 (ja) * 2003-09-26 2010-05-12 東芝ストレージデバイス株式会社 インターフェース装置及びパケット転送方法
JP2006252079A (ja) 2005-03-09 2006-09-21 Kyodo Printing Co Ltd 情報記録媒体、情報通信システム、情報通信方法及び情報通信プログラム
JP2007058518A (ja) 2005-08-24 2007-03-08 Renesas Technology Corp メモリカード
DE102006004346A1 (de) * 2006-01-30 2007-10-18 Deutsche Thomson-Brandt Gmbh Datenbusschnittstelle mit abschaltbarem Takt
JP5158740B2 (ja) 2006-08-28 2013-03-06 株式会社メガチップス メモリシステム
KR101507975B1 (ko) 2007-09-19 2015-04-06 마벨 월드 트레이드 리미티드 솔리드 스테이트 메모리 제어기를 위한 플렉시블 시퀀서 디자인 아키텍쳐
US8266371B2 (en) * 2008-07-30 2012-09-11 Panasonic Corporation Non-volatile storage device, host device, non-volatile storage system, data recording method, and program
US20100131701A1 (en) 2008-11-25 2010-05-27 Samsung Electronics Co., Ltd. Nonvolatile memory device with preparation/stress sequence control
US8230138B2 (en) * 2008-11-28 2012-07-24 Panasonic Corporation Memory control device, data processor, and data read method
EP2377129A4 (en) 2008-12-09 2013-05-22 Rambus Inc NON-VOLATILE MEMORY DEVICE FOR SIMULTANEOUS AND OVERLAP MEMORY OPERATIONS
US8386736B2 (en) * 2008-12-18 2013-02-26 Spansion Llc Rapid memory buffer write storage system and method
CN101515221A (zh) 2009-03-17 2009-08-26 成都市华为赛门铁克科技有限公司 一种读数据的方法、装置和系统
US20100262979A1 (en) * 2009-04-08 2010-10-14 Google Inc. Circular command queues for communication between a host and a data storage device
KR20100115583A (ko) 2009-04-20 2010-10-28 삼성전자주식회사 데이터 저장 시스템
US8321647B2 (en) 2009-05-06 2012-11-27 Apple Inc. Multipage preparation commands for non-volatile memory systems
JP2010287128A (ja) * 2009-06-12 2010-12-24 Toshiba Corp コントローラ、記憶媒体、及び情報制御方法
US9003414B2 (en) * 2010-10-08 2015-04-07 Hitachi, Ltd. Storage management computer and method for avoiding conflict by adjusting the task starting time and switching the order of task execution
JP5296041B2 (ja) * 2010-12-15 2013-09-25 株式会社東芝 メモリシステムおよびメモリシステムの制御方法
JP5884276B2 (ja) 2011-03-08 2016-03-15 富士ゼロックス株式会社 静電荷像現像用トナー、トナーカートリッジ、静電荷像現像剤、プロセスカートリッジ及び画像形成装置
US20130019053A1 (en) * 2011-07-14 2013-01-17 Vinay Ashok Somanache Flash controller hardware architecture for flash devices

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090094678A1 (en) * 2007-10-05 2009-04-09 Nokia Corporation Mulimode device

Also Published As

Publication number Publication date
US20190018615A1 (en) 2019-01-17
DE102013110085B4 (de) 2023-12-21
NL2011439B1 (en) 2016-02-10
NL2011439A (en) 2014-03-18
JP2014059876A (ja) 2014-04-03
TW201418990A (zh) 2014-05-16
TWI626544B (zh) 2018-06-11
US10108373B2 (en) 2018-10-23
DE102013110085A1 (de) 2014-03-20
US9389804B2 (en) 2016-07-12
US20140082268A1 (en) 2014-03-20
AU2013228071A1 (en) 2014-04-03
CN103678193B (zh) 2018-02-16
JP6341642B2 (ja) 2018-06-13
CN103678193A (zh) 2014-03-26
US20160306594A1 (en) 2016-10-20
KR20140036094A (ko) 2014-03-25

Similar Documents

Publication Publication Date Title
KR101932920B1 (ko) 비휘발성 메모리 카드를 제어하는 호스트, 이를 포함하는 시스템 및 이의 동작 방법
KR101919903B1 (ko) 임베디드 멀티미디어 카드, 이를 제어하는 호스트, 및 이들의 동작 방법
KR101988260B1 (ko) 임베디드 멀티미디어 카드, 및 이의 동작 방법
KR102111741B1 (ko) 임베디드 멀티미디어 카드 및 이의 동작 방법
KR101934519B1 (ko) 저장 장치 및 그것의 데이터 전송 방법
US9741442B2 (en) System and method of reading data from memory concurrently with sending write data to the memory
CN108268414B (zh) 基于spi模式的sd卡驱动器及其控制方法
KR20160049200A (ko) 데이터 저장 장치의 작동 방법, 이를 포함하는 모바일 컴퓨팅 장치, 및 이의 작동 방법
US20140244904A1 (en) Memory device and computer system
TWI498743B (zh) 資料儲存系統以及其管理方法
WO2009115058A1 (zh) 提供闪存存储功能的主板及其存储方法
CN101976230B (zh) 通用序列总线传输转译器及输入请求同步传输方法
CN104636081B (zh) 数据存储系统以及其管理方法
CN110399322B (zh) 一种数据传输方法及乒乓dma架构
TW201409242A (zh) Usb控制裝置及其控制方法
JP2008276441A (ja) ホストコントローラ、半導体集積回路、及び、ホスト制御方法

Legal Events

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