KR101495519B1 - 저장 디바이스 펌웨어 및 제조 소프트웨어 - Google Patents

저장 디바이스 펌웨어 및 제조 소프트웨어 Download PDF

Info

Publication number
KR101495519B1
KR101495519B1 KR1020147020434A KR20147020434A KR101495519B1 KR 101495519 B1 KR101495519 B1 KR 101495519B1 KR 1020147020434 A KR1020147020434 A KR 1020147020434A KR 20147020434 A KR20147020434 A KR 20147020434A KR 101495519 B1 KR101495519 B1 KR 101495519B1
Authority
KR
South Korea
Prior art keywords
ssd
firmware
storage
storage device
commands
Prior art date
Application number
KR1020147020434A
Other languages
English (en)
Other versions
KR20140097613A (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 KR20140097613A publication Critical patent/KR20140097613A/ko
Application granted granted Critical
Publication of KR101495519B1 publication Critical patent/KR101495519B1/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
    • G06F8/00Arrangements for software engineering
    • 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
    • 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)
  • Memory System (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (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}
관련 출원들에 대한 상호 참조
본 출원에 대한 우선권 이익 주장들은 (만약 있다면, 적절하게) 첨부하는 출원 데이터 시트, 요청서, 또는 송달물에서 이루어진다. 인스턴트 출원(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은 다량의 판독 유닛들에서 측정된 길이를 집합적으로 갖는 다양한 판독 유닛들로서 구성된 판독 데이터를 생성하기 위해 판독 유닛 어드레스에서 비휘발성 메모리(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는 특정 사용 시나리오에서 드라이브 기록 커맨드의 구현의 실시예의 선택된 상세들을 예시한다.
도 14는 MST 결과 로그의 실시예의 선택된 상세들을 예시한다.
도면들에서 참조 부호들의 리스트
Figure 112014068402043-pat00001

Figure 112014068402043-pat00002

Figure 112014068402043-pat00003
본 발명의 하나 또는 그 초과의 실시예들의 상세한 설명이 본 발명의 선택된 상세들을 예시하는 첨부한 도면들과 아래에 제공된다. 본 발명은 실시예들과 관련하여 설명된다. 여기에서의 실시예들은 단지 예시적인 것으로 이해되고, 본 발명은 여기에서의 실시예들 중 임의의 실시예에 명백하게 제한되지 않거나 실시예들 모두에 의해 제한되지 않으며, 본 발명은 다수의 변동물, 변경물, 및 등가물들을 포함한다. 설명의 단조로움을 회피하기 위해, (제 1, 최종, 특정한, 다양한, 추가의, 다른, 특히, 선택, 일부, 및 현저한과 같은) 다양한 단어 라벨(word label)들이 실시예들의 개별 세트들에 적용될 수도 있고, 여기에서 사용되는 바와 같이, 이러한 라벨들은 품질, 또는 임의의 형태의 우선순위 또는 편견을 전달하는 것으로 명백하게 의미되지 않고, 단지 개별 세트들 사이를 편리하게 구별하기 위한 것이다. 개시된 프로세스들의 일부 동작들의 순서는 본 발명의 범위내에서 변경가능하다. 다중의 실시예들이 프로세스, 시스템 및/또는 프로그램 명령 특징들에서 변동들을 설명하는 역할을 하여도, 다른 실시예들은 사전결정되거나 동적으로 결정된 기준에 따라 복수의 다중의 실시예들에 각각 대응하는 동작의 복수의 모드들 중 하나의 정적 및/또는 동적 선택을 수행한다는 것이 예상된다. 다수의 특정한 상세들은 본 발명의 완전한 이해를 제공하기 위해 아래의 설명에 설명된다. 상세들은 예시를 위해 제공되고 본 발명은 상세들 중 일부 또는 모두없이 청구항들에 따라 실시될 수도 있다. 명확화를 위해, 본 발명에 관련된 기술 분야에 공지된 기술적 자료는 본 발명을 불필요하게 모호하게 하지 않기 위해 상세히 설명하지 않는다.
도입
이러한 도입부는 단지 상세한 설명의 더욱 빠른 이해를 용이하게 하기 위해 포함되고, 임의의 도입부의 단락들이 반드시 전체 주제의 축약된 관점이고 배타적이거나 제한적인 설명인 것으로 의미되지 않기 때문에 본 발명은 (만약 있다면, 명백한 예들을 포함하는) 도입부에 제공되는 개념들에 제한되지 않는다. 예를 들어, 다음의 도입부는 특정한 실시예들에 대해서만 공간 및 구성에 의해 제한된 개요 정보를 제공한다. 청구항들이 명세서의 나머지 전반적으로 궁극적으로 도시되고 논의되는 것들을 포함하는, 다수의 다른 실시예들이 있다.
약어들
여기에 정의된 다양한 축약된 약어들(예를 들어, 두문자어들)의 적어도 일부가 여기에 사용된 특정한 엘리먼트들을 지칭한다.
Figure 112014068402043-pat00004
Figure 112014068402043-pat00005
SSD MST 능력은 SSD 제조자가 SSD에 대한 테스트들을 정의하고 준비할 수 있게 하고, SSD들의 제조 인스턴스들에 대해 테스트를 구동할 수 있게 하고, 테스트들의 완료 이후에 구동의 결과들을 수집할 수 있게 한다. 제조자는 (테스트의 엘리먼트들이 SSD에 의해 어떻게 구현되는지와 같은) SSD의 내부 동작의 임의의 특정한 지식없이 테스트들을 생성하고, 타겟팅된 생산 및/또는 품질 보증 요건들에 따라 테스트들을 커스터마이징한다. 테스트들은 제조자에 의해 정의되는 바와 같이, 테스트 파라미터들, 시퀀스들, 및 종료 기준들 중 하나 또는 그 초과를 옵션으로 실시한다. 테스트들은 옵션에 부가하여, (ATA SMART 프로토콜과 같은 저장 인터페이스 프로토콜에 의해 활성화되는 바와 같이) SSD에 의해 구현되는 사전 정의 및/또는 빌트-인(built-in) 테스트들이다.
테스트들의 정의 및 준비는 테스트 스크립을 생성하고 생산 SSD들상에 스크립을 로딩하는 것을 포함한다. 구동은 생산 SSD들을 파워 업(power up)하는 것을 포함하고, 생산 SSD들이 로딩된 스크립을 셀프 실행한다. 파워 업 및 셀프 실행은 예를 들어, 스크립을 로딩한 호스트에 커플링되는 동안, 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들을 제조하는 시스템 벤더에 의해 사용된다.
가상 드라이브 제조 모델은 시스템 벤더가 저장 디바이스들의 제조를 위해 메모리 디바이스들과 같은 선택된 구성요소들을 직접적으로 입수할 수 있게 한다. 직접 입수는 시스템 벤더가 저장 디바이스 벤더로부터 (선택된 구성요소들을 사용하여) 저장 디바이스들을 입수하는 기법들에 비하여 선택된 구성요소들에 대한 마진 마크-업(mark-up)(예를 들어, 마진 스택킹(stacking))을 제거한다. 메모리 디바이스들에 부가하여, 다른 예시적인 선택된 구성요소는 전원들, 온도 센서들, 케이싱들, 인쇄 회로 기판들, 및 패시브 컴포넌트들을 포함한다. 특정한 예에 대해, 선택된 구성요소들은 NVM, 예를 들어, 플래시 메모리 디바이스들과 같은 메모리 디바이스들이고, 저장 디바이스들은 SSD들이다. 설계 벤더는 레퍼런스 설계와 함께 SSD 제어기 및 연관된 펌웨어, SSD 제어기와 레퍼런스 설계에서 사용을 위한 권장 및/또는 지원 플래시 메모리 디바이스들의 리스트, 및 옵션으로, SSD 제어기를 사용하여 구축된 저장 디바이스들의 대량 생산을 인에이블하는 제조 소프트웨어를 구현한다. 설계 벤더는, 시스템 벤더가 SSD 제어기, 펌웨어, 리스트로부터의 플래시 메모리 디바이스, 및 다른 구성요소들을 사용하여 레퍼런스 설계에 따라 SSD들의 대량 생산을 직접적으로(또는 간접적으로) 수행할 수 있게 하기 위해 시스템 벤더에게 마케팅 콜래트럴(marketing collateral), 엔지니어링 정보, 엔지니어링 샘플들, 제조 소프트웨어, 및/또는 테스트/자격 서비스들을 옵션으로 및/또는 선택적으로 제공한다.
다양한 실시예들 및/또는 사용 시나리오들에서, 설계 벤더에 의해 구현된 SSD 제어기 및/또는 펌웨어는 복수의 플래시 메모리 벤더들로부터의 플래시 메모리 디바이스들과 동작하도록 인에이블된다. 복수의 플래시 메모리 벤더들로부터의 플래시 메모리 디바이스들과의 동작은 사용된 플래시 메모리에 따른 인터페이스 프로토콜들, 판독, 기록, 및/또는 소거 기법들, 파라미터들, 및/또는 특징들의 변화하는 동작을 통해 인에이블된다. 복수의 플래시 메모리 벤더들로부터의 플래시 메모리 디바이스들과의 동작은 다른 예를 들어, 다양한 에러 복구 코드들에 따라 플래시 메모리 디바이스들을 관리하는 관리 알고리즘들을 통해 더 인에이블된다.
다양한 실시예들 및/또는 사용 시나리오들에서, 설계 벤더에 의해 구현된 SSD 제어기 및/또는 펌웨어는 다양한 사이즈의 수량들의 호스트 LB들과 동작하도록 인에이블되어, 예를 들어, 기업 및/또는 클라우드 사용 시나리오들에 대해 다양한 LB 사이들과 동작가능한 SSD 제품들 뿐만 아니라 산업 및/또는 예를 들어, 클라이언트 사용 시나리오들에 대해 단일 LB 사이즈와 동작가능한 SSD 제품을 인에이블한다. 다양한 실시예들 및/또는 사용 시나리오들에서, 설계 벤더에 의해 구현된 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)의 엔트리들을 포함하고, 맵 페이지들 중 다른 맵 페이지들과 상이한 단위의 엔트리들을 포함하고, 모두 동일한 단위인 엔트리들을 포함하고, 다중의 단위들인 엔트리들을 포함하고, 맵 페이지의 콘텐츠의 포맷 및/또는 레이아웃을 특정하는 각각의 헤더를 포함하고, 맵 페이지의 엔트리들을 표현하기 위해 임의의 다른 포맷, 레이아웃, 또는 구성을 갖는다. 예를 들어, 제 1의 제 2 레벨 맵 페이지는 엔트리 당 4KB의 단위의 사양을 갖고, 제 2의 제 2 레벨 맵 페이지는 엔트리 당 8KB의 단위의 사양을 갖고 제 1의 제 2 레벨 맵 페이지의 1/2만큼만 많은 엔트리들을 갖는다.
다른 실시예들에서, 상위 레벨 맵의 엔트리들은 대응하는 하위 레벨 맵 페이지들의 포맷 및/또는 레이아웃 정보를 포함한다. 예를 들어, 제 1 레벨 맵에서 엔트리들 각각은 연관된 제 2 레벨 맵 페이지에서의 엔트리들에 대한 단위 사양을 포함한다.
일부 실시예들에서, 맵은 복수의 엔트리들을 포함하고, 엔트리들 각각은 하나 또는 그 초과의 LBA들을 LBA들의 데이터가 저장되는 NVM에서의 각각의 위치를 선택적으로 포함하는 정보와 연관시킨다. 예를 들어, LBA들은 512B 섹터들을 특정하고, 맵에서의 각 엔트리는 LBA들의 정렬된 8-섹터(4KB)와 연관된다.
다양한 실시예들에 따르면, 맵의 엔트리들의 정보는, NVM에서의 위치, NVM에서의 판독 유닛의 어드레스, NVM에 저장된 연관 LBA들의 데이터를 획득하기 위해 판독할 판독 유닛들의 수, NVM에 저장된 연관 LBA들의 데이터의 사이즈로서, 1 바이트 보다 옵션으로 및/또는 선택적으로 큰 단위를 갖는 사이즈, 예를 들어, 트리밍된 연관 LBA들의 데이터로 인해 연관 LBA들의 데이터가 NVM에 존재하지 않는다는 표시, 연관 LBA들의 데이터의 특성, 및 연관 LBA들의 데이터의 임의의 다른 메타-데이터, 특성, 또는 본질 중 하나 또는 그 초과를 포함한다.
일부 실시예들에서, NVM에서의 어드레스들은 어드레스들 중 하나를 표현하는데 요구되는 비트들을 수를 감소시키기 위해 영역들로 그룹화된다. 예를 들어, I/O 디바이스의 LBA들이 64개 영역들로 분할되고, NVM이 LBA 영역들 각각에 대해 하나씩 64개 영역들로 분할되면, 특정한 LBA와 연관된 맵 엔트리는 NVM에서의 영역들 중 하나가 특정한 LBA의 영역에 의해 결정될 수 있기 때문에 6개 적은 어드레스 비트들을 요구한다. 다양한 실시예들에 따르면, LBA들의 영역들과 NVM의 영역들 사이의 연관은, 균등성, 1 대 1 수치 함수(numeric function)와 같은 직접 연관, 테이블 룩업, 동적 매핑, 및 수들의 2개의 세트들을 연관시키는 임의의 다른 방법에 의한다.
다양한 실시예들에서, NVM에서의 위치는 복수의 판독 유닛들 중 하나의 어드레스, 및 판독 유닛들에서의 길이 및/또는 스팬을 포함한다. 길이는 NVM에 저장된 복수의 데이터 아이템들 중 특정한 데이터 아이템의 사이즈이고, 특정한 데이터 아이템이 길이를 포함하는 맵의 엔트리와 연관된다. 다양한 실시예들에 따르면, 길이는 1 바이트, 1 보다 큰 바이트, 1 판독 유닛, 판독 유닛의 특정한 부분, 데이터 아이템들 중 하나의 최대 허용된 압축률에 따른 단위, 및 저장 사용을 트랙킹하기 위해 사용된 임의의 다른 단위 중 하나 또는 그 초과의 단위를 갖는다. 스팬은 특정한 데이터 아이템의 각각의 부분을 저장하는, 정수의 판독 유닛들과 같은 판독 유닛들의 수이다. 다른 실시예들 및/또는 사용 시나리오들에서, 판독 유닛들의 스팬에서의 제 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 제어기는 압축해제된 데이터를 생성하여 컴퓨팅 호스트에 제공하기 위해 플래시 메모리로부터의 적절한 데이터를 압축해제한다. 인스턴트 애플리케이션에서, 압축해제(및 그것의 변형들)는 비압축(decompress)(및 그것의 변형들)과 동의어이다.
다양한 실시예들에서, SSD 제어기는 컴퓨팅 호스트와 인터페이스하기 위한 호스트 인터페이스, 플래시 메모리와 같은 NVM와 인터페이스하기 위한 인터페이스, 및 인터페이스들을 제어하고 압축 및 비압축을 수행(및/또는 그 수행의 다양한 양태들을 제어)하기 위한 회로 뿐만 아니라 하위 레벨 리던던시 및/또는 에러 정정, 상위 레벨 리던던시 및/또는 에러 정정, 및 독립 실리콘 엘리먼트들을 갖는 동적 상위 레벨 리던던시 모드 관리를 포함한다.
다양한 실시예들에 따르면, 일부 호스트 인터페이스들은 USB 인터페이스 표준, CF 인터페이스 표준, MMC 인터페이스 표준, eMMC 인터페이스 표준, 썬더볼트 인터페이스 표준, UFS 인터페이스 표준, SD 인터페이스 표준, 메모리 스틱 인터페이스 표준, xD-픽처 카드 인터페이스 표준, IDE 인터페이스 표준, SATA 인터페이스 표준, SCSI 인터페이스 표준, SAS 인터페이스 표준, 및 PCIe 인터페이스 표준 중 하나 또는 그 초과와 호환가능하다. 다양한 실시예들에 따르면, 컴퓨팅 호스트는 컴퓨터, 워크스테이션 컴퓨터, 서버 컴퓨터, 저장 서버, SAN, NAS 디바이스, DSA 디바이스, 저장 기구, PC, 랩탑 컴퓨터, 노트북 컴퓨터, 넷북 컴퓨터, 태블릿 디바이스 또는 컴퓨터, 울트라북 컴퓨터, (e-판독기와 같은) 전자 판독 디바이스, PDA, 네비게이션 시스템, (핸드헬드) GPS 디바이스, 자동 제어 시스템, 자동 미디어 제어 시스템 또는 컴퓨터, 프린터, 복사기 또는 팩스 머신 또는 일체형(all-in-one) 디바이스, 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 코드들, 제로 또는 그 초과의 비터비 또는 다른 트렐리스 코드들, 및 제로 또는 그 초과의 LDPC 코드들의 다양한 조합을 사용한다.
예시적인 실시예들
결론에서, "EC"들(예시적인 조합들)로서 명백하게 열거되는 적어도 일부를 포함하는 예시적인 실시예들의 집합이 따르는 상세한 설명에 대한 도입은 여기에 설명한 개념들에 따른 다양한 실시예 타입들의 추가의 설명을 제공하고, 이들 예들은 상호 배타적이고, 포괄적이거나, 제한적인 것으로 의미되지 않고, 본 발명은 이들 예시적인 실시예들에 제한되는 것이 아니라, 오히려 등록 청구항들의 범위내의 모든 가능한 변형물들 및 변동물들, 및 그들의 등가물들을 포함한다.
EC1) 시스템으로서,
암호화된 펌웨어(FW) 저장소로부터의 하나 또는 그 초과의 이미지들로서 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 디바이스 제어기, 및
이미지들 중 하나를 I/O 디바이스의 시제품화(prototyping) 및/또는 제조 경우에 다운로딩하도록 인에이블된 제조 소프트웨어 툴 중 임의의 하나 또는 그 초과를 에이전트에 제공하는 수단을 포함하고,
리스트의 멤버들 각각은 FW, I/O 디바이스 제어기, 및 I/O 디바이스 레퍼런스 설계와 호환가능한 컴포넌트들의 리스트를 제공하는 수단을 포함하고,
3개의 제공하는 수단의 결과들은 에이전트가 적어도 부분적으로, 리스트로부터 선택된 컴포넌트들에 따라 I/O 디바이스를 생산할 수 있게 하는, 시스템.
EC6) EC5의 시스템에 있어서, 에이전트는 비즈니스를 포함하는, 시스템.
EC7) 시스템으로서,
I/O 디바이스 제어기와 호환가능한 펌웨어(FW)를 I/O 디바이스 레퍼런스 설계에 따라 구성되고 I/O 디바이스 제어기를 포함하는 I/O 디바이스에 다운로딩하는 수단; 및
FW를 개인화하는 수단을 포함하고,
I/O 디바이스는 컴포넌트들의 리스트로부터 선택된 컴포넌트들을 포함하고, 리스트는 FW, I/O 디바이스 제어기, 및 I/O 디바이스 레퍼런스 설계와 호환가능하며,
FW는 암호 키를 사용하여 암호화된 FW 저장소로부터 암호해독된 하나 또는 그 초과의 이미지들 중 하나인, 시스템.
EC8) 시스템으로서,
암호 키를 수신하는 수단; 및
수신된 암호키를 통해 적어도 부분적으로, 암호화된 펌웨어(FW) 저장소로부터의 하나 또는 그 초과의 이미지들로서 FW를 암호해독하는 수단으로서, 이미지들은 I/O 디바이스 레퍼런스 설계에 따라 구성되고 I/O 디바이스 제어기를 포함하는 I/O 디바이스와 호환가능한, 상기 FW를 암호해독하는 수단을 포함하고,
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 - 기반 폼들,
하나 또는 그 초과의 서버 대 서버 트랜잭션들,
인터넷을 사용한 비즈니스 대 비즈니스 자동화 시스템,
다층(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 디바이스의 시제품화 및/또는 제조 경우에 다운로딩하도록 인에이블된 제조 소프트웨어 툴 중 임의의 하나 또는 그 초과를 포함하는, 상기 제공하는 단계를 포함하고,
제공된 엘리먼트들은 에이전트가 리스트로부터 선택된 컴포넌트들에 따라 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 디바이스와 호환가능한, 상기 FW를 암호해독하는 단계를 포함하고,
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의 방법에 있어서, 비즈니스가 리스트의 플래시 메모리 디바이스들 중에서 선택된 플래시 메모리 디바이스들의 양들을 구매하는 단계를 더 포함하고, 상기 양들은 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) 방법으로서,
호스트에 커플링된 저장 디바이스의 저장 인터페이스를 통해 호스트로부터 하나 또는 그 초과의 커맨드들을 수신하는 단계로서, 상기 커맨드들은 저장 디바이스에 의해 생성된 로그 정보의 저장에 전용되는 저장 디바이스의 저장 공간에 저장되도록 호스트에 의해 지시되는, 상기 커맨드들을 수신하는 단계;
이벤트에 응답하여 커맨드들의 실행을 시작하는 표시자를 수신하는 단계; 및
이벤트에 응답하여 커맨드들을 실행하는 단계를 포함하는, 방법.
EC63) EC62의 방법에 있어서,
비즈니스가 암호화된 펌웨어 저장소로부터의 하나 또는 그 초과의 이미지들로서 펌웨어를 암호해독할 수 있게 하기 위해 비즈니스에 암호 키를 제공하는 단계로서, 상기 이미지들은 저장 디바이스에 포함된 저장 디바이스 제어기의 엘리먼트들을 프로세싱함으로써 실행가능하고, 이미지들은 커맨드들의 실행을 가능하게 하고, 저장 디바이스는 저장 디바이스 레퍼런스 설계에 따라 구성되는, 상기 암호 키를 제공하는 단계; 및
암호화된 펌웨어 저장소에 대한 액세스를 비즈니스에 제공하는 단계를 포함하고,
커맨드들은 저장 디바이스의 제조 셀프 테스트를 포함하며,
저장 디바이스는 컴포넌트들의 리스트로부터 선택된 컴포넌트들을 포함하고, 리스트는 펌웨어, 저장 디바이스 제어기, 및 저장 디바이스 레퍼런스 설계와 호환가능한 컴포넌트들인, 방법.
EC64) EC62의 방법에 있어서,
저장 디바이스는 저장 디바이스 제어기 및 저장 매체를 포함하고;
저장 디바이스 제어기와 호환가능한 펌웨어는 비즈니스에 대해 라이센싱되고;
저장 디바이스는 레퍼런스 설계 및 비즈니스에 제공된 후보 저장 매체 디바이스들의 리스트에 따라 구성되고;
저장 매체는 리스트로부터 비즈니스에 의해 선택된 엘리먼트들로 이루어지고;
펌웨어와 함께 저장 디바이스 제어기는 레퍼런스 설계 및 리스트 중의 임의의 멤버들을 통해 저장 디바이스를 구현하도록 인에이블되고;
펌웨어와 함께 저장 디바이스 제어기는 실행을 수행하도록 인에이블되며,
실행은 저장 디바이스의 제조 셀프 테스트를 수행하는, 방법.
EC65) EC62의 방법에 있어서, 실행에 의해 생성된 하나 또는 그 초과의 결과들을 저장하는 단계를 더 포함하는, 방법.
EC66) EC62의 방법에 있어서, 표시자는 호스트로부터이고 저장 인터페이스를 통하는, 방법.
EC67) EC62의 방법에 있어서, 저장 공간은 셀프-모니터링 분석 및 리포팅 기술(SMART) 로그에 전용되는, 방법.
EC68) EC67의 방법에 있어서, SMART 로그는 제 1 SMART 로그이고, 상기 방법은 실행의 하나 또는 그 초과의 결과들을 제 2 SMART 로그에 저장하는 단계를 더 포함하는, 방법.
EC69) EC62의 방법에 있어서, 이벤트는 다음의 파워-온 이벤트 및 즉시 시작 이벤트를 포함하는 복수의 이벤트들 중 하나인, 방법.
EC70) EC62의 방법에 있어서, 2개의 수신하는 단계들 및 실행하는 단계는 고체 상태 디스크(SSD)의 제어기에 의해 적어도 부분적으로 수행되는, 방법.
EC71) EC62의 방법에 있어서, 2개의 수신하는 단계들 및 실행하는 단계는 저장 디바이스에 포함된 저장 디바이스 제어기에 의해 적어도 부분적으로 구현되는, 방법.
EC72) EC71의 방법에 있어서, 저장 디바이스 제어기는 단일 집적 회로(IC)에서 구현되는, 방법.
EC73) 방법으로서,
저장 디바이스의 저장 인터페이스를 통해, 저장 디바이스의 로그 저장 공간의 제 1 부분에 저장된 하나 또는 그 초과의 커맨드들의 실행을 시작하는 표시자를 수신하는 단계;
표시자의 수신에 응답하여 커맨드들을 실행하는 단계; 및
로그 저장 공간의 제 2 부분에 실행의 모든 또는 임의의 부분들에 의해 생성된 하나 또는 그 초과의 결과들을 저장하는 단계를 포함하는, 방법.
EC74) EC73의 방법에 있어서, 표시자는 저장 인터페이스에 커플링된 호스트에 의해 제공되는, 방법.
EC75) EC73의 방법에 있어서, 로그 저장 공간은 저장 인터페이스를 통해 수신된 셀프-모니터링 분석 및 리포팅 기술(SMART) 로그 저장 공간 판독 또는 기록 액세스를 통해 액세스와 호환가능한 SMART 로그 저장 공간인, 방법.
EC76) EC73의 방법에 있어서, 수신하고, 실행하며, 저장하는 단계들은 고체 상태 디스크(SSD)의 제어기에 의해 적어도 부분적으로 수행되는, 방법.
EC77) 방법으로서,
저장 디바이스에서, 저장 디바이스의 저장 인터페이스를 통해 호스트로부터 정보를 수신하는 단계로서, 정보는 저장 디바이스의 제조 셀프 테스트의 적어도 일부를 수행하는 것과 호환가능한 하나 또는 그 초과의 커맨드들을 포함하고, 정보는 커맨드들이 저장 디바이스의 로그 저장의 제 1 부분에 저장된다는 지시를 포함하는, 상기 정보를 수신하는 단계;
저장 디바이스에서, 저장 인터페이스를 통해 호스트로부터 표시자를 수신하는 단계로서, 표시자는 로그 저장의 제 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의 방법에 있어서, 커맨드들은 기록 저장 커맨드, 소거 저장 커맨드, 저장 인터페이스 번-인 커맨드, 지연 커맨드, 스트레스 모드 커맨드, 루프 커맨드, 및 조건 커맨드 중 임의의 하나 또는 그 초과를 포함하는, 방법.
EC84) EC62, EC73 또는 EC77의 방법에 있어서, 커맨드들은 일련의 하나 또는 그 초과의 타입들의 동작들을 포함하는, 방법.
EC85) EC84의 방법에 있어서, 타입들의 동작들 중 적어도 하나는 저장 디바이스에 포함된 저장 매체의 기록을 특정하는, 방법.
EC86) EC84의 방법에 있어서, 타입들의 동작들 중 적어도 하나는 저장 디바이스에 포함된 저장 매체의 소거를 특정하는, 방법.
EC87) EC84의 방법에 있어서, 타입들의 동작들 중 적어도 하나는 저장 디바이스에 포함된 저장 매체의 검증을 특정하는, 방법.
EC88) EC84의 방법에 있어서, 타입들의 동작들 중 하나 또는 그 초과는 길이에 대응하는 사이즈의 저장 디바이스에 포함된 저장 매체의 부분과 연관된 어드레스 및 길이를 포함하는, 방법.
EC89) EC65, EC73, 또는 EC77의 방법에 있어서, 결과들은 테스트 상태, 하나 또는 그 초과의 지행 표시자들, 하나 또는 그 초과의 통계들, 및 에러 정보 중 임의의 하나 또는 그 초과를 포함하는, 방법.
EC90) EC89의 방법에 있어서, 테스트 상태는 비활성, 활성, 구동, 입력 종료, 중단, 및 에러 테스트 상태들 중 임의의 하나 또는 그 초과를 포함하는, 방법.
EC91) EC89의 방법에 있어서, 진행 표시자들 중 적어도 하나는,
커맨드들에 관한 입력 오프셋,
커맨드들 중 현재 커맨드의 표시자,
완료된 커맨드들의 수의 측정치,
커맨드들 중 임의의 하나 또는 그 초과의 완료량의 측정치,
테스트될 남은 저장 디바이스의 사용자 데이터 저장량의 측정치,
테스트된 사용자 데이터 저장량의 측정치, 및
실행을 시작한 이후 경과 시간의 측정치 중 임의의 하나 또는 그 초과를 포함하는, 방법.
EC92) EC89의 방법에 있어서, 통계들 중 적어도 하나는 저장 디바이스의 모든 또는 임의의 부분들의 온도, 저장 디바이스의 사용자 데이터 저장의 불량 부분들, 사용자 데이터 저장의 재매핑된 부분들, 및 저장 디바이스의 무에러 판독들 중 하나 또는 그 초과를 포함하는, 방법.
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 기가바이트 이더넷과 같은) 이더넷 인터페이스, 임의의 선행 인터페이스들의 비표준 버전, 커스텀 인터페이스, 또는 저장부 및/또는 통신 및/또는 컴퓨팅 디바이스들을 상호접속하기 위해 사용된 임의의 다른 타입의 인터페이스 중 하나 또는 그 초과이다. 예를 들어, 일부 실시예들에서, SSD 제어기(100)는 SATA 인터페이스 및 PCIe 인터페이스를 포함한다.
SSD 제어기(100)는 플래시 디바이스(192)의 하나 또는 그 초과의 인스턴스들과 같은 하나 또는 그 초과의 저장 디바이스들을 포함하는 NVM(199)에 하나 또는 그 초과의 디바이스 인터페이스들(190)을 통해 더 통신가능하게 커플링된다. 다양한 실시예들에 따르면, 디바이스 인터페이스들(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)의 하나 또는 그 초과의 인스턴스들의 임의의 다른 구성으로서 구성된다.
도 1a에 계속하여, SSD 제어기(110)는 호스트 인터페이스들(111), 데이터 프로세싱(121), 버퍼(131), 맵(141), 리사이클러(151), ECC(161), 디바이스 인터페이스 로직(191), 및 CPU(171)와 같은 하나 또는 그 초과의 모듈들을 갖는다. 도 1a에 예시된 특정한 모듈들 및 상호접속들은 단지 하나의 실시예를 나타내며, 예시되지 않은 추가의 모듈들 뿐만 아니라 모듈들 중 일부 또는 모두의 다수의 배열들 및 상호접속들이 구상된다. 제 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) 커맨드(예를 들어, 트림 커맨드)를 포함하고, 이에 응답하여, SSD는 맵을 그에 따라 변경하고 옵션으로 할당해제 상태를 제공한다. 일부 컨텍스트들에서, ATA 호환가능 TRIM 커맨드는 예시적인 할당해제 커맨드이다. 또 다른 예에 있어서, 커맨드들은 수퍼 커패시터 테스트 커맨드 또는 데이터 경화 성공 문의를 포함하고, 이에 응답하여 SSD는 적절한 상태를 제공한다. 일부 실시예들에서, 호스트 인터페이스들(111)은 SATA 프로토콜과 호환가능하고, NCQ 커맨드들을 사용하여, 0 내지 31의 번호로서 표현된 고유 태그를 각각 갖는 32개까지의 펜딩 커맨드들을 갖도록 인에이블된다. 일부 실시예들에서, 태그 트랙킹(113)은 외부 인터페이스들(110)을 통해 수신된 커맨드에 대한 외부 태그를 SSD 제어기(100)에 의한 프로세싱 동안 커맨드를 트랙킹하기 위해 사용된 내부 태그와 연관시키도록 인에이블된다.
다양한 실시예들에 따르면, 하나 또는 그 초과의 데이터 프로세싱(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 코드, 비터비 코드, 트렐리스 코드, 하드 판정 코드, 소프트 판정 코드, 이레이저 기반 코드, 임의의 에러 검출 및/또는 정정 코드, 및 이들의 임의의 조합 중 하나 또는 그 초과를 구현한다. 일부 실시예들에서, ECC(161)는 (LDPC 디코더들과 같은) 하나 또는 그 초과의 디코더들을 포함한다.
디바이스 인터페이스 로직(191)은 디바이스 인터페이스들(190)을 통해 플래시 디바이스(192)의 인스턴스들을 제어한다. 디바이스 인터페이스 로직(191)은 플래시 디바이스(192)의 프로토콜에 따라 플래시 디바이스(192)의 인스턴스들로/인스턴스들로부터 데이터를 전송하도록 인에이블된다. 디바이스 인터페이스 로직(191)은 디바이스 인터페이스들(190)을 통해 플래시 디바이스(192)의 인스턴스들의 제어를 선택적으로 시퀀싱하기 위한 스케줄링(193)을 포함한다. 예를 들어, 일부 실시예들에서, 스케줄링(193)은 플래시 디바이스(192)의 인스턴스들에 대한 동작들을 큐잉(queue)하고, 플래시 디바이스(192)(또는 플래시 다이(194))의 인스턴스들 중 개별 인스턴스들이 이용가능할 때 플래시 디바이스(192)(또는 플래시 다이(194))의 인스턴스들 중 개별 인스턴스들에 동작들을 선택적으로 전송하도록 인에이블된다.
맵(141)은 외부 데이터 어드레스들을 NVM(199)에서의 위치들에 매핑하기 위해 테이블(143)을 사용하여, 외부 인터페이스들(110)상에서 사용된 데이터 어드레싱과 디바이스 인터페이스들(190)상에서 사용된 데이터 어드레싱 사이에서 변환한다. 예를 들어, 일부 실시예들에서, 맵(141)은 테이블(143)에 의해 제공된 매핑을 통해 하나 또는 그 초과의 플래시 다이(194)를 타겟으로 하는 블록 및/또는 페이지 어드레스들로 외부 인터페이스들(110)상에서 사용된 LBA들을 변환한다. 드라이브 제조 또는 할당해제 이후 기록된 적이 없는 LBA들에 대해, 맵은 LBA들이 판독된 경우 리턴하기 위해 디폴트 값으로 포인팅한다. 예를 들어, 할당해제 커맨드를 프로세싱할 때, 맵은 할당해제된 LBA들에 대응하는 엔트리들이 디폴트 값들 중 하나에 포인팅하도록 변경된다. 다양한 실시예들에서, 각각 대응하는 포인터를 갖는 다양한 디폴트 값들이 존재한다. 복수의 디폴트 값들은 (제 1 범위에서와 같은) 일부 할당해제된 LBA들을 하나의 디폴트 값으로서 판독하는 것을 가능하게 하면서 (제 2 범위에서와 같은) 다른 할당해제된 LBA들을 다른 디폴트 값으로서 판독하는 것을 가능하게 한다. 다양한 실시예들에서, 디폴트 값들은 플래시 메모리, 하드웨어, 펌웨어, 커맨드 및/또는 원시 독립변수들 및/또는 파라미터들, 프로그램가능한 레지스터들, 또는 이들의 다양한 조합들에 의해 정의된다.
일부 실시예들에서, 맵(141)은 외부 인터페이스들(110)상에서 사용된 어드레스들과 디바이스 인터페이스들(190)상에서 사용된 데이터 어드레싱 사이에서 트랜슬레이션을 수행하고/하거나 룩업하기 위해 테이블(143)을 사용한다. 다양한 실시예들에 따르면, 테이블(143)은 1-레벨 맵, 2-레벨 맵, 멀티-레벨 맵, 맵 캐시, 압축된 맵, 일 어드레스 공간으로부터 다른 어드레스 공간으로의 임의의 타입의 매핑, 및 이들의 임의의 조합 중 하나 또는 그 초과이다. 다양한 실시예들에 따르면, 테이블(143)은 정적 랜덤 액세스 메모리, 동적 랜덤 액세스 메모리, (플래시 메모리와 같은) NVM, 캐시 메모리, 온-칩 메모리, 오프-칩 메모리, 및 이들의 임의의 조합 중 하나 또는 그 초과이다.
일부 실시예들에서, 리사이클러(151)는 가비지 회수(garbage collection)를 수행한다. 예를 들어, 일부 실시예들에서, 플래시 디바이스(192)의 인스턴스들은 블록들이 재기록가능하기 이전에 삭제되어야 하는 블록을 포함한다. 리사이클러(151)는 예를 들어, 맵(141)에 의해 유지된 맵을 스캔함으로써 플래시 디바이스(192)의 인스턴스들 중 어느 부분들이 액티브하게 사용중인지 (예를 들어, 할당해제 대신에 할당되는지)를 결정하고, 플래시 디바이스(192)의 인스턴스들 중 미사용(예를 들어, 할당해제된) 부분들을 이들을 소거함으로써 기록하는데 이용가능하게 하도록 인에이블된다. 다른 실시예들에서, 리사이클러(151)는 플래시 디바이스(192)의 인스턴스들 중 더 큰 인접 부분들을 기록하는데 이용가능하게 하기 위해 플래시 디바이스(192)의 인스턴스들내에 저장된 데이터를 이동시키도록 인에이블된다.
일부 실시예들에서, 플래시 디바이스(192)의 인스턴스들은 상이한 타입들 및/또는 특성들의 데이터를 저장하기 위한 하나 또는 그 초과의 대역들을 갖도록 선택적으로 및/또는 동적으로 구성되고, 관리되고/되거나 사용된다. 대역들의 수, 배열, 사이즈, 및 타입은 동적으로 변경가능하다. 예를 들어, 컴퓨팅 호스트로부터의 데이터는 핫(hot)(액티브한) 대역에 기록되지만, 리사이클러(151)로부터의 데이터는 콜드(cold)(덜 액티브한) 대역에 기록된다. 일부 사용 시나리오들에서, 컴퓨팅 호스트가 긴 순차적 스트림을 기록하면, 핫 대역의 사이즈가 증가하는 반면에, 컴퓨팅 호스트가 랜덤하게 기록하거나 거의 기록하지 않으면, 콜드 대역의 사이즈가 증가한다.
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)는 성능 통계의 수집 및/또는 리포팅, 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)가 생략되고, 바이패스되거나, 통과된다). 각각의 외부 인터페이스들을 통해 호스트에 직접적으로 각각 커플링된 복수의 SSD들의 예시적인 실시예로서, SSD(101)의 복수의 인스턴스들 각각은 외부 인터페이스들(110)의 각각의 인스턴스를 통해 호스트(102)에 직접적으로 각각 커플링된다(예를 들어, 스위치/구조/중간 제어기(103)가 생략되고, 바이패스되거나, 통과된다). 다양한 상호접속 엘리먼트들을 통해 호스트에 간접적으로 커플링된 하나 또는 그 초과의 SSD들의 예시적인 실시예로서, SSD(101)의 하나 또는 그 초과의 인스턴스들 각각은 호스트(102)에 간접적으로 각각 커플링된다. 각각의 간접 커플링은 스위치/구조/중간 제어기(103)에 커플링된 외부 인터페이스들(110)의 각각의 인스턴스, 및 호스트(102)에 커플링하는 중간 인터페이스들(104)을 통한다.
스위치/구조/중간 제어기(103)를 포함하는 실시예들 중 일부는 메모리 인터페이스(180)를 통해 커플링되고 SSD들에 의해 액세스가능한 카드 메모리(112C)를 또한 포함한다. 다양한 실시예들에서, SSD들, 스위치/구조/중간 제어기, 및/또는 카드 메모리 중 하나 또는 그 초과는 물리적으로 식별가능한 모듈, 카드, 또는 플러그가능한 엘리먼트(예를 들어, I/O 카드(116))상에 포함된다. 일부 실시예들에서, SSD(101)(또는 그것의 변형들)는 호스트(102)로서 동작하는 개시자에 커플링되는 SAS 드라이브 또는 SATA 드라이브에 대응한다.
호스트(102)는 OS(105), 드라이버(107), 애플리케이션(109), 및 멀티-디바이스 관리 소프트웨어(114)의 다양한 조합들과 같은 호스트 소프트웨어(115)의 다양한 엘리먼트들을 실행하도록 인에이블된다. 점선 화살표(107D)는 호스트 소프트웨어 ←→ I/O 디바이스 통신, 예를 들어, 드라이버(107), 드라이버(107), 및 애플리케이션(109)을 통해, 드라이버(107)를 통하거나 VF로서 직접적으로, SSD(101)의 인스턴스들 중 하나 또는 그 초과로/로부터 전송/수신되고, OS(105)의 임의의 하나 또는 그 초과로부터/로 수신/전송된 데이터를 나타낸다.
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)" 또는 "사전 설치(pre-installed)"로 칭함)이거나, 옵션으로는 SSD(101)에 특정한 커맨드들의 사용을 가능하게 하도록 커스터마이징되되고/되거나 벤더 특정된다. 일부 드라이브들 및/또는 드라이버들은 애플리케이션(109)과 같은 애플리케이션 레벨 프로그램들이 최적화된 NAND 액세스(때때로 ONA로 칭함) 또는 직접 NAND 액세스(때때로, DNA로 칭함) 기법들을 통해 SSD(101)에 직접적으로 커맨드들을 통신할 수 있게 하기 위한 통과(pass-through) 모드들을 갖고, 이것은 커스터마이징된 애플리케이션이 일반 드라이버를 갖더라도 SSD(101)에 특정된 커맨드들을 사용할 수 있게 한다. ONA 기법들은 비표준 변경자들(힌트들)의 사용, 벤더 특정 커맨드들의 사용, 압축성(compressibility)에 따른 실제 NVM 사용과 같은 비표준 통계의 통신, 및 다른 기법들 중 하나 또는 그 초과를 포함한다. DNA 기법들은 NVM에 매핑되지 않은 판독, 기록, 및/또는 소거 액세스를 제공하는 비표준 커맨드들 또는 벤더 특정 커맨드들의 사용, 예를 들어, I/O 디바이스가 그렇지 않으면 행할 데이터의 포맷팅을 바이패스함으로써 NVM에 더욱 직접적인 액세스를 제공하는 비표준 또는 벤더 특정 커맨드들의 사용, 및 다른 기법들 중 하나 또는 그 초과를 포함한다. 드라이버의 예들은 ONA 또는 DNA 지원이 없는 드라이버, ONA-인에이블된 드라이버, DNA-인에이블된 드라이버, 및 ONA/DNA-인에이블된 드라이버이다. 드라이버의 다른 예들은 벤더-제공, 벤더-개발, 및/또는 벤더-강화 드라이버, 및 클라이언트-제공, 클라이언트-개발, 및/또는 클라이언트-강화 드라이버이다.
애플리케이션-레벨 프로그램들의 예들은 ONA 또는 DNA 지원이 없는 애플리케이션, ONA-인에이블된 애플리케이션, DNA-인에이블된 애플리케이션, 및 ONA/DNA-인에이블된 애플리케이션이다. 점선 화살표(109D)는 애플리케이션←→ I/O 디바이스 통신(예를 들어, 드라이버를 통한 바이패스 또는 애플리케이션에 대해 VF를 통한 바이패스), 예를 들어, 중개자로서 OS를 사용하는 애플리케이션없이 SSD와 통신하는 ONA-인에이블된 애플리케이션 및 ONA-인에이블된 드라이버를 나타낸다. 점선 화살표(109V)는 애플리케이션 ←→ I/O 디바이스 통신(예를 들어, 애플리케이션에 대해 VF를 통한 바이패스), 예를 들어, 중개자로서 OS 또는 드라이버를 사용하는 애플리케이션없이 SSD와 통신하는 DNA-인에이블된 애플리케이션 및 DNA-인에이블된 드라이버를 나타낸다.
일부 실시예들에서, NVM(199)의 하나 또는 그 초과의 부분들은 펌웨어 저장부, 예를 들어, 펌웨어(106)에 대해 사용된다. 펌웨어 저장부는 하나 또는 그 초과의 펌웨어 이미지들(또는 그것의 부분들)을 포함한다. 예를 들어, 펌웨어 이미지는 예를 들어, SSD 제어기(100)의 CPU 코어(172)에 의해 실행된 펌웨어의 하나 또는 그 초과의 이미지들을 갖는다. 다른 예에 있어서, 펌웨어 이미지는 예를 들어, 펌웨어 실행 동안 CPU 코어에 의해 참조되는 상수들, 파라미터 값들, 및 NVM 디바이스 정보의 하나 또는 그 초과의 이미지들을 갖는다. 펌웨어의 이미지들은 예를 들어, 현재의 펌웨어 이미지 및 (펌웨어 업데이트들에 관한) 제로 또는 그 초과의 이전의 펌웨어 이미지들에 대응한다. 다양한 실시예들에서, 펌웨어는 일반, 표준, ONA 및/또는 DNA 동작 모드들을 제공한다. 일부 실시예들에서, 펌웨어 동작 모드들 중 하나 또는 그 초과는 드라이버에 의해 옵션으로 통신되고/되거나 제공되는 키들 또는 다양한 소프트웨어 기법들을 통해 인에이블된다(예를 들어, 하나 또는 그 초과의 API들이 "언락(unlock)"된다).
스위치/구조/중간 제어기들이 부족한 일부 실시예들에서, SSD는 외부 인터페이스들(110)을 통해 직접적으로 호스트에 커플링된다. 다양한 실시예들에서, SSD 제어기(100)는 RAID 제어기와 같은 다른 제어기들의 하나 또는 그 초과의 중간 레벨들을 통해 호스트에 커플링된다. 일부 실시예들에서, SSD(101)(또는 그것의 변형들)는 SAS 드라이브 또는 SATA 드라이브에 대응하고, 스위치/구조/중간 제어기(103)는 개시자에 차례로 커플링되는 확장자에 대응하거나, 다르게는, 스위치/구조/중간 제어기(103)는 확장자를 통해 개시자에 간접적으로 커플링되는 브리지에 대응한다. 일부 실시예들에서, 스위치/구조/중간 제어기(103)는 하나 또는 그 초과의 PCIe 스위치들 및/또는 구조들을 포함한다.
컴퓨팅 호스트(예를 들어, 컴퓨터, 워크스테이션 컴퓨터, 서버 컴퓨터, 저장 서버, SAN, NAS 디바이스, DAS 디바이스, 저장 기구, PC, 랩탑 컴퓨터, 노트북 컴퓨터, 및/또는 넷북 컴퓨터)로서 호스트(102)를 갖는 실시예들 중 일부와 같은 다양한 실시예들에서, 컴퓨팅 호스트는 하나 또는 그 초과의 로컬 및/또는 원격 서버들(예를 들어, 옵션의 서버들(118))과 (예를 들어, 옵션의 I/O & 저장 디바이스들/리소스들(117) 및 옵션의 LAN/WAN(119)을 통해) 통신하도록 옵션으로 인에이블된다. 예를 들어, 통신은 SSD(101) 엘리먼트들 중 임의의 하나 또는 그 초과의 로컬 및/또는 원격 액세스, 관리, 및/또는 사용을 인에이블한다. 일부 실시예들에서, 통신은 전체적으로 또는 부분적으로 이더넷을 통한다. 일부 실시예들에서, 통신은 전체적으로 또는 부분적으로 섬유 채널을 통한다. 다양한 실시예들에서, LAN/WAN(119)은 서버 팜에서의 네트워크, 서버 팜들을 커플링하는 네트워크, 메트로-영역 네트워크, 및 인터넷 중 임의의 하나 또는 그 초과와 같은 하나 또는 그 초과의 로컬 및/또는 광역 네트워크들을 나타낸다.
다양한 실시예들에서, 하나 또는 그 초과의 NVM들과 결합하여 SSD 제어기 및/또는 컴퓨팅-호스트 플래시 메모리 제어기는 USB 저장 컴포넌트, CF 저장 컴포넌트, MMC 저장 컴포넌트, eMMC 저장 컴포넌트, 썬더볼트 저장 컴포넌트, UFS 저장 컴포넌트, SD 저장 컴포넌트, 메모리 스틱 저장 컴포넌트, 및 xD-픽처 카드 저장 컴포넌트와 같은 비휘발성 저장 컴포넌트로서 구현된다.
다양한 실시예들에서, SSD 제어기(또는 컴퓨팅-호스트 플래시 메모리 제어기) 중 모두 또는 임의의 부분들, 또는 그것의 기능들은 제어기가 커플링될 호스트(예를 들어, 도 1b의 호스트(102))에서 구현된다. 다양한 실시예들에서, SSD 제어기(또는 컴퓨팅-호스트 플래시 메모리 제어기) 중 모두 또는 임의의 부분들, 또는 그것의 기능들은 하드웨어(예를 들어, 로직 회로), 소프트웨어 및/또는 펌웨어(예를 들어, 드라이버 소프트웨어 및/또는 SSD 제어 펌웨어), 또는 이들의 임의의 조합을 통해 구현된다. 예를 들어, (도 1a의 ECC(161) 및/또는 ECC-X(135)와 유사한) ECC 유닛의 기능 또는 그와 연관된 기능은 호스트상의 소프트웨어를 통해 부분적으로 및 SSD 제어기에서 펌웨어와 하드웨어의 조합을 통해 부분적으로 구현된다. 다른 예에 있어서, 예를 들어, (도 1a의 리사이클러(151)와 유사한) 리사이클러 유닛의 기능 또는 그와 연관된 기능은 호스트상의 소프트웨어를 통해 부분적으로 및 컴퓨팅-호스트 플래시 메모리 제어기에서 하드웨어를 통해 부분적으로 구현된다.
매핑 동작
도 2는 LBA의 LPN 부분을 매핑하는 실시예의 선택된 상세를 예시한다. 일부 실시예들에서, 판독 유닛은 NVM의 페이지의 부분과 같이, 독립적으로 판독가능한 NVM의 가장 미세한 단위(finest granularity)이다. 다른 실시예들에서, 판독 유닛은 체크 비트들에 의해 보호된 모든 데이터에 따라 (하위 레벨) 에러 정정 코드의 체크 비트들(때때로, 리던던시라 칭함)에 대응한다. 예를 들어, 도 1a의 ECC(161)는 LDPC 코드를 통하는 것과 같이 체크 비트들을 통해 에러 정정을 구현하고, 판독 유닛은 LDPC 코딩 비트들에 의해 보호된 데이터에 부가하여 LDPC 코드를 구현하는 코딩 비트들에 대응한다.
일부 실시예들에서, 맵(141)은 (도 1a에 예시된 바와 같이) 테이블(143)을 통해서와 같이, LPN에 대한 맵 정보(221)에 LBA(211)의 LPN(213) 부분을 매핑한다. (LPN에 대한 맵 정보(221)와 같은) LPN에 대한 맵 정보는 때때로 맵 엔트리로 칭한다. 맵(141)은 LPN을 대응하는 맵 엔트리와 연관시킨다 할 수 있다. 다양한 실시예들에서, 매핑은 하나 또는 그 초과의 연관 룩업들, 하나 또는 그 초과의 비연관 룩업들, 및/또는 하나 또는 그 초과의 다른 기법들을 통한다.
일부 실시예들에서, SSD 제어기(100)는 사용중에 잠재적으로 및/또는 액티브하게 각 LPN에 대한 하나의 맵 엔트리를 유지한다.
일부 실시예들에서, LPN에 대한 맵 정보(221)는 각각의 판독 유닛 어드레스(223) 및 판독 유닛들에서의 길이(225)를 포함한다. 일부 실시예들에서, 길이 및/또는 스팬은 예를 들어, 판독 유닛들에서의 길이(225) 중 모두 또는 임의의 부분들에 스팬으로부터의 오프셋으로서 길이를 저장함으로써 저장되어 인코딩된다. 다른 실시예들에서, 제 1 LPN은 제 1 맵 엔트리와 연관되고, 제 2 LPN(제 1 LPN과 상이하지만 제 1 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)에 의해 특정된 판독 유닛들의 수 보다 많지 않게 판독함으로써 NVM(199)에 액세스하고 판독 데이터(311)를 생성하도록 인에이블된다.
도 4a는 판독 유닛(401A)으로서 (도 3의 판독 유닛들(313 또는 315)과 같은) 판독 유닛의 실시예의 선택된 상세들을 예시한다. 다양한 실시예들 및/또는 사용 시나리오들에서, 헤더 1(411A) 내지 헤더 N(419A)은 인접하고, 헤더들 각각에 의해 (각각의 오프셋들을 통한 것과 같이) 식별된 각각의 데이터 영역들은 헤더들 중 최종 헤더에 후속하여 인접한다. 데이터 영역들은 데이터 바이트들(421A)을 집합적으로 형성한다. 데이터 영역들은 헤더들이 저장되는 위치 순서에 매칭하는 위치 순서에 저장된다. 예를 들어, 판독 유닛의 시작에서 제 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))에 의해 각각 식별되고, 헤더들이 저장되는 위치 순서와 반대인 위치 순서로 저장된다. 헤더들은 판독 유닛의 시작에서 시작하고, 대응하는 데이터 영역들이 판독 유닛의 종료에서 시작한다. 일부 실시예들에서, 데이터 영역내의 데이터 바이트들(예를 들어, 데이터 바이트들(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) 내지 헤더(419B)와 같은) 헤더의 실시예의 선택된 상세들을 예시한다. 일부 실시예들에서, 헤더들은 고정 길이이다(예를 들어, 각 헤더는 동일한 수의 바이트 길이이다). 헤더(501)는 필드 타입(511), 최종 표시자(513), 플래그들(515), LPN(517), 길이(519), 및 오프셋(521)을 포함한다. 타입 필드는 데이터 바이트들의 카테고리를 식별한다. 예를 들어, 타입 필드는 데이터 바이트들의 카테고리가 호스트 데이터(예를 들어, 논리 페이지 데이터) 또는 시스템 데이터(예를 들어, 맵 정보 또는 체크포인트 정보) 중 하나이라는 것을 나타낸다. 최종 필드는 헤더가 데이터 바이트들 이전의 최종 헤더라는 것을 나타낸다. 헤더 마커를 갖는 일부 실시예들에서, 최종 필드는 옵션으로 생략된다. LPN 필드는 헤더가 연관되는 LPN이다. LPN 필드는 예를 들어, 특정한 LPN에 매칭하는 LPN 필드를 갖는 하나에 대한 헤더들을 탐색함으로써 특정한 LPN과 연관되는 헤더들 중 특정한 하나를 결정하기 위해 헤더들의 분석을 인에이블한다. 길이 필드는 데이터 바이트들의 바이트 단위의 길이(예를 들어, 헤더(501)와 연관된 데이터 바이트들(421A)에 얼마나 많은 데이터의 바이트들이 존재하는지)이다. 일부 실시예에서, 오프셋 필드에서의 오프셋은 특정한 단위(예를 들어, 8 바이트 단위)에 따라 반올림(round)된다.
다양한 실시예들에서, 특정한 LPN과 연관된 일부 또는 모든 정보는 특정한 LPN과 연관된 맵 엔트리, 특정한 LPN과 연관된 헤더, 또는 이들 양자에 저장된다. 예를 들어, 일부 실시예들에서, 길이(519)의 일부 또는 모두는 헤더 보다는 맵 엔트리에 저장된다.
비휘발성 메모리 구성 및 관리의 선택된 양태들
다양한 실시예들에서, SSD의 NVM 구현 대용량 저장부는 하나 또는 그 초과의 플래시 다이를 통해 구현된다. 각 플래시 다이는 정수의 블록들(예를 들어, N개의 블록들)을 포함하고 블록은 소거의 가장 작은 정량이다. 일부 실시예들에서, 각 블록은 정수의 페이지들을 포함하고 페이지는 기록의 가장 작은 정량이다. 다양한 실시예들에 따르면, 판독 유닛 중 하나 또는 그 초과는 판독 및 에러 정정의 가장 작은 정량이고, 각 페이지는 정수의 판독 유닛들을 포함하고, 2개 또는 그 초과의 페이지들의 연관된 그룹은 정수의 판독 유닛들을 포함하며, 판독 유닛들은 옵션으로 및/또는 선택적으로 페이지 경계들을 스팬한다.
다양한 실시예들에서, 다양한 NVM 관리 기능들(예를 들어, 판독, 리사이클링, 소거, 및/또는 프로그래밍/기록)이 R-블록들의 유닛들에서 수행된다. R-블록은 예를 들어, 플래시 메모리의 다양한 다이(예를 들어, 모든 다이, 전체적으로 또는 부분적으로 고장난 것들을 제외한 모든 다이, 및/또는 다이의 하나 또는 그 초과의 선택된 서브세트들)에 걸쳐 논리적 슬라이스 또는 섹션으로서 예시된다. 예를 들어, 각 플래시 다이가 N개의 블록들을 갖는 R 플래시 다이를 갖는 플래시 메모리에서, 각 R-블록은 총 N개의 블록들에 대해 함께 취해진 플래시 다이 각각으로부터의 i번째 블록이다. 예에 계속하여, R 플래시 다이 중 하나가 고장나면, 각 R-블록들은 총 N-1개의 R-블록들에 대해, 고장난 플래시 다이를 제외한 플래시 다이 각각으로부터의 i번째 블록이다. 다른 예에 있어서, N개의 블록들을 각각 갖는 R 플래시 다이를 갖는 플래시 메모리에서, 각 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들의 문서 및 엔지니어링/디버그 샘플들을 생성한다. 문서(예를 들어, 마켓팅 콜래트럴 및/또는 엔지니어링 정보)는 리스트의 플래시 메모리 디바이스들 및 샘플 SSD의 평가/특징(예를 들어, 가격, 성능, 및/또는 특성) 중 임의의 하나 또는 그 초과, 뿐만 아니라 설계 벤더 내부의 설계 문서들(예를 들어, 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들 중 하나상에 펌웨어의 다운로딩; 대량 제조된 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)과 같은) 제조 소프트웨어 툴의 사용은 시스템 벤더에 대한 설계 벤더에 의한 라이센싱의 기간에 의해 요구된다. 제조 소프트웨어 툴의 사용을 요구하는 라이센싱 기반 실시예들 중 일부에서, 펌웨어 라이센싱, 펌웨어 스탬핑, 및/또는 펌웨어 추출 중 하나 또는 그 초과의 성능은 제조 소프트웨어 툴을 통하도록 (예를 들어, 시스템 벤더에 대한 설계 벤더에 의한 라이센싱의 기간을 통해) 요구된다. 다양한 실시예들에 따르면, 설계 벤더(610)에 의해 제공되는 바와 같은 제조 소프트웨어 툴(616)의 사용을 요구하는 것은, 설계 벤더(610)가 예를 들어, 인터넷을 통해 설계 벤더(610)에게 통계 및/또는 다른 정보를 리포팅하는 제조 소프트웨어 툴(616)에 의해 생산을 모니터링하고/하거나 SSD에 대한 펌웨어 또는 다른 라이센스들을 트랙킹하고; 제조된 SSD들에 대한 암호키 위탁과 같은 기능들 및 다른 모니터링, 트랙킹, 라이센싱, 또는 위탁 기능들을 수행하는 것 중 하나 또는 그 초과를 할 수 있게 한다.
도면에 구체적으로 예시하지는 않았지만, 일부 실시예들 및/또는 사용 시나리오들에서, 예시된 동작들 중 일부는 예시된 동작들 중 다른 것들에 피드백을 제공한다. 예를 들어, 하드웨어 검증/특징화(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 사이즈들을 이용한 동작은 각각의 다양한 장래의 고객들을 타겟으로 하는 다양한 SSD 제품들에서 SSD 제어기 및/또는 펌웨어의 사용을 인에이블한다. 예를 들어, 시스템 벤더는 상술한 LB 사이즈들 중 임의의 2개 또는 그 초과와 동작하도록 인에이블된 하나 또는 그 초과의 SSD 제품들을 서버(예를 들어, 저장 서버) 벤더인 기업 고객, 또는 데이터 센서 벤더인 클라우드 고객에게 제공하고, 512-바이트로 동작하도록 인에이블된 하나 또는 그 초과의 SSD 제품들을 내구적 컴퓨터 벤더인 산업 고객, 또는 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의 시제품화 또는 제조하는 구성요소들을 선택할 때, 제 1 및 제 2 온도 센서들 중에서 선택하는 것에는 자유롭지만, 제 3 온도 센서에 대해서는 아니다.
SSD 대량 제조 및 시제품 구성
도 7a는 가상 드라이브 제조 모델에 따른 SSD들의 (대량) 제조(또는 시제품 구성)의 실시예의 선택된 상세들의 개념 표현을 예시한다. 예시된 엘리먼트들은 2개의 디커플링된 부분들로 그룹화되어, 엔지니어링 셋업 동작들이 공장 동작과 개별적으로 수행될 수 있게 한다. 제 1 부분(엔지니어링(730A))은 예를 들어, 생산 운전들(production runs)을 셋업하기 위해 단일 생산 운전 마다 1회 또는 동일한 모델의 SSD의 일련의 생산 운전들에 대해 1회 수행된다. 제 2 부분(공장(740F))은 각각의 SSD의 제조의 다양한 양태들을 완결하기 위해, (시제품 구성용 같은) 단일 생산 운전 또는 (대량 제조용과 같은) 동일한 모델의 SSD의 일련의 생산 운전들 중 하나이든, 각 생산 운전에 대해 수행된다. 다양한 실시예들 및/또는 사용 시나리오들에 따르면, 엔지니어링(730A)의 엘리먼트들로서 도시된 동작들 중 모두 또는 임의의 부분들은 도 6의 시스템 벤더(630) 및 도 6의 제조자(620) 중 하나 또는 그 초과에 의해 수행된다.
엔지니어링(730A)의 엘리먼트들은 하나 또는 그 초과의 SSD들의 제조를 위해 때때로 "스탬프된 펌웨어"로서 칭하는 펌웨어 이미지의 생산을 포함한다(제조 펌웨어 패키지(721)). 펌웨어 이미지 제조는 애플리케이션 프로그램(패키지 관리자(711))을 통해 라이센스 서술(라이센스 파일(701)) 및 분배된 펌웨어 이미지(분배 펌웨어 패키지(703))에 따라 생산된다. 패키지 관리자는 라이센스 파일을 사용하여 분배 펌웨어 패키지로부터 펌웨어를 추출하고, (제조 펌웨어 패키지를 암호화하고, 보안하고, 개인화하고/하거나 커스터마이징하는 것과 같은) 하나 또는 그 초과의 스탬핑 기능들을 수행하여, 제조 펌웨어 패키지를 생산한다. 패키지 관리자는 라이센스 파일에서 식별될 때 모든 또는 임의의 이용가능한 드라이브 구성들(예를 들어, 설계 벤더가 시스템 벤더에 관하여 제공하고/하거나 지원하는 것을 동의한 구성들)에 대한 드라이브 구성 템플릿들을 옵션으로 생산한다. 일부 실시예들에서, 패키지 관리자는 GUI를 통해 상호작용하도록 인에이블된다. 다양한 실시예들 및/또는 사용 시나리오들에서, 라이센스 파일, 분배 펌웨어 패키지, 및 패키지 관리자 중 임의의 하나 또는 그 초과는 도 6의 설계 벤더에 의해 제공된다.
엔지니어링(730A)의 엘리먼트들은 공장(740F)의 엘리먼트들에 의해 사용된 제조 소프트웨어를 제어하는 하나 또는 그 초과의 커맨드 라인 입력들 및/또는 파일들(드라이브 구성 및 세팅 파일(722))의 생산을 더 포함한다. 드라이브 구성 및 세팅 파일은 애플리케이션 프로그램(구성 관리자(712))을 통해 드라이브 구성 및/또는 파라미터들(시스템 벤더 소망 드라이브 세팅(704))에 따라 생산된다. 구성 관리자는 모든 SSD 세팅들 및/또는 다운로드 옵션들을 관리하는 중앙 저장소로서 옵션으로 동작가능하다. 일부 실시예들에서, 구성 관리자는 드라이브 세팅들 및 펌웨어 다운로드 흐름 옵션들에 대해 제어 패널과 GUI로서 동작하도록 인에이블된다. 일부 실시예들 및/또는 사용 시나리오들에서, 시스템 벤더 소망 드라이브 세팅들은 도 6의 시스템 벤더(630)에 의해 제공되고, 구성 관리자는 도 6의 설계 벤더에 의해 제공된다.
제조 펌웨어 패키지 및 드라이브 구성 및 세팅 파일은 제조 소프트웨어 툴(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로 변환한다. 제조 툴은 다운로딩된 펌웨어를 통해 MST를 수행하도록 펌웨어를 갖는 SSD에게 옵션으로 지시한다. 특정한 커맨드 라인들은 예를 들어, 다운로딩되는 펌웨어의 각 인스턴스를 커스터마이징하기 위해 사용되는 시리얼 넘버 및/또는 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))상에서 실행하는 쉘 프로그램에 의해 해석된 일련의 하나 또는 그 초과의 커맨드 라인들과 같은 커맨드 라인 호출을 통해 동작가능하다. 특정한 예로서, 커맨드 라인 호출은 제조 소프트웨어 툴(예를 들어, 제조 소프트웨어 툴(MT)(751))을 식별하는 제 1 파라미터, 펌웨어를 수용할 준비가 된 SSD(예를 들어, SSD.1(790P.1) ... SSD.N(790P.N) 중 하나)에 대응하는 특정한 디바이스를 식별하는 제 2 파라미터, 드라이브 구성 파일(예를 들어, 도 7a의 드라이브 구성 및 세팅 파일(722))을 식별하는 제 3 파라미터, 및 펌웨어를 수용할 준비가 된 SSD에 대한 각각의 시리얼 넘버 및 WWN(예를 들어, 도 7a의 시리얼 넘버, 월드 와이드 네임(WWN))인 제 4 및 제 5 파라미터들을 포함한다. 제 6 (옵션) 파라미터는 진단 언락 키를 특정한다. 일부 실시예들 및/또는 사용 시나리오들에서, 진단 언락 키는 제조 소프트웨어 툴을 통해 생산된 SSD의 사용된 특정한 커맨드들, 예를 들어, 특정한 시스템 벤더에 대해 고유한 진단 커맨드들에 대한 비인가된 액세스를 방지하기 위해 사용된다. 제 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들상에서만 사용가능할 수 있도록 하나 또는 그 초과의 보안 수단들을 포함한다.
필드 업데이트 펌웨어 패키지는 SSD 업데이트 소프트웨어 툴(UT)(753)에 의해 사용을 위해 엔지니어링(730C)으로부터 종단 사용자(740E)로 패스된다. SSD 업데이트 툴은 (구(old)) 펌웨어를 갖는 SSD((구) 펌웨어 로딩된 SSD(750X))로 로딩된 펌웨어를 통해 펌웨어를 업데이트하도록 인에이블된다. 이에 의해, 구 펌웨어를 갖는 SSD는 새로운 펌웨어를 갖는 SSD((새로운) 펌웨어 로딩된 SSD(750Y))로 변환된다. 일부 실시예들 및/또는 사용 시나리오들에서, 펌웨어 업데이트는 (암호화 키(들)(754)에 의해 표현된) 하나 또는 그 초과의 키들, 벤더 식별자들, 펌웨어 오버라이드 스트링들, 및/또는 다양한 보안 기법들을 통해 언락되고/되거나 인에이블된다. 언락킹 및/또는 인에이블링은 필드 업데이트 펌웨어 패키지를 생산할 때 패키지 관리자에 의해 수행된 스탬핑 기능들과 호환가능하다. 따라서, 비인가 파티들은 펌웨어 업그레이드를 수행하는 것, 예를 들이, 다운로딩된 펌웨어를 이전에 갖는 SSD상에 새로운/수정된 펌웨어를 다운로딩하는 것이 방지된다. 다양한 컨텍스트들에서, 종단 사용자(740E)는 (예를 들어, 펌웨어에 대한 엔지니어링 변화를 소망하는) 설계 벤더, (예를 들어, 펌웨어에 대한 생산 관련 변화를 소망하는) 시스템 벤더 및/또는 제조자, 또는 시스템 벤더의 고객(예를 들어, 종단 사용자에 의한 사용에서 이전에 SSD의 필드 업그레이드를 수행하는 종단 사용자) 중 임의의 하나 또는 그 초과를 나타낸다.
일부 실시예들 및/또는 사용 시나리오들에서, 펌웨어 업데이트는 행위들의 하나의 구성 및/또는 세트로부터 다른 구성 및/또는 세트로 이전에 생산된 SSD(예를 들어, 이전에 다운로딩된 펌웨어를 갖는 SSD)를 변화시키기 위한 정보 및/또는 동작들을 포함한다. 예를 들어, 그렇지 않으면, 펌웨어 업데이트를 통해 (예를 들어, 도 7a의 구성 관리자(712)를 통해 시스템 벤더 소망 드라이브 세팅(704)에 의해) 생산시에 고정되는 행위들의 변형을 가능하게 하기 위해 부록이 펌웨어 이미지에 첨부된다.
도 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의 호스트(780B) 및 도 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.M))을 포함한다. 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 페이지들의 완전하게 연관된 캐시와 같은 캐시에 액세스하는 키로서 사용된다. 특정한 SLM 페이지에 대한 캐시에 힌트가 있다면, 특정한 SLM 페이지의 최근의 카피가 NVM에 액세스하지 않고 캐시에서 발견된다. 복수의 SLM 페이지들에 대한 고속 액세스의 제공은, 일부 실시예들 및/또는 사용 시나리오들에서, NVM에 대한 랜덤 액세스들 및/또는 NVM에 대한 순차적 데이터 액세스들의 복수의 독립적 스트림들의 더욱 효율적인 프로세싱을 가능하게 한다(예를 들어, LBA들의 제 1 영역에 대한 순차적 데이터 액세스들의 제 1 스트림은 LBA들의 제 2 영역에 대한 순차적 데이터 액세스들의 제 2 스트림이 점재된다).
고체 상태 디스크 제조 셀프 테스트
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를 준비한다.
단일의 기술자에 관련하여 상술하였지만, 다양한 실시예들 및/또는 사용 시나리오들에서는, 기술자들은 예를 들어, 일정 기간에 걸쳐 단일의 개인이거나, 다르게는, 복수의 개인들이다.
일부 실시예들 및/또는 사용 시나리오들에서, MST는 MST에 영향을 받는 SSD의 환경적 컨텍스트의 제어를 위해 하나 또는 그 초과의 환경적 파라미터들을 특정한다. 일부 실시예들에서, 환경적 파라미터들은 예를 들어, SSD의 플래시에 적용가능한 하나 또는 그 초과의 전압 램프들을 구현하도록 사용된다.
도 9a는 SSD MST 흐름의 실시예의 선택된 상세들을 예시한다. 다양한 환경들에서, SSD상에서 테스트에 관한 흐름을 수행한 결과로서, SSD상에 이전에 저장된 사용자 데이터 중 모두 또는 임의의 부분들은 소거되고/되거나 겹쳐쓰기된다. (SSD MST의 컨텍스트들에서 '사용자 데이터'의 예들은 운영 시스템 데이터, 드라이버 데이터, 및 애플리케이션 데이터와 같은, 호스트 판독들/기록들로서 수신되거나 그로부터 발생하는 데이터를 포함한다). 호스트는 흐름에 따라 테스트를 셋업하고 시작하기 위해 사용된다. 테스트는 SSD가 테스트를 완료하거나 호스트가 (예를 들어, MST_ABORT와 같은 특정한 SCT 커맨드로서) ABORT 커맨드를 SSD에 전송함으로써 SSD에게 테스트를 이르게 종료할 것을 지시할 때까지 SSD의 전력 사이클들에 걸쳐 계속 이어진다. 일부 실시예들에서, 전체 보다 적은 SSD의 플래시, 예를 들어, 임의의 오버 프로비저닝 할당들 및/또는 지정들을 옵션으로 포함하는, 사용자 데이터를 저장하기 위해 할당되고/되거나 지정된 플래시의 영역들만이 사용된다. 일부 실시예들에서, 호스트는 테스트의 결과들을 해석한다(예를 들어, 호스트는 테스트 성공 또는 실패 여부를 결정한다). 다양한 실시예들에서, (예를 들어, 가상 드라이브 제조 모델에 따른) 설계 벤더는 예시된 SSD MST 흐름에 따라 동작을 가능하게 하는 펌웨어를 SSD에 제공한다.
흐름은 넓게는, 3개의 부분들: 테스트 구동을 위한 셋업(MST 준비(910)), 테스트 구동(MST 구동(920)), 및 테스트의 완료 이후에 포스트-완료 동작들의 수행(MST 종료(930))로 배열된다. 흐름의 준비 부분은 예를 들어, 테스트 인원 기술 커맨드들을 통해 하나 또는 그 초과의 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 모드에 진입하고/하거나 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로부터 판독된 진행, 상태, 및/또는 결과 정보 중 모두 또는 임의의 부분들을 보관한다. 다양한 실시예들 및/또는 사용 시나리오들에서, 호스트는 (테스트의 커맨드들 중 하나 또는 그 초과와 같은) 입력 로그 중 모두 또는 임의의 부분들을 보관한다. 다양한 실시예들 및/또는 사용 시나리오들에서, 호스트는 (예를 들어, 하나 또는 그 초과의 스크립들, 프로그램들, 및/또는 분석 툴들을 통해) 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.1(990.N)은 SSD.1(990.1)과 유사하거나 동일한 엘리먼트들을 포함한다.
일부 실시예들에서, MST 테스트는 예를 들어, 돌발 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)에서 나타나는 스마트 로그 0xF9의 실시예이다. 다른 예에 있어서, 도 9b의 LED(진행 표시자)(992)는 진행 표시(LED, 이벤트 로그, SMART 로그 0xF9)(924)의 LED의 실시예이다. 다른 예에 있어서, 도 9b의 이벤트 로그(진행, 결과들)(993)는 도 9a의 진행 표시의 이벤트 로그(LED, 이벤트 로그, SMART 로그 0xF9)(924) 및 결과들 판독(이벤트 로그, 결함들, SMART 로그 0xF9)(932)의 실시예이다. 다른 예에 있어서, 도 9b의 SMART 로그(진행, 결과들)(994)는 도 9a의 진행 표시의 SMART 로그 0xF9(LED, 이벤트 로그, SMART 로그 0xF9)(924) 및 결과들 판독(이벤트 로그, 결함들, SMART 로그 0xF9)(932)의 실시예이다. 다른 예에 있어서, 도 9b의 결함 리스트(995)는 도 9a의 결과들 판독의 결함들(이벤트 로그, 결함들, SMART 로그 0xF9)(932)의 실시예이다.
다양한 실시예들에서, 도 1a 및/또는 도 1b의 엘리먼트들 중 모두 또는 임의의 부분들은 도 9a 및 도 9b의 엘리먼트들 중 모두 또는 임의의 부분들의 예시적인 실시예들이다. 예를 들어, 도 1a 및 도 1b의 SSD(101)는 도 9a의 동작들 및 도 9b의 SSD.1(990.1) ... SSD.N(990.N) 중 임의의 하나 또는 그 초과에 관하여 참조되는 SSD의 예시적인 실시예이다. 다른 예에 있어서, 도 1b의 호스트(102)는 도 9a의 동작들 및 도 9b의 호스트/랙(980)에 관한 호스트 및/또는 랙의 예시적인 실시예이다. 다른 예에 있어서, 도 1b의 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(790.1) ... SSD.N(790.N)의 예시적인 실시예이다).
도 10은 파라미터 쌍들 및 파라미터 식별자/값 쌍들의 연관된 번호들 뿐만 아니라 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)은 얼마나 많은 파라미터 쌍들이 후속하는지(파라미터 쌍들의 수(1012))를 나타내고, 파라미터 식별자 값 쌍들(파라미터 ID & 값 쌍 1(1013) ... 파라미터 ID & 값 쌍 N(1014))로서 파라미터 쌍들로 종료하는 부분이 후속하는 커맨드(커맨드 1(1011))를 갖는 것으로서 상세히 예시되어 있다. 다양한 사용 시나리오들에서, 커맨드 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내에서 흐름 제어를 수행하기 위한 커맨드들, 예를 들어, 루핑 및/또는 브랜칭 커맨드들과 같은 다른 커맨드들이 예상된다. 도 11의 컨텍스트에서, (본 명세서 다른 곳에서 설명되는 바와 같은) SSD는 '드라이브'의 일례이다.
도 12는 MST의 일례의 선택된 상세들을 예시한다. 예시적인 MST 입력(1200)은 집합적으로 예시적인 MST를 형성하는 복수의 커맨드들 및 종료 마커에 대한 커맨드들 및 연관된 기술들을 예시한다. 예시적인 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에 관련하여 더 논의하지 않는다.
도 13c는 드라이브 기록 커맨드의 제 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 112014068402043-pat00006
다양한 실시예들 및/또는 사용 시나리오들에서, SATA PHY 번-인 커맨드는 아래의 테이블에 설명한 바와 같이, 제로 또는 그 초과의 파라미터들을 갖는다. 테이블에서의 모든 파라미터들은 옵션이라는 것에 유의한다.
Figure 112014068402043-pat00007
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의 플래시의 동작불능 블록들을 결정하기 위해 하나 또는 그 초과의 특정한 스트레스 모드 커맨드들을 사용한다. 다양한 사용 시나리오들에서, 소유 시퀀스는 플래시의 동작 전압, 플래시의 특정 셀들의 이용, 플래시에 대한 동작들의 주파수, 플래시의 에러 체크 레이트, 플래시의 셀들의 기하학적 결함들, 및 플래시의 셀들 사이의 커플링 중 임의의 하나 또는 그 초과와 관련된 파라미터들 중 하나 또는 그 초과를 변화시킨다. 일부 실시예들에서, 스트레스 모드 커맨드는 예를 들어, 도 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 112014068402043-pat00008
아래의 테이블은 MST 이벤트 로그의 다양한 실시예들의 선택된 엘리먼트들을 리스트한다. 엘리먼트들 중 임의의 하나 또는 그 초과는 다양한 실시예들에서 옵션이다.
Figure 112014068402043-pat00009

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

Claims (15)

  1. 저장 디바이스의 제조 테스트를 제어하기 위한 방법으로서,
    호스트에 커플링된 저장 디바이스의 저장 인터페이스를 통해 상기 호스트로부터 하나 또는 그 초과의 커맨드들을 수신하는 단계로서, 상기 커맨드들은 다르게는 상기 저장 디바이스에 의해 생성된 로그 정보의 저장에 전용되는 상기 저장 디바이스의 저장 공간에 저장되도록 상기 호스트에 의해 지시되는, 상기 커맨드들을 수신하는 단계;
    이벤트에 응답하여 상기 커맨드들의 실행을 시작하는 표시자를 수신하는 단계; 및
    상기 이벤트에 응답하여 상기 커맨드들을 실행하는 단계를 포함하는, 저장 디바이스의 제조 테스트를 제어하기 위한 방법.
  2. 제 1 항에 있어서,
    암호화된 펌웨어 저장소로부터의 하나 또는 그 초과의 이미지들로서 펌웨어의 암호해독을 가능하게 하기 위해 암호 키를 제공하는 단계로서, 상기 이미지들은 상기 저장 디바이스에 포함된 저장 디바이스 제어기의 엘리먼트들을 프로세싱함으로써 실행가능하고, 상기 이미지들은 상기 커맨드들의 실행을 가능하게 하고, 상기 저장 디바이스는 저장 디바이스 레퍼런스 설계에 따라 구성되는, 상기 암호 키를 제공하는 단계; 및
    상기 암호화된 펌웨어 저장소에 대한 액세스를 제공하는 단계를 더 포함하고,
    상기 커맨드들은 상기 저장 디바이스의 제조 셀프 테스트를 포함하며,
    상기 저장 디바이스는 컴포넌트들의 리스트로부터 선택된 컴포넌트들을 포함하고, 상기 리스트는 상기 펌웨어, 상기 저장 디바이스 제어기, 및 상기 저장 디바이스 레퍼런스 설계와 호환가능한 컴포넌트들인, 저장 디바이스의 제조 테스트를 제어하기 위한 방법.
  3. 제 1 항에 있어서,
    상기 저장 디바이스는 저장 디바이스 제어기 및 저장 매체를 포함하고;
    상기 저장 디바이스는 레퍼런스 설계 및 후보 저장 매체 디바이스들의 리스트에 따라 구성되고;
    상기 저장 매체는 상기 리스트로부터 선택된 엘리먼트들로 이루어지고;
    펌웨어와 함께 상기 저장 디바이스 제어기는 상기 레퍼런스 설계 및 상기 리스트 중의 임의의 멤버들을 통해 상기 저장 디바이스를 구현하도록 인에이블되고;
    상기 펌웨어와 함께 상기 저장 디바이스 제어기는 상기 실행을 수행하도록 인에이블되며,
    상기 실행은 상기 저장 디바이스의 제조 셀프 테스트를 수행하는, 저장 디바이스의 제조 테스트를 제어하기 위한 방법.
  4. 제 1 항에 있어서,
    상기 실행에 의해 생성된 하나 또는 그 초과의 결과들을 저장하는 단계를 더 포함하는, 저장 디바이스의 제조 테스트를 제어하기 위한 방법.
  5. 제 1 항에 있어서,
    상기 표시자는 상기 호스트로부터이고 상기 저장 인터페이스를 통하는, 저장 디바이스의 제조 테스트를 제어하기 위한 방법.
  6. 제 1 항에 있어서,
    상기 저장 공간은 다르게는 셀프-모니터링 분석 및 리포팅 기술(SMART) 로그에 전용되는, 저장 디바이스의 제조 테스트를 제어하기 위한 방법.
  7. 제 6 항에 있어서,
    상기 SMART 로그는 제 1 SMART 로그이고, 상기 방법은 상기 실행의 하나 또는 그 초과의 결과들을 제 2 SMART 로그에 저장하는 단계를 더 포함하는, 저장 디바이스의 제조 테스트를 제어하기 위한 방법.
  8. 제 1 항에 있어서,
    상기 이벤트는 다음의 파워-온 이벤트 및 즉시 시작 이벤트를 포함하는 복수의 이벤트들 중 하나인, 저장 디바이스의 제조 테스트를 제어하기 위한 방법.
  9. 제 1 항에 있어서,
    상기 저장 디바이스는 저장 매체를 포함하고, 상기 커맨드들은 일련의 하나 또는 그 초과의 타입들의 동작들을 포함하며, 상기 동작들 중 임의의 하나 또는 그 초과의 동작은 상기 저장 매체의 기록, 소거, 및 검증 중 임의의 하나 또는 그 초과를 특정하는 것을 포함하는, 저장 디바이스의 제조 테스트를 제어하기 위한 방법.
  10. 저장 디바이스로서,
    제 1 및 제 2 부분들을 갖는 로그 저장 공간;
    펌웨어;
    상기 펌웨어의 명령들을 실행하도록 인에이블된 프로세싱 엘리먼트; 및
    저장 인터페이스에 커플링된 호스트로부터, 상기 제 1 부분에 저장된 하나 또는 그 초과의 커맨드들의 실행을 시작하는 표시자를 수신하도록 인에이블된 저장 인터페이스를 포함하고,
    상기 프로세싱 엘리먼트에 의한 상기 펌웨어의 하나 또는 그 초과의 루틴들의 실행은,
    상기 표시자의 수신에 응답하여 상기 커맨드들을 실행하는 것; 및
    상기 제 2 부분에 상기 실행의 모든 또는 임의의 부분들에 의해 생성된 하나 또는 그 초과의 결과들을 저장하는 것을 가능하게 하는, 저장 디바이스.
  11. 제 10 항에 있어서,
    상기 저장 디바이스는 저장 디바이스 제어기 및 저장 매체를 포함하고;
    상기 저장 디바이스는 레퍼런스 설계 및 후보 저장 매체 디바이스들의 리스트에 따라 구성되고;
    상기 저장 매체는 상기 리스트로부터 선택된 엘리먼트들로 이루어지고;
    상기 펌웨어와 함께 상기 저장 디바이스 제어기는 상기 레퍼런스 설계 및 상기 리스트 중의 임의의 멤버들을 통해 상기 저장 디바이스를 구현하도록 인에이블되고;
    상기 펌웨어와 함께 상기 저장 디바이스 제어기는 상기 실행을 수행하도록 인에이블되며,
    상기 실행은 상기 저장 디바이스의 제조 셀프 테스트를 수행하는, 저장 디바이스.
  12. 제 10 항에 있어서,
    상기 펌웨어, 상기 프로세싱 엘리먼트, 상기 저장 인터페이스, 및 상기 로그 저장 공간은 고체-상태 디스크(SSD)로 이루어지고, 상기 저장 인터페이스는 직렬 어드밴스드 기술 부착(SATA) 인터페이스를 포함하는, 저장 디바이스.
  13. 제 10 항에 있어서,
    상기 로그 저장 공간은 제 1 및 제 2 셀프-모니터링 분석 및 리포팅 기술(SMART) 로그들을 포함하고, 상기 제 1 SMART 로그는 상기 제 1 부분을 포함하며, 상기 제 2 SMART 로그는 상기 제 2 부분을 포함하는, 저장 디바이스.
  14. 제 10 항에 있어서,
    상기 커맨드들은 기록 저장 커맨드, 소거 저장 커맨드, 저장 인터페이스 번-인(burn-in) 커맨드, 지연 커맨드, 스트레스 모드 커맨드, 루프 커맨드, 및 조건 커맨드 중 임의의 하나 또는 그 초과를 포함하는, 저장 디바이스.
  15. 제 10 항에 있어서,
    저장 매체를 더 포함하고, 상기 커맨드들은 일련의 하나 또는 그 초과의 타입들의 동작들을 포함하며, 상기 동작들 중 임의의 하나 또는 그 초과는 상기 저장 매체의 기록, 소거, 및 검증 중 임의의 하나 또는 그 초과를 특정하는 것을 포함하는, 저장 디바이스.
KR1020147020434A 2011-11-14 2012-11-12 저장 디바이스 펌웨어 및 제조 소프트웨어 KR101495519B1 (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 2012-03-30
US13/436,639 US10803970B2 (en) 2011-11-14 2012-03-30 Solid-state disk manufacturing self test
PCT/US2012/064682 WO2013074455A1 (en) 2011-11-14 2012-11-12 Storage device firmware and manufacturing software

Related Parent Applications (1)

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

Publications (2)

Publication Number Publication Date
KR20140097613A KR20140097613A (ko) 2014-08-06
KR101495519B1 true KR101495519B1 (ko) 2015-03-05

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 After (1)

Application Number Title Priority Date Filing Date
KR1020137029152A KR101469596B1 (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)

Families Citing this family (114)

* 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
JP5740296B2 (ja) 2011-12-16 2015-06-24 株式会社東芝 半導体記憶装置、半導体記憶装置の制御方法、制御プログラム
JP5112566B1 (ja) 2011-12-16 2013-01-09 株式会社東芝 半導体記憶装置、不揮発性半導体メモリの検査方法、及びプログラム
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
US20170003717A1 (en) * 2014-03-20 2017-01-05 Intel Corporation Memory card connector for electronic devices
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 瑞昱半導體股份有限公司 固態硬碟控制電路及相關的固態硬碟裝置與固態硬碟存取系統
US9244764B2 (en) 2014-05-08 2016-01-26 Sandisk Technologies Inc. Error correcting code techniques for a memory having a three-dimensional memory configuration
US9257186B2 (en) 2014-05-08 2016-02-09 Sandisk Technologies Inc. Memory access 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 阿里巴巴集团控股有限公司 一种对虚拟主机的资源管理的方法、装置、系统及电子设备
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
KR102384347B1 (ko) 2015-05-26 2022-04-07 삼성전자주식회사 클록 관리 유닛을 포함하는 시스템 온 칩 및 그 동작방법
US11042328B2 (en) 2015-06-01 2021-06-22 Samsung Electronics Co., Ltd. Storage apparatus and method for autonomous space compaction
US10216418B2 (en) 2015-06-01 2019-02-26 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
TWI631463B (zh) 2016-03-22 2018-08-01 威盛電子股份有限公司 非揮發性記憶體裝置及其操作方法
TWI599880B (zh) 2016-03-22 2017-09-21 威盛電子股份有限公司 非揮發性記憶體裝置及其操作方法
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 慧榮科技股份有限公司 資料儲存裝置以及其操作方法
US10310745B2 (en) 2017-05-19 2019-06-04 Samsung Electronics Co., Ltd. Method and apparatus for fine tuning and optimizing NVMe-oF SSDs
CN107241220A (zh) * 2017-05-26 2017-10-10 京信通信系统(中国)有限公司 产品老化监控自动分析方法和系统
CN108932106B (zh) * 2017-05-26 2021-07-02 上海宝存信息科技有限公司 固态硬盘访问方法以及使用该方法的装置
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 慧榮科技股份有限公司 儲存裝置以及其介面晶片
US10572427B2 (en) * 2017-11-13 2020-02-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
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
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
US8577041B2 (en) * 2005-02-07 2013-11-05 Arris Enterprises, 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
EP2715510B1 (en) 2011-05-24 2018-05-02 Marvell World Trade Ltd. Method for storage devices to achieve low write amplification with low over provision
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

Also Published As

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

Similar Documents

Publication Publication Date Title
KR101495519B1 (ko) 저장 디바이스 펌웨어 및 제조 소프트웨어
US20160293274A1 (en) Storage Device Firmware and Manufacturing Software
JP6336767B2 (ja) リテンションドリフト履歴ベースの不揮発性メモリ読出し閾値最適化
US9467288B2 (en) Encryption key destruction for secure data erasure
KR101466560B1 (ko) 호스트가 볼 때 디바이스 펌웨어 업데이트 효과들의 관리
US9329948B2 (en) Measuring cell damage for wear leveling in a non-volatile memory
KR102155191B1 (ko) 비휘발성 메모리에 대한 기록들의 관리 및 그 기록들의 영역 선택
KR101798036B1 (ko) I/o 디바이스 및 컴퓨팅 호스팅 상호동작
CN103797492A (zh) 用于安全存储劫持保护的技术
Liu et al. Research and Implementation of SSD Lifespan Protection Mechanism

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180122

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190124

Year of fee payment: 5