[go: up one dir, main page]

KR102798787B1 - Storage device and method for storage device characteristics self monitoring - Google Patents

Storage device and method for storage device characteristics self monitoring Download PDF

Info

Publication number
KR102798787B1
KR102798787B1 KR1020200112852A KR20200112852A KR102798787B1 KR 102798787 B1 KR102798787 B1 KR 102798787B1 KR 1020200112852 A KR1020200112852 A KR 1020200112852A KR 20200112852 A KR20200112852 A KR 20200112852A KR 102798787 B1 KR102798787 B1 KR 102798787B1
Authority
KR
South Korea
Prior art keywords
storage device
profiling
storage
command
ssd
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.)
Active
Application number
KR1020200112852A
Other languages
Korean (ko)
Other versions
KR20210052199A (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
Priority claimed from US16/667,340 external-priority patent/US11194517B2/en
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20210052199A publication Critical patent/KR20210052199A/en
Application granted granted Critical
Publication of KR102798787B1 publication Critical patent/KR102798787B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3034Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)

Abstract

스토리지 디바이스는 애플리케이션들을 포함하는 애플리케이션 컨테이너 - 애플리케이션들 각각은 하나 이상의 네임스페이스들에서 실행됨 -; 데이터를 저장하는 플래시 메모리; 스토리지 디바이스와 호스트 머신 사이에 통신을 관리하는 호스트 인터페이스; 호스트 머신으로부터 수신되는 제1 어드레스를 플래시 메모리의 제2 어드레스로 변환하는 플래시 변환 계층; 플래시 메모리 내 제2 어드레스로부터 데이터를 액세스하는 플래시 인터페이스; 인-스토리지 모니터링 엔진을 포함하는 다형성 디바이스 커널을 포함한다. 다형성 디바이스 커널은 복수의 패킷들을 스토리지 디바이스 상에서 실행되는 애플리케이션에서 수신하고, 복수의 패킷들과 관련된 네임스페이스에 기초하여 플래시 인터페이스를 제공한다. 인-스토리지 모니터링 엔진은 성능 테이블 내 호스트 머신으로부터 수신된 프로파일링 명령의 매칭의 적어도 일부에 기초하여 런-타임으로 스토리지 디바이스의 동적 특성을 결정한다.A storage device includes an application container including applications, each of the applications executing in one or more namespaces; a flash memory storing data; a host interface managing communication between the storage device and a host machine; a flash translation layer translating a first address received from the host machine into a second address in the flash memory; a flash interface accessing data from the second address in the flash memory; and a polymorphic device kernel including an in-storage monitoring engine. The polymorphic device kernel receives a plurality of packets from an application executing on the storage device and provides the flash interface based on a namespace associated with the plurality of packets. The in-storage monitoring engine determines dynamic characteristics of the storage device at run-time based at least in part on matching of profiling commands received from the host machine in a performance table.

Description

스토리지 디바이스 특성 셀프 모니터링을 위한 스토리지 디바이스 및 방법{STORAGE DEVICE AND METHOD FOR STORAGE DEVICE CHARACTERISTICS SELF MONITORING}{STORAGE DEVICE AND METHOD FOR STORAGE DEVICE CHARACTERISTICS SELF MONITORING}

본 개시의 실시예들은 일반적 으로 솔리드 스테이트 드라이브(SSD: solid state drive), 보다 구체적으로 SSD 내부로부터 SSD 특성을 결정하는 것에 관한 것이다.Embodiments of the present disclosure relate generally to solid state drives (SSDs), and more specifically to determining SSD characteristics from within an SSD.

스토리지 디바이스, 특히 SSD (Solid State Drive)는 시간이 지남에 따라 지속적으로 변화하는 특성을 나타낸다. SSD는 SSD 내부에 잠재적인(underlying) 소프트웨어 (예를 들면, 펌웨어) 및/또는 하드웨어로 인해 예측할 수 없는 레이턴시(latency) 및/또는 대역폭을 가질 수 있다. 예를 들면, NAND 플래시 메모리는 읽기/쓰기 오류로 인해 읽기/쓰기 레이턴시가 더 길어질 수 있다.  셀 마모로 인한 연장된 액세스 레이턴시(읽기/프로그램/삭제)는 또한 레이턴시 및/또는 대역폭에 영향을 줄 수 있다. SSD 리소스의 가상 추상화, 즉, 다형성 SSD, 오픈-채널 SSD, 및 lightNVM(오픈-채널 SSD를 지원하는 서브시스템)과 같은 다양한 접근 방식은 SSD의 성능 특성을 예측하기 어렵게 만든다. 마지막으로, 싱글 레벨 셀(SLC: Single Level Cell), 멀티 레벨 셀(MLC: Multi-Level Cell), 스리-레벨 셀(TLC: Three Level Cell) 및 쿼드 레벨 셀(QLC: Quadruple Level Cell)과 같은 상이한 셀 밀도들은 서로 상이한 특성을 가질 수 있다.Storage devices, particularly Solid State Drives (SSDs), exhibit characteristics that continually change over time. SSDs may have unpredictable latency and/or bandwidth due to underlying software (e.g., firmware) and/or hardware within the SSD. For example, NAND flash memory may exhibit longer read/write latencies due to read/write errors. Extended access latencies (read/program/erase) due to cell wear can also impact latency and/or bandwidth. Virtual abstraction of SSD resources, i.e., various approaches such as polymorphic SSD, open-channel SSD, and lightNVM (a subsystem that supports open-channel SSD), make it difficult to predict SSD performance characteristics. Finally, different cell densities, such as Single Level Cell (SLC), Multi-Level Cell (MLC), Three Level Cell (TLC), and Quadruple Level Cell (QLC), may have different characteristics.

따라서 동적 레이턴시 및 대역폭 모니터링/프로파일링은 잠재적으로 롱-테일(long-tail) 레이턴시에 영향을 줄 수 있는 예상치 못한 레이턴시를 감소하기 위하여 데이터센터에서 유용하다. 측정이 종종 복잡하기 때문에 이러한 향상된 성능을 달성하는 것은 매우 어려운 일이다. 예를 들면, 측정 지점들을 랜덤하게 선택함에 의해서 피팅 곡선을 근사화하는 것은 많은 측정을 필요로 할 뿐만 아니라 어느 정도의 보장된 성능을 보증하는 것이 매우 어렵다.Therefore, dynamic latency and bandwidth monitoring/profiling is useful in data centers to reduce unexpected latency that can potentially affect long-tail latency. Achieving such improved performance is very difficult because measurements are often complex. For example, approximating a fitting curve by randomly selecting measurement points not only requires a lot of measurements, but also makes it very difficult to guarantee some guaranteed performance.

말하자면, 다바이스는 그 자체로 최고의 지식을 가지고 있다. 즉, 디바이스의 구조적인 구성이 포화 대역폭에 기여하는 것에 대한 많은 힌트를 제공한다. 예를 들면, NAND 채널의 수, 컨트롤러의 수, 명령 큐 깊이, 큐의 수가 신뢰할 수 있는 성능 데이터를 획득하기 위한 요청의 수 또는 측정의 지연을 예측하기 위한 힌트들일 수 있다. 그러나, SSD 외부의 디바이스는 이 정보에 대한 의미있는 액세스를 가질 수 없다. In other words, the device has the best knowledge itself. That is, it provides many hints about how the device's architectural configuration contributes to the saturation bandwidth. For example, the number of NAND channels, the number of controllers, the command queue depth, and the number of queues can be hints for predicting the number of requests or the delay of measurements to obtain reliable performance data. However, devices outside the SSD do not have meaningful access to this information.

SSD가 SSD 외부의 디바이스에 프로파일링 정보를 제공 할 수 있는 방법이 필요하다.There needs to be a way for the SSD to provide profiling information to devices external to the SSD.

본 개시의 실시예들에 따른 과제는 스토리지 디바이스 내부에서 스토리지 디바이스의 특성을 결정할 수 있는 스토리지 디바이스 특성 셀프 모니터링을 위한 스토리지 디바이스 및 방법을 제공하는데 있다.An object of the present disclosure is to provide a storage device and method for self-monitoring of storage device characteristics capable of determining characteristics of the storage device within the storage device.

본 개시의 일실시예에 따르면, 스토리지 디바이스는 하나 이상의 애플리케이션들을 포함하는 애플리케이션 컨테이너 - 상기 하나 이상의 애플리케이션들 각각은 하나 이상의 네임스페이스들에서 실행됨 -; 데이터를 저장하는 플래시 메모리; 스토리지 디바이스와 호스트 머신 사이에 통신을 관리하는 호스트 인터페이스; 상기 호스트 머신으로부터 수신된 제1 어드레스를 상기 플래시 메모리의 제2 어드레스를 변환하는 플래시 변환 계층; 상기 플래시 메모리의 상기 제2 어드레스로부터 상기 데이터를 액세스하는 플래시 인터페이스; 및 인-스토리지 모니터링 엔진을 포함하는 상기 스토리지 디바이스 내에 구현된 다형성 디바이스 커널을 포함하고, 상기 다형성 디바이스 커널은 복수의 패킷들을 상기 스토리지 디바이스 상에서 실행되는 상기 애플리케이션에서 수신하고, 상기 복수의 패킷들과 관련된 상기 네임스페이스에 기초하여 상기 플래시 인터페이스를 제공하고, 상기 인-스토리지 모니터링 엔진은 성능 테이블 내 상기 호스트 머신으로부터 수신된 프로파일링 명령의 매칭의 적어도 일부에 기초하여 런-타임으로 상기 스토리지 디바이스의 동적 특성을 결정하고, 상기 동적 특성은 상기 스토리지 디바이스의 레이턴시, 대역폭, 보유, 라이트 증폭 팩터(WAF), 초당 트랜잭션(TPS), 및 큐잉 레이턴시를 포함하는 세트로부터 도출된다.According to one embodiment of the present disclosure, a storage device comprises: an application container including one or more applications, each of the one or more applications executing in one or more namespaces; a flash memory storing data; a host interface managing communication between the storage device and a host machine; a flash translation layer translating a first address received from the host machine into a second address of the flash memory; a flash interface accessing the data from the second address of the flash memory; And a polymorphic device kernel implemented within the storage device including an in-storage monitoring engine, wherein the polymorphic device kernel receives a plurality of packets from the application running on the storage device, and provides the flash interface based on the namespace associated with the plurality of packets, and the in-storage monitoring engine determines a dynamic characteristic of the storage device at run-time based on at least a portion of a matching of profiling commands received from the host machine in a performance table, the dynamic characteristic being derived from a set including latency, bandwidth, retention, write amplification factor (WAF), transactions per second (TPS), and queuing latency of the storage device.

본 개시의 일실시예에 따르면, 방법은 스토리지 디바이스의 애플리케이션 컨테이너 내에 하나 이상의 애플리케이션들을 저장하고, - 상기 하나 이상의 애플리케이션들 각각은 하나 이상의 네임스페이스들에서 실행됨 -; 호스트 인터페이스를 통하여 호스트 머신으로부터 복수의 패킷들을 수신하고; 상기 복수의 패킷들과 관련된 네임스페이스에 기초하여 플래시 인터페이스를 통하여 상기 애플리케이션 컨테이너 내의 애플리케이션으로 상기 복수의 패킷들을 라우팅하기 위하여 상기 스토리지 디바이스 상에 구현된 다형성 스토리지 디바이스 커널을 실행하고, 성능 테이블 내 상기 호스트 머신으로부터 수신된 프로파일링 명령의 매칭의 적어도 일부에 기초하여 런-타임으로 상기 스토리지 디바이스의 동적 특성을 결정하기 위하여 인-스토리지 모니터링 엔진을 실행하는 것을 포함하고, 상기 동적 특성은 상기 스토리지 디바이스의 레이턴시, 대역폭, 보유, 라이트 증폭 팩터(WAF), 초당 트랜잭션(TPS), 및 큐잉 레이턴시를 포함하는 세트로부터 도출된다.According to one embodiment of the present disclosure, a method comprises storing one or more applications within an application container of a storage device, each of the one or more applications executing in one or more namespaces; receiving a plurality of packets from a host machine via a host interface; executing a polymorphic storage device kernel implemented on the storage device to route the plurality of packets to applications within the application container via a flash interface based on namespaces associated with the plurality of packets; and executing an in-storage monitoring engine to determine a dynamic characteristic of the storage device at run-time based at least in part on matching of profiling commands received from the host machine within a performance table, the dynamic characteristic being derived from a set comprising latency, bandwidth, retention, write amplification factor (WAF), transactions per second (TPS), and queuing latency of the storage device.

본 개시의 실시예들의 특징, 양태, 및 이점은 아래의 상세한 설명, 첨부된 청구범위, 및 첨부된 도면을 참조하여 보다 완전하게 이해될 것이다. 물론, 본 발명의 실질적인 범위는 첨부된 청구범위에 의해서 정의된다.The features, aspects, and advantages of the embodiments of the present disclosure will be more fully understood by reference to the detailed description below, the appended claims, and the accompanying drawings. Of course, the actual scope of the present invention is defined by the appended claims.

본 개시의 실시예들에 따르면, 스토리지 디바이스 내부에서 스토리지 디바이스의 특성을 결정할 수 있다.According to embodiments of the present disclosure, it is possible to determine characteristics of a storage device within the storage device.

또한, 본 개시의 실시예들에 따르면, 스토리지 디바이스가 외부의 디바이스에 스토리지 디바이스의 특성과 같은 프로파일링 정보를 제공할 수 있다.Additionally, according to embodiments of the present disclosure, a storage device can provide profiling information, such as characteristics of the storage device, to an external device.

도 1은 클라이언트 머신과 통신하는 다양한 호스트 머신들을 가지는 데이터센터를 도시한다.
도 2는 본 개시의 실시예에 따른 도 1의 호스트 머신의 상세를 도시한다.
도 3은 도 1의 호스트 머신의 추가 상세를 도시하다.
도 4는 본 개시의 실시예에 따른 도 2의 솔리드 스테이트 드라이브(SSD: solid state drive)의 상세를 도시한다.
도 5는 본 개시의 실시예에 따른 도 2의 SSD의 상세를 도시한다.
도 6은 도 2의 SSD 내에서 측정될 수 있는 다양한 특성들을 도시한다.
도 7a, 및 도 7b는 본 개시의 실시예에 따른 도 6의 특성들을 측정하는 상이한 방법들을 도시한다.
도 8은 도 4의 인-스토리지 모니터링 엔진의 구조를 도시한다.
도 9a 및 도 9b는 본 개시의 실시예에 따른 도 4 및 도 5의 특성들을 결정하기 위하여 도 4의 인-스토리지 모니터링 엔진을 사용하는 절차의 플로우차트를 도시한다.
도 10은 본 개시의 실시예에 따른 도 4의 인-스토리지 모니터링 엔진을 사용하여 프로파일링 명령을 수행할 때 사용하는 프로파일링 명령 및 선택적 데이터를 수신하는 절차의 플로우차드를 도시한다.
도 11은 도 2의 SSD의 상이한 특성들을 결정하기 위한 절차의 플로우차트를 도시한다.
도 12는 본 개시의 실시예에 따른 다형성 SSD의 펌웨어 스택을 도시한다.
Figure 1 illustrates a data center having various host machines communicating with client machines.
FIG. 2 illustrates details of the host machine of FIG. 1 according to an embodiment of the present disclosure.
Figure 3 illustrates additional details of the host machine of Figure 1.
FIG. 4 illustrates details of a solid state drive (SSD) of FIG. 2 according to an embodiment of the present disclosure.
FIG. 5 illustrates details of the SSD of FIG. 2 according to an embodiment of the present disclosure.
Figure 6 illustrates various characteristics that can be measured within the SSD of Figure 2.
FIGS. 7A and 7B illustrate different methods of measuring the characteristics of FIG. 6 according to embodiments of the present disclosure.
Figure 8 illustrates the structure of the in-storage monitoring engine of Figure 4.
FIGS. 9A and 9B illustrate a flowchart of a procedure for using the in-storage monitoring engine of FIG. 4 to determine the characteristics of FIGS. 4 and 5 according to an embodiment of the present disclosure.
FIG. 10 illustrates a flowchart of a procedure for receiving a profiling command and optional data used when performing a profiling command using the in-storage monitoring engine of FIG. 4 according to an embodiment of the present disclosure.
Figure 11 illustrates a flow chart of a procedure for determining different characteristics of the SSD of Figure 2.
FIG. 12 illustrates a firmware stack of a polymorphic SSD according to an embodiment of the present disclosure.

참조는 본 개시의 실시예들, 첨부된 도면들에 도시된 예들에 대하여 상세하게 만들어질 것이다. 다음의 상세한 설명에서, 본 개시를 완전히 이해할 수 있도록 다수의 특정 세부 사항이 설명된다. 당업자는 이러한 특정 세부 사항없이 본 개시를 실시할 수 있을 것이라는 것을 이해해야 한다. 다른 예에서, 잘 알려진 방법, 절차, 컴포넌트, 회로 및 네트워크는 실시예들의 양태들을 불필요하게 모호하지 않게 하기 위하여 상세하게 설명되지 않았다. Reference will now be made in detail to embodiments of the present disclosure, examples of which are illustrated in the accompanying drawings. In the following detailed description, numerous specific details are set forth so that the present disclosure may be fully understood. It should be understood that one skilled in the art may practice the present disclosure without these specific details. In other instances, well-known methods, procedures, components, circuits, and networks have not been described in detail so as not to unnecessarily obscure aspects of the embodiments.

제 1, 제 2 등의 용어는 본 명세서에서 다양한 요소를 설명하기 위해 사용될 수 있지만, 이들 요소는 이들 용어에 의해 제한되지 않아야 한다는 것이 이해될 것이다. 이러한 용어는 하나의 요소를 다른 요소와 구별하기 위해서만 사용된다. 예를 들어, 제 1 모듈은 제 2 모듈로 지칭될 수 있고, 유사하게, 제 2 모듈은 본 발명의 범주를 벗어나지 않으면 서 제 1 모듈로 지칭될 수 있다.It will be appreciated that while the terms first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first module may be referred to as a second module, and similarly, a second module may be referred to as a first module without departing from the scope of the present invention.

본 명세서에서 본 개시의 설명에 사용된 용어는 특정 실시예를 설명하기 한 것이며 본 개시를 제한하고자 하는 것은 아니다. 본 개시의 상세한 설명 및 첨부된 청구항들에서 사용된 바와 같이, 단수 형태("a", "an" 및 "the")는 문맥 상 명백하게 다르게 나타내지 않는 한 복수 형태도 포함하도록 의도된다. 본원에 사용된 용어 "및/또는"은 하나 이상의 관련된 열거된 항목의 임의의 및 모든 가능한 조합을 지칭하고 포함하는 것으로 이해될 것이다. 본원에서 사용될 때 용어 "포함하다" 및/또는 "포함하는"은 언급된 특징, 정수, 단계, 연산, 요소 및/또는 구성 요소의 존재를 명시하지만 하나 이상의 다른 특징, 정수, 단계, 연산, 요소, 구성 요소 및/또는 이들의 그룹의 존재 또는 추가를 배제하지는 않는다는 것을 이해할 것이다. 도면의 구성 요소 및 특징은 반드시 축척대로(스케일대로) 그려지지 않는다.The terminology used herein to describe the present disclosure is for the purpose of describing particular embodiments only and is not intended to be limiting of the present disclosure. As used in this description and the appended claims, the singular forms "a," "an," and "the" are intended to include the plural referents as well, unless the context clearly dictates otherwise. The term "and/or," as used herein, will be understood to refer to and encompass any and all possible combinations of one or more of the associated listed items. It will be understood that the terms "comprises" and/or "comprising," as used herein, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof. Components and features in the drawings are not necessarily drawn to scale.

스토리지 디바이스 특성들은 이전 보다 더 복잡하다: 이기종 성능, 시변 성능, 및 스토리지 디바이스의 상이한 활용으로 인해서 액세스 레이턴시/대역폭 등이 변화한다. 이러한 다양성을 모델링하려는 많은 노력이 있었지만 이러한 모델들은 성공하지 못했다. 대신, 지속적인 프로파일링/모니터링 접근 방식은 역사적으로 보다 신뢰할 수 있고, 성능 예측 또는 롱-테일 레이턴시 분석 및 예방이 가능한 것으로 입증되었다.Storage device characteristics are more complex than ever: heterogeneous performance, time-varying performance, and different utilization of storage devices, resulting in varying access latency/bandwidth. Many efforts have been made to model this diversity, but these models have not been successful. Instead, continuous profiling/monitoring approaches have historically proven more reliable and capable of predicting performance or analyzing and preventing long-tail latency.

기존 스토리지 디바이스 분석에는 두 가지 근본적인 문제가 있다. 첫째, 중요한 이벤트 또는 정보가 스토리지 디바이스 내부에 숨겨져 있을 수 있다. 둘째, 사전 정보가 없는 성능 특성 분석은 예측을 어렵게 만든다.There are two fundamental problems with traditional storage device analysis. First, important events or information may be hidden inside the storage device. Second, performance characteristic analysis without prior information makes prediction difficult.

본 개시의 실시예는 새로운 스토리지 디바이스 특징: 셀프 모니터링/프로파일링 엔진(본원에서 인-스토리지 모니터링 엔진으로 지칭 됨)을 포함할 수 있다. 인-스토리지 모니터링 엔진은 스토리지 디바이스 내부에서 적절한 프로파일링 절차를 생성할 수 있다. 새로운 벤더(vendor) 명령을 사용하여 물리적 스토리지 디바이스에 구현된 가상 스토리지 디바이스에 원하는 정보를 보낼 수 있다. 호스트 머신은 단일 명령을 전송하여 디바이스 성능을 프로파일링/모니터링 할 수 있다. 한편, 스토리지 디바이스는 명령에 기초하여 프로파일링 벡터를 생성할 수 있다. 이 접근 방식은 호스트 머신과 스토리지 장치 사이의 불필요한 데이터 전송을 줄일 뿐만 아니라 성능을 측정하기 위해 데이터가 아닌 결과만 제공함으로써 효율성을 향상시킨다.Embodiments of the present disclosure may include a novel storage device feature: a self-monitoring/profiling engine (referred to herein as an in-storage monitoring engine). The in-storage monitoring engine may generate appropriate profiling procedures within the storage device. The new vendor commands may be used to send desired information to a virtual storage device implemented in the physical storage device. The host machine may profile/monitor the device performance by sending a single command. Meanwhile, the storage device may generate profiling vectors based on the command. This approach not only reduces unnecessary data transfer between the host machine and the storage device, but also improves efficiency by providing only results, not data, for measuring performance.

또한, 스토리지 디바이스는 에러 정정 코드(ECC: Error Correcting Code), 읽기/쓰기 재시도, 단일-레벨 셀(SLC:Single-Level Cell)/멀티-레벨 셀(MLC: Multi-Level Cell) 모드 변경 등과 같은 특성 변화를 검출할 수 있다. 인-스토리지 모니터링 엔진은 새로운 성능 데이터를 성능 테이블의 데이터와 비교할 수 있다. 성능 테이블은 인-스토리지 모니터링 엔진의 과거 성능에 대한 정보를 저장하고 필요한 경우 성능 보고를 업데이트할 수 있다.Additionally, the storage device can detect changes in characteristics such as Error Correcting Code (ECC), read/write retries, and single-level cell (SLC)/multi-level cell (MLC) mode changes. The in-storage monitoring engine can compare new performance data with data in the performance table. The performance table stores information about the past performance of the in-storage monitoring engine and can update the performance report if necessary.

인-스토리지 모니터링 엔진은 프로파일링 명령을 구문 분석하고 프로파일링 벡터를 생성할 수 있다. 호스트 머신은 모니터링/프로파일링을 시작하기 위해 새로운 벤더 명령을 보낼 수 있다.The in-storage monitoring engine can parse profiling commands and generate profiling vectors. The host machine can send a new vendor command to start monitoring/profiling.

호스트 요구 사항에 따라 인-스토리지 모니터링 엔진은 다른 계층에서 레이턴시/대역폭을 측정할 수 있다. 예를 들면, 도 7a 및 도 7b를 참조하여 아래에 논의되는 바와 같이, 모니터링은 임의의 플래시 변환 계층(FTL: Flash Translation Layer)에 의해 유발된 레이턴시/대역폭을 포함할 수 있거나, 모니터링은 FTL을 바이패스할 수 있다. 모니터링이 어드레스 변환 계층(ATL: Address Translation Layer), 가비지 콜렉션(GC: Garbage Collection) 및 웨어 레벨링(WL: Wear Leveling)으로 인한 지연을 피할 수 있으므로 FTL을 바이패스하면 스토리지 디바이스에서 예기치 않은 성능을 제거 할 수 있다. 이러한 측정 계층은 명령에 명시적으로 지정되거나 (ATL, GC, WL 정보를 포함하는 스토리지 구성을 포함하는) 가상 스토리지 테이블에서 검색될 수 있다Depending on the host requirements, the in-storage monitoring engine may measure latency/bandwidth at different layers. For example, as discussed below with reference to FIGS. 7A and 7B , the monitoring may include latency/bandwidth caused by any Flash Translation Layer (FTL), or the monitoring may bypass the FTL. Bypassing the FTL may eliminate unexpected performance from the storage device, since the monitoring may avoid delays caused by the Address Translation Layer (ATL), Garbage Collection (GC), and Wear Leveling (WL). These measurement layers may be explicitly specified in the command or retrieved from the virtual storage table (which includes the storage configuration including ATL, GC, and WL information).

제안된 프로파일링/모니터링 엔진의 구현은 도 8을 참조하여 아래에서 더 논의된다. 도시된 바와 같이, 디코더는 프로파일링/모니터링 명령을 검출하면 인-스토리지 모니터링 엔진의 명령 큐에 명령을 전송한다. 성능 특성화(characterization)에는 (마이크로 초에서 몇 분까지) 비교적 긴 시간이 걸릴 수 있으므로, 큐에 계류중인 복수개의 명령들이 있을 수 있고, 각 명령에 지정된 우선 순위에 따라 하나의 명령이 선점될 수 있다.An implementation of the proposed profiling/monitoring engine is further discussed below with reference to Fig. 8. As illustrated, when the decoder detects a profiling/monitoring command, it sends the command to a command queue of the in-storage monitoring engine. Since performance characterization may take a relatively long time (from microseconds to minutes), there may be multiple commands pending in the queue, and one command may be preempted based on the priority assigned to each command.

가상 스토리지 테이블은 (특정 물리적 스토리지 디바이스에서 상이한 가상 스토리지 디바이스를 구별 할 수 있는) 가상 스토리지 ID를 저장할 수 있다. 가상 스토리지 테이블은 물리적 스토리지 디바이스의 메인 컨트롤러에 의해 유지되는 테이블의 사본이거나 공유 레지스터일 수 있다. 성능 테이블은 가상 스토리지 ID와 관련된 이전 성능-특성화 히스토리를 저장할 수 있다.The virtual storage table can store virtual storage IDs (which can distinguish different virtual storage devices on a particular physical storage device). The virtual storage table can be a copy of a table maintained by the main controller of the physical storage device or can be a shared register. The performance table can store previous performance-characterization history associated with the virtual storage IDs.

프로파일링 코드 레지스터는 스토리지 성능을 특성화하기 위한 연산 벡터를 포함할 수 있다. 프로파일링 코드 레지스터는 셀프-생성되거나 사용자가 프로그램가능할 수 있다. 예를 들면, 레이턴시 특성은 대부분의 경우 요청 크기(즉, 4KB 읽기, 8KB 읽기 등)와 관련된 선형 함수를 나타낸다. 따라서, 성능 특성화는 다른 방식으로 수행될 수 있다. 호스트 머신 또는 사용자 애플리케이션은 정확한 측정 지점들을 지정하지 않고 디바이스에 쿼리를 보낼 수 있다. 이 경우, 프로파일링 코드 레지스터는 측정/프로파일링 지점들을 생성할 수 있다. 또는, 호스트 머신 또는 애플리케이션이 명령내에 측정 지점들을 지정할 수 있다.The profiling code register may contain an operation vector for characterizing the storage performance. The profiling code register may be self-generated or user programmable. For example, the latency characteristic is in most cases a linear function with respect to the request size (i.e., 4KB read, 8KB read, etc.). Therefore, the performance characterization may be performed in different ways. The host machine or user application may query the device without specifying the exact measurement points. In this case, the profiling code register may generate the measurement/profiling points. Alternatively, the host machine or application may specify the measurement points in the command.

프로파일링 코드 레지스터는 대역폭 예측과 같은 다른 성능 특성을 보고하는 데 중요한 역할을 할 수 있다. 요청 크기에 따라 선형적으로 확장되는 레이턴시와 달리 대역폭은 일반적으로 포화 지점을 가지는 로그 모양의 곡선을 나타낸다. 따라서, 대역폭은 레이턴시보다 측정하기가 더 복잡하다. 프로파일링 코드 레지스터는 벤더가 제공한 우선순위 정보 또는 머신 러닝 기술을 이용하여 획득한 정보에 의해 측정 지점들의 작거나 효과적인 세트를 유지할 수 있다. 이러한 모든 상세 정보는 스토리지 디바이스 내부에 숨겨져 있어 관련 성능 지표(metrics)으로 가상 스토리지 디바이스를 쉽게 추출할 수 있다.The profiling code register can play an important role in reporting other performance characteristics, such as bandwidth prediction. Unlike latency, which scales linearly with request size, bandwidth typically follows a logarithmic curve with a saturation point. Therefore, bandwidth is more complex to measure than latency. The profiling code register can maintain a small or efficient set of measurement points, based on vendor-provided priority information or information obtained using machine learning techniques. All these details are hidden inside the storage device, making it easy to extract the virtual storage device with relevant performance metrics.

호스트 머신 또는 애플리케이션이 프로파일링 정보를 요청할 수 있도록 새로운 벤더 명령들이 제공될 수 있다. 이러한 벤더 명령들에는 새로운 OP 코드, 동작 형태 및 요청 크기 배열과 같은 입력들, 및 출력이 포함될 수 있다.New vendor commands may be provided to allow a host machine or application to request profiling information. These vendor commands may include inputs such as new OP codes, action types, and request size arrays, and outputs.

도 1은 클라이언트 머신과 통신하는 다양한 호스트 머신들을 갖는 데이터센터를 도시한다. 도 1에서, 데이터센터(105)는 호스트 머신들(110, 115, 120, 125 및 130)을 포함하는 것으로 도시되어 있다. 호스트 머신들 (110, 115, 120, 125 및 130)에 대한보다 상세는 도 2 및 도 3을 참조하여 도시된다. 데이터센터(105)는 또한 호스트 머신들(110, 115, 120, 125 및 130)이 서로 통신하고, 클라이언트 머신(140)과 통신할 수 있게 하는 네트워크(135)를 포함 할 수 있다. 네트워크(135)는 근거리 통신망(LAN: Local Area Network) 또는 광역 네트워크(WAN: Wide Area Network)을 포함하는 임의의 다양한 네트워크일 수 있다. 네트워크(135)는 이더넷(Ethernet)과 같은 유선 기술, IEEE 802.11 a/b/g/n/ac 또는 이와 동등한 또는 대체 기술과 같은 무선 기술, 또는 이 둘의 조합을 사용할 수 있다. 또한, 도 1은 호스트 머신들(110, 115, 120, 125 및 130)이 단일 지리적 영역 내에 위치하는 것을 제안하지만, 본 개시의 다른 실시예들에서, 호스트 머신들(110, 115, 120, 125 및 130)은 인터넷과 같은 글로벌 네트워크 (VPN (Virtual Private Network)와 같은 오버레이 네트워크)를 사용하여 지리적으로 분산되고 상호 접속될 수 있다.FIG. 1 illustrates a data center having various host machines communicating with client machines. In FIG. 1, the data center (105) is illustrated as including host machines (110, 115, 120, 125, and 130). Further details regarding the host machines (110, 115, 120, 125, and 130) are illustrated with reference to FIGS. 2 and 3. The data center (105) may also include a network (135) that allows the host machines (110, 115, 120, 125, and 130) to communicate with each other and with the client machines (140). The network (135) may be any of a variety of networks, including a Local Area Network (LAN) or a Wide Area Network (WAN). The network (135) may use a wired technology such as Ethernet, a wireless technology such as IEEE 802.11 a/b/g/n/ac or an equivalent or alternative technology, or a combination of the two. Additionally, while FIG. 1 suggests that the host machines (110, 115, 120, 125, and 130) are located within a single geographic area, in other embodiments of the present disclosure, the host machines (110, 115, 120, 125, and 130) may be geographically dispersed and interconnected using a global network such as the Internet (or an overlay network such as a Virtual Private Network (VPN)).

도 1은 호스트 머신들(110, 115, 120, 125, 및 130)이 동일한 것으로, 모두 타워 컴퓨터들인 것을 도시하지만, 본 개시의 실시예들은 모두 다른 호스트 머신들(110, 115, 120, 125, 및 130)을 위한 임의의 원하는 포맷들을 지원할 수 있다. 예를 들면, 일부 호스트 머신들(110, 115, 120, 125, 및 130)은 다양한 모델들 및 제조의 타워 컴퓨터들일 수 있고, 다른 호스트 머신들(110, 115, 120, 125, 및 130)은 다양한 모델들 및 제조의 랙-마운트(rack-mounted) 서버들일 수 있다. 상이한 호스트 머신들(110, 115, 120, 125, 및 130)은 프로세서 능력, 가용 메모리, 및 가용 스토리지에 있어서 상이한 능력을 가지고, 모두 다양한 포맷을 가질 수 있다. 예를 들면, 일부 호스트 머신들(110, 115, 120, 125, 및 130)은 디램(DRAM: Dynamic Access Memory)를 사용하는 반면, 다른 머신들은 피램(PRAM: Persistent Random Access Memory), 에스램(SRAM: Static Random Access Memory), 에프램(FRAM: Ferroelectric Random)을 사용할 수 있다. FRAM (Access Memory), 또는 엠램(MRAM: Magnetosistive Random Access Memory)과 같은 비휘발성 랜덤 억세스 메모리(NVRAM: Non-Volatile Random Access Memory)를 사용할 수 있다. 마찬가지로, 일부 호스트 머신들(110, 115, 120, 125 및 130)은 스토리지로 기존의 하드 디스크 드라이브를 사용하는 반면, 다른 호스트 머신들은 플래시 메모리(다양한 NVRAM) 또는 MRAM을 사용할 수 있다. 여기에 열거되든 아니든 다른 가능성들도 본 개시의 범위 내에 있다.Although FIG. 1 illustrates that the host machines (110, 115, 120, 125, and 130) are all identical, tower computers, embodiments of the present disclosure may support any desired formats for other host machines (110, 115, 120, 125, and 130). For example, some of the host machines (110, 115, 120, 125, and 130) may be tower computers of various models and makes, and other host machines (110, 115, 120, 125, and 130) may be rack-mounted servers of various models and makes. The different host machines (110, 115, 120, 125, and 130) may have different capabilities in terms of processor power, available memory, and available storage, and may all have different formats. For example, some of the host machines (110, 115, 120, 125, and 130) may use Dynamic Access Memory (DRAM), while others may use Persistent Random Access Memory (PRAM), Static Random Access Memory (SRAM), Ferroelectric Random Access Memory (FRAM), or Non-Volatile Random Access Memory (NVRAM), such as Magnetosistive Random Access Memory (MRAM). Similarly, some host machines (110, 115, 120, 125, and 130) may use conventional hard disk drives for storage, while others may use flash memory (various NVRAMs) or MRAM. Other possibilities, whether listed herein or not, are within the scope of the present disclosure.

위에서 언급된 바와 같이, 호스트 머신들(110, 115, 120, 125 및 130)은 모두 본질적으로 동일하고 상호교환 가능하다. 따라서, 본원의 나머지 부분에서 호스트 머신(110)에 대한 어떠한 언급은 제한없이 호스트 머신들(110, 115, 120, 125 및 130) 중 임의의 및 모든 것을 포함하는 것으로 의도된다.As noted above, the host machines (110, 115, 120, 125 and 130) are all essentially identical and interchangeable. Accordingly, any reference to the host machine (110) in the remainder of this application is intended to include any and all of the host machines (110, 115, 120, 125 and 130) without limitation.

도 1은 모니터, 키보드 및 마우스를 구비한 종래의 미니타워 컴퓨터 시스템으로서 클라이언트 머신(140)을 도시하며, 클라이언트 머신(140)은 랩톱(laptop) 컴퓨터, 태블릿 컴퓨터, 스마트폰 및 임의의 다른 원하는 기술 포맷을 포함하는 임의의 원하는 형태를 가질 수 있다. 또한, 도 1은 단일 클라이언트 머신(140)을 도시하지만, 본 개시의 실시예는 임의의 수의 클라이언트 머신(140)을 동시에 지원할 수 있다.FIG. 1 illustrates a client machine (140) as a conventional mini-tower computer system having a monitor, keyboard and mouse, wherein the client machine (140) may have any desired form factor including a laptop computer, a tablet computer, a smart phone and any other desired technology format. Additionally, while FIG. 1 illustrates a single client machine (140), embodiments of the present disclosure may support any number of client machines (140) simultaneously.

도 2는 본 개시의 실시예에 따른 도 1의 호스트 머신(110)의 상세를 도시한다. 도 2에서, 호스트 머신(110)은 프로세서(205) (중앙 처리 장치 (CPU)로도 지칭됨), 메모리(210), 네트워크 커넥터(215) 및 솔리드 스테이트 드라이브(SSD)(220)를 포함하는 것으로 도시되어 있다. 프로세서(205)는 임의의 다양한 프로세서 일 수 있다: 예를 들면, Intel Xeon, Celeron, Itanium 또는 Atom 프로세서, AMD Opteron 프로세서, ARM 프로세서 등일 수 있다. 상술한 바와 같이, 메모리(210)는 플래시 메모리, SRAM, PRAM 등과 같은 임의의 다양한 메모리일 수 있고, 그러나, 일반적으로 DRAM이다. 네트워크 커넥터(215)는 호스트 머신(110)을 도 1의 네트워크(135)에 연결할 수 있는 임의의 다양한 커넥터일 수 있다: 예를 들면, 이더넷 인터페이스 또는 무선 인터페이스일 수 있다. SSD(220)는 본 개시에서 설명된 바와 같이 동작하도록 적용된 임의의 다양한 SSD일 수 있다. 호스트 머신(110)이 SSD(220)를 포함하는 것으로 도시되어 있지만, 본 개시의 실시예는 레이턴시, 대역폭 및 다른 동작 특성이 일반적으로 정적 정의를 갖는 임의의 스토리지 디바이스의 사용을 지원할 수 있다.FIG. 2 illustrates details of the host machine (110) of FIG. 1 according to an embodiment of the present disclosure. In FIG. 2, the host machine (110) is illustrated as including a processor (205) (also referred to as a central processing unit (CPU)), memory (210), a network connector (215), and a solid state drive (SSD) (220). The processor (205) may be any of a variety of processors: for example, an Intel Xeon, Celeron, Itanium or Atom processor, an AMD Opteron processor, an ARM processor, etc. As noted above, the memory (210) may be any of a variety of memory, such as flash memory, SRAM, PRAM, etc., but is typically DRAM. The network connector (215) may be any of a variety of connectors that can connect the host machine (110) to the network (135) of FIG. 1: for example, an Ethernet interface or a wireless interface. The SSD (220) may be any of a variety of SSDs adapted to operate as described in the present disclosure. While the host machine (110) is illustrated as including an SSD (220), embodiments of the present disclosure may support the use of any storage device whose latency, bandwidth, and other operational characteristics are generally statically defined.

도 3은 도 1의 호스트 머신(110)의 추가 상세를 도시한다. 도 3을 참조하면, 일반적으로, 호스트 머신 또는 머신들(110)은 호스트 머신 또는 머신들(110)의 컴포넌트들의 동작들을 조정하는데 사용될 수 있는 메모리 제어기(305) 및 클록(310)을 포함할 수 있는 하나 이상의 프로세서들(205)을 포함한다. 프로세서들(205)은 또한 메모리(210)에 연결될 수 있고, 메모리(210)는 램(RAM: Random Access Memory), 롬(ROM: Read Only Memory), 또는 다른 상태 보존 매체를 포함할 수 있다. 프로세서(205)는 또한 스토리지 디바이스(220) 및 네트워크 커넥터(315)에 연결될 수 있으며, 예를 들면, 네트워크 커넥터(315)는 이더넷 커넥터 또는 무선 커넥터일 수 있다. 프로세서(205)는 또한 다른 구성 요소들 중에서 입력/출력 엔진(330)을 사용하여 관리될 수 있는 사용자 인터페이스(325) 및 입력/출력 인터페이스 포트들에 부착될 수 있는 버스(320)에 연결될 수 있다.FIG. 3 illustrates additional details of the host machine (110) of FIG. 1. Referring to FIG. 3, generally, the host machine or machines (110) include one or more processors (205), which may include a memory controller (305) and a clock (310) that may be used to coordinate operations of components of the host machine or machines (110). The processors (205) may also be coupled to memory (210), which may include Random Access Memory (RAM), Read Only Memory (ROM), or other stateful media. The processor (205) may also be coupled to a storage device (220) and a network connector (315), which may be, for example, an Ethernet connector or a wireless connector. The processor (205) may also be connected to a bus (320) that may be attached to a user interface (325) and input/output interface ports that may be managed using, among other components, an input/output engine (330).

도 4는 본 개시의 실시예에 따른 도 2의 SSD(220)의 상세를 도시한다. 도 4에서, SSD(220)는 호스트 머신(110)에 (동작 또는 데이터와 같은) 정보를 송신 및 수신하기 위한 회로(405)를 포함할 수 있다. SSD(220)는 SSD 제어기(410) 및 스토리지 메모리(415)를 포함하며, 플래시 메모리일 수 있다. SSD 제어기(410)는 SSD(220)의 동작을 제어할 수 있다. 스토리지 메모리(415)는 도 1의 호스트 머신(110) 및 클라이언트 머신(140)을 포함하는 다양한 컴퓨터에 의해 사용되는 데이터를 저장할 수 있다.FIG. 4 illustrates details of an SSD (220) of FIG. 2 according to an embodiment of the present disclosure. In FIG. 4, the SSD (220) may include circuitry (405) for transmitting and receiving information (such as operations or data) to a host machine (110). The SSD (220) includes an SSD controller (410) and a storage memory (415), which may be a flash memory. The SSD controller (410) may control operations of the SSD (220). The storage memory (415) may store data used by various computers, including the host machine (110) and the client machine (140) of FIG. 1.

SSD 제어기(410)는 다른 구성 요소들 중에서 호스트 인터페이스 (420), 인-스토리지 모니터링 엔진(425), 플래시 변환 계층(FTL: Flash Translation Layer)(430), 에러 정정 코드(ECC: Error Correcting Code)(435) 및 플래시 인터페이스(440)를 포함할 수 있다. 호스트 인터페이스(420)는 SSD(220)와 도 1의 호스트 머신(110) 사이의 통신을 관리할 수 있다. 도 6 내지 도 8을 참조하여 아래에 더 설명되는 인-스토리지 모니터링 엔진(425)은 SSD(220)의 특성을 프로파일링하기 위하여 SSD(220)의 모니터링을 수행할 수 있다. FTL(430)은 (도 1의 호스트 머신 (110)에 의해 사용되는 것으로) 논리적 블록 어드레스(LBA)와 플래시 메모리(415) 내 물리적 블록 어드레스(PBA) 사이의 변환을 수행할 수 있다. ECC(435)는 스토리지 메모리(415)의 마모로 인한 데이터 손상 및/또는 오류에 대한 보호를 제공하기 위해 에러 정정 코드를 사용할 수 있다. 플래시 인터페이스(440)는 플래시 메모리(415)로부터의 데이터의 액세스(리드 및 라이트)를 관리할 수 있다.The SSD controller (410) may include, among other components, a host interface (420), an in-storage monitoring engine (425), a Flash Translation Layer (FTL) (430), an Error Correcting Code (ECC) (435), and a flash interface (440). The host interface (420) may manage communication between the SSD (220) and the host machine (110) of FIG. 1. The in-storage monitoring engine (425), which is further described below with reference to FIGS. 6 to 8, may monitor the SSD (220) to profile the characteristics of the SSD (220). The FTL (430) may perform translation between a logical block address (LBA) (used by the host machine (110) of FIG. 1) and a physical block address (PBA) within the flash memory (415). ECC (435) may use error correction code to provide protection against data corruption and/or errors due to wear of storage memory (415). Flash interface (440) may manage access (read and write) of data from flash memory (415).

도 4에서, SSD(220)는 단일 인터페이스를 사용하는 SSD를 나타낼 수 있다. 즉, SSD(220)는 동작하지만 모든 애플리케이션에서 동일하게 동작할 수 있다. 예를 들면, SSD(220)는 종래의 파일 저장소, 객체 저장소, 또는 키-값 저장소를 제공할 수 있다: 그러나, 그것이 어는 것이든 간에, 도 4의 SSD(220)는 하나의 인터페이스로 제한된다. (이것은 SSD(220)가 다수의 가상 스토리지 디바이스들을 보유할 수 없는 것을 의미하는 것은 아니지만, 도 4에 도시된 바와 같이 모든 가상 스토리지 디바이스들이 동일한 인터페이스를 사용한다.) 그러나, 본 개시의 다른 실시예에서, SSD(220)는 복수의 상이한 인터페이스들을 지원할 수 있다. 본 개시의 이러한 실시예에서, SSD(220)는 다형성 SSD일 수 있다. In FIG. 4, SSD (220) can represent an SSD that uses a single interface. That is, SSD (220) can operate but can operate identically across all applications. For example, SSD (220) can provide a conventional file store, an object store, or a key-value store: however, whatever it may be, SSD (220) of FIG. 4 is limited to a single interface. (This does not mean that SSD (220) cannot have multiple virtual storage devices, but as shown in FIG. 4, all virtual storage devices use the same interface.) However, in other embodiments of the present disclosure, SSD (220) can support multiple different interfaces. In such embodiments of the present disclosure, SSD (220) can be a polymorphic SSD.

도 5는 본 개시의 실시예에 따른 도 2의 SSD(220)의 상세를 도시한다.FIG. 5 illustrates details of the SSD (220) of FIG. 2 according to an embodiment of the present disclosure.

SSD(220)가 플래시 메모리를 사용하는 대신에 다른 스토리지 디바이스 기술, 예를 들면, 하드 디스크 드라이브로 대체되는 본 개시의 실시예에서, 스토리지 메모리(415)는 디스크에 저장된 자기 비트와 같은 다른 기술을 사용할 수 있다. 스토리지 디바이스의 다른 부분에서도 대응하는 변경이 이루어질 수 있다. 예를 들면, FTL(430)은 FTL(430)과 유사한 기능을 갖지만 다르게 구현될 수 있는 변환 계층(430)으로 대체될 수 있고, 플래시 인터페이스(440)는 스토리지 메모리(415)로부터 데이터에 억세스하기 위해 일부 다른 스토리지 인터페이스(440)로 대체될 수 있다. 그러나, 본원의 나머지 부분에서, 스토리지 디바이스로서 SSD(220)를 사용하는 맥락에서, 스토리지 메모리(415)는 플래시 메모리(415)로 지칭될 것이다.In embodiments of the present disclosure where the SSD (220) is replaced with another storage device technology, such as a hard disk drive, instead of using flash memory, the storage memory (415) may use another technology, such as magnetic bits stored on a disk. Corresponding changes may also be made in other parts of the storage device. For example, the FTL (430) may be replaced with a translation layer (430) that has similar functionality to the FTL (430) but may be implemented differently, and the flash interface (440) may be replaced with some other storage interface (440) for accessing data from the storage memory (415). However, in the remainder of this disclosure, in the context of using the SSD (220) as the storage device, the storage memory (415) will be referred to as flash memory (415).

도 5에서, SSD(220)는 다형성 SSD로 도시되어 있다. 다형성 SSD는 2016년 4월 19일 출원된 미국 특허 출원 번호 15/133,085에 추가로 기술되어 있으며, 이는 2015년 10월 7일 출원된 미국 임시(가) 특허 출원 번호 62/238,659 및 2016년 6월 20일자로 출원된 미국 임시(가) 특허 출원 번호 62/352,509호로부터 우선권을 주장하며, 이들 모두는 본원에 참조로 포함될 수 있다. SSD(220)는 여전히 호스트 머신(110)에 정보(예컨대 동작 또는 데이터)를 송신하고 수신하기 위한 회로(405)를 포함한다. SSD(220)는 도 5의 일부 또는 모두를 포함할 수 있는 (도 5에 도시되지 않은) 도 4의 SSD 제어기(410)를 또한 포함할 수 있다.In FIG. 5, the SSD (220) is illustrated as a polymorphic SSD. Polymorphic SSDs are further described in U.S. Patent Application No. 15/133,085, filed April 19, 2016, which claims priority from U.S. Provisional Patent Application No. 62/238,659, filed October 7, 2015 and U.S. Provisional Patent Application No. 62/352,509, filed June 20, 2016, all of which are incorporated herein by reference. The SSD (220) still includes circuitry (405) for transmitting and receiving information (e.g., operations or data) to the host machine (110). The SSD (220) may also include the SSD controller (410) of FIG. 4 (not shown in FIG. 5), which may include some or all of FIG. 5.

SSD(220)는 애플리케이션들(505, 510, 515, 및 520)을 포함할 수 있다. 이러한 애플리케이션들은 (인-스토리지 컴퓨팅으로 칭할 수 있는) SSD(220) 내에 프로세서들(525, 530, 535, 및 540)에서 실행될 수 있다. 메모리(545)는 프로세서들(525, 530, 535, 및 540)을 지원할 수 있다. 메모리(545)는 상술된 것과 같은 메모리의 임의의 원하는 형태일 수 있으나, 일반적으로는 DRAM이다. 도 5가 4개의 프로세서들(525, 530, 535, 및 540) 및 4개의 애플리케이션들(505, 510, 515, 및 520)을 포함하는 것으로 도시되어 있으나, 본 개시의 실시예들은 임의의 개수의 프로세서들 및 임의의 개수의 애플리케이션들을 지원할 수 있고, 상이한 개수의 프로세서들 및 애플리케이션들일 수 있다. 예를 들면, SSD(220)는 16개의 애플리케이션들을 실행하는 8개의 프로세서들을 포함할 수 있다.The SSD (220) may include applications (505, 510, 515, and 520). These applications may be executed on processors (525, 530, 535, and 540) within the SSD (220) (which may be referred to as in-storage computing). Memory (545) may support the processors (525, 530, 535, and 540). Memory (545) may be any desired form of memory as described above, but is typically DRAM. Although FIG. 5 is illustrated as including four processors (525, 530, 535, and 540) and four applications (505, 510, 515, and 520), embodiments of the present disclosure can support any number of processors and any number of applications, and can include different numbers of processors and applications. For example, SSD (220) can include eight processors executing sixteen applications.

각 애플리케이션(505, 510, 515, 또는 520)은 상이한 인터페이스를 사용하여 동작할 수 있다. 예를 들면, 애플리케이션(505)은 기존의 파일 스토아를 사용할 수 있고, 반면에, 애플리케이션(510)은 객체 스토아를 사용하고, 애플리케이션(515)은 키-값 스토아를 사용할 수 있다. 이러한 상이한 인터페이스들을 지원하기 위하여 SSD(220)는 각 애플리케이션을 위하여 상이한 다형성 인터페이스 계층(PIL)(550, 555, 560, 및 565)를 포함할 수 있다. PIL들(550, 555, 560, 및 565)은 애플리케이션들이 원하는 인터페이스를 사용하여 애플리케션들과 다형성 디바이스 커널(570) 사이에 인터페이스를 제공할 수 있다. 다형성 디바이스 커널(570)은 애플리케이션들(505, 510, 515, 및 520)에 의해서 사용되는 특정 인터페이스에 따라 애플리케이션들(505, 510, 515, 및 520)에 또는 문제의 인스트럭션에 따라 플래시 메모리(415)에 적절한 프로세서들(525, 530, 535, 및 540)로 인스트럭션들을 발생할 수 있다.Each application (505, 510, 515, or 520) may operate using a different interface. For example, application (505) may use a conventional file store, whereas application (510) may use an object store, and application (515) may use a key-value store. To support these different interfaces, SSD (220) may include a different polymorphic interface layer (PIL) (550, 555, 560, and 565) for each application. The PILs (550, 555, 560, and 565) may provide an interface between the applications and the polymorphic device kernel (570) using the interface desired by the applications. The polymorphic device kernel (570) can issue instructions to the applications (505, 510, 515, and 520) or to appropriate processors (525, 530, 535, and 540) depending on the particular interface used by the applications (505, 510, 515, and 520) or to flash memory (415) depending on the instruction in question.

도 5가 프로세서들(525, 530, 535, 및 540)에서 실행되는 애플리케이션들(505, 510, 515, 및 520)을 도시하는 반면에, 본 개시의 다른 실시예에 따르면, 애플리케이션들(505, 510, 515, 및 520)은 도 1의 호스트 머신들(110) 내의 도 2의 프로세서(205)와 같은 프로세서에서 실행될 수 있다. (다양한 인터페이스들로부터의 변환이 도 1의 호스트 머신(110)에서 일어나지 않는 것을 가정하면) 애플리케이션들(505, 510, 515, 및 520)은 단순하게 SSD(220) 내의 적절한 PIL(550, 555, 560, 및 565)과 통신할 필요가 있다.While FIG. 5 illustrates applications (505, 510, 515, and 520) executing on processors (525, 530, 535, and 540), in accordance with other embodiments of the present disclosure, applications (505, 510, 515, and 520) may execute on a processor, such as processor (205) of FIG. 2, within the host machines (110) of FIG. 1. (Assuming no translation from the various interfaces occurs in the host machine (110) of FIG. 1) The applications (505, 510, 515, and 520) need simply communicate with the appropriate PIL (550, 555, 560, and 565) within the SSD (220).

각 상이한 인터페이스가 상이한 방식으로 SSD(220) 내의 데이터를 액세스할 수 있기 때문에, 하드웨어 추상화 계층(575)은 물리적 하드웨어가 상이한 인터페이스를 어떻게 구현할 수 있는지를 추상화할 수 있다. 예를 들어, 기존의 파일 스토아와 키-값 스토아를 비교하고 대조하면, 애플리케이션들이 기존 파일 스토아를 사용할 때, 어플리케이션들은 블록 리드 및 라이트 인스트럭션들을 발생할 수 있다. 이와 같은 기존 파일 스토아 동작에 대해, 하드웨어 추상화 계층(575)은 애플리케이션들(505, 510, 515, 및 520) 내의 LBA들을 플래시 메모리(415)의 PBA로 변환하는 도 4의 FTL(430)과 매우 유사하게 동작할 수 있다. 그러나, 키-값 스토아들을 사용하는 애플리케이션들은 키들과 관련된 get 및 put 명령들을 발생한다. 키들 자체는 LBA들이 아니고, 오히려 해당 값과 관련된 고유 식별자이다. 키-값 쌍을 저장하는 객체는 플래시 메모리(415) 내의 어느 곳에도 존재할 수 있다. 키-값 스토아를 사용하는 애플리케이션들에 대해, 하드웨어 추상화 계층(575)은 키를 플래시 메모리(415)의 PBA로 변환할 수 있다.Since different interfaces may access data within the SSD (220) in different ways, the hardware abstraction layer (575) can abstract how the physical hardware may implement the different interfaces. For example, comparing and contrasting a traditional file store with a key-value store, when applications use a traditional file store, the applications may issue block read and write instructions. For such traditional file store operations, the hardware abstraction layer (575) may operate very similarly to the FTL (430) of FIG. 4, which translates LBAs within the applications (505, 510, 515, and 520) into PBAs in the flash memory (415). However, applications using key-value stores issue get and put commands associated with the keys. The keys themselves are not LBAs, but rather unique identifiers associated with the corresponding values. The object that stores the key-value pairs can exist anywhere within the flash memory (415). For applications that use a key-value store, the hardware abstraction layer (575) can convert the key to a PBA in flash memory (415).

문제는 SSD의 특성이 변할 수 있기 때문에 발생할 수 있다. 예를 들면, SSD의 레이턴시와 대역폭이 모든 환경에서 일정하지 않는가? 대답은 2가지 이유로 아니다. 하나의 이유는 인-스토리지 컴퓨팅에서 애플리케이션의 동작이고 다른 하나의 이유는 도 5의 SSD(220)와 같은 다형성 SSD들의 사용이다.The problem can arise because the characteristics of SSDs can vary. For example, are the latency and bandwidth of SSDs not constant across all environments? The answer is no for two reasons. One reason is the behavior of applications in in-storage computing, and the other reason is the use of polymorphic SSDs such as SSD (220) of Fig. 5.

SSD(220)가 단일 인터페이스를 사용하여 스토리지 디바이스로서 엄격하게 동작하면, SSD(220)의 특성이 변경되지 않을 것을 기대할 수 있다. 그러나, 애플리케이션들이 인-스토리지 컴퓨팅에서 실행되면, 애플리케이션들이 SSD(220)에서 동일 인터페이스를 사용할 때 조차도, SSD(220)의 컴퓨팅 파워의 일부는 애플리케이션들을 관리하는데 제공된다. 애플리케이션들을 관리함에 의해서 SSD(220)가 "산만해(distracted)"지면, SSD(220)는 데이터 요청을 처리하는 데 더 적은 시간을 사용할 수 있다. 지정된 간격으로 처리되는 데이터 요청 수가 적을수록 데이터 요청을 처리하는데 필요한 시간이 증가하여 레이턴시가 증가될 수 있다. 유사하게 애플리케이션들을 관리함에 의해서 SSD(220)가 "산만해"지면 대역폭이 감소될 수 있다.If the SSD (220) operates strictly as a storage device using a single interface, one can expect that the characteristics of the SSD (220) will not change. However, when applications are run in-storage computing, some of the computing power of the SSD (220) is provided to managing the applications, even when the applications use the same interface on the SSD (220). If the SSD (220) is "distracted" by managing the applications, the SSD (220) may spend less time processing data requests. The fewer data requests that are processed in a given interval, the more time is required to process data requests, which may increase latency. Similarly, if the SSD (220) is "distracted" by managing the applications, bandwidth may be reduced.

SSD(220)가 다형성 SSD일 때, 상황이 더 복잡해질 수 있다. 플래시 메모리(415)로부터 데이터를 리드하고 및/또는 플래시 메모리(415)로 데이터를 라이트하기 위하여 애플리케이션의 원래의 언어를 명령들로 변환하는데 요구되는 시간은 변할 수 있으며, 이는 SSD(220)의 레이턴시 및 대역폭에 영향을 미칠 수 있다. 즉, 데이터 요청을 SSD(220)에 의해서 처리될 수 있는 명령으로 변환하는데 요구되는 시간은 실행 중인 애플리케이션들의 수 및 그들이 사용하는 인터페이스에 따라 변할 수 있으며, 결과적으로 SSD(220)의 동작 동안 시간에 따라 특성이 변할 수 있다. 본 개시의 실시예들은 SSD(220)의 현재의 특성을 결정하는 문제에 대한 기술적 솔루션을 제공하고, 기존 솔루션들 보다 보다 정확하게 수행할 수 있다.When the SSD (220) is a polymorphic SSD, the situation can become more complicated. The time required to translate the original language of an application into commands to read data from and/or write data to the flash memory (415) can vary, which can affect the latency and bandwidth of the SSD (220). That is, the time required to translate a data request into a command that can be processed by the SSD (220) can vary depending on the number of running applications and the interfaces they use, resulting in characteristics that can change over time during the operation of the SSD (220). Embodiments of the present disclosure provide a technical solution to the problem of determining the current characteristics of the SSD (220), and can perform more accurately than existing solutions.

도 6은 도 2의 SSD(220) 내에서 측정될 수 있는 다양한 특성 중 일부를 도시한다. 예를 들어, 이러한 특성들은 레이턴시(605), 대역폭(610) 및 보유(retention)(615), 라이트 증폭 팩터(WAF: write amplification factor)(620), 초당 트랜잭션(TPS)(625) 및 큐잉 레이턴시(630) 중 하나 이상을 포함할 수 있다. 레이턴시(605)는 데이터 요청을 완료하는데 필요한 시간의 양을 나타낼 수 있다. 예상될 수 있듯이, 데이터 요청이 클수록 도 2의 SSD(220)가 데이터 요청을 완료하는데 필요한 시간이 증가될 수 있다. 레이턴시는 도 5를 참조하여 상술된 것처럼 명령을 변환하는데 필요한 시간의 양 및/또는 마모된 셀들이 시간이 지남에 따라 어떻게 변하는지에 의존할 수 있다. 대역폭(610)은 도 2의 SSD(220)는 주어진 시간 단위로 송신하거나 수신할 수 있는 최대 데이터 양을 나타낼 수 있다. 그리고, 보유(610)는 도 2의 SSD(220) 내에 데이터가 얼마나 오랫동안 보유되는지를 나타낼 수 있다. WAF(620)는 호스트의 플래시 제어기가 라이트해야하는 데이터의 양과 관련하여 SSD 제어기가 라이트해야하는 데이터의 양을 나타낼 수 있다. TPS(625)는 단위 시간, 예를 들면, 초 당 수신되는 트랜잭션을 나타낼 수 있다. 큐잉 레이턴시(630)는 작업이 실행될 수 있을 때까지 큐 내에 작업이 대기하는 시간을 나타낼 수 있다.FIG. 6 illustrates some of the various characteristics that may be measured within the SSD (220) of FIG. 2. For example, these characteristics may include one or more of latency (605), bandwidth (610), retention (615), write amplification factor (WAF) (620), transactions per second (TPS) (625), and queuing latency (630). Latency (605) may represent the amount of time required to complete a data request. As can be expected, larger data requests may increase the amount of time required for the SSD (220) of FIG. 2 to complete the data request. Latency may depend on the amount of time required to convert a command and/or how worn out cells change over time, as described above with reference to FIG. 5. Bandwidth (610) may represent the maximum amount of data that the SSD (220) of FIG. 2 can transmit or receive in a given unit of time. And, retention (610) can indicate how long data is retained in the SSD (220) of FIG. 2. WAF (620) can indicate the amount of data that the SSD controller should write in relation to the amount of data that the flash controller of the host should write. TPS (625) can indicate a unit of time, for example, transactions received per second. Queuing latency (630) can indicate the time that a task waits in a queue until the task can be executed.

도 7a 및 도 7b는 본 개시의 실시예에 따른 도 6의 특성들(605, 610, 및/또는 615)을 측정하는 상이한 방법들을 도시한다. 도 7a에서, 특성들(605, 610, 및/또는 615)은 다형성 디바이스 커널(570), (애플리케이션과 플래시 인터페이스(440) 사이의 인터페이스를 관리하는) 가상 플래시 인터페이스(710), 및 플래시 인터페이스(440)로 인한 특성을 측정할 뿐만 아니라 애플리케이션(505)의 모든 결과들을 고려하는 측정(705)으로서 측정될 수 있다. 예를 들면, 애플리케이션(505)은 도 2의 SSD(220) 내의 가상 스토리지 디바이스를 사용하고 내부적으로 플래시 변환 계층을 관리할 수 있다. 이와 같이, 도 7a에서, 측정(705)은 ATL, GC, 및 WL로 인한 지연들을 포함할 수 있는 애플리케이션의 내부 FTL의 결과들을 포함할 수 있다.FIGS. 7A and 7B illustrate different methods of measuring the characteristics (605, 610, and/or 615) of FIG. 6 according to embodiments of the present disclosure. In FIG. 7A , the characteristics (605, 610, and/or 615) can be measured as measurements (705) that take into account all results of the application (505) as well as the characteristics due to the polymorphic device kernel (570), the virtual flash interface (710) (which manages the interface between the application and the flash interface (440), and the flash interface (440). For example, the application (505) may use a virtual storage device within the SSD (220) of FIG. 2 and manage a flash translation layer internally. As such, in FIG. 7A , the measurements (705) may include results of the application's internal FTL, which may include delays due to ATL, GC, and WL.

대안적으로, 도 7b에서, 측정(715)은 애플리케이션의 결과들을 고려하지 않고 취해질 수 있다. 측정(715)은 다형성 디바이스 커널(570), 가상 플래시 인터페이스(710), 및 플래시 인터페이스(440) 만 고려할 수 있다.Alternatively, in FIG. 7b, the measurement (715) can be taken without considering the results of the application. The measurement (715) can only consider the polymorphic device kernel (570), the virtual flash interface (710), and the flash interface (440).

도 7a 및 7b는 요청 크기들(720 및 725)을 포함하는 측정(705 및 715)을 도시한다. 특성은 특성을 완전히 결정하기 위해 상이한 요청 크기를 사용하여 측정될 수 있다. 예를 들면, 상술한 바와 같이, 도 6의 레이턴시(605)는 종종 요청 크기의 선형 함수이다. 요청 크기가 2개인 경우, 도 6의 레이턴시(605)는 요청 크기의 범위에 대해 허용가능한 정확도로 보간/외삽될(interpolated/extrapolated) 수 있다. 한편, 도 6의 대역폭(610)은 일반적으로 선형 함수가 아니라 로그와 비슷한 곡선이다. 대역폭과 요청 크기 사이의 관계를 근사화할 수 있는 함수를 생성하려면 두 개 이상의 데이터 지점들이 필요할 수 있으므로 두 개 이상의 요청 크기들(720, 725)이 필요하다. 따라서, 특성을 측정하기 위해 사용된 요청 크기들(720, 725)의 수는 측정되는 특성에 따라 변할 수 있음을 알 수 있다. 요청 크기들(720, 725)은 도 4의 인-스토리지 모니터링 엔진(425)에 의해 생성되거나, 도 1의 호스트 머신(110)이 특성 측정을 요청할 때 도 1의 호스트 머신(110)에 의해 제공될 수 있다.Figures 7a and 7b illustrate measurements (705 and 715) that include request sizes (720 and 725). A characteristic may be measured using different request sizes to fully determine the characteristic. For example, as described above, the latency (605) of Figure 6 is often a linear function of the request size. For a two-request size, the latency (605) of Figure 6 may be interpolated/extrapolated with acceptable accuracy over a range of request sizes. On the other hand, the bandwidth (610) of Figure 6 is typically not a linear function but rather a logarithmic curve. Since more than two data points may be needed to generate a function that approximates the relationship between bandwidth and request size, more than two request sizes (720, 725) are needed. Thus, it can be seen that the number of request sizes (720, 725) used to measure a characteristic may vary depending on the characteristic being measured. The request sizes (720, 725) may be generated by the in-storage monitoring engine (425) of FIG. 4 or may be provided by the host machine (110) of FIG. 1 when the host machine (110) of FIG. 1 requests a characteristic measurement.

도 8은 도 4의 인-스토리지 모니터링 엔진의 구조를 도시한다. 도 8에서, op 큐(805)는 명령을 수신할 수 있다. 이들 명령은 프로파일링 명령 및 도 2의 SSD(220)에 대한 다른 명령을 모두 포함할 수 있다: 예를 들면, 리드 및/또는 라이트 명령을 포함할 수 있다. 디코더(810)는 어떤 명령이 수신되었는지를 판단할 수 있다. 수신된 명령이 프로파일링 명령으로 디코딩되면, 프로파일링 명령은 인-스토리지 모니터링 엔진(425) 내의 명령 큐(815)로 전달될 수 있다. 프로파일링 명령을 실행하는 데는 비교적 긴 시간, 예를 들면, 마이크로 초 내지 분이 걸릴 수 있다: 결과적으로, 인-스토리지 모니터링 엔진(425)은 계류 중인 다수의 명령을 가질 수 있다.FIG. 8 illustrates the structure of the in-storage monitoring engine of FIG. 4. In FIG. 8, an op queue (805) can receive commands. These commands can include both profiling commands and other commands for the SSD (220) of FIG. 2: for example, read and/or write commands. A decoder (810) can determine which command has been received. Once the received command is decoded as a profiling command, the profiling command can be passed to a command queue (815) within the in-storage monitoring engine (425). Executing a profiling command can take a relatively long time, for example, microseconds to minutes: as a result, the in-storage monitoring engine (425) can have a large number of pending commands.

인-스토리지 모니터링 엔진(425)이 한 번에 매우 많은 프로파일링 명령을 수행할 수 있다고 가정하면, 인-스토리지 모니터링 엔진(425)은 병렬로 처리할 수 있는 것보다 더 많은 프로파일링 명령을 수행하도록 요청될 수 있다. 이 문제를 해결하기 위해, 각 프로파일링 명령은 또한 연관된 *?*우선 순위를 가질 수 있으며, 우선 순위는 프로파일링 명령이 처음 제시될 때 도 1의 애플리케이션(145) 또는 도 1의 호스트 머신(110)에 의해 지정될 수 있다. 인-스토리지 모니터링 엔진(425)이 처리할 수 있는 것보다 더 많은 프로파일링 명령을 처리하도록 요청되면, 인-스토리지 모니터링 엔진(425)은 가장 낮은 우선 순위의 프로파일링 명령을 판단하고 이를 거부하여, 요청자에게 프로파일링 명령을 수행할 수 없음을 통지할 수 있다. 대안적으로, 모든 프로파일링 명령을 고려하는 대신에, 인-스토리지 모니터링 엔진(425)은 그들의 가상 스토리지 디바이스에 기초하여 프로파일링 명령을 구성할 수 있고, 새로 수신된 프로파일링 명령과 관련된 가상 스토리지 디바이스와 관련된 최저 우선 순위 프로파일링 명령을 제거할 수 있다.Assuming that the in-storage monitoring engine (425) can perform a very large number of profiling commands at one time, the in-storage monitoring engine (425) may be requested to perform more profiling commands than it can process in parallel. To address this issue, each profiling command may also have an associated *?* priority, which may be specified by the application (145) of FIG. 1 or the host machine (110) of FIG. 1 when the profiling command is first presented. If the in-storage monitoring engine (425) is requested to process more profiling commands than it can process, the in-storage monitoring engine (425) may determine the lowest priority profiling command and reject it, notifying the requester that the profiling command cannot be performed. Alternatively, instead of considering all profiling commands, the in-storage monitoring engine (425) can construct profiling commands based on their virtual storage devices and remove the lowest priority profiling command associated with the virtual storage device associated with the newly received profiling command.

명령 큐(805) 내 명령으로부터의 정보를 사용하여, 벡터는 프로파일링 코드 레지스터(820)로부터 액세스될 수 있다. 예를 들면, 프로파일링 코드 레지스터(820)로부터의 벡터는 도 6의 레이턴시(605)에 대해 도 2의 SSD(220)를 프로파일링하는데 필요한 특정 코드를 포함할 수 있다. 상술한 바와 같이, 도 1의 호스트 머신(110)은 도 7a 및 도 7b의 요청 크기들(720, 725)을 지정할 수 있고, 또는 도 1의 호스트 머신(110)은 인-스토리지 모니터링 엔진(425)이 도 7a 및 도 7b의 요청 크기들(720, 725)을 결정하도록 할 수 있다. 만일 명령이 도 7a 및 도 7b의 요청 크기들(720, 725)를 지정하지 않으면, 도 7a 및 7b의 요청 크기들(720, 725)은 프로파일링 코드 레지스터(820) 내 벡터로부터 결정될 수 있다. 도 7a 및 도 7b의 요청 크기들(720, 725)의 값들은 본 개시의 실시예들에 따라, 차체 생성되거나, 벤더에 의해 미리 설정되거나, 사용자 구성 가능할 수 있다.Using information from a command in the command queue (805), a vector can be accessed from the profiling code register (820). For example, the vector from the profiling code register (820) may include specific code necessary to profile the SSD (220) of FIG. 2 for the latency (605) of FIG. 6. As described above, the host machine (110) of FIG. 1 may specify the request sizes (720, 725) of FIGS. 7A and 7B, or the host machine (110) of FIG. 1 may cause the in-storage monitoring engine (425) to determine the request sizes (720, 725) of FIGS. 7A and 7B. If the command does not specify the request sizes (720, 725) of FIGS. 7A and 7B, the request sizes (720, 725) of FIGS. 7A and 7B may be determined from a vector in the profiling code register (820). The values of the request sizes (720, 725) of FIGS. 7A and 7B may be body generated, vendor preset, or user configurable, according to embodiments of the present disclosure.

가상 스토리지 테이블(825)은 다양한 상이한 가상 스토리지 디바이스들에 대한 식별자들을 도 2의 SSD(220)에 저장할 수 있다. 가상 스토리지 테이블(825)은 도 4의 SSD 제어기(410)에 저장된 것과 유사한 정보를 저장하고, 도 4의 SSD 제어기(410)의 정보를 복사하거나 정보를 공유할 수 있다.The virtual storage table (825) can store identifiers for various different virtual storage devices in the SSD (220) of FIG. 2. The virtual storage table (825) can store information similar to that stored in the SSD controller (410) of FIG. 4, and can copy information or share information of the SSD controller (410) of FIG. 4.

성능 테이블(830)은 가상 스토리지 식별자들에 대한 과거의 프로파일링 명령에 관한 정보를 저장할 수 있다. 이미 수행된 가상 스토리지 디바이스에 대한 프로파일링 명령이 요청되고 프로파일링 명령이 수행되었기 때문에 도 2의 SSD(220)의 특성이 심각하게 변경되지 않았다면, 인-스토리지 모니터링 엔진(425)은 성능 테이블(830)로부터 저장된 특성을 액세스하고 그 정보를 도 1의 호스트 머신(110)으로 리턴할 수 있다.The performance table (830) can store information about past profiling commands for virtual storage identifiers. If a profiling command for a virtual storage device that has already been performed is requested and the characteristics of the SSD (220) of FIG. 2 have not changed significantly because the profiling command has been performed, the in-storage monitoring engine (425) can access the stored characteristics from the performance table (830) and return the information to the host machine (110) of FIG. 1.

성능 테이블(830)이 가상 스토리지 디바이스의 특성을 저장하지 않으면, 프로파일링 명령이 마지막으로 수행된 이 후에 도 2의 SSD(220)의 특성이 변경되지 않았거나, 가상 스토리지 디바이스에 대하여 이전에 도 2의 SSD(22)가 프로파일링되지 않았기 때문에 인-스토리지 모니터링 엔진(425)은 프로파일링 스테이션(835)을 사용하여 가상 스토리지 디바이스를 프로파일링할 수 있다. 이벤트 트리거(840) 및/또는 타이머 인터럽트는 다양한 프로파일링 명령을 시작 또는 종료할 때를 관리하는데 사용될 수 있다. 프로파일링 스테이션(835)의 결과들은 추후 사용을 위해 성능 테이블(830)에 저장될 수 있다.If the performance table (830) does not store the characteristics of the virtual storage device, either because the characteristics of the SSD (220) of FIG. 2 have not changed since the last time the profiling command was performed, or because the SSD (22) of FIG. 2 has not been previously profiled for the virtual storage device, the in-storage monitoring engine (425) may profile the virtual storage device using the profiling station (835). Event triggers (840) and/or timer interrupts may be used to manage when to start or end various profiling commands. The results of the profiling station (835) may be stored in the performance table (830) for later use.

프로파일링 스테이션(835)은 도 2의 SSD(220)에서 수행 대기 중인 프로파일링 명령들을 저장할 수 있다. 애플리케이션 및/또는 호스트 머신은 모든 슬롯이 채워질 때까지 프로파일링 스테이션(835)에서 슬롯을 "이용(take)"할 수 있다. 프로파일링 스테이션(835)은 프로파일링 명령을 수행하기 위해 op 코드를 저장할 수 있는 ops 및 다양한 프로파일링 명령들에 대한 선점 제어를 적용할지 여부 및 방법에 대한 정보를 저장할 수 있는 제어(control)를 포함할 수 있다. 예를 들면, 도 2의 SSD(220)의 프로파일링 대역폭은 도 2의 SSD(220)의 프로파일링 레이턴시와 비교할 때 비교적 오랜 시간이 걸릴 수 있다. 따라서, 도 2의 SSD(220)의 레이턴시를 프로파일링하기 위한 프로파일 명령은 선점 제어로 실행될 수 있다. 마지막으로, 상태 필드는 프로파일링 명령의 상태에 대한 정보를 제공할 수 있다. 예를 들면, 상태는 비트 필드를 사용하여 프로파일링 명령이 활성, 일시 중지 또는 완료되었는지 여부를 나타낼 수 있다. 상태는 비트 필드를 사용하여 프로파일링 명령의 우선 순위, 선점 상태 등과 같은 프로파일링 명령의 매개 변수(parameters)를 나타낼 수 있다.The profiling station (835) can store profiling commands waiting to be executed on the SSD (220) of FIG. 2. The application and/or host machine can "take" slots on the profiling station (835) until all slots are filled. The profiling station (835) can include ops that can store op codes to execute profiling commands and controls that can store information on whether and how to apply preemption control to various profiling commands. For example, the profiling bandwidth of the SSD (220) of FIG. 2 may take a relatively long time compared to the profiling latency of the SSD (220) of FIG. 2. Therefore, the profiling command to profile the latency of the SSD (220) of FIG. 2 may be executed with preemption control. Finally, the status field can provide information on the status of the profiling command. For example, the status can use a bit field to indicate whether the profiling command is active, paused, or completed. The status can use bit fields to indicate parameters of the profiling command, such as priority, preemption status, etc.

또한, 인-스토리지 모니터링 엔진(425)은 측정된 특성이 변경되었는지를 결정하기 위해 초기 프로파일링 명령을 주기적으로 반복할 수 있다. 측정된 특성이 변경되면, 인-스토리지 모니터링 엔진(425)은 변경을 원래 프로파일링 명령을 요청한 도 1의 애플리케이션(145) 또는 도 1의 호스트 머신(110)에게 다시 보고할 수 있다.Additionally, the in-storage monitoring engine (425) may periodically repeat the initial profiling command to determine if the measured characteristic has changed. If the measured characteristic has changed, the in-storage monitoring engine (425) may report the change back to the application (145) of FIG. 1 or the host machine (110) of FIG. 1 that originally requested the profiling command.

도 9a 및 도 9b는 본 개시의 실시예에 따른 도 4 및 도 5의 SSD(220)의 도 6의 특성(605, 610, 및/또는 615)를 결정하기 위하여 도 4의 인-스토리지 모니터링 엔진(425)을 사용하기 위한 예시적인 절차의 플로우차트를 도시한다. 도 9a에서, 블록(905)에서, 도 4의 인-스토리지 모니터링 엔진(425)은 도 2의 SSD(220) 내 가용 가상 스토리지 디바이스를 반영하기 위하여 도 8의 가상 스토리지 테이블(825)을 구축할 수 있다. 블록(910)에서, 도 2의 SSD(220)는 도 1의 애플리케이션(145)로부터 또는 도 1의 호스트 머신(110)으로부터 프로파일링 명령을 수신할 수 있다. 이 프로파일링 명령은 도 6의 어떤 특성(605, 610, 및/또는 615)이 측정되어야 하는지를 지정할 수 있고, 어떤 유형의 명령이 사용되어야 하는지를 지정할 수 있다. 예를 들면, 도 1의 애플리케이션(145) 또는 도 1의 호스트 머신(110)은 데이터 라이트 또는 데이터 리드에 관하여 도 6의 레이턴시(605) 또는 도 6의 대역폭(610)에만 관심있을 수 있다. 또는, 프로파일링 명령은 GC 또는 WL을 수행할 때 도 2의 SSD(220)의 특성을 측정하는 것을 지정할 수 있다. 효과적으로, 도 2의 SSD(220)가 실행할 수 있는 임의의 명령이 측정될 수 있다. 결과적으로, 프로파일링 명령은 도 2의 SSD(220)를 프로파일링할 때 사용하기 위한 임의의 요청 크기들을 지정할 수 있다. 상술한 바와 같이, 도 4의 인-스토리지 모니터링 엔진(425)이 도 2의 SSD(220)를 프로파일링 하기 위하여 어떤 요청 크기가 사용되는지를 결정할 수 있는 경우에, 프로파일링 명령은 임의의 요청 크기를 지정하지 않는다.FIGS. 9A and 9B illustrate a flowchart of an exemplary procedure for using the in-storage monitoring engine (425) of FIG. 4 to determine characteristics (605, 610, and/or 615) of FIG. 6 of the SSD (220) of FIGS. 4 and 5 according to embodiments of the present disclosure. In FIG. 9A , at block (905), the in-storage monitoring engine (425) of FIG. 4 may build a virtual storage table (825) of FIG. 8 to reflect available virtual storage devices within the SSD (220) of FIG. 2 . At block (910), the SSD (220) of FIG. 2 may receive a profiling command from the application (145) of FIG. 1 or from the host machine (110) of FIG. 1 . The profiling command can specify which characteristics (605, 610, and/or 615) of FIG. 6 are to be measured and can specify which type of commands are to be used. For example, the application (145) of FIG. 1 or the host machine (110) of FIG. 1 may only be interested in the latency (605) of FIG. 6 or the bandwidth (610) of FIG. 6 for data writes or data reads. Alternatively, the profiling command can specify that the characteristics of the SSD (220) of FIG. 2 be measured when performing a GC or a WL. Effectively, any command that the SSD (220) of FIG. 2 can execute can be measured. Consequently, the profiling command can specify arbitrary request sizes to use when profiling the SSD (220) of FIG. 2. As described above, if the in-storage monitoring engine (425) of FIG. 4 can determine what request size is used to profile the SSD (220) of FIG. 2, the profiling command does not specify any request size.

블록(915)에서, 도 2의 SSD(220)가 프로파일링 명령을 수신한 후에, 도 2의 SSD(220)는 프로파일링 명령을 도 4의 인-스토리지 모니터링 엔진(425)에 의해서 처리될 수 있는 내부 프로파일링 명령으로 변환하기 위하여 프로파일링 명령을 디코드할 수 있다. 이 변환은 2가지 이유로 구현될 수 있다. 첫째, 수신된 프로파일링 명령은 도 2의 SSD(220) (및 도 4의 인-스토리지 모니터링 엔진(425))이 프로파일링 명령이 나타날 것으로 예상하는 방법과 다르게 포맷될 수 있다. 둘째, 상이한 가상 스토리지 디바이스들을 위한 상이한 인터페이스들이 서로 (및 프로파일링 명령의 내부 포맷과) 다른 포맷을 사용하는 프로파일링을 요청하기 위하여 명령들을 제공할 수 있다. 결과로서, 수신된 프로파일링 명령을 내부 프로파일링 명령으로 변환하는 것은 예상된 포맷의 프로파일링 명령을 가지는 도 4의 인-스토리지 모니터링 엔진(425)에 존재한다. 블록(915)은 프로파일링 명령을 완료하기 위하여 필요한 임의의 추가 데이터를 추가하는 것을 포함할 수 있다. 예를 들면, 도 1의 애플리케이션 또는 도 1의 호스트 머신(110)이 도 7a 및 도 7b의 요청 크기(720, 725)를 지정하지 않으면, 요청 크기들은 프로파일링 코드 레지스터로부터 액세스될 수 있고 프로파일링 명령에 추가될 수 있다.At block (915), after the SSD (220) of FIG. 2 receives the profiling command, the SSD (220) of FIG. 2 may decode the profiling command to convert the profiling command into an internal profiling command that can be processed by the in-storage monitoring engine (425) of FIG. 4. This conversion may be implemented for two reasons. First, the received profiling command may be formatted differently than the SSD (220) of FIG. 2 (and the in-storage monitoring engine (425) of FIG. 4) expects the profiling command to appear. Second, different interfaces for different virtual storage devices may provide commands to request profiling that use different formats (and the internal format of the profiling command). As a result, the conversion of the received profiling command into an internal profiling command resides in the in-storage monitoring engine (425) of FIG. 4 having a profiling command in the expected format. Block (915) may include adding any additional data necessary to complete the profiling command. For example, if the application of FIG. 1 or the host machine (110) of FIG. 1 does not specify the request sizes (720, 725) of FIGS. 7A and 7B, the request sizes may be accessed from the profiling code register and added to the profiling command.

블록(920)(도 9b)에서, 도 4의 인-스토리지 모니터링 엔진(425)은 프로파일링 명령의 결과가 도 8의 성능 테이블(830)에서 발견될 수 있는지를 점검할 수 있다. 만일 발견되면, 블록(925)에서, 도 4의 인-스토리지 모니터링 엔진(425)은 도 8의 성능 테이블(830)로부터의 결과를 액세스할 수 있고, 블록(930)에서, 도 4의 인-스토리지 모니터링 엔진 (425)은 프로파일링 명령의 결과를 요청자에게 리턴할 수 있다.At block (920) (FIG. 9b), the in-storage monitoring engine (425) of FIG. 4 can check whether the result of the profiling command can be found in the performance table (830) of FIG. 8. If found, at block (925), the in-storage monitoring engine (425) of FIG. 4 can access the result from the performance table (830) of FIG. 8, and at block (930), the in-storage monitoring engine (425) of FIG. 4 can return the result of the profiling command to the requester.

한편, 도 8의 성능 테이블(830)이 프로파일링 명령의 결과를 저장하지 않거나, 프로파일링 명령의 결과가 오래된 경우, 블록(935)에서, 도 4의 인-스토리지 모니터링 엔진(425)은 프로파일링 명령을 수행할 수 있다. 이어서, 블록(940)에서, 도 4의 인-스토리지 모니터링 엔진(425)은 도 8의 성능 테이블(830)에 결과를 저장하고, 블록(930)에서, 도 4의 인-스토리지 모니터링 엔진(425)은 프로파일링 명령의 결과를 요청자에게 리턴할 수 있다.Meanwhile, if the performance table (830) of FIG. 8 does not store the result of the profiling command, or the result of the profiling command is old, at block (935), the in-storage monitoring engine (425) of FIG. 4 can perform the profiling command. Then, at block (940), the in-storage monitoring engine (425) of FIG. 4 can store the result in the performance table (830) of FIG. 8, and at block (930), the in-storage monitoring engine (425) of FIG. 4 can return the result of the profiling command to the requester.

반면에, 도 9a 및 도 9b는 도 8의 가상 스토리지 테이블(825)이 한번 구축되는 것을 제안하나, 본 개시의 실시예들은 필요 시 도 8의 가상 스토리지 테이블(825)를 변경하는 것을 포함할 수 있다. 예를 들면, 동작 동안 새로운 가상 스토리지 디바이스가 도 2의 SSD(220)에 추가될 수 있다. 따라서, 도 8의 가상 스토리지 테이블(825)이 새로운 가상 스토리지 디바이스가 추가 될 때 업데이트될 수 있다.On the other hand, while FIGS. 9A and 9B suggest that the virtual storage table (825) of FIG. 8 is built once, embodiments of the present disclosure may include modifying the virtual storage table (825) of FIG. 8 when necessary. For example, a new virtual storage device may be added to the SSD (220) of FIG. 2 during operation. Accordingly, the virtual storage table (825) of FIG. 8 may be updated when a new virtual storage device is added.

도 10은 본 개시의 실시예에 따른 도 4의 인-스토리지 모니터링 엔진(425)을 사용하여 프로파일링 명령을 수행하는데 사용하기 위한 프로파일링 명령 및 선택적 데이터를 수신하기 위한 예시적인 절차의 플로우차트를 도시한다. 도 10에서, 블록(1005)에서, 도 4의 인-스토리지 모니터링 엔진(425)은 도 1의 애플리케이션(145)으로부터 프로파일링 명령을 수신할 수 있다. 대안적으로, 블록(1010)에서, 도 4의 인-스토리지 모니터링 엔진(425)은 도 1의 호스트 머신(110)으로부터 프로파일링 명령을 수신할 수 있다. 어느 쪽이든, 블록(1015)에서, 도 4의 인-스토리지 모니터링 엔진(425)은 도 7a 및 도 7b의 요청 크기들(720, 725) 또는 프로파일링 명령의 우선 순위와 같은 프로파일링 명령을 수행하는데 사용하기 위한 추가 데이터를 수신할 수 있다. 블록(1015)은 점선들 (1020)으로 도시된 바와 같이 생략될 수 있다.FIG. 10 illustrates a flowchart of an exemplary procedure for receiving a profiling command and optional data for use in performing a profiling command using the in-storage monitoring engine (425) of FIG. 4 according to an embodiment of the present disclosure. In FIG. 10 , at block (1005), the in-storage monitoring engine (425) of FIG. 4 may receive a profiling command from the application (145) of FIG. 1 . Alternatively, at block (1010), the in-storage monitoring engine (425) of FIG. 4 may receive a profiling command from the host machine (110) of FIG. 1 . Either way, at block (1015), the in-storage monitoring engine (425) of FIG. 4 may receive additional data for use in performing the profiling command, such as the request sizes (720, 725) of FIGS. 7A and 7B , or the priority of the profiling command. Block (1015) may be omitted as shown by the dotted lines (1020).

도 11은 도 2의 SSD(220)의 상이한 특성들(605, 610 및/또는 615)을 결정하기 위한 예시적인 절차의 플로우차트를 도시한다. 도 11에서, 블록(1105)에서, 도 4의 인-스토리지 모니터링 엔진(425)은 도 2의 SSD(220)의 도 6의 레이턴시(605)를 결정할 수 있다. 대안적으로, 블록(1110)에서, 도 4의 인-스토리지 모니터링 엔진(425)은 도 2의 SSD(220)의 도 6의 대역폭(610)을 결정할 수 있다. 마지막으로, 블록(1115)에서, 도 4의 인-스토리지 모니터링 엔진(425)은 도 2의 SSD(220)의 도 6의 보유(615)를 결정할 수 있다.FIG. 11 illustrates a flowchart of an exemplary procedure for determining different characteristics (605, 610 and/or 615) of an SSD (220) of FIG. 2. In FIG. 11, at block (1105), the in-storage monitoring engine (425) of FIG. 4 can determine the latency (605) of FIG. 6 of the SSD (220) of FIG. 2. Alternatively, at block (1110), the in-storage monitoring engine (425) of FIG. 4 can determine the bandwidth (610) of FIG. 6 of the SSD (220) of FIG. 2. Finally, at block (1115), the in-storage monitoring engine (425) of FIG. 4 can determine the retention (615) of FIG. 6 of the SSD (220) of FIG. 2.

도 9a 내지 도 11에서, 본 개시의 일부 실시예들이 도시되었다. 그러나, 당업자는 블록의 순서를 변경하거나, 블록을 생략하거나, 도면에 도시되지 않은 링크를 포함함으로써 본 발명의 다른 실시예도 가능하다는 것을 인식할 것이다. 플로우차트의 이러한 모든 변형은 명시적으로 설명 되든 아니든 본 개시의 실시예인 것으로 간주된다.In FIGS. 9A through 11, some embodiments of the present disclosure are illustrated. However, those skilled in the art will recognize that other embodiments of the present disclosure are possible by changing the order of blocks, omitting blocks, or including links not illustrated in the drawings. All such variations of the flowcharts, whether explicitly described or not, are considered embodiments of the present disclosure.

도 12는 본 개시의 실시예에 따른 예시적인 다형성 SSD의 펌웨어 스택을 도시한다. 여기서, 다형성 SSD는 다형성 스토리지 디바이스(PSD: polymorphic storage device)로 지칭 될 수 있다.FIG. 12 illustrates a firmware stack of an exemplary polymorphic SSD according to an embodiment of the present disclosure. Here, the polymorphic SSD may be referred to as a polymorphic storage device (PSD).

PSD 펌웨어 스택(1200)은 플래시 제어기 계층(1235), PSD 커널(1255), PSD 인터페이스 계층(1252), 및 애플리케이션 컨테이너(1210)를 포함할 수 있다. 애플리케이션 컨테이너(1210)는 하나 이상의 애플리케이션들(1211a, 1211b, 및 1211c)을 포함할 수 있다. 본 예에서, 애플리케이션(1211c)은 다른 애플리케이션들(1211a, 1211b)와 구분하기 위하여 PSD 상에서 실행 중인 현재 테넌트(tenant)일 수 있다. 이 후, 애플리케이션들(1211a, 1211b, 및 1211c)은 1211로 통칭될 수 있다.The PSD firmware stack (1200) may include a flash controller layer (1235), a PSD kernel (1255), a PSD interface layer (1252), and an application container (1210). The application container (1210) may include one or more applications (1211a, 1211b, and 1211c). In this example, the application (1211c) may be a current tenant running on the PSD to distinguish it from other applications (1211a, 1211b). Hereinafter, the applications (1211a, 1211b, and 1211c) may be collectively referred to as 1211.

스토리지 디바이스의 동작을 정의하는 본 다형성 스토리지 디바이스의 펌웨어는 펌웨어 업데이트를 통하여 재구성될 수 있다. 펌웨어 업데이트를 통하여 본 다형성 스토리지 디바이스는 원래의 구성으로부터 다른 형태의 디바이스로 변형될 수 있다. 예를 들면, 본 다형성 스토리지 디바이스는 원래 범용 스토리지 디바이스로서 구성된다. 펌웨어 업데이트에 의해서 범용 스토리지 디바이스는 특수 목적 스토리지 디바이스, 예를 들면, 인-스토리지 컴퓨팅 디바이스, 니어-스토리지 컴퓨팅 디바이스, 키-값 스토아 디바이스, 하둡(Hadoop) 분산 파일 시스템(HDFS) 디바이스, 객체 스토아 디바이스, 및 지능형 컴퓨팅 능력을 가지는 스마트 SSD로 변환될 수 있다. 이와 같은 특수 목적 디바이스 또는 스마트 SSD 상에서 실행되는 애플리케이션들은 태깅 기능(예를 들면, 이미지 태깅, 압축 기능(예를 들면, snappy, gzip, RLE), 데이터베이스 기능(예를 들면, 공간 압축(space compaction), 술어 평가(predicate evaluation), 머신 러닝 기능(예를 들면, 트레이닝 및 추론), 및 변환 기능(예를 들면, 비디토 트랜스코딩, 이미지 샘플링, 문서 포맷 변환(예를 들면, PDF를 포스트스크립트로))를 포함하는 다양한 애플리케이션 특정 기능들을 가질 수 있으나, 이에 제한되지는 않는다.The firmware of the polymorphic storage device, which defines the operation of the storage device, can be reconfigured through a firmware update. Through a firmware update, the polymorphic storage device can be transformed from its original configuration into a device of a different form. For example, the polymorphic storage device is originally configured as a general-purpose storage device. Through a firmware update, the general-purpose storage device can be transformed into a special-purpose storage device, such as an in-storage computing device, a near-storage computing device, a key-value store device, a Hadoop distributed file system (HDFS) device, an object store device, and a smart SSD having intelligent computing capabilities. Applications running on such special purpose devices or smart SSDs may have various application specific functions including, but not limited to, tagging functions (e.g., image tagging), compression functions (e.g., snappy, gzip, RLE), database functions (e.g., space compaction, predicate evaluation), machine learning functions (e.g., training and inference), and transformation functions (e.g., video transcoding, image sampling, document format conversion (e.g., PDF to PostScript)).

플래시 제어기 계층(1235)은 가상 플래시 계층(VFL)(1230) 및 플래시 인터페이스 계층(FIL)(1240)을 포함한다. 플래시 제어기 계층(1235)은 PSD의 증가된 효율성을 제공하기 위해 하드웨어 지원을 제공할 수 있다. PSD에서 실행되는 애플리케이션(1211)에 따라, 플래시 제어기 계층(1235)은 플래시 메모리에 대한 효율적인 인터페이스를 제공하기 위해 재구성가능하고 확장가능한 하드웨어의 사용을 최적화할 수 있다. 플래시 제어기 계층(1235)은 애플리케이션들(1211)의 기능들을 지원하기 위해 펌웨어 업데이트에 의해 업데이트될 수 있다.The flash controller layer (1235) includes a virtual flash layer (VFL) (1230) and a flash interface layer (FIL) (1240). The flash controller layer (1235) can provide hardware support to provide increased efficiency of the PSD. Depending on the application (1211) running on the PSD, the flash controller layer (1235) can optimize the use of reconfigurable and expandable hardware to provide an efficient interface to the flash memory. The flash controller layer (1235) can be updated by firmware updates to support the functions of the applications (1211).

호스트 머신으로부터 수신된 패킷(예를 들면, 데이터, 메시지 및 명령)은 먼저 PSD 커널(1255)로 전송된다. PSD 커널(1255)의 컨텍스트(CTX) 관리자(1256) 및 메시지 라우터(1257)는 호스트 머신으로부터 수신된 패킷들을 라우팅하는 역할을 한다. CTX 관리자(1256)는 PSD의 현재 테넌트 애플리케이션(들) 및 그 특성을 알고 있다. CTX 관리자(1256)는 현재 실행 중인 애플리케이션 및 다른 기존 애플리케이션 및 구성을 추적하기 위한 애플리케이션 ID 테이블을 포함할 수 있다. CTX 관리자(1256)는 또한 시작/중지, 재개 및 일시 중단 등과 같은 현재 테넌트 애플리케이션(들)의 실행 및 라이브니스를 제어하는 (즉, 컨텍스트 제어) 역할을 한다. PSD 커널(1255)은 라우팅된 패킷들의 캡슐화를 해제할 수 있고 라우팅된 패킷을 처리할 수 있다. 예를 들면, 애플리케이션(1211)을 "생성(create)"하라는 명령이 수신되면, CTX 관리자(1256)는 호스트 제공 데이터를 이용하여 애플리케이션(1211)의 애플리케이션 컨텍스트를 생성할 수 있다. 호스트 제공 데이터는 애플리케이션(1211)이 PSD 커널(1255)과 통신할 수 있도록 PSD 라이브러리를 포함하는 메타데이터 뿐만 아니라 PSD 상에서 실행가능한 애플리케이션(1211)의 이진 코드 뿐만 아니라 구성 프로파일 또는 로직들을 포함할 수 있다.Packets (e.g., data, messages, and commands) received from the host machine are first transmitted to the PSD kernel (1255). The context (CTX) manager (1256) and the message router (1257) of the PSD kernel (1255) are responsible for routing the packets received from the host machine. The CTX manager (1256) knows the current tenant application(s) of the PSD and their characteristics. The CTX manager (1256) may include an application ID table for tracking the currently running application and other existing applications and configurations. The CTX manager (1256) also controls the execution and liveness of the current tenant application(s), such as start/stop, resume, and suspend (i.e., context control). The PSD kernel (1255) may decapsulate the routed packets and process the routed packets. For example, when a command to "create" an application (1211) is received, the CTX manager (1256) may create an application context for the application (1211) using host-provided data. The host-provided data may include binary code of the application (1211) executable on the PSD, as well as metadata including a PSD library that allows the application (1211) to communicate with the PSD kernel (1255), as well as configuration profiles or logics.

호스트 머신으로부터 수신된 메시지가 PSD에 등록된 애플리케이션(1211)에 관련되는 경우, PSD 커널(1255)은 등록된 애플리케이션(1211)의 컨텍스트가 활성화된 경우 메시지 및 대응하는 데이터 및/또는 명령을 등록된 애플리케이션(1211)으로 라우팅할 수 있다. 등록된 애플리케이션(1211)의 컨텍스트가 활성화되어 있지 않으면, PSD 커널(1255)은 호스트 머신에 에러 메시지를 리턴한다. PSD 커널(1255)은 호스트 머신으로부터 미등록 또는 인식되지 않은 메시지가 수신되면 다른 오류 메시지를 호스트 머신으로 전송할 수 있다.If a message received from the host machine relates to an application (1211) registered in the PSD, the PSD kernel (1255) may route the message and corresponding data and/or commands to the registered application (1211) if the context of the registered application (1211) is activated. If the context of the registered application (1211) is not activated, the PSD kernel (1255) returns an error message to the host machine. The PSD kernel (1255) may send another error message to the host machine if an unregistered or unrecognized message is received from the host machine.

CTX 관리자(1256)는 애플리케이션 컨테이너(1210)를 제어하는 역할을 한다. CTX 관리자(1256)는 애플리케이션(1211)의 애플리케이션 컨텍스트를 생성하고 PSD의 하드웨어 자원을 분배 및 관리할 수 있다. CTX 관리자(1256)는 가상 머신(VM)과 유사하게 완전 가상화 방식 또는 반 가상화 방식으로 구현될 수 있다. 일 실시예에서, 애플리케이션(1211)은 PSD 커널(1255)을 구현하지 않고 일반 스토리지 디바이스에서 일반 펌웨어로서 실행될 수 있다. 다른 실시예에서, 애플리케이션(1211)은 PSD에 의해 제공된 기능을 인식하여 PSD를 위해 특별히 설계된 새로운 애플리케이션으로서 실행될 수 있다.The CTX manager (1256) is responsible for controlling the application container (1210). The CTX manager (1256) can create an application context of the application (1211) and distribute and manage hardware resources of the PSD. The CTX manager (1256) can be implemented in a fully virtualized manner or a paravirtualized manner similar to a virtual machine (VM). In one embodiment, the application (1211) can be executed as a general firmware on a general storage device without implementing the PSD kernel (1255). In another embodiment, the application (1211) can be executed as a new application specifically designed for the PSD by recognizing the functions provided by the PSD.

일부 애플리케이션(1211)은 애플리케이션 특정 WL 및/또는 GC 로직들을 필요로 할 수 있다. 이러한 로직들은 PSD의 성능에 중요할 수 있다. PSD 커널(1255)은 PSD 커널(1255)과 인터페이스하기 위하여 애플리케이션 특정 WL/GC 인터페이스 및 일반 API를 포함하는 PSD 라이브러리(1258)를 제공한다. 후자의 경우, 애플리케이션(1211)은 자신의 WL/GC 로직들을 구현하는 대신 제공된 라이브러리를 등록할 수 있다. 전자의 경우, PSD 커널(1255)은 PSD 펌웨어 스택(1200)의 계층(들)에서 애플리케이션 (1211)에 전체 특권을 제공함으로써 WL/GC와 관련된 어떤 것도 하지 않는다.Some applications (1211) may require application specific WL and/or GC logics. These logics may be critical to the performance of the PSD. The PSD kernel (1255) provides a PSD library (1258) containing application specific WL/GC interfaces and a generic API to interface with the PSD kernel (1255). In the latter case, the application (1211) may register the provided library instead of implementing its own WL/GC logics. In the former case, the PSD kernel (1255) does not do anything related to WL/GC by providing full privilege to the application (1211) in the layer(s) of the PSD firmware stack (1200).

애플리케이션(1211)은 PSD 인터페이스 계층(1252)을 통해 기본 PSD 커널(1255)과 통신할 수 있다. PSD 인터페이스 계층(1252)은 PSD 인터페이스 계층(1252)을 통해 PSD로 전달되는 통신 API 및 패킷들(예를 들어, 메시지, 명령 및 데이터)을 제공할 수 있다.The application (1211) can communicate with the underlying PSD kernel (1255) via the PSD interface layer (1252). The PSD interface layer (1252) can provide communication APIs and packets (e.g., messages, commands, and data) that are passed to the PSD via the PSD interface layer (1252).

애플리케이션(1211)은 애플리케이션 컨텍스트(들)의 형태로 단일 PSD에 공존할 수 있다. 애플리케이션 컨테이너(1210)는 활성화이거나 유 휴일 수 있는 애플리케이션(1211)의 애플리케이션 컨텍스트를 보유할 수 있다. 애플리케이션(1211)은 애플리케이션 로직들, 호스트 프로토콜 및 메시지 프로세서 계층, 애플리케이션 특정 ATL, WL 로직, GC 로직 등을 포함할 수 있다. 일부 실시예에서, WL 및 GC 로직들은 선택적이다. 예를 들면, 키-값 스토아 애플리케이션은 코아 로직들에 대한 키-값 구조와 알고리즘을 가질 수 있다. 호스트 프로토콜 및 메시지 프로세서 계층(1213)은 코어 로직들의 기능 래퍼(wrapper) 만큼 간단할 수 있다. 키-값 스토아 애플리케이션의 경우, 애플리케이션 특정 ATL(1214)를 통합 FTL에 병합할 수 있다.Applications (1211) can coexist in a single PSD in the form of application context(s). An application container (1210) can hold an application context of an application (1211) that can be active or inactive. An application (1211) can include application logics, a host protocol and message processor layer, application specific ATL, WL logic, GC logic, etc. In some embodiments, the WL and GC logics are optional. For example, a key-value store application can have a key-value structure and algorithm for the core logics. The host protocol and message processor layer (1213) can be as simple as a functional wrapper around the core logics. For a key-value store application, the application specific ATL (1214) can be merged into the unified FTL.

최신 SSD의 하드웨어 관점에서 추가 로직들이 반드시 필요한 것은 아니지만 다음 팩터들이 PSD의 실행을 가속화할 수 있다. PSD의 실행을 가속화할 수 있는 팩터들의 예로는 다중 변환 색인 버퍼(TLB) 또는 더 큰 TLB, 애플리케이션 컨테이너 ID가 있는 캐시, 듀얼 인라인 메모리 모듈(DIMM) 당 충돌을 줄이기 위한 더 많은 뱅크가 있는 메모리 및/또는 더 많은 레지스터, 직접 메모리 액세스(DMA)를 위한 보다 유연한 지원, 및 더 많은 수의 뛰어난 DMA들, 임베디드 프로세서의 가상화 지원, 애플리케이션 컨텍스트-인식 플래시 제어기, 다형성의 인식과 함께 세밀한 전력 제어, 하드웨어-지원 메시지 라우팅을 포함하지만 이에 제한되지는 않는다. 다른 예에서, PSD는 FPGA(field-programmable gate array)를 포함하여 가속된 애플리케이션 특정 기능을 제공할 수 있다. 머신 러닝 커널, 신경망과 같은 빅 데이터 처리에서 과학 컴퓨팅, 매트릭스 조작, 고속 푸리에 변환(FFT: Fast Fourier Transform), 패턴 매칭 등과 같은 애플리케이션들은 범용 디바이스의 CPU에서 코드를 실행하는 대신 FPGA로 가속화할 수 있다. 머신 러닝 커널과 같은 애플리케이션에서, TPU(Tensor Processor Unit)와 같은 텐서 가속기는 행렬 곱셈 동작을 가속화할 수 있다. 더 나은 공간 활용 및 보안을 위해 압축기 및 암호화 엔진과 같은 특수 하드웨어도 사용할 수 있다.Additional logic is not necessarily required from a hardware perspective in modern SSDs, but the following factors can accelerate the execution of the PSD: Examples of factors that can accelerate the execution of the PSD include, but are not limited to, multiple translation lookaside buffers (TLBs) or larger TLBs, caches with application container IDs, memory with more banks and/or more registers per dual in-line memory module (DIMM) to reduce contentions, more flexible support for direct memory access (DMA) and a greater number of superior DMAs, virtualization support for embedded processors, application context-aware flash controllers, fine-grained power control with polymorphism awareness, and hardware-assisted message routing. In another example, the PSD can include a field-programmable gate array (FPGA) to provide accelerated application-specific functions. Applications such as scientific computing, matrix manipulation, fast Fourier transforms (FFTs), pattern matching, and so on in big data processing such as machine learning kernels and neural networks can be accelerated by FPGAs instead of executing code on the CPU of a general-purpose device. In applications such as machine learning kernels, tensor accelerators such as the Tensor Processor Unit (TPU) can accelerate matrix multiplication operations. Specialized hardware such as compressors and encryption engines can also be used for better space utilization and security.

PSD에서 실행되는 애플리케이션(1211)은 다양한 네임스페이스를 지원할 수 있다. 본 예에서, 애플리케이션(1211a)은 네임스페이스(NS1)를 지원하고, 애플리케이션(1211b)은 네임스페이스들(NS2, NS3)을 지원하고, 애플리케이션(1211d)은 네임스페이스들(NS1, NS4)을 지원한다. 애플리케이션 (1211)은 다수의 네임스페이스에서 실행될 수 있지만, 어떤 네임스페이스는 다수의 애플리케이션들(1211) 사이에 공유될 수 있다.An application (1211) running on a PSD can support various namespaces. In this example, application (1211a) supports namespace (NS1), application (1211b) supports namespaces (NS2, NS3), and application (1211d) supports namespaces (NS1, NS4). An application (1211) can run on multiple namespaces, but some namespaces can be shared between multiple applications (1211).

일 실시예에 따르면, PSD 커널(1255)은 PSD 인터페이스를 통해 특정 네임스페이스와 관련된 호스트 명령을 수신할 수 있다. 네임스페이스는 논리적 관리 단위이며 인터페이스, 어드레스 공간, 데이터 포맷, 성능 및 다른 네임스페이스들과의 보안의 분리를 제공한다. PSD 능력에 따라 통계적으로 또는 동적으로 네임스페이스를 만들 수 있다. PSD 커널(1255)은 PSD의 비 휘발성 메모리의 메모리 블록들을 구성하여 메모리 블럭들을 네임스페이스에 연관시키고 네임스페이스와 할당된 메모리 블록 사이의 매핑 정보를 관리할 수 있다.According to one embodiment, the PSD kernel (1255) can receive host commands related to a specific namespace through the PSD interface. A namespace is a logical management unit and provides separation of interfaces, address spaces, data formats, performance, and security from other namespaces. A namespace can be created statistically or dynamically depending on the PSD capability. The PSD kernel (1255) can configure memory blocks of the non-volatile memory of the PSD to associate the memory blocks with a namespace and manage mapping information between the namespace and the allocated memory blocks.

네임스페이스를 지정하지 않으면, 동작은 PSD에서 디바이스의 글로벌 네임스페이스로 처리된다. 네임스페이스는 애플리케이션 컨테이너에서 실행 중인 2개 이상의 애플리케이션들과 연관될 수 있으며, 애플리케이션은 2개 이상의 네임스페이스들과 연관될 수 있다. 본 예에서, 다수의 애플리케이션들(1211)(예를 들면, NoSQL 애플리케이션)은 동일한 네임스페이스에서 실행된다. 그 동안, 애플리케이션(1211)은 2개 이상의 네임스페이스들과 작업할 수 있다. NoSQL 애플리케이션들의 경우 하나의 네임스페이스가 블록 인터페이스에 할당되고 다른 네임스페이스가 키-값 인터페이스에 할당될 수 있다. 이 경우, 메타데이터는 키-값 네임스페이스에 저장될 수 있고, 데이터는 블록 네임스페이스에 저장될 수 있다.If no namespace is specified, the operation is processed in the global namespace of the device in the PSD. A namespace can be associated with two or more applications running in the application container, and an application can be associated with two or more namespaces. In this example, multiple applications (1211) (e.g., NoSQL applications) run in the same namespace. Meanwhile, an application (1211) can work with two or more namespaces. For NoSQL applications, one namespace can be assigned to a block interface and another namespace can be assigned to a key-value interface. In this case, metadata can be stored in the key-value namespace, and data can be stored in the block namespace.

일 실시예에 따르면, 스토리지 디바이스는 하나 이상의 애플리케이션을 포함하는 애플리케이션 컨테이너, 여기서 하나 이상의 애플리케이션들 각각은 하나 이상의 네임스페이스들에서 실행되고, 하나 이상의 네임스페이스들은 스토리지 디바이스 내에 구현되고 호스트 머신에 호스트 측 인터페이스를 제공하고 호스트 측 인터페이스를 통해 호스트 머신으로부터 데이터, 메시지 및 명령을 포함하는 복수의 패킷들을 수신하고, 복수의 패킷들과 관련된 네임스페이스에 기초하여 복수의 패킷들을 애플리케이션 컨테이너 내 애플리케이션에 라우팅하도록 구성된 다형성 스토리지 디바이스(PSD) 커널, 및 비 휘발성 메모리를 포함할 수 있다. PSD 커널은 또한 복수의 패킷과 관련된 네임스페이스에 기초하여 키-값 인터페이스 및 블록 인터페이스를 비휘발성 메모리에 제공하도록 구성된다. 비 휘발성 메모리는 블록 인터페이스를 통해 액세스 가능한 복수의 블록 데이터를 저장하고, 키-값 인터페이스를 통해 액세스 가능한 복수의 키-값 데이터를 저장한다.According to one embodiment, a storage device can include an application container including one or more applications, wherein each of the one or more applications executes in one or more namespaces, the one or more namespaces being implemented within the storage device and configured to provide a host-side interface to a host machine and to receive a plurality of packets including data, messages and commands from the host machine via the host-side interface, and to route the plurality of packets to applications within the application container based on namespaces associated with the plurality of packets; and a non-volatile memory. The PSD kernel is further configured to provide a key-value interface and a block interface to the non-volatile memory based on the namespaces associated with the plurality of packets. The non-volatile memory stores a plurality of block data accessible via the block interface, and stores a plurality of key-value data accessible via the key-value interface.

다음의 논의는 본 개시의 양상이 구현될 수 있는 적합한 머신 또는 머신들의 간략한 일반적인 설명을 제공하기 위한 것이다. 머신 또는 머신들은 적어도 부분적으로 키보드, 마우스 등과 같은 종래의 입력 장치로부터의 입력뿐만 아니라 다른 머신으로부터 수신된 지시, 가상 현실(VR) 환경과의 상호 작용, 생체 피드백 또는 다른 입력 신호에 의해 제어될 수 있다. 본원에서 사용되는 바와 같이, 용어 "머신"은 단일 머신, 가상 머신, 또는 통신적으로 결합된 머신들, 가상 머신들 또는 함께 작동하는 디바이스들의 시스템을 광범위하게 포함하는 것으로 의도된다. 예시적인 머신들은 개인용 컴퓨터, 워크스테이션, 서버, 휴대용 컴퓨터, 휴대용 디바이스, 전화, 태블릿 등과 같은 컴퓨팅 장치뿐만 아니라 개인 또는 대중 교통(예: 자동차, 기차, 택시 등)과 같은 운송 장치를 포함한다.The following discussion is intended to provide a brief general description of suitable machine or machines in which aspects of the present disclosure may be implemented. The machine or machines may be controlled, at least in part, by input from conventional input devices such as a keyboard, mouse, and the like, as well as instructions received from other machines, interaction with a virtual reality (VR) environment, biofeedback, or other input signals. As used herein, the term "machine" is intended to broadly encompass a single machine, a virtual machine, or a system of communicatively coupled machines, virtual machines, or devices operating together. Exemplary machines include computing devices such as personal computers, workstations, servers, portable computers, handheld devices, phones, tablets, and the like, as well as transportation devices such as personal or public transportation (e.g., automobiles, trains, taxis, and the like).

머신 또는 머신들은 프로그래밍 가능하거나 프로그래밍 불가능한 로직 디바이스 또는 어레이, ASIC(Application Specific Integrated Circuits), 임베디드 컴퓨터, 스마트 카드 등과 같은 임베디드 컨트롤러를 포함할 수 있다. 머신 또는 머신들은 네트워크 인터페이스, 모뎀 또는 다른 통신 결합을 통한 것과 같은 하나 이상의 원격 머신에 대한 하나 이상의 연결을 이용할 수 있다. 머신들은 인트라넷, 인터넷, LAN, WAN 등과 같은 물리적 및/또는 논리적 네트워크에 의해 상호 연결될 수 있다. 당업자는 네트워크 통신이 무선 주파수(RF), 위성, 마이크로파, IEEE (Institute of Electrical and Electronics Engineers) 802.11, Bluetooth®, 광학, 적외선, 케이블, 레이저 등을 포함한 유선 및/또는 무선 단거리 또는 장거리 캐리어 및 프로토콜을 이용할 수 있다는 것을 알 수 있을 것이다.The machine or machines may include embedded controllers, such as programmable or non-programmable logic devices or arrays, Application Specific Integrated Circuits (ASICs), embedded computers, smart cards, etc. The machine or machines may utilize one or more connections to one or more remote machines, such as via a network interface, modem, or other communications coupling. The machines may be interconnected by physical and/or logical networks, such as an intranet, the Internet, a LAN, a WAN, etc. Those skilled in the art will appreciate that network communications may utilize wired and/or wireless short-range or long-range carriers and protocols, including radio frequency (RF), satellite, microwave, Institute of Electrical and Electronics Engineers (IEEE) 802.11, Bluetooth®, optical, infrared, cable, laser, etc.

본 개시의 실시예는 머신에 의해서 액세스될 때 작업을 수행하거나 추상적 데이터 형태 또는 낮은 레벨의 하드웨어 컨텍스트를 정의하는 머신에서 초래되는 기능들, 절차들, 데이터 구조들, 애플리케이션 프로그램들을 포함하는 관련 데이터를 참조하거나 결합하여 설명될 수 있다. 예를 들면, 관련 데이터는 예를 들어, RAM, ROM 등과 같은 휘발성 휘발성 및/또는 하드 드라이브, 플로피 디스크, 광학 스토리지, 테이프, 플래시 메모리, 메모리 스틱, 디지털 비디오 디스크, 생물학적 스토리지 등을 포함하는 다른 스토리지 디바이스 및 관련 스토리지 매체에 저장될 수 있다. 관련 데이터는 패킷, 시리얼 데이터, 병렬 데이터, 전파되는 신호 등의 형태로 물리적 및/또는 논리적 네트워크를 포함한 전송 환경을 통해 전달될 수 있고, 압축 또는 암호화된 포맷으로 사용될 수 있다. 관련 데이터는 분산 환경에서 사용될 수 있으며 머신 액세스를 위해 로컬 및/또는 원격으로 저장될 수 있다.Embodiments of the present disclosure may be described by reference to or in conjunction with related data, including functions, procedures, data structures, application programs, which, when accessed by a machine, perform tasks or result in a machine defining an abstract data form or low-level hardware context. For example, the related data may be stored in volatile storage devices and related storage media, such as RAM, ROM, and/or hard drives, floppy disks, optical storage, tape, flash memory, memory sticks, digital video disks, biological storage, and the like. The related data may be transmitted over a transmission environment, including a physical and/or logical network, in the form of packets, serial data, parallel data, propagated signals, and the like, and may be used in a compressed or encrypted format. The related data may be used in a distributed environment and may be stored locally and/or remotely for machine access.

본 개시의 실시예는 하나 이상의 프로세서에 의해 실행가능한 인스트럭션들, 여기에 설명된 것과 같은 본 개시의 요소들을 수행하기 위한 인스트럭션들을 포함하는 유형의 비 일시적 머신 판독가능 매체를 포함할 수 있다.Embodiments of the present disclosure may include a tangible, non-transitory machine-readable medium comprising instructions executable by one or more processors, instructions for performing elements of the present disclosure as described herein.

예시된 실시예를 참조하여 본 개시의 원리를 설명하고 도시하였지만, 예시된 실시예는 그러한 원리를 벗어나지 않고 배열 및 상세에서 변경될 수 있으며, 임의의 원하는 방식으로 결합될 수 있음을 인식할 것이다. 그리고, 상술한 논의가 특정 실시예에 초점을 맞추었지만, 다른 구성이 고려된다. 특히, "본 개시의 실시예에 따른" 등과 같은 표현이 본원에서 사용 되더라도, 이들 문구는 일반적으로 실시예의 가능성을 참조하기 위한 것이며, 본 개시를 특정한 실시예의 구성으로 제한하려는 것은 아니다. 본원에서 사용된 바와 같이, 이들 용어는 다른 실시예들에 결합될 수 있는 동일하거나 상이한 실시예를 지칭할 수 있다.While the principles of the present disclosure have been described and illustrated with reference to exemplary embodiments, it will be appreciated that the illustrated embodiments may be varied in arrangement and detail and combined in any desired manner without departing from such principles. And while the foregoing discussion has focused on particular embodiments, other configurations are contemplated. In particular, although expressions such as “according to an embodiment of the present disclosure” and the like may be used herein, these phrases are intended to refer generally to the possibility of embodiments and are not intended to limit the present disclosure to a particular embodiment configuration. As used herein, these terms may refer to the same or different embodiments that may be combined with other embodiments.

상술한 예시적인 실시예들은 본 개시를 제한하는 것으로 해석되지 않아야 한다. 비록 몇몇 실시예들이 설명되었지만, 당업자는 본 개시의 신규한 교시 및 장점을 실질적으로 벗어나지 않으면서 이들 실시예들에 대한 많은 수정이 가능하다는 것을 쉽게 이해할 것이다. 따라서, 그러한 모든 수정은 청구 범위에 정의된 바와 같은 본 개시의 범위 내에 포함되는 것으로 의도된다.The above-described exemplary embodiments should not be construed as limiting the present disclosure. Although several embodiments have been described, those skilled in the art will readily appreciate that many modifications can be made to these embodiments without substantially departing from the novel teachings and advantages of the present disclosure. Accordingly, all such modifications are intended to be included within the scope of the present disclosure as defined in the claims.

본 개시의 실시예는 제한없이 다음의 진술로 확장될 수 있다:Embodiments of the present disclosure can be extended without limitation to the following statements:

진술 1. 본 개시의 실시예의 스토리지 디바이스는 데이터를 저장하는 스토리지 메모리; 상기 스토리지 디바이스와 호스트 머신 사이에 통신을 관리하는 호스트 인터페이스; 상기 호스트 머신으로부터 수신된 제1 어드레스를 상기 스토리지 메모리의 제2 어드레스로 변환하는 변환 계층; 상기 스토리지 메모리 내의 상기 제2 어드레스로부터 상기 데이터에 액세스하기 위한 스토리지 인터페이스; 및 상기 스토리지 디바이스의 특성을 결정하기 위한 인-스토리지 모니터링 엔진을 포함하고, 상기 특성은 상기 스토리지 디바이스의 레이턴시, 대역폭 및 보유를 포함하는 세트로부터 도출된다.Statement 1. A storage device of an embodiment of the present disclosure comprises: a storage memory for storing data; a host interface for managing communication between the storage device and a host machine; a translation layer for converting a first address received from the host machine into a second address of the storage memory; a storage interface for accessing the data from the second address in the storage memory; and an in-storage monitoring engine for determining a characteristic of the storage device, wherein the characteristic is derived from a set including a latency, a bandwidth, and a retention of the storage device.

진술 2. 본 개시의 실시예는 진술 1에 따른 상기 스토리지 디바이스는 솔리드 스테이트 드라이브 (SSD)를 포함하고; 상기 스토리지 메모리는 상기 데이터를 저장하는 플래시 메모리를 포함하고; 상기 변환 계층은 상기 호스트 머신으로부터 수신된 상기 제1 어드레스를 상기 플래시 메모리의 상기 제2 어드레스로 변환하는 플래시 변환 계층(FTL)을 포함하고; 상기 스토리지 인터페이스는 상기 플래시 메모리의 상기 제2 어드레스로부터 상기 데이터를 액세스하기 위한 플래시 인터페이스를 포함한다.Statement 2. An embodiment of the present disclosure comprises: the storage device according to statement 1 comprises a solid state drive (SSD); the storage memory comprises a flash memory storing the data; the translation layer comprises a flash translation layer (FTL) for translating the first address received from the host machine into the second address of the flash memory; and the storage interface comprises a flash interface for accessing the data from the second address of the flash memory.

진술 3. 본 개시의 실시예의 진술 1에 따른 상기 스토리지 디바이스는 상기 호스트 인터페이스, 상기 스토리지 인터페이스 및 상기 인-스토리지 모니터링 엔진을 포함하는 스토리지 디바이스 제어기를 추가적으로 포함한다.Statement 3. The storage device according to statement 1 of the embodiment of the present disclosure additionally includes a storage device controller including the host interface, the storage interface and the in-storage monitoring engine.

진술 4. 본 개시의 실시예의 진술 1에 따른 상기 스토리지 디바이스는 상기 인-스토리지 모니터링 엔진을 포함하는 다형성 디바이스 커널을 더 포함한다.Statement 4. The storage device according to statement 1 of the embodiment of the present disclosure further comprises a polymorphic device kernel including the in-storage monitoring engine.

진술 5. 본 개시의 실시예의 진술 1에 따른 상기 스토리지 디바이스의 상기 인-스토리지 모니터링 엔진은 상기 변환 계층에 의해서 영향을 받는 상기 특성 없이 상기 스토리지 디바이스의 상기 특성을 측정하기 위하여 동작한다.Statement 5. The in-storage monitoring engine of the storage device according to statement 1 of the embodiment of the present disclosure operates to measure the characteristic of the storage device without the characteristic being affected by the conversion layer.

진술 6. 본 개시의 실시예의 진술 1에 따른 상기 스토리지 디바이스의 상기 인-스토리지 모니터링 엔진은 상기 변환 계층에 의해서 영향을 받는 상기 특성을 포함하는 상기 스토리지 디바이스의 상기 특성을 측정하기 위하여 동작한다.Statement 6. The in-storage monitoring engine of the storage device according to statement 1 of the embodiment of the present disclosure operates to measure the characteristic of the storage device including the characteristic affected by the conversion layer.

진술 7. 본 개시의 실시예의 진술 6에 따른 상기 스토리지 디바이스의 상기 변환 계층은 상기 호스트 머신 상의 상기 애플리케이션에 특정된다.Statement 7. The conversion layer of the storage device according to statement 6 of the present disclosure is specific to the application on the host machine.

진술 8. 본 개시의 실시예의 진술 1에 따른 상기 스토리지 디바이스의 상기 인-스토리지 모니터링 엔진은 특정 형태의 프로파일링 명령에 대해 상기 스토리지 디바이스의 상기 특성을 측정할 수 있다.Statement 8. The in-storage monitoring engine of the storage device according to statement 1 of the embodiment of the present disclosure can measure the characteristic of the storage device for a specific type of profiling command.

진술 9. 본 개시의 실시예의 진술 8에 따른 상기 스토리지 디바이스의 상기 특정 형태의 프로파일링 명령은 상기 호스트 머신 상의 상기 애플리케이션에 의해 지정된다.Statement 9. The specific form of profiling command of the storage device according to statement 8 of the present disclosure is specified by the application on the host machine.

진술 10. 본 개시의 실시예의 진술 1에 따른 상기 스토리지 디바이스의 상기 인-스토리지 모니터링 엔진은 특정 세트의 요청 크기들을 사용하여 상기 스토리지 디바이스의 상기 특성을 측정하기 위하여 동작한다.Statement 10. The in-storage monitoring engine of the storage device according to statement 1 of the present disclosure operates to measure the characteristic of the storage device using a specific set of request sizes.

진술 11. 본 개시의 실시예의 진술 10에 따른 상기 스토리지 디바이스의 상기 특정 세트의 요청 크기들은 상기 호스트 머신 상의 상기 애플리케이션에 의해 지정된다.Statement 11. The request sizes of the specific set of storage devices according to statement 10 of the present disclosure are specified by the application on the host machine.

진술 12. 본 개시의 실시예의 진술 1에 따른 상기 스토리지 디바이스의 상기 인-스토리지 모니터링 엔진은 상기 스토리지 디바이스의 상기 특성을 주기적으로 측정하기 위하여 동작한다.Statement 12. The in-storage monitoring engine of the storage device according to statement 1 of the embodiment of the present disclosure operates to periodically measure the characteristic of the storage device.

진술 13. 본 개시의 실시예의 진술 12에 따른 상기 스토리지 디바이스의 상기 인-스토리지 모니터링 엔진은 상기 스토리지 디바이스의 상기 특성의 변화를 상기 호스트 머신에 보고하기 위하여 동작한다.Statement 13. The in-storage monitoring engine of the storage device according to statement 12 of the embodiment of the present disclosure operates to report a change in the characteristic of the storage device to the host machine.

진술 14. 본 개시의 실시예의 진술 1에 따른 상기 스토리지 디바이스의 상기 인-스토리지 모니터링 엔진은: 상기 스토리지 디바이스 내에 복수의 가상 스토리지 디바이스들에 관한 정보를 저장하는 가상 스토리지 테이블; 및 상기 스토리지 디바이스 내의 복수의 가상 스토리지 디바이스들 중 적어도 하나에 대한 복수의 프로파일링 명령들을 관리하기 위한 프로파일링 스테이션을 포함한다.Statement 14. The in-storage monitoring engine of the storage device according to statement 1 of the embodiment of the present disclosure comprises: a virtual storage table storing information about a plurality of virtual storage devices within the storage device; and a profiling station for managing a plurality of profiling commands for at least one of the plurality of virtual storage devices within the storage device.

진술 15. 본 개시의 실시예의 진술 14에 따른 상기 스토리지 디바이스의 상기 복수개의 프로파일링 명령들 중 적어도 하나는 상기 스토리지 디바이스 내 상기 복수개의 가상 스토리지 디바이스들 중 적어도 하나에 대해 수행하기 위한 특정 형태의 프로파일링 명령을 포함한다.Statement 15. At least one of the plurality of profiling commands of the storage device according to statement 14 of the present disclosure comprises a specific form of a profiling command to perform on at least one of the plurality of virtual storage devices within the storage device.

진술 16. 본 개시의 실시예의 진술 14에 따른 상기 스토리지 디바이스의 상기 복수개의 프로파일링 명령들 중 적어도 하나는 상기 프로파일링 명령을 수행할 때 사용되는 적어도 하나의 요청 크기를 포함한다.Statement 16. At least one of the plurality of profiling commands of the storage device according to statement 14 of the present disclosure comprises at least one request size used when performing the profiling command.

진술 17. 본 개시의 실시예의 진술 14에 따른 상기 스토리지 디바이스의 상기 인-스토리지 모니터링 엔진은 상기 복수개의 프로파일링 명령들 중 적어도 하나를 실행하는 방법에 관한 정보를 저장하는 프로파일링 코드 레지스터를 추가적으로 포함한다.Statement 17. The in-storage monitoring engine of the storage device according to statement 14 of the present disclosure additionally includes a profiling code register that stores information regarding how to execute at least one of the plurality of profiling commands.

진술 18. 본 개시의 실시예의 진술 17에 따른 상기 스토리지 디바이스의 상기 프로파일링 코드 레지스터는 사용자 구성가능하다.Statement 18. The profiling code register of the storage device according to statement 17 of the present disclosure is user configurable.

진술 19. 본 개시의 실시예의 진술 14에 따른 상기 스토리지 디바이스의 상기 인-스토리지 모니터링 엔진은 이전 프로파일링 명령들에 관한 정보를 저장하기 위하여 성능 테이블을 추가적으로 포함한다.Statement 19. The in-storage monitoring engine of the storage device according to statement 14 of the present disclosure additionally includes a performance table to store information about previous profiling commands.

진술 20. 본 개시의 실시예의 진술 19에 따른 상기 스토리지 디바이스의 상기 복수개의 프로파일링 명령들 중 적어도 하나는 상기 성능 테이블 내 정보를 만족할 수 있다.Statement 20. At least one of the plurality of profiling commands of the storage device according to statement 19 of the embodiment of the present disclosure may satisfy information in the performance table.

진술 21. 본 개시의 실시예의 진술 14에 따른 상기 스토리지 디바이스의 상기 복수개의 프로파일링 명령들 중 적어도 하나는 우선 순위를 포함할 수 있다.Statement 21. At least one of the plurality of profiling commands of the storage device according to statement 14 of the present disclosure may include a priority.

진술 22. 본 개시의 실시예의 방법은 스토리지 디바이스에서 요청자로부터 프로파일링 명령을 수신하고 - 상기 프로파일링 명령은 결정되는 상기 스토리지 디바이스의 특성을 지정함 -; 결과를 생성하기 위하여 상기 스토리지 디바이스에서 내부적으로 상기 프로파일링 명령을 수행하고; 상기 스토리지 디바이스로부터 상기 요청자에게 상기 결과를 리턴하는 것을 포함한다.Statement 22. A method of an embodiment of the present disclosure comprises receiving a profiling command from a requester in a storage device, the profiling command specifying a characteristic of the storage device to be determined; performing the profiling command internally in the storage device to generate a result; and returning the result to the requester from the storage device.

진술 23. 본 개시의 실시예의 진술 22에 따른 상기 방법의 상기 스토리지 디바이스에서 상기 요청자로부터 상기 프로파일링 명령을 수신하는 것은 솔리드 스테이브 드라이브(SSD)에서 상기 요청자로부터 상기 프로파일링 명령을 수신하는 것을 포함하고, 상기 스토리지 디바이스에서 내부적으로 상기 프로파일링 명령을 수행하는 것은 상기 결과를 생성하기 위하여 상기 SSD에서 내부적으로 상기 프로파일링 명령을 수행하는 것을 포함하고, 상기 스토리지 디바이스로부터 상기 요청자에게 상기 결과를 리턴하는 것은 상기 SSD로부터 상기 요청자에게 상기 결과를 리턴하는 것을 포함한다.Statement 23. In the method according to statement 22 of the present disclosure, receiving the profiling command from the requester in the storage device comprises receiving the profiling command from the requester in a solid state drive (SSD), performing the profiling command internally in the storage device comprises performing the profiling command internally in the SSD to generate the result, and returning the result to the requester from the storage device comprises returning the result to the requester from the SSD.

진술 24. 본 개시의 실시예의 진술 22에 따른 상기 방법의 상기 스토리지 디바이스에서 상기 요청자로부터 상기 프로파일링 명령을 수신하는 것은 상기 스토리지 디바이스에서 애플리케이션으로부터 상기 프로파일링 명령을 수신하는 것을 포함한다.Statement 24. Receiving the profiling command from the requester in the storage device according to statement 22 of the embodiment of the present disclosure comprises receiving the profiling command from an application in the storage device.

진술 25. 본 개시의 실시예의 진술 22에 따른 상기 방법의 상기 스토리지 디바이스에서 상기 요청자로부터 상기 프로파일링 명령을 수신하는 것은 상기 스토리지 디바이스에서 호스트 머신으로부터 상기 프로파일링 명령을 수신하는 것을 포함한다.Statement 25. Receiving the profiling command from the requester in the storage device according to statement 22 of the embodiment of the present disclosure comprises receiving the profiling command from a host machine in the storage device.

진술 26. 본 개시의 실시예의 진술 22에 따른 상기 방법의 상기 스토리지 디바이스에서 상기 요청자로부터 상기 프로파일링 명령을 수신하는 것은 상기 프로파일링 명령을 수행할 때 사용하기 위하여 상기 요청자로부터 임의의 요청 크기들을 수신함에 없이 상기 스토리지 디바이스에서 상기 요청자로부터 상기 프로파일링 명령을 수신하는 것을 포함한다.Statement 26. The method according to statement 22 of the present disclosure, wherein receiving the profiling command from the requester at the storage device comprises receiving the profiling command from the requester at the storage device without receiving any request sizes from the requester for use in performing the profiling command.

진술 27. 본 개시의 실시예의 진술 22에 따른 상기 방법의 상기 결과를 생성하기 위하여 상기 스토리지 디바이스에서 내부적으로 상기 프로파일링 명령을 수행하는 것은 상기 결과를 생성하기 위하여 상기 스토리지 디바이스 내 가상 스토리지 디바이스에서 상기 프로파일링 명령을 수행하는 것을 포함한다.Statement 27. Executing the profiling command internally in the storage device to generate the result of the method according to statement 22 of the present disclosure comprises performing the profiling command in a virtual storage device within the storage device to generate the result.

진술 28. 본 개시의 실시예의 진술 22에 따른 상기 방법의 상기 결과를 생성하기 위하여 상기 스토리지 디바이스에서 내부적으로 상기 프로파일링 명령을 수행하는 것은 상기 결과를 생성하기 위하여 상기 결과로서 상기 스토리지 디바이스의 레이턴시를 결정하는 것과 상기 결과로서 상기 스토리지 디바이스의 대역폭을 결정하는 것과, 상기 결과로서 상기 스토리지 디바이스의 보유를 결정하는 것 중 하나를 포함한다.Statement 28. The method according to statement 22 of the present disclosure, wherein performing the profiling command internally in the storage device to generate the result comprises one of determining latency of the storage device as the result, determining bandwidth of the storage device as the result, and determining retention of the storage device as the result.

진술 29. 본 개시의 실시예의 진술 28에 따른 상기 방법의 상기 스토리지 디바이스에서 상기 요청자로부터 상기 프로파일링 명령을 수신하는 것은 상기 프로파일링 명령을 실행할 때 사용하기 위하여 상기 요청자로부터 임의의 요청 크기들을 수신하지 않고 상기 스토리지 디바이스에서 상기 요청자로부터 상기 프로파일링 명령을 수신하는 것을 포함하고, 상기 결과로서 상기 스토리지 디바이스의 상기 레이턴시를 결정하는 것은 내부적으로 발생된 요청 크기들을 사용하여 상기 결과로서 상기 스토리지 디바이스의 상기 레이턴시를 결정하는 것을 포함한다.Statement 29. The method according to statement 28 of the present disclosure, wherein receiving the profiling command from the requester at the storage device comprises receiving the profiling command from the requester at the storage device without receiving any request sizes from the requester for use in executing the profiling command, and determining the latency of the storage device as a result comprises determining the latency of the storage device as a result using internally generated request sizes.

진술 30. 본 개시의 실시예의 진술 28에 따른 상기 방법의 상기 스토리지 디바이스에서 상기 요청자로부터 상기 프로파일링 명령을 수신하는 것은 상기 스토리지 디바이스에서 상기 요청자로부터 상기 프로파일링 명령과 복수의 요청 크기들을 수신하는 것을 포함하고, 상기 결과로서 상기 스토리지 디바이스의 상기 레이턴시를 결정하는 것은 상기 요청 크기들을 사용하여 상기 결과로서 상기 스토리지 디바이스의 상기 레이턴시를 결정하는 것을 포함한다.Statement 30. In the method according to statement 28 of the present disclosure, receiving the profiling command from the requester at the storage device comprises receiving the profiling command and a plurality of request sizes from the requester at the storage device, and determining the latency of the storage device as the result comprises determining the latency of the storage device as the result using the request sizes.

진술 31. 본 개시의 실시예의 진술 28에 따른 방법의 상기 스토리지 디바이스에서 상기 요청자로부터 상기 프로파일링 정보를 수신하는 것은 상기 프로파일링 명령을 실행할 때 사용하기 위하여 상기 요청자로부터 임의의 요청 크기들을 수신하지 않고 상기 스토리지 디바이스에서 상기 요청자로부터 상기 프로파일링 명령을 수신하는 것을 포함하고, 상기 결과로서 상기 스토리지 디바이스의 상기 대역폭을 결정하는 것은 내부적으로 발생된 요청 크기들을 사용하여 상기 결과로서 상기 스토리지 디바이스의 상기 대역폭을 결정하는 것을 포함한다.Statement 31. The method according to statement 28 of the present disclosure, wherein receiving the profiling information from the requester at the storage device comprises receiving the profiling command at the storage device from the requester without receiving any request sizes from the requester for use in executing the profiling command, and wherein determining the bandwidth of the storage device as a result comprises determining the bandwidth of the storage device as a result using internally generated request sizes.

진술 32. 본 개시의 실시예의 진술 28에 따른 방법의 상기 스토리지 디바이스에서 상기 요청자로부터 상기 프로파일링 정보를 수신하는 것은 상기 스토리지 디바이스에서 상기 요청자로부터 상기 프로파일링 명령 및 복수의 요청 크기들을 수신하는 것을 포함하고, 상기 결과로서 상기 스토리지 디바이스의 상기 대역폭을 결정하는 것은 상기 요청 크기들을 사용하여 상기 결과로서 상기 스토리지 디바이스의 상기 대역폭을 결정하는 것을 포함한다.Statement 32. The method according to statement 28 of the present disclosure, wherein receiving the profiling information from the requester in the storage device comprises receiving the profiling command and a plurality of request sizes from the requester in the storage device, and determining the bandwidth of the storage device as the result comprises determining the bandwidth of the storage device as the result using the request sizes.

진술 33. 본 개시의 실시예의 진술 22에 따른 방법의 상기 결과를 생성하기 위하여 상기 스토리지 디바이스 내부적으로 상기 프로파일링 명령을 수행하는 것은 성능 테이블 내에 상기 결과를 저장하는 것을 포함한다.Statement 33. Executing the profiling command internally in the storage device to generate the result of the method according to statement 22 of the present disclosure includes storing the result in a performance table.

진술 34. 본 개시의 실시예의 진술 22에 따른 방법은 상기 스토리지 디바이스에서 제2 요청자로부터 제2 프로파일링 명령을 수신하고, 상기 성능 테이블 내 상기 결과가 상기 제2 프로파일링 명령을 만족하는지를 파악하기 위하여 상기 성능 테이블을 검사하고, 만일 상기 결과가 상기 제2 프로파일링 명령을 만족하면, 상기 성능 테이블 내 상기 결과를 상기 스토리지 디바이스로부터 상기 요청자에게 리턴하는 것을 추가적으로 포함한다.Statement 34. A method according to statement 22 of the present disclosure further comprises receiving a second profiling command from a second requester at the storage device, examining the performance table to determine whether the result in the performance table satisfies the second profiling command, and if the result satisfies the second profiling command, returning the result in the performance table from the storage device to the requester.

진술 35. 본 개시의 실시예의 진술 22에 따른 방법은 상기 스토리지 디바이스 내 적어도 하나의 가상 스토리지 디바이스에 관한 정보를 저장하는 가상 스토리지 테이블을 구축하는 것을 추가적으로 포함한다.Statement 35. The method according to statement 22 of the present disclosure further comprises constructing a virtual storage table storing information about at least one virtual storage device in the storage device.

진술 36. 본 개시의 실시예의 진술 22에 따른 방법의 상기 결과를 생성하기 위하여 상기 스토리지 테이블에서 내부적으로 상기 프로파일링 명령을 수행하는 것은 상기 요청자로부터 수신된 상기 프로파일링 명령을 내부 프로파일링 명령으로 변환하고, 상기 결과를 생성하기 위하여 상기 내부 프로파일링 명령을 수행하는 것을 포함한다.Statement 36. The method according to statement 22 of the present disclosure, wherein performing the profiling command internally in the storage table to generate the result comprises converting the profiling command received from the requester into an internal profiling command, and performing the internal profiling command to generate the result.

진술 37. 본 개시의 실시예의 진술 22에 따른 방법의 상기 결과를 생성하기 위하여 상기 스토리지 테이블에서 내부적으로 상기 프로파일링 명령을 수행하는 것은 변환 계층에 의해서 영향을 받는 상기 특성 없이 상기 스토리지 디바이스의 상기 특성을 측정하기 위하여 상기 스토리지 디바이스에서 내부적으로 상기 프로파일링 명령을 수행하는 것을 포함한다.Statement 37. The method according to statement 22 of the present disclosure, wherein performing the profiling command internally in the storage table to generate the result comprises performing the profiling command internally in the storage device to measure the characteristic of the storage device without the characteristic being affected by the conversion layer.

진술 38. 본 개시의 실시예의 진술 22에 따른 방법의 상기 결과를 생성하기 위하여 상기 스토리지 테이블에서 내부적으로 상기 프로파일링 명령을 수행하는 것은 변환 계층에 의해서 영향을 받는 상기 특성을 포함하는 상기 스토리지 디바이스의 상기 특성을 측정하기 위하여 상기 스토리지 디바이스에서 내부적으로 상기 프로파일링 명령을 수행하는 것을 포함한다.Statement 38. The method according to statement 22 of the present disclosure, wherein performing the profiling command internally in the storage table to generate the result comprises performing the profiling command internally in the storage device to measure the characteristic of the storage device including the characteristic affected by the transformation layer.

진술 39. 본 개시의 실시예의 물품(article)은 비 일시적 명령들이 저장된 유형의 스토리지 매체를 포함하고, 머신에 의해서 실행될 때, 상기 명령들은 스토리지 디바이스에서 요청자로부터 프로파일링 명령을 수신하고 -상기 프로파일링 명령은 결정된 상기 스토리지 디바이스의 특성을 지정함 -; 결과를 생성하기 위하여 상기 스토리지 디바이스에서 내부적으로 상기 프로파일링 명령을 수행하고; 상기 스토리지 디바이스로부터 상기 요청자에게 결과를 리턴하는 것을 포함한다.Statement 39. An article of the present disclosure comprises a tangible storage medium having non-transitory instructions stored thereon, wherein when executed by a machine, the instructions comprise: receiving a profiling command from a requester at the storage device, the profiling command specifying a determined characteristic of the storage device; performing the profiling command internally at the storage device to produce a result; and returning a result from the storage device to the requester.

진술 40. 본 개시의 실시예의 진술 39에 따른 상기 물품의 상기 스토리지 디바이스에서 상기 요청자로부터 상기 프로파일링 명령을 수신하는 것은 솔리드 스테이트 드라이버(SSD)에서 상기 요청자로부터 상기 프로파일링 명령을 수신하는 것을 포함하고, 상기 결과를 생성하기 위하여 상기 스토리지 디바이스에서 내부적으로 상기 프로파일링 명령을 수행하는 것은 상기 결과를 생성하기 위하여 상기 SSD에서 내부적으로 상기 프로파일링 명령을 수행하는 것을 포함하고, 상기 스토리지 디바이스로부터 상기 요청자에게 상기 결과를 리턴하는 것은 상기 SSD로부터 상기 요청자에게 상기 결과를 리턴하는 것을 포함한다.Statement 40. In the article according to statement 39 of the present disclosure, receiving the profiling command from the requester in the storage device comprises receiving the profiling command from the requester in a solid state drive (SSD), performing the profiling command internally in the storage device to generate the result comprises performing the profiling command internally in the SSD to generate the result, and returning the result to the requester from the storage device comprises returning the result to the requester from the SSD.

진술 41. 본 개시의 실시예의 진술 39에 따른 상기 물품의 상기 스토리지 디바이스에서 상기 요청자로부터 상기 프로파일링 명령을 수신하는 것은 상기 프로파일링 명령을 수행할 때 사용하기 위하여 상기 요청자로부터 임의의 요청 크기들을 수신하지 않고 상기 스토리지 디바이스에서 상기 요청자로부터 상기 프로파일링 명령을 수신하는 것을 포함한다.Statement 41. Receiving the profiling command from the requester in the storage device of the article according to statement 39 of the present disclosure comprises receiving the profiling command from the requester in the storage device without receiving any request sizes from the requester for use in performing the profiling command.

진술 42. 본 개시의 실시예의 진술 39에 따른 상기 물품의 상기 스토리지 디바이스에서 상기 요청자로부터 상기 프로파일링 명령을 수신하는 것은 상기 스토리지 디바이스에서 호스트 머신으로부터 상기 프로파일링 명령을 수신하는 것을 포함한다.Statement 42. Receiving the profiling command from the requester in the storage device of the article according to statement 39 of the present disclosure comprises receiving the profiling command from a host machine in the storage device.

진술 43. 본 개시의 실시예의 진술 39에 따른 상기 물품의 상기 스토리지 디바이스에서 상기 요청자로부터 상기 프로파일링 명령을 수신하는 것은 상기 프로파일링 명령을 수행할 때 사용하기 위하여 상기 요청자로부터 임의의 요청 크기들을 수신하지 않고 상기 스토리지 디바이스에서 상기 요청자로부터 상기 프로파일링 명령을 수신하는 것을 포함한다.Statement 43. Receiving the profiling command from the requester in the storage device of the article according to statement 39 of the present disclosure comprises receiving the profiling command from the requester in the storage device without receiving any request sizes from the requester for use in performing the profiling command.

진술 44. 본 개시의 실시예의 진술 39에 따른 상기 물품의 상기 결과를 생성하기 위하여 상기 스토리지 디바이스에서 내부적으로 상기 프로파일링 명령을 수행하는 것은 상기 결과를 생성하기 위하여 상기 스토리지 디바이스 내의 가상 스토리지 디바이스에서 상기 프로파일링 명령을 수행하는 것을 포함한다.Statement 44. Executing the profiling command internally in the storage device to produce the result of the article according to statement 39 of the present disclosure comprises performing the profiling command in a virtual storage device within the storage device to produce the result.

진술 45. 본 개시의 실시예의 진술 39에 따른 상기 물품의 상기 결과를 생성하기 위하여 상기 스토리지 디바이스에서 내부적으로 상기 프로파일링 명령을 수행하는 것은 상기 결과로서 상기 스토리지 디바이스의 레이턴시를 결정하는 것, 상기 결과로서 상기 스토리지 디바이스의 대역폭을 결정하는 것, 및 상기 결과로서 상기 스토리지 디바이스의 보유를 결정하는 것 중 하나를 포함한다.Statement 45. Executing the profiling command internally in the storage device to produce the result of the article according to statement 39 of the present disclosure comprises one of determining latency of the storage device as the result, determining bandwidth of the storage device as the result, and determining retention of the storage device as the result.

진술 46. 본 개시의 실시예의 진술 45에 따른 상기 물품의 상기 스토리지 디바이스에서 상기 요청자로부터 상기 프로파일링 명령을 수신하는 것은 상기 프로파일링 명령을 실행할 때 사용하기 위하여 상기 요청자로부터 임의의 요청 크기들을 수신하지 않고 상기 스토리지 디바이스에서 상기 요청자로부터 상기 프로파일링 명령을 수신하는 것을 포함하고, 상기 결과로서 상기 스토리지 디바이스의 상기 레이턴시를 결정하는 것은 내부적으로 생성된 요청 크기들을 사용하여 상기 결과로서 상기 스토리지 디바이스의 상기 레이턴시를 결정하는 것을 포함한다.Statement 46. In the article according to statement 45 of the present disclosure, receiving the profiling command from the requester in the storage device comprises receiving the profiling command from the requester in the storage device without receiving any request sizes from the requester for use in executing the profiling command, and determining the latency of the storage device as a result comprises determining the latency of the storage device as a result using internally generated request sizes.

진술 47. 본 개시의 실시예의 진술 45에 따른 상기 물품의 상기 스토리지 디바이스에서 상기 요청자로부터 상기 프로파일링 명령을 수신하는 것은 상기 스토리지 다바이스에서 상기 요청자로부터 상기 프로파일링 명령 및 복수의 요청 크기들을 수신하는 것을 포함하고, 상기 스토리지 디바이스의 상기 레이턴시를 결정하는 것은 상기 요청 크기들을 사용하여 상기 결과로서 상기 스토리지 디바이스의 상기 레이턴시를 결정하는 것을 포함한다.Statement 47. In the article according to statement 45 of the present disclosure, receiving the profiling command from the requester in the storage device comprises receiving the profiling command and a plurality of request sizes from the requester in the storage device, and determining the latency of the storage device comprises determining the latency of the storage device as a result using the request sizes.

진술 48. 본 개시의 실시예의 진술 45에 따른 상기 물품의 상기 스토리지 디바이스에서 상기 요청자로부터 상기 프로파일링 명령을 수신하는 것은 상기 프로파일링 명령을 실행할 때 사용하기 위하여 상기 요청자로부터 임의의 요청 크기들을 수신하지 않고 상기 스토리지 디바이스에서 상기 요청자로부터 상기 프로파일링 명령을 수신하는 것을 포함하고, 상기 결과로서 상기 스토리지 디바이스의 상기 대역폭을 결정하는 것은 내부적으로 생성된 요청 크기들을 사용하여 상기 결과로서 상기 스토리지 디바이스의 상기 대역폭을 결정하는 것을 포함한다.Statement 48. In the article according to statement 45 of the present disclosure, receiving the profiling command from the requester in the storage device comprises receiving the profiling command from the requester in the storage device without receiving any request sizes from the requester for use in executing the profiling command, and determining the bandwidth of the storage device as a result comprises determining the bandwidth of the storage device as a result using internally generated request sizes.

진술 49. 본 개시의 실시예의 진술 45에 따른 상기 물품의 상기 스토리지 디바이스에서 상기 요청자로부터 상기 프로파일링 명령을 수신하는 것은 상기 스토리지 디바이스에서 상기 요청자로부터 상기 프로파일링 명령 및 복수의 요청 크기들을 수신하는 것을 포함하고, 상기 결과로서 상기 스토리지 디바이스의 상기 대역폭을 결정하는 것은 상기 요청 크기들을 사용하여 상기 결과로서 상기 스토리지 디바이스의 상기 대역폭을 결정하는 것을 포함한다.Statement 49. In the article according to statement 45 of the present disclosure, receiving the profiling command from the requester in the storage device comprises receiving the profiling command and a plurality of request sizes from the requester in the storage device, and determining the bandwidth of the storage device as a result comprises determining the bandwidth of the storage device as a result using the request sizes.

진술 50. 본 개시의 실시예의 진술 39에 따른 상기 물품의 상기 결과를 생성하기 위하여 상기 스토리지 디바이스에서 내부적으로 상기 프로파일링 명령을 수행하는 것은 성능 테이블 내에 상기 결과를 저장하는 것을 포함한다.Statement 50. Executing the profiling command internally in the storage device to generate the result of the article according to statement 39 of the present disclosure comprises storing the result in a performance table.

진술 51. 본 개시의 실시예의 진술 39에 따른 상기 물품의 상기 유형의 스토리지 매체에 저장되는 상기 비 일시적 명령들을 추가적으로 포함하고, 상기 머신에 의해서 실행될 때, 상기 명령들은 상기 스토리지 디바이스에서 제2 요청자로부터 제2 프로파일링 명령을 수신하고, 상기 성능 테이블 내 상기 결과가 상기 제2 프로파일링 명령을 만족하는지를 파악하기 위하여 상기 성능 테이블을 조사하고, 만일 상기 결과가 상기 제2 프로파일링 명령을 만족하면, 상기 스토리지 디바이스로부터 상기 요청자에게 상기 성능 테이블 내 상기 결과를 리턴하는 것을 포함한다.Statement 51. The article of claim 39 of the present disclosure further comprising non-transitory instructions stored on the storage medium of the type, wherein when executed by the machine, the instructions comprise receiving a second profiling command from a second requester at the storage device, examining the performance table to determine whether the result in the performance table satisfies the second profiling command, and if the result satisfies the second profiling command, returning the result in the performance table from the storage device to the requester.

진술 52. 본 개시의 실시예의 진술 39에 따른 상기 물품의 상기 유형의 스토리지 매체에 저장되는 상기 비 일시적 명령들을 추가적으로 포함하고, 상기 머신에 의해서 실행될 때, 상기 명령들은 상기 스토리지 디바이스 내에 적어도 하나의 가상 스토리지 디바이스에 대한 정보를 저장하는 가상 스토리지 테이블을 구축하는 것을 포함한다.Statement 52. The article of claim 39 of the present disclosure further comprising non-transitory instructions stored in the storage medium of the type, wherein when executed by the machine, the instructions comprise constructing a virtual storage table storing information about at least one virtual storage device within the storage device.

진술 53. 본 개시의 실시예의 진술 39에 따른 상기 물품의 상기 결과를 생성하기 위하여 상기 스토리지 디바이스에서 내부적으로 상기 프로파일링 명령을 수행하는 것은 상기 요청자로부터 수신된 상기 프로파일링 명령을 내부 프로파일링 명령으로 변환하고, 상기 결과를 생성하기 위하여 상기 내부 프로파일링 명령을 수행하는 것을 포함한다.Statement 53. Executing the profiling command internally in the storage device to generate the result of the article according to statement 39 of the present disclosure comprises converting the profiling command received from the requester into an internal profiling command, and executing the internal profiling command to generate the result.

진술 54. 본 개시의 실시예의 진술 39에 따른 상기 물품의 상기 결과를 생성하기 위하여 상기 스토리지 디바이스에서 내부적으로 상기 프로파일링 명령을 수행하는 것은 변환 계층에 의해서 영향을 받는 상기 특성 없이 상기 스토리지 디바이스의 상기 특성을 측정하기 위하여 상기 스토리지 디바이스에서 내부적으로 상기 프로파일링 명령을 수행하는 것을 포함한다.Statement 54. Performing said profiling command internally in said storage device to produce said result of said article according to statement 39 of the present disclosure comprises performing said profiling command internally in said storage device to measure said characteristic of said storage device without said characteristic being affected by a conversion layer.

진술 55. 본 개시의 실시예의 진술 39에 따른 상기 물품의 상기 결과를 생성하기 위하여 상기 스토리지 디바이스에서 내부적으로 상기 프로파일링 명령을 수행하는 것은 변환 계층에 의해서 영향을 받는 상기 특성을 포함하여 상기 스토리지 디바이스의 상기 특성을 측정하기 위하여 상기 스토리지 디바이스에서 내부적으로 상기 프로파일링 명령을 수행하는 것을 포함한다.Statement 55. Performing said profiling command internally in said storage device to produce said result of said article according to statement 39 of the present disclosure comprises performing said profiling command internally in said storage device to measure said characteristic of said storage device, including said characteristic affected by a transformation layer.

결과적으로, 본원에 기술된 실시예들에 대한 다양한 순열을 고려하여, 상세한 설명 및 첨부 자료는 단지 예시적인 것으로 의도되며, 본 개시의 범위를 제한하는 것으로 간주되어서는 안된다. 그러므로, 본 개시로서 청구되는 것은 다음의 청구 범위 및 그 등가물의 범주 및 사상 내에 있을 수 있는 모든 그러한 수정이다.Consequently, in view of the various permutations of the embodiments described herein, the detailed description and accompanying materials are intended to be exemplary only and should not be considered limiting the scope of the present disclosure. Therefore, what is claimed as the present disclosure is all such modifications that may come within the scope and spirit of the following claims and their equivalents.

105: 데이터센터 110, 115, 120, 125, 130: 호스트 머신들
135: 네트워크 140: 클라이언트 머신
205: 프로세서 210: 메모리
215: 네트워크 커넥터 220: SSD, 스토리지 디바이스
320: 버스 345: 사용자 인터페이스
350: I/O 엔진 410: SSD 제어기
405: 호스트 머신에 정보를 송수신하기 위한 회로
415: 스토리지 메모리 420: 호스트 인터페이스
425: 인-스토리지 모니터링 엔진 430: 플래시 변환 계층
435: 에러 정정 코드 440: 플래시 인터페이스
505, 510, 515, 520, 1211a, 1211b, 1211c: 애플리케이션
525, 530, 535, 540: 프로세서 545: 메모리
550, 555, 560, 565: 다형성 인터페이스 계층
570: 다형성 인터페이스 커널 575: 하드웨어 애플리케이션 계층
605: 레이턴시 610: 대역폭
615: 보유 620: 라이트 증폭 팩터(WAF)
625: 초당 트랜잭션(TPS) 630: 큐잉 레이턴시
710: 가상 플래시 인터페이스 720, 725: 요청 크기
705, 715: 측정 805: op 큐
810: 디코더 815: 명령 큐
820: 코드 레지스터 825: 가상 스토리지 테이블
830: 성능 테이블 835: 프로파일링 스테이션
840: 이벤트 트리거
1200: 다형성 스토리지 디바이스(PSD) 펌웨어 스택
1210: 애플리케이션 컨테이너 1252: PSD 인터페이스 계층
1255: PSD 커널 1256: 컨텍스트 관리자
1257: 메시지 라우터 1258: PSD 라이브러리들
1230: 가상 플래시 계층 1235: 플래시 제어기 계층
1240: 플래시 인터페이스 계층
105: Data Center 110, 115, 120, 125, 130: Host Machines
135: Network 140: Client Machine
205: Processor 210: Memory
215: Network connector 220: SSD, storage device
320: Bus 345: User Interface
350: I/O Engine 410: SSD Controller
405: Circuit for sending and receiving information to the host machine.
415: Storage Memory 420: Host Interface
425: In-Storage Monitoring Engine 430: Flash Conversion Layer
435: Error correction code 440: Flash interface
505, 510, 515, 520, 1211a, 1211b, 1211c: Applications
525, 530, 535, 540: Processor 545: Memory
550, 555, 560, 565: Polymorphic interface hierarchy
570: Polymorphic Interface Kernel 575: Hardware Application Layer
605: Latency 610: Bandwidth
615: Hold 620: Light Amplification Factor (WAF)
625: Transactions per second (TPS) 630: Queuing latency
710: Virtual Flash Interface 720, 725: Request Size
705, 715: measurement 805: op queue
810: Decoder 815: Command Queue
820: Code register 825: Virtual storage table
830: Performance Table 835: Profiling Station
840: Event Trigger
1200: Polymorphic Storage Device (PSD) Firmware Stack
1210: Application Container 1252: PSD Interface Layer
1255: PSD Kernel 1256: Context Manager
1257: Message Router 1258: PSD Libraries
1230: Virtual Flash Layer 1235: Flash Controller Layer
1240: Flash Interface Layer

Claims (20)

하나 이상의 애플리케이션들을 포함하는 애플리케이션 컨테이너 - 상기 하나 이상의 애플리케이션들 각각은 하나 이상의 네임스페이스들에서 실행됨 -;
데이터를 저장하는 플래시 메모리;
스토리지 디바이스와 호스트 머신 사이에 통신을 관리하는 호스트 인터페이스;
상기 호스트 머신으로부터 수신된 제1 어드레스를 상기 플래시 메모리의 제2 어드레스를 변환하는 플래시 변환 계층;
상기 플래시 메모리의 상기 제2 어드레스로부터 상기 데이터를 액세스하는 플래시 인터페이스; 및
인-스토리지 모니터링 엔진을 포함하는 상기 스토리지 디바이스 내에 구현된 다형성 디바이스 커널을 포함하고,
상기 다형성 디바이스 커널은 복수의 패킷들을 상기 스토리지 디바이스 상에서 실행되는 상기 애플리케이션에서 수신하고, 상기 복수의 패킷들과 관련된 상기 네임스페이스에 기초하여 상기 플래시 인터페이스를 제공하고,
상기 인-스토리지 모니터링 엔진은 성능 테이블 내 상기 호스트 머신으로부터 수신된 프로파일링 명령의 매칭의 적어도 일부에 기초하여 런-타임으로 상기 스토리지 디바이스의 동적 특성을 결정하고,
상기 동적 특성은 상기 스토리지 디바이스의 레이턴시, 대역폭, 보유, 라이트 증폭 팩터(WAF), 초당 트랜잭션(TPS), 및 큐잉 레이턴시를 포함하는 세트로부터 도출되는 스토리지 디바이스.
An application container comprising one or more applications, each of said one or more applications running in one or more namespaces;
Flash memory that stores data;
A host interface that manages communication between the storage device and the host machine;
A flash translation layer that converts a first address received from the host machine into a second address of the flash memory;
a flash interface for accessing the data from the second address of the flash memory; and
Comprising a polymorphic device kernel implemented within said storage device including an in-storage monitoring engine,
The polymorphic device kernel receives a plurality of packets from the application running on the storage device, and provides the flash interface based on the namespace associated with the plurality of packets,
The in-storage monitoring engine determines dynamic characteristics of the storage device at run-time based on at least a portion of the matching of profiling commands received from the host machine within the performance table,
The above dynamic characteristics are derived from a set including latency, bandwidth, retention, light amplification factor (WAF), transactions per second (TPS), and queuing latency of the storage device.
제1 항에 있어서, 상기 애플리케이션은 2개 이상의 네임스페이스들에서 실행되는 스토리지 디바이스.In the first aspect, the application is a storage device running in two or more namespaces. 제1 항에 있어서, 상기 네임스페이스는 2개의 애플리케이션들에 의해서 공유되는 스토리지 디바이스.In the first paragraph, the namespace is a storage device shared by two applications. 제1 항에 있어서, 상기 스토리지 디바이스는 태깅 기능, 압축 기능, 데이터베이스 기능, 패턴 매칭 기능, 머신 러닝 기능, 및 변환 기능의 하나를 수행할 수 있는 스토리지 디바이스.In the first paragraph, the storage device is a storage device capable of performing one of a tagging function, a compression function, a database function, a pattern matching function, a machine learning function, and a conversion function. 제1 항에 있어서, 상기 인-스토리지 모니터링 엔진은
런-타임으로 상기 스토리지 디바이스의 상기 동적 특성을 결정하기 위하여 상기 스토리지 디바이스에서 요청자로부터 상기 프로파일링 명령을 실행하고,
상기 스토리지 디바이스로부터 상기 요청자로 결과를 리턴하고,
상기 스토리지 디바이스에서 제2 요청자로부터 제2 프로파일링 명령을 수신하고,
상기 성능 테이블이 상기 제2 프로파일링 명령을 만족하는 상기 결과를 포함하는지를 판단하고,
상기 제2 프로파일링 명령을 만족하는 상기 결과를 포함하는 상기 성능 테이블의 적어도 일부에 기초하여, 상기 제2 프로파일링 명령을 수행하지 않고 상기 성능 테이블 내 상기 결과를 상기 스토리지 디바이스로부터 상기 제2 요청자로 리턴하는 스토리지 디바이스.
In the first paragraph, the in-storage monitoring engine
Executing the profiling command from the requester on the storage device to determine the dynamic characteristics of the storage device at run-time;
Returning the result from the storage device to the requester,
Receive a second profiling command from a second requester in the above storage device,
Determine whether the above performance table includes the result satisfying the second profiling command,
A storage device that returns the result in the performance table from the storage device to the second requester without performing the second profiling command, based on at least a portion of the performance table including the result satisfying the second profiling command.
제1 항에 있어서, 상기 스토리지 디바이스는 상기 호스트 인터페이스 및 상기 플래시 인터페이스를 포함하는 스토리지 디바이스 제어기를 추가적으로 포함하는 스토리지 디바이스.In the first aspect, the storage device further comprises a storage device controller including the host interface and the flash interface. 제1 항에 있어서, 상기 플래시 변환 계층은 상기 호스트 머신 상에서 실행되는 애플리케이션에 특정되는 스토리지 디바이스.In the first aspect, the flash conversion layer is a storage device specific to an application running on the host machine. 제1 항에 있어서, 상기 인-스토리지 모니터링 엔진은 특정 형태의 프로파일링 명령에 대해 상기 스토리지 디바이스의 상기 동적 특성을 측정하는 스토리지 디바이스.In the first aspect, the in-storage monitoring engine is a storage device that measures the dynamic characteristics of the storage device for a specific type of profiling command. 제1 항에 있어서, 상기 인-스토리지 모니터링 엔진은
상기 스토리지 디바이스 내 복수의 가상 스토리지 디바이스들에 관한 정보를 저장하는 가상 스토리지 테이블; 및
상기 스토리지 디바이스 내 상기 복수의 가상 스토리지 디바이스들의 적어도 하나에서 복수의 프로파일링 명령들을 관리하는 프로파일링 스테이션을 포함하는 스토리지 디바이스.
In the first paragraph, the in-storage monitoring engine
A virtual storage table storing information about a plurality of virtual storage devices within the storage device; and
A storage device comprising a profiling station for managing a plurality of profiling commands in at least one of the plurality of virtual storage devices within the storage device.
제9 항에 있어서, 상기 인-스토리지 모니터링 엔진은 상기 복수의 프로파일링 명령들 중 적어도 하나를 실행하는 방법에 관한 정보를 저장하는 프로파일링 코드 레지스터를 추가적으로 포함하는 스토리지 디바이스.In claim 9, the in-storage monitoring engine further comprises a storage device including a profiling code register that stores information regarding how to execute at least one of the plurality of profiling commands. 제9 항에 있어서, 상기 성능 테이블은 이전 프로파일링 명령들에 관한 정보를 저장하는 스토리지 디바이스.In the 9th paragraph, the performance table is a storage device that stores information about previous profiling commands. 스토리지 디바이스의 애플리케이션 컨테이너 내에 하나 이상의 애플리케이션들을 저장하고, - 상기 하나 이상의 애플리케이션들 각각은 하나 이상의 네임스페이스들에서 실행됨 -;
호스트 인터페이스를 통하여 호스트 머신으로부터 복수의 패킷들을 수신하고;
상기 복수의 패킷들과 관련된 네임스페이스에 기초하여 플래시 인터페이스를 통하여 상기 애플리케이션 컨테이너 내의 애플리케이션으로 상기 복수의 패킷들을 라우팅하기 위하여 상기 스토리지 디바이스 상에 구현된 다형성 스토리지 디바이스 커널을 실행하고,
성능 테이블 내 상기 호스트 머신으로부터 수신된 프로파일링 명령의 매칭의 적어도 일부에 기초하여 런-타임으로 상기 스토리지 디바이스의 동적 특성을 결정하기 위하여 인-스토리지 모니터링 엔진을 실행하는 것을 포함하고,
상기 동적 특성은 상기 스토리지 디바이스의 레이턴시, 대역폭, 보유, 라이트 증폭 팩터(WAF), 초당 트랜잭션(TPS), 및 큐잉 레이턴시를 포함하는 세트로부터 도출되는 방법.
Storing one or more applications within an application container of a storage device, wherein each of the one or more applications runs in one or more namespaces;
Receive multiple packets from a host machine through the host interface;
Executing a polymorphic storage device kernel implemented on the storage device to route the plurality of packets to an application within the application container through a flash interface based on a namespace associated with the plurality of packets;
Comprising executing an in-storage monitoring engine to determine dynamic characteristics of the storage device at run-time based on at least a portion of the matching of profiling commands received from the host machine within the performance table;
The above dynamic characteristics are derived from a set including latency, bandwidth, retention, light amplification factor (WAF), transactions per second (TPS), and queuing latency of the storage device.
제12 항에 있어서, 상기 애플리케이션은 2개 이상의 네임스페이스들에서 실행되는 방법.In the 12th paragraph, the application is a method executed in two or more namespaces. 제12 항에 있어서, 상기 네임스페이스는 2개의 애플리케이션들에 의해서 공유되는 방법.In the 12th paragraph, the namespace is shared by two applications. 제12 항에 있어서, 상기 스토리지 디바이스는 태깅 기능, 압축 기능, 데이터베이스 기능, 패턴 매칭 기능, 머신 러닝 기능, 및 변환 기능의 하나를 수행할 수 있는 방법.A method in accordance with claim 12, wherein the storage device can perform one of a tagging function, a compression function, a database function, a pattern matching function, a machine learning function, and a transformation function. 제12 항에 있어서, 상기 방법은
상기 스토리지 디바이스에서 요청자로부터 제1 프로파일링 명령을 수신하고,
결과를 생성하기 위하여 상기 스토리지 디바이스에서 내부적으로 상기 제1 프로파일링 명령을 수행하고,
SSD로부터 상기 요청자로 상기 결과를 리턴하고,
상기 스토리지 디바이스에서 제2 요청자로부터 제2 프로파일링 명령을 수신하고,
상기 성능 테이블이 상기 제2 프로파일링 명령을 만족하는 상기 결과를 포함하는지를 판단하고,
상기 제2 프로파일링 명령을 만족하는 상기 결과를 포함하는 상기 성능 테이블의 적어도 일부에 기초하여, 상기 제2 프로파일링 명령을 수행하지 않고 상기 성능 테이블 내 상기 결과를 상기 스토리지 디바이스로부터 상기 제2 요청자로 리턴하는 것을 포함하는 방법.
In the 12th paragraph, the method
Receive a first profiling command from a requester in the above storage device,
To generate a result, the first profiling command is performed internally in the storage device,
Return the result from the SSD to the requester,
Receive a second profiling command from a second requester in the above storage device,
Determine whether the above performance table includes the result satisfying the second profiling command,
A method comprising returning the result in the performance table from the storage device to the second requester without performing the second profiling command, based on at least a portion of the performance table including the result satisfying the second profiling command.
제12 항에 있어서, 상기 인-스토리지 모니터링 엔진은 특정 형태의 프로파일링 명령에 대해 상기 스토리지 디바이스의 상기 동적 특성을 측정하는 방법. In the 12th paragraph, the in-storage monitoring engine is a method for measuring the dynamic characteristics of the storage device for a specific type of profiling command. 제12 항에 있어서, 상기 인-스토리지 모니터링 엔진은
상기 스토리지 디바이스 내 복수의 가상 스토리지 디바이스들에 관한 정보를 저장하는 가상 스토리지 테이블; 및
상기 스토리지 테이블 내 상기 복수의 가상 스토리지 디바이스들의 적어도 하나에서 복수의 프로파일링 명령들을 관리하는 프로파일링 스테이션을 포함하는 방법.
In the 12th paragraph, the in-storage monitoring engine
A virtual storage table storing information about a plurality of virtual storage devices within the storage device; and
A method comprising a profiling station for managing a plurality of profiling commands on at least one of the plurality of virtual storage devices within the storage table.
제18 항에 있어서, 상기 인-스토리지 모니터링 엔진은 상기 복수의 프로파일링 명령들 중 적어도 하나를 실행하는 방법에 관한 정보를 저장하는 프로파일링 코드 레지스터를 추가적으로 포함하는 방법.In claim 18, the method further comprises a profiling code register that stores information regarding how to execute at least one of the plurality of profiling commands. 제18 항에 있어서, 상기 성능 테이블은 이전 프로파일링 명령들에 관한 정보를 저장하는 방법.In the 18th paragraph, the performance table is a method for storing information about previous profiling commands.
KR1020200112852A 2019-10-29 2020-09-04 Storage device and method for storage device characteristics self monitoring Active KR102798787B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/667,340 2019-10-29
US16/667,340 US11194517B2 (en) 2016-05-24 2019-10-29 Method and apparatus for storage device latency/bandwidth self monitoring

Publications (2)

Publication Number Publication Date
KR20210052199A KR20210052199A (en) 2021-05-10
KR102798787B1 true KR102798787B1 (en) 2025-04-22

Family

ID=75648842

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200112852A Active KR102798787B1 (en) 2019-10-29 2020-09-04 Storage device and method for storage device characteristics self monitoring

Country Status (3)

Country Link
KR (1) KR102798787B1 (en)
CN (1) CN112749052A (en)
TW (1) TWI855176B (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102686802B1 (en) 2021-06-14 2024-07-19 한국전자통신연구원 Apparatus and method for providing virtual multi-cloud services
CN114090204B (en) * 2021-11-17 2025-05-02 深圳前海微众银行股份有限公司 A resource prediction method and device
CN116225329A (en) * 2023-02-24 2023-06-06 合肥兆芯电子有限公司 Memory performance matching method, storage device and memory control circuit
TWI850095B (en) * 2023-09-01 2024-07-21 日商鎧俠股份有限公司 Solid state storage device and method for fetching commands thereof

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100608339B1 (en) * 1999-06-28 2006-08-09 주식회사 하이닉스반도체 Refresh mode selection circuit of memory device
KR101578789B1 (en) * 2008-12-08 2015-12-18 삼성전자 주식회사 Method of determining a refresh period of a dynamic memory device and its operation memory device
TWI550408B (en) * 2011-04-22 2016-09-21 晨星半導體股份有限公司 Multi-core electronic system and its rate adjusting device
US10803970B2 (en) * 2011-11-14 2020-10-13 Seagate Technology Llc Solid-state disk manufacturing self test
US9239786B2 (en) * 2012-01-18 2016-01-19 Samsung Electronics Co., Ltd. Reconfigurable storage device
US9720668B2 (en) * 2012-02-29 2017-08-01 Red Hat, Inc. Creating and maintaining multi-tenant applications in a platform-as-a-service (PaaS) environment of a cloud computing system
US10073626B2 (en) * 2013-03-15 2018-09-11 Virident Systems, Llc Managing the write performance of an asymmetric memory system
US9553822B2 (en) * 2013-11-12 2017-01-24 Microsoft Technology Licensing, Llc Constructing virtual motherboards and virtual storage devices
US9710317B2 (en) * 2015-03-30 2017-07-18 Netapp, Inc. Methods to identify, handle and recover from suspect SSDS in a clustered flash array
US10423331B2 (en) * 2016-02-02 2019-09-24 Samsung Electronics Co., Ltd. Polymorphic storage devices
KR20170128012A (en) * 2016-05-13 2017-11-22 주식회사 맴레이 Flash-based storage and computing device
US10474374B2 (en) * 2016-05-24 2019-11-12 Samsung Electronics Co., Ltd. Method and apparatus for storage device latency/bandwidth self monitoring

Also Published As

Publication number Publication date
TWI855176B (en) 2024-09-11
TW202117550A (en) 2021-05-01
KR20210052199A (en) 2021-05-10
CN112749052A (en) 2021-05-04

Similar Documents

Publication Publication Date Title
US11579811B2 (en) Method and apparatus for storage device latency/bandwidth self monitoring
KR102798787B1 (en) Storage device and method for storage device characteristics self monitoring
EP3920034B1 (en) Systems and methods for scalable and coherent memory devices
US11275672B2 (en) Run-time determination of application performance with low overhead impact on system performance
US10691491B2 (en) Adapting a pre-trained distributed resource predictive model to a target distributed computing environment
US9715347B2 (en) Virtual disk migration
US20200387316A1 (en) Dynamic data compression
US10839093B2 (en) Low latency access to physical storage locations by implementing multiple levels of metadata
US10474374B2 (en) Method and apparatus for storage device latency/bandwidth self monitoring
US20120151177A1 (en) Data Deduplication in a Virtualization Environment
US12039201B2 (en) Control parameter address virtualization
US11016676B2 (en) Spot coalescing of distributed data concurrent with storage I/O operations
Zhang et al. Making sense of performance in in-memory computing frameworks for scientific data analysis: A case study of the spark system
JP2024524135A (en) Memory reduction in a system by oversubscribing the physical memory shared by the computational entities that the system supports
US11003378B2 (en) Memory-fabric-based data-mover-enabled memory tiering system
US20150074351A1 (en) Write-behind caching in distributed file systems
US12019532B2 (en) Distributed file system performance optimization for path-level settings using machine learning
KR102815744B1 (en) Computing system for transmitting completion early between serially connected electronic devices
US11106543B2 (en) Application image cloning system
US11119787B1 (en) Non-intrusive hardware profiling
US11287973B2 (en) Polymorphic storage devices
US12111770B2 (en) Silent cache line eviction
WO2025038232A1 (en) Near-cache compute
Choukse Memory Compression for Higher Effective Capacity and Bandwidth
WO2019017874A1 (en) Techniques for managing computational model data

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20200904

PG1501 Laying open of application
A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20230807

Comment text: Request for Examination of Application

Patent event code: PA02011R01I

Patent event date: 20200904

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: 20241022

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: 20250304

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20250416

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20250417

End annual number: 3

Start annual number: 1

PG1601 Publication of registration