KR20100110652A - 메모리 장치 및 메모리 장치의 펌웨어 업데이트 방법 - Google Patents
메모리 장치 및 메모리 장치의 펌웨어 업데이트 방법 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
-
- 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/451—Execution arrangements for user interfaces
- G06F9/453—Help systems
-
- 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/451—Execution arrangements for user interfaces
- G06F9/454—Multi-language systems; Localisation; Internationalisation
Abstract
메모리 장치의 펌웨어 업데이트 방법 및 메모리 장치가 개시된다. 상기 기술적 과제를 달성하기 위한 메모리 장치는 적어도 하나의 휘발성 메모리 및 비휘발성 메모리를 포함하며, 상기 메모리 장치는 상기 적어도 하나의 휘발성 메모리에 위치하는 펌웨어를 업데이트 하기 위해 상기 펌웨어에 대응되는 컨텍스트 정보의 일부만을 갱신할 수 있다.
Description
본 발명의 실시 예는 메모리 장치 및 상기 메모리 장치의 펌웨어 업데이트 방법에 관한 것으로, 보다 상세하게는 컨텍스트 정보의 선별적 초기화를 통해 펌웨어 업데이트 시간을 줄일 수 있는 장치 및 방법을 제공하는 것이다.
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휘발성 메모리, 제2휘발성 메모리, 및 비휘발성 메모리를 포함하는 메모리 장치에 N(N은 1이상의 자연수)개의 구성요소를 갖는 기존 펌웨어(firmware)를 업데이트 방법에 있어서,제1휘발성 메모리에 상기 기존 펌웨어가 로딩된 상태에서 제2휘발성 메모리에 새로운 펌웨어가 저장되는 단계;상기 기존 펌웨어의 상기 N 개의 구성요소 중 상기 새로운 펌웨어에서 갱신된 구성요소가 확인되는 단계;확인된 상기 갱신된 구성요소에 대응되는 컨텍스트 정보가 상기 비휘발성 메모리에 저장되는 단계;상기 새로운 펌웨어가 상기 제2휘발성 메모리에 저장되는 단계; 및상기 비휘발성 메모리에 저장된 상기 갱신된 구성요소에 대응되는 컨텍스트 정보에 기초하여 상기 컨텍스트 정보가 새로운 펌웨어에 상응하는 컨텍스트 정보로 갱신되는 단계를 포함하는 메모리 장치의 펌웨어 업데이트 방법.
- 제 1항에 있어서, 상기 기존 펌웨어의 상기 N 개의 구성요소 중 상기 새로운 펌웨어에서 갱신된 구성요소가 확인되는 단계는,상기 N 개의 구성요소별 버전 정보와 상기 새로운 펌웨어에 포함된 상기 N 개의 구성요소에 대응되는 구성요소별 버전 정보가 비교되는 단계; 및비교결과 버전 정보가 다른 경우 상기 제1휘발성 메모리에 상기 새로운 펌웨어에서 갱신된 구성요소에 대응되는 갱신정보가 저장되는 단계를 포함하는 메모리 장치의 펌웨어 업데이트 방법.
- 제 2항에 있어서, 상기 메모리 장치의 펌웨어 업데이트 방법은,상기 제2휘발성 메모리에 저장된 상기 새로운 펌웨어가 소정의 리스타트(restart) 정보를 상기 제2휘발성 메모리에 저장하는 단계를 더 포함하며,상기 제2휘발성 메모리에 상기 소정의 리스타트 정보가 저장된 경우 상기 갱신된 구성요소에 대응되는 컨텍스트 정보가 갱신되며, 상기 제2휘발성 메모리에 상기 소정의 리스타트 정보가 저장되지 않은 경우 상기 N 개의 구성요소에 대응되는 컨텍스트 정보 모두가 갱신되는 것을 특징으로 하는 메모리 장치의 펌웨어 업데이트 방법.
- 제 3항에 있어서, 상기 새로운 펌웨어는,상기 제2휘발성 메모리에 상기 소정의 리스타트 정보가 저장되지 않은 경우, 상기 갱신정보를 상기 N 개의 구성요소 모두에 대응되도록 설정하는 메모리 장치의 펌웨어 업데이트 방법.
- 제 1항에 있어서, 상기 기존 펌웨어 및 상기 새로운 펌웨어 중 적어도 하나는,각각의 구성요소에 대응되는 컨텍스트 정보가 저장된 위치에 대한 정보를 포함하는 컨텍스트 테이블을 참조하여, 상기 각각의 구성요소에 대응되는 컨텍스트 정보에 접근하는 메모리 장치의 펌웨어 업데이트 방법.
- 제 1항에 있어서, 상기 컨텍스트 정보는,캐시 정보 또는 상기 비휘발성 메모리를 위한 맵핑정보 중 적어도 하나를 포함하는 메모리 장치의 펌웨어 업데이트 방법.
- 제 1항에 있어서, 상기 제1휘발성 메모리, 상기 제2휘발성 메모리, 및 상기 비휘발성 메모리는,각각 SRAM(Static Random Access Memory), DRAM(Dynamic Random Access Memory), 및 낸드 플래시(NAND Flash)인 것을 특징으로 하는 메모리 장치의 펌웨어 업데이트 방법.
- 제 1항에 있어서, 상기 메모리 장치는,SSD(Solid State Disk) 인 것을 특징으로 하는 메모리 장치의 펌웨어 업데이트 방법.
- 메모리 장치에 있어서,상기 메모리 장치는 적어도 하나의 휘발성 메모리; 및비휘발성 메모리를 포함하며,상기 메모리 장치는 상기 적어도 하나의 휘발성 메모리에 위치하는 펌웨어를 업데이트 하기 위해 상기 펌웨어에 대응되는 컨텍스트 정보의 일부만을 갱신하여 상기 펌웨어의 업데이트를 수행하는 것을 특징으로 하는 메모리 장치.
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)
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)
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)
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 | 可自動更新韌體之顯示控制裝置及其更新方法 |
-
2009
- 2009-04-03 KR KR1020090029092A patent/KR101605875B1/ko active IP Right Grant
-
2010
- 2010-04-02 US US12/753,222 patent/US8694984B2/en active Active
Cited By (9)
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 |