[go: up one dir, main page]

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 PDF

Info

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
Application number
KR1020100080697A
Other languages
Korean (ko)
Other versions
KR101756130B1 (en
Inventor
윤한빈
우영재
이동기
황성식
권혁선
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020100080697A priority Critical patent/KR101756130B1/en
Priority to US13/166,257 priority patent/US8862807B2/en
Priority to US13/166,216 priority patent/US8856424B2/en
Priority to US13/166,131 priority patent/US8862806B2/en
Priority to US13/212,404 priority patent/US9037778B2/en
Publication of KR20120017830A publication Critical patent/KR20120017830A/en
Priority to US14/504,568 priority patent/US9348521B2/en
Priority to US14/511,271 priority patent/US9223506B2/en
Application granted granted Critical
Publication of KR101756130B1 publication Critical patent/KR101756130B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash 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

PURPOSE: A semiconductor storing apparatus and a method for adjusting the performance of the semiconductor storing apparatus are provided to secure the life expectancy of the storing apparatus by adjusting the performance of the apparatus based on predicted workloads. CONSTITUTION: A controller collects workload data related to workloads applied to a semiconductor storing apparatus(S100). Based on the collected workload data, workloads are predicted(S110). The controller determines target performance levels according to the predicted workloads(S120). The controller applies the determined performance level to the operation of the semiconductor storing apparatus(S130).

Description

반도체 저장 장치 및 상기 반도체 저장 장치의 성능 조절 방법 {Semiconductor storage device and method for throttling performance of the semiconductor storage device}Semiconductor storage device and method for throttling performance of the semiconductor storage device

본 발명은 데이터 저장장치에 관한 것으로, 특히, 비휘발성 메모리에 데이터를 저장하는 반도체 저장장치 및 그 성능 조절 방법에 관한 것이다.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 data storage system 1 according to an embodiment of the present invention. The data storage system 1 according to an embodiment of the present invention includes a semiconductor storage device 10 and a host 20. The semiconductor storage device 10 may include a controller 100 and a nonvolatile memory device 200.

호스트(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 host 20 uses a semiconductor protocol such as a peripheral component interconnect-express (PCI-E), Advanced Technology Attachment (ATA), serial ATA (SATA), parallel ATA (PATA), or serial attached SCSI (SAS). Communicate with storage 10. However, the interface protocols between the host 20 and the semiconductor storage device 10 are not limited to the examples described above, but are not limited to the above-described examples, and include a universal serial bus (USB), a multi-media card (MMC), an enhanced small disk interface (ESDI), or an IDE. It may be one of other interface protocols such as (Integrated Drive Electronics).

본 발명의 실시예에 따른 반도체 저장장치(10)는 솔리드 스테이트 드라이브(Solid State Drive, 이하 'SSD'라 함) 또는 SD(secure digital) 카드일 수 있으나, 이에 한정되지 않는다. 또한, 비휘발성 메모리 장치(200)는 플래시 메모리 장치일 수 있으나, 이에 한정되지 않으며, PRAM, MRAM, ReRAM, 또는 FeRAM 장치일 수 있다. 비휘발성 메모리 장치(200)가 플래시 메모리 장치인 경우, 플로팅 게이트 방식의 NAND 플래시 메모리 장치 또는 CTF(Charge Trap Flash) 방식의 NAND 플래시 메모리 장치일 수 있다. 비휘발성 메모리 장치(200)의 메모리 셀 트랜지스터들은 2차원적으로 배열된 구조를 가질 수도 있고, 또는 3차원적으로 배열된 구조를 가질 수도 있다.The semiconductor storage device 10 according to an exemplary embodiment of the present invention may be a solid state drive (hereinafter, referred to as an 'SSD') or a secure digital (SD) card, but is not limited thereto. Also, the nonvolatile memory device 200 may be a flash memory device, but is not limited thereto and may be a PRAM, MRAM, ReRAM, or FeRAM device. When the nonvolatile memory device 200 is a flash memory device, the nonvolatile memory device 200 may be a floating gate NAND flash memory device or a CTF (Charge Trap Flash) NAND flash memory device. The memory cell transistors of the nonvolatile memory device 200 may have a two-dimensionally arranged structure or may have a three-dimensionally arranged structure.

컨트롤러(100)는 반도체 저장장치(10)의 동작을 전반적으로 제어하며, 또한 호스트(20)와 비휘발성 메모리 장치(200) 간의 제반 데이터 교환을 제어한다. 예컨대, 컨트롤러(100)는 호스트(20)의 요청에 따라 비휘발성 메모리 장치(200)를 제어하여 데이터를 쓰거나 데이터를 독출한다. 또한, 컨트롤러(100)는 비휘발성 메모리의 특성이나 비휘발성 메모리의 효율적인 관리를 위하여 필요한 일련의 내부 동작(예컨대, 성능 조절, 머지, 웨어 레벨링 등)을 제어한다.The controller 100 controls overall operations of the semiconductor storage device 10, and also controls overall data exchange between the host 20 and the nonvolatile memory device 200. For example, the controller 100 controls the nonvolatile memory device 200 in response to a request of the host 20 to write or read data. In addition, the controller 100 controls a series of internal operations (eg, performance adjustment, merging, wear leveling, etc.) necessary for the characteristics of the nonvolatile memory or the efficient management of the nonvolatile memory.

비휘발성 메모리 장치(200)는 데이터를 비휘발적으로 저장하기 위한 저장 장소로서, OS(Operating System), 각종 프로그램들, 및 각종 데이터를 저장할 수 있다. The nonvolatile memory device 200 is a storage location for nonvolatile storage of data, and may store an operating system (OS), various programs, and various data.

도 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 controller 100 according to an embodiment of the present invention. Referring to FIG. 2, the controller 100 may include a host interface 110, a DRAM 120, an SRAM 130, a memory interface 140, a CPU 150, a bus 160, a workload module 170, It may include a timer 180, a performance adjustment module 190, and a clock generator 195.

호스트 인터페이스(110)는 호스트(20)와 통신하기 위하여 상술한 바와 같은 인터페이스 프로토콜을 구비한다. DRAM(120), 및 SRAM(130)은 각각 데이터 및/또는 프로그램을 휘발적으로 저장한다. 비휘발성 메모리 인터페이스(140)는 비휘발성 메모리 장치(200)와 인터페이싱한다. The host interface 110 has an interface protocol as described above for communicating with the host 20. DRAM 120 and SRAM 130 each store data and / or programs volatile. The nonvolatile memory interface 140 interfaces with the nonvolatile memory device 200.

CPU(150)는 비휘발성 메모리 장치(200)로/로부터 데이터 기록/독출을 위한 제반 제어 동작을 수행한다. The CPU 150 performs various control operations for writing / reading data to / from the nonvolatile memory device 200.

워크로드 모듈(170)은 반도체 저장장치(10)에 인가되는 워크로드와 관련된 워크로드 데이터를 수집하고, 수집된 워크로드 데이터를 토대로 워크로드를 예측할 수 있다. The workload module 170 may collect workload data related to the workload applied to the semiconductor storage device 10 and predict the workload based on the collected workload data.

성능 조절 모듈(190)은 워크로드 모듈(170)에서 예측한 워크로드에 따라 타겟 성능 레벨을 결정하고, 결정된 성능 레벨을 적용하여 반도체 저장장치(10)의 성능을 조절한다. The performance adjusting module 190 determines the target performance level according to the workload predicted by the workload module 170, and adjusts the performance of the semiconductor storage device 10 by applying the determined performance level.

타이머(180)는 CPU(150), 워크로드 모듈(170) 및 성능 조절 모듈(190)로 시간 정보를 제공한다. 워크로드 모듈(170), 타이머(180) 및 성능 조절 모듈(190)은 각각 하드웨어, 소프트웨어 또는 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.  The timer 180 provides time information to the CPU 150, the workload module 170, and the performance adjustment module 190. The workload module 170, the timer 180, and the performance adjustment module 190 may be implemented in hardware, software, or a combination of hardware and software, respectively.

워크로드 모듈(170), 타이머(180) 및 성능 조절 모듈(190)이 소프트웨어로 구현되는 경우, 해당 프로그램은 비휘발성 메모리 장치(200)에 저장되고, 반도체 저장장치(10)가 파워-온되면, 비휘발성 메모리 장치(200)로부터 SRAM(130)으로 로드되어 CPU(150)에 의해 실행될 수 있다.When the workload module 170, the timer 180, and the performance control module 190 are implemented in software, the corresponding program is stored in the nonvolatile memory device 200, and when the semiconductor storage device 10 is powered on. The SRAM 130 may be loaded from the nonvolatile memory device 200 and executed by the CPU 150.

클럭 발생기(195)는 CPU(150), DRAM(120), 및 비휘발성 메모리 장치(200)의 동작을 위해 필요한 클럭 신호를 생성하여, 해당 소자로 제공한다. CPU(150), DRAM(120), 및 비휘발성 메모리 장치(200)에 제공되는 클럭 신호의 속도는 각각 다를 수 있다. The clock generator 195 generates a clock signal necessary for the operation of the CPU 150, the DRAM 120, and the nonvolatile memory device 200, and provides the clock signal to the corresponding device. Speeds of clock signals provided to the CPU 150, the DRAM 120, and the nonvolatile memory device 200 may be different.

비록 도면에는 도시되지 않았지만, 반도체 저장장치(10)는 반도체 저장장치(10)의 파워-온(power-on)시 실행되는 코드 데이터를 저장하는 ROM(미도시), 비휘발성 메모리 장치(200)에 저장될 데이터를 인코딩하고 비휘발성 메모리 장치(200)로부터 독출된 데이터를 디코딩하기 위한 ECC 엔진(미도시) 등의 구성요소를 더 구비할 수 있다.Although not shown in the drawings, the semiconductor storage device 10 may include a ROM (not shown) and a nonvolatile memory device 200 that stores code data executed at power-on of the semiconductor storage device 10. A component such as an ECC engine (not shown) for encoding data to be stored in the data and decoding data read from the nonvolatile memory device 200 may be further included.

도 3은 도 2에 도시된 비휘발성 메모리 장치(200)의 구조를 개략적으로 나타내는 도면이다. 이를 참조하면, 비휘발성 메모리 장치(200)는 다수의 메모리 소자들을 포함할 수 있다. 도 3에는 4-채널(4-channel)/ 3-뱅크(3-bank) 방식의 하드웨어 구조를 갖는 비휘발성 메모리 장치(200)가 예시적으로 도시되나, 본 발명이 이에 한정되는 것은 아니다. 3 is a diagram schematically illustrating a structure of the nonvolatile memory device 200 shown in FIG. 2. Referring to this, the nonvolatile memory device 200 may include a plurality of memory elements. 3 illustrates a nonvolatile memory device 200 having a hardware structure of a 4-channel / 3-bank scheme, but the present invention is not limited thereto.

도 3에 도시된 반도체 저장장치(10)에서, 컨트롤러(100)와 비휘발성 메모리 장치(200)는 4개의 채널(Channel A, B, C, D)로 연결되며, 각 채널에는 3개의 플래시 메모리 소자(CA0~CA2, CB0~CB2, CC0~CC2, CD0~CD2)가 연결되는 구조이다. 그러나, 채널의 수 및 뱅크의 수는 이에 한정되지 않고 변경될 수 있음은 당연하다.In the semiconductor storage device 10 illustrated in FIG. 3, the controller 100 and the nonvolatile memory device 200 are connected to four channels A, B, C, and D, and three flash memories are provided in each channel. The devices CA0 to CA2, CB0 to CB2, CC0 to CC2, and CD0 to CD2 are connected to each other. However, it is obvious that the number of channels and the number of banks can be changed without being limited thereto.

이러한 구조를 가지는 반도체 저장장치(10)에서 반도체 저장장치(10)의 성능 조절 단위는, 비휘발성 메모리 장치(200) 전체, 비휘발성 메모리 장치(200)의 개별적인 메모리 소자(메모리 칩)가 공유하는 버스(채널) 단위, 뱅크 단위, 혹은 개별적인 소자 단위일 수 있다. 여기서, 뱅크는 다른 채널상에서 같은 오프셋(offset)에 위치하는 메모리 소자들의 그룹이다. In the semiconductor storage device 10 having such a structure, the performance control unit of the semiconductor storage device 10 is shared by the entire nonvolatile memory device 200 and individual memory devices (memory chips) of the nonvolatile memory device 200. It may be a bus unit, a bank unit, or an individual device unit. Here, a bank is a group of memory elements located at the same offset on different channels.

도 4는 본 발명의 일 실시예에 따른 호스트(20)의 개략적인 블록도이다. 도 4를 참조하면, CPU(210), 메모리(220), 버스(230), 저장장치 인터페이스(240), 워크로드 모듈(250), 타이머(260), 및 성능 조절 모듈(270)를 포함할 수 있다. 4 is a schematic block diagram of a host 20 according to an embodiment of the present invention. 4, a CPU 210, a memory 220, a bus 230, a storage interface 240, a workload module 250, a timer 260, and a performance adjustment module 270 may be included. Can be.

저장장치 인터페이스(240)는 반도체 저장장치(10)와 통신하기 위한 인터페이스 프로토콜을 구비한다. The storage interface 240 includes an interface protocol for communicating with the semiconductor storage device 10.

CPU(210)는 반도체 저장장치(10)로/로부터 데이터 기록/독출을 위한 제반 제어 동작을 수행한다. The CPU 210 performs various control operations for writing / reading data to / from the semiconductor storage device 10.

워크로드 모듈(250)은 반도체 저장장치(10)에 인가되는 워크로드와 관련된 워크로드 데이터를 수집하고, 수집된 워크로드 데이터를 토대로 워크로드를 예측할 수 있다. The workload module 250 may collect workload data related to the workload applied to the semiconductor storage device 10 and predict the workload based on the collected workload data.

성능 조절 모듈(270)은 워크로드 모듈(250)에서 예측한 워크로드에 따라 타겟 성능 레벨을 결정하고, 결정된 성능 레벨을 적용하여 반도체 저장장치(10)의 성능을 조절한다. The performance adjusting module 270 determines the target performance level according to the workload predicted by the workload module 250, and adjusts the performance of the semiconductor storage device 10 by applying the determined performance level.

타이머(260)는 CPU(210), 워크로드 모듈(250) 및 성능 조절 모듈(270)로 시간 정보를 제공한다. 워크로드 모듈(250), 타이머(260) 및 성능 조절 모듈(270)은 각각 소프트웨어, 하드웨어 또는 소프트웨어 및 하드웨어의 결합으로 구현될 수 있다. The timer 260 provides time information to the CPU 210, the workload module 250, and the performance tuning module 270. Workload module 250, timer 260 and performance tuning module 270 may be implemented in software, hardware or a combination of software and hardware, respectively.

워크로드 모듈(250)은 및 성능 조절 모듈(270)은 반도체 저장장치(10)의 성능을 호스트(20)에서 조절하거나 제어하기 위한 것으로, 호스트(20)의 개입없이 반도체 저장 장치(10)가 자체적으로 성능을 조절하는 경우에는 호스트(20)는 워크로드 모듈(250) 및 성능 조절 모듈(270)을 구비하지 않을 수 있다.The workload module 250 and the performance adjustment module 270 are used to adjust or control the performance of the semiconductor storage device 10 in the host 20. The semiconductor storage device 10 may be configured without intervention of the host 20. When adjusting performance by itself, the host 20 may not include the workload module 250 and the performance tuning module 270.

도 5는 본 발명의 일 실시예에 따른 반도체 저장 장치(10)의 동작 방법을 나타내는 흐름도이다. 본 발명의 일 실시예에 따른 반도체 저장 장치(10)의 동작 방법은 도 2에 도시된 반도체 저장 장치(10), 호스트(20) 또는 반도체 저장 장치(10)와 호스트(20) 양자에 분산되어 구현될 수 있다. 5 is a flowchart illustrating a method of operating the semiconductor storage device 10 according to an embodiment of the present invention. The operating method of the semiconductor storage device 10 according to an embodiment of the present invention is distributed to the semiconductor storage device 10, the host 20, or both the semiconductor storage device 10 and the host 20 shown in FIG. 2. Can be implemented.

본 발명의 일 실시예에 따른 동작 방법이 반도체 저장 장치(10)에 구현되는 예를 중심으로 기술하나, 상술한 바와 같이, 본 발명이 이에 한정되는 것은 아니다.An operation method according to an embodiment of the present invention will be described based on an example in which the semiconductor storage device 10 is implemented. As described above, the present invention is not limited thereto.

도 5를 참조하면, 컨트롤러(100)는 반도체 저장 장치(10)에 인가되는 워크로드와 관련된 워크로드 데이터를 수집하고(S100), 수집된 워크로드 데이터를 토대로 워크로드를 예측한다(S110). 컨트롤러(100)는 예측된 워크로드에 따라 타겟 성능 레벨을 결정하고(S120), 결정된 성능 레벨을 반도체 저장 장치(10)의 동작에 적용한다(S130). Referring to FIG. 5, the controller 100 collects workload data related to a workload applied to the semiconductor storage device 10 (S100) and predicts a workload based on the collected workload data (S110). The controller 100 determines a target performance level according to the predicted workload (S120), and applies the determined performance level to the operation of the semiconductor storage device 10 (S130).

도 6은 본 발명의 일 실시예에 따른 반도체 저장장치(10)의 워크로드 예측 방법을 나타내는 흐름도이다. 도 6에 도시된 본 발명의 일 실시예에 따른 반도체 저장장치(10)의 워크로드 예측 방법은 도 2에 도시된 반도체 저장장치(10)에 의해 수행될 수 있다. 그러나, 본 발명의 다른 일 실시예에 따른 반도체 저장장치(10)의 워크로드 예측 방법은 도 4에 도시된 호스트(20) 또는 반도체 저장장치(10)와 호스트(20) 양자에 분산되어 구현될 수 있다. 6 is a flowchart illustrating a workload prediction method of the semiconductor storage device 10 according to an embodiment of the present invention. The workload prediction method of the semiconductor storage device 10 according to the exemplary embodiment shown in FIG. 6 may be performed by the semiconductor storage device 10 shown in FIG. 2. However, the workload prediction method of the semiconductor storage device 10 according to another exemplary embodiment of the present invention may be implemented by being distributed to the host 20 or the semiconductor storage device 10 and the host 20 shown in FIG. 4. Can be.

도 2 및 도 6을 참조하면, 반도체 저장장치(10)의 파워가 온(power-on)되면, 반도체 저장장치(10)의 성능 조절 기능이 인에이블된 상태인지 체크한다(S210). 반도체 저장장치(10)의 성능 조절 기능이 인에이블된 상태인지를 나타내기 위해, 도 13에 도시된 성능 조절 플래그가 사용될 수 있다. 성능 조절 플래그가 셋(set)되어 있다면, 컨트롤러(100)는 성능 조절 기능이 인에이블된 상태로 판단하여, 성능 조절을 위한 다음 단계들(S230 내지 S250)을 수행할 수 있다. 성능 조절 플래그는 반도체 저장장치(10)의 제품 출시 전에 또는 반도체 저장장치(10)의 파워-온 시에 미리 설정될 수 있다. 2 and 6, when the power of the semiconductor storage device 10 is turned on, it is checked whether the performance adjusting function of the semiconductor storage device 10 is enabled (S210). In order to indicate whether the performance adjusting function of the semiconductor storage device 10 is enabled, the performance adjusting flag shown in FIG. 13 may be used. If the performance adjustment flag is set, the controller 100 determines that the performance adjustment function is enabled, and may perform the following steps S230 to S250 for performance adjustment. The performance adjustment flag may be set in advance before the product release of the semiconductor storage device 10 or at power-on of the semiconductor storage device 10.

컨트롤러(100)는 반도체 저장장치(10)의 워크로드 데이터를 수집한다(S230). The controller 100 collects workload data of the semiconductor storage device 10 (S230).

본 발명의 다른 실시예에서 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 semiconductor storage device 10 is turned on, the controller 100 may collect workload data of the semiconductor storage device 10 (S230).

워크로드를 예측하는데 사용되는 워크로드 데이터는 소정 기간 카운트된 파라미터 값일 수 있다.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 host 20 applies to the storage device 10, the number of write commands that the host device 20 applies to the storage device 10, and the host 20. ), The number of read commands applied to the storage device 10, the amount of data sent to / from the host in response to the command, the amount of data received from the host in response to the write command, and the data transmitted to the host in response to the read command. And a number of program operations performed in the semiconductor storage device and a number of read operations performed in the semiconductor storage device.

호스트로/로부터 전송된 데이터 량, 쓰기 명령에 응답하여 호스트로부터 수신한 데이터 량, 읽기 명령에 응답하여 호스트로 전송한 데이터 량은 호스트 명령에 포함된 카운트 필드의 값을 누적하여 산출될 수 있다. 예컨대, 쓰기 명령에 응답하여 호스트로부터 수신한 데이터 량은 쓰기 명령에 포함된 카운트 필드의 섹터(혹은 블록)수를 누적함으로써 산출될 수 있다.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 semiconductor storage device 10 may accumulate and count the workload data (ie, parameters) in units of specific periods or specific periods (ie, predetermined periods) (S230).

파라미터 수집 주기는 둘 이상일 수 있다. 예컨대, 파라미터 수집 주기는 제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 memory 120 or 130 in the controller or stored in the nonvolatile memory device 200 together with the above-described performance control flag.

또한, 반도체 저장장치(10)는 각 파라미터를 특정 이벤트 시점부터 누적하여 카운트할 수 있다. 특정 이벤트 시점은, 예를 들면, 저장장치의 조립(fabrication) 시점, 파워-온(power-on) 시점, 팩토리 리셋(factory reset) 인가 시점, 호스트로부터 특정 명령을 수신한 시점, 또는, 반도체 저장장치의 성능 조절이 인에이블된 시점 등일 수 있다. In addition, the semiconductor storage device 10 may accumulate and count each parameter from a specific event time point. The specific event time point may be, for example, a fabrication time of a storage device, a power-on time, a factory reset time of application, a time of receiving a specific command from a host, or a semiconductor storage. This may be when the performance adjustment of the device is enabled or the like.

이와 같이 수집된 워크로드 데이터는 컨트롤러 내의 메모리(120 또는 130)에 저장되거나 비휘발성 메모리 장치(200)에 저장되어 관리될 수 있다. 또는 워크로드 데이터는 반도체 저장장치(10)의 파워-온 시에 비휘발성 메모리 장치(200)로부터 컨트롤러 내의 메모리(120 또는 130)로 업로드되어 업데이트되다가, 반도체 저장장치(10)의 파워-오프 전에 비휘발성 메모리 장치(200)로 재저장될 수 있다.The collected workload data may be stored in the memory 120 or 130 in the controller or stored and managed in the nonvolatile memory device 200. Alternatively, the workload data is uploaded and updated from the nonvolatile memory device 200 to the memory 120 or 130 in the controller at power-on of the semiconductor storage device 10 before powering off the semiconductor storage device 10. The data may be restored to the nonvolatile memory device 200.

도 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 semiconductor storage device 10 waits for a command from a host to be received (S410). When the command is received from the host, the corresponding command is parsed and identified (S420), and the received command is checked whether the command is a count target command. In this step S420, when a command is applied from the host, the command decoder (not shown) of the host interface 110 receives and decodes the command, and notifies the CPU 150 and the workload module 170 of the command reception. .

워크로드 모듈(170)은 수신된 명령이 카운트 대상 명령(예컨대, 쓰기 명령이나 읽기 명령)인 경우, 명령에 상응하는 카운트(예컨대, 쓰기 명령 카운트 및 명령 카운트)를 누적한다(S450). 그리고, 수신된 명령에 응답하여 호스트(20)로부터 데이터를 수신하거나 또는 호스트(20)로 데이터를 전송한다(S460). If the received command is a count target command (eg, a write command or a read command), the workload module 170 accumulates a count (eg, a write command count and a command count) corresponding to the command (S450). In response to the received command, data is received from the host 20 or data is transmitted to the host 20 (S460).

수신된 명령이 쓰기 명령인 경우, 반도체 저장장치(10)는 호스트(20)로 쓰기 데이터를 전송할 것을 요청하여, 쓰기 데이터를 수신하여 DRAM(120)에 임시로 저장할 수 있다(S460). 이 경우, 반도체 저장장치(10)는 호스트(20)에서 반도체 저장장치(10)로 전송된 데이터 량(데이터 전송량)을 카운트하여 누적할 수 있다(S470). 호스트(20)에서 반도체 저장장치(10)로 인가되는 명령은 도 11a 및 도 11b에 도시된 명령 포맷과 유사하게 명령 필드 및 카운트 필드를 포함할 수 있다. 이 때 카운트 필드(예컨대, 섹터 카운트 필드)는 전송되는 데이터량을 섹터 수로 나타낸 값일 수 있다. 따라서, 반도체 저장장치(10)는 수신 명령에 포함된 카운트 필드값을 읽어 누적할 수 있다(S470). When the received command is a write command, the semiconductor storage device 10 may request to transmit write data to the host 20 to receive the write data and temporarily store the write data in the DRAM 120 (S460). In this case, the semiconductor storage device 10 may count and accumulate the data amount (data transfer amount) transferred from the host 20 to the semiconductor storage device 10 (S470). The command applied from the host 20 to the semiconductor storage device 10 may include a command field and a count field similar to the command format shown in FIGS. 11A and 11B. In this case, the count field (eg, the sector count field) may be a value representing the amount of data to be transmitted in the number of sectors. Therefore, the semiconductor storage device 10 may read and accumulate the count field values included in the reception command (S470).

도 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 semiconductor storage device 10 reads data from the memory device 200 and transmits the read data to the host 20 (S460). In this case, the semiconductor storage device 10 may count and accumulate the amount of data (data transfer amount) transferred from the semiconductor storage device to the host (S470).

다시 도 6을 참조하면, 성능 조절을 위한 충분한 워크로드 데이터가 수집되면(S240), 컨트롤러(100)는 성능 조절을 시작한다(S250). 여기서, 충분한 워크로드 데이터는 특정 기간(예컨대, 성능 조절 주기)가 경과함에 따라 달성될 수도 있고, 특정 파라미터 값(예컨대, 저장장치의 조립 시점 이후 누적된 명령의 수)이 미리 정해진 기준을 초과함에 따라 달성될 수도 있다.Referring back to FIG. 6, when sufficient workload data for performance adjustment is collected (S240), the controller 100 starts performance adjustment (S250). Here, sufficient workload data may be achieved as a certain period of time (eg, a performance tuning cycle) elapses, and a particular parameter value (eg, the number of instructions accumulated since the assembly time of storage) exceeds a predetermined criterion. May be achieved accordingly.

본 발명의 다른 실시예에서는, 충분한 워크로드 데이터가 수집되면(S240), 컨트롤러(100)가 성능 조절 플래그를 셋함으로써 성능 조절을 인에이블 할 수 있다.In another embodiment of the present invention, when sufficient workload data is collected (S240), the controller 100 may enable performance adjustment by setting a performance adjustment flag.

성능 조절이 시작되면(S250), 도 5에 도시된 바와 같이, 컨트롤러(100)는 수집된 워크로드 데이터를 토대로 워크로드를 예측한다(S110).When the performance adjustment starts (S250), as shown in FIG. 5, the controller 100 predicts the workload based on the collected workload data (S110).

반도체 저장장치(10)는 둘 이상의 카운트 값을 가중 합(weighted sum)하거나 가중 평균(weighted average)하여 워크로드를 예측할 수 있다(S110).The semiconductor storage device 10 may predict the workload by weighting the weighted sum or weighted average of two or more count values (S110).

다음의 수학식 1은 세 개의 워크로드 데이터를 이용하여 k번째 날(kth day)에 대한 워크로드(WLk)를 예측하는 수학식이다.Equation 1 below is an equation for predicting a workload WLk for a k th day using three workload data.

Figure pat00001
Figure pat00001

여기서, 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 Equation 2.

Figure pat00002
Figure pat00002

여기서, α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 controller 100 determines the adjusted performance level according to the predicted workload (S120).

예측된 워크로드 데이터를 이용하여 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 semiconductor storage device 10 is started, that is, in the initial operation period of the semiconductor storage device 10 (eg, a predetermined period from the power-on time). The initial performance level means a performance level to be applied to the semiconductor storage device 10 during an initial operation period before the workload data for predicting the workload of the semiconductor storage device 10 is sufficiently collected. The initial performance level may be set in advance before the product release of the semiconductor storage device 10 or at the power-on of the semiconductor storage device 10, similar to the performance control flag and the parameter collection period described above.

본 발명의 다른 실시예에서는 반도체 저장장치(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 semiconductor storage device 10. Setting the virtual workload history assumes that the semiconductor storage device 10 has experienced a virtual workload for a period of time before it is powered on. To this end, values of various parameters illustrated in FIG. 13 may be stored in the semiconductor storage device 10 as specific values. For example, the initial values of the various parameters shown in FIG. 13 may not be set to '0', but may be set to predetermined virtual values.

가상의 워크로드 히스토리가 설정되는 경우, 반도체 저장장치(10)는 파워-온되자 마자, 이미 설정되어 있는 가상의 워크로드 히스토리 데이터를 토대로 워크로드를 예측하고(S110), 예측된 워크로드에 따라 조절된 성능 레벨을 결정하여 적용할 수 있다(S120, S130). When the virtual workload history is set, the semiconductor storage device 10 predicts the workload based on the virtual workload history data that is already set as soon as it is powered on (S110), and according to the predicted workload The adjusted performance level may be determined and applied (S120 and S130).

조절된 성능 레벨 역시 반도체 저장장치(10)의 레지스터(미도시) 혹은 메모리(120, 130 또는 200)에 저장될 수 있다. 특히, 반도체 저장장치(10)는 파워-오프 되기 전에 그 때의 성능 레벨을 저장하고, 다음 파워-온되면 저장된 성능 레벨을 읽어, 그 성능 레벨을 적용할 수 있다.The adjusted performance level may also be stored in a register (not shown) or memory 120, 130 or 200 of the semiconductor storage device 10. In particular, the semiconductor storage device 10 may store the performance level at that time before power-off, read the stored performance level at the next power-on, and apply the performance level.

성능은 쓰기 성능 및 읽기 성능 중의 어느 하나일 수 있으며, 쓰기 성능 레벨은 단위시간당 기록되는 데이터 양(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 storage device 10 is maintained at a certain level of initial performance, and the performance is maintained until sufficient information is collected to determine the strength and pattern of the workload. Once enough workload information is collected, the degree of performance tuning is determined based on the collected information.

따라서, 도 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 host 20 anticipating the workload intensity and pattern to be applied to the storage device. The virtual workload history is used to determine the degree of performance tuning during the initial storage operation.

도 10a 및 도 10b는 각각 본 발명의 다른 일 실시예에 따른 반도체 저장장치(10)의 워크로드 예측 방법을 나타내는 흐름도이다. 도 10a 및 도 10b에 도시된 반도체 저장장치(10)의 워크로드 예측 방법은 도 4에 도시된 호스트(20)에 의해 수행될 수 있다.10A and 10B are flowcharts illustrating a workload prediction method of the semiconductor storage device 10 according to another exemplary embodiment of the present invention, respectively. The workload prediction method of the semiconductor storage device 10 illustrated in FIGS. 10A and 10B may be performed by the host 20 illustrated in FIG. 4.

도 4 및 도 10a를 참조하면, 반도체 저장장치(10)의 파워가 온(power-on)되면, 호스트(20)가 명령을 통해 반도체 저장장치(10)의 성능 조절을 인에이블할 수 있다(S210'). 즉, 반도체 저장장치(10)의 성능 조절을 인에이블하기 위하여 호스트(20)는 반도체 저장장치(10)로 성능 조절 인에이블 명령을 인가할 수 있다.4 and 10A, when the power of the semiconductor storage device 10 is turned on, the host 20 may enable the performance control of the semiconductor storage device 10 through a command ( S210 '). In other words, in order to enable performance control of the semiconductor storage device 10, the host 20 may apply a performance control enable command to the semiconductor storage device 10.

도 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 host 20 includes a feature field, a count field, a logic block address (LBA) field, a device field, and a command field in relation to performance control of the semiconductor storage device 10. The command signal may be applied to the semiconductor storage device 10. Each field included in the command may be configured with a predetermined number of bits. For example, each of the command field, device field, and count field may consist of 8 bits.

도 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 semiconductor storage device 10 may set the performance control flag shown in FIG. 13 in response to the performance control enable command, and reset the performance control flag shown in FIG. 13 in response to the performance control disable command. (set)

호스트(20)는 도 11a 또는 도 11b에 도시된 포맷과 유사한 포맷의 초기 성능 설정 명령을 반도체 저장장치(10)에 인가할 수 있고(S220'), 컨트롤러(100)는 초기 성능 설정 명령에 응답하여, 도 13에 도시된 초기 성능 레벨을 레지스터 혹은 메모리(120, 130)에 저장할 수 있다. The host 20 may apply an initial performance setting command of a format similar to that shown in FIG. 11A or 11B to the semiconductor storage device 10 (S220 ′), and the controller 100 responds to the initial performance setting command. For example, the initial performance level shown in FIG. 13 may be stored in registers or memories 120 and 130.

다음으로, 반도체 저장장치(10)의 워크로드 데이터를 수집한다(S230'). 반도체 저장장치(10)의 워크로드 데이터를 수집은 호스트(20)에 의해 이루어질 수도 있고, 반도체 저장장치(10)에 의해 이루어질 수도 있다. Next, workload data of the semiconductor storage device 10 is collected (S230 ′). Collection of workload data of the semiconductor storage device 10 may be performed by the host 20 or may be performed by the semiconductor storage device 10.

워크로드 데이터의 수집을 위하여, 호스트(20)는 주기 설정 명령을 반도체 저장장치(10)에 인가하여 반도체 저장장치(20)의 파라미터 수집 주기를 설정할 수 있다. 또한, 호스트(20)는 누적된 카운트를 모두 초기화하기 위하여 성능 조절 리셋 명령을 저장 장치(10)에 인가할 수 있다. 호스트(20)는 다른 강도와 패턴의 워크로드를 저장장치(10)에 인가하기에 앞서, 성능 조절 리셋 명령을 저장 장치(10)에 인가할 수 있다.In order to collect the workload data, the host 20 may apply a period setting command to the semiconductor storage device 10 to set a parameter collection period of the semiconductor storage device 20. In addition, the host 20 may apply the performance adjustment reset command to the storage device 10 to initialize all the accumulated counts. The host 20 may apply the performance adjustment reset command to the storage device 10 before applying the workload of the different intensity and pattern to the storage device 10.

또한, 호스트(20)는 반도체 저장장치(10)로 수집된 워크로드 데이터를 요청하는 성능 조절 정보 요청 명령(도 11b 참조)을 인가할 수 있다. 그러면, 반도체 저장장치(10)는 도 12에 도시된 바와 같은 포맷의 성능 조절 정보 응답 명령을 통해 수집된 워크로드 데이터를 호스트(20)로 전송할 수 있다.In addition, the host 20 may apply a performance adjustment information request command (see FIG. 11B) to request the collected workload data to the semiconductor storage device 10. Then, the semiconductor storage device 10 may transmit the collected workload data to the host 20 through the performance control information response command of the format as shown in FIG. 12.

성능 조절을 위한 충분한 워크로드 데이터가 수집되면(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 host 20 may set a virtual workload history instead of setting an initial performance level (S320). Setting the virtual workload history assumes that the virtual storage device has experienced a virtual workload for a period of time before it is powered on. To this end, the host 20 may set virtual workload data in the semiconductor storage device 10 (S320).

도 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 electronic system 900 according to an embodiment of the present invention may include a semiconductor storage device 10, a power supply 910, and a central processing unit (CPU) 920 according to an embodiment of the present invention. ), A RAM 930, a user interface 940, and a system bus 950 that electrically connects these components.

CPU(920)는 시스템(900)의 전체적인 동작을 제어하고, RAM(930)은 시스템(900)의 동작을 위해 필요한 정보들을 저장하고, User Interface(940)는 시스템(900)과 사용자와의 인터페이스를 제공한다. 전원부(910)는 내부의 구성 요소들(즉, CPU(920), 램(RAM)(930), 유저 인터페이스(940), 메모리 시스템(500) 등)으로 전원을 공급한다.The CPU 920 controls the overall operation of the system 900, the RAM 930 stores information necessary for the operation of the system 900, and the User Interface 940 interfaces with the system 900 and the user. To provide. The power supply unit 910 supplies power to internal components (ie, the CPU 920, the RAM 930, the user interface 940, the memory system 500, and the like).

CPU(920)가 상술한 호스트(20)에 해당할 수 있으며, 반도체 저장장치(10)는 호스트(20)의 명령에 응답하여 데이터를 저장하거나 독출할 수 있다.The CPU 920 may correspond to the host 20 described above, and the semiconductor storage device 10 may store or read data in response to a command of the host 20.

도 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 electronic system 900 ′ shown in FIG. 15A has a configuration similar to that of the electronic system 900 shown in FIG. 14, differences will be mainly described in order to avoid duplication of explanation.

도 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 electronic system 900 ′ shown in FIG. 15A further includes a RAID controller card 960 as compared to the electronic system 900 shown in FIG. 14. The semiconductor storage device 10 may not be directly interfaced with the host but may be mounted in the RAID controller card 960 to interface with the host through the RAID controller card 960. In this case, a plurality of (two or more) semiconductor storage devices 10-1 to 10-k, and k is an integer of two or more, may be mounted in the RAID controller card 960. The RAID controller card 960 of the electronic system 900 ′ shown in FIG. 15A is implemented as a separate product outside the semiconductor storage devices 10-1 through 10-k.

도 15b에 도시된 전자 시스템(900")은 도 15a에 도시된 전자 시스템(900')과 유사한 구성을 가지므로, 설명의 중복을 피하기 위하여 차이점을 위주로 기술한다.Since the electronic system 900 ″ shown in FIG. 15B has a similar configuration to that of the electronic system 900 ′ shown in FIG. 15A, the differences will be mainly described in order to avoid duplication of explanation.

도 15b에 도시된 전자 시스템(900')의 RAID 컨트롤러 카드(960)는 반도체 저장 장치들(10-1~10-k)과 함께 하나의 제품으로 구현된다는 점에서, 도 15a에 도시된 전자 시스템(900')과 차이가 있다.The electronic system shown in FIG. 15A in that the RAID controller card 960 of the electronic system 900 'shown in FIG. 15B is implemented as a single product together with the semiconductor storage devices 10-1 through 10-k. (900 ') is different.

이와 같이 RAID 컨트롤러 카드(960)가 구비되는 경우, 상술한 본 발명의 실시예에 따른 성능 조절 방법이 RAID 컨트롤러 카드(960)에 의해 구현될 수 있다. 이를 위해, 상술한 타이머, 및 성능 조절 모듈 등이 RAID 컨트롤러 카드(960) 내에 구비될 수 있다.As such, when the RAID controller card 960 is provided, the above-described performance adjusting method according to the embodiment of the present invention may be implemented by the RAID controller card 960. To this end, the above-described timer, performance control module, etc. may be provided in the RAID controller card 960.

도 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 semiconductor storage device 10 according to an embodiment of the present invention. Referring to this, the computing system 1000 may include a central processing unit 1110, an accelerated graphics port 1120, a main memory 1130, a north bridge 1140, and a semiconductor storage device 1. For example, the SSD 10, a keyboard controller 1160, a printer controller 1170, and a south bridge 1180 may be included.

컴퓨팅 시스템(1100)은 SSD(10)가 하드디스크 드라이브를 대신하여 주 저장 장치로 이용하는 개인용 컴퓨터 또는 노트북 컴퓨터의 블락도일 수 있다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니다. The computing system 1100 may be a block diagram of a personal computer or notebook computer that the SSD 10 uses as a primary storage device instead of a hard disk drive. However, the scope of the present invention is not limited thereto.

컴퓨팅 시스템(1000)에서 중앙 처리 장치(1110), AGP 장치(1120), 및 메인 메모리(1130) 등은 노스 브리지(1140)에 접속되며, SSD(10), 키보드 컨트롤러(1160), 프린터 컨트롤러(1170), 및 각종 주변 장치들(미도시) 등은 사우스 브리지(180)에 연결된다. In the computing system 1000, the central processing unit 1110, the AGP device 1120, the main memory 1130, and the like are connected to the north bridge 1140, and the SSD 10, the keyboard controller 1160, and the printer controller ( 1170, and various peripheral devices (not shown) and the like are connected to the South Bridge 180.

노스 브리지(1140)는 메인보드 가운데를 기준으로 중앙 처리 장치(1110) 소켓 쪽에 있는 집적회로로서, 일반적으로는 중앙 처리 장치(1110)와 연결하는 호스트 인터페이스(host interface)를 포함하는 시스템 컨트롤러를 의미한다. 사우스 브리지(1180)는 메인보드 가운데를 기준으로 PCI(peripheral component interconnect) 슬롯 쪽에 있는 집적회로로서, 일반적으로는 호스트 버스에서 PCI 버스를 경유하여 접속되는 버스(bus)로 가는 브리지를 의미한다. The north bridge 1140 is an integrated circuit located at the socket of the central processing unit 1110 based on the center of the main board, and generally refers to a system controller including a host interface connecting to the central processing unit 1110. do. The south bridge 1180 is an integrated circuit located in a peripheral component interconnect (PCI) slot with respect to the center of the motherboard, and generally refers to a bridge from a host bus to a bus connected via a PCI bus.

AGP는 3차원 그래픽 표현을 빠르게 구현할 수 있게 해주는 버스 규격이다. AGP 장치(1120)에는 모니터 이미지를 재생하는 비디오 카드 등이 포함될 수 있다. 메인 메모리(1130)는 일반적으로 휘발성 메모리 소자인 RAM(Random Access Memory)으로 구현될 수 있으나 본 발명의 범위가 이에 한정되는 것은 아니다. AGP is a bus specification that enables rapid implementation of three-dimensional graphical representations. The AGP device 1120 may include a video card or the like for playing back a monitor image. The main memory 1130 may be generally implemented as a random access memory (RAM), which is a volatile memory device, but the scope of the present invention is not limited thereto.

또한, 본 발명의 일 실시예에 따른 컴퓨팅 시스템(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 SSD 10 is connected to the south bridge 180 is not limited thereto, and the SSD 10 is connected to the north bridge 1140. Or a structure directly connected to the CPU 1110.

발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.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
저장장치 인터페이스 : 240
Semiconductor 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.
제1항에 있어서, 상기 카운트하는 단계는
서로 다른 적어도 두 기간 동안 누적하여 상기 명령의 수를 카운트 하는 단계를 포함하며,
상기 워크로드를 예측하는 단계는
상기 서로 다른 적어도 두 기간 동안 누적하여 카운트된 명령 수를 가중 평균 또는 가중 합하여 상기 워크로드를 예측하는 단계를 포함하는 반도체 저장장치의 성능 조절 방법.
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.
제1항에 있어서, 상기 명령은
쓰기 명령 또는 읽기 명령인 것을 특징으로 하는 반도체 저장장치의 성능 조절 방법.
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.
제4항에 있어서, 상기 카운트하는 단계는
서로 다른 적어도 두 기간 동안 누적하여 상기 데이터 량를 카운트 하는 단계를 포함하며,
상기 워크로드를 예측하는 단계는
상기 서로 다른 적어도 두 기간 동안 누적하여 카운트된 데이터 량을 가중 평균 또는 가중 합하여 상기 워크로드를 예측하는 단계를 포함하는 반도체 저장장치의 성능 조절 방법.
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.
제4항에 있어서, 상기 명령은
상기 명령에 응답하여 상기 호스트로 송신 또는 상기 호스트로부터 수신 예정인 데이터 량에 대한 정보를 포함하며,
상기 카운트하는 단계는
상기 명령에 포함된 상기 데이터량에 대한 정보를 카운트하는 단계를 포함하는 반도체 저장장치의 성능 조절 방법.
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.
제1항 또는 제4항에 있어서, 상기 방법은
예측된 워크로드에 따라 상기 반도체 저장장치의 성능을 조절하는 단계를 더 구비하는 반도체 저장장치의 성능 조절 방법.
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.
제8항에 있어서, 상기 둘 이상의 워크로드 데이터는
제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.
제8항에 있어서, 상기 둘 이상의 워크로드 데이터 각각은
상기 호스트로부터 수신되어 실행 완료된 명령의 수를 서로 다른 적어도 두 기간 동안 누적하여 카운트한 값인 것을 특징으로 하는 반도체 저장장치.
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.
제8항에 있어서, 상기 둘 이상의 워크로드 데이터 각각은
상기 반도체 저장장치의 동작을 실행시키기 위하여 상기 호스트로부터 전송되는 명령에 응답하여 상기 호스트로 송신 또는 상기 호스트로부터 수신된 데이터 량을 서로 다른 적어도 두 기간 동안 누적하여 카운트한 값인 것을 특징으로 하는 반도체 저장장치.
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. .
제11항에 있어서, 상기 데이터 량은
상기 명령에 포함된 상기 데이터량을 나타내는 섹터 카운트 값을 카운트 함으로써 카운트되는 것을 특징으로 하는 반도체 저장장치.
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.
제8 항에 있어서, 상기 반도체 저장장치는
상기 둘 이상의 워크로드 데이터를 저장하기 위한 워크로드 데이터 저장부를 더 구비하는 반도체 저장장치.
The method of claim 8, wherein the semiconductor storage device
And a workload data storage unit for storing the two or more workload data.
제13 항에 있어서, 상기 반도체 저장장치는
성능 조절 플래그 및 초기 성능 레벨을 저장하기 위한 저장부를 더 구비하며,
상기 수집된 워크로드 데이터가 미리 정해진 기준을 만족하지 못하는 경우, 상기 초기 성능 레벨을 유지하는 반도체 저장장치.
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.
제13 항에 있어서,
상기 워크로드 데이터의 초기값은 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.
제8 항에 있어서, 상기 성능 레벨은
쓰기 성능 레벨이며,
단위시간당 처리된 쓰기 명령의 수, 단위 시간당 기록된 데이터 량, 또는 복수의 레벨값 중 어느 하나로 표시되는 반도체 저장장치.
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.
제8항에 있어서, 상기 반도체 저장장치는
솔리드 스테이트 드라이브(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.
제8항의 반도체 저장 장치:
호스트; 및
상기 반도체 저장 장치가 장착되며, 상기 호스트와 상기 반도체 저장장치 사이에 접속되어 상기 호스트의 제어에 따라 상기 반도체 저장 장치를 제어하는 컨트롤러 카드를 구비하는 전자 시스템.
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.
제20 항에 있어서, 상기 둘 이상의 워크로드 데이터 각각은
호스트로부터 상기 반도체 저장장치에 인가된 쓰기 명령의 수, 상기 호스트로부터 상기 반도체 저장장치에 인가된 읽기 명령의 수, 상기 쓰기 명령에 응답하여 상기 호스트로부터 수신한 데이터 량, 또는 상기 읽기 명령에 응답하여 상기 호스트로 전송한 데이터 량을 카운트한 값을 포함하는 반도체 저장장치의 성능 조절 방법.
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.
제21항에 있어서, 상기 둘 이상의 워크로드 데이터는
제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.
제22 항에 있어서,
상기 제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.
제23 항에 있어서, 상기 미리 정해진 이벤트 시점은
상기 반도체 저장장치의 조립 완료, 파워-온, 팩토리 리셋 인가, 및 호스트로부터의 특정 커맨드 수신, 및 성능 조절 인에이블 시점 중 적어도 하나를 포함하는 반도체 저장장치의 성능 조절 방법.
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.
제20항에 있어서, 상기 방법은
상기 워크로드 데이터를 수집하는 단계 이전에 상기 반도체 저장장치의 초기 성능 레벨이 설정되는 단계를 더 구비하는 반도체 저장장치의 성능 조절 방법.
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.
제25항에 있어서, 상기 방법은
상기 수집된 워크로드 데이터가 미리 정해진 기준을 만족하지 못하는 경우, 상기 초기 성능 레벨을 유지하는 단계를 더 구비하는 반도체 저장장치의 성능 조절 방법.
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.
제26항에 있어서, 상기 초기 성능 레벨은
상기 호스트로부터 인가되는 소정의 명령에 응답하여 설정되거나 또는 상기 반도체 저장 장치의 내부에 미리 설정되는 것을 특징으로 하는 성능 조절 방법.
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.
제20항에 있어서, 상기 방법은
상기 워크로드 데이터를 수집하는 단계 이전에 상기 반도체 저장장치에 가상 워크로드 히스토리가 설정되는 단계를 더 구비하는 반도체 저장장치의 성능 조절 방법.
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.
제20항에 있어서, 상기 방법은
호스트로부터 인가되는 성능 조절 인에이블 명령을 수신하는 단계를 더 구비하며,
상기 워크로드 데이터를 수집하는 단계는 상기 성능 조절 인에이블 명령에 응답하여 시작되는 반도체 저장장치의 성능 조절 방법.
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.
KR1020100080697A 2010-08-20 2010-08-20 Semiconductor storage device and method for throttling performance of the semiconductor storage device Active KR101756130B1 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (4)

* Cited by examiner, † Cited by third party
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