KR20120017830A - Semiconductor storage device and method of controlling performance of semiconductor storage device - Google Patents
Semiconductor storage device and method of controlling performance of semiconductor storage device Download PDFInfo
- Publication number
- KR20120017830A KR20120017830A KR1020100080697A KR20100080697A KR20120017830A KR 20120017830 A KR20120017830 A KR 20120017830A KR 1020100080697 A KR1020100080697 A KR 1020100080697A KR 20100080697 A KR20100080697 A KR 20100080697A KR 20120017830 A KR20120017830 A KR 20120017830A
- Authority
- KR
- South Korea
- Prior art keywords
- workload
- storage device
- semiconductor storage
- data
- host
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/20—Handling requests for interconnection or transfer for access to input/output bus
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash memory
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
Description
본 발명은 데이터 저장장치에 관한 것으로, 특히, 비휘발성 메모리에 데이터를 저장하는 반도체 저장장치 및 그 성능 조절 방법에 관한 것이다.The present invention relates to a data storage device, and more particularly, to a semiconductor storage device for storing data in a nonvolatile memory and a method of adjusting the performance thereof.
반도체 저장 장치는 반도체(특히, 비휘발성 메모리)를 이용하여 데이터를 저장하는 장치로서, 지금까지 대용량 저장장치로 널리 사용되던 디스크 저장매체(즉, 하드디스크드라이브)에 비하여 속도가 빠르고 물리적 충격에 강하고 발열이나 소음도 적으며, 소형화할 수 있는 장점이 있다. 반도체 저장 장치의 일 예로는, 솔리드 스테이트 드라이브(SSD: solid state drive)가 있다.A semiconductor storage device is a device that stores data using a semiconductor (particularly, a nonvolatile memory). The semiconductor storage device is faster than a disk storage medium (ie, a hard disk drive), which has been widely used as a mass storage device, and is resistant to physical shocks. Less heat and noise, there is an advantage that can be miniaturized. One example of a semiconductor storage device is a solid state drive (SSD).
한편, 반도체 저장 장치는 사용 수명에 제한이 있을 수 있다. 예를 들면 NAND 플래시 메모리가 대표적이다. NAND 플래시 메모리는 메모리 소자가 블록(block) 단위로 나누어져 있으며, 한 개의 블록 내에는 다수의 페이지가 존재한다. 사용자는 먼저 블록을 소거하고 그 블록내의 페이지들을 순차적으로 특정 데이터로 프로그램함으로써 NAND 플래시 메모리를 이용한다. 모든 페이지가 프로그램된 블록을 새로운 데이터로 프로그램하기 위해서는 해당 블록을 다시 소거해야 한다. 이 일련의 과정을 프로그램-소거 사이클 (PE-cycle)이라고 부르며, NAND 플래시 메모리의 경우 한 블록이 견딜 수 있는 PE-사이클 횟수가 제한되어 있다. 이를 NAND 플래시 메모리의 인듀어런스(endurance)라고 부른다. Meanwhile, the semiconductor storage device may have a limited service life. For example, NAND flash memory is typical. In NAND flash memory, memory devices are divided into blocks, and a plurality of pages exist in one block. The user utilizes NAND flash memory by first erasing the block and then sequentially programming the pages within the block with specific data. In order to program a block with all pages programmed with new data, the block must be erased again. This series of processes is called a program-erase cycle (PE-cycle), and in NAND flash memory, there is a limit to the number of PE-cycles a block can withstand. This is called the endurance of NAND flash memory.
한 블록이 경험한 PE-사이클의 횟수가 인듀어런스 한계(endurance limit)를 초과할 경우 그 블록은 추후 오동작할 확률이 높아진다. 메모리의 오동작 원인으로는 상술한 프로그램, 소거 동작 외에도 독출(Read) 동작, 자연적인 전하 누설(charge loss) 등이 있다. 오동작 확률이 높아지면 반도체 저장장치의 데이터 무결성(integrity)를 위해서 더 이상 쓰이면 안 된다. 이 때문에 NAND 플래시 메모리를 응용하는 반도체 저장장치는 그 수명에 있어서 제한을 갖는 것이다. If the number of PE-cycles experienced by a block exceeds the endurance limit, the block is more likely to malfunction later. In addition to the above-described program and erase operations, a memory malfunction may include a read operation and a natural charge loss. When the probability of malfunction increases, it should not be used anymore for the data integrity of the semiconductor storage device. For this reason, semiconductor storage devices employing NAND flash memories have a limited lifetime.
상기 예에서 보면, 반도체 저장장치에 과도한 워크로드(workload)-예를 들어, 쓰기 동작, 소거 동작, 독출 동작 등-을 가하면 반도체 저장장치의 수명이 짧아지거나 혹은 예상 수명이 보장되지 못할 수가 있다. 따라서, 반도체 저장 장치의 예상 수명을 보장하기 위해서는 반도체 저장장치에 인가되는 워크로드의 강도나 양에 따라 반도체 저장장치의 처리 능력이 조절될 필요가 있다.In the above example, when an excessive workload (eg, a write operation, an erase operation, a read operation, etc.) is applied to the semiconductor storage device, the life of the semiconductor storage device may be shortened or the expected life may not be guaranteed. Therefore, in order to ensure the expected life of the semiconductor storage device, the processing capacity of the semiconductor storage device needs to be adjusted according to the intensity or amount of the workload applied to the semiconductor storage device.
이러한 경우는 최근 서버 응용(Server Application)을 겨냥하여 멀티-레벨 셀 (MLC: multi-level cell) NAND 플래시 메모리로 구성된 솔리드 스테이트 드라이브(SSD: solid state drive)에서 찾아볼 수 있다. 서버향 저장장치는 높은 성능, 즉 높은 초당 입출력(I/O per second)을 요구할 뿐만 아니라, 저장장치에 인가되는 워크로드의 양의 변화가 크다. 이런 응용처에 제한된 인듀어런스 한계를 지닌 MLC NAND 플래시 메모리를 적용하면 SSD의 수명을 보장하는데 어려움이 있다. This can be found in solid state drives (SSDs) consisting of multi-level cell (MLC) NAND flash memory targeted at recent server applications. Server-side storage not only requires high performance, ie high I / O per second, but also varies greatly in the amount of workload applied to the storage. The application of MLC NAND flash memory with limited endurance limitations in these applications makes it difficult to guarantee the lifetime of SSDs.
그러나, 수명을 보장하여야 하는 저장장치가 상술한 서버향 저장 장치에 한정되는 것은 아니며, PC(personal computer), 노트북, 모바일 기기 등에 적용될 저장장치의 수명 역시 보장될 필요가 있다.However, the storage device for guaranteeing the lifespan is not limited to the server-side storage device described above, and the lifespan of the storage device to be applied to a personal computer (PC), a notebook computer, a mobile device, and the like also needs to be guaranteed.
인듀어런스 한계를 지닌 메모리의 예로는 상술한 NAND 플래시 메모리 외에도 PRAM(상변화 메모리, Phase-change Memory), MRAM(Magnetic Random Access Memory), ReRAM(저항성 메모리, Resistive RAM), FeRAM(강유전체 램, Ferroelectric RAM) 등이 있을 수 있다. 또한, 인듀어런스 한계를 지닌 NAND 플래시 메모리에는 플로팅 게이트를 사용하는 NAND 플래시 메모리와 CTF(Charge Trap Flash) 방식의 NAND 플래시 메모리도 포함된다. Examples of memory with an endurance limit include, in addition to the above-described NAND flash memory, PRAM (Phase-change Memory), MRAM (Magnetic Random Access Memory), ReRAM (Resistive RAM), and FeRAM (Ferroelectric RAM). ) And the like. In addition, NAND flash memory with an endurance limit includes NAND flash memory using a floating gate and NAND flash memory of a charge trapping flash (CTF) method.
이와 같이 인듀어런스 한계를 지닌 비휘발성 메모리를 사용하는 반도체 저장장치의 수명을 연장하기 위한, 혹은 예상 수명을 보장하기 위한 방안이 요구된다.As such, there is a need for a method for extending the life of a semiconductor storage device using a nonvolatile memory having an endurance limit or for ensuring an expected life.
따라서 본 발명이 이루고자 하는 기술적인 과제는 예상 수명을 보장하기 위하여 워크로드에 따라 적응적으로 성능을 조절할 수 있도록 상기 워크로드를 예측하고 예측된 워크로드를 이용하여 성능을 조절하는 반도체 저장장치 및 그 방법을 제공하는 것이다.Accordingly, the technical problem to be achieved by the present invention is a semiconductor storage device for predicting the workload and adjusting the performance using the predicted workload so that the performance can be adaptively adjusted according to the workload in order to guarantee the expected lifespan and its To provide a way.
상기 기술적 과제를 해결하기 위한 본 발명의 일 실시예에 따른 반도체 저장장치의 성능 조절 방법은, 비휘발성 메모리 장치 및 상기 비휘발성 메모리 장치를 제어하는 컨트롤러를 포함하는 반도체 저장장치의 성능 조절 방법으로서, 상기 반도체 저장장치의 동작을 실행시키기 위하여 호스트로부터 전송되는 명령을 수신하는 단계; 상기 호스트로부터 수신되어 실행 완료된 명령의 수를 카운트하는 단계; 및 카운트된 명령 수를 이용하여, 워크로드를 예측하는 단계를 구비한다.According to an aspect of the present invention, there is provided a method of adjusting a performance of a semiconductor storage device, the method including controlling a nonvolatile memory device and a controller to control the nonvolatile memory device. Receiving a command sent from a host to execute an operation of the semiconductor storage device; Counting the number of commands received from the host and executed; And predicting the workload, using the counted number of instructions.
상기 기술적 과제를 해결하기 위한 본 발명의 다른 실시예에 따른 반도체 저장장치의 성능 조절 방법은, 비휘발성 메모리 장치 및 상기 비휘발성 메모리 장치를 제어하는 컨트롤러를 포함하는 반도체 저장장치의 성능 조절 방법으로서, 상기 반도체 저장장치의 동작을 실행시키기 위하여 호스트로부터 전송되는 명령을 수신하는 단계; 상기 명령에 응답하여 상기 호스트로 데이터를 송신하거나 또는 상기 호스트로부터 데이터를 수신하는 단계; 상기 호스트로 송신 또는 상기 호스트로부터 수신된 데이터 량을 카운트하는 단계; 및 상기 카운트된 데이터량을 이용하여, 워크로드를 예측하는 단계를 구비한다.According to another aspect of the present invention, there is provided a method of controlling a performance of a semiconductor storage device including a nonvolatile memory device and a controller to control the nonvolatile memory device. Receiving a command sent from a host to execute an operation of the semiconductor storage device; Sending data to or receiving data from the host in response to the command; Counting the amount of data sent to or received from the host; And predicting a workload using the counted amount of data.
상기 기술적 과제를 해결하기 위한 본 발명의 또 다른 실시예에 따른 반도체 저장장치의 성능 조절 방법은, 비휘발성 메모리 장치 및 상기 비휘발성 메모리 장치를 제어하는 컨트롤러를 포함하는 반도체 저장장치의 성능 조절 방법으로서, 상기 반도체 저장 장치의 워크로드와 관련된 둘 이상의 워크로드 데이터를 수집하는 단계; 수집된 둘 이상의 워크로드 데이터를 이용하여 워크로드를 예측하는 단계; 및 예측된 워크로드에 따라 상기 반도체 저장장치의 성능을 조절하는 단계를 구비한다. According to another aspect of the present invention, there is provided a method of adjusting a performance of a semiconductor storage device, the method including a nonvolatile memory device and a controller for controlling the nonvolatile memory device. Collecting at least two workload data associated with a workload of the semiconductor storage device; Predicting the workload using the collected two or more workload data; And adjusting the performance of the semiconductor storage device according to the expected workload.
상기 기술적 과제를 해결하기 위한 본 발명의 일 실시예에 따른 반도체 저장장치는 비휘발성 메모리 장치; 및 상기 비휘발성 메모리 장치를 제어하는 컨트롤러를 포함한다. 상기 컨트롤러는 둘 이상의 워크로드 데이터를 수집하고, 수집된 둘 이상의 워크로드 데이터를 이용하여 워크로드를 예측하는 워크로드 모듈; 및 예측된 워크로드에 따라 상기 반도체 저장장치의 성능을 조절하는 성능 조절모듈을 구비한다. A semiconductor storage device according to an embodiment of the present invention for solving the technical problem is a nonvolatile memory device; And a controller controlling the nonvolatile memory device. The controller includes: a workload module that collects two or more workload data and predicts the workload using the collected two or more workload data; And a performance adjustment module for adjusting the performance of the semiconductor storage device according to the predicted workload.
상기 기술적 과제를 해결하기 위한 본 발명의 일 실시예에 따른 전자 시스템은 상기 반도체 저장 장치: 호스트; 및 상기 반도체 저장 장치가 장착되며, 상기 호스트와 상기 반도체 저장장치 사이에 접속되어 상기 호스트의 제어에 따라 상기 반도체 저장 장치를 제어하는 컨트롤러 카드를 구비한다.An electronic system according to an embodiment of the present invention for solving the technical problem is the semiconductor storage device: a host; And a controller card mounted with the semiconductor storage device and connected between the host and the semiconductor storage device to control the semiconductor storage device under control of the host.
상술한 바와 같이 본 발명에 의하면, 반도체 저장장치가 겪을 워크로드를 예측할 수 있다. 예측된 워크로드를 이용하여 반도체 저장 저장장치의 성능을 조절함으로써, 저장 장치의 수명을 보장할 수 있는 효과가 있다.As described above, according to the present invention, it is possible to predict the workload that the semiconductor storage device will experience. By adjusting the performance of the semiconductor storage device by using the predicted workload, there is an effect of ensuring the life of the storage device.
도 1은 본 발명의 일 실시예에 따른 데이터 저장 시스템의 개략적인 블록도이다.
도 2는 본 발명의 일 실시예에 따른 컨트롤러의 개략적인 블록도이다.
도 3은 도 2에 도시된 비휘발성 메모리 장치의 구조를 개략적으로 나타내는 도면이다.
도 4는 본 발명의 일 실시예에 따른 호스트의 개략적인 블록도이다.
도 5는 본 발명의 일 실시예에 따른 반도체 저장장치의 동작 방법을 나타내는 흐름도이다.
도 6은 본 발명의 일 실시예에 따른 반도체 저장장치의 워크로드 예측 방법을 나타내는 흐름도이다.
도 7a는 도 6에 도시된 워크로드 데이터 수집 단계의 일 예를 좀 더 세부적으로 나타내는 흐름도이다.
도 7b는 호스트로부터 쓰기 명령 및 쓰기 데이터를 수신하는 경우의 개략적인 타이밍도이다.
도 8a은 초기동작 기간 동안의 저장장치의 동작 방법의 일 예를 설명하기 위한 그래프이다.
도 8b는 워크로드 데이터 수집 기간을 설명하기 위한 그래프이다.
도 8c는 워크로드 예측 시점에 따른 워크로드 데이터 수집 기간의 변동을 설명하기 위한 그래프이다.
도 9는 초기동작 기간 동안의 저장장치의 동작 방법의 다른 일 예를 설명하기 위한 그래프이다.
도 10a 및 도 10b는 각각 본 발명의 다른 일 실시예에 따른 반도체 저장장치의 워크로드 예측 방법을 나타내는 흐름도이다.
도 11a 및 도 11b는 각각 본 발명의 일 실시예에 따른 성능 조절 인에이블 명령 및 성능 조절 정보 요청 명령의 포맷을 나타내는 테이블이다.
도 12는 본 발명의 일 실시예에 따른 성능 조절 정보 응답 명령의 포맷을 나타내는 테이블이다.
도 13은 본 발명의 실시예에 따른 반도체 저장장치의 동작 방법에 사용되는 성능 조절 데이터이다.
도 14는 본 발명의 실시예에 따른 반도체 저장장치를 구비하는 전자 시스템의 블록도이다.
도 15a 및 도 15b는 각각 본 발명의 다른 실시예에 따른 전자 시스템의 블록도이다.
도 16은 본 발명의 실시예에 따른 반도체 저장장치를 구비하는 컴퓨팅 시스템의 블록도이다.1 is a schematic block diagram of a data storage system according to an embodiment of the present invention.
2 is a schematic block diagram of a controller according to an embodiment of the present invention.
FIG. 3 is a diagram schematically illustrating a structure of the nonvolatile memory device shown in FIG. 2.
4 is a schematic block diagram of a host according to an embodiment of the present invention.
5 is a flowchart illustrating a method of operating a semiconductor storage device according to an example embodiment.
6 is a flowchart illustrating a workload prediction method of a semiconductor storage device according to an embodiment of the present invention.
FIG. 7A is a flowchart illustrating in more detail an example of the workload data collection step illustrated in FIG. 6.
7B is a schematic timing diagram when receiving a write command and write data from a host.
8A is a graph for explaining an example of a method of operating a storage device during an initial operation period.
8B is a graph for explaining a workload data collection period.
8C is a graph for describing a change in a workload data collection period according to a workload prediction time point.
9 is a graph illustrating another example of a method of operating a storage device during an initial operation period.
10A and 10B are flowcharts illustrating a workload prediction method of a semiconductor storage device, according to another exemplary embodiment.
11A and 11B are tables illustrating formats of a performance adjustment enable command and a performance adjustment information request command, respectively, according to an embodiment of the present invention.
12 is a table illustrating a format of a performance adjustment information response command according to an embodiment of the present invention.
13 is performance control data used in a method of operating a semiconductor storage device according to an exemplary embodiment of the present invention.
14 is a block diagram of an electronic system including a semiconductor storage device according to an embodiment of the present invention.
15A and 15B are each a block diagram of an electronic system according to another embodiment of the present invention.
16 is a block diagram of a computing system including a semiconductor storage device according to an embodiment of the present invention.
본 명세서 또는 출원에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 개념에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 명세서 또는 출원에 설명된 실시 예들에 한정되는 것으로 해석되어서는 아니 된다.Specific structural to functional descriptions of embodiments according to the inventive concept disclosed in the specification or the application are only illustrated for the purpose of describing embodiments according to the inventive concept, and according to the inventive concept. The examples may be embodied in various forms and should not be construed as limited to the embodiments set forth herein or in the application.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.When a component is said to be "connected" or "connected" to another component, it may be directly connected to or connected to that other component, but it may be understood that another component may exist in between. Should be. On the other hand, when a component is said to be "directly connected" or "directly connected" to another component, it should be understood that there is no other component in between.
예컨대, 어느 하나의 구성요소가 다른 구성요소로 데이터 또는 신호를 '전송 또는 출력'하는 경우에는 상기 구성요소는 상기 다른 구성요소로 직접 상기 데이터 또는 신호를 '전송 또는 출력'할 수 있고, 적어도 하나의 또 다른 구성요소를 통하여 상기 데이터 또는 신호를 상기 다른 구성요소로 '전송 또는 출력'할 수 있음을 의미한다. For example, when one component 'transmits or outputs' data or a signal to another component, the component may 'transmit or output' the data or signal directly to the other component, and at least one This means that the data or signal may be transmitted or output to the other component through another component of.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings. Like reference numerals in the drawings denote like elements.
본 발명의 실시예는 반도체 저장장치의 성능을 조절하기에 앞서, 먼저 저장장치가 겪을 워크로드(즉, 워크로드의 강도 및 패턴)을 파악하고 예측하는 방법에 관한 것이다. 워크로드의 강도 및 패턴을 알아야만, 저장장치가 보장해야 하는 수명과 저장장치의 인듀어런스 한계(endurance limit)과 관련하여, 저장장치의 최적의 성능을 도출할 수 있기 때문이다. Embodiments of the present invention relate to a method of first identifying and predicting a workload (i.e., strength and pattern of a workload) that the storage device will experience prior to adjusting the performance of the semiconductor storage device. This is because the strength and pattern of the workload must be known, so that the optimal performance of the storage can be derived in terms of the lifetime that the storage must guarantee and the endurance limit of the storage.
도 1은 본 발명의 일 실시예에 따른 데이터 저장 시스템(1)의 개략적인 블록도이다. 본 발명의 일 실시예에 따른 데이터 저장 시스템(1)은 반도체 저장장치(10) 및 호스트(20)를 포함한다. 반도체 저장장치(10)는 컨트롤러(100) 및 비휘발성 메모리 장치(200)를 포함할 수 있다. 1 is a schematic block diagram of a
호스트(20)는 PCI-E(peripheral component interconnect - express), ATA(Advanced Technology Attachment), SATA(serial ATA), PATA(parallel ATA), 또는 SAS(serial attached SCSI)와 같은 인터페이스 프로토콜을 사용하여 반도체 저장장치(10)와 통신할 수 있다. 그러나, 호스트(20)와 반도체 저장장치(10)간의 인터페이스 프로토콜들은 상술한 예에 한정되지 않으며, USB(Universal Serial Bus), MMC(multi-media card), ESDI(enhanced small disk interface), 또는 IDE(Integrated Drive Electronics) 등과 같은 다른 인터페이스 프로토콜들 중 하나일 수 있다. The
본 발명의 실시예에 따른 반도체 저장장치(10)는 솔리드 스테이트 드라이브(Solid State Drive, 이하 'SSD'라 함) 또는 SD(secure digital) 카드일 수 있으나, 이에 한정되지 않는다. 또한, 비휘발성 메모리 장치(200)는 플래시 메모리 장치일 수 있으나, 이에 한정되지 않으며, PRAM, MRAM, ReRAM, 또는 FeRAM 장치일 수 있다. 비휘발성 메모리 장치(200)가 플래시 메모리 장치인 경우, 플로팅 게이트 방식의 NAND 플래시 메모리 장치 또는 CTF(Charge Trap Flash) 방식의 NAND 플래시 메모리 장치일 수 있다. 비휘발성 메모리 장치(200)의 메모리 셀 트랜지스터들은 2차원적으로 배열된 구조를 가질 수도 있고, 또는 3차원적으로 배열된 구조를 가질 수도 있다.The
컨트롤러(100)는 반도체 저장장치(10)의 동작을 전반적으로 제어하며, 또한 호스트(20)와 비휘발성 메모리 장치(200) 간의 제반 데이터 교환을 제어한다. 예컨대, 컨트롤러(100)는 호스트(20)의 요청에 따라 비휘발성 메모리 장치(200)를 제어하여 데이터를 쓰거나 데이터를 독출한다. 또한, 컨트롤러(100)는 비휘발성 메모리의 특성이나 비휘발성 메모리의 효율적인 관리를 위하여 필요한 일련의 내부 동작(예컨대, 성능 조절, 머지, 웨어 레벨링 등)을 제어한다.The
비휘발성 메모리 장치(200)는 데이터를 비휘발적으로 저장하기 위한 저장 장소로서, OS(Operating System), 각종 프로그램들, 및 각종 데이터를 저장할 수 있다. The
도 2는 본 발명의 일 실시예에 따른 컨트롤러(100)의 개략적인 블록도이다. 도 2를 참조하면, 컨트롤러(100)는 호스트 인터페이스(110), DRAM(120), SRAM(130), 메모리 인터페이스(140), CPU(150), 버스(160), 워크로드 모듈(170), 타이머(180), 성능 조절 모듈(190) 및 클럭 발생기(195)를 포함할 수 있다.2 is a schematic block diagram of a
호스트 인터페이스(110)는 호스트(20)와 통신하기 위하여 상술한 바와 같은 인터페이스 프로토콜을 구비한다. DRAM(120), 및 SRAM(130)은 각각 데이터 및/또는 프로그램을 휘발적으로 저장한다. 비휘발성 메모리 인터페이스(140)는 비휘발성 메모리 장치(200)와 인터페이싱한다. The
CPU(150)는 비휘발성 메모리 장치(200)로/로부터 데이터 기록/독출을 위한 제반 제어 동작을 수행한다. The
워크로드 모듈(170)은 반도체 저장장치(10)에 인가되는 워크로드와 관련된 워크로드 데이터를 수집하고, 수집된 워크로드 데이터를 토대로 워크로드를 예측할 수 있다. The
성능 조절 모듈(190)은 워크로드 모듈(170)에서 예측한 워크로드에 따라 타겟 성능 레벨을 결정하고, 결정된 성능 레벨을 적용하여 반도체 저장장치(10)의 성능을 조절한다. The
타이머(180)는 CPU(150), 워크로드 모듈(170) 및 성능 조절 모듈(190)로 시간 정보를 제공한다. 워크로드 모듈(170), 타이머(180) 및 성능 조절 모듈(190)은 각각 하드웨어, 소프트웨어 또는 하드웨어와 소프트웨어의 결합으로 구현될 수 있다. The
워크로드 모듈(170), 타이머(180) 및 성능 조절 모듈(190)이 소프트웨어로 구현되는 경우, 해당 프로그램은 비휘발성 메모리 장치(200)에 저장되고, 반도체 저장장치(10)가 파워-온되면, 비휘발성 메모리 장치(200)로부터 SRAM(130)으로 로드되어 CPU(150)에 의해 실행될 수 있다.When the
클럭 발생기(195)는 CPU(150), DRAM(120), 및 비휘발성 메모리 장치(200)의 동작을 위해 필요한 클럭 신호를 생성하여, 해당 소자로 제공한다. CPU(150), DRAM(120), 및 비휘발성 메모리 장치(200)에 제공되는 클럭 신호의 속도는 각각 다를 수 있다. The
비록 도면에는 도시되지 않았지만, 반도체 저장장치(10)는 반도체 저장장치(10)의 파워-온(power-on)시 실행되는 코드 데이터를 저장하는 ROM(미도시), 비휘발성 메모리 장치(200)에 저장될 데이터를 인코딩하고 비휘발성 메모리 장치(200)로부터 독출된 데이터를 디코딩하기 위한 ECC 엔진(미도시) 등의 구성요소를 더 구비할 수 있다.Although not shown in the drawings, the
도 3은 도 2에 도시된 비휘발성 메모리 장치(200)의 구조를 개략적으로 나타내는 도면이다. 이를 참조하면, 비휘발성 메모리 장치(200)는 다수의 메모리 소자들을 포함할 수 있다. 도 3에는 4-채널(4-channel)/ 3-뱅크(3-bank) 방식의 하드웨어 구조를 갖는 비휘발성 메모리 장치(200)가 예시적으로 도시되나, 본 발명이 이에 한정되는 것은 아니다. 3 is a diagram schematically illustrating a structure of the
도 3에 도시된 반도체 저장장치(10)에서, 컨트롤러(100)와 비휘발성 메모리 장치(200)는 4개의 채널(Channel A, B, C, D)로 연결되며, 각 채널에는 3개의 플래시 메모리 소자(CA0~CA2, CB0~CB2, CC0~CC2, CD0~CD2)가 연결되는 구조이다. 그러나, 채널의 수 및 뱅크의 수는 이에 한정되지 않고 변경될 수 있음은 당연하다.In the
이러한 구조를 가지는 반도체 저장장치(10)에서 반도체 저장장치(10)의 성능 조절 단위는, 비휘발성 메모리 장치(200) 전체, 비휘발성 메모리 장치(200)의 개별적인 메모리 소자(메모리 칩)가 공유하는 버스(채널) 단위, 뱅크 단위, 혹은 개별적인 소자 단위일 수 있다. 여기서, 뱅크는 다른 채널상에서 같은 오프셋(offset)에 위치하는 메모리 소자들의 그룹이다. In the
도 4는 본 발명의 일 실시예에 따른 호스트(20)의 개략적인 블록도이다. 도 4를 참조하면, CPU(210), 메모리(220), 버스(230), 저장장치 인터페이스(240), 워크로드 모듈(250), 타이머(260), 및 성능 조절 모듈(270)를 포함할 수 있다. 4 is a schematic block diagram of a
저장장치 인터페이스(240)는 반도체 저장장치(10)와 통신하기 위한 인터페이스 프로토콜을 구비한다. The
CPU(210)는 반도체 저장장치(10)로/로부터 데이터 기록/독출을 위한 제반 제어 동작을 수행한다. The
워크로드 모듈(250)은 반도체 저장장치(10)에 인가되는 워크로드와 관련된 워크로드 데이터를 수집하고, 수집된 워크로드 데이터를 토대로 워크로드를 예측할 수 있다. The
성능 조절 모듈(270)은 워크로드 모듈(250)에서 예측한 워크로드에 따라 타겟 성능 레벨을 결정하고, 결정된 성능 레벨을 적용하여 반도체 저장장치(10)의 성능을 조절한다. The
타이머(260)는 CPU(210), 워크로드 모듈(250) 및 성능 조절 모듈(270)로 시간 정보를 제공한다. 워크로드 모듈(250), 타이머(260) 및 성능 조절 모듈(270)은 각각 소프트웨어, 하드웨어 또는 소프트웨어 및 하드웨어의 결합으로 구현될 수 있다. The
워크로드 모듈(250)은 및 성능 조절 모듈(270)은 반도체 저장장치(10)의 성능을 호스트(20)에서 조절하거나 제어하기 위한 것으로, 호스트(20)의 개입없이 반도체 저장 장치(10)가 자체적으로 성능을 조절하는 경우에는 호스트(20)는 워크로드 모듈(250) 및 성능 조절 모듈(270)을 구비하지 않을 수 있다.The
도 5는 본 발명의 일 실시예에 따른 반도체 저장 장치(10)의 동작 방법을 나타내는 흐름도이다. 본 발명의 일 실시예에 따른 반도체 저장 장치(10)의 동작 방법은 도 2에 도시된 반도체 저장 장치(10), 호스트(20) 또는 반도체 저장 장치(10)와 호스트(20) 양자에 분산되어 구현될 수 있다. 5 is a flowchart illustrating a method of operating the
본 발명의 일 실시예에 따른 동작 방법이 반도체 저장 장치(10)에 구현되는 예를 중심으로 기술하나, 상술한 바와 같이, 본 발명이 이에 한정되는 것은 아니다.An operation method according to an embodiment of the present invention will be described based on an example in which the
도 5를 참조하면, 컨트롤러(100)는 반도체 저장 장치(10)에 인가되는 워크로드와 관련된 워크로드 데이터를 수집하고(S100), 수집된 워크로드 데이터를 토대로 워크로드를 예측한다(S110). 컨트롤러(100)는 예측된 워크로드에 따라 타겟 성능 레벨을 결정하고(S120), 결정된 성능 레벨을 반도체 저장 장치(10)의 동작에 적용한다(S130). Referring to FIG. 5, the
도 6은 본 발명의 일 실시예에 따른 반도체 저장장치(10)의 워크로드 예측 방법을 나타내는 흐름도이다. 도 6에 도시된 본 발명의 일 실시예에 따른 반도체 저장장치(10)의 워크로드 예측 방법은 도 2에 도시된 반도체 저장장치(10)에 의해 수행될 수 있다. 그러나, 본 발명의 다른 일 실시예에 따른 반도체 저장장치(10)의 워크로드 예측 방법은 도 4에 도시된 호스트(20) 또는 반도체 저장장치(10)와 호스트(20) 양자에 분산되어 구현될 수 있다. 6 is a flowchart illustrating a workload prediction method of the
도 2 및 도 6을 참조하면, 반도체 저장장치(10)의 파워가 온(power-on)되면, 반도체 저장장치(10)의 성능 조절 기능이 인에이블된 상태인지 체크한다(S210). 반도체 저장장치(10)의 성능 조절 기능이 인에이블된 상태인지를 나타내기 위해, 도 13에 도시된 성능 조절 플래그가 사용될 수 있다. 성능 조절 플래그가 셋(set)되어 있다면, 컨트롤러(100)는 성능 조절 기능이 인에이블된 상태로 판단하여, 성능 조절을 위한 다음 단계들(S230 내지 S250)을 수행할 수 있다. 성능 조절 플래그는 반도체 저장장치(10)의 제품 출시 전에 또는 반도체 저장장치(10)의 파워-온 시에 미리 설정될 수 있다. 2 and 6, when the power of the
컨트롤러(100)는 반도체 저장장치(10)의 워크로드 데이터를 수집한다(S230). The
본 발명의 다른 실시예에서 S210 단계는 생략될 수 있다. 즉, 반도체 저장장치(10)의 파워가 온(power-on)되면, 컨트롤러(100)는 반도체 저장장치(10)의 워크로드 데이터를 수집할 수도 있다(S230).In another embodiment of the present invention, step S210 may be omitted. That is, when the power of the
워크로드를 예측하는데 사용되는 워크로드 데이터는 소정 기간 카운트된 파라미터 값일 수 있다.The workload data used to predict the workload may be a parameter value counted over a period of time.
파라미터는 도 13에 도시된 바와 같이 호스트(20)가 저장장치(10)에 인가하는 명령(command)의 수, 호스트(20)가 저장장치(10)에 인가하는 쓰기 명령의 수, 호스트(20)가 저장장치(10)에 인가하는 읽기 명령의 수, 명령에 응답하여 호스트로/로부터 전송된 데이터 량, 쓰기 명령에 응답하여 호스트로부터 수신한 데이터 량, 읽기 명령에 응답하여 호스트로 전송한 데이터 량, 상기 반도체 저장장치 내부에서 수행된 프로그램 동작의 수, 상기 반도체 저장장치 내부에서 수행된 읽기 동작의 수 중 적어도 하나를 포함할 수 있다. As shown in FIG. 13, the number of commands that the
호스트로/로부터 전송된 데이터 량, 쓰기 명령에 응답하여 호스트로부터 수신한 데이터 량, 읽기 명령에 응답하여 호스트로 전송한 데이터 량은 호스트 명령에 포함된 카운트 필드의 값을 누적하여 산출될 수 있다. 예컨대, 쓰기 명령에 응답하여 호스트로부터 수신한 데이터 량은 쓰기 명령에 포함된 카운트 필드의 섹터(혹은 블록)수를 누적함으로써 산출될 수 있다.The amount of data transmitted to / from the host, the amount of data received from the host in response to the write command, and the amount of data transmitted to the host in response to the read command may be calculated by accumulating the value of the count field included in the host command. For example, the amount of data received from the host in response to the write command may be calculated by accumulating the number of sectors (or blocks) in the count field included in the write command.
쓰기 명령 및 읽기 명령은 쓰여질 데이터량 및 독출될 데이터량을 나타내기 위해 상술한 카운트 필드를 포함한다. 예컨대, 쓰기 명령의 카운트 필드가 '1'로 설정되어 있다면, 그 쓰기 명령에 의해 1섹터의 데이터가 기록됨을 의미한다.The write command and the read command include the count fields described above to indicate the amount of data to be written and the amount of data to be read. For example, if the count field of the write command is set to '1', it means that one sector of data is recorded by the write command.
반도체 저장장치(10)는 상기와 같은 워크로드 데이터(즉, 파라미터)를 특정 기간 또는 특정 주기(즉, 미리 설정된 주기) 단위로 누적하여 카운트할 수 있다(S230). The
파라미터 수집 주기는 둘 이상일 수 있다. 예컨대, 파라미터 수집 주기는 제1 주기(예컨대, week) 및 제2 주기(예컨대, day)로 설정될 수 있다. 파라미터 수집 주기들 중 최소 주기(예컨대, day)가 성능 조절 주기일 수 있지만, 이에 한정되는 것은 아니다. The parameter collection period may be more than one. For example, the parameter collection period may be set to a first period (eg, week) and a second period (eg, day). The minimum period (eg, day) of the parameter collection periods may be a performance adjustment period, but is not limited thereto.
파라미터 수집 주기는 상술한 성능 조절 플래그와 함께, 컨트롤러 내의 메모리(120 또는 130)에 저장되거나 비휘발성 메모리 장치(200)에 저장되어 관리될 수 있다.The parameter collection period may be stored in the
또한, 반도체 저장장치(10)는 각 파라미터를 특정 이벤트 시점부터 누적하여 카운트할 수 있다. 특정 이벤트 시점은, 예를 들면, 저장장치의 조립(fabrication) 시점, 파워-온(power-on) 시점, 팩토리 리셋(factory reset) 인가 시점, 호스트로부터 특정 명령을 수신한 시점, 또는, 반도체 저장장치의 성능 조절이 인에이블된 시점 등일 수 있다. In addition, the
이와 같이 수집된 워크로드 데이터는 컨트롤러 내의 메모리(120 또는 130)에 저장되거나 비휘발성 메모리 장치(200)에 저장되어 관리될 수 있다. 또는 워크로드 데이터는 반도체 저장장치(10)의 파워-온 시에 비휘발성 메모리 장치(200)로부터 컨트롤러 내의 메모리(120 또는 130)로 업로드되어 업데이트되다가, 반도체 저장장치(10)의 파워-오프 전에 비휘발성 메모리 장치(200)로 재저장될 수 있다.The collected workload data may be stored in the
도 7a는 도 6에 도시된 워크로드 데이터 수집 단계(S230)의 일 예를 좀 더 세부적으로 나타내는 흐름도이다. FIG. 7A is a flowchart illustrating an example of the workload data collection step S230 illustrated in FIG. 6 in more detail.
도 7a를 참조하면, 워크로드 데이터 수집 단계(S230)에서, 반도체 저장장치(10)는 호스트로부터의 명령이 수신되기를 대기한다(S410). 호스트로부터 명령이 수신되면 해당 명령을 파싱하여 식별하고(S420), 수신된 명령이 카운트 대상 명령인지 확인한다. 이 단계(S420)에서는, 호스트로부터 명령이 인가되면, 호스트 인터페이스(110)의 커맨드 디코더(미도시)는 명령을 수신하여 디코딩하고, CPU(150) 및 워크로드 모듈(170)로 명령 수신을 알린다. Referring to FIG. 7A, in a workload data collection step S230, the
워크로드 모듈(170)은 수신된 명령이 카운트 대상 명령(예컨대, 쓰기 명령이나 읽기 명령)인 경우, 명령에 상응하는 카운트(예컨대, 쓰기 명령 카운트 및 명령 카운트)를 누적한다(S450). 그리고, 수신된 명령에 응답하여 호스트(20)로부터 데이터를 수신하거나 또는 호스트(20)로 데이터를 전송한다(S460). If the received command is a count target command (eg, a write command or a read command), the
수신된 명령이 쓰기 명령인 경우, 반도체 저장장치(10)는 호스트(20)로 쓰기 데이터를 전송할 것을 요청하여, 쓰기 데이터를 수신하여 DRAM(120)에 임시로 저장할 수 있다(S460). 이 경우, 반도체 저장장치(10)는 호스트(20)에서 반도체 저장장치(10)로 전송된 데이터 량(데이터 전송량)을 카운트하여 누적할 수 있다(S470). 호스트(20)에서 반도체 저장장치(10)로 인가되는 명령은 도 11a 및 도 11b에 도시된 명령 포맷과 유사하게 명령 필드 및 카운트 필드를 포함할 수 있다. 이 때 카운트 필드(예컨대, 섹터 카운트 필드)는 전송되는 데이터량을 섹터 수로 나타낸 값일 수 있다. 따라서, 반도체 저장장치(10)는 수신 명령에 포함된 카운트 필드값을 읽어 누적할 수 있다(S470). When the received command is a write command, the
도 7b는 호스트로부터 쓰기 명령 및 쓰기 데이터를 수신하는 경우의 개략적인 타이밍도이다. 이를 참조하면, 먼저, 호스트로부터 첫 번째 쓰기 명령(WR CMD), 섹터 카운트 값(예컨대, 1) 및 섹터 카운트 값에 상응하는 쓰기 데이터(예컨대, 1x 512Byte)가 순차적으로 수신되고, 이후 두 번째 쓰기 명령(WR CMD), 섹터 카운트 값(예컨대, 2) 및 섹터 카운트 값에 상응하는 쓰기 데이터(예컨대, 2x 512Byte)가 순차적으로 수신될 수 있다. 이 경우, 섹터 카운트 값(1 및 2)를 카운트하여 데이터량 카운트 값으로 사용할 수 있다.7B is a schematic timing diagram when receiving a write command and write data from a host. Referring to this, first, a first write command (WR CMD), a sector count value (eg, 1), and write data (eg, 1 × 512 bytes) corresponding to a sector count value are sequentially received from a host, and then a second write is performed. The command WR CMD, a sector count value (eg, 2), and write data (eg, 2 × 512 bytes) corresponding to the sector count value may be sequentially received. In this case, the sector count values 1 and 2 can be counted and used as the data amount count value.
한편, 수신된 명령이 독출 명령인 경우, 반도체 저장장치(10)는 메모리 장치(200)로부터 데이터를 독출하여 호스트(20)로 독출된 데이터를 전송한다(S460). 이 경우, 반도체 저장장치(10)는 반도체 저장장치로부터 호스트로 전송되는 데이터 량(데이터 전송량)을 카운트하여 누적할 수 있다(S470). Meanwhile, when the received command is a read command, the
다시 도 6을 참조하면, 성능 조절을 위한 충분한 워크로드 데이터가 수집되면(S240), 컨트롤러(100)는 성능 조절을 시작한다(S250). 여기서, 충분한 워크로드 데이터는 특정 기간(예컨대, 성능 조절 주기)가 경과함에 따라 달성될 수도 있고, 특정 파라미터 값(예컨대, 저장장치의 조립 시점 이후 누적된 명령의 수)이 미리 정해진 기준을 초과함에 따라 달성될 수도 있다.Referring back to FIG. 6, when sufficient workload data for performance adjustment is collected (S240), the
본 발명의 다른 실시예에서는, 충분한 워크로드 데이터가 수집되면(S240), 컨트롤러(100)가 성능 조절 플래그를 셋함으로써 성능 조절을 인에이블 할 수 있다.In another embodiment of the present invention, when sufficient workload data is collected (S240), the
성능 조절이 시작되면(S250), 도 5에 도시된 바와 같이, 컨트롤러(100)는 수집된 워크로드 데이터를 토대로 워크로드를 예측한다(S110).When the performance adjustment starts (S250), as shown in FIG. 5, the
반도체 저장장치(10)는 둘 이상의 카운트 값을 가중 합(weighted sum)하거나 가중 평균(weighted average)하여 워크로드를 예측할 수 있다(S110).The
다음의 수학식 1은 세 개의 워크로드 데이터를 이용하여 k번째 날(kth day)에 대한 워크로드(WLk)를 예측하는 수학식이다.
여기서, WorkloadRecentweek는 최근 한 주간의 평균 워크로드, WorkloadRecentday 는 최근 하루 동안의 평균 워크로드 및 WorkloadSincePowerOn 는 파워-온 시점부터 평균 워크로드를 나타내며, F는 상기 세 개의 워크로드 데이터를 인수로 사용하여 워크로드 예측치를 구하는 함수(예컨대, 가중 합, 가중 평균)이다.Where Workload Recentweek is the average workload for the last week, Workload Recentday is the average workload for the last day, and Workload SincePowerOn From the time of power-on F represents the average workload, and F is a function (eg, weighted sum, weighted average) that uses the three workload data as arguments to obtain a workload estimate.
PRRecentweek , PRRecentday , 및 PRSincePowerOn 는 각각 최근 한 주간, 최근 하루 동안 및 파워-온 시점부터 현재까지 누적된(혹은 평균) 특정 파라미터값(예컨대, 쓰기 명령의 수)일 수 있다.PR Recentweek , PR Recentday , and PR SincePowerOn May each be a specific parameter value (eg, the number of write commands) accumulated over the last one week, the last day, and from the time of power-on to the present.
도 8b는 워크로드 데이터 수집 기간을 설명하기 위한 그래프이다. 이를 참조하면, 워크로드 데이터 수집 기간은 워크로드 예측 시점(T1)을 기준으로 제1기간(예컨대, 최근 한 주간(TP1)), 제2 기간(예컨대, 최근 하루 동안(TP2)), 및 제3 기간(파워-온 시점부터 현재까지의 기간(TP3))일 수 있다.8B is a graph for explaining a workload data collection period. Referring to this, the workload data collection period is based on the workload prediction time point T1, and includes a first period (eg, one recent week (TP1)), a second period (eg, one recent day (TP2)), and a second period. Three periods (period from power-on time to present (TP3)).
도 8c는 워크로드 예측 시점에 따른 워크로드 데이터 수집 기간의 변동을 설명하기 위한 그래프이다. 이를 참조하면, 워크로드 예측 시점이 T1에서 T2로 바뀜에 따라, 제1기간은 T1을 기준으로 최근 한 주간(TP1)에서 T2을 기준으로 최근 한 주간(TP1')으로, 제2 기간은 T1을 기준으로 최근 하루 동안(TP2)에서 T2를 기준으로 최근 하루 동안(TP2')으로, 제3 기간은 파워-온 시점부터 현재(T1)까지의 기간(TP3)에서 파워-온 시점부터 현재(T2)까지의 기간(TP3')으로 달라짐을 알 수 있다. 예를 들어, 일 단위로 워크로드를 예측하는 경우, 제1 및 제2 기간은 시간의 흐름에 따라 오른쪽으로 하루씩 쉬프트되고, 제3 기간은 시간의 흐름에 따라 그 기간이 점점 길어질 수 있다.8C is a graph for describing a change in a workload data collection period according to a workload prediction time point. Referring to this, as the workload prediction time changes from T1 to T2, the first period is from the last week (TP1) based on T1 to the most recent week (TP1 ') based on T2, and the second period is T1. From the last day (TP2) to the last day (TP2 ') based on T2, the third period is the current (from the power-on time from the time (TP3) from the time of power-on to the present (T1) It can be seen that the period (TP3 ') up to T2). For example, when estimating the workload on a daily basis, the first and second periods may shift by one day to the right as time passes, and the third period may become longer as the time passes.
가중 합을 이용하여 k번째 날(kth day)에 대한 워크로드(WLk)를 예측하는 수학식의 일 예가 수학식 2이다.An example of the equation for predicting the workload WLk for the k th day using the weighted sum is
여기서, α1, α2, α3, 는 각각 최근 한 주간의 워크로드, 최근 하루 동안의 워크로드 및 파워-온 시점부터 누적된 워크로드에 대한 가중치이며, G는 미리 정해진 상수일 수 있다.Where α 1 , α 2 , α 3 , are each from the last week's workload, the last day's workload and the power-on time A weight for the cumulative workload, where G may be a predetermined constant.
상술한 예에서는 하루 단위로 워크로드를 예측하는 것으로 기술하였지만, 워크로드 예측 단위는 달라질 수 있다.In the above example, the workload is predicted on a daily basis, but the workload prediction unit may vary.
다음으로, 컨트롤러(100)는 예측된 워크로드에 따라 조절된 성능 레벨을 결정한다(S120).Next, the
예측된 워크로드 데이터를 이용하여 k번째 날(kth day)에 대한 조절된 성능 레벨을 산출할 수 있다. 예측된 워크로드에 따라 성능 레벨을 산출하기 위해서, 미리 정해진 수식이 사용될 수도 있다. 또는 예측된 워크로드에 따른 타겟 성능 레벨을 미리 매핑해 둔 룩업 테이블이 사용될 수도 있다.The predicted workload data can be used to calculate the adjusted performance level for the k th day. In order to calculate the performance level according to the predicted workload, a predetermined equation may be used. Alternatively, a lookup table may be used which maps target performance levels according to predicted workloads in advance.
다음으로, 결정된 성능 레벨을 반도체 저장장치(10)의 동작에 적용한다(S130). Next, the determined performance level is applied to the operation of the semiconductor storage device 10 (S130).
한편, 반도체 저장 장치(10)의 성능 조절이 시작되기 전까지는, 즉, 반도체 저장 장치(10)의 초기 동작 기간(예컨대, 파워온 시점으로부터 소정 기간)에는 초기 성능 레벨이 적용될 수 있다. 초기 성능 레벨은 반도체 저장 장치(10)의 워크로드를 예측하기 위한 워크로드 데이터가 충분히 수집되기 전인 초기 동작 기간 동안 반도체 저장 장치(10)에 적용될 성능 레벨을 의미한다. 초기 성능 레벨은 상술한 성능 조절 플래그, 및 파라미터 수집 주기와 마찬가지로, 반도체 저장장치(10)의 제품 출시 전에 혹은 반도체 저장장치(10)의 파워온시에 미리 설정될 수 있다. Meanwhile, the initial performance level may be applied until the performance of the
본 발명의 다른 실시예에서는 반도체 저장장치(10)에 초기 성능 레벨이 설정되는 대신 가상의 워크로드 히스토리가 설정될 수 있다. 가상의 워크로드 히스토리를 설정한다는 것은 반도체 저장 장치(10)가 파워 온되기 전의 소정 기간 동안 가상의 워크로드를 겪었다고 가정하는 것이다. 이를 위하여, 도 13에 도시된 각종 파라미터의 값들이 특정 값으로 반도체 저장 장치(10)에 저장될 수 있다. 예를 들어, 도 13에 도시된 각종 파라미터의 초기값이 '0'으로 설정되는 것이 아니라, 미리 정해진 가상의 값으로 설정될 수 있다. In another embodiment of the present invention, the virtual workload history may be set instead of the initial performance level in the
가상의 워크로드 히스토리가 설정되는 경우, 반도체 저장장치(10)는 파워-온되자 마자, 이미 설정되어 있는 가상의 워크로드 히스토리 데이터를 토대로 워크로드를 예측하고(S110), 예측된 워크로드에 따라 조절된 성능 레벨을 결정하여 적용할 수 있다(S120, S130). When the virtual workload history is set, the
조절된 성능 레벨 역시 반도체 저장장치(10)의 레지스터(미도시) 혹은 메모리(120, 130 또는 200)에 저장될 수 있다. 특히, 반도체 저장장치(10)는 파워-오프 되기 전에 그 때의 성능 레벨을 저장하고, 다음 파워-온되면 저장된 성능 레벨을 읽어, 그 성능 레벨을 적용할 수 있다.The adjusted performance level may also be stored in a register (not shown) or
성능은 쓰기 성능 및 읽기 성능 중의 어느 하나일 수 있으며, 쓰기 성능 레벨은 단위시간당 기록되는 데이터 양(MB/s), 단위시간당 처리한 쓰기 명령의 수, 또는 쓰기 레벨값으로 표현될 수 있다.The performance may be one of write performance and read performance, and the write performance level may be expressed as an amount of data (MB / s) recorded per unit time, the number of write commands processed per unit time, or a write level value.
읽기 성능 레벨 역시 쓰기 성능 레벨과 유사하게, 단위시간당 독출되는 데이터 양(MB/s), 단위시간당 처리한 읽기 명령의 수, 또는 읽기 레벨값으로 표현될 수 있다.Similar to the write performance level, the read performance level may be expressed as an amount of data read per unit time (MB / s), the number of read commands processed per unit time, or a read level value.
여기서, 레벨값이란, 성능을 복수의 레벨들로 구분하여 수치화한 값을 의미한다. 예컨대, 쓰기 성능을 가장 성능이 낮은 0부터 가장 성능이 높은 10까지의 레벨로 구분할 수 있다.Here, the level value means a value obtained by dividing the performance into a plurality of levels and quantifying them. For example, the write performance may be divided into levels ranging from 0 having the lowest performance to 10 having the highest performance.
도 8a 및 도 9는 각각 초기동작 기간 동안의 저장장치의 동작 방법을 설명하기 위한 그래프이다. 즉, 저장장치의 초기동작 기간 동안 워크로드에 대한 정보수집이 아직 덜 진행되어, 워크로드 강도 및 패턴이 충분히 파악되지 못했을 경우에, 저장장치의 초기 성능조절 전략을 설명하기 위한 그래프이다. 8A and 9 are graphs for describing a method of operating a storage device during an initial operation period, respectively. That is, it is a graph for explaining the initial performance tuning strategy of the storage device when the information gathering of the workload is still less progressed during the initial operation period of the storage device and the workload intensity and pattern are not sufficiently understood.
도 8a은 성능조절 지연(Delayed Throttling) 방법을 채택한 경우이다. 이 경우, 저장 장치(10)의 초기 동작 기간 동안 일정한 수준의 초기 성능을 유지하고, 워크로드에 대한 강도와 패턴 등을 판단할 수 있을 만한 충분한 정보가 수집될 때까지 이 성능을 유지한다. 충분한 워크로드 정보가 수집되면, 수집된 정보를 토대로 성능조절의 정도를 결정한다. 8A illustrates a case of adopting a delayed throttling method. In this case, the initial performance of the
따라서, 도 8a의 그래프는, 초기 동작 기간 동안에는 성능 레벨이 초기값으로 고정되고, 초기 동작 기간 이후에는 누적된 워크로드 데이터를 활용하여 성능 레벨을 조절하는 예를 도시한다. 따라서, 초기 동작 기간 동안에는 성능 레벨이 일정한 값으로 유지되고, 그 이후에는 예측된 워크로드에 따라 성능 레벨이 조절됨을 알 수 있다. Accordingly, the graph of FIG. 8A shows an example in which the performance level is fixed to an initial value during the initial operation period, and the performance level is adjusted using the accumulated workload data after the initial operation period. Therefore, it can be seen that during the initial operation period, the performance level is maintained at a constant value, after which the performance level is adjusted according to the predicted workload.
도 9는 상술한 가상 워크로드 히스토리 방법을 채택한 경우이다. 이 경우, 호스트(20)가 저장장치에 인가할 워크로드 강도와 패턴을 예상하여, 가상의 워크로드 히스토리를 가정한다. 그리고 저장장치 초기동작 기간 동안 이 가상의 워크로드 히스토리를 토대로 성능조절의 정도를 결정한다. 9 is a case where the above-described virtual workload history method is adopted. In this case, the virtual workload history is assumed by the
도 10a 및 도 10b는 각각 본 발명의 다른 일 실시예에 따른 반도체 저장장치(10)의 워크로드 예측 방법을 나타내는 흐름도이다. 도 10a 및 도 10b에 도시된 반도체 저장장치(10)의 워크로드 예측 방법은 도 4에 도시된 호스트(20)에 의해 수행될 수 있다.10A and 10B are flowcharts illustrating a workload prediction method of the
도 4 및 도 10a를 참조하면, 반도체 저장장치(10)의 파워가 온(power-on)되면, 호스트(20)가 명령을 통해 반도체 저장장치(10)의 성능 조절을 인에이블할 수 있다(S210'). 즉, 반도체 저장장치(10)의 성능 조절을 인에이블하기 위하여 호스트(20)는 반도체 저장장치(10)로 성능 조절 인에이블 명령을 인가할 수 있다.4 and 10A, when the power of the
도 11a는 본 발명의 일 실시예에 따른 성능 조절 인에이블 명령의 포맷을 나타내는 테이블이다. 도 11b는 본 발명의 일 실시예에 따른 성능 조절 정보 요청 명령의 포맷을 나타내는 테이블이다. 11A is a table illustrating a format of a performance control enable command according to an embodiment of the present invention. 11B is a table illustrating a format of a performance adjustment information request command according to an embodiment of the present invention.
도 11a 및 도 11b를 참조하면, 호스트(20)는 반도체 저장장치(10)의 성능 조절과 관련하여 피쳐(feature) 필드, 카운트 필드, LBA(logic Block Address) 필드, 디바이스 필드 및 커맨드 필드로 구성되는 명령 신호를 반도체 저장장치(10)에 인가할 수 있다. 명령에 포함되는 각 필드는 미리 정해진 비트 수로 구성될 수 있다. 예를 들어, 커맨드 필드, 디바이스 필드, 및 카운트 필드 각각은 8비트로 구성될 수 있다.11A and 11B, the
도 11a에 도시된 성능 조절 인에이블 명령은 그 커맨드 필드가 미리 정해진 값(예컨대, FAh)으로 설정되고, 그 피쳐 필드는 '1'로 설정되며, 그 카운트 필드의 최하위 비트가 '1'로 또는 '0'으로 설정될 수 있다. 카운트 필드의 최하위 비트가 '1'로 설정되면, 해당 명령은 성능 조절 인에이블 명령이 되고, 카운트 필드의 최하위 비트가 '0'으로 설정되면 해당 명령은 성능 조절 디스에이블 명령이 될 수 있다. 반도체 저장장치(10)는 성능 조절 인에이블 명령에 응답하여 도 13에 도시된 성능 조절 플래그를 셋(set)할 수 있고, 성능 조절 디스에이블 명령에 응답하여 도 13에 도시된 성능 조절 플래그를 리셋(set)할 수 있다.In the performance adjustment enable command shown in FIG. 11A, the command field is set to a predetermined value (eg, FAh), the feature field is set to '1', and the least significant bit of the count field is set to '1' or It may be set to '0'. If the least significant bit of the count field is set to '1', the command may be a performance control enable command, and if the least significant bit of the count field is set to '0', the command may be a performance control disable command. The
호스트(20)는 도 11a 또는 도 11b에 도시된 포맷과 유사한 포맷의 초기 성능 설정 명령을 반도체 저장장치(10)에 인가할 수 있고(S220'), 컨트롤러(100)는 초기 성능 설정 명령에 응답하여, 도 13에 도시된 초기 성능 레벨을 레지스터 혹은 메모리(120, 130)에 저장할 수 있다. The
다음으로, 반도체 저장장치(10)의 워크로드 데이터를 수집한다(S230'). 반도체 저장장치(10)의 워크로드 데이터를 수집은 호스트(20)에 의해 이루어질 수도 있고, 반도체 저장장치(10)에 의해 이루어질 수도 있다. Next, workload data of the
워크로드 데이터의 수집을 위하여, 호스트(20)는 주기 설정 명령을 반도체 저장장치(10)에 인가하여 반도체 저장장치(20)의 파라미터 수집 주기를 설정할 수 있다. 또한, 호스트(20)는 누적된 카운트를 모두 초기화하기 위하여 성능 조절 리셋 명령을 저장 장치(10)에 인가할 수 있다. 호스트(20)는 다른 강도와 패턴의 워크로드를 저장장치(10)에 인가하기에 앞서, 성능 조절 리셋 명령을 저장 장치(10)에 인가할 수 있다.In order to collect the workload data, the
또한, 호스트(20)는 반도체 저장장치(10)로 수집된 워크로드 데이터를 요청하는 성능 조절 정보 요청 명령(도 11b 참조)을 인가할 수 있다. 그러면, 반도체 저장장치(10)는 도 12에 도시된 바와 같은 포맷의 성능 조절 정보 응답 명령을 통해 수집된 워크로드 데이터를 호스트(20)로 전송할 수 있다.In addition, the
성능 조절을 위한 충분한 워크로드 데이터가 수집되면(S240'), 성능 조절을 시작한다(S250'). When sufficient workload data for performance tuning is collected (S240 '), performance tuning begins (S250').
도 10b에 도시된 본 발명의 다른 실시예에서는, 호스트(20)는 초기 성능 레벨을 설정하는 대신 가상의 워크로드 히스토리를 설정할 수 있다(S320). 가상의 워크로드 히스토리를 설정한다는 것은 반도체 저장장치(10)가 파워 온되기 전의 소정 기간 동안 가상의 워크로드를 겪었다고 가정하는 것이다. 이를 위하여, 호스트(20)는 반도체 저장장치(10)에 가상의 워크로드 데이터를 설정할 수 있다(S320). In another embodiment of the present invention illustrated in FIG. 10B, the
도 14는 본 발명의 실시예에 따른 반도체 저장장치를 구비하는 전자 시스템의 블록도이다.14 is a block diagram of an electronic system including a semiconductor storage device according to an embodiment of the present invention.
도 14를 참조하면 본 발명의 실시예에 따른 전자 시스템(900)은 본 발명의 일 실시예에 따른 반도체 저장 장치(10), 전원부(power supply)(910), 중앙 처리 장치(CPU)(920), 램(RAM)(930), 유저 인터페이스(User Interface)(940) 및 이들 구성요소들을 전기적으로 연결하는 시스템 버스(950)를 포함할 수 있다.Referring to FIG. 14, an
CPU(920)는 시스템(900)의 전체적인 동작을 제어하고, RAM(930)은 시스템(900)의 동작을 위해 필요한 정보들을 저장하고, User Interface(940)는 시스템(900)과 사용자와의 인터페이스를 제공한다. 전원부(910)는 내부의 구성 요소들(즉, CPU(920), 램(RAM)(930), 유저 인터페이스(940), 메모리 시스템(500) 등)으로 전원을 공급한다.The
CPU(920)가 상술한 호스트(20)에 해당할 수 있으며, 반도체 저장장치(10)는 호스트(20)의 명령에 응답하여 데이터를 저장하거나 독출할 수 있다.The
도 15a 및 도 15b는 각각 본 발명의 다른 실시예에 따른 전자 시스템의 블록도이다. 15A and 15B are each a block diagram of an electronic system according to another embodiment of the present invention.
도 15a에 도시된 전자 시스템(900')은 도 14에 도시된 전자 시스템(900)과 유사한 구성을 가지므로, 설명의 중복을 피하기 위하여 차이점을 위주로 기술한다.Since the
도 15a에 도시된 전자 시스템(900')은 도 14에 도시된 전자 시스템(900)에 비하여, RAID 컨트롤러 카드(960)를 더 구비한다. 반도체 저장 장치(10)는 호스트와 직접 인터페이스하는 것이 아니라, RAID 컨트롤러 카드(960)에 장착되어, RAID 컨트롤러 카드(960)를 통하여 호스트와 인터페이스할 수 있다. 이 때, RAID 컨트롤러 카드(960)에는 복수(2이상)의 반도체 저장 장치들(10-1~10-k, k는 2이상의 정수)이 장착될 수 있다. 도 15a에 도시된 전자 시스템(900')의 RAID 컨트롤러 카드(960)는 반도체 저장 장치들(10-1~10-k)의 외부에 별도의 제품으로 구현된다.The
도 15b에 도시된 전자 시스템(900")은 도 15a에 도시된 전자 시스템(900')과 유사한 구성을 가지므로, 설명의 중복을 피하기 위하여 차이점을 위주로 기술한다.Since the
도 15b에 도시된 전자 시스템(900')의 RAID 컨트롤러 카드(960)는 반도체 저장 장치들(10-1~10-k)과 함께 하나의 제품으로 구현된다는 점에서, 도 15a에 도시된 전자 시스템(900')과 차이가 있다.The electronic system shown in FIG. 15A in that the
이와 같이 RAID 컨트롤러 카드(960)가 구비되는 경우, 상술한 본 발명의 실시예에 따른 성능 조절 방법이 RAID 컨트롤러 카드(960)에 의해 구현될 수 있다. 이를 위해, 상술한 타이머, 및 성능 조절 모듈 등이 RAID 컨트롤러 카드(960) 내에 구비될 수 있다.As such, when the
도 16은 본 발명의 실시예에 따른 반도체 저장 장치(10)를 구비하는 컴퓨팅 시스템(1000, PC)의 블록도이다. 이를 참조하면, 컴퓨팅 시스템(1000)은 중앙 처리 장치(Central Processing Unit, 1110), AGP 장치(Accelerated Graphics Port, 1120), 메인 메모리(1130), 노스 브리지(north bridge, 1140), 반도체 저장 장치(예컨대, SSD, 10), 키보드 컨트롤러(1160), 프린터 컨트롤러(1170), 및 사우스 브리지(1180) 등을 포함한다. 16 is a block diagram of a computing system 1000 (PC) having a
컴퓨팅 시스템(1100)은 SSD(10)가 하드디스크 드라이브를 대신하여 주 저장 장치로 이용하는 개인용 컴퓨터 또는 노트북 컴퓨터의 블락도일 수 있다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니다. The computing system 1100 may be a block diagram of a personal computer or notebook computer that the
컴퓨팅 시스템(1000)에서 중앙 처리 장치(1110), AGP 장치(1120), 및 메인 메모리(1130) 등은 노스 브리지(1140)에 접속되며, SSD(10), 키보드 컨트롤러(1160), 프린터 컨트롤러(1170), 및 각종 주변 장치들(미도시) 등은 사우스 브리지(180)에 연결된다. In the
노스 브리지(1140)는 메인보드 가운데를 기준으로 중앙 처리 장치(1110) 소켓 쪽에 있는 집적회로로서, 일반적으로는 중앙 처리 장치(1110)와 연결하는 호스트 인터페이스(host interface)를 포함하는 시스템 컨트롤러를 의미한다. 사우스 브리지(1180)는 메인보드 가운데를 기준으로 PCI(peripheral component interconnect) 슬롯 쪽에 있는 집적회로로서, 일반적으로는 호스트 버스에서 PCI 버스를 경유하여 접속되는 버스(bus)로 가는 브리지를 의미한다. The
AGP는 3차원 그래픽 표현을 빠르게 구현할 수 있게 해주는 버스 규격이다. AGP 장치(1120)에는 모니터 이미지를 재생하는 비디오 카드 등이 포함될 수 있다. 메인 메모리(1130)는 일반적으로 휘발성 메모리 소자인 RAM(Random Access Memory)으로 구현될 수 있으나 본 발명의 범위가 이에 한정되는 것은 아니다. AGP is a bus specification that enables rapid implementation of three-dimensional graphical representations. The
또한, 본 발명의 일 실시예에 따른 컴퓨팅 시스템(1100)에서는 SSD(10)가 사우스 브리지(180)에 연결되는 구조이나, 이에 한정되는 것은 아니며, SSD(10)가 노스 브리지(1140)에 연결되거나, CPU(1110)에 직접 연결되는 구조일 수도 있다.In addition, in the computing system 1100 according to an embodiment of the present invention, the structure in which the
발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.Although the invention has been described with reference to one embodiment shown in the drawings, this is merely exemplary, and it will be understood by those skilled in the art that various modifications and equivalent other embodiments are possible. Therefore, the true technical protection scope of the present invention will be defined by the technical spirit of the appended claims.
반도체 저장 장치 : 10
호스트 : 20
컨트롤러: 100
비휘발성 메모리 장치 : 200
CPU : 150, 210
호스트 인터페이스 : 110
DRAM : 120
SRAM : 130
메모리 인터페이스: 140
타이머 : 150, 260
버스 : 160, 230
워크로드 모듈: 170, 250
성능 조절 모듈 : 190, 270
클럭 발생기 : 195
저장장치 인터페이스 : 240Semiconductor Storage Devices: 10
Host: 20
Controller: 100
Nonvolatile Memory Device: 200
CPU: 150, 210
Host interface: 110
DRAM: 120
SRAM: 130
Memory interface: 140
Timer: 150, 260
Bus: 160, 230
Workload module: 170, 250
Performance Control Module: 190, 270
Clock Generator: 195
Storage interface: 240
Claims (29)
상기 반도체 저장장치의 동작을 실행시키기 위하여 호스트로부터 전송되는 명령을 수신하는 단계;
상기 호스트로부터 수신되어 실행 완료된 명령의 수를 카운트하는 단계; 및
카운트된 명령 수를 이용하여, 워크로드를 예측하는 단계를 구비하는 반도체 저장장치의 성능 조절 방법.A method of controlling performance of a semiconductor storage device including a nonvolatile memory device and a controller controlling the nonvolatile memory device,
Receiving a command sent from a host to execute an operation of the semiconductor storage device;
Counting the number of commands received from the host and executed; And
Predicting a workload using the counted number of instructions.
서로 다른 적어도 두 기간 동안 누적하여 상기 명령의 수를 카운트 하는 단계를 포함하며,
상기 워크로드를 예측하는 단계는
상기 서로 다른 적어도 두 기간 동안 누적하여 카운트된 명령 수를 가중 평균 또는 가중 합하여 상기 워크로드를 예측하는 단계를 포함하는 반도체 저장장치의 성능 조절 방법.The method of claim 1, wherein the counting step
Counting the number of instructions cumulative for at least two different periods,
Predicting the workload
Predicting the workload by a weighted average or weighted sum of the number of instructions accumulated over at least two different periods.
쓰기 명령 또는 읽기 명령인 것을 특징으로 하는 반도체 저장장치의 성능 조절 방법.The method of claim 1 wherein the command is
A method of controlling performance of a semiconductor storage device, characterized in that it is a write command or a read command.
상기 반도체 저장장치의 동작을 실행시키기 위하여 호스트로부터 전송되는 명령을 수신하는 단계;
상기 명령에 응답하여 상기 호스트로 데이터를 송신하거나 또는 상기 호스트로부터 데이터를 수신하는 단계;
상기 호스트로 송신 또는 상기 호스트로부터 수신된 데이터 량을 카운트하는 단계; 및
상기 카운트된 데이터량을 이용하여, 워크로드를 예측하는 단계를 구비하는 반도체 저장장치의 성능 조절 방법.A method of controlling performance of a semiconductor storage device including a nonvolatile memory device and a controller controlling the nonvolatile memory device,
Receiving a command sent from a host to execute an operation of the semiconductor storage device;
Sending data to or receiving data from the host in response to the command;
Counting the amount of data sent to or received from the host; And
Estimating a workload by using the counted amount of data.
서로 다른 적어도 두 기간 동안 누적하여 상기 데이터 량를 카운트 하는 단계를 포함하며,
상기 워크로드를 예측하는 단계는
상기 서로 다른 적어도 두 기간 동안 누적하여 카운트된 데이터 량을 가중 평균 또는 가중 합하여 상기 워크로드를 예측하는 단계를 포함하는 반도체 저장장치의 성능 조절 방법.The method of claim 4, wherein the counting step
Counting the amount of data by accumulating for at least two different periods,
Predicting the workload
Predicting the workload by a weighted average or weighted sum of data amounts accumulated over at least two different periods.
상기 명령에 응답하여 상기 호스트로 송신 또는 상기 호스트로부터 수신 예정인 데이터 량에 대한 정보를 포함하며,
상기 카운트하는 단계는
상기 명령에 포함된 상기 데이터량에 대한 정보를 카운트하는 단계를 포함하는 반도체 저장장치의 성능 조절 방법.The method of claim 4 wherein the command is
Information about the amount of data to be sent to or received from the host in response to the command;
The counting step
And counting information about the amount of data included in the command.
예측된 워크로드에 따라 상기 반도체 저장장치의 성능을 조절하는 단계를 더 구비하는 반도체 저장장치의 성능 조절 방법.The method of claim 1 or 4, wherein the method
And adjusting the performance of the semiconductor storage device according to the predicted workload.
상기 비휘발성 메모리 장치를 제어하는 컨트롤러를 포함하며;
상기 컨트롤러는
둘 이상의 워크로드 데이터를 수집하고, 수집된 둘 이상의 워크로드 데이터를 이용하여 워크로드를 예측하는 워크로드 모듈; 및
예측된 워크로드에 따라 상기 반도체 저장장치의 성능을 조절하는 성능 조절모듈을 구비하는 반도체 저장장치.Nonvolatile memory devices; And
A controller for controlling the nonvolatile memory device;
The controller
A workload module that collects two or more workload data and predicts the workload using the collected two or more workload data; And
And a performance adjusting module for adjusting the performance of the semiconductor storage device according to the predicted workload.
제1 기간 동안 카운트된 제1 파라미터; 및
제2 기간 동안 카운트된 제2 파라미터를 포함하며,
상기 워크로드 모듈은
상기 제1 파라미터 및 상기 제2 파라미터를 가중 합(weighted sum)하거나 가중 평균(weighted average)하여 상기 예측된 워크로드를 산출하는 반도체 저장장치.The method of claim 8, wherein the two or more workload data
A first parameter counted during the first period of time; And
A second parameter counted during the second period of time,
The workload module
And a weighted sum or weighted average of the first parameter and the second parameter to yield the predicted workload.
상기 호스트로부터 수신되어 실행 완료된 명령의 수를 서로 다른 적어도 두 기간 동안 누적하여 카운트한 값인 것을 특징으로 하는 반도체 저장장치.The method of claim 8, wherein each of the two or more workload data
And accumulating the number of commands received from the host and executed for at least two different periods.
상기 반도체 저장장치의 동작을 실행시키기 위하여 상기 호스트로부터 전송되는 명령에 응답하여 상기 호스트로 송신 또는 상기 호스트로부터 수신된 데이터 량을 서로 다른 적어도 두 기간 동안 누적하여 카운트한 값인 것을 특징으로 하는 반도체 저장장치.The method of claim 8, wherein each of the two or more workload data
And a cumulative amount of data amounts transmitted to or received from the host in response to a command transmitted from the host in order to execute an operation of the semiconductor storage device. .
상기 명령에 포함된 상기 데이터량을 나타내는 섹터 카운트 값을 카운트 함으로써 카운트되는 것을 특징으로 하는 반도체 저장장치.12. The method of claim 11, wherein the data amount is
And counting by counting a sector count value indicating the amount of data included in the command.
상기 둘 이상의 워크로드 데이터를 저장하기 위한 워크로드 데이터 저장부를 더 구비하는 반도체 저장장치.The method of claim 8, wherein the semiconductor storage device
And a workload data storage unit for storing the two or more workload data.
성능 조절 플래그 및 초기 성능 레벨을 저장하기 위한 저장부를 더 구비하며,
상기 수집된 워크로드 데이터가 미리 정해진 기준을 만족하지 못하는 경우, 상기 초기 성능 레벨을 유지하는 반도체 저장장치.The method of claim 13, wherein the semiconductor storage device is
And a storage for storing the performance adjustment flag and the initial performance level.
And maintaining the initial performance level when the collected workload data does not satisfy a predetermined criterion.
상기 워크로드 데이터의 초기값은 0이 아닌 미리 정해진 가상의 값으로 설정되며,
상기 반도체 저장장치의 초기 성능 레벨은 상기 가상의 값으로 설정된 워크로드 데이터를 이용하여 산출되는 반도체 저장장치.The method of claim 13,
The initial value of the workload data is set to a predetermined virtual value other than 0,
The initial performance level of the semiconductor storage device is calculated using the workload data set to the virtual value.
쓰기 성능 레벨이며,
단위시간당 처리된 쓰기 명령의 수, 단위 시간당 기록된 데이터 량, 또는 복수의 레벨값 중 어느 하나로 표시되는 반도체 저장장치.The method of claim 8, wherein the performance level is
Write performance level,
A semiconductor storage device represented by any one of a number of write commands processed per unit time, an amount of data written per unit time, or a plurality of level values.
솔리드 스테이트 드라이브(SSD) 또는 SD 카드인 것을 특징으로 하는 반도체 저장장치. The method of claim 8, wherein the semiconductor storage device
Solid state drive (SSD) or a semiconductor storage device, characterized in that the SD card.
호스트; 및
상기 반도체 저장 장치가 장착되며, 상기 호스트와 상기 반도체 저장장치 사이에 접속되어 상기 호스트의 제어에 따라 상기 반도체 저장 장치를 제어하는 컨트롤러 카드를 구비하는 전자 시스템.The semiconductor storage device of claim 8:
Host; And
And a controller card mounted to the semiconductor storage device, the controller card being connected between the host and the semiconductor storage device to control the semiconductor storage device under control of the host.
(a) 상기 반도체 저장 장치가 처리하는 워크로드와 관련된 워크로드 데이터를 수집하는 단계;
(b) 수집된 워크로드 데이터를 이용하여 워크로드를 예측하는 단계; 및
(c) 예측된 워크로드에 따라 상기 반도체 저장장치의 성능을 조절하는 단계를 구비하는 반도체 저장장치의 성능 조절 방법.1. A method of controlling performance of a semiconductor storage device in a system including a semiconductor storage device and a host controlling the semiconductor storage device.
(a) collecting workload data associated with a workload processed by the semiconductor storage device;
(b) predicting the workload using the collected workload data; And
and (c) adjusting the performance of the semiconductor storage device in accordance with the predicted workload.
상기 반도체 저장 장치의 워크로드와 관련된 둘 이상의 워크로드 데이터를 수집하는 단계;
수집된 둘 이상의 워크로드 데이터를 이용하여 워크로드를 예측하는 단계; 및
예측된 워크로드에 따라 상기 반도체 저장장치의 성능을 조절하는 단계를 구비하는 반도체 저장장치의 성능 조절 방법.A method of controlling performance of a semiconductor storage device including a nonvolatile memory device and a controller controlling the nonvolatile memory device,
Collecting at least two workload data associated with a workload of the semiconductor storage device;
Predicting the workload using the collected two or more workload data; And
Adjusting the performance of the semiconductor storage device in accordance with a predicted workload.
호스트로부터 상기 반도체 저장장치에 인가된 쓰기 명령의 수, 상기 호스트로부터 상기 반도체 저장장치에 인가된 읽기 명령의 수, 상기 쓰기 명령에 응답하여 상기 호스트로부터 수신한 데이터 량, 또는 상기 읽기 명령에 응답하여 상기 호스트로 전송한 데이터 량을 카운트한 값을 포함하는 반도체 저장장치의 성능 조절 방법.21. The method of claim 20, wherein each of the two or more workload data is
The number of write commands applied to the semiconductor storage device from the host, the number of read commands applied to the semiconductor storage device from the host, the amount of data received from the host in response to the write command, or in response to the read command And a value of counting the amount of data transmitted to the host.
제1 기간 동안 카운트된 제1 파라미터; 및
제2 기간 동안 카운트된 제2 파라미터를 포함하며,
상기 워크로드를 예측하는 단계는
상기 제1 파라미터 및 상기 제2 파라미터를 가중 합(weighted sum)하거나 가중 평균(weighted average)하여 제3 기간에 대한 상기 예측된 워크로드를 산출하는 단계를 포함하는 반도체 저장장치의 성능 조절 방법.The method of claim 21 wherein the two or more workload data is
A first parameter counted during the first period of time; And
A second parameter counted during the second period of time,
Predicting the workload
Calculating the predicted workload for a third period by weighting the weighted sum or weighted average of the first parameter and the second parameter.
상기 제1 및 제2 기간 각각은 특정 이벤트 시점으로부터 상기 워크로드 예측 시점까지 또는 특정 주기이고, 제3 기간은 상기 워크로드 예측 시점부터 미래의 소정 시점까지이며,
상기 제1 기간, 상기 제2 기간 및 상기 제3 기간은 각각 서로 다른 것을 특징으로 하는 반도체 저장장치의 성능 조절 방법.The method of claim 22,
Each of the first and second periods is from a specific event time point to the workload prediction time point or a specific period, and a third period is from the workload prediction time point to a predetermined time point in the future,
And wherein the first period, the second period, and the third period are different from each other.
상기 반도체 저장장치의 조립 완료, 파워-온, 팩토리 리셋 인가, 및 호스트로부터의 특정 커맨드 수신, 및 성능 조절 인에이블 시점 중 적어도 하나를 포함하는 반도체 저장장치의 성능 조절 방법.The method of claim 23, wherein the predetermined event time point is
And at least one of completing assembly of the semiconductor storage device, power-on, applying a factory reset, receiving a specific command from a host, and enabling a performance control.
상기 워크로드 데이터를 수집하는 단계 이전에 상기 반도체 저장장치의 초기 성능 레벨이 설정되는 단계를 더 구비하는 반도체 저장장치의 성능 조절 방법.The method of claim 20, wherein the method is
And setting an initial performance level of the semiconductor storage device before collecting the workload data.
상기 수집된 워크로드 데이터가 미리 정해진 기준을 만족하지 못하는 경우, 상기 초기 성능 레벨을 유지하는 단계를 더 구비하는 반도체 저장장치의 성능 조절 방법.The method of claim 25, wherein the method is
And maintaining the initial performance level if the collected workload data does not meet a predetermined criterion.
상기 호스트로부터 인가되는 소정의 명령에 응답하여 설정되거나 또는 상기 반도체 저장 장치의 내부에 미리 설정되는 것을 특징으로 하는 성능 조절 방법.27. The system of claim 26, wherein the initial performance level is
And is set in response to a predetermined command applied from the host or preset in the semiconductor storage device.
상기 워크로드 데이터를 수집하는 단계 이전에 상기 반도체 저장장치에 가상 워크로드 히스토리가 설정되는 단계를 더 구비하는 반도체 저장장치의 성능 조절 방법.The method of claim 20, wherein the method is
And setting a virtual workload history in the semiconductor storage device before collecting the workload data.
호스트로부터 인가되는 성능 조절 인에이블 명령을 수신하는 단계를 더 구비하며,
상기 워크로드 데이터를 수집하는 단계는 상기 성능 조절 인에이블 명령에 응답하여 시작되는 반도체 저장장치의 성능 조절 방법.The method of claim 20, wherein the method is
Receiving a performance adjustment enable command applied from a host,
Gathering the workload data begins in response to the performance control enable command.
Priority Applications (7)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020100080697A KR101756130B1 (en) | 2010-08-20 | 2010-08-20 | Semiconductor storage device and method for throttling performance of the semiconductor storage device |
| US13/166,216 US8856424B2 (en) | 2010-08-20 | 2011-06-22 | Semiconductor storage device and method of throttling performance of the same |
| US13/166,131 US8862806B2 (en) | 2010-08-20 | 2011-06-22 | Semiconductor storage device and method of throttling performance of the same |
| US13/166,257 US8862807B2 (en) | 2010-08-20 | 2011-06-22 | Semiconductor storage device and method of throttling performance of the same |
| US13/212,404 US9037778B2 (en) | 2010-08-20 | 2011-08-18 | Method and apparatus to interface semiconductor storage device and host to provide performance throttling of semiconductor storage device |
| US14/504,568 US9348521B2 (en) | 2010-08-20 | 2014-10-02 | Semiconductor storage device and method of throttling performance of the same |
| US14/511,271 US9223506B2 (en) | 2010-08-20 | 2014-10-10 | Semiconductor storage device and method of throttling performance of the same |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020100080697A KR101756130B1 (en) | 2010-08-20 | 2010-08-20 | Semiconductor storage device and method for throttling performance of the semiconductor storage device |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| KR20120017830A true KR20120017830A (en) | 2012-02-29 |
| KR101756130B1 KR101756130B1 (en) | 2017-07-27 |
Family
ID=45839673
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| KR1020100080697A Active KR101756130B1 (en) | 2010-08-20 | 2010-08-20 | Semiconductor storage device and method for throttling performance of the semiconductor storage device |
Country Status (1)
| Country | Link |
|---|---|
| KR (1) | KR101756130B1 (en) |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9015403B2 (en) | 2011-11-02 | 2015-04-21 | Samsung Electronics Co., Ltd. | Method for adjusting performance of a storage device and a semiconductor storage device therefor |
| US9678827B2 (en) | 2014-10-07 | 2017-06-13 | SK Hynix Inc. | Access counts for performing data inspection operations in data storage device |
| KR20180076765A (en) * | 2016-12-28 | 2018-07-06 | 에스케이하이닉스 주식회사 | Memory system and operating method of memory system |
| CN114661222A (en) * | 2020-12-22 | 2022-06-24 | 伊姆西Ip控股有限责任公司 | Method, apparatus and computer program product for managing access load of a storage system |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR102839092B1 (en) | 2021-09-10 | 2025-07-28 | 삼성전자주식회사 | Semiconductor memory device and memory system |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6912635B2 (en) * | 2002-05-08 | 2005-06-28 | Hewlett-Packard Development Company, L.P. | Distributing workload evenly across storage media in a storage array |
-
2010
- 2010-08-20 KR KR1020100080697A patent/KR101756130B1/en active Active
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9015403B2 (en) | 2011-11-02 | 2015-04-21 | Samsung Electronics Co., Ltd. | Method for adjusting performance of a storage device and a semiconductor storage device therefor |
| US9678827B2 (en) | 2014-10-07 | 2017-06-13 | SK Hynix Inc. | Access counts for performing data inspection operations in data storage device |
| KR20180076765A (en) * | 2016-12-28 | 2018-07-06 | 에스케이하이닉스 주식회사 | Memory system and operating method of memory system |
| CN114661222A (en) * | 2020-12-22 | 2022-06-24 | 伊姆西Ip控股有限责任公司 | Method, apparatus and computer program product for managing access load of a storage system |
Also Published As
| Publication number | Publication date |
|---|---|
| KR101756130B1 (en) | 2017-07-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR101702392B1 (en) | Semiconductor storage device and method for throttling performance of the semiconductor storage device | |
| US8862807B2 (en) | Semiconductor storage device and method of throttling performance of the same | |
| US9037778B2 (en) | Method and apparatus to interface semiconductor storage device and host to provide performance throttling of semiconductor storage device | |
| GB2533688B (en) | Resource allocation and deallocation for power management in devices | |
| CN107346290B (en) | Replaying partition logical to physical data address translation tables using parallelized log lists | |
| KR101467939B1 (en) | Variable over provisioning for non-volatile storage | |
| US9223391B2 (en) | Apparatus power control | |
| US20090198877A1 (en) | System, controller, and method for data storage | |
| WO2016069194A1 (en) | Method and system for throttling bandwidth based on temperature | |
| KR20140000751A (en) | Operating method for data storage device | |
| KR101756130B1 (en) | Semiconductor storage device and method for throttling performance of the semiconductor storage device | |
| KR101824067B1 (en) | Method of interfacing between host and semiconductor storage device for throttling performance of the semiconductor storage device, and apparatus there-of | |
| CN114730250A (en) | Read commands are weighted according to the partition in the storage device | |
| CN114730605B (en) | Weighted read commands and open block timers for storage devices | |
| EP4325367B1 (en) | Method and device for data caching | |
| KR101702393B1 (en) | Semiconductor storage device and method for throttling performance of the semiconductor storage device | |
| KR102333746B1 (en) | Method for operating storage device managing wear level depending on reuse period | |
| US12079122B2 (en) | Sequential garbage collection | |
| US12481586B2 (en) | Sequential garbage collection |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PA0109 | Patent application |
Patent event code: PA01091R01D Comment text: Patent Application Patent event date: 20100820 |
|
| PG1501 | Laying open of application | ||
| A201 | Request for examination | ||
| PA0201 | Request for examination |
Patent event code: PA02012R01D Patent event date: 20150820 Comment text: Request for Examination of Application Patent event code: PA02011R01I Patent event date: 20100820 Comment text: Patent Application |
|
| E902 | Notification of reason for refusal | ||
| PE0902 | Notice of grounds for rejection |
Comment text: Notification of reason for refusal Patent event date: 20160608 Patent event code: PE09021S01D |
|
| E902 | Notification of reason for refusal | ||
| PE0902 | Notice of grounds for rejection |
Comment text: Notification of reason for refusal Patent event date: 20161205 Patent event code: PE09021S01D |
|
| E701 | Decision to grant or registration of patent right | ||
| PE0701 | Decision of registration |
Patent event code: PE07011S01D Comment text: Decision to Grant Registration Patent event date: 20170613 |
|
| GRNT | Written decision to grant | ||
| PR0701 | Registration of establishment |
Comment text: Registration of Establishment Patent event date: 20170704 Patent event code: PR07011E01D |
|
| PR1002 | Payment of registration fee |
Payment date: 20170705 End annual number: 3 Start annual number: 1 |
|
| PG1601 | Publication of registration | ||
| PR1001 | Payment of annual fee |
Payment date: 20200630 Start annual number: 4 End annual number: 4 |
|
| PR1001 | Payment of annual fee |
Payment date: 20210628 Start annual number: 5 End annual number: 5 |
|
| PR1001 | Payment of annual fee |
Payment date: 20220622 Start annual number: 6 End annual number: 6 |
|
| PR1001 | Payment of annual fee |
Payment date: 20230621 Start annual number: 7 End annual number: 7 |
|
| PR1001 | Payment of annual fee |
Payment date: 20240626 Start annual number: 8 End annual number: 8 |
|
| PR1001 | Payment of annual fee |
Payment date: 20250624 Start annual number: 9 End annual number: 9 |