KR101687762B1 - 저장 장치 및 그것의 커맨드 스케줄링 방법 - Google Patents

저장 장치 및 그것의 커맨드 스케줄링 방법 Download PDF

Info

Publication number
KR101687762B1
KR101687762B1 KR1020140128117A KR20140128117A KR101687762B1 KR 101687762 B1 KR101687762 B1 KR 101687762B1 KR 1020140128117 A KR1020140128117 A KR 1020140128117A KR 20140128117 A KR20140128117 A KR 20140128117A KR 101687762 B1 KR101687762 B1 KR 101687762B1
Authority
KR
South Korea
Prior art keywords
command
commands
read
write
physical location
Prior art date
Application number
KR1020140128117A
Other languages
English (en)
Other versions
KR20160036693A (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 KR1020140128117A priority Critical patent/KR101687762B1/ko
Publication of KR20160036693A publication Critical patent/KR20160036693A/ko
Application granted granted Critical
Publication of KR101687762B1 publication Critical patent/KR101687762B1/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/468Specific access rights for resources, e.g. using capability register

Landscapes

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

Abstract

본 발명의 실시 예에 따른 저장 장치는 복수의 비휘발성 메모리를 포함하는 플래시 메모리 칩 및 상기 플래시 메모리 칩과 복수의 채널들을 통해 연결되는 컨트롤러를 포함하되, 상기 컨트롤러는 호스트로부터 동일 물리적 위치에 대한 읽기 및 쓰기 커맨드를 입력 받은 경우에, 상기 쓰기 커맨드보다 상기 읽기 커맨드가 먼저 수행되도록, 상기 호스트로부터 입력 받은 커맨드들을 할당함으로 커맨드 재스케줄 동작을 수행한다.

Description

저장 장치 및 그것의 커맨드 스케줄링 방법{STORAGE DEVICE AND COMMAND SCHEDULING METHOD THEREOF}
플래시 메모리 칩을 제어하는 컨트롤러를 포함하는 저장 장치에 관한 것으로, 보다 구체적으로는 저장 장치의 커맨드 스케줄링 방법에 관한 것이다.
솔리드 스테이트 드라이브(Solid State Drive, 이하: SSD)는 호스트와 연결되는 인터페이스, 컨트롤러, 및 플래시 메모리 칩을 포함한다. 인터페이스는 호스트와 SSD를 연결하여 통신한다. 컨트롤러는 요청 큐, FTL(Flash Translation Layer) 가비지 콜렉터(Garbage Collector)등을 포함할 수 있다.
컨트롤러는 입출력 동작을 수행한다. 구체적으로 컨트롤러에 수신된 커맨드들은 논리 블록 어드레스를 기반으로 하여 요청 큐 형태로 저장된다. 커맨드들은 호스트로부터 입력된 순서대로 요청 큐 형태로 저장된다. 또한, 컨트롤러의 FTL은 매핑 테이블을 이용하여 논리 블록 어드레스 형태의 커맨드들을 물리 블록 어드레스 형태의 커맨드들로 변환한다.
FTL은 동적 할당 기법 또는 정적 할당 기법을 사용하여 논리 블록 어드레스 형태의 커맨드들을 물리 블록 어드레스 형태의 커맨드로 변환할 수 있다. 동적 할당 기법이란, 아무런 제약 없이 물리 블록 어드레스에 커맨드를 할당하는 것이다. 정적 할당 기법이란, 논리 블록 어드레스에 포함된 채널 번호, 패키지 번호, 다이 번호 및 플레인 번호 정보를 이용하여 정해진 물리 블록 어드레스에 커맨드를 할당하는 기법이다.
본 발명의 목적은, 동일한 물리적 위치에 접근하는 읽기 및 쓰기 커맨드들이 존재하면, 읽기 커맨드를 쓰기 커맨드보다 우선적으로 실행되도록 재스케줄하는 컨트롤러를 포함하는 저장 장치 및 저장 장치의 커맨드 스케줄링 방법을 제공하는 데에 있다.
본 발명의 실시 예에 따른 저장 장치는 복수의 비휘발성 메모리를 포함하는 플래시 메모리 칩 및 상기 플래시 메모리 칩과 복수의 채널들을 통해 연결되는 컨트롤러를 포함하되, 상기 컨트롤러는 호스트로부터 동일한 물리적 위치에 대한 읽기 및 쓰기 커맨드를 입력 받은 경우에, 상기 쓰기 커맨드보다 상기 읽기 커맨드가 먼저 수행되도록, 상기 호스트로부터 입력 받은 커맨드들을 할당함으로 커맨드 재스케줄 동작을 수행한다.
실시 예로서, 상기 컨트롤러는 물리적 위치에 대한 정보인 채널 번호, 패키지 번호, 다이 번호 및 플레인 번호 정보에 따라 커맨드들을 대응하는 물리 블록 어드레스 중 사용하지 않은 물리 블록 어드레스에 할당하는 정적 할당 기법을 통해 스케줄한다.
실시 예로서, 상기 컨트롤러는 상기 동일한 물리적 위치에 대한 상기 읽기 및 쓰기 커맨드들이 존재하면, 상기 읽기 및 상기 쓰기 커맨드들이 연속적으로 수행되지 않도록 재스케줄한다.
실시 예로서, 상기 동일한 물리적 위치에 접근하는 상기 읽기 및 쓰기 커맨드는 상기 채널 번호, 상기 패키지 번호, 사기 다이 번호 및 상기 플레인 번호 정보 중 순차적으로 적어도 하나 이상의 정보가 동일하다.
본 발명의 실시 예에 따른 복수의 비휘발성 메모리를 포함하는 플래시 메모리 칩 및 상기 플래시 메모리 칩과 복수의 채널들로 연결된 컨트롤러를 포함하는 저장 장치의 커맨드 스케줄링 방법은, 읽기 커맨드를 요청하는 단계, 물리 블록 어드레스에 할당된 커맨드들 중 동일한 물리적 위치를 액세스한 쓰기 커맨드가 이미 존재하는지 확인하는 단계, 상기 확인 결과에 따라, 상기 읽기 커맨드가 먼저 수행되도록 재스케줄 할 것인지 판단하는 단계, 상기 판단 결과에 따라, 상기 읽기 커맨드가 상기 쓰기 커맨드보다 먼저 실행되도록 재스케줄하는 단계 및 상기 재스케줄된 상기 커맨드들을 순차적으로 실행하는 단계를 포함한다.
실시 예로서, 상기 동일한 물리적 위치를 액세스하는 상기 읽기 및 쓰기 커맨드는 채널 번호, 패키지 번호, 다이 번호, 및 플레인 번호 정보 중 순차적으로 적어도 하나 이상이 동일하다.
실시 예로서, 상기 재스케줄하는 단계에서, 상기 읽기 및 쓰기 커맨드가 연속적으로 실행되지 않도록 재스케줄한다.
실시 예로서, 상기 동일한 물리적 위치를 액세스하는 상기 읽기 및 쓰기 커맨드가 존재하지 않으면, 상기 커맨드들을 순차적으로 실행하는 단계를 수행한다.
실시 예로서, 상기 쓰기 커맨드가 상기 읽기 커맨드보다 먼저 실행되지 않으면, 상기 커맨드들을 순차적으로 실행하는 단계를 수행한다.
본 발명에 의한 저장 장치의 컨트롤러 및 컨트롤러의 커맨드 스케줄링 방법에 의하면, 사용자 측면에서의 데이터 처리 속도 및 효율이 향상된다.
도 1은 호스트 시스템을 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따른 저장 장치를 보여주는 블록도이다.
도 3은 본 발명의 실시 예에 따른 논리 블록 어드레스의 구성을 보여주는 블록도이다.
도 4는 본 발명의 실시 예에 따른 커맨드의 스케줄링을 보여주는 블록도이다.
도 5는 본 발명의 실시 예에 따른 커맨드의 스케줄링 방법을 보여주는 순서도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
아래에서, 무선 통신 장치 및 그것의 동작 방법이 본 발명의 특징 및 기능을 설명하기 위한 한 예로서 사용된다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 본 발명은 다른 실시 예들을 통해 또한, 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 용도에 따라 수정되거나 변경될 수 있다.
비록 "제 1", "제 2" 등의 용어가 여기서 다양한 요소를 설명하기 위해 사용될 수 있다 하더라도, 이들 요소는 이 용어들에 의해 한정되지 않는다. 이 용어들은 단지 다른 것들로부터 하나의 구성요소를 구별하기 위해 사용될 수 있다. 본 발명의 상세한 설명에서 사용되는 "포함하는" 또는 "구성되는"과 같은 용어는 설명된 특징, 단계, 동작, 성분, 및/또는 구성요소의 존재를 명시하나, 추가적인 하나 또는 그 이상의 특징, 단계, 동작, 성분, 구성요소 및/또는 그들의 그룹의 존재를 가능하게 한다. 실시 예의 설명에 있어서, 각 층의 "위(상)/아래(하)(on/under)"에 형성되는 것으로 기재되는 경우에 있어, 위(상)/아래(하)는 직접적으로(directly) 또는 다른 층을 개재하여(indirectly) 형성되는 것을 모두 포함한다. 한 요소 또는 층이 다른 요소 또는 층에 "연결되는", "결합하는", 또는 "인접하는" 것으로 언급되는 때에는, 다른 요소 또는 층에 직접적으로 연결되거나, 결합 되거나, 또는 인접하는 것일 수 있고, 혹은 그 사이에 끼워지는 요소 또는 층이 존재할 수 있음이 잘 이해될 것이다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 본 발명의 실시 예를 첨부된 도면을 참조하여 설명할 것이다.
도 1은 호스트 시스템을 보여주는 블록도이다. 도1을 참조하면, 호스트 시스템(100)은 인터페이스 회로로 연결된 호스트(110)와 저장 장치(120)를 포함한다.
호스트(110)는 저장 장치(120)를 제어한다. 예를 들어, 호스트(110)는 PMP(Portable Multimedia Player), PDA(Personal Digital Assistant), 스마트 폰(Smart Phone)과 같은 휴대용 전자 장치, 및 컴퓨터와 같은 전자 장치들일 수 있다.
저장 장치(120)는 호스트(110)의 제어에 응답하여 동작한다. 저장 장치(120)에 저장된 데이터는 전원이 차단되어도 유지될 수 있다. 예시적으로, 저장 장치(120)는 솔리드 스테이트 드라이브(Solid State Drive, 이하: SSD)일 수 있다. 하지만, 본 발명은 이에 한정되지 않는다.
본 발명의 저장 장치(120)는 호스트(110)로부터 입력되는 커맨드들을 저장한다. 저장 장치(120)는 커맨드들의 논리 블록 어드레스(Logical Block Address)를 기초로 저장된 커맨드들을 스케줄링한다.
저장 장치(120)는 컨트롤러(130) 및 플래시 메모리 칩(140)을 포함할 수 있다. 컨트롤러(130)는 호스트(110)로부터 입력된 커맨드에 응답하여, 플래시 메모리 칩(140)에 데이터를 저장하는 동작을 제어한다. 또한, 컨트롤러(130)는 호스트(110)로부터 입력된 커맨드에 응답하여 플래시 메모리 칩(140)으로부터 데이터를 독출하는 동작을 제어한다. 본 발명에 의한 컨트롤러(130)는 호스트(110)로부터 입력된 커맨드들을 실행하기 전 저장할 수 있다. 구체적으로, 컨트롤러(130)는 논리 블록 어드레스를 기초로, 저장된 커맨드들의 실행 순서를 제어할 수 있다. 이에 대해서는 도 2를 통해 자세히 설명될 것이다.
컨트롤러(130)는 다양한 인터페이스 프로토콜들 중 하나를 통해 호스트(110)와 데이터를 주고 받을 수 있다. 예를 들어, 컨트롤러(130)는 USB(Universal Serial Bus), MMC(Multi Media Card) 인터페이스, PCIe(PCIExpress) 인터페이스, UFS(Universal Flash Storage) 인터페이스, SATA(Serial AT Attachment), PATA(Parallel AT Attachment), SCSI(Small Computer System Interface), ESDI(Enhanced Small Disk Interface) 등을 통해 호스트(110)와 데이터를 주고 받을 수 있다. 본 발명에서는 예시적으로 SATA 인터페이스 프로토콜을 이용한다.
SATA 인터페이스는 기존의 ATA 인터페이스의 데이터 전송률 한계를 극복한 기술이다. SATA 인터페이스는 복수 개(예를 들면 32개)의 커맨드들이 연속적으로 수행될 수 있도록 하는 NCQ(Native Command Queuing) 기능을 지원한다.
NCQ는 원래 SATA 인터페이스를 지원하는 하드디스크 드라이브(HDD)의 성능 향상을 n이해 개발된 기술이다. NCQ는 하드디스크 드라이브에 구비된 디스크의 암(arm)의 움직임과 플래터의 회전을 최소화시킬 수 있도록 커맨드들의 순서를 바꾸어 처리한다.
그러나, 저장 장치(120)는 하드디스크 드라이브와 같은 기계적 구성을 포함하고 있지 않다. 그러므로, 저장 장치(120)는 NCQ 커맨드들을 효과적으로 처리하기 위하여, 커맨드들의 논리 블록 어드레스를 기초로 커맨드들의 실행 순서를 제어하는 NCQ 커맨드 스케줄링 방법을 제공한다.
상술된 본 발명의 특징은 SATA 인터페이스에만 국한되지 않고, 다양한 형태의 인터페이스에도 적용 가능하다. 본 발명의 저장 장치(120)에 적용되는 인터페이스는 커맨드 큐잉(command queuing) 기능을 제공하는 인터페이스 방식에는 모두 적용 가능하다.
플래시 메모리 칩(140)은 컨트롤러(130)의 제어에 따라 데이터를 저장 또는 독출할 수 있다. 플래시 메모리 칩(140)과 컨트롤러(130) 사이에는 복수의 채널들(CH0~CHn)이 구성될 수 있다. 채널들(CH1~CHn) 각각에는 복수의 패키지들(Package)이 연결될 수 있다.
본 발명의 실시 예에서, 플래시 메모리 칩(140)은 패키지 형태의 복수의 플래시 메모리들을 포함한다. 하지만 본 발명은 이에 한정되지 않는다. 예시적으로, 플래시 메모리 칩(140)은 플래시 메모리뿐만 아니라, MRAM, PRAM등의 비휘발성 메모리를 포함할 수 있다. 또한, 플래시 메모리 칩(140)은 플래시 메모리를 포함하는 경우, 플래시 메모리 셀의 종류 및 데이터 저장 특성은 다양한 형태로 구성될 수 있다.
도 2는 본 발명의 실시 예에 따른 저장 장치를 보여주는 블록도이다. 본 발명의 실시 예에 따른 저장 장치(200)는 플래시 메모리 칩(210) 및 컨트롤러(220)를 포함할 수 있다. 도 2의 저장 장치(200)는 도 1 에 도시된 저장 장치(120)를 구체적으로 도시한 것이다.
플래시 메모리 칩(210)은 컨트롤러(250)와 복수의 채널들(CH0~CHn)을 통해 연결된다. 플래시 메모리 칩(210)은 복수의 채널들(CH0~CHn)을 통해 컨트롤러(250)로부터 데이터를 쓰거나 독출할 수 있다.
플래시 메모리 칩(210)의 복수의 채널들(CH0~CHn) 각각에는 복수의 패키지(Package) 부(220, 221)가 연결될 수 있다. 복수의 패키지부(220, 221) 각각에는 버스(Bus)를 통해 연결된 복수의 패키지들이 존재한다. 버스(Bus)는 복수의 채널들(CH0~CHn) 각각에 연결된다. 복수의 패키지부(220, 221) 각각은 복수의 낸드 플래시 메모리를 포함한다. 하지만, 본 발명은 이에 한정되지 않는다. 복수의 패키지부(220, 221) 각각은 복수의 PRAM 또는 MRAM등과 같은 비휘발성 메모리 장치를 포함할 수 있다.
복수의 패키지부(220, 221) 각각은 복수의 다이(Die)부(230, 231)를 포함한다. 복수의 다이부(230, 231) 각각은 버스(Bus)를 통해 복수의 채널들(CH0~CHn)와 연결된다. 복수의 다이부(230, 231) 각각은 낸드 플래시 메모리일 수 있다. 하지만, 본 발명은 이에 한정되지 않는다. 복수의 다이부(230, 231) 각각은 MRAM 또는 PRAM과 같은 비휘발성 메모리 장치일 수 있다.
복수의 다이부(231, 231) 각각은 복수의 플레인(Plane)부(240, 241)를 포함한다. 복수의 플레인부(240,241) 각각은 버스(Bus)를 통해 복수의 채널들(CH0~CHn)과 연결된다. 복수의 플레인부(240, 241) 각각은 복수의 메모리 블록(memory block)들을 포함한다. 따라서, 복수의 플레인부(240, 241)는 호스트로부터 수신한 데이터를 저장할 수 있다.
컨트롤러(250)에 입력되는 커맨드들은 요청 큐(251) 형태로 순차적으로 큐잉(queueing)된다. 커맨드들이 순차적으로 큐잉되므로, 복수의 읽기 또는 쓰기 커맨드들이 혼재되어 요청 큐(251) 형태로 큐잉된다. 또한, 커맨드들은 논리 블록 어드레스를 기반으로 요청 큐(251)에 큐잉된다. 요청 큐(251) 형태로 순차적으로 축적된 커맨드들은 FTL(252)을 통해 물리 블록 어드레스(Physical Block Address)에 할당된다.
컨트롤러(250)는 FTL(Flash Translation Layer, 252)을 포함할 수 있다. FTL(252)은 커맨드 스케줄러(253)를 포함할 수 있다. 커맨드 스케줄러(253)는 논리 블록 어드레스를 기반으로 한 커맨드들을 물리 블록 어드레스에 할당한다. 커맨드 스케줄러(253)는 컨트롤러에 포함된 매핑 테이블(미도시)를 통해 커맨드들을 물리 블록 어드레스에 할당한다. 매핑 테이블은 논리 블록 어드레스와 물리 블록 어드레스의 매핑 정보를 저장하는 테이블이다. 매핑 테이블은 논리 블록 어드레스 및 그에 대응되는 물리 블록 어드레스 정보를 저장한다.
본 발명의 실시 예에 따른 커맨드 스케줄러(253)는 커맨드 할당 시, 정적 할당 기법(Static Allocation Scheme)을 사용한다. 정적 할당 기법이란, 논리 블록 어드레스에 포함된 커맨드들의 물리적 위치 정보를 이용하여 이에 대응하는 물리 블록 어드레스 중 사용하지 않은 물리 블록 어드레스에 커맨드들을 할당하는 기법이다.
구체적으로, 논리 블록 어드레스가 포함하는 채널 번호, 패키지 번호, 다이 번호 및 플레인 번호에 따라 커맨드들을 대응하는 물리 블록 어드레스 중 사용하지 않은 위치에 할당하는 기법이다. 본 발명의 실시 예에 따른 커맨드 스케줄러(253)는 논리 블록 어드레스에 포함된 커맨드들의 어드레스 정보에 따라, 동일한 패키지 또는 다이에 접근하는 읽기 및 쓰기 커맨드들을 재스케줄링할 수 있다.
하나의 채널을 통해 복수의 커맨드들이 동시에 수행될 수 없다. 하나의 채널을 통해 복수의 커맨드들이 연달아 수행되면, 커맨드의 충돌이 발생한다. 따라서, 커맨드 스케줄러(253)는 동일한 패키지 또는 다이에 접근하는 읽기 및 쓰기 커맨드들이 존재하면, 두 커맨드들이 연달아 수행되지 않도록 재스케줄링한다. 또한, 커맨드 스케줄러(253)는 읽기 커맨드가 쓰기 커맨드보다 먼저 수행되도록 재스케줄링한다. 읽기 및 쓰기 커맨드들의 입력되는 시간은 유사하다. 하지만, 커맨드의 쓰기 동작은 읽기 동작보다 수행시간이 길다. 따라서, 사용자 측면에서는 읽기 요청이 쓰기 요청보다 먼저 수행될 때 동작이 빠르게 수행된다고 느껴질 수 있다.
FTL(252)은 복수의 채널들(CH0~CHn)을 통해 플래시 메모리 칩(210)의 복수의 패키지부(220, 221)와 연결된다. FTL(252)은 정적 할당 기법을 이용하여 물리 블록 어드레스에 재스케줄된 커맨드들은 순차적으로 플래시 메모리 칩(210)에 출력될 수 있다.
도 3은 본 발명의 제1 실시 예에 따른 논리 어드레스의 구성을 보여주는 블록도이다. 도 1 내지 도 3을 참조하면, 논리 블록 어드레스를 기반으로 한 커맨드는 플래시 메모리 칩(210) 내부의 입력될 물리적 위치에 대한 정보를 포함한다. 논리 블록 어드레스는 채널 번호, 패키지 번호, 다이 번호, 플레인 번호, 블록 번호, 페이지 번호, 및 페이지 내부 번호 정보를 포함할 수 있다.
커맨드 스케줄러(253)는 논리 블록 어드레스를 기반으로 한 커맨드의 채널 번호, 패키지 번호, 다이 번호 및 플레인 번호에 대응하는 물리 블록 어드레스 중 사용하지 않은 물리 블록 어드레스에 커맨드를 할당한다. 또한, 커맨드 스케줄러(253)는 필요에 따라 할당된 커맨드들을 재스케줄한다. 구체적으로, 커맨드 스케줄러(253)는 동일한 물리적 위치에 접근하는 커맨드들을 재스케줄할 수 있다. 여기서 물리적 위치 정보는 채널 번호, 패키지 번호, 다이 번호 또는 플레인 번호를 의미한다. 정적 할당 기법에서는 논리 블록 어드레스에서 물리 블록 어드레스로 변환될 때, 채널 번호, 패키지 번호, 다이 번호, 및 플레인 번호 정보는 그대로 유지된다. 정적 할당 기법으로 물리 블록 어드레스에 할당된 커맨드들은 새로운 불록 번호, 페이지 번호 및 페이지 내부 번호를 할당 받아 변경된다. 따라서, 블록 번호, 페이지 번호 및 페이지 내부 번호 정보는 가변적이다.도 4는 본 발명의 실시 예에 따른 커맨드의 스케줄링을 보여주는 블록도이다. 도 1 내지 도 4를 참조하면, 물리 블록 어드레스에 할당된 커맨드들의 재스케줄 과정이 설명된다.
도 4를 참조하면, 호스트(110)로부터 제1 내지 제5 커맨드들(req1~req5)이 발행되었음을 알 수 있다. 본 발명을 설명하기 위해, 호스트(110)로부터 5개의 커맨드들(req1~req5)이 발행된다고 가정하였다. 하지만, 본 발명은 이에 한정되지 않는다.
제1 내지 제5 커맨드들(req1~req5)은 쓰기(W) 또는 읽기(R) 커맨드이다. 제1 내지 제5 커맨드들(req1~req5)은 접근하는 물리적 위치에 대한 정보인 채널 번호, 패키지 번호, 다이 번호, 및 플레인 번호를 포함한다.
예시적으로, 제1 커맨드(req1)는 쓰기(W) 커맨드이다. 그리고, 제1 커맨드(req1)는 0번 채널, 0번 패키지, 1번 다이 및 0번 플레인에 발행된 커맨드이다. 또한, 제2 커맨드(req2)는 읽기(R) 커맨드이다, 그리고, 제2 커맨드(req2)는 0번 채널, 0번 패키지, 1번 다이 및 0번 플레인에 발행된 커맨드이다. 제1 및 제2 커맨드들(req1, req2)는 동일한 물리적 위치에 발행된 커맨드들이므로, 두 커맨드들(req1, req2)의 충돌이 발생할 수 있다. 따라서, 재스케줄 과정을 통해, 두 커맨드들(req1, req2)의 충돌을 방지한다. 동일한 물리적 위치에 발행된 커맨드들은 채널 번호 정보부터 순차적으로 적어도 하나 이상의 정보가 동일한 커맨드들을 의미한다.
제1 단계(①)는 분리 단계이다. 제1 단계(①)에서, 커맨드 스케줄러(253)는 요청 큐(251)를 감지하여 충돌하는 커맨드의 존재 여부를 확인하다. 도 4를 참조하면, 제1 및 제2 커맨드들(req1, req2)이 동일한 물리적 위치에 출력되었음을 알 수 있다. 두 커맨드들(req1, req2)의 충돌을 피하기 위해, 동일한 물리적 위치에 두 커맨드(req1, req2)가 연속적으로 출력되는 것을 금지한다. 예시적으로, 제1 커맨드(req1)가 실행된 후, 다른 물리적 위치에 접근하는 커맨드들(req3~req5)이 실행되고, 제2 커맨드(req2)가 실행되도록 재스케줄한다.
제2 단계(②)는 교환 단계이다. 제2 단계(②)에서, 제2 커맨드(req2)가 제1 커맨드(req1)보다 우선적으로 실행되도록 재스케줄한다. 구체적으로, 제2 커맨드(req2)가 먼저 수행되면, 사용자들은 요청한 명령(읽기 명령)에 대한 결과를 빠르게 수용할 수 있다. 따라서, 재스케줄은 읽기 지연을 감소시킴으로써, 사용자 관점에서 효율이 향상된다. 반면에, 제1 커맨드(req1)에 따른 쓰기 지연이 증가할 수 있다. 그럼에도 불구하고, 비동기 속성은 쓰기 지연 시간을 숨길 수 있기 때문에, 사용자 관점에서는 쓰기 동작에 거의 영향을 미치지 않는다.
도 5는 본 발명의 실시 예에 따른 커맨드의 재스케줄 방법을 보여주는 순서도이다. 도 1 내지 도 5를 참조하면, 본 발명의 실시 예에 따른 커맨드의 재스케줄 방법을 보여준다.
S110 단계에서, 읽기 커맨드가 요청된다. 구체적으로, 호스트(110)로부터 요청 큐(251)로 입력된 읽기 커맨드는 FTL(252)을 통해 물리 블록 어드레스에 할당된다.
FTL(252)에 포함된 커맨드 스케줄러(253)는 정적 할당 기법을 사용하여 읽기 커맨드를 물리 블록 어드레스에 할당한다. 커맨드 스케줄러(253)는 정적 할당 기법을 통해, 논리 블록 어드레스에 포함된 커맨드들의 물리적 위치 정보를 이용하여 이에 대응하는 물리 블록 어드레스 중 사용하지 않은 물리 블록 어드레스에 커맨드들을 할당한다.
S120 단계에서, 동일한 물리적 위치를 액세스하는 쓰기 커맨드가 이미 존재하는지 확인한다. 구체적으로, 정적 할당 기법을 통해 물리 블록 어드레스로 할당한 커맨드들의 채널 번호, 패키지 번호, 다이 번호, 및 플레인 번호를 확인한다. 동일한 물리적 위치에 액세스하는 쓰기 커맨드란, 읽기 커맨드와 동일한 채널 번호, 패키지 번호, 다이 번호, 및 플레인 번호 중 순차적으로 적어도 하나 이상 동일한 커맨드이다. 즉, 동일한 물리적 위치에 접근하는 읽기 및 쓰기 커맨드들이 연속적으로 존재하는지 확인한다.
동일한 물리적 위치를 액세스하는 쓰기 커맨드가 이미 존재하면, S130 단계에서, 읽기 커맨드가 먼저 수행되도록 재스케줄 할 것인지에 대해 판단한다. 구체적으로, 동일한 물리적 위치를 액세스하는 읽기 및 쓰기 커맨드들의 연속적으로 존재한다면, 재스캐줄 과정이 수행된다.
재스캐줄이 필요하다고 판단되면, S140 단계에서, 읽기 커맨드가 쓰기 커맨드보다 먼저 실행되도록 재스케줄 된다. 구체적으로, 동일한 물리적 위치를 액세스하는 읽기 및 쓰기 커맨드들이 연속적으로 존재하면, 두 커맨드들은 충돌을 하게 된다. 충돌을 방지하기 위해, 커맨드 스케줄러(253)는 두 커맨드들이 연속적으로 위치하는 것을 금지한다. 동시에, 커맨드 스케줄러(253)는 읽기 커맨드가 쓰기 커맨드보다 우선적으로 실행되도록 재스케줄한다. 사용자는 쓰기 커맨드에 비해 읽기 커맨드가 즉각적으로 수행되기를 바란다. 따라서, 읽기 커맨드는 쓰기 커맨드보다 우선된 실행 순위를 가질 수 있을 것이다.
S150 단계에서, 커맨드들은 순차적으로 실행된다. 구체적으로, 상술된 과정을 통해 재스케줄된 커맨드들은 순차적으로 실행된다. 또한, 동일한 물리적 위치를 접근하는 커맨드가 없거나, 쓰기 커맨드가 읽기 커맨드보다 먼저 실행되지 않는다면 커맨드들은 재스케줄 과정을 수행하지 않고 바로 순차적으로 실행된다.
이상에서 본 발명에 대한 실시 예를 중심을 본 발명이 설명되었다. 다만, 본 발명이 속하는 기술 분야의 특성상, 본 발명이 이루고자 하는 목적은 본 발명의 요지를 포함하면서도 위 실시 예들과 다른 형태로 달성될 수 있다. 따라서, 위 실시 예들은 한정적인 것이 아니라 설명적인 측면에서 이해되어야 한다. 즉, 본 발명의 요지를 포함하면서도 본 발명과 같은 목적을 달성할 수 있는 기술 사상은 본 발명의 기술 사상에 포함되는 것으로 해석되어야 한다.
따라서, 본 발명의 본질적인 특성을 벗어나지 않는 범위 내에서 수정 또는 변형된 기술 사상은 본 발명이 청구하는 보호 범위에 포함되는 것이다. 또한, 본 발명의 보호 범위는 위 실시 예들로 한정되는 것이 아니다.
110: 호스트
120: 저장 장치
210: 플래시 메모리 칩
250: 컨트롤러

Claims (9)

  1. 복수의 비휘발성 메모리를 포함하는 플래시 메모리 칩; 및
    상기 플래시 메모리 칩과 복수의 채널들을 통해 연결되는 컨트롤러를 포함하되,
    상기 컨트롤러는:
    입력되는 커맨드들을 요청 큐 형태로 순차적으로 큐잉(queueing)하며,
    호스트로부터 동일한 물리적 위치에 접근하는 읽기 및 쓰기 커맨드를 입력 받았을 때 상기 읽기 및 쓰기 커맨드들이 연속적으로 존재하는 경우에는 상기 읽기 및 쓰기 커맨드 사이에 다른 물리적 위치에 대한 커맨드가 실행되도록 커맨드 재스케줄 동작을 수행하여 상기 읽기 및 쓰기 커맨드가 연속적으로 수행되지 않도록 하고, 동일한 물리적 위치에 접근하는 읽기 및 쓰기 커맨드가 존재하지 않는 경우에는 바로 커맨드들을 순차적으로 실행하며,
    상기 읽기 및 쓰기 커맨드 중 쓰기 커맨드가 먼저 수행되는 경우에는 상기 쓰기 커맨드보다 상기 읽기 커맨드가 먼저 수행되도록 교환하는 커맨드 재스케줄 동작을 수행하고, 상기 읽기 및 쓰기 커맨드 중 읽기 커맨드가 먼저 수행되는 경우에는 바로 커맨드들을 순차적으로 실행하며,
    상기 동일한 물리적 위치는 채널 번호, 패키지 번호, 다이 번호 및 플레인 번호 정보 중 순차적으로 적어도 하나 이상의 정보가 동일한 것을 나타내는 저장 장치.
  2. 제 1 항에 있어서,
    상기 컨트롤러는 물리적 위치에 대한 정보인 채널 번호, 패키지 번호, 다이 번호 및 플레인 번호 정보에 따라 커맨드들을 대응하는 물리 블록 어드레스 중 사용하지 않은 물리 블록 어드레스에 할당하는 정적 할당 기법을 통해 스케줄하는 저장 장치.
  3. 삭제
  4. 삭제
  5. 복수의 비휘발성 메모리를 포함하는 플래시 메모리 칩 및 상기 플래시 메모리 칩과 복수의 채널들로 연결된 컨트롤러를 포함하는 저장 장치의 커맨드 스케줄링 방법으로, 상기 컨트롤러는 입력되는 커맨드들을 요청 큐 형태로 순차적으로 큐잉하며,
    읽기 커맨드를 요청하는 단계;
    물리 블록 어드레스에 할당된 커맨드들 중 동일한 물리적 위치를 액세스한 쓰기 커맨드가 이미 존재하는지 확인하는 단계;
    상기 확인 결과에 따라, 상기 읽기 커맨드가 먼저 수행되도록 재스케줄 할 것인지 판단하는 단계;
    상기 판단 결과에 따라, 상기 읽기 및 쓰기 커맨드들이 연속적으로 수행되지 않도록, 상기 읽기 및 쓰기 커맨드 사이에 다른 물리적 위치에 대한 커맨드가 실행되도록 커맨드 재스케줄 동작을 수행하고, 상기 읽기 커맨드가 상기 쓰기 커맨드보다 먼저 실행되도록 교환하는 커맨드 재스케줄 동작을 수행하는 단계; 및
    상기 재스케줄된 상기 커맨드들을 순차적으로 실행하는 단계를 포함하며,
    상기 동일한 물리적 위치를 액세스하는 상기 읽기 및 쓰기 커맨드는 채널 번호, 패키지 번호, 다이 번호, 및 플레인 번호 정보 중 순차적으로 적어도 하나 이상이 동일하고,
    상기 동일한 물리적 위치를 액세스하는 상기 읽기 및 쓰기 커맨드가 존재하지 않으면, 상기 커맨드들을 순차적으로 실행하는 단계를 수행하며,
    상기 쓰기 커맨드가 상기 읽기 커맨드보다 먼저 실행되지 않으면, 상기 커맨드들을 순차적으로 실행하는 단계를 수행하는 커맨드 스케줄링 방법.
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
KR1020140128117A 2014-09-25 2014-09-25 저장 장치 및 그것의 커맨드 스케줄링 방법 KR101687762B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140128117A KR101687762B1 (ko) 2014-09-25 2014-09-25 저장 장치 및 그것의 커맨드 스케줄링 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140128117A KR101687762B1 (ko) 2014-09-25 2014-09-25 저장 장치 및 그것의 커맨드 스케줄링 방법

Publications (2)

Publication Number Publication Date
KR20160036693A KR20160036693A (ko) 2016-04-05
KR101687762B1 true KR101687762B1 (ko) 2017-01-03

Family

ID=55799981

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140128117A KR101687762B1 (ko) 2014-09-25 2014-09-25 저장 장치 및 그것의 커맨드 스케줄링 방법

Country Status (1)

Country Link
KR (1) KR101687762B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10754692B2 (en) 2018-04-26 2020-08-25 SK Hynix Inc. Memory controller and operating method thereof
US10970001B2 (en) 2018-10-22 2021-04-06 SK Hynix Inc. Memory controller and memory system having the same wherein read request that has a logical to physical mapping in a cache, is prioritized over pairing operation for multi-plane reading

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018016659A1 (ko) * 2016-07-18 2018-01-25 주식회사 파두 플래시 스토리지 대역폭의 비례 지분 스케줄링을 위한 방법 및 시스템
KR20180118329A (ko) 2017-04-21 2018-10-31 에스케이하이닉스 주식회사 메모리 시스템, 데이터 처리 시스템 및 그것의 동작 방법
KR102491068B1 (ko) 2017-11-17 2023-01-19 에스케이하이닉스 주식회사 메모리 장치에 대한 태스크들을 스케줄링하는 반도체 장치 및 이를 포함하는 시스템
KR102406340B1 (ko) * 2018-02-26 2022-06-13 에스케이하이닉스 주식회사 전자 장치 및 그것의 동작 방법
US10725696B2 (en) 2018-04-12 2020-07-28 Micron Technology, Inc. Command selection policy with read priority
KR102254501B1 (ko) * 2018-10-19 2021-05-21 한양대학교 산학협력단 부분 순서 보장 기반의 입출력 스케줄러 및 그 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999015953A1 (en) * 1997-09-24 1999-04-01 Sony Pictures Entertainment, Inc. Optimizing scheduler for read/write operations in a disk file system
JP2006048227A (ja) 2004-08-02 2006-02-16 Sony Corp メモリ装置、メモリ装置の制御方法およびデータ処理システム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101388134B1 (ko) * 2007-10-01 2014-04-23 삼성전자주식회사 뱅크 충돌 방지 장치 및 방법
KR101553532B1 (ko) * 2008-04-17 2015-09-16 삼성전자주식회사 스토리지 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999015953A1 (en) * 1997-09-24 1999-04-01 Sony Pictures Entertainment, Inc. Optimizing scheduler for read/write operations in a disk file system
JP2006048227A (ja) 2004-08-02 2006-02-16 Sony Corp メモリ装置、メモリ装置の制御方法およびデータ処理システム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10754692B2 (en) 2018-04-26 2020-08-25 SK Hynix Inc. Memory controller and operating method thereof
US10970001B2 (en) 2018-10-22 2021-04-06 SK Hynix Inc. Memory controller and memory system having the same wherein read request that has a logical to physical mapping in a cache, is prioritized over pairing operation for multi-plane reading

Also Published As

Publication number Publication date
KR20160036693A (ko) 2016-04-05

Similar Documents

Publication Publication Date Title
KR101687762B1 (ko) 저장 장치 및 그것의 커맨드 스케줄링 방법
CN110088725B (zh) 用于对提交队列和完成队列进行处理并做出仲裁的系统和方法
CN110088723B (zh) 用于对提交队列和完成队列进行处理并且做出仲裁的系统和方法
CN107885456B (zh) 减少io命令访问nvm的冲突
KR101486987B1 (ko) 불휘발성 메모리를 포함하는 반도체 메모리 장치 및 불휘발성 메모리를 위한 커맨드 스케줄링 방법
US9058208B2 (en) Method of scheduling tasks for memories and memory system thereof
US8356135B2 (en) Memory device and control method
CN110032333B (zh) 存储器系统及其操作方法
CN107256363B (zh) 一种由加解密模块阵列组成的高速加解密装置
US20090172264A1 (en) System and method of integrating data accessing commands
KR20160049200A (ko) 데이터 저장 장치의 작동 방법, 이를 포함하는 모바일 컴퓨팅 장치, 및 이의 작동 방법
US20150253992A1 (en) Memory system and control method
KR102079939B1 (ko) 데이터 저장 장치 및 그것의 명령어 스케줄링 방법
KR20120105294A (ko) 불휘발성 메모리를 제어하는 메모리 컨트롤러
US20220350655A1 (en) Controller and memory system having the same
CN111258932A (zh) 加速ufs协议处理的方法与存储控制器
US8621140B2 (en) Flash memory apparatus for controlling operation in response to generation of interrupt signal and method of controlling the same
CN112783424B (zh) 存储装置及其控制方法
CN107885667B (zh) 降低读命令处理延迟的方法与装置
US20180364946A1 (en) Data storage device
KR20100120518A (ko) 데이터 저장 장치 및 그것의 읽기 커멘드 처리 방법
CN110515861B (zh) 处理刷写命令的存储设备及其方法
US20120159024A1 (en) Semiconductor apparatus
CN107688435B (zh) Io流调节方法与装置
US10310746B2 (en) Method, associated memory device and controller thereof for performing dynamic resource management

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
FPAY Annual fee payment

Payment date: 20191202

Year of fee payment: 4