KR102634776B1 - 데이터 저장 장치 및 그것의 동작 방법 - Google Patents
데이터 저장 장치 및 그것의 동작 방법 Download PDFInfo
- Publication number
- KR102634776B1 KR102634776B1 KR1020160074551A KR20160074551A KR102634776B1 KR 102634776 B1 KR102634776 B1 KR 102634776B1 KR 1020160074551 A KR1020160074551 A KR 1020160074551A KR 20160074551 A KR20160074551 A KR 20160074551A KR 102634776 B1 KR102634776 B1 KR 102634776B1
- Authority
- KR
- South Korea
- Prior art keywords
- command
- weight value
- memory device
- volatile memory
- paused
- Prior art date
Links
- 238000013500 data storage Methods 0.000 title claims abstract description 43
- 238000011017 operating method Methods 0.000 title 1
- 230000015654 memory Effects 0.000 claims abstract description 47
- 238000000034 method Methods 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 8
- 238000012545 processing Methods 0.000 description 12
- 238000012937 correction Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 6
- 230000002093 peripheral effect Effects 0.000 description 4
- 239000007787 solid Substances 0.000 description 4
- 239000003990 capacitor Substances 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000003936 working memory Effects 0.000 description 2
- 229910045601 alloy Inorganic materials 0.000 description 1
- 239000000956 alloy Substances 0.000 description 1
- 150000004770 chalcogenides Chemical class 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 229910000314 transition metal oxide Inorganic materials 0.000 description 1
- 230000005641 tunneling Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
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)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
본 발명의 실시 예에 따른 데이터 저장 장치는 불휘발성 메모리 장치 및 상기 불휘발성 메모리 장치의 동작을 제어하는 메모리 컨트롤러를 포함한다. 상기 메모리 컨트롤러는 호스트 장치로부터 수신되는 복수의 커맨드들에 대한 가중치 값들이 저장된 커맨드 가중치 레지스터 및 상기 불휘발성 메모리 장치에서 제1 커맨드에 대한 제1 동작을 수행하는 도중 상기 호스트 장치로부터 제2 커맨드가 수신되면, 상기 커맨드 가중치 레지스터를 참조하여 상기 제1 커맨드의 가중치 값과 상기 제2 커맨드의 가중치 값을 비교하고, 상기 제2 커맨드의 가중치 값이 크면, 상기 불휘발성 메모리 장치에 일시 중지된 동작이 있는지 판단하고, 상기 일시 중지된 동작이 있으면 상기 제1 동작이 완료될 때까지 대기하고, 상기 일시 중지된 동작이 없으면 상기 제1 동작을 일시 중지시키고 상기 제2 커맨드를 상기 불휘발성 메모리 장치로 전송하는 프로세서를 포함한다.
Description
본 발명은 반도체 장치에 관한 것으로, 보다 구체적으로는 데이터 저장 장치 및 그것의 동작 방법에 관한 것이다.
메모리 장치는 호스트 장치로부터의 명령에 응답하여 각종 동작들을 수행할 수 있다. 메모리 장치에서 수행되는 각종 동작들은 서로 다른 수행 시간을 가질 수 있다. 또한, 메모리 장치는 하나의 동작이 완료된 후 다른 동작을 수행할 수 있다. 이에 따라, 메모리 장치에서 동작 시간이 상대적으로 매우 긴 동작이 현재 수행 중이면, 해당 동작이 완료될 때까지 대기하는 시간이 길어짐에 따라 메모리 장치의 성능이 떨어질 수 있다. 이를 해결하기 위하여, 메모리 장치에서 현재 수행 중인 동작을 일시 중지시키고 다른 동작을 수행한 후 일시 중지된 동작을 재개하는 방법이 사용되고 있다.
본 발명의 실시 예는 동작 성능을 향상시킬 수 있는 데이터 저장 장치 및 그것의 동작 방법을 제공하는 것이다.
본 발명의 실시 예에 따른 데이터 저장 장치는 불휘발성 메모리 장치 및 상기 불휘발성 메모리 장치의 동작을 제어하는 메모리 컨트롤러를 포함한다. 상기 메모리 컨트롤러는 호스트 장치로부터 수신되는 복수의 커맨드들에 대한 가중치 값들이 저장된 커맨드 가중치 레지스터 및 상기 불휘발성 메모리 장치에서 제1 커맨드에 대한 제1 동작을 수행하는 도중 상기 호스트 장치로부터 제2 커맨드가 수신되면, 상기 커맨드 가중치 레지스터를 참조하여 상기 제1 커맨드의 가중치 값과 상기 제2 커맨드의 가중치 값을 비교하고, 상기 제2 커맨드의 가중치 값이 크면, 상기 불휘발성 메모리 장치에 일시 중지된 동작이 있는지 판단하고, 상기 일시 중지된 동작이 있으면 상기 제1 동작이 완료될 때까지 대기하고, 상기 일시 중지된 동작이 없으면 상기 제1 동작을 일시 중지시키고 상기 제2 커맨드를 상기 불휘발성 메모리 장치로 전송하는 프로세서를 포함한다.
본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법은 상기 불휘발성 메모리 장치에서 제1 커맨드에 대한 제1 동작을 수행하는 도중, 호스트 장치로부터 제2 커맨드가 수신되면, 상기 제1 커맨드의 가중치 값과 상기 제2 커맨드의 가중치 값을 비교하는 단계; 상기 제2 커맨드의 가중치 값이 크면, 상기 불휘발성 메모리 장치에 일시 중지된 동작이 있는지 판단하는 단계; 및 상기 일시 중지된 동작이 있으면 상기 제1 동작이 완료될 때까지 대기하고, 상기 일시 중지된 동작이 없으면 상기 제1 동작을 일시 중지시키고 상기 제2 커맨드를 상기 불휘발성 메모리 장치로 전송하는 단계를 포함한다.
본 실시 예들에 따르면, 각 커맨드 별 처리 우선 순위를 판단할 수 있고, 이에 따라 불휘발성 메모리 장치에서 수행 중인 또는 일시 중지된 동작에 대한 일시 중지/재개를 효율적으로 수행할 수 있다.
이와 같이, 일시 중지/재개를 효율적으로 수행할 수 있음에 따라 데이터 저장 장치의 쓰기/읽기 성능을 향상시킬 수 있다.
도 1은 본 발명의 실시 예에 따른 데이터 저장 장치를 도시한 블록도이다.
도 2는 본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법을 설명하기 위한 순서도이다.
도 3은 본 발명의 실시 예에 따른 데이터 저장 장치를 포함하는 데이터 처리 시스템을 예시적으로 보여주는 블록도이다.
도 4는 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브(SSD)를 포함하는 데이터 처리 시스템을 예시적으로 보여주는 블록도이다.
도 5는 도 4의 SSD 컨트롤러를 예시적으로 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법을 설명하기 위한 순서도이다.
도 3은 본 발명의 실시 예에 따른 데이터 저장 장치를 포함하는 데이터 처리 시스템을 예시적으로 보여주는 블록도이다.
도 4는 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브(SSD)를 포함하는 데이터 처리 시스템을 예시적으로 보여주는 블록도이다.
도 5는 도 4의 SSD 컨트롤러를 예시적으로 보여주는 블록도이다.
이하, 첨부한 도면에 의거하여 본 발명의 바람직한 실시 예를 설명하도록 한다.
도 1은 본 발명의 실시 예에 따른 데이터 저장 장치를 도시한 블록도이다.
도 1을 참조하면, 본 실시 예에 따른 데이터 저장 장치(10)는 휴대폰, MP3 플레이어, 랩탑 컴퓨터, 데스크탑 컴퓨터, 게임기, TV, 차량용 인포테인먼트(in-vehicle infotainment) 시스템 등과 같은 호스트 장치(도시되지 않음)에 의해서 액세스되는 데이터를 저장할 수 있다. 데이터 저장 장치(10)는 메모리 시스템으로 불릴 수 있다.
데이터 저장 장치(10)는 호스트 장치와 연결되는 인터페이스 프로토콜에 따라서 다양한 종류의 저장 장치들 중 어느 하나로 제조될 수 있다. 예를 들어, 데이터 저장 장치(10)는 솔리드 스테이트 드라이브(solid state drive, SSD), MMC, eMMC, RS-MMC, micro-MMC 형태의 멀티미디어 카드(multimedia card), SD, mini-SD, micro-SD 형태의 시큐어 디지털(secure digital) 카드, USB(universal storage bus) 저장 장치, UFS(universal flash storage) 장치, PCMCIA(personal computer memory card international association) 카드 형태의 저장 장치, PCI(peripheral component interconnection) 카드 형태의 저장 장치, PCI-E(PCI-express) 카드 형태의 저장 장치, CF(compact flash) 카드, 스마트 미디어(smart media) 카드, 메모리 스틱(memory stick) 등과 같은 다양한 종류의 저장 장치들 중 어느 하나로 구성될 수 있다.
데이터 저장 장치(10)는 다양한 종류의 패키지(package) 형태들 중 어느 하나로 제조될 수 있다. 예를 들어, 데이터 저장 장치(10)는 POP(package on package), SIP(system in package), SOC(system on chip), MCP(multi chip package), COB(chip on board), WFP(wafer-level fabricated package), WSP(wafer-level stack package) 등과 같은 다양한 종류의 패키지 형태들 중 어느 하나로 제조될 수 있다.
데이터 저장 장치(10)는 불휘발성 메모리 장치(100) 및 메모리 컨트롤러(200)를 포함할 수 있다.
불휘발성 메모리 장치(100)는 데이터 저장 장치(10)의 저장 매체로서 동작할 수 있다. 불휘발성 메모리 장치(100)는 메모리 셀에 따라서 낸드(NAND) 플래시 메모리 장치, 노어(NOR) 플래시 메모리 장치, 강유전체 커패시터를 이용한 강유전체 램(ferroelectric random access memory, FRAM), 티엠알(tunneling magneto-resistive, TMR) 막을 이용한 마그네틱 램(magnetic random access memory, MRAM), 칼코겐 화합물(chalcogenide alloys)을 이용한 상 변화 램(phase change random access memory, PRAM), 전이 금속 화합물(transition metal oxide)을 이용한 저항성 램(resistive random access memory, RERAM) 등과 같은 다양한 형태의 불휘발성 메모리 장치들 중 어느 하나로 구성될 수 있다.
불휘발성 메모리 장치(100)는 메모리 셀 어레이(110) 및 제어 로직(120)을 포함할 수 있다.
메모리 셀 어레이(110)는 복수의 비트 라인들(도시되지 않음)과 복수의 워드 라인들(도시되지 않음)이 교차하는 영역들에 각각 배치되는 복수의 메모리 셀들(도시되지 않음)을 포함할 수 있다. 일 실시 예에서, 각 메모리 셀은 하나의 비트를 저장하는 싱글 레벨 셀(single, level cell, SLC), 2 비트의 데이터를 저장할 수 있는 멀티 레벨 셀(multi level cell, MLC), 3 비트의 데이터를 저장할 수 있는 트리플 레벨 셀(triple level cell, TLC) 또는 4 비트의 데이터를 저장할 수 있는 쿼드 레벨 셀(quad level cell, QLC)일 수 있다. 메모리 셀 어레이(110)는 싱글 레벨 셀, 멀티 레벨 셀, 트리플 레벨 셀, 및 쿼드 레벨 셀 중 적어도 하나 이상을 포함할 수 있다. 일 실시 예에서, 메모리 셀 어레이(110)는 2차원 수평 구조의 메모리 셀들을 포함할 수도 있고, 또는 3차원 수직 구조의 메모리 셀들을 포함할 수도 있다.
도 1에 도시하지는 않았으나, 불휘발성 메모리 장치(100)는 복수의 비트 라인들 중 하나의 비트 라인을 선택하기 위한 칼럼 디코더, 복수의 워드 라인들 중 하나의 워드 라인을 선택하기 위한 로우 디코더, 상기 복수의 비트 라인들에 연결된 쓰기/읽기 회로를 더 포함할 수 있다.
제어 로직(120)은 불휘발성 메모리 장치(100)의 제반 동작을 제어할 수 있다. 일 실시 예에서, 제어 로직(120)은 메모리 컨트롤러(200)로부터 수신된 각종 커맨드들에 응답하여 불휘발성 메모리 장치(100)가 대응되는 동작을 하도록 제어할 수 있다.
예를 들어, 제어 로직(120)은 메모리 컨트롤러(200)로부터 수신된 쓰기 커맨드 및 읽기 커맨드에 응답하여 메모리 셀 어레이(110)에 쓰기 동작 및 읽기 동작을 수행하도록 상기 쓰기/읽기 회로를 제어할 수 있다. 또한, 제어 로직(120)은 메모리 컨트롤러(200)로부터 수신된 소거 커맨드에 응답하여 메모리 셀 어레이(110)에 소거 동작이 수행되도록 제어할 수 있다. 이때, 쓰기 동작 및 읽기 동작은 페이지 단위로 수행되고, 소거 동작은 블록 단위로 수행될 수 있으나, 특별히 이에 한정되는 것은 아니다. 메모리 셀 어레이(110)는 복수의 블록들을 포함할 수 있고, 각 블록은 복수의 페이지를 포함할 수 있다.
또한, 제어 로직(120)은 메모리 컨트롤러(200)로부터 수신된 일시 중지 커맨드 및 재개 커맨드에 응답하여 상기 메모리 셀 어레이(110)에서 현재 수행 중인 동작을 일시 중지시키거나 또는 일시 중지된 동작을 재개시킬 수 있다.
메모리 컨트롤러(200)는 커맨드 큐(210), 커맨드 가중치 레지스터(220), 및 프로세서(230)를 포함할 수 있다. 도 1에 도시하지는 않았으나, 메모리 컨트롤러(200)는 호스트 장치(도시되지 않음)으로부터 요청된 커맨드에 근거하여 불휘발성 메모리 장치(100)로 제공할 커맨드를 생성하는 커맨드 생성기(도시되지 않음)를 더 포함할 수 있다.
커맨드 큐(220)는 복수의 커맨드들을 큐잉할 수 있는 저장 공간을 포함할 수 있다. 커맨드 큐(220)는 커맨드 생성기에 의해 생성된 커맨드들을 큐잉할 수 있다. 커맨드 큐(220)는 FIFO(first in first out) 구조로서, 커맨드 큐(220)에 큐잉된 커맨드들은 가장 먼저 큐잉된 커맨드부터 순차적으로 출력될 수 있다.
커맨드 가중치 레지스터(220)는 복수의 커맨드들 및 복수의 커맨드들에 각각 매칭되는 복수의 가중치 값들을 저장할 수 있다. 일 실시 예에서, 가중치 값이 높은 커맨드일수록 처리 순위가 높은 커맨드임을 의미하고, 가중치 값이 낮은 커맨드일수록 처리 순위가 낮은 커맨드임을 의미할 수 있으나, 특별히 이에 한정되는 것은 아니다. 본 실시 예에서는 가중치 값이 높을수록 처리 순위가 높은 커맨드인 것으로 가정한다.
일 실시 예에서, 각 커맨드의 가중치 값은 다양한 기준에 근거하여 설정될 수 있다.
예를 들어, 각 커맨드의 가중치 값은 각 커맨드에 대한 불휘발성 메모리 장치(100)의 동작 시간에 근거하여 설정될 수 있다. 구체적으로, 불휘발성 메모리 장치(100)의 동작 시간이 상대적으로 짧은 커맨드의 가중치 값은 상대적으로 높게 설정되고, 불휘발성 메모리 장치(100)의 동작 시간이 상대적으로 긴 커맨드의 가중치 값은 상대적으로 낮게 설정될 수 있으나, 특별히 이에 한정되는 것은 아니다. 즉, 각 커맨드의 가중치 값은 동작 시간이 짧은 커맨드들이 우선적으로 처리될 수 있도록 하여 커맨드 처리 효율을 높이는 것이다.
또한, 각 커맨드의 가중치 값은 각 커맨드의 중요도에 근거하여 설정될 수 있다. 구체적으로, 상대적으로 중요도가 낮은 커맨드의 가중치 값은 낮게 설정되고, 상대적으로 중요도가 높은 커맨드의 가중치 값은 높게 설정될 수 있으나, 특별히 이에 한정되는 것은 아니다. 여기에서, 중요도가 높은 커맨드는 메모리 컨트롤러(200)의 동작 성능을 향상을 위하여 다른 커맨드들에 앞서 먼저 처리되어야 할 커맨드를 의미할 수 있다.
또한, 각 커맨드의 가중치 값은 각 커맨드에 대한 불휘발성 메모리 장치(100)의 동작에 소모되는 전력량에 근거하여 설정될 수 있다. 구체적으로, 상대적으로 소모되는 전력량이 적은 동작에 대응되는 커맨드의 가중치 값은 높게 설정되고, 상대적으로 소모되는 전력량이 많은 동작에 대응되는 커맨드의 가중치 값은 낮게 설정될 수 있으나, 특별히 이에 한정되는 것은 아니다. 예를 들어, 메모리 컨트롤러(200)가 큰 전력량이 요구되는 동작을 수행하고 있는 경우, 불휘발성 메모리 장치(100)에서는 전력 소모량이 낮은 커맨드들부터 우선적으로 처리될 수 있도록 하는 것이다.
한편, 다른 실시 예에서, 각 커맨드의 가중치 값은 ?0?으로 설정되고, 이후 데이터 저장 장치(10)가 동작하는 동안 각 커맨드의 요청 횟수에 근거하여 실시간으로 업데이트될 수 있다. 즉, 요청 횟수가 많은 커맨드들이 우선적으로 처리될 수 있도록 하는 것이다.
프로세서(230)는 메모리 컨트롤러(200)의 제반 동작을 제어할 수 있다. 예를 들어, 프로세서(230)는 커맨트 큐(210)로부터 큐잉된 커맨드를 페치(fetch)하고, 페치된 커맨드를 불휘발성 메모리 장치(100)로 전송할 수 있다.
프로세서(230)는 불휘발성 메모리 장치(100)에서 현재 수행중인 동작이 있는지 여부를 판단할 수 있다. 또한, 프로세서(230)는 불휘발성 메모리 장치(100)에서 현재 일시 중지된 동작이 있는지 여부를 판단할 수 있다. 예를 들어, 프로세서(230)는 불휘발성 메모리 장치(100)로 현재 수행중인 동작이 있는지 또는 현재 일시 중지된 동작이 있는지 여부를 나타내는 상태 정보를 요청하는 제어 신호를 전송하고, 불휘발성 메모리 장치(100)로부터 수신된 상태 정보에 근거하여 불휘발성 메모리 장치(100)에서 현재 수행중인 동작이 있는지 또는 일시 중지된 동작이 있는지 여부를 판단할 수 있다.
불휘발성 메모리 장치(100)에서 현재 수행 중인 동작이 없으면, 프로세서(230)는 커맨드 큐(210)로부터 페치된 커맨드를 불휘발성 메모리 장치(100)로 전송할 수 있다. 불휘발성 메모리 장치(100)는 프로세서(230)로부터 수신된 커맨드에 대응되는 동작을 수행할 수 있다.
불휘발성 메모리 장치(100)에서 현재 수행 중인 동작 또는 일시 중지된 동작이 있으면, 프로세서(230)는 페치된 커맨드와 불휘발성 메모리 장치(100)에서 현재 수행중인 동작에 대한 커맨드, 또는 페치된 커맨드와 불휘발성 메모리 장치(100)에서 현재 일시 중지된 동작에 대한 커맨드를 비교하고, 비교 결과에 근거하여 각 커맨드의 처리 순서를 판단할 수 있다.
구체적으로, 불휘발성 메모리 장치(100)에서 현재 수행 중인 동작이 있으면, 프로세서(230)는 커맨드 가중치 레지스터(220)를 참조하여 커맨드 큐(210)로부터 페치된 커맨드의 가중치 값과 불휘발성 메모리 장치(100)에서 현재 수행중인 동작에 대한 커맨드의 가중치 값을 비교할 수 있다.
예를 들어, 페치된 커맨드를 제1 커맨드라 하고, 불휘발성 메모리 장치(100)에서 현재 수행중인 동작에 대한 커맨드를 제2 커맨드라 하면, 프로세서(230)는 커맨드 가중치 레지스터(220)를 참조하여 제1 커맨드의 가중치 값과 제2 커맨드의 가중치 값을 비교할 수 있다.
비교 결과, 제2 커맨드의 가중치 값이 제1 커맨드의 가중치 값보다 크면, 프로세서(230)는 불휘발성 메모리 장치(100)가 제2 커맨드에 대한 동작을 완료할 때까지 대기할 수 있다. 이후, 불휘발성 메모리 장치(100)가 제2 커맨드에 대한 동작을 완료하면, 프로세서(230)는 불휘발성 메모리 장치(100)에서 현재 일시 중지된 동작이 있는지 여부를 판단할 수 있다. 이때, 불휘발성 메모리 장치(100)에서 현재 일시 중지된 동작에 대한 커맨드를 제3 커맨드라 가정한다.
판단 결과, 불휘발성 메모리 장치(100)에서 현재 일시 중지된 동작이 있으면, 프로세서(230)는 커맨드 가중치 레지스터(220)를 참조하여 제1 커맨드의 가중치 값과 제3 커맨드의 가중치 값을 비교할 수 있다.
여기에서, 일시 중지된 동작에 대한 제3 커맨드의 가중치 값은 커맨드 가중치 레지스터(220)에 저장된 제1 가중치 값 및 일시 중지된 정도에 대응되는 제2 가중치 값을 포함할 수 있다. 일시 중지된 제3 커맨드의 제1 가중치 값이 페치된 커맨드들의 가중치 값들보다 작으면, 일시 중지된 제3 커맨드의 대기 시간은 무한정으로 길어질 수 있다. 이에 따라, 어느 정도 기다린 후에는 처리될 수 있도록 일시 중지 후 기다린 정도를 가중치 값에 반영하는 것이다.
일 실시 예에서, 프로세서(230)는 제3 커맨드에 대한 동작이 일시 중지된 이후 경과된 시간에 기 설정된 상수를 곱하여 제2 가중치 값을 연산할 수 있다. 또한, 프로세서(230)는 제3 커맨드가 일시 중지된 이후 처리된 커맨드들의 가중치 값들을 합산하여 제2 가중치 값을 연산할 수 있다. 또한, 프로세서(230)는 제3 커맨드가 일시 중지된 이후 처리된 커맨드들의 개수에 기 설정된 상수를 곱하여 제2 가중치 값을 연산할 수 있다.
프로세서(230)는 상술한 방법들로 연산된 제2 가중치 값과 커맨드 가중치 레지스터(220)에 저장된 제3 커맨드의 제1 가중치 값을 합산하여 일시 중지된 제3 커맨드의 가중치 값을 최종적으로 연산할 수 있다.
비교 결과, 일시 중지된 제3 커맨드의 가중치 값이 페치된 제1 커맨드의 가중치 값보다 크면, 프로세서(230)는 불휘발성 메모리 장치(100)로 일시 중지된 제3 커맨드의 동작을 재개시키기 위한 재개 커맨드를 전송할 수 있다. 불휘발성 메모리 장치(100)는 프로세서(230)로부터 수신된 재개 커맨드에 응답하여 일시 중지된 제3 커맨드에 대한 동작을 재개시킬 수 있다.
반면, 페치된 제1 커맨드의 가중치 값이 일시 중지된 제3 커맨드의 가중치 값보다 크면, 프로세서(230)는 불휘발성 메모리 장치(100)로 페치된 제1 커맨드를 전송할 수 있다. 불휘발성 메모리 장치(100)는 제3 커맨드의 일시 중지 상태를 유지하고, 프로세서(230)로부터 수신된 제1 커맨드에 대한 동작을 수행할 수 있다.
한편, 제1 커맨드의 가중치 값이 제2 커맨드의 가중치 값보다 크면, 프로세서(230)는 불휘발성 메모리 장치(100)에서 현재 일시 중지된 동작이 있는지 여부를 먼저 판단할 수 있다. 이는, 불휘발성 메모리 장치(100)에서는 최대 하나의 동작을 일시 중지시킬 수 있기 때문이다.
이에 따라, 판단 결과 불휘발성 메모리 장치(100)에서 현재 일시 중지된 동작이 있으면, 프로세서(230)는 제1 커맨드의 가중치 값이 제2 커맨드의 가중치 값보다 크더라도 제2 커맨드를 일시 중지시킬 수 없으며, 제2 커맨드에 대한 동작이 완료될 때까지 대기할 수 있다. 제2 커맨드에 대한 동작이 완료되면, 프로세서(230)는 제1 커맨드의 가중치 값과 제3 커맨드의 가중치 값을 비교할 수 있다.
비교 결과, 제1 커맨드의 가중치 값이 제3 커맨드의 가중치 값보다 크면, 프로세서(230)는 제1 커맨드를 불휘발성 메모리 장치(100)로 전송할 수 있다. 반면, 제1 커맨드의 가중치 값이 제3 커맨드의 가중치 값보다 작으면, 프로세서(230)는 제3 커맨드에 대한 동작을 재개시키기 위한 재개 커맨드를 불휘발성 메모리 장치(100)로 전송할 수 있다.
한편, 판단 결과 불휘발성 메모리 장치(100)에서 현재 일시 중지된 동작이 없으면, 프로세서(230)는 제2 커맨드에 대한 동작을 일시 중지시키기 위한 일시 중지 커맨드를 불휘발성 메모리 장치(100)로 전송할 수 있다. 불휘발성 메모리 장치(100)에서 제2 커맨드에 대한 동작이 일시 중지되면, 프로세서(230)는 제1 커맨드를 불휘발성 메모리 장치(100)로 전송할 수 있다. 불휘발성 메모리 장치(100)는 제2 커맨드에 대한 동작을 일시 중지한 상태에서 제1 커맨드에 대한 동작을 수행할 수 있다.
한편, 프로세서(230)는 커맨드 가중치 레지스터(230)에 저장된 각 커맨드에 대한 가중치 값을 실시간으로 업데이트할 수 있다. 예를 들어, 데이터 저장 장치(10)이 동작하는 동안 호스트 장치로부터 수신된 커맨드들 각각에 대한 요청 횟수에 근거하여 커맨드 가중치 레지스터(230)에 저장된 각 커맨드에 대한 가중치 값을 실시간으로 업데이트할 수 있다.
도 2는 본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법을 설명하기 위한 순서도이다. 도 2를 설명함에 있어서, 도 1을 참조하여 설명할 것이다.
S201 단계에서, 메모리 컨트롤러(200)의 프로세서(230)는 커맨드 큐(210)로부터 큐잉된 커맨드를 페치할 수 있다.
S203 단계에서, 프로세서(230)는 불휘발성 메모리 장치(100)에 현재 수행 중인 동작이 있는지 여부를 판단할 수 있다. 예를 들어, 프로세서(230)는 불휘발성 메모리 장치(100)로 현재 수행 중인 동작이 있는지에 대한 상태 정보를 요청하는 제어 신호를 불휘발성 메모리 장치(100)로 전송할 수 있다. 이후, 프로세서(230)는 불휘발성 메모리 장치(100)로부터 수신된 상태 정보에 근거하여 불휘발성 메모리 장치(100)에 현재 수행 중인 동작이 있는지 여부를 판단할 수 있다.
판단 결과, 불휘발성 메모리 장치(100)에 현재 수행 중인 동작이 있으면, S205 단계가 수행될 수 있다.
S205 단계에서, 프로세서(230)는 커맨드 가중치 레지스터(220)를 참조하여 페치된 커맨드의 가중치 값과 불휘발성 메모리 장치(100)에서 현재 수행 중인 동작에 대응하는 커맨드(이후, ‘동작 중인 커맨드’라 함)의 가중치 값을 비교할 수 있다.
예를 들어, 프로세서(230)는 페치된 커맨드의 가중치 값이 동작 중인 커맨드의 가중치 값 보다 큰 지를 판단할 수 있다. 판단 결과, 페치된 커맨드의 가중치 값이 동작 중인 커맨드의 가중치 값보다 크면, S207 단계가 수행될 수 있다.
S207 단계에서, 프로세서(230)는 불휘발성 메모리 장치(100)에 현재 일시 중지된 동작이 있는지 여부를 판단할 수 있다. 예를 들어, 프로세서(230)는 불휘발성 메모리 장치(100)로 현재 일시 중지된 동작이 있는지 여부에 대한 상태 정보를 요청하는 제어 신호를 불휘발성 메모리 장치(100)로 전송하고, 불휘발성 메모리 장치(100)로부터 수신된 상태 정보에 근거하여 불휘발성 메모리 장치(100)에 현재 일시 중지된 동작이 있는지 여부를 판단할 수 있다.
판단 결과, 불휘발성 메모리 장치(100)에 현재 일시 중지된 동작이 있으면, S209 단계가 수행될 수 있다.
S209 단계에서, 프로세서(230)는 불휘발성 메모리 장치(100)에서 현재 수행 중인 동작을 완료하도록 제어할 수 있다. 불휘발성 메모리 장치(100)에서 현재 수행 중인 동작이 완료되면, S211 단계가 수행될 수 있다.
S211 단계에서, 프로세서(230)는 커맨드 가중치 레지스터(220)를 참조하여 페치된 커맨드의 가중치 값과 일시 중지된 동작에 대응하는 커맨드(이후, ‘일시 중지된 커맨드’라 함)의 가중치 값을 비교할 수 있다.
이때, 일시 중지된 커맨드의 가중치 값은 커맨드 가중치 레지스터(220)에 저장된 제1 가중치 값 및 일시 중지된 정도에 대응되는 제2 가중치 값을 포함할 수 있다. 일 실시 예에서, 프로세서(230)는 일시 중지된 커맨드의 대기 시간에 기 설정된 상수를 곱하여 제2 가중치 값을 연산할 수 있다. 또한, 프로세서(230)는 일시 중지된 커맨드가 일시 중지된 이후 처리된 커맨드들의 가중치 값들을 합산하여 제2 가중치 값을 연산할 수 있다. 또한, 프로세서(230)는 일시 중지된 커맨드가 일시 중지된 이후 처리된 커맨드들의 개수에 기 설정된 상수를 곱하여 제2 가중치 값을 연산할 수 있다.
프로세서(230)는 상술한 방법들로 연산된 제2 가중치 값과 커맨드 가중치 레지스터(220)에 저장된 해당 커맨드의 제1 가중치 값을 합산하여 일시 중지된 커맨드의 가중치 값을 최종적으로 연산할 수 있다.
또한, 프로세서(230)는 페치된 커맨드의 가중치 값이 일시 중지된 커맨드의 가중치 값 보다 큰 지를 판단할 수 있다. 판단 결과, 페치된 커맨드의 가중치 값이 일시 중지된 커맨드의 가중치 값보다 크면, S213 단계가 수행될 수 있다.
S213 단계에서, 프로세서(230)는 페치된 커맨드를 불휘발성 메모리 장치(100)로 전송할 수 있다. 불휘발성 메모리 장치(100)는 수신된 페치된 커맨드에 대응되는 동작을 수행할 수 있다.
한편, S203 단계에서, 불휘발성 메모리 장치(100)에 현재 수행 중인 동작이 없으면, S213 단계가 수행될 수 있다.
또한, S205 단계에서, 페치된 커맨드의 가중치 값이 동작 중인 커맨드의 가중치 값보다 작으면, S223 단계가 수행될 수 있다.
S223 단계에서, 프로세서(230)는 불휘발성 메모리 장치(100)에서 현재 수행 중인 동작을 완료하도록 제어할 수 있다. 불휘발성 메모리 장치(100)에서 현재 수행 중인 동작이 완료되면, S225 단계가 수행될 수 있다.
S225 단계에서, 프로세서(230)는 불휘발성 메모리 장치(100)에 현재 일시 중지된 동작이 있는지 여부를 판단할 수 있다. 판단 결과, 불휘발성 메모리 장치(100)에 현재 일시 중지된 동작이 있으면, S211 단계가 수행될 수 있다. 또한, 판단 결과, 불휘발성 메모리 장치(100)에 현재 일시 중지된 동작이 없으면, S213 단계가 수행될 수 있다.
또한, S207 단계에서 불휘발성 메모리 장치(100)에 현재 일시 중지된 동작이 없으면, S215 단계가 수행될 수 있다.
S215 단계에서, 프로세서(230)는 불휘발성 메모리 장치(100)에서 현재 수행중인 동작을 일시 중지시키기 위한 일시 중지 커맨드를 불휘발성 메모리 장치(100)로 전송할 수 있다.
S217 단계에서, 프로세서(230)는 불휘발성 메모리 장치(100)에서 수행 중이던 동작이 일시 중지되었는지 여부를 판단할 수 있다. 예를 들어, 프로세서(230)는 불휘발성 메모리 장치(100)로 수행 중이던 동작에 대한 일시 중지가 완료되었는지에 대한 상태 정보를 요청하는 제어 신호를 불휘발성 메모리 장치(100)로 전송할 수 있다. 이후, 프로세서(230)는 불휘발성 메모리 장치(100)로부터 수신된 상태 정보에 근거하여 불휘발성 메모리 장치(100)에서 수행 중이던 동작이 일시 중지되었는지 여부를 판단할 수 있다.
판단 결과, 불휘발성 메모리 장치(100)에서 수행 중이던 동작이 일시 중지되었으면, S213 단계가 수행될 수 있다. 반면, 불휘발성 메모리 장치(100)에서 수행 중이던 동작이 일시 중지되지 않았으면, 프로세서(230)는 동작이 일시 중지된 것으로 판단될 때까지 S217 단계를 반복하여 수행할 수 있다.
또한, S211 단계에서, 페치된 커맨드의 가중치 값이 일시 중지된 커맨드의 가중치 값보다 작으면, S219 단계가 수행될 수 있다.
S219 단계에서, 프로세서(230)는 불휘발성 메모리 장치(100)로 일시 중지된 동작을 재개시키기 위한 재개 커맨드를 전송할 수 있다.
S221 단계에서, 프로세서(230)는 불휘발성 메모리 장치(100)에서 재개된 동작이 완료되었는지 여부를 판단할 수 있다. 예를 들어, 프로세서(230)는 불휘발성 메모리 장치(100)로 재개된 동작이 완료되었는지에 대한 상태 정보를 요청하는 제어 신호를 불휘발성 메모리 장치(100)로 전송하고, 불휘발성 메모리 장치(100)로부터 수신된 상태 정보에 근거하여 불휘발성 메모리 장치(100)에서 재개된 동작이 완료되었는지 여부를 판단할 수 있다.
판단 결과, 불휘발성 메모리 장치(100)에서 재개된 동작이 완료되었으면, S213 단계가 수행될 수 있다. 반면, 불휘발성 메모리 장치(100)에서 재개된 동작이 완료되지 않았으면, 프로세서(230)는 재개된 동작이 완료된 것으로 판단될 때까지 S221 단계를 반복하여 수행할 수 있다.
도 3은 본 발명의 실시 예에 따른 데이터 저장 장치를 포함하는 데이터 처리 시스템을 예시적으로 보여주는 블록도이다.
도 3을 참조하면, 데이터 처리 시스템(1000)은 호스트 장치(1100) 및 데이터 저장 장치(1200)를 포함할 수 있다.
데이터 저장 장치(1200)는 컨트롤러(1210) 및 불휘발성 메모리 장치(1220)를 포함할 수 있다. 데이터 저장 장치(1200)는 휴대폰, MP3 플레이어, 랩탑 컴퓨터, 데스크탑 컴퓨터, 게임기, TV, 차량용 인포테인먼트(in-vehicle infortainment) 시스템 등과 같은 호스트 장치(1100)에 접속되어 사용될 수 있다. 데이터 저장 장치(1200)는 메모리 시스템을 의미할 수 있다.
컨트롤러(1210)는 호스트 인터페이스 유닛(1211), 컨트롤 유닛(1212), 커맨드 가중치 레지스터(1213), 메모리 인터페이스 유닛(1214), 랜덤 액세스 메모리(1215), 및 에러 정정 코드(ECC) 유닛(1216)을 포함할 수 있다.
커맨드 가중치 레지스터(1213)는 호스트 장치(1100)로부터 수신되는 복수의 커맨드들에 대한 기 설정된 가중치 값들을 저장할 수 있다.
랜덤 액세스 메모리(1215)는 컨트롤 유닛(1212)의 동작 메모리(working memory)로서 사용될 수 있다. 랜덤 액세스 메모리(1215)는 불휘발성 메모리 장치(1220)로부터 읽혀진 데이터 또는 호스트 장치(1100)로부터 제공된 데이터를 임시로 저장하는 버퍼 메모리로서 사용될 수 있다.
컨트롤 유닛(1212)은 불휘발성 메모리 장치(1220)에서 현재 수행중인 동작이 있는지 또는 현재 일시 중지된 동작이 있는지 여부를 판단할 수 있다. 불휘발성 메모리 장치(1220)에서 현재 수행중인 동작이 있거나, 또는 현재 일시 중지된 동작이 있으면, 컨트롤 유닛(1212)은 커맨드 가중치 레지스터(1213)를 참조하여 불휘발성 메모리 장치(1220)에서 현재 수행중인 동작에 대한 커맨드의 가중치 값 또는 현재 일시 중지된 동작에 대한 커맨드의 가중치 값과 호스트 장치(110)로부터 수신된 다음 수행할 커맨드의 가중치 값을 비교하여 우선적으로 처리해야 할 커맨드를 판단하고, 판단 결과에 근거하여 불휘발성 메모리 장치(1220)로 일시 중지 커맨드 또는 재개 커맨드를 전송할 수 있다.
호스트 인터페이스 유닛(1211)은 호스트 장치(1100) 및 컨트롤러(1210)를 인터페이싱할 수 있다. 예를 들어, 호스트 인터페이스 유닛(1211)은 USB(universal serial bus) 프로토콜, UFS(universal flash storage) 프로토콜, MMC(multi-media card) 프로토콜, PCI(peripheral component interconnection) 프로토콜, PCI-E(PCI-Express) 프로토콜, PATA(parallel advanced technology attachment) 프로토콜, SATA(serial advanced technology attachment) 프로토콜, SCSI(small computer system interface) 프로토콜, 및 SAC(serial attached SCSI) 프로토콜 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 호스트 장치(1100)와 통신할 수 있다.
메모리 인터페이스 유닛(1214)은 컨트롤러(1210)와 불휘발성 메모리 장치(1220)를 인터페이싱할 수 있다. 메모리 인터페이스 유닛(1214)은 불휘발성 메모리 장치(1220)에 커맨드 및 어드레스를 제공할 수 있다. 또한, 메모리 인터페이스 유닛(1214)은 불휘발성 메모리 장치(1220)와 데이터를 주고 받을 수 있다.
에러 정정 코드(ECC) 유닛(1216)은 불휘발성 메모리 장치(1220)로 저장될 데이터를 ECC 인코딩할 수 있다. 또한, 에러 정정 코드(ECC) 유닛(1216)은 불휘발성 메모리 장치(1220)로부터 독출된 데이터를 ECC 디코딩할 수 있다. 에러 정정 코드(ECC) 유닛(1216)은 메모리 인터페이스 유닛(1214)에 포함될 수 있다.
컨트롤러(1210) 및 불휘발성 메모리 장치(1220)는 다양한 데이터 저장 장치 중 어느 하나로 제조될 수 있다. 예를 들어, 컨트롤러(1210) 및 불휘발성 메모리 장치(1220)는 하나의 반도체 장치로 집적되어 MMC, eMMC, RS-MMC, micro-MMC 형태의 멀티미디어 카드(multi-media card), SD, mini-SD, micro-SD 형태의 시큐어 디지털(secure digital) 카드, USB(universal serial bus) 저장 장치, UFS(universal flash storage) 장치, PCMCIA(personal computer memory card international association) 카드, CF(compact flash) 카드, 스마트 미디어(smart media) 카드, 메모리 스틱(memory stick) 중 어느 하나로 제조될 수 있다.
도 4는 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브(SSD)를 포함하는 데이터 처리 시스템을 예시적으로 보여주는 블록도이다.
도 4를 참조하면, 데이터 처리 시스템(2000)은 호스트 장치(2100)와 솔리드 스테이트 드라이브(solid state drive, SSD)(2200)를 포함할 수 있다.
SSD(2200)는 SSD 컨트롤러(2210), 버퍼 메모리 장치(2220), 불휘발성 메모리 장치들(2231 ~ 223n), 전원 공급기(2240), 신호 커넥터(2250), 전원 커넥터(2260)를 포함할 수 있다.
SSD 컨트롤러(2210)는 호스트 장치(2100)로부터의 요청에 응답하여 불휘발성 메모리 장치들(2231 ~ 223n)을 액세스할 수 있다.
버퍼 메모리 장치(2220)는 불휘발성 메모리 장치들(2231)에 저장될 데이터를 임시 저장할 수 있다. 또한, 버퍼 메모리 장치(2220)는 불휘발성 메모리 장치들(2231 ~ 223n)로부터 읽혀진 데이터를 임시 저장할 수 있다. 버퍼 메모리 장치(2220)에 임시 저장된 데이터는 SSD 컨트롤러(2210)의 제어에 따라 호스트 장치(2100) 또는 불휘발성 메모리 장치들(2231 ~ 223n)로 전송될 수 있다.
불휘발성 메모리 장치들(2231 ~ 223n)은 SSD(2200)의 저장 매체로 사용될 수 있다. 불휘발성 메모리 장치들(2231 ~ 223n) 각각은 복수의 채널들(CH1 ~ CHn)을 통해 SSD 컨트롤러(2210)와 연결될 수 있다. 하나의 채널에는 하나 또는 그 이상의 불휘발성 메모리 장치가 연결될 수 있다. 하나의 채널에 연결되는 불휘발성 메모리 장치들은 동일한 신호 버스 및 데이터 버스에 연결될 수 있다.
전원 공급기(2240)는 전원 커넥터(2260)를 통해 입력된 전원(PWR)을 SSD(2200) 내부에 제공할 수 있다. 전원 공급기(2240)는 보조 전원 공급기(2241)를 포함할 수 있다. 보조 전원 공급기(2241)는 서든 파워 오프(sudden power off)가 발생되는 경우, SSD(2200)가 정상적으로 종료될 수 있도록 전원을 공급할 수 있다. 보조 전원 공급기(2241)는 전원(PWR)을 충전할 수 있는 대용량 커패시터들(capacitors)을 포함할 수 있다.
SSD 컨트롤러(2210)는 신호 커넥터(2250)를 통해서 호스트 장치(2100)와 신호(SGL)를 주고 받을 수 있다. 여기에서, 신호(SGL)는 커맨드, 어드레스, 데이터 등이 포함될 수 있다. 신호 커넥터(2250)는 호스트 장치(2100)와 SSD(2200)의 인터페이스 방식에 따라 PATA(parallel advanced technology attachment), SATA(serial advanced technology attachment), SCSI(small computer system interface), SAC(serial attached SCSI), SAS(serial attached SCSI), PCI(peripheral component interconnection), 및 PCI-E(PCI-Express) 등의 커넥터로 구성될 수 있다.
도 5는 도 4의 SSD 컨트롤러를 예시적으로 보여주는 블록도이다.
도 5를 참조하면, SSD 컨트롤러(2210)는 메모리 인터페이스 유닛(2211), 호스트 인터페이스 유닛(2212), 에러 정정 코드(ECC) 유닛(2213), 컨트롤 유닛(2214), 랜덤 액세스 메모리(2215), 및 커맨드 가중치 레지스터(2216)을 포함할 수 있다.
메모리 인터페이스 유닛(2211)은 불휘발성 메모리 장치들(2231 ~ 223n)에 커맨드 및 어드레스와 같은 제어 신호를 제공할 수 있다. 또한, 메모리 인터페이스 유닛(2211)은 불휘발성 메모리 장치들(2231 ~ 223n)과 데이터를 주고 받을 수 있다. 메모리 인터페이스 유닛(2211)은 컨트롤 유닛(2214)의 제어에 따라 버퍼 메모리 장치(2220)로부터 전달된 데이터를 각각의 채널들(CH1 ~ CHn)로 스캐터링(scattering)할 수 있다. 또한, 메모리 인터페이스 유닛(2211)은 컨트롤 유닛(2214)의 제어에 따라 불휘발성 메모리 장치들(2231 ~ 223n)로부터 읽혀진 데이터를 버퍼 메모리 장치(2220)로 전달할 수 있다.
호스트 인터페이스 유닛(2212)은 호스트 장치(2100)의 프로토콜에 대응하여 SSD(2200)와의 인터페이싱을 제공할 수 있다. 예를 들어, 호스트 인터페이스 유닛(2212)은 PATA(parallel advanced technology attachment) 프로토콜, SATA(serial advanced technology attachment) 프로토콜, SCSI(small computer system interface) 프로토콜, SAC(serial attached SCSI) 프로토콜, SAS(serial attached SCSI) 프로토콜, PCI(peripheral component interconnection) 프로토콜, 및 PCI-E(PCI-Express) 프로토콜 중 어느 하나를 통해 호스트 장치(2100)와 통신할 수 있다.
또한, 호스트 인터페이스 유닛(2212)은 호스트 장치(2100)가 SSD(2200)를 하드 디스크 드라이브(HDD)로 인식하도록 지원하는 디스크 에뮬레이션(disk emulation) 기능을 수행할 수 있다.
컨트롤 유닛(2214)은 호스트 장치(2100)로부터 입력된 신호(SGL)를 분석하고 처리할 수 있다. 컨트롤 유닛(2214)은 SSD(2200)를 구동하기 위한 펌웨어 또는 소프트웨어에 따라서 버퍼 메모리 장치(2220) 및 불휘발성 메모리 장치들(2231 ~ 223n)의 동작을 제어할 수 있다.
랜덤 액세스 메모리(2215)는 컨트롤 유닛(2214)의 동작 메모리(working memory)로서 사용될 수 있다. 랜덤 액세스 메모리(2215)는 LBA 별 카테고리 정보가 정의된 카테고리 테이블 및 카테고리 별 리드 전압이 설정된 리드 전압 테이블이 저장될 수 있다.
커맨드 가중치 레지스터(1213)는 호스트 장치(1100)로부터 수신되는 복수의 커맨드들에 대한 기 설정된 가중치 값들을 저장할 수 있다.
컨트롤 유닛(1212)은 불휘발성 메모리 장치(1220)에서 현재 수행중인 동작이 있는지 또는 현재 일시 중지된 동작이 있는지 여부를 판단할 수 있다. 불휘발성 메모리 장치(1220)에서 현재 수행중인 동작이 있거나, 또는 현재 일시 중지된 동작이 있으면, 컨트롤 유닛(1212)은 커맨드 가중치 레지스터(1213)를 참조하여 불휘발성 메모리 장치(1220)에서 현재 수행중인 동작에 대한 커맨드의 가중치 값 또는 현재 일시 중지된 동작에 대한 커맨드의 가중치 값과 호스트 장치(110)로부터 수신된 다음 수행할 커맨드의 가중치 값을 비교하여 우선적으로 처리해야 할 커맨드를 판단하고, 판단 결과에 근거하여 불휘발성 메모리 장치(1220)로 일시 중지 커맨드 또는 재개 커맨드를 전송할 수 있다.
에러 정정 코드(ECC) 유닛(2213)은 버퍼 메모리 장치(2220)에 저장된 데이터 중에서 불휘발성 메모리 장치들(2231 ~ 223n)로 전송될 데이터의 패리티 데이터를 생성할 수 있다. 생성된 패리티 데이터는 데이터와 함께 불휘발성 메모리 장치들(2231 ~ 223n)에 저장될 수 있다. 에러 정정 코드(ECC) 유닛(2231)은 불휘발성 메모리 장치들(2231 ~ 223n)로부터 독출된 데이터의 에러를 검출할 수 있다. 만일, 검출된 에러가 정정 범위 이내이면, 에러 정정 코드(ECC) 유닛(2213)은 검출된 에러를 정정할 수 있다.
본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있으므로, 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
10: 데이터 저장 장치 100: 불휘발성 메모리 장치
110: 메모리 셀 어레이 120: 제어 로직
200: 메모리 컨트롤러 210: 커맨드 큐
220: 커맨드 가중치 레지스터 230: 프로세서
110: 메모리 셀 어레이 120: 제어 로직
200: 메모리 컨트롤러 210: 커맨드 큐
220: 커맨드 가중치 레지스터 230: 프로세서
Claims (17)
- 불휘발성 메모리 장치; 및
상기 불휘발성 메모리 장치의 동작을 제어하는 메모리 컨트롤러를 포함하고,
상기 메모리 컨트롤러는,
호스트 장치로부터 수신되는 복수의 커맨드들에 대한 가중치 값들이 저장된 커맨드 가중치 레지스터; 및
상기 불휘발성 메모리 장치에서 제1 커맨드에 대한 제1 동작을 수행하는 도중 상기 호스트 장치로부터 제2 커맨드가 수신되면, 상기 커맨드 가중치 레지스터를 참조하여 상기 제1 커맨드의 가중치 값과 상기 제2 커맨드의 가중치 값을 비교하고, 상기 제2 커맨드의 가중치 값이 크면, 상기 불휘발성 메모리 장치에 일시 중지된 동작이 있는지 판단하고,
상기 일시 중지된 동작이 있으면 상기 제1 동작이 완료될 때까지 대기하고, 상기 제1 동작이 완료되면 상기 커맨드 가중치 레지스터를 참조하여 상기 제2 커맨드의 가중치 값과 상기 일시 중지된 동작에 대응하는 제3 커맨드의 가중치 값을 비교하며,
상기 일시 중지된 동작이 없으면 상기 제1 동작을 일시 중지시키고 상기 제2 커맨드를 상기 불휘발성 메모리 장치로 전송하는 프로세서를 포함하는 데이터 저장 장치. - 삭제
- ◈청구항 3은(는) 설정등록료 납부시 포기되었습니다.◈제1항에 있어서,
상기 제2 커맨드의 가중치 값이 상기 제3 커맨드의 가중치 값보다 크면,
상기 프로세서는 상기 제2 커맨드에 대한 제2 동작을 먼저 수행하도록 상기 제2 커맨드를 상기 불휘발성 메모리 장치로 전송하는 데이터 저장 장치. - ◈청구항 4은(는) 설정등록료 납부시 포기되었습니다.◈제1항에 있어서,
상기 제2 커맨드의 가중치 값이 상기 제3 커맨드의 가중치 값보다 작으면,
상기 프로세서는 상기 제3 커맨드에 대한 제3 동작을 재개시키기 위한 재개 커맨드를 상기 불휘발성 메모리 장치로 전송하는 데이터 저장 장치. - ◈청구항 5은(는) 설정등록료 납부시 포기되었습니다.◈제1항에 있어서,
상기 제3 커맨드의 가중치 값은 상기 커맨드 가중치 레지스터에 기 저장된 제1 가중치 값과 상기 제3 커맨드에 대한 제3 동작이 일시 중지된 정도에 해당하는 제2 가중치 값을 포함하는 데이터 저장 장치. - ◈청구항 6은(는) 설정등록료 납부시 포기되었습니다.◈제5항에 있어서,
상기 프로세서는 상기 제3 동작이 일시 중지된 이후 경과된 시간에 기 설정된 상수를 곱하여 상기 제2 가중치 값을 연산하는 데이터 저장 장치. - ◈청구항 7은(는) 설정등록료 납부시 포기되었습니다.◈제5항에 있어서,
상기 프로세서는 상기 제3 동작이 일시 중지된 이후 상기 불휘발성 메모리 장치에서 동작 수행된 커맨드들의 가중치 값들을 모두 합산하여 상기 제2 가중치 값을 연산하는 데이터 저장 장치. - ◈청구항 8은(는) 설정등록료 납부시 포기되었습니다.◈제5항에 있어서,
상기 프로세서는 상기 제3 동작이 일시 중지된 이후 상기 불휘발성 메모리 장치에서 동작 수행된 커맨드들의 개수에 기 설정된 상수를 곱하여 상기 제2 가중치 값을 연산하는 데이터 저장 장치. - ◈청구항 9은(는) 설정등록료 납부시 포기되었습니다.◈제1항에 있어서,
상기 제2 커맨드의 가중치 값이 작으면,
상기 프로세서는 상기 제1 동작이 완료될 때까지 대기하고, 상기 제1 동작이 완료되면, 상기 불휘발성 메모리 장치에 현재 일시 중지된 동작이 있는지 여부를 판단하는 데이터 저장 장치. - ◈청구항 10은(는) 설정등록료 납부시 포기되었습니다.◈제1항에 있어서,
각 커맨드에 대한 가중치 값은 상기 각 커맨드에 대한 동작 시간, 중요도, 및 전력 소모량 중 적어도 하나에 근거하여 설정되는 데이터 저장 장치. - ◈청구항 11은(는) 설정등록료 납부시 포기되었습니다.◈제1항에 있어서,
상기 커맨드 가중치 레지스터에 저장된 각 커맨드에 대한 가중치 값은 상기 데이터 저장 장치가 동작하는 동안 상기 호스트 장치로부터 수신된 횟수에 근거하여 실시간으로 업데이트되는 데이터 저장 장치. - 불휘발성 메모리 장치를 포함하는 데이터 저장 장치의 동작 방법에 있어서,
상기 불휘발성 메모리 장치에서 제1 커맨드에 대한 제1 동작을 수행하는 도중, 호스트 장치로부터 제2 커맨드가 수신되면, 상기 제1 커맨드의 가중치 값과 상기 제2 커맨드의 가중치 값을 비교하는 단계;
상기 제2 커맨드의 가중치 값이 크면, 상기 불휘발성 메모리 장치에 일시 중지된 동작이 있는지 판단하는 단계;
상기 일시 중지된 동작이 있으면 상기 제1 동작이 완료될 때까지 대기하고, 상기 제1 동작이 완료되면, 상기 제2 커맨드의 가중치 값과 상기 일시 중지된 동작에 대응하는 제3 커맨드의 가중치 값을 비교하는 단계; 및
상기 일시 중지된 동작이 없으면 상기 제1 동작을 일시 중지시키고 상기 제2 커맨드를 상기 불휘발성 메모리 장치로 전송하는 단계
를 포함하는 데이터 저장 장치의 동작 방법. - 삭제
- ◈청구항 14은(는) 설정등록료 납부시 포기되었습니다.◈제12항에 있어서,
상기 제2 커맨드의 가중치 값이 상기 제3 커맨드의 가중치 값보다 크면, 상기 제2 커맨드에 대한 제2 동작을 먼저 수행하도록 상기 불휘발성 메모리 장치로 상기 제2 커맨드를 전송하는 단계를 더 포함하는 데이터 저장 장치의 동작 방법. - ◈청구항 15은(는) 설정등록료 납부시 포기되었습니다.◈제12항에 있어서,
상기 제2 커맨드의 가중치 값이 상기 제3 커맨드의 가중치 값보다 작으면, 상기 제3 커맨드에 대한 제3 동작을 재개하도록 상기 불휘발성 메모리 장치로 재개 커맨드를 전송하는 단계를 더 포함하는 데이터 저장 장치의 동작 방법. - ◈청구항 16은(는) 설정등록료 납부시 포기되었습니다.◈제15항에 있어서,
상기 재개 커맨드를 전송하는 단계 이후,
상기 제3 동작이 완료되었는지 여부를 판단하는 단계; 및
판단 결과, 상기 제3 동작이 완료되었으면, 상기 제2 커맨드를 상기 불휘발성 메모리 장치로 전송하는 단계
를 더 포함하는 데이터 저장 장치의 동작 방법. - ◈청구항 17은(는) 설정등록료 납부시 포기되었습니다.◈제12항에 있어서,
상기 제1 커맨드의 가중치 값과 상기 제2 커맨드의 가중치 값을 비교한 후,
상기 제2 커맨드의 가중치 값이 작으면, 상기 제1 동작이 완료될 때까지 대기하고, 상기 제1 동작이 완료되면 상기 불휘발성 메모리 장치에 일시 중지된 동작이 있는지 여부를 판단하는 단계
를 더 포함하는 데이터 저장 장치의 동작 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160074551A KR102634776B1 (ko) | 2016-06-15 | 2016-06-15 | 데이터 저장 장치 및 그것의 동작 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160074551A KR102634776B1 (ko) | 2016-06-15 | 2016-06-15 | 데이터 저장 장치 및 그것의 동작 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170141468A KR20170141468A (ko) | 2017-12-26 |
KR102634776B1 true KR102634776B1 (ko) | 2024-02-08 |
Family
ID=60936748
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160074551A KR102634776B1 (ko) | 2016-06-15 | 2016-06-15 | 데이터 저장 장치 및 그것의 동작 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102634776B1 (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102624606B1 (ko) * | 2016-07-04 | 2024-01-15 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치 및 그 동작 방법 |
KR102258178B1 (ko) | 2017-10-27 | 2021-06-03 | 주식회사 엘지에너지솔루션 | 냉각 및 조립 구조를 단순화시킨 배터리 모듈 및 그 제조방법 |
KR102420161B1 (ko) * | 2017-12-01 | 2022-07-12 | 삼성전자주식회사 | 메모리 컨트롤러 및 그것의 제어 방법 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013069069A (ja) * | 2011-09-21 | 2013-04-18 | Toshiba Corp | メモリデバイス |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100607987B1 (ko) * | 2004-06-24 | 2006-08-02 | 삼성전자주식회사 | 명령어 스케줄링을 수행하는 메모리 제어장치 및 방법 |
US8972995B2 (en) * | 2010-08-06 | 2015-03-03 | Sonics, Inc. | Apparatus and methods to concurrently perform per-thread as well as per-tag memory access scheduling within a thread and across two or more threads |
-
2016
- 2016-06-15 KR KR1020160074551A patent/KR102634776B1/ko active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013069069A (ja) * | 2011-09-21 | 2013-04-18 | Toshiba Corp | メモリデバイス |
Also Published As
Publication number | Publication date |
---|---|
KR20170141468A (ko) | 2017-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11216362B2 (en) | Data storage device and operating method thereof | |
KR102580820B1 (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US10949105B2 (en) | Data storage device and operating method of the data storage device | |
US11068206B2 (en) | Data storage device for processing a sequential unmap entry by using trim instruction data and operating method thereof | |
KR102565918B1 (ko) | 데이터 저장 장치 및 그것의 동작방법 | |
KR102419036B1 (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
KR102648180B1 (ko) | 메모리 시스템 및 그 동작 방법 | |
US20200218653A1 (en) | Controller, data storage device, and operating method thereof | |
KR102474035B1 (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
KR102595233B1 (ko) | 데이터 처리 시스템 및 그것의 동작 방법 | |
US11520694B2 (en) | Data storage device and operating method thereof | |
KR20210098717A (ko) | 컨트롤러, 컨트롤러의 동작 방법 및 이를 포함하는 저장 장치 | |
KR20200121645A (ko) | 컨트롤러 및 그것의 동작 방법과 메모리 시스템 | |
US11461238B2 (en) | Storage device, memory controller, and method for fetching write commands from submission queues to perform full page writes | |
KR20210144249A (ko) | 저장 장치 및 이의 동작 방법 | |
KR20170094674A (ko) | 데이터 저장 장치 | |
KR102634776B1 (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
KR102434840B1 (ko) | 데이터 저장 장치 | |
KR102645786B1 (ko) | 컨트롤러, 메모리 시스템 및 그것의 동작 방법 | |
KR20210156010A (ko) | 저장 장치 및 그 동작 방법 | |
KR20210068734A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US11157401B2 (en) | Data storage device and operating method thereof performing a block scan operation for checking for valid page counts | |
KR20150102329A (ko) | 데이터 저장 장치 | |
KR20190041082A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US11194512B2 (en) | Data storage device which selectively performs a cache read or a normal read operation depending on work load and operating method thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |