KR20100121340A - 시리얼 인터페이스 프로토콜을 사용하여 호스트와 인터페이스하는 비휘발성 메모리 기반 저장 장치의 커맨드 처리 방법 - Google Patents

시리얼 인터페이스 프로토콜을 사용하여 호스트와 인터페이스하는 비휘발성 메모리 기반 저장 장치의 커맨드 처리 방법 Download PDF

Info

Publication number
KR20100121340A
KR20100121340A KR1020090040442A KR20090040442A KR20100121340A KR 20100121340 A KR20100121340 A KR 20100121340A KR 1020090040442 A KR1020090040442 A KR 1020090040442A KR 20090040442 A KR20090040442 A KR 20090040442A KR 20100121340 A KR20100121340 A KR 20100121340A
Authority
KR
South Korea
Prior art keywords
command
bitmap table
storage device
host
bit corresponding
Prior art date
Application number
KR1020090040442A
Other languages
English (en)
Other versions
KR101662729B1 (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 KR1020090040442A priority Critical patent/KR101662729B1/ko
Priority to US12/659,000 priority patent/US8266330B2/en
Publication of KR20100121340A publication Critical patent/KR20100121340A/ko
Application granted granted Critical
Publication of KR101662729B1 publication Critical patent/KR101662729B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • 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
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode

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)
  • Software Systems (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Transfer Systems (AREA)

Abstract

시리얼 인터페이스 프로토콜을 사용하여 호스트와 인터페이스하는 비휘발성 메모리 기반 저장 장치의 커맨드 처리 방법이 개시된다. 본 발명의 비휘발성 메모리 기반 저장 장치의 커맨드 처리 방법은 호스트로부터 제1 커맨드를 수신하는 단계; 상기 제1 커맨드에 응답하여, 제1 비트맵 테이블에서 상기 제1 커맨드에 상응하는 비트를 셋하고, 제1 메모리에 상기 제1 커맨드에 대한 정보를 저장하는 단계; 상기 제1 비트맵 테이블의 셋된 비트에 기초하여 커맨드 인터럽트를 발생하는 단계; 상기 커맨드 인터럽트에 응답하여 상기 제1 커맨드를 인식하는 단계; 상기 제1 커맨드를 인식하는 단계 이후에, 상기 제1 메모리에 저장되어 있는 상기 제1 커맨드에 대한 정보를 참조하여 상기 제1 커맨드를 수행하는 단계; 및 상기 제1 커맨드에 대한 수행이 완료되면, 상기 제1 비트맵 테이블에서 상기 제1 커맨드에 상응하는 비트를 리셋하는 단계를 구비하여, 커맨드의 변경 및 확장에 따른 하드웨어의 설계변경 없이 커맨드 인식률 및 수행 성능을 향상시킬 수 있다.

Description

시리얼 인터페이스 프로토콜을 사용하여 호스트와 인터페이스하는 비휘발성 메모리 기반 저장 장치의 커맨드 처리 방법{Method for processing command of non-volatile storage device interfacing with host using serial interface protocol}
본 발명은 컴퓨팅 시스템에 관한 것으로, 좀 더 구체적으로는 호스트와 시리얼 인터페이스 프로토콜을 이용하여 인터페이스 하는 비휘발성 메모리 기반의 저장장치(예컨대, 솔리드 스테이트 드라이브(SSD)), 그의 커맨드 처리 방법, 및 상기 저장 장치를 포함하는 컴퓨팅 시스템에 관한 것이다.
컴퓨팅 시스템은 일반적으로 다양한 형태의 메모리 시스템들을 사용한다. 예를 들면, 컴퓨팅 시스템은 반도체 장치들로 구성된 소위 메인 메모리를 사용한다. 이 반도체 장치들은 일반적으로 다음과 같은 속성을 갖는다. 반도체 장치들은 상당히 빠른 액세스 속도로 랜덤하게 쓰여지거나 읽혀지며, 일반적으로 랜덤 액세스 메모리라 불린다. 하지만, 반도체 메모리가 비교적 고가이기 때문에, 다른 고밀도 및 저가메모리가 종종 사용된다. 예를 들면, 다른 메모리 시스템은 마그네틱 디스크 저장 시스템을 포함한다. 마그네틱 디스크 저장 시스템의 경우 액세스 속도가 수십㎳인 반면에 메인 메모리의 경우 액세스 속도는 수백 ㎱이다. 디스크 저장 장치는 필요시 메인 메모리로 순차적으로 읽혀지는 대용량 데이터를 저장하는 데 사용된다. 다른 형태의 디스크와 같은 저장 장치는 반도체 디스크 (solid state disk: 이하, SSD라 칭함) (또는 반도체 드라이브라 불림)이다. SSD는 일반적인 하드 디스크 드라이브에서 사용되는 회전 접시 대신에 데이터를 저장하는 데 플래시 메모리를 사용한다. 이러한 SSD는 하드 드라이브의 대체를 위해서 일반적으로 사용된다.
일반적으로, 컴퓨팅 시스템은 하드 디스크 드라이브(HDD), 디지털 비디오 디스크(DVD), CD-RW, 마그네틱 디스크, SSD와 같은 저장 장치와의 인터페이스에 시리얼 인터페이스 프로토콜(Serial interface protocol)를 사용한다. 대표적인 시리얼 인터페이스 프로토콜에는 SAS(Serial Attached SCSI), 직렬 ATA(SATA, serial AT attachment)가 있다.
컴퓨팅 시스템에서 연산속도를 증가시키기 위해서는 시리얼 클락 속도를 증가시켜야 한다. 이 때 하나의 커맨드가 전송되어 저장장치가 커맨드를 인식하고 있는 순간에 또 다른 커맨드가 전송될 경우, 저장 장치는 연속되어 들어온 다음 커맨드를 인식하지 못하는 경우가 발생할 수 있다. 즉, 커맨드 인식률이 낮을 수 있다.
시리얼 인터페이스 방식에서 커맨드 인식률을 높이기 위하여, 종래에는 하나 이상의 커맨드를 동시에 수행하기 위해서는 연속되어 들어오는 커맨드를 하드웨어 큐(hardware queue)에 저장하고, 그 후 소프트웨어가 커맨드를 수행할 수 있는 조건이 되면 하드웨어 큐에서 순차적으로 커맨드를 읽어서 수행하는 방법을 사용하 는 것이 일반적이다. 이 때 발생할 수 있는 문제는 사용되는 하드웨어 큐의 길이가 물리적인 제약 때문에 확장이 어렵고, 호스트가 전송하는 모든 커맨드를 저장장치가 인식하기 위해서 필요한 최소한의 하드웨어 큐의 길이를 예측하기 어렵다는 데 있다. 따라서, 커맨드가 변경되거나 확장되면, 하드웨어의 설계 변경이 필요할 수 있다.
따라서 본 발명이 이루고자 하는 기술적인 과제는 호스트와 시리얼 인터페이스 프로토콜 방식으로 인터페이스하는 비휘발성 메모리 기반의 저장장치에서 커맨드 인식률 및 수행 성능을 향상시킬 수 있는 커맨드 처리 방법, 그 저장 장치 및 이를 포함하는 컴퓨팅 시스템을 제공하는 것이다.
본 발명이 이루고자 하는 다른 기술적인 과제는 커맨드를 주고 받는 환경이 변경되는 경우에도 하드웨어 수정을 방지 혹은 최소화할 수 있는 비휘발성 메모리 기반의 저장장치에서 커맨드 인식률 및 수행 성능을 향상시킬 수 있는 커맨드 처리 방법, 그 저장 장치 및 이를 포함하는 컴퓨팅 시스템을 제공하는 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따르면, 호스트와 시리얼 인터페이스 프로토콜을 사용하여 인터페이스하는 비휘발성 메모리 기반 저장 장치의 커맨드 처리 방법이 제공된다. 상기 비휘발성 메모리 기반 저장 장치의 커맨드 처리 방법은 상기 호스트로부터 제1 커맨드를 수신하는 단계; 상기 제1 커맨드에 응답하여, 제1 비트맵 테이블에서 상기 제1 커맨드에 상응하는 비트를 셋하고, 제1 메모리에 상기 제1 커맨드에 대한 정보를 저장하는 단계; 상기 제1 비트맵 테이블의 셋된 비트에 기초하여 커맨드 인터럽트를 발생하는 단계; 상기 커맨드 인터럽트에 응답하여 상기 제1 커맨드를 인식하는 단계; 상기 제1 커맨드를 인식하는 단계 이후에, 상기 제1 메모리에 저장되어 있는 상기 제1 커맨드에 대한 정보를 참 조하여 상기 제1 커맨드를 수행하는 단계; 및 상기 제1 커맨드에 대한 수행이 완료되면, 상기 제1 비트맵 테이블에서 상기 제1 커맨드에 상응하는 비트를 리셋하는 단계를 구비한다.
상기 커맨드 인터럽트를 발생하는 단계는, 상기 제1 비트맵 테이블에서 상기 제1 커맨드에 상응하는 비트와 제2 비트맵 테이블의 해당 비트를 비교하는 단계; 및 상기 제1 비트맵 테이블에서 상기 제1 커맨드에 상응하는 비트가 셋 상태이고 상기 제2 비트맵 테이블에서 상기 제1 커맨드에 상응하는 비트가 리셋 상태이면 상기 커맨드 인터럽트를 발생하는 단계를 포함할 수 있다.
상기 제1 비트맵 테이블 및 상기 제2 비트맵 테이블은 하드웨어 레지스터로 구현될 수 있다.
본 발명의 실시예에 따르면, 하드웨어 큐의 물리적 증가나 설계의 변경 없이, 연속적으로 수신되는 커맨드를 정상적으로 인식하여 수행할 수 있다. 즉, 본 발명의 실시예에 따르면, 비트맵 테이블 인터럽트 방식을 이용하여 커맨드를 인식 및 처리함으로써, 커맨드의 종류가 증가하더라도, 하드웨어 큐의 길이를 확장하거나 설계 변경할 필요성이 없어진다.
또한, 본 발명의 실시예에 따르면, 커맨드 인식률 및 수행 성능이 향상되어 컴퓨팅 시스템의 신뢰성이 향상된다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시 예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다. 이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
하나의 소자(elements)가 다른 소자와 "접속된(connected to)" 또는 "커플링된(coupled to)" 이라고 지칭되는 것은, 다른 소자와 직접 연결 또는 커플링된 경우 또는 중간에 다른 소자를 개재한 경우를 모두 포함한다. "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
비록 제1, 제2 등이 다양한 소자, 구성요소 및/또는 섹션들을 서술하기 위해서 사용되나, 이들 소자, 구성요소 및/또는 섹션들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 소자, 구성 요소 또는 섹션들을 다른 소자, 구성요소 또는 섹션들과 구별하기 위하여 사용하는 것이다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
다음의 실시예들 및 첨부된 도면에서 본 발명의 실시예와 관련되지 않은 구성요소들은 생략될 수 있다.
도 1은 본 발명의 일실시예에 따른 컴퓨팅 시스템의 개략도이다.
도 1을 참조하면, 본 발명의 일실시예에 따른 컴퓨팅 시스템은 비휘발성 메모리 기반 저장 장치(10) 및 호스트(20)를 포함한다. 비휘발성 메모리 기반 저장 장치(10, 이하, 저장 장치라 함)는 SSD일 수 있으나, 이에 한정되는 것은 아니다.
저장 장치(10)는 시리얼 인터페이스 프로토콜(예컨대, SAS)을 이용하여 호스트(20)와 인터페이스한다. 호스트(20)는 커맨드를 저장 장치(10)로 전송하고, 저장 장치(10)는 호스트(20)로부터의 커맨드를 인식하고 이를 수행한다. 예를 들어, 호스트(20)는 저장 장치(10)에 데이터를 저장하기 위하여 필요한 커맨드 및/또는 저장 장치(10)로부터 데이터를 독출하기 위하여 필요한 커맨드를 저장 장치(10)로 전송할 수 있다.
저장 장치(10)는 메모리 컨트롤러(100) 및 비휘발성 메모리(200)를 포함한다. 비휘발성 메모리(200)는 플래시 메모리일 수 있으나, 이에 한정되는 것은 아니다. 비휘발성 메모리(200)는 도 1에서 하나의 블록으로 도시되나, 다수의 메모리 어레이 또는 다수의 칩으로 구현될 수 있다.
메모리 컨트롤러(100)는 저장 장치(10)의 동작을 제어한다. 비휘발성 메모리(200)는 각종 프로그램들, 및 각종 데이터를 저장할 수 있다.
도 2a는 도 1에 도시된 메모리 컨트롤러(100)의 개략도이다. 도 2b는 도 2a에 도시된 메모리 컨트롤러(100)의 구성요소들 간의 기능적인 연결 관계를 개략적으로 도시한다.
도 2a 및 도 2b를 참조하면, 메모리 컨트롤러(100)는 커맨드 디코더(110), 하드웨어 레지스터 모듈(120), 인터럽트 컨트롤러(130), CPU(Central Processing Unit, 140), 제1 메모리(예컨대, SRAM, 150), 제2 메모리(예컨대, DRAM, 160), 자동 응답 모듈(170), 및 버스(bus, 180)를 구비할 수 있다.
커맨드 디코더(110)는 호스트(20)로부터 커맨드를 수신하여 디코딩한다. 하드웨어 레지스터 모듈(120)은 제1 및 제2 비트맵 테이블을 저장하기 위한 레지스터(121)를 포함한다. 본 실시예에서는 제1 및 제2 비트맵 테이블을 각각 하드웨어 비트맵 테이블 및 소프트웨어 비트맵 테이블이라 하며, 이에 대해서는 후술하기로 한다. 하드웨어 레지스터 모듈(120)은 또한 호스트로(20)부터 수신되는 커맨드의 순서를 확인하기 위하여 수신 순서대로 커맨드의 식별자를 저장하는 하드웨어 큐(이하, 순서 큐(123)라 함)를 더 포함할 수 있다. 하드웨어 레지스터 모듈(120)은 제1 및 제2 비트맵 테이블을 비교하기 위한 회로(미도시)를 더 구비할 수 있다.
인터럽트 컨트롤러(130)는 하드웨어 레지스터 모듈(120)로부터 제1 및 제2 비트맵 테이블을 비교한 결과에 상응하는 신호(미도시)를 수신하고, 이에 응답하여 인터럽트 요청(IRQ)을 CPU(140)로 보낼 수 있다.
CPU(140)는 인터럽트 요청(IRQ)에 응답하여 인터럽트 프로세싱 시간 동안 인터럽트를 처리함으로써 수신된 커맨드를 인식하고, 추후 인식된 커맨드를 수행할 수 있다. 또한 커맨드의 수행이 완료되면, 해당 커맨드에 대한 정보를 삭제할 수 있다.
제1 메모리(예컨대, SRAM, 150)는 커맨드 디코더(110)에 의하여 디코딩된 커맨드에 대한 정보를 저장하는 저장 장소일 수 있으며, SRAM에 한정되지 않는다. 제2 메모리(예컨대, DRAM, 160)는 저장 장치(10)의 펌웨어 및/또는 소프트웨어가 필요로 하는 데이터의 저장 장소일 수 있으며, DRAM에 한정되지 않는다.
자동 응답 모듈(170)은 호스트(20)로부터 수신된 커맨드에 대한 수행이 완료된 후 커맨드 수행 완료를 호스트(20)로 알리기 위하여 응답 메시지(예컨대, 도 7의 Response #1)를 생성하여 호스트(20)로 전송한다. 응답 메시지의 생성 및 전송에 대해서는 후술한다.
도 3은 본 발명의 일 실시예에 따른 비휘발성 메모리 기반 저장장치의 커맨드 처리 방법을 나타내는 도면이다. 도 3에 도시된 본 발명의 일 실시예에 따른 비휘발성 메모리 기반 저장장치의 커맨드 처리 방법은 도 1에 도시된 저장 장치(10), 좀 더 구체적으로는, 도 2a 및 도 2b에 도시된 메모리 컨트롤러(100)에서 수행될 수 있다. 도 3에 도시된 단계들은 본 발명의 일 실시예에 따른 커맨드 처리 방법의 전 과정 중 커맨드를 수신하고 인식하는 단계들에 해당할 수 있다.
도 4는 도 3에 도시된 커맨드 처리 방법에 따라 설정되는 하드웨어 비트맵 테이블(hardware bitmap table(RO)) 및 소프트웨어 비트맵 테이블(software bitmap table(RW))의 일 예을 나타내는 도면이다.
도 3 및 도 4를 참조하면, 본 발명의 일 실시예에 따른 커맨드 처리 방법은 적어도 하나의 비트맵 테이블을 이용하여 커맨드를 처리한다. 먼저 저장 장치(10)는 하드웨어 레지스터 모듈(120)을 초기화할 수 있다(S110). 이 단계(S110)는 저장 장치(10)의 파워-업 동작이나 리셋 동작에서 수행될 수 있다.
호스트(20)가 저장장치(10)로 커맨드를 전송하면, 저장장치(10)의 커맨드 디코더(110)는 이를 수신하고 수신된 커맨드가 어떤 커맨드인지를 알기 위해 디코 딩한다(S120). 커맨드가 수신되면 저장장치(10)의 내부에서 도 4에 도시된 바와 같이 비지 신호(Busy)가 활성화될 수 있다.
호스트(20)로부터 수신된 커맨드가 제1 커맨드(command #1)인 경우, 저장 장치(10)는 하드웨어 비트맵 테이블(RO)의 복수의 비트들 중 제1 커맨드에 상응하는 비트(테이블의 가장 왼쪽으로부터 두 번째 비트)를 제1 값(예컨대, 1)로 셋(set)한다(S130). 이에 따라, 도 4의 'T01'에 도시된 바와 같이, 하드웨어 비트맵 테이블(RO)은 '0100'상태가 되고, 소프트웨어 비트맵 테이블(RW)은 초기 상태인 '0000' 상태로 유지된다.
본 실시예에서는 설명의 편의를 위하여, 하드웨어 비트맵 테이블(RO) 및 소프트웨어 비트맵 테이블(RW)은 각각 4-비트 테이블인 것으로 가정하나, 테이블의 길이는 얼마든지 변형될 수 있다.
또한, 하드웨어 비트맵 테이블(RO) 및 소프트웨어 비트맵 테이블(RW)의 각 비트는 command #0 내지 command #3에 각각 상응하는 것으로 가정하나, 본 발명이 이에 한정되는 것은 아니다.
수신 커맨드(즉, 제1 커맨드)에 대한 정보는 SRAM(150)의 지정 장소에 저장될 수 있다(S140). 도 5는 본 발명의 일 실시예에 따른 커맨드 정보의 저장 장소 및 펌웨어 큐를 나타내는 도면이다.
도 5에 도시된 바와 같이, SRAM(150)에는 저장장치(10)의 각각의 비트맵 테이블의 각 비트가 가리키는 고유의 저장 공간이 존재한다. 저장장치(10)에서 커맨드 인터럽트가 발생한 후 제1 커맨드(command #1)가 수행될 때 해당 커맨드에 대한 필요한 정보는 SRAM(150)의 #1에 저장된 것을 참조할 수 있다.
또한 하드웨어 비트맵 테이블(RO)에서 수신된 커맨드인 제1 커맨드(command #1)에 상응하는 비트가 '1'로 설정된 후 수신된 커맨드(예컨대, 제1 커맨드(command #1))에 대한 확인 신호(ACK #1)가 호스트(20)로 전송될 수 있다. 확인 신호(ACK #1)가 호스트(20)로 전송되면 비지 신호(Busy)신호가 비활성화될 수 있다.
그 후 저장장치(10)는 하드웨어 비트맵 테이블(RO)과 소프트웨어 비트맵 테이블(RW)을 비교하여 다를 경우 커맨드 인터럽트(command interrupt)를 발생한다(S170). 좀 더 상세하게는, 하드웨어 비트맵 테이블(RO)의 각 비트와 소프트웨어 비트맵 테이블(RW)의 각 비트를 비교하여, 수신 커맨드(예컨대, 제1 커맨드)에 상응하는 하드웨어 비트맵 테이블(RO)의 비트가 소프트웨어 비트맵 테이블(RW)의 비트가 다른 경우(예컨대, 제1 커맨드에 상응하는 하드웨어 비트맵 테이블(RO)의 비트는 1이고, 제1 커맨드에 상응하는 소프트웨어 비트맵 테이블(RW)의 비트는 0인 경우), 커맨드 인터럽트(command interrupt)를 발생할 수 있다(S170).
커맨드 인터럽트는 인터럽트 컨트롤러(130)가 CPU(140)로 보내는 인터럽트 요청(IRQ) 중의 하나이다.
커맨드 인터럽트가 발생하면, 저장장치(10)의 소프트웨어 및 펌웨어는 수신된 제1 커맨드(command #1)를 인식하고(S180), 추후 제1 메모리(SRAM, 150)에 저장되어 있는 제1 커맨드(command #1)에 대한 정보를 참조하여 제1 커맨드(command #1)를 처리할 수 있다.
좀 더 상세하세는, 커맨드 인터럽트가 발생하면 저장장치(10)의 소프트웨어는 인터럽트 처리 시간(Interrupt processing time) 동안 하드웨어 비트맵 테이블(RO)과 소프트웨어 비트맵 테이블(RW)을 확인하여 새로 전송받은 커맨드를 펌웨어 큐(firmware queue)(125)에 넣는다(S180). 그 후 저장장치의 펌웨어(firmware)는 소프트웨어 비트맵 테이블(RW)에서 펌웨어 큐(125)에 넣은 커맨드(여기서는, 제1 커맨드)에 상응하는 비트를 셋함으로써 더 이상 해당 커맨드에 대한 커맨드 인터럽트가 발생하지 않도록 한다(S190). 이에 따라, 도 4의 'T03'에 도시된 바와 같이, 하드웨어 비트맵 테이블(RO)은 '0110' 상태이고, 소프트웨어 비트맵 테이블(RW)은 '0100' 상태가 된다.
'T03'에서 하드웨어 비트맵 테이블(RO)은 '0110' 상태인 것은, 그 전에 제2 커맨드(command #2)가 수신되었음을 의미한다.
예컨대, 도 4에 도시된 바와 같이, 제1 커맨드(command #1)에 대한 인터럽트 프로세싱 시간 동안 호스트(20)가 다른 커맨드(예컨대, 제2 커맨드(command #2))를 전송한 경우 저장장치(10)는 하드웨어 비트맵 테이블(RO)에서 제2 커맨드(command #2)에 해당하는 비트를 1로 세팅한다. 이에 따라 도 4의 'T02'에 도시된 바와 같이, 하드웨어 비트맵 테이블(RO)은 '0110' 상태가 되고, 소프트웨어 비트맵 테이블(RW)은 '0000' 상태로 유지된다.
제2 커맨드(command #2)가 수신되면, 도 4에 도시된 바와 같이, 저장장치(10)는 비지신호(Busy)신호를 활성화하고, 하드웨어 비트맵 테이블(RO)에서 제2 커맨드(command #2)에 해당하는 비트를 1로 세팅한 후, 제2 커맨드에 대한 확인 신 호(ACK #2)를 호스트(20)로 전송할 수 있다.
새로 수신한 제2 커맨드(command #2)에 대한 인식은 현재 처리 중인 인터럽트 프로세싱 시간(예컨대, 제1 커맨드에 대한 인터럽트 프로세싱 시간)이 끝난 다음에 발생한다.
도 6은 본 발명의 다른 일 실시예에 따른 비휘발성 메모리 기반 저장장치의 커맨드 처리 방법을 나타내는 도면이다. 도 6에 도시된 본 발명의 다른 일 실시예에 따른 비휘발성 메모리 기반 저장장치의 커맨드 처리 방법 역시 도 1에 도시된 저장 장치(10), 좀 더 구체적으로는, 도 2a 및 도 2b에 도시된 메모리 컨트롤러(100)에서 수행될 수 있다. 도 7은 도 6에 도시된 커맨드 처리 방법에 따라 설정되는 하드웨어 비트맵 테이블(hardware bitmap table(RO)) 및 소프트웨어 비트맵 테이블(software bitmap table(RW))의 일 예을 나타내는 도면이다.
도 6에 도시된 단계들은 본 발명의 일 실시예에 따른 커맨드 처리 방법의 전 과정 중 커맨드를 인식한 후의 단계들에 해당할 수 있다. 따라서, 도 6에 도시된 단계들은 도 3에 도시된 단계들 이후에 수행될 수 있다.
도 6 내지 도 7을 참조하면, 저장 장치(10)가 수신된 커맨드를 인식한 후, 저장 장치(10)의 펌웨어에 의하여 수신 커맨드가 처리될 수 있다(S210). S210 단계에서의 처리한 수신 커맨드에 따른 작업을 수행하는 것을 의미한다. 따라서 도 7에 도시된 바와 같이, 펌웨어가 커맨드 프로세싱 시간(command processing time)동안 수신 커맨드인 제1 커맨드(command #1)를 수행한다. 커맨드 프로세싱 시간은 제1 커맨드(command #1)를 수행하는데 걸리는 시간이다.
제1 커맨드(command #1)에 대한 커맨드 프로세싱 시간(command processing time)이 시작될 때의 하드웨어 비트맵 테이블(RO) 및 소프트웨어 비트맵 테이블(RW)은 'T04'에 나타나 있는 바와 같이, 각각 '0110' 및 '0110' 상태인 것으로 가정한다. 즉, 호스트(20)로부터 제1 및 제2 커맨드(command #1 및 #2)가 수신됨에 따라, 도 3을 참조하여 상술한 커맨드 처리 방법에 따라, 하드웨어 비트맵 테이블(RO) 및 소프트웨어 비트맵 테이블(RW)이 각각 '0110' 및 '0110'으로 설정된 상태이다.
제1 커맨드(command #1)에 대한 커맨드 프로세싱 시간이 끝나면, 저장장치(10)는 하드웨어 비트맵 테이블(RO)의 해당 비트(command #1에 상응하는 비트)를 0으로 리셋(클리어)한다(S220). 그 후, 저장장치(10)는 호스트(20)에게 제1 커맨드(command #1)의 수행이 완료되었음을 알리기 위하여 제1 커맨드에 대한 응답 메시지(response #1)을 전송한다(S250).
이를 위하여, 저장 장치(10)의 하드웨어 레지스터 모듈(120)은 하드웨어 비트맵 테이블(RO)과 소프트웨어 비트맵 테이블(RW)을 비교할 수 있다(S230). 좀 더 구체적으로는, 하드웨어 비트맵 테이블(RO)의 제1 커맨드(command #1)에 상응하는 비트와 소프트웨어 비트맵 테이블(RW)의 제1 커맨드(command #1)에 상응하는 비트를 비교하여(S230), 양자가 일치하는지 확인할 수 있다(S240). 양자가 일치하지 않으면, 예컨대, 하드웨어 비트맵 테이블(RO)에서 상기 제1 커맨드(command #1)에 상응하는 비트가 리셋(0) 상태이고 소프트웨어 비트맵 테이블(RW)에서 제1 커맨드(command #1)에 상응하는 비트가 셋(1) 상태이면, 하드웨어 레지스터 모듈(120) 은 자동 응답 모듈(170)로 신호를 보내어, 자동 응답 모듈(170)이 제1 커맨드에 대한 응답 메시지(response #1)을 하드웨어적으로 발생하여 호스트로 전송하도록 할 수 있다(S250).
자동 응답 모듈(170)은 응답 메시지(response #1)를 자동으로 발생하기 위하여 제1 커맨드에 대한 응답 메시지(response #1)을 구성하는 값들을 내부 레지스터(미도시)에 미리 저장해 둘 수 있다.
호스트(20)가 저장장치(10)로부터 응답 메시지(response #1)을 정상적으로 수신하면(S260) 이에 대한 확인 메시지(ACK #1)를 저장장치(10)에게 보낸다. 저장 장치(10)가 호스트로부터 확인 메시지(ACK #1)를 수신하면(S260), 저장장치(10)는 하드웨어 비트맵 테이블(RO)의 해당 비트(command #1에 상응하는 비트)를 0으로 리셋(클리어)할 수 있다(S270). 하드웨어 비트맵 테이블(RO)의 해당 비트(command #1에 상응하는 비트)의 리셋은 확인 메시지(ACK #1)를 수신한 이후에 발생하는 커맨드 인터럽트에 대한 인터럽트 프로세싱 시간 동안에 이루어질 수 있다.
확인 메시지(ACK #1)를 수신한 이후에, 커맨드 인터럽트가 발생되고(S280), 이 인터럽트에 응답하여, 인터럽트 프로세싱 시간 동안 펌웨어 큐(125)에서 처리완료된 커맨드(command #1)를 삭제함으로써(S290), 해당 커맨드(command #1)에 대한 처리가 완전히 종료될 수 있다.
도 3 및 도 6은 본 발명의 일 실시예를 나타낼 뿐 본 발명이 이에 한정되는 것은 아니다. 따라서, 본 발명의 실시예에 따른 커맨드 처리 방법은 그 순서가 달라지거나, 하나 이상의 단계가 추가되거나 삭제되는 등 다양하게 변형될 수 있다.
본 발명의 다른 실시예에서는, 도 6에 도시된 실시예와 달리, 제1 커맨드(command #1)에 대한 커맨드 프로세싱 시간이 끝나면 저장장치(10)는 호스트(20)에게 제1 커맨드(command #1)의 수행이 완료되었음을 알리기 위하여 제1 커맨드에 대한 응답 메시지(response #1)을 전송할 수 있다. 호스트(20)가 저장장치(10)로부터 응답 메시지(response #1)을 정상적으로 수신하면 이에 대한 확인 메시지(ACK #1)를 저장장치(10)에게 보내고, 저장 장치(10)가 확인 메시지(ACK #1)를 수신하면, 하드웨어 비트맵 테이블(RO)의 해당 비트(command #1에 상응하는 비트)를 0으로 리셋(클리어)할 수 있다. 하드웨어 비트맵 테이블(RO)과 소프트웨어 비트맵 테이블(RW)이 다름을 인지한 저장장치(10)의 하드웨어는 커맨드 인터럽트를 발생시킬 수 있다. 커맨드 인터럽트에 응답하여, 저장장치(10)의 펌웨어는 인터럽트 프로세싱 시간 동안 하드웨어 비트맵 테이블(RO)과 소프트웨어 비트맵 테이블(RW)를 비교하여 처리가 끝난 커맨드를 펌웨어 큐(125)에서 삭제한 후, 소프트웨어 비트맵 테이블(RW)의 해당 비트를 리셋할 수 있다.
또한, 상술한 바와 같이, 하드웨어 비트맵 테이블(hardware bitmap table(RO)) 및 소프트웨어 비트맵 테이블(software bitmap table(RW))이 반드시 구비되어야 하는 것은 아니다.
도 8은 본 발명의 또 다른 일 실시예에 따른 비휘발성 메모리 기반 저장장치의 커맨드 처리 방법을 설명하기 위한 도면이다.
도 8을 참조하면, 본 발명의 또 다른 일 실시예에 따른 비휘발성 메모리 기반 저장장치의 커맨드 처리 방법을 수행하기 위해서, 비휘발성 메모리 기반 저장장 치는 순서 큐(123)를 더 구비할 수 있다.
저장장치(10)는 인터럽트 프로세싱 시간 동안 하나 이상의 다른 커맨드를 수신하여 인식을 해야 하는 경우 커맨드간의 시간적인 순위를 확인하기 위해서 순서 큐(123)를 사용할 수 있다.
저장장치(10)가 지원하는 커맨드의 수만큼 혹은 그 이상의 길이를 가지는 순서 큐(123)를 구비할 수 있다. 예컨대, 저장장치(10)가 수행할 수 있는 커맨드가 command #0내지 command #3으로서 총 4개인 경우, 4개 커맨드 식별자(혹은 tag number)를 저장할 수 있는 순서 큐(123)를 만들 수 있다. 순서큐(123)는 레지스터로 구현될 수도 있고, SRAM(150)에 만들어질 수도 있다.
도 8을 참조하면, 먼저 저장장치(10)는 command #0에 대해서 인터럽트 프로세싱을 수행 중에 있고, 'T11'을 참조하면 순서 큐(123)에는 command #0에 대한 태그 넘버(0)가 저장되어 있다. 다음 호스트(20)가 command #3을 전송하면, 'T12'에 나타나 있는 바와 같이, 저장장치(10)는 하드웨어 비트맵 테이블(RO)의 해당 비트(command #3에 상응하는 비트)를 1로 세팅하고 순서 큐(123)에 command #3에 상응하는 태그 넘버(3)를 추가한다. 다음 호스트(20)가 command #2를 전송하면 'T13'에 나타나 있는 바와 같이, 저장장치(10)는 하드웨어 비트맵 테이블(RO)의 해당 비트(command #2에 상응하는 비트)를 1로 세팅하고 순서 큐(123)에 command #2에 상응하는 태그 넘버(2)를 추가한다. 저장장치(10)는 command #0에 대한 인터럽트 프로세싱 시간(Interrupt processing time)이 끝나면, 'T14'에 나타나 있는 바와 같이, 소프트웨어 비트맵 테이블(RW)의 해당 비트(command #0에 상응하는 비트)를 1 로 세팅하고, 순서 큐(123)에서 command #0에 대한 태그 넘버(0)를 제거한다. 저장장치(10)는 다음 인터럽트 프로세싱 시간(#2, #3) 동안에 command #3과 #2에 대한 인식을 하고, 이 때 커맨드간의 시간적인 순서를 파악할 때 순서 큐(123)를 참조한다. 인터럽트 프로세싱 시간(#2, #3)이 끝나면, 순서 큐(123)에서 command #3 과 #2에 대한 태그 넘버(3, 2) 역시 삭제된다.
본 발명의 실시예에 의하면, 비트맵 테이블 인터럽트 방식을 이용하여 연속적으로 수신되는 커맨드를 정상적으로 저장장치가 인식하여 수행 할 수 있다. 본 발명의 실시예에 의하면, 순서 큐를 이용하여 연속되어 들어온 커맨드간의 시간적 순서 및/또는 동일한 커맨드의 중복 여부도 파악할 수 있어 순위에 따라 커맨드를 처리할 수 있다.
또한, 본 발명의 실시예에 따르면, 비트맵 테이블 인터럽트 방식을 커맨드 인식뿐만 아니라 응답 메시지의 발생에도 사용함으로써 응답메시지를 자동으로 발생하고 저장장치의 반응속도를 증가시킬 수 있다.
상술한 본 발명의 실시예에 따른 비휘발성 메모리(200) 그리고/또는 메모리 컨트롤러(100)는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 본 발명의 실시예에 따른 비휘발성 메모리(200) 그리고/또는 메모리 컨트롤러(100)는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP) 등과 같은 패키지들을 이용하여 실장될 수 있다.
상술한 본 발명의 실시예에 따른 비휘발성 메모리 기반 저장장치(10)는 SSD(solid state drive/disk)일 수 있다. 또는 본 발명의 실시예에 따른 비휘발성 메모리 시스템(10)은 메모리 카드를 구성할 수 있다.
셀룰러 폰, PDA 디지털 카메라, 포터블 게임 콘솔, 그리고 MP3P와 같은 모바일 장치들의 사용 증가에 따라, 본 발명의 실시예에 따른 저장 장치(10)는 데이터 스토리지 뿐만 아니라 코드 스토리지로서 사용될 수 있다. 저장 장치(10)는, 또한, HDTV, DVD, 라우터, 그리고 GPS와 같은 홈 어플리케이션에 사용될 수 있다.
본 발명의 실시예들에 따른 저장 장치(10)는 전자 시스템(예컨대, 모바일 기기, 노트북, 데스크 톱 컴퓨터와 같은 시스템)에 장착될 수 있다. 이러한 전자 시스템의 일 예가 도 9에 예시되어 있다.
도 9를 참조하면 본 발명의 일 실시예에 따른 전자 시스템(900)은 본 발명의 일 실시예에 따른 저장장치(10), 전원부(power supply)(910), 중앙 처리 장치(CPU)(920), 램(RAM)(930), 유저 인터페이스(User Interface)(940) 및 이들 구성요소들을 전기적으로 연결하는 시스템 버스(950)를 포함할 수 있다.
CPU(920)는 시스템(900)의 전체적인 동작을 제어하고, RAM(930)은 시스 템(900)의 동작을 위해 필요한 정보들을 저장하고, User Interface(940)는 시스템(900)과 사용자와의 인터페이스를 제공한다. 전원부(910)는 내부의 구성 요소들(즉, CPU(920), 램(RAM)(930), 유저 인터페이스(940), 메모리 시스템(500) 등)으로 전원을 공급한다.
비휘발성 메모리 기반 저장 장치(10)에는 유저 인터페이스(940)를 통해서 제공되거나 또는 CPU(920)에 의해서 처리된/처리될 N-비트 데이터(N은 1 또는 그 보다 큰 정수)가 저장된다.
도 10은 도 1에 도시된 컴퓨팅 시스템(1000)을 보다 상세히 나타내는 블락도이다. 도 10을 참조하면, 컴퓨팅 시스템(1000)은 중앙 처리 장치(Central Processing Unit, 1110), AGP 장치(Accelerated Graphics Port, 1120), 메인 메모리(1130), 노스 브리지(north bridge, 1140), SSD(10), 키보드 컨트롤러(1160), 프린터 컨트롤러(1170), 및 사우스 브리지(1180) 등을 포함한다.
컴퓨팅 시스템(1100)은 SSD(10)가 하드디스크 드라이브를 대신하여 주 저장 장치로 이용하는 개인용 컴퓨터 또는 노트북 컴퓨터의 블락도일 수 있다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니다.
컴퓨팅 시스템(1000)에서 중앙 처리 장치(1110), AGP 장치(1120), 및 메인 메모리(1130) 등은 노스 브리지(1140)에 접속되며, SSD(10), 키보드 컨트롤러(1160), 프린터 컨트롤러(1170), 및 각종 주변 장치들(미도시) 등은 사우스 브리지(180)에 연결된다.
노스 브리지(1140)는 메인보드 가운데를 기준으로 중앙 처리 장치(1110) 소 켓 쪽에 있는 집적회로로서, 일반적으로는 중앙 처리 장치(1110)와 연결하는 호스트 인터페이스(host interface)를 포함하는 시스템 컨트롤러를 의미한다. 사우스 브리지는 메인보드 가운데를 기준으로 PCI(peripheral component interconnect) 슬롯 쪽에 있는 집적회로로서, 일반적으로는 호스트 버스에서 PCI 버스를 경유하여 접속되는 버스(bus)로 가는 브리지를 의미한다.
AGP는 3차원 그래픽 표현을 빠르게 구현할 수 있게 해주는 버스 규격이다. AGP 장치(1120)에는 모니터 이미지를 재생하는 비디오 카드 등이 포함될 수 있다. 메인 메모리(1130)는 일반적으로 휘발성 메모리 소자인 RAM(Random Access Memory)으로 구현될 수 있으나 본 발명의 범위가 이에 한정되는 것은 아니다.
또한 비록 도면에는 도시되지 않았지만, 상기 시스템(900, 1000)에는 응용칩셋(application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨팅 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다.
컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장장치 등이 있으며, 또한 본 발명에 따른 온라인 광고 방법을 수행하기 위한 프로그램 코드는 캐리어 웨이브(예를 들어, 인터넷을 통한 전송)의 형태로 전송될 수도 있다.
또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨팅 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인 (functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 일 실시예에 따른 컴퓨팅 시스템의 개략도이다.
도 2a는 도 1에 도시된 메모리 컨트롤러의 개략도이다.
도 2b는 도 2a에 도시된 메모리 컨트롤러의 구성요소들 간의 기능적인 연결 관계를 개략적으로 도시한다.
도 3은 본 발명의 일 실시예에 따른 비휘발성 메모리 기반 저장장치의 커맨드 처리 방법을 나타내는 도면이다.
도 4는 도 3에 도시된 커맨드 처리 방법에 따라 설정되는 하드웨어 비트맵 테이블(hardware bitmap table) 및 소프트웨어 비트맵 테이블(software bitmap table)의 일 예을 나타내는 도면이다.
도 5는 본 발명의 일 실시예에 따른 커맨드 정보의 저장 장소 및 펌웨어 큐를 나타내는 도면이다.
도 6은 본 발명의 다른 일 실시예에 따른 비휘발성 메모리 기반 저장장치의 커맨드 처리 방법을 나타내는 도면이다.
도 7은 도 6에 도시된 커맨드 처리 방법에 따라 설정되는 하드웨어 비트맵 테이블(hardware bitmap table) 및 소프트웨어 비트맵 테이블(software bitmap table)의 일 예을 나타내는 도면이다.
도 8은 본 발명의 또 다른 일 실시예에 따른 비휘발성 메모리 기반 저장장 치의 커맨드 처리 방법을 설명하기 위한 도면이다.
도 9는 본 발명의 일 실시예에 따른 전자 시스템의 블록도이다.
도 10은 본 발명의 일 실시예에 따른 컴퓨팅 시스템을 보다 상세하게 나타내는 블록도 블록도이다.

Claims (11)

  1. 호스트와 시리얼 인터페이스 프로토콜을 사용하여 인터페이스하는 비휘발성 메모리 기반 저장 장치의 커맨드 처리 방법에 있어서,
    상기 호스트로부터 제1 커맨드를 수신하는 단계;
    상기 제1 커맨드에 응답하여, 제1 비트맵 테이블에서 상기 제1 커맨드에 상응하는 비트를 셋하고, 제1 메모리에 상기 제1 커맨드에 대한 정보를 저장하는 단계;
    상기 제1 비트맵 테이블의 셋된 비트에 기초하여 커맨드 인터럽트를 발생하는 단계;
    상기 커맨드 인터럽트에 응답하여 상기 제1 커맨드를 인식하는 단계;
    상기 제1 커맨드를 인식하는 단계 이후에, 상기 제1 메모리에 저장되어 있는 상기 제1 커맨드에 대한 정보를 참조하여 상기 제1 커맨드를 수행하는 단계; 및
    상기 제1 커맨드에 대한 수행이 완료되면, 상기 제1 비트맵 테이블에서 상기 제1 커맨드에 상응하는 비트를 리셋하는 단계를 구비하는 비휘발성 메모리 기반 저장 장치의 커맨드 처리 방법.
  2. 제1항에 있어서, 상기 커맨드 인터럽트를 발생하는 단계는
    상기 제1 비트맵 테이블에서 상기 제1 커맨드에 상응하는 비트와 제2 비트맵 테이블의 해당 비트를 비교하는 단계; 및
    상기 제1 비트맵 테이블에서 상기 제1 커맨드에 상응하는 비트가 셋 상태이고 상기 제2 비트맵 테이블에서 상기 제1 커맨드에 상응하는 비트가 리셋 상태이면 상기 커맨드 인터럽트를 발생하는 단계를 포함하며,
    상기 제1 비트맵 테이블 및 상기 제2 비트맵 테이블은 하드웨어로 구현되는 비휘발성 메모리 기반 저장 장치의 커맨드 처리 방법.
  3. 제2항에 있어서, 상기 방법은
    상기 제1 커맨드를 인식하는 단계 이후에 상기 제2 비트맵 테이블에서 상기 제1 커맨드에 상응하는 비트를 셋하는 단계를 더 구비하는 비휘발성 메모리 기반 저장 장치의 커맨드 처리 방법.
  4. 제3항에 있어서, 상기 제1 커맨드를 인식하는 단계는
    상기 제1 커맨드를 펌웨어 큐에 저장하는 단계를 포함하는 비휘발성 메모리 기반 저장 장치의 커맨드 처리 방법.
  5. 제3항에 있어서, 상기 방법은
    상기 제1 커맨드에 상응하는 비트를 리셋하는 단계 이후에 호스트로 응답 메시지를 전송하는 단계를 더 구비하는 비휘발성 메모리 기반 저장 장치의 커맨드 처리 방법.
  6. 제5항에 있어서, 상기 호스트로 응답 메시지를 전송하는 단계는
    상기 제1 비트맵 테이블에서 상기 제1 커맨드에 상응하는 비트와 상기 제2 비트맵 테이블의 해당 비트를 비교하는 단계; 및
    상기 제1 비트맵 테이블에서 상기 제1 커맨드에 상응하는 비트가 리셋 상태이고 상기 제2 비트맵 테이블에서 상기 제1 커맨드에 상응하는 비트가 셋 상태이면 상기 응답 메시지를 발생하는 단계를 포함하는 비휘발성 메모리 기반 저장 장치의 커맨드 처리 방법.
  7. 제6항에 있어서, 상기 방법은
    상기 호스트로부터 상기 응답 메시지에 대한 확인 메시지를 수신하는 단계; 및
    상기 확인 메시지를 수신하면 상기 제2 비트맵 테이블에서 상기 제1 커맨드에 상응하는 비트를 리셋하는 단계를 더 구비하는 비휘발성 메모리 기반 저장 장치의 커맨드 처리 방법.
  8. 제3항에 있어서, 상기 제1 커맨드에 상응하는 비트를 리셋하는 단계는
    상기 제1 커맨드에 대한 수행이 완료되면, 상기 호스트로 응답 메시지를 전송하는 단계;
    상기 호스트로부터 상기 응답 메시지에 대한 확인 메시지를 수신하는 단계; 및
    상기 확인 메시지를 수신하면 상기 제1 비트맵 테이블에서 상기 제1 커맨드에 상응하는 비트를 리셋하는 단계를 포함하는 비휘발성 메모리 기반 저장 장치의 커맨드 처리 방법.
  9. 제1항에 있어서, 상기 방법은
    상기 제1 커맨드를 인식하는 단계가 완료되기 전에
    상기 호스트로부터 제2 커맨드를 수신하는 단계; 및
    상기 제2 커맨드에 응답하여, 상기 제1 비트맵 테이블에서 상기 제2 커맨드에 상응하는 비트를 셋하고, 제1 메모리에 상기 제2 커맨드에 대한 정보를 저장하는 단계를 더 구비하며,
    상기 상기 제1 커맨드를 인식하는 단계 이후에,
    상기 제1 비트맵 테이블에서 셋된 상기 제2 커맨드에 상응하는 비트에 기초하여 제2 커맨드 인터럽트를 발생하는 단계;
    상기 제2 커맨드 인터럽트에 응답하여 상기 제2 커맨드를 인식하는 단계;
    상기 제2 커맨드를 인식하는 단계 이후에, 상기 제1 메모리에 저장되어 있는 상기 제2 커맨드에 대한 정보를 참조하여 상기 제2 커맨드를 수행하는 단계; 및
    상기 제2 커맨드에 대한 수행이 완료되면, 상기 제2 비트맵 테이블에서 상기 제2 커맨드에 상응하는 비트를 리셋하는 단계를 더 구비하는 비휘발성 메모리 기반 저장 장치의 커맨드 처리 방법.
  10. 제9항에 있어서, 상기 방법은
    상기 호스트로부터 수신되는 상기 제1 및 제2 커맨드의 식별자를 수신 순서대로 순서 큐에 저장하는 단계를 더 구비하는 비휘발성 메모리 기반 저장 장치의 커맨드 처리 방법.
  11. 제10항에 있어서, 상기 방법은
    상기 제1 커맨드를 인식하는 단계 이후에
    상기 순서 큐에서 상기 제1 커맨드의 식별자를 삭제하는 단계를 더 구비하는 비휘발성 메모리 기반 저장 장치의 커맨드 처리 방법.
KR1020090040442A 2009-05-08 2009-05-08 시리얼 인터페이스 프로토콜을 사용하여 호스트와 인터페이스하는 비휘발성 메모리 기반 저장 장치의 커맨드 처리 방법 및 상기 방법을 수행하기 위한 메모리 컨트롤러 KR101662729B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090040442A KR101662729B1 (ko) 2009-05-08 2009-05-08 시리얼 인터페이스 프로토콜을 사용하여 호스트와 인터페이스하는 비휘발성 메모리 기반 저장 장치의 커맨드 처리 방법 및 상기 방법을 수행하기 위한 메모리 컨트롤러
US12/659,000 US8266330B2 (en) 2009-05-08 2010-02-18 Method and controller for processing commands in a storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090040442A KR101662729B1 (ko) 2009-05-08 2009-05-08 시리얼 인터페이스 프로토콜을 사용하여 호스트와 인터페이스하는 비휘발성 메모리 기반 저장 장치의 커맨드 처리 방법 및 상기 방법을 수행하기 위한 메모리 컨트롤러

Publications (2)

Publication Number Publication Date
KR20100121340A true KR20100121340A (ko) 2010-11-17
KR101662729B1 KR101662729B1 (ko) 2016-10-06

Family

ID=43063026

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090040442A KR101662729B1 (ko) 2009-05-08 2009-05-08 시리얼 인터페이스 프로토콜을 사용하여 호스트와 인터페이스하는 비휘발성 메모리 기반 저장 장치의 커맨드 처리 방법 및 상기 방법을 수행하기 위한 메모리 컨트롤러

Country Status (2)

Country Link
US (1) US8266330B2 (ko)
KR (1) KR101662729B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013019043A2 (en) * 2011-07-29 2013-02-07 Taejin Info Tech Co., Ltd. Disk input/output (i/o) layer architecture having block level device driver

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8719843B2 (en) 2011-07-27 2014-05-06 Intel Corporation Virtualizable and forward-compatible hardware-software interface
KR20130084902A (ko) * 2012-01-18 2013-07-26 삼성전자주식회사 저장 장치, 저장 시스템 및 저장 장치에 대한 입출력 제어 방법
WO2017158799A1 (ja) * 2016-03-17 2017-09-21 株式会社日立製作所 ストレージ装置および情報処理方法
KR20210069480A (ko) 2019-12-03 2021-06-11 삼성전자주식회사 메모리 컨트롤러를 포함하는 스토리지 장치 및 비휘발성 메모리 시스템과 이의 동작 방법
CN113722248B (zh) * 2021-07-28 2023-08-22 湖南国科微电子股份有限公司 命令处理方法及命令处理装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6311257B1 (en) * 1999-04-13 2001-10-30 Emc Corporation Method and system for allocating memory for a command queue
KR100621635B1 (ko) * 2005-05-09 2006-09-07 삼성전자주식회사 원낸드 플래시 메모리 장치의 인터럽트 제어 방법 및 장치
US20060271739A1 (en) * 2005-05-24 2006-11-30 Shu-Fang Tsai Management of transfer of commands
US20080005398A1 (en) * 2006-03-31 2008-01-03 Huffman Amber D Methods and arrangements to handle non-queued commands for data storage devices

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6851011B2 (en) * 2001-08-09 2005-02-01 Stmicroelectronics, Inc. Reordering hardware for mass storage command queue
US6859859B2 (en) * 2002-08-08 2005-02-22 Hitachi Global Storage Technologies Netherlands, B.V. Method and system for efficiently calculating and storing expected access time information for DASD
US6925526B2 (en) * 2002-10-31 2005-08-02 International Business Machines Corporation Method and apparatus for servicing mixed block size data access operations in a disk drive data storage device
JP4460867B2 (ja) * 2003-09-26 2010-05-12 東芝ストレージデバイス株式会社 インターフェース装置及びパケット転送方法
JP2006139459A (ja) * 2004-11-11 2006-06-01 Hitachi Global Storage Technologies Netherlands Bv メディア・ドライブ及びそのパワー・セーブ方法
JP2006139548A (ja) * 2004-11-12 2006-06-01 Hitachi Global Storage Technologies Netherlands Bv メディア・ドライブ及びそのコマンド実行方法
US7797487B2 (en) * 2007-06-26 2010-09-14 Seagate Technology Llc Command queue loading
JP4516999B2 (ja) * 2008-03-28 2010-08-04 富士通株式会社 データ通信制御装置、データ通信制御方法およびそのためのプログラム
US8131921B2 (en) * 2008-09-17 2012-03-06 Intel Corporation Command suspension in response, at least in part, to detected acceleration and/or orientation change
US8055816B2 (en) * 2009-04-09 2011-11-08 Micron Technology, Inc. Memory controllers, memory systems, solid state drives and methods for processing a number of commands

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6311257B1 (en) * 1999-04-13 2001-10-30 Emc Corporation Method and system for allocating memory for a command queue
KR100621635B1 (ko) * 2005-05-09 2006-09-07 삼성전자주식회사 원낸드 플래시 메모리 장치의 인터럽트 제어 방법 및 장치
US20060271739A1 (en) * 2005-05-24 2006-11-30 Shu-Fang Tsai Management of transfer of commands
US20080005398A1 (en) * 2006-03-31 2008-01-03 Huffman Amber D Methods and arrangements to handle non-queued commands for data storage devices

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013019043A2 (en) * 2011-07-29 2013-02-07 Taejin Info Tech Co., Ltd. Disk input/output (i/o) layer architecture having block level device driver
WO2013019043A3 (en) * 2011-07-29 2013-04-04 Taejin Info Tech Co., Ltd. Disk input/output (i/o) layer architecture having block level device driver
KR101316917B1 (ko) * 2011-07-29 2013-10-11 주식회사 태진인포텍 블록 수준 장치 드라이버를 포함하는 디스크 입/출력 레이어 아키텍쳐

Also Published As

Publication number Publication date
US20100287310A1 (en) 2010-11-11
KR101662729B1 (ko) 2016-10-06
US8266330B2 (en) 2012-09-11

Similar Documents

Publication Publication Date Title
US9110786B2 (en) Read operation prior to retrieval of scatter gather list
JP5344411B2 (ja) シリアルインターフェースメモリの同時読み出し及び書き込みメモリ動作
US10002085B2 (en) Peripheral component interconnect (PCI) device and system including the PCI
US8171192B2 (en) Hardware-assisted device configuration detection
US20060245274A1 (en) Apparatus and method for controlling NAND flash memory
KR102498223B1 (ko) Ufs 장치의 작동 방법, ufs 호스트의 작동 방법, 및 이들을 포함하는 시스템의 작동 방법
KR102482035B1 (ko) 메모리 컨트롤러, 메모리 시스템 및 그 동작 방법
KR101662729B1 (ko) 시리얼 인터페이스 프로토콜을 사용하여 호스트와 인터페이스하는 비휘발성 메모리 기반 저장 장치의 커맨드 처리 방법 및 상기 방법을 수행하기 위한 메모리 컨트롤러
CN110059032B (zh) 存储器接口及具有存储器接口的存储器控制器
US10424352B2 (en) Memory system and method for operating the same
US10102159B2 (en) Method of achieving low write latency in a data storage system
CN110069426B (zh) 存储器控制器及具有存储器控制器的存储器系统
CN107797821B (zh) 重试读取方法以及使用该方法的装置
TWI754050B (zh) 微控制器、具有該微控制器的記憶系統及其操作方法
CN108572798B (zh) 针对快速数据传输执行监听操作的存储装置及其方法
TWI685744B (zh) 指令處理方法及使用所述方法的儲存控制器
US20190188134A1 (en) Memory system and operating method thereof
CN111459527A (zh) 存储器系统及其操作方法
US10658046B2 (en) Memory device and method for operating the same
US11237954B2 (en) Controller and data storage system having the same
US11049575B2 (en) Memory system and method of operating the same
KR20180092430A (ko) 데이터 저장 장치 및 그것의 동작 방법
CN114579484A (zh) 数据存储装置及其操作方法
US11029881B2 (en) Memory controller, memory system, and information processing system
TW201911327A (zh) 資料儲存裝置以及讀取方法

Legal Events

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