KR102192242B1 - 메모리로 커맨드를 이슈하는 커맨드 이슈 방법 및 메모리의 커맨드 처리 방법 - Google Patents

메모리로 커맨드를 이슈하는 커맨드 이슈 방법 및 메모리의 커맨드 처리 방법 Download PDF

Info

Publication number
KR102192242B1
KR102192242B1 KR1020140021415A KR20140021415A KR102192242B1 KR 102192242 B1 KR102192242 B1 KR 102192242B1 KR 1020140021415 A KR1020140021415 A KR 1020140021415A KR 20140021415 A KR20140021415 A KR 20140021415A KR 102192242 B1 KR102192242 B1 KR 102192242B1
Authority
KR
South Korea
Prior art keywords
special
address
memory
function
host
Prior art date
Application number
KR1020140021415A
Other languages
English (en)
Other versions
KR20150100072A (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 KR1020140021415A priority Critical patent/KR102192242B1/ko
Priority to US14/628,931 priority patent/US9891865B2/en
Publication of KR20150100072A publication Critical patent/KR20150100072A/ko
Application granted granted Critical
Publication of KR102192242B1 publication Critical patent/KR102192242B1/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/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • 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/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

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

Abstract

본 발명은 메모리로 커맨드를 이슈하는 커맨드 이슈 방법에 관한 것이다. 본 발명의 커맨드 이슈 방법은, 정상 커맨드 및 어드레스를 상기 메모리로 전송하여 특수 기능을 이슈하는 단계, 그리고 복수의 정상 커맨드들 및 복수의 어드레스들을 메모리로 전송하여 특수 기능의 실행을 요청하는 단계로 구성된다. 정상 커맨드는 미리 정해진 정상 동작을 이슈하는 커맨드이고, 특수 기능은 정상 동작과 다른 동작이다.

Description

메모리로 커맨드를 이슈하는 커맨드 이슈 방법 및 메모리의 커맨드 처리 방법{COMMAND ISSUE METHOD FOR ISSUING COMMAND TO MEMORY AND COMMAND PROCESS METHOD OF MEMORY}
본 발명은 반도체 메모리에 관한 것으로, 더 상세하게는 메모리로 커맨드를 이슈하는 커맨드 이슈 방법 및 메모리의 커맨드 처리 방법에 관한 것이다.
반도체 메모리(semiconductor memory)는 실리콘(Si, silicon), 게르마늄(Ge, Germanium), 비소 갈륨(GaAs, gallium arsenide), 인화인듐(InP, indium phospide) 등과 같은 반도체를 이용하여 구현되는 기억장치이다. 반도체 메모리는 크게 휘발성 메모리(Volatile memory)와 불휘발성 메모리(Nonvolatile memory)로 구분된다.
휘발성 메모리는 전원 공급이 차단되면 저장하고 있던 데이터를 소실하는 메모리 장치이다. 휘발성 메모리는 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등을 포함한다. 불휘발성 메모리는 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 메모리 장치이다. 불휘발성 메모리는 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등을 포함한다.
본 발명의 목적은, 향상된 동작 성능을 갖는 커맨드 이슈 방법 및 커맨드 처리 방법을 제공하는 데에 있다.
메모리로 커맨드를 이슈하는 본 발명의 실시 예에 따른 커맨드 이슈 방법은, 정상 커맨드 및 상기 정상 커맨드에 대응하는 어드레스를 상기 메모리로 전송하여, 특수 기능을 이슈하는 단계; 그리고 복수의 정상 커맨드들 및 상기 복수의 정상 커맨드들에 각각 대응하는 복수의 어드레스들을 상기 메모리로 전송하여, 상기 특수 기능의 실행을 요청하는 단계를 포함하고, 상기 정상 커맨드는 미리 정해진 정상 동작을 이슈하는 커맨드이고, 상기 특수 기능은 상기 정상 동작과 다른 동작이다.
실시 예로서, 상기 정상 커맨드는 읽기 또는 쓰기 커맨드이고, 상기 정상 동작은 상기 읽기 또는 쓰기 커맨드에 따른 읽기 또는 쓰기 동작이다.
실시 예로서, 상기 복수의 정상 커맨드들은 동일한 커맨드들이고, 상기 복수의 어드레스들은 동일한 어드레스들이다.
실시 예로서, 상기 특수 기능에 대한 정보에 따라, 상기 복수의 정상 커맨드들 및 상기 복수의 어드레스들의 갯수들을 판별하는 단계를 더 포함한다.
실시 예로서, 상기 특수 기능에 대한 상기 정보는, 상기 특수 기능의 소요 시간을 포함한다.
실시 예로서, 상기 어드레스는 상기 특수 기능의 종류에 따라 변화한다.
실시 예로서, 제2 정상 커맨드 및 상기 제2 정상 커맨드에 대응하는 제2 어드레스를 상기 메모리로 전송하여, 상기 특수 기능의 이슈를 확인하는 단계를 더 포함한다.
실시 예로서, 제2 정상 커맨드 및 상기 제2 정상 커맨드에 대응하는 제2 어드레스를 상기 메모리로 전송하여, 상기 특수 기능의 진행 상태를 체크하는 단계를 더 포함한다.
실시 예로서, 상기 체크하는 단계에서 상기 특수 기능이 완료되지 않은 것으로 판별되면, 복수의 제2 정상 커맨드들 및 상기 복수의 제2 정상 커맨드들에 각각 대응하는 복수의 제2 어드레스들을 상기 메모리로 전송하여, 상기 특수 기능의 실행을 지속할 것을 요청하는 단계를 더 포함한다.
본 발명의 실시 예에 따른 메모리의 커맨드 처리 방법은, 제1 정상 커맨드 및 상기 제1 정상 커맨드에 대응하는 제1 어드레스를 수신하고, 상기 수신된 제1 정상 커맨드 및 상기 제2 어드레스에 응답하여 특수 기능을 식별하는 단계; 그리고 제2 정상 커맨드 및 상기 제2 정상 커맨드에 대응하는 제2 어드레스를 수신하고, 상기 수신된 제2 정상 커맨드 및 상기 제2 어드레스에 응답하여 상기 특수 기능을 수행하는 단계를 포함하고, 상기 정상 커맨드는 미리 정해진 정상 동작을 이슈하는 커맨드이고, 상기 특수 기능은 상기 정상 동작과 다른 동작이고, 상기 특수 기능이 미리 정해진 시간 동안 수행된 후, 상기 특수 기능이 완료되지 않더라도 상기 특수 기능의 실행은 중지된다.
실시 예로서, 제3 정상 커맨드 및 상기 제3 정상 커맨드에 대응하는 제3 어드레스를 수신하고, 상기 특수 기능이 중지된 경우 상기 수신된 제3 정상 커맨드 및 상기 제3 어드레스에 응답하여 상기 특수 동작을 재개하는 단계를 더 포함한다.
실시 예로서, 상기 제2 및 제3 정상 커맨드들은 동일한 커맨드들이고, 상기 제2 및 제3 어드레스들은 동일한 어드레스들이다.
실시 예로서, 제3 정상 커맨드 및 상기 제3 정상 커맨드에 대응하는 제3 어드레스를 수신하고, 상기 특수 기능이 중지되지 않고 완료된 경우 상기 제3 정상 커맨드 및 상기 제3 어드레스를 무시하는 단계를 더 포함한다.
실시 예로서, 제4 정상 커맨드 및 상기 제4 정상 커맨드에 대응하는 제4 어드레스를 수신하고, 상기 제4 정상 커맨드 및 상기 제4 어드레스에 응답하여 상기 특수 기능의 진행 상태에 대한 정보를 출력하는 단계를 더 포함한다.
실시 예로서, 상기 미리 정해진 시간은 상기 정상 동작에 할당되는 타임아웃 시간보다 짧다.
본 발명에 따르면, 정상 커맨드들 및 어드레스들을 이용하여 메모리에 특수 기능이 이슈되고, 복수의 정상 커맨드들 및 어드레스들을 처리하여 특수 기능이 단계적으로 수행된다. 따라서, 특수 기능의 수행에 따른 타임아웃이 방지되고, 향상된 동작 성능을 갖는 커맨드 이슈 방법 및 커맨드 처리 방법이 제공된다.
도 1은 본 발명의 제1 실시 예에 따른 컴퓨팅 장치를 보여주는 블록도이다.
도 2는 메모리 또는 외부 메모리를 액세스하는 컴퓨팅 시스템의 소프트웨어 계층을 보여주는 블록도이다.
도 3은 본 발명의 제2 실시 예에 따른 컴퓨팅 장치를 보여주는 블록도이다.
도 4는 본 발명의 실시 예에 따른 메모리를 보여주는 블록도이다.
도 5는 본 발명의 실시 예에 따라, 특수 동작을 수행하기 위해 제공되는 기능들을 보여주는 테이블이다.
도 6은 본 발명의 실시 예에 따른 특수 동작 수행 방법을 보여주는 순서도이다.
도 7은 특수 동작이 수행될 때, 호스트가 커맨드를 이슈하는 방법을 더 상세하게 보여주는 순서도이다.
도 8은 특수 동작이 수행될 때, 메모리가 커맨드를 처리하는 방법을 더 상세하게 보여주는 순서도이다.
도 9는 호스트 및 메모리가 특수 동작을 수행하는 예를 보여주는 순서도이다.
도 10은 호스트가 상태 체크를 수행하는 방법을 보여주는 순서도이다.
도 11은 상태 체크 및 그에 후속하는 특수 동작의 실행이 수행되는 예를 볼여주는 순서도이다.
도 12는 본 발명의 실시 예에 따른 소프트웨어 계층을 보여주는 블록도이다.
이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다.
도 1은 본 발명의 제1 실시 예에 따른 컴퓨팅 장치(100a)를 보여주는 블록도이다. 도 1을 참조하면, 컴퓨팅 장치(100a)는 프로세서(110), 메인 메모리(120), 모뎀(130), 사용자 인터페이스(140), 인터페이스(150), 메모리(160), 그리고 외부 메모리(170)를 포함한다.
프로세서(110)는 컴퓨팅 장치(100a)의 제반 동작을 제어하고, 논리 연산을 수행할 수 있다. 예를 들어, 프로세서(110)는 시스템-온-칩(SoC, System-on-Chip)으로 구성될 수 있다. 프로세서(110)는 범용 프로세서, 특수 목적 프로세서 등을 포함할 수 있다.
메인 메모리(120)는 프로세서(110)의 동작 메모리일 수 있다. 메인 메모리(120)는 프로세서(110)에 의해 구동되는 코드들 및 데이터를 저장할 수 있다. 메인 메모리(120)는 랜덤 액세스 메모리(RAM)일 수 있다. 메인 메모리(120)는 DRAM, SRAM, SDRAM 등과 같은 휘발성 랜덤 액세스 메모리를 포함할 수 있다. 메인 메모리(120)는 FRAM, PRAM, MRAM, RRAM 등과 같은 불휘발성 랜덤 액세스 메모리를 포함할 수 있다.
모뎀(130)은 프로세서(110)의 제어에 따라 외부 장치와 통신을 수행할 수 있다. 예를 들어, 모뎀(130)은 LTE (Long Term Evolution), 와이맥스(WiMax), GSM (Global System for Mobile communication), CDMA (Code Division Multiple Access), 블루투스(Bluetooth), NFC (Near Field Communication), 와이파이(WiFi), RFID (Radio Frequency IDentification) 등과 같은 다양한 무선 통신 방식들 중 적어도 하나에 기반하여 통신을 수행할 수 있다. 모뎀(130)은 프로세서(110)와 함께 하나의 반도체 집적 회로로 집적될 수 있다.
사용자 인터페이스(140)는 프로세서(110)의 제어에 따라 사용자와 통신할 수 있다. 예를 들어, 사용자 인터페이스(140)는 키보드, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서, 등과 같은 사용자 입력 인터페이스들을 포함할 수 있다. 사용자 인터페이스(140)는 LCD (Liquid Crystal Display), OLED (Organic Light Emitting Diode) 표시 장치, AMOLED (Active Matrix OLED) 표시 장치, LED, 스피커, 모터 등과 같은 사용자 출력 인터페이스들을 포함할 수 있다.
인터페이스(150)는 프로세서(110)와 저장 장치들 사이의 통신을 중개할 수 있다.
메모리(160)는 인터페이스(150)를 통해 프로세서(110)와 통신할 수 있다. 메모리(160)는 프로세서(110)에 의해 액세스될 수 있다. 메모리(160)는 불휘발성 메모리를 포함할 수 있다. 메모리(160)는 eMMC (embodied MultiMedia Card)를 포함할 수 있다.
외부 메모리(170)는 인터페이스(150)를 통해 프로세서(110)와 통신할 수 있다. 외부 메모리(170)는 프로세서(110)에 의해 액세스될 수 있다. 메모리(170)는 착탈 가능한 불휘발성 메모리일 수 있다. 메모리(170)는 MMC (MultiMedia Card)를 포함할 수 있다.
예시적으로, 컴퓨팅 장치(100a)는 스마트폰, 스마트태블릿 등과 같은 포터블 스마트 멀티미디어 장치일 수 있다.
프로세서(110), 메인 메모리(120), 모뎀(130), 사용자 인터페이스(140), 그리고 인터페이스(150)는 메모리(160) 또는 외부 메모리(170)의 호스트(HOST)로 동작할 수 있다.
도 2는 메모리 또는 외부 메모리(160/170)를 액세스하는 컴퓨팅 시스템(100a)의 소프트웨어 계층(SWH)을 보여주는 블록도이다. 도 1 및 도 2를 참조하면, 소프트웨어 계층(SWH)은 어플리케이션(APP), 운영체제(OS), 장치 드라이버(DD), 그리고 메모리(160/170)를 포함한다.
어플리케이션들(APP)은 프로세서(110)에 의해 구동될 수 있다. 어플리케이션들(APP)은 운영체제(OS) 상에서 구동될 수 있다. 어플리케이션들(APP)은 운영체제(OS)로부터 할당된 자원(예를 들어, 메모리, 연산력 등)을 이용하여, 사용자(예를 들어, 컴퓨팅 장치(100a)의 사용자)의 요청에 따른 또는 미리 정해진 스케줄에 따라, 메모리(160/170)를 액세스할 수 있다.
어플리케이션들(APP)은 다양한 목적을 수행하기 위한 다양한 소프트웨어들을 포함할 수 있다. 어플리케이션들(APP)은 워드프로세서, 스프레드시트, 데이터베이스, 멀티미디어 콘텐츠의 생성 및 재생을 위한 소프트웨어 등을 포함할 수 있다. 어플리케이션들(APP)은 메모리(160/170)의 효율적인 관리를 지원하기 위한 소프트웨어를 포함할 수 있다.
운영체제(OS)는 프로세서(110)에 의해 구동될 수 있다. 운영체제(OS)는 컴퓨팅 시스템(100a)의 자원(예를 들어, 메모리, 연산력 등)을 관리할 수 있다. 운영체제(OS)는 어플리케이션들(APP)에 자원(예를 들어, 메모리, 연산력 등)을 배분할 수 있다. 운영체제(OS)는 어플리케이션들(APP)의 요청에 따라, 컴퓨팅 장치(100a)의 하드웨어를 액세스할 수 있다.
장치 드라이버(DD)는 운영체제(OS)에 의해 생성되는 하드웨어 액세스 요청을 하드웨어에 의해 식별 가능한 명령으로 변환할 수 있다. 예시적으로, 운영체제(OS)는 자원을 관리하는 논리 명령을 생성하고, 장치 드라이버(DD)는 운영체제(OS)에 의해 생성된 논리 명령을 물리 명령으로 변환할 수 있다.
메모리(160/170)는 장치 드라이버(DD)로부터 전송되는 명령에 의해 액세스될 수 있다.
어플리케이션들(APP), 운영체제(OS), 그리고 장치 드라이버(DD)는 메모리(160/170)의 호스트(HOST)일 수 있다.
통상적인 스마트 멀티미디어 장치에서, 운영체제(OS)는 어플리케이션들(APP)에 루트(root) 권한을 부여하지 않는다. 즉, 어플리케이션들(APP)은 컴퓨팅 장치(100a)의 구성 요소들에 직접 접근할 수 없다. 어플리케이션들(APP)은 운영체제(OS)를 통해서, 운영체제(OS)가 부여한 권한만을 이용해서, 운영체제(OS)에 의해 분배된 자원을 액세스한다.
어플리케이션들(APP)에 루트 권한이 부여되지 않으면, 메모리(160) 또는 외부 메모리(170)에 특수 동작들이 제공되어도, 어플리케이션들(APP)은 특수 동작들을 이용할 수 없다.
예시적으로, 메모리(160) 또는 외부 메모리(170)는 SD (Secure Digital) 카드의 스펙(specification)에 따라 제조될 수 있다. SD 카드의 스펙은 정상 커맨드 외에, 판매자 특화 커맨드(vendor specific command)를 허용한다. 정상 커맨드는 읽기 동작, 쓰기 동작 등과 같이 통상적으로 사용되는 동작들을 이슈하는 읽기 커맨드, 쓰기 커맨드 등을 포함할 수 있다. 판매자 특화 커맨드는 판매자가 동작을 정의할 수 있는 커맨드이다. 예를 들어, 메모리(160) 또는 외부 메모리(170)의 용이한(easy) 테스트를 지원하기 위한 동작, 메모리(160) 또는 외부 메모리(170)의 디버그를 지원하기 위한 동작 등이 특수 동작들로 정의되고, 판매자 특화 커맨드에 의해 실행될 수 있다.
컴퓨팅 장치(100a)의 정상 동작 시에, 메모리(160) 또는 외부 메모리(170)의 특수 동작들이 사용되면, 컴퓨팅 장치(100a)의 동작 성능이 향상될 수 있다. 예를 들어, 어플리케이션들(APP)에 의해 특수 동작들이 사용되고, 컴퓨팅 장치(100a)의 동작 성능이 향상될 수 있다.
그러나, 컴퓨팅 장치(100a)에서 구동되는 운영체제(OS)가 어플리케이션들(APP)에 루트 권한을 부여하지 않는 경우, 어플리케이션들(APP)은 읽기, 쓰기 등과 같은 정상 커맨드들을 이슈할 수 있으나, 판매자 특화 커맨드를 이슈할 수 없다.
도 3은 본 발명의 제2 실시 예에 따른 컴퓨팅 장치(100b)를 보여주는 블록도이다. 도 3을 참조하면, 컴퓨팅 장치(100b)는 프로세서(110), 메인 메모리(120), 모뎀(130), 사용자 인터페이스(140), 인터페이스(150), 메모리(160'), 외부 메모리(170), 그리고 리더(180)를 포함한다.
도 1의 컴퓨팅 장치(100a)와 비교하면, 컴퓨팅 장치(100b)는 리더(180)를 더 포함한다. 리더(180)는 인터페이스(150)를 통해 프로세서(110)와 통신할 수 있다. 리더(180)는 프로세서(110)의 제어에 따라, 외부 메모리(170)를 제어할 수 있다. 컴퓨팅 장치(110b)의 메모리(160')는 하드 디스크 드라이브(HDD), 솔리드 스테이트 드라이브(SSD) 등과 같은 대용량의 불휘발성 저장 장치를 포함할 수 있다. 컴퓨팅 장치(100b)는 개인용 컴퓨터, 노트북 컴퓨터 등과 같은 범용 컴퓨터일 수 있다.
프로세서(110), 메인 메모리(120), 모뎀(130), 사용자 인터페이스(140), 인터페이스(150), 메모리(160') 및 리더(180)는 외부 메모리(170)의 호스트(HOST)로 동작할 수 있다.
예시적으로, 컴퓨팅 장치(100b)의 소프트웨어 계층은 도 2에 도시된 소프트웨어 계층(SWH)과 동일할 수 있다. 예시적으로, 컴퓨팅 장치(100b)가 범용 컴퓨터인 경우, 운영체제(OS)는 어플리케이션들(APP)에 루트 권한을 부여할 수 있다. 그러나, 컴퓨팅 장치(100b)가 범용 컴퓨터인 경우, MMC와 같은 외부 메모리(170)는 리더(180)를 통해 호스트(HOST)와 연결된다.
리더(180)는 미리 정해진 통신 프로토콜에 따라 인터페이스(150)와 통신한다. 예를 들어, 리더(180)는 USB 프로토콜에 따라 인터페이스(150)와 통신할 수 있다. USB 프로토콜은 읽기, 쓰기 등과 같은 정상 커맨드들을 이슈하는 기능을 지원하지만, 외부 저장소(170)에 정의된 판매자 특화 커맨드를 이슈하는 기능을 지원하지 않는다. 따라서, 외부 메모리(170)가 리더(180)를 통해 인터페이스(150)에 연결되면, 외부 메모리(170)에 특수 동작들이 제공되어도, 어플리케이션들(APP)은 특수 동작들을 이용할 수 없다.
도 1을 참조하여 설명된 바와 같이, 스마트 멀티미디어 장치와 같은 컴퓨팅 장치(100a)의 운영체제(OS)는 어플리케이션들(APP)에 루트 권한을 부여하지 않을 수 있다. 이 경우, 특수 동작들이 MMC, eMMC 등과 같은 메모리(160/170)에 제공되어도, 어플리케이션들(APP)은 특수 동작들을 실행하기 위한 특수 커맨드들을 이슈할 수 없다. 마찬가지로, 도 3을 참조하여 설명된 바와 같이, 범용 컴퓨터와 같은 컴퓨팅 장치(100b)에서 메모리(170)가 리더(180)를 통해 호스트(HOST)에 연결된 경우, 특수 동작들이 MMC, eMMC 등과 같은 메모리에 제공되어도, 어플리케이션들(APP)은 특수 동작들을 실행하기 위한 특수 커맨드들을 이슈할 수 없다.
이와 같은 문제를 해결하기 위하여, 본 발명의 실시 예에 따른 컴퓨팅 장치(100a 또는 100b)는 정상 커맨드 및 어드레스를 이용하여, 특수 동작을 이슈할 수 있다. 예를 들어, 컴퓨팅 장치(100a 또는 100b)에서 구동되는 어플리케이션들(APP)은 메모리(160/170)에서 제공되는 특수 동작을 선택할 수 있다. 어플리케이션들(APP)은 미리 정해진 규칙에 따라, 선택된 특수 동작에 대응하는 정상 커맨드 및 어드레스를 선택할 수 있다. 선택된 정상 커맨드 및 어드레스를 이슈함으로써, 어플리케이션들(APP)은 메모리(160/170)에 특수 동작을 이슈할 수 있다.
도 4는 본 발명의 실시 예에 따른 메모리(160/170)를 보여주는 블록도이다. 예시적으로, 메모리(160/170)는 도 1을 참조하여 설명된 메모리(160), 즉 eMMC일 수 있다. 메모리(160/170)는 도 1 및 도 3을 참조하여 설명된 외부 메모리(170), 즉 MMC일 수 있다. 도 4를 참조하면, 메모리(160/170)는 불휘발성 메모리(210), 컨트롤러(220), 랜덤 액세스 메모리(230), 그리고 호스트 인터페이스(240)를 포함한다.
불휘발성 메모리(210)는 플래시 메모리, FRAM, PRAM, MRAM, RRAM, EEPROM 등을 포함할 수 있다.
컨트롤러(220)는 불휘발성 메모리(210)를 제어할 수 있다. 컨트롤러(220)는 호스트 인터페이스(240)를 통해 수신되는 커맨드 및 어드레스에 응답하여, 불휘발성 메모리(210)를 액세스할 수 있다.
랜덤 액세스 메모리(230)는 컨트롤러(220)의 동작 메모리일 수 있다. 랜덤 액세스 메모리(230)는 버퍼 메모리 또는 캐시 메모리일 수 있다. 랜덤 액세스 메모리(230)는 SRAM, DRAM, SDRAM, FRAM, PRAM, MRAM, RRAM 등과 같은 휘발성 또는 불휘발성 랜덤 액세스 메모리를 포함할 수 있다.
호스트 인터페이스(240)는 호스트와의 통신을 중개할 수 있다.
컨트롤러(220)는 호스트 인터페이스(240)를 통해 정상 커맨드 및 어드레스를 수신하고, 수신된 정상 커맨드 및 어드레스에 따라 불휘발성 메모리(210)를 액세스할 수 있다. 컨트롤러(220)는 호스트 인터페이스(240)를 통해, 미리 정해진 규칙에 따른 정상 커맨드 및 어드레스를 수신하고, 수신된 정상 커맨드 및 어드레스에 응답하여 특수 동작을 수행할 수 있다.
도 5는 본 발명의 실시 예에 따라, 특수 동작을 수행하기 위해 제공되는 기능들을 보여주는 테이블이다. 도 1 내지 도 5를 하면, 이슈 기능들, 실행 기능, 확인 기능, 그리고 상태 체크 기능이 제공될 수 있다.
이슈 기능은, 다양한 특수 동작들 중 하나의 특수 동작을 메모리(160/170)에 이슈하는 기능일 수 있다. 실행 기능은, 메모리(160/170)에 이슈된 특수 동작의 실행을 지시하는 기능일 수 있다. 확인 기능은, 이슈된 특수 동작이 무엇인지 확인을 요청하는 기능일 수 있다. 상태 체크 기능은 메모리(160/170)의 동작 상태에 대한 정보를 요청하는 기능일 수 있다.
이슈 기능은 스캔 및 읽기 리클레임, 병합 , 판매자 인증, 펌웨어 업데이트, 디스크 정보, 전체 블록 소거 등과 같은 다양한 특수 동작들 중 하나의 특수 동작을 이슈할 수 있다.
스캔 및 읽기 리클레임은, 메모리(160/170)의 모든 메모리 블록들을 스캔하고, 모든 메모리 블록들 중 읽기 리클레임이 필요한 메모리 블록들에 대해 읽기 리클레임을 실행하는 동작일 수 있다. 예시적으로, 스캔 및 읽기 리클레임은, 메모리(160/170)가 플래시 메모리를 포함하는 경우에 제공될 수 있다. 읽기 리클레임은 메모리 블록에 저장된 데이터의 열화 정도를 점검하고, 기준치 이상 열화된 데이터를 읽어 다른 메모리 블록에 기입하는 동작일 수 있다.
병합은, 메모리(160/170)의 메모리 블록들 중 자유 메모리 블록을 생성하는 동작일 수 있다. 예시적으로, 병합은, 메모리(160/170)가 플래시 메모리를 포함하는 경우에 제공될 수 있다. 병합은, 메모리 블록들 중 유효 데이터와 무효 데이터를 저장하는 제1 메모리 블록들로부터 유효 데이터를 읽어 자유 메모리 블록에 저장하고, 제1 메모리 블록들을 소거하여 자유 메모리 블록으로 생성하는 동작일 수 있다.
판매자 인증은, 메모리(160/170)의 판매자에 대한 인증을 요청하는 동작일 수 있다. 예시적으로, 판매자 인증은, 미리 정해진 판매자 서명 데이터를 요청하는 동작일 수 있다. 펌웨어 업데이트는, 메모리(160/170)의 펌웨어의 업데이트를 요청하는 동작일 수 있다. 디스크 정보는, 메모리(160/170)의 용량, 속도 클래스와 같은 기본 정보를 요청하는 동작일 수 있다. 전체 블록 소거는, 메모리(160/170)의 전체 메모리 블록들의 소거를 요청하는 동작일 수 있다.
특수 동작들을 수행하기 위한 기능들에, 각각 커맨드 및 어드레스가 할당될 수 있다. 어드레스는 시작 섹터 번호, 섹터 오프셋, 그리고 섹터 카운트를 포함할 수 있다.
이슈 기능 및 실행 기능에 쓰기 커맨드가 할당될 수 있다. 확인 기능 및 상태 체크 기능에 읽기 커맨드가 할당될 수 있다. 예시적으로, 호스트(HOST)로부터 메모리(160/170)로 전달될 정보가 존재하는 기능에 쓰기 커맨드가 할당될 수 있다. 메모리(160/170)로부터 호스트(HOST)로 전달될 정보가 존재하는 기능에 읽기 커맨드가 할당될 수 있다.
시작 섹터 번호는, 기능들을 구분하기 위한 기준일 수 있다. 예를 들어, 시작 섹터 번호는 메모리(160/170)의 하나의 클러스터의 시작 섹터 번호일 수 있다. 시작 섹터 번호는 메모리(160/170)에 저장된 파일의 시작 섹터 번호일 수 있다. 시작 섹터 번호는 특수 동작의 수행을 위해 생성된 더미 파일의 시작 섹터 번호일 수 있다. 예시적으로, 시작 섹터 번호는 '0x80008000'인 것으로 가정된다.
섹터 오프셋은, 선택된 기능에 할당된 섹터가 시작 섹터로부터 몇 번째 섹터인지를 가리킬 수 있다. 스캔 및 읽기 리클레임을 이슈하는 기능 및 상태 체크 기능에 할당된 섹터 오프셋은 '1'일 수 있다. 즉, 스캔 및 읽기 리클레임을 이슈하는 기능 및 상태 체크 기능에 할당된 섹터의 번호는 시작 섹터의 다음 섹터의 번호인 '0x80008001'일 수 있다. 병합을 이슈하는 기능에 할당된 섹터 오프셋은 '2'일 수 있다. 즉, 병합을 이슈하는 기능에 할당된 섹터의 번호는 '0x80008002'일 수 있다.
판매자 인증을 이슈하는 기능, 펌웨어 업데이트를 이슈하는 기능, 디스크 정보를 이슈하는 기능, 그리고 전체 블록 소거를 이슈하는 기능에 각각 '3', '4', '5', '6'의 섹터 오프셋들이 할당될 수 있다. 즉, 판매자 인증을 이슈하는 기능, 펌웨어 업데이트를 이슈하는 기능, 디스크 정보를 이슈하는 기능, 그리고 전체 블록 소거를 이슈하는 기능에 할당된 섹터의 번호들은 각각 '0x80008003', '0x80008004', '0x80008005', '0x80008006'일 수 있다.
실행 기능 및 확인 기능에 '0'의 섹터 오프셋이 할당될 수 있다. 즉, 실행 기능 및 확인 기능에 할당된 섹터의 번호는 시작 섹터의 번호인 '0x80008000'일 수 있다.
도 5에 도시된 바와 같이, 호스트(HOST)는 미리 정해진 규칙에 따라 정상 커맨드 및 어드레스를 메모리(160/170)로 전송함으로써, 특수 동작을 이슈할 수 있다. 메모리(160/170)는 수신된 정상 커맨드 및 어드레스가 미리 정해진 규칙에 부합하는 경우, 수신된 정상 커맨드 및 어드레스를 특수 동작과 연관된 기능으로 식별할 수 있다.
예시적으로, 도 5에 도시된 바와 같은 규칙은, 호스트(HOST) 및 메모리(160/170) 모두가 미리 알고 있을 수 있다. 예시적으로, 호스트(HOS)는 메모리(160/170)로부터 도 5에 도시된 바와 규칙을 읽어 사용할 수 있다. 호스트(HOST)는 메모리(160/170)의 식별자를 검출하고, 메모리(160/170)에 적합한 규칙을 원격으로 다운로드할 수 있다.
도 5에서, 특수 동작을 수행하기 위한 구체적인 기능들이, 구체적인 커맨드들 및 구체적인 어드레스들을 참조하여 설명되었다. 그러나, 도 5에 도시된 기능들 및 그와 연관된 커맨드들과 어드레스들은 예시적인 것이다.
특수 동작을 수행하기 위한 기능들은 도 5에 도시된 기능들 외에 추가적인 기능이 제공될 수 있고, 도 5에 도시된 기능들 중 일부는 사용되지 않을 수 있다. 특수 동작을 수행하기 위한 기능들에 할당되는 커맨드들 및 어드레스들 또한 도 5에 도시된 예들로 한정되지 않는다. 특수 동작을 수행하기 위한 기능들에 할당되는 커맨드들 및 어드레스들은, 정상 커맨드들을 사용하고, 서로 구분될 수 있는 차이점을 갖는 것으로 충분하여, 도 5에 도시된 예로 한정되지 않는다.
예시적으로, 도 5를 참조하여 설명된 바와 같이, 메모리(160/170)에서 지원되는 특수 동작들은 스캔 및 읽기 리클레임, 병합, 펌웨어 업데이트, 전체 블록 소소거와 같이 상대적으로 긴 소요 시간(제1 소요 시간)을 필요로 하는 동작들을 포함할 수 있다. 정상 커맨드들에 따른 정상 동작들, 예를 들어 읽기 동작 및 쓰기 동작은 미리 정해진 수행 시간(제2 시간)을 가질 수 있다. 예를 들어, 제2 시간은 호스트(HOST)에 의해, 또는 메모리(160/170)의 스펙에 의해 정의될 수 있다.
제2 시간은 제1 시간보다 짧을 수 있다. 즉, 특수 동작이 수행되는 동안, 정상 커맨드들에 할당된 제2 시간이 경과할 수 있다. 이때, 메모리(160/170)에서 타임아웃이 발생하고, 메모리(160/170)에서 에러가 발생한 것으로 처리될 수 있다. 이와 같은 문제를 방지하기 위하여, 본 발명의 실시 예에 따른 컴퓨팅 장치(100a/100b)는 특수 동작을 복수의 실행 루프들로 분할하여 실행한다. 특수 동작의 각 실행 루프의 소요 시간은 제2 시간보다 짧게 설정된다. 특수 동작이 복수의 실행 루프들로 분할하여 수행되면, 메모리(160/170)에서 타임아웃이 발생하는 것이 방지될 수 있다.
도 6은 본 발명의 실시 예에 따른 특수 동작 수행 방법을 보여주는 순서도이다. 도 1 내지 도 4, 그리고 도 6을 참조하면, S110 단계에서, 정상 커맨드 및 어드레스를 이용하여 특수 동작이 이슈된다.
S120 단계에서, 복수의 정상 커맨드들 및 복수의 어드레스들을 이용하여 특수 동작이 실행된다. 각 정상 커맨드 및 어드레스는 특수 동작의 하나의 실행 루프를 실행할 것을 요청할 수 있다. 즉, 컴퓨팅 장치(100a/100b)는 복수의 정상 커맨드들 및 복수의 어드레스들을 이용하여, 특수 동작을 복수의 실행 루프들로 분할하여 수행할 수 있다.
도 7은 특수 동작이 수행될 때, 호스트(HOST)가 커맨드를 이슈하는 방법을 더 상세하게 보여주는 순서도이다. 도 1 내지 도 4, 그리고 도 7을 참조하면, S210 단계에서, 호스트(HOST)는 이슈 기능에 대응하는 정상 커맨드 및 어드레스를 메모리(160/170)로 전송함으로써, 특수 동작을 이슈할 수 있다.
S220 단계에서, 실행 루프의 수가 판별된다. 예시적으로, 각 특수 동작의 실행 루프의 수는, 각 특수 동작의 종류에 따라 미리 정의되어 있을 수 있다. 호스트(HOST)는 이슈된 특수 동작의 종류에 따라, 실행 루프의 수를 판별할 수 있다. 실행 루프의 수는 각 특수 동작의 소요 시간에 따라 결정될 수 있다. 각 특수 동작의 소요 시간이 길수록, 실행 루프의 수는 증가할 수 있다. 각 특수 동작의 소요 시간이 짧을수록, 실행 루프의 수는 감소할 수 있다.
예시적으로, 실행 루프의 수는 둘 이상의 특수 동작들에 대해 공통적으로 정의된 기본값일 수 있다. 호스트(HOST)는 미리 정의된 기본값을 실행 루프의 수로 판별할 수 있다. 예시적으로, 실행 루프의 수에 대한 정보는 도 5에 도시된 규칙과 함께 저장 및 관리될 수 있다.
S230 단계에서, 호스트(HOST)는 실행 기능에 대응하는 정상 커맨드 및 어드레스를 메모리(160/170)로 전송함으로써, 특수 동작의 실행을 요청할 수 있다.
S240 단계에서, 호스트(HOST)는 최대 루프인지 판별한다. 예를 들어, 호스트(HOST)는 S230 단계의 실행 기능이 수행된 횟수가 S220 단계에서 판별된 실행 루프의 수에 도달했는지 판별할 수 있다. 최대 루프에 도달하지 않았으면, 즉 실행 기능이 수행된 횟수가 실행 루프의 수보다 적으면, 호스트(HOST)는 S230 단계를 다시 수행할 수 있다. 최대 루프에 도달했으면, 즉 실행 기능이 수행된 횟수가 실행 루프의 수에 도달했으면, 호스트(HOST)는 실행 기능을 요청하는 것을 중지할 수 있다.
도 8은 특수 동작이 수행될 때, 메모리(160/170)가 커맨드를 처리하는 방법을 더 상세하게 보여주는 순서도이다. 도 1 내지 도 4, 그리고 도 8을 참조하면, S310 단계에서, 메모리(160/170)는 정상 커맨드 및 어드레스에 기반하여 특수 동작과 연관된 기능을 식별할 수 있다. 예를 들어, 메모리(160/170)는 정상 커맨드 및 어드레스가 도 5에 도시된 규칙에 따라 수신될 때, 특수 동작과 연관된 기능이 이슈된 것으로 식별할 수 있다.
식별된 기능이 이슈 기능인 경우, 메모리(160/170)는 특수 동작 모드를 선택할 수 있다(S320 단계 및 S330 단계). 메모리(160/170)는 특수 동작 모드를 선택하고, 특수 동작의 수행을 준비할 수 있다.
식별된 기능이 이슈 기능 및 실행 기능이 아닌 경우, 메모리(160/170)는 해당 기능(예를 들어, 확인 기능 또는 상태 체크 기능)을 수행할 수 있다(S320 단계, S340 단계 및 S350 단계).
식별된 기능이 실행 기능인 경우, 메모리(160/170)는 이슈된 특수 동작이 완료되었는지 판별할 수 있다(S320 단계, S340 단계 및 S360 단계). 이슈된 특수 동작이 완료된 경우, 메모리(160/170)는 특수 동작을 실행하지 않을 수 있다. 이슈된 특수 동작이 완료되지 않은 경우, 메모리(160/170)는 이슈된 특수 동작을 미리 정해진 시간 동안 실행할 수 있다. 미리 정해진 시간은 읽기 동작 또는 쓰기 동작과 같은 정상 동작의 타임아웃 시간보다 적을 수 있다.
미리 정해진 시간이 경과하면, 메모리(160/170)는 특수 동작의 실행을 중지할 수 있다. 메모리(160/170)가 특수 동작을 실행할 때, 메모리(160/170)는 특수 동작의 실행을 시작하거나 또는 중지된 특수 동작의 실행을 재개할 수 있다.
도 9는 호스트(HOST) 및 메모리(160/170)가 특수 동작을 수행하는 예를 보여주는 순서도이다. 도 1 내지 도 4, 그리고 도 9를 참조하면, S411 단계에서, 호스트(HOST)는 메모리(160/170)에 특수 기능을 이슈할 수 있다. 예를 들어, 호스트(HOST)는 도 5에 도시된 규칙에 따라, 제1 쓰기 커맨드(CMD_W1), 제1 쓰기 어드레스(ADDR_W1) 및 데이터(DATA1)를 메모리(160/170)로 전송할 수 있다. 예시적으로, 호스트(HOST)가 전체 블록 소거를 이슈하는 것으로 가정하면, 제1 쓰기 어드레스(ADDR_W1)는 '0x80008006'일 수 있다.
특수 동작이 데이터를 필요로 하는 경우, 제1 데이터(DATA1)는 해당 데이터를 포함할 수 있다. 특수 동작이 데이터를 필요로 하지 않는 경우, 제1 데이터(DATA1)는 더미 데이터일 수 있다. 예시적으로, 전체 블록 소거는 데이터를 필요로 하지 않을 수 있다. 따라서, 제1 데이터(DATA1)는 더미 데이터일 수 있다.
S412 단계에서, 메모리(160/170)는 특수 동작 모드를 선택한다. 예를 들어, 도 5에 도시된 규칙에 따라 수신되는 제1 쓰기 커맨드(CMD_W1) 및 제1 쓰기 어드레스(ADDR_W1)에 응답하여, 메모리(160/170)는 전체 블록 소거의 이슈를 식별할 수 있다. 메모리(160/170)는 전체 블록 소거를 수행할 준비를 할 수 있다.
S413 단계에서, 메모리(160/170)는 호스트(HOST)로 응답을 전송한다. 응답은 제1 쓰기 커맨드(CMD_W1)에 따른 응답일 수 있다. 메모리(160/170)는 실제 쓰기를 수행하지 않고, 임의로 응답을 생성하여 호스트(HOST)로 전송할 수 있다.
S414 단계에서, 호스트(HOST)는 메모리(160/170)에 확인 요청을 전송한다. 예를 들어, 호스트(HOST)는 도 5에 도시된 규칙에 따라, 읽기 커맨드(CMD_R) 및 읽기 어드레스(ADDR_R)를 메모리(160/170)로 전송할 수 있다. 읽기 어드레스(ADDR_R)는 '0x80008000'일 수 있다.
S415 단계에서, 메모리(160/170)는 특수 동작의 정보 및 응답을 호스트(HOST)로 전송한다. 예를 들어, 메모리(160/170)는 호스트(HOST)로부터 이슈된 특수 동작, 즉 전체 블록 소거에 대한 정보를 특수 동작의 정보로서 호스트(HOST)로 전송할 수 있다. 특수 동작의 정보는 읽기 커맨드(CMD_R)에 따른 읽기 데이터로서 전송될 수 있다. 예를 들어, 메모리(160/170)는 읽기를 수행하지 않고, 특수 동작에 대한 정보를 생성하여 호스트(HOST)로 출력할 수 있다. 응답은 읽기 커맨드(CMD_R)에 따른 응답일 수 있다.
예시적으로, 메모리(160/170)로부터 수신되는 특수 동작의 정보가 이슈된 특수 동작에 대응하지 않는 경우, 즉 특수 동작의 정보가 전체 블록 소거를 가리키지 않는 경우, 호스트(HOST)는 특수 동작의 수행을 중지할 수 있다. 메모리(160/170)로부터 수신되는 특수 동작의 정보가 이슈된 특수 동작에 대응하는 경우, 즉 특수 동작의 정보가 전체 블록 소거를 가리키는 경우, 호스트(HOST)는 특수 동작의 수행을 지속할 수 있다.
S421 단계에서, 호스트(HOST)는 메모리(160/170)로 실행 요청을 전송한다. 예를 들어, 호스트(HOST)는 도 5에 도시된 규칙에 따라, 제2 쓰기 커맨드(CMD_W2), 제2 쓰기 어드레스(ADDR_W2) 및 제2 데이터(DATA2)를 메모리(160/170)로 전송할 수 있다. 제2 쓰기 어드레스(ADDR_W2)는 '0x80008000'일 수 있다. 이슈된 특수 동작이 데이터를 필요로 하는 경우, 제2 데이터(DATA2)는 해당 데이터를 포함할 수 있다. 이슈된 특수 동작이 데이터를 필요로 하지 않는 경우, 제2 데이터(DATA2)는 더미 데이터일 수 있다.
S422 단계에서, 메모리(160/170)는 미리 정해진 시간 동안 특수 동작을 수행한다. 예를 들어, 메모리(160/170)는 미리 정해진 시간 동안 전체 블록 소거를 수행할 수 있다. 메모리(160/170)는 미리 정해진 시간 동안 메모리 블록들을 순차적으로 소거할 수 있다. 미리 정해진 시간이 경과하면, 메모리(160/170)는 메모리 블록들의 소거를 중지할 수 있다.
S423 단계에서, 메모리(160/170)는 호스트(HOST)로 응답을 전송한다. 응답은 제2 쓰기 커맨드(CMD_W2)에 따른 응답일 수 있다. 예를 들어, 메모리(160/170)는 제2 쓰기 커맨드(CMD_W2)에 따른 쓰기를 수행하지 않고, 임의로 응답을 생성하여 호스트(HOST)로 전송할 수 있다.
S431 단계, S432 단계 및 S433 단계는 S421 단계, S422 단계 및 S423 단계와 동일한 방법으로 수행된다. 마찬가지로, S4k1 단계, S4k2 단계 및 S4k3 단계는 S421 단계, S422 단계 및 S423 단계와 동일한 방법으로 수행된다.
도 10은 호스트(HOST)가 상태 체크를 수행하는 방법을 보여주는 순서도이다. 예시적으로, 도 10의 상태 체크는 도 7을 참조하여 설명된 방법이 수행된 후에 수행될 수 있다. 즉, 상태 체크는 복수의 정상 커맨드들 및 어드레스들을 이용한 특수 동작의 실행이 수행된 후에 수행될 수 있다.
도 1 내지 도 4, 그리고 도 10을 참조하면, S510 단계에서, 호스트(HOST)는 정상 커맨드 및 어드레스를 이용하여, 이슈된 특수 동작의 상태를 체크할 수 있다. 예를 들어, 호스트(HOST)는 도 5를 참조하여 설명된 상태 체크 기능에 할당된 규칙에 따라 정상 커맨드 및 어드레스를 메모리(160/170)로 전송하고, 메모리(160/170)로부터 상태 정보를 수신함으로써, 이슈된 특수 동작의 상태를 체크할 수 있다.
S520 단계에서, 호스트(HOST)는 이슈된 특수 동작이 완료되었는지 판별한다. 이슈된 특수 동작이 완료되었으면, 호스트(HOST)는 특수 동작의 수행을 종료할 수 있다.
이슈된 특수 동작이 완료되지 않았으면, S530 단계에서, 호스트(HOST)는 복수의 정상 커맨드들 및 어드레스들을 전송함으로써, 특수 동작의 실행을 요청한다. S540 단계에서, 호스트(HOST)는 최대 루프에 도달했는지 판별한다. 최대 루프에 도달한 경우, 호스트(HOST)는 S510 단계를 다시 수행할 수 있다. 최대 루프에 도달하지 않은 경우, 호스트(HOST)는 S530 단계를 다시 수행할 수 있다. S530 단계 및 S540 단계는 도 7의 S230 단계 및 S240 단계와 마찬가지 방법으로 수행될 수 있다. 따라서, 상세한 설명은 생략된다.
예시적으로, S530 단계 및 S540 단계의 실행 루프의 수는, S230 단계 및 S240 단계의 실행 루프의 수와 같거나 그보다 작을 수 있다. S530 단계 및 S540 단계의 실행 루프의 수는 각 특수 동작 별로 또는 둘 이상의 특수 동작들에 대해 공통적으로 설정될 수 있다.
도 11은 상태 체크 및 그에 후속하는 특수 동작의 실행이 수행되는 예를 볼여주는 순서도이다. 도 1 내지 도 4, 그리고 도 11을 참조하면, S601 단계에서, 호스트(HOST)는 메모리(160/170)에 상태 체크를 요청할 수 있다. 예를 들어, 호스트(HOST)는 도 5에 도시된 규칙에 따라 읽기 커맨드(CMD_R) 및 읽기 어드레스(ADDR_R)를 메모리(160/170)로 전송할 수 있다. 읽기 어드레스(ADDR_R)는 '0x80008001'일 수 있다.
S602 단계에서, 메모리(160/170)는 호스트(HOST)로 상태 정보 및 응답을 전송한다. 상태 정보는 이슈된 특수 동작의 진행 상태에 대한 정보를 포함할 수 있다. 상태 정보는 읽기 커맨드(CMD_R)에 따른 읽기 데이터로서 호스트(HOST)로 전송될 수 있다. 예를 들어, 메모리(160/170)는 읽기 커맨드(CMD_R)에 따른 읽기를 수행하지 않고, 상태 정보를 생성하여 호스트(HOST)로 출력할 수 있다. 응답은 읽기 커맨드(CMD_R)에 따른 응답일 수 있다.
예시적으로, 상태 정보가 특수 동작이 완료되었음을 가리키면, 호스트(HOST)는 특수 동작의 수행을 종료할 수 있다. 상태 정보가 특수 동작이 완료되지 않았음을 가리키면, 호스트(HOST)는 특수 동작의 실행을 지속할 수 있다. 예를 들어, S521 단계 내지 S623 단계의 실행 루프 내지 S6n1 단계 내지 S6n3 단계의 실행 루프가 수행될 수 있다.
S701 단계에서, 호스트(HOST)는 메모리(160/170)에 상태 체크를 요청할 수 있다. S702 단계에서, 메모리(160/170)는 호스트(HOST)로 상태 정보 및 응답을 전송할 수 있다. 상태 정보가 특수 동작이 완료되었음을 가리키면, 호스트(HOST)는 특수 동작을 종료할 수 있다.
도 12는 본 발명의 실시 예에 따른 소프트웨어 계층을 보여주는 블록도이다. 도 12를 참조하면, 운영체제(OS) 상에서, 메모리 관리 어플리케이션(APP_M)이 구동될 수 있다. 메모리 관리 어플리케이션(APP_M)은 메모리(160/170)의 동작 성능을 최적화하고, 메모리(160/170)의 신뢰성을 높이는 관리 소프트웨어일 수 있다. 메모리 관리 어플리케이션(APP_M)은 메모리(160/170)에서 지원되는 다양한 특수 동작을을 이용하여, 다양한 메모리 관리 툴들을 제공할 수 있다. 예시적으로, 메모리 관리 어플리케이션(APP_M)은 특수 동작 기반으로 동작할 수 있다.
메모리(160/170)의 특수 동작의 실행이 필요한 경우, 메모리 관리 어플리케이션(APP_M)은 도 5 내지 도 11을 참조하여 설명된 방법들에 따라, 특수 동작 요청을 미리 정해진 규칙에 따라 정상 커맨드 및 어드레스로 변환하여 전송할 수 있다. 예를 들어, 메모리 관리 어플리케이션(APP_M)은 복수의 정상 커맨드들 및 어드레스들을 이용하여, 특수 동작을 복수회에 걸쳐 나누어 수행하도록 메모리(160/170)에 요청할 수 있다.
운영체제(OS)는 메모리 관리 어플리케이션(APP_M)에 루트 권한을 부여하지 않을 수 있다. 운영체제(OS)가 메모리 관리 어플리케이션(APP_M)에 루트 권한을 부여하더라도, 메모리(160/170)는 리더(180, 도 3 참조)를 통해 연결될 수 있다. 즉, 운영체제(OS) 및 장치 드라이버(DD)는 정상 커맨드 기반으로 동작할 수 있다.
특수 동작 요청은 정상 커맨드 및 어드레스로 변환되어 전송된다. 따라서, 운영체제(OS)가 메모리 관리 어플리케이션(APP_M)에 루트 권한을 부여하지 않더라도, 그리고 메모리(160/170)가 리더를 통해 연결되더라도, 메모리 관리 어플리케이션(APP_M)이 생성한 특수 동작 요청은 정상 커맨드 및 어드레스로서 메모리(160/170)로 전달될 수 있다.
메모리(160/170)는 정상 커맨드 및 어드레스로부터 특수 동작 요청을 추출할 수 있다. 추출된 특수 동작 요청에 따라, 메모리(160/170)는 특수 동작을 수행할 수 있다. 즉, 메모리(160/170)는 특수 동작 기반으로 동작할 수 있다.
본 발명의 실시 예들에 따르면, 어플리케이션(APP_M) 및 메모리(160/170) 사이에 정상 커맨드만을 지원하는 계층이 존재하더라도, 어플리케이션(APP_M)은 메모리(160/170)에 특수 동작을 이슈할 수 있다. 또한, 특수 동작은 복수 회에 걸쳐 나누어 실행되며, 각 실행 시간은 정상 커맨드의 타임아웃 시간보다 적게 설정된다. 따라서, 본 발명의 실시 예들에 따르면, 어플리케이션(APP_M) 및 메모리(160/170) 사이에 정상 커맨드만을 지원하는 계층이 존재하더라도, 어플리케이션(APP_M)은 타임아웃을 유발하지 않고, 메모리(160/170)에 특수 동작을 이슈할 수 있다. 따라서, 향상된 동작 성능을 갖는 커맨드 이슈 방법 및 커맨드 처리 방법이 제공된다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능하다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100a, 100b; 컴퓨팅 장치
110; 프로세서
120; 메인 메모리
130; 모뎀
140; 사용자 인터페이스
150; 인터페이스
160; 메모리
170; 외부 메모리
180; 리더
210; 불휘발성 메모리
220; 컨트롤러
230; 랜덤 액세스 메모리
240; 호스트 인터페이스

Claims (20)

  1. 메모리 장치에 특수 기능들을 제공하는 방법에 있어서:
    호스트로부터 정상 동작에 대응하는 제1 정상 커맨드 및 제1 어드레스를 수신하는 단계;
    상기 제1 어드레스가 미리 정해진 규칙에 따른 특수 기능들을 위한 어드레스 범위 내에 속할 때, 상기 제1 정상 커맨드 및 상기 제1 어드레스에 기반하여, 상기 정상 동작과 다른 제1 특수 기능을 식별하는 단계;
    상기 호스트로부터 제2 정상 커맨드 및 제2 어드레스를 수신하는 단계; 그리고
    상기 제2 정상 커맨드의 타임아웃 시간보다 짧은 미리 정해진 시간 동안, 복수의 특수 동작들 중에서 선택된 특수 동작을 실행하는 단계를 포함하는 방법.
  2. 제1항에 있어서,
    상기 식별된 제1 특수 기능은 이슈 기능을 포함하고, 상기 제1 어드레스는 상기 미리 정해진 규칙에 따라 상기 복수의 특수 동작들 중에서 상기 선택된 특수 동작에 대응하는 방법.
  3. 제2항에 있어서,
    상기 복수의 특수 동작들은 스캔 및 읽기 리클레임 동작, 병합 동작, 판매자 인증 동작, 펌웨어 업데이트 동작, 디스크 정보 동작, 그리고 전체 블록 소거 동작 중에서 적어도 두 개를 포함하는 방법.
  4. 제2항에 있어서,
    상기 제2 어드레스가 상기 미리 정해진 규칙에 따른 상기 특수 기능들을 위한 상기 어드레스 범위에 속할 때, 상기 제2 정상 커맨드 및 상기 제2 어드레스에 기반하여, 제2 특수 기능을 식별하는 단계를 더 포함하는 방법.
  5. 제4항에 있어서,
    상기 식별된 제2 특수 기능은 실행 기능을 포함하고, 상기 선택된 특수 동작은 상기 실행 기능에 응답하여 실행되는 방법.
  6. 제5항에 있어서,
    상기 호스트로부터 다른 정상 커맨드 및 컨펌 기능에 대응하는 다른 특수 기능의 다른 어드레스를 수신하는 단계; 그리고
    상기 컨펌 기능에 응답하여, 상기 제2 정상 커맨드 및 상기 제2 어드레스를 수신하기 전에, 상기 선택된 특수 동작이 이슈되었는지를 가리키는 정보를 전송하는 단계를 더 포함하는 방법.
  7. 제4항에 있어서,
    상기 제1 및 제2 정상 커맨드들의 각각은 쓰기 커맨드 및 읽기 커맨드 중 하나를 포함하는 방법.
  8. 제4항에 있어서,
    상기 제1 어드레스는 시작 섹터 번호 및 상기 제1 특수 기능에 대응하는 제1 섹터 오프셋을 포함하고, 상기 제2 어드레스는 상기 시작 섹터 번호 및 상기 제2 특수 기능에 대응하는 제2 섹터 오프셋을 포함하는 방법.
  9. 제4항에 있어서,
    상기 제1 어드레스는 시작 섹터 번호 및 상기 제1 특수 기능에 대응하는 제1 섹터 카운트를 포함하고, 상기 제2 어드레스는 상기 시작 섹터 번호 및 상기 제2 특수 기능에 대응하는 제2 섹터 카운트를 포함하는 방법.
  10. 제1항에 있어서,
    상기 미리 정해진 시간 후에 상기 선택된 특수 동작이 완료되었는지 판단하는 단계; 그리고
    상기 선택된 특수 동작이 완료되지 않은 때에, 상기 호스트로부터 상기 제2 정상 커맨드 및 실행 기능에 대응하는 제2 특수 기능의 상기 제2 어드레스를 다시 수신하고, 그리고 상기 미리 정해진 시간 동안 상기 선택된 특수 동작을 실행하는 단계를 더 포함하는 방법.
  11. 제1항에 있어서,
    미리 정해진 수의 루프들을 통해 상기 선택된 특수 동작을 실행하는 단계를 더 포함하고,
    각 루프는 상기 제2 정상 커맨드의 상기 타임아웃 시간보다 적은 미리 정해진 시간에 대응하는 방법.
  12. 제11항에 있어서,
    상기 미리 정해진 수의 루프들의 이후에, 상기 호스트로부터 다른 정상 커맨드 및 상태 체크 기능에 대응하는 다른 어드레스를 수신하는 단계; 그리고
    상기 상태 체크 기능에 응답하여, 상기 미리 정해진 수의 루프들의 이후에, 상기 선택된 특수 동작의 상태를 가리키는 응답을 상기 호스트로 전송하는 단계를 더 포함하는 방법.
  13. 응용을 실행하는 호스트 장치와 통신하는 호스트 인터페이스;
    상기 응용에 의해 실행되는 복수의 특수 동작들을 저장하는 불휘발성 메모리; 그리고
    상기 응용으로부터 상기 호스트 인터페이스를 통해 수신되는 정상 커맨드들 및 대응하는 어드레스들에 응답하여 상기 불휘발성 메모리를 액세스하는 제어기를 포함하고,
    상기 제어기는:
    상기 호스트 인터페이스를 통해 정상 동작에 대응하는 제1 정상 커맨드 및 상기 불휘발성 메모리의 제1 어드레스를 수신하고;
    상기 제1 어드레스가 미리 정해진 규칙에 따른 특수 기능들을 위한 어드레스 범위 내에 속할 때, 상기 제1 정상 커맨드 및 상기 제1 어드레스에 기반하여, 상기 정상 동작과 다른 제1 특수 기능을 식별하고; 그리고
    상기 호스트 인터페이스를 통해 제2 정상 커맨드 및 상기 불휘발성 메모리의 제2 어드레스를 수신하도록 구성되고,
    상기 제1 어드레스는 상기 미리 정해진 규칙에 따라 복수의 특수 동작들 중에서 선택된 특수 동작에 대응하고, 그리고
    상기 제어기는 미리 정해진 수의 루프들을 통해 상기 선택된 특수 동작을 실행하도록 더 구성되고, 각 루프는 상기 제2 정상 커맨드의 타임아웃 시간보다 짧은 미리 정해진 시간에 대응하는 메모리 장치.
  14. 제13항에 있어서,
    상기 식별된 제1 특수 기능은 이슈 기능을 포함하는 메모리 장치.
  15. 제14항에 있어서,
    상기 제2 어드레스가 상기 미리 정해진 규칙에 따른 상기 특수 기능들을 위한 상기 어드레스 범위에 속할 때, 상기 제어기는 상기 제2 정상 커맨드 및 상기 제2 어드레스에 기반하여 제2 특수 기능을 식별하도록 더 구성되는 메모리 장치.
  16. 제15항에 있어서,
    상기 식별된 제2 특수 기능은 실행 기능을 포함하고, 그리고
    상기 제어기는 상기 실행 기능에 응답하여 상기 제1 어드레스에 대응하는 상기 선택된 특수 동작을 실행하도록 더 구성되는 메모리 장치.
  17. 제13항에 있어서,
    상기 미리 정해진 수의 루프들을 통해 상기 선택된 특수 동작을 실행한 후에, 상기 제어기는:
    상기 호스트 인터페이스를 통해 다른 커맨드 및 상태 체크 기능에 대응하는 다른 특수 기능의 다른 어드레스를 수신하고; 그리고
    상기 상태 체크 기능에 응답하여, 상기 미리 정해진 수의 루프들의 이후에 상기 선택된 특수 동작의 상태를 가리키는 응답을 상기 호스트로 전송하도록 더 구성되는 메모리 장치.
  18. 제13항에 있어서,
    상기 메모리 장치는 eMMC(embedded MultiMedia Card) 또는 MMC(MultiMedia Card) 중 하나를 포함하고, 그리고
    상기 복수의 특수 동작들은 상기 호스트 장치에 의해 실행되는 정상 동작들에 포함되지 않는 메모리 장치.
  19. 호스트 장치와 통신하는 메모리 장치에 복수의 특수 동작들을 수행하게 하는 방법에 있어서:
    제1 정상 커맨드 및 선택된 특수 동작의 이슈 기능에 대응하는 제1 어드레스를 상기 메모리 장치로 전송함으로써, 상기 복수의 특수 동작들 중에서 상기 선택된 특수 동작을 이슈하는 단계;
    상기 제1 어드레스는 미리 정해진 규칙에 따른 특수 기능들을 위한 어드레스 범위에 속하고,
    제2 정상 커맨드 및 실행 기능에 대응하는 제2 어드레스를 상기 메모리 장치로 전송함으로써, 상기 선택된 특수 동작의 실행을 요청하는 단계;
    상기 제2 어드레스는 상기 미리 정해진 규칙에 따른 상기 특수 기능들을 위한 상기 어드레스 범위에 속하고,
    상기 선택된 특수 동작을 실행하기 위해 필요한 루프들의 수를 판단하는 단계;
    각 루프는 상기 제2 정상 커맨드의 타임아웃 시간보다 짧은 미리 정해진 시간에 대응하고, 그리고
    상기 제2 정상 커맨드 및 상기 실행 기능에 대응하는 상기 제2 어드레스를 상기 메모리 장치로 전송함으로써, 상기 선택된 특수 동작의 실행을 반복적으로 요청하는 단계를 포함하고,
    상기 반복적으로 요청하는 횟수는 상기 판단된 루프들의 수에 대응하는 방법.
  20. 제19항에 있어서,
    상기 필요한 루프들의 수를 판단한 후에, 다른 정상 커맨드 및 상태 체크 기능에 대응하는 다른 어드레스를 상기 메모리 장치로 전송함으로써, 상태 체크를 요청하는 단계; 그리고
    상기 선택된 특수 동작의 실행을 반복적으로 요청한 후에, 상기 선택된 특수 동작의 상태를 가리키는 응답을 상기 메모리 장치로부터 수신하는 단계를 더 포함하는 방법.
KR1020140021415A 2014-02-24 2014-02-24 메모리로 커맨드를 이슈하는 커맨드 이슈 방법 및 메모리의 커맨드 처리 방법 KR102192242B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140021415A KR102192242B1 (ko) 2014-02-24 2014-02-24 메모리로 커맨드를 이슈하는 커맨드 이슈 방법 및 메모리의 커맨드 처리 방법
US14/628,931 US9891865B2 (en) 2014-02-24 2015-02-23 Command issue method for issuing command to memory and command processing method of memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140021415A KR102192242B1 (ko) 2014-02-24 2014-02-24 메모리로 커맨드를 이슈하는 커맨드 이슈 방법 및 메모리의 커맨드 처리 방법

Publications (2)

Publication Number Publication Date
KR20150100072A KR20150100072A (ko) 2015-09-02
KR102192242B1 true KR102192242B1 (ko) 2020-12-17

Family

ID=53882229

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140021415A KR102192242B1 (ko) 2014-02-24 2014-02-24 메모리로 커맨드를 이슈하는 커맨드 이슈 방법 및 메모리의 커맨드 처리 방법

Country Status (2)

Country Link
US (1) US9891865B2 (ko)
KR (1) KR102192242B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210008216A (ko) 2019-07-11 2021-01-21 삼성전자주식회사 메모리 장치 및 이를 포함하는 메모리 시스템

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110055458A1 (en) 2009-09-03 2011-03-03 248 Solid State, Inc. Page based management of flash storage
US20120201080A1 (en) 2011-02-09 2012-08-09 Samsung Electronics Co., Ltd. Nonvolatile Memory Devices And Driving Methods Thereof

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8239858B2 (en) 2004-02-25 2012-08-07 Research In Motion Limited Method and system for selecting a program for download
JP4927339B2 (ja) 2005-02-23 2012-05-09 株式会社日立製作所 記憶制御装置及びその制御方法
US7502921B2 (en) 2005-08-02 2009-03-10 Sandisk Corporation Situation sensitive memory performance
JP2007148682A (ja) 2005-11-25 2007-06-14 Fuji Xerox Co Ltd コントロール装置およびusb上位装置およびusb通信正当性判断方法
KR20080033649A (ko) 2006-10-12 2008-04-17 삼성전자주식회사 머지 빈도를 줄일 수 있는 플래쉬 메모리 시스템 및 그관리 방법
EP2286412A1 (en) 2007-12-21 2011-02-23 Rambus Inc. Flash memory timing pre-characterization for use in ormal operation
US8375151B1 (en) 2009-02-12 2013-02-12 Siliconsystems, Inc. Command portal for securely communicating and executing non-standard storage subsystem commands
TWI428758B (zh) 2011-01-13 2014-03-01 Prolific Technology Inc 電腦系統之操作方法
US8745612B1 (en) * 2011-01-14 2014-06-03 Google Inc. Secure versioning of software packages
US9003102B2 (en) 2011-08-26 2015-04-07 Sandisk Technologies Inc. Controller with extended status register and method of use therewith
US9311014B2 (en) * 2012-11-29 2016-04-12 Infinidat Ltd. Storage system and methods of mapping addresses of snapshot families

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110055458A1 (en) 2009-09-03 2011-03-03 248 Solid State, Inc. Page based management of flash storage
US20120201080A1 (en) 2011-02-09 2012-08-09 Samsung Electronics Co., Ltd. Nonvolatile Memory Devices And Driving Methods Thereof

Also Published As

Publication number Publication date
US20150242123A1 (en) 2015-08-27
KR20150100072A (ko) 2015-09-02
US9891865B2 (en) 2018-02-13

Similar Documents

Publication Publication Date Title
KR102094393B1 (ko) 불휘발성 메모리 시스템 및 그것의 동작 방법
US9760503B2 (en) Operation method of memory controller and nonvolatile memory system including the memory controller
US20150242202A1 (en) Method of updating firmware of memory device including memory and controller
US9728277B2 (en) Method of repairing non-volatile memory based storage device and method of operating electronic system including the storage device
KR102291803B1 (ko) 불휘발성 메모리 시스템의 동작 방법, 및 그것을 포함하는 사용자 시스템의 동작 방법
KR102420158B1 (ko) 파일 단위의 암호화 키에 기반하여 암호화를 수행하도록 구성되는 스토리지 장치, 스토리지 시스템, 및 그 동작 방법
KR102147993B1 (ko) 불휘발성 메모리 시스템 및 그것의 동작 방법
US11132143B2 (en) Universal flash storage (UFS) device and computing device and computing device including storage UFS device for reporting buffer size based on reuse time after erase
US20160041788A1 (en) Method of optimizing non-volatile memory based storage device
CN110929261B (zh) 存储器系统及其操作方法
JP2014107004A (ja) 不揮発性メモリ及び不揮発性メモリの動作方法
KR102653373B1 (ko) 컨트롤러 및 컨트롤러의 동작방법
KR20190051530A (ko) 데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법
KR102192242B1 (ko) 메모리로 커맨드를 이슈하는 커맨드 이슈 방법 및 메모리의 커맨드 처리 방법
US10073702B2 (en) Memory system, computing system including the same and method of operating memory system
US20150242338A1 (en) Memory device and method enabling performance of special operations by application of memory device
KR20170139730A (ko) 데이터 저장 장치 및 그것의 동작 방법
CN111124035B (zh) 基于实时时钟管理空闲页面的存储器系统及其操作方法
KR102213665B1 (ko) 인증 프로그램을 갖는 메모리 카드, 그것을 포함하는 스토리지 시스템, 및 그것의 동작 방법
KR20200072081A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
KR20190118428A (ko) 컨트롤러 및 이를 포함하는 메모리 시스템
KR20200071282A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
US11119699B2 (en) Data processing system and operating method thereof
KR20170133116A (ko) 전자 장치 및 그것의 동작 방법
KR20240019429A (ko) 스토리지 장치 및 이를 포함하는 전자 장치와 그 동작 방법

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