KR101469596B1 - 스토리지 디바이스 펌웨어 및 제조 소프트웨어 - Google Patents

스토리지 디바이스 펌웨어 및 제조 소프트웨어 Download PDF

Info

Publication number
KR101469596B1
KR101469596B1 KR1020137029152A KR20137029152A KR101469596B1 KR 101469596 B1 KR101469596 B1 KR 101469596B1 KR 1020137029152 A KR1020137029152 A KR 1020137029152A KR 20137029152 A KR20137029152 A KR 20137029152A KR 101469596 B1 KR101469596 B1 KR 101469596B1
Authority
KR
South Korea
Prior art keywords
ssd
firmware
delete delete
storage
host
Prior art date
Application number
KR1020137029152A
Other languages
English (en)
Other versions
KR20130133074A (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 KR20130133074A publication Critical patent/KR20130133074A/ko
Application granted granted Critical
Publication of KR101469596B1 publication Critical patent/KR101469596B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/14Implementation of control logic, e.g. test mode decoders
    • G11C29/16Implementation of control logic, e.g. test mode decoders using microprogrammed units, e.g. state machines
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/18Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
    • G11C29/26Accessing multiple arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0407Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals on power on
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/06Acceleration testing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Memory System (AREA)
  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)

Abstract

스토리지 디바이스 펌웨어(FW) 및 제조 소프트웨어 기술들은 FW 이미지들로의 액세스 및 제조 소프트웨어 툴의 통신을 포함한다. 제조 소프트웨어 툴은 I/O 디바이스로의 FW 이미지들의 다운로딩 및 스토리지 능력을 제공하는 스토리지 디바이스인 I/O 디바이스의 제조 테스트의 제어를 가능하게 한다. 다운로딩된 FW 이미지들의 실행은 I/O 디바이스의 I/O 제어기가 하나 또는 그 초과의 선택된 타입들의 플래시 메모리 디바이스들과의 동작을 통해 스토리지 능력을 제공할 수 있게 한다. 선택된 타입들은 I/O 제어기가 FW 이미지들 중 적절한 이미지들의 실행에 의해 동작할 수 있는 복수의 플래시 메모리 타입들로부터 선택된다. 옵션으로, 제조 테스트는 I/O 디바이스의 스토리지 능력을 테스트하는 것을 포함한다. 기술들은 SSD 제조 셀프 테스트 능력을 더 포함한다.

Description

스토리지 디바이스 펌웨어 및 제조 소프트웨어{STORAGE DEVICE FIRMWARE AND MANUFACTURING SOFTWARE}
관련 출원들에 대한 상호 참조
본 출원에 대한 우선권 이익 주장은 (임의의 경우, 적절한 것으로서) 첨부하는 출원 데이터 시트(Data Sheet), 리퀘스트(Request) 또는 트랜스미탈(Transmittal)에서 이루어진다. 본 출원(instant application)의 타입에 의해 허용되는 범위로, 본 출원은 모든 목적들을 위해 하기 출원들을 인용에 의해 통합하며, 이들 모두는 발명이 구성된 시점에 본 출원으로 공동으로 소유되었다:
2012년 3월 30일 출원되고, 제 1 발명자 이름이 Karl David SCHUH이며, Solid-State Disk Manufacturing Self Test이란 명칭의 미국 가출원 (대리인 사건 번호 SF-11-21 및 일련 번호 13/436,639); 및
2011년 11월 14일 출원되고, 제 1 발명자 이름이 Thad OMURA이며, Virtual Drive Manufacturing Model이란 명칭의 미국 가출원 (대리인 사건 번호 SF-11-17 및 일련 번호 61/559,201).
분야: 비용, 수익성, 성능, 효율성 및 사용 활용성에서의 개선들을 제공하기 위해 플래시 메모리 스토리지 기술 및 제조에서의 진보들이 요구된다.
관련된 기술: 공개적으로 또는 잘 알려진 것으로 명시적으로 식별되지 않는 한, 맥락, 정의들 또는 비교 목적들에 대한 것을 비롯하여, 기술들 및 개념들에 대한 본원에서의 언급은, 그와 같은 기술들 및 개념들이 이전에 공개적으로 알려지거나 그렇지 않으면 종래 기술의 일부라는 것에 대한 승인으로서 해석되어서는 안 된다. 이로써, 특허들, 특허 출원들 및 공개공보들을 비롯하여 (만약 있다면) 본원에 인용된 모든 참조들은 구체적으로 통합되든지 아니든지 간에, 모든 목적들을 위해, 그 전체들이 인용에 의해 통합된다.
개요
본 발명은 수많은 방식들, 예를 들어, 프로세스, 제조 물건, 장치, 시스템, 물질의 조성 및 컴퓨터 판독가능한 스토리지 매체(예를 들어, 플래시 스토리지와 같은 비휘발성 스토리지를 갖는 집적 회로, 디스크와 같은 광학 및/또는 자기 대용량 스토리지 디바이스에서의 매체)와 같은 컴퓨터 판독가능한 매체, 또는 프로그램 명령들이 광학 또는 전자 통신 링크들을 통해 송신되는 컴퓨터 네트워크로서 구현될 수 있다. 상세한 설명은, 위에서 식별된 분야에서의 비용, 수익성, 성능, 효율성 및 이용 활용성에서의 개선들을 가능하게 하는 본 발명의 하나 또는 그 초과의 실시예들의 설명을 제공한다. 상세한 설명은 상세한 설명의 나머지 부분의 이해를 용이하게 하기 위한 도입부를 포함한다. 도입부는 본원에 설명된 개념들에 따른 시스템들, 방법들, 제조 물건들 및 컴퓨터 판독가능한 매체 중 하나 또는 그 초과의 것의 예시적인 실시예들을 포함한다. 결론들에서 더 상세하게 논의되는 바와 같이, 본 발명은 발행된 청구항들의 범위 내에서 모든 가능한 수정들 및 변형들을 포괄한다.
도 1a는 가상 드라이브 제조 모델(VDMM) 및 SSD 제조 셀프 테스트(MST)와 사용하기 위해 호환가능한 고체 상태 디스크(SSD) 제어기를 포함하는 SSD의 실시예의 선택된 상세사항들을 예시한다.
도 1b는 도 1a의 SSD의 하나 또는 그 초과의 인스턴스들을 포함하는 시스템들의 다양한 실시예들의 선택된 상세사항들을 예시한다.
도 2는 논리 블록 어드레스(LBA)의 논리 페이지 번호(LPN) 부분을 매핑하는 실시예의 선택된 상세사항들을 예시한다.
도 3은 양자들의(in quanta of) 판독 유닛들에서 측정된 길이를 집합적으로 갖는 다양한 판독 유닛들로서 구조화된(organized) 판독 데이터를 생성하기 위해 판독 유닛 어드레스에서 비휘발성 메모리(NVM)에 액세스하는 실시예의 선택된 상세를 예시한다.
도 4a는 판독 유닛의 실시예의 선택된 상세사항들을 예시한다.
도 4b는 판독 유닛의 다른 실시예의 선택된 상세사항들을 예시한다.
도 5는 다수의 필드들을 갖는 헤더의 실시예의 선택된 상세사항들을 예시한다.
도 6은 가상 드라이브 제조 모델의 실시예의 선택된 상세사항들의 흐름도를 예시한다.
도 7a는 가상 드라이브 제조 모델에 따른 SSD들의 (대량) 제조(또는 시제품(prototype) 구성)의 실시예의 선택된 상세사항들의 개념 표현을 예시한다.
도 7b는 가상 드라이브 제조 모델에 따른 SSD들의 (대량) 제조(또는 시제품 구성)를 위한 시스템의 실시예의 선택된 상세사항들을 예시한다.
도 7c는 가상 드라이브 제조 모델에 따른 SSD들의 펌웨어 업데이팅의 실시예의 선택된 상세사항들의 개념 표현을 예시한다.
도 7d는 가상 드라이브 제조 모델에 따른 SSD들의 펌웨어 업데이팅을 위한 시스템의 실시예의 선택된 상세사항들을 예시한다.
도 8은 제 1 레벨 맵(FLM) 및 하나 또는 그 초과의 제 2 레벨 맵(SLM) 페이지들을 갖는 2-레벨 맵을 통해 NVM에 저장된 논리 블록(LB)들에 LBA들을 매핑하는 실시예의 선택된 상세사항들을 예시한다.
도 9a는 SSD MST 흐름의 실시예의 선택된 상세사항들을 예시한다.
도 9b는 하나 또는 그 초과의 SSD들상에서 하나 또는 그 초과의 MST들을 수행하는 시스템의 실시예의 선택된 상세사항들을 예시한다.
도 10은 파라미터 쌍들 및 파라미터 식별자/값 쌍들의 연관된 번호들 뿐만 아니라 MST 커맨드들의 실시예의 선택된 상세사항들을 예시한다.
도 11은 MST들에서 사용가능한 다양한 커맨드들의 실시예의 선택된 상세사항들을 예시한다.
도 12는 MST의 일례의 선택된 상세사항들을 예시한다.
도 13a 내지 도 13d는 특정 사용 시나리오에서 드라이브 기록 커맨드(write drive command)의 구현의 실시예의 선택된 상세사항들을 예시한다.
도 14는 MST 결과 로그(results log)의 실시예의 선택된 상세사항들을 예시한다.
도면들에서 참조 부호들의 리스트
Figure 112013111548558-pct00034

Figure 112013111548558-pct00035

Figure 112013111548558-pct00036

Figure 112013111548558-pct00037
삭제
본 발명의 하나 또는 그 초과의 실시예들의 상세한 설명이 본 발명의 선택된 상세사항들을 예시하는 첨부한 도면들과 함께 아래에 제공된다. 본 발명은 실시예들과 관련하여 설명된다. 여기에서의 실시예들은 단지 예시적인 것으로 이해되고, 본 발명은 명백하게, 여기에서의 실시예들 중 임의의 실시예들 또는 이들 모두로 또는 이들에 의해 제한되지 않으며, 본 발명은 다수의 대안들, 변경, 및 등가물들을 포괄한다. 설명의 단조로움을 회피하기 위해, 다양한 단어 라벨(word label)들(예컨대, 제 1, 최종, 특정한, 다양한, 추가의, 다른, 특히, 선택, 일부, 및 주목할만한)이 실시예들의 개별 세트들에 적용될 수도 있고; 여기에서 사용되는 바와 같이, 이러한 라벨들은 명백하게 품질, 또는 임의의 형태의 우선순위 또는 편견을 전달하는 것으로 뜻하는 것이 아니라, 단지 개별 세트들 사이를 편리하게 구별하기 위한 것이다. 개시된 프로세스들의 일부 동작들의 순서는 본 발명의 범위내에서 변경가능하다. 다수의 실시예들이 프로세스, 시스템 및/또는 프로그램 명령 특징들에서 변동들을 설명하는 역할을 하는 경우에, 다른 실시예들은, 사전결정되거나 동적으로 결정된 기준에 따라 복수의 다수의 실시예들에 각각 대응하는 복수의 동작의 모드들 중 하나의 정적 및/또는 동적 선택을 수행한다는 것이 고려된다. 다수의 특정한 상세사항들은 본 발명의 완전한 이해를 제공하기 위해 아래의 설명에 설명된다. 상세사항들은 예시를 목적으로 제공되고 본 발명은 상세사항들 중 일부 또는 모두 없이 청구항들에 따라 실시될 수도 있다. 명확성을 목적으로, 본 발명에 관련된 기술 분야에 공지된 기술적 자료는 본 발명이 필요없이 모호해지지 않도록 상세히 설명하지 않는다.

도입부
이러한 도입부는 단지 상세한 설명의 더욱 빠른 이해를 용이하게 하기 위해 포함되고; 임의의 도입부의 단락들이 반드시 전체 주제에 대한 축약된 관점이고 철저한 또는 제한적인 설명인 것을 뜻하지 않기 때문에, 본 발명은 (만약 있다면, 명백한 예들을 포함하는) 도입부에 제공되는 개념들로 제한되지 않는다. 예를 들어, 다음의 도입부는 특정한 실시예들에 대해서만 공간 및 구조화에 의해 제한된 개요 정보를 제공한다. 청구항들이 명세서의 나머지 부분 전반에 걸쳐 궁극적으로 도시되고 논의되는 것들을 비롯하여, 다수의 다른 실시예들이 제공된다.
약어들
여기에 정의된 다양한 축약된 약어들(예를 들어, 두문자어들)의 적어도 일부가 여기에 사용된 특정한 엘리먼트들을 지칭한다.
Figure 112013111548558-pct00038
Figure 112013111548558-pct00039
SSD MST 능력은 SSD 제조자가 SSD에 대한 테스트들을 정의하고 준비할 수 있게 하고, SSD들의 생산 인스턴스들에 대해 테스트들을 구동할 수 있게 하고, 테스트들의 완료 이후에 구동의 결과들을 수집할 수 있게 한다. 제조자는 (테스트의 엘리먼트들이 SSD에 의해 어떻게 구현되는지와 같은) SSD의 내부 동작의 임의의 특정한 지식없이 테스트들을 생성하고, 타겟팅된 생산 및/또는 품질 보증 요건들에 따라 테스트들을 커스터마이징한다. 테스트들은 옵션으로, 제조자에 의해 정의되는 바와 같은, 테스트 파라미터들, 시퀀스들, 및 종료 기준(exit criteria) 중 하나 또는 그 초과의 것을 구체화한다. 테스트들은, (예를 들어, ATA SMART 프로토콜과 같은 스토리지 인터페이스 프로토콜에 의해 활성화됨에 따라) SSD에 의해 구현되는 옵션적인 사전정의된 그리고/또는 빌트-인(built-in) 테스트들에 부가된다.
테스트들의 정의 및 준비는 테스트 스크립을 생성하고 생산 SSD들상에 스크립을 로딩하는 것을 포함한다. 구동은 생산 SSD들을 파워 업(power up)하는 것을 포함하고, 생산 SSD들은 로딩된 스크립을 셀프(self) 실행한다. 파워 업 및 셀프 실행은 예를 들어, 스크립을 로딩한 호스트에 커플링되는 동안, SSD에 스크립을 로딩할 수 없지만 SSD에 전력을 제공하도록 인에이블된 랙(rack)에 커플링되는 동안, 또는 전력을 제공하도록 인에이블된 일부 다른 컴포넌트에 커플링되는 동안 이루어진다. 옵션으로 랙은 생산을 위해 비교적 더 많은 수들의 SSD들에 대해 비용 효율적인 병렬 테스팅을 가능하게 하여 비용 절감된다. 결과 수집은 셀프 실행의 결과들(예를 들어, 이벤트 로그 및 불량 블록(bad block) 정보)를 판독하는 것 및 소비자 사용을 위해 생산 SSD들을 준비하는 것을 포함한다. 준비는 생산 SSD들을 안전하게 소거하는 것, 결과들 중 일부(예를 들어, 이벤트 로그)를 클리어하는 것, 및 결과들 중 일부(예를 들어 불량 블록 정보)를 그대로 두는 것을 포함한다.
SSD는 (예를 들어, SSD의 '입력' SMART 로그를 기록하는 호스트를 통해) 테스트들을 수신하고, (예를 들어, 입력된 SMART 로그로부터의 커맨드들을 판독하는 펌웨어를 통해) 테스트들의 커맨드들을 실행하며, (예를 들어, SSD의 '출력' SMART 로그에 기록하는 펌웨어를 통해) 결과들을 제공하도록 인에이블된다. SSD는 하드웨어, 소프트웨어, 및 펌웨어 중 임의의 하나 또는 그 초과의 것을 통해 수신, 실행, 및 제공을 수행하도록 인에이블된다. 커맨드들은 드라이브 기록, 드라이브 소거, SATA PHY 번-인(burn-in), 지연, 및 스트레스 모드를 포함한다. 커맨드들(때때로, '프리미티브(primitive)'들로 칭함) 중 임의의 하나 또는 그 초과의 것은 예를 들어, 커맨드의 동작을 특정하기 위해 제로 또는 그 초과의 파라미터들을 갖는다.
일부 실시예들 및/또는 사용 시나리오들에서, SSD MST 능력은 SSD 가상 제조 모델과 함께 사용된다. 일부 경우들에서, SSD MST 능력은 (예를 들어, 가상 드라이브 제조 모델을 사용하는 시스템 벤더(vendor)의 맥락에서) SSD들을 제조하는 시스템 벤더에 의해 사용된다.
가상 드라이브 제조 모델은 시스템 벤더가 스토리지 디바이스들의 제조를 위해 메모리 디바이스들과 같은 선택된 구성요소들(materials)을 직접 구입할 수 있게 한다. 직접 구입은 시스템 벤더가 스토리지 디바이스 벤더로부터 (선택된 구성요소들을 사용하여) 스토리지 디바이스들을 구입하는 기술들에 비해, 선택된 구성요소들에 대한 마진 마크-업(mark-up)(예를 들어, 마진 스택킹(stacking))을 제거한다. 메모리 디바이스들에 부가하여, 다른 예시적인 선택된 구성요소들은 전원들, 온도 센서들, 케이싱들, 인쇄 회로 기판들, 및 패시브 컴포넌트들을 포함한다. 특정한 예에 대해, 선택된 구성요소들은 NVM, 예를 들어, 플래시 메모리 디바이스들과 같은 메모리 디바이스들이고, 스토리지 디바이스들은 SSD들이다. 설계 벤더는 레퍼런스 설계에 따라, SSD 제어기 및 연관된 펌웨어, SSD 제어기와 레퍼런스 설계에서의 사용을 위해 권장된 및/또는 지원된 플래시 메모리 디바이스들의 리스트, 및 옵션으로, SSD 제어기를 사용하여 구축된 스토리지 디바이스들의 대량 생산(volume production)을 가능하게 하는 제조 소프트웨어를 구현한다. 설계 벤더는 옵션으로 및/또는 선택적으로, 시스템 벤더가 SSD 제어기, 펌웨어, 리스트로부터의 플래시 메모리 디바이스, 및 다른 구성요소들을 사용하여 레퍼런스 설계에 따라 SSD들의 대량 생산을 직접적으로(또는 간접적으로) 수행할 수 있게 하기 위해, 시스템 벤더에게 마케팅 콜래트럴(marketing collateral), 엔지니어링 정보, 엔지니어링 샘플들, 제조 소프트웨어, 및/또는 테스트/자격 서비스들을 제공한다.
다양한 실시예들 및/또는 사용 시나리오들에서, 설계 벤더에 의해 구현된 SSD 제어기 및/또는 펌웨어는 복수의 플래시 메모리 벤더들로부터의 플래시 메모리 디바이스들과 동작하도록 인에이블된다. 복수의 플래시 메모리 벤더들로부터의 플래시 메모리 디바이스들과의 동작은, 예를 들어 사용된 플래시 메모리 디바이스에 따른 인터페이스 프로토콜들, 판독, 기록, 및/또는 소거 기술들, 파라미터들, 및/또는 특징들의 다양한(varying) 동작을 통해 인에이블된다. 복수의 플래시 메모리 벤더들로부터의 플래시 메모리 디바이스들과의 동작은 다른 예를 들어, 다양한 에러 복구 코드들에 따라 플래시 메모리 디바이스들을 관리하는 관리 알고리즘들을 통해 추가로 인에이블된다.
다양한 실시예들 및/또는 사용 시나리오들에서, 설계 벤더에 의해 구현된 SSD 제어기 및/또는 펌웨어는 다양한 사이즈의 양자들의 호스트 LB들과 동작하도록 인에이블되어, SSD 제품들이 예를 들어, 기업 및/또는 클라우드 사용 시나리오들에 대해 다양한 LB 사이즈들로 동작가능하게 인에이블될 뿐만 아니라 SSD 제품들이 예를 들어, 산업 및/또는 클라이언트 사용 시나리오들에 대해 단일 LB 사이즈로 동작가능하게 인에이블된다. 다양한 실시예들 및/또는 사용 시나리오들에서, 설계 벤더에 의해 구현된 SSD 제어기 및/또는 펌웨어는 예를 들어, 기업, 클라우드, 산업, 및/또는 클라이언트 사용 시나리오들에 대해 가변 용량들의 SSD들을 구현하도록 인에이블된다.
일부 실시예들에서, SSD와 같은 I/O 디바이스들은 SSD 제어기를 포함한다. SSD 제어기는 SSD의 호스트 인터페이스와 NVM 사이의 브리지로서 작용하고, SSD의 호스트 인터페이스를 통해 컴퓨팅 호스트로부터 전송된 호스트 프로토콜의 커맨드들을 실행한다. 커맨드들 중 적어도 일부는 SSD에게 컴퓨팅 호스트로부터 그리고 컴퓨팅 호스트로 각각 전송된 데이터로 NVM을 기록 및 판독하도록 지시한다. 다른 실시예들에서, SSD 제어기는 호스트 프로토콜의 LBA들과 NVM에서의 물리적 스토리지 어드레스들 사이를 변환(translate)하는데 맵을 사용하도록 인에이블된다. 추가의 실시예들에서, 맵의 적어도 일부는 I/O 디바이스의 사설 스토리지(컴퓨팅 호스트에는 보이지 않음)을 위해 사용된다. 예를 들어, 컴퓨팅 호스트에 의해 액세스불가능한 LBA들의 일부가 로그들, 통계들, 또는 다른 사설 데이터에 대한 액세스를 관리하기 위해 I/O 디바이스에 의해 사용된다.
다양한 실시예들에 따르면, 맵은 1-레벨 맵; 2-레벨 맵; 멀티-레벨 맵; 직접 맵; 연관 맵; 및 호스트 프로토콜의 LBA들을 NVM에서의 물리적 스토리지 어드레스들과 연관시키는 임의의 다른 수단 중 하나 또는 그 초과의 것이다. 예를 들어, 일부 실시예들에서, 2-레벨 맵은 복수의 제 2 레벨 맵 페이지들 중 하나의 NVM에서의 각각의 어드레스와 LBA의 제 1 함수를 연관시키는 제 1 레벨 맵을 포함하고, 제 2 레벨 맵 페이지들 각각은 LBA에 대응하는 데이터의 NVM에서의 각각의 어드레스와 LBA의 제 2 함수를 연관시킨다. 추가의 실시예들에서, LBA의 제 1 함수 및 LBA의 제 2 함수의 예로는, 제 2 레벨 맵 페이지들 각각에 포함된 고정된 수의 엔트리들로 나눌 때 획득된 몫과 나머지이다. 복수의 제 2 레벨 맵 페이지들을 총체적으로 제 2 레벨 맵으로 칭한다. 여기서, 맵의 하나 또는 그 초과의 엔트리들에 대한 참조들은 1-레벨 맵, 2-레벨 맵의 제 1 레벨, 2-레벨 맵의 제 2 레벨, 멀티-레벨 맵의 임의의 레벨, 또는 엔트리들을 갖는 임의의 다른 타입의 맵을 포함하는 임의의 타입의 맵의 하나 또는 그 초과의 엔트리들을 지칭한다.
다양한 실시예들에 따르면, 제 2 레벨 맵(또는 멀티-레벨 맵의 하위 레벨)의 맵 페이지들 각각은, 맵 페이지들 중 다른 맵 페이지들과 동일한 수의 엔트리들; 맵 페이지들의 적어도 일부 다른 맵 페이지들과 상이한 수의 엔트리들; 맵 페이지들 중 다른 맵 페이지들과 동일한 입도(granularity)의 엔트리들; 맵 페이지들 중 다른 맵 페이지들과 상이한 입도의 엔트리들; 모두 동일한 입도의 엔트리들;, 다수의 입도들인 엔트리들; 맵 페이지의 콘텐츠들의 포맷 및/또는 레이아웃을 특정하는 각각의 헤더, 중 하나 또는 그 초과의 것을 포함하며, 그리고 맵 페이지의 엔트리들을 표현하기 위해 임의의 다른 포맷, 레이아웃, 또는 구조(organization)를 갖는다. 예를 들어, 제 1의 제 2 레벨 맵 페이지는 엔트리 당 4KB의 입도의 사양을 갖고, 제 2의 제 2 레벨 맵 페이지는 엔트리 당 8KB의 입도의 사양을 갖고 제 1의 제 2 레벨 맵 페이지의 1/2만큼만 많은 엔트리들을 갖는다.
추가의 실시예들에서, 상위(higher) 레벨 맵의 엔트리들은 대응하는 하위(lower) 레벨 맵 페이지들의 포맷 및/또는 레이아웃 정보를 포함한다. 예를 들어, 제 1 레벨 맵에서 엔트리들 각각은 연관된 제 2 레벨 맵 페이지에서의 엔트리들에 대한 입도 사양을 포함한다.
일부 실시예들에서, 맵은 복수의 엔트리들을 포함하고, 엔트리들 각각은 하나 또는 그 초과의 LBA들을 LBA들의 데이터가 저장되는 NVM에서의 각각의 위치를 선택적으로 포함하는 정보와 연관된다. 예를 들어, LBA들은 512B 섹터들을 특정하고, 맵에서의 각 엔트리는 LBA들의 정렬된 8-섹터(4KB) 영역과 연관된다.
다양한 실시예들에 따르면, 맵의 엔트리들의 정보는, NVM에서의 위치; NVM에서의 판독 유닛의 어드레스; NVM에 저장된 연관 LBA들의 데이터를 획득하기 위해 판독할 판독 유닛들의 수; NVM에 저장된 연관 LBA들의 데이터의 사이즈 ―상기 사이즈는, 옵션으로 및/또는 선택적으로 1 바이트 보다 더 큰 입도를 가짐―; 예를 들어, 트리밍된 연관 LBA들의 데이터로 인해 연관 LBS들의 데이터가 NVM에 존재하지 않는다는 표시; 연관 LBA들의 데이터의 특성; 및 연관 LBA들의 데이터의 임의의 다른 메타-데이터, 특성, 또는 본질 중 하나 또는 그 초과의 것을 포함한다.
일부 실시예들에서, NVM에서의 어드레스들은 어드레스들 중 하나를 표현하는데 요구되는 비트들을 수를 감소시키기 위해 영역들로 그룹화된다. 예를 들어, I/O 디바이스의 LBA들이 64개 영역들로 분할되고, NVM이 LBA 영역들 각각에 대해 하나씩 64개 영역들로 분할되면, 특정한 LBA와 연관된 맵 엔트리는 NVM에서의 영역들 중 하나가 특정한 LBA의 영역에 의해 결정될 수 있기 때문에 6개 적은 어드레스 비트들을 요구한다. 다양한 실시예들에 따르면, LBA들의 영역들과 NVM의 영역들 사이의 연관은, 균등성(equality); 1 대 1 수치 함수(numeric function)와 같은 직접 연관; 테이블 검색; 동적 매핑; 및 2개의 세트들의 수들을 연관시키는 임의의 다른 방법 중 하나 또는 그 초과의 것에 의해 이루어진다.
다양한 실시예들에서, NVM에서의 위치는 복수의 판독 유닛들 중 하나의 어드레스, 및 판독 유닛들에서의 길이 및/또는 스팬(span)을 포함한다. 길이는 NVM에 저장된 복수의 데이터 아이템들 중 특정한 데이터 아이템의 사이즈이고, 특정한 데이터 아이템이 길이를 포함하는 맵의 엔트리와 연관된다. 다양한 실시예들에 따르면, 길이는, 1 바이트; 1 보다 큰 바이트; 1 판독 유닛; 판독 유닛의 특정한 프랙션(fraction); 데이터 아이템들 중 하나의 최대 허용된 압축률에 따른 입도; 및 스토리지 사용을 트랙킹하기 위해 사용된 임의의 다른 입도 중 하나 또는 그 초과의 입도를 갖는다. 스팬은 특정한 데이터 아이템의 각각의 부분을 저장하는, 판독 유닛들의 수, 예컨대 정수의 판독 유닛들이다. 추가의 실시예들 및/또는 사용 시나리오들에서, 판독 유닛들의 스팬에서의 제 1 판독 유닛 및/또는 판독 유닛들의 스팬에서의 최종 판독 유닛들은 옵션으로 및/또는 선택적으로, 데이터 아이템들 중 다수의 데이터 아이템들 모두 또는 일부를 저장한다. 일부 실시예들 및/또는 사용 시나리오들에서, 길이 및/또는 스팬은, 예컨대 스팬으로부터의 오프셋으로서(때때로, 인코딩되는 스팬 및/또는 길이의 맥락에서 사이즈로 칭하는) 길이를 저장함으로써, 저장되고 인코딩된다. 일부 실시예들 및/또는 사용 시나리오들에서, 길이 및/또는 스팬의 미사용 인코딩들은 추가 정보, 예컨대 연관된 데이터 아이템이 NVM에 존재하는지에 관한 표시를 인코딩한다.
어드레스 및 길이로서 NVM에서의 위치의 인코딩은 NVM에 저장된 데이터의 사이즈의 변화를 가능하게 한다. 예를 들어, 제 1 4KB 영역이 400B 사이즈로 압축되고, 단일 판독 유닛에 전체적으로 저장되고(예를 들어, 1 판독 유닛의 스팬을 갖고), 1 판독 유닛의 길이를 갖는 반면에, 제 2 4KB 영역은 압축불가이고, 1 보다 큰 판독 유닛내에 전체적으로 저장되고(예를 들어, 1 보다 큰 판독 유닛의 스팬을 갖고), 1 보다 큰 판독 유닛의 길이를 갖는다. 다른 예를 들어, 제 3 2KB 영역이 1KB 사이즈로 압축되고, 2 판독 유닛들을 스팬하여 저장되고(예를 들어, 2 판독 유닛들의 스팬을 갖고), 1 판독 유닛의 길이를 갖는 반면에, 제 4 1KB 영역은 압축불가이지만, 1 판독 유닛내에 저장되고(예를 들어, 1 판독 유닛의 스팬을 갖고), 1 판독 유닛의 길이를 갖는다. 추가 실시예들에서, LBA들의 영역과 연관된 스토리지의 판독 유닛들에서 길이 및/또는 스팬을 갖는 것은, LBA들의 영역의 데이터를 검색하기 위해 NVM의 요구된 부분만을 판독하는 것을 가능하게 한다.
일부 실시예들에서, 맵의 엔트리들 각각은 엔트리와 연관된 LBA들의 영역의 특성들을 특정하는, 때때로 메타-데이터로 칭하는 정보를 포함한다. 추가의 실시예들에서, 메타-데이터의 적어도 일부는 예를 들어, 영역의 복수의 LBA들 각각에 대해 별개의 메타-데이터 사양들을 가짐으로써, 영역의 입도 보다 더 미세한 입도로 이루어진다.
일부 실시예들에서, NVM에서의 가변 사이즈 양자들의 압축된 데이터에 액세스하는 것은 일부 사용 시나리오들에서 개선된 스토리지 효율을 제공한다. 예를 들어, SSD 제어기는 (예를 들어, 디스크 기록 커맨드에 관하여) 컴퓨팅 호스트로부터 (압축해제된) 데이터를 수신하고, 데이터를 압축하며, 압축된 데이터를 플래시 메모리에 저장한다. (예를 들어, 디스크 판독 커맨드에 관한) 컴퓨팅 호스트로부터의 후속 요청에 응답하여, SSD 제어기는 플래시 메모리로부터의 압축된 데이터를 판독하고, 압축된 데이터를 압축해제하여, 압축해제된 데이터를 컴퓨팅 호스트에 제공한다. 압축된 데이터는 가변 사이즈 양자들에 따라 플래시 메모리에 저장되고, 양자들 사이즈는 예를 들어, 압축 알고리즘, 동작 모드, 및 다양한 데이터에 대한 압축 효율성으로 인해 변한다. SSD 제어기는 헤더(들)가 플래시 메모리에서 어디에 저장되는지를 결정하기 위해 포함된 맵 테이블을 컨설팅함으로써 부분적으로 데이터를 압축해제한다. SSD 제어기는 적절한 (압축된) 데이터가 플래시 메모리에서 어디에 저장되는지를 결정하기 위해 플래시 메모리로부터 획득된 헤더(들)를 분석한다. SSD 제어기는 압축해제된 데이터를 생성하여 컴퓨팅 호스트에 제공하기 위해 플래시 메모리로부터의 적절한 데이터를 압축해제한다. 본 출원에서, 압축해제(uncompress)(및 그것의 변형들)는 비압축(decompress)(및 그것의 변형들)과 동의어이다.
다양한 실시예들에서, SSD 제어기는 컴퓨팅 호스트와 인터페이싱하기 위한 호스트 인터페이스, 플래시 메모리와 같은 NVM과 인터페이싱하기 위한 인터페이스, 및 인터페이스들을 제어하고 압축 및 압축해제뿐 아니라, 하위-레벨 리던던시 및/또는 에러 정정, 상위-레벨 리던던시 및/또는 에러 정정 및 독립적 실리콘 엘리먼트들을 통한 동적 상위-레벨 리던던시 모드 관리를 수행하기 위한 (그리고/또는 수행의 다양한 양상들을 제어하기 위한) 회로를 포함한다.
다양한 실시예들에 따르면, 일부 호스트 인터페이스들은 USB 인터페이스 표준, CF 인터페이스 표준, MMC 인터페이스 표준, eMMC 인터페이스 표준, 썬더볼트(Thunderbolt) 인터페이스 표준, UFS 인터페이스 표준, SD 인터페이스 표준, 메모리 스틱 인터페이스 표준, xD-화상 카드 인터페이스 표준, IDE 인터페이스 표준, SATA 인터페이스 표준, SCSI 인터페이스 표준, SAS 인터페이스 표준 및 PCIe 인터페이스 표준 중 하나 또는 그 초과의 것과 호환가능하다. 다양한 실시예들에 따르면, 컴퓨팅 호스트는 컴퓨터, 워크스테이션 컴퓨터, 서버 컴퓨터, 스토리지 서버, SAN, NAS 디바이스, DAS 디바이스, 스토리지 어플라이언스(storage appliance), PC, 랩톱 컴퓨터, 노트북 컴퓨터, 넷북 컴퓨터, 태블릿 디바이스 또는 컴퓨터, 울트라북 컴퓨터, (e-리더와 같은) 전자 판독 디바이스, PDA, 네비게이션 시스템, (핸드헬드) GPS 디바이스, 오토모티브 제어 시스템, 오토모티브 매체 제어 시스템 또는 컴퓨터, 프린터, 복사기 또는 팩스 머신 또는 일체형 디바이스, POS 디바이스, 캐시-레지스터, 매체 플레이어, 텔레비전, 매체 리코더, DVR, 디지털 카메라, 셀룰러 핸드셋, 코드리스 전화 핸드셋 및 전자 게임의 전부 또는 임의의 부분들이다. 일부 실시예들에서, (SAS/SATA 브리지와 같은) 인터페이싱 호스트는 컴퓨팅 호스트 및/또는 컴퓨팅 호스트에 대한 브리지로서 동작한다.
다양한 실시예들에서, SSD 제어기는 하나 또는 그 초과의 프로세서들을 포함한다. 프로세서들은 SSD 제어기의 동작을 제어 및/또는 수행하도록 펌웨어를 실행한다. SSD 제어기는 커맨드들 및/또는 상태뿐 아니라 데이터를 송신하고 수신하기 위해 컴퓨팅 호스트와 통신한다. 컴퓨팅 호스트는 운영 시스템, 드라이버 및 애플리케이션 중 하나 또는 그 초과의 것을 실행한다. 컴퓨팅 호스트에 의한 SSD 제어기와의 통신은 옵션으로 그리고/또는 선택적으로 드라이버 및/또는 애플리케이션을 통해 이루어진다. 제 1 예에서, SSD 제어기에 대한 모든 통신은 드라이버를 통해 이루어지며, 애플리케이션은 드라이버가 SSD 제어기에 대한 특정 커맨드들로 변환하는 상위-레벨 커맨드들을 드라이버에 제공한다. 제 2 예에서, 드라이버는 바이패스 모드를 구현하며 애플리케이션은 드라이버를 통해 SSD 제어기에 특정 커맨드들을 송신하는 것이 가능하다. 제 3 예에서, PCIe SSD 제어기는 하나 또는 그 초과의 가상 함수들(VF들)을 지원하며, 일단 구성되면, 애플리케이션은 드라이버를 바이패싱하여, SSD 제어기와 직접 통신할 수 있게 된다.
다양한 실시예들에 따르면, 일부 SSD들은 HDD들, CD 드라이브들 및 DVD 드라이브들과 같은 자기 및/또는 광학 비휘발성 스토리지에 의해 이용되는 폼-팩터들, 전기적 인터페이스들 및/또는 프로토콜들과 호환가능하다. 다양한 실시예들에서, SSD들은 제로 또는 그 초과의 패리티 코드들, 제로 또는 그 초과의 RS 코드들, 제로 또는 그 초과의 BCH 코드들, 제로 또는 그 초과의 비터비(Viterbi) 또는 다른 트렐리스(trellis) 코드들 및 제로 또는 그 초과의 LDPC 코드들의 다양한 조합들을 이용한다.
예시적인 실시예들
상세한 설명에 대한 도입부를 끝내며, 후속하는 것은 본원에 설명된 개념들에 따른 다양한 실시예 타입들의 추가적인 설명을 제공하면서 "EC들"(예시적인 조합들)로서 명시적으로 열거된 적어도 일부를 포함하는 예시적인 실시예들의 집합이다; 이들 예들은 상호 배타적이거나, 완벽한 것(exhaustive)이거나 제한적인 것을 뜻하지 않는다; 그리고 본 발명은 이들 예시적인 실시예들로 제한되는 것이 아니라, 오히려 발행된 청구항들의 범위 내의 모든 가능한 수정들 및 변형들 그리고 이들의 등가물들을 포괄한다.
EC1) 시스템으로서,
암호화된 펌웨어(FW) 저장소(repository)로부터의 하나 또는 그 초과의 이미지들로서 FW의 암호해독을 가능하게 하기 위해 암호 키를 제공하기 위한 수단 ―이미지들은 I/O 디바이스 레퍼런스 설계에 따라 구성된 I/O 디바이스에 포함된 I/O 디바이스 제어기와 호환가능함―; 및
암호화된 FW 저장소에 액세스를 제공하기 위한 수단을 포함하고,
I/O 디바이스는 컴포넌트들의 리스트로부터 선택된 컴포넌트들을 포함하고, 리스트에는 FW, I/O 디바이스 제어기, 및 I/O 디바이스 레퍼런스 설계와 호환가능한 컴포넌트들이 있는, 시스템.
EC2) EC1의 시스템에 있어서, 암호 키를 제공하기 위한 수단은 이미지들로서 FW를 암호해독하기 위해 암호 키를 비즈니스에 이용가능하게 하기 위한 수단을 포함하고, 액세스를 제공하기 위한 수단은 암호화된 FW 저장소를 비즈니스에 이용가능하게 하기 위한 수단을 포함하는, 시스템.
EC3) 시스템으로서,
암호화된 펌웨어(FW) 저장소로부터의 하나 또는 그 초과의 이미지들로서, FW의 암호해독을, 암호 키를 통해, 가능하게 하기 위해 암호화된 FW 저장소에 액세스를 제공하기 위한 수단 ―이미지들은 I/O 디바이스 레퍼런스 설계에 따라 구성된 I/O 디바이스에 포함된 I/O 디바이스 제어기와 호환가능함―; 및
FW, I/O 디바이스 제어기, 및 I/O 디바이스 레퍼런스 설계와 호환가능한 컴포넌트들의 리스트를 제공하기 위한 수단을 포함하고,
I/O 디바이스는 리스트로부터 선택된 컴포넌트들을 포함하는, 시스템.
EC4) EC3의 시스템으로서, 액세스를 제공하기 위한 수단은 비즈니스가 암호해독을 수행할 수 있게 하는, 시스템.
EC5) 시스템으로서,
I/O 디바이스 레퍼런스 설계를 에이전트에 제공하기 위한 수단;
컴포넌트들의 리스트에 대한 액세스를 에이전트에 제공하기 위한 수단; 및
암호화된 펌웨어(FW) 저장소에 대한 액세스,
암호화된 FW 저장소로부터의 하나 또는 그 초과의 이미지들로서 FW의 암호해독을 가능하게 하는 암호 키,
I/O 디바이스 제어기 ―이미지들은 I/O 디바이스 제어기 및 I/O 디바이스 레퍼런스 설계와 호환가능함―; 및
이미지들 중 하나를 I/O 디바이스의 시제품화(prototyping) 및/또는 제조 인스턴스에 다운로딩하도록 인에이블된 제조 소프트웨어 툴
중 임의의 하나 또는 그 초과의 것을 에이전트에 제공하기 위한 수단을 포함하고,
리스트의 멤버들 각각은 이미지들, I/O 디바이스 제어기, 및 I/O 디바이스 레퍼런스 설계와 호환가능하고,
제공하기 위한 3개의 수단의 결과들은 적어도 부분적으로, 에이전트가 리스트로부터 선택된 컴포넌트들에 따라 I/O 디바이스를 제조할 수 있게 하는, 시스템.
EC6) EC5의 시스템에 있어서, 에이전트는 비즈니스를 포함하는, 시스템.
EC7) 시스템으로서,
I/O 디바이스 제어기와 호환가능한 펌웨어(FW)를 I/O 디바이스 레퍼런스 설계에 따라 구성되고 I/O 디바이스 제어기를 포함하는 I/O 디바이스에 다운로딩하기 위한 수단; 및
FW를 개인화(personalizing)하기 위한 수단을 포함하고,
I/O 디바이스는 컴포넌트들의 리스트로부터 선택된 컴포넌트들을 포함하고, 리스트에는, FW, I/O 디바이스 제어기, 및 I/O 디바이스 레퍼런스 설계와 호환가능한 컴포넌트들이 있으며,
FW는 암호 키를 사용하여 암호화된 FW 저장소로부터 암호해독된 하나 또는 그 초과의 이미지들 중 하나인, 시스템.
EC8) 시스템으로서,
암호 키를 수신하기 위한 수단; 및
수신된 암호 키를 통해 적어도 부분적으로, 암호화된 펌웨어(FW) 저장소로부터의 하나 또는 그 초과의 이미지들로서 FW를 암호해독하기 위한 수단 ―이미지들은 I/O 디바이스 레퍼런스 설계에 따라 구성되고 I/O 디바이스 제어기를 포함하는 I/O 디바이스와 호환가능함―을 포함하고,
I/O 디바이스는 컴포넌트들의 리스트로부터 선택된 컴포넌트들을 포함하고, 리스트에는 FW, I/O 디바이스 제어기, 및 I/O 디바이스 레퍼런스 설계와 호환가능한 컴포넌트들이 있는, 시스템.
EC9) EC1, EC3, EC5, EC7, 또는 EC8의 시스템에 있어서, I/O 디바이스 레퍼런스 설계, I/O 디바이스 제어기, 리스트, 암호화된 FW 저장소, 및 암호 키를 이용가능하게 하기 위한 동일한 비즈니스 엔티티에 대한 수단을 더 포함하는, 시스템.
EC10) EC1, EC3, EC5, EC7, 또는 EC8의 시스템에 있어서, I/O 디바이스 레퍼런스 설계, I/O 디바이스 제어기, 리스트, 암호화된 FW 저장소, 및 암호 키 중 임의의 하나 또는 그 초과의 것을 이용가능하게 하기 위한 동일한 비즈니스 엔티티에 대한 수단을 더 포함하는, 시스템.
EC11) EC9 또는 EC10의 시스템에 있어서, 이용가능하게 하기 위한 수단의 임의의 또는 모든 부분들은,
이메일,
하나 또는 그 초과의 확장가능 마크업 언어(XML)-주석이 달린 사양들 및/또는 XML-기반 폼들,
하나 또는 그 초과의 서버 대 서버 트랜잭션들(transactions),
인터넷을 사용한 비즈니스 대 비즈니스 자동화 시스템들,
다층(multi-tiered) 인터넷 상거래 기반 서버의 임의의 하나 또는 그 초과의 층(tier)들,
하나 또는 그 초과의 웹, 데이터베이스, 및/또는 애플리케이션 서버들, 및
하나 또는 그 초과의 웹, 데이터베이스, 및/또는 애플리케이션 스크립들, 프로그램들, 및/또는 애플리케이션들
중 임의의 하나 또는 그 초과의 것을 통해 적어도 부분적으로 구현되는, 시스템.
EC12) EC1, EC3, EC5, EC7, 또는 EC8의 시스템에 있어서, 선택된 컴포넌트들은 복수의 비휘발성 메모리 디바이스 제조자들로부터의 비휘발성 메모리 디바이스들을 포함하는, 시스템.
EC13) EC12의 시스템에 있어서, I/O 디바이스는 고체 상태 디스크(SSD)를 포함하고, I/O 디바이스 제어기는 SSD 제어기를 포함하고, I/O 디바이스 레퍼런스 설계는 SSD 레퍼런스 설계를 포함하고, 비휘발성 메모리 디바이스들은 고체 상태 메모리 디바이스들을 포함하며, 비휘발성 메모리 디바이스 제조자들은 고체 상태 메모리 디바이스 제조자들을 포함하는, 시스템.
EC14) 방법으로서,
암호화된 펌웨어(FW) 저장소로부터의 하나 또는 그 초과의 이미지들로서 FW의 암호해독을 가능하게 하기 위해 암호 키를 제공하는 단계 ―이미지들은 I/O 디바이스 레퍼런스 설계에 따라 구성된 I/O 디바이스에 포함된 I/O 디바이스 제어기와 호환가능함―를 포함하고,
I/O 디바이스는 컴포넌트들의 리스트로부터 선택된 컴포넌트들을 포함하고, 리스트에는 FW, I/O 디바이스 제어기, 및 I/O 디바이스 레퍼런스 설계와 호환가능한 컴포넌트들이 있는, 방법.
EC15) EC14의 방법에 있어서, 암호 키를 제공하는 단계는 비즈니스가 이미지들로서 FW를 암호해독할 수 있게 하기 위해 암호 키를 비즈니스에 이용가능하게 하는 단계를 포함하는, 방법.
EC16) 방법으로서,
암호화된 펌웨어(FW) 저장소로부터의 하나 또는 그 초과의 이미지들로서 FW의 암호해독을 암호 키를 통해 가능하게 하기 위해 암호화된 FW 저장소에 액세스를 제공하는 단계 ―이미지들은 I/O 디바이스 레퍼런스 설계에 따라 구성된 I/O 디바이스에 포함된 I/O 디바이스 제어기와 호환가능함―를 포함하고,
I/O 디바이스는 컴포넌트들의 리스트로부터 선택된 컴포넌트들을 포함하고, 리스트에는 FW, I/O 디바이스 제어기, 및 I/O 디바이스 레퍼런스 설계와 호환가능한 컴포넌트들이 있는, 방법.
EC17) EC16의 방법에 있어서, 암호화된 FW에 액세스를 제공하는 단계는 비즈니스가 암호 키를 통해 이미지들로서 FW를 암호해독할 수 있게 하기 위해 암호화된 FW를 비즈니스에 이용가능하게 하는 단계를 포함하는, 방법.
EC18) 방법으로서,
엘리먼트들을 에이전트에 제공하는 단계를 포함하며, 상기 엘리먼트들은,
암호화된 펌웨어(FW) 저장소에 대한 액세스,
암호화된 FW 저장소로부터의 하나 또는 그 초과의 이미지들로서 FW의 암호해독을 가능하게 하는 암호 키,
I/O 디바이스 레퍼런스 설계,
I/O 디바이스 제어기 ―이미지들은 I/O 디바이스 제어기 및 I/O 디바이스 레퍼런스 설계와 호환가능함―,
이미지들, I/O 디바이스 제어기, 및 I/O 디바이스 레퍼런스 설계와 호환가능한 컴포넌트들의 리스트에 대한 액세스, 및
이미지들 중 하나를 I/O 디바이스의 시제품화 및/또는 제조 인스턴스에 다운로딩하도록 인에이블된 제조 소프트웨어 툴
중 임의의 하나 또는 그 초과의 것을 포함하며,
제공된 엘리먼트들은 에이전트가 리스트로부터 선택된 컴포넌트들에 따라 I/O 디바이스를 제조할 수 있게 하는, 방법.
EC19) EC18의 방법에 있어서, 에이전트는 비즈니스를 포함하는, 방법.
EC20) 방법으로서,
I/O 디바이스 제어기와 호환가능한 펌웨어(FW)를, I/O 디바이스 레퍼런스 설계에 따라 구성되고 I/O 디바이스 제어기를 포함하는 I/O 디바이스에 다운로딩하는 단계를 포함하고,
I/O 디바이스는 컴포넌트들의 리스트로부터 선택된 컴포넌트들을 포함하고, 리스트는 FW, I/O 디바이스 제어기, 및 I/O 디바이스 레퍼런스 설계와 호환가능한 컴포넌트들이 있으며,
FW는 암호 키를 사용하여 암호화된 FW 저장소로부터 암호해독된 하나 또는 그 초과의 이미지들 중 하나인, 방법.
EC21) 방법으로서,
적어도 부분적으로 암호 키를 사용하여 암호화된 펌웨어(FW) 저장소로부터의 하나 또는 그 초과의 이미지들로서 FW를 암호해독하는 단계 ―이미지들은 I/O 디바이스 레퍼런스 설계에 따라 구성되고 I/O 디바이스 제어기를 포함하는 I/O 디바이스와 호환가능함―를 포함하며,
I/O 디바이스는 컴포넌트들의 리스트로부터 선택된 컴포넌트들을 포함하고, 리스트에는 FW, I/O 디바이스 제어기, 및 I/O 디바이스 레퍼런스 설계와 호환가능한 컴포넌트들이 있는, 방법.
EC22) EC14, EC16, EC18, EC20, 또는 EC21의 방법에 있어서, I/O 디바이스 레퍼런스 설계, I/O 디바이스 제어기, 리스트, 암호화된 FW 저장소, 및 암호 키는 동일한 비즈니스 엔티티에 의해 이용가능하게 되는, 방법.
EC23) EC14, EC16, EC18, EC20, 또는 EC21의 방법에 있어서, I/O 디바이스 레퍼런스 설계, I/O 디바이스 제어기, 리스트, 암호화된 FW 저장소, 및 암호 키 중 하나 또는 그 초과의 것은 동일한 비즈니스 엔티티에 의해 이용가능하게 되는, 방법.
EC24) EC22 또는 EC23의 방법에 있어서, 이용가능하게 하는 것의 임의의 또는 모든 부분들은,
이메일,
하나 또는 그 초과의 확장가능 마크업 언어(XML)-주석이 달린 사양들 및/또는 XML-기반 폼들,
하나 또는 그 초과의 서버 대 서버 트랜잭션들,
인터넷을 사용한 비즈니스 대 비즈니스 자동화 시스템,
다층(multi-tiered) 인터넷 상거래 기반 서버의 임의의 하나 또는 그 초과의 층(tier)들,
하나 또는 그 초과의 웹, 데이터베이스, 및/또는 애플리케이션 서버들, 및
하나 또는 그 초과의 웹, 데이터베이스, 및/또는 애플리케이션 스크립들, 프로그램들, 및/또는 애플리케이션들
중 임의의 하나 또는 그 초과의 것을 적어도 부분적으로 통하는, 방법.
EC25) EC14, EC16, EC18, EC20, 또는 EC21의 방법에 있어서, 선택된 컴포넌트들은 복수의 비휘발성 메모리 디바이스 제조자들로부터의 비휘발성 메모리 디바이스들을 포함하는, 방법.
EC26) EC25의 방법에 있어서, I/O 디바이스는 고체 상태 디스크(SSD)를 포함하고, I/O 디바이스 제어기는 SSD 제어기를 포함하고, I/O 디바이스 레퍼런스 설계는 SSD 레퍼런스 설계를 포함하고, 비휘발성 메모리 디바이스들은 고체 상태 메모리 디바이스들을 포함하며, 비휘발성 메모리 디바이스 제조자들은 고체 상태 메모리 디바이스 제조자들을 포함하는, 방법.
EC27) 방법으로서,
I/O 디바이스 제어기와 호환가능한 펌웨어(FW)를 에이전트에 대해 이용가능하게 하는 단계;
I/O 디바이스 레퍼런스 설계를 에이전트에 제공하는 단계; 및
비휘발성 메모리 디바이스들의 리스트를 에이전트에 제공하는 단계 ―리스트는 복수의 비휘발성 메모리 디바이스 제조자들로부터의 비휘발성 메모리 디바이스들을 포함함―를 포함하며,
FW와 함께 I/O 디바이스 제어기는 I/O 디바이스 레퍼런스 설계 및 리스트 중의 임의의 비휘발성 메모리 디바이스들을 통해 I/O 디바이스를 구현하도록 인에이블되는, 방법.
EC28) EC27의 방법에 있어서, 에이전트는 비즈니스이고, FW를 이용가능하게 하는 단계는 FW를 비즈니스에 대해 라이센싱(license)하는 단계를 포함하는, 방법.
EC29) EC28의 방법에 있어서, I/O 디바이스 제어기를 비즈니스에 판매하는 단계를 더 포함하는, 방법.
EC30) EC29의 방법에 있어서, I/O 디바이스는 고체 상태 디스크(SSD)를 포함하고, I/O 디바이스 제어기는 SSD 제어기를 포함하고, I/O 디바이스 레퍼런스 설계는 SSD 레퍼런스 설계를 포함하고, 비휘발성 메모리 디바이스들은 고체 상태 메모리 디바이스들을 포함하며, 비휘발성 메모리 디바이스 제조자들은 고체 상태 메모리 디바이스 제조자들을 포함하는, 방법.
EC31) EC30의 방법에 있어서, 고체 상태 메모리 디바이스들은 플래시 메모리 디바이스들을 포함하고, 고체 상태 메모리 디바이스 제조자들은 플래시 메모리 디바이스 제조자들을 포함하는, 방법.
EC32) EC31의 방법에 있어서, 비즈니스가 리스트의 플래시 메모리 디바이스들 중에서 선택된 양들(quantities)의 플래시 메모리 디바이스들을 구매하는 단계를 더 포함하고, 상기 양들은 SSD의 대량 제조를 가능하게 하는데 충분한, 방법.
EC33) EC32의 방법에 있어서, 비즈니스는 시스템 벤더이고, 판매 및 라이센싱하는 단계들, 및 2개의 제공하는 단계들은 설계 벤더에 의해 수행되는, 방법.
EC34) EC33의 방법에 있어서, 시스템 벤더 및 설계 벤더는 별개의 회사들인, 방법.
EC35) EC33의 방법에 있어서, 시스템 벤더 및 설계 벤더는 동일한 회사의 부분들인, 방법.
EC36) EC31의 방법에 있어서, 하나 또는 그 초과의 시제품 SSD들의 검증 및/또는 특징화의 결과들을 비즈니스에 제공하는 단계를 더 포함하고, 시제품 SSD들은 SSD 레퍼런스 설계에 따라 SSD 제어기 및 FW의 인스턴스들을 사용하여 구성되는, 방법.
EC37) EC31의 방법에 있어서, 하나 또는 그 초과의 시제품 SSD들의 하나 또는 그 초과의 신뢰도 입증 테스트(RDT)들의 결과들을 비즈니스에 제공하는 단계를 더 포함하고, 시제품 SSD들은 SSD 레퍼런스 설계에 따라 SSD 제어기 및 FW의 인스턴스들을 사용하여 구성되는, 방법.
EC38) EC37의 방법에 있어서, 비즈니스는 시스템 벤더이고, 판매 및 라이센싱하는 단계들, 및 3개의 제공하는 단계들은 설계 벤더에 의해 수행되는, 방법.
EC39) EC31의 방법에 있어서, 하나 또는 그 초과의 시제품 SSD들의 하나 또는 그 초과의 설계 검증 테스트(DVT)들의 결과들을 비즈니스에 제공하는 단계를 더 포함하고, 시제품 SSD들은 SSD 레퍼런스 설계에 따라 SSD 제어기 및 FW의 인스턴스들을 사용하여 구성되는, 방법.
EC40) EC39의 방법에 있어서, 비즈니스는 시스템 벤더이고, 판매 및 라이센싱하는 단계들, 및 3개의 제공하는 단계들은 설계 벤더에 의해 수행되는, 방법.
EC41) EC31의 방법에 있어서, 레퍼런스 설계에 따라 비즈니스에 의해 직접적으로 또는 간접적으로 제조되고 FW 및 SSD 제어기를 포함하는 복수의 SSD들 중 고장 SSD들에 대한 고장 분석을 제공하는 단계를 더 포함하는, 방법.
EC42) EC41의 방법에 있어서, 비즈니스는 시스템 벤더이고, 판매 및 라이센싱하는 단계들, 및 3개의 제공하는 단계들은 설계 벤더에 의해 수행되는, 방법.
EC43) EC31의 방법에 있어서, 비즈니스는 제 1 비즈니스이고, 상기 방법은 제조 소프트웨어 툴을 제 2 비즈니스에 제공하는 단계를 더 포함하고, 제조 소프트웨어 툴은 FW를 SSD의 제조 인스턴스에 다운로딩하도록 인에이블되는, 방법.
EC44) EC43의 방법에 있어서, 제 1 비즈니스는 시스템 벤더이고, 판매 및 라이센싱하는 단계들, 및 3개의 제공하는 단계들은 설계 벤더에 의해 수행되는, 방법.
EC45) EC43의 방법에 있어서, 제조 소프트웨어 툴은 SSD의 제조 인스턴스에게 SSD의 제조 인스턴스의 플래시 메모리의 테스트 및 제조 셀프 테스트 중 하나 또는 그 초과의 것을 수행하게 지시하도록 추가로 인에이블되는, 방법.
EC46) EC43의 방법에 있어서, 제 1 비즈니스 및 제 2 비즈니스는 동일한 회사인, 방법.
EC47) EC43의 방법에 있어서, 제 1 비즈니스 및 제 2 비즈니스는 별개의 회사들인, 방법.
EC48) EC25 또는 EC28의 방법에 있어서, I/O 디바이스 레퍼런스 설계는, I/O 디바이스 제어기 중 하나 또는 그 초과, 비휘발성 메모리 디바이스들 중 하나 또는 그 초과, 하나 또는 그 초과의 전원들, 하나 또는 그 초과의 온도 센서들, 하나 또는 그 초과의 케이싱들, 하나 또는 그 초과의 인쇄 회로 기판들, 하나 또는 그 초과의 패시브 컴포넌트들, 및 FW에 따라 이루어지는, 방법.
EC49) EC26 또는 EC30의 방법에 있어서, 고체 상태 메모리 디바이스들은 플래시 메모리 디바이스들을 포함하고, 고체 상태 메모리 디바이스 제조자들은 플래시 메모리 디바이스 제조자들을 포함하는, 방법.
EC50) EC49의 방법에 있어서,
SSD는 복수의 클래스들의 SSD들로부터의 제 1 특정 클래스의 SSD이고;
FW와 함께 SSD 제어기는 SSD 레퍼런스 설계 및 리스트 중 임의의 플래시 메모리 디바이스들을 통해 적어도 제 2 특정 클래스의 SSD를 구현하도록 추가로 인에이블되며,
클래스들의 SSD들은 기업-클래스 SSD, 클라우드-클래스 SSD, 산업-클래스 SSD, 및 클라이언트-클래스 SSD를 포함하는, 방법.
EC51) EC49의 방법에 있어서,
SSD는 복수의 클래스들의 SSD들로부터의 제 1 특정 클래스의 SSD이고;
클래스들의 SSD들은 기업-클래스 SSD, 클라우드-클래스 SSD, 산업-클래스 SSD, 및 클라이언트-클래스 SSD를 포함하고,
FW는 복수의 클래스들의 FW들로부터의 제 1 특정 클래스의 FW이고;
클래스들의 FW들은 기업-클래스 SSD와 연관된 기업-클래스 FW, 클라우드-클래스 SSD와 연관된 클라우드-클래스 FW, 산업-클래스 SSD와 연관된 산업-클래스 FW, 및 클라이언트-클래스 SSD와 연관된 클라이언트-클래스 FW를 포함하고;
클래스들의 FW들로부터의 제 2 특정 클래스의 FW와 함께 SSD 제어기는 SSD 레퍼런스 설계 및 리스트 중 임의의 플래시 메모리 디바이스들을 통해 클래스들의 SSD들로부터의 적어도 제 2 특정 클래스의 SSD를 구현하도록 추가로 인에이블되며,
제 2 특정 클래스의 SSD는 제 2 특정 클래스의 FW와 연관된 클래스의 SSD인, 방법.
EC52) EC51의 방법에 있어서, 클래스들의 FW들 중 적어도 2개는 적어도 일부 루틴들, 함수들, 및/또는 연산들을 공통으로 갖는, 방법.
EC53) EC50 또는 EC51의 방법에 있어서, 플래시 메모리 디바이스 제조자들 중 제 1 플래시 메모리 디바이스 제조자로부터의 플래시 메모리 디바이스들은 제 1 특정 클래스의 SSD를 제조하도록 사용가능하고, 플래시 메모리 디바이스 제조자들 중 제 2 플래시 메모리 디바이스 제조자로부터의 플래시 메모리 디바이스들은 제 2 특정 클래스의 SSD를 제조하도록 사용가능한, 방법.
EC54) EC50 또는 EC51의 방법에 있어서, 플래시 메모리 디바이스 제조자들 중 특정한 플래시 메모리 디바이스 제조자의 플래시 메모리 디바이스들의 복수의 카테고리들 중 제 1 카테고리로부터의 플래시 메모리 디바이스들은 제 1 특정 클래스의 SSD를 제조하도록 사용가능하고, 카테고리들 중 제 2 카테고리로부터의 플래시 메모리 디바이스들은 제 2 특정 클래스의 SSD를 제조하도록 사용가능한, 방법.
EC55) EC49의 방법에 있어서, SSD는 상대적으로 더 큰 용량의 SSD이며, FW와 함께 SSD 제어기는 SSD 레퍼런스 설계 및 리스트 중 임의의 플래시 메모리 디바이스들을 통해 상대적으로 더 작은 용량의 SSD를 구현하도록 추가로 인에이블되는, 방법.
EC56) EC55의 방법에 있어서, 플래시 메모리 디바이스 제조자들 중 제 1 플래시 메모리 디바이스 제조자로부터의 플래시 메모리 디바이스들은 상대적으로 더 큰 용량의 SSD를 제조하도록 사용가능하며, 플래시 메모리 디바이스 제조자들 중 제 2 플래시 메모리 디바이스 제조자로부터의 플래시 메모리 디바이스들은 상대적으로 더 작은 용량의 SSD를 제조하도록 사용가능한, 방법.
EC57) EC55의 방법에 있어서, 플래시 메모리 디바이스 제조자들 중 특정한 플래시 메모리 디바이스 제조자의 플래시 메모리 디바이스들의 복수의 카테고리들 중 제 1 카테고리로부터의 플래시 메모리 디바이스들은 상대적으로 더 큰 용량의 SSD를 제조하도록 사용가능하고, 카테고리들 중 제 2 카테고리로부터의 플래시 메모리 디바이스들은 상대적으로 더 작은 용량의 SSD를 제조하도록 사용가능한, 방법.
EC58) EC49의 방법에 있어서, SSD 제어기는 단일 집적 회로(IC)에서 구현되는, 방법.
EC59) EC49의 방법에 있어서, SSD 제어기는 리스트 중 임의의 플래시 메모리 디바이스들과 데이터를 통신하도록 인에이블된 플래시 메모리 인터페이스를 포함하는, 방법.
EC60) EC49의 방법에 있어서, SSD 제어기는 스토리지 인터페이스 표준과 호환가능하고 스토리지 인터페이스를 통해 스토리지 커맨드들을 제공하는 컴퓨팅 호스트에 커플링하도록 인에이블된 스토리지 인터페이스를 포함하는, 방법.
EC61) EC60의 방법에 있어서, 스토리지 커맨드들을 제공하도록 컴퓨팅 호스트를 동작시키는 단계를 더 포함하는, 방법.
EC62) 방법으로서,
호스트에 커플링된 스토리지 디바이스의 스토리지 인터페이스를 통해 호스트로부터 하나 또는 그 초과의 커맨드들을 수신하는 단계 ―커맨드들은, 다르게는(otherwise) 스토리지 디바이스에 의해 생성된 로그 정보의 스토리지에 전용되는 스토리지 디바이스의 스토리지 공간에 저장되도록 호스트에 의해 지시됨―;
이벤트에 응답하여 커맨드들의 실행을 시작하는 표시자를 수신하는 단계; 및
이벤트에 응답하여 커맨드들을 실행하는 단계를 포함하는, 방법.
EC63) EC62의 방법에 있어서,
비즈니스가 암호화된 펌웨어 저장소로부터의 하나 또는 그 초과의 이미지들로서 펌웨어를 암호해독할 수 있게 하기 위해 비즈니스에 암호 키를 제공하는 단계 -이미지들은 스토리지 디바이스에 포함된 스토리지 디바이스 제어기의 엘리먼트들을 프로세싱함으로써 실행가능하고, 이미지들은 커맨드들의 실행을 가능하게 하고, 스토리지 디바이스는 스토리지 디바이스 레퍼런스 설계에 따라 구성됨-; 및
암호화된 펌웨어 저장소에 대한 액세스를 비즈니스에 제공하는 단계를 더 포함하고,
커맨드들은 스토리지 디바이스의 제조 셀프 테스트를 포함하며,
스토리지 디바이스는 컴포넌트들의 리스트로부터 선택된 컴포넌트들을 포함하고, 리스트에는 펌웨어, 스토리지 디바이스 제어기, 및 스토리지 디바이스 레퍼런스 설계와 호환가능한 컴포넌트들이 있는, 방법.
EC64) EC62의 방법에 있어서,
스토리지 디바이스는 스토리지 디바이스 제어기 및 스토리지 매체를 포함하고;
스토리지 디바이스 제어기와 호환가능한 펌웨어는 비즈니스에 대해 라이센싱되고;
스토리지 디바이스는 레퍼런스 설계 및 비즈니스에 제공된 후보 스토리지 매체 디바이스들의 리스트에 따라 구성되고;
스토리지 매체는 리스트로부터 비즈니스에 의해 선택된 엘리먼트들로 이루어지고;
펌웨어와 함께 스토리지 디바이스 제어기는 레퍼런스 설계 및 리스트 중의 임의의 멤버들을 통해 스토리지 디바이스를 구현하도록 인에이블되고;
펌웨어와 함께 스토리지 디바이스 제어기는 실행을 수행하도록 인에이블되며,
실행은 스토리지 디바이스의 제조 셀프 테스트를 수행하는, 방법.
EC65) EC62의 방법에 있어서, 실행에 의해 생성된 하나 또는 그 초과의 결과들을 저장하는 단계를 더 포함하는, 방법.
EC66) EC62의 방법에 있어서, 표시자는 호스트로부터 발생되며 스토리지 인터페이스를 통해 이루어지는, 방법.
EC67) EC62의 방법에 있어서, 스토리지 공간은, 다르게는 셀프-모니터링 분석 및 리포팅 기술(SMART) 로그에 전용되는, 방법.
EC68) EC67의 방법에 있어서, SMART 로그는 제 1 SMART 로그이고, 상기 방법은 실행의 하나 또는 그 초과의 결과들을 제 2 SMART 로그에 저장하는 단계를 더 포함하는, 방법.
EC69) EC62의 방법에 있어서, 이벤트는 다음의 파워-온 이벤트(next power-on event) 및 즉시 시작 이벤트(start immediately event)를 포함하는 복수의 이벤트들 중 하나인, 방법.
EC70) EC62의 방법에 있어서, 2개의 수신하는 단계들 및 실행하는 단계는 고체 상태 디스크(SSD)의 제어기에 의해 적어도 부분적으로 수행되는, 방법.
EC71) EC62의 방법에 있어서, 2개의 수신하는 단계들 및 실행하는 단계는 스토리지 디바이스에 포함된 스토리지 디바이스 제어기에 의해 적어도 부분적으로 구현되는, 방법.
EC72) EC71의 방법에 있어서, 스토리지 디바이스 제어기는 단일 집적 회로(IC)에서 구현되는, 방법.
EC73) 방법으로서,
스토리지 디바이스의 스토리지 인터페이스를 통해, 스토리지 디바이스의 로그 스토리지 공간의 제 1 부분에 저장된 하나 또는 그 초과의 커맨드들의 실행을 시작하는 표시자를 수신하는 단계;
표시자의 수신에 응답하여 커맨드들을 실행하는 단계; 및
로그 스토리지 공간의 제 2 부분에 실행의 모든 또는 임의의 부분들에 의해 생성된 하나 또는 그 초과의 결과들을 저장하는 단계를 포함하는, 방법.
EC74) EC73의 방법에 있어서, 표시자는 스토리지 인터페이스에 커플링된 호스트에 의해 제공되는, 방법.
EC75) EC73의 방법에 있어서, 로그 스토리지 공간은, 스토리지 인터페이스를 통해 수신된 기록 또는 판독 액세스를, SMART 로그 스토리지 공간을 통한 액세스와 호환가능한 셀프-모니터링 분석 및 리포팅 기술(SMART) 로그 스토리지 공간인, 방법.
EC76) EC73의 방법에 있어서, 수신하는 단계, 실행하는 단계, 저장하는 단계는, 고체 상태 디스크(SSD)의 제어기에 의해 적어도 부분적으로 수행되는, 방법.
EC77) 방법으로서,
스토리지 디바이스에서, 스토리지 디바이스의 스토리지 인터페이스를 통해 호스트로부터 정보를 수신하는 단계 ―정보는 스토리지 디바이스의 제조 셀프 테스트의 적어도 일부를 수행하는 것과 호환가능한 하나 또는 그 초과의 커맨드들을 포함하고, 정보는 커맨드들이 스토리지 디바이스의 로그 스토리지의 제 1 부분에 저장된다는 지시(directive)를 더 포함함―;
스토리지 디바이스에서, 스토리지 인터페이스를 통해 호스트로부터 표시자를 수신하는 단계 ―표시자는 로그 스토리지의 제 1 부분에 저장된 커맨드들의 실행을 시작할 때를 특정하는 스토리지 디바이스에 대한 신호임―;
스토리지 디바이스에서 그리고 표시자의 수신에 응답하여, 커맨드들을 실행하는 단계; 및
스토리지 디바이스에서, 로그 스토리지의 제 2 부분에서 실행의 적어도 일부 결과들을 저장하는 단계를 포함하고,
로그 스토리지는, 스토리지 인터페이스를 통해 수신된 커맨드들을 셀프-모니터링 분석 및 리포팅 기술(SMART) 로그 스토리지 액세스를 통해 액세스가능한, SMART 로그 스토리지인, 방법.
EC78) EC77의 방법에 있어서, 표시자는 커맨드들의 실행의 시작을 즉시 표시하고, 스토리지 디바이스는 실행 동안 적어도 부분적으로 호스트에 커플링되는, 방법.
EC79) EC77의 방법에 있어서, 표시자는 다음의 파워 온시에 커맨드들의 실행의 시작을 표시하고, 실행은 다음의 파워 온에 추가로 응답하며, 스토리지 디바이스는 실행 동안 적어도 부분적으로 호스트로부터 분리되는, 방법.
EC80) EC62, EC73, 또는 EC77의 방법에 있어서, 커맨드들 중 적어도 하나는 스토리지 디바이스에 포함된 스토리지 매체를 스토리지 디바이스가 테스트하도록 지시하고, 스토리지 인터페이스를 통해 수신된 데이터를 스토리지 디바이스가 저장할 수 있게 하는, 방법.
삭제
EC81) EC62, EC73, 또는 EC77의 방법에 있어서, 스토리지 디바이스는 고체 상태 디스크(SSD)를 포함하고, 스토리지 인터페이스는 직렬 어드밴스드 기술 부착(SATA) 인터페이스를 포함하는, 방법.
EC82) EC62, EC73, 또는 EC77의 방법에 있어서, 표시자는 벤더 특정 셀프-모니터링 분석 및 리포팅 기술(SMART) 커맨드 전송(SCT) 커맨드인, 방법.
EC83) EC62, EC73, 또는 EC77의 방법에 있어서, 커맨드들은 기록 스토리지 커맨드, 소거 스토리지 커맨드, 스토리지 인터페이스 번-인 커맨드, 지연 커맨드, 스트레스 모드 커맨드, 루프 커맨드, 및 조건(conditional) 커맨드 중 임의의 하나 또는 그 초과의 것을 포함하는, 방법.
EC84) EC62, EC73 또는 EC77의 방법에 있어서, 커맨드들은 일련의 하나 또는 그 초과의 타입들의 동작들을 포함하는, 방법.
EC85) EC84의 방법에 있어서, 타입들의 동작들 중 적어도 하나는 스토리지 디바이스에 포함된 스토리지 매체의 기록을 특정하는, 방법.
EC86) EC84의 방법에 있어서, 타입들의 동작들 중 적어도 하나는 스토리지 디바이스에 포함된 스토리지 매체의 소거를 특정하는, 방법.
EC87) EC84의 방법에 있어서, 타입들의 동작들 중 적어도 하나는 스토리지 디바이스에 포함된 스토리지 매체의 검증을 특정하는, 방법.
EC88) EC84의 방법에 있어서, 타입들의 동작들 중 하나 또는 그 초과의 것은 길이에 대응하는 사이즈의 스토리지 디바이스에 포함된 스토리지 매체의 부분과 연관된 어드레스 및 길이를 포함하는, 방법.
EC89) EC65, EC73, 또는 EC77의 방법에 있어서, 결과들은 테스트 상태, 하나 또는 그 초과의 진행 표시자들, 하나 또는 그 초과의 통계들, 및 에러 정보 중 임의의 하나 또는 그 초과의 것을 포함하는, 방법.
EC90) EC89의 방법에 있어서, 테스트 상태는 비활성(not activated), 활성, 구동, 입력 종료, 중단, 및 에러 테스트 상태들 중 임의의 하나 또는 그 초과의 것을 포함하는, 방법.
EC91) EC89의 방법에 있어서, 진행 표시자들 중 적어도 하나는,
커맨드들에 관한 입력 오프셋,
커맨드들 중 현재 커맨드의 표시자,
완료된 커맨드들의 수의 측정치,
커맨드들 중 임의의 하나 또는 그 초과의 것의 완료량의 측정치,
테스트될 남은 스토리지 디바이스의 사용자 데이터 스토리지량의 측정치,
테스트된 사용자 데이터 스토리지량의 측정치, 및
실행을 시작한 이후 경과된 시간의 측정치
중 임의의 하나 또는 그 초과의 것을 포함하는, 방법.
EC92) EC89의 방법에 있어서, 통계들 중 적어도 하나는 스토리지 디바이스의 모든 또는 임의의 부분들의 온도, 스토리지 디바이스의 사용자 데이터 스토리지의 불량 부분들, 사용자 데이터 스토리지의 재매핑된 부분들, 및 스토리지 디바이스의 무에러(error-free) 판독들 중 하나 또는 그 초과의 것을 포함하는, 방법.
EC93) EC89의 방법에 있어서, 에러 정보는 정정가능 및/또는 정정불가능 에러들, 프로그램 에러들, 소거 에러들, 비트 에러 카운트들 및/또는 타입들, 및 에러 이벤트들 중 하나 또는 그 초과의 것을 포함하는, 방법.
EC94) EC62, EC73, 또는 EC77의 방법에 있어서, 스토리지 디바이스는 포함된 하나 또는 그 초과의 플래시 메모리 디바이스들을 통해 적어도 부분적으로 대용량 스토리지를 구현하는, 방법.
EC95) EC94의 방법에 있어서, 스토리지 디바이스는 플래시 메모리 디바이스들 중 적어도 하나와 데이터를 통신하도록 인에이블된 플래시 메모리 인터페이스를 포함하는, 방법.
EC96) EC94의 방법에 있어서, 스토리지 인터페이스는 스토리지 인터페이스 표준과 호환가능한, 방법.
EC97) EC62, EC74, 또는 EC77의 방법에 있어서, 커맨드들을 제공하도록 호스트를 동작시키는 단계를 더 포함하는, 방법.
EC98) 스토리지 디바이스로서,
펌웨어;
펌웨어의 명령들을 실행하도록 인에이블된 프로세싱 엘리먼트;
스토리지 인터페이스에 커플링된 호스트로부터, 하나 또는 그 초과의 커맨드들 및 이벤트에 응답하여 커맨드들의 실행을 시작하는 표시자를 수신하도록 인에이블된 스토리지 인터페이스; 및
스토리지 공간을 포함하고,
프로세싱 엘리먼트에 의한 펌웨어의 하나 또는 그 초과의 루틴들의 실행은,
호스트에 의해 지시될 때, 다르게는 스토리지 디바이스에 의해 생성된 로그 정보의 스토리지에 전용되는, 스토리지 공간의 부분에 커맨드들을 저장하는 것, 및
이벤트에 응답하여 커맨드들을 실행하는 것
을 가능하게 하는, 스토리지 디바이스.
EC99) EC98의 스토리지 디바이스에 있어서, 펌웨어, 프로세싱 엘리먼트, 스토리지 인터페이스, 및 스토리지 공간은 고체 상태 디스크(SSD)에 포함되고, 스토리지 인터페이스는 직렬 어드밴스드 기술 부착(SATA) 인터페이스를 포함하는, 스토리지 디바이스.
EC100) EC98의 스토리지 디바이스에 있어서, 스토리지 공간은 제 1 셀프-모니터링 분석 및 리포팅 기술(SMART) 로그 및 제 2 SMART 로그를 포함하고, 제 1 SMART 로그는 부분을 포함하며, 실행은 제 2 SMART 로그에 저장되는 하나 또는 그 초과의 결과들을 생성하는, 스토리지 디바이스.
EC101) 스토리지 디바이스로서,
제 1 및 제 2 부분들을 갖는 로그 스토리지 공간;
펌웨어;
펌웨어의 명령들을 실행하도록 인에이블된 프로세싱 엘리먼트; 및
스토리지 인터페이스에 커플링된 호스트로부터, 제 1 부분에 저장된 하나 또는 그 초과의 커맨드들의 실행을 시작하는 표시자를 수신하도록 인에이블된 스토리지 인터페이스를 포함하고,
프로세싱 엘리먼트에 의한 펌웨어의 하나 또는 그 초과의 루틴들의 실행은,
삭제
표시자의 수신에 응답하여 커맨드들을 실행하는 것; 및
제 2 부분에 실행의 모든 또는 임의의 부분들에 의해 생성된 하나 또는 그 초과의 결과들을 저장하는 것을 가능하게 하는, 스토리지 디바이스.
EC102) EC101의 방법에 있어서, 펌웨어, 프로세싱 엘리먼트, 스토리지 인터페이스, 및 로그 스토리지 공간은 고체 상태 디스크(SSD)에 포함되고, 스토리지 인터페이스는 직렬 어드밴스드 기술 부착(SATA) 인터페이스를 포함하는, 스토리지 디바이스.
EC103) EC101의 스토리지 디바이스에 있어서, 로그 스토리지 공간은 제 1 및 제 2 셀프-모니터링 분석 및 리포팅 기술(SMART) 로그들을 포함하고, 제 1 SMART 로그는 제 1 부분을 포함하며, 제 2 SMART 로그는 제 2 부분을 포함하는, 스토리지 디바이스.
EC104) EC98 또는 EC101의 방법에 있어서, 커맨드들은 기록 스토리지 커맨드, 소거 스토리지 커맨드, 스토리지 인터페이스 번-인 커맨드, 지연 커맨드, 스트레스 모드 커맨드, 루프 커맨드, 및 조건 커맨드 중 임의의 하나 또는 그 초과의 것을 포함하는, 스토리지 디바이스.
EC105) EC98 또는 EC101의 스토리지 디바이스에 있어서, 스토리지 매체를 더 포함하고, 커맨드들은 일련의 하나 또는 그 초과의 타입들의 동작들을 포함하며, 동작들 중 임의의 하나 또는 그 초과의 것은 스토리지 매체의 기록, 소거, 및 검증 중 임의의 하나 또는 그 초과의 것을 특정하는 것을 포함하는, 스토리지 디바이스.
EC106) 스토리지 디바이스의 프로세싱 엘리먼트에 의해 실행될 때, 프로세싱 엘리먼트로 하여금, 하기의 동작들을 수행하게 하는 명령들의 세트가 저장되어 있는 유형의 컴퓨터 판독가능 매체로서, 상기 동작들은,
스토리지 디바이스의 스토리지 인터페이스를 통해 스토리지 디바이스에 커플링된 호스트로부터 하나 또는 그 초과의 커맨드들의 수신을 관리하는 것 ―커맨드들은, 다르게는 스토리지 디바이스에 의해 생성된 로그 정보의 스토리지에 전용되는, 스토리지 디바이스의 스토리지 공간의 부분에 저장되도록 호스트에 의해 지시됨―;
이벤트에 응답하여 커맨드들의 실행을 시작하는 표시자를 인식하는 것; 및
이벤트에 응답하여 커맨드들을 실행하는 것
을 포함하는, 유형의 컴퓨터 판독가능 매체.
EC107) EC106의 유형의 컴퓨터 판독가능 매체에 있어서, 스토리지 공간은 제 1 셀프-모니터링 분석 및 리포팅 기술(SMART) 로그 및 제 2 SMART 로그를 포함하고, 제 1 SMART 로그는 부분을 포함하며, 커맨드들의 실행은 제 2 SMART 로그에 저장되는 하나 또는 그 초과의 결과들을 생성하는, 유형의 컴퓨터 판독가능 매체.
EC108) 스토리지 디바이스의 프로세싱 엘리먼트에 의해 실행될 때, 프로세싱 엘리먼트로 하여금, 하기의 동작들을 수행하게 하는 명령들의 세트가 저장되어 있는 유형의 컴퓨터 판독가능 매체로서, 상기 동작들은,
스토리지 디바이스의 스토리지 인터페이스를 통해, 스토리지 디바이스의 로그 스토리지 공간의 제 1 부분에 저장된 하나 또는 그 초과의 커맨드들의 실행을 시작하는 표시자의 수신을 관리하는 것;
표시자의 수신에 응답하여 커맨드들을 실행하는 것; 및
로그 스토리지 공간의 제 2 부분에 커맨드들의 실행의 모든 또는 임의의 부분들에 의해 생성된 하나 또는 그 초과의 결과들을 저장하는 것
을 포함하는, 유형의 컴퓨터 판독가능 매체.
EC109) EC108의 유형의 컴퓨터 판독가능 매체에 있어서, 로그 스토리지 공간은 제 1 및 제 2 셀프-모니터링 분석 및 리포팅 기술(SMART) 로그들을 포함하고, 제 1 SMART 로그는 제 1 부분을 포함하며, 제 2 SMART 로그는 제 2 부분을 포함하는, 유형의 컴퓨터 판독가능 매체.
EC110) EC106 또는 EC108의 유형의 컴퓨터 판독가능 매체에 있어서, 커맨드들은 기록 스토리지 커맨드, 소거 스토리지 커맨드, 스토리지 인터페이스 번-인 커맨드, 지연 커맨드, 스트레스 모드 커맨드, 루프 커맨드, 및 조건 커맨드 중 임의의 하나 또는 그 초과의 것을 포함하는, 유형의 컴퓨터 판독가능 매체.
EC111) EC106 또는 EC108의 유형의 컴퓨터 판독가능 매체에 있어서, 스토리지 디바이스는 스토리지 매체를 포함하고, 커맨드들은 일련의 하나 또는 그 초과의 타입들의 동작들을 포함하며, 동작들 중 임의의 하나 또는 그 초과의 것은 스토리지 매체의 기록, 소거, 및 검증 중 임의의 하나 또는 그 초과의 것을 특정하는 것을 포함하는, 유형의 컴퓨터 판독가능 매체.
EC112) 시스템으로서,
호스트에 커플링된 스토리지 디바이스의 스토리지 인터페이스를 통해 호스트로부터 하나 또는 그 초과의 커맨드들을 수신하기 위한 수단 ―커맨드들은, 다르게는 스토리지 디바이스에 의해 생성된 로그 정보의 스토리지에 전용되는 스토리지 디바이스의 스토리지 공간의 부분에 저장되도록 호스트에 의해 지시됨―;
이벤트에 응답하여 커맨드들의 실행을 시작하는 표시자를 수신하기 위한 수단; 및
이벤트에 응답하여 커맨드들을 실행하기 위한 수단을 포함하는, 시스템.
EC113) EC112의 시스템에 있어서, 커맨드들을 수신하기 위한 수단, 표시자를 수신하기 위한 수단, 및 실행하기 위한 수단은 고체 상태 디스크(SSD)에 포함되며, 스토리지 인터페이스는 직렬 어드밴스드 기술 부착(SATA) 인터페이스를 포함하는, 시스템.
EC114) 시스템으로서,
스토리지 디바이스에 의해 그리고 스토리지 디바이스의 스토리지 인터페이스를 통해, 스토리지 디바이스의 로그 스토리지 공간의 제 1 부분에 저장된 하나 또는 그 초과의 커맨드들의 실행을 시작하는 표시자를 수신하기 위한 수단;
수신하기 위한 수단에 응답하여 커맨드들을 실행하기 위한 수단; 및
로그 스토리지 공간의 제 2 부분에, 실행하기 위한 수단의 모든 또는 임의의 부분들에 의해 생성된 하나 또는 그 초과의 결과들을 저장하기 위한 수단을 포함하는, 시스템.
EC115) EC114의 시스템에 있어서, 수신하기 위한 수단, 실행하기 위한 수단, 및 저장하기 위한 수단은 고체 상태 디스크(SSD)에 포함되고, 스토리지 인터페이스는 직렬 어드밴스드 기술 부착(SATA) 인터페이스를 포함하는, 시스템.
EC116) EC112 또는 EC114의 시스템에 있어서, 커맨드들은 기록 스토리지 커맨드, 소거 스토리지 커맨드, 스토리지 인터페이스 번-인 커맨드, 지연 커맨드, 스트레스 모드 커맨드, 루프 커맨드, 및 조건 커맨드 중 임의의 하나 또는 그 초과의 것을 포함하는, 시스템.
EC117) EC112 또는 EC114의 시스템에 있어서, 스토리지 매체를 더 포함하고, 커맨드들은 일련의 하나 또는 그 초과의 타입들의 동작들을 포함하며, 동작들 중 임의의 하나 또는 그 초과의 것은 스토리지 매체의 기록, 소거, 및 검증 중 임의의 하나 또는 그 초과의 것을 특정하는 것을 포함하는, 시스템.
EC118) 방법으로서,
I/O 디바이스 제어기를 에이전트에 제공하는 단계;
I/O 디바이스 제어기와 호환가능한 펌웨어(FW)를 에이전트에 제공하는 단계;
I/O 디바이스 레퍼런스 설계를 에이전트에 제공하는 단계; 및
비휘발성 메모리 디바이스들의 리스트를 에이전트에 제공하는 단계 ―리스트는 복수의 비휘발성 메모리 디바이스 제조자들로부터의 비휘발성 메모리 디바이스들을 포함함―를 포함하고,
FW와 함께 I/O 디바이스 제어기는 I/O 디바이스 레퍼런스 설계 및 리스트 중의 임의의 비휘발성 메모리 디바이스들을 통해 I/O 디바이스를 구현하도록 인에이블되는, 방법.
EC119) EC118의 방법에 있어서,
에이전트는 비즈니스를 포함하며, I/O 디바이스 제어기를 에이전트에 제공하는 단계는 I/O 디바이스 제어기를 비즈니스에 판매하는 단계를 포함하며,
FW를 제공하는 단계는 FW를 비즈니스에 대해 라이센싱하는 단계를 포함하는, 방법.
EC120) EC119의 방법에 있어서, I/O 디바이스는 고체 상태 디스크(SSD)를 포함하고, I/O 디바이스 제어기는 SSD 제어기를 포함하고, I/O 디바이스 레퍼런스 설계는 SSD 레퍼런스 설계를 포함하고, 비휘발성 메모리 디바이스들은 플래시 메모리 디바이스들을 포함하며, 비휘발성 메모리 디바이스 제조자들은 플래시 디바이스 제조자들을 포함하는, 방법.
EC121) EC119의 방법에 있어서, 비즈니스가 리스트의 비휘발성 메모리 디바이스들 중에서 선택된 양들의 비휘발성 메모리 디바이스들을 구매하는 단계를 더 포함하고, 상기 양들은 I/O 디바이스의 대량 제조를 가능하게 하는데 충분한, 방법.
EC122) EC121의 방법에 있어서, 비즈니스는 시스템 벤더이고, 판매하는 단계 및 라이센싱하는 단계, 및 2개의 제공하는 단계들은 설계 벤더에 의해 수행되는, 방법.
EC123) EC122의 방법에 있어서, 시스템 벤더 및 설계 벤더는 별개의 회사들인, 방법.
EC124) EC123의 방법에 있어서, I/O 디바이스는 기업-클래스 SSD이고, FW와 함께 I/O 디바이스 제어기는 I/O 디바이스 레퍼런스 설계 및 리스트 중 비휘발성 메모리 디바이스들의 적어도 일부를 통해 클라이언트-클래스 SSD를 구현하도록 추가로 인에이블되는, 방법.
EC125) EC123의 방법에 있어서, I/O 디바이스는 상대적으로 더 큰 용량의 SSD이고, FW와 함께 I/O 디바이스 제어기는 I/O 디바이스 레퍼런스 설계 및 리스트 중 비휘발성 메모리 디바이스들의 적어도 일부를 통해 상대적으로 더 작은 용량의 SSD를 구현하도록 추가로 인에이블되는, 방법.
EC126) 스토리지 인터페이스 표준을 갖거나 참조하는 임의의 상술한 EC들로서, 스토리지 인터페이스 표준은,
범용 직렬 버스(USB) 인터페이스 표준,
콤팩트 플래시(CF) 인터페이스 표준,
멀티미디어카드(MMC) 인터페이스 표준,
내장형 MMC(eMMC) 인터페이스 표준,
썬더볼트 인터페이스 표준,
UFS 인터페이스 표준,
보안 디지털(SD) 인터페이스 표준,
메모리 스틱 인터페이스 표준,
xD-픽처 카드 인터페이스 표준,
집적 드라이브 전자장치(IDE) 인터페이스 표준,
직렬 어드밴스드 기술 부착(SATA) 인터페이스 표준,
외부 SATA(eSATA) 인터페이스 표준,
소형 컴퓨터 시스템 인터페이스(SCSI) 인터페이스 표준,
직렬 부착 소형 컴퓨터 시스템 인터페이스(SAS) 인터페이스 표준,
파이버 채널 인터페이스 표준,
이더넷 인터페이스 표준, 및
주변 컴포넌트 상호접속 익스프레스(PCIe) 인터페이스 표준
중 하나 또는 그 초과의 것을 포함하는, 임의의 상술한 EC들.
EC127) 플래시 메모리 인터페이스를 갖거나 참조하는 임의의 상술한 EC들로서,
플래시 메모리 인터페이스는,
오픈 NAND 플래시 인터페이스(ONFI),
토글 모드 인터페이스,
더블-데이터-레이트(DDR) 동기 인터페이스,
DDR2 동기 인터페이스,
동기 인터페이스, 및
비동기 인터페이스
중 하나 또는 그 초과의 것과 호환가능한, 임의의 상술한 EC들.
EC128) 컴퓨팅 호스트를 갖거나 참조하는 임의의 상술한 EC들로서,
컴퓨팅 호스트는,
컴퓨터,
워크스테이션 컴퓨터,
서버 컴퓨터,
스토리지 서버,
스토리지 부착 네트워크(SAN),
네트워크 부착 스토리지(NAS) 디바이스,
직접 부착 스토리지(DAS) 디바이스,
스토리지 어플라이언스,
개인 컴퓨터(PC),
랩탑 컴퓨터,
노트북 컴퓨터,
넷북 컴퓨터,
태블릿 디바이스 또는 컴퓨터,
울트라북 컴퓨터,
전자 판독 디바이스(e-리더),
휴대 보조 단말기(PDA),
네비게이션 시스템,
(핸드헬드) 글로벌 포지셔닝 시스템(GPS) 디바이스,
오토모티브 제어 시스템,
오토모티브 매체 제어 시스템 또는 컴퓨터,
프린터, 복사기 또는 팩스 머신 또는 일체형 디바이스,
판매 시점 정보 관리(POS) 디바이스,
캐시-레지스터,
매체 플레이어,
텔레비전,
매체 리코더,
디지털 비디오 리코더(DVR),
디지털 카메라,
셀룰러 핸드셋,
코드리스 전화 핸드셋, 및
전자 게임
중 하나 또는 그 초과의 것을 포함하는, 임의의 상술한 EC들.
EC129) 적어도 하나의 플래시 메모리 디바이스를 갖거나 참조하는 임의의 상술한 EC들로서,
적어도 하나의 플래시 메모리 디바이스의 적어도 일부는,
NAND 플래시 기술 스토리지 셀들, 및
NOR 플래시 기술 스토리지 셀들
중 하나 또는 그 초과의 것을 포함하는, 임의의 상술한 EC들.
EC130) 적어도 하나의 플래시 메모리 디바이스를 갖거나 참조하는 임의의 상술한 EC들로서,
적어도 하나의 플래시 메모리 디바이스의 적어도 일부는,
단일 레벨 셀(SLC) 플래시 기술 스토리지 셀들, 및
멀티 레벨 셀(MLC) 플래시 기술 스토리지 셀들
중 하나 또는 그 초과의 것을 포함하는, 임의의 상술한 EC들.
EC131) 적어도 하나의 플래시 메모리 디바이스를 갖거나 참조하는 임의의 상술한 EC들로서,
적어도 하나의 플래시 메모리 디바이스의 적어도 일부는,
폴리실리콘 기술 기반 전하 스토리지 셀들, 및
실리콘 질화물 기술 기반 전하 스토리지 셀들
중 하나 또는 그 초과의 것을 포함하는, 임의의 상술한 EC들.
EC132) 적어도 하나의 플래시 메모리 디바이스를 갖거나 참조하는 임의의 상술한 EC들로서,
적어도 하나의 플래시 메모리 디바이스의 적어도 일부는,
2차원 기술 기반 플래시 메모리 기술, 및
3차원 기술 기반 플래시 메모리 기술
중 하나 또는 그 초과를 포함하는, 임의의 상술한 EC들.
시스템
도 1a는 VDMM 및 SSD MST와 사용하기 위해 호환가능한 SSD 제어기를 포함하는 SSD의 실시예의 선택된 상세사항들을 예시한다. SSD 제어기는 예컨대 NVM 엘리먼트들(예를 들어, 플래시 메모리들)을 통해 구현되는, 비휘발성 스토리지를 관리하기 위한 것이다. SSD 제어기(100)는 호스트(도시되지 않음)에 하나 또는 그 초과의 외부 인터페이스들(110)을 통해 통신가능하게 커플링된다. 다양한 실시예들에 따르면, 외부 인터페이스들(110)은: SATA 인터페이스; SAS 인터페이스; PCIe 인터페이스; 파이버 채널 인터페이스; (10 기가비트 이더넷과 같은) 이더넷 인터페이스; 선행하는 인터페이스들 중 임의의 것의 비-표준 버전; 커스텀(custom) 인터페이스; 또는 스토리지 및/또는 통신들 및/또는 컴퓨팅 디바이스들을 상호접속하기 위해 이용된 임의의 다른 타입의 인터페이스 중 하나 또는 그 초과의 것이다. 예를 들어, 일부 실시예들에서, SSD 제어기(100)는 SATA 인터페이스 및 PCIe 인터페이스를 포함한다.
SSD 제어기(100)는, 하나 또는 그 초과의 디바이스 인터페이스들(190)을 통해, 하나 또는 그 초과의 인스턴스들(instances)의 플래시 디바이스(192)와 같은 하나 또는 그 초과의 스토리지 디바이스들을 포함하는 NVM(199)에 추가로 통신가능하게 커플링된다. 다양한 실시예들에 따르면, 디바이스 인터페이스들(190)은: 비동기 인터페이스; 동기 인터페이스; 단일-데이터-레이트(SDR) 인터페이스; 더블-데이터-레이트(DDR) 인터페이스; DRAM-호환성 DDR 또는 DDR2 동기 인터페이스; ONFI 2.2 또는 ONFI 3.0 호환가능한 인터페이스와 같은 ONFI 호환가능한 인터페이스; 토글-모드 호환가능한 플래시 인터페이스; 선행하는 인터페이스들 중 임의의 것의 비-표준 버전; 커스텀 인터페이스; 또는 스토리지 디바이스들에 접속하기 위해 이용된 임의의 다른 타입의 인터페이스 중 하나 또는 그 초과의 것이다.
플래시 디바이스(192) 각각은 일부 실시예들에서, 하나 또는 그 초과의 개별 플래시 다이(194)를 갖는다. 플래시 디바이스(192) 중 특정한 하나의 타입에 따르면, 특정 플래시 디바이스(192)에서의 복수의 플래시 다이(194)가 옵션으로 그리고/또는 선택적으로 병렬로 액세스가능하다. 플래시 디바이스(192)는 단지 SSD 제어기(100)에 통신가능하게 커플링하는 것이 가능한 일 타입의 스토리지 디바이스를 나타낸다. 다양한 실시예들에서, SLC NAND 플래시 메모리, MLC NAND 플래시 메모리, NOR 플래시 메모리, 폴리실리콘 또는 실리콘 질화물 기술-기반 전하 스토리지 셀들을 이용하는 플래시 메모리, 2- 또는 3-차원 기술-기반 플래시 메모리, 판독-전용 메모리, 정적 랜덤 액세스 메모리, 동적 랜덤 액세스 메모리, 강자성체 메모리, 위상-변경 메모리, 레이스트랙(racetrack) 메모리, ReRAM 또는 임의의 다른 타입의 메모리 디바이스 또는 스토리지 매체와 같은 임의의 타입의 스토리지 디바이스가 이용가능하다.
다양한 실시예들에 따르면, 디바이스 인터페이스들(190)은 버스 당 하나 또는 그 초과의, 플래시 디바이스(192)의 인스턴스들을 갖는 하나 또는 그 초과의 버스들; 버스 당 하나 또는 그 초과의, 플래시 디바이스(192)의 인스턴스들을 갖는 버스들의 하나 또는 그 초과의 그룹들 ―그룹에서의 버스들은 일반적으로 병렬로 액세스됨―; 또는 디바이스 인터페이스들(190)상에 하나 또는 그 초과의, 플래시 디바이스(192)의 인스턴스들의 임의의 다른 구조(organization)로서 구조화된다.
도 1a에 계속하여, SSD 제어기(100)는 호스트 인터페이스들(111), 데이터 프로세싱(data processing)(121), 버퍼(131), 맵(141), 리사이클러(151), ECC(161), 디바이스 인터페이스 로직(191) 및 CPU(171)와 같은 하나 또는 그 초과의 모듈들을 갖는다. 도 1a에 도시된 특정 모듈들 및 상호접속들은 단지 일 실시예를 나타내며, 예시되지 않은 추가의 모듈들뿐만 아니라 상기 모듈들의 일부 또는 전부의 다수의 배열들(arrangements) 및 상호접속들이 구상된다. 제 1 예에서, 일부 실시예들에서, 듀얼-포팅(dual-porting)을 제공하기 위해 2개 또는 그 초과의 호스트 인터페이스들(111)이 존재한다. 제 2 예에서, 일부 실시예들에서, 데이터 프로세싱(121) 및/또는 ECC(161)가 버퍼(131)와 조합된다. 제 3 예에서, 일부 실시예들에서, 호스트 인터페이스들(111)이 직접 버퍼(131)에 커플링되며, 데이터 프로세싱(121)은 옵션으로 그리고/또는 선택적으로, 버퍼(131)에 저장된 데이터에 대해 동작한다. 제 4 예에서, 일부 실시예들에서, 디바이스 인터페이스 로직(191)은 버퍼(131)에 직접 커플링되며, ECC(161)는 옵션으로 그리고/또는 선택적으로, 버퍼(131)에 저장된 데이터에 대해 동작한다.
호스트 인터페이스들(111)은 외부 인터페이스들(110)을 통해 커맨드들 및/또는 데이터를 송신하고 수신하며, 일부 실시예들에서, 태그 트래킹(113)을 통해 개별 커맨드들의 진행을 트래킹한다. 예를 들어, 커맨드들은 판독할 (다수의 LBA 양자들, 예를 들어, 섹터들과 같은) 데이터의 양 및 (LBA와 같은) 어드레스를 특정하는 판독 커맨드를 포함한다; 이에 응답하여, SSD는 판독 상태 및/또는 판독 데이터를 제공한다. 다른 예에서, 커맨드들은 기록할 (다수의 LBA 양자들, 예를 들어, 섹터들과 같은) 데이터의 양 및 (LBA와 같은) 어드레스를 특정하는 기록 커맨드를 포함한다; 이에 응답하여, SSD는 기록 상태를 제공하고 그리고/또는 기록 데이터를 요청하며 옵션으로 후속하여 기록 상태를 제공한다. 또 다른 예에서, 커맨드들은 더 이상 할당될 필요가 없는 (하나 또는 그 초과의 LBA들과 같은) 하나 또는 그 초과의 어드레스들을 특정하는 할당해제(de-allocation) 커맨드(예를 들어, 트림(trim) 커맨드)를 포함한다; 이에 응답하여, SSD는 그에 맞춰(accordingly) 맵을 수정하며 옵션으로 할당-해제 상태를 제공한다. 일부 맥락들에서, ATA 호환가능한 TRIM 커맨드는 예시적인 할당-해제 커맨드이다. 또 다른 예에서, 커맨드들은 수퍼 커패시터 테스트 커맨드 또는 데이터 경화 성공 질문(data hardening success query)을 포함한다; 이에 응답하여, SSD는 적절한 상태를 제공한다. 일부 실시예들에서, 호스트 인터페이스들(111)은 SATA 프로토콜과 호환가능하며, NCQ 커맨드들을 이용하여, 각각이 0 내지 31의 숫자로 표현된 고유한 태그를 갖는 최대 32개의 계류중인 커맨드들을 갖는 것이 가능해진다. 일부 실시예들에서, 태그 트래킹(113)은 SSD 제어기(100)에 의한 프로세싱 동안 커맨드를 트래킹하기 위해 이용된 내부 태그와, 외부 인터페이스들(110)을 통해 수신된 커맨드에 대한 외부 태그를 연관시키는 것이 가능하다.
다양한 실시예들에 따르면, 하나 또는 그 초과의 것은 다음과 같다 : 데이터 프로세싱(121)은 옵션으로 그리고/또는 선택적으로 버퍼(131)와 외부 인터페이스들(110) 사이에 송신된 일부 또는 모든 데이터를 프로세싱한다; 그리고 데이터 프로세싱(121)은 옵션으로 그리고/또는 선택적으로, 버퍼(131)에 저장된 데이터를 프로세싱한다. 일부 실시예들에서, 데이터 프로세싱(121)은: 포맷팅; 리포맷팅; 트랜스코딩; 및 임의의 다른 데이터 프로세싱 및/또는 조작 태스크 중 하나 또는 그 초과의 것을 수행하기 위해 하나 또는 그 초과의 엔진들(123)을 이용한다.
버퍼(131)는 디바이스 인터페이스들(190)로부터 외부 인터페이스들(110)로 및/또는 외부 인터페이스들(110)로부터 디바이스 인터페이스들(190)로 전송된 데이터를 저장한다. 일부 실시예들에서, 버퍼(131)는 하나 또는 그 초과의, 플래시 디바이스(192)의 인스턴스들을 관리하기 위해 SSD 제어기(100)에 의해 사용된 맵 테이블들 중 일부 또는 모두와 같은 시스템 데이터를 추가로 저장한다. 다양한 실시예들에서, 버퍼(131)는 데이터의 임시 스토리지를 위해 사용된 메모리(137), 버퍼(131)로 및/또는 버퍼(131)로부터의 데이터의 이동을 제어하기 위해 사용된 DMA(133), 상위 레벨 에러 정정 및/또는 리던던시 기능들을 제공하기 위해 사용된 ECC-X(135), 및 다른 데이터 이동 및/또는 조작 기능들 중 하나 또는 그 초과를 갖는다. 상위 레벨 리던던시 기능의 일례가 디스크 레벨 대신 플래시 디바이스 레벨(예를 들어, 플래시 디바이스(192)의 다수의 플래시 디바이스들) 및/또는 플래시 다이 레벨(예를 들어, 플래시 다이(194))에서의 리던던시를 갖는, RAID형 능력(예를 들어, RASIE)이다.
다양한 실시예들에 따르면, 하나 또는 그 초과의 것은 다음과 같다: ECC(161)는 옵션으로 그리고/또는 선택적으로, 버퍼(131)와 디바이스 인터페이스들(190) 사이에 송신된 일부 또는 모든 데이터를 프로세싱하며; 그리고 ECC(161)는 옵션으로 그리고/또는 선택적으로, 버퍼(131)에 저장된 데이터를 프로세싱한다. 일부 실시예들에서, ECC(161)는, 예컨대 하나 또는 그 초과의 ECC 기술들에 따라, 하위-레벨 에러 정정 및/또는 리던던시 기능들을 제공하기 위해 이용된다. 일부 실시예들에서, ECC(161)는: CRC 코드; 해밍 코드; RS 코드; BCH 코드; LDPC 코드; 비터비 코드; 트렐리스 코드; 하드-결정(hard-decision) 코드; 소프트-결정(soft-decision) 코드; 소거-기반 코드; 임의의 에러 검출 및/또는 정정 코드; 및 전술한 것의 임의의 조합 중 하나 또는 그 초과의 것을 구현한다. 일부 실시예들에서, ECC(161)는 (LDPC 디코더들과 같은) 하나 또는 그 초과의 디코더들을 포함한다.
디바이스 인터페이스 로직(191)은 디바이스 인터페이스들(190)을 통해 플래시 디바이스(192)의 인스턴스들(instances)을 제어한다. 디바이스 인터페이스 로직(191)은 플래시 디바이스(192)의 프로토콜에 따라 플래시 디바이스(192)의 인스턴스들에/인스턴스들로부터 데이터를 송신하는 것이 가능해진다. 디바이스 인터페이스 로직(191)은 디바이스 인터페이스들(190)을 통해 플래시 디바이스(192)의 인스턴스들의 제어를 선택적으로 시퀀싱하기 위한 스케줄링(193)을 포함한다. 예를 들어, 일부 실시예들에서, 스케줄링(193)은 플래시 디바이스(192)의 인스턴스들에 대한 동작들을 큐잉하고, 그리고 플래시 디바이스(192)(또는 플래시 다이(194))의 인스턴스들의 각각의 것들이 이용가능함에 따라 플래시 디바이스(192)(또는 플래시 다이(194))의 인스턴스들의 각각의 것들에 동작들을 선택적으로 송신하는 것이 가능해진다.
맵(141)은, NVM(199)에서의 위치들로 외부 데이터 어드레스들을 매핑하기 위해 테이블(143)을 이용하여, 디바이스 인터페이스들(190) 상에 이용된 데이터 어드레싱과 외부 인터페이스들(110) 상에 이용된 데이터 어드레싱 사이에서 변환한다. 예를 들어, 일부 실시예들에서, 맵(141)은 외부 인터페이스들(110) 상에 이용된 LBA들을 테이블(143)에 의해 제공된 매핑을 통해, 하나 또는 그 초과의 플래시 다이(194)를 목표로 하는 블록 및/또는 페이지 어드레스들로 변환한다. 드라이브 제조 또는 할당해제 이후로는 전혀 기록되지 않은 LBA들에 대해, 맵은 LBA들이 판독되는 경우에 리턴하기 위한 디폴트 값을 지시한다(point to). 예를 들어, 할당 해제 커맨드를 프로세싱할 때, 할당 해제된 LBA들에 대응하는 엔트리들(entries)이 디폴트 값들 중 하나를 지시하도록 맵이 수정된다. 다양한 실시예들에서, 다양한 디폴트 값들이 존재하며, 이 각각은 대응하는 포인터를 갖는다. 복수의 디폴트 값들은 하나의 디폴트 값으로서 (예컨대 제 1 범위에서) 일부 할당해제된 LBA들을 판독하는 것을 가능하게 하는 한편, 다른 디폴트 값으로서 (예컨대 제 2 범위에서) 다른 할당해제된 LBA들을 판독하는 것을 가능하게 한다. 다양한 실시예들에서, 디폴트 값들은 플래시 메모리, 하드웨어, 펌웨어, 커맨드 및/또는 원시 인수들(primitive arguments) 및/또는 파라미터들, 프로그램가능한 레지스터들 또는 이들의 다양한 조합들에 의해 정의된다.
일부 실시예들에서, 맵(141)은 외부 인터페이스들(110) 상에 이용된 어드레스들과 디바이스 인터페이스들(190) 상에 이용된 데이터 어드레싱 간의 변환들을 수행하고 그리고/또는 검색(look up)하기 위해 테이블(143)을 이용한다. 다양한 실시예들에 따르면, 테이블(143)은: 1-레벨 맵; 2-레벨 맵; 멀티-레벨 맵; 맵 캐시(cache); 압축된 맵; 하나의 어드레스 공간으로부터 다른 공간으로의 임의의 타입의 매핑; 및 전술한 것의 임의의 조합 중 하나 또는 그 초과의 것이다. 다양한 실시예들에 따르면, 테이블(143)은: 정적 랜덤 액세스 메모리; 동적 랜덤 액세스 메모리; (플래시 메모리와 같은) NVM; 캐시 메모리; 온-칩 메모리; 오프-칩 메모리; 및 전술한 것의 임의의 조합 중 하나 또는 그 초과의 것을 포함한다.
일부 실시예들에서, 리사이클러(151)는 가비지(garbage) 수집을 수행한다. 예를 들어, 일부 실시예들에서, 플래시 디바이스(192)의 인스턴스들은 블록들이 재-기록가능하기 전에 소거되어야 하는 블록들을 포함한다. 리사이클러(151)는, 예컨대 맵(141)에 의해 유지된 맵을 스캐닝함으로써, 플래시 디바이스(192)의 인스턴스들의 어느 부분들이 활성으로 사용중인지(예를 들어, 할당-해제되는 대신 할당되는지)를 결정하고, 그리고 비사용 부분들을 소거함으로써 플래시 디바이스(192)의 인스턴스들의 비사용(예를 들어, 할당해제되는) 부분들을 기록을 위해 이용가능하게 하는 것이 가능하다. 추가적인 실시예들에서, 리사이클러(151)는 플래시 디바이스(192)의 인스턴스들 내에 저장된 데이터를 이동시켜, 플래시 디바이스(192)의 인스턴스들의 더 큰 인접한 부분들이 기록을 위해 이용가능하게 하는 것이 가능하다.
일부 실시예들에서, 플래시 디바이스(192)의 인스턴스들은 서로 다른 타입들 및/또는 특성들의 데이터를 저장하기 위한 하나 또는 그 초과의 대역들을 갖기 위해 선택적으로 그리고/또는 동적으로 구성되고, 관리되며 그리고/또는 이용된다. 대역들의 수, 배열, 사이즈 및 타입은 동적으로 변경가능하다. 예를 들어, 컴퓨팅 호스트로부터의 데이터가 핫(활성) 대역으로 기록되는 한편, 리사이클러(151)로부터의 데이터는 콜드(덜 활성인) 대역에 기록된다. 일부 사용 시나리오들에서, 컴퓨팅 호스트가 긴 시퀀셜 스트림(sequential stream)을 기록하는 경우, 핫 밴드의 사이즈가 성장하는 반면, 컴퓨팅 호스트가 랜덤한 기록을 하거나 또는 소수의(few) 기록들을 행하는 경우에는, 콜드 대역의 사이즈가 성장한다.
CPU(171)는 SSD 제어기(100)의 다양한 부분들을 제어한다. CPU(171)는 CPU 코어(172)를 포함한다. 다양한 실시예들에 따라, CPU 코어(172)는 하나 또는 그 초과의 단일-코어 또는 멀티-코어 프로세서들이다. 일부 실시예들에서, CPU 코어(172)에서의 개별 프로세서 코어들은 멀티-쓰레드된다(multi-threaded). CPU 코어(172)는 명령 및/또는 데이터 캐시들 및/또는 메모리들을 포함한다. 예를 들어, 명령 메모리는 CPU 코어(172)로 하여금 SSD 제어기(100)를 제어하기 위해 프로그램들(예를 들어, 때때로 펌웨어로 칭하는 소프트웨어)을 실행할 수 있게 하기 위한 명령들을 포함한다. 일부 실시예들에서, CPU 코어(172)에 의해 실행된 펌웨어 중 일부 또는 모두는 (예를 들어, 도 1b에서 NVM(199)의 펌웨어(106)로서 예시된 바와 같이) 플래시 디바이스(192)의 인스턴스들상에 저장된다.
다양한 실시예들에서, CPU(171)는: 커맨드들이 진행중인 동안 외부 인터페이스들(110)을 통해 수신된 커맨드들을 트래킹하고 제어하기 위한 커맨드 관리(173); 버퍼(131)의 할당 및 이용을 제어하기 위한 버퍼 관리(175); 맵(141)을 제어하기 위한 변환 관리(177); 데이터 어드레싱의 일치성을 제어하고, 예컨대 외부 데이터 액세스들과 리사이클 데이터 액세스들 사이의 충돌들을 회피하기 위한 코히런시 관리(179); 디바이스 인터페이스 로직(191)을 제어하기 위한 디바이스 관리(181); 식별 정보의 수정 및 통신을 제어하기 위한 아이덴티티 관리(182), 및 옵션으로 다른 관리 유닛들을 더 포함한다. 다양한 실시예들에 따르면, CPU(171)에 의해 수행된 관리 기능들 중 그 어느 것도 하드웨어에 의해, (외부 인터페이스들(110)을 통해 접속된 호스트 상에 또는 CPU 코어(172) 상에 실행하는 펌웨어와 같은) 소프트웨어에 의해, 또는 이들의 임의의 조합에 의해 제어 및/또는 관리되지 않거나; 또는 CPU(171)에 의해 수행된 관리 기능들 중 임의의 것 또는 그 전부가, 하드웨어에 의해, (외부 인터페이스들(110)을 통해 접속된 호스트 상에 또는 CPU 코어(172) 상에 실행하는 펌웨어와 같은) 소프트웨어에 의해, 또는 이들의 임의의 조합에 의해 제어 및/또는 관리된다.
일부 실시예들에서, CPU(171)는 다른 관리 태스크들, 예컨대, 성능 통계들을 수집하고 그리고/또는 보고하는 것; SMART를 구현하는 것; 전력 시퀀싱을 제어하는 것, 전력 소모를 제어하는 것 및/또는 모니터링하는 것 및/또는 조정하는 것; 전력 실패들에 응답하는 것; 클록 레이트들을 제어하는 것 및/또는 모니터링하는 것 및/또는 조정하는 것; 및 다른 관리 태스크들 중 하나 또는 그 초과의 것을 수행하는 것이 가능하다.
다양한 실시예들은, SSD 제어기(100)와 유사하며, 예컨대 호스트 인터페이스들(111) 및/또는 외부 인터페이스들(110)의 적응을 통해 다양한 컴퓨팅 호스트들과의 동작과 호환가능한 컴퓨팅-호스트 플래시 메모리 제어기를 포함한다. 다양한 컴퓨팅 호스트들은 컴퓨터, 워크스테이션 컴퓨터, 서버 컴퓨터, 스토리지 서버, SAN, NAS 디바이스, DAS 디바이스, 스토리지 어플라이언스, PC, 랩톱 컴퓨터, 노트북 컴퓨터, 넷북 컴퓨터, 태블릿 디바이스 또는 컴퓨터, 울트라북 컴퓨터, (e-리더와 같은) 전자 판독 디바이스, PDA, 네비게이션 시스템, (핸드헬드) GPS 디바이스, 오토모티브 제어 시스템, 오토모티브 매체 제어 시스템 또는 컴퓨터, 프린터, 복사기 또는 팩스 머신 또는 일체형 디바이스, POS 디바이스, 캐시-레지스터, 매체 플레이어, 텔레비전, 매체 리코더, DVR, 디지털 카메라, 셀룰러 핸드셋, 코드리스 전화 핸드셋 및 전자 게임 중 하나 또는 이들의 임의의 조합을 포함한다.
다양한 실시예들에서, SSD 제어기(또는 컴퓨팅-호스트 플래시 메모리 제어기)의 전부 또는 임의의 부분들은 단일 IC, 멀티-다이 IC의 단일 다이, 멀티-다이 IC의 복수의 다이들, 또는 복수의 IC들 상에 구현된다. 예를 들어, 버퍼(131)는 SSD 제어기(100)의 다른 엘리먼트들과 동일한 다이 상에 구현된다. 다른 예에서, 버퍼(131)는 SSD 제어기(100)의 다른 엘리먼트들과 서로 다른 다이 상에 구현된다.
도 1b는 도 1a의 SSD의 하나 또는 그 초과의 인스턴스들을 포함하는 시스템들의 다양한 실시예들의 선택된 상세사항들을 예시한다. SSD(101)는 디바이스 인터페이스들(190)을 통해 NVM(199)에 커플링된 SSD 제어기(100)를 포함한다. 도면은 실시예들의 다양한 클래스들을 도시한다: 호스트에 직접 커플링되는 단일 SSD, 각각의 외부 인터페이스들을 통해 호스트에 직접 각각 개별적으로 커플링되는 복수의 SSD들, 및 다양한 상호접속 엘리먼트들을 통해 호스트에 간접적으로 커플링되는 하나 또는 그 초과의 SSD들.
호스트에 직접 커플링된 단일 SSD의 예시적인 실시예로서, SSD(101)의 하나의 인스턴스가 외부 인터페이스들(110)을 통해 호스트(102)에 직접 커플링된다(예를 들어, 스위치/패브릭/중간 제어기(103)가 생략되거나, 스위치/패브릭/중간 제어기(103)가 바이패스되거나, 또는 스위치/패브릭/중간 제어기(103)가 패스-쓰루된다). 각각의 외부 인터페이스들을 통해 각각이 호스트에 직접 커플링되는 복수의 SSD들의 예시적인 실시예로서, SSD(101)의 복수의 인스턴스들 각각은 외부 인터페이스들(110)의 각각의 인스턴스를 통해 호스트(102)에 직접 각각 커플링된다(예를 들어, 스위치/패브릭/중간 제어기(103)가 생략되거나, 스위치/패브릭/중간 제어기(103)가 바이패스되거나, 또는 스위치/패브릭/중간 제어기(103)가 패스-쓰루된다). 다양한 상호접속 엘리먼트들을 통해 호스트에 간접적으로 커플링되는 하나 또는 그 초과의 SSD들의 예시적인 실시예로서, SSD(101)의 하나 또는 그 초과의 인스턴스들의 각각은 호스트(102)에 간접적으로 각각 커플링된다. 각각의 간접 커플링은 스위치/패브릭/중간 제어기(103)에 커플링된 외부 인터페이스들(110), 및 호스트(102)에 커플링하는 중간 인터페이스들(104)의 각각의 인스턴스를 통해 이루어진다.
스위치/패브릭/중간 제어기(103)를 포함하는 실시예들 중 일부는 또한 메모리 인터페이스(180)를 통해 커플링되고 SSD들에 의해 액세스가능한 카드 메모리(112C)를 포함한다. 다양한 실시예들에서, SSD들, 스위치/패브릭/중간 제어기, 및/또는 카드 메모리 중 하나 또는 그 초과의 것이 물리적으로 식별가능한 모듈, 카드 또는 플러그가능한 엘리먼트(예를 들어, I/O 카드(116)) 상에 포함된다. 일부 실시예들에서, SSD(101)(또는 그의 변형들)는 호스트(102)로서 동작하는 이니시에이터(initiator)에 커플링되는 SAS 드라이브 또는 SATA 드라이브에 대응한다.
호스트(102)는 OS(105), 드라이버(107), 애플리케이션(109) 및 멀티-디바이스 관리 소프트웨어(114)의 다양한 조합들과 같은, 호스트 소프트웨어(115)의 다양한 엘리먼트들을 실행하는 것이 가능하다. 점선-화살표(107D)는 호스트 소프트웨어 ←→ I/O 디바이스 통신을 나타내며, 예를 들어, SSD(101)의 인스턴스들 중 하나 또는 그 초과의 것에/SSD(101)의 인스턴스들 중 하나 또는 그 초과의 것으로부터 그리고 드라이버(107)를 통한 OS(105), 드라이버(107) 및 애플리케이션(109) 중 임의의 하나 또는 그 초과의 것으로부터/드라이버(107)를 통한 OS(105), 드라이버(107) 및 애플리케이션(109) 중 임의의 하나 또는 그 초과의 것에, 드라이버(107)를 통하거나 VF로서 직접 데이터가 송신/수신된다.
OS(105)는 SSD와 인터페이싱하기 위한 (개념적으로 드라이버(107)에 의해 도시되는) 드라이버들을 포함하고 그리고/또는 이 드라이버들과 동작하는 것이 가능하다. 윈도우즈의 다양한 버전들(예를 들어, 95, 98, ME, NT, XP, 2000, 서버, 비스타 및 7), 리눅스의 다양한 버전들(예를 들어, 레드 햇(Red Hat), 데비앙(Debian) 및 우분투(Ubuntu)), 및 MacOS의 다양한 버전들(예를 들어, 8, 9 및 X)이 OS(105)의 예들이다. 다양한 실시예들에서, 드라이버들은 SATA, AHCI 또는 NVM 익스프레스와 같은 표준 인터페이스 및/또는 프로토콜로 동작가능한 (때때로 "압축된(shrink-wrapped)" 또는 "사전 설치된"이라 칭해지는) 표준 및/또는 일반 드라이버들이거나, 옵션으로 커스토마이징되고 그리고/또는 SSD(101)에 특정한 커맨드들의 이용을 가능하게 하는 특정 벤더(vendor specific)이다. 일부 드라이브들 및/또는 드라이버들은 커스토마이징된 애플리케이션이 심지어 일반 드라이버로 SSD(101)에 특정한 커맨드들을 이용하게 할 수 있는, SSD(101)에 직접 커맨드들을 통신하기 위해, 최적화된 NAND 액세스(때때로 ONA라 칭해짐) 또는 다이렉트 NAND 액세스(때때로 DNA로 칭해짐) 기술들을 통해 애플리케이션(109)과 같은 애플리케이션-레벨 프로그램들을 인에이블하게하는 패스-쓰루(pass-through) 모드를 갖는다. ONA 기술들은: 비-표준 수정자들(힌트들)의 이용; 특정 벤더(vendor-specific) 커맨드들의 이용; 압축성에 따른 실제 NVM 사용과 같은 비-표준 통계들의 통신; 및 다른 기술들 중 하나 또는 그 초과의 것을 포함한다. DNA 기술들은: NVM에 대한 비매핑된 판독, 기록 및/또는 소거 액세스를 제공하는 특정 벤더 또는 비-표준 커맨드들의 이용; 예컨대 데이터의 포맷팅을 바이패싱함으로써(이를 하지 않는다면 I/O 디바이스가 데이터의 포맷팅을 행할 것임), NVM에 대한 더욱 직접적인 액세스를 제공하는 비-표준 또는 특정 벤더 커맨드들의 이용; 및 다른 기술들 중 하나 또는 그 초과의 것을 포함한다. 드라이버의 예들은 ONA 또는 DNA 지원이 없는 드라이버, ONA-가능한 드라이버, DNA-가능한 드라이버 및 ONA/DNA-가능한 드라이버이다. 드라이버의 추가적인 예들은 벤더-제공형(vendor-provided), 벤더-발전형(vendor-developed), 및/또는 벤더-강화형(vendor-enhanced) 드라이버, 및 클라이언트-제공형(client-provided), 클라이언트-발전형(client-developed) 및/또는 클라이언트-강화형(client-enhanced) 드라이버이다.
애플리케이션-레벨 프로그램들의 예들은 ONA 또는 DNA 지원이 없는 애플리케이션, ONA-가능한 애플리케이션, DNA-가능한 애플리케이션 및 ONA/DNA-가능한 애플리케이션이다. 점선 화살표(109D)는 애플리케이션 ←→ I/O 디바이스 통신(예를 들어, 애플리케이션에 대해 VF를 통한 바이패스 또는 드라이버를 통한 바이패스), 예를 들어, ONA-가능한 애플리케이션 및 ONA-가능한 드라이버가 예컨대 중재자(intermediary)로서 OS를 이용하는 애플리케이션이 없이, SSD와 통신하는 것을 나타낸다. 점선-화살표(109V)는 애플리케이션 ←→ I/O 디바이스 통신(예를 들어, 애플리케이션에 대해 VF를 통한 바이패스), 예를 들어, DNA-가능한 애플리케이션 및 DNA-가능한 드라이버가 예컨대 중재자로서 OS 또는 드라이버를 이용하는 애플리케이션이 없이, SSD와 통신하는 것을 나타낸다.
일부 실시예들에서, NVM(199)의 하나 또는 그 초과의 부분들은 펌웨어 스토리지 예를 들어, 펌웨어(106)에 이용된다. 펌웨어 스토리지는 하나 또는 그 초과의 펌웨어 이미지들(또는 그의 일부들)을 포함한다. 펌웨어 이미지는 예를 들어, SSD 제어기(100)의 CPU 코어(172)에 의해 실행되는, 펌웨어의 하나 또는 그 초과의 이미지들을 갖는다. 다른 예의 경우, 펌웨어 이미지는 예를 들어, 펌웨어 실행 동안 CPU 코어에 의해 참조되는, 상수들, 파라미터 값들 및 NVM 디바이스 정보의 하나 또는 그 초과의 이미지들을 갖는다. 펌웨어의 이미지들은 예를 들어, 현재의 펌웨어 이미지 및 제로 또는 그 초과의 (펌웨어 업데이트들에 관하여) 이전의 펌웨어 이미지들에 대응한다. 다양한 실시예들에서, 펌웨어는 일반, 표준, ONA 및/또는 DNA 동작 모드들을 제공한다. 일부 실시예들에서, 펌웨어 동작 모드들 중 하나 또는 그 초과의 것은, 옵션으로 드라이버에 의해 통신되고 그리고/또는 제공되는 키들 또는 다양한 소프트웨어 기술들을 통해 인에이블된다(예를 들어, 하나 또는 그 초과의 API들이 "록킹해제"된다).
스위치/패브릭/중간 제어기가 없는(lacking) 일부 실시예들에서, SSD는 외부 인터페이스들(110)을 통해 직접 호스트에 커플링된다. 다양한 실시예들에서, SSD 제어기(100)는 RAID 제어기와 같은, 다른 제어기들의 하나 또는 그 초과의 중간 레벨들을 통해 호스트에 커플링된다. 일부 실시예들에서, SSD(101)(또는 그의 변형들)는 SAS 드라이브 또는 SATA 드라이브에 대응하며, 스위치/패브릭/중간 제어기(103)는 결과적으로(in turn) 이니시에이터에 커플링되는 확장자에 대응하거나, 대안적으로 스위치/패브릭/중간 제어기(103)는 확장자를 통해 이니시에이터에 간접적으로 커플링되는 브리지에 대응한다. 일부 실시예들에서, 스위치/패브릭/중간 제어기(103)는 하나 또는 그 초과의 PCIe 스위치들 및/또는 패브릭들을 포함한다.
컴퓨팅 호스트(예를 들어, 컴퓨터, 워크스테이션 컴퓨터, 서버 컴퓨터, 스토리지 서버, SAN, NAS 디바이스, DAS 디바이스, 스토리지 어플라이언스, PC, 랩톱 컴퓨터, 노트북 컴퓨터 및/또는 넷북 컴퓨터)로서의 호스트(102)를 갖는 실시예들 중 일부와 같은 다양한 실시예들에서, 컴퓨팅 호스트는 옵션으로 하나 또는 그 초과의 로컬 및/또는 원격 서버들(예를 들어, 옵션의 서버들(118))과 (예를 들어, 옵션의 I/O & 스토리지 디바이스들/자원들(117) 및 옵션의 LAN/WAN(119)을 통해) 통신하는 것이 가능하다. 통신은 예를 들어, SSD(101) 엘리먼트들 중 임의의 하나 또는 그 초과의 것의 로컬 및/또는 원격 액세스, 관리 및/또는 사용이 가능하다. 일부 실시예들에서, 통신은 전적으로 또는 부분적으로 이더넷을 통해 이루어진다. 일부 실시예들에서, 통신은 전적으로 또는 부분적으로 파이버 채널을 통해 이루어진다. 다양한 실시예들에서, LAN/WAN(119)은 서버 팜(farm)에서의 네트워크, 서버 팜들을 커플링하는 네트워크, 메트로-영역 네트워크 및 인터넷 중 임의의 하나 또는 그 초과의 것과 같이, 하나 또는 그 초과의 근거리 및/또는 광역 네트워크들에 대한 것을 나타낸다.
다양한 실시예들에서, SSD 제어기 및/또는 하나 또는 그 초과의 NVM들과 결합하는 컴퓨팅-호스트 플래시 메모리 제어기는, 비휘발성 스토리지 컴포넌트, 예컨대 USB 스토리지 컴포넌트, CF 스토리지 컴포넌트, MMC 스토리지 컴포넌트, eMMC 스토리지 컴포넌트, 썬더볼트 스토리지 컴포넌트, UFS 스토리지 컴포넌트, SD 스토리지 컴포넌트, 메모리 스틱 스토리지 컴포넌트 및 xD-화상 카드 스토리지 컴포넌트로서 구현된다.
다양한 실시예들에서, SSD 제어기(또는 컴퓨팅-호스트 플래시 메모리 제어기)의 전부 또는 임의의 부분들, 또는 그의 기능들은 제어기가 커플링되는 호스트(예를 들어, 도 1b의 호스트(102))에 구현된다. 다양한 실시예들에서, SSD 제어기(또는 컴퓨팅-호스트 플래시 메모리 제어기)의 전부 또는 임의의 부분들, 또는 그의 기능들이 하드웨어(예를 들어, 로직 회로), 소프트웨어 및/또는 펌웨어(예를 들어, 드라이버 소프트웨어 및/또는 SSD 제어 펌웨어), 또는 이들의 임의의 조합을 통해 구현된다. 예를 들어, (예컨대 도 1a의 ECC(161) 및/또는 ECC-X(135)와 유사한) ECC 유닛의 기능 또는 상기 ECC 유닛과 연관된 기능은 호스트 상의 소프트웨어를 통해 부분적으로 그리고 SSD 제어기에서의 펌웨어와 하드웨어의 결합을 통해 부분적으로 구현된다. 다른 예에서, (예컨대 도 1a의 리사이클러(151)와 유사한) 리사이클러 유닛의 기능 또는 상기 리사이클러 유닛과 연관된 기능은 호스트 상의 소프트웨어를 통해 부분적으로 그리고 컴퓨팅-호스트 플래시 메모리 제어기에서의 하드웨어를 통해 부분적으로 구현된다.
매핑 동작
도 2는 LBA의 LPN 부분을 매핑하는 실시예에 대해 선택된 상세사항들을 도시한다. 일부 실시예들에서, 판독 유닛은 NVM의 페이지의 일부와 같이, 독립적으로 판독가능한 미세 입도(finest granularity)의 NVM이다. 추가적인 실시예들에서, 판독 유닛은 검사 비트들에 의해 보호된 모든 데이터와 함께 (하위-레벨) 에러-정정 코드의 검사 비트들(때때로, 리던던시라 칭함)에 대응한다. 예를 들어, 도 1a의 ECC(161)는 검사 비트들을 통해, 예컨대 LDPC 코드를 통해 에러 정정을 구현하며, 판독 유닛은 LDPC 코딩 비트들에 의해 보호되는 데이터 비트들에 더하여 LDPC 코드를 구현하는 코딩 비트들에 대응한다.
일부 실시예들에서, 맵(141)은 예컨대 (도 1a에 도시된 바와 같은) 테이블(143)을 통해, LBA(211)의 LPN(213) 부분을 LPN(221)에 대한 맵 정보로 매핑한다. (LPN(221)에 대한 맵 정보와 같은) LPN에 대한 맵 정보는 때때로 맵 엔트리라 칭해진다. 맵(141)은 LPN을 대응하는 맵 엔트리와 연관시키는 것을 말한다. 다양한 실시예들에서, 매핑은 하나 또는 그 초과의 연상 검색(associative look-up)들을 통해, 하나 또는 그 초과의 비-연상 검색(non-associative look-up)들을 통해, 그리고/또는 하나 또는 그 초과의 다른 기술들을 통해 이루어진다.
일부 실시예들에서, SSD 제어기(100)는 잠재적으로 그리고/또는 활성적으로 사용중인 각 LPN에 대한 하나의 맵 엔트리를 유지한다.
일부 실시예들에서, LPN(221)에 대한 맵 정보는 각각의 판독 유닛 어드레스(223) 및 판독 유닛들에서의 길이(225)를 포함한다. 일부 실시예들에서, 길이 및/또는 스팬(span)은, 예를 들어 판독 유닛들에서의 길이(225)의 전부 또는 임의의 부분들에서, 예컨대 상기 스팬으로부터의 오프셋으로서 길이를 저장함으로써, 인코딩되어 저장된다. 추가적인 실시예들에서, 제 1 LPN은 제 1 맵 엔트리와 연관되고, (제 1 LPN과 서로 다르지만, 제 1 LPN에 의해 지칭된 논리적 페이지와 동일한 사이즈의 논리적 페이지를 지칭하는) 제 2 LPN은 제 2 맵 엔트리와 연관되며, 제 1 맵 엔트리의 판독 유닛들에서의 각각의 길이는 제 2 맵 엔트리의 판독 유닛들에서의 각각의 길이와 서로 다르다.
다양한 실시예들에서, 동일한 시점에서, 제 1 LPN은 제 1 맵 엔트리와 연관되고, (제 1 LPN과 서로 다른) 제 2 LPN은 제 2 맵 엔트리와 연관되며, 제 1 맵 엔트리의 각각의 판독 유닛 어드레스는 제 2 맵 엔트리의 각각의 판독 유닛 어드레스와 동일하다. 추가적인 실시예들에서, 제 1 LPN과 연관된 데이터 및 제 2 LPN과 연관된 데이터는 양자 모두가 NVM(199)에서의 동일한 디바이스의 동일한 물리적 페이지에 저장된다.
다양한 실시예들에 따르면, 판독 유닛 어드레스(223)는: NVM에서의 시작 어드레스; NVM에서의 종료 어드레스; 선행하는 것들 중 임의의 것의 오프셋; 및 LPN(213)과 연관된 NVM의 부분을 식별하기 위한 임의의 다른 기술들 중 하나 또는 그 초과의 것과 연관된다.
도 3은, 집합적으로 판독 유닛들의 양자들로 측정된 길이를 갖는, 다양한 판독 유닛들로서 구조화된 판독 데이터를 생성하기 위해 판독 유닛 어드레스에서 NVM을 액세스하는 실시예에 대해 선택된 상세사항들을 예시한다. 다양한 실시예들에 따르면, 제 1 판독 유닛(313)은: NVM의 어드레스 공간에서의 최저 어드레스를 갖는 판독 데이터(311)에서의 판독 유닛들 중 하나; 판독 유닛들 중 고정된 하나; 판독 유닛들 중 임의의 하나; 판독 유닛들 중 가변적인 하나; 및 임의의 다른 기술에 의해 선택된 판독 유닛들 중 하나 중, 하나 또는 그 초과의 것이다. 다양한 실시예들에서, SSD 제어기(100)는 판독 유닛들의 길이(225)에 의해 특정된 다수의 판독 유닛들을 단지(no more than) 판독함으로써 판독 데이터(311)를 생성하고 NVM(199)을 액세스하는 것이 가능하다.
도 4a는 판독 유닛(401A)으로서 (도 3의 판독 유닛(313) 또는 판독 유닛(315)과 같은) 판독 유닛의 실시예에 대해 선택된 상세사항들을 예시한다. 다양한 실시예들 및/또는 사용 시나리오들에서, 헤더 1(411A) 내지 헤더 N(419A)은 인접하며, 헤더들의 각각에 의해 (예컨대 각각의 오프셋들을 통해) 식별된 각각의 데이터 구역들은 헤더들 중 최종 헤더에 후속하여 인접하다. 데이터 구역들은 집합적으로 데이터 바이트들(421A)을 형성한다. 데이터 구역들은 헤더들이 저장되는 위치 순서에 매칭하는 위치 순서로 저장된다. 예를 들어, 판독 유닛의 맨 처음 부분에서(at the beginning), 제 1 헤더가 고려되며, 제 2 헤더 및 제 3 헤더는 제 1 헤더에 인접하게 후속한다. (제 1 헤더에서의 제 1 오프셋에 의해 식별되는) 제 1 데이터 구역이 제 3 헤더에 인접하게 후속한다. (제 2 헤더에서의 제 2 오프셋에 의해 식별되는) 제 2 데이터 구역이 제 1 데이터 구역에 인접하게 후속한다. 유사하게, (제 3 헤더에 의해 식별되는) 제 3 데이터 구역이 제 2 데이터 구역에 인접하게 후속한다
도 4b는 판독 유닛(401B)으로서 (도 3의 판독 유닛(313) 또는 판독 유닛(315)과 같은) 판독 유닛의 다른 실시예에 대해 선택된 상세사항들을 예시한다. 다양한 실시예들 및/또는 사용 시나리오들에서, 헤더 마커(HM)(410B)는 다수의 후속하는 인접 헤더들(헤더 1(411B), 헤더 2(412B)..., 헤더 N(419B))을 표시하는 (1-바이트 필드와 같은) 옵션의 초기 필드이다. 데이터 구역들(데이터 바이트들(421B), 데이터 바이트들(422B)... 데이터 바이트들(429B))은 헤더들(헤더 1(411B), 헤더 2(412B)..., 헤더 N(419B))에 의해 각각 식별되며 헤더들이 저장되는 위치 순서에 반대인 위치 순서로 저장된다. 헤더들은 판독 유닛의 맨 처음 부분에서 시작하는 한편, 대응하는 데이터 구역들은 판독 유닛의 맨 마지막 부분(at the end)에서 시작한다. 일부 실시예들에서, 데이터 구역 내의 데이터 바이트들(예를 들어, 데이터 바이트들(421B), 데이터 바이트들(422B), ..., 데이터 바이트들(429B))은 순방향 순서(위치 순서에 매칭하는 바이트 순서)로 배열되는 한편, 다른 실시예들에서, 데이터 바이트들은 역방향 순서(위치 순서에 관하여 반전된 바이트 순서)로 배열된다. 일부 실시예들에서, 헤더 마커는 헤더들 및 데이터 바이트들이 (예를 들어, 도 4a에 도시된 바와 같은) 동일한 위치 순서로 저장되는 판독 유닛들에 이용된다.
일부 실시예들에서, 옵션의 패딩 바이트들(431A)(또는 431B)은 특정 LPN과 연관된 데이터의 입도에 따른다. 예를 들어, 일부 실시예들에서, 데이터 바이트들(421A)(또는 집합적으로 데이터 바이트들(421B), 데이터 바이트들(422B), ..., 데이터 바이트들(429B))이 헤더 1(411A) 내지 헤더 N(419A)(또는 헤더 1(411B), 헤더 2(412B), ..., 헤더 N(419B)) 중 최종 하나를 제외한 전부와 연관된 데이터를 저장한 후에, 8 바이트들과 같이, 고정된 나머지 공간의 양보다 작은 경우에, 최종 헤더와 연관된 LPN에 대한 데이터가 후속 판독 유닛에서 시작된다. 추가적인 실시예들에서, 최종 헤더에서의 특정 오프셋 값(예를 들어, 모두 1들)은 최종 헤더와 연관된 LPN에 대한 데이터가 후속 판독 유닛에서 시작하는 것을 표시한다.
도 5는 다수의 필드들을 갖는 (도 4a의 임의의 헤더 1(411A) 내지 헤더 N(419A) 또는 도 4b의 헤더 1(411B) 내지 헤더 N(419B)와 같은) 헤더의 실시예의 선택된 상세사항들을 예시한다. 일부 실시예들에서, 헤더들은 고정 길이이다(예를 들어, 각 헤더는 동일한 수의 바이트 길이이다). 헤더(501)는 필드 타입(511), 최종 표시자(513), 플래그들(515), LPN(517), 길이(519), 및 오프셋(521)을 포함한다. 타입 필드는 데이터 바이트들의 카테고리를 식별한다. 예를 들어, 타입 필드는 데이터 바이트들의 카테고리가 호스트 데이터(예를 들어, 논리 페이지 데이터) 또는 시스템 데이터(예를 들어, 맵 정보 또는 체크포인트 정보) 중 하나이라는 것을 나타낸다. 최종 필드는 헤더가 데이터 바이트들 이전의 최종 헤더라는 것을 나타낸다. 헤더 마커를 갖는 일부 실시예들에서, 최종 필드는 옵션으로 생략된다. LPN 필드는 헤더가 연관되는 LPN이다. LPN 필드는 예를 들어, 특정한 LPN에 매칭하는 LPN 필드를 갖는 것에 대한 헤더들을 탐색함으로써 특정한 LPN과 연관되는 헤더들 중 특정한 하나를 결정하도록 헤더들의 분석을 인에이블한다. 길이 필드는 데이터 바이트들의, 바이트 단위의(in bytes) 길이(예를 들어, 헤더(501)와 연관된 데이터 바이트들(421A)에 얼마나 많은 데이터의 바이트들이 존재하는지)이다. 일부 실시예들에서, 오프셋 필드에서의 오프셋은 특정한 단위(예를 들어, 8-바이트 입도)에 따라 반올림(round)된다.
다양한 실시예들에서, 특정 LPN과 연관된 일부 또는 모든 정보는 특정 LPN과 연관된 맵 엔트리, 특정 LPN과 연관된 헤더 또는 이 둘 양자 모두에 저장된다. 예를 들어, 일부 실시예들에서, 길이(519)의 일부 또는 전부는 헤더에 보다는 오히려 맵 엔트리에 저장된다.
비휘발성 메모리 구조화 및 관리의 선택된 양상들
다양한 실시예들에서, SSD의 대용량 스토리지를 구현하는 NVM는 하나 또는 그 초과의 플래시 다이를 통해 구현된다. 각 플래시 다이는 정수의 블록들(예를 들어, N개의 블록들)을 포함하고 블록은 소거의 가장 작은 양자(quantum)이다. 일부 실시예들에서, 각 블록은 정수의 페이지들을 포함하고 페이지는 기록의 가장 작은 양자이다. 다양한 실시예들에 따라, 하나 또는 그 초과의 것은 다음과 같다: 판독 유닛은 판독 및 에러 정정의 가장 작은 양자이다; 각 페이지는 정수의 판독 유닛들을 포함한다; 2개 또는 그 초과의 페이지들의 연관된 그룹은 정수의 판독 유닛들을 포함한다; 그리고 판독 유닛들은 옵션으로 및/또는 선택적으로 페이지 경계들을 스팬한다.
다양한 실시예들에서, 다양한 NVM 관리 기능들(예를 들어, 판독, 리사이클링, 소거, 및/또는 프로그래밍/기록)이 R-블록들의 유닛들에서 수행된다. R-블록은 예를 들어, 플래시 메모리의 다양한 다이(예를 들어, 모든 다이, 전체적으로 또는 부분적으로 고장난 것들을 제외한 모든 다이, 및/또는 다이의 하나 또는 그 초과의 선택된 서브세트들)에 걸쳐 논리적 슬라이스 또는 섹션으로서 예시된다. 예를 들어, R 플래시 다이(각 플래시 다이는 N개의 블록들을 가짐)를 갖는 플래시 메모리에서, 각 R-블록은 총 N개의 R 블록들에 대해 함께 취해진 플래시 다이 각각으로부터의 i번째 블록이다. 예에 계속하여, R 플래시 다이 중 하나가 고장나면, 각 R-블록들은 총 N-1개의 R-블록들에 대해, 고장난 플래시 다이를 제외한 플래시 다이 각각으로부터의 i번째 블록이다. 다른 예에 있어서, R 플래시 다이(각각 N개의 블록들을 가짐)를 갖는 플래시 메모리에서, 각 R-블록은 총 N/2개 R-블록들에 대해 플래시 다이 각각으로부터의 i번째 및 (i+1)번째 블록이다. 또 다른 예에 있어서, 복수의 듀얼 평면 디바이스들을 갖는 플래시 메모리에서, 각 R-블록은 듀얼 평면 디바이스들 각각으로부터의 i번째 짝수 블록 및 i번째 홀수 블록이다.
가상 드라이브 제조 모델
도 6은 가상 SSD 제조 모델과 같은 가상 드라이브 제조 모델의 실시예의 선택된 상세사항들의 흐름도를 예시한다. 동작들은 3개의 별개의 비즈니스 엔티티들: 설계 벤더(610)(예를 들어, 집적 회로 설계 회사), 제조자(620)(예를 들어, 계약 제조 회사), 및 시스템 벤더(630)(예를 들어, OEM)에 의해 수행되는 것으로 예시되어 있다. 다양한 실시예들에서, 별개의 비즈니스 엔티티들은 별개의 주식회사들이지만, 다른 실시예들에서는, 별개의 비즈니스 엔티티들 중 하나 또는 그 초과의 것은 동일한 주식회사의 일부이다. 다양한 실시예들에서, 별개의 비즈니스 엔티티들 중 하나 또는 그 초과의 것은, 주식회사, 조합(partnership), 비법인 기업(proprietorship), 운영중인 기업으로서 공식적으로 또는 비공식적으로 운영하는 하나 또는 그 초과의 개인들, 및 임의의 특정한 기업 또는 조직에서의 회원없이 운영하는 하나 또는 그 초과의 개인들 중 임의의 하나 또는 그 초과의 것이다. 다양한 실시예들에서, 별개의 비즈니스 엔티티들 중 임의의 하나 또는 그 초과는 영리(for-profit) 엔티티, 비영리 엔티티, 교육 엔티티, 및 정부 엔티티 중 임의의 하나 또는 그 초과의 것이다.
개념적으로, 설계 벤더는 리스트로부터 선택된 하나 또는 그 초과의 플래시 메모리 디바이스들(및/또는 다른 구성요소들) 및 SSD 제어기를 사용하여 SSD를 제조하기 위해 권장되는 및/또는 지원되는 플래시 메모리 디바이스들(및/또는 다른 디바이스들/컴포넌트들과 같은 다른 구성요소들)의 연관된 리스트 및 레퍼런스 설계에 따라, SSD 제어기 및 연관된 펌웨어를 시스템 벤더에게 제공한다. 그 후, 시스템 벤더는 SSD 제어기, 펌웨어, 레퍼런스 설계, 리스트, 및/또는 그것의 하나 또는 그 초과의 속성들(예를 들어, 가격, 가용성, 내구성, 및/또는 성능)에 적어도 부분적으로 기초하여, 이들로부터 SSD들을 제조하기 위한 구성요소들을 선택한다. 이러한 선택은 리스트 중에서 하나 또는 그 초과의 플래시 메모리 디바이스들을 선택하는 것을 포함한다. 시스템 벤더는 SSD들의 하나 또는 그 초과의 시제품들을 제조하기 위한 구성요소들을 추가로 구입한다. 다양한 실시예들에서, 시제품들의 상이한 시제품들은 예를 들어, 선택된 메모리 디바이스들의 비교를 가능하게 하기 위해, 선택된 플래시 메모리 디바이스들 중 상이한 플래시 메모리 디바이스들을 사용하여 만들어진다. (시스템 벤더로부터의 지시에 따라 행동하는 계약 제조자와 같은) 제조자가 시제품 SSD들을 만든다. 설계 벤더는 시제품 SSD들을 평가하고, 평가의 결과들 중 모두 또는 임의의 부분들이 시스템 벤더에게 제공된다.
제공된 결과들의 일부에 적어도 부분적으로 기초하여, 시스템 벤더는 직접적으로 또는 (시제품 SSD들을 만드는 계약 제조자와 같은) 계약 제조자를 통해, 또는 양자 모두를 통해 SSD들을 대량 제조한다. 시스템 벤더는 대량 제조에 사용된 구성요소들(예를 들어, 리스트에 의해 식별되는 설계 벤더 및/또는 플래시 메모리 디바이스들로부터 그리고 옵션으로는 하나 또는 그 초과의 플래시 메모리 벤더들로부터의 SSD 제어기들)을 구입(또는 이것의 구입을 지시)한다. 시스템 벤더는 대량 제조된 SSD들을 (예를 들어, 서버와 같은 기업 애플리케이션, 데이터 센터와 같은 클라우드 애플리케이션, 러기다이즈드(ruggedized) 컴퓨터와 같은 산업 애플리케이션, 및/또는 PC와 같은 클라이언트 애플리케이션에서 사용을 위해) 하나 또는 그 초과의 소비자들에게 판매한다. 따라서, 시스템 벤더는 플래시 메모리 디바이스들(및/또는 다른 구성요소들) 자체의 벤더들에 대한 마진 이외에, 대량 제조된 SSD들에 만들어진 플래시 메모리 디바이스들(및/또는 다른 구성요소들)에 대한 마진을 지불하지 않고 대량 제조된 SSD를 판매하도록 인에이블된다.
일부 실시예들 및/또는 사용 시나리오들에서, 시스템 벤더는 옵션으로는, 설계 벤더에 의해 시스템 벤더에게 제공된 트레이닝 및/또는 툴들에 전체적으로 또는 부분적으로 기초하여, 적어도 소비자들과의 상호작용들에 관하여 RMA 및/또는 서비스 동작들을 수행한다. RMA 및/또는 서비스는 다양한 실시예들에 따라, 시스템 벤더, 설계 벤더, 또는 양자 모두에 의해 수행된 고장 분석 동작들에 정보를 제공한다. 대량 제조된 SSD들 중 모두 또는 임의의 부분들의 재작업은 예를 들어, 계약 제조자에 의해 수행된다.
예시적인 시스템 벤더들은 소위 "클라우드 제공자들"(예를 들어, Google, Facebook, 및 Amazon), 데이터 센터 구현자들/사용자들(예를 들어, 은행들, 제약 회사들, 및 금융 서비스 회사들), 및 SSD들을 포함하는 시스템들의 OEM들을 포함한다. 다른 예시적인 시스템 벤더들은 일부 계약 제조자들 및/또는 일부 원래 설계 제조자들과 같은 일부 타입들의 제조자들을 포함한다.
더욱 구체적으로, 도면에 의해 예시된 바와 같이, 설계 벤더는 SSD 제어기에 의한 실행을 위해 SSD 제어기 및 펌웨어를 구현한다(제어기 & 펌웨어(611)). 설계 벤더는 SSD 제어기 및 펌웨어에 적어도 부분적으로 기초하여, 레퍼런스 설계들 각각과 사용을 위해 적어도 하나의 연관된 레퍼런스 설계 및 권장된 및/또는 지원된 플래시 메모리 디바이스들의 리스트를 생성한다(레퍼런스 설계 & 플래시 권장(612)). 설계 벤더는 예를 들어, SSD 제어기, 펌웨어, 적어도 하나의 레퍼런스 설계, 및 리스트의 플래시 메모리 디바이스들 중 하나 또는 그 초과의 것을 사용하여 하나 또는 그 초과의 SSD들의 문서(documentation) 및 엔지니어링/디버그 샘플들을 생성한다. 문서(예를 들어, 마켓팅 콜래트럴 및/또는 엔지니어링 정보)는 리스트의 플래시 메모리 디바이스들 및 샘플 SSD들의 평가/특징(예를 들어, 가격, 성능, 및/또는 특성) 중 임의의 하나 또는 그 초과의 것, 뿐만 아니라 설계 벤더 내부의 다른(otherwise) 설계 문서들(예를 들어, SSD 제어기, 펌웨어, 및/또는 적어도 하나의 레퍼런스 설계를 설명하는 구조적 문서들)에 전체적으로 또는 부분적으로 기초한다.
설계 벤더는 문서, 샘플 SSD들 중 하나 또는 그 초과의 것, 적어도 하나의 레퍼런스 설계, 및/또는 (권장된 및/또는 지원된 플래시 메모리 디바이스들의) 리스트의 모두 또는 임의의 부분들을 시스템 벤더에게 제공한다. 설계 벤더에 의해 시스템 벤더에게 제공된 상기 언급한 아이템들에 적어도 부분적으로 기초하여, 시스템 벤더는 SSD의 대량 제조에 필요한 구성요소들(또는 대안적으로 시제품 구성을 위해 충분한 구성요소들의 초기 양들)을 선택하고 구입하며, 대량 제조된 SSD에 대한 설계를 승인한다(BOM 선택, BOM 구입, 및 설계 승인(632)). 이러한 선택은 리스트의 플래시 메모리 디바이스들로부터 하나 또는 그 초과의 플래시 메모리 디바이스들을 선택하는 것을 포함한다. 구입은 SSD들의 시제품 구성 및/또는 대량 생산을 위해 충분한 양들의 선택된 플래시 메모리 디바이스들을 구입하는 것을 포함한다. 대량 제조된 SSD는 적어도 하나의 레퍼런스 설계에 따르고, SSD 제어기, 펌웨어(또는 옵션으로 및/또는 선택적으로 기업 버전, 클라우드 버전, 산업 버전, 및/또는 클라이언트 버전과 같은 시스템 벤더에 대해 커스터마이징된 펌웨어의 하나 또는 그 초과의 버전들), 및 선택된 플래시 메모리 디바이스들을 사용한다. 일부 실시예들에서, 펌웨어(또는 펌웨어의 커스터마이징된 버전들)는 SSD 제어기로 제조된 SSD들에서 사용을 위해 시스템 벤더에게 라이센싱된다.
후속하여, 시스템 벤더(630)는 적어도 하나의 레퍼런스 설계에 따르고, SSD 제어기, 펌웨어, 및 리스트의 선택된 플래시 메모리 디바이스들을 포함하는 하나 또는 그 초과의 시제품 SSD들을 구성할 것을 제조자(620)에게 지시한다(시제품 제조(623)). 시제품 SSD들은 시스템 벤더가 구입한 적어도 일부의 구성요소들(예를 들어, SSD 제어기 및 선택된 플래시 메모리 디바이스들)을 사용하여 구성된다. 일부 실시예들 및/또는 사용 시나리오들(미도시)에서, 시스템 벤더는 시제품 SSD들을 구성한다.
그 후, 설계 벤더(610)는 예를 들어, 하드웨어 검증 및 특징화(하드웨어 검증/특징화(614)) 및/또는 신뢰도 및 검증 테스트들(RDT, EVT, & DVT(615))을 통해 시제품 SSD들을 평가하고 그리고/또는 특징화한다. 하드웨어 검증 및 특징화는 상호운용성(interoperability) 및/또는 컴플라이언스 체킹(compliance checking)을 옵션으로 포함한다. 예를 들어, 시제품 SSD들은 호스트 인터페이스 프로토콜 및/또는 전기적 시그널링 표준에 대한 컴플라이언스를 위해 검증된다. 다양한 실시예들에 따르면, 설계 벤더는 펌웨어, 시스템 벤더에 대해 커스터마이징된 펌웨어의 하나 또는 그 초과의 버전들, 또는 이들의 임의의 조합을 사용하여 평가 및/또는 특징화를 수행한다. 설계 벤더는 검증/특징화의 하나 또는 그 초과의 결과들을 시스템 벤더에게 제공한다. 시스템 벤더는 제공된 결과들 중 적어도 일부를 검사하고 시제품 SSD들이 대량 제조를 위해 충분한 품질이라는 것을 결정한다(시스템 품질 보증(634)). 설계 벤더는 제조자에 의해 수행되는 것(대량 제조(625)) 및/또는 시스템 벤더에 의해 수행되는 것(대량 제조(635))과 같은, 대량 생산(대량 제조(655))에 신뢰도 및 검증 테스트들의 하나 또는 그 초과의 결과들을 제공한다. 시스템 벤더는 (제조자, 시스템 벤더, 또는 양자 모두에 의해 수행되든 아니든) 시스템 품질 보증의 결과들을 대량 생산에 제공한다.
일부 실시예들에서, 대량 제조된 SSD들의 대량 제조를 가능하게 하기 위해, 설계 벤더(610)는 (대량 제조(625)로서 제조자(620)에 의해 수행되는지 또는 대량 제조(635)로서 시스템 벤더(630)에 의해 수행되는지 간에, 대량 제조(655)와 같은) 대량 생산에서 옵션적 사용을 위해 제조 소프트웨어 툴(제조 소프트웨어 툴(616))을 제공한다. 다양한 실시예들 및/또는 사용 시나리오들에서, 제조 소프트웨어 툴은, 선택된 설계 벤더 동작들(618)로서 종합적으로 예시된 제어기 & 펌웨어(611), 레퍼런스 설계 & 플래시 권장(612), 하드웨어 검증/특징화(614), 및 RDT, EVT, & DVT(615) 중 임의의 하나 또는 그 초과의 것으로부터의 정보에 기초한다. 예를 들어, 일부 실시예들에서, 제조 소프트웨어 툴은 복수의 대량 생산된 SSD들에 커플링되고, 실질적으로, 전체적으로, 또는 부분적으로 병렬로 복수의 대량 생산된 SSD들 모두와 통신하도록, 예컨대 이들을 구성하도록 인에이블된 컴퓨터 시스템상에서 구동하는 프로그램이다.
다양한 실시예들 및/또는 사용 시나리오들에 따르면, 제조 소프트웨어 툴은, 초기에, 대량 생산된 SSD들 중 하나를 구성하는 것; 대량 제조된 SSD들 중 하나상에 펌웨어를 다운로딩하는 것; 대량 제조된 SSD들 중 하나상에서 MST 또는 다른 진단 기능들의 수행하는 것; 대량 제조된 SSD들 중 하나에 대해 각각의 고유 암호화 키의 할당의 수행하는 것; (이더넷 MAC 어드레스와 같은) 대량 제조된 SSD들 중 하나에 다른 고유 ID들을 할당하는 것; (제조 리코드 및/또는 제조 통계들과 같은) 데이터베이스에 정보의 리코딩하는 것; (예컨대, 인터넷을 통해) 고유 암호화 키의 할당의 일부로서 그리고/또는 키 위탁(key escrow)을 위해 설계 벤더의 서버들과 통신하는 것; 및 대량 제조의 일부로서 옵션으로 및/또는 선택적으로 사용된 다른 기능들 중 하나 또는 그 초과의 것을 인에이블하고 그리고/또는 수행한다. 일부 실시예들에서, 제조 소프트웨어 툴은 (시제품 제조(623)와 같은) 시제품 구성을 위해 사용된다. 추가 설명에 대해서는 본 명세서 다른 곳에서의 "제조 소프트웨어 툴"을 참조하라.
그 후, 시스템 벤더는 대량 제조된 SSD들 중 하나 또는 그 초과의 것을 판매한다. 판매된 대량 제조된 SSD들 중 일부는 예를 들어, 인지된 결함들, 고장들, 장애들, 결점들, 및/또는 결핍들로 인해 소비자들에 의해 리턴된다. 시스템 벤더는 소비자들로부터의 판매된 SSD들 중 리턴된 SSD들을 수용하고, 인커밍 검사 및/또는 서비스를 수행한다(RMA/서비스(636)). 예를 들어, 검사 및/또는 서비스의 결과들에 의존하여, 리턴된 SSD들은 설계 벤더에 의해 수행되는 것(고장 분석(617)) 및/또는 시스템 벤더에 의해 수행되는 것(고장 분석(637))과 같이 고장 분석을 위해 제공된다. 일부 환경들에서, 제조자(및/또는 구체적으로 예시하지 않은 시스템 벤더)는 고장 분석된 SSD들의 일부의 수리, 수정, 및/또는 고침을 시도한다(재작업(627)). 그 후, 시스템 벤더는 고장 분석된 SSD들(미도시) 중 성공적으로 재작업된 SSD들을 옵션으로 판매한다. 일부 실시예들에서, 설계 벤더는 고장 분석 및/또는 리턴된 SSD들이 고장 분석 이후에 보내질 곳(예를 들어, 설계 벤더, 제조자, 또는 시스템 벤더)의 결정을 돕기 위해 시스템 벤더에게 하나 또는 그 초과의 소프트웨어 툴들을 공급한다.
다양한 실시예들 및/또는 사용 시나리오들에서, 설계 벤더는 SSD 제어기의 인스턴스들을 시스템 벤더에게 판매하고, 펌웨어의 사용을 시스템 벤더에게 라이센싱하고, 시스템 벤더에 대해 설계 벤더에 의해 커스터마이징된 펌웨어의 사용을 생성하고 라이센싱하거나, 이들의 임의의 조합을 행한다.
일부 라이센싱 기반 실시예들에서, SSD 제조(예를 들어, 시제품 또는 대량)은 설계 벤더가 펌웨어 라이센싱, 펌웨어 스탬핑, 및/또는 펌웨어 추출과 같은 다양한 능력들을 시스템 벤더에게 라이센싱하는 것을 통해 적어도 부분적으로 인에이블된다. 라이센싱 기반 실시예들 중 일부에서, (제조 소프트웨어 툴(616)과 같은) 제조 소프트웨어 툴의 사용은 시스템 벤더에 대한 설계 벤더에 의한 라이센싱의 조건(terms)에 의해 요구된다. 제조 소프트웨어 툴의 사용을 요구하는 라이센싱 기반 실시예들 중 일부에서, 펌웨어 라이센싱, 펌웨어 스탬핑, 및/또는 펌웨어 추출 중 하나 또는 그 초과의 것의 성능은 제조 소프트웨어 툴을 통해 (예를 들어, 시스템 벤더에 대한 설계 벤더에 의한 라이센싱의 조건을 통해) 이루어지도록 요구된다. 다양한 실시예들에 따르면, 설계 벤더(610)에 의해 제공되는 바와 같은 제조 소프트웨어 툴(616)의 사용을 요구하는 것은, 설계 벤더(610)로 하여금, 예를 들어, 인터넷을 통해 설계 벤더(610)에게 통계들 및/또는 다른 정보를 리포팅하는 제조 소프트웨어 툴(616)에 의해 생산을 모니터링하고 그리고/또는 SSD들에 대한 펌웨어 또는 다른 라이센스들을 트랙킹하는 것; 제조된 SSD들에 대한 키 위탁과 같은 기능들 을 수행하는 것; 및 그 밖의(other) 모니터링하는 것, 트랙킹하는 것, 라이센싱하는 것, 또는 위탁 기능들을 수행하는 것, 중 하나 또는 그 초과의 것을 가능하게 할 수 있게 한다.
도면에 구체적으로 예시하지는 않았지만, 일부 실시예들 및/또는 사용 시나리오들에서, 예시된 동작들 중 일부는 예시된 동작들 중 다른 것들에 피드백을 제공한다. 예를 들어, 하드웨어 검증/특징화(614) 및/또는 RDT, EVT, & DVT(615)의 결과들 중 일부 또는 모두는 제어기 & 펌웨어(611) 및/또는 레퍼런스 설계 & 플래시 권장(612)으로 피드백된다. 다른 예에 있어서, 대량 제조(625) 및/또는 대량 제조(635)로부터 획득된 정보는 제어기 & 펌웨어(611), 레퍼런스 설계 & 플래시 권장(612), 및 BOM 선택, BOM 구입, 및 설계 승인(632) 중 임의의 하나 또는 그 초과의 것으로 피드백된다. 또 다른 예에 있어서, RMA/서비스(636), 고장 분석(617), 고장 분석(637), 및/또는 재작업(627) 중 임의의 하나 또는 그 초과의 것으로부터 수집된 데이터는 제어기 & 펌웨어(611), 레퍼런스 설계 & 플래시 권장(612), 및 BOM 선택, BOM 구입, 및 설계 승인(632), 대량 제조(625), 및 대량 제조(635) 중 임의의 하나 또는 그 초과의 것으로 피드백된다.
일부 실시예들 및/또는 사용 시나리오들에서, 도 6에 예시된 동작들은 복수의 시스템 벤더들(및 옵션으로는 대응하는 복수의 제조자들)과 동일한 설계 벤더에 의해 개념적으로 반복된다. 따라서, 설계 벤더는 가상 드라이브 제조 능력을 복수의 시스템 벤더들에게 제공한다.
다양한 실시예들 및/또는 사용 시나리오들에서, 설계 벤더에 의해 구현된 SSD 제어기 및/또는 펌웨어(제어기 & 펌웨어(611))는 복수의 플래시 메모리 디바이스 벤더들로부터의 플래시 메모리 디바이스들과 동작하도록 인에이블된다. 예를 들어, SSD 제어기 및/또는 펌웨어는 가변 판독, 기록(프로그램), 및/또는 소거 기술들, 파라미터들, 및/또는 특징들을 갖는 플래시 메모리 디바이스들과 동작하도록 인에이블된다. 이 예에 계속하여, SSD 제어기는 각 플래시 다이, 그것의 블록, 그것의 페이지, 또는 그것의 임의의 부분들 또는 서브-부분에 대한 동작들(예를 들어, 판독들, 기록들, 및/또는 소거들)의 수 또는 동작들의 특징들(재시도들, 소프트 에러들, 및/또는 하드 에러들의 수)을 트랙킹하기 위해 (예를 들어, 펌웨어 및/또는 다양한 하드웨어 상태 머신들에 의해) 사용된 메모리(예를 들어, 제어 RAM(125)의 스케일링된 데이터 구조들(126))를 포함한다. SSD 제어기는 그 SSD 제어기가 관리하는 특정한 플래시 메모리 디바이스들의 트랙킹된 동작들의 수, 트랙킹된 동작들의 특징들, 및/또는 특정 특징들에 따라 판독, 기록, 및/또는 소거 동작들을 선택적으로 및/또는 옵션으로 변화시킨다. 일부 환경들에서, SSD 제어기에 의한 판독, 기록, 및/또는 소거 동작들의 동작에서의 변동은 복수의 플래시 메모리 벤더들로부터의 다양한 플래시 메모리 디바이스들로 SSD 제어기의 동작을 인에이블하고, 다양한 플래시 메모리 디바이스들은 권장된 및/또는 지원된 플래시 메모리 디바이스들의 리스트에 포함된다.
다른 예에 있어서, SSD 제어기 및/또는 펌웨어는 제로 또는 그 초과의 패리티 코드들, 제로 또는 그 초과의 RS 코드들, 제로 또는 그 초과의 BCH 코드들, 제로 또는 그 초과의 비터비 또는 다른 트렐리스 코드들, 및 제로 또는 그 초과의 LDPC 코드들 중 하나 또는 그 초과의 것과 같은, 다양한 에러 복구 코드들에 따라 플래시 메모리 디바이스들을 관리하도록 인에이블된다. 이 예에 계속하여, SSD 제어기 및/또는 펌웨어는 제 1 코드 레이트의 다양한 BCH 코드들에 따른 제 1 플래시 메모리 벤더로부터의 선택된 플래시 메모리 디바이스들 뿐만 아니라 제 2 코드 레이트의 다양한 BCH 코드들에 따른 제 2 플래시 메모리 벤더로부터의 선택된 플래시 메모리 디바이스들을 관리하도록 인에이블된다. 또한, SSD 제어기 및/또는 펌웨어는 다양한 패리티 코드들에 따른 제 3 플래시 메모리 벤더로부터의 제 1 카테고리의 플래시 메모리 디바이스들, 및 다양한 LDPC 코드들에 따른 제 3 플래시 메모리 벤더로부터의 제 2 카테고리의 플래시 메모리 디바이스들을 관리하도록 인에이블된다. 권장된 및/또는 지원된 플래시 메모리 디바이스들의 리스트는 제 1 플래시 메모리 벤더로부터의 선택된 플래시 메모리 디바이스들, 제 2 플래시 메모리 벤더로부터의 선택된 플래시 메모리 디바이스들, 및 제 3 플래시 메모리 벤더로부터의 제 1 및 제 2 카테고리들의 플래시 메모리 디바이스들 중 하나 또는 그 초과의 것을 옵션으로 포함한다.
다양한 실시예들 및/또는 사용 시나리오들에서, SSD 제어기 및/또는 펌웨어는 512, 516, 520, 524, 528, 532, 536, 540, 1024, 1032, 2048, 2056, 4096, 4100, 4104, 4108, 4112, 4116, 4160, 4164, 4172, 4192, 4196, 4204, 4224, 4228, 4236, 및 4256 바이트 중 임의의 하나 또는 그 초과의 것과 같은, 다양한 사이즈의 양자들의 호스트 LB들과 동작하도록 인에이블된다. 임의의 상술한 LB 사이즈들을 이용한 동작은 각각의 다양한 예상 고객들(prospective customers)을 타겟으로 하는 다양한 SSD 제품들에서 SSD 제어기 및/또는 펌웨어의 사용을 인에이블한다. 예를 들어, 시스템 벤더는 상술한 LB 사이즈들 중 임의의 2개 또는 그 초과의 것과 동작하도록 인에이블된 하나 또는 그 초과의 SSD 제품들을 서버(예를 들어, 스토리지 서버) 벤더인 기업 고객에게 또는 데이터 센터 벤더인 클라우드 고객에게 제공하고, 그리고 512-바이트 LB들로 동작하도록 인에이블된 하나 또는 그 초과의 SSD 제품들을 러기다이즈드(ruggedized) 컴퓨터 벤더인 산업 고객에게 또는 PC(예를 들어, 랩탑) 벤더인 클라이언트 고객에게 제공한다.
다양한 실시예들 및/또는 사용 시나리오들에서, SSD 제어기 및/또는 펌웨어는 가변 용량들의 SSD를 구현하도록 인에이블되어, SSD 제품들이 각각의 다양한 예상 고객들을 타겟으로 할 수 있게 한다. 예를 들어, 시스템 벤더는 비교적 큰 용량의 SSD를 서버(예를 들어, 스토리지 서버) 벤더인 기업 고객에게 또는 데이터 센터 벤더인 클라우드 고객에게 제공하고, 그리고 비교적 작은 용량 SSD를 러기다이즈드 컴퓨터 벤더인 산업 고객에게 또는 PC(예를 들어, 랩탑) 벤더인 클라이언트 고객에게 제공한다. 다른 예에 있어서, 시스템 벤더는 2개의 SSD들을 기업 및/또는 클라우드 고객에게 제공하고, SSD들 중 제 1 SSD는 비교적 더 큰 용량을 갖고 비교적 더 느린 랜덤 액세스들이 가능하며, SSD들 중 제 2 SSD는 비교적 더 작은 용량을 갖고 비교적 더 고속의 랜덤 액세스들이 가능하다. 일부 실시예들에서, SSD 제어기 및/또는 펌웨어는 호스트 LBA들의 NVM 위치들에 대한 2-레벨 매핑을 통해 적어도 부분적으로 가변 용량들의 SSD들을 구현하도록 인에이블된다. 2-레벨 매핑은 예를 들어, SLM 페이지 당 SLM 엔트리들의 수를 나타내는 프로그램가능한 값에 의한 LBA의 분할을 통해 부분적으로 구현되어, 몫과 나머지를 발생시킨다. 몫은 FLM 엔트리를 선택하고, 나머지는 선택된 FLM 엔트리에 의해 선택된 SLM 페이지의 특정한 엔트리를 선택한다(추가의 설명을 위해 본 명세서 다른 부분에서의 "LBA - NVM 위치 매핑"을 참조).
다양한 실시예들 및/또는 사용 시나리오들에서, SSD 제어기 및/또는 펌웨어는 연장불가 온도 범위에 걸친 신뢰가능한 동작 및 연장 온도 범위에 걸친 동작과 같은 가변 온도 능력들의 SSD들을 구현하도록 인에이블되어, SSD 제품들이 다양한 온도 범위들을 타겟으로 할 수 있게 한다. 예를 들어, 시스템 벤더는 연장불가 온도 범위의 SSD들을 기업, 클라우드, 및/또는 클라이언트 고객에게 제공하고, 연장 온도 범위의 SSD들을 산업 고객에게 제공한다. 일부 실시예들에서, SSD 제어기 및/또는 펌웨어는 가변 온도 능력들의 비휘발성 메모리 디바이스와의 호환가능한 동작을 통해 적어도 부분적으로 가변 온도 능력들의 SSD들을 구현하도록 인에이블된다.
다양한 실시예들 및/또는 사용 시나리오들에서, SSD 제어기 및/또는 펌웨어는 성능에 대해 가변 신뢰성, 내구성, 및/또는 예측가능성의 SSD들을 구현하도록 인에이블되어, SSD 제품들이 성능 특징 세트들에 대해 가변 신뢰성, 내구성, 및/또는 예측가능성을 타겟으로 할 수 있게 한다. 예를 들어, 시스템 벤더는 비교적 더 높은 신뢰성 및 내구성의 SSD들을 기업, 클라우드, 및/또는 산업 고객에게 제공하고, 비교적 더 낮은 신뢰성 및 내구성의 SSD들을 클라이언트 고객에게 제공한다. 다른 예에 있어서, 시스템 벤더는 비교적 더욱 예측가능한 성능을 갖는 SSD들을 클라우드 고객에게 제공하고, 비교적 덜 예측가능한 성능을 갖는 SSD들을 기업, 산업 및/또는 클라이언트 고객에게 제공한다. 일부 실시예들에서, SSD 제어기 및/또는 펌웨어는 가변 신뢰성 및/또는 내구성의 비휘발성 메모리 디바이스들과의 동작을 통해 적어도 부분적으로 가변 신뢰성 및/또는 내구성의 SSD들을 구현하도록 인에이블된다. 일부 실시예들에서, SSD 제어기 및/또는 펌웨어는 가변 신뢰성 및/또는 내구성의 모드들에서 동일한 비휘발성 메모리 디바이스들을 동작시키는 것(예를 들어, SLC 모드 또는 MLC 모드에서 MLC 디바이스들을 동작시키는 것)을 통해 적어도 부분적으로 가변 신뢰성 및/또는 내구성의 SSD들을 구현하도록 인에이블된다. 일부 실시예들에서, SSD 제어기 및/또는 펌웨어는 오버프로비저닝(overprovisioning)의 양의 변화를 통해 적어도 부분적으로 성능에서의 가변 예측가능성의 SSD들을 구현하도록 인에이블된다(예를 들어, 일부 사용 시나리오들에서, 더 높은 오버프로비저닝이 성능의 더 높은 예측가능성을 가능하게 한다).
따라서, 프로그램가능한 값의 분할 및 변화를 사용하는 것은, (2-레벨 맵의 제 1 레벨의 스토리지 및/또는 제 2 레벨 맵 페이지들의 캐시의 스토리지과 같은) 2-레벨 맵의 스토리지에 할당된 고정 사이즈의 스토리지에 대해, 비교적 더 큰 용량의 SSD가 비교적 더 작은 용량의 SSD 보다 비교적 더 큰 입도로 매핑되는 것을 가능하게 한다. 일부 실시예들 및/또는 사용 시나리오들에서, 매핑의 입도가 감소할수록, 이용가능한 동시 활성 맵 엔트리들의 수는 증가한다. 일부 환경들에서, 동시 활성 맵 엔트리들의 수가 증가할수록, 효율적으로 프로세싱되는 독립적인 순차적 스트림들의 수 및/또는 랜덤 액세스들의 성능은 증가한다.
다양한 실시예들 및/또는 사용 시나리오들에서, 설계 벤더에 의해 구현된 SSD 제어기(제어기 & 펌웨어(611))는 도 1a의 SSD 제어기(100)와 동일하거나 그것의 변형이다. 다양한 실시예들 및/또는 사용 시나리오들에서, 설계 벤더에 의해 구현된 펌웨어(제어기 & 펌웨어(611))는 도 1b의 펌웨어(106)와 동일하거나 그것의 변형이다. 다양한 실시예들 및/또는 사용 시나리오들에서, 설계 벤더에 의해 생산된 적어도 하나의 레퍼런스 설계(레퍼런스 설계 & 플래시 권장(612))는 예를 들어, 도 1b에 예시된 임의의 실시예들 및/또는 맥락들에서 사용된 바와 같이, 도 1a의 SSD(101)와 동일하거나 그것의 변형이다. 다양한 실시예들 및/또는 사용 시나리오들에서, 설계 벤더에 의해 생산된 권장된 및/또는 지원된 플래시 메모리 디바이스들의 리스트(레퍼런스 설계 & 플래시 권장(612))는 도 1a에 예시된 바와 같은, 플래시 디바이스(192), 플래시 다이(194), 및 NVM(199) 중 임의의 하나 또는 그 초과의 것에 관련된다.
도 6의 상술한 설명은 시스템 벤더에 의해 수행된 BOM 선택에 관하여 설계 벤더에 의해 특정하게 권장되고 그리고/또는 지원되는 엘리먼트들로서 플래시 메모리 디바이스들에 집중한다. 다양한 다른 실시예들에서, 전원들, 온도 센서들, 케이싱들, 인쇄 회로 기판들, 및 패시브 컴포넌트들을 포함하는 다른 디바이스들/컴포넌트들과 같은 다양한 다른(또는 추가의) 구성요소들이 시스템 벤더에 의해 수행된 BOM 선택에 관하여 설계 벤더에 의해 특정하게 권장되고 그리고/또는 지원된다. 예를 들어, 제 1 온도 센서 벤더로부터의 제 1 및 제 2 온도 센서들은 설계 벤더에 의해 권장되고 그리고/또는 지원되지만, 제 2 온도 센서 벤더로부터의 제 3 온도 센서는 (예를 들어, 펌웨어에서 지원의 부족으로 인해) 설계 벤더에 의해 권장되지 않고 지원되지 않는다. 따라서, 시스템 벤더는 SSD의 시제품화 또는 제조를 위한 구성요소들을 선택할 때, 제 3 온도 센서에 대해서는 아니지만, 제 1 및 제 2 온도 센서들 중에서의 선택에서는 자유롭다.
SSD 대량 제조 및 시제품 구성
도 7a는 가상 드라이브 제조 모델에 따른 SSD들의 (대량) 제조(또는 시제품 구성)의 실시예의 선택된 상세사항들의 개념 표현을 예시한다. 예시된 엘리먼트들은 2개의 디커플링된 부분들로 그룹화되어, 옵션적으로 엔지니어링 셋업 동작들이 공장 동작과 개별적으로 수행될 수 있게 한다. 제 1 부분(엔지니어링(730A))은 예를 들어, 생산 운전들(production runs)을 셋업하기 위해, 동일한 모델의 SSD의 일련의 생산 운전들에 대해 1회 또는 단일 생산 운전마다 1회 수행된다. 제 2 부분(공장(740F))은, 각각의 개별 SSD의 다양한 제조 양상들을 완결하기 위해, (시제품 구성용 같은) 단일 생산 운전 또는 (대량 제조용과 같은) 동일한 모델의 SSD의 일련의 생산 운전들 중 하나이든지 간에, 각 생산 운전에 대해 수행된다. 다양한 실시예들 및/또는 사용 시나리오들에 따르면, 엔지니어링(730A)의 엘리먼트들로서 도시된 동작들 중 모두 또는 임의의 부분들은 도 6의 시스템 벤더(630) 및 도 6의 제조자(620) 중 하나 또는 그 초과의 것에 의해 수행된다.
엔지니어링(730A)의 엘리먼트들은 하나 또는 그 초과의 SSD들의 제조를 위해 때때로 "스탬프된 펌웨어"(제조 펌웨어 패키지(721))로서 칭하는 펌웨어 이미지의 생산을 포함한다. 펌웨어 이미지 제조는 애플리케이션 프로그램(패키지 관리자(711))을 통해 라이센스 기술(license description)(라이센스 파일(701)) 및 분배된 펌웨어 이미지(분배 펌웨어 패키지(703))에 따라 생산된다. 패키지 관리자는 라이센스 파일을 사용하여 분배 펌웨어 패키지로부터 펌웨어를 추출하고, (제조 펌웨어 패키지를 암호화하고, 보안하고, 개인화하고 그리고/또는 커스터마이징하는 것과 같은) 하나 또는 그 초과의 스탬핑 기능들을 수행하여, 제조 펌웨어 패키지를 생산한다. 패키지 관리자는 라이센스 파일에서 식별될 때 모든 또는 임의의 이용가능한 라이센싱된 드라이브 구성들(예를 들어, 설계 벤더가 시스템 벤더에 관하여 제공하고 그리고/또는 지원하는 것을 동의한 구성들)에 대한 드라이브 구성 템플릿들을 옵션으로 생산한다. 일부 실시예들에서, 패키지 관리자는 GUI를 통해 상호작용하도록 인에이블된다. 다양한 실시예들 및/또는 사용 시나리오들에서, 라이센스 파일, 분배 펌웨어 패키지, 및 패키지 관리자 중 임의의 하나 또는 그 초과의 것은 도 6의 설계 벤더(443)에 의해 제공된다.
엔지니어링(730A)의 엘리먼트들은 공장(740F)의 엘리먼트들에 의해 사용된 제조 소프트웨어를 제어하기 위한 하나 또는 그 초과의 커맨드 라인 입력들 및/또는 파일들(드라이브 구성 및 세팅 파일(722))의 생산을 더 포함한다. 드라이브 구성 및 세팅 파일은 애플리케이션 프로그램(구성 관리자(712))을 통해 드라이브 구성 및/또는 파라미터들(시스템 벤더 소망 드라이브 세팅들(704))의 기술(description)에 따라 생산된다. 구성 관리자는 옵션으로, 모든 SSD 세팅들 및/또는 다운로드 옵션들을 관리하는 중앙 저장소로서 동작가능하다. 일부 실시예들에서, 구성 관리자는 드라이브 세팅들 및 펌웨어 다운로드 흐름 옵션들에 대해 제어 패널과 GUI로서 동작하도록 인에이블된다. 일부 실시예들 및/또는 사용 시나리오들에서, 시스템 벤더 소망 드라이브 세팅들은 도 6의 시스템 벤더(630)에 의해 제공되고, 구성 관리자는 도 6의 설계 벤더(610)에 의해 제공된다.
제조 펌웨어 패키지 및 드라이브 구성 및 세팅 파일은 제조 소프트웨어 툴(MT)(751)에 의한 사용을 위해 엔지니어링(730A)으로터 공장(740F)으로 패스된다. 제조 툴은 펌웨어를 갖지 않는 SSD, 또는 대안적으로는 대체/업그레이드될 펌웨어를 갖는 SSD(프래쉬 SSD(750F))로 펌웨어를 다운로딩하도록 인에이블된다. 이에 의해, 프래쉬 SSD는 새롭게 다운로딩된 펌웨어(펌웨어 로딩된 SSD(750L))를 갖는 SSD로 변환된다. 다운로딩된 펌웨어는 제조 펌웨어 패키지, 드라이브 구성 및 세팅 파일, 및 고유 식별 정보(시리얼 넘버, 월드 와이드 네임(WWN)(760), 진단 언락 키, 및/또는 벤더 아이덴티티 데이터)에 기초한다.
일부 실시예들 및/또는 사용 시나리오들에서, 펌웨어 다운로딩은 예를 들어, 고유 시리얼 넘버 및/또는 고유 WWN의 세팅을 통한 SSD의 제품화(productizing)를 포함한다. 일부 실시예들 및/또는 사용 시나리오들에서, 제조 소프트웨어 툴은 SSD에 대해 고유한 공중 암호화 키와 같은 암호화 키를 제공 및/또는 위탁하도록 인에이블된다. 추가 실시예들 및/또는 사용 시나리오들에서, 제공 및/또는 위탁은 설계 벤더에 의해 동작된 서버들과 통신하는 것을 포함한다. 일부 실시예들 및/또는 사용 시나리오들에서, 제조 소프트웨어 툴은 하나 또는 그 초과의 공장 테스트들의 수행 이후에 SMART 속성들 및/또는 로그들을 클린 공장 쉽핑(shipping) 상태로 리셋(예를 들어, ClearSMART를 수행)하도록 인에이블된다.
일부 실시예들에서, 펌웨어 다운로딩은 예를 들어, 고객에 대한 SSD의 출시 이전에 최종 동작으로서, SSD의 보안 소거를 수행하는 것을 포함한다. 일부 실시예들에서, 제조 툴은 다운로딩된 펌웨어에게, 펌웨어가 다운로딩된 SSD상에서 하나 또는 그 초과의 제조 테스트들을 수행하는 것을 지시하도록 인에이블된다. 제조 테스트들은 SSD의 MST 및/또는 SSD의 플래시 메모리의 테스트를 포함한다.
"펌웨어를 갖지 않는 SSD"의 일례는 펌웨어가 다운로딩된 이후에(및 옵션으로는 하나 또는 그 초과의 후속 제조 동작들을 수행한 이후에) SSD로서 동작가능한 엘리먼트들의 집합이다. 예를 들어, 아직 다운로딩되지 않은 FW(106)를 갖는 도 1b의 SSD(101)가 펌웨어를 갖지 않은 SSD의 일례이다.
특정한 SSD를 제조하는 특정 예로서, 시스템 벤더는 설계 벤더에 의해 제공된 라이센스 파일로부터의 특정한 제조 펌웨어 패키지 및 설계 벤더에 의해 제공된 분배 펌웨어 패키지를 개발한다. 시스템 벤더는, 설계 벤더로부터의 그리고 예를 들어, Linux의 버전을 구동하는 PC상에서 실행되는 패키지 관리자 애플리케이션을 사용하여 특정한 제조 펌웨어 패키지를 개발한다. 시스템 벤더는 특정한 SSD에 대한 소망하는 드라이브 세팅들(예를 들어, 용량, 오버 프로비저닝, 신뢰도 특징들, 및 다른 제품-및/또는 모델-특정 속성들)을 결정하여, 소망하는 드라이브 세팅들을 설계 벤더로부터의 그리고 예를 들어, PC상에서 실행되는 구성 관리자 애플리케이션에 공급한다. 구성 관리자 애플리케이션은 하나 또는 그 초과의 특정한 커맨드 라인들의 특정한 파일을 생산하고, 특정한 커맨드 라인들은 특정한 SSD 및 소망하는 드라이브 세팅들에 특정된다.
이 예에 계속하여, 제조자는, 설계 벤더에 의해 제공된 제조 툴을 사용하여, 펌웨어를 갖지 않는 SSD를 펌웨어를 갖는 SSD로 변환한다. 제조 툴은 특정한 커맨드 라인들을 통해 제어된 제조 펌웨어 패키지를 펌웨어를 갖지 않은 SSD에 다운로딩하여, 이로써 펌웨어를 갖지 않은 SSD를 펌웨어를 갖는 SSD로 변환한다. 제조 툴은 옵션으로, 펌웨어를 갖는 SSD가 다운로딩된 펌웨어를 통해 MST를 수행하도록 지시한다. 특정한 커맨드 라인들은 예를 들어, 다운로딩되는 펌웨어의 각 인스턴스를 커스터마이징하기 위해 사용되는 시리얼 넘버 및/또는 WWN 정보의 생성을 특정하여, 예를 들어, 제조된 SSD 마다 고유 WWN 및/또는 고유 시리얼 넘버를 갖게된다.
다양한 실시예들에서, 패키지 관리자(711), 구성 관리자(712), 및 제조 소프트웨어 툴(MT)(751) 중 임의의 하나 또는 그 초과의 것은 도 6의 제조 소프트웨어 툴(616)의 모두 또는 임의의 부분들이거나, 그것의 변형(들)이다.
도 7b는 가상 드라이브 제조 모델에 따른 SSD들의 (대량) 제조(또는 시제품 구성)을 위한 시스템의 실시예의 선택된 상세사항들을 예시한다. 워크스테이션 컴퓨터, PC, 랩탑 컴퓨터, 또는 노트북 컴퓨터와 같은 컴퓨팅 호스트(호스트(780P))가 (SSD.1(790P.1) ... SSD.N(790P.N)로서 예시된) 하나 또는 그 초과의 SSD들에 커플링된다. 컴퓨팅 호스트는 제조 툴 애플리케이션 소프트웨어(예를 들어, 호스트(780P)에 예시되고 도 7a의 다른 맥락에 추가로 예시된 바와 같은 제조 소프트웨어 툴(MT)(751))를 실행하도록 인에이블된다. 단일 호스트에 커플링된 임의의 수의 SSD들을 갖는 실시예들 뿐만 아니라 복수의 호스트들을 갖는 실시예들이 예상되고, 호스트들 각각은 하나 또는 그 초과의 SSD들의 각각의 그룹에 커플링된다. 단일 호스트에 커플링된 복수의 SSD들을 갖는 실시예들에서, 단일 호스트는 옵션으로, 제조 소프트웨어 툴을 통해, 전체적으로 또는 부분적으로 병렬로 커플링된 임의의 개수의 SSD들에 대한 펌웨어 다운로딩 및/또는 그 SSD들상에서의 제조 테스트(들)를 지시하도록 인에이블된다.
동작중에, 호스트(780P)는 펌웨어를 SSD.1(790P.1) ... SSD.N(790P.N) 중 임의의 하나 또는 그 초과의 것에 다운로딩하기 위해 제조 소프트웨어 툴(MT)(751)을 실행하여, 이에 따라 (도 7a의 프래쉬 SSD(750F), 제조 소프트웨어 툴(MT)(751), 및 펌웨어 로딩된 SSD(750L)에 의해 예시된 바와 같이) 펌웨어를 갖지 않은 하나 또는 그 초과의 SSD들이 펌웨어를 갖는 하나 또는 그 초과의 SSD들로 변환한다.
일부 실시예들에서, 제조 소프트웨어 툴은 호스트(예를 들어, 호스트(780P))상에서 실행하는 쉘(shell) 프로그램에 의해 해석된 일련의 하나 또는 그 초과의 커맨드 라인들과 같은 커맨드 라인 호출(invocation)을 통해 동작가능하다. 특정한 예로서, 커맨드 라인 호출은 제조 소프트웨어 툴(예를 들어, 제조 소프트웨어 툴(MT)(751))을 식별하는 제 1 파라미터, 펌웨어를 수용할 준비가 된 SSD(예를 들어, SSD.1(790P.1) ... SSD.N(790P.N) 중 하나)에 대응하는 특정한 디바이스를 식별하는 제 2 파라미터, 드라이브 구성 파일(예를 들어, 도 7a의 드라이브 구성 및 세팅 파일(722))을 식별하는 제 3 파라미터, 및 각각이, 펌웨어를 수용할 준비가 된 SSD에 대한 시리얼 넘버 및 WWN(예를 들어, 도 7a의 시리얼 넘버, 월드 와이드 네임(WWN))인 제 4 및 제 5 파라미터들을 포함한다. 제 6 (옵션적) 파라미터는 진단 언락 키를 특정한다. 일부 실시예들 및/또는 사용 시나리오들에서, 진단 언락 키는 제조 소프트웨어 툴을 통해 생산된 SSD의 사용 동안 특정한 커맨드들, 예를 들어, 특정한 시스템 벤더에 대해 고유한 진단 커맨드들에 대한 비인가된(unauthorized) 액세스를 방지하기 위해 사용된다. 제 7 (옵션적) 파라미터는 512B 벤더 아이덴티티 데이터 파일, 예를 들어, 특정한 시스템 벤더에 고유한 정보의 집합을 특정한다. 제 8 (옵션적) 파라미터는 출력 및/또는 로그 파일의 네임을 특정한다. 추가 실시예들에서, 출력 및/또는 로그는 다운로딩 및/또는 SSD상에서 수행된 임의의 MST 및/또는 플래시 디바이스 테스트의 결과들을 포함하는 상태 정보로 기록된다.
도 7c는 도 7a 및/또는 도 7b에 의해 예시된 바와 같은 실시예들을 통해 생산된 SSD와 같은, 가상 드라이브 제조 모델에 따른 SSD들의 펌웨어 업데이팅의 실시예의 선택된 상세사항들의 개념 표현을 예시한다. 도 7a에서와 같이, 예시된 엘리먼트들은 2개의 디커플링된 부분들로 그룹화되어, 옵션적으로 엔지니어링 셋업 동작들이 펌웨어 업데이팅과 개별적으로 수행될 수 있게 한다. 제 1 부분(엔지니어링(730C))은 예를 들어, 펌웨어 업데이팅에 대해 셋업하기 위해 단일 생산 운전 마다 펌웨어 출시 마다 1회 또는 동일한 모델의 SSD의 일련의 생산 운전들 마다 펌웨어 출시 마다 1회 수행된다. 제 2 부분(최종 사용자(740E))은, (시제품 펌웨어 업데이팅용 같은) 단일 생산 운전에 대한 것이든 또는 (최종 사용자 펌웨어 업데이팅용과 같은) 동일한 모델의 SSD의 일련의 생산 운전들에 대한 것이든, 각 펌웨어 업데이트에 대해 수행된다. 다양한 실시예들 및/또는 사용 시나리오들에 따르면, 엔지니어링(730C)의 엘리먼트들로서 도시된 동작들 중 모두 또는 임의의 부분들은 도 6의 시스템 벤더(630) 및 도 6의 제조자(620) 중 하나 또는 그 초과의 것에 의해 수행된다. 일부 실시예들 및/또는 사용 시나리오들에서, 엔지니어링(730C)의 엘리먼트들은 도 7a의 엔지니어링(730A)의 엘리먼트들과 동일한 구조에 의해 수행된다.
엔지니어링(730C)의 엘리먼트들은 하나 또는 그 초과의 SSD들의 펌웨어 업데이팅을 위해, 필드 업데이트 펌웨어 이미지의 생산을 포함한다(필드 업데이트 펌웨어 패키지(723)). 도 7a의 제조 펌웨어 패키지(721)와 유사하게, 필드 업데이트 펌웨어 이미지는 패키지 관리자(711)를 통해 라이센스 파일(701) 및 분배 펌웨어 패키지(703)에 따라 생산된다. 패키지 관리자는 라이센스 파일을 사용하여 분배 펌웨어 패키지로부터 펌웨어 업데이팅을 위해 사용가능한 펌웨어를 추출하고, (필드 업데이트 펌웨어 패키지를 암호화하고, 보안하고, 개인화하고 그리고/또는 커스터마이징하는 것과 같은) 하나 또는 그 초과의 스탬핑 기능들을 수행하여, 필드 업데이트 펌웨어 패키지를 생산한다. 예를 들어, 패키지 관리자는 특정한 필드 업데이트 펌웨어 패키지를 통해 업데이트된 펌웨어를 가질 SSD들을 생산하기 위해 사용된 대응하는 특정한 제조 펌웨어 패키지를 생산할 때 패키지 관리자에 의해 수행된 개인화 중 모두 또는 임의의 부분들이 매칭하도록 특정한 필드 업데이트 펌웨어 패키지를 개인화한다. 다른 예에 있어서, 패키지 관리자는 (예를 들어, 필드 업데이트 펌웨어 패키지의 맨 처음 부분에서의 엘리먼트의 일부로서, 또는 필드 업데이트 펌웨어 패키지의 맨 마지막 부분에서의 엘리먼트의 일부로서) 해시된(hashed) 스탬프를 필드 업데이트 펌웨어 패키지에 추가하여, 필드 업데이트 펌웨어 패키지를 개인화한다. 스탬프는, 필드 업데이트 펌웨어 패키지가 필드 업데이트 펌웨어 패키지의 스탬프에 매칭하는 해시된 스탬프와 펌웨어를 갖는 SSD들상에서만 사용가능해지게 할 수 있는 하나 또는 그 초과의 보안 수단들(measures)을 포함한다.
필드 업데이트 펌웨어 패키지는 SSD 업데이트 소프트웨어 툴(UT)(753)에 의한 사용을 위해 엔지니어링(730C)으로부터 최종 사용자(740E)로 패스된다. SSD 업데이트 툴은 구(old) 펌웨어를 갖는 SSD((구) 펌웨어가 로딩된 SSD(750X))로 로딩된 펌웨어를 통해 펌웨어를 업데이트하도록 인에이블된다. 이에 의해, 구 펌웨어를 갖는 SSD는 새로운 펌웨어를 갖는 SSD((새로운) 펌웨어가 로딩된 SSD(750Y))로 변환된다. 일부 실시예들 및/또는 사용 시나리오들에서, 펌웨어 업데이트는 (암호화 키(들)(754)에 의해 표현된) 하나 또는 그 초과의 키들, 벤더 식별자들, 펌웨어 오버라이드 스트링들, 및/또는 다양한 보안 기술들을 통해 언락되고 그리고/또는 인에이블된다. 언락킹 및/또는 인에이블링은 필드 업데이트 펌웨어 패키지를 생산할 때 패키지 관리자에 의해 수행된 스탬핑 기능들과 호환가능하다. 따라서, 비인가 당사자들은 펌웨어 업그레이드를 수행하는 것, 예를 들어, 이전에, 다운로딩된 펌웨어를 가진 SSD상에 새로운/수정된 펌웨어를 다운로딩하는 것이 방지된다. 다양한 맥락들에서, 최종 사용자(740E)는 (예를 들어, 펌웨어에 대한 엔지니어링 변화를 소망하는) 설계 벤더, (예를 들어, 펌웨어에 대한 생산 관련 변화를 소망하는) 시스템 벤더 및/또는 제조자, 또는 시스템 벤더의 고객(예를 들어, 최종 사용자에 의한 사용시에 이전에 SSD의 필드 업그레이드를 수행하는 최종 사용자) 중 임의의 하나 또는 그 초과의 것을 나타낸다.
일부 실시예들 및/또는 사용 시나리오들에서, 펌웨어 업데이트는 거동들(behaviors)의 하나의 구성 및/또는 세트로부터 거동들의 다른 구성 및/또는 세트로 이전에 생산된 SSD(예를 들어, 이전에 다운로딩된 펌웨어를 갖는 SSD)를 변화시키기 위한 정보 및/또는 동작들을 포함한다. 예를 들어, 다르게는(otherwise), 펌웨어 업데이트를 통해 (예를 들어, 도 7a의 구성 관리자(712)를 통해 시스템 벤더 소망 드라이브 세팅(704)에 의해) 생산시에 고정되는 거동들의 변형을 가능하게 하기 위해 부록(appendix)이 펌웨어 이미지에 첨부된다.
도 7d는 가상 드라이브 제조 모델에 따른, SSD들의 펌웨어 업데이팅을 위한 시스템의 실시예의 선택된 상세사항들을 예시한다. 도 7b와 유사하게, 워크스테이션 컴퓨터, PC, 랩탑 컴퓨터, 또는 노트북 컴퓨터와 같은 컴퓨팅 호스트(호스트(780E))가 (SSD.1(790E.1) ... SSD.N(790E.N)로서 예시된) 하나 또는 그 초과의 SSD들에 커플링된다. 컴퓨팅 호스트는 SSD 업데이트 툴 애플리케이션 소프트웨어(예를 들어, 호스트(780E)에 예시되고 도 7c의 다른 맥락에 추가로 예시된 바와 같은 SSD 업데이트 소프트웨어 툴(UT)(753))를 실행하도록 인에이블된다. 도 7b에서와 같이, 단일 호스트에 커플링된 임의의 수의 SSD들을 갖는 실시예들 뿐만 아니라 복수의 호스트들을 갖는 실시예들이 예상되고, 호스트들 각각은 하나 또는 그 초과의 SSD들의 각각의 그룹에 커플링된다. 단일 호스트에 커플링된 복수의 SSD들을 갖는 실시예들에서, 단일 호스트는 옵션으로, SSD 업데이트 소프트웨어 툴을 통해, 전체적으로 또는 부분적으로 병렬로 커플링된 임의의 개수의 SSD들에 대한 펌웨어 업데이팅(예를 들어, 다운로딩)을 지시하도록 인에이블된다.
동작중에, 호스트(780E)는 펌웨어를 SSD.1(790E.1) ... SSD.N(790E.N) 중 임의의 하나 또는 그 초과의 것으로 업데이트(예를 들어, 다운로딩)하기 위해 SSD 업데이트 소프트웨어 툴(UT)(753)을 실행하여, (도 7c의 (구) 펌웨어가 로딩된 SSD(750X), SSD 업데이트 소프트웨어 툴(UT)(753), 및 (새로운) 펌웨어가 로딩된 SSD(750Y)에 의해 예시된 바와 같이) (구) 펌웨어를 갖는 하나 또는 그 초과의 SSD들이 새로운 펌웨어를 갖는 하나 또는 그 초과의 SSD들로 변환된다.
일부 실시예들 및/또는 사용 시나리오들에서, 패키지 관리자(711)에 의해 수행된 하나 또는 그 초과의 기능들/동작들(예를 들어, 제조 펌웨어 패키지(721) 및/또는 필드 업데이트 펌웨어 패키지(723)의 생산) 및/또는 구성 관리자(712)에 의해 수행된 하나 또는 그 초과의 기능들/동작들(예를 들어, 드라이브 구성 및 세팅 파일(722)의 제조)은 하나 또는 그 초과의 키들, 벤더 식별자들, 펌웨어 오버라이드 스트링들, 및/또는 다양한 보안 기술들(암호화 키(들)(702))을 통해 언락되고 그리고/또는 인에이블된다.
다양한 실시예들 및/또는 사용 시나리오들에서, 도 7b의 호스트(780P) 및 도 7d의 호스트(780E) 중 하나 또는 양자 모두는 도 1b의 호스트(102)와 동일하거나 그의 변형이다. 다양한 실시예들 및/또는 사용 시나리오들에서, 도 7b의 SSD.1(790P.1) ... SSD.N(790P.N) 및 도 7d의 SSD.1(790E.1) ... SSD.N(790E.N) 중 임의의 하나 또는 그 초과의 것은 예를 들어, 도 1b에 예시된 바와 같이, SSD(101)와 동일하거나 그의 변형들이다.
선택된 예시적인 VDMM 구현 기술들
일부 실시예들 및/또는 사용 시나리오들에서, 도 6 및 도 7a 내지 도 7d의 하나 또는 그 초과의 엘리먼트들 또는 이들의 일부들은 전체적으로 또는 부분적으로, 여러 컴퓨터 보조 및/또는 컴퓨터 관련 기술들 중 하나 또는 그 초과의 것을 통해 수행된다. 예를 들어, 엘리먼트들 사이에서의 하나 또는 그 초과의 경로들은 이메일, XML-주석이 달린 사양들 및/또는 XML-기반 폼들, 및 서버 대 서버 트랜잭션들 중 임의의 하나 또는 그 초과의 것을 통해 구현가능하다. 예를 들어, 도 6의 BOM 선택, BOM 구입, 및 설계 승인(632)으로의 레퍼런스 설계 & 플래시 권장(612) 정보의 통신은 이메일 및/또는 복수의 XML-주석이 달린 사양들을 통해 이루어진다. 다른 예에 있어서, 하나 또는 다른 엘리먼트들은 적어도 부분적으로, 다층 인터넷 상거래 기반 서버 중 임의의 하나 또는 그 초과의 층들, 하나 또는 그 초과의 웹, 데이터베이스, 및/또는 애플리케이션 서버들, 및 하나 또는 그 초과의 웹, 데이터베이스, 및/또는 애플리케이션 스크립들, 프로그램들, 및/또는 애플리케이션들 중, 임의의 하나 또는 그 초과의 것을 통해 구현가능하다. 예를 들어, 도 6의 제어기 & 펌웨어(611)에 관한 문서는 예컨대, 하나 또는 그 초과의 웹, 데이터베이스, 및/또는 애플리케이션 서버들을 통해 동작가능한 웹사이트를 통해 입수가능하도록 이루어진다.
또 다른 예에 있어서, 예컨대, 암호화된 통신, 패스워드들, 및/또는 인증서들 및 그것의 서버들에 기초하는 암호 키 위탁 기술들은 특정한 동작들을 구현하기 위해 사용된다. 예를 들어, 라이센스 서버는 도 7a 및 도 7c의 라이센스 파일(701)의 모든 또는 임의의 부분들과 같은 암호 키들의 암호화된 체크-아웃을 제공한다. 다른 예에 있어서, 일부 엘리먼트들은 전체적으로 또는 부분적으로, 인터넷을 사용하는 하나 또는 그 초과의 비즈니스 대 비즈니스 자동화 시스템들을 통해 분배된다. 예를 들어, 도 7b에서 사용된 바와 같은 제조 소프트웨어 툴(MT)(751)(및/또는 도 7d에서 사용된 바와 같은 SSD 업데이트 소프트웨어 툴(UT)(753))의 분배는 인터넷을 사용하는 설계 벤더 대 제조자 자동화 시스템을 통해 이루어진다.
다양한 실시예들 및/또는 사용 시나리오들에서, 도 6 및 도 7a 내지 도 7d의 하나 또는 그 초과의 엘리먼트들 또는 이들의 일부들은 다양한 순열(permutation)들의 위치들에서 수행된다. 예를 들어, (도 6의) 설계 벤더(610), 제조자(620), 및 시스템 벤더(630)에 관한 모든 동작들은 동일한 위치에서 수행된다. 다른 예에 있어서, 설계 벤더(610)에 관한 모든 동작들은 제 1 위치에서 수행되고, 제조자(620)에 관한 모든 동작들은 제 2 위치에서 수행되며, 시스템 벤더(630)에 관한 모든 동작들은 제 3 위치에서 수행된다. 또 다른 예에 있어서, 설계 벤더(610) 및 시스템 벤더(630)에 관한 일부 동작들은 제 1 위치에서 수행되고, 제조자(620) 및 시스템 벤더(630)에 관한 일부 동작들은 제 2 위치에서 수행된다. 다른 예에 있어서, (도 7a의) 엔지니어링(730A) 및 공장(740F)에 관한 일부 동작들은 복수의 위치들에서 수행된다.
LBA - NVM 위치 매핑
도 8은 FLM 및 하나 또는 그 초과의 SLM 페이지들을 갖는 2-레벨 맵을 통해 NVM에 저장된 LB들에 LBA들을 매핑하는 실시예의 선택된 상세사항들을, LBA - NVM 위치 매핑(800)으로서 예시한다. 2-레벨 맵은 하나 또는 그 초과의 제 2 레벨 엘리먼트들(단일 엘리먼트 SLM 페이지(820)로서 개념적으로 예시됨)에 커플링된 제 1 레벨 엘리먼트(FLM(810))를 통해 구현된다. FLM은 복수의 엔트리들(SLM 페이지/길이(810.1) .. SLM 페이지/길이(810.M))을 포함한다. FLM의 엔트리들 각각은 (SLM 페이지(820)와 같은) SLM 페이지들 중 하나를 포인팅한다. SLM 페이지는 복수의 엔트리들(LB 페이지/길이(820.1) .. LB 페이지/길이(820.N))을 포함한다. SLM 페이지들의 엔트리들 각각은 데이터가 시작하는 NVM에서의 위치(예를 들어, 적어도, LBA에 대한 호스트 기록 데이터의 맨 처음 부분을 저장하는 판독 유닛)를 포인팅한다. 분할기(정수 분할기(822))는, 어느 FLM 엔트리를 선택하고 (선택된 FLM 엔트리에 의해 포인팅된 SLM 페이지내의) 어느 SLM 엔트리를 선택할지 결정하기 위해 인커밍 LBA를 분할하도록 예를 들어, 프로그램가능한 하드웨어 레지스터(SLM 엔트리들/SLM 페이지(CSR)(823))로부터 파라미터를 수신한다. 분할기는 FLM 및 SLM 페이지들에 커플링된다.
다양한 실시예들에서, 도면은 도 1a의 맵(141) 및/또는 테이블(143)의 관련된 또는 선택된 상세사항들을 예시한다. 예를 들어, 일부 실시예들에서, 맵(141) 및/또는 테이블(143)은 FLM의 하나 또는 그 초과의 엔트리들 및/또는 SML의 하나 또는 그 초과의 엔트리들과 같은, 매핑 정보의 하나 또는 그 초과의 캐시들을 구현한다. FLM 및/또는 SLM의 전체 이미지는 예를 들어, 캐시들이 이전에 캐싱된 FLM 및/또는 SLM 엔트리를 대체할 때 업데이트된 NVM(예를 들어, 도 1a의 NVM(199))의 부분에 유지된다. 일부 실시예들에서, FLM 및/또는 SLM 전체 이미지들은 롤링 또는 핑-퐁 체크포인트들을 통해 구현되고, 체크포인트들 각각은 각각의 전체 맵 이미지의 일부이다.
동작중에, LBA(821)가 정수 분할기(822)에 제공된다. 분할기는 SLM 엔트리들/SLM 페이지(CSR)(823)에 의해 제공될 때, SLM 페이지 당 SLM 엔트리들의 수로 LBA를 분할하여, 몫(FLM 인덱스(822Q))과 나머지(SLM 페이지 인덱스(822R))를 발생시킨다. 몫은 FLM 엔트리들 중 하나를 선택하기 위해 사용되고, 선택된 FLM 엔트리의 페이지 필드가 판독된다(SLM 포인터(810S)). 페이지 필드는 SLM 페이지들 중 하나(예를 들어, SLM 페이지(820))를 선택하기 위해 사용되고, 나머지는 선택된 SLM 페이지의 엔트리를 선택하기 위해 (예를 들어, 오프셋으로서) 사용된다. 선택된 SLM 페이지 엔트리의 페이지 필드는 특정한 판독 유닛과 같은 NVM에서의 특정한 위치를 선택하기 위해 사용되고, 여기서, 적어도, 제공된 LBA에 대응하는 LB의 맨 처음 부분이 저장된다(LB 포인터(820L)). 다양한 실시예들에서, LB 포인터들은 NVM의 판독 유닛의 어드레스(예를 들어, 도 2의 판독 유닛 어드레스(223))를 포함한다. 일부 실시예들에서, SLM 엔트리들 각각은 LB에 대한 모든 데이터를 획득하기 위해 얼마나 많은 판독 유닛들을 판독할지 그리고/또는 판독 유닛내의 어디에서 LB에 대한 데이터가 시작하는지(예를 들어, 도 2의 판독 유닛들에서의 길이(225))를 나타내는 길이 필드(예를 들어, 인코딩 사이즈 및/또는 스팬)를 포함한다. 일부 실시예들에서, FLM 엔트리들 각각은 FLM 엔트리의 페이지 필드에 의해 특정된 모든 각각의 SLM 페이지를 획득하기 위해 얼마나 많은 판독 유닛들을 판독할지(예를 들어, 도 2의 판독 유닛들에서의 길이(225))를 나타내는 길이 필드(예를 들어, 인코딩 사이즈 및/또는 스팬)를 포함한다.
다양한 실시예들에서, 몫은 SLM 페이지들의 완전하게 연관된 캐시와 같은 캐시에 액세스하는 키(key)로서 사용된다. 특정한 SLM 페이지에 대한 캐시에 히트가 있다면, 특정한 SLM 페이지의 최근의 카피가 NVM에 액세스하지 않고 캐시에서 발견된다. 복수의 SLM 페이지들에 대한 고속 액세스의 제공은, 일부 실시예들 및/또는 사용 시나리오들에서, NVM에 대한 순차적 데이터 액세스들의 복수의 독립적 스트림들 및/또는 NWM에 대한 랜덤한 액세스들의 더욱 효율적인 프로세싱을 가능하게 한다(예를 들어, LBA들의 제 1 영역에 대한 순차적 데이터 액세스들의 제 1 스트림은 LBA들의 제 2 영역에 대한 순차적 데이터 액세스들의 제 2 스트림에 배치된다(interspersed).
고체 상태 디스크 제조 셀프 테스트
SSD MST 흐름의 예의 개요는 다음과 같다. 기술자는 테스트될 SSD를 (예를 들어, 테스트 호스트 컴퓨터로의 SSD의 플러깅을 통해) 호스트에 커플링한다. 기술자 및 호스트상에서 실행하는 하나 또는 그 초과의 프로그램들 중 임의의 하나 또는 그 초과의 지시하에서, SSD(옵션으로는 호스트와 함께)는 SSD의 플래시의 테스트를 실행하고, 그 후, 나타난 결함 리스트의 맨 처음 상태를 세이브한다. 플래시 테스트는 예를 들어, 호스트와의 접속성이 기능적인지 체크하기 위한 것이다. 나타난 결함 리스트의 맨 처음 상태는 예를 들어, 동작불가능한 플래시의 블록들의 맨 처음 리스트이다. 그 후, 호스트는 테스트를 형성하는 커맨드들과 입력 로그(예를 들어, SMART 로그)를 기록함으로써 MST를 구성한다. 커맨드들은 SSD에 의해 (예를 들어, 펌웨어를 통해) 실행가능한 복수의 지원 MST 커맨드들로부터 선택된다. 개념적으로, 지원 MST 커맨드들은 SSD의 플래시와의 인터페이싱을 위해 API에 집합적으로 대응한다. 호스트가 구성을 완료할 때, 호스트는 MST 모드에 SSD를 배치하고 SSD에게 입력 로그로부터의 커맨드들을 실행함으로써 테스트를 시작하도록 지시하기 위해 (예를 들어, MST_START와 같은 특정한 SCT 커맨드로서) START 커맨드를 전송한다.
일부 사용 시나리오들에서, START 커맨드는 (호스트에 커플링된 동안) 테스트를 즉시 시작할 것을 SSD에 나타낸다. 다른 사용 시나리오들에서, START 커맨드는 대기 모드에 즉시 진입하고 SSD가 파워업되는 다음 시간까지 테스트의 시작을 지연할 것을 SSD에 나타낸다. START 커맨드가 대기 모드에 진입하는 것을 나타내는 사용 시나리오들 중 적어도 일부에서, SSD가 대기 모드에 진입하고 파워 다운된 이후에, 기술자는 호스트로부터 SSD를 언커플링하고 SSD를 전원(예를 들어, 랙)에 커플링한다. 그 후, 기술자는 전원이 SSD에 전력을 인가하도록 지시한다. SSD가 파워업될 때, 테스트를 시작한다.
테스트를 시작한 이후에, 기술자는 테스트가 완료된다는 것을 나타내기 위해 SSD상의 표시자(예를 들어, LED와 같은 시각적 디스플레이)를 주시(watch)한다. 대안적으로, 기술자는 SSD를 주기적으로 파워 다운하고, 전원으로부터 SSD를 언커플링하고, SSD를 호스트에 커플링하고, SSD를 파워 업하고, 호스트를 통해, 테스트가 완료되는지 여부와 같은 테스트의 상태를 결정하기 위해 SSD에 문의한다.
SSD가 테스트를 완료할 때, SSD는 대기 모기에 진입한다. 그 후, 기술자는 (SSD가 호스트에 아직 커플링되지 않은 경우에) SSD를 호스트에 커플링하고, SSD를 파워 업한다. (예를 들어, 기술자의 지시하에서 및/또는 SSD의 커플링 및 파워 온에 응답하여) 호스트는 나타난 결함 리스트의 최종 상태 및 테스트의 결과들을 (SSD로부터) 판독하고 (예를 들어, 호스트에 커플링된 스토리지에) 세이빙한다. 그 후, 호스트는 SSD에게 MST를 종료하도록 지시하기 위해 (예를 들어, MST_COMPLETE와 같은 특정한 SCT 커맨드로서) COMPLETE 커맨드를 SSD에 전송하고 시스템 벤더 및/또는 고객에 대한 판매를 위해 SSD를 준비한다.
단일의 기술자에 관련하여 상술하였지만, 다양한 실시예들 및/또는 사용 시나리오들에서는, 기술자들은 예를 들어, 일정 시간 기간에 걸쳐(over a period of time) 한명의 사람 또는, 대안적으로, 복수의 사람들이다.
일부 실시예들 및/또는 사용 시나리오들에서, MST는 SSD가 MST에 영향을 받는 환경적 맥락의 제어를 위해 하나 또는 그 초과의 환경적 파라미터들을 특정한다. 일부 실시예들에서, 환경적 파라미터들은 예를 들어, SSD의 플래시에 적용가능한 하나 또는 그 초과의 전압 램프들(ramps)을 구현하도록 사용된다.
도 9a는 SSD MST 흐름의 실시예의 선택된 상세사항들을 예시한다. 다양한 환경들에서, SSD상에서 테스트에 관한 흐름을 수행한 결과로서, SSD상에 이전에 저장된 사용자 데이터 중 모두 또는 임의의 부분들은 소거되고 그리고/또는 겹쳐쓰기된다. (SSD MST의 맥락들에서 '사용자 데이터'의 예들은 운영 시스템 데이터, 드라이버 데이터, 및 애플리케이션 데이터와 같은, 호스트 판독들/기록들로서 수신되거나 그로부터 발생하는 데이터를 포함한다). 호스트는 흐름에 따라 테스트를 셋업하고 시작하는데 사용된다. 테스트는, SSD가 테스트를 완료하거나 또는 호스트가 (예를 들어, MST_ABORT와 같은 특정한 SCT 커맨드로서) ABORT 커맨드를 SSD에 전송함으로써 SSD가 테스트를 조기에 종료할 것을 지시할 때까지, SSD의 전력 사이클들에 걸쳐 계속 구동된다. 일부 실시예들에서, 전체 보다 적은 SSD의 플래시, 예를 들어, 옵션으로 임의의 오버 프로비저닝 할당들 및/또는 지정들을 비롯하여, 사용자 데이터를 저장하기 위해 할당되고 그리고/또는 지정된 플래시의 영역들만이 사용된다(exercised). 일부 실시예들에서, 호스트는 테스트의 결과들을 해석한다(예를 들어, 호스트는 테스트 통과 또는 실패 여부를 결정한다). 다양한 실시예들에서, (예를 들어, 가상 드라이브 제조 모델에 따른) 설계 벤더는 예시된 SSD MST 흐름에 따른 동작을 가능하게 하는 펌웨어를 SSD에 제공한다.
흐름은 넓게는, 3개의 부분들, 즉 테스트 구동을 위한 셋업(MST 준비(910)), 테스트 구동(MST 실행(920)), 및 테스트의 완료 이후에 완료 후(post-completion) 동작들의 수행(MST 종료(930))으로 배열된다. 흐름의 준비 부분은 예를 들어, 테스트 요원 기교 커맨드들(test personnel crafting commands)을 통해 하나 또는 그 초과의 MST 커맨드들을 생성(MST 커맨드들의 생성(912))하는 것 및/또는 커맨드들을 생성하기 위한 호스트상에서 스크립을 실행하는 것으로 시작한다(시작(911)). 일부 사용 시나리오들(예를 들어, 일부 제조 사용 시나리오들)에서, 테스트는 단지 단일 드라이브 기록(예를 들어, SSD) 커맨드로 이루어진다. 흐름은, 예를 들어 호스트가 SSD로부터 나타난 결함 리스트의 맨 처음 상태를 판독하는 것 그리고 호스트가 보안 소거를 수행하고 하나 또는 그 초과의 SMART 로그들을 클리어하도록 SSD에게 지시하는 것을 포함하는, MST 동작에 대한 SSD를 준비함으로써(MST 동작에 대한 SSD 준비(913)) 계속된다. 그 후, 호스트는 테스트의 커맨드들을 SSD의 입력 SMART 로그에 저장함으로써 (MST 커맨드들을 SMART 로그 0xF8에 기록(914)) 테스트를 수행하는 SSD를 구성한다.
흐름은, 예를 들어 MST-START 커맨드를 SSD에 발행함으로써, 호스트가 SSD에게 MST 모드에 진입하도록(MST 활성화(915)) 지시하는 것으로 계속된다. 일부 사용 시나리오들에서, 발행된 MST_START 커맨드는 SSD의 다음의 파워 업에 대한 SMART 로그로부터 테스트의 커맨드들의 실행을 시작하도록 SSD에 나타내는 기능 코드를 포함한다. MST_START 커맨드의 수신에 응답하여, SSD는 MST 플래그를 설정한다. SSD는 이제, 호스트와 더 상호작용하지 않고(예를 들어, 호스트에 커플링된 SATA 인터페이스와 같은 호스트 인터페이스 없이) 입력 SMART 로그에 저장된 테스트를 수행하도록 인에이블된다. 일부 실시예들에서, 호스트는 SSD에 의해 출력 SMART 로그에 저장된 테스트 상태 표시자가 SSD가 MST 모드에 진입했고 그리고/또는 활성화되었다는 것을 나타낼 때까지 SSD의 출력 SMART 로그(예를 들어, SMART 로그 0xF9)를 폴링한다(poll). SSD가 MST 모드에 진입했고/MST 모드가 활성화되었다는 것을 호스트가 결정하는 것에 응답하여, 호스트는 SSD에게 대기 모드에 즉시 진입하도록 지시하고 그 후, SSD를 파워 다운한다. SSD가 파워 다운될 때, SSD는, 예를 들어 호스트로부터 예를 들어, MST 동작들에 전용된 랙으로 SSD를 재포지셔닝하는 테스트 요원에 의해, 호스트로부터 언커플링되고 전원에 커플링된다(SSD 이동(916)).
일부 사용 시나리오들에서, 재포지셔닝의 언커플링(SSD의 이동(916))은 생략되고, 테스트는 SSD가 호스트에 커플링되어 남아있는 동안 수행된다. 일부 사용 시나리오들에서, 발행된 MST_START 커맨드는, 예를 들어 호스트에 커플링되어 남아 있는 동안, 커맨드들의 실행을 즉시 시작할 것을 SSD에 나타내는 기능 코드를 포함한다.
MST_START 커맨드를 발행하고 랙에 커플링될 때 SSD의 후속의 옵션적인 재포지셔닝 이후에, 흐름의 준비 부분(MST 준비(910))은 완료되고 구동 부분(MST 구동(920))이 시작한다. 흐름은 예를 들어, 호스트 또는 랙을 통해 SSD에 전력을 인가(SSD 파워 온(921))하게 진행한다. 전력의 인가에 응답하여, SSD는 MST 모드에서의 동작을 시작하고(MST 시작(922)) 입력 SMART 로그로부터 커맨드들의 페치 및 실행을 시작한다(SMART 로그 0xF8 커맨드 실행(923)). MST 모드에 있는 동안, SSD는 데이터 커맨드들(예를 들어, SATA 데이터 커맨드들)의 프로세싱을 디스에이블한다. 또한, MST 모드에 있는 동안, SSD는 (예를 들어, Ident 스트링의 7번째 문자에서 "T"를 나타냄으로써 SATA 식별 드라이브 문의에 응답함으로써) MST 모드에서의 동작을 나타내는 것으로서 식별 문의들에 응답한다. 테스트의 커맨드들을 실행하는 동안, SSD는 진행, 상태, 및/또는 결과 정보를 제공하고 그리고/또는 리코딩한다(진행 표시(LED, 이벤트 로그, SMART 로그 0xF9)(924)). 다양한 실시예들 및/또는 사용 시나리오들에서, 진행, 상태, 및 결과 정보 중 임의의 하나 또는 그 초과의 것은 축적된 통계들을 포함한다. 다양한 환경들에서, 에러들의 수, 에러 위치(들), 및 얼마나 많은 커맨드들이 프로세싱되었는지 중 하나 또는 그 초과의 것이 포함된다. (예를 들어, MST_ABORT 커맨드를 통해 테스트를 중단하도록 SSD에게 지시하는 호스트에 의해) 테스트를 조기에 종료하도록 명령되지 않으면, SSD는 (예를 들어, 하나 또는 그 초과의 이력 파라미터들을 통해) 테스트에서 특정된 종료 표시가 충족될 때까지(완료?(925)) 테스트의 커맨드들을 계속 페치하고 실행한다. 테스트가 완료될 때, SSD는 (예를 들어 깜빡거림(blinking)을 중단함으로써 LED를 통해, 이벤트를 통해, 로그를 통해, 그리고/또는 SMART 로그 0xF9을 통해) 테스트가 완료되었다는 것을 표시하고, 예를 들어 SSD의 모든 동작들을 중지하는 펌웨어를 통해 유휴 모드로 진입한다(SSD 대기(926)).
SSD가 호스트에 커플링된 채 테스트를 구동하면, 일부 사용 시나리오들에서, 호스트는 테스트가 완료될 때를 결정하기 위해 (출력 SMART 로그와 같은) 진행, 상태, 및/또는 결과 정보를 판독한다. SSD가 호스트 또는 랙에 커플링된 채 테스트를 구동하면, 일부 사용 시나리오들에서, 테스트 요원은 테스트가 완료될 때를 결정하기 위해 LED를 관측한다. 테스트가 완료될 때, SSD가 호스트로부터 랙으로 이동되면(SSD 이동(916)), SSD는, 예를 들어 랙으로부터 호스트로 SSD를 재포지셔닝하는 테스트 요원에 의해, 파워 다운되고, 랙으로부터 언커플링되며, 호스트에 커플링된다(SSD 이동(927)).
테스트를 완료하고 그리고 옵션으로, 호스트에 커플링될 때 SSD를 재포지셔닝한 이후에, 흐름의 구동 부분(MST 구동(920)이 완료되고 다양한 완료-동작 부분(MST 종료(930))이 시작한다. 흐름은, 예를 들어 호스트를 통해, 아직 인가되지 않았으면 SSD에 전력을 인가하게(SSD 파워 온(931)) 진행한다. 호스트는 SSD로부터 테스트의 진행, 상태, 및/또는 결과 정보 중 모두 또는 임의의 부분들을 판독한다(결과들(이벤트 로그, 결함들, SMART 로그 0xF9) 판독(932)). 일부 실시예들에서, 결과 정보는 나타난 결함 리스트의 최종 상태를 포함한다. 호스트가 진행, 상태, 및/또는 결과 정보의 판독을 완료한 이후에, 호스트는 SSD가 MST 모드를 빠져나오기를 요청한다(MST_COMPLETE 커맨드 전송(933)). 그 후, 호스트는, 예를 들어 하나 또는 그 초과의 소거 및/또는 SMART 로그 커맨드들을 SSD에 전송함으로써, 테스트 이후에 클린 업할 것을 SSD에 지시한다(소거 보안, SMART 클리어(934)). 그 후, 호스트는 일 상태에서 SSD를 벗어나 SSD를 파워 다운하여, 다음의 파워 온시에, SSD는 SATA 데이터 커맨드들과 같은 데이터 커맨드들을 수신하고 프로세싱하도록 인에이블된다(SATA 동작을 위한 SSD 준비(935)). 그 후, 테스트 요원은 호스트로부터 SSD를 언커플링한다(SSD 접속해제(936)). 언커플링 이후에, 흐름의 다양한 완료-동작 부분(MST 종료(930))이 완료되고, 전체 흐름이 완료된다(종료(999)). 이제, SSD는 시스템 벤더 및/또는 고객에 대한 판매를 위해 준비된다.
일부 실시예들 및/또는 사용 시나리오들에서(예를 들어, SSD가 테스트를 수행하면서 호스트에 커플링되어 남아 있을 때), 호스트는 (예를 들어, 특정한 SCT 커맨드를 통해서와 같이) ABORT 커맨드를 SSD에 전송함으로써 테스트를 조기에 종료할 것을 SSD에 지시한다. 이에 응답하여, SSD는 테스트의 커맨드들의 실행을 중단하고 유휴 모드에 진입한다.
MST 모드에 진입하기 위한 호스트로부터의 지시 이후 그리고 테스트 완료 또는 중지 이전에, SSD는 파워 다운 및 파워 업 사이클 이후에 테스트를 재개한다. 구체적으로는, SSD가 923, 924, 및 925 중 어느 하나에 있는 동안 파워 다운되면면, 다음의 파워 업시에, SSD는 테스트의 수행이 파워 다운으로 인해 중단된 테스트를 재개한다.
다양한 실시예들 및/또는 사용 시나리오들에서, 호스트는 (나타난 결함 리스트의 최종 상태 및 이벤트 로그와 같은) SSD로부터 판독된 진행, 상태, 및/또는 결과 정보 중 모두 또는 임의의 부분들을 보관한다. 다양한 실시예들 및/또는 사용 시나리오들에서, 호스트는 (테스트의 커맨드들 중 하나 또는 그 초과의 것과 같은) 입력 로그 중 모두 또는 임의의 부분들을 보관한다(archive). 다양한 실시예들 및/또는 사용 시나리오들에서, 호스트는 (예를 들어, 하나 또는 그 초과의 스크립들, 프로그램들, 및/또는 분석 툴들을 통해) SSD로부터 판독된 다양한 정보 엘리먼트들 중 모두 또는 임의의 부분들을 해석한다.
(생산 흐름에서와 같은) 일부 실시예들 및/또는 사용 시나리오들에서, 테스트를 형성하는 커맨드들의 생성(MST 커맨드들의 생성(912))은 생산 운전을 형성하는 SSD 인스턴스들의 집합 또는 동일한 제품 라인으로부터의 SSD 인스턴스들의 집합과 같은 SSD들의 그룹에 대해 1회 수행된다. 도면에 예시된 흐름 중 나머지는 SSD 인스턴스들 각각에 대해 수행된다. 흐름(또는 이것의 변형들)은 생산(예를 들어, 제조)시의 사용으로 제한되지 않는다. 다양한 실시예들 및/또는 사용 시나리오들에서, 흐름(또는 그것의 변형들)은 번-인, 품질 보장 서비스들/동작들, 고장 분석, 및/또는 RMA/서비스 동작들 중 임의의 하나 또는 그 초과의 것의 일부로서 사용된다.
다양한 실시예들 및/또는 사용 시나리오들에서, 특정한 SCT 커맨드들(예를 들어, START, COMPLETE, 및 ABORT) 중 하나 또는 그 초과의 것은 벤더-특정형이다.
도 9b는 예를 들어, 도 9a에 관하여 설명한 바와 같이, 하나 또는 그 초과의 SSD들상에서 하나 또는 그 초과의 MST들을 수행하는 시스템의 실시예의 선택된 상세사항들을 예시한다. 시스템은 SSD.1(990.1) ... SSD.N(990.N)로서 예시된 하나 또는 그 초과의 SSD들에 커플링된 호스트/랙(980)을 포함한다. 일부 실시예들 및/또는 사용 시나리오들에서, 예시된 호스트/랙은 (예를 들어, MST를 준비하고, 구동하며, 종료하기 위해) SSD들에 의해 수행된 MST의 지속기간 동안 사용된 컴퓨팅 호스트를 나타낸다. 일부 실시예들 및/또는 사용 시나리오들에서, 예시된 호스트/랙은 (예를 들어, MST를 준비하고, 종료하기 위해) SSD들에 의해 수행된 MST의 맨 처음 및 맨 마지막 부분들 동안 사용된 컴퓨팅 호스트 및 (예를 들어, MST를 구동하기 위해) MST의 중간 부분에 대한 전력-공급 테스트 랙을 나타낸다. 호스트/랙은 커맨드들 및/또는 데이터를 SSD들에 제공하고, SSD들로부터 정보 및/또는 데이터를 수신하도록 인에이블된다. 호스트/랙은 SSD에 전력을 제공하도록 인에이블되지만 SSD들에 커맨드들 및/또는 데이터를 제공할 수는 없다.
호스트/랙은, 예를 들어 인터넷을 통해, 어디에서나 컴퓨팅 및 스토리지 자원들과의 통신을 인에이블하기 위해 LAN/WAN(984)에 커플링된다. 호스트/랙은 SSD들로의 애플리케이션에 대한 다양한 테스트들 뿐만 아니라 SSD들에 대한 테스트들의 애플리케이션으로부터의 결과들의 보존을 인에이블하도록 스토리지(985)에 커플링된다. 호스트/랙은 개념적으로, MST 커맨드들(981)로서 예시된 적어도 하나의 SSD 테스트를 포함한다. 호스트/랙은 개념적으로, 결과들(982)로서 예시된 적어도 하나의 MST를 수행하는 SSD들 중 적어도 하나의 결과들의 적어도 하나의 집합을 포함한다. 호스트/랙(980) "내에" 예시되었지만, 다양한 실시예들 및/또는 사용 시나리오들에서, MST 커맨드들(981) 및/또는 결과들(982)은 LAN/WAN(984)을 통해 액세스가능한 원격 자원들에 보유되고 그리고/또는 스토리지(985)의 모두 또는 임의의 부분들에 보유된다.
SSD.1(990.1)은, 플래시(996)로서 예시된, 대용량 스토리지를 구현하기 위해 하나 또는 그 초과의 NVM들을 포함한다. SSD.1(990.1)은 MST에 관한 특정한 능력들을 구현한다. 다양한 실시예들에서, 특정한 능력들은 하드웨어, 소프트웨어, 및 펌웨어의 임의의 하나 또는 그 초과의 다양한 조합들에 의해 구현된다. 특정한 능력들은 SMART 로그 0xF8(MST 커맨드들)(991), LED(진행 표시자)(992), 이벤트 로그(진행, 결과들)(993), SMART 로그 0xF9(진행, 결과들)(994), 및 결함 리스트들(995) 중 임의의 하나 또는 그 초과의 것을 포함한다. 개별 엘리먼트들로서 예시하였지만, 다양한 실시예들에서, 능력들 중 하나 또는 그 초과의 것은 동일한 엘리먼트에서 구현된다. 예를 들어, SMART 로그 0xF8(MST 커맨드들)(991) 및/또는 SMART 로그 0xF9(진행, 결과들)(994)은 특정한 LBA들과 연관된 호스트 데이터를 저장하기 위해 사용된 플래시의 부분들과 별개인 부분과 같은 플래시(996)의 부분에서 구현된다. 다른 예에 있어서, 이벤트 로그(진행, 결과들)(993)은 플래시(996)의 부분에서 구현된다.
다양한 실시예들에서, SMART 로그 0xF8(MST 커맨드들)(991), 이벤트 로그(진행, 결과들)(993), SMART 로그 0xF9(진행, 결과들)(994), 및 결함 리스트들(995) 중 임의의 하나 또는 그 초과의 것은 SSD의 디바이스 메모리의 모두 또는 임의의 부분들을 통해 구현된다. SSD 디바이스 메모리의 하나 또는 그 초과의 위치들은 호스트 LBA들과 연관된 메모리 공간과는 별개인 SSD 디바이스 메모리 공간을 통해 어드레스가능하다. SSD 디바이스 메모리 공간은 SSD의 호스트 인터페이스를 통해 호스트에 의해 제공된 하나 또는 그 초과의 커맨드들을 통해 호스트에 액세스가능하다. 예를 들어, 호스트는 SSD의 SATA 인터페이스를 통해 SSD의 판독/기록 디바이스 메모리에 커맨드들을 제공한다.
SMART 로그 0xF8(MST 커맨드들)(991)은 호스트/랙(980)에 의해 제공된 테스트들의 커맨드들에 대한 스토리지를 제공한다. 테스트들을 수행할 때, SSD.1(990.1)은 SMART 로그 0xF8(MST 커맨드들)(991)로부터의 커맨드들을 페치하고 실행한다. LED(진행 표시자)(992)는 테스트가 완료되었는지 여부의 표시를 제공한다. 이벤트 로그(진행, 결과들)(993) 및 SMART 로그 0xF9(진행, 결과들)(994)은 테스트의 진행 표시들 및 결과들에 대한 스토리지를 제공한다. SSD.1(990.1)은 이벤트 로그(진행, 결과들)(993) 및 SMART 로그 0xF9(진행, 결과들)(994)에 대한 액세스를 호스트/랙(980)에 제공하도록 인에이블된다. 예를 들어, 테스트가 구동될 때, 호스트/랙은 테스트가 완료되었는지 여부를 결정하기 위해 이벤트 로그에 액세스한다. 다른 예에 있어서, 테스트가 완료될 때, 호스트/랙은 테스트를 수행하면서 SSD.1(990.1)에 의해 저장된 것과 같은 테스트의 결과들을 획득하기 위해 SMART 로그 0xF9에 액세스한다. 결함 리스트(995)는 플래시(996)의 블록들을 동작시킬 수 없거나 상대적으로 불량하게 수행하는 리스트에 대한 스토리지를 제공한다. SSD.1(990.1)은 결함 리스트(995)에 대한 액세스를 호스트/랙(980)에 제공하도록 인에이블된다. 예를 들어, 테스트가 완료된 이후에, 호스트/랙은 잠재적인 추후 분석을 위해 SSD에 관한 정보를 보관하기 위해 결함 리스트에 액세스한다.
명시적으로 예시하지 않았지만, SSD.N(990.N)은 SSD.1(990.1)과 유사하거나 동일한 엘리먼트들을 포함한다.
일부 환경들에서, MST 테스트는 예를 들어, 돌발적(catastrophic) SSD 고장 또는 불능으로 인해 실패하여 MST 테스트에서 진행한다. 고장 소스들은 펌웨어 '패닉(panic)', 입력 SMART 로그에서의 부정확한 데이터, 및 타임아웃 값을 초과하는 사이클 시간을 포함한다. 일부 사용 시나리오들에서, MST 테스트는 고장을 나타내는 하나 또는 그 초과의 조건들을 특정하는 (예를 들어, 파라미터들로서 표현된) 기준을 포함한다. 기준은 다수의 정정가능한 하위 레벨 및/또는 상위 레벨 ECC 에러들, 다수의 정정불가능한 하위 레벨 및/또는 상위 레벨 ECC 에러들, 다수의 프로그램 에러들, 다수의 소거 에러들, 및 비트 에러 대 무에러(error-free) 판독들의 비율을 포함한다.
삭제
다양한 실시예들에서, 도 9b의 일부 엘리먼트들은 도 9a의 일부 엘리먼트들에 의해 설명된 동작들과 관련된다. 예를 들어, 도 9b의 호스트/랙(980)은 호스트 및/또는 랙에 의해 수행된 도 9a의 동작들 중 임의의 하나 또는 그 초과의 것을 수행한다. 도 9b의 SSD.1(990.1) ... SSD.N(990.N) 중 임의의 하나 또는 그 초과의 것은 SSD에 의해 또는 SSD에 관하여 수행된 도 9a의 동작들의 오브젝트들을 나타낸다. 유사하게는, 도 9b의 SSD.1(990.1)의 특정한 엘리먼트들은 도 9a의 특정한 엘리먼트들과 관련된다. 예를 들어, 도 9b의 SMART 로그 0xF8(MST 커맨드들)(991)은 도 9a의 SMART 로그 0xF8에 MST 커맨드들을 기록(914) 및 SMART 로그 0xF8 커맨드들을 실행(923)에서 나타나는 Smart 로그 0xF8의 실시예이다. 다른 예에 있어서, 도 9b의 LED(진행 표시자)(992)는 진행 표시(LED, 이벤트 로그, SMART 로그 0xF9)(924)의 LED의 실시예이다. 다른 예에 있어서, 도 9b의 이벤트 로그(진행, 결과들)(993)는 도 9a의 진행 표시(LED, 이벤트 로그, SMART 로그 0xF9)(924)의 이벤트 로그 및 결과들(이벤트 로그, 결함들, SMART 로그 0xF9) 판독(932)의 실시예이다. 다른 예에 있어서, 도 9b의 SMART 로그 0xF9(진행, 결과들)(994)는 도 9a의 진행 표시(LED, 이벤트 로그, SMART 로그 0xF9)(924)의 SMART 로그 0xF9 및 결과들(이벤트 로그, 결함들, SMART 로그 0xF9) 판독(932)의 실시예이다. 다른 예에 있어서, 도 9b의 결함 리스트(995)는 도 9a의 결과들(이벤트 로그, 결함들, SMART 로그 0xF9) 판독(932)의 결함들의 실시예이다.
다양한 실시예들에서, 도 1a 및/또는 도 1b의 엘리먼트들 중 모두 또는 임의의 부분들은 도 9a 및 도 9b의 엘리먼트들 중 모두 또는 임의의 부분들의 예시적인 실시예들이다. 예를 들어, 도 1a 및 도 1b의 SSD(101)는 도 9a의 동작들에 관해 참조되는 SSD 및 도 9b의 SSD.1(990.1) ... SSD.N(990.N) 중 임의의 하나 또는 그 초과의 것의 예시적인 실시예이다. 다른 예에 있어서, 도 1b의 호스트(102)는 도 9a의 동작들에 관한 호스트 및/또는 랙 그리고 도 9b의 호스트/랙(980)의 예시적인 실시예이다. 다른 예에 있어서, 도 1a의 CPU(171)는 도 9a의 동작들과 관련하여 참조되는 펌웨어 및 도 9b의 엘리먼트들을 실행하도록 인에이블된 프로세서의 예시적인 실시예이다. 다른 예에 있어서, 도 1b의 FW(106)는 도 9a의 동작들과 관련하여 참조되는 펌웨어 및 도 9b의 엘리먼트들의 예시적인 실시예이다.
다양한 실시예들에서, 도 9a에 의해 설명된 흐름 중 모두 또는 임의의 부분들은 도 6 및/또는 도 7의 맥락에 관하여 설명된 바와 같은 SSD의 테스트들 중 모두 또는 임의의 부분들(예를 들어, 공장 테스트들 및/또는 MST)의 예시적인 실시예들이다. 다양한 실시예들 및/또는 사용 시나리오들에서, (호스트에 의해 수행된 동작들과 같은) 도 9a에 의해 설명된 흐름 중 모두 또는 임의의 부분들은 도 6의 제조 소프트웨어 툴(616)을 통해 구현된다. 다양한 실시예들에서, 도 9b의 모두 또는 임의의 부분들은 도 7b의 모두 또는 임의의 부분들의 예시적인 실시예들이다(예를 들어, 호스트/랙(980)은 호스트(780P)의 예시적인 실시예이고, SSD.1(990.1).....SSD.N(990.N)은 SSD.1(790P.1).....SSD.N(790P.N)의 예시적인 실시예이다).
도 10은 파라미터 쌍들 및 파라미터 식별자/값 쌍들의 연관된 숫자들(numbers) 뿐만 아니라 MST 커맨드들의 실시예의 선택된 상세사항들을 예시한다. 전체 MST(예를 들어, MST 입력(1000))는 하나 또는 그 초과의 커맨드들 및 종료 마커를 갖는 커맨드들의 시퀀스이다. 다양한 실시예들에서, MST 입력(1000)은 (예를 들어, 도 9a의 SMART 로그 0xF8에 MST 커맨드들을 기록(914) 및/또는 도 9b의 SMART 로그 0xF8(MST 커맨드들)(991)에서와 같이) 테스트될 SSD의 입력 SMART 로그에 호스트 의해 저장될 뿐만 아니라 (예를 들어, 도 9a의 SMART 로그 0xF8 MST 커맨드들의 실행(923)에서와 같이 SSD에 의해 페치되고 실행된 커맨드들을 나타낸다.
각 커맨드 다음에는 숫자가 오는데, 이 숫자는 이 숫자 다음에 얼마나 많은 파라미터 쌍들이 있는지를 나타내며, 이 숫자 다음에는 제로 또는 그 초과의 파라미터 식별자 및 값 쌍들이 있다. 최종 커맨드 다음에는 종료 마커가 있다. 일부 사용 시나리오들에서, MST는, 옵션으로 하나 또는 그 초과의 파라미터 식별자 및 값 쌍들을 갖는 단일 커맨드를 포함한다. 일부 사용 시나리오들에서, MST는 각각이 개별 파라미터 정보를 갖는 임의의 수의 커맨드들을 포함하고, 커맨드들의 수는 테스트될 SSD의 입력 SMART 로그의 사이즈에 의해서만 제한된다.
도면에 구체적으로 예시된 바와 같이, MST 입력(1000)은, 종료 마커(센티넬(Sentinel)(1090))가 후속하는 N개의 커맨드들(커맨드 1 & 파라미터 1(1010), 커맨드 2 & 파라미터 2(1020) ... 커맨드 N & 파라미터 N(1080))을 포함한다. SSD는 (예를 들어, MST 입력을 프로세싱하는 펌웨어에 의해) MST에 더 이상 커맨드들이 존재하지 않는다는 표시자로서 센티넬을 인식하고, 이에 응답하여, SSD는 (예를 들어, 도 9a의 SSD 대기(926)에서와 같이) 테스트가 완료되어 유휴 모드에 진입한다는 것을 나타낸다.
커맨드 1 & 파라미터들 1(1010)은, 커맨드(커맨드 1(1011)) 다음에 부분을 갖는 것으로서 상세하게 예시되며, 이 부분은 얼마나 많은 파라미터 쌍들(파라미터 쌍들의 수(1012))이 후속하는지를 나타내며 파라미터 식별자 값 쌍들(파라미터 ID & 값 쌍 1(1013) ... 파라미터 ID & 값 쌍 N(1014))처럼 파라미터 쌍들로 종료한다. 다양한 사용 시나리오들에서, 커맨드 1 & 파라미터들 1(1010)은 MST에서 유일한 커맨드이거나 대안적으로는 MST에서 복수의 커맨드들 중 제 1 커맨드이다. 일부 다양한 시나리오들에서, 파라미터 쌍들의 수(1012)는 제로이고(파라미터 ID & 값 쌍 1(1013) ... 파라미터 ID & 값 쌍 N(1014)은 생략됨), 파라미터 쌍들의 수(1012)는 1인(파라미터 ID & 값 쌍 1(1013)만이 커맨드 1 & 파라미터들 1(1010)에 대해 존재함) 식이다. 명확하게 예시하지 않았지만, 커맨드 2 & 파라미터들 2(1020) ... 커맨드 N & 파라미터들 N(1080) 각각은 각각의 부분들을 가지며, 이 각각의 부분들은 얼마나 많은 각각의 파라미터 쌍들이 각 커맨드에 후속하는지 뿐만 아니라 각각의 파라미터 식별자/값 쌍들을 나타낸다.
도 11은 MST들에서 사용가능한 다양한 커맨드들(예를 들어, 펌웨어를 통해 실행가능한 지원된 MST 커맨드들)의 실시예의 선택된 상세사항들을 예시한다. MST 커맨드들(1100)은 복수의 커맨드들에 대한 커맨드 코드, 커맨드 네임, 및 커맨드 기술(description)을 예시한다. MST 커맨드들은 도 10의 MST 입력(1000)으로서 예시된 바와 같이, MST를 공식화하는데 있어서 커맨드들로서 사용가능하다. 도면에 의해 설명된 커맨드들은 드라이브 기록(1101), 드라이브 소거(1102), SATA PHY 번-인(burn-in)(1103), 지연(1104), 및 스트레스 모드(1105)를 포함한다. MST내에서 흐름 제어를 수행하기 위한 커맨드들, 예를 들어, 루핑(looping) 및/또는 브랜칭(branching) 커맨드들과 같은 다른 커맨드들이 예상된다. 도 11의 맥락에서, (본 명세서 다른 곳에서 설명되는 바와 같이) SSD는 '드라이브'의 일례이다.
도 12는 MST의 일례의 선택된 상세사항들을 예시한다. 예시적인 MST 입력(1200)은 집합적으로 예시적인 MST를 형성하는 복수의 커맨드들 및 종료 마커에 대한 커맨드들 및 연관된 기술들(descriptions)을 예시한다. 예시적인 MST는 (예를 들어, 도 9a의 SMART 로그 0xF8에 MST 커맨드들을 기록(914) 및/또는 도 9b의 SMART 로그 0xF8(MST 커맨드들)(991)에서와 같이) 테스트될 SSD의 입력 SMART 로그에 호스트 의해 저장될 뿐만 아니라 (예를 들어, 도 9a의 SMART 로그 0xF8 MST 커맨드들의 실행(923)에서와 같이) SSD에 의해 페치되고 실행될 때 MST 커맨드들의 시퀀스로서 사용하는데 적합하다. 도 12의 맥락에서, (본 명세서 다른 곳에서 설명되는 바와 같이) SSD는 'DRIVE' 및 '드라이브'의 일례이다.
도 13a 내지 도 13d는 특정 사용 시나리오에서 드라이브 기록 커맨드(예를 들어, 도 11의 드라이브 기록(1101))의 구현의 실시예의 선택된 상세사항들을 예시한다. 개념적으로, (예를 들어, MST 프로세싱 동안) 드라이브 기록 커맨드를 실행하는 SSD는 복수의 R-블록들과 같은 부분들에서 SSD의 플래시상에서 동작한다. 도 13a 내지 도 13d는 복수의 R-블록들로서 SSD의 플래시를 예시하고, 도면들 각각은 R-블록들의 각각의 시간 및 대응하는 상태에 대응한다. 연상기호 'Sys'는 시스템 데이터(예를 들어, 일부 또는 모든 맵 테이블들)와 연관된 R-블록에 대응한다. 연상기호 'Usr'은 (예를 들어, 호스트 판독들/기록들처럼 수신되거나 이들로부터 발생한) 사용자 데이터와 연관된 R-블록에 대응한다. 점선의 대형 'X'는 '불량'(예를 들어, 동작불능, 결함, 및/또는 상대적으로 높은 에러 레이트를 특징으로 하는) R-블록에 대응한다. 연상기호 'Pat'는 예를 들어, 특정 패턴, 복수의 특정 패턴들 중 선택된 하나, 및/또는 컴퓨팅된 패턴을 갖는 (예를 들어, SSD의 펌웨어에 의한) 드라이브 기록 커맨드의 실행을 통해 기록된 R-블록에 대응한다.
드라이브 기록 커맨드는 각 반복 동안 하나 또는 그 초과의 R-블록들에 걸쳐 기록들을 반복적으로, 개념적으로는, 단계적으로(stepping) 실행한다. 도 13a 내지 도 13d에 예시된 실시예에서, 사용자 데이터와 연관된 R-블록들만이 기록들에 영향을 받는다(예를 들어, 시스템 데이터와 연관된 R-블록들은 보존된다). 드라이브 기록 커맨드의 실행이 진행할수록, (예를 들어, 펌웨어를 통해) SSD는 통계들을 주기적으로 모으고 리코딩하며, R-블록들이 고의가 아니게 소거되지 않았다는 것을 체크/검증한다. 일부 실시예들에서, 드라이브 기록 커맨드의 진행은 사이클 단위로 측정되고, 각 사이클은 적어도 1회 사용자 데이터와 연관된 R-블록들 모두의 기록에 대응한다. 드라이브 기록 커맨드의 반복들이 완료될 때, (예를 들어, 펌웨어를 통해) SSD는 R-블록들이 고의가 아니게 소거되지 않았다는 것과 모든 R-블록들이 정확하게 프로그램되었다는 것을 체크/검증한다.
도 13a는 드라이브 기록 커맨드의 실행으로 인한 임의의 변화들 이전의 시간에 대응하는, 초기 상태에서 R-블록들(1301 내지 1310)로서 SSD의 플래시를 예시한다. R-블록들(1303, 1304, 1306 내지 1308, 및 1310)은 (Usr 연상기호로 예시된 바와 같은) 사용자 데이터에 할당되고 그리고/또는 그 사용자 데이터를 포함한다. 드라이브 기록 커맨드가 임의의 R-블록을 아직 변경하지 않았기 때문에, 드라이브 기록 커맨드의 실행을 통해 기록된 R-블록들은 없다. R-블록들(1301 및 1302)은 (Sys 연상기호로 예시된 바와 같은) 시스템 데이터에 할당되고 그리고/또는 그 시스템 데이터를 포함한다. 예시된 실시예에서, 드라이브 기록 커맨드는 사용자 데이터와 연관된 R-블록들만을 변경하고, 따라서, R-블록들(1301 및 1302)은 드라이브 기록 커맨드의 실행 전반적으로 시스템 데이터와 연관되어 유지되고, 도 13b 내지 도 13d에 관련하여 더 논의하지 않는다. R-블록들(1305 및 1309)은 (점선의 대형 X로 예시된 바와 같이) 불량이다. 예시된 사용 시나리오에서, 추가의 불량 R-블록들은 발견되지 않는다(그리고 이전의 불량 R-블록 중 어느 것도 어떻게든 리페어되지 않는다). 따라서, R-블록들(1305 및 1309)은 드라이브 기록 커맨드의 실행 전반적으로 불량 R-블록들만 유지하고 도 13b 내지 도 13d에 관련하여 더 논의하지 않는다.
도 13b는 드라이브 기록 커맨드의 제 1 반복 이후의 시간에 대응하는, 제 1 반복 상태에서의 R-블록들(1301 내지 1310)을 예시한다. R-블록들(1303 및 1304)은 이제, (Pat 연상기호에 의해 예시된 바와 같은) 드라이브 기록 커맨드의 제 1 반복에 의해 기록된 각각의 패턴들을 포함한다. R-블록들(1306 내지 1308 및 1310)은 드라이브 기록 커맨드의 실행에 의해 아직 변경되지 않았고 (Usr 연상기호에 의해 예시된 바와 같은) 사용자 데이터와 연관되어 유지된다.
도 13c는 드라이브 기록 커맨드의 제 2 반복 이후의 시간에 대응하는, 제 2 반복 상태에서의 R-블록들(1301 내지 1310)을 예시한다. R-블록들(1306 및 1307)은 이제, (Pat 연상기호에 의해 예시된 바와 같은) 드라이브 기록 커맨드의 제 2 반복에 의해 기록된 각각의 패턴들을 포함한다. R-블록들(1303 및 1304)은 (Usr 연상기호에 의해 예시된 바와 같이) 사용자 데이터와 연관되지만, 드라이브 기록 커맨드의 실행 이전에 그 안에 저장된 임의의 사용자 데이터는 (예를 들어, 드라이브 기록 커맨드의 제 1 반복에 의해) 겹쳐쓰기된다. R-블록들(1308 및 1310)은 드라이브 기록 커맨드의 실행에 의해 아직 변경되지 않았고 (Usr 연상기호에 의해 예시된 바와 같은) 사용자 데이터와 연관되어 유지된다.
도 13d는 드라이브 기록 커맨드의 완료 이후의 시간에 대응하는, 최종 상태에서의 R-블록들(1301 내지 1310)을 예시한다. R-블록들(1308 및 1310)은 이제, (Pat 연상기호에 의해 예시된 바와 같은) 드라이브 기록 커맨드의 최종 반복에 의해 기록된 각각의 패턴들을 포함한다. R-블록들(1303, 1304, 1306, 및 1307)은 (Usr 연상기호에 의해 예시된 바와 같이) 사용자 데이터와 연관되지만, 드라이브 기록 커맨드의 실행 이전에 그 안에 저장된 임의의 사용자 데이터는 (예를 들어, 드라이브 기록 커맨드의 제 1 또는 제 2 반복들에 의해) 겹쳐쓰기된다.
다양한 실시예들 및/또는 사용 시나리오들에서, 드라이브 기록 커맨드는 아래의 테이블에 설명한 바와 같이, 제로 또는 그 초과의 파라미터들을 갖는다. 테이블에서의 모든 파라미터들은 옵션적이라는 것에 유의한다.
Figure 112013100014240-pct00006
다양한 실시예들 및/또는 사용 시나리오들에서, SATA PHY 번-인 커맨드는 아래의 테이블에 설명한 바와 같이, 제로 또는 그 초과의 파라미터들을 갖는다. 테이블에서의 모든 파라미터들은 옵션적이라는 것에 유의한다.
Figure 112013100014240-pct00007
MST 테스트의 일부로서 SATA PHY 번-인 커맨드를 실행하는 동안 SSD의 SATA 링크를 통해 호스트에 커플링된 SSD를 고려한다. SATA PHY 번-인 커맨드가 실행인 동안 SATA 링크는 이용가능하지 않기 때문에, 호스트는 테스트를 조기에 종료하도록 ABORT 커맨드를 SSD에 통신하는 것을 할 수 없다. 대신에, SSD가 테스트를 조기에 종료하기 위해 파워 다운된다. 일부 실시예들에서, SATA PHY 번-인 커맨드는 SATA 링크의 BIST 능력, SATA 링크의 SATA PHY, 또는 양자 모두의 활성화를 통해 적어도 부분적으로 구현된다.
일부 실시예들 및/또는 사용 시나리오들에서, 스트레스 모드 커맨드(예를 들어, 스트레스 모드(1105))는 특정 플래시 액세스들을 특정하는 MST의 구성을 가능하게 한다. 일부 환경들에서, 특정 플래시 액세스들은 특정한 제조자 또는 시스템 벤더(예를 들어, 도 6의 제조자(620) 또는 시스템 벤더(630) 중 하나)가 소유한, 액세스들의 시퀀스들이다. 스트레스 모드 커맨드는 제조자 또는 시스템 벤더가 SSD의 펌웨어에서 소유 시퀀스를 구현하지 않고, 따라서 설계 벤더(예를 들어, 도 6의 설계 벤더(610))에 소유 시퀀스를 개시하지 않고 소유 시퀀스에 따라 SSD를 사용할 수 있게 한다. 일부 사용 시나리오들에서, 제조자 또는 시스템 벤더는 예를 들어, 특정한 스트레스 모드 커맨드들 중 하나 또는 그 초과의 파라미터들 중 하나 또는 그 초과의 것을 변화시킴으로써 SSD의 플래시의 동작불능 블록들을 결정하기 위해 하나 또는 그 초과의 특정한 스트레스 모드 커맨드들을 사용한다. 다양한 사용 시나리오들에서, 소유 시퀀스는 플래시의 동작 전압, 플래시의 특정 셀들의 이용(exercising), 플래시에 대한 동작들의 주파수, 플래시의 에러 체크 레이트들, 플래시의 셀들의 기하학적 결함들, 및 플래시의 셀들 사이의 커플링 중 임의의 하나 또는 그 초과의 것에 관한 파라미터들 중 하나 또는 그 초과의 것을 변화시킨다. 일부 실시예들에서, 스트레스 모드 커맨드는 예를 들어, 도 10에 의해 예시된 바와 같은 커맨드 및 파라미터 사양에 순응하여, 어드레스, 시퀀스, 및 거동 파라미터들 중 임의의 하나 또는 그 초과의 것을 포함하도록 SSD의 펌웨어에 의해 구현된다.
도 14는 MST 결과 로그의 실시예의 선택된 상세사항들을 예시한다. MST 결과 로그(1400)는 로그 필드 및 복수의 로그 필드들에 대한 연관된 로그 필드 엘리먼트들을 예시한다. 다양한 실시예들에서, MST 결과 로그(1400) 중 모두 또는 임의의 부분들은, (예를 들어, 도 9a의 진행 표시(LED, 이벤트 로그, SMART 로그 0xF9)(924) 및 결과들(이벤트 로그, 결함들, SMART 로그 0xF9) 판독(932)에 의해 참조될 뿐만 아니라, 도 9b의 이벤트 로그(진행, 결과들)(993) 및 SMART 로그 0xF9(진행, 결과들)(994)에 의해 예시된 바와 같은) 이벤트 로그 및 SMART 로그 중 임의의 하나 또는 그 초과의 것중 모두 또는 임의의 부분들을 나타낸다. 도면에 의해 설명된 로그 필드들은 로그 헤더(1401), 테스트 상태(1402), 진행 표시자들(1403), 통계들(1404), 및 에러들(1405)을 포함한다.
아래의 테이블은 MST 결과 로그의 다양한 실시예들의 선택된 엘리먼트들을 리스트한다. 엘리먼트들 중 임의의 하나 또는 그 초과의 것은 다양한 실시예들에서 옵션적이다.
Figure 112013111548558-pct00040
아래의 테이블은 MST 이벤트 로그의 다양한 실시예들의 선택된 엘리먼트들을 리스트한다. 엘리먼트들 중 임의의 하나 또는 그 초과는 다양한 실시예들에서 옵션이다.
Figure 112013111548558-pct00041

다른 실시예 정보
(도 9b의 SSD.1(990.1)과 같은) SSD는 펌웨어를 통해 적어도 부분적으로 (도 11의 MST 커맨드들(1100)과 같은) MST 커맨드들의 프로세싱을 구현한다. 펌웨어는 (예를 들어, 비교적 낮은 특권 레벨에서) 사용자 공간에서 실행하는 모듈들 및 (예를 들어, 비교적 높은 특권 레벨에서) 코어 공간에서 실행하는 모듈들과 같은 다양한 모듈들을 포함한다. 일부 실시예들에서, 사용자 공간 모듈은 파싱 및 커맨드 실행 모듈들을 포함한다. 일부 실시예들에서, 코어 공간 모듈들은 예를 들어, 리사이클러(예를 들어, 도 1a의 리사이클러(151))에 관련된 하드웨어 조정 모듈들을 포함한다. 일부 실시예들에서, MST 커맨드들의 프로세싱 및/또는 MST 모드에서의 동작에 특정한 펌웨어의 부분들은 에러 처리 및/또는 리포팅 루틴들로의 "텐터클(tentacle)"들, 또는 MST 모드에 구체적으로 관련되지 않은 다른 루트들을 포함한다.
아래의 테이블은 MST 모드 중 모두 또는 임의의 부분들을 구현하는 펌웨어의 선택된 예시적인 루틴들을 리스트한다.
Figure 112013111548558-pct00042
아래의 테이블은 사용자 공간과 코어 공간 사이의 선택된 API 엔트리 포인트들을 리스트한다(엔트리 포인트들은 MST 모드 중 모두 또는 임의의 부분들을 구현하는 펌웨어에 의해 구현된다).
Figure 112013100014240-pct00011
예시적인 구현 기술들
일부 실시예들에서, I/O 디바이스 또는 그것의 부분(들), 예를 들어, 하나 또는 그 초과의 SSD들을 포함하는 스토리지 I/O 디바이스와 같은 I/O 디바이스의 VDMM 및/또는 SSD MST와 사용에 적합한 SSD 및/또는 SSD 제어기에 의해 수행된 동작들 중 모두 또는 임의의 부분들의 다양한 조합들이, 예를 들어, 플래시 메모리들, 컴퓨팅-호스트 플래시 메모리 제어기, 및/또는 (도 1a의 SSD 제어기(100)와 같은) SSD 제어기, 및 프로세서, 마이크로프로세서, 시스템-온-칩, 응용 주문형 집적 회로, 하드웨어 가속기, 또는 상기 언급한 동작들 중 모두 또는 부분들을 제공하는 다른 회로를 통해, 컴퓨터 시스템에 의한 프로세싱과 호환가능한 사양에 의해 특정된다. 그 사양은 하드웨어 기술(description) 언어, 회로 기술들(descriptions), 네트리스트(netlist) 기술들, 마스크 기술들 또는 레이아웃 기술들과 같은 다양한 기술들에 따른다. 예시적인 기술들은: 베릴로그(Verilog), VHDL, SPICE, PSpice와 같은 SPICE 변형들, IBIS, LEF, DEF, GDS-II, OASIS 또는 다른 기술들을 포함한다. 다양한 실시예들에서, 프로세싱은 하나 또는 둘 이상의 집적 회로들 상의 포함을 위해 적합한 로직 및/또는 회로를 생성하고, 검증하거나 특정하기 위해 해석(interpretation), 컴필레이션, 시뮬레이션 및 합성의 임의의 조합을 포함한다. 다양한 실시예들에 따른 각각의 집적 회로는 다양한 기술들에 따라 설계가능 및/또는 제조가능하다. 기술들(techniques)은 (필드 또는 마스크 프로그램가능한 게이트 어레이 집적 회로와 같은) 프로그램가능 기술, (전적 또는 부분적 셀-기반 집적 회로와 같은) 세미-커스텀(semi-custom) 기술 및 (실질적으로 특화되는 집적 회로와 같은) 풀-커스텀(full-custom) 기술 및 이들의 임의의 조합 또는 집적 회로들의 설계 및/또는 제조와 호환가능한 임의의 다른 기술을 포함한다.
일부 실시예들에서, 한 세트의 명령들이 저장되어 있는 컴퓨터 판독가능한 매체에 의해 설명된 바와 같은 동작들의 전부 또는 일부들의 다양한 조합들은, 하나 또는 둘 이상의 프로그램 명령들의 실행 및/또는 해석에 의해, 하나 또는 둘 이상의 소스 및/또는 스크립트 언어 구문들의 해석 및/또는 컴파일링에 의해, 또는 프로그래밍 및/또는 스크립팅 언어 구문들에 표현된 정보를 컴파일링, 변환, 및/또는 해석함으로써 생성되는 이진 명령들의 실행에 의해 수행된다. 구문들은 (C, C++, 포트란, 파스칼, Ada, Java, VBscript 및 쉘(Shell)과 같은) 임의의 표준 프로그래밍 또는 스크립팅 언어와 호환가능하다. 프로그램 명령들, 언어 구문들 또는 이진 명령들 중 하나 또는 둘 이상은 하나 또는 둘 이상의 컴퓨터 판독가능한 스토리지 매체 엘리먼트들 상에 옵션으로 저장된다. 다양한 실시예들에서, 프로그램 명령들 중 일부, 전부 또는 다양한 부분들은 하나 또는 둘 이상의 함수들, 루틴들, 서브-루틴들, 인-라인(in-line) 루틴들, 절차들, 매크로들 또는 이들의 일부들로서 실현된다.
실시예들은 SSD의 비휘발성 메모리의 하나의 예로서 플래시 메모리 디바이스들을 사용하여 설명되었다. 다수의 다른 타입들의 휘발성 또는 비휘발성 메모리 디바이스들이 플래시 메모리 디바이스들 대신에 또는 그에 부가하여 다수의 이들 실시예들에서 적용가능하고 사용가능하며, 다수의 상이한 타입들의 메모리 디바이스들을 사용하는 실시예들이 있다. 게다가, 실시예들은 I/O 디바이스의 타입과 같은 전자 컴포넌트의 예로서 SSD를 사용하여 설명되었다. 여기에 설명한 기술들은 다른 타입들의 I/O 디바이스들, 컴퓨터들, 네트워킹 장비, 및 다른 형태들의 전자 장비와 같은 많은 상이한 전자 컴포넌트들에 동일하게 적용가능하다.
결론
단지 텍스트 및 도면들을 준비하는데 편의를 위해 특정 선택들이 설명에서 구성되었으며 반대의 표시가 존재하지 않는 한 그 선택들은 그 자체가, 설명된 실시예들의 구조 또는 동작에 관한 추가적인 정보를 전달하는 것으로서 해석되어서는 안된다. 선택들의 예들은: 실시예들의 특징들 및 엘리먼트들을 식별하고 참조하기 위해 이용되는 엘리먼트 식별자들(예를 들어, 콜아웃들(callouts) 또는 수치적 지시자들)의 특정 구조 또는 할당 그리고 도면 넘버링을 위해 이용되는 지시들의 특정 구조 또는 할당을 포함한다.
용어들 "포함하다(includes)" 또는 "포함하는(including)"은 구체적으로, 허용범위가 넓은(open-ended) 범위의 논리적 세트들을 설명하는 추상적 개념들(abstractions)로서 해석되도록 의도되며 용어 "~내의(within)"가 명시적으로 후속하지 않는 한 물리적 제한(physical containment)을 전달하는 것을 의미하지 않는다.
전술한 실시예들이 설명 및 이해의 명확화를 목적으로 다소 상세히 설명되었지만, 본 발명은 제공된 상세사항들로 제한되지 않는다. 본 발명의 많은 실시예들이 존재한다. 개시된 실시예들은 예시적이며 제한적이지 않는다.
설명에 일치하는 구성, 배열 및 이용에서의 많은 변형들이 가능하며, 이러한 많은 변형들은 발행 특허의 청구항들의 범위 내에 속함이 이해될 것이다. 예를 들어, 상호접속 및 기능-유닛(function-unit) 비트-폭들, 클록 속도들 및 사용되는 기술의 타입은 각 컴포넌트 블록에서의 다양한 실시예들에 따라 가변적이다. 상호접속 및 로직에 정해지는 명칭들은 단지 예시적이며, 설명된 개념들을 제한하는 것으로 해석되어서는 안 된다. 순서도 및 흐름도 프로세스, 동작 및 기능 엘리먼트들의 순서 및 배열은 다양한 실시예들에 따라 가변적이다. 또한, 구체적으로 반대로 서술되지 않는 한, 특정된 값 범위들, 이용된 최대 및 최소 값들 또는 (플래시 메모리 기술 타입들; 및 레지스터들 및 버퍼들에서의 엔트리들 또는 스테이지들의 수와 같은) 다른 특정 사양들은 단지 설명된 실시예들에 대한 것이며, 구현 기술에서의 개선들 및 변경들을 따를(track)것이 예상되며, 제한들로서 해석되어서는 안 된다.
기술분야에 알려진 기능적으로 동등한 기술들이, 다양한 컴포넌트들, 서브-시스템들, 동작들, 기능들, 루틴들, 서브-루틴들, 인-라인 루틴들, 절차들, 매크로들 또는 이들의 일부들을 구현하도록, 설명된 것들 대신에 사용가능하다. 실시예의 기능이 (하드웨어에서의 이전의 기능들의 소프트웨어로의 이동을 용이하게 하는) 더 빠른 프로세싱 및 (소프트웨어에서의 이전의 기능들의 하드웨어로의 이동을 용이하게 하는) 더 높은 집적 밀도의 설계 제약들 및 기술 트렌드들에 의존하기 때문에, 실시예들의 다수의 기능적 양상들이 하드웨어(예를 들어, 일반적으로 전용 회로) 또는 소프트웨어(예를 들어, 프로그램된 제어기 또는 프로세서의 일부 방식을 통하여)에서 선택적으로 실현가능하다는 것이 또한 이해된다. 다양한 실시예들에서의 특정한 변형들은, 파티셔닝하는데 있어서의 차이들; 상이한 폼 팩터들 및 구성들; 상이한 운영 시스템들 및 다른 시스템 소프트웨어의 사용; 상이한 인터페이스 표준들, 네트워크 프로토콜들, 또는 통신 링크들의 사용; 및 특정한 애플리케이션의 고유 엔지니어링 및 비즈니스 제약들에 따라 본원에 설명된 개념들을 구현할 때 기대되는 다른 변형들을 포함하지만, 이에 제한되지 않는다.
실시예들은 설명된 실시예들의 많은 양상들의 최소 구현을 위해 요구되는 것을 훨씬 넘어선 상세 및 환경적 컨텍스트로 설명되었다. 기술분야의 당업자는 일부 실시예들이 나머지 엘리먼트들 사이의 기본적 협력을 변경하지 않고서 개시된 컴포넌트들 또는 특징들을 생략함을 인식할 것이다. 따라서 개시된 상세사항들 중 다수는 설명된 실시예들의 다양한 양상들을 구현하는데 요구되지 않음이 이해된다. 나머지 엘리먼트들이 종래 기술과 구별가능한 범위까지, 생략되는 컴포넌트들 및 특징들은 본원에 설명된 개념들에 대해 제한하지 않는다.
설계에 있어서 이러한 모든 변형들은 설명된 실시예들에 의해 전달되는 교시들에 대한 비현실적(insubstantial) 변경들이다. 본원에 설명된 실시예들은 다른 컴퓨팅 및 네트워킹 애플리케이션들로의 광범위한 적용가능성을 가지며, 설명된 실시예들의 특정 애플리케이션 또는 산업으로 제한되지 않음이 또한 이해된다. 본 발명은 따라서, 발행 특허의 청구항들의 범위 내에 포괄되는 모든 가능한 수정들 및 변형들을 포함하는 것으로 해석된다.

Claims (44)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 스토리지 디바이스의 제조 테스트를 제어하기 위한 방법으로서,
    I/O 디바이스 제어기와 호환가능한 펌웨어를 제공하는 단계;
    I/O 디바이스의 레퍼런스 설계를 제공하는 단계;
    비휘발성 메모리 디바이스들의 리스트를 제공하는 단계 ―상기 리스트는 복수의 비휘발성 메모리 디바이스 제조자들로부터의 비휘발성 메모리 디바이스들을 포함함―; 및
    상기 I/O 디바이스의 제조 인스턴스에 상기 펌웨어를 다운로딩하도록 인에이블되고, 상기 I/O 디바이스의 상기 제조 인스턴스에게 상기 I/O 디바이스의 제조 셀프 테스트 및 상기 I/O 디바이스의 상기 제조 인스턴스의 플래시 메모리의 테스트 중 하나 또는 그 초과를 수행하게 지시하도록 추가로 인에이블되는 제조 소프트웨어 툴을 제공하는 단계
    를 포함하고, 상기 펌웨어와 함께 상기 I/O 디바이스 제어기는 상기 I/O 디바이스 레퍼런스 설계 및 상기 리스트 중의 임의의 상기 비휘발성 메모리 디바이스들을 통해 상기 I/O 디바이스를 구현하도록 인에이블되는, 스토리지 디바이스의 제조 테스트를 제어하기 위한 방법.
  23. 제 22 항에 있어서,
    상기 I/O 디바이스는 고체-상태 디스크(SSD)를 포함하고, 상기 I/O 디바이스 제어기는 SSD 제어기를 포함하고, 상기 레퍼런스 설계는 SSD 레퍼런스 설계를 포함하는, 스토리지 디바이스의 제조 테스트를 제어하기 위한 방법.
  24. 제 23 항에 있어서,
    상기 SSD는 복수의 클래스들의 SSD들로부터의 제 1 특정 클래스의 SSD이고;
    상기 펌웨어와 함께 상기 SSD 제어기는 적어도, 상기 SSD 레퍼런스 설계 및 상기 리스트 중 임의의 상기 비휘발성 메모리 디바이스들을 통해 제 2 특정 클래스의 SSD를 구현하도록 추가로 인에이블되며,
    상기 클래스들의 SSD들은 기업-클래스 SSD, 클라우드-클래스 SSD, 산업-클래스 SSD, 및 클라이언트-클래스 SSD를 포함하는, 스토리지 디바이스의 제조 테스트를 제어하기 위한 방법.
  25. 스토리지 디바이스의 제조 테스트를 제어하기 위한 방법으로서,
    복수의 펌웨어 이미지들로의 액세스를 가능하게 하는 단계; 및
    상기 펌웨어 이미지들 중 하나 또는 그 초과의 펌웨어 이미지를 I/O 디바이스에 다운로딩하도록 인에이블되고 그리고 상기 I/O 디바이스의 제조 테스트를 제어하도록 추가로 인에이블된, 제조 소프트웨어 툴과 통신하는 단계
    를 포함하고, 상기 I/O 디바이스는 스토리지 능력을 제공하는 스토리지 디바이스이고, 다운로딩된 상기 펌웨어 이미지들의 실행은 상기 I/O 디바이스의 I/O 제어기가 하나 또는 그 초과의 선택된 타입들의 플래시 메모리 디바이스들과의 동작을 통해 적어도 부분적으로 상기 스토리지 능력을 제공할 수 있게 하며,
    상기 선택된 타입들은, 상기 I/O 제어기가 상기 펌웨어 이미지들 중 하나 또는 그 초과의 펌웨어 이미지의 실행을 통해 동작할 수 있는, 복수의 플래시 메모리 타입들로부터 선택되는, 스토리지 디바이스의 제조 테스트를 제어하기 위한 방법.
  26. 제 25 항에 있어서,
    상기 제조 테스트는 상기 스토리지 능력의 하나 또는 그 초과의 스토리지 능력 테스트들을 포함하는, 스토리지 디바이스의 제조 테스트를 제어하기 위한 방법.
  27. 제 26 항에 있어서,
    상기 스토리지 능력 테스트들 중 적어도 하나는 상기 하나 또는 그 초과의 선택된 타입들의 플래시 메모리 디바이스들의 하나 또는 그 초과의 플래시 메모리 테스트들을 포함하는, 스토리지 디바이스의 제조 테스트를 제어하기 위한 방법.
  28. 제 25 항에 있어서,
    상기 펌웨어 이미지들은 보호된 펌웨어 이미지들을 포함하고, 상기 액세스를 가능하게 하는 단계는 인증된 액세스를 가능하게 하는 단계를 포함하는, 스토리지 디바이스의 제조 테스트를 제어하기 위한 방법.
  29. 제 28 항에 있어서,
    상기 펌웨어 이미지들 중 적어도 일부는 암호화되고, 상기 인증된 액세스를 가능하게 하는 단계는 암호화된 펌웨어 이미지의 하나 또는 그 초과의 부분들의 암호해독을 가능하게 하는 하나 또는 그 초과의 암호 키들을 제공하는 단계를 포함하는, 스토리지 디바이스의 제조 테스트를 제어하기 위한 방법.
  30. 제 25 항에 있어서,
    상기 플래시 메모리 타입들은 복수의 별개의 스토리지 용량들을 갖는 플래시 메모리 컴포넌트들을 포함하는, 스토리지 디바이스의 제조 테스트를 제어하기 위한 방법.
  31. 제 25 항에 있어서,
    상기 플래시 메모리 타입들은 복수의 제조 프로세스들에 의해 제조된 플래시 메모리 컴포넌트들을 포함하는, 스토리지 디바이스의 제조 테스트를 제어하기 위한 방법.
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
KR1020137029152A 2011-11-14 2012-11-12 스토리지 디바이스 펌웨어 및 제조 소프트웨어 KR101469596B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161559201P 2011-11-14 2011-11-14
US61/559,201 2011-11-14
US13/436,639 US10803970B2 (en) 2011-11-14 2012-03-30 Solid-state disk manufacturing self test
US13/436,639 2012-03-30
PCT/US2012/064682 WO2013074455A1 (en) 2011-11-14 2012-11-12 Storage device firmware and manufacturing software

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020147020434A Division KR101495519B1 (ko) 2011-11-14 2012-11-12 저장 디바이스 펌웨어 및 제조 소프트웨어

Publications (2)

Publication Number Publication Date
KR20130133074A KR20130133074A (ko) 2013-12-05
KR101469596B1 true KR101469596B1 (ko) 2014-12-08

Family

ID=48281836

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020147020434A KR101495519B1 (ko) 2011-11-14 2012-11-12 저장 디바이스 펌웨어 및 제조 소프트웨어
KR1020137029152A KR101469596B1 (ko) 2011-11-14 2012-11-12 스토리지 디바이스 펌웨어 및 제조 소프트웨어

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020147020434A KR101495519B1 (ko) 2011-11-14 2012-11-12 저장 디바이스 펌웨어 및 제조 소프트웨어

Country Status (7)

Country Link
US (1) US10803970B2 (ko)
EP (1) EP2780798A4 (ko)
JP (2) JP2014535120A (ko)
KR (2) KR101495519B1 (ko)
CN (1) CN103597443B (ko)
TW (1) TWI525631B (ko)
WO (1) WO2013074455A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180127179A (ko) * 2017-05-19 2018-11-28 삼성전자주식회사 NVMe-oF SSD의 정밀한 튜닝 및 최적화를 위한 장치 및 방법

Families Citing this family (116)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8650471B2 (en) * 2011-06-28 2014-02-11 Dell Products L.P. System and method for look-aside parity based raid
TWI436211B (zh) * 2011-11-02 2014-05-01 Phison Electronics Corp 區塊管理方法、記憶體控制器與記憶體儲存裝置
US10803970B2 (en) 2011-11-14 2020-10-13 Seagate Technology Llc Solid-state disk manufacturing self test
JP5112566B1 (ja) 2011-12-16 2013-01-09 株式会社東芝 半導体記憶装置、不揮発性半導体メモリの検査方法、及びプログラム
JP5740296B2 (ja) 2011-12-16 2015-06-24 株式会社東芝 半導体記憶装置、半導体記憶装置の制御方法、制御プログラム
US8914706B2 (en) * 2011-12-30 2014-12-16 Streamscale, Inc. Using parity data for concurrent data authentication, correction, compression, and encryption
US8683296B2 (en) * 2011-12-30 2014-03-25 Streamscale, Inc. Accelerated erasure coding system and method
US10096350B2 (en) * 2012-03-07 2018-10-09 Medtronic, Inc. Memory array with flash and random access memory and method therefor, reading data from the flash memory without storing the data in the random access memory
US9217772B2 (en) * 2012-07-31 2015-12-22 Infineon Technologies Ag Systems and methods for characterizing devices
US20140136152A1 (en) * 2012-11-13 2014-05-15 International Business Machines Corporation Analyzing hardware designs based on component re-use
US9348774B2 (en) 2013-01-25 2016-05-24 Seagate Technology Llc Controller-opaque communication with non-volatile memory devices
US20140258780A1 (en) * 2013-03-05 2014-09-11 Micron Technology, Inc. Memory controllers including test mode engines and methods for repair of memory over busses used during normal operation of the memory
US9417628B2 (en) * 2013-03-13 2016-08-16 Western Digital Technologies, Inc. Production failure analysis system
US9032264B2 (en) 2013-03-21 2015-05-12 Kabushiki Kaisha Toshiba Test method for nonvolatile memory
KR101547317B1 (ko) * 2013-09-30 2015-08-26 주식회사 유니테스트 스토리지 테스트 장치에서 로직 블록 어드레스와 데이터 버퍼 주소를 이용한 불량 블록 검출 시스템
US9824004B2 (en) 2013-10-04 2017-11-21 Micron Technology, Inc. Methods and apparatuses for requesting ready status information from a memory
US10275814B2 (en) * 2013-10-11 2019-04-30 Skyworks Solutions, Inc. Systems and methods for avoiding margin stacking
CN104598386B (zh) 2013-10-31 2018-03-27 Lsi公司 通过追踪和利用二级映射索引重复利用固态驱动器块
US9274900B2 (en) * 2013-12-03 2016-03-01 Samsung Electronics Co., Ltd. Method and apparatus for updating firmware
US9798493B2 (en) 2013-12-16 2017-10-24 International Business Machines Corporation Firmware bypass for medium-access commands
US10108372B2 (en) 2014-01-27 2018-10-23 Micron Technology, Inc. Methods and apparatuses for executing a plurality of queued tasks in a memory
US9454310B2 (en) 2014-02-14 2016-09-27 Micron Technology, Inc. Command queuing
US9595352B2 (en) 2014-03-17 2017-03-14 Seagate Technology Llc Manufacturer self-test for solid-state drives
CN105981485A (zh) * 2014-03-20 2016-09-28 英特尔公司 用于电子设备的存储卡连接器
US10145890B2 (en) 2014-03-28 2018-12-04 Hewlett Packard Enterprise Development Lp Testing electronic devices
US9619157B2 (en) * 2014-04-03 2017-04-11 Analysis Solution Llc High-speed data storage
TWI579762B (zh) * 2014-05-06 2017-04-21 瑞昱半導體股份有限公司 固態硬碟控制電路及相關的固態硬碟裝置與固態硬碟存取系統
US9257186B2 (en) * 2014-05-08 2016-02-09 Sandisk Technologies Inc. Memory access techniques for a memory having a three-dimensional memory configuration
US9244764B2 (en) 2014-05-08 2016-01-26 Sandisk Technologies Inc. Error correcting code techniques for a memory having a three-dimensional memory configuration
US9779268B1 (en) 2014-06-03 2017-10-03 Pure Storage, Inc. Utilizing a non-repeating identifier to encrypt data
KR102277666B1 (ko) * 2014-06-30 2021-07-15 삼성전자 주식회사 영상처리장치 및 그 제어방법
TWI540861B (zh) * 2014-08-01 2016-07-01 友勁科技股份有限公司 管理系統與管理方法
US9722632B2 (en) 2014-09-22 2017-08-01 Streamscale, Inc. Sliding window list decoder for error correcting codes
US9459857B2 (en) 2015-01-21 2016-10-04 HGST Netherlands B.V. Managing wear of system areas of storage devices
US9691505B2 (en) * 2015-03-27 2017-06-27 Intel Corporation Dynamic application of error correction code (ECC) based on error type
US10162006B2 (en) 2015-04-16 2018-12-25 Western Digital Technologies, Inc. Boundary scan testing a storage device via system management bus interface
CN106155812A (zh) 2015-04-28 2016-11-23 阿里巴巴集团控股有限公司 一种对虚拟主机的资源管理的方法、装置、系统及电子设备
KR102384347B1 (ko) * 2015-05-26 2022-04-07 삼성전자주식회사 클록 관리 유닛을 포함하는 시스템 온 칩 및 그 동작방법
DE102016109387A1 (de) 2015-05-26 2016-12-01 Samsung Electronics Co., Ltd. Ein-Chip-System mit Taktverwaltungseinheit und Verfahren zum Betreiben des Ein-Chip-Systems
US10216418B2 (en) 2015-06-01 2019-02-26 Samsung Electronics Co., Ltd. Storage apparatus and method for autonomous space compaction
US11042328B2 (en) 2015-06-01 2021-06-22 Samsung Electronics Co., Ltd. Storage apparatus and method for autonomous space compaction
KR102267041B1 (ko) 2015-06-05 2021-06-22 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법
WO2017033993A1 (ja) 2015-08-27 2017-03-02 東レバッテリーセパレータフィルム株式会社 電池用セパレータおよびその製造方法
TWI566253B (zh) * 2015-09-02 2017-01-11 慧榮科技股份有限公司 用來管理一記憶裝置之方法以及記憶裝置與控制器
US10283209B2 (en) * 2015-09-08 2019-05-07 Storart Technology (Shenzhen) Co. Ltd Method for detecting problem cells of SATA SSD and SATA SSD having self-detecting function looking for problem cells
CN105511819B (zh) * 2015-11-27 2018-11-02 贵州航天风华精密设备有限公司 一种基于xml架构的材料定额管理系统
CN105607975A (zh) * 2015-12-16 2016-05-25 深圳市迪菲特科技股份有限公司 一种测试磁盘阵列的方法、装置及系统
CN105607988A (zh) * 2015-12-18 2016-05-25 浪潮电子信息产业股份有限公司 对服务器存储设备io性能进行自动化测试和分析方法
US10379747B2 (en) 2015-12-21 2019-08-13 Western Digital Technologies, Inc. Automated latency monitoring
US10545548B2 (en) 2016-03-07 2020-01-28 Toshiba Memory Corporation Memory device and host device
TWI599880B (zh) 2016-03-22 2017-09-21 威盛電子股份有限公司 非揮發性記憶體裝置及其操作方法
TWI631463B (zh) * 2016-03-22 2018-08-01 威盛電子股份有限公司 非揮發性記憶體裝置及其操作方法
CN105843754A (zh) * 2016-03-23 2016-08-10 山东超越数控电子有限公司 一种固态硬盘的日志信息存储方法
KR102494241B1 (ko) * 2016-08-18 2023-02-03 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법
US10275174B2 (en) * 2016-08-23 2019-04-30 Samsung Electronics Co., Ltd. System and method for pre-conditioning a storage device
CN107918571B (zh) * 2016-10-08 2021-04-30 上海宝存信息科技有限公司 测试储存单元的方法以及使用该方法的装置
CN108008914B (zh) * 2016-10-27 2019-09-13 华为技术有限公司 一种arm设备中磁盘管理的方法、装置和arm设备
CN108153548A (zh) * 2016-12-05 2018-06-12 北京京存技术有限公司 一种emmc固件升级方法和装置
TWI634424B (zh) * 2017-05-08 2018-09-01 慧榮科技股份有限公司 資料儲存裝置以及其操作方法
CN108932106B (zh) * 2017-05-26 2021-07-02 上海宝存信息科技有限公司 固态硬盘访问方法以及使用该方法的装置
CN107241220A (zh) * 2017-05-26 2017-10-10 京信通信系统(中国)有限公司 产品老化监控自动分析方法和系统
CN107274933A (zh) * 2017-06-14 2017-10-20 湖南国科微电子股份有限公司 一种测试固态硬盘的方法及装置
US10387347B2 (en) 2017-08-18 2019-08-20 Quanta Computer Inc. Method to locate SAS JBOD cable routing
TWI658363B (zh) 2017-10-20 2019-05-01 慧榮科技股份有限公司 儲存裝置以及其介面晶片
CN111108488B (zh) * 2017-11-07 2022-05-10 华为技术有限公司 内存块回收方法和装置
EP3710946B1 (en) * 2017-11-13 2023-10-25 Data I/O Corporation Device programming system with protocol emulation
US20190036704A1 (en) * 2017-12-27 2019-01-31 Intel Corporation System and method for verification of a secure erase operation on a storage device
US11099831B2 (en) * 2018-02-08 2021-08-24 Micron Technology, Inc. Firmware update in a storage backed memory system
CN110223728A (zh) * 2018-03-02 2019-09-10 深圳市时创意电子有限公司 固态硬盘的批量自动测试方法与批量自动测试装置
US10761773B2 (en) 2018-04-02 2020-09-01 Micron Technology, Inc. Resource allocation in memory systems based on operation modes
US10642519B2 (en) 2018-04-06 2020-05-05 Western Digital Technologies, Inc. Intelligent SAS phy connection management
CN110556155B (zh) * 2018-06-04 2021-06-08 记忆科技(深圳)有限公司 无盘启动的ssd产品测试方法、装置及计算机设备
CN108536450B (zh) * 2018-06-19 2023-04-04 北京航星中云科技有限公司 一种板载固态盘开卡量产方法和装置
CN109240603A (zh) * 2018-08-10 2019-01-18 微网云(深圳)技术有限公司 全闪存服务器
US10991445B2 (en) * 2018-09-06 2021-04-27 Micron Technology, Inc. Memory sub-system including an in-package sequencer to perform error correction and memory testing operations
CN109062808A (zh) * 2018-09-17 2018-12-21 浪潮电子信息产业股份有限公司 一种ssd开发性能的测试方法、装置及相关设备
US11093369B2 (en) * 2018-09-19 2021-08-17 SK Hynix Inc. Reconfigurable simulation system and method for testing firmware of storage
US10732869B2 (en) * 2018-09-20 2020-08-04 Western Digital Technologies, Inc. Customizing configuration of storage device(s) for operational environment
CN109448779B (zh) * 2018-11-14 2020-11-20 苏州浪潮智能科技有限公司 一种Dual Port SSD的SI测试方法、装置
US11430536B2 (en) 2018-12-20 2022-08-30 Advantest Corporation Software-focused solution for arbitrary all-data odd sector size support
US10976361B2 (en) 2018-12-20 2021-04-13 Advantest Corporation Automated test equipment (ATE) support framework for solid state device (SSD) odd sector sizes and protection modes
WO2020132821A1 (en) * 2018-12-24 2020-07-02 Intel Corporation Post code reporting via secure digital memory interface
US11106519B2 (en) 2019-04-03 2021-08-31 Micron Technology, Inc. Automotive electronic control unit reliability and safety during power standby mode
KR102707997B1 (ko) * 2019-05-10 2024-09-23 에스케이하이닉스 주식회사 컨트롤러, 메모리 시스템 및 그것의 동작 방법
TWI695264B (zh) * 2019-05-20 2020-06-01 慧榮科技股份有限公司 資料儲存裝置與資料處理方法
CN110413295B (zh) * 2019-06-26 2023-07-21 上海电器科学研究所(集团)有限公司 一种嵌入式设备远程固件更新方法
CN112289353B (zh) * 2019-07-25 2024-03-12 上海磁宇信息科技有限公司 一种优化的具有ecc功能的mram系统及其操作方法
TWI808229B (zh) * 2019-07-29 2023-07-11 宜鼎國際股份有限公司 可遠端控制電子設備執行程序的系統及方法
US11016755B2 (en) * 2019-07-31 2021-05-25 Dell Products L.P. System and method to secure embedded controller flashing process
JP7341784B2 (ja) * 2019-08-09 2023-09-11 キオクシア株式会社 ストレージ装置
JP7277324B2 (ja) * 2019-09-18 2023-05-18 日立Astemo株式会社 自動車用電子制御装置
TWI709079B (zh) * 2019-09-26 2020-11-01 奕智鏈結科技股份有限公司 文件碎形化出版與機密管制系統及其技術
CN110610740A (zh) * 2019-09-29 2019-12-24 深圳大普微电子科技有限公司 一种测试单元、方法、系统及控制器、存储设备
CN111044738B (zh) * 2019-11-08 2023-06-09 太原理工大学 基于蓝光光驱的嵌入式定量检测装置及其检测方法
CN110968510A (zh) * 2019-11-28 2020-04-07 深圳忆联信息系统有限公司 Ssd自动化在线升级固件测试方法、装置及计算机设备
US11210183B2 (en) 2020-01-14 2021-12-28 Western Digital Technologies, Inc. Memory health tracking for differentiated data recovery configurations
CN111639008B (zh) * 2020-05-29 2023-08-25 杭州海康威视系统技术有限公司 基于双端口ssd的文件系统状态监测方法、装置及电子设备
US11502832B2 (en) * 2020-06-04 2022-11-15 PUFsecurity Corporation Electronic device capable of protecting confidential data
CN111782446B (zh) * 2020-06-30 2024-09-24 深圳忆联信息系统有限公司 Ssd正常掉电的测试方法、装置、计算机设备及存储介质
US11417410B2 (en) * 2020-09-16 2022-08-16 Kioxia Corporation Die-based high and low priority error queues
CN112115097B (zh) 2020-09-28 2023-08-29 合肥沛睿微电子股份有限公司 运行日志信息的访问方法及存储设备
TWI811573B (zh) * 2020-10-16 2023-08-11 大陸商合肥沛睿微電子股份有限公司 儲存裝置及其運行日誌的存取方法
TWI773395B (zh) 2021-06-22 2022-08-01 慧榮科技股份有限公司 記憶體控制器與連結識別方法
WO2023277883A1 (en) * 2021-06-29 2023-01-05 Hewlett-Packard Development Company, L.P. Production procedure device modifications
CN113360957B (zh) * 2021-06-30 2022-08-02 四川效率源信息安全技术股份有限公司 一种主控为sm2246en的固态硬盘的密码提取方法
CN113724772A (zh) * 2021-07-12 2021-11-30 深圳市美信咨询有限公司 存储器失效位置查找方法、装置和计算机设备
US20230015697A1 (en) * 2021-07-13 2023-01-19 Citrix Systems, Inc. Application programming interface (api) authorization
CN115809071A (zh) * 2021-09-15 2023-03-17 北京车和家信息技术有限公司 软件升级方法、装置、系统、设备及存储介质
JP2023060606A (ja) 2021-10-18 2023-04-28 キオクシア株式会社 半導体集積回路及びメモリシステム
CN114265549B (zh) * 2021-11-21 2024-06-21 山东云海国创云计算装备产业创新中心有限公司 一种NVMe命令的处理方法、装置及可读存储介质
CN114171107B (zh) * 2021-11-26 2024-09-10 浪潮(北京)电子信息产业有限公司 固态硬盘vpd信息的检测方法、装置、设备及存储介质
TWI837552B (zh) * 2021-12-01 2024-04-01 慧榮科技股份有限公司 資料儲存裝置的自我燒機測試系統及其方法
JP2023136000A (ja) * 2022-03-16 2023-09-29 キオクシア株式会社 メモリシステム
US20230393774A1 (en) * 2022-06-01 2023-12-07 Micron Technology, Inc. Test mode state machine for a memory device
US11953992B2 (en) * 2022-06-23 2024-04-09 Dell Products L.P. Device modification analysis framework
US12056262B2 (en) * 2022-08-26 2024-08-06 Hewlett Packard Enterprise Development Lp Applying trusted backup configuration to a node

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110145598A1 (en) * 2009-12-16 2011-06-16 Smith Ned M Providing Integrity Verification And Attestation In A Hidden Execution Environment
US20110197185A1 (en) * 2010-02-05 2011-08-11 Lenovo (Singapore) Pte, Ltd. Method and Apparatus for Updating Firmware on a Storage Device
US20110225412A1 (en) * 2009-04-20 2011-09-15 Van De Ven Adriaan Booting an operating system of a system using a read ahead technique
US20110238967A1 (en) * 2010-03-29 2011-09-29 Lenovo (Singapore) Pte, Ltd. Method and apparatus for sharing an integrity security module in a dual-environment computing device

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4319323A (en) * 1980-04-04 1982-03-09 Digital Equipment Corporation Communications device for data processing system
US5150465A (en) * 1988-11-30 1992-09-22 Compaq Computer Corporation Mode-selectable integrated disk drive for computer
US5615335A (en) * 1994-11-10 1997-03-25 Emc Corporation Storage system self-test apparatus and method
US5675800A (en) * 1994-11-30 1997-10-07 Digital Equipment Corporation Method and apparatus for remotely booting a computer system
US5712978A (en) * 1994-12-30 1998-01-27 Lucent Technologies Inc. System for control of remote processors
US6467054B1 (en) * 1995-03-13 2002-10-15 Compaq Computer Corporation Self test for storage device
JP2000090014A (ja) 1998-09-11 2000-03-31 Nec Corp 制御ファームウェアによるシステム立ち上げ時のメモリ試験システム及び方法
US6591389B1 (en) * 1999-01-29 2003-07-08 Lucent Technologies Inc. Testing system for circuit board self-test
JP2001236797A (ja) 1999-12-17 2001-08-31 Fujitsu Ltd 自己試験回路及びそれを内蔵するメモリデバイス
JP2002109899A (ja) 2000-07-26 2002-04-12 Mitsubishi Electric Corp 半導体記憶装置およびそれを備える半導体集積回路装置
US6950967B1 (en) * 2001-09-26 2005-09-27 Maxtor Corporation Method and apparatus for manufacture test processing a disk drive installed in a computer system
GB0123422D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Improved memory controller
US20030212735A1 (en) * 2002-05-13 2003-11-13 Nvidia Corporation Method and apparatus for providing an integrated network of processors
KR20040023843A (ko) 2002-09-12 2004-03-20 삼성전기주식회사 메모리의 결함 처리 장치 및 그 방법
US6915420B2 (en) * 2003-01-06 2005-07-05 John Alan Hensley Method for creating and protecting a back-up operating system within existing storage that is not hidden during operation
KR100498498B1 (ko) * 2003-05-15 2005-07-01 삼성전자주식회사 하드디스크 드라이브의 테스트 방법 및 이에 적합한 기록매체
US7493534B2 (en) * 2003-08-29 2009-02-17 Hewlett-Packard Development Company, L.P. Memory error ranking
US7146529B2 (en) * 2003-09-25 2006-12-05 International Business Machines Corporation System and method for processor thread acting as a system service processor
US7730368B2 (en) 2003-10-31 2010-06-01 Sandisk Il Ltd. Method, system and computer-readable code for testing of flash memory
US7376756B2 (en) * 2003-11-03 2008-05-20 Lsi Corporation HDD firmware download
US7185190B2 (en) * 2003-12-29 2007-02-27 Intel Corporation Pushing capabilities into firmware by an operating system
US7330967B1 (en) * 2004-12-03 2008-02-12 Symantec Operating Corporation System and method for injecting drivers and setup information into pre-created images for image-based provisioning
US20060143600A1 (en) 2004-12-29 2006-06-29 Andrew Cottrell Secure firmware update
WO2006086296A1 (en) * 2005-02-07 2006-08-17 Arris International, Inc. Method for securely distributing configuration information to a device
US20080072068A1 (en) * 2006-09-19 2008-03-20 Wang Liang-Yun Methods and apparatuses for securing firmware image download and storage by distribution protection
JP2008108326A (ja) 2006-10-24 2008-05-08 Toshiba Corp 記憶装置およびその自己テスト方法
US7730293B2 (en) * 2006-10-26 2010-06-01 Hewlett-Packard Development Company, L.P. Hard disk drive self-test system and method
US7840846B2 (en) * 2006-10-30 2010-11-23 International Business Machines Corporation Point of sale system boot failure detection
US9183133B2 (en) 2007-11-28 2015-11-10 Seagate Technology Llc System, method, and computer program product for increasing spare space in memory to extend a lifetime of the memory
JP2010061242A (ja) * 2008-09-01 2010-03-18 Toshiba Storage Device Corp 記憶装置、制御装置および制御プログラム
JP2010192060A (ja) 2009-02-20 2010-09-02 Cis Electronica Industria & Comercio Ltda センサモジュールおよびセンサモジュールの製造方法
GB2481955B (en) * 2009-05-04 2014-10-08 Hewlett Packard Development Co Storage device erase command having a control field controllable by a requestor device
US20120036373A1 (en) * 2010-08-05 2012-02-09 Softlog Systems (2006) Ltd. Method system and device for secure firmware programming
CN103562842B (zh) 2011-05-24 2018-09-14 马维尔国际贸易有限公司 用于存储设备的用低预留空间实现低写入放大的方法
TWI443513B (zh) * 2011-08-05 2014-07-01 Phison Electronics Corp 記憶體儲存裝置、記憶體控制器與資料寫入方法
US10803970B2 (en) 2011-11-14 2020-10-13 Seagate Technology Llc Solid-state disk manufacturing self test

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110225412A1 (en) * 2009-04-20 2011-09-15 Van De Ven Adriaan Booting an operating system of a system using a read ahead technique
US20110145598A1 (en) * 2009-12-16 2011-06-16 Smith Ned M Providing Integrity Verification And Attestation In A Hidden Execution Environment
US20110197185A1 (en) * 2010-02-05 2011-08-11 Lenovo (Singapore) Pte, Ltd. Method and Apparatus for Updating Firmware on a Storage Device
US20110238967A1 (en) * 2010-03-29 2011-09-29 Lenovo (Singapore) Pte, Ltd. Method and apparatus for sharing an integrity security module in a dual-environment computing device

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180127179A (ko) * 2017-05-19 2018-11-28 삼성전자주식회사 NVMe-oF SSD의 정밀한 튜닝 및 최적화를 위한 장치 및 방법
US11573707B2 (en) 2017-05-19 2023-02-07 Samsung Electronics Co., Ltd. Method and apparatus for fine tuning and optimizing NVMe-oF SSDs
US11842052B2 (en) 2017-05-19 2023-12-12 Samsung Electronics Co., Ltd. Method and apparatus for fine tuning and optimizing NVMe-oF SSDs

Also Published As

Publication number Publication date
JP2014535120A (ja) 2014-12-25
CN103597443A (zh) 2014-02-19
TWI525631B (zh) 2016-03-11
US10803970B2 (en) 2020-10-13
WO2013074455A1 (en) 2013-05-23
KR101495519B1 (ko) 2015-03-05
JP6377237B2 (ja) 2018-08-22
EP2780798A1 (en) 2014-09-24
JP2018060575A (ja) 2018-04-12
KR20140097613A (ko) 2014-08-06
EP2780798A4 (en) 2015-12-09
TW201333964A (zh) 2013-08-16
US20130124932A1 (en) 2013-05-16
CN103597443B (zh) 2018-02-02
KR20130133074A (ko) 2013-12-05

Similar Documents

Publication Publication Date Title
KR101469596B1 (ko) 스토리지 디바이스 펌웨어 및 제조 소프트웨어
US20160293274A1 (en) Storage Device Firmware and Manufacturing Software
US10734087B2 (en) Retention-drift-history-based non-volatile memory read threshold optimization
US9467288B2 (en) Encryption key destruction for secure data erasure
US9329948B2 (en) Measuring cell damage for wear leveling in a non-volatile memory
KR101466560B1 (ko) 호스트가 볼 때 디바이스 펌웨어 업데이트 효과들의 관리
KR101564569B1 (ko) 상위-레벨 리던던시 정보 계산
US20140040639A1 (en) Encrypted-transport solid-state disk controller
KR20140094468A (ko) 비휘발성 메모리에 대한 기록들의 관리 및 그 기록들의 영역 선택
CN103797492A (zh) 用于安全存储劫持保护的技术
CN104205235A (zh) 用于处理从非易失性存储器阵列检索的状态置信度数据的方法和设备
TWI616807B (zh) 資料寫入方法以及儲存控制器
Liu et al. Research and Implementation of SSD Lifespan Protection Mechanism

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
A107 Divisional application of patent
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee