KR20130004174A - 호스트로부터의 메모리 장치의 부팅 - Google Patents
호스트로부터의 메모리 장치의 부팅 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/22—Microcontrol or microprogram arrangements
- G06F9/24—Loading of the microprogram
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0632—Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4416—Network 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
본 발명은 호스트로부터의, 플래시 메모리를 갖는 장치와 같은 메모리 장치의 부팅에 관한 것이다.
플래시 메모리(예를 들어, 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는 호스트로부터 메모리 장치를 부팅하기 위한 예시적인 프로세스를 나타내는 흐름도이다.
다양한 도면들에서 동일한 참조 부호들은 동일한 요소들을 나타낸다.
도 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항에 있어서,
상기 메모리 장치를 부팅하기 위한 명령어는 상기 호스트 장치로부터 수신되고, 상기 메모리 장치에게, 상기 호스트 장치로부터의 상기 펌웨어를 이용하여 부팅하고, 상기 메모리 장치의 상기 비휘발성 메모리에 저장된 펌웨어로부터 부팅하라는 명령어들을 무시(override)할 것을 명령하는 시스템. - 제1항에 있어서,
상기 메모리 장치가 상기 호스트 장치로부터의 상기 펌웨어를 이용하여 부팅한 후에, 상기 펌웨어를 이용하여 상기 메모리 장치 상의 하나 이상의 동작을 수행하는 것을 더 포함하는 시스템. - 제3항에 있어서,
상기 펌웨어는 상기 제어기로 하여금 상기 비휘발성 메모리 상에서 판독, 기입 및 소거 동작들을 수행하게 하는 명령어들을 갖는 현용 펌웨어(operational firmware)를 포함하고, 상기 메모리 장치 상에서 수행되는 하나 이상의 동작은 상기 판독, 기입 및 소거 동작들 중 하나 이상의 동작을 포함하는 시스템. - 제4항에 있어서,
상기 현용 펌웨어는 상기 제어기로 하여금 상기 비휘발성 메모리 상에서 메모리 관리 동작들을 수행하게 하는 명령어들을 더 포함하는 시스템. - 제5항에 있어서,
상기 메모리 관리 동작들 중 하나 이상의 동작은 웨어 레벨링(wear-leveling) 동작들을 포함하는 시스템. - 제3항에 있어서,
상기 펌웨어는 상기 제어기로 하여금 상기 메모리 장치 상에서 디버그 동작들을 수행하게 하는 명령어들을 갖는 디버그 펌웨어를 포함하고, 상기 메모리 장치 상에서 수행되는 하나 이상의 동작은 디버그 동작들 중 하나 이상의 동작을 포함하는 시스템. - 제3항에 있어서,
상기 펌웨어는 상기 제어기로 하여금 적어도 상기 비휘발성 메모리를 포함하는 상기 메모리 장치의 컴포넌트들의 설치 및 동작을 테스트하게 하는 명령어들을 갖는 제조 펌웨어를 포함하고, 상기 메모리 장치 상에서 수행되는 하나 이상의 동작은 상기 메모리 장치의 컴포넌트들 중 하나 이상의 컴포넌트의 설치 및 동작을 테스트하기 위한 하나 이상의 동작을 포함하는 시스템. - 제1항에 있어서,
상기 비휘발성 메모리는 플래시 메모리를 포함하는 시스템. - 방법으로서,
호스트 장치에 의해, 메모리 장치에게 상기 호스트 장치로부터의 펌웨어를 이용하여 부팅할 것을 명령하는 부트 명령을 상기 메모리 장치에 제공하는 단계 - 상기 호스트 장치는 상기 메모리 장치로부터 분리되고, 상기 메모리 장치와 통신 결합되며, 상기 메모리 장치는 비휘발성 메모리를 포함함 -;
상기 호스트 장치에서, 상기 메모리 장치가 상기 호스트 장치로부터 상기 펌웨어를 수신할 준비가 되었다는 지시를 수신하는 단계; 및
상기 지시의 수신에 응답하여, 상기 호스트 장치에 의해, 상기 펌웨어를 상기 메모리 장치로 전송하는 단계 - 상기 메모리 장치로의 상기 펌웨어의 전송은 상기 메모리 장치로 하여금 상기 펌웨어를 이용하여 부팅하게 하며, 상기 메모리 장치는 상기 호스트 장치와 별개로 부팅함 -
를 포함하는 방법. - 제10항에 있어서,
상기 펌웨어는 상기 메모리 장치의 제어기로 하여금 상기 메모리 장치의 상기 비휘발성 메모리 상에서 판독, 기입 및 소거 동작들을 수행하게 하는 명령어들을 갖는 현용 펌웨어를 포함하는 방법. - 제10항에 있어서,
상기 펌웨어는 상기 메모리 장치의 제어기로 하여금 상기 메모리 장치 상에서 디버그 동작들을 수행하게 하는 명령어들을 갖는 디버그 펌웨어를 포함하는 방법. - 제10항에 있어서,
상기 펌웨어는 상기 메모리 장치의 제어기로 하여금 적어도 상기 비휘발성 메모리를 포함하는 상기 메모리 장치의 컴포넌트들의 설치 및 동작을 테스트하게 하는 명령어들을 갖는 제조 펌웨어를 포함하는 방법. - 제10항에 있어서,
상기 펌웨어는 상기 호스트 장치의 휘발성 메모리에 저장되어 상기 호스트 장치의 휘발성 메모리로부터 상기 메모리 장치로 제공되는 방법. - 제10항에 있어서,
상기 호스트 장치에 액세스 가능한 복수의 메모리 장치 중 하나의 메모리 장치에 저장된 데이터에 액세스하라는 요청에 응답하여, 상기 요청된 데이터가 상기 메모리 장치에 의해 저장되는 것으로 결정하는 단계를 더 포함하고,
상기 요청된 데이터가 상기 메모리 장치에 의해 저장되는 것으로 결정한 것에 응답하여, 상기 부트 명령이 상기 메모리 장치에 제공되는 방법. - 메모리 장치로서,
비휘발성 메모리;
상기 메모리 장치를 호스트 장치에 통신 결합하도록 구성되는 호스트 인터페이스; 및
상기 비휘발성 메모리 상에서 메모리 동작들을 수행하도록 구성되고, 상기 호스트 인터페이스를 통해 상기 호스트 장치와 통신하도록 구성되는 메모리 제어기
를 포함하고,
상기 메모리 제어기는,
상기 호스트 인터페이스를 통해 상기 호스트 장치로부터 상기 메모리 장치를 부팅하라는 명령어를 수신하고;
상기 명령어의 수신에 응답하여, 상기 호스트 장치로부터 펌웨어를 획득하고;
상기 호스트 장치로부터의 상기 펌웨어를 이용하여 상기 메모리 장치를 부팅하도록 더 구성되며,
상기 메모리 장치는 상기 호스트 장치와 별개로 부팅하고, 상기 호스트 장치는 상기 비휘발성 메모리에 저장되고 상기 호스트 인터페이스를 통한 상기 메모리 장치의 상기 메모리 제어기와의 통신을 통해 획득된 데이터 또는 명령어들을 이용하여 동작들을 수행하는 메모리 장치. - 제16항에 있어서,
상기 펌웨어는 상기 메모리 제어기로 하여금 상기 비휘발성 메모리 상에서 판독, 기입 및 소거 동작들을 수행하게 하는 명령어들을 갖는 현용 펌웨어를 포함하는 메모리 장치. - 제17항에 있어서,
상기 현용 펌웨어는 상기 메모리 제어기로 하여금 상기 비휘발성 메모리 상에서 메모리 관리 동작들을 수행하게 하는 명령어들을 더 포함하는 메모리 장치. - 제16항에 있어서,
상기 펌웨어는 상기 메모리 제어기로 하여금 상기 메모리 장치 상에서 디버그 동작들을 수행하게 하는 명령어들을 갖는 디버그 펌웨어를 포함하는 메모리 장치. - 제16항에 있어서,
상기 펌웨어는 상기 메모리 제어기로 하여금 적어도 상기 비휘발성 메모리를 포함하는 상기 메모리 장치의 컴포넌트들의 설치 및 동작을 테스트하게 하는 명령어들을 갖는 제조 펌웨어를 포함하는 메모리 장치.
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)
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)
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)
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 |
-
2011
- 2011-07-01 US US13/175,597 patent/US8706955B2/en not_active Expired - Fee Related
-
2012
- 2012-06-28 EP EP12174250A patent/EP2541395A1/en not_active Withdrawn
- 2012-06-29 TW TW102114256A patent/TWI524178B/zh not_active IP Right Cessation
- 2012-06-29 TW TW101123645A patent/TWI463316B/zh not_active IP Right Cessation
- 2012-06-29 CN CN201210319478.1A patent/CN102915210B/zh not_active Expired - Fee Related
- 2012-07-02 KR KR1020120071704A patent/KR101385872B1/ko active IP Right Grant
- 2012-07-02 JP JP2012160952A patent/JP5701259B2/ja not_active Expired - Fee Related
- 2012-07-02 WO PCT/US2012/045288 patent/WO2013006568A2/en active Application Filing
- 2012-08-30 KR KR1020120095605A patent/KR20130004437A/ko not_active Application Discontinuation
Cited By (2)
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 |