KR101517183B1 - 데이터 저장 장치 및 그것의 데이터 저장 방법 - Google Patents

데이터 저장 장치 및 그것의 데이터 저장 방법 Download PDF

Info

Publication number
KR101517183B1
KR101517183B1 KR1020090046575A KR20090046575A KR101517183B1 KR 101517183 B1 KR101517183 B1 KR 101517183B1 KR 1020090046575 A KR1020090046575 A KR 1020090046575A KR 20090046575 A KR20090046575 A KR 20090046575A KR 101517183 B1 KR101517183 B1 KR 101517183B1
Authority
KR
South Korea
Prior art keywords
buffer memory
data
job
memory
channels
Prior art date
Application number
KR1020090046575A
Other languages
English (en)
Other versions
KR20100128120A (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 KR1020090046575A priority Critical patent/KR101517183B1/ko
Priority to US12/772,452 priority patent/US8341338B2/en
Publication of KR20100128120A publication Critical patent/KR20100128120A/ko
Application granted granted Critical
Publication of KR101517183B1 publication Critical patent/KR101517183B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus

Abstract

본 발명의 데이터 저장 장치는, 복수의 채널들 및 복수의 웨이들에 접속된 복수의 메인 메모리들, 상기 메인 메모리들에 기록될 복수의 데이터를 임시 저장하는 버퍼 메모리, 그리고 상기 메인 메모리들의 채널 및 웨이 정보에 대응되도록 상기 복수의 데이터를 상기 버퍼 메모리에 저장하는 컨트롤러를 포함한다.
SSD, 데이터 저장 장치, 채널, 웨이

Description

데이터 저장 장치 및 그것의 데이터 저장 방법{DATA STORAGE DEVICE AND DATA STORING METHOD THEREOF}
본 발명은 데이터 저장 장치에 관한 것으로, 좀 더 구체적으로는 반도체를 메인 스토리지로 채택한 데이터 저장 장치 및 그것의 데이터 저장 방법에 관한 것이다.
정보화 사회의 도래와 함께 개인이 저장하고 이동해야 할 데이터의 양도 폭발적으로 늘어나고 있다. 이와 같은 정보 저장매체의 수요 증가로 인해, 다양한 종류의 개인용 데이터 저장 장치들이 개발되고 있다.
데이터 저장 장치들 중에서도 하드디스크 드라이브(hard disk drive; HDD)는, 높은 기록 밀도, 높은 데이터 전송 속도, 빠른 데이터 접근 시간(access time), 및 낮은 가격 등의 장점으로 인해 널리 사용되고 있다. 하드디스크 드라이브는 플래터(platter)와, 플래터를 구동하기 위한 복잡한 기계적 부품들로 구성된다. 따라서, 조그만 충격과 진동에도 고장이 날 수 있는 문제점이 있다.
최근 들어서는 하드디스크 드라이브를 대신하는 데이터 저장 장치로서 반도체 디스크(Solid State Disk 또는 Solid State Drive, 이하 SSD라 칭함) 장치가 개 발되고 있다. SSD는 반도체 메모리를 메인 스토리지로서 채택한 데이터 저장 장치이다. SSD는 하드디스크 드라이브와 달리 플래터와 플래터를 구동하기 위한 기계적 부품들이 구비되지 않는다. 따라서, SSD는 하드디스크 드라이브에 비해 기계적 구동시간과 지연시간(latency)을 줄일 수 있고, 고속의 읽기/기록 동작을 수행할 수 있다. 그리고 SSD는 지연 시간 및 기계적 마찰로 인한 오류를 줄일 수 있기 때문에, 읽기/기록 동작의 신뢰성을 향상시킬 수 있는 장점이 있다. 또한, 작동시 열과 소음이 거의 발생하기 않고 외부 충격에 강하기 때문에, 기존의 하드디스크 드라이브에 비하여 휴대용 기기에 적합한 데이터 저장 장치로서 높이 평가되고 있다.
본 발명의 목적은 채널 이용도 및 데이터 저장 성능을 향상시킬 수 있는 데이터 저장 장치 및 그것의 데이터 저장 방법을 제공하는 데 있다.
상기의 과제를 이루기 위하여 본 발명에 의한 데이터 저장 장치는, 복수의 채널들 및 복수의 웨이들에 접속된 복수의 메인 메모리들; 상기 메인 메모리들에 기록될 복수의 데이터를 임시 저장하는 버퍼 메모리; 그리고 상기 메인 메모리들의 채널 및 웨이 정보에 대응되도록 상기 복수의 데이터를 상기 버퍼 메모리에 저장하는 컨트롤러를 포함하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 컨트롤러는 상기 메인 메모리들에 대한 기록 동작시, 상기 임시 저장된 복수의 데이터를 상기 복수의 채널들 및 상기 복수의 웨이들 로 분산시키는 것을 특징으로 한다.
이 실시예에 있어서, 상기 컨트롤러는 상기 메인 메모리들의 채널 및 웨이 정보에 대응되도록 상기 버퍼 메모리의 논리 어드레스 및 물리 어드레스를 맵핑하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 버퍼 메모리는 복수 개의 뱅크들과 복수의 볼륨들의 교차 영역에 배치된 복수의 섹터들을 포함하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 볼륨들 각각은 상기 메인 메모리들에 접속된 각각의 채널에 대응되고, 상기 뱅크들 각각은 상기 메인 메모리들에 접속된 각각의 웨이에 대응되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 컨트롤러는 데이터가 기록될 각각의 메인 메모리의 논리 어드레스에 응답해서 상기 논리 어드레스에 대응되는 볼륨 및 뱅크를 결정하고, 상기 결정된 볼륨 및 뱅크에 대응되는 섹터에 상기 데이터를 저장하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 섹터들 각각의 논리 어드레스는, 상기 볼륨들 중 하나와 상기 뱅크들 중 하나에 대응되는 캐시라인으로 표시되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 컨트롤러는 상기 캐시라인과, 상기 캐시라인에 대응되는 볼륨 및 뱅크의 맵핑 정보를 저장하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 복수의 메인 메모리들에 N개의 채널들과 M개의 웨이들이 접속된 경우 상기 버퍼 메모리의 논리 어드레스들은 복수의 캐시웨이들을 구성하며, 상기 캐시웨이들 각각은 N개의 볼륨들과 M개의 뱅크들에 대응되는 N×M개의 캐시라인들을 포함하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 컨트롤러는 적어도 하나의 캐시웨이에 대응되는 복수의 데이터가 상기 메인 메모리들에서 저장되도록 제어하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 컨트롤러는 상기 캐시라인에 대응되는 섹터에 저장된 데이터를 대응되는 메인 메모리에 기록하기 위한 기록 오퍼레이션을 잡유닛 단위로 등록하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 컨트롤러는 상기 등록된 기록 오퍼레이션을 큐잉하여 잡유닛 플레이트를 구성하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 복수의 메인 메모리들에 N개의 채널들과 M개의 웨이들이 접속된 경우 상기 잡유닛 플레이트에는 N개의 볼륨들과 M개의 뱅크들에 대응되는 N×M개의 잡유닛들이 포함되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 컨트롤러는 적어도 하나의 잡유닛 플레이트 단위로 상기 메인 메모리들에 대한 기록 오퍼레이션들을 실행하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 실행된 기록 오퍼레이션들 각각은 상기 메인 메모리들에 접속된 각각의 채널과 각각의 웨이에 대응되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 잡유닛들 각각은 대응되는 볼륨 및 뱅크에 따라 상기 잡유닛 플레이트 상의 고유의 위치에 큐잉되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 컨트롤러는 상기 큐잉 동작시 동일한 볼륨 및 동 일한 뱅크에 대응되는 복수의 잡유닛들을 상기 잡유닛 플레이트 상의 동일한 위치에 적층시키는 것을 특징으로 한다.
이 실시예에 있어서, 상기 컨트롤러는, 상기 메인 메모리들의 채널 및 웨이 정보를 근거로 하여 상기 메인 메모리들과 상기 버퍼 메모리의 기록 내지 읽기동작을 제어하는 버퍼 메모리 제어부를 포함하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 버퍼 메모리 제어부는 상기 복수의 채널들 및 상기 복수의 웨이들에 대응되도록 상기 복수의 데이터가 상기 버퍼 메모리에 저장되는 위치를 관리하는 버퍼 매니저; 그리고 상기 버퍼 메모리에 저장된 상기 복수의 데이터가 상기 메인 메모리들에 저장되는 타이밍을 스케쥴링하는 스케쥴러를 포함하는 것을 특징으로 한다.
상기의 과제를 이루기 위하여 본 발명에 의한 복수의 채널들 및 복수의 웨이들에 전기적으로 접속된 복수의 메인 메모리들을 구비한 데이터 저장 장치의 데이터 저장 방법은, 상기 메인 메모리들에 저장될 복수의 데이터를 상기 복수의 채널들 및 상기 복수의 웨이들에 대응되도록 버퍼 메모리에 저장하는 단계; 상기 버퍼 메모리에 저장된 데이터가 상기 복수의 채널들과 상기 복수의 웨이들에 분산될 수 있도록 상기 메인 메모리들에 대한 기록 오퍼레이션들을 스케쥴링 하는 단계; 그리고 상기 스케쥴링 결과에 응답해서 상기 버퍼 메모리에 저장된 상기 복수의 데이터를 상기 복수의 메인 메모리들로 기록하는 단계를 포함하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 복수의 데이터를 상기 버퍼 메모리에 분산하는 단계는, 상기 메인 메모리들의 논리 어드레스들에 응답해서 상기 논리 어드레스들에 대응되는 상기 버퍼 메모리의 볼륨들 및 뱅크들을 결정하는 단계; 그리고 상기 결정된 볼륨들 및 뱅크들에 대응되는 복수의 섹터들에게 상기 복수의 데이터를 저장하는 단계를 포함하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 볼륨들 각각은 상기 메인 메모리들에 접속된 각각의 채널에 대응되고, 상기 뱅크들 각각은 상기 메인 메모리들에 접속된 각각의 웨이에 대응되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 섹터들의 논리 어드레스들과, 상기 섹터들의 볼륨 및 뱅크 정보들을 저장하는 단계를 더 포함하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 복수의 데이터를 상기 복수의 메모리들에 저장하는 단계는, 상기 버퍼 메모리에 저장된 각각의 데이터를 대응되는 메인 메모리로 기록하기 위한 기록 오퍼레이션을 잡유닛 단위로 등록하는 단계; 상기 잡유닛에 대응되는 볼륨 및 뱅크 정보를 근거로 하여 잡유닛 플레이트가 구성될 때까지 상기 잡유닛을 큐잉하는 단계; 그리고 상기 잡유닛 플레이트가 구성되면, 상기 구성된 잡유닛 플레이트에 대응되는 복수의 기록 오퍼레이션들을 병렬로 실행하는 단계를 포함하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 잡유닛 플레이트는 상기 복수의 채널들과 상기 복수의 웨이들에 대응되는 복수의 잡유닛들을 포함하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 복수의 기록 오퍼레이션들은 상기 복수의 채널들 및 상기 복수의 웨이들에 대응되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 각각의 잡유닛은 대응되는 볼륨 및 뱅크에 따라서 상기 잡유닛 플레이트 상의 고유의 위치에 큐잉되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 잡유닛을 큐잉하는 단계는 동일한 볼륨 정보 및 동일한 뱅크 정보를 갖는 잡유닛들을 상기 잡유닛 플레이트 상에서 동일한 위치에 적층하는 단계를 포함하는 것을 특징으로 한다.
상기의 과제를 이루기 위하여 본 발명에 의한 데이터 저장 장치의 데이터 저장 방법은, 호스트로부터 입력된 기록 커멘드에 응답해서 버퍼 메모리의 캐시라인을 요청하는 단계; 상기 버퍼 메모리에 빈 캐시라인이 존재하는 경우, 상기 빈 캐시라인에 상기 데이터를 임시 저장하는 단계; 상기 버퍼 메모리에 빈 캐시라인이 존재하지 않는 경우, 빅팀 캐시라인을 선정하고 플러시를 수행하는 단계; 상기 플러시된 캐시라인의 데이터를 메인 메모리에 기록하기 위한 기록 오퍼레이션을 잡유닛 단위로 등록하는 단계; 상기 잡유닛에 대응되는 볼륨 및 뱅크 정보를 근거로 하여 잡유닛 플레이트가 구성될 때까지 상기 잡유닛을 큐잉하는 단계; 그리고 상기 잡유닛 플레이트가 구성되면, 상기 구성된 잡유닛 플레이트에 대응되는 복수의 기록 오퍼레이션들을 복수의 채널들 및 복수의 웨이들에 접속된 복수의 메인 메모리들에서 실행하는 단계를 포함하는 것을 특징으로 한다.
상기의 과제를 이루기 위하여 본 발명에 의한 컴퓨팅 시스템은, 호스트; 그리고 상기 호스트로부터 입력된 기록 커멘드에 응답해서 데이터를 기록하는 데이터 저장 장치를 포함한다. 여기서, 상기 데이터 저장 장치는 복수의 채널들 및 복수의 웨이들에 접속된 복수의 메인 메모리들; 상기 메인 메모리들에 기록될 복수의 데이터를 임시 저장하는 버퍼 메모리; 그리고 상기 메인 메모리들의 채널 및 웨이 정보 에 대응되도록 상기 복수의 데이터를 상기 버퍼 메모리에 저장하는 컨트롤러를 포함하는 것을 특징으로 한다.
상기의 과제를 이루기 위하여 본 발명에 의한 복수의 채널들 및 복수의 웨이들에 전기적으로 접속된 복수의 메인 메모리들을 구비한 데이터 저장 장치의 데이터 저장 방법을 컴퓨터에서 실행시키기 위한 프로그램으로 기록하고 컴퓨터로 읽을 수 있는 저장 매체는, 상기 메인 메모리들에 저장될 복수의 데이터를 상기 복수의 채널들 및 상기 복수의 웨이들에 대응되도록 버퍼 메모리에 저장하는 단계; 상기 버퍼 메모리에 저장된 데이터가 상기 복수의 채널들과 상기 복수의 웨이들에 분산될 수 있도록 상기 메인 메모리들에 대한 기록 오퍼레이션들을 스케쥴링 하는 단계; 그리고 상기 스케쥴링 결과에 응답해서 상기 버퍼 메모리에 저장된 상기 복수의 데이터를 상기 복수의 메인 메모리들로 기록하는 단계를 포함하는 것을 특징으로 한다.
이상과 같은 본 발명에 의하면 플래시 메모리의 채널 및 웨이 구조를 고려하여 버퍼 메모리에 데이터를 분산 저장 할 수 있게 된다. 그리고, 버퍼 메모리에 분산 저장된 데이터가 복수의 채널들과 복수의 웨이들에 접속된 복수의 플래시 메모리들에 분산되어 저장될 수 있도록 스케쥴링할 수 있게 된다. 그 결과, 데이터 저장 장치의 채널 이용도 및 데이터 저장 성능이 효과적으로 향상된다.
본 발명의 예시적인 실시예들이 참조 도면들에 의거하여 이하 상세히 설명될 것이다. 그러나, 아래에서 설명될 본 발명의 데이터 저장 장치의 회로 구성 및 동작은 예를 들어 설명한 것에 불과하다. 본 발명의 데이터 저장 장치는 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 다양한 변화 및 변경이 가능하다.
본 발명의 데이터 저장 장치는 반도체 메모리 중에서도 플래시 메모리를 메인 스토리지로서 채택한 SSD가 예시적으로 설명될 것이다. 본 발명의 데이터 저장 장치는 메인 스토리지인 플래시 메모리의 채널 및 웨이 구조를 근거로 하여 버퍼 메모리에 데이터를 저장한다. 또한, 본 발명의 데이터 저장 장치는, 버퍼 메모리에 저장된 데이터가 복수의 채널들과 복수의 웨이들에 접속된 복수의 플래시 메모리들에 분산되어 저장될 수 있도록 호스트로부터 제공된 커멘드들을 스케쥴링한다. 그 결과, 데이터 저장 장치의 채널 이용도와 데이터 저장 성능이 향상된다.
도 1은 본 발명에 따른 데이터 저장 장치(500, 이하 SSD라 칭함) 및 그것을 포함하는 메모리 시스템(1000)의 구성을 보여주는 블록도이다.
도 1을 참조하면, 본 발명의 메모리 시스템(1000)은 SSD(data storage device; 500)와 호스트(900)로 구성될 수 있다. SSD(500)는 SSD 컨트롤러(SSD controller; 100), 버퍼 메모리(buffer memory; 200), 및 데이터 저장부(300, 도 1에는 storage로 표시됨)로 구성될 수 있다.
버퍼 메모리(200)는 SSD 컨트롤러(100)와 데이터 저장부(300) 사이에 송수신되는 데이터와, SSD 컨트롤러(100)와 호스트(900) 사이에 송수신되는 데이터를 임시로 저장할 수 있다. SSD 컨트롤러(100) 내부에는 버퍼 메모리(200)의 데이터 입출력을 제어하는 버퍼 메모리 제어 기능이 구비될 수 있다. 이는 버퍼 메모리(200) 의 데이터 입출력 동작이 SSD 컨트롤러(100)를 통해 수행될 수 있음을 의미한다. 버퍼 메모리(200)는 도 1과 같이 SSD 컨트롤러(100) 외부에 구비될 수도 있고, SSD 컨트롤러(100) 내부에 구비될 수도 있다. 버퍼 메모리는 DRAM 또는 SRAM과 같이 랜덤 액세스가 가능한 메모리로 구성될 수 있다.
데이터 저장부(300)는 SSD(500)의 메인 스토리지이다. 데이터 저장부(300)는 하드 디스크 드라이브(HDD)의 플래터(platter) 대신에 반도체 메모리 칩들을 사용하여 데이터를 저장한다. 데이터 저장부(300)는 불휘발성 메모리 또는 휘발성 메모리로 구성될 수 있다. SSD 컨트롤러(100)와 데이터 저장부(300) 사이에는 복수의 채널들(예를 들면, N개)이 구성될 수 있다. 그리고, 각각의 채널에는 복수 개의 웨이(예를 들면, M개)가 구성될 수 있다. 채널 및 웨이에 대한 상세 구성은 도 3을 참조하여 상세히 설명될 것이다.
본 발명에서는 데이터 저장부(300)가 불휘발성 메모리인 플래시 메모리로 구성되는 경우에 대해 예시적으로 설명될 것이다. 그러나, 본 발명에서 데이터 저장부(300)에 적용되는 메모리는 특정 종류 및 특정 형태에만 국한되지 않고 다양한 형태로 구성될 수 있다. 예를 들면, 데이터 저장부(300)에 적용되는 메모리는 플래시 메모리뿐만 아니라 MRAM, PRAM 등의 불휘발성 메모리를 포함할 수 있다. 또한, 데이터 저장부(300)에 적용되는 메모리는 DRAM 등과 같은 휘발성 메모리를 포함할 수 있다. 데이터 저장부(300)는, 적어도 하나의 불휘발성 메모리와 적어도 하나의 휘발성 메모리가 혼합된 형태로 구성될 수도 있고, 적어도 두 종류 이상의 불휘발성 메모리들이 혼합된 형태로 구성될 수도 있다.
또한, 데이터 저장부(300)를 구성하는 메모리들의 각 메모리 셀에 저장되는 데이터 비트 수는 다양한 형태로 구성 가능하다. 예를 들면, 플래시 메모리들은 셀 당 1 비트의 데이터가 저장되는 단일-레벨 플래시 메모리 셀들로 구성될 수도 있고, 셀 당 복수 비트의 데이터가 저장되는 멀티-레벨 플래시 메모리 셀들로 구성될 수도 있다. 그리고, 플래시 메모리들을 구성하는 메모리 셀의 종류 또한 다양한 형태로 구성될 수 있다. 예를 들면, 플래시 메모리들은 낸드(NAND) 플래시 메모리, 노어(NOR) 플래시 메모리, One_NAND 플래시 메모리 (플래시 메모리 코어 및 메모리 제어 로직이 단일의 칩으로 구현된 것) 중 적어도 어느 하나로 구성될 수 있다. 그리고, 플래시 메모리들은 적어도 두 종류 이상의 플래시 메모리들이 혼합된 하이브리드 형태로도 구성될 수 있다. 이 외에도, 플래시 메모리들의 메모리 셀의 전하 저장층의 구조 또한 다양한 형태로 구성될 수 있다. 예를 들면, 메모리 셀의 전하 저장층이 전도성이 있는 다결정 실리콘 등으로 구성될 수도 있고, Si3N4, Al2O3, HfAlO, HfSiO 등과 같은 절연막을 이용하여 구성될 수도 있다. Si3N4, Al2O3, HfAlO, HfSiO 등과 같은 절연막을 전하 저장층으로 이용하는 플래시 메모리 구조를 차지 트랩형 플래시(Charge Trap Flash, "CTF"라 불림) 메모리라 부르기도 한다.
SSD 컨트롤러(100)는 호스트(900)로부터 입력된 커멘드에 응답하여 버퍼 메모리(200)와 데이터 저장부(300)로/로부터 데이터를 기록하는/읽는 동작을 제어한다. SSD 컨트롤러(100)는 SSD의 제반 동작을 제어하며, SSD 컨트롤러로 불리기도 한다. 아래에서 상세히 설명되겠지만, 본 발명의 본 발명의 SSD 컨트롤러(100)는 데이터 저장부(300)의 채널 및 웨이 구조를 근거로 하여 버퍼 메모리(200)로/로부 터 데이터를 기록하는/읽는 동작을 제어한다. 또한, 본 발명의 본 발명의 SSD 컨트롤러(100)는, 플래시 메모리들의 기록 동작시 버퍼 메모리(200)에 저장된 데이터가 복수의 채널들과 복수의 웨이들로 분산되어 저장될 수 있도록 플래시 기록 오퍼레이션들을 스케쥴링한다. 버퍼 메모리(200)에 대한 데이터 저장 방식과, 버퍼 메모리(200)에 저장된 데이터와 관련된 플래시 기록 오퍼레이션들에 대한 스케줄링 동작은 SSD 컨트롤러(100)에 탑재된 제어 알고리즘에 의해 수행될 수 있다.
도 2는 도 1에 도시된 SSD 컨트롤러(100)의 상세 구성을 보여주는 도면이다.
도 2를 참조하면, SSD 컨트롤러(100)는 중앙처리장치(110, 이하 CPU라 칭함), 내부 메모리(internal memory; 120), 버퍼 메모리 제어부(buffer memory control unit; 130), 호스트 인터페이스(170, 도면에는 host I/F로 표시됨), 및 플래시 인터페이스(180, 도면에는 flash I/F로 표시됨)를 포함한다. CPU(110), 내부 메모리(120), 버퍼 메모리 제어부(130), 호스트 인터페이스(170), 및 플래시 인터페이스(180)는 CPU 버스를 통해 상호 연결될 수 있다.
CPU(10)는 SSD 컨트롤러(100)의 제반 동작을 제어한다. SSD 컨트롤러(100) 내부에는 하나 또는 그 이상의 CPU(110)가 구비될 수 있다. 하나의 CPU(110)가 구비된 경우를 단일 코어 프로세서라 한다. 복수의 CPU(110)가 구비된 경우를 멀티 코어 프로세서라 한다. CPU(110), 내부 메모리(120) 및 버퍼 메모리 제어부(130)는 제어 로직을 형성할 수 있다. CPU(110), 내부 메모리(120) 및 버퍼 메모리 제어부(130)로 구성된 제어 로직은 SoC(System On Chip) 기술을 바탕으로 하여 단일칩 형태로 구성될 수 있다. 제어 로직을 구성하는 단일칩 내부에는 호스트 인터페이 스(170) 및 플래시 인터페이스(180)가 더 포함될 수 있다.
SSD 컨트롤러(100)에서 수행되는 제어 알고리즘은 SSD 컨트롤러(100) 내부에 펌웨어(firmware) 또는 소프트웨어 형태로 저장될 수 있다. SSD 컨트롤러(100)에 저장 또는 탑재된 제어 알고리즘에 의해서, CPU(110), 내부 메모리(120), 버퍼 메모리 제어부(130), 호스트 인터페이스(170), 및 플래시 인터페이스(180)가 동작될 수 있다. 제어 알고리즘은 내부 메모리(120)의 코드 영역에 저장될 수 있다. 그리고, 제어 알고리즘에 의해 처리된 부가 정보(예를 들면, 맵핑 정보 등)는 내부 메모리(120)의 데이터 영역에 저장될 수 있다. 내부 메모리(120)는 CPU(110) 내부에 구비될 수도 있고, CPU(110) 외부에 구비될 수도 있다. 본 발명의 SSD 컨트롤러(100)에서 수행되는 제어 알고리즘의 논리적인 계층 구조와 그 기능은 도 4를 참조하여 상세히 설명될 것이다. 한편, 본 발명에서는 SSD 컨트롤러(100)에서 수행되는 제어 알고리즘이 펌웨어 또는 소프트웨어 형태로 SSD 컨트롤러(100)에 탑재되는 경우가 예시적으로 설명될 것이다. 그러나, 상기 제어 알고리즘에 포함된 각각의 구성요소는 펌웨어 또는 소프트웨어 형태 뿐만 아니라 하드웨어 형태로도 구성될 수 있다.
호스트 인터페이스(170)는 CPU(110)의 제어에 따라서 호스트(900)와 커멘드, 어드레스, 및 데이터를 교환한다. 호스트 인터페이스(170)는 USB(Universal Serial Bus), MMC(MultiMediaCard), PCI-E(PCIExpress), ATA(AT Attachment), SATA(Serial AT Attachment), PATA(Parallel AT Attachment), SCSI(Small Computer System Interface), SAS(Serial Attached SCSI), ESDI(Enhanced Small Disk Interface), 그리고 IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스들 중 하나를 지원할 수 있다. 버퍼 메모리 제어부(130)는 CPU(110)의 제어에 응답해서 내부 메모리(120)와 버퍼 메모리(200)의 액세스 동작(예를 들면, 읽기/기록/소거 동작들)을 제어한다. 그리고, 플래시 인터페이스(180)는 내부 메모리(120) 및/또는 버퍼 메모리(200)와 데이터 저장부(300) 사이의 데이터 송수신과, 내부 메모리(120)와 버퍼 메모리(200) 사이의 데이터 송수신을 수행한다.
호스트(900)로부터 읽기 커멘드(read command)가 입력되면, 데이터 저장부(300)로부터 읽어온 읽기 데이터(read data)는 플래시 인터페이스(180) 및 버퍼 메모리 제어부(130)를 통해 버퍼 메모리(200)에 임시 저장된다. 버퍼 메모리(200)에 임시 저장된 읽기 데이터는 버퍼 메모리 제어부(130)와 호스트 인터페이스(170)를 통해 외부(또는 호스트(900))로 출력된다.
한편, 호스트(900)로부터 요청된 기록 커멘드(write command)는 크게 두 개의 단계에 의해 수행될 수 있다. 첫 번째 단계는, 호스트 인터페이스(170)를 통해 입력된 기록 데이터(write data)가 버퍼 메모리 제어부(130)를 통해 버퍼 메모리(200)에 임시 저장되는 단계이다. 두 번째 단계는, 버퍼 메모리(200)에 임시 저장된 기록 데이터가 버퍼 메모리 제어부(130) 및 플래시 인터페이스(180)를 통해 데이터 저장부(300)에 저장되는 단계이다. 본 발명에서는, 첫 번째 단계를 버퍼 메모리 기록 오퍼레이션(buffer write operation)이라 하고, 두 번째 단계를 플래시 기록 오퍼레이션(Flash write operation)이라 부르기로 한다.
CPU(110)는 기록 커멘드의 수행시 버퍼 메모리 기록 오퍼레이션만 종료되면, 기록 커멘드가 종료된 것을 알리는 신호를 호스트 인터페이스(170)를 통해 호스트(900)로 제공한다. 그리고, 아직 처리되지 않은 플래시 기록 오퍼레이션은 CPU(110)가 바쁘지 않은 적절한 때 SSD(100) 내부적으로 수행된다. 본 발명의 SSD(100)는 버퍼 기록 오퍼레이션이 완료될 때마다 플래시 기록 오퍼레이션을 이슈하지 않고 해당 기록 오퍼레이션을 큐잉한다. 그리고, 복수 개의 플래시 기록 오퍼레이션들이 복수의 채널과 복수의 웨이에서 병렬로 수행될 수 있도록 하기 위해, 큐잉된 플래시 기록 오퍼레이션들을 스케쥴링한다. 본 발명에 따른 플래시 기록 오퍼레이션들의 큐잉 및 스케쥴링 동작에 대해서는 도 9 내지 도 11을 참조하여 아래에서 상세히 설명될 것이다.
이 외에도, 본 발명에서는 버퍼 기록 오퍼레이션의 수행시, 플래시 메모리의 채널 및 웨이 구조를 고려하여 기록 데이터를 버퍼 메모리(200)에 분산 저장한다. 그 결과, 플래시 기록 오퍼레이션의 수행시 버퍼 메모리(200)에 저장된 기록 데이터를 채널 및 웨이 별로 처리하기가 용이해 진다. 본 발명에 따른 버퍼 메모리(200)의 데이터 분산 저장 방식에 대해서는 도 6 내지 도 8을 참조하여 아래에서 상세히 설명될 것이다.
읽기/기록 데이터에 대한 임시 저장 기능은, 버퍼 메모리(200) 외에도 내부 메모리(120)의 데이터 영역을 이용하여 수행될 수 있다. 읽기/기록 데이터의 용량이 커질수록 읽기/기록 데이터를 임시 저장하는 기능은 내부 메모리(120) 보다는 버퍼 메모리(200)에서 주로 수행될 것이다. 본 발명에서는 임시 저장 기능을 수행할 수 있는 메모리 중에서, 버퍼 메모리(200)의 데이터 저장 방식에 대해 예시적으 로 설명될 것이다. 그러나, 이는 본 발명이 적용되는 일 예로서, 본 발명에 따른 버퍼 메모리의 데이터 저장 방식은 내부 메모리(120) 또는 이에 상응하는 메모리에도 모두 적용될 수 있다.
도 3은 도 1에 도시된 데이터 저장부(300)의 채널 및 웨이의 구성을 예시적으로 보여주는 도면이다.
도 3을 참조하면, SSD 컨트롤러(100)와 데이터 저장부(300) 사이에는 복수의 채널들(예를 들면, N개)이 구성될 수 있다. 각각의 채널(CH0, CH1, …, CH(N-1))에는 복수의 플래시 메모리들(310, 320, 330)이 전기적으로 연결될 수 있다. 각각의 채널(CH0∼CH(N-1))은 대응되는 플래시 메모리들로 커멘드 및 데이터를 송수신할 수 있는 독립적인 버스를 의미한다. 서로 다른 채널(CH0, CH1, …, CH(N-1))에 접속된 플래시 메모리들(310, 320, 330)은 각각 독립적으로 동작할 수 있다. 각각의 채널에 접속된 복수의 플래시 메모리들(310, 320, 330)은 복수의 웨이들(way0∼way(M-1))(예를 들면, M개)을 구성할 수 있다. 각 채널에 구성된 M 개의 웨이에는 총 M 개의 플래시 메모리 칩들이 접속될 수 있다.
예를 들면, 참조번호 310의 플래시 메모리들은 0번 채널(CH0)에서 M 개의 웨이들(way0∼way(M-1))을 구성할 수 있다. 0번 채널(CH0)의 각 웨이에는 대응되는 플래시 메모리 칩(311-31m)이 접속될 수 있다. 이와 같은 플래시 메모리들과 각각의 채널과 각각의 웨이와의 접속 관계는, 참조번호 320의 플래시 메모리들 및 참조번호 330의 플래시 메모리들에도 모두 적용될 수 있다.
웨이(way)는 동일한 채널을 공유하는 플래시 메모리 칩들을 구분하기 위한 단위이다. 채널 번호와 웨이 번호에 따라서 각각의 플래시 메모리 칩이 식별될 수 있다. 예를 들면, 0번 채널(CH0)의 1번 웨이(way1)는 참조번호 311의 플래시 메모리 칩을 나타낸다. 그리고, 1번 채널(CH1)의 2번 웨이(way2)는 참조번호 323의 플래시 메모리 칩을 나타낸다. 호스트로부터 제공된 커멘드가 어느 채널의 어느 웨이의 플래시 메모리 칩에서 수행될지는, 호스트(900)로부터 전달된 논리 블록 어드레스(Logical Block Address ; LBA)에 의해 정해질 수 있다. 즉, 데이터 저장부(300)를 구성하는 각각의 플래시 메모리 칩은 대응되는 채널 및 웨이 정보에 따라 어드레스가 관리된다.
각각의 플래시 메모리 칩에 저장될/읽혀진 데이터는 버퍼 메모리(200)에 임시 저장된다. 버퍼 메모리(200)는 DRAM 또는 SRAM으로 구성될 수 있다. 버퍼 메모리(200)는 플래시 메모리와 다른 종류의 메모리로 구성되기 때문에 읽기/기록 특성이 플래시 메모리와 다르다. 그리고, 버퍼 메모리(200)는 플래시 메모리처럼 채널 및 웨이 구성을 가지고 있지 않는다. 따라서, 기록 커멘드의 처리시 버퍼 메모리(200)에서 수행되는 버퍼 기록 오퍼레이션은 플래시 메모리의 채널 및 웨이 구성과 무관하게 수행될 수 있다. 그러므로, 본 발명에 따른 버퍼 메모리(200)의 데이터 저장 방식 및 스케쥴링 방식이 적용되지 않을 경우, 플래시 기록 오퍼레이션이 수행중인 채널로 다른 플래시 기록 오퍼레이션이 연속해서 이슈될 수 있다. 동일한 채널에 연속해서 플래시 기록 오퍼레이션이 이슈되는 경우, 나중에 이슈된 플래시 오퍼레이션은 먼저 수행중인 플래시 오퍼레이션이 종료될 때까지 대기하여야 한다. 이는 플래시 메모리에서 원치 않는 동작 지연을 유발할 수 있다.
이와 같은 문제점을 방지하기 위해, 본 발명에서는 기록 커멘드의 버퍼 기록 오퍼레이션의 수행시 플래시 메모리의 채널 및 웨이 구조를 근거로 하여 버퍼 메모리(200)에 기록 데이터를 분산 저장한다. 그리고, 버퍼 메모리(200)에 저장된 데이터가 복수의 채널들과 복수의 웨이들에 분산되어 제공될 수 있도록 플래시 기록 오퍼레이션들을 스케쥴링한다. 그 결과, 플래시 메모리와 버퍼 메모리(200)의 물리적인 구성의 차이(예를 들면, 채널 및 웨이의 구성)로 인해 발생될 수 있는 지연시간이 방지된다. 그리고, 복수의 채널에서 복수 개의 플래시 기록 오퍼레이션들이 병렬로 수행될 수 있게 되어, SSD(500)의 전체 성능이 향상된다.
도 4는 본 발명의 SSD 컨트롤러(100)에서 수행되는 제어 알고리즘의 논리적인 계층 구조를 보여주는 도면이고, 도 5는 도 4에 도시된 제어 알고리즘의 동작을 설명하기 위한 도면이다.
도 4 및 도 5를 참조하면, 본 발명의 SSD 컨트롤러(100)에서 수행되는 제어 알고리즘은 호스트 인터페이스 계층(Host Interface Layer ; 10), 캐시 인터페이스 계층(Cache Interface Layer ; 20), 플래시 변환 계층(Flash Translation Layer ; 50)(이하 FTL이라 칭함), 및 플래시 인터페이스 계층(Flash Interface Layer ; 60)을 포함한다.
데이터 저장부(300)를 구성하는 플래시 메모리는, 재기록(overwrite)이 불가능한 불휘발성 메모리이다. 그러므로, 데이터가 기록될 플래시 메모리 셀들은 반드시 소거(erase)된 상태에 있어야만 한다. 그러나, 플래시 메모리에서 프로그램 되는 데이터의 단위는 소거되는 데이터의 단위와 서로 다르다. 예를 들면, 플래시 메 모리는 페이지 단위로 프로그램 되는 반면, 소거 동작은 블록 단위로 수행된다. 1개의 블록은 복수 개의 페이지들로 구성된다. 빈번한 소거 동작은 플래시 메모리의 수명을 단축시킬 수 있다. 따라서, 소거 횟수를 최소화 하면서도 소거된 메모리 셀들 중에서 프로그램 될 메모리 셀들을 지정해 주기 위해 FTL(50)이 사용된다.
FTL(50)은 호스트로부터 제공된 논리 블록 어드레스(LBA)를 LPN(Logical Page Number)로 변환한다. 그리고, FTL(50)은 변환된 LPN 을 소거된 플래시 메모리의 물리 블록 어드레스(Physical Block Address ; PBA)로 맵핑 시켜 주는 어드레스 맵핑 기능을 수행한다. 이 외에도, FTL(50)은 배드 블록 관리, 예상치 못한 전원 차단에 기인한 데이터 보존성 관리, 마모도 관리 등의 기능을 수행한다. 플래시 메모리(310-330)의 어드레스 맵핑 정보는 플래시 메모리(310-330)의 임의의 영역(예를 들면, 메타 영역)에 저장될 수 있고, 저장된 어드레스 맵핑 정보는 파워-업 동작시 내부 메모리(120) 또는 버퍼 메모리(200)로 로딩될 수 있다.
호스트 인터페이스 계층(10)은, 호스트(900)와 호스트 인터페이스(170)에서 수행되는 인터페이스 동작을 제어하는 기능을 수행한다. 호스트 인터페이스 계층(10)의 기능이 프로그램된 소프트웨어 또는 펌웨어는, 호스트 인터페이스(170)에 직접 탑재될 수도 있고, 내부 메모리(120)에 저장되어 호스트 인터페이스(170)의 동작을 제어하는데 사용될 수도 있다. 플래시 인터페이스 계층(60)은 플래시 인터페이스(180)와 데이터 저장부(300)에 구비된 플래시 메모리들 사이에서 수행되는 인터페이스 동작을 제어하는 기능을 수행한다. 플래시 인터페이스 계층(60)의 기능이 프로그램 된 소프트웨어 또는 펌웨어는, 플래시 인터페이스 계층(60)에 직접 탑 재될 수도 있고, 내부 메모리(120)에 저장되어 플래시 인터페이스 계층(60)의 동작을 제어하는데 사용될 수도 있다.
캐시 인터페이스 계층(20)은 버퍼 메모리 제어부(130)에서 수행되는 내부 메모리(120) 및/또는 버퍼 메모리(200)의 읽기/기록 동작을 제어하는 기능을 수행한다. 캐시 인터페이스 계층(20)의 기능이 프로그램 된 소프트웨어 또는 펌웨어는, 버퍼 메모리 제어부(130)에 직접 탑재될 수도 있고, 내부 메모리(120)에 저장되어 버퍼 메모리 제어부(130)의 동작을 제어하는데 사용될 수도 있다. 캐시 인터페이스 계층(20)은 버퍼 매니저(Buffer Manager ; 30)와 스케쥴러(Scheduler ; 40)를 포함한다.
버퍼 매니저(30)는 플래시 메모리(310-330)의 채널 및 웨이 구조를 근거로 하여 버퍼 메모리(200)에 저장되는 데이터를 관리하는 기능을 수행한다. 예를 들면, 버퍼 매니저(30)는 버퍼 메모리(200)에 포함된 복수 개의 섹터들을 볼륨(Volume)과 뱅크(Bank) 단위로 구분한다. 그리고, 볼륨 및 뱅크 단위로 구분된 각각의 섹터에 데이터를 분산 저장한다. 버퍼 메모리(200)의 볼륨은 플래시 메모리의 채널에 대응될 수 있다. 버퍼 메모리(200)의 뱅크는 플래시 메모리의 웨이에 대응될 수 있다. 버퍼 메모리(200)의 볼륨 및 뱅크의 물리적인 구성은 도 6에서 상세히 설명될 것이다.
버퍼 매니저(30)는 버퍼 메모리(200)에 저장될 데이터를 볼륨 및 뱅크 단위로 분산시키는데 플래시 메모리(310-330)의 LPN을 사용할 수 있다. LPN은 FTL(50)에서 관리되는 논리적인 데이터 단위를 의미한다. 플래시 메모리(310-330)의 LPN과 버퍼 메모리(200)의 볼륨 및 뱅크 사이의 맵핑 정보는 내부 메모리(120) 또는 버퍼 메모리(200)에 저장될 수 있다. 버퍼 메모리(200)의 맵핑 정보는 맵핑 테이블 형태로 저장될 수 있다. 버퍼 매니저(30)는 버퍼 메모리(200)에 데이터가 분산 저장되고 나면(즉, 버퍼 기록 오퍼레이션이 수행되고 나면), 플래시 기록 오퍼레이션을 FTL(50)로 이슈하지 않고 스케쥴러(40)에 등록한다. 본 발명에서는 스케쥴러(40)에 등록되는 각각의 플래시 기록 오퍼레이션을 잡유닛(JobUnit)이라 정의한다. 하나의 잡유닛에 대응되는 기록 데이터는 버퍼 메모리(200)의 하나의 캐시라인에 의해 지정된 하나의 섹터로부터 제공될 수 있다.
스케쥴러(40)는, 버퍼 메모리(200)에 분산 저장된 데이터가 데이터 저장부(300)의 복수의 채널들과 복수의 웨이들에 분산되어 제공될 수 있도록, 플래시 기록 오퍼레이션들을 스케쥴링한다. 구체적으로, 스케쥴러(40)는 각각의 잡유닛(JobUnit)에 대응되는 버퍼 메모리(200)의 볼륨 및 뱅크 정보를 고려하여 잡유닛 플레이트(JobUnit Plate)를 구성한다. 1개의 잡유닛 플레이트에는 복수 개의 잡유닛들이 포함되며, 복수 개의 잡유닛 플레이트들은 잡유닛 박스(JobUnit Box)를 구성할 수 있다. 스케쥴러(40)는 버퍼 매니저(30)로부터 제공된 플래시 기록 오퍼레이션들이 하나의 잡유닛 플레이트를 형성할 때마다 잡유닛 플레이트에 대응되는 복수 개의 플래시 기록 오퍼레이션들을 FTL(50)로 이슈한다. 이슈된 복수 개의 플래시 기록 오퍼레이션들에서 기록될 데이터는, 버퍼 메모리(200)의 하나의 캐시웨이에 의해 지정된 복수 개의 섹터들로부터 제공될 것이다.
FTL(50)은 스케쥴러(40)로부터 이슈된 복수 개의 플래시 기록 오퍼레이션들 에 응답해서, 각각의 플래시 기록 오퍼레이션에 대응되는 LPN을 대응되는 플래시 메모리의 PBA로 맵핑한다. 그리고, 맵핑된 PBA에 대응되는 플래시 메모리에 데이터를 기록한다. 본 발명에 따른 잡유닛, 잡유닛 플레이트, 및 잡유닛 박스의 구성과, 스케쥴러(40)에서 수행되는 커멘드 스케쥴링 방법은 도 9 내지 도 11을 참조하여 아래에서 상세히 설명될 것이다.
도 6은 본 발명에 따른 버퍼 메모리(200)의 캐시라인, 캐시라인 그룹, 및 캐시웨이의 물리적인 구성을 보여주는 도면이다. 도 6에는 1 개의 캐시웨이(Cache Way ; 210)의 구성이 예시적으로 도시되어 있다.
도 6을 참조하면, 버퍼 메모리(200)는 복수 개의 섹터들로 구성될 수 있다. 복수 개의 섹터들은 복수 개(예를 들면, N개)의 볼륨들과, 복수 개(예를 들면, M개)의 뱅크들의 교차 영역에 배치될 수 있다. 볼륨은 플래시 메모리의 채널에 대응될 수 있고, 뱅크는 플래시 메모리의 웨이에 대응될 수 있다. 여기서, 볼륨의 개수를 나타내는 N은 데이터 저장부(300)에 형성된 채널들의 개수에 대응될 수 있다. 그리고, 뱅크의 개수를 나타내는 M은 데이터 저장부(300)에 형성된 웨이들의 개수에 대응될 수 있다. N 및 M은 데이터 저장부(300)의 채널 및 웨이의 개수에 따라서 변경될 수 있다. N 및 M은 서로 다른 값을 가질 수도 있고 서로 동일한 값을 가질 수도 있다.
본 발명에서는 N개의 볼륨들과 M개의 뱅크들로 구성된 N×M개의 섹터들의 집합의 논리 어드레스를 캐시웨이(210)로 정의한다. 그리고, 1개의 볼륨과 1개의 뱅크에 대응되는 1개의 섹터의 논리 어드레스를 1개의 캐시라인(Cache Line)으로 정 의한다. 버퍼 메모리에는 복수 개의 캐시웨이들이 대응될 수 있다. 각각의 캐시웨이에서 행(column) 방향으로 배열된 N개의 캐시라인들은 1 개의 캐시라인 그룹(220_i)을 형성할 수 있다. 1개의 캐시웨이(210)에는 M 개의 캐시라인 그룹들(220_0, 220_1, …, 220_(M-1))이 포함될 수 있다. 각각의 캐시라인 그룹(220_i)에 포함된 N 개의 캐시라인들은 N 개의 채널들에 각각 대응될 수 있다.
도 7 및 도 8은 본 발명에 따른 버퍼 메모리(200)의 논리 어드레스인 캐시라인, 캐시라인 그룹, 및 캐시웨이의 구성을 보여주는 도면이다. 도 7 및 도 8에는 1개의 캐시웨이가 8개의 볼륨과 8개의 뱅크로 구성되는 경우가 예시적으로 도시되어 있다. 도 7에는 1 개의 캐시웨이의 구성이 주로 도시되어 있고, 도 8에는 복수 개의 캐시웨이들간의 구성이 주로 도시되어 있다.
도 7 및 도 8을 참조하면, 본 발명에 따른 버퍼 메모리(200)의 데이터 저장 방식에 따르면, 복수 개의 캐시웨이들(210_0, 210_1, …)은 버퍼 메모리(200) 내에 순차적으로 배열될 수 있다. 각각의 캐시웨이(210_i)에는 복수 개(예를 들면, 8개)의 캐시라인 그룹들(220_0, 220_1, …, 220_7)이 포함될 수 있다. 복수 개의 캐시라인 그룹들(220_0, 220_1, …, 220_7)은 대응되는 캐시웨이(210_i) 내에서 순차적으로 배열될 수 있다. 각각의 캐시라인 그룹(220_i)에는 복수 개(예를 들면, 8개)의 캐시라인들(Cache Line0, Cache Line1, …)이 포함될 수 있다. 복수 개의 캐시라인들(Cache Line0, Cache Line1, …)은 대응되는 캐시라인 그룹(220_i) 내에서 순차적으로 배열될 수 있다.
도 7 및 도 8에 도시된 버퍼 메모리(200)의 논리 어드레스의 기본 단위는 캐 시라인(Cache Line i)이다. 각각의 캐시라인은 버퍼 메모리(200)의 1개의 섹터에 대응된다. 1개의 섹터에는 예를 들면 512 바이트의 데이터가 저장될 수 있다. 8개의 섹터는 플래시 메모리의 1개의 페이지에 대응될 수 있다. 도 7 및 도 8에 도시된 논리 어드레스들은 캐시라인(Cache Line i)을 기본 단위로 하여 도 6에 도시되어 있는 섹터들의 물리적인 위치에 각각 대응될 수 있다.
예를 들어, 호스트(900)로부터 기록 커멘드와 이에 대응되는 논리 블록 어드레스(LBA)가 입력되면, 논리 블록 어드레스(LBA)는 FTL(50)에 의해 LPN으로 변환된다. 버퍼 매니저(30)는 변환된 LPN을 참조하여 LPN에 대응되는 버퍼 메모리(200)의 물리 어드레스(즉, 볼륨 및 뱅크)를 결정한다. 버퍼 메모리(200)의 논리 어드레스는 FTL(50)에 의해 변환된 LPN이 직접 사용될 수도 있고, LPN로부터 섹터 단위로 계산된 캐시라인(Cache Line i)의 논리 어드레스가 사용될 수도 있다. 버퍼 메모리(200)의 물리 어드레스를 결정하는 과정은, 버퍼 메모리(200)의 논리 어드레스를 물리 어드레스로 맵핑하는 과정이라 할 수 있다. 버퍼 메모리 제어부(130)는 버퍼 매니저(30)의 제어에 따라서 버퍼 메모리(200)의 논리 어드레스와 물리 어드레스의 맵핑 결과를 내부 메모리(120) 또는 버퍼 메모리에 저장한다. 맵핑 결과는 맵핑 테이블 형태로 저장될 수 있다.
버퍼 메모리(200)의 물리 어드레스가 결정되고 나면, 버퍼 메모리 제어부(130)는 버퍼 매니저(30)의 제어에 따라서 기록 데이터(write data)를 해당 물리 어드레스의 섹터에 저장한다. 기록 데이터를 버퍼 메모리(200)에 저장하는 과정을 버퍼 기록 오퍼레이션이라 한다. 버퍼 기록 오퍼레이션이 수행되고 나면, 버퍼 매 니저(30)는 버퍼 기록 오퍼레이션이 수행된 볼륨과 뱅크 정보를 고려하여 대응되는 플래시 기록 오퍼레이션을 스케쥴러(40)에 등록한다.
도 9는 본 발명에 따른 스케쥴링 동작에 사용되는 잡유닛, 잡유닛 플레이트, 및 잡유닛 박스의 구성을 보여주는 도면이다.
도 4 및 도 9를 참조하면, 버퍼 메모리(200)에 기록 데이터가 저장되고 나면, 스케쥴러(40)는 버퍼 매니저(30)에 의해 등록된 플래시 기록 오퍼레이션을 잡 유닛 단위로 큐잉한다. 스케쥴러(40)는 큐잉된 플래시 기록 오퍼레이션들이 데이터 저장부(300)의 복수의 채널들과 복수의 웨이들에 분산되어 이슈될 수 있도록 스케쥴링한다. 큐잉된 플래시 기록 오퍼레이션들은 스케쥴러(40)의 스케쥴링 결과에 따라 소정의 단위(예를 들면, 잡유닛 플레이트 단위)로 FTL(50)로 이슈된다. 그 결과, 버퍼 메모리(200)에 분산 저장된 기록 데이터가 데이터 저장부(300)의 복수의 채널들과 복수의 웨이들에 분산되어 저장될 수 있게 된다.
본 발명에서는 스케쥴러(40)에 의해 큐잉되는 플래시 기록 오퍼레이션의 기본 단위를 잡유닛(JobUnit ; 410)이라 정의한다. 복수 개의 잡유닛들은 1개의 플레이트(JobUnit Plate ; 420)을 구성할 수 있다. 예를 들어, 데이터 저장부(300)에 N 개의 채널들과 M 개의 웨이들이 구비되는 경우, 버퍼 메모리(200)의 섹터들은 N 개의 볼륨들과 M 개의 뱅크들로 구분될 수 있다. 이 경우, 1 개의 잡유닛 플레이트에는 N×M개의 잡유닛들이 포함될 수 있다.
도 9에는 데이터 저장부(300)에 8 개의 볼륨들(또는 채널들)이 구비되고 8 개의 뱅크들(또는 웨이들)이 구비되는 경우의 잡유닛 플레이트 및 잡유닛 박스의 구성이 예시적으로 도시되어 있다. 그러나, 이는 본 발명이 적용되는 일 예로서, 잡유닛 플레이트(420)를 구성하는 잡유닛들의 개수는 볼륨들(또는 채널들)의 개수와 뱅크들(또는 웨이들)의 개수에 따라 다양하게 구성될 수 있다.
복수 개의 잡유닛 플레이트들은 1개의 잡유닛 박스(JobUnit Box ; 430)를 구성할 수 있다. 잡유닛 박스(430)에 포함된 복수 개의 잡유닛 플레이트들 중 최 하단에 구성된 잡유닛 플레이트를 베이스 플레이트(Base Plate)라 한다. 베이스 플레이트는, 잡유닛 박스(430)에 포함된 각각의 잡유닛 플레이트들과 실질적으로 동일한 볼륨 및 뱅크의 구성을 갖는다. 잡유닛 박스의 깊이(depth)는 소정의 크기(예를 들면 depth = M)(M은 자연수)를 갖도록 구성될 수 있다. 잡유닛 박스(430)의 깊이는 잡유닛 박스(430)에 포함될 수 있는 잡유닛 플레이트(420)의 개수를 의미할 수 있다. 잡유닛 박스(430)의 깊이는 스케쥴러에 의해 큐잉될 수 있는 데이터의 용량의 크기에 따라 다양하게 변경될 수 있다.
도 10은 본 발명에 따른 커멘드 스케쥴링 방법을 설명하기 위한 도면이다.
도 10을 참조하면, 기록 커멘드의 실행시 버퍼 기록 오퍼레이션이 수행되고 나면, 버퍼 매니저(30)는 대응되는 플래시 기록 오퍼레이션을 스케쥴러(40)로 등록한다. 스케쥴러(40)는 버퍼 매니저(30)에 의해 등록된 플래시 기록 오퍼레이션을 FTL(50)이슈하지 않고 잡유닛 형태로 연속해서 큐잉한다(도 10의 410_0, 410_1, 410_2 참조).
각각의 잡유닛은 각각의 플래시 기록 오퍼레이션에 대응되는 볼륨 및 뱅크 정보(또는 채널 및 웨이 정보)에 따라서 잡유닛 플레이트 상에 고유의 위치를 가질 수 있다. 예를 들면, 참조번호 410_0으로 표시된 잡유닛은 5번 볼륨과 7번 뱅크에 대응되는 잡유닛으로 정의될 수 있다. 참조번호 410_1 및 410_2로 표시된 잡유닛들은 모두 1번 볼륨과 2번 뱅크에 대응되는 잡유닛들로 정의될 수 있다. 동일한 볼륨과 동일한 뱅크에 해당되는 기록 오퍼레이션들(410_1, 410_2)은, 잡유닛 플레이트의 대응되는 위치에 수직 방향으로 적층된다. 동일 위치에 적층 가능한 잡유닛들의 개수는 잡유닛 박스의 깊이(depth)에 의해 결정될 수 있다.
스케쥴러(40)는 큐잉된 잡유닛들(410_0, 410_1, 410_2)이 하나의 잡유닛 플레이트(420)를 구성할 때마다 해당 잡유닛 플레이트(420)에 대응되는 복수 개의 플래시 기록 오퍼레이션들을 FTL(50)로 이슈한다. 이때 구성되는 잡유닛 플레이트(420)는, 잡유닛 박스의 최하위에 위치한 베이스 플레이트에 해당된다. 이슈되지 않은 잡유닛들(410_0, 410_1, 410_2)은 스케쥴러(40)에 의해 큐잉된 상태를 계속해서 유지한다. 스케쥴러(40)는 새로운 플래시 기록 오퍼레이션이 등록될 때마다 기존의 잡유닛들(410_0, 410_1, 410_2)에 새로운 잡유닛을 큐잉한다. 스케쥴러(40)는 큐잉된 잡유닛들이 새로운 잡유닛 플레이트(즉, 베이스 플레이트)를 구성하면, 새롭게 구성된 잡유닛 플레이트에 대응되는 플래시 기록 오퍼레이션들을 FTL(50)로 이슈한다.
FTL(50)로 이슈된 플래시 기록 오퍼레이션들은 데이터 저장부(300)의 N 개의 채널들과 M 개의 웨이들에서 수행될 플래시 기록 오퍼레이션들이다. FTL(50)은 이슈된 복수 개의 오퍼레이션들의 LPN(Logical Page Number)들을 플래시 메모리의 물리 블록 어드레스(Physical Block Address ; PBA)들로 변환하는 어드레스 맵핑을 수행한다. N 개의 채널들과 M 개의 웨이들의 플래시 메모리의 PBA들에는 버퍼 메모리(200)의 N 개의 볼륨들과 M 개의 뱅크들로부터 제공된 기록 데이터가 각각 저장된다. 이 때, N 개의 채널들과 M 개의 웨이들의 플래시 메모리들에서 수행되는 플래시 기록 동작은 N 개의 채널들에서 병렬로 또는 동시에 수행될 수 있다. 그 결과, SSD(500)의 채널 이용도와 데이터 저장 성능이 효과적으로 향상된다.
도 11은 본 발명에 따른 SSD(500)의 데이터 저장 방법을 보여주는 흐름도이다.
도 11을 참조하면, 호스트(900)로부터 기록 커멘드(write command)가 입력되면, 호스트 인터페이스(170)는 호스트 인터페이스 계층(10)의 제어에 따라서 버퍼 메모리 제어부(130)로 캐시라인을 요청한다(S1000 단계). 캐시라인은 기록 커멘드에 의해 기록 요청된 데이터(즉, 기록 데이터)가 임시 저장될 섹터를 나타낸다.
버퍼 메모리 제어부(130)는 버퍼 매니저(30)의 제어에 따라서 버퍼 메모리(200) 내에 빈 캐시라인이 존재하는지 여부를 판별한다(S1100 단계). S1100 단계에서의 판별 결과 빈 캐시라인이 존재하면, 버퍼 메모리 제어부(130)는 버퍼 매니저(30)의 제어에 따라서 기록 데이터가 저장될 캐시라인을 할당 받는다. 그리고 나서, 버퍼 메모리 제어부(130)는 할당된 캐시라인에 기록 데이터를 임시 저장한다(S1200 단계). 그러나, S1100 단계에서의 판별 결과 빈 캐시라인이 존재하지 않으면, 버퍼 메모리 제어부(130)는 버퍼 매니저(30)의 제어에 따라서 빅팀(Victim) 캐시라인을 선정하고 플러시(flush)를 수행한다(S1300 단계). 플러시는 버퍼 메모리(200)에 저장된 데이터를 강제적으로 출력하는 것을 의미한다. 이어서, 버퍼 메 모리 제어부(130)는 버퍼 매니저(30)의 제어에 따라서 플러시된 캐시라인의 볼륨과 뱅크 정보를 알아낸다. 그리고, 플러시된 캐시라인의 데이터를 플래시 메모리에 저장하기 위한 플래시 기록 오퍼레이션을 잡유닛 단위로 스케쥴러(40)에 등록한다(S1400 단계).
스케쥴러(40)는 등록된 잡유닛을 큐잉하고, 큐잉된 잡유닛에 의해 베이스 플레이트가 가득 찼는지(full) 여부(즉, 베이스 플레이트가 형성되었는지 여부)를 판별한다(S1500 단계). S1500 단계의 판별 결과 큐잉된 잡유닛에 의해 베이스 플레이트가 가득 차지 않았으면, 수순은 S1400 단계로 되돌아간다. 그리고, S1500 단계의 판별 결과 큐잉된 잡유닛에 의해 베이스 플레이트가 가득 찼으면, 베이스 플레이트에 대응되는 복수 개의 플래시 기록 오퍼레이션들을 FTL(50)로 이슈한다(S1600 단계).
FTL(50)은 이슈된 복수 개의 플래시 기록 오퍼레이션들을 실행한다(S1700 단계). S1700 단계에서, FTL(50)은 이슈된 복수 개의 플래시 기록 오퍼레이션들에 응답해서 기록 데이터가 저장될 복수 개의 플래시 메모리의 물리 블록 어드레스(PBA)들을 찾아낸다. 그리고, 해당 물리 블록 어드레스(PBA)들에 기록 데이터를 저장한다. 이 때 수행되는 플래시 기록 오퍼레이션들은 복수 개의 채널들과 복수 개의 웨이들에 해당되는 복수 개의 플래시 메모리들에서 병렬로 또는 동시에 수행된다.
이상에서는, 호스트(900)로부터 제공된 기록 커멘드(write command)에 응답해서 버퍼 메모리(200)와 데이터 저장부(300)의 플래시 메모리에 데이터를 저장하는 방법에 대해서 설명되었다. 그러나, 본 발명의 SSD(500)가 수행 예정인 복수 개 의 커멘드들을 큐잉할 수 있는 기능을 제공할 수 있다면, 앞에서 설명된 본 발명의 스케쥴링 방법은 기록 커멘드 뿐만 아니라 읽기 커멘드에도 적용될 수 있을 것이다. 본 발명의 SSD(500)에 적용될 수 있는 커멘드 큐잉(command queuing) 방식으로는, NCQ(Native Command Queuing), TCQ(Tagged Command Queuing) 등이 포함될 수 있다.
도 12는 본 발명에 따른 컴퓨팅 시스템(2000)의 구성을 보여주는 도면이다.
도 12를 참조하면, 본 발명에 따른 컴퓨팅 시스템(2000)은 버스에 전기적으로 연결된 SSD 컨트롤러(100), 데이터 저장부(300), 모뎀(600), 사용자 인터페이스(800), 그리고 마이크로프로세서(900)를 포함한다. 모뎀(600)에는 베이스밴드 칩셋(baseband chipset) 또는 베이스밴드 SoC(baseband Soc)등이 포함될 수 있다.
도 12에 도시된 SSD 컨트롤러(100) 및 데이터 저장부(300)는 도 1 및 도 2에 도시된 데이터 저장 장치(SSD ; 500)를 구성할 수 있다. 도 12에 도시된 SSD(500)의 상세 구성은 도 1 및 도 2에서 설명한 것과 실질적으로 동일하다. 따라서, 동일한 구성에 대해서는 동일한 참조 번호를 부여하고 중복되는 설명은 이하 생략하기로 한다.
데이터 저장부(300)는 SSD(500)의 메인 스토리지이다. 데이터 저장부(300)에는 마이크로프로세서(900)에 의해서 처리된/처리될 N-비트 데이터(N은 1 또는 그 보다 큰 정수)가 SSD 컨트롤러(100)를 통해 저장될 수 있다. 데이터 저장부(300)는 복수 개의 채널들과 복수 개의 웨이들을 지원하는 불휘발성 메모리로 구성되며, 바람직하게는 불휘발성 메모리 중에서도 플래시 메모리로 구성될 수 있다.
SSD(500)는 SSD 컨트롤러(100)와 데이터 저장부(300) 사이에 송수신되는 데이터와, SSD 컨트롤러(100)와 호스트(900) 사이에 송수신되는 데이터를 임시로 저장할 수 있는 버퍼 메모리를 구비할 수 있다. 버퍼 메모리는 SSD 컨트롤러(100) 외부에 구비될 수도 있고, SSD 컨트롤러(100) 내부에 구비될 수도 있다. 버퍼 메모리는 DRAM 또는 SRAM과 같이 랜덤 액세스가 가능한 메모리로 구성될 수 있다.
SSD 컨트롤러(100)는 데이터 저장부(300) 및 버퍼 메모리의 읽기/기록/소거 동작을 제어한다. SSD 컨트롤러(100) 내부에는 버퍼 매니저(30), 스케쥴러(40) 및 FTL(50)과 같은 제어 알고리즘이 소프트웨어 또는 펌웨어로 탑재될 수 있다. SSD 컨트롤러(100)는 데이터 저장부(300)가 SRAM/HDD 처럼 읽기/기록/소거 동작이 자유롭게 수행되는 저장 매체로서 사용할 수 있도록 FTL(50)을 통해 데이터 저장부(300)의 맵핑 정보를 관리한다. 데이터 저장부(300)의 맵핑 정보는 FTL(50)에 의해 관리된다. FTL(50)에 의해 수행된 맵핑 결과는 메타 데이터 형태로 저장될 수 있다.
SSD 컨트롤러(100)는 버퍼 매니저(30)를 통해 플래시 메모리(310-330)의 채널 및 웨이 구조를 근거로 하여 버퍼 메모리에 저장되는 데이터를 볼륨(Volume)과 뱅크(Bank) 단위로 구분하여 분산 저장한다. 그리고, SSD 컨트롤러(100)는 스케쥴러(40)를 통해 버퍼 메모리에 분산 저장된 데이터가 데이터 저장부(300)의 복수의 채널들과 복수의 웨이들에 분산되어 이슈될 수 있도록 스케쥴링한다. 그 결과, 버퍼 메모리에 저장된 데이터가 복수 개의 채널들 및 복수 개의 웨이들에 대응되는 복수 개의 플래시 메모리들에서 병렬로 또는 동시에 기록될 수 있게 된다. 그 결 과, SSD(500)의 채널 이용도 및 데이터 저장 성능이 효과적으로 향상된다.
도 12에는 SSD 컨트롤러(100) 및 데이터 저장부(300)가 SSD를 구성하는 경우가 예시적으로 도시되어 있다. 그러나, SSD 컨트롤러(100) 및 데이터 저장부(300)는 SSD 뿐만 아니라, 메모리 카드 및/또는 메모리 카드 시스템을 구성할 수 있다.
본 발명에 따른 컴퓨팅 시스템이 모바일 장치인 경우, 컴퓨팅 시스템의 동작 전압을 공급하기 위한 배터리(700)가 추가적으로 제공될 수 있다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 컴퓨팅 시스템에는 응용 칩셋(application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
또한, 본 발명은 또한 컴퓨터로 읽을 수 있는 저장 매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 저장 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 저장 매체의 예로는 ROM, RAM, CD-ROM, 플래시 메 모리, USB 메모리, 자기 테이프, 플로피디스크, 하드 디스크, 광데이터 저장장치, SSD 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 저장 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드로 저장되고 실행될 수 있다.
도 1은 본 발명에 따른 데이터 저장 장치(SSD) 및 그것을 포함하는 메모리 시스템의 구성을 보여주는 블록도이다.
도 2는 도 1에 도시된 SSD 컨트롤러의 상세 구성을 보여주는 도면이다.
도 3은 도 1에 도시된 데이터 저장부의 채널 및 웨이의 구성을 예시적으로 보여주는 도면이다.
도 4는 본 발명의 SSD 컨트롤러에서 수행되는 제어 알고리즘의 논리적인 계층 구조를 보여주는 도면이다.
도 5는 도 4에 도시된 제어 알고리즘의 동작을 설명하기 위한 도면이다.
도 6은 본 발명에 따른 버퍼 메모리의 캐시라인, 캐시라인 그룹, 및 캐시웨이의 물리적인 구성을 보여주는 도면이다.
도 7 및 도 8은 본 발명에 따른 버퍼 메모리 상에서의 캐시라인, 캐시라인 그룹, 및 캐시웨이의 논리적인 구성을 보여주는 도면이다.
도 9는 본 발명에 따른 스케쥴링 동작에 사용되는 잡유닛, 잡유닛 플레이트, 및 잡유닛 박스의 구성을 보여주는 도면이다.
도 10은 본 발명에 따른 커멘드 스케쥴링 방법을 설명하기 위한 도면이다.
도 11은 본 발명에 따른 SSD의 데이터 저장 방법을 보여주는 흐름도이다.
도 12는 본 발명에 따른 컴퓨팅 시스템의 구성을 보여주는 도면이다.
*도면의 주요 부분에 대한 부호의 설명*
10 : 호스트 인터페이스 계층 20 : 캐시 인터페이스 계층
30 : 버퍼 매니저 40 : 스케쥴러
50 : 플래시 변환 계층(FTL) 60 : 플래시 인터페이스 계층
100 : SSD 컨트롤러 300 : 데이터 저장부
500 : 데이터 저장 장치(SSD) 900 : 호스트

Claims (32)

  1. 복수의 채널들 및 복수의 웨이들에 접속된 복수의 메인 메모리들;
    상기 메인 메모리들에 기록될 복수의 데이터를 임시 저장하는 버퍼 메모리; 그리고
    상기 메인 메모리들의 채널 및 웨이 정보에 대응되도록 상기 복수의 데이터를 상기 버퍼 메모리에 저장하는 컨트롤러를 포함하고,
    상기 버퍼 메모리는 복수 개의 뱅크들과 복수의 볼륨들의 교차 영역에 배치된 복수의 섹터들을 포함하고, 상기 볼륨들 각각은 상기 메인 메모리들에 접속된 각각의 채널에 대응되고, 상기 뱅크들 각각은 상기 메인 메모리들에 접속된 각각의 웨이에 대응되고, 상기 섹터들 각각의 논리 어드레스는, 상기 볼륨들 중 하나와 상기 뱅크들 중 하나에 대응되는 캐시라인으로 표시되고,
    상기 컨트롤러는 상기 캐시라인에 대응되는 섹터에 저장된 데이터를 대응되는 메인 메모리에 기록하기 위한 기록 오퍼레이션을 잡유닛 단위로 등록하는 데이터 저장 장치.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 제 1 항에 있어서,
    상기 컨트롤러는 데이터가 기록될 각각의 메인 메모리의 논리 어드레스에 응답해서 상기 논리 어드레스에 대응되는 볼륨 및 뱅크를 결정하고, 상기 결정된 볼륨 및 뱅크에 대응되는 섹터에 상기 데이터를 저장하는 데이터 저장 장치.
  7. 삭제
  8. 삭제
  9. 제 1 항에 있어서,
    상기 복수의 메인 메모리들에 N(N은 자연수)개의 채널들과 M(M은 자연수)개의 웨이들이 접속된 경우 상기 버퍼 메모리의 논리 어드레스들은 복수의 캐시웨이들과 대응되고,
    상기 캐시웨이들 각각은 N개의 볼륨들과 M개의 뱅크들에 대응되는 N×M개의 캐시라인들을 포함하는 데이터 저장 장치.
  10. 제 9 항에 있어서,
    상기 컨트롤러는 적어도 하나의 캐시웨이에 대응되는 복수의 데이터가 상기 메인 메모리들에서 저장되도록 제어하는 데이터 저장 장치.
  11. 삭제
  12. 삭제
  13. 제 1 항에 있어서,
    상기 복수의 메인 메모리들에 N개의 채널들과 M개의 웨이들이 접속된 경우 상기 잡유닛 플레이트에는 N개의 볼륨들과 M개의 뱅크들에 대응되는 N×M개의 잡유닛들이 포함되는 데이터 저장 장치.
  14. 제 1 항에 있어서,
    상기 컨트롤러는 적어도 하나의 잡유닛 플레이트 단위로 상기 메인 메모리들에 대한 기록 오퍼레이션들을 실행하는 데이터 저장 장치.
  15. 삭제
  16. 제 1 항에 있어서,
    상기 잡유닛들 각각은 대응되는 볼륨 및 뱅크에 따라 상기 잡유닛 플레이트 상의 고유의 위치에 큐잉되는 데이터 저장 장치.
  17. 제 16 항에 있어서,
    상기 컨트롤러는 상기 큐잉 동작시 동일한 볼륨 및 동일한 뱅크에 대응되는 복수의 잡유닛들을 상기 잡유닛 플레이트 상의 동일한 위치에 적층시키는 데이터 저장 장치.
  18. 제 1 항에 있어서,
    상기 컨트롤러는, 상기 메인 메모리들의 채널 및 웨이 정보를 근거로 하여 상기 메인 메모리들과 상기 버퍼 메모리의 기록 내지 읽기동작을 제어하는 버퍼 메모리 제어부를 포함하는 데이터 저장 장치.
  19. 제 18 항에 있어서,
    상기 버퍼 메모리 제어부는,
    상기 복수의 채널들 및 상기 복수의 웨이들에 대응되도록 상기 복수의 데이터가 상기 버퍼 메모리에 저장되는 위치를 관리하는 버퍼 매니저; 그리고
    상기 버퍼 메모리에 저장된 상기 복수의 데이터가 상기 메인 메모리들에 저장되는 타이밍을 스케쥴링하는 스케쥴러를 포함하는 데이터 저장 장치.
  20. 복수의 채널들 및 복수의 웨이들에 전기적으로 접속된 복수의 메인 메모리들을 구비한 데이터 저장 장치의 데이터 저장 방법에 있어서:
    상기 메인 메모리들에 저장될 복수의 데이터를 임시 저장하는 단계;
    상기 복수의 데이터를 상기 복수의 채널들 및 상기 복수의 웨이들 사이의 연결들을 기반으로 버퍼 메모리에 저장하는 단계;
    상기 버퍼 메모리에 저장된 각각의 데이터를 대응되는 메인 메모리로 기록하기 위한 기록 오퍼레이션을 잡유닛 단위로 등록하는 단계; 및
    상기 잡유닛에 대응되는 볼륨 및 뱅크 정보를 근거로 하여 잡유닛 플레이트가 구성될 때까지 상기 잡유닛을 큐잉하는 단계를 포함하고,
    상기 버퍼 메모리는 복수의 볼륨들 및 복수의 뱅크들과 대응되는 복수의 섹터들을 포함하고, 상기 복수의 볼륨들 각각은 상기 복수의 채널들 각각과 대응되고, 상기 복수의 뱅크들 각각은 상기 복수의 웨이들 각각과 대응되며, 상기 복수의 섹터들 각각에 대한 논리적 어드레스는 하나의 뱅크 및 하나의 볼륨에 대한 캐시라인과 대응되는 데이터 저장 방법.
  21. 제 20 항에 있어서,
    상기 메인 메모리들의 논리 어드레스들에 응답해서 상기 논리 어드레스들에 대응되는 상기 버퍼 메모리의 볼륨들 및 뱅크들을 결정하는 단계; 그리고
    상기 결정된 볼륨들 및 뱅크들에 대응되는 복수의 섹터들에게 상기 복수의 데이터를 저장하는 단계를 더 포함하는 데이터 저장 방법.
  22. 삭제
  23. 제 21 항에 있어서,
    상기 캐시라인과, 상기 캐시라인과 대응되는 볼륨 및 뱅크의 매핑 정보를 저장하는 단계를 더 포함하는 데이터 저장 방법.
  24. 삭제
  25. 삭제
  26. 삭제
  27. 제 20 항에 있어서,
    상기 각각의 잡유닛은 대응되는 볼륨 및 뱅크에 따라서 상기 잡유닛 플레이트 상의 고유의 위치에 큐잉되는 데이터 저장 방법.
  28. 제 20 항에 있어서,
    동일한 볼륨 정보 및 동일한 뱅크 정보를 갖는 잡유닛들을 상기 잡유닛 플레이트 상에서 동일한 위치에 적층하는 단계를 더 포함하는 데이터 저장 방법.
  29. 데이터 저장 장치의 데이터 저장 방법에 있어서,
    호스트로부터 입력된 기록 커멘드에 응답해서 버퍼 메모리의 캐시라인을 요청하는 단계;
    상기 버퍼 메모리에 빈 캐시라인이 존재하는 경우, 상기 빈 캐시라인에 상기 데이터를 임시 저장하는 단계;
    상기 버퍼 메모리에 빈 캐시라인이 존재하지 않는 경우, 빅팀 캐시라인을 선정하고 플러시를 수행하는 단계;
    상기 플러시된 캐시라인의 데이터를 메인 메모리에 기록하기 위한 기록 오퍼레이션을 잡유닛 단위로 등록하는 단계;
    상기 잡유닛에 대응되는 볼륨 및 뱅크 정보를 근거로 하여 잡유닛 플레이트가 구성될 때까지 상기 잡유닛을 큐잉하는 단계; 그리고
    상기 잡유닛 플레이트가 구성되면, 상기 구성된 잡유닛 플레이트에 대응되는 복수의 기록 오퍼레이션들을 복수의 채널들 및 복수의 웨이들에 접속된 복수의 메인 메모리들에서 실행하는 단계를 포함하는 데이터 저장 장치의 데이터 저장 방법.
  30. 삭제
  31. 삭제
  32. 제 29 항에 있어서,
    상기 복수의 채널들을 통해 상기 복수의 쓰기 오퍼레이션들의 일부를 병렬로 실행하는 단계를 더 포함하는 데이터 저장 장치의 데이터 저장 방법.
KR1020090046575A 2009-05-06 2009-05-27 데이터 저장 장치 및 그것의 데이터 저장 방법 KR101517183B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090046575A KR101517183B1 (ko) 2009-05-27 2009-05-27 데이터 저장 장치 및 그것의 데이터 저장 방법
US12/772,452 US8341338B2 (en) 2009-05-06 2010-05-03 Data storage device and related method of operation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090046575A KR101517183B1 (ko) 2009-05-27 2009-05-27 데이터 저장 장치 및 그것의 데이터 저장 방법

Publications (2)

Publication Number Publication Date
KR20100128120A KR20100128120A (ko) 2010-12-07
KR101517183B1 true KR101517183B1 (ko) 2015-05-18

Family

ID=43505117

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090046575A KR101517183B1 (ko) 2009-05-06 2009-05-27 데이터 저장 장치 및 그것의 데이터 저장 방법

Country Status (1)

Country Link
KR (1) KR101517183B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150127434A (ko) * 2014-05-07 2015-11-17 에스케이텔레콤 주식회사 메모리제어장치 및 메모리제어장치의 동작 방법
KR102308777B1 (ko) * 2014-06-02 2021-10-05 삼성전자주식회사 비휘발성 메모리 시스템 및 비휘발성 메모리 시스템의 동작방법
KR102344834B1 (ko) 2014-09-24 2021-12-29 삼성전자주식회사 솔리드 스테이트 드라이브 및 이를 포함하는 컴퓨팅 시스템
KR102529696B1 (ko) 2016-07-14 2023-05-10 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050026789A (ko) * 2003-09-09 2005-03-16 삼성전자주식회사 적응적인 크기를 갖는 캐쉬 메모리 장치

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050026789A (ko) * 2003-09-09 2005-03-16 삼성전자주식회사 적응적인 크기를 갖는 캐쉬 메모리 장치

Also Published As

Publication number Publication date
KR20100128120A (ko) 2010-12-07

Similar Documents

Publication Publication Date Title
US8341338B2 (en) Data storage device and related method of operation
KR101486987B1 (ko) 불휘발성 메모리를 포함하는 반도체 메모리 장치 및 불휘발성 메모리를 위한 커맨드 스케줄링 방법
US9417961B2 (en) Resource allocation and deallocation for power management in devices
JP6163532B2 (ja) メモリシステムコントローラを含む装置
US8429358B2 (en) Method and data storage device for processing commands
KR101516580B1 (ko) 컨트롤러, 이를 포함하는 데이터 저장 장치 및 데이터 저장 시스템, 및 그 방법
US8555000B2 (en) Data storage device and data storing method thereof
US20160231941A1 (en) Solid state memory (ssm), computer system including an ssm, and method of operating an ssm
US20160062885A1 (en) Garbage collection method for nonvolatile memory device
US20130080689A1 (en) Data storage device and related data management method
TWI432965B (zh) 具有複數個結構之記憶體系統及其操作方法
KR20190111406A (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
KR20100100394A (ko) 반도체 디스크 장치 그리고 그것의 데이터 기록 및 읽기 방법
EP3926451A1 (en) Communication of data relocation information by storage device to host to improve system performance
TW201508484A (zh) 資料寫入方法、硬碟模組以及資料寫入系統
KR20200121645A (ko) 컨트롤러 및 그것의 동작 방법과 메모리 시스템
CN107066202B (zh) 具有多个固态盘的存储设备
KR101517183B1 (ko) 데이터 저장 장치 및 그것의 데이터 저장 방법
KR101515621B1 (ko) 반도체 디스크 장치 및 그것의 랜덤 데이터 처리 방법
KR102596964B1 (ko) 맵 캐시 버퍼 크기를 가변시킬 수 있는 데이터 저장 장치
KR20100120518A (ko) 데이터 저장 장치 및 그것의 읽기 커멘드 처리 방법
KR20170021557A (ko) 다수의 맵핑 단위를 이용하는 불휘발성 메모리 시스템 및 그 동작방법
KR20220103340A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR102549540B1 (ko) 스토리지 장치 및 그 동작 방법
US11847323B1 (en) Data storage device and method for host buffer management

Legal Events

Date Code Title Description
A201 Request for examination
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee