KR102478392B1 - 최저 테일 레이턴시를 갖는 ssd들을 식별하기 위한 시스템 및 방법 - Google Patents

최저 테일 레이턴시를 갖는 ssd들을 식별하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR102478392B1
KR102478392B1 KR1020170160191A KR20170160191A KR102478392B1 KR 102478392 B1 KR102478392 B1 KR 102478392B1 KR 1020170160191 A KR1020170160191 A KR 1020170160191A KR 20170160191 A KR20170160191 A KR 20170160191A KR 102478392 B1 KR102478392 B1 KR 102478392B1
Authority
KR
South Korea
Prior art keywords
information
requests
storage device
management controller
controller
Prior art date
Application number
KR1020170160191A
Other languages
English (en)
Other versions
KR20180114819A (ko
Inventor
람다스 피. 카차르
솜퐁 폴 올라이그
웬타오 우
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20180114819A publication Critical patent/KR20180114819A/ko
Application granted granted Critical
Publication of KR102478392B1 publication Critical patent/KR102478392B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR 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/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR 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
    • G06F11/3419Recording 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 by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/3452Performance evaluation by statistical analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/3466Performance evaluation by tracing or monitoring
    • G06F11/3485Performance evaluation by tracing or monitoring for I/O devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

스토리지 디바이스가 개시된다. 본 발명의 실시 예에 따른 스토리지 디바이스는 데이터를 저장하는 스토리지, 복수의 요청들에 응답하여 스토리지로부터 데이터 읽기 및 스토리지로 데이터 쓰기를 관리하는 스토리지 디바이스 컨트롤러를 포함하고, 상기 스토리지 디바이스 컨트롤러는, 복수의 요청들에 대한 정보를 위한 스토리지, 복수의 요청들을 수신하는 수신기, 복수의 요청들 각각에 대한 정보를 결정하는 정보 결정 로직, 및 복수의 요청들 각각에 대한 정보를 관리 컨트롤러와 공유하는 공유 로직을 포함한다.

Description

최저 테일 레이턴시를 갖는 SSD들을 식별하기 위한 시스템 및 방법 {SYSTEM AND METHOD FOR IDENTIFYING SSDS WITH LOWEST TAIL LATENCIES}
본 발명은 솔리드 스테이트 드라이브들(SSDs; Solid State Drives)에 관한 것으로, 좀 더 상세하게는, 상이한 성능의 SSD들을 관리하는 것에 관한 것이다.
하이퍼스케일러(hyperscaler)들에게 솔리드 스테이트 드라이브들(SSDs)의 비 결정적 행동들, 그리고 특히 테일 레이턴시(tail latency)는 주요한 사안이다. 테일 레이턴시(스토리지 디바이스의 최악의 케이스 또는 최악의 케이스에 근접한 성능)는, 테일 레이턴시가 오직 요청의 작은 부분에 영향을 줄 수 있다고 하더라도, 하이퍼스케일된 애플리케이션(application)의 전체적인 성능에 해로운 영향을 줄 수 있다.
테일 레이턴시와 같은 문제들에 대응하기 위해, 하이퍼스케일러들은 사용하는 스토리지 디바이스들에 특정 기능을 요구할 수 있다. 그러나, 상이한 스토리지 디바이스 벤더(vendor)들은 다른 방법으로 기능들을 구현할 수 있다. 결과적으로, 스토리지 디바이스들에 있어서 이러한 기능들의 성능은 벤더에 따라 달라질 수 있고, 특정 벤더에 의해 제공된 스토리지 디바이스들에 따라서도 달라질 수 있다.
하나의 벤더가 이러한 기능들의 성능에 기초하여 제공하는 스토리지 디바이스들을 분류하는 것은 가능할 수 있다. 예를 들어, 하나의 벤더는 특정 스토리지 디바이스 제공을 탑-티어(top-tier), 중간-티어(middle-tier), 그리고 최저-티어(lowest-tier) 성능을 제공하는 것으로 식별하는 테일 레이턴시에 기초하여 스토리지 디바이스들을 분류할 수 있다. 벤더들이 스토리지 디바이스들을 분류하기 위한 표준에 동의하는 것도 가능할 것이고, 이에 따라 한 벤더의 "탑-티어" 스토리지 디바이스는 다른 스토리지 벤더의 "탑-티어" 스토리지 디바이스와 비교할 만한 것으로 간주될 수 있을 것이다.
그러나 이 접근에는 문제들이 있다. 첫 번째, 상이한 스토리지 디바이스들은 상이한 기능을 제공할 수 있다. 한 벤더의 하나의 스토리지 디바이스 모델이 두 개의 다른 요청된 기능들을 수행하고 다른 벤더의 다른 스토리지 디바이스 모델이 오직 하나의 요청된 기능을 수행한다면, 이러한 두 스토리지 디바이스 모델들은 비교할 만한 것으로 간주되어야 하는가 두 번째, 하나의 벤더의 특정 스토리지 디바이스 모델에 있어서도 제조의 다양성은 성능 레벨들을 다양하게 할 수 있다. 그것은 스토리지 디바이스들의 엄격한 테스트 없이 결정될 수 없는 사실인 같은 모델의 두 개의 다른 디바이스들이 더 적절하게 다르게 분류될 수 있다는 것을 의미한다. 세 번째, 널리 적용되도록 만든("one size fits all") 분류 시스템을 사용하는 것은 개별 하이퍼스케일러들의 필요를 충족시킬 수 없다. 컴퓨팅 리소스들을 더 빌리고 자신의 서버들을 덜 구입하는 기업들에 있기 때문에, 벤더들은 다른 이용자들을 위해 작업부하들을 다양하게 하는 것이 필요할 것 같다.
데이터 센터들에 의해 분류를 위한 스토리지 디바이스들의 성능 특성을 파악하기 위한 방법이 여전히 필요하다.
본 발명은 상술된 기술적 과제를 해결하기 위한 것으로써, 본 발명은 스토리지 디바이스들의 성능 특성을 분류하기 위한 시스템 및 방법을 제공할 수 있다.
본 발명의 하나의 실시 예에 따른 스토리지 디바이스는 데이터를 저장하는 스토리지, 복수의 요청들에 응답하여 상기 스토리지로부터 데이터 읽기 및 상기 스토리지로 데이터 쓰기를 관리하는 스토리지 디바이스 컨트롤러를 포함하고, 상기 스토리지 디바이스 컨트롤러는, 복수의 요청들에 대한 정보를 위한 스토리지, 상기 복수의 요청들을 수신하는 수신기, 상기 복수의 요청들 각각에 대한 정보를 결정하는 정보 결정 로직, 및 상기 복수의 요청들 각각에 대한 상기 정보를 관리 컨트롤러와 공유하는 공유 로직을 포함한다.
본 발명의 하나의 실시 예에 따른 방법은 스토리지 디바이스에서 복수의 요청들을 수신하는 단계, 상기 스토리지 디바이스에서 상기 복수의 요청들 각각을 실행하는 단계, 상기 복수의 요청들 각각의 결과들을 상기 스토리지 디바이스로부터 반환하는 단계, 상기 복수의 요청들 각각에 대한 정보를 결정하는 단계 및 상기 정보는 상기 스토리지 디바이스에서 상기 복수의 요청들 각각을 실행하는데 있어서 상기 스토리지 디바이스의 성능을 나타내고, 상기 정보를 관리 컨트롤러와 공유하는 단계를 포함한다.
본 발명의 하나의 실시 예에 따른 명령어들을 저장하는 비일시적 기억 매체를 포함하는 물품에 있어서, 장치에 의해 실행되는 경우, 상기 명령어들은 스토리지 디바이스에서 복수의 요청들을 수신하는 단계, 상기 스토리지 디바이스에서 상기 복수의 요청들 각각을 실행하는 단계, 상기 복수의 요청들 각각의 결과들을 상기 스토리지 디바이스로부터 반환하는 단계, 상기 복수의 요청들 각각에 대한 정보를 결정하는 단계 및 상기 정보는 상기 스토리지 디바이스에서 상기 복수의 요청들 각각을 실행하는데 있어서 상기 스토리지 디바이스의 성능을 나타내고, 상기 정보를 관리 컨트롤러와 공유하는 단계를 실행한다.
본 발명의 최저 테일 레이턴시를 갖는 SSD를 식별하기 위한 시스템 및 방법은 베이스보드 관리 컨트롤러(BMC)를 통해 SSD의 성능을 나타내는 정보를 제공할 수 있다.
도 1은 본 발명의 하나의 실시 예에 따른 스토리지 디바이스 및 베이스보드 관리 컨트롤러(BMC; Baseboard Management Controller)를 포함하는 장치를 보여준다.
도 2는 도 1의 장치의 추가 세부 사항들을 보여준다.
도 3은 도 1의 장치에서 도 1의 BMC를 가지고 제어 통신을 관리하는 몇몇의 스토리지 디바이스를 보여준다.
도 4는 도 1의 스토리지 디바이스로서, 솔리드 스테이트 드라이브(SSD)의 세부 사항들을 보여준다.
도 5는 도 4의 SSD 컨트롤러의 세부 사항들을 보여준다.
도 6은 도 1의 스토리지 디바이스에 대한 추적될 수 있는 다양한 정보를 보여준다.
도 7은 도 1의 스토리지 디바이스에서 요청들의 읽기 레이턴시들에 대한 세부 사항을 보여준다.
도 8은 도 1의 BMC로의 전달을 위해 복수의 요청들에 대한 정보를 수집하는 도 5의 정보 결정 로직을 보여준다.
도 9는 도 5의 공유 로직의 세부 사항을 보여준다.
도 10은 본 발명의 실시 예들에 따라, 도 1의 스토리지 디바이스가 도 1의 스토리지 디바이스의 성능에 대한 정보를 추적하고 도 1의 BMC와 그 정보를 공유하기 위한 예시 절차의 순서도를 보여준다.
도 11 및 도 12는 본 발명의 실시 예들에 따라, 도 1의 스토리지 디바이스가 도 1의 BMC와 정보를 공유하기 위한 예시 절차의 순서도를 보여준다.
본 발명의 실시 예들에 대해 상세하게 참조가 만들어질 것이고, 첨부된 도면들에서 예시들이 설명된다. 후술되는 상세한 설명에서, 발명의 철저한 이해를 가능하게 하기 위해 많은 특정 세부 사항들이 기재된다. 그러나, 본 기술 분야에서의 통상의 기술자는 이러한 특정 세부 사항들 없이 발명을 실시할 수 있다고 이해될 것이다. 다른 경우들에서, 잘 알려진 방법들, 전차들, 구성 요소들, 회로들, 그리고 네트워크들은 실시 예들의 양상들을 불필요하게 모호하게 하지 않기 위해 상세하게 설명되지 않았다.
제1, 제2 등의 용어들은 본 명세서에서 다양한 요소들을 설명하기 위해 사용 되더라도, 이러한 요소들은 이러한 용어들에 의해 제한되지 않는 것으로 이해될 것이다. 이러한 용어들은 오직 하나의 요소를 다른 요소와 구별하기 위해 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않고, 제1 모듈은 제2 모듈로 칭해질 수 있고, 제2 모듈은 제1 모듈로 칭해질 수 있다.
본 명세서에서 발명의 설명에서 사용되는 용어는 오직 특정 실시 예들을 설명하기 위한 목적이고 발명을 제한하려는 의도는 아니다. 발명의 설명과 첨부된 청구항들에서 사용된 바와 같이, 문맥이 명백하게 다른 것을 가리키지 않으면, 단수형태의 용어는 복수형태를 포함하도록 의도된다. 본 명세서에서 용어 "그리고/또는"은 열거된 항목들과 관련된 하나 이상의 가능한 조합들을 모두 지칭하는 것으로 이해될 것이다. 용어 "포함하다" 그리고/또는 "포함하는"이 본 명세서에서 사용되는 경우, 기술된 특징, 정수들, 단계들, 동작들, 요소들, 그리고/또는 구성 요소들의 존재를 명시하는 것으로 이해될 것이다. 그러나 하나 이상의 다른 특징들, 정수들, 단계들, 동작들, 요소들, 구성 요소들, 그리고/또는 그것의 그룹들의 추가 또는 존재를 못하게 하는 것은 아니다. 도면들의 구성 요소들 및 특징들은 반드시 축적에 맞춰져 있지 않다.
선행 기술의 문제를 해결하기 위해, 베이스보드 관리 컨트롤러(BMC)와 같은 관리 컨트롤러는 섀시(chassis)에 있는 모든 솔리드 스테이트 드라이브들(SSDs)을 관리하고 추적할 수 있다. 각 SSD 디바이스는 트랜잭션(transaction)을 완료하기 위해 필요한 실제 시간적인 측면에서 완료된 모든 트랜잭션을 추적할 수 있다. 통합적으로, 각 SSD 컨트롤러 내부에 있는 디바이스 레이턴시 카운터(들)(counter(s))은 각 애플리케이션(application)/호스트(host)에 대한 모든 트랜잭션을 추적할 수 있다. 각 SSD는 주기적으로 BMC로 보고할 수 있다.
하이퍼스케일러들/이용자들은 BMC의 정보를 사용하여 스토리지 리소스들(예를 들어, SSDs)을 애플리케이션의 레이턴시 요구 사항들 및 임대/구독 비율에 맞게 할당하는 방법을 결정할 수 있다. 본 발명의 실시 예들은 더 높은 요금을 기꺼이 지불하는 고객들이 최저 테일 레이턴시 스토리지를 가질 수 있도록 하고, AWS, Google, 그리고 Azure와 같은 서비스 제공자들이 더 높은 요금에 대한 더 좋은 솔루션들을 제공하도록 하게 할 수 있다.
본 발명의 실시 예들은 동일한 섀시에 있는 모든 SSD들로부터 레이턴시 정보를 수집하기 위해 BMC를 사용할 수 있다. 컴퓨팅 및 스토리지 리소스들을 할당하기 전에, 클라우드(cloud) 기반의 서비스 제공자는 BMC로부터 필요한 정보를 검색할 수 있다. 이후, 서비스 제공자는 특정 프리미엄 사용자를 위해 컴퓨팅 및 스토리지 리소스들을 쉽게 식별하고 매치할 수 있다. 예를 들어, BMC는 "플래티넘" 최저 레이턴시, "골드" 중간 레이턴시, "브론즈" 최고 레이턴시를 가지는 자체 SSD들을 식별할 수 있다.
SSD는 다음의 기능들을 수행할 수 있다.
- 주기적으로 디바이스 정보 수집하기.
- 가공되지 않은(raw) 디바이스 정보를 수집하고 알려진 데이터베이스 형식으로 입력하기.
- 호스트로 디바이스 정보 보내기. SSD는 BMC가 SSD로 질의하는 것을 기다림으로써 수동 보내기를 지원할 수 있다. 그리고 나서 SSD는 요청된 정보를 모으고 그것을 BMC로 반환한다. 또는, SSD는 BMC가 접근할 수 있는 컨트롤러 메모리 버퍼로 디바이스 정보를 씀으로써 능동적 보내기를 지원할 수 있다.
- 동일한 정보의 반복 공유를 방지하기 위해 버전 그리고/또는 타임스탬프(timestamp)를 통해 디바이스 정보 동기화 메커니즘(mechanism)를 지원하기.
- 허가되지 않은 당사자가 디바이스 정보에 접근하는 것을 방지하기 위해 데이터 암호화 또는 허가를 통해 디바이스 정보 보안을 지원하기.
도 1은 본 발명의 하나의 실시 예에 따른 스토리지 디바이스 및 베이스보드 관리 컨트롤러(BMC; Baseboard Management Controller)를 포함하는 장치를 보여준다. 도 1에서, 컴퓨터 장치(105)가 도시된다. 컴퓨터 장치(105)는 제한 없이 데스크탑 또는 노트북 컴퓨터, 서버(독립형 서버 또는 랙(rack) 서버), 또는 본 발명의 실시 예들로부터 혜택을 얻을 수 있는 임의의 다른 디바이스를 포함한 원하는 장치일 수 있다. 컴퓨터 장치(105)는 특수한 휴대용 컴퓨팅 디바이스, 태블릿 컴퓨터들, 스마트폰들, 그리고 다른 컴퓨팅 디바이스들을 포함할 수 있다. 컴퓨터 장치(105)는 임의의 원하는 애플리케이션들을 실행할 수 있다. 데이터베이스 애플리케이션은 좋은 예이나 본 발명의 실시 예들은 임의의 원하는 애플리케이션으로 확장될 수 있다.
특정 형태와 관계없이 컴퓨터 장치(105)는 프로세서(110), 메모리(115), 그리고 솔리드 스테이트 드라이브(SSD)(120)를 포함할 수 있다. 프로세서(110)는 다양한 프로세서일 수 있다. 예를 들어, IntelXeon, Celeron, Itanium, 또는 Atom 프로세서, AMD Opteron 프로세서, ARM 프로세서 등이 있다. 도 1은 하나의 프로세서를 보여주는 반면에, 컴퓨터 장치(105)는 임의의 수의 프로세서를 포함할 수 있고, 각 프로세서는 임의의 수의 코어들(cores)을 포함할 수 있다. 메모리(115)는 스토리지, 정적 랜덤 액세스 메모리(SRAM; Static Random Access Memory), 영구 랜덤 액세스 메모리(Persistent Random Access Memory), Fe램(FRAM; Ferroelectric Random Access Memory), 또는 M램(MRAM; Magnetoresistive Random Access Memory) 등과 같은 불휘발성 랜덤 엑세스 메모리(NVRAM; Non-Volatile Random Access Memory)와 같은 다양한 메모리일 수 있지만, 일반적으로 동적 랜덤 액세스 메모리(DRAM; Dynamic Random Access Memory)이다. 메모리(115)는 다른 메모리 유형의 임의의 원하는 조합일 수 있다. 메모리(115)는 메모리 컨트롤러(125)에 의해 제어될 수 있고, 컴퓨터 장치(105)의 일부일 수 있다.
스토리지 디바이스(120)는 다양한 스토리지 디바이스일 수 있다. 예를 들어, 하드 디스크 드라이브 또는 솔리드 스테이트 드라이브(SSD)일 수 있다. 본 발명의 실시 예들은 스토리지 디바이스를 관리하기 위해 사용되는 정보를 제공할 수 있는 다양한 스토리지 디바이스를 포함할 수 있다. 따라서, 본 문서와 도면들은 때로는 스토리지 디바이스들로서 SSD들에 초점을 맞추지만, SSD들의 사용은 그저 예시에 불과하며, 본 명세서에서 설명된 개념들은 스토리지 디바이스들을 관리하기 위해 사용되는 정보를 제공할 수 있는 임의의 스토리지 디바이스들로 확장될 수 있다. 스토리지 디바이스(120)는 메모리(115) 내부에 포함될 수 있는 디바이스 드라이버(130)에 의해 제어될 수 있다. 도 1은 오직 하나의 스토리지 디바이스(120)를 보여주지만, 컴퓨터 장치(105)는 어떠한 수의 스토리지 디바이스들을 포함할 수 있고, 각 스토리지 디바이스는 임의의 유형(하드 디스크 드라이브들 및 SSD들과 같은)일 수 있다.
베이스보드 관리 컨트롤러(BMC)(135)는 서버들, PC들, 스위치들 그리고 다른 컴퓨터 기반의 제품들에서 사용된다. 일반적으로, BMC(135)는 센서들과 통신하여, 온도, 습도, 전력 공급 전압, 팬 속도, 통신 매개 변수, 그리고 운영 체제(OS; Operating System) 기능과 같은 내부의 물리적 변수들을 측정한다. 이러한 변수들 중 하나가 지정된 한계를 벗어나는 경우, 관리자에게 알려질 수 있다. 관리자는 원격 제어로 교정 조치를 취할 수 있다. 경우에 따라, BMC(135)는 팬 속도를 증가시키거나 고장 난 서브시스템들을 재부팅하는 등의 교정 조치들을 취할 수 있다. 모니터링되는 디바이스/시스템은 필요에 따라 그리고/또는 적절하게 원격으로 전원이 꺼졌다 켜지거나 재부팅될 수 있다. 이러한 방식으로, 하나의 관리자는 수많은 서버들 및 다른 디바이스들을 동시에 원격으로 관리할 수 있고, 이로써 네트워크의 전반적인 운영 비용을 절감하고 가용성을 보장할 수 있다.
BMC(135)는 스토리지 디바이스(120)를 포함하는 컴퓨터 장치(105)의 다양한 구성 요소들에 연결되어 있기 때문에, BMC(135)는 이러한 구성 요소들을 제어하기 위해 사용될 수 있다. 이 제어는 스토리지 디바이스(120)의 특성들에 접근하는 것을 포함할 수 있다. 이러한 특성들은 어느 저장 장치가 컴퓨터 장치(105)(또는 다른 연결된 장치)에서 실행되는 특정 애플리케이션과 관련된 데이터를 저장하는 데 가장 적합한지를 결정하기 위해 사용될 수 있다. 도 1은 특별히 베이스보드 관리 컨트롤러(135)를 지칭하지만, 본 발명의 실시 예들은 본 명세서에서 설명된 동작들을 수행할 수 있는 어떠한 관리 컨트롤러로 확장될 수 있다.
도 2는 도 1의 컴퓨터 장치(105)의 추가 세부 사항들을 보여준다. 도 2를 참조하면, 일반적으로, 컴퓨터 장치(105)는 컴퓨터 장치(105)의 구성 요소들의 동작들을 조정하기 위해 사용될 수 있는 메모리 컨트롤러(125) 및 클럭(clock)(205)을 포함하는 하나 이상의 프로세서들(110)을 포함한다. 프로세서들(110)은 랜덤 액세스 메모리(RAM, random access memory), 읽기 전용 메모리(ROM, read-only memory), 또는 다른 미디어를 보존하는 상태를 포함하는 메모리(115)에 연결될 수 있다. 프로세서들(110)은 스토리지 디바이스들(120), 그리고 예를 들어, 이더넷(Ethernet) 커넥터 또는 무선 커넥터일 수 있는 네트워크 커넥터(connector)(210)에 연결될 수 있다. 프로세서들(110)은 다른 구성요소들 사이에서, 사용자 인터페이스(215) 및 입력/출력 엔진(220)을 사용하여 관리될 수 있는 입력/출력 인터페이스 포트들이 연결된 버스(12)에 연결될 수 있다.
도 3은 도 1의 컴퓨터 장치(105)에서 도 1의 BMC(135)를 가지고 제어 통신을 관리하는 몇몇의 SSD들을 보여준다. 도 3에서, 스토리지 디바이스들(120-1~120-n)dl 도시된다. 도 3이 네 개의 스토리지 디바이스들(120-1~120-n)을 도시하지만, 본 발명의 실시 예들은 임의의 수의 스토리지 디바이스들을 지원할 수 있다. 각 스토리지 디바이스들(120-1~120-n)은 이더넷 스위치(305) 및 BMC(135)와 통신할 수 있는 PCIe(Peripheral Component Inerconnect Express) 스위치(310)와 통신할 수 있다. 이더넷 스위치(305)는 데이터 영역을 통해 스토리지 디바이스들(120-1~120-n)과 통신을 하는데 사용될 수 있다. 반면에 PCIe 스위치(310)는 제어 영역을 통해 스토리지 디바이스들(120-1~120-n)과 통신을 수행하는데 사용될 수 있다. 예를 들어, 본 명세서에서의 참조로 인용되는 2016년 7월 26일에 출원된 미국 예비 특허 출원 번호 62/366,622를 우선권 주장한 2016년 9월 2일에 출원된 미국 특허 출원 번호 15/256,495, 2016년, 9월 14일에 출원된 예비 특허 출원 번호 62/394,726을 우선권 주장한 2016년 11월 7일에 출원된 미국 특허 출원 번호 15/345,507, 2016년 9월 14일에 출원된 미국 예비 특허 출원 번호 62/394,727을 우선권 주장한 2016년 11월 7일에 출원된 미국 특허 출원 번호 15/345,509, 그리고 2017년 5월 3일에 출원된 미국 예비 특허 출원 번호 62/501,087에서 설명된 바와 같이, BMC(135)는 구성에 관해 스토리지 디바이스들(120-1~120-n)과 통신하기 위해 프록시(proxy) 디바이스와 같이 동작할 수 있다. BMC(135)는 제한 없이 다른 이유들로 스토리지 디바이스들(120-1~120-n)(그리고 다른 디바이스들)과 통신할 수 있다.
본 발명의 실시 예들에 있어서, 스토리지 디바이스들(120-1~120-n)은 자신들의 동작에 대한 정보를 수집할 수 있다. 이 정보는 PCIe 스위치(310)를 통해 제어 영역을 거쳐 BMC(135)로 보고될 수 있다. 이러한 방식으로, BMC(135)와의 통신은 이더넷 스위치(305)를 거쳐 데이터 영역을 통한 통신을 방해하지 않는다. 본 발명의 실시 예들은 제어 영역에 있어서 다른 원하는 통신 경로들을 사용할 수 있다. 예를 들어, BMC(135)와 스토리지 디바이스들(120-1~120-n) 사이의 제어 영역은 PCIe 스위치(310) 대신 시스템 관리 버스(SMBus; System Management Bus)를 사용할 수 있다. PCIe 스위치(310)에 대한 참조는 SMBus와 같은 대체 제어 영역들을 포함하는 것으로 이해되어야 한다.
도 3에 있어서, 스토리지 디바이스들(120-1~120-n)은 데이터 영역을 통해 통신을 수행하기 위해 이더넷 연결을 사용하는 것으로 가정된다. 그러나 본 발명의 다른 실시 예들은 제한 없이 데이터 영역을 통한 다른 형태의 통신을 지원할 수 있다. 예를 들어, 데이터 영역은 이더넷이 아닌 통신을 위해 SAS(Serial Attached Small Computer Systems Interface)를 사용할 수 있다. 본 발명의 이러한 실시 예들에 있어서, 이더넷 스위치(305)는 SAS 익스펜더(Expander)와 같은 임의의 적절한 동등한 구성 요소로 대체될 수 있다. 또한, PCIe 스위치(310)에 의해 지원되는 PCIe 레인들(lanes)은 두 개 이상의 레인들의 세트들(제어 영역을 통한 통신에 전용인 하나의 세트 및 데이터 영역을 통한 통신에 전용인 다른 세트, 또는 컴퓨터 장치(105)에서 두 개의 마더보드들(motherboards)(때로는 스위치보드라고 함)과의 통신을 위해)로 나뉠 수 있다. 데이터 및 제어 영역들 모두를 통한 통신이 PCIe 스위치(310)에 의해 지원되는 이러한 본 발명의 실시 예들에 있어서, NVMe(Non-Volatile Memory Express) 시스템들에서와 같이, 이더넷 스위치(305)는 생략될 수 있다.
도 4는 도 1의 스토리지 디바이스(120)로서 SSD의 세부 사항을 보여준다. 도 4에 있어서, SSD(120)는 호스트 인터페이스 로직(405), SSD 컨트롤러(410), 그리고 다양한 채널들(420-1~420-4)로 구성될 수 있는 다양한 스토리지 칩들(415-1~415-8)을 포함할 수 있다. 호스트 인터페이스 로직(405)은 도 1의 SSD(120)와 컴퓨터 장치(105) 사이의 통신을 관리할 수 있다. SSD 컨트롤러(410)는 가비지 콜렉션(garbage collection) 동작들에 따라, 스토리지 칩들(415-1~415-8) 상의 읽기 및 쓰기 동작들을 관리할 수 있다. SSD 컨트롤러(410)는 이 관리의 일부를 수행하기 위한 플래시 변환 계층(FTL; flash translation layer)(425)을 포함할 수 있다. 도 4는 SSD(120)가 4개의 채널들(420-1~420-4)로 구성된 8개의 스토리지 칩들(415-1~415-8)을 포함하는 것으로써 도시하지만, 본 발명의 실시 예들은 임의의 수의 채널들로 구성된 임의의 수의 스토리지 칩들을 지원할 수 있다.
SSD 컨트롤러(410)는 임베디드(embedded) 마이크로프로세서(430)를 포함할 수 있다. 임베디드 마이크로프로세서(430)는 SSD(120) 내부에 포함된 임의의 원하는 프로세서일 수 있다. 임베디드 마이크로프로세서(430)는 도 1의 컴퓨터 장치(105)를 대신하여 애플리케이션을 실행할 수 있다.
도 5는 도 4의 SSD 컨트롤러(410)의 세부 사항을 보여준다. SSD 컨트롤러(410)는 논리적으로 또는 개념적으로 임의의 스토리지 디바이스를 위해 동작하는 컨트롤러로 일반화 될 수 있다. SSD 컨트롤러(410)는 단지 예시로서 도시된다. 도 5에 있어서, SSD 컨트롤러(410)는 스토리지(505), 수신기(510), 정보 결정 로직(515), 그리고 공유 로직(520)을 포함할 수 있다. 스토리지(505)는 복수의 요청들에 관한 정보를 저장할 수 있다. 도 8을 참조로 하여 아래에 설명된 바와 같이, 이러한 "정보"는 도 1의 스토리지 디바이스(120)의 동작에 대한 임의의 정보일 수 있다. 또한, "정보"는 스토리지 디바이스(120)에 의해 처리된 요청들에 대하여 명확하게 되지 않고, 스토리지 디바이스에 대한 정보를 포함하도록 확장될 수 있다. 수신기(510)는 애플리케이션으로부터 요청들을 수신할 수 있다. 정보 결정 로직(515)은 스토리지(505)에 저장된 요청들/스토리지 디바이스에 대한 정보를 결정할 수 있다. 공유 로직(520)은 도 1의 BMC(135)와 정보를 공유할 수 있다.
SSD 컨트롤러(410)는 타임스탬퍼(525)를 포함할 수 있다. 타임스탬퍼(525)는 스토리지(505)에 저장된 정보에 대해 타임스탬프를 적용할 수 있다. 타임스탬프는 도 1의 BMC(135)에 제공되는 정보를 필터링 하기 위해 사용될 수 있다. 예를 들어, 타임스탬프는 정보가 마지막으로 BMC(135)와 공유된 시간보다 더 최신의 정보가 무엇인지를 식별하기 위해 사용될 수 있다.
SSD 컨트롤러(410)는 애플리케이션 식별기(530)를 포함할 수 있다. 애플리케이션 식별기(530)는 어느 애플리케이션으로부터 특정 요청이 수신되었는지를 식별할 수 있다. 예를 들어, 도 4의 임베디드 마이크로프로세서(430)가 컴퓨터 장치(105)를 대신하여 애플리케이션을 실행한다면, 컴퓨터 장치(105)는 SSD(120)에 의해 실행된 요청들의 소스를 모를 수 있다. 본 발명의 몇몇 실시 예들에 있어서, 도 1의 스토리지 디바이스(120)는 스토리지 디바이스(120)에 의해 실행되는 요청들을 어느 애플리케이션이 발행했는지를 도 1의 BMC(135)에 보고할 수 있다. 애플리케이션 식별기(530)는 이 정보를 제공할 수 있다. 애플리케이션 식별기(530)는 도 1의 스토리지 디바이스(120)에 의해 실행되는 요청들을 어느 애플리케이션이 발행하였는지를 추적함으로써 도 1의 컴퓨터 장치(105) 상의 도 1의 프로세서(110)에서 실행되는 운영 체제와 유사하게 동작할 수 있다.
도 6은 도 1의 SSD들에 대하여 추적될 수 있는 다양한 정보를 보여준다. 도 6에 있어서, 세트(605)는 도 1의 스토리지 디바이스(120)에 의해 추적될 수 있는 다양한 정보를 도시한다. 세트(605)는 다음과 같은 다양한 정보를 포함할 수 있다.
- 읽기 레이턴시(610): 도 1의 스토리지 디바이스(120)가 읽기 요청을 실행하고 완료하기 까지 걸리는 시간을 나타낸다. 읽기 레이턴시(610)는 도 1의 스토리지 디바이스(120)가 읽기 요청을 수신한 때로부터 도 1의 스토리지 디바이스(120)가 요청된 데이터를 돌려 보낼 때까지 시간을 측정할 수 있다.
- 쓰기 레이턴시(615): 도 1의 스토리지 디바이스(120)가 쓰기 요청을 실행하고 완료하기 까지 걸리는 시간을 나타낸다. 쓰기 레이턴시(615)는 도 1의 스토리지 디바이스(120)가 쓰기 요청을 수신한 때로부터 도 1의 스토리지 디바이스(120)가 성공정인 쓰기 결과의 확인 응답을 돌려 보낼 때까지 시간을 측정할 수 있다.
- 프로그램 실패 카운트(620): 데이터 쓰기 문제들로 인하여 쓰기 요청들이 실패된 횟수를 나타낸다.
- 소거 실패 카운트(625): SSD가 성공적으로 블록을 소거하는 데 실패한 횟수를 나타낸다.
- 웨어 레벨(Wear level) 카운트(630): SSD가 각각의 블록에 대해 웨어 레벨링을 수행한 횟수를 나타낸다.
- 비트(Bit) 에러율(635): 읽기 그리고/또는 쓰기 요청들이 있는 동안 스토리지 디바이스(120)에 의해 비트 에러들이 감지 그리고/또는 정정된 비율을 나타낸다.
- 인터페이스 비트 에러율(640): 도 1의 컴퓨터 장치(105)로부터 도 1의 스토리지 디바이스(120)에서 데이터를 수신하는 경우, 스토리지 디바이스(120)에 의해 비트 에러들이 감지 그리고/또는 정정된 비율을 나타낸다. 인터페이스 비트 에러율(640)은 "앤드투앤드(end-to-end) 에러 감지 카운트"라고도 지칭될 수 있다.
세트(605)는 도 1의 스토리지 디바이스(120)에 의해 추적될 수 있는 몇몇의 가능한 데이터를 나타낸다. 세트(605)는 스토리지 디바이스(120)에 의해 추적될 수 있는 모든 가능한 정보의 전체 목록을 나타내는 것으로 의도되지 않는다: 본 발명의 실시 예들은 아래에 기재한 바와 같이(그러나 이에 제한되는 것은 아님), 다른 정보를 추적할 수 있다.
- CRC(Cyclic Redundancy Check) 에러 카운트: CRC를 이용하여 감지된 에러들의 횟수를 나타낸다. 본 발명의 실시 예들은 CRC를 다른 에러 감지 그리고/또는 에러 정정 방식으로 대체할 수 있다.
- 정기의 작업부하 정보: 스토리지 디바이스(120)로 요청들을 보내는 컴퓨터 장치(105) 및 다른 호스트들의 작업부하에 대한 정보를 나타낸다. 정기의 작업부하 정보는 미디어 웨어(개별 호스트에 기인하는 도 1의 스토리지 디바이스(120)의 웨어량), 호스트 읽기 비율(개별 호스트에 기인하는 오버프로비져닝(overprovisioning), 그리고 타이머(요청이 실패하기 전에 특정 호스트에 대한 요청 재시도가 걸리는 시간)을 포함할 수 있다.
- 열 쓰로틀(throttle) 상태: 스토리지 디바이스(120)의 현재 열 상태에 대한 정보를 나타낸다. 도 1의 스토리지 디바이스(120)에 있는 온도 센서들이 한계를 초과하면, 도 1의 스토리지 디바이스(120)로 제공되는 전력은 도 1의 스토리지 디바이스(120)에 의해 발생되는 열을 낮추기 위해 감소될 수 있다.
- 재시도 버퍼 오버플로우(overflow) 카운터: 읽기 그리고/또는 쓰기 요청들이 실패로 인해 재시도된 횟수를 나타낸다.
- 물리적 링크 잠금(PLL; Physical Link Lock) 손실 횟수: 도 1의 스토리지 디바이스(120)와 도 1의 컴퓨터 장치(105) 사이의 물리적 링크에 기인하여 발생된 에러의 횟수를 나타낸다.
- 쓰여진 NAND 바이트들(bytes): 도 4의 SSD(120)에서 NAND 플래시 메모리로 쓰여진 바이트들의 수를 나타낸다.
- 쓰여진 호스트 바이트들(bytes): 개별 호스트에 기인하여 도 1의 스토리지 디바이스(120)로 쓰여진 바이트들의 수를 나타낸다.
- 현재 온도: 도 1의 스토리지 디바이스(120)의 현재 온도의 추적을 나타낸다.
- 오버탬프 셧다운 플래그(overtemp shutdown flag): 도 1의 스토리지 디바이스(120)의 온도가 최대 동작 온도를 초과하여 셧다운 되었는지 여부에 대한 지시자를 나타낸다. 오버탬프 셧다운 플래그는 셧다운을 마지막으로 유발한 구성 요소를 추적할 수 있거나, 셧다운을 유발한 최고 초과 온도를 가진 구성 요소를 추적할 수 있다.
- 최대 그리고/또는 최저 온도: 도 1의 스토리지 디바이스(120)가 동작하는 동안 감지된 최고 그리고/또는 최저 온도들의 추적을 나타낸다.
- 구체적인 최소 그리고/또는 최대 동작 온도: 도 1의 스토리지 디바이스(120)가 동작할 것으로 예상되는 최소 그리고/또는 최대 동작 온도들을 나타낸다.
- 열 쓰로틀링(thermal throttling) 조건 하의 시간: 도 1의 스토리지 디바이스(120)가 열 쓰로틀링(셧다운이 아직 요구되지 않지만 온도를 초과)의 대상이 되는 동안 시간의 유닛(초, 분, 또는 다른 임의의 원하는 유닛들)의 횟수를 나타낸다.
- 열 쓰로틀링 조건 하의 횟수: 도 1의 스토리지 디바이스(120)가 열 쓰로틀링을 시작하는 시간의 횟수를 나타낸다.
- 회복할 수 없는 읽기 그리고/또는 쓰기 에러들의 숫자: 정정할 수 없는 감지된 읽기 그리고/또는 쓰기 에러들의 횟수를 나타낸다.
- 미디어 및 데이터 무결성 오류들 경고: 도 1의 스토리지 디바이스(120)와 도 1의 컴퓨터 장치(105) 사이의 앤드투앤드 통신을 하는 동안 발생할 수 있는 에러들의 유형을 나타낸다.
- 가비지 콜렉션과 관련된 블록 소거 동작들의 숫자: 도 4의 SSD(120)에 가비지 콜렉션을 하는 동안 소거된 블록들의 횟수를 나타낸다(이 정보는 가비지 콜렉션을 수행하는 도 1의 어떠한 스토리지 디바이스(120)에 적용된다: 그러나 가비지 콜렉션을 수행하는 도 1의 스토리지 디바이스(120)의 모든 유형에 적용되는 것은 아니다).
- 자유 소거 블록 카운트 임계값을 유지하기 위해 가비지 콜렉션을 완료하는데 추정된 시간: 임계 레벨로 도 4의 SSD(120)의 자유 소거 블록 카운트를 올리기 위해 가비지 콜렉션을 수행하는데 필요한 시간의 추정 양을 나타낸다.
- 레이턴시 버킷(buckets): 도 1의 스토리지 디바이스(120)는 다양한 너비의 버킷을 사용하여 읽기 그리고/또는 쓰기 요청들에 대한 레이턴시를 추적할 수 있다. 이러한 너비들은 임의의 방식에 따라 달라질 수 있다. 예를 들어, 본 발명의 하나의 실시 예는 0ms 및 1ms 사이의 레이턴시를 위해 32μs 너비의 버킷, 1ms 및 32ms 사이의 레이턴시를 위해 1ms 너비의 버킷, 그리고 32ms 및 1초 사이의 레이턴시를 위해 32ms 너비의 버킷을 사용할 수 있다.
- 에러 카운트: 에러가 발생된 횟수를 나타낸다.
- 에러 타임스탬프: 각 에러가 발생했을 때의 타임스탬프를 나타낸다.
- 요청 동작코드(opcode), 상태 필드(field), 추가 정보, 영향 받는 논리 블록 주소(LBA; Logical Block Address), 영향 받는 네임스페이스(namespace), 그리고 영향 받는 포트: 에러가 발생했을 때 수행되는 요청에 대한 정보를 나타낸다.
- 에러 로그 정보 오버플로우(overflow) 플래그: 오버플로우 에러 로그에 저장된 추가 정보가 있는 여부에 대한 지시자를 나타낸다.
- 액티브 네임스페이스 카운트: 도 1의 스토리지 디바이스(120)에 의해 지원되는 액티브 네임스페이스의 횟수를 나타낸다.
- 호스트 읽기 그리고/또는 쓰기 요청 사이즈들: 도 1의 스토리지 디바이스(120)는 다양한 너비들의 버킷을 이용하여 읽기 그리고/또는 쓰기 요청들의 사이즈들을 추적할 수 있다. 이러한 너비들은 임의의 방식으로 달라질 수 있다. 예를 들어, 본 발명의 하나의 실시 예는 0kb - 4kb, 4 kb - 8 kb, 8 kb - 16 kb, 16 kb - 32 kb, 32 kb - 64 kb, 64 kb - 128 kb, 128 kb - 256 kb, 그리고 256 kb보다 더 큰 요청 사이즈들을 추적할 수 있다. 도 1의 스토리지 디바이스(120)는 각 버킷에 대한 임의의 읽기 그리고/또는 쓰기 요청들의 비율을 추적할 수 있다.
- 훈련된 링크 구성, 인터페이스 관련 에러들, 구성된 하드웨어 큐들의 수, 구성된 인터럽트 벡터들의 수, 링크 레벨 파라미터들(최대 전송 유닛(MTU; Maximum Transmission Unit), 최대 페이로드(payload) 사이즈 등): 도 1의 스토리지 디바이스(120)와 도 1의 컴퓨터 장치(105) 사이의 링크와 관련된 다양한 정보를 나타낸다.
- 스트림(stream)과 관련된 정보: 도 1의 스토리지 디바이스(120)는 멀티 스트리밍의 지원에 있어서, 스트림의 사용과 관련된 정보를 추적할 수 있다.
도 1의 스토리지 디바이스(120)가 도 6에 도시된 모든 정보(그리고 도 6에 도시되지 않은 다른 정보)를 추적할 수 있더라도, 도 1의 스토리지 디바이스(120)는 이러한 모든 정보를 추적할 필요는 없다. 예를 들어, 도 1의 스토리지 디바이스(120)는, 부분집합(subset)(625)에 도시된 바와 같이, 읽기 레이턴시(61) 및 쓰기 레이턴시(615)만 추적할 수도 있다. 본 발명의 실시 예들은 이용 가능한 정보의 임의의 원하는 부분집합을 추적하는 도 1의 스토리지 디바이스(120)를 지원할 수 있다.
도 7은 도 1의 스토리지 디바이스(120)에서 요청들의 읽기 레이턴시에 대한 세부 사항을 보여준다. 도 7에 있어서, 다양한 레이턴시 버킷들은 히스토그램(705)에서 도시된다. 이러한 버킷들은 0초부터(일반적으로 도 1의 스토리지 디바이스(120)가 캐시(cache)와 같이 동작하는 매우 빠른 메모리를 가지지 않으면 비현실적임) 1초까지(데이터를 반환하기 위한 비정상적으로 긴 시간) 레이턴시 범위를 포괄한다. 0초 및 1ms 사이의 버킷들은 각 32μs 너비이다; 1ms 및 32ms 사이의 버킷들은 각 1ms 너비이고, 32ms 및 1초 사이의 버킷들은 32ms 너비이다.
일반적으로, 히스토그램(705)의 형태는 다른 분포들이 가능하고 예상될 수 있더라도, 대략적으로 벨 곡선(또는 가우시안(Gaussian) 분포)으로 예상된다. 정확한 형태는 히스토그램(705)의 평균 및 표준 편차가 달라지는 것처럼 달라질 수 있다.
히스토그램(705)은 도 1의 스토리지 디바이스(120)로부터 도 1의 BMC(135)로 보내질 수 있는 정보의 일부를 보여준다. 그러나 히스토그램(705)이 기본 정보를 포함하지 않는 것으로 이해된다: 대신에, 히스토그램(705)은 기본 정보에 대해 생성된 일부 통계를 제공한다. 즉, 기본 정보를 제공하기 보다, 통계는 기본 정보로부터 생성될 수 있다: 이러한 통계(히스토그램(705)과 같은)는 기본 정보 대신에 도 1의 BMC(135)로 제공될 수 있다.
도 8은 도 1의 BMC(135)로 전달을 위한 복수의 요청들에 대한 정보를 수집하는 도 5의 정보 결정 로직(515)을 보여준다. 상술한 바와 같이, 도 1의 스토리지 디바이스(120)에 대해 결정될 수 있는 다양한 유형의 정보가 있고, 이는 BMC(135)와 공유될 수 있다. 일부 정보(도 6의 프로그램 실패 카운트(620) 또는 도 6의 소거 실패 카운트(625)와 같은)는 전체로서 도 1의 스토리지 디바이스(120)에 대한 통계이다. 그러나 다른 정보(예를 들어, 도 6의 읽기 레이턴시(610) 및 도 6의 쓰기 레이턴시(615))는 개별 요청들 또는 도 1의 스토리지 디바이스(120)에 의해 수신된 요청들에 의존한다. 측정되는 정보의 형식이 무엇이든, 정보 결정 로직(515)은 적절한 정보를 결정할 수 있다.
도 8에 있어서, 요청들(805-1~805-4)은 도 1의 스토리지 디바이스(120)에 의해 수신되는 것을 보여준다. 정보 결정 로직(515)은 이러한 요청들에 대한 정보(810-1~810-4)를 결정할 수 있다. 공유 로직(520)은 BMC(135)와 정보(810-1~810-4)를 공유할 수 있다.
도 8이 4 개의 요청들(805-1~805-4)을 보여주더라도, 본 발명의 실시 예들은 임의의 요청들의 수를 지원할 수 있다. 또한, 개별 요청들로부터가 아닌 도 1의 스토리지 디바이스(120)로부터 결정되는 정보를 위해, 정보 결정 로직(515)은 임의의 개별 요청들(805-1~805-4)을 수신할 필요가 없을 수 있다.
정보 결정 로직(515)의 정확한 구현은 정보(810-1~810-4)가 취하는 형태에 의존하여 달라질 것이다. 예를 들어, 정보(810-1~810-4)가 도 6의 읽기 레이턴시(610) 또는 도 6의 쓰기 레이턴시(615)를 측정한다면, 본 발명의 몇몇 실시 예들에 있어서, 정보 결정 로직(515)은 요청들(805-1~805-4)을 처리하기 위해 걸리는 시간을 측정하기 위한 타이머(timer)를 포함할 수 있다(또는 대안적으로, 클럭(clock), 발생된 요청의 처리 사이의 시작 및 종료 시간들을 위한 스토리지, 및 종료 시간으로부터 시작 시간을 추출하기 위한 산술 로직 유닛). 또는, 본 발명의 다른 실시 예들에 있어서, 정보 결정 로직(515)은 실패된 프로그래밍 또는 소거 동작과 같은 특정 조건이 만족된 횟수를 카운트하기 위한 카운트를 포함할 수 있다. 여전히 본 발명의 다른 실시 예들은 열 조건과 같은 특정 조건들이 만족된 때를 감지하는 센서들을 포함할 수 있다. 그러나 정보(810-1~810-4)의 형태가 무엇이든지, 정보(810-1~810-4)는 요청(805-1~805-4) 실행의 결과는 아니다: 정보(810-1~810-4)는 요청들(805-1~805-4)의 실행에 있어서 도 1의 스토리지 디바이스(120)의 성능에 대한 정보이다. 요청들(805-1~805-4)에 응답하여 도 1의 스토리지 디바이스(120)에 의해 반환된 데이터가 요청을 발행(도 1의 컴퓨터 장치(105) 또는 도 1의 컴퓨터 장치(105)에 연결된 다른 컴퓨터 장치 상에서)한 애플리케이션으로 전달되더라도, 정보(810-1~810-4)는 BMC(135)로 전달될 것이다.
도 9는 도 5의 공유 로직(520)의 세부 사항을 보여준다. 도 9는 도 1의 BMC(135)와 도 8의 정보(810-1~810-4)의 모든 능동적 및 수동적 공유에 대한 지원을 포함하는 것으로써 공유 로직(520)을 보여준다. 본 발명의 몇몇 실시 예들은 도 9에 도시된 모든 구성 요소들을 포함할 수 있지만, 본 발명의 다른 실시 예들은 능동적 또는 수동적 모드에서 BMC(135)와 정보를 공유하기 위해 사용되는 구성 요소들만을 포함할 수 있다.
공유 로직(520)은 컨트롤러 메모리 버퍼(CMB)(905), 인증기(910), 데이터 선택기(915), 로그 페이지(log page) 생성기(920), 그리고 송신기(925)를 포함할 수 있다. CMB(905)는 도 1의 BMC(135)에 의해 직접 접근될 수 있는 도 1의 스토리지 디바이스(120) 내부의 스토리지일 수 있다. CMB(905)는 임의의 원하는 형태로 구현될 수 있다. 예를 들어, CMB(905)는 DRAM과 같은 RAM일 수 있다. CMB(905)는 BMC(135)와 정보를 공유하기 위한 능동적 모드를 나타낸다: 도 1의 스토리지 디바이스(120)가 BMC(135)와 공유하기 위한 새로운 정보를 가지는 경우, 공유 로직(520)은 CMB(905)로 새로운 정보를 쓸 수 있다. 그리고 나서, BMC(135)는 언제든지 CMB(905)를 읽을 수 있고, 도 1의 스토리지 디바이스(120)로부터 최신의 정보를 검색할 수 있다.
CMB(905)에 대한 허가되지 않은 접근을 방지하기 위해, 공유 로직(520)은 인증기(910)를 포함할 수 있다. 인증기(910)는 도 1의 BMC(135)와 같은 CMB(905)에 대한 접근을 시도하는 임의의 특정 구성 요소가 CMB(905)에 접근하기 위해 인증되었는지 여부를 결정할 수 있다. 예를 들어, 접근을 요청하는 구성 요소가 합의된 패스코드(passcode)를 제공하지 않는다면 인증기(910)는 CMB(905)로의 접근을 차단할 수 있다.
공유 로직(520)은 도 1의 스토리지 디바이스(120)에 대한 모든 정보를 공유할 수 있지만, 공유 로직(520)은 공유되는 정보를 선택할 수 있다. 데이터 선택기(915)는 도 1의 BMC(135)와 공유되는 특정 정보를 선택할 수 있다. 예를 들어, 도 1의 스토리지 디바이스(120)가 스스로에 대한 모든 가능한 정보를 수집하더라도, 도 1의 BMC(135)는 오직 도 6의 읽기 레이턴시(610) 및 도 6의 쓰기 레이턴시(615)에 관심있을 수 있다. 데이터 선택기(915)는 도 1의 BMC(135)에 의해 탐색되는 정보만 선택할 수 있어서, 공유 로직(520)은 도 1의 BMC(135)로 해당 정보를 제공할 수 있다.
데이터 선택기(915)는 히스토그램 생성기(930)를 포함할 수 있다. 히스토그램 생성기(930)는 도 7의 히스토그램(705)을 생성할 수 있고, 공유 로직(520)이 모든 정보를 공유할 필요 없이 도 1의 스토리지 디바이스(120)에 대한 정보를 압축한다. 도 1의 스토리지 디바이스(120)가 도 1의 BMC(135)와 정보를 공유하기 위한 능동적 모드를 사용하는 경우, 도 1의 BMC(135)가 특별히 관심 있어 하는 정보와 관계없이, 공유 로직(520)은 도 1의 스토리지 디바이스(120)에 대한 모든 정보를 공유할 수 있다. 그러나 도 1의 스토리지 디바이스(120)가 도 1의 BMC(135)가 관심 있어 하는 정보를 안다면, 데이터 선택기(915)는 해당 데이터가 CMB(905)로 쓰이도록 선택할 수 있다.
데이터 선택기(915)는 도 1의 스토리지 디바이스(120)가 도 1의 BMC(135)와 정보를 공유하기 위해 수동적 모드를 이용하는 경우에도 사용될 수 있다. 수동적 모드에서, BMC(135)는 로그 페이지에 대한 요청과 같은 정보에 대한 요청을 도 1의 스토리지 디바이스(120)로 전송할 수 있다. 데이터 선택기(915)는 도 1의 BMC(135)에 의해 요청된 정보를 선택할 수 있다. 로그 페이지 생성기(920)는 요청된 정보를 포함하는 로그 페이지를 생성할 수 있고, 송신기(925)는 도 1의 BMC(135)로 생성된 로그 페이지를 전송할 수 있다.
도 10은 본 발명의 실시 예에 따른 도 1의 스토리지 디바이스(120)의 성능에 대한 정보를 추적하고 도 1의 BMC(135)와 추적된 정보를 공유하기 위한 도 1의 스토리지 디바이스(120)에 대한 예시적인 절차들의 순서도를 보여준다. 도 10에 있어서, 1005 단계에서, 도 5의 수신기(510)는 하나 이상의 애플리케이션으로부터 요청들을 수신할 수 있다. 1010 단계에서, 도 4의 컨트롤러(410)는 요청들을 실행할 수 있다. 1015 단계에서, 도 1의 스토리지 디바이스(120)는 요청들을 실행한 결과를 요청 애플리케이션(들)로 반환할 수 있다. 1020 단계에서, 도 5의 애플리케이션 식별기(530)는 요청들을 발행한 애플리케이션(들)의 식별자를 결정할 수 있다. 1025 단계는 점선(1025)으로 도시된 바와 같이 생략될 수 있다.
1030 단계에서, 정보 결정 로직(515)은 도 1의 스토리지 디바이스(120)에 대한 정보를 결정할 수 있다. 이 정보는 도 1의 스토리지 디바이스(120)에 대해 일반적이거나 애플리케이션들로부터 수신된 개별 요청들에 대한 것일 수 있다. 1035 단계에서, 도 9의 히스토그램 생성기(930)는 정보로부터 통계를 생성할 수 있다. 1035 단계는 점선으로 된 화살표(1040)로 도시된 바와 같이 생략될 수 있다. 1045 단계에서, 도 5의 타임스탬퍼(525)는 도 5의 정보 결정 로직(515)에 의해 결정된 정보를 타임스탬프할 수 있다. 1045 단계는 점선(150)으로 도시된 바와 같이 생략될 수 있다. 마지막으로, 1055 단계에서, 도 5의 공유 로직(520)은 도 1의 BMC(135)와 정보를 공유할 수 있다.
도 11 및 도 12는 본 발명의 실시 예에 따라, 도 1의 BMC(135)와 정보를 공유하는 도 1의 스토리지 디바이스(120)에 대한 예시적인 절차들의 순서도를 보여준다. 도 11은 본 발명의 몇몇 실시 예들에 따라, 능동적 모드를 사용하여 도 1의 BMC(135)와 정보를 공유하는 도 1의 스토리지 디바이스(120)를 보여준다. 도 11에 있어서, 1105 단계에서, 도 5의 공유 로직(520)은 도 9의 CMB(905)에 정보를 저장할 수 있다. 1110 단계에서, 도 9의 인증기(910)는 도 1의 BMC(135)로부터 도 9의 CMB(905)에 있는 정보에 접근하기 위한 요청을 수신할 수 있다. 1115 단계에서, 도 9의 인증기(910)는 도 1의 BMC(135)를 인증하기 위한 시도를 할 수 있다. 1120 단계에서, 도 9의 인증기(910)는 도 1의 BMC(135)가 인증되었는지 여부를 결정할 수 있다. 인증 되었다면, 1125 단계에서, 도 5의 공유 로직(520)은 도 1의 BMC(135)의 도 9의 CMB(905)에 대한 접근을 승인할 수 있다. 그렇지 않으면, 1130 단계에서, 도 5의 공유 로직(520)은 도 1의 BMC(135)의 도 9의 CMB(905)에 대한 접근을 거절할 수 있다.
도 12는 본 발명의 몇몇의 실시 예에 따라, 수동적 모드를 사용하여 도 1의 BMC(135)와 정보를 공유하는 도 1의 스토리지 디바이스(120)를 보여준다. 도 12에 있어서, 1205 단계에서, 도 5의 공유 로직(520)은 도 1의 BMC(135)로부터 정보(로그 페이지와 같은)에 대한 요청을 수신할 수 있다. 1210 단계에서, 도 9의 데이터 선택기(915)는 도 1의 BMC(135)에 의해 요청된 정보를 선택할 수 있다. 1215 단계에서, 도 9의 히스토그램 생성기(930)는 도 1의 스토리지 디바이스(120)에 대한 정보로부터 히스토그램(또는 다른 통계들)을 생성할 수 있다. 1215 단계는 점선(1220)으로 도시된 바와 같이 생략될 수 있다. 1225 단계에서, 도 9의 로그 페이지 생성기(920)는 도 1의 BMC(135)에 의해 요청된 정보를 포함하는 로그 페이지를 생성할 수 있다. 1225 단계는 점선(1230)으로 도시된 바와 같이 생략될 수 있다. 마지막으로, 1235 단계에서, 도 9의 송신기(925)는 도 1의 BMC(135)로 생성된 로그 페이지를 송신할 수 있다.
도 10 내지 도 12에 있어서, 본 발명의 몇몇 실시 예들이 도시된다. 그러나 통상의 기술자는 단계들의 순서를 바꾸거나, 생략하거나, 또는 도면들에 도시되지 않은 링크들을 포함함으로써 본 발명의 다른 실시 예들 또한 가능한 것을 인식할 것이다. 이러한 순서도들의 모든 변형은 명시적으로 서술되었던 서술되지 않았던, 본 발명의 실시 예들로 고려된다.
아래의 내용은 본 발명의 특정 실시 예들이 구현될 수 있는 적합한 장치 또는 장치들의 간략하고 일반적인 설명을 제공하기 위한 것이다. 장치 또는 장치들은 다른 장치들로부터 수신된 지시들, 가상 현실(VR; virtual reality) 환경과의 상호 작용, 생체 피드백, 또는 다른 입력 신호에 의한 것뿐만 아니라 키보드들, 마우스 등과 같은 종래의 입력 디바이스들로부터의 입력에 의해, 적어도 어느 정도는, 제어될 수 있다. 본 명세서에서 사용된 바와 같이, 용어 "장치"는 단일 장치, 가상 머신, 또는 장치들과 통신으로 연결된 시스템, 가상 머신들, 또는 함께 동작하는 디바이스들을 포괄적으로 포함하는 것을 의미한다. 예시적인 장치들은 예를 들어, 자동차들, 기차들, 택시들 등과 같은 사적 또는 공적 운송 수단과 같은 운송 디바이스들뿐만 아니라, 개인용 컴퓨터들, 워크스테이션들, 서버들, 휴대용 컴퓨터들, 휴대용 디바이스들, 전화기들, 테블릿들 등과 같은 컴퓨팅 디바이스들을 포함한다.
장치 또는 장치들은 프로그램 가능하거나 프로그램 가능하지 않은 로직 디바이스들 또는 로직 어레이들, 응용 주문형 집적 회로들(ASICs; Application Specific Integrated Circuits), 임베디드 컴퓨터들, 스마트 카드들 등과 같은 임베디드 컨트롤러들을 포함할 수 있다. 장치 또는 장치들은 네트워크 인터페이스, 모뎀, 또는 다른 통신 연결을 통해 하나 이상의 원격 장치들에 하나 이상의 연결을 활용할 수 있다. 장치들은 인트라넷, 인터넷, 근거리 네트워크들, 광역 네트워크들 등과 같은 물리적 그리고/또는 논리적 네트워크를 이용하여 상호 연결될 수 있다. 통상의 기술자는 네트워크 통신이 라디오 주파수(RF), 위성, 마이크로웨이브(microwave), IEEE(Institute of Electrical and Electronics Engineers) 802.11, 블루투스, 광, 적외선, 케이블, 레이저 등을 포함하는 다양한 유선 그리고/또는 무선 근거리 또는 원거리 운반체들 및 프로토콜들을 활용할 수 있다는 것을 이해할 것이다.
본 발명의 실시 예들은 기능들, 절차들, 데이터 구조들, 애플리케이션 프로그램들 등을 포함하는 관련 데이터와 같이 또는 관련 데이터를 참조함으로써 설명될 수 있다. 관련 데이터는 장치에 의해 접근된 경우 장치가 작업들을 수행하거나 추상적 데이터 유형들 또는 하위 레벨 하드웨어 컨텍스트들(contexts)을 정의하게 한다. 관련 데이터는, 예를 들어, RAM, ROM 등과 같은 휘발성 그리고/또는 불휘발성 메모리, 또는 하드 드라이브들, 플로피 디스크들, 광학 스토리지, 테이프들, 스토리지, 메모리 스틱들, 디지털 비디오 디스크들, 생물학적 스토리지 등을 포함하는 다른 스토리지 디바이스들 및 관련된 스토리지 미디어에 저장될 수 있다. 관련 데이터는 패킷들(packets), 직렬 테이터, 병렬 데이터, 전파된 신호들 등의 형태로 물리적 그리고/또는 논리적 네트워크를 포함하는 전송 환경들을 통해 전달될 수 있고, 압축되거나 암호화된 형태로 이용될 수 있다. 관련 데이터는 분산 환경에서 이용될 수 있고, 장치 접근을 위해 로컬로 그리고/또는 원격으로 저장될 수 있다.
본 발명의 실시 예들은 하나 이상의 프로세서들에 의해 실행될 수 있는 명령어들을 포함하는 유형의 비일시적인 장치 판독 가능한 기록 매체를 포함할 수 있다. 명령어들은 본 명세서에서 설명된 대로 본 발명의 요소들을 수행하는 명령들을 포함한다.
설명된 실시 예들을 참조하여 본 발명의 원리들을 설명한 바와 같이, 설명된 실시 예들은 이러한 원리들로부터 벗어나지 않고 배치 및 세부 사항에 있어서 변형될 수 있고, 임의의 방식으로 결합될 수 있다. 그리고, 상술한 내용은 특정 실시 예들에 초점을 맞췄을 지라도, 다른 구성들은 고려된다. 특히, "본 발명의 하나의 실시 예에 따라"와 같은 표현들 또는 본 명세서에서 사용된 이와 같은 표현들이라도, 이러한 문구들은 일반적으로 가능한 실시 예를 참조하기 위한 의미이고, 본 발명을 특정 실시 예의 구성으로 한정하려는 것은 아니다. 본 명세서에서 사용된 바와 같이, 이러한 용어들은 다른 실시 예들로 결합할 수 있는 동일한 또는 다른 실시 예들을 참조할 수 있다.
앞에서 설명한 실시 예들은 본 발명을 제한하는 것으로 해석되지 않는다. 비록 몇몇 실시 예들이 설명되었지만, 통상의 기술자들은 본 발명의 새로운 개시들 및 이점들로부터 벗어나지 않는 실시 예들에 대해 다양한 변형을 쉽게 할 수 있을 것이다. 이에 따라, 이러한 변형들은 청구항들에서 정의된 바와 같이 본 발명의 권리 범위 내에 포함된 것으로 의도된다.
본 발명의 실시 예들은 제한 없이, 다음과 같은 서술들로 확장될 수 있다.
서술 1. 본 발명의 실시 예에 따른 스토리지 디바이스는,
데이터를 저장하는 스토리지;
복수의 요청들에 응답하여 상기 스토리지로부터 데이터를 읽는 것과 상기 스토리지로 데이터를 쓰는 것을 관리하는 스토리지 디바이스 컨트롤러를 포함하고,
상기 스토리지 디바이스 컨트롤러는,
복수의 요청들에 대한 정보를 위한 스토리지;
상기 복수의 요청들을 수신하는 수신기;
상기 복수의 요청들 각각에 대한 정보를 결정하는 정보 결정 로직; 및
관리 컨트롤러와 상기 복수의 요청들 각각에 대한 정보를 공유하는 공유 로직을 포함한다.
서술 2. 서술 1에 따른 스토리지 디바이스를 포함하는 본 발명의 실시 예에 있어서, 상기 관리 컨트롤러는 베이스보드 관리 컨트롤러(BMC)를 포함한다.
서술 3. 서술 1에 따른 스토리지 디바이스를 포함하는 본 발명의 실시 예에 있어서, 상기 스토리지 디바이스는 솔리드 스테이트 드라이브(SSD)를 포함한다.
서술 4. 서술 3에 따른 스토리지 디바이스를 포함하는 본 발명의 실시 예에 있어서, 상기 SSD는 NVMeoF 프로토콜에 따른 NVMe(Non-Volatile Memory Express)를 지원한다.
서술 5. 서술 3에 따른 스토리지 디바이스를 포함하는 본 발명의 실시 예에 있어서, 상기 SSD는 적어도 하나의 PCIe(Peripheral Component Interconnect Express) 레인을 통해 상기 관리 컨트롤러와 통신한다.
서술 6. 서술 5에 따른 스토리지 디바이스를 포함하는 본 발명의 실시 예에 있어서, 상기 SSD는 이더넷 포트를 통해 상기 복수의 요청들을 수신한다.
서술 7. 서술 1에 따른 스토리지 디바이스를 포함하는 본 발명의 실시 예에 있어서, 상기 정보 결정 로직은 상기 복수의 요청들 각각이 상기 스토리지 디바이스에 의해 실행되는 동안 상기 복수의 요청들 각각에 대한 정보를 결정하도록 동작한다.
서술 8. 서술 1에 따른 스토리지 디바이스를 포함하는 본 발명의 실시 예에 있어서, 상기 정보는 읽기 레이턴시들, 쓰기 레이턴시들, 프로그램 실패 카운트들, 소거 실패 카운트들, 웨어 레벨 카운트들, 비트 에러율들, 및 인터페이스 비트 에러율들을 포함하는 세트로부터 획득된다.
서술 9. 서술 1에 따른 스토리지 디바이스를 포함하는 본 발명의 실시 예에 있어서,
상기 정보 결정 로직은 상기 복수의 요청들에 대한 통계를 결정하도록 동작하고; 그리고
상기 공유 로직은 상기 관리 컨트롤러와 상기 복수의 요청들에 대한 통계를 공유하도록 동작한다.
서술 10. 서술 1에 따른 스토리지 디바이스를 포함하는 본 발명의 실시 예에 있어서, 상기 공유 로직은 상기 복수의 요청들 각각에 대한 정보를 저장할 수 있는 컨트롤러 메모리 버퍼(CMB)를 포함한다.
서술 11. 서술 10에 따른 스토리지 디바이스를 포함하는 본 발명의 실시 예에 있어서, 상기 공유 로직은 상기 관리 컨트롤러가 상기 CMB에 접근하는 것을 허가하기 전에 상기 관리 컨트롤러를 인증하는 인증기를 포함한다.
서술 12. 서술 1에 따른 스토리지 디바이스를 포함하는 본 발명의 실시 예에 있어서,
상기 수신기는 상기 관리 컨트롤러로부터 데이터에 대한 요청을 수신하도록 동작하고; 그리고
상기 공유 로직은:
상기 복수의 요청들 각각에 대한 상기 정보로부터 상기 데이터를 선택하는 데이터 선택기; 및
상기 관리 컨트롤러로 상기 선택된 데이터를 송신하는 송신기를 포함한다.
서술 13. 서술 12에 따른 스토리지 디바이스를 포함하는 본 발명의 실시 예에 있어서,
상기 공유 로직은 상기 선택된 데이터로부터 로그 페이지를 생성하는 로그 페이지 생성기를 더 포함하고; 그리고
상기 송신기는 상기 관리 컨트롤러로 상기 로그 페이지를 송신하도록 동작한다.
서술 14. 서술 12에 따른 스토리지 디바이스를 포함하는 본 발명의 실시 예에 있어서, 상기 선택된 데이터는 상기 복수의 요청들 각각에 대한 상기 정보의 부분집합이다.
서술 15. 서술 12에 따른 스토리지 디바이스를 포함하는 본 발명의 실시 예에 있어서, 상기 데이터 선택기는 상기 선택된 데이터로부터 히스토그램을 생성하는 히스토그램 생성기를 포함한다.
서술 16. 서술 1에 따른 스토리지 디바이스를 포함하는 본 발명의 실시 예에 있어서, 상기 스토리지 디바이스 컨트롤러는 상기 복수의 요청들 각각에 대한 상기 정보를 타임스탬프하는 타임스탬퍼를 더 포함한다.
서술 17. 서술 1에 따른 스토리지 디바이스를 포함하는 본 발명의 실시 예에 있어서, 상기 스토리지 디바이스 컨트롤러는 상기 복수의 요청들 각각에 대한 애플리케이션 ID를 결정하는 애플리케이션 식별기를 더 포함한다.
서술 18. 서술 17에 따른 스토리지 디바이스를 포함하는 본 발명의 실시 예에 있어서, 상기 스토리지 디바이스는 상기 애플리케이션 ID에 의해 식별된 애플리케이션을 실행하는 임베디드된 마이크로프로세서를 포함한다.
서술 19. 본 발명의 실시 예에 따른 방법은:
스토리지 디바이스에서 복수의 요청들을 수신하는 단계;
상기 스토리지 디바이스에서 상기 복수의 요청들 각각을 실행하는 단계;
상기 스토리지 디바이스로부터 상기 복수의 요청들 각각의 결과들을 반환하는 단계;
상기 복수의 요청들 각각에 대한 정보를 결정하는 단계, 여기서 상기 정보는 상기 스토리지 디바이스에서의 상기 복수의 요청들 각각의 실행에 있어서 상기 스토리지 디바이스의 성능을 나타내고; 및
관리 컨트롤러와 상기 정보를 공유하는 단계를 포함한다.
서술 20. 서술 19에 따른 방법을 포함하는 본 발명의 실시 예에 있어서, 상기 관리 컨트롤러는 베이스보드 관리 컨트롤러(BMC)를 포함한다.
서술 21. 서술 19에 따른 방법을 포함하는 본 발명의 실시 예에 있어서, 상기 스토리지 디바이스는 솔리드 스테이트 드라이브(SSD)를 포함한다.
서술 22. 서술 11에 따른 방법을 포함하는 본 발명의 실시 예에 있어서, 상기 SSD는 NVMeoF 프로토콜에 따른 NVMe(Non-Volatile Memory Express)를 지원한다.
서술 23. 서술 21에 따른 방법을 포함하는 본 발명의 실시 예에 있어서, 상기 관리 컨트롤러와 상기 정보를 공유하는 단계는 적어도 하나의 PCIe(Peripheral Component Interconnect Express) 레인을 통해 상기 관리 컨트롤러와 상기 정보를 공유하는 단계를 포함한다.
서술 24. 서술 23에 따른 방법을 포함하는 본 발명의 실시 예에 있어서, 상기 스토리지 디바이스에서 복수의 요청들을 수신하는 단계는 이더넷 포트를 통해 상기 상기 SSD에서 상기 복수의 요청들을 수신하는 단계를 포함한다.
서술 25. 서술 19에 따른 방법을 포함하는 본 발명의 실시 예에 있어서, 상기 복수의 요청들 각각에 대한 정보를 결정하는 단계는 상기 복수의 요청들 각각을 실행하는 동안 상기 복수의 요청들 각각에 대한 정보를 결정하는 단계를 포함한다.
서술 26. 서술 19에 따른 방법을 포함하는 본 발명의 실시 예에 있어서, 상기 정보는 읽기 레이턴시들, 쓰기 레이턴시들, 프로그램 실패 카운트들, 소거 실패 카운트들, 웨어 레벨 카운트들, 비트 에러율들, 및 인터페이스 비트 에러율들을 포함하는 세트로부터 획득된다.
서술 27. 서술 19에 따른 방법을 포함하는 본 발명의 실시 예에 있어서,
상기 복수의 요청들 각각에 대한 정보를 결정하는 단계는 상기 복수의 요청들에 대한 통계를 결정하는 단계를 포함하고; 그리고
관리 컨트롤러와 상기 정보를 공유하는 단계는 상기 관리 컨트롤러와 상기 복수의 요청들에 대한 통계를 공유하는 단계를 포함한다.
서술 28. 서술 19에 따른 방법을 포함하는 본 발명의 실시 예에 있어서, 관리 컨트롤러와 상기 정보를 공유하는 단계는 상기 복수의 요청들 각각에 대한 상기 정보를 컨트롤러 메모리 버퍼(CMB)로 저장하는 단계를 포함한다.
서술 29. 서술 28에 따른 방법을 포함하는 본 발명의 실시 예에 있어서, 관리 컨트롤러와 상기 정보를 공유하는 단계는:
상기 관리 컨트롤러로부터 상기 CMB에 접근하기 위한 요청을 수신하는 단계; 및
상기 관리 컨트롤러를 인증하는 단계를 더 포함한다.
서술 30. 서술 19에 따른 방법을 포함하는 본 발명의 실시 예에 있어서, 관리 컨트롤러와 상기 정보를 공유하는 단계는:
상기 관리 컨트롤러로부터 데이터에 대한 요청을 수신하는 단계;
상기 복수의 요청들 각각에 대한 상기 정보로부터 데이터를 선택하는 단계; 및
상기 복수의 요청들 각각에 대한 상기 정보로부터 상기 선택된 데이터를 상기 관리 컨트롤러로 송신하는 단계를 포함한다.
서술 31. 서술 30에 따른 방법을 포함하는 본 발명의 실시 예에 있어서,
관리 컨트롤러와 상기 정보를 공유하는 단계는 상기 데이터를 포함하는 로그 페이지를 생성하는 단계; 및
상기 복수의 요청들 각각에 대한 상기 정보로부터 상기 선택된 데이터를 상기 관리 컨트롤러로 송신하는 단계는 상기 관리 컨트롤러로 상기 로그 페이지를 송신하는 단계를 포함한다.
서술 32. 서술 30에 따른 방법을 포함하는 본 발명의 실시 예에 있어서, 상기 선택된 데이터는 상기 복수의 요청들 각각에 대한 상기 정보의 부분집합이다.
서술 33. 서술 30에 따른 방법을 포함하는 본 발명의 실시 예에 있어서, 상기 복수의 요청들 각각에 대한 상기 정보로부터 데이터를 선택하는 단계는 상기 선택된 데이터로서 상기 복수의 요청들 각각에 대한 상기 정보로부터 히스토그램을 생성하는 단계를 포함한다.
서술 34. 서술 19에 따른 방법을 포함하는 본 발명의 실시 예에 있어서, 상기 복수의 요청들 각각에 대한 정보를 결정하는 단계는 상기 복수의 요청들 각각에 대한 상기 정보를 타임스탬프하는 단계를 포함한다.
서술 35. 서술 34에 따른 방법을 포함하는 본 발명의 실시 예에 있어서, 관리 컨트롤러와 상기 정보를 공유하는 단계는 이전 타임스탬프보다 더 최신의 타임스탬프를 가지는 상기 정보를 선택하는 단계를 포함한다.
서술 36. 서술 19에 따른 방법을 포함하는 본 발명의 실시 예에 있어서, 상기 복수의 요청들 각각에 대한 정보를 결정하는 단계는 상기 복수의 요청들 각각에 대한 애플리케이션 ID를 결정하는 단계를 포함한다.
서술 37. 서술 36에 따른 방법을 포함하는 본 발명의 실시 예에 있어서, 상기 애플리케이션 ID는 상기 스토리지 디바이스에 임베디드된 마이크로프로세서에서 실행되는 애플리케이션을 식별한다.
서술 38. 본 발명의 실시 예에 따른 물품은 비일시적 기억 매체를 포함하고, 상기 비일시적 기억 매체는, 장치에 의해 실행되는 경우,
스토리지 디바이스에 복수의 요청들을 수신하는 단계;
상기 스토리지 디바이스에서 상기 복수의 요청들 각각을 실행하는 단계;
상기 스토리지 디바이스로부터 상기 복수의 요청들 각각의 결과들을 반환하는 단계;
상기 복수의 요청들 각각에 대한 정보를 결정하는 단계, 여기서 상기 정보는 상기 스토리지 디바이스에서의 상기 복수의 요청들 각각의 실행에 있어서 상기 스토리지 디바이스의 성능을 나타내고; 그리고
관리 컨트롤러와 상기 정보를 공유하는 단계를 실행하는 명령어들을 저장한다.
서술 39. 서술 38에 따른 물품을 포함하는 본 발명의 실시 예에 있어서, 상기 관리 컨트롤러는 베이스보드 관리 컨트롤러(BMC)를 포함한다.
서술 40. 서술 38에 따른 물품을 포함하는 본 발명의 실시 예에 있어서, 상기 스토리지 디바이스는 솔리드 스테이트 드라이브(SSD)를 포함한다.
서술 41. 서술 40에 따른 물품을 포함하는 본 발명의 실시 예에 있어서, 상기 SSD는 NVMeoF 프로토콜에 따른 NVMe(Non-Volatile Memory Express)를 지원한다.
서술 42. 서술 40에 따른 물품을 포함하는 본 발명의 실시 예에 있어서, 관리 컨트롤러와 상기 정보를 공유하는 단계는 적어도 하나의 PCIe(Peripheral Component Interconnect Express) 레인을 통해 상기 관리 컨트롤러와 상기 정보를 공유하는 단계를 포함한다.
서술 43. 서술 42에 따른 물품을 포함하는 본 발명의 실시 예에 있어서, 스토리지 디바이스에서 복수의 요청들을 수신하는 단계는 이더넷 포트를 통해 상기 상기 SSD에서 상기 복수의 요청들을 수신하는 단계를 포함한다.
서술 44. 서술 38에 따른 물품을 포함하는 본 발명의 실시 예에 있어서, 상기 복수의 요청들 각각에 대한 정보를 결정하는 단계는 상기 복수의 요청들 각각을 실행하는 동안 상기 복수의 요청들 각각에 대한 정보를 결정하는 단계를 포함한다.
서술 45. 서술 38에 따른 물품을 포함하는 본 발명의 실시 예에 있어서, 상기 정보는 읽기 레이턴시들, 쓰기 레이턴시들, 프로그램 실패 카운트들, 소거 실패 카운트들, 웨어 레벨 카운트들, 비트 에러율들, 및 인터페이스 비트 에러율들을 포함하는 세트로부터 획득된다.
서술 46. 서술 38에 따른 물품을 포함하는 본 발명의 실시 예에 있어서,
상기 복수의 요청들 각각에 대한 정보를 결정하는 단계는 상기 복수의 요청들에 대한 통계를 결정하는 단계를 포함하고; 그리고
관리 컨트롤러와 상기 정보를 공유하는 단계는 상기 관리 컨트롤러와 상기 복수의 요청들에 대한 통계를 공유하는 단계를 포함한다.
서술 47. 서술 38에 따른 물품을 포함하는 본 발명의 실시 예에 있어서, 관리 컨트롤러와 상기 정보를 공유하는 단계는 상기 복수의 요청들 각각에 대한 상기 정보를 컨트롤러 메모리 버퍼(CMB)로 저장하는 단계를 포함한다.
서술 48. 서술 47에 따른 물품을 포함하는 본 발명의 실시 예에 있어서, 관리 컨트롤러와 상기 정보를 공유하는 단계는:
상기 관리 컨트롤러로부터 상기 CMB에 접근하기 위한 요청을 수신하는 단계; 및
상기 관리 컨트롤러를 인증하는 단계를 더 포함한다.
서술 49. 서술 38에 따른 물품을 포함하는 본 발명의 실시 예에 있어서, 관리 컨트롤러와 상기 정보를 공유하는 단계는:
상기 관리 컨트롤러로부터 데이터에 대한 요청을 수신하는 단계;
상기 복수의 요청들 각각에 대한 상기 정보로부터 데이터를 선택하는 단계; 및
상기 복수의 요청들 각각에 대한 상기 정보로부터 상기 선택된 데이터를 상기 관리 컨트롤러로 송신하는 단계를 포함한다.
서술 50. 서술 49에 따른 물품을 포함하는 본 발명의 실시 예에 있어서,
관리 컨트롤러와 상기 정보를 공유하는 단계는 상기 데이터를 포함하는 로그 페이지를 생성하는 단계; 및
상기 복수의 요청들 각각에 대한 상기 정보로부터 상기 선택된 데이터를 상기 관리 컨트롤러로 송신하는 단계는 상기 관리 컨트롤러로 상기 로그 페이지를 송신하는 단계를 포함한다.
서술 51. 서술 49에 따른 물품을 포함하는 본 발명의 실시 예에 있어서, 상기 선택된 데이터는 상기 복수의 요청들 각각에 대한 상기 정보의 부분집합이다.
서술 52. 서술 49에 따른 물품을 포함하는 본 발명의 실시 예에 있어서, 상기 복수의 요청들 각각에 대한 상기 정보로부터 데이터를 선택하는 단계는 상기 선택된 데이터로서 상기 복수의 요청들 각각에 대한 상기 정보로부터 히스토그램을 생성하는 단계를 포함한다.
서술 53. 서술 38에 따른 물품을 포함하는 본 발명의 실시 예에 있어서, 상기 복수의 요청들 각각에 대한 정보를 결정하는 단계는 상기 복수의 요청들 각각에 대한 상기 정보를 타임스탬프하는 단계를 포함한다.
서술 54. 서술 53에 따른 물품을 포함하는 본 발명의 실시 예에 있어서, 관리 컨트롤러와 상기 정보를 공유하는 단계는 이전 타임스탬프보다 더 최신의 타임스탬프를 가지는 상기 정보를 선택하는 단계를 포함한다.
서술 55. 서술 38에 따른 물품을 포함하는 본 발명의 실시 예에 있어서, 상기 복수의 요청들 각각에 대한 정보를 결정하는 단계는 상기 복수의 요청들 각각에 대한 애플리케이션 ID를 결정하는 단계를 포함한다.
서술 56. 서술 55에 따른 물품을 포함하는 본 발명의 실시 예에 있어서, 상기 애플리케이션 ID는 상기 스토리지 디바이스에 임베디드된 마이크로프로세서를 실행하는 애플리케이션을 식별한다.
따라서, 본 명세서에서 설명된 실시 예들에 대한 다양한 치환의 관점에서, 상세한 설명 및 첨부된 자료는 단지 설명만을 위한 것이고, 본 발명의 권리 범위를 제한하지 않아야 한다. 따라서, 본 발명에서 청구되는 것은 아래의 청구항들의 범위 및 동등한 범위 내에 있을 수 있는 모든 변형을 포함한다.

Claims (10)

  1. 데이터를 저장하는 제 1 스토리지;
    호스트로부터 이더넷 스위치를 통한 복수의 요청들에 응답하여, 상기 제 1 스토리지로부터의 데이터 읽기 및 상기 제 1 스토리지로의 데이터 쓰기를 관리하는 스토리지 디바이스 컨트롤러를 포함하되,
    상기 스토리지 디바이스 컨트롤러는:
    상기 복수의 요청들 각각에 대한 정보를 위한 제 2 스토리지;
    상기 복수의 요청들을 수신하는 수신기;
    상기 복수의 요청들 각각에 대한 상기 정보를 결정하는 정보 결정 로직; 및
    PCIe(Peripheral Component Interconnect Express) 스위치와의 PCIe 연결을 통해 상기 복수의 요청들 각각에 대한 상기 정보를 관리 컨트롤러와 공유하는 공유 로직을 포함하고,
    상기 복수의 요청들은 상기 이더넷 스위치로부터 이더넷 연결을 통하여 직접 상기 제 1 스토리지에서 수신되고,
    상기 복수의 요청들 각각에 대한 상기 정보는 상기 관리 컨트롤러로 전달되고,
    상기 이더넷 스위치는 데이터 영역의 통신을 수행하고,
    상기 PCIe 스위치는 제어 영역의 통신을 수행하는 스토리지 디바이스.
  2. 제 1 항에 있어서,
    상기 복수의 요청들이 각각 실행되는 동안, 상기 정보 결정 로직은 상기 복수의 요청들 각각에 대한 상기 정보를 결정하도록 동작하고,
    상기 관리 컨트롤러는 요청된 애플리케이션(application)의 서비스 레벨 및 테일 레이턴시(tail latency)의 적어도 일부에 기반하여, 상기 테일 레이턴시를 결정하고, 애플리케이션을 할당하기 위하여 상기 복수의 요청들 각각에 대한 상기 정보를 사용하는 스토리지 디바이스.
  3. 제 1 항에 있어서,
    상기 정보는 읽기 레이턴시들, 쓰기 레이턴시들, 프로그램 실패 카운트들, 소거 실패 카운트들, 웨어 레벨 카운트들, 비트 에러율들, 및 인터페이스 비트 에러율들을 포함하는 세트로부터 획득되는 스토리지 디바이스.
  4. 제 1 항에 있어서,
    상기 공유 로직은 상기 복수의 요청들 각각에 대한 상기 정보를 저장하는 컨트롤러 메모리 버퍼(CMB)를 포함하고,
    상기 공유 로직으로부터 상기 정보에 대한 상기 관리 컨트롤러의 수동적 요청 없이, 상기 공유 로직은 상기 컨트롤러 메모리 버퍼에 상기 정보에 대한 쓰기 동작을 수행하고, 상기 관리 컨트롤러는 상기 컨트롤러 메모리 버퍼로부터 상기 정보에 대한 읽기 동작을 수행하는 스토리지 디바이스.
  5. 제 1 항에 있어서,
    상기 수신기는 상기 관리 컨트롤러로부터 데이터에 대한 요청을 수신하도록 동작하고,
    상기 공유 로직은:
    상기 복수의 요청들 각각에 대한 상기 정보로부터 상기 데이터를 선택하는 데이터 선택기; 및
    상기 관리 컨트롤러로 상기 선택된 데이터를 송신하는 송신기를 포함하는 스토리지 디바이스.
  6. 제 1 항에 있어서,
    상기 스토리지 디바이스 컨트롤러는 상기 복수의 요청들 각각에 대한 상기 정보를 타임스탬프하는 타임스탬퍼(timestamper)를 더 포함하는 스토리지 디바이스.
  7. 제 1 항에 있어서,
    상기 스토리지 디바이스 컨트롤러는 상기 복수의 요청들 각각에 대한 애플리케이션 ID를 결정하는 애플리케이션 식별기를 더 포함하는 스토리지 디바이스.
  8. 호스트로부터 이더넷 스위치를 통하여 스토리지 디바이스에서 복수의 요청들을 수신하는 단계;
    상기 스토리지 디바이스에서 상기 복수의 요청들 각각을 실행하는 단계;
    상기 복수의 요청들 각각의 결과들을 상기 스토리지 디바이스로부터 상기 호스트로 반환하는 단계;
    상기 복수의 요청들 각각에 대한 정보를 결정하는 단계; 및
    PCIe(Peripheral Component Interconnect Express) 스위치와의 PCIe 연결을 통하여 관리 컨트롤러와 상기 정보를 공유하는 단계를 포함하되,
    상기 복수의 요청들은 상기 이더넷 스위치로부터 이더넷 연결을 통하여 직접 수신되고,
    상기 이더넷 스위치는 데이터 영역의 통신을 수행하고,
    상기 PCIe 스위치는 제어 영역의 통신을 수행하고,
    상기 정보는 상기 스토리지 디바이스에서 상기 복수의 요청들 각각을 실행하는데 있어서 상기 스토리지 디바이스의 성능을 나타내는 방법.
  9. 제 8 항에 있어서,
    상기 정보를 관리 컨트롤러와 공유하는 단계는 상기 복수의 요청들 각각에 대한 상기 정보를 컨트롤러 메모리 버퍼(CMB)로 저장하는 단계를 포함하고,
    상기 정보는 상기 컨트롤러 메모리 버퍼에 저장되고,
    상기 스토리지 디바이스로부터 상기 정보에 대한 상기 관리 컨트롤러의 수동적 요청 없이, 상기 관리 컨트롤러는 상기 컨트롤러 메모리 버퍼로부터 상기 정보에 대한 읽기 동작을 수행하는 방법.
  10. 제 9 항에 있어서,
    상기 정보를 관리 컨트롤러와 공유하는 단계는:
    상기 관리 컨트롤러로부터 상기 CMB에 접근하기 위한 요청을 수신하는 단계; 및
    상기 관리 컨트롤러를 인증하는 단계를 더 포함하는 방법.
KR1020170160191A 2017-04-11 2017-11-28 최저 테일 레이턴시를 갖는 ssd들을 식별하기 위한 시스템 및 방법 KR102478392B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762484387P 2017-04-11 2017-04-11
US62/484,387 2017-04-11
US15/653,479 US10545664B2 (en) 2017-04-11 2017-07-18 System and method for identifying SSDs with lowest tail latencies
US15/653,479 2017-07-18

Publications (2)

Publication Number Publication Date
KR20180114819A KR20180114819A (ko) 2018-10-19
KR102478392B1 true KR102478392B1 (ko) 2022-12-19

Family

ID=63711518

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170160191A KR102478392B1 (ko) 2017-04-11 2017-11-28 최저 테일 레이턴시를 갖는 ssd들을 식별하기 위한 시스템 및 방법

Country Status (3)

Country Link
US (4) US10545664B2 (ko)
KR (1) KR102478392B1 (ko)
CN (1) CN108694022B (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10798145B1 (en) * 2017-04-25 2020-10-06 Benjamin J. Garney Analyzing data streams
US10181351B1 (en) * 2017-08-30 2019-01-15 Micron Technology, Inc. Increased NAND performance under high thermal conditions
US11210195B2 (en) * 2018-08-14 2021-12-28 Intel Corporation Dynamic device-determined storage performance
EP4310658A1 (en) * 2022-07-21 2024-01-24 Samsung Electronics Co., Ltd. Electronic device supporting out-of-band communication, and method of operating the same

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7191283B2 (en) * 2003-08-21 2007-03-13 International Business Machines Corporation Grouping of storage media based on parameters associated with the storage media
US7147384B2 (en) * 2004-03-26 2006-12-12 3M Innovative Properties Company Small form factor optical connector with thermoplastic adhesive
US7716335B2 (en) * 2005-06-27 2010-05-11 Oracle America, Inc. System and method for automated workload characterization of an application server
WO2011044154A1 (en) * 2009-10-05 2011-04-14 Marvell Semiconductor, Inc. Data caching in non-volatile memory
JP2012084127A (ja) 2010-09-15 2012-04-26 Toshiba Corp 半導体装置
US8468318B2 (en) 2010-09-15 2013-06-18 Pure Storage Inc. Scheduling of I/O writes in a storage environment
US9195588B2 (en) * 2010-11-02 2015-11-24 Hewlett-Packard Development Company, L.P. Solid-state disk (SSD) management
US9417803B2 (en) 2011-09-20 2016-08-16 Apple Inc. Adaptive mapping of logical addresses to memory devices in solid state drives
US9043184B1 (en) * 2011-10-12 2015-05-26 Netapp, Inc. System and method for identifying underutilized storage capacity
KR101991905B1 (ko) * 2012-07-19 2019-06-24 삼성전자주식회사 불휘발성 메모리, 불휘발성 메모리의 읽기 방법 및 불휘발성 메모리를 포함하는 메모리 시스템
US20140215177A1 (en) 2012-08-02 2014-07-31 Boo Jin Kim Methods and Systems for Managing Heterogeneous Memories
US20140324862A1 (en) * 2013-04-30 2014-10-30 Splunk Inc. Correlation for user-selected time ranges of values for performance metrics of components in an information-technology environment with log data from that information-technology environment
US8904389B2 (en) * 2013-04-30 2014-12-02 Splunk Inc. Determining performance states of components in a virtual machine environment based on performance states of related subcomponents
US9541987B2 (en) 2013-06-28 2017-01-10 Intel Corporation Generic host-based controller latency method and appartus
US20150089132A1 (en) * 2013-09-23 2015-03-26 Lsi Corporation Dynamic storage volume configuration based on input/output requests
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
JP2015114873A (ja) * 2013-12-12 2015-06-22 富士通株式会社 情報処理装置および監視方法
US9563502B1 (en) * 2013-12-20 2017-02-07 Seagate Technology Llc Read retry operations with read reference voltages ranked for different page populations of a memory
CA2941702A1 (en) 2014-03-08 2015-09-17 Diamanti, Inc. Methods and systems for converged networking and storage
JP6273353B2 (ja) * 2014-04-21 2018-01-31 株式会社日立製作所 計算機システム
US9477295B2 (en) * 2014-05-15 2016-10-25 Dell Products, L.P. Non-volatile memory express (NVMe) device power management
JP6286542B2 (ja) * 2014-06-20 2018-02-28 株式会社日立製作所 計算機システム
CN104202197B (zh) * 2014-09-12 2019-03-01 华为技术有限公司 设备管理的方法和装置
US10156994B2 (en) * 2015-02-27 2018-12-18 Western Digital Technologies, Inc. Methods and systems to reduce SSD IO latency
CN104765570A (zh) * 2015-03-16 2015-07-08 浪潮集团有限公司 一种基于pci-e多主机共享的存储单元
KR102076196B1 (ko) 2015-04-14 2020-02-12 에스케이하이닉스 주식회사 메모리 시스템, 메모리 모듈 및 메모리 모듈의 동작 방법
US9760314B2 (en) * 2015-05-29 2017-09-12 Netapp, Inc. Methods for sharing NVM SSD across a cluster group and devices thereof
US10346425B2 (en) 2015-07-02 2019-07-09 Google Llc Distributed storage system with replica location selection
US10007638B2 (en) * 2015-11-10 2018-06-26 Dell Products, Lp Asynchronous notification including parameter values in serial advanced technology attachment protocol
US9418088B1 (en) * 2015-12-02 2016-08-16 International Business Machines Corporation Identification of storage system elements causing performance degradation
US10536538B2 (en) * 2016-09-16 2020-01-14 Microsoft Technology Licensing, Llc Secure data erasure verification in hyperscale computing systems
US10572397B2 (en) * 2016-09-30 2020-02-25 Hewlett Packard Enterprise Development Lp Masking storage device presence
US10372344B2 (en) * 2016-12-08 2019-08-06 Western Digital Technologies, Inc. Read tail latency reduction
US20180253500A1 (en) * 2017-03-03 2018-09-06 Dell Products, Lp Visual Mapping of Device Alerts
US10866912B2 (en) 2017-03-10 2020-12-15 Toshiba Memory Corporation Integrated heterogeneous solid state storage drive
US10495566B2 (en) * 2017-03-30 2019-12-03 Dell Products L.P. Circuits, systems and methods for corrosion detection
US10686833B2 (en) * 2017-03-31 2020-06-16 Samsung Electronics Co., Ltd. System and method of detecting and countering denial-of-service (DoS) attacks on an NVMe-of-based computer storage array
US10289522B2 (en) * 2017-04-06 2019-05-14 Dell Products, Lp Autonomous information technology diagnostic checks
US10838867B2 (en) * 2017-04-11 2020-11-17 Dell Products, L.P. System and method for amalgamating server storage cache memory

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
미국공개특허 2005-0044313호(2005.02.24.) 1부.*
미국공개특허 제2007-0011330호(2007.01.11.) 1부.*
미국공개특허 제2014-0324862호(2014.10.30.) 1부.*
미국등록특허 제9043184호(2015.05.26.) 1부.*
미국등록특허 제9563502호(2017.02.07.) 1부.*
한국공개특허 제10-2016-0138448호(2016.12.05.) 1부.*

Also Published As

Publication number Publication date
CN108694022B (zh) 2023-04-28
US20240020001A1 (en) 2024-01-18
KR20180114819A (ko) 2018-10-19
CN108694022A (zh) 2018-10-23
US20210318804A1 (en) 2021-10-14
US20200097176A1 (en) 2020-03-26
US11714548B2 (en) 2023-08-01
US20180292992A1 (en) 2018-10-11
US11073987B2 (en) 2021-07-27
US10545664B2 (en) 2020-01-28

Similar Documents

Publication Publication Date Title
CN109933283B (zh) 直接主机访问存储装置存储空间
US11604690B2 (en) Online failure span determination
US11714548B2 (en) System and method for identifying SSDs with lowest tail latencies
US11354454B2 (en) Apparatus and method of detecting potential security violations of direct access non-volatile memory device
KR20210155340A (ko) 손상된 저장 디바이스 펌웨어의 검출
US11507285B1 (en) Systems and methods for providing high-performance access to shared computer memory via different interconnect fabrics
US11231987B1 (en) Debugging of memory operations
US20240037233A1 (en) Ransomware and malicious software protection in ssd/ufs by nvme instructions log analysis based on machine-learning
US10372347B2 (en) Selectively limiting throughput of test objects that share system resources with production objects
US20220179724A1 (en) Method for operating storage device and host device, and storage device
EP3992799A1 (en) Electronic device and automotive device
EP4148572B1 (en) Computational storage device and storage system including the computational storage device
US11914879B2 (en) Storage controller and storage system comprising the same
US20240086110A1 (en) Data storage method, storage apparatus and host
US20230214258A1 (en) Storage controller and storage device
KR20230070158A (ko) 디버깅을 위해 외부 장치의 데이터를 획득하는 스토리지 장치
CN116108442A (zh) 安全处理器及其操作方法和包括该安全处理器的存储装置
TW202324096A (zh) 儲存裝置
KR20230071023A (ko) 스토리지 장치 및 이의 동작 방법
CN116127479A (zh) 存储设备及其操作方法
CN114968855A (zh) 对持久性存储区域范围的一致访问
CN116301574A (zh) 储存装置、具有其的主机系统及其操作方法
EP2930607A1 (en) Method and apparatus for increasing available portable memory storage space

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant