KR20130004174A - 호스트로부터의 메모리 장치의 부팅 - Google Patents

호스트로부터의 메모리 장치의 부팅 Download PDF

Info

Publication number
KR20130004174A
KR20130004174A KR1020120071704A KR20120071704A KR20130004174A KR 20130004174 A KR20130004174 A KR 20130004174A KR 1020120071704 A KR1020120071704 A KR 1020120071704A KR 20120071704 A KR20120071704 A KR 20120071704A KR 20130004174 A KR20130004174 A KR 20130004174A
Authority
KR
South Korea
Prior art keywords
memory
memory device
firmware
host
host device
Prior art date
Application number
KR1020120071704A
Other languages
English (en)
Other versions
KR101385872B1 (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 KR20130004174A publication Critical patent/KR20130004174A/ko
Application granted granted Critical
Publication of KR101385872B1 publication Critical patent/KR101385872B1/ko

Links

Images

Classifications

    • 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/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F9/4401Bootstrapping
    • G06F9/4416Network booting; Remote initial program loading [RIPL]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Memory System (AREA)

Abstract

일 구현에서, 방법은 메모리 장치에서 메모리 장치를 부팅하기 위한 명령어를 수신하는 단계 - 메모리 장치는 메모리 장치의 제어기에 의해 액세스 가능한 비휘발성 메모리를 포함함 -; 및 메모리 장치를 부팅하기 위한 명령어의 수신에 응답하여, 메모리 장치에 의해, 호스트 장치로부터 펌웨어를 획득하는 단계를 포함하며, 호스트 장치는 메모리 장치로부터 분리되고, 그와 통신 결합된다. 이 방법은 호스트 장치로부터의 펌웨어를 이용하여 메모리 장치를 부팅하는 단계를 더 포함할 수 있고, 메모리 장치는 호스트 장치와 별개로 부팅하며, 호스트 장치는 비휘발성 메모리에 저장되고 메모리 장치의 메모리 제어기와의 통신을 통해 획득된 데이터 또는 명령어들을 이용하여 동작들을 수행한다.

Description

호스트로부터의 메모리 장치의 부팅{BOOTING A MEMORY DEVICE FROM A HOST}
본 발명은 호스트로부터의, 플래시 메모리를 갖는 장치와 같은 메모리 장치의 부팅에 관한 것이다.
플래시 메모리(예를 들어, NAND 플래시 메모리, NOR 플래시 메모리)와 같은 다양한 타입의 비휘발성 메모리(NVM)가 대용량 저장을 위해 사용될 수 있다. 예를 들어, 소비자 전자 장치들(예로서, 휴대용 미디어 플레이어들)은 플래시 메모리를 이용하여 음악, 비디오, 이미지 및 다른 미디어 또는 타입의 정보를 포함하는 데이터를 저장한다.
메모리 장치들은 장치들 상에 국지적으로 저장된 정보로부터 부팅하도록 구성되어 왔다. 예를 들어, (하나 이상의 프로세서들/마이크로프로세서들을 갖는) 메모리 제어기를 포함하는 메모리 장치는 메모리 장치의 NVM에 저장된 펌웨어를 이용하여 부팅할 수 있다. 다른 예에서, "로우(raw)" 메모리 장치(메모리 제어기를 포함하지 않는 메모리 장치)는 메모리 장치의 NVM에 저장된 트림(trim) 값들을 이용하여 부팅할 수 있다. 트림 값들은 로우 메모리 장치의 레지스터들 내에 로딩될 수 있으며, 로우 메모리 장치 상의 회로에 의해 타이밍, 펄스 카운트 및/또는 인가 전압 레벨과 같은 로우 메모리 장치의 다양한 동작을 제어하는 데 사용될 수 있다.
본 발명은 일반적으로 호스트 장치로부터의 메모리 장치들의 부팅과 관련된 기술들을 설명한다. 호스트 장치는 하나 이상의 메모리 장치들에 대한 부트 정보(예로서, 펌웨어, 트림 값들)를 저장할 수 있으며, 그러한 부트 정보를 호스트 장치와 메모리 장치들 사이의 하나 이상의 통신 채널들(예로서, 버스)을 통해 메모리 장치들에 제공할 수 있다. 부트 정보는 메모리 장치를 부팅하기 위한 지시에 응답하여 또는 그와 함께 호스트 장치에 의해 메모리 장치에 제공될 수 있다. 예컨대, 호스트 장치는 부트 명령을 메모리 장치에 제공할 수 있으며, 이어서 메모리 장치가 부트 정보를 수신할 준비가 되었음을 지시하는 메모리 장치로부터의 신호에 응답하여 부트 정보를 메모리 장치에 제공할 수 있다. 다른 예에서, 파워 오프된 메모리 장치는 메모리 장치에 파워 온 및 부팅을 촉구하는 신호를 수신할 수 있다. 그러한 지시에 응답하여, 메모리 장치는 호스트 장치로부터 부트 정보를 요청 및 수신할 수 있다.
일 구현에서, 방법은 메모리 장치에서 메모리 장치를 부팅하기 위한 명령어를 수신하는 단계 - 메모리 장치는 메모리 장치의 제어기에 의해 액세스 가능한 비휘발성 메모리를 포함함 -; 및 메모리 장치를 부팅하기 위한 명령어의 수신에 응답하여, 메모리 장치에 의해, 호스트 장치로부터 펌웨어를 획득하는 단계를 포함하며, 호스트 장치는 메모리 장치로부터 분리되고, 그와 통신 결합된다. 이 방법은 호스트 장치로부터의 펌웨어를 이용하여 메모리 장치를 부팅하는 단계를 더 포함하고, 메모리 장치는 호스트 장치와 별개로 부팅하며, 호스트 장치는 비휘발성 메모리에 저장되고 메모리 장치의 메모리 제어기와의 통신을 통해 획득된 데이터 또는 명령어들을 이용하여 동작들을 수행한다.
다른 구현에서, 방법은 호스트 장치에 의해, 메모리 장치에 호스트 장치로부터의 펌웨어를 이용하여 부팅할 것을 명령하는 부트 명령을 메모리 장치에 제공하는 단계를 포함하며, 호스트 장치는 메모리 장치로부터 분리되고, 그와 통신 결합되며, 메모리 장치는 비휘발성 메모리를 포함한다. 이 방법은 호스트 장치에서, 메모리 장치가 호스트 장치로부터 펌웨어를 수신할 준비가 되었다는 지시를 수신하는 단계; 및 지시의 수신에 응답하여, 호스트 장치에 의해, 펌웨어를 메모리 장치로 전송하는 단계를 더 포함하며, 메모리 장치로의 펌웨어의 전송은 메모리 장치로 하여금 펌웨어를 이용하여 부팅하게 하며, 메모리 장치는 호스트 장치와 별개로 부팅한다.
또 다른 구현에서, 메모리 장치는 비휘발성 메모리, 메모리 장치를 호스트 장치에 통신 결합하도록 되어있는 호스트 인터페이스, 및 비휘발성 메모리 상에서 메모리 동작들을 수행하도록 구성되고, 호스트 인터페이스를 통해 호스트 장치와 통신하도록 되어있는 메모리 제어기를 포함한다. 메모리 제어기는 호스트 인터페이스를 통해 호스트 장치로부터 메모리 장치를 부팅하기 위한 명령어를 수신하고; 명령어의 수신에 응답하여, 호스트 장치로부터 펌웨어를 획득하고; 호스트 장치로부터의 펌웨어를 이용하여 메모리 장치를 부팅하도록 더 구성될 수 있으며, 메모리 장치는 호스트 장치와 별개로 부팅하고, 호스트 장치는 비휘발성 메모리에 저장되고 호스트 인터페이스를 통한 메모리 장치의 메모리 제어기와의 통신을 통해 획득된 데이터 또는 명령어들을 이용하여 동작들을 수행한다.
또 다른 구현에서, 시스템은 비휘발성 메모리, 및 비휘발성 메모리 상에서 메모리 동작들을 수행하고, 호스트 인터페이스를 통해 호스트 장치와 통신하도록 구성되는 메모리 제어기를 포함한다. 메모리 제어기는 호스트 인터페이스를 통해 호스트 장치로부터 메모리 장치를 부팅하기 위한 명령어를 수신하고; 명령어의 수신에 응답하여, 호스트 장치로부터 펌웨어를 획득하고; 호스트 장치로부터의 펌웨어를 이용하여 메모리 장치를 부팅하도록 더 구성될 수 있으며, 메모리 장치는 호스트 장치와 별개로 부팅하고, 호스트 장치는 비휘발성 메모리에 저장되고 호스트 인터페이스를 통한 메모리 장치의 메모리 제어기와의 통신을 통해 획득된 데이터 또는 명령어들을 이용하여 동작들을 수행한다.
본 명세서에 설명되는 본 발명의 특정 실시예들은 아래의 이익들 중 하나 이상을 실현하도록 구현될 수 있다. 메모리 장치의 NVM에 대한 웨어(wear)가 감소할 수 있다. 예컨대, 메모리 장치는 전력 소비를 줄이기 위해 높은 빈도로 토글 온 및 오프할 수 있으며(예로서, 사용되지 않을 때 토글 오프), 이는 메모리 장치에 대한 부트 정보를 저장하는 NVM의 부분들이 장치를 부팅하기 위해 장치가 파워 온될 때마다 액세스될 수 있게 한다. 그러한 빈번한 액세스는 NVM을 웨어링(wear)시킬 수 있으며, NVM의 수명을 줄일 수 있다. 메모리 장치의 NVM으로부터가 아니라 호스트 장치로부터 부트 정보를 획득함으로써, 메모리 장치의 NVM에 대한 웨어가 감소할 수 있으며, 메모리 장치의 NVM의 수명이 연장될 수 있다.
메모리 장치의 부팅 속도가 증가할 수 있으며, 이는 메모리 장치에 저장된 데이터의 액세스의 지연을 최소화할 수 있다. 예를 들어, 메모리 장치에 대한 부트 정보는 호스트 장치의 NVM에 저장될 수 있으며, 호스트 장치가 (예를 들어, 그 자신의 부팅 정보를 이용하여) 부팅할 때 호스트 장치의 휘발성 메모리(예로서, 랜덤 액세스 메모리(RAM)) 내에 로딩될 수 있다. 메모리 장치들이 토글 온 및 오프되는 동안, 호스트 장치는 그의 휘발성 메모리 내에 부트 정보를 유지할 수 있으며, 그의 휘발성 메모리로부터 메모리 장치들에 부트 정보를 제공할 수 있다. 이러한 호스트 장치의 휘발성 메모리로부터 메모리 장치로의 부트 정보의 전송은 메모리 장치가 메모리 장치에 속하는 NVM으로부터 부트 정보를 판독하는 것보다 빠를 수 있다.
메모리 장치의 이용 가능 저장 용량이 증가할 수 있고, 호스트 장치 및 다수의 메모리 장치를 포함하는 시스템의 전체 저장 용량이 증가할 수 있다. 예를 들어, 메모리 장치의 NVM으로부터 호스트 장치로 부트 정보를 이동시킴으로써, 부트 정보를 저장하였을 메모리 장치의 NVM 상의 저장 공간이 다른 정보(예로서, 데이터)를 저장하는 데 사용될 수 있다. 다른 예에서는, 다수의 메모리 장치 각각이 부트 정보의 국지적 사본을 저장하는 것이 아니라, 호스트 장치가 다수의 메모리 장치에 공통인 부트 정보의 단일 사본을 저장할 수 있다. 다수의 메모리 장치에 걸친 부트 정보의 중복 저장을 피함으로써 다수의 메모리 장치를 갖는 시스템의 전체 저장 용량이 증가할 수 있다.
호스트 장치에 의해 메모리 장치에 제공되는 부트 정보를 갱신/변경함으로써 메모리 장치의 동작 방식의 갱신들 및 변경들이 쉽게 이루어질 수 있다. 예를 들어, 메모리 장치에서 에러가 발견되는 경우, 호스트 장치는 메모리 장치로 하여금 에러가 발견된 때 사용된 현용 펌웨어(operational firmware)를 이용하는 것이 아니라 (호스트에 의해 메모리 장치에 제공되는) 디버그 펌웨어를 이용하여 재부팅하게 할 수 있다. 디버그 펌웨어는 메모리 장치로 하여금 다양한 디버그 동작들을 수행하고(예를 들어, 에러 로그를 생성하고, 에러의 소스를 식별하고), 획득된 디버그 정보를 호스트 장치에 제공하게 할 수 있다. 호스트 장치는 다양한 타입의 펌웨어(예로서, 현용 펌웨어, 디버그 펌웨어, 제조 펌웨어)를 저장할 수 있으며, 메모리 장치의 상태(예로서, 에러 발견, 새로운 하드웨어의 최근 설치, 정상 동작)에 따라 메모리 장치에 어느 펌웨어를 제공할지를 변경할 수 있다.
하나 이상의 실시예들의 상세들이 첨부 도면들 및 아래의 설명에서 제공된다. 본 발명의 다른 특징들, 목적들 및 장점들은 설명 및 도면들로부터 그리고 청구항들로부터 명백할 것이다.
도 1a는 메모리 제어기를 포함하는 NVM 패키지에 펌웨어 형태의 부트 정보를 제공하도록 구성되는 호스트 장치를 포함하는 예시적인 시스템을 나타내는 도면이다.
도 1b는 메모리 제어기를 포함하지 않는 NVM 패키지에 펌웨어 형태의 부트 정보를 제공하도록 구성되는 호스트 장치를 포함하는 예시적인 시스템을 나타내는 도면이다.
도 2는 다양한 NVM 패키지들에 부트 정보를 제공하도록 구성되는 호스트 제어기를 갖는 메모리 장치를 포함하는 예시적인 시스템을 나타내는 도면이다.
도 3은 호스트로부터 메모리 장치를 부팅하기 위한 예시적인 프로세스를 나타내는 흐름도이다.
도 4는 호스트로부터 메모리 장치를 부팅하기 위한 예시적인 프로세스를 나타내는 흐름도이다.
다양한 도면들에서 동일한 참조 부호들은 동일한 요소들을 나타낸다.
호스트 장치는 부트 정보(예로서, 펌웨어 또는 트림 값들)를 저장할 수 있으며, 통신 채널(예로서, 버스)을 통해 호스트 장치에 접속된 하나 이상의 메모리 장치들에 부트 정보를 제공할 수 있다. 메모리 장치 부트 정보는 메모리 장치들의 파워 온 및/또는 호스트 장치로부터의 부트 명령의 수신에 응답하여 생성될 수 있는, 메모리 장치들을 부팅하기 위한 명령어들 또는 요청들과 함께 또는 그에 응답하여 메모리 장치들에 제공될 수 있다. 호스트 장치는 (예를 들어, 호스트 장치가 부팅할 때 NVM으로부터 휘발성 메모리 내로 부트 정보를 로딩함으로써) 메모리 장치들의 동작 동안 휘발성 메모리 내에 메모리 장치들에 대한 부트 정보를 유지할 수 있으며, 휘발성 메모리로부터 메모리 장치들에 부트 정보를 제공할 수 있다. 부트 정보는 로우 메모리 장치들(예로서, 메모리 제어기를 갖지 않은 메모리 장치들) 및/또는 메모리 제어기를 포함하는 메모리 장치들에 제공될 수 있다. 호스트 장치는 (예로서, 판독, 기입 및 소거 동작들을 수행하는 데 사용되는) 현용 부트 정보, (예로서, 디버그 동작들을 수행하는 데 사용되는) 디버그 부트 정보 및/또는 (예로서, 메모리 장치의 컴포넌트들의 설치 및 동작을 테스트하는 데 사용되는) 제조 부트 정보를 포함하는 다양한 타입의 부트 정보를 저장하고, 메모리 장치들에 제공할 수 있다.
도 1a는 메모리 제어기를 포함하는 NVM 패키지(104)에 펌웨어 형태의 부트 정보를 제공하도록 구성되는 호스트 장치(102)를 포함하는 예시적인 시스템(100)을 나타내는 도면이다. 예를 들어, 예시적인 시스템(100)에 나타난 바와 같이, 호스트 장치(102)는 NVM 패키지(104)에 대한 펌웨어(106)를 제공할 수 있다. NVM 패키지(104)는 펌웨어(106)의 수신 전에, 그의 수신 동안에 그리고/또는 그의 수신에 응답하여 상태 메시지(108)를 호스트 장치(102)로 전송할 수 있다. 예컨대, NVM 패키지(104)는 상태 메시지(108)로 그가 부팅하고 있음을 지시할 수 있으며, 그에 응답하여 펌웨어(106)를 수신할 수 있다. 다른 예에서, NVM 패키지(104)는 호스트 장치(102)로부터 부트 명령을 수신한 후에 그가 펌웨어(106)를 수신할 준비가 되었다는 것을 지시할 수 있다. 추가 예에서, NVM 패키지(104)는 펌웨어(106)의 다양한 부분들이 수신되었다는 것을 상태 메시지(108)를 통해 지시할 수 있다.
호스트 장치(102)는 휴대용 미디어 플레이어, 셀룰러 전화, 포켓 사이즈의 개인용 컴퓨터, 개인용 휴대 단말기(PDA), 데스크탑 컴퓨터, 랩탑 컴퓨터 및/또는 태블릿 컴퓨팅 장치와 같은 임의의 다양한 호스트 장치 및/또는 시스템일 수 있다. NVM 패키지(104)는 NVM을 포함하며, 볼 그리드 어레이 패키지 또는 다른 적절한 타입의 집적 회로(IC) 패키지일 수 있다. NVM 패키지(104)는 호스트 장치(102)와의 접속(110)(예로서, 버스)을 통해 호스트 장치(102)로부터 펌웨어를 제공/획득할 수 있다. NVM 패키지(104)는 호스트 장치(102)의 일부이고 그리고/또는 그로부터 분리될 수 있다.
호스트 장치(102)는 NVM 패키지(104)로부터 디버그 정보를 얻기 위해 NVM 패키지(104)와 상호작용하도록 구성되는 호스트 제어기(112)를 포함할 수 있다. 호스트 제어기(112)는 소프트웨어 및/또는 펌웨어 명령어들의 실행에 기초하여 동작들을 수행하도록 구성되는 하나 이상의 프로세서들 및/또는 마이크로프로세서들을 포함할 수 있다. 추가로 그리고/또는 대안으로서, 호스트 제어기(112)는 다양한 동작들을 수행하도록 구성되는 주문형 집적 회로들(ASIC)과 같은 하드웨어 기반 컴포넌트들을 포함할 수 있다. 호스트 제어기(112)에 의해 수행되는 동작들은 NVM 패키지(104)의 파워 온 및 오프 시기, NVM 패키지(104)의 부팅 시기 및 NVM 패키지(104)에 제공할 펌웨어의 타입을 결정하는 동작 및 펌웨어(106)를 NVM 패키지(104)에 제공하는 동작을 포함할 수 있다. 예컨대, 호스트 제어기(112)는 부트 명령을 NVM 패키지(104)에 제공할 수 있으며, NVM 패키지(104)가 펌웨어(106)를 수신할 준비가 되었다는 것을 지시하는 상태 메시지(108)에 응답하여, 펌웨어(106)를 NVM 패키지(104)에 제공할 수 있다. 호스트 제어기(112)는 호스트 장치(102)와 NVM 패키지(104) 사이에 사용되는 통신 프로토콜에 따라 NVM 패키지(104)로 전송되는 정보(예로서, 명령들, 펌웨어(106))를 포맷팅할 수 있다.
NVM 패키지(104)는 NVM 패키지(104)에 (즉, 펌웨어(106)로서) 제공될 수 있는 다양한 타입의 펌웨어(116-120)를 저장하는 메모리(114)(휘발성 메모리 및/또는 NVM)를 포함한다. 예를 들어, 호스트 장치(102)는 호스트 장치(102)가 부팅할 때 호스트 장치(102)의 NVM으로부터 휘발성 메모리로 펌웨어(116-120)를 로딩할 수 있다. 호스트 장치(102)는 호스트 장치(102) 및 NVM 패키지(104)의 동작 동안 펌웨어(116-120)를 휘발성 메모리 내에 유지할 수 있다. 호스트 장치(102)는 휘발성 메모리로부터 NVM 패키지(104)로 펌웨어(116-120)를 제공할 수 있다. 다른 구현들에서, 펌웨어(116-120)는 호스트 장치(102)의 NVM에 저장될 수 있으며, NVM 패키지(104)의 부팅을 위해 필요할 때 호스트 장치(102)의 NVM으로부터 판독될 수 있다. 펌웨어(116-120)는 부트 동작들(예를 들어, 메모리 다이들을 초기화하고, NVM 패키지(104)를 동작시키기 위한 명령어들을 휘발성 메모리 내에 로딩하는 동작들) 및/또는 포스트-부트 동작들(예로서, 판독/기입/소거 동작들, 디버그 동작들)을 수행하도록 NVM 패키지(104)에 의해 실행될 수 있다.
예를 들어, 호스트 장치(102)에 의해 NVM 패키지(104)로 전송되는 펌웨어(106)는 실행시에 NVM 패키지(104)를 동작시키기 위한 명령어들이 NVM 패키지(104)에 의한 실행을 위해 휘발성 메모리 내에 로딩되게 하는 명령어들을 갖는 부트 로더를 포함할 수 있다. 다른 예에서, 호스트 장치(102)에 의해 NVM 패키지(104)로 전송되는 펌웨어(106)는 NVM 패키지(104)를 동작시키기 위한 명령어들을 포함할 수 있으며, NVM 패키지(104)의 부팅 프로세스의 일부로서 (예로서, 부트 로더 동작에 의해) 휘발성 메모리 내에 로딩될 수 있다.
도 1a는 예시적인 펌웨어(116-120)를 현용 펌웨어(116), 디버그 펌웨어(118) 및 제조 펌웨어(120)를 포함하는 것으로 도시하고 있다. 현용 펌웨어(116)는 NVM 패키지(104)로 하여금 호스트 장치(102)에 의해 요청되는 바와 같은 판독, 기입 및 소거 동작들을 수행하는 것과 같이 "정상" 메모리 동작들을 수행하게 한다. 현용 펌웨어(116)는 또한 NVM 패키지(104)로 하여금 웨어 레벨링(wear leveling) 또는 에러 정정과 같은 메모리 관리 동작들을 수행하게 할 수 있다. 디버그 펌웨어(118)는 NVM 패키지로 하여금 데이터 에러들의 소스의 추적 및 에러 로그들의 생성과 같은 디버그 동작들을 수행하게 한다. 제조 펌웨어(120)는 메모리 다이들, I/O 신호들 및 센서들(예로서, 온도 센서들)과 같은 NVM 패키지(104)의 다양한 컴포넌트들의 설치 및 동작을 테스트한다. 다른 타입의 펌웨어도 가능하다. 예를 들어, 동일 펌웨어의 상이한 버전들(예로서, 펌웨어 버전 1.1 및 펌웨어 버전 1.2)이 호스트 장치(102)에 의해 저장될 수 있고, NVM 패키지(104)에 제공될 수 있다.
호스트 장치(102)는 접속(110)을 통해 NVM 패키지(104)와 통신할 수 있다. 호스트 장치(102)와 NVM 패키지(104) 간의 접속(110)은 고정(예로서, 고정된 통신 채널) 및/또는 분리(예로서, 유니버설 직렬 버스(USB) 포트)될 수 있다. NVM 패키지(104)와의 상호작용들은 명령들(예로서, 부트 명령들, 판독 명령들, 기입 명령들)의 제공 및 부트 정보, 예로서 펌웨어(106)의 NVM 패키지(104)로의 전송을 포함할 수 있다.
NVM 패키지(104)는 호스트 인터페이스(122) 및 메모리 제어기(124)를 이용하여 접속(110)을 통해 호스트 장치(102)와 상호작용할 수 있다. 호스트 제어기(112)와 마찬가지로, 메모리 제어기(124)는 소프트웨어 및/또는 펌웨어 명령어들의 실행에 기초하여 동작들을 수행하도록 구성되는 하나 이상의 프로세서들 및/또는 마이크로프로세서들(126)을 포함할 수 있다. 추가로 그리고/또는 대안으로서, 메모리 제어기(124)는 다양한 동작들을 수행하도록 구성되는 ASIC들과 같은 하드웨어 기반 컴포넌트들을 포함할 수 있다. 메모리 제어기(124)는 호스트 장치(102)로부터의 펌웨어(106)를 이용하여 NVM 패키지(104)를 부팅시키는 것과 같은 다양한 동작들을 수행할 수 있다.
에러 정정 및 웨어 레벨링과 같은 다양한 메모리 관리 기능들이 호스트 제어기(112) 및 메모리 제어기(124)에 의해 단독으로 또는 함께 수행될 수 있다. 메모리 제어기(124)가 적어도 일부 메모리 관리 기능들을 수행하도록 구성되는 구현들에서, NVM 패키지(104)는 "관리 NVM"(또는 NAND 플래시 메모리에 대한 "관리 NAND")으로 지칭될 수 있다. 이것은 NVM 패키지(104) 외부의 호스트 제어기(112)가 NVM 패키지(104)에 대한 메모리 관리 기능들을 수행하는 "로우 NVM"(또는 NAND 플래시 메모리에 대한 "로우 NAND")과 대비될 수 있다.
메모리 제어기(124)는 휘발성 메모리(128) 및 NVM(132)을 포함한다. 휘발성 메모리(128)는 캐시 메모리 및/또는 RAM을 포함하는 임의의 다양한 휘발성 메모리 타입일 수 있다. 휘발성 메모리(128)는 메모리 동작들을 수행하기 위해 그리고/또는 NVM으로부터 판독되고 그리고/또는 그에 기입되는 데이터를 일시적으로 저장하기 위해 메모리 제어기(124)에 의해 사용될 수 있다. 예를 들어, 휘발성 메모리(128)는 호스트 장치(102)에 대한 접속(110)을 통해 수신되는 펌웨어(106)와 같은 펌웨어(130)를 저장할 수 있고, 펌웨어(130)를 사용하여 NVM 패키지(104) 상에서 동작들(예로서, 판독/기입 동작들, 디버그 동작들)을 수행할 수 있다.
NVM(132)은 시스템 정보(예로서, 디버그 로그들)를 영구 저장하기 위해 그리고/또는 휘발성 메모리(128)에 적합하지 않을 수 있는 펌웨어와 같은 정보를 일시 저장하기 위해 메모리 제어기(124)에 의해 사용될 수 있는 시스템 메모리이다. NVM(132)은 기입, 판독 및/또는 소거가 제한될 수 있으며, 따라서 적절한 특권을 가진 특정 시스템 동작들만이 NVM(132)에 액세스할 수 있다. 예를 들어, NVM(132)은 특정 물리 어드레스에 저장된 명령어들을 포함할 수 있으며, 이 명령어들은 휘발성 메모리(128) 내에 로딩되고, 메모리 제어기(124)에 의해 수신되는 부트 신호(예로서, 이전의 급전되지 않은 상태로부터 전력을 수신하는 호스트 장치(102)로부터의 부트 명령)에 응답하여 프로세서/마이크로프로세서(126)에 의해 실행된다. 이와 달리, NVM(132)에 대한 액세스는 호스트 장치(102)로부터 수신되는 기입 명령의 일부로서 수행되는 동작들과 관련하여 허가되지 않을 수 있다. 다른 예에서, 호스트 장치(102)로부터 수신되는 펌웨어(106)의 일부 부분들은 NVM(132)에 저장되고, 필요에 따라 휘발성 메모리(128) 내에 로딩될 수 있다. NVM(132)은 임의의 다양한 NVM(예로서, NAND 플래시 메모리, NOR 플래시 메모리)일 수 있다. 일부 구현들에서, NVM(132)은 또한 NVM 패키지(104)에 대한 펌웨어를 국지적으로 그리고 영구적으로 저장한다. 그러한 구현들에서, NVM 패키지(104)는 국지적으로 저장된 펌웨어를 디폴트로 사용할 수 있으며, 호스트 장치(102)는 NVM(104)에 "호스트로부터 부트" 명령을 제공함으로써 이 디폴트 설정을 무시할 수 있다.
메모리 제어기(124)는 공유 내부 버스(134)를 이용하여, 영구 데이터 저장에 사용되는 NVM에 액세스할 수 있다. 예시적인 시스템(100)에서, 그러한 NVM은 NVM들(138a-n)을 포함하는 다수의 메모리 다이(136a-n)를 포함하는 것으로 도시되어 있다. 메모리 다이들은 집적 회로(IC) 다이들과 같은 다양한 메모리 다이들일 수 있다. NVM 패키지(104)와 관련하여 단일 공유 버스(134)만이 도시되지만, NVM 패키지는 둘 이상의 공유 내부 버스를 포함할 수 있다. 각각의 내부 버스는 다수의 메모리 다이(136a-n)와 관련하여 도시된 바와 같이 다수의 메모리 다이(예로서, 2, 3, 4, 8, 32개 등)에 접속될 수 있다. 메모리 다이들(136a-n)은 스택형과 같은(such as being stacked) 물리적으로 다양한 구성으로 배열될 수 있다. NVM(138a-n)은 플로팅 게이트 또는 전하 트랩핑 기술에 기초하는 NAND 플래시 메모리, NOR 플래시 메모리, 소거 및 프로그래밍 가능한 판독 전용 메모리(EPROM), 전기적으로 소거 및 프로그래밍 가능한 판독 전용 메모리(EEPROM), 강유전체 RAM(FRAM), 자기저항 RAM(MRAM), 상변화 메모리(PCM) 또는 이들의 임의 조합과 같은 임의의 다양한 NVM일 수 있다. 메모리 제어기(124)는 NVM 패키지(104)를 부팅하기 위해 호스트 장치(102)에 의해 제공되는 펌웨어(130)를 이용하여 NVM(138a-n) 상에서 다양한 동작들(예로서, 판독/기입 동작들, 디버그 동작들, 제조 테스트 동작들)을 수행할 수 있다.
도 1b는 메모리 제어기를 포함하지 않는 NVM 패키지(154)에 펌웨어 형태의 부트 정보를 제공하도록 구성되는 호스트 장치(152)를 포함하는 예시적인 시스템(150)을 나타내는 도면이다. 예를 들어, 예시적인 시스템(150)에 도시된 바와 같이, 호스트 장치(152)는 NVM 패키지(154)에 대한 트림 값들(156)을 제공할 수 있다. NVM 패키지(154)는 트림 값들(156)의 수신 전에, 그의 수신 동안에 그리고/또는 그의 수신에 응답하여 상태 메시지(158)를 호스트 장치(152)로 전송할 수 있다. 예컨대, NVM 패키지(154)는 상태 메시지(158)로 그가 부팅하고 있다는 것을 지시할 수 있으며, 그에 응답하여 트림 값들(156)을 수신할 수 있다. 다른 예에서, NVM 패키지(154)는 호스트 장치(152)로부터 부트 명령을 수신한 후에 그가 트림 값들(156)을 수신할 준비가 되었다는 것을 지시할 수 있다. 추가 예에서, NVM 패키지(154)는 트림 값들(156)의 다양한 부분들이 수신되었다는 것을 상태 메시지(158)를 통해 지시할 수 있다.
호스트 장치(152)는 휴대용 미디어 플레이어, 셀룰러 전화기, 포켓 사이즈 퍼스널 컴퓨터, 퍼스널 디지털 어시스턴트(personal digital assistant; PDA), 데스크톱 컴퓨터, 랩톱 컴퓨터, 및/또는 태블릿 컴퓨팅 장치와 같은, 다양한 호스트 장치들 및/또는 시스템들 중 임의의 것일 수 있다. NVM 패키지(154)는 NVM을 포함하고, 볼 그리드 어레이 패키지(ball grid array package) 또는 다른 적절한 타입의 집적 회로(IC) 패키지일 수 있다. NVM 패키지(154)는 호스트 장치(152)와 접속(160)(예를 들어, 버스)을 통해 호스트 장치(152)로부터 펌웨어를 획득/제공할 수 있다. NVM 패키지(154)는 호스트 장치(152)의 부분일 수 있고 및/또는 호스트 장치(152)와 별개일 수 있다.
호스트 장치(152)는 NVM 패키지(154)로부터 디버그 정보를 획득하기 위해 NVM 패키지(154)와 상호작용하도록 구성되는 호스트 제어기(162)를 포함할 수 있다. 호스트 제어기(162)는 소프트웨어 및/또는 펌웨어 명령어들의 실행에 기초하여 동작들을 수행하도록 구성되는 하나 이상의 프로세서들 및/또는 마이크로프로세서들을 포함할 수 있다. 부가적으로 및/또는 대안적으로, 호스트 제어기(162)는 다양한 동작들을 수행하도록 구성되는 ASIC들과 같은 하드웨어 기반 컴포넌트들을 포함할 수 있다. 호스트 제어기(162)에 의해 수행되는 동작들은 NVM 패키지(154)를 파워 온 및 오프(power on and off)할 때, NVM 패키지(154)를 부팅할 때, NVM 패키지(154)에 제공할 펌웨어의 타입을 결정하고, NVM 패키지(154)에 트림 값들(trim values)(156)을 제공하는 것을 포함할 수 있다. 예를 들어, 호스트 제어기(162)는 NVM 패키지(154)에 부트 명령을 제공하고, NVM 패키지(154)가 트림 값들(156)을 수신할 준비가 되어 있음을 지시하는 상태(158)에 응답하여, NVM 패키지(154)에 트림 값들(156)을 제공할 수 있다. 호스트 제어기(162)는 호스트 장치(152)와 NVM 패키지(154) 사이에 이용되는 통신 프로토콜에 따라 NVM 패키지(154)에 전송되는 정보(예를 들어, 명령들, 트림 값들(156))를 포맷팅(format)할 수 있다.
호스트 장치(152)는 NVM 패키지(154)에 제공될 수 있는 트림 값들(166)을 저장하는 메모리(164)(예를 들어, 휘발성 메모리 및/또는 NVM)를 포함한다. 예를 들어, 호스트 장치(152)는 호스트 장치(152)가 부팅할 때 호스트 장치(152)의 NVM으로부터 휘발성 메모리로 트림 값들(166)을 로드(load)할 수 있다. 호스트 장치(152)는 호스트 장치(152)와 NVM 패키지(154)의 동작 중에 휘발성 메모리에 트림 값들(164)을 유지할 수 있다. 호스트 장치(152)는 휘발성 메모리로부터 NVM 패키지(154)에 트림 값들(166)을 제공할 수 있다. 다른 구현들에서, 트림 값들(166)은 호스트 장치(152)의 NVM에 저장되고 NVM 패키지(154)를 부팅하기 위해 필요할 때 호스트 장치(152)의 NVM으로부터 판독될 수 있다.
트림 값들(166)은 메모리 동작들(예를 들어, 판독, 기입, 소거)을 수행하고 호스트 장치(152)와 상호작용하도록 NVM 패키지(154)를 구성하는 데 이용되는 다양한 값들을 포함할 수 있다. 예를 들어, 트림 값들(166)은 메모리 동작들을 수행하고 호스트 장치(152)와 통신하기 위해 NVM 패키지(154)에 의해 이용되는 트리밍 및 전압 레벨들을 조절하는 값들을 포함할 수 있다. 예를 들어, 트림 값들(166)은 휘발성 메모리에 로드될 때, NVM을 판독 및/또는 프로그래밍하는 것과 같은 동작들을 수행하기 위해 NVM 패키지(154)의 컴포넌트들에 의해 이용되는 미리 결정된 데이터 값들일 수 있다. 예를 들어, 트림 값들(166)은 NVM 패키지(154) 내의 NVM의 데이터 샘플링을 위해 이용되는 프로그래밍 전압 레벨 및/또는 프로그래밍 펄스폭을 정의할 수 있다. 부팅 중에, 트림 값들(166)은, NVM 패키지(154)가 신뢰성 있게 NVM에 데이터를 기입하고 및/또는 판독할 수 있도록, NVM 패키지(154)의 NVM을 포함하는, NVM 패키지(154)의 다양한 컴포넌트들을 초기화하는 데 이용될 수 있다.
호스트 장치(152)는 접속(160)을 통해 NVM 패키지(154)와 통신할 수 있다. 호스트 장치(152)와 NVM 패키지(154) 사이의 접속(160)은 고정형(예를 들어, 고정 통신 채널) 및/또는 분리형(예를 들어, USB(universal serial bus) 포트)일 수 있다. NVM 패키지(154)와의 상호작용들은 명령들(예를 들어, 부트 명령들, 판독 명령들, 기입 명령들)을 제공하고, NVM 패키지(154)에 트림 값들(156)과 같은 부트 정보를 전송하는 것을 포함할 수 있다.
NVM 패키지(154)는 호스트 인터페이스(168) 및 제어 회로(170)를 이용하여 접속(160)을 통해 호스트 장치(152)와 상호작용할 수 있다. 제어 회로(170)는 적어도, 호스트 인터페이스(168)를 통해 호스트 장치(152)로부터 수신된 명령들(예를 들어, 판독, 기입)을 수행하도록 구성될 수 있다. 제어 회로(170)는 IC들 및 ASIC들과 같은 다양한 하드웨어 컴포넌트들을 통해 구현될 수 있다. 제어 회로(170)는 호스트 장치(152)로부터 수신된 명령들(예를 들어, 제어 신호들)을 실행하도록 구성되는 명령 실행 로직(172)을 포함한다. 명령 실행 로직(172)은 레지스터들(174)의 내용에 적어도 부분적으로 기초하여 명령들을 실행할 수 있다. 레지스터들(174)은 호스트 장치(152)로부터 수신된 트림 값들(176)로 로드될 수 있다. 트림 값들(156)은 또한 및/또는 대안적으로 NVM 패키지(154)의 NVM에 의해 이용될 수 있다. 예를 들어, 트림 값들(156)은 제어 회로(170)에 저장되어 로우(raw) NAND 다이들과 같은 NVM에 전송될 수 있다. 트림 값들(156)은 NVM을 위한 전압 레벨들 및 타이밍을 제어하는 것과 같이, NVM의 데이터 샘플링을 제어하는 데 이용될 수 있다.
레지스터들(174)은 (명령 실행 로직(172)의 부분으로서 및/또는 명령 실행 로직(172)과 별개인) 명령 실행 로직(172)에 의해 액세스 가능할 수 있고, 데이터, 어드레스들, 명령어들, 조건들, 및 상태 정보를 저장하는 것과 같은, 다양한 능력에서 이용될 수 있다. NVM 패키지(154)가 부팅하고 있는 동안, 레지스터들(174)은 (호스트 장치(152)로부터 수신되는) 트림 값들(176)로 로드될 수 있다.
호스트 제어기(162)는 도 1a를 참조하여 전술한 바와 같이 NVM 패키지(104)에 대하여 메모리 제어기(124)가 수행할 수 있는 NVM 패키지(154)에 대한 다양한 동작들을 수행할 수 있다. 예를 들어, 호스트 제어기(162)는 웨어 레벨링과 같은, NVM 패키지(154)에 대한 메모리 관리 동작들을 수행할 수 있다. 시스템(150)은 "로우 NVM"(또는 NAND 플래시 메모리에 대한 "로우 NAND")라고 불릴 수 있다.
제어 회로(172)는 지속적 데이터 저장을 위해 이용되는 NVM에 액세스하기 위해 공유 내부 버스(178)를 이용한다. 예시적인 시스템(150)에서, 이러한 NVM은 NVM들(182a-n)을 포함하는 복수의 메모리 다이들(180a-n)을 포함하는 것으로서 도시된다. 메모리 다이들은 집적 회로(IC) 다이들과 같은 다양한 메모리 다이들일 수 있다. 오직 단일 공유 버스(178)가 NVM 패키지(154)에 대해 도시되지만, NVM 패키지는 하나보다 많은 공유 내부 버스를 포함할 수 있다. 각각의 내부 버스는 복수의 메모리 다이들(180a-n)에 대하여 도시되는 바와 같이, 복수의 메모리 다이들(예를 들어, 2, 3, 4, 8, 32 등)에 접속될 수 있다. 메모리 다이들(180a-n)은 스택형과 같은, 물리적으로 다양한 구성으로 배열될 수 있다. NVM(182a-n)은 프로팅 게이트 또는 전하 트랩핑 기술(floating gate or charge trapping technology)에 기초한 NAND 플래시 메모리, NOR 플래시 메모리, EPROM, EEPROM, FRAM, MRAM, PCM, 또는 그의 임의의 조합과 같은 다양한 NVM 중 임의의 것일 수 있다. 제어 회로(170)는 NVM 패키지(154)를 부팅하기 위해 호스트 장치(152)에 의해 제공되는 트림 값들(176)을 이용하여 NVM(182a-n)에 대한 동작들(예를 들어, 판독/기입 동작들)을 수행할 수 있다.
시스템들(100 및 150)은 별개인 것으로 논의되지만, 이들 2개의 시스템으로부터 특징들을 결합하는 다른 시스템들이 또한 가능하다. 예를 들어, 메모리 제어기(124)를 포함하는, NVM 패키지(104)에 펌웨어(106)를 제공하는 것 이외에, 호스트 장치(102)는 또한 NVM 패키지(154)의 다양한 컴포넌트들의 구성을 위해 NVM 패키지(154)에 트림 값들(예를 들어, 트림 값들(156))을 제공하도록 구성될 수 있다.
도 2는 다양한 NVM 패키지들에 부트 정보를 제공하도록 구성되는 호스트 제어기(204)를 갖는 메모리 장치(202)를 포함하는 예시적인 시스템(200)을 도시하는 도면이다. 메모리 장치(202)는 휴대용 미디어 플레이어, 셀룰러 전화기, 포켓 사이즈 퍼스널 컴퓨터, PDA(personal digital assistant), 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨팅 장치, 및/또는 분리형/휴대용 저장 장치(예를 들어, 플래시 메모리 카드, USB 플래시 메모리 드라이브)와 같은, 다양한 메모리 장치들 중 임의의 것일 수 있다.
예시적인 메모리 장치(202)는 호스트 제어기(204) 및 NVM(206)을 포함한다. 호스트 제어기(204)는 도 1a-b를 참조하여 전술한 호스트 제어기(112) 및/또는 호스트 제어기(162)와 유사할 수 있다. 호스트 제어기(204)는 하나 이상의 프로세서(208), 휘발성 메모리(210), 및 NVM(212)을 포함한다. 프로세서들(208)은 마이크로프로세서들, 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU) 또는 그의 임의의 조합과 같은 임의의 다양한 프로세서들일 수 있다. 휘발성 메모리(210)는 RAM 및 캐시 메모리와 같은 다양한 휘발성 메모리 중 임의의 것일 수 있다. 휘발성 메모리(210)는 NVM(206)에 저장된 데이터를 검색하고 처리하는 것과 같은 다양한 동작들을 수행하기 위해 프로세서들(208)에 의해 이용될 수 있다. NVM(212)은 플래시 메모리(예를 들어, NAND 플래시 메모리, NOR 플래시 메모리)와 같은 다양한 NVM 중 임의의 것일 수 있다. NVM(212)은 펌웨어(214) 및/또는 트림 값들(216)과 같은 부트 정보를 지속적으로 저장할 수 있다. 펌웨어(214)는 도 1a에 대하여 전술한 펌웨어(116-120)와 유사할 수 있고, 트림 값들(216)은 도 1b에 대하여 전술한 트림 값들(166)과 유사할 수 있다. 펌웨어(214) 및/또는 트림 값들(216)은 (예를 들어, 호스트 제어기(204)가 부팅할 때) 휘발성 메모리(210) 내로 로드되어 필요할 때 휘발성 메모리(210)로부터 NVM(206)으로 전송될 수 있다.
NVM(206)은 하나 이상의 NVM 패키지들(218a-b)을 포함할 수 있다. NVM 패키지들(218a-b)은 각각 도 1a-b에 대해 전술한 NVM 패키지(104) 및/또는 NVM 패키지(154)와 유사할 수 있다. 예를 들어, NVM 패키지들(218a-b)은 각각 펌웨어(214) 및/또는 트림 값들(216)을 이용하여 부팅되는 NVM을 갖는 복수의 메모리 다이들(예를 들어, 메모리 다이들(136a-n) 및 NVM(138a-n)), 하나 이상의 메모리 제어기들(예를 들어, 메모리 제어기(124)), 및/또는 제어 회로(예를 들어, 제어 회로(170))를 포함할 수 있다. NVM(206)은 임의의 수의 NVM 패키지들(예를 들어, 2, 3, 4, 8, 16 등)을 포함할 수 있다.
도 1a-b에 대해 전술한 바와 같이, NVM의 관리는 NVM 패키지들(218a-b)의 제어기들 및/또는 호스트 제어기(204)에 의해 수행될 수 있다. 예를 들어, 호스트 제어기(204)는 NVM 패키지들(218a-b)에 상이한 펌웨어 및/또는 트림 값들을 제공함으로써 NVM 패키지들(218a-b)의 동작을 조절하도록 구성될 수 있다. NVM 패키지들(218a-b)의 제어기들이 메모리 관리 동작들(예를 들어, 에러 정정, 웨어 레벨링 등)의 적어도 일부분을 제어하는 구현들에서, NVM 패키지들(218a-b)은 "관리된(managed)" NVM인 것으로 고려될 수 있다.
시스템(200)은 또한 메모리 장치(202)에 통신가능하게 (직접적으로 및/또는 간접적으로) 접속될 수 있는 외부 장치(220)를 포함하는 것으로 도시된다. 외부 장치(220)와 메모리 장치(202) 사이의 통신은 2개의 장치 사이의 데이터 및/또는 명령어들의 전송을 포함할 수 있다. 외부 장치(220)는 데스크톱 컴퓨터, 랩톱 컴퓨터, 서버 시스템, 및 미디어 컴퓨팅 장치(예를 들어, 미디어 서버, 텔레비전, 스테레오 시스템)를 포함하는, 다양한 전자 장치들 중 임의의 것일 수 있다. 메모리 장치(202)는 외부 장치 인터페이스(222)(예를 들어, 무선 칩, USB 인터페이스 등)를 이용하여 물리적 및/또는 무선 접속을 통해 외부 장치(220)와 통신할 수 있다.
예를 들어, 일부 구현들에서, 메모리 장치(202)는 휴대용 미디어 플레이어일 수 있고, 외부 장치(220)는 물리적 접속(예를 들어, USB 케이블)을 통해 서로 미디어 파일들(예를 들어, 오디오 파일들, 비디오 파일들 등)을 전송할 수 있는 데스크톱 컴퓨터일 수 있다.
외부 장치(220)는 NVM(206)을 위한 업데이트된 및/또는 새로운 펌웨어 및/또는 트림 값들을 메모리 장치(202)에 제공할 수 있다. 예를 들어, 메모리 장치(202)는 업데이트된 버전의 펌웨어(214) 및/또는 트림 값들(216)이 외부 장치(220)로부터 이용가능한지를 주기적으로 검사하도록 구성될 수 있다(및/또는 외부 장치(220)는 펌웨어(214) 및/또는 트림 값들(216)의 버전들을 검사하고 이용가능할 때 메모리 장치(202)에 업데이트된 부트 정보를 제공할 수 있다).
펌웨어(214) 및/또는 트림 값들(216)은 NVM 패키지들(218a-b) 각각에 의해 이용될 수 있다. 예를 들어, 펌웨어(214) 및/또는 트림 값들(216)의 단일 사본(single copy)이 NVM(212)에 저장되고 NVM 패키지들(218a-b)과 같은 복수의 NVM 패키지들에 걸쳐서 이용될 수 있다.
도 3은 호스트로부터 메모리 장치를 부팅하기 위한 예시적인 프로세스(300)를 도시하는 흐름도이다. 프로세스(300)는 도 1a에 대해 전술한 NVM 패키지(104), 도 1b에 대해 전술한 NVM 패키지(154), 및/또는 도 2를 참조하여 전술한 메모리 장치(202)를 포함하는, 다양한 메모리 장치들에 의해 수행될 수 있다.
프로세스(300)는 메모리 장치에서 메모리 장치를 부팅하기 위한 지시를 수신하는 것을 포함한다(302에서). 이러한 지시는 메모리 장치, 예를 들어, NVM 패키지(104) 및/또는 NVM 메모리 패키지(154)가 수신할 수 있는 다양한 신호들 및/또는 명령들을 포함할 수 있다. 예를 들어, 호스트 장치(예를 들어, 호스트 장치(102) 및/또는 호스트 장치(152))로부터 수신된 칩 인에이블 어서트 신호(chip enable assertion signal)가 부팅하기 위한 지시일 수 있다. 다른 예에서, 전력 공급되지 않는 상태에서 파워 온되는 메모리 장치가 메모리 장치를 부팅하기 위한 지시로서 역할을 할 수 있다. 다른 예에서, 호스트(예를 들어, 호스트 장치(102) 및/또는 호스트 장치(152))로부터 수신된 부트 명령이 메모리 장치를 부팅하기 위한 지시일 수 있다. 일부 구현들에서, 메모리 장치는 그것이 재부팅해야 함을 결정할 수 있다. 예를 들어, NVM 패키지(104)의 메모리 제어기(124)는 그것이 특정 타입의 에러를 만난 후에 재부팅해야 함을 결정하고 부팅하기 위한 지시를 그 자신에게 제공할 수 있다.
부팅하기 위한 지시를 수신하는 것에 응답하여, 메모리 장치는 호스트 장치로부터 부트 정보를 획득할 수 있다(304에서). 부트 정보는 펌웨어(예를 들어, 펌웨어(106)) 및/또는 트림 값들(예를 들어, 트림 값들(156))을 포함하는, 메모리 장치를 부팅하고 동작시키는 데 이용되는 다양한 정보를 포함할 수 있다. 부트 정보를 획득하는 것은 메모리 장치가 부트 정보를 수신할 준비가 되어 있다는 지시(예를 들어, 상태 지시자(108))를 호스트 장치에 제공하고, 호스트 장치로부터 부트 정보를 부분들로(in portions)(예를 들어, 데이터 청크들(data chunks)) 수신하고, 및 부분들 각각이 메모리 장치에 의해 성공적으로 수신되었다는 확인(들)(예를 들어, 상태 지시자(108))을 호스트 장치에 제공하는 것을 포함할 수 있다.
메모리 장치는 호스트 장치로부터 수신된 부트 정보를 이용하여 부팅할 수 있다(306에서). 예를 들어, 메모리 제어기(124)는 호스트 장치(102)로부터 수신된 펌웨어(130)를 휘발성 메모리(128) 내로 로드하고 펌웨어(130)를 이용하여 NVM 패키지(104)의 부팅을 진행함으로써 NVM 패키지(104)를 부팅할 수 있다. 다른 예에서, 호스트 장치(152)로부터 수신된 트림 값들(176)은 레지스터들(174) 내로 로드될 수 있고, NVM 패키지(154)는 부팅될 수 있다.
메모리 장치를 부팅한 후에, 하나 이상의 메모리 동작들이 호스트 장치로부터의 부트 정보를 이용하여 수행될 수 있다(308에서). 예를 들어, 메모리 제어기(124)는 펌웨어(130)에 의해 제공되는 바와 같이 및/또는 호스트 장치(102)에 의해 명령되는 바와 같이 메모리 동작들을 수행할 수 있다. 예를 들어, 현용 펌웨어(116)가 NVM 패키지(104)에 제공되는 경우, 메모리 제어기(124)는 표준 메모리 동작들(예를 들어, 판독, 기입, 소거)을 수행할 수 있고, 일부 구현들에서, 웨어 레벨링 및 에러 정정과 같은 메모리 관리 동작들을 수행할 수 있다. 다른 예에서, 디버그 펌웨어(118)가 NVM 패키지(104)에 제공되는 경우, 메모리 제어기는 디버그 로그를 발생하고 저장하는 것과 같은 디버그 동작들을 수행할 수 있다. 추가 예에서, 제조 펌웨어(120)가 NVM 패키지(104)에 제공되는 경우, 메모리 제어기(124)는 NVM 패키지(104)의 다양한 컴포넌트들(예를 들어, NVM(138a-n), 호스트 인터페이스(122), 프로세서/마이크로프로세서(126))이 적절하게 설치되었고 그것들 각각의 기술적 사양들에 따라 동작하고 있는지를 결정하기 위해 테스팅 동작들을 수행할 수 있다. 다른 예에서, 제어 회로(170)는 레지스터들(174) 내에 포함되는 트림 값들(176)을 이용하여 호스트 장치(152)에 의해 NVM 패키지(154)에 전송되는 명령들을 수행할 수 있다.
메모리 장치는 일단 메모리 동작들이 완료되면 파워 오프할 수 있다(310에서). 예를 들어, 호스트 장치(예를 들어, 호스트 장치(102 및/또는 152))는 메모리 장치(예를 들어, NVM 패키지(104 및/또는 154))가 메모리 장치에 칩 인에이블 디어서트 신호(chip enable deassertion signal)를 제공하고 및/또는 메모리 장치에 공급된 전력을 토글링 오프(toggling off)함으로써 파워 다운하도록 할 수 있다. 다른 예에서, 메모리 장치(예를 들어, NVM 패키지(104))는 유휴 상태인 장치에 대해 임계 시간량이 경과한 후에, 메모리 장치가 파워 다운할 것임을 결정할 수 있다.
프로세스(300)는 계속해서 반복할 수 있다 - 메모리 장치가 다양한 전력 및/또는 동작 상태들 사이에서 연속적으로 전이함에 따라 메모리 장치가 호스트 장치로부터의 부트 정보를 이용하여 재부팅할 수 있다는 것을 의미한다. 예를 들어, 메모리 장치는 메모리 장치에 의한 전력 소비를 감소(및 가능하게는 배터리 수명을 연장)시키기 위해서 그것이 사용중이 아닐 때 파워 다운될 수 있다. 메모리 장치는 빈번하게 파워 다운 및 업될 수 있다. 오프 상태로부터 온 상태로의 이러한 전이들 각각은 메모리 장치가 호스트로부터 획득된 부트 정보를 이용하여 부팅하도록 할 수 있다.
도 4는 호스트로부터 메모리 장치를 부팅하기 위한 예시적인 프로세스(400)를 도시하는 흐름도이다. 프로세스(400)는 도 1a에 대해 전술한 호스트 장치(102), 도 1b에 대해 전술한 호스트 장치(152), 및/또는 도 2에 대해 전술한 메모리 장치(202)와 같은 다양한 호스트 장치에 의해 수행될 수 있다.
일부 구현들에서, 프로세스(400)는 메모리 장치로부터 부트 정보를 위한 요청을 수신하는 것에 의해 시작한다(402에서). 예를 들어, NVM 패키지(104)는 호스트 장치(102)에 펌웨어의 형태로 부트 정보를 위한 요청을 제공할 수 있다.
일부 구현들에서, 프로세스(400)는 메모리 장치에 대한 액세스가 필요함 및 메모리 장치가 파워 오프됨을 결정하는 것에 의해 시작한다(404에서). 예를 들어, 호스트 장치(102)는 논리적 어드레스들의 범위에 관한 판독 요청을 수신하고(또는 데이터를 판독하기 위한 필요성을 식별하고), 논리적 어드레스들의 범위가 NVM 패키지(104)에 대응함을 결정하고, NVM 패키지(104)가 파워 오프됨을 결정할 수 있다. 이러한 결정에 기초하여, 부트 명령은 메모리 장치에 제공될 수 있다(406에서). 예를 들어, 호스트 장치(102)는 NVM 패키지(104)에 "호스트로부터 부트"에 대한 명령을 제공할 수 있다. 이러한 명령을 제공하는 것에 응답하여, 호스트 장치는 메모리 장치가 부트 정보를 수신할 준비가 되어 있다는 지시가 수신될 때까지 메모리 장치에 부트 정보를 제공하기를 기다릴 수 있다(408에서).
부트 정보는 메모리 장치에 전송될 수 있다(410에서). 예를 들어, 호스트 장치(102)는 NVM 패키지(104)에 펌웨어(116-120) 중 하나 이상을 전송할 수 있다. 다른 예에서, 호스트 장치(152)는 NVM 패키지(154)에 트림 값들(166)을 전송할 수 있다. 부트 정보는 호스트 장치의 휘발성 메모리로부터 전송될 수 있다.
일단 부트 정보가 메모리 장치에 전송되었다면, 호스트는 메모리 장치에 하나 이상의 명령을 제공하고 및/또는 메모리 장치로부터의 응답을 기다릴 수 있다(412에서). 예를 들어, 호스트 장치(102)가 NVM 패키지(104)에 디버그 펌웨어(118)를 전송하면, 호스트 장치(102)는 특정 디버그 정보를 수집하고 호스트 장치(102)에 그것을 제공하기 위해 NVM 패키지(104)에 대해 하나 이상의 명령을 발행할 수 있고, 디버그 정보가 호스트 장치(102)에 제공되기를 기다릴 수 있다. 다른 예에서, 호스트 장치(152)는 NVM 패키지(154)가 전송된 트림 값들(156)을 이용하여 성공적으로 부팅된 후에 NVM 패키지(154)에 판독 명령을 제공하고, NVM 패키지(154)로부터 요청된 데이터를 기다릴 수 있다.
메모리 장치에 제공할 명령들 및/또는 메모리 장치로부터 수신할 요청된 정보가 더 이상 존재하지 않으면, 호스트는 메모리 장치가 파워 다운하도록 할 수 있다(414에서). 예를 들어, 호스트 장치(102)는 칩 인에이블 디어서트 신호를 NVM 패키지(104)에 제공할 수 있고, 이것은 NVM 패키지(104)가 파워 다운하도록 할 수 있다.
프로세스(400)는 호스트 장치(102) 및/또는 호스트 장치(152)와 같은, 호스트 장치에 의해 반복될 수 있다. 예를 들어, 호스트 장치(102)는 일부 태스크(예를 들어, 데이터 검색, 데이터 저장, 컴포넌트 테스트, 디버그 정보 식별)를 수행하기 위해 호스트 장치(102)에 의해 NVM 패키지(104)가 필요로 될 때 NVM 패키지(104)가 호스트 장치(102)로부터 부트 정보를 이용하여 부팅하도록 할 수 있고, 전력 소비를 감소시키기 위해서, 그것이 필요하지 않을 때 NVM 패키지(104)가 파워 다운하도록 할 수 있다.
본 요지의 실시예들 및 본 명세서에 설명된 동작들은 디지털 전자 회로에, 또는 본 명세서에 개시된 구조들 및 그것들의 구조적 등가물들을 포함하는, 컴퓨터 소프트웨어, 펌웨어, 또는 하드웨어, 또는 그것들 중 하나 이상의 조합들에 구현될 수 있다. 본 명세서에 설명된 요지의 실시예들은 데이터 처리 기기(data processing apparatus)에 의한 실행을 위해, 또는 데이터 처리 기기의 동작을 제어하기 위해 컴퓨터 저장 매체에 인코딩된, 하나 이상의 컴퓨터 프로그램들, 즉, 컴퓨터 프로그램 명령어들의 하나 이상의 모듈들로서 구현될 수 있다. 대안적으로 또는 부가적으로, 프로그램 명령어들은 데이터 처리 기기에 의한 실행을 위해 적절한 수신기 기기에 전송을 위한 정보를 인코딩하기 위해 발생되는, 인공적으로 발생된 전파 신호, 예를 들어, 머신 발생(machine-generated) 전기, 광학, 또는 전자기 신호에 인코딩될 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독 가능한 저장 장치, 컴퓨터 판독 가능한 저장 기판, 랜덤 또는 시리얼 액세스 메모리 어레이 또는 장치, 또는 그것들 중 하나 이상의 조합일 수 있거나, 그에 포함될 수 있다. 또한, 컴퓨터 저장 매체가 전파 신호가 아닐 때, 컴퓨터 저장 매체는 인공적으로 발생된 전파 신호에 인코딩된 컴퓨터 프로그램 명령어들의 소스 또는 목적지일 수 있다. 컴퓨터 저장 매체는 또한 하나 이상의 별개의 물리적 컴포넌트들 또는 미디어(예를 들어, 복수의 CD들, 디스크들, 또는 다른 저장 장치들)일 수 있거나, 또는 그에 포함될 수 있다.
본 명세서에 설명된 동작들은 하나 이상의 컴퓨터 판독 가능한 저장 장치들에 저장된 또는 다른 소스들로부터 수신된 데이터에 대해 데이터 처리 기기에 의해 수행되는 동작들로서 구현될 수 있다.
"데이터 처리 기기"라는 용어는, 예시적으로 프로그램 가능한 프로세서, 컴퓨터, 시스템 온 칩(a system on a chip), 또는 전술한 것 중 복수의 것들, 또는 조합들을 포함하는, 데이터를 처리하기 위한 모든 종류의 기기, 장치, 및 머신을 포함한다. 기기는 특수 목적 로직 회로, 예를 들어, FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)을 포함할 수 있다. 기기는 또한 하드웨어 이외에, 문제의 컴퓨터 프로그램을 위한 실행 환경을 생성하는 코드, 예를 들어, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 오퍼레이팅 시스템, 크로스 플랫폼 런타임 환경(cross-platform runtime environment), 가상 머신, 또는 그것들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다. 기기 및 실행 환경은 웹 서비스들, 분산 컴퓨팅 및 그리드 컴퓨팅 인프라스트럭쳐들과 같은, 다양한 상이한 컴퓨팅 모델 인프라스트럭쳐들을 실현할 수 있다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트, 또는 코드라고도 알려짐)은 컴파일된 또는 인터프리트된 언어들, 선언 또는 절차 언어들을 포함하는, 임의의 형태의 프로그래밍 언어로 기입될 수 있고, 그것은 스탠드얼론 프로그램으로서 또는 모듈, 컴포넌트, 서브루틴, 오브젝트, 또는 컴퓨팅 환경에서 사용하기에 적절한 다른 유닛으로서 포함하여, 임의의 형태로 배치될 수 있다. 컴퓨터 프로그램은 파일 시스템 내의 파일에 대응할 수 있지만, 대응할 필요는 없다. 프로그램은 다른 프로그램들 또는 데이터(예를 들어, 마크업 언어 문서에 저장되는 하나 이상의 스크립트들)를 유지하는 파일의 일부분, 문제의 프로그램에 전용인 단일 파일에, 또는 복수의 조율된(coordinated) 파일들(예를 들어, 하나 이상의 모듈들, 서브 프로그램들, 또는 코드의 부분들을 저장하는 파일들)에 저장될 수 있다. 컴퓨터 프로그램은 한 위치에 배치되거나 복수의 위치들에 걸쳐서 분산되고 통신 네트워크에 의해 상호접속되는 복수의 컴퓨터들에서 또는 하나의 컴퓨터에서 실행되도록 배치될 수 있다.
본 명세서에 설명된 프로세스들 및 로직 흐름들은 입력 데이터에 대해 동작하고 출력을 발생함으로써 액션들을 수행하도록 하나 이상의 컴퓨터 프로그램들을 실행하는 하나 이상의 프로그램 가능한 프로세서들에 의해 수행될 수 있다. 프로세스들 및 로직 흐름들은 또한 특수 목적 로직 회로, 예를 들어, FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)에 의해 수행될 수 있고, 기기 또한 이것들로서 구현될 수 있다.
컴퓨터 프로그램의 실행을 위해 적절한 프로세서들은 예시적으로, 범용 및 특수 목적 마이크로프로세서들을 둘다 포함하고, 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서들을 포함한다. 일반적으로, 프로세서는 리드 온리 메모리 또는 랜덤 액세스 메모리 또는 둘다로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 필수 요소들은 명령어들에 따라 액션들을 수행하기 위한 프로세서 및 명령어들 및 데이터를 저장하기 위한 하나 이상의 메모리 장치들이다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 장치들, 예를 들어, 자기, 자기 광학 디스크들, 또는 광학 디스크들을 포함하거나, 또는 그로부터 데이터를 수신하거나 데이터를 전송하거나, 그 둘다를 하기 위해 동작가능하게 결합될 것이다. 그러나, 컴퓨터는 이러한 장치들을 가질 필요는 없다. 또한, 컴퓨터는 다른 장치, 몇 개만 예를 들자면, 모바일 전화기, PDA(personal digital assistant), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, GPS(Global Positioning System) 수신기, 또는 휴대용 저장 장치(예를 들어, USB(universal serial bus) 플래시 드라이브)에 내장될 수 있다. 컴퓨터 프로그램 명령어들 및 데이터를 저장하기 위해 적절한 장치들은 예시적으로 반도체 메모리 장치들, 예를 들어, EPROM, EEPROM, 및 플래시 메모리 장치들; 자기 디스크들, 예를 들어, 내부 하드 디스크들 또는 분리형 디스크들; 자기 광학 디스크들; 및 CD ROM 및 DVD-ROM 디스크들을 포함하는, 모든 형태의 비휘발성 메모리, 미디어 및 메모리 장치들을 포함한다. 프로세서 및 메모리는 특수 목적 로직 회로에 의해 보충되거나 그 안에 포함될 수 있다.
유사하게, 동작들이 특정 순서로 도면들에서 도시되어 있지만, 이것은 바람직한 결과들을 실현하기 위해서, 이러한 동작들이 도시된 특정 순서로 또는 순차적으로 수행되도록, 또는 모든 예시된 동작들이 수행되도록, 요구하는 것으로서 이해되어서는 안 된다. 특정 환경들에서, 멀티태스킹 및 병렬 프로세싱이 유익할 수 있다. 또한, 전술한 실시예들에서 다양한 시스템 컴포넌트들의 분리는 모든 실시예들에서 이러한 분리를 요구하는 것으로서 이해되어서는 안 되고, 설명된 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일 소프트웨어 제품에 함께 통합되거나 복수의 소프트웨어 제품들 내로 패키지화될 수 있다는 것을 이해해야 한다.
따라서, 본 요지의 특정 실시예들이 설명되었다. 다른 실시예들은 다음의 청구항들의 범위 내에 있다. 또한, 호스트로부터 부팅하기 위한 다른 메커니즘들이 이용될 수 있다. 일부 경우들에서, 청구항들에 기재된 액션들은 상이한 순서로 수행될 수 있고 여전히 바람직한 결과들을 실현할 수 있다. 또한, 첨부 도면들에 도시된 프로세스들은 바람직한 결과들을 실현하기 위해서 반드시 도시된 특정 순서, 또는 순차적인 순서를 요구하지는 않는다. 특정 구현들에서, 멀티태스킹 및 병렬 프로세싱이 유익할 수 있다.

Claims (20)

  1. 시스템으로서,
    메모리 장치에서, 상기 메모리 장치를 부팅하기 위한 명령어를 수신하기 위한 수단 - 상기 메모리 장치는 상기 메모리 장치의 제어기에 의해 액세스 가능한 비휘발성 메모리를 포함함 -;
    상기 메모리 장치를 부팅하기 위한 명령어의 수신에 응답하여, 상기 메모리 장치에 의해, 호스트 장치로부터 펌웨어를 획득하기 위한 수단 - 상기 호스트 장치는 상기 메모리 장치로부터 분리되고, 상기 메모리 장치에 통신 결합됨 -; 및
    상기 호스트 장치로부터의 상기 펌웨어를 이용하여 상기 메모리 장치를 부팅하기 위한 수단 - 상기 메모리 장치는 상기 호스트 장치와 별개로 부팅하며, 상기 호스트 장치는 상기 비휘발성 메모리에 저장되고 상기 메모리 장치의 제어기와의 통신을 통해 획득된 데이터 또는 명령어들을 이용하여 동작들을 수행함 -
    을 포함하는 시스템.
  2. 제1항에 있어서,
    상기 메모리 장치를 부팅하기 위한 명령어는 상기 호스트 장치로부터 수신되고, 상기 메모리 장치에게, 상기 호스트 장치로부터의 상기 펌웨어를 이용하여 부팅하고, 상기 메모리 장치의 상기 비휘발성 메모리에 저장된 펌웨어로부터 부팅하라는 명령어들을 무시(override)할 것을 명령하는 시스템.
  3. 제1항에 있어서,
    상기 메모리 장치가 상기 호스트 장치로부터의 상기 펌웨어를 이용하여 부팅한 후에, 상기 펌웨어를 이용하여 상기 메모리 장치 상의 하나 이상의 동작을 수행하는 것을 더 포함하는 시스템.
  4. 제3항에 있어서,
    상기 펌웨어는 상기 제어기로 하여금 상기 비휘발성 메모리 상에서 판독, 기입 및 소거 동작들을 수행하게 하는 명령어들을 갖는 현용 펌웨어(operational firmware)를 포함하고, 상기 메모리 장치 상에서 수행되는 하나 이상의 동작은 상기 판독, 기입 및 소거 동작들 중 하나 이상의 동작을 포함하는 시스템.
  5. 제4항에 있어서,
    상기 현용 펌웨어는 상기 제어기로 하여금 상기 비휘발성 메모리 상에서 메모리 관리 동작들을 수행하게 하는 명령어들을 더 포함하는 시스템.
  6. 제5항에 있어서,
    상기 메모리 관리 동작들 중 하나 이상의 동작은 웨어 레벨링(wear-leveling) 동작들을 포함하는 시스템.
  7. 제3항에 있어서,
    상기 펌웨어는 상기 제어기로 하여금 상기 메모리 장치 상에서 디버그 동작들을 수행하게 하는 명령어들을 갖는 디버그 펌웨어를 포함하고, 상기 메모리 장치 상에서 수행되는 하나 이상의 동작은 디버그 동작들 중 하나 이상의 동작을 포함하는 시스템.
  8. 제3항에 있어서,
    상기 펌웨어는 상기 제어기로 하여금 적어도 상기 비휘발성 메모리를 포함하는 상기 메모리 장치의 컴포넌트들의 설치 및 동작을 테스트하게 하는 명령어들을 갖는 제조 펌웨어를 포함하고, 상기 메모리 장치 상에서 수행되는 하나 이상의 동작은 상기 메모리 장치의 컴포넌트들 중 하나 이상의 컴포넌트의 설치 및 동작을 테스트하기 위한 하나 이상의 동작을 포함하는 시스템.
  9. 제1항에 있어서,
    상기 비휘발성 메모리는 플래시 메모리를 포함하는 시스템.
  10. 방법으로서,
    호스트 장치에 의해, 메모리 장치에게 상기 호스트 장치로부터의 펌웨어를 이용하여 부팅할 것을 명령하는 부트 명령을 상기 메모리 장치에 제공하는 단계 - 상기 호스트 장치는 상기 메모리 장치로부터 분리되고, 상기 메모리 장치와 통신 결합되며, 상기 메모리 장치는 비휘발성 메모리를 포함함 -;
    상기 호스트 장치에서, 상기 메모리 장치가 상기 호스트 장치로부터 상기 펌웨어를 수신할 준비가 되었다는 지시를 수신하는 단계; 및
    상기 지시의 수신에 응답하여, 상기 호스트 장치에 의해, 상기 펌웨어를 상기 메모리 장치로 전송하는 단계 - 상기 메모리 장치로의 상기 펌웨어의 전송은 상기 메모리 장치로 하여금 상기 펌웨어를 이용하여 부팅하게 하며, 상기 메모리 장치는 상기 호스트 장치와 별개로 부팅함 -
    를 포함하는 방법.
  11. 제10항에 있어서,
    상기 펌웨어는 상기 메모리 장치의 제어기로 하여금 상기 메모리 장치의 상기 비휘발성 메모리 상에서 판독, 기입 및 소거 동작들을 수행하게 하는 명령어들을 갖는 현용 펌웨어를 포함하는 방법.
  12. 제10항에 있어서,
    상기 펌웨어는 상기 메모리 장치의 제어기로 하여금 상기 메모리 장치 상에서 디버그 동작들을 수행하게 하는 명령어들을 갖는 디버그 펌웨어를 포함하는 방법.
  13. 제10항에 있어서,
    상기 펌웨어는 상기 메모리 장치의 제어기로 하여금 적어도 상기 비휘발성 메모리를 포함하는 상기 메모리 장치의 컴포넌트들의 설치 및 동작을 테스트하게 하는 명령어들을 갖는 제조 펌웨어를 포함하는 방법.
  14. 제10항에 있어서,
    상기 펌웨어는 상기 호스트 장치의 휘발성 메모리에 저장되어 상기 호스트 장치의 휘발성 메모리로부터 상기 메모리 장치로 제공되는 방법.
  15. 제10항에 있어서,
    상기 호스트 장치에 액세스 가능한 복수의 메모리 장치 중 하나의 메모리 장치에 저장된 데이터에 액세스하라는 요청에 응답하여, 상기 요청된 데이터가 상기 메모리 장치에 의해 저장되는 것으로 결정하는 단계를 더 포함하고,
    상기 요청된 데이터가 상기 메모리 장치에 의해 저장되는 것으로 결정한 것에 응답하여, 상기 부트 명령이 상기 메모리 장치에 제공되는 방법.
  16. 메모리 장치로서,
    비휘발성 메모리;
    상기 메모리 장치를 호스트 장치에 통신 결합하도록 구성되는 호스트 인터페이스; 및
    상기 비휘발성 메모리 상에서 메모리 동작들을 수행하도록 구성되고, 상기 호스트 인터페이스를 통해 상기 호스트 장치와 통신하도록 구성되는 메모리 제어기
    를 포함하고,
    상기 메모리 제어기는,
    상기 호스트 인터페이스를 통해 상기 호스트 장치로부터 상기 메모리 장치를 부팅하라는 명령어를 수신하고;
    상기 명령어의 수신에 응답하여, 상기 호스트 장치로부터 펌웨어를 획득하고;
    상기 호스트 장치로부터의 상기 펌웨어를 이용하여 상기 메모리 장치를 부팅하도록 더 구성되며,
    상기 메모리 장치는 상기 호스트 장치와 별개로 부팅하고, 상기 호스트 장치는 상기 비휘발성 메모리에 저장되고 상기 호스트 인터페이스를 통한 상기 메모리 장치의 상기 메모리 제어기와의 통신을 통해 획득된 데이터 또는 명령어들을 이용하여 동작들을 수행하는 메모리 장치.
  17. 제16항에 있어서,
    상기 펌웨어는 상기 메모리 제어기로 하여금 상기 비휘발성 메모리 상에서 판독, 기입 및 소거 동작들을 수행하게 하는 명령어들을 갖는 현용 펌웨어를 포함하는 메모리 장치.
  18. 제17항에 있어서,
    상기 현용 펌웨어는 상기 메모리 제어기로 하여금 상기 비휘발성 메모리 상에서 메모리 관리 동작들을 수행하게 하는 명령어들을 더 포함하는 메모리 장치.
  19. 제16항에 있어서,
    상기 펌웨어는 상기 메모리 제어기로 하여금 상기 메모리 장치 상에서 디버그 동작들을 수행하게 하는 명령어들을 갖는 디버그 펌웨어를 포함하는 메모리 장치.
  20. 제16항에 있어서,
    상기 펌웨어는 상기 메모리 제어기로 하여금 적어도 상기 비휘발성 메모리를 포함하는 상기 메모리 장치의 컴포넌트들의 설치 및 동작을 테스트하게 하는 명령어들을 갖는 제조 펌웨어를 포함하는 메모리 장치.
KR1020120071704A 2011-07-01 2012-07-02 호스트로부터의 메모리 장치의 부팅 KR101385872B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/175,597 US8706955B2 (en) 2011-07-01 2011-07-01 Booting a memory device from a host
US13/175,597 2011-07-01

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020120095605A Division KR20130004437A (ko) 2011-07-01 2012-08-30 호스트로부터의 메모리 장치의 부팅

Publications (2)

Publication Number Publication Date
KR20130004174A true KR20130004174A (ko) 2013-01-09
KR101385872B1 KR101385872B1 (ko) 2014-04-17

Family

ID=46548200

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020120071704A KR101385872B1 (ko) 2011-07-01 2012-07-02 호스트로부터의 메모리 장치의 부팅
KR1020120095605A KR20130004437A (ko) 2011-07-01 2012-08-30 호스트로부터의 메모리 장치의 부팅

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020120095605A KR20130004437A (ko) 2011-07-01 2012-08-30 호스트로부터의 메모리 장치의 부팅

Country Status (7)

Country Link
US (1) US8706955B2 (ko)
EP (1) EP2541395A1 (ko)
JP (1) JP5701259B2 (ko)
KR (2) KR101385872B1 (ko)
CN (1) CN102915210B (ko)
TW (2) TWI524178B (ko)
WO (1) WO2013006568A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170082954A (ko) * 2016-01-07 2017-07-17 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
WO2022030798A1 (ko) * 2020-08-04 2022-02-10 삼성전자 주식회사 재부팅을 하는 방법 및 이를 지원하는 전자 장치

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8307180B2 (en) 2008-02-28 2012-11-06 Nokia Corporation Extended utilization area for a memory device
US8874824B2 (en) 2009-06-04 2014-10-28 Memory Technologies, LLC Apparatus and method to share host system RAM with mass storage memory RAM
US10257109B2 (en) * 2012-01-18 2019-04-09 International Business Machines Corporation Cloud-based content management system
US9417998B2 (en) 2012-01-26 2016-08-16 Memory Technologies Llc Apparatus and method to provide cache move with non-volatile mass memory system
US9311226B2 (en) * 2012-04-20 2016-04-12 Memory Technologies Llc Managing operational state data of a memory module using host memory in association with state change
US9257182B2 (en) * 2012-12-21 2016-02-09 Micron Technology, Inc. Memory devices and their operation having trim registers associated with access operation commands
US9349142B2 (en) * 2013-10-09 2016-05-24 Ebay Inc. Reflow of data presentation using tracking data
CN104679622A (zh) * 2013-11-29 2015-06-03 英业达科技有限公司 基本输入输出系统维护方法
EP3087471A4 (en) 2013-12-27 2017-10-11 Intel Corporation Controlled customization of silicon initialization
KR102298661B1 (ko) 2015-04-30 2021-09-07 삼성전자주식회사 저장 장치 및 그것의 초기화 방법
US9678682B2 (en) * 2015-10-13 2017-06-13 International Business Machines Corporation Backup storage of vital debug information
US10572166B1 (en) * 2017-09-27 2020-02-25 Amazon Technologies, Inc. Firmware download for a solid state storage card
KR102396448B1 (ko) 2017-10-19 2022-05-11 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 동작 방법
US11256605B2 (en) 2017-10-19 2022-02-22 Samsung Electronics Co., Ltd. Nonvolatile memory device
US10446254B1 (en) * 2018-05-03 2019-10-15 Western Digital Technologies, Inc. Method for maximizing power efficiency in memory interface block
US10802734B2 (en) * 2018-09-28 2020-10-13 Western Digital Technologies, Inc. Method for fast boot read

Family Cites Families (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3285110B2 (ja) * 1994-10-21 2002-05-27 セイコーエプソン株式会社 ファームウェアの組み込み方法及びホスト装置とプリンタとからなるシステム
US5768498A (en) 1996-01-23 1998-06-16 Lucent Technologies Protocol verification using symbolic representations of queues
US5737520A (en) 1996-09-03 1998-04-07 Hewlett-Packard Co. Method and apparatus for correlating logic analyzer state capture data with associated application data structures
US6496945B2 (en) 1998-06-04 2002-12-17 Compaq Information Technologies Group, L.P. Computer system implementing fault detection and isolation using unique identification codes stored in non-volatile memory
US6463550B1 (en) 1998-06-04 2002-10-08 Compaq Information Technologies Group, L.P. Computer system implementing fault detection and isolation using unique identification codes stored in non-volatile memory
US6279127B1 (en) 1998-08-20 2001-08-21 International Business Machines Corporation System for predicting year-2000 instruction failures
US6807643B2 (en) 1998-12-29 2004-10-19 Intel Corporation Method and apparatus for providing diagnosis of a processor without an operating system boot
US6591272B1 (en) 1999-02-25 2003-07-08 Tricoron Networks, Inc. Method and apparatus to make and transmit objects from a database on a server computer to a client computer
DE59903732D1 (de) 1999-04-20 2003-01-23 Siemens Ag Verfahren zum Testen der Unabhängigkeit und Verträglichkeit eines Software-Moduls
US6467052B1 (en) 1999-06-03 2002-10-15 Microsoft Corporation Method and apparatus for analyzing performance of data processing system
US6708231B1 (en) * 1999-08-12 2004-03-16 Mitsumi Electric Co., Ltd. Method and system for performing a peripheral firmware update
KR100359200B1 (ko) * 2000-01-12 2002-11-01 주식회사 엘지이아이 펌웨어 운용방법
GB2366879B (en) 2000-09-16 2005-02-16 Ibm Tracing the execution path of a computer program
US7237126B2 (en) * 2001-09-28 2007-06-26 Hewlett-Packard Development Company, L.P. Method and apparatus for preserving the integrity of a management subsystem environment
GB2383437B (en) 2001-12-20 2004-02-04 Sun Microsystems Inc System trace unit
JP2004021463A (ja) * 2002-06-14 2004-01-22 Canon Inc 周辺装置ファームウエアアップデート装置
US7089547B2 (en) * 2002-09-13 2006-08-08 International Business Machines Corporation Firmware updating
JP2004117168A (ja) 2002-09-26 2004-04-15 Matsushita Electric Ind Co Ltd 半導体集積回路およびその検査手法
KR100484485B1 (ko) 2002-10-01 2005-04-20 한국전자통신연구원 비휘발성 메모리에의 데이터 저장 방법 및 장치
US7043664B1 (en) * 2002-10-31 2006-05-09 Microsoft Corporation Firmware recovery
US7246266B2 (en) * 2002-11-21 2007-07-17 Chris Sneed Method and apparatus for firmware restoration in modems
WO2004107168A1 (en) 2003-06-03 2004-12-09 Koninklijke Philips Electronics N.V. Booting from non-volatile memory
KR100849296B1 (ko) * 2003-06-13 2008-07-29 삼성전자주식회사 주제어부와 보조제어부를 구비하는 시스템에서의보조제어부의 초기화 장치 및 방법
US8677117B2 (en) 2003-12-31 2014-03-18 International Business Machines Corporation Remote management of boot application
US7594135B2 (en) 2003-12-31 2009-09-22 Sandisk Corporation Flash memory system startup operation
US7197634B2 (en) * 2004-01-16 2007-03-27 Dell Products L.P. System and method for updating device firmware
JP4357331B2 (ja) 2004-03-24 2009-11-04 東芝メモリシステムズ株式会社 マイクロプロセッサブートアップ制御装置、及び情報処理システム
US20050229020A1 (en) 2004-04-06 2005-10-13 International Business Machines (Ibm) Corporation Error handling in an embedded system
JP2006012267A (ja) 2004-06-24 2006-01-12 Mitsubishi Electric Corp メモリ装置
JP2006099704A (ja) 2004-09-30 2006-04-13 Toshiba Corp 情報処理装置および起動制御方法
US7730326B2 (en) * 2004-11-12 2010-06-01 Apple Inc. Method and system for updating firmware stored in non-volatile memory
JP2006146485A (ja) 2004-11-18 2006-06-08 Toshiba Corp 携帯端末
US7603562B2 (en) * 2005-02-02 2009-10-13 Insyde Software Corporation System and method for reducing memory requirements of firmware
US7209405B2 (en) * 2005-02-23 2007-04-24 Micron Technology, Inc. Memory device and method having multiple internal data buses and memory bank interleaving
US7711989B2 (en) 2005-04-01 2010-05-04 Dot Hill Systems Corporation Storage system with automatic redundant code component failure detection, notification, and repair
JP2006323612A (ja) * 2005-05-18 2006-11-30 Ricoh Co Ltd ファームウェアファイルの書き込みシステム及びファームウェアファイルの書き込み方法
US7702966B2 (en) 2005-09-07 2010-04-20 Intel Corporation Method and apparatus for managing software errors in a computer system
US7546487B2 (en) 2005-09-15 2009-06-09 Intel Corporation OS and firmware coordinated error handling using transparent firmware intercept and firmware services
US7640424B2 (en) * 2005-10-13 2009-12-29 Sandisk Corporation Initialization of flash storage via an embedded controller
KR100734303B1 (ko) 2006-01-14 2007-07-02 삼성전자주식회사 시스템 프로그램 다운로드 방법
JP2007206885A (ja) 2006-01-31 2007-08-16 Toshiba Corp コンピュータシステム及びシステム起動方法
JP2007213292A (ja) 2006-02-09 2007-08-23 Nec Electronics Corp マルチプロセッサシステム及びスレーブシステムの起動方法
JP4715552B2 (ja) 2006-03-01 2011-07-06 株式会社日立製作所 障害検出方式
US7975184B2 (en) 2006-04-03 2011-07-05 Donald Goff Diagnostic access system
TWI316184B (en) * 2006-08-03 2009-10-21 Etron Technology Inc Programmable system-chip device and method of programming firmware
JP4472010B2 (ja) 2006-08-09 2010-06-02 株式会社日立超エル・エス・アイ・システムズ 記憶装置
US8239688B2 (en) * 2007-01-07 2012-08-07 Apple Inc. Securely recovering a computing device
US8254568B2 (en) * 2007-01-07 2012-08-28 Apple Inc. Secure booting a computing device
US20080256400A1 (en) 2007-04-16 2008-10-16 Chih-Cheng Yang System and Method for Information Handling System Error Handling
GB2455106B (en) 2007-11-28 2012-08-01 Icera Inc Memory errors
JP4635061B2 (ja) 2008-02-27 2011-02-16 株式会社東芝 半導体記憶装置の評価方法
JP2010140266A (ja) 2008-12-11 2010-06-24 Toshiba Corp 電子デバイスシステムと電子デバイス
US8713209B2 (en) 2009-01-13 2014-04-29 Qualcomm Incorporated System, apparatus, and method for fast startup of USB devices
US8370835B2 (en) 2009-03-12 2013-02-05 Arend Erich Dittmer Method for dynamically generating a configuration for a virtual machine with a virtual hard disk in an external storage device
US8478928B2 (en) 2009-04-23 2013-07-02 Samsung Electronics Co., Ltd. Data storage device and information processing system incorporating data storage device
US8321647B2 (en) 2009-05-06 2012-11-27 Apple Inc. Multipage preparation commands for non-volatile memory systems
US20100318719A1 (en) 2009-06-12 2010-12-16 Micron Technology, Inc. Methods, memory controllers and devices for wear leveling a memory
US8205070B2 (en) 2009-09-08 2012-06-19 Apple Inc. Device bootup from a NAND-type non-volatile memory
JP5141721B2 (ja) * 2010-06-10 2013-02-13 セイコーエプソン株式会社 ホスト機器及びその制御方法
US8589730B2 (en) 2010-08-31 2013-11-19 Apple Inc. Handling errors during device bootup from a non-volatile memory

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170082954A (ko) * 2016-01-07 2017-07-17 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
WO2022030798A1 (ko) * 2020-08-04 2022-02-10 삼성전자 주식회사 재부팅을 하는 방법 및 이를 지원하는 전자 장치

Also Published As

Publication number Publication date
US8706955B2 (en) 2014-04-22
JP2013016182A (ja) 2013-01-24
JP5701259B2 (ja) 2015-04-15
CN102915210B (zh) 2016-03-02
TW201333698A (zh) 2013-08-16
TWI524178B (zh) 2016-03-01
TWI463316B (zh) 2014-12-01
US20130007347A1 (en) 2013-01-03
TW201324143A (zh) 2013-06-16
EP2541395A1 (en) 2013-01-02
CN102915210A (zh) 2013-02-06
WO2013006568A3 (en) 2014-05-08
KR101385872B1 (ko) 2014-04-17
KR20130004437A (ko) 2013-01-10
WO2013006568A2 (en) 2013-01-10

Similar Documents

Publication Publication Date Title
KR101385872B1 (ko) 호스트로부터의 메모리 장치의 부팅
US10866797B2 (en) Data storage device and method for reducing firmware update time and data processing system including the device
US10261701B2 (en) Methods to communicate a timestamp to a storage system
US20190179685A1 (en) Solid state memory system with low power error correction mechanism and method of operation thereof
US20130007348A1 (en) Booting Raw Memory from a Host
CN110244960B (zh) 集成的单个fpga和固态硬盘控制器
KR101862112B1 (ko) 비휘발성 메모리(nvm) 기술 기반 메모리의 부팅 시간 제로화의 가속화
WO2012170521A2 (en) Management of device firmware update effects as seen by a host
US11550592B2 (en) Methods and apparatus to utilize non-volatile memory for computer system boot
US9824777B2 (en) Storage system managing run-time bad cells
CN105389122B (zh) 数据储存器件的操作方法
US11494094B2 (en) Storage system and method of dynamically managing power of storage system according to a monitored operating state of a computing device
CN110895449B (zh) 用于在存储器系统中管理有效数据的装置和方法
US10733104B2 (en) Fast non-volatile storage device recovery techniques
CN109426448B (zh) 存储器系统及其操作方法
KR20200089939A (ko) 메모리 시스템 및 그 동작 방법
CN111309518B (zh) 存储器系统和存储器系统的操作方法
CN111124035B (zh) 基于实时时钟管理空闲页面的存储器系统及其操作方法
CN117873580A (zh) 操作系统切换方法、芯片及设备
KR20240003648A (ko) 메모리 시스템 및 그에 포함된 메모리 컨트롤러의 동작 방법
CN118113355A (zh) 操作系统切换方法、芯片及设备
KR20200088565A (ko) 저장 장치, 컨트롤러 및 저장 장치의 동작 방법

Legal Events

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

Payment date: 20170317

Year of fee payment: 4