KR20100110652A - 메모리 장치 및 메모리 장치의 펌웨어 업데이트 방법 - Google Patents

메모리 장치 및 메모리 장치의 펌웨어 업데이트 방법 Download PDF

Info

Publication number
KR20100110652A
KR20100110652A KR1020090029092A KR20090029092A KR20100110652A KR 20100110652 A KR20100110652 A KR 20100110652A KR 1020090029092 A KR1020090029092 A KR 1020090029092A KR 20090029092 A KR20090029092 A KR 20090029092A KR 20100110652 A KR20100110652 A KR 20100110652A
Authority
KR
South Korea
Prior art keywords
firmware
information
volatile memory
memory
context information
Prior art date
Application number
KR1020090029092A
Other languages
English (en)
Other versions
KR101605875B1 (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 삼성전자주식회사
Priority to KR1020090029092A priority Critical patent/KR101605875B1/ko
Priority to US12/753,222 priority patent/US8694984B2/en
Publication of KR20100110652A publication Critical patent/KR20100110652A/ko
Application granted granted Critical
Publication of KR101605875B1 publication Critical patent/KR101605875B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • 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/451Execution arrangements for user interfaces
    • G06F9/453Help systems
    • 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/451Execution arrangements for user interfaces
    • G06F9/454Multi-language systems; Localisation; Internationalisation

Abstract

메모리 장치의 펌웨어 업데이트 방법 및 메모리 장치가 개시된다. 상기 기술적 과제를 달성하기 위한 메모리 장치는 적어도 하나의 휘발성 메모리 및 비휘발성 메모리를 포함하며, 상기 메모리 장치는 상기 적어도 하나의 휘발성 메모리에 위치하는 펌웨어를 업데이트 하기 위해 상기 펌웨어에 대응되는 컨텍스트 정보의 일부만을 갱신할 수 있다.

Description

메모리 장치 및 메모리 장치의 펌웨어 업데이트 방법{Memory apparatus and method for updating firmware of the memory apparatus}
본 발명의 실시 예는 메모리 장치 및 상기 메모리 장치의 펌웨어 업데이트 방법에 관한 것으로, 보다 상세하게는 컨텍스트 정보의 선별적 초기화를 통해 펌웨어 업데이트 시간을 줄일 수 있는 장치 및 방법을 제공하는 것이다.
SSD(Solid State Disk)와 같이 비휘발성 메모리와 휘발성 메모리가 존재하는 메모리 장치에서 휘발성 메모리 상에 펌웨어가 로딩되는 경우, 상기 휘발성 메모리 상에 존재하는 상기 펌웨어가 상기 메모리 장치를 구동하기 위해서는 소정의 정보가 필요하게 된다. 상기 정보는 컨텍스트(context) 정보라 불릴 수 있다. 상기 컨텍스트 정보는 상기 비휘발성 메모리를 관리하기 위한 맵핑 정보 또는 휘발성 메모리와 비휘발성 메모리의 인터페이싱 속도 차이에 따라 필요한 캐싱 정보(또는 버퍼링 정보)일 수 있다.
종래에는 펌웨어 업데이트를 위해 이러한 컨텍스트 정보를 모두 초기화하여야 했다.
하지만, 본 발명에 의하면 상기 컨텍스트 정보 중 일부만 초기화를 하더라도 펌웨어 업데이트가 가능하다.
따라서 본 발명이 이루고자 하는 기술적인 과제는 메모리 장치의 펌웨어 업데이트 시에 기존 펌웨어의 버전과 새 펌웨어의 버전을 비교하여 펌웨어의 각 구성요소를 유지하는데 필요한 정보인 컨텍스트 정보의 초기화 즉, 저장 및 복원 작업을 최소화할 수 있는 메모리 장치 및 방법을 제공하는 것이다.
상기 기술적 과제를 해결하기 위한 메모리 장치의 펌웨어 업데이트 방법은 제1휘발성 메모리, 제2휘발성 메모리, 및 비휘발성 메모리를 포함하는 메모리 장치에 N(N은 1이상의 자연수)개의 구성요소를 갖는 기존 펌웨어(firmware)를 업데이트 방법에 있어서, 제1휘발성 메모리에 상기 기존 펌웨어가 로딩된 상태에서 제2휘발성 메모리에 새로운 펌웨어가 저장되는 단계, 상기 기존 펌웨어의 상기 N 개의 구성요소 중 상기 새로운 펌웨어에서 갱신된 구성요소가 확인되는 단계, 확인된 상기 갱신된 구성요소에 대응되는 컨텍스트 정보가 상기 비휘발성 메모리에 저장되는 단계, 상기 새로운 펌웨어가 상기 제2휘발성 메모리에 저장되는 단계, 및 상기 비휘발성 메모리에 저장된 상기 갱신된 구성요소에 대응되는 컨텍스트 정보에 기초하여 상기 컨텍스트 정보가 새로운 펌웨어에 상응하는 컨텍스트 정보로 갱신되는 단계를 포함한다.
상기 기존 펌웨어의 상기 N 개의 구성요소 중 상기 새로운 펌웨어에서 갱신 된 구성요소가 확인되는 단계는, 상기 N 개의 구성요소별 버전 정보와 상기 새로운 펌웨어에 포함된 상기 N 개의 구성요소에 대응되는 구성요소별 버전 정보가 비교되는 단계 및 비교결과 버전 정보가 다른 경우 상기 제1휘발성 메모리에 상기 새로운 펌웨어에서 갱신된 구성요소에 대응되는 갱신정보가 저장되는 단계를 포함할 수 있다.
상기 메모리 장치의 펌웨어 업데이트 방법은 상기 제2휘발성 메모리에 저장된 상기 새로운 펌웨어가 소정의 리스타트(restart) 정보를 상기 제2휘발성 메모리에 저장하는 단계를 더 포함하며, 상기 제2휘발성 메모리에 상기 소정의 리스타트 정보가 저장된 경우 상기 갱신된 구성요소에 대응되는 컨텍스트 정보가 갱신되며, 상기 제2휘발성 메모리에 상기 소정의 리스타트 정보가 저장되지 않은 경우 상기 N 개의 구성요소에 대응되는 컨텍스트 정보 모두가 갱신되는 것을 특징으로 할 수 있다.
상기 새로운 펌웨어는 상기 제2휘발성 메모리에 상기 소정의 리스타트 정보가 저장되지 않은 경우, 상기 갱신정보를 상기 N 개의 구성요소 모두에 대응되도록 설정할 수 있다.
상기 기존 펌웨어 및 상기 새로운 펌웨어 중 적어도 하나는 각각의 구성요소에 대응되는 컨텍스트 정보가 저장된 위치에 대한 정보를 포함하는 컨텍스트 테이블을 참조하여, 상기 각각의 구성요소에 대응되는 컨텍스트 정보에 접근할 수 있다.
상기 컨텍스트 정보는 캐시 정보 또는 상기 비휘발성 메모리를 위한 맵핑정 보 중 적어도 하나를 포함할 수 있다.
상기 제1휘발성 메모리, 상기 제2휘발성 메모리, 및 상기 비휘발성 메모리는 각각 SRAM(Static Random Access Memory), DRAM(Dynamic Random Access Memory), 및 낸드 플래시(NAND Flash)일 수 있으며, 상기 메모리 장치는 SSD(Solid State Disk) 일 수 있다.
상기 기술적 과제를 달성하기 위한 메모리 장치는 적어도 하나의 휘발성 메모리 및 비휘발성 메모리를 포함하며, 상기 메모리 장치는 상기 적어도 하나의 휘발성 메모리에 위치하는 펌웨어를 업데이트 하기 위해 상기 펌웨어에 대응되는 컨텍스트 정보의 일부만을 갱신할 수 있다.
본 발명에 따른 메모리 장치 및 상기 메모리 장치의 펌웨어 업데이트 방법에 의하면 컨텍스트 정보를 저장하고 복원하는 작업을 최소화할 수 있으므로, 펌웨어 업데이트 시간을 줄일 수 있는 효과가 있다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다.
또한, 본 명세서에 있어서는 어느 하나의 구성요소가 다른 구성요소로 데이터를 '전송'하는 경우에는 상기 구성요소는 상기 다른 구성요소로 직접 상기 데이터를 전송할 수도 있고, 적어도 하나의 또 다른 구성요소를 통하여 상기 데이터를 상기 다른 구성요소로 전송할 수도 있는 것을 의미한다.
반대로 어느 하나의 구성요소가 다른 구성요소로 데이터를 '직접 전송'하는 경우에는 상기 구성요소에서 다른 구성요소를 통하지 않고 상기 다른 구성요소로 상기 데이터가 전송되는 것을 의미한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 1a 내지 도 1c는 종래의 펌웨어 업데이트 방법을 설명하기 위한 도면들이다.
도 1a 내지 도 1c는 종래의 NAND 플래시를 저장 매체로 하는 SSD(Solid State Disk)의 펌웨어 업데이트 방법을 나타낸다. 도 1a 내지 도 1c를 참조하면, 기존의 펌웨어(Old FW)는 SRAM(Static random access memory)과 같은 고속의 메모리에 로딩(loading)되어 동작한다. 상기 SSD에는 DRAM(dynamic random access memory)가 포함될 수 있으며, 상기 SRAM 및 DRAM의 일부는 컨텍스트 정보를 저장하기 위해 사용될 수 있다.
상기 컨텍스트 정보는 상기 낸드 플래시(NAND Flash)의 정보를 관리하기 위한 맵핑 정보 및/또는 캐시정보를 포함할 수 있다. 맵핑 정보라 함은, 낸드 플래시의 특성상 논리적 주소공간과 실제로 정보가 저장되는 물리공간 간의 맵핑(mapping)에 대한 정보가 필요한데, 이러한 맵핑에 대한 정보를 의미할 수 있다. 최근의 SSD는 수 십에서 수 백 기가바이트에 달하는 논리공간을 제공하므로 이러한 맵핑 정보 자체도 수십 메가바이트에 이른다. 이러한 맵핑 정보는 디바이스(device)가 동작 중에는 SRAM 및/또는 DRAM과 같은 고속의 메모리 상에 유지되지만 디바이스의 파워오프(power-off)시에는 그 자체를 낸드 플래시에 저장하고 파워온(poewer on)시에 복원하여야 한다.
상기 캐시정보라 함은 호스트의 낸드 플래시에 대한 접근 속도와 SRAM 또는 DRAM에 대한 접근속도의 현저한 차이로 인한 캐싱(또는 버퍼링)기법을 이용하기 위한 정보를 의미할 수 있다. 이러한 캐시정보도 궁극적으로는 낸드 플래시에 저장되어야 하는데 이러한 동작을 플러시(flush)라고도 한다.
상가 기존 펌웨어(Old FW)는 호스트로부터 전송받은 새 펌웨어(New FW)를 DRAM 등의 메모리에 저장한 상태에서 업데이트를 시작한다. 업데이트를 시작하면 SSD 디바이스는 정상적인 동작을 할 수 없다. 따라서 서버 환경과 같이 디바이스에 대한 접근성이 중요한 응용에서는 얼마나 빨리 업데이트 과정을 완료하고 정상 동작을 재개할 수 있는가가 SSD 디바이스의 중요한 특성이 된다.
펌웨어는 낸드 플래시의 특정영역에 저장되었다가 파워 온 시에 SRAM으로 로딩될 수 있다. 따라서, 펌웨어의 업데이를 위해서는 도 1a에 도시된 바와 같이 메모리에 저장된 새로운 펌웨어가 낸드 플래시로 저장되어 낸드 플래시에 저장된 펌웨어 이미지를 기존 펌웨어에서 새로운 펌웨어로 교체하는 것이다. 도 1b는 낸드 플래시에 저장된 펌웨어 이미지가 교체된 상태를 나타낸다.
낸드 플래시에 새로운 펌웨어를 저장한 후에는 새 펌웨어가 SSD 디바이스를 구동하도록 해야 하는데 가장 일반적인 방법은 하드웨어 리셋을 가하여 하드웨어 부트 로직(hardware boot logic)이 새로운 펌웨어를 SRAM에 로드하고 시스템 초기화 코드를 수행하도록 하는 것이다. 이러한 과정은 도 1c에 도시된다.
이러한 방법은 매우 단순하게 구현할 수 있지만 도 1c에 도시된 바와 같이 SRAM 및 DRAM과 같은 휘발성 메모리에 유지되고 있던 컨텍스트 정보를 잃게 된다. 따라서 반드시 컨텍스트 정보를 낸드 플래시에 저장한 후, 시스템 초기화 과정에서 상기 컨텍스트 정보를 낸드 플래시에서 다시 읽고 해석하여 복원 및 갱신하여 다시 휘발성 메모리에 로드하여야 한다.
만일 휘발성 메모리에 유지되고 있던 컨텍스트 정보를 보존하고자 기존의 펌웨어가 직접 새로운 펌웨어를 SRAM에 복사하고 시스템 초기화 코드를 수행하는 경우에도 새로운 펌웨어가 기존의 정보들을 사용할 수 있는지 알 수 있는 방법이 없어 결국 하드웨어 리셋을 이용하는 경우와 같이 모든 컨텍스트 정보에 대해 초기화 과정 즉, 낸드 플래시에 저장 후 읽고, 해석 후 새로운 펌웨어에 상응하도록 갱신하여 휘발성 메모리에 로드할 수 밖에 없다.
따라서 본 발명의 실시 예에 따른 메모리 장치의 펌웨어 업데이트 방법은 모든 컨텍스트 정보가 초기화되는 것이 아니라, 초기화가 필요한 컨텍스트 정보만 초기화 과정을 수행하도록 한다.
이를 위해 본 발명의 실시 예에 따른 메모리 장치는 펌웨어의 버전(version) 정보를 이용할 수 있다.
도 2는 본 발명의 실시 예에 따른 메모리 장치의 펌웨어 업데이트 방법을 구현하기 위해 펌웨어의 구성요소별 버전 정보를 이용하는 것을 설명하기 위한 도면 이다.
도 2를 참조하면, 기존 펌웨어 및 새로운 펌웨어는 복수 개의 구성요소(예컨대, 11, 12, 13, 또는 21, 22, 23)를 가질 수 있다. 상기 구성요소 각각은 별개의 기능을 수행하는 적어도 하나의 파일 및/또는 모듈일 수 있다. 또한, 각각의 구성요소는 별도의 버전 정보를 포함할 수 있다. 상기 버전 정보는 각각의 펌웨어에 포함된 버전 테이블에 포함될 수 있다.
예컨대, 기존 펌웨어 및 새로운 펌웨어가 각각 3개의 구성요소로 구성될 수 있다. 상기 기존 펌웨어는 구성요소1(11), 구성요소2(12), 및 구성요소3(13)으로 구성되고, 도 2에 도시된 바와 같이 구성요소1(11)은 버전3.0 , 구성요소2(12)는 버전 2.0, 구성요소3(13)은 버전 7.3일 수 있다.
또한, 새로운 펌웨어는 구성요소1(21), 구성요소2(22), 및 구성요소3(23)로 구성되고, 도 2에 도시된 바와 같이 구성요소1(21)은 버전3.0 , 구성요소2(22)는 버전 3.0, 구성요소3(23)은 버전 7.3일 수 있다.
즉, 기존 펌웨어에서 새로운 펌웨어는 구성요소 2만 업데이트 되었을 수 있다. 따라서, 본 발명의 실시 예에 따른 메모리 장치의 펌웨어 업데이트 방법은 구성요소 2에 대응되는 컨텍스트 정보만을 초기화 과정을 수행하고, 구성요소1 및 3에 대응되는 컨텍스트 정보는 초기화 과정 없이 그대로 새로운 펌웨어에서도 사용하도록 할 수 있다. 따라서, 필요한 컨텍스트 정보만을 선별적으로 초기화하므로 업데이트 시간을 줄일 수 있는 효과가 있다.
도 3a 내지 3d는 본 발명의 실시 예에 따른 메모리 장치의 펌웨어 업데이트 방법의 개념을 설명하기 위한 도면이다.
도 3a 내지 3d를 참조하면, 본 발명의 실시 예에 따른 메모리 장치(100)는 적어도 하나의 휘발성 메모리(120, 130) 및 비휘발성 메모리(110)를 포함한다. 상기 적어도 하나의 휘발성 메모리(120, 130)는 SRAM 및 DRAM을 포함할 수 있다. 또한, 상기 비휘발성 메모리(110)는 낸드 플래시로 구현될 수 있다. 이하 본 명세서에서는 설명의 편의를 위해 상기 메모리 장치(100)는 SSD(Solid State Disk)인 경우를 일 예로 설명하지만, 적어도 하나의 휘발성 메모리를 포함하고, 비휘발성 메모리를 저장매체로 사용하는 모든 메모리 장치에 본 발명의 실시 예에 따른 메모리 장치의 펌웨어 업데이트 방법이 용이하게 적용될 수 있음을 본 발명의 평균적 전문가는 용이하게 추론할 수 있을 것이다.
먼저, 제1휘발성 메모리(예컨대, SRAM, 120)에는 기존 펌웨어(10)가 로딩되어 구동되고 있고, 비휘발성 메모리(예컨대, 낸드 플래시, 110)에는 기존 펌웨어(10)의 이미지가 저장되어 있을 수 있다.
그러면, 상기 제2휘발성 메모리(예컨대, DRAM, 130)는 호스트(미도시)로부터 새로운 펌웨어(20)를 수신할 수 있다. 상기 기존 펌웨어(10) 및 상기 새로운 펌웨어(20) 각각은 3개의 구성요소를 포함할 수 있다. 그러면, 도 3a에 도시된 바와 같이 기존 펌웨어(10)에 의해 사용되던 컨텍스트 정보(11-1, 12-1, 13-1, 11-2, 12-2, 및 13-2)는 상기 제1휘발성 메모리(120) 및/또는 상기 제2휘발성 메모리(130)에 저장되어 있을 수 있다 .
그러면, 상기 기존 펌웨어(10)는 새로운 펌웨어(20)에서 갱신된 구성요소가 무엇인지를 확인할 수 있다. 이를 위해 상기 기존 펌웨어(10)는 자신의 구성요소별 버전 정보와 새로운 펌웨어(20)의 구성요소별 버전 정보를 비교할 수 있다. 상기 기존 펌웨어(10)는 구성요소별 버전 정보를 비교한 후, 갱신된 구성요소를 나타내거나 갱신되지 않은 구성요소에 대한 정보를 나타내는 갱신 정보를 도 4에도 도시된 바와 같이 상기 제1휘발성 메모리(120)의 소정의 위치에 저장할 수 있다.
만약, 구성요소 2가 갱신된 구성요소라면, 갱신된 구성요소 2에 대응되는 컨텍스트 정보(12-1 및 12-2)만 초기화 과정을 수행하고, 나머지 컨텍스트 정보(11-1, 12-1, 13-1, 11-2, 12-2, 및 13-2)는 그대로 사용하도록 한다.
이를 위해 상기 기존 펌웨어(10)는 구성요소 2에 대응되는 컨텍스트 정보(12-1 및 12-2)를 비휘발성 메모리(110)에 저장할 수 있다. 그러면 도 3b와 같은 상태가 될 수 있다. 그 후 도 3c에 도시된 바와 같이 새로운 펌웨어(20)는 제1휘발성 메모리(120)로 복사될 수 있다. 새로운 펌웨어(20)는 하드웨어 리셋을 사용하지 않고 시스템 리스타트(restart)를 수행하여 시스템 초기화 코드가 실행되도록 한다. 그러면, 시스템 초기화 코드는 상기 비휘발성 메모리(110)에 저장된 상기 갱신된 구성요소에 대응되는 컨텍스트 정보(12-1 및 12-2)의 초기화 과정이 수행되도록 할 수 있다. 이를 위해 상기 시스테 초기화 코드는 상기 컨텍스트 정보(12-1 및 12-2)를 읽고 해석하여 상기 새로운 펌웨어(20)에 상응하도록 갱신할 수 있다. 초기화 과정이 수행된 후의 메모리 장치(100)는 도 3d에 도시된 바와 같을 수 있다.
도 4는 본 발명의 실시 예에 따른 메모리 장치의 펌웨어 업데이트 방법에서 시스템 초기화 과정을 수행할 때 제1휘발성 메모리의 구조를 나타낸다.
도 4를 참조하면, 시스템 초기화 코드는 시스템이 리스타트 되는 것이 본 발명의 실시 예에 따른 메모리 장치의 펌웨어 업데이트 방법에 따라 펌웨어가 업데이트 되기 위한 리스타트 인지 일반적인 파워오프 후 파워온이 되는 상태인지를 구별할 수 있어야 한다. 이를 위해 본 발명의 일 실시 예에 의하면, 기존 펌웨어(10)는 상기 제1휘발성 메모리(120)의 특정 위치에 소정의 정보(1)를 기록하여 본 발명의 실시 예에 따른 리스타트인지 일반적인 파워온 인지를 구별할 수 있도록 할 수 있다. 상기 소정의 정보는 우연히 재현될 수 없는 소정의 정보의 나열(signature sequence)을 기록하여 새로운 펌웨어(20)가 시스템 초기화 코드를 수행하면서 본 발명의 실시 예에 따른 리스타트를 해야하는 상태임을 알게 해줄 수 있다.
한편, 새로운 펌웨어(20)의 구성요소가 기존 펌웨어(10)가 생성한 컨텍스트 정보를 참조하기 위해서는 펌웨어가 업데이트될 때마다 이러한 컨텍스트 정보의 구조가 변경되지 않는 것이 바람직하다. 따라서 컨텍스트 정보의 구조적 변경은 해당 구성요소의 버전 정보에 의해 관리될 수 있다.
상기 구성요소 갱신정보(2)는 전술한 바와 같이 기존 펌웨어(10)에 의해 생성된 정보로써, 펌웨어 업데이트에 의해 갱신된 구성요소를 나타내거나 갱신되지 않은 구성요소에 대한 정보를 포함할 수 있다.
또한, 새로운 펌웨어(20)가 기존 펌웨어(10)가 생성해둔 컨텍스트 정보의 위치를 알 수 있는 방법이 필요하다. 단순한 방법은 링크 도구를 활용하여 각 구성요소의 컨텍스트 정보가 항상 메모리 상의 정해진 위치에 오도록 관리하는 것이다. 그러나 이러한 방법은 메모리 영역의 사용을 불편하게 하고, 컨텍스트 정보의 변경 에 제약을 가져올 수 있다. 따라서 본 발명의 실시 예에 의하면, 각 컨텍스트 정보의 위치를 가리키는 소정의 컨텍스트 테이블(3)만을 특정위치에 두고 새로운 펌웨어(20)는 상기 컨텍스트 테이블(3)을 참조하여 컨텍스트 정보에 접근할 수 있다.
또한, 도 4에 도시된 바와 같이 상기 리스타트 정보(1), 갱신정보(2) 및 컨텍스트 테이블(3)은 고정된 위치에 저장될 수 있다.
도 5는 본 발명의 실시 예에 따른 메모리 장치의 펌웨어 업데이트 방법을 설명하기 위한 플로우 챠트를 나타낸다.
도 4 및 5를 참조하면, 새로운 펌웨어(20)에 포함된 시스템 초기화 코드는 리스타트 정보(1)를 읽는다(S10). 이를 통해 일반적인 파워 온인지 본 발명의 실시 예에 따른 리스타트 인지를 판단할 수 있다(S20). 만약 일반적인 파워 온에 의한 시스템 초기화 코드의 수행인 경우(S20)는 모든 구성요소에 대응되는 컨텍스트 정보가 초기화 과정을 거쳐 갱신되어야 한다. 따라서, 상기 갱신정보(2)를 모든 구성요소에 대응되도록 설정할 수 있다(S40). 만약 본 발명의 실시 예에 따른 리스타트인 경우(S20), 상기 시스템 초기화 코드는 상기 갱신정보(2)를 읽는다. 즉, 갱신된 구성요소들에 대한 정보를 읽을 수 있다.
그 후 첫 번째 구성요소부터 차례대로(S50, S90), 상기 갱신정보(2)를 참조하여 각각의 구성요소에 대응되는 컨텍스트 정보가 초기화 과정을 통해 갱신되어야 하는지를 판단하고(S60), 갱신되어야 하는 경우 초기화 과정을 통해 컨텍스트 정보를 갱신할 수 있다. 갱신된 컨텍스트 정보의 위치에 대한 정보는 컨텍스트 테이블에 기록될 수 있다. 마지막 구성요소까지 이 과정을 반복하면(S80) 펌웨어 업데이 트가 종료되게 된다.
본 발명의 실시 예에 따른 메모리 장치의 펌웨어 업데이트 방법은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 하드 디스크, 플로피 디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어, 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1a 내지 도 1c는 종래의 펌웨어 업데이트 방법을 설명하기 위한 도면들이다.
도 2는 본 발명의 실시 예에 따른 메모리 장치의 펌웨어 업데이트 방법을 구현하기 위해 펌웨어의 구성요소별 버전 정보를 이용하는 것을 설명하기 위한 도면이다.
도 3a 내지 3d는 본 발명의 실시 예에 따른 메모리 장치의 펌웨어 업데이트 방법의 개념을 설명하기 위한 도면이다.
도 4는 본 발명의 실시 예에 따른 메모리 장치의 펌웨어 업데이트 방법에서 시스템 초기화 과정을 수행할 때 제1휘발성 메모리의 구조를 나타낸다.
도 5는 본 발명의 실시 예에 따른 메모리 장치의 펌웨어 업데이트 방법을 설명하기 위한 플로우 챠트를 나타낸다.

Claims (9)

  1. 제1휘발성 메모리, 제2휘발성 메모리, 및 비휘발성 메모리를 포함하는 메모리 장치에 N(N은 1이상의 자연수)개의 구성요소를 갖는 기존 펌웨어(firmware)를 업데이트 방법에 있어서,
    제1휘발성 메모리에 상기 기존 펌웨어가 로딩된 상태에서 제2휘발성 메모리에 새로운 펌웨어가 저장되는 단계;
    상기 기존 펌웨어의 상기 N 개의 구성요소 중 상기 새로운 펌웨어에서 갱신된 구성요소가 확인되는 단계;
    확인된 상기 갱신된 구성요소에 대응되는 컨텍스트 정보가 상기 비휘발성 메모리에 저장되는 단계;
    상기 새로운 펌웨어가 상기 제2휘발성 메모리에 저장되는 단계; 및
    상기 비휘발성 메모리에 저장된 상기 갱신된 구성요소에 대응되는 컨텍스트 정보에 기초하여 상기 컨텍스트 정보가 새로운 펌웨어에 상응하는 컨텍스트 정보로 갱신되는 단계를 포함하는 메모리 장치의 펌웨어 업데이트 방법.
  2. 제 1항에 있어서, 상기 기존 펌웨어의 상기 N 개의 구성요소 중 상기 새로운 펌웨어에서 갱신된 구성요소가 확인되는 단계는,
    상기 N 개의 구성요소별 버전 정보와 상기 새로운 펌웨어에 포함된 상기 N 개의 구성요소에 대응되는 구성요소별 버전 정보가 비교되는 단계; 및
    비교결과 버전 정보가 다른 경우 상기 제1휘발성 메모리에 상기 새로운 펌웨어에서 갱신된 구성요소에 대응되는 갱신정보가 저장되는 단계를 포함하는 메모리 장치의 펌웨어 업데이트 방법.
  3. 제 2항에 있어서, 상기 메모리 장치의 펌웨어 업데이트 방법은,
    상기 제2휘발성 메모리에 저장된 상기 새로운 펌웨어가 소정의 리스타트(restart) 정보를 상기 제2휘발성 메모리에 저장하는 단계를 더 포함하며,
    상기 제2휘발성 메모리에 상기 소정의 리스타트 정보가 저장된 경우 상기 갱신된 구성요소에 대응되는 컨텍스트 정보가 갱신되며, 상기 제2휘발성 메모리에 상기 소정의 리스타트 정보가 저장되지 않은 경우 상기 N 개의 구성요소에 대응되는 컨텍스트 정보 모두가 갱신되는 것을 특징으로 하는 메모리 장치의 펌웨어 업데이트 방법.
  4. 제 3항에 있어서, 상기 새로운 펌웨어는,
    상기 제2휘발성 메모리에 상기 소정의 리스타트 정보가 저장되지 않은 경우, 상기 갱신정보를 상기 N 개의 구성요소 모두에 대응되도록 설정하는 메모리 장치의 펌웨어 업데이트 방법.
  5. 제 1항에 있어서, 상기 기존 펌웨어 및 상기 새로운 펌웨어 중 적어도 하나는,
    각각의 구성요소에 대응되는 컨텍스트 정보가 저장된 위치에 대한 정보를 포함하는 컨텍스트 테이블을 참조하여, 상기 각각의 구성요소에 대응되는 컨텍스트 정보에 접근하는 메모리 장치의 펌웨어 업데이트 방법.
  6. 제 1항에 있어서, 상기 컨텍스트 정보는,
    캐시 정보 또는 상기 비휘발성 메모리를 위한 맵핑정보 중 적어도 하나를 포함하는 메모리 장치의 펌웨어 업데이트 방법.
  7. 제 1항에 있어서, 상기 제1휘발성 메모리, 상기 제2휘발성 메모리, 및 상기 비휘발성 메모리는,
    각각 SRAM(Static Random Access Memory), DRAM(Dynamic Random Access Memory), 및 낸드 플래시(NAND Flash)인 것을 특징으로 하는 메모리 장치의 펌웨어 업데이트 방법.
  8. 제 1항에 있어서, 상기 메모리 장치는,
    SSD(Solid State Disk) 인 것을 특징으로 하는 메모리 장치의 펌웨어 업데이트 방법.
  9. 메모리 장치에 있어서,
    상기 메모리 장치는 적어도 하나의 휘발성 메모리; 및
    비휘발성 메모리를 포함하며,
    상기 메모리 장치는 상기 적어도 하나의 휘발성 메모리에 위치하는 펌웨어를 업데이트 하기 위해 상기 펌웨어에 대응되는 컨텍스트 정보의 일부만을 갱신하여 상기 펌웨어의 업데이트를 수행하는 것을 특징으로 하는 메모리 장치.
KR1020090029092A 2009-04-03 2009-04-03 메모리 장치 및 메모리 장치의 펌웨어 업데이트 방법 KR101605875B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090029092A KR101605875B1 (ko) 2009-04-03 2009-04-03 메모리 장치 및 메모리 장치의 펌웨어 업데이트 방법
US12/753,222 US8694984B2 (en) 2009-04-03 2010-04-02 Memory apparatus and method of updating firmware of the memory apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090029092A KR101605875B1 (ko) 2009-04-03 2009-04-03 메모리 장치 및 메모리 장치의 펌웨어 업데이트 방법

Publications (2)

Publication Number Publication Date
KR20100110652A true KR20100110652A (ko) 2010-10-13
KR101605875B1 KR101605875B1 (ko) 2016-03-24

Family

ID=42827217

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090029092A KR101605875B1 (ko) 2009-04-03 2009-04-03 메모리 장치 및 메모리 장치의 펌웨어 업데이트 방법

Country Status (2)

Country Link
US (1) US8694984B2 (ko)
KR (1) KR101605875B1 (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130104283A (ko) 2012-03-13 2013-09-25 삼성테크윈 주식회사 펌웨어 업데이트 방법
KR101430360B1 (ko) * 2013-05-10 2014-08-13 홍익대학교 산학협력단 프로세스의 버전 생성, 버전 복원 방법 및 이를 위한 단말
KR101445124B1 (ko) * 2014-06-30 2014-10-01 홍익대학교 산학협력단 프로세스의 버전 복원 방법 및 이를 위한 단말
KR20160050707A (ko) * 2014-10-30 2016-05-11 삼성전자주식회사 펌웨어 업데이트 시간을 줄일 수 있는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템
US11079948B2 (en) 2019-01-18 2021-08-03 SK Hynix Inc. Memory system for updating firmware when SPO occurs and operating method thereof
KR20220019940A (ko) * 2020-08-11 2022-02-18 경북대학교 산학협력단 펌웨어 업데이트 장치 및 업데이트 방법

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8935458B2 (en) * 2011-01-05 2015-01-13 Intel Corporation Drive assisted system checkpointing via system restore points
US9223564B2 (en) * 2012-01-26 2015-12-29 Avago Technologies General Ip (Singapore) Pte. Ltd. Update systems responsive to ongoing processing at a storage system
US9189225B2 (en) 2012-10-16 2015-11-17 Imprivata, Inc. Secure, non-disruptive firmware updating
KR102107723B1 (ko) 2012-12-03 2020-05-07 삼성전자주식회사 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법
BR112015016953A2 (pt) * 2013-01-15 2017-07-11 Hewlett Packard Development Co atualização de firmware dinâmico
US8918778B2 (en) * 2013-04-17 2014-12-23 American Megatrends, Inc. Method of fail safe flashing management device and application of the same
CN104679622A (zh) * 2013-11-29 2015-06-03 英业达科技有限公司 基本输入输出系统维护方法
US9459857B2 (en) 2015-01-21 2016-10-04 HGST Netherlands B.V. Managing wear of system areas of storage devices
US20170249155A1 (en) * 2016-02-26 2017-08-31 Sandisk Technologies Inc. Memory System and Method for Fast Firmware Download
US10990380B2 (en) * 2017-09-21 2021-04-27 Western Digital Technologies, Inc. Power safe offline download
CN109491740B (zh) * 2018-10-30 2021-09-10 北京云测信息技术有限公司 一种基于上下文背景信息的自动多版本漏斗页面选优方法
KR20200077287A (ko) 2018-12-20 2020-06-30 에스케이하이닉스 주식회사 메모리 장치, 이를 포함하는 메모리 시스템 및 그것의 동작 방법
WO2020199027A1 (zh) * 2019-03-29 2020-10-08 深圳市大疆创新科技有限公司 启动系统的方法、电子设备、机器可读存储介质
CN111596939B (zh) * 2020-05-18 2023-09-15 杭州海兴电力科技股份有限公司 一种电能表的升级方法、装置以及集中器

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3046310B2 (ja) * 1988-09-13 2000-05-29 株式会社東芝 メモリシステム
JPH04345332A (ja) * 1991-05-23 1992-12-01 Sony Corp 携帯電話装置
US5623604A (en) * 1992-11-18 1997-04-22 Canon Information Systems, Inc. Method and apparatus for remotely altering programmable firmware stored in an interactive network board coupled to a network peripheral
US5835933A (en) * 1993-02-19 1998-11-10 Intel Corporation Method and apparatus for updating flash memory resident firmware through a standard disk drive interface
US5701492A (en) * 1996-03-29 1997-12-23 Canon Kabushiki Kaisha Fail-safe flashing of EPROM
US5960445A (en) * 1996-04-24 1999-09-28 Sony Corporation Information processor, method of updating a program and information processing system
US6055632A (en) * 1997-09-25 2000-04-25 Allen-Bradley Company, Llc Method and apparatus for transferring firmware to a non-volatile memory of a programmable controller system
US6360362B1 (en) * 1998-02-20 2002-03-19 Intel Corporation Automatic update of camera firmware
US6487623B1 (en) * 1999-04-30 2002-11-26 Compaq Information Technologies Group, L.P. Replacement, upgrade and/or addition of hot-pluggable components in a computer system
KR100322006B1 (ko) * 1999-06-09 2002-02-06 윤종용 펌웨어 보드의 프로그램을 변경하기 위한 장치 및 방법
US7213152B1 (en) * 2000-02-14 2007-05-01 Intel Corporation Modular bios update mechanism
US7409685B2 (en) * 2002-04-12 2008-08-05 Hewlett-Packard Development Company, L.P. Initialization and update of software and/or firmware in electronic devices
US6834384B2 (en) * 2001-03-14 2004-12-21 General Instrument Corporation Methods and apparatus for upgrading firmware in an embedded system
US6988182B2 (en) * 2002-02-13 2006-01-17 Power Measurement Ltd. Method for upgrading firmware in an electronic device
US7007159B2 (en) * 2002-05-10 2006-02-28 Intel Corporation System and method for loading and integrating a firmware extension onto executable base system firmware during initialization
US7555750B1 (en) * 2002-08-22 2009-06-30 Hewlett-Packard Development Company, L.P. Update package generator employing partial predictive mapping techniques for generating update packages for mobile handsets
US7082509B2 (en) * 2003-02-06 2006-07-25 Intel Corporation Method and system for allocating memory during system boot to reduce operating system memory resource consumption at run-time
US7409538B2 (en) * 2003-12-18 2008-08-05 International Business Machines Corporation Update in-use flash memory without external interfaces
JP4636224B2 (ja) * 2003-12-26 2011-02-23 富士フイルム株式会社 電子内視鏡装置およびプログラム転送方法
US7594135B2 (en) 2003-12-31 2009-09-22 Sandisk Corporation Flash memory system startup operation
US20050216721A1 (en) * 2004-03-24 2005-09-29 Zimmer Vincent J Methods and apparatus for initializing a memory
US7200713B2 (en) * 2004-03-29 2007-04-03 Intel Corporation Method of implementing off-chip cache memory in dual-use SRAM memory for network processors
US7657886B1 (en) * 2004-06-03 2010-02-02 Hewlett-Packard Development Company, L.P. Mobile device with a MMU for faster firmware updates in a wireless network
US7958502B2 (en) * 2005-08-05 2011-06-07 Hewlett-Packard Development Company, L.P. Efficient generator of update packages for mobile devices that uses non-ELF preprocessing
JP4868216B2 (ja) 2006-01-19 2012-02-01 日本電気株式会社 ファームウェア更新回路およびファームウェア更新方法
US7984432B2 (en) * 2006-05-30 2011-07-19 Infineon Technologies Ag Method for patching a read-only memory and a data processing system comprising a means of patching the read-only memory based on patch contexts
US7797696B1 (en) * 2006-06-30 2010-09-14 American Megatrends, Inc. Dynamically updating a computer system and firmware image utilizing an option read only memory (OPROM) data structure
JP2008046791A (ja) 2006-08-14 2008-02-28 Fujitsu Ltd 記憶装置、ファームウェア更新方法、及び制御装置
JP2008077474A (ja) 2006-09-22 2008-04-03 Kyocera Mita Corp ファームウェア更新方法、電子機器、ファームウェア更新プログラム
US8286156B2 (en) * 2006-11-07 2012-10-09 Sandisk Technologies Inc. Methods and apparatus for performing resilient firmware upgrades to a functioning memory
US8185886B2 (en) * 2007-06-26 2012-05-22 Intel Corporation Method and apparatus to enable dynamically activated firmware updates
JP5038163B2 (ja) * 2008-01-07 2012-10-03 キヤノン株式会社 配信装置、システム、情報処理方法及びプログラム
US8332572B2 (en) * 2008-02-05 2012-12-11 Spansion Llc Wear leveling mechanism using a DRAM buffer
TWI421765B (zh) * 2008-04-01 2014-01-01 Mstar Semiconductor Inc 可自動更新韌體之顯示控制裝置及其更新方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130104283A (ko) 2012-03-13 2013-09-25 삼성테크윈 주식회사 펌웨어 업데이트 방법
KR101430360B1 (ko) * 2013-05-10 2014-08-13 홍익대학교 산학협력단 프로세스의 버전 생성, 버전 복원 방법 및 이를 위한 단말
KR101445124B1 (ko) * 2014-06-30 2014-10-01 홍익대학교 산학협력단 프로세스의 버전 복원 방법 및 이를 위한 단말
KR20160050707A (ko) * 2014-10-30 2016-05-11 삼성전자주식회사 펌웨어 업데이트 시간을 줄일 수 있는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템
US10866797B2 (en) 2014-10-30 2020-12-15 Samsung Electronics Co., Ltd. Data storage device and method for reducing firmware update time and data processing system including the device
US11079948B2 (en) 2019-01-18 2021-08-03 SK Hynix Inc. Memory system for updating firmware when SPO occurs and operating method thereof
US11599282B2 (en) 2019-01-18 2023-03-07 SK Hynix Inc. Memory system for updating firmware when SPO occurs and operating method thereof
US11966603B2 (en) 2019-01-18 2024-04-23 SK Hynix Inc. Memory system for updating firmware when SPO occurs and operating method thereof
KR20220019940A (ko) * 2020-08-11 2022-02-18 경북대학교 산학협력단 펌웨어 업데이트 장치 및 업데이트 방법

Also Published As

Publication number Publication date
US20100257519A1 (en) 2010-10-07
KR101605875B1 (ko) 2016-03-24
US8694984B2 (en) 2014-04-08

Similar Documents

Publication Publication Date Title
KR20100110652A (ko) 메모리 장치 및 메모리 장치의 펌웨어 업데이트 방법
US8341386B2 (en) Method for updating basic input/output system and method for repairing thereof
KR101288408B1 (ko) 플래시 메모리 시스템의 고속 웨이크-업을 용이하게 하는 방법과 시스템
US8041991B2 (en) System and method for recovering solid state drive data
TWI490694B (zh) 判定資料可得性之方法及系統,以及記憶體介面
US20150331624A1 (en) Host-controlled flash translation layer snapshot
JP6013626B2 (ja) 不揮発性メモリ書込み機構
US20220269572A1 (en) Storage device and method for operating storage device
US20150052393A1 (en) Fast data back-up and restore between volatile and flash memory
US20100205391A1 (en) Memory system and managing method therefor
JP2014137711A (ja) ストレージ装置、バックアッププログラム、およびバックアップ方法
US9983826B2 (en) Data storage device deferred secure delete
CN112631950B (zh) 一种l2p表的保存方法、系统、设备以及介质
KR20140147017A (ko) 라이트 백 캐싱 환경에서 예상하지 못한 셧다운으로부터 복구하기 위한 시스템 및 방법
US7577803B2 (en) Near instantaneous backup and restore of disc partitions
US8527733B2 (en) Memory system
KR102215748B1 (ko) 저장 장치를 사전 조정하는 방법 및 시스템
US8631166B2 (en) Storage devices with bi-directional communication techniques and method of forming bi-directional communication layer between them
KR100954603B1 (ko) 파일 시스템의 로그 파일 및 상기 파일 시스템의 오류 복구방법
JP2006099802A (ja) 記憶制御装置およびキャッシュメモリの制御方法
KR102123701B1 (ko) 네트워크 부트 시스템
CN111949212B (zh) 基于自定义开放通道ssd的文件系统及文件管理方法
CN109002265B (zh) 一种数据处理的方法以及相关装置
JP2013174976A (ja) メモリシステムおよび制御プログラムの更新方法
KR101618999B1 (ko) 네트워크 부트 시스템

Legal Events

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

Payment date: 20190228

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20200228

Year of fee payment: 5